mirror of
https://github.com/zhw2590582/ArtPlayer.git
synced 2026-10-23 05:41:20 -08:00
压缩字符
This commit is contained in:
1 parent
7ff61b4660
commit
0cf455ced3
27 files changed
+171
-239
No files matched your search
Vendored
+1
-1
@@ -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})),u=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 s=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&&u(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),u=n(t);if("object"===c){if("object"!==u)throw new Error("[Type Error]: '".concat(r.join("."),"' require 'object' type, but got '").concat(u,"'"));Object.keys(e).forEach((function(n){var c=t[n],u=e[n],s=r.slice();s.push(n),o(c,u,s),a(c,u,s),i(c,u,s)}))}if("array"===c){if("array"!==u)throw new Error("[Type Error]: '".concat(r.join("."),"' require 'array' type, but got '").concat(u,"'"Line truncated
|
||||
@@ -1,5 +1,64 @@
|
||||
import video from './video';
|
||||
|
||||
export default {
|
||||
video,
|
||||
propertys: [
|
||||
'audioTracks',
|
||||
'autoplay',
|
||||
'buffered',
|
||||
'controller',
|
||||
'controls',
|
||||
'crossOrigin',
|
||||
'currentSrc',
|
||||
'currentTime',
|
||||
'defaultMuted',
|
||||
'defaultPlaybackRate',
|
||||
'duration',
|
||||
'ended',
|
||||
'error',
|
||||
'loop',
|
||||
'mediaGroup',
|
||||
'muted',
|
||||
'networkState',
|
||||
'paused',
|
||||
'playbackRate',
|
||||
'played',
|
||||
'preload',
|
||||
'readyState',
|
||||
'seekable',
|
||||
'seeking',
|
||||
'src',
|
||||
'startDate',
|
||||
'textTracks',
|
||||
'videoTracks',
|
||||
'volume',
|
||||
],
|
||||
methods: [
|
||||
'addTextTrack',
|
||||
'canPlayType',
|
||||
'load',
|
||||
'play',
|
||||
'pause'
|
||||
],
|
||||
events: [
|
||||
'abort',
|
||||
'canplay',
|
||||
'canplaythrough',
|
||||
'durationchange',
|
||||
'emptied',
|
||||
'ended',
|
||||
'error',
|
||||
'loadeddata',
|
||||
'loadedmetadata',
|
||||
'loadstart',
|
||||
'pause',
|
||||
'play',
|
||||
'playing',
|
||||
'progress',
|
||||
'ratechange',
|
||||
'seeked',
|
||||
'seeking',
|
||||
'stalled',
|
||||
'suspend',
|
||||
'timeupdate',
|
||||
'volumechange',
|
||||
'waiting',
|
||||
],
|
||||
};
|
||||
@@ -1,64 +0,0 @@
|
||||
export default {
|
||||
propertys: [
|
||||
'audioTracks',
|
||||
'autoplay',
|
||||
'buffered',
|
||||
'controller',
|
||||
'controls',
|
||||
'crossOrigin',
|
||||
'currentSrc',
|
||||
'currentTime',
|
||||
'defaultMuted',
|
||||
'defaultPlaybackRate',
|
||||
'duration',
|
||||
'ended',
|
||||
'error',
|
||||
'loop',
|
||||
'mediaGroup',
|
||||
'muted',
|
||||
'networkState',
|
||||
'paused',
|
||||
'playbackRate',
|
||||
'played',
|
||||
'preload',
|
||||
'readyState',
|
||||
'seekable',
|
||||
'seeking',
|
||||
'src',
|
||||
'startDate',
|
||||
'textTracks',
|
||||
'videoTracks',
|
||||
'volume',
|
||||
],
|
||||
methods: [
|
||||
'addTextTrack',
|
||||
'canPlayType',
|
||||
'load',
|
||||
'play',
|
||||
'pause'
|
||||
],
|
||||
events: [
|
||||
'abort',
|
||||
'canplay',
|
||||
'canplaythrough',
|
||||
'durationchange',
|
||||
'emptied',
|
||||
'ended',
|
||||
'error',
|
||||
'loadeddata',
|
||||
'loadedmetadata',
|
||||
'loadstart',
|
||||
'pause',
|
||||
'play',
|
||||
'playing',
|
||||
'progress',
|
||||
'ratechange',
|
||||
'seeked',
|
||||
'seeking',
|
||||
'stalled',
|
||||
'suspend',
|
||||
'timeupdate',
|
||||
'volumechange',
|
||||
'waiting',
|
||||
],
|
||||
};
|
||||
@@ -28,7 +28,7 @@ export default function quality(option) {
|
||||
const { url, name } = quality[index];
|
||||
if (url && name && playIndex !== index) {
|
||||
player.switchQuality(url, name);
|
||||
$qualityName.innerHTML = name;
|
||||
$qualityName.innerText = name;
|
||||
playIndex = index;
|
||||
}
|
||||
});
|
||||
|
||||
@@ -15,15 +15,11 @@ export default function setting(option) {
|
||||
append($control, icons.setting);
|
||||
|
||||
proxy($control, 'click', () => {
|
||||
setting.toggle();
|
||||
setting.toggle = true;
|
||||
});
|
||||
|
||||
art.on('setting:toggle', value => {
|
||||
if (value) {
|
||||
tooltip($control, i18n.get('Hide setting'));
|
||||
} else {
|
||||
tooltip($control, i18n.get('Show setting'));
|
||||
}
|
||||
tooltip($control, i18n.get(value ? 'Hide setting' : 'Show setting'));
|
||||
});
|
||||
},
|
||||
});
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
export default function clickInit(art, events) {
|
||||
const {
|
||||
template: { $player },
|
||||
} = art;
|
||||
const { $player } = art.template;
|
||||
events.proxy(document, ['click', 'contextmenu'], event => {
|
||||
if (event.composedPath().indexOf($player) > -1) {
|
||||
art.isFocus = true;
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
import { addClass, removeClass } from '../utils';
|
||||
|
||||
export default function hoverInit(art, events) {
|
||||
const {
|
||||
template: { $player },
|
||||
} = art;
|
||||
const { $player } = art.template;
|
||||
events.hover(
|
||||
$player,
|
||||
() => {
|
||||
|
||||
@@ -4,12 +4,13 @@ export default function mousemoveInitInit(art, events) {
|
||||
const {
|
||||
template: { $player, $video },
|
||||
player,
|
||||
controls,
|
||||
} = art;
|
||||
|
||||
const autoHide = debounce(() => {
|
||||
addClass($player, 'art-hide-cursor');
|
||||
removeClass($player, 'art-hover');
|
||||
art.controls.show = false;
|
||||
controls.show = false;
|
||||
}, 3000);
|
||||
|
||||
art.on('hoverleave', () => {
|
||||
@@ -21,8 +22,8 @@ export default function mousemoveInitInit(art, events) {
|
||||
events.proxy($player, 'mousemove', event => {
|
||||
autoHide.clearTimeout();
|
||||
removeClass($player, 'art-hide-cursor');
|
||||
art.controls.show = true;
|
||||
if (!art.player.pip && player.playing && event.target === $video) {
|
||||
controls.show = true;
|
||||
if (!player.pip && player.playing && event.target === $video) {
|
||||
autoHide();
|
||||
}
|
||||
art.emit('mousemove');
|
||||
|
||||
@@ -19,13 +19,13 @@ export default function resizeInit(art, events) {
|
||||
playerWidth = player.width;
|
||||
playerHeight = player.height;
|
||||
if (option.autoSize) {
|
||||
if (!art.player.fullscreen && !art.player.fullscreenWeb && !art.player.pip) {
|
||||
art.player.autoSize = true;
|
||||
if (!player.fullscreen && !player.fullscreenWeb && !player.pip) {
|
||||
player.autoSize = true;
|
||||
} else {
|
||||
art.player.autoSize = false;
|
||||
player.autoSize = false;
|
||||
}
|
||||
}
|
||||
art.player.aspectRatioReset = true;
|
||||
player.aspectRatioReset = true;
|
||||
art.emit('resize', {
|
||||
width: player.width,
|
||||
height: player.height,
|
||||
|
||||
@@ -32,7 +32,6 @@
|
||||
"Exit web fullscreen": "退出网页全屏",
|
||||
"Mini player": "迷你播放器",
|
||||
"Exit mini player": "退出迷你播放器",
|
||||
"Does not support fullscreen": "不支持全屏",
|
||||
"Local Subtitle": "本地字幕",
|
||||
"Local Video": "本地视频",
|
||||
"Subtitle offset time": "字幕偏移时间",
|
||||
|
||||
@@ -32,7 +32,6 @@
|
||||
"Exit web fullscreen": "退出網頁全屏",
|
||||
"Mini player": "迷你播放器",
|
||||
"Exit mini player": "退出迷你播放器",
|
||||
"Does not support fullscreen": "不支持全屏",
|
||||
"Local Subtitle": "本地字幕",
|
||||
"Local Video": "本地視頻",
|
||||
"Subtitle offset time": "字幕偏移時間",
|
||||
|
||||
@@ -14,23 +14,21 @@ import pip from './pip.svg';
|
||||
|
||||
export default class Icons {
|
||||
constructor(art) {
|
||||
const icons = Object.assign(
|
||||
{
|
||||
loading,
|
||||
state,
|
||||
play,
|
||||
pause,
|
||||
volume,
|
||||
volumeClose,
|
||||
subtitle,
|
||||
screenshot,
|
||||
setting,
|
||||
fullscreen,
|
||||
fullscreenWeb,
|
||||
pip,
|
||||
},
|
||||
art.option.icons,
|
||||
);
|
||||
const icons = {
|
||||
loading,
|
||||
state,
|
||||
play,
|
||||
pause,
|
||||
volume,
|
||||
volumeClose,
|
||||
subtitle,
|
||||
screenshot,
|
||||
setting,
|
||||
fullscreen,
|
||||
fullscreenWeb,
|
||||
pip,
|
||||
...art.option.icons,
|
||||
};
|
||||
|
||||
Object.keys(icons).forEach(key => {
|
||||
const icon = document.createElement('i');
|
||||
|
||||
@@ -9,7 +9,7 @@ export default class Mobile {
|
||||
template: { $video },
|
||||
} = art;
|
||||
|
||||
config.video.events.forEach(eventName => {
|
||||
config.events.forEach(eventName => {
|
||||
proxy($video, eventName, event => {
|
||||
art.emit(`video:${event.type}`, event);
|
||||
});
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
import { setStyle, addClass, removeClass, hasClass, def } from '../utils';
|
||||
|
||||
export default function resizeMix(art, player) {
|
||||
const {
|
||||
template: { $container, $player, $video },
|
||||
} = art;
|
||||
const { $container, $player, $video } = art.template;
|
||||
|
||||
def(player, 'autoSize', {
|
||||
get() {
|
||||
|
||||
@@ -17,7 +17,7 @@ export default function eventInit(art, player) {
|
||||
player.toggle = true;
|
||||
});
|
||||
|
||||
config.video.events.forEach(eventName => {
|
||||
config.events.forEach(eventName => {
|
||||
proxy($video, eventName, event => {
|
||||
art.emit(`video:${event.type}`, event);
|
||||
});
|
||||
@@ -72,7 +72,7 @@ export default function eventInit(art, player) {
|
||||
addClass($player, 'art-error');
|
||||
sleep(1000).then(() => {
|
||||
notice.show = i18n.get('Video load failed');
|
||||
art.destroy();
|
||||
art.destroy(false);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
@@ -1,18 +1,19 @@
|
||||
import { errorHandle, def } from '../utils';
|
||||
|
||||
export default function flipMix(art, player) {
|
||||
const { $player } = art.template;
|
||||
def(player, 'flip', {
|
||||
get() {
|
||||
return art.template.$player.dataset.flip;
|
||||
return $player.dataset.flip;
|
||||
},
|
||||
set(flip) {
|
||||
if (flip) {
|
||||
const flipList = ['normal', 'horizontal', 'vertical'];
|
||||
errorHandle(flipList.includes(flip), `'flip' only accept ${flipList.toString()} as parameters`);
|
||||
art.template.$player.dataset.flip = flip;
|
||||
$player.dataset.flip = flip;
|
||||
art.emit('flipChange', flip);
|
||||
} else {
|
||||
delete art.template.$player.dataset.flip;
|
||||
delete $player.dataset.flip;
|
||||
art.emit('flipRemove');
|
||||
}
|
||||
},
|
||||
|
||||
@@ -2,8 +2,9 @@ import { def } from '../utils';
|
||||
|
||||
export default function seekMix(art, player) {
|
||||
const { $video } = art.template;
|
||||
|
||||
def(player, 'loaded', {
|
||||
get: () => ($video.buffered.length ? $video.buffered.end($video.buffered.length - 1) / $video.duration : 0),
|
||||
get: () => player.loadedTime / $video.duration,
|
||||
});
|
||||
|
||||
def(player, 'loadedTime', {
|
||||
|
||||
@@ -119,7 +119,7 @@ function customPip(art, player) {
|
||||
player.aspectRatio = false;
|
||||
player.playbackRate = false;
|
||||
art.emit('pipChange', true);
|
||||
} else {
|
||||
} else if (player.pip) {
|
||||
$player.style.cssText = cacheStyle;
|
||||
removeClass($player, 'art-pip');
|
||||
setStyle($player, 'top', null);
|
||||
|
||||
@@ -4,6 +4,7 @@ export default function playMix(art, player) {
|
||||
const {
|
||||
i18n,
|
||||
notice,
|
||||
constructor: { instances },
|
||||
option: { mutex },
|
||||
template: { $video },
|
||||
} = art;
|
||||
@@ -12,7 +13,7 @@ export default function playMix(art, player) {
|
||||
set(value) {
|
||||
if (value) {
|
||||
const promise = $video.play();
|
||||
if (promise !== undefined) {
|
||||
if (promise.then) {
|
||||
promise.then().catch(err => {
|
||||
notice.show = err;
|
||||
throw err;
|
||||
@@ -20,7 +21,7 @@ export default function playMix(art, player) {
|
||||
}
|
||||
|
||||
if (mutex) {
|
||||
art.constructor.instances
|
||||
instances
|
||||
.filter(item => item !== art)
|
||||
.forEach(item => {
|
||||
item.player.pause = true;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { def } from '../utils';
|
||||
|
||||
export default function seekMix(art, player) {
|
||||
export default function playedMix(art, player) {
|
||||
def(player, 'played', {
|
||||
get: () => art.template.$video.currentTime / art.template.$video.duration,
|
||||
get: () => player.currentTime / player.duration,
|
||||
});
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
import { query, append, setStyle, setStyles, errorHandle, getExt, vttToBlob, srtToVtt, assToVtt } from '../utils';
|
||||
import { query, append, setStyle, setStyles, errorHandle, getExt } from '../utils';
|
||||
|
||||
export default function localSubtitle(art) {
|
||||
const {
|
||||
@@ -12,31 +12,9 @@ export default function localSubtitle(art) {
|
||||
if (file) {
|
||||
const type = getExt(file.name);
|
||||
if (['ass', 'vtt', 'srt'].includes(type)) {
|
||||
const reader = new FileReader();
|
||||
proxy(reader, 'load', event => {
|
||||
const text = event.target.result;
|
||||
switch (type) {
|
||||
case 'srt': {
|
||||
const url = vttToBlob(srtToVtt(text));
|
||||
subtitle.switch(url, file.name);
|
||||
break;
|
||||
}
|
||||
case 'ass': {
|
||||
const url = vttToBlob(assToVtt(text));
|
||||
subtitle.switch(url, file.name);
|
||||
break;
|
||||
}
|
||||
case 'vtt': {
|
||||
const url = vttToBlob(text);
|
||||
subtitle.switch(url, file.name);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
art.emit('localSubtitle', file);
|
||||
});
|
||||
reader.readAsText(file);
|
||||
const url = URL.createObjectURL(file);
|
||||
subtitle.switch(url, file.name, type);
|
||||
art.emit('localSubtitle', file);
|
||||
} else {
|
||||
errorHandle(false, 'Only supports subtitle files in .ass, .vtt and .srt format');
|
||||
}
|
||||
|
||||
@@ -43,9 +43,9 @@ export default class Subtitle extends Component {
|
||||
}
|
||||
}
|
||||
|
||||
switch(url, name) {
|
||||
switch(url, name, ext) {
|
||||
const { i18n, notice } = this.art;
|
||||
return this.init(url).then(subUrl => {
|
||||
return this.init(url, ext).then(subUrl => {
|
||||
if (name) {
|
||||
notice.show = `${i18n.get('Switch subtitle')}: ${name}`;
|
||||
}
|
||||
@@ -54,7 +54,7 @@ export default class Subtitle extends Component {
|
||||
});
|
||||
}
|
||||
|
||||
init(url) {
|
||||
init(url, ext) {
|
||||
const {
|
||||
notice,
|
||||
template: { $subtitle, $track },
|
||||
@@ -66,7 +66,7 @@ export default class Subtitle extends Component {
|
||||
})
|
||||
.then(text => {
|
||||
this.art.emit('subtitle:load', url);
|
||||
switch (getExt(url)) {
|
||||
switch (ext || getExt(url)) {
|
||||
case 'srt':
|
||||
return vttToBlob(srtToVtt(text));
|
||||
case 'ass':
|
||||
|
||||
Reference in new issue
Block a user