diff --git a/docs/uncompiled/artplayer-plugin-danmu.js b/docs/uncompiled/artplayer-plugin-danmu.js index ef8eb49e9..8b4530d11 100644 --- a/docs/uncompiled/artplayer-plugin-danmu.js +++ b/docs/uncompiled/artplayer-plugin-danmu.js @@ -245,12 +245,14 @@ this.queue = []; this.layer = null; this.isStop = false; + this.refs = []; this.animationFrameTimer = null; art.i18n.update(Danmuku.i18n); art.on('video:play', this.start.bind(this)); art.on('video:playing', this.start.bind(this)); art.on('video:pause', this.stop.bind(this)); art.on('video:waiting', this.stop.bind(this)); + art.on('resize', this.resize.bind(this)); art.on('destroy', this.stop.bind(this)); this.config(option); @@ -331,17 +333,35 @@ danmu.$state = 'emit'; } + }, { + key: "resize", + value: function resize() { + var $player = this.art.template.$player; + + var _Danmuku$getRect = Danmuku.getRect($player), + playerWidth = _Danmuku$getRect.width; + + this.queue.forEach(function (danmu) { + danmu.$state = 'wait'; + }); + this.refs.forEach(function ($ref) { + $ref.style.left = "".concat(playerWidth, "px"); + $ref.style.border = 'none'; + $ref.style.transform = 'translateX(0px) translateY(0px) translateZ(0px)'; + $ref.style.transition = 'transform 0s linear 0s'; + }); + } }, { key: "suspend", value: function suspend(danmu) { var $player = this.art.template.$player; - var _Danmuku$getRect = Danmuku.getRect($player), - playerLeft = _Danmuku$getRect.left, - playerWidth = _Danmuku$getRect.width; + var _Danmuku$getRect2 = Danmuku.getRect($player), + playerLeft = _Danmuku$getRect2.left, + playerWidth = _Danmuku$getRect2.width; - var _Danmuku$getRect2 = Danmuku.getRect(danmu.$ref), - danmuLeft = _Danmuku$getRect2.left; + var _Danmuku$getRect3 = Danmuku.getRect(danmu.$ref), + danmuLeft = _Danmuku$getRect3.left; danmu.$restTime -= (Date.now() - danmu.$lastStartTime) / 1000; var translateX = playerWidth - (danmuLeft - playerLeft) + 5; @@ -388,9 +408,9 @@ var playerLeft = Danmuku.getRect($player, 'left'); var waitDanmu = this.queue.find(function (danmu) { if (danmu.$ref) { - var _Danmuku$getRect3 = Danmuku.getRect(danmu.$ref), - danmuLeft = _Danmuku$getRect3.left, - danmuWidth = _Danmuku$getRect3.width; + var _Danmuku$getRect4 = Danmuku.getRect(danmu.$ref), + danmuLeft = _Danmuku$getRect4.left, + danmuWidth = _Danmuku$getRect4.width; return danmu.$state === 'emit' && playerLeft > danmuLeft + danmuWidth; } @@ -422,6 +442,7 @@ textShadow: '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' }); append(this.layer.$ref, $ref); + this.refs.push($ref); return $ref; } }, { @@ -429,11 +450,11 @@ value: function getDanmuTop$1() { var $player = this.art.template.$player; - var _Danmuku$getRect4 = Danmuku.getRect($player), - playerLeft = _Danmuku$getRect4.left, - playerTop = _Danmuku$getRect4.top, - playerHeight = _Danmuku$getRect4.height, - playerWidth = _Danmuku$getRect4.width; + var _Danmuku$getRect5 = Danmuku.getRect($player), + playerLeft = _Danmuku$getRect5.left, + playerTop = _Danmuku$getRect5.top, + playerHeight = _Danmuku$getRect5.height, + playerWidth = _Danmuku$getRect5.width; var danmus = this.queue.filter(function (danmu) { return danmu.$state === 'emit'; @@ -444,11 +465,11 @@ } var danmusBySort = danmus.map(function (danmu) { - var _Danmuku$getRect5 = Danmuku.getRect(danmu.$ref), - danmuLeft = _Danmuku$getRect5.left, - danmuTop = _Danmuku$getRect5.top, - danmuWidth = _Danmuku$getRect5.width, - danmuHeight = _Danmuku$getRect5.height; + var _Danmuku$getRect6 = Danmuku.getRect(danmu.$ref), + danmuLeft = _Danmuku$getRect6.left, + danmuTop = _Danmuku$getRect6.top, + danmuWidth = _Danmuku$getRect6.width, + danmuHeight = _Danmuku$getRect6.height; var top = danmuTop - playerTop; var left = danmuLeft - playerLeft; diff --git a/docs/uncompiled/artplayer-plugin-danmu.js.map b/docs/uncompiled/artplayer-plugin-danmu.js.map index 5aa620f8e..e99e58318 100644 --- a/docs/uncompiled/artplayer-plugin-danmu.js.map +++ b/docs/uncompiled/artplayer-plugin-danmu.js.map @@ -1 +1 @@ -{"version":3,"file":"artplayer-plugin-danmu.js","sources":["../../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-danmu/src/bilibiliDanmuParse.js","../../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-danmu/src/getDanmuTop.js","../../packages/artplayer-plugin-danmu/src/danmuku.js","../../packages/artplayer-plugin-danmu/src/index.js"],"sourcesContent":["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 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: Number(attr[1]),\n size: 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 _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;","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 { bilibiliDanmuParseFromUrl } from './bilibiliDanmuParse';\nimport getDanmuTop from './getDanmuTop';\n\nexport default class Danmuku {\n constructor(art, option) {\n this.art = art;\n this.queue = [];\n this.layer = null;\n this.isStop = false;\n this.animationFrameTimer = null;\n art.i18n.update(Danmuku.i18n);\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('destroy', this.stop.bind(this));\n this.config(option);\n if (typeof this.option.danmus === 'function') {\n this.option.danmus().then(danmus => {\n danmus.forEach(this.addToQueue.bind(this));\n this.init();\n });\n } else if (typeof this.option.danmus === 'string') {\n bilibiliDanmuParseFromUrl(this.option.danmus).then(danmus => {\n danmus.forEach(this.addToQueue.bind(this));\n this.init();\n });\n } else {\n this.option.danmus.forEach(this.addToQueue.bind(this));\n this.init();\n }\n }\n\n static get i18n() {\n return {\n 'zh-cn': {\n 'Danmu text cannot be empty': '弹幕文本不能为空',\n 'The length of the danmu does not exceed': '弹幕文本字数不能超过',\n },\n 'zh-tw': {\n 'Danmu text cannot be empty': '彈幕文本不能為空',\n 'The length of the danmu does not exceed': '彈幕文本字數不能超過',\n },\n };\n }\n\n static get option() {\n return {\n danmus: [],\n speed: 5,\n opacity: 1,\n color: '#fff',\n size: 25,\n maxlength: 50,\n margin: [10, 20],\n };\n }\n\n static get scheme() {\n return {\n danmus: 'array|function|string',\n speed: 'number',\n opacity: 'number',\n color: 'string',\n size: 'number',\n maxlength: 'number',\n margin: 'array',\n };\n }\n\n static getRect(ref, key) {\n const result = ref.getBoundingClientRect();\n return key ? result[key] : result;\n }\n\n config(option) {\n const {\n utils: { clamp },\n validator,\n } = this.art.constructor;\n this.option = Object.assign({}, Danmuku.option, option);\n validator(this.option, Danmuku.scheme);\n this.option.speed = clamp(this.option.speed, 1, 10);\n this.option.opacity = clamp(this.option.opacity, 0, 1);\n this.option.size = clamp(this.option.size, 12, 30);\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 }\n\n init() {\n this.art.emit('artplayerPluginDanmu:loaded');\n this.layer = this.art.layers.add({\n name: 'danmu',\n style: {\n position: 'absolute',\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n width: '100%',\n height: '100%',\n overflow: 'hidden',\n pointerEvents: 'none',\n opacity: this.option.opacity,\n },\n });\n }\n\n emit(danmu) {\n const { $player } = this.art.template;\n danmu.$ref = this.getDanmuRef();\n danmu.$ref.innerText = danmu.text;\n danmu.$ref.style.fontSize = `${danmu.size || this.option.size}px`;\n const playerWidth = Danmuku.getRect($player, 'width');\n const danmuWidth = Danmuku.getRect(danmu.$ref, 'width');\n danmu.$restWidth = playerWidth + danmuWidth + 5;\n danmu.$restTime = this.option.speed;\n danmu.$lastStartTime = Date.now();\n danmu.$ref.style.color = danmu.color || this.option.color;\n danmu.$ref.style.left = `${playerWidth}px`;\n danmu.$ref.style.top = `${this.getDanmuTop()}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 if (danmu.border) {\n danmu.$ref.style.border = `1px solid ${danmu.border}`;\n }\n danmu.$state = 'emit';\n }\n\n static continue(danmu) {\n danmu.$lastStartTime = Date.now();\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 danmu.$state = 'emit';\n }\n\n suspend(danmu) {\n const { $player } = this.art.template;\n const { left: playerLeft, width: playerWidth } = Danmuku.getRect($player);\n const { left: danmuLeft } = Danmuku.getRect(danmu.$ref);\n danmu.$restTime -= (Date.now() - danmu.$lastStartTime) / 1000;\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 danmu.$state = 'stop';\n }\n\n addToQueue(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 });\n }\n\n getDanmuRef() {\n const { $player } = this.art.template;\n const { setStyles, append } = this.art.constructor.utils;\n const playerLeft = Danmuku.getRect($player, 'left');\n\n const waitDanmu = this.queue.find(danmu => {\n if (danmu.$ref) {\n const { left: danmuLeft, width: danmuWidth } = Danmuku.getRect(danmu.$ref);\n return danmu.$state === 'emit' && playerLeft > danmuLeft + danmuWidth;\n }\n return false;\n });\n\n if (waitDanmu) {\n waitDanmu.$state = 'wait';\n waitDanmu.$ref.style.border = 'none';\n waitDanmu.$ref.style.transform = 'translateX(0px) translateY(0px) translateZ(0px)';\n waitDanmu.$ref.style.transition = 'transform 0s linear 0s';\n this.layer.$ref.appendChild(waitDanmu.$ref);\n return waitDanmu.$ref;\n }\n\n const $ref = document.createElement('div');\n\n setStyles($ref, {\n userSelect: 'none',\n position: 'absolute',\n whiteSpace: 'pre',\n pointerEvents: 'none',\n perspective: '500px',\n display: 'inline-block',\n willChange: 'transform',\n fontFamily: 'SimHei, \"Microsoft JhengHei\", Arial, Helvetica, sans-serif',\n fontWeight: 'normal',\n lineHeight: '1.125',\n textShadow:\n '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 append(this.layer.$ref, $ref);\n return $ref;\n }\n\n getDanmuTop() {\n const { $player } = this.art.template;\n const { left: playerLeft, top: playerTop, height: playerHeight, width: playerWidth } = Danmuku.getRect($player);\n const danmus = this.queue.filter(danmu => 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 } = Danmuku.getRect(\n danmu.$ref,\n );\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 { player } = this.art;\n this.animationFrameTimer = window.requestAnimationFrame(() => {\n if (this.layer && player.playing) {\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 this.emit(danmu);\n });\n }\n\n if (!this.isStop) {\n this.update();\n }\n });\n }\n\n stop() {\n this.isStop = true;\n this.queue\n .filter(danmu => danmu.$state === 'emit')\n .forEach(danmu => {\n this.suspend(danmu);\n });\n window.cancelAnimationFrame(this.animationFrameTimer);\n this.art.emit('artplayerPluginDanmu:stop');\n }\n\n start() {\n this.isStop = false;\n this.queue\n .filter(danmu => danmu.$state === 'stop')\n .forEach(danmu => {\n Danmuku.continue(danmu);\n });\n this.update();\n this.art.emit('artplayerPluginDanmu:start');\n }\n\n show() {\n this.layer.$ref.style = 'none';\n this.art.emit('artplayerPluginDanmu:show');\n }\n\n hide() {\n this.layer.$ref.style = 'block';\n this.art.emit('artplayerPluginDanmu:hide');\n }\n}\n","import { bilibiliDanmuParseFromXml, bilibiliDanmuParseFromAv, bilibiliDanmuParseFromUrl } from './bilibiliDanmuParse';\nimport Danmuku from './danmuku';\n\nfunction artplayerPluginDanmu(option) {\n return art => {\n const danmuku = new Danmuku(art, option);\n return {\n name: 'artplayerPluginDanmu',\n emit: danmuku.addToQueue.bind(danmuku),\n config: danmuku.config.bind(danmuku),\n start: danmuku.start.bind(danmuku),\n stop: danmuku.stop.bind(danmuku),\n hide: danmuku.hide.bind(danmuku),\n show: danmuku.show.bind(danmuku),\n };\n };\n}\n\nartplayerPluginDanmu.bilibiliDanmuParseFromXml = bilibiliDanmuParseFromXml;\nartplayerPluginDanmu.bilibiliDanmuParseFromAv = bilibiliDanmuParseFromAv;\nartplayerPluginDanmu.bilibiliDanmuParseFromUrl = bilibiliDanmuParseFromUrl;\nwindow.artplayerPluginDanmu = artplayerPluginDanmu;\nexport default artplayerPluginDanmu;\n"],"names":["bilibiliDanmuParseFromXml","xmlString","srtList","match","length","map","item","attrStr","text","attr","split","trim","time","Number","mode","size","color","toString","timestamp","pool","userID","rowID","bilibiliDanmuParseFromUrl","url","fetch","then","res","bilibiliDanmuParseFromAv","av","corsUrl","json","code","data","cid","Error","JSON","stringify","getDanmuTopByDiff","danmus","top","maxDiff","index","prev","prevTop","height","diff","getDanmuTopBySparse","topMap","push","maxRight","topMapKeys","Object","keys","minRight","width","topKey","danmuArr","danmu","right","randomKey","Math","floor","random","getDanmuTop","Danmuku","art","option","queue","layer","isStop","animationFrameTimer","i18n","update","on","start","bind","stop","config","forEach","addToQueue","init","constructor","clamp","utils","validator","assign","scheme","speed","opacity","maxlength","margin","emit","layers","add","name","style","position","left","bottom","overflow","pointerEvents","$player","template","$ref","getDanmuRef","innerText","fontSize","playerWidth","getRect","danmuWidth","$restWidth","$restTime","$lastStartTime","Date","now","transform","transition","border","$state","playerLeft","danmuLeft","translateX","notice","player","show","get","currentTime","setStyles","append","waitDanmu","find","appendChild","document","createElement","userSelect","whiteSpace","perspective","display","willChange","fontFamily","fontWeight","lineHeight","textShadow","playerTop","playerHeight","filter","danmusBySort","danmuTop","danmuHeight","sort","next","unshift","window","requestAnimationFrame","playing","suspend","cancelAnimationFrame","ref","key","result","getBoundingClientRect","artplayerPluginDanmu","danmuku","hide"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"artplayer-plugin-danmu.js","sources":["../../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-danmu/src/bilibiliDanmuParse.js","../../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-danmu/src/getDanmuTop.js","../../packages/artplayer-plugin-danmu/src/danmuku.js","../../packages/artplayer-plugin-danmu/src/index.js"],"sourcesContent":["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 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: Number(attr[1]),\n size: 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 _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;","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 { bilibiliDanmuParseFromUrl } from './bilibiliDanmuParse';\nimport getDanmuTop from './getDanmuTop';\n\nexport default class Danmuku {\n constructor(art, option) {\n this.art = art;\n this.queue = [];\n this.layer = null;\n this.isStop = false;\n this.refs = [];\n this.animationFrameTimer = null;\n art.i18n.update(Danmuku.i18n);\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 this.config(option);\n if (typeof this.option.danmus === 'function') {\n this.option.danmus().then(danmus => {\n danmus.forEach(this.addToQueue.bind(this));\n this.init();\n });\n } else if (typeof this.option.danmus === 'string') {\n bilibiliDanmuParseFromUrl(this.option.danmus).then(danmus => {\n danmus.forEach(this.addToQueue.bind(this));\n this.init();\n });\n } else {\n this.option.danmus.forEach(this.addToQueue.bind(this));\n this.init();\n }\n }\n\n static get i18n() {\n return {\n 'zh-cn': {\n 'Danmu text cannot be empty': '弹幕文本不能为空',\n 'The length of the danmu does not exceed': '弹幕文本字数不能超过',\n },\n 'zh-tw': {\n 'Danmu text cannot be empty': '彈幕文本不能為空',\n 'The length of the danmu does not exceed': '彈幕文本字數不能超過',\n },\n };\n }\n\n static get option() {\n return {\n danmus: [],\n speed: 5,\n opacity: 1,\n color: '#fff',\n size: 25,\n maxlength: 50,\n margin: [10, 20],\n };\n }\n\n static get scheme() {\n return {\n danmus: 'array|function|string',\n speed: 'number',\n opacity: 'number',\n color: 'string',\n size: 'number',\n maxlength: 'number',\n margin: 'array',\n };\n }\n\n static getRect(ref, key) {\n const result = ref.getBoundingClientRect();\n return key ? result[key] : result;\n }\n\n config(option) {\n const {\n utils: { clamp },\n validator,\n } = this.art.constructor;\n this.option = Object.assign({}, Danmuku.option, option);\n validator(this.option, Danmuku.scheme);\n this.option.speed = clamp(this.option.speed, 1, 10);\n this.option.opacity = clamp(this.option.opacity, 0, 1);\n this.option.size = clamp(this.option.size, 12, 30);\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 }\n\n init() {\n this.art.emit('artplayerPluginDanmu:loaded');\n this.layer = this.art.layers.add({\n name: 'danmu',\n style: {\n position: 'absolute',\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n width: '100%',\n height: '100%',\n overflow: 'hidden',\n pointerEvents: 'none',\n opacity: this.option.opacity,\n },\n });\n }\n\n emit(danmu) {\n const { $player } = this.art.template;\n danmu.$ref = this.getDanmuRef();\n danmu.$ref.innerText = danmu.text;\n danmu.$ref.style.fontSize = `${danmu.size || this.option.size}px`;\n const playerWidth = Danmuku.getRect($player, 'width');\n const danmuWidth = Danmuku.getRect(danmu.$ref, 'width');\n danmu.$restWidth = playerWidth + danmuWidth + 5;\n danmu.$restTime = this.option.speed;\n danmu.$lastStartTime = Date.now();\n danmu.$ref.style.color = danmu.color || this.option.color;\n danmu.$ref.style.left = `${playerWidth}px`;\n danmu.$ref.style.top = `${this.getDanmuTop()}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 if (danmu.border) {\n danmu.$ref.style.border = `1px solid ${danmu.border}`;\n }\n danmu.$state = 'emit';\n }\n\n static continue(danmu) {\n danmu.$lastStartTime = Date.now();\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 danmu.$state = 'emit';\n }\n\n resize() {\n const { $player } = this.art.template;\n const { width: playerWidth } = Danmuku.getRect($player);\n this.queue.forEach(danmu => {\n danmu.$state = 'wait';\n });\n this.refs.forEach($ref => {\n $ref.style.left = `${playerWidth}px`;\n $ref.style.border = 'none';\n $ref.style.transform = 'translateX(0px) translateY(0px) translateZ(0px)';\n $ref.style.transition = 'transform 0s linear 0s';\n });\n }\n\n suspend(danmu) {\n const { $player } = this.art.template;\n const { left: playerLeft, width: playerWidth } = Danmuku.getRect($player);\n const { left: danmuLeft } = Danmuku.getRect(danmu.$ref);\n danmu.$restTime -= (Date.now() - danmu.$lastStartTime) / 1000;\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 danmu.$state = 'stop';\n }\n\n addToQueue(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 });\n }\n\n getDanmuRef() {\n const { $player } = this.art.template;\n const { setStyles, append } = this.art.constructor.utils;\n const playerLeft = Danmuku.getRect($player, 'left');\n\n const waitDanmu = this.queue.find(danmu => {\n if (danmu.$ref) {\n const { left: danmuLeft, width: danmuWidth } = Danmuku.getRect(danmu.$ref);\n return danmu.$state === 'emit' && playerLeft > danmuLeft + danmuWidth;\n }\n return false;\n });\n\n if (waitDanmu) {\n waitDanmu.$state = 'wait';\n waitDanmu.$ref.style.border = 'none';\n waitDanmu.$ref.style.transform = 'translateX(0px) translateY(0px) translateZ(0px)';\n waitDanmu.$ref.style.transition = 'transform 0s linear 0s';\n this.layer.$ref.appendChild(waitDanmu.$ref);\n return waitDanmu.$ref;\n }\n\n const $ref = document.createElement('div');\n\n setStyles($ref, {\n userSelect: 'none',\n position: 'absolute',\n whiteSpace: 'pre',\n pointerEvents: 'none',\n perspective: '500px',\n display: 'inline-block',\n willChange: 'transform',\n fontFamily: 'SimHei, \"Microsoft JhengHei\", Arial, Helvetica, sans-serif',\n fontWeight: 'normal',\n lineHeight: '1.125',\n textShadow:\n '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 append(this.layer.$ref, $ref);\n this.refs.push($ref);\n return $ref;\n }\n\n getDanmuTop() {\n const { $player } = this.art.template;\n const { left: playerLeft, top: playerTop, height: playerHeight, width: playerWidth } = Danmuku.getRect($player);\n const danmus = this.queue.filter(danmu => 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 } = Danmuku.getRect(\n danmu.$ref,\n );\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 { player } = this.art;\n this.animationFrameTimer = window.requestAnimationFrame(() => {\n if (this.layer && player.playing) {\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 this.emit(danmu);\n });\n }\n\n if (!this.isStop) {\n this.update();\n }\n });\n }\n\n stop() {\n this.isStop = true;\n this.queue\n .filter(danmu => danmu.$state === 'emit')\n .forEach(danmu => {\n this.suspend(danmu);\n });\n window.cancelAnimationFrame(this.animationFrameTimer);\n this.art.emit('artplayerPluginDanmu:stop');\n }\n\n start() {\n this.isStop = false;\n this.queue\n .filter(danmu => danmu.$state === 'stop')\n .forEach(danmu => {\n Danmuku.continue(danmu);\n });\n this.update();\n this.art.emit('artplayerPluginDanmu:start');\n }\n\n show() {\n this.layer.$ref.style = 'none';\n this.art.emit('artplayerPluginDanmu:show');\n }\n\n hide() {\n this.layer.$ref.style = 'block';\n this.art.emit('artplayerPluginDanmu:hide');\n }\n}\n","import { bilibiliDanmuParseFromXml, bilibiliDanmuParseFromAv, bilibiliDanmuParseFromUrl } from './bilibiliDanmuParse';\nimport Danmuku from './danmuku';\n\nfunction artplayerPluginDanmu(option) {\n return art => {\n const danmuku = new Danmuku(art, option);\n return {\n name: 'artplayerPluginDanmu',\n emit: danmuku.addToQueue.bind(danmuku),\n config: danmuku.config.bind(danmuku),\n start: danmuku.start.bind(danmuku),\n stop: danmuku.stop.bind(danmuku),\n hide: danmuku.hide.bind(danmuku),\n show: danmuku.show.bind(danmuku),\n };\n };\n}\n\nartplayerPluginDanmu.bilibiliDanmuParseFromXml = bilibiliDanmuParseFromXml;\nartplayerPluginDanmu.bilibiliDanmuParseFromAv = bilibiliDanmuParseFromAv;\nartplayerPluginDanmu.bilibiliDanmuParseFromUrl = bilibiliDanmuParseFromUrl;\nwindow.artplayerPluginDanmu = artplayerPluginDanmu;\nexport default artplayerPluginDanmu;\n"],"names":["bilibiliDanmuParseFromXml","xmlString","srtList","match","length","map","item","attrStr","text","attr","split","trim","time","Number","mode","size","color","toString","timestamp","pool","userID","rowID","bilibiliDanmuParseFromUrl","url","fetch","then","res","bilibiliDanmuParseFromAv","av","corsUrl","json","code","data","cid","Error","JSON","stringify","getDanmuTopByDiff","danmus","top","maxDiff","index","prev","prevTop","height","diff","getDanmuTopBySparse","topMap","push","maxRight","topMapKeys","Object","keys","minRight","width","topKey","danmuArr","danmu","right","randomKey","Math","floor","random","getDanmuTop","Danmuku","art","option","queue","layer","isStop","refs","animationFrameTimer","i18n","update","on","start","bind","stop","resize","config","forEach","addToQueue","init","constructor","clamp","utils","validator","assign","scheme","speed","opacity","maxlength","margin","emit","layers","add","name","style","position","left","bottom","overflow","pointerEvents","$player","template","$ref","getDanmuRef","innerText","fontSize","playerWidth","getRect","danmuWidth","$restWidth","$restTime","$lastStartTime","Date","now","transform","transition","border","$state","playerLeft","danmuLeft","translateX","notice","player","show","get","currentTime","setStyles","append","waitDanmu","find","appendChild","document","createElement","userSelect","whiteSpace","perspective","display","willChange","fontFamily","fontWeight","lineHeight","textShadow","playerTop","playerHeight","filter","danmusBySort","danmuTop","danmuHeight","sort","next","unshift","window","requestAnimationFrame","playing","suspend","cancelAnimationFrame","ref","key","result","getBoundingClientRect","artplayerPluginDanmu","danmuku","hide"],"mappings":"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"} \ No newline at end of file diff --git a/packages/artplayer-plugin-danmu/src/danmuku.js b/packages/artplayer-plugin-danmu/src/danmuku.js index e764140cb..37806988a 100644 --- a/packages/artplayer-plugin-danmu/src/danmuku.js +++ b/packages/artplayer-plugin-danmu/src/danmuku.js @@ -7,12 +7,14 @@ export default class Danmuku { this.queue = []; this.layer = null; this.isStop = false; + this.refs = []; this.animationFrameTimer = null; art.i18n.update(Danmuku.i18n); art.on('video:play', this.start.bind(this)); art.on('video:playing', this.start.bind(this)); art.on('video:pause', this.stop.bind(this)); art.on('video:waiting', this.stop.bind(this)); + art.on('resize', this.resize.bind(this)); art.on('destroy', this.stop.bind(this)); this.config(option); if (typeof this.option.danmus === 'function') { @@ -135,6 +137,20 @@ export default class Danmuku { danmu.$state = 'emit'; } + resize() { + const { $player } = this.art.template; + const { width: playerWidth } = Danmuku.getRect($player); + this.queue.forEach(danmu => { + danmu.$state = 'wait'; + }); + this.refs.forEach($ref => { + $ref.style.left = `${playerWidth}px`; + $ref.style.border = 'none'; + $ref.style.transform = 'translateX(0px) translateY(0px) translateZ(0px)'; + $ref.style.transition = 'transform 0s linear 0s'; + }); + } + suspend(danmu) { const { $player } = this.art.template; const { left: playerLeft, width: playerWidth } = Danmuku.getRect($player); @@ -211,6 +227,7 @@ export default class Danmuku { }); append(this.layer.$ref, $ref); + this.refs.push($ref); return $ref; }