diff --git a/docs/uncompiled/artplayer-plugin-danmuku.js b/docs/uncompiled/artplayer-plugin-danmuku.js
index aa23bcb18..60840985c 100644
--- a/docs/uncompiled/artplayer-plugin-danmuku.js
+++ b/docs/uncompiled/artplayer-plugin-danmuku.js
@@ -421,6 +421,7 @@
value: function _continue() {
filter(this.queue, 'stop', function (danmu) {
danmu.$state = 'emit';
+ danmu.$lastStartTime = Date.now();
switch (danmu.mode) {
case 'scroll':
diff --git a/docs/uncompiled/artplayer-plugin-danmuku.js.map b/docs/uncompiled/artplayer-plugin-danmuku.js.map
index fe9677fb0..9a44038c0 100644
--- a/docs/uncompiled/artplayer-plugin-danmuku.js.map
+++ b/docs/uncompiled/artplayer-plugin-danmuku.js.map
@@ -1 +1 @@
-{"version":3,"file":"artplayer-plugin-danmuku.js","sources":["../../node_modules/@babel/runtime/helpers/defineProperty.js","../../node_modules/@babel/runtime/helpers/objectSpread.js","../../node_modules/@babel/runtime/helpers/classCallCheck.js","../../node_modules/@babel/runtime/helpers/createClass.js","../../packages/artplayer-plugin-danmuku/src/i18n.js","../../packages/artplayer-plugin-danmuku/src/setting.js","../../packages/artplayer-plugin-danmuku/src/utils.js","../../node_modules/@babel/runtime/helpers/arrayWithHoles.js","../../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","../../node_modules/@babel/runtime/helpers/nonIterableRest.js","../../node_modules/@babel/runtime/helpers/slicedToArray.js","../../packages/artplayer-plugin-danmuku/src/bilibili.js","../../packages/artplayer-plugin-danmuku/src/getDanmuTop.js","../../packages/artplayer-plugin-danmuku/src/danmuku.js","../../packages/artplayer-plugin-danmuku/src/index.js"],"sourcesContent":["function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;","var defineProperty = require(\"./defineProperty\");\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nmodule.exports = _objectSpread;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;","export default {\n 'zh-cn': {\n 'Danmu opacity': '弹幕透明度',\n 'Danmu speed': '弹幕速度',\n 'Danmu size': '弹幕大小',\n 'Danmu text cannot be empty': '弹幕文本不能为空',\n 'The length of the danmu does not exceed': '弹幕文本字数不能超过',\n },\n 'zh-tw': {\n 'Danmu opacity': '彈幕透明度',\n 'Danmu speed': '彈幕速度',\n 'Danmu size': '弹幕大小',\n 'Danmu text cannot be empty': '彈幕文本不能為空',\n 'The length of the danmu does not exceed': '彈幕文本字數不能超過',\n },\n};","export function opacity(art) {\n const {\n i18n,\n events: { proxy },\n } = art;\n\n return {\n name: 'danmuku-opacity',\n index: 30,\n html: `\n
\n \n \n
\n `,\n mounted: $setting => {\n const $range = $setting.querySelector('input[type=range]');\n const $value = $setting.querySelector('.art-value');\n proxy($range, 'change', () => {\n const { value } = $range;\n $value.innerText = Number(value) * 100;\n\n art.plugins.artplayerPluginDanmuku.config({\n opacity: Number(value),\n });\n\n art.on('artplayerPluginDanmuku:config', config => {\n if ($range.value !== config.opacity) {\n $range.value = config.opacity;\n $value.innerText = config.opacity * 100;\n }\n });\n });\n },\n };\n}\n\nexport function size(art) {\n const {\n i18n,\n events: { proxy },\n } = art;\n\n return {\n name: 'danmuku-size',\n index: 50,\n html: `\n \n \n \n
\n `,\n mounted: $setting => {\n const $range = $setting.querySelector('input[type=range]');\n const $value = $setting.querySelector('.art-value');\n proxy($range, 'change', () => {\n const { value } = $range;\n $value.innerText = value;\n\n art.plugins.artplayerPluginDanmuku.config({\n fontSize: Number(value),\n });\n\n art.on('artplayerPluginDanmuku:config', config => {\n if ($range.value !== config.fontSize) {\n $range.value = config.fontSize;\n $value.innerText = config.fontSize;\n }\n });\n });\n },\n };\n}\n\nexport function speed(art) {\n const {\n i18n,\n events: { proxy },\n } = art;\n\n return {\n name: 'danmuku-speed',\n index: 40,\n html: `\n \n \n \n
\n `,\n mounted: $setting => {\n const $range = $setting.querySelector('input[type=range]');\n const $value = $setting.querySelector('.art-value');\n proxy($range, 'change', () => {\n const { value } = $range;\n $value.innerText = value;\n\n art.plugins.artplayerPluginDanmuku.config({\n speed: Number(value),\n });\n\n art.on('artplayerPluginDanmuku:config', config => {\n if ($range.value !== config.speed) {\n $range.value = config.speed;\n $value.innerText = config.speed;\n }\n });\n });\n },\n };\n}\n","export function filter(queue, state, callback) {\n return queue.filter(danmu => danmu.$state === state).map(callback);\n}\n\nexport function getRect(ref, key) {\n const result = ref.getBoundingClientRect();\n return key ? result[key] : result;\n}\n\nexport function getDanmuRef(queue) {\n const result = queue.find(danmu => {\n return danmu.$ref && danmu.$state === 'wait';\n });\n\n if (result) {\n const { $ref } = result;\n result.$ref = null;\n return $ref;\n }\n\n const $ref = document.createElement('div');\n $ref.style.cssText = `\n user-select: none;\n position: absolute;\n white-space: pre;\n pointer-events: none;\n perspective: 500px;\n display: inline-block;\n will-change: transform;\n font-family: SimHei, \"Microsoft JhengHei\", Arial, Helvetica, sans-serif;\n font-weight: normal;\n line-height: 1.125;\n text-shadow: rgb(0, 0, 0) 1px 0px 1px, rgb(0, 0, 0) 0px 1px 1px, rgb(0, 0, 0) 0px -1px 1px, rgb(0, 0, 0) -1px 0px 1px;\n `;\n\n return $ref;\n}","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;","function _iterableToArrayLimit(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}\n\nmodule.exports = _nonIterableRest;","var arrayWithHoles = require(\"./arrayWithHoles\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit\");\n\nvar nonIterableRest = require(\"./nonIterableRest\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;","export function getMode(key) {\n switch (key) {\n case 1:\n case 2:\n case 3:\n return 'scroll';\n case 4:\n case 5:\n return 'static';\n default:\n return null;\n }\n}\n\nexport function bilibiliDanmuParseFromXml(xmlString) {\n if (typeof xmlString !== 'string') return [];\n const srtList = xmlString.match(/[\\S ]*?)<\\/d>/gi);\n return srtList.length\n ? srtList.map(item => {\n const [, attrStr, text] = item.match(/(.+)<\\/d>/);\n const attr = attrStr.split(',');\n return attr.length === 8 && text.trim()\n ? {\n text,\n time: Number(attr[0]),\n mode: getMode(Number(attr[1])),\n fontSize: Number(attr[2]),\n color: `#${Number(attr[3]).toString(16)}`,\n timestamp: Number(attr[4]),\n pool: Number(attr[5]),\n userID: attr[6],\n rowID: Number(attr[7]),\n }\n : null;\n })\n : [];\n}\n\nexport function bilibiliDanmuParseFromUrl(url) {\n return fetch(url)\n .then(res => res.text())\n .then(xmlString => {\n return bilibiliDanmuParseFromXml(xmlString);\n });\n}\n\nexport function bilibiliDanmuParseFromAv(av) {\n const corsUrl = 'https://cors-anywhere.herokuapp.com/';\n return fetch(`${corsUrl}https://api.bilibili.com/x/web-interface/view?aid=${av}`)\n .then(res => res.json())\n .then(res => {\n if (res.code === 0 && res.data && res.data.cid) {\n return bilibiliDanmuParseFromUrl(`${corsUrl}https://api.bilibili.com/x/v1/dm/list.so?oid=${res.data.cid}`);\n }\n throw new Error(`Unable to get data: ${JSON.stringify(res)}`);\n });\n}","function getDanmuTopByDiff(danmus) {\n let top = 0;\n let maxDiff = 0;\n for (let index = 1; index < danmus.length; index += 1) {\n const item = danmus[index];\n const prev = danmus[index - 1];\n const prevTop = prev.top + prev.height;\n const diff = item.top - prevTop;\n if (diff > maxDiff) {\n top = prevTop;\n maxDiff = diff;\n }\n }\n return top;\n}\n\nfunction getDanmuTopBySparse(danmus) {\n const topMap = {};\n for (let index = 0; index < danmus.length; index += 1) {\n const item = danmus[index];\n if (topMap[item.top]) {\n topMap[item.top].push(item);\n } else {\n topMap[item.top] = [item];\n }\n }\n\n let maxRight = 0;\n let top = 0;\n const topMapKeys = Object.keys(topMap);\n for (let index = 0; index < topMapKeys.length; index += 1) {\n let minRight = danmus[0].width;\n const topKey = topMapKeys[index];\n const danmuArr = topMap[topKey];\n for (let index = 0; index < danmuArr.length; index += 1) {\n const danmu = danmuArr[index];\n if (danmu.right < minRight) {\n minRight = danmu.right;\n }\n }\n\n if (minRight > maxRight) {\n maxRight = minRight;\n [{ top }] = danmuArr;\n }\n }\n\n if (top === 0) {\n const randomKey = Math.floor(Math.random() * (2 - topMapKeys.length) + topMapKeys.length - 1);\n top = topMapKeys[randomKey];\n }\n\n return top;\n}\n\nexport default function getDanmuTop(danmus) {\n let top = getDanmuTopByDiff(danmus);\n if (top === 0) {\n top = getDanmuTopBySparse(danmus);\n }\n return top;\n}\n","import i18n from './i18n';\nimport { opacity, size, speed } from './setting';\nimport { filter, getRect, getDanmuRef } from './utils';\nimport { bilibiliDanmuParseFromUrl } from './bilibili';\nimport getDanmuTop from './getDanmuTop';\n\nexport default class Danmuku {\n constructor(art, option) {\n art.i18n.update(i18n);\n art.setting.add(opacity);\n art.setting.add(size);\n art.setting.add(speed);\n this.art = art;\n this.queue = [];\n this.refs = [];\n this.option = {};\n this.config(option);\n this.isStop = false;\n this.animationFrameTimer = null;\n this.$danmuku = art.template.$danmuku;\n art.on('video:play', this.start.bind(this));\n art.on('video:playing', this.start.bind(this));\n art.on('video:pause', this.stop.bind(this));\n art.on('video:waiting', this.stop.bind(this));\n art.on('resize', this.resize.bind(this));\n art.on('destroy', this.stop.bind(this));\n if (typeof this.option.danmuku === 'function') {\n this.option.danmuku().then(danmus => {\n danmus.forEach(this.emit.bind(this));\n art.emit('artplayerPluginDanmuku:loaded');\n });\n } else if (typeof this.option.danmuku === 'string') {\n bilibiliDanmuParseFromUrl(this.option.danmuku).then(danmus => {\n danmus.forEach(this.emit.bind(this));\n art.emit('artplayerPluginDanmuku:loaded');\n });\n } else {\n this.option.danmuku.forEach(this.emit.bind(this));\n art.emit('artplayerPluginDanmuku:loaded');\n }\n }\n\n static get option() {\n return {\n danmuku: [],\n speed: 5,\n maxlength: 50,\n margin: [10, 100],\n opacity: 1,\n fontSize: 25,\n };\n }\n\n static get scheme() {\n return {\n danmuku: 'array|function|string',\n speed: 'number',\n maxlength: 'number',\n margin: 'array',\n opacity: 'number',\n fontSize: 'number',\n };\n }\n\n config(option) {\n const {\n utils: { clamp },\n validator,\n } = this.art.constructor;\n this.option = Object.assign({}, Danmuku.option, this.option, option);\n validator(this.option, Danmuku.scheme);\n this.option.speed = clamp(this.option.speed, 1, 10);\n this.option.maxlength = clamp(this.option.maxlength, 10, 100);\n this.option.margin[0] = clamp(this.option.margin[0], 0, 100);\n this.option.margin[1] = clamp(this.option.margin[1], 0, 100);\n this.option.opacity = clamp(this.option.opacity, 0, 1);\n this.option.fontSize = clamp(this.option.fontSize, 12, 30);\n this.art.emit('artplayerPluginDanmuku:config', this.option);\n }\n\n continue() {\n filter(this.queue, 'stop', danmu => {\n danmu.$state = 'emit';\n switch (danmu.mode) {\n case 'scroll':\n danmu.$ref.style.transform = `translateX(${-danmu.$restWidth}px) translateY(0px) translateZ(0px)`;\n danmu.$ref.style.transition = `transform ${danmu.$restTime}s linear 0s`;\n break;\n default:\n break;\n }\n });\n }\n\n suspend() {\n const { $player } = this.art.template;\n filter(this.queue, 'emit', danmu => {\n danmu.$state = 'stop';\n switch (danmu.mode) {\n case 'scroll': {\n const { left: playerLeft, width: playerWidth } = getRect($player);\n const { left: danmuLeft } = getRect(danmu.$ref);\n const translateX = playerWidth - (danmuLeft - playerLeft) + 5;\n danmu.$ref.style.transform = `translateX(${-translateX}px) translateY(0px) translateZ(0px)`;\n danmu.$ref.style.transition = 'transform 0s linear 0s';\n break;\n }\n default:\n break;\n }\n });\n }\n\n resize() {\n const { $player } = this.art.template;\n const danmuLeft = getRect($player, 'width');\n filter(this.queue, 'wait', danmu => {\n if (danmu.$ref) {\n danmu.$ref.style.border = 'none';\n danmu.$ref.style.left = `${danmuLeft}px`;\n danmu.$ref.style.marginLeft = '0px';\n danmu.$ref.style.transform = 'translateX(0px) translateY(0px) translateZ(0px)';\n danmu.$ref.style.transition = 'transform 0s linear 0s';\n }\n });\n }\n\n getDanmuTop(mode) {\n const { $player } = this.art.template;\n const { left: playerLeft, top: playerTop, height: playerHeight, width: playerWidth } = getRect($player);\n const danmus = this.queue.filter(danmu => danmu.mode === mode && danmu.$state === 'emit');\n\n if (danmus.length === 0) {\n return this.option.margin[0];\n }\n\n const danmusBySort = danmus\n .map(danmu => {\n const { left: danmuLeft, top: danmuTop, width: danmuWidth, height: danmuHeight } = getRect(danmu.$ref);\n const top = danmuTop - playerTop;\n const left = danmuLeft - playerLeft;\n const right = playerWidth - left - danmuWidth;\n return {\n top,\n left,\n right,\n height: danmuHeight,\n width: danmuWidth,\n };\n })\n .sort((prev, next) => {\n return prev.top - next.top;\n });\n\n danmusBySort.unshift({\n top: 0,\n left: 0,\n right: 0,\n height: this.option.margin[0],\n width: playerWidth,\n });\n\n danmusBySort.push({\n top: playerHeight - this.option.margin[1],\n left: 0,\n right: 0,\n height: this.option.margin[1],\n width: playerWidth,\n });\n\n return getDanmuTop(danmusBySort);\n }\n\n update() {\n const {\n player,\n template: { $player },\n } = this.art;\n this.animationFrameTimer = window.requestAnimationFrame(() => {\n if (player.playing) {\n const danmuLeft = getRect($player, 'width');\n\n filter(this.queue, 'emit', danmu => {\n danmu.$restTime -= (Date.now() - danmu.$lastStartTime) / 1000;\n danmu.$lastStartTime = Date.now();\n if (danmu.$restTime <= 0) {\n danmu.$state = 'wait';\n danmu.$ref.style.border = 'none';\n danmu.$ref.style.left = `${danmuLeft}px`;\n danmu.$ref.style.marginLeft = '0px';\n danmu.$ref.style.transform = 'translateX(0px) translateY(0px) translateZ(0px)';\n danmu.$ref.style.transition = 'transform 0s linear 0s';\n }\n });\n\n this.queue\n .filter(danmu => {\n return (\n player.currentTime + 0.1 >= danmu.time &&\n danmu.time >= player.currentTime - 0.1 &&\n danmu.$state === 'wait'\n );\n })\n .forEach(danmu => {\n danmu.$state = 'emit';\n danmu.$ref = getDanmuRef(this.queue);\n this.$danmuku.appendChild(danmu.$ref);\n if (!this.refs.includes(danmu.$ref)) {\n this.refs.push(danmu.$ref);\n }\n danmu.$ref.style.opacity = this.option.opacity;\n danmu.$ref.style.fontSize = `${this.option.fontSize}px`;\n danmu.$ref.innerText = danmu.text;\n danmu.$ref.style.color = danmu.color;\n danmu.$ref.style.border = danmu.border ? `1px solid ${danmu.color}` : 'none';\n danmu.$restTime = this.option.speed;\n danmu.$lastStartTime = Date.now();\n const danmuWidth = getRect(danmu.$ref, 'width');\n const danmuTop = this.getDanmuTop(danmu.mode);\n switch (danmu.mode) {\n case 'scroll': {\n danmu.$restWidth = danmuLeft + danmuWidth + 5;\n danmu.$ref.style.left = `${danmuLeft}px`;\n danmu.$ref.style.top = `${danmuTop}px`;\n danmu.$ref.style.transform = `translateX(${-danmu.$restWidth}px) translateY(0px) translateZ(0px)`;\n danmu.$ref.style.transition = `transform ${danmu.$restTime}s linear 0s`;\n break;\n }\n case 'static':\n danmu.$ref.style.top = `${danmuTop}px`;\n danmu.$ref.style.left = '50%';\n danmu.$ref.style.marginLeft = `-${danmuWidth / 2}px`;\n break;\n default:\n break;\n }\n });\n }\n\n if (!this.isStop) {\n this.update();\n }\n });\n }\n\n stop() {\n this.isStop = true;\n this.suspend();\n window.cancelAnimationFrame(this.animationFrameTimer);\n this.art.emit('artplayerPluginDanmuku:stop');\n }\n\n start() {\n this.isStop = false;\n this.continue();\n this.update();\n this.art.emit('artplayerPluginDanmuku:start');\n }\n\n show() {\n this.$danmuku.style = 'block';\n this.art.emit('artplayerPluginDanmuku:show');\n }\n\n hide() {\n this.$danmuku.style = 'none';\n this.art.emit('artplayerPluginDanmuku:hide');\n }\n\n emit(danmu) {\n const { notice, player, i18n } = this.art;\n if (!danmu.text.trim()) {\n notice.show(i18n.get('Danmu text cannot be empty'));\n return;\n }\n\n if (danmu.text.length > this.option.maxlength) {\n notice.show(`${i18n.get('The length of the danmu does not exceed')} ${this.option.maxlength}`);\n return;\n }\n\n if (typeof danmu.time !== 'number') {\n danmu.time = player.currentTime;\n }\n\n this.queue.push({\n ...danmu,\n $state: 'wait',\n $ref: null,\n $restTime: 0,\n $lastStartTime: 0,\n $restWidth: 0,\n });\n }\n}\n","import Danmuku from './danmuku';\n\nexport default function artplayerPluginDanmuku(option) {\n return art => {\n const danmuku = new Danmuku(art, option);\n return {\n name: 'artplayerPluginDanmuku',\n emit: danmuku.emit.bind(danmuku),\n config: danmuku.config.bind(danmuku),\n hide: danmuku.hide.bind(danmuku),\n show: danmuku.show.bind(danmuku),\n };\n };\n}"],"names":["opacity","art","i18n","proxy","events","name","index","html","get","mounted","$setting","$range","querySelector","$value","value","innerText","Number","plugins","artplayerPluginDanmuku","config","on","size","fontSize","speed","filter","queue","state","callback","danmu","$state","map","getRect","ref","key","result","getBoundingClientRect","getDanmuRef","find","$ref","document","createElement","style","cssText","getMode","bilibiliDanmuParseFromXml","xmlString","srtList","match","length","item","attrStr","text","attr","split","trim","time","mode","color","toString","timestamp","pool","userID","rowID","bilibiliDanmuParseFromUrl","url","fetch","then","res","getDanmuTopByDiff","danmus","top","maxDiff","prev","prevTop","height","diff","getDanmuTopBySparse","topMap","push","maxRight","topMapKeys","Object","keys","minRight","width","topKey","danmuArr","right","randomKey","Math","floor","random","getDanmuTop","Danmuku","option","update","setting","add","refs","isStop","animationFrameTimer","$danmuku","template","start","bind","stop","resize","danmuku","forEach","emit","constructor","clamp","utils","validator","assign","scheme","maxlength","margin","transform","$restWidth","transition","$restTime","$player","playerLeft","left","playerWidth","danmuLeft","translateX","border","marginLeft","playerTop","playerHeight","danmusBySort","danmuTop","danmuWidth","danmuHeight","sort","next","unshift","player","window","requestAnimationFrame","playing","Date","now","$lastStartTime","currentTime","appendChild","includes","suspend","cancelAnimationFrame","notice","show","hide"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"artplayer-plugin-danmuku.js","sources":["../../node_modules/@babel/runtime/helpers/defineProperty.js","../../node_modules/@babel/runtime/helpers/objectSpread.js","../../node_modules/@babel/runtime/helpers/classCallCheck.js","../../node_modules/@babel/runtime/helpers/createClass.js","../../packages/artplayer-plugin-danmuku/src/i18n.js","../../packages/artplayer-plugin-danmuku/src/setting.js","../../packages/artplayer-plugin-danmuku/src/utils.js","../../node_modules/@babel/runtime/helpers/arrayWithHoles.js","../../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","../../node_modules/@babel/runtime/helpers/nonIterableRest.js","../../node_modules/@babel/runtime/helpers/slicedToArray.js","../../packages/artplayer-plugin-danmuku/src/bilibili.js","../../packages/artplayer-plugin-danmuku/src/getDanmuTop.js","../../packages/artplayer-plugin-danmuku/src/danmuku.js","../../packages/artplayer-plugin-danmuku/src/index.js"],"sourcesContent":["function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;","var defineProperty = require(\"./defineProperty\");\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nmodule.exports = _objectSpread;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;","export default {\n 'zh-cn': {\n 'Danmu opacity': '弹幕透明度',\n 'Danmu speed': '弹幕速度',\n 'Danmu size': '弹幕大小',\n 'Danmu text cannot be empty': '弹幕文本不能为空',\n 'The length of the danmu does not exceed': '弹幕文本字数不能超过',\n },\n 'zh-tw': {\n 'Danmu opacity': '彈幕透明度',\n 'Danmu speed': '彈幕速度',\n 'Danmu size': '弹幕大小',\n 'Danmu text cannot be empty': '彈幕文本不能為空',\n 'The length of the danmu does not exceed': '彈幕文本字數不能超過',\n },\n};","export function opacity(art) {\n const {\n i18n,\n events: { proxy },\n } = art;\n\n return {\n name: 'danmuku-opacity',\n index: 30,\n html: `\n \n \n \n
\n `,\n mounted: $setting => {\n const $range = $setting.querySelector('input[type=range]');\n const $value = $setting.querySelector('.art-value');\n proxy($range, 'change', () => {\n const { value } = $range;\n $value.innerText = Number(value) * 100;\n\n art.plugins.artplayerPluginDanmuku.config({\n opacity: Number(value),\n });\n\n art.on('artplayerPluginDanmuku:config', config => {\n if ($range.value !== config.opacity) {\n $range.value = config.opacity;\n $value.innerText = config.opacity * 100;\n }\n });\n });\n },\n };\n}\n\nexport function size(art) {\n const {\n i18n,\n events: { proxy },\n } = art;\n\n return {\n name: 'danmuku-size',\n index: 50,\n html: `\n \n \n \n
\n `,\n mounted: $setting => {\n const $range = $setting.querySelector('input[type=range]');\n const $value = $setting.querySelector('.art-value');\n proxy($range, 'change', () => {\n const { value } = $range;\n $value.innerText = value;\n\n art.plugins.artplayerPluginDanmuku.config({\n fontSize: Number(value),\n });\n\n art.on('artplayerPluginDanmuku:config', config => {\n if ($range.value !== config.fontSize) {\n $range.value = config.fontSize;\n $value.innerText = config.fontSize;\n }\n });\n });\n },\n };\n}\n\nexport function speed(art) {\n const {\n i18n,\n events: { proxy },\n } = art;\n\n return {\n name: 'danmuku-speed',\n index: 40,\n html: `\n \n \n \n
\n `,\n mounted: $setting => {\n const $range = $setting.querySelector('input[type=range]');\n const $value = $setting.querySelector('.art-value');\n proxy($range, 'change', () => {\n const { value } = $range;\n $value.innerText = value;\n\n art.plugins.artplayerPluginDanmuku.config({\n speed: Number(value),\n });\n\n art.on('artplayerPluginDanmuku:config', config => {\n if ($range.value !== config.speed) {\n $range.value = config.speed;\n $value.innerText = config.speed;\n }\n });\n });\n },\n };\n}\n","export function filter(queue, state, callback) {\n return queue.filter(danmu => danmu.$state === state).map(callback);\n}\n\nexport function getRect(ref, key) {\n const result = ref.getBoundingClientRect();\n return key ? result[key] : result;\n}\n\nexport function getDanmuRef(queue) {\n const result = queue.find(danmu => {\n return danmu.$ref && danmu.$state === 'wait';\n });\n\n if (result) {\n const { $ref } = result;\n result.$ref = null;\n return $ref;\n }\n\n const $ref = document.createElement('div');\n $ref.style.cssText = `\n user-select: none;\n position: absolute;\n white-space: pre;\n pointer-events: none;\n perspective: 500px;\n display: inline-block;\n will-change: transform;\n font-family: SimHei, \"Microsoft JhengHei\", Arial, Helvetica, sans-serif;\n font-weight: normal;\n line-height: 1.125;\n text-shadow: rgb(0, 0, 0) 1px 0px 1px, rgb(0, 0, 0) 0px 1px 1px, rgb(0, 0, 0) 0px -1px 1px, rgb(0, 0, 0) -1px 0px 1px;\n `;\n\n return $ref;\n}","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;","function _iterableToArrayLimit(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}\n\nmodule.exports = _nonIterableRest;","var arrayWithHoles = require(\"./arrayWithHoles\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit\");\n\nvar nonIterableRest = require(\"./nonIterableRest\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;","export function getMode(key) {\n switch (key) {\n case 1:\n case 2:\n case 3:\n return 'scroll';\n case 4:\n case 5:\n return 'static';\n default:\n return null;\n }\n}\n\nexport function bilibiliDanmuParseFromXml(xmlString) {\n if (typeof xmlString !== 'string') return [];\n const srtList = xmlString.match(/[\\S ]*?)<\\/d>/gi);\n return srtList.length\n ? srtList.map(item => {\n const [, attrStr, text] = item.match(/(.+)<\\/d>/);\n const attr = attrStr.split(',');\n return attr.length === 8 && text.trim()\n ? {\n text,\n time: Number(attr[0]),\n mode: getMode(Number(attr[1])),\n fontSize: Number(attr[2]),\n color: `#${Number(attr[3]).toString(16)}`,\n timestamp: Number(attr[4]),\n pool: Number(attr[5]),\n userID: attr[6],\n rowID: Number(attr[7]),\n }\n : null;\n })\n : [];\n}\n\nexport function bilibiliDanmuParseFromUrl(url) {\n return fetch(url)\n .then(res => res.text())\n .then(xmlString => {\n return bilibiliDanmuParseFromXml(xmlString);\n });\n}\n\nexport function bilibiliDanmuParseFromAv(av) {\n const corsUrl = 'https://cors-anywhere.herokuapp.com/';\n return fetch(`${corsUrl}https://api.bilibili.com/x/web-interface/view?aid=${av}`)\n .then(res => res.json())\n .then(res => {\n if (res.code === 0 && res.data && res.data.cid) {\n return bilibiliDanmuParseFromUrl(`${corsUrl}https://api.bilibili.com/x/v1/dm/list.so?oid=${res.data.cid}`);\n }\n throw new Error(`Unable to get data: ${JSON.stringify(res)}`);\n });\n}","function getDanmuTopByDiff(danmus) {\n let top = 0;\n let maxDiff = 0;\n for (let index = 1; index < danmus.length; index += 1) {\n const item = danmus[index];\n const prev = danmus[index - 1];\n const prevTop = prev.top + prev.height;\n const diff = item.top - prevTop;\n if (diff > maxDiff) {\n top = prevTop;\n maxDiff = diff;\n }\n }\n return top;\n}\n\nfunction getDanmuTopBySparse(danmus) {\n const topMap = {};\n for (let index = 0; index < danmus.length; index += 1) {\n const item = danmus[index];\n if (topMap[item.top]) {\n topMap[item.top].push(item);\n } else {\n topMap[item.top] = [item];\n }\n }\n\n let maxRight = 0;\n let top = 0;\n const topMapKeys = Object.keys(topMap);\n for (let index = 0; index < topMapKeys.length; index += 1) {\n let minRight = danmus[0].width;\n const topKey = topMapKeys[index];\n const danmuArr = topMap[topKey];\n for (let index = 0; index < danmuArr.length; index += 1) {\n const danmu = danmuArr[index];\n if (danmu.right < minRight) {\n minRight = danmu.right;\n }\n }\n\n if (minRight > maxRight) {\n maxRight = minRight;\n [{ top }] = danmuArr;\n }\n }\n\n if (top === 0) {\n const randomKey = Math.floor(Math.random() * (2 - topMapKeys.length) + topMapKeys.length - 1);\n top = topMapKeys[randomKey];\n }\n\n return top;\n}\n\nexport default function getDanmuTop(danmus) {\n let top = getDanmuTopByDiff(danmus);\n if (top === 0) {\n top = getDanmuTopBySparse(danmus);\n }\n return top;\n}\n","import i18n from './i18n';\nimport { opacity, size, speed } from './setting';\nimport { filter, getRect, getDanmuRef } from './utils';\nimport { bilibiliDanmuParseFromUrl } from './bilibili';\nimport getDanmuTop from './getDanmuTop';\n\nexport default class Danmuku {\n constructor(art, option) {\n art.i18n.update(i18n);\n art.setting.add(opacity);\n art.setting.add(size);\n art.setting.add(speed);\n this.art = art;\n this.queue = [];\n this.refs = [];\n this.option = {};\n this.config(option);\n this.isStop = false;\n this.animationFrameTimer = null;\n this.$danmuku = art.template.$danmuku;\n art.on('video:play', this.start.bind(this));\n art.on('video:playing', this.start.bind(this));\n art.on('video:pause', this.stop.bind(this));\n art.on('video:waiting', this.stop.bind(this));\n art.on('resize', this.resize.bind(this));\n art.on('destroy', this.stop.bind(this));\n if (typeof this.option.danmuku === 'function') {\n this.option.danmuku().then(danmus => {\n danmus.forEach(this.emit.bind(this));\n art.emit('artplayerPluginDanmuku:loaded');\n });\n } else if (typeof this.option.danmuku === 'string') {\n bilibiliDanmuParseFromUrl(this.option.danmuku).then(danmus => {\n danmus.forEach(this.emit.bind(this));\n art.emit('artplayerPluginDanmuku:loaded');\n });\n } else {\n this.option.danmuku.forEach(this.emit.bind(this));\n art.emit('artplayerPluginDanmuku:loaded');\n }\n }\n\n static get option() {\n return {\n danmuku: [],\n speed: 5,\n maxlength: 50,\n margin: [10, 100],\n opacity: 1,\n fontSize: 25,\n };\n }\n\n static get scheme() {\n return {\n danmuku: 'array|function|string',\n speed: 'number',\n maxlength: 'number',\n margin: 'array',\n opacity: 'number',\n fontSize: 'number',\n };\n }\n\n config(option) {\n const {\n utils: { clamp },\n validator,\n } = this.art.constructor;\n this.option = Object.assign({}, Danmuku.option, this.option, option);\n validator(this.option, Danmuku.scheme);\n this.option.speed = clamp(this.option.speed, 1, 10);\n this.option.maxlength = clamp(this.option.maxlength, 10, 100);\n this.option.margin[0] = clamp(this.option.margin[0], 0, 100);\n this.option.margin[1] = clamp(this.option.margin[1], 0, 100);\n this.option.opacity = clamp(this.option.opacity, 0, 1);\n this.option.fontSize = clamp(this.option.fontSize, 12, 30);\n this.art.emit('artplayerPluginDanmuku:config', this.option);\n }\n\n continue() {\n filter(this.queue, 'stop', danmu => {\n danmu.$state = 'emit';\n danmu.$lastStartTime = Date.now();\n switch (danmu.mode) {\n case 'scroll':\n danmu.$ref.style.transform = `translateX(${-danmu.$restWidth}px) translateY(0px) translateZ(0px)`;\n danmu.$ref.style.transition = `transform ${danmu.$restTime}s linear 0s`;\n break;\n default:\n break;\n }\n });\n }\n\n suspend() {\n const { $player } = this.art.template;\n filter(this.queue, 'emit', danmu => {\n danmu.$state = 'stop';\n switch (danmu.mode) {\n case 'scroll': {\n const { left: playerLeft, width: playerWidth } = getRect($player);\n const { left: danmuLeft } = getRect(danmu.$ref);\n const translateX = playerWidth - (danmuLeft - playerLeft) + 5;\n danmu.$ref.style.transform = `translateX(${-translateX}px) translateY(0px) translateZ(0px)`;\n danmu.$ref.style.transition = 'transform 0s linear 0s';\n break;\n }\n default:\n break;\n }\n });\n }\n\n resize() {\n const { $player } = this.art.template;\n const danmuLeft = getRect($player, 'width');\n filter(this.queue, 'wait', danmu => {\n if (danmu.$ref) {\n danmu.$ref.style.border = 'none';\n danmu.$ref.style.left = `${danmuLeft}px`;\n danmu.$ref.style.marginLeft = '0px';\n danmu.$ref.style.transform = 'translateX(0px) translateY(0px) translateZ(0px)';\n danmu.$ref.style.transition = 'transform 0s linear 0s';\n }\n });\n }\n\n getDanmuTop(mode) {\n const { $player } = this.art.template;\n const { left: playerLeft, top: playerTop, height: playerHeight, width: playerWidth } = getRect($player);\n const danmus = this.queue.filter(danmu => danmu.mode === mode && danmu.$state === 'emit');\n\n if (danmus.length === 0) {\n return this.option.margin[0];\n }\n\n const danmusBySort = danmus\n .map(danmu => {\n const { left: danmuLeft, top: danmuTop, width: danmuWidth, height: danmuHeight } = getRect(danmu.$ref);\n const top = danmuTop - playerTop;\n const left = danmuLeft - playerLeft;\n const right = playerWidth - left - danmuWidth;\n return {\n top,\n left,\n right,\n height: danmuHeight,\n width: danmuWidth,\n };\n })\n .sort((prev, next) => {\n return prev.top - next.top;\n });\n\n danmusBySort.unshift({\n top: 0,\n left: 0,\n right: 0,\n height: this.option.margin[0],\n width: playerWidth,\n });\n\n danmusBySort.push({\n top: playerHeight - this.option.margin[1],\n left: 0,\n right: 0,\n height: this.option.margin[1],\n width: playerWidth,\n });\n\n return getDanmuTop(danmusBySort);\n }\n\n update() {\n const {\n player,\n template: { $player },\n } = this.art;\n this.animationFrameTimer = window.requestAnimationFrame(() => {\n if (player.playing) {\n const danmuLeft = getRect($player, 'width');\n\n filter(this.queue, 'emit', danmu => {\n danmu.$restTime -= (Date.now() - danmu.$lastStartTime) / 1000;\n danmu.$lastStartTime = Date.now();\n if (danmu.$restTime <= 0) {\n danmu.$state = 'wait';\n danmu.$ref.style.border = 'none';\n danmu.$ref.style.left = `${danmuLeft}px`;\n danmu.$ref.style.marginLeft = '0px';\n danmu.$ref.style.transform = 'translateX(0px) translateY(0px) translateZ(0px)';\n danmu.$ref.style.transition = 'transform 0s linear 0s';\n }\n });\n\n this.queue\n .filter(danmu => {\n return (\n player.currentTime + 0.1 >= danmu.time &&\n danmu.time >= player.currentTime - 0.1 &&\n danmu.$state === 'wait'\n );\n })\n .forEach(danmu => {\n danmu.$state = 'emit';\n danmu.$ref = getDanmuRef(this.queue);\n this.$danmuku.appendChild(danmu.$ref);\n if (!this.refs.includes(danmu.$ref)) {\n this.refs.push(danmu.$ref);\n }\n danmu.$ref.style.opacity = this.option.opacity;\n danmu.$ref.style.fontSize = `${this.option.fontSize}px`;\n danmu.$ref.innerText = danmu.text;\n danmu.$ref.style.color = danmu.color;\n danmu.$ref.style.border = danmu.border ? `1px solid ${danmu.color}` : 'none';\n danmu.$restTime = this.option.speed;\n danmu.$lastStartTime = Date.now();\n const danmuWidth = getRect(danmu.$ref, 'width');\n const danmuTop = this.getDanmuTop(danmu.mode);\n switch (danmu.mode) {\n case 'scroll': {\n danmu.$restWidth = danmuLeft + danmuWidth + 5;\n danmu.$ref.style.left = `${danmuLeft}px`;\n danmu.$ref.style.top = `${danmuTop}px`;\n danmu.$ref.style.transform = `translateX(${-danmu.$restWidth}px) translateY(0px) translateZ(0px)`;\n danmu.$ref.style.transition = `transform ${danmu.$restTime}s linear 0s`;\n break;\n }\n case 'static':\n danmu.$ref.style.top = `${danmuTop}px`;\n danmu.$ref.style.left = '50%';\n danmu.$ref.style.marginLeft = `-${danmuWidth / 2}px`;\n break;\n default:\n break;\n }\n });\n }\n\n if (!this.isStop) {\n this.update();\n }\n });\n }\n\n stop() {\n this.isStop = true;\n this.suspend();\n window.cancelAnimationFrame(this.animationFrameTimer);\n this.art.emit('artplayerPluginDanmuku:stop');\n }\n\n start() {\n this.isStop = false;\n this.continue();\n this.update();\n this.art.emit('artplayerPluginDanmuku:start');\n }\n\n show() {\n this.$danmuku.style = 'block';\n this.art.emit('artplayerPluginDanmuku:show');\n }\n\n hide() {\n this.$danmuku.style = 'none';\n this.art.emit('artplayerPluginDanmuku:hide');\n }\n\n emit(danmu) {\n const { notice, player, i18n } = this.art;\n if (!danmu.text.trim()) {\n notice.show(i18n.get('Danmu text cannot be empty'));\n return;\n }\n\n if (danmu.text.length > this.option.maxlength) {\n notice.show(`${i18n.get('The length of the danmu does not exceed')} ${this.option.maxlength}`);\n return;\n }\n\n if (typeof danmu.time !== 'number') {\n danmu.time = player.currentTime;\n }\n\n this.queue.push({\n ...danmu,\n $state: 'wait',\n $ref: null,\n $restTime: 0,\n $lastStartTime: 0,\n $restWidth: 0,\n });\n }\n}\n","import Danmuku from './danmuku';\n\nexport default function artplayerPluginDanmuku(option) {\n return art => {\n const danmuku = new Danmuku(art, option);\n return {\n name: 'artplayerPluginDanmuku',\n emit: danmuku.emit.bind(danmuku),\n config: danmuku.config.bind(danmuku),\n hide: danmuku.hide.bind(danmuku),\n show: danmuku.show.bind(danmuku),\n };\n };\n}"],"names":["opacity","art","i18n","proxy","events","name","index","html","get","mounted","$setting","$range","querySelector","$value","value","innerText","Number","plugins","artplayerPluginDanmuku","config","on","size","fontSize","speed","filter","queue","state","callback","danmu","$state","map","getRect","ref","key","result","getBoundingClientRect","getDanmuRef","find","$ref","document","createElement","style","cssText","getMode","bilibiliDanmuParseFromXml","xmlString","srtList","match","length","item","attrStr","text","attr","split","trim","time","mode","color","toString","timestamp","pool","userID","rowID","bilibiliDanmuParseFromUrl","url","fetch","then","res","getDanmuTopByDiff","danmus","top","maxDiff","prev","prevTop","height","diff","getDanmuTopBySparse","topMap","push","maxRight","topMapKeys","Object","keys","minRight","width","topKey","danmuArr","right","randomKey","Math","floor","random","getDanmuTop","Danmuku","option","update","setting","add","refs","isStop","animationFrameTimer","$danmuku","template","start","bind","stop","resize","danmuku","forEach","emit","constructor","clamp","utils","validator","assign","scheme","maxlength","margin","$lastStartTime","Date","now","transform","$restWidth","transition","$restTime","$player","playerLeft","left","playerWidth","danmuLeft","translateX","border","marginLeft","playerTop","playerHeight","danmusBySort","danmuTop","danmuWidth","danmuHeight","sort","next","unshift","player","window","requestAnimationFrame","playing","currentTime","appendChild","includes","suspend","cancelAnimationFrame","notice","show","hide"],"mappings":"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"}
\ No newline at end of file
diff --git a/packages/artplayer-plugin-danmuku/src/danmuku.js b/packages/artplayer-plugin-danmuku/src/danmuku.js
index 75558f64b..ece895a04 100644
--- a/packages/artplayer-plugin-danmuku/src/danmuku.js
+++ b/packages/artplayer-plugin-danmuku/src/danmuku.js
@@ -81,6 +81,7 @@ export default class Danmuku {
continue() {
filter(this.queue, 'stop', danmu => {
danmu.$state = 'emit';
+ danmu.$lastStartTime = Date.now();
switch (danmu.mode) {
case 'scroll':
danmu.$ref.style.transform = `translateX(${-danmu.$restWidth}px) translateY(0px) translateZ(0px)`;