{"version":3,"file":"common/852.c8c7e8fd.js","mappings":"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","sources":["webpack://pigeon_i18n_pc/./node_modules/xgplayer/es/events.js","webpack://pigeon_i18n_pc/./node_modules/xgplayer/es/utils/debug.js","webpack://pigeon_i18n_pc/./node_modules/xgplayer/es/utils/xgplayerTimeRange.js","webpack://pigeon_i18n_pc/./node_modules/xgplayer/es/utils/util.js","webpack://pigeon_i18n_pc/./node_modules/xgplayer/es/utils/sniffer.js","webpack://pigeon_i18n_pc/./node_modules/xgplayer/es/version.js","webpack://pigeon_i18n_pc/./node_modules/xgplayer/es/error.js","webpack://pigeon_i18n_pc/./node_modules/xgplayer/es/proxy.js","webpack://pigeon_i18n_pc/./node_modules/xgplayer/es/utils/database.js","webpack://pigeon_i18n_pc/./node_modules/xgplayer/es/constant.js","webpack://pigeon_i18n_pc/./node_modules/xgplayer/es/plugin/hooksDescriptor.js","webpack://pigeon_i18n_pc/./node_modules/xgplayer/es/plugin/basePlugin.js","webpack://pigeon_i18n_pc/./node_modules/xgplayer/es/plugin/plugin.js","webpack://pigeon_i18n_pc/./node_modules/xgplayer/es/plugin/resizeObserver.js","webpack://pigeon_i18n_pc/./node_modules/xgplayer/es/plugin/pluginsManager.js","webpack://pigeon_i18n_pc/./node_modules/xgplayer/es/stateClassMap.js","webpack://pigeon_i18n_pc/./node_modules/xgplayer/es/plugin/preset.js","webpack://pigeon_i18n_pc/./node_modules/xgplayer/es/plugins/controls/index.js","webpack://pigeon_i18n_pc/./node_modules/xgplayer/es/lang/i18n.js","webpack://pigeon_i18n_pc/./node_modules/xgplayer/es/lang/en.js","webpack://pigeon_i18n_pc/./node_modules/xgplayer/es/player.js","webpack://pigeon_i18n_pc/./node_modules/xgplayer/es/defaultConfig.js","webpack://pigeon_i18n_pc/./node_modules/xgplayer/es/plugins/logger/index.js","webpack://pigeon_i18n_pc/./node_modules/xgplayer/es/plugins/replay/index.js","webpack://pigeon_i18n_pc/./node_modules/xgplayer/es/plugins/poster/index.js","webpack://pigeon_i18n_pc/./node_modules/xgplayer/es/plugins/start/index.js","webpack://pigeon_i18n_pc/./node_modules/xgplayer/es/plugins/enter/index.js","webpack://pigeon_i18n_pc/./node_modules/xgplayer/es/plugins/miniScreen/miniScreenIcon.js","webpack://pigeon_i18n_pc/./node_modules/xgplayer/es/utils/draggabilly.js","webpack://pigeon_i18n_pc/./node_modules/xgplayer/es/plugins/miniScreen/index.js","webpack://pigeon_i18n_pc/./node_modules/xgplayer/es/plugins/pc/index.js","webpack://pigeon_i18n_pc/./node_modules/xgplayer/es/plugins/mobile/touch.js","webpack://pigeon_i18n_pc/./node_modules/xgplayer/es/plugins/mobile/index.js","webpack://pigeon_i18n_pc/./node_modules/xgplayer/es/plugins/keyboard/index.js","webpack://pigeon_i18n_pc/./node_modules/xgplayer/es/plugins/loading/index.js","webpack://pigeon_i18n_pc/./node_modules/xgplayer/es/plugins/progress/innerList.js","webpack://pigeon_i18n_pc/./node_modules/xgplayer/es/plugins/progress/index.js","webpack://pigeon_i18n_pc/./node_modules/xgplayer/es/plugins/play/index.js","webpack://pigeon_i18n_pc/./node_modules/xgplayer/es/plugins/fullscreen/backicon.js","webpack://pigeon_i18n_pc/./node_modules/xgplayer/es/plugins/fullscreen/index.js","webpack://pigeon_i18n_pc/./node_modules/xgplayer/es/plugins/time/index.js","webpack://pigeon_i18n_pc/./node_modules/xgplayer/es/plugins/volume/index.js","webpack://pigeon_i18n_pc/./node_modules/xgplayer/es/plugins/rotate/index.js","webpack://pigeon_i18n_pc/./node_modules/xgplayer/es/plugins/pip/index.js","webpack://pigeon_i18n_pc/./node_modules/xgplayer/es/plugins/playNext/index.js","webpack://pigeon_i18n_pc/./node_modules/xgplayer/es/plugins/download/index.js","webpack://pigeon_i18n_pc/./node_modules/xgplayer/es/plugins/screenShot/index.js","webpack://pigeon_i18n_pc/./node_modules/xgplayer/es/plugins/common/optionList.js","webpack://pigeon_i18n_pc/./node_modules/xgplayer/es/plugins/common/optionsIcon.js","webpack://pigeon_i18n_pc/./node_modules/xgplayer/es/plugins/definition/index.js","webpack://pigeon_i18n_pc/./node_modules/xgplayer/es/plugins/playbackRate/index.js","webpack://pigeon_i18n_pc/./node_modules/xgplayer/es/plugins/cssFullScreen/index.js","webpack://pigeon_i18n_pc/./node_modules/xgplayer/es/plugins/error/index.js","webpack://pigeon_i18n_pc/./node_modules/xgplayer/es/plugins/prompt/index.js","webpack://pigeon_i18n_pc/./node_modules/xgplayer/es/plugins/progressPreview/dotsApi.js","webpack://pigeon_i18n_pc/./node_modules/xgplayer/es/plugins/progressPreview/index.js","webpack://pigeon_i18n_pc/./node_modules/xgplayer/es/plugins/common/thumbnail.js","webpack://pigeon_i18n_pc/./node_modules/xgplayer/es/plugins/progress/miniProgress.js","webpack://pigeon_i18n_pc/./node_modules/xgplayer/es/plugins/dynamicBg/index.js","webpack://pigeon_i18n_pc/./node_modules/xgplayer/es/lang/zh-cn.js","webpack://pigeon_i18n_pc/./node_modules/xgplayer/es/presets/default.js","webpack://pigeon_i18n_pc/./node_modules/xgplayer/es/index-umd.js"],"sourcesContent":["export var PLAY = 'play';\nexport var PLAYING = 'playing';\nexport var ENDED = 'ended';\nexport var PAUSE = 'pause';\nexport var ERROR = 'error';\nexport var SEEKING = 'seeking';\nexport var SEEKED = 'seeked';\nexport var TIME_UPDATE = 'timeupdate';\nexport var WAITING = 'waiting';\nexport var CANPLAY = 'canplay';\nexport var CANPLAY_THROUGH = 'canplaythrough';\nexport var DURATION_CHANGE = 'durationchange';\nexport var VOLUME_CHANGE = 'volumechange';\nexport var LOADED_DATA = 'loadeddata';\nexport var RATE_CHANGE = 'ratechange';\nexport var PROGRESS = 'progress';\nexport var LOAD_START = 'loadstart';\nexport var EMPTIED = 'emptied';\nexport var STALLED = 'stalled';\nexport var SUSPEND = 'suspend';\nexport var ABORT = 'abort'; // player events\n\nexport var BUFFER_CHANGE = 'bufferedChange';\nexport var PLAYER_FOCUS = 'focus';\nexport var PLAYER_BLUR = 'blur';\nexport var READY = 'ready';\nexport var URL_NULL = 'urlNull';\nexport var AUTOPLAY_STARTED = 'autoplay_started';\nexport var AUTOPLAY_PREVENTED = 'autoplay_was_prevented';\nexport var COMPLETE = 'complete';\nexport var REPLAY = 'replay';\nexport var DESTROY = 'destroy';\nexport var URL_CHANGE = 'urlchange'; // screen change evnets\n\nexport var FULLSCREEN_CHANGE = 'fullscreen_change';\nexport var CSS_FULLSCREEN_CHANGE = 'cssFullscreen_change';\nexport var MINI_STATE_CHANGE = 'mini_state_change';\nexport var DEFINITION_CHANGE = 'definition_change';\nexport var BEFORE_DEFINITION_CHANGE = 'before_definition_change';\nexport var AFTER_DEFINITION_CHANGE = 'after_definition_change'; // transmuxer events\n\nexport var SEI_PARSED = 'SEI_PARSED';\nexport var RETRY = 'retry'; // 容器宽高变化\n\nexport var VIDEO_RESIZE = 'video_resize'; // picture-in-picture状态变化\n\nexport var PIP_CHANGE = 'pip_change'; // rotate change\n\nexport var ROTATE = 'rotate'; // screenShot\n\nexport var SCREEN_SHOT = 'screenShot'; // play next\n\nexport var PLAYNEXT = 'playnext';\nexport var SHORTCUT = 'shortcut';\nexport var XGLOG = 'xglog';\nexport var USER_ACTION = 'user_action';","var XG_DEBUG_OPEN = typeof window !== 'undefined' && window.location && window.location.href.indexOf('xgplayerdebugger=1') > -1;\nvar STYLE = {\n info: 'color: #525252; background-color: #90ee90;',\n error: 'color: #525252; background-color: red;',\n warn: 'color: #525252; background-color: yellow; '\n};\nvar XGTAG = '%c[xgplayer]';\nvar XG_DEBUG = {\n config: {\n debug: XG_DEBUG_OPEN ? 3 : 1\n },\n logInfo: function logInfo(message) {\n var _console;\n\n for (var _len = arguments.length, optionalParams = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n optionalParams[_key - 1] = arguments[_key];\n }\n\n this.config.debug >= 3 && (_console = console).log.apply(_console, [XGTAG, STYLE.info, message].concat(optionalParams));\n },\n logWarn: function logWarn(message) {\n var _console2;\n\n for (var _len2 = arguments.length, optionalParams = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n optionalParams[_key2 - 1] = arguments[_key2];\n }\n\n this.config.debug >= 1 && (_console2 = console).warn.apply(_console2, [XGTAG, STYLE.warn, message].concat(optionalParams));\n },\n logError: function logError(message) {\n var _console3;\n\n if (this.config.debug < 1) {\n return;\n }\n\n var _fun = this.config.debug >= 2 ? 'trace' : 'error';\n\n for (var _len3 = arguments.length, optionalParams = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n optionalParams[_key3 - 1] = arguments[_key3];\n }\n\n (_console3 = console)[_fun].apply(_console3, [XGTAG, STYLE.error, message].concat(optionalParams));\n }\n};\n\nfunction bindDebug(player) {\n player.logInfo = XG_DEBUG.logInfo.bind(player);\n player.logWarn = XG_DEBUG.logWarn.bind(player);\n player.logError = XG_DEBUG.logError.bind(player);\n}\n\nexport { XG_DEBUG as default, bindDebug };","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar XgplayerTimeRange = /*#__PURE__*/function () {\n function XgplayerTimeRange(bufferedList) {\n _classCallCheck(this, XgplayerTimeRange);\n\n this.bufferedList = bufferedList;\n }\n\n _createClass(XgplayerTimeRange, [{\n key: \"start\",\n value: function start(index) {\n return this.bufferedList[index].start;\n }\n }, {\n key: \"end\",\n value: function end(index) {\n return this.bufferedList[index].end;\n }\n }, {\n key: \"length\",\n get: function get() {\n return this.bufferedList.length;\n }\n }]);\n\n return XgplayerTimeRange;\n}();\n\nexport { XgplayerTimeRange as default };","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport XG_DEBUG from './debug';\nimport XgplayerTimeRange from './xgplayerTimeRange';\nvar util = {};\n/**\n *\n * @param { string } el\n * @param { string } [tpl=]\n * @param { {[propName: string]: any }} [attrs={}]\n * @param { string } [cname='']\n * @returns { HTMLElement | null }\n */\n\nutil.createDom = function () {\n var el = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'div';\n var tpl = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var attrs = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var cname = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '';\n var dom = document.createElement(el);\n dom.className = cname;\n dom.innerHTML = tpl;\n Object.keys(attrs).forEach(function (item) {\n var key = item;\n var value = attrs[item];\n\n if (el === 'video' || el === 'audio' || el === 'live-video') {\n if (value) {\n dom.setAttribute(key, value);\n }\n } else {\n dom.setAttribute(key, value);\n }\n });\n return dom;\n};\n/**\n *\n * @param { string } html\n * @param { string } [attrs={}]\n * @param { string } [classname=\"\"]\n * @returns { HTMLElement | null }\n */\n\n\nutil.createDomFromHtml = function (html) {\n var attrs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var classname = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n\n try {\n var doc = document.createElement('div');\n doc.innerHTML = html;\n var dom = doc.children;\n doc = null;\n\n if (dom.length > 0) {\n dom = dom[0];\n classname && util.addClass(dom, classname);\n\n if (attrs) {\n Object.keys(attrs).forEach(function (key) {\n dom.setAttribute(key, attrs[key]);\n });\n }\n\n return dom;\n }\n\n return null;\n } catch (err) {\n XG_DEBUG.logError('util.createDomFromHtml', err);\n return null;\n }\n};\n/**\n *\n * @param { HTMLElement } el\n * @param { string } className\n * @returns { boolean }\n */\n\n\nutil.hasClass = function (el, className) {\n if (!el || !className) {\n return false;\n }\n\n try {\n return Array.prototype.some.call(el.classList, function (item) {\n return item === className;\n });\n } catch (e) {\n var orgClassName = el.className && _typeof(el.className) === 'object' ? el.getAttribute('class') : el.className;\n return orgClassName && !!orgClassName.match(new RegExp('(\\\\s|^)' + className + '(\\\\s|$)'));\n } // if (el.classList) {\n // return Array.prototype.some.call(el.classList, item => item === className)\n // } else {\n // const orgClassName = el.className && typeof el.className === 'object' ? el.getAttribute('class') : el.className\n // return orgClassName && !!orgClassName.match(new RegExp('(\\\\s|^)' + className + '(\\\\s|$)'))\n // }\n\n};\n/**\n *\n * @param { HTMLElement } el\n * @param { string } className\n * @returns { void }\n */\n\n\nutil.addClass = function (el, className) {\n if (!el || !className) {\n return;\n }\n\n try {\n className.replace(/(^\\s+|\\s+$)/g, '').split(/\\s+/g).forEach(function (item) {\n item && el.classList.add(item);\n });\n } catch (e) {\n if (!util.hasClass(el, className)) {\n if (el.className && _typeof(el.className) === 'object') {\n el.setAttribute('class', el.getAttribute('class') + ' ' + className);\n } else {\n el.className += ' ' + className;\n }\n }\n }\n};\n/**\n *\n * @param { HTMLElement } el\n * @param { string } className\n * @returns { void }\n */\n\n\nutil.removeClass = function (el, className) {\n if (!el || !className) {\n return;\n }\n\n try {\n className.replace(/(^\\s+|\\s+$)/g, '').split(/\\s+/g).forEach(function (item) {\n item && el.classList.remove(item);\n });\n } catch (e) {\n if (util.hasClass(el, className)) {\n className.split(/\\s+/g).forEach(function (item) {\n var reg = new RegExp('(\\\\s|^)' + item + '(\\\\s|$)');\n\n if (el.className && _typeof(el.className) === 'object') {\n el.setAttribute('class', el.getAttribute('class').replace(reg, ' '));\n } else {\n el.className = el.className.replace(reg, ' ');\n }\n });\n }\n }\n};\n/**\n *\n * @param { HTMLElement } el\n * @param { string } className\n * @returns { void }\n */\n\n\nutil.toggleClass = function (el, className) {\n if (!el) {\n return;\n }\n\n className.split(/\\s+/g).forEach(function (item) {\n if (util.hasClass(el, item)) {\n util.removeClass(el, item);\n } else {\n util.addClass(el, item);\n }\n });\n};\n/**\n *\n * @param { string | Object } args0\n * @param { string } [className]\n * @returns { string }\n */\n\n\nutil.classNames = function () {\n var _arguments = arguments;\n var classname = [];\n\n var _loop = function _loop(i) {\n if (util.typeOf(_arguments[i]) === 'String') {\n // classname += `${arguments[i]}`\n classname.push(_arguments[i]);\n } else if (util.typeOf(_arguments[i]) === 'Object') {\n Object.keys(_arguments[i]).map(function (key) {\n if (_arguments[i][key]) {\n // classname += key\n classname.push(key);\n }\n });\n } // if (i < arguments.length - 1) {\n // classname += ' '\n // }\n\n };\n\n for (var i = 0; i < arguments.length; i++) {\n _loop(i);\n }\n\n return classname.join(' ');\n};\n/**\n *\n * @param { HTMLElement } el\n * @param { string } sel\n * @returns { HTMLElement }\n */\n\n\nutil.findDom = function () {\n var el = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;\n var sel = arguments.length > 1 ? arguments[1] : undefined;\n var dom; // fix querySelector IDs that start with a digit\n // https://stackoverflow.com/questions/37270787/uncaught-syntaxerror-failed-to-execute-queryselector-on-document\n\n try {\n dom = el.querySelector(sel);\n } catch (e) {\n XG_DEBUG.logError('util.findDom', e);\n\n if (sel.indexOf('#') === 0) {\n dom = el.getElementById(sel.slice(1));\n }\n }\n\n return dom;\n};\n/**\n *\n * @param { HTMLElement } dom\n * @param { string } key\n * @returns { any }\n */\n\n\nutil.getCss = function (dom, key) {\n return dom.currentStyle ? dom.currentStyle[key] : document.defaultView.getComputedStyle(dom, false)[key];\n};\n\nutil.padStart = function (str, length, pad) {\n var charstr = String(pad);\n var len = length >> 0;\n var maxlen = Math.ceil(len / charstr.length);\n var chars = [];\n var r = String(str);\n\n while (maxlen--) {\n chars.push(charstr);\n }\n\n return chars.join('').substring(0, len - r.length) + r;\n};\n/**\n *\n * @param { Number } time\n * @returns { string }\n */\n\n\nutil.format = function (time) {\n if (window.isNaN(time)) {\n return '';\n }\n\n time = Math.round(time);\n var hour = util.padStart(Math.floor(time / 3600), 2, 0);\n var minute = util.padStart(Math.floor((time - hour * 3600) / 60), 2, 0);\n var second = util.padStart(Math.floor(time - hour * 3600 - minute * 60), 2, 0);\n return (hour === '00' ? [minute, second] : [hour, minute, second]).join(':');\n};\n/**\n *\n * @param { Object } e\n * @returns { Object }\n */\n\n\nutil.event = function (e) {\n if (e.touches) {\n var touch = e.touches[0] || e.changedTouches[0];\n e.clientX = touch.clientX || 0;\n e.clientY = touch.clientY || 0;\n e.offsetX = touch.pageX - touch.target.offsetLeft;\n e.offsetY = touch.pageY - touch.target.offsetTop;\n }\n\n e._target = e.target || e.srcElement;\n};\n/**\n *\n * @param { any } obj\n * @returns { string }\n */\n\n\nutil.typeOf = function (obj) {\n return Object.prototype.toString.call(obj).match(/([^\\s.*]+)(?=]$)/g)[0];\n};\n/**\n *\n * @param { any } dst\n * @param { any } src\n * @returns { any }\n */\n\n\nutil.deepCopy = function (dst, src) {\n if (util.typeOf(src) === 'Object' && util.typeOf(dst) === 'Object') {\n Object.keys(src).forEach(function (key) {\n // eslint-disable-next-line no-undef\n if (util.typeOf(src[key]) === 'Object' && !(src[key] instanceof Node)) {\n if (dst[key] === undefined || dst[key] === undefined) {\n dst[key] = src[key];\n } else {\n util.deepCopy(dst[key], src[key]);\n }\n } else if (util.typeOf(src[key]) === 'Array') {\n dst[key] = util.typeOf(dst[key]) === 'Array' ? dst[key].concat(src[key]) : src[key];\n } else {\n dst[key] = src[key];\n }\n });\n return dst;\n }\n};\n/**\n *\n * @param { any } dst\n * @param { any } src\n * @returns { any }\n */\n\n\nutil.deepMerge = function (dst, src) {\n Object.keys(src).map(function (key) {\n if (util.typeOf(src[key]) === 'Array' && util.typeOf(dst[key]) === 'Array') {\n if (util.typeOf(dst[key]) === 'Array') {\n var _dst$key;\n\n (_dst$key = dst[key]).push.apply(_dst$key, _toConsumableArray(src[key]));\n }\n } else if (util.typeOf(dst[key]) === util.typeOf(src[key]) && dst[key] !== null && util.typeOf(dst[key]) === 'Object' && !(src[key] instanceof window.Node)) {\n util.deepMerge(dst[key], src[key]);\n } else {\n src[key] !== null && (dst[key] = src[key]);\n }\n });\n return dst;\n};\n\nutil.getBgImage = function (el) {\n // fix: return current page url when url is none\n var url = (el.currentStyle || window.getComputedStyle(el, null)).backgroundImage;\n\n if (!url || url === 'none') {\n return '';\n }\n\n var a = document.createElement('a');\n a.href = url.replace(/url\\(\"|\"\\)/g, '');\n return a.href;\n};\n/**\n *\n * @param { HTMLElement } dom\n * @returns { HTMLElement | null }\n */\n\n\nutil.copyDom = function (dom) {\n if (dom && dom.nodeType === 1) {\n var back = document.createElement(dom.tagName);\n Array.prototype.forEach.call(dom.attributes, function (node) {\n back.setAttribute(node.name, node.value);\n });\n\n if (dom.innerHTML) {\n back.innerHTML = dom.innerHTML;\n }\n\n return back;\n } else {\n return '';\n }\n};\n/**\n *\n * @param { any } context\n * @param { string } eventName\n * @param { function } intervalFunc\n * @param { number } frequency\n */\n\n\nutil.setInterval = function (context, eventName, intervalFunc, frequency) {\n if (!context._interval[eventName]) {\n context._interval[eventName] = setInterval(intervalFunc.bind(context), frequency);\n }\n};\n/**\n *\n * @param { any } context\n * @param { string } eventName\n * @returns { void }\n */\n\n\nutil.clearInterval = function (context, eventName) {\n clearInterval(context._interval[eventName]);\n context._interval[eventName] = null;\n};\n/**\n *\n * @param { any } context\n * @param { function } fun\n * @param { number } time\n * @returns { number }\n */\n\n\nutil.setTimeout = function (context, fun, time) {\n if (!context._timers) {\n context._timers = [];\n }\n\n var id = setTimeout(function () {\n fun();\n util.clearTimeout(context, id);\n }, time);\n\n context._timers.push(id);\n\n return id;\n};\n/**\n *\n * @param { any } context\n * @param { number } id\n */\n\n\nutil.clearTimeout = function (context, id) {\n var _timers = context._timers;\n\n if (util.typeOf(_timers) === 'Array') {\n for (var i = 0; i < _timers.length; i++) {\n if (_timers[i] === id) {\n _timers.splice(i, 1);\n\n clearTimeout(id);\n break;\n }\n }\n } else {\n clearTimeout(id);\n }\n};\n/**\n *\n * @param { any } context\n */\n\n\nutil.clearAllTimers = function (context) {\n var _timers = context._timers;\n\n if (util.typeOf(_timers) === 'Array') {\n _timers.map(function (item) {\n clearTimeout(item);\n });\n\n context._timerIds = [];\n }\n};\n/**\n *\n * @param { string } name\n * @param { string } imgUrl\n * @param { number } [width]\n * @param { number } [height]\n * @returns { HTMLElement }\n */\n\n\nutil.createImgBtn = function (name, imgUrl, width, height) {\n var btn = util.createDom(\"xg-\".concat(name), '', {}, \"xgplayer-\".concat(name, \"-img\"));\n btn.style.backgroundImage = \"url(\\\"\".concat(imgUrl, \"\\\")\");\n\n if (width && height) {\n var w, h, unit;\n ['px', 'rem', 'em', 'pt', 'dp', 'vw', 'vh', 'vm', '%'].every(function (item) {\n if (width.indexOf(item) > -1 && height.indexOf(item) > -1) {\n w = parseFloat(width.slice(0, width.indexOf(item)).trim());\n h = parseFloat(height.slice(0, height.indexOf(item)).trim());\n unit = item;\n return false;\n } else {\n return true;\n }\n });\n btn.style.width = \"\".concat(w).concat(unit);\n btn.style.height = \"\".concat(h).concat(unit);\n btn.style.backgroundSize = \"\".concat(w).concat(unit, \" \").concat(h).concat(unit);\n\n if (name === 'start') {\n btn.style.margin = \"-\".concat(h / 2).concat(unit, \" auto auto -\").concat(w / 2).concat(unit);\n } else {\n btn.style.margin = 'auto 5px auto 5px';\n }\n }\n\n return btn;\n};\n/**\n *\n * @param { string } hex\n * @param { string | number } alpha\n * @returns { string }\n */\n\n\nutil.Hex2RGBA = function (hex, alpha) {\n var rgb = []; // 定义rgb数组\n // eslint-disable-next-line no-useless-escape\n\n if (/^\\#[0-9A-F]{3}$/i.test(hex)) {\n var sixHex = '#';\n hex.replace(/[0-9A-F]/ig, function (kw) {\n sixHex += kw + kw;\n });\n hex = sixHex;\n }\n\n if (/^#[0-9A-F]{6}$/i.test(hex)) {\n hex.replace(/[0-9A-F]{2}/ig, function (kw) {\n rgb.push(parseInt(kw, 16));\n });\n return \"rgba(\".concat(rgb.join(','), \", \").concat(alpha, \")\");\n } else {\n return 'rgba(255, 255, 255, 0.1)';\n }\n};\n/**\n *\n * @returns { HTMLElement | null }\n */\n\n\nutil.getFullScreenEl = function () {\n return document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement;\n};\n/**\n * @param { any }\n * @returns { boolean }\n */\n\n\nutil.checkIsFunction = function (fun) {\n return fun && typeof fun === 'function';\n};\n/**\n * @param { any }\n * @returns { boolean }\n */\n\n\nutil.checkIsObject = function (obj) {\n return obj !== null && _typeof(obj) === 'object';\n};\n/**\n * @param { HTMLElement }\n */\n\n\nutil.hide = function (dom) {\n dom.style.display = 'none';\n};\n/**\n * @param { HTMLElement }\n * @param { block | flex | inline-block | inline-flex } [display]\n */\n\n\nutil.show = function (dom, display) {\n dom.style.display = display || 'block';\n};\n/**\n *\n * @param { any } val\n * @returns { boolean }\n */\n\n\nutil.isUndefined = function (val) {\n if (typeof val === 'undefined' || val === null) {\n return true;\n }\n};\n/**\n *\n * @param { HTMLElement } dom\n * @param { string } [text]\n * @returns\n */\n\n\nutil.setStyleFromCsstext = function (dom, text) {\n // dom.setAttribute(style, text)\n if (!text) {\n return;\n }\n\n if (util.typeOf(text) === 'String') {\n var styleArr = text.replace(/\\s+/g, '').split(';');\n styleArr.map(function (item) {\n if (item) {\n var arr = item.split(':');\n\n if (arr.length > 1) {\n dom.style[arr[0]] = arr[1];\n }\n }\n });\n } else {\n Object.keys(text).map(function (key) {\n dom.style[key] = text[key];\n });\n }\n};\n/**\n *\n * @param { string } key\n * @param { Array} list\n * @returns { boolean }\n */\n\n\nfunction checkIsIn(key, list) {\n for (var i = 0, len = list.length; i < len; i++) {\n if (key.indexOf(list[i]) > -1) {\n return true;\n }\n }\n\n return false;\n}\n/**\n *\n * @param { HTMLElement } dom\n * @param { Array } [list] attribute names to filter\n * @returns { {} | {[propName: string]: any;} }\n */\n\n\nutil.filterStyleFromText = function (dom) {\n var list = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ['width', 'height', 'top', 'left', 'bottom', 'right', 'position', 'z-index', 'padding', 'margin', 'transform'];\n var _cssText = dom.style.cssText;\n\n if (!_cssText) {\n return {};\n }\n\n var styleArr = _cssText.replace(/\\s+/g, '').split(';');\n\n var ret = {};\n var remain = {};\n styleArr.map(function (item) {\n if (item) {\n var arr = item.split(':');\n\n if (arr.length > 1) {\n if (checkIsIn(arr[0], list)) {\n ret[arr[0]] = arr[1]; // dom.style[arr[0]] = 'initial'\n } else {\n remain[arr[0]] = arr[1];\n }\n }\n }\n });\n dom.setAttribute('style', '');\n Object.keys(remain).map(function (key) {\n // netStyle += `${key}: ${remain[key]};`\n dom.style[key] = remain[key];\n });\n return ret;\n};\n/**\n *\n * @param { HTMLElement } dom\n * @returns { {} | {[propName: string]: any;} }\n */\n\n\nutil.getStyleFromCsstext = function (dom) {\n var _cssText = dom.style.cssText;\n\n if (!_cssText) {\n return {};\n }\n\n var styleArr = _cssText.replace(/\\s+/g, '').split(';');\n\n var ret = {};\n styleArr.map(function (item) {\n if (item) {\n var arr = item.split(':');\n\n if (arr.length > 1) {\n ret[arr[0]] = arr[1];\n }\n }\n });\n return ret;\n};\n\nutil.preloadImg = function (url) {\n var onload = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {};\n var onerror = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {};\n\n if (!url) {\n return;\n }\n\n var img = new window.Image();\n\n if (img.complete) {\n // 图片已经加载过了,可以使用图片\n // do something here\n // img = null\n onload && onload();\n } else {\n img.onload = function (e) {\n img = null;\n onload && onload(e);\n };\n\n img.onerror = function (e) {\n img = null;\n onerror && onerror(e);\n };\n }\n\n img.src = url;\n};\n\nutil.stopPropagation = function (e) {\n if (e) {\n e.stopPropagation();\n e.cancelable && e.preventDefault();\n }\n};\n\nutil.scrollTop = function () {\n return window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;\n};\n\nutil.scrollLeft = function () {\n return window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0;\n};\n\nutil.checkTouchSupport = function () {\n return 'ontouchstart' in window;\n};\n\nutil.getBuffered2 = function (vbuffered) {\n var maxHoleDuration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0.5;\n // ref: hls.js\n var buffered = [];\n\n for (var i = 0; i < vbuffered.length; i++) {\n buffered.push({\n start: vbuffered.start(i) < 0.5 ? 0 : vbuffered.start(i),\n end: vbuffered.end(i)\n });\n }\n\n buffered.sort(function (a, b) {\n var diff = a.start - b.start;\n\n if (diff) {\n return diff;\n } else {\n return b.end - a.end;\n }\n });\n var buffered2 = [];\n\n if (maxHoleDuration) {\n for (var _i = 0; _i < buffered.length; _i++) {\n var buf2len = buffered2.length;\n\n if (buf2len) {\n var buf2end = buffered2[buf2len - 1].end;\n\n if (buffered[_i].start - buf2end < maxHoleDuration) {\n if (buffered[_i].end > buf2end) {\n buffered2[buf2len - 1].end = buffered[_i].end;\n }\n } else {\n buffered2.push(buffered[_i]);\n }\n } else {\n buffered2.push(buffered[_i]);\n }\n }\n } else {\n buffered2 = buffered;\n }\n\n return new XgplayerTimeRange(buffered2);\n};\n/**\n * @description css中有zoom的时候,位移会等比缩放,但是元素的宽高不会等比缩放,所以通过该api做统一\n * https://bugs.chromium.org/p/chromium/issues/detail?id=429140#c8\n * @param {Events} e\n * @param {number} zoom\n * @returns\n */\n\n\nutil.getEventPos = function (e) {\n var zoom = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n return {\n x: e.x / zoom,\n y: e.y / zoom,\n clientX: e.clientX / zoom,\n clientY: e.clientY / zoom,\n offsetX: e.offsetX / zoom,\n offsetY: e.offsetY / zoom,\n pageX: e.pageX / zoom,\n pageY: e.pageY / zoom\n };\n};\n\nutil.requestAnimationFrame = function (callback) {\n var _fun = window.requestAnimationFrame || // Older versions Chrome/Webkit\n window.webkitRequestAnimationFrame || // Firefox < 23\n window.mozRequestAnimationFrame || // opera\n window.oRequestAnimationFrame || // ie\n window.msRequestAnimationFrame;\n\n if (_fun) {\n return _fun(callback);\n }\n};\n\nutil.getHostFromUrl = function (url) {\n if (url === null || url === undefined || url === '' || typeof url !== 'string') {\n return '';\n }\n\n var results = url.split('/'); // 以“/”进行分割\n\n var domain = '';\n\n if (results.length > 3 && results[2]) {\n domain = results[2];\n }\n\n return domain;\n};\n\nutil.cancelAnimationFrame = function (frameId) {\n var _fun = window.cancelAnimationFrame || window.mozCancelAnimationFrame || window.cancelRequestAnimationFrame;\n\n _fun && _fun(frameId);\n};\n\nexport default util;","/**\n * @typedef {{\n * device: 'pc' | 'mobile',\n * browser: 'ie' | 'firefox' | 'chrome' | 'opera' | 'safari',\n * os: {\n * isTablet: boolean,\n * isPhone: boolean,\n * isIpad: boolean,\n * isIos: boolean,\n * isAndroid: boolean,\n * isPc: boolean,\n * isSymbian: boolean,\n * isWindowsPhone: boolean,\n * isFireFox: boolean\n * },\n * isWeixin: boolean\n * }} ISniffer\n */\nvar VERSION_REG = {\n android: /(Android)\\s([\\d.]+)/,\n ios: /(Version)\\/([\\d.]+)/\n};\n/**\n * @type ISniffer\n */\n\nvar sniffer = {\n get device() {\n var r = sniffer.os;\n return r.isPc ? 'pc' : 'mobile'; // return r.isPc ? 'pc' : r.isTablet ? 'tablet' : 'mobile'\n },\n\n get browser() {\n if (typeof navigator === 'undefined') {\n return '';\n }\n\n var ua = navigator.userAgent.toLowerCase();\n var reg = {\n ie: /rv:([\\d.]+)\\) like gecko/,\n firefox: /firefox\\/([\\d.]+)/,\n chrome: /chrome\\/([\\d.]+)/,\n opera: /opera.([\\d.]+)/,\n safari: /version\\/([\\d.]+).*safari/\n };\n return [].concat(Object.keys(reg).filter(function (key) {\n return reg[key].test(ua);\n }))[0];\n },\n\n get os() {\n if (typeof navigator === 'undefined') {\n return {};\n }\n\n var ua = navigator.userAgent;\n var isWindowsPhone = /(?:Windows Phone)/.test(ua);\n var isSymbian = /(?:SymbianOS)/.test(ua) || isWindowsPhone;\n var isAndroid = /(?:Android)/.test(ua);\n var isFireFox = /(?:Firefox)/.test(ua);\n var isTablet = /(?:iPad|PlayBook)/.test(ua) || isAndroid && !/(?:Mobile)/.test(ua) || isFireFox && /(?:Tablet)/.test(ua);\n var isPhone = /(?:iPhone)/.test(ua) && !isTablet;\n var isPc = !isPhone && !isAndroid && !isSymbian && !isTablet;\n var isIpad = /(?:iPad|PlayBook)/.test(ua);\n return {\n isTablet: isTablet,\n isPhone: isPhone,\n isIpad: isIpad,\n isIos: isPhone || isIpad,\n isAndroid: isAndroid,\n isPc: isPc,\n isSymbian: isSymbian,\n isWindowsPhone: isWindowsPhone,\n isFireFox: isFireFox\n };\n },\n\n get osVersion() {\n var ua = navigator.userAgent;\n var reg = ''; // ios\n\n if (/(?:iPhone)|(?:iPad|PlayBook)/.test(ua)) {\n reg = VERSION_REG.ios; // android\n } else {\n reg = VERSION_REG.android;\n }\n\n var _match = reg ? reg.exec(ua) : [];\n\n if (_match && _match.length >= 3) {\n var version = _match[2].split('.');\n\n return version.length > 0 ? parseInt(version[0]) : 0;\n }\n\n return 0;\n },\n\n get isWeixin() {\n if (typeof navigator === 'undefined') {\n return false;\n }\n\n var reg = /(micromessenger)\\/([\\d.]+)/;\n var match = reg.exec(navigator.userAgent.toLocaleLowerCase());\n\n if (match) {\n return true;\n }\n }\n\n};\nexport default sniffer;","/**\n * @type {string}\n * */\nvar version = JSON.parse(\"\\\"3.0.0-alpha.102\\\"\");\nexport default version;","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n// eslint-disable-next-line no-undef\nimport version from './version';\n/**\n * @typedef { import ('./player').default } Player\n */\n\nvar ERROR_TYPE_MAP = {\n 1: 'network',\n 2: 'network',\n 3: 'decoder',\n 4: 'format'\n};\nvar ErrorTypes = {\n network: {\n code: 1\n },\n mse: {\n code: 2\n },\n parse: {\n code: 3\n },\n format: {\n code: 4\n },\n decoder: {\n code: 5\n },\n runtime: {\n code: 6\n },\n timeout: {\n code: 7\n },\n other: {\n code: 8\n }\n};\n/**\n * @typedef { {\n * playerVersion: string,\n * domain: string,\n * currentTime: number,\n * duration: number,\n * ended: boolean,\n * readyState: number,\n * networkState: number,\n * src: any,\n * errorType: string,\n * errorCode: number,\n * message: string,\n * mediaError?: {\n * code: number,\n * message?: string\n * },\n * originError?: any,\n * url?: any,\n * [propName: string]: any\n * } } IError\n */\n\n/**\n * @type { IError }\n */\n\nvar Errors =\n/**\n *\n * @param { Player } player\n * @param { {\n * errorType: string,\n * errorCode: number,\n * errorMessage: string,\n * originError: any,\n * ext: { [propName: string]: any; }\n * } } errorInfo\n * @returns\n */\nfunction Errors(player) {\n var errorInfo = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n errorType: '',\n errorCode: 0,\n errorMessage: '',\n originError: '',\n ext: {},\n mediaError: null\n };\n\n _classCallCheck(this, Errors);\n\n var ERROR_TYPES = player && player.i18n ? player.i18n.ERROR_TYPES : null;\n\n if (player.video) {\n var mediaError = errorInfo.mediaError ? errorInfo.mediaError : player.video.error || {};\n var duration = player.duration,\n currentTime = player.currentTime,\n ended = player.ended,\n src = player.src,\n currentSrc = player.currentSrc;\n var _player$video = player.video,\n readyState = _player$video.readyState,\n networkState = _player$video.networkState;\n var r = {\n playerVersion: version,\n domain: document.domain,\n currentTime: currentTime,\n duration: duration,\n ended: ended,\n readyState: readyState,\n networkState: networkState,\n src: src || currentSrc,\n errorType: errorInfo.errorType,\n errorCode: errorInfo.errorCode || mediaError.code,\n message: errorInfo.errorMessage || mediaError.message,\n mediaError: mediaError,\n originError: errorInfo.originError ? errorInfo.originError.stack : ''\n };\n errorInfo.ext && Object.keys(errorInfo.ext).map(function (key) {\n r[key] = errorInfo.ext[key];\n });\n return r;\n } else {\n if (arguments.length > 1) {\n var _r = {\n playerVersion: version,\n domain: document.domain\n };\n var arr = ['errorType', 'currentTime', 'duration', 'networkState', 'readyState', 'src', 'currentSrc', 'ended', 'errd', 'errorCode', 'mediaError'];\n\n for (var i = 0; i < arguments.length; i++) {\n _r[arr[i]] = arguments[i];\n }\n\n _r.ex = ERROR_TYPES ? (ERROR_TYPES[arguments[0]] || {}).msg : ''; // 补充信息\n\n return _r; // r.playerVersion = version // 播放器版本\n // r.errorType = arguments[0]\n // r.domain = document.domain // domain\n // r.duration = duration // 视频时长\n // r.currentTime = currentTime\n // r.networkState = networkState\n // r.readyState = readyState\n // r.currentSrc = currentSrc\n // r.src = src\n // r.ended = ended\n // r.errd = errd // 错误详情\n // r.ex = (ErrorTypes[type] || {}).msg // 补充信息\n // r.errorCode = errorCode\n // r.mediaError = mediaError\n }\n }\n};\n\nexport { Errors as default, ErrorTypes, ERROR_TYPE_MAP };","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport EventEmitter from 'eventemitter3';\nimport Util from './utils/util';\nimport Sniffer from './utils/sniffer';\nimport Errors, { ERROR_TYPE_MAP } from './error';\nimport { URL_CHANGE, WAITING } from './events';\n/**\n * @typedef { import ('eventemitter3') } EventEmitter\n */\n\n/**\n * @typedef { {\n * duration: number,\n * currentTime: number,\n * muted: boolean,\n * defaultMuted: boolean,\n * volume: number,\n * playbackRate: number,\n * defaultPlaybackRate: number,\n * autoplay: boolean,\n * readonly paused: boolean,\n * readonly ended: boolean,\n * readonly networkState: number,\n * readonly readyState: number,\n * readonly seeking: boolean,\n * src: any,\n * play: Function,\n * pause: Function,\n * } } IVideoProxy\n */\n\nvar VIDEO_EVENTS = ['play', 'playing', 'pause', 'ended', 'error', 'seeking', 'seeked', 'timeupdate', 'waiting', 'canplay', 'canplaythrough', 'durationchange', 'volumechange', 'loadeddata', 'loadstart', 'emptied', 'ratechange', 'progress', 'stalled', 'suspend', 'abort'];\n\nfunction emitEvents(eventKey, e) {\n if (!this || !this.emit) {\n return;\n }\n\n if (eventKey === 'error') {\n this.errorHandler(eventKey);\n } else {\n this.emit(eventKey, e);\n }\n}\n\nfunction getHandler(eventName, player) {\n var funName = \"on\".concat(eventName.charAt(0).toUpperCase()).concat(eventName.slice(1));\n\n if (player[funName] && typeof player[funName] === 'function') {\n player.on(eventName, player[funName]);\n }\n\n return function (e) {\n var eventKey = eventName;\n var eData = {\n player: player,\n eventName: eventName,\n timeStamp: e.timeStamp,\n currentTime: player.currentTime,\n duration: player.duration,\n paused: player.paused,\n ended: player.ended,\n isInternalOp: !!player._internalOp[e.type],\n // 是否是内部操作,不反应到UI上\n muted: player.muted,\n volume: player.volume,\n host: Util.getHostFromUrl(player.currentSrc),\n vtype: player.vtype\n };\n player.removeInnerOP(e.type);\n\n if (eventKey === 'timeupdate') {\n player._currentTime = player.video && player.video.currentTime;\n }\n\n if (eventKey === 'durationchange') {\n player._duration = player.video.duration;\n }\n\n if (eventKey === 'volumechange') {\n eData.isMutedChange = player._lastMuted !== player.muted;\n player._lastMuted = player.muted;\n } // 执行video相关事件中间件能力\n\n\n if (player.videoEventMiddleware[eventName]) {\n var callback = emitEvents.bind(player);\n\n try {\n player.videoEventMiddleware[eventName].call(player, eData, callback);\n } catch (e) {\n emitEvents.call(player, eventKey, eData);\n throw e;\n }\n } else {\n emitEvents.call(player, eventKey, eData);\n }\n };\n}\n/**\n * @extends { EventEmitter }\n */\n\n\nvar VideoProxy = /*#__PURE__*/function (_EventEmitter) {\n _inherits(VideoProxy, _EventEmitter);\n\n var _super = _createSuper(VideoProxy);\n\n /**\n * @param {any} options\n */\n function VideoProxy(options) {\n var _this;\n\n _classCallCheck(this, VideoProxy);\n\n _this = _super.call(this, options);\n /**\n * @private\n */\n\n _this._hasStart = false;\n /**\n * @private\n */\n\n _this._currentTime = 0;\n /**\n * @private\n */\n\n _this._duration = 0;\n /**\n * @private\n */\n\n _this._internalOp = {};\n /**\n * @private\n */\n\n _this._lastMuted = false;\n /**\n * @type {string}\n * 当前播放类型\n */\n\n _this.vtype = 'MP4';\n /**\n * @description 初始化时添加在video上的属性集合\n * @type { {[propName: string]: any; } }\n */\n\n _this.videoConfig = Object.assign({}, {\n controls: false,\n autoplay: options.autoplay,\n playsinline: options.playsinline,\n 'x5-playsinline': options.playsinline,\n 'webkit-playsinline': options.playsinline,\n 'x5-video-player-fullscreen': options['x5-video-player-fullscreen'] || options.x5VideoPlayerFullscreen,\n 'x5-video-orientation': options['x5-video-orientation'] || options.x5VideoOrientation,\n airplay: options.airplay,\n 'webkit-airplay': options.airplay,\n tabindex: 2,\n mediaType: options.mediaType || 'video'\n }, options.videoConfig, options.videoAttributes);\n /**\n * @description Compatible with WeChat webview\n * \"x5-playsinline' and 'x5-video-player-type' only one needs to exist\n * @doc https://x5.tencent.com/docs/video.html\n */\n\n var playerType = options['x5-video-player-type'] || options.x5VideoPlayerType;\n\n if (Sniffer.isWeixin && Sniffer.os.isAndroid && playerType) {\n _this.videoConfig['x5-video-player-type'] = playerType;\n delete _this.videoConfig.playsinline;\n delete _this.videoConfig['webkit-playsinline'];\n delete _this.videoConfig['x5-playsinline'];\n }\n\n if (options.loop) {\n _this.videoConfig.loop = 'loop';\n }\n /**\n * @type { HTMLVideoElement | HTMLAudioElement | HTMLElement | IVideoProxy | null }\n */\n\n\n _this.video = Util.createDom(_this.videoConfig.mediaType, '', _this.videoConfig, '');\n\n if (options.defaultPlaybackRate) {\n _this.video.defaultPlaybackRate = _this.video.playbackRate = options.defaultPlaybackRate;\n }\n\n if (Util.typeOf(options.volume) === 'Number') {\n _this.volume = options.volume;\n }\n\n if (options.autoplayMuted) {\n _this.video.muted = true;\n _this._lastMuted = true;\n }\n\n if (options.autoplay) {\n _this.video.autoplay = true;\n }\n /**\n * @private\n */\n\n\n _this._interval = {};\n /**\n * @readonly\n */\n\n _this.videoEventMiddleware = {};\n\n _this.attachVideoEvents();\n\n return _this;\n }\n /**\n * @description set middleware\n * @param { {[propName: string]: (e: {player: any, eventName: string}, callback: () => void) => any} } middlewares\n */\n\n\n _createClass(VideoProxy, [{\n key: \"setEventsMiddleware\",\n value: function setEventsMiddleware(middlewares) {\n var _this2 = this;\n\n Object.keys(middlewares).map(function (key) {\n _this2.videoEventMiddleware[key] = middlewares[key];\n });\n }\n /**\n * @description remove middleware\n * @param { { [propName: string]: (e: {player: any, eventName: string}, callback: () => void) => any} } middlewares\n */\n\n }, {\n key: \"removeEventsMiddleware\",\n value: function removeEventsMiddleware(middlewares) {\n var _this3 = this;\n\n Object.keys(middlewares).map(function (key) {\n delete _this3.videoEventMiddleware[key];\n });\n }\n /**\n * Add media eventListener to the video object\n * @param { any } [video]\n */\n\n }, {\n key: \"attachVideoEvents\",\n value: function attachVideoEvents(video) {\n var _this4 = this;\n\n if (!this.evHandlers) {\n /**\n * @private\n */\n this._evHandlers = VIDEO_EVENTS.map(function (item) {\n return _defineProperty({}, item, getHandler(item, _this4));\n });\n }\n\n if (!video) {\n video = this.video;\n }\n\n this._evHandlers.map(function (item) {\n var eventKey = Object.keys(item)[0];\n video.addEventListener(eventKey, item[eventKey], false);\n });\n }\n /**\n * @description remove media eventListener from the video object\n * @param { any } [video]\n */\n\n }, {\n key: \"detachVideoEvents\",\n value: function detachVideoEvents(video) {\n if (!video) {\n video = this.video;\n }\n\n this._evHandlers.map(function (item) {\n var eventKey = Object.keys(item)[0];\n video.removeEventListener(Object.keys(item)[0], item[eventKey], false);\n });\n }\n /**\n * 针对source列表播放方式添加错误监听\n * @doc https://stackoverflow.com/questions/47557135/html5-detect-the-type-of-error-when-trying-to-load-a-video-using-a-source-elem\n * @protected\n * @param { HTMLVideoElement | HTMLAudioElement } video\n */\n\n /**\n * 针对source列表播放方式添加错误监听\n * @doc https://stackoverflow.com/questions/47557135/html5-detect-the-type-of-error-when-trying-to-load-a-video-using-a-source-elem\n * @protected\n * @param { HTMLVideoElement | HTMLAudioElement } video\n * @param { Array<{src: string, type: string }>} urls\n */\n\n }, {\n key: \"_attachSourceEvents\",\n value: function _attachSourceEvents(video, urls) {\n var _this5 = this;\n\n video.removeAttribute('src');\n urls.forEach(function (item) {\n _this5.video.appendChild(Util.createDom('source', '', {\n src: \"\".concat(item.src),\n type: \"\".concat(item.type || '')\n }));\n });\n var _c = video.children;\n /**\n * @private\n */\n\n this._videoSourceCount = _c.length;\n /**\n * @private\n */\n\n !this._sourceError && (this._sourceError = function (e) {\n _this5._videoSourceCount--;\n\n if (_this5._videoSourceCount === 0) {\n if (_this5.videoEventMiddleware.error) {\n _this5.videoEventMiddleware.error.call(_this5, e, function () {\n _this5.errorHandler('error');\n });\n } else {\n _this5.errorHandler('error', {\n code: 4,\n message: 'sources load error'\n });\n }\n }\n });\n\n for (var i = 0; i < _c.length; i++) {\n _c[i].addEventListener('error', this._sourceError);\n }\n }\n /**\n * 移除source列表错误事件监听\n * @protected\n * @param { HTMLVideoElement | HTMLAudioElement } video\n */\n\n }, {\n key: \"_detachSourceEvents\",\n value: function _detachSourceEvents(video) {\n var _c = video.children;\n\n if (_c.length === 0 || !this._sourceError) {\n return;\n }\n\n for (var i = 0; i < _c.length; i++) {\n _c[i].removeEventListener('error', this._sourceError);\n }\n\n while (_c.length > 0) {\n video.removeChild(_c[0]);\n }\n }\n /**\n * @description Media Error handler\n * @param { string } eventName\n */\n\n }, {\n key: \"errorHandler\",\n value: function errorHandler(name) {\n var error = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n if (this.video && (this.video.error || error)) {\n var _e = this.video.error || error;\n\n var type = _e.code ? ERROR_TYPE_MAP[_e.code] : 'other';\n var message = _e.message;\n\n if (!this.video.currentSrc) {\n message = 'empty_src';\n _e = {\n code: 6,\n message: message\n };\n }\n\n this.emit(name, new Errors(this, {\n errorType: type,\n errorCode: _e.code,\n errorMessage: _e.message || '',\n mediaError: _e\n }));\n }\n }\n /**\n * @type { boolean }\n * @description 是否开始播放\n */\n\n }, {\n key: \"hasStart\",\n get: function get() {\n return this._hasStart;\n },\n set: function set(bool) {\n if (typeof bool === 'boolean') {\n this._hasStart = bool;\n this.emit('hasstart');\n }\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n var _this6 = this;\n\n if (this.video) {\n if (this.video.pause) {\n this.video.pause();\n this.video.muted = true;\n }\n\n this.video.removeAttribute('src'); // empty source\n\n this.video.load();\n }\n\n this._currentTime = 0;\n this._duration = 0;\n this._hasStart = false;\n this.videoConfig = null;\n\n for (var k in this._interval) {\n clearInterval(this._interval[k]);\n this._interval[k] = null;\n }\n\n this.detachVideoEvents();\n\n this._evHandlers.map(function (item) {\n var eventKey = Object.keys(item)[0];\n var funName = \"on\".concat(eventKey.charAt(0).toUpperCase()).concat(eventKey.slice(1));\n\n if (typeof _this6[funName] === 'function') {\n _this6.off(eventKey, _this6[funName]);\n }\n });\n\n this._evHandlers = null;\n this.video = null;\n this.videoEventMiddleware = {};\n this.removeAllListeners();\n }\n /**\n *\n * @returns { Promise | null }\n */\n\n }, {\n key: \"play\",\n value: function play() {\n var ret = this.video ? this.video.play() : null;\n return ret;\n }\n }, {\n key: \"pause\",\n value: function pause() {\n this.video && this.video.pause();\n }\n /**\n *\n * @param { string } type\n * @returns { boolean }\n */\n\n }, {\n key: \"canPlayType\",\n value: function canPlayType(type) {\n return this.video ? this.video.canPlayType(type) : false;\n }\n /**\n *\n * @param { any } [buffered]\n * @returns { Array }\n */\n\n }, {\n key: \"getBufferedRange\",\n value: function getBufferedRange(buffered) {\n var range = [0, 0];\n\n if (!this.video) {\n return range;\n }\n\n if (!buffered) {\n buffered = this.video.buffered;\n }\n\n var currentTime = this.video.currentTime;\n\n if (buffered) {\n for (var i = 0, len = buffered.length; i < len; i++) {\n range[0] = buffered.start(i);\n range[1] = buffered.end(i);\n\n if (range[0] <= currentTime && currentTime <= range[1]) {\n break;\n }\n }\n }\n\n if (range[0] - currentTime <= 0 && currentTime - range[1] <= 0) {\n return range;\n } else {\n return [0, 0];\n }\n }\n /**\n * @type { boolean }\n * @description 设置/返回 自动播放属性\n */\n\n }, {\n key: \"autoplay\",\n get: function get() {\n return this.video ? this.video.autoplay : false;\n }\n /**\n * @type { TimeRanges | null }\n * @description 返回当前缓冲的TimeRange对象集合\n */\n ,\n set: function set(isTrue) {\n this.video && (this.video.autoplay = isTrue);\n }\n }, {\n key: \"buffered\",\n get: function get() {\n return this.video ? this.video.buffered : null;\n }\n /**\n * @type { Array<{start: number, end: number}> | null}\n * @description 返回当前自定义的缓存列表\n */\n\n }, {\n key: \"buffered2\",\n get: function get() {\n return this.video ? Util.getBuffered2(this.video.buffered) : null;\n }\n /**\n * @type { {start: number, end: number} }\n */\n\n }, {\n key: \"bufferedPoint\",\n get: function get() {\n var ret = {\n start: 0,\n end: 0\n };\n\n if (!this.video) {\n return ret;\n }\n\n var _buffered = this.video.buffered;\n\n if (!_buffered || _buffered.length === 0) {\n return ret;\n }\n\n for (var i = 0; i < _buffered.length; i++) {\n if ((_buffered.start(i) <= this.currentTime || _buffered.start(i) < 0.1) && _buffered.end(i) >= this.currentTime) {\n return {\n start: _buffered.start(i),\n end: _buffered.end(i)\n };\n }\n }\n\n return ret;\n }\n /**\n * @type { string}\n * @description 设置/返回是否跨域\n * */\n\n }, {\n key: \"crossOrigin\",\n get: function get() {\n return this.video ? this.video.crossOrigin : '';\n },\n set: function set(isTrue) {\n this.video && (this.video.crossOrigin = isTrue);\n }\n /**\n * @type { string }\n * @description 设置/返回视频播放地址\n * */\n\n }, {\n key: \"currentSrc\",\n get: function get() {\n return this.video ? this.video.currentSrc : '';\n },\n set: function set(src) {\n this.video && (this.video.currentSrc = src);\n }\n /**\n * @type { number }\n * @description 设置/返回视频当前播放时间\n * */\n\n }, {\n key: \"currentTime\",\n get: function get() {\n if (!this.video) {\n return 0;\n }\n\n return this.video.currentTime !== undefined ? this.video.currentTime : this._currentTime;\n },\n set: function set(time) {\n this.video && (this.video.currentTime = time);\n }\n /**\n * @type { boolean }\n * 设置/返回视频默认静音\n * */\n\n }, {\n key: \"defaultMuted\",\n get: function get() {\n return this.video ? this.video.defaultMuted : false;\n },\n set: function set(isTrue) {\n this.video && (this.video.defaultMuted = isTrue);\n }\n /**\n * @type { number }\n * @description 返回视频时长,单位:s\n * */\n\n }, {\n key: \"duration\",\n get: function get() {\n return this._duration;\n }\n /**\n * @type { boolean }\n * @description 回视频是否播放结束\n * */\n\n }, {\n key: \"ended\",\n get: function get() {\n return this.video ? this.video.ended : false;\n }\n /**\n * @type { MEDIA_ERR_ABORTED | MEDIA_ERR_NETWORK | MEDIA_ERR_DECODE | MEDIA_ERR_SRC_NOT_SUPPORTED | null }\n * @description 频错误信息,该错误会返回当前语言的文本\n */\n\n }, {\n key: \"error\",\n get: function get() {\n if (!this.video || !this.video.error) {\n return null;\n }\n\n var status = ['MEDIA_ERR_ABORTED', 'MEDIA_ERR_NETWORK', 'MEDIA_ERR_DECODE', 'MEDIA_ERR_SRC_NOT_SUPPORTED'];\n return status[this.video.error.code - 1];\n }\n /**\n * @type { boolean }\n * @description 否开启了循环播放\n */\n\n }, {\n key: \"loop\",\n get: function get() {\n return this.video ? this.video.loop : false;\n },\n set: function set(isTrue) {\n this.video && (this.video.loop = isTrue);\n }\n /**\n * @type { boolean }\n * @description 静音\n */\n\n }, {\n key: \"muted\",\n get: function get() {\n return this.video ? this.video.muted : false;\n },\n set: function set(isTrue) {\n if (!this.video || this.video.muted === isTrue) {\n return;\n }\n\n this._lastMuted = this.video.muted;\n this.video.muted = isTrue;\n }\n /**\n * @type { 0 | 1 | 2 | 3}\n * @description 返回视频的当前网络状态\n */\n\n }, {\n key: \"networkState\",\n get: function get() {\n if (!this.video) {\n return 0;\n }\n\n return this.video.networkState;\n }\n /**\n * @type { boolean }\n * @description 回当前视频是否是暂停状态\n */\n\n }, {\n key: \"paused\",\n get: function get() {\n return this.video ? this.video.paused : true;\n }\n /**\n * @type { number }\n * @description 返回/设置倍速\n */\n\n }, {\n key: \"playbackRate\",\n get: function get() {\n return this.video ? this.video.playbackRate : 0;\n },\n set: function set(rate) {\n if (!this.video || rate === Infinity) {\n return;\n }\n\n this.video.defaultPlaybackRate = rate;\n this.video.playbackRate = rate;\n }\n /**\n * @type { TimeRanges | null}\n */\n\n }, {\n key: \"played\",\n get: function get() {\n return this.video ? this.video.played : null;\n }\n /**\n * @type { boolean }\n */\n\n }, {\n key: \"preload\",\n get: function get() {\n return this.video ? this.video.preload : false;\n },\n set: function set(isTrue) {\n this.video && (this.video.preload = isTrue);\n }\n /**\n * @type { 0 | 1 | 2 | 3 | 4 }\n * @description 回视频的就绪状态\n */\n\n }, {\n key: \"readyState\",\n get: function get() {\n if (!this.video) {\n return 0;\n }\n\n return this.video.readyState; // const status = [\n // 'HAVE_NOTHING',\n // 'HAVE_METADATA',\n // 'HAVE_CURRENT_DATA',\n // 'HAVE_FUTURE_DATA',\n // 'HAVE_ENOUGH_DATA']\n }\n /**\n * @type { boolean }\n * @description 当前视频是否可以seek\n */\n\n }, {\n key: \"seekable\",\n get: function get() {\n return this.video ? this.video.seekable : false;\n }\n /**\n * @type { boolean }\n * @description 当前视频是否处于seeking状态下\n */\n\n }, {\n key: \"seeking\",\n get: function get() {\n return this.video ? this.video.seeking : false;\n }\n /**\n * @type { any }\n * @description 设置/返回当前视频的地址\n */\n\n }, {\n key: \"src\",\n get: function get() {\n return this.video ? this.video.src : '';\n },\n set: function set(url) {\n if (!this.video) {\n return;\n }\n\n this.emit(URL_CHANGE, url);\n this.emit(WAITING); // this.video.pause()\n\n this._currentTime = 0;\n this._duration = 0; // Some firefox versions firefox Cannot recognize currentSrc of type Blob\n\n if (/^blob/.test(this.video.currentSrc) || /^blob/.test(this.video.src)) {\n // has transmuxer core\n this.onWaiting();\n return;\n }\n\n this._detachSourceEvents(this.video);\n\n if (Util.typeOf(url) === 'Array') {\n this._attachSourceEvents(this.video, url);\n } else {\n this.video.src = url;\n }\n }\n /**\n * @type { number }\n * @description 设置/返回视频的音量\n */\n\n }, {\n key: \"volume\",\n get: function get() {\n return this.video ? this.video.volume : 0;\n },\n set: function set(vol) {\n if (vol === Infinity || !this.video) {\n return;\n }\n\n this.video.volume = vol;\n }\n }, {\n key: \"addInnerOP\",\n value: function addInnerOP(event) {\n this._internalOp[event] = true;\n }\n }, {\n key: \"removeInnerOP\",\n value: function removeInnerOP(event) {\n delete this._internalOp[event];\n }\n /** ******************* 以下api只有申明作用,具体实现依赖EventEmitter ******************/\n\n /**\n *\n * @param { string } event\n * @param { any } [data]\n * @returns\n */\n\n }, {\n key: \"emit\",\n value: function emit(event, data) {\n var _get2;\n\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\n (_get2 = _get(_getPrototypeOf(VideoProxy.prototype), \"emit\", this)).call.apply(_get2, [this, event, data].concat(args));\n }\n /**\n *\n * @param { string } event\n * @param { (data?: any) => any } callback\n * @returns\n */\n\n }, {\n key: \"on\",\n value: function on(event, callback) {\n var _get3;\n\n for (var _len2 = arguments.length, args = new Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n (_get3 = _get(_getPrototypeOf(VideoProxy.prototype), \"on\", this)).call.apply(_get3, [this, event, callback].concat(args));\n }\n /**\n *\n * @param { string } event\n * @param { (data?: any) => any } callback\n * @returns\n */\n\n }, {\n key: \"once\",\n value: function once(event, callback) {\n var _get4;\n\n for (var _len3 = arguments.length, args = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {\n args[_key3 - 2] = arguments[_key3];\n }\n\n (_get4 = _get(_getPrototypeOf(VideoProxy.prototype), \"once\", this)).call.apply(_get4, [this, event, callback].concat(args));\n }\n /**\n *\n * @param { string } event\n * @param { (data?: any) => any } callback\n * @returns\n */\n\n }, {\n key: \"off\",\n value: function off(event, callback) {\n var _get5;\n\n for (var _len4 = arguments.length, args = new Array(_len4 > 2 ? _len4 - 2 : 0), _key4 = 2; _key4 < _len4; _key4++) {\n args[_key4 - 2] = arguments[_key4];\n }\n\n (_get5 = _get(_getPrototypeOf(VideoProxy.prototype), \"off\", this)).call.apply(_get5, [this, event, callback].concat(args));\n }\n }, {\n key: \"offAll\",\n value: function offAll() {\n _get(_getPrototypeOf(VideoProxy.prototype), \"removeAllListeners\", this).call(this);\n }\n }]);\n\n return VideoProxy;\n}(EventEmitter);\n\nexport default VideoProxy;","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar INDEXDB = /*#__PURE__*/function () {\n function INDEXDB() {\n var mydb = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n name: 'xgplayer',\n version: 1,\n db: null,\n ojstore: {\n name: 'xg-m4a',\n keypath: 'vid'\n }\n };\n\n _classCallCheck(this, INDEXDB);\n\n this.indexedDB = window.indexedDB || window.webkitindexedDB;\n this.IDBKeyRange = window.IDBKeyRange || window.webkitIDBKeyRange; // 键范围\n\n this.myDB = mydb;\n }\n\n _createClass(INDEXDB, [{\n key: \"openDB\",\n value: function openDB(callback) {\n var _this = this;\n\n // 建立或打开数据库,建立对象存储空间(ObjectStore)\n var self = this;\n var version = this.myDB.version || 1;\n var request = self.indexedDB.open(self.myDB.name, version);\n\n request.onerror = function (e) {// console.log('e.currentTarget.error.message')\n };\n\n request.onsuccess = function (e) {\n _this.myDB.db = e.target.result; // console.log('成功建立并打开数据库:' + this.myDB.name + ' version' + this.myDB.version)\n\n callback.call(self);\n };\n\n request.onupgradeneeded = function (e) {\n var db = e.target.result; // eslint-disable-next-line no-unused-vars\n\n var transaction = e.target.transaction; // eslint-disable-next-line no-unused-vars\n\n var store;\n\n if (!db.objectStoreNames.contains(self.myDB.ojstore.name)) {\n // 没有该对象空间时创建该对象空间\n // eslint-disable-next-line no-unused-vars\n store = db.createObjectStore(self.myDB.ojstore.name, {\n keyPath: self.myDB.ojstore.keypath\n }); // console.log('成功建立对象存储空间:' + this.myDB.ojstore.name)\n }\n };\n }\n }, {\n key: \"deletedb\",\n value: function deletedb() {\n // 删除数据库\n var self = this;\n self.indexedDB.deleteDatabase(this.myDB.name); // console.log(this.myDB.name + '数据库已删除')\n }\n }, {\n key: \"closeDB\",\n value: function closeDB() {\n // 关闭数据库\n this.myDB.db.close(); // console.log('数据库已关闭')\n }\n }, {\n key: \"addData\",\n value: function addData(storename, data) {\n // 添加数据,重复添加会报错\n var store = this.myDB.db.transaction(storename, 'readwrite').objectStore(storename);\n var request;\n\n for (var i = 0; i < data.length; i++) {\n request = store.add(data[i]);\n\n request.onerror = function () {// console.error('add添加数据库中已有该数据')\n };\n\n request.onsuccess = function () {// console.log('add添加数据已存入数据库')\n };\n }\n }\n }, {\n key: \"putData\",\n value: function putData(storename, data) {\n // 添加数据,重复添加会更新原有数据\n var store = this.myDB.db.transaction(storename, 'readwrite').objectStore(storename);\n var request;\n\n for (var i = 0; i < data.length; i++) {\n request = store.put(data[i]);\n\n request.onerror = function () {// console.error('put添加数据库中已有该数据')\n };\n\n request.onsuccess = function () {// console.log('put添加数据已存入数据库')\n };\n }\n }\n }, {\n key: \"getDataByKey\",\n value: function getDataByKey(storename, key, callback) {\n var self = this; // 根据存储空间的键找到对应数据\n\n var store = this.myDB.db.transaction(storename, 'readwrite').objectStore(storename);\n var request = store.get(key);\n\n request.onerror = function () {\n // console.error('getDataByKey error')\n callback.call(self, null);\n };\n\n request.onsuccess = function (e) {\n var result = e.target.result; // console.log('查找数据成功')\n\n callback.call(self, result);\n };\n }\n }, {\n key: \"deleteData\",\n value: function deleteData(storename, key) {\n // 删除某一条记录\n var store = this.myDB.db.transaction(storename, 'readwrite').objectStore(storename);\n store.delete(key); // console.log('已删除存储空间' + storename + '中' + key + '记录')\n }\n }, {\n key: \"clearData\",\n value: function clearData(storename) {\n // 删除存储空间全部记录\n var store = this.myDB.db.transaction(storename, 'readwrite').objectStore(storename);\n store.clear(); // console.log('已删除存储空间' + storename + '全部记录')\n }\n }]);\n\n return INDEXDB;\n}();\n\nexport default INDEXDB;","export var FULLSCREEN_EVENTS = ['fullscreenchange', 'webkitfullscreenchange', 'mozfullscreenchange', 'MSFullscreenChange'];\nexport var GET_FULLSCREEN_API = ['requestFullscreen', 'webkitRequestFullscreen', 'mozRequestFullScreen', 'msRequestFullscreen'];\nexport var EXIT_FULLSCREEN_API = ['exitFullscreen', 'webkitExitFullscreen', 'mozCancelFullScreen', 'msExitFullscreen'];","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction callHandler(obj, handler, next) {\n for (var _len = arguments.length, args = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {\n args[_key - 3] = arguments[_key];\n }\n\n var ret = handler.call.apply(handler, [obj].concat(args));\n\n if (!next || typeof next !== 'function') {\n return;\n }\n\n if (ret && ret.then) {\n ret.then(function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n next.call.apply(next, [obj].concat(args));\n });\n } else {\n next.call.apply(next, [obj].concat(args));\n }\n}\n/**\n * 给某个处理函数添加hook能力\n * @param { string } hookName\n * @param { Function } handler\n * @param { { pre?: any, next?:any } } preset\n * {\n * pre: () => { // run beafore hook},\n * next: () => { // run after hook return}\n * }\n */\n\n\nfunction hook(hookName, handler) {\n var preset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n pre: null,\n next: null\n };\n\n if (!this.__hooks) {\n this.__hooks = {};\n }\n\n !this.__hooks[hookName] && (this.__hooks[hookName] = null);\n return function () {\n var _arguments = arguments,\n _this = this;\n\n if (preset.pre) {\n try {\n var _preset$pre;\n\n (_preset$pre = preset.pre).call.apply(_preset$pre, [this].concat(Array.prototype.slice.call(arguments)));\n } catch (e) {\n e.message = \"[pluginName: \".concat(this.pluginName, \":\").concat(hookName, \":pre error] >> \").concat(e.message);\n throw e;\n }\n }\n\n if (this.__hooks && this.__hooks[hookName]) {\n try {\n var _this$__hooks$hookNam;\n\n var preRet = (_this$__hooks$hookNam = this.__hooks[hookName]).call.apply(_this$__hooks$hookNam, [this, this].concat(Array.prototype.slice.call(arguments)));\n\n if (preRet) {\n if (preRet.then) {\n preRet.then(function (isContinue) {\n if (isContinue !== false) {\n callHandler.apply(void 0, [_this, handler, preset.next].concat(_toConsumableArray(_arguments))); // handler.call(this, ...arguments)\n }\n }).catch(function (e) {\n throw e;\n });\n } else {\n callHandler.apply(void 0, [this, handler, preset.next].concat(Array.prototype.slice.call(arguments))); // handler.call(this, ...arguments)\n }\n } else if (preRet === undefined) {\n callHandler.apply(void 0, [this, handler, preset.next].concat(Array.prototype.slice.call(arguments)));\n }\n } catch (e) {\n e.message = \"[pluginName: \".concat(this.pluginName, \":\").concat(hookName, \"] >> \").concat(e.message);\n throw e;\n }\n } else {\n callHandler.apply(void 0, [this, handler, preset.next].concat(Array.prototype.slice.call(arguments)));\n }\n }.bind(this);\n}\n/**\n * 添加hooks\n * @param { string } 支持的hook名称\n * @param { Function } 具体的处理函数\n */\n\n\nfunction useHooks(hookName, handler) {\n var __hooks = this.__hooks;\n\n if (!__hooks) {\n return;\n } // eslint-disable-next-line no-prototype-builtins\n\n\n if (!__hooks.hasOwnProperty(hookName)) {\n console.warn(\"has no supported hook which name [\".concat(hookName, \"]\"));\n return false;\n }\n\n __hooks && (__hooks[hookName] = handler);\n return true;\n}\n/**\n * 移除hook\n * @param { string } hookName\n * @param { (plugin: any, ..args) => {} } handler\n * @returns void\n */\n\n\nfunction removeHooks(hookName, handler) {\n var __hooks = this.__hooks;\n\n if (!__hooks) {\n return;\n }\n\n __hooks[hookName] = null;\n}\n/**\n * 给某个插件添加hooks\n * @param { string } pluginName\n * @param {...any} args\n */\n\n\nfunction usePluginHooks(pluginName) {\n if (!this.plugins || !this.plugins[pluginName.toLowerCase()]) {\n return;\n }\n\n var plugin = this.plugins[pluginName.toLowerCase()];\n\n for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n\n return plugin.useHooks && plugin.useHooks.apply(plugin, args);\n}\n/**\n * hook装饰器,为某个实例添加usePluginHooks/hook/useHooks的能力\n * @param { any } instance\n * @param { Array } [hookNames]\n */\n\n\nfunction hooksDescriptor(instance) {\n var presetHooks = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n instance.__hooks = {};\n presetHooks && presetHooks.map(function (item) {\n instance.__hooks[item] = null;\n });\n Object.defineProperty(instance, 'hooks', {\n get: function get() {\n return instance.__hooks && Object.keys(instance.__hooks).map(function (key) {\n if (instance.__hooks[key]) {\n return key;\n }\n });\n }\n });\n}\n\nfunction delHooksDescriptor(instance) {\n instance.__hooks = null;\n}\n\nfunction runHooks(obj, hookName, handler) {\n for (var _len4 = arguments.length, args = new Array(_len4 > 3 ? _len4 - 3 : 0), _key4 = 3; _key4 < _len4; _key4++) {\n args[_key4 - 3] = arguments[_key4];\n }\n\n if (obj.__hooks && obj.__hooks[hookName]) {\n var _obj$__hooks$hookName;\n\n var ret = (_obj$__hooks$hookName = obj.__hooks[hookName]).call.apply(_obj$__hooks$hookName, [obj, obj].concat(args));\n\n if (ret && ret.then) {\n ret.then(function (data) {\n return data === false ? null : handler.call.apply(handler, [obj, obj].concat(args));\n }).catch(function (e) {\n console.warn(\"[runHooks]\".concat(hookName, \" reject\"), e.message);\n });\n } else if (ret !== false) {\n return handler.call.apply(handler, [obj, obj].concat(args));\n }\n } else {\n return handler.call.apply(handler, [obj, obj].concat(args));\n }\n}\n\nexport { hooksDescriptor as default, hook, useHooks, usePluginHooks, removeHooks, delHooksDescriptor, runHooks };","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nimport Util from '../utils/util';\nimport Sniffer from '../utils/sniffer';\nimport Errors from '../error';\nimport * as Events from '../events';\nimport XG_DEBUG from '../utils/debug';\nimport hooksDescriptor, { hook as _hook, useHooks as _useHooks, delHooksDescriptor } from '../plugin/hooksDescriptor';\n\nfunction showErrorMsg(pluginName, msg) {\n XG_DEBUG.logError(\"[\".concat(pluginName, \"] event or callback cant be undefined or null when call \").concat(msg));\n}\n/**\n * @typedef { import ('../player').default } Player\n */\n\n/**\n * @typedef { import ('../defaultConfig').IPlayerOptions } IPlayerOptions\n */\n\n/**\n * @typedef {{\n * index?: number,\n * player: Player,\n * pluginName: string,\n * config: {\n * [propName: string]: any\n * },\n * [propName: string]: any;\n * }} IBasePluginOptions\n */\n\n\nvar BasePlugin = /*#__PURE__*/function () {\n /**\n * @param { IBasePluginOptions } args\n */\n function BasePlugin(args) {\n _classCallCheck(this, BasePlugin);\n\n if (Util.checkIsFunction(this.beforeCreate)) {\n this.beforeCreate(args);\n }\n\n hooksDescriptor(this);\n /**\n * @private\n */\n\n this.__args = args;\n /**\n * @private\n */\n\n this.__events = {}; // 对player的事件监听缓存\n\n this.config = args.config || {};\n /**\n * @readonly\n * @type { Player }\n */\n\n this.player = null;\n /**\n * @readonly\n * @type { IPlayerOptions }\n */\n\n this.playerConfig = {};\n /**\n * @readonly\n * @type {string}\n */\n\n this.pluginName = '';\n\n this.__init(args);\n }\n /**\n * @param { IBasePluginOptions } args\n */\n\n\n _createClass(BasePlugin, [{\n key: \"beforeCreate\",\n value: function beforeCreate(args) {}\n }, {\n key: \"afterCreate\",\n value: function afterCreate() {}\n }, {\n key: \"beforePlayerInit\",\n value: function beforePlayerInit() {}\n }, {\n key: \"onPluginsReady\",\n value: function onPluginsReady() {}\n }, {\n key: \"afterPlayerInit\",\n value: function afterPlayerInit() {}\n }, {\n key: \"destroy\",\n value: function destroy() {}\n /**\n * @private\n * @param { any } args\n */\n\n }, {\n key: \"__init\",\n value: function __init(args) {\n this.player = args.player;\n this.playerConfig = args.player && args.player.config;\n this.pluginName = args.pluginName ? args.pluginName.toLowerCase() : this.constructor.pluginName.toLowerCase();\n this.logger = args.player && args.player.logger; // BasePlugin.defineGetterOrSetter(this, {\n // player: {\n // get: () => {\n // return args.player\n // },\n // configurable: true\n // },\n // playerConfig: {\n // get: () => {\n // return args.player && args.player.config\n // },\n // configurable: true\n // },\n // pluginName: {\n // get: () => {\n // if (args.pluginName) {\n // return args.pluginName.toLowerCase()\n // } else {\n // return this.constructor.pluginName.toLowerCase()\n // }\n // },\n // configurable: true\n // },\n // logger: {\n // get: () => {\n // return args.player.logger\n // },\n // configurable: true\n // }\n // })\n }\n /**\n * 更新语言\n * @param { string } lang\n */\n\n }, {\n key: \"updateLang\",\n value: function updateLang(lang) {\n if (!lang) {\n lang = this.lang;\n }\n }\n /**\n * @type { string }\n */\n\n }, {\n key: \"lang\",\n get: function get() {\n return this.player.lang;\n }\n }, {\n key: \"i18n\",\n get: function get() {\n return this.player.i18n;\n }\n }, {\n key: \"i18nKeys\",\n get: function get() {\n return this.player.i18nKeys;\n }\n /**\n *\n * @param { string | Array } event\n * @param { Function } callback\n * @returns\n */\n\n }, {\n key: \"on\",\n value: function on(event, callback) {\n var _this = this;\n\n if (!event || !callback || !this.player) {\n showErrorMsg(this.pluginName, 'plugin.on(event, callback)');\n return;\n }\n\n if (typeof event === 'string') {\n this.__events[event] = callback;\n this.player.on(event, callback);\n } else if (Array.isArray(event)) {\n event.forEach(function (item) {\n _this.__events[item] = callback;\n\n _this.player.on(item, callback);\n });\n }\n }\n /**\n *\n * @param { string } event\n * @param { Function } callback\n * @returns\n */\n\n }, {\n key: \"once\",\n value: function once(event, callback) {\n if (!event || !callback || !this.player) {\n showErrorMsg(this.pluginName, 'plugin.once(event, callback)');\n return;\n }\n\n this.player.once(event, callback);\n }\n /**\n *\n * @param { string } event\n * @param { Function } callback\n * @returns\n */\n\n }, {\n key: \"off\",\n value: function off(event, callback) {\n var _this2 = this;\n\n if (!event || !callback || !this.player) {\n showErrorMsg(this.pluginName, 'plugin.off(event, callback)');\n return;\n }\n\n if (typeof event === 'string') {\n delete this.__events[event];\n this.player.off(event, callback);\n } else if (Array.isArray(event)) {\n event.forEach(function (item) {\n delete _this2.__events[event];\n\n _this2.player.off(item, callback);\n });\n }\n }\n }, {\n key: \"offAll\",\n value: function offAll() {\n var _this3 = this;\n\n Object.keys(this.__events).map(function (item) {\n _this3.__events[item] && _this3.off(item, _this3.__events[item]);\n item && delete _this3.__events[item];\n });\n this.__events = {};\n }\n /**\n *\n * @param { string } event\n * @param {...any} res\n * @returns\n */\n\n }, {\n key: \"emit\",\n value: function emit(event) {\n var _this$player;\n\n if (!this.player) {\n return;\n }\n\n for (var _len = arguments.length, res = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n res[_key - 1] = arguments[_key];\n }\n\n (_this$player = this.player).emit.apply(_this$player, [event].concat(res));\n }\n }, {\n key: \"emitUserAction\",\n value: function emitUserAction(event, action) {\n var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n var nParams = _objectSpread(_objectSpread({}, params), {}, {\n pluginName: this.pluginName\n });\n\n this.player.emitUserAction(event, action, nParams);\n }\n /**\n * @param { string } hookName\n * @param { Function } handler\n * @param { {pre: Function| null , next: Function | null} } preset\n * @returns\n */\n\n }, {\n key: \"hook\",\n value: function hook(hookName, handler) {\n var preset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n pre: null,\n next: null\n };\n // eslint-disable-next-line no-return-assign\n return _hook.call.apply(_hook, [this].concat(Array.prototype.slice.call(arguments)));\n }\n /**\n * @param { string } hookName\n * @param { (plugin: any, ...args) => boolean | Promise } handler\n * @param {...any} args\n * @returns { boolean } isSuccess\n */\n\n }, {\n key: \"useHooks\",\n value: function useHooks(hookName, handler) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n return _useHooks.call.apply(_useHooks, [this].concat(Array.prototype.slice.call(arguments)));\n }\n /**\n * 注册子插件\n * @param { any } plugin\n * @param { any } [options]\n * @param { string } [name]\n * @returns { any }\n */\n\n }, {\n key: \"registerPlugin\",\n value: function registerPlugin(plugin) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var name = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n\n if (!this.player) {\n return;\n }\n\n name && (options.pluginName = name);\n return this.player.registerPlugin({\n plugin: plugin,\n options: options\n });\n }\n /**\n *\n * @param { string } name\n * @returns { any | null }\n */\n\n }, {\n key: \"getPlugin\",\n value: function getPlugin(name) {\n return this.player ? this.player.getPlugin(name) : null;\n }\n }, {\n key: \"__destroy\",\n value: function __destroy() {\n var _this4 = this;\n\n var player = this.player;\n var pluginName = this.pluginName;\n this.offAll();\n Util.clearAllTimers(this);\n\n if (Util.checkIsFunction(this.destroy)) {\n this.destroy();\n }\n\n ['player', 'playerConfig', 'pluginName', 'logger', '__args', '__hooks'].map(function (item) {\n _this4[item] = null;\n });\n player.unRegisterPlugin(pluginName);\n delHooksDescriptor(this);\n }\n }], [{\n key: \"defineGetterOrSetter\",\n value: function defineGetterOrSetter(Obj, map) {\n for (var key in map) {\n Object.defineProperty(Obj, key, map[key]);\n }\n }\n /**\n * @type { { [propName: string]: any } }\n */\n\n }, {\n key: \"defaultConfig\",\n get: function get() {\n return {};\n }\n /**\n * @type { string }\n */\n\n }, {\n key: \"pluginName\",\n get: function get() {\n return 'pluginName';\n }\n }]);\n\n return BasePlugin;\n}();\n\nexport { BasePlugin as default, Util, Sniffer, Errors, Events, XG_DEBUG };","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/**\n* an ui Plugin class\n*\n**/\nimport BasePlugin, { Util, XG_DEBUG } from './basePlugin';\nimport _delegate from 'delegate';\nvar ROOT_TYPES = {\n CONTROLS: 'controls',\n ROOT: 'root'\n};\nvar POSITIONS = {\n ROOT: 'root',\n ROOT_LEFT: 'rootLeft',\n ROOT_RIGHT: 'rootRight',\n ROOT_TOP: 'rootTop',\n CONTROLS_LEFT: 'controlsLeft',\n CONTROLS_RIGTH: 'controlsRight',\n CONTROLS_RIGHT: 'controlsRight',\n CONTROLS_CENTER: 'controlsCenter',\n CONTROLS: 'controls'\n};\n/**\n * Check if the url is a link address\n * @param { string } str\n */\n\nfunction isUrl(str) {\n if (!str) {\n return false;\n }\n\n return str.indexOf && /^http/.test(str);\n}\n\nfunction mergeIconClass(icon, classname) {\n if (_typeof(icon) === 'object' && icon.class && typeof icon.class === 'string') {\n return \"\".concat(classname, \" \").concat(icon.class);\n }\n\n return classname;\n}\n\nfunction mergeIconAttr(icon, attr) {\n if (_typeof(icon) === 'object' && icon.attr && _typeof(icon.attr) === 'object') {\n Object.keys(icon.attr).map(function (key) {\n attr[key] = icon.attr[key];\n });\n }\n\n return attr;\n}\n\nfunction createIcon(icon, key) {\n var classname = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n var attr = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var pluginName = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : '';\n var newIcon = null;\n\n if (icon instanceof window.Element) {\n Util.addClass(icon, classname);\n Object.keys(attr).map(function (key) {\n icon.setAttribute(key, attr[key]);\n });\n return icon;\n }\n\n if (isUrl(icon) || isUrl(icon.url)) {\n attr.src = isUrl(icon) ? icon : icon.url || '';\n newIcon = Util.createDom(icon.tag || 'img', '', attr, \"xg-img \".concat(classname));\n return newIcon;\n }\n\n if (typeof icon === 'function') {\n try {\n newIcon = icon();\n\n if (newIcon instanceof window.Element) {\n Util.addClass(newIcon, classname);\n Object.keys(attr).map(function (key) {\n newIcon.setAttribute(key, attr[key]);\n });\n return newIcon;\n } else {\n XG_DEBUG.logWarn(\"warn>>icons.\".concat(key, \" in config of plugin named [\").concat(pluginName, \"] is a function mast return an Element Object\"));\n }\n\n return null;\n } catch (e) {\n XG_DEBUG.logError(\"Plugin named [\".concat(pluginName, \"]:createIcon\"), e);\n return null;\n }\n }\n\n if (typeof icon === 'string') {\n return Util.createDomFromHtml(icon, attr, classname);\n }\n\n XG_DEBUG.logWarn(\"warn>>icons.\".concat(key, \" in config of plugin named [\").concat(pluginName, \"] is invalid\"));\n return null;\n}\n\nfunction registerIconsObj(iconsConfig, plugin) {\n var _icons = plugin.config.icons || plugin.playerConfig.icons;\n\n Object.keys(iconsConfig).map(function (key) {\n var orgIcon = iconsConfig[key];\n var classname = orgIcon && orgIcon.class ? orgIcon.class : '';\n var attr = orgIcon && orgIcon.attr ? orgIcon.attr : {};\n var newIcon = null;\n\n if (_icons && _icons[key]) {\n classname = mergeIconClass(_icons[key], classname);\n attr = mergeIconAttr(_icons[key], attr);\n newIcon = createIcon(_icons[key], key, classname, attr, plugin.pluginName);\n }\n\n if (!newIcon && orgIcon) {\n newIcon = createIcon(orgIcon.icon ? orgIcon.icon : orgIcon, attr, classname, {}, plugin.pluginName);\n }\n\n plugin.icons[key] = newIcon;\n });\n}\n\nfunction registerTextObj(textConfig, plugin) {\n Object.keys(textConfig).map(function (key) {\n Object.defineProperty(plugin.langText, key, {\n get: function get() {\n var lang = plugin.lang;\n return textConfig[key][lang] || textConfig[key].zh;\n }\n });\n });\n}\n/**\n * @typedef { import ('../player').default } Player\n */\n\n/**\n * @typedef {{\n * index?: number,\n * player: Player,\n * pluginName: string,\n * config: {\n * [propName: string]: any\n * },\n * root?: HTMLElement,\n * position?: string,\n * [propName: string]: any\n * }} IPluginOptions\n*/\n\n\nvar Plugin = /*#__PURE__*/function (_BasePlugin) {\n _inherits(Plugin, _BasePlugin);\n\n var _super = _createSuper(Plugin);\n\n /**\n * @param { IPluginOptions } args\n */\n function Plugin() {\n var _this;\n\n var args = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, Plugin);\n\n _this = _super.call(this, args);\n /**\n * @private\n */\n\n _this.__delegates = [];\n return _this;\n }\n /**\n * @private\n */\n\n\n _createClass(Plugin, [{\n key: \"__init\",\n value: function __init(args) {\n _get(_getPrototypeOf(Plugin.prototype), \"__init\", this).call(this, args);\n\n if (!args.root) {\n return;\n }\n\n var _parent = args.root;\n var _el = null;\n /**\n * @readonly\n */\n\n this.icons = {};\n /**\n * @readonly\n * @type { HTMLElement }\n */\n\n this.root = null;\n /**\n * @readonly\n * @type { HTMLElement }\n */\n\n this.parent = null;\n\n var _orgicons = this.registerIcons() || {};\n\n registerIconsObj(_orgicons, this);\n /**\n * @readonly\n */\n\n this.langText = {};\n var defaultTexConfig = this.registerLanguageTexts() || {};\n registerTextObj(defaultTexConfig, this);\n var renderStr = '';\n\n try {\n renderStr = this.render();\n } catch (e) {\n XG_DEBUG.logError(\"Plugin:\".concat(this.pluginName, \":render\"), e);\n throw new Error(\"Plugin:\".concat(this.pluginName, \":render:\").concat(e.message));\n }\n\n if (renderStr) {\n _el = Plugin.insert(renderStr, _parent, args.index);\n\n _el.setAttribute('data-index', args.index);\n } else if (args.tag) {\n _el = Util.createDom(args.tag, '', args.attr, args.name);\n\n _el.setAttribute('data-index', args.index);\n\n _parent.appendChild(_el);\n } else {\n return;\n }\n\n this.root = _el;\n this.parent = _parent; // Plugin.defineGetterOrSetter(this, {\n // /**\n // * @readonly\n // * @type { HTMLElement }\n // */\n // root: {\n // get: () => {\n // return _el\n // },\n // configurable: true\n // },\n // /**\n // * @readonly\n // * @type { HTMLElement }\n // */\n // parent: {\n // get: () => {\n // return _parent\n // },\n // configurable: true\n // }\n // })\n\n var attr = this.config.attr || {};\n var style = this.config.style || {};\n this.setAttr(attr);\n this.setStyle(style);\n\n if (this.config.index) {\n this.root.setAttribute('data-index', this.config.index);\n }\n\n this.__registerChildren();\n }\n /**\n * @private\n */\n\n }, {\n key: \"__registerChildren\",\n value: function __registerChildren() {\n var _this2 = this;\n\n if (!this.root) {\n return;\n }\n /**\n * @private\n */\n\n\n this._children = [];\n var children = this.children();\n\n if (children && _typeof(children) === 'object') {\n if (Object.keys(children).length > 0) {\n Object.keys(children).map(function (item) {\n var name = item;\n var _plugin = children[name];\n var options = {\n root: _this2.root\n }; // eslint-disable-next-line no-unused-vars\n\n var config, _Plugin;\n\n if (typeof _plugin === 'function') {\n config = _this2.config[name] || {};\n _Plugin = _plugin;\n } else if (_typeof(_plugin) === 'object' && typeof _plugin.plugin === 'function') {\n config = _plugin.options ? Util.deepCopy(_this2.config[name] || {}, _plugin.options) : _this2.config[name] || {};\n _Plugin = _plugin.plugin;\n }\n\n options.config = config;\n config.index !== undefined && (options.index = config.index);\n config.root && (options.root = config.root);\n\n _this2.registerPlugin(_Plugin, options, name);\n });\n }\n }\n }\n }, {\n key: \"updateLang\",\n value: function updateLang(lang) {\n if (!lang) {\n lang = this.lang;\n }\n\n function checkChildren(node, callback) {\n for (var i = 0; i < node.children.length; i++) {\n if (node.children[i].children.length > 0) {\n checkChildren(node.children[i], callback);\n } else {\n callback(node.children[i]);\n }\n }\n }\n\n var root = this.root,\n i18n = this.i18n,\n langText = this.langText;\n\n if (root) {\n checkChildren(root, function (node) {\n var langKey = node.getAttribute && node.getAttribute('lang-key');\n\n if (!langKey) {\n return;\n }\n\n var langTextShow = i18n[langKey.toUpperCase()] || langText[langKey];\n\n if (langTextShow) {\n node.innerHTML = typeof langTextShow === 'function' ? langTextShow(lang) : langTextShow;\n }\n });\n }\n }\n }, {\n key: \"lang\",\n get: function get() {\n return this.player.lang;\n }\n }, {\n key: \"changeLangTextKey\",\n value: function changeLangTextKey(dom) {\n var key = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var i18n = this.i18n || {};\n var langText = this.langText;\n dom.setAttribute && dom.setAttribute('lang-key', key);\n var text = i18n[key.toUpperCase()] || langText[key];\n\n if (text) {\n dom.innerHTML = text;\n }\n }\n }, {\n key: \"plugins\",\n value: function plugins() {\n return this._children;\n }\n }, {\n key: \"children\",\n value: function children() {\n return {};\n }\n }, {\n key: \"registerPlugin\",\n value: function registerPlugin(plugin) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var name = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n options.root = options.root || this.root;\n\n var _c = _get(_getPrototypeOf(Plugin.prototype), \"registerPlugin\", this).call(this, plugin, options, name);\n\n this._children.push(_c);\n\n return _c;\n }\n }, {\n key: \"registerIcons\",\n value: function registerIcons() {\n return {};\n }\n }, {\n key: \"registerLanguageTexts\",\n value: function registerLanguageTexts() {\n return {};\n }\n /**\n *\n * @param { string } qs\n * @returns { HTMLElement | null }\n */\n\n }, {\n key: \"find\",\n value: function find(qs) {\n if (!this.root) {\n return;\n }\n\n return this.root.querySelector(qs);\n }\n /**\n * 绑定事件\n * @param { string | Array } querySelector\n * @param { string | Function } eventType\n * @param { Function } [callback]\n */\n\n }, {\n key: \"bind\",\n value: function bind(querySelector, eventType, callback) {\n var _this3 = this;\n\n if (arguments.length < 3 && typeof eventType === 'function') {\n if (Array.isArray(querySelector)) {\n querySelector.forEach(function (item) {\n _this3.bindEL(item, eventType);\n });\n } else {\n this.bindEL(querySelector, eventType);\n }\n } else {\n var ret = Plugin.delegate.call(this, this.root, querySelector, eventType, callback);\n this.__delegates = this.__delegates.concat(ret);\n }\n }\n /**\n * 绑定事件\n * @param { string | Array } querySelector\n * @param { string | Function } eventType\n */\n\n }, {\n key: \"unbind\",\n value: function unbind(querySelector, eventType) {\n var _this4 = this;\n\n if (arguments.length < 3 && typeof eventType === 'function') {\n if (Array.isArray(querySelector)) {\n querySelector.forEach(function (item) {\n _this4.unbindEL(item, eventType);\n });\n } else {\n this.unbindEL(querySelector, eventType);\n }\n } else {\n var key = \"\".concat(querySelector, \"_\").concat(eventType);\n\n for (var i = 0; i < this.__delegates.length; i++) {\n if (this.__delegates[i].key === key) {\n this.__delegates[i].destroy();\n\n this.__delegates.splice(i, 1);\n\n break;\n }\n }\n }\n }\n /**\n * 给插件设置样式\n * @param { string | {[propName: string]: any} } name\n * @param { ? | any } value\n * @returns\n */\n\n }, {\n key: \"setStyle\",\n value: function setStyle(name, value) {\n var _this5 = this;\n\n if (!this.root) {\n return;\n }\n\n if (Util.typeOf(name) === 'String') {\n return this.root.style[name] = value;\n } else if (Util.typeOf(name) === 'Object') {\n Object.keys(name).map(function (key) {\n _this5.root.style[key] = name[key];\n });\n }\n }\n /**\n * 给插件根节点设置属性\n * @param { string | {[propName: string]: any} } name\n * @param { ? | any } value\n * @returns\n */\n\n }, {\n key: \"setAttr\",\n value: function setAttr(name, value) {\n var _this6 = this;\n\n if (!this.root) {\n return;\n }\n\n if (Util.typeOf(name) === 'String') {\n return this.root.setAttribute(name, value);\n } else if (Util.typeOf(name) === 'Object') {\n Object.keys(name).map(function (key) {\n _this6.root.setAttribute(key, name[key]);\n });\n }\n }\n /**\n *\n * @param { string } htmlStr\n * @param { Function } [callback]\n * @returns\n */\n\n }, {\n key: \"setHtml\",\n value: function setHtml(htmlStr, callback) {\n if (!this.root) {\n return;\n }\n\n this.root.innerHTML = htmlStr;\n\n if (typeof callback === 'function') {\n callback();\n }\n }\n /**\n *\n * @param { string } event\n * @param { Function } eventHandle\n * @param { boolean } [isBubble=false]\n * @returns\n */\n\n }, {\n key: \"bindEL\",\n value: function bindEL(event, eventHandle) {\n var isBubble = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n if (!this.root) {\n return;\n }\n\n if (\"on\".concat(event) in this.root && typeof eventHandle === 'function') {\n this.root.addEventListener(event, eventHandle, isBubble);\n }\n }\n /**\n *\n * @param { string } event\n * @param { Function } eventHandle\n * @param { boolean } [isBubble]\n * @returns\n */\n\n }, {\n key: \"unbindEL\",\n value: function unbindEL(event, eventHandle) {\n var isBubble = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n if (!this.root) {\n return;\n }\n\n if (\"on\".concat(event) in this.root && typeof eventHandle === 'function') {\n this.root.removeEventListener(event, eventHandle, isBubble);\n }\n }\n /**\n *\n * @param { string } [value]\n * @returns\n */\n\n }, {\n key: \"show\",\n value: function show(value) {\n if (!this.root) {\n return;\n }\n\n this.root.style.display = value !== undefined ? value : 'block';\n var cs = window.getComputedStyle(this.root, null);\n var cssDisplayValue = cs.getPropertyValue('display');\n\n if (cssDisplayValue === 'none') {\n return this.root.style.display = 'block';\n }\n }\n }, {\n key: \"hide\",\n value: function hide() {\n this.root && (this.root.style.display = 'none');\n }\n /**\n *\n * @param { string | HTMLElement } pdom\n * @param { HTMLElement} child\n * @returns { HTMLElement | nul }\n */\n\n }, {\n key: \"appendChild\",\n value: function appendChild(pdom, child) {\n if (arguments.length < 2 && arguments[0] instanceof window.Element) {\n return this.root.appendChild(arguments[0]);\n }\n\n if (!child || !(child instanceof window.Element)) {\n return null;\n }\n\n try {\n if (typeof pdom === 'string') {\n return this.find(pdom).appendChild(child);\n } else {\n return pdom.appendChild(child);\n }\n } catch (err) {\n XG_DEBUG.logError('Plugin:appendChild', err);\n return null;\n }\n }\n /**\n *\n * @returns { string | HTMLElement }\n */\n\n }, {\n key: \"render\",\n value: function render() {\n return '';\n }\n }, {\n key: \"destroy\",\n value: function destroy() {}\n }, {\n key: \"__destroy\",\n value: function __destroy() {\n var _this7 = this;\n\n var player = this.player;\n\n this.__delegates.map(function (item) {\n item.destroy();\n });\n\n this.__delegates = []; // destroy the sub-plugin instance\n\n if (this._children instanceof Array) {\n this._children.map(function (item) {\n player.unRegisterPlugin(item.pluginName);\n });\n\n this._children = null;\n }\n\n if (this.root) {\n // eslint-disable-next-line no-prototype-builtins\n if (this.root.hasOwnProperty('remove')) {\n this.root.remove();\n } else if (this.root.parentNode) {\n this.root.parentNode.removeChild(this.root);\n }\n }\n\n _get(_getPrototypeOf(Plugin.prototype), \"__destroy\", this).call(this);\n\n this.icons = {};\n ['root', 'parent'].map(function (item) {\n _this7[item] = null;\n });\n }\n }], [{\n key: \"insert\",\n value:\n /**\n * 插入dom结构\n * @param { String | HTMLElement } html html字符串或者dom\n * @param { HTMLElement } parent\n * @param { number } index\n * @returns { HTMLElement }\n */\n function insert(html, parent) {\n var index = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var len = parent.children.length;\n var insertIdx = Number(index);\n var isDomElement = html instanceof window.Node;\n\n if (len) {\n var i = 0;\n var coordinate = null;\n var mode = '';\n\n for (; i < len; i++) {\n coordinate = parent.children[i];\n var curIdx = Number(coordinate.getAttribute('data-index'));\n\n if (curIdx >= insertIdx) {\n mode = 'beforebegin';\n break;\n } else if (curIdx < insertIdx) {\n mode = 'afterend';\n }\n }\n\n if (isDomElement) {\n if (mode === 'afterend') {\n // as last element\n parent.appendChild(html);\n } else {\n parent.insertBefore(html, coordinate);\n }\n } else {\n coordinate.insertAdjacentHTML(mode, html);\n }\n\n return mode === 'afterend' ? parent.children[parent.children.length - 1] : parent.children[i];\n } else {\n isDomElement ? parent.appendChild(html) : parent.insertAdjacentHTML('beforeend', html);\n return parent.children[parent.children.length - 1];\n }\n }\n }, {\n key: \"defaultConfig\",\n get: function get() {\n return {};\n }\n /**\n *\n * @param { HTMLElement } root\n * @param { String } querySelector\n * @param { String | Array } eventType\n * @param { Function } callback\n * @param { boolean } [capture=false]\n * @returns\n */\n\n }, {\n key: \"delegate\",\n value: function delegate(root, querySelector, eventType, callback) {\n var capture = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n var dels = [];\n\n if (root instanceof window.Node && typeof callback === 'function') {\n if (Array.isArray(eventType)) {\n eventType.forEach(function (item) {\n var ret = _delegate(root, querySelector, item, callback, capture);\n\n ret.key = \"\".concat(querySelector, \"_\").concat(item);\n dels.push(ret);\n });\n } else {\n var ret = _delegate(root, querySelector, eventType, callback, capture);\n\n ret.key = \"\".concat(querySelector, \"_\").concat(eventType);\n dels.push(ret);\n }\n }\n\n return dels;\n }\n }, {\n key: \"ROOT_TYPES\",\n get: function get() {\n return ROOT_TYPES;\n }\n }, {\n key: \"POSITIONS\",\n get: function get() {\n return POSITIONS;\n }\n }]);\n\n return Plugin;\n}(BasePlugin);\n\nexport { Plugin as default, ROOT_TYPES, POSITIONS };","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n/**\n * 添加\n */\nvar ResizeObserver = /*#__PURE__*/function () {\n function ResizeObserver() {\n var _this = this;\n\n _classCallCheck(this, ResizeObserver);\n\n this.__handlers = [];\n this.timeStamp = 0;\n this.observer = null;\n\n if (!window.ResizeObserver) {\n return;\n }\n\n try {\n this.observer = new window.ResizeObserver(function (entries) {\n var t = new Date().getTime();\n\n if (t - _this.timeStamp < 100) {\n return;\n }\n\n _this.timeStamp = t;\n\n _this.__trigger(entries);\n });\n this.timeStamp = new Date().getTime();\n } catch (e) {\n console.error(e);\n }\n }\n\n _createClass(ResizeObserver, [{\n key: \"addObserver\",\n value: function addObserver(target, handler) {\n if (!this.observer) {\n return;\n }\n\n this.observer && this.observer.observe(target);\n var __handlers = this.__handlers;\n var index = -1;\n\n for (var i = 0; i < __handlers.length; i++) {\n if (__handlers[i] && target === __handlers[i].target) {\n index = i;\n }\n }\n\n if (index > -1) {\n this.__handlers[index].handler = handler;\n } else {\n this.__handlers.push({\n target: target,\n handler: handler\n });\n }\n }\n }, {\n key: \"unObserver\",\n value: function unObserver(target) {\n var i = -1;\n\n this.__handlers.map(function (item, index) {\n if (target === item.target) {\n i = index;\n }\n });\n\n try {\n this.observer && this.observer.unobserve(target);\n } catch (e) {}\n\n this.observer && this.observer.unobserve(target);\n i > -1 && this.__handlers.splice(i, 1);\n }\n }, {\n key: \"destroyObserver\",\n value: function destroyObserver() {\n this.observer && this.observer.disconnect();\n this.observer = null;\n this.__handlers = null;\n }\n }, {\n key: \"__runHandler\",\n value: function __runHandler(target) {\n var __handlers = this.__handlers;\n\n for (var i = 0; i < __handlers.length; i++) {\n if (__handlers[i] && target === __handlers[i].target) {\n try {\n __handlers[i].handler(target);\n } catch (error) {\n console.error(error);\n }\n\n return true;\n }\n }\n\n return false;\n }\n }, {\n key: \"__trigger\",\n value: function __trigger(entries) {\n for (var i = 0; i < entries.length; i++) {\n var ret = this.__runHandler(entries[i].target);\n\n if (ret) {\n break;\n }\n }\n }\n }]);\n\n return ResizeObserver;\n}();\n\nvar resizeObserver = null;\n\nfunction addObserver(target, handler) {\n if (!resizeObserver) {\n resizeObserver = new ResizeObserver();\n }\n\n resizeObserver.addObserver(target, handler);\n return resizeObserver;\n}\n\nfunction unObserver(target, handler) {\n resizeObserver.unObserver(target, handler);\n}\n\nfunction destroyObserver(target, handler) {\n resizeObserver.destroyObserver(target, handler);\n}\n\nexport { addObserver, unObserver, destroyObserver };","import { addObserver, unObserver } from './resizeObserver';\n\nfunction typeIsObject(obj) {\n return Object.prototype.toString.call(obj).match(/([^\\s.*]+)(?=]$)/g)[0] === 'Object';\n}\n/**\n* a plugins manager to register and search\n**/\n\n\nvar pluginsManager = {\n init: function init(player) {\n // 标记每一个播放器实例\n var cgid = player._pluginInfoId;\n\n if (!cgid) {\n cgid = new Date().getTime();\n player._pluginInfoId = cgid;\n }\n\n if (!this.pluginGroup) {\n this.pluginGroup = {};\n }\n\n !player.config.closeResizeObserver && addObserver(player.root, function () {\n player.getVideoSize();\n }); // 默认第一个是激活状态\n\n if (Object.keys(this.pluginGroup).length === 0) {\n player.isUserActive = true;\n }\n\n this.pluginGroup[cgid] = {\n _player: player,\n _originalOptions: player.config || {}\n };\n },\n\n /**\n * 检测当前dom中是否已经有初始化播放器\n * @param {Element} root\n */\n checkPlayerRoot: function checkPlayerRoot(root) {\n if (this.pluginGroup) {\n var _keys = Object.keys(this.pluginGroup);\n\n for (var i = 0; i < _keys.length; i++) {\n var _p = this.pluginGroup[_keys[i]]._player;\n\n if (_p.root === root) {\n return _p;\n }\n }\n\n return null;\n }\n\n return null;\n },\n\n /**\n * register a lazy plugin\n * @param { any } player instance\n * @param { any } lazyPlugin config\n *\n */\n lazyRegister: function lazyRegister(player, lazyPlugin) {\n var _this = this;\n\n var timeout = lazyPlugin.timeout || 1500;\n return Promise.race([lazyPlugin.loader().then(function (plugin) {\n var result;\n\n if (plugin && plugin.__esModule) {\n result = plugin.default;\n } else {\n result = plugin;\n }\n\n _this.register(player, result, plugin.options);\n }), new Promise(function (resolve, reject) {\n setTimeout(function () {\n reject(new Error('timeout'));\n }, timeout);\n })]);\n },\n\n /**\n * register a Plugin\n * @param { any } player the plugins register\n * @param { any } plugin the plugin contructor\n * @param { any } options the plugin configuration\n * @return { any } Plugin the plugin instance\n **/\n register: function register(player, plugin) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (!player || !plugin || typeof plugin !== 'function' || plugin.prototype === undefined) {\n return;\n }\n\n var cgid = player._pluginInfoId;\n\n if (!cgid || !this.pluginGroup || !this.pluginGroup[cgid]) {\n this.init(player);\n cgid = player._pluginInfoId;\n }\n\n if (!this.pluginGroup[cgid]._plugins) {\n this.pluginGroup[cgid]._plugins = [];\n }\n\n var plugins = this.pluginGroup[cgid]._plugins;\n var originalOptions = this.pluginGroup[cgid]._originalOptions;\n options.player = this.pluginGroup[cgid]._player;\n var pluginName = options.pluginName || plugin.pluginName;\n\n if (!pluginName) {\n throw new Error('The property pluginName is necessary');\n }\n\n if (plugin.isSupported && !plugin.isSupported()) {\n console.warn(\"not supported plugin [\".concat(pluginName, \"]\"));\n return;\n }\n\n if (!options.config) {\n options.config = {};\n } // 读取播放器整体配置上的配置数据\n\n\n var keys = Object.keys(originalOptions);\n\n for (var i = 0; i < keys.length; i++) {\n if (pluginName.toLowerCase() === keys[i].toLowerCase()) {\n var config = originalOptions[keys[i]];\n\n if (typeIsObject(config)) {\n options.config = Object.assign({}, options.config, originalOptions[keys[i]]);\n }\n\n break;\n }\n } // 复制插件的默认配置项\n\n\n if (plugin.defaultConfig) {\n Object.keys(plugin.defaultConfig).map(function (key) {\n if (typeof options.config[key] === 'undefined') {\n options.config[key] = plugin.defaultConfig[key];\n }\n });\n } // 获取插件添加的父节点\n\n\n if (!options.root) {\n options.root = player.root;\n } else if (typeof options.root === 'string') {\n options.root = player[options.root];\n }\n\n options.index = options.config.index || 0;\n\n try {\n // 如果已经存在 则将其销毁\n if (plugins[pluginName.toLowerCase()]) {\n this.unRegister(cgid, pluginName.toLowerCase());\n console.warn(\"the is one plugin with same pluginName [\".concat(pluginName, \"] exist, destroy the old instance\"));\n } // eslint-disable-next-line new-cap\n\n\n var _instance = new plugin(options);\n\n plugins[pluginName.toLowerCase()] = _instance;\n plugins[pluginName.toLowerCase()].func = plugin;\n\n if (_instance && typeof _instance.afterCreate === 'function') {\n _instance.afterCreate();\n }\n\n return _instance;\n } catch (err) {\n console.error(err);\n throw err;\n }\n },\n\n /**\n * Unregister a plugin from player instance\n * @param { string } cgid\n * @param { string } name\n */\n unRegister: function unRegister(cgid, name) {\n if (cgid._pluginInfoId) {\n cgid = cgid._pluginInfoId;\n }\n\n name = name.toLowerCase();\n\n try {\n var plugin = this.pluginGroup[cgid]._plugins[name];\n\n if (plugin) {\n plugin.pluginName && plugin.__destroy();\n delete this.pluginGroup[cgid]._plugins[name];\n }\n } catch (e) {\n console.error(\"[unRegister:\".concat(name, \"] cgid:[\").concat(cgid, \"] error\"), e);\n }\n },\n\n /**\n * remove a plugin instance from the player plugin list\n * @param { any } player\n * @param { string } name\n */\n deletePlugin: function deletePlugin(player, name) {\n var cgid = player._pluginInfoId;\n\n if (cgid && this.pluginGroup && this.pluginGroup[cgid] && this.pluginGroup[cgid]._plugins) {\n var _plugins = this.pluginGroup[cgid]._plugins;\n delete _plugins[name];\n }\n },\n\n /**\n * get all plugin instance of player\n * @param { any } player\n */\n getPlugins: function getPlugins(player) {\n var cgid = player._pluginInfoId;\n return cgid && this.pluginGroup[cgid] ? this.pluginGroup[cgid]._plugins : {};\n },\n findPlugin: function findPlugin(player, name) {\n var cgid = player._pluginInfoId;\n\n if (!this.pluginGroup || !cgid) {\n return null;\n }\n\n var cName = name.toLowerCase();\n return this.pluginGroup[cgid]._plugins[cName];\n },\n beforeInit: function beforeInit(player) {\n var _this2 = this;\n\n function retPromise(fun) {\n if (!fun || !fun.then) {\n return new Promise(function (resolve) {\n resolve();\n });\n } else {\n return fun;\n }\n }\n\n return new Promise(function (resolve) {\n if (!_this2.pluginGroup) {\n return;\n }\n\n var prevTask;\n\n if (player._loadingPlugins && player._loadingPlugins.length) {\n prevTask = Promise.all(player._loadingPlugins);\n } else {\n prevTask = Promise.resolve();\n }\n\n return prevTask.then(function () {\n var cgid = player._pluginInfoId;\n\n if (!_this2.pluginGroup[cgid]) {\n resolve();\n return;\n }\n\n var plugins = _this2.pluginGroup[cgid]._plugins;\n var pluginsRet = [];\n\n for (var _i = 0, _Object$keys = Object.keys(plugins); _i < _Object$keys.length; _i++) {\n var item = _Object$keys[_i];\n\n if (plugins[item] && plugins[item].beforePlayerInit) {\n try {\n var ret = plugins[item].beforePlayerInit();\n pluginsRet.push(retPromise(ret));\n } catch (e) {\n pluginsRet.push(retPromise(null));\n throw e;\n }\n }\n }\n\n Promise.all([].concat(pluginsRet)).then(function () {\n resolve();\n }).catch(function (e) {\n console.error(e);\n resolve();\n });\n });\n });\n },\n afterInit: function afterInit(player) {\n var cgid = player._pluginInfoId;\n\n if (!this.pluginGroup || !cgid) {\n return;\n }\n\n var plugins = this.pluginGroup[cgid]._plugins;\n\n for (var _i2 = 0, _Object$keys2 = Object.keys(plugins); _i2 < _Object$keys2.length; _i2++) {\n var item = _Object$keys2[_i2];\n\n if (plugins[item] && plugins[item].afterPlayerInit) {\n plugins[item].afterPlayerInit();\n }\n }\n },\n setLang: function setLang(lang, player) {\n var cgid = player._pluginInfoId;\n\n if (!this.pluginGroup || !cgid) {\n return;\n }\n\n var plugins = this.pluginGroup[cgid]._plugins;\n Object.keys(plugins).map(function (item) {\n if (plugins[item].updateLang) {\n plugins[item].updateLang(lang);\n } else {\n // 兼容旧版本通过set lang更新语言的问题\n try {\n plugins[item].lang = lang;\n } catch (error) {\n console.warn(\"\".concat(item, \" setLang\"));\n }\n }\n });\n },\n reRender: function reRender(player) {\n var cgid = player._pluginInfoId;\n\n if (!cgid) {\n return;\n }\n\n var pluginsMap = {};\n var plugins = this.pluginGroup[cgid]._plugins;\n\n for (var _i3 = 0, _Object$keys3 = Object.keys(plugins); _i3 < _Object$keys3.length; _i3++) {\n var item = _Object$keys3[_i3];\n pluginsMap[item] = {\n plugin: plugins[item].func,\n options: plugins[item]._args\n };\n this.unRegister(cgid, item);\n }\n\n for (var _i4 = 0, _Object$keys4 = Object.keys(pluginsMap); _i4 < _Object$keys4.length; _i4++) {\n var _item = _Object$keys4[_i4];\n this.register(cgid, _item, pluginsMap[_item].plugin, pluginsMap[_item].options);\n }\n },\n onPluginsReady: function onPluginsReady(player) {\n var cgid = player._pluginInfoId;\n var plugins = this.pluginGroup[cgid]._plugins;\n\n if (!cgid || !plugins) {\n return;\n }\n\n Object.keys(plugins).map(function (key) {\n if (plugins[key].onPluginsReady && typeof plugins[key].onPluginsReady === 'function') {\n plugins[key].onPluginsReady();\n }\n });\n },\n\n /**\n * 设置实例的用户行为激活状态\n * @param { number | string } playerId\n * @param { boolean } isActive\n * @returns { number | null }\n */\n setCurrentUserActive: function setCurrentUserActive(playerId, isActive) {\n if (!this.pluginGroup || !this.pluginGroup[playerId]) {\n return;\n }\n\n if (!isActive) {\n this.pluginGroup[playerId]._player.isUserActive = isActive;\n return playerId;\n }\n\n var keys = Object.keys(this.pluginGroup);\n\n for (var i = 0; i < keys.length; i++) {\n var c = this.pluginGroup[keys[i]];\n\n if (c && c._player) {\n this.pluginGroup[keys[i]]._player.isUserActive = false;\n break;\n }\n }\n\n this.pluginGroup[playerId]._player.isUserActive = isActive;\n return playerId;\n },\n\n /**\n * 获取当前处理激活态的实例id\n * @returns { number | null }\n */\n getCurrentUseActiveId: function getCurrentUseActiveId() {\n if (!this.pluginGroup) {\n return;\n }\n\n var keys = Object.keys(this.pluginGroup);\n\n for (var i = 0; i < keys.length; i++) {\n var c = this.pluginGroup[keys[i]];\n\n if (c && c._player && c._player.isUserActive) {\n return keys[i];\n }\n }\n\n return null;\n },\n destroy: function destroy(player) {\n var cgid = player._pluginInfoId;\n\n if (!this.pluginGroup[cgid]) {\n return;\n }\n\n unObserver(player.root);\n var plugins = this.pluginGroup[cgid]._plugins;\n\n for (var _i5 = 0, _Object$keys5 = Object.keys(plugins); _i5 < _Object$keys5.length; _i5++) {\n var item = _Object$keys5[_i5];\n this.unRegister(cgid, item);\n }\n\n var _isUseActive = player.isUseActive;\n delete this.pluginGroup[cgid];\n delete player._pluginInfoId;\n\n if (_isUseActive) {\n var keys = Object.keys(this.pluginGroup);\n\n if (keys.length > 0) {\n this.setCurrentUserActive(keys[keys.length - 1], true);\n }\n }\n }\n};\nexport default pluginsManager;","export default {\n DEFAULT: 'xgplayer',\n DEFAULT_SKIN: 'xgplayer-skin-default',\n ENTER: 'xgplayer-is-enter',\n PAUSED: 'xgplayer-pause',\n PLAYING: 'xgplayer-playing',\n ENDED: 'xgplayer-ended',\n CANPLAY: 'xgplayer-canplay',\n LOADING: 'xgplayer-isloading',\n ERROR: 'xgplayer-is-error',\n REPLAY: 'xgplayer-replay',\n NO_START: 'xgplayer-nostart',\n ACTIVE: 'xgplayer-inactive',\n FULLSCREEN: 'xgplayer-is-fullscreen',\n CSS_FULLSCREEN: 'xgplayer-is-cssfullscreen',\n PARENT_FULLSCREEN: 'xgplayer-fullscreen-parent',\n ROTATE_FULLSCREEN: 'xgplayer-rotate-fullscreen',\n PARENT_ROTATE_FULLSCREEN: 'xgplayer-rotate-parent',\n INNER_FULLSCREEN: 'xgplayer-inner-fullscreen',\n NO_CONTROLS: 'no-controls',\n FLEX_CONTROLS: 'flex-controls',\n CONTROLS_FOLLOW: 'controls-follow',\n AUTOHIDE: 'xgplayer_autohide',\n NOT_ALLOW_AUTOPLAY: 'not-allow-autoplay',\n SEEKING: 'seeking',\n PC: 'xgplayer-pc',\n MOBILE: 'xgplayer-mobile',\n MINI: 'xgplayer-mini' // mini screen play status\n\n};","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nexport var usePreset = function usePreset(player, Preset) {\n var _player$config$plugin, _player$config$ignore, _player$config$i18n;\n\n var presetInst;\n\n if (Preset.preset && Preset.options) {\n // eslint-disable-next-line new-cap\n presetInst = new Preset.preset(Preset.options, player.config);\n } else {\n presetInst = new Preset({}, player.config);\n }\n\n var _presetInst = presetInst,\n _presetInst$plugins = _presetInst.plugins,\n plugins = _presetInst$plugins === void 0 ? [] : _presetInst$plugins,\n _presetInst$ignores = _presetInst.ignores,\n ignores = _presetInst$ignores === void 0 ? [] : _presetInst$ignores,\n _presetInst$icons = _presetInst.icons,\n icons = _presetInst$icons === void 0 ? {} : _presetInst$icons,\n _presetInst$i18n = _presetInst.i18n,\n i18n = _presetInst$i18n === void 0 ? [] : _presetInst$i18n;\n\n if (!player.config.plugins) {\n player.config.plugins = [];\n }\n\n if (!player.config.ignores) {\n player.config.ignores = [];\n }\n\n (_player$config$plugin = player.config.plugins).push.apply(_player$config$plugin, _toConsumableArray(plugins));\n\n (_player$config$ignore = player.config.ignores).push.apply(_player$config$ignore, _toConsumableArray(ignores));\n\n Object.keys(icons).map(function (key) {\n if (!player.config.icons[key]) {\n player.config.icons[key] = icons[key];\n }\n });\n\n (_player$config$i18n = player.config.i18n).push.apply(_player$config$i18n, _toConsumableArray(i18n));\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport Plugin, { Events, Util, POSITIONS, Sniffer, STATE_CLASS } from '../../plugin';\n/**\n * @typedef {{\n * disable?: boolean,\n * autoHide?: boolean,\n * mode?: \"flex\"|\"normal\"|\"bottom\",\n * initShow?: boolean,\n * [propName: string]: any\n * }} IControlsConfig\n */\n\nvar Controls = /*#__PURE__*/function (_Plugin) {\n _inherits(Controls, _Plugin);\n\n var _super = _createSuper(Controls);\n\n function Controls() {\n var _this;\n\n _classCallCheck(this, Controls);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"onMouseEnter\", function (e) {\n var _assertThisInitialize = _assertThisInitialized(_this),\n player = _assertThisInitialize.player;\n\n if (player.userTimer) {\n Util.clearTimeout(player, player.userTimer);\n clearTimeout(player.userTimer);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onMouseLeave\", function () {\n var _assertThisInitialize2 = _assertThisInitialized(_this),\n player = _assertThisInitialize2.player,\n playerConfig = _assertThisInitialize2.playerConfig;\n\n var delay = !playerConfig.closeControlsBlur ? playerConfig.inactive : 200;\n player.focus({\n delay: delay\n });\n });\n\n return _this;\n }\n\n _createClass(Controls, [{\n key: \"beforeCreate\",\n value: function beforeCreate(args) {\n if (typeof args.player.config.controls === 'boolean') {\n args.config.disable = !args.player.config.controls;\n }\n\n if (!args.config.mode && Sniffer.device === 'mobile') {\n args.config.mode = 'flex';\n }\n\n if (args.player.config.marginControls) {\n args.config.autoHide = false;\n }\n }\n }, {\n key: \"afterCreate\",\n value: function afterCreate() {\n var _this2 = this;\n\n var _this$config = this.config,\n disable = _this$config.disable,\n height = _this$config.height,\n mode = _this$config.mode,\n autoHide = _this$config.autoHide;\n\n if (disable) {\n return;\n }\n\n mode === 'flex' && this.player.addClass(STATE_CLASS.FLEX_CONTROLS);\n autoHide && this.player.addClass(STATE_CLASS.AUTOHIDE);\n var style = {\n height: \"\".concat(height, \"px\")\n };\n Object.keys(style).map(function (key) {\n _this2.root.style[key] = style[key];\n });\n /**\n * @type { HTMLElement}\n * @readonly\n */\n\n this.left = this.find('xg-left-grid');\n /**\n * @type { HTMLElement}\n * @readonly\n */\n\n this.center = this.find('xg-center-grid');\n /**\n * @type { HTMLElement}\n * @readonly\n */\n\n this.right = this.find('xg-right-grid');\n /**\n * @type { HTMLElement}\n * @readonly\n */\n\n this.innerRoot = this.find('xg-inner-controls'); // 切换为小窗状态的时候进度条同步切换\n\n this.on(Events.MINI_STATE_CHANGE, function (isMini) {\n isMini ? Util.addClass(_this2.root, 'mini-controls') : Util.removeClass(_this2.root, 'mini-controls');\n });\n\n if (Sniffer.device !== 'mobile') {\n this.bind('mouseenter', this.onMouseEnter);\n this.bind('mouseleave', this.onMouseLeave);\n }\n }\n }, {\n key: \"focus\",\n value: function focus() {\n this.player.focus({\n autoHide: false\n });\n }\n }, {\n key: \"unFocus\",\n value: function unFocus() {\n this.player.focus({\n autoHide: true\n });\n }\n }, {\n key: \"blur\",\n value: function blur() {\n this.player.blur({\n ignorePaused: true\n });\n }\n }, {\n key: \"recoverAutoHide\",\n value: function recoverAutoHide() {\n this.config.autoHide && Util.addClass(this.root, 'control_autohide');\n }\n }, {\n key: \"pauseAutoHide\",\n value: function pauseAutoHide() {\n Util.removeClass(this.root, 'control_autohide');\n }\n }, {\n key: \"show\",\n value: function show() {\n Util.addClass(this.root, 'show');\n }\n }, {\n key: \"hide\",\n value: function hide() {\n Util.removeClass(this.root, 'show');\n }\n /**\n * @type {string}\n */\n\n }, {\n key: \"mode\",\n get: function get() {\n return this.config.mode;\n }\n /**\n *\n * @param {} plugin\n * @param { {config?: {[propName: string]: any}, position?:string, root?: HTMLElement, pluginName?: string}} options\n * @param { string } name\n * @returns { any }\n */\n\n }, {\n key: \"registerPlugin\",\n value: function registerPlugin(plugin) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var name = arguments.length > 2 ? arguments[2] : undefined;\n\n if (!this.root) {\n return;\n }\n\n var defaultConfig = plugin.defaultConfig || {};\n\n if (!options.root) {\n var position = options.position ? options.position : options.config && options.config.position ? options.config.position : defaultConfig.position;\n\n switch (position) {\n case POSITIONS.CONTROLS_LEFT:\n options.root = this.left;\n break;\n\n case POSITIONS.CONTROLS_RIGHT:\n options.root = this.right;\n break;\n\n case POSITIONS.CONTROLS_CENTER:\n options.root = this.center;\n break;\n\n case POSITIONS.CONTROLS:\n options.root = this.root;\n break;\n\n default:\n options.root = this.left;\n }\n\n return _get(_getPrototypeOf(Controls.prototype), \"registerPlugin\", this).call(this, plugin, options, name);\n }\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n if (Sniffer.device !== 'mobile') {\n this.unbind('mouseenter', this.onMouseEnter);\n this.unbind('mouseleave', this.onMouseLeave);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$config2 = this.config,\n mode = _this$config2.mode,\n autoHide = _this$config2.autoHide,\n initShow = _this$config2.initShow,\n disable = _this$config2.disable;\n\n if (disable) {\n return;\n }\n\n var className = Util.classNames({\n 'xgplayer-controls': true\n }, {\n 'flex-controls': mode === 'flex'\n }, {\n 'bottom-controls': mode === 'bottom'\n }, {\n control_autohide: autoHide\n }, {\n controls_permanent: !autoHide\n }, {\n 'xgplayer-controls-initshow': initShow || !autoHide\n });\n return \"\\n \\n \\n \\n \\n \\n \\n \\n \");\n }\n }], [{\n key: \"pluginName\",\n get: function get() {\n return 'controls';\n }\n /**\n * @type IControlsConfig\n */\n\n }, {\n key: \"defaultConfig\",\n get: function get() {\n return {\n disable: false,\n autoHide: true,\n // 是否自动隐藏\n mode: '',\n // 显示模式, flex/normal/bottom\n initShow: false // 是否初始化的时候就显示\n\n };\n }\n }]);\n\n return Controls;\n}(Plugin);\n\nexport default Controls;","import Util from '../utils/util';\nimport EN from './en';\n/**\n * @typedef { {\n * LANG: string,\n * TEXT: {\n * [propName: string]: string\n * }\n * } } IXGI18nText\n */\n\nvar XGI18nLang = {};\nvar XGI18nTextKeys = {};\nvar XGI18nLangKeys = [];\nvar XGI18nLangPreExtends = {};\n\nfunction updateKeys() {\n Object.keys(XGI18nLang.en).map(function (key) {\n XGI18nTextKeys[key] = key.toLowerCase();\n });\n}\n/**\n * @param { Array } XGI18nTexts\n */\n\n\nfunction extend(XGI18nText) {\n var ext = [];\n\n if (Util.typeOf(XGI18nText) !== 'Array') {\n ext = Object.keys(XGI18nText).map(function (lang) {\n var keyLang = lang === 'zh' ? 'zh-cn' : lang;\n return {\n LANG: keyLang,\n TEXT: XGI18nText[lang]\n };\n });\n } else {\n ext = XGI18nText;\n }\n\n ext.map(function (item) {\n if (!XGI18nLang[item.LANG]) {\n XGI18nLangPreExtends[item.LANG] = item.TEXT;\n } else {\n Util.deepMerge(XGI18nLang[item.LANG] || {}, item.TEXT || {});\n }\n });\n updateKeys();\n}\n/**\n * @param { IXGI18nText } langData\n */\n\n\nfunction use(langData) {\n var lang = langData.LANG;\n var texts = langData.TEXT || {};\n\n if (!XGI18nLang[lang]) {\n XGI18nLangKeys.push(lang);\n }\n\n if (XGI18nLang[lang]) {\n Util.deepMerge(texts, XGI18nLang[lang]);\n } else {\n XGI18nLang[lang] = texts;\n }\n\n if (XGI18nLangPreExtends[lang]) {\n extend([{\n LANG: lang,\n TEXT: XGI18nLangPreExtends[lang]\n }]);\n delete XGI18nLangPreExtends[lang];\n }\n\n if (lang === 'zh-cn') {\n XGI18nLang.zh = XGI18nLang['zh-cn'];\n }\n\n updateKeys();\n}\n\nuse(EN);\nvar I18N = {\n get textKeys() {\n return XGI18nTextKeys;\n },\n\n /**\n * @description List of languages currently supported\n * @type { Array }\n */\n get langKeys() {\n return XGI18nLangKeys;\n },\n\n /**\n * @type {{\n * [propName: string]: {\n * [propName: string]: string\n * }\n * }}\n */\n get lang() {\n var ret = {};\n XGI18nLangKeys.map(function (key) {\n ret[key] = XGI18nLang[key];\n });\n ret.zh = XGI18nLang['zh-cn'];\n return ret;\n },\n\n /**\n * @type {(I18nText: IXGI18nText) => {}}\n */\n extend: extend,\n\n /**\n * @type {(lang: IXGI18nText) => {}}\n */\n use: use\n};\nexport default I18N;","export default {\n LANG: 'en',\n TEXT: {\n ERROR_TYPES: {\n network: {\n code: 1,\n msg: 'video download error'\n },\n mse: {\n code: 2,\n msg: 'stream append error'\n },\n parse: {\n code: 3,\n msg: 'parsing error'\n },\n format: {\n code: 4,\n msg: 'wrong format'\n },\n decoder: {\n code: 5,\n msg: 'decoding error'\n },\n runtime: {\n code: 6,\n msg: 'grammatical errors'\n },\n timeout: {\n code: 7,\n msg: 'play timeout'\n },\n other: {\n code: 8,\n msg: 'other errors'\n }\n },\n HAVE_NOTHING: 'There is no information on whether audio/video is ready',\n HAVE_METADATA: 'Audio/video metadata is ready ',\n HAVE_CURRENT_DATA: 'Data about the current play location is available, but there is not enough data to play the next frame/millisecond',\n HAVE_FUTURE_DATA: 'Current and at least one frame of data is available',\n HAVE_ENOUGH_DATA: 'The available data is sufficient to start playing',\n NETWORK_EMPTY: 'Audio/video has not been initialized',\n NETWORK_IDLE: 'Audio/video is active and has been selected for resources, but no network is used',\n NETWORK_LOADING: 'The browser is downloading the data',\n NETWORK_NO_SOURCE: 'No audio/video source was found',\n MEDIA_ERR_ABORTED: 'The fetch process is aborted by the user',\n MEDIA_ERR_NETWORK: 'An error occurred while downloading',\n MEDIA_ERR_DECODE: 'An error occurred while decoding',\n MEDIA_ERR_SRC_NOT_SUPPORTED: 'Audio/video is not supported',\n REPLAY: 'Replay',\n ERROR: 'Network is offline',\n PLAY_TIPS: 'Play',\n PAUSE_TIPS: 'Pause',\n PLAYNEXT_TIPS: 'Play next',\n DOWNLOAD_TIPS: 'Download',\n ROTATE_TIPS: 'Rotate',\n RELOAD_TIPS: 'Reload',\n FULLSCREEN_TIPS: 'Fullscreen',\n EXITFULLSCREEN_TIPS: 'Exit fullscreen',\n CSSFULLSCREEN_TIPS: 'Cssfullscreen',\n EXITCSSFULLSCREEN_TIPS: 'Exit cssfullscreen',\n TEXTTRACK: 'Caption',\n PIP: 'PIP',\n SCREENSHOT: 'Screenshot',\n LIVE: 'LIVE',\n OFF: 'Off',\n OPEN: 'Open',\n MINI_DRAG: 'Click and hold to drag',\n MINISCREEN: 'Miniscreen',\n REFRESH_TIPS: 'Please Try',\n REFRESH: 'Refresh',\n FORWARD: 'forward',\n LIVE_TIP: 'Live'\n }\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport VideoProxy from './proxy';\nimport Util from './utils/util';\nimport Sniffer from './utils/sniffer';\nimport Database from './utils/database';\nimport Errors from './error';\nimport * as Events from './events';\nimport { FULLSCREEN_EVENTS, GET_FULLSCREEN_API, EXIT_FULLSCREEN_API } from './constant';\nimport Plugin from './plugin/plugin';\nimport BasePlugin from './plugin/basePlugin';\nimport pluginsManager from './plugin/pluginsManager';\nimport STATE_CLASS from './stateClassMap';\nimport getDefaultConfig from './defaultConfig';\nimport { usePreset } from './plugin/preset';\nimport hooksDescriptor, { runHooks, useHooks as _useHooks, delHooksDescriptor, usePluginHooks as _usePluginHooks, hook as _hook } from './plugin/hooksDescriptor';\nimport Controls from './plugins/controls/index';\nimport XG_DEBUG, { bindDebug } from './utils/debug';\nimport I18N from './lang/i18n';\nimport version from './version';\n/**\n * @typedef { import ('./defaultConfig').IPlayerOptions } IPlayerOptions\n */\n\n/* eslint-disable camelcase */\n\nvar PlAYER_HOOKS = ['play', 'pause', 'replay', 'retry'];\n\nvar Player = /*#__PURE__*/function (_VideoProxy) {\n _inherits(Player, _VideoProxy);\n\n var _super = _createSuper(Player);\n\n /**\n * @param { IPlayerOptions } options\n */\n function Player(options) {\n var _this;\n\n _classCallCheck(this, Player);\n\n var config = Util.deepMerge(getDefaultConfig(), options);\n _this = _super.call(this, config);\n hooksDescriptor(_assertThisInitialized(_this), PlAYER_HOOKS);\n /**\n * @type { IPlayerOptions }\n * @description 当前播放器的配置信息\n */\n\n _this.config = config;\n bindDebug(_assertThisInitialized(_this)); // resolve default preset\n\n var defaultPreset = _this.constructor.defaultPreset;\n\n if (_this.config.presets.length) {\n var defaultIdx = _this.config.presets.indexOf('default');\n\n if (defaultIdx >= 0 && defaultPreset) {\n _this.config.presets[defaultIdx] = defaultPreset;\n }\n } else if (defaultPreset) {\n _this.config.presets.push(defaultPreset);\n } // timer and flags\n\n\n _this.userTimer = null;\n /**\n * @private\n */\n\n _this.waitTimer = null;\n /**\n * @type { boolean }\n * @readonly\n */\n\n _this.isReady = false;\n /**\n * Whether the player is real start state\n * @type { boolean }\n * @readonly\n */\n\n _this.isPlaying = false;\n /**\n * Whether the player is in the seeking state\n * @type { boolean }\n * @readonly\n */\n\n _this.isSeeking = false;\n /**\n * @type { boolean }\n * @readonly\n */\n\n _this.isCanplay = false;\n /**\n * @private\n * @readonly\n */\n\n _this._runPending = false;\n /**\n * @type { number }\n */\n\n _this.rotateDeg = 0;\n /**\n * Whether the player is focus\n * @type { boolean }\n * @readonly\n */\n\n _this.isActive = false;\n /**\n * @type { boolean }\n * @readonly\n */\n\n _this.isCssfullScreen = false;\n /**\n * Whether player is currently in fullscreen\n * @type { boolean }\n * @readonly\n */\n\n _this.fullscreen = false;\n /**\n * fullscreenElement\n * @type { HTMLElement | null }\n * @readonly\n */\n\n _this._fullscreenEl = null;\n /**\n * cssFullscreen target Element\n * @type { HTMLElement | null }\n * @readonly\n */\n\n _this._cssfullscreenEl = null;\n /**\n * @type { IDefinition | null }\n * @readonly\n */\n\n _this.curDefinition = null;\n /**\n * @private\n * @type { string }\n */\n\n _this._orgCss = '';\n /**\n * @readonly\n * @type { number }\n */\n\n _this._fullScreenOffset = null;\n /**\n * @private\n * @type { number }\n */\n\n _this._videoHeight = 0;\n /**\n * @private\n * @type { number }\n */\n\n _this._videoWidth = 0;\n /**\n * @private\n * @type { { t: number, acc:number, acc: number, loopAcc: number, [propName: string]: any;} }\n */\n\n _this._accPlayed = {\n t: 0,\n acc: 0,\n loopAcc: 0\n };\n /**\n * @type { null | HTMLElement }\n * @readonly\n * @description 控制栏和video不同布局的时候内部容器\n */\n\n _this.innerContainer = null;\n /**\n * @type { null | Object }\n * @readonly\n * @description 控制栏插件\n */\n\n _this.controls = null;\n /**\n * @type { null | HTMLElement }\n * @readonly\n */\n\n _this.topBar = null;\n /**\n * @type { null | HTMLElement }\n * @readonly\n */\n\n _this.topBar = null;\n /**\n * @type { null | HTMLElement }\n * @readonly\n * @description 当前播放器根节点\n */\n\n _this.root = null; // android 6以下不支持自动播放\n\n if (Sniffer.os.isAndroid && Sniffer.osVersion > 0 && Sniffer.osVersion < 6) {\n _this.config.autoplay = false;\n }\n /**\n * @readonly\n * @type {any}\n */\n\n\n _this.database = new Database();\n /**\n * @readonly\n * @type { boolean }\n */\n\n _this.isUserActive = false;\n\n var rootInit = _this._initDOM();\n\n if (!rootInit) {\n console.error(new Error(\"can't find the dom which id is \".concat(_this.config.id, \" or this.config.el does not exist\")));\n return _possibleConstructorReturn(_this);\n }\n\n _this._bindEvents();\n\n _this._registerPresets();\n\n _this._registerPlugins();\n\n pluginsManager.onPluginsReady(_assertThisInitialized(_this));\n Util.setTimeout(_assertThisInitialized(_this), function () {\n _this.emit(Events.READY);\n\n _this.onReady && _this.onReady();\n _this.isReady = true;\n }, 0); // url为空的情况下 根据definition设置播放地址\n\n var _this$config = _this.config,\n definition = _this$config.definition,\n url = _this$config.url;\n\n if (!url && definition && definition.list && definition.list.length > 0 && definition.defaultDefinition) {\n definition.list.map(function (item) {\n if (item.definition === definition.defaultDefinition) {\n _this.config.url = item.url;\n _this.curDefinition = item.definition;\n }\n });\n }\n\n if (_this.config.videoInit || _this.config.autoplay) {\n if (!_this.hasStart) {\n _this.start();\n }\n }\n\n return _this;\n }\n /**\n * init control domElement\n * @private\n */\n\n\n _createClass(Player, [{\n key: \"_initDOM\",\n value: function _initDOM() {\n var _this2 = this;\n\n this.root = this.config.id ? document.getElementById(this.config.id) : null;\n\n if (!this.root) {\n var el = this.config.el;\n\n if (el && el.nodeType === 1) {\n this.root = el;\n } else {\n this.emit(Events.ERROR, new Errors('use', this.config.vid, {\n line: 32,\n handle: 'Constructor',\n msg: 'container id can\\'t be empty'\n }));\n console.error('this.confg.id or this.config.el can\\'t be empty');\n return false;\n }\n }\n\n var ret = pluginsManager.checkPlayerRoot(this.root);\n\n if (ret) {\n XG_DEBUG.logWarn('The is an Player instance already exists in this.root, destroy it and reinitialize');\n ret.destroy();\n }\n\n this._initBaseDoms(); // 允许自定义video对象的构造\n\n\n var XgVideoProxy = this.constructor.XgVideoProxy;\n\n if (XgVideoProxy && this.videoConfig.mediaType === XgVideoProxy.mediaType) {\n var _el = this.innerContainer || this.root;\n\n this.detachVideoEvents(this.video);\n\n var _nVideo = new XgVideoProxy(_el, this.config, this.videoConfig);\n\n this.attachVideoEvents(_nVideo);\n this.video = _nVideo;\n }\n\n if (this.config.controls) {\n var controls = pluginsManager.register(this, Controls);\n this.controls = controls;\n }\n\n var device = this.config.isMobileSimulateMode ? 'mobile' : Sniffer.device;\n this.addClass(\"\".concat(STATE_CLASS.DEFAULT, \" \").concat(STATE_CLASS.ACTIVE, \" xgplayer-\").concat(device, \" \").concat(this.config.controls ? '' : STATE_CLASS.NO_CONTROLS));\n\n if (this.config.autoplay) {\n this.addClass(STATE_CLASS.ENTER);\n } else {\n this.addClass(STATE_CLASS.NO_START);\n }\n\n if (this.config.fluid) {\n var style = {\n 'max-width': '100%',\n width: '100%',\n height: '0',\n 'padding-top': \"\".concat(this.config.height * 100 / this.config.width, \"%\"),\n position: 'position',\n top: '0',\n left: '0'\n };\n Object.keys(style).map(function (key) {\n _this2.root.style[key] = style[key];\n });\n } else {\n ['width', 'height'].map(function (key) {\n if (_this2.config[key]) {\n if (typeof _this2.config[key] !== 'number') {\n _this2.root.style[key] = _this2.config[key];\n } else {\n _this2.root.style[key] = \"\".concat(_this2.config[key], \"px\");\n }\n }\n });\n }\n\n return true;\n }\n /**\n * @private\n */\n\n }, {\n key: \"_initBaseDoms\",\n value: function _initBaseDoms() {\n /**\n * @readonly\n * @type { HTMLElement }\n */\n this.topBar = Util.createDom('xg-bar', '', {\n 'data-index': -1\n }, 'xg-top-bar');\n /**\n * @readonly\n * @type { HTMLElement }\n */\n\n this.leftBar = Util.createDom('xg-bar', '', {\n 'data-index': -1\n }, 'xg-left-bar');\n /**\n * @readonly\n * @type { HTMLElement }\n */\n\n this.rightBar = Util.createDom('xg-bar', '', {\n 'data-index': -1\n }, 'xg-right-bar');\n\n if (this.config.marginControls) {\n this.innerContainer = Util.createDom('xg-video-container', '', {\n 'data-index': -1\n }, 'xg-video-container');\n this.root.appendChild(this.innerContainer);\n }\n\n this.root.appendChild(this.topBar);\n this.root.appendChild(this.leftBar);\n this.root.appendChild(this.rightBar);\n }\n /**\n * @private\n */\n\n }, {\n key: \"_bindEvents\",\n value: function _bindEvents() {\n var _this3 = this;\n\n ['focus', 'blur'].forEach(function (item) {\n _this3.on(item, _this3['on' + item.charAt(0).toUpperCase() + item.slice(1)]);\n });\n\n var resetFullState = function resetFullState() {\n _this3.fullscreen = false;\n _this3._fullScreenOffset = null;\n };\n /**\n * @private\n */\n\n\n this.onFullscreenChange = function (event, isFullScreen) {\n var fullEl = Util.getFullScreenEl();\n\n if (_this3._fullActionFrom) {\n _this3._fullActionFrom = '';\n } else {\n // 快捷键触发\n _this3.emit(Events.USER_ACTION, {\n eventType: 'system',\n action: 'switch_fullscreen',\n pluginName: 'player',\n currentTime: _this3.currentTime,\n duration: _this3.duration,\n fullscreen: _this3.fullscreen\n });\n }\n\n if (isFullScreen || fullEl && (fullEl === _this3._fullscreenEl || fullEl.tagName === 'VIDEO')) {\n Util.setTimeout(_this3, function () {\n _this3.getVideoSize();\n }, 100);\n !_this3.config.closeFocusVideoFocus && _this3.video.focus();\n _this3.fullscreen = true; // this.addClass(STATE_CLASS.FULLSCREEN)\n\n _this3.changeFullStyle(_this3.root, fullEl, STATE_CLASS.FULLSCREEN);\n\n _this3.emit(Events.FULLSCREEN_CHANGE, true, _this3._fullScreenOffset);\n\n if (_this3.isCssfullScreen) {\n _this3.exitCssFullscreen();\n }\n } else if (_this3.fullscreen) {\n Util.setTimeout(_this3, function () {\n _this3.getVideoSize();\n }, 100);\n var _fullScreenOffset = _this3._fullScreenOffset,\n config = _this3.config;\n\n if (config.needFullscreenScroll) {\n try {\n window.scrollTo(_fullScreenOffset.left, _fullScreenOffset.top);\n Util.setTimeout(_this3, function () {\n resetFullState();\n }, 50);\n } catch (e) {\n XG_DEBUG.logError(e);\n resetFullState();\n }\n } else {\n // 保证页面scroll的情况下退出全屏 页面定位在播放器位置\n !_this3.config.closeFocusVideoFocus && _this3.video.focus();\n resetFullState();\n }\n\n if (!_this3.isCssfullScreen) {\n _this3.recoverFullStyle(_this3.root, _this3._fullscreenEl, STATE_CLASS.FULLSCREEN);\n } else {\n _this3.removeClass(STATE_CLASS.FULLSCREEN);\n }\n\n _this3._fullscreenEl = null; // this.removeClass(STATE_CLASS.FULLSCREEN)\n\n _this3.emit(Events.FULLSCREEN_CHANGE, false);\n }\n };\n\n FULLSCREEN_EVENTS.forEach(function (item) {\n document && document.addEventListener(item, _this3.onFullscreenChange);\n });\n /**\n * @private\n */\n\n this.__webkitbeginfullscreen = function (e) {\n _this3._fullscreenEl = _this3.video;\n\n _this3.onFullscreenChange(e, true);\n };\n /**\n * @private\n */\n\n\n this.__webkitendfullscreen = function (e) {\n _this3.onFullscreenChange(e, false);\n };\n\n if (Sniffer.os.isIos) {\n this.video.addEventListener('webkitbeginfullscreen', this.__webkitbeginfullscreen);\n this.video.addEventListener('webkitendfullscreen', this.__webkitendfullscreen);\n }\n\n this.once('loadeddata', this.getVideoSize);\n\n this.playFunc = function () {\n if (!_this3.config.closeFocusVideoFocus) {\n _this3.video.focus();\n }\n };\n\n this.once('play', this.playFunc);\n }\n /**\n * @private\n */\n\n }, {\n key: \"_unbindEvents\",\n value: function _unbindEvents() {\n var _this4 = this;\n\n this.root.removeEventListener('mousemove', this.mousemoveFunc);\n FULLSCREEN_EVENTS.forEach(function (item) {\n document.removeEventListener(item, _this4.onFullscreenChange);\n });\n this.playFunc && this.off('play', this.playFunc);\n this.canPlayFunc && this.off('canplay', this.canPlayFunc);\n this.video.removeEventListener('webkitbeginfullscreen', this.__webkitbeginfullscreen);\n this.video.removeEventListener('webkitendfullscreen', this.__webkitendfullscreen);\n }\n /**\n *\n * @param { any } url\n * @returns\n */\n\n }, {\n key: \"_startInit\",\n value: function _startInit(url) {\n var _this5 = this;\n\n if (!this.video) {\n return;\n }\n\n if (!url || url === '' || Util.typeOf(url) === 'Array' && url.length === 0) {\n url = '';\n this.emit(Events.URL_NULL);\n XG_DEBUG.logWarn('config.url is null, please get url and run player._startInit(url)');\n\n if (this.config.nullUrlStart) {\n return;\n }\n }\n\n this.canPlayFunc = function () {\n if (!_this5.config) {\n return;\n }\n\n var _this5$config = _this5.config,\n autoplay = _this5$config.autoplay,\n startTime = _this5$config.startTime,\n defaultPlaybackRate = _this5$config.defaultPlaybackRate;\n XG_DEBUG.logInfo('player', 'canPlayFunc', startTime);\n\n if (startTime) {\n _this5.currentTime = startTime > _this5.duration ? _this5.duration : startTime;\n _this5.config.startTime = 0; // 仅仅使用一次\n } // 确保能生效\n\n\n if (defaultPlaybackRate !== 1) {\n _this5.playbackRate = defaultPlaybackRate;\n }\n\n autoplay && _this5.videoPlay();\n\n _this5.off(Events.CANPLAY, _this5.canPlayFunc);\n\n _this5.removeClass(STATE_CLASS.ENTER);\n };\n\n this._detachSourceEvents(this.video);\n\n if (Util.typeOf(url) === 'Array') {\n this._attachSourceEvents(this.video, url);\n } else {\n this.video.src = url;\n }\n\n if (Util.typeOf(this.config.volume) === 'Number') {\n this.volume = this.config.volume;\n }\n\n this.loadeddataFunc && this.once('loadeddata', this.loadeddataFunc);\n\n var _root = this.innerContainer ? this.innerContainer : this.root;\n\n if (this.video instanceof window.Element && !_root.contains(this.video)) {\n _root.insertBefore(this.video, _root.firstChild);\n }\n\n if (this.video.readyState >= 2) {\n this.canPlayFunc();\n } else {\n this.once(Events.CANPLAY, this.canPlayFunc);\n }\n\n XG_DEBUG.logInfo('_startInit');\n\n if (this.config.autoplay) {\n !(/^blob/.test(this.video.currentSrc) || /^blob/.test(this.video.src)) && this.load(); // ios端无法自动播放的场景下,不调用play不会触发canplay loadeddata等事件\n\n (Sniffer.os.isIpad || Sniffer.os.isPhone) && this.videoPlay();\n }\n\n Util.setTimeout(this, function () {\n _this5.emit(Events.COMPLETE);\n }, 1);\n\n if (!this.hasStart) {\n pluginsManager.afterInit(this);\n }\n\n this.hasStart = true;\n }\n /**\n * 注册组件 组件列表config.plugins\n * @private\n */\n\n }, {\n key: \"_registerPlugins\",\n value: function _registerPlugins() {\n var _this6 = this;\n\n /**\n * @private\n */\n this._loadingPlugins = [];\n var ignores = this.config.ignores || [];\n var plugins = this.config.plugins || [];\n var i18n = this.config.i18n || [];\n i18n.map(function (item) {\n I18N.use(item);\n });\n var ignoresStr = ignores.join('||').toLowerCase().split('||');\n plugins.map(function (plugin) {\n try {\n var pluginName = plugin.plugin ? plugin.plugin.pluginName : plugin.pluginName; // 在ignores中的不做组装\n\n if (pluginName && ignoresStr.indexOf(pluginName.toLowerCase()) > -1) {\n return null;\n }\n\n if (plugin.lazy && plugin.loader) {\n var loadingPlugin = pluginsManager.lazyRegister(_this6, plugin);\n\n if (plugin.forceBeforeInit) {\n loadingPlugin.then(function () {\n _this6._loadingPlugins.splice(_this6._loadingPlugins.indexOf(loadingPlugin), 1);\n }).catch(function (e) {\n XG_DEBUG.logError('_registerPlugins:loadingPlugin', e);\n\n _this6._loadingPlugins.splice(_this6._loadingPlugins.indexOf(loadingPlugin), 1);\n });\n\n _this6._loadingPlugins.push(loadingPlugin);\n }\n\n return;\n }\n\n return _this6.registerPlugin(plugin);\n } catch (err) {\n XG_DEBUG.logError('_registerPlugins:', err);\n return null;\n }\n });\n }\n /**\n * @private\n */\n\n }, {\n key: \"_registerPresets\",\n value: function _registerPresets() {\n var _this7 = this;\n\n this.config.presets.forEach(function (preset) {\n usePreset(_this7, preset);\n });\n }\n /**\n *\n * @param { {plugin: function, options:object} | function } plugin\n * @param { {[propName: string]: any;} } [config]\n * @returns { any } plugin\n */\n\n }, {\n key: \"registerPlugin\",\n value: function registerPlugin(plugin, config) {\n var PLUFGIN = null;\n var options = null;\n\n if (plugin.plugin && typeof plugin.plugin === 'function') {\n PLUFGIN = plugin.plugin;\n options = plugin.options;\n } else {\n PLUFGIN = plugin;\n options = {};\n }\n\n if (config) {\n options.config = config;\n } // 获取配置的position或者root\n\n\n var keys = Object.keys(this.config);\n\n for (var i = 0; i < keys.length; i++) {\n if (PLUFGIN.pluginName.toLowerCase() === keys[i].toLowerCase()) {\n var _pConfig = this.config[keys[i]];\n\n if (Util.typeOf(_pConfig) === 'Object') {\n _pConfig.root && (options.root = _pConfig.root);\n _pConfig.position && (options.position = _pConfig.position);\n }\n\n break;\n }\n }\n\n var position = options.position ? options.position : options.config && options.config.position || PLUFGIN.defaultConfig && PLUFGIN.defaultConfig.position;\n var POSITIONS = Plugin.POSITIONS;\n\n if (!options.root && typeof position === 'string' && position.indexOf('controls') > -1) {\n return this.controls && this.controls.registerPlugin(PLUFGIN, options, PLUFGIN.pluginName);\n }\n\n if (!options.root) {\n switch (position) {\n case POSITIONS.ROOT_RIGHT:\n options.root = this.rightBar;\n break;\n\n case POSITIONS.ROOT_LEFT:\n options.root = this.leftBar;\n break;\n\n case POSITIONS.ROOT_TOP:\n options.root = this.topBar;\n break;\n\n default:\n options.root = this.innerContainer || this.root;\n break;\n }\n }\n\n return pluginsManager.register(this, PLUFGIN, options);\n }\n /**\n *\n * @param { any } plugin\n */\n\n }, {\n key: \"deregister\",\n value: function deregister(plugin) {\n if (typeof plugin === 'string') {\n pluginsManager.unRegister(this, plugin);\n } else if (plugin instanceof BasePlugin) {\n pluginsManager.unRegister(this, plugin.pluginName);\n }\n }\n /**\n *\n * @param { any } plugin\n */\n\n }, {\n key: \"unRegisterPlugin\",\n value: function unRegisterPlugin(plugin) {\n this.deregister(plugin);\n }\n /**\n * 当前播放器挂载的插件实例列表\n * @type { {[propName: string]: any | null } }\n */\n\n }, {\n key: \"plugins\",\n get: function get() {\n return pluginsManager.getPlugins(this);\n }\n /**\n * get a plugin instance\n * @param { string } pluginName\n * @return { null | any } plugin\n */\n\n }, {\n key: \"getPlugin\",\n value: function getPlugin(pluginName) {\n var plugin = pluginsManager.findPlugin(this, pluginName);\n return plugin && plugin.pluginName ? plugin : null;\n }\n /**\n *\n * @param { string } className\n */\n\n }, {\n key: \"addClass\",\n value: function addClass(className) {\n if (!this.root) {\n return;\n }\n\n if (!Util.hasClass(this.root, className)) {\n Util.addClass(this.root, className);\n }\n }\n /**\n *\n * @param { string } className\n * @returns\n */\n\n }, {\n key: \"removeClass\",\n value: function removeClass(className) {\n if (!this.root) {\n return;\n }\n\n Util.removeClass(this.root, className);\n }\n /**\n *\n * @param { string } className\n * @returns { boolean } has\n */\n\n }, {\n key: \"hasClass\",\n value: function hasClass(className) {\n if (!this.root) {\n return;\n }\n\n return Util.hasClass(this.root, className);\n }\n /**\n *\n * @param { string } key\n * @param { any } value\n * @returns void\n */\n\n }, {\n key: \"setAttribute\",\n value: function setAttribute(key, value) {\n if (!this.root) {\n return;\n }\n\n this.root.setAttribute(key, value);\n }\n /**\n *\n * @param { string } key\n * @param { any } value\n * @returns void\n */\n\n }, {\n key: \"removeAttribute\",\n value: function removeAttribute(key, value) {\n if (!this.root) {\n return;\n }\n\n this.root.removeAttribute(key, value);\n }\n /**\n *\n * @param { any } url\n * @returns { Promise | void }\n * @description 启动播放器,start一般都是播放器内部隐式调用,主要功能是将video添加到DOM\n */\n\n }, {\n key: \"start\",\n value: function start(url) {\n var _this8 = this;\n\n // 已经开始初始化播放了 则直接调用play\n if (this.hasStart) {\n return;\n }\n\n this.hasStart = true;\n return pluginsManager.beforeInit(this).then(function () {\n // this.config为空即已经销毁,不再执行后面的异步流程\n if (!_this8.config) {\n return;\n }\n\n if (!url) {\n url = _this8.url || _this8.config.url;\n }\n\n var ret = _this8._startInit(url);\n\n return ret;\n }).catch(function (e) {\n e.fileName = 'player';\n e.lineNumber = '236';\n XG_DEBUG.logError('start:beforeInit:', e);\n throw e;\n });\n }\n /**\n * @param { string } url\n * @param { boolean } seamless\n */\n\n }, {\n key: \"switchURL\",\n value: function switchURL(url, seamless) {\n this.src = url;\n }\n }, {\n key: \"load\",\n value: function load() {\n this.video && this.video.load();\n }\n }, {\n key: \"videoPlay\",\n value: function videoPlay() {\n var _this9 = this;\n\n if (!this.hasStart) {\n this.removeClass(STATE_CLASS.NO_START);\n this.addClass(STATE_CLASS.ENTER);\n var ret = this.start();\n ret && ret.then(function (resolve) {\n !_this9.config.autoplay && _this9.videoPlay();\n });\n return;\n }\n\n if (!this.isPlaying) {\n this.removeClass(STATE_CLASS.NO_START);\n !this.isCanplay && this.addClass(STATE_CLASS.ENTER);\n }\n\n var playPromise = _get(_getPrototypeOf(Player.prototype), \"play\", this).call(this);\n\n if (playPromise !== undefined && playPromise && playPromise.then) {\n playPromise.then(function () {\n _this9.removeClass(STATE_CLASS.NOT_ALLOW_AUTOPLAY);\n\n _this9.addClass(STATE_CLASS.PLAYING);\n\n if (!_this9.isPlaying) {\n XG_DEBUG.logInfo('>>>>playPromise.then');\n _this9.isPlaying = true;\n\n _this9.emit(Events.AUTOPLAY_STARTED);\n }\n }).catch(function (e) {\n XG_DEBUG.logWarn('>>>>playPromise.catch', e.name);\n\n if (_this9.video && _this9.video.error) {\n _this9.onError(); // this.errorHandler('error')\n\n\n _this9.removeClass(STATE_CLASS.ENTER);\n\n return;\n } // 避免AUTOPLAY_PREVENTED先于playing和play触发\n\n\n if (e.name === 'NotAllowedError') {\n /**\n * @private\n */\n _this9._errorTimer = Util.setTimeout(_this9, function () {\n _this9._errorTimer = null;\n\n _this9.emit(Events.AUTOPLAY_PREVENTED);\n\n _this9.addClass(STATE_CLASS.NOT_ALLOW_AUTOPLAY);\n\n _this9.removeClass(STATE_CLASS.ENTER);\n\n _this9.pause();\n }, 0);\n }\n });\n } else {\n XG_DEBUG.logWarn('video.play not return promise');\n\n if (!this.isPlaying) {\n this.isPlaying = true;\n this.removeClass(STATE_CLASS.NOT_ALLOW_AUTOPLAY);\n this.removeClass(STATE_CLASS.NO_START);\n this.removeClass(STATE_CLASS.ENTER);\n this.addClass(STATE_CLASS.PLAYING);\n this.emit(Events.AUTOPLAY_STARTED);\n }\n }\n\n return playPromise;\n }\n }, {\n key: \"videoPause\",\n value: function videoPause() {\n _get(_getPrototypeOf(Player.prototype), \"pause\", this).call(this);\n }\n }, {\n key: \"play\",\n value: function play() {\n var _this10 = this;\n\n this.removeClass(STATE_CLASS.PAUSED);\n runHooks(this, 'play', function () {\n _this10.videoPlay();\n });\n }\n }, {\n key: \"pause\",\n value: function pause() {\n var _this11 = this;\n\n runHooks(this, 'pause', function () {\n _get(_getPrototypeOf(Player.prototype), \"pause\", _this11).call(_this11);\n });\n }\n /**\n *\n * @param { number } time\n * @param { 'play' | 'pause' | 'auto' } [status]\n * @returns\n */\n\n }, {\n key: \"seek\",\n value: function seek(time, status) {\n var _this12 = this;\n\n if (!this.video || isNaN(Number(time))) {\n return;\n }\n\n var _this$config2 = this.config,\n isSeekedPlay = _this$config2.isSeekedPlay,\n seekedStatus = _this$config2.seekedStatus;\n\n var _status = status || (isSeekedPlay ? 'play' : seekedStatus);\n\n time = time < 0 ? 0 : time > this.duration ? parseInt(this.duration, 10) : time;\n this.once(Events.CANPLAY, function () {\n _this12.removeClass(STATE_CLASS.ENTER);\n\n _this12.isSeeking = false;\n\n switch (_status) {\n case 'play':\n _this12.play();\n\n break;\n\n case 'pause':\n _this12.pause();\n\n break;\n\n default:\n !_this12.paused && _this12.play();\n }\n });\n\n if (!this.isPlaying) {\n this.removeClass(STATE_CLASS.NO_START);\n this.addClass(STATE_CLASS.ENTER);\n this.currentTime = time;\n _status === 'play' && this.play();\n } else {\n this.currentTime = time;\n }\n }\n /**\n * @typedef { {\n * url: any,\n * definition: any,\n * [propName: string]: any\n * } } definition\n */\n\n /**\n * @description change the definition of the current playback\n * @param { definition } to\n * @param { definition } [from]\n */\n\n }, {\n key: \"changeDefinition\",\n value: function changeDefinition(to, from) {\n var _this13 = this;\n\n this.emit(Events.DEFINITION_CHANGE, {\n from: from,\n to: to\n });\n var curTime = this.currentTime;\n var isPaused = this.paused;\n this.curDefinition = to.definition;\n\n if (!this.hasStart) {\n this.config.url = to.url;\n return;\n }\n\n if (this.switchURL) {\n this.switchURL(to.url);\n } else {\n this.src = to.url;\n }\n\n var _canplay = function _canplay() {\n _this13.currentTime = curTime;\n\n if (isPaused) {\n _this13.once('canplay', function () {\n _this13.pause();\n });\n }\n\n _this13.emit(Events.AFTER_DEFINITION_CHANGE, {\n from: from,\n to: to\n });\n };\n\n if (Sniffer.os.isAndroid) {\n this.once('timeupdate', function () {\n _canplay();\n });\n } else {\n this.once('canplay', function () {\n _canplay();\n });\n }\n\n this.play();\n }\n }, {\n key: \"reload\",\n value: function reload() {\n this.load();\n /**\n * @private\n */\n\n this.reloadFunc = function () {\n this.play().catch(function (err) {\n console.log(err);\n });\n };\n\n this.once('loadeddata', this.reloadFunc);\n }\n }, {\n key: \"resetState\",\n value: function resetState() {\n var _this14 = this;\n\n var NOT_ALLOW_AUTOPLAY = STATE_CLASS.NOT_ALLOW_AUTOPLAY,\n PLAYING = STATE_CLASS.PLAYING,\n NO_START = STATE_CLASS.NO_START,\n PAUSED = STATE_CLASS.PAUSED,\n REPLAY = STATE_CLASS.REPLAY,\n ENTER = STATE_CLASS.ENTER,\n ENDED = STATE_CLASS.ENDED,\n ERROR = STATE_CLASS.ERROR,\n LOADING = STATE_CLASS.LOADING;\n var clsList = [NOT_ALLOW_AUTOPLAY, PLAYING, NO_START, PAUSED, REPLAY, ENTER, ENDED, ERROR, LOADING];\n this.hasStart = false;\n this.videoPause();\n this._accPlayed.acc = 0;\n this._accPlayed.t = 0;\n this._accPlayed.loopAcc = 0;\n clsList.forEach(function (cls) {\n _this14.removeClass(cls);\n });\n this.addClass(STATE_CLASS.ENTER);\n this.emit(Events.EMPTIED);\n }\n /**\n * @description destroy the player instance\n * @returns\n */\n\n }, {\n key: \"destroy\",\n value: function destroy() {\n var _this15 = this;\n\n var innerContainer = this.innerContainer,\n root = this.root,\n video = this.video;\n\n if (!root || !video) {\n return;\n }\n\n this.updateAcc('destroy');\n\n this._unbindEvents();\n\n this._detachSourceEvents(this.video);\n\n Util.clearAllTimers(this);\n this.emit(Events.DESTROY);\n pluginsManager.destroy(this);\n delHooksDescriptor(this);\n\n _get(_getPrototypeOf(Player.prototype), \"destroy\", this).call(this); // 退出全屏\n\n\n if (this.fullscreen && this._fullscreenEl === this.root) {\n try {\n this.exitFullscreen();\n } catch (e) {}\n }\n\n if (innerContainer) {\n var _c = innerContainer.children;\n\n for (var i = 0; i < _c.length; i++) {\n innerContainer.removeChild(_c[i]);\n }\n }\n\n !innerContainer && root.contains(video) && root.removeChild(video);\n ['topBar', 'leftBar', 'rightBar', 'innerContainer'].map(function (item) {\n _this15[item] && root.removeChild(_this15[item]);\n _this15[item] = null;\n });\n var cList = root.className.split(' ');\n\n if (cList.length > 0) {\n root.className = cList.filter(function (name) {\n return name.indexOf('xgplayer') < 0;\n }).join(' ');\n } else {\n root.className = '';\n }\n\n this.removeAttribute('data-xgfill');\n ['isReady', 'isPlaying', 'isSeeking', 'isCanplay', 'isActive', 'isCssfullScreen', 'fullscreen'].map(function (key) {\n _this15[key] = false;\n });\n }\n }, {\n key: \"replay\",\n value: function replay() {\n var _this16 = this;\n\n this.removeClass(STATE_CLASS.ENDED);\n this.currentTime = 0;\n this.isSeeking = false;\n runHooks(this, 'replay', function () {\n _this16.once(Events.CANPLAY, function () {\n var playPromise = _this16.videoPlay();\n\n if (playPromise && playPromise.catch) {\n playPromise.catch(function (err) {\n console.log(err);\n });\n }\n });\n\n _this16.play();\n\n _this16.emit(Events.REPLAY);\n\n _this16.onPlay();\n });\n }\n }, {\n key: \"retry\",\n value: function retry() {\n var _this17 = this;\n\n this.removeClass(STATE_CLASS.ERROR);\n this.addClass(STATE_CLASS.LOADING);\n runHooks(this, 'retry', function () {\n var cur = _this17.currentTime;\n\n _this17.videoPause();\n\n _this17.src = _this17.config.url;\n !_this17.config.isLive && (_this17.currentTime = cur);\n\n _this17.once(Events.CANPLAY, function () {\n _this17.videoPlay();\n });\n });\n }\n /**\n *\n * @param { HTMLElement } root\n * @param { HTMLElement } [el]\n * @param { string } [rootClass]\n * @param { string } [pClassName]\n */\n\n }, {\n key: \"changeFullStyle\",\n value: function changeFullStyle(root, el, rootClass, pClassName) {\n if (!root) {\n return;\n }\n\n if (!pClassName) {\n pClassName = STATE_CLASS.PARENT_FULLSCREEN;\n }\n\n if (!this._orgCss) {\n this._orgCss = Util.filterStyleFromText(root);\n }\n\n Util.addClass(root, rootClass);\n\n if (el && el !== root && !this._orgPCss) {\n /**\n * @private\n */\n this._orgPCss = Util.filterStyleFromText(el);\n Util.addClass(el, pClassName);\n }\n }\n /**\n *\n * @param { HTMLElement } root\n * @param { HTMLElement } [el]\n * @param { string } [rootClass]\n * @param { string } [pClassName]\n */\n\n }, {\n key: \"recoverFullStyle\",\n value: function recoverFullStyle(root, el, rootClass, pClassName) {\n if (!pClassName) {\n pClassName = STATE_CLASS.PARENT_FULLSCREEN;\n }\n\n if (this._orgCss) {\n Util.setStyleFromCsstext(root, this._orgCss);\n this._orgCss = '';\n }\n\n Util.removeClass(root, rootClass);\n\n if (el && el !== root && this._orgPCss) {\n Util.setStyleFromCsstext(el, this._orgPCss);\n this._orgPCss = '';\n Util.removeClass(el, pClassName);\n }\n }\n /**\n * @param { HTMLElement } [el]\n * @returns { Promise; }\n */\n\n }, {\n key: \"getFullscreen\",\n value: function getFullscreen() {\n var el = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.config.fullscreenTarget;\n var root = this.root,\n video = this.video;\n\n if (!el) {\n el = root;\n }\n\n this._fullScreenOffset = {\n top: Util.scrollTop(),\n left: Util.scrollLeft()\n }; // if (root.getAttribute('style')) {\n // this._orgCss = root.style.cssText\n // root.removeAttribute('style')\n // }\n\n this._fullscreenEl = el;\n /**\n * @private\n */\n\n this._fullActionFrom = 'get';\n var fullEl = Util.getFullScreenEl();\n\n if (fullEl === this._fullscreenEl) {\n this.onFullscreenChange();\n return;\n }\n\n try {\n for (var i = 0; i < GET_FULLSCREEN_API.length; i++) {\n var key = GET_FULLSCREEN_API[i];\n\n if (el[key]) {\n var ret = key === 'webkitRequestFullscreen' ? el.webkitRequestFullscreen(window.Element.ALLOW_KEYBOARD_INPUT) : el[key]();\n\n if (ret && ret.then) {\n return ret;\n } else {\n return Promise.resolve();\n }\n }\n }\n\n if (video.fullscreenEnabled || video.webkitSupportsFullscreen) {\n video.webkitEnterFullscreen();\n return Promise.resolve();\n }\n\n return Promise.reject(new Error('call getFullscreen fail'));\n } catch (e) {\n return Promise.reject(new Error('call getFullscreen fail'));\n }\n }\n /**\n * @param { HTMLElement } [el]\n * @returns { Promise; }\n */\n\n }, {\n key: \"exitFullscreen\",\n value: function exitFullscreen(el) {\n if (!this._fullscreenEl || !Util.getFullScreenEl()) {\n return;\n }\n\n var root = this.root,\n video = this.video;\n\n if (el) {\n el = root;\n }\n\n this._fullActionFrom = 'exit';\n\n for (var i = 0; i < EXIT_FULLSCREEN_API.length; i++) {\n var key = EXIT_FULLSCREEN_API[i];\n\n if (document[key]) {\n var ret = document[key]();\n\n if (ret && ret.then) {\n return ret;\n } else {\n return Promise.resolve();\n }\n }\n }\n\n if (video && video.webkitSupportsFullscreen) {\n video.webkitExitFullScreen();\n return Promise.resolve();\n }\n\n return Promise.reject(new Error('call exitFullscreen fail'));\n }\n /**\n * @param { HTMLElement } [el]\n * @returns\n */\n\n }, {\n key: \"getCssFullscreen\",\n value: function getCssFullscreen() {\n var el = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.config.fullscreenTarget;\n\n if (this.fullscreen) {\n this.exitFullscreen();\n }\n\n this._cssfullscreenEl = el;\n this.changeFullStyle(this.root, el, el ? STATE_CLASS.INNER_FULLSCREEN : STATE_CLASS.CSS_FULLSCREEN);\n this.isCssfullScreen = true;\n this.emit(Events.CSS_FULLSCREEN_CHANGE, true);\n }\n /**\n * @param { HTMLElement } [el]\n * @returns\n */\n\n }, {\n key: \"exitCssFullscreen\",\n value: function exitCssFullscreen() {\n var _class = this._cssfullscreenEl ? STATE_CLASS.INNER_FULLSCREEN : STATE_CLASS.CSS_FULLSCREEN;\n\n if (!this.fullscreen) {\n this.recoverFullStyle(this.root, this._cssfullscreenEl, _class);\n } else {\n this.removeClass(_class);\n }\n\n this._cssfullscreenEl = null;\n this.isCssfullScreen = false;\n this.emit(Events.CSS_FULLSCREEN_CHANGE, false);\n }\n /**\n * @description 播放器焦点状态,控制栏显示\n * @param { {\n * autoHide?: boolean, // 是否可以自动隐藏\n * delay?: number // 自动隐藏的延迟时间,ms, 不传默认使用3000ms\n * } } [data]\n */\n\n }, {\n key: \"focus\",\n value: function focus() {\n var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n autoHide: !this.config.closePlayerBlur,\n delay: this.config.inactive\n };\n\n if (this.isActive) {\n this.onFocus(data);\n return;\n }\n\n this.emit(Events.PLAYER_FOCUS, _objectSpread({\n paused: this.paused,\n ended: this.ended\n }, data));\n }\n /**\n * @description 取消播放器当前焦点状态\n * @param { { ignorePaused?: boolean } } [data]\n */\n\n }, {\n key: \"blur\",\n value: function blur() {\n var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n ignorePaused: false\n };\n\n if (!this.isActive) {\n this.onBlur(data);\n return;\n }\n\n this.emit(Events.PLAYER_BLUR, _objectSpread({\n paused: this.paused,\n ended: this.ended\n }, data));\n }\n /**\n * @protected\n * @param { { autoHide?: boolean, delay?: number} } [data]\n * @returns\n */\n\n }, {\n key: \"onFocus\",\n value: function onFocus() {\n var _this18 = this;\n\n var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n autoHide: true,\n delay: 3000\n };\n this.isActive = true;\n this.removeClass(STATE_CLASS.ACTIVE);\n\n if (this.userTimer) {\n Util.clearTimeout(this, this.userTimer);\n }\n\n if (data.autoHide === false) {\n return;\n }\n\n var time = data && data.delay ? data.delay : this.config.inactive;\n this.userTimer = Util.setTimeout(this, function () {\n _this18.blur();\n }, time);\n }\n /**\n * @protected\n * @param {{ ignorePaused?: boolean }} [data]\n * @returns\n */\n\n }, {\n key: \"onBlur\",\n value: function onBlur() {\n var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n ignorePaused: false\n };\n\n if (!this.isActive) {\n return;\n }\n\n var closePauseVideoFocus = this.config.closePauseVideoFocus;\n this.isActive = false;\n\n if (data.ignorePaused || closePauseVideoFocus || !this.paused && !this.ended) {\n this.addClass(STATE_CLASS.ACTIVE);\n }\n }\n }, {\n key: \"onEmptied\",\n value: function onEmptied() {\n this.updateAcc('emptied');\n }\n /**\n * @protected\n */\n\n }, {\n key: \"onCanplay\",\n value: function onCanplay() {\n this.hasStart && this.removeClass(STATE_CLASS.ENTER);\n this.removeClass(STATE_CLASS.LOADING);\n this.isCanplay = true;\n this.waitTimer && Util.clearTimeout(this, this.waitTimer);\n }\n /**\n * @protected\n */\n\n }, {\n key: \"onPlay\",\n value: function onPlay() {\n // this.addClass(STATE_CLASS.PLAYING)\n // this.removeClass(STATE_CLASS.NOT_ALLOW_AUTOPLAY)\n this.removeClass(STATE_CLASS.PAUSED);\n this.ended && this.removeClass(STATE_CLASS.ENDED);\n !this.config.closePlayVideoFocus && this.focus();\n }\n /**\n * @protected\n */\n\n }, {\n key: \"onPause\",\n value: function onPause() {\n this.addClass(STATE_CLASS.PAUSED);\n this.updateAcc('pause');\n\n if (!this.config.closePauseVideoFocus) {\n if (this.userTimer) {\n Util.clearTimeout(this, this.userTimer);\n }\n\n this.focus();\n }\n }\n /**\n * @protected\n */\n\n }, {\n key: \"onEnded\",\n value: function onEnded() {\n this.updateAcc('ended');\n this.addClass(STATE_CLASS.ENDED); // this.removeClass(STATE_CLASS.PLAYING)\n }\n /**\n * @protected\n */\n\n }, {\n key: \"onError\",\n value: function onError() {\n this.updateAcc('error');\n this.removeClass(STATE_CLASS.NOT_ALLOW_AUTOPLAY);\n this.removeClass(STATE_CLASS.NO_START);\n this.removeClass(STATE_CLASS.ENTER);\n this.removeClass(STATE_CLASS.LOADING);\n this.addClass(STATE_CLASS.ERROR);\n }\n /**\n * @protected\n */\n\n }, {\n key: \"onSeeking\",\n value: function onSeeking() {\n if (!this.isSeeking) {\n this.updateAcc('seeking');\n }\n\n this.isSeeking = true;\n this.addClass(STATE_CLASS.SEEKING);\n }\n /**\n * @protected\n */\n\n }, {\n key: \"onSeeked\",\n value: function onSeeked() {\n this.isSeeking = false; // for ie,playing fired before waiting\n\n if (this.waitTimer) {\n Util.clearTimeout(this, this.waitTimer);\n }\n\n this.removeClass(STATE_CLASS.LOADING);\n this.removeClass(STATE_CLASS.SEEKING);\n }\n /**\n * @protected\n */\n\n }, {\n key: \"onWaiting\",\n value: function onWaiting() {\n var _this19 = this;\n\n if (this.waitTimer) {\n Util.clearTimeout(this, this.waitTimer);\n }\n\n this.updateAcc('waiting');\n this.waitTimer = Util.setTimeout(this, function () {\n _this19.addClass(STATE_CLASS.LOADING);\n\n Util.clearTimeout(_this19, _this19.waitTimer);\n _this19.waitTimer = null;\n }, 200);\n }\n /**\n * @protected\n */\n\n }, {\n key: \"onPlaying\",\n value: function onPlaying() {\n var _this20 = this;\n\n var NO_START = STATE_CLASS.NO_START,\n PAUSED = STATE_CLASS.PAUSED,\n ENDED = STATE_CLASS.ENDED,\n ERROR = STATE_CLASS.ERROR,\n REPLAY = STATE_CLASS.REPLAY,\n LOADING = STATE_CLASS.LOADING;\n var clsList = [NO_START, PAUSED, ENDED, ERROR, REPLAY, LOADING];\n clsList.forEach(function (cls) {\n _this20.removeClass(cls);\n });\n }\n /**\n * @protected\n */\n\n }, {\n key: \"onTimeupdate\",\n value: function onTimeupdate() {\n !this._videoHeight && this.getVideoSize();\n\n if ((this.waitTimer || this.hasClass(STATE_CLASS.LOADING)) && this.video.readyState > 2) {\n this.removeClass(STATE_CLASS.LOADING);\n Util.clearTimeout(this, this.waitTimer);\n this.waitTimer = null;\n }\n\n if (!this._accPlayed.t && !this.paused && !this.ended) {\n this._accPlayed.t = new Date().getTime();\n }\n }\n }, {\n key: \"onVolumechange\",\n value: function onVolumechange() {\n Util.typeOf(this.config.volume) === 'Number' && (this.config.volume = this.volume);\n }\n }, {\n key: \"onRatechange\",\n value: function onRatechange() {\n this.config.defaultPlaybackRate = this.playbackRate;\n }\n /**\n * 触发用户行为事件,第一个参数是Dom事件\n * @param { Event } event\n * @param { string } action\n * @param {[propName: string]: any; } [params]\n * @returns\n */\n\n }, {\n key: \"emitUserAction\",\n value: function emitUserAction(event, action) {\n var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (!this.video || !action || !event) {\n return;\n }\n\n var eventType = Util.typeOf(event) === 'String' ? event : event.type || '';\n\n if (action === 'switch_play_pause') {\n Util.typeOf(params.paused) === 'Undefined' && (params.paused = this.paused);\n params.isFirstStart = !this.playing;\n }\n\n this.emit(Events.USER_ACTION, _objectSpread({\n eventType: eventType,\n action: action,\n currentTime: this.currentTime,\n duration: this.duration,\n ended: this.ended,\n event: event\n }, params));\n }\n }, {\n key: \"updateAcc\",\n value: function updateAcc(endType) {\n if (this._accPlayed.t) {\n var _at = new Date().getTime() - this._accPlayed.t;\n\n this._accPlayed.acc += _at;\n this._accPlayed.t = 0;\n\n if (endType === 'ended' || this.ended) {\n this._accPlayed.loopAcc = this._accPlayed.acc;\n }\n }\n }\n /**\n *\n * @param { number } time\n * @returns { boolean }\n */\n\n }, {\n key: \"checkBuffer\",\n value: function checkBuffer(time) {\n var buffered = this.video.buffered;\n\n if (!buffered || buffered.length === 0 || !this.duration) {\n return true;\n }\n\n var currentTime = time || this.video.currentTime || 0.2;\n var len = buffered.length;\n\n for (var i = 0; i < len; i++) {\n if (buffered.start(i) <= currentTime && buffered.end(i) > currentTime) {\n return true;\n }\n }\n\n return false;\n }\n /**\n * @description position video/audio according to height ratio and y coordinate\n * @param { { h: number, y?: number, x?:number, w?:number} } pos\n * @returns\n */\n\n }, {\n key: \"position\",\n value: function position() {\n var pos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n h: 0,\n y: 0,\n x: 0,\n w: 0\n };\n\n if (!this.video || !pos || !pos.h) {\n return;\n }\n\n var rvH = 1 / pos.h;\n\n var _transform = rvH !== 1 ? \"scale(\".concat(rvH, \")\") : '';\n\n var _tx = 0;\n var _ty = 0;\n\n if (pos.y) {\n _ty = (100 - pos.h * 100) / 2 - pos.y * 100;\n }\n\n if (pos.w && pos.x) {\n _tx = (100 - pos.w * 100) / 2 - pos.x * 100;\n }\n\n _transform += \" translate(\".concat(_tx, \"%, \").concat(_ty, \"%)\");\n this.video.style.transform = _transform;\n this.video.style.webkitTransform = _transform;\n }\n /**\n * 更新配置参数\n * @param { IPlayerOptions } config\n */\n\n }, {\n key: \"setConfig\",\n value: function setConfig(config) {\n var _this21 = this;\n\n if (!config) {\n return;\n }\n\n Object.keys(config).map(function (key) {\n _this21.config[key] = config[key];\n });\n }\n }, {\n key: \"getVideoSize\",\n value: function getVideoSize() {\n var _this22 = this;\n\n if (!this.video) {\n return;\n }\n\n var _this$video = this.video,\n videoWidth = _this$video.videoWidth,\n videoHeight = _this$video.videoHeight;\n var _this$config3 = this.config,\n fitVideoSize = _this$config3.fitVideoSize,\n videoFillMode = _this$config3.videoFillMode;\n\n if (videoFillMode === 'fill' || videoFillMode === 'cover') {\n this.setAttribute('data-xgfill', videoFillMode);\n }\n\n if (!videoHeight || !videoWidth) {\n return;\n }\n\n this._videoHeight = videoHeight;\n this._videoWidth = videoWidth;\n var containerSize = this.root.getBoundingClientRect();\n var controlsHeight = this.controls && this.innerContainer ? this.controls.root.getBoundingClientRect().height : 0;\n var width = containerSize.width;\n var height = containerSize.height - controlsHeight;\n var videoFit = parseInt(videoWidth / videoHeight * 1000, 10);\n var fit = parseInt(width / height * 1000, 10);\n var rWidth = width;\n var rHeight = height;\n var _style = {};\n\n if (fitVideoSize === 'auto' && fit > videoFit || fitVideoSize === 'fixWidth') {\n rHeight = width / videoFit * 1000;\n\n if (this.config.fluid) {\n _style.paddingTop = \"\".concat(rHeight * 100 / rWidth, \"%\");\n } else {\n _style.height = \"\".concat(rHeight + controlsHeight, \"px\");\n }\n } else if (fitVideoSize === 'auto' && fit < videoFit || fitVideoSize === 'fixHeight') {\n rWidth = videoFit * height / 1000;\n _style.width = \"\".concat(rWidth, \"px\");\n } // 全屏不做行间css设置\n\n\n if (!this.fullscreen && !this.isCssfullScreen) {\n Object.keys(_style).map(function (key) {\n _this22.root.style[key] = _style[key];\n });\n } // video填充模式\n\n\n if (videoFillMode === 'fillHeight' && fit < videoFit || videoFillMode === 'fillWidth' && fit > videoFit) {\n this.setAttribute('data-xgfill', 'cover');\n }\n\n var data = {\n videoScale: videoFit,\n vWidth: rWidth,\n vHeight: rHeight,\n cWidth: rWidth,\n cHeight: rHeight + controlsHeight\n };\n this.emit(Events.VIDEO_RESIZE, data);\n }\n /**\n *\n * @param { number } left\n * @param { number } top\n * @returns\n */\n\n }, {\n key: \"updateObjectPosition\",\n value: function updateObjectPosition() {\n var left = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var top = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n if (this.video.updateObjectPosition) {\n this.video.updateObjectPosition(left, top);\n return;\n }\n\n this.video.style.objectPosition = \"\".concat(left * 100, \"% \").concat(top * 100, \"%\");\n }\n /**\n * @typedef { {\n * url: any,\n * definition: any,\n * text?: string,\n * text?: string | { [propName: string]: any },\n * iconText?: string | { [propName: string]: any }\n * } } IDefinition\n */\n\n /**\n * @type { Array }\n */\n\n }, {\n key: \"definitionList\",\n get: function get() {\n return this.config.definition.list || [];\n }\n /**\n * @type { string }\n */\n ,\n set: function set(list) {\n var _this23 = this;\n\n var definition = this.config.definition;\n definition.list = list;\n this.emit('resourceReady', list);\n var cutTo = null;\n var to = null;\n list.map(function (item) {\n if (_this23.curDefinition === item.definition) {\n cutTo = item;\n }\n\n if (definition.defaultDefinition === item.definition) {\n to = item;\n }\n });\n\n if (!to && list.length > 0) {\n to = list[0];\n }\n\n cutTo ? this.changeDefinition(cutTo) : to && this.changeDefinition(to);\n }\n }, {\n key: \"lang\",\n get: function get() {\n return this.config.lang;\n },\n set: function set(lang) {\n var result = I18N.langKeys.filter(function (key) {\n return key === lang;\n });\n\n if (result.length === 0 && lang !== 'zh') {\n console.error(\"Sorry, set lang fail, because the language [\".concat(lang, \"] is not supported now, list of all supported languages is [\").concat(I18N.langKeys.join(), \"] \"));\n return;\n }\n\n this.config.lang = lang;\n pluginsManager.setLang(lang, this);\n }\n }, {\n key: \"i18n\",\n get: function get() {\n var lang = this.config.lang;\n return I18N.lang[lang] || I18N.lang.en;\n }\n }, {\n key: \"i18nKeys\",\n get: function get() {\n return I18N.textKeys || {};\n }\n /**\n * @type { string }\n */\n\n }, {\n key: \"version\",\n get: function get() {\n return version;\n }\n /**\n * @type { number | string }\n */\n\n }, {\n key: \"playerId\",\n get: function get() {\n return this._pluginInfoId;\n }\n /**\n * @type { any }\n */\n\n }, {\n key: \"url\",\n get: function get() {\n return this.__url || this.config.url;\n }\n /**\n * @type { string }\n */\n ,\n set: function set(url) {\n /**\n * @private\n */\n this.__url = url;\n }\n }, {\n key: \"poster\",\n get: function get() {\n return this.plugins.poster ? this.plugins.poster.config.poster : this.config.poster;\n }\n /**\n * @type { string }\n */\n ,\n set: function set(posterUrl) {\n this.plugins.poster && this.plugins.poster.update(posterUrl);\n }\n }, {\n key: \"readyState\",\n get: function get() {\n var key = _get(_getPrototypeOf(Player.prototype), \"readyState\", this);\n\n return this.i18n[key] || key;\n }\n }, {\n key: \"error\",\n get: function get() {\n var key = _get(_getPrototypeOf(Player.prototype), \"error\", this);\n\n return this.i18n[key] || key;\n }\n }, {\n key: \"networkState\",\n get: function get() {\n var key = _get(_getPrototypeOf(Player.prototype), \"networkState\", this);\n\n return this.i18n[key] || key;\n }\n /**\n * @type { boolean }\n */\n\n }, {\n key: \"fullscreenChanging\",\n get: function get() {\n return !(this._fullScreenOffset === null);\n }\n /**\n * 累计观看时长\n * @type number\n */\n\n }, {\n key: \"cumulateTime\",\n get: function get() {\n var _accPlayed = this._accPlayed;\n this.updateAcc('get');\n return _accPlayed.acc;\n }\n /**\n * @type { number }\n */\n\n }, {\n key: \"zoom\",\n get: function get() {\n return this.config.zoom;\n }\n /**\n * @type { number }\n */\n ,\n set: function set(value) {\n this.config.zoom = value;\n }\n /**\n * @param { string } hookName\n * @param { Function } handler\n * @param { {pre: Function| null , next: Function | null} } preset\n * @returns\n */\n\n }, {\n key: \"hook\",\n value: function hook(hookName, handler) {\n var preset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n pre: null,\n next: null\n };\n // eslint-disable-next-line no-return-assign\n return _hook.call.apply(_hook, [this].concat(Array.prototype.slice.call(arguments)));\n }\n /**\n * @param { string } hookName\n * @param { (player: any, ...args) => boolean | Promise } handler\n * @param {...any} args\n * @returns {boolean} isSuccess\n */\n\n }, {\n key: \"useHooks\",\n value: function useHooks(hookName, handler) {\n return _useHooks.call.apply(_useHooks, [this].concat(Array.prototype.slice.call(arguments)));\n }\n /**\n *\n * @param { string } pluginName\n * @param { string } hookName\n * @param { (plugin: any, ...args) => boolean | Promise } handler\n * @param {...any} args\n * @returns { boolean } isSuccess\n */\n\n }, {\n key: \"usePluginHooks\",\n value: function usePluginHooks(pluginName, hookName, handler) {\n for (var _len = arguments.length, args = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {\n args[_key - 3] = arguments[_key];\n }\n\n return _usePluginHooks.call.apply(_usePluginHooks, [this].concat(Array.prototype.slice.call(arguments)));\n }\n /**\n * 设置当前实例的用户激活态\n * @param {boolean} isActive\n * @param { boolean } [isMuted]\n */\n\n }, {\n key: \"setUserActive\",\n value: function setUserActive(isActive, isMuted) {\n if (typeof isMuted === 'boolean' && isMuted !== this.muted) {\n this.addInnerOP('volumechange');\n this.muted = isMuted;\n }\n\n pluginsManager.setCurrentUserActive(this.playerId, isActive);\n }\n /***\n * @deprecated\n * 插件全部迁移完成再做删除\n */\n\n }], [{\n key: \"debugger\",\n get: function get() {\n return XG_DEBUG.config.debug;\n }\n /**\n * 获取当前处理激活态的实例id\n * @returns { number | string | null }\n */\n ,\n set:\n /**\n * @type {number}\n * @description set debugger level\n * 1 - only print error logs\n * 2 - print warn logs and error logs\n * 3 - print all debug logs and error stack logs\n */\n function set(value) {\n XG_DEBUG.config.debug = value;\n }\n }, {\n key: \"getCurrentUserActivePlayerId\",\n value: function getCurrentUserActivePlayerId() {\n return pluginsManager.getCurrentUseActiveId();\n }\n /**\n * 设置实例的用户行为激活状态\n * @param { number | string } playerId\n * @param { boolean } isActive\n */\n\n }, {\n key: \"setCurrentUserActive\",\n value: function setCurrentUserActive(playerId, isActive) {\n pluginsManager.setCurrentUserActive(playerId, isActive);\n }\n }, {\n key: \"install\",\n value: function install(name, descriptor) {\n if (!Player.plugins) {\n Player.plugins = {};\n }\n\n if (!Player.plugins[name]) {\n Player.plugins[name] = descriptor;\n }\n }\n /***\n * @deprecated\n * 插件全部迁移完成再做删除\n */\n\n }, {\n key: \"use\",\n value: function use(name, descriptor) {\n if (!Player.plugins) {\n Player.plugins = {};\n }\n\n Player.plugins[name] = descriptor;\n }\n }]);\n\n return Player;\n}(VideoProxy);\n\n_defineProperty(Player, \"defaultPreset\", null);\n\n_defineProperty(Player, \"XgVideoProxy\", null);\n\nexport { Player as default, Plugin, BasePlugin, Events, Errors, Sniffer, Util, STATE_CLASS, I18N };","/**\n * @typedef { {\n * id?: string, // 播放器容器id\n * el?: HTMLElement, // 播放器容器dom\n * url?: any, // 播放url\n * nullUrlStart?: boolean, // 空url起播\n * width?: number | string, // 播放器宽度,单位px\n * height?: number | string, // 播放器高度,单位px\n * fluid?: boolean, // 是否启用流式布局\n * fitVideoSize?: 'fixWidth'|'fixHeight'|'fixed', // 播放器容器适配方式 fixWidth/fixHeight/fixed\n * videoFillMode?: 'auto'|'fillHeight'|'fillWidth'|'fill'|'cover', // video画面填充模式 fillHeight/fillWidth/fill/auto\n * volume?: number | { [propName: string]: any }, // 默认音量\n * autoplay?: boolean, // 是否自动播放\n * autoplayMuted?: boolean, // 是否自动静音\n * loop?: boolean, // 是否循环播放\n * zoom?: number, // 缩放比例\n * videoInit?: boolean, // 是否优先显示视频首帧\n * poster?: string | { [propName: string]: any }, // 封面图地址\n * isMobileSimulateMode?: 'mobile' | 'pc', // 模拟状态,取值mobile/pc\n * defaultPlaybackRate?: number, // 默认播放倍数\n * execBeforePluginsCall?: () => any, // 默认插件组装前回调\n * allowSeekAfterEnded?: boolean, // 播放结束之后是否允许seek\n * enableContextmenu?: boolean, // 启用右键菜单\n * closeVideoClick?: boolean, // 是否通过video的click/touchend行为切换播放暂停\n * closeVideoDblclick?: boolean, // 是否通过双击行为触发全屏切换\n * closePlayerBlur?: boolean, // 是否关闭鼠标移出播放器范围触发blur操作\n * closeDelayBlur?: boolean, // 是否关闭自动隐藏控制条\n * leavePlayerTime?: number, // 延迟触发时间\n * closePlayVideoFocus?: boolean, // 是否关闭play时触发focus\n * closePauseVideoFocus?: boolean, // 是否关闭pause时触发focus\n * closeFocusVideoFocus?: boolean, // 是否关闭播放器移动鼠标时触发focus\n * closeControlsBlur?: boolean, // 鼠标移出播放器控制条范围时触发focus事件\n * videoAttributes?: { [propName: string]: any }, // video扩展属性\n * startTime?: number, // 自动播放起始时间点\n * seekedStatus?: 'play' | 'pause' | 'auto', // seek结束之后播放状态 play/pause/auto\n * miniprogress?: boolean, // 是否启用迷你控制栏\n * disableSwipeHandler?: () => any,\n * enableSwipeHandler?: () => any,\n * ignores?: Array<'cssfullscreen' | 'screenshot' | 'pip' | 'miniscreen' | 'keyboard' | 'download' | 'playbackrate' | 'time' | 'definition' | 'error' | 'fullscreen' | 'loading' | 'mobile' | 'pc' | 'play' | 'poster' | 'progress' | 'replay' | 'start' | 'volume' | string>, // 禁用插件列表\n * inactive?: number, // 进度条自动消失延时\n * lang?: string,\n * controls?: boolean | { [propName: string]: any },\n * marginControls?: boolean, // 控制栏是否位于画面底部,不与画面重合\n * fullscreenTarget?: [HTMLElement], // 全屏作用的dom元素\n * screenShot?: boolean | { [propName: string]: any }, // 截图插件\n * rotate?: boolean | { [propName: string]: any }, // 旋转插件\n * pip?: boolean | { [propName: string]: any }, // pip插件\n * download?: boolean | { [propName: string]: any }, // 是否启用下载插件\n * mini?: boolean | { [propName: string]: any }, // 迷你小窗插件\n * cssFullscreen?: boolean | { [propName: string]: any }, // 页面全屏\n * keyShortcut?: boolean, // 是否开启快捷键\n * presets?: any[],\n * plugins?: any[]\n * playbackRate?: number | Array | { [propName: string]: any },\n * definition?: { list: Array<{ url: any, definition: any, [propName: string]: any }> , defaultDefinition?: any, [propName: string]: any},\n * playsinline?: boolean,\n * customDuration?: number, // 用户自定义时长\n * timeOffset?: number, // 当前时长偏移\n * icons?: { [propName: string]: string | HTMLElement | () => HTMLElement | string }, // 按钮配置\n * i18n?: Array,\n * thumbnail?: {\n * urls: Array, // 有多张大图就多个url就好\n * pic_num: number, // 每张图含有几个雪碧图\n * col: number, // 截图列数\n * row: number, // 截图行数\n * height?: number, // 缩略图高度, 默认90\n * width?: number, // 缩略图宽度, 默认160\n * },\n * videoConfig?: { [propName: string]: any },\n * commonStyle?: {\n * progressColor?: string, // 进度条底色\n * playedColor?: string, // 播放完成部分进度条底色\n * cachedColor?: string, // 缓存部分进度条底色\n * sliderBtnStyle?: { [propName: string]: any }, // 进度条滑块样式\n * volumeColor?: string\n * },\n * [propName: string]: any; // 扩展定义\n * } } IPlayerOptions\n */\n\n/**\n *\n * @returns { IPlayerOptions }\n */\nexport default function getDefaultConfig() {\n return {\n id: '',\n // 播放器容器id\n el: null,\n // 播放器容器dom\n url: '',\n // 播放url\n nullUrlStart: false,\n // 空url起播\n width: 600,\n // 播放器宽度,单位px\n height: 337.5,\n // 播放器高度,单位px\n fluid: false,\n // 是否启用流式布局\n fitVideoSize: 'fixed',\n // 播放器容器适配方式 fixWidth/fixHeight/fixed\n videoFillMode: 'auto',\n // video画面填充模式 fillHeight/fillWidth/fill/auto/cover\n volume: 0.6,\n // 默认音量\n autoplay: false,\n // 是否自动播放\n autoplayMuted: false,\n // 是否自动静音\n loop: false,\n // 是否循环播放\n zoom: 1,\n // 缩放比例\n videoInit: true,\n // 是否优先显示视频首帧\n poster: '',\n // 封面图地址\n isMobileSimulateMode: false,\n // 模拟状态,取值mobile/pc\n defaultPlaybackRate: 1,\n // 默认播放倍数\n execBeforePluginsCall: null,\n // 默认插件组装前回调\n allowSeekAfterEnded: true,\n // 播放结束之后是否允许seek\n enableContextmenu: false,\n // 启用右键菜单\n closeVideoClick: false,\n // 是否通过video的click/touchend行为切换播放暂停\n closeVideoDblclick: false,\n // 是否通过双击行为触发全屏切换\n closePlayerBlur: false,\n // 是否关闭鼠标移出播放器范围触发blur操作\n closeDelayBlur: false,\n // 是否关闭自动隐藏控制条\n leavePlayerTime: 3000,\n // 延迟触发时间\n closePlayVideoFocus: false,\n // 是否关闭play时触发focus\n closePauseVideoFocus: false,\n // 是否关闭pause时触发focus\n closeFocusVideoFocus: false,\n // 是否关闭播放器移动鼠标时触发focus\n closeControlsBlur: false,\n // 鼠标移出播放器控制条范围时触发focus事件\n videoAttributes: {},\n // video扩展属性\n startTime: 0,\n // 自动播放起始时间点\n // isSeekedPlay: true, // seek结束之后是否默认播放\n seekedStatus: 'play',\n // seek结束之后播放状态 play/pause/auto\n miniprogress: false,\n // 是否启用迷你控制栏\n disableSwipeHandler: function disableSwipeHandler() {},\n enableSwipeHandler: function enableSwipeHandler() {},\n // 是否删除\n ignores: [],\n whitelist: [],\n inactive: 3000,\n // 进度条自动消失延时\n lang: (document.documentElement.getAttribute('lang') || navigator.language || 'zh-cn').toLocaleLowerCase(),\n controls: true,\n marginControls: false,\n // 控制栏是否位于画面底部,不与画面重合\n fullscreenTarget: null,\n controlsList: [],\n // 内置插件相关配置\n screenShot: false,\n // 截图插件\n rotate: false,\n // 旋转插件\n pip: false,\n // pip插件\n download: false,\n mini: false,\n // 迷你小窗插件\n cssFullscreen: true,\n // 页面全屏\n keyShortcut: true,\n // 是否开启快捷键\n presets: [],\n plugins: [],\n playbackRate: 1,\n definition: {\n list: []\n },\n playsinline: true,\n customDuration: 0,\n // 用户自定义时长\n timeOffset: 0,\n // 当前时长偏移\n icons: {},\n i18n: [],\n thumbnail: null,\n // 预览图配置\n videoConfig: {},\n // video属性配置\n commonStyle: {\n // 用于配置一些通用样式结构\n progressColor: '',\n // 进度条底色\n playedColor: '',\n // 播放完成部分进度条底色\n cachedColor: '',\n // 缓存部分进度条底色\n sliderBtnStyle: {},\n // 进度条滑块样式\n volumeColor: ''\n }\n };\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport BasePlugin, { Events, Util } from '../../plugin';\nimport XG_DEBUG from '../../utils/debug';\n\nfunction now() {\n return new Date().getTime();\n}\n\nvar Xglogger = /*#__PURE__*/function (_BasePlugin) {\n _inherits(Xglogger, _BasePlugin);\n\n var _super = _createSuper(Xglogger);\n\n function Xglogger() {\n var _this;\n\n _classCallCheck(this, Xglogger);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"_onTimeupdate\", function () {\n XG_DEBUG.logInfo('[xgLogger]Events._onTimeupdate');\n _this._state.isTimeUpdate = true;\n\n _this._sendFirstFrame();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onAutoplayStart\", function () {\n XG_DEBUG.logInfo('[xgLogger]Events._onAutoplayStart');\n _this._state.autoplayStart = true;\n\n _this._sendFirstFrame();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onReset\", function () {\n _this.vt = 0;\n _this.pt = 0;\n _this.fvt = 0;\n _this._isSeeking = false;\n _this.seekingStart = 0;\n _this.waitingStart = 0;\n _this._isWaiting = false;\n _this._waitTimer && Util.clearTimeout(_assertThisInitialized(_this), _this._waitTimer);\n _this._waittTimer && Util.clearTimeout(_assertThisInitialized(_this), _this._waittTimer);\n _this._waitTimer = null;\n _this._waittTimer = null;\n _this._waitType = 0; // 0 - 普通卡顿 1-起播卡顿 2-seek卡顿\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onSeeking\", function () {\n if (_this.seekingStart) {\n return;\n }\n\n _this.suspendWaitingStatus('seek');\n\n _this.seekingStart = now();\n\n _this.emitLog('seekStart', {\n start: now()\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onSeeked\", function () {\n _this.suspendSeekingStatus('seeked');\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onWaiting\", function () {\n // console.log('_onWaiting', this._isWaiting)\n if (_this._isWaiting) {\n return;\n } // 卡顿标记开始\n\n\n _this._isWaiting = true;\n _this._waitTimer = Util.setTimeout(_assertThisInitialized(_this), function () {\n // console.log('_waitTimer', this._isWaiting)\n if (_this._isWaiting) {\n _this.waitingStart = now();\n Util.clearTimeout(_assertThisInitialized(_this), _this._waitTimer);\n _this._waitTimer = null;\n\n if (!_this.vt) {\n _this._waitType = 1;\n } else if (_this.seekingStart) {\n _this._waitType = 2;\n } else {\n _this._waitType = 0;\n }\n\n _this._startWaitTimeout();\n\n _this.emitLog('waitingStart', {\n start: _this.waitingStart,\n type: _this._waitType,\n endType: _this._waitType === 2 ? 'seek' : 'playing'\n });\n }\n }, 200);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onError\", function () {\n _this.suspendSeekingStatus('error');\n\n _this.suspendWaitingStatus('error');\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onPlaying\", function () {\n _this.suspendWaitingStatus('playing');\n });\n\n return _this;\n }\n\n _createClass(Xglogger, [{\n key: \"afterCreate\",\n value: function afterCreate() {\n var _this2 = this;\n\n this._state = {\n autoplayStart: false,\n isFFLoading: false,\n isTimeUpdate: false\n };\n\n this._onReset();\n\n this._waitType = 'firstFrame';\n this.on(Events.LOAD_START, function () {\n var autoplayStart = _this2._state.autoplayStart;\n _this2._state.isTimeUpdate = false;\n _this2._state.isFFLoading = true;\n XG_DEBUG.logInfo('[xgLogger]Events.LOAD_START', autoplayStart);\n _this2.pt = now();\n _this2.vt = 0;\n _this2.fvt = 0;\n\n _this2.off(Events.AUTOPLAY_STARTED, _this2._onAutoplayStart);\n\n _this2.off(Events.TIME_UPDATE, _this2._onTimeupdate);\n\n _this2._onWaiting();\n\n if (!autoplayStart) {\n _this2.once(Events.AUTOPLAY_STARTED, _this2._onAutoplayStart);\n } else {\n _this2.once(Events.TIME_UPDATE, _this2._onTimeupdate);\n }\n });\n this.on(Events.LOADED_DATA, function () {\n _this2.vt = now();\n _this2.fvt = _this2.vt - _this2.pt;\n XG_DEBUG.logInfo('[xgLogger]Events.LOADED_DATA', _this2.fvt, _this2._state.isTimeUpdate);\n\n if (_this2._state.isTimeUpdate) {\n _this2._sendFirstFrame();\n }\n });\n this.on(Events.SEEKING, this._onSeeking);\n this.on(Events.SEEKED, this._onSeeked);\n this.on(Events.DESTROY, function () {\n _this2.endState('destroy');\n });\n this.on(Events.URL_CHANGE, function () {\n _this2.endState('urlChange');\n\n _this2._onReset();\n });\n this.on([Events.PLAYING, Events.CANPLAY], this._onPlaying);\n this.on(Events.WAITING, this._onWaiting);\n this.on(Events.ERROR, this._onError);\n this.on(Events.EMPTIED, function () {\n _this2.endState('emptied');\n\n _this2._onReset();\n });\n }\n }, {\n key: \"_sendFirstFrame\",\n value: function _sendFirstFrame() {\n this.s = now();\n\n if (this.vt > 0 && this._state.isFFLoading) {\n XG_DEBUG.logInfo('[xgLogger]Events._sendFirstFrame', this.vt);\n this._state.isFFLoading = false;\n this.emitLog('firstFrame', {\n fvt: this.fvt,\n costTime: this.fvt,\n vt: this.vt\n });\n }\n }\n }, {\n key: \"_startWaitTimeout\",\n value: function _startWaitTimeout() {\n var _this3 = this;\n\n if (this._waittTimer) {\n Util.clearTimeout(this, this._waittTimer);\n }\n\n this._waittTimer = Util.setTimeout(this, function () {\n _this3.suspendWaitingStatus('timeout');\n\n Util.clearTimeout(_this3, _this3._waittTimer);\n _this3._waittTimer = null;\n }, 30000);\n }\n }, {\n key: \"endState\",\n value: function endState(endType) {\n this.suspendWaitingStatus(endType);\n this.suspendSeekingStatus(endType);\n }\n }, {\n key: \"suspendSeekingStatus\",\n value: function suspendSeekingStatus(endType) {\n if (!this.seekingStart) {\n return;\n }\n\n var _now = now();\n\n var _cost = _now - this.seekingStart; // console.log('suspendSeekingStatus>>', `endType:${endType} costTime:${_cost}`)\n\n\n this.seekingStart = 0;\n this.emitLog('seekEnd', {\n end: _now,\n costTime: _cost,\n endType: endType\n });\n }\n }, {\n key: \"suspendWaitingStatus\",\n value: function suspendWaitingStatus(endType) {\n // console.log('suspendWaitingStatus', endType, this.waitingStart)\n if (this._waitTimer) {\n Util.clearTimeout(this, this._waitTimer);\n this._waitTimer = null;\n }\n\n if (this._waittTimer) {\n Util.clearTimeout(this, this._waittTimer);\n this._waittTimer = null;\n }\n\n this._isWaiting = false;\n\n if (!this.waitingStart) {\n return;\n } // console.log('suspendWaitingStatus>>', endType)\n\n\n var _now = now();\n\n var _cost = _now - this.waitingStart;\n\n this._isWaiting = false;\n this.waitingStart = 0; // switch (endType) {\n // case 'timeout':\n // break\n // case 'playing':\n // this._isWaiting = false\n // this.waitingStart = false\n // break\n // }\n\n this.emitLog('waitingEnd', {\n costTime: _cost,\n type: this._waitType,\n endType: this._waitType === 2 ? 'seek' : endType\n });\n }\n }, {\n key: \"emitLog\",\n value: function emitLog(eventType, data) {\n var player = this.player;\n this.emit(Events.XGLOG, _objectSpread({\n t: now(),\n host: Util.getHostFromUrl(player.currentSrc),\n vtype: player.vtype,\n eventType: eventType,\n currentTime: this.player.currentTime,\n readyState: player.video.readyState,\n networkState: player.video.networkState\n }, data));\n }\n }], [{\n key: \"pluginName\",\n get: function get() {\n return 'xgLogger';\n }\n }, {\n key: \"defaultConfig\",\n get: function get() {\n return {};\n }\n }]);\n\n return Xglogger;\n}(BasePlugin);\n\nexport { Xglogger as default };","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport Plugin, { Events, Util } from '../../plugin';\nvar ReplaySvg = \"\";\n\nvar Replay = /*#__PURE__*/function (_Plugin) {\n _inherits(Replay, _Plugin);\n\n var _super = _createSuper(Replay);\n\n function Replay() {\n _classCallCheck(this, Replay);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(Replay, [{\n key: \"registerIcons\",\n value: function registerIcons() {\n return {\n replay: ReplaySvg\n };\n }\n }, {\n key: \"afterCreate\",\n value: function afterCreate() {\n var _this = this;\n\n Plugin.insert(this.icons.replay, this.root, 0);\n this.__handleReplay = this.hook('replayHandler', function () {\n _this.player.replay();\n }, {\n pre: function pre(e) {\n e.preventDefault();\n e.stopPropagation();\n }\n }); // this.bind('.xgplayer-replay', ['click', 'touchend'], this.__handleReplay)\n\n this.bind('svg', ['click', 'touchend'], this.__handleReplay);\n this.bind('.xgplayer-replay-txt', ['click', 'touchend'], this.__handleReplay);\n this.on(Events.ENDED, function () {\n if (!_this.playerConfig.loop) {\n Util.addClass(_this.player.root, 'replay');\n }\n\n if (_this.config.disable) {\n return;\n }\n\n _this.show();\n\n var path = _this.root.querySelector('path');\n\n if (path) {\n var transform = window.getComputedStyle(path).getPropertyValue('transform');\n\n if (typeof transform === 'string' && transform.indexOf('none') > -1) {\n return null;\n } else {\n path.setAttribute('transform', transform);\n }\n }\n });\n this.on(Events.PLAY, function () {\n _this.hide();\n });\n }\n }, {\n key: \"handleReplay\",\n value: function handleReplay(e) {\n e.preventDefault();\n e.stopPropagation();\n this.player.replay();\n Util.removeClass(this.player.root, 'replay');\n }\n }, {\n key: \"show\",\n value: function show() {\n if (this.config.disable) {\n return;\n }\n\n this.root.style.display = 'flex';\n }\n }, {\n key: \"enable\",\n value: function enable() {\n this.config.disable = false;\n }\n }, {\n key: \"disable\",\n value: function disable() {\n this.config.disable = true;\n this.hide();\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.unbind('svg', ['click', 'touchend'], this.__handleReplay);\n this.unbind('.xgplayer-replay-txt', ['click', 'touchend'], this.__handleReplay);\n }\n }, {\n key: \"render\",\n value: function render() {\n return \"\\n \").concat(this.i18n.REPLAY, \"\\n \");\n }\n }], [{\n key: \"pluginName\",\n get: function get() {\n return 'replay';\n }\n }, {\n key: \"defaultConfig\",\n get: function get() {\n return {\n disable: false\n };\n }\n }]);\n\n return Replay;\n}(Plugin);\n\nexport default Replay;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport Plugin, { Events, Util } from '../../plugin';\n/**\n * @typedef {{\n * isEndedShow?: boolean, // 是否在播放结束之后显示\n * hideCanplay?: boolean, // cnaplay 时间大于1的时候才隐藏\n * poster?: string // 封面图地址\n * }} IPosterConfig\n */\n\nvar Poster = /*#__PURE__*/function (_Plugin) {\n _inherits(Poster, _Plugin);\n\n var _super = _createSuper(Poster);\n\n function Poster() {\n _classCallCheck(this, Poster);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(Poster, [{\n key: \"isEndedShow\",\n get: function get() {\n return this.config.isEndedShow;\n },\n set: function set(value) {\n this.config.isEndedShow = value;\n }\n }, {\n key: \"hide\",\n value: function hide() {\n Util.addClass(this.root, 'hide');\n }\n }, {\n key: \"show\",\n value: function show() {\n Util.removeClass(this.root, 'hide');\n }\n }, {\n key: \"beforeCreate\",\n value: function beforeCreate(args) {\n if (typeof args.player.config.poster === 'string') {\n args.config.poster = args.player.config.poster;\n }\n }\n }, {\n key: \"afterCreate\",\n value: function afterCreate() {\n var _this = this;\n\n this.on(Events.ENDED, function () {\n if (_this.isEndedShow) {\n Util.removeClass(_this.root, 'hide');\n }\n });\n\n if (this.config.hideCanplay) {\n this.once(Events.TIME_UPDATE, function () {\n _this.onTimeUpdate();\n });\n this.on(Events.URL_CHANGE, function () {\n Util.removeClass(_this.root, 'hide');\n Util.addClass(_this.root, 'xg-showplay');\n\n _this.once(Events.TIME_UPDATE, function () {\n _this.onTimeUpdate();\n });\n });\n } else {\n this.on(Events.PLAY, function () {\n Util.addClass(_this.root, 'hide');\n });\n }\n }\n }, {\n key: \"onTimeUpdate\",\n value: function onTimeUpdate() {\n var _this2 = this;\n\n if (!this.player.currentTime) {\n this.once(Events.TIME_UPDATE, function () {\n _this2.onTimeUpdate();\n });\n } else {\n Util.removeClass(this.root, 'xg-showplay');\n }\n }\n }, {\n key: \"update\",\n value: function update(poster) {\n if (!poster) {\n return;\n }\n\n this.config.poster = poster;\n this.root.style.backgroundImage = \"url(\".concat(poster, \")\");\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$config = this.config,\n poster = _this$config.poster,\n hideCanplay = _this$config.hideCanplay;\n var style = poster ? \"background-image:url(\".concat(poster, \");\") : '';\n return \"\\n \");\n }\n }], [{\n key: \"pluginName\",\n get: function get() {\n return 'poster';\n }\n /**\n * @type IPosterConfig\n */\n\n }, {\n key: \"defaultConfig\",\n get: function get() {\n return {\n isEndedShow: true,\n // 是否在播放结束之后显示\n hideCanplay: false,\n // cnaplay 时间大于1的时候才隐藏\n poster: '' // 封面图地址\n\n };\n }\n }]);\n\n return Poster;\n}(Plugin);\n\nexport default Poster;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport Plugin, { Util, Events } from '../../plugin';\nvar PlaySvg = \"\";\nvar PauseSvg = \"\";\n/**\n * @typedef {{\n * isShowPause?: boolean, // 暂停是否常驻\n * isShowEnd?: boolean, // 播放结束常驻\n * disableAnimate?: boolean, // 禁用点击动画\n * mode?: 'hide' | 'show' | 'auto' // 控制模式: hide 常驻: show 跟随:auto\n * [propName: string]: any\n * }} IStartConfig\n */\n\nvar AnimateMap = {};\n\nfunction addAnimate(key, seconds) {\n var callback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n start: null,\n end: null\n };\n\n if (AnimateMap[key]) {\n window.clearTimeout(AnimateMap[key].id);\n }\n\n AnimateMap[key] = {};\n callback.start && callback.start();\n AnimateMap[key].id = window.setTimeout(function () {\n callback.end && callback.end();\n window.clearTimeout(AnimateMap[key].id);\n delete AnimateMap[key];\n }, seconds);\n}\n\nfunction clearAnimation() {\n Object.keys(AnimateMap).map(function (key) {\n window.clearTimeout(AnimateMap[key].id);\n delete AnimateMap[key];\n });\n}\n\nvar Start = /*#__PURE__*/function (_Plugin) {\n _inherits(Start, _Plugin);\n\n var _super = _createSuper(Start);\n\n function Start(args) {\n var _this;\n\n _classCallCheck(this, Start);\n\n _this = _super.call(this, args);\n _this.autoPlayStart = false;\n return _this;\n }\n\n _createClass(Start, [{\n key: \"afterCreate\",\n value: function afterCreate() {\n var _this2 = this;\n\n var player = this.player,\n playerConfig = this.playerConfig;\n this.initIcons();\n this.once(Events.READY, function () {\n if (playerConfig) {\n if (playerConfig.lang && playerConfig.lang === 'en') {\n Util.addClass(player.root, 'lang-is-en');\n } else if (playerConfig.lang === 'jp') {\n Util.addClass(player.root, 'lang-is-jp');\n }\n }\n });\n this.on(Events.AUTOPLAY_STARTED, function () {\n var className = _this2.config.mode === 'auto' ? 'auto-hide' : 'hide';\n Util.addClass(_this2.root, className);\n _this2.autoPlayStart = true;\n\n _this2.onPlayPause('play');\n });\n\n if (!playerConfig.autoplay) {\n this.show();\n }\n\n this.on(Events.AUTOPLAY_PREVENTED, function () {\n var className = _this2.config.mode === 'auto' ? 'auto-hide' : 'hide';\n\n _this2.setAttr('data-state', 'play');\n\n Util.removeClass(_this2.root, className);\n\n _this2.show();\n });\n this.on(Events.PLAY, function () {\n _this2.onPlayPause('play');\n });\n this.on(Events.PAUSE, function () {\n _this2.onPlayPause('pause');\n });\n this.clickHandler = this.hook('click', this.switchPausePlay, {\n pre: function pre(e) {\n e.cancelable && e.preventDefault();\n e.stopPropagation();\n\n _this2.emitUserAction(e, 'switch_play_pause');\n }\n });\n this.bind(['click', 'touchend'], this.clickHandler);\n }\n }, {\n key: \"preventDefault\",\n value: function preventDefault(e) {}\n }, {\n key: \"registerIcons\",\n value: function registerIcons() {\n return {\n startPlay: {\n icon: PlaySvg,\n class: 'xg-icon-play'\n },\n startPause: {\n icon: PauseSvg,\n class: 'xg-icon-pause'\n }\n };\n }\n }, {\n key: \"initIcons\",\n value: function initIcons() {\n var icons = this.icons;\n this.appendChild('xg-start-inner', icons.startPlay);\n this.appendChild('xg-start-inner', icons.startPause);\n }\n }, {\n key: \"hide\",\n value: function hide() {\n Util.addClass(this.root, 'hide');\n }\n }, {\n key: \"show\",\n value: function show() {\n Util.removeClass(this.root, 'hide');\n }\n }, {\n key: \"focusHide\",\n value: function focusHide() {\n Util.addClass(this.root, 'focus-hide');\n }\n }, {\n key: \"recover\",\n value: function recover() {\n Util.removeClass(this.root, 'focus-hide');\n }\n }, {\n key: \"switchStatus\",\n value: function switchStatus(isAnimate) {\n if (isAnimate) {\n this.setAttr('data-state', !this.player.paused ? 'play' : 'pause');\n } else {\n this.setAttr('data-state', this.player.paused ? 'play' : 'pause');\n }\n }\n }, {\n key: \"animate\",\n value: function animate(endShow) {\n var _this3 = this;\n\n addAnimate('pauseplay', 400, {\n start: function start() {\n Util.addClass(_this3.root, 'interact');\n\n _this3.show();\n\n _this3.switchStatus(true);\n },\n end: function end() {\n Util.removeClass(_this3.root, 'interact');\n !endShow && _this3.hide();\n }\n });\n }\n }, {\n key: \"switchPausePlay\",\n value: function switchPausePlay(e) {\n var player = this.player;\n e.cancelable && e.preventDefault();\n e.stopPropagation();\n\n if (!player.isReady) {\n return;\n }\n\n var paused = this.player.paused;\n\n if (!paused && player.isPlaying) {\n player.pause();\n } else {\n player.play();\n }\n }\n }, {\n key: \"onPlayPause\",\n value: function onPlayPause(status) {\n var config = this.config,\n player = this.player;\n\n if (!player.isPlaying || !this.autoPlayStart) {\n return;\n } // 一直显示\n\n\n if (config.mode === 'show') {\n this.switchStatus();\n this.show();\n return;\n } // 跟随播放器的focus状态显示和隐藏\n\n\n if (config.mode === 'auto') {\n this.switchStatus();\n return;\n } // 暂停/播放结束状态强制显示\n\n\n if (config.isShowPause && player.paused && !player.ended || config.isShowEnd && player.ended) {\n this.switchStatus();\n this.show();\n return;\n }\n\n if (config.disableAnimate) {\n this.switchStatus();\n this.hide();\n return;\n }\n\n if (status === 'play') {\n this.autoPlayStart ? this.animate() : this.hide();\n } else {\n if (!this.autoPlayStart || player.ended) {\n return;\n }\n\n this.animate();\n }\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.unbind(['click', 'touchend'], this.clickHandler);\n clearAnimation();\n }\n }, {\n key: \"render\",\n value: function render() {\n var className = this.playerConfig.autoplay ? this.config.mode === 'auto' ? 'auto-hide' : 'hide' : '';\n return \"\\n \\n \\n \");\n }\n }], [{\n key: \"pluginName\",\n get: function get() {\n return 'start';\n }\n /**\n * @type IStartConfig\n */\n\n }, {\n key: \"defaultConfig\",\n get: function get() {\n return {\n isShowPause: false,\n // 暂停是否常驻\n isShowEnd: false,\n // 播放结束常驻\n disableAnimate: false,\n // 禁用点击动画\n mode: 'hide' // 控制模式: hide 常驻: show 跟随:auto\n\n };\n }\n }]);\n\n return Start;\n}(Plugin);\n\nexport default Start;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport Plugin, { Util } from '../../plugin';\n/**\n * @typedef { {\n * innerHtml?: string,\n * [propName: string]: any\n * } } IEnterConfig\n */\n\nvar Enter = /*#__PURE__*/function (_Plugin) {\n _inherits(Enter, _Plugin);\n\n var _super = _createSuper(Enter);\n\n function Enter() {\n _classCallCheck(this, Enter);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(Enter, [{\n key: \"render\",\n value: function render() {\n var innerHtml = this.config.innerHtml;\n var root = Util.createDom('xg-enter', '', {}, 'xgplayer-enter');\n\n if (innerHtml && innerHtml instanceof window.HTMLElement) {\n root.appendChild(innerHtml);\n } else if (innerHtml && typeof innerHtml === 'string') {\n root.innerHTML = innerHtml;\n } else {\n var barStr = '';\n\n for (var i = 1; i <= 12; i++) {\n barStr += \"
\");\n }\n\n root.innerHTML = \"
\".concat(barStr, \"
\");\n }\n\n return root;\n }\n }], [{\n key: \"pluginName\",\n get: function get() {\n return 'enter';\n }\n /**\n * @type IEnterConfig\n */\n\n }, {\n key: \"defaultConfig\",\n get: function get() {\n return {\n innerHtml: '',\n logo: ''\n };\n }\n }]);\n\n return Enter;\n}(Plugin);\n\nexport default Enter;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport Plugin, { POSITIONS } from '../../plugin';\n\nvar MiniScreenIcon = /*#__PURE__*/function (_Plugin) {\n _inherits(MiniScreenIcon, _Plugin);\n\n var _super = _createSuper(MiniScreenIcon);\n\n function MiniScreenIcon() {\n _classCallCheck(this, MiniScreenIcon);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(MiniScreenIcon, [{\n key: \"afterCreate\",\n value: function afterCreate() {\n this.getMini = this.getMini.bind(this);\n this.exitMini = this.exitMini.bind(this);\n this.bind('click', this.getMini);\n }\n }, {\n key: \"getMini\",\n value: function getMini() {\n this.config.onClick && this.config.onClick();\n }\n }, {\n key: \"exitMini\",\n value: function exitMini() {\n this.config.onClick && this.config.onClick();\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.unbind(['click', 'touchend'], this.getMini);\n }\n }, {\n key: \"render\",\n value: function render() {\n var langKey = 'MINISCREEN';\n return \"\\n \\n
\").concat(this.i18n[langKey], \"
\\n
\");\n }\n }], [{\n key: \"pluginName\",\n get: function get() {\n return 'miniscreenIcon';\n }\n }, {\n key: \"defaultConfig\",\n get: function get() {\n return {\n position: POSITIONS.CONTROLS_RIGHT,\n index: 10\n };\n }\n }]);\n\n return MiniScreenIcon;\n}(Plugin);\n\nexport default MiniScreenIcon;","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport EventEmitter from 'eventemitter3';\n\nfunction getStyleSize(value) {\n var num = parseFloat(value); // not a percent like '100%', and a number\n\n var isValid = value.indexOf('%') === -1 && !isNaN(num);\n return isValid && num;\n}\n\nvar measurements = ['paddingLeft', 'paddingRight', 'paddingTop', 'paddingBottom', 'marginLeft', 'marginRight', 'marginTop', 'marginBottom', 'borderLeftWidth', 'borderRightWidth', 'borderTopWidth', 'borderBottomWidth'];\nvar measurementsLength = measurements.length;\n\nfunction getZeroSize() {\n var size = {\n width: 0,\n height: 0,\n innerWidth: 0,\n innerHeight: 0,\n outerWidth: 0,\n outerHeight: 0\n };\n\n for (var i = 0; i < measurementsLength; i++) {\n var measurement = measurements[i];\n size[measurement] = 0;\n }\n\n return size;\n}\n\nfunction getStyle(elem) {\n var style = window.getComputedStyle(elem); // if ( !style ) {\n // logError( 'Style returned ' + style +\n // '. Are you running this code in a hidden iframe on Firefox? ' +\n // 'See http://bit.ly/getsizebug1' );\n // }\n\n return style;\n}\n\nfunction getSize(elem) {\n // use querySeletor if elem is string\n if (typeof elem === 'string') {\n elem = document.querySelector(elem);\n } // do not proceed on non-objects\n\n\n if (!elem || _typeof(elem) !== 'object' || !elem.nodeType) {\n return;\n }\n\n var style = getStyle(elem); // if hidden, everything is 0\n\n if (style.display === 'none') {\n return getZeroSize();\n }\n\n var size = {};\n size.width = elem.offsetWidth;\n size.height = elem.offsetHeight;\n var isBorderBox = size.isBorderBox = style.boxSizing === 'border-box'; // get all measurements\n\n for (var i = 0; i < measurementsLength; i++) {\n var measurement = measurements[i];\n var value = style[measurement];\n var num = parseFloat(value); // any 'auto', 'medium' value will be 0\n\n size[measurement] = !isNaN(num) ? num : 0;\n }\n\n var paddingWidth = size.paddingLeft + size.paddingRight;\n var paddingHeight = size.paddingTop + size.paddingBottom;\n var marginWidth = size.marginLeft + size.marginRight;\n var marginHeight = size.marginTop + size.marginBottom;\n var borderWidth = size.borderLeftWidth + size.borderRightWidth;\n var borderHeight = size.borderTopWidth + size.borderBottomWidth;\n var isBorderBoxSizeOuter = isBorderBox; // isBorderBox && isBoxSizeOuter;\n // overwrite width and height if we can get it from style\n\n var styleWidth = getStyleSize(style.width);\n\n if (styleWidth !== false) {\n size.width = styleWidth + ( // add padding and border unless it's already including it\n isBorderBoxSizeOuter ? 0 : paddingWidth + borderWidth);\n }\n\n var styleHeight = getStyleSize(style.height);\n\n if (styleHeight !== false) {\n size.height = styleHeight + ( // add padding and border unless it's already including it\n isBorderBoxSizeOuter ? 0 : paddingHeight + borderHeight);\n }\n\n size.innerWidth = size.width - (paddingWidth + borderWidth);\n size.innerHeight = size.height - (paddingHeight + borderHeight);\n size.outerWidth = size.width + marginWidth;\n size.outerHeight = size.height + marginHeight;\n return size;\n}\n\nfunction getTouch(touches, dentifier) {\n for (var i = 0; i < touches.length; i++) {\n var touch = touches[i];\n\n if (touch.identifier === dentifier) {\n return touch;\n }\n }\n}\n\n;\nvar EVENTS = {\n START: 'dragStart',\n MOVE: 'dragMove',\n ENDED: 'dragEnded'\n};\nvar POST_START_EVENTS = {\n mousedown: ['mousemove', 'mouseup'],\n touchstart: ['touchmove', 'touchend', 'touchcancel'],\n pointerdown: ['pointermove', 'pointerup', 'pointercancel']\n};\n\nvar Draggabilly = /*#__PURE__*/function (_EventEmitter) {\n _inherits(Draggabilly, _EventEmitter);\n\n var _super = _createSuper(Draggabilly);\n\n function Draggabilly(root) {\n var _this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Draggabilly);\n\n _this = _super.call(this);\n _this.isEnabled = true;\n _this.isDragging = false;\n _this.isDown = false;\n _this.position = {};\n _this.downPoint = {};\n _this.dragPoint = {\n x: 0,\n y: 0\n };\n _this.startPos = {\n x: 0,\n y: 0\n }; // eslint-disable-next-line no-undef\n\n _this._root = root instanceof Element ? root : document.querySelector(root); // eslint-disable-next-line no-undef\n\n _this._handlerDom = options.handle instanceof Element ? options.handle : document.querySelector(options.handle);\n\n if (!_this._root || !_this._handlerDom) {\n return _possibleConstructorReturn(_this);\n } // ['onDown', 'onUp', 'onMove', 'onCancel', 'onDocUp'].map(key => {\n // this[key] = this[key].bind(this)\n // })\n // if ('ontouchstart' in window) {\n // this._handlerKeys = TOUCH_HANDLERS\n // this._startKey = 'touchstart'\n // this._endKey = 'touchend'\n // } else {\n // this._handlerKeys = HANDLERS\n // this._startKey = 'mousedown'\n // this._endKey = 'mouseup'\n // }\n // this._handlerDom.addEventListener(this._startKey, this.onDown)\n\n\n _this._bindStartEvent();\n\n return _this;\n }\n\n _createClass(Draggabilly, [{\n key: \"_bindStartEvent\",\n value: function _bindStartEvent() {\n var _this2 = this;\n\n if ('ontouchstart' in window) {\n this._startKey = 'touchstart';\n } else {\n this._startKey = 'mousedown';\n }\n\n this[\"on\".concat(this._startKey)] = this[\"on\".concat(this._startKey)].bind(this);\n\n this._handlerDom.addEventListener(this._startKey, this[\"on\".concat(this._startKey)]);\n\n POST_START_EVENTS[this._startKey].map(function (key) {\n _this2[\"on\".concat(key)] = _this2[\"on\".concat(key)].bind(_this2);\n });\n }\n }, {\n key: \"_unbindStartEvent\",\n value: function _unbindStartEvent() {\n this._handlerDom.removeEventListener(this._startKey, this[\"on\".concat(this._startKey)]);\n }\n }, {\n key: \"_bindPostStartEvents\",\n value: function _bindPostStartEvents(event) {\n var _this3 = this;\n\n if (!event) {\n return;\n }\n\n var events = POST_START_EVENTS[this._startKey]; // bind events to node\n\n events.map(function (eventName) {\n window.addEventListener(eventName, _this3[\"on\".concat(eventName)]);\n }); // save these arguments\n\n this._boundPointerEvents = events;\n }\n }, {\n key: \"_unbindPostStartEvents\",\n value: function _unbindPostStartEvents() {\n var _this4 = this;\n\n if (!this._boundPointerEvents) {\n return;\n }\n\n this._boundPointerEvents.map(function (eventName) {\n // console.log('eventName', eventName, this[`on${eventName}`])\n window.removeEventListener(eventName, _this4[\"on\".concat(eventName)]);\n });\n\n delete this._boundPointerEvents;\n }\n }, {\n key: \"enable\",\n value: function enable() {\n this.isEnabled = true;\n }\n }, {\n key: \"disable\",\n value: function disable() {\n this.isEnabled = false;\n\n if (this.isDragging) {\n this.onUp();\n }\n }\n }, {\n key: \"onDocUp\",\n value: function onDocUp(e) {\n this.onUp();\n }\n }, {\n key: \"animate\",\n value: function animate() {\n var _this5 = this;\n\n // only render and animate if dragging\n if (!this.isDragging) {\n return;\n }\n\n this.positionDrag();\n window.requestAnimationFrame(function () {\n _this5.animate();\n });\n }\n }, {\n key: \"positionDrag\",\n value: function positionDrag() {\n // this._root.style.transform = 'translate3d( ' + this.dragPoint.x +\n // 'px, ' + this.dragPoint.y + 'px, 0)';\n var transform = \"translate3d(\".concat(this.dragPoint.x, \"px, \").concat(this.dragPoint.y, \"px, 0)\");\n this._root.style.transform = transform;\n this._root.style.webKitTransform = transform;\n }\n }, {\n key: \"setLeftTop\",\n value: function setLeftTop() {\n this._root.style.left = this.position.x + 'px';\n this._root.style.top = this.position.y + 'px';\n }\n }, {\n key: \"onmousedown\",\n value: function onmousedown(e) {\n this.dragStart(e, e);\n }\n }, {\n key: \"onmousemove\",\n value: function onmousemove(e) {\n this.dragMove(e, e);\n }\n }, {\n key: \"onmouseup\",\n value: function onmouseup(e) {\n this.dragEnd(e, e);\n }\n }, {\n key: \"ontouchstart\",\n value: function ontouchstart(e) {\n var touch = e.changedTouches[0];\n this.dragStart(e, touch);\n this.touchIdentifier = touch.pointerId !== undefined ? touch.pointerId : touch.identifier;\n e.preventDefault();\n }\n }, {\n key: \"ontouchmove\",\n value: function ontouchmove(e) {\n var touch = getTouch(e.changedTouches, this.touchIdentifier);\n\n if (touch) {\n this.dragMove(e, touch);\n }\n }\n }, {\n key: \"ontouchend\",\n value: function ontouchend(e) {\n var touch = getTouch(e.changedTouches, this.touchIdentifier);\n\n if (touch) {\n this.dragEnd(e, touch);\n }\n\n e.preventDefault();\n }\n }, {\n key: \"ontouchcancel\",\n value: function ontouchcancel(e) {\n var touch = getTouch(e.changedTouches, this.touchIdentifier);\n\n if (touch) {\n this.dragCancel(e, touch);\n }\n }\n }, {\n key: \"dragStart\",\n value: function dragStart(e, pointer) {\n if (!this._root || this.isDown || !this.isEnabled) {\n return;\n }\n\n this.downPoint = pointer;\n this.dragPoint.x = 0;\n this.dragPoint.y = 0;\n\n this._getPosition();\n\n var size = getSize(this._root);\n this.startPos.x = this.position.x;\n this.startPos.y = this.position.y;\n this.startPos.maxY = window.innerHeight - size.height;\n this.startPos.maxX = window.innerWidth - size.width;\n this.setLeftTop();\n this.isDown = true;\n\n this._bindPostStartEvents(e);\n }\n }, {\n key: \"dragRealStart\",\n value: function dragRealStart(e, pointer) {\n this.isDragging = true;\n this.animate();\n this.emit(EVENTS.START, this.startPos);\n }\n }, {\n key: \"dragEnd\",\n value: function dragEnd(e, pointer) {\n if (!this._root) {\n return;\n }\n\n this._unbindPostStartEvents();\n\n if (this.isDragging) {\n this._root.style.transform = '';\n this.setLeftTop();\n this.emit(EVENTS.ENDED);\n }\n\n this.presetInfo();\n }\n }, {\n key: \"_dragPointerMove\",\n value: function _dragPointerMove(e, pointer) {\n var moveVector = {\n x: pointer.pageX - this.downPoint.pageX,\n y: pointer.pageY - this.downPoint.pageY\n }; // 检测是否有移动\n\n if (!this.isDragging && this.hasDragStarted(moveVector)) {\n this.dragRealStart(e, pointer);\n }\n\n return moveVector;\n }\n }, {\n key: \"dragMove\",\n value: function dragMove(e, pointer) {\n e = e || window.event;\n\n if (!this.isDown) {\n return;\n }\n\n var _this$startPos = this.startPos,\n x = _this$startPos.x,\n y = _this$startPos.y;\n\n var moveVector = this._dragPointerMove(e, pointer);\n\n var dragX = moveVector.x;\n var dragY = moveVector.y;\n dragX = this.checkContain('x', dragX, x);\n dragY = this.checkContain('y', dragY, y);\n this.position.x = x + dragX;\n this.position.y = y + dragY;\n this.dragPoint.x = dragX;\n this.dragPoint.y = dragY;\n this.emit(EVENTS.MOVE, this.position);\n }\n }, {\n key: \"dragCancel\",\n value: function dragCancel(e, pointer) {\n this.dragEnd(e, pointer);\n }\n }, {\n key: \"presetInfo\",\n value: function presetInfo() {\n this.isDragging = false;\n this.startPos = {\n x: 0,\n y: 0\n };\n this.dragPoint = {\n x: 0,\n y: 0\n };\n this.isDown = false;\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this._unbindStartEvent();\n\n this._unbindPostStartEvents();\n\n if (this.isDragging) {\n this.dragEnd();\n }\n\n this.removeAllListeners();\n this._handlerDom = null;\n }\n }, {\n key: \"hasDragStarted\",\n value: function hasDragStarted(moveVector) {\n return Math.abs(moveVector.x) > 3 || Math.abs(moveVector.y) > 3;\n }\n }, {\n key: \"checkContain\",\n value: function checkContain(axis, drag, grid) {\n if (drag + grid < 0) {\n return 0 - grid;\n }\n\n if (axis === 'x' && drag + grid > this.startPos.maxX) {\n return this.startPos.maxX - grid;\n }\n\n if (axis === 'y' && drag + grid > this.startPos.maxY) {\n return this.startPos.maxY - grid;\n }\n\n return drag;\n }\n }, {\n key: \"_getPosition\",\n value: function _getPosition() {\n var style = window.getComputedStyle(this._root);\n\n var x = this._getPositionCoord(style.left, 'width');\n\n var y = this._getPositionCoord(style.top, 'height'); // clean up 'auto' or other non-integer values\n\n\n this.position.x = isNaN(x) ? 0 : x;\n this.position.y = isNaN(y) ? 0 : y;\n\n this._addTransformPosition(style);\n }\n }, {\n key: \"_addTransformPosition\",\n value: function _addTransformPosition(style) {\n var transform = style.transform; // bail out if value is 'none'\n\n if (transform.indexOf('matrix') !== 0) {\n return;\n } // split matrix(1, 0, 0, 1, x, y)\n\n\n var matrixValues = transform.split(','); // translate X value is in 12th or 4th position\n\n var xIndex = transform.indexOf('matrix3d') === 0 ? 12 : 4;\n var translateX = parseInt(matrixValues[xIndex], 10); // translate Y value is in 13th or 5th position\n\n var translateY = parseInt(matrixValues[xIndex + 1], 10);\n this.position.x += translateX;\n this.position.y += translateY;\n }\n }, {\n key: \"_getPositionCoord\",\n value: function _getPositionCoord(styleSide, measure) {\n if (styleSide.indexOf('%') !== -1) {\n // convert percent into pixel for Safari, #75\n var parentSize = getSize(this._root.parentNode); // prevent not-in-DOM element throwing bug, #131\n\n return !parentSize ? 0 : parseFloat(styleSide) / 100 * parentSize[measure];\n }\n\n return parseInt(styleSide, 10);\n }\n }]);\n\n return Draggabilly;\n}(EventEmitter);\n\nexport { Draggabilly as default };","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport Plugin, { Util, Events } from '../../plugin';\nvar PlayIcon = \"\";\nvar PauseIcon = \"\";\nimport MiniScreenIcon from './miniScreenIcon';\nimport Draggabilly from '../../utils/draggabilly';\n/**\n * @typedef {{\n * index?: number,\n * disable?: boolean,\n * width?: number,\n * height?: number,\n * left?: number, // 默认左下角\n * top?: number, // 默认左下角\n * isShowIcon?: boolean, // 是否显示icon\n * isScrollSwitch?: boolean, // 滚动自动切换自动切换\n * scrollTop?: number, // 触发滚动的高度\n * disableDrag?: boolean, // 禁用拖拽\n * [propName: string]: any\n * }} IMiniScreenConfig\n */\n\nvar MiniScreen = /*#__PURE__*/function (_Plugin) {\n _inherits(MiniScreen, _Plugin);\n\n var _super = _createSuper(MiniScreen);\n\n function MiniScreen(args) {\n var _this;\n\n _classCallCheck(this, MiniScreen);\n\n _this = _super.call(this, args);\n\n _defineProperty(_assertThisInitialized(_this), \"onCancelClick\", function (e) {\n // e.preventDefault()\n // e.stopPropagation()\n _this.exitMini();\n\n _this.isClose = true;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onCenterClick\", function (e) {\n var _assertThisInitialize = _assertThisInitialized(_this),\n player = _assertThisInitialize.player;\n\n player.paused ? player.play() : player.pause();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onScroll\", function (e) {\n if (!window.scrollY && window.scrollY !== 0 || Math.abs(window.scrollY - _this.pos.scrollY) < 50) {\n return;\n }\n\n var scrollHeight = parseInt(Util.getCss(_this.player.root, 'height'));\n scrollHeight += _this.config.scrollTop;\n _this.pos.scrollY = window.scrollY;\n\n if (window.scrollY > scrollHeight + 5) {\n !_this.isMini && !_this.isClose && _this.getMini();\n } else if (window.scrollY <= scrollHeight) {\n _this.isMini && _this.exitMini();\n _this.isClose = false;\n }\n });\n\n _this.isMini = false;\n _this.isClose = false;\n\n var _assertThisInitialize2 = _assertThisInitialized(_this),\n config = _assertThisInitialize2.config;\n\n _this.pos = {\n left: config.left < 0 ? window.innerWidth - config.width - 20 : config.left,\n top: config.top < 0 ? window.innerHeight - config.height - 20 : config.top,\n height: _this.config.height,\n width: _this.config.width,\n scrollY: window.scrollY || 0\n };\n _this.lastStyle = null;\n return _this;\n }\n\n _createClass(MiniScreen, [{\n key: \"beforeCreate\",\n value: function beforeCreate(args) {\n if (typeof args.player.config.mini === 'boolean') {\n args.config.isShowIcon = args.player.config.mini;\n }\n }\n }, {\n key: \"afterCreate\",\n value: function afterCreate() {\n var _this2 = this;\n\n this.initIcons();\n this.on(Events.PAUSE, function () {\n _this2.setAttr('data-state', 'pause');\n });\n this.on(Events.PLAY, function () {\n _this2.setAttr('data-state', 'play');\n });\n }\n }, {\n key: \"onPluginsReady\",\n value: function onPluginsReady() {\n var _this3 = this;\n\n var player = this.player,\n config = this.config;\n\n if (config.disable) {\n return;\n }\n\n if (this.config.isShowIcon) {\n var options = {\n config: {\n onClick: function onClick() {\n _this3.getMini();\n }\n }\n };\n player.controls.registerPlugin(MiniScreenIcon, options, MiniScreenIcon.pluginName);\n }\n\n var eventName = Util.checkTouchSupport() ? 'touchend' : 'click';\n this.bind('.mini-cancel-btn', eventName, this.onCancelClick);\n this.bind('.play-icon', eventName, this.onCenterClick);\n\n if (!this.config.disableDrag) {\n this._draggabilly = new Draggabilly(this.player.root, {\n handle: this.root\n });\n }\n\n if (this.config.isScrollSwitch) {\n window.addEventListener('scroll', this.onScroll);\n }\n }\n }, {\n key: \"registerIcons\",\n value: function registerIcons() {\n return {\n play: {\n icon: PlayIcon,\n class: 'xg-icon-play'\n },\n pause: {\n icon: PauseIcon,\n class: 'xg-icon-pause'\n }\n };\n }\n }, {\n key: \"initIcons\",\n value: function initIcons() {\n var icons = this.icons;\n this.appendChild('.play-icon', icons.play);\n this.appendChild('.play-icon', icons.pause);\n }\n }, {\n key: \"getMini\",\n value: function getMini() {\n var _this4 = this;\n\n if (this.isMini) {\n return;\n }\n\n var player = this.player,\n playerConfig = this.playerConfig;\n var target = this.config.target || this.player.root;\n this.lastStyle = {};\n Util.addClass(player.root, 'xgplayer-mini');\n ['width', 'height', 'top', 'left'].map(function (key) {\n _this4.lastStyle[key] = target.style[key];\n target.style[key] = \"\".concat(_this4.pos[key], \"px\");\n });\n\n if (playerConfig.fluid) {\n target.style['padding-top'] = '';\n }\n\n this.emit(Events.MINI_STATE_CHANGE, true);\n player.isMini = this.isMini = true;\n }\n }, {\n key: \"exitMini\",\n value: function exitMini() {\n var _this5 = this;\n\n if (!this.isMini) {\n return false;\n }\n\n var player = this.player,\n playerConfig = this.playerConfig;\n var target = this.config.target || this.player.root;\n Util.removeClass(player.root, 'xgplayer-mini');\n\n if (this.lastStyle) {\n Object.keys(this.lastStyle).map(function (key) {\n target.style[key] = _this5.lastStyle[key];\n });\n }\n\n this.lastStyle = null;\n\n if (playerConfig.fluid) {\n player.root.style.width = '100%';\n player.root.style.height = '0';\n player.root.style['padding-top'] = \"\".concat(playerConfig.height * 100 / playerConfig.width, \"%\");\n }\n\n this.emit(Events.MINI_STATE_CHANGE, false);\n this.isMini = player.isMini = false;\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n window.removeEventListener('scroll', this.onScroll);\n var eventName = Util.checkTouchSupport() ? 'touchend' : 'click';\n this.unbind('.mini-cancel-btn', eventName, this.onCancelClick);\n this.unbind('.play-icon', eventName, this.onCenterClick);\n this._draggabilly && this._draggabilly.destroy();\n this._draggabilly = null;\n this.exitMini();\n }\n }, {\n key: \"render\",\n value: function render() {\n if (this.config.disable) {\n return;\n }\n\n return \"\\n \\n \\n
\").concat(this.i18n.MINI_DRAG, \"
\\n
\\n
\\n \\n \\n \\n
\\n
\\n
\\n
\");\n }\n }], [{\n key: \"pluginName\",\n get: function get() {\n return 'miniscreen';\n }\n /**\n * @type IMiniScreenConfig\n */\n\n }, {\n key: \"defaultConfig\",\n get: function get() {\n return {\n index: 10,\n disable: false,\n width: 320,\n height: 180,\n left: -1,\n // 默认左下角\n top: -1,\n // 默认左下角\n isShowIcon: false,\n // 是否显示icon\n isScrollSwitch: false,\n // 滚动自动切换自动切换\n scrollTop: 0,\n // 触发滚动的高度\n disableDrag: false // 禁用拖拽\n\n };\n }\n }]);\n\n return MiniScreen;\n}(Plugin);\n\nexport { MiniScreen as default, MiniScreenIcon };","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { BasePlugin, Sniffer } from '../../plugin';\nimport { runHooks } from '../../plugin/hooksDescriptor';\nvar MOUSE_EVENTS = {\n mouseenter: 'onMouseEnter',\n mouseleave: 'onMouseLeave',\n mousemove: 'onMouseMove'\n};\nvar HOOKS = ['videoClick', 'videoDbClick'];\n\nvar PCPlugin = /*#__PURE__*/function (_BasePlugin) {\n _inherits(PCPlugin, _BasePlugin);\n\n var _super = _createSuper(PCPlugin);\n\n function PCPlugin() {\n var _this;\n\n _classCallCheck(this, PCPlugin);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"onMouseMove\", function (e) {\n var _assertThisInitialize = _assertThisInitialized(_this),\n player = _assertThisInitialize.player,\n playerConfig = _assertThisInitialize.playerConfig;\n\n if (!player.isActive) {\n player.focus({\n autoHide: !playerConfig.closeDelayBlur\n });\n !playerConfig.closeFocusVideoFocus && player.video.focus();\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onMouseEnter\", function (e) {\n var _assertThisInitialize2 = _assertThisInitialized(_this),\n playerConfig = _assertThisInitialize2.playerConfig,\n player = _assertThisInitialize2.player;\n\n !playerConfig.closeFocusVideoFocus && player.video.focus();\n\n if (playerConfig.closeDelayBlur) {\n player.focus({\n autoHide: false\n });\n } else {\n player.focus();\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onMouseLeave\", function (e) {\n var _this$playerConfig = _this.playerConfig,\n closePlayerBlur = _this$playerConfig.closePlayerBlur,\n leavePlayerTime = _this$playerConfig.leavePlayerTime;\n\n if (!closePlayerBlur) {\n if (leavePlayerTime) {\n _this.player.focus({\n autoHide: true,\n delay: leavePlayerTime\n });\n } else {\n _this.player.blur();\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onVideoClick\", function (e) {\n var _assertThisInitialize3 = _assertThisInitialized(_this),\n player = _assertThisInitialize3.player,\n playerConfig = _assertThisInitialize3.playerConfig;\n\n if (e.target && playerConfig.closeVideoClick) {\n return;\n }\n\n if (e.target === player.video || e.target === player.innerContainer || e.target === player.video.__canvas) {\n e.preventDefault();\n\n if (!playerConfig.closeVideoStopPropagation) {\n e.stopPropagation();\n }\n\n _this._clickCount++;\n\n if (_this.clickTimer) {\n clearTimeout(_this.clickTimer);\n _this.clickTimer = null;\n }\n\n _this.clickTimer = setTimeout(function () {\n if (!_this._clickCount) {\n return;\n }\n\n _this._clickCount--;\n runHooks(_assertThisInitialized(_this), HOOKS[0], function (plugin, data) {\n _this.switchPlayPause(data.e);\n }, {\n e: e,\n paused: player.paused\n });\n clearTimeout(_this.clickTimer);\n _this.clickTimer = null;\n }, 300);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onVideoDblClick\", function (e) {\n var _assertThisInitialize4 = _assertThisInitialized(_this),\n player = _assertThisInitialize4.player,\n playerConfig = _assertThisInitialize4.playerConfig;\n\n if (!e.target || e.target !== player.video && e.target !== player.video.__canvas || playerConfig.closeVideoDblclick) {\n return;\n }\n\n if (_this._clickCount < 2) {\n _this._clickCount = 0;\n return;\n }\n\n _this._clickCount = 0;\n\n if (_this.clickTimer) {\n clearTimeout(_this.clickTimer);\n _this.clickTimer = null;\n }\n\n e.preventDefault();\n e.stopPropagation();\n runHooks(_assertThisInitialized(_this), HOOKS[1], function (plugin, data) {\n _this.emitUserAction(data.e, 'switch_fullscreen', {\n fullscreen: player.fullscreen\n });\n\n player.fullscreen ? player.exitFullscreen() : player.getFullscreen();\n }, {\n e: e,\n fullscreen: player.fullscreen\n });\n });\n\n return _this;\n }\n\n _createClass(PCPlugin, [{\n key: \"afterCreate\",\n value: function afterCreate() {\n var _this2 = this;\n\n this._clickCount = 0;\n HOOKS.map(function (item) {\n _this2.__hooks[item] = null;\n });\n var _this$playerConfig2 = this.playerConfig,\n enableContextmenu = _this$playerConfig2.enableContextmenu,\n isMobileSimulateMode = _this$playerConfig2.isMobileSimulateMode;\n\n if (isMobileSimulateMode || Sniffer.device === 'mobile' && !Sniffer.os.isIpad) {\n return;\n }\n\n this.config.disableContextmenu = !enableContextmenu;\n this.initEvents();\n }\n }, {\n key: \"initEvents\",\n value: function initEvents() {\n var _this3 = this;\n\n var _this$player = this.player,\n video = _this$player.video,\n root = _this$player.root;\n video.addEventListener('click', this.onVideoClick, false);\n video.addEventListener('dblclick', this.onVideoDblClick, false);\n Object.keys(MOUSE_EVENTS).map(function (item) {\n root.addEventListener(item, _this3[MOUSE_EVENTS[item]], false);\n });\n this.config.disableContextmenu && video.addEventListener('contextmenu', this.onContextmenu, false);\n }\n }, {\n key: \"switchPlayPause\",\n value: function switchPlayPause(e) {\n var player = this.player;\n this.emitUserAction(e, 'switch_play_pause');\n\n if (!player.ended) {\n player.paused ? player.play() : player.pause();\n } else {\n player.duration !== Infinity && player.duration > 0 && player.replay();\n }\n }\n }, {\n key: \"onContextmenu\",\n value: function onContextmenu(e) {\n e = e || window.event;\n\n if (e.preventDefault) {\n e.preventDefault();\n }\n\n if (e.stopPropagation) {\n e.stopPropagation();\n } else {\n e.returnValue = false; // 解决IE8右键弹出\n\n e.cancelBubble = true;\n }\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n var _this4 = this;\n\n var _this$player2 = this.player,\n video = _this$player2.video,\n root = _this$player2.root;\n this.clickTimer && clearTimeout(this.clickTimer);\n root.removeEventListener('click', this.onVideoClick, false);\n video.removeEventListener('dblclick', this.onVideoDblClick, false);\n video.removeEventListener('contextmenu', this.onContextmenu, false);\n Object.keys(MOUSE_EVENTS).map(function (item) {\n root.removeEventListener(item, _this4[MOUSE_EVENTS[item]], false);\n });\n }\n }], [{\n key: \"pluginName\",\n get: function get() {\n return 'pc';\n }\n }, {\n key: \"defaultConfig\",\n get: function get() {\n return {\n disableContextmenu: true\n };\n }\n }]);\n\n return PCPlugin;\n}(BasePlugin);\n\nexport { PCPlugin as default };","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar EVENTS = {\n PRESS: 'press',\n PRESS_END: 'pressend',\n DOUBlE_CLICK: 'doubleclick',\n CLICK: 'click',\n TOUCH_MOVE: 'touchmove',\n TOUCH_START: 'touchstart',\n TOUCH_END: 'touchend'\n};\nvar TOUCHS = {\n start: 'touchstart',\n end: 'touchend',\n move: 'touchmove',\n cancel: 'touchcancel'\n};\nvar MOUSES = {\n start: 'mousedown',\n end: 'mouseup',\n move: 'mousemove',\n cancel: 'mouseleave'\n};\n\nfunction getTouch(touches) {\n if (touches && touches.length > 0) {\n return touches[touches.length - 1];\n } else {\n return null;\n }\n}\n\nfunction preventToucheDefault(e) {\n var ua = navigator.userAgent;\n /(?:iPhone|iPad)/.test(ua) && e.cancelable && e.preventDefault();\n}\n\nfunction getDefaultConfig() {\n return {\n pressDelay: 600,\n dbClickDelay: 200,\n disablePress: false,\n disableDbClick: false,\n miniStep: 2,\n needPreventDefault: true\n };\n}\n\nvar Touche = /*#__PURE__*/function () {\n function Touche(dom) {\n var _this = this;\n\n var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n eventType: 'touch'\n };\n\n _classCallCheck(this, Touche);\n\n this._pos = {\n moving: false,\n start: false,\n x: 0,\n y: 0\n };\n this.config = getDefaultConfig();\n Object.keys(config).map(function (key) {\n _this.config[key] = config[key];\n });\n this.root = dom;\n this.events = config.eventType === 'mouse' ? MOUSES : TOUCHS;\n this.pressIntrvalId = null;\n this.dbIntrvalId = null;\n this.__handlers = {};\n\n this._initEvent();\n }\n\n _createClass(Touche, [{\n key: \"_initEvent\",\n value: function _initEvent() {\n this.onTouchStart = this.onTouchStart.bind(this);\n this.onTouchMove = this.onTouchMove.bind(this);\n this.onTouchEnd = this.onTouchEnd.bind(this);\n this.onTouchCancel = this.onTouchCancel.bind(this);\n this.root.addEventListener(this.events.start, this.onTouchStart);\n }\n }, {\n key: \"__setPress\",\n value: function __setPress(e) {\n var _this2 = this;\n\n var config = this.config;\n\n if (this.pressIntrvalId) {\n this.__clearPress();\n }\n\n this.pressIntrvalId = setTimeout(function () {\n _this2.trigger(EVENTS.PRESS, e);\n\n _this2._pos.press = true;\n\n _this2.__clearPress();\n }, config.pressDelay);\n }\n }, {\n key: \"__clearPress\",\n value: function __clearPress() {\n window.clearTimeout(this.pressIntrvalId);\n this.pressIntrvalId = null;\n }\n }, {\n key: \"__setDb\",\n value: function __setDb(e) {\n var _this3 = this;\n\n var config = this.config;\n\n if (this.dbIntrvalId) {\n this.__clearDb();\n\n this.trigger(EVENTS.DOUBlE_CLICK, e);\n return;\n }\n\n this.dbIntrvalId = setTimeout(function () {\n _this3.__clearDb();\n\n if (!_this3._pos.start && !_this3._pos.press && !_this3._pos.moving) {\n _this3.trigger(EVENTS.CLICK, e);\n }\n }, config.dbClickDelay);\n }\n }, {\n key: \"__clearDb\",\n value: function __clearDb() {\n clearTimeout(this.dbIntrvalId);\n this.dbIntrvalId = null;\n }\n }, {\n key: \"on\",\n value: function on(event, handler) {\n if (!this.__handlers[event]) {\n this.__handlers[event] = [];\n }\n\n this.__handlers[event].push(handler);\n }\n }, {\n key: \"off\",\n value: function off(event, handler) {\n if (!this.__handlers[event]) {\n return;\n }\n\n var handlers = this.__handlers[event];\n var index = -1;\n\n for (var i = 0; i < handlers.length; i++) {\n if (handlers[i] === handler) {\n index = i;\n break;\n }\n }\n\n if (index >= 0) {\n this.__handlers[event].splice(index, 1);\n }\n }\n }, {\n key: \"trigger\",\n value: function trigger(event, e) {\n if (!this.__handlers[event]) {\n return;\n }\n\n this.__handlers[event].map(function (handler) {\n try {\n handler(e);\n } catch (error) {\n console.error(\"trigger>>:\".concat(event), error);\n }\n });\n }\n }, {\n key: \"onTouchStart\",\n value: function onTouchStart(e) {\n var _pos = this._pos,\n root = this.root,\n config = this.config;\n config.needPreventDefault && preventToucheDefault(e);\n var touch = getTouch(e.touches);\n _pos.x = touch ? parseInt(touch.pageX, 10) : e.pageX;\n _pos.y = touch ? parseInt(touch.pageX, 10) : e.pageX;\n _pos.start = true;\n\n this.__setPress(e);\n\n root.addEventListener(this.events.end, this.onTouchEnd);\n root.addEventListener(this.events.cancel, this.onTouchCancel);\n root.addEventListener(this.events.move, this.onTouchMove);\n this.trigger(EVENTS.TOUCH_START, e);\n }\n }, {\n key: \"onTouchCancel\",\n value: function onTouchCancel(e) {\n this.onTouchEnd(e);\n }\n }, {\n key: \"onTouchEnd\",\n value: function onTouchEnd(e) {\n var _pos = this._pos,\n root = this.root,\n config = this.config;\n config.needPreventDefault && preventToucheDefault(e);\n\n this.__clearPress();\n\n root.removeEventListener(this.events.cancel, this.onTouchCancel);\n root.removeEventListener(this.events.end, this.onTouchEnd);\n root.removeEventListener(this.events.move, this.onTouchMove);\n e.moving = _pos.moving;\n e.press = _pos.press;\n _pos.press && this.trigger(EVENTS.PRESS_END, e);\n this.trigger(EVENTS.TOUCH_END, e);\n !_pos.press && !_pos.moving && this.__setDb(e);\n _pos.press = false;\n _pos.start = false;\n _pos.moving = false;\n }\n }, {\n key: \"onTouchMove\",\n value: function onTouchMove(e) {\n var _pos = this._pos,\n config = this.config;\n var touch = getTouch(e.touches);\n var x = touch ? parseInt(touch.pageX, 10) : e.pageX;\n var y = touch ? parseInt(touch.pageY, 10) : e.pageX;\n var diffx = x - _pos.x;\n var diffy = y - _pos.y;\n\n if (Math.abs(diffy) < config.miniStep && Math.abs(diffx) < config.miniStep) {\n return;\n }\n\n this.__clearPress();\n\n _pos.press && this.trigger(EVENTS.PRESS_END, e);\n _pos.press = false;\n _pos.moving = true;\n this.trigger(EVENTS.TOUCH_MOVE, e);\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n var _this4 = this;\n\n var map = {\n touchend: 'onTouchEnd',\n touchmove: 'onTouchMove',\n touchstart: 'onTouchStart'\n };\n Object.keys(map).map(function (key) {\n _this4.root.removeEventListener('touchend', _this4[map[key]]);\n });\n }\n }]);\n\n return Touche;\n}();\n\nexport default Touche;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport Plugin, { Events, Util, Sniffer } from '../../plugin';\nimport Touche from './touch';\nvar SeekTipIcon = \"\"; // import BackSvg from './back.svg'\n\n/**\n * @typedef {{\n * index?: number,\n * stopPropagation?: boolean, // 是否阻止冒泡\n * disableGesture?: boolean, // 是否禁用手势\n * gestureX?: boolean, // 是否启用水平手势\n * gestureY?: boolean, // 是否启用垂直手势\n * updateGesture?: () => any, // 手势处理回调\n * onTouchStart?: () => any, // 手势开始移动回调\n * onTouchEnd?: () => any, // 手势移动结束回调\n * gradient?: 'normal' | 'none' | 'top' | 'bottom', // 是否启用阴影\n * isTouchingSeek?: boolean, // 是否在touchMove的同时更新currentTime\n * miniMoveStep?: number, // 最小差异,用于move节流\n * miniYPer?: number, // y方向最小位移百分比\n * scopeL?: number, // 左侧手势范围比例\n * scopeR?: number, // 右侧手势范围比例scopeM: 0.9, // 中间手势范围比例\n * pressRate?: number, // 长按快进倍速\n * darkness?: boolean, // 是否启用右侧调暗功能\n * maxDarkness?: number, // 调暗最大暗度,即蒙层最大透明度\n * disableActive?: boolean, // 是否禁用时间面板\n * disableTimeProgress?: boolean, // 是否禁用时间进度条\n * hideControlsActive?: boolean, // 手势拖动的时候是否隐控制栏\n * hideControlsEnd?: boolean, // 手势结束的时候隐控制栏\n * moveDuration?: number, // 视频区对应的时长\n * closedbClick?: boolean, // 是否关闭双击手势\n * disablePress?: boolean, // 是否关闭长按手势\n * disableSeekIcon?: boolean,\n * [propName: string]: any\n * }} IMobileConfig\n */\n\nvar ACTIONS = {\n AUTO: 'auto',\n SEEKING: 'seeking',\n PLAYBACK: 'playbackrate',\n LIGHT: ''\n};\n\nvar MobilePlugin = /*#__PURE__*/function (_Plugin) {\n _inherits(MobilePlugin, _Plugin);\n\n var _super = _createSuper(MobilePlugin);\n\n function MobilePlugin(options) {\n var _this;\n\n _classCallCheck(this, MobilePlugin);\n\n _this = _super.call(this, options);\n /**\n * @readonly\n */\n\n _defineProperty(_assertThisInitialized(_this), \"onTouchStart\", function (e) {\n var _assertThisInitialize = _assertThisInitialized(_this),\n player = _assertThisInitialize.player,\n config = _assertThisInitialize.config,\n pos = _assertThisInitialize.pos,\n playerConfig = _assertThisInitialize.playerConfig;\n\n var touche = _this.getTouche(e);\n\n if (touche && !config.disableGesture && _this.duration > 0 && !player.ended) {\n pos.isStart = true; // e.cancelable && e.preventDefault()\n\n Util.checkIsFunction(playerConfig.disableSwipeHandler) && playerConfig.disableSwipeHandler();\n _this.find('.xg-dur').innerHTML = Util.format(_this.duration); // pos.volume = player.volume * 100\n\n var rect = _this.root.getBoundingClientRect();\n\n if (player.rotateDeg === 90) {\n pos.top = rect.left;\n pos.left = rect.top;\n pos.width = rect.height;\n pos.height = rect.width;\n } else {\n pos.top = rect.top;\n pos.left = rect.left;\n pos.width = rect.width;\n pos.height = rect.height;\n }\n\n var _x = parseInt(touche.pageX - pos.left, 10);\n\n var _y = parseInt(touche.pageY - pos.top, 10);\n\n pos.x = player.rotateDeg === 90 ? _y : _x; // parseInt(touche.pageX - pos.left, 10)\n\n pos.y = player.rotateDeg === 90 ? _x : _y; // parseInt(touche.pageY - pos.top, 10)\n\n pos.scopeL = config.scopeL * pos.width;\n pos.scopeR = (1 - config.scopeR) * pos.width;\n pos.scopeM1 = pos.width * (1 - config.scopeM) / 2;\n pos.scopeM2 = pos.width - pos.scopeM1;\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onTouchMove\", function (e) {\n var touche = _this.getTouche(e);\n\n var _assertThisInitialize2 = _assertThisInitialized(_this),\n pos = _assertThisInitialize2.pos,\n config = _assertThisInitialize2.config,\n player = _assertThisInitialize2.player;\n\n if (!touche || config.disableGesture || !_this.duration || !pos.isStart) {\n return;\n }\n\n var miniMoveStep = config.miniMoveStep,\n hideControlsActive = config.hideControlsActive;\n\n var _x = parseInt(touche.pageX - pos.left, 10);\n\n var _y = parseInt(touche.pageY - pos.top, 10);\n\n var x = player.rotateDeg === 90 ? _y : _x;\n var y = player.rotateDeg === 90 ? _x : _y;\n\n if (Math.abs(x - pos.x) > miniMoveStep || Math.abs(y - pos.y) > miniMoveStep) {\n var diffx = x - pos.x;\n var diffy = y - pos.y;\n var scope = pos.scope;\n\n if (scope === -1) {\n scope = _this.checkScope(x, y, diffx, diffy, pos); // 手势为快进快退记录起始操作时间\n\n if (scope === 0) {\n !hideControlsActive ? player.focus({\n autoHide: false\n }) : player.blur();\n !pos.time && (pos.time = parseInt(player.currentTime * 1000, 10) + _this.timeOffset * 1000);\n }\n\n pos.scope = scope;\n }\n\n if (scope === -1 || scope > 0 && !config.gestureY || scope === 0 && !config.gestureX) {\n return;\n }\n\n e.cancelable && e.preventDefault();\n\n _this.executeMove(diffx, diffy, scope, pos.width, pos.height);\n\n pos.x = x;\n pos.y = y;\n } else {// console.log('touche.pageX - pos.x', touche.pageX - pos.x)\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onTouchEnd\", function (e) {\n var _assertThisInitialize3 = _assertThisInitialized(_this),\n player = _assertThisInitialize3.player,\n pos = _assertThisInitialize3.pos,\n playerConfig = _assertThisInitialize3.playerConfig;\n\n if (!pos.isStart) {\n return;\n }\n\n if (pos.scope > -1) {\n e.cancelable && e.preventDefault();\n }\n\n _this.endLastMove(pos.scope);\n\n setTimeout(function () {\n player.getPlugin('progress') && player.getPlugin('progress').resetSeekState();\n }, 10);\n pos.scope = -1;\n\n _this.resetPos();\n\n Util.checkIsFunction(playerConfig.enableSwipeHandler) && playerConfig.enableSwipeHandler();\n\n _this.changeAction(ACTIONS.AUTO);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onRootTouchMove\", function (e) {\n if (_this.config.disableGesture || !_this.config.gestureX) {\n return;\n }\n\n if (_this.checkIsRootTarget(e)) {\n e.stopPropagation();\n\n if (!_this.pos.isStart) {\n _this.onTouchStart(e);\n } else {\n _this.onTouchMove(e);\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onRootTouchEnd\", function (e) {\n if (_this.pos.isStart && _this.checkIsRootTarget(e)) {\n e.stopPropagation();\n\n _this.onTouchEnd(e);\n\n var controls = _this.player.controls;\n controls && controls.recoverAutoHide();\n }\n });\n\n _this.pos = {\n isStart: false,\n x: 0,\n y: 0,\n time: 0,\n volume: 0,\n rate: 1,\n light: 0,\n width: 0,\n height: 0,\n scopeL: 0,\n scopeR: 0,\n scopeM1: 0,\n scopeM2: 0,\n scope: -1\n };\n /**\n * @private\n */\n\n _this.timer = null;\n return _this;\n }\n\n _createClass(MobilePlugin, [{\n key: \"duration\",\n get: function get() {\n return this.playerConfig.customDuration || this.player.duration;\n }\n }, {\n key: \"timeOffset\",\n get: function get() {\n return this.playerConfig.timeOffset || 0;\n }\n /**\n * @private\n * @returns {[propName: string]: any}\n */\n\n }, {\n key: \"registerIcons\",\n value: function registerIcons() {\n return {\n seekTipIcon: {\n icon: SeekTipIcon,\n class: 'xg-seek-pre'\n }\n };\n }\n }, {\n key: \"afterCreate\",\n value: function afterCreate() {\n var _this2 = this;\n\n var playerConfig = this.playerConfig,\n config = this.config,\n player = this.player;\n\n if (playerConfig.closeVideoDblclick === true) {\n config.closedbClick = true;\n }\n\n this.resetPos();\n\n if (!Util.isUndefined(playerConfig.disableGesture)) {\n config.disableGesture = !!playerConfig.disableGesture;\n }\n\n this.appendChild('.xg-seek-icon', this.icons.seekTipIcon);\n this.xgMask = Util.createDom('xg-mask', '', {}, 'xgmask');\n player.root.appendChild(this.xgMask);\n this.initCustomStyle();\n this.registerThumbnail();\n var eventType = Sniffer.device !== 'mobile' ? 'mouse' : 'touch';\n this.touch = new Touche(this.root, {\n eventType: eventType,\n needPreventDefault: !this.config.disableGesture\n });\n this.root.addEventListener('contextmenu', function (e) {\n e.preventDefault();\n });\n player.root.addEventListener('touchmove', this.onRootTouchMove, true);\n player.root.addEventListener('touchend', this.onRootTouchEnd, true);\n this.on(Events.DURATION_CHANGE, function () {\n var player = _this2.player,\n config = _this2.config;\n\n if (player.duration * 1000 < config.moveDuration) {\n config.moveDuration = player.duration * 1000;\n }\n });\n this.on([Events.CANPLAY, Events.ENDED], function () {\n var _this2$pos = _this2.pos,\n time = _this2$pos.time,\n isStart = _this2$pos.isStart;\n\n if (!isStart && time > 0) {\n _this2.pos.time = 0;\n }\n });\n var eventsMap = {\n touchstart: 'onTouchStart',\n touchmove: 'onTouchMove',\n touchend: 'onTouchEnd',\n press: 'onPress',\n pressend: 'onPressEnd',\n click: 'onClick',\n doubleclick: 'onDbClick'\n };\n Object.keys(eventsMap).map(function (key) {\n _this2.touch.on(key, function (e) {\n _this2[eventsMap[key]](e);\n });\n });\n\n if (!config.disableActive) {\n // 添加进度条拖拽事件回调\n var progressPlugin = player.plugins.progress;\n\n if (progressPlugin) {\n progressPlugin.addCallBack('dragmove', function (data) {\n _this2.activeSeekNote(data.currentTime, data.forward);\n });\n progressPlugin.addCallBack('dragend', function () {\n _this2.changeAction(ACTIONS.AUTO);\n });\n }\n }\n }\n }, {\n key: \"registerThumbnail\",\n value: function registerThumbnail() {\n var player = this.player;\n var thumbnail = player.plugins.thumbnail;\n\n if (thumbnail && thumbnail.usable) {\n this.thumbnail = thumbnail.createThumbnail(null, 'mobile-thumbnail');\n var timePreview = this.find('.time-preview');\n timePreview.insertBefore(this.thumbnail, timePreview.children[0]);\n }\n }\n }, {\n key: \"initCustomStyle\",\n value: function initCustomStyle() {\n var _ref = this.playerConfig || {},\n commonStyle = _ref.commonStyle;\n\n var playedColor = commonStyle.playedColor,\n progressColor = commonStyle.progressColor;\n\n if (playedColor) {\n this.find('.xg-curbar').style.backgroundColor = playedColor;\n this.find('.xg-cur').style.color = playedColor;\n }\n\n if (progressColor) {\n this.find('.xg-bar').style.backgroundColor = progressColor;\n this.find('.time-preview').style.color = progressColor;\n }\n\n this.config.disableTimeProgress && Util.addClass(this.find('.xg-timebar'), 'hide');\n }\n }, {\n key: \"resetPos\",\n value: function resetPos() {\n var _this3 = this;\n\n var time = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n if (this.pos) {\n this.pos.isStart = false;\n this.pos.scope = -1;\n ['x', 'y', 'width', 'height', 'scopeL', 'scopeR', 'scopeM1', 'scopeM2'].map(function (item) {\n _this3.pos[item] = 0;\n });\n } else {\n this.pos = {\n isStart: false,\n x: 0,\n y: 0,\n volume: 0,\n rate: 1,\n light: 0,\n width: 0,\n height: 0,\n scopeL: 0,\n scopeR: 0,\n scopeM1: 0,\n scopeM2: 0,\n scope: -1,\n time: 0\n };\n }\n }\n }, {\n key: \"changeAction\",\n value: function changeAction(action) {\n var player = this.player,\n root = this.root;\n root.setAttribute('data-xg-action', action);\n var startPlugin = player.plugins.start;\n startPlugin && startPlugin.recover();\n }\n }, {\n key: \"getTouche\",\n value: function getTouche(e) {\n var rotateDeg = this.player.rotateDeg;\n var touche = e.touches && e.touches.length > 0 ? e.touches[e.touches.length - 1] : e; // if (touches && touches.length > 0) {\n // const touche = touches[touches.length - 1]\n // if (rotateDeg === 0) {\n // return {\n // pageX: touche.pageX,\n // pageY: touche.pageY\n // }\n // } else {\n // return {\n // pageX: touche.pageY,\n // pageY: touche.pageX\n // }\n // }\n // } else {\n // }\n\n return rotateDeg === 0 ? {\n pageX: touche.pageX,\n pageY: touche.pageY\n } : {\n pageX: touche.pageX,\n pageY: touche.pageY\n };\n }\n /**\n * 校验具体的操作范围\n * @param { number } x 方向位移\n * @param { number } y 方向位移\n * @param { number } diffx 方向位移差\n * @param { number } diffy 方向位移差\n * @param { any } pos 当前操作区域位置信息 包含{width, height}\n * @return { number } scope 区域 0=>中间x方向滑动 1=>左侧上下滑动 2=>右侧上下滑动\n */\n\n }, {\n key: \"checkScope\",\n value: function checkScope(x, y, diffx, diffy, pos) {\n var width = pos.width;\n var scope = -1;\n\n if (x < 0 || x > width) {\n return scope;\n }\n\n var mold = diffy === 0 ? Math.abs(diffx) : Math.abs(diffx / diffy);\n\n if (Math.abs(diffx) > 0 && mold >= 1.73 && x > pos.scopeM1 && x < pos.scopeM2) {\n scope = 0;\n } else if (Math.abs(diffx) === 0 || mold <= 0.57) {\n scope = x < pos.scopeL ? 1 : x > pos.scopeR ? 2 : 3;\n }\n\n return scope;\n }\n /**\n * 根据位移和操作类型进行对应处理\n * @param {number} diffx x方向位移差\n * @param {number} diffy y方向位移差\n * @param {number} scope scope 区域 0=>中间x方向滑动 1=>左侧上下滑动 2=>右侧上下滑动\n * @param {number} width 总体宽度\n * @param {number} height 总高度\n */\n\n }, {\n key: \"executeMove\",\n value: function executeMove(diffx, diffy, scope, width, height) {\n switch (scope) {\n case 0:\n this.updateTime(diffx / width * this.config.scopeM);\n break;\n\n case 1:\n this.updateBrightness(diffy / height);\n break;\n\n case 2:\n // ios系统不支持音量调节\n if (!Sniffer.os.isIos) {\n this.updateVolume(diffy / height);\n }\n\n break;\n\n default:\n }\n }\n /**\n * 结束手势操作\n * @param {number} scope 当前手势类型 区域 0=>中间x方向滑动 1=>左侧上下滑动 2=>右侧上下滑动\n * @param {number} lastScope 上一次手势类型\n */\n\n }, {\n key: \"endLastMove\",\n value: function endLastMove(lastScope) {\n var _this4 = this;\n\n var pos = this.pos,\n player = this.player,\n config = this.config;\n var time = (pos.time - this.timeOffset) / 1000;\n\n switch (lastScope) {\n case 0:\n player.seek(Number(time).toFixed(1));\n config.hideControlsEnd ? player.blur() : player.focus();\n this.timer = setTimeout(function () {\n _this4.pos.time = 0;\n }, 500);\n break;\n\n case 1:\n case 2:\n default:\n }\n\n this.changeAction(ACTIONS.AUTO);\n }\n }, {\n key: \"checkIsRootTarget\",\n value: function checkIsRootTarget(e) {\n var plugins = this.player.plugins || {};\n\n if (plugins.progress && plugins.progress.root.contains(e.target)) {\n return false;\n }\n\n return plugins.start && plugins.start.root.contains(e.target) || plugins.controls && plugins.controls.root.contains(e.target);\n }\n }, {\n key: \"onClick\",\n value: function onClick(e) {\n var player = this.player,\n config = this.config,\n playerConfig = this.playerConfig;\n\n if (!player.isPlaying) {\n if (!playerConfig.closeVideoClick) {\n this.emitUserAction('click', 'switch_play_pause');\n player.play();\n }\n\n return;\n }\n\n if (!config.closedbClick || playerConfig.closeVideoClick) {\n player.isActive ? player.blur() : player.focus();\n } else if (!playerConfig.closeVideoClick) {\n if (player.isActive || config.focusVideoClick) {\n this.emitUserAction('click', 'switch_play_pause');\n this.switchPlayPause();\n }\n\n player.focus();\n }\n }\n }, {\n key: \"onDbClick\",\n value: function onDbClick(e) {\n var config = this.config,\n player = this.player;\n\n if (!config.closedbClick && player.isPlaying) {\n this.emitUserAction('dblclick', 'switch_play_pause');\n this.switchPlayPause();\n }\n }\n }, {\n key: \"onPress\",\n value: function onPress(e) {\n var pos = this.pos,\n config = this.config,\n player = this.player;\n\n if (config.disablePress) {\n return;\n }\n\n pos.rate = this.player.playbackRate;\n this.emitUserAction('press', 'change_rate', {\n from: player.playbackRate,\n to: config.pressRate\n });\n player.playbackRate = config.pressRate;\n this.changeAction(ACTIONS.PLAYBACK);\n }\n }, {\n key: \"onPressEnd\",\n value: function onPressEnd(e) {\n var pos = this.pos,\n config = this.config,\n player = this.player;\n\n if (config.disablePress) {\n return;\n }\n\n this.emitUserAction('pressend', 'change_rate', {\n from: player.playbackRate,\n to: pos.rate\n });\n player.playbackRate = pos.rate;\n pos.rate = 1;\n this.changeAction(ACTIONS.AUTO);\n }\n }, {\n key: \"updateTime\",\n value: function updateTime(percent) {\n var player = this.player,\n config = this.config;\n var duration = this.player.duration;\n percent = Number(percent.toFixed(4));\n var time = parseInt(percent * config.moveDuration, 10) + this.timeOffset;\n time += this.pos.time;\n time = time < 0 ? 0 : time > duration * 1000 ? duration * 1000 - 200 : time;\n player.getPlugin('time') && player.getPlugin('time').updateTime(time / 1000);\n player.getPlugin('progress') && player.getPlugin('progress').updatePercent(time / 1000 / this.duration, true);\n this.activeSeekNote(time / 1000, percent > 0); // 在滑动的同时实时seek\n\n if (config.isTouchingSeek) {\n // player.currentTime = time / 1000\n player.seek(Number((time - this.timeOffset) / 1000).toFixed(1));\n }\n\n this.pos.time = time;\n }\n }, {\n key: \"updateVolume\",\n value: function updateVolume(percent) {\n if (this.player.rotateDeg) {\n percent = -percent;\n }\n\n var player = this.player,\n pos = this.pos;\n percent = parseInt(percent * 100, 10);\n pos.volume += percent;\n\n if (Math.abs(pos.volume) < 10) {\n return;\n }\n\n var volume = parseInt(player.volume * 10, 10) - parseInt(pos.volume / 10, 10);\n volume = volume > 10 ? 10 : volume < 1 ? 0 : volume;\n player.volume = volume / 10;\n pos.volume = 0;\n }\n }, {\n key: \"updateBrightness\",\n value: function updateBrightness(percent) {\n if (this.player.rotateDeg) {\n percent = -percent;\n }\n\n var pos = this.pos,\n config = this.config,\n xgMask = this.xgMask;\n var light = pos.light + 0.8 * percent;\n light = light > config.maxDarkness ? config.maxDarkness : light < 0 ? 0 : light;\n\n if (xgMask) {\n xgMask.style.backgroundColor = \"rgba(0,0,0,\".concat(light, \")\");\n }\n\n pos.light = light;\n }\n }, {\n key: \"activeSeekNote\",\n value: function activeSeekNote(time) {\n var isForward = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var player = this.player,\n config = this.config;\n var isLive = !(this.duration !== Infinity && this.duration > 0);\n\n if (!time || typeof time !== 'number' || isLive || config.disableActive) {\n return;\n }\n\n if (time < 0) {\n time = 0;\n } else if (time > player.duration) {\n time = player.duration - 0.2;\n }\n\n this.changeAction(ACTIONS.SEEKING);\n var startPlugin = player.plugins.start;\n startPlugin && startPlugin.focusHide();\n this.find('.xg-dur').innerHTML = Util.format(this.duration);\n this.find('.xg-cur').innerHTML = Util.format(time);\n this.find('.xg-curbar').style.width = \"\".concat(time / this.duration * 100, \"%\");\n\n if (isForward) {\n Util.removeClass(this.find('.xg-seek-show'), 'xg-back');\n } else {\n Util.addClass(this.find('.xg-seek-show'), 'xg-back');\n }\n\n this.updateThumbnails(time); // const {thumbnail} = player.plugins\n // this.thumbnailPlugin && thumbnail.update(time)\n }\n }, {\n key: \"updateThumbnails\",\n value: function updateThumbnails(time) {\n var player = this.player;\n var thumbnail = player.plugins.thumbnail;\n\n if (thumbnail && thumbnail.usable) {\n this.thumbnail && thumbnail.update(this.thumbnail, time, 160, 90); // this.videothumbnail && thumbnail.update(this.videothumbnail, time, rect.width, rect.height)\n }\n }\n }, {\n key: \"switchPlayPause\",\n value: function switchPlayPause() {\n var player = this.player;\n\n if (!player.hasStart) {\n return false;\n } else if (!player.ended) {\n if (player.paused) {\n player.play();\n } else {\n player.pause();\n }\n }\n } // 动态禁用手势\n\n }, {\n key: \"disableGesture\",\n value: function disableGesture() {\n this.config.disableGesture = false;\n } // 动态启用手势\n\n }, {\n key: \"enableGesture\",\n value: function enableGesture() {\n this.config.disableGesture = true;\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n var player = this.player;\n this.timer && clearTimeout(this.timer);\n this.thumbnail = null;\n player.root.removeChild(this.xgMask);\n this.xgMask = null;\n this.touch && this.touch.destroy();\n this.touch = null;\n player.root.removeEventListener('touchmove', this.onRootTouchMove, true);\n player.root.removeEventListener('touchend', this.onRootTouchEnd, true);\n }\n }, {\n key: \"render\",\n value: function render() {\n var className = this.config.gradient !== 'normal' ? \"gradient \".concat(this.config.gradient) : 'gradient';\n return \"\\n \\n
\\n
\\n
\\n \\n 00:00\\n /\\n 00:00\\n
\\n
\\n
\\n
\\n
\\n
\\n \").concat(this.config.pressRate, \"X\").concat(this.i18n.FORWARD, \"\\n
\\n
\\n \");\n }\n }], [{\n key: \"pluginName\",\n get: function get() {\n return 'mobile';\n }\n /**\n * @type IMobileConfig & { [propName: string]: any}\n */\n\n }, {\n key: \"defaultConfig\",\n get: function get() {\n return {\n stopPropagation: true,\n // 是否阻止冒泡\n index: 0,\n disableGesture: false,\n // 是否禁用手势\n gestureX: true,\n // 是否启用水平手势\n gestureY: true,\n // 是否启用垂直手势\n updateGesture: function updateGesture() {},\n // 手势处理回调\n onTouchStart: function onTouchStart() {},\n // 手势开始移动回调\n onTouchEnd: function onTouchEnd() {},\n // 手势移动结束回调\n gradient: 'normal',\n // 是否启用阴影\n isTouchingSeek: false,\n // 是否在touchMove的同时更新currentTime\n miniMoveStep: 5,\n // 最小差异,用于move节流\n miniYPer: 5,\n // y方向最小位移百分比\n scopeL: 0.25,\n // 左侧手势范围比例\n scopeR: 0.25,\n // 右侧手势范围比例\n scopeM: 0.9,\n // 中间手势范围比例\n pressRate: 2,\n // 长按快进倍速\n darkness: true,\n // 是否启用右侧调暗功能\n maxDarkness: 0.8,\n // 调暗最大暗度,即蒙层最大透明度\n disableActive: false,\n // 是否禁用时间面板\n disableTimeProgress: false,\n // 是否禁用时间进度条\n hideControlsActive: false,\n // 手势拖动的时候是否隐控制栏\n hideControlsEnd: false,\n // 手势结束的时候隐控制栏\n moveDuration: 60 * 6 * 1000,\n // 视频区对应的时长\n closedbClick: false,\n // 是否关闭双击手势\n disablePress: true,\n // 是否关闭长按手势\n disableSeekIcon: false,\n // 禁用seek按钮\n focusVideoClick: false // 单击强制切换暂停/播放\n\n };\n }\n }]);\n\n return MobilePlugin;\n}(Plugin);\n\nexport default MobilePlugin;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { BasePlugin, Events } from '../../plugin';\n/**\n * @typedef {{\n * seekStep?: number,\n * checkVisible?: boolean,\n * disableBodyTrigger?: boolean,\n * keyCodeMap?: { [propName: string]: any },\n * disable: boolean,\n * isIgnoreUserActive: boolean,\n * [propName: string]: any\n * }} IKeyboardConfig\n */\n\nfunction preventDefault(e) {\n e.preventDefault();\n e.returnValue = false;\n}\n\nfunction isDisableTag(el) {\n var tagName = el.tagName;\n\n if (tagName === 'INPUT' || tagName === 'TEXTAREA' || el.isContentEditable) {\n return true;\n }\n\n return false;\n}\n\nvar Keyboard = /*#__PURE__*/function (_BasePlugin) {\n _inherits(Keyboard, _BasePlugin);\n\n var _super = _createSuper(Keyboard);\n\n function Keyboard() {\n var _this;\n\n _classCallCheck(this, Keyboard);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"onBodyKeyDown\", function (event) {\n var e = event || window.event;\n\n if (!_this.player.isUserActive && !_this.config.isIgnoreUserActive) {\n return;\n }\n\n if (_this.config.disable || _this.config.disableBodyTrigger || !_this.checkIsVisible() || e.metaKey || e.altKey || e.ctrlKey) {\n return;\n }\n\n var keyCode = e.keyCode;\n\n if ((e.target === document.body || _this.config.isGlobalTrigger && !isDisableTag(e.target)) && _this.checkCode(keyCode, true)) {\n preventDefault(e);\n\n _this.handleKeyCode(keyCode, event);\n\n return false;\n }\n\n return false;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onKeydown\", function (event) {\n var e = event || window.event;\n\n if (_this.config.disable || e.metaKey || e.altKey || e.ctrlKey) {\n return;\n }\n\n if (!_this.player.isUserActive && !_this.config.isIgnoreUserActive) {\n return;\n }\n\n if (e && (e.keyCode === 37 || _this.checkCode(e.keyCode)) && (e.target === _this.player.root || e.target === _this.player.video || e.target === _this.player.controls.el)) {\n preventDefault(e);\n } else {\n return true;\n }\n\n _this.handleKeyCode(e.keyCode, event);\n });\n\n return _this;\n }\n\n _createClass(Keyboard, [{\n key: \"mergekeyCodeMap\",\n value: function mergekeyCodeMap() {\n var _this2 = this;\n\n var extendkeyCodeMap = this.config.keyCodeMap;\n\n if (extendkeyCodeMap) {\n Object.keys(extendkeyCodeMap).map(function (key) {\n if (!_this2.keyCodeMap[key]) {\n _this2.keyCodeMap[key] = extendkeyCodeMap[key];\n } else {\n ['keyCode', 'action', 'disable', 'isBodyTarget'].map(function (key1) {\n extendkeyCodeMap[key][key1] && (_this2.keyCodeMap[key][key1] = extendkeyCodeMap[key][key1]);\n });\n }\n });\n }\n }\n }, {\n key: \"afterCreate\",\n value: function afterCreate() {\n this.config.disable = !this.playerConfig.keyShortcut;\n var seekStep = typeof this.config.seekStep === 'function' ? this.config.seekStep(this.player) : this.config.seekStep;\n\n if (!(!seekStep || typeof seekStep !== 'number')) {\n this.seekStep = seekStep;\n }\n\n this.keyCodeMap = {\n space: {\n keyCode: 32,\n action: 'playPause',\n disable: false,\n noBodyTarget: false // 默认在body上触发\n\n },\n up: {\n keyCode: 38,\n action: 'upVolume',\n disable: false,\n noBodyTarget: true // 默认不在body上触发\n\n },\n down: {\n keyCode: 40,\n action: 'downVolume',\n disable: false,\n noBodyTarget: true\n },\n left: {\n keyCode: 37,\n action: 'seekBack',\n disable: false\n },\n right: {\n keyCode: 39,\n action: 'seek',\n disable: false\n },\n esc: {\n keyCode: 27,\n action: 'exitFullscreen',\n disable: false\n }\n };\n this.mergekeyCodeMap();\n this.player.root.addEventListener('keydown', this.onKeydown);\n document.addEventListener('keydown', this.onBodyKeyDown);\n }\n }, {\n key: \"checkIsVisible\",\n value: function checkIsVisible() {\n if (!this.config.checkVisible) {\n return true;\n }\n\n var rec = this.player.root.getBoundingClientRect();\n var height = rec.height,\n top = rec.top,\n bottom = rec.bottom;\n var h = window.innerHeight;\n\n if (top < 0 && top < 0 - height * 0.9 || bottom > 0 && bottom - h > height * 0.9) {\n return false;\n }\n\n return true;\n }\n }, {\n key: \"checkCode\",\n value: function checkCode(code, isBodyTarget) {\n var _this3 = this;\n\n var flag = false;\n Object.keys(this.keyCodeMap).map(function (key) {\n if (_this3.keyCodeMap[key] && code === _this3.keyCodeMap[key].keyCode && !_this3.keyCodeMap[key].disable) {\n flag = !isBodyTarget || isBodyTarget && !_this3.keyCodeMap[key].noBodyTarget;\n }\n });\n return flag;\n }\n }, {\n key: \"downVolume\",\n value: function downVolume(event) {\n var player = this.player;\n var val = parseFloat((player.volume - 0.1).toFixed(1));\n var props = {\n volume: {\n from: player.volume,\n to: val\n }\n };\n this.emitUserAction(event, 'change_volume', {\n props: props\n });\n\n if (val >= 0) {\n player.volume = val;\n } else {\n player.volume = 0;\n }\n }\n }, {\n key: \"upVolume\",\n value: function upVolume(event) {\n var player = this.player;\n var val = parseFloat((player.volume + 0.1).toFixed(1));\n var props = {\n volume: {\n from: player.volume,\n to: val\n }\n };\n this.emitUserAction(event, 'change_volume', {\n props: props\n });\n\n if (val <= 1) {\n player.volume = val;\n } else {\n player.volume = 1;\n }\n }\n }, {\n key: \"seek\",\n value: function seek(event) {\n var _this$player = this.player,\n currentTime = _this$player.currentTime,\n duration = _this$player.duration;\n var _time = currentTime;\n\n if (currentTime + this.seekStep <= duration) {\n _time = currentTime + this.seekStep;\n } else {\n _time = duration - 1;\n }\n\n this.emitUserAction(event, 'seek', {\n from: currentTime,\n to: _time\n });\n this.player.currentTime = _time;\n }\n }, {\n key: \"seekBack\",\n value: function seekBack(event) {\n var currentTime = this.player.currentTime;\n var _time = 0;\n\n if (currentTime - this.seekStep >= 0) {\n _time = currentTime - this.seekStep;\n }\n\n this.emitUserAction(event, 'seek', {\n from: currentTime,\n to: _time\n });\n this.player.currentTime = _time;\n }\n }, {\n key: \"playPause\",\n value: function playPause(event) {\n var player = this.player;\n\n if (!player) {\n return;\n }\n\n this.emitUserAction(event, 'switch_play_pause');\n\n if (player.paused) {\n // eslint-disable-next-line handle-callback-err\n player.play();\n } else {\n player.pause();\n }\n }\n }, {\n key: \"exitFullscreen\",\n value: function exitFullscreen(event) {\n var player = this.player;\n var isCssfullScreen = player.isCssfullScreen,\n fullscreen = player.fullscreen;\n\n if (fullscreen) {\n player.exitFullscreen();\n this.emitUserAction('keyup', 'switch_fullscreen', {\n fullscreen: fullscreen\n });\n }\n\n if (isCssfullScreen) {\n player.exitCssFullscreen();\n this.emitUserAction('keyup', 'switch_css_fullscreen', {\n cssfullscreen: isCssfullScreen\n });\n }\n }\n }, {\n key: \"handleKeyCode\",\n value: function handleKeyCode(curKeyCode, event) {\n var _this4 = this;\n\n Object.keys(this.keyCodeMap).map(function (key) {\n var _this4$keyCodeMap$key = _this4.keyCodeMap[key],\n action = _this4$keyCodeMap$key.action,\n keyCode = _this4$keyCodeMap$key.keyCode,\n disable = _this4$keyCodeMap$key.disable;\n\n if (keyCode === curKeyCode && !disable) {\n if (typeof action === 'function') {\n action(event, _this4.player);\n } else if (typeof action === 'string') {\n if (typeof _this4[action] === 'function') {\n _this4[action](event, _this4.player);\n }\n }\n\n _this4.emit(Events.SHORTCUT, _objectSpread({\n key: key,\n target: event.target\n }, _this4.keyCodeMap[key]));\n }\n });\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.player.root.removeEventListener('keydown', this.onKeydown);\n document.removeEventListener('keydown', this.onBodyKeyDown);\n }\n }, {\n key: \"disable\",\n value: function disable() {\n this.config.disable = true;\n }\n }, {\n key: \"enable\",\n value: function enable() {\n this.config.disable = false;\n }\n }], [{\n key: \"pluginName\",\n get: function get() {\n return 'keyboard';\n }\n /**\n * @type IKeyboardConfig\n */\n\n }, {\n key: \"defaultConfig\",\n get: function get() {\n return {\n seekStep: 10,\n // 左/右快进每次操作时长\n checkVisible: true,\n // 快捷键生效的时候是否检测可见性\n disableBodyTrigger: false,\n // 是否在body上做快捷键监听\n isGlobalTrigger: false,\n // 快捷键是否需要全局触发\n keyCodeMap: {},\n disable: false,\n isIgnoreUserActive: false // 是否忽略用户激活状态\n\n };\n }\n }]);\n\n return Keyboard;\n}(BasePlugin);\n\nexport default Keyboard;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport Plugin, { POSITIONS } from '../../plugin/plugin';\nvar loadingIcon = \"\";\n\nvar Loading = /*#__PURE__*/function (_Plugin) {\n _inherits(Loading, _Plugin);\n\n var _super = _createSuper(Loading);\n\n function Loading() {\n _classCallCheck(this, Loading);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(Loading, [{\n key: \"registerIcons\",\n value: function registerIcons() {\n return {\n loadingIcon: loadingIcon\n };\n }\n }, {\n key: \"afterCreate\",\n value: function afterCreate() {\n this.appendChild('xg-loading-inner', this.icons.loadingIcon);\n }\n }, {\n key: \"render\",\n value: function render() {\n return \"\\n \\n \\n \";\n }\n }], [{\n key: \"pluginName\",\n get: function get() {\n return 'loading';\n }\n }, {\n key: \"defaultConfig\",\n get: function get() {\n return {\n position: POSITIONS.ROOT\n };\n }\n }]);\n\n return Loading;\n}(Plugin);\n\nexport default Loading;","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nimport { Util } from '../../plugin';\nvar TPL = [{\n tag: 'xg-cache',\n className: 'xgplayer-progress-cache',\n styleKey: 'cachedColor'\n}, {\n tag: 'xg-played',\n className: 'xgplayer-progress-played',\n styleKey: 'playedColor'\n}];\n\nvar InnerList = /*#__PURE__*/function () {\n function InnerList(args) {\n _classCallCheck(this, InnerList);\n\n this.fragments = args.fragments || [];\n this.focusClass = 'inner-focus';\n this.style = args.style || {\n playedColor: '',\n cachedColor: '',\n progressColor: ''\n };\n this.duration = 0;\n this.cachedIndex = 0;\n this.playedIndex = 0;\n }\n\n _createClass(InnerList, [{\n key: \"updateDuration\",\n value: function updateDuration(duration) {\n var _this = this;\n\n this.duration = parseInt(duration * 1000);\n var start = 0;\n var fragments = this.fragments;\n this.fragments = fragments.map(function (item) {\n item.start = start;\n item.end = start + item.percent * _this.duration;\n item.duration = item.percent * _this.duration;\n start += item.percent * _this.duration;\n return item;\n });\n }\n }, {\n key: \"updateProgress\",\n value: function updateProgress() {\n var type = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'played';\n var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n newIndex: 0,\n curIndex: 0,\n millisecond: 0\n };\n var progressList = this.progressList,\n fragments = this.fragments;\n var newIndex = data.newIndex,\n curIndex = data.curIndex,\n millisecond = data.millisecond;\n\n if (newIndex !== curIndex) {\n progressList.map(function (item, index) {\n if (index < newIndex) {\n item[type].style.width = '100%';\n } else if (index > newIndex) {\n item[type].style.width = 0;\n }\n });\n }\n\n var curPFrag = fragments[newIndex];\n var per = millisecond === 0 ? 0 : (millisecond - curPFrag.start) / curPFrag.duration;\n progressList[newIndex][type].style.width = per < 0 ? 0 : \"\".concat(per * 100, \"%\");\n }\n }, {\n key: \"update\",\n value: function update() {\n var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n cached: 0,\n played: 0\n };\n var duration = arguments.length > 1 ? arguments[1] : undefined;\n\n if (!this.duration || parseInt(duration * 1000, 10) !== this.duration) {\n if (!duration && duration !== 0) {\n return;\n }\n\n this.updateDuration(duration);\n }\n\n var playedIndex = this.playedIndex,\n cachedIndex = this.cachedIndex;\n\n if (Util.typeOf(data.played) !== 'Undefined') {\n var newPIndex = this.findIndex(data.played * 1000, playedIndex);\n this.updateProgress('played', {\n newIndex: newPIndex,\n curIndex: playedIndex,\n millisecond: parseInt(data.played * 1000, 10)\n });\n this.playedIndex = newPIndex;\n }\n\n if (Util.typeOf(data.cached) !== 'Undefined') {\n var newCIndex = this.findIndex(data.cached * 1000, cachedIndex);\n this.updateProgress('cached', {\n newIndex: newCIndex,\n curIndex: cachedIndex,\n millisecond: parseInt(data.cached * 1000, 10)\n });\n this.cachedIndex = newCIndex;\n }\n }\n }, {\n key: \"findIndex\",\n value: function findIndex(time, curIndex) {\n var fragments = this.fragments;\n\n if (fragments.length === 1) {\n return 0;\n }\n\n if (time > fragments[curIndex].start && time < fragments[curIndex].end) {\n return curIndex;\n }\n\n this.fragments.map(function (item, index) {\n if (time > item.start && time <= item.end) {\n curIndex = index;\n }\n });\n return curIndex;\n }\n }, {\n key: \"findHightLight\",\n value: function findHightLight() {\n var children = this.root.children;\n\n for (var i = 0; i < children.length; i++) {\n if (Util.hasClass(children[i], this.focusClass)) {\n return {\n dom: children[i],\n pos: children[i].getBoundingClientRect()\n };\n }\n }\n } // 根据索引获取进度条片段\n\n }, {\n key: \"findFragment\",\n value: function findFragment(index) {\n var children = this.root.children;\n\n if (index < 0 || index >= children.length) {\n return null;\n }\n\n return {\n dom: children[index],\n pos: children[index].getBoundingClientRect()\n };\n }\n }, {\n key: \"unHightLight\",\n value: function unHightLight() {\n var children = this.root.children;\n\n for (var i = 0; i < children.length; i++) {\n Util.removeClass(children[i], this.focusClass);\n }\n }\n }, {\n key: \"setHightLight\",\n value: function setHightLight(index) {\n var children = this.root.children;\n\n if (index < children.length) {\n Util.addClass(children[index], this.focusClass);\n return {\n dom: children[index],\n pos: children[index].getBoundingClientRect()\n };\n }\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.progressList = null;\n this.fragments = null;\n this.root.innerHTML = '';\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var progressColor = this.style.progressColor;\n this.root = Util.createDom('xg-inners', '', {}, 'progress-list');\n\n if (this.fragments) {\n this.progressList = this.fragments.map(function (item) {\n var inner = Util.createDom('xg-inner', '', {\n style: progressColor ? \"background:\".concat(progressColor, \"; flex: \").concat(item.percent) : \"flex: \".concat(item.percent)\n }, \"\".concat(item.isFocus ? 'inner-focus' : '', \" xgplayer-progress-inner\"));\n\n _this2.root.appendChild(inner);\n\n TPL.map(function (item) {\n inner.appendChild(Util.createDom(item.tag, '', {\n style: item.styleKey ? \"background: \".concat(_this2.style[item.styleKey], \"; width:0;\") : 'width:0;'\n }, item.className));\n });\n return {\n cached: inner.children[0],\n played: inner.children[1]\n };\n });\n }\n\n return this.root;\n }\n }]);\n\n return InnerList;\n}();\n\nexport { InnerList as default };","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport Plugin, { Events, Util, POSITIONS, Sniffer } from '../../plugin';\nimport InnerList from './innerList';\n/**\n * @typedef {{\n * position?:string,\n * disable?: boolean,\n * isDragingSeek?: boolean, // 是否在拖拽的过程中更新currentTime\n * closeMoveSeek?: boolean, // 是否关闭滑块seek能力\n * isPauseMoving?: boolean, // 是否在move的时候暂停视频内容\n * isCloseClickSeek?: boolean, // 是否关闭点击进度条的时候seek\n * fragments?: Array<{percent: number}>,\n * miniMoveStep?: number,\n * miniStartStep?: number,\n * onMoveStart?: () => any, // 手势开始移动回调,\n * onMoveEnd?: () => any, // 手势移动结束回调\n * [propName: string]: any\n * }} IProgressConfig\n */\n\n/**\n * 进度条组件\n */\n\nvar Progress = /*#__PURE__*/function (_Plugin) {\n _inherits(Progress, _Plugin);\n\n var _super = _createSuper(Progress);\n\n function Progress(args) {\n var _this;\n\n _classCallCheck(this, Progress);\n\n _this = _super.call(this, args);\n /**\n * @readonly\n */\n\n _defineProperty(_assertThisInitialized(_this), \"onMoveOnly\", function (e) {\n var _assertThisInitialize = _assertThisInitialized(_this),\n pos = _assertThisInitialize.pos,\n config = _assertThisInitialize.config,\n player = _assertThisInitialize.player;\n\n Util.event(e);\n\n var _ePos = Util.getEventPos(e, player.zoom);\n\n var x = player.rotateDeg === 90 ? _ePos.clientY : _ePos.clientX;\n\n if (pos.moving && Math.abs(pos.x - x) < config.miniMoveStep) {\n return;\n }\n\n pos.moving = true;\n pos.x = x;\n\n var ret = _this.computeTime(e);\n\n _this.triggerCallbacks('dragmove', ret);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onBodyClick\", function (e) {\n e.preventDefault();\n e.stopPropagation();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onMouseDown\", function (e) {\n var _assertThisInitialize2 = _assertThisInitialized(_this),\n player = _assertThisInitialize2.player,\n pos = _assertThisInitialize2.pos,\n config = _assertThisInitialize2.config,\n playerConfig = _assertThisInitialize2.playerConfig;\n\n var _ePos = Util.getEventPos(e, player.zoom);\n\n var x = player.rotateDeg === 90 ? _ePos.clientY : _ePos.clientX;\n\n if (player.isMini || config.closeMoveSeek || !playerConfig.allowSeekAfterEnded && player.ended) {\n return;\n }\n\n e.stopPropagation();\n e.preventDefault();\n\n _this.focus();\n\n Util.checkIsFunction(playerConfig.disableSwipeHandler) && playerConfig.disableSwipeHandler();\n Util.checkIsFunction(config.onMoveStart) && config.onMoveStart();\n Util.event(e);\n pos.x = x;\n pos.isDown = true;\n pos.moving = false; // 交互开始 禁止控制栏的自动隐藏功能\n\n player.focus({\n autoHide: false\n });\n _this.isProgressMoving = true;\n Util.addClass(_this.progressBtn, 'active');\n\n var ret = _this.computeTime(e);\n\n _this._state.time = ret.currentTime;\n\n _this.updateWidth(ret.currentTime, ret.percent, 0);\n\n if (_this.isMobile) {\n _this.bind('touchmove', _this.onMouseMove);\n\n _this.bind('touchend', _this.onMouseUp);\n } else {\n _this.unbind('mousemove', _this.onMoveOnly);\n\n document.addEventListener('mousemove', _this.onMouseMove, false);\n document.addEventListener('mouseup', _this.onMouseUp, false); // 避免触发videoClick 暂停/播放切换\n\n player.root.addEventListener('click', _this.onBodyClick, false); // this.bind('mouseup', this.onMouseUp, false)\n }\n\n return true;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onMouseUp\", function (e) {\n var _assertThisInitialize3 = _assertThisInitialized(_this),\n player = _assertThisInitialize3.player,\n config = _assertThisInitialize3.config,\n pos = _assertThisInitialize3.pos,\n playerConfig = _assertThisInitialize3.playerConfig,\n _state = _assertThisInitialize3._state;\n\n e.stopPropagation();\n e.preventDefault();\n Util.checkIsFunction(playerConfig.enableSwipeHandler) && playerConfig.enableSwipeHandler();\n Util.checkIsFunction(config.onMoveEnd) && config.onMoveEnd();\n Util.event(e);\n Util.removeClass(_this.progressBtn, 'active');\n\n var ret = _this.computeTime(e);\n\n if (pos.moving) {\n _this.updateWidth(ret.currentTime, ret.percent, 2);\n\n _this.triggerCallbacks('dragend', ret);\n } else {\n // this.updateWidth(ret.currentTime, ret.percent, 2)\n _this.triggerCallbacks('click', ret);\n }\n\n pos.moving = false;\n pos.isDown = false;\n pos.x = 0;\n pos.y = 0;\n _state.time = 0;\n\n if (_this.isMobile) {\n _this.unbind('touchmove', _this.onMouseMove);\n\n _this.unbind('touchend', _this.onMouseUp); // 交互结束 恢复控制栏的隐藏流程\n\n\n _this.blur();\n } else {\n document.removeEventListener('mousemove', _this.onMouseMove, false);\n document.removeEventListener('mouseup', _this.onMouseUp, false);\n player.root.removeEventListener('click', _this.onBodyClick, false);\n\n if (!pos.isEnter) {\n _this.onMouseLeave(e);\n } else {\n !playerConfig.isMobileSimulateMode && _this.bind('mousemove', _this.onMoveOnly);\n }\n } // 延迟复位,状态复位要在dom相关时间回调执行之后\n\n\n Util.setTimeout(_assertThisInitialized(_this), function () {\n _this.resetSeekState();\n }, 10); // 交互结束 恢复控制栏的隐藏流程\n\n player.focus();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onMouseMove\", function (e) {\n var _assertThisInitialize4 = _assertThisInitialized(_this),\n pos = _assertThisInitialize4.pos,\n player = _assertThisInitialize4.player,\n config = _assertThisInitialize4.config,\n _state = _assertThisInitialize4._state;\n\n if (_this.isMobile) {\n e.stopPropagation();\n e.preventDefault();\n }\n\n Util.event(e);\n\n var _ePos = Util.getEventPos(e, player.zoom);\n\n var x = player.rotateDeg === 90 ? _ePos.clientY : _ePos.clientX;\n var diff = Math.abs(pos.x - x);\n\n if (pos.moving && diff < config.miniMoveStep || !pos.moving && diff < config.miniStartStep) {\n return;\n }\n\n pos.x = x;\n\n var ret = _this.computeTime(e);\n\n if (_state.time < ret.currentTime) {\n ret.forward = true;\n } else {\n ret.forward = false;\n }\n\n _state.time = ret.currentTime;\n\n if (pos.isDown && !pos.moving) {\n pos.moving = true;\n config.isPauseMoving && player.pause();\n\n _this.triggerCallbacks('dragstart', ret);\n }\n\n _this.updateWidth(ret.currentTime, ret.percent, 1);\n\n _this.triggerCallbacks('dragmove', ret);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onMouseEnter\", function (e) {\n var _assertThisInitialize5 = _assertThisInitialized(_this),\n player = _assertThisInitialize5.player,\n pos = _assertThisInitialize5.pos;\n\n if (pos.isDown || pos.isEnter || player.isMini || !player.config.allowSeekAfterEnded && player.ended) {\n return;\n }\n\n pos.isEnter = true;\n\n _this.bind('mousemove', _this.onMoveOnly);\n\n _this.bind('mouseleave', _this.onMouseLeave);\n\n _this.focus();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onMouseLeave\", function (e) {\n var _assertThisInitialize6 = _assertThisInitialized(_this),\n player = _assertThisInitialize6.player,\n pos = _assertThisInitialize6.pos;\n\n pos.isEnter = false;\n\n if (player.isMini) {\n return;\n }\n\n _this.unbind('mousemove', _this.onMoveOnly);\n\n if (pos.isDown) {\n _this.unbind('mouseleave', _this.onMouseLeave);\n\n return;\n }\n\n _this.blur();\n });\n\n _this.useable = false;\n /**\n * @readonly\n */\n\n _this.isProgressMoving = false;\n /**\n * @private\n */\n\n _this.__dragCallBacks = [];\n /**\n * @private\n */\n\n _this._state = {\n now: -1,\n direc: 0,\n time: 0\n };\n return _this;\n }\n\n _createClass(Progress, [{\n key: \"duration\",\n get: function get() {\n return this.playerConfig.customDuration || this.player.duration;\n }\n }, {\n key: \"timeOffset\",\n get: function get() {\n return this.playerConfig.timeOffset || 0;\n }\n }, {\n key: \"changeState\",\n value: function changeState() {\n var useable = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n this.useable = useable;\n }\n }, {\n key: \"beforeCreate\",\n value: function beforeCreate(args) {\n if (typeof args.player.config.progress === 'boolean') {\n args.config.disable = !args.player.config.progress;\n }\n }\n /**\n * @description 创建内部进度条,并挂载到xg-outer上,\n * 并把一些对外API绑定在progress上供外部调用\n *\n */\n\n }, {\n key: \"createInner\",\n value: function createInner() {\n var _this2 = this;\n\n this.innerList = new InnerList({\n fragments: this.config.fragments,\n style: this.playerConfig.commonStyle || {}\n });\n this.outer.insertBefore(this.innerList.render(), this.outer.children[0]);\n ['findHightLight', 'unHightLight', 'setHightLight', 'findFragment'].map(function (item) {\n _this2[item] = _this2.innerList[item].bind(_this2.innerList);\n });\n }\n }, {\n key: \"afterCreate\",\n value: function afterCreate() {\n var _this3 = this;\n\n if (this.config.disable || this.playerConfig.isLive) {\n return;\n }\n\n this.pos = {\n x: 0,\n // 水平方向位移\n y: 0,\n // 垂直方向位移\n moving: false,\n // 是否正在移动\n isDown: false,\n // 是否mouseDown\n isEnter: false // 是否触发了mouseEnter\n\n };\n this.outer = this.find('xg-outer');\n this.createInner();\n\n if (Sniffer.device === 'mobile') {\n this.config.isDragingSeek = false;\n this.isMobile = true;\n }\n\n this.progressBtn = this.find('.xgplayer-progress-btn');\n this.on(Events.TIME_UPDATE, function () {\n _this3.onTimeupdate();\n });\n this.on(Events.SEEKED, function () {\n _this3.onTimeupdate();\n\n _this3.onCacheUpdate();\n });\n this.on(Events.PROGRESS, function () {\n _this3.onCacheUpdate();\n });\n this.on(Events.ENDED, function () {\n _this3.onCacheUpdate();\n\n _this3._state.now = 0;\n });\n this.on(Events.EMPTIED, function () {\n _this3.onReset();\n });\n this.bindDomEvents();\n this.initCustomStyle();\n }\n }, {\n key: \"initCustomStyle\",\n value: function initCustomStyle() {\n var _ref = this.playerConfig || {},\n commonStyle = _ref.commonStyle;\n\n var sliderBtnStyle = commonStyle.sliderBtnStyle;\n var progressBtn = this.progressBtn;\n\n if (sliderBtnStyle) {\n if (typeof sliderBtnStyle === 'string') {\n progressBtn.style.boxShadow = sliderBtnStyle;\n } else if (_typeof(sliderBtnStyle) === 'object') {\n Object.keys(sliderBtnStyle).map(function (key) {\n progressBtn.style[key] = sliderBtnStyle[key];\n });\n }\n }\n }\n /**\n * 触发某一类回调监听\n * @param { string } type 类型 drag/dragend\n * @param { any} data 具体数据\n */\n\n }, {\n key: \"triggerCallbacks\",\n value: function triggerCallbacks(type, data) {\n if (this.__dragCallBacks.length > 0) {\n this.__dragCallBacks.map(function (item) {\n if (item && item.handler && item.type === type) {\n try {\n item.handler(data);\n } catch (error) {\n console.error(\"[XGPLAYER][triggerCallbacks] \".concat(item, \" error\"), error);\n }\n }\n });\n }\n }\n /**\n * 供外部插件添加回调\n * @param {string} type 类型 drag/dragend\n * @param {function} handle 回调函数句柄\n */\n\n }, {\n key: \"addCallBack\",\n value: function addCallBack(type, handle) {\n if (handle && typeof handle === 'function') {\n this.__dragCallBacks.push({\n type: type,\n handler: handle\n });\n }\n }\n /**\n * 供外部插件移除回调\n * @param {string} type 类型 drag/dragend\n * @param {Function} event 回调函数句柄\n */\n\n }, {\n key: \"removeCallBack\",\n value: function removeCallBack(type, event) {\n var __dragCallBacks = this.__dragCallBacks;\n\n var _index = -1;\n\n __dragCallBacks.map(function (item, index) {\n if (item && item.type === type && item.handler === event) {\n _index = index;\n }\n });\n\n if (_index > -1) {\n __dragCallBacks.splice(_index, 1);\n }\n }\n }, {\n key: \"bindDomEvents\",\n value: function bindDomEvents() {\n var _this$player = this.player,\n controls = _this$player.controls,\n config = _this$player.config;\n\n if (this.isMobile) {\n this.bind('touchstart', this.onMouseDown);\n\n if (controls) {\n controls.root && controls.root.addEventListener('touchmove', Util.stopPropagation);\n controls.center && controls.center.addEventListener('touchend', Util.stopPropagation);\n }\n } else {\n this.bind('mousedown', this.onMouseDown);\n !config.isMobileSimulateMode && this.bind('mouseenter', this.onMouseEnter);\n }\n }\n }, {\n key: \"focus\",\n value: function focus() {\n this.player.controls.pauseAutoHide();\n Util.addClass(this.root, 'active');\n }\n }, {\n key: \"blur\",\n value: function blur() {\n this.player.controls.recoverAutoHide();\n Util.removeClass(this.root, 'active');\n }\n }, {\n key: \"updateWidth\",\n value:\n /**\n * @description 根据currenTime和占用百分比更新进度条\n * @param {Number} currentTime 需要更新到的时间\n * @param {Number} percent 更新时间占比\n * @param {Int} type 触发类型 0-down 1-move 2-up\n */\n function updateWidth(currentTime, percent, type) {\n var config = this.config,\n player = this.player;\n\n if (config.isCloseClickSeek && type === 0) {\n return;\n }\n\n var realTime = currentTime > player.duration ? player.duration - 0.2 : Number(currentTime).toFixed(1); // currentTime = currentTime > player.duration ? player.duration - 0.2 : Number(currentTime).toFixed(1)\n\n this.updatePercent(percent);\n this.updateTime(currentTime);\n\n if (type === 1 && (!config.isDragingSeek || player.videoConfig.mediaType === 'audio')) {\n return;\n }\n\n this._state.now = realTime;\n this._state.direc = realTime > player.currentTime ? 0 : 1;\n player.seek(realTime);\n }\n }, {\n key: \"computeTime\",\n value: function computeTime(e) {\n var player = this.player;\n\n var _this$root$getBoundin = this.root.getBoundingClientRect(),\n width = _this$root$getBoundin.width,\n height = _this$root$getBoundin.height,\n top = _this$root$getBoundin.top,\n left = _this$root$getBoundin.left;\n\n var _ePos = Util.getEventPos(e, player.zoom);\n\n var rWidth, rLeft, clientX;\n\n if (player.rotateDeg === 90) {\n rWidth = height;\n rLeft = top;\n clientX = _ePos.clientY;\n } else {\n rWidth = width;\n rLeft = left;\n clientX = _ePos.clientX;\n }\n\n var offset = clientX - rLeft;\n offset = offset > rWidth ? rWidth : offset < 0 ? 0 : offset;\n var percent = offset / rWidth;\n percent = percent < 0 ? 0 : percent > 1 ? 1 : percent;\n var currentTime = parseInt(percent * this.duration * 1000, 10) / 1000;\n return {\n percent: percent,\n currentTime: currentTime,\n offset: offset,\n width: rWidth,\n left: rLeft,\n e: e\n };\n }\n /**\n * @description 更新时间插件,在拖拽状态下要接管时间插件的更新状态\n * 本位置会和time插件交互\n * @param {number} time 根据拖拽距离计算出的时间\n */\n\n }, {\n key: \"updateTime\",\n value: function updateTime(time) {\n var player = this.player,\n duration = this.duration;\n\n if (time > duration) {\n time = duration;\n } else if (time < 0) {\n time = 0;\n }\n\n var timeIcon = player.plugins.time;\n\n if (timeIcon) {\n timeIcon.updateTime(time);\n }\n }\n /**\n * @description 复位正在拖拽状态 ,拖拽的时候要避免timeupdate更新\n */\n\n }, {\n key: \"resetSeekState\",\n value: function resetSeekState() {\n this.isProgressMoving = false;\n var timeIcon = this.player.plugins.time;\n timeIcon && timeIcon.resetActive();\n }\n /**\n * @description 拖拽过程中更新UI\n * @param {number} percent 小于0的小数\n *\n */\n\n }, {\n key: \"updatePercent\",\n value: function updatePercent(percent, notSeek) {\n this.isProgressMoving = true;\n\n if (this.config.disable) {\n return;\n }\n\n percent = percent > 1 ? 1 : percent < 0 ? 0 : percent;\n this.progressBtn.style.left = \"\".concat(percent * 100, \"%\");\n this.innerList.update({\n played: percent * this.duration\n }, this.duration);\n var miniprogress = this.player.plugins.miniprogress;\n miniprogress && miniprogress.update({\n played: percent * this.duration\n }, this.duration);\n }\n /**\n * @description 播放进度更新\n */\n\n }, {\n key: \"onTimeupdate\",\n value: function onTimeupdate() {\n var player = this.player,\n _state = this._state,\n duration = this.duration;\n\n if (player.isSeeking || this.isProgressMoving || !player.hasStart) {\n return;\n }\n\n if (_state.now > -1) {\n var abs = parseInt(_state.now * 1000, 10) - parseInt(player.currentTime * 1000, 10);\n\n if (_state.direc === 0 && abs > 300 || _state.direc === 1 && abs > -300) {\n _state.now = -1;\n return;\n } else {\n _state.now = -1;\n }\n }\n\n var time = this.timeOffset + player.currentTime;\n this.innerList.update({\n played: time\n }, duration);\n this.progressBtn.style.left = \"\".concat(time / duration * 100, \"%\");\n var miniprogress = this.player.plugins.miniprogress;\n miniprogress && miniprogress.update({\n played: time\n }, duration);\n }\n /**\n * @description 缓存进度更新\n */\n\n }, {\n key: \"onCacheUpdate\",\n value: function onCacheUpdate() {\n var player = this.player,\n duration = this.duration;\n var point = player.bufferedPoint;\n this.innerList.update({\n cached: point.end\n }, duration);\n var miniprogress = this.player.plugins.miniprogress;\n miniprogress && miniprogress.update({\n cached: point.end\n }, duration);\n }\n }, {\n key: \"onReset\",\n value: function onReset() {\n this.innerList.update({\n played: 0,\n cached: 0\n }, 0);\n var miniprogress = this.player.plugins.miniprogress;\n miniprogress && miniprogress.update({\n cached: 0,\n played: 0\n }, 0);\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n var player = this.player;\n var controls = player.controls;\n this.thumbnailPlugin = null;\n this.innerList.destroy();\n this.innerList = null;\n\n if (this.isMobile) {\n this.unbind('touchstart', this.onMouseDown);\n this.unbind('touchmove', this.onMouseMove);\n this.unbind('touchend', this.onMouseUp);\n\n if (controls) {\n controls.root && controls.root.removeEventListener('touchmove', Util.stopPropagation);\n controls.center && controls.center.removeEventListener('touchend', Util.stopPropagation);\n }\n } else {\n this.unbind('mousedown', this.onMouseDown);\n this.unbind('mouseenter', this.onMouseEnter);\n this.unbind('mousemove', this.onMoveOnly);\n this.unbind('mouseleave', this.onMouseLeave);\n document.removeEventListener('mousemove', this.onMouseMove, false);\n document.removeEventListener('mouseup', this.onMouseUp, false);\n player.root.removeEventListener('click', this.onBodyClick, false);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n if (this.config.disable || this.playerConfig.isLive) {\n return;\n }\n\n var controlsMode = this.player.controls ? this.player.controls.config.mode : '';\n var className = controlsMode === 'bottom' ? 'xgplayer-progress-bottom' : '';\n return \"\\n \\n \\n \\n \\n \\n \");\n }\n }], [{\n key: \"pluginName\",\n get: function get() {\n return 'progress';\n }\n /**\n * @type IProgressConfig\n */\n\n }, {\n key: \"defaultConfig\",\n get: function get() {\n return {\n position: POSITIONS.CONTROLS_CENTER,\n index: 0,\n disable: false,\n isDragingSeek: true,\n // 是否在拖拽的过程中更新currentTime\n closeMoveSeek: false,\n // 是否关闭滑块seek能力\n isPauseMoving: false,\n // 是否在move的时候暂停视频内容\n isCloseClickSeek: false,\n // 是否关闭点击进度条的时候seek\n fragments: [{\n percent: 1\n }],\n miniMoveStep: 5,\n miniStartStep: 2,\n onMoveStart: function onMoveStart() {},\n // 手势开始移动回调\n onMoveEnd: function onMoveEnd() {} // 手势移动结束回调\n\n };\n }\n }]);\n\n return Progress;\n}(Plugin);\n\nexport default Progress;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport Plugin, { Events, POSITIONS } from '../../plugin';\nvar PlaySvg = \"\";\nvar PauseSvg = \"\";\n\nvar Play = /*#__PURE__*/function (_Plugin) {\n _inherits(Play, _Plugin);\n\n var _super = _createSuper(Play);\n\n function Play() {\n _classCallCheck(this, Play);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(Play, [{\n key: \"afterCreate\",\n value: function afterCreate() {\n var _this = this;\n\n var player = this.player,\n config = this.config;\n\n if (config.disable) {\n return;\n }\n\n this.initIcons();\n this.btnClick = this.btnClick.bind(this);\n this.bind(['touchend', 'click'], this.btnClick);\n this.on(Events.PAUSE, function () {\n _this.animate(player.paused);\n });\n this.on(Events.PLAY, function () {\n _this.animate(player.paused);\n });\n this.animate(true);\n }\n }, {\n key: \"registerIcons\",\n value: function registerIcons() {\n return {\n play: {\n icon: PlaySvg,\n class: 'xg-icon-play'\n },\n pause: {\n icon: PauseSvg,\n class: 'xg-icon-pause'\n }\n };\n }\n }, {\n key: \"btnClick\",\n value: function btnClick(e) {\n e.preventDefault();\n e.stopPropagation();\n var player = this.player;\n this.emitUserAction(e, 'switch_play_pause');\n\n if (player.ended) {\n player.replay();\n } else if (player.paused) {\n player.play();\n this.animate(false);\n } else {\n player.pause();\n this.animate(true);\n }\n\n return false;\n }\n }, {\n key: \"initIcons\",\n value: function initIcons() {\n var icons = this.icons;\n this.appendChild('.xgplayer-icon', icons.play);\n this.appendChild('.xgplayer-icon', icons.pause);\n }\n }, {\n key: \"animate\",\n value: function animate(paused) {\n var i18nKeys = this.i18nKeys;\n\n if (paused) {\n this.setAttr('data-state', 'pause');\n this.changeLangTextKey(this.find('.xg-tips'), i18nKeys.PLAY_TIPS);\n } else {\n this.setAttr('data-state', 'play');\n this.changeLangTextKey(this.find('.xg-tips'), i18nKeys.PAUSE_TIPS);\n }\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.unbind(['touchend', 'click'], this.btnClick);\n }\n }, {\n key: \"render\",\n value: function render() {\n if (this.config.disable) {\n return;\n }\n\n return \"\\n
\\n
\\n
\").concat(this.i18n.PLAY_TIPS, \"
\\n
\");\n }\n }], [{\n key: \"pluginName\",\n get: function get() {\n return 'play';\n }\n }, {\n key: \"defaultConfig\",\n get: function get() {\n return {\n position: POSITIONS.CONTROLS_LEFT,\n index: 0,\n disable: false\n };\n }\n }]);\n\n return Play;\n}(Plugin);\n\nexport default Play;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport Plugin, { POSITIONS, Util } from '../../plugin';\nvar BackSVG = \"\";\n\nvar TopBackIcon = /*#__PURE__*/function (_Plugin) {\n _inherits(TopBackIcon, _Plugin);\n\n var _super = _createSuper(TopBackIcon);\n\n function TopBackIcon() {\n _classCallCheck(this, TopBackIcon);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(TopBackIcon, [{\n key: \"afterCreate\",\n value: function afterCreate() {\n var _this = this;\n\n this.initIcons();\n\n this.onClick = function (e) {\n e.preventDefault();\n e.stopPropagation();\n\n _this.config.onClick(e);\n };\n\n this.bind(['click', 'touchend'], this.onClick);\n }\n }, {\n key: \"registerIcons\",\n value: function registerIcons() {\n return {\n screenBack: {\n icon: BackSVG,\n class: 'xg-fullscreen-back'\n }\n };\n }\n }, {\n key: \"initIcons\",\n value: function initIcons() {\n var icons = this.icons;\n this.appendChild(this.root, icons.screenBack);\n }\n }, {\n key: \"show\",\n value: function show() {\n Util.addClass(this.root, 'show');\n }\n }, {\n key: \"hide\",\n value: function hide() {\n Util.removeClass(this.root, 'show');\n }\n }, {\n key: \"render\",\n value: function render() {\n return \"\\n \";\n }\n }], [{\n key: \"pluginName\",\n get: function get() {\n return 'topbackicon';\n }\n }, {\n key: \"defaultConfig\",\n get: function get() {\n return {\n position: POSITIONS.ROOT_TOP,\n index: 0\n };\n }\n }]);\n\n return TopBackIcon;\n}(Plugin);\n\nexport { TopBackIcon as default };","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport Plugin, { Events, POSITIONS, Sniffer, STATE_CLASS, Util } from '../../plugin';\nimport TopBackIcon from './backicon';\nvar FullScreenSvg = \"\";\nvar ExitFullScreenSvg = \"\";\n/**\n * @typedef { {\n * position?: string,\n * index?: number,\n * useCssFullscreen?: boolean, //是否启用页面全屏实现\n * rotateFullscreen?: boolean, ////是否启用旋转全屏\n * switchCallback?: () => any, // 自定义切换函数\n * target?: null | HTMLElement, // 触发元素\n * disable?: boolean,\n * needBackIcon?: boolean, // 全屏退出是否启用左上角返回按钮\n * [propName: string]: any\n * } } IFullscreenConfig\n */\n\nvar Fullscreen = /*#__PURE__*/function (_Plugin) {\n _inherits(Fullscreen, _Plugin);\n\n var _super = _createSuper(Fullscreen);\n\n function Fullscreen() {\n var _this;\n\n _classCallCheck(this, Fullscreen);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"_onOrientationChange\", function (e) {\n if (_this.player.fullscreen && _this.config.rotateFullscreen) {\n if (window.orientation === 90 || window.orientation === -90) {\n _this.setRotateDeg(0);\n } else {\n _this.setRotateDeg(90);\n }\n }\n });\n\n return _this;\n }\n\n _createClass(Fullscreen, [{\n key: \"beforeCreate\",\n value:\n /**\n * @private\n */\n function beforeCreate(args) {\n if (typeof args.player.config.fullscreen === 'boolean') {\n args.config.disable = !args.player.config.fullscreen;\n }\n }\n /**\n * @private\n */\n\n }, {\n key: \"afterCreate\",\n value: function afterCreate() {\n var _this2 = this;\n\n var config = this.config,\n playerConfig = this.playerConfig;\n\n if (config.disable) {\n return;\n }\n\n if (config.target) {\n this.playerConfig.fullscreenTarget = this.config.target;\n }\n\n var fullEl = Util.getFullScreenEl();\n\n if (playerConfig.fullscreenTarget === fullEl) {\n this.player.getFullscreen();\n }\n\n this.initIcons();\n this.handleFullscreen = this.hook('fullscreen_change', this.changeFullScreen, {\n pre: function pre(e) {\n _this2.emitUserAction(e, 'switch_fullscreen', {\n fullscreen: _this2.player.fullscreen\n });\n }\n });\n this.bind('.xgplayer-fullscreen', ['touchend', 'click'], this.handleFullscreen);\n this.on(Events.FULLSCREEN_CHANGE, function (isFullScreen) {\n _this2.changeLangTextKey(_this2.find('.xg-tips'), isFullScreen ? _this2.i18nKeys.EXITFULLSCREEN_TIPS : _this2.i18nKeys.FULLSCREEN_TIPS);\n\n _this2.animate(isFullScreen);\n\n if (_this2.config.needBackIcon) {\n _this2.show();\n }\n });\n\n if (this.config.needBackIcon) {\n this.topBackIcon = this.player.registerPlugin({\n plugin: TopBackIcon,\n options: {\n config: {\n onClick: function onClick(e) {\n _this2.handleFullscreen(e);\n }\n }\n }\n });\n }\n\n if (Sniffer.device === 'mobile') {\n window.addEventListener('orientationchange', this._onOrientationChange);\n }\n }\n /**\n * @private\n */\n\n }, {\n key: \"registerIcons\",\n value:\n /**\n * @private\n */\n function registerIcons() {\n return {\n fullscreen: {\n icon: FullScreenSvg,\n class: 'xg-get-fullscreen'\n },\n exitFullscreen: {\n icon: ExitFullScreenSvg,\n class: 'xg-exit-fullscreen'\n }\n };\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.unbind('.xgplayer-icon', Sniffer.device === 'mobile' ? 'touchend' : 'click', this.handleFullscreen);\n\n if (Sniffer.device === 'mobile') {\n window.removeEventListener('orientationchange', this._onOrientationChange);\n }\n }\n }, {\n key: \"initIcons\",\n value: function initIcons() {\n var icons = this.icons;\n this.appendChild('.xgplayer-icon', icons.fullscreen);\n this.appendChild('.xgplayer-icon', icons.exitFullscreen);\n }\n }, {\n key: \"setRotateDeg\",\n value: function setRotateDeg(deg) {\n var player = this.player;\n\n if (window.orientation === 90 || window.orientation === -90) {\n player.rotateDeg = 0;\n } else {\n player.rotateDeg = deg;\n }\n }\n /**\n * 进入旋转全屏\n * @param { HTMLElement } [el]\n */\n\n }, {\n key: \"getRotateFullscreen\",\n value: function getRotateFullscreen(el) {\n var player = this.player;\n\n if (player.isCssfullScreen) {\n player.exitCssFullscreen(el);\n }\n\n var _class = el ? STATE_CLASS.INNER_FULLSCREEN : STATE_CLASS.ROTATE_FULLSCREEN;\n\n player._fullscreenEl = el || player.root;\n player.changeFullStyle(player.root, el, _class, STATE_CLASS.PARENT_ROTATE_FULLSCREEN);\n player.fullscreen = true;\n this.setRotateDeg(90);\n this.emit(Events.FULLSCREEN_CHANGE, true);\n }\n /**\n * 退出旋转全屏\n * @param { HTMLElement } [el]\n */\n\n }, {\n key: \"exitRotateFullscreen\",\n value: function exitRotateFullscreen(el) {\n var player = this.player;\n player.fullscreen = false;\n\n var _class = player._fullscreenEl !== player.root ? STATE_CLASS.INNER_FULLSCREEN : STATE_CLASS.ROTATE_FULLSCREEN;\n\n player.recoverFullStyle(player.root, player._fullscreenEl, _class, STATE_CLASS.PARENT_ROTATE_FULLSCREEN);\n this.setRotateDeg(0);\n this.emit(Events.FULLSCREEN_CHANGE, false);\n }\n /**\n * 进入旋转全屏\n * @param { Event } [e]\n */\n\n }, {\n key: \"changeFullScreen\",\n value: function changeFullScreen(e) {\n if (e) {\n e.preventDefault();\n e.stopPropagation();\n }\n\n var player = this.player,\n config = this.config;\n var useCssFullscreen = false;\n\n if (config.useCssFullscreen === true || typeof config.useCssFullscreen === 'function' && config.useCssFullscreen()) {\n useCssFullscreen = true;\n }\n\n if (useCssFullscreen) {\n if (player.fullscreen) {\n player.fullscreen = false;\n player.exitCssFullscreen();\n this.emit(Events.FULLSCREEN_CHANGE, false);\n } else {\n player.fullscreen = true;\n player.getCssFullscreen();\n this.emit(Events.FULLSCREEN_CHANGE, true);\n }\n\n this.animate(player.fullscreen);\n } else if (config.rotateFullscreen) {\n if (player.fullscreen) {\n this.exitRotateFullscreen();\n } else {\n this.getRotateFullscreen();\n }\n\n this.animate(player.fullscreen);\n } else {\n if (config.switchCallback && typeof config.switchCallback === 'function') {\n config.switchCallback(player.fullscreen);\n return;\n }\n\n if (player.fullscreen) {\n player.exitFullscreen();\n } else {\n player.getFullscreen();\n }\n }\n }\n /**\n *\n * @param { boolean } isFullScreen\n */\n\n }, {\n key: \"animate\",\n value: function animate(isFullScreen) {\n isFullScreen ? this.setAttr('data-state', 'full') : this.setAttr('data-state', 'normal');\n\n if (this.topBackIcon) {\n if (isFullScreen) {\n this.topBackIcon.show();\n this.hide();\n } else {\n this.topBackIcon.hide();\n this.show();\n }\n }\n }\n }, {\n key: \"show\",\n value: function show() {\n _get(_getPrototypeOf(Fullscreen.prototype), \"show\", this).call(this);\n }\n }, {\n key: \"hide\",\n value: function hide() {\n _get(_getPrototypeOf(Fullscreen.prototype), \"hide\", this).call(this);\n }\n /**\n * @private\n * @returns\n */\n\n }, {\n key: \"render\",\n value: function render() {\n if (this.config.disable) {\n return;\n }\n\n var langKey = 'FULLSCREEN_TIPS';\n return \"\\n
\\n
\\n
\").concat(this.i18n[langKey], \"
\\n
\");\n }\n }], [{\n key: \"pluginName\",\n get: function get() {\n return 'fullscreen';\n }\n /**\n * @type IFullscreenConfig\n */\n\n }, {\n key: \"defaultConfig\",\n get: function get() {\n return {\n position: POSITIONS.CONTROLS_RIGHT,\n index: 0,\n useCssFullscreen: false,\n rotateFullscreen: false,\n switchCallback: null,\n target: null,\n disable: false,\n needBackIcon: false\n };\n }\n }]);\n\n return Fullscreen;\n}(Plugin);\n\nexport { Fullscreen as default };","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport Plugin, { Util, Events, POSITIONS } from '../../plugin';\n\nvar Time = /*#__PURE__*/function (_Plugin) {\n _inherits(Time, _Plugin);\n\n var _super = _createSuper(Time);\n\n function Time(args) {\n var _this;\n\n _classCallCheck(this, Time);\n\n _this = _super.call(this, args);\n _this.isActiving = false;\n return _this;\n }\n\n _createClass(Time, [{\n key: \"duration\",\n get: function get() {\n return this.playerConfig.customDuration || this.player.duration;\n }\n }, {\n key: \"timeOffset\",\n get: function get() {\n return this.playerConfig.timeOffset || 0;\n }\n }, {\n key: \"afterCreate\",\n value: function afterCreate() {\n var _this2 = this;\n\n var constrolsMode = this.player.controls.config.mode;\n this.mode = constrolsMode === 'flex' ? 'flex' : 'normal';\n\n if (this.config.disable) {\n return;\n }\n\n if (this.mode === 'flex') {\n this.createCenterTime();\n this.hide();\n }\n\n this.durationDom = this.find('.time-duration');\n this.timeDom = this.find('.time-current');\n this.on(Events.DURATION_CHANGE, function () {\n _this2.onTimeUpdate();\n });\n this.on(Events.TIME_UPDATE, function () {\n _this2.onTimeUpdate();\n });\n this.on(Events.EMPTIED, function () {\n _this2.onReset();\n });\n }\n }, {\n key: \"show\",\n value: function show() {\n if (this.mode === 'flex') {\n return;\n }\n\n _get(_getPrototypeOf(Time.prototype), \"show\", this).call(this);\n }\n }, {\n key: \"onTimeUpdate\",\n value: function onTimeUpdate() {\n var player = this.player,\n config = this.config;\n\n if (config.disable || this.isActiving || !player.hasStart) {\n return;\n }\n\n var current = player.currentTime + this.timeOffset;\n\n if (this.mode === 'flex') {\n this.centerCurDom.innerHTML = Util.format(current);\n\n if (this.duration !== Infinity && this.duration > 0) {\n this.centerDurDom.innerHTML = Util.format(this.duration);\n }\n } else {\n this.timeDom.innerHTML = Util.format(current);\n\n if (this.duration !== Infinity && this.duration > 0) {\n this.durationDom.innerHTML = Util.format(this.duration);\n }\n }\n }\n }, {\n key: \"onReset\",\n value: function onReset() {\n if (this.mode === 'flex') {\n this.centerCurDom.innerHTML = Util.format(0);\n this.centerDurDom.innerHTML = Util.format(0);\n } else {\n this.timeDom.innerHTML = Util.format(0);\n this.durationDom.innerHTML = Util.format(0);\n }\n }\n }, {\n key: \"createCenterTime\",\n value: function createCenterTime() {\n var player = this.player;\n\n if (!player.controls || !player.controls.center) {\n return;\n }\n\n var center = player.controls.center;\n this.centerCurDom = Util.createDom('xg-icon', '00:00', {}, 'xgplayer-time left');\n this.centerDurDom = Util.createDom('xg-icon', '00:00', {}, 'xgplayer-time right');\n center.children.length > 0 ? center.insertBefore(this.centerCurDom, center.children[0]) : center.appendChild(this.centerCurDom);\n center.appendChild(this.centerDurDom);\n }\n }, {\n key: \"afterPlayerInit\",\n value: function afterPlayerInit() {\n var config = this.config;\n\n if (this.duration === Infinity || this.playerConfig.isLive) {\n Util.hide(this.durationDom);\n Util.hide(this.timeDom);\n Util.hide(this.find('.time-separator'));\n Util.show(this.find('.time-live-tag'));\n } else {\n Util.hide(this.find('.time-live-tag'));\n }\n\n if (config.hide) {\n this.hide();\n return;\n }\n\n this.show();\n }\n }, {\n key: \"changeLiveState\",\n value: function changeLiveState(isLive) {\n if (isLive) {\n Util.hide(this.durationDom);\n Util.hide(this.timeDom);\n Util.hide(this.find('.time-separator'));\n Util.show(this.find('.time-live-tag'));\n } else {\n Util.hide(this.find('.time-live-tag'));\n Util.show(this.find('.time-separator'));\n Util.show(this.durationDom);\n Util.show(this.timeDom);\n }\n }\n }, {\n key: \"updateTime\",\n value: function updateTime(time) {\n this.isActiving = true;\n\n if (!time && time !== 0 || time > this.duration) {\n return;\n }\n\n if (this.mode === 'flex') {\n this.centerCurDom.innerHTML = Util.format(time);\n return;\n }\n\n this.timeDom.innerHTML = Util.format(time);\n }\n }, {\n key: \"resetActive\",\n value: function resetActive() {\n var _this3 = this;\n\n var player = this.player;\n\n var updateState = function updateState() {\n _this3.isActiving = false;\n };\n\n this.off(Events.SEEKED, updateState);\n\n if (player.isSeeking) {\n this.once(Events.SEEKED, updateState);\n } else {\n this.isActiving = false;\n }\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n var center = this.player.controls.center;\n this.centerCurDom && center.removeChild(this.centerCurDom);\n this.centerCurDom = null;\n this.centerDurDom && center.removeChild(this.centerDurDom);\n this.centerDurDom = null;\n }\n }, {\n key: \"render\",\n value: function render() {\n if (this.config.disable) {\n return;\n }\n\n return \"\\n 00:00\\n /\\n 00:00\\n \".concat(this.i18n.LIVE_TIP, \"\\n \");\n }\n }], [{\n key: \"pluginName\",\n get: function get() {\n return 'time';\n }\n }, {\n key: \"defaultConfig\",\n get: function get() {\n return {\n position: POSITIONS.CONTROLS_LEFT,\n index: 2,\n disable: false\n };\n }\n }]);\n\n return Time;\n}(Plugin);\n\nexport default Time;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport Plugin, { Util, Events, Sniffer, POSITIONS } from '../../plugin';\nvar volumeLargeSvg = \"\";\nvar volumeSmallSvg = \"\";\nvar volumeMutedSvg = \"\";\n/**\n * @typedef {{\n * position?: string, // [可选]插件挂载的dom\n * index?: number // [可选]插件在播放器中挂载的位置\n * disable?: boolean, // [可选]是否禁用插件交互行为\n * showValueLabel?: boolean, // [可选]是否显示当前滑动的音量数值\n * default?: number // [可选]默认\n * [propName: string]: any\n * }} IVolumeConfig\n */\n\nvar Volume = /*#__PURE__*/function (_Plugin) {\n _inherits(Volume, _Plugin);\n\n var _super = _createSuper(Volume);\n\n function Volume() {\n var _this;\n\n _classCallCheck(this, Volume);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"onBarMousedown\", function (e) {\n var _assertThisInitialize = _assertThisInitialized(_this),\n player = _assertThisInitialize.player;\n\n var slider = _this.find('.xgplayer-slider');\n\n var bar = _this.find('.xgplayer-bar');\n\n slider.focus();\n Util.event(e);\n var barRect = bar.getBoundingClientRect();\n var pos = Util.getEventPos(e, player.zoom);\n var height = barRect.height - (pos.clientY - barRect.top);\n pos.h = height;\n pos.barH = barRect.height;\n _this.pos = pos; // 差值小于0,说明点击的不是音量滑块位置 不做响应\n\n if (height < -2) {\n return;\n }\n\n _this.updateVolumePos(height, e);\n\n document.addEventListener('mouseup', _this.onBarMouseUp);\n _this.isStart = true;\n return false;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onBarMouseMove\", function (e) {\n if (!_this.isStart) {\n return;\n }\n\n var _assertThisInitialize2 = _assertThisInitialized(_this),\n pos = _assertThisInitialize2.pos,\n player = _assertThisInitialize2.player;\n\n e.preventDefault();\n e.stopPropagation();\n Util.event(e);\n\n var _ePos = Util.getEventPos(e, player.zoom);\n\n _this.isMoving = true;\n var w = pos.h - _ePos.clientY + pos.clientY;\n\n if (w > pos.barH) {\n return;\n }\n\n _this.updateVolumePos(w, e);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onBarMouseUp\", function (e) {\n Util.event(e);\n document.removeEventListener('mouseup', _this.onBarMouseUp);\n _this.isStart = false;\n _this.isMoving = false;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onMouseenter\", function (e) {\n Util.addClass(_this.root, 'slide-show');\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onMouseleave\", function (e) {\n Util.removeClass(_this.root, 'slide-show');\n _this.isStart && _this.onBarMouseUp(e);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onVolumeChange\", function (e) {\n if (!_this.player) {\n return;\n }\n\n var _this$player = _this.player,\n muted = _this$player.muted,\n volume = _this$player.volume;\n\n if (!_this.isMoving) {\n _this.find('.xgplayer-drag').style.height = muted || volume === 0 ? '4px' : \"\".concat(volume * 100, \"%\");\n\n if (_this.config.showValueLabel) {\n _this.updateVolumeValue();\n }\n }\n\n _this.animate(muted, volume);\n });\n\n return _this;\n }\n\n _createClass(Volume, [{\n key: \"registerIcons\",\n value: function registerIcons() {\n return {\n volumeSmall: {\n icon: volumeSmallSvg,\n class: 'xg-volume-small'\n },\n volumeLarge: {\n icon: volumeLargeSvg,\n class: 'xg-volume'\n },\n volumeMuted: {\n icon: volumeMutedSvg,\n class: 'xg-volume-mute'\n }\n };\n }\n }, {\n key: \"afterCreate\",\n value: function afterCreate() {\n var _this2 = this;\n\n if (this.config.disable) {\n return;\n }\n\n this.initIcons();\n var _this$playerConfig = this.playerConfig,\n commonStyle = _this$playerConfig.commonStyle,\n volume = _this$playerConfig.volume;\n\n if (commonStyle.volumeColor) {\n this.find('.xgplayer-drag').style.backgroundColor = commonStyle.volumeColor;\n }\n\n this.changeMutedHandler = this.hook('muted_change', function (e) {\n _this2.changeMuted(e);\n }, {\n pre: function pre(e) {\n e.preventDefault();\n e.stopPropagation();\n }\n });\n\n if (!(Sniffer.device === 'mobile') && !this.playerConfig.isMobileSimulateMode) {\n this.bind('mouseenter', this.onMouseenter);\n this.bind(['blur', 'mouseleave'], this.onMouseleave);\n this.bind('.xgplayer-slider', 'mousedown', this.onBarMousedown);\n this.bind('.xgplayer-slider', 'mousemove', this.onBarMouseMove);\n this.bind('.xgplayer-slider', 'mouseup', this.onBarMouseUp);\n }\n\n this.bind('.xgplayer-icon', ['touchend', 'click'], this.changeMutedHandler);\n this.on(Events.VOLUME_CHANGE, this.onVolumeChange);\n this.once(Events.LOADED_DATA, this.onVolumeChange);\n\n if (Util.typeOf(volume) !== 'Number') {\n this.player.volume = this.config.default;\n }\n\n this.onVolumeChange();\n }\n }, {\n key: \"updateVolumePos\",\n value: function updateVolumePos(height, event) {\n var player = this.player;\n var drag = this.find('.xgplayer-drag');\n var bar = this.find('.xgplayer-bar');\n\n if (!bar || !drag) {\n return;\n }\n\n var now = parseInt(height / bar.getBoundingClientRect().height * 1000, 10);\n drag.style.height = \"\".concat(height, \"px\");\n var to = Math.max(Math.min(now / 1000, 1), 0);\n var props = {\n volume: {\n from: player.volume,\n to: to\n }\n };\n\n if (player.muted) {\n props.muted = {\n from: true,\n to: false\n };\n }\n\n this.emitUserAction(event, 'change_volume', {\n muted: player.muted,\n volume: player.volume,\n props: props\n });\n player.volume = Math.max(Math.min(now / 1000, 1), 0);\n player.muted && (player.muted = false);\n\n if (this.config.showValueLabel) {\n this.updateVolumeValue();\n }\n }\n /**\n * 修改音量数值标签\n *\n * @memberof Volume\n */\n\n }, {\n key: \"updateVolumeValue\",\n value: function updateVolumeValue() {\n var _this$player2 = this.player,\n volume = _this$player2.volume,\n muted = _this$player2.muted;\n var $labelValue = this.find('.xgplayer-value-label');\n var vol = Math.max(Math.min(volume, 1), 0);\n $labelValue.innerText = muted ? 0 : Math.ceil(vol * 100);\n }\n }, {\n key: \"changeMuted\",\n value: function changeMuted(e) {\n // e.preventDefault()\n e && e.stopPropagation();\n var player = this.player; // 取消bar的状态\n\n this.isStart && this.onBarMouseUp(e);\n this.emitUserAction(e, 'change_muted', {\n muted: player.muted,\n volume: player.volume,\n props: {\n muted: {\n from: player.muted,\n to: !player.muted\n }\n }\n });\n\n if (player.volume > 0) {\n player.muted = !player.muted;\n }\n\n if (player.volume < 0.01) {\n player.volume = this.config.miniVolume;\n }\n }\n }, {\n key: \"animate\",\n value: function animate(muted, volume) {\n if (muted || volume === 0) {\n this.setAttr('data-state', 'mute');\n } else if (volume < 0.5 && this.icons.volumeSmall) {\n this.setAttr('data-state', 'small');\n } else {\n this.setAttr('data-state', 'normal');\n }\n }\n }, {\n key: \"initIcons\",\n value: function initIcons() {\n var icons = this.icons;\n this.appendChild('.xgplayer-icon', icons.volumeSmall);\n this.appendChild('.xgplayer-icon', icons.volumeLarge);\n this.appendChild('.xgplayer-icon', icons.volumeMuted);\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.unbind('mouseenter', this.onMouseenter);\n this.unbind(['blur', 'mouseleave'], this.onMouseleave);\n this.unbind('.xgplayer-slider', 'mousedown', this.onBarMousedown);\n this.unbind('.xgplayer-slider', 'mousemove', this.onBarMouseMove);\n this.unbind('.xgplayer-slider', 'mouseup', this.onBarMouseUp);\n document.removeEventListener('mouseup', this.onBarMouseUp);\n this.unbind('.xgplayer-icon', Sniffer.device === 'mobile' ? 'touchend' : 'click', this.changeMutedHandler);\n }\n }, {\n key: \"render\",\n value: function render() {\n if (this.config.disable) {\n return;\n }\n\n var volume = this.config.default || this.player.volume;\n var isShowVolumeValue = this.config.showValueLabel;\n return \"\\n \\n
\\n
\\n \\n \".concat(isShowVolumeValue ? \"
\".concat(volume * 100, \"
\") : '', \"\\n
\\n \\n
\\n
\\n
\");\n }\n }], [{\n key: \"pluginName\",\n get: function get() {\n return 'volume';\n }\n /**\n * @type IVolumeConfig\n */\n\n }, {\n key: \"defaultConfig\",\n get: function get() {\n return {\n position: POSITIONS.CONTROLS_RIGHT,\n // [可选]插件挂载的dom\n index: 1,\n // [可选]插件在播放器中挂载的位置\n disable: false,\n // [可选]是否禁用插件交互行为\n showValueLabel: false,\n // [可选]是否显示当前滑动的音量数值\n default: 0.6,\n // [可选]默认音量\n miniVolume: 0.2 // 静音恢复的时候最小音量\n\n };\n }\n }]);\n\n return Volume;\n}(Plugin);\n\nexport default Volume;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport Plugin, { POSITIONS, Util } from '../../plugin';\nimport { Events } from '../../plugin/basePlugin';\nvar RotateSvg = \"\";\n\nvar Rotate = /*#__PURE__*/function (_Plugin) {\n _inherits(Rotate, _Plugin);\n\n var _super = _createSuper(Rotate);\n\n function Rotate(args) {\n var _this;\n\n _classCallCheck(this, Rotate);\n\n _this = _super.call(this, args);\n _this.rotateDeg = _this.config.rotateDeg || 0;\n return _this;\n }\n\n _createClass(Rotate, [{\n key: \"beforeCreate\",\n value: function beforeCreate(args) {\n if (typeof args.player.config.rotate === 'boolean') {\n args.config.disable = !args.player.config.rotate;\n }\n }\n }, {\n key: \"afterCreate\",\n value: function afterCreate() {\n var _this2 = this;\n\n if (this.config.disable) {\n return;\n }\n\n this.appendChild('.xgplayer-icon', this.icons.rotate);\n this.onBtnClick = this.onBtnClick.bind(this);\n this.bind('.xgplayer-icon', ['click', 'touchend'], this.onBtnClick); // 全屏/css全屏/容器宽高发生变化 需要重新计算\n\n this.on(Events.VIDEO_RESIZE, function () {\n // console.log('Events.VIDEO_RESIZE')\n if (_this2.rotateDeg) {\n Util.setTimeout(_this2, function () {\n _this2.updateRotateDeg(_this2.rotateDeg, _this2.config.innerRotate);\n }, 100);\n }\n });\n\n if (this.rotateDeg) {\n this.updateRotateDeg(this.rotateDeg, this.config.innerRotate);\n }\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.unbind('.xgplayer-icon', ['click', 'touchend'], this.onBtnClick);\n }\n }, {\n key: \"onBtnClick\",\n value: function onBtnClick(e) {\n e.preventDefault();\n e.stopPropagation();\n this.emitUserAction(e, 'rotate');\n this.rotate(this.config.clockwise, this.config.innerRotate, 1);\n }\n }, {\n key: \"updateRotateDeg\",\n value: function updateRotateDeg(rotateDeg, innerRotate) {\n var player = this.player;\n\n if (!rotateDeg) {\n rotateDeg = 0;\n }\n\n var _this$player = this.player,\n root = _this$player.root,\n innerContainer = _this$player.innerContainer,\n video = _this$player.video;\n var width = root.offsetWidth;\n var height = innerContainer && innerRotate ? innerContainer.offsetHeight : root.offsetHeight;\n var rWidth = '100%';\n var rHeight = '100%';\n var x = 0;\n var y = 0;\n\n if (rotateDeg === 0.75 || rotateDeg === 0.25) {\n rWidth = \"\".concat(height, \"px\");\n rHeight = \"\".concat(width, \"px\");\n x = -(height - width) / 2;\n y = -(width - height) / 2;\n }\n\n var _transform = \"translate(\".concat(x, \"px,\").concat(y, \"px) rotate(\").concat(rotateDeg, \"turn)\");\n\n var _styles = {\n transformOrigin: 'center center',\n transform: _transform,\n webKitTransform: _transform,\n height: rHeight,\n width: rWidth\n };\n\n var _target = innerRotate ? video : root;\n\n var poster = innerRotate ? player.getPlugin('poster') : null;\n Object.keys(_styles).map(function (key) {\n _target.style[key] = _styles[key];\n poster && poster.root && (poster.root.style[key] = _styles[key]);\n });\n }\n }, {\n key: \"rotate\",\n value: function rotate() {\n var clockwise = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var innerRotate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var times = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n var player = this.player;\n\n if (!this.rotateDeg) {\n this.rotateDeg = 0;\n }\n\n var factor = clockwise ? 1 : -1;\n this.rotateDeg = (this.rotateDeg + 1 + factor * 0.25 * times) % 1;\n this.updateRotateDeg(this.rotateDeg, innerRotate);\n player.emit(Events.ROTATE, this.rotateDeg * 360);\n }\n }, {\n key: \"registerIcons\",\n value: function registerIcons() {\n return {\n rotate: RotateSvg\n };\n }\n }, {\n key: \"render\",\n value: function render() {\n if (this.config.disable) {\n return;\n }\n\n return \"\\n \\n
\\n
\\n
\\n \").concat(this.i18n.ROTATE_TIPS, \"\\n
\\n
\");\n }\n }], [{\n key: \"pluginName\",\n get: function get() {\n return 'rotate';\n }\n }, {\n key: \"defaultConfig\",\n get: function get() {\n return {\n position: POSITIONS.CONTROLS_RIGHT,\n index: 6,\n innerRotate: true,\n // true为只有画面旋转,false为整个播放器旋转\n clockwise: false,\n rotateDeg: 0,\n // 初始旋转角度\n disable: false\n };\n }\n }]);\n\n return Rotate;\n}(Plugin);\n\nexport { Rotate as default };","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport Plugin, { Events, Util, POSITIONS } from '../../plugin';\nvar PipIcon = \"\";\nvar PipIconExit = \"\";\n/**\n * @description picture-in-picture plugin\n * @doc https://www.w3.org/TR/picture-in-picture/\n * @doc https://developer.apple.com/documentation/webkitjs/adding_picture_in_picture_to_your_safari_media_controls\n */\n\nvar PresentationMode = {\n PIP: 'picture-in-picture',\n INLINE: 'inline',\n FULLSCREEN: 'fullscreen'\n};\n\nvar PIP = /*#__PURE__*/function (_Plugin) {\n _inherits(PIP, _Plugin);\n\n var _super = _createSuper(PIP);\n\n function PIP() {\n var _this;\n\n _classCallCheck(this, PIP);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"switchPIP\", function (e) {\n if (!_this.isPIPAvailable()) {\n return false;\n }\n\n e.stopPropagation();\n\n if (_this.isPip) {\n _this.exitPIP();\n\n _this.emitUserAction(e, 'change_pip', {\n from: 'pip',\n to: 'normal'\n });\n\n _this.setAttr('data-state', 'normal');\n } else if (_this.player.video.readyState === 4) {\n _this.requestPIP();\n\n _this.emitUserAction(e, 'change_pip', {\n from: 'normal',\n to: 'pip'\n });\n\n _this.setAttr('data-state', 'pip');\n }\n });\n\n return _this;\n }\n\n _createClass(PIP, [{\n key: \"beforeCreate\",\n value: function beforeCreate(args) {\n if (typeof args.player.config.pip === 'boolean') {\n args.config.showIcon = args.player.config.pip;\n }\n }\n }, {\n key: \"afterCreate\",\n value: function afterCreate() {\n var _this2 = this;\n\n // 非可用状态不做初始化\n if (!this.isPIPAvailable()) {\n return;\n }\n\n this.pMode = PresentationMode.INLINE;\n this.initPipEvents(); // 确认开启按钮的情况下才初始化按钮\n\n if (this.config.showIcon) {\n this.initIcons();\n } // video初始化之后再做判断是否显示\n\n\n this.once(Events.COMPLETE, function () {\n if (_this2.config.showIcon) {\n Util.removeClass(_this2.find('.xgplayer-icon'), 'xg-icon-disable');\n\n _this2.bind('click', _this2.switchPIP);\n }\n });\n }\n }, {\n key: \"registerIcons\",\n value: function registerIcons() {\n return {\n pipIcon: {\n icon: PipIcon,\n class: 'xg-get-pip'\n },\n pipIconExit: {\n icon: PipIconExit,\n class: 'xg-exit-pip'\n }\n };\n }\n }, {\n key: \"initIcons\",\n value: function initIcons() {\n var icons = this.icons;\n this.appendChild('.xgplayer-icon', icons.pipIcon);\n this.appendChild('.xgplayer-icon', icons.pipIconExit);\n }\n }, {\n key: \"initPipEvents\",\n value: function initPipEvents() {\n var _this3 = this;\n\n var player = this.player;\n\n this.leavePIPCallback = function () {\n // 处理点击x关闭画中画的时候暂停问题\n var paused = player.paused;\n Util.setTimeout(_this3, function () {\n // 使用videoPlay避免多次触发 playhooks\n !paused && player.videoPlay();\n }, 0);\n !paused && player.videoPlay();\n\n _this3.setAttr('data-state', 'normal');\n\n player.emit(Events.PIP_CHANGE, false);\n };\n\n this.enterPIPCallback = function (e) {\n player.emit(Events.PIP_CHANGE, true);\n _this3.pipWindow = e.pictureInPictureWindow;\n\n _this3.setAttr('data-state', 'pip');\n };\n\n this.onWebkitpresentationmodechanged = function (e) {\n var mode = player.video.webkitPresentationMode; // 如果在全屏下进入了该逻辑,调用退出全屏处理\n\n if (_this3.pMode === PresentationMode.FULLSCREEN && mode !== PresentationMode.FULLSCREEN) {\n player.onFullscreenChange(null, false);\n }\n\n _this3.pMode = mode;\n\n if (mode === PresentationMode.PIP) {\n _this3.enterPIPCallback(e);\n } else if (mode === PresentationMode.INLINE) {\n _this3.leavePIPCallback(e);\n }\n };\n\n if (player.video) {\n player.video.addEventListener('enterpictureinpicture', this.enterPIPCallback);\n player.video.addEventListener('leavepictureinpicture', this.leavePIPCallback);\n PIP.checkWebkitSetPresentationMode(player.video) && player.video.addEventListener('webkitpresentationmodechanged', this.onWebkitpresentationmodechanged);\n }\n }\n }, {\n key: \"requestPIP\",\n value:\n /*\n * 进入画中画\n */\n function requestPIP() {\n var player = this.player,\n playerConfig = this.playerConfig;\n\n if (!this.isPIPAvailable() || this.isPip) {\n return;\n }\n\n try {\n var poster = playerConfig.poster;\n\n if (poster) {\n player.video.poster = Util.typeOf(poster) === 'String' ? poster : poster.poster;\n }\n\n PIP.checkWebkitSetPresentationMode(player.video) ? player.video.webkitSetPresentationMode('picture-in-picture') : player.video.requestPictureInPicture();\n return true;\n } catch (reason) {\n console.error('requestPiP', reason);\n return false;\n }\n }\n /**\n * 退出画中画\n */\n\n }, {\n key: \"exitPIP\",\n value: function exitPIP() {\n var player = this.player;\n\n try {\n if (this.isPIPAvailable() && this.isPip) {\n PIP.checkWebkitSetPresentationMode(player.video) ? player.video.webkitSetPresentationMode('inline') : document.exitPictureInPicture();\n }\n\n return true;\n } catch (reason) {\n console.error('exitPIP', reason);\n return false;\n }\n }\n }, {\n key: \"isPip\",\n get: function get() {\n var player = this.player;\n return document.pictureInPictureElement && document.pictureInPictureElement === player.video || player.video.webkitPresentationMode === PresentationMode.PIP;\n }\n }, {\n key: \"isPIPAvailable\",\n value: function isPIPAvailable() {\n var video = this.player.video;\n return document.pictureInPictureEnabled && (Util.typeOf(video.disablePictureInPicture) === 'Boolean' && !video.disablePictureInPicture || video.webkitSupportsPresentationMode && Util.typeOf(video.webkitSetPresentationMode) === 'Function');\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n var player = this.player;\n player.video.removeEventListener('enterpictureinpicture', this.enterPIPCallback);\n player.video.removeEventListener('leavepictureinpicture', this.leavePIPCallback);\n PIP.checkWebkitSetPresentationMode(player.video) && player.video.removeEventListener('webkitpresentationmodechanged', this.onWebkitpresentationmodechanged);\n this.exitPIP();\n this.unbind('click', this.btnClick);\n }\n }, {\n key: \"render\",\n value: function render() {\n if (!this.config.showIcon && this.isPIPAvailable()) {\n return;\n }\n\n return \"\\n
\\n
\\n
\").concat(this.i18n.PIP, \"
\\n
\");\n }\n }], [{\n key: \"pluginName\",\n get: function get() {\n return 'pip';\n }\n }, {\n key: \"defaultConfig\",\n get: function get() {\n return {\n position: POSITIONS.CONTROLS_RIGHT,\n index: 6,\n showIcon: false\n };\n }\n }, {\n key: \"checkWebkitSetPresentationMode\",\n value: function checkWebkitSetPresentationMode(video) {\n return typeof video.webkitSetPresentationMode === 'function';\n }\n }]);\n\n return PIP;\n}(Plugin);\n\nexport default PIP;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/**\n * 下一个按钮组件\n */\nimport Plugin, { POSITIONS, Sniffer, Events } from '../../plugin';\nvar Next = \"\";\n\nvar PlayNextIcon = /*#__PURE__*/function (_Plugin) {\n _inherits(PlayNextIcon, _Plugin);\n\n var _super = _createSuper(PlayNextIcon);\n\n function PlayNextIcon(options) {\n var _this;\n\n _classCallCheck(this, PlayNextIcon);\n\n _this = _super.call(this, options);\n\n _defineProperty(_assertThisInitialized(_this), \"playNext\", function (e) {\n var _assertThisInitialize = _assertThisInitialized(_this),\n player = _assertThisInitialize.player;\n\n e.preventDefault();\n e.stopPropagation();\n\n if (_this.idx + 1 < _this.config.urlList.length) {\n _this.idx++;\n player.emit(Events.PLAYNEXT, _this.idx + 1);\n\n _this.nextHandler(_this.config.urlList[_this.idx], _this.idx);\n } else {\n _this.nextHandler();\n\n player.emit(Events.PLAYNEXT);\n }\n });\n\n _this.idx = -1;\n return _this;\n }\n\n _createClass(PlayNextIcon, [{\n key: \"afterCreate\",\n value: function afterCreate() {\n if (!this.config.urlList || this.config.urlList.length === 0) {\n return;\n }\n\n this.appendChild('.xgplayer-icon', this.icons.playNext);\n this.initEvents();\n }\n }, {\n key: \"registerIcons\",\n value: function registerIcons() {\n return {\n playNext: Next\n };\n }\n }, {\n key: \"initEvents\",\n value: function initEvents() {\n this.nextHandler = this.hook('playNext', this.changeSrc);\n var event = Sniffer.device === 'mobile' ? 'touchend' : 'click';\n this.bind(event, this.playNext);\n this.show();\n }\n }, {\n key: \"changeSrc\",\n value: function changeSrc(url) {\n var player = this.player;\n\n if (!url) {\n return;\n }\n\n player.pause();\n player.currentTime = 0;\n player.autoplay = true;\n player.src = url;\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.unbind(['touchend', 'click'], this.playNext);\n }\n }, {\n key: \"render\",\n value: function render() {\n if (!this.config.urlList || this.config.urlList.length === 0) {\n return;\n }\n\n return \"\\n \\n
\\n
\\n
\".concat(this.i18n.PLAYNEXT_TIPS, \"
\\n
\\n \");\n }\n }], [{\n key: \"pluginName\",\n get: function get() {\n return 'playNext';\n }\n }, {\n key: \"defaultConfig\",\n get: function get() {\n return {\n position: POSITIONS.CONTROLS_LEFT,\n index: 1,\n url: null,\n urlList: []\n };\n }\n }]);\n\n return PlayNextIcon;\n}(Plugin);\n\nexport { PlayNextIcon as default };","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport downloadUtil from 'downloadjs';\nimport Plugin, { POSITIONS } from '../../plugin';\nvar DownloadSvg = \"\";\n/**\n * @typedef { {\n * position: string,\n * index: number,\n * disable: boolean,\n * [propName: string]: any\n * } } IDownloadConfig\n */\n\nvar Download = /*#__PURE__*/function (_Plugin) {\n _inherits(Download, _Plugin);\n\n var _super = _createSuper(Download);\n\n function Download(args) {\n var _this;\n\n _classCallCheck(this, Download);\n\n _this = _super.call(this, args);\n\n _defineProperty(_assertThisInitialized(_this), \"download\", function (e) {\n if (_this.isLock) {\n return;\n }\n\n _this.emitUserAction(e, 'download');\n\n var url = _this.getAbsoluteURL(_this.player.src);\n\n downloadUtil(url);\n _this.isLock = true;\n _this.timer = window.setTimeout(function () {\n _this.isLock = false;\n window.clearTimeout(_this.timer);\n _this.timer = null;\n }, 300);\n });\n\n _this.timer = null;\n _this.isLock = false;\n return _this;\n }\n\n _createClass(Download, [{\n key: \"beforeCreate\",\n value: function beforeCreate(args) {\n if (typeof args.player.config.download === 'boolean') {\n args.config.disable = !args.player.config.download;\n }\n }\n }, {\n key: \"afterCreate\",\n value: function afterCreate() {\n if (this.config.disable) {\n return;\n }\n\n this.appendChild('.xgplayer-icon', this.icons.download);\n this.bind(['click', 'touchend'], this.download);\n }\n }, {\n key: \"registerIcons\",\n value: function registerIcons() {\n return {\n download: DownloadSvg\n };\n }\n }, {\n key: \"getAbsoluteURL\",\n value: function getAbsoluteURL(url) {\n // Check if absolute URL\n if (!url.match(/^https?:\\/\\//)) {\n var div = document.createElement('div');\n div.innerHTML = \"x\");\n url = div.firstChild.href;\n }\n\n return url;\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.unbind(['click', 'touchend'], this.download);\n window.clearTimeout(this.timer);\n this.timer = null;\n }\n }, {\n key: \"render\",\n value: function render() {\n if (this.config.disable) {\n return;\n }\n\n return \"\\n
\\n
\\n
\").concat(this.i18n.DOWNLOAD_TIPS, \"
\\n
\");\n }\n }], [{\n key: \"pluginName\",\n get: function get() {\n return 'downloadIcon';\n }\n /**\n * @type IDownloadConfig\n */\n\n }, {\n key: \"defaultConfig\",\n get: function get() {\n return {\n position: POSITIONS.CONTROLS_RIGHT,\n index: 3,\n disable: true\n };\n }\n }]);\n\n return Download;\n}(Plugin);\n\nexport { Download as default };","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport Plugin, { POSITIONS, Events } from '../../plugin';\n\nvar ScreenShot = /*#__PURE__*/function (_Plugin) {\n _inherits(ScreenShot, _Plugin);\n\n var _super = _createSuper(ScreenShot);\n\n function ScreenShot() {\n _classCallCheck(this, ScreenShot);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(ScreenShot, [{\n key: \"beforeCreate\",\n value: function beforeCreate(args) {\n if (typeof args.player.config.screenShot === 'boolean') {\n args.config.disable = !args.player.config.screenShot;\n }\n }\n }, {\n key: \"afterCreate\",\n value: function afterCreate() {\n this.appendChild('.xgplayer-icon', this.icons.screenshotIcon);\n var config = this.config;\n\n this.initSize = function (data) {\n if (config.fitVideo) {\n config.width = data.vWidth;\n config.height = data.vHeight;\n }\n };\n\n this.once(Events.VIDEO_RESIZE, this.initSize);\n }\n }, {\n key: \"onPluginsReady\",\n value: function onPluginsReady() {\n this.show();\n this.onClickBtn = this.onClickBtn.bind(this);\n this.bind(['click', 'touchend'], this.onClickBtn);\n }\n }, {\n key: \"saveScreenShot\",\n value: function saveScreenShot(data, filename) {\n var saveLink = document.createElement('a');\n saveLink.href = data;\n saveLink.download = filename;\n var event = document.createEvent('MouseEvents');\n event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n saveLink.dispatchEvent(event);\n }\n }, {\n key: \"createCanvans\",\n value: function createCanvans(width, height) {\n var canvas = document.createElement('canvas');\n this.canvasCtx = canvas.getContext('2d');\n this.canvas = canvas;\n canvas.width = width || this.config.width;\n canvas.height = height || this.config.height;\n }\n }, {\n key: \"onClickBtn\",\n value: function onClickBtn(e) {\n var _this = this;\n\n e.preventDefault();\n e.stopPropagation();\n this.emitUserAction(e, 'shot');\n this.shot().then(function (data) {\n _this.emit(Events.SCREEN_SHOT, data);\n\n _this.saveScreenShot(data, _this.config.name + _this.config.format);\n });\n }\n }, {\n key: \"shot\",\n value: function shot(width, height) {\n var _this2 = this;\n\n var option = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n quality: 0.92,\n type: 'image/png'\n };\n var config = this.config,\n player = this.player;\n var quality = option.quality || config.quality;\n var type = option.type || config.type;\n return new Promise(function (resolve, reject) {\n if (!_this2.canvas) {\n _this2.createCanvans(width, height);\n } else {\n _this2.canvas.width = width || config.width;\n _this2.canvas.height = height || config.height;\n }\n\n _this2.canvasCtx.drawImage(player.video, 0, 0, width || config.width, height || config.height);\n\n var src = _this2.canvas.toDataURL(type, quality).replace(type, 'image/octet-stream');\n\n src = src.replace(/^data:image\\/[^;]+/, 'data:application/octet-stream');\n resolve(src);\n });\n }\n }, {\n key: \"registerIcons\",\n value: function registerIcons() {\n return {\n screenshotIcon: null\n };\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.unbind(['click', 'touchend'], this.onClickBtn);\n this.off(Events.VIDEO_RESIZE, this.initSize);\n }\n }, {\n key: \"render\",\n value: function render() {\n if (this.config.disable) {\n return;\n }\n\n var className = this.icons.screenshotIcon ? 'xgplayer-icon' : 'xgplayer-icon btn-text';\n var langKey = 'SCREENSHOT';\n return \"\\n \\n
\\n \").concat(this.icons.screenshotIcon ? '' : \"\").concat(this.i18n[langKey], \"\"), \" \\n
\\n
\");\n }\n }], [{\n key: \"pluginName\",\n get: function get() {\n return 'screenShot';\n }\n }, {\n key: \"defaultConfig\",\n get: function get() {\n return {\n position: POSITIONS.CONTROLS_RIGHT,\n index: 5,\n quality: 0.92,\n type: 'image/png',\n format: '.png',\n width: 600,\n height: 337,\n fitVideo: true,\n disable: false,\n name: 'screenshot'\n };\n }\n }]);\n\n return ScreenShot;\n}(Plugin);\n\nexport { ScreenShot as default };","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nimport Plugin, { Util, Sniffer } from '../../plugin';\n\nvar OptionList = /*#__PURE__*/function () {\n function OptionList(args) {\n _classCallCheck(this, OptionList);\n\n this.config = args.config;\n this.parent = args.root;\n this.root = Util.createDom('ul', '', {}, \"xg-options-list \".concat(this.config.className));\n args.root.appendChild(this.root);\n this.onItemClick = this.onItemClick.bind(this);\n this.renderItemList();\n var eventName = Sniffer.device === 'mobile' ? 'touchend' : 'click';\n this._delegates = Plugin.delegate.call(this, this.root, 'li', eventName, this.onItemClick);\n }\n\n _createClass(OptionList, [{\n key: \"renderItemList\",\n value: function renderItemList(data) {\n var _this = this;\n\n var config = this.config,\n root = this.root;\n\n if (data) {\n config.data = data;\n } else {\n data = config.data;\n }\n\n if (config.style) {\n Object.keys(config.style).map(function (key) {\n root.style[key] = config[key];\n });\n }\n\n if (data.length > 0) {\n this.attrKeys = Object.keys(data[0]);\n }\n\n this.root.innerHTML = '';\n data.map(function (item, index) {\n var className = item.selected ? 'option-item selected' : 'option-item';\n item['data-index'] = index;\n\n _this.root.appendChild(Util.createDom('li', \"\".concat(item.showText, \"\"), item, className));\n });\n }\n }, {\n key: \"onItemClick\",\n value: function onItemClick(e) {\n if (!e.delegateTarget) {\n e.delegateTarget = e.target;\n }\n\n var target = e.delegateTarget;\n\n if (target && Util.hasClass(target, 'selected')) {\n return false;\n }\n\n var changeCallback = typeof this.config.onItemClick === 'function' ? this.config.onItemClick : null;\n var curlSelected = this.root.querySelector('.selected');\n Util.addClass(target, 'selected');\n curlSelected && Util.removeClass(curlSelected, 'selected');\n changeCallback(e, {\n from: curlSelected ? this.getAttrObj(curlSelected, this.attrKeys) : null,\n to: this.getAttrObj(target, this.attrKeys)\n });\n }\n }, {\n key: \"getAttrObj\",\n value: function getAttrObj(dom, keys) {\n if (!dom || !keys) {\n return {};\n }\n\n var obj = {};\n keys.map(function (key) {\n obj[key] = dom.getAttribute(key);\n });\n var index = dom.getAttribute('data-index');\n\n if (index) {\n obj.index = Number(index);\n }\n\n return obj;\n }\n }, {\n key: \"show\",\n value: function show() {\n Util.removeClass(this.root, 'hide');\n Util.addClass(this.root, 'active');\n }\n }, {\n key: \"hide\",\n value: function hide() {\n Util.removeClass(this.root, 'active');\n Util.addClass(this.root, 'hide');\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n if (this._delegates) {\n this._delegates.map(function (item) {\n item.destroy && item.destroy();\n });\n\n this._delegates = null;\n }\n\n this.root.innerHTML = null;\n this.parent.removeChild(this.root);\n this.root = null;\n }\n }]);\n\n return OptionList;\n}();\n\nexport { OptionList as default };","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport Plugin, { Events, Util, Sniffer, POSITIONS } from '../../plugin';\nimport OptionList from './optionList';\n/**\n * @typedef {{\n * isShow?: boolean,\n * index?: number,\n * list?: Array,\n * listType?: string,\n * hidePortrait?: boolean,\n * [propName: string]: any\n * }} IOptionsIconConfig\n */\n\nvar IS_MOBILE = Sniffer.device === 'mobile';\n\nvar OptionsIcon = /*#__PURE__*/function (_Plugin) {\n _inherits(OptionsIcon, _Plugin);\n\n var _super = _createSuper(OptionsIcon);\n\n function OptionsIcon(args) {\n var _this;\n\n _classCallCheck(this, OptionsIcon);\n\n _this = _super.call(this, args);\n _this.isActive = false;\n _this.curValue = null; // 当前值\n\n _this.curIndex = 0;\n return _this;\n }\n\n _createClass(OptionsIcon, [{\n key: \"updateLang\",\n value: function updateLang(value) {\n this.renderItemList(this.config.list, this.curIndex);\n }\n }, {\n key: \"afterCreate\",\n value: function afterCreate() {\n var _this2 = this;\n\n var config = this.config;\n\n if (IS_MOBILE && config.listType !== 'middle') {\n config.listType = 'rightSide';\n }\n\n config.hidePortrait && Util.addClass(this.root, 'portrait');\n this.once(Events.CANPLAY, function () {\n if (config.list && config.list.length > 0) {\n _this2.renderItemList(config.list);\n\n _this2.show();\n }\n }); // 移动端控制栏和列表互斥\n\n IS_MOBILE && this.on(Events.PLAYER_FOCUS, function () {\n if (!_this2.isActive) {\n return;\n }\n\n _this2.optionsList && _this2.optionsList.hide();\n _this2.isActive = false;\n });\n this.activeEvent = IS_MOBILE ? 'touchend' : 'mouseenter';\n this.onEnter = this.onEnter.bind(this);\n this.onLeave = this.onLeave.bind(this);\n this.bind(this.activeEvent, this.onEnter);\n this.bind('mouseleave', this.onLeave);\n }\n }, {\n key: \"show\",\n value: function show() {\n if (!this.config.list || this.config.list.length < 2) {\n return;\n }\n\n Util.addClass(this.root, 'show');\n }\n }, {\n key: \"hide\",\n value: function hide() {\n Util.removeClass(this.root, 'show');\n }\n }, {\n key: \"getTextByLang\",\n value: function getTextByLang(item, key, lang) {\n if (item === undefined) {\n return '';\n }\n\n var list = this.config.list;\n !lang && (lang = this.player.lang);\n key = !key || Util.isUndefined(item[key]) ? 'text' : key;\n typeof item === 'number' && (item = list[item]);\n\n try {\n if (_typeof(item[key]) === 'object') {\n return item[key][lang] || item[key].zh;\n } else {\n return item[key];\n }\n } catch (err) {\n console.warn(err);\n return '';\n }\n }\n }, {\n key: \"onEnter\",\n value: function onEnter(e) {\n e.preventDefault();\n e.stopPropagation();\n this.onToggle(true);\n }\n }, {\n key: \"onLeave\",\n value: function onLeave(e) {\n e.preventDefault();\n e.stopPropagation();\n this.isActive && this.onToggle(false);\n } // 状态切换\n\n }, {\n key: \"onToggle\",\n value: function onToggle(isActive) {\n if (isActive === this.isActive) return;\n var controls = this.player.controls;\n var listType = this.config.listType;\n\n if (isActive) {\n listType === 'rightSide' ? controls.blur() : controls.focus();\n this.optionsList && this.optionsList.show();\n } else {\n listType === 'rightSide' ? controls.focus() : controls.unFocus();\n this.optionsList && this.optionsList.hide();\n }\n\n this.isActive = isActive;\n } // 列表点击回调\n\n }, {\n key: \"onItemClick\",\n value: function onItemClick(e, data) {\n e.preventDefault();\n e.stopPropagation();\n var _this$config = this.config,\n listType = _this$config.listType,\n list = _this$config.list;\n (IS_MOBILE || listType === 'rightSide') && this.onToggle(false);\n this.curIndex = data.to.index;\n this.curItem = list[this.curIndex];\n this.changeCurrentText();\n this.onToggle(false);\n }\n }, {\n key: \"changeCurrentText\",\n value: function changeCurrentText() {\n var list = this.config.list;\n var index = this.curIndex < list.length ? this.curIndex : 0;\n var curItem = list[index];\n if (!curItem) return;\n this.find('.icon-text').innerHTML = this.getTextByLang(curItem, 'iconText');\n }\n }, {\n key: \"renderItemList\",\n value: function renderItemList(itemList, curIndex) {\n var _this3 = this;\n\n var config = this.config,\n optionsList = this.optionsList,\n player = this.player;\n\n if (typeof curIndex === 'number') {\n this.curIndex = curIndex;\n this.curItem = config.list[curIndex];\n }\n\n if (optionsList) {\n optionsList.renderItemList(itemList);\n this.changeCurrentText();\n return;\n }\n\n var options = {\n config: {\n data: itemList || [],\n className: config.listType === 'rightSide' ? 'right-side' : '',\n onItemClick: function onItemClick(e, data) {\n _this3.onItemClick(e, data);\n }\n },\n root: config.listType === 'rightSide' ? player.root : this.root\n };\n\n if (this.config.isShowIcon) {\n this.optionsList = new OptionList(options);\n this.changeCurrentText();\n this.show();\n }\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.unbind(this.activeEvent, this.onToggle);\n this.unbind('mouseleave', this.onToggle);\n\n if (this.optionsList) {\n this.optionsList.destroy();\n this.optionsList = null;\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n if (!this.config.isShowIcon) {\n return;\n }\n\n return \"\\n
\\n \\n
\\n
\");\n }\n }], [{\n key: \"pluginName\",\n get: function get() {\n return 'optionsIcon';\n }\n /**\n * @type { IOptionsIconConfig }\n */\n\n }, {\n key: \"defaultConfig\",\n get: function get() {\n return {\n position: POSITIONS.CONTROLS_RIGHT,\n index: 100,\n list: [],\n listType: 'middle',\n // 模式 rightSide-右侧边栏 middle-中间显示\n listStyle: {},\n hidePortrait: true,\n isShowIcon: false\n };\n }\n }]);\n\n return OptionsIcon;\n}(Plugin);\n\nexport { OptionsIcon as default };","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport { Events, POSITIONS, Util } from '../../plugin';\nimport OptionsIcon from '../common/optionsIcon';\n/**\n * @typedef {{\n * text?: string,\n * definition?: any,\n * url: any,\n * text: string | {\n * [propName: string]: any\n * },\n * iconText: string | {\n * [propName: string]: any\n * }\n * }} IDefinition\n */\n\n/**\n * @typedef {{\n * position?: string,\n * index?: number,\n * list?: Array,\n * defaultDefinition?: any,\n * disable?: any,\n * hidePortrait?: boolean,\n * className?: string\n * }} IDefinitionConfig\n */\n\nvar DefinitionIcon = /*#__PURE__*/function (_OptionsIcon) {\n _inherits(DefinitionIcon, _OptionsIcon);\n\n var _super = _createSuper(DefinitionIcon);\n\n function DefinitionIcon(args) {\n var _this;\n\n _classCallCheck(this, DefinitionIcon);\n\n _this = _super.call(this, args); // 记录切换的时候的播放器状态\n\n _this.curTime = 0;\n _this.isPaused = true;\n return _this;\n }\n\n _createClass(DefinitionIcon, [{\n key: \"beforeCreate\",\n value: function beforeCreate(args) {\n var list = args.config.list;\n\n if (Array.isArray(list) && list.length > 0) {\n args.config.list = list.map(function (item) {\n if (!item.text && item.name) {\n item.text = item.name;\n }\n\n if (!item.text) {\n item.text = item.definition;\n }\n\n return item;\n });\n }\n }\n }, {\n key: \"afterCreate\",\n value: function afterCreate() {\n var _this2 = this;\n\n _get(_getPrototypeOf(DefinitionIcon.prototype), \"afterCreate\", this).call(this);\n\n this.on('resourceReady', function (list) {\n _this2.changeDefinitionList(list);\n });\n this.on(Events.DEFINITION_CHANGE, function (data) {\n _this2.renderItemList(data.to);\n });\n\n if (this.player.definitionList.length < 2) {\n this.hide();\n }\n }\n }, {\n key: \"initDefinition\",\n value: function initDefinition() {\n var _this$config = this.config,\n list = _this$config.list,\n defaultDefinition = _this$config.defaultDefinition;\n\n if (list.length > 0) {\n var to = null;\n list.map(function (item) {\n if (item.definition === defaultDefinition) {\n to = item;\n }\n });\n\n if (!to) {\n to = list[0];\n }\n\n this.changeDefinition(to);\n }\n }\n }, {\n key: \"renderItemList\",\n value: function renderItemList(to) {\n var _this3 = this;\n\n var player = this.player;\n var list = this.config.list;\n var currentSrc = to && to.url ? to.url : player.currentSrc || player.src;\n var definition = to && to.definition ? to.definition : this.config.defaultDefinition;\n\n if (to && !Array.isArray(to)) {\n list.forEach(function (item) {\n item.selected = false;\n });\n }\n\n var curIndex = 0;\n var items = list.map(function (item, index) {\n var showItem = {\n url: item.url,\n definition: item.definition || '',\n showText: _this3.getTextByLang(item) || item.definition,\n selected: false\n };\n\n if (item.selected || item.url === currentSrc || !Util.isUndefined(item.definition) && item.definition === definition) {\n showItem.selected = true;\n curIndex = index;\n }\n\n return showItem;\n });\n\n _get(_getPrototypeOf(DefinitionIcon.prototype), \"renderItemList\", this).call(this, items, curIndex);\n } // onCanplayChangeDefinition () {\n // const { player } = this\n // player.currentTime = this.curTime\n // if (!this.isPaused) {\n // const playPromise = player.play()\n // if (playPromise !== undefined && playPromise) {\n // // eslint-disable-next-line handle-callback-err\n // playPromise.catch(_err => {})\n // }\n // } else {\n // player.pause()\n // }\n // player.emit(Events.AFTER_DEFINITION_CHANGE)\n // }\n // onTimeupdateChangeDefinition () {\n // this.once('timeupdate', () => {\n // this.onCanplayChangeDefinition()\n // })\n // };\n // switchUrl (lastATag) {\n // const { player } = this\n // let curRUL = document.createElement('a');\n // ['mp4', 'hls', '__flv__', 'dash', 'hlsjs'].every(item => {\n // if (player[item]) {\n // if (player[item].url) {\n // curRUL.href = player[item].url\n // }\n // if (item === '__flv__') {\n // if (player[item]._options) {\n // curRUL.href = player[item]._options.url\n // } else {\n // curRUL.href = player[item]._mediaDataSource.url\n // }\n // }\n // if (item === 'hlsjs') {\n // curRUL.href = player[item].originUrl || player[item].url\n // }\n // return false\n // } else {\n // return true\n // }\n // })\n // if (lastATag && curRUL.href !== lastATag.url && !player.ended) {\n // player.switchURL(lastATag.url)\n // }\n // curRUL = null\n // }\n // 对外暴露 切换清晰度\n\n }, {\n key: \"changeDefinitionList\",\n value: function changeDefinitionList(list) {\n if (!Array.isArray(list)) {\n return;\n }\n\n this.config.list = list.map(function (item) {\n if (!item.text && item.name) {\n item.text = item.name;\n }\n\n if (!item.text) {\n item.text = item.definition;\n }\n\n return item;\n });\n this.renderItemList();\n this.config.list.length < 2 ? this.hide() : this.show();\n }\n }, {\n key: \"changeDefinition\",\n value: function changeDefinition(to, from) {\n var player = this.player;\n\n if (player.switchURL) {\n player.switchUrl(to.url);\n } else {\n player.changeDefinition(to, from);\n }\n }\n }, {\n key: \"onItemClick\",\n value: function onItemClick(e, data) {\n _get(_getPrototypeOf(DefinitionIcon.prototype), \"onItemClick\", this).apply(this, arguments); // const { player } = this\n // const target = e.delegateTarget\n // const url = target.getAttribute('url')\n\n\n this.emitUserAction(e, 'change_definition', {\n from: data.from,\n to: data.to\n }); // player.emit(Events.BEFORE_DEFINITION_CHANGE, url)\n\n this.player.changeDefinition(data.to, data.from); // player.emit(Events.DEFINITION_CHANGE, { from: data.from, to: data.to })\n }\n }], [{\n key: \"pluginName\",\n get: function get() {\n return 'definition';\n }\n /**\n * @type IDefinitionConfig\n */\n\n }, {\n key: \"defaultConfig\",\n get: function get() {\n return {\n position: POSITIONS.CONTROLS_RIGHT,\n index: 3,\n list: [],\n defaultDefinition: '',\n disable: false,\n hidePortrait: false,\n // 是否在移动端竖屏状态下隐藏\n className: 'xgplayer-definition',\n isShowIcon: true\n };\n }\n }]);\n\n return DefinitionIcon;\n}(OptionsIcon);\n\nexport { DefinitionIcon as default };","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport { Events, POSITIONS } from '../../plugin';\nimport OptionsIcon from '../common/optionsIcon';\n/**\n * @typedef {{\n * position?: string,\n * index?: number,\n * list?: Array,\n * className?: string,\n * hidePortrait?: boolean,\n * [propName: string]: any\n * }} IPlaybackRateConfig\n */\n\nvar PlaybackRate = /*#__PURE__*/function (_OptionsIcon) {\n _inherits(PlaybackRate, _OptionsIcon);\n\n var _super = _createSuper(PlaybackRate);\n\n function PlaybackRate(args) {\n var _this;\n\n _classCallCheck(this, PlaybackRate);\n\n _this = _super.call(this, args);\n _this.curRate = 1;\n return _this;\n }\n\n _createClass(PlaybackRate, [{\n key: \"beforeCreate\",\n value: function beforeCreate(args) {\n var playbackRate = args.player.config.playbackRate;\n var list = !playbackRate ? [] : Array.isArray(playbackRate) ? playbackRate : args.config.list;\n\n if (Array.isArray(list)) {\n args.config.list = list.map(function (item) {\n if (typeof item === 'number') {\n item = {\n rate: item,\n text: \"\".concat(item, \"x\")\n };\n } else if (!item.text && item.rate) {\n item.text = \"\".concat(item.rate, \"x\");\n }\n\n return item;\n });\n }\n }\n }, {\n key: \"afterCreate\",\n value: function afterCreate() {\n var _this2 = this;\n\n _get(_getPrototypeOf(PlaybackRate.prototype), \"afterCreate\", this).call(this);\n\n this.on(Events.RATE_CHANGE, function () {\n if (_this2.curValue === _this2.player.playbackRate) {\n return;\n }\n\n _this2.renderItemList();\n });\n this.renderItemList();\n }\n }, {\n key: \"show\",\n value: function show() {\n if (!this.config.list || this.config.list.length === 0) {\n return;\n }\n\n _get(_getPrototypeOf(PlaybackRate.prototype), \"show\", this).call(this);\n }\n }, {\n key: \"onItemClick\",\n value: function onItemClick(e, data) {\n _get(_getPrototypeOf(PlaybackRate.prototype), \"onItemClick\", this).apply(this, arguments);\n\n var target = e.delegateTarget;\n var rate = Number(target.getAttribute('rate'));\n\n if (!rate || rate === this.curValue) {\n return false;\n }\n\n this.emitUserAction(e, 'change_rate', {\n from: this.player.playbackRate,\n to: rate\n });\n this.curValue = rate;\n this.player.playbackRate = rate;\n }\n }, {\n key: \"renderItemList\",\n value: function renderItemList() {\n var _this3 = this;\n\n var playbackRate = this.player.playbackRate || 1;\n this.curValue = playbackRate;\n var curIndex = 0;\n var items = this.config.list.map(function (item, index) {\n var itemInfo = {\n rate: item.rate\n };\n\n if (itemInfo.rate === playbackRate) {\n itemInfo.selected = true;\n curIndex = index;\n }\n\n itemInfo.showText = _this3.getTextByLang(item);\n return itemInfo;\n });\n\n _get(_getPrototypeOf(PlaybackRate.prototype), \"renderItemList\", this).call(this, items, curIndex);\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n _get(_getPrototypeOf(PlaybackRate.prototype), \"destroy\", this).call(this);\n }\n }], [{\n key: \"pluginName\",\n get: function get() {\n return 'playbackRate';\n }\n /**\n * @type IPlaybackRateConfig\n */\n\n }, {\n key: \"defaultConfig\",\n get: function get() {\n return {\n position: POSITIONS.CONTROLS_RIGHT,\n index: 4,\n list: [2, 1.5, 1, 0.75, 0.5],\n className: 'xgplayer-playbackrate',\n isShowIcon: true,\n hidePortrait: false\n };\n }\n }]);\n\n return PlaybackRate;\n}(OptionsIcon);\n\nexport { PlaybackRate as default };","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport Plugin, { Events, POSITIONS } from '../../plugin';\nvar CssFullSceenSvg = \"\";\nvar ExitCssFullSceenSvg = \"\";\n/**\n * @typedef { {\n * position: string,\n * index: number,\n * disable: boolean,\n * target: null | HTMLElement,\n * [propName: string]: any\n * } } ICssConfig\n */\n\nvar CssFullScreen = /*#__PURE__*/function (_Plugin) {\n _inherits(CssFullScreen, _Plugin);\n\n var _super = _createSuper(CssFullScreen);\n\n function CssFullScreen() {\n _classCallCheck(this, CssFullScreen);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(CssFullScreen, [{\n key: \"beforeCreate\",\n value: function beforeCreate(args) {\n if (typeof args.player.config.cssFullscreen === 'boolean') {\n args.config.disable = !args.player.config.cssFullscreen;\n }\n }\n }, {\n key: \"afterCreate\",\n value: function afterCreate() {\n var _this = this;\n\n if (this.config.disable) {\n return;\n }\n\n if (this.config.target) {\n this.playerConfig.fullscreenTarget = this.config.target;\n }\n\n this.initIcons();\n this.on(Events.CSS_FULLSCREEN_CHANGE, function (isCssfullScreen) {\n _this.animate(isCssfullScreen);\n });\n this.btnClick = this.btnClick.bind(this);\n this.bind(['click', 'touchend'], this.btnClick);\n }\n }, {\n key: \"initIcons\",\n value: function initIcons() {\n var icons = this.icons;\n var contentIcon = this.find('.xgplayer-icon');\n contentIcon.appendChild(icons.cssFullscreen);\n contentIcon.appendChild(icons.exitCssFullscreen);\n }\n }, {\n key: \"btnClick\",\n value: function btnClick(e) {\n e.preventDefault();\n e.stopPropagation();\n var isCssfullScreen = this.player.isCssfullScreen;\n this.emitUserAction(e, 'switch_css_fullscreen', {\n cssfullscreen: isCssfullScreen\n });\n\n if (!isCssfullScreen) {\n this.player.getCssFullscreen();\n } else {\n this.player.exitCssFullscreen();\n }\n }\n }, {\n key: \"animate\",\n value: function animate(isFullScreen) {\n if (!this.root) {\n return;\n }\n\n isFullScreen ? this.setAttr('data-state', 'full') : this.setAttr('data-state', 'normal');\n this.switchTips(isFullScreen);\n }\n }, {\n key: \"switchTips\",\n value: function switchTips(isFullScreen) {\n var i18nKeys = this.i18nKeys;\n this.changeLangTextKey(this.find('.xg-tips'), isFullScreen ? i18nKeys.EXITCSSFULLSCREEN_TIPS : i18nKeys.CSSFULLSCREEN_TIPS);\n }\n }, {\n key: \"registerIcons\",\n value: function registerIcons() {\n return {\n cssFullscreen: {\n icon: CssFullSceenSvg,\n class: 'xg-get-cssfull'\n },\n exitCssFullscreen: {\n icon: ExitCssFullSceenSvg,\n class: 'xg-exit-cssfull'\n }\n };\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.unbind(['click', 'touchend'], this.btnClick);\n }\n }, {\n key: \"render\",\n value: function render() {\n if (this.config.disable) {\n return;\n }\n\n return \"\\n
\\n
\\n
\").concat(this.i18n.CSSFULLSCREEN_TIPS, \"
\\n
\");\n }\n }], [{\n key: \"pluginName\",\n get: function get() {\n return 'cssFullscreen';\n }\n /**\n * @type ICssConfig\n */\n\n }, {\n key: \"defaultConfig\",\n get: function get() {\n return {\n position: POSITIONS.CONTROLS_RIGHT,\n index: 1,\n disable: false,\n target: null\n };\n }\n }]);\n\n return CssFullScreen;\n}(Plugin);\n\nexport { CssFullScreen as default };","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport Plugin, { Events, Util } from '../../plugin';\n\nvar ErrorPlugin = /*#__PURE__*/function (_Plugin) {\n _inherits(ErrorPlugin, _Plugin);\n\n var _super = _createSuper(ErrorPlugin);\n\n function ErrorPlugin() {\n _classCallCheck(this, ErrorPlugin);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(ErrorPlugin, [{\n key: \"afterCreate\",\n value: function afterCreate() {\n var _this = this;\n\n this.clickHandler = this.hook('errorRetry', this.errorRetry, {\n pre: function pre(e) {\n e.preventDefault();\n e.stopPropagation();\n }\n });\n this.onError = this.hook('errorHandler', this.handleError);\n this.bind('.xgplayer-error-refresh', 'click', this.clickHandler);\n this.on(Events.CANPLAY, function () {\n _this.handleCanPlay();\n });\n this.on(Events.ERROR, function (error) {\n _this.onError(error);\n });\n }\n }, {\n key: \"errorRetry\",\n value: function errorRetry() {\n this.player.retry();\n }\n }, {\n key: \"handleCanPlay\",\n value: function handleCanPlay() {\n Util.removeClass(this.player.root, 'xgplayer-is-error');\n }\n }, {\n key: \"handleError\",\n value: function handleError() {\n var error = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var player = this.player;\n var type = error.errorType;\n var errorNote = player.error;\n\n if (!errorNote) {\n switch (type) {\n case 'decoder':\n errorNote = this.i18n.MEDIA_ERR_DECODE;\n break;\n\n case 'network':\n errorNote = this.i18n.MEDIA_ERR_NETWORK;\n break;\n\n default:\n errorNote = this.i18n.MEDIA_ERR_SRC_NOT_SUPPORTED;\n }\n }\n\n this.find('.xgplayer-error-text').innerHTML = errorNote;\n this.find('.xgplayer-error-tips').innerHTML = \"\".concat(this.i18n.REFRESH_TIPS, \"\").concat(this.i18n.REFRESH, \"\");\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.unbind('.xgplayer-error-refresh', 'click', this.clickHandler);\n }\n }, {\n key: \"render\",\n value: function render() {\n return \"\\n
\\n \\n \\n
\\n
\";\n }\n }], [{\n key: \"pluginName\",\n get: function get() {\n return 'error';\n }\n }]);\n\n return ErrorPlugin;\n}(Plugin);\n\nexport { ErrorPlugin as default };","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport Plugin, { STATE_CLASS, Util } from '../../plugin';\n/**\n * 消息组件\n */\n\nvar Prompt = /*#__PURE__*/function (_Plugin) {\n _inherits(Prompt, _Plugin);\n\n var _super = _createSuper(Prompt);\n\n function Prompt() {\n _classCallCheck(this, Prompt);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(Prompt, [{\n key: \"afterCreate\",\n value: function afterCreate() {\n var _this = this;\n\n this.intervalId = 0;\n this.customConfig = null;\n this.bind('.highlight', ['click', 'touchend'], function (e) {\n if (_this.config.onClick || _this.customOnClick) {\n e.preventDefault();\n e.stopPropagation();\n _this.customOnClick ? _this.customOnClick(e) : _this.config.onClick(e);\n }\n });\n\n this.player.showPrompt = function () {\n _this.show.apply(_this, arguments);\n };\n\n this.player.hidePrompt = function () {\n _this.hide();\n };\n }\n }, {\n key: \"setStyle\",\n value: function setStyle(style) {\n var _this2 = this;\n\n Object.keys(style).map(function (key) {\n _this2.root.style[key] = style[key];\n });\n }\n }, {\n key: \"show\",\n value: function show(detail) {\n var _this3 = this;\n\n var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var onClick = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {};\n\n if (!detail) {\n return;\n }\n\n this.customOnClick = onClick;\n var interval = this.config.interval;\n\n if (this.intervalId) {\n clearTimeout(this.intervalId);\n this.intervalId = null;\n }\n\n Util.addClass(this.root, 'show');\n config.mode === 'arrow' && Util.addClass(this.root, 'arrow');\n\n if (typeof detail === 'string') {\n this.find('.xgplayer-prompt-detail').innerHTML = detail;\n } else {\n this.find('.xgplayer-prompt-detail').innerHTML = \"\".concat(detail.text || '') + \"\".concat(detail.highlight ? \"\".concat(detail.highlight, \"\") : '');\n }\n\n config.style && this.setStyle(config.style);\n var autoHide = typeof config.autoHide === 'boolean' ? config.autoHide : this.config.autoHide;\n\n if (autoHide) {\n var hideinterval = config.interval || interval;\n this.intervalId = setTimeout(function () {\n _this3.hide();\n }, hideinterval);\n }\n }\n }, {\n key: \"hide\",\n value: function hide() {\n Util.removeClass(this.root, 'show');\n Util.removeClass(this.root, 'arrow');\n this.root.removeAttribute('style');\n this.customOnClick = null;\n }\n }, {\n key: \"render\",\n value: function render() {\n return \"\\n \\n \");\n }\n }], [{\n key: \"pluginName\",\n get: function get() {\n return 'prompt';\n }\n }, {\n key: \"defaultConfig\",\n get: function get() {\n return {\n interval: 3000,\n style: {},\n mode: 'arrow',\n autoHide: true,\n detail: {\n text: '',\n highlight: ''\n },\n onClick: function onClick() {}\n };\n }\n }]);\n\n return Prompt;\n}(Plugin);\n\nexport default Prompt;","import { Util, Events } from '../../plugin';\nvar ISPOT = {\n time: 0,\n // 进度条在此时间戳打点 单位为s\n text: '',\n // 打点处的自定义文案\n id: 1,\n // 标记唯一标识,用于删除的时候索引\n duration: 1,\n // 进度条标识点的时长 默认1s【可选】单位为s\n color: '#fff',\n // 进度条标识点的显示颜色【可选】\n style: {},\n // 指定样式\n width: 6,\n height: 6\n};\n\nfunction mergeISPOT(iSpot) {\n Object.keys(ISPOT).map(function (key) {\n if (iSpot[key] === undefined) {\n iSpot[key] = ISPOT[key];\n }\n });\n}\n\nvar APIS = {\n initDots: function initDots() {\n var _this = this;\n\n this._ispots.map(function (item) {\n _this.createDot(item, false);\n });\n\n this._ispotsInit = true;\n },\n\n /**\n * 创建一个故事点\n * @param { object } iSpot\n * @param { boolean } isNew\n */\n createDot: function createDot(iSpot) {\n var isNew = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var progress = this.player.plugins.progress;\n\n if (!progress) {\n return;\n }\n\n if (isNew) {\n mergeISPOT(iSpot);\n\n this._ispots.push(iSpot);\n }\n\n if (!this._ispotsInit && isNew) {\n return;\n }\n\n var ret = this.calcuPosition(iSpot.time, iSpot.duration);\n var style = iSpot.style || {};\n style.left = \"\".concat(ret.left, \"%\");\n style.width = \"\".concat(ret.width, \"%\");\n var className = \"xgspot_\".concat(iSpot.id, \" xgplayer-spot\");\n ret.isMini && (className += ' mini');\n var dotDom = Util.createDom('xg-spot', '', {\n 'data-text': iSpot.text,\n 'data-time': iSpot.time,\n 'data-id': iSpot.id\n }, className);\n Object.keys(style).map(function (key) {\n dotDom.style[key] = style[key];\n });\n progress.outer && progress.outer.appendChild(dotDom);\n },\n\n /**\n * 根据id查找节点\n * @param {string} id\n */\n findDot: function findDot(id) {\n if (!this.player.plugins.progress) {\n return;\n }\n\n var ret = this._ispots.filter(function (cur, index) {\n return cur.id === id;\n });\n\n return ret.length > 0 ? ret[0] : null;\n },\n\n /**\n * 更新故事点\n * @param {any} iSpot\n * @param {boolean} needShow\n */\n updateDot: function updateDot(iSpot) {\n var needShow = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var progress = this.player.plugins.progress;\n\n if (!progress) {\n return;\n }\n\n var dot = this.findDot(iSpot.id);\n\n if (dot) {\n Object.keys(iSpot).map(function (key) {\n dot[key] = iSpot[key];\n });\n }\n\n if (!this._ispotsInit) {\n return;\n }\n\n var dotDom = progress.find(\"xg-spot[data-id=\\\"\".concat(iSpot.id, \"\\\"]\"));\n\n if (!dotDom) {\n return;\n }\n\n var ret = this.calcuPosition(iSpot.time, iSpot.duration);\n var style = iSpot.style || {};\n style.left = \"\".concat(ret.left, \"%\");\n style.width = \"\".concat(ret.width, \"%\");\n dotDom.setAttribute('data-text', iSpot.text);\n dotDom.setAttribute('data-time', iSpot.time);\n\n if (ret.isMini) {\n Util.addClass(dotDom, 'mini');\n } else {\n Util.removeClass(dotDom, 'mini');\n }\n\n Object.keys(style).map(function (key) {\n dotDom.style[key] = style[key];\n });\n\n if (needShow) {\n this.showDot(iSpot.id);\n }\n },\n\n /**\n * 删除某个故事点\n * @param {string | number } id\n */\n deleteDot: function deleteDot(id) {\n var _ispots = this._ispots;\n var progress = this.player.plugins.progress;\n\n if (!progress) {\n return;\n }\n\n var del = [];\n\n for (var i = 0; i < _ispots.length; i++) {\n if (_ispots[i].id === id) {\n del.push(i);\n }\n }\n\n var len = del.length;\n\n for (var _i = len - 1; _i >= 0; _i--) {\n _ispots.splice(del[_i], 1);\n\n if (this._ispotsInit) {\n var dotDom = progress.find(\"xg-spot[data-id=\\\"\".concat(id, \"\\\"]\"));\n dotDom && dotDom.parentElement.removeChild(dotDom);\n }\n }\n },\n\n /**\n * 移除所有的故事点\n */\n deleteAllDots: function deleteAllDots() {\n var progress = this.player.plugins.progress;\n\n if (!progress) {\n return;\n }\n\n if (!this._ispotsInit) {\n this._ispots = [];\n return;\n }\n\n var dotDoms = progress.root.getElementsByTagName('xg-spot');\n\n for (var i = dotDoms.length - 1; i >= 0; i--) {\n progress.outer.removeChild(dotDoms[i]);\n }\n\n this._ispots = [];\n },\n\n /**\n * 批量全部更新当前故事点\n * @param {Array} iSpots\n */\n updateAllDots: function updateAllDots() {\n var _this2 = this;\n\n var iSpots = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var progress = this.player.plugins.progress;\n\n if (!progress) {\n return;\n }\n\n if (!this._ispotsInit) {\n this._ispots = iSpots;\n return;\n }\n\n this._ispots = [];\n var dotDoms = progress.root.getElementsByTagName('xg-spot');\n var len = dotDoms.length;\n\n if (len > iSpots.length) {\n for (var i = len - 1; i > iSpots.length - 1; i--) {\n progress.outer.removeChild(dotDoms[i]);\n }\n }\n\n iSpots.map(function (ispot, index) {\n if (index < len) {\n dotDoms[index].setAttribute('data-id', \"\".concat(ispot.id));\n\n _this2._ispots.push(ispot);\n\n _this2.updateDot(ispot);\n } else {\n _this2.createDot(ispot);\n }\n });\n }\n};\nexport default function initDotsAPI(plugin) {\n var config = plugin.config,\n player = plugin.player;\n Object.keys(APIS).map(function (item) {\n plugin[item] = APIS[item].bind(plugin);\n });\n var ispots = player.config.progressDot || config.ispots || [];\n plugin._ispots = ispots.map(function (item) {\n mergeISPOT(item);\n return item;\n });\n plugin._ispotsInit = false;\n player.once(Events.DURATION_CHANGE, function () {\n plugin.initDots();\n });\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport Plugin, { Util, Sniffer } from '../../plugin';\nimport initDotsAPI from './dotsApi';\n/**\n * @typedef {{\n * miniWidth?: number, // 故事点显示最小宽度\n * ispots?: Array<{ //故事点列表\n * time?: number, // 进度条在此时间戳打点 单位为s\n * text?: string, // 打点处的自定义文案\n * id?: number | string, // 标记唯一标识,用于删除的时候索引\n * duration:? number, // 进度条标识点的时长 默认1s【可选】单位为s\n * color?: string, // 进度条标识点的显示颜色【可选】\n * style?: { [propName: string]: any }, // 指定样式\n * width?: number,\n * height?: number\n * }>,\n * defaultText?: '', // 故事点hover默认文案\n * isFocusDots?: true, //\n * isShowThumbnail?: true, // 是否显示预览图\n * isShowCoverPreview?: false, // 进度条拖动时是否显示播放区域预览图\n * mode?: 'short' | 'production', // short // production\n * [propName: string]: any\n * }} IProgressPreviewConfig\n */\n\nvar CALLBACK_MAP = {\n dragmove: 'onProgressMove',\n dragstart: 'onProgressDragStart',\n dragend: 'onProgressDragEnd'\n};\n/** */\n\nvar ProgressPreview = /*#__PURE__*/function (_Plugin) {\n _inherits(ProgressPreview, _Plugin);\n\n var _super = _createSuper(ProgressPreview);\n\n function ProgressPreview(args) {\n var _this;\n\n _classCallCheck(this, ProgressPreview);\n\n _this = _super.call(this, args);\n\n _defineProperty(_assertThisInitialized(_this), \"onMousemove\", function (e) {\n if (_this._state.f || Util.hasClass(e.target, 'xg-spot-content')) {\n Util.event(e);\n e.stopPropagation();\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onMousedown\", function (e) {\n if (_this._state.f || Util.hasClass(e.target, 'xg-spot-content')) {\n Util.event(e);\n e.stopPropagation();\n }\n });\n\n _this._ispots = [];\n _this.videoPreview = null;\n _this.videothumbnail = null;\n _this.thumbnail = null;\n _this._state = {\n now: 0,\n f: false\n };\n return _this;\n }\n\n _createClass(ProgressPreview, [{\n key: \"beforeCreate\",\n value: function beforeCreate(args) {\n var progress = args.player.plugins.progress;\n\n if (progress) {\n args.root = progress.root;\n }\n }\n }, {\n key: \"onPluginsReady\",\n value: function onPluginsReady() {\n var player = this.player;\n\n if (!player.plugins.progress) {\n return;\n }\n\n this.previewLine = this.find('.xg-spot-line');\n this.timePoint = this.find('.xgplayer-progress-point');\n this.timeText = this.find('.xg-spot-time');\n this.tipText = this.find('.spot-inner-text');\n this._hasThumnail = false;\n this.registerThumbnail();\n initDotsAPI(this);\n this.bindEvents();\n }\n }, {\n key: \"bindEvents\",\n value: function bindEvents() {\n var _this2 = this;\n\n var progress = this.player.plugins.progress;\n\n if (Sniffer.device === 'mobile' || !progress) {\n return;\n }\n\n Object.keys(CALLBACK_MAP).map(function (key) {\n _this2[CALLBACK_MAP[key]] = _this2[CALLBACK_MAP[key]].bind(_this2);\n progress.addCallBack(key, _this2[CALLBACK_MAP[key]]);\n });\n this.bind('.xg-spot-info', 'mousemove', this.onMousemove);\n this.bind('.xg-spot-info', 'mousedown', this.onMousedown);\n var fun = this.hook('previewClick', function () {// console.log('args', args)\n });\n\n this.handlerPreviewClick = function (e) {\n e.stopPropagation();\n fun(parseInt(_this2._state.now * 1000, 10) / 1000, e);\n };\n\n this.bind('.xg-spot-content', 'mouseup', this.handlerPreviewClick);\n }\n }, {\n key: \"onProgressMove\",\n value: function onProgressMove(data) {\n this.updatePosition(data.offset, data.width, data.currentTime, data.e);\n }\n }, {\n key: \"onProgressDragStart\",\n value: function onProgressDragStart(data) {\n this.isDrag = true;\n this.videoPreview && Util.addClass(this.videoPreview, 'show');\n }\n }, {\n key: \"onProgressDragEnd\",\n value: function onProgressDragEnd(data) {\n this.isDrag = false;\n this.videoPreview && Util.removeClass(this.videoPreview, 'show');\n }\n }, {\n key: \"updateLinePos\",\n value: function updateLinePos(offset, cwidth) {\n var root = this.root,\n previewLine = this.previewLine,\n timePoint = this.timePoint,\n player = this.player;\n var mode = player.controls.mode;\n var isflex = mode === 'flex';\n var lwidth = root.getBoundingClientRect().width;\n var tWidth = timePoint.getBoundingClientRect().width;\n var x = offset - lwidth / 2;\n\n var _t, _tt;\n\n if (x < 0 && !isflex) {\n x = 0;\n _t = offset - lwidth / 2;\n !this.thumbnail && (_tt = offset - lwidth / 2 - tWidth / 2);\n } else if (x > cwidth - lwidth && !isflex) {\n _t = x - (cwidth - lwidth);\n !this.thumbnail && (_tt = x - (cwidth - lwidth) - tWidth / 2);\n x = cwidth - lwidth;\n } else {\n _t = 0;\n !this.thumbnail && (_tt = -tWidth / 2);\n }\n\n _t !== undefined && (previewLine.style.transform = \"translateX(\".concat(_t, \"px)\"));\n _tt !== undefined && (timePoint.style.transform = \"translateX(\".concat(_tt, \"px)\"));\n root.style.transform = \"translateX(\".concat(x, \"px)\");\n }\n }, {\n key: \"updateTimeText\",\n value: function updateTimeText(timeStr) {\n var timeText = this.timeText,\n timePoint = this.timePoint;\n timeText.textContent = timeStr;\n !this.thumbnail && (timePoint.textContent = timeStr);\n }\n }, {\n key: \"updatePosition\",\n value: function updatePosition(offset, cwidth, time, e) {\n var root = this.root,\n config = this.config,\n _state = this._state;\n\n if (!root) {\n return;\n }\n\n this.updateLinePos(offset, cwidth); // let now = offset / cwidth * player.duration\n // now = now < 0 ? 0 : (now > player.duration ? player.duration : now)\n\n _state.now = time;\n var timeStr = Util.format(time);\n\n if (e && e.target && Util.hasClass(e.target, 'xgplayer-spot')) {\n this.showTips(e.target.getAttribute('data-text'), false, timeStr);\n _state.f = true;\n config.isFocusDots && _state.f && (_state.now = parseInt(e.target.getAttribute('data-time'), 10));\n } else if (config.defaultText) {\n _state.f = false;\n this.showTips(config.defaultText, true, timeStr);\n } else {\n _state.f = false;\n this.hideTips('');\n }\n\n this.updateTimeText(timeStr);\n this.updateThumbnails(_state.now);\n }\n }, {\n key: \"updateThumbnails\",\n value: function updateThumbnails(time) {\n var player = this.player,\n videoPreview = this.videoPreview;\n var thumbnail = player.plugins.thumbnail;\n\n if (thumbnail && thumbnail.usable) {\n this.thumbnail && thumbnail.update(this.thumbnail, time, 160, 90);\n var rect = videoPreview && videoPreview.getBoundingClientRect();\n this.videothumbnail && thumbnail.update(this.videothumbnail, time, rect.width, rect.height);\n }\n }\n }, {\n key: \"registerThumbnail\",\n value: function registerThumbnail() {\n var thumbnailConfig = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Sniffer.device === 'mobile') {\n return;\n }\n\n var player = this.player,\n config = this.config;\n var thumbnail = player.getPlugin('thumbnail');\n\n if (thumbnail) {\n Object.keys(thumbnailConfig).map(function (key) {\n thumbnail.config[key] = thumbnailConfig[key];\n });\n }\n\n if (!thumbnail || !thumbnail.usable || !config.isShowThumbnail) {\n Util.addClass(this.root, 'short-line no-thumbnail');\n return;\n } else {\n Util.removeClass(this.root, 'short-line no-thumbnail');\n }\n\n this._hasThumnail = true;\n var tRoot = this.find('.xg-spot-thumbnail');\n this.thumbnail = thumbnail.createThumbnail(tRoot, 'progress-thumbnail');\n\n if (config.isShowCoverPreview) {\n this.videoPreview = Util.createDom('xg-video-preview', '', {}, 'xgvideo-preview');\n player.root.appendChild(this.videoPreview);\n this.videothumbnail = thumbnail.createThumbnail(this.videoPreview, 'xgvideo-thumbnail');\n }\n }\n }, {\n key: \"calcuPosition\",\n value: function calcuPosition(time, duration) {\n var progress = this.player.plugins.progress;\n var player = this.player;\n var totalWidth = progress.root.getBoundingClientRect().width;\n var widthPerSeconds = player.duration / totalWidth * 6;\n var ret = {};\n\n if (time + duration > player.duration) {\n duration = player.duration - time;\n }\n\n ret.left = time / player.duration * 100;\n ret.width = duration / player.duration;\n ret.isMini = widthPerSeconds > duration;\n return {\n left: time / player.duration * 100,\n width: duration / player.duration * 100,\n isMini: duration < widthPerSeconds\n };\n }\n }, {\n key: \"showDot\",\n value: function showDot(id) {\n var dot = this.findDot(id);\n\n if (dot) {\n var rect = this.root.getBoundingClientRect();\n var width = rect.width;\n var offset = dot.time / this.player.duration * width;\n this.updatePosition(offset, width, dot.time);\n }\n }\n }, {\n key: \"showTips\",\n value: function showTips(text, isDefault) {\n var timeStr = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n\n if (!text) {\n return;\n }\n\n Util.addClass(this.root, 'no-timepoint');\n Util.addClass(this.find('.xg-spot-content'), 'show-text');\n\n if (isDefault && this.config.mode === 'production') {\n Util.addClass(this.root, 'product');\n this.tipText.textContent = text;\n } else {\n Util.removeClass(this.root, 'product');\n this.tipText.textContent = this._hasThumnail ? text : \"\".concat(timeStr, \" \").concat(text);\n }\n }\n }, {\n key: \"hideTips\",\n value: function hideTips() {\n Util.removeClass(this.root, 'no-timepoint');\n this.tipText.textContent = '';\n Util.removeClass(this.find('.xg-spot-content'), 'show-text');\n Util.removeClass(this.root, 'product');\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n var _this3 = this;\n\n var progress = this.player.plugins.progress;\n progress && Object.keys(CALLBACK_MAP).map(function (key) {\n progress.removeCallBack(key, _this3[CALLBACK_MAP[key]]);\n });\n this.videothumbnail = null;\n this.thumbnail = null;\n this.videoPreview && this.player.root.removeChild(this.videoPreview);\n this.unbind('.xg-spot-info', 'mousemove', this.onMousemove);\n this.unbind('.xg-spot-info', 'mousedown', this.onMousedown);\n this.unbind('.xg-spot-content', 'mouseup', this.handlerPreviewClick);\n }\n }, {\n key: \"render\",\n value: function render() {\n if (Sniffer.device === 'mobile' || this.playerConfig.isMobileSimulateMode) {\n return '';\n }\n\n return \"
\\n
\\n
\\n \\n
\\n
\\n
\\n
00:00
\\n
\\n
\");\n }\n }], [{\n key: \"pluginName\",\n get: function get() {\n return 'progresspreview';\n }\n /**\n * @type IProgressPreviewConfig\n */\n\n }, {\n key: \"defaultConfig\",\n get: function get() {\n return {\n index: 1,\n miniWidth: 6,\n // 故事点显示最小宽度\n ispots: [],\n // 故事点列表\n defaultText: '',\n // 故事点hover默认文案\n isFocusDots: true,\n //\n isShowThumbnail: true,\n // 是否显示预览图\n isShowCoverPreview: false,\n // 进度条拖动时是否显示播放区域预览图\n mode: '' // short // production\n\n };\n }\n }]);\n\n return ProgressPreview;\n}(Plugin);\n\nexport { ProgressPreview as default };","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n/* eslint-disable camelcase */\nimport BasePlugin, { Util } from '../../plugin';\n/**\n * @typedef {{\n * isShow?: boolean,\n * urls?: Array, // 有多张大图就多个url\n * pic_num?: number, // 每张图含有几个雪碧图\n * col?: number, // 截图列数\n * row?: number, // 截图行数\n * height?: number, // 缩略图高度\n * width?: number, // 缩略图宽度\n * scale?: number, // 缩放\n * className?: string, // 额外添加在dom上的class\n * hidePortrait?: boolean, // 是否在竖屏的时候隐藏\n * [propName: string]: any\n * }} IThumbnailConfig\n */\n\nvar Thumbnail = /*#__PURE__*/function (_BasePlugin) {\n _inherits(Thumbnail, _BasePlugin);\n\n var _super = _createSuper(Thumbnail);\n\n function Thumbnail(args) {\n var _this;\n\n _classCallCheck(this, Thumbnail);\n\n _this = _super.call(this, args);\n _this.ratio = 1;\n _this.interval = null;\n _this.preloadMark = {};\n return _this;\n }\n\n _createClass(Thumbnail, [{\n key: \"afterCreate\",\n value: function afterCreate() {\n if (this.usable) {\n this.initThumbnail();\n }\n }\n }, {\n key: \"usable\",\n get: function get() {\n var _this$config = this.config,\n urls = _this$config.urls,\n pic_num = _this$config.pic_num;\n return urls && urls.length > 0 && pic_num > 0;\n }\n }, {\n key: \"initThumbnail\",\n value: function initThumbnail() {\n var _this$config2 = this.config,\n width = _this$config2.width,\n height = _this$config2.height,\n pic_num = _this$config2.pic_num,\n interval = _this$config2.interval;\n this.ratio = width / height * 100;\n this.interval = interval || Math.round(this.player.duration / pic_num);\n this.preload(0); // this.preIndex = new Array(urls.length)\n // this.interval = interval || Math.round(this.player.duration / pic_num)\n // this.ratio = width / height * 100\n // className && Util.addClass(this.root, className)\n // hidePortrait && Util.addClass(this.root, 'portrait')\n // width && (this.root.style.width = `${width}px`)\n // height && (this.root.style.height = `${height}px`)\n // this.root.style.backgroundSize = `${width * col}px auto`\n }\n }, {\n key: \"getUrlByIndex\",\n value: function getUrlByIndex(index) {\n return index >= 0 && index < this.config.urls.length ? this.config.urls[index] : '';\n }\n }, {\n key: \"preload\",\n value: function preload(index) {\n var _this2 = this;\n\n var urls = this.config.urls;\n var len = urls.length;\n var arr = [index - 1, index, index + 1, index + 2];\n arr.map(function (item) {\n if (!_this2.preloadMark[item] && item >= 0 && item < len) {\n Util.preloadImg(urls[item]);\n _this2.preloadMark[item] = true;\n }\n });\n }\n }, {\n key: \"getPosition\",\n value: function getPosition(now) {\n var containerWidth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var containerHeight = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var _this$config3 = this.config,\n pic_num = _this$config3.pic_num,\n row = _this$config3.row,\n col = _this$config3.col,\n width = _this$config3.width,\n height = _this$config3.height;\n this.interval = Math.round(this.player.duration / pic_num);\n var index = Math.ceil(now / this.interval); // 当前时间对应的图像索引\n\n index = index > pic_num ? pic_num : index;\n var urlIndex = index < row * col ? 0 : Math.ceil(index / (row * col)) - 1; // 当前图像所在的url索引\n\n var indexInPage = index - urlIndex * (col * row); // 当前图像在当前url中的索引\n\n var rowIndex = indexInPage > 0 ? Math.ceil(indexInPage / col) - 1 : 0; // 当前图像在当前url中的行索引\n\n var colIndex = indexInPage > 0 ? indexInPage - rowIndex * col - 1 : 0; // 当前图像在当前url中的列索引\n\n var swidth = 0; // containerWidth || width\n\n var sHeight = 0; // swidth * height / width\n // 根据入参的宽高适配样式\n\n if (containerWidth && containerHeight) {\n var per = containerWidth / containerHeight;\n\n if (per < width / height) {\n swidth = containerWidth;\n sHeight = swidth / (width / height);\n } else {\n sHeight = containerHeight;\n swidth = sHeight * (width / height);\n }\n } else {\n swidth = containerWidth || width;\n sHeight = swidth / (width / height);\n }\n\n var url = this.getUrlByIndex(urlIndex);\n return {\n urlIndex: urlIndex,\n rowIndex: rowIndex,\n colIndex: colIndex,\n url: url,\n height: sHeight,\n width: swidth,\n style: {\n backgroundImage: \"url(\".concat(url, \")\"),\n backgroundSize: \"\".concat(swidth * col, \"px auto\"),\n backgroundPosition: \"-\".concat(colIndex * swidth, \"px -\").concat(rowIndex * sHeight, \"px\"),\n width: \"\".concat(swidth, \"px\"),\n height: \"\".concat(sHeight, \"px\")\n }\n };\n }\n }, {\n key: \"update\",\n value: function update(dom, now) {\n var containerWidth = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var containerHeight = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n var customStyle = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : '';\n var _this$config4 = this.config,\n pic_num = _this$config4.pic_num,\n urls = _this$config4.urls;\n\n if (pic_num <= 0 || !urls || urls.length === 0) {\n return;\n }\n\n var pos = this.getPosition(now, containerWidth, containerHeight);\n this.preload(pos.urlIndex);\n Object.keys(pos.style).map(function (key) {\n dom.style[key] = pos.style[key];\n });\n Object.keys(customStyle).map(function (key) {\n dom.style[key] = customStyle[key];\n });\n }\n }, {\n key: \"createThumbnail\",\n value: function createThumbnail(root, className) {\n var dom = Util.createDom('xg-thumbnail', '', {}, \"thumbnail \".concat(className));\n root && root.appendChild(dom);\n return dom;\n }\n }], [{\n key: \"pluginName\",\n get: function get() {\n return 'thumbnail';\n }\n /**\n * @type IThumbnailConfig\n */\n\n }, {\n key: \"defaultConfig\",\n get: function get() {\n return {\n isShow: false,\n urls: [],\n // 有多张大图就多个url就好\n pic_num: 0,\n // 每张图含有几个雪碧图\n col: 0,\n // 截图列数\n row: 0,\n // 截图行数\n height: 90,\n // 缩略图高度\n width: 160,\n // 缩略图宽度\n scale: 1,\n // 缩放\n className: '',\n // 额外添加在dom上的class\n hidePortrait: false // 是否在竖屏的时候隐藏\n\n };\n }\n }]);\n\n return Thumbnail;\n}(BasePlugin);\n\nexport { Thumbnail as default };","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport Plugin from '../../plugin';\n\nvar MiniProgress = /*#__PURE__*/function (_Plugin) {\n _inherits(MiniProgress, _Plugin);\n\n var _super = _createSuper(MiniProgress);\n\n function MiniProgress() {\n _classCallCheck(this, MiniProgress);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(MiniProgress, [{\n key: \"afterCreate\",\n value: function afterCreate() {}\n }, {\n key: \"update\",\n value: function update() {\n var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n cached: 0,\n played: 0\n };\n var duration = arguments.length > 1 ? arguments[1] : undefined;\n\n if (!duration || !this.root) {\n return;\n }\n\n if (data.cached) {\n this.find('xg-mini-progress-cache').style.width = \"\".concat(data.cached / duration * 100, \"%\");\n }\n\n if (data.played) {\n this.find('xg-mini-progress-played').style.width = \"\".concat(data.played / duration * 100, \"%\");\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n if (!this.playerConfig.progress || !this.playerConfig.miniprogress) {\n return;\n }\n\n return \"\\n \\n \\n \";\n }\n }], [{\n key: \"pluginName\",\n get: function get() {\n return 'MiniProgress';\n }\n }, {\n key: \"defaultConfig\",\n get: function get() {\n return {};\n }\n }]);\n\n return MiniProgress;\n}(Plugin);\n\nexport default MiniProgress;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport Plugin, { Events, Util, Sniffer } from '../../plugin';\nimport XG_DEBUG from '../../utils/debug';\nvar MODES = {\n REAL_TIME: 'realtime',\n FIRST_FRAME: 'firstframe',\n FRAME_RATE: 'framerate'\n};\n\nfunction nowTime() {\n try {\n return window.performance.now();\n } catch (e) {\n return new Date().getTime();\n }\n}\n/**\n * 检查当前的video对象是否支持video截图\n * @param { VideoElement } video\n * @returns\n */\n\n\nfunction checkVideoIsSupport(video) {\n if (Sniffer.browser === 'safari' && (/^blob/.test(video.currentSrc) || /^blob/.test(video.src))) {\n return false;\n }\n\n return true;\n}\n/**\n * 检查当前环境是否支持canvas\n * @returns { Boolean }\n */\n\n\nfunction checkIsSupportCanvas() {\n try {\n var ctx = document.createElement('canvas').getContext;\n\n if (ctx) {\n return true;\n }\n\n return false;\n } catch (e) {\n return false;\n }\n}\n/**\n * @typedef { {\n * disable?: boolean,\n * mode?: \"realtime\" | \"firstframe\" | \"framerate\", //渲染方式\n * frameRate?: number, // 按帧的时候渲染帧率\n * filter?: string, // 滤镜设置\n * addMask?: boolean, // 是否需要蒙层\n * maskBg?: string, // 蒙层颜色\n * [propName: string]: any\n * } } IDynamicBgConfig\n */\n\n\nvar isSupportCanvas = null;\n\nvar DynamicBg = /*#__PURE__*/function (_Plugin) {\n _inherits(DynamicBg, _Plugin);\n\n var _super = _createSuper(DynamicBg);\n\n function DynamicBg() {\n var _this;\n\n _classCallCheck(this, DynamicBg);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"onLoadedData\", function () {\n var video = _this.player.video;\n _this.videoPI = parseInt(video.videoWidth / video.videoHeight * 100, 10);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"start\", function () {\n var video = _this.player.video;\n\n var _now = nowTime();\n\n if (!checkVideoIsSupport(video) || !_this.canvasCtx) {\n return;\n }\n\n _this.stop();\n\n if (_this.config.mode === MODES.REAL_TIME) {\n video && video.videoWidth && _this.update(video, video.videoWidth, video.videoHeight);\n _this.preTime = _now;\n } else if (_now - _this.preTime >= _this.interval) {\n video && video.videoWidth && _this.update(video, video.videoWidth, video.videoHeight);\n _this.preTime = _now;\n } // this.frameId = Util.requestAnimationFrame(this.start)\n\n\n _this.frameId = window.setTimeout(function () {\n _this.start();\n }, _this.interval);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"stop\", function () {\n if (_this.frameId) {\n // Util.cancelAnimationFrame(this.frameId)\n window.clearTimeout(_this.frameId);\n _this.frameId = null;\n }\n });\n\n return _this;\n }\n\n _createClass(DynamicBg, [{\n key: \"afterCreate\",\n value: function afterCreate() {\n var _this2 = this;\n\n if (this.playerConfig.dynamicBg === true) {\n this.config.disable = false;\n }\n\n if (!DynamicBg.isSupport) {\n this.config.disable = true;\n }\n\n var _this$config = this.config,\n disable = _this$config.disable,\n mode = _this$config.mode;\n\n if (disable) {\n return;\n }\n /**\n * @private\n */\n\n\n this._pos = {\n width: 0,\n height: 0,\n rwidth: 0,\n rheight: 0,\n x: 0,\n y: 0\n };\n /**\n * @readonly\n */\n\n this.isStart = false;\n /**\n * @readonly\n */\n\n this.videoPI = 0;\n /**\n * @readonly\n */\n\n this.preTime = 0;\n /**\n * @readonly\n */\n\n this.interval = parseInt(1000 / this.config.frameRate, 10);\n /**\n * @readonly\n */\n\n this.canvas = null;\n /**\n * @readonly\n */\n\n this.canvasCtx = null;\n this.once(Events.COMPLETE, function () {\n _this2.init();\n\n !_this2.player.paused && _this2.start();\n });\n this.once(Events.LOADED_DATA, this.onLoadedData);\n this.on(Events.URL_CHANGE, function () {\n _this2.once(Events.LOADED_DATA, _this2.onLoadedData);\n });\n\n if (mode !== MODES.FIRST_FRAME) {\n this.on(Events.PLAY, function () {\n _this2.start();\n });\n this.on(Events.PAUSE, function () {\n _this2.stop();\n });\n } // 首帧渲染\n\n\n if (mode === MODES.FIRST_FRAME) {\n this.once(Events.TIME_UPDATE, function () {\n var video = _this2.player.video;\n video && checkVideoIsSupport(video) && video.videoWidth && _this2.update(video, video.videoWidth, video.videoHeight);\n });\n }\n }\n }, {\n key: \"init\",\n value:\n /**\n * @private\n */\n function init() {\n var player = this.player,\n config = this.config;\n this.canvasFilter = DynamicBg.supportCanvasFilter();\n\n try {\n // 保证节点插入到video之前\n var parent = !this.config.isInnerRender ? player.root : player.innerContainer || player.root;\n parent.insertAdjacentHTML('afterbegin', \"
\\n
\");\n this.root = parent.children[0];\n this.canvas = this.find('canvas'); // safari中canvas filter不生效\n\n if (!this.canvasFilter) {\n this.canvas.style.filter = config.filter;\n this.canvas.style.webkitFilter = config.filter;\n }\n\n this.mask = this.find('xgmask');\n config.addMask && (this.mask.style.background = config.maskBg);\n this.canvasCtx = this.canvas.getContext('2d');\n var poster = this.playerConfig.poster;\n\n if (poster) {\n var url = Util.typeOf(poster) === 'String' ? poster : Util.typeOf(poster.poster) === 'String' ? poster.poster : null;\n this.updateImg(url);\n }\n } catch (e) {\n XG_DEBUG.logError('plugin:DynamicBg', e);\n }\n }\n }, {\n key: \"updateImg\",\n value: function updateImg(url) {\n var _this3 = this;\n\n // TODO: 需要改造,使用domcss样式渲染,不再使用canvas渲染\n if (!url) {\n return;\n } // 使用首帧预览图渲染\n\n\n var _this$canvas$getBound = this.canvas.getBoundingClientRect(),\n width = _this$canvas$getBound.width,\n height = _this$canvas$getBound.height;\n\n var image = new window.Image();\n\n image.onload = function () {\n if (!_this3.canvas) {\n return;\n }\n\n _this3.canvas.height = height;\n _this3.canvas.width = width; // this.update(image, image.width, image.height)\n\n image = null;\n };\n\n image.src = url;\n }\n }, {\n key: \"update\",\n value: function update(video, videoWidth, videoHeight) {\n if (!this.canvas || !this.canvasCtx || !this.videoPI) {\n return;\n }\n\n try {\n var _pos = this._pos,\n config = this.config;\n\n var _this$canvas$getBound2 = this.canvas.getBoundingClientRect(),\n width = _this$canvas$getBound2.width,\n height = _this$canvas$getBound2.height;\n\n this.videoPI = parseInt(videoWidth / videoHeight * 100, 10);\n\n if (width !== _pos.width || height !== _pos.height) {\n var pi = parseInt(width / height * 100, 10);\n _pos.width = this.canvas.width = width;\n _pos.height = this.canvas.height = height;\n var rheight = height;\n var rwidth = width;\n\n if (pi < this.videoPI) {\n rwidth = parseInt(height * this.videoPI / 100, 10);\n } else if (pi > this.videoPI) {\n rheight = parseInt(width * 100 / this.videoPI, 10);\n }\n\n if (pi < this.videoPI) {\n rwidth = parseInt(height * this.videoPI / 100, 10);\n } else if (pi > this.videoPI) {\n rheight = parseInt(width * 100 / this.videoPI, 10);\n }\n\n _pos.rwidth = rwidth * 1.2;\n _pos.rheight = rheight * 1.2;\n _pos.x = (width - _pos.rwidth) / 2;\n _pos.y = (height - _pos.rheight) / 2;\n } // console.log(`x:${_pos.x} y:${_pos.y} rwidth:${_pos.rwidth} rheight:${ _pos.rheight}`)\n\n\n this.canvasFilter && (this.canvasCtx.filter = config.filter);\n this.canvasCtx.drawImage(video, _pos.x, _pos.y, _pos.rwidth, _pos.rheight);\n } catch (e) {\n XG_DEBUG.logError('plugin:DynamicBg', e);\n }\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.stop();\n this.canvasCtx = null;\n this.canvas = null;\n }\n }, {\n key: \"render\",\n value: function render() {\n return '';\n }\n }], [{\n key: \"pluginName\",\n get: function get() {\n return 'dynamicBg';\n }\n /**\n * @type IDynamicBgConfig\n */\n\n }, {\n key: \"defaultConfig\",\n get: function get() {\n return {\n isInnerRender: false,\n disable: true,\n mode: 'framerate',\n // realtime-实时渲染 firstframe - 仅仅渲染首帧 framerate-按帧渲染\n frameRate: 10,\n // 按帧的时候渲染帧率\n filter: 'blur(50px)',\n // 滤镜设置\n addMask: true,\n // 是否需要蒙层\n maskBg: 'rgba(0,0,0,0.7)' // 蒙层颜色\n\n };\n }\n /**\n * @type {boolean}\n * @description Does the current environment support Canvas\n */\n\n }, {\n key: \"isSupport\",\n get: function get() {\n if (typeof isSupportCanvas === 'boolean') {\n return isSupportCanvas;\n }\n\n isSupportCanvas = checkIsSupportCanvas();\n return isSupportCanvas;\n }\n }, {\n key: \"supportCanvasFilter\",\n value: function supportCanvasFilter() {\n return !(Sniffer.browser === 'safari' || Sniffer.browser === 'firefox');\n }\n }]);\n\n return DynamicBg;\n}(Plugin);\n\nexport default DynamicBg;","export default {\n LANG: 'zh-cn',\n TEXT: {\n ERROR_TYPES: {\n network: {\n code: 1,\n msg: '视频下载错误'\n },\n mse: {\n code: 2,\n msg: '流追加错误'\n },\n parse: {\n code: 3,\n msg: '解析错误'\n },\n format: {\n code: 4,\n msg: '格式错误'\n },\n decoder: {\n code: 5,\n msg: '解码错误'\n },\n runtime: {\n code: 6,\n msg: '语法错误'\n },\n timeout: {\n code: 7,\n msg: '播放超时'\n },\n other: {\n code: 8,\n msg: '其他错误'\n }\n },\n HAVE_NOTHING: '没有关于音频/视频是否就绪的信息',\n HAVE_METADATA: '音频/视频的元数据已就绪',\n HAVE_CURRENT_DATA: '关于当前播放位置的数据是可用的,但没有足够的数据来播放下一帧/毫秒',\n HAVE_FUTURE_DATA: '当前及至少下一帧的数据是可用的',\n HAVE_ENOUGH_DATA: '可用数据足以开始播放',\n NETWORK_EMPTY: '音频/视频尚未初始化',\n NETWORK_IDLE: '音频/视频是活动的且已选取资源,但并未使用网络',\n NETWORK_LOADING: '浏览器正在下载数据',\n NETWORK_NO_SOURCE: '未找到音频/视频来源',\n MEDIA_ERR_ABORTED: '取回过程被用户中止',\n MEDIA_ERR_NETWORK: '网络错误',\n MEDIA_ERR_DECODE: '解码错误',\n MEDIA_ERR_SRC_NOT_SUPPORTED: '不支持的音频/视频格式',\n REPLAY: '重播',\n ERROR: '网络连接似乎出现了问题',\n PLAY_TIPS: '播放',\n PAUSE_TIPS: '暂停',\n PLAYNEXT_TIPS: '下一集',\n DOWNLOAD_TIPS: '下载',\n ROTATE_TIPS: '旋转',\n RELOAD_TIPS: '重新载入',\n FULLSCREEN_TIPS: '进入全屏',\n EXITFULLSCREEN_TIPS: '退出全屏',\n CSSFULLSCREEN_TIPS: '进入样式全屏',\n EXITCSSFULLSCREEN_TIPS: '退出样式全屏',\n TEXTTRACK: '字幕',\n PIP: '画中画',\n SCREENSHOT: '截图',\n LIVE: '正在直播',\n OFF: '关闭',\n OPEN: '开启',\n MINI_DRAG: '点击按住可拖动视频',\n MINISCREEN: '小屏幕',\n REFRESH_TIPS: '请试试',\n REFRESH: '刷新',\n FORWARD: '快进中',\n LIVE_TIP: '直播'\n }\n};","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nimport sniffer from '../utils/sniffer'; // import Danmu from '../plugins/danmu'\n\nimport Xglogger from '../plugins/logger';\nimport Replay from '../plugins/replay';\nimport Poster from '../plugins/poster';\nimport Start from '../plugins/start';\nimport Enter from '../plugins/enter';\nimport Miniscreen from '../plugins/miniScreen';\nimport PC from '../plugins/pc';\nimport Mobile from '../plugins/mobile';\nimport Keyboard from '../plugins/keyboard';\nimport Loading from '../plugins/loading';\nimport Progress from '../plugins/progress';\nimport PlayIcon from '../plugins/play';\nimport FullScreen from '../plugins/fullscreen';\nimport TimeIcon from '../plugins/time';\nimport Volume from '../plugins/volume';\nimport RotateIcon from '../plugins/rotate';\nimport PIPIcon from '../plugins/pip';\nimport PlayNextIcon from '../plugins/playNext';\nimport DownLoadIcon from '../plugins/download';\nimport ScreenShotIcon from '../plugins/screenShot';\nimport DefinitionIcon from '../plugins/definition';\nimport PlaybackRateIcon from '../plugins/playbackRate';\nimport CssFullScreen from '../plugins/cssFullScreen';\nimport Error from '../plugins/error';\nimport Prompt from '../plugins/prompt';\nimport ProgressPreview from '../plugins/progressPreview';\nimport Thumbnail from '../plugins/common/thumbnail';\nimport MiniProgress from '../plugins/progress/miniProgress';\nimport DynamicBg from '../plugins/dynamicBg';\nimport ZH from '../lang/zh-cn';\n\nvar DefaultPreset = function DefaultPreset(options, playerConfig) {\n var _this$plugins, _this$plugins2, _this$plugins3;\n\n _classCallCheck(this, DefaultPreset);\n\n var simulateMode = playerConfig && playerConfig.isMobileSimulateMode;\n var isLive = playerConfig.isLive;\n var vodPlugins = isLive ? [] : [Progress, MiniProgress, ProgressPreview, TimeIcon];\n var contolsIcons = [].concat(vodPlugins, [PlayIcon, FullScreen, RotateIcon, PlayNextIcon, DefinitionIcon, PlaybackRateIcon, DownLoadIcon, ScreenShotIcon, Volume, PIPIcon]);\n var layers = [Replay, Poster, Start, Loading, Enter, Error, Prompt, Thumbnail, Miniscreen];\n this.plugins = [Xglogger].concat(_toConsumableArray(contolsIcons), layers);\n var mode = simulateMode ? 'mobile' : sniffer.device;\n\n switch (mode) {\n case 'pc':\n (_this$plugins = this.plugins).push.apply(_this$plugins, [Keyboard, PC, CssFullScreen]);\n\n break;\n\n case 'mobile':\n (_this$plugins2 = this.plugins).push.apply(_this$plugins2, [Mobile]);\n\n break;\n\n default:\n (_this$plugins3 = this.plugins).push.apply(_this$plugins3, [Keyboard, PC, CssFullScreen]);\n\n }\n\n if (sniffer.os.isIpad || mode === 'pc') {\n this.plugins.push(DynamicBg);\n }\n\n if (sniffer.os.isIpad) {\n this.plugins.push(PC);\n }\n\n this.ignores = [];\n this.i18n = [ZH];\n};\n\nexport { DefaultPreset as default };","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport Player from './player';\nimport Plugin from './plugin/plugin';\nimport BasePlugin from './plugin/basePlugin';\nimport * as Events from './events';\nimport STATE_CLASS from './stateClassMap';\nimport I18N from './lang/i18n';\nimport Errors from './error';\nimport Sniffer from './utils/sniffer';\nimport Util from './utils/util';\nimport defaultPreset from './presets/default';\n\nvar PresetPlayer = /*#__PURE__*/function (_Player) {\n _inherits(PresetPlayer, _Player);\n\n var _super = _createSuper(PresetPlayer);\n\n function PresetPlayer() {\n _classCallCheck(this, PresetPlayer);\n\n return _super.apply(this, arguments);\n }\n\n return PresetPlayer;\n}(Player);\n\n_defineProperty(PresetPlayer, \"defaultPreset\", defaultPreset);\n\n_defineProperty(PresetPlayer, \"Util\", Util);\n\n_defineProperty(PresetPlayer, \"Sniffer\", Sniffer);\n\n_defineProperty(PresetPlayer, \"Errors\", Errors);\n\n_defineProperty(PresetPlayer, \"Events\", Events);\n\n_defineProperty(PresetPlayer, \"Plugin\", Plugin);\n\n_defineProperty(PresetPlayer, \"BasePlugin\", BasePlugin);\n\n_defineProperty(PresetPlayer, \"I18N\", I18N);\n\n_defineProperty(PresetPlayer, \"STATE_CLASS\", STATE_CLASS);\n\nexport default PresetPlayer;"],"names":["PLAY","PLAYING","ENDED","PAUSE","ERROR","SEEKING","SEEKED","TIME_UPDATE","WAITING","CANPLAY","CANPLAY_THROUGH","DURATION_CHANGE","VOLUME_CHANGE","LOADED_DATA","RATE_CHANGE","PROGRESS","LOAD_START","EMPTIED","STALLED","SUSPEND","ABORT","BUFFER_CHANGE","PLAYER_FOCUS","PLAYER_BLUR","READY","URL_NULL","AUTOPLAY_STARTED","AUTOPLAY_PREVENTED","COMPLETE","REPLAY","DESTROY","URL_CHANGE","FULLSCREEN_CHANGE","CSS_FULLSCREEN_CHANGE","MINI_STATE_CHANGE","DEFINITION_CHANGE","BEFORE_DEFINITION_CHANGE","AFTER_DEFINITION_CHANGE","SEI_PARSED","RETRY","VIDEO_RESIZE","PIP_CHANGE","ROTATE","SCREEN_SHOT","PLAYNEXT","SHORTCUT","XGLOG","USER_ACTION","XG_DEBUG_OPEN","window","location","href","indexOf","STYLE","info","error","warn","XGTAG","XG_DEBUG","config","debug","logInfo","message","_console","_len","arguments","length","optionalParams","Array","_key","this","console","log","apply","concat","logWarn","_console2","_len2","_key2","logError","_console3","_fun","_len3","_key3","_defineProperties","target","props","i","descriptor","enumerable","configurable","writable","Object","defineProperty","key","XgplayerTimeRange","bufferedList","instance","Constructor","TypeError","_classCallCheck","protoProps","staticProps","value","index","start","end","get","prototype","_toConsumableArray","arr","isArray","_arrayLikeToArray","_arrayWithoutHoles","iter","Symbol","iterator","from","_iterableToArray","o","minLen","n","toString","call","slice","constructor","name","test","_unsupportedIterableToArray","_nonIterableSpread","len","arr2","_typeof","obj","util","checkIsIn","list","createDom","el","undefined","tpl","attrs","cname","dom","document","createElement","className","innerHTML","keys","forEach","item","setAttribute","createDomFromHtml","html","classname","doc","children","addClass","err","hasClass","some","classList","e","orgClassName","getAttribute","match","RegExp","replace","split","add","removeClass","remove","reg","toggleClass","classNames","_arguments","_loop","typeOf","push","map","join","findDom","sel","querySelector","getElementById","getCss","currentStyle","defaultView","getComputedStyle","padStart","str","pad","charstr","String","maxlen","Math","ceil","chars","r","substring","format","time","isNaN","round","hour","floor","minute","second","event","touches","touch","changedTouches","clientX","clientY","offsetX","pageX","offsetLeft","offsetY","pageY","offsetTop","_target","srcElement","deepCopy","dst","src","Node","deepMerge","_dst$key","getBgImage","url","backgroundImage","a","copyDom","nodeType","back","tagName","attributes","node","setInterval","context","eventName","intervalFunc","frequency","_interval","bind","clearInterval","setTimeout","fun","_timers","id","clearTimeout","splice","clearAllTimers","_timerIds","createImgBtn","imgUrl","width","height","w","h","unit","btn","style","every","parseFloat","trim","backgroundSize","margin","Hex2RGBA","hex","alpha","rgb","sixHex","kw","parseInt","getFullScreenEl","fullscreenElement","webkitFullscreenElement","mozFullScreenElement","msFullscreenElement","checkIsFunction","checkIsObject","hide","display","show","isUndefined","val","setStyleFromCsstext","text","filterStyleFromText","_cssText","cssText","styleArr","ret","remain","getStyleFromCsstext","preloadImg","onload","onerror","img","Image","complete","stopPropagation","cancelable","preventDefault","scrollTop","pageYOffset","documentElement","body","scrollLeft","pageXOffset","checkTouchSupport","getBuffered2","vbuffered","maxHoleDuration","buffered","sort","b","diff","buffered2","_i","buf2len","buf2end","getEventPos","zoom","x","y","requestAnimationFrame","callback","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","getHostFromUrl","results","domain","cancelAnimationFrame","frameId","mozCancelAnimationFrame","cancelRequestAnimationFrame","VERSION_REG","sniffer","device","os","isPc","browser","navigator","ua","userAgent","toLowerCase","ie","firefox","chrome","opera","safari","filter","isWindowsPhone","isSymbian","isAndroid","isFireFox","isTablet","isPhone","isIpad","isIos","osVersion","_match","exec","version","isWeixin","toLocaleLowerCase","JSON","parse","ERROR_TYPE_MAP","Errors","player","errorInfo","errorType","errorCode","errorMessage","originError","ext","mediaError","ERROR_TYPES","i18n","video","duration","currentTime","ended","currentSrc","_player$video","readyState","networkState","playerVersion","code","stack","_r","ex","msg","_get","property","receiver","Reflect","base","object","hasOwnProperty","_getPrototypeOf","_superPropBase","desc","getOwnPropertyDescriptor","_setPrototypeOf","p","setPrototypeOf","__proto__","_createSuper","Derived","hasNativeReflectConstruct","construct","sham","Proxy","Boolean","valueOf","_isNativeReflectConstruct","result","Super","NewTarget","_possibleConstructorReturn","self","ReferenceError","_assertThisInitialized","getPrototypeOf","VIDEO_EVENTS","emitEvents","eventKey","emit","errorHandler","VideoProxy","_EventEmitter","subClass","superClass","create","_inherits","_super","options","_this","_hasStart","_currentTime","_duration","_internalOp","_lastMuted","vtype","videoConfig","assign","controls","autoplay","playsinline","x5VideoPlayerFullscreen","x5VideoOrientation","airplay","tabindex","mediaType","videoAttributes","playerType","x5VideoPlayerType","loop","defaultPlaybackRate","playbackRate","volume","autoplayMuted","muted","videoEventMiddleware","attachVideoEvents","middlewares","_this2","_this3","_this4","evHandlers","_evHandlers","funName","charAt","toUpperCase","on","eData","timeStamp","paused","isInternalOp","type","host","removeInnerOP","isMutedChange","addEventListener","removeEventListener","urls","_this5","removeAttribute","appendChild","_c","_videoSourceCount","_sourceError","removeChild","_e","set","bool","_this6","k","pause","load","detachVideoEvents","off","removeAllListeners","play","canPlayType","range","isTrue","_buffered","crossOrigin","defaultMuted","rate","Infinity","played","preload","seekable","seeking","onWaiting","_detachSourceEvents","_attachSourceEvents","vol","data","_get2","args","_get3","_get4","_get5","_len4","_key4","INDEXDB","mydb","db","ojstore","keypath","indexedDB","webkitindexedDB","IDBKeyRange","webkitIDBKeyRange","myDB","request","open","onsuccess","onupgradeneeded","transaction","objectStoreNames","contains","createObjectStore","keyPath","deleteDatabase","close","storename","store","objectStore","put","delete","clear","FULLSCREEN_EVENTS","GET_FULLSCREEN_API","EXIT_FULLSCREEN_API","callHandler","handler","next","then","hookName","preset","pre","__hooks","_preset$pre","pluginName","_this$__hooks$hookNam","preRet","isContinue","catch","plugins","plugin","useHooks","hooksDescriptor","presetHooks","delHooksDescriptor","runHooks","_obj$__hooks$hookName","ownKeys","enumerableOnly","getOwnPropertySymbols","symbols","sym","_objectSpread","source","getOwnPropertyDescriptors","defineProperties","showErrorMsg","BasePlugin","beforeCreate","__args","__events","playerConfig","__init","logger","lang","i18nKeys","once","_this$player","res","action","params","nParams","emitUserAction","registerPlugin","getPlugin","offAll","destroy","unRegisterPlugin","Obj","ROOT_TYPES","CONTROLS","ROOT","POSITIONS","ROOT_LEFT","ROOT_RIGHT","ROOT_TOP","CONTROLS_LEFT","CONTROLS_RIGTH","CONTROLS_RIGHT","CONTROLS_CENTER","isUrl","createIcon","icon","attr","newIcon","Element","tag","registerIconsObj","iconsConfig","_icons","icons","orgIcon","class","mergeIconClass","mergeIconAttr","Plugin","_BasePlugin","__delegates","root","_parent","_el","parent","registerIcons","langText","textConfig","defaultTexConfig","registerLanguageTexts","zh","renderStr","render","Error","insert","setAttr","setStyle","__registerChildren","_children","_Plugin","_plugin","checkChildren","langKey","langTextShow","qs","eventType","bindEL","delegate","unbindEL","htmlStr","eventHandle","isBubble","getPropertyValue","pdom","child","find","_this7","parentNode","insertIdx","Number","isDomElement","coordinate","mode","curIdx","insertBefore","insertAdjacentHTML","capture","dels","ResizeObserver","__handlers","observer","entries","t","Date","getTime","__trigger","observe","unobserve","disconnect","__runHandler","resizeObserver","typeIsObject","pluginsManager","init","cgid","_pluginInfoId","pluginGroup","closeResizeObserver","getVideoSize","addObserver","isUserActive","_player","_originalOptions","checkPlayerRoot","_keys","_p","lazyRegister","lazyPlugin","timeout","Promise","race","loader","__esModule","default","register","resolve","reject","_plugins","originalOptions","isSupported","defaultConfig","unRegister","_instance","func","afterCreate","__destroy","deletePlugin","getPlugins","findPlugin","cName","beforeInit","retPromise","_loadingPlugins","all","pluginsRet","_Object$keys","beforePlayerInit","afterInit","_i2","_Object$keys2","afterPlayerInit","setLang","updateLang","reRender","pluginsMap","_i3","_Object$keys3","_args","_i4","_Object$keys4","_item","onPluginsReady","setCurrentUserActive","playerId","isActive","c","getCurrentUseActiveId","unObserver","_i5","_Object$keys5","_isUseActive","isUseActive","DEFAULT","DEFAULT_SKIN","ENTER","PAUSED","LOADING","NO_START","ACTIVE","FULLSCREEN","CSS_FULLSCREEN","PARENT_FULLSCREEN","ROTATE_FULLSCREEN","PARENT_ROTATE_FULLSCREEN","INNER_FULLSCREEN","NO_CONTROLS","FLEX_CONTROLS","CONTROLS_FOLLOW","AUTOHIDE","NOT_ALLOW_AUTOPLAY","PC","MOBILE","MINI","Controls","userTimer","_assertThisInitialize2","delay","closeControlsBlur","inactive","focus","disable","marginControls","autoHide","_this$config","left","center","right","innerRoot","isMini","onMouseEnter","onMouseLeave","blur","ignorePaused","position","unbind","_this$config2","initShow","control_autohide","controls_permanent","XGI18nLang","XGI18nTextKeys","XGI18nLangKeys","XGI18nLangPreExtends","updateKeys","en","extend","XGI18nText","LANG","TEXT","use","langData","texts","network","mse","decoder","runtime","other","HAVE_NOTHING","HAVE_METADATA","HAVE_CURRENT_DATA","HAVE_FUTURE_DATA","HAVE_ENOUGH_DATA","NETWORK_EMPTY","NETWORK_IDLE","NETWORK_LOADING","NETWORK_NO_SOURCE","MEDIA_ERR_ABORTED","MEDIA_ERR_NETWORK","MEDIA_ERR_DECODE","MEDIA_ERR_SRC_NOT_SUPPORTED","PLAY_TIPS","PAUSE_TIPS","PLAYNEXT_TIPS","DOWNLOAD_TIPS","ROTATE_TIPS","RELOAD_TIPS","FULLSCREEN_TIPS","EXITFULLSCREEN_TIPS","CSSFULLSCREEN_TIPS","EXITCSSFULLSCREEN_TIPS","TEXTTRACK","PIP","SCREENSHOT","LIVE","OFF","OPEN","MINI_DRAG","MINISCREEN","REFRESH_TIPS","REFRESH","FORWARD","LIVE_TIP","textKeys","langKeys","PlAYER_HOOKS","Player","_VideoProxy","nullUrlStart","fluid","fitVideoSize","videoFillMode","videoInit","poster","isMobileSimulateMode","execBeforePluginsCall","allowSeekAfterEnded","enableContextmenu","closeVideoClick","closeVideoDblclick","closePlayerBlur","closeDelayBlur","leavePlayerTime","closePlayVideoFocus","closePauseVideoFocus","closeFocusVideoFocus","startTime","seekedStatus","miniprogress","disableSwipeHandler","enableSwipeHandler","ignores","whitelist","language","fullscreenTarget","controlsList","screenShot","rotate","pip","download","mini","cssFullscreen","keyShortcut","presets","definition","customDuration","timeOffset","thumbnail","commonStyle","progressColor","playedColor","cachedColor","sliderBtnStyle","volumeColor","defaultPreset","defaultIdx","waitTimer","isReady","isPlaying","isSeeking","isCanplay","_runPending","rotateDeg","isCssfullScreen","fullscreen","_fullscreenEl","_cssfullscreenEl","curDefinition","_orgCss","_fullScreenOffset","_videoHeight","_videoWidth","_accPlayed","acc","loopAcc","innerContainer","topBar","database","_initDOM","_bindEvents","_registerPresets","_registerPlugins","onReady","defaultDefinition","hasStart","vid","line","handle","_initBaseDoms","XgVideoProxy","_nVideo","top","leftBar","rightBar","resetFullState","onFullscreenChange","isFullScreen","fullEl","_fullActionFrom","changeFullStyle","exitCssFullscreen","needFullscreenScroll","scrollTo","recoverFullStyle","__webkitbeginfullscreen","__webkitendfullscreen","playFunc","mousemoveFunc","canPlayFunc","_this5$config","videoPlay","loadeddataFunc","_root","firstChild","ignoresStr","lazy","loadingPlugin","forceBeforeInit","Preset","_player$config$plugin","_player$config$ignore","_player$config$i18n","_presetInst","_presetInst$plugins","_presetInst$ignores","_presetInst$icons","_presetInst$i18n","PLUFGIN","_pConfig","deregister","_this8","_startInit","fileName","lineNumber","seamless","_this9","playPromise","onError","_errorTimer","_this10","_this11","status","_this12","isSeekedPlay","_status","to","_this13","curTime","isPaused","switchURL","_canplay","reloadFunc","_this14","clsList","videoPause","cls","_this15","updateAcc","_unbindEvents","exitFullscreen","cList","_this16","onPlay","_this17","cur","isLive","rootClass","pClassName","_orgPCss","webkitRequestFullscreen","ALLOW_KEYBOARD_INPUT","fullscreenEnabled","webkitSupportsFullscreen","webkitEnterFullscreen","webkitExitFullScreen","_class","onFocus","onBlur","_this18","_this19","_this20","isFirstStart","playing","endType","_at","pos","rvH","_transform","_tx","_ty","transform","webkitTransform","_this21","_this22","_this$video","videoWidth","videoHeight","_this$config3","containerSize","getBoundingClientRect","controlsHeight","videoFit","fit","rWidth","rHeight","_style","paddingTop","videoScale","vWidth","vHeight","cWidth","cHeight","updateObjectPosition","objectPosition","_this23","cutTo","changeDefinition","__url","posterUrl","update","isMuted","addInnerOP","now","Xglogger","_state","isTimeUpdate","_sendFirstFrame","autoplayStart","vt","pt","fvt","_isSeeking","seekingStart","waitingStart","_isWaiting","_waitTimer","_waittTimer","_waitType","suspendWaitingStatus","emitLog","suspendSeekingStatus","_startWaitTimeout","isFFLoading","_onReset","_onAutoplayStart","_onTimeupdate","_onWaiting","_onSeeking","_onSeeked","endState","_onPlaying","_onError","s","costTime","_now","_cost","Replay","replay","__handleReplay","hook","path","Poster","isEndedShow","hideCanplay","onTimeUpdate","AnimateMap","Start","autoPlayStart","initIcons","onPlayPause","clickHandler","switchPausePlay","startPlay","startPause","isAnimate","endShow","seconds","addAnimate","switchStatus","isShowPause","isShowEnd","disableAnimate","animate","Enter","innerHtml","logo","HTMLElement","barStr","MiniScreenIcon","getMini","exitMini","onClick","getStyleSize","num","measurements","measurementsLength","getSize","elem","getStyle","size","innerWidth","innerHeight","outerWidth","outerHeight","getZeroSize","offsetWidth","offsetHeight","isBorderBox","boxSizing","measurement","paddingWidth","paddingLeft","paddingRight","paddingHeight","paddingBottom","marginWidth","marginLeft","marginRight","marginHeight","marginTop","marginBottom","borderWidth","borderLeftWidth","borderRightWidth","borderHeight","borderTopWidth","borderBottomWidth","isBorderBoxSizeOuter","styleWidth","styleHeight","getTouch","dentifier","identifier","EVENTS","POST_START_EVENTS","mousedown","touchstart","pointerdown","Draggabilly","isEnabled","isDragging","isDown","downPoint","dragPoint","startPos","_handlerDom","_bindStartEvent","_startKey","events","_boundPointerEvents","onUp","positionDrag","webKitTransform","dragStart","dragMove","dragEnd","touchIdentifier","pointerId","dragCancel","pointer","_getPosition","maxY","maxX","setLeftTop","_bindPostStartEvents","_unbindPostStartEvents","presetInfo","moveVector","hasDragStarted","dragRealStart","_this$startPos","_dragPointerMove","dragX","dragY","checkContain","_unbindStartEvent","abs","axis","drag","grid","_getPositionCoord","_addTransformPosition","matrixValues","xIndex","translateX","translateY","styleSide","measure","parentSize","MiniScreen","isClose","scrollY","scrollHeight","lastStyle","isShowIcon","isScrollSwitch","disableDrag","onCancelClick","onCenterClick","_draggabilly","onScroll","MOUSE_EVENTS","mouseenter","mouseleave","mousemove","HOOKS","PCPlugin","_assertThisInitialize","_this$playerConfig","_assertThisInitialize3","__canvas","closeVideoStopPropagation","_clickCount","clickTimer","switchPlayPause","_assertThisInitialize4","getFullscreen","disableContextmenu","_this$playerConfig2","initEvents","onVideoClick","onVideoDblClick","onContextmenu","returnValue","cancelBubble","_this$player2","TOUCHS","move","cancel","MOUSES","preventToucheDefault","Touche","_pos","moving","pressDelay","dbClickDelay","disablePress","disableDbClick","miniStep","needPreventDefault","pressIntrvalId","dbIntrvalId","_initEvent","onTouchStart","onTouchMove","onTouchEnd","onTouchCancel","__clearPress","trigger","press","__clearDb","handlers","__setPress","__setDb","diffx","diffy","touchend","touchmove","ACTIONS","MobilePlugin","touche","getTouche","disableGesture","isStart","rect","_x","_y","scopeL","scopeR","scopeM1","scopeM","scopeM2","miniMoveStep","hideControlsActive","scope","checkScope","gestureY","gestureX","executeMove","endLastMove","resetSeekState","resetPos","changeAction","checkIsRootTarget","recoverAutoHide","light","timer","seekTipIcon","closedbClick","xgMask","initCustomStyle","registerThumbnail","onRootTouchMove","onRootTouchEnd","moveDuration","_this2$pos","eventsMap","pressend","click","doubleclick","disableActive","progressPlugin","progress","addCallBack","activeSeekNote","forward","usable","createThumbnail","timePreview","backgroundColor","color","disableTimeProgress","startPlugin","recover","mold","updateTime","updateBrightness","updateVolume","lastScope","seek","toFixed","hideControlsEnd","focusVideoClick","pressRate","percent","updatePercent","isTouchingSeek","maxDarkness","isForward","focusHide","updateThumbnails","gradient","disableSeekIcon","updateGesture","miniYPer","darkness","isDisableTag","isContentEditable","Keyboard","isIgnoreUserActive","disableBodyTrigger","checkIsVisible","metaKey","altKey","ctrlKey","keyCode","isGlobalTrigger","checkCode","handleKeyCode","extendkeyCodeMap","keyCodeMap","key1","seekStep","space","noBodyTarget","up","down","esc","mergekeyCodeMap","onKeydown","onBodyKeyDown","checkVisible","rec","bottom","isBodyTarget","flag","_time","cssfullscreen","curKeyCode","_this4$keyCodeMap$key","Loading","loadingIcon","TPL","styleKey","InnerList","fragments","focusClass","cachedIndex","playedIndex","newIndex","curIndex","millisecond","progressList","curPFrag","per","cached","updateDuration","newPIndex","findIndex","updateProgress","newCIndex","inner","isFocus","Progress","_ePos","computeTime","triggerCallbacks","closeMoveSeek","onMoveStart","isProgressMoving","progressBtn","updateWidth","isMobile","onMouseMove","onMouseUp","onMoveOnly","onBodyClick","onMoveEnd","isEnter","miniStartStep","isPauseMoving","_assertThisInitialize5","_assertThisInitialize6","useable","__dragCallBacks","direc","innerList","outer","createInner","isDragingSeek","onTimeupdate","onCacheUpdate","onReset","bindDomEvents","boxShadow","_index","onMouseDown","pauseAutoHide","isCloseClickSeek","realTime","rLeft","_this$root$getBoundin","offset","timeIcon","resetActive","notSeek","point","bufferedPoint","thumbnailPlugin","controlsMode","Play","btnClick","changeLangTextKey","TopBackIcon","screenBack","Fullscreen","rotateFullscreen","orientation","setRotateDeg","useCssFullscreen","switchCallback","needBackIcon","handleFullscreen","changeFullScreen","topBackIcon","_onOrientationChange","deg","getCssFullscreen","exitRotateFullscreen","getRotateFullscreen","Time","isActiving","constrolsMode","createCenterTime","durationDom","timeDom","current","centerCurDom","centerDurDom","updateState","Volume","slider","bar","barRect","barH","updateVolumePos","onBarMouseUp","isMoving","showValueLabel","updateVolumeValue","volumeSmall","volumeLarge","volumeMuted","changeMutedHandler","changeMuted","onMouseenter","onMouseleave","onBarMousedown","onBarMouseMove","onVolumeChange","max","min","$labelValue","innerText","miniVolume","isShowVolumeValue","Rotate","onBtnClick","updateRotateDeg","innerRotate","clockwise","_styles","transformOrigin","times","factor","PresentationMode","isPIPAvailable","isPip","exitPIP","requestPIP","showIcon","pMode","initPipEvents","switchPIP","pipIcon","pipIconExit","leavePIPCallback","enterPIPCallback","pipWindow","pictureInPictureWindow","onWebkitpresentationmodechanged","webkitPresentationMode","checkWebkitSetPresentationMode","webkitSetPresentationMode","requestPictureInPicture","reason","exitPictureInPicture","pictureInPictureElement","pictureInPictureEnabled","disablePictureInPicture","webkitSupportsPresentationMode","PlayNextIcon","idx","urlList","nextHandler","playNext","changeSrc","Download","isLock","getAbsoluteURL","div","ScreenShot","screenshotIcon","initSize","fitVideo","onClickBtn","filename","saveLink","createEvent","initMouseEvent","dispatchEvent","canvas","canvasCtx","getContext","shot","saveScreenShot","option","quality","createCanvans","drawImage","toDataURL","OptionList","onItemClick","renderItemList","_delegates","attrKeys","selected","showText","delegateTarget","changeCallback","curlSelected","getAttrObj","IS_MOBILE","OptionsIcon","curValue","listType","listStyle","hidePortrait","optionsList","activeEvent","onEnter","onLeave","onToggle","unFocus","curItem","changeCurrentText","getTextByLang","itemList","DefinitionIcon","_OptionsIcon","changeDefinitionList","definitionList","items","showItem","switchUrl","PlaybackRate","curRate","itemInfo","CssFullScreen","contentIcon","switchTips","ErrorPlugin","errorRetry","handleError","handleCanPlay","retry","errorNote","Prompt","intervalId","customConfig","customOnClick","showPrompt","hidePrompt","detail","interval","highlight","hideinterval","ISPOT","mergeISPOT","iSpot","APIS","initDots","_ispots","createDot","_ispotsInit","isNew","calcuPosition","dotDom","findDot","updateDot","needShow","dot","showDot","deleteDot","del","parentElement","deleteAllDots","dotDoms","getElementsByTagName","updateAllDots","iSpots","ispot","CALLBACK_MAP","dragmove","dragstart","dragend","ProgressPreview","f","videoPreview","videothumbnail","previewLine","timePoint","timeText","tipText","_hasThumnail","ispots","progressDot","initDotsAPI","bindEvents","onMousemove","onMousedown","handlerPreviewClick","updatePosition","isDrag","cwidth","_t","_tt","isflex","lwidth","tWidth","timeStr","textContent","updateLinePos","showTips","isFocusDots","defaultText","hideTips","updateTimeText","thumbnailConfig","isShowThumbnail","tRoot","isShowCoverPreview","totalWidth","widthPerSeconds","isDefault","removeCallBack","miniWidth","Thumbnail","ratio","preloadMark","initThumbnail","pic_num","containerWidth","containerHeight","row","col","urlIndex","indexInPage","rowIndex","colIndex","swidth","sHeight","getUrlByIndex","backgroundPosition","customStyle","_this$config4","getPosition","isShow","scale","MiniProgress","MODES","nowTime","performance","checkVideoIsSupport","isSupportCanvas","DynamicBg","videoPI","stop","preTime","dynamicBg","isSupport","rwidth","rheight","frameRate","onLoadedData","canvasFilter","supportCanvasFilter","isInnerRender","webkitFilter","mask","addMask","background","maskBg","updateImg","_this$canvas$getBound","image","_this$canvas$getBound2","pi","checkIsSupportCanvas","PresetPlayer","_Player","DefaultPreset","_this$plugins","_this$plugins2","_this$plugins3","simulateMode","contolsIcons","layers"],"sourceRoot":""}