From 8a88fb304384f5e5a85160aaab6c5c05d3a1888e Mon Sep 17 00:00:00 2001 From: Harvey Zack Date: Wed, 24 Oct 2018 14:54:56 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=AA=8C=E8=AF=81=E6=96=B9?= =?UTF-8?q?=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/img/your-name.png | Bin 32543 -> 18339 bytes docs/index.html | 26 +----- docs/js/artplayer.js | 173 ++++++++++++++++++++++-------------- docs/js/artplayer.js.map | 2 +- src/controls/index.js | 14 ++- src/layers.js | 2 +- src/utils/index.js | 11 ++- src/verification/control.js | 18 ---- src/verification/player.js | 66 +++++++++++++- 9 files changed, 189 insertions(+), 123 deletions(-) delete mode 100644 src/verification/control.js diff --git a/docs/img/your-name.png b/docs/img/your-name.png index bda42feaa1b04d3750f4f3d8e9ffc3312ef0eb4f..8df7bc4b6acc4477216542a140c3e27385510864 100644 GIT binary patch literal 18339 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 diff --git a/docs/js/artplayer.js b/docs/js/artplayer.js index 44384959f..8c7af60e2 100644 --- a/docs/js/artplayer.js +++ b/docs/js/artplayer.js @@ -217,52 +217,6 @@ var objectSpread = _objectSpread; - function _arrayWithHoles(arr) { - if (Array.isArray(arr)) return arr; - } - - var arrayWithHoles = _arrayWithHoles; - - function _iterableToArrayLimit(arr, i) { - var _arr = []; - var _n = true; - var _d = false; - var _e = undefined; - - try { - for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { - _arr.push(_s.value); - - if (i && _arr.length === i) break; - } - } catch (err) { - _d = true; - _e = err; - } finally { - try { - if (!_n && _i["return"] != null) _i["return"](); - } finally { - if (_d) throw _e; - } - } - - return _arr; - } - - var iterableToArrayLimit = _iterableToArrayLimit; - - function _nonIterableRest() { - throw new TypeError("Invalid attempt to destructure non-iterable instance"); - } - - var nonIterableRest = _nonIterableRest; - - function _slicedToArray(arr, i) { - return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest(); - } - - var slicedToArray = _slicedToArray; - function _isNativeFunction(fn) { return Function.toString.call(fn).indexOf("[native code]") !== -1; } @@ -396,18 +350,16 @@ returnValue = toConsumableArray(returnValue).concat(toConsumableArray(source)); } else if (isObject(source)) { - var _arr = Object.entries(source); + for (var key in source) { + if (source.hasOwnProperty(key)) { + var value = source[key]; - for (var _i2 = 0; _i2 < _arr.length; _i2++) { - var _arr$_i = slicedToArray(_arr[_i2], 2), - key = _arr$_i[0], - value = _arr$_i[1]; + if (isObject(value) && key in returnValue) { + value = deepMerge(returnValue[key], value); + } - if (isObject(value) && Reflect.has(returnValue, key)) { - value = deepMerge(returnValue[key], value); + returnValue = objectSpread({}, returnValue, defineProperty({}, key, value)); } - - returnValue = objectSpread({}, returnValue, defineProperty({}, key, value)); } } } @@ -440,6 +392,51 @@ if (type === 'object') { validOption(defaultValue, value, path.concat(key)); } + + if (path.length === 1) { + if (key === 'layers') { + value.forEach(function (item, index) { + validOption({ + name: '', + index: 0, + html: '', + style: {} + }, item, path.concat("".concat(key, "[").concat(index, "]"))); + }); + } + + if (key === 'contextmenu') { + value.forEach(function (item, index) { + validOption({ + name: '', + click: new Function(), + html: '', + style: {} + }, item, path.concat("".concat(key, "[").concat(index, "]"))); + }); + } + + if (key === 'highlight') { + value.forEach(function (item, index) { + validOption({ + time: 0, + text: '' + }, item, path.concat("".concat(key, "[").concat(index, "]"))); + }); + } + + if (key === 'controls') { + value.forEach(function (item, index) { + if (item.option) { + validOption({ + disable: false, + position: '', + index: 0 + }, item.option, path.concat("".concat(key, "[").concat(index, "]"))); + } + }); + } + } }); } @@ -897,6 +894,52 @@ return Pip; }(); + function _arrayWithHoles(arr) { + if (Array.isArray(arr)) return arr; + } + + var arrayWithHoles = _arrayWithHoles; + + function _iterableToArrayLimit(arr, i) { + var _arr = []; + var _n = true; + var _d = false; + var _e = undefined; + + try { + for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { + _arr.push(_s.value); + + if (i && _arr.length === i) break; + } + } catch (err) { + _d = true; + _e = err; + } finally { + try { + if (!_n && _i["return"] != null) _i["return"](); + } finally { + if (_d) throw _e; + } + } + + return _arr; + } + + var iterableToArrayLimit = _iterableToArrayLimit; + + function _nonIterableRest() { + throw new TypeError("Invalid attempt to destructure non-iterable instance"); + } + + var nonIterableRest = _nonIterableRest; + + function _slicedToArray(arr, i) { + return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest(); + } + + var slicedToArray = _slicedToArray; + var loading = "\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n"; var playBig = "\n \n \n \n \n"; @@ -1413,11 +1456,7 @@ classCallCheck(this, Controls); this.art = art; - this.$map = { - top: [], - left: [], - right: [] - }; + this.$map = {}; this.init(); this.mount(); } @@ -1477,9 +1516,7 @@ position: 'right', index: 50 })); - this.art.option.controls.filter(function (item) { - return !item.disable; - }).forEach(function (item) { + this.art.option.controls.forEach(function (item) { _this.add(item); }); } @@ -1488,7 +1525,7 @@ value: function add(control) { var option = control.option; - if (!option.disable) { + if (option && !option.disable) { id++; var name = control.constructor.name.toLowerCase() || "control".concat(id); var $control = document.createElement('div'); @@ -1496,8 +1533,8 @@ $control.setAttribute('data-control-index', String(option.index) || id); option.$control = $control; this.commonMethod(control); - this.$map[option.position].push($control); - control.apply(this.art); + (this.$map[option.position] || (this.$map[option.position] = [])).push($control); + control.apply && control.apply(this.art); this[name] = control; } } @@ -2093,7 +2130,9 @@ this.art = art; this.add = this.add.bind(this); - this.art.option.layers.forEach(this.add); + this.art.option.layers.filter(function (item) { + return item.disable === false; + }).forEach(this.add); this.init(); } diff --git a/docs/js/artplayer.js.map b/docs/js/artplayer.js.map index 2f08bc22d..2faf5dda6 100644 --- a/docs/js/artplayer.js.map +++ b/docs/js/artplayer.js.map @@ -1 +1 @@ -{"version":3,"file":"artplayer.js","sources":["../../node_modules/@babel/runtime/helpers/setPrototypeOf.js","../../node_modules/@babel/runtime/helpers/construct.js","../../node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","../../node_modules/@babel/runtime/helpers/iterableToArray.js","../../node_modules/@babel/runtime/helpers/nonIterableSpread.js","../../node_modules/@babel/runtime/helpers/toConsumableArray.js","../../node_modules/@babel/runtime/helpers/classCallCheck.js","../../node_modules/@babel/runtime/helpers/createClass.js","../../node_modules/@babel/runtime/helpers/typeof.js","../../node_modules/@babel/runtime/helpers/assertThisInitialized.js","../../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","../../node_modules/@babel/runtime/helpers/getPrototypeOf.js","../../node_modules/@babel/runtime/helpers/inherits.js","../../node_modules/@babel/runtime/helpers/defineProperty.js","../../node_modules/@babel/runtime/helpers/objectSpread.js","../../node_modules/@babel/runtime/helpers/arrayWithHoles.js","../../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","../../node_modules/@babel/runtime/helpers/nonIterableRest.js","../../node_modules/@babel/runtime/helpers/slicedToArray.js","../../node_modules/@babel/runtime/helpers/isNativeFunction.js","../../node_modules/@babel/runtime/helpers/wrapNativeSuper.js","../../src/utils/index.js","../../src/verification/player.js","../../src/config/mimeCodec.js","../../src/config/mse.js","../../src/config/video.js","../../src/config/index.js","../../node_modules/tiny-emitter/index.js","../../src/template.js","../../src/i18n.js","../../src/player.js","../../src/controls/danmu.js","../../src/controls/fullscreen.js","../../src/controls/pip.js","../../src/icons/index.js","../../src/controls/playAndPause.js","../../src/controls/progress.js","../../src/controls/subtitle.js","../../src/controls/time.js","../../src/controls/volume.js","../../src/controls/setting.js","../../src/controls/thumbnails.js","../../src/controls/index.js","../../src/contextmenu.js","../../src/danmu.js","../../src/info.js","../../src/subtitle.js","../../src/events.js","../../src/hotkey.js","../../src/layers.js","../../src/loading.js","../../src/notice.js","../../src/mask.js","../../src/index.js"],"sourcesContent":["function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;","var setPrototypeOf = require(\"./setPrototypeOf\");\n\nfunction isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n module.exports = _construct = Reflect.construct;\n } else {\n module.exports = _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\n\nmodule.exports = _construct;","function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n}\n\nmodule.exports = _arrayWithoutHoles;","function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nmodule.exports = _nonIterableSpread;","var arrayWithoutHoles = require(\"./arrayWithoutHoles\");\n\nvar iterableToArray = require(\"./iterableToArray\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;","function _typeof2(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return _typeof2(obj);\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;","var _typeof = require(\"../helpers/typeof\");\n\nvar assertThisInitialized = require(\"./assertThisInitialized\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;","var setPrototypeOf = require(\"./setPrototypeOf\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits;","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;","var defineProperty = require(\"./defineProperty\");\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nmodule.exports = _objectSpread;","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;","function _iterableToArrayLimit(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}\n\nmodule.exports = _nonIterableRest;","var arrayWithHoles = require(\"./arrayWithHoles\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit\");\n\nvar nonIterableRest = require(\"./nonIterableRest\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;","function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\n\nmodule.exports = _isNativeFunction;","var getPrototypeOf = require(\"./getPrototypeOf\");\n\nvar setPrototypeOf = require(\"./setPrototypeOf\");\n\nvar isNativeFunction = require(\"./isNativeFunction\");\n\nvar construct = require(\"./construct\");\n\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n module.exports = _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n}\n\nmodule.exports = _wrapNativeSuper;","export class ArtPlayerError extends Error {\n constructor(message, context) {\n super(message);\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, context || this.constructor);\n }\n this.name = 'ArtPlayerError';\n }\n}\n\nexport function errorHandle(condition, msg) {\n const isFun = typeof condition === 'function';\n if (isFun ? !isFun() : !condition) {\n throw new ArtPlayerError(msg);\n }\n}\n\nexport function clamp(num, a, b) {\n return Math.max(Math.min(num, Math.max(a, b)), Math.min(a, b));\n}\n\nexport function getExt(url) {\n if (url.includes('?')) {\n return getExt(url.split('?')[0]);\n }\n\n if (url.includes('#')) {\n return getExt(url.split('#')[0]);\n }\n\n return url\n .trim()\n .toLowerCase()\n .split('.')\n .pop();\n}\n\nexport function append(parent, child) {\n if (child instanceof Element) {\n parent.appendChild(child);\n } else {\n parent.insertAdjacentHTML('beforeend', child);\n }\n return parent.lastElementChild;\n}\n\nexport function setStyle(element, styles) {\n Object.keys(styles).forEach(key => {\n element.style[key] = styles[key];\n });\n return element;\n}\n\nexport function secondToTime(second) {\n const add0 = num => (num < 10 ? `0${num}` : String(num));\n const hour = Math.floor(second / 3600);\n const min = Math.floor((second - hour * 3600) / 60);\n const sec = Math.floor(second - hour * 3600 - min * 60);\n return (hour > 0 ? [hour, min, sec] : [min, sec]).map(add0).join(':');\n}\n\nexport function deepMerge(...sources) {\n const isObject = value => value !== null && typeof value === 'object';\n let returnValue = {};\n for (const source of sources) {\n if (Array.isArray(source)) {\n if (!Array.isArray(returnValue)) {\n returnValue = [];\n }\n returnValue = [...returnValue, ...source];\n } else if (isObject(source)) {\n for (let [key, value] of Object.entries(source)) {\n if (isObject(value) && Reflect.has(returnValue, key)) {\n value = deepMerge(returnValue[key], value);\n }\n returnValue = { ...returnValue, [key]: value };\n }\n }\n }\n return returnValue;\n}\n\nexport function getStorage(key) {\n const storage = JSON.parse(localStorage.getItem('artplayer_settings')) || {};\n return key ? storage[key] : storage;\n}\n\nexport function setStorage(key, value) {\n const storage = Object.assign({}, getStorage(), {\n [key]: value\n });\n localStorage.setItem('artplayer_settings', JSON.stringify(storage));\n}\n\nexport function getType(val) {\n const { toString } = Object.prototype;\n const type = toString.call(val).slice(8, -1).toLowerCase().replace(/\\s/g, '');\n return type;\n}\n","import { errorHandle, getType } from '../utils';\n\nexport default function validOption(DEFAULTS, option, path = ['option']) {\n Object.keys(DEFAULTS).forEach(key => {\n const defaultValue = DEFAULTS[key];\n const value = option[key];\n const defaultType = getType(defaultValue);\n const type = getType(value);\n errorHandle(defaultType === type, `'${path.join('.')}.${key}' require '${defaultType}' type, but got '${type}'`);\n\n if (type === 'object') {\n validOption(defaultValue, value, path.concat(key));\n }\n });\n}\n","export default {\n mp4: 'video/mp4; codecs=\"avc1.42E01E, mp4a.40.2\"',\n webm: 'video/webm; codecs=\"vorbis, vp8\"',\n ts: 'video/mp2t; codecs=\"avc1.42E01E, mp4a.40.2\"'\n};\n","export default {\n mediaSource: {\n propertys: [\n 'activeSourceBuffers',\n 'duration',\n 'readyState',\n 'sourceBuffers'\n ],\n methods: [\n 'addSourceBuffer',\n 'endOfStream',\n 'removeSourceBuffer',\n 'clearLiveSeekableRange',\n 'setLiveSeekableRange'\n ],\n events: [\n 'sourceclose',\n 'sourceended',\n 'sourceopen'\n ]\n },\n sourceBuffer: {\n propertys: [\n 'mode',\n 'updating',\n 'buffered',\n 'timestampOffset',\n 'audioTracks',\n 'videoTracks',\n 'textTracks',\n 'appendWindowStart',\n 'appendWindowEnd',\n 'trackDefaults'\n ],\n methods: [\n 'appendBuffer',\n 'appendStream',\n 'abort',\n 'remove'\n ],\n events: [\n 'abort',\n 'error',\n 'update',\n 'updateend',\n 'updatestart'\n ]\n },\n sourceBufferList: {\n propertys: [\n 'length'\n ],\n events: [\n 'addsourcebuffer',\n 'removesourcebuffer'\n ]\n }\n};\n","export default {\n propertys: [\n 'audioTracks',\n 'autoplay',\n 'buffered',\n 'controller',\n 'controls',\n 'crossOrigin',\n 'currentSrc',\n 'currentTime',\n 'defaultMuted',\n 'defaultPlaybackRate',\n 'duration',\n 'ended',\n 'error',\n 'loop',\n 'mediaGroup',\n 'muted',\n 'networkState',\n 'paused',\n 'playbackRate',\n 'played',\n 'preload',\n 'readyState',\n 'seekable',\n 'seeking',\n 'src',\n 'startDate',\n 'textTracks',\n 'videoTracks',\n 'volume'\n ],\n methods: [\n 'addTextTrack',\n 'canPlayType',\n 'load',\n 'play',\n 'pause'\n ],\n events: [\n 'abort',\n 'canplay',\n 'canplaythrough',\n 'durationchange',\n 'emptied',\n 'ended',\n 'error',\n 'loadeddata',\n 'loadedmetadata',\n 'loadstart',\n 'pause',\n 'play',\n 'playing',\n 'progress',\n 'ratechange',\n 'seeked',\n 'seeking',\n 'stalled',\n 'suspend',\n 'timeupdate',\n 'volumechange',\n 'waiting'\n ]\n};\n","import mimeCodec from './mimeCodec';\nimport mse from './mse';\nimport video from './video';\n\nexport default {\n mimeCodec,\n mse,\n video\n};\n","function E () {\n // Keep this empty so it's easier to inherit from\n // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n on: function (name, callback, ctx) {\n var e = this.e || (this.e = {});\n\n (e[name] || (e[name] = [])).push({\n fn: callback,\n ctx: ctx\n });\n\n return this;\n },\n\n once: function (name, callback, ctx) {\n var self = this;\n function listener () {\n self.off(name, listener);\n callback.apply(ctx, arguments);\n };\n\n listener._ = callback\n return this.on(name, listener, ctx);\n },\n\n emit: function (name) {\n var data = [].slice.call(arguments, 1);\n var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n var i = 0;\n var len = evtArr.length;\n\n for (i; i < len; i++) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n\n return this;\n },\n\n off: function (name, callback) {\n var e = this.e || (this.e = {});\n var evts = e[name];\n var liveEvents = [];\n\n if (evts && callback) {\n for (var i = 0, len = evts.length; i < len; i++) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n liveEvents.push(evts[i]);\n }\n }\n\n // Remove event from queue to prevent memory leak\n // Suggested by https://github.com/lazd\n // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n (liveEvents.length)\n ? e[name] = liveEvents\n : delete e[name];\n\n return this;\n }\n};\n\nmodule.exports = E;\n","export default class Template {\n constructor(art) {\n this.art = art;\n this.init();\n }\n\n init() {\n const { refs } = this.art;\n refs.$container.innerHTML = `\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
[x]
\n
\n
\n `;\n refs.$player = refs.$container.querySelector('.artplayer-video-player');\n refs.$video = refs.$container.querySelector('.artplayer-video');\n refs.$subtitle = refs.$container.querySelector('.artplayer-subtitle');\n refs.$bottom = refs.$container.querySelector('.artplayer-bottom');\n refs.$progress = refs.$container.querySelector('.artplayer-progress');\n refs.$controls = refs.$container.querySelector('.artplayer-controls');\n refs.$controlsLeft = refs.$container.querySelector('.artplayer-controls-left');\n refs.$controlsRight = refs.$container.querySelector('.artplayer-controls-right');\n refs.$layers = refs.$container.querySelector('.artplayer-layers');\n refs.$loading = refs.$container.querySelector('.artplayer-loading');\n refs.$notice = refs.$container.querySelector('.artplayer-notice');\n refs.$mask = refs.$container.querySelector('.artplayer-mask');\n refs.$info = refs.$container.querySelector('.artplayer-info');\n refs.$infoPanel = refs.$container.querySelector('.artplayer-info-panel');\n refs.$infoClose = refs.$container.querySelector('.artplayer-info-close');\n }\n}\n","let i18nMap = {\n 'zh-cn': {\n 'About author': '关于作者',\n 'Video info': '视频统计信息',\n 'Close': '关闭',\n 'Video load failed': '视频加载失败',\n 'Volume': '音量',\n 'Start': '开始',\n 'Pause': '暂停',\n 'Rate': '速度'\n },\n 'zh-tw': {\n 'About author': '關於作者',\n 'Video info': '影片統計訊息',\n 'Close': '關閉',\n 'Video load failed': '影片載入失敗',\n 'Volume': '音量',\n 'Start': '開始',\n 'Pause': '暫停',\n 'Rate': '速度'\n }\n};\n\nexport default class I18n {\n constructor({ option }) {\n this.option = option;\n this.init();\n }\n\n init() {\n this.language = i18nMap[this.option.lang.toLowerCase()] || {};\n }\n\n get(key) {\n return this.language[key] || key;\n }\n\n update(callback) {\n i18nMap = callback(i18nMap);\n this.init();\n }\n}\n","import { clamp, secondToTime } from './utils';\nimport config from './config';\n\nexport default class Player {\n constructor(art) {\n this.art = art;\n this.init();\n this.eventBind();\n }\n\n init() {\n const { option, refs: { $video } } = this.art;\n Object.keys(option.moreVideoAttr).forEach(key => {\n const value = option.moreVideoAttr[key];\n $video[key] = value;\n });\n $video.volume = clamp(option.volume, 0, 1);\n $video.poster = option.poster;\n $video.autoplay = option.autoplay;\n $video.src = option.url;\n }\n\n eventBind() {\n const { events: { proxy }, refs: { $player, $video }, i18n, notice } = this.art;\n\n config.video.events.forEach(eventName => {\n proxy($video, eventName, event => {\n this.art.emit(`video:${event.type}`, event);\n });\n });\n\n this.art.on('video:loadstart', () => {\n this.art.loading.show();\n });\n\n this.art.on('video:loadeddata', () => {\n this.art.loading.hide();\n });\n\n this.art.on('video:waiting', () => {\n this.art.loading.show();\n });\n\n this.art.on('video:seeking', () => {\n this.art.loading.show();\n });\n\n this.art.on('video:canplay', () => {\n this.art.controls.show();\n this.art.mask.show();\n this.art.loading.hide();\n if (this.art.option.autoplay) {\n const promise = this.play();\n if (promise !== undefined) {\n promise.then().catch(err => {\n console.warn(err);\n });\n }\n }\n });\n\n this.art.on('video:playing', () => {\n this.art.isPlaying = true;\n this.art.controls.hide();\n this.art.mask.hide();\n });\n\n this.art.on('video:pause', () => {\n this.art.isPlaying = false;\n this.art.controls.show();\n this.art.mask.show();\n });\n\n this.art.on('video:ended', () => {\n this.art.isPlaying = false;\n this.art.controls.show();\n this.art.mask.show();\n if (this.art.option.loop) {\n this.seek(0);\n this.play();\n }\n });\n\n this.art.on('video:error', () => {\n this.art.isError = true;\n this.art.isPlaying = false;\n this.art.loading.hide();\n this.art.controls.hide();\n $player.classList.add('artplayer-error');\n notice.show(i18n.get('Video load failed'), false);\n this.art.destroy();\n });\n }\n\n play() {\n const { refs: { $video }, i18n, notice } = this.art;\n const promise = $video.play();\n notice.show(i18n.get('Start'));\n this.art.emit('play', $video);\n return promise;\n }\n\n pause() {\n const { refs: { $video }, i18n, notice } = this.art;\n $video.pause();\n notice.show(i18n.get('Pause'));\n this.art.emit('pause', $video);\n }\n\n toggle() {\n if (this.art.isPlaying) {\n this.pause();\n } else {\n this.play();\n }\n }\n\n seek(time) {\n const { refs: { $video }, notice } = this.art;\n let newTime = Math.max(time, 0);\n if ($video.duration) {\n newTime = Math.min(newTime, $video.duration);\n }\n $video.currentTime = newTime;\n notice.show(`${secondToTime(newTime)} / ${secondToTime($video.duration)}`);\n this.art.emit('seek', newTime);\n }\n\n volume(percentage) {\n const { refs: { $video }, i18n, notice } = this.art;\n if (percentage !== undefined) {\n $video.volume = clamp(percentage, 0, 1);\n notice.show(`${i18n.get('Volume')}: ${parseInt($video.volume * 100)}`);\n this.art.emit('volume', $video.volume);\n }\n return $video.volume || 0;\n }\n\n currentTime() {\n return this.art.refs.$video.currentTime || 0;\n }\n\n duration() {\n return this.art.refs.$video.duration || 0;\n }\n\n playbackRate(rate) {\n const { refs: { $video }, i18n, notice } = this.art;\n const newRate = clamp(rate, 0.1, 10);\n $video.playbackRate = newRate;\n notice.show(`${i18n.get('Rate')}: ${newRate}x`);\n this.art.emit('playbackRate', newRate);\n }\n}\n","export default class Danmu {\n constructor(option) {\n this.option = option;\n }\n\n apply(art) {\n this.art = art;\n }\n}\n","export default class Fullscreen {\n constructor(option) {\n this.option = option;\n }\n\n apply(art) {\n this.art = art;\n }\n}\n","export default class Pip {\n constructor(option) {\n this.option = option;\n }\n\n apply(art) {\n this.art = art;\n }\n}\n","import loading from './loading.svg';\nimport playBig from './play-big.svg';\nimport play from './play.svg';\nimport pause from './pause.svg';\nimport volume from './volume.svg';\nimport volumeClose from './volume-close.svg';\n\nconst icons = {\n loading,\n playBig,\n play,\n pause,\n volume,\n volumeClose\n};\n\nfunction creatDomFromSvg(map) {\n const result = {};\n Object.keys(map).forEach(name => {\n const tmp = document.createElement('div');\n tmp.innerHTML = `${map[name]}`;\n [result[name]] = tmp.childNodes;\n });\n return result;\n}\n\nexport default creatDomFromSvg(icons);\n","import { append } from '../utils';\nimport icons from '../icons';\n\nexport default class PlayAndPause {\n constructor(option) {\n this.option = option;\n }\n\n apply(art) {\n this.art = art;\n this.init();\n }\n\n init() {\n const { events: { proxy }, player } = this.art;\n\n this.$play = append(this.option.$control, icons.play);\n this.$pause = append(this.option.$control, icons.pause);\n this.$pause.style.display = 'none';\n\n proxy(this.$play, 'click', () => {\n player.play();\n });\n\n proxy(this.$pause, 'click', () => {\n player.pause();\n });\n\n this.art.on('video:playing', () => {\n this.$play.style.display = 'none';\n this.$pause.style.display = 'block';\n });\n\n this.art.on('video:pause', () => {\n this.$play.style.display = 'block';\n this.$pause.style.display = 'none';\n });\n }\n}\n","import { append } from '../utils';\n\nexport default class Progress {\n constructor(option) {\n this.option = option;\n }\n\n apply(art) {\n this.art = art;\n this.isDroging = false;\n this.getLoaded = this.getLoaded.bind(this);\n this.getPlayed = this.getPlayed.bind(this);\n this.set = this.set.bind(this);\n this.init();\n }\n\n init() {\n const {\n option: { highlight, theme },\n events: { proxy },\n refs: { $video },\n player\n } = this.art;\n\n append(\n this.option.$control,\n `\n
\n
\n
\n
\n
\n
\n
\n `\n );\n\n this.$loaded = this.option.$control.querySelector('.art-progress-loaded');\n this.$played = this.option.$control.querySelector('.art-progress-played');\n this.$highlight = this.option.$control.querySelector('.art-progress-highlight');\n this.$indicator = this.option.$control.querySelector('.art-progress-indicator');\n this.$tip = this.option.$control.querySelector('.art-progress-tip');\n\n this.art.on('video:canplay', () => {\n this.set('loaded', this.getLoaded());\n highlight.filter(item => !item.disable).forEach(item => {\n const left = Number(item.time) / $video.duration;\n append(this.$highlight, `\n \n `\n );\n });\n });\n\n this.art.on('video:progress', () => {\n this.set('loaded', this.getLoaded());\n });\n\n this.art.on('video:timeupdate', () => {\n this.set('played', this.getPlayed());\n });\n\n this.art.on('video:ended', () => {\n this.set('played', 1);\n });\n\n proxy(this.option.$control, 'mousemove', event => {\n this.$tip.style.display = 'block';\n if (event.path.indexOf(this.$highlight) > -1) {\n this.showHighlight(event);\n } else {\n this.showTime(event);\n }\n });\n\n proxy(this.option.$control, 'mouseout', () => {\n this.$tip.style.display = 'none';\n });\n\n proxy(this.option.$control, 'click', event => {\n if (event.target !== this.$indicator) {\n const { second, percentage } = this.getPosFromEvent(event);\n this.set('played', percentage);\n player.seek(second);\n }\n });\n\n proxy(this.$indicator, 'mousedown', () => {\n this.isDroging = true;\n });\n\n proxy(document, 'mousemove', event => {\n if (this.isDroging) {\n const { second, percentage } = this.getPosFromEvent(event);\n this.$indicator.classList.add('show-indicator');\n this.set('played', percentage);\n player.seek(second);\n }\n });\n\n proxy(document, 'mouseup', () => {\n if (this.isDroging) {\n this.isDroging = false;\n this.$indicator.classList.remove('show-indicator');\n }\n });\n }\n\n showHighlight(event) {\n const { $video } = this.art.refs;\n const { text, time } = event.target.dataset;\n this.$tip.innerHTML = text;\n const left =\n Number(time) / $video.duration * this.option.$control.clientWidth +\n event.target.clientWidth / 2 -\n this.$tip.clientWidth / 2;\n this.$tip.style.left = `${left}px`;\n }\n\n showTime(event) {\n const { width, time } = this.getPosFromEvent(event);\n const tipWidth = this.$tip.clientWidth;\n this.$tip.innerHTML = time;\n if (width <= tipWidth / 2) {\n this.$tip.style.left = 0;\n } else if (width > this.option.$control.clientWidth - tipWidth / 2) {\n this.$tip.style.left = `${this.option.$control.clientWidth - tipWidth}px`;\n } else {\n this.$tip.style.left = `${width - tipWidth / 2}px`;\n }\n }\n\n getPlayed() {\n const { $video } = this.art.refs;\n return $video.currentTime / $video.duration;\n }\n\n getLoaded() {\n const { $video } = this.art.refs;\n return $video.buffered.length\n ? $video.buffered.end($video.buffered.length - 1) / $video.duration\n : 0;\n }\n\n set(type, percentage) {\n this[`$${type}`].style.width = `${percentage * 100}%`;\n if (type === 'played') {\n this.$indicator.style.left = `calc(${percentage * 100}% - 6.5px)`;\n }\n }\n}\n","export default class Subtitle {\n constructor(option) {\n this.option = option;\n }\n\n apply(art) {\n this.art = art;\n }\n}\n","import { secondToTime } from '../utils';\n\nexport default class Time {\n constructor(option) {\n this.option = option;\n }\n\n apply(art) {\n this.art = art;\n this.init();\n }\n\n init() {\n this.option.$control.innerHTML = '00:00 / 00:00';\n\n this.art.on('video:canplay', () => {\n this.option.$control.innerHTML = this.getTime();\n });\n\n this.art.on('video:timeupdate', () => {\n this.option.$control.innerHTML = this.getTime();\n });\n\n this.art.on('video:seeking', () => {\n this.option.$control.innerHTML = this.getTime();\n });\n }\n\n getTime() {\n const { player } = this.art;\n return `${secondToTime(player.currentTime())} / ${secondToTime(player.duration())}`;\n }\n}\n","import { append, setStorage, getStorage, clamp } from '../utils';\nimport icons from '../icons';\n\nexport default class Volume {\n constructor(option) {\n this.option = option;\n }\n\n apply(art) {\n this.art = art;\n this.isDroging = false;\n this.init();\n }\n\n init() {\n const { events: { proxy }, player } = this.art;\n this.$volume = append(this.option.$control, icons.volume);\n this.$volumeClose = append(this.option.$control, icons.volumeClose);\n this.$volumePanel = append(this.option.$control, '
');\n this.$volumeHandle = append(this.$volumePanel, '
');\n this.$volumeClose.style.display = 'none';\n\n const volume = getStorage('volume');\n this.setVolumeHandle(volume);\n player.volume(volume);\n\n proxy(this.$volume, 'click', () => {\n this.$volume.style.display = 'none';\n this.$volumeClose.style.display = 'block';\n setStorage('volume', player.volume());\n player.volume(0);\n });\n\n proxy(this.$volumeClose, 'click', () => {\n this.$volume.style.display = 'block';\n this.$volumeClose.style.display = 'none';\n player.volume(getStorage('volume'));\n });\n\n proxy(this.option.$control, 'mouseenter', () => {\n this.$volumePanel.classList.add('art-volume-panel-hover');\n\n // TODO\n setTimeout(() => {\n this.setVolumeHandle(player.volume());\n }, 200);\n });\n\n proxy(this.option.$control, 'mouseleave', () => {\n this.$volumePanel.classList.remove('art-volume-panel-hover');\n });\n\n proxy(this.$volumePanel, 'click', event => {\n this.volumeChangeFromEvent(event);\n });\n\n proxy(this.$volumeHandle, 'mousedown', () => {\n this.isDroging = true;\n });\n\n proxy(this.$volumeHandle, 'mousemove', event => {\n if (this.isDroging) {\n this.volumeChangeFromEvent(event);\n }\n });\n\n proxy(document, 'mouseup', () => {\n if (this.isDroging) {\n this.isDroging = false;\n }\n });\n\n this.art.on('video:volumechange', () => {\n const percentage = player.volume();\n this.setVolumeHandle(percentage);\n if (percentage === 0) {\n this.$volume.style.display = 'none';\n this.$volumeClose.style.display = 'block';\n } else {\n this.$volume.style.display = 'block';\n this.$volumeClose.style.display = 'none';\n }\n });\n }\n\n volumeChangeFromEvent(event) {\n const { player } = this.art;\n const { left: panelLeft, width: panelWidth } = this.$volumePanel.getBoundingClientRect();\n const { width: handleWidth } = this.$volumeHandle.getBoundingClientRect();\n const percentage = clamp(event.x - panelLeft - handleWidth / 2, 0, panelWidth - handleWidth / 2) / (panelWidth - handleWidth);\n setStorage('volume', percentage);\n player.volume(percentage);\n }\n\n setVolumeHandle(percentage = 0.7) {\n const { width: panelWidth } = this.$volumePanel.getBoundingClientRect();\n const { width: handleWidth } = this.$volumeHandle.getBoundingClientRect();\n const width = handleWidth / 2 + (panelWidth - handleWidth) * percentage - handleWidth / 2;\n this.$volumeHandle.style.left = `${width}px`;\n }\n}\n","export default class Setting {\n constructor(option) {\n this.option = option;\n }\n\n apply(art) {\n this.art = art;\n }\n}\n","export default class Thumbnails {\n constructor(option) {\n this.option = option;\n }\n\n apply(art) {\n this.art = art;\n this.init();\n }\n\n init() {\n const {\n refs: { $progress },\n events: { proxy }\n } = this.art;\n\n proxy($progress, 'mousemove', event => {\n this.option.$control.style.display = 'block';\n this.showThumbnails(event);\n });\n\n proxy($progress, 'mouseout', () => {\n this.option.$control.style.display = 'none';\n });\n }\n\n showThumbnails(event) {\n const { $progress } = this.art.refs;\n const { width: posWidth } = this.getPosFromEvent(event);\n const { url, height, width, number, column } = this.art.option.thumbnails;\n const perWidth = $progress.clientWidth / number;\n const perIndex = Math.ceil(posWidth / perWidth);\n let yIndex = Math.ceil(perIndex / column);\n let xIndex = perIndex % column || column;\n\n this.option.$control.style.backgroundImage = `url(${url})`;\n this.option.$control.style.height = `${height}px`;\n this.option.$control.style.width = `${width}px`;\n this.option.$control.style.backgroundPosition = `-${--xIndex * width}px -${--yIndex * height}px`;\n\n if (posWidth <= width / 2) {\n this.option.$control.style.left = 0;\n } else if (posWidth > $progress.clientWidth - width / 2) {\n this.option.$control.style.left = `${$progress.clientWidth - width}px`;\n } else {\n this.option.$control.style.left = `${posWidth - width / 2}px`;\n }\n }\n}\n","import { secondToTime, clamp } from '../utils';\nimport Danmu from './danmu';\nimport Fullscreen from './fullscreen';\nimport Pip from './pip';\nimport PlayAndPause from './playAndPause';\nimport Progress from './progress';\nimport Subtitle from './subtitle';\nimport Time from './time';\nimport Volume from './volume';\nimport Setting from './setting';\nimport Thumbnails from './thumbnails';\n\nlet id = 0;\nexport default class Controls {\n constructor(art) {\n this.art = art;\n this.$map = {\n top: [],\n left: [],\n right: []\n };\n this.init();\n this.mount();\n }\n\n init() {\n this.add(new Progress({\n disable: false,\n position: 'top',\n index: 10\n }));\n\n this.add(new Thumbnails({\n disable: !this.art.option.thumbnails.url,\n position: 'top',\n index: 20\n }));\n\n this.add(new PlayAndPause({\n disable: false,\n position: 'left',\n index: 10\n }));\n\n this.add(new Volume({\n disable: false,\n position: 'left',\n index: 20\n }));\n\n this.add(new Time({\n disable: false,\n position: 'left',\n index: 30\n }));\n\n this.add(new Danmu({\n disable: false,\n position: 'right',\n index: 10\n }));\n\n this.add(new Subtitle({\n disable: false,\n position: 'right',\n index: 20\n }));\n\n this.add(new Setting({\n disable: false,\n position: 'right',\n index: 30\n }));\n\n this.add(new Pip({\n disable: false,\n position: 'right',\n index: 40\n }));\n\n this.add(new Fullscreen({\n disable: false,\n position: 'right',\n index: 50\n }));\n\n this.art.option.controls.filter(item => !item.disable).forEach(item => {\n this.add(item);\n });\n }\n\n add(control) {\n const { option } = control;\n if (!option.disable) {\n id++;\n const name = control.constructor.name.toLowerCase() || `control${id}`;\n const $control = document.createElement('div');\n $control.setAttribute('class', `art-control art-control-${name}`);\n $control.setAttribute('data-control-index', String(option.index) || id);\n option.$control = $control;\n this.commonMethod(control);\n this.$map[option.position].push($control);\n control.apply(this.art);\n this[name] = control;\n }\n }\n\n mount() {\n const { $progress, $controlsLeft, $controlsRight } = this.art.refs;\n Object.keys(this.$map).forEach(key => {\n this.$map[key]\n .sort(\n (a, b) =>\n Number(a.dataset.controlIndex) - Number(b.dataset.controlIndex)\n )\n .forEach($control => {\n switch (key) {\n case 'top':\n $progress.appendChild($control);\n break;\n case 'left':\n $controlsLeft.appendChild($control);\n break;\n case 'right':\n $controlsRight.appendChild($control);\n break;\n default:\n break;\n }\n });\n });\n }\n\n commonMethod(control) {\n Object.defineProperty(control, 'hide', {\n value: () => {\n control.option.$control.style.display = 'none';\n this.art.emit('control:hide', control.option.$control);\n }\n });\n\n Object.defineProperty(control, 'show', {\n value: () => {\n control.option.$control.style.display = 'block';\n this.art.emit('control:show', control.option.$control);\n }\n });\n\n Object.defineProperty(control, 'getPosFromEvent', {\n value: event => {\n const { $video, $progress } = this.art.refs;\n const { left } = $progress.getBoundingClientRect();\n const width = clamp(event.x - left, 0, $progress.clientWidth);\n const second = width / $progress.clientWidth * $video.duration;\n const time = secondToTime(second);\n const percentage = clamp(width / $progress.clientWidth, 0, 1);\n return { second, time, width, percentage };\n }\n });\n }\n\n show() {\n const { $player } = this.art.refs;\n $player.classList.add('controls-show');\n }\n\n hide() {\n const { $player } = this.art.refs;\n $player.classList.remove('controls-show');\n }\n}\n","import { append, setStyle } from './utils';\n\nlet id = 0;\nexport default class Contextmenu {\n constructor(art) {\n this.art = art;\n this.init();\n }\n\n init() {\n const {\n option,\n i18n,\n refs,\n events: { proxy }\n } = this.art;\n\n option.contextmenu.push(\n {\n name: 'info',\n html: i18n.get('Video info'),\n click: () => {\n this.art.info.show();\n }\n },\n {\n name: 'version',\n html: '
ArtPlayer __VERSION__'\n },\n {\n name: 'close',\n html: i18n.get('Close'),\n click: () => {\n this.hide();\n }\n }\n );\n\n proxy(refs.$player, 'contextmenu', event => {\n event.preventDefault();\n this.art.isFocus = true;\n if (!refs.$contextmenu) {\n this.creatMenu();\n }\n this.show();\n this.setPos(event);\n });\n\n proxy(refs.$player, 'click', event => {\n if (refs.$contextmenu && !event.path.includes(refs.$contextmenu)) {\n this.hide();\n }\n });\n }\n\n creatMenu() {\n const {\n option,\n refs,\n events: { proxy }\n } = this.art;\n refs.$contextmenu = document.createElement('div');\n refs.$contextmenu.classList.add('artplayer-contextmenu');\n option.contextmenu.forEach(item => {\n id++;\n const $menu = document.createElement('div');\n $menu.setAttribute('data-art-menu-id', id);\n $menu.setAttribute('class', `art-menu art-menu-${item.name || id}`);\n append($menu, item.html);\n setStyle($menu, item.style || {});\n if (item.click) {\n proxy($menu, 'click', event => {\n event.preventDefault();\n item.click(this.art, event);\n this.hide();\n this.art.emit('contextmenu:click', $menu);\n });\n }\n append(refs.$contextmenu, $menu);\n });\n append(refs.$player, refs.$contextmenu);\n }\n\n setPos(event) {\n const { refs } = this.art;\n const mouseX = event.clientX;\n const mouseY = event.clientY;\n const { height: cHeight, width: cWidth, left: cLeft, top: cTop } = refs.$player.getBoundingClientRect();\n const { height: mHeight, width: mWidth } = refs.$contextmenu.getBoundingClientRect();\n let menuLeft = mouseX - cLeft;\n let menuTop = mouseY - cTop;\n\n if (mouseX + mWidth > cLeft + cWidth) {\n menuLeft = cWidth - mWidth;\n }\n\n if (mouseY + mHeight > cTop + cHeight) {\n menuTop = cHeight - mHeight;\n }\n\n refs.$contextmenu.style.left = `${menuLeft}px`;\n refs.$contextmenu.style.top = `${menuTop}px`;\n }\n\n hide() {\n const { refs: { $contextmenu } } = this.art;\n if ($contextmenu) {\n $contextmenu.style.display = 'none';\n this.art.emit('contextmenu:hide', $contextmenu);\n }\n }\n\n show() {\n const { refs: { $contextmenu } } = this.art;\n if ($contextmenu) {\n $contextmenu.style.display = 'block';\n this.art.emit('contextmenu:show', $contextmenu);\n }\n }\n}\n","export default class Danmu {\n constructor(art) {\n this.art = art;\n }\n}\n","import { append } from './utils';\n\nexport default class Info {\n constructor(art) {\n this.art = art;\n this.init();\n }\n\n init() {\n const { refs: { $infoClose }, events: { proxy } } = this.art;\n proxy($infoClose, 'click', () => {\n this.hide();\n });\n }\n\n show() {\n const { $info, $infoPanel } = this.art.refs;\n $info.style.display = 'block';\n if (!$infoPanel.innerHTML) {\n append($infoPanel, this.creatInfo());\n this.getHeader();\n }\n clearTimeout(this.timer);\n this.loop();\n this.art.emit('info:show', $info);\n }\n\n creatInfo() {\n const infoHtml = [];\n\n infoHtml.push(`\n
\n
Player version:
\n
__VERSION__
\n
\n `);\n\n infoHtml.push(`\n
\n
Video url:
\n
\n
\n `);\n\n infoHtml.push(`\n
\n
Video type:
\n
loading...
\n
\n `);\n\n infoHtml.push(`\n
\n
Video size:
\n
loading...
\n
\n `);\n\n infoHtml.push(`\n
\n
Video volume:
\n
\n
\n `);\n\n infoHtml.push(`\n
\n
Video time:
\n
\n
\n `);\n\n infoHtml.push(`\n
\n
Video duration:
\n
\n
\n `);\n\n infoHtml.push(`\n
\n
Video resolution:
\n
\n x \n
\n
\n `);\n\n return infoHtml.join('');\n }\n\n getHeader() {\n const { option: { url }, refs: { $infoPanel } } = this.art;\n const types = Array.from($infoPanel.querySelectorAll('[data-head]'));\n fetch(url, {\n method: 'HEAD'\n }).then(data => {\n types.forEach(item => {\n const value = data.headers.get(item.dataset.head);\n item.innerHTML = value !== undefined ? value : 'unknown';\n });\n }).catch(() => {\n types.forEach(item => {\n item.innerHTML = 'unknown';\n });\n });\n }\n\n loop() {\n const { $infoPanel, $video } = this.art.refs;\n this.timer = setTimeout(() => {\n const types = Array.from($infoPanel.querySelectorAll('[data-video]'));\n types.forEach(item => {\n const value = $video[item.dataset.video];\n item.innerHTML = value !== undefined ? value : 'unknown';\n });\n this.loop();\n }, 1000);\n }\n\n hide() {\n const { $info } = this.art.refs;\n $info.style.display = 'none';\n clearTimeout(this.timer);\n this.art.emit('info:hide', $info);\n }\n}\n","import { errorHandle, getExt, setStyle } from './utils';\n\nexport default class Subtitle {\n constructor(art) {\n this.art = art;\n\n const { url } = this.art.option.subtitle;\n if (url) {\n this.checkExt(url);\n this.init();\n }\n }\n\n init() {\n const {\n events: { proxy },\n option: { subtitle },\n refs: { $video, $subtitle }\n } = this.art;\n\n setStyle($subtitle, subtitle.style || {});\n const $track = document.createElement('track');\n $track.default = true;\n $track.kind = 'metadata';\n\n this.load(subtitle.url).then(data => {\n $track.src = data;\n $video.appendChild($track);\n this.art.refs.$track = $track;\n if ($video.textTracks && $video.textTracks[0]) {\n const [track] = $video.textTracks;\n proxy(track, 'cuechange', () => {\n const [cue] = track.activeCues;\n $subtitle.innerHTML = '';\n if (cue) {\n const template = document.createElement('div');\n template.appendChild(cue.getCueAsHTML());\n $subtitle.innerHTML = template.innerHTML\n .split(/\\r?\\n/)\n .map(item => `

${item}

`)\n .join('');\n }\n this.art.emit('subtitle:update', $subtitle);\n });\n }\n });\n }\n\n load(url) {\n let type;\n return fetch(url)\n .then(response => {\n type = response.headers.get('Content-Type');\n return response.text();\n })\n .then(text => {\n if ((/x-subrip/gi).test(type)) {\n return this.srtToVtt(text);\n }\n return url;\n })\n .catch(err => {\n throw err;\n });\n }\n\n srtToVtt(text) {\n const vttText = 'WEBVTT \\r\\n\\r\\n'.concat(\n text\n .replace(/\\{\\\\([ibu])\\}/g, '')\n .replace(/\\{\\\\([ibu])1\\}/g, '<$1>')\n .replace(/\\{([ibu])\\}/g, '<$1>')\n .replace(/\\{\\/([ibu])\\}/g, '')\n .replace(/(\\d\\d:\\d\\d:\\d\\d),(\\d\\d\\d)/g, '$1.$2')\n .concat('\\r\\n\\r\\n')\n );\n return URL.createObjectURL(\n new Blob([vttText], {\n type: 'text/vtt'\n })\n );\n }\n\n checkExt(url) {\n const ext = getExt(url);\n errorHandle(\n ext === 'vtt' || ext === 'srt',\n `'subtitle.url' option require 'vtt' or 'srt' format, but got '${ext}'.`\n );\n }\n\n show() {\n const { $subtitle } = this.art.refs;\n $subtitle.style.display = 'block';\n this.art.emit('subtitle:show', $subtitle);\n }\n\n hide() {\n const { $subtitle } = this.art.refs;\n $subtitle.style.display = 'none';\n this.art.emit('subtitle:hide', $subtitle);\n }\n\n switch(url) {\n const { $track } = this.art.refs;\n this.checkExt(url);\n errorHandle($track, 'You need to initialize the subtitle option first.');\n this.load(url).then(data => {\n if (url !== data) {\n $track.src = data;\n this.art.emit('subtitle:switch', url);\n }\n });\n }\n}\n","export default class Events {\n constructor(art) {\n this.art = art;\n this.destroyEvents = [];\n this.proxy = this.proxy.bind(this);\n }\n\n proxy(target, name, callback, option = {}) {\n if (Array.isArray(name)) {\n name.forEach(item => this.proxy(target, item, callback, option));\n }\n\n target.addEventListener(name, callback, option);\n this.destroyEvents.push(() => {\n target.removeEventListener(name, callback, option);\n });\n }\n\n destroy() {\n this.destroyEvents.forEach(event => event());\n }\n}\n","export default class Hotkey {\n constructor(art) {\n this.art = art;\n if (this.art.option.hotkey) {\n this.init();\n }\n }\n\n init() {\n const {\n player,\n refs: { $player },\n events: { proxy }\n } = this.art;\n\n proxy(document, 'click', event => {\n this.art.isFocus = event.path.indexOf($player) > -1;\n });\n\n proxy(window, 'keydown', event => {\n if (this.art.isFocus) {\n const tag = document.activeElement.tagName.toUpperCase();\n const editable = document.activeElement.getAttribute('contenteditable');\n if (\n tag !== 'INPUT' &&\n tag !== 'TEXTAREA' &&\n editable !== '' &&\n editable !== 'true'\n ) {\n switch (event.keyCode) {\n case 39:\n event.preventDefault();\n player.seek(player.currentTime() + 10);\n break;\n case 37:\n event.preventDefault();\n player.seek(player.currentTime() - 10);\n break;\n case 38:\n event.preventDefault();\n player.volume(player.volume() + 0.05);\n break;\n case 40:\n event.preventDefault();\n player.volume(player.volume() - 0.05);\n break;\n case 32:\n event.preventDefault();\n player.toggle();\n break;\n default:\n break;\n }\n }\n }\n });\n }\n}\n","import { append, setStyle } from './utils';\n\nlet id = 0;\nexport default class Layers {\n constructor(art) {\n this.art = art;\n this.add = this.add.bind(this);\n this.art.option.layers.forEach(this.add);\n this.init();\n }\n\n init() {\n const { refs, player, events: { proxy } } = this.art;\n proxy(refs.$layers, 'click', event => {\n if (event.path[0] === refs.$layers) {\n player.pause();\n }\n });\n }\n\n add(option, callback) {\n const { refs } = this.art;\n id++;\n\n const $layer = document.createElement('div');\n $layer.setAttribute('data-art-layer-id', id);\n $layer.setAttribute('class', `art-layer art-layer-${option.name || id}`);\n $layer.style.zIndex = option.index || id;\n append($layer, option.html);\n setStyle($layer, option.style || {});\n refs.$layers.appendChild($layer);\n this.art.emit('layers:add', $layer);\n callback && callback($layer);\n }\n\n show() {\n const { $layers } = this.art.refs;\n $layers.style.display = 'block';\n this.art.emit('layers:show', $layers);\n }\n\n hide() {\n const { $layers } = this.art.refs;\n $layers.style.display = 'none';\n this.art.emit('layers:hide', $layers);\n }\n}\n","import icons from './icons';\nimport { append } from './utils';\n\nexport default class Loading {\n constructor(art) {\n this.art = art;\n this.init();\n }\n\n init() {\n const { option, refs: { $loading } } = this.art;\n append($loading, option.loading || icons.loading);\n }\n\n hide() {\n const { $loading } = this.art.refs;\n $loading.style.display = 'none';\n this.art.emit('loading:hide', $loading);\n }\n\n show() {\n const { $loading } = this.art.refs;\n $loading.style.display = 'flex';\n this.art.emit('loading:show', $loading);\n }\n}\n","export default class Notice {\n constructor(art) {\n this.art = art;\n this.timer = null;\n }\n\n show(msg, autoHide = true, time = 1000) {\n const { $notice } = this.art.refs;\n $notice.style.display = 'block';\n $notice.innerHTML = msg instanceof Error ? msg.message.trim() : msg;\n if (autoHide) {\n clearTimeout(this.timer);\n this.timer = setTimeout(() => {\n this.hide();\n }, time);\n }\n this.art.emit('notice:show', $notice);\n }\n\n hide() {\n const { $notice } = this.art.refs;\n $notice.style.display = 'none';\n this.art.emit('notice:hide', $notice);\n }\n}\n","import icons from './icons';\nimport { append } from './utils';\n\nexport default class Mask {\n constructor(art) {\n this.art = art;\n this.init();\n }\n\n init() {\n const {\n player,\n refs,\n events: { proxy }\n } = this.art;\n\n append(refs.$mask, icons.playBig);\n\n proxy(refs.$mask, 'click', () => {\n player.play();\n this.hide();\n });\n }\n\n show() {\n const { $mask } = this.art.refs;\n $mask.style.display = 'block';\n this.art.emit('mask:show', $mask);\n }\n\n hide() {\n const { $mask } = this.art.refs;\n $mask.style.display = 'none';\n this.art.emit('mask:show', $mask);\n }\n}\n","import './style';\nimport { deepMerge } from './utils';\nimport validOption from './verification/player';\nimport config from './config';\nimport Emitter from 'tiny-emitter';\nimport Template from './template';\nimport I18n from './i18n';\nimport Player from './player';\nimport Controls from './controls';\nimport Contextmenu from './contextmenu';\nimport Danmu from './danmu';\nimport Info from './info';\nimport Subtitle from './subtitle';\nimport Events from './events';\nimport Hotkey from './hotkey';\nimport Layers from './layers';\nimport Loading from './loading';\nimport Notice from './notice';\nimport Mask from './mask';\n\nlet id = 0;\nexport const instances = [];\n\nclass Artplayer extends Emitter {\n constructor(option) {\n super();\n this.emit('init:start');\n this.option = deepMerge({}, Artplayer.DEFAULTS, option);\n validOption(Artplayer.DEFAULTS, this.option);\n this.init();\n this.emit('init:end');\n }\n\n static get version() {\n return '__VERSION__';\n }\n\n static get config() {\n return config;\n }\n\n static get DEFAULTS() {\n return {\n container: '.artplayer',\n url: '',\n poster: '',\n volume: 0.7,\n thumbnails: {\n url: '',\n number: 60,\n width: 160,\n height: 90,\n column: 10\n },\n autoplay: false,\n loop: false,\n type: '',\n mimeCodec: '',\n layers: [],\n contextmenu: [],\n loading: '',\n theme: '#f00',\n hotkey: true,\n subtitle: {\n url: '',\n style: {}\n },\n controls: [],\n highlight: [],\n moreVideoAttr: {\n 'controls': false,\n 'preload': 'auto',\n 'webkit-playsinline': true,\n 'playsinline': true\n },\n lang: navigator.language.toLowerCase()\n };\n }\n\n static use(Plugin) {\n const name = Plugin.name.toLowerCase();\n const installedPlugins = this.plugins || (this.plugins = {});\n if (!installedPlugins[name]) {\n const args = Array.from(arguments).slice(1);\n args.unshift(this);\n installedPlugins[name] = new Plugin(...args);\n this.prototype.emit('use', Plugin);\n }\n return this;\n }\n\n init() {\n this.isError = false;\n this.isFocus = false;\n this.isPlaying = false;\n this.refs = {};\n\n if (this.option.container instanceof Element) {\n this.refs.$container = this.option.container;\n } else {\n this.refs.$container = document.querySelector(this.option.container);\n }\n\n this.template = new Template(this);\n this.i18n = new I18n(this);\n this.notice = new Notice(this);\n this.events = new Events(this);\n this.player = new Player(this);\n this.layers = new Layers(this);\n this.controls = new Controls(this);\n this.contextmenu = new Contextmenu(this);\n this.danmu = new Danmu(this);\n this.subtitle = new Subtitle(this);\n this.info = new Info(this);\n this.loading = new Loading(this);\n this.hotkey = new Hotkey(this);\n this.mask = new Mask(this);\n\n this.id = id++;\n instances.push(this);\n return this;\n }\n\n destroy(removeHtml = false) {\n this.events.destroy();\n instances.splice(instances.indexOf(this), 1);\n if (removeHtml) {\n this.refs.$container.innerHTML = '';\n }\n this.emit('destroy');\n }\n}\n\nwindow.Artplayer = Artplayer;\nexport default Artplayer;\n"],"names":["_typeof","ArtPlayerError","message","context","Error","captureStackTrace","constructor","name","errorHandle","condition","msg","isFun","clamp","num","a","b","Math","max","min","getExt","url","includes","split","trim","toLowerCase","pop","append","parent","child","Element","appendChild","insertAdjacentHTML","lastElementChild","setStyle","element","styles","Object","keys","forEach","key","style","secondToTime","second","add0","String","hour","floor","sec","map","join","deepMerge","isObject","value","returnValue","sources","source","Array","isArray","entries","Reflect","has","getStorage","storage","JSON","parse","localStorage","getItem","setStorage","assign","setItem","stringify","getType","val","toString","prototype","type","call","slice","replace","validOption","DEFAULTS","option","path","defaultValue","defaultType","concat","mp4","webm","ts","mediaSource","propertys","methods","events","sourceBuffer","sourceBufferList","mimeCodec","mse","video","Template","art","init","refs","$container","innerHTML","$player","querySelector","$video","$subtitle","$bottom","$progress","$controls","$controlsLeft","$controlsRight","$layers","$loading","$notice","$mask","$info","$infoPanel","$infoClose","i18nMap","I18n","language","lang","callback","Player","eventBind","moreVideoAttr","volume","poster","autoplay","src","proxy","i18n","notice","config","eventName","event","emit","on","loading","show","hide","controls","mask","promise","play","undefined","then","catch","err","console","warn","isPlaying","loop","seek","isError","classList","add","get","destroy","pause","time","newTime","duration","currentTime","percentage","parseInt","rate","newRate","playbackRate","Danmu","Fullscreen","Pip","icons","playBig","volumeClose","creatDomFromSvg","result","tmp","document","createElement","childNodes","PlayAndPause","player","$play","$control","$pause","display","Progress","isDroging","getLoaded","bind","getPlayed","set","highlight","theme","$loaded","$played","$highlight","$indicator","$tip","filter","item","disable","left","Number","text","indexOf","showHighlight","showTime","target","getPosFromEvent","remove","dataset","clientWidth","width","tipWidth","buffered","length","end","Subtitle","Time","getTime","Volume","$volume","$volumeClose","$volumePanel","$volumeHandle","setVolumeHandle","setTimeout","volumeChangeFromEvent","getBoundingClientRect","panelLeft","panelWidth","handleWidth","x","Setting","Thumbnails","showThumbnails","posWidth","thumbnails","height","number","column","perWidth","perIndex","ceil","yIndex","xIndex","backgroundImage","backgroundPosition","id","Controls","$map","top","right","mount","position","index","control","setAttribute","commonMethod","push","apply","sort","controlIndex","defineProperty","Contextmenu","contextmenu","html","click","info","preventDefault","isFocus","$contextmenu","creatMenu","setPos","$menu","mouseX","clientX","mouseY","clientY","cHeight","cWidth","cLeft","cTop","mHeight","mWidth","menuLeft","menuTop","Info","creatInfo","getHeader","clearTimeout","timer","infoHtml","types","from","querySelectorAll","fetch","method","data","headers","head","subtitle","checkExt","$track","default","kind","load","textTracks","track","activeCues","cue","template","getCueAsHTML","response","test","srtToVtt","vttText","URL","createObjectURL","Blob","ext","Events","destroyEvents","addEventListener","removeEventListener","Hotkey","hotkey","window","tag","activeElement","tagName","toUpperCase","editable","getAttribute","keyCode","toggle","Layers","layers","$layer","zIndex","Loading","Notice","autoHide","Mask","instances","Artplayer","container","danmu","removeHtml","splice","Plugin","installedPlugins","plugins","args","arguments","unshift","navigator","Emitter"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"artplayer.js","sources":["../../node_modules/@babel/runtime/helpers/setPrototypeOf.js","../../node_modules/@babel/runtime/helpers/construct.js","../../node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","../../node_modules/@babel/runtime/helpers/iterableToArray.js","../../node_modules/@babel/runtime/helpers/nonIterableSpread.js","../../node_modules/@babel/runtime/helpers/toConsumableArray.js","../../node_modules/@babel/runtime/helpers/classCallCheck.js","../../node_modules/@babel/runtime/helpers/createClass.js","../../node_modules/@babel/runtime/helpers/typeof.js","../../node_modules/@babel/runtime/helpers/assertThisInitialized.js","../../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","../../node_modules/@babel/runtime/helpers/getPrototypeOf.js","../../node_modules/@babel/runtime/helpers/inherits.js","../../node_modules/@babel/runtime/helpers/defineProperty.js","../../node_modules/@babel/runtime/helpers/objectSpread.js","../../node_modules/@babel/runtime/helpers/isNativeFunction.js","../../node_modules/@babel/runtime/helpers/wrapNativeSuper.js","../../src/utils/index.js","../../src/verification/player.js","../../src/config/mimeCodec.js","../../src/config/mse.js","../../src/config/video.js","../../src/config/index.js","../../node_modules/tiny-emitter/index.js","../../src/template.js","../../src/i18n.js","../../src/player.js","../../src/controls/danmu.js","../../src/controls/fullscreen.js","../../src/controls/pip.js","../../node_modules/@babel/runtime/helpers/arrayWithHoles.js","../../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","../../node_modules/@babel/runtime/helpers/nonIterableRest.js","../../node_modules/@babel/runtime/helpers/slicedToArray.js","../../src/icons/index.js","../../src/controls/playAndPause.js","../../src/controls/progress.js","../../src/controls/subtitle.js","../../src/controls/time.js","../../src/controls/volume.js","../../src/controls/setting.js","../../src/controls/thumbnails.js","../../src/controls/index.js","../../src/contextmenu.js","../../src/danmu.js","../../src/info.js","../../src/subtitle.js","../../src/events.js","../../src/hotkey.js","../../src/layers.js","../../src/loading.js","../../src/notice.js","../../src/mask.js","../../src/index.js"],"sourcesContent":["function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;","var setPrototypeOf = require(\"./setPrototypeOf\");\n\nfunction isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n module.exports = _construct = Reflect.construct;\n } else {\n module.exports = _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\n\nmodule.exports = _construct;","function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n}\n\nmodule.exports = _arrayWithoutHoles;","function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nmodule.exports = _nonIterableSpread;","var arrayWithoutHoles = require(\"./arrayWithoutHoles\");\n\nvar iterableToArray = require(\"./iterableToArray\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;","function _typeof2(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return _typeof2(obj);\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;","var _typeof = require(\"../helpers/typeof\");\n\nvar assertThisInitialized = require(\"./assertThisInitialized\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;","var setPrototypeOf = require(\"./setPrototypeOf\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits;","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;","var defineProperty = require(\"./defineProperty\");\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nmodule.exports = _objectSpread;","function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\n\nmodule.exports = _isNativeFunction;","var getPrototypeOf = require(\"./getPrototypeOf\");\n\nvar setPrototypeOf = require(\"./setPrototypeOf\");\n\nvar isNativeFunction = require(\"./isNativeFunction\");\n\nvar construct = require(\"./construct\");\n\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n module.exports = _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n}\n\nmodule.exports = _wrapNativeSuper;","export class ArtPlayerError extends Error {\n constructor(message, context) {\n super(message);\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, context || this.constructor);\n }\n this.name = 'ArtPlayerError';\n }\n}\n\nexport function errorHandle(condition, msg) {\n const isFun = typeof condition === 'function';\n if (isFun ? !isFun() : !condition) {\n throw new ArtPlayerError(msg);\n }\n}\n\nexport function clamp(num, a, b) {\n return Math.max(Math.min(num, Math.max(a, b)), Math.min(a, b));\n}\n\nexport function getExt(url) {\n if (url.includes('?')) {\n return getExt(url.split('?')[0]);\n }\n\n if (url.includes('#')) {\n return getExt(url.split('#')[0]);\n }\n\n return url\n .trim()\n .toLowerCase()\n .split('.')\n .pop();\n}\n\nexport function append(parent, child) {\n if (child instanceof Element) {\n parent.appendChild(child);\n } else {\n parent.insertAdjacentHTML('beforeend', child);\n }\n return parent.lastElementChild;\n}\n\nexport function setStyle(element, styles) {\n Object.keys(styles).forEach(key => {\n element.style[key] = styles[key];\n });\n return element;\n}\n\nexport function secondToTime(second) {\n const add0 = num => (num < 10 ? `0${num}` : String(num));\n const hour = Math.floor(second / 3600);\n const min = Math.floor((second - hour * 3600) / 60);\n const sec = Math.floor(second - hour * 3600 - min * 60);\n return (hour > 0 ? [hour, min, sec] : [min, sec]).map(add0).join(':');\n}\n\nexport function deepMerge(...sources) {\n const isObject = value => value !== null && typeof value === 'object';\n let returnValue = {};\n for (const source of sources) {\n if (Array.isArray(source)) {\n if (!Array.isArray(returnValue)) {\n returnValue = [];\n }\n returnValue = [...returnValue, ...source];\n } else if (isObject(source)) {\n for (const key in source) {\n if (source.hasOwnProperty(key)) {\n let value = source[key];\n if (isObject(value) && key in returnValue) {\n value = deepMerge(returnValue[key], value);\n }\n returnValue = { ...returnValue, [key]: value };\n }\n }\n }\n }\n return returnValue;\n}\n\nexport function getStorage(key) {\n const storage = JSON.parse(localStorage.getItem('artplayer_settings')) || {};\n return key ? storage[key] : storage;\n}\n\nexport function setStorage(key, value) {\n const storage = Object.assign({}, getStorage(), {\n [key]: value\n });\n localStorage.setItem('artplayer_settings', JSON.stringify(storage));\n}\n\nexport function getType(val) {\n const { toString } = Object.prototype;\n const type = toString.call(val).slice(8, -1).toLowerCase().replace(/\\s/g, '');\n return type;\n}\n","import { errorHandle, getType } from '../utils';\n\nexport default function validOption(DEFAULTS, option, path = ['option']) {\n Object.keys(DEFAULTS).forEach(key => {\n const defaultValue = DEFAULTS[key];\n const value = option[key];\n const defaultType = getType(defaultValue);\n const type = getType(value);\n errorHandle(\n defaultType === type,\n `'${path.join('.')}.${key}' require '${defaultType}' type, but got '${type}'`\n );\n\n if (type === 'object') {\n validOption(defaultValue, value, path.concat(key));\n }\n\n if (path.length === 1) {\n if (key === 'layers') {\n value.forEach((item, index) => {\n validOption(\n {\n name: '',\n index: 0,\n html: '',\n style: {}\n },\n item,\n path.concat(`${key}[${index}]`)\n );\n });\n }\n\n if (key === 'contextmenu') {\n value.forEach((item, index) => {\n validOption(\n {\n name: '',\n click: new Function(),\n html: '',\n style: {}\n },\n item,\n path.concat(`${key}[${index}]`)\n );\n });\n }\n\n if (key === 'highlight') {\n value.forEach((item, index) => {\n validOption(\n {\n time: 0,\n text: ''\n },\n item,\n path.concat(`${key}[${index}]`)\n );\n });\n }\n\n if (key === 'controls') {\n value.forEach((item, index) => {\n if (item.option) {\n validOption(\n {\n disable: false,\n position: '',\n index: 0\n },\n item.option,\n path.concat(`${key}[${index}]`)\n );\n }\n });\n }\n }\n });\n}\n","export default {\n mp4: 'video/mp4; codecs=\"avc1.42E01E, mp4a.40.2\"',\n webm: 'video/webm; codecs=\"vorbis, vp8\"',\n ts: 'video/mp2t; codecs=\"avc1.42E01E, mp4a.40.2\"'\n};\n","export default {\n mediaSource: {\n propertys: [\n 'activeSourceBuffers',\n 'duration',\n 'readyState',\n 'sourceBuffers'\n ],\n methods: [\n 'addSourceBuffer',\n 'endOfStream',\n 'removeSourceBuffer',\n 'clearLiveSeekableRange',\n 'setLiveSeekableRange'\n ],\n events: [\n 'sourceclose',\n 'sourceended',\n 'sourceopen'\n ]\n },\n sourceBuffer: {\n propertys: [\n 'mode',\n 'updating',\n 'buffered',\n 'timestampOffset',\n 'audioTracks',\n 'videoTracks',\n 'textTracks',\n 'appendWindowStart',\n 'appendWindowEnd',\n 'trackDefaults'\n ],\n methods: [\n 'appendBuffer',\n 'appendStream',\n 'abort',\n 'remove'\n ],\n events: [\n 'abort',\n 'error',\n 'update',\n 'updateend',\n 'updatestart'\n ]\n },\n sourceBufferList: {\n propertys: [\n 'length'\n ],\n events: [\n 'addsourcebuffer',\n 'removesourcebuffer'\n ]\n }\n};\n","export default {\n propertys: [\n 'audioTracks',\n 'autoplay',\n 'buffered',\n 'controller',\n 'controls',\n 'crossOrigin',\n 'currentSrc',\n 'currentTime',\n 'defaultMuted',\n 'defaultPlaybackRate',\n 'duration',\n 'ended',\n 'error',\n 'loop',\n 'mediaGroup',\n 'muted',\n 'networkState',\n 'paused',\n 'playbackRate',\n 'played',\n 'preload',\n 'readyState',\n 'seekable',\n 'seeking',\n 'src',\n 'startDate',\n 'textTracks',\n 'videoTracks',\n 'volume'\n ],\n methods: [\n 'addTextTrack',\n 'canPlayType',\n 'load',\n 'play',\n 'pause'\n ],\n events: [\n 'abort',\n 'canplay',\n 'canplaythrough',\n 'durationchange',\n 'emptied',\n 'ended',\n 'error',\n 'loadeddata',\n 'loadedmetadata',\n 'loadstart',\n 'pause',\n 'play',\n 'playing',\n 'progress',\n 'ratechange',\n 'seeked',\n 'seeking',\n 'stalled',\n 'suspend',\n 'timeupdate',\n 'volumechange',\n 'waiting'\n ]\n};\n","import mimeCodec from './mimeCodec';\nimport mse from './mse';\nimport video from './video';\n\nexport default {\n mimeCodec,\n mse,\n video\n};\n","function E () {\n // Keep this empty so it's easier to inherit from\n // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n on: function (name, callback, ctx) {\n var e = this.e || (this.e = {});\n\n (e[name] || (e[name] = [])).push({\n fn: callback,\n ctx: ctx\n });\n\n return this;\n },\n\n once: function (name, callback, ctx) {\n var self = this;\n function listener () {\n self.off(name, listener);\n callback.apply(ctx, arguments);\n };\n\n listener._ = callback\n return this.on(name, listener, ctx);\n },\n\n emit: function (name) {\n var data = [].slice.call(arguments, 1);\n var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n var i = 0;\n var len = evtArr.length;\n\n for (i; i < len; i++) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n\n return this;\n },\n\n off: function (name, callback) {\n var e = this.e || (this.e = {});\n var evts = e[name];\n var liveEvents = [];\n\n if (evts && callback) {\n for (var i = 0, len = evts.length; i < len; i++) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n liveEvents.push(evts[i]);\n }\n }\n\n // Remove event from queue to prevent memory leak\n // Suggested by https://github.com/lazd\n // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n (liveEvents.length)\n ? e[name] = liveEvents\n : delete e[name];\n\n return this;\n }\n};\n\nmodule.exports = E;\n","export default class Template {\n constructor(art) {\n this.art = art;\n this.init();\n }\n\n init() {\n const { refs } = this.art;\n refs.$container.innerHTML = `\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
[x]
\n
\n
\n `;\n refs.$player = refs.$container.querySelector('.artplayer-video-player');\n refs.$video = refs.$container.querySelector('.artplayer-video');\n refs.$subtitle = refs.$container.querySelector('.artplayer-subtitle');\n refs.$bottom = refs.$container.querySelector('.artplayer-bottom');\n refs.$progress = refs.$container.querySelector('.artplayer-progress');\n refs.$controls = refs.$container.querySelector('.artplayer-controls');\n refs.$controlsLeft = refs.$container.querySelector('.artplayer-controls-left');\n refs.$controlsRight = refs.$container.querySelector('.artplayer-controls-right');\n refs.$layers = refs.$container.querySelector('.artplayer-layers');\n refs.$loading = refs.$container.querySelector('.artplayer-loading');\n refs.$notice = refs.$container.querySelector('.artplayer-notice');\n refs.$mask = refs.$container.querySelector('.artplayer-mask');\n refs.$info = refs.$container.querySelector('.artplayer-info');\n refs.$infoPanel = refs.$container.querySelector('.artplayer-info-panel');\n refs.$infoClose = refs.$container.querySelector('.artplayer-info-close');\n }\n}\n","let i18nMap = {\n 'zh-cn': {\n 'About author': '关于作者',\n 'Video info': '视频统计信息',\n 'Close': '关闭',\n 'Video load failed': '视频加载失败',\n 'Volume': '音量',\n 'Start': '开始',\n 'Pause': '暂停',\n 'Rate': '速度'\n },\n 'zh-tw': {\n 'About author': '關於作者',\n 'Video info': '影片統計訊息',\n 'Close': '關閉',\n 'Video load failed': '影片載入失敗',\n 'Volume': '音量',\n 'Start': '開始',\n 'Pause': '暫停',\n 'Rate': '速度'\n }\n};\n\nexport default class I18n {\n constructor({ option }) {\n this.option = option;\n this.init();\n }\n\n init() {\n this.language = i18nMap[this.option.lang.toLowerCase()] || {};\n }\n\n get(key) {\n return this.language[key] || key;\n }\n\n update(callback) {\n i18nMap = callback(i18nMap);\n this.init();\n }\n}\n","import { clamp, secondToTime } from './utils';\nimport config from './config';\n\nexport default class Player {\n constructor(art) {\n this.art = art;\n this.init();\n this.eventBind();\n }\n\n init() {\n const { option, refs: { $video } } = this.art;\n Object.keys(option.moreVideoAttr).forEach(key => {\n const value = option.moreVideoAttr[key];\n $video[key] = value;\n });\n $video.volume = clamp(option.volume, 0, 1);\n $video.poster = option.poster;\n $video.autoplay = option.autoplay;\n $video.src = option.url;\n }\n\n eventBind() {\n const { events: { proxy }, refs: { $player, $video }, i18n, notice } = this.art;\n\n config.video.events.forEach(eventName => {\n proxy($video, eventName, event => {\n this.art.emit(`video:${event.type}`, event);\n });\n });\n\n this.art.on('video:loadstart', () => {\n this.art.loading.show();\n });\n\n this.art.on('video:loadeddata', () => {\n this.art.loading.hide();\n });\n\n this.art.on('video:waiting', () => {\n this.art.loading.show();\n });\n\n this.art.on('video:seeking', () => {\n this.art.loading.show();\n });\n\n this.art.on('video:canplay', () => {\n this.art.controls.show();\n this.art.mask.show();\n this.art.loading.hide();\n if (this.art.option.autoplay) {\n const promise = this.play();\n if (promise !== undefined) {\n promise.then().catch(err => {\n console.warn(err);\n });\n }\n }\n });\n\n this.art.on('video:playing', () => {\n this.art.isPlaying = true;\n this.art.controls.hide();\n this.art.mask.hide();\n });\n\n this.art.on('video:pause', () => {\n this.art.isPlaying = false;\n this.art.controls.show();\n this.art.mask.show();\n });\n\n this.art.on('video:ended', () => {\n this.art.isPlaying = false;\n this.art.controls.show();\n this.art.mask.show();\n if (this.art.option.loop) {\n this.seek(0);\n this.play();\n }\n });\n\n this.art.on('video:error', () => {\n this.art.isError = true;\n this.art.isPlaying = false;\n this.art.loading.hide();\n this.art.controls.hide();\n $player.classList.add('artplayer-error');\n notice.show(i18n.get('Video load failed'), false);\n this.art.destroy();\n });\n }\n\n play() {\n const { refs: { $video }, i18n, notice } = this.art;\n const promise = $video.play();\n notice.show(i18n.get('Start'));\n this.art.emit('play', $video);\n return promise;\n }\n\n pause() {\n const { refs: { $video }, i18n, notice } = this.art;\n $video.pause();\n notice.show(i18n.get('Pause'));\n this.art.emit('pause', $video);\n }\n\n toggle() {\n if (this.art.isPlaying) {\n this.pause();\n } else {\n this.play();\n }\n }\n\n seek(time) {\n const { refs: { $video }, notice } = this.art;\n let newTime = Math.max(time, 0);\n if ($video.duration) {\n newTime = Math.min(newTime, $video.duration);\n }\n $video.currentTime = newTime;\n notice.show(`${secondToTime(newTime)} / ${secondToTime($video.duration)}`);\n this.art.emit('seek', newTime);\n }\n\n volume(percentage) {\n const { refs: { $video }, i18n, notice } = this.art;\n if (percentage !== undefined) {\n $video.volume = clamp(percentage, 0, 1);\n notice.show(`${i18n.get('Volume')}: ${parseInt($video.volume * 100)}`);\n this.art.emit('volume', $video.volume);\n }\n return $video.volume || 0;\n }\n\n currentTime() {\n return this.art.refs.$video.currentTime || 0;\n }\n\n duration() {\n return this.art.refs.$video.duration || 0;\n }\n\n playbackRate(rate) {\n const { refs: { $video }, i18n, notice } = this.art;\n const newRate = clamp(rate, 0.1, 10);\n $video.playbackRate = newRate;\n notice.show(`${i18n.get('Rate')}: ${newRate}x`);\n this.art.emit('playbackRate', newRate);\n }\n}\n","export default class Danmu {\n constructor(option) {\n this.option = option;\n }\n\n apply(art) {\n this.art = art;\n }\n}\n","export default class Fullscreen {\n constructor(option) {\n this.option = option;\n }\n\n apply(art) {\n this.art = art;\n }\n}\n","export default class Pip {\n constructor(option) {\n this.option = option;\n }\n\n apply(art) {\n this.art = art;\n }\n}\n","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;","function _iterableToArrayLimit(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}\n\nmodule.exports = _nonIterableRest;","var arrayWithHoles = require(\"./arrayWithHoles\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit\");\n\nvar nonIterableRest = require(\"./nonIterableRest\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;","import loading from './loading.svg';\nimport playBig from './play-big.svg';\nimport play from './play.svg';\nimport pause from './pause.svg';\nimport volume from './volume.svg';\nimport volumeClose from './volume-close.svg';\n\nconst icons = {\n loading,\n playBig,\n play,\n pause,\n volume,\n volumeClose\n};\n\nfunction creatDomFromSvg(map) {\n const result = {};\n Object.keys(map).forEach(name => {\n const tmp = document.createElement('div');\n tmp.innerHTML = `${map[name]}`;\n [result[name]] = tmp.childNodes;\n });\n return result;\n}\n\nexport default creatDomFromSvg(icons);\n","import { append } from '../utils';\nimport icons from '../icons';\n\nexport default class PlayAndPause {\n constructor(option) {\n this.option = option;\n }\n\n apply(art) {\n this.art = art;\n this.init();\n }\n\n init() {\n const { events: { proxy }, player } = this.art;\n\n this.$play = append(this.option.$control, icons.play);\n this.$pause = append(this.option.$control, icons.pause);\n this.$pause.style.display = 'none';\n\n proxy(this.$play, 'click', () => {\n player.play();\n });\n\n proxy(this.$pause, 'click', () => {\n player.pause();\n });\n\n this.art.on('video:playing', () => {\n this.$play.style.display = 'none';\n this.$pause.style.display = 'block';\n });\n\n this.art.on('video:pause', () => {\n this.$play.style.display = 'block';\n this.$pause.style.display = 'none';\n });\n }\n}\n","import { append } from '../utils';\n\nexport default class Progress {\n constructor(option) {\n this.option = option;\n }\n\n apply(art) {\n this.art = art;\n this.isDroging = false;\n this.getLoaded = this.getLoaded.bind(this);\n this.getPlayed = this.getPlayed.bind(this);\n this.set = this.set.bind(this);\n this.init();\n }\n\n init() {\n const {\n option: { highlight, theme },\n events: { proxy },\n refs: { $video },\n player\n } = this.art;\n\n append(\n this.option.$control,\n `\n
\n
\n
\n
\n
\n
\n
\n `\n );\n\n this.$loaded = this.option.$control.querySelector('.art-progress-loaded');\n this.$played = this.option.$control.querySelector('.art-progress-played');\n this.$highlight = this.option.$control.querySelector('.art-progress-highlight');\n this.$indicator = this.option.$control.querySelector('.art-progress-indicator');\n this.$tip = this.option.$control.querySelector('.art-progress-tip');\n\n this.art.on('video:canplay', () => {\n this.set('loaded', this.getLoaded());\n highlight.filter(item => !item.disable).forEach(item => {\n const left = Number(item.time) / $video.duration;\n append(this.$highlight, `\n \n `\n );\n });\n });\n\n this.art.on('video:progress', () => {\n this.set('loaded', this.getLoaded());\n });\n\n this.art.on('video:timeupdate', () => {\n this.set('played', this.getPlayed());\n });\n\n this.art.on('video:ended', () => {\n this.set('played', 1);\n });\n\n proxy(this.option.$control, 'mousemove', event => {\n this.$tip.style.display = 'block';\n if (event.path.indexOf(this.$highlight) > -1) {\n this.showHighlight(event);\n } else {\n this.showTime(event);\n }\n });\n\n proxy(this.option.$control, 'mouseout', () => {\n this.$tip.style.display = 'none';\n });\n\n proxy(this.option.$control, 'click', event => {\n if (event.target !== this.$indicator) {\n const { second, percentage } = this.getPosFromEvent(event);\n this.set('played', percentage);\n player.seek(second);\n }\n });\n\n proxy(this.$indicator, 'mousedown', () => {\n this.isDroging = true;\n });\n\n proxy(document, 'mousemove', event => {\n if (this.isDroging) {\n const { second, percentage } = this.getPosFromEvent(event);\n this.$indicator.classList.add('show-indicator');\n this.set('played', percentage);\n player.seek(second);\n }\n });\n\n proxy(document, 'mouseup', () => {\n if (this.isDroging) {\n this.isDroging = false;\n this.$indicator.classList.remove('show-indicator');\n }\n });\n }\n\n showHighlight(event) {\n const { $video } = this.art.refs;\n const { text, time } = event.target.dataset;\n this.$tip.innerHTML = text;\n const left =\n Number(time) / $video.duration * this.option.$control.clientWidth +\n event.target.clientWidth / 2 -\n this.$tip.clientWidth / 2;\n this.$tip.style.left = `${left}px`;\n }\n\n showTime(event) {\n const { width, time } = this.getPosFromEvent(event);\n const tipWidth = this.$tip.clientWidth;\n this.$tip.innerHTML = time;\n if (width <= tipWidth / 2) {\n this.$tip.style.left = 0;\n } else if (width > this.option.$control.clientWidth - tipWidth / 2) {\n this.$tip.style.left = `${this.option.$control.clientWidth - tipWidth}px`;\n } else {\n this.$tip.style.left = `${width - tipWidth / 2}px`;\n }\n }\n\n getPlayed() {\n const { $video } = this.art.refs;\n return $video.currentTime / $video.duration;\n }\n\n getLoaded() {\n const { $video } = this.art.refs;\n return $video.buffered.length\n ? $video.buffered.end($video.buffered.length - 1) / $video.duration\n : 0;\n }\n\n set(type, percentage) {\n this[`$${type}`].style.width = `${percentage * 100}%`;\n if (type === 'played') {\n this.$indicator.style.left = `calc(${percentage * 100}% - 6.5px)`;\n }\n }\n}\n","export default class Subtitle {\n constructor(option) {\n this.option = option;\n }\n\n apply(art) {\n this.art = art;\n }\n}\n","import { secondToTime } from '../utils';\n\nexport default class Time {\n constructor(option) {\n this.option = option;\n }\n\n apply(art) {\n this.art = art;\n this.init();\n }\n\n init() {\n this.option.$control.innerHTML = '00:00 / 00:00';\n\n this.art.on('video:canplay', () => {\n this.option.$control.innerHTML = this.getTime();\n });\n\n this.art.on('video:timeupdate', () => {\n this.option.$control.innerHTML = this.getTime();\n });\n\n this.art.on('video:seeking', () => {\n this.option.$control.innerHTML = this.getTime();\n });\n }\n\n getTime() {\n const { player } = this.art;\n return `${secondToTime(player.currentTime())} / ${secondToTime(player.duration())}`;\n }\n}\n","import { append, setStorage, getStorage, clamp } from '../utils';\nimport icons from '../icons';\n\nexport default class Volume {\n constructor(option) {\n this.option = option;\n }\n\n apply(art) {\n this.art = art;\n this.isDroging = false;\n this.init();\n }\n\n init() {\n const { events: { proxy }, player } = this.art;\n this.$volume = append(this.option.$control, icons.volume);\n this.$volumeClose = append(this.option.$control, icons.volumeClose);\n this.$volumePanel = append(this.option.$control, '
');\n this.$volumeHandle = append(this.$volumePanel, '
');\n this.$volumeClose.style.display = 'none';\n\n const volume = getStorage('volume');\n this.setVolumeHandle(volume);\n player.volume(volume);\n\n proxy(this.$volume, 'click', () => {\n this.$volume.style.display = 'none';\n this.$volumeClose.style.display = 'block';\n setStorage('volume', player.volume());\n player.volume(0);\n });\n\n proxy(this.$volumeClose, 'click', () => {\n this.$volume.style.display = 'block';\n this.$volumeClose.style.display = 'none';\n player.volume(getStorage('volume'));\n });\n\n proxy(this.option.$control, 'mouseenter', () => {\n this.$volumePanel.classList.add('art-volume-panel-hover');\n\n // TODO\n setTimeout(() => {\n this.setVolumeHandle(player.volume());\n }, 200);\n });\n\n proxy(this.option.$control, 'mouseleave', () => {\n this.$volumePanel.classList.remove('art-volume-panel-hover');\n });\n\n proxy(this.$volumePanel, 'click', event => {\n this.volumeChangeFromEvent(event);\n });\n\n proxy(this.$volumeHandle, 'mousedown', () => {\n this.isDroging = true;\n });\n\n proxy(this.$volumeHandle, 'mousemove', event => {\n if (this.isDroging) {\n this.volumeChangeFromEvent(event);\n }\n });\n\n proxy(document, 'mouseup', () => {\n if (this.isDroging) {\n this.isDroging = false;\n }\n });\n\n this.art.on('video:volumechange', () => {\n const percentage = player.volume();\n this.setVolumeHandle(percentage);\n if (percentage === 0) {\n this.$volume.style.display = 'none';\n this.$volumeClose.style.display = 'block';\n } else {\n this.$volume.style.display = 'block';\n this.$volumeClose.style.display = 'none';\n }\n });\n }\n\n volumeChangeFromEvent(event) {\n const { player } = this.art;\n const { left: panelLeft, width: panelWidth } = this.$volumePanel.getBoundingClientRect();\n const { width: handleWidth } = this.$volumeHandle.getBoundingClientRect();\n const percentage = clamp(event.x - panelLeft - handleWidth / 2, 0, panelWidth - handleWidth / 2) / (panelWidth - handleWidth);\n setStorage('volume', percentage);\n player.volume(percentage);\n }\n\n setVolumeHandle(percentage = 0.7) {\n const { width: panelWidth } = this.$volumePanel.getBoundingClientRect();\n const { width: handleWidth } = this.$volumeHandle.getBoundingClientRect();\n const width = handleWidth / 2 + (panelWidth - handleWidth) * percentage - handleWidth / 2;\n this.$volumeHandle.style.left = `${width}px`;\n }\n}\n","export default class Setting {\n constructor(option) {\n this.option = option;\n }\n\n apply(art) {\n this.art = art;\n }\n}\n","export default class Thumbnails {\n constructor(option) {\n this.option = option;\n }\n\n apply(art) {\n this.art = art;\n this.init();\n }\n\n init() {\n const {\n refs: { $progress },\n events: { proxy }\n } = this.art;\n\n proxy($progress, 'mousemove', event => {\n this.option.$control.style.display = 'block';\n this.showThumbnails(event);\n });\n\n proxy($progress, 'mouseout', () => {\n this.option.$control.style.display = 'none';\n });\n }\n\n showThumbnails(event) {\n const { $progress } = this.art.refs;\n const { width: posWidth } = this.getPosFromEvent(event);\n const { url, height, width, number, column } = this.art.option.thumbnails;\n const perWidth = $progress.clientWidth / number;\n const perIndex = Math.ceil(posWidth / perWidth);\n let yIndex = Math.ceil(perIndex / column);\n let xIndex = perIndex % column || column;\n\n this.option.$control.style.backgroundImage = `url(${url})`;\n this.option.$control.style.height = `${height}px`;\n this.option.$control.style.width = `${width}px`;\n this.option.$control.style.backgroundPosition = `-${--xIndex * width}px -${--yIndex * height}px`;\n\n if (posWidth <= width / 2) {\n this.option.$control.style.left = 0;\n } else if (posWidth > $progress.clientWidth - width / 2) {\n this.option.$control.style.left = `${$progress.clientWidth - width}px`;\n } else {\n this.option.$control.style.left = `${posWidth - width / 2}px`;\n }\n }\n}\n","import { secondToTime, clamp } from '../utils';\nimport Danmu from './danmu';\nimport Fullscreen from './fullscreen';\nimport Pip from './pip';\nimport PlayAndPause from './playAndPause';\nimport Progress from './progress';\nimport Subtitle from './subtitle';\nimport Time from './time';\nimport Volume from './volume';\nimport Setting from './setting';\nimport Thumbnails from './thumbnails';\n\nlet id = 0;\nexport default class Controls {\n constructor(art) {\n this.art = art;\n this.$map = {};\n this.init();\n this.mount();\n }\n\n init() {\n this.add(new Progress({\n disable: false,\n position: 'top',\n index: 10\n }));\n\n this.add(new Thumbnails({\n disable: !this.art.option.thumbnails.url,\n position: 'top',\n index: 20\n }));\n\n this.add(new PlayAndPause({\n disable: false,\n position: 'left',\n index: 10\n }));\n\n this.add(new Volume({\n disable: false,\n position: 'left',\n index: 20\n }));\n\n this.add(new Time({\n disable: false,\n position: 'left',\n index: 30\n }));\n\n this.add(new Danmu({\n disable: false,\n position: 'right',\n index: 10\n }));\n\n this.add(new Subtitle({\n disable: false,\n position: 'right',\n index: 20\n }));\n\n this.add(new Setting({\n disable: false,\n position: 'right',\n index: 30\n }));\n\n this.add(new Pip({\n disable: false,\n position: 'right',\n index: 40\n }));\n\n this.add(new Fullscreen({\n disable: false,\n position: 'right',\n index: 50\n }));\n\n this.art.option.controls.forEach(item => {\n this.add(item);\n });\n }\n\n add(control) {\n const { option } = control;\n if (option && !option.disable) {\n id++;\n const name = control.constructor.name.toLowerCase() || `control${id}`;\n const $control = document.createElement('div');\n $control.setAttribute('class', `art-control art-control-${name}`);\n $control.setAttribute('data-control-index', String(option.index) || id);\n option.$control = $control;\n this.commonMethod(control);\n (this.$map[option.position] || (this.$map[option.position] = [])).push($control);\n control.apply && control.apply(this.art);\n this[name] = control;\n }\n }\n\n mount() {\n const { $progress, $controlsLeft, $controlsRight } = this.art.refs;\n Object.keys(this.$map).forEach(key => {\n this.$map[key]\n .sort(\n (a, b) =>\n Number(a.dataset.controlIndex) - Number(b.dataset.controlIndex)\n )\n .forEach($control => {\n switch (key) {\n case 'top':\n $progress.appendChild($control);\n break;\n case 'left':\n $controlsLeft.appendChild($control);\n break;\n case 'right':\n $controlsRight.appendChild($control);\n break;\n default:\n break;\n }\n });\n });\n }\n\n commonMethod(control) {\n Object.defineProperty(control, 'hide', {\n value: () => {\n control.option.$control.style.display = 'none';\n this.art.emit('control:hide', control.option.$control);\n }\n });\n\n Object.defineProperty(control, 'show', {\n value: () => {\n control.option.$control.style.display = 'block';\n this.art.emit('control:show', control.option.$control);\n }\n });\n\n Object.defineProperty(control, 'getPosFromEvent', {\n value: event => {\n const { $video, $progress } = this.art.refs;\n const { left } = $progress.getBoundingClientRect();\n const width = clamp(event.x - left, 0, $progress.clientWidth);\n const second = width / $progress.clientWidth * $video.duration;\n const time = secondToTime(second);\n const percentage = clamp(width / $progress.clientWidth, 0, 1);\n return { second, time, width, percentage };\n }\n });\n }\n\n show() {\n const { $player } = this.art.refs;\n $player.classList.add('controls-show');\n }\n\n hide() {\n const { $player } = this.art.refs;\n $player.classList.remove('controls-show');\n }\n}\n","import { append, setStyle } from './utils';\n\nlet id = 0;\nexport default class Contextmenu {\n constructor(art) {\n this.art = art;\n this.init();\n }\n\n init() {\n const {\n option,\n i18n,\n refs,\n events: { proxy }\n } = this.art;\n\n option.contextmenu.push(\n {\n name: 'info',\n html: i18n.get('Video info'),\n click: () => {\n this.art.info.show();\n }\n },\n {\n name: 'version',\n html: 'ArtPlayer __VERSION__'\n },\n {\n name: 'close',\n html: i18n.get('Close'),\n click: () => {\n this.hide();\n }\n }\n );\n\n proxy(refs.$player, 'contextmenu', event => {\n event.preventDefault();\n this.art.isFocus = true;\n if (!refs.$contextmenu) {\n this.creatMenu();\n }\n this.show();\n this.setPos(event);\n });\n\n proxy(refs.$player, 'click', event => {\n if (refs.$contextmenu && !event.path.includes(refs.$contextmenu)) {\n this.hide();\n }\n });\n }\n\n creatMenu() {\n const {\n option,\n refs,\n events: { proxy }\n } = this.art;\n refs.$contextmenu = document.createElement('div');\n refs.$contextmenu.classList.add('artplayer-contextmenu');\n option.contextmenu.forEach(item => {\n id++;\n const $menu = document.createElement('div');\n $menu.setAttribute('data-art-menu-id', id);\n $menu.setAttribute('class', `art-menu art-menu-${item.name || id}`);\n append($menu, item.html);\n setStyle($menu, item.style || {});\n if (item.click) {\n proxy($menu, 'click', event => {\n event.preventDefault();\n item.click(this.art, event);\n this.hide();\n this.art.emit('contextmenu:click', $menu);\n });\n }\n append(refs.$contextmenu, $menu);\n });\n append(refs.$player, refs.$contextmenu);\n }\n\n setPos(event) {\n const { refs } = this.art;\n const mouseX = event.clientX;\n const mouseY = event.clientY;\n const { height: cHeight, width: cWidth, left: cLeft, top: cTop } = refs.$player.getBoundingClientRect();\n const { height: mHeight, width: mWidth } = refs.$contextmenu.getBoundingClientRect();\n let menuLeft = mouseX - cLeft;\n let menuTop = mouseY - cTop;\n\n if (mouseX + mWidth > cLeft + cWidth) {\n menuLeft = cWidth - mWidth;\n }\n\n if (mouseY + mHeight > cTop + cHeight) {\n menuTop = cHeight - mHeight;\n }\n\n refs.$contextmenu.style.left = `${menuLeft}px`;\n refs.$contextmenu.style.top = `${menuTop}px`;\n }\n\n hide() {\n const { refs: { $contextmenu } } = this.art;\n if ($contextmenu) {\n $contextmenu.style.display = 'none';\n this.art.emit('contextmenu:hide', $contextmenu);\n }\n }\n\n show() {\n const { refs: { $contextmenu } } = this.art;\n if ($contextmenu) {\n $contextmenu.style.display = 'block';\n this.art.emit('contextmenu:show', $contextmenu);\n }\n }\n}\n","export default class Danmu {\n constructor(art) {\n this.art = art;\n }\n}\n","import { append } from './utils';\n\nexport default class Info {\n constructor(art) {\n this.art = art;\n this.init();\n }\n\n init() {\n const { refs: { $infoClose }, events: { proxy } } = this.art;\n proxy($infoClose, 'click', () => {\n this.hide();\n });\n }\n\n show() {\n const { $info, $infoPanel } = this.art.refs;\n $info.style.display = 'block';\n if (!$infoPanel.innerHTML) {\n append($infoPanel, this.creatInfo());\n this.getHeader();\n }\n clearTimeout(this.timer);\n this.loop();\n this.art.emit('info:show', $info);\n }\n\n creatInfo() {\n const infoHtml = [];\n\n infoHtml.push(`\n
\n
Player version:
\n
__VERSION__
\n
\n `);\n\n infoHtml.push(`\n
\n
Video url:
\n
\n
\n `);\n\n infoHtml.push(`\n
\n
Video type:
\n
loading...
\n
\n `);\n\n infoHtml.push(`\n
\n
Video size:
\n
loading...
\n
\n `);\n\n infoHtml.push(`\n
\n
Video volume:
\n
\n
\n `);\n\n infoHtml.push(`\n
\n
Video time:
\n
\n
\n `);\n\n infoHtml.push(`\n
\n
Video duration:
\n
\n
\n `);\n\n infoHtml.push(`\n
\n
Video resolution:
\n
\n x \n
\n
\n `);\n\n return infoHtml.join('');\n }\n\n getHeader() {\n const { option: { url }, refs: { $infoPanel } } = this.art;\n const types = Array.from($infoPanel.querySelectorAll('[data-head]'));\n fetch(url, {\n method: 'HEAD'\n }).then(data => {\n types.forEach(item => {\n const value = data.headers.get(item.dataset.head);\n item.innerHTML = value !== undefined ? value : 'unknown';\n });\n }).catch(() => {\n types.forEach(item => {\n item.innerHTML = 'unknown';\n });\n });\n }\n\n loop() {\n const { $infoPanel, $video } = this.art.refs;\n this.timer = setTimeout(() => {\n const types = Array.from($infoPanel.querySelectorAll('[data-video]'));\n types.forEach(item => {\n const value = $video[item.dataset.video];\n item.innerHTML = value !== undefined ? value : 'unknown';\n });\n this.loop();\n }, 1000);\n }\n\n hide() {\n const { $info } = this.art.refs;\n $info.style.display = 'none';\n clearTimeout(this.timer);\n this.art.emit('info:hide', $info);\n }\n}\n","import { errorHandle, getExt, setStyle } from './utils';\n\nexport default class Subtitle {\n constructor(art) {\n this.art = art;\n\n const { url } = this.art.option.subtitle;\n if (url) {\n this.checkExt(url);\n this.init();\n }\n }\n\n init() {\n const {\n events: { proxy },\n option: { subtitle },\n refs: { $video, $subtitle }\n } = this.art;\n\n setStyle($subtitle, subtitle.style || {});\n const $track = document.createElement('track');\n $track.default = true;\n $track.kind = 'metadata';\n\n this.load(subtitle.url).then(data => {\n $track.src = data;\n $video.appendChild($track);\n this.art.refs.$track = $track;\n if ($video.textTracks && $video.textTracks[0]) {\n const [track] = $video.textTracks;\n proxy(track, 'cuechange', () => {\n const [cue] = track.activeCues;\n $subtitle.innerHTML = '';\n if (cue) {\n const template = document.createElement('div');\n template.appendChild(cue.getCueAsHTML());\n $subtitle.innerHTML = template.innerHTML\n .split(/\\r?\\n/)\n .map(item => `

${item}

`)\n .join('');\n }\n this.art.emit('subtitle:update', $subtitle);\n });\n }\n });\n }\n\n load(url) {\n let type;\n return fetch(url)\n .then(response => {\n type = response.headers.get('Content-Type');\n return response.text();\n })\n .then(text => {\n if ((/x-subrip/gi).test(type)) {\n return this.srtToVtt(text);\n }\n return url;\n })\n .catch(err => {\n throw err;\n });\n }\n\n srtToVtt(text) {\n const vttText = 'WEBVTT \\r\\n\\r\\n'.concat(\n text\n .replace(/\\{\\\\([ibu])\\}/g, '')\n .replace(/\\{\\\\([ibu])1\\}/g, '<$1>')\n .replace(/\\{([ibu])\\}/g, '<$1>')\n .replace(/\\{\\/([ibu])\\}/g, '')\n .replace(/(\\d\\d:\\d\\d:\\d\\d),(\\d\\d\\d)/g, '$1.$2')\n .concat('\\r\\n\\r\\n')\n );\n return URL.createObjectURL(\n new Blob([vttText], {\n type: 'text/vtt'\n })\n );\n }\n\n checkExt(url) {\n const ext = getExt(url);\n errorHandle(\n ext === 'vtt' || ext === 'srt',\n `'subtitle.url' option require 'vtt' or 'srt' format, but got '${ext}'.`\n );\n }\n\n show() {\n const { $subtitle } = this.art.refs;\n $subtitle.style.display = 'block';\n this.art.emit('subtitle:show', $subtitle);\n }\n\n hide() {\n const { $subtitle } = this.art.refs;\n $subtitle.style.display = 'none';\n this.art.emit('subtitle:hide', $subtitle);\n }\n\n switch(url) {\n const { $track } = this.art.refs;\n this.checkExt(url);\n errorHandle($track, 'You need to initialize the subtitle option first.');\n this.load(url).then(data => {\n if (url !== data) {\n $track.src = data;\n this.art.emit('subtitle:switch', url);\n }\n });\n }\n}\n","export default class Events {\n constructor(art) {\n this.art = art;\n this.destroyEvents = [];\n this.proxy = this.proxy.bind(this);\n }\n\n proxy(target, name, callback, option = {}) {\n if (Array.isArray(name)) {\n name.forEach(item => this.proxy(target, item, callback, option));\n }\n\n target.addEventListener(name, callback, option);\n this.destroyEvents.push(() => {\n target.removeEventListener(name, callback, option);\n });\n }\n\n destroy() {\n this.destroyEvents.forEach(event => event());\n }\n}\n","export default class Hotkey {\n constructor(art) {\n this.art = art;\n if (this.art.option.hotkey) {\n this.init();\n }\n }\n\n init() {\n const {\n player,\n refs: { $player },\n events: { proxy }\n } = this.art;\n\n proxy(document, 'click', event => {\n this.art.isFocus = event.path.indexOf($player) > -1;\n });\n\n proxy(window, 'keydown', event => {\n if (this.art.isFocus) {\n const tag = document.activeElement.tagName.toUpperCase();\n const editable = document.activeElement.getAttribute('contenteditable');\n if (\n tag !== 'INPUT' &&\n tag !== 'TEXTAREA' &&\n editable !== '' &&\n editable !== 'true'\n ) {\n switch (event.keyCode) {\n case 39:\n event.preventDefault();\n player.seek(player.currentTime() + 10);\n break;\n case 37:\n event.preventDefault();\n player.seek(player.currentTime() - 10);\n break;\n case 38:\n event.preventDefault();\n player.volume(player.volume() + 0.05);\n break;\n case 40:\n event.preventDefault();\n player.volume(player.volume() - 0.05);\n break;\n case 32:\n event.preventDefault();\n player.toggle();\n break;\n default:\n break;\n }\n }\n }\n });\n }\n}\n","import { append, setStyle } from './utils';\n\nlet id = 0;\nexport default class Layers {\n constructor(art) {\n this.art = art;\n this.add = this.add.bind(this);\n this.art.option.layers.filter(item => item.disable === false).forEach(this.add);\n this.init();\n }\n\n init() {\n const { refs, player, events: { proxy } } = this.art;\n proxy(refs.$layers, 'click', event => {\n if (event.path[0] === refs.$layers) {\n player.pause();\n }\n });\n }\n\n add(option, callback) {\n const { refs } = this.art;\n id++;\n\n const $layer = document.createElement('div');\n $layer.setAttribute('data-art-layer-id', id);\n $layer.setAttribute('class', `art-layer art-layer-${option.name || id}`);\n $layer.style.zIndex = option.index || id;\n append($layer, option.html);\n setStyle($layer, option.style || {});\n refs.$layers.appendChild($layer);\n this.art.emit('layers:add', $layer);\n callback && callback($layer);\n }\n\n show() {\n const { $layers } = this.art.refs;\n $layers.style.display = 'block';\n this.art.emit('layers:show', $layers);\n }\n\n hide() {\n const { $layers } = this.art.refs;\n $layers.style.display = 'none';\n this.art.emit('layers:hide', $layers);\n }\n}\n","import icons from './icons';\nimport { append } from './utils';\n\nexport default class Loading {\n constructor(art) {\n this.art = art;\n this.init();\n }\n\n init() {\n const { option, refs: { $loading } } = this.art;\n append($loading, option.loading || icons.loading);\n }\n\n hide() {\n const { $loading } = this.art.refs;\n $loading.style.display = 'none';\n this.art.emit('loading:hide', $loading);\n }\n\n show() {\n const { $loading } = this.art.refs;\n $loading.style.display = 'flex';\n this.art.emit('loading:show', $loading);\n }\n}\n","export default class Notice {\n constructor(art) {\n this.art = art;\n this.timer = null;\n }\n\n show(msg, autoHide = true, time = 1000) {\n const { $notice } = this.art.refs;\n $notice.style.display = 'block';\n $notice.innerHTML = msg instanceof Error ? msg.message.trim() : msg;\n if (autoHide) {\n clearTimeout(this.timer);\n this.timer = setTimeout(() => {\n this.hide();\n }, time);\n }\n this.art.emit('notice:show', $notice);\n }\n\n hide() {\n const { $notice } = this.art.refs;\n $notice.style.display = 'none';\n this.art.emit('notice:hide', $notice);\n }\n}\n","import icons from './icons';\nimport { append } from './utils';\n\nexport default class Mask {\n constructor(art) {\n this.art = art;\n this.init();\n }\n\n init() {\n const {\n player,\n refs,\n events: { proxy }\n } = this.art;\n\n append(refs.$mask, icons.playBig);\n\n proxy(refs.$mask, 'click', () => {\n player.play();\n this.hide();\n });\n }\n\n show() {\n const { $mask } = this.art.refs;\n $mask.style.display = 'block';\n this.art.emit('mask:show', $mask);\n }\n\n hide() {\n const { $mask } = this.art.refs;\n $mask.style.display = 'none';\n this.art.emit('mask:show', $mask);\n }\n}\n","import './style';\nimport { deepMerge } from './utils';\nimport validOption from './verification/player';\nimport config from './config';\nimport Emitter from 'tiny-emitter';\nimport Template from './template';\nimport I18n from './i18n';\nimport Player from './player';\nimport Controls from './controls';\nimport Contextmenu from './contextmenu';\nimport Danmu from './danmu';\nimport Info from './info';\nimport Subtitle from './subtitle';\nimport Events from './events';\nimport Hotkey from './hotkey';\nimport Layers from './layers';\nimport Loading from './loading';\nimport Notice from './notice';\nimport Mask from './mask';\n\nlet id = 0;\nexport const instances = [];\n\nclass Artplayer extends Emitter {\n constructor(option) {\n super();\n this.emit('init:start');\n this.option = deepMerge({}, Artplayer.DEFAULTS, option);\n validOption(Artplayer.DEFAULTS, this.option);\n this.init();\n this.emit('init:end');\n }\n\n static get version() {\n return '__VERSION__';\n }\n\n static get config() {\n return config;\n }\n\n static get DEFAULTS() {\n return {\n container: '.artplayer',\n url: '',\n poster: '',\n volume: 0.7,\n thumbnails: {\n url: '',\n number: 60,\n width: 160,\n height: 90,\n column: 10\n },\n autoplay: false,\n loop: false,\n type: '',\n mimeCodec: '',\n layers: [],\n contextmenu: [],\n loading: '',\n theme: '#f00',\n hotkey: true,\n subtitle: {\n url: '',\n style: {}\n },\n controls: [],\n highlight: [],\n moreVideoAttr: {\n 'controls': false,\n 'preload': 'auto',\n 'webkit-playsinline': true,\n 'playsinline': true\n },\n lang: navigator.language.toLowerCase()\n };\n }\n\n static use(Plugin) {\n const name = Plugin.name.toLowerCase();\n const installedPlugins = this.plugins || (this.plugins = {});\n if (!installedPlugins[name]) {\n const args = Array.from(arguments).slice(1);\n args.unshift(this);\n installedPlugins[name] = new Plugin(...args);\n this.prototype.emit('use', Plugin);\n }\n return this;\n }\n\n init() {\n this.isError = false;\n this.isFocus = false;\n this.isPlaying = false;\n this.refs = {};\n\n if (this.option.container instanceof Element) {\n this.refs.$container = this.option.container;\n } else {\n this.refs.$container = document.querySelector(this.option.container);\n }\n\n this.template = new Template(this);\n this.i18n = new I18n(this);\n this.notice = new Notice(this);\n this.events = new Events(this);\n this.player = new Player(this);\n this.layers = new Layers(this);\n this.controls = new Controls(this);\n this.contextmenu = new Contextmenu(this);\n this.danmu = new Danmu(this);\n this.subtitle = new Subtitle(this);\n this.info = new Info(this);\n this.loading = new Loading(this);\n this.hotkey = new Hotkey(this);\n this.mask = new Mask(this);\n\n this.id = id++;\n instances.push(this);\n return this;\n }\n\n destroy(removeHtml = false) {\n this.events.destroy();\n instances.splice(instances.indexOf(this), 1);\n if (removeHtml) {\n this.refs.$container.innerHTML = '';\n }\n this.emit('destroy');\n }\n}\n\nwindow.Artplayer = Artplayer;\nexport default Artplayer;\n"],"names":["_typeof","ArtPlayerError","message","context","Error","captureStackTrace","constructor","name","errorHandle","condition","msg","isFun","clamp","num","a","b","Math","max","min","getExt","url","includes","split","trim","toLowerCase","pop","append","parent","child","Element","appendChild","insertAdjacentHTML","lastElementChild","setStyle","element","styles","Object","keys","forEach","key","style","secondToTime","second","add0","String","hour","floor","sec","map","join","deepMerge","isObject","value","returnValue","sources","source","Array","isArray","hasOwnProperty","getStorage","storage","JSON","parse","localStorage","getItem","setStorage","assign","setItem","stringify","getType","val","toString","prototype","type","call","slice","replace","validOption","DEFAULTS","option","path","defaultValue","defaultType","concat","length","item","index","html","click","Function","time","text","disable","position","mp4","webm","ts","mediaSource","propertys","methods","events","sourceBuffer","sourceBufferList","mimeCodec","mse","video","Template","art","init","refs","$container","innerHTML","$player","querySelector","$video","$subtitle","$bottom","$progress","$controls","$controlsLeft","$controlsRight","$layers","$loading","$notice","$mask","$info","$infoPanel","$infoClose","i18nMap","I18n","language","lang","callback","Player","eventBind","moreVideoAttr","volume","poster","autoplay","src","proxy","i18n","notice","config","eventName","event","emit","on","loading","show","hide","controls","mask","promise","play","undefined","then","catch","err","console","warn","isPlaying","loop","seek","isError","classList","add","get","destroy","pause","newTime","duration","currentTime","percentage","parseInt","rate","newRate","playbackRate","Danmu","Fullscreen","Pip","icons","playBig","volumeClose","creatDomFromSvg","result","tmp","document","createElement","childNodes","PlayAndPause","player","$play","$control","$pause","display","Progress","isDroging","getLoaded","bind","getPlayed","set","highlight","theme","$loaded","$played","$highlight","$indicator","$tip","filter","left","Number","indexOf","showHighlight","showTime","target","getPosFromEvent","remove","dataset","clientWidth","width","tipWidth","buffered","end","Subtitle","Time","getTime","Volume","$volume","$volumeClose","$volumePanel","$volumeHandle","setVolumeHandle","setTimeout","volumeChangeFromEvent","getBoundingClientRect","panelLeft","panelWidth","handleWidth","x","Setting","Thumbnails","showThumbnails","posWidth","thumbnails","height","number","column","perWidth","perIndex","ceil","yIndex","xIndex","backgroundImage","backgroundPosition","id","Controls","$map","mount","control","setAttribute","commonMethod","push","apply","sort","controlIndex","defineProperty","Contextmenu","contextmenu","info","preventDefault","isFocus","$contextmenu","creatMenu","setPos","$menu","mouseX","clientX","mouseY","clientY","cHeight","cWidth","cLeft","cTop","top","mHeight","mWidth","menuLeft","menuTop","Info","creatInfo","getHeader","clearTimeout","timer","infoHtml","types","from","querySelectorAll","fetch","method","data","headers","head","subtitle","checkExt","$track","default","kind","load","textTracks","track","activeCues","cue","template","getCueAsHTML","response","test","srtToVtt","vttText","URL","createObjectURL","Blob","ext","Events","destroyEvents","addEventListener","removeEventListener","Hotkey","hotkey","window","tag","activeElement","tagName","toUpperCase","editable","getAttribute","keyCode","toggle","Layers","layers","$layer","zIndex","Loading","Notice","autoHide","Mask","instances","Artplayer","container","danmu","removeHtml","splice","Plugin","installedPlugins","plugins","args","arguments","unshift","navigator","Emitter"],"mappings":"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"} \ No newline at end of file diff --git a/src/controls/index.js b/src/controls/index.js index 1b0646194..a03db53e5 100644 --- a/src/controls/index.js +++ b/src/controls/index.js @@ -14,11 +14,7 @@ let id = 0; export default class Controls { constructor(art) { this.art = art; - this.$map = { - top: [], - left: [], - right: [] - }; + this.$map = {}; this.init(); this.mount(); } @@ -84,14 +80,14 @@ export default class Controls { index: 50 })); - this.art.option.controls.filter(item => !item.disable).forEach(item => { + this.art.option.controls.forEach(item => { this.add(item); }); } add(control) { const { option } = control; - if (!option.disable) { + if (option && !option.disable) { id++; const name = control.constructor.name.toLowerCase() || `control${id}`; const $control = document.createElement('div'); @@ -99,8 +95,8 @@ export default class Controls { $control.setAttribute('data-control-index', String(option.index) || id); option.$control = $control; this.commonMethod(control); - this.$map[option.position].push($control); - control.apply(this.art); + (this.$map[option.position] || (this.$map[option.position] = [])).push($control); + control.apply && control.apply(this.art); this[name] = control; } } diff --git a/src/layers.js b/src/layers.js index da91f2bd4..6fe6f3c44 100644 --- a/src/layers.js +++ b/src/layers.js @@ -5,7 +5,7 @@ export default class Layers { constructor(art) { this.art = art; this.add = this.add.bind(this); - this.art.option.layers.forEach(this.add); + this.art.option.layers.filter(item => item.disable === false).forEach(this.add); this.init(); } diff --git a/src/utils/index.js b/src/utils/index.js index 39d247a23..cdbfbebf0 100644 --- a/src/utils/index.js +++ b/src/utils/index.js @@ -69,11 +69,14 @@ export function deepMerge(...sources) { } returnValue = [...returnValue, ...source]; } else if (isObject(source)) { - for (let [key, value] of Object.entries(source)) { - if (isObject(value) && Reflect.has(returnValue, key)) { - value = deepMerge(returnValue[key], value); + for (const key in source) { + if (source.hasOwnProperty(key)) { + let value = source[key]; + if (isObject(value) && key in returnValue) { + value = deepMerge(returnValue[key], value); + } + returnValue = { ...returnValue, [key]: value }; } - returnValue = { ...returnValue, [key]: value }; } } } diff --git a/src/verification/control.js b/src/verification/control.js deleted file mode 100644 index a5c56ab7c..000000000 --- a/src/verification/control.js +++ /dev/null @@ -1,18 +0,0 @@ -import { errorHandle } from '../utils'; - -export default function validControl(option) { - errorHandle( - typeof option.disable === 'boolean', - `'disable' option require 'boolean' type, but got '${typeof option.disable}'.` - ); - - errorHandle( - ['top', 'left', 'right'].indexOf(option.position) > -1, - `'position' option require one of 'top、left、right', but got '${option.position}'.` - ); - - errorHandle( - typeof option.index === 'number', - `'index' option require 'number' type, but got '${typeof option.index}'.` - ); -} diff --git a/src/verification/player.js b/src/verification/player.js index bf22a6a89..1a311e13b 100644 --- a/src/verification/player.js +++ b/src/verification/player.js @@ -6,10 +6,74 @@ export default function validOption(DEFAULTS, option, path = ['option']) { const value = option[key]; const defaultType = getType(defaultValue); const type = getType(value); - errorHandle(defaultType === type, `'${path.join('.')}.${key}' require '${defaultType}' type, but got '${type}'`); + errorHandle( + defaultType === type, + `'${path.join('.')}.${key}' require '${defaultType}' type, but got '${type}'` + ); if (type === 'object') { validOption(defaultValue, value, path.concat(key)); } + + if (path.length === 1) { + if (key === 'layers') { + value.forEach((item, index) => { + validOption( + { + name: '', + index: 0, + html: '', + style: {} + }, + item, + path.concat(`${key}[${index}]`) + ); + }); + } + + if (key === 'contextmenu') { + value.forEach((item, index) => { + validOption( + { + name: '', + click: new Function(), + html: '', + style: {} + }, + item, + path.concat(`${key}[${index}]`) + ); + }); + } + + if (key === 'highlight') { + value.forEach((item, index) => { + validOption( + { + time: 0, + text: '' + }, + item, + path.concat(`${key}[${index}]`) + ); + }); + } + + if (key === 'controls') { + value.forEach((item, index) => { + if (item.option) { + validOption( + { + disable: false, + position: '', + index: 0 + }, + item.option, + path.concat(`${key}[${index}]`) + ); + } + }); + } + } }); }