diff --git a/docs/css/artplayer.css b/docs/css/artplayer.css index 6d524a37e..5f73ebd94 100644 --- a/docs/css/artplayer.css +++ b/docs/css/artplayer.css @@ -1 +1 @@ -.artplayer-wrap{position:relative;width:100%;height:100%;text-align:left;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.artplayer-wrap .artplayer-video{z-index:1}.artplayer-wrap .artplayer-layers,.artplayer-wrap .artplayer-video{position:absolute;left:0;top:0;right:0;bottom:0;width:100%;height:100%}.artplayer-wrap .artplayer-layers{z-index:2}.artplayer-wrap .artplayer-contextmenu{position:absolute;z-index:7;left:0;top:0;width:170px;padding:5px 0;background:rgba(0,0,0,.75)}.artplayer-wrap .artplayer-contextmenu a{font-size:13px;display:block;color:#fff;padding:7px 10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-decoration:none}.artplayer-wrap .artplayer-controls{position:absolute;z-index:4;left:0;right:0;bottom:0;height:100px;opacity:0;visibility:hidden;transition:all .2s ease-in-out;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAADGCAYAAAAT+OqFAAAAdklEQVQoz42QQQ7AIAgEF/T/D+kbq/RWAlnQyyazA4aoAB4FsBSA/bFjuF1EOL7VbrIrBuusmrt4ZZORfb6ehbWdnRHEIiITaEUKa5EJqUakRSaEYBJSCY2dEstQY7AuxahwXFrvZmWl2rh4JZ07z9dLtesfNj5q0FU3A5ObbwAAAABJRU5ErkJggg==) repeat-x bottom}.artplayer-wrap .controls-show .artplayer-controls,.artplayer-wrap:hover .artplayer-controls{opacity:1;visibility:visible}.artplayer-wrap .artplayer-loading{position:absolute;z-index:5;left:0;top:0;right:0;bottom:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:#fff;background:rgba(0,0,0,.5)}.artplayer-wrap .artplayer-notice{display:none;font-size:13px;position:absolute;z-index:6;left:10px;top:10px;height:30px;line-height:30px;padding:0 10px;color:#fff;background:rgba(0,0,0,.5)} \ No newline at end of file +.artplayer-wrap{position:relative;width:100%;height:100%;text-align:left;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.artplayer-wrap .artplayer-video{z-index:1}.artplayer-wrap .artplayer-layers,.artplayer-wrap .artplayer-video{position:absolute;left:0;top:0;right:0;bottom:0;width:100%;height:100%}.artplayer-wrap .artplayer-layers{z-index:2}.artplayer-wrap .artplayer-contextmenu{position:absolute;z-index:7;left:0;top:0;width:170px;padding:5px 0;background:rgba(0,0,0,.75)}.artplayer-wrap .artplayer-contextmenu a{font-size:13px;display:block;color:#fff;padding:7px 10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-decoration:none}.artplayer-wrap .artplayer-controls{position:absolute;z-index:4;left:0;right:0;bottom:0;height:100px;opacity:0;visibility:hidden;transition:all .2s ease-in-out;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAADGCAYAAAAT+OqFAAAAdklEQVQoz42QQQ7AIAgEF/T/D+kbq/RWAlnQyyazA4aoAB4FsBSA/bFjuF1EOL7VbrIrBuusmrt4ZZORfb6ehbWdnRHEIiITaEUKa5EJqUakRSaEYBJSCY2dEstQY7AuxahwXFrvZmWl2rh4JZ07z9dLtesfNj5q0FU3A5ObbwAAAABJRU5ErkJggg==) repeat-x bottom}.artplayer-wrap .controls-show .artplayer-controls,.artplayer-wrap:hover .artplayer-controls{opacity:1;visibility:visible}.artplayer-wrap .artplayer-loading{display:none;position:absolute;z-index:5;left:0;top:0;right:0;bottom:0;width:100%;height:100%;align-items:center;justify-content:center}.artplayer-wrap .artplayer-notice{display:none;font-size:13px;position:absolute;z-index:6;left:10px;top:10px;height:30px;line-height:30px;padding:0 10px;color:#fff;background:rgba(0,0,0,.5)} \ No newline at end of file diff --git a/docs/index.html b/docs/index.html index 9b8963aeb..b31662d3d 100644 --- a/docs/index.html +++ b/docs/index.html @@ -31,34 +31,34 @@ poster: './img/poster.png' }); + console.dir(Artplayer); + console.log(player); - [ - 'abort', - 'canplay', - 'canplaythrough', - 'durationchange', - 'emptied', - 'ended', - 'error', - 'loadeddata', - 'loadedmetadata', - 'loadstart', - 'pause', - 'play', - 'playing', - 'progress', - 'ratechange', - 'seeked', - 'seeking', - 'stalled', - 'suspend', - 'timeupdate', - 'volumechange', - 'waiting' - ].forEach(item => { + Artplayer.config.video.events.forEach(item => { player.on('video:' + item, event => { - console.log(event); + console.log('video', event); + }); + }); + + Artplayer.config.mse.mediaSource.events.forEach(item => { + player.on('mediaSource:' + item, event => { + console.log('mediaSource', event); + }); + }); + + Artplayer.config.mse.sourceBufferList.events.forEach(item => { + player.on('sourceBuffers:' + item, event => { + console.log('sourceBuffers', event); + }); + player.on('activeSourceBuffers:' + item, event => { + console.log('activeSourceBuffers', event); + }); + }); + + Artplayer.config.mse.sourceBuffer.events.forEach(item => { + player.on('sourceBuffer:' + item, event => { + console.log('sourceBuffer', event); }); }); diff --git a/docs/js/artplayer.js b/docs/js/artplayer.js index a38623998..8734d2fcf 100644 --- a/docs/js/artplayer.js +++ b/docs/js/artplayer.js @@ -249,6 +249,41 @@ errorHandle(typeof option.loading === 'string', "'loading' option require 'string' type, but got '".concat(_typeof_1(option.loading), "'.")); } + var mimeCodec = { + mp4: 'video/mp4; codecs="avc1.42E01E, mp4a.40.2"', + webm: 'video/webm; codecs="vorbis, vp8"', + ts: 'video/mp2t; codecs="avc1.42E01E, mp4a.40.2"' + }; + + var mse = { + mediaSource: { + propertys: ['activeSourceBuffers', 'duration', 'readyState', 'sourceBuffers'], + methods: ['addSourceBuffer', 'endOfStream', 'removeSourceBuffer', 'clearLiveSeekableRange', 'setLiveSeekableRange'], + events: ['sourceclose', 'sourceended', 'sourceopen'] + }, + sourceBuffer: { + propertys: ['mode', 'updating', 'buffered', 'timestampOffset', 'audioTracks', 'videoTracks', 'textTracks', 'appendWindowStart', 'appendWindowEnd', 'trackDefaults'], + methods: ['appendBuffer', 'appendStream', 'abort', 'remove'], + events: ['abort', 'error', 'update', 'updateend', 'updatestart'] + }, + sourceBufferList: { + propertys: ['length'], + events: ['addsourcebuffer', 'removesourcebuffer'] + } + }; + + var video = { + propertys: ['audioTracks', 'autoplay', 'buffered', 'controller', 'controls', 'crossOrigin', 'currentSrc', 'currentTime', 'defaultMuted', 'defaultPlaybackRate', 'duration', 'ended', 'error', 'loop', 'mediaGroup', 'muted', 'networkState', 'paused', 'playbackRate', 'played', 'preload', 'readyState', 'seekable', 'seeking', 'src', 'startDate', 'textTracks', 'videoTracks', 'volume'], + methods: ['addTextTrack', 'canPlayType', 'load', 'play', 'pause'], + events: ['abort', 'canplay', 'canplaythrough', 'durationchange', 'emptied', 'ended', 'error', 'loadeddata', 'loadedmetadata', 'loadstart', 'pause', 'play', 'playing', 'progress', 'ratechange', 'seeked', 'seeking', 'stalled', 'suspend', 'timeupdate', 'volumechange', 'waiting'] + }; + + var config = { + mimeCodec: mimeCodec, + mse: mse, + video: video + }; + function E () { // Keep this empty so it's easier to inherit from // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3) @@ -345,11 +380,13 @@ var i18nMap = { 'zh-cn': { 'About author': '关于作者', - 'Video info': '视频统计信息' + 'Video info': '视频统计信息', + 'Close': '关闭' }, 'zh-tw': { 'About author': '關於作者', - 'Video info': '影片統計訊息' + 'Video info': '影片統計訊息', + 'Close': '關閉' } }; @@ -374,12 +411,6 @@ return I18n; }(); - var mediaElement = { - propertys: ['audioTracks', 'autoplay', 'buffered', 'controller', 'controls', 'crossOrigin', 'currentSrc', 'currentTime', 'defaultMuted', 'defaultPlaybackRate', 'duration', 'ended', 'error', 'loop', 'mediaGroup', 'muted', 'networkState', 'paused', 'playbackRate', 'played', 'preload', 'readyState', 'seekable', 'seeking', 'src', 'startDate', 'textTracks', 'videoTracks', 'volume'], - methods: ['addTextTrack', 'canPlayType', 'load', 'play', 'pause'], - events: ['abort', 'canplay', 'canplaythrough', 'durationchange', 'emptied', 'ended', 'error', 'loadeddata', 'loadedmetadata', 'loadstart', 'pause', 'play', 'playing', 'progress', 'ratechange', 'seeked', 'seeking', 'stalled', 'suspend', 'timeupdate', 'volumechange', 'waiting'] - }; - var Player = /*#__PURE__*/ function () { @@ -409,7 +440,7 @@ var proxy = this.art.events.proxy; var $video = this.art.refs.$video; - var events = mediaElement.events; + var events = config.video.events; events.forEach(function (eventName) { proxy($video, eventName, function (event) { _this.art.emit("video:".concat(event.type), event); @@ -421,29 +452,6 @@ return Player; }(); - var mimeCodeces = { - mp4: 'video/mp4; codecs="avc1.42E01E, mp4a.40.2"', - webm: 'video/webm; codecs="vorbis, vp8"', - ts: 'video/mp2t; codecs="avc1.42E01E, mp4a.40.2"' - }; - - var mseConfig = { - instance: { - propertys: ['activeSourceBuffers', 'duration', 'readyState', 'sourceBuffers'], - methods: ['addSourceBuffer', 'endOfStream', 'removeSourceBuffer', 'clearLiveSeekableRange', 'setLiveSeekableRange'], - events: ['sourceclose', 'sourceended', 'sourceopen'] - }, - sourceBuffer: { - propertys: ['mode', 'updating', 'buffered', 'timestampOffset', 'audioTracks', 'videoTracks', 'textTracks', 'appendWindowStart', 'appendWindowEnd', 'trackDefaults'], - methods: ['appendBuffer', 'appendStream', 'abort', 'remove'], - events: ['abort', 'error', 'update', 'updateend', 'updatestart'] - }, - sourceBufferList: { - propertys: ['length'], - events: ['addsourcebuffer', 'removesourcebuffer'] - } - }; - var Mse = /*#__PURE__*/ function () { @@ -455,6 +463,8 @@ this.init(); this.eventBind(); this.eventStart(); + this.repeat = 0; + this.maxRepeat = 5; } createClass(Mse, [{ @@ -464,12 +474,12 @@ if (!option.type) { var type = option.url.trim().toLowerCase().split('.').pop(); - errorHandle(Object.keys(mimeCodeces).includes(type), "Can't find video's type '".concat(type, "' from '").concat(option.url, "'")); + errorHandle(Object.keys(config.mimeCodec).includes(type), "Can't find video's type '".concat(type, "' from '").concat(option.url, "'")); option.type = type; } if (!option.mimeCodec) { - var mimeCodec = mimeCodeces[option.type]; + var mimeCodec = config.mimeCodec[option.type]; errorHandle(mimeCodec, "Can't find video's mimeCodec from ".concat(option.type)); option.mimeCodec = mimeCodec; } @@ -483,7 +493,7 @@ errorHandle(MediaSource.isTypeSupported(option.mimeCodec), "Unsupported MIME type or codec: ".concat(option.mimeCodec)); this.mediaSource = new MediaSource(); $video.src = URL.createObjectURL(this.mediaSource); - this.art.events.destroys.push(function () { + this.art.events.destroyEvents.push(function () { URL.revokeObjectURL($video.src); }); } @@ -493,9 +503,10 @@ var _this = this; var proxy = this.art.events.proxy; - var instance = mseConfig.instance, - sourceBufferList = mseConfig.sourceBufferList; - instance.events.forEach(function (eventName) { + var _config$mse = config.mse, + mediaSource = _config$mse.mediaSource, + sourceBufferList = _config$mse.sourceBufferList; + mediaSource.events.forEach(function (eventName) { proxy(_this.mediaSource, eventName, function (event) { _this.art.emit("mediaSource:".concat(event.type), event); }); @@ -516,7 +527,7 @@ var option = this.art.option; var proxy = this.art.events.proxy; - var sourceBuffer = mseConfig.sourceBuffer; + var sourceBuffer = config.mse.sourceBuffer; this.art.on('mediaSource:sourceopen', function () { _this2.sourceBuffer = _this2.mediaSource.addSourceBuffer(option.mimeCodec); sourceBuffer.events.forEach(function (eventName) { @@ -528,8 +539,24 @@ this.art.on('sourceBuffer:updateend', function () { _this2.mediaSource.endOfStream(); }); + this.fetchUrl(); + } + }, { + key: "fetchUrl", + value: function fetchUrl() { + var _this3 = this; + + var _this$art2 = this.art, + option = _this$art2.option, + notice = _this$art2.notice; request(option.url).then(function (response) { - _this2.sourceBuffer.appendBuffer(response); + _this3.sourceBuffer.appendBuffer(response); + }).catch(function (err) { + if (_this3.repeat++ < _this3.maxRepeat) { + _this3.fetchUrl(); + } else { + notice.show(err); + } }); } }]); @@ -575,6 +602,11 @@ }, { text: 'ArtPlayer 1.0.0', link: 'https://github.com/zhw2590582/artplayer' + }, { + text: i18n.get('Close'), + click: function click() { + _this.hide(); + } }); proxy(refs.$container, 'contextmenu', function (event) { event.preventDefault(); @@ -717,7 +749,7 @@ classCallCheck(this, Events); this.art = art; - this.destroys = []; + this.destroyEvents = []; this.proxy = this.proxy.bind(this); this.init(); } @@ -726,7 +758,7 @@ key: "proxy", value: function proxy(target, name, callback) { target.addEventListener(name, callback); - this.destroys.push(function () { + this.destroyEvents.push(function () { target.removeEventListener(name, callback); }); } @@ -735,6 +767,13 @@ value: function init() { console.log('Events init'); } + }, { + key: "destroy", + value: function destroy() { + this.destroyEvents.forEach(function (event) { + return event(); + }); + } }]); return Events; @@ -819,7 +858,7 @@ var slicedToArray = _slicedToArray; - var loading = "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n\t\n\t\n\t\n\t\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n "; + 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"; var Icons = { loading: loading @@ -874,7 +913,7 @@ key: "show", value: function show() { this.state = true; - this.art.refs.$loading.style.display = 'block'; + this.art.refs.$loading.style.display = 'flex'; } }]); @@ -956,9 +995,7 @@ }, { key: "destroy", value: function destroy() { - this.events.destroys.forEach(function (destroy) { - return destroy(); - }); + this.events.destroy(); this.refs.$container.innerHTML = ''; instances.splice(instances.indexOf(this), 1); } @@ -988,6 +1025,11 @@ get: function get() { return '1.0.0'; } + }, { + key: "config", + get: function get() { + return config; + } }, { key: "DEFAULTS", get: function get() { diff --git a/docs/js/artplayer.js.map b/docs/js/artplayer.js.map index 63d4c24e3..177cf282e 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/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/setPrototypeOf.js","../../node_modules/@babel/runtime/helpers/inherits.js","../../node_modules/@babel/runtime/helpers/isNativeFunction.js","../../node_modules/@babel/runtime/helpers/construct.js","../../node_modules/@babel/runtime/helpers/wrapNativeSuper.js","../../src/utils/ArtPlayerError.js","../../src/utils/index.js","../../src/utils/verification.js","../../node_modules/tiny-emitter/index.js","../../src/template.js","../../src/i18n.js","../../src/utils/mediaElement.js","../../src/player.js","../../src/utils/mimeCodeces.js","../../src/utils/mseConfig.js","../../src/mse.js","../../src/controls/index.js","../../src/contextmenu.js","../../src/danmaku.js","../../src/info.js","../../src/subtitle.js","../../src/events.js","../../src/hotkey.js","../../src/layers.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/loading.js","../../src/notice.js","../../src/index.js"],"sourcesContent":["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;","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 _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 _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\n\nmodule.exports = _isNativeFunction;","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;","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 default 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","import ArtPlayerError from './ArtPlayerError';\n\nexport function errorHandle(condition, msg) {\n if (!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 request(url) {\n return fetch(url)\n .then(response => response.arrayBuffer())\n .catch(err => {\n throw new ArtPlayerError(err.message);\n });\n}","import { errorHandle } from './index';\n\nexport default function verification(option) {\n errorHandle(\n option.container,\n '\\'container\\' option is required.'\n );\n\n errorHandle(\n option.url,\n '\\'url\\' option is required.'\n );\n\n errorHandle(\n option.container instanceof Element,\n `'container' option require 'Element' type, but got '${typeof option.container}'.`\n );\n\n errorHandle(\n typeof option.url === 'string',\n `'url' option require 'string' type, but got '${typeof option.url}'.`\n );\n\n errorHandle(\n typeof option.poster === 'string',\n `'poster' option require 'string' type, but got '${typeof option.poster}'.`\n );\n\n errorHandle(\n typeof option.volume === 'number',\n `'volume' option require 'number' type, but got '${typeof option.volume}'.`\n );\n\n errorHandle(\n typeof option.autoplay === 'boolean',\n `'autoplay' option require 'boolean' type, but got '${typeof option.autoplay}'.`\n );\n\n errorHandle(\n ['none', 'metadata', 'auto'].indexOf(option.preload) > -1,\n '\\'preload\\' option require one of \\'none、metadata、auto\\'.'\n );\n\n errorHandle(\n typeof option.lang === 'string',\n `'lang' option require 'string' type, but got '${typeof option.lang}'.`\n );\n\n errorHandle(\n typeof option.type === 'string',\n `'type' option require 'string' type, but got '${typeof option.type}'.`\n );\n\n errorHandle(\n typeof option.mimeCodec === 'string',\n `'mimeCodec' option require 'string' type, but got '${typeof option.mimeCodec}'.`\n );\n\n errorHandle(\n Array.isArray(option.layers),\n `'layers' option require 'array' type, but got '${typeof option.layers}'.`\n );\n\n errorHandle(\n Array.isArray(option.contextmenu),\n `'contextmenu' option require 'array' type, but got '${typeof option.contextmenu}'.`\n );\n\n errorHandle(\n typeof option.loading === 'string',\n `'loading' option require 'string' type, but got '${typeof option.loading}'.`\n );\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 refs.$wrap = refs.$container.querySelector('.artplayer-wrap');\n refs.$video = refs.$container.querySelector('.artplayer-video');\n refs.$controls = refs.$container.querySelector('.artplayer-controls');\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 }\n}\n","const i18nMap = {\n 'zh-cn': {\n 'About author': '关于作者',\n 'Video info': '视频统计信息'\n },\n 'zh-tw': {\n 'About author': '關於作者',\n 'Video info': '影片統計訊息'\n }\n};\n\nexport default class I18n {\n constructor({ option }) {\n this.language = i18nMap[option.lang.toLowerCase()] || {};\n }\n\n get(key) {\n return this.language[key] || key;\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 { clamp } from './utils';\nimport mediaElement from './utils/mediaElement';\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 } = this.art;\n const { $video } = this.art.refs;\n $video.controls = false;\n $video.poster = option.poster;\n $video.volume = clamp(option.volume, 0, 1);\n $video.autoplay = option.autoplay;\n $video.preload = option.preload;\n }\n\n eventBind() {\n const { proxy } = this.art.events;\n const { $video } = this.art.refs;\n const { events } = mediaElement;\n events.forEach(eventName => {\n proxy($video, eventName, event => {\n this.art.emit(`video:${event.type}`, event);\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 instance: {\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","import { errorHandle, request } from './utils';\nimport mimeCodeces from './utils/mimeCodeces';\nimport mseConfig from './utils/mseConfig';\n\nexport default class Mse {\n constructor(art) {\n this.art = art;\n this.setMimeCodec();\n this.init();\n this.eventBind();\n this.eventStart();\n }\n\n setMimeCodec() {\n const { option } = this.art;\n if (!option.type) {\n const type = option.url.trim().toLowerCase().split('.').pop();\n errorHandle(\n Object.keys(mimeCodeces).includes(type),\n `Can't find video's type '${type}' from '${option.url}'`\n );\n option.type = type;\n }\n\n if (!option.mimeCodec) {\n const mimeCodec = mimeCodeces[option.type];\n errorHandle(\n mimeCodec,\n `Can't find video's mimeCodec from ${option.type}`\n );\n option.mimeCodec = mimeCodec;\n }\n }\n\n init() {\n const {\n option,\n refs: { $video }\n } = this.art;\n errorHandle(\n MediaSource.isTypeSupported(option.mimeCodec),\n `Unsupported MIME type or codec: ${option.mimeCodec}`\n );\n this.mediaSource = new MediaSource();\n $video.src = URL.createObjectURL(this.mediaSource);\n this.art.events.destroys.push(() => {\n URL.revokeObjectURL($video.src);\n });\n }\n\n eventBind() {\n const { proxy } = this.art.events;\n const { instance, sourceBufferList } = mseConfig;\n\n instance.events.forEach(eventName => {\n proxy(this.mediaSource, eventName, event => {\n this.art.emit(`mediaSource:${event.type}`, event);\n });\n });\n\n sourceBufferList.events.forEach(eventName => {\n proxy(this.mediaSource.sourceBuffers, eventName, event => {\n this.art.emit(`sourceBuffers:${event.type}`, event);\n });\n proxy(this.mediaSource.activeSourceBuffers, eventName, event => {\n this.art.emit(`activeSourceBuffers:${event.type}`, event);\n });\n });\n }\n\n eventStart() {\n const { option } = this.art;\n const { proxy } = this.art.events;\n const { sourceBuffer } = mseConfig;\n\n this.art.on('mediaSource:sourceopen', () => {\n this.sourceBuffer = this.mediaSource.addSourceBuffer(option.mimeCodec);\n sourceBuffer.events.forEach(eventName => {\n proxy(this.sourceBuffer, eventName, event => {\n this.art.emit(`sourceBuffer:${event.type}`, event);\n });\n });\n });\n\n this.art.on('sourceBuffer:updateend', () => {\n this.mediaSource.endOfStream();\n });\n\n request(option.url).then(response => {\n this.sourceBuffer.appendBuffer(response);\n });\n }\n}\n","export default class Controls {\n constructor({ option }) {\n //\n }\n}\n","export 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 text: i18n.get('Video info'),\n click: art => {\n art.info.show();\n }\n },\n {\n text: i18n.get('About author'),\n link: 'https://github.com/zhw2590582'\n },\n {\n text: 'ArtPlayer __VERSION__',\n link: 'https://github.com/zhw2590582/artplayer'\n }\n );\n\n proxy(refs.$container, 'contextmenu', event => {\n event.preventDefault();\n if (!refs.$contextmenu) {\n this.creatMenu();\n }\n this.show();\n this.setPos(event);\n });\n\n proxy(refs.$container, '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 const $menu = document.createElement('a');\n $menu.innerHTML = item.text;\n $menu.classList.add('art-menu');\n if (item.link) {\n $menu.target = '_blank';\n $menu.href = item.link;\n } else if (item.click) {\n $menu.href = '#';\n proxy($menu, 'click', event => {\n event.preventDefault();\n item.click(this.art, event);\n this.hide();\n });\n }\n refs.$contextmenu.appendChild($menu);\n });\n refs.$wrap.appendChild(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.$container.getBoundingClientRect();\n const { height: mHeight, width: mWidth } = refs.$contextmenu.getBoundingClientRect();\n\n let menuLeft = mouseX - cLeft;\n let menuTop = mouseY - cTop;\n\n if (mouseX + mWidth > cLeft + cWidth) {\n menuLeft -= mWidth;\n }\n\n if (mouseY + mHeight > cTop + cHeight) {\n menuTop -= mHeight;\n }\n\n refs.$contextmenu.style.left = `${menuLeft}px`;\n refs.$contextmenu.style.top = `${menuTop}px`;\n }\n\n hide() {\n const { refs } = this.art;\n refs.$contextmenu && (refs.$contextmenu.style.display = 'none');\n }\n\n show() {\n const { refs } = this.art;\n refs.$contextmenu && (refs.$contextmenu.style.display = 'block');\n }\n}\n","export default class Danmu {\n constructor(art) {\n this.art = art;\n }\n}\n","export default class Info {\n constructor(art) {\n this.art = art;\n }\n\n show() {\n console.log('info show');\n }\n\n hide() {\n console.log('info hide');\n }\n}\n","export default class Subtitle {\n constructor(art) {\n this.art = art;\n }\n}\n","export default class Events {\n constructor(art) {\n this.art = art;\n this.destroys = [];\n this.proxy = this.proxy.bind(this);\n this.init();\n }\n\n proxy(target, name, callback) {\n target.addEventListener(name, callback);\n this.destroys.push(() => {\n target.removeEventListener(name, callback);\n });\n }\n\n init() {\n console.log('Events init');\n }\n}\n","export default class Hotkey {\n constructor(art) {\n this.art = art;\n }\n}\n","let 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 }\n\n add(option, callback) {\n const { refs } = this.art;\n id++;\n\n refs.$layers.insertAdjacentHTML('beforeend', `\n \n ${option.html || ''}\n \n `);\n\n const $layer = refs.$layers.querySelector(`[data-art-layer-id=\"${id}\"]`);\n callback && callback($layer);\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';\n\nconst Icons = {\n loading: loading\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 Icons from './icons';\n\nexport default class Loading {\n constructor(art) {\n this.art = art;\n this.state = false;\n this.init();\n }\n\n init() {\n const { option, refs: { $loading } } = this.art;\n if (option.loading) {\n $loading.insertAdjacentHTML('beforeend', option.loading);\n } else {\n $loading.appendChild(Icons.loading);\n }\n }\n\n hide() {\n this.state = false;\n this.art.refs.$loading.style.display = 'none';\n }\n\n show() {\n this.state = true;\n this.art.refs.$loading.style.display = 'block';\n }\n}\n","export default class Notice {\n constructor(art) {\n this.art = art;\n }\n\n show(msg) {\n const { refs: { $notice } } = this.art;\n $notice.style.display = 'block';\n $notice.innerHTML = msg instanceof Error ? msg.message.trim() : msg;\n }\n\n hide() {\n const { refs: { $notice } } = this.art;\n $notice.style.display = 'none';\n }\n}\n","import './style/index.scss';\nimport verification from './utils/verification';\nimport Emitter from 'tiny-emitter';\nimport Template from './template';\nimport I18n from './i18n';\nimport Player from './player';\nimport Mse from './mse';\nimport Controls from './controls';\nimport Contextmenu from './contextmenu';\nimport Danmaku from './danmaku';\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';\n\nlet id = 0;\nexport const instances = [];\n\nclass Artplayer extends Emitter {\n constructor(option) {\n super();\n this.option = Object.assign({}, Artplayer.DEFAULTS, option);\n verification(this.option);\n this.init();\n }\n\n static get version() {\n return '__VERSION__';\n }\n\n static get DEFAULTS() {\n return {\n container: document.querySelector('.artplayer'),\n url: '',\n poster: '',\n volume: 0.7,\n autoplay: false,\n preload: 'auto',\n type: '',\n mimeCodec: '',\n layers: [],\n contextmenu: [],\n loading: '',\n lang: navigator.language.toLowerCase()\n };\n }\n\n static use(plugin) {\n const installedPlugins = this.plugins || (this.plugins = []);\n if (installedPlugins.indexOf(plugin) > -1) {\n return this;\n }\n\n const args = Array.from(arguments).slice(1);\n args.unshift(this);\n if (typeof plugin.install === 'function') {\n plugin.install.apply(plugin, args);\n } else if (typeof plugin === 'function') {\n plugin.apply(null, args);\n }\n installedPlugins.push(plugin);\n return this;\n }\n\n init() {\n this.refs = {\n $container: this.option.container\n };\n\n this.template = new Template(this);\n this.i18n = new I18n(this);\n this.events = new Events(this);\n this.player = new Player(this);\n this.mse = new Mse(this);\n this.layers = new Layers(this);\n this.controls = new Controls(this);\n this.contextmenu = new Contextmenu(this);\n this.danmaku = new Danmaku(this);\n this.subtitle = new Subtitle(this);\n this.info = new Info(this);\n this.hotkey = new Hotkey(this);\n this.loading = new Loading(this);\n this.notice = new Notice(this);\n\n this.id = id++;\n instances.push(this);\n }\n\n destroy() {\n this.events.destroys.forEach(destroy => destroy());\n this.refs.$container.innerHTML = '';\n instances.splice(instances.indexOf(this), 1);\n }\n}\n\nwindow.Artplayer = Artplayer;\nexport default Artplayer;\n"],"names":["_typeof","ArtPlayerError","message","context","Error","captureStackTrace","constructor","name","errorHandle","condition","msg","clamp","num","a","b","Math","max","min","request","url","fetch","then","response","arrayBuffer","catch","err","verification","option","container","Element","poster","volume","autoplay","indexOf","preload","lang","type","mimeCodec","Array","isArray","layers","contextmenu","loading","Template","art","init","refs","$container","innerHTML","$wrap","querySelector","$video","$controls","$layers","$loading","$notice","i18nMap","I18n","language","toLowerCase","key","propertys","methods","events","Player","eventBind","controls","proxy","mediaElement","forEach","eventName","event","emit","mp4","webm","ts","instance","sourceBuffer","sourceBufferList","Mse","setMimeCodec","eventStart","trim","split","pop","Object","keys","mimeCodeces","includes","MediaSource","isTypeSupported","mediaSource","src","URL","createObjectURL","destroys","push","revokeObjectURL","mseConfig","sourceBuffers","activeSourceBuffers","on","addSourceBuffer","endOfStream","appendBuffer","Controls","Contextmenu","i18n","text","get","click","info","show","link","preventDefault","$contextmenu","creatMenu","setPos","path","hide","document","createElement","classList","add","item","$menu","target","href","appendChild","mouseX","clientX","mouseY","clientY","getBoundingClientRect","cHeight","height","cWidth","width","cLeft","left","cTop","top","mHeight","mWidth","menuLeft","menuTop","style","display","Danmu","Info","console","log","Subtitle","Events","bind","callback","addEventListener","removeEventListener","Hotkey","id","Layers","insertAdjacentHTML","index","html","$layer","Icons","creatDomFromSvg","map","result","tmp","childNodes","Loading","state","Notice","instances","Artplayer","assign","DEFAULTS","template","player","mse","danmaku","Danmaku","subtitle","hotkey","notice","destroy","splice","plugin","installedPlugins","plugins","args","from","arguments","slice","unshift","install","apply","navigator","Emitter","window"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"artplayer.js","sources":["../../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/setPrototypeOf.js","../../node_modules/@babel/runtime/helpers/inherits.js","../../node_modules/@babel/runtime/helpers/isNativeFunction.js","../../node_modules/@babel/runtime/helpers/construct.js","../../node_modules/@babel/runtime/helpers/wrapNativeSuper.js","../../src/utils/ArtPlayerError.js","../../src/utils/index.js","../../src/utils/verification.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/mse.js","../../src/controls/index.js","../../src/contextmenu.js","../../src/danmaku.js","../../src/info.js","../../src/subtitle.js","../../src/events.js","../../src/hotkey.js","../../src/layers.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/loading.js","../../src/notice.js","../../src/index.js"],"sourcesContent":["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;","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 _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 _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\n\nmodule.exports = _isNativeFunction;","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;","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 default 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","import ArtPlayerError from './ArtPlayerError';\n\nexport function errorHandle(condition, msg) {\n if (!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 request(url) {\n return fetch(url)\n .then(response => response.arrayBuffer())\n .catch(err => {\n throw new ArtPlayerError(err.message);\n });\n}","import { errorHandle } from './index';\n\nexport default function verification(option) {\n errorHandle(\n option.container,\n '\\'container\\' option is required.'\n );\n\n errorHandle(\n option.url,\n '\\'url\\' option is required.'\n );\n\n errorHandle(\n option.container instanceof Element,\n `'container' option require 'Element' type, but got '${typeof option.container}'.`\n );\n\n errorHandle(\n typeof option.url === 'string',\n `'url' option require 'string' type, but got '${typeof option.url}'.`\n );\n\n errorHandle(\n typeof option.poster === 'string',\n `'poster' option require 'string' type, but got '${typeof option.poster}'.`\n );\n\n errorHandle(\n typeof option.volume === 'number',\n `'volume' option require 'number' type, but got '${typeof option.volume}'.`\n );\n\n errorHandle(\n typeof option.autoplay === 'boolean',\n `'autoplay' option require 'boolean' type, but got '${typeof option.autoplay}'.`\n );\n\n errorHandle(\n ['none', 'metadata', 'auto'].indexOf(option.preload) > -1,\n '\\'preload\\' option require one of \\'none、metadata、auto\\'.'\n );\n\n errorHandle(\n typeof option.lang === 'string',\n `'lang' option require 'string' type, but got '${typeof option.lang}'.`\n );\n\n errorHandle(\n typeof option.type === 'string',\n `'type' option require 'string' type, but got '${typeof option.type}'.`\n );\n\n errorHandle(\n typeof option.mimeCodec === 'string',\n `'mimeCodec' option require 'string' type, but got '${typeof option.mimeCodec}'.`\n );\n\n errorHandle(\n Array.isArray(option.layers),\n `'layers' option require 'array' type, but got '${typeof option.layers}'.`\n );\n\n errorHandle(\n Array.isArray(option.contextmenu),\n `'contextmenu' option require 'array' type, but got '${typeof option.contextmenu}'.`\n );\n\n errorHandle(\n typeof option.loading === 'string',\n `'loading' option require 'string' type, but got '${typeof option.loading}'.`\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 refs.$wrap = refs.$container.querySelector('.artplayer-wrap');\n refs.$video = refs.$container.querySelector('.artplayer-video');\n refs.$controls = refs.$container.querySelector('.artplayer-controls');\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 }\n}\n","const i18nMap = {\n 'zh-cn': {\n 'About author': '关于作者',\n 'Video info': '视频统计信息',\n 'Close': '关闭'\n },\n 'zh-tw': {\n 'About author': '關於作者',\n 'Video info': '影片統計訊息',\n 'Close': '關閉'\n }\n};\n\nexport default class I18n {\n constructor({ option }) {\n this.language = i18nMap[option.lang.toLowerCase()] || {};\n }\n\n get(key) {\n return this.language[key] || key;\n }\n}\n","import { clamp } 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 } = this.art;\n const { $video } = this.art.refs;\n $video.controls = false;\n $video.poster = option.poster;\n $video.volume = clamp(option.volume, 0, 1);\n $video.autoplay = option.autoplay;\n $video.preload = option.preload;\n }\n\n eventBind() {\n const { proxy } = this.art.events;\n const { $video } = this.art.refs;\n const { events } = config.video;\n events.forEach(eventName => {\n proxy($video, eventName, event => {\n this.art.emit(`video:${event.type}`, event);\n });\n });\n }\n}\n","import { errorHandle, request } from './utils';\nimport config from './config';\n\nexport default class Mse {\n constructor(art) {\n this.art = art;\n this.setMimeCodec();\n this.init();\n this.eventBind();\n this.eventStart();\n this.repeat = 0;\n this.maxRepeat = 5;\n }\n\n setMimeCodec() {\n const { option } = this.art;\n if (!option.type) {\n const type = option.url\n .trim()\n .toLowerCase()\n .split('.')\n .pop();\n errorHandle(\n Object.keys(config.mimeCodec).includes(type),\n `Can't find video's type '${type}' from '${option.url}'`\n );\n option.type = type;\n }\n\n if (!option.mimeCodec) {\n const mimeCodec = config.mimeCodec[option.type];\n errorHandle(\n mimeCodec,\n `Can't find video's mimeCodec from ${option.type}`\n );\n option.mimeCodec = mimeCodec;\n }\n }\n\n init() {\n const {\n option,\n refs: { $video }\n } = this.art;\n errorHandle(\n MediaSource.isTypeSupported(option.mimeCodec),\n `Unsupported MIME type or codec: ${option.mimeCodec}`\n );\n this.mediaSource = new MediaSource();\n $video.src = URL.createObjectURL(this.mediaSource);\n this.art.events.destroyEvents.push(() => {\n URL.revokeObjectURL($video.src);\n });\n }\n\n eventBind() {\n const { proxy } = this.art.events;\n const { mediaSource, sourceBufferList } = config.mse;\n\n mediaSource.events.forEach(eventName => {\n proxy(this.mediaSource, eventName, event => {\n this.art.emit(`mediaSource:${event.type}`, event);\n });\n });\n\n sourceBufferList.events.forEach(eventName => {\n proxy(this.mediaSource.sourceBuffers, eventName, event => {\n this.art.emit(`sourceBuffers:${event.type}`, event);\n });\n proxy(this.mediaSource.activeSourceBuffers, eventName, event => {\n this.art.emit(`activeSourceBuffers:${event.type}`, event);\n });\n });\n }\n\n eventStart() {\n const { option } = this.art;\n const { proxy } = this.art.events;\n const { sourceBuffer } = config.mse;\n\n this.art.on('mediaSource:sourceopen', () => {\n this.sourceBuffer = this.mediaSource.addSourceBuffer(option.mimeCodec);\n sourceBuffer.events.forEach(eventName => {\n proxy(this.sourceBuffer, eventName, event => {\n this.art.emit(`sourceBuffer:${event.type}`, event);\n });\n });\n });\n\n this.art.on('sourceBuffer:updateend', () => {\n this.mediaSource.endOfStream();\n });\n\n this.fetchUrl();\n }\n\n fetchUrl() {\n const { option, notice } = this.art;\n request(option.url)\n .then(response => {\n this.sourceBuffer.appendBuffer(response);\n })\n .catch(err => {\n if (this.repeat++ < this.maxRepeat) {\n this.fetchUrl();\n } else {\n notice.show(err);\n }\n });\n }\n}\n","export default class Controls {\n constructor({ option }) {\n //\n }\n}\n","export 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 text: i18n.get('Video info'),\n click: art => {\n art.info.show();\n }\n },\n {\n text: i18n.get('About author'),\n link: 'https://github.com/zhw2590582'\n },\n {\n text: 'ArtPlayer __VERSION__',\n link: 'https://github.com/zhw2590582/artplayer'\n },\n {\n text: i18n.get('Close'),\n click: () => {\n this.hide();\n }\n }\n );\n\n proxy(refs.$container, 'contextmenu', event => {\n event.preventDefault();\n if (!refs.$contextmenu) {\n this.creatMenu();\n }\n this.show();\n this.setPos(event);\n });\n\n proxy(refs.$container, '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 const $menu = document.createElement('a');\n $menu.innerHTML = item.text;\n $menu.classList.add('art-menu');\n if (item.link) {\n $menu.target = '_blank';\n $menu.href = item.link;\n } else if (item.click) {\n $menu.href = '#';\n proxy($menu, 'click', event => {\n event.preventDefault();\n item.click(this.art, event);\n this.hide();\n });\n }\n refs.$contextmenu.appendChild($menu);\n });\n refs.$wrap.appendChild(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.$container.getBoundingClientRect();\n const { height: mHeight, width: mWidth } = refs.$contextmenu.getBoundingClientRect();\n\n let menuLeft = mouseX - cLeft;\n let menuTop = mouseY - cTop;\n\n if (mouseX + mWidth > cLeft + cWidth) {\n menuLeft -= mWidth;\n }\n\n if (mouseY + mHeight > cTop + cHeight) {\n menuTop -= mHeight;\n }\n\n refs.$contextmenu.style.left = `${menuLeft}px`;\n refs.$contextmenu.style.top = `${menuTop}px`;\n }\n\n hide() {\n const { refs } = this.art;\n refs.$contextmenu && (refs.$contextmenu.style.display = 'none');\n }\n\n show() {\n const { refs } = this.art;\n refs.$contextmenu && (refs.$contextmenu.style.display = 'block');\n }\n}\n","export default class Danmu {\n constructor(art) {\n this.art = art;\n }\n}\n","export default class Info {\n constructor(art) {\n this.art = art;\n }\n\n show() {\n console.log('info show');\n }\n\n hide() {\n console.log('info hide');\n }\n}\n","export default class Subtitle {\n constructor(art) {\n this.art = art;\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 this.init();\n }\n\n proxy(target, name, callback) {\n target.addEventListener(name, callback);\n this.destroyEvents.push(() => {\n target.removeEventListener(name, callback);\n });\n }\n\n init() {\n console.log('Events init');\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 }\n}\n","let 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 }\n\n add(option, callback) {\n const { refs } = this.art;\n id++;\n\n refs.$layers.insertAdjacentHTML('beforeend', `\n \n ${option.html || ''}\n \n `);\n\n const $layer = refs.$layers.querySelector(`[data-art-layer-id=\"${id}\"]`);\n callback && callback($layer);\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';\n\nconst Icons = {\n loading: loading\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 Icons from './icons';\n\nexport default class Loading {\n constructor(art) {\n this.art = art;\n this.state = false;\n this.init();\n }\n\n init() {\n const { option, refs: { $loading } } = this.art;\n if (option.loading) {\n $loading.insertAdjacentHTML('beforeend', option.loading);\n } else {\n $loading.appendChild(Icons.loading);\n }\n }\n\n hide() {\n this.state = false;\n this.art.refs.$loading.style.display = 'none';\n }\n\n show() {\n this.state = true;\n this.art.refs.$loading.style.display = 'flex';\n }\n}\n","export default class Notice {\n constructor(art) {\n this.art = art;\n }\n\n show(msg) {\n const { refs: { $notice } } = this.art;\n $notice.style.display = 'block';\n $notice.innerHTML = msg instanceof Error ? msg.message.trim() : msg;\n }\n\n hide() {\n const { refs: { $notice } } = this.art;\n $notice.style.display = 'none';\n }\n}\n","import './style/index.scss';\nimport verification from './utils/verification';\nimport config from './config';\nimport Emitter from 'tiny-emitter';\nimport Template from './template';\nimport I18n from './i18n';\nimport Player from './player';\nimport Mse from './mse';\nimport Controls from './controls';\nimport Contextmenu from './contextmenu';\nimport Danmaku from './danmaku';\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';\n\nlet id = 0;\nexport const instances = [];\n\nclass Artplayer extends Emitter {\n constructor(option) {\n super();\n this.option = Object.assign({}, Artplayer.DEFAULTS, option);\n verification(this.option);\n this.init();\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: document.querySelector('.artplayer'),\n url: '',\n poster: '',\n volume: 0.7,\n autoplay: false,\n preload: 'auto',\n type: '',\n mimeCodec: '',\n layers: [],\n contextmenu: [],\n loading: '',\n lang: navigator.language.toLowerCase()\n };\n }\n\n static use(plugin) {\n const installedPlugins = this.plugins || (this.plugins = []);\n if (installedPlugins.indexOf(plugin) > -1) {\n return this;\n }\n\n const args = Array.from(arguments).slice(1);\n args.unshift(this);\n if (typeof plugin.install === 'function') {\n plugin.install.apply(plugin, args);\n } else if (typeof plugin === 'function') {\n plugin.apply(null, args);\n }\n installedPlugins.push(plugin);\n return this;\n }\n\n init() {\n this.refs = {\n $container: this.option.container\n };\n\n this.template = new Template(this);\n this.i18n = new I18n(this);\n this.events = new Events(this);\n this.player = new Player(this);\n this.mse = new Mse(this);\n this.layers = new Layers(this);\n this.controls = new Controls(this);\n this.contextmenu = new Contextmenu(this);\n this.danmaku = new Danmaku(this);\n this.subtitle = new Subtitle(this);\n this.info = new Info(this);\n this.hotkey = new Hotkey(this);\n this.loading = new Loading(this);\n this.notice = new Notice(this);\n\n this.id = id++;\n instances.push(this);\n }\n\n destroy() {\n this.events.destroy();\n this.refs.$container.innerHTML = '';\n instances.splice(instances.indexOf(this), 1);\n }\n}\n\nwindow.Artplayer = Artplayer;\nexport default Artplayer;\n"],"names":["_typeof","ArtPlayerError","message","context","Error","captureStackTrace","constructor","name","errorHandle","condition","msg","clamp","num","a","b","Math","max","min","request","url","fetch","then","response","arrayBuffer","catch","err","verification","option","container","Element","poster","volume","autoplay","indexOf","preload","lang","type","mimeCodec","Array","isArray","layers","contextmenu","loading","mp4","webm","ts","mediaSource","propertys","methods","events","sourceBuffer","sourceBufferList","mse","video","Template","art","init","refs","$container","innerHTML","$wrap","querySelector","$video","$controls","$layers","$loading","$notice","i18nMap","I18n","language","toLowerCase","key","Player","eventBind","controls","proxy","config","forEach","eventName","event","emit","Mse","setMimeCodec","eventStart","repeat","maxRepeat","trim","split","pop","Object","keys","includes","MediaSource","isTypeSupported","src","URL","createObjectURL","destroyEvents","push","revokeObjectURL","sourceBuffers","activeSourceBuffers","on","addSourceBuffer","endOfStream","fetchUrl","notice","appendBuffer","show","Controls","Contextmenu","i18n","text","get","click","info","link","hide","preventDefault","$contextmenu","creatMenu","setPos","path","document","createElement","classList","add","item","$menu","target","href","appendChild","mouseX","clientX","mouseY","clientY","getBoundingClientRect","cHeight","height","cWidth","width","cLeft","left","cTop","top","mHeight","mWidth","menuLeft","menuTop","style","display","Danmu","Info","console","log","Subtitle","Events","bind","callback","addEventListener","removeEventListener","Hotkey","id","Layers","insertAdjacentHTML","index","html","$layer","Icons","creatDomFromSvg","map","result","tmp","childNodes","Loading","state","Notice","instances","Artplayer","assign","DEFAULTS","template","player","danmaku","Danmaku","subtitle","hotkey","destroy","splice","plugin","installedPlugins","plugins","args","from","arguments","slice","unshift","install","apply","navigator","Emitter","window"],"mappings":"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"} \ No newline at end of file diff --git a/src/config/index.js b/src/config/index.js new file mode 100644 index 000000000..741b3cf97 --- /dev/null +++ b/src/config/index.js @@ -0,0 +1,9 @@ +import mimeCodec from './mimeCodec'; +import mse from './mse'; +import video from './video'; + +export default { + mimeCodec, + mse, + video +}; diff --git a/src/utils/mimeCodeces.js b/src/config/mimeCodec.js similarity index 100% rename from src/utils/mimeCodeces.js rename to src/config/mimeCodec.js diff --git a/src/utils/mseConfig.js b/src/config/mse.js similarity index 98% rename from src/utils/mseConfig.js rename to src/config/mse.js index 03e64a754..6e16fed58 100644 --- a/src/utils/mseConfig.js +++ b/src/config/mse.js @@ -1,5 +1,5 @@ export default { - instance: { + mediaSource: { propertys: [ 'activeSourceBuffers', 'duration', diff --git a/src/utils/mediaElement.js b/src/config/video.js similarity index 100% rename from src/utils/mediaElement.js rename to src/config/video.js diff --git a/src/contextmenu.js b/src/contextmenu.js index e27e973dd..cb88b2a71 100644 --- a/src/contextmenu.js +++ b/src/contextmenu.js @@ -26,6 +26,12 @@ export default class Contextmenu { { text: 'ArtPlayer __VERSION__', link: 'https://github.com/zhw2590582/artplayer' + }, + { + text: i18n.get('Close'), + click: () => { + this.hide(); + } } ); diff --git a/src/i18n.js b/src/i18n.js index b7e037c7a..8db5486bf 100644 --- a/src/i18n.js +++ b/src/i18n.js @@ -1,11 +1,13 @@ const i18nMap = { 'zh-cn': { 'About author': '关于作者', - 'Video info': '视频统计信息' + 'Video info': '视频统计信息', + 'Close': '关闭' }, 'zh-tw': { 'About author': '關於作者', - 'Video info': '影片統計訊息' + 'Video info': '影片統計訊息', + 'Close': '關閉' } }; diff --git a/src/icons/loading.svg b/src/icons/loading.svg index 07913e774..574a03924 100644 --- a/src/icons/loading.svg +++ b/src/icons/loading.svg @@ -1,40 +1,37 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/index.js b/src/index.js index 5be09af0a..7cd95afc3 100644 --- a/src/index.js +++ b/src/index.js @@ -1,5 +1,6 @@ import './style/index.scss'; import verification from './utils/verification'; +import config from './config'; import Emitter from 'tiny-emitter'; import Template from './template'; import I18n from './i18n'; @@ -31,6 +32,10 @@ class Artplayer extends Emitter { return '__VERSION__'; } + static get config() { + return config; + } + static get DEFAULTS() { return { container: document.querySelector('.artplayer'), diff --git a/src/loading.js b/src/loading.js index c2b1743da..364760938 100644 --- a/src/loading.js +++ b/src/loading.js @@ -23,6 +23,6 @@ export default class Loading { show() { this.state = true; - this.art.refs.$loading.style.display = 'block'; + this.art.refs.$loading.style.display = 'flex'; } } diff --git a/src/mse.js b/src/mse.js index 449db9c84..4fabadef5 100644 --- a/src/mse.js +++ b/src/mse.js @@ -1,6 +1,5 @@ import { errorHandle, request } from './utils'; -import mimeCodeces from './utils/mimeCodeces'; -import mseConfig from './utils/mseConfig'; +import config from './config'; export default class Mse { constructor(art) { @@ -9,21 +8,27 @@ export default class Mse { this.init(); this.eventBind(); this.eventStart(); + this.repeat = 0; + this.maxRepeat = 5; } setMimeCodec() { const { option } = this.art; if (!option.type) { - const type = option.url.trim().toLowerCase().split('.').pop(); + const type = option.url + .trim() + .toLowerCase() + .split('.') + .pop(); errorHandle( - Object.keys(mimeCodeces).includes(type), + Object.keys(config.mimeCodec).includes(type), `Can't find video's type '${type}' from '${option.url}'` ); option.type = type; } if (!option.mimeCodec) { - const mimeCodec = mimeCodeces[option.type]; + const mimeCodec = config.mimeCodec[option.type]; errorHandle( mimeCodec, `Can't find video's mimeCodec from ${option.type}` @@ -43,16 +48,16 @@ export default class Mse { ); this.mediaSource = new MediaSource(); $video.src = URL.createObjectURL(this.mediaSource); - this.art.events.destroys.push(() => { + this.art.events.destroyEvents.push(() => { URL.revokeObjectURL($video.src); }); } eventBind() { const { proxy } = this.art.events; - const { instance, sourceBufferList } = mseConfig; + const { mediaSource, sourceBufferList } = config.mse; - instance.events.forEach(eventName => { + mediaSource.events.forEach(eventName => { proxy(this.mediaSource, eventName, event => { this.art.emit(`mediaSource:${event.type}`, event); }); @@ -71,7 +76,7 @@ export default class Mse { eventStart() { const { option } = this.art; const { proxy } = this.art.events; - const { sourceBuffer } = mseConfig; + const { sourceBuffer } = config.mse; this.art.on('mediaSource:sourceopen', () => { this.sourceBuffer = this.mediaSource.addSourceBuffer(option.mimeCodec); @@ -86,8 +91,21 @@ export default class Mse { this.mediaSource.endOfStream(); }); - request(option.url).then(response => { - this.sourceBuffer.appendBuffer(response); - }); + this.fetchUrl(); + } + + fetchUrl() { + const { option, notice } = this.art; + request(option.url) + .then(response => { + this.sourceBuffer.appendBuffer(response); + }) + .catch(err => { + if (this.repeat++ < this.maxRepeat) { + this.fetchUrl(); + } else { + notice.show(err); + } + }); } } diff --git a/src/player.js b/src/player.js index b1d5594c0..1f165e5c7 100644 --- a/src/player.js +++ b/src/player.js @@ -1,5 +1,5 @@ import { clamp } from './utils'; -import mediaElement from './utils/mediaElement'; +import config from './config'; export default class Player { constructor(art) { @@ -21,7 +21,7 @@ export default class Player { eventBind() { const { proxy } = this.art.events; const { $video } = this.art.refs; - const { events } = mediaElement; + const { events } = config.video; events.forEach(eventName => { proxy($video, eventName, event => { this.art.emit(`video:${event.type}`, event); diff --git a/src/style/index.scss b/src/style/index.scss index 92661eeef..69a3f56b7 100644 --- a/src/style/index.scss +++ b/src/style/index.scss @@ -71,6 +71,7 @@ } .artplayer-loading { + display: none; position: absolute; z-index: 5; left: 0; @@ -79,11 +80,8 @@ bottom: 0; width: 100%; height: 100%; - display: flex; align-items: center; justify-content: center; - color: #fff; - background: rgba(0, 0, 0, 0.5); } .artplayer-notice {