删除多余事件

This commit is contained in:
Harvey committed 2019-11-28 10:10:29 +08:00
1 parent e0faa3fe68
commit 7ff61b4660
38 files changed
+266 -516

No files matched your search

+3 -3
View File
@@ -1,8 +1,8 @@
{
"packages/artplayer/dist/artplayer.js": {
"bundled": 160505,
"minified": 85450,
"gzipped": 21442
"bundled": 157063,
"minified": 84135,
"gzipped": 21095
},
"packages/artplayer-plugin-backlight/dist/artplayer-plugin-backlight.js": {
"bundled": 4642,
+1 -1
View File
@@ -20,7 +20,7 @@
- <b>Subtitle</b> - Support for `.VTT`, `.ASS` and `.SRT` formats
- <b>Customizable</b> - `Right Click Menu`, `Business Layer`, `Video Controller` and `Settings Panel`
- <b>Controller</b> - `Quality Switch`, `Subtitle Switch`, `Play Speed`, `Aspect Ratio`, `Video Flip`, `Fullscreen`, `Picture In Picture`, `Screenshot`, `Thumbnail`, `Adaptive Size`, `Highlight` and `Hotkey`...
- <b>Built-in</b> - `Auto PIP`, `Open Local Subtitles`, `Open Local Video`, `Mini Progress Bar`, `Network Detection` and `Subtitle Time Offset`
- <b>Built-in</b> - `Open Local Subtitles`, `Open Local Video`, `Mini Progress Bar`, `Network Detection` and `Subtitle Time Offset`
- <b>Integration</b> - Easy to integration with other dependencies: `flv.js`, `hls.js`, `dash.js`, `shaka-player`, `webtorrent`...
- <b>Code</b> - Vanilla `ES6` and `SASS`, Highly decoupled code, clear structure, easy to track bugs and add new features
- <b>Document</b> - Detailed interface documentation and rich code demo
+1 -1
View File
@@ -5,4 +5,4 @@
* Released under the MIT License.
*/
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).Artplayer=e()}(this,(function(){"use strict";var t=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")};function e(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}var n=function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t};"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self&&self;function r(t,e){return t(e={exports:{}},e.exports),e.exports}var i=r((function(t){function e(t){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function n(r){return"function"==typeof Symbol&&"symbol"===e(Symbol.iterator)?t.exports=n=function(t){return e(t)}:t.exports=n=function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":e(t)},n(r)}t.exports=n}));var o=function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t};var a=function(t,e){return!e||"object"!==i(e)&&"function"!=typeof e?o(t):e},c=r((function(t){function e(n){return t.exports=e=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},e(n)}t.exports=e})),s=r((function(t){function e(n,r){return t.exports=e=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},e(n,r)}t.exports=e}));var u=function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&s(t,e)},l=r((function(t,e){t.exports=function(){function t(e){return(t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(e)}var e=Object.prototype.toString,n=function(n){if(void 0===n)return"undefined";if(null===n)return"null";var i=t(n);if("boolean"===i)return"boolean";if("string"===i)return"string";if("number"===i)return"number";if("symbol"===i)return"symbol";if("function"===i)return function(t){return"GeneratorFunction"===r(t)}(n)?"generatorfunction":"function";if(function(t){return Array.isArray?Array.isArray(t):t instanceof Array}(n))return"array";if(function(t){return!(!t.constructor||"function"!=typeof t.constructor.isBuffer)&&t.constructor.isBuffer(t)}(n))return"buffer";if(function(t){try{if("number"==typeof t.length&&"function"==typeof t.callee)return!0}catch(t){if(-1!==t.message.indexOf("callee"))return!0}return!1}(n))return"arguments";if(function(t){return t instanceof Date||"function"==typeof t.toDateString&&"function"==typeof t.getDate&&"function"==typeof t.setDate}(n))return"date";if(function(t){return t instanceof Error||"string"==typeof t.message&&t.constructor&&"number"==typeof t.constructor.stackTraceLimit}(n))return"error";if(function(t){return t instanceof RegExp||"string"==typeof t.flags&&"boolean"==typeof t.ignoreCase&&"boolean"==typeof t.multiline&&"boolean"==typeof t.global}(n))return"regexp";switch(r(n)){case"Symbol":return"symbol";case"Promise":return"promise";case"WeakMap":return"weakmap";case"WeakSet":return"weakset";case"Map":return"map";case"Set":return"set";case"Int8Array":return"int8array";case"Uint8Array":return"uint8array";case"Uint8ClampedArray":return"uint8clampedarray";case"Int16Array":return"int16array";case"Uint16Array":return"uint16array";case"Int32Array":return"int32array";case"Uint32Array":return"uint32array";case"Float32Array":return"float32array";case"Float64Array":return"float64array"}if(function(t){return"function"==typeof t.throw&&"function"==typeof t.return&&"function"==typeof t.next}(n))return"generator";switch(i=e.call(n)){case"[object Object]":return"object";case"[object Map Iterator]":return"mapiterator";case"[object Set Iterator]":return"setiterator";case"[object String Iterator]":return"stringiterator";case"[object Array Iterator]":return"arrayiterator"}return i.slice(8,-1).toLowerCase().replace(/\s/g,"")};function r(t){return t.constructor?t.constructor.name:null}function i(t,e){var r=2<arguments.length&&void 0!==arguments[2]?arguments[2]:["option"];return o(t,e,r),a(t,e,r),function(t,e,r){var c=n(e),s=n(t);if("object"===c){if("object"!==s)throw new Error("[Type Error]: '".concat(r.join("."),"' require 'object' type, but got '").concat(s,"'"));Object.keys(e).forEach((function(n){var c=t[n],s=e[n],u=r.slice();u.push(n),o(c,s,u),a(c,s,u),i(c,s,u)}))}if("array"===c){if("array"!==s)throw new Error("[Type Error]: '".concat(r.join("."),"' require 'array' type, but got '").concat(s,"'"Line truncated
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).Artplayer=e()}(this,(function(){"use strict";var t=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")};function e(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}var n=function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t};"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self&&self;function r(t,e){return t(e={exports:{}},e.exports),e.exports}var i=r((function(t){function e(t){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function n(r){return"function"==typeof Symbol&&"symbol"===e(Symbol.iterator)?t.exports=n=function(t){return e(t)}:t.exports=n=function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":e(t)},n(r)}t.exports=n}));var o=function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t};var a=function(t,e){return!e||"object"!==i(e)&&"function"!=typeof e?o(t):e},c=r((function(t){function e(n){return t.exports=e=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},e(n)}t.exports=e})),s=r((function(t){function e(n,r){return t.exports=e=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},e(n,r)}t.exports=e}));var u=function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&s(t,e)},l=r((function(t,e){t.exports=function(){function t(e){return(t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(e)}var e=Object.prototype.toString,n=function(n){if(void 0===n)return"undefined";if(null===n)return"null";var i=t(n);if("boolean"===i)return"boolean";if("string"===i)return"string";if("number"===i)return"number";if("symbol"===i)return"symbol";if("function"===i)return function(t){return"GeneratorFunction"===r(t)}(n)?"generatorfunction":"function";if(function(t){return Array.isArray?Array.isArray(t):t instanceof Array}(n))return"array";if(function(t){return!(!t.constructor||"function"!=typeof t.constructor.isBuffer)&&t.constructor.isBuffer(t)}(n))return"buffer";if(function(t){try{if("number"==typeof t.length&&"function"==typeof t.callee)return!0}catch(t){if(-1!==t.message.indexOf("callee"))return!0}return!1}(n))return"arguments";if(function(t){return t instanceof Date||"function"==typeof t.toDateString&&"function"==typeof t.getDate&&"function"==typeof t.setDate}(n))return"date";if(function(t){return t instanceof Error||"string"==typeof t.message&&t.constructor&&"number"==typeof t.constructor.stackTraceLimit}(n))return"error";if(function(t){return t instanceof RegExp||"string"==typeof t.flags&&"boolean"==typeof t.ignoreCase&&"boolean"==typeof t.multiline&&"boolean"==typeof t.global}(n))return"regexp";switch(r(n)){case"Symbol":return"symbol";case"Promise":return"promise";case"WeakMap":return"weakmap";case"WeakSet":return"weakset";case"Map":return"map";case"Set":return"set";case"Int8Array":return"int8array";case"Uint8Array":return"uint8array";case"Uint8ClampedArray":return"uint8clampedarray";case"Int16Array":return"int16array";case"Uint16Array":return"uint16array";case"Int32Array":return"int32array";case"Uint32Array":return"uint32array";case"Float32Array":return"float32array";case"Float64Array":return"float64array"}if(function(t){return"function"==typeof t.throw&&"function"==typeof t.return&&"function"==typeof t.next}(n))return"generator";switch(i=e.call(n)){case"[object Object]":return"object";case"[object Map Iterator]":return"mapiterator";case"[object Set Iterator]":return"setiterator";case"[object String Iterator]":return"stringiterator";case"[object Array Iterator]":return"arrayiterator"}return i.slice(8,-1).toLowerCase().replace(/\s/g,"")};function r(t){return t.constructor?t.constructor.name:null}function i(t,e){var r=2<arguments.length&&void 0!==arguments[2]?arguments[2]:["option"];return o(t,e,r),a(t,e,r),function(t,e,r){var c=n(e),s=n(t);if("object"===c){if("object"!==s)throw new Error("[Type Error]: '".concat(r.join("."),"' require 'object' type, but got '").concat(s,"'"));Object.keys(e).forEach((function(n){var c=t[n],s=e[n],u=r.slice();u.push(n),o(c,s,u),a(c,s,u),i(c,s,u)}))}if("array"===c){if("array"!==s)throw new Error("[Type Error]: '".concat(r.join("."),"' require 'array' type, but got '").concat(s,"'"Line truncated
+2 -26
View File
@@ -627,28 +627,6 @@ var art = new Artplayer({
});
```
## autoPip
- Type: `Boolean`
- Default: `false`
Auto pip mode plugin, when the video is playing and not triggering in the window view
In chrome, you must use gestures on the page to use this feature, otherwise you will get an error.
More info: [picture-in-picture](https://developers.google.com/web/updates/2017/09/picture-in-picture)
[Run Code](/Configuration.autoPip)
```js
var url = 'https://zhw2590582.github.io/assets-cdn';
var art = new Artplayer({
container: '.artplayer-app',
url: url + '/video/one-more-time-one-more-chance-480p.mp4',
autoPip: true,
});
```
## networkMonitor
- Type: `Boolean`
@@ -1587,10 +1565,8 @@ art.on('ready', function(args) {
| `aspectRatioChange` | When aspect ratio change | Aspect ratio |
| `aspectRatioRemove` | When aspect ratio remove | `undefined` |
| `aspectRatioReset` | When aspect ratio reset | `undefined` |
| `beforeCustomType` | Before triggering CustomType | Type name |
| `afterCustomType` | After triggering CustomType | Type name |
| `beforeAttachUrl` | Before the video url change | Video url |
| `afterAttachUrl` | After the video url change | Video url |
| `customType` | After triggering CustomType | Type name |
| `attachUrl` | After the video url change | Video url |
| `autoSizeChange` | When the player auto size change | Player size |
| `autoSizeRemove` | When the player auto size remove | `undefined` |
| `flipChange` | When the player flip change | Flip name |
+124 -235
View File
@@ -631,7 +631,7 @@
var scheme = {
container: validElement,
url: 'string|function',
url: 'string',
poster: 'string',
title: 'string',
theme: 'string',
@@ -736,12 +736,10 @@
var kindOf = art.constructor.kindOf,
whitelist = art.option.whitelist;
this.ua = window.navigator.userAgent;
this.ua = navigator.userAgent;
this.isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(this.ua);
this.state = !this.isMobile || whitelist.some(function (item) {
var type = kindOf(item);
switch (type) {
switch (kindOf(item)) {
case 'string':
return _this.ua.indexOf(item) > -1;
@@ -780,9 +778,9 @@
errorHandle(this.$container.clientWidth && this.$container.clientHeight, 'The width and height of the container cannot be 0');
if (art.whitelist.state) {
this.initDesktop();
this.desktop();
} else {
this.initMobile();
this.mobile();
}
}
@@ -792,8 +790,8 @@
return query(className, this.$container);
}
}, {
key: "initDesktop",
value: function initDesktop() {
key: "desktop",
value: function desktop() {
this.$container.innerHTML = "\n <div class=\"art-video-player art-subtitle-show art-layer-show\" style=\"--theme: ".concat(this.art.option.theme, "\">\n <video class=\"art-video\">\n <track default kind=\"metadata\"></track>\n </video>\n <div class=\"art-subtitle\"></div>\n <div class=\"art-danmuku\"></div>\n <div class=\"art-layers\"></div>\n <div class=\"art-mask\">\n <div class=\"art-state\"></div>\n </div>\n <div class=\"art-bottom\">\n <div class=\"art-progress\"></div>\n <div class=\"art-controls\">\n <div class=\"art-controls-left\"></div>\n <div class=\"art-controls-right\"></div>\n </div>\n </div>\n <div class=\"art-loading\"></div>\n <div class=\"art-notice\">\n <div class=\"art-notice-inner\"></div>\n </div>\n <div class=\"art-settings\">\n <div class=\"art-setting-inner art-backdrop-filter\">\n <div class=\"art-setting-body\"></div>\n </div>\n </div>\n <div class=\"art-info art-backdrop-filter\">\n <div class=\"art-info-panel\">\n <div class=\"art-info-item\">\n <div class=\"art-info-title\">Player version:</div>\n <div class=\"art-info-content\">3.2.4</div>\n </div>\n <div class=\"art-info-item\">\n <div class=\"art-info-title\">Video url:</div>\n <div class=\"art-info-content\" data-video=\"src\"></div>\n </div>\n <div class=\"art-info-item\">\n <div class=\"art-info-title\">Video volume:</div>\n <div class=\"art-info-content\" data-video=\"volume\"></div>\n </div>\n <div class=\"art-info-item\">\n <div class=\"art-info-title\">Video time:</div>\n <div class=\"art-info-content\" data-video=\"currentTime\"></div>\n </div>\n <div class=\"art-info-item\">\n <div class=\"art-info-title\">Video duration:</div>\n <div class=\"art-info-content\" data-video=\"duration\"></div>\n </div>\n <div class=\"art-info-item\">\n <div class=\"art-info-title\">Video resolution:</div>\n <div class=\"art-info-content\">\n <span data-video=\"videoWidth\"></span> x <span data-video=\"videoHeight\"></span>\n </div>\n </div>\n </div>\n <div class=\"art-info-close\">[x]</div>\n </div>\n <div class=\"art-pip-header\">\n <div class=\"art-pip-title\"></div>\n <div class=\"art-pip-close\">\xD7</div>\n </div>\n <div class=\"art-contextmenus art-backdrop-filter\"></div>\n </div>\n ");
this.$player = this.query('.art-video-player');
this.$video = this.query('.art-video');
@@ -823,16 +821,16 @@
this.$contextmenu = this.query('.art-contextmenus');
}
}, {
key: "initMobile",
value: function initMobile() {
key: "mobile",
value: function mobile() {
this.$container.innerHTML = "\n <div class=\"art-video-player\">\n <video class=\"art-video\"></video>\n </div>\n ";
this.$player = this.query('.art-video-player');
this.$video = this.query('.art-video');
}
}, {
key: "destroy",
value: function destroy(removeHtml) {
if (removeHtml) {
value: function destroy(remove) {
if (remove) {
this.$container.innerHTML = '';
} else {
addClass(this.$player, 'art-destroy');
@@ -891,6 +889,7 @@
"Web fullscreen": "网页全屏",
"Exit web fullscreen": "退出网页全屏",
"Mini player": "迷你播放器",
"Exit mini player": "退出迷你播放器",
"Does not support fullscreen": "不支持全屏",
"Local Subtitle": "本地字幕",
"Local Video": "本地视频",
@@ -946,6 +945,7 @@
"Web fullscreen": "網頁全屏",
"Exit web fullscreen": "退出網頁全屏",
"Mini player": "迷你播放器",
"Exit mini player": "退出迷你播放器",
"Does not support fullscreen": "不支持全屏",
"Local Subtitle": "本地字幕",
"Local Video": "本地視頻",
@@ -989,7 +989,7 @@
return I18n;
}();
function attachUrlMix(art, player) {
function urlMix(art, player) {
var _art$option = art.option,
type = _art$option.type,
customType = _art$option.customType,
@@ -997,46 +997,27 @@
def(player, 'url', {
get: function get() {
return $video.src;
}
});
def(player, 'attachUrl', {
value: function value(url) {
return sleep().then(function () {
function attachUrl(videoUrl) {
var typeName = type || getExt(videoUrl);
var typeCallback = customType[typeName];
},
set: function set(url) {
var typeName = type || getExt(url);
var typeCallback = customType[typeName];
if (typeName && typeCallback) {
art.loading.show = true;
art.emit('beforeCustomType', typeName);
typeCallback.call(art, $video, videoUrl, art);
art.emit('afterCustomType', typeName);
} else {
art.emit('beforeAttachUrl', videoUrl);
$video.src = videoUrl;
art.emit('afterAttachUrl', videoUrl);
}
return Promise.resolve(videoUrl);
}
if (typeof url === 'function') {
var result = url.call(art);
errorHandle(typeof result.then === 'function', 'If url is a function, it needs to return a promise.');
return result.then(function (videoUrl) {
art.loading.show = true;
return attachUrl(videoUrl);
});
}
return attachUrl(url);
});
if (typeName && typeCallback) {
art.loading.show = true;
typeCallback.call(art, $video, url, art);
art.emit('customType', typeName);
} else {
$video.src = url;
art.option.url = url;
art.emit('urlChange', url);
}
}
});
}
function attrInit(art, player) {
var option = art.option,
storage = art.storage,
$video = art.template.$video;
Object.keys(option.moreVideoAttr).forEach(function (key) {
$video[key] = option.moreVideoAttr[key];
@@ -1050,6 +1031,12 @@
$video.volume = clamp(option.volume, 0, 1);
}
var volume = storage.get('volume');
if (volume) {
$video.volume = clamp(volume, 0, 1);
}
if (option.poster) {
$video.poster = option.poster;
}
@@ -1059,7 +1046,7 @@
}
$video.controls = false;
player.attachUrl(option.url);
player.url = option.url;
}
function eventInit(art, player) {
@@ -1110,7 +1097,7 @@
if (reconnectTime < maxReconnectTime) {
sleep(1000).then(function () {
reconnectTime += 1;
player.attachUrl(option.url);
player.url = option.url;
notice.show = "".concat(i18n.get('Reconnect'), ": ").concat(reconnectTime);
});
} else {
@@ -1298,30 +1285,27 @@
function switchMix(art, player) {
var i18n = art.i18n,
notice = art.notice,
option = art.option;
notice = art.notice;
function switchUrl(url, name, currentTime) {
if (url === player.url) return Promise.resolve(url);
if (url === player.url) return;
URL.revokeObjectURL(player.url);
return player.attachUrl(url).then(function () {
option.url = url;
player.playbackRate = false;
player.aspectRatio = false;
art.once('video:canplay', function () {
player.currentTime = currentTime;
});
if (player.playing) {
player.play = true;
}
if (name) {
notice.show = "".concat(i18n.get('Switch video'), ": ").concat(name);
}
art.emit('switch', url);
player.url = url;
player.playbackRate = false;
player.aspectRatio = false;
art.once('video:canplay', function () {
player.currentTime = currentTime;
});
if (player.playing) {
player.play = true;
}
if (name) {
notice.show = "".concat(i18n.get('Switch video'), ": ").concat(name);
}
art.emit('switch', url);
}
def(player, 'switchQuality', {
@@ -1667,57 +1651,27 @@
var screenfull_1 = screenfull.isEnabled;
function fullscreenMix(art, player) {
var i18n = art.i18n,
notice = art.notice,
destroyEvents = art.events.destroyEvents,
$player = art.template.$player;
var screenfullChange = function screenfullChange() {
art.emit('fullscreenChange', screenfull.isFullscreen);
};
var screenfullError = function screenfullError() {
notice.show = i18n.get('Does not support fullscreen');
};
if (player.fullscreenIsEnabled) {
screenfull.on('change', screenfullChange);
screenfull.on('error', screenfullError);
destroyEvents.push(function () {
screenfull.off('change', screenfullChange);
screenfull.off('error', screenfullError);
});
}
var $player = art.template.$player;
def(player, 'fullscreen', {
get: function get() {
return screenfull.isFullscreen;
},
set: function set(value) {
if (!player.fullscreenIsEnabled) {
screenfullError();
return;
if (player.fullscreenWeb) {
player.fullscreenWeb = false;
}
if (value) {
if (player.fullscreenWeb) {
player.fullscreenWeb = false;
}
screenfull.request($player).then(function () {
addClass($player, 'art-fullscreen');
player.aspectRatioReset = true;
art.emit('fullscreenEnabled');
art.emit('fullscreenChange', true);
});
} else {
if (player.fullscreenWeb) {
player.fullscreenWeb = false;
}
screenfull.exit().then(function () {
removeClass($player, 'art-fullscreen');
player.aspectRatioReset = true;
art.emit('fullscreenExit');
art.emit('fullscreenChange', false);
});
}
}
@@ -1729,11 +1683,6 @@
}
}
});
def(player, 'fullscreenIsEnabled', {
get: function get() {
return screenfull.isEnabled;
}
});
}
function fullscreenWebMix(art, player) {
@@ -1743,22 +1692,18 @@
return hasClass($player, 'art-web-fullscreen');
},
set: function set(value) {
if (value) {
if (player.fullscreen) {
player.fullscreen = false;
}
if (player.fullscreen) {
player.fullscreen = false;
}
if (value) {
addClass($player, 'art-web-fullscreen');
player.aspectRatioReset = true;
art.emit('fullscreenWebEnabled');
art.emit('fullscreenWebChange', true);
} else {
if (player.fullscreen) {
player.fullscreen = false;
}
removeClass($player, 'art-web-fullscreen');
player.aspectRatioReset = true;
art.emit('fullscreenWebExit');
art.emit('fullscreenWebChange', false);
}
}
});
@@ -1795,15 +1740,10 @@
}
});
proxy($video, 'enterpictureinpicture', function () {
art.emit('pipEnabled');
art.emit('pipChange', true);
});
proxy($video, 'leavepictureinpicture', function () {
art.emit('pipExit');
});
art.on('destroy', function () {
if (player.pip) {
player.pip = false;
}
art.emit('pipChange', false);
});
}
@@ -1817,10 +1757,10 @@
set: function set(value) {
if (value) {
$video.webkitSetPresentationMode('picture-in-picture');
art.emit('pipEnabled');
art.emit('pipChange', true);
} else {
$video.webkitSetPresentationMode('inline');
art.emit('pipExit');
art.emit('pipChange', false);
}
}
});
@@ -1865,7 +1805,7 @@
removeClass($player, 'art-is-dragging');
});
append($pipTitle, option.title || i18n.get('Mini player'));
var property = {
def(player, 'pip', {
get: function get() {
return hasClass($player, 'art-pip');
},
@@ -1881,8 +1821,8 @@
player.fullscreenWeb = false;
player.aspectRatio = false;
player.playbackRate = false;
art.emit('pipEnabled');
} else if (player.pip) {
art.emit('pipChange', true);
} else {
$player.style.cssText = cacheStyle;
removeClass($player, 'art-pip');
setStyle($player, 'top', null);
@@ -1892,11 +1832,10 @@
player.aspectRatio = false;
player.playbackRate = false;
player.autoSize = true;
art.emit('pipExit');
art.emit('pipChange', false);
}
}
};
def(player, 'pip', property);
});
}
function pipMix(art, player) {
@@ -2044,7 +1983,7 @@
var Player = function Player(art) {
classCallCheck(this, Player);
attachUrlMix(art, this);
urlMix(art, this);
eventInit(art, this);
attrInit(art, this);
playMix(art, this);
@@ -2118,11 +2057,6 @@
}
createClass(Component, [{
key: "toggle",
value: function toggle() {
this.show = !this.show;
}
}, {
key: "add",
value: function add(getOption, callback) {
var _this = this;
@@ -2192,6 +2126,13 @@
this.art.emit("".concat(this.name, ":toggle"), value);
}
}, {
key: "toggle",
set: function set(value) {
if (value) {
this.show = !this.show;
}
}
}]);
return Component;
@@ -2220,23 +2161,18 @@
function fullscreen(option) {
return function (art) {
return _objectSpread({}, option, {
tooltip: art.i18n.get('Fullscreen'),
mounted: function mounted($control) {
var proxy = art.events.proxy,
icons = art.icons,
i18n = art.i18n,
player = art.player;
var $fullscreen = append($control, icons.fullscreen);
tooltip($fullscreen, i18n.get('Fullscreen'));
append($control, icons.fullscreen);
proxy($control, 'click', function () {
player.fullscreenToggle = true;
});
art.on('fullscreenEnabled', function () {
setStyle($fullscreen, 'opacity', '0.8');
tooltip($fullscreen, i18n.get('Exit fullscreen'));
});
art.on('fullscreenExit', function () {
setStyle($fullscreen, 'opacity', '1');
tooltip($fullscreen, i18n.get('Fullscreen'));
art.on('fullscreenChange', function (value) {
tooltip($control, i18n.get(value ? 'Exit fullscreen' : 'Fullscreen'));
});
}
});
@@ -2249,23 +2185,18 @@
function fullscreenWeb(option) {
return function (art) {
return _objectSpread$1({}, option, {
tooltip: art.i18n.get('Web fullscreen'),
mounted: function mounted($control) {
var proxy = art.events.proxy,
icons = art.icons,
i18n = art.i18n,
player = art.player;
var $fullscreenWeb = append($control, icons.fullscreenWeb);
tooltip($fullscreenWeb, i18n.get('Web fullscreen'));
append($control, icons.fullscreenWeb);
proxy($control, 'click', function () {
player.fullscreenWebToggle = true;
});
art.on('fullscreenWebEnabled', function () {
setStyle($fullscreenWeb, 'opacity', '0.8');
tooltip($fullscreenWeb, i18n.get('Exit web fullscreen'));
});
art.on('fullscreenWebExit', function () {
setStyle($fullscreenWeb, 'opacity', '1');
tooltip($fullscreenWeb, i18n.get('Web fullscreen'));
art.on('fullscreenWebChange', function (value) {
tooltip($control, i18n.get(value ? 'Exit web fullscreen' : 'Web fullscreen'));
});
}
});
@@ -2278,15 +2209,18 @@
function pip(option) {
return function (art) {
return _objectSpread$2({}, option, {
tooltip: art.i18n.get('Mini player'),
mounted: function mounted($control) {
var proxy = art.events.proxy,
icons = art.icons,
i18n = art.i18n,
player = art.player;
var $pip = append($control, icons.pip);
tooltip($pip, i18n.get('Mini player'));
append($control, icons.pip);
proxy($control, 'click', function () {
player.pip = true;
player.pipToggle = true;
});
art.on('pipChange', function (value) {
tooltip($control, i18n.get(value ? 'Exit mini player' : 'Mini player'));
});
}
});
@@ -2371,7 +2305,7 @@
proxy = art.events.proxy,
player = art.player;
return _objectSpread$4({}, option, {
html: "\n<div class=\"art-control-progress-inner\">\n <div class=\"art-progress-loaded\"></div>\n <div class=\"art-progress-played\" style=\"background: ".concat(theme, "\"></div>\n <div class=\"art-progress-highlight\"></div>\n <div class=\"art-progress-indicator\" style=\"background: ").concat(theme, "\"></div>\n <div class=\"art-progress-tip art-tip\"></div>\n</div>\n "),
html: "\n <div class=\"art-control-progress-inner\">\n <div class=\"art-progress-loaded\"></div>\n <div class=\"art-progress-played\" style=\"background: ".concat(theme, "\"></div>\n <div class=\"art-progress-highlight\"></div>\n <div class=\"art-progress-indicator\" style=\"background: ").concat(theme, "\"></div>\n <div class=\"art-progress-tip art-tip\"></div>\n </div>\n "),
mounted: function mounted($control) {
var isDroging = false;
var $loaded = query('.art-progress-loaded', $control);
@@ -2492,24 +2426,18 @@
function subtitle(option) {
return function (art) {
return _objectSpread$5({}, option, {
tooltip: art.i18n.get('Hide subtitle'),
mounted: function mounted($control) {
var proxy = art.events.proxy,
icons = art.icons,
i18n = art.i18n,
subtitle = art.subtitle;
var $subtitle = append($control, icons.subtitle);
tooltip($subtitle, i18n.get('Hide subtitle'));
append($control, icons.subtitle);
proxy($control, 'click', function () {
subtitle.toggle();
subtitle.toggle = true;
});
art.on('subtitle:toggle', function (value) {
if (value) {
setStyle($subtitle, 'opacity', '1');
tooltip($subtitle, i18n.get('Hide subtitle'));
} else {
setStyle($subtitle, 'opacity', '0.8');
tooltip($subtitle, i18n.get('Show subtitle'));
}
tooltip($control, i18n.get(value ? 'Hide subtitle' : 'Show subtitle'));
});
}
});
@@ -2526,8 +2454,8 @@
function getTime() {
var newTime = "".concat(secondToTime(art.player.currentTime), " / ").concat(secondToTime(art.player.duration));
if (newTime !== $control.innerHTML) {
$control.innerHTML = newTime;
if (newTime !== $control.innerText) {
$control.innerText = newTime;
}
}
@@ -2628,23 +2556,21 @@
function setting(option) {
return function (art) {
return _objectSpread$8({}, option, {
tooltip: art.i18n.get('Show setting'),
mounted: function mounted($control) {
var proxy = art.events.proxy,
icons = art.icons,
i18n = art.i18n,
setting = art.setting;
var $setting = append($control, icons.setting);
tooltip($setting, i18n.get('Show setting'));
append($control, icons.setting);
proxy($control, 'click', function () {
setting.toggle();
});
art.on('setting:toggle', function (value) {
if (value) {
setStyle($setting, 'opacity', '0.8');
tooltip($setting, i18n.get('Hide setting'));
tooltip($control, i18n.get('Hide setting'));
} else {
setStyle($setting, 'opacity', '1');
tooltip($setting, i18n.get('Show setting'));
tooltip($control, i18n.get('Show setting'));
}
});
}
@@ -2721,14 +2647,13 @@
function screenshot(option) {
return function (art) {
return _objectSpread$a({}, option, {
tooltip: art.i18n.get('Screenshot'),
mounted: function mounted($control) {
var proxy = art.events.proxy,
icons = art.icons,
i18n = art.i18n,
player = art.player;
var $screenshot = append($control, icons.screenshot);
tooltip($screenshot, i18n.get('Screenshot'));
proxy($screenshot, 'click', function () {
append($control, icons.screenshot);
proxy($control, 'click', function () {
player.screenshot();
});
}
@@ -2888,7 +2813,7 @@
var _this2 = this;
var option = typeof getOption === 'function' ? getOption(this.art) : getOption;
errorHandle(option.position, 'Controls option.position can not be empty');
errorHandle(['top', 'left', 'right'].includes(option.position), "Control option.position must one of 'top', 'left', 'right'");
var _this$art$template = this.art.template,
$progress = _this$art$template.$progress,
$controlsLeft = _this$art$template.$controlsLeft,
@@ -2931,7 +2856,7 @@
var i18n = art.i18n,
player = art.player;
return _objectSpread$c({}, option, {
html: "\n".concat(i18n.get('Play speed'), ":\n<span data-rate=\"0.5\">0.5</span>\n<span data-rate=\"0.75\">0.75</span>\n<span data-rate=\"1.0\" class=\"art-current\">").concat(i18n.get('Normal'), "</span>\n<span data-rate=\"1.25\">1.25</span>\n<span data-rate=\"1.5\">1.5</span>\n<span data-rate=\"2.0\">2.0</span>\n "),
html: "\n ".concat(i18n.get('Play speed'), ":\n <span data-rate=\"0.5\">0.5</span>\n <span data-rate=\"0.75\">0.75</span>\n <span data-rate=\"1.0\" class=\"art-current\">").concat(i18n.get('Normal'), "</span>\n <span data-rate=\"1.25\">1.25</span>\n <span data-rate=\"1.5\">1.5</span>\n <span data-rate=\"2.0\">2.0</span>\n "),
click: function click(contextmenu, event) {
var rate = event.target.dataset.rate;
@@ -2963,7 +2888,7 @@
var i18n = art.i18n,
player = art.player;
return _objectSpread$d({}, option, {
html: "\n".concat(i18n.get('Aspect ratio'), ":\n<span data-ratio=\"default\" class=\"art-current\">").concat(i18n.get('Default'), "</span>\n<span data-ratio=\"4:3\">4:3</span>\n<span data-ratio=\"16:9\">16:9</span>\n "),
html: "\n ".concat(i18n.get('Aspect ratio'), ":\n <span data-ratio=\"default\" class=\"art-current\">").concat(i18n.get('Default'), "</span>\n <span data-ratio=\"4:3\">4:3</span>\n <span data-ratio=\"16:9\">16:9</span>\n "),
click: function click(contextmenu, event) {
var ratio = event.target.dataset.ratio;
@@ -3106,8 +3031,10 @@
menuTop = cHeight - mHeight;
}
setStyle($contextmenu, 'left', "".concat(menuLeft, "px"));
setStyle($contextmenu, 'top', "".concat(menuTop, "px"));
setStyles($contextmenu, {
top: "".concat(menuTop, "px"),
left: "".concat(menuLeft, "px")
});
});
proxy($player, 'click', function (event) {
if (!event.composedPath().includes($contextmenu)) {
@@ -3603,7 +3530,7 @@
classCallCheck(this, Notice);
this.art = art;
this.time = 1000;
this.time = 2000;
this.timer = null;
}
@@ -3617,6 +3544,7 @@
addClass($player, 'art-notice-show');
clearTimeout(this.timer);
this.timer = setTimeout(function () {
$noticeInner.innerText = '';
removeClass($player, 'art-notice-show');
}, this.time);
}
@@ -3667,10 +3595,6 @@
var pip$1 = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 36 36\" height=\"32\" width=\"32\">\n <path d=\"M25,17 L17,17 L17,23 L25,23 L25,17 L25,17 Z M29,25 L29,10.98 C29,9.88 28.1,9 27,9 L9,9 C7.9,9 7,9.88 7,10.98 L7,25 C7,26.1 7.9,27 9,27 L27,27 C28.1,27 29,26.1 29,25 L29,25 Z M27,25.02 L9,25.02 L9,10.97 L27,10.97 L27,25.02 L27,25.02 Z\"></path>\n</svg>";
var prev = "<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"36\" width=\"36\" viewBox=\"0 0 36 36\">\n <path d=\"m 12,12 h 2 v 12 h -2 z m 3.5,6 8.5,6 V 12 z\"></path>\n</svg>";
var next = "<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"36\" width=\"36\" viewBox=\"0 0 36 36\">\n <path d=\"M 12,24 20.5,18 12,12 V 24 z M 22,12 v 12 h 2 V 12 h -2 z\"></path>\n</svg>";
var Icons = function Icons(art) {
var _this = this;
@@ -3688,9 +3612,7 @@
setting: setting$1,
fullscreen: fullscreen$1,
fullscreenWeb: fullscreenWeb$1,
pip: pip$1,
prev: prev,
next: next
pip: pip$1
}, art.option.icons);
Object.keys(icons).forEach(function (key) {
var icon = document.createElement('i');
@@ -3847,15 +3769,10 @@
var Storage =
/*#__PURE__*/
function () {
function Storage(art) {
function Storage() {
classCallCheck(this, Storage);
this.name = 'artplayer_settings';
var volume = this.get('volume');
if (volume) {
art.option.volume = volume;
}
}
createClass(Storage, [{
@@ -3889,6 +3806,7 @@
function settingMix(art) {
var i18n = art.i18n,
plugins = art.plugins,
subtitle = art.subtitle,
proxy = art.events.proxy;
return {
@@ -3902,7 +3820,7 @@
proxy($range, 'change', function () {
var value = $range.value;
$value.innerText = value;
art.plugins.subtitleOffset.offset(Number(value));
plugins.subtitleOffset.offset(Number(value));
});
art.on('subtitle:switch', function () {
$range.value = 0;
@@ -4209,29 +4127,6 @@
};
}
function autoPip(art) {
var events = art.events,
player = art.player,
template = art.template;
var scrollDebounce = debounce(function () {
var _template$$player$get = template.$player.getBoundingClientRect(),
top = _template$$player$get.top,
height = _template$$player$get.height;
if (top + height <= 0 && !player.pip) {
player.pip = true;
art.emit('autoPip', true);
} else if (player.pip) {
player.pip = false;
art.emit('autoPip', false);
}
}, 300);
events.proxy(window, 'scroll', scrollDebounce);
return {
name: 'autoPip'
};
}
var Plugins =
/*#__PURE__*/
function () {
@@ -4264,10 +4159,6 @@
this.add(networkMonitor);
}
if (option.autoPip) {
this.add(autoPip);
}
art.option.plugins.forEach(function (plugin) {
_this.add(plugin);
});
@@ -4336,13 +4227,11 @@
var typeCallback = option.customType[typeName];
if (typeName && typeCallback) {
art.emit('beforeCustomType', typeName);
typeCallback($video, option.url, art);
art.emit('afterCustomType', typeName);
art.emit('customType', typeName);
} else {
art.emit('beforeAttachUrl', option.url);
$video.src = option.url;
art.emit('afterAttachUrl', $video.src);
art.emit('urlChange', $video.src);
}
};
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"artplayer.js","sources":["../../node_modules/_@babel_runtime@7.7.4@@babel/runtime/helpers/classCallCheck.js","../../node_modules/_@babel_runtime@7.7.4@@babel/runtime/helpers/createClass.js","../../node_modules/_@babel_runtime@7.7.4@@babel/runtime/helpers/typeof.js","../../node_modules/_@babel_runtime@7.7.4@@babel/runtime/helpers/assertThisInitialized.js","../../node_modules/_@babel_runtime@7.7.4@@babel/runtime/helpers/possibleConstructorReturn.js","../../node_modules/_@babel_runtime@7.7.4@@babel/runtime/helpers/getPrototypeOf.js","../../node_modules/_@babel_runtime@7.7.4@@babel/runtime/helpers/setPrototypeOf.js","../../node_modules/_@babel_runtime@7.7.4@@babel/runtime/helpers/inherits.js","../../packages/artplayer/node_modules/option-validator/dist/option-validator.js","../../packages/artplayer/src/utils/emitter.js","../../packages/artplayer/src/utils/dom.js","../../node_modules/_@babel_runtime@7.7.4@@babel/runtime/helpers/isNativeFunction.js","../../node_modules/_@babel_runtime@7.7.4@@babel/runtime/helpers/construct.js","../../node_modules/_@babel_runtime@7.7.4@@babel/runtime/helpers/wrapNativeSuper.js","../../packages/artplayer/src/utils/error.js","../../packages/artplayer/src/utils/subtitle.js","../../packages/artplayer/src/utils/file.js","../../node_modules/_@babel_runtime@7.7.4@@babel/runtime/helpers/arrayWithoutHoles.js","../../node_modules/_@babel_runtime@7.7.4@@babel/runtime/helpers/iterableToArray.js","../../node_modules/_@babel_runtime@7.7.4@@babel/runtime/helpers/nonIterableSpread.js","../../node_modules/_@babel_runtime@7.7.4@@babel/runtime/helpers/toConsumableArray.js","../../packages/artplayer/src/utils/property.js","../../packages/artplayer/src/utils/time.js","../../packages/artplayer/src/utils/format.js","../../packages/artplayer/src/scheme/index.js","../../packages/artplayer/src/config/video.js","../../packages/artplayer/src/config/index.js","../../packages/artplayer/src/whitelist.js","../../packages/artplayer/src/template.js","../../packages/artplayer/src/i18n/index.js","../../packages/artplayer/src/player/attachUrlMix.js","../../packages/artplayer/src/player/attrInit.js","../../packages/artplayer/src/player/eventInit.js","../../packages/artplayer/src/player/playMix.js","../../packages/artplayer/src/player/pauseMix.js","../../packages/artplayer/src/player/toggleMix.js","../../packages/artplayer/src/player/seekMix.js","../../packages/artplayer/src/player/volumeMix.js","../../packages/artplayer/src/player/currentTimeMix.js","../../packages/artplayer/src/player/durationMix.js","../../packages/artplayer/src/player/switchMix.js","../../packages/artplayer/src/player/playbackRateMix.js","../../packages/artplayer/src/player/aspectRatioMix.js","../../packages/artplayer/src/player/screenshotMix.js","../../packages/artplayer/node_modules/screenfull/dist/screenfull.js","../../packages/artplayer/src/player/fullscreenMix.js","../../packages/artplayer/src/player/fullscreenWebMix.js","../../packages/artplayer/src/player/pipMix.js","../../packages/artplayer/src/player/loadedMix.js","../../packages/artplayer/src/player/playedMix.js","../../packages/artplayer/src/player/playingMix.js","../../packages/artplayer/src/player/autoSizeMix.js","../../packages/artplayer/src/player/rectMix.js","../../packages/artplayer/src/player/flipMix.js","../../packages/artplayer/src/player/index.js","../../node_modules/_@babel_runtime@7.7.4@@babel/runtime/helpers/superPropBase.js","../../node_modules/_@babel_runtime@7.7.4@@babel/runtime/helpers/get.js","../../packages/artplayer/src/utils/component.js","../../node_modules/_@babel_runtime@7.7.4@@babel/runtime/helpers/defineProperty.js","../../packages/artplayer/src/control/fullscreen.js","../../packages/artplayer/src/control/fullscreenWeb.js","../../packages/artplayer/src/control/pip.js","../../packages/artplayer/src/control/playAndPause.js","../../packages/artplayer/src/control/progress.js","../../packages/artplayer/src/control/subtitle.js","../../packages/artplayer/src/control/time.js","../../packages/artplayer/src/control/volume.js","../../packages/artplayer/src/control/setting.js","../../packages/artplayer/src/control/thumbnails.js","../../packages/artplayer/src/control/screenshot.js","../../packages/artplayer/src/control/quality.js","../../packages/artplayer/src/control/index.js","../../packages/artplayer/src/contextmenu/playbackRate.js","../../packages/artplayer/src/contextmenu/aspectRatio.js","../../packages/artplayer/src/contextmenu/info.js","../../packages/artplayer/src/contextmenu/version.js","../../packages/artplayer/src/contextmenu/close.js","../../packages/artplayer/src/contextmenu/index.js","../../packages/artplayer/src/info.js","../../packages/artplayer/src/subtitle.js","../../packages/artplayer/src/events/clickInit.js","../../packages/artplayer/src/events/hoverInit.js","../../packages/artplayer/src/events/mousemoveInit.js","../../packages/artplayer/src/events/resizeInit.js","../../packages/artplayer/src/events/index.js","../../packages/artplayeLine truncated
{"version":3,"file":"artplayer.js","sources":["../../node_modules/_@babel_runtime@7.7.4@@babel/runtime/helpers/classCallCheck.js","../../node_modules/_@babel_runtime@7.7.4@@babel/runtime/helpers/createClass.js","../../node_modules/_@babel_runtime@7.7.4@@babel/runtime/helpers/typeof.js","../../node_modules/_@babel_runtime@7.7.4@@babel/runtime/helpers/assertThisInitialized.js","../../node_modules/_@babel_runtime@7.7.4@@babel/runtime/helpers/possibleConstructorReturn.js","../../node_modules/_@babel_runtime@7.7.4@@babel/runtime/helpers/getPrototypeOf.js","../../node_modules/_@babel_runtime@7.7.4@@babel/runtime/helpers/setPrototypeOf.js","../../node_modules/_@babel_runtime@7.7.4@@babel/runtime/helpers/inherits.js","../../packages/artplayer/node_modules/option-validator/dist/option-validator.js","../../packages/artplayer/src/utils/emitter.js","../../packages/artplayer/src/utils/dom.js","../../node_modules/_@babel_runtime@7.7.4@@babel/runtime/helpers/isNativeFunction.js","../../node_modules/_@babel_runtime@7.7.4@@babel/runtime/helpers/construct.js","../../node_modules/_@babel_runtime@7.7.4@@babel/runtime/helpers/wrapNativeSuper.js","../../packages/artplayer/src/utils/error.js","../../packages/artplayer/src/utils/subtitle.js","../../packages/artplayer/src/utils/file.js","../../node_modules/_@babel_runtime@7.7.4@@babel/runtime/helpers/arrayWithoutHoles.js","../../node_modules/_@babel_runtime@7.7.4@@babel/runtime/helpers/iterableToArray.js","../../node_modules/_@babel_runtime@7.7.4@@babel/runtime/helpers/nonIterableSpread.js","../../node_modules/_@babel_runtime@7.7.4@@babel/runtime/helpers/toConsumableArray.js","../../packages/artplayer/src/utils/property.js","../../packages/artplayer/src/utils/time.js","../../packages/artplayer/src/utils/format.js","../../packages/artplayer/src/scheme/index.js","../../packages/artplayer/src/config/video.js","../../packages/artplayer/src/config/index.js","../../packages/artplayer/src/whitelist.js","../../packages/artplayer/src/template.js","../../packages/artplayer/src/i18n/index.js","../../packages/artplayer/src/player/urlMix.js","../../packages/artplayer/src/player/attrInit.js","../../packages/artplayer/src/player/eventInit.js","../../packages/artplayer/src/player/playMix.js","../../packages/artplayer/src/player/pauseMix.js","../../packages/artplayer/src/player/toggleMix.js","../../packages/artplayer/src/player/seekMix.js","../../packages/artplayer/src/player/volumeMix.js","../../packages/artplayer/src/player/currentTimeMix.js","../../packages/artplayer/src/player/durationMix.js","../../packages/artplayer/src/player/switchMix.js","../../packages/artplayer/src/player/playbackRateMix.js","../../packages/artplayer/src/player/aspectRatioMix.js","../../packages/artplayer/src/player/screenshotMix.js","../../packages/artplayer/node_modules/screenfull/dist/screenfull.js","../../packages/artplayer/src/player/fullscreenMix.js","../../packages/artplayer/src/player/fullscreenWebMix.js","../../packages/artplayer/src/player/pipMix.js","../../packages/artplayer/src/player/loadedMix.js","../../packages/artplayer/src/player/playedMix.js","../../packages/artplayer/src/player/playingMix.js","../../packages/artplayer/src/player/autoSizeMix.js","../../packages/artplayer/src/player/rectMix.js","../../packages/artplayer/src/player/flipMix.js","../../packages/artplayer/src/player/index.js","../../node_modules/_@babel_runtime@7.7.4@@babel/runtime/helpers/superPropBase.js","../../node_modules/_@babel_runtime@7.7.4@@babel/runtime/helpers/get.js","../../packages/artplayer/src/utils/component.js","../../node_modules/_@babel_runtime@7.7.4@@babel/runtime/helpers/defineProperty.js","../../packages/artplayer/src/control/fullscreen.js","../../packages/artplayer/src/control/fullscreenWeb.js","../../packages/artplayer/src/control/pip.js","../../packages/artplayer/src/control/playAndPause.js","../../packages/artplayer/src/control/progress.js","../../packages/artplayer/src/control/subtitle.js","../../packages/artplayer/src/control/time.js","../../packages/artplayer/src/control/volume.js","../../packages/artplayer/src/control/setting.js","../../packages/artplayer/src/control/thumbnails.js","../../packages/artplayer/src/control/screenshot.js","../../packages/artplayer/src/control/quality.js","../../packages/artplayer/src/control/index.js","../../packages/artplayer/src/contextmenu/playbackRate.js","../../packages/artplayer/src/contextmenu/aspectRatio.js","../../packages/artplayer/src/contextmenu/info.js","../../packages/artplayer/src/contextmenu/version.js","../../packages/artplayer/src/contextmenu/close.js","../../packages/artplayer/src/contextmenu/index.js","../../packages/artplayer/src/info.js","../../packages/artplayer/src/subtitle.js","../../packages/artplayer/src/events/clickInit.js","../../packages/artplayer/src/events/hoverInit.js","../../packages/artplayer/src/events/mousemoveInit.js","../../packages/artplayer/src/events/resizeInit.js","../../packages/artplayer/src/events/index.js","../../packages/artplayer/src/Line truncated
+1 -1
View File
@@ -5,4 +5,4 @@
* Released under the MIT License.
*/
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).Artplayer=e()}(this,(function(){"use strict";var t=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")};function e(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}var n=function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t};"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self&&self;function r(t,e){return t(e={exports:{}},e.exports),e.exports}var i=r((function(t){function e(t){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function n(r){return"function"==typeof Symbol&&"symbol"===e(Symbol.iterator)?t.exports=n=function(t){return e(t)}:t.exports=n=function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":e(t)},n(r)}t.exports=n}));var o=function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t};var a=function(t,e){return!e||"object"!==i(e)&&"function"!=typeof e?o(t):e},c=r((function(t){function e(n){return t.exports=e=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},e(n)}t.exports=e})),s=r((function(t){function e(n,r){return t.exports=e=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},e(n,r)}t.exports=e}));var u=function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&s(t,e)},l=r((function(t,e){t.exports=function(){function t(e){return(t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(e)}var e=Object.prototype.toString,n=function(n){if(void 0===n)return"undefined";if(null===n)return"null";var i=t(n);if("boolean"===i)return"boolean";if("string"===i)return"string";if("number"===i)return"number";if("symbol"===i)return"symbol";if("function"===i)return function(t){return"GeneratorFunction"===r(t)}(n)?"generatorfunction":"function";if(function(t){return Array.isArray?Array.isArray(t):t instanceof Array}(n))return"array";if(function(t){return!(!t.constructor||"function"!=typeof t.constructor.isBuffer)&&t.constructor.isBuffer(t)}(n))return"buffer";if(function(t){try{if("number"==typeof t.length&&"function"==typeof t.callee)return!0}catch(t){if(-1!==t.message.indexOf("callee"))return!0}return!1}(n))return"arguments";if(function(t){return t instanceof Date||"function"==typeof t.toDateString&&"function"==typeof t.getDate&&"function"==typeof t.setDate}(n))return"date";if(function(t){return t instanceof Error||"string"==typeof t.message&&t.constructor&&"number"==typeof t.constructor.stackTraceLimit}(n))return"error";if(function(t){return t instanceof RegExp||"string"==typeof t.flags&&"boolean"==typeof t.ignoreCase&&"boolean"==typeof t.multiline&&"boolean"==typeof t.global}(n))return"regexp";switch(r(n)){case"Symbol":return"symbol";case"Promise":return"promise";case"WeakMap":return"weakmap";case"WeakSet":return"weakset";case"Map":return"map";case"Set":return"set";case"Int8Array":return"int8array";case"Uint8Array":return"uint8array";case"Uint8ClampedArray":return"uint8clampedarray";case"Int16Array":return"int16array";case"Uint16Array":return"uint16array";case"Int32Array":return"int32array";case"Uint32Array":return"uint32array";case"Float32Array":return"float32array";case"Float64Array":return"float64array"}if(function(t){return"function"==typeof t.throw&&"function"==typeof t.return&&"function"==typeof t.next}(n))return"generator";switch(i=e.call(n)){case"[object Object]":return"object";case"[object Map Iterator]":return"mapiterator";case"[object Set Iterator]":return"setiterator";case"[object String Iterator]":return"stringiterator";case"[object Array Iterator]":return"arrayiterator"}return i.slice(8,-1).toLowerCase().replace(/\s/g,"")};function r(t){return t.constructor?t.constructor.name:null}function i(t,e){var r=2<arguments.length&&void 0!==arguments[2]?arguments[2]:["option"];return o(t,e,r),a(t,e,r),function(t,e,r){var c=n(e),s=n(t);if("object"===c){if("object"!==s)throw new Error("[Type Error]: '".concat(r.join("."),"' require 'object' type, but got '").concat(s,"'"));Object.keys(e).forEach((function(n){var c=t[n],s=e[n],u=r.slice();u.push(n),o(c,s,u),a(c,s,u),i(c,s,u)}))}if("array"===c){if("array"!==s)throw new Error("[Type Error]: '".concat(r.join("."),"' require 'array' type, but got '").concat(s,"'"Line truncated
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).Artplayer=e()}(this,(function(){"use strict";var t=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")};function e(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}var n=function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t};"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self&&self;function r(t,e){return t(e={exports:{}},e.exports),e.exports}var i=r((function(t){function e(t){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function n(r){return"function"==typeof Symbol&&"symbol"===e(Symbol.iterator)?t.exports=n=function(t){return e(t)}:t.exports=n=function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":e(t)},n(r)}t.exports=n}));var o=function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t};var a=function(t,e){return!e||"object"!==i(e)&&"function"!=typeof e?o(t):e},c=r((function(t){function e(n){return t.exports=e=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},e(n)}t.exports=e})),s=r((function(t){function e(n,r){return t.exports=e=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},e(n,r)}t.exports=e}));var u=function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&s(t,e)},l=r((function(t,e){t.exports=function(){function t(e){return(t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(e)}var e=Object.prototype.toString,n=function(n){if(void 0===n)return"undefined";if(null===n)return"null";var i=t(n);if("boolean"===i)return"boolean";if("string"===i)return"string";if("number"===i)return"number";if("symbol"===i)return"symbol";if("function"===i)return function(t){return"GeneratorFunction"===r(t)}(n)?"generatorfunction":"function";if(function(t){return Array.isArray?Array.isArray(t):t instanceof Array}(n))return"array";if(function(t){return!(!t.constructor||"function"!=typeof t.constructor.isBuffer)&&t.constructor.isBuffer(t)}(n))return"buffer";if(function(t){try{if("number"==typeof t.length&&"function"==typeof t.callee)return!0}catch(t){if(-1!==t.message.indexOf("callee"))return!0}return!1}(n))return"arguments";if(function(t){return t instanceof Date||"function"==typeof t.toDateString&&"function"==typeof t.getDate&&"function"==typeof t.setDate}(n))return"date";if(function(t){return t instanceof Error||"string"==typeof t.message&&t.constructor&&"number"==typeof t.constructor.stackTraceLimit}(n))return"error";if(function(t){return t instanceof RegExp||"string"==typeof t.flags&&"boolean"==typeof t.ignoreCase&&"boolean"==typeof t.multiline&&"boolean"==typeof t.global}(n))return"regexp";switch(r(n)){case"Symbol":return"symbol";case"Promise":return"promise";case"WeakMap":return"weakmap";case"WeakSet":return"weakset";case"Map":return"map";case"Set":return"set";case"Int8Array":return"int8array";case"Uint8Array":return"uint8array";case"Uint8ClampedArray":return"uint8clampedarray";case"Int16Array":return"int16array";case"Uint16Array":return"uint16array";case"Int32Array":return"int32array";case"Uint32Array":return"uint32array";case"Float32Array":return"float32array";case"Float64Array":return"float64array"}if(function(t){return"function"==typeof t.throw&&"function"==typeof t.return&&"function"==typeof t.next}(n))return"generator";switch(i=e.call(n)){case"[object Object]":return"object";case"[object Map Iterator]":return"mapiterator";case"[object Set Iterator]":return"setiterator";case"[object String Iterator]":return"stringiterator";case"[object Array Iterator]":return"arrayiterator"}return i.slice(8,-1).toLowerCase().replace(/\s/g,"")};function r(t){return t.constructor?t.constructor.name:null}function i(t,e){var r=2<arguments.length&&void 0!==arguments[2]?arguments[2]:["option"];return o(t,e,r),a(t,e,r),function(t,e,r){var c=n(e),s=n(t);if("object"===c){if("object"!==s)throw new Error("[Type Error]: '".concat(r.join("."),"' require 'object' type, but got '").concat(s,"'"));Object.keys(e).forEach((function(n){var c=t[n],s=e[n],u=r.slice();u.push(n),o(c,s,u),a(c,s,u),i(c,s,u)}))}if("array"===c){if("array"!==s)throw new Error("[Type Error]: '".concat(r.join("."),"' require 'array' type, but got '").concat(s,"'"Line truncated
+5 -3
View File
@@ -1,4 +1,4 @@
import { setStyle } from '../utils';
import { setStyles } from '../utils';
import Component from '../utils/component';
import playbackRate from './playbackRate';
import aspectRatio from './aspectRatio';
@@ -82,8 +82,10 @@ export default class Contextmenu extends Component {
menuTop = cHeight - mHeight;
}
setStyle($contextmenu, 'left', `${menuLeft}px`);
setStyle($contextmenu, 'top', `${menuTop}px`);
setStyles($contextmenu, {
top: `${menuTop}px`,
left: `${menuLeft}px`,
});
});
proxy($player, 'click', event => {
+5 -11
View File
@@ -1,8 +1,9 @@
import { append, tooltip, setStyle } from '../utils';
import { append, tooltip } from '../utils';
export default function fullscreen(option) {
return art => ({
...option,
tooltip: art.i18n.get('Fullscreen'),
mounted: $control => {
const {
events: { proxy },
@@ -11,21 +12,14 @@ export default function fullscreen(option) {
player,
} = art;
const $fullscreen = append($control, icons.fullscreen);
tooltip($fullscreen, i18n.get('Fullscreen'));
append($control, icons.fullscreen);
proxy($control, 'click', () => {
player.fullscreenToggle = true;
});
art.on('fullscreenEnabled', () => {
setStyle($fullscreen, 'opacity', '0.8');
tooltip($fullscreen, i18n.get('Exit fullscreen'));
});
art.on('fullscreenExit', () => {
setStyle($fullscreen, 'opacity', '1');
tooltip($fullscreen, i18n.get('Fullscreen'));
art.on('fullscreenChange', value => {
tooltip($control, i18n.get(value ? 'Exit fullscreen' : 'Fullscreen'));
});
},
});
@@ -1,8 +1,9 @@
import { append, tooltip, setStyle } from '../utils';
import { append, tooltip } from '../utils';
export default function fullscreenWeb(option) {
return art => ({
...option,
tooltip: art.i18n.get('Web fullscreen'),
mounted: $control => {
const {
events: { proxy },
@@ -11,21 +12,14 @@ export default function fullscreenWeb(option) {
player,
} = art;
const $fullscreenWeb = append($control, icons.fullscreenWeb);
tooltip($fullscreenWeb, i18n.get('Web fullscreen'));
append($control, icons.fullscreenWeb);
proxy($control, 'click', () => {
player.fullscreenWebToggle = true;
});
art.on('fullscreenWebEnabled', () => {
setStyle($fullscreenWeb, 'opacity', '0.8');
tooltip($fullscreenWeb, i18n.get('Exit web fullscreen'));
});
art.on('fullscreenWebExit', () => {
setStyle($fullscreenWeb, 'opacity', '1');
tooltip($fullscreenWeb, i18n.get('Web fullscreen'));
art.on('fullscreenWebChange', value => {
tooltip($control, i18n.get(value ? 'Exit web fullscreen' : 'Web fullscreen'));
});
},
});
+4 -1
View File
@@ -136,7 +136,10 @@ export default class Control extends Component {
add(getOption, callback) {
const option = typeof getOption === 'function' ? getOption(this.art) : getOption;
errorHandle(option.position, 'Controls option.position can not be empty');
errorHandle(
['top', 'left', 'right'].includes(option.position),
`Control option.position must one of 'top', 'left', 'right'`,
);
const { $progress, $controlsLeft, $controlsRight } = this.art.template;
switch (option.position) {
+9 -3
View File
@@ -3,6 +3,7 @@ import { append, tooltip } from '../utils';
export default function pip(option) {
return art => ({
...option,
tooltip: art.i18n.get('Mini player'),
mounted: $control => {
const {
events: { proxy },
@@ -10,10 +11,15 @@ export default function pip(option) {
i18n,
player,
} = art;
const $pip = append($control, icons.pip);
tooltip($pip, i18n.get('Mini player'));
append($control, icons.pip);
proxy($control, 'click', () => {
player.pip = true;
player.pipToggle = true;
});
art.on('pipChange', value => {
tooltip($control, i18n.get(value ? 'Exit mini player' : 'Mini player'));
});
},
});
+4 -5
View File
@@ -1,19 +1,18 @@
import { append, tooltip } from '../utils';
import { append } from '../utils';
export default function screenshot(option) {
return art => ({
...option,
tooltip: art.i18n.get('Screenshot'),
mounted: $control => {
const {
events: { proxy },
icons,
i18n,
player,
} = art;
const $screenshot = append($control, icons.screenshot);
tooltip($screenshot, i18n.get('Screenshot'));
proxy($screenshot, 'click', () => {
append($control, icons.screenshot);
proxy($control, 'click', () => {
player.screenshot();
});
},
+5 -7
View File
@@ -1,8 +1,9 @@
import { append, tooltip, setStyle } from '../utils';
import { append, tooltip } from '../utils';
export default function setting(option) {
return art => ({
...option,
tooltip: art.i18n.get('Show setting'),
mounted: $control => {
const {
events: { proxy },
@@ -11,8 +12,7 @@ export default function setting(option) {
setting,
} = art;
const $setting = append($control, icons.setting);
tooltip($setting, i18n.get('Show setting'));
append($control, icons.setting);
proxy($control, 'click', () => {
setting.toggle();
@@ -20,11 +20,9 @@ export default function setting(option) {
art.on('setting:toggle', value => {
if (value) {
setStyle($setting, 'opacity', '0.8');
tooltip($setting, i18n.get('Hide setting'));
tooltip($control, i18n.get('Hide setting'));
} else {
setStyle($setting, 'opacity', '1');
tooltip($setting, i18n.get('Show setting'));
tooltip($control, i18n.get('Show setting'));
}
});
},
+5 -11
View File
@@ -1,8 +1,9 @@
import { append, tooltip, setStyle } from '../utils';
import { append, tooltip } from '../utils';
export default function subtitle(option) {
return art => ({
...option,
tooltip: art.i18n.get('Hide subtitle'),
mounted: $control => {
const {
events: { proxy },
@@ -11,21 +12,14 @@ export default function subtitle(option) {
subtitle,
} = art;
const $subtitle = append($control, icons.subtitle);
tooltip($subtitle, i18n.get('Hide subtitle'));
append($control, icons.subtitle);
proxy($control, 'click', () => {
subtitle.toggle();
subtitle.toggle = true;
});
art.on('subtitle:toggle', value => {
if (value) {
setStyle($subtitle, 'opacity', '1');
tooltip($subtitle, i18n.get('Hide subtitle'));
} else {
setStyle($subtitle, 'opacity', '0.8');
tooltip($subtitle, i18n.get('Show subtitle'));
}
tooltip($control, i18n.get(value ? 'Hide subtitle' : 'Show subtitle'));
});
},
});
+1
View File
@@ -31,6 +31,7 @@
"Web fullscreen": "网页全屏",
"Exit web fullscreen": "退出网页全屏",
"Mini player": "迷你播放器",
"Exit mini player": "退出迷你播放器",
"Does not support fullscreen": "不支持全屏",
"Local Subtitle": "本地字幕",
"Local Video": "本地视频",
+1
View File
@@ -31,6 +31,7 @@
"Web fullscreen": "網頁全屏",
"Exit web fullscreen": "退出網頁全屏",
"Mini player": "迷你播放器",
"Exit mini player": "退出迷你播放器",
"Does not support fullscreen": "不支持全屏",
"Local Subtitle": "本地字幕",
"Local Video": "本地視頻",
+2 -4
View File
@@ -40,13 +40,11 @@ export default class Mobile {
const typeName = option.type || getExt(option.url);
const typeCallback = option.customType[typeName];
if (typeName && typeCallback) {
art.emit('beforeCustomType', typeName);
typeCallback($video, option.url, art);
art.emit('afterCustomType', typeName);
art.emit('customType', typeName);
} else {
art.emit('beforeAttachUrl', option.url);
$video.src = option.url;
art.emit('afterAttachUrl', $video.src);
art.emit('urlChange', $video.src);
}
}
}
+1 -1
View File
@@ -3,7 +3,7 @@ import { addClass, removeClass } from './utils';
export default class Notice {
constructor(art) {
this.art = art;
this.time = 1000;
this.time = 2000;
this.timer = null;
}
@@ -1,49 +0,0 @@
import { getExt, sleep, errorHandle, def } from '../utils';
export default function attachUrlMix(art, player) {
const {
option: { type, customType },
template: { $video },
} = art;
def(player, 'url', {
get() {
return $video.src;
},
});
def(player, 'attachUrl', {
value: url =>
sleep().then(() => {
function attachUrl(videoUrl) {
const typeName = type || getExt(videoUrl);
const typeCallback = customType[typeName];
if (typeName && typeCallback) {
art.loading.show = true;
art.emit('beforeCustomType', typeName);
typeCallback.call(art, $video, videoUrl, art);
art.emit('afterCustomType', typeName);
} else {
art.emit('beforeAttachUrl', videoUrl);
$video.src = videoUrl;
art.emit('afterAttachUrl', videoUrl);
}
return Promise.resolve(videoUrl);
}
if (typeof url === 'function') {
const result = url.call(art);
errorHandle(
typeof result.then === 'function',
'If url is a function, it needs to return a promise.',
);
return result.then(videoUrl => {
art.loading.show = true;
return attachUrl(videoUrl);
});
}
return attachUrl(url);
}),
});
}
+9 -4
View File
@@ -3,9 +3,10 @@ import { clamp } from '../utils';
export default function attrInit(art, player) {
const {
option,
storage,
template: { $video },
} = art;
Object.keys(option.moreVideoAttr).forEach(key => {
$video[key] = option.moreVideoAttr[key];
});
@@ -13,11 +14,16 @@ export default function attrInit(art, player) {
if (option.muted) {
$video.muted = option.muted;
}
if (option.volume) {
$video.volume = clamp(option.volume, 0, 1);
}
const volume = storage.get('volume');
if (volume) {
$video.volume = clamp(volume, 0, 1);
}
if (option.poster) {
$video.poster = option.poster;
}
@@ -27,6 +33,5 @@ export default function attrInit(art, player) {
}
$video.controls = false;
player.attachUrl(option.url);
player.url = option.url;
}
+1 -1
View File
@@ -63,7 +63,7 @@ export default function eventInit(art, player) {
if (reconnectTime < maxReconnectTime) {
sleep(1000).then(() => {
reconnectTime += 1;
player.attachUrl(option.url);
player.url = option.url;
notice.show = `${i18n.get('Reconnect')}: ${reconnectTime}`;
});
} else {
+5 -42
View File
@@ -2,59 +2,28 @@ import screenfull from 'screenfull';
import { addClass, removeClass, def } from '../utils';
export default function fullscreenMix(art, player) {
const {
i18n,
notice,
events: { destroyEvents },
template: { $player },
} = art;
const screenfullChange = () => {
art.emit('fullscreenChange', screenfull.isFullscreen);
};
const screenfullError = () => {
notice.show = i18n.get('Does not support fullscreen');
};
if (player.fullscreenIsEnabled) {
screenfull.on('change', screenfullChange);
screenfull.on('error', screenfullError);
destroyEvents.push(() => {
screenfull.off('change', screenfullChange);
screenfull.off('error', screenfullError);
});
}
const { $player } = art.template;
def(player, 'fullscreen', {
get() {
return screenfull.isFullscreen;
},
set(value) {
if (!player.fullscreenIsEnabled) {
screenfullError();
return;
if (player.fullscreenWeb) {
player.fullscreenWeb = false;
}
if (value) {
if (player.fullscreenWeb) {
player.fullscreenWeb = false;
}
screenfull.request($player).then(() => {
addClass($player, 'art-fullscreen');
player.aspectRatioReset = true;
art.emit('fullscreenEnabled');
art.emit('fullscreenChange', true);
});
} else {
if (player.fullscreenWeb) {
player.fullscreenWeb = false;
}
screenfull.exit().then(() => {
removeClass($player, 'art-fullscreen');
player.aspectRatioReset = true;
art.emit('fullscreenExit');
art.emit('fullscreenChange', false);
});
}
},
@@ -67,10 +36,4 @@ export default function fullscreenMix(art, player) {
}
},
});
def(player, 'fullscreenIsEnabled', {
get() {
return screenfull.isEnabled;
},
});
}
@@ -1,29 +1,25 @@
import { addClass, removeClass, hasClass, def } from '../utils';
export default function fullscreenWebMix(art, player) {
const {
template: { $player },
} = art;
const { $player } = art.template;
def(player, 'fullscreenWeb', {
get() {
return hasClass($player, 'art-web-fullscreen');
},
set(value) {
if (player.fullscreen) {
player.fullscreen = false;
}
if (value) {
if (player.fullscreen) {
player.fullscreen = false;
}
addClass($player, 'art-web-fullscreen');
player.aspectRatioReset = true;
art.emit('fullscreenWebEnabled');
art.emit('fullscreenWebChange', true);
} else {
if (player.fullscreen) {
player.fullscreen = false;
}
removeClass($player, 'art-web-fullscreen');
player.aspectRatioReset = true;
art.emit('fullscreenWebExit');
art.emit('fullscreenWebChange', false);
}
},
});
+2 -2
View File
@@ -1,4 +1,4 @@
import attachUrlMix from './attachUrlMix';
import urlMix from './urlMix';
import attrInit from './attrInit';
import eventInit from './eventInit';
import playMix from './playMix';
@@ -25,7 +25,7 @@ import { proxyPropertys } from '../utils';
export default class Player {
constructor(art) {
attachUrlMix(art, this);
urlMix(art, this);
eventInit(art, this);
attrInit(art, this);
playMix(art, this);
+9 -17
View File
@@ -29,17 +29,11 @@ function nativePip(art, player) {
});
proxy($video, 'enterpictureinpicture', () => {
art.emit('pipEnabled');
art.emit('pipChange', true);
});
proxy($video, 'leavepictureinpicture', () => {
art.emit('pipExit');
});
art.on('destroy', () => {
if (player.pip) {
player.pip = false;
}
art.emit('pipChange', false);
});
}
@@ -55,10 +49,10 @@ function webkitPip(art, player) {
set(value) {
if (value) {
$video.webkitSetPresentationMode('picture-in-picture');
art.emit('pipEnabled');
art.emit('pipChange', true);
} else {
$video.webkitSetPresentationMode('inline');
art.emit('pipExit');
art.emit('pipChange', false);
}
},
});
@@ -108,7 +102,7 @@ function customPip(art, player) {
append($pipTitle, option.title || i18n.get('Mini player'));
const property = {
def(player, 'pip', {
get() {
return hasClass($player, 'art-pip');
},
@@ -124,8 +118,8 @@ function customPip(art, player) {
player.fullscreenWeb = false;
player.aspectRatio = false;
player.playbackRate = false;
art.emit('pipEnabled');
} else if (player.pip) {
art.emit('pipChange', true);
} else {
$player.style.cssText = cacheStyle;
removeClass($player, 'art-pip');
setStyle($player, 'top', null);
@@ -135,12 +129,10 @@ function customPip(art, player) {
player.aspectRatio = false;
player.playbackRate = false;
player.autoSize = true;
art.emit('pipExit');
art.emit('pipChange', false);
}
},
};
def(player, 'pip', property);
});
}
export default function pipMix(art, player) {
+14 -16
View File
@@ -1,26 +1,24 @@
import { def } from '../utils';
export default function switchMix(art, player) {
const { i18n, notice, option } = art;
const { i18n, notice } = art;
function switchUrl(url, name, currentTime) {
if (url === player.url) return Promise.resolve(url);
if (url === player.url) return;
URL.revokeObjectURL(player.url);
return player.attachUrl(url).then(() => {
option.url = url;
player.playbackRate = false;
player.aspectRatio = false;
art.once('video:canplay', () => {
player.currentTime = currentTime;
});
if (player.playing) {
player.play = true;
}
if (name) {
notice.show = `${i18n.get('Switch video')}: ${name}`;
}
art.emit('switch', url);
player.url = url;
player.playbackRate = false;
player.aspectRatio = false;
art.once('video:canplay', () => {
player.currentTime = currentTime;
});
if (player.playing) {
player.play = true;
}
if (name) {
notice.show = `${i18n.get('Switch video')}: ${name}`;
}
art.emit('switch', url);
}
def(player, 'switchQuality', {
+27
View File
@@ -0,0 +1,27 @@
import { getExt, def } from '../utils';
export default function urlMix(art, player) {
const {
option: { type, customType },
template: { $video },
} = art;
def(player, 'url', {
get() {
return $video.src;
},
set(url) {
const typeName = type || getExt(url);
const typeCallback = customType[typeName];
if (typeName && typeCallback) {
art.loading.show = true;
typeCallback.call(art, $video, url, art);
art.emit('customType', typeName);
} else {
$video.src = url;
art.option.url = url;
art.emit('urlChange', url);
}
},
});
}
-22
View File
@@ -1,22 +0,0 @@
import { debounce } from '../utils';
export default function autoPip(art) {
const { events, player, template } = art;
const scrollDebounce = debounce(() => {
const { top, height } = template.$player.getBoundingClientRect();
if (top + height <= 0 && !player.pip) {
player.pip = true;
art.emit('autoPip', true);
} else if (player.pip) {
player.pip = false;
art.emit('autoPip', false);
}
}, 300);
events.proxy(window, 'scroll', scrollDebounce);
return {
name: 'autoPip',
};
}
-5
View File
@@ -4,7 +4,6 @@ import localVideo from './localVideo';
import localSubtitle from './localSubtitle';
import miniProgressBar from './miniProgressBar';
import networkMonitor from './networkMonitor';
import autoPip from './autoPip';
export default class Plugins {
constructor(art) {
@@ -33,10 +32,6 @@ export default class Plugins {
this.add(networkMonitor);
}
if (option.autoPip) {
this.add(autoPip);
}
art.option.plugins.forEach(plugin => {
this.add(plugin);
});
@@ -3,6 +3,7 @@ import { query } from '../utils';
function settingMix(art) {
const {
i18n,
plugins,
subtitle,
events: { proxy },
} = art;
@@ -25,7 +26,7 @@ function settingMix(art) {
proxy($range, 'change', () => {
const { value } = $range;
$value.innerText = value;
art.plugins.subtitleOffset.offset(Number(value));
plugins.subtitleOffset.offset(Number(value));
});
art.on('subtitle:switch', () => {
+1 -1
View File
@@ -9,7 +9,7 @@ function validElement(value, type, paths) {
export default {
container: validElement,
url: 'string|function',
url: 'string',
poster: 'string',
title: 'string',
theme: 'string',
+1 -6
View File
@@ -1,11 +1,6 @@
export default class Storage {
constructor(art) {
constructor() {
this.name = 'artplayer_settings';
const volume = this.get('volume');
if (volume) {
art.option.volume = volume;
}
}
get(key) {
+2 -2
View File
@@ -136,8 +136,8 @@ export default class Template {
this.$video = this.query('.art-video');
}
destroy(removeHtml) {
if (removeHtml) {
destroy(remove) {
if (remove) {
this.$container.innerHTML = '';
} else {
addClass(this.$player, 'art-destroy');
+4 -2
View File
@@ -23,8 +23,10 @@ export default class Component {
this.art.emit(`${this.name}:toggle`, value);
}
toggle() {
this.show = !this.show;
set toggle(value) {
if (value) {
this.show = !this.show;
}
}
add(getOption, callback) {
+1 -2
View File
@@ -9,8 +9,7 @@ export default class Whitelist {
this.state =
!this.isMobile ||
whitelist.some(item => {
const type = kindOf(item);
switch (type) {
switch (kindOf(item)) {
case 'string':
return this.ua.indexOf(item) > -1;
case 'function':
+1 -1
View File
@@ -8,7 +8,7 @@ export default class Artplayer {
/**
* Video url or a function that returns a promise value of url (required)
*/
url: string | Function;
url: string;
/**
* Video cover url
-7
View File
@@ -22,11 +22,4 @@ describe('Option', function() {
});
}).to.throw(/option.container require \'string\' or \'Element\' type/);
});
it('The url can return a promise', function() {
new Artplayer({
container: '.sample1',
url: () => Promise.resolve(url),
});
});
});