压缩字符

This commit is contained in:
Harvey committed 2019-11-28 10:56:53 +08:00
1 parent 7ff61b4660
commit 0cf455ced3
27 files changed
+171 -239

No files matched your search

+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})),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
+62 -3
View File
@@ -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',
],
};
-64
View File
@@ -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',
],
};
+1 -1
View File
@@ -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;
}
});
+2 -6
View File
@@ -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 -3
View File
@@ -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 -3
View File
@@ -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');
+4 -4
View File
@@ -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,
-1
View File
@@ -32,7 +32,6 @@
"Exit web fullscreen": "退出网页全屏",
"Mini player": "迷你播放器",
"Exit mini player": "退出迷你播放器",
"Does not support fullscreen": "不支持全屏",
"Local Subtitle": "本地字幕",
"Local Video": "本地视频",
"Subtitle offset time": "字幕偏移时间",
-1
View File
@@ -32,7 +32,6 @@
"Exit web fullscreen": "退出網頁全屏",
"Mini player": "迷你播放器",
"Exit mini player": "退出迷你播放器",
"Does not support fullscreen": "不支持全屏",
"Local Subtitle": "本地字幕",
"Local Video": "本地視頻",
"Subtitle offset time": "字幕偏移時間",
+15 -17
View File
@@ -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');
+1 -1
View File
@@ -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 -3
View File
@@ -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() {
+2 -2
View File
@@ -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);
});
}
});
+4 -3
View File
@@ -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 -1
View File
@@ -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', {
+1 -1
View File
@@ -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);
+3 -2
View File
@@ -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;
+2 -2
View File
@@ -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');
}
+4 -4
View File
@@ -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':