\\n';\n};\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nconsole.log('\\n' + ' %c DPlayer ' + \"1.6.1\" + ' %c http://dplayer.js.org ' + '\\n' + '\\n', 'color: #fadfa3; background: #030307; padding:5px 0;', 'background: #fadfa3; padding:5px 0;');\nmodule.exports = __webpack_require__(2);\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if ('value' in descriptor)\n descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function (Constructor, protoProps, staticProps) {\n if (protoProps)\n defineProperties(Constructor.prototype, protoProps);\n if (staticProps)\n defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n__webpack_require__(3);\nvar _utils = __webpack_require__(4);\nvar _utils2 = _interopRequireDefault(_utils);\nvar _svg = __webpack_require__(0);\nvar _svg2 = _interopRequireDefault(_svg);\nvar _option = __webpack_require__(5);\nvar _option2 = _interopRequireDefault(_option);\nvar _i18n = __webpack_require__(7);\nvar _i18n2 = _interopRequireDefault(_i18n);\nvar _html = __webpack_require__(8);\nvar _html2 = _interopRequireDefault(_html);\nvar _danmaku = __webpack_require__(9);\nvar _danmaku2 = _interopRequireDefault(_danmaku);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError('Cannot call a class as a function');\n }\n}\nvar index = 0;\nvar DPlayer = function () {\n function DPlayer(option) {\n var _this = this;\n _classCallCheck(this, DPlayer);\n this.option = (0, _option2.default)(option);\n this.option.element.classList.add('dplayer');\n if (this.option.video.quality) {\n this.qualityIndex = this.option.video.defaultQuality;\n this.quality = this.option.video.quality[this.option.video.defaultQuality];\n }\n this.tran = new _i18n2.default(this.option.lang).tran;\n var eventTypes = [\n 'play',\n 'pause',\n 'canplay',\n 'playing',\n 'ended',\n 'error'\n ];\n this.event = {};\n for (var i = 0; i < eventTypes.length; i++) {\n this.event[eventTypes[i]] = [];\n }\n this.trigger = function (type) {\n for (var _i = 0; _i < _this.event[type].length; _i++) {\n _this.event[type][_i]();\n }\n };\n this.element = this.option.element;\n if (!this.option.danmaku) {\n this.element.classList.add('dplayer-no-danmaku');\n }\n if (_utils.isMobile) {\n this.element.classList.add('dplayer-mobile');\n }\n this.element.innerHTML = _html2.default.main(option, index, this.tran);\n var bar = {};\n bar.volumeBar = this.element.getElementsByClassName('dplayer-volume-bar-inner')[0];\n bar.playedBar = this.element.getElementsByClassName('dplayer-played')[0];\n bar.loadedBar = this.element.getElementsByClassName('dplayer-loaded')[0];\n var pbar = this.element.getElementsByClassName('dplayer-bar-wrap')[0];\n var pbarTimeTips = this.element.getElementsByClassName('dplayer-bar-time')[0];\n var barWidth = void 0;\n this.updateBar = function (type, percentage, direction) {\n percentage = percentage > 0 ? percentage : 0;\n percentage = percentage < 1 ? percentage : 1;\n bar[type + 'Bar'].style[direction] = percentage * 100 + '%';\n };\n document.addEventListener('click', function () {\n _this.focus = false;\n }, true);\n this.element.addEventListener('click', function () {\n _this.focus = true;\n }, true);\n if (this.option.danmaku) {\n this.danmaku = new _danmaku2.default({\n container: this.element.getElementsByClassName('dplayer-danmaku')[0],\n opacity: localStorage.getItem('danmaku-opacity') || 0.7,\n callback: function callback() {\n _this.element.getElementsByClassName('dplayer-danloading')[0].style.display = 'none';\n if (_this.option.autoplay && !_utils.isMobile) {\n _this.play();\n } else if (_utils.isMobile) {\n _this.pause();\n }\n },\n error: function error(msg) {\n _this.notice(msg);\n },\n apiBackend: this.option.apiBackend,\n borderColor: this.option.theme,\n height: this.arrow ? 24 : 30,\n time: function time() {\n return _this.video.currentTime;\n },\n api: {\n id: this.option.danmaku.id,\n address: this.option.danmaku.api,\n token: this.option.danmaku.token,\n maximum: this.option.danmaku.maximum,\n addition: this.option.danmaku.addition,\n user: this.option.danmaku.user\n }\n });\n }\n this.arrow = this.element.offsetWidth <= 500;\n if (this.arrow) {\n var arrowStyle = document.createElement('style');\n arrowStyle.innerHTML = '.dplayer .dplayer-danmaku{font-size:18px}';\n document.head.appendChild(arrowStyle);\n }\n this.video = this.element.getElementsByClassName('dplayer-video-current')[0];\n this.bezel = this.element.getElementsByClassName('dplayer-bezel-icon')[0];\n this.bezel.addEventListener('animationend', function () {\n _this.bezel.classList.remove('dplayer-bezel-transition');\n });\n this.playButton = this.element.getElementsByClassName('dplayer-play-icon')[0];\n this.paused = true;\n this.playButton.addEventListener('click', function () {\n _this.toggle();\n });\n var videoWrap = this.element.getElementsByClassName('dplayer-video-wrap')[0];\n var conMask = this.element.getElementsByClassName('dplayer-controller-mask')[0];\n if (!_utils.isMobile) {\n videoWrap.addEventListener('click', function () {\n _this.toggle();\n });\n conMask.addEventListener('click', function () {\n _this.toggle();\n });\n } else {\n var toggleController = function toggleController() {\n if (_this.element.classList.contains('dplayer-hide-controller')) {\n _this.element.classList.remove('dplayer-hide-controller');\n } else {\n _this.element.classList.add('dplayer-hide-controller');\n }\n };\n videoWrap.addEventListener('click', toggleController);\n conMask.addEventListener('click', toggleController);\n }\n var lastPlayPos = 0;\n var currentPlayPos = 0;\n var bufferingDetected = false;\n window.requestAnimationFrame = function () {\n return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function (callback) {\n window.setTimeout(callback, 1000 / 60);\n };\n }();\n var setCheckLoadingTime = function setCheckLoadingTime() {\n _this.checkLoading = setInterval(function () {\n currentPlayPos = _this.video.currentTime;\n if (!bufferingDetected && currentPlayPos < lastPlayPos + 0.01 && !_this.video.paused) {\n _this.element.classList.add('dplayer-loading');\n bufferingDetected = true;\n }\n if (bufferingDetected && currentPlayPos > lastPlayPos + 0.01 && !_this.video.paused) {\n _this.element.classList.remove('dplayer-loading');\n bufferingDetected = false;\n }\n lastPlayPos = currentPlayPos;\n }, 100);\n };\n var clearCheckLoadingTime = function clearCheckLoadingTime() {\n clearInterval(_this.checkLoading);\n };\n this.playedTime = false;\n this.animationFrame = function () {\n if (_this.playedTime) {\n _this.updateBar('played', _this.video.currentTime / _this.video.duration, 'width');\n _this.element.getElementsByClassName('dplayer-ptime')[0].innerHTML = _utils2.default.secondToTime(_this.video.currentTime);\n _this.trigger('playing');\n }\n window.requestAnimationFrame(_this.animationFrame);\n };\n window.requestAnimationFrame(this.animationFrame);\n this.setTime = function (type) {\n if (!type) {\n _this.playedTime = true;\n setCheckLoadingTime();\n } else {\n _this[type + 'Time'] = true;\n if (type === 'played') {\n setCheckLoadingTime();\n }\n }\n };\n this.clearTime = function (type) {\n if (!type) {\n _this.playedTime = false;\n clearCheckLoadingTime();\n } else {\n _this[type + 'Time'] = false;\n if (type === 'played') {\n clearCheckLoadingTime();\n }\n }\n };\n pbar.addEventListener('click', function (event) {\n var e = event || window.event;\n barWidth = pbar.clientWidth;\n var percentage = (e.clientX - _utils2.default.getElementViewLeft(pbar)) / barWidth;\n percentage = percentage > 0 ? percentage : 0;\n percentage = percentage < 1 ? percentage : 1;\n _this.updateBar('played', percentage, 'width');\n _this.seek(parseFloat(bar.playedBar.style.width) / 100 * _this.video.duration);\n });\n this.initVideoPreview();\n this.isPreViewShow = false;\n this.isTimeTipsShow = true;\n this.isMouseHoverPbar = false;\n this.mouseHandler = this.mouseHandler(pbar, pbarTimeTips).bind(this);\n pbar.addEventListener('mousemove', this.mouseHandler);\n pbar.addEventListener('mouseover', this.mouseHandler);\n pbar.addEventListener('mouseenter', this.mouseHandler);\n pbar.addEventListener('mouseout', this.mouseHandler);\n pbar.addEventListener('mouseleave', this.mouseHandler);\n var thumbMove = function thumbMove(event) {\n var e = event || window.event;\n var percentage = (e.clientX - _utils2.default.getElementViewLeft(pbar)) / barWidth;\n percentage = percentage > 0 ? percentage : 0;\n percentage = percentage < 1 ? percentage : 1;\n _this.updateBar('played', percentage, 'width');\n _this.element.getElementsByClassName('dplayer-ptime')[0].innerHTML = _utils2.default.secondToTime(percentage * _this.video.duration);\n };\n var thumbUp = function thumbUp() {\n document.removeEventListener('mouseup', thumbUp);\n document.removeEventListener('mousemove', thumbMove);\n _this.seek(parseFloat(bar.playedBar.style.width) / 100 * _this.video.duration);\n _this.setTime();\n };\n pbar.addEventListener('mousedown', function () {\n barWidth = pbar.clientWidth;\n _this.clearTime();\n document.addEventListener('mousemove', thumbMove);\n document.addEventListener('mouseup', thumbUp);\n });\n var volumeEle = this.element.getElementsByClassName('dplayer-volume')[0];\n var volumeBarWrapWrap = this.element.getElementsByClassName('dplayer-volume-bar-wrap')[0];\n var volumeBarWrap = this.element.getElementsByClassName('dplayer-volume-bar')[0];\n var volumeicon = this.element.getElementsByClassName('dplayer-volume-icon')[0];\n var vWidth = 35;\n this.switchVolumeIcon = function () {\n var volumeicon = _this.element.getElementsByClassName('dplayer-volume-icon')[0];\n if (_this.volume() >= 0.95) {\n volumeicon.innerHTML = (0, _svg2.default)('volume-up');\n } else if (_this.volume() > 0) {\n volumeicon.innerHTML = (0, _svg2.default)('volume-down');\n } else {\n volumeicon.innerHTML = (0, _svg2.default)('volume-off');\n }\n };\n var volumeMove = function volumeMove(event) {\n var e = event || window.event;\n var percentage = (e.clientX - _utils2.default.getElementViewLeft(volumeBarWrap) - 5.5) / vWidth;\n _this.volume(percentage);\n };\n var volumeUp = function volumeUp() {\n document.removeEventListener('mouseup', volumeUp);\n document.removeEventListener('mousemove', volumeMove);\n volumeEle.classList.remove('dplayer-volume-active');\n };\n volumeBarWrapWrap.addEventListener('click', function (event) {\n var e = event || window.event;\n var percentage = (e.clientX - _utils2.default.getElementViewLeft(volumeBarWrap) - 5.5) / vWidth;\n _this.volume(percentage);\n });\n volumeBarWrapWrap.addEventListener('mousedown', function () {\n document.addEventListener('mousemove', volumeMove);\n document.addEventListener('mouseup', volumeUp);\n volumeEle.classList.add('dplayer-volume-active');\n });\n volumeicon.addEventListener('click', function () {\n if (_this.video.muted) {\n _this.video.muted = false;\n _this.switchVolumeIcon();\n _this.updateBar('volume', _this.volume(), 'width');\n } else {\n _this.video.muted = true;\n volumeicon.innerHTML = (0, _svg2.default)('volume-off');\n _this.updateBar('volume', 0, 'width');\n }\n });\n this.hideTime = 0;\n var hideController = function hideController() {\n _this.element.classList.remove('dplayer-hide-controller');\n clearTimeout(_this.hideTime);\n _this.hideTime = setTimeout(function () {\n if (_this.video.played.length) {\n _this.element.classList.add('dplayer-hide-controller');\n closeSetting();\n closeComment();\n }\n }, 2000);\n };\n if (!_utils.isMobile) {\n this.element.addEventListener('mousemove', hideController);\n this.element.addEventListener('click', hideController);\n }\n var settingHTML = _html2.default.setting(this.tran);\n var settingIcon = this.element.getElementsByClassName('dplayer-setting-icon')[0];\n var settingBox = this.element.getElementsByClassName('dplayer-setting-box')[0];\n var mask = this.element.getElementsByClassName('dplayer-mask')[0];\n settingBox.innerHTML = settingHTML.original;\n var closeSetting = function closeSetting() {\n if (settingBox.classList.contains('dplayer-setting-box-open')) {\n settingBox.classList.remove('dplayer-setting-box-open');\n mask.classList.remove('dplayer-mask-show');\n setTimeout(function () {\n settingBox.classList.remove('dplayer-setting-box-narrow');\n settingBox.innerHTML = settingHTML.original;\n settingEvent();\n }, 300);\n }\n };\n var openSetting = function openSetting() {\n settingBox.classList.add('dplayer-setting-box-open');\n mask.classList.add('dplayer-mask-show');\n };\n mask.addEventListener('click', function () {\n closeSetting();\n });\n settingIcon.addEventListener('click', function () {\n openSetting();\n });\n this.loop = this.option.loop;\n var showdan = true;\n var settingEvent = function settingEvent() {\n var loopEle = _this.element.getElementsByClassName('dplayer-setting-loop')[0];\n var loopToggle = loopEle.getElementsByClassName('dplayer-toggle-setting-input')[0];\n loopToggle.checked = _this.loop;\n loopEle.addEventListener('click', function () {\n loopToggle.checked = !loopToggle.checked;\n if (loopToggle.checked) {\n _this.loop = true;\n } else {\n _this.loop = false;\n }\n closeSetting();\n });\n var showDanEle = _this.element.getElementsByClassName('dplayer-setting-showdan')[0];\n var showDanToggle = showDanEle.getElementsByClassName('dplayer-showdan-setting-input')[0];\n showDanToggle.checked = showdan;\n showDanEle.addEventListener('click', function () {\n showDanToggle.checked = !showDanToggle.checked;\n if (showDanToggle.checked) {\n showdan = true;\n if (!_this.paused) {\n _this.danmaku.show();\n }\n } else {\n showdan = false;\n _this.danmaku.hide();\n }\n closeSetting();\n });\n var speedEle = _this.element.getElementsByClassName('dplayer-setting-speed')[0];\n speedEle.addEventListener('click', function () {\n settingBox.classList.add('dplayer-setting-box-narrow');\n settingBox.innerHTML = settingHTML.speed;\n var speedItem = settingBox.getElementsByClassName('dplayer-setting-speed-item');\n var _loop = function _loop(_i2) {\n speedItem[_i2].addEventListener('click', function () {\n _this.video.playbackRate = speedItem[_i2].dataset.speed;\n closeSetting();\n });\n };\n for (var _i2 = 0; _i2 < speedItem.length; _i2++) {\n _loop(_i2);\n }\n });\n if (_this.danmaku) {\n bar.danmakuBar = _this.element.getElementsByClassName('dplayer-danmaku-bar-inner')[0];\n var danmakuBarWrapWrap = _this.element.getElementsByClassName('dplayer-danmaku-bar-wrap')[0];\n var danmakuBarWrap = _this.element.getElementsByClassName('dplayer-danmaku-bar')[0];\n var danmakuSettingBox = _this.element.getElementsByClassName('dplayer-setting-danmaku')[0];\n var dWidth = 130;\n _this.updateBar('danmaku', _this.danmaku.opacity(), 'width');\n var danmakuMove = function danmakuMove(event) {\n var e = event || window.event;\n var percentage = (e.clientX - _utils2.default.getElementViewLeft(danmakuBarWrap)) / dWidth;\n percentage = percentage > 0 ? percentage : 0;\n percentage = percentage < 1 ? percentage : 1;\n _this.updateBar('danmaku', percentage, 'width');\n _this.danmaku.opacity(percentage);\n };\n var danmakuUp = function danmakuUp() {\n document.removeEventListener('mouseup', danmakuUp);\n document.removeEventListener('mousemove', danmakuMove);\n danmakuSettingBox.classList.remove('dplayer-setting-danmaku-active');\n };\n danmakuBarWrapWrap.addEventListener('click', function (event) {\n var e = event || window.event;\n var percentage = (e.clientX - _utils2.default.getElementViewLeft(danmakuBarWrap)) / dWidth;\n percentage = percentage > 0 ? percentage : 0;\n percentage = percentage < 1 ? percentage : 1;\n _this.updateBar('danmaku', percentage, 'width');\n _this.danmaku.opacity(percentage);\n });\n danmakuBarWrapWrap.addEventListener('mousedown', function () {\n document.addEventListener('mousemove', danmakuMove);\n document.addEventListener('mouseup', danmakuUp);\n danmakuSettingBox.classList.add('dplayer-setting-danmaku-active');\n });\n }\n };\n settingEvent();\n if (this.video.duration !== 1) {\n this.element.getElementsByClassName('dplayer-dtime')[0].innerHTML = this.video.duration ? _utils2.default.secondToTime(this.video.duration) : '00:00';\n }\n if (!this.danmaku) {\n if (this.option.autoplay && !_utils.isMobile) {\n this.play();\n } else if (_utils.isMobile) {\n this.pause();\n }\n }\n var commentInput = this.element.getElementsByClassName('dplayer-comment-input')[0];\n var commentIcon = this.element.getElementsByClassName('dplayer-comment-icon')[0];\n var commentBox = this.element.getElementsByClassName('dplayer-comment-box')[0];\n var commentSettingIcon = this.element.getElementsByClassName('dplayer-comment-setting-icon')[0];\n var commentSettingBox = this.element.getElementsByClassName('dplayer-comment-setting-box')[0];\n var commentSendIcon = this.element.getElementsByClassName('dplayer-send-icon')[0];\n var closeCommentSetting = function closeCommentSetting() {\n if (commentSettingBox.classList.contains('dplayer-comment-setting-open')) {\n commentSettingBox.classList.remove('dplayer-comment-setting-open');\n }\n };\n var toggleCommentSetting = function toggleCommentSetting() {\n if (commentSettingBox.classList.contains('dplayer-comment-setting-open')) {\n commentSettingBox.classList.remove('dplayer-comment-setting-open');\n } else {\n commentSettingBox.classList.add('dplayer-comment-setting-open');\n }\n };\n var disableHide = 0;\n var commentFocusTimeout = 0;\n var closeComment = function closeComment() {\n if (!commentBox.classList.contains('dplayer-comment-box-open')) {\n return;\n }\n commentBox.classList.remove('dplayer-comment-box-open');\n mask.classList.remove('dplayer-mask-show');\n _this.element.classList.remove('dplayer-show-controller');\n clearInterval(disableHide);\n clearTimeout(commentFocusTimeout);\n closeCommentSetting();\n };\n var openComment = function openComment() {\n if (commentBox.classList.contains('dplayer-comment-box-open')) {\n return;\n }\n commentBox.classList.add('dplayer-comment-box-open');\n mask.classList.add('dplayer-mask-show');\n _this.element.classList.add('dplayer-show-controller');\n disableHide = setInterval(function () {\n clearTimeout(_this.hideTime);\n }, 1000);\n commentFocusTimeout = setTimeout(function () {\n commentInput.focus();\n }, 300);\n };\n mask.addEventListener('click', function () {\n closeComment();\n });\n commentIcon.addEventListener('click', function () {\n openComment();\n });\n commentSettingIcon.addEventListener('click', function () {\n toggleCommentSetting();\n });\n this.element.getElementsByClassName('dplayer-comment-setting-color')[0].addEventListener('click', function () {\n var sele = _this.element.querySelector('input[name=\"dplayer-danmaku-color-${index}\"]:checked+span');\n if (sele) {\n commentSettingIcon.getElementsByClassName('dplayer-fill')[0].style.fill = _this.element.querySelector('input[name=\"dplayer-danmaku-color-${index}\"]:checked').value;\n }\n });\n var sendComment = function sendComment() {\n commentInput.blur();\n if (!commentInput.value.replace(/^\\s+|\\s+$/g, '')) {\n _this.notice(_this.tran('Please input danmaku content!'));\n return;\n }\n _this.danmaku.send({\n text: commentInput.value,\n color: _this.element.querySelector('.dplayer-comment-setting-color input:checked').value,\n type: _this.element.querySelector('.dplayer-comment-setting-type input:checked').value\n }, function () {\n commentInput.value = '';\n closeComment();\n });\n };\n commentInput.addEventListener('click', function () {\n closeCommentSetting();\n });\n commentInput.addEventListener('keydown', function (e) {\n var event = e || window.event;\n if (event.keyCode === 13) {\n sendComment();\n }\n });\n commentSendIcon.addEventListener('click', sendComment);\n this.element.addEventListener('fullscreenchange', function () {\n if (_this.danmaku) {\n _this.danmaku.resize();\n }\n });\n this.element.addEventListener('mozfullscreenchange', function () {\n if (_this.danmaku) {\n _this.danmaku.resize();\n }\n });\n this.element.addEventListener('webkitfullscreenchange', function () {\n if (_this.danmaku) {\n _this.danmaku.resize();\n }\n });\n this.element.getElementsByClassName('dplayer-full-icon')[0].addEventListener('click', function () {\n if (!document.fullscreenElement && !document.mozFullScreenElement && !document.webkitFullscreenElement) {\n if (_this.element.requestFullscreen) {\n _this.element.requestFullscreen();\n } else if (_this.element.mozRequestFullScreen) {\n _this.element.mozRequestFullScreen();\n } else if (_this.element.webkitRequestFullscreen) {\n _this.element.webkitRequestFullscreen();\n } else if (_this.video.webkitEnterFullscreen) {\n _this.video.webkitEnterFullscreen();\n }\n } else {\n if (document.cancelFullScreen) {\n document.cancelFullScreen();\n } else if (document.mozCancelFullScreen) {\n document.mozCancelFullScreen();\n } else if (document.webkitCancelFullScreen) {\n document.webkitCancelFullScreen();\n }\n }\n if (_this.danmaku) {\n _this.danmaku.resize();\n }\n });\n this.element.getElementsByClassName('dplayer-full-in-icon')[0].addEventListener('click', function () {\n if (_this.element.classList.contains('dplayer-fulled')) {\n _this.element.classList.remove('dplayer-fulled');\n } else {\n _this.element.classList.add('dplayer-fulled');\n if (_this.danmaku) {\n _this.danmaku.resize();\n }\n }\n });\n var handleKeyDown = function handleKeyDown(e) {\n if (_this.focus) {\n var tag = document.activeElement.tagName.toUpperCase();\n var editable = document.activeElement.getAttribute('contenteditable');\n if (tag !== 'INPUT' && tag !== 'TEXTAREA' && editable !== '' && editable !== 'true') {\n var event = e || window.event;\n var percentage = void 0;\n switch (event.keyCode) {\n case 32:\n event.preventDefault();\n _this.toggle();\n break;\n case 37:\n event.preventDefault();\n _this.seek(_this.video.currentTime - 5);\n hideController();\n break;\n case 39:\n event.preventDefault();\n _this.seek(_this.video.currentTime + 5);\n hideController();\n break;\n case 38:\n event.preventDefault();\n percentage = _this.volume() + 0.1;\n _this.volume(percentage);\n break;\n case 40:\n event.preventDefault();\n percentage = _this.volume() - 0.1;\n _this.volume(percentage);\n break;\n }\n }\n }\n };\n if (this.option.hotkey) {\n document.addEventListener('keydown', handleKeyDown);\n }\n document.addEventListener('keydown', function (e) {\n var event = e || window.event;\n switch (event.keyCode) {\n case 27:\n if (_this.element.classList.contains('dplayer-fulled')) {\n _this.element.classList.remove('dplayer-fulled');\n if (_this.danmaku) {\n _this.danmaku.resize();\n }\n }\n break;\n }\n });\n var menu = this.element.getElementsByClassName('dplayer-menu')[0];\n this.element.addEventListener('contextmenu', function (e) {\n var event = e || window.event;\n event.preventDefault();\n menu.classList.add('dplayer-menu-show');\n var clientRect = _this.element.getBoundingClientRect();\n var menuLeft = event.clientX - clientRect.left;\n var menuTop = event.clientY - clientRect.top;\n if (menuLeft + menu.offsetWidth >= clientRect.width) {\n menu.style.right = clientRect.width - menuLeft + 'px';\n menu.style.left = 'initial';\n } else {\n menu.style.left = event.clientX - _this.element.getBoundingClientRect().left + 'px';\n menu.style.right = 'initial';\n }\n if (menuTop + menu.offsetHeight >= clientRect.height) {\n menu.style.bottom = clientRect.height - menuTop + 'px';\n menu.style.top = 'initial';\n } else {\n menu.style.top = event.clientY - _this.element.getBoundingClientRect().top + 'px';\n menu.style.bottom = 'initial';\n }\n mask.classList.add('dplayer-mask-show');\n mask.addEventListener('click', function () {\n mask.classList.remove('dplayer-mask-show');\n menu.classList.remove('dplayer-menu-show');\n });\n });\n if (this.option.video.quality) {\n this.element.getElementsByClassName('dplayer-quality-list')[0].addEventListener('click', function (e) {\n if (e.target.classList.contains('dplayer-quality-item')) {\n _this.switchQuality(e.target.dataset.index);\n }\n });\n }\n if (this.option.screenshot) {\n var camareIcon = this.element.getElementsByClassName('dplayer-camera-icon')[0];\n camareIcon.addEventListener('click', function () {\n var canvas = document.createElement('canvas');\n canvas.width = _this.video.videoWidth;\n canvas.height = _this.video.videoHeight;\n canvas.getContext('2d').drawImage(_this.video, 0, 0, canvas.width, canvas.height);\n camareIcon.href = canvas.toDataURL();\n camareIcon.download = 'DPlayer.png';\n });\n }\n this.initVideo();\n index++;\n }\n _createClass(DPlayer, [\n {\n key: 'seek',\n value: function seek(time) {\n time = Math.max(time, 0);\n if (this.video.duration) {\n time = Math.min(time, this.video.duration);\n }\n if (this.video.currentTime < time) {\n this.notice(this.tran('FF to') + ' ' + _utils2.default.secondToTime(time));\n } else if (this.video.currentTime > time) {\n this.notice(this.tran('REW to') + ' ' + _utils2.default.secondToTime(time));\n }\n this.video.currentTime = time;\n if (this.danmaku) {\n this.danmaku.seek();\n }\n this.updateBar('played', time / this.video.duration, 'width');\n }\n },\n {\n key: 'play',\n value: function play() {\n this.paused = false;\n if (this.video.paused) {\n this.bezel.innerHTML = (0, _svg2.default)('play');\n this.bezel.classList.add('dplayer-bezel-transition');\n }\n this.playButton.innerHTML = (0, _svg2.default)('pause');\n this.video.play();\n this.setTime();\n this.element.classList.add('dplayer-playing');\n if (this.danmaku) {\n this.danmaku.play();\n }\n this.trigger('play');\n }\n },\n {\n key: 'pause',\n value: function pause() {\n this.paused = true;\n this.element.classList.remove('dplayer-loading');\n if (!this.video.paused) {\n this.bezel.innerHTML = (0, _svg2.default)('pause');\n this.bezel.classList.add('dplayer-bezel-transition');\n }\n this.ended = false;\n this.playButton.innerHTML = (0, _svg2.default)('play');\n this.video.pause();\n this.clearTime();\n this.element.classList.remove('dplayer-playing');\n if (this.danmaku) {\n this.danmaku.pause();\n }\n this.trigger('pause');\n }\n },\n {\n key: 'volume',\n value: function volume(percentage, nonotice, nostorage) {\n percentage = parseFloat(percentage);\n if (!isNaN(percentage)) {\n percentage = percentage > 0 ? percentage : 0;\n percentage = percentage < 1 ? percentage : 1;\n this.updateBar('volume', percentage, 'width');\n if (!nostorage) {\n localStorage.setItem('dplayer-volume', percentage);\n }\n if (!nonotice) {\n this.notice(this.tran('Volume') + ' ' + (percentage * 100).toFixed(0) + '%');\n }\n this.video.volume = percentage;\n if (this.video.muted) {\n this.video.muted = false;\n }\n this.switchVolumeIcon();\n }\n return this.video.volume;\n }\n },\n {\n key: 'toggle',\n value: function toggle() {\n if (this.video.paused) {\n this.play();\n } else {\n this.pause();\n }\n }\n },\n {\n key: 'on',\n value: function on(event, callback) {\n if (typeof callback === 'function') {\n this.event[event].push(callback);\n }\n }\n },\n {\n key: 'switchVideo',\n value: function switchVideo(video, danmakuAPI) {\n this.video.poster = video.pic ? video.pic : '';\n this.video.src = video.url;\n this.pause();\n if (danmakuAPI) {\n this.element.getElementsByClassName('dplayer-danloading')[0].style.display = 'block';\n this.updateBar('played', 0, 'width');\n this.updateBar('loaded', 0, 'width');\n this.element.getElementsByClassName('dplayer-ptime')[0].innerHTML = '00:00';\n this.element.getElementsByClassName('dplayer-danmaku')[0].innerHTML = '';\n if (this.danmaku) {\n this.danmaku.reload({\n id: danmakuAPI.id,\n address: danmakuAPI.api,\n token: danmakuAPI.token,\n maximum: danmakuAPI.maximum,\n addition: danmakuAPI.addition,\n user: danmakuAPI.user\n });\n }\n }\n }\n },\n {\n key: 'initVideo',\n value: function initVideo() {\n var _this2 = this;\n var enablehls = void 0;\n if (this.option.video.type === 'auto') {\n enablehls = /m3u8(#|\\?|$)/i.exec(this.video.src);\n } else if (this.option.video.type === 'hls') {\n enablehls = true;\n } else {\n enablehls = false;\n }\n if (enablehls && Hls.isSupported()) {\n var hls = new Hls();\n hls.loadSource(this.video.src);\n hls.attachMedia(this.video);\n }\n var enableflv = void 0;\n if (this.option.video.type === 'auto') {\n enableflv = /.flv(#|\\?|$)/i.exec(this.video.src);\n } else if (this.option.video.type === 'flv') {\n enableflv = true;\n } else {\n enableflv = false;\n }\n if (enableflv && flvjs.isSupported()) {\n var flvPlayer = flvjs.createPlayer({\n type: 'flv',\n url: this.option.video.url\n });\n flvPlayer.attachMediaElement(this.video);\n flvPlayer.load();\n }\n this.video.addEventListener('durationchange', function () {\n if (_this2.video.duration !== 1) {\n _this2.element.getElementsByClassName('dplayer-dtime')[0].innerHTML = _utils2.default.secondToTime(_this2.video.duration);\n }\n });\n this.video.addEventListener('progress', function () {\n var percentage = _this2.video.buffered.length ? _this2.video.buffered.end(_this2.video.buffered.length - 1) / _this2.video.duration : 0;\n _this2.updateBar('loaded', percentage, 'width');\n });\n this.video.addEventListener('error', function () {\n _this2.tran && _this2.notice && _this2.notice(_this2.tran('This video fails to load'), -1);\n _this2.trigger && _this2.trigger('pause');\n });\n this.video.addEventListener('canplay', function () {\n _this2.trigger('canplay');\n });\n this.ended = false;\n this.video.addEventListener('ended', function () {\n _this2.updateBar('played', 1, 'width');\n if (!_this2.loop) {\n _this2.ended = true;\n _this2.pause();\n _this2.trigger('ended');\n } else {\n _this2.seek(0);\n _this2.video.play();\n }\n if (_this2.danmaku) {\n _this2.danmaku.danIndex = 0;\n }\n });\n this.video.addEventListener('play', function () {\n if (_this2.paused) {\n _this2.play();\n }\n });\n this.video.addEventListener('pause', function () {\n if (!_this2.paused) {\n _this2.pause();\n }\n });\n this.volume(localStorage.getItem('dplayer-volume') || this.option.volume, true, true);\n }\n },\n {\n key: 'switchQuality',\n value: function switchQuality(index) {\n var _this3 = this;\n if (this.qualityIndex === index || this.switchingQuality) {\n return;\n } else {\n this.qualityIndex = index;\n }\n this.switchingQuality = true;\n this.quality = this.option.video.quality[index];\n this.element.getElementsByClassName('dplayer-quality-icon')[0].innerHTML = this.quality.name;\n var paused = this.video.paused;\n this.video.pause();\n var videoHTML = _html2.default.video(false, null, this.option.screenshot, 'auto', this.quality.url);\n var videoEle = new DOMParser().parseFromString(videoHTML, 'text/html').body.firstChild;\n var parent = this.element.getElementsByClassName('dplayer-video-wrap')[0];\n parent.insertBefore(videoEle, parent.getElementsByTagName('div')[0]);\n this.prevVideo = this.video;\n this.video = videoEle;\n this.initVideo();\n this.seek(this.prevVideo.currentTime);\n this.notice(this.tran('Switching to') + ' ' + this.quality.name + ' ' + this.tran('quality'), -1);\n this.video.addEventListener('canplay', function () {\n if (_this3.prevVideo) {\n if (_this3.video.currentTime !== _this3.prevVideo.currentTime) {\n _this3.seek(_this3.prevVideo.currentTime);\n return;\n }\n parent.removeChild(_this3.prevVideo);\n _this3.video.classList.add('dplayer-video-current');\n if (!paused) {\n _this3.video.play();\n }\n _this3.prevVideo = null;\n _this3.notice(_this3.tran('Switched to') + ' ' + _this3.quality.name + ' ' + _this3.tran('quality'));\n _this3.switchingQuality = false;\n }\n });\n }\n },\n {\n key: 'mouseHandler',\n value: function mouseHandler(pbar, timeTips) {\n var _this4 = this;\n var cumulativeOffset = function cumulativeOffset(element) {\n var top = 0, left = 0;\n do {\n top += element.offsetTop || 0;\n left += element.offsetLeft || 0;\n element = element.offsetParent;\n } while (element);\n return {\n top: top,\n left: left\n };\n };\n return function (e) {\n if (!_this4.video.duration) {\n return;\n }\n var clientX = e.clientX;\n var px = cumulativeOffset(pbar).left;\n var tx = clientX - px;\n var time = _this4.video.duration * (tx / pbar.offsetWidth);\n timeTips.style.left = tx - 20 + 'px';\n _this4.previewWrapper.style.left = tx - _this4.previewWrapper.offsetWidth / 2 + 'px';\n switch (e.type) {\n case 'mouseenter':\n case 'mouseover':\n case 'mousemove':\n _this4.isMouseHoverPbar = true;\n if (_this4.previewTime !== parseInt(time)) {\n timeTips.innerText = _utils2.default.secondToTime(time);\n _this4.previewTime = parseInt(time);\n _this4.setPreview && clearTimeout(_this4.setPreview);\n _this4.setPreview = setTimeout(function () {\n _this4.setPreviewSourceAndFrame({ time: parseInt(time) });\n }, 500);\n }\n _this4.timeTipsDisplay(true, timeTips);\n break;\n case 'mouseleave':\n case 'mouseout':\n _this4.isMouseHoverPbar = false;\n _this4.previewDispaly(false);\n _this4.timeTipsDisplay(false, timeTips);\n break;\n }\n };\n }\n },\n {\n key: 'timeTipsDisplay',\n value: function timeTipsDisplay(show, timeTips) {\n if (show) {\n if (this.isTimeTipsShow) {\n return;\n }\n timeTips.classList.remove('hidden');\n this.isTimeTipsShow = true;\n } else {\n if (!this.isTimeTipsShow) {\n return;\n }\n timeTips.classList.add('hidden');\n this.isTimeTipsShow = false;\n }\n }\n },\n {\n key: 'initVideoPreview',\n value: function initVideoPreview() {\n var _this5 = this;\n this.previewVideo = document.createElement('video');\n this.previewWrapper = this.element.getElementsByClassName('dplayer-bar-preview')[0];\n this.previewCanvas = this.element.getElementsByClassName('dplayer-bar-preview-canvas')[0];\n this.previewVideo.preload = 'metadata';\n var resize = function resize() {\n var w = _this5.element.offsetWidth / 4;\n var h = _this5.element.offsetHeight / 4;\n _this5.previewWrapper.style.width = w + 'px';\n _this5.previewWrapper.style.height = h + 'px';\n _this5.previewWrapper.style.top = -h + 2 + 'px';\n _this5.previewCanvas.width = w;\n _this5.previewCanvas.height = h;\n };\n resize();\n this.video.addEventListener('loadedmetadata', function () {\n resize();\n });\n this.setPreviewSourceAndFrame({\n url: this.video.src,\n time: 0\n });\n this.bindPreviewEvent();\n }\n },\n {\n key: 'setPreviewSourceAndFrame',\n value: function setPreviewSourceAndFrame(_ref) {\n var url = _ref.url, time = _ref.time;\n if (url) {\n this.previewVideo.src = url;\n }\n if (time) {\n this.previewVideo.currentTime = time;\n }\n }\n },\n {\n key: 'bindPreviewEvent',\n value: function bindPreviewEvent() {\n var _this6 = this;\n this.previewNumber = 0;\n this.previewVideo.addEventListener('seeked', function () {\n _this6.previewNumber += 1;\n _this6.generPreviewImage(_this6.previewNumber);\n });\n }\n },\n {\n key: 'generPreviewImage',\n value: function generPreviewImage(number) {\n if (number !== this.previewNumber) {\n return;\n }\n if (!this.isMouseHoverPbar) {\n return;\n }\n this.previewDispaly(true);\n if (!this.isPreViewShow) {\n return;\n }\n var ctx = this.previewCanvas.getContext('2d');\n ctx.drawImage(this.previewVideo, 0, 0, this.previewWrapper.offsetWidth, this.previewWrapper.offsetHeight);\n }\n },\n {\n key: 'previewDispaly',\n value: function previewDispaly(show) {\n if (show) {\n if (this.isPreViewShow) {\n return;\n }\n if (!this.isMouseHoverPbar) {\n return;\n }\n this.previewWrapper.classList.remove('hidden');\n this.isPreViewShow = true;\n } else {\n if (!this.isPreViewShow) {\n return;\n }\n this.previewWrapper.classList.add('hidden');\n this.isPreViewShow = false;\n }\n }\n },\n {\n key: 'notice',\n value: function notice(text) {\n var time = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2000;\n var opacity = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0.8;\n var noticeEle = this.element.getElementsByClassName('dplayer-notice')[0];\n noticeEle.innerHTML = text;\n noticeEle.style.opacity = opacity;\n if (this.noticeTime) {\n clearTimeout(this.noticeTime);\n }\n this.noticeTime = setTimeout(function () {\n noticeEle.style.opacity = 0;\n }, time);\n }\n },\n {\n key: 'destroy',\n value: function destroy() {\n this.pause();\n clearTimeout(this.hideTime);\n this.video.src = '';\n this.element.innerHTML = '';\n for (var key in this) {\n if (this.hasOwnProperty(key) && key !== 'paused') {\n delete this[key];\n }\n }\n }\n }\n ]);\n return DPlayer;\n}();\nmodule.exports = DPlayer;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nmodule.exports = {\n secondToTime: function secondToTime(second) {\n var add0 = function add0(num) {\n return num < 10 ? '0' + num : '' + num;\n };\n var min = parseInt(second / 60);\n var sec = parseInt(second - min * 60);\n return add0(min) + ':' + add0(sec);\n },\n getElementViewLeft: function getElementViewLeft(element) {\n var actualLeft = element.offsetLeft;\n var current = element.offsetParent;\n var elementScrollLeft = document.body.scrollLeft + document.documentElement.scrollLeft;\n if (!document.fullscreenElement && !document.mozFullScreenElement && !document.webkitFullscreenElement) {\n while (current !== null) {\n actualLeft += current.offsetLeft;\n current = current.offsetParent;\n }\n } else {\n while (current !== null && current !== element) {\n actualLeft += current.offsetLeft;\n current = current.offsetParent;\n }\n }\n return actualLeft - elementScrollLeft;\n },\n isMobile: /mobile/i.test(window.navigator.userAgent)\n};\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar defaultApiBackend = __webpack_require__(6);\nmodule.exports = function (option) {\n var isMobile = /mobile/i.test(window.navigator.userAgent);\n if (isMobile) {\n option.autoplay = false;\n }\n var defaultOption = {\n element: document.getElementsByClassName('dplayer')[0],\n autoplay: false,\n theme: '#b7daff',\n loop: false,\n lang: navigator.language.indexOf('zh') !== -1 ? 'zh' : 'en',\n screenshot: false,\n hotkey: true,\n preload: 'auto',\n volume: '0.7',\n apiBackend: defaultApiBackend,\n contextmenu: [\n {\n text: '关于作者',\n link: 'http://diygod.me'\n },\n {\n text: '播放器意见反馈',\n link: 'https://github.com/DIYgod/DPlayer/issues'\n },\n {\n text: '关于 DPlayer 播放器',\n link: 'https://github.com/DIYgod/DPlayer'\n }\n ]\n };\n for (var defaultKey in defaultOption) {\n if (defaultOption.hasOwnProperty(defaultKey) && !option.hasOwnProperty(defaultKey)) {\n option[defaultKey] = defaultOption[defaultKey];\n }\n }\n if (Object.prototype.toString.call(option.video.url) !== '[object Array]') {\n option.video.url = [option.video.url];\n }\n if (option.video && !option.video.hasOwnProperty('type')) {\n option.video.type = 'auto';\n }\n if (option.danmaku && !option.danmaku.hasOwnProperty('user')) {\n option.danmaku.user = 'DIYgod';\n }\n if (option.video.quality) {\n option.video.url = [option.video.quality[option.video.defaultQuality].url];\n }\n return option;\n};\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar SendXMLHttpRequest = function SendXMLHttpRequest(url, data, success, error, fail) {\n var xhr = new XMLHttpRequest();\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 4) {\n if (xhr.status >= 200 && xhr.status < 300 || xhr.status === 304) {\n var response = JSON.parse(xhr.responseText);\n if (response.code !== 1) {\n return error(xhr, response);\n }\n return success(xhr, response);\n }\n fail(xhr);\n }\n };\n xhr.open(data !== null ? 'POST' : 'GET', url, true);\n xhr.send(data !== null ? JSON.stringify(data) : null);\n};\nmodule.exports = {\n send: function send(endpoint, danmakuData, callback) {\n SendXMLHttpRequest(endpoint, danmakuData, function (xhr, response) {\n console.log('Post danmaku: ', response);\n if (callback) {\n callback();\n }\n }, function (xhr, response) {\n alert(response.msg);\n }, function (xhr) {\n console.log('Request was unsuccessful: ' + xhr.status);\n });\n },\n read: function read(endpoint, callback) {\n SendXMLHttpRequest(endpoint, null, function (xhr, response) {\n callback(null, response.danmaku);\n }, function (xhr, response) {\n callback({\n status: xhr.status,\n response: response\n });\n }, function (xhr) {\n callback({\n status: xhr.status,\n response: null\n });\n });\n }\n};\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar tranZH = {\n 'Danmaku is loading': '弹幕加载中',\n 'Top': '顶部',\n 'Bottom': '底部',\n 'Rolling': '滚动',\n 'Input danmaku, hit Enter': '输入弹幕\\uFF0C回车发送',\n 'About author': '关于作者',\n 'DPlayer feedback': '播放器意见反馈',\n 'About DPlayer': '关于 DPlayer 播放器',\n 'Loop': '洗脑循环',\n 'Speed': '速度',\n 'Opacity for danmaku': '弹幕透明度',\n 'Normal': '正常',\n 'Please input danmaku content!': '要输入弹幕内容啊喂\\uFF01',\n 'Set danmaku color': '设置弹幕颜色',\n 'Set danmaku type': '设置弹幕类型',\n 'Danmaku': '弹幕',\n 'This video fails to load': '视频加载失败',\n 'Switching to': '正在切换至',\n 'Switched to': '已经切换至',\n 'quality': '画质',\n 'FF to': '快进至',\n 'REW to': '快退至',\n 'Volume': '音量'\n};\nmodule.exports = function (lang) {\n var _this = this;\n this.lang = lang;\n this.tran = function (text) {\n if (_this.lang === 'en') {\n return text;\n } else if (_this.lang === 'zh') {\n return tranZH[text];\n }\n };\n};\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar svg = __webpack_require__(0);\nvar html = {\n main: function main(option, index, tran) {\n var videos = '';\n for (var i = 0; i < option.video.url.length; i++) {\n videos += html.video(i === 0, option.video.pic, option.screenshot, option.video.url.length ? 'metadata' : option.preload, option.video.url[i]);\n }\n return '
' + videos + '' + (option.logo ? '
' : '') + '
' + (option.danmaku ? '' + tran('Danmaku is loading') + ' ' : '') + '
' + svg('play') + ' ' + svg('volume-down') + ' 0:00 / 0:00 ' + (option.video.quality ? '
' + option.video.quality[option.video.defaultQuality].name + ' ' + html.qualityList(option.video.quality) + '
' : '') + '' + (option.screenshot ? '
' + svg('camera') + ' ' : '') + '
' + svg('full-in') + ' ' + svg('full') + '
' + html.contextmenuList(option.contextmenu) + '
';\n },\n contextmenuList: function contextmenuList(contextmenu) {\n var result = '';\n return result;\n },\n qualityList: function qualityList(quality) {\n var result = '';\n for (var i = 0; i < quality.length; i++) {\n result += '
' + quality[i].name + '
';\n }\n result += '
';\n return result;\n },\n video: function video(current, pic, screenshot, preload, url) {\n return ' ';\n },\n setting: function setting(tran) {\n return {\n 'original': '' + tran('Speed') + ' ' + svg('right') + '
' + tran('Opacity for danmaku') + ' ',\n 'speed': '0.5
0.75
' + tran('Normal') + '
1.25
1.5
2
'\n };\n }\n};\nmodule.exports = html;\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar _typeof = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === 'function' && obj.constructor === Symbol && obj !== Symbol.prototype ? 'symbol' : typeof obj;\n};\nvar _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if ('value' in descriptor)\n descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function (Constructor, protoProps, staticProps) {\n if (protoProps)\n defineProperties(Constructor.prototype, protoProps);\n if (staticProps)\n defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError('Cannot call a class as a function');\n }\n}\nvar Danmaku = function () {\n function Danmaku(options) {\n _classCallCheck(this, Danmaku);\n this.options = options;\n this.container = this.options.container;\n this.danTunnel = {\n right: {},\n top: {},\n bottom: {}\n };\n this.danIndex = 0;\n this.dan = [];\n this.showing = true;\n this._opacity = this.options.opacity;\n this.load();\n }\n _createClass(Danmaku, [\n {\n key: 'load',\n value: function load() {\n var _this = this;\n var apiurl = void 0;\n if (this.options.api.maximum) {\n apiurl = this.options.api.address + '?id=' + this.options.api.id + '&max=' + this.options.api.maximum;\n } else {\n apiurl = this.options.api.address + '?id=' + this.options.api.id;\n }\n var endpoints = (this.options.api.addition || []).slice(0);\n endpoints.push(apiurl);\n this._readAllEndpoints(endpoints, function (results) {\n _this.dan = [].concat.apply([], results).sort(function (a, b) {\n return a.time - b.time;\n });\n window.requestAnimationFrame(function () {\n _this.frame();\n });\n _this.options.callback();\n });\n }\n },\n {\n key: 'reload',\n value: function reload(newAPI) {\n this.options.api = newAPI;\n this.dan = [];\n this.clear();\n this.load();\n }\n },\n {\n key: '_readAllEndpoints',\n value: function _readAllEndpoints(endpoints, callback) {\n var _this2 = this;\n var results = [];\n var readCount = 0;\n var cbk = function cbk(i) {\n return function (err, data) {\n ++readCount;\n if (err) {\n if (err.response) {\n _this2.options.error(err.response.msg);\n } else {\n _this2.options.error('Request was unsuccessful: ' + err.status);\n }\n results[i] = [];\n } else {\n results[i] = data;\n }\n if (readCount === endpoints.length) {\n return callback(results);\n }\n };\n };\n for (var i = 0; i < endpoints.length; ++i) {\n this.options.apiBackend.read(endpoints[i], cbk(i));\n }\n }\n },\n {\n key: 'send',\n value: function send(dan, callback) {\n var danmakuData = {\n token: this.options.api.token,\n player: this.options.api.id,\n author: this.options.api.user,\n time: this.options.time(),\n text: dan.text,\n color: dan.color,\n type: dan.type\n };\n this.options.apiBackend.send(this.options.api.address, danmakuData, callback);\n this.dan.splice(this.danIndex, 0, danmakuData);\n this.danIndex++;\n var danmaku = {\n text: this.htmlEncode(danmakuData.text),\n color: danmakuData.color,\n type: danmakuData.type,\n border: '2px solid ' + this.options.borderColor\n };\n this.draw(danmaku);\n }\n },\n {\n key: 'frame',\n value: function frame() {\n var _this3 = this;\n if (this.dan.length && !this.paused && this.showing) {\n var item = this.dan[this.danIndex];\n var dan = [];\n while (item && this.options.time() > parseFloat(item.time)) {\n dan.push(item);\n item = this.dan[++this.danIndex];\n }\n this.draw(dan);\n }\n window.requestAnimationFrame(function () {\n _this3.frame();\n });\n }\n },\n {\n key: 'opacity',\n value: function opacity(percentage) {\n if (percentage !== undefined) {\n var items = this.container.getElementsByClassName('dplayer-danmaku-item');\n for (var i = 0; i < items.length; i++) {\n items[i].style.opacity = percentage;\n }\n this._opacity = percentage;\n localStorage.setItem('danmaku-opacity', this._opacity);\n }\n return this._opacity;\n }\n },\n {\n key: 'draw',\n value: function draw(dan) {\n var _this4 = this;\n var itemHeight = this.options.height;\n var danWidth = this.container.offsetWidth;\n var danHeight = this.container.offsetHeight;\n var itemY = parseInt(danHeight / itemHeight);\n var danItemRight = function danItemRight(ele) {\n var eleWidth = ele.offsetWidth || parseInt(ele.style.width);\n var eleRight = ele.getBoundingClientRect().right || _this4.container.getBoundingClientRect().right + eleWidth;\n return _this4.container.getBoundingClientRect().right - eleRight;\n };\n var danSpeed = function danSpeed(width) {\n return (danWidth + width) / 5;\n };\n var getTunnel = function getTunnel(ele, type, width) {\n var tmp = danWidth / danSpeed(width);\n var _loop = function _loop(i) {\n var item = _this4.danTunnel[type][i + ''];\n if (item && item.length) {\n if (type !== 'right') {\n return 'continue';\n }\n for (var j = 0; j < item.length; j++) {\n var danRight = danItemRight(item[j]) - 10;\n if (danRight <= danWidth - tmp * danSpeed(parseInt(item[j].style.width)) || danRight <= 0) {\n break;\n }\n if (j === item.length - 1) {\n _this4.danTunnel[type][i + ''].push(ele);\n ele.addEventListener('animationend', function () {\n _this4.danTunnel[type][i + ''].splice(0, 1);\n });\n return { v: i % itemY };\n }\n }\n } else {\n _this4.danTunnel[type][i + ''] = [ele];\n ele.addEventListener('animationend', function () {\n _this4.danTunnel[type][i + ''].splice(0, 1);\n });\n return { v: i % itemY };\n }\n };\n for (var i = 0;; i++) {\n var _ret = _loop(i);\n switch (_ret) {\n case 'continue':\n continue;\n default:\n if ((typeof _ret === 'undefined' ? 'undefined' : _typeof(_ret)) === 'object')\n return _ret.v;\n }\n }\n };\n if (Object.prototype.toString.call(dan) !== '[object Array]') {\n dan = [dan];\n }\n var docFragment = document.createDocumentFragment();\n var _loop2 = function _loop2(i) {\n if (!dan[i].type) {\n dan[i].type = 'right';\n }\n if (!dan[i].color) {\n dan[i].color = '#fff';\n }\n var item = document.createElement('div');\n item.classList.add('dplayer-danmaku-item');\n item.classList.add('dplayer-danmaku-' + dan[i].type);\n if (dan[i].border) {\n item.innerHTML = '' + dan[i].text + ' ';\n } else {\n item.innerHTML = dan[i].text;\n }\n item.style.opacity = _this4._opacity;\n item.style.color = dan[i].color;\n item.addEventListener('animationend', function () {\n _this4.container.removeChild(item);\n });\n var itemWidth = _this4._measure(dan[i].text);\n switch (dan[i].type) {\n case 'right':\n item.style.width = itemWidth + 1 + 'px';\n item.style.top = itemHeight * getTunnel(item, dan[i].type, itemWidth) + 'px';\n item.style.transform = 'translateX(-' + danWidth + 'px)';\n break;\n case 'top':\n item.style.top = itemHeight * getTunnel(item, dan[i].type) + 'px';\n break;\n case 'bottom':\n item.style.bottom = itemHeight * getTunnel(item, dan[i].type) + 'px';\n break;\n default:\n console.error('Can\\'t handled danmaku type: ' + dan[i].type);\n }\n item.classList.add('dplayer-danmaku-move');\n docFragment.appendChild(item);\n };\n for (var i = 0; i < dan.length; i++) {\n _loop2(i);\n }\n this.container.appendChild(docFragment);\n return docFragment;\n }\n },\n {\n key: 'play',\n value: function play() {\n this.paused = false;\n }\n },\n {\n key: 'pause',\n value: function pause() {\n this.paused = true;\n }\n },\n {\n key: '_measure',\n value: function _measure(text) {\n if (!this.context) {\n var measureStyle = getComputedStyle(this.container.getElementsByClassName('dplayer-danmaku-item')[0], null);\n this.context = document.createElement('canvas').getContext('2d');\n this.context.font = measureStyle.getPropertyValue('font');\n }\n return this.context.measureText(text).width;\n }\n },\n {\n key: 'seek',\n value: function seek() {\n for (var i = 0; i < this.dan.length; i++) {\n if (this.dan[i].time >= this.options.time()) {\n this.danIndex = i;\n break;\n }\n this.danIndex = this.dan.length;\n }\n }\n },\n {\n key: 'clear',\n value: function clear() {\n this.danTunnel = {\n right: {},\n top: {},\n bottom: {}\n };\n this.danIndex = 0;\n this.options.container.innerHTML = '';\n }\n },\n {\n key: 'htmlEncode',\n value: function htmlEncode(str) {\n return str.replace(/&/g, '&').replace(//g, '>').replace(/\"/g, '"').replace(/'/g, ''').replace(/\\//g, '/');\n }\n },\n {\n key: 'resize',\n value: function resize() {\n var danWidth = this.container.offsetWidth;\n var items = this.container.getElementsByClassName('dplayer-danmaku-item');\n for (var i = 0; i < items.length; i++) {\n items[i].style.transform = 'translateX(-' + danWidth + 'px)';\n }\n }\n },\n {\n key: 'hide',\n value: function hide() {\n this.showing = false;\n this.pause();\n this.clear();\n }\n },\n {\n key: 'show',\n value: function show() {\n this.seek();\n this.showing = true;\n this.play();\n }\n }\n ]);\n return Danmaku;\n}();\nmodule.exports = Danmaku;\n\n/***/ })\n/******/ ]);\n});\n\n\n// WEBPACK FOOTER //\n// DPlayer.min.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 818e5f31434b4a419028","'use strict';\nvar svgSource = {\n 'play': [\n '0 0 16 32',\n 'M15.552 15.168q0.448 0.32 0.448 0.832 0 0.448-0.448 0.768l-13.696 8.512q-0.768 0.512-1.312 0.192t-0.544-1.28v-16.448q0-0.96 0.544-1.28t1.312 0.192z'\n ],\n 'pause': [\n '0 0 17 32',\n 'M14.080 4.8q2.88 0 2.88 2.048v18.24q0 2.112-2.88 2.112t-2.88-2.112v-18.24q0-2.048 2.88-2.048zM2.88 4.8q2.88 0 2.88 2.048v18.24q0 2.112-2.88 2.112t-2.88-2.112v-18.24q0-2.048 2.88-2.048z'\n ],\n 'volume-up': [\n '0 0 21 32',\n 'M13.728 6.272v19.456q0 0.448-0.352 0.8t-0.8 0.32-0.8-0.32l-5.952-5.952h-4.672q-0.48 0-0.8-0.352t-0.352-0.8v-6.848q0-0.48 0.352-0.8t0.8-0.352h4.672l5.952-5.952q0.32-0.32 0.8-0.32t0.8 0.32 0.352 0.8zM20.576 16q0 1.344-0.768 2.528t-2.016 1.664q-0.16 0.096-0.448 0.096-0.448 0-0.8-0.32t-0.32-0.832q0-0.384 0.192-0.64t0.544-0.448 0.608-0.384 0.512-0.64 0.192-1.024-0.192-1.024-0.512-0.64-0.608-0.384-0.544-0.448-0.192-0.64q0-0.48 0.32-0.832t0.8-0.32q0.288 0 0.448 0.096 1.248 0.48 2.016 1.664t0.768 2.528zM25.152 16q0 2.72-1.536 5.056t-4 3.36q-0.256 0.096-0.448 0.096-0.48 0-0.832-0.352t-0.32-0.8q0-0.704 0.672-1.056 1.024-0.512 1.376-0.8 1.312-0.96 2.048-2.4t0.736-3.104-0.736-3.104-2.048-2.4q-0.352-0.288-1.376-0.8-0.672-0.352-0.672-1.056 0-0.448 0.32-0.8t0.8-0.352q0.224 0 0.48 0.096 2.496 1.056 4 3.36t1.536 5.056zM29.728 16q0 4.096-2.272 7.552t-6.048 5.056q-0.224 0.096-0.448 0.096-0.48 0-0.832-0.352t-0.32-0.8q0-0.64 0.704-1.056 0.128-0.064 0.384-0.192t0.416-0.192q0.8-0.448 1.44-0.896 2.208-1.632 3.456-4.064t1.216-5.152-1.216-5.152-3.456-4.064q-0.64-0.448-1.44-0.896-0.128-0.096-0.416-0.192t-0.384-0.192q-0.704-0.416-0.704-1.056 0-0.448 0.32-0.8t0.832-0.352q0.224 0 0.448 0.096 3.776 1.632 6.048 5.056t2.272 7.552z'\n ],\n 'volume-down': [\n '0 0 21 32',\n 'M13.728 6.272v19.456q0 0.448-0.352 0.8t-0.8 0.32-0.8-0.32l-5.952-5.952h-4.672q-0.48 0-0.8-0.352t-0.352-0.8v-6.848q0-0.48 0.352-0.8t0.8-0.352h4.672l5.952-5.952q0.32-0.32 0.8-0.32t0.8 0.32 0.352 0.8zM20.576 16q0 1.344-0.768 2.528t-2.016 1.664q-0.16 0.096-0.448 0.096-0.448 0-0.8-0.32t-0.32-0.832q0-0.384 0.192-0.64t0.544-0.448 0.608-0.384 0.512-0.64 0.192-1.024-0.192-1.024-0.512-0.64-0.608-0.384-0.544-0.448-0.192-0.64q0-0.48 0.32-0.832t0.8-0.32q0.288 0 0.448 0.096 1.248 0.48 2.016 1.664t0.768 2.528z'\n ],\n 'volume-off': [\n '0 0 21 32',\n 'M13.728 6.272v19.456q0 0.448-0.352 0.8t-0.8 0.32-0.8-0.32l-5.952-5.952h-4.672q-0.48 0-0.8-0.352t-0.352-0.8v-6.848q0-0.48 0.352-0.8t0.8-0.352h4.672l5.952-5.952q0.32-0.32 0.8-0.32t0.8 0.32 0.352 0.8z'\n ],\n 'loop': [\n '0 0 32 32',\n 'M1.882 16.941c0 4.152 3.221 7.529 7.177 7.529v1.882c-4.996 0-9.060-4.222-9.060-9.412s4.064-9.412 9.060-9.412h7.96l-3.098-3.098 1.331-1.331 5.372 5.37-5.37 5.372-1.333-1.333 3.1-3.098h-7.962c-3.957 0-7.177 3.377-7.177 7.529zM22.94 7.529v1.882c3.957 0 7.177 3.377 7.177 7.529s-3.221 7.529-7.177 7.529h-7.962l3.098-3.098-1.331-1.331-5.37 5.37 5.372 5.372 1.331-1.331-3.1-3.1h7.96c4.998 0 9.062-4.222 9.062-9.412s-4.064-9.412-9.060-9.412z'\n ],\n 'full': [\n '0 0 32 33',\n 'M6.667 28h-5.333c-0.8 0-1.333-0.533-1.333-1.333v-5.333c0-0.8 0.533-1.333 1.333-1.333s1.333 0.533 1.333 1.333v4h4c0.8 0 1.333 0.533 1.333 1.333s-0.533 1.333-1.333 1.333zM30.667 28h-5.333c-0.8 0-1.333-0.533-1.333-1.333s0.533-1.333 1.333-1.333h4v-4c0-0.8 0.533-1.333 1.333-1.333s1.333 0.533 1.333 1.333v5.333c0 0.8-0.533 1.333-1.333 1.333zM30.667 12c-0.8 0-1.333-0.533-1.333-1.333v-4h-4c-0.8 0-1.333-0.533-1.333-1.333s0.533-1.333 1.333-1.333h5.333c0.8 0 1.333 0.533 1.333 1.333v5.333c0 0.8-0.533 1.333-1.333 1.333zM1.333 12c-0.8 0-1.333-0.533-1.333-1.333v-5.333c0-0.8 0.533-1.333 1.333-1.333h5.333c0.8 0 1.333 0.533 1.333 1.333s-0.533 1.333-1.333 1.333h-4v4c0 0.8-0.533 1.333-1.333 1.333z'\n ],\n 'full-in': [\n '0 0 32 33',\n 'M24.965 24.38h-18.132c-1.366 0-2.478-1.113-2.478-2.478v-11.806c0-1.364 1.111-2.478 2.478-2.478h18.132c1.366 0 2.478 1.113 2.478 2.478v11.806c0 1.364-1.11 2.478-2.478 2.478zM6.833 10.097v11.806h18.134l-0.002-11.806h-18.132zM2.478 28.928h5.952c0.684 0 1.238-0.554 1.238-1.239 0-0.684-0.554-1.238-1.238-1.238h-5.952v-5.802c0-0.684-0.554-1.239-1.238-1.239s-1.239 0.556-1.239 1.239v5.802c0 1.365 1.111 2.478 2.478 2.478zM30.761 19.412c-0.684 0-1.238 0.554-1.238 1.238v5.801h-5.951c-0.686 0-1.239 0.554-1.239 1.238 0 0.686 0.554 1.239 1.239 1.239h5.951c1.366 0 2.478-1.111 2.478-2.478v-5.801c0-0.683-0.554-1.238-1.239-1.238zM0 5.55v5.802c0 0.683 0.554 1.238 1.238 1.238s1.238-0.555 1.238-1.238v-5.802h5.952c0.684 0 1.238-0.554 1.238-1.238s-0.554-1.238-1.238-1.238h-5.951c-1.366-0.001-2.478 1.111-2.478 2.476zM32 11.35v-5.801c0-1.365-1.11-2.478-2.478-2.478h-5.951c-0.686 0-1.239 0.554-1.239 1.238s0.554 1.238 1.239 1.238h5.951v5.801c0 0.683 0.554 1.237 1.238 1.237 0.686 0.002 1.239-0.553 1.239-1.236z'\n ],\n 'setting': [\n '0 0 32 28',\n 'M28.633 17.104c0.035 0.21 0.026 0.463-0.026 0.76s-0.14 0.598-0.262 0.904c-0.122 0.306-0.271 0.581-0.445 0.825s-0.367 0.419-0.576 0.524c-0.209 0.105-0.393 0.157-0.55 0.157s-0.332-0.035-0.524-0.105c-0.175-0.052-0.393-0.1-0.655-0.144s-0.528-0.052-0.799-0.026c-0.271 0.026-0.541 0.083-0.812 0.17s-0.502 0.236-0.694 0.445c-0.419 0.437-0.664 0.934-0.734 1.493s0.009 1.092 0.236 1.598c0.175 0.349 0.148 0.699-0.079 1.048-0.105 0.14-0.271 0.284-0.498 0.432s-0.476 0.284-0.747 0.406-0.555 0.218-0.851 0.288c-0.297 0.070-0.559 0.105-0.786 0.105-0.157 0-0.306-0.061-0.445-0.183s-0.236-0.253-0.288-0.393h-0.026c-0.192-0.541-0.52-1.009-0.982-1.402s-1-0.589-1.611-0.589c-0.594 0-1.131 0.197-1.611 0.589s-0.816 0.851-1.009 1.375c-0.087 0.21-0.218 0.362-0.393 0.458s-0.367 0.144-0.576 0.144c-0.244 0-0.52-0.044-0.825-0.131s-0.611-0.197-0.917-0.327c-0.306-0.131-0.581-0.284-0.825-0.458s-0.428-0.349-0.55-0.524c-0.087-0.122-0.135-0.266-0.144-0.432s0.057-0.397 0.197-0.694c0.192-0.402 0.266-0.86 0.223-1.375s-0.266-0.991-0.668-1.428c-0.244-0.262-0.541-0.432-0.891-0.511s-0.681-0.109-0.995-0.092c-0.367 0.017-0.742 0.087-1.127 0.21-0.244 0.070-0.489 0.052-0.734-0.052-0.192-0.070-0.371-0.231-0.537-0.485s-0.314-0.533-0.445-0.838c-0.131-0.306-0.231-0.62-0.301-0.943s-0.087-0.59-0.052-0.799c0.052-0.384 0.227-0.629 0.524-0.734 0.524-0.21 0.995-0.555 1.415-1.035s0.629-1.017 0.629-1.611c0-0.611-0.21-1.144-0.629-1.598s-0.891-0.786-1.415-0.996c-0.157-0.052-0.288-0.179-0.393-0.38s-0.157-0.406-0.157-0.616c0-0.227 0.035-0.48 0.105-0.76s0.162-0.55 0.275-0.812 0.244-0.502 0.393-0.72c0.148-0.218 0.31-0.38 0.485-0.485 0.14-0.087 0.275-0.122 0.406-0.105s0.275 0.052 0.432 0.105c0.524 0.21 1.070 0.275 1.637 0.197s1.070-0.327 1.506-0.747c0.21-0.209 0.362-0.467 0.458-0.773s0.157-0.607 0.183-0.904c0.026-0.297 0.026-0.568 0-0.812s-0.048-0.419-0.065-0.524c-0.035-0.105-0.066-0.227-0.092-0.367s-0.013-0.262 0.039-0.367c0.105-0.244 0.293-0.458 0.563-0.642s0.563-0.336 0.878-0.458c0.314-0.122 0.62-0.214 0.917-0.275s0.533-0.092 0.707-0.092c0.227 0 0.406 0.074 0.537 0.223s0.223 0.301 0.275 0.458c0.192 0.471 0.507 0.886 0.943 1.244s0.952 0.537 1.546 0.537c0.611 0 1.153-0.17 1.624-0.511s0.803-0.773 0.996-1.297c0.070-0.14 0.179-0.284 0.327-0.432s0.301-0.223 0.458-0.223c0.244 0 0.511 0.035 0.799 0.105s0.572 0.166 0.851 0.288c0.279 0.122 0.537 0.279 0.773 0.472s0.423 0.402 0.563 0.629c0.087 0.14 0.113 0.293 0.079 0.458s-0.070 0.284-0.105 0.354c-0.227 0.506-0.297 1.039-0.21 1.598s0.341 1.048 0.76 1.467c0.419 0.419 0.934 0.651 1.546 0.694s1.179-0.057 1.703-0.301c0.14-0.087 0.31-0.122 0.511-0.105s0.371 0.096 0.511 0.236c0.262 0.244 0.493 0.616 0.694 1.113s0.336 1 0.406 1.506c0.035 0.297-0.013 0.528-0.144 0.694s-0.266 0.275-0.406 0.327c-0.542 0.192-1.004 0.528-1.388 1.009s-0.576 1.026-0.576 1.637c0 0.594 0.162 1.113 0.485 1.559s0.747 0.764 1.27 0.956c0.122 0.070 0.227 0.14 0.314 0.21 0.192 0.157 0.323 0.358 0.393 0.602v0zM16.451 19.462c0.786 0 1.528-0.149 2.227-0.445s1.305-0.707 1.821-1.231c0.515-0.524 0.921-1.131 1.218-1.821s0.445-1.428 0.445-2.214c0-0.786-0.148-1.524-0.445-2.214s-0.703-1.292-1.218-1.808c-0.515-0.515-1.122-0.921-1.821-1.218s-1.441-0.445-2.227-0.445c-0.786 0-1.524 0.148-2.214 0.445s-1.292 0.703-1.808 1.218c-0.515 0.515-0.921 1.118-1.218 1.808s-0.445 1.428-0.445 2.214c0 0.786 0.149 1.524 0.445 2.214s0.703 1.297 1.218 1.821c0.515 0.524 1.118 0.934 1.808 1.231s1.428 0.445 2.214 0.445v0z'\n ],\n 'right': [\n '0 0 32 32',\n 'M22 16l-10.105-10.6-1.895 1.987 8.211 8.613-8.211 8.612 1.895 1.988 8.211-8.613z'\n ],\n 'comment': [\n '0 0 32 32',\n 'M27.128 0.38h-22.553c-2.336 0-4.229 1.825-4.229 4.076v16.273c0 2.251 1.893 4.076 4.229 4.076h4.229v-2.685h8.403l-8.784 8.072 1.566 1.44 7.429-6.827h9.71c2.335 0 4.229-1.825 4.229-4.076v-16.273c0-2.252-1.894-4.076-4.229-4.076zM28.538 19.403c0 1.5-1.262 2.717-2.819 2.717h-8.36l-0.076-0.070-0.076 0.070h-11.223c-1.557 0-2.819-1.217-2.819-2.717v-13.589c0-1.501 1.262-2.718 2.819-2.718h19.734c1.557 0 2.819-0.141 2.819 1.359v14.947zM9.206 10.557c-1.222 0-2.215 0.911-2.215 2.036s0.992 2.035 2.215 2.035c1.224 0 2.216-0.911 2.216-2.035s-0.992-2.036-2.216-2.036zM22.496 10.557c-1.224 0-2.215 0.911-2.215 2.036s0.991 2.035 2.215 2.035c1.224 0 2.215-0.911 2.215-2.035s-0.991-2.036-2.215-2.036zM15.852 10.557c-1.224 0-2.215 0.911-2.215 2.036s0.991 2.035 2.215 2.035c1.222 0 2.215-0.911 2.215-2.035s-0.992-2.036-2.215-2.036z'\n ],\n 'comment-off': [\n '0 0 32 32',\n 'M27.090 0.131h-22.731c-2.354 0-4.262 1.839-4.262 4.109v16.401c0 2.269 1.908 4.109 4.262 4.109h4.262v-2.706h8.469l-8.853 8.135 1.579 1.451 7.487-6.88h9.787c2.353 0 4.262-1.84 4.262-4.109v-16.401c0-2.27-1.909-4.109-4.262-4.109v0zM28.511 19.304c0 1.512-1.272 2.738-2.841 2.738h-8.425l-0.076-0.070-0.076 0.070h-11.311c-1.569 0-2.841-1.226-2.841-2.738v-13.696c0-1.513 1.272-2.739 2.841-2.739h19.889c1.569 0 2.841-0.142 2.841 1.37v15.064z'\n ],\n 'send': [\n '0 0 32 32',\n 'M13.725 30l3.9-5.325-3.9-1.125v6.45zM0 17.5l11.050 3.35 13.6-11.55-10.55 12.425 11.8 3.65 6.1-23.375-32 15.5z'\n ],\n 'menu': [\n '0 0 22 32',\n 'M20.8 14.4q0.704 0 1.152 0.48t0.448 1.12-0.48 1.12-1.12 0.48h-19.2q-0.64 0-1.12-0.48t-0.48-1.12 0.448-1.12 1.152-0.48h19.2zM1.6 11.2q-0.64 0-1.12-0.48t-0.48-1.12 0.448-1.12 1.152-0.48h19.2q0.704 0 1.152 0.48t0.448 1.12-0.48 1.12-1.12 0.48h-19.2zM20.8 20.8q0.704 0 1.152 0.48t0.448 1.12-0.48 1.12-1.12 0.48h-19.2q-0.64 0-1.12-0.48t-0.48-1.12 0.448-1.12 1.152-0.48h19.2z'\n ],\n 'camera': [\n '0 0 32 32',\n 'M16 23c-3.309 0-6-2.691-6-6s2.691-6 6-6 6 2.691 6 6-2.691 6-6 6zM16 13c-2.206 0-4 1.794-4 4s1.794 4 4 4c2.206 0 4-1.794 4-4s-1.794-4-4-4zM27 28h-22c-1.654 0-3-1.346-3-3v-16c0-1.654 1.346-3 3-3h3c0.552 0 1 0.448 1 1s-0.448 1-1 1h-3c-0.551 0-1 0.449-1 1v16c0 0.552 0.449 1 1 1h22c0.552 0 1-0.448 1-1v-16c0-0.551-0.448-1-1-1h-11c-0.552 0-1-0.448-1-1s0.448-1 1-1h11c1.654 0 3 1.346 3 3v16c0 1.654-1.346 3-3 3zM24 10.5c0 0.828 0.672 1.5 1.5 1.5s1.5-0.672 1.5-1.5c0-0.828-0.672-1.5-1.5-1.5s-1.5 0.672-1.5 1.5zM15 4c0 0.552-0.448 1-1 1h-4c-0.552 0-1-0.448-1-1v0c0-0.552 0.448-1 1-1h4c0.552 0 1 0.448 1 1v0z'\n ]\n};\nmodule.exports = function (type) {\n return ' \\n';\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/svg.js\n// module id = 0\n// module chunks = 0","'use strict';\nconsole.log('\\n' + ' %c DPlayer ' + DPLAYER_VERSION + ' %c http://dplayer.js.org ' + '\\n' + '\\n', 'color: #fadfa3; background: #030307; padding:5px 0;', 'background: #fadfa3; padding:5px 0;');\nmodule.exports = require('./DPlayer');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/index.js\n// module id = 1\n// module chunks = 0","'use strict';\nvar _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if ('value' in descriptor)\n descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function (Constructor, protoProps, staticProps) {\n if (protoProps)\n defineProperties(Constructor.prototype, protoProps);\n if (staticProps)\n defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\nrequire('./DPlayer.scss');\nvar _utils = require('./utils');\nvar _utils2 = _interopRequireDefault(_utils);\nvar _svg = require('./svg');\nvar _svg2 = _interopRequireDefault(_svg);\nvar _option = require('./option');\nvar _option2 = _interopRequireDefault(_option);\nvar _i18n = require('./i18n');\nvar _i18n2 = _interopRequireDefault(_i18n);\nvar _html = require('./html');\nvar _html2 = _interopRequireDefault(_html);\nvar _danmaku = require('./danmaku');\nvar _danmaku2 = _interopRequireDefault(_danmaku);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError('Cannot call a class as a function');\n }\n}\nvar index = 0;\nvar DPlayer = function () {\n function DPlayer(option) {\n var _this = this;\n _classCallCheck(this, DPlayer);\n this.option = (0, _option2.default)(option);\n this.option.element.classList.add('dplayer');\n if (this.option.video.quality) {\n this.qualityIndex = this.option.video.defaultQuality;\n this.quality = this.option.video.quality[this.option.video.defaultQuality];\n }\n this.tran = new _i18n2.default(this.option.lang).tran;\n var eventTypes = [\n 'play',\n 'pause',\n 'canplay',\n 'playing',\n 'ended',\n 'error'\n ];\n this.event = {};\n for (var i = 0; i < eventTypes.length; i++) {\n this.event[eventTypes[i]] = [];\n }\n this.trigger = function (type) {\n for (var _i = 0; _i < _this.event[type].length; _i++) {\n _this.event[type][_i]();\n }\n };\n this.element = this.option.element;\n if (!this.option.danmaku) {\n this.element.classList.add('dplayer-no-danmaku');\n }\n if (_utils.isMobile) {\n this.element.classList.add('dplayer-mobile');\n }\n this.element.innerHTML = _html2.default.main(option, index, this.tran);\n var bar = {};\n bar.volumeBar = this.element.getElementsByClassName('dplayer-volume-bar-inner')[0];\n bar.playedBar = this.element.getElementsByClassName('dplayer-played')[0];\n bar.loadedBar = this.element.getElementsByClassName('dplayer-loaded')[0];\n var pbar = this.element.getElementsByClassName('dplayer-bar-wrap')[0];\n var pbarTimeTips = this.element.getElementsByClassName('dplayer-bar-time')[0];\n var barWidth = void 0;\n this.updateBar = function (type, percentage, direction) {\n percentage = percentage > 0 ? percentage : 0;\n percentage = percentage < 1 ? percentage : 1;\n bar[type + 'Bar'].style[direction] = percentage * 100 + '%';\n };\n document.addEventListener('click', function () {\n _this.focus = false;\n }, true);\n this.element.addEventListener('click', function () {\n _this.focus = true;\n }, true);\n if (this.option.danmaku) {\n this.danmaku = new _danmaku2.default({\n container: this.element.getElementsByClassName('dplayer-danmaku')[0],\n opacity: localStorage.getItem('danmaku-opacity') || 0.7,\n callback: function callback() {\n _this.element.getElementsByClassName('dplayer-danloading')[0].style.display = 'none';\n if (_this.option.autoplay && !_utils.isMobile) {\n _this.play();\n } else if (_utils.isMobile) {\n _this.pause();\n }\n },\n error: function error(msg) {\n _this.notice(msg);\n },\n apiBackend: this.option.apiBackend,\n borderColor: this.option.theme,\n height: this.arrow ? 24 : 30,\n time: function time() {\n return _this.video.currentTime;\n },\n api: {\n id: this.option.danmaku.id,\n address: this.option.danmaku.api,\n token: this.option.danmaku.token,\n maximum: this.option.danmaku.maximum,\n addition: this.option.danmaku.addition,\n user: this.option.danmaku.user\n }\n });\n }\n this.arrow = this.element.offsetWidth <= 500;\n if (this.arrow) {\n var arrowStyle = document.createElement('style');\n arrowStyle.innerHTML = '.dplayer .dplayer-danmaku{font-size:18px}';\n document.head.appendChild(arrowStyle);\n }\n this.video = this.element.getElementsByClassName('dplayer-video-current')[0];\n this.bezel = this.element.getElementsByClassName('dplayer-bezel-icon')[0];\n this.bezel.addEventListener('animationend', function () {\n _this.bezel.classList.remove('dplayer-bezel-transition');\n });\n this.playButton = this.element.getElementsByClassName('dplayer-play-icon')[0];\n this.paused = true;\n this.playButton.addEventListener('click', function () {\n _this.toggle();\n });\n var videoWrap = this.element.getElementsByClassName('dplayer-video-wrap')[0];\n var conMask = this.element.getElementsByClassName('dplayer-controller-mask')[0];\n if (!_utils.isMobile) {\n videoWrap.addEventListener('click', function () {\n _this.toggle();\n });\n conMask.addEventListener('click', function () {\n _this.toggle();\n });\n } else {\n var toggleController = function toggleController() {\n if (_this.element.classList.contains('dplayer-hide-controller')) {\n _this.element.classList.remove('dplayer-hide-controller');\n } else {\n _this.element.classList.add('dplayer-hide-controller');\n }\n };\n videoWrap.addEventListener('click', toggleController);\n conMask.addEventListener('click', toggleController);\n }\n var lastPlayPos = 0;\n var currentPlayPos = 0;\n var bufferingDetected = false;\n window.requestAnimationFrame = function () {\n return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function (callback) {\n window.setTimeout(callback, 1000 / 60);\n };\n }();\n var setCheckLoadingTime = function setCheckLoadingTime() {\n _this.checkLoading = setInterval(function () {\n currentPlayPos = _this.video.currentTime;\n if (!bufferingDetected && currentPlayPos < lastPlayPos + 0.01 && !_this.video.paused) {\n _this.element.classList.add('dplayer-loading');\n bufferingDetected = true;\n }\n if (bufferingDetected && currentPlayPos > lastPlayPos + 0.01 && !_this.video.paused) {\n _this.element.classList.remove('dplayer-loading');\n bufferingDetected = false;\n }\n lastPlayPos = currentPlayPos;\n }, 100);\n };\n var clearCheckLoadingTime = function clearCheckLoadingTime() {\n clearInterval(_this.checkLoading);\n };\n this.playedTime = false;\n this.animationFrame = function () {\n if (_this.playedTime) {\n _this.updateBar('played', _this.video.currentTime / _this.video.duration, 'width');\n _this.element.getElementsByClassName('dplayer-ptime')[0].innerHTML = _utils2.default.secondToTime(_this.video.currentTime);\n _this.trigger('playing');\n }\n window.requestAnimationFrame(_this.animationFrame);\n };\n window.requestAnimationFrame(this.animationFrame);\n this.setTime = function (type) {\n if (!type) {\n _this.playedTime = true;\n setCheckLoadingTime();\n } else {\n _this[type + 'Time'] = true;\n if (type === 'played') {\n setCheckLoadingTime();\n }\n }\n };\n this.clearTime = function (type) {\n if (!type) {\n _this.playedTime = false;\n clearCheckLoadingTime();\n } else {\n _this[type + 'Time'] = false;\n if (type === 'played') {\n clearCheckLoadingTime();\n }\n }\n };\n pbar.addEventListener('click', function (event) {\n var e = event || window.event;\n barWidth = pbar.clientWidth;\n var percentage = (e.clientX - _utils2.default.getElementViewLeft(pbar)) / barWidth;\n percentage = percentage > 0 ? percentage : 0;\n percentage = percentage < 1 ? percentage : 1;\n _this.updateBar('played', percentage, 'width');\n _this.seek(parseFloat(bar.playedBar.style.width) / 100 * _this.video.duration);\n });\n this.initVideoPreview();\n this.isPreViewShow = false;\n this.isTimeTipsShow = true;\n this.isMouseHoverPbar = false;\n this.mouseHandler = this.mouseHandler(pbar, pbarTimeTips).bind(this);\n pbar.addEventListener('mousemove', this.mouseHandler);\n pbar.addEventListener('mouseover', this.mouseHandler);\n pbar.addEventListener('mouseenter', this.mouseHandler);\n pbar.addEventListener('mouseout', this.mouseHandler);\n pbar.addEventListener('mouseleave', this.mouseHandler);\n var thumbMove = function thumbMove(event) {\n var e = event || window.event;\n var percentage = (e.clientX - _utils2.default.getElementViewLeft(pbar)) / barWidth;\n percentage = percentage > 0 ? percentage : 0;\n percentage = percentage < 1 ? percentage : 1;\n _this.updateBar('played', percentage, 'width');\n _this.element.getElementsByClassName('dplayer-ptime')[0].innerHTML = _utils2.default.secondToTime(percentage * _this.video.duration);\n };\n var thumbUp = function thumbUp() {\n document.removeEventListener('mouseup', thumbUp);\n document.removeEventListener('mousemove', thumbMove);\n _this.seek(parseFloat(bar.playedBar.style.width) / 100 * _this.video.duration);\n _this.setTime();\n };\n pbar.addEventListener('mousedown', function () {\n barWidth = pbar.clientWidth;\n _this.clearTime();\n document.addEventListener('mousemove', thumbMove);\n document.addEventListener('mouseup', thumbUp);\n });\n var volumeEle = this.element.getElementsByClassName('dplayer-volume')[0];\n var volumeBarWrapWrap = this.element.getElementsByClassName('dplayer-volume-bar-wrap')[0];\n var volumeBarWrap = this.element.getElementsByClassName('dplayer-volume-bar')[0];\n var volumeicon = this.element.getElementsByClassName('dplayer-volume-icon')[0];\n var vWidth = 35;\n this.switchVolumeIcon = function () {\n var volumeicon = _this.element.getElementsByClassName('dplayer-volume-icon')[0];\n if (_this.volume() >= 0.95) {\n volumeicon.innerHTML = (0, _svg2.default)('volume-up');\n } else if (_this.volume() > 0) {\n volumeicon.innerHTML = (0, _svg2.default)('volume-down');\n } else {\n volumeicon.innerHTML = (0, _svg2.default)('volume-off');\n }\n };\n var volumeMove = function volumeMove(event) {\n var e = event || window.event;\n var percentage = (e.clientX - _utils2.default.getElementViewLeft(volumeBarWrap) - 5.5) / vWidth;\n _this.volume(percentage);\n };\n var volumeUp = function volumeUp() {\n document.removeEventListener('mouseup', volumeUp);\n document.removeEventListener('mousemove', volumeMove);\n volumeEle.classList.remove('dplayer-volume-active');\n };\n volumeBarWrapWrap.addEventListener('click', function (event) {\n var e = event || window.event;\n var percentage = (e.clientX - _utils2.default.getElementViewLeft(volumeBarWrap) - 5.5) / vWidth;\n _this.volume(percentage);\n });\n volumeBarWrapWrap.addEventListener('mousedown', function () {\n document.addEventListener('mousemove', volumeMove);\n document.addEventListener('mouseup', volumeUp);\n volumeEle.classList.add('dplayer-volume-active');\n });\n volumeicon.addEventListener('click', function () {\n if (_this.video.muted) {\n _this.video.muted = false;\n _this.switchVolumeIcon();\n _this.updateBar('volume', _this.volume(), 'width');\n } else {\n _this.video.muted = true;\n volumeicon.innerHTML = (0, _svg2.default)('volume-off');\n _this.updateBar('volume', 0, 'width');\n }\n });\n this.hideTime = 0;\n var hideController = function hideController() {\n _this.element.classList.remove('dplayer-hide-controller');\n clearTimeout(_this.hideTime);\n _this.hideTime = setTimeout(function () {\n if (_this.video.played.length) {\n _this.element.classList.add('dplayer-hide-controller');\n closeSetting();\n closeComment();\n }\n }, 2000);\n };\n if (!_utils.isMobile) {\n this.element.addEventListener('mousemove', hideController);\n this.element.addEventListener('click', hideController);\n }\n var settingHTML = _html2.default.setting(this.tran);\n var settingIcon = this.element.getElementsByClassName('dplayer-setting-icon')[0];\n var settingBox = this.element.getElementsByClassName('dplayer-setting-box')[0];\n var mask = this.element.getElementsByClassName('dplayer-mask')[0];\n settingBox.innerHTML = settingHTML.original;\n var closeSetting = function closeSetting() {\n if (settingBox.classList.contains('dplayer-setting-box-open')) {\n settingBox.classList.remove('dplayer-setting-box-open');\n mask.classList.remove('dplayer-mask-show');\n setTimeout(function () {\n settingBox.classList.remove('dplayer-setting-box-narrow');\n settingBox.innerHTML = settingHTML.original;\n settingEvent();\n }, 300);\n }\n };\n var openSetting = function openSetting() {\n settingBox.classList.add('dplayer-setting-box-open');\n mask.classList.add('dplayer-mask-show');\n };\n mask.addEventListener('click', function () {\n closeSetting();\n });\n settingIcon.addEventListener('click', function () {\n openSetting();\n });\n this.loop = this.option.loop;\n var showdan = true;\n var settingEvent = function settingEvent() {\n var loopEle = _this.element.getElementsByClassName('dplayer-setting-loop')[0];\n var loopToggle = loopEle.getElementsByClassName('dplayer-toggle-setting-input')[0];\n loopToggle.checked = _this.loop;\n loopEle.addEventListener('click', function () {\n loopToggle.checked = !loopToggle.checked;\n if (loopToggle.checked) {\n _this.loop = true;\n } else {\n _this.loop = false;\n }\n closeSetting();\n });\n var showDanEle = _this.element.getElementsByClassName('dplayer-setting-showdan')[0];\n var showDanToggle = showDanEle.getElementsByClassName('dplayer-showdan-setting-input')[0];\n showDanToggle.checked = showdan;\n showDanEle.addEventListener('click', function () {\n showDanToggle.checked = !showDanToggle.checked;\n if (showDanToggle.checked) {\n showdan = true;\n if (!_this.paused) {\n _this.danmaku.show();\n }\n } else {\n showdan = false;\n _this.danmaku.hide();\n }\n closeSetting();\n });\n var speedEle = _this.element.getElementsByClassName('dplayer-setting-speed')[0];\n speedEle.addEventListener('click', function () {\n settingBox.classList.add('dplayer-setting-box-narrow');\n settingBox.innerHTML = settingHTML.speed;\n var speedItem = settingBox.getElementsByClassName('dplayer-setting-speed-item');\n var _loop = function _loop(_i2) {\n speedItem[_i2].addEventListener('click', function () {\n _this.video.playbackRate = speedItem[_i2].dataset.speed;\n closeSetting();\n });\n };\n for (var _i2 = 0; _i2 < speedItem.length; _i2++) {\n _loop(_i2);\n }\n });\n if (_this.danmaku) {\n bar.danmakuBar = _this.element.getElementsByClassName('dplayer-danmaku-bar-inner')[0];\n var danmakuBarWrapWrap = _this.element.getElementsByClassName('dplayer-danmaku-bar-wrap')[0];\n var danmakuBarWrap = _this.element.getElementsByClassName('dplayer-danmaku-bar')[0];\n var danmakuSettingBox = _this.element.getElementsByClassName('dplayer-setting-danmaku')[0];\n var dWidth = 130;\n _this.updateBar('danmaku', _this.danmaku.opacity(), 'width');\n var danmakuMove = function danmakuMove(event) {\n var e = event || window.event;\n var percentage = (e.clientX - _utils2.default.getElementViewLeft(danmakuBarWrap)) / dWidth;\n percentage = percentage > 0 ? percentage : 0;\n percentage = percentage < 1 ? percentage : 1;\n _this.updateBar('danmaku', percentage, 'width');\n _this.danmaku.opacity(percentage);\n };\n var danmakuUp = function danmakuUp() {\n document.removeEventListener('mouseup', danmakuUp);\n document.removeEventListener('mousemove', danmakuMove);\n danmakuSettingBox.classList.remove('dplayer-setting-danmaku-active');\n };\n danmakuBarWrapWrap.addEventListener('click', function (event) {\n var e = event || window.event;\n var percentage = (e.clientX - _utils2.default.getElementViewLeft(danmakuBarWrap)) / dWidth;\n percentage = percentage > 0 ? percentage : 0;\n percentage = percentage < 1 ? percentage : 1;\n _this.updateBar('danmaku', percentage, 'width');\n _this.danmaku.opacity(percentage);\n });\n danmakuBarWrapWrap.addEventListener('mousedown', function () {\n document.addEventListener('mousemove', danmakuMove);\n document.addEventListener('mouseup', danmakuUp);\n danmakuSettingBox.classList.add('dplayer-setting-danmaku-active');\n });\n }\n };\n settingEvent();\n if (this.video.duration !== 1) {\n this.element.getElementsByClassName('dplayer-dtime')[0].innerHTML = this.video.duration ? _utils2.default.secondToTime(this.video.duration) : '00:00';\n }\n if (!this.danmaku) {\n if (this.option.autoplay && !_utils.isMobile) {\n this.play();\n } else if (_utils.isMobile) {\n this.pause();\n }\n }\n var commentInput = this.element.getElementsByClassName('dplayer-comment-input')[0];\n var commentIcon = this.element.getElementsByClassName('dplayer-comment-icon')[0];\n var commentBox = this.element.getElementsByClassName('dplayer-comment-box')[0];\n var commentSettingIcon = this.element.getElementsByClassName('dplayer-comment-setting-icon')[0];\n var commentSettingBox = this.element.getElementsByClassName('dplayer-comment-setting-box')[0];\n var commentSendIcon = this.element.getElementsByClassName('dplayer-send-icon')[0];\n var closeCommentSetting = function closeCommentSetting() {\n if (commentSettingBox.classList.contains('dplayer-comment-setting-open')) {\n commentSettingBox.classList.remove('dplayer-comment-setting-open');\n }\n };\n var toggleCommentSetting = function toggleCommentSetting() {\n if (commentSettingBox.classList.contains('dplayer-comment-setting-open')) {\n commentSettingBox.classList.remove('dplayer-comment-setting-open');\n } else {\n commentSettingBox.classList.add('dplayer-comment-setting-open');\n }\n };\n var disableHide = 0;\n var commentFocusTimeout = 0;\n var closeComment = function closeComment() {\n if (!commentBox.classList.contains('dplayer-comment-box-open')) {\n return;\n }\n commentBox.classList.remove('dplayer-comment-box-open');\n mask.classList.remove('dplayer-mask-show');\n _this.element.classList.remove('dplayer-show-controller');\n clearInterval(disableHide);\n clearTimeout(commentFocusTimeout);\n closeCommentSetting();\n };\n var openComment = function openComment() {\n if (commentBox.classList.contains('dplayer-comment-box-open')) {\n return;\n }\n commentBox.classList.add('dplayer-comment-box-open');\n mask.classList.add('dplayer-mask-show');\n _this.element.classList.add('dplayer-show-controller');\n disableHide = setInterval(function () {\n clearTimeout(_this.hideTime);\n }, 1000);\n commentFocusTimeout = setTimeout(function () {\n commentInput.focus();\n }, 300);\n };\n mask.addEventListener('click', function () {\n closeComment();\n });\n commentIcon.addEventListener('click', function () {\n openComment();\n });\n commentSettingIcon.addEventListener('click', function () {\n toggleCommentSetting();\n });\n this.element.getElementsByClassName('dplayer-comment-setting-color')[0].addEventListener('click', function () {\n var sele = _this.element.querySelector('input[name=\"dplayer-danmaku-color-${index}\"]:checked+span');\n if (sele) {\n commentSettingIcon.getElementsByClassName('dplayer-fill')[0].style.fill = _this.element.querySelector('input[name=\"dplayer-danmaku-color-${index}\"]:checked').value;\n }\n });\n var sendComment = function sendComment() {\n commentInput.blur();\n if (!commentInput.value.replace(/^\\s+|\\s+$/g, '')) {\n _this.notice(_this.tran('Please input danmaku content!'));\n return;\n }\n _this.danmaku.send({\n text: commentInput.value,\n color: _this.element.querySelector('.dplayer-comment-setting-color input:checked').value,\n type: _this.element.querySelector('.dplayer-comment-setting-type input:checked').value\n }, function () {\n commentInput.value = '';\n closeComment();\n });\n };\n commentInput.addEventListener('click', function () {\n closeCommentSetting();\n });\n commentInput.addEventListener('keydown', function (e) {\n var event = e || window.event;\n if (event.keyCode === 13) {\n sendComment();\n }\n });\n commentSendIcon.addEventListener('click', sendComment);\n this.element.addEventListener('fullscreenchange', function () {\n if (_this.danmaku) {\n _this.danmaku.resize();\n }\n });\n this.element.addEventListener('mozfullscreenchange', function () {\n if (_this.danmaku) {\n _this.danmaku.resize();\n }\n });\n this.element.addEventListener('webkitfullscreenchange', function () {\n if (_this.danmaku) {\n _this.danmaku.resize();\n }\n });\n this.element.getElementsByClassName('dplayer-full-icon')[0].addEventListener('click', function () {\n if (!document.fullscreenElement && !document.mozFullScreenElement && !document.webkitFullscreenElement) {\n if (_this.element.requestFullscreen) {\n _this.element.requestFullscreen();\n } else if (_this.element.mozRequestFullScreen) {\n _this.element.mozRequestFullScreen();\n } else if (_this.element.webkitRequestFullscreen) {\n _this.element.webkitRequestFullscreen();\n } else if (_this.video.webkitEnterFullscreen) {\n _this.video.webkitEnterFullscreen();\n }\n } else {\n if (document.cancelFullScreen) {\n document.cancelFullScreen();\n } else if (document.mozCancelFullScreen) {\n document.mozCancelFullScreen();\n } else if (document.webkitCancelFullScreen) {\n document.webkitCancelFullScreen();\n }\n }\n if (_this.danmaku) {\n _this.danmaku.resize();\n }\n });\n this.element.getElementsByClassName('dplayer-full-in-icon')[0].addEventListener('click', function () {\n if (_this.element.classList.contains('dplayer-fulled')) {\n _this.element.classList.remove('dplayer-fulled');\n } else {\n _this.element.classList.add('dplayer-fulled');\n if (_this.danmaku) {\n _this.danmaku.resize();\n }\n }\n });\n var handleKeyDown = function handleKeyDown(e) {\n if (_this.focus) {\n var tag = document.activeElement.tagName.toUpperCase();\n var editable = document.activeElement.getAttribute('contenteditable');\n if (tag !== 'INPUT' && tag !== 'TEXTAREA' && editable !== '' && editable !== 'true') {\n var event = e || window.event;\n var percentage = void 0;\n switch (event.keyCode) {\n case 32:\n event.preventDefault();\n _this.toggle();\n break;\n case 37:\n event.preventDefault();\n _this.seek(_this.video.currentTime - 5);\n hideController();\n break;\n case 39:\n event.preventDefault();\n _this.seek(_this.video.currentTime + 5);\n hideController();\n break;\n case 38:\n event.preventDefault();\n percentage = _this.volume() + 0.1;\n _this.volume(percentage);\n break;\n case 40:\n event.preventDefault();\n percentage = _this.volume() - 0.1;\n _this.volume(percentage);\n break;\n }\n }\n }\n };\n if (this.option.hotkey) {\n document.addEventListener('keydown', handleKeyDown);\n }\n document.addEventListener('keydown', function (e) {\n var event = e || window.event;\n switch (event.keyCode) {\n case 27:\n if (_this.element.classList.contains('dplayer-fulled')) {\n _this.element.classList.remove('dplayer-fulled');\n if (_this.danmaku) {\n _this.danmaku.resize();\n }\n }\n break;\n }\n });\n var menu = this.element.getElementsByClassName('dplayer-menu')[0];\n this.element.addEventListener('contextmenu', function (e) {\n var event = e || window.event;\n event.preventDefault();\n menu.classList.add('dplayer-menu-show');\n var clientRect = _this.element.getBoundingClientRect();\n var menuLeft = event.clientX - clientRect.left;\n var menuTop = event.clientY - clientRect.top;\n if (menuLeft + menu.offsetWidth >= clientRect.width) {\n menu.style.right = clientRect.width - menuLeft + 'px';\n menu.style.left = 'initial';\n } else {\n menu.style.left = event.clientX - _this.element.getBoundingClientRect().left + 'px';\n menu.style.right = 'initial';\n }\n if (menuTop + menu.offsetHeight >= clientRect.height) {\n menu.style.bottom = clientRect.height - menuTop + 'px';\n menu.style.top = 'initial';\n } else {\n menu.style.top = event.clientY - _this.element.getBoundingClientRect().top + 'px';\n menu.style.bottom = 'initial';\n }\n mask.classList.add('dplayer-mask-show');\n mask.addEventListener('click', function () {\n mask.classList.remove('dplayer-mask-show');\n menu.classList.remove('dplayer-menu-show');\n });\n });\n if (this.option.video.quality) {\n this.element.getElementsByClassName('dplayer-quality-list')[0].addEventListener('click', function (e) {\n if (e.target.classList.contains('dplayer-quality-item')) {\n _this.switchQuality(e.target.dataset.index);\n }\n });\n }\n if (this.option.screenshot) {\n var camareIcon = this.element.getElementsByClassName('dplayer-camera-icon')[0];\n camareIcon.addEventListener('click', function () {\n var canvas = document.createElement('canvas');\n canvas.width = _this.video.videoWidth;\n canvas.height = _this.video.videoHeight;\n canvas.getContext('2d').drawImage(_this.video, 0, 0, canvas.width, canvas.height);\n camareIcon.href = canvas.toDataURL();\n camareIcon.download = 'DPlayer.png';\n });\n }\n this.initVideo();\n index++;\n }\n _createClass(DPlayer, [\n {\n key: 'seek',\n value: function seek(time) {\n time = Math.max(time, 0);\n if (this.video.duration) {\n time = Math.min(time, this.video.duration);\n }\n if (this.video.currentTime < time) {\n this.notice(this.tran('FF to') + ' ' + _utils2.default.secondToTime(time));\n } else if (this.video.currentTime > time) {\n this.notice(this.tran('REW to') + ' ' + _utils2.default.secondToTime(time));\n }\n this.video.currentTime = time;\n if (this.danmaku) {\n this.danmaku.seek();\n }\n this.updateBar('played', time / this.video.duration, 'width');\n }\n },\n {\n key: 'play',\n value: function play() {\n this.paused = false;\n if (this.video.paused) {\n this.bezel.innerHTML = (0, _svg2.default)('play');\n this.bezel.classList.add('dplayer-bezel-transition');\n }\n this.playButton.innerHTML = (0, _svg2.default)('pause');\n this.video.play();\n this.setTime();\n this.element.classList.add('dplayer-playing');\n if (this.danmaku) {\n this.danmaku.play();\n }\n this.trigger('play');\n }\n },\n {\n key: 'pause',\n value: function pause() {\n this.paused = true;\n this.element.classList.remove('dplayer-loading');\n if (!this.video.paused) {\n this.bezel.innerHTML = (0, _svg2.default)('pause');\n this.bezel.classList.add('dplayer-bezel-transition');\n }\n this.ended = false;\n this.playButton.innerHTML = (0, _svg2.default)('play');\n this.video.pause();\n this.clearTime();\n this.element.classList.remove('dplayer-playing');\n if (this.danmaku) {\n this.danmaku.pause();\n }\n this.trigger('pause');\n }\n },\n {\n key: 'volume',\n value: function volume(percentage, nonotice, nostorage) {\n percentage = parseFloat(percentage);\n if (!isNaN(percentage)) {\n percentage = percentage > 0 ? percentage : 0;\n percentage = percentage < 1 ? percentage : 1;\n this.updateBar('volume', percentage, 'width');\n if (!nostorage) {\n localStorage.setItem('dplayer-volume', percentage);\n }\n if (!nonotice) {\n this.notice(this.tran('Volume') + ' ' + (percentage * 100).toFixed(0) + '%');\n }\n this.video.volume = percentage;\n if (this.video.muted) {\n this.video.muted = false;\n }\n this.switchVolumeIcon();\n }\n return this.video.volume;\n }\n },\n {\n key: 'toggle',\n value: function toggle() {\n if (this.video.paused) {\n this.play();\n } else {\n this.pause();\n }\n }\n },\n {\n key: 'on',\n value: function on(event, callback) {\n if (typeof callback === 'function') {\n this.event[event].push(callback);\n }\n }\n },\n {\n key: 'switchVideo',\n value: function switchVideo(video, danmakuAPI) {\n this.video.poster = video.pic ? video.pic : '';\n this.video.src = video.url;\n this.pause();\n if (danmakuAPI) {\n this.element.getElementsByClassName('dplayer-danloading')[0].style.display = 'block';\n this.updateBar('played', 0, 'width');\n this.updateBar('loaded', 0, 'width');\n this.element.getElementsByClassName('dplayer-ptime')[0].innerHTML = '00:00';\n this.element.getElementsByClassName('dplayer-danmaku')[0].innerHTML = '';\n if (this.danmaku) {\n this.danmaku.reload({\n id: danmakuAPI.id,\n address: danmakuAPI.api,\n token: danmakuAPI.token,\n maximum: danmakuAPI.maximum,\n addition: danmakuAPI.addition,\n user: danmakuAPI.user\n });\n }\n }\n }\n },\n {\n key: 'initVideo',\n value: function initVideo() {\n var _this2 = this;\n var enablehls = void 0;\n if (this.option.video.type === 'auto') {\n enablehls = /m3u8(#|\\?|$)/i.exec(this.video.src);\n } else if (this.option.video.type === 'hls') {\n enablehls = true;\n } else {\n enablehls = false;\n }\n if (enablehls && Hls.isSupported()) {\n var hls = new Hls();\n hls.loadSource(this.video.src);\n hls.attachMedia(this.video);\n }\n var enableflv = void 0;\n if (this.option.video.type === 'auto') {\n enableflv = /.flv(#|\\?|$)/i.exec(this.video.src);\n } else if (this.option.video.type === 'flv') {\n enableflv = true;\n } else {\n enableflv = false;\n }\n if (enableflv && flvjs.isSupported()) {\n var flvPlayer = flvjs.createPlayer({\n type: 'flv',\n url: this.option.video.url\n });\n flvPlayer.attachMediaElement(this.video);\n flvPlayer.load();\n }\n this.video.addEventListener('durationchange', function () {\n if (_this2.video.duration !== 1) {\n _this2.element.getElementsByClassName('dplayer-dtime')[0].innerHTML = _utils2.default.secondToTime(_this2.video.duration);\n }\n });\n this.video.addEventListener('progress', function () {\n var percentage = _this2.video.buffered.length ? _this2.video.buffered.end(_this2.video.buffered.length - 1) / _this2.video.duration : 0;\n _this2.updateBar('loaded', percentage, 'width');\n });\n this.video.addEventListener('error', function () {\n _this2.tran && _this2.notice && _this2.notice(_this2.tran('This video fails to load'), -1);\n _this2.trigger && _this2.trigger('pause');\n });\n this.video.addEventListener('canplay', function () {\n _this2.trigger('canplay');\n });\n this.ended = false;\n this.video.addEventListener('ended', function () {\n _this2.updateBar('played', 1, 'width');\n if (!_this2.loop) {\n _this2.ended = true;\n _this2.pause();\n _this2.trigger('ended');\n } else {\n _this2.seek(0);\n _this2.video.play();\n }\n if (_this2.danmaku) {\n _this2.danmaku.danIndex = 0;\n }\n });\n this.video.addEventListener('play', function () {\n if (_this2.paused) {\n _this2.play();\n }\n });\n this.video.addEventListener('pause', function () {\n if (!_this2.paused) {\n _this2.pause();\n }\n });\n this.volume(localStorage.getItem('dplayer-volume') || this.option.volume, true, true);\n }\n },\n {\n key: 'switchQuality',\n value: function switchQuality(index) {\n var _this3 = this;\n if (this.qualityIndex === index || this.switchingQuality) {\n return;\n } else {\n this.qualityIndex = index;\n }\n this.switchingQuality = true;\n this.quality = this.option.video.quality[index];\n this.element.getElementsByClassName('dplayer-quality-icon')[0].innerHTML = this.quality.name;\n var paused = this.video.paused;\n this.video.pause();\n var videoHTML = _html2.default.video(false, null, this.option.screenshot, 'auto', this.quality.url);\n var videoEle = new DOMParser().parseFromString(videoHTML, 'text/html').body.firstChild;\n var parent = this.element.getElementsByClassName('dplayer-video-wrap')[0];\n parent.insertBefore(videoEle, parent.getElementsByTagName('div')[0]);\n this.prevVideo = this.video;\n this.video = videoEle;\n this.initVideo();\n this.seek(this.prevVideo.currentTime);\n this.notice(this.tran('Switching to') + ' ' + this.quality.name + ' ' + this.tran('quality'), -1);\n this.video.addEventListener('canplay', function () {\n if (_this3.prevVideo) {\n if (_this3.video.currentTime !== _this3.prevVideo.currentTime) {\n _this3.seek(_this3.prevVideo.currentTime);\n return;\n }\n parent.removeChild(_this3.prevVideo);\n _this3.video.classList.add('dplayer-video-current');\n if (!paused) {\n _this3.video.play();\n }\n _this3.prevVideo = null;\n _this3.notice(_this3.tran('Switched to') + ' ' + _this3.quality.name + ' ' + _this3.tran('quality'));\n _this3.switchingQuality = false;\n }\n });\n }\n },\n {\n key: 'mouseHandler',\n value: function mouseHandler(pbar, timeTips) {\n var _this4 = this;\n var cumulativeOffset = function cumulativeOffset(element) {\n var top = 0, left = 0;\n do {\n top += element.offsetTop || 0;\n left += element.offsetLeft || 0;\n element = element.offsetParent;\n } while (element);\n return {\n top: top,\n left: left\n };\n };\n return function (e) {\n if (!_this4.video.duration) {\n return;\n }\n var clientX = e.clientX;\n var px = cumulativeOffset(pbar).left;\n var tx = clientX - px;\n var time = _this4.video.duration * (tx / pbar.offsetWidth);\n timeTips.style.left = tx - 20 + 'px';\n _this4.previewWrapper.style.left = tx - _this4.previewWrapper.offsetWidth / 2 + 'px';\n switch (e.type) {\n case 'mouseenter':\n case 'mouseover':\n case 'mousemove':\n _this4.isMouseHoverPbar = true;\n if (_this4.previewTime !== parseInt(time)) {\n timeTips.innerText = _utils2.default.secondToTime(time);\n _this4.previewTime = parseInt(time);\n _this4.setPreview && clearTimeout(_this4.setPreview);\n _this4.setPreview = setTimeout(function () {\n _this4.setPreviewSourceAndFrame({ time: parseInt(time) });\n }, 500);\n }\n _this4.timeTipsDisplay(true, timeTips);\n break;\n case 'mouseleave':\n case 'mouseout':\n _this4.isMouseHoverPbar = false;\n _this4.previewDispaly(false);\n _this4.timeTipsDisplay(false, timeTips);\n break;\n }\n };\n }\n },\n {\n key: 'timeTipsDisplay',\n value: function timeTipsDisplay(show, timeTips) {\n if (show) {\n if (this.isTimeTipsShow) {\n return;\n }\n timeTips.classList.remove('hidden');\n this.isTimeTipsShow = true;\n } else {\n if (!this.isTimeTipsShow) {\n return;\n }\n timeTips.classList.add('hidden');\n this.isTimeTipsShow = false;\n }\n }\n },\n {\n key: 'initVideoPreview',\n value: function initVideoPreview() {\n var _this5 = this;\n this.previewVideo = document.createElement('video');\n this.previewWrapper = this.element.getElementsByClassName('dplayer-bar-preview')[0];\n this.previewCanvas = this.element.getElementsByClassName('dplayer-bar-preview-canvas')[0];\n this.previewVideo.preload = 'metadata';\n var resize = function resize() {\n var w = _this5.element.offsetWidth / 4;\n var h = _this5.element.offsetHeight / 4;\n _this5.previewWrapper.style.width = w + 'px';\n _this5.previewWrapper.style.height = h + 'px';\n _this5.previewWrapper.style.top = -h + 2 + 'px';\n _this5.previewCanvas.width = w;\n _this5.previewCanvas.height = h;\n };\n resize();\n this.video.addEventListener('loadedmetadata', function () {\n resize();\n });\n this.setPreviewSourceAndFrame({\n url: this.video.src,\n time: 0\n });\n this.bindPreviewEvent();\n }\n },\n {\n key: 'setPreviewSourceAndFrame',\n value: function setPreviewSourceAndFrame(_ref) {\n var url = _ref.url, time = _ref.time;\n if (url) {\n this.previewVideo.src = url;\n }\n if (time) {\n this.previewVideo.currentTime = time;\n }\n }\n },\n {\n key: 'bindPreviewEvent',\n value: function bindPreviewEvent() {\n var _this6 = this;\n this.previewNumber = 0;\n this.previewVideo.addEventListener('seeked', function () {\n _this6.previewNumber += 1;\n _this6.generPreviewImage(_this6.previewNumber);\n });\n }\n },\n {\n key: 'generPreviewImage',\n value: function generPreviewImage(number) {\n if (number !== this.previewNumber) {\n return;\n }\n if (!this.isMouseHoverPbar) {\n return;\n }\n this.previewDispaly(true);\n if (!this.isPreViewShow) {\n return;\n }\n var ctx = this.previewCanvas.getContext('2d');\n ctx.drawImage(this.previewVideo, 0, 0, this.previewWrapper.offsetWidth, this.previewWrapper.offsetHeight);\n }\n },\n {\n key: 'previewDispaly',\n value: function previewDispaly(show) {\n if (show) {\n if (this.isPreViewShow) {\n return;\n }\n if (!this.isMouseHoverPbar) {\n return;\n }\n this.previewWrapper.classList.remove('hidden');\n this.isPreViewShow = true;\n } else {\n if (!this.isPreViewShow) {\n return;\n }\n this.previewWrapper.classList.add('hidden');\n this.isPreViewShow = false;\n }\n }\n },\n {\n key: 'notice',\n value: function notice(text) {\n var time = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2000;\n var opacity = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0.8;\n var noticeEle = this.element.getElementsByClassName('dplayer-notice')[0];\n noticeEle.innerHTML = text;\n noticeEle.style.opacity = opacity;\n if (this.noticeTime) {\n clearTimeout(this.noticeTime);\n }\n this.noticeTime = setTimeout(function () {\n noticeEle.style.opacity = 0;\n }, time);\n }\n },\n {\n key: 'destroy',\n value: function destroy() {\n this.pause();\n clearTimeout(this.hideTime);\n this.video.src = '';\n this.element.innerHTML = '';\n for (var key in this) {\n if (this.hasOwnProperty(key) && key !== 'paused') {\n delete this[key];\n }\n }\n }\n }\n ]);\n return DPlayer;\n}();\nmodule.exports = DPlayer;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/DPlayer.js\n// module id = 2\n// module chunks = 0","'use strict';\nmodule.exports = {\n secondToTime: function secondToTime(second) {\n var add0 = function add0(num) {\n return num < 10 ? '0' + num : '' + num;\n };\n var min = parseInt(second / 60);\n var sec = parseInt(second - min * 60);\n return add0(min) + ':' + add0(sec);\n },\n getElementViewLeft: function getElementViewLeft(element) {\n var actualLeft = element.offsetLeft;\n var current = element.offsetParent;\n var elementScrollLeft = document.body.scrollLeft + document.documentElement.scrollLeft;\n if (!document.fullscreenElement && !document.mozFullScreenElement && !document.webkitFullscreenElement) {\n while (current !== null) {\n actualLeft += current.offsetLeft;\n current = current.offsetParent;\n }\n } else {\n while (current !== null && current !== element) {\n actualLeft += current.offsetLeft;\n current = current.offsetParent;\n }\n }\n return actualLeft - elementScrollLeft;\n },\n isMobile: /mobile/i.test(window.navigator.userAgent)\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/utils.js\n// module id = 4\n// module chunks = 0","'use strict';\nvar defaultApiBackend = require('./api.js');\nmodule.exports = function (option) {\n var isMobile = /mobile/i.test(window.navigator.userAgent);\n if (isMobile) {\n option.autoplay = false;\n }\n var defaultOption = {\n element: document.getElementsByClassName('dplayer')[0],\n autoplay: false,\n theme: '#b7daff',\n loop: false,\n lang: navigator.language.indexOf('zh') !== -1 ? 'zh' : 'en',\n screenshot: false,\n hotkey: true,\n preload: 'auto',\n volume: '0.7',\n apiBackend: defaultApiBackend,\n contextmenu: [\n {\n text: '关于作者',\n link: 'http://diygod.me'\n },\n {\n text: '播放器意见反馈',\n link: 'https://github.com/DIYgod/DPlayer/issues'\n },\n {\n text: '关于 DPlayer 播放器',\n link: 'https://github.com/DIYgod/DPlayer'\n }\n ]\n };\n for (var defaultKey in defaultOption) {\n if (defaultOption.hasOwnProperty(defaultKey) && !option.hasOwnProperty(defaultKey)) {\n option[defaultKey] = defaultOption[defaultKey];\n }\n }\n if (Object.prototype.toString.call(option.video.url) !== '[object Array]') {\n option.video.url = [option.video.url];\n }\n if (option.video && !option.video.hasOwnProperty('type')) {\n option.video.type = 'auto';\n }\n if (option.danmaku && !option.danmaku.hasOwnProperty('user')) {\n option.danmaku.user = 'DIYgod';\n }\n if (option.video.quality) {\n option.video.url = [option.video.quality[option.video.defaultQuality].url];\n }\n return option;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/option.js\n// module id = 5\n// module chunks = 0","'use strict';\nvar SendXMLHttpRequest = function SendXMLHttpRequest(url, data, success, error, fail) {\n var xhr = new XMLHttpRequest();\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 4) {\n if (xhr.status >= 200 && xhr.status < 300 || xhr.status === 304) {\n var response = JSON.parse(xhr.responseText);\n if (response.code !== 1) {\n return error(xhr, response);\n }\n return success(xhr, response);\n }\n fail(xhr);\n }\n };\n xhr.open(data !== null ? 'POST' : 'GET', url, true);\n xhr.send(data !== null ? JSON.stringify(data) : null);\n};\nmodule.exports = {\n send: function send(endpoint, danmakuData, callback) {\n SendXMLHttpRequest(endpoint, danmakuData, function (xhr, response) {\n console.log('Post danmaku: ', response);\n if (callback) {\n callback();\n }\n }, function (xhr, response) {\n alert(response.msg);\n }, function (xhr) {\n console.log('Request was unsuccessful: ' + xhr.status);\n });\n },\n read: function read(endpoint, callback) {\n SendXMLHttpRequest(endpoint, null, function (xhr, response) {\n callback(null, response.danmaku);\n }, function (xhr, response) {\n callback({\n status: xhr.status,\n response: response\n });\n }, function (xhr) {\n callback({\n status: xhr.status,\n response: null\n });\n });\n }\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/api.js\n// module id = 6\n// module chunks = 0","'use strict';\nvar tranZH = {\n 'Danmaku is loading': '弹幕加载中',\n 'Top': '顶部',\n 'Bottom': '底部',\n 'Rolling': '滚动',\n 'Input danmaku, hit Enter': '输入弹幕\\uFF0C回车发送',\n 'About author': '关于作者',\n 'DPlayer feedback': '播放器意见反馈',\n 'About DPlayer': '关于 DPlayer 播放器',\n 'Loop': '洗脑循环',\n 'Speed': '速度',\n 'Opacity for danmaku': '弹幕透明度',\n 'Normal': '正常',\n 'Please input danmaku content!': '要输入弹幕内容啊喂\\uFF01',\n 'Set danmaku color': '设置弹幕颜色',\n 'Set danmaku type': '设置弹幕类型',\n 'Danmaku': '弹幕',\n 'This video fails to load': '视频加载失败',\n 'Switching to': '正在切换至',\n 'Switched to': '已经切换至',\n 'quality': '画质',\n 'FF to': '快进至',\n 'REW to': '快退至',\n 'Volume': '音量'\n};\nmodule.exports = function (lang) {\n var _this = this;\n this.lang = lang;\n this.tran = function (text) {\n if (_this.lang === 'en') {\n return text;\n } else if (_this.lang === 'zh') {\n return tranZH[text];\n }\n };\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/i18n.js\n// module id = 7\n// module chunks = 0","'use strict';\nvar svg = require('./svg.js');\nvar html = {\n main: function main(option, index, tran) {\n var videos = '';\n for (var i = 0; i < option.video.url.length; i++) {\n videos += html.video(i === 0, option.video.pic, option.screenshot, option.video.url.length ? 'metadata' : option.preload, option.video.url[i]);\n }\n return '
' + videos + '' + (option.logo ? '
' : '') + '
' + (option.danmaku ? '' + tran('Danmaku is loading') + ' ' : '') + '
' + svg('play') + ' ' + svg('volume-down') + ' 0:00 / 0:00 ' + (option.video.quality ? '
' + option.video.quality[option.video.defaultQuality].name + ' ' + html.qualityList(option.video.quality) + '
' : '') + '' + (option.screenshot ? '
' + svg('camera') + ' ' : '') + '
' + svg('full-in') + ' ' + svg('full') + '
' + html.contextmenuList(option.contextmenu) + '
';\n },\n contextmenuList: function contextmenuList(contextmenu) {\n var result = '';\n return result;\n },\n qualityList: function qualityList(quality) {\n var result = '';\n for (var i = 0; i < quality.length; i++) {\n result += '
' + quality[i].name + '
';\n }\n result += '
';\n return result;\n },\n video: function video(current, pic, screenshot, preload, url) {\n return ' ';\n },\n setting: function setting(tran) {\n return {\n 'original': '' + tran('Speed') + ' ' + svg('right') + '
' + tran('Opacity for danmaku') + ' ',\n 'speed': '0.5
0.75
' + tran('Normal') + '
1.25
1.5
2
'\n };\n }\n};\nmodule.exports = html;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/html.js\n// module id = 8\n// module chunks = 0","'use strict';\nvar _typeof = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === 'function' && obj.constructor === Symbol && obj !== Symbol.prototype ? 'symbol' : typeof obj;\n};\nvar _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if ('value' in descriptor)\n descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function (Constructor, protoProps, staticProps) {\n if (protoProps)\n defineProperties(Constructor.prototype, protoProps);\n if (staticProps)\n defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError('Cannot call a class as a function');\n }\n}\nvar Danmaku = function () {\n function Danmaku(options) {\n _classCallCheck(this, Danmaku);\n this.options = options;\n this.container = this.options.container;\n this.danTunnel = {\n right: {},\n top: {},\n bottom: {}\n };\n this.danIndex = 0;\n this.dan = [];\n this.showing = true;\n this._opacity = this.options.opacity;\n this.load();\n }\n _createClass(Danmaku, [\n {\n key: 'load',\n value: function load() {\n var _this = this;\n var apiurl = void 0;\n if (this.options.api.maximum) {\n apiurl = this.options.api.address + '?id=' + this.options.api.id + '&max=' + this.options.api.maximum;\n } else {\n apiurl = this.options.api.address + '?id=' + this.options.api.id;\n }\n var endpoints = (this.options.api.addition || []).slice(0);\n endpoints.push(apiurl);\n this._readAllEndpoints(endpoints, function (results) {\n _this.dan = [].concat.apply([], results).sort(function (a, b) {\n return a.time - b.time;\n });\n window.requestAnimationFrame(function () {\n _this.frame();\n });\n _this.options.callback();\n });\n }\n },\n {\n key: 'reload',\n value: function reload(newAPI) {\n this.options.api = newAPI;\n this.dan = [];\n this.clear();\n this.load();\n }\n },\n {\n key: '_readAllEndpoints',\n value: function _readAllEndpoints(endpoints, callback) {\n var _this2 = this;\n var results = [];\n var readCount = 0;\n var cbk = function cbk(i) {\n return function (err, data) {\n ++readCount;\n if (err) {\n if (err.response) {\n _this2.options.error(err.response.msg);\n } else {\n _this2.options.error('Request was unsuccessful: ' + err.status);\n }\n results[i] = [];\n } else {\n results[i] = data;\n }\n if (readCount === endpoints.length) {\n return callback(results);\n }\n };\n };\n for (var i = 0; i < endpoints.length; ++i) {\n this.options.apiBackend.read(endpoints[i], cbk(i));\n }\n }\n },\n {\n key: 'send',\n value: function send(dan, callback) {\n var danmakuData = {\n token: this.options.api.token,\n player: this.options.api.id,\n author: this.options.api.user,\n time: this.options.time(),\n text: dan.text,\n color: dan.color,\n type: dan.type\n };\n this.options.apiBackend.send(this.options.api.address, danmakuData, callback);\n this.dan.splice(this.danIndex, 0, danmakuData);\n this.danIndex++;\n var danmaku = {\n text: this.htmlEncode(danmakuData.text),\n color: danmakuData.color,\n type: danmakuData.type,\n border: '2px solid ' + this.options.borderColor\n };\n this.draw(danmaku);\n }\n },\n {\n key: 'frame',\n value: function frame() {\n var _this3 = this;\n if (this.dan.length && !this.paused && this.showing) {\n var item = this.dan[this.danIndex];\n var dan = [];\n while (item && this.options.time() > parseFloat(item.time)) {\n dan.push(item);\n item = this.dan[++this.danIndex];\n }\n this.draw(dan);\n }\n window.requestAnimationFrame(function () {\n _this3.frame();\n });\n }\n },\n {\n key: 'opacity',\n value: function opacity(percentage) {\n if (percentage !== undefined) {\n var items = this.container.getElementsByClassName('dplayer-danmaku-item');\n for (var i = 0; i < items.length; i++) {\n items[i].style.opacity = percentage;\n }\n this._opacity = percentage;\n localStorage.setItem('danmaku-opacity', this._opacity);\n }\n return this._opacity;\n }\n },\n {\n key: 'draw',\n value: function draw(dan) {\n var _this4 = this;\n var itemHeight = this.options.height;\n var danWidth = this.container.offsetWidth;\n var danHeight = this.container.offsetHeight;\n var itemY = parseInt(danHeight / itemHeight);\n var danItemRight = function danItemRight(ele) {\n var eleWidth = ele.offsetWidth || parseInt(ele.style.width);\n var eleRight = ele.getBoundingClientRect().right || _this4.container.getBoundingClientRect().right + eleWidth;\n return _this4.container.getBoundingClientRect().right - eleRight;\n };\n var danSpeed = function danSpeed(width) {\n return (danWidth + width) / 5;\n };\n var getTunnel = function getTunnel(ele, type, width) {\n var tmp = danWidth / danSpeed(width);\n var _loop = function _loop(i) {\n var item = _this4.danTunnel[type][i + ''];\n if (item && item.length) {\n if (type !== 'right') {\n return 'continue';\n }\n for (var j = 0; j < item.length; j++) {\n var danRight = danItemRight(item[j]) - 10;\n if (danRight <= danWidth - tmp * danSpeed(parseInt(item[j].style.width)) || danRight <= 0) {\n break;\n }\n if (j === item.length - 1) {\n _this4.danTunnel[type][i + ''].push(ele);\n ele.addEventListener('animationend', function () {\n _this4.danTunnel[type][i + ''].splice(0, 1);\n });\n return { v: i % itemY };\n }\n }\n } else {\n _this4.danTunnel[type][i + ''] = [ele];\n ele.addEventListener('animationend', function () {\n _this4.danTunnel[type][i + ''].splice(0, 1);\n });\n return { v: i % itemY };\n }\n };\n for (var i = 0;; i++) {\n var _ret = _loop(i);\n switch (_ret) {\n case 'continue':\n continue;\n default:\n if ((typeof _ret === 'undefined' ? 'undefined' : _typeof(_ret)) === 'object')\n return _ret.v;\n }\n }\n };\n if (Object.prototype.toString.call(dan) !== '[object Array]') {\n dan = [dan];\n }\n var docFragment = document.createDocumentFragment();\n var _loop2 = function _loop2(i) {\n if (!dan[i].type) {\n dan[i].type = 'right';\n }\n if (!dan[i].color) {\n dan[i].color = '#fff';\n }\n var item = document.createElement('div');\n item.classList.add('dplayer-danmaku-item');\n item.classList.add('dplayer-danmaku-' + dan[i].type);\n if (dan[i].border) {\n item.innerHTML = '' + dan[i].text + ' ';\n } else {\n item.innerHTML = dan[i].text;\n }\n item.style.opacity = _this4._opacity;\n item.style.color = dan[i].color;\n item.addEventListener('animationend', function () {\n _this4.container.removeChild(item);\n });\n var itemWidth = _this4._measure(dan[i].text);\n switch (dan[i].type) {\n case 'right':\n item.style.width = itemWidth + 1 + 'px';\n item.style.top = itemHeight * getTunnel(item, dan[i].type, itemWidth) + 'px';\n item.style.transform = 'translateX(-' + danWidth + 'px)';\n break;\n case 'top':\n item.style.top = itemHeight * getTunnel(item, dan[i].type) + 'px';\n break;\n case 'bottom':\n item.style.bottom = itemHeight * getTunnel(item, dan[i].type) + 'px';\n break;\n default:\n console.error('Can\\'t handled danmaku type: ' + dan[i].type);\n }\n item.classList.add('dplayer-danmaku-move');\n docFragment.appendChild(item);\n };\n for (var i = 0; i < dan.length; i++) {\n _loop2(i);\n }\n this.container.appendChild(docFragment);\n return docFragment;\n }\n },\n {\n key: 'play',\n value: function play() {\n this.paused = false;\n }\n },\n {\n key: 'pause',\n value: function pause() {\n this.paused = true;\n }\n },\n {\n key: '_measure',\n value: function _measure(text) {\n if (!this.context) {\n var measureStyle = getComputedStyle(this.container.getElementsByClassName('dplayer-danmaku-item')[0], null);\n this.context = document.createElement('canvas').getContext('2d');\n this.context.font = measureStyle.getPropertyValue('font');\n }\n return this.context.measureText(text).width;\n }\n },\n {\n key: 'seek',\n value: function seek() {\n for (var i = 0; i < this.dan.length; i++) {\n if (this.dan[i].time >= this.options.time()) {\n this.danIndex = i;\n break;\n }\n this.danIndex = this.dan.length;\n }\n }\n },\n {\n key: 'clear',\n value: function clear() {\n this.danTunnel = {\n right: {},\n top: {},\n bottom: {}\n };\n this.danIndex = 0;\n this.options.container.innerHTML = '';\n }\n },\n {\n key: 'htmlEncode',\n value: function htmlEncode(str) {\n return str.replace(/&/g, '&').replace(//g, '>').replace(/\"/g, '"').replace(/'/g, ''').replace(/\\//g, '/');\n }\n },\n {\n key: 'resize',\n value: function resize() {\n var danWidth = this.container.offsetWidth;\n var items = this.container.getElementsByClassName('dplayer-danmaku-item');\n for (var i = 0; i < items.length; i++) {\n items[i].style.transform = 'translateX(-' + danWidth + 'px)';\n }\n }\n },\n {\n key: 'hide',\n value: function hide() {\n this.showing = false;\n this.pause();\n this.clear();\n }\n },\n {\n key: 'show',\n value: function show() {\n this.seek();\n this.showing = true;\n this.play();\n }\n }\n ]);\n return Danmaku;\n}();\nmodule.exports = Danmaku;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/danmaku.js\n// module id = 9\n// module chunks = 0"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///DPlayer.min.js","webpack:///webpack/bootstrap 860e2efd248b25c5e0c7","webpack:///./src/svg.js","webpack:///./src/index.js","webpack:///./src/DPlayer.js","webpack:///./src/utils.js","webpack:///./src/option.js","webpack:///./src/api.js","webpack:///./src/i18n.js","webpack:///./src/html.js","webpack:///./src/danmaku.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","i","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","svgSource","play","pause","volume-up","volume-down","volume-off","loop","full","full-in","setting","right","comment","comment-off","send","menu","camera","type","console","log","_interopRequireDefault","obj","default","_classCallCheck","instance","Constructor","TypeError","_createClass","defineProperties","target","props","length","descriptor","writable","key","protoProps","staticProps","_utils","_utils2","_svg","_svg2","_option","_option2","_i18n","_i18n2","_html","_html2","_danmaku","_danmaku2","index","DPlayer","option","_this","element","classList","add","video","quality","qualityIndex","defaultQuality","tran","lang","eventTypes","event","trigger","_i","danmaku","isMobile","innerHTML","main","bar","volumeBar","getElementsByClassName","playedBar","loadedBar","pbar","pbarTimeTips","barWidth","updateBar","percentage","direction","style","document","addEventListener","focus","container","opacity","localStorage","getItem","callback","display","autoplay","error","msg","notice","apiBackend","borderColor","theme","height","arrow","time","currentTime","api","id","address","token","maximum","addition","user","offsetWidth","arrowStyle","createElement","head","appendChild","bezel","remove","playButton","paused","toggle","videoWrap","conMask","toggleController","contains","lastPlayPos","currentPlayPos","bufferingDetected","window","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","setTimeout","setCheckLoadingTime","checkLoading","setInterval","clearCheckLoadingTime","clearInterval","playedTime","animationFrame","duration","secondToTime","setTime","clearTime","e","clientWidth","clientX","getElementViewLeft","seek","parseFloat","width","initVideoPreview","isPreViewShow","isTimeTipsShow","isMouseHoverPbar","mouseHandler","bind","thumbMove","thumbUp","removeEventListener","volumeEle","volumeBarWrapWrap","volumeBarWrap","volumeicon","switchVolumeIcon","volume","volumeMove","volumeUp","muted","hideTime","hideController","clearTimeout","played","closeSetting","closeComment","settingHTML","settingIcon","settingBox","mask","original","settingEvent","openSetting","showdan","loopEle","loopToggle","checked","showDanEle","showDanToggle","show","hide","speed","speedItem","_i2","playbackRate","dataset","danmakuBar","danmakuBarWrapWrap","danmakuBarWrap","danmakuSettingBox","danmakuMove","danmakuUp","commentInput","commentIcon","commentBox","commentSettingIcon","commentSettingBox","commentSendIcon","closeCommentSetting","toggleCommentSetting","disableHide","commentFocusTimeout","openComment","querySelector","fill","value","sendComment","blur","replace","text","color","keyCode","resize","fullscreenElement","mozFullScreenElement","webkitFullscreenElement","cancelFullScreen","mozCancelFullScreen","webkitCancelFullScreen","requestFullscreen","mozRequestFullScreen","webkitRequestFullscreen","webkitEnterFullscreen","handleKeyDown","tag","activeElement","tagName","toUpperCase","editable","getAttribute","preventDefault","hotkey","clientRect","getBoundingClientRect","menuLeft","left","menuTop","clientY","top","offsetHeight","bottom","switchQuality","screenshot","camareIcon","canvas","videoWidth","videoHeight","getContext","drawImage","href","toDataURL","download","initVideo","Math","max","min","ended","nonotice","nostorage","isNaN","setItem","toFixed","push","danmakuAPI","poster","pic","src","url","reload","_this2","exec","Hls","isSupported","hls","loadSource","attachMedia","flvjs","flvPlayer","createPlayer","attachMediaElement","load","buffered","end","danIndex","_this3","switchingQuality","videoHTML","videoEle","DOMParser","parseFromString","body","firstChild","parent","insertBefore","getElementsByTagName","prevVideo","removeChild","timeTips","_this4","cumulativeOffset","offsetTop","offsetLeft","offsetParent","px","tx","previewWrapper","previewTime","parseInt","innerText","setPreview","setPreviewSourceAndFrame","timeTipsDisplay","previewDispaly","_this5","previewVideo","previewCanvas","preload","w","h","bindPreviewEvent","_ref","_this6","previewNumber","generPreviewImage","number","arguments","undefined","noticeEle","noticeTime","second","add0","num","sec","actualLeft","current","elementScrollLeft","scrollLeft","documentElement","test","navigator","userAgent","defaultApiBackend","defaultOption","language","browserLanguage","toLowerCase","contextmenu","link","defaultKey","SendXMLHttpRequest","data","success","fail","xhr","XMLHttpRequest","onreadystatechange","readyState","status","response","JSON","parse","responseText","code","open","stringify","endpoint","danmakuData","alert","read","tranTxt","zh-cn","Danmaku is loading","Top","Bottom","Rolling","Input danmaku, hit Enter","About author","DPlayer feedback","About DPlayer","Loop","Speed","Opacity for danmaku","Normal","Please input danmaku content!","Set danmaku color","Set danmaku type","Danmaku","This video fails to load","Switching to","Switched to","zh-tw","svg","html","videos","logo","danmakumargin","margin","qualityList","contextmenuList","result","_typeof","Symbol","iterator","constructor","options","danTunnel","dan","showing","_opacity","apiurl","endpoints","slice","_readAllEndpoints","results","concat","apply","sort","a","b","frame","newAPI","clear","readCount","err","player","author","splice","htmlEncode","border","draw","item","items","itemHeight","danWidth","danHeight","itemY","danItemRight","ele","eleWidth","eleRight","danSpeed","getTunnel","tmp","_ret","v","j","danRight","toString","docFragment","createDocumentFragment","itemWidth","_measure","transform","context","measureStyle","getComputedStyle","font","getPropertyValue","measureText","str"],"mappings":"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","file":"DPlayer.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"DPlayer\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"DPlayer\"] = factory();\n\telse\n\t\troot[\"DPlayer\"] = factory();\n})(this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"DPlayer\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"DPlayer\"] = factory();\n\telse\n\t\troot[\"DPlayer\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"/\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 1);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar svgSource = {\n 'play': [\n '0 0 16 32',\n 'M15.552 15.168q0.448 0.32 0.448 0.832 0 0.448-0.448 0.768l-13.696 8.512q-0.768 0.512-1.312 0.192t-0.544-1.28v-16.448q0-0.96 0.544-1.28t1.312 0.192z'\n ],\n 'pause': [\n '0 0 17 32',\n 'M14.080 4.8q2.88 0 2.88 2.048v18.24q0 2.112-2.88 2.112t-2.88-2.112v-18.24q0-2.048 2.88-2.048zM2.88 4.8q2.88 0 2.88 2.048v18.24q0 2.112-2.88 2.112t-2.88-2.112v-18.24q0-2.048 2.88-2.048z'\n ],\n 'volume-up': [\n '0 0 21 32',\n 'M13.728 6.272v19.456q0 0.448-0.352 0.8t-0.8 0.32-0.8-0.32l-5.952-5.952h-4.672q-0.48 0-0.8-0.352t-0.352-0.8v-6.848q0-0.48 0.352-0.8t0.8-0.352h4.672l5.952-5.952q0.32-0.32 0.8-0.32t0.8 0.32 0.352 0.8zM20.576 16q0 1.344-0.768 2.528t-2.016 1.664q-0.16 0.096-0.448 0.096-0.448 0-0.8-0.32t-0.32-0.832q0-0.384 0.192-0.64t0.544-0.448 0.608-0.384 0.512-0.64 0.192-1.024-0.192-1.024-0.512-0.64-0.608-0.384-0.544-0.448-0.192-0.64q0-0.48 0.32-0.832t0.8-0.32q0.288 0 0.448 0.096 1.248 0.48 2.016 1.664t0.768 2.528zM25.152 16q0 2.72-1.536 5.056t-4 3.36q-0.256 0.096-0.448 0.096-0.48 0-0.832-0.352t-0.32-0.8q0-0.704 0.672-1.056 1.024-0.512 1.376-0.8 1.312-0.96 2.048-2.4t0.736-3.104-0.736-3.104-2.048-2.4q-0.352-0.288-1.376-0.8-0.672-0.352-0.672-1.056 0-0.448 0.32-0.8t0.8-0.352q0.224 0 0.48 0.096 2.496 1.056 4 3.36t1.536 5.056zM29.728 16q0 4.096-2.272 7.552t-6.048 5.056q-0.224 0.096-0.448 0.096-0.48 0-0.832-0.352t-0.32-0.8q0-0.64 0.704-1.056 0.128-0.064 0.384-0.192t0.416-0.192q0.8-0.448 1.44-0.896 2.208-1.632 3.456-4.064t1.216-5.152-1.216-5.152-3.456-4.064q-0.64-0.448-1.44-0.896-0.128-0.096-0.416-0.192t-0.384-0.192q-0.704-0.416-0.704-1.056 0-0.448 0.32-0.8t0.832-0.352q0.224 0 0.448 0.096 3.776 1.632 6.048 5.056t2.272 7.552z'\n ],\n 'volume-down': [\n '0 0 21 32',\n 'M13.728 6.272v19.456q0 0.448-0.352 0.8t-0.8 0.32-0.8-0.32l-5.952-5.952h-4.672q-0.48 0-0.8-0.352t-0.352-0.8v-6.848q0-0.48 0.352-0.8t0.8-0.352h4.672l5.952-5.952q0.32-0.32 0.8-0.32t0.8 0.32 0.352 0.8zM20.576 16q0 1.344-0.768 2.528t-2.016 1.664q-0.16 0.096-0.448 0.096-0.448 0-0.8-0.32t-0.32-0.832q0-0.384 0.192-0.64t0.544-0.448 0.608-0.384 0.512-0.64 0.192-1.024-0.192-1.024-0.512-0.64-0.608-0.384-0.544-0.448-0.192-0.64q0-0.48 0.32-0.832t0.8-0.32q0.288 0 0.448 0.096 1.248 0.48 2.016 1.664t0.768 2.528z'\n ],\n 'volume-off': [\n '0 0 21 32',\n 'M13.728 6.272v19.456q0 0.448-0.352 0.8t-0.8 0.32-0.8-0.32l-5.952-5.952h-4.672q-0.48 0-0.8-0.352t-0.352-0.8v-6.848q0-0.48 0.352-0.8t0.8-0.352h4.672l5.952-5.952q0.32-0.32 0.8-0.32t0.8 0.32 0.352 0.8z'\n ],\n 'loop': [\n '0 0 32 32',\n 'M1.882 16.941c0 4.152 3.221 7.529 7.177 7.529v1.882c-4.996 0-9.060-4.222-9.060-9.412s4.064-9.412 9.060-9.412h7.96l-3.098-3.098 1.331-1.331 5.372 5.37-5.37 5.372-1.333-1.333 3.1-3.098h-7.962c-3.957 0-7.177 3.377-7.177 7.529zM22.94 7.529v1.882c3.957 0 7.177 3.377 7.177 7.529s-3.221 7.529-7.177 7.529h-7.962l3.098-3.098-1.331-1.331-5.37 5.37 5.372 5.372 1.331-1.331-3.1-3.1h7.96c4.998 0 9.062-4.222 9.062-9.412s-4.064-9.412-9.060-9.412z'\n ],\n 'full': [\n '0 0 32 33',\n 'M6.667 28h-5.333c-0.8 0-1.333-0.533-1.333-1.333v-5.333c0-0.8 0.533-1.333 1.333-1.333s1.333 0.533 1.333 1.333v4h4c0.8 0 1.333 0.533 1.333 1.333s-0.533 1.333-1.333 1.333zM30.667 28h-5.333c-0.8 0-1.333-0.533-1.333-1.333s0.533-1.333 1.333-1.333h4v-4c0-0.8 0.533-1.333 1.333-1.333s1.333 0.533 1.333 1.333v5.333c0 0.8-0.533 1.333-1.333 1.333zM30.667 12c-0.8 0-1.333-0.533-1.333-1.333v-4h-4c-0.8 0-1.333-0.533-1.333-1.333s0.533-1.333 1.333-1.333h5.333c0.8 0 1.333 0.533 1.333 1.333v5.333c0 0.8-0.533 1.333-1.333 1.333zM1.333 12c-0.8 0-1.333-0.533-1.333-1.333v-5.333c0-0.8 0.533-1.333 1.333-1.333h5.333c0.8 0 1.333 0.533 1.333 1.333s-0.533 1.333-1.333 1.333h-4v4c0 0.8-0.533 1.333-1.333 1.333z'\n ],\n 'full-in': [\n '0 0 32 33',\n 'M24.965 24.38h-18.132c-1.366 0-2.478-1.113-2.478-2.478v-11.806c0-1.364 1.111-2.478 2.478-2.478h18.132c1.366 0 2.478 1.113 2.478 2.478v11.806c0 1.364-1.11 2.478-2.478 2.478zM6.833 10.097v11.806h18.134l-0.002-11.806h-18.132zM2.478 28.928h5.952c0.684 0 1.238-0.554 1.238-1.239 0-0.684-0.554-1.238-1.238-1.238h-5.952v-5.802c0-0.684-0.554-1.239-1.238-1.239s-1.239 0.556-1.239 1.239v5.802c0 1.365 1.111 2.478 2.478 2.478zM30.761 19.412c-0.684 0-1.238 0.554-1.238 1.238v5.801h-5.951c-0.686 0-1.239 0.554-1.239 1.238 0 0.686 0.554 1.239 1.239 1.239h5.951c1.366 0 2.478-1.111 2.478-2.478v-5.801c0-0.683-0.554-1.238-1.239-1.238zM0 5.55v5.802c0 0.683 0.554 1.238 1.238 1.238s1.238-0.555 1.238-1.238v-5.802h5.952c0.684 0 1.238-0.554 1.238-1.238s-0.554-1.238-1.238-1.238h-5.951c-1.366-0.001-2.478 1.111-2.478 2.476zM32 11.35v-5.801c0-1.365-1.11-2.478-2.478-2.478h-5.951c-0.686 0-1.239 0.554-1.239 1.238s0.554 1.238 1.239 1.238h5.951v5.801c0 0.683 0.554 1.237 1.238 1.237 0.686 0.002 1.239-0.553 1.239-1.236z'\n ],\n 'setting': [\n '0 0 32 28',\n 'M28.633 17.104c0.035 0.21 0.026 0.463-0.026 0.76s-0.14 0.598-0.262 0.904c-0.122 0.306-0.271 0.581-0.445 0.825s-0.367 0.419-0.576 0.524c-0.209 0.105-0.393 0.157-0.55 0.157s-0.332-0.035-0.524-0.105c-0.175-0.052-0.393-0.1-0.655-0.144s-0.528-0.052-0.799-0.026c-0.271 0.026-0.541 0.083-0.812 0.17s-0.502 0.236-0.694 0.445c-0.419 0.437-0.664 0.934-0.734 1.493s0.009 1.092 0.236 1.598c0.175 0.349 0.148 0.699-0.079 1.048-0.105 0.14-0.271 0.284-0.498 0.432s-0.476 0.284-0.747 0.406-0.555 0.218-0.851 0.288c-0.297 0.070-0.559 0.105-0.786 0.105-0.157 0-0.306-0.061-0.445-0.183s-0.236-0.253-0.288-0.393h-0.026c-0.192-0.541-0.52-1.009-0.982-1.402s-1-0.589-1.611-0.589c-0.594 0-1.131 0.197-1.611 0.589s-0.816 0.851-1.009 1.375c-0.087 0.21-0.218 0.362-0.393 0.458s-0.367 0.144-0.576 0.144c-0.244 0-0.52-0.044-0.825-0.131s-0.611-0.197-0.917-0.327c-0.306-0.131-0.581-0.284-0.825-0.458s-0.428-0.349-0.55-0.524c-0.087-0.122-0.135-0.266-0.144-0.432s0.057-0.397 0.197-0.694c0.192-0.402 0.266-0.86 0.223-1.375s-0.266-0.991-0.668-1.428c-0.244-0.262-0.541-0.432-0.891-0.511s-0.681-0.109-0.995-0.092c-0.367 0.017-0.742 0.087-1.127 0.21-0.244 0.070-0.489 0.052-0.734-0.052-0.192-0.070-0.371-0.231-0.537-0.485s-0.314-0.533-0.445-0.838c-0.131-0.306-0.231-0.62-0.301-0.943s-0.087-0.59-0.052-0.799c0.052-0.384 0.227-0.629 0.524-0.734 0.524-0.21 0.995-0.555 1.415-1.035s0.629-1.017 0.629-1.611c0-0.611-0.21-1.144-0.629-1.598s-0.891-0.786-1.415-0.996c-0.157-0.052-0.288-0.179-0.393-0.38s-0.157-0.406-0.157-0.616c0-0.227 0.035-0.48 0.105-0.76s0.162-0.55 0.275-0.812 0.244-0.502 0.393-0.72c0.148-0.218 0.31-0.38 0.485-0.485 0.14-0.087 0.275-0.122 0.406-0.105s0.275 0.052 0.432 0.105c0.524 0.21 1.070 0.275 1.637 0.197s1.070-0.327 1.506-0.747c0.21-0.209 0.362-0.467 0.458-0.773s0.157-0.607 0.183-0.904c0.026-0.297 0.026-0.568 0-0.812s-0.048-0.419-0.065-0.524c-0.035-0.105-0.066-0.227-0.092-0.367s-0.013-0.262 0.039-0.367c0.105-0.244 0.293-0.458 0.563-0.642s0.563-0.336 0.878-0.458c0.314-0.122 0.62-0.214 0.917-0.275s0.533-0.092 0.707-0.092c0.227 0 0.406 0.074 0.537 0.223s0.223 0.301 0.275 0.458c0.192 0.471 0.507 0.886 0.943 1.244s0.952 0.537 1.546 0.537c0.611 0 1.153-0.17 1.624-0.511s0.803-0.773 0.996-1.297c0.070-0.14 0.179-0.284 0.327-0.432s0.301-0.223 0.458-0.223c0.244 0 0.511 0.035 0.799 0.105s0.572 0.166 0.851 0.288c0.279 0.122 0.537 0.279 0.773 0.472s0.423 0.402 0.563 0.629c0.087 0.14 0.113 0.293 0.079 0.458s-0.070 0.284-0.105 0.354c-0.227 0.506-0.297 1.039-0.21 1.598s0.341 1.048 0.76 1.467c0.419 0.419 0.934 0.651 1.546 0.694s1.179-0.057 1.703-0.301c0.14-0.087 0.31-0.122 0.511-0.105s0.371 0.096 0.511 0.236c0.262 0.244 0.493 0.616 0.694 1.113s0.336 1 0.406 1.506c0.035 0.297-0.013 0.528-0.144 0.694s-0.266 0.275-0.406 0.327c-0.542 0.192-1.004 0.528-1.388 1.009s-0.576 1.026-0.576 1.637c0 0.594 0.162 1.113 0.485 1.559s0.747 0.764 1.27 0.956c0.122 0.070 0.227 0.14 0.314 0.21 0.192 0.157 0.323 0.358 0.393 0.602v0zM16.451 19.462c0.786 0 1.528-0.149 2.227-0.445s1.305-0.707 1.821-1.231c0.515-0.524 0.921-1.131 1.218-1.821s0.445-1.428 0.445-2.214c0-0.786-0.148-1.524-0.445-2.214s-0.703-1.292-1.218-1.808c-0.515-0.515-1.122-0.921-1.821-1.218s-1.441-0.445-2.227-0.445c-0.786 0-1.524 0.148-2.214 0.445s-1.292 0.703-1.808 1.218c-0.515 0.515-0.921 1.118-1.218 1.808s-0.445 1.428-0.445 2.214c0 0.786 0.149 1.524 0.445 2.214s0.703 1.297 1.218 1.821c0.515 0.524 1.118 0.934 1.808 1.231s1.428 0.445 2.214 0.445v0z'\n ],\n 'right': [\n '0 0 32 32',\n 'M22 16l-10.105-10.6-1.895 1.987 8.211 8.613-8.211 8.612 1.895 1.988 8.211-8.613z'\n ],\n 'comment': [\n '0 0 32 32',\n 'M27.128 0.38h-22.553c-2.336 0-4.229 1.825-4.229 4.076v16.273c0 2.251 1.893 4.076 4.229 4.076h4.229v-2.685h8.403l-8.784 8.072 1.566 1.44 7.429-6.827h9.71c2.335 0 4.229-1.825 4.229-4.076v-16.273c0-2.252-1.894-4.076-4.229-4.076zM28.538 19.403c0 1.5-1.262 2.717-2.819 2.717h-8.36l-0.076-0.070-0.076 0.070h-11.223c-1.557 0-2.819-1.217-2.819-2.717v-13.589c0-1.501 1.262-2.718 2.819-2.718h19.734c1.557 0 2.819-0.141 2.819 1.359v14.947zM9.206 10.557c-1.222 0-2.215 0.911-2.215 2.036s0.992 2.035 2.215 2.035c1.224 0 2.216-0.911 2.216-2.035s-0.992-2.036-2.216-2.036zM22.496 10.557c-1.224 0-2.215 0.911-2.215 2.036s0.991 2.035 2.215 2.035c1.224 0 2.215-0.911 2.215-2.035s-0.991-2.036-2.215-2.036zM15.852 10.557c-1.224 0-2.215 0.911-2.215 2.036s0.991 2.035 2.215 2.035c1.222 0 2.215-0.911 2.215-2.035s-0.992-2.036-2.215-2.036z'\n ],\n 'comment-off': [\n '0 0 32 32',\n 'M27.090 0.131h-22.731c-2.354 0-4.262 1.839-4.262 4.109v16.401c0 2.269 1.908 4.109 4.262 4.109h4.262v-2.706h8.469l-8.853 8.135 1.579 1.451 7.487-6.88h9.787c2.353 0 4.262-1.84 4.262-4.109v-16.401c0-2.27-1.909-4.109-4.262-4.109v0zM28.511 19.304c0 1.512-1.272 2.738-2.841 2.738h-8.425l-0.076-0.070-0.076 0.070h-11.311c-1.569 0-2.841-1.226-2.841-2.738v-13.696c0-1.513 1.272-2.739 2.841-2.739h19.889c1.569 0 2.841-0.142 2.841 1.37v15.064z'\n ],\n 'send': [\n '0 0 32 32',\n 'M13.725 30l3.9-5.325-3.9-1.125v6.45zM0 17.5l11.050 3.35 13.6-11.55-10.55 12.425 11.8 3.65 6.1-23.375-32 15.5z'\n ],\n 'menu': [\n '0 0 22 32',\n 'M20.8 14.4q0.704 0 1.152 0.48t0.448 1.12-0.48 1.12-1.12 0.48h-19.2q-0.64 0-1.12-0.48t-0.48-1.12 0.448-1.12 1.152-0.48h19.2zM1.6 11.2q-0.64 0-1.12-0.48t-0.48-1.12 0.448-1.12 1.152-0.48h19.2q0.704 0 1.152 0.48t0.448 1.12-0.48 1.12-1.12 0.48h-19.2zM20.8 20.8q0.704 0 1.152 0.48t0.448 1.12-0.48 1.12-1.12 0.48h-19.2q-0.64 0-1.12-0.48t-0.48-1.12 0.448-1.12 1.152-0.48h19.2z'\n ],\n 'camera': [\n '0 0 32 32',\n 'M16 23c-3.309 0-6-2.691-6-6s2.691-6 6-6 6 2.691 6 6-2.691 6-6 6zM16 13c-2.206 0-4 1.794-4 4s1.794 4 4 4c2.206 0 4-1.794 4-4s-1.794-4-4-4zM27 28h-22c-1.654 0-3-1.346-3-3v-16c0-1.654 1.346-3 3-3h3c0.552 0 1 0.448 1 1s-0.448 1-1 1h-3c-0.551 0-1 0.449-1 1v16c0 0.552 0.449 1 1 1h22c0.552 0 1-0.448 1-1v-16c0-0.551-0.448-1-1-1h-11c-0.552 0-1-0.448-1-1s0.448-1 1-1h11c1.654 0 3 1.346 3 3v16c0 1.654-1.346 3-3 3zM24 10.5c0 0.828 0.672 1.5 1.5 1.5s1.5-0.672 1.5-1.5c0-0.828-0.672-1.5-1.5-1.5s-1.5 0.672-1.5 1.5zM15 4c0 0.552-0.448 1-1 1h-4c-0.552 0-1-0.448-1-1v0c0-0.552 0.448-1 1-1h4c0.552 0 1 0.448 1 1v0z'\n ]\n};\nmodule.exports = function (type) {\n return ' \\n';\n};\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nconsole.log('\\n' + ' %c DPlayer ' + \"1.7.0\" + ' %c http://dplayer.js.org ' + '\\n' + '\\n', 'color: #fadfa3; background: #030307; padding:5px 0;', 'background: #fadfa3; padding:5px 0;');\nmodule.exports = __webpack_require__(2);\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if ('value' in descriptor)\n descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function (Constructor, protoProps, staticProps) {\n if (protoProps)\n defineProperties(Constructor.prototype, protoProps);\n if (staticProps)\n defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n__webpack_require__(3);\nvar _utils = __webpack_require__(4);\nvar _utils2 = _interopRequireDefault(_utils);\nvar _svg = __webpack_require__(0);\nvar _svg2 = _interopRequireDefault(_svg);\nvar _option = __webpack_require__(5);\nvar _option2 = _interopRequireDefault(_option);\nvar _i18n = __webpack_require__(7);\nvar _i18n2 = _interopRequireDefault(_i18n);\nvar _html = __webpack_require__(8);\nvar _html2 = _interopRequireDefault(_html);\nvar _danmaku = __webpack_require__(9);\nvar _danmaku2 = _interopRequireDefault(_danmaku);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError('Cannot call a class as a function');\n }\n}\nvar index = 0;\nvar DPlayer = function () {\n function DPlayer(option) {\n var _this = this;\n _classCallCheck(this, DPlayer);\n this.option = (0, _option2.default)(option);\n this.option.element.classList.add('dplayer');\n if (this.option.video.quality) {\n this.qualityIndex = this.option.video.defaultQuality;\n this.quality = this.option.video.quality[this.option.video.defaultQuality];\n }\n this.tran = new _i18n2.default(this.option.lang).tran;\n var eventTypes = [\n 'play',\n 'pause',\n 'canplay',\n 'playing',\n 'ended',\n 'error'\n ];\n this.event = {};\n for (var i = 0; i < eventTypes.length; i++) {\n this.event[eventTypes[i]] = [];\n }\n this.trigger = function (type) {\n for (var _i = 0; _i < _this.event[type].length; _i++) {\n _this.event[type][_i]();\n }\n };\n this.element = this.option.element;\n if (!this.option.danmaku) {\n this.element.classList.add('dplayer-no-danmaku');\n }\n if (_utils.isMobile) {\n this.element.classList.add('dplayer-mobile');\n }\n this.element.innerHTML = _html2.default.main(option, index, this.tran);\n var bar = {};\n bar.volumeBar = this.element.getElementsByClassName('dplayer-volume-bar-inner')[0];\n bar.playedBar = this.element.getElementsByClassName('dplayer-played')[0];\n bar.loadedBar = this.element.getElementsByClassName('dplayer-loaded')[0];\n var pbar = this.element.getElementsByClassName('dplayer-bar-wrap')[0];\n var pbarTimeTips = this.element.getElementsByClassName('dplayer-bar-time')[0];\n var barWidth = void 0;\n this.updateBar = function (type, percentage, direction) {\n percentage = percentage > 0 ? percentage : 0;\n percentage = percentage < 1 ? percentage : 1;\n bar[type + 'Bar'].style[direction] = percentage * 100 + '%';\n };\n document.addEventListener('click', function () {\n _this.focus = false;\n }, true);\n this.element.addEventListener('click', function () {\n _this.focus = true;\n }, true);\n if (this.option.danmaku) {\n this.danmaku = new _danmaku2.default({\n container: this.element.getElementsByClassName('dplayer-danmaku')[0],\n opacity: localStorage.getItem('danmaku-opacity') || 0.7,\n callback: function callback() {\n _this.element.getElementsByClassName('dplayer-danloading')[0].style.display = 'none';\n if (_this.option.autoplay && !_utils.isMobile) {\n _this.play();\n } else if (_utils.isMobile) {\n _this.pause();\n }\n },\n error: function error(msg) {\n _this.notice(msg);\n },\n apiBackend: this.option.apiBackend,\n borderColor: this.option.theme,\n height: this.arrow ? 24 : 30,\n time: function time() {\n return _this.video.currentTime;\n },\n api: {\n id: this.option.danmaku.id,\n address: this.option.danmaku.api,\n token: this.option.danmaku.token,\n maximum: this.option.danmaku.maximum,\n addition: this.option.danmaku.addition,\n user: this.option.danmaku.user\n }\n });\n }\n this.arrow = this.element.offsetWidth <= 500;\n if (this.arrow) {\n var arrowStyle = document.createElement('style');\n arrowStyle.innerHTML = '.dplayer .dplayer-danmaku{font-size:18px}';\n document.head.appendChild(arrowStyle);\n }\n this.video = this.element.getElementsByClassName('dplayer-video-current')[0];\n this.bezel = this.element.getElementsByClassName('dplayer-bezel-icon')[0];\n this.bezel.addEventListener('animationend', function () {\n _this.bezel.classList.remove('dplayer-bezel-transition');\n });\n this.playButton = this.element.getElementsByClassName('dplayer-play-icon')[0];\n this.paused = true;\n this.playButton.addEventListener('click', function () {\n _this.toggle();\n });\n var videoWrap = this.element.getElementsByClassName('dplayer-video-wrap')[0];\n var conMask = this.element.getElementsByClassName('dplayer-controller-mask')[0];\n if (!_utils.isMobile) {\n videoWrap.addEventListener('click', function () {\n _this.toggle();\n });\n conMask.addEventListener('click', function () {\n _this.toggle();\n });\n } else {\n var toggleController = function toggleController() {\n if (_this.element.classList.contains('dplayer-hide-controller')) {\n _this.element.classList.remove('dplayer-hide-controller');\n } else {\n _this.element.classList.add('dplayer-hide-controller');\n }\n };\n videoWrap.addEventListener('click', toggleController);\n conMask.addEventListener('click', toggleController);\n }\n var lastPlayPos = 0;\n var currentPlayPos = 0;\n var bufferingDetected = false;\n window.requestAnimationFrame = function () {\n return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function (callback) {\n window.setTimeout(callback, 1000 / 60);\n };\n }();\n var setCheckLoadingTime = function setCheckLoadingTime() {\n _this.checkLoading = setInterval(function () {\n currentPlayPos = _this.video.currentTime;\n if (!bufferingDetected && currentPlayPos < lastPlayPos + 0.01 && !_this.video.paused) {\n _this.element.classList.add('dplayer-loading');\n bufferingDetected = true;\n }\n if (bufferingDetected && currentPlayPos > lastPlayPos + 0.01 && !_this.video.paused) {\n _this.element.classList.remove('dplayer-loading');\n bufferingDetected = false;\n }\n lastPlayPos = currentPlayPos;\n }, 100);\n };\n var clearCheckLoadingTime = function clearCheckLoadingTime() {\n clearInterval(_this.checkLoading);\n };\n this.playedTime = false;\n this.animationFrame = function () {\n if (_this.playedTime) {\n _this.updateBar('played', _this.video.currentTime / _this.video.duration, 'width');\n _this.element.getElementsByClassName('dplayer-ptime')[0].innerHTML = _utils2.default.secondToTime(_this.video.currentTime);\n _this.trigger('playing');\n }\n window.requestAnimationFrame(_this.animationFrame);\n };\n window.requestAnimationFrame(this.animationFrame);\n this.setTime = function (type) {\n if (!type) {\n _this.playedTime = true;\n setCheckLoadingTime();\n } else {\n _this[type + 'Time'] = true;\n if (type === 'played') {\n setCheckLoadingTime();\n }\n }\n };\n this.clearTime = function (type) {\n if (!type) {\n _this.playedTime = false;\n clearCheckLoadingTime();\n } else {\n _this[type + 'Time'] = false;\n if (type === 'played') {\n clearCheckLoadingTime();\n }\n }\n };\n pbar.addEventListener('click', function (event) {\n var e = event || window.event;\n barWidth = pbar.clientWidth;\n var percentage = (e.clientX - _utils2.default.getElementViewLeft(pbar)) / barWidth;\n percentage = percentage > 0 ? percentage : 0;\n percentage = percentage < 1 ? percentage : 1;\n _this.updateBar('played', percentage, 'width');\n _this.seek(parseFloat(bar.playedBar.style.width) / 100 * _this.video.duration);\n });\n this.initVideoPreview();\n this.isPreViewShow = false;\n this.isTimeTipsShow = true;\n this.isMouseHoverPbar = false;\n this.mouseHandler = this.mouseHandler(pbar, pbarTimeTips).bind(this);\n pbar.addEventListener('mousemove', this.mouseHandler);\n pbar.addEventListener('mouseover', this.mouseHandler);\n pbar.addEventListener('mouseenter', this.mouseHandler);\n pbar.addEventListener('mouseout', this.mouseHandler);\n pbar.addEventListener('mouseleave', this.mouseHandler);\n var thumbMove = function thumbMove(event) {\n var e = event || window.event;\n var percentage = (e.clientX - _utils2.default.getElementViewLeft(pbar)) / barWidth;\n percentage = percentage > 0 ? percentage : 0;\n percentage = percentage < 1 ? percentage : 1;\n _this.updateBar('played', percentage, 'width');\n _this.element.getElementsByClassName('dplayer-ptime')[0].innerHTML = _utils2.default.secondToTime(percentage * _this.video.duration);\n };\n var thumbUp = function thumbUp() {\n document.removeEventListener('mouseup', thumbUp);\n document.removeEventListener('mousemove', thumbMove);\n _this.seek(parseFloat(bar.playedBar.style.width) / 100 * _this.video.duration);\n _this.setTime();\n };\n pbar.addEventListener('mousedown', function () {\n barWidth = pbar.clientWidth;\n _this.clearTime();\n document.addEventListener('mousemove', thumbMove);\n document.addEventListener('mouseup', thumbUp);\n });\n var volumeEle = this.element.getElementsByClassName('dplayer-volume')[0];\n var volumeBarWrapWrap = this.element.getElementsByClassName('dplayer-volume-bar-wrap')[0];\n var volumeBarWrap = this.element.getElementsByClassName('dplayer-volume-bar')[0];\n var volumeicon = this.element.getElementsByClassName('dplayer-volume-icon')[0];\n var vWidth = 35;\n this.switchVolumeIcon = function () {\n var volumeicon = _this.element.getElementsByClassName('dplayer-volume-icon')[0];\n if (_this.volume() >= 0.95) {\n volumeicon.innerHTML = (0, _svg2.default)('volume-up');\n } else if (_this.volume() > 0) {\n volumeicon.innerHTML = (0, _svg2.default)('volume-down');\n } else {\n volumeicon.innerHTML = (0, _svg2.default)('volume-off');\n }\n };\n var volumeMove = function volumeMove(event) {\n var e = event || window.event;\n var percentage = (e.clientX - _utils2.default.getElementViewLeft(volumeBarWrap) - 5.5) / vWidth;\n _this.volume(percentage);\n };\n var volumeUp = function volumeUp() {\n document.removeEventListener('mouseup', volumeUp);\n document.removeEventListener('mousemove', volumeMove);\n volumeEle.classList.remove('dplayer-volume-active');\n };\n volumeBarWrapWrap.addEventListener('click', function (event) {\n var e = event || window.event;\n var percentage = (e.clientX - _utils2.default.getElementViewLeft(volumeBarWrap) - 5.5) / vWidth;\n _this.volume(percentage);\n });\n volumeBarWrapWrap.addEventListener('mousedown', function () {\n document.addEventListener('mousemove', volumeMove);\n document.addEventListener('mouseup', volumeUp);\n volumeEle.classList.add('dplayer-volume-active');\n });\n volumeicon.addEventListener('click', function () {\n if (_this.video.muted) {\n _this.video.muted = false;\n _this.switchVolumeIcon();\n _this.updateBar('volume', _this.volume(), 'width');\n } else {\n _this.video.muted = true;\n volumeicon.innerHTML = (0, _svg2.default)('volume-off');\n _this.updateBar('volume', 0, 'width');\n }\n });\n this.hideTime = 0;\n var hideController = function hideController() {\n _this.element.classList.remove('dplayer-hide-controller');\n clearTimeout(_this.hideTime);\n _this.hideTime = setTimeout(function () {\n if (_this.video.played.length) {\n _this.element.classList.add('dplayer-hide-controller');\n closeSetting();\n closeComment();\n }\n }, 2000);\n };\n if (!_utils.isMobile) {\n this.element.addEventListener('mousemove', hideController);\n this.element.addEventListener('click', hideController);\n }\n var settingHTML = _html2.default.setting(this.tran);\n var settingIcon = this.element.getElementsByClassName('dplayer-setting-icon')[0];\n var settingBox = this.element.getElementsByClassName('dplayer-setting-box')[0];\n var mask = this.element.getElementsByClassName('dplayer-mask')[0];\n settingBox.innerHTML = settingHTML.original;\n var closeSetting = function closeSetting() {\n if (settingBox.classList.contains('dplayer-setting-box-open')) {\n settingBox.classList.remove('dplayer-setting-box-open');\n mask.classList.remove('dplayer-mask-show');\n setTimeout(function () {\n settingBox.classList.remove('dplayer-setting-box-narrow');\n settingBox.innerHTML = settingHTML.original;\n settingEvent();\n }, 300);\n }\n };\n var openSetting = function openSetting() {\n settingBox.classList.add('dplayer-setting-box-open');\n mask.classList.add('dplayer-mask-show');\n };\n mask.addEventListener('click', function () {\n closeSetting();\n });\n settingIcon.addEventListener('click', function () {\n openSetting();\n });\n this.loop = this.option.loop;\n var showdan = true;\n var settingEvent = function settingEvent() {\n var loopEle = _this.element.getElementsByClassName('dplayer-setting-loop')[0];\n var loopToggle = loopEle.getElementsByClassName('dplayer-toggle-setting-input')[0];\n loopToggle.checked = _this.loop;\n loopEle.addEventListener('click', function () {\n loopToggle.checked = !loopToggle.checked;\n if (loopToggle.checked) {\n _this.loop = true;\n } else {\n _this.loop = false;\n }\n closeSetting();\n });\n var showDanEle = _this.element.getElementsByClassName('dplayer-setting-showdan')[0];\n var showDanToggle = showDanEle.getElementsByClassName('dplayer-showdan-setting-input')[0];\n showDanToggle.checked = showdan;\n showDanEle.addEventListener('click', function () {\n showDanToggle.checked = !showDanToggle.checked;\n if (showDanToggle.checked) {\n showdan = true;\n if (!_this.paused) {\n _this.danmaku.show();\n }\n } else {\n showdan = false;\n _this.danmaku.hide();\n }\n closeSetting();\n });\n var speedEle = _this.element.getElementsByClassName('dplayer-setting-speed')[0];\n speedEle.addEventListener('click', function () {\n settingBox.classList.add('dplayer-setting-box-narrow');\n settingBox.innerHTML = settingHTML.speed;\n var speedItem = settingBox.getElementsByClassName('dplayer-setting-speed-item');\n var _loop = function _loop(_i2) {\n speedItem[_i2].addEventListener('click', function () {\n _this.video.playbackRate = speedItem[_i2].dataset.speed;\n closeSetting();\n });\n };\n for (var _i2 = 0; _i2 < speedItem.length; _i2++) {\n _loop(_i2);\n }\n });\n if (_this.danmaku) {\n bar.danmakuBar = _this.element.getElementsByClassName('dplayer-danmaku-bar-inner')[0];\n var danmakuBarWrapWrap = _this.element.getElementsByClassName('dplayer-danmaku-bar-wrap')[0];\n var danmakuBarWrap = _this.element.getElementsByClassName('dplayer-danmaku-bar')[0];\n var danmakuSettingBox = _this.element.getElementsByClassName('dplayer-setting-danmaku')[0];\n var dWidth = 130;\n _this.updateBar('danmaku', _this.danmaku.opacity(), 'width');\n var danmakuMove = function danmakuMove(event) {\n var e = event || window.event;\n var percentage = (e.clientX - _utils2.default.getElementViewLeft(danmakuBarWrap)) / dWidth;\n percentage = percentage > 0 ? percentage : 0;\n percentage = percentage < 1 ? percentage : 1;\n _this.updateBar('danmaku', percentage, 'width');\n _this.danmaku.opacity(percentage);\n };\n var danmakuUp = function danmakuUp() {\n document.removeEventListener('mouseup', danmakuUp);\n document.removeEventListener('mousemove', danmakuMove);\n danmakuSettingBox.classList.remove('dplayer-setting-danmaku-active');\n };\n danmakuBarWrapWrap.addEventListener('click', function (event) {\n var e = event || window.event;\n var percentage = (e.clientX - _utils2.default.getElementViewLeft(danmakuBarWrap)) / dWidth;\n percentage = percentage > 0 ? percentage : 0;\n percentage = percentage < 1 ? percentage : 1;\n _this.updateBar('danmaku', percentage, 'width');\n _this.danmaku.opacity(percentage);\n });\n danmakuBarWrapWrap.addEventListener('mousedown', function () {\n document.addEventListener('mousemove', danmakuMove);\n document.addEventListener('mouseup', danmakuUp);\n danmakuSettingBox.classList.add('dplayer-setting-danmaku-active');\n });\n }\n };\n settingEvent();\n if (this.video.duration !== 1) {\n this.element.getElementsByClassName('dplayer-dtime')[0].innerHTML = this.video.duration ? _utils2.default.secondToTime(this.video.duration) : '00:00';\n }\n if (!this.danmaku) {\n if (this.option.autoplay && !_utils.isMobile) {\n this.play();\n } else if (_utils.isMobile) {\n this.pause();\n }\n }\n var commentInput = this.element.getElementsByClassName('dplayer-comment-input')[0];\n var commentIcon = this.element.getElementsByClassName('dplayer-comment-icon')[0];\n var commentBox = this.element.getElementsByClassName('dplayer-comment-box')[0];\n var commentSettingIcon = this.element.getElementsByClassName('dplayer-comment-setting-icon')[0];\n var commentSettingBox = this.element.getElementsByClassName('dplayer-comment-setting-box')[0];\n var commentSendIcon = this.element.getElementsByClassName('dplayer-send-icon')[0];\n var closeCommentSetting = function closeCommentSetting() {\n if (commentSettingBox.classList.contains('dplayer-comment-setting-open')) {\n commentSettingBox.classList.remove('dplayer-comment-setting-open');\n }\n };\n var toggleCommentSetting = function toggleCommentSetting() {\n if (commentSettingBox.classList.contains('dplayer-comment-setting-open')) {\n commentSettingBox.classList.remove('dplayer-comment-setting-open');\n } else {\n commentSettingBox.classList.add('dplayer-comment-setting-open');\n }\n };\n var disableHide = 0;\n var commentFocusTimeout = 0;\n var closeComment = function closeComment() {\n if (!commentBox.classList.contains('dplayer-comment-box-open')) {\n return;\n }\n commentBox.classList.remove('dplayer-comment-box-open');\n mask.classList.remove('dplayer-mask-show');\n _this.element.classList.remove('dplayer-show-controller');\n clearInterval(disableHide);\n clearTimeout(commentFocusTimeout);\n closeCommentSetting();\n };\n var openComment = function openComment() {\n if (commentBox.classList.contains('dplayer-comment-box-open')) {\n return;\n }\n commentBox.classList.add('dplayer-comment-box-open');\n mask.classList.add('dplayer-mask-show');\n _this.element.classList.add('dplayer-show-controller');\n disableHide = setInterval(function () {\n clearTimeout(_this.hideTime);\n }, 1000);\n commentFocusTimeout = setTimeout(function () {\n commentInput.focus();\n }, 300);\n };\n mask.addEventListener('click', function () {\n closeComment();\n });\n commentIcon.addEventListener('click', function () {\n openComment();\n });\n commentSettingIcon.addEventListener('click', function () {\n toggleCommentSetting();\n });\n this.element.getElementsByClassName('dplayer-comment-setting-color')[0].addEventListener('click', function () {\n var sele = _this.element.querySelector('input[name=\"dplayer-danmaku-color-${index}\"]:checked+span');\n if (sele) {\n commentSettingIcon.getElementsByClassName('dplayer-fill')[0].style.fill = _this.element.querySelector('input[name=\"dplayer-danmaku-color-${index}\"]:checked').value;\n }\n });\n var sendComment = function sendComment() {\n commentInput.blur();\n if (!commentInput.value.replace(/^\\s+|\\s+$/g, '')) {\n _this.notice(_this.tran('Please input danmaku content!'));\n return;\n }\n _this.danmaku.send({\n text: commentInput.value,\n color: _this.element.querySelector('.dplayer-comment-setting-color input:checked').value,\n type: _this.element.querySelector('.dplayer-comment-setting-type input:checked').value\n }, function () {\n commentInput.value = '';\n closeComment();\n });\n };\n commentInput.addEventListener('click', function () {\n closeCommentSetting();\n });\n commentInput.addEventListener('keydown', function (e) {\n var event = e || window.event;\n if (event.keyCode === 13) {\n sendComment();\n }\n });\n commentSendIcon.addEventListener('click', sendComment);\n this.element.addEventListener('fullscreenchange', function () {\n if (_this.danmaku) {\n _this.danmaku.resize();\n }\n });\n this.element.addEventListener('mozfullscreenchange', function () {\n if (_this.danmaku) {\n _this.danmaku.resize();\n }\n });\n this.element.addEventListener('webkitfullscreenchange', function () {\n if (_this.danmaku) {\n _this.danmaku.resize();\n }\n });\n this.element.getElementsByClassName('dplayer-full-icon')[0].addEventListener('click', function () {\n if (!document.fullscreenElement && !document.mozFullScreenElement && !document.webkitFullscreenElement) {\n if (_this.element.requestFullscreen) {\n _this.element.requestFullscreen();\n } else if (_this.element.mozRequestFullScreen) {\n _this.element.mozRequestFullScreen();\n } else if (_this.element.webkitRequestFullscreen) {\n _this.element.webkitRequestFullscreen();\n } else if (_this.video.webkitEnterFullscreen) {\n _this.video.webkitEnterFullscreen();\n }\n } else {\n if (document.cancelFullScreen) {\n document.cancelFullScreen();\n } else if (document.mozCancelFullScreen) {\n document.mozCancelFullScreen();\n } else if (document.webkitCancelFullScreen) {\n document.webkitCancelFullScreen();\n }\n }\n if (_this.danmaku) {\n _this.danmaku.resize();\n }\n });\n this.element.getElementsByClassName('dplayer-full-in-icon')[0].addEventListener('click', function () {\n if (_this.element.classList.contains('dplayer-fulled')) {\n _this.element.classList.remove('dplayer-fulled');\n } else {\n _this.element.classList.add('dplayer-fulled');\n if (_this.danmaku) {\n _this.danmaku.resize();\n }\n }\n });\n var handleKeyDown = function handleKeyDown(e) {\n if (_this.focus) {\n var tag = document.activeElement.tagName.toUpperCase();\n var editable = document.activeElement.getAttribute('contenteditable');\n if (tag !== 'INPUT' && tag !== 'TEXTAREA' && editable !== '' && editable !== 'true') {\n var event = e || window.event;\n var percentage = void 0;\n switch (event.keyCode) {\n case 32:\n event.preventDefault();\n _this.toggle();\n break;\n case 37:\n event.preventDefault();\n _this.seek(_this.video.currentTime - 5);\n hideController();\n break;\n case 39:\n event.preventDefault();\n _this.seek(_this.video.currentTime + 5);\n hideController();\n break;\n case 38:\n event.preventDefault();\n percentage = _this.volume() + 0.1;\n _this.volume(percentage);\n break;\n case 40:\n event.preventDefault();\n percentage = _this.volume() - 0.1;\n _this.volume(percentage);\n break;\n }\n }\n }\n };\n if (this.option.hotkey) {\n document.addEventListener('keydown', handleKeyDown);\n }\n document.addEventListener('keydown', function (e) {\n var event = e || window.event;\n switch (event.keyCode) {\n case 27:\n if (_this.element.classList.contains('dplayer-fulled')) {\n _this.element.classList.remove('dplayer-fulled');\n if (_this.danmaku) {\n _this.danmaku.resize();\n }\n }\n break;\n }\n });\n var menu = this.element.getElementsByClassName('dplayer-menu')[0];\n this.element.addEventListener('contextmenu', function (e) {\n var event = e || window.event;\n event.preventDefault();\n menu.classList.add('dplayer-menu-show');\n var clientRect = _this.element.getBoundingClientRect();\n var menuLeft = event.clientX - clientRect.left;\n var menuTop = event.clientY - clientRect.top;\n if (menuLeft + menu.offsetWidth >= clientRect.width) {\n menu.style.right = clientRect.width - menuLeft + 'px';\n menu.style.left = 'initial';\n } else {\n menu.style.left = event.clientX - _this.element.getBoundingClientRect().left + 'px';\n menu.style.right = 'initial';\n }\n if (menuTop + menu.offsetHeight >= clientRect.height) {\n menu.style.bottom = clientRect.height - menuTop + 'px';\n menu.style.top = 'initial';\n } else {\n menu.style.top = event.clientY - _this.element.getBoundingClientRect().top + 'px';\n menu.style.bottom = 'initial';\n }\n mask.classList.add('dplayer-mask-show');\n mask.addEventListener('click', function () {\n mask.classList.remove('dplayer-mask-show');\n menu.classList.remove('dplayer-menu-show');\n });\n });\n if (this.option.video.quality) {\n this.element.getElementsByClassName('dplayer-quality-list')[0].addEventListener('click', function (e) {\n if (e.target.classList.contains('dplayer-quality-item')) {\n _this.switchQuality(e.target.dataset.index);\n }\n });\n }\n if (this.option.screenshot) {\n var camareIcon = this.element.getElementsByClassName('dplayer-camera-icon')[0];\n camareIcon.addEventListener('click', function () {\n var canvas = document.createElement('canvas');\n canvas.width = _this.video.videoWidth;\n canvas.height = _this.video.videoHeight;\n canvas.getContext('2d').drawImage(_this.video, 0, 0, canvas.width, canvas.height);\n camareIcon.href = canvas.toDataURL();\n camareIcon.download = 'DPlayer.png';\n });\n }\n this.initVideo(this.video, this.quality && this.quality.type || this.option.video.type);\n index++;\n }\n _createClass(DPlayer, [\n {\n key: 'seek',\n value: function seek(time) {\n time = Math.max(time, 0);\n if (this.video.duration) {\n time = Math.min(time, this.video.duration);\n }\n if (this.video.currentTime < time) {\n this.notice(this.tran('FF to') + ' ' + _utils2.default.secondToTime(time));\n } else if (this.video.currentTime > time) {\n this.notice(this.tran('REW to') + ' ' + _utils2.default.secondToTime(time));\n }\n this.video.currentTime = time;\n if (this.danmaku) {\n this.danmaku.seek();\n }\n this.updateBar('played', time / this.video.duration, 'width');\n }\n },\n {\n key: 'play',\n value: function play() {\n this.paused = false;\n if (this.video.paused) {\n this.bezel.innerHTML = (0, _svg2.default)('play');\n this.bezel.classList.add('dplayer-bezel-transition');\n }\n this.playButton.innerHTML = (0, _svg2.default)('pause');\n this.video.play();\n this.setTime();\n this.element.classList.add('dplayer-playing');\n if (this.danmaku) {\n this.danmaku.play();\n }\n this.trigger('play');\n }\n },\n {\n key: 'pause',\n value: function pause() {\n this.paused = true;\n this.element.classList.remove('dplayer-loading');\n if (!this.video.paused) {\n this.bezel.innerHTML = (0, _svg2.default)('pause');\n this.bezel.classList.add('dplayer-bezel-transition');\n }\n this.ended = false;\n this.playButton.innerHTML = (0, _svg2.default)('play');\n this.video.pause();\n this.clearTime();\n this.element.classList.remove('dplayer-playing');\n if (this.danmaku) {\n this.danmaku.pause();\n }\n this.trigger('pause');\n }\n },\n {\n key: 'volume',\n value: function volume(percentage, nonotice, nostorage) {\n percentage = parseFloat(percentage);\n if (!isNaN(percentage)) {\n percentage = percentage > 0 ? percentage : 0;\n percentage = percentage < 1 ? percentage : 1;\n this.updateBar('volume', percentage, 'width');\n if (!nostorage) {\n localStorage.setItem('dplayer-volume', percentage);\n }\n if (!nonotice) {\n this.notice(this.tran('Volume') + ' ' + (percentage * 100).toFixed(0) + '%');\n }\n this.video.volume = percentage;\n if (this.video.muted) {\n this.video.muted = false;\n }\n this.switchVolumeIcon();\n }\n return this.video.volume;\n }\n },\n {\n key: 'toggle',\n value: function toggle() {\n if (this.video.paused) {\n this.play();\n } else {\n this.pause();\n }\n }\n },\n {\n key: 'on',\n value: function on(event, callback) {\n if (typeof callback === 'function') {\n this.event[event].push(callback);\n }\n }\n },\n {\n key: 'switchVideo',\n value: function switchVideo(video, danmakuAPI) {\n this.video.poster = video.pic ? video.pic : '';\n this.video.src = video.url;\n this.pause();\n if (danmakuAPI) {\n this.element.getElementsByClassName('dplayer-danloading')[0].style.display = 'block';\n this.updateBar('played', 0, 'width');\n this.updateBar('loaded', 0, 'width');\n this.element.getElementsByClassName('dplayer-ptime')[0].innerHTML = '00:00';\n this.element.getElementsByClassName('dplayer-danmaku')[0].innerHTML = '';\n if (this.danmaku) {\n this.danmaku.reload({\n id: danmakuAPI.id,\n address: danmakuAPI.api,\n token: danmakuAPI.token,\n maximum: danmakuAPI.maximum,\n addition: danmakuAPI.addition,\n user: danmakuAPI.user\n });\n }\n }\n }\n },\n {\n key: 'initVideo',\n value: function initVideo(video, type) {\n var _this2 = this;\n this.type = type;\n if (this.type === 'auto') {\n if (/m3u8(#|\\?|$)/i.exec(video.src)) {\n this.type = 'hls';\n } else if (/.flv(#|\\?|$)/i.exec(video.src)) {\n this.type = 'flv';\n } else {\n this.type = 'normal';\n }\n }\n if (this.type === 'hls' && Hls.isSupported()) {\n var hls = new Hls();\n hls.loadSource(video.src);\n hls.attachMedia(video);\n }\n if (this.type === 'flv' && flvjs.isSupported()) {\n var flvPlayer = flvjs.createPlayer({\n type: 'flv',\n url: video.src\n });\n flvPlayer.attachMediaElement(video);\n flvPlayer.load();\n }\n video.addEventListener('durationchange', function () {\n if (video.duration !== 1) {\n _this2.element.getElementsByClassName('dplayer-dtime')[0].innerHTML = _utils2.default.secondToTime(video.duration);\n }\n });\n video.addEventListener('progress', function () {\n var percentage = video.buffered.length ? video.buffered.end(video.buffered.length - 1) / video.duration : 0;\n _this2.updateBar('loaded', percentage, 'width');\n });\n video.addEventListener('error', function () {\n _this2.tran && _this2.notice && _this2.notice(_this2.tran('This video fails to load'), -1);\n _this2.trigger && _this2.trigger('pause');\n });\n video.addEventListener('canplay', function () {\n _this2.trigger('canplay');\n });\n this.ended = false;\n video.addEventListener('ended', function () {\n _this2.updateBar('played', 1, 'width');\n if (!_this2.loop) {\n _this2.ended = true;\n _this2.pause();\n _this2.trigger('ended');\n } else {\n _this2.seek(0);\n video.play();\n }\n if (_this2.danmaku) {\n _this2.danmaku.danIndex = 0;\n }\n });\n video.addEventListener('play', function () {\n if (_this2.paused) {\n _this2.play();\n }\n });\n video.addEventListener('pause', function () {\n if (!_this2.paused) {\n _this2.pause();\n }\n });\n this.volume(localStorage.getItem('dplayer-volume') || this.option.volume, true, true);\n }\n },\n {\n key: 'switchQuality',\n value: function switchQuality(index) {\n var _this3 = this;\n if (this.qualityIndex === index || this.switchingQuality) {\n return;\n } else {\n this.qualityIndex = index;\n }\n this.switchingQuality = true;\n this.quality = this.option.video.quality[index];\n this.element.getElementsByClassName('dplayer-quality-icon')[0].innerHTML = this.quality.name;\n var paused = this.video.paused;\n this.video.pause();\n var videoHTML = _html2.default.video(false, null, this.option.screenshot, 'auto', this.quality.url);\n var videoEle = new DOMParser().parseFromString(videoHTML, 'text/html').body.firstChild;\n var parent = this.element.getElementsByClassName('dplayer-video-wrap')[0];\n parent.insertBefore(videoEle, parent.getElementsByTagName('div')[0]);\n this.prevVideo = this.video;\n this.video = videoEle;\n this.initVideo(this.video, this.quality.type || this.option.video.type);\n this.seek(this.prevVideo.currentTime);\n this.notice(this.tran('Switching to') + ' ' + this.quality.name + ' ' + this.tran('quality'), -1);\n this.video.addEventListener('canplay', function () {\n if (_this3.prevVideo) {\n if (_this3.video.currentTime !== _this3.prevVideo.currentTime) {\n _this3.seek(_this3.prevVideo.currentTime);\n return;\n }\n parent.removeChild(_this3.prevVideo);\n _this3.video.classList.add('dplayer-video-current');\n if (!paused) {\n _this3.video.play();\n }\n _this3.prevVideo = null;\n _this3.notice(_this3.tran('Switched to') + ' ' + _this3.quality.name + ' ' + _this3.tran('quality'));\n _this3.switchingQuality = false;\n }\n });\n }\n },\n {\n key: 'mouseHandler',\n value: function mouseHandler(pbar, timeTips) {\n var _this4 = this;\n var cumulativeOffset = function cumulativeOffset(element) {\n var top = 0, left = 0;\n do {\n top += element.offsetTop || 0;\n left += element.offsetLeft || 0;\n element = element.offsetParent;\n } while (element);\n return {\n top: top,\n left: left\n };\n };\n return function (e) {\n if (!_this4.video.duration) {\n return;\n }\n var clientX = e.clientX;\n var px = cumulativeOffset(pbar).left;\n var tx = clientX - px;\n var time = _this4.video.duration * (tx / pbar.offsetWidth);\n timeTips.style.left = tx - 20 + 'px';\n _this4.previewWrapper.style.left = tx - _this4.previewWrapper.offsetWidth / 2 + 'px';\n switch (e.type) {\n case 'mouseenter':\n case 'mouseover':\n case 'mousemove':\n _this4.isMouseHoverPbar = true;\n if (_this4.previewTime !== parseInt(time)) {\n timeTips.innerText = _utils2.default.secondToTime(time);\n _this4.previewTime = parseInt(time);\n _this4.setPreview && clearTimeout(_this4.setPreview);\n _this4.setPreview = setTimeout(function () {\n _this4.setPreviewSourceAndFrame({ time: parseInt(time) });\n }, 500);\n }\n _this4.timeTipsDisplay(true, timeTips);\n break;\n case 'mouseleave':\n case 'mouseout':\n _this4.isMouseHoverPbar = false;\n _this4.previewDispaly(false);\n _this4.timeTipsDisplay(false, timeTips);\n break;\n }\n };\n }\n },\n {\n key: 'timeTipsDisplay',\n value: function timeTipsDisplay(show, timeTips) {\n if (show) {\n if (this.isTimeTipsShow) {\n return;\n }\n timeTips.classList.remove('hidden');\n this.isTimeTipsShow = true;\n } else {\n if (!this.isTimeTipsShow) {\n return;\n }\n timeTips.classList.add('hidden');\n this.isTimeTipsShow = false;\n }\n }\n },\n {\n key: 'initVideoPreview',\n value: function initVideoPreview() {\n var _this5 = this;\n this.previewVideo = document.createElement('video');\n this.previewWrapper = this.element.getElementsByClassName('dplayer-bar-preview')[0];\n this.previewCanvas = this.element.getElementsByClassName('dplayer-bar-preview-canvas')[0];\n this.previewVideo.preload = 'metadata';\n var resize = function resize() {\n var w = _this5.element.offsetWidth / 4;\n var h = _this5.element.offsetHeight / 4;\n _this5.previewWrapper.style.width = w + 'px';\n _this5.previewWrapper.style.height = h + 'px';\n _this5.previewWrapper.style.top = -h + 2 + 'px';\n _this5.previewCanvas.width = w;\n _this5.previewCanvas.height = h;\n };\n resize();\n this.video.addEventListener('loadedmetadata', function () {\n resize();\n });\n this.setPreviewSourceAndFrame({\n url: this.video.src,\n time: 0\n });\n this.bindPreviewEvent();\n }\n },\n {\n key: 'setPreviewSourceAndFrame',\n value: function setPreviewSourceAndFrame(_ref) {\n var url = _ref.url, time = _ref.time;\n if (url) {\n this.previewVideo.src = url;\n }\n if (time) {\n this.previewVideo.currentTime = time;\n }\n }\n },\n {\n key: 'bindPreviewEvent',\n value: function bindPreviewEvent() {\n var _this6 = this;\n this.previewNumber = 0;\n this.previewVideo.addEventListener('seeked', function () {\n _this6.previewNumber += 1;\n _this6.generPreviewImage(_this6.previewNumber);\n });\n }\n },\n {\n key: 'generPreviewImage',\n value: function generPreviewImage(number) {\n if (number !== this.previewNumber) {\n return;\n }\n if (!this.isMouseHoverPbar) {\n return;\n }\n this.previewDispaly(true);\n if (!this.isPreViewShow) {\n return;\n }\n var ctx = this.previewCanvas.getContext('2d');\n ctx.drawImage(this.previewVideo, 0, 0, this.previewWrapper.offsetWidth, this.previewWrapper.offsetHeight);\n }\n },\n {\n key: 'previewDispaly',\n value: function previewDispaly(show) {\n if (show) {\n if (this.isPreViewShow) {\n return;\n }\n if (!this.isMouseHoverPbar) {\n return;\n }\n this.previewWrapper.classList.remove('hidden');\n this.isPreViewShow = true;\n } else {\n if (!this.isPreViewShow) {\n return;\n }\n this.previewWrapper.classList.add('hidden');\n this.isPreViewShow = false;\n }\n }\n },\n {\n key: 'notice',\n value: function notice(text) {\n var time = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2000;\n var opacity = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0.8;\n var noticeEle = this.element.getElementsByClassName('dplayer-notice')[0];\n noticeEle.innerHTML = text;\n noticeEle.style.opacity = opacity;\n if (this.noticeTime) {\n clearTimeout(this.noticeTime);\n }\n this.noticeTime = setTimeout(function () {\n noticeEle.style.opacity = 0;\n }, time);\n }\n },\n {\n key: 'destroy',\n value: function destroy() {\n this.pause();\n clearTimeout(this.hideTime);\n this.video.src = '';\n this.element.innerHTML = '';\n for (var key in this) {\n if (this.hasOwnProperty(key) && key !== 'paused') {\n delete this[key];\n }\n }\n }\n }\n ]);\n return DPlayer;\n}();\nmodule.exports = DPlayer;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nmodule.exports = {\n secondToTime: function secondToTime(second) {\n var add0 = function add0(num) {\n return num < 10 ? '0' + num : '' + num;\n };\n var min = parseInt(second / 60);\n var sec = parseInt(second - min * 60);\n return add0(min) + ':' + add0(sec);\n },\n getElementViewLeft: function getElementViewLeft(element) {\n var actualLeft = element.offsetLeft;\n var current = element.offsetParent;\n var elementScrollLeft = document.body.scrollLeft + document.documentElement.scrollLeft;\n if (!document.fullscreenElement && !document.mozFullScreenElement && !document.webkitFullscreenElement) {\n while (current !== null) {\n actualLeft += current.offsetLeft;\n current = current.offsetParent;\n }\n } else {\n while (current !== null && current !== element) {\n actualLeft += current.offsetLeft;\n current = current.offsetParent;\n }\n }\n return actualLeft - elementScrollLeft;\n },\n isMobile: /mobile/i.test(window.navigator.userAgent)\n};\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar defaultApiBackend = __webpack_require__(6);\nmodule.exports = function (option) {\n var isMobile = /mobile/i.test(window.navigator.userAgent);\n if (isMobile) {\n option.autoplay = false;\n }\n var defaultOption = {\n element: document.getElementsByClassName('dplayer')[0],\n autoplay: false,\n theme: '#b7daff',\n loop: false,\n lang: (navigator.language || navigator.browserLanguage).toLowerCase(),\n screenshot: false,\n hotkey: true,\n preload: 'auto',\n volume: '0.7',\n apiBackend: defaultApiBackend,\n video: {},\n contextmenu: [\n {\n text: '关于作者',\n link: 'http://diygod.me'\n },\n {\n text: '播放器意见反馈',\n link: 'https://github.com/DIYgod/DPlayer/issues'\n },\n {\n text: '关于 DPlayer 播放器',\n link: 'https://github.com/DIYgod/DPlayer'\n }\n ]\n };\n for (var defaultKey in defaultOption) {\n if (defaultOption.hasOwnProperty(defaultKey) && !option.hasOwnProperty(defaultKey)) {\n option[defaultKey] = defaultOption[defaultKey];\n }\n }\n if (option.video && !option.video.hasOwnProperty('type')) {\n option.video.type = 'auto';\n }\n if (option.danmaku && !option.danmaku.hasOwnProperty('user')) {\n option.danmaku.user = 'DIYgod';\n }\n if (option.video.quality) {\n option.video.url = [option.video.quality[option.video.defaultQuality].url];\n }\n if (option.lang) {\n option.lang.toLowerCase();\n }\n return option;\n};\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar SendXMLHttpRequest = function SendXMLHttpRequest(url, data, success, error, fail) {\n var xhr = new XMLHttpRequest();\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 4) {\n if (xhr.status >= 200 && xhr.status < 300 || xhr.status === 304) {\n var response = JSON.parse(xhr.responseText);\n if (response.code !== 1) {\n return error(xhr, response);\n }\n return success(xhr, response);\n }\n fail(xhr);\n }\n };\n xhr.open(data !== null ? 'POST' : 'GET', url, true);\n xhr.send(data !== null ? JSON.stringify(data) : null);\n};\nmodule.exports = {\n send: function send(endpoint, danmakuData, callback) {\n SendXMLHttpRequest(endpoint, danmakuData, function (xhr, response) {\n console.log('Post danmaku: ', response);\n if (callback) {\n callback();\n }\n }, function (xhr, response) {\n alert(response.msg);\n }, function (xhr) {\n console.log('Request was unsuccessful: ' + xhr.status);\n });\n },\n read: function read(endpoint, callback) {\n SendXMLHttpRequest(endpoint, null, function (xhr, response) {\n callback(null, response.danmaku);\n }, function (xhr, response) {\n callback({\n status: xhr.status,\n response: response\n });\n }, function (xhr) {\n callback({\n status: xhr.status,\n response: null\n });\n });\n }\n};\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nmodule.exports = function (lang) {\n var _this = this;\n this.lang = lang;\n this.tran = function (text) {\n if (tranTxt[_this.lang]) {\n return tranTxt[_this.lang][text];\n } else {\n return text;\n }\n };\n};\nvar tranTxt = {\n 'zh-cn': {\n 'Danmaku is loading': '弹幕加载中',\n 'Top': '顶部',\n 'Bottom': '底部',\n 'Rolling': '滚动',\n 'Input danmaku, hit Enter': '输入弹幕\\uFF0C回车发送',\n 'About author': '关于作者',\n 'DPlayer feedback': '播放器意见反馈',\n 'About DPlayer': '关于 DPlayer 播放器',\n 'Loop': '洗脑循环',\n 'Speed': '速度',\n 'Opacity for danmaku': '弹幕透明度',\n 'Normal': '正常',\n 'Please input danmaku content!': '要输入弹幕内容啊喂\\uFF01',\n 'Set danmaku color': '设置弹幕颜色',\n 'Set danmaku type': '设置弹幕类型',\n 'Danmaku': '弹幕',\n 'This video fails to load': '视频加载失败',\n 'Switching to': '正在切换至',\n 'Switched to': '已经切换至',\n 'quality': '画质'\n },\n 'zh-tw': {\n 'Danmaku is loading': '彈幕加載中',\n 'Top': '頂部',\n 'Bottom': '底部',\n 'Rolling': '滾動',\n 'Input danmaku, hit Enter': '輸入彈幕\\uFF0CEnter 發送',\n 'About author': '關於作者',\n 'DPlayer feedback': '播放器意見反饋',\n 'About DPlayer': '關於 DPlayer 播放器',\n 'Loop': '循環播放',\n 'Speed': '速度',\n 'Opacity for danmaku': '彈幕透明度',\n 'Normal': '正常',\n 'Please input danmaku content!': '請輸入彈幕内容啊\\uFF01',\n 'Set danmaku color': '設置彈幕顏色',\n 'Set danmaku type': '設置彈幕類型',\n 'Danmaku': '彈幕',\n 'This video fails to load': '視頻加載失敗',\n 'Switching to': '正在切換至',\n 'Switched to': '已經切換至',\n 'quality': '畫質'\n }\n};\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar svg = __webpack_require__(0);\nvar html = {\n main: function main(option, index, tran) {\n var videos = '';\n videos += html.video(true, option.video.pic, option.screenshot, option.preload, option.video.url);\n return '
' + videos + '' + (option.logo ? '
' : '') + '
' + (option.danmaku ? '' + tran('Danmaku is loading') + ' ' : '') + '
' + svg('play') + ' ' + svg('volume-down') + ' 0:00 / 0:00 ' + (option.video.quality ? '
' + option.video.quality[option.video.defaultQuality].name + ' ' + html.qualityList(option.video.quality) + '
' : '') + '' + (option.screenshot ? '
' + svg('camera') + ' ' : '') + '
' + svg('full-in') + ' ' + svg('full') + '
' + html.contextmenuList(option.contextmenu) + '
';\n },\n danmakumargin: function danmakumargin(margin) {\n var result = '';\n if (margin) {\n for (var key in margin) {\n result += key + ':' + margin[key] + ';';\n }\n }\n return result;\n },\n contextmenuList: function contextmenuList(contextmenu) {\n var result = '';\n return result;\n },\n qualityList: function qualityList(quality) {\n var result = '';\n for (var i = 0; i < quality.length; i++) {\n result += '
' + quality[i].name + '
';\n }\n result += '
';\n return result;\n },\n video: function video(current, pic, screenshot, preload, url) {\n return ' ';\n },\n setting: function setting(tran) {\n return {\n 'original': '' + tran('Speed') + ' ' + svg('right') + '
' + tran('Opacity for danmaku') + ' ',\n 'speed': '0.5
0.75
' + tran('Normal') + '
1.25
1.5
2
'\n };\n }\n};\nmodule.exports = html;\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar _typeof = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === 'function' && obj.constructor === Symbol && obj !== Symbol.prototype ? 'symbol' : typeof obj;\n};\nvar _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if ('value' in descriptor)\n descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function (Constructor, protoProps, staticProps) {\n if (protoProps)\n defineProperties(Constructor.prototype, protoProps);\n if (staticProps)\n defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError('Cannot call a class as a function');\n }\n}\nvar Danmaku = function () {\n function Danmaku(options) {\n _classCallCheck(this, Danmaku);\n this.options = options;\n this.container = this.options.container;\n this.danTunnel = {\n right: {},\n top: {},\n bottom: {}\n };\n this.danIndex = 0;\n this.dan = [];\n this.showing = true;\n this._opacity = this.options.opacity;\n this.load();\n }\n _createClass(Danmaku, [\n {\n key: 'load',\n value: function load() {\n var _this = this;\n var apiurl = void 0;\n if (this.options.api.maximum) {\n apiurl = this.options.api.address + '?id=' + this.options.api.id + '&max=' + this.options.api.maximum;\n } else {\n apiurl = this.options.api.address + '?id=' + this.options.api.id;\n }\n var endpoints = (this.options.api.addition || []).slice(0);\n endpoints.push(apiurl);\n this._readAllEndpoints(endpoints, function (results) {\n _this.dan = [].concat.apply([], results).sort(function (a, b) {\n return a.time - b.time;\n });\n window.requestAnimationFrame(function () {\n _this.frame();\n });\n _this.options.callback();\n });\n }\n },\n {\n key: 'reload',\n value: function reload(newAPI) {\n this.options.api = newAPI;\n this.dan = [];\n this.clear();\n this.load();\n }\n },\n {\n key: '_readAllEndpoints',\n value: function _readAllEndpoints(endpoints, callback) {\n var _this2 = this;\n var results = [];\n var readCount = 0;\n var cbk = function cbk(i) {\n return function (err, data) {\n ++readCount;\n if (err) {\n if (err.response) {\n _this2.options.error(err.response.msg);\n } else {\n _this2.options.error('Request was unsuccessful: ' + err.status);\n }\n results[i] = [];\n } else {\n results[i] = data;\n }\n if (readCount === endpoints.length) {\n return callback(results);\n }\n };\n };\n for (var i = 0; i < endpoints.length; ++i) {\n this.options.apiBackend.read(endpoints[i], cbk(i));\n }\n }\n },\n {\n key: 'send',\n value: function send(dan, callback) {\n var danmakuData = {\n token: this.options.api.token,\n player: this.options.api.id,\n author: this.options.api.user,\n time: this.options.time(),\n text: dan.text,\n color: dan.color,\n type: dan.type\n };\n this.options.apiBackend.send(this.options.api.address, danmakuData, callback);\n this.dan.splice(this.danIndex, 0, danmakuData);\n this.danIndex++;\n var danmaku = {\n text: this.htmlEncode(danmakuData.text),\n color: danmakuData.color,\n type: danmakuData.type,\n border: '2px solid ' + this.options.borderColor\n };\n this.draw(danmaku);\n }\n },\n {\n key: 'frame',\n value: function frame() {\n var _this3 = this;\n if (this.dan.length && !this.paused && this.showing) {\n var item = this.dan[this.danIndex];\n var dan = [];\n while (item && this.options.time() > parseFloat(item.time)) {\n dan.push(item);\n item = this.dan[++this.danIndex];\n }\n this.draw(dan);\n }\n window.requestAnimationFrame(function () {\n _this3.frame();\n });\n }\n },\n {\n key: 'opacity',\n value: function opacity(percentage) {\n if (percentage !== undefined) {\n var items = this.container.getElementsByClassName('dplayer-danmaku-item');\n for (var i = 0; i < items.length; i++) {\n items[i].style.opacity = percentage;\n }\n this._opacity = percentage;\n localStorage.setItem('danmaku-opacity', this._opacity);\n }\n return this._opacity;\n }\n },\n {\n key: 'draw',\n value: function draw(dan) {\n var _this4 = this;\n var itemHeight = this.options.height;\n var danWidth = this.container.offsetWidth;\n var danHeight = this.container.offsetHeight;\n var itemY = parseInt(danHeight / itemHeight);\n var danItemRight = function danItemRight(ele) {\n var eleWidth = ele.offsetWidth || parseInt(ele.style.width);\n var eleRight = ele.getBoundingClientRect().right || _this4.container.getBoundingClientRect().right + eleWidth;\n return _this4.container.getBoundingClientRect().right - eleRight;\n };\n var danSpeed = function danSpeed(width) {\n return (danWidth + width) / 5;\n };\n var getTunnel = function getTunnel(ele, type, width) {\n var tmp = danWidth / danSpeed(width);\n var _loop = function _loop(i) {\n var item = _this4.danTunnel[type][i + ''];\n if (item && item.length) {\n if (type !== 'right') {\n return 'continue';\n }\n for (var j = 0; j < item.length; j++) {\n var danRight = danItemRight(item[j]) - 10;\n if (danRight <= danWidth - tmp * danSpeed(parseInt(item[j].style.width)) || danRight <= 0) {\n break;\n }\n if (j === item.length - 1) {\n _this4.danTunnel[type][i + ''].push(ele);\n ele.addEventListener('animationend', function () {\n _this4.danTunnel[type][i + ''].splice(0, 1);\n });\n return { v: i % itemY };\n }\n }\n } else {\n _this4.danTunnel[type][i + ''] = [ele];\n ele.addEventListener('animationend', function () {\n _this4.danTunnel[type][i + ''].splice(0, 1);\n });\n return { v: i % itemY };\n }\n };\n for (var i = 0;; i++) {\n var _ret = _loop(i);\n switch (_ret) {\n case 'continue':\n continue;\n default:\n if ((typeof _ret === 'undefined' ? 'undefined' : _typeof(_ret)) === 'object')\n return _ret.v;\n }\n }\n };\n if (Object.prototype.toString.call(dan) !== '[object Array]') {\n dan = [dan];\n }\n var docFragment = document.createDocumentFragment();\n var _loop2 = function _loop2(i) {\n if (!dan[i].type) {\n dan[i].type = 'right';\n }\n if (!dan[i].color) {\n dan[i].color = '#fff';\n }\n var item = document.createElement('div');\n item.classList.add('dplayer-danmaku-item');\n item.classList.add('dplayer-danmaku-' + dan[i].type);\n if (dan[i].border) {\n item.innerHTML = '' + dan[i].text + ' ';\n } else {\n item.innerHTML = dan[i].text;\n }\n item.style.opacity = _this4._opacity;\n item.style.color = dan[i].color;\n item.addEventListener('animationend', function () {\n _this4.container.removeChild(item);\n });\n var itemWidth = _this4._measure(dan[i].text);\n switch (dan[i].type) {\n case 'right':\n item.style.width = itemWidth + 1 + 'px';\n item.style.top = itemHeight * getTunnel(item, dan[i].type, itemWidth) + 'px';\n item.style.transform = 'translateX(-' + danWidth + 'px)';\n break;\n case 'top':\n item.style.top = itemHeight * getTunnel(item, dan[i].type) + 'px';\n break;\n case 'bottom':\n item.style.bottom = itemHeight * getTunnel(item, dan[i].type) + 'px';\n break;\n default:\n console.error('Can\\'t handled danmaku type: ' + dan[i].type);\n }\n item.classList.add('dplayer-danmaku-move');\n docFragment.appendChild(item);\n };\n for (var i = 0; i < dan.length; i++) {\n _loop2(i);\n }\n this.container.appendChild(docFragment);\n return docFragment;\n }\n },\n {\n key: 'play',\n value: function play() {\n this.paused = false;\n }\n },\n {\n key: 'pause',\n value: function pause() {\n this.paused = true;\n }\n },\n {\n key: '_measure',\n value: function _measure(text) {\n if (!this.context) {\n var measureStyle = getComputedStyle(this.container.getElementsByClassName('dplayer-danmaku-item')[0], null);\n this.context = document.createElement('canvas').getContext('2d');\n this.context.font = measureStyle.getPropertyValue('font');\n }\n return this.context.measureText(text).width;\n }\n },\n {\n key: 'seek',\n value: function seek() {\n for (var i = 0; i < this.dan.length; i++) {\n if (this.dan[i].time >= this.options.time()) {\n this.danIndex = i;\n break;\n }\n this.danIndex = this.dan.length;\n }\n }\n },\n {\n key: 'clear',\n value: function clear() {\n this.danTunnel = {\n right: {},\n top: {},\n bottom: {}\n };\n this.danIndex = 0;\n this.options.container.innerHTML = '';\n }\n },\n {\n key: 'htmlEncode',\n value: function htmlEncode(str) {\n return str.replace(/&/g, '&').replace(//g, '>').replace(/\"/g, '"').replace(/'/g, ''').replace(/\\//g, '/');\n }\n },\n {\n key: 'resize',\n value: function resize() {\n var danWidth = this.container.offsetWidth;\n var items = this.container.getElementsByClassName('dplayer-danmaku-item');\n for (var i = 0; i < items.length; i++) {\n items[i].style.transform = 'translateX(-' + danWidth + 'px)';\n }\n }\n },\n {\n key: 'hide',\n value: function hide() {\n this.showing = false;\n this.pause();\n this.clear();\n }\n },\n {\n key: 'show',\n value: function show() {\n this.seek();\n this.showing = true;\n this.play();\n }\n }\n ]);\n return Danmaku;\n}();\nmodule.exports = Danmaku;\n\n/***/ })\n/******/ ]);\n});\n\n\n// WEBPACK FOOTER //\n// DPlayer.min.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 860e2efd248b25c5e0c7","'use strict';\nvar svgSource = {\n 'play': [\n '0 0 16 32',\n 'M15.552 15.168q0.448 0.32 0.448 0.832 0 0.448-0.448 0.768l-13.696 8.512q-0.768 0.512-1.312 0.192t-0.544-1.28v-16.448q0-0.96 0.544-1.28t1.312 0.192z'\n ],\n 'pause': [\n '0 0 17 32',\n 'M14.080 4.8q2.88 0 2.88 2.048v18.24q0 2.112-2.88 2.112t-2.88-2.112v-18.24q0-2.048 2.88-2.048zM2.88 4.8q2.88 0 2.88 2.048v18.24q0 2.112-2.88 2.112t-2.88-2.112v-18.24q0-2.048 2.88-2.048z'\n ],\n 'volume-up': [\n '0 0 21 32',\n 'M13.728 6.272v19.456q0 0.448-0.352 0.8t-0.8 0.32-0.8-0.32l-5.952-5.952h-4.672q-0.48 0-0.8-0.352t-0.352-0.8v-6.848q0-0.48 0.352-0.8t0.8-0.352h4.672l5.952-5.952q0.32-0.32 0.8-0.32t0.8 0.32 0.352 0.8zM20.576 16q0 1.344-0.768 2.528t-2.016 1.664q-0.16 0.096-0.448 0.096-0.448 0-0.8-0.32t-0.32-0.832q0-0.384 0.192-0.64t0.544-0.448 0.608-0.384 0.512-0.64 0.192-1.024-0.192-1.024-0.512-0.64-0.608-0.384-0.544-0.448-0.192-0.64q0-0.48 0.32-0.832t0.8-0.32q0.288 0 0.448 0.096 1.248 0.48 2.016 1.664t0.768 2.528zM25.152 16q0 2.72-1.536 5.056t-4 3.36q-0.256 0.096-0.448 0.096-0.48 0-0.832-0.352t-0.32-0.8q0-0.704 0.672-1.056 1.024-0.512 1.376-0.8 1.312-0.96 2.048-2.4t0.736-3.104-0.736-3.104-2.048-2.4q-0.352-0.288-1.376-0.8-0.672-0.352-0.672-1.056 0-0.448 0.32-0.8t0.8-0.352q0.224 0 0.48 0.096 2.496 1.056 4 3.36t1.536 5.056zM29.728 16q0 4.096-2.272 7.552t-6.048 5.056q-0.224 0.096-0.448 0.096-0.48 0-0.832-0.352t-0.32-0.8q0-0.64 0.704-1.056 0.128-0.064 0.384-0.192t0.416-0.192q0.8-0.448 1.44-0.896 2.208-1.632 3.456-4.064t1.216-5.152-1.216-5.152-3.456-4.064q-0.64-0.448-1.44-0.896-0.128-0.096-0.416-0.192t-0.384-0.192q-0.704-0.416-0.704-1.056 0-0.448 0.32-0.8t0.832-0.352q0.224 0 0.448 0.096 3.776 1.632 6.048 5.056t2.272 7.552z'\n ],\n 'volume-down': [\n '0 0 21 32',\n 'M13.728 6.272v19.456q0 0.448-0.352 0.8t-0.8 0.32-0.8-0.32l-5.952-5.952h-4.672q-0.48 0-0.8-0.352t-0.352-0.8v-6.848q0-0.48 0.352-0.8t0.8-0.352h4.672l5.952-5.952q0.32-0.32 0.8-0.32t0.8 0.32 0.352 0.8zM20.576 16q0 1.344-0.768 2.528t-2.016 1.664q-0.16 0.096-0.448 0.096-0.448 0-0.8-0.32t-0.32-0.832q0-0.384 0.192-0.64t0.544-0.448 0.608-0.384 0.512-0.64 0.192-1.024-0.192-1.024-0.512-0.64-0.608-0.384-0.544-0.448-0.192-0.64q0-0.48 0.32-0.832t0.8-0.32q0.288 0 0.448 0.096 1.248 0.48 2.016 1.664t0.768 2.528z'\n ],\n 'volume-off': [\n '0 0 21 32',\n 'M13.728 6.272v19.456q0 0.448-0.352 0.8t-0.8 0.32-0.8-0.32l-5.952-5.952h-4.672q-0.48 0-0.8-0.352t-0.352-0.8v-6.848q0-0.48 0.352-0.8t0.8-0.352h4.672l5.952-5.952q0.32-0.32 0.8-0.32t0.8 0.32 0.352 0.8z'\n ],\n 'loop': [\n '0 0 32 32',\n 'M1.882 16.941c0 4.152 3.221 7.529 7.177 7.529v1.882c-4.996 0-9.060-4.222-9.060-9.412s4.064-9.412 9.060-9.412h7.96l-3.098-3.098 1.331-1.331 5.372 5.37-5.37 5.372-1.333-1.333 3.1-3.098h-7.962c-3.957 0-7.177 3.377-7.177 7.529zM22.94 7.529v1.882c3.957 0 7.177 3.377 7.177 7.529s-3.221 7.529-7.177 7.529h-7.962l3.098-3.098-1.331-1.331-5.37 5.37 5.372 5.372 1.331-1.331-3.1-3.1h7.96c4.998 0 9.062-4.222 9.062-9.412s-4.064-9.412-9.060-9.412z'\n ],\n 'full': [\n '0 0 32 33',\n 'M6.667 28h-5.333c-0.8 0-1.333-0.533-1.333-1.333v-5.333c0-0.8 0.533-1.333 1.333-1.333s1.333 0.533 1.333 1.333v4h4c0.8 0 1.333 0.533 1.333 1.333s-0.533 1.333-1.333 1.333zM30.667 28h-5.333c-0.8 0-1.333-0.533-1.333-1.333s0.533-1.333 1.333-1.333h4v-4c0-0.8 0.533-1.333 1.333-1.333s1.333 0.533 1.333 1.333v5.333c0 0.8-0.533 1.333-1.333 1.333zM30.667 12c-0.8 0-1.333-0.533-1.333-1.333v-4h-4c-0.8 0-1.333-0.533-1.333-1.333s0.533-1.333 1.333-1.333h5.333c0.8 0 1.333 0.533 1.333 1.333v5.333c0 0.8-0.533 1.333-1.333 1.333zM1.333 12c-0.8 0-1.333-0.533-1.333-1.333v-5.333c0-0.8 0.533-1.333 1.333-1.333h5.333c0.8 0 1.333 0.533 1.333 1.333s-0.533 1.333-1.333 1.333h-4v4c0 0.8-0.533 1.333-1.333 1.333z'\n ],\n 'full-in': [\n '0 0 32 33',\n 'M24.965 24.38h-18.132c-1.366 0-2.478-1.113-2.478-2.478v-11.806c0-1.364 1.111-2.478 2.478-2.478h18.132c1.366 0 2.478 1.113 2.478 2.478v11.806c0 1.364-1.11 2.478-2.478 2.478zM6.833 10.097v11.806h18.134l-0.002-11.806h-18.132zM2.478 28.928h5.952c0.684 0 1.238-0.554 1.238-1.239 0-0.684-0.554-1.238-1.238-1.238h-5.952v-5.802c0-0.684-0.554-1.239-1.238-1.239s-1.239 0.556-1.239 1.239v5.802c0 1.365 1.111 2.478 2.478 2.478zM30.761 19.412c-0.684 0-1.238 0.554-1.238 1.238v5.801h-5.951c-0.686 0-1.239 0.554-1.239 1.238 0 0.686 0.554 1.239 1.239 1.239h5.951c1.366 0 2.478-1.111 2.478-2.478v-5.801c0-0.683-0.554-1.238-1.239-1.238zM0 5.55v5.802c0 0.683 0.554 1.238 1.238 1.238s1.238-0.555 1.238-1.238v-5.802h5.952c0.684 0 1.238-0.554 1.238-1.238s-0.554-1.238-1.238-1.238h-5.951c-1.366-0.001-2.478 1.111-2.478 2.476zM32 11.35v-5.801c0-1.365-1.11-2.478-2.478-2.478h-5.951c-0.686 0-1.239 0.554-1.239 1.238s0.554 1.238 1.239 1.238h5.951v5.801c0 0.683 0.554 1.237 1.238 1.237 0.686 0.002 1.239-0.553 1.239-1.236z'\n ],\n 'setting': [\n '0 0 32 28',\n 'M28.633 17.104c0.035 0.21 0.026 0.463-0.026 0.76s-0.14 0.598-0.262 0.904c-0.122 0.306-0.271 0.581-0.445 0.825s-0.367 0.419-0.576 0.524c-0.209 0.105-0.393 0.157-0.55 0.157s-0.332-0.035-0.524-0.105c-0.175-0.052-0.393-0.1-0.655-0.144s-0.528-0.052-0.799-0.026c-0.271 0.026-0.541 0.083-0.812 0.17s-0.502 0.236-0.694 0.445c-0.419 0.437-0.664 0.934-0.734 1.493s0.009 1.092 0.236 1.598c0.175 0.349 0.148 0.699-0.079 1.048-0.105 0.14-0.271 0.284-0.498 0.432s-0.476 0.284-0.747 0.406-0.555 0.218-0.851 0.288c-0.297 0.070-0.559 0.105-0.786 0.105-0.157 0-0.306-0.061-0.445-0.183s-0.236-0.253-0.288-0.393h-0.026c-0.192-0.541-0.52-1.009-0.982-1.402s-1-0.589-1.611-0.589c-0.594 0-1.131 0.197-1.611 0.589s-0.816 0.851-1.009 1.375c-0.087 0.21-0.218 0.362-0.393 0.458s-0.367 0.144-0.576 0.144c-0.244 0-0.52-0.044-0.825-0.131s-0.611-0.197-0.917-0.327c-0.306-0.131-0.581-0.284-0.825-0.458s-0.428-0.349-0.55-0.524c-0.087-0.122-0.135-0.266-0.144-0.432s0.057-0.397 0.197-0.694c0.192-0.402 0.266-0.86 0.223-1.375s-0.266-0.991-0.668-1.428c-0.244-0.262-0.541-0.432-0.891-0.511s-0.681-0.109-0.995-0.092c-0.367 0.017-0.742 0.087-1.127 0.21-0.244 0.070-0.489 0.052-0.734-0.052-0.192-0.070-0.371-0.231-0.537-0.485s-0.314-0.533-0.445-0.838c-0.131-0.306-0.231-0.62-0.301-0.943s-0.087-0.59-0.052-0.799c0.052-0.384 0.227-0.629 0.524-0.734 0.524-0.21 0.995-0.555 1.415-1.035s0.629-1.017 0.629-1.611c0-0.611-0.21-1.144-0.629-1.598s-0.891-0.786-1.415-0.996c-0.157-0.052-0.288-0.179-0.393-0.38s-0.157-0.406-0.157-0.616c0-0.227 0.035-0.48 0.105-0.76s0.162-0.55 0.275-0.812 0.244-0.502 0.393-0.72c0.148-0.218 0.31-0.38 0.485-0.485 0.14-0.087 0.275-0.122 0.406-0.105s0.275 0.052 0.432 0.105c0.524 0.21 1.070 0.275 1.637 0.197s1.070-0.327 1.506-0.747c0.21-0.209 0.362-0.467 0.458-0.773s0.157-0.607 0.183-0.904c0.026-0.297 0.026-0.568 0-0.812s-0.048-0.419-0.065-0.524c-0.035-0.105-0.066-0.227-0.092-0.367s-0.013-0.262 0.039-0.367c0.105-0.244 0.293-0.458 0.563-0.642s0.563-0.336 0.878-0.458c0.314-0.122 0.62-0.214 0.917-0.275s0.533-0.092 0.707-0.092c0.227 0 0.406 0.074 0.537 0.223s0.223 0.301 0.275 0.458c0.192 0.471 0.507 0.886 0.943 1.244s0.952 0.537 1.546 0.537c0.611 0 1.153-0.17 1.624-0.511s0.803-0.773 0.996-1.297c0.070-0.14 0.179-0.284 0.327-0.432s0.301-0.223 0.458-0.223c0.244 0 0.511 0.035 0.799 0.105s0.572 0.166 0.851 0.288c0.279 0.122 0.537 0.279 0.773 0.472s0.423 0.402 0.563 0.629c0.087 0.14 0.113 0.293 0.079 0.458s-0.070 0.284-0.105 0.354c-0.227 0.506-0.297 1.039-0.21 1.598s0.341 1.048 0.76 1.467c0.419 0.419 0.934 0.651 1.546 0.694s1.179-0.057 1.703-0.301c0.14-0.087 0.31-0.122 0.511-0.105s0.371 0.096 0.511 0.236c0.262 0.244 0.493 0.616 0.694 1.113s0.336 1 0.406 1.506c0.035 0.297-0.013 0.528-0.144 0.694s-0.266 0.275-0.406 0.327c-0.542 0.192-1.004 0.528-1.388 1.009s-0.576 1.026-0.576 1.637c0 0.594 0.162 1.113 0.485 1.559s0.747 0.764 1.27 0.956c0.122 0.070 0.227 0.14 0.314 0.21 0.192 0.157 0.323 0.358 0.393 0.602v0zM16.451 19.462c0.786 0 1.528-0.149 2.227-0.445s1.305-0.707 1.821-1.231c0.515-0.524 0.921-1.131 1.218-1.821s0.445-1.428 0.445-2.214c0-0.786-0.148-1.524-0.445-2.214s-0.703-1.292-1.218-1.808c-0.515-0.515-1.122-0.921-1.821-1.218s-1.441-0.445-2.227-0.445c-0.786 0-1.524 0.148-2.214 0.445s-1.292 0.703-1.808 1.218c-0.515 0.515-0.921 1.118-1.218 1.808s-0.445 1.428-0.445 2.214c0 0.786 0.149 1.524 0.445 2.214s0.703 1.297 1.218 1.821c0.515 0.524 1.118 0.934 1.808 1.231s1.428 0.445 2.214 0.445v0z'\n ],\n 'right': [\n '0 0 32 32',\n 'M22 16l-10.105-10.6-1.895 1.987 8.211 8.613-8.211 8.612 1.895 1.988 8.211-8.613z'\n ],\n 'comment': [\n '0 0 32 32',\n 'M27.128 0.38h-22.553c-2.336 0-4.229 1.825-4.229 4.076v16.273c0 2.251 1.893 4.076 4.229 4.076h4.229v-2.685h8.403l-8.784 8.072 1.566 1.44 7.429-6.827h9.71c2.335 0 4.229-1.825 4.229-4.076v-16.273c0-2.252-1.894-4.076-4.229-4.076zM28.538 19.403c0 1.5-1.262 2.717-2.819 2.717h-8.36l-0.076-0.070-0.076 0.070h-11.223c-1.557 0-2.819-1.217-2.819-2.717v-13.589c0-1.501 1.262-2.718 2.819-2.718h19.734c1.557 0 2.819-0.141 2.819 1.359v14.947zM9.206 10.557c-1.222 0-2.215 0.911-2.215 2.036s0.992 2.035 2.215 2.035c1.224 0 2.216-0.911 2.216-2.035s-0.992-2.036-2.216-2.036zM22.496 10.557c-1.224 0-2.215 0.911-2.215 2.036s0.991 2.035 2.215 2.035c1.224 0 2.215-0.911 2.215-2.035s-0.991-2.036-2.215-2.036zM15.852 10.557c-1.224 0-2.215 0.911-2.215 2.036s0.991 2.035 2.215 2.035c1.222 0 2.215-0.911 2.215-2.035s-0.992-2.036-2.215-2.036z'\n ],\n 'comment-off': [\n '0 0 32 32',\n 'M27.090 0.131h-22.731c-2.354 0-4.262 1.839-4.262 4.109v16.401c0 2.269 1.908 4.109 4.262 4.109h4.262v-2.706h8.469l-8.853 8.135 1.579 1.451 7.487-6.88h9.787c2.353 0 4.262-1.84 4.262-4.109v-16.401c0-2.27-1.909-4.109-4.262-4.109v0zM28.511 19.304c0 1.512-1.272 2.738-2.841 2.738h-8.425l-0.076-0.070-0.076 0.070h-11.311c-1.569 0-2.841-1.226-2.841-2.738v-13.696c0-1.513 1.272-2.739 2.841-2.739h19.889c1.569 0 2.841-0.142 2.841 1.37v15.064z'\n ],\n 'send': [\n '0 0 32 32',\n 'M13.725 30l3.9-5.325-3.9-1.125v6.45zM0 17.5l11.050 3.35 13.6-11.55-10.55 12.425 11.8 3.65 6.1-23.375-32 15.5z'\n ],\n 'menu': [\n '0 0 22 32',\n 'M20.8 14.4q0.704 0 1.152 0.48t0.448 1.12-0.48 1.12-1.12 0.48h-19.2q-0.64 0-1.12-0.48t-0.48-1.12 0.448-1.12 1.152-0.48h19.2zM1.6 11.2q-0.64 0-1.12-0.48t-0.48-1.12 0.448-1.12 1.152-0.48h19.2q0.704 0 1.152 0.48t0.448 1.12-0.48 1.12-1.12 0.48h-19.2zM20.8 20.8q0.704 0 1.152 0.48t0.448 1.12-0.48 1.12-1.12 0.48h-19.2q-0.64 0-1.12-0.48t-0.48-1.12 0.448-1.12 1.152-0.48h19.2z'\n ],\n 'camera': [\n '0 0 32 32',\n 'M16 23c-3.309 0-6-2.691-6-6s2.691-6 6-6 6 2.691 6 6-2.691 6-6 6zM16 13c-2.206 0-4 1.794-4 4s1.794 4 4 4c2.206 0 4-1.794 4-4s-1.794-4-4-4zM27 28h-22c-1.654 0-3-1.346-3-3v-16c0-1.654 1.346-3 3-3h3c0.552 0 1 0.448 1 1s-0.448 1-1 1h-3c-0.551 0-1 0.449-1 1v16c0 0.552 0.449 1 1 1h22c0.552 0 1-0.448 1-1v-16c0-0.551-0.448-1-1-1h-11c-0.552 0-1-0.448-1-1s0.448-1 1-1h11c1.654 0 3 1.346 3 3v16c0 1.654-1.346 3-3 3zM24 10.5c0 0.828 0.672 1.5 1.5 1.5s1.5-0.672 1.5-1.5c0-0.828-0.672-1.5-1.5-1.5s-1.5 0.672-1.5 1.5zM15 4c0 0.552-0.448 1-1 1h-4c-0.552 0-1-0.448-1-1v0c0-0.552 0.448-1 1-1h4c0.552 0 1 0.448 1 1v0z'\n ]\n};\nmodule.exports = function (type) {\n return ' \\n';\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/svg.js\n// module id = 0\n// module chunks = 0","'use strict';\nconsole.log('\\n' + ' %c DPlayer ' + DPLAYER_VERSION + ' %c http://dplayer.js.org ' + '\\n' + '\\n', 'color: #fadfa3; background: #030307; padding:5px 0;', 'background: #fadfa3; padding:5px 0;');\nmodule.exports = require('./DPlayer');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/index.js\n// module id = 1\n// module chunks = 0","'use strict';\nvar _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if ('value' in descriptor)\n descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function (Constructor, protoProps, staticProps) {\n if (protoProps)\n defineProperties(Constructor.prototype, protoProps);\n if (staticProps)\n defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\nrequire('./DPlayer.scss');\nvar _utils = require('./utils');\nvar _utils2 = _interopRequireDefault(_utils);\nvar _svg = require('./svg');\nvar _svg2 = _interopRequireDefault(_svg);\nvar _option = require('./option');\nvar _option2 = _interopRequireDefault(_option);\nvar _i18n = require('./i18n');\nvar _i18n2 = _interopRequireDefault(_i18n);\nvar _html = require('./html');\nvar _html2 = _interopRequireDefault(_html);\nvar _danmaku = require('./danmaku');\nvar _danmaku2 = _interopRequireDefault(_danmaku);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError('Cannot call a class as a function');\n }\n}\nvar index = 0;\nvar DPlayer = function () {\n function DPlayer(option) {\n var _this = this;\n _classCallCheck(this, DPlayer);\n this.option = (0, _option2.default)(option);\n this.option.element.classList.add('dplayer');\n if (this.option.video.quality) {\n this.qualityIndex = this.option.video.defaultQuality;\n this.quality = this.option.video.quality[this.option.video.defaultQuality];\n }\n this.tran = new _i18n2.default(this.option.lang).tran;\n var eventTypes = [\n 'play',\n 'pause',\n 'canplay',\n 'playing',\n 'ended',\n 'error'\n ];\n this.event = {};\n for (var i = 0; i < eventTypes.length; i++) {\n this.event[eventTypes[i]] = [];\n }\n this.trigger = function (type) {\n for (var _i = 0; _i < _this.event[type].length; _i++) {\n _this.event[type][_i]();\n }\n };\n this.element = this.option.element;\n if (!this.option.danmaku) {\n this.element.classList.add('dplayer-no-danmaku');\n }\n if (_utils.isMobile) {\n this.element.classList.add('dplayer-mobile');\n }\n this.element.innerHTML = _html2.default.main(option, index, this.tran);\n var bar = {};\n bar.volumeBar = this.element.getElementsByClassName('dplayer-volume-bar-inner')[0];\n bar.playedBar = this.element.getElementsByClassName('dplayer-played')[0];\n bar.loadedBar = this.element.getElementsByClassName('dplayer-loaded')[0];\n var pbar = this.element.getElementsByClassName('dplayer-bar-wrap')[0];\n var pbarTimeTips = this.element.getElementsByClassName('dplayer-bar-time')[0];\n var barWidth = void 0;\n this.updateBar = function (type, percentage, direction) {\n percentage = percentage > 0 ? percentage : 0;\n percentage = percentage < 1 ? percentage : 1;\n bar[type + 'Bar'].style[direction] = percentage * 100 + '%';\n };\n document.addEventListener('click', function () {\n _this.focus = false;\n }, true);\n this.element.addEventListener('click', function () {\n _this.focus = true;\n }, true);\n if (this.option.danmaku) {\n this.danmaku = new _danmaku2.default({\n container: this.element.getElementsByClassName('dplayer-danmaku')[0],\n opacity: localStorage.getItem('danmaku-opacity') || 0.7,\n callback: function callback() {\n _this.element.getElementsByClassName('dplayer-danloading')[0].style.display = 'none';\n if (_this.option.autoplay && !_utils.isMobile) {\n _this.play();\n } else if (_utils.isMobile) {\n _this.pause();\n }\n },\n error: function error(msg) {\n _this.notice(msg);\n },\n apiBackend: this.option.apiBackend,\n borderColor: this.option.theme,\n height: this.arrow ? 24 : 30,\n time: function time() {\n return _this.video.currentTime;\n },\n api: {\n id: this.option.danmaku.id,\n address: this.option.danmaku.api,\n token: this.option.danmaku.token,\n maximum: this.option.danmaku.maximum,\n addition: this.option.danmaku.addition,\n user: this.option.danmaku.user\n }\n });\n }\n this.arrow = this.element.offsetWidth <= 500;\n if (this.arrow) {\n var arrowStyle = document.createElement('style');\n arrowStyle.innerHTML = '.dplayer .dplayer-danmaku{font-size:18px}';\n document.head.appendChild(arrowStyle);\n }\n this.video = this.element.getElementsByClassName('dplayer-video-current')[0];\n this.bezel = this.element.getElementsByClassName('dplayer-bezel-icon')[0];\n this.bezel.addEventListener('animationend', function () {\n _this.bezel.classList.remove('dplayer-bezel-transition');\n });\n this.playButton = this.element.getElementsByClassName('dplayer-play-icon')[0];\n this.paused = true;\n this.playButton.addEventListener('click', function () {\n _this.toggle();\n });\n var videoWrap = this.element.getElementsByClassName('dplayer-video-wrap')[0];\n var conMask = this.element.getElementsByClassName('dplayer-controller-mask')[0];\n if (!_utils.isMobile) {\n videoWrap.addEventListener('click', function () {\n _this.toggle();\n });\n conMask.addEventListener('click', function () {\n _this.toggle();\n });\n } else {\n var toggleController = function toggleController() {\n if (_this.element.classList.contains('dplayer-hide-controller')) {\n _this.element.classList.remove('dplayer-hide-controller');\n } else {\n _this.element.classList.add('dplayer-hide-controller');\n }\n };\n videoWrap.addEventListener('click', toggleController);\n conMask.addEventListener('click', toggleController);\n }\n var lastPlayPos = 0;\n var currentPlayPos = 0;\n var bufferingDetected = false;\n window.requestAnimationFrame = function () {\n return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function (callback) {\n window.setTimeout(callback, 1000 / 60);\n };\n }();\n var setCheckLoadingTime = function setCheckLoadingTime() {\n _this.checkLoading = setInterval(function () {\n currentPlayPos = _this.video.currentTime;\n if (!bufferingDetected && currentPlayPos < lastPlayPos + 0.01 && !_this.video.paused) {\n _this.element.classList.add('dplayer-loading');\n bufferingDetected = true;\n }\n if (bufferingDetected && currentPlayPos > lastPlayPos + 0.01 && !_this.video.paused) {\n _this.element.classList.remove('dplayer-loading');\n bufferingDetected = false;\n }\n lastPlayPos = currentPlayPos;\n }, 100);\n };\n var clearCheckLoadingTime = function clearCheckLoadingTime() {\n clearInterval(_this.checkLoading);\n };\n this.playedTime = false;\n this.animationFrame = function () {\n if (_this.playedTime) {\n _this.updateBar('played', _this.video.currentTime / _this.video.duration, 'width');\n _this.element.getElementsByClassName('dplayer-ptime')[0].innerHTML = _utils2.default.secondToTime(_this.video.currentTime);\n _this.trigger('playing');\n }\n window.requestAnimationFrame(_this.animationFrame);\n };\n window.requestAnimationFrame(this.animationFrame);\n this.setTime = function (type) {\n if (!type) {\n _this.playedTime = true;\n setCheckLoadingTime();\n } else {\n _this[type + 'Time'] = true;\n if (type === 'played') {\n setCheckLoadingTime();\n }\n }\n };\n this.clearTime = function (type) {\n if (!type) {\n _this.playedTime = false;\n clearCheckLoadingTime();\n } else {\n _this[type + 'Time'] = false;\n if (type === 'played') {\n clearCheckLoadingTime();\n }\n }\n };\n pbar.addEventListener('click', function (event) {\n var e = event || window.event;\n barWidth = pbar.clientWidth;\n var percentage = (e.clientX - _utils2.default.getElementViewLeft(pbar)) / barWidth;\n percentage = percentage > 0 ? percentage : 0;\n percentage = percentage < 1 ? percentage : 1;\n _this.updateBar('played', percentage, 'width');\n _this.seek(parseFloat(bar.playedBar.style.width) / 100 * _this.video.duration);\n });\n this.initVideoPreview();\n this.isPreViewShow = false;\n this.isTimeTipsShow = true;\n this.isMouseHoverPbar = false;\n this.mouseHandler = this.mouseHandler(pbar, pbarTimeTips).bind(this);\n pbar.addEventListener('mousemove', this.mouseHandler);\n pbar.addEventListener('mouseover', this.mouseHandler);\n pbar.addEventListener('mouseenter', this.mouseHandler);\n pbar.addEventListener('mouseout', this.mouseHandler);\n pbar.addEventListener('mouseleave', this.mouseHandler);\n var thumbMove = function thumbMove(event) {\n var e = event || window.event;\n var percentage = (e.clientX - _utils2.default.getElementViewLeft(pbar)) / barWidth;\n percentage = percentage > 0 ? percentage : 0;\n percentage = percentage < 1 ? percentage : 1;\n _this.updateBar('played', percentage, 'width');\n _this.element.getElementsByClassName('dplayer-ptime')[0].innerHTML = _utils2.default.secondToTime(percentage * _this.video.duration);\n };\n var thumbUp = function thumbUp() {\n document.removeEventListener('mouseup', thumbUp);\n document.removeEventListener('mousemove', thumbMove);\n _this.seek(parseFloat(bar.playedBar.style.width) / 100 * _this.video.duration);\n _this.setTime();\n };\n pbar.addEventListener('mousedown', function () {\n barWidth = pbar.clientWidth;\n _this.clearTime();\n document.addEventListener('mousemove', thumbMove);\n document.addEventListener('mouseup', thumbUp);\n });\n var volumeEle = this.element.getElementsByClassName('dplayer-volume')[0];\n var volumeBarWrapWrap = this.element.getElementsByClassName('dplayer-volume-bar-wrap')[0];\n var volumeBarWrap = this.element.getElementsByClassName('dplayer-volume-bar')[0];\n var volumeicon = this.element.getElementsByClassName('dplayer-volume-icon')[0];\n var vWidth = 35;\n this.switchVolumeIcon = function () {\n var volumeicon = _this.element.getElementsByClassName('dplayer-volume-icon')[0];\n if (_this.volume() >= 0.95) {\n volumeicon.innerHTML = (0, _svg2.default)('volume-up');\n } else if (_this.volume() > 0) {\n volumeicon.innerHTML = (0, _svg2.default)('volume-down');\n } else {\n volumeicon.innerHTML = (0, _svg2.default)('volume-off');\n }\n };\n var volumeMove = function volumeMove(event) {\n var e = event || window.event;\n var percentage = (e.clientX - _utils2.default.getElementViewLeft(volumeBarWrap) - 5.5) / vWidth;\n _this.volume(percentage);\n };\n var volumeUp = function volumeUp() {\n document.removeEventListener('mouseup', volumeUp);\n document.removeEventListener('mousemove', volumeMove);\n volumeEle.classList.remove('dplayer-volume-active');\n };\n volumeBarWrapWrap.addEventListener('click', function (event) {\n var e = event || window.event;\n var percentage = (e.clientX - _utils2.default.getElementViewLeft(volumeBarWrap) - 5.5) / vWidth;\n _this.volume(percentage);\n });\n volumeBarWrapWrap.addEventListener('mousedown', function () {\n document.addEventListener('mousemove', volumeMove);\n document.addEventListener('mouseup', volumeUp);\n volumeEle.classList.add('dplayer-volume-active');\n });\n volumeicon.addEventListener('click', function () {\n if (_this.video.muted) {\n _this.video.muted = false;\n _this.switchVolumeIcon();\n _this.updateBar('volume', _this.volume(), 'width');\n } else {\n _this.video.muted = true;\n volumeicon.innerHTML = (0, _svg2.default)('volume-off');\n _this.updateBar('volume', 0, 'width');\n }\n });\n this.hideTime = 0;\n var hideController = function hideController() {\n _this.element.classList.remove('dplayer-hide-controller');\n clearTimeout(_this.hideTime);\n _this.hideTime = setTimeout(function () {\n if (_this.video.played.length) {\n _this.element.classList.add('dplayer-hide-controller');\n closeSetting();\n closeComment();\n }\n }, 2000);\n };\n if (!_utils.isMobile) {\n this.element.addEventListener('mousemove', hideController);\n this.element.addEventListener('click', hideController);\n }\n var settingHTML = _html2.default.setting(this.tran);\n var settingIcon = this.element.getElementsByClassName('dplayer-setting-icon')[0];\n var settingBox = this.element.getElementsByClassName('dplayer-setting-box')[0];\n var mask = this.element.getElementsByClassName('dplayer-mask')[0];\n settingBox.innerHTML = settingHTML.original;\n var closeSetting = function closeSetting() {\n if (settingBox.classList.contains('dplayer-setting-box-open')) {\n settingBox.classList.remove('dplayer-setting-box-open');\n mask.classList.remove('dplayer-mask-show');\n setTimeout(function () {\n settingBox.classList.remove('dplayer-setting-box-narrow');\n settingBox.innerHTML = settingHTML.original;\n settingEvent();\n }, 300);\n }\n };\n var openSetting = function openSetting() {\n settingBox.classList.add('dplayer-setting-box-open');\n mask.classList.add('dplayer-mask-show');\n };\n mask.addEventListener('click', function () {\n closeSetting();\n });\n settingIcon.addEventListener('click', function () {\n openSetting();\n });\n this.loop = this.option.loop;\n var showdan = true;\n var settingEvent = function settingEvent() {\n var loopEle = _this.element.getElementsByClassName('dplayer-setting-loop')[0];\n var loopToggle = loopEle.getElementsByClassName('dplayer-toggle-setting-input')[0];\n loopToggle.checked = _this.loop;\n loopEle.addEventListener('click', function () {\n loopToggle.checked = !loopToggle.checked;\n if (loopToggle.checked) {\n _this.loop = true;\n } else {\n _this.loop = false;\n }\n closeSetting();\n });\n var showDanEle = _this.element.getElementsByClassName('dplayer-setting-showdan')[0];\n var showDanToggle = showDanEle.getElementsByClassName('dplayer-showdan-setting-input')[0];\n showDanToggle.checked = showdan;\n showDanEle.addEventListener('click', function () {\n showDanToggle.checked = !showDanToggle.checked;\n if (showDanToggle.checked) {\n showdan = true;\n if (!_this.paused) {\n _this.danmaku.show();\n }\n } else {\n showdan = false;\n _this.danmaku.hide();\n }\n closeSetting();\n });\n var speedEle = _this.element.getElementsByClassName('dplayer-setting-speed')[0];\n speedEle.addEventListener('click', function () {\n settingBox.classList.add('dplayer-setting-box-narrow');\n settingBox.innerHTML = settingHTML.speed;\n var speedItem = settingBox.getElementsByClassName('dplayer-setting-speed-item');\n var _loop = function _loop(_i2) {\n speedItem[_i2].addEventListener('click', function () {\n _this.video.playbackRate = speedItem[_i2].dataset.speed;\n closeSetting();\n });\n };\n for (var _i2 = 0; _i2 < speedItem.length; _i2++) {\n _loop(_i2);\n }\n });\n if (_this.danmaku) {\n bar.danmakuBar = _this.element.getElementsByClassName('dplayer-danmaku-bar-inner')[0];\n var danmakuBarWrapWrap = _this.element.getElementsByClassName('dplayer-danmaku-bar-wrap')[0];\n var danmakuBarWrap = _this.element.getElementsByClassName('dplayer-danmaku-bar')[0];\n var danmakuSettingBox = _this.element.getElementsByClassName('dplayer-setting-danmaku')[0];\n var dWidth = 130;\n _this.updateBar('danmaku', _this.danmaku.opacity(), 'width');\n var danmakuMove = function danmakuMove(event) {\n var e = event || window.event;\n var percentage = (e.clientX - _utils2.default.getElementViewLeft(danmakuBarWrap)) / dWidth;\n percentage = percentage > 0 ? percentage : 0;\n percentage = percentage < 1 ? percentage : 1;\n _this.updateBar('danmaku', percentage, 'width');\n _this.danmaku.opacity(percentage);\n };\n var danmakuUp = function danmakuUp() {\n document.removeEventListener('mouseup', danmakuUp);\n document.removeEventListener('mousemove', danmakuMove);\n danmakuSettingBox.classList.remove('dplayer-setting-danmaku-active');\n };\n danmakuBarWrapWrap.addEventListener('click', function (event) {\n var e = event || window.event;\n var percentage = (e.clientX - _utils2.default.getElementViewLeft(danmakuBarWrap)) / dWidth;\n percentage = percentage > 0 ? percentage : 0;\n percentage = percentage < 1 ? percentage : 1;\n _this.updateBar('danmaku', percentage, 'width');\n _this.danmaku.opacity(percentage);\n });\n danmakuBarWrapWrap.addEventListener('mousedown', function () {\n document.addEventListener('mousemove', danmakuMove);\n document.addEventListener('mouseup', danmakuUp);\n danmakuSettingBox.classList.add('dplayer-setting-danmaku-active');\n });\n }\n };\n settingEvent();\n if (this.video.duration !== 1) {\n this.element.getElementsByClassName('dplayer-dtime')[0].innerHTML = this.video.duration ? _utils2.default.secondToTime(this.video.duration) : '00:00';\n }\n if (!this.danmaku) {\n if (this.option.autoplay && !_utils.isMobile) {\n this.play();\n } else if (_utils.isMobile) {\n this.pause();\n }\n }\n var commentInput = this.element.getElementsByClassName('dplayer-comment-input')[0];\n var commentIcon = this.element.getElementsByClassName('dplayer-comment-icon')[0];\n var commentBox = this.element.getElementsByClassName('dplayer-comment-box')[0];\n var commentSettingIcon = this.element.getElementsByClassName('dplayer-comment-setting-icon')[0];\n var commentSettingBox = this.element.getElementsByClassName('dplayer-comment-setting-box')[0];\n var commentSendIcon = this.element.getElementsByClassName('dplayer-send-icon')[0];\n var closeCommentSetting = function closeCommentSetting() {\n if (commentSettingBox.classList.contains('dplayer-comment-setting-open')) {\n commentSettingBox.classList.remove('dplayer-comment-setting-open');\n }\n };\n var toggleCommentSetting = function toggleCommentSetting() {\n if (commentSettingBox.classList.contains('dplayer-comment-setting-open')) {\n commentSettingBox.classList.remove('dplayer-comment-setting-open');\n } else {\n commentSettingBox.classList.add('dplayer-comment-setting-open');\n }\n };\n var disableHide = 0;\n var commentFocusTimeout = 0;\n var closeComment = function closeComment() {\n if (!commentBox.classList.contains('dplayer-comment-box-open')) {\n return;\n }\n commentBox.classList.remove('dplayer-comment-box-open');\n mask.classList.remove('dplayer-mask-show');\n _this.element.classList.remove('dplayer-show-controller');\n clearInterval(disableHide);\n clearTimeout(commentFocusTimeout);\n closeCommentSetting();\n };\n var openComment = function openComment() {\n if (commentBox.classList.contains('dplayer-comment-box-open')) {\n return;\n }\n commentBox.classList.add('dplayer-comment-box-open');\n mask.classList.add('dplayer-mask-show');\n _this.element.classList.add('dplayer-show-controller');\n disableHide = setInterval(function () {\n clearTimeout(_this.hideTime);\n }, 1000);\n commentFocusTimeout = setTimeout(function () {\n commentInput.focus();\n }, 300);\n };\n mask.addEventListener('click', function () {\n closeComment();\n });\n commentIcon.addEventListener('click', function () {\n openComment();\n });\n commentSettingIcon.addEventListener('click', function () {\n toggleCommentSetting();\n });\n this.element.getElementsByClassName('dplayer-comment-setting-color')[0].addEventListener('click', function () {\n var sele = _this.element.querySelector('input[name=\"dplayer-danmaku-color-${index}\"]:checked+span');\n if (sele) {\n commentSettingIcon.getElementsByClassName('dplayer-fill')[0].style.fill = _this.element.querySelector('input[name=\"dplayer-danmaku-color-${index}\"]:checked').value;\n }\n });\n var sendComment = function sendComment() {\n commentInput.blur();\n if (!commentInput.value.replace(/^\\s+|\\s+$/g, '')) {\n _this.notice(_this.tran('Please input danmaku content!'));\n return;\n }\n _this.danmaku.send({\n text: commentInput.value,\n color: _this.element.querySelector('.dplayer-comment-setting-color input:checked').value,\n type: _this.element.querySelector('.dplayer-comment-setting-type input:checked').value\n }, function () {\n commentInput.value = '';\n closeComment();\n });\n };\n commentInput.addEventListener('click', function () {\n closeCommentSetting();\n });\n commentInput.addEventListener('keydown', function (e) {\n var event = e || window.event;\n if (event.keyCode === 13) {\n sendComment();\n }\n });\n commentSendIcon.addEventListener('click', sendComment);\n this.element.addEventListener('fullscreenchange', function () {\n if (_this.danmaku) {\n _this.danmaku.resize();\n }\n });\n this.element.addEventListener('mozfullscreenchange', function () {\n if (_this.danmaku) {\n _this.danmaku.resize();\n }\n });\n this.element.addEventListener('webkitfullscreenchange', function () {\n if (_this.danmaku) {\n _this.danmaku.resize();\n }\n });\n this.element.getElementsByClassName('dplayer-full-icon')[0].addEventListener('click', function () {\n if (!document.fullscreenElement && !document.mozFullScreenElement && !document.webkitFullscreenElement) {\n if (_this.element.requestFullscreen) {\n _this.element.requestFullscreen();\n } else if (_this.element.mozRequestFullScreen) {\n _this.element.mozRequestFullScreen();\n } else if (_this.element.webkitRequestFullscreen) {\n _this.element.webkitRequestFullscreen();\n } else if (_this.video.webkitEnterFullscreen) {\n _this.video.webkitEnterFullscreen();\n }\n } else {\n if (document.cancelFullScreen) {\n document.cancelFullScreen();\n } else if (document.mozCancelFullScreen) {\n document.mozCancelFullScreen();\n } else if (document.webkitCancelFullScreen) {\n document.webkitCancelFullScreen();\n }\n }\n if (_this.danmaku) {\n _this.danmaku.resize();\n }\n });\n this.element.getElementsByClassName('dplayer-full-in-icon')[0].addEventListener('click', function () {\n if (_this.element.classList.contains('dplayer-fulled')) {\n _this.element.classList.remove('dplayer-fulled');\n } else {\n _this.element.classList.add('dplayer-fulled');\n if (_this.danmaku) {\n _this.danmaku.resize();\n }\n }\n });\n var handleKeyDown = function handleKeyDown(e) {\n if (_this.focus) {\n var tag = document.activeElement.tagName.toUpperCase();\n var editable = document.activeElement.getAttribute('contenteditable');\n if (tag !== 'INPUT' && tag !== 'TEXTAREA' && editable !== '' && editable !== 'true') {\n var event = e || window.event;\n var percentage = void 0;\n switch (event.keyCode) {\n case 32:\n event.preventDefault();\n _this.toggle();\n break;\n case 37:\n event.preventDefault();\n _this.seek(_this.video.currentTime - 5);\n hideController();\n break;\n case 39:\n event.preventDefault();\n _this.seek(_this.video.currentTime + 5);\n hideController();\n break;\n case 38:\n event.preventDefault();\n percentage = _this.volume() + 0.1;\n _this.volume(percentage);\n break;\n case 40:\n event.preventDefault();\n percentage = _this.volume() - 0.1;\n _this.volume(percentage);\n break;\n }\n }\n }\n };\n if (this.option.hotkey) {\n document.addEventListener('keydown', handleKeyDown);\n }\n document.addEventListener('keydown', function (e) {\n var event = e || window.event;\n switch (event.keyCode) {\n case 27:\n if (_this.element.classList.contains('dplayer-fulled')) {\n _this.element.classList.remove('dplayer-fulled');\n if (_this.danmaku) {\n _this.danmaku.resize();\n }\n }\n break;\n }\n });\n var menu = this.element.getElementsByClassName('dplayer-menu')[0];\n this.element.addEventListener('contextmenu', function (e) {\n var event = e || window.event;\n event.preventDefault();\n menu.classList.add('dplayer-menu-show');\n var clientRect = _this.element.getBoundingClientRect();\n var menuLeft = event.clientX - clientRect.left;\n var menuTop = event.clientY - clientRect.top;\n if (menuLeft + menu.offsetWidth >= clientRect.width) {\n menu.style.right = clientRect.width - menuLeft + 'px';\n menu.style.left = 'initial';\n } else {\n menu.style.left = event.clientX - _this.element.getBoundingClientRect().left + 'px';\n menu.style.right = 'initial';\n }\n if (menuTop + menu.offsetHeight >= clientRect.height) {\n menu.style.bottom = clientRect.height - menuTop + 'px';\n menu.style.top = 'initial';\n } else {\n menu.style.top = event.clientY - _this.element.getBoundingClientRect().top + 'px';\n menu.style.bottom = 'initial';\n }\n mask.classList.add('dplayer-mask-show');\n mask.addEventListener('click', function () {\n mask.classList.remove('dplayer-mask-show');\n menu.classList.remove('dplayer-menu-show');\n });\n });\n if (this.option.video.quality) {\n this.element.getElementsByClassName('dplayer-quality-list')[0].addEventListener('click', function (e) {\n if (e.target.classList.contains('dplayer-quality-item')) {\n _this.switchQuality(e.target.dataset.index);\n }\n });\n }\n if (this.option.screenshot) {\n var camareIcon = this.element.getElementsByClassName('dplayer-camera-icon')[0];\n camareIcon.addEventListener('click', function () {\n var canvas = document.createElement('canvas');\n canvas.width = _this.video.videoWidth;\n canvas.height = _this.video.videoHeight;\n canvas.getContext('2d').drawImage(_this.video, 0, 0, canvas.width, canvas.height);\n camareIcon.href = canvas.toDataURL();\n camareIcon.download = 'DPlayer.png';\n });\n }\n this.initVideo(this.video, this.quality && this.quality.type || this.option.video.type);\n index++;\n }\n _createClass(DPlayer, [\n {\n key: 'seek',\n value: function seek(time) {\n time = Math.max(time, 0);\n if (this.video.duration) {\n time = Math.min(time, this.video.duration);\n }\n if (this.video.currentTime < time) {\n this.notice(this.tran('FF to') + ' ' + _utils2.default.secondToTime(time));\n } else if (this.video.currentTime > time) {\n this.notice(this.tran('REW to') + ' ' + _utils2.default.secondToTime(time));\n }\n this.video.currentTime = time;\n if (this.danmaku) {\n this.danmaku.seek();\n }\n this.updateBar('played', time / this.video.duration, 'width');\n }\n },\n {\n key: 'play',\n value: function play() {\n this.paused = false;\n if (this.video.paused) {\n this.bezel.innerHTML = (0, _svg2.default)('play');\n this.bezel.classList.add('dplayer-bezel-transition');\n }\n this.playButton.innerHTML = (0, _svg2.default)('pause');\n this.video.play();\n this.setTime();\n this.element.classList.add('dplayer-playing');\n if (this.danmaku) {\n this.danmaku.play();\n }\n this.trigger('play');\n }\n },\n {\n key: 'pause',\n value: function pause() {\n this.paused = true;\n this.element.classList.remove('dplayer-loading');\n if (!this.video.paused) {\n this.bezel.innerHTML = (0, _svg2.default)('pause');\n this.bezel.classList.add('dplayer-bezel-transition');\n }\n this.ended = false;\n this.playButton.innerHTML = (0, _svg2.default)('play');\n this.video.pause();\n this.clearTime();\n this.element.classList.remove('dplayer-playing');\n if (this.danmaku) {\n this.danmaku.pause();\n }\n this.trigger('pause');\n }\n },\n {\n key: 'volume',\n value: function volume(percentage, nonotice, nostorage) {\n percentage = parseFloat(percentage);\n if (!isNaN(percentage)) {\n percentage = percentage > 0 ? percentage : 0;\n percentage = percentage < 1 ? percentage : 1;\n this.updateBar('volume', percentage, 'width');\n if (!nostorage) {\n localStorage.setItem('dplayer-volume', percentage);\n }\n if (!nonotice) {\n this.notice(this.tran('Volume') + ' ' + (percentage * 100).toFixed(0) + '%');\n }\n this.video.volume = percentage;\n if (this.video.muted) {\n this.video.muted = false;\n }\n this.switchVolumeIcon();\n }\n return this.video.volume;\n }\n },\n {\n key: 'toggle',\n value: function toggle() {\n if (this.video.paused) {\n this.play();\n } else {\n this.pause();\n }\n }\n },\n {\n key: 'on',\n value: function on(event, callback) {\n if (typeof callback === 'function') {\n this.event[event].push(callback);\n }\n }\n },\n {\n key: 'switchVideo',\n value: function switchVideo(video, danmakuAPI) {\n this.video.poster = video.pic ? video.pic : '';\n this.video.src = video.url;\n this.pause();\n if (danmakuAPI) {\n this.element.getElementsByClassName('dplayer-danloading')[0].style.display = 'block';\n this.updateBar('played', 0, 'width');\n this.updateBar('loaded', 0, 'width');\n this.element.getElementsByClassName('dplayer-ptime')[0].innerHTML = '00:00';\n this.element.getElementsByClassName('dplayer-danmaku')[0].innerHTML = '';\n if (this.danmaku) {\n this.danmaku.reload({\n id: danmakuAPI.id,\n address: danmakuAPI.api,\n token: danmakuAPI.token,\n maximum: danmakuAPI.maximum,\n addition: danmakuAPI.addition,\n user: danmakuAPI.user\n });\n }\n }\n }\n },\n {\n key: 'initVideo',\n value: function initVideo(video, type) {\n var _this2 = this;\n this.type = type;\n if (this.type === 'auto') {\n if (/m3u8(#|\\?|$)/i.exec(video.src)) {\n this.type = 'hls';\n } else if (/.flv(#|\\?|$)/i.exec(video.src)) {\n this.type = 'flv';\n } else {\n this.type = 'normal';\n }\n }\n if (this.type === 'hls' && Hls.isSupported()) {\n var hls = new Hls();\n hls.loadSource(video.src);\n hls.attachMedia(video);\n }\n if (this.type === 'flv' && flvjs.isSupported()) {\n var flvPlayer = flvjs.createPlayer({\n type: 'flv',\n url: video.src\n });\n flvPlayer.attachMediaElement(video);\n flvPlayer.load();\n }\n video.addEventListener('durationchange', function () {\n if (video.duration !== 1) {\n _this2.element.getElementsByClassName('dplayer-dtime')[0].innerHTML = _utils2.default.secondToTime(video.duration);\n }\n });\n video.addEventListener('progress', function () {\n var percentage = video.buffered.length ? video.buffered.end(video.buffered.length - 1) / video.duration : 0;\n _this2.updateBar('loaded', percentage, 'width');\n });\n video.addEventListener('error', function () {\n _this2.tran && _this2.notice && _this2.notice(_this2.tran('This video fails to load'), -1);\n _this2.trigger && _this2.trigger('pause');\n });\n video.addEventListener('canplay', function () {\n _this2.trigger('canplay');\n });\n this.ended = false;\n video.addEventListener('ended', function () {\n _this2.updateBar('played', 1, 'width');\n if (!_this2.loop) {\n _this2.ended = true;\n _this2.pause();\n _this2.trigger('ended');\n } else {\n _this2.seek(0);\n video.play();\n }\n if (_this2.danmaku) {\n _this2.danmaku.danIndex = 0;\n }\n });\n video.addEventListener('play', function () {\n if (_this2.paused) {\n _this2.play();\n }\n });\n video.addEventListener('pause', function () {\n if (!_this2.paused) {\n _this2.pause();\n }\n });\n this.volume(localStorage.getItem('dplayer-volume') || this.option.volume, true, true);\n }\n },\n {\n key: 'switchQuality',\n value: function switchQuality(index) {\n var _this3 = this;\n if (this.qualityIndex === index || this.switchingQuality) {\n return;\n } else {\n this.qualityIndex = index;\n }\n this.switchingQuality = true;\n this.quality = this.option.video.quality[index];\n this.element.getElementsByClassName('dplayer-quality-icon')[0].innerHTML = this.quality.name;\n var paused = this.video.paused;\n this.video.pause();\n var videoHTML = _html2.default.video(false, null, this.option.screenshot, 'auto', this.quality.url);\n var videoEle = new DOMParser().parseFromString(videoHTML, 'text/html').body.firstChild;\n var parent = this.element.getElementsByClassName('dplayer-video-wrap')[0];\n parent.insertBefore(videoEle, parent.getElementsByTagName('div')[0]);\n this.prevVideo = this.video;\n this.video = videoEle;\n this.initVideo(this.video, this.quality.type || this.option.video.type);\n this.seek(this.prevVideo.currentTime);\n this.notice(this.tran('Switching to') + ' ' + this.quality.name + ' ' + this.tran('quality'), -1);\n this.video.addEventListener('canplay', function () {\n if (_this3.prevVideo) {\n if (_this3.video.currentTime !== _this3.prevVideo.currentTime) {\n _this3.seek(_this3.prevVideo.currentTime);\n return;\n }\n parent.removeChild(_this3.prevVideo);\n _this3.video.classList.add('dplayer-video-current');\n if (!paused) {\n _this3.video.play();\n }\n _this3.prevVideo = null;\n _this3.notice(_this3.tran('Switched to') + ' ' + _this3.quality.name + ' ' + _this3.tran('quality'));\n _this3.switchingQuality = false;\n }\n });\n }\n },\n {\n key: 'mouseHandler',\n value: function mouseHandler(pbar, timeTips) {\n var _this4 = this;\n var cumulativeOffset = function cumulativeOffset(element) {\n var top = 0, left = 0;\n do {\n top += element.offsetTop || 0;\n left += element.offsetLeft || 0;\n element = element.offsetParent;\n } while (element);\n return {\n top: top,\n left: left\n };\n };\n return function (e) {\n if (!_this4.video.duration) {\n return;\n }\n var clientX = e.clientX;\n var px = cumulativeOffset(pbar).left;\n var tx = clientX - px;\n var time = _this4.video.duration * (tx / pbar.offsetWidth);\n timeTips.style.left = tx - 20 + 'px';\n _this4.previewWrapper.style.left = tx - _this4.previewWrapper.offsetWidth / 2 + 'px';\n switch (e.type) {\n case 'mouseenter':\n case 'mouseover':\n case 'mousemove':\n _this4.isMouseHoverPbar = true;\n if (_this4.previewTime !== parseInt(time)) {\n timeTips.innerText = _utils2.default.secondToTime(time);\n _this4.previewTime = parseInt(time);\n _this4.setPreview && clearTimeout(_this4.setPreview);\n _this4.setPreview = setTimeout(function () {\n _this4.setPreviewSourceAndFrame({ time: parseInt(time) });\n }, 500);\n }\n _this4.timeTipsDisplay(true, timeTips);\n break;\n case 'mouseleave':\n case 'mouseout':\n _this4.isMouseHoverPbar = false;\n _this4.previewDispaly(false);\n _this4.timeTipsDisplay(false, timeTips);\n break;\n }\n };\n }\n },\n {\n key: 'timeTipsDisplay',\n value: function timeTipsDisplay(show, timeTips) {\n if (show) {\n if (this.isTimeTipsShow) {\n return;\n }\n timeTips.classList.remove('hidden');\n this.isTimeTipsShow = true;\n } else {\n if (!this.isTimeTipsShow) {\n return;\n }\n timeTips.classList.add('hidden');\n this.isTimeTipsShow = false;\n }\n }\n },\n {\n key: 'initVideoPreview',\n value: function initVideoPreview() {\n var _this5 = this;\n this.previewVideo = document.createElement('video');\n this.previewWrapper = this.element.getElementsByClassName('dplayer-bar-preview')[0];\n this.previewCanvas = this.element.getElementsByClassName('dplayer-bar-preview-canvas')[0];\n this.previewVideo.preload = 'metadata';\n var resize = function resize() {\n var w = _this5.element.offsetWidth / 4;\n var h = _this5.element.offsetHeight / 4;\n _this5.previewWrapper.style.width = w + 'px';\n _this5.previewWrapper.style.height = h + 'px';\n _this5.previewWrapper.style.top = -h + 2 + 'px';\n _this5.previewCanvas.width = w;\n _this5.previewCanvas.height = h;\n };\n resize();\n this.video.addEventListener('loadedmetadata', function () {\n resize();\n });\n this.setPreviewSourceAndFrame({\n url: this.video.src,\n time: 0\n });\n this.bindPreviewEvent();\n }\n },\n {\n key: 'setPreviewSourceAndFrame',\n value: function setPreviewSourceAndFrame(_ref) {\n var url = _ref.url, time = _ref.time;\n if (url) {\n this.previewVideo.src = url;\n }\n if (time) {\n this.previewVideo.currentTime = time;\n }\n }\n },\n {\n key: 'bindPreviewEvent',\n value: function bindPreviewEvent() {\n var _this6 = this;\n this.previewNumber = 0;\n this.previewVideo.addEventListener('seeked', function () {\n _this6.previewNumber += 1;\n _this6.generPreviewImage(_this6.previewNumber);\n });\n }\n },\n {\n key: 'generPreviewImage',\n value: function generPreviewImage(number) {\n if (number !== this.previewNumber) {\n return;\n }\n if (!this.isMouseHoverPbar) {\n return;\n }\n this.previewDispaly(true);\n if (!this.isPreViewShow) {\n return;\n }\n var ctx = this.previewCanvas.getContext('2d');\n ctx.drawImage(this.previewVideo, 0, 0, this.previewWrapper.offsetWidth, this.previewWrapper.offsetHeight);\n }\n },\n {\n key: 'previewDispaly',\n value: function previewDispaly(show) {\n if (show) {\n if (this.isPreViewShow) {\n return;\n }\n if (!this.isMouseHoverPbar) {\n return;\n }\n this.previewWrapper.classList.remove('hidden');\n this.isPreViewShow = true;\n } else {\n if (!this.isPreViewShow) {\n return;\n }\n this.previewWrapper.classList.add('hidden');\n this.isPreViewShow = false;\n }\n }\n },\n {\n key: 'notice',\n value: function notice(text) {\n var time = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2000;\n var opacity = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0.8;\n var noticeEle = this.element.getElementsByClassName('dplayer-notice')[0];\n noticeEle.innerHTML = text;\n noticeEle.style.opacity = opacity;\n if (this.noticeTime) {\n clearTimeout(this.noticeTime);\n }\n this.noticeTime = setTimeout(function () {\n noticeEle.style.opacity = 0;\n }, time);\n }\n },\n {\n key: 'destroy',\n value: function destroy() {\n this.pause();\n clearTimeout(this.hideTime);\n this.video.src = '';\n this.element.innerHTML = '';\n for (var key in this) {\n if (this.hasOwnProperty(key) && key !== 'paused') {\n delete this[key];\n }\n }\n }\n }\n ]);\n return DPlayer;\n}();\nmodule.exports = DPlayer;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/DPlayer.js\n// module id = 2\n// module chunks = 0","'use strict';\nmodule.exports = {\n secondToTime: function secondToTime(second) {\n var add0 = function add0(num) {\n return num < 10 ? '0' + num : '' + num;\n };\n var min = parseInt(second / 60);\n var sec = parseInt(second - min * 60);\n return add0(min) + ':' + add0(sec);\n },\n getElementViewLeft: function getElementViewLeft(element) {\n var actualLeft = element.offsetLeft;\n var current = element.offsetParent;\n var elementScrollLeft = document.body.scrollLeft + document.documentElement.scrollLeft;\n if (!document.fullscreenElement && !document.mozFullScreenElement && !document.webkitFullscreenElement) {\n while (current !== null) {\n actualLeft += current.offsetLeft;\n current = current.offsetParent;\n }\n } else {\n while (current !== null && current !== element) {\n actualLeft += current.offsetLeft;\n current = current.offsetParent;\n }\n }\n return actualLeft - elementScrollLeft;\n },\n isMobile: /mobile/i.test(window.navigator.userAgent)\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/utils.js\n// module id = 4\n// module chunks = 0","'use strict';\nvar defaultApiBackend = require('./api.js');\nmodule.exports = function (option) {\n var isMobile = /mobile/i.test(window.navigator.userAgent);\n if (isMobile) {\n option.autoplay = false;\n }\n var defaultOption = {\n element: document.getElementsByClassName('dplayer')[0],\n autoplay: false,\n theme: '#b7daff',\n loop: false,\n lang: (navigator.language || navigator.browserLanguage).toLowerCase(),\n screenshot: false,\n hotkey: true,\n preload: 'auto',\n volume: '0.7',\n apiBackend: defaultApiBackend,\n video: {},\n contextmenu: [\n {\n text: '关于作者',\n link: 'http://diygod.me'\n },\n {\n text: '播放器意见反馈',\n link: 'https://github.com/DIYgod/DPlayer/issues'\n },\n {\n text: '关于 DPlayer 播放器',\n link: 'https://github.com/DIYgod/DPlayer'\n }\n ]\n };\n for (var defaultKey in defaultOption) {\n if (defaultOption.hasOwnProperty(defaultKey) && !option.hasOwnProperty(defaultKey)) {\n option[defaultKey] = defaultOption[defaultKey];\n }\n }\n if (option.video && !option.video.hasOwnProperty('type')) {\n option.video.type = 'auto';\n }\n if (option.danmaku && !option.danmaku.hasOwnProperty('user')) {\n option.danmaku.user = 'DIYgod';\n }\n if (option.video.quality) {\n option.video.url = [option.video.quality[option.video.defaultQuality].url];\n }\n if (option.lang) {\n option.lang.toLowerCase();\n }\n return option;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/option.js\n// module id = 5\n// module chunks = 0","'use strict';\nvar SendXMLHttpRequest = function SendXMLHttpRequest(url, data, success, error, fail) {\n var xhr = new XMLHttpRequest();\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 4) {\n if (xhr.status >= 200 && xhr.status < 300 || xhr.status === 304) {\n var response = JSON.parse(xhr.responseText);\n if (response.code !== 1) {\n return error(xhr, response);\n }\n return success(xhr, response);\n }\n fail(xhr);\n }\n };\n xhr.open(data !== null ? 'POST' : 'GET', url, true);\n xhr.send(data !== null ? JSON.stringify(data) : null);\n};\nmodule.exports = {\n send: function send(endpoint, danmakuData, callback) {\n SendXMLHttpRequest(endpoint, danmakuData, function (xhr, response) {\n console.log('Post danmaku: ', response);\n if (callback) {\n callback();\n }\n }, function (xhr, response) {\n alert(response.msg);\n }, function (xhr) {\n console.log('Request was unsuccessful: ' + xhr.status);\n });\n },\n read: function read(endpoint, callback) {\n SendXMLHttpRequest(endpoint, null, function (xhr, response) {\n callback(null, response.danmaku);\n }, function (xhr, response) {\n callback({\n status: xhr.status,\n response: response\n });\n }, function (xhr) {\n callback({\n status: xhr.status,\n response: null\n });\n });\n }\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/api.js\n// module id = 6\n// module chunks = 0","'use strict';\nmodule.exports = function (lang) {\n var _this = this;\n this.lang = lang;\n this.tran = function (text) {\n if (tranTxt[_this.lang]) {\n return tranTxt[_this.lang][text];\n } else {\n return text;\n }\n };\n};\nvar tranTxt = {\n 'zh-cn': {\n 'Danmaku is loading': '弹幕加载中',\n 'Top': '顶部',\n 'Bottom': '底部',\n 'Rolling': '滚动',\n 'Input danmaku, hit Enter': '输入弹幕\\uFF0C回车发送',\n 'About author': '关于作者',\n 'DPlayer feedback': '播放器意见反馈',\n 'About DPlayer': '关于 DPlayer 播放器',\n 'Loop': '洗脑循环',\n 'Speed': '速度',\n 'Opacity for danmaku': '弹幕透明度',\n 'Normal': '正常',\n 'Please input danmaku content!': '要输入弹幕内容啊喂\\uFF01',\n 'Set danmaku color': '设置弹幕颜色',\n 'Set danmaku type': '设置弹幕类型',\n 'Danmaku': '弹幕',\n 'This video fails to load': '视频加载失败',\n 'Switching to': '正在切换至',\n 'Switched to': '已经切换至',\n 'quality': '画质'\n },\n 'zh-tw': {\n 'Danmaku is loading': '彈幕加載中',\n 'Top': '頂部',\n 'Bottom': '底部',\n 'Rolling': '滾動',\n 'Input danmaku, hit Enter': '輸入彈幕\\uFF0CEnter 發送',\n 'About author': '關於作者',\n 'DPlayer feedback': '播放器意見反饋',\n 'About DPlayer': '關於 DPlayer 播放器',\n 'Loop': '循環播放',\n 'Speed': '速度',\n 'Opacity for danmaku': '彈幕透明度',\n 'Normal': '正常',\n 'Please input danmaku content!': '請輸入彈幕内容啊\\uFF01',\n 'Set danmaku color': '設置彈幕顏色',\n 'Set danmaku type': '設置彈幕類型',\n 'Danmaku': '彈幕',\n 'This video fails to load': '視頻加載失敗',\n 'Switching to': '正在切換至',\n 'Switched to': '已經切換至',\n 'quality': '畫質'\n }\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/i18n.js\n// module id = 7\n// module chunks = 0","'use strict';\nvar svg = require('./svg.js');\nvar html = {\n main: function main(option, index, tran) {\n var videos = '';\n videos += html.video(true, option.video.pic, option.screenshot, option.preload, option.video.url);\n return '
' + videos + '' + (option.logo ? '
' : '') + '
' + (option.danmaku ? '' + tran('Danmaku is loading') + ' ' : '') + '
' + svg('play') + ' ' + svg('volume-down') + ' 0:00 / 0:00 ' + (option.video.quality ? '
' + option.video.quality[option.video.defaultQuality].name + ' ' + html.qualityList(option.video.quality) + '
' : '') + '' + (option.screenshot ? '
' + svg('camera') + ' ' : '') + '
' + svg('full-in') + ' ' + svg('full') + '
' + html.contextmenuList(option.contextmenu) + '
';\n },\n danmakumargin: function danmakumargin(margin) {\n var result = '';\n if (margin) {\n for (var key in margin) {\n result += key + ':' + margin[key] + ';';\n }\n }\n return result;\n },\n contextmenuList: function contextmenuList(contextmenu) {\n var result = '';\n return result;\n },\n qualityList: function qualityList(quality) {\n var result = '';\n for (var i = 0; i < quality.length; i++) {\n result += '
' + quality[i].name + '
';\n }\n result += '
';\n return result;\n },\n video: function video(current, pic, screenshot, preload, url) {\n return ' ';\n },\n setting: function setting(tran) {\n return {\n 'original': '' + tran('Speed') + ' ' + svg('right') + '
' + tran('Opacity for danmaku') + ' ',\n 'speed': '0.5
0.75
' + tran('Normal') + '
1.25
1.5
2
'\n };\n }\n};\nmodule.exports = html;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/html.js\n// module id = 8\n// module chunks = 0","'use strict';\nvar _typeof = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === 'function' && obj.constructor === Symbol && obj !== Symbol.prototype ? 'symbol' : typeof obj;\n};\nvar _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if ('value' in descriptor)\n descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function (Constructor, protoProps, staticProps) {\n if (protoProps)\n defineProperties(Constructor.prototype, protoProps);\n if (staticProps)\n defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError('Cannot call a class as a function');\n }\n}\nvar Danmaku = function () {\n function Danmaku(options) {\n _classCallCheck(this, Danmaku);\n this.options = options;\n this.container = this.options.container;\n this.danTunnel = {\n right: {},\n top: {},\n bottom: {}\n };\n this.danIndex = 0;\n this.dan = [];\n this.showing = true;\n this._opacity = this.options.opacity;\n this.load();\n }\n _createClass(Danmaku, [\n {\n key: 'load',\n value: function load() {\n var _this = this;\n var apiurl = void 0;\n if (this.options.api.maximum) {\n apiurl = this.options.api.address + '?id=' + this.options.api.id + '&max=' + this.options.api.maximum;\n } else {\n apiurl = this.options.api.address + '?id=' + this.options.api.id;\n }\n var endpoints = (this.options.api.addition || []).slice(0);\n endpoints.push(apiurl);\n this._readAllEndpoints(endpoints, function (results) {\n _this.dan = [].concat.apply([], results).sort(function (a, b) {\n return a.time - b.time;\n });\n window.requestAnimationFrame(function () {\n _this.frame();\n });\n _this.options.callback();\n });\n }\n },\n {\n key: 'reload',\n value: function reload(newAPI) {\n this.options.api = newAPI;\n this.dan = [];\n this.clear();\n this.load();\n }\n },\n {\n key: '_readAllEndpoints',\n value: function _readAllEndpoints(endpoints, callback) {\n var _this2 = this;\n var results = [];\n var readCount = 0;\n var cbk = function cbk(i) {\n return function (err, data) {\n ++readCount;\n if (err) {\n if (err.response) {\n _this2.options.error(err.response.msg);\n } else {\n _this2.options.error('Request was unsuccessful: ' + err.status);\n }\n results[i] = [];\n } else {\n results[i] = data;\n }\n if (readCount === endpoints.length) {\n return callback(results);\n }\n };\n };\n for (var i = 0; i < endpoints.length; ++i) {\n this.options.apiBackend.read(endpoints[i], cbk(i));\n }\n }\n },\n {\n key: 'send',\n value: function send(dan, callback) {\n var danmakuData = {\n token: this.options.api.token,\n player: this.options.api.id,\n author: this.options.api.user,\n time: this.options.time(),\n text: dan.text,\n color: dan.color,\n type: dan.type\n };\n this.options.apiBackend.send(this.options.api.address, danmakuData, callback);\n this.dan.splice(this.danIndex, 0, danmakuData);\n this.danIndex++;\n var danmaku = {\n text: this.htmlEncode(danmakuData.text),\n color: danmakuData.color,\n type: danmakuData.type,\n border: '2px solid ' + this.options.borderColor\n };\n this.draw(danmaku);\n }\n },\n {\n key: 'frame',\n value: function frame() {\n var _this3 = this;\n if (this.dan.length && !this.paused && this.showing) {\n var item = this.dan[this.danIndex];\n var dan = [];\n while (item && this.options.time() > parseFloat(item.time)) {\n dan.push(item);\n item = this.dan[++this.danIndex];\n }\n this.draw(dan);\n }\n window.requestAnimationFrame(function () {\n _this3.frame();\n });\n }\n },\n {\n key: 'opacity',\n value: function opacity(percentage) {\n if (percentage !== undefined) {\n var items = this.container.getElementsByClassName('dplayer-danmaku-item');\n for (var i = 0; i < items.length; i++) {\n items[i].style.opacity = percentage;\n }\n this._opacity = percentage;\n localStorage.setItem('danmaku-opacity', this._opacity);\n }\n return this._opacity;\n }\n },\n {\n key: 'draw',\n value: function draw(dan) {\n var _this4 = this;\n var itemHeight = this.options.height;\n var danWidth = this.container.offsetWidth;\n var danHeight = this.container.offsetHeight;\n var itemY = parseInt(danHeight / itemHeight);\n var danItemRight = function danItemRight(ele) {\n var eleWidth = ele.offsetWidth || parseInt(ele.style.width);\n var eleRight = ele.getBoundingClientRect().right || _this4.container.getBoundingClientRect().right + eleWidth;\n return _this4.container.getBoundingClientRect().right - eleRight;\n };\n var danSpeed = function danSpeed(width) {\n return (danWidth + width) / 5;\n };\n var getTunnel = function getTunnel(ele, type, width) {\n var tmp = danWidth / danSpeed(width);\n var _loop = function _loop(i) {\n var item = _this4.danTunnel[type][i + ''];\n if (item && item.length) {\n if (type !== 'right') {\n return 'continue';\n }\n for (var j = 0; j < item.length; j++) {\n var danRight = danItemRight(item[j]) - 10;\n if (danRight <= danWidth - tmp * danSpeed(parseInt(item[j].style.width)) || danRight <= 0) {\n break;\n }\n if (j === item.length - 1) {\n _this4.danTunnel[type][i + ''].push(ele);\n ele.addEventListener('animationend', function () {\n _this4.danTunnel[type][i + ''].splice(0, 1);\n });\n return { v: i % itemY };\n }\n }\n } else {\n _this4.danTunnel[type][i + ''] = [ele];\n ele.addEventListener('animationend', function () {\n _this4.danTunnel[type][i + ''].splice(0, 1);\n });\n return { v: i % itemY };\n }\n };\n for (var i = 0;; i++) {\n var _ret = _loop(i);\n switch (_ret) {\n case 'continue':\n continue;\n default:\n if ((typeof _ret === 'undefined' ? 'undefined' : _typeof(_ret)) === 'object')\n return _ret.v;\n }\n }\n };\n if (Object.prototype.toString.call(dan) !== '[object Array]') {\n dan = [dan];\n }\n var docFragment = document.createDocumentFragment();\n var _loop2 = function _loop2(i) {\n if (!dan[i].type) {\n dan[i].type = 'right';\n }\n if (!dan[i].color) {\n dan[i].color = '#fff';\n }\n var item = document.createElement('div');\n item.classList.add('dplayer-danmaku-item');\n item.classList.add('dplayer-danmaku-' + dan[i].type);\n if (dan[i].border) {\n item.innerHTML = '' + dan[i].text + ' ';\n } else {\n item.innerHTML = dan[i].text;\n }\n item.style.opacity = _this4._opacity;\n item.style.color = dan[i].color;\n item.addEventListener('animationend', function () {\n _this4.container.removeChild(item);\n });\n var itemWidth = _this4._measure(dan[i].text);\n switch (dan[i].type) {\n case 'right':\n item.style.width = itemWidth + 1 + 'px';\n item.style.top = itemHeight * getTunnel(item, dan[i].type, itemWidth) + 'px';\n item.style.transform = 'translateX(-' + danWidth + 'px)';\n break;\n case 'top':\n item.style.top = itemHeight * getTunnel(item, dan[i].type) + 'px';\n break;\n case 'bottom':\n item.style.bottom = itemHeight * getTunnel(item, dan[i].type) + 'px';\n break;\n default:\n console.error('Can\\'t handled danmaku type: ' + dan[i].type);\n }\n item.classList.add('dplayer-danmaku-move');\n docFragment.appendChild(item);\n };\n for (var i = 0; i < dan.length; i++) {\n _loop2(i);\n }\n this.container.appendChild(docFragment);\n return docFragment;\n }\n },\n {\n key: 'play',\n value: function play() {\n this.paused = false;\n }\n },\n {\n key: 'pause',\n value: function pause() {\n this.paused = true;\n }\n },\n {\n key: '_measure',\n value: function _measure(text) {\n if (!this.context) {\n var measureStyle = getComputedStyle(this.container.getElementsByClassName('dplayer-danmaku-item')[0], null);\n this.context = document.createElement('canvas').getContext('2d');\n this.context.font = measureStyle.getPropertyValue('font');\n }\n return this.context.measureText(text).width;\n }\n },\n {\n key: 'seek',\n value: function seek() {\n for (var i = 0; i < this.dan.length; i++) {\n if (this.dan[i].time >= this.options.time()) {\n this.danIndex = i;\n break;\n }\n this.danIndex = this.dan.length;\n }\n }\n },\n {\n key: 'clear',\n value: function clear() {\n this.danTunnel = {\n right: {},\n top: {},\n bottom: {}\n };\n this.danIndex = 0;\n this.options.container.innerHTML = '';\n }\n },\n {\n key: 'htmlEncode',\n value: function htmlEncode(str) {\n return str.replace(/&/g, '&').replace(//g, '>').replace(/\"/g, '"').replace(/'/g, ''').replace(/\\//g, '/');\n }\n },\n {\n key: 'resize',\n value: function resize() {\n var danWidth = this.container.offsetWidth;\n var items = this.container.getElementsByClassName('dplayer-danmaku-item');\n for (var i = 0; i < items.length; i++) {\n items[i].style.transform = 'translateX(-' + danWidth + 'px)';\n }\n }\n },\n {\n key: 'hide',\n value: function hide() {\n this.showing = false;\n this.pause();\n this.clear();\n }\n },\n {\n key: 'show',\n value: function show() {\n this.seek();\n this.showing = true;\n this.play();\n }\n }\n ]);\n return Danmaku;\n}();\nmodule.exports = Danmaku;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/danmaku.js\n// module id = 9\n// module chunks = 0"],"sourceRoot":""}
\ No newline at end of file
diff --git a/package.json b/package.json
index 2d26fc8..ac9dbd2 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "dplayer",
- "version": "1.6.1",
+ "version": "1.7.0",
"description": "Wow, such a lovely HTML5 danmaku video player",
"main": "dist/DPlayer.min.js",
"style": "dist/DPlayer.min.css",