2021-12-12 17:15:24 +08:00

385 lines
11 KiB
JavaScript

// components/video-swiper/video-swiper.js
const app = getApp()
module.exports =
/******/
(function(modules) { // webpackBootstrap
/******/ // The module cache
/******/
var installedModules = {};
/******/
/******/ // The require function
/******/
function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/
if (installedModules[moduleId]) {
/******/
return installedModules[moduleId].exports;
/******/
}
/******/ // Create a new module (and put it into the cache)
/******/
var module = installedModules[moduleId] = {
/******/
i: moduleId,
/******/
l: false,
/******/
exports: {}
/******/
};
/******/
/******/ // Execute the module function
/******/
modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/
module.l = true;
/******/
/******/ // Return the exports of the module
/******/
return module.exports;
/******/
}
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/
__webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/
__webpack_require__.c = installedModules;
/******/
/******/ // define getter function for harmony exports
/******/
__webpack_require__.d = function(exports, name, getter) {
/******/
if (!__webpack_require__.o(exports, name)) {
/******/
Object.defineProperty(exports, name, {
enumerable: true,
get: getter
});
/******/
}
/******/
};
/******/
/******/ // define __esModule on exports
/******/
__webpack_require__.r = function(exports) {
/******/
if (typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/
Object.defineProperty(exports, Symbol.toStringTag, {
value: 'Module'
});
/******/
}
/******/
Object.defineProperty(exports, '__esModule', {
value: true
});
/******/
};
/******/
/******/ // create a fake namespace object
/******/ // mode & 1: value is a module id, require it
/******/ // mode & 2: merge all properties of value into the ns
/******/ // mode & 4: return value when already ns object
/******/ // mode & 8|1: behave like require
/******/
__webpack_require__.t = function(value, mode) {
/******/
if (mode & 1) value = __webpack_require__(value);
/******/
if (mode & 8) return value;
/******/
if ((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/
var ns = Object.create(null);
/******/
__webpack_require__.r(ns);
/******/
Object.defineProperty(ns, 'default', {
enumerable: true,
value: value
});
/******/
if (mode & 2 && typeof value != 'string')
for (var key in value) __webpack_require__.d(ns, key, function(key) {
return value[key];
}.bind(null, key));
/******/
return ns;
/******/
};
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/
__webpack_require__.n = function(module) {
/******/
var getter = module && module.__esModule ?
/******/
function getDefault() {
return module['default'];
} :
/******/
function getModuleExports() {
return module;
};
/******/
__webpack_require__.d(getter, 'a', getter);
/******/
return getter;
/******/
};
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/
__webpack_require__.o = function(object, property) {
return Object.prototype.hasOwnProperty.call(object, property);
};
/******/
/******/ // __webpack_public_path__
/******/
__webpack_require__.p = "";
/******/
/******/
/******/ // Load entry module and return exports
/******/
return __webpack_require__(__webpack_require__.s = 0);
/******/
})
/************************************************************************/
/******/
([
/* 0 */
/***/
(function(module, exports, __webpack_require__) {
"use strict";
Component({
options: {
addGlobalClass: true,
pureDataPattern: /^_/
},
properties: {
duration: {
type: Number,
value: 500
},
easingFunction: {
type: String,
value: 'default'
},
current: {
type: Number,
value: 0
},
loop: {
type: Boolean,
value: true
},
videoList: {
type: Object,
value: {},
observer: function observer() {
var newVal = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
this._videoListChanged(newVal.videos, newVal.current);
}
}
},
data: {
nextQueue: [],
prevQueue: [],
curQueue: [],
circular: false,
_last: 1,
_change: -1,
_invalidUp: 0,
_invalidDown: 0,
_videoContexts: [],
percent: 0,
isPaly: false,
currentIndex: 0,
windowWidth: app.globalData.windowWidth,
windowHeight: app.globalData.windowHeight,
selectVideo: {
id: 0,
index: 0
}
},
lifetimes: {
attached: function attached() {
this.data._videoContexts = [wx.createVideoContext('video_0', this), wx.createVideoContext('video_1', this), wx.createVideoContext('video_2', this)];
this.setData({
currentIndex: 0
})
}
},
methods: {
_videoListChanged: function _videoListChanged(newVal, current) {
if (newVal == undefined) return
var _this = this;
var data = this.data;
newVal.forEach(function(item) {
data.nextQueue.push(item);
});
if (data.curQueue.length === 0) {
let postion = newVal.length - current
if (postion >= 3)
this.setData({
curQueue: data.nextQueue.splice(current, 3)
}, function() {
_this.playCurrent(0);
});
else
this.setData({
curQueue: data.nextQueue.splice(current, postion)
}, function() {
_this.playCurrent(0);
});
}
},
animationfinish: function animationfinish(e) {
var _data = this.data,
_last = _data._last,
_change = _data._change,
curQueue = _data.curQueue,
prevQueue = _data.prevQueue,
nextQueue = _data.nextQueue;
var current = e.detail.current;
var diff = current - _last;
if (diff === 0) return;
this.data._last = current;
this.playCurrent(current);
this.triggerEvent('change', {
activeId: curQueue[current].id
});
var direction = diff === 1 || diff === -2 ? 'up' : 'down';
if (direction === 'up') {
if (this.data._invalidDown === 0) {
var change = (_change + 1) % 3;
var add = nextQueue.shift();
var remove = curQueue[change];
if (add) {
prevQueue.push(remove);
curQueue[change] = add;
this.data._change = change;
} else {
this.data._invalidUp += 1;
}
} else {
this.data._invalidDown -= 1;
}
}
if (direction === 'down') {
if (this.data._invalidUp === 0) {
var _change2 = _change;
var _remove = curQueue[_change2];
var _add = prevQueue.pop();
if (_add) {
curQueue[_change2] = _add;
nextQueue.unshift(_remove);
this.data._change = (_change2 - 1 + 3) % 3;
} else {
this.data._invalidDown += 1;
}
} else {
this.data._invalidUp -= 1;
}
}
var circular = true;
if (nextQueue.length === 0 && current !== 0) {
circular = false;
}
if (prevQueue.length === 0 && current !== 2) {
circular = false;
}
this.setData({
curQueue: curQueue,
circular: circular
});
},
playCurrent: function playCurrent(current) {
this.data._videoContexts.forEach(function(ctx, index) {
index !== current ? ctx.pause() : ctx.play();
});
},
onPlay: function onPlay(e) {
this.trigger(e, 'play');
this.setData({
isPaly: true,
selectVideo: {
id: e.currentTarget.dataset.id,
index: e.currentTarget.dataset.index
}
})
},
onPause: function onPause(e) {
this.trigger(e, 'pause');
this.setData({
isPaly: false
})
},
clickPause(e) {
if (!this.data.isPaly)
this.data._videoContexts[e.currentTarget.dataset.index].play()
else
this.data._videoContexts[e.currentTarget.dataset.index].pause()
},
onEnded: function onEnded(e) {
this.trigger(e, 'ended');
},
onError: function onError(e) {
this.trigger(e, 'error');
},
onTimeUpdate: function onTimeUpdate(e) {
this.trigger(e, 'timeupdate');
let percent = (e.detail.currentTime / e.detail.duration) * 100
this.setData({
percent: percent.toFixed(2)
})
},
onWaiting: function onWaiting(e) {
this.trigger(e, 'wait');
},
goUserHome: function goUserHome(e) {
this.trigger(e, 'user');
},
likeVideoOrNot: function likeVideoOrNot(e) {
this.trigger(e, 'like');
},
showComments: function showComments(e) {
this.trigger(e, 'comments');
},
shareMe: function shareMe(e) {
this.triggerEvent('share', this.data.selectVideo, {})
},
onProgress: function onProgress(e) {
this.trigger(e, 'progress');
},
onLoadedMetaData: function onLoadedMetaData(e) {
this.trigger(e, 'loadedmetadata');
},
trigger: function trigger(e, type) {
var ext = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
var detail = e.detail;
var activeId = e.target.dataset.id;
this.triggerEvent(type, Object.assign(Object.assign(Object.assign({}, detail), {
activeId: activeId
}), ext));
}
}
});
})
]);