diff --git a/docs/compiled/artplayer-plugin-danmuku.js b/docs/compiled/artplayer-plugin-danmuku.js index 59e8bacf6..7517f089f 100644 --- a/docs/compiled/artplayer-plugin-danmuku.js +++ b/docs/compiled/artplayer-plugin-danmuku.js @@ -5,4 +5,4 @@ * (c) 2017-2024 Harvey Zack * Released under the MIT License. */ -!function(e,t,i,a,n){var o="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},s="function"==typeof o[a]&&o[a],l=s.cache||{},r="undefined"!=typeof module&&"function"==typeof module.require&&module.require.bind(module);function d(t,i){if(!l[t]){if(!e[t]){var n="function"==typeof o[a]&&o[a];if(!i&&n)return n(t,!0);if(s)return s(t,!0);if(r&&"string"==typeof t)return r(t);var p=Error("Cannot find module '"+t+"'");throw p.code="MODULE_NOT_FOUND",p}h.resolve=function(i){var a=e[t][1][i];return null!=a?a:i},h.cache={};var u=l[t]=new d.Module(t);e[t][0].call(u.exports,h,u,u.exports,this)}return l[t].exports;function h(e){var t=h.resolve(e);return!1===t?{}:d(t)}}d.isParcelRequire=!0,d.Module=function(e){this.id=e,this.bundle=d,this.exports={}},d.modules=e,d.cache=l,d.parent=s,d.register=function(t,i){e[t]=[function(e,t){t.exports=i},{}]},Object.defineProperty(d,"root",{get:function(){return o[a]}}),o[a]=d;for(var p=0;pp);var n=e("./danmuku"),o=a.interopDefault(n),s=e("./setting"),l=a.interopDefault(s),r=e("./heatmap"),d=a.interopDefault(r);function p(e){return t=>{let i=new o.default(t,e),a=new l.default(t,i);return i.option.heatmap&&(0,d.default)(t,i,i.option.heatmap),{name:"artplayerPluginDanmuku",emit:i.emit.bind(i),load:i.load.bind(i),config:i.config.bind(i),hide:i.hide.bind(i),show:i.show.bind(i),reset:i.reset.bind(i),mount:a.mount.bind(a),get option(){return i.option},get isHide(){return i.isHide},get isStop(){return i.isStop}}}}p.icons=l.default.icons,"undefined"!=typeof window&&(window.artplayerPluginDanmuku=p)},{"./danmuku":"4ns48","./setting":"lO8OT","./heatmap":"8AxLD","@parcel/transformer-js/src/esmodule-helpers.js":"9pCYc"}],"4ns48":[function(e,t,i){var a=e("@parcel/transformer-js/src/esmodule-helpers.js");a.defineInteropFlag(i);var n=e("./bilibili"),o=e("bundle-text:./worker"),s=a.interopDefault(o);class l{constructor(e,t){let{constructor:i,template:a}=e;this.utils=i.utils,this.validator=i.validator,this.$danmuku=a.$danmuku,this.$player=a.$player,this.art=e,this.danmus=[],this.queue=[],this.$refs=[],this.isStop=!1,this.isHide=!1,this.timer=null,this.index=0,this.option=l.option,this.states={wait:[],ready:[],emit:[],stop:[]},this.config(t),this.worker=new Worker(URL.createObjectURL(new Blob([s.default]))),this.start=this.start.bind(this),this.stop=this.stop.bind(this),this.reset=this.reset.bind(this),this.resize=this.resize.bind(this),this.destroy=this.destroy.bind(this),e.on("video:play",this.start),e.on("video:playing",this.start),e.on("video:pause",this.stop),e.on("video:waiting",this.stop),e.on("destroy",this.destroy),e.on("resize",this.resize),this.load()}static get option(){return{danmuku:[],speed:5,margin:[10,"25%"],opacity:1,color:"#FFFFFF",mode:0,modes:[0,1,2],fontSize:25,antiOverlap:!0,synchronousPlayback:!1,mount:void 0,heatmap:!1,points:[],filter:()=>!0,beforeEmit:()=>!0,beforeVisible:()=>!0,visible:!0,emitter:!0,maxLength:200,lockTime:5,theme:"dark",OPACITY:{},FONT_SIZE:{},MARGIN:{},SPEED:{},COLOR:[]}}static get scheme(){return{danmuku:"array|function|string",speed:"number",margin:"array",opacity:"number",color:"string",mode:"number",modes:"array",fontSize:"number|string",antiOverlap:"boolean",synchronousPlayback:"boolean",mount:"?htmldivelement|string",heatmap:"object|boolean",points:"array",filter:"function",beforeEmit:"function",beforeVisible:"function",visible:"boolean",emitter:"boolean",maxLength:"number",lockTime:"number",theme:"string",OPACITY:"object",FONT_SIZE:"object",MARGIN:"object",SPEED:"object",COLOR:"array"}}static get cssText(){return` user-select: none; position: absolute; white-space: pre; pointer-events: none; perspective: 500px; display: inline-block; will-change: transform; font-weight: normal; line-height: 1.125; visibility: hidden; font-family: SimHei, "Microsoft JhengHei", Arial, Helvetica, sans-serif; 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; `}get isRotate(){return this.art.plugins?.autoOrientation?.state}get marginTop(){let{clamp:e}=this.utils,t=this.option.margin[0],{clientHeight:i}=this.$player;return"number"==typeof t?e(t,0,i):"string"==typeof t&&t.endsWith("%")?e(i*(parseFloat(t)/100),0,i):l.option.margin[0]}get marginBottom(){let{clamp:e}=this.utils,t=this.option.margin[1],{clientHeight:i}=this.$player;return"number"==typeof t?e(t,0,i):"string"==typeof t&&t.endsWith("%")?e(i*(parseFloat(t)/100),0,i):l.option.margin[1]}get fontSize(){let{clamp:e}=this.utils,{clientHeight:t}=this.$player,i=this.option.fontSize;return"number"==typeof i?e(i,12,t):"string"==typeof i&&i.endsWith("%")?e(t*(parseFloat(i)/100),12,t):l.option.fontSize}get $ref(){let e=this.$refs.pop()||document.createElement("div");return e.style.cssText=l.cssText,e.dataset.mode="",e.className="",e}get readys(){let{currentTime:e}=this.art,t=[];return this.filter("ready",e=>t.push(e)),this.filter("wait",i=>{e+.1>=i.time&&i.time>=e-.1&&t.push(i)}),t}get visibles(){let e=[],{clientWidth:t}=this.$player,i=this.getLeft(this.$player);return this.filter("emit",a=>{let n=a.$ref.offsetTop,o=this.getLeft(a.$ref)-i,s=a.$ref.clientHeight,l=a.$ref.clientWidth,r=o+l,d=r/a.$restTime,p={};p.top=n,p.left=o,p.height=s,p.width=l,p.right=t-r,p.speed=d,p.distance=r,p.time=a.$restTime,p.mode=a.mode,e.push(p)}),e}get speed(){return this.option.synchronousPlayback&&this.art.playbackRate?this.option.speed/Number(this.art.playbackRate):this.option.speed}async load(){let{errorHandle:e}=this.utils;try{"function"==typeof this.option.danmuku?this.danmus=await this.option.danmuku():"function"==typeof this.option.danmuku.then?this.danmus=await this.option.danmuku:"string"==typeof this.option.danmuku?this.danmus=await (0,n.bilibiliDanmuParseFromUrl)(this.option.danmuku):this.danmus=this.option.danmuku,e(Array.isArray(this.danmus),"Danmuku need return an array as result"),this.queue=[],this.$danmuku.innerText="",this.danmus.forEach(e=>this.emit(e)),this.art.emit("artplayerPluginDanmuku:loaded",this.queue)}catch(e){throw this.art.emit("artplayerPluginDanmuku:error",e),e}return this}emit(e){let{clamp:t}=this.utils;if(this.validator(e,{text:"string",mode:"?number",color:"?string",time:"?number",border:"?boolean",style:"?object"}),!e.text.trim()||(e.time?e.time=t(e.time,0,1/0):e.time=this.art.currentTime+.5,void 0===e.mode&&(e.mode=this.option.mode),void 0===e.style&&(e.style={}),void 0===e.color&&(e.color=this.option.color),![0,1,2].includes(e.mode)||!this.option.filter(e)))return this;let i={...e,$state:"wait",$id:this.index++,$ref:null,$restTime:0,$lastStartTime:0};return this.setState(i,"wait"),this.queue.push(i),this}config(e){let{clamp:t}=this.utils,{$controlsCenter:i}=this.art.template;return Object.keys(e).some(t=>JSON.stringify(this.option[t])!==JSON.stringify(e[t]))&&(this.option=Object.assign({},l.option,this.option,e),this.validator(this.option,l.scheme),this.option.mode=t(this.option.mode,0,2),this.option.speed=t(this.option.speed,1,10),this.option.opacity=t(this.option.opacity,0,1),this.option.lockTime=t(this.option.lockTime,1,60),this.option.maxLength=t(this.option.maxLength,1,1e3),this.option.mount=this.option.mount||i,e.fontSize&&this.reset(),this.option.visible?this.show():this.hide(),this.art.emit("artplayerPluginDanmuku:config",this.option)),this}getLeft(e){let t=e.getBoundingClientRect();return this.isRotate?t.top:t.left}postMessage(e={}){return new Promise(t=>{e.id=Date.now(),this.worker.postMessage(e),this.worker.onmessage=i=>{let{data:a}=i;a.id===e.id&&t(a)}})}filter(e,t){let i=this.states[e]||[];for(let e=0;et!==e),e.$state=t,e.$ref&&(e.$ref.dataset.state=t),this.states[t].push(e)}makeWait(e){this.setState(e,"wait"),e.$ref&&(e.$ref.style.cssText=l.cssText,e.$ref.style.visibility="hidden",e.$ref.style.marginLeft="0px",e.$ref.style.transform="translateX(0px)",e.$ref.style.transition="transform 0s linear 0s",this.$refs.push(e.$ref),e.$ref=null)}update(){let{setStyles:e}=this.utils;return this.timer=window.requestAnimationFrame(async()=>{if(this.art.playing&&!this.isHide){this.filter("emit",e=>{let t=(Date.now()-e.$lastStartTime)/1e3;e.$restTime-=t,e.$lastStartTime=Date.now(),e.$restTime<=0&&this.makeWait(e)});let t=this.readys;for(let i=0;i{0===t.mode&&(t.$ref.style.left=`${e}px`)}),this.filter("emit",t=>{if(t.$lastStartTime=Date.now(),0===t.mode){let i=e+t.$ref.clientWidth;t.$ref.style.left=`${e}px`,t.$ref.style.transform=`translateX(${-i}px)`,t.$ref.style.transition=`transform ${t.$restTime}s linear 0s`}})}continue(){let{clientWidth:e}=this.$player;return this.filter("stop",t=>{if(this.setState(t,"emit"),t.$lastStartTime=Date.now(),0===t.mode){let i=e+t.$ref.clientWidth;t.$ref.style.transform=`translateX(${-i}px)`,t.$ref.style.transition=`transform ${t.$restTime}s linear 0s`}}),this}suspend(){let{clientWidth:e}=this.$player;return this.filter("emit",t=>{if(this.setState(t,"stop"),0===t.mode){let i=e-(this.getLeft(t.$ref)-this.getLeft(this.$player));t.$ref.style.transform=`translateX(${-i}px)`,t.$ref.style.transition="transform 0s linear 0s"}}),this}stop(){return this.isStop=!0,this.suspend(),window.cancelAnimationFrame(this.timer),this.art.emit("artplayerPluginDanmuku:stop"),this}start(){return this.isStop=!1,this.continue(),this.update(),this.art.emit("artplayerPluginDanmuku:start"),this}reset(){return this.queue.forEach(e=>this.makeWait(e)),this.art.emit("artplayerPluginDanmuku:reset"),this}show(){return this.isHide=!1,this.$danmuku.style.opacity=1,this.option.visible=!0,this.art.emit("artplayerPluginDanmuku:show"),this}hide(){return this.isHide=!0,this.$danmuku.style.opacity=0,this.option.visible=!1,this.art.emit("artplayerPluginDanmuku:hide"),this}destroy(){this.stop(),this.worker.terminate(),this.art.off("video:play",this.start),this.art.off("video:playing",this.start),this.art.off("video:pause",this.stop),this.art.off("video:waiting",this.stop),this.art.off("resize",this.reset),this.art.off("destroy",this.destroy),this.art.emit("artplayerPluginDanmuku:destroy")}}i.default=l},{"./bilibili":"f83sx","bundle-text:./worker":"lfIAi","@parcel/transformer-js/src/esmodule-helpers.js":"9pCYc"}],f83sx:[function(e,t,i){var a=e("@parcel/transformer-js/src/esmodule-helpers.js");function n(e){switch(e){case 1:case 2:case 3:default:return 0;case 4:return 2;case 5:return 1}}function o(e){return"string"!=typeof e?[]:Array.from(e.matchAll(/(?.+?)<\/d>/gs)).map(e=>{let t=e.groups.p.split(",");return t.length>=8?{text:e.groups.text.trim().replaceAll(""",'"').replaceAll("'","'").replaceAll("<","<").replaceAll(">",">").replaceAll("&","&"),time:Number(t[0]),mode:n(Number(t[1])),fontSize:Number(t[2]),color:`#${Number(t[3]).toString(16)}`,timestamp:Number(t[4]),pool:Number(t[5]),userID:t[6],rowID:Number(t[7])}:null}).filter(Boolean)}async function s(e){let t=await fetch(e);return o(await t.text())}a.defineInteropFlag(i),a.export(i,"getMode",()=>n),a.export(i,"bilibiliDanmuParseFromXml",()=>o),a.export(i,"bilibiliDanmuParseFromUrl",()=>s)},{"@parcel/transformer-js/src/esmodule-helpers.js":"9pCYc"}],"9pCYc":[function(e,t,i){i.interopDefault=function(e){return e&&e.__esModule?e:{default:e}},i.defineInteropFlag=function(e){Object.defineProperty(e,"__esModule",{value:!0})},i.exportAll=function(e,t){return Object.keys(e).forEach(function(i){"default"===i||"__esModule"===i||Object.prototype.hasOwnProperty.call(t,i)||Object.defineProperty(t,i,{enumerable:!0,get:function(){return e[i]}})}),t},i.export=function(e,t,i){Object.defineProperty(e,t,{enumerable:!0,get:i})}},{}],lfIAi:[function(e,t,i){t.exports='!function(e,t,n,o,i){var r="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},f="function"==typeof r[o]&&r[o],l=f.cache||{},d="undefined"!=typeof module&&"function"==typeof module.require&&module.require.bind(module);function u(t,n){if(!l[t]){if(!e[t]){var i="function"==typeof r[o]&&r[o];if(!n&&i)return i(t,!0);if(f)return f(t,!0);if(d&&"string"==typeof t)return d(t);var h=Error("Cannot find module \'"+t+"\'");throw h.code="MODULE_NOT_FOUND",h}p.resolve=function(n){var o=e[t][1][n];return null!=o?o:n},p.cache={};var s=l[t]=new u.Module(t);e[t][0].call(s.exports,p,s,s.exports,this)}return l[t].exports;function p(e){var t=p.resolve(e);return!1===t?{}:u(t)}}u.isParcelRequire=!0,u.Module=function(e){this.id=e,this.bundle=u,this.exports={}},u.modules=e,u.cache=l,u.parent=f,u.register=function(t,n){e[t]=[function(e,t){t.exports=n},{}]},Object.defineProperty(u,"root",{get:function(){return r[o]}}),r[o]=u;for(var h=0;h{let{data:t}=e;if(!t.id)return;let n=function({target:e,visibles:t,clientWidth:n,clientHeight:o,marginBottom:i,marginTop:r,antiOverlap:f}){let l=o-i,d=t.filter(t=>t.mode===e.mode&&t.top<=l).sort((e,t)=>e.top-t.top);if(0===d.length)return 2===e.mode?l-e.height:r;if(d.unshift({type:"top",top:0,left:0,right:0,height:r,width:n,speed:0,distance:n}),d.push({type:"bottom",top:l,left:0,right:0,height:i,width:n,speed:0,distance:n}),2===e.mode)for(let t=d.length-2;t>=0;t-=1){let n=d[t],o=d[t+1],i=n.top+n.height;if(o.top-i>=e.height)return o.top-e.height}else for(let t=1;t=e.height)return i}let u=[];for(let e=1;et.every(t=>!(nt.time)));return t&&t[0]?t[0].top:void 0}case 1:case 2:return}else{switch(e.mode){case 0:u.sort((e,t)=>{let n=Math.min(...t.map(e=>e.right)),o=Math.min(...e.map(e=>e.right));return n*t.length-o*e.length});break;case 1:case 2:u.sort((e,t)=>{let n=Math.max(...t.map(e=>e.width));return Math.max(...e.map(e=>e.width))*e.length-n*t.length})}return u[0][0].top}}(t);self.postMessage({top:n,id:t.id})}},{}]},["59OZS"],"59OZS","parcelRequire4dc0");'},{}],lO8OT:[function(e,t,i){var a=e("@parcel/transformer-js/src/esmodule-helpers.js");a.defineInteropFlag(i);var n=e("bundle-text:./style.less"),o=a.interopDefault(n),s=e("bundle-text:./img/on.svg"),l=a.interopDefault(s),r=e("bundle-text:./img/off.svg"),d=a.interopDefault(r),p=e("bundle-text:./img/config.svg"),u=a.interopDefault(p),h=e("bundle-text:./img/style.svg"),m=a.interopDefault(h),c=e("bundle-text:./img/mode_0_off.svg"),f=a.interopDefault(c),g=e("bundle-text:./img/mode_0_on.svg"),v=a.interopDefault(g),y=e("bundle-text:./img/mode_1_off.svg"),x=a.interopDefault(y),k=e("bundle-text:./img/mode_1_on.svg"),b=a.interopDefault(k),$=e("bundle-text:./img/mode_2_off.svg"),w=a.interopDefault($),M=e("bundle-text:./img/mode_2_on.svg"),E=a.interopDefault(M),D=e("bundle-text:./img/check_on.svg"),S=a.interopDefault(D),z=e("bundle-text:./img/check_off.svg"),A=a.interopDefault(z);if(i.default=class{constructor(e,t){this.art=e,this.danmuku=t,this.utils=e.constructor.utils;let{setStyle:i}=this.utils,{$controlsCenter:a}=e.template;i(a,"display","flex"),this.template={$controlsCenter:a,$mount:a,$danmuku:null,$toggle:null,$configModes:null,$styleModes:null,$colors:null,$opacitySlider:null,$opacityValue:null,$marginSlider:null,$marginValue:null,$fontSizeSlider:null,$fontSizeValue:null,$speedSlider:null,$speedValue:null,$input:null,$send:null},this.slider={opacity:null,margin:null,fontSize:null,speed:null},this.emitting=!1,this.isLock=!1,this.timer=null,this.createTemplate(),this.createSliders(),this.createEvents(),this.mount(this.option.mount),e.on("fullscreen",e=>this.onFullscreen(e)),e.on("fullscreenWeb",e=>this.onFullscreen(e))}static get icons(){return{$on:l.default,$off:d.default,$config:u.default,$style:m.default,$mode_0_off:f.default,$mode_0_on:v.default,$mode_1_off:x.default,$mode_1_on:b.default,$mode_2_off:w.default,$mode_2_on:E.default,$check_on:S.default,$check_off:A.default}}get option(){return this.danmuku.option}get outside(){return this.template.$mount!==this.template.$controlsCenter}get TEMPLATE(){let{option:e}=this;return`
${l.default}${d.default}
${u.default}
\u{6309}\u{7C7B}\u{578B}\u{5C4F}\u{853D}
${f.default}${v.default}
\u{6EDA}\u{52A8}
${x.default}${b.default}
\u{9876}\u{90E8}
${w.default}${E.default}
\u{5E95}\u{90E8}
${S.default}${A.default} \u{9632}\u{6B62}\u{5F39}\u{5E55}\u{91CD}\u{53E0}
${S.default}${A.default} \u{540C}\u{6B65}\u{89C6}\u{9891}\u{901F}\u{5EA6}
\u{4E0D}\u{900F}\u{660E}\u{5EA6}
\u{672A}\u{77E5}
\u{663E}\u{793A}\u{533A}\u{57DF}
\u{672A}\u{77E5}
\u{5F39}\u{5E55}\u{5B57}\u{53F7}
\u{672A}\u{77E5}
\u{5F39}\u{5E55}\u{901F}\u{5EA6}
\u{672A}\u{77E5}
${m.default}
\u{6A21}\u{5F0F}
${v.default}
\u{6EDA}\u{52A8}
${b.default}
\u{9876}\u{90E8}
${E.default}
\u{5E95}\u{90E8}
\u{989C}\u{8272}
${this.COLOR.map(e=>`
`).join("")}
\u{53D1}\u{9001}
`}get OPACITY(){return{min:0,max:100,steps:[],...this.option.OPACITY}}get FONT_SIZE(){return{min:12,max:120,steps:[],...this.option.FONT_SIZE}}get MARGIN(){return{min:0,max:3,steps:[{name:"1/4",value:[10,"75%"]},{name:"半屏",value:[10,"50%"]},{name:"3/4",value:[10,"25%"]},{name:"满屏",value:[10,10]}],...this.option.MARGIN}}get SPEED(){return{min:0,max:4,steps:[{name:"极慢",value:10},{name:"较慢",value:7.5,hide:!0},{name:"适中",value:5},{name:"较快",value:2.5,hide:!0},{name:"极快",value:1}],...this.option.SPEED}}get COLOR(){return this.option.COLOR.length?this.option.COLOR:["#FE0302","#FF7204","#FFAA02","#FFD302","#FFFF00","#A0EE00","#00CD00","#019899","#4266BE","#89D5FF","#CC0273","#222222","#9B9B9B","#FFFFFF"]}query(e){let{query:t}=this.utils,{$danmuku:i}=this.template;return t(e,i)}setData(e,t){let{$player:i}=this.art.template,{$mount:a}=this.template;i.dataset[e]=t,this.outside&&(a.dataset[e]=t)}createTemplate(){let{createElement:e,tooltip:t}=this.utils,i=e("div");i.className="artplayer-plugin-danmuku",i.innerHTML=this.TEMPLATE,this.template.$danmuku=i,this.template.$toggle=this.query(".apd-toggle"),this.template.$configModes=this.query(".apd-config-mode .apd-modes"),this.template.$styleModes=this.query(".apd-style-mode .apd-modes"),this.template.$colors=this.query(".apd-colors"),this.template.$antiOverlap=this.query(".apd-anti-overlap"),this.template.$syncVideo=this.query(".apd-sync-video"),this.template.$opacitySlider=this.query(".apd-config-opacity .apd-slider"),this.template.$opacityValue=this.query(".apd-config-opacity .apd-value"),this.template.$marginSlider=this.query(".apd-config-margin .apd-slider"),this.template.$marginValue=this.query(".apd-config-margin .apd-value"),this.template.$fontSizeSlider=this.query(".apd-config-fontSize .apd-slider"),this.template.$fontSizeValue=this.query(".apd-config-fontSize .apd-value"),this.template.$speedSlider=this.query(".apd-config-speed .apd-slider"),this.template.$speedValue=this.query(".apd-config-speed .apd-value"),this.template.$input=this.query(".apd-input"),this.template.$send=this.query(".apd-send");let{$toggle:a}=this.template;this.art.on("artplayerPluginDanmuku:show",()=>{t(a,"关闭弹幕")}),this.art.on("artplayerPluginDanmuku:hide",()=>{t(a,"打开弹幕")})}createEvents(){let{$toggle:e,$configModes:t,$styleModes:i,$colors:a,$antiOverlap:n,$syncVideo:o,$send:s,$input:l}=this.template;this.art.proxy(e,"click",()=>{this.danmuku.config({visible:!this.option.visible}),this.reset()}),this.art.proxy(t,"click",e=>{let t=e.target.closest(".apd-mode");if(!t)return;let i=Number(t.dataset.mode);this.option.modes.includes(i)?this.danmuku.config({modes:this.option.modes.filter(e=>e!==i)}):this.danmuku.config({modes:[...this.option.modes,i]}),this.reset()}),this.art.proxy(n,"click",()=>{this.danmuku.config({antiOverlap:!this.option.antiOverlap}),this.reset()}),this.art.proxy(o,"click",()=>{this.danmuku.config({synchronousPlayback:!this.option.synchronousPlayback}),this.reset()}),this.art.proxy(i,"click",e=>{let t=e.target.closest(".apd-mode");if(!t)return;let i=Number(t.dataset.mode);this.danmuku.config({mode:i}),this.reset()}),this.art.proxy(a,"click",e=>{let t=e.target.closest(".apd-color");t&&(this.danmuku.config({color:t.dataset.color}),this.reset())}),this.art.proxy(s,"click",()=>this.emit()),this.art.proxy(l,"keypress",e=>{"Enter"===e.key&&(e.preventDefault(),this.emit())})}createSliders(){this.slider.opacity=this.createSlider({...this.OPACITY,container:this.template.$opacitySlider,findIndex:()=>Math.round(100*this.option.opacity),onChange:e=>{let{$opacityValue:t}=this.template;t.textContent=`${e}%`,this.danmuku.config({opacity:e/100})}}),this.slider.margin=this.createSlider({...this.MARGIN,container:this.template.$marginSlider,findIndex:()=>this.MARGIN.steps.findIndex(e=>e.value[0]===this.option.margin[0]&&e.value[1]===this.option.margin[1]),onChange:e=>{let t=this.MARGIN.steps[e];if(!t)return;let{$marginValue:i}=this.template;i.textContent=t.name,this.danmuku.config({margin:t.value})}}),this.slider.fontSize=this.createSlider({...this.FONT_SIZE,container:this.template.$fontSizeSlider,findIndex:()=>Math.round(this.danmuku.fontSize),onChange:e=>{let{$fontSizeValue:t}=this.template;t.textContent=`${e}px`,this.danmuku.config({fontSize:e})}}),this.slider.speed=this.createSlider({...this.SPEED,container:this.template.$speedSlider,findIndex:()=>this.SPEED.steps.findIndex(e=>e.value===this.option.speed),onChange:e=>{let t=this.SPEED.steps[e];if(!t)return;let{$speedValue:i}=this.template;i.textContent=t.name,this.danmuku.config({speed:t.value})}})}createSlider({min:e,max:t,container:i,findIndex:a,onChange:n,steps:o=[]}){let{query:s,clamp:l}=this.utils;i.innerHTML=`
${o.map(()=>'
').join("")}
${o.map(e=>e.hide?"":`
${e.name}
`).join("")}
`;let r=s(".apd-slider-dot",i),d=s(".apd-slider-progress",i),p=!1;function u(i=a()){if(it)return;let s=(i-e)/(t-e);r.style.left=`${100*s}%`,0===o.length&&(d.style.width=r.style.left),n(i)}function h(a){let{left:n,width:o}=i.getBoundingClientRect();u(Math.round(l(a.clientX-n,0,o)/o*(t-e)+e))}return this.art.proxy(i,"click",e=>{h(e)}),this.art.proxy(i,"mousedown",e=>{p=0===e.button}),this.art.on("document:mousemove",e=>{p&&h(e)}),this.art.on("document:mouseup",e=>{p&&(p=!1,h(e))}),{reset:u}}onFullscreen(e){if(this.outside){let{$danmuku:t,$controlsCenter:i,$mount:a}=this.template;e?i.appendChild(t):a.appendChild(t)}}async emit(){let{$input:e}=this.template,t=e.value.trim();if(!t.length||this.isLock||this.emitting)return;let i={text:t,mode:this.option.mode,color:this.option.color,time:this.art.currentTime};try{this.emitting=!0;let t=await this.option.beforeEmit(i);if(this.emitting=!1,!0!==t)return;i.border=!0,delete i.time,this.danmuku.emit(i),e.value="",this.lock()}catch(e){this.emitting=!1}}lock(){let{addClass:e}=this.utils,{$send:t}=this.template;this.isLock=!0;let i=this.option.lockTime;t.innerText=i,e(t,"apd-lock");let a=()=>{this.timer=setTimeout(()=>{0===i?this.unlock():(i-=1,t.innerText=i,a())},1e3)};a()}unlock(){let{removeClass:e}=this.utils,{$send:t}=this.template;clearTimeout(this.timer),this.isLock=!1,t.innerText="发送",e(t,"apd-lock")}reset(){let{inverseClass:e,tooltip:t}=this.utils,{$toggle:i,$colors:a}=this.template;this.slider.opacity.reset(),this.slider.margin.reset(),this.slider.fontSize.reset(),this.slider.speed.reset(),this.setData("danmukuVisible",this.option.visible),this.setData("danmukuMode",this.option.mode),this.setData("danmukuColor",this.option.color),this.setData("danmukuMode0",this.option.modes.includes(0)),this.setData("danmukuMode1",this.option.modes.includes(1)),this.setData("danmukuMode2",this.option.modes.includes(2)),this.setData("danmukuAntiOverlap",this.option.antiOverlap),this.setData("danmukuSyncVideo",this.option.synchronousPlayback),this.setData("danmukuTheme",this.option.theme),this.setData("danmukuEmitter",this.option.emitter);let n=Array.from(a.children).find(e=>e.dataset.color===this.option.color.toUpperCase());n&&e(n,"apd-active"),t(i,this.option.visible?"关闭弹幕":"打开弹幕")}mount(e){let t="string"==typeof e?document.querySelector(e):e;t.appendChild(this.template.$danmuku),this.template.$mount=t,this.reset()}},"undefined"!=typeof document){let e="artplayer-plugin-danmuku",t=document.getElementById(e);if(t)t.textContent=o.default;else{let t=document.createElement("style");t.id=e,t.textContent=o.default,document.head.appendChild(t)}}},{"bundle-text:./style.less":"hViDo","bundle-text:./img/on.svg":"9pjcf","bundle-text:./img/off.svg":"b2dkP","bundle-text:./img/config.svg":"l8tyy","bundle-text:./img/style.svg":"5iZC3","bundle-text:./img/mode_0_off.svg":"i0Vut","bundle-text:./img/mode_0_on.svg":"hOSvZ","bundle-text:./img/mode_1_off.svg":"bOXC3","bundle-text:./img/mode_1_on.svg":"lKuh0","bundle-text:./img/mode_2_off.svg":"eB8W6","bundle-text:./img/mode_2_on.svg":"bpe2E","bundle-text:./img/check_on.svg":"kL9zy","bundle-text:./img/check_off.svg":"22xpM","@parcel/transformer-js/src/esmodule-helpers.js":"9pCYc"}],hViDo:[function(e,t,i){t.exports='.artplayer-plugin-danmuku{z-index:99;color:#fff;flex-shrink:0;justify-content:center;align-items:center;gap:10px;width:100%;height:32px;font-size:12px;font-weight:300;display:flex;position:relative}.artplayer-plugin-danmuku .apd-icon{cursor:pointer;opacity:.75;fill:#fff;transition:all .2s}.artplayer-plugin-danmuku .apd-icon:hover{opacity:1}.artplayer-plugin-danmuku .apd-config{display:flex;position:relative}.artplayer-plugin-danmuku .apd-config .apd-config-panel{width:320px;padding:10px;display:none;position:absolute;bottom:24px;left:-148px}.artplayer-plugin-danmuku .apd-config .apd-config-panel .apd-config-panel-inner{background-color:#000000d9;border-radius:3px;width:100%;padding:10px}.artplayer-plugin-danmuku .apd-config:hover .apd-config-panel{display:flex}.artplayer-plugin-danmuku .apd-config-mode,.artplayer-plugin-danmuku .apd-config-slider,.artplayer-plugin-danmuku .apd-config-other,.artplayer-plugin-danmuku .apd-style-mode{margin-bottom:15px}.artplayer-plugin-danmuku .apd-modes{align-items:center;gap:20px;margin-top:5px;display:flex}.artplayer-plugin-danmuku .apd-modes .apd-mode{cursor:pointer;text-align:center}.artplayer-plugin-danmuku .apd-modes .apd-mode:hover{color:#00a1d6}.artplayer-plugin-danmuku .apd-config-slider{align-items:center;gap:12px;display:flex}.artplayer-plugin-danmuku .apd-config-slider .apd-value{text-align:right;width:32px}.artplayer-plugin-danmuku .apd-slider{cursor:pointer;flex:1;justify-content:center;align-items:center;height:20px;display:flex;position:relative}.artplayer-plugin-danmuku .apd-slider .apd-slider-line{background-color:#ffffff40;border-radius:3px;width:100%;height:2px;position:relative;overflow:hidden}.artplayer-plugin-danmuku .apd-slider .apd-slider-points{justify-content:space-between;align-items:center;display:flex;position:absolute;inset:0}.artplayer-plugin-danmuku .apd-slider .apd-slider-points .apd-slider-point{background-color:#ffffff80;border-radius:50%;width:2px;height:2px}.artplayer-plugin-danmuku .apd-slider .apd-slider-progress{background-color:#00a1d6;width:0%;height:100%}.artplayer-plugin-danmuku .apd-slider .apd-slider-dot{background-color:#00a1d6;border-radius:50%;width:12px;height:12px;position:absolute;left:0%;transform:translate(-6px)}.artplayer-plugin-danmuku .apd-slider .apd-slider-steps{color:#777;justify-content:space-between;align-items:center;width:calc(100% + 32px);display:flex;position:absolute;bottom:-12px}.artplayer-plugin-danmuku .apd-slider .apd-slider-steps .apd-slider-step{text-align:center;flex-shrink:0;width:36px;scale:.95}.artplayer-plugin-danmuku .apd-config-other{align-items:center;gap:20px;display:flex}.artplayer-plugin-danmuku .apd-config-other .apd-check-off,.artplayer-plugin-danmuku .apd-config-other .apd-check-on{width:16px;height:16px}.artplayer-plugin-danmuku .apd-config-other .apd-other{cursor:pointer;align-items:center;gap:2px;display:flex}.artplayer-plugin-danmuku .apd-config-other .apd-other:hover{color:#00a1d6}.artplayer-plugin-danmuku .apd-emitter{background-color:#ffffff40;border-radius:5px;flex:1;align-items:center;height:100%;display:flex}.artplayer-plugin-danmuku .apd-style{justify-content:center;align-items:center;display:flex;position:relative}.artplayer-plugin-danmuku .apd-style .apd-style-panel{width:200px;padding:10px;display:none;position:absolute;bottom:24px;left:-88px}.artplayer-plugin-danmuku .apd-style .apd-style-panel .apd-style-panel-inner{background-color:#000000d9;border-radius:3px;width:100%;padding:10px}.artplayer-plugin-danmuku .apd-style:hover .apd-style-panel{display:flex}.artplayer-plugin-danmuku .apd-colors{flex-wrap:wrap;gap:8px;margin-top:5px;display:flex}.artplayer-plugin-danmuku .apd-colors .apd-color{cursor:pointer;border-radius:2px;width:16px;height:16px}.artplayer-plugin-danmuku .apd-colors .apd-color.apd-active{border:1px solid #000;box-shadow:0 0 0 1px #fff}.artplayer-plugin-danmuku .apd-input{color:#fff;background-color:#0000;border:none;outline:none;flex:1;width:auto;min-width:0;height:100%;line-height:1}.artplayer-plugin-danmuku .apd-input::placeholder{color:#ffffff80}.artplayer-plugin-danmuku .apd-send{cursor:pointer;text-shadow:none;background-color:#00a1d6;border-top-right-radius:5px;border-bottom-right-radius:5px;flex-shrink:0;justify-content:center;align-items:center;width:60px;height:100%;display:flex}.artplayer-plugin-danmuku .apd-send.apd-lock{cursor:not-allowed;color:#666;background-color:#e7e7e7}.art-controls-center .apd-emitter{flex:none;width:260px}.art-fullscreen .artplayer-plugin-danmuku,.art-fullscreen-web .artplayer-plugin-danmuku{gap:16px;height:38px}.art-fullscreen .artplayer-plugin-danmuku .apd-config-icon,.art-fullscreen-web .artplayer-plugin-danmuku .apd-config-icon,.art-fullscreen .artplayer-plugin-danmuku .apd-toggle-off,.art-fullscreen-web .artplayer-plugin-danmuku .apd-toggle-off,.art-fullscreen .artplayer-plugin-danmuku .apd-toggle-on,.art-fullscreen-web .artplayer-plugin-danmuku .apd-toggle-on{width:28px;height:28px}.art-fullscreen .artplayer-plugin-danmuku .apd-emitter,.art-fullscreen-web .artplayer-plugin-danmuku .apd-emitter{flex:none;width:400px}[data-danmuku-emitter=false] .apd-emitter{display:none!important}[data-danmuku-emitter=false] .art-controls-center .artplayer-plugin-danmuku{justify-content:flex-end;gap:18px}[data-danmuku-emitter=false].art-fullscreen .art-controls-center .artplayer-plugin-danmuku,[data-danmuku-emitter=false].art-fullscreen-web .art-controls-center .artplayer-plugin-danmuku{gap:24px}[data-danmuku-theme=light]>.artplayer-plugin-danmuku .apd-icon{fill:#333}[data-danmuku-theme=light]>.artplayer-plugin-danmuku .apd-emitter{background-color:#f1f2f3}[data-danmuku-theme=light]>.artplayer-plugin-danmuku .apd-input{color:#000}[data-danmuku-theme=light]>.artplayer-plugin-danmuku .apd-input::placeholder{color:#0000004d}[data-danmuku-visible=false] .apd-toggle-off{display:block}[data-danmuku-visible=false] .apd-toggle-on,[data-danmuku-visible=true] .apd-toggle-off{display:none}[data-danmuku-visible=true] .apd-toggle-on{display:block}[data-danmuku-anti-overlap=false] .apd-anti-overlap .apd-check-on{display:none}[data-danmuku-anti-overlap=false] .apd-anti-overlap .apd-check-off,[data-danmuku-anti-overlap=true] .apd-anti-overlap .apd-check-on{display:block}[data-danmuku-anti-overlap=true] .apd-anti-overlap .apd-check-off,[data-danmuku-sync-video=false] .apd-sync-video .apd-check-on{display:none}[data-danmuku-sync-video=false] .apd-sync-video .apd-check-off,[data-danmuku-sync-video=true] .apd-sync-video .apd-check-on{display:block}[data-danmuku-sync-video=true] .apd-sync-video .apd-check-off{display:none}[data-danmuku-mode0=false] .apd-config-mode .apd-mode-0-off{display:block}[data-danmuku-mode0=false] .apd-config-mode .apd-mode-0-on{display:none}[data-danmuku-mode0=false] .art-danmuku [data-mode="0"]{opacity:0!important}[data-danmuku-mode0=true] .apd-config-mode .apd-mode-0-off{display:none}[data-danmuku-mode0=true] .apd-config-mode .apd-mode-0-on{display:block}[data-danmuku-mode="0"] .apd-style-mode [data-mode="0"]{color:#00a1d6}[data-danmuku-mode="0"] .apd-style-mode [data-mode="0"] path{fill:#00a1d6}[data-danmuku-mode1=false] .apd-config-mode .apd-mode-1-off{display:block}[data-danmuku-mode1=false] .apd-config-mode .apd-mode-1-on{display:none}[data-danmuku-mode1=false] .art-danmuku [data-mode="1"]{opacity:0!important}[data-danmuku-mode1=true] .apd-config-mode .apd-mode-1-off{display:none}[data-danmuku-mode1=true] .apd-config-mode .apd-mode-1-on{display:block}[data-danmuku-mode="1"] .apd-style-mode [data-mode="1"]{color:#00a1d6}[data-danmuku-mode="1"] .apd-style-mode [data-mode="1"] path{fill:#00a1d6}[data-danmuku-mode2=false] .apd-config-mode .apd-mode-2-off{display:block}[data-danmuku-mode2=false] .apd-config-mode .apd-mode-2-on{display:none}[data-danmuku-mode2=false] .art-danmuku [data-mode="2"]{opacity:0!important}[data-danmuku-mode2=true] .apd-config-mode .apd-mode-2-off{display:none}[data-danmuku-mode2=true] .apd-config-mode .apd-mode-2-on{display:block}[data-danmuku-mode="2"] .apd-style-mode [data-mode="2"]{color:#00a1d6}[data-danmuku-mode="2"] .apd-style-mode [data-mode="2"] path{fill:#00a1d6}'},{}],"9pjcf":[function(e,t,i){t.exports=''},{}],b2dkP:[function(e,t,i){t.exports=''},{}],l8tyy:[function(e,t,i){t.exports=''},{}],"5iZC3":[function(e,t,i){t.exports=''},{}],i0Vut:[function(e,t,i){t.exports=''},{}],hOSvZ:[function(e,t,i){t.exports=''},{}],bOXC3:[function(e,t,i){t.exports=''},{}],lKuh0:[function(e,t,i){t.exports=''},{}],eB8W6:[function(e,t,i){t.exports=''},{}],bpe2E:[function(e,t,i){t.exports=''},{}],kL9zy:[function(e,t,i){t.exports=''},{}],"22xpM":[function(e,t,i){t.exports=''},{}],"8AxLD":[function(e,t,i){var a=e("@parcel/transformer-js/src/esmodule-helpers.js");a.defineInteropFlag(i),a.export(i,"default",()=>s);let n={map:(e,t,i,a,n)=>(e-t)*(n-a)/(i-t)+a,range(e,t,i){let a=Math.round(e/i)*i;return Array.from({length:Math.floor((t-e)/i)},(e,t)=>t*i+a)}},o=(e,t)=>{let i=t[0]-e[0],a=t[1]-e[1];return{length:Math.sqrt(Math.pow(i,2)+Math.pow(a,2)),angle:Math.atan2(a,i)}};function s(e,t,i){let{query:a}=e.constructor.utils;e.controls.add({name:"heatmap",position:"top",html:"",style:{position:"absolute",top:"-100px",left:"0px",right:"0px",height:"100px",width:"100%",pointerEvents:"none"},mounted(s){let l=null,r=null;function d(d=[]){if(l=null,r=null,s.innerHTML="",!e.duration||e.option.isLive)return;let p={w:s.offsetWidth,h:s.offsetHeight},u={xMin:0,xMax:p.w,yMin:0,yMax:128,scale:.25,opacity:.2,minHeight:Math.floor(.05*p.h),sampling:Math.floor(p.w/100),smoothing:.2,flattening:.2};"object"==typeof i&&Object.assign(u,i);let h=[];if(Array.isArray(d)&&d.length)h=[...d];else{let i=e.duration/p.w;for(let e=0;e<=p.w;e+=u.sampling){let a=t.danmus.filter(({time:t})=>t>e*i&&t<=(e+u.sampling)*i).length;h.push([e,a])}}if(0===h.length)return;let m=h[h.length-1],c=m[0],f=m[1];c!==p.w&&h.push([p.w,f]);let g=h.map(e=>e[1]),v=(Math.min(...g)+Math.max(...g))/2;for(let e=0;ev?1+u.scale:1-u.scale)+u.minHeight}let y=(e,t,i,a)=>{let s=o(t||e,i||e),l=n.map(Math.cos(s.angle)*u.flattening,0,1,1,0),r=s.angle*l+(a?Math.PI:0),d=s.length*u.smoothing;return[e[0]+Math.cos(r)*d,e[1]+Math.sin(r)*d]},x=(e,t,i)=>{let a=y(i[t-1],i[t-2],e),n=y(e,i[t-1],i[t+1],!0),o=t===i.length-1?" z":"";return`C ${a[0]},${a[1]} ${n[0]},${n[1]} ${e[0]},${e[1]}${o}`},k=h.map(e=>[n.map(e[0],u.xMin,u.xMax,0,p.w),n.map(e[1],u.yMin,u.yMax,p.h,0)]).reduce((e,t,i,a)=>0===i?`M ${a[a.length-1][0]},${p.h} L ${t[0]},${p.h} L ${t[0]},${t[1]}`:`${e} ${x(t,i,a)}`,"");s.innerHTML=``,l=a("#heatmap-start",s),r=a("#heatmap-stop",s),l.setAttribute("offset",`${100*e.played}%`),r.setAttribute("offset",`${100*e.played}%`)}e.on("video:timeupdate",()=>{l&&r&&(l.setAttribute("offset",`${100*e.played}%`),r.setAttribute("offset",`${100*e.played}%`))}),e.on("setBar",(e,t)=>{l&&r&&"played"===e&&(l.setAttribute("offset",`${100*t}%`),r.setAttribute("offset",`${100*t}%`))}),e.on("ready",()=>d()),e.on("resize",()=>d()),e.on("artplayerPluginDanmuku:loaded",()=>d()),e.on("artplayerPluginDanmuku:points",e=>d(e))}})}},{"@parcel/transformer-js/src/esmodule-helpers.js":"9pCYc"}]},["bgm6t"],"bgm6t","parcelRequire4dc0"); \ No newline at end of file +!function(e,t,i,a,n){var o="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},s="function"==typeof o[a]&&o[a],l=s.cache||{},r="undefined"!=typeof module&&"function"==typeof module.require&&module.require.bind(module);function d(t,i){if(!l[t]){if(!e[t]){var n="function"==typeof o[a]&&o[a];if(!i&&n)return n(t,!0);if(s)return s(t,!0);if(r&&"string"==typeof t)return r(t);var p=Error("Cannot find module '"+t+"'");throw p.code="MODULE_NOT_FOUND",p}h.resolve=function(i){var a=e[t][1][i];return null!=a?a:i},h.cache={};var u=l[t]=new d.Module(t);e[t][0].call(u.exports,h,u,u.exports,this)}return l[t].exports;function h(e){var t=h.resolve(e);return!1===t?{}:d(t)}}d.isParcelRequire=!0,d.Module=function(e){this.id=e,this.bundle=d,this.exports={}},d.modules=e,d.cache=l,d.parent=s,d.register=function(t,i){e[t]=[function(e,t){t.exports=i},{}]},Object.defineProperty(d,"root",{get:function(){return o[a]}}),o[a]=d;for(var p=0;pp);var n=e("./danmuku"),o=a.interopDefault(n),s=e("./setting"),l=a.interopDefault(s),r=e("./heatmap"),d=a.interopDefault(r);function p(e){return t=>{let i=new o.default(t,e),a=new l.default(t,i);return i.option.heatmap&&(0,d.default)(t,i,i.option.heatmap),{name:"artplayerPluginDanmuku",emit:i.emit.bind(i),load:i.load.bind(i),config:i.config.bind(i),hide:i.hide.bind(i),show:i.show.bind(i),reset:i.reset.bind(i),mount:a.mount.bind(a),get option(){return i.option},get isHide(){return i.isHide},get isStop(){return i.isStop}}}}p.icons=l.default.icons,"undefined"!=typeof window&&(window.artplayerPluginDanmuku=p)},{"./danmuku":"4ns48","./setting":"lO8OT","./heatmap":"8AxLD","@parcel/transformer-js/src/esmodule-helpers.js":"9pCYc"}],"4ns48":[function(e,t,i){var a=e("@parcel/transformer-js/src/esmodule-helpers.js");a.defineInteropFlag(i);var n=e("./bilibili"),o=e("bundle-text:./worker"),s=a.interopDefault(o);class l{constructor(e,t){let{constructor:i,template:a}=e;this.utils=i.utils,this.validator=i.validator,this.$danmuku=a.$danmuku,this.$player=a.$player,this.art=e,this.danmus=[],this.queue=[],this.$refs=[],this.isStop=!1,this.isHide=!1,this.timer=null,this.index=0,this.option=l.option,this.states={wait:[],ready:[],emit:[],stop:[]},this.config(t),this.worker=new Worker(URL.createObjectURL(new Blob([s.default]))),this.start=this.start.bind(this),this.stop=this.stop.bind(this),this.reset=this.reset.bind(this),this.resize=this.resize.bind(this),this.destroy=this.destroy.bind(this),e.on("video:play",this.start),e.on("video:playing",this.start),e.on("video:pause",this.stop),e.on("video:waiting",this.stop),e.on("destroy",this.destroy),e.on("resize",this.resize),this.load()}static get option(){return{danmuku:[],speed:5,margin:[10,"25%"],opacity:1,color:"#FFFFFF",mode:0,modes:[0,1,2],fontSize:25,antiOverlap:!0,synchronousPlayback:!1,mount:void 0,heatmap:!1,points:[],filter:()=>!0,beforeEmit:()=>!0,beforeVisible:()=>!0,visible:!0,emitter:!0,maxLength:200,lockTime:5,theme:"dark",OPACITY:{},FONT_SIZE:{},MARGIN:{},SPEED:{},COLOR:[]}}static get scheme(){return{danmuku:"array|function|string",speed:"number",margin:"array",opacity:"number",color:"string",mode:"number",modes:"array",fontSize:"number|string",antiOverlap:"boolean",synchronousPlayback:"boolean",mount:"?htmldivelement|string",heatmap:"object|boolean",points:"array",filter:"function",beforeEmit:"function",beforeVisible:"function",visible:"boolean",emitter:"boolean",maxLength:"number",lockTime:"number",theme:"string",OPACITY:"object",FONT_SIZE:"object",MARGIN:"object",SPEED:"object",COLOR:"array"}}static get cssText(){return` user-select: none; position: absolute; white-space: pre; pointer-events: none; perspective: 500px; display: inline-block; will-change: transform; font-weight: normal; line-height: 1.125; visibility: hidden; font-family: SimHei, "Microsoft JhengHei", Arial, Helvetica, sans-serif; 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; `}get isRotate(){return this.art.plugins?.autoOrientation?.state}get marginTop(){let{clamp:e}=this.utils,t=this.option.margin[0],{clientHeight:i}=this.$player;return"number"==typeof t?e(t,0,i):"string"==typeof t&&t.endsWith("%")?e(i*(parseFloat(t)/100),0,i):l.option.margin[0]}get marginBottom(){let{clamp:e}=this.utils,t=this.option.margin[1],{clientHeight:i}=this.$player;return"number"==typeof t?e(t,0,i):"string"==typeof t&&t.endsWith("%")?e(i*(parseFloat(t)/100),0,i):l.option.margin[1]}get fontSize(){let{clamp:e}=this.utils,{clientHeight:t}=this.$player,i=this.option.fontSize;return"number"==typeof i?e(i,12,t):"string"==typeof i&&i.endsWith("%")?e(t*(parseFloat(i)/100),12,t):l.option.fontSize}get $ref(){let e=this.$refs.pop()||document.createElement("div");return e.style.cssText=l.cssText,e.dataset.mode="",e.className="",e}get readys(){let{currentTime:e}=this.art,t=[];return this.filter("ready",e=>t.push(e)),this.filter("wait",i=>{e+.1>=i.time&&i.time>=e-.1&&t.push(i)}),t}get visibles(){let e=[],{clientWidth:t}=this.$player,i=this.getLeft(this.$player);return this.filter("emit",a=>{let n=a.$ref.offsetTop,o=this.getLeft(a.$ref)-i,s=a.$ref.clientHeight,l=a.$ref.clientWidth,r=o+l,d=r/a.$restTime,p={};p.top=n,p.left=o,p.height=s,p.width=l,p.right=t-r,p.speed=d,p.distance=r,p.time=a.$restTime,p.mode=a.mode,e.push(p)}),e}get speed(){return this.option.synchronousPlayback&&this.art.playbackRate?this.option.speed/Number(this.art.playbackRate):this.option.speed}async load(){let{errorHandle:e}=this.utils;try{"function"==typeof this.option.danmuku?this.danmus=await this.option.danmuku():"function"==typeof this.option.danmuku.then?this.danmus=await this.option.danmuku:"string"==typeof this.option.danmuku?this.danmus=await (0,n.bilibiliDanmuParseFromUrl)(this.option.danmuku):this.danmus=this.option.danmuku,e(Array.isArray(this.danmus),"Danmuku need return an array as result"),this.queue=[],this.$danmuku.innerText="",this.danmus.forEach(e=>this.emit(e)),this.art.emit("artplayerPluginDanmuku:loaded",this.queue)}catch(e){throw this.art.emit("artplayerPluginDanmuku:error",e),e}return this}emit(e){let{clamp:t}=this.utils;if(this.validator(e,{text:"string",mode:"?number",color:"?string",time:"?number",border:"?boolean",style:"?object"}),!e.text.trim()||(e.time?e.time=t(e.time,0,1/0):e.time=this.art.currentTime+.5,void 0===e.mode&&(e.mode=this.option.mode),void 0===e.style&&(e.style={}),void 0===e.color&&(e.color=this.option.color),![0,1,2].includes(e.mode)||!this.option.filter(e)))return this;let i={...e,$state:"wait",$id:this.index++,$ref:null,$restTime:0,$lastStartTime:0};return this.setState(i,"wait"),this.queue.push(i),this}config(e){let{clamp:t}=this.utils,{$controlsCenter:i}=this.art.template;return Object.keys(e).some(t=>JSON.stringify(this.option[t])!==JSON.stringify(e[t]))&&(this.option=Object.assign({},l.option,this.option,e),this.validator(this.option,l.scheme),this.option.mode=t(this.option.mode,0,2),this.option.speed=t(this.option.speed,1,10),this.option.opacity=t(this.option.opacity,0,1),this.option.lockTime=t(this.option.lockTime,1,60),this.option.maxLength=t(this.option.maxLength,1,1e3),this.option.mount=this.option.mount||i,e.fontSize&&this.reset(),this.option.visible?this.show():this.hide(),this.art.emit("artplayerPluginDanmuku:config",this.option)),this}getLeft(e){let t=e.getBoundingClientRect();return this.isRotate?t.top:t.left}postMessage(e={}){return new Promise(t=>{e.id=Date.now(),this.worker.postMessage(e),this.worker.onmessage=i=>{let{data:a}=i;a.id===e.id&&t(a)}})}filter(e,t){let i=this.states[e]||[];for(let e=0;et!==e),e.$state=t,e.$ref&&(e.$ref.dataset.state=t),this.states[t].push(e)}makeWait(e){this.setState(e,"wait"),e.$ref&&(e.$ref.style.cssText=l.cssText,e.$ref.style.visibility="hidden",e.$ref.style.marginLeft="0px",e.$ref.style.transform="translateX(0px)",e.$ref.style.transition="transform 0s linear 0s",this.$refs.push(e.$ref),e.$ref=null)}update(){let{setStyles:e}=this.utils;return this.timer=window.requestAnimationFrame(async()=>{if(this.art.playing&&!this.isHide){this.filter("emit",e=>{let t=(Date.now()-e.$lastStartTime)/1e3;e.$restTime-=t,e.$lastStartTime=Date.now(),e.$restTime<=0&&this.makeWait(e)});let t=this.readys;for(let i=0;i{0===t.mode&&(t.$ref.style.left=`${e}px`)}),this.filter("emit",t=>{if(t.$lastStartTime=Date.now(),0===t.mode){let i=e+t.$ref.clientWidth;t.$ref.style.left=`${e}px`,t.$ref.style.transform=`translateX(${-i}px)`,t.$ref.style.transition=`transform ${t.$restTime}s linear 0s`}})}continue(){let{clientWidth:e}=this.$player;return this.filter("stop",t=>{if(this.setState(t,"emit"),t.$lastStartTime=Date.now(),0===t.mode){let i=e+t.$ref.clientWidth;t.$ref.style.transform=`translateX(${-i}px)`,t.$ref.style.transition=`transform ${t.$restTime}s linear 0s`}}),this}suspend(){let{clientWidth:e}=this.$player;return this.filter("emit",t=>{if(this.setState(t,"stop"),0===t.mode){let i=e-(this.getLeft(t.$ref)-this.getLeft(this.$player));t.$ref.style.transform=`translateX(${-i}px)`,t.$ref.style.transition="transform 0s linear 0s"}}),this}stop(){return this.isStop=!0,this.suspend(),window.cancelAnimationFrame(this.timer),this.art.emit("artplayerPluginDanmuku:stop"),this}start(){return this.isStop=!1,this.continue(),this.update(),this.art.emit("artplayerPluginDanmuku:start"),this}reset(){return this.queue.forEach(e=>this.makeWait(e)),this.art.emit("artplayerPluginDanmuku:reset"),this}show(){return this.isHide=!1,this.$danmuku.style.opacity=1,this.option.visible=!0,this.art.emit("artplayerPluginDanmuku:show"),this}hide(){return this.isHide=!0,this.$danmuku.style.opacity=0,this.option.visible=!1,this.art.emit("artplayerPluginDanmuku:hide"),this}destroy(){this.stop(),this.worker.terminate(),this.art.off("video:play",this.start),this.art.off("video:playing",this.start),this.art.off("video:pause",this.stop),this.art.off("video:waiting",this.stop),this.art.off("resize",this.reset),this.art.off("destroy",this.destroy),this.art.emit("artplayerPluginDanmuku:destroy")}}i.default=l},{"./bilibili":"f83sx","bundle-text:./worker":"lfIAi","@parcel/transformer-js/src/esmodule-helpers.js":"9pCYc"}],f83sx:[function(e,t,i){var a=e("@parcel/transformer-js/src/esmodule-helpers.js");function n(e){switch(e){case 1:case 2:case 3:default:return 0;case 4:return 2;case 5:return 1}}function o(e){if("string"!=typeof e)return[];let t=new RegExp(/(?.+?)<\/d>/gs);return Array.from(e.matchAll(t)).map(e=>{let t=e.groups.p.split(",");return t.length>=8?{text:e.groups.text.trim().replaceAll(""",'"').replaceAll("'","'").replaceAll("<","<").replaceAll(">",">").replaceAll("&","&"),time:Number(t[0]),mode:n(Number(t[1])),fontSize:Number(t[2]),color:`#${Number(t[3]).toString(16)}`,timestamp:Number(t[4]),pool:Number(t[5]),userID:t[6],rowID:Number(t[7])}:null}).filter(Boolean)}function s({data:e}){let{xml:t,id:i}=e;if(!i||!t)return;let a=o(t);self.postMessage({danmus:a,id:i})}function l(e){return new Promise(async t=>{let i=Date.now(),a=await fetch(e),l=await a.text();try{let e=function(){let e=new Blob([` ${n.toString()} ${o.toString()} onmessage = ${s.toString()} `],{type:"application/javascript"});return new Worker(URL.createObjectURL(e))}();e.onmessage=a=>{let{danmus:n,id:o}=a.data;o&&n&&(t(n),e.terminate(),console.log("Worker parse xml",Date.now()-i))},e.postMessage({xml:l,id:Date.now()})}catch(e){t(o(l)),console.log("Main parse xml",Date.now()-i)}})}a.defineInteropFlag(i),a.export(i,"bilibiliDanmuParseFromUrl",()=>l)},{"@parcel/transformer-js/src/esmodule-helpers.js":"9pCYc"}],"9pCYc":[function(e,t,i){i.interopDefault=function(e){return e&&e.__esModule?e:{default:e}},i.defineInteropFlag=function(e){Object.defineProperty(e,"__esModule",{value:!0})},i.exportAll=function(e,t){return Object.keys(e).forEach(function(i){"default"===i||"__esModule"===i||Object.prototype.hasOwnProperty.call(t,i)||Object.defineProperty(t,i,{enumerable:!0,get:function(){return e[i]}})}),t},i.export=function(e,t,i){Object.defineProperty(e,t,{enumerable:!0,get:i})}},{}],lfIAi:[function(e,t,i){t.exports='!function(e,t,n,o,i){var r="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},f="function"==typeof r[o]&&r[o],l=f.cache||{},d="undefined"!=typeof module&&"function"==typeof module.require&&module.require.bind(module);function u(t,n){if(!l[t]){if(!e[t]){var i="function"==typeof r[o]&&r[o];if(!n&&i)return i(t,!0);if(f)return f(t,!0);if(d&&"string"==typeof t)return d(t);var h=Error("Cannot find module \'"+t+"\'");throw h.code="MODULE_NOT_FOUND",h}p.resolve=function(n){var o=e[t][1][n];return null!=o?o:n},p.cache={};var s=l[t]=new u.Module(t);e[t][0].call(s.exports,p,s,s.exports,this)}return l[t].exports;function p(e){var t=p.resolve(e);return!1===t?{}:u(t)}}u.isParcelRequire=!0,u.Module=function(e){this.id=e,this.bundle=u,this.exports={}},u.modules=e,u.cache=l,u.parent=f,u.register=function(t,n){e[t]=[function(e,t){t.exports=n},{}]},Object.defineProperty(u,"root",{get:function(){return r[o]}}),r[o]=u;for(var h=0;h{let{data:t}=e;if(!t.id)return;let n=function({target:e,visibles:t,clientWidth:n,clientHeight:o,marginBottom:i,marginTop:r,antiOverlap:f}){let l=o-i,d=t.filter(t=>t.mode===e.mode&&t.top<=l).sort((e,t)=>e.top-t.top);if(0===d.length)return 2===e.mode?l-e.height:r;if(d.unshift({type:"top",top:0,left:0,right:0,height:r,width:n,speed:0,distance:n}),d.push({type:"bottom",top:l,left:0,right:0,height:i,width:n,speed:0,distance:n}),2===e.mode)for(let t=d.length-2;t>=0;t-=1){let n=d[t],o=d[t+1],i=n.top+n.height;if(o.top-i>=e.height)return o.top-e.height}else for(let t=1;t=e.height)return i}let u=[];for(let e=1;et.every(t=>!(nt.time)));return t&&t[0]?t[0].top:void 0}case 1:case 2:return}else{switch(e.mode){case 0:u.sort((e,t)=>{let n=Math.min(...t.map(e=>e.right)),o=Math.min(...e.map(e=>e.right));return n*t.length-o*e.length});break;case 1:case 2:u.sort((e,t)=>{let n=Math.max(...t.map(e=>e.width));return Math.max(...e.map(e=>e.width))*e.length-n*t.length})}return u[0][0].top}}(t);self.postMessage({top:n,id:t.id})}},{}]},["59OZS"],"59OZS","parcelRequire4dc0");'},{}],lO8OT:[function(e,t,i){var a=e("@parcel/transformer-js/src/esmodule-helpers.js");a.defineInteropFlag(i);var n=e("bundle-text:./style.less"),o=a.interopDefault(n),s=e("bundle-text:./img/on.svg"),l=a.interopDefault(s),r=e("bundle-text:./img/off.svg"),d=a.interopDefault(r),p=e("bundle-text:./img/config.svg"),u=a.interopDefault(p),h=e("bundle-text:./img/style.svg"),m=a.interopDefault(h),c=e("bundle-text:./img/mode_0_off.svg"),f=a.interopDefault(c),g=e("bundle-text:./img/mode_0_on.svg"),v=a.interopDefault(g),y=e("bundle-text:./img/mode_1_off.svg"),x=a.interopDefault(y),k=e("bundle-text:./img/mode_1_on.svg"),b=a.interopDefault(k),$=e("bundle-text:./img/mode_2_off.svg"),w=a.interopDefault($),M=e("bundle-text:./img/mode_2_on.svg"),E=a.interopDefault(M),D=e("bundle-text:./img/check_on.svg"),S=a.interopDefault(D),z=e("bundle-text:./img/check_off.svg"),A=a.interopDefault(z);if(i.default=class{constructor(e,t){this.art=e,this.danmuku=t,this.utils=e.constructor.utils;let{setStyle:i}=this.utils,{$controlsCenter:a}=e.template;i(a,"display","flex"),this.template={$controlsCenter:a,$mount:a,$danmuku:null,$toggle:null,$configModes:null,$styleModes:null,$colors:null,$opacitySlider:null,$opacityValue:null,$marginSlider:null,$marginValue:null,$fontSizeSlider:null,$fontSizeValue:null,$speedSlider:null,$speedValue:null,$input:null,$send:null},this.slider={opacity:null,margin:null,fontSize:null,speed:null},this.emitting=!1,this.isLock=!1,this.timer=null,this.createTemplate(),this.createSliders(),this.createEvents(),this.mount(this.option.mount),e.on("fullscreen",e=>this.onFullscreen(e)),e.on("fullscreenWeb",e=>this.onFullscreen(e))}static get icons(){return{$on:l.default,$off:d.default,$config:u.default,$style:m.default,$mode_0_off:f.default,$mode_0_on:v.default,$mode_1_off:x.default,$mode_1_on:b.default,$mode_2_off:w.default,$mode_2_on:E.default,$check_on:S.default,$check_off:A.default}}get option(){return this.danmuku.option}get outside(){return this.template.$mount!==this.template.$controlsCenter}get TEMPLATE(){let{option:e}=this;return`
${l.default}${d.default}
${u.default}
\u{6309}\u{7C7B}\u{578B}\u{5C4F}\u{853D}
${f.default}${v.default}
\u{6EDA}\u{52A8}
${x.default}${b.default}
\u{9876}\u{90E8}
${w.default}${E.default}
\u{5E95}\u{90E8}
${S.default}${A.default} \u{9632}\u{6B62}\u{5F39}\u{5E55}\u{91CD}\u{53E0}
${S.default}${A.default} \u{540C}\u{6B65}\u{89C6}\u{9891}\u{901F}\u{5EA6}
\u{4E0D}\u{900F}\u{660E}\u{5EA6}
\u{672A}\u{77E5}
\u{663E}\u{793A}\u{533A}\u{57DF}
\u{672A}\u{77E5}
\u{5F39}\u{5E55}\u{5B57}\u{53F7}
\u{672A}\u{77E5}
\u{5F39}\u{5E55}\u{901F}\u{5EA6}
\u{672A}\u{77E5}
${m.default}
\u{6A21}\u{5F0F}
${v.default}
\u{6EDA}\u{52A8}
${b.default}
\u{9876}\u{90E8}
${E.default}
\u{5E95}\u{90E8}
\u{989C}\u{8272}
${this.COLOR.map(e=>`
`).join("")}
\u{53D1}\u{9001}
`}get OPACITY(){return{min:0,max:100,steps:[],...this.option.OPACITY}}get FONT_SIZE(){return{min:12,max:120,steps:[],...this.option.FONT_SIZE}}get MARGIN(){return{min:0,max:3,steps:[{name:"1/4",value:[10,"75%"]},{name:"半屏",value:[10,"50%"]},{name:"3/4",value:[10,"25%"]},{name:"满屏",value:[10,10]}],...this.option.MARGIN}}get SPEED(){return{min:0,max:4,steps:[{name:"极慢",value:10},{name:"较慢",value:7.5,hide:!0},{name:"适中",value:5},{name:"较快",value:2.5,hide:!0},{name:"极快",value:1}],...this.option.SPEED}}get COLOR(){return this.option.COLOR.length?this.option.COLOR:["#FE0302","#FF7204","#FFAA02","#FFD302","#FFFF00","#A0EE00","#00CD00","#019899","#4266BE","#89D5FF","#CC0273","#222222","#9B9B9B","#FFFFFF"]}query(e){let{query:t}=this.utils,{$danmuku:i}=this.template;return t(e,i)}setData(e,t){let{$player:i}=this.art.template,{$mount:a}=this.template;i.dataset[e]=t,this.outside&&(a.dataset[e]=t)}createTemplate(){let{createElement:e,tooltip:t}=this.utils,i=e("div");i.className="artplayer-plugin-danmuku",i.innerHTML=this.TEMPLATE,this.template.$danmuku=i,this.template.$toggle=this.query(".apd-toggle"),this.template.$configModes=this.query(".apd-config-mode .apd-modes"),this.template.$styleModes=this.query(".apd-style-mode .apd-modes"),this.template.$colors=this.query(".apd-colors"),this.template.$antiOverlap=this.query(".apd-anti-overlap"),this.template.$syncVideo=this.query(".apd-sync-video"),this.template.$opacitySlider=this.query(".apd-config-opacity .apd-slider"),this.template.$opacityValue=this.query(".apd-config-opacity .apd-value"),this.template.$marginSlider=this.query(".apd-config-margin .apd-slider"),this.template.$marginValue=this.query(".apd-config-margin .apd-value"),this.template.$fontSizeSlider=this.query(".apd-config-fontSize .apd-slider"),this.template.$fontSizeValue=this.query(".apd-config-fontSize .apd-value"),this.template.$speedSlider=this.query(".apd-config-speed .apd-slider"),this.template.$speedValue=this.query(".apd-config-speed .apd-value"),this.template.$input=this.query(".apd-input"),this.template.$send=this.query(".apd-send");let{$toggle:a}=this.template;this.art.on("artplayerPluginDanmuku:show",()=>{t(a,"关闭弹幕")}),this.art.on("artplayerPluginDanmuku:hide",()=>{t(a,"打开弹幕")})}createEvents(){let{$toggle:e,$configModes:t,$styleModes:i,$colors:a,$antiOverlap:n,$syncVideo:o,$send:s,$input:l}=this.template;this.art.proxy(e,"click",()=>{this.danmuku.config({visible:!this.option.visible}),this.reset()}),this.art.proxy(t,"click",e=>{let t=e.target.closest(".apd-mode");if(!t)return;let i=Number(t.dataset.mode);this.option.modes.includes(i)?this.danmuku.config({modes:this.option.modes.filter(e=>e!==i)}):this.danmuku.config({modes:[...this.option.modes,i]}),this.reset()}),this.art.proxy(n,"click",()=>{this.danmuku.config({antiOverlap:!this.option.antiOverlap}),this.reset()}),this.art.proxy(o,"click",()=>{this.danmuku.config({synchronousPlayback:!this.option.synchronousPlayback}),this.reset()}),this.art.proxy(i,"click",e=>{let t=e.target.closest(".apd-mode");if(!t)return;let i=Number(t.dataset.mode);this.danmuku.config({mode:i}),this.reset()}),this.art.proxy(a,"click",e=>{let t=e.target.closest(".apd-color");t&&(this.danmuku.config({color:t.dataset.color}),this.reset())}),this.art.proxy(s,"click",()=>this.emit()),this.art.proxy(l,"keypress",e=>{"Enter"===e.key&&(e.preventDefault(),this.emit())})}createSliders(){this.slider.opacity=this.createSlider({...this.OPACITY,container:this.template.$opacitySlider,findIndex:()=>Math.round(100*this.option.opacity),onChange:e=>{let{$opacityValue:t}=this.template;t.textContent=`${e}%`,this.danmuku.config({opacity:e/100})}}),this.slider.margin=this.createSlider({...this.MARGIN,container:this.template.$marginSlider,findIndex:()=>this.MARGIN.steps.findIndex(e=>e.value[0]===this.option.margin[0]&&e.value[1]===this.option.margin[1]),onChange:e=>{let t=this.MARGIN.steps[e];if(!t)return;let{$marginValue:i}=this.template;i.textContent=t.name,this.danmuku.config({margin:t.value})}}),this.slider.fontSize=this.createSlider({...this.FONT_SIZE,container:this.template.$fontSizeSlider,findIndex:()=>Math.round(this.danmuku.fontSize),onChange:e=>{let{$fontSizeValue:t}=this.template;t.textContent=`${e}px`,this.danmuku.config({fontSize:e})}}),this.slider.speed=this.createSlider({...this.SPEED,container:this.template.$speedSlider,findIndex:()=>this.SPEED.steps.findIndex(e=>e.value===this.option.speed),onChange:e=>{let t=this.SPEED.steps[e];if(!t)return;let{$speedValue:i}=this.template;i.textContent=t.name,this.danmuku.config({speed:t.value})}})}createSlider({min:e,max:t,container:i,findIndex:a,onChange:n,steps:o=[]}){let{query:s,clamp:l}=this.utils;i.innerHTML=`
${o.map(()=>'
').join("")}
${o.map(e=>e.hide?"":`
${e.name}
`).join("")}
`;let r=s(".apd-slider-dot",i),d=s(".apd-slider-progress",i),p=!1;function u(i=a()){if(it)return;let s=(i-e)/(t-e);r.style.left=`${100*s}%`,0===o.length&&(d.style.width=r.style.left),n(i)}function h(a){let{left:n,width:o}=i.getBoundingClientRect();u(Math.round(l(a.clientX-n,0,o)/o*(t-e)+e))}return this.art.proxy(i,"click",e=>{h(e)}),this.art.proxy(i,"mousedown",e=>{p=0===e.button}),this.art.on("document:mousemove",e=>{p&&h(e)}),this.art.on("document:mouseup",e=>{p&&(p=!1,h(e))}),{reset:u}}onFullscreen(e){if(this.outside){let{$danmuku:t,$controlsCenter:i,$mount:a}=this.template;e?i.appendChild(t):a.appendChild(t)}}async emit(){let{$input:e}=this.template,t=e.value.trim();if(!t.length||this.isLock||this.emitting)return;let i={text:t,mode:this.option.mode,color:this.option.color,time:this.art.currentTime};try{this.emitting=!0;let t=await this.option.beforeEmit(i);if(this.emitting=!1,!0!==t)return;i.border=!0,delete i.time,this.danmuku.emit(i),e.value="",this.lock()}catch(e){this.emitting=!1}}lock(){let{addClass:e}=this.utils,{$send:t}=this.template;this.isLock=!0;let i=this.option.lockTime;t.innerText=i,e(t,"apd-lock");let a=()=>{this.timer=setTimeout(()=>{0===i?this.unlock():(i-=1,t.innerText=i,a())},1e3)};a()}unlock(){let{removeClass:e}=this.utils,{$send:t}=this.template;clearTimeout(this.timer),this.isLock=!1,t.innerText="发送",e(t,"apd-lock")}reset(){let{inverseClass:e,tooltip:t}=this.utils,{$toggle:i,$colors:a}=this.template;this.slider.opacity.reset(),this.slider.margin.reset(),this.slider.fontSize.reset(),this.slider.speed.reset(),this.setData("danmukuVisible",this.option.visible),this.setData("danmukuMode",this.option.mode),this.setData("danmukuColor",this.option.color),this.setData("danmukuMode0",this.option.modes.includes(0)),this.setData("danmukuMode1",this.option.modes.includes(1)),this.setData("danmukuMode2",this.option.modes.includes(2)),this.setData("danmukuAntiOverlap",this.option.antiOverlap),this.setData("danmukuSyncVideo",this.option.synchronousPlayback),this.setData("danmukuTheme",this.option.theme),this.setData("danmukuEmitter",this.option.emitter);let n=Array.from(a.children).find(e=>e.dataset.color===this.option.color.toUpperCase());n&&e(n,"apd-active"),t(i,this.option.visible?"关闭弹幕":"打开弹幕")}mount(e){let t="string"==typeof e?document.querySelector(e):e;t.appendChild(this.template.$danmuku),this.template.$mount=t,this.reset()}},"undefined"!=typeof document){let e="artplayer-plugin-danmuku",t=document.getElementById(e);if(t)t.textContent=o.default;else{let t=document.createElement("style");t.id=e,t.textContent=o.default,document.head.appendChild(t)}}},{"bundle-text:./style.less":"hViDo","bundle-text:./img/on.svg":"9pjcf","bundle-text:./img/off.svg":"b2dkP","bundle-text:./img/config.svg":"l8tyy","bundle-text:./img/style.svg":"5iZC3","bundle-text:./img/mode_0_off.svg":"i0Vut","bundle-text:./img/mode_0_on.svg":"hOSvZ","bundle-text:./img/mode_1_off.svg":"bOXC3","bundle-text:./img/mode_1_on.svg":"lKuh0","bundle-text:./img/mode_2_off.svg":"eB8W6","bundle-text:./img/mode_2_on.svg":"bpe2E","bundle-text:./img/check_on.svg":"kL9zy","bundle-text:./img/check_off.svg":"22xpM","@parcel/transformer-js/src/esmodule-helpers.js":"9pCYc"}],hViDo:[function(e,t,i){t.exports='.artplayer-plugin-danmuku{z-index:99;color:#fff;flex-shrink:0;justify-content:center;align-items:center;gap:10px;width:100%;height:32px;font-size:12px;font-weight:300;display:flex;position:relative}.artplayer-plugin-danmuku .apd-icon{cursor:pointer;opacity:.75;fill:#fff;transition:all .2s}.artplayer-plugin-danmuku .apd-icon:hover{opacity:1}.artplayer-plugin-danmuku .apd-config{display:flex;position:relative}.artplayer-plugin-danmuku .apd-config .apd-config-panel{width:320px;padding:10px;display:none;position:absolute;bottom:24px;left:-148px}.artplayer-plugin-danmuku .apd-config .apd-config-panel .apd-config-panel-inner{background-color:#000000d9;border-radius:3px;width:100%;padding:10px}.artplayer-plugin-danmuku .apd-config:hover .apd-config-panel{display:flex}.artplayer-plugin-danmuku .apd-config-mode,.artplayer-plugin-danmuku .apd-config-slider,.artplayer-plugin-danmuku .apd-config-other,.artplayer-plugin-danmuku .apd-style-mode{margin-bottom:15px}.artplayer-plugin-danmuku .apd-modes{align-items:center;gap:20px;margin-top:5px;display:flex}.artplayer-plugin-danmuku .apd-modes .apd-mode{cursor:pointer;text-align:center}.artplayer-plugin-danmuku .apd-modes .apd-mode:hover{color:#00a1d6}.artplayer-plugin-danmuku .apd-config-slider{align-items:center;gap:12px;display:flex}.artplayer-plugin-danmuku .apd-config-slider .apd-value{text-align:right;width:32px}.artplayer-plugin-danmuku .apd-slider{cursor:pointer;flex:1;justify-content:center;align-items:center;height:20px;display:flex;position:relative}.artplayer-plugin-danmuku .apd-slider .apd-slider-line{background-color:#ffffff40;border-radius:3px;width:100%;height:2px;position:relative;overflow:hidden}.artplayer-plugin-danmuku .apd-slider .apd-slider-points{justify-content:space-between;align-items:center;display:flex;position:absolute;inset:0}.artplayer-plugin-danmuku .apd-slider .apd-slider-points .apd-slider-point{background-color:#ffffff80;border-radius:50%;width:2px;height:2px}.artplayer-plugin-danmuku .apd-slider .apd-slider-progress{background-color:#00a1d6;width:0%;height:100%}.artplayer-plugin-danmuku .apd-slider .apd-slider-dot{background-color:#00a1d6;border-radius:50%;width:12px;height:12px;position:absolute;left:0%;transform:translate(-6px)}.artplayer-plugin-danmuku .apd-slider .apd-slider-steps{color:#777;justify-content:space-between;align-items:center;width:calc(100% + 32px);display:flex;position:absolute;bottom:-12px}.artplayer-plugin-danmuku .apd-slider .apd-slider-steps .apd-slider-step{text-align:center;flex-shrink:0;width:36px;scale:.95}.artplayer-plugin-danmuku .apd-config-other{align-items:center;gap:20px;display:flex}.artplayer-plugin-danmuku .apd-config-other .apd-check-off,.artplayer-plugin-danmuku .apd-config-other .apd-check-on{width:16px;height:16px}.artplayer-plugin-danmuku .apd-config-other .apd-other{cursor:pointer;align-items:center;gap:2px;display:flex}.artplayer-plugin-danmuku .apd-config-other .apd-other:hover{color:#00a1d6}.artplayer-plugin-danmuku .apd-emitter{background-color:#ffffff40;border-radius:5px;flex:1;align-items:center;height:100%;display:flex}.artplayer-plugin-danmuku .apd-style{justify-content:center;align-items:center;display:flex;position:relative}.artplayer-plugin-danmuku .apd-style .apd-style-panel{width:200px;padding:10px;display:none;position:absolute;bottom:24px;left:-88px}.artplayer-plugin-danmuku .apd-style .apd-style-panel .apd-style-panel-inner{background-color:#000000d9;border-radius:3px;width:100%;padding:10px}.artplayer-plugin-danmuku .apd-style:hover .apd-style-panel{display:flex}.artplayer-plugin-danmuku .apd-colors{flex-wrap:wrap;gap:8px;margin-top:5px;display:flex}.artplayer-plugin-danmuku .apd-colors .apd-color{cursor:pointer;border-radius:2px;width:16px;height:16px}.artplayer-plugin-danmuku .apd-colors .apd-color.apd-active{border:1px solid #000;box-shadow:0 0 0 1px #fff}.artplayer-plugin-danmuku .apd-input{color:#fff;background-color:#0000;border:none;outline:none;flex:1;width:auto;min-width:0;height:100%;line-height:1}.artplayer-plugin-danmuku .apd-input::placeholder{color:#ffffff80}.artplayer-plugin-danmuku .apd-send{cursor:pointer;text-shadow:none;background-color:#00a1d6;border-top-right-radius:5px;border-bottom-right-radius:5px;flex-shrink:0;justify-content:center;align-items:center;width:60px;height:100%;display:flex}.artplayer-plugin-danmuku .apd-send.apd-lock{cursor:not-allowed;color:#666;background-color:#e7e7e7}.art-controls-center .apd-emitter{flex:none;width:260px}.art-fullscreen .artplayer-plugin-danmuku,.art-fullscreen-web .artplayer-plugin-danmuku{gap:16px;height:38px}.art-fullscreen .artplayer-plugin-danmuku .apd-config-icon,.art-fullscreen-web .artplayer-plugin-danmuku .apd-config-icon,.art-fullscreen .artplayer-plugin-danmuku .apd-toggle-off,.art-fullscreen-web .artplayer-plugin-danmuku .apd-toggle-off,.art-fullscreen .artplayer-plugin-danmuku .apd-toggle-on,.art-fullscreen-web .artplayer-plugin-danmuku .apd-toggle-on{width:28px;height:28px}.art-fullscreen .artplayer-plugin-danmuku .apd-emitter,.art-fullscreen-web .artplayer-plugin-danmuku .apd-emitter{flex:none;width:400px}[data-danmuku-emitter=false] .apd-emitter{display:none!important}[data-danmuku-emitter=false] .art-controls-center .artplayer-plugin-danmuku{justify-content:flex-end;gap:18px}[data-danmuku-emitter=false].art-fullscreen .art-controls-center .artplayer-plugin-danmuku,[data-danmuku-emitter=false].art-fullscreen-web .art-controls-center .artplayer-plugin-danmuku{gap:24px}[data-danmuku-theme=light]>.artplayer-plugin-danmuku .apd-icon{fill:#333}[data-danmuku-theme=light]>.artplayer-plugin-danmuku .apd-emitter{background-color:#f1f2f3}[data-danmuku-theme=light]>.artplayer-plugin-danmuku .apd-input{color:#000}[data-danmuku-theme=light]>.artplayer-plugin-danmuku .apd-input::placeholder{color:#0000004d}[data-danmuku-visible=false] .apd-toggle-off{display:block}[data-danmuku-visible=false] .apd-toggle-on,[data-danmuku-visible=true] .apd-toggle-off{display:none}[data-danmuku-visible=true] .apd-toggle-on{display:block}[data-danmuku-anti-overlap=false] .apd-anti-overlap .apd-check-on{display:none}[data-danmuku-anti-overlap=false] .apd-anti-overlap .apd-check-off,[data-danmuku-anti-overlap=true] .apd-anti-overlap .apd-check-on{display:block}[data-danmuku-anti-overlap=true] .apd-anti-overlap .apd-check-off,[data-danmuku-sync-video=false] .apd-sync-video .apd-check-on{display:none}[data-danmuku-sync-video=false] .apd-sync-video .apd-check-off,[data-danmuku-sync-video=true] .apd-sync-video .apd-check-on{display:block}[data-danmuku-sync-video=true] .apd-sync-video .apd-check-off{display:none}[data-danmuku-mode0=false] .apd-config-mode .apd-mode-0-off{display:block}[data-danmuku-mode0=false] .apd-config-mode .apd-mode-0-on{display:none}[data-danmuku-mode0=false] .art-danmuku [data-mode="0"]{opacity:0!important}[data-danmuku-mode0=true] .apd-config-mode .apd-mode-0-off{display:none}[data-danmuku-mode0=true] .apd-config-mode .apd-mode-0-on{display:block}[data-danmuku-mode="0"] .apd-style-mode [data-mode="0"]{color:#00a1d6}[data-danmuku-mode="0"] .apd-style-mode [data-mode="0"] path{fill:#00a1d6}[data-danmuku-mode1=false] .apd-config-mode .apd-mode-1-off{display:block}[data-danmuku-mode1=false] .apd-config-mode .apd-mode-1-on{display:none}[data-danmuku-mode1=false] .art-danmuku [data-mode="1"]{opacity:0!important}[data-danmuku-mode1=true] .apd-config-mode .apd-mode-1-off{display:none}[data-danmuku-mode1=true] .apd-config-mode .apd-mode-1-on{display:block}[data-danmuku-mode="1"] .apd-style-mode [data-mode="1"]{color:#00a1d6}[data-danmuku-mode="1"] .apd-style-mode [data-mode="1"] path{fill:#00a1d6}[data-danmuku-mode2=false] .apd-config-mode .apd-mode-2-off{display:block}[data-danmuku-mode2=false] .apd-config-mode .apd-mode-2-on{display:none}[data-danmuku-mode2=false] .art-danmuku [data-mode="2"]{opacity:0!important}[data-danmuku-mode2=true] .apd-config-mode .apd-mode-2-off{display:none}[data-danmuku-mode2=true] .apd-config-mode .apd-mode-2-on{display:block}[data-danmuku-mode="2"] .apd-style-mode [data-mode="2"]{color:#00a1d6}[data-danmuku-mode="2"] .apd-style-mode [data-mode="2"] path{fill:#00a1d6}'},{}],"9pjcf":[function(e,t,i){t.exports=''},{}],b2dkP:[function(e,t,i){t.exports=''},{}],l8tyy:[function(e,t,i){t.exports=''},{}],"5iZC3":[function(e,t,i){t.exports=''},{}],i0Vut:[function(e,t,i){t.exports=''},{}],hOSvZ:[function(e,t,i){t.exports=''},{}],bOXC3:[function(e,t,i){t.exports=''},{}],lKuh0:[function(e,t,i){t.exports=''},{}],eB8W6:[function(e,t,i){t.exports=''},{}],bpe2E:[function(e,t,i){t.exports=''},{}],kL9zy:[function(e,t,i){t.exports=''},{}],"22xpM":[function(e,t,i){t.exports=''},{}],"8AxLD":[function(e,t,i){var a=e("@parcel/transformer-js/src/esmodule-helpers.js");a.defineInteropFlag(i),a.export(i,"default",()=>s);let n={map:(e,t,i,a,n)=>(e-t)*(n-a)/(i-t)+a,range(e,t,i){let a=Math.round(e/i)*i;return Array.from({length:Math.floor((t-e)/i)},(e,t)=>t*i+a)}},o=(e,t)=>{let i=t[0]-e[0],a=t[1]-e[1];return{length:Math.sqrt(Math.pow(i,2)+Math.pow(a,2)),angle:Math.atan2(a,i)}};function s(e,t,i){let{query:a}=e.constructor.utils;e.controls.add({name:"heatmap",position:"top",html:"",style:{position:"absolute",top:"-100px",left:"0px",right:"0px",height:"100px",width:"100%",pointerEvents:"none"},mounted(s){let l=null,r=null;function d(d=[]){if(l=null,r=null,s.innerHTML="",!e.duration||e.option.isLive)return;let p={w:s.offsetWidth,h:s.offsetHeight},u={xMin:0,xMax:p.w,yMin:0,yMax:128,scale:.25,opacity:.2,minHeight:Math.floor(.05*p.h),sampling:Math.floor(p.w/100),smoothing:.2,flattening:.2};"object"==typeof i&&Object.assign(u,i);let h=[];if(Array.isArray(d)&&d.length)h=[...d];else{let i=e.duration/p.w;for(let e=0;e<=p.w;e+=u.sampling){let a=t.danmus.filter(({time:t})=>t>e*i&&t<=(e+u.sampling)*i).length;h.push([e,a])}}if(0===h.length)return;let m=h[h.length-1],c=m[0],f=m[1];c!==p.w&&h.push([p.w,f]);let g=h.map(e=>e[1]),v=(Math.min(...g)+Math.max(...g))/2;for(let e=0;ev?1+u.scale:1-u.scale)+u.minHeight}let y=(e,t,i,a)=>{let s=o(t||e,i||e),l=n.map(Math.cos(s.angle)*u.flattening,0,1,1,0),r=s.angle*l+(a?Math.PI:0),d=s.length*u.smoothing;return[e[0]+Math.cos(r)*d,e[1]+Math.sin(r)*d]},x=(e,t,i)=>{let a=y(i[t-1],i[t-2],e),n=y(e,i[t-1],i[t+1],!0),o=t===i.length-1?" z":"";return`C ${a[0]},${a[1]} ${n[0]},${n[1]} ${e[0]},${e[1]}${o}`},k=h.map(e=>[n.map(e[0],u.xMin,u.xMax,0,p.w),n.map(e[1],u.yMin,u.yMax,p.h,0)]).reduce((e,t,i,a)=>0===i?`M ${a[a.length-1][0]},${p.h} L ${t[0]},${p.h} L ${t[0]},${t[1]}`:`${e} ${x(t,i,a)}`,"");s.innerHTML=``,l=a("#heatmap-start",s),r=a("#heatmap-stop",s),l.setAttribute("offset",`${100*e.played}%`),r.setAttribute("offset",`${100*e.played}%`)}e.on("video:timeupdate",()=>{l&&r&&(l.setAttribute("offset",`${100*e.played}%`),r.setAttribute("offset",`${100*e.played}%`))}),e.on("setBar",(e,t)=>{l&&r&&"played"===e&&(l.setAttribute("offset",`${100*t}%`),r.setAttribute("offset",`${100*t}%`))}),e.on("ready",()=>d()),e.on("resize",()=>d()),e.on("artplayerPluginDanmuku:loaded",()=>d()),e.on("artplayerPluginDanmuku:points",e=>d(e))}})}},{"@parcel/transformer-js/src/esmodule-helpers.js":"9pCYc"}]},["bgm6t"],"bgm6t","parcelRequire4dc0"); \ No newline at end of file diff --git a/docs/compiled/artplayer-plugin-danmuku.legacy.js b/docs/compiled/artplayer-plugin-danmuku.legacy.js index f2c633d80..b9075558d 100644 --- a/docs/compiled/artplayer-plugin-danmuku.legacy.js +++ b/docs/compiled/artplayer-plugin-danmuku.legacy.js @@ -5,4 +5,4 @@ * (c) 2017-2024 Harvey Zack * Released under the MIT License. */ -!function(e,t,r,n,a){var o="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},i="function"==typeof o[n]&&o[n],s=i.cache||{},l="undefined"!=typeof module&&"function"==typeof module.require&&module.require.bind(module);function u(t,r){if(!s[t]){if(!e[t]){var a="function"==typeof o[n]&&o[n];if(!r&&a)return a(t,!0);if(i)return i(t,!0);if(l&&"string"==typeof t)return l(t);var c=Error("Cannot find module '"+t+"'");throw c.code="MODULE_NOT_FOUND",c}d.resolve=function(r){var n=e[t][1][r];return null!=n?n:r},d.cache={};var p=s[t]=new u.Module(t);e[t][0].call(p.exports,d,p,p.exports,this)}return s[t].exports;function d(e){var t=d.resolve(e);return!1===t?{}:u(t)}}u.isParcelRequire=!0,u.Module=function(e){this.id=e,this.bundle=u,this.exports={}},u.modules=e,u.cache=s,u.parent=i,u.register=function(t,r){e[t]=[function(e,t){t.exports=r},{}]},Object.defineProperty(u,"root",{get:function(){return o[n]}}),o[n]=u;for(var c=0;c=r.time&&r.time>=e-.1&&t.push(r)}),t}},{key:"visibles",get:function(){var e=this,t=[],r=this.$player.clientWidth,n=this.getLeft(this.$player);return this.filter("emit",function(a){var o=a.$ref.offsetTop,i=e.getLeft(a.$ref)-n,s=a.$ref.clientHeight,l=a.$ref.clientWidth,u=i+l,c=u/a.$restTime,p={};p.top=o,p.left=i,p.height=s,p.width=l,p.right=r-u,p.speed=c,p.distance=u,p.time=a.$restTime,p.mode=a.mode,t.push(p)}),t}},{key:"speed",get:function(){return this.option.synchronousPlayback&&this.art.playbackRate?this.option.speed/Number(this.art.playbackRate):this.option.speed}},{key:"load",value:function(){var e=this;return(0,a._)(function(){var t,r;return(0,u._)(this,function(n){switch(n.label){case 0:t=e.utils.errorHandle,n.label=1;case 1:if(n.trys.push([1,9,,10]),"function"!=typeof e.option.danmuku)return[3,3];return[4,e.option.danmuku()];case 2:case 4:case 6:return e.danmus=n.sent(),[3,8];case 3:if("function"!=typeof e.option.danmuku.then)return[3,5];return[4,e.option.danmuku];case 5:if("string"!=typeof e.option.danmuku)return[3,7];return[4,(0,c.bilibiliDanmuParseFromUrl)(e.option.danmuku)];case 7:e.danmus=e.option.danmuku,n.label=8;case 8:return t(Array.isArray(e.danmus),"Danmuku need return an array as result"),e.queue=[],e.$danmuku.innerText="",e.danmus.forEach(function(t){return e.emit(t)}),e.art.emit("artplayerPluginDanmuku:loaded",e.queue),[3,10];case 9:throw r=n.sent(),e.art.emit("artplayerPluginDanmuku:error",r),r;case 10:return[2,e]}})})()}},{key:"emit",value:function(e){var t=this.utils.clamp;if(this.validator(e,{text:"string",mode:"?number",color:"?string",time:"?number",border:"?boolean",style:"?object"}),!e.text.trim()||(e.time?e.time=t(e.time,0,1/0):e.time=this.art.currentTime+.5,void 0===e.mode&&(e.mode=this.option.mode),void 0===e.style&&(e.style={}),void 0===e.color&&(e.color=this.option.color),![0,1,2].includes(e.mode)||!this.option.filter(e)))return this;var r=(0,l._)((0,s._)({},e),{$state:"wait",$id:this.index++,$ref:null,$restTime:0,$lastStartTime:0});return this.setState(r,"wait"),this.queue.push(r),this}},{key:"config",value:function(t){var r=this,n=this.utils.clamp,a=this.art.template.$controlsCenter;return Object.keys(t).some(function(e){return JSON.stringify(r.option[e])!==JSON.stringify(t[e])})&&(this.option=Object.assign({},e.option,this.option,t),this.validator(this.option,e.scheme),this.option.mode=n(this.option.mode,0,2),this.option.speed=n(this.option.speed,1,10),this.option.opacity=n(this.option.opacity,0,1),this.option.lockTime=n(this.option.lockTime,1,60),this.option.maxLength=n(this.option.maxLength,1,1e3),this.option.mount=this.option.mount||a,t.fontSize&&this.reset(),this.option.visible?this.show():this.hide(),this.art.emit("artplayerPluginDanmuku:config",this.option)),this}},{key:"getLeft",value:function(e){var t=e.getBoundingClientRect();return this.isRotate?t.top:t.left}},{key:"postMessage",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new Promise(function(r){t.id=Date.now(),e.worker.postMessage(t),e.worker.onmessage=function(e){var n=e.data;n.id===t.id&&r(n)}})}},{key:"filter",value:function(e,t){for(var r=this.states[e]||[],n=0;nt.indexOf(n)&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var a=0,n=Object.getOwnPropertySymbols(e);at.indexOf(n[a])&&Object.prototype.propertyIsEnumerable.call(e,n[a])&&(r[n[a]]=e[n[a]]);return r}function u(e,t,r,n){var a,o=arguments.length,i=o<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(a=e[s])&&(i=(o<3?a(i):o>3?a(t,r,i):a(t,r))||i);return o>3&&i&&Object.defineProperty(t,r,i),i}function c(e,t){return function(r,n){t(r,n,e)}}function p(e,t,r,n,a,o){function i(e){if(void 0!==e&&"function"!=typeof e)throw TypeError("Function expected");return e}for(var s,l=n.kind,u="getter"===l?"get":"setter"===l?"set":"value",c=!t&&e?n.static?e:e.prototype:null,p=t||(c?Object.getOwnPropertyDescriptor(c,n.name):{}),d=!1,f=r.length-1;f>=0;f--){var h={};for(var m in n)h[m]="access"===m?{}:n[m];for(var m in n.access)h.access[m]=n.access[m];h.addInitializer=function(e){if(d)throw TypeError("Cannot add initializers after decoration has completed");o.push(i(e||null))};var y=(0,r[f])("accessor"===l?{get:p.get,set:p.set}:p[u],h);if("accessor"===l){if(void 0===y)continue;if(null===y||"object"!=typeof y)throw TypeError("Object expected");(s=i(y.get))&&(p.get=s),(s=i(y.set))&&(p.set=s),(s=i(y.init))&&a.unshift(s)}else(s=i(y))&&("field"===l?a.unshift(s):p[u]=s)}c&&Object.defineProperty(c,n.name,p),d=!0}function d(e,t,r){for(var n=arguments.length>2,a=0;a0&&a[a.length-1])&&(6===s[0]||2===s[0])){i=0;continue}if(3===s[0]&&(!a||s[1]>a[0]&&s[1]=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function x(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,a,o=r.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i}function k(){for(var e=[],t=0;t1||s(e,t)})})}function s(e,t){try{var r;(r=a[e](t)).value instanceof $?Promise.resolve(r.value.v).then(l,u):c(o[0][2],r)}catch(e){c(o[0][3],e)}}function l(e){s("next",e)}function u(e){s("throw",e)}function c(e,t){e(t),o.shift(),o.length&&s(o[0][0],o[0][1])}}function S(e){var t,r;return t={},n("next"),n("throw",function(e){throw e}),n("return"),t[Symbol.iterator]=function(){return this},t;function n(n,a){t[n]=e[n]?function(t){return(r=!r)?{value:$(e[n](t)),done:!1}:a?a(t):t}:a}}function D(e){if(!Symbol.asyncIterator)throw TypeError("Symbol.asyncIterator is not defined.");var t,r=e[Symbol.asyncIterator];return r?r.call(e):(e=b(e),t={},n("next"),n("throw"),n("return"),t[Symbol.asyncIterator]=function(){return this},t);function n(r){t[r]=e[r]&&function(t){return new Promise(function(n,a){!function(e,t,r,n){Promise.resolve(n).then(function(t){e({value:t,done:r})},t)}(n,a,(t=e[r](t)).done,t.value)})}}}function M(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e}var F=Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t};function P(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&v(t,e,r);return F(t,e),t}function E(e){return e&&e.__esModule?e:{default:e}}function T(e,t,r,n){if("a"===r&&!n)throw TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!n:!t.has(e))throw TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(e):n?n.value:t.get(e)}function A(e,t,r,n,a){if("m"===n)throw TypeError("Private method is not writable");if("a"===n&&!a)throw TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!a:!t.has(e))throw TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?a.call(e,r):a?a.value=r:t.set(e,r),r}function I(e,t){if(null===t||"object"!=typeof t&&"function"!=typeof t)throw TypeError("Cannot use 'in' operator on non-object");return"function"==typeof e?t===e:e.has(t)}function z(e,t,r){if(null!=t){var n;if("object"!=typeof t&&"function"!=typeof t)throw TypeError("Object expected.");if(r){if(!Symbol.asyncDispose)throw TypeError("Symbol.asyncDispose is not defined.");n=t[Symbol.asyncDispose]}if(void 0===n){if(!Symbol.dispose)throw TypeError("Symbol.dispose is not defined.");n=t[Symbol.dispose]}if("function"!=typeof n)throw TypeError("Object not disposable.");e.stack.push({value:t,dispose:n,async:r})}else r&&e.stack.push({async:!0});return t}var C="function"==typeof SuppressedError?SuppressedError:function(e,t,r){var n=Error(r);return n.name="SuppressedError",n.error=e,n.suppressed=t,n};function L(e){function t(t){e.error=e.hasError?new C(t,e.error,"An error was suppressed during disposal."):t,e.hasError=!0}return function r(){for(;e.stack.length;){var n=e.stack.pop();try{var a=n.dispose&&n.dispose.call(n.value);if(n.async)return Promise.resolve(a).then(r,function(e){return t(e),r()})}catch(e){t(e)}}if(e.hasError)throw e.error}()}r.default={__extends:i,__assign:s,__rest:l,__decorate:u,__param:c,__metadata:m,__awaiter:y,__generator:g,__createBinding:v,__exportStar:_,__values:b,__read:x,__spread:k,__spreadArrays:w,__spreadArray:j,__await:$,__asyncGenerator:O,__asyncDelegator:S,__asyncValues:D,__makeTemplateObject:M,__importStar:P,__importDefault:E,__classPrivateFieldGet:T,__classPrivateFieldSet:A,__classPrivateFieldIn:I,__addDisposableResource:z,__disposeResources:L}},{"@swc/helpers/_/_type_of":"felZi","@parcel/transformer-js/src/esmodule-helpers.js":"iWrD0"}],felZi:[function(e,t,r){var n=e("@parcel/transformer-js/src/esmodule-helpers.js");function a(e){return e&&"undefined"!=typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}n.defineInteropFlag(r),n.export(r,"_type_of",function(){return a}),n.export(r,"_",function(){return a})},{"@parcel/transformer-js/src/esmodule-helpers.js":"iWrD0"}],kMsXR:[function(e,t,r){var n=e("@parcel/transformer-js/src/esmodule-helpers.js");n.defineInteropFlag(r),n.export(r,"getMode",function(){return i}),n.export(r,"bilibiliDanmuParseFromXml",function(){return s}),n.export(r,"bilibiliDanmuParseFromUrl",function(){return l});var a=e("@swc/helpers/_/_async_to_generator"),o=e("@swc/helpers/_/_ts_generator");function i(e){switch(e){case 1:case 2:case 3:default:return 0;case 4:return 2;case 5:return 1}}function s(e){return"string"!=typeof e?[]:Array.from(e.matchAll(RegExp('(?.+?)<\\/d>',"gs"))).map(function(e){var t=e.groups.p.split(",");return t.length>=8?{text:e.groups.text.trim().replaceAll(""",'"').replaceAll("'","'").replaceAll("<","<").replaceAll(">",">").replaceAll("&","&"),time:Number(t[0]),mode:i(Number(t[1])),fontSize:Number(t[2]),color:"#".concat(Number(t[3]).toString(16)),timestamp:Number(t[4]),pool:Number(t[5]),userID:t[6],rowID:Number(t[7])}:null}).filter(Boolean)}function l(e){return u.apply(this,arguments)}function u(){return(u=(0,a._)(function(e){return(0,o._)(this,function(t){switch(t.label){case 0:return[4,fetch(e)];case 1:return[4,t.sent().text()];case 2:return[2,s(t.sent())]}})})).apply(this,arguments)}},{"@swc/helpers/_/_async_to_generator":"eONSn","@swc/helpers/_/_ts_generator":"6Xyd0","@parcel/transformer-js/src/esmodule-helpers.js":"iWrD0"}],"1gMd5":[function(e,t,r){t.exports='!function(e,r,t,n,o){var a="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},i="function"==typeof a[n]&&a[n],s=i.cache||{},u="undefined"!=typeof module&&"function"==typeof module.require&&module.require.bind(module);function l(r,t){if(!s[r]){if(!e[r]){var o="function"==typeof a[n]&&a[n];if(!t&&o)return o(r,!0);if(i)return i(r,!0);if(u&&"string"==typeof r)return u(r);var f=Error("Cannot find module \'"+r+"\'");throw f.code="MODULE_NOT_FOUND",f}c.resolve=function(t){var n=e[r][1][t];return null!=n?n:t},c.cache={};var p=s[r]=new l.Module(r);e[r][0].call(p.exports,c,p,p.exports,this)}return s[r].exports;function c(e){var r=c.resolve(e);return!1===r?{}:l(r)}}l.isParcelRequire=!0,l.Module=function(e){this.id=e,this.bundle=l,this.exports={}},l.modules=e,l.cache=s,l.parent=i,l.register=function(r,t){e[r]=[function(e,r){r.exports=t},{}]},Object.defineProperty(l,"root",{get:function(){return a[n]}}),a[n]=l;for(var f=0;f=0;p-=1){var c=f[p],_=f[p+1],d=c.top+c.height;if(_.top-d>=r.height)return _.top-r.height}else for(var h=1;h=r.height)return g}for(var j=[],b=1;be.time)})});return w&&w[0]?w[0].top:void 0;case 1:case 2:return}else{switch(r.mode){case 0:j.sort(function(e,r){var t,o,a=(t=Math).min.apply(t,(0,n._)(r.map(function(e){return e.right}))),i=(o=Math).min.apply(o,(0,n._)(e.map(function(e){return e.right})));return a*r.length-i*e.length});break;case 1:case 2:j.sort(function(e,r){var t,o,a=(t=Math).max.apply(t,(0,n._)(r.map(function(e){return e.width})));return(o=Math).max.apply(o,(0,n._)(e.map(function(e){return e.width})))*e.length-a*r.length})}return j[0][0].top}}(r);self.postMessage({top:t,id:r.id})}}},{"@swc/helpers/_/_to_consumable_array":"iwLF0"}],iwLF0:[function(e,r,t){var n=e("@parcel/transformer-js/src/esmodule-helpers.js");n.defineInteropFlag(t),n.export(t,"_to_consumable_array",function(){return u}),n.export(t,"_",function(){return u});var o=e("./_array_without_holes.js"),a=e("./_iterable_to_array.js"),i=e("./_non_iterable_spread.js"),s=e("./_unsupported_iterable_to_array.js");function u(e){return(0,o._array_without_holes)(e)||(0,a._iterable_to_array)(e)||(0,s._unsupported_iterable_to_array)(e)||(0,i._non_iterable_spread)()}},{"./_array_without_holes.js":"cuL6A","./_iterable_to_array.js":"2thrs","./_non_iterable_spread.js":"a8nO2","./_unsupported_iterable_to_array.js":"5m31D","@parcel/transformer-js/src/esmodule-helpers.js":"iWrD0"}],cuL6A:[function(e,r,t){var n=e("@parcel/transformer-js/src/esmodule-helpers.js");n.defineInteropFlag(t),n.export(t,"_array_without_holes",function(){return a}),n.export(t,"_",function(){return a});var o=e("./_array_like_to_array.js");function a(e){if(Array.isArray(e))return(0,o._array_like_to_array)(e)}},{"./_array_like_to_array.js":"djwRR","@parcel/transformer-js/src/esmodule-helpers.js":"iWrD0"}],djwRR:[function(e,r,t){var n=e("@parcel/transformer-js/src/esmodule-helpers.js");function o(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=Array(r);t\n '.concat(h.default).concat(y.default,'\n\n
\n ').concat(v.default,'\n
\n
\n
\n 按类型屏蔽\n
\n
\n ').concat(k.default).concat(j.default,'\n
滚动
\n
\n
\n ').concat(O.default).concat(D.default,'\n
顶部
\n
\n
\n ').concat(F.default).concat(E.default,'\n
底部
\n
\n
\n
\n
\n
\n ').concat(A.default).concat(z.default,'\n 防止弹幕重叠\n
\n
\n ').concat(A.default).concat(z.default,'\n 同步视频速度\n
\n
\n
\n 不透明度\n
\n
未知
\n
\n
\n 显示区域\n
\n
未知
\n
\n
\n 弹幕字号\n
\n
未知
\n
\n
\n 弹幕速度\n
\n
未知
\n
\n
\n
\n
\n
\n
\n ').concat(b.default,'\n
\n
\n
\n 模式\n
\n
\n ').concat(j.default,'\n
滚动
\n
\n
\n ').concat(D.default,'\n
顶部
\n
\n
\n ').concat(E.default,'\n
底部
\n
\n
\n
\n
\n 颜色\n
\n ').concat(this.COLOR.map(function(e){return'
')}).join(""),'\n
\n
\n
\n
\n
\n\n
发送
\n
\n ')}},{key:"OPACITY",get:function(){return(0,s._)({min:0,max:100,steps:[]},this.option.OPACITY)}},{key:"FONT_SIZE",get:function(){return(0,s._)({min:12,max:120,steps:[]},this.option.FONT_SIZE)}},{key:"MARGIN",get:function(){return(0,s._)({min:0,max:3,steps:[{name:"1/4",value:[10,"75%"]},{name:"半屏",value:[10,"50%"]},{name:"3/4",value:[10,"25%"]},{name:"满屏",value:[10,10]}]},this.option.MARGIN)}},{key:"SPEED",get:function(){return(0,s._)({min:0,max:4,steps:[{name:"极慢",value:10},{name:"较慢",value:7.5,hide:!0},{name:"适中",value:5},{name:"较快",value:2.5,hide:!0},{name:"极快",value:1}]},this.option.SPEED)}},{key:"COLOR",get:function(){return this.option.COLOR.length?this.option.COLOR:["#FE0302","#FF7204","#FFAA02","#FFD302","#FFFF00","#A0EE00","#00CD00","#019899","#4266BE","#89D5FF","#CC0273","#222222","#9B9B9B","#FFFFFF"]}},{key:"query",value:function(e){return(0,this.utils.query)(e,this.template.$danmuku)}},{key:"setData",value:function(e,t){var r=this.art.template.$player,n=this.template.$mount;r.dataset[e]=t,this.outside&&(n.dataset[e]=t)}},{key:"createTemplate",value:function(){var e=this.utils,t=e.createElement,r=e.tooltip,n=t("div");n.className="artplayer-plugin-danmuku",n.innerHTML=this.TEMPLATE,this.template.$danmuku=n,this.template.$toggle=this.query(".apd-toggle"),this.template.$configModes=this.query(".apd-config-mode .apd-modes"),this.template.$styleModes=this.query(".apd-style-mode .apd-modes"),this.template.$colors=this.query(".apd-colors"),this.template.$antiOverlap=this.query(".apd-anti-overlap"),this.template.$syncVideo=this.query(".apd-sync-video"),this.template.$opacitySlider=this.query(".apd-config-opacity .apd-slider"),this.template.$opacityValue=this.query(".apd-config-opacity .apd-value"),this.template.$marginSlider=this.query(".apd-config-margin .apd-slider"),this.template.$marginValue=this.query(".apd-config-margin .apd-value"),this.template.$fontSizeSlider=this.query(".apd-config-fontSize .apd-slider"),this.template.$fontSizeValue=this.query(".apd-config-fontSize .apd-value"),this.template.$speedSlider=this.query(".apd-config-speed .apd-slider"),this.template.$speedValue=this.query(".apd-config-speed .apd-value"),this.template.$input=this.query(".apd-input"),this.template.$send=this.query(".apd-send");var a=this.template.$toggle;this.art.on("artplayerPluginDanmuku:show",function(){r(a,"关闭弹幕")}),this.art.on("artplayerPluginDanmuku:hide",function(){r(a,"打开弹幕")})}},{key:"createEvents",value:function(){var e=this,t=this.template,r=t.$toggle,n=t.$configModes,a=t.$styleModes,o=t.$colors,i=t.$antiOverlap,s=t.$syncVideo,l=t.$send,c=t.$input;this.art.proxy(r,"click",function(){e.danmuku.config({visible:!e.option.visible}),e.reset()}),this.art.proxy(n,"click",function(t){var r=t.target.closest(".apd-mode");if(r){var n=Number(r.dataset.mode);e.option.modes.includes(n)?e.danmuku.config({modes:e.option.modes.filter(function(e){return e!==n})}):e.danmuku.config({modes:(0,u._)(e.option.modes).concat([n])}),e.reset()}}),this.art.proxy(i,"click",function(){e.danmuku.config({antiOverlap:!e.option.antiOverlap}),e.reset()}),this.art.proxy(s,"click",function(){e.danmuku.config({synchronousPlayback:!e.option.synchronousPlayback}),e.reset()}),this.art.proxy(a,"click",function(t){var r=t.target.closest(".apd-mode");if(r){var n=Number(r.dataset.mode);e.danmuku.config({mode:n}),e.reset()}}),this.art.proxy(o,"click",function(t){var r=t.target.closest(".apd-color");r&&(e.danmuku.config({color:r.dataset.color}),e.reset())}),this.art.proxy(l,"click",function(){return e.emit()}),this.art.proxy(c,"keypress",function(t){"Enter"===t.key&&(t.preventDefault(),e.emit())})}},{key:"createSliders",value:function(){var e=this;this.slider.opacity=this.createSlider((0,l._)((0,s._)({},this.OPACITY),{container:this.template.$opacitySlider,findIndex:function(){return Math.round(100*e.option.opacity)},onChange:function(t){e.template.$opacityValue.textContent="".concat(t,"%"),e.danmuku.config({opacity:t/100})}})),this.slider.margin=this.createSlider((0,l._)((0,s._)({},this.MARGIN),{container:this.template.$marginSlider,findIndex:function(){return e.MARGIN.steps.findIndex(function(t){return t.value[0]===e.option.margin[0]&&t.value[1]===e.option.margin[1]})},onChange:function(t){var r=e.MARGIN.steps[t];r&&(e.template.$marginValue.textContent=r.name,e.danmuku.config({margin:r.value}))}})),this.slider.fontSize=this.createSlider((0,l._)((0,s._)({},this.FONT_SIZE),{container:this.template.$fontSizeSlider,findIndex:function(){return Math.round(e.danmuku.fontSize)},onChange:function(t){e.template.$fontSizeValue.textContent="".concat(t,"px"),e.danmuku.config({fontSize:t})}})),this.slider.speed=this.createSlider((0,l._)((0,s._)({},this.SPEED),{container:this.template.$speedSlider,findIndex:function(){return e.SPEED.steps.findIndex(function(t){return t.value===e.option.speed})},onChange:function(t){var r=e.SPEED.steps[t];r&&(e.template.$speedValue.textContent=r.name,e.danmuku.config({speed:r.value}))}}))}},{key:"createSlider",value:function(e){var t=e.min,r=e.max,n=e.container,a=e.findIndex,o=e.onChange,i=e.steps,s=void 0===i?[]:i,l=this.utils,u=l.query,c=l.clamp;n.innerHTML='\n
\n
\n '.concat(s.map(function(){return'
'}).join(""),'\n
\n
\n
\n
\n
\n ').concat(s.map(function(e){return e.hide?"":'
'.concat(e.name,"
")}).join(""),"\n
\n ");var p=u(".apd-slider-dot",n),d=u(".apd-slider-progress",n),f=!1;function h(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:a();if(!(er)){var n=(e-t)/(r-t);p.style.left="".concat(100*n,"%"),0===s.length&&(d.style.width=p.style.left),o(e)}}function m(e){var a=n.getBoundingClientRect(),o=a.left,i=a.width;h(Math.round(c(e.clientX-o,0,i)/i*(r-t)+t))}return this.art.proxy(n,"click",function(e){m(e)}),this.art.proxy(n,"mousedown",function(e){f=0===e.button}),this.art.on("document:mousemove",function(e){f&&m(e)}),this.art.on("document:mouseup",function(e){f&&(f=!1,m(e))}),{reset:h}}},{key:"onFullscreen",value:function(e){if(this.outside){var t=this.template,r=t.$danmuku,n=t.$controlsCenter,a=t.$mount;e?n.appendChild(r):a.appendChild(r)}}},{key:"emit",value:function(){var e=this;return(0,a._)(function(){var t,r,n,a;return(0,c._)(this,function(o){switch(o.label){case 0:if(!(r=(t=e.template.$input).value.trim()).length||e.isLock||e.emitting)return[2];n={text:r,mode:e.option.mode,color:e.option.color,time:e.art.currentTime},o.label=1;case 1:return o.trys.push([1,3,,4]),e.emitting=!0,[4,e.option.beforeEmit(n)];case 2:if(a=o.sent(),e.emitting=!1,!0!==a)return[2];return n.border=!0,delete n.time,e.danmuku.emit(n),t.value="",e.lock(),[3,4];case 3:return o.sent(),e.emitting=!1,[3,4];case 4:return[2]}})})()}},{key:"lock",value:function(){var e=this,t=this.utils.addClass,r=this.template.$send;this.isLock=!0;var n=this.option.lockTime;r.innerText=n,t(r,"apd-lock");var a=function(){e.timer=setTimeout(function(){0===n?e.unlock():(n-=1,r.innerText=n,a())},1e3)};a()}},{key:"unlock",value:function(){var e=this.utils.removeClass,t=this.template.$send;clearTimeout(this.timer),this.isLock=!1,t.innerText="发送",e(t,"apd-lock")}},{key:"reset",value:function(){var e=this,t=this.utils,r=t.inverseClass,n=t.tooltip,a=this.template,o=a.$toggle,i=a.$colors;this.slider.opacity.reset(),this.slider.margin.reset(),this.slider.fontSize.reset(),this.slider.speed.reset(),this.setData("danmukuVisible",this.option.visible),this.setData("danmukuMode",this.option.mode),this.setData("danmukuColor",this.option.color),this.setData("danmukuMode0",this.option.modes.includes(0)),this.setData("danmukuMode1",this.option.modes.includes(1)),this.setData("danmukuMode2",this.option.modes.includes(2)),this.setData("danmukuAntiOverlap",this.option.antiOverlap),this.setData("danmukuSyncVideo",this.option.synchronousPlayback),this.setData("danmukuTheme",this.option.theme),this.setData("danmukuEmitter",this.option.emitter);var s=Array.from(i.children).find(function(t){return t.dataset.color===e.option.color.toUpperCase()});s&&r(s,"apd-active"),n(o,this.option.visible?"关闭弹幕":"打开弹幕")}},{key:"mount",value:function(e){var t="string"==typeof e?document.querySelector(e):e;t.appendChild(this.template.$danmuku),this.template.$mount=t,this.reset()}}],[{key:"icons",get:function(){return{$on:h.default,$off:y.default,$config:v.default,$style:b.default,$mode_0_off:k.default,$mode_0_on:j.default,$mode_1_off:O.default,$mode_1_on:D.default,$mode_2_off:F.default,$mode_2_on:E.default,$check_on:A.default,$check_off:z.default}}}]),e}();if("undefined"!=typeof document){var L="artplayer-plugin-danmuku",H=document.getElementById(L);if(H)H.textContent=d.default;else{var R=document.createElement("style");R.id=L,R.textContent=d.default,document.head.appendChild(R)}}},{"@swc/helpers/_/_async_to_generator":"eONSn","@swc/helpers/_/_class_call_check":"9iJMm","@swc/helpers/_/_create_class":"21IOT","@swc/helpers/_/_object_spread":"9agdF","@swc/helpers/_/_object_spread_props":"gJNH2","@swc/helpers/_/_to_consumable_array":"iwLF0","@swc/helpers/_/_ts_generator":"6Xyd0","bundle-text:./style.less":"i8wAr","bundle-text:./img/on.svg":"4mwSI","bundle-text:./img/off.svg":"9bQDs","bundle-text:./img/config.svg":"cciuY","bundle-text:./img/style.svg":"e5G6o","bundle-text:./img/mode_0_off.svg":"fC4yA","bundle-text:./img/mode_0_on.svg":"fUkVg","bundle-text:./img/mode_1_off.svg":"isoJm","bundle-text:./img/mode_1_on.svg":"20nBM","bundle-text:./img/mode_2_off.svg":"6x9CL","bundle-text:./img/mode_2_on.svg":"7GKdL","bundle-text:./img/check_on.svg":"9SCIh","bundle-text:./img/check_off.svg":"6KRxn","@parcel/transformer-js/src/esmodule-helpers.js":"iWrD0"}],iwLF0:[function(e,t,r){var n=e("@parcel/transformer-js/src/esmodule-helpers.js");n.defineInteropFlag(r),n.export(r,"_to_consumable_array",function(){return l}),n.export(r,"_",function(){return l});var a=e("./_array_without_holes.js"),o=e("./_iterable_to_array.js"),i=e("./_non_iterable_spread.js"),s=e("./_unsupported_iterable_to_array.js");function l(e){return(0,a._array_without_holes)(e)||(0,o._iterable_to_array)(e)||(0,s._unsupported_iterable_to_array)(e)||(0,i._non_iterable_spread)()}},{"./_array_without_holes.js":"cuL6A","./_iterable_to_array.js":"2thrs","./_non_iterable_spread.js":"a8nO2","./_unsupported_iterable_to_array.js":"5m31D","@parcel/transformer-js/src/esmodule-helpers.js":"iWrD0"}],cuL6A:[function(e,t,r){var n=e("@parcel/transformer-js/src/esmodule-helpers.js");n.defineInteropFlag(r),n.export(r,"_array_without_holes",function(){return o}),n.export(r,"_",function(){return o});var a=e("./_array_like_to_array.js");function o(e){if(Array.isArray(e))return(0,a._array_like_to_array)(e)}},{"./_array_like_to_array.js":"djwRR","@parcel/transformer-js/src/esmodule-helpers.js":"iWrD0"}],djwRR:[function(e,t,r){var n=e("@parcel/transformer-js/src/esmodule-helpers.js");function a(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r.artplayer-plugin-danmuku .apd-icon{fill:#333}[data-danmuku-theme=light]>.artplayer-plugin-danmuku .apd-emitter{background-color:#f1f2f3}[data-danmuku-theme=light]>.artplayer-plugin-danmuku .apd-input{color:#000}[data-danmuku-theme=light]>.artplayer-plugin-danmuku .apd-input::placeholder{color:rgba(0,0,0,.3)}[data-danmuku-theme=light]>.artplayer-plugin-danmuku .apd-input::placeholder{color:rgba(0,0,0,.3)}[data-danmuku-visible=false] .apd-toggle-off{display:block}[data-danmuku-visible=false] .apd-toggle-on,[data-danmuku-visible=true] .apd-toggle-off{display:none}[data-danmuku-visible=true] .apd-toggle-on{display:block}[data-danmuku-anti-overlap=false] .apd-anti-overlap .apd-check-on{display:none}[data-danmuku-anti-overlap=false] .apd-anti-overlap .apd-check-off,[data-danmuku-anti-overlap=true] .apd-anti-overlap .apd-check-on{display:block}[data-danmuku-anti-overlap=true] .apd-anti-overlap .apd-check-off,[data-danmuku-sync-video=false] .apd-sync-video .apd-check-on{display:none}[data-danmuku-sync-video=false] .apd-sync-video .apd-check-off,[data-danmuku-sync-video=true] .apd-sync-video .apd-check-on{display:block}[data-danmuku-sync-video=true] .apd-sync-video .apd-check-off{display:none}[data-danmuku-mode0=false] .apd-config-mode .apd-mode-0-off{display:block}[data-danmuku-mode0=false] .apd-config-mode .apd-mode-0-on{display:none}[data-danmuku-mode0=false] .art-danmuku [data-mode="0"]{opacity:0!important}[data-danmuku-mode0=true] .apd-config-mode .apd-mode-0-off{display:none}[data-danmuku-mode0=true] .apd-config-mode .apd-mode-0-on{display:block}[data-danmuku-mode="0"] .apd-style-mode [data-mode="0"]{color:#00a1d6}[data-danmuku-mode="0"] .apd-style-mode [data-mode="0"] path{fill:#00a1d6}[data-danmuku-mode1=false] .apd-config-mode .apd-mode-1-off{display:block}[data-danmuku-mode1=false] .apd-config-mode .apd-mode-1-on{display:none}[data-danmuku-mode1=false] .art-danmuku [data-mode="1"]{opacity:0!important}[data-danmuku-mode1=true] .apd-config-mode .apd-mode-1-off{display:none}[data-danmuku-mode1=true] .apd-config-mode .apd-mode-1-on{display:block}[data-danmuku-mode="1"] .apd-style-mode [data-mode="1"]{color:#00a1d6}[data-danmuku-mode="1"] .apd-style-mode [data-mode="1"] path{fill:#00a1d6}[data-danmuku-mode2=false] .apd-config-mode .apd-mode-2-off{display:block}[data-danmuku-mode2=false] .apd-config-mode .apd-mode-2-on{display:none}[data-danmuku-mode2=false] .art-danmuku [data-mode="2"]{opacity:0!important}[data-danmuku-mode2=true] .apd-config-mode .apd-mode-2-off{display:none}[data-danmuku-mode2=true] .apd-config-mode .apd-mode-2-on{display:block}[data-danmuku-mode="2"] .apd-style-mode [data-mode="2"]{color:#00a1d6}[data-danmuku-mode="2"] .apd-style-mode [data-mode="2"] path{fill:#00a1d6}'},{}],"4mwSI":[function(e,t,r){t.exports=''},{}],"9bQDs":[function(e,t,r){t.exports=''},{}],cciuY:[function(e,t,r){t.exports=''},{}],e5G6o:[function(e,t,r){t.exports=''},{}],fC4yA:[function(e,t,r){t.exports=''},{}],fUkVg:[function(e,t,r){t.exports=''},{}],isoJm:[function(e,t,r){t.exports=''},{}],"20nBM":[function(e,t,r){t.exports=''},{}],"6x9CL":[function(e,t,r){t.exports=''},{}],"7GKdL":[function(e,t,r){t.exports=''},{}],"9SCIh":[function(e,t,r){t.exports=''},{}],"6KRxn":[function(e,t,r){t.exports=''},{}],dXFn2:[function(e,t,r){var n=e("@parcel/transformer-js/src/esmodule-helpers.js");n.defineInteropFlag(r),n.export(r,"default",function(){return s});var a=e("@swc/helpers/_/_to_consumable_array"),o={map:function(e,t,r,n,a){return(e-t)*(a-n)/(r-t)+n}},i=function(e,t){var r=t[0]-e[0],n=t[1]-e[1];return{length:Math.sqrt(Math.pow(r,2)+Math.pow(n,2)),angle:Math.atan2(n,r)}};function s(e,t,r){var n=e.constructor.utils.query;e.controls.add({name:"heatmap",position:"top",html:"",style:{position:"absolute",top:"-100px",left:"0px",right:"0px",height:"100px",width:"100%",pointerEvents:"none"},mounted:function(s){var l=null,u=null;function c(){var c,p,d=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(l=null,u=null,s.innerHTML="",e.duration&&!e.option.isLive){var f={w:s.offsetWidth,h:s.offsetHeight},h={xMin:0,xMax:f.w,yMin:0,yMax:128,scale:.25,opacity:.2,minHeight:Math.floor(.05*f.h),sampling:Math.floor(f.w/100),smoothing:.2,flattening:.2};"object"==typeof r&&Object.assign(h,r);var m=[];if(Array.isArray(d)&&d.length)m=(0,a._)(d);else for(var y=function(e){var r=t.danmus.filter(function(t){var r=t.time;return r>e*g&&r<=(e+h.sampling)*g}).length;m.push([e,r])},g=e.duration/f.w,v=0;v<=f.w;v+=h.sampling)y(v);if(0!==m.length){var _=m[m.length-1],b=_[0],x=_[1];b!==f.w&&m.push([f.w,x]);for(var k=m.map(function(e){return e[1]}),w=((c=Math).min.apply(c,(0,a._)(k))+(p=Math).max.apply(p,(0,a._)(k)))/2,j=0;jw?1+h.scale:1-h.scale)+h.minHeight}var S=function(e,t,r,n){var a=i(t||e,r||e),s=o.map(Math.cos(a.angle)*h.flattening,0,1,1,0),l=a.angle*s+(n?Math.PI:0),u=a.length*h.smoothing;return[e[0]+Math.cos(l)*u,e[1]+Math.sin(l)*u]},D=function(e,t,r){var n=S(r[t-1],r[t-2],e),a=S(e,r[t-1],r[t+1],!0),o=t===r.length-1?" z":"";return"C ".concat(n[0],",").concat(n[1]," ").concat(a[0],",").concat(a[1]," ").concat(e[0],",").concat(e[1]).concat(o)},M=m.map(function(e){return[o.map(e[0],h.xMin,h.xMax,0,f.w),o.map(e[1],h.yMin,h.yMax,f.h,0)]}).reduce(function(e,t,r,n){return 0===r?"M ".concat(n[n.length-1][0],",").concat(f.h," L ").concat(t[0],",").concat(f.h," L ").concat(t[0],",").concat(t[1]):"".concat(e," ").concat(D(t,r,n))},"");s.innerHTML='\n\n\n\n\n\n\n\n\n\n\n\n '),l=n("#heatmap-start",s),u=n("#heatmap-stop",s),l.setAttribute("offset","".concat(100*e.played,"%")),u.setAttribute("offset","".concat(100*e.played,"%"))}}}e.on("video:timeupdate",function(){l&&u&&(l.setAttribute("offset","".concat(100*e.played,"%")),u.setAttribute("offset","".concat(100*e.played,"%")))}),e.on("setBar",function(e,t){l&&u&&"played"===e&&(l.setAttribute("offset","".concat(100*t,"%")),u.setAttribute("offset","".concat(100*t,"%")))}),e.on("ready",function(){return c()}),e.on("resize",function(){return c()}),e.on("artplayerPluginDanmuku:loaded",function(){return c()}),e.on("artplayerPluginDanmuku:points",function(e){return c(e)})}})}},{"@swc/helpers/_/_to_consumable_array":"iwLF0","@parcel/transformer-js/src/esmodule-helpers.js":"iWrD0"}]},["40mNk"],"40mNk","parcelRequire4dc0"); \ No newline at end of file +!function(e,t,r,n,a){var o="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},i="function"==typeof o[n]&&o[n],s=i.cache||{},l="undefined"!=typeof module&&"function"==typeof module.require&&module.require.bind(module);function u(t,r){if(!s[t]){if(!e[t]){var a="function"==typeof o[n]&&o[n];if(!r&&a)return a(t,!0);if(i)return i(t,!0);if(l&&"string"==typeof t)return l(t);var c=Error("Cannot find module '"+t+"'");throw c.code="MODULE_NOT_FOUND",c}d.resolve=function(r){var n=e[t][1][r];return null!=n?n:r},d.cache={};var p=s[t]=new u.Module(t);e[t][0].call(p.exports,d,p,p.exports,this)}return s[t].exports;function d(e){var t=d.resolve(e);return!1===t?{}:u(t)}}u.isParcelRequire=!0,u.Module=function(e){this.id=e,this.bundle=u,this.exports={}},u.modules=e,u.cache=s,u.parent=i,u.register=function(t,r){e[t]=[function(e,t){t.exports=r},{}]},Object.defineProperty(u,"root",{get:function(){return o[n]}}),o[n]=u;for(var c=0;c=r.time&&r.time>=e-.1&&t.push(r)}),t}},{key:"visibles",get:function(){var e=this,t=[],r=this.$player.clientWidth,n=this.getLeft(this.$player);return this.filter("emit",function(a){var o=a.$ref.offsetTop,i=e.getLeft(a.$ref)-n,s=a.$ref.clientHeight,l=a.$ref.clientWidth,u=i+l,c=u/a.$restTime,p={};p.top=o,p.left=i,p.height=s,p.width=l,p.right=r-u,p.speed=c,p.distance=u,p.time=a.$restTime,p.mode=a.mode,t.push(p)}),t}},{key:"speed",get:function(){return this.option.synchronousPlayback&&this.art.playbackRate?this.option.speed/Number(this.art.playbackRate):this.option.speed}},{key:"load",value:function(){var e=this;return(0,a._)(function(){var t,r;return(0,u._)(this,function(n){switch(n.label){case 0:t=e.utils.errorHandle,n.label=1;case 1:if(n.trys.push([1,9,,10]),"function"!=typeof e.option.danmuku)return[3,3];return[4,e.option.danmuku()];case 2:case 4:case 6:return e.danmus=n.sent(),[3,8];case 3:if("function"!=typeof e.option.danmuku.then)return[3,5];return[4,e.option.danmuku];case 5:if("string"!=typeof e.option.danmuku)return[3,7];return[4,(0,c.bilibiliDanmuParseFromUrl)(e.option.danmuku)];case 7:e.danmus=e.option.danmuku,n.label=8;case 8:return t(Array.isArray(e.danmus),"Danmuku need return an array as result"),e.queue=[],e.$danmuku.innerText="",e.danmus.forEach(function(t){return e.emit(t)}),e.art.emit("artplayerPluginDanmuku:loaded",e.queue),[3,10];case 9:throw r=n.sent(),e.art.emit("artplayerPluginDanmuku:error",r),r;case 10:return[2,e]}})})()}},{key:"emit",value:function(e){var t=this.utils.clamp;if(this.validator(e,{text:"string",mode:"?number",color:"?string",time:"?number",border:"?boolean",style:"?object"}),!e.text.trim()||(e.time?e.time=t(e.time,0,1/0):e.time=this.art.currentTime+.5,void 0===e.mode&&(e.mode=this.option.mode),void 0===e.style&&(e.style={}),void 0===e.color&&(e.color=this.option.color),![0,1,2].includes(e.mode)||!this.option.filter(e)))return this;var r=(0,l._)((0,s._)({},e),{$state:"wait",$id:this.index++,$ref:null,$restTime:0,$lastStartTime:0});return this.setState(r,"wait"),this.queue.push(r),this}},{key:"config",value:function(t){var r=this,n=this.utils.clamp,a=this.art.template.$controlsCenter;return Object.keys(t).some(function(e){return JSON.stringify(r.option[e])!==JSON.stringify(t[e])})&&(this.option=Object.assign({},e.option,this.option,t),this.validator(this.option,e.scheme),this.option.mode=n(this.option.mode,0,2),this.option.speed=n(this.option.speed,1,10),this.option.opacity=n(this.option.opacity,0,1),this.option.lockTime=n(this.option.lockTime,1,60),this.option.maxLength=n(this.option.maxLength,1,1e3),this.option.mount=this.option.mount||a,t.fontSize&&this.reset(),this.option.visible?this.show():this.hide(),this.art.emit("artplayerPluginDanmuku:config",this.option)),this}},{key:"getLeft",value:function(e){var t=e.getBoundingClientRect();return this.isRotate?t.top:t.left}},{key:"postMessage",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new Promise(function(r){t.id=Date.now(),e.worker.postMessage(t),e.worker.onmessage=function(e){var n=e.data;n.id===t.id&&r(n)}})}},{key:"filter",value:function(e,t){for(var r=this.states[e]||[],n=0;nt.indexOf(n)&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var a=0,n=Object.getOwnPropertySymbols(e);at.indexOf(n[a])&&Object.prototype.propertyIsEnumerable.call(e,n[a])&&(r[n[a]]=e[n[a]]);return r}function u(e,t,r,n){var a,o=arguments.length,i=o<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(a=e[s])&&(i=(o<3?a(i):o>3?a(t,r,i):a(t,r))||i);return o>3&&i&&Object.defineProperty(t,r,i),i}function c(e,t){return function(r,n){t(r,n,e)}}function p(e,t,r,n,a,o){function i(e){if(void 0!==e&&"function"!=typeof e)throw TypeError("Function expected");return e}for(var s,l=n.kind,u="getter"===l?"get":"setter"===l?"set":"value",c=!t&&e?n.static?e:e.prototype:null,p=t||(c?Object.getOwnPropertyDescriptor(c,n.name):{}),d=!1,f=r.length-1;f>=0;f--){var h={};for(var m in n)h[m]="access"===m?{}:n[m];for(var m in n.access)h.access[m]=n.access[m];h.addInitializer=function(e){if(d)throw TypeError("Cannot add initializers after decoration has completed");o.push(i(e||null))};var y=(0,r[f])("accessor"===l?{get:p.get,set:p.set}:p[u],h);if("accessor"===l){if(void 0===y)continue;if(null===y||"object"!=typeof y)throw TypeError("Object expected");(s=i(y.get))&&(p.get=s),(s=i(y.set))&&(p.set=s),(s=i(y.init))&&a.unshift(s)}else(s=i(y))&&("field"===l?a.unshift(s):p[u]=s)}c&&Object.defineProperty(c,n.name,p),d=!0}function d(e,t,r){for(var n=arguments.length>2,a=0;a0&&a[a.length-1])&&(6===s[0]||2===s[0])){i=0;continue}if(3===s[0]&&(!a||s[1]>a[0]&&s[1]=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function x(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,a,o=r.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i}function k(){for(var e=[],t=0;t1||s(e,t)})})}function s(e,t){try{var r;(r=a[e](t)).value instanceof $?Promise.resolve(r.value.v).then(l,u):c(o[0][2],r)}catch(e){c(o[0][3],e)}}function l(e){s("next",e)}function u(e){s("throw",e)}function c(e,t){e(t),o.shift(),o.length&&s(o[0][0],o[0][1])}}function S(e){var t,r;return t={},n("next"),n("throw",function(e){throw e}),n("return"),t[Symbol.iterator]=function(){return this},t;function n(n,a){t[n]=e[n]?function(t){return(r=!r)?{value:$(e[n](t)),done:!1}:a?a(t):t}:a}}function D(e){if(!Symbol.asyncIterator)throw TypeError("Symbol.asyncIterator is not defined.");var t,r=e[Symbol.asyncIterator];return r?r.call(e):(e=b(e),t={},n("next"),n("throw"),n("return"),t[Symbol.asyncIterator]=function(){return this},t);function n(r){t[r]=e[r]&&function(t){return new Promise(function(n,a){!function(e,t,r,n){Promise.resolve(n).then(function(t){e({value:t,done:r})},t)}(n,a,(t=e[r](t)).done,t.value)})}}}function M(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e}var F=Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t};function P(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&v(t,e,r);return F(t,e),t}function E(e){return e&&e.__esModule?e:{default:e}}function T(e,t,r,n){if("a"===r&&!n)throw TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!n:!t.has(e))throw TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(e):n?n.value:t.get(e)}function A(e,t,r,n,a){if("m"===n)throw TypeError("Private method is not writable");if("a"===n&&!a)throw TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!a:!t.has(e))throw TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?a.call(e,r):a?a.value=r:t.set(e,r),r}function I(e,t){if(null===t||"object"!=typeof t&&"function"!=typeof t)throw TypeError("Cannot use 'in' operator on non-object");return"function"==typeof e?t===e:e.has(t)}function z(e,t,r){if(null!=t){var n;if("object"!=typeof t&&"function"!=typeof t)throw TypeError("Object expected.");if(r){if(!Symbol.asyncDispose)throw TypeError("Symbol.asyncDispose is not defined.");n=t[Symbol.asyncDispose]}if(void 0===n){if(!Symbol.dispose)throw TypeError("Symbol.dispose is not defined.");n=t[Symbol.dispose]}if("function"!=typeof n)throw TypeError("Object not disposable.");e.stack.push({value:t,dispose:n,async:r})}else r&&e.stack.push({async:!0});return t}var C="function"==typeof SuppressedError?SuppressedError:function(e,t,r){var n=Error(r);return n.name="SuppressedError",n.error=e,n.suppressed=t,n};function L(e){function t(t){e.error=e.hasError?new C(t,e.error,"An error was suppressed during disposal."):t,e.hasError=!0}return function r(){for(;e.stack.length;){var n=e.stack.pop();try{var a=n.dispose&&n.dispose.call(n.value);if(n.async)return Promise.resolve(a).then(r,function(e){return t(e),r()})}catch(e){t(e)}}if(e.hasError)throw e.error}()}r.default={__extends:i,__assign:s,__rest:l,__decorate:u,__param:c,__metadata:m,__awaiter:y,__generator:g,__createBinding:v,__exportStar:_,__values:b,__read:x,__spread:k,__spreadArrays:w,__spreadArray:j,__await:$,__asyncGenerator:O,__asyncDelegator:S,__asyncValues:D,__makeTemplateObject:M,__importStar:P,__importDefault:E,__classPrivateFieldGet:T,__classPrivateFieldSet:A,__classPrivateFieldIn:I,__addDisposableResource:z,__disposeResources:L}},{"@swc/helpers/_/_type_of":"felZi","@parcel/transformer-js/src/esmodule-helpers.js":"iWrD0"}],felZi:[function(e,t,r){var n=e("@parcel/transformer-js/src/esmodule-helpers.js");function a(e){return e&&"undefined"!=typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}n.defineInteropFlag(r),n.export(r,"_type_of",function(){return a}),n.export(r,"_",function(){return a})},{"@parcel/transformer-js/src/esmodule-helpers.js":"iWrD0"}],kMsXR:[function(e,t,r){var n=e("@parcel/transformer-js/src/esmodule-helpers.js");n.defineInteropFlag(r),n.export(r,"bilibiliDanmuParseFromUrl",function(){return u});var a=e("@swc/helpers/_/_async_to_generator"),o=e("@swc/helpers/_/_ts_generator");function i(e){switch(e){case 1:case 2:case 3:default:return 0;case 4:return 2;case 5:return 1}}function s(e){if("string"!=typeof e)return[];var t=new RegExp(RegExp('(?.+?)<\\/d>',"gs"));return Array.from(e.matchAll(t)).map(function(e){var t=e.groups.p.split(",");return t.length>=8?{text:e.groups.text.trim().replaceAll(""",'"').replaceAll("'","'").replaceAll("<","<").replaceAll(">",">").replaceAll("&","&"),time:Number(t[0]),mode:i(Number(t[1])),fontSize:Number(t[2]),color:"#".concat(Number(t[3]).toString(16)),timestamp:Number(t[4]),pool:Number(t[5]),userID:t[6],rowID:Number(t[7])}:null}).filter(Boolean)}function l(e){var t=e.data,r=t.xml,n=t.id;if(n&&r){var a=s(r);self.postMessage({danmus:a,id:n})}}function u(e){var t;return new Promise((t=(0,a._)(function(t){var r,n,a;return(0,o._)(this,function(o){switch(o.label){case 0:return r=Date.now(),[4,fetch(e)];case 1:return[4,o.sent().text()];case 2:n=o.sent();try{var u;u=new Blob(["\n ".concat(i.toString(),"\n ").concat(s.toString(),"\n onmessage = ").concat(l.toString(),"\n ")],{type:"application/javascript"}),(a=new Worker(URL.createObjectURL(u))).onmessage=function(e){var n=e.data,o=n.danmus;n.id&&o&&(t(o),a.terminate(),console.log("Worker parse xml",Date.now()-r))},a.postMessage({xml:n,id:Date.now()})}catch(e){t(s(n)),console.log("Main parse xml",Date.now()-r)}return[2]}})}),function(e){return t.apply(this,arguments)}))}},{"@swc/helpers/_/_async_to_generator":"eONSn","@swc/helpers/_/_ts_generator":"6Xyd0","@parcel/transformer-js/src/esmodule-helpers.js":"iWrD0"}],"1gMd5":[function(e,t,r){t.exports='!function(e,r,t,n,o){var a="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},i="function"==typeof a[n]&&a[n],s=i.cache||{},u="undefined"!=typeof module&&"function"==typeof module.require&&module.require.bind(module);function l(r,t){if(!s[r]){if(!e[r]){var o="function"==typeof a[n]&&a[n];if(!t&&o)return o(r,!0);if(i)return i(r,!0);if(u&&"string"==typeof r)return u(r);var f=Error("Cannot find module \'"+r+"\'");throw f.code="MODULE_NOT_FOUND",f}c.resolve=function(t){var n=e[r][1][t];return null!=n?n:t},c.cache={};var p=s[r]=new l.Module(r);e[r][0].call(p.exports,c,p,p.exports,this)}return s[r].exports;function c(e){var r=c.resolve(e);return!1===r?{}:l(r)}}l.isParcelRequire=!0,l.Module=function(e){this.id=e,this.bundle=l,this.exports={}},l.modules=e,l.cache=s,l.parent=i,l.register=function(r,t){e[r]=[function(e,r){r.exports=t},{}]},Object.defineProperty(l,"root",{get:function(){return a[n]}}),a[n]=l;for(var f=0;f=0;p-=1){var c=f[p],_=f[p+1],d=c.top+c.height;if(_.top-d>=r.height)return _.top-r.height}else for(var h=1;h=r.height)return g}for(var j=[],b=1;be.time)})});return w&&w[0]?w[0].top:void 0;case 1:case 2:return}else{switch(r.mode){case 0:j.sort(function(e,r){var t,o,a=(t=Math).min.apply(t,(0,n._)(r.map(function(e){return e.right}))),i=(o=Math).min.apply(o,(0,n._)(e.map(function(e){return e.right})));return a*r.length-i*e.length});break;case 1:case 2:j.sort(function(e,r){var t,o,a=(t=Math).max.apply(t,(0,n._)(r.map(function(e){return e.width})));return(o=Math).max.apply(o,(0,n._)(e.map(function(e){return e.width})))*e.length-a*r.length})}return j[0][0].top}}(r);self.postMessage({top:t,id:r.id})}}},{"@swc/helpers/_/_to_consumable_array":"iwLF0"}],iwLF0:[function(e,r,t){var n=e("@parcel/transformer-js/src/esmodule-helpers.js");n.defineInteropFlag(t),n.export(t,"_to_consumable_array",function(){return u}),n.export(t,"_",function(){return u});var o=e("./_array_without_holes.js"),a=e("./_iterable_to_array.js"),i=e("./_non_iterable_spread.js"),s=e("./_unsupported_iterable_to_array.js");function u(e){return(0,o._array_without_holes)(e)||(0,a._iterable_to_array)(e)||(0,s._unsupported_iterable_to_array)(e)||(0,i._non_iterable_spread)()}},{"./_array_without_holes.js":"cuL6A","./_iterable_to_array.js":"2thrs","./_non_iterable_spread.js":"a8nO2","./_unsupported_iterable_to_array.js":"5m31D","@parcel/transformer-js/src/esmodule-helpers.js":"iWrD0"}],cuL6A:[function(e,r,t){var n=e("@parcel/transformer-js/src/esmodule-helpers.js");n.defineInteropFlag(t),n.export(t,"_array_without_holes",function(){return a}),n.export(t,"_",function(){return a});var o=e("./_array_like_to_array.js");function a(e){if(Array.isArray(e))return(0,o._array_like_to_array)(e)}},{"./_array_like_to_array.js":"djwRR","@parcel/transformer-js/src/esmodule-helpers.js":"iWrD0"}],djwRR:[function(e,r,t){var n=e("@parcel/transformer-js/src/esmodule-helpers.js");function o(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=Array(r);t\n '.concat(h.default).concat(y.default,'\n\n
\n ').concat(v.default,'\n
\n
\n
\n 按类型屏蔽\n
\n
\n ').concat(k.default).concat(j.default,'\n
滚动
\n
\n
\n ').concat(O.default).concat(D.default,'\n
顶部
\n
\n
\n ').concat(F.default).concat(E.default,'\n
底部
\n
\n
\n
\n
\n
\n ').concat(A.default).concat(z.default,'\n 防止弹幕重叠\n
\n
\n ').concat(A.default).concat(z.default,'\n 同步视频速度\n
\n
\n
\n 不透明度\n
\n
未知
\n
\n
\n 显示区域\n
\n
未知
\n
\n
\n 弹幕字号\n
\n
未知
\n
\n
\n 弹幕速度\n
\n
未知
\n
\n
\n
\n
\n
\n
\n ').concat(b.default,'\n
\n
\n
\n 模式\n
\n
\n ').concat(j.default,'\n
滚动
\n
\n
\n ').concat(D.default,'\n
顶部
\n
\n
\n ').concat(E.default,'\n
底部
\n
\n
\n
\n
\n 颜色\n
\n ').concat(this.COLOR.map(function(e){return'
')}).join(""),'\n
\n
\n
\n
\n
\n\n
发送
\n
\n ')}},{key:"OPACITY",get:function(){return(0,s._)({min:0,max:100,steps:[]},this.option.OPACITY)}},{key:"FONT_SIZE",get:function(){return(0,s._)({min:12,max:120,steps:[]},this.option.FONT_SIZE)}},{key:"MARGIN",get:function(){return(0,s._)({min:0,max:3,steps:[{name:"1/4",value:[10,"75%"]},{name:"半屏",value:[10,"50%"]},{name:"3/4",value:[10,"25%"]},{name:"满屏",value:[10,10]}]},this.option.MARGIN)}},{key:"SPEED",get:function(){return(0,s._)({min:0,max:4,steps:[{name:"极慢",value:10},{name:"较慢",value:7.5,hide:!0},{name:"适中",value:5},{name:"较快",value:2.5,hide:!0},{name:"极快",value:1}]},this.option.SPEED)}},{key:"COLOR",get:function(){return this.option.COLOR.length?this.option.COLOR:["#FE0302","#FF7204","#FFAA02","#FFD302","#FFFF00","#A0EE00","#00CD00","#019899","#4266BE","#89D5FF","#CC0273","#222222","#9B9B9B","#FFFFFF"]}},{key:"query",value:function(e){return(0,this.utils.query)(e,this.template.$danmuku)}},{key:"setData",value:function(e,t){var r=this.art.template.$player,n=this.template.$mount;r.dataset[e]=t,this.outside&&(n.dataset[e]=t)}},{key:"createTemplate",value:function(){var e=this.utils,t=e.createElement,r=e.tooltip,n=t("div");n.className="artplayer-plugin-danmuku",n.innerHTML=this.TEMPLATE,this.template.$danmuku=n,this.template.$toggle=this.query(".apd-toggle"),this.template.$configModes=this.query(".apd-config-mode .apd-modes"),this.template.$styleModes=this.query(".apd-style-mode .apd-modes"),this.template.$colors=this.query(".apd-colors"),this.template.$antiOverlap=this.query(".apd-anti-overlap"),this.template.$syncVideo=this.query(".apd-sync-video"),this.template.$opacitySlider=this.query(".apd-config-opacity .apd-slider"),this.template.$opacityValue=this.query(".apd-config-opacity .apd-value"),this.template.$marginSlider=this.query(".apd-config-margin .apd-slider"),this.template.$marginValue=this.query(".apd-config-margin .apd-value"),this.template.$fontSizeSlider=this.query(".apd-config-fontSize .apd-slider"),this.template.$fontSizeValue=this.query(".apd-config-fontSize .apd-value"),this.template.$speedSlider=this.query(".apd-config-speed .apd-slider"),this.template.$speedValue=this.query(".apd-config-speed .apd-value"),this.template.$input=this.query(".apd-input"),this.template.$send=this.query(".apd-send");var a=this.template.$toggle;this.art.on("artplayerPluginDanmuku:show",function(){r(a,"关闭弹幕")}),this.art.on("artplayerPluginDanmuku:hide",function(){r(a,"打开弹幕")})}},{key:"createEvents",value:function(){var e=this,t=this.template,r=t.$toggle,n=t.$configModes,a=t.$styleModes,o=t.$colors,i=t.$antiOverlap,s=t.$syncVideo,l=t.$send,c=t.$input;this.art.proxy(r,"click",function(){e.danmuku.config({visible:!e.option.visible}),e.reset()}),this.art.proxy(n,"click",function(t){var r=t.target.closest(".apd-mode");if(r){var n=Number(r.dataset.mode);e.option.modes.includes(n)?e.danmuku.config({modes:e.option.modes.filter(function(e){return e!==n})}):e.danmuku.config({modes:(0,u._)(e.option.modes).concat([n])}),e.reset()}}),this.art.proxy(i,"click",function(){e.danmuku.config({antiOverlap:!e.option.antiOverlap}),e.reset()}),this.art.proxy(s,"click",function(){e.danmuku.config({synchronousPlayback:!e.option.synchronousPlayback}),e.reset()}),this.art.proxy(a,"click",function(t){var r=t.target.closest(".apd-mode");if(r){var n=Number(r.dataset.mode);e.danmuku.config({mode:n}),e.reset()}}),this.art.proxy(o,"click",function(t){var r=t.target.closest(".apd-color");r&&(e.danmuku.config({color:r.dataset.color}),e.reset())}),this.art.proxy(l,"click",function(){return e.emit()}),this.art.proxy(c,"keypress",function(t){"Enter"===t.key&&(t.preventDefault(),e.emit())})}},{key:"createSliders",value:function(){var e=this;this.slider.opacity=this.createSlider((0,l._)((0,s._)({},this.OPACITY),{container:this.template.$opacitySlider,findIndex:function(){return Math.round(100*e.option.opacity)},onChange:function(t){e.template.$opacityValue.textContent="".concat(t,"%"),e.danmuku.config({opacity:t/100})}})),this.slider.margin=this.createSlider((0,l._)((0,s._)({},this.MARGIN),{container:this.template.$marginSlider,findIndex:function(){return e.MARGIN.steps.findIndex(function(t){return t.value[0]===e.option.margin[0]&&t.value[1]===e.option.margin[1]})},onChange:function(t){var r=e.MARGIN.steps[t];r&&(e.template.$marginValue.textContent=r.name,e.danmuku.config({margin:r.value}))}})),this.slider.fontSize=this.createSlider((0,l._)((0,s._)({},this.FONT_SIZE),{container:this.template.$fontSizeSlider,findIndex:function(){return Math.round(e.danmuku.fontSize)},onChange:function(t){e.template.$fontSizeValue.textContent="".concat(t,"px"),e.danmuku.config({fontSize:t})}})),this.slider.speed=this.createSlider((0,l._)((0,s._)({},this.SPEED),{container:this.template.$speedSlider,findIndex:function(){return e.SPEED.steps.findIndex(function(t){return t.value===e.option.speed})},onChange:function(t){var r=e.SPEED.steps[t];r&&(e.template.$speedValue.textContent=r.name,e.danmuku.config({speed:r.value}))}}))}},{key:"createSlider",value:function(e){var t=e.min,r=e.max,n=e.container,a=e.findIndex,o=e.onChange,i=e.steps,s=void 0===i?[]:i,l=this.utils,u=l.query,c=l.clamp;n.innerHTML='\n
\n
\n '.concat(s.map(function(){return'
'}).join(""),'\n
\n
\n
\n
\n
\n ').concat(s.map(function(e){return e.hide?"":'
'.concat(e.name,"
")}).join(""),"\n
\n ");var p=u(".apd-slider-dot",n),d=u(".apd-slider-progress",n),f=!1;function h(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:a();if(!(er)){var n=(e-t)/(r-t);p.style.left="".concat(100*n,"%"),0===s.length&&(d.style.width=p.style.left),o(e)}}function m(e){var a=n.getBoundingClientRect(),o=a.left,i=a.width;h(Math.round(c(e.clientX-o,0,i)/i*(r-t)+t))}return this.art.proxy(n,"click",function(e){m(e)}),this.art.proxy(n,"mousedown",function(e){f=0===e.button}),this.art.on("document:mousemove",function(e){f&&m(e)}),this.art.on("document:mouseup",function(e){f&&(f=!1,m(e))}),{reset:h}}},{key:"onFullscreen",value:function(e){if(this.outside){var t=this.template,r=t.$danmuku,n=t.$controlsCenter,a=t.$mount;e?n.appendChild(r):a.appendChild(r)}}},{key:"emit",value:function(){var e=this;return(0,a._)(function(){var t,r,n,a;return(0,c._)(this,function(o){switch(o.label){case 0:if(!(r=(t=e.template.$input).value.trim()).length||e.isLock||e.emitting)return[2];n={text:r,mode:e.option.mode,color:e.option.color,time:e.art.currentTime},o.label=1;case 1:return o.trys.push([1,3,,4]),e.emitting=!0,[4,e.option.beforeEmit(n)];case 2:if(a=o.sent(),e.emitting=!1,!0!==a)return[2];return n.border=!0,delete n.time,e.danmuku.emit(n),t.value="",e.lock(),[3,4];case 3:return o.sent(),e.emitting=!1,[3,4];case 4:return[2]}})})()}},{key:"lock",value:function(){var e=this,t=this.utils.addClass,r=this.template.$send;this.isLock=!0;var n=this.option.lockTime;r.innerText=n,t(r,"apd-lock");var a=function(){e.timer=setTimeout(function(){0===n?e.unlock():(n-=1,r.innerText=n,a())},1e3)};a()}},{key:"unlock",value:function(){var e=this.utils.removeClass,t=this.template.$send;clearTimeout(this.timer),this.isLock=!1,t.innerText="发送",e(t,"apd-lock")}},{key:"reset",value:function(){var e=this,t=this.utils,r=t.inverseClass,n=t.tooltip,a=this.template,o=a.$toggle,i=a.$colors;this.slider.opacity.reset(),this.slider.margin.reset(),this.slider.fontSize.reset(),this.slider.speed.reset(),this.setData("danmukuVisible",this.option.visible),this.setData("danmukuMode",this.option.mode),this.setData("danmukuColor",this.option.color),this.setData("danmukuMode0",this.option.modes.includes(0)),this.setData("danmukuMode1",this.option.modes.includes(1)),this.setData("danmukuMode2",this.option.modes.includes(2)),this.setData("danmukuAntiOverlap",this.option.antiOverlap),this.setData("danmukuSyncVideo",this.option.synchronousPlayback),this.setData("danmukuTheme",this.option.theme),this.setData("danmukuEmitter",this.option.emitter);var s=Array.from(i.children).find(function(t){return t.dataset.color===e.option.color.toUpperCase()});s&&r(s,"apd-active"),n(o,this.option.visible?"关闭弹幕":"打开弹幕")}},{key:"mount",value:function(e){var t="string"==typeof e?document.querySelector(e):e;t.appendChild(this.template.$danmuku),this.template.$mount=t,this.reset()}}],[{key:"icons",get:function(){return{$on:h.default,$off:y.default,$config:v.default,$style:b.default,$mode_0_off:k.default,$mode_0_on:j.default,$mode_1_off:O.default,$mode_1_on:D.default,$mode_2_off:F.default,$mode_2_on:E.default,$check_on:A.default,$check_off:z.default}}}]),e}();if("undefined"!=typeof document){var L="artplayer-plugin-danmuku",R=document.getElementById(L);if(R)R.textContent=d.default;else{var H=document.createElement("style");H.id=L,H.textContent=d.default,document.head.appendChild(H)}}},{"@swc/helpers/_/_async_to_generator":"eONSn","@swc/helpers/_/_class_call_check":"9iJMm","@swc/helpers/_/_create_class":"21IOT","@swc/helpers/_/_object_spread":"9agdF","@swc/helpers/_/_object_spread_props":"gJNH2","@swc/helpers/_/_to_consumable_array":"iwLF0","@swc/helpers/_/_ts_generator":"6Xyd0","bundle-text:./style.less":"i8wAr","bundle-text:./img/on.svg":"4mwSI","bundle-text:./img/off.svg":"9bQDs","bundle-text:./img/config.svg":"cciuY","bundle-text:./img/style.svg":"e5G6o","bundle-text:./img/mode_0_off.svg":"fC4yA","bundle-text:./img/mode_0_on.svg":"fUkVg","bundle-text:./img/mode_1_off.svg":"isoJm","bundle-text:./img/mode_1_on.svg":"20nBM","bundle-text:./img/mode_2_off.svg":"6x9CL","bundle-text:./img/mode_2_on.svg":"7GKdL","bundle-text:./img/check_on.svg":"9SCIh","bundle-text:./img/check_off.svg":"6KRxn","@parcel/transformer-js/src/esmodule-helpers.js":"iWrD0"}],iwLF0:[function(e,t,r){var n=e("@parcel/transformer-js/src/esmodule-helpers.js");n.defineInteropFlag(r),n.export(r,"_to_consumable_array",function(){return l}),n.export(r,"_",function(){return l});var a=e("./_array_without_holes.js"),o=e("./_iterable_to_array.js"),i=e("./_non_iterable_spread.js"),s=e("./_unsupported_iterable_to_array.js");function l(e){return(0,a._array_without_holes)(e)||(0,o._iterable_to_array)(e)||(0,s._unsupported_iterable_to_array)(e)||(0,i._non_iterable_spread)()}},{"./_array_without_holes.js":"cuL6A","./_iterable_to_array.js":"2thrs","./_non_iterable_spread.js":"a8nO2","./_unsupported_iterable_to_array.js":"5m31D","@parcel/transformer-js/src/esmodule-helpers.js":"iWrD0"}],cuL6A:[function(e,t,r){var n=e("@parcel/transformer-js/src/esmodule-helpers.js");n.defineInteropFlag(r),n.export(r,"_array_without_holes",function(){return o}),n.export(r,"_",function(){return o});var a=e("./_array_like_to_array.js");function o(e){if(Array.isArray(e))return(0,a._array_like_to_array)(e)}},{"./_array_like_to_array.js":"djwRR","@parcel/transformer-js/src/esmodule-helpers.js":"iWrD0"}],djwRR:[function(e,t,r){var n=e("@parcel/transformer-js/src/esmodule-helpers.js");function a(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r.artplayer-plugin-danmuku .apd-icon{fill:#333}[data-danmuku-theme=light]>.artplayer-plugin-danmuku .apd-emitter{background-color:#f1f2f3}[data-danmuku-theme=light]>.artplayer-plugin-danmuku .apd-input{color:#000}[data-danmuku-theme=light]>.artplayer-plugin-danmuku .apd-input::placeholder{color:rgba(0,0,0,.3)}[data-danmuku-theme=light]>.artplayer-plugin-danmuku .apd-input::placeholder{color:rgba(0,0,0,.3)}[data-danmuku-visible=false] .apd-toggle-off{display:block}[data-danmuku-visible=false] .apd-toggle-on,[data-danmuku-visible=true] .apd-toggle-off{display:none}[data-danmuku-visible=true] .apd-toggle-on{display:block}[data-danmuku-anti-overlap=false] .apd-anti-overlap .apd-check-on{display:none}[data-danmuku-anti-overlap=false] .apd-anti-overlap .apd-check-off,[data-danmuku-anti-overlap=true] .apd-anti-overlap .apd-check-on{display:block}[data-danmuku-anti-overlap=true] .apd-anti-overlap .apd-check-off,[data-danmuku-sync-video=false] .apd-sync-video .apd-check-on{display:none}[data-danmuku-sync-video=false] .apd-sync-video .apd-check-off,[data-danmuku-sync-video=true] .apd-sync-video .apd-check-on{display:block}[data-danmuku-sync-video=true] .apd-sync-video .apd-check-off{display:none}[data-danmuku-mode0=false] .apd-config-mode .apd-mode-0-off{display:block}[data-danmuku-mode0=false] .apd-config-mode .apd-mode-0-on{display:none}[data-danmuku-mode0=false] .art-danmuku [data-mode="0"]{opacity:0!important}[data-danmuku-mode0=true] .apd-config-mode .apd-mode-0-off{display:none}[data-danmuku-mode0=true] .apd-config-mode .apd-mode-0-on{display:block}[data-danmuku-mode="0"] .apd-style-mode [data-mode="0"]{color:#00a1d6}[data-danmuku-mode="0"] .apd-style-mode [data-mode="0"] path{fill:#00a1d6}[data-danmuku-mode1=false] .apd-config-mode .apd-mode-1-off{display:block}[data-danmuku-mode1=false] .apd-config-mode .apd-mode-1-on{display:none}[data-danmuku-mode1=false] .art-danmuku [data-mode="1"]{opacity:0!important}[data-danmuku-mode1=true] .apd-config-mode .apd-mode-1-off{display:none}[data-danmuku-mode1=true] .apd-config-mode .apd-mode-1-on{display:block}[data-danmuku-mode="1"] .apd-style-mode [data-mode="1"]{color:#00a1d6}[data-danmuku-mode="1"] .apd-style-mode [data-mode="1"] path{fill:#00a1d6}[data-danmuku-mode2=false] .apd-config-mode .apd-mode-2-off{display:block}[data-danmuku-mode2=false] .apd-config-mode .apd-mode-2-on{display:none}[data-danmuku-mode2=false] .art-danmuku [data-mode="2"]{opacity:0!important}[data-danmuku-mode2=true] .apd-config-mode .apd-mode-2-off{display:none}[data-danmuku-mode2=true] .apd-config-mode .apd-mode-2-on{display:block}[data-danmuku-mode="2"] .apd-style-mode [data-mode="2"]{color:#00a1d6}[data-danmuku-mode="2"] .apd-style-mode [data-mode="2"] path{fill:#00a1d6}'},{}],"4mwSI":[function(e,t,r){t.exports=''},{}],"9bQDs":[function(e,t,r){t.exports=''},{}],cciuY:[function(e,t,r){t.exports=''},{}],e5G6o:[function(e,t,r){t.exports=''},{}],fC4yA:[function(e,t,r){t.exports=''},{}],fUkVg:[function(e,t,r){t.exports=''},{}],isoJm:[function(e,t,r){t.exports=''},{}],"20nBM":[function(e,t,r){t.exports=''},{}],"6x9CL":[function(e,t,r){t.exports=''},{}],"7GKdL":[function(e,t,r){t.exports=''},{}],"9SCIh":[function(e,t,r){t.exports=''},{}],"6KRxn":[function(e,t,r){t.exports=''},{}],dXFn2:[function(e,t,r){var n=e("@parcel/transformer-js/src/esmodule-helpers.js");n.defineInteropFlag(r),n.export(r,"default",function(){return s});var a=e("@swc/helpers/_/_to_consumable_array"),o={map:function(e,t,r,n,a){return(e-t)*(a-n)/(r-t)+n}},i=function(e,t){var r=t[0]-e[0],n=t[1]-e[1];return{length:Math.sqrt(Math.pow(r,2)+Math.pow(n,2)),angle:Math.atan2(n,r)}};function s(e,t,r){var n=e.constructor.utils.query;e.controls.add({name:"heatmap",position:"top",html:"",style:{position:"absolute",top:"-100px",left:"0px",right:"0px",height:"100px",width:"100%",pointerEvents:"none"},mounted:function(s){var l=null,u=null;function c(){var c,p,d=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(l=null,u=null,s.innerHTML="",e.duration&&!e.option.isLive){var f={w:s.offsetWidth,h:s.offsetHeight},h={xMin:0,xMax:f.w,yMin:0,yMax:128,scale:.25,opacity:.2,minHeight:Math.floor(.05*f.h),sampling:Math.floor(f.w/100),smoothing:.2,flattening:.2};"object"==typeof r&&Object.assign(h,r);var m=[];if(Array.isArray(d)&&d.length)m=(0,a._)(d);else for(var y=function(e){var r=t.danmus.filter(function(t){var r=t.time;return r>e*g&&r<=(e+h.sampling)*g}).length;m.push([e,r])},g=e.duration/f.w,v=0;v<=f.w;v+=h.sampling)y(v);if(0!==m.length){var _=m[m.length-1],b=_[0],x=_[1];b!==f.w&&m.push([f.w,x]);for(var k=m.map(function(e){return e[1]}),w=((c=Math).min.apply(c,(0,a._)(k))+(p=Math).max.apply(p,(0,a._)(k)))/2,j=0;jw?1+h.scale:1-h.scale)+h.minHeight}var S=function(e,t,r,n){var a=i(t||e,r||e),s=o.map(Math.cos(a.angle)*h.flattening,0,1,1,0),l=a.angle*s+(n?Math.PI:0),u=a.length*h.smoothing;return[e[0]+Math.cos(l)*u,e[1]+Math.sin(l)*u]},D=function(e,t,r){var n=S(r[t-1],r[t-2],e),a=S(e,r[t-1],r[t+1],!0),o=t===r.length-1?" z":"";return"C ".concat(n[0],",").concat(n[1]," ").concat(a[0],",").concat(a[1]," ").concat(e[0],",").concat(e[1]).concat(o)},M=m.map(function(e){return[o.map(e[0],h.xMin,h.xMax,0,f.w),o.map(e[1],h.yMin,h.yMax,f.h,0)]}).reduce(function(e,t,r,n){return 0===r?"M ".concat(n[n.length-1][0],",").concat(f.h," L ").concat(t[0],",").concat(f.h," L ").concat(t[0],",").concat(t[1]):"".concat(e," ").concat(D(t,r,n))},"");s.innerHTML='\n\n\n\n\n\n\n\n\n\n\n\n '),l=n("#heatmap-start",s),u=n("#heatmap-stop",s),l.setAttribute("offset","".concat(100*e.played,"%")),u.setAttribute("offset","".concat(100*e.played,"%"))}}}e.on("video:timeupdate",function(){l&&u&&(l.setAttribute("offset","".concat(100*e.played,"%")),u.setAttribute("offset","".concat(100*e.played,"%")))}),e.on("setBar",function(e,t){l&&u&&"played"===e&&(l.setAttribute("offset","".concat(100*t,"%")),u.setAttribute("offset","".concat(100*t,"%")))}),e.on("ready",function(){return c()}),e.on("resize",function(){return c()}),e.on("artplayerPluginDanmuku:loaded",function(){return c()}),e.on("artplayerPluginDanmuku:points",function(e){return c(e)})}})}},{"@swc/helpers/_/_to_consumable_array":"iwLF0","@parcel/transformer-js/src/esmodule-helpers.js":"iWrD0"}]},["40mNk"],"40mNk","parcelRequire4dc0"); \ No newline at end of file diff --git a/docs/uncompiled/artplayer-plugin-danmuku/index.js b/docs/uncompiled/artplayer-plugin-danmuku/index.js index 49e2e2fc8..000d8e33f 100644 --- a/docs/uncompiled/artplayer-plugin-danmuku/index.js +++ b/docs/uncompiled/artplayer-plugin-danmuku/index.js @@ -760,26 +760,25 @@ exports.default = Danmuku; },{"./bilibili":"95SuC","bundle-text:./worker":"el0Wt","@parcel/transformer-js/src/esmodule-helpers.js":"5dUr6"}],"95SuC":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); -parcelHelpers.export(exports, "getMode", ()=>getMode); -parcelHelpers.export(exports, "bilibiliDanmuParseFromXml", ()=>bilibiliDanmuParseFromXml); parcelHelpers.export(exports, "bilibiliDanmuParseFromUrl", ()=>bilibiliDanmuParseFromUrl); function getMode(key) { switch(key){ case 1: case 2: case 3: - return 0; // 滚动 + return 0; case 4: - return 2; // 底部 + return 2; case 5: - return 1; // 顶部 + return 1; default: return 0; } } function bilibiliDanmuParseFromXml(xmlString) { if (typeof xmlString !== "string") return []; - const matches = xmlString.matchAll(/(?.+?)<\/d>/gs); + const reg = new RegExp(/(?.+?)<\/d>/gs); + const matches = xmlString.matchAll(reg); return Array.from(matches).map((match)=>{ const attr = match.groups.p.split(","); if (attr.length >= 8) { @@ -798,10 +797,49 @@ function bilibiliDanmuParseFromXml(xmlString) { } else return null; }).filter(Boolean); } -async function bilibiliDanmuParseFromUrl(url) { - const res = await fetch(url); - const xmlString = await res.text(); - return bilibiliDanmuParseFromXml(xmlString); +function onmessage({ data }) { + const { xml, id } = data; + if (!id || !xml) return; + const danmus = bilibiliDanmuParseFromXml(xml); + self.postMessage({ + danmus, + id + }); +} +function createWorker() { + const workerText = ` + ${getMode.toString()} + ${bilibiliDanmuParseFromXml.toString()} + onmessage = ${onmessage.toString()} + `; + const blob = new Blob([ + workerText + ], { + type: "application/javascript" + }); + return new Worker(URL.createObjectURL(blob)); +} +function bilibiliDanmuParseFromUrl(url) { + return new Promise(async (resolve)=>{ + const res = await fetch(url); + const xml = await res.text(); + try { + const worker = createWorker(); + worker.onmessage = (event)=>{ + const { danmus, id } = event.data; + if (!id || !danmus) return; + resolve(danmus); + worker.terminate(); + }; + worker.postMessage({ + xml, + id: Date.now() + }); + } catch (error) { + const danmus = bilibiliDanmuParseFromXml(xml); + resolve(danmus); + } + }); } },{"@parcel/transformer-js/src/esmodule-helpers.js":"5dUr6"}],"5dUr6":[function(require,module,exports) { diff --git a/docs/uncompiled/artplayer-plugin-danmuku/index.js.map b/docs/uncompiled/artplayer-plugin-danmuku/index.js.map index f6d21140c..e7f819e8c 100644 --- a/docs/uncompiled/artplayer-plugin-danmuku/index.js.map +++ b/docs/uncompiled/artplayer-plugin-danmuku/index.js.map @@ -1 +1 @@ -{"mappings":"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","sources":["packages/artplayer-plugin-danmuku/src/index.js","packages/artplayer-plugin-danmuku/src/danmuku.js","packages/artplayer-plugin-danmuku/src/bilibili.js","node_modules/@parcel/transformer-js/src/esmodule-helpers.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-54089e51cb2f5cb0.js","packages/artplayer-plugin-danmuku/src/setting.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-e633bd0642c0f6d8.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-04a4ccdcbe82b9fc.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-6d3492096472ebee.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-4366f15bf5589225.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-3a33dc2ac5713237.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-7405474972f49ad1.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-0c32b0aed97d3724.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-bfb87ad7bdac92c0.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-90cca85b3e6e9028.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-44a2c233ef45411a.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-7d429a40e7f4f4ac.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-081fb7f7de945ff8.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-61cba682068f8950.js","packages/artplayer-plugin-danmuku/src/heatmap.js"],"sourcesContent":["import Danmuku from './danmuku';\nimport Setting from './setting';\nimport heatmap from './heatmap';\n\nexport default function artplayerPluginDanmuku(option) {\n return (art) => {\n const danmuku = new Danmuku(art, option);\n const setting = new Setting(art, danmuku);\n\n if (danmuku.option.heatmap) {\n heatmap(art, danmuku, danmuku.option.heatmap);\n }\n\n return {\n name: 'artplayerPluginDanmuku',\n emit: danmuku.emit.bind(danmuku),\n load: danmuku.load.bind(danmuku),\n config: danmuku.config.bind(danmuku),\n hide: danmuku.hide.bind(danmuku),\n show: danmuku.show.bind(danmuku),\n reset: danmuku.reset.bind(danmuku),\n mount: setting.mount.bind(setting),\n get option() {\n return danmuku.option;\n },\n get isHide() {\n return danmuku.isHide;\n },\n get isStop() {\n return danmuku.isStop;\n },\n };\n };\n}\n\nartplayerPluginDanmuku.icons = Setting.icons;\n\nif (typeof window !== 'undefined') {\n window['artplayerPluginDanmuku'] = artplayerPluginDanmuku;\n}\n","import { bilibiliDanmuParseFromUrl } from './bilibili';\nimport workerText from 'bundle-text:./worker';\n\nexport default class Danmuku {\n constructor(art, option) {\n const { constructor, template } = art;\n\n this.utils = constructor.utils; // 工具库\n this.validator = constructor.validator; // 配置校验器\n this.$danmuku = template.$danmuku; // 弹幕层容器\n this.$player = template.$player; // 播放器容器\n\n this.art = art;\n this.danmus = []; // 原始弹幕数据\n this.queue = []; // 实际弹幕队列\n this.$refs = []; // 弹幕DOM节点池\n this.isStop = false; // 是否停止\n this.isHide = false; // 是否隐藏\n this.timer = null; // 定时器\n this.index = 0; // 弹幕索引\n\n // 格式化后的配置项\n this.option = Danmuku.option;\n\n // 弹幕状态池\n this.states = {\n wait: [],\n ready: [],\n emit: [],\n stop: [],\n };\n\n // 初始化配置\n this.config(option);\n\n // 创建 Web Worker, 用于计算弹幕的 top 值\n this.worker = new Worker(URL.createObjectURL(new Blob([workerText])));\n\n // 绑定公用事件\n this.start = this.start.bind(this);\n this.stop = this.stop.bind(this);\n this.reset = this.reset.bind(this);\n this.resize = this.resize.bind(this);\n this.destroy = this.destroy.bind(this);\n\n // 监听事件\n art.on('video:play', this.start);\n art.on('video:playing', this.start);\n art.on('video:pause', this.stop);\n art.on('video:waiting', this.stop);\n art.on('destroy', this.destroy);\n art.on('resize', this.resize);\n\n // 开始加载弹幕\n this.load();\n }\n\n // 默认配置\n static get option() {\n return {\n danmuku: [], // 弹幕数据\n speed: 5, // 弹幕持续时间,范围在[1 ~ 10]\n margin: [10, '25%'], // 弹幕上下边距,支持像素数字和百分比\n opacity: 1, // 弹幕透明度,范围在[0 ~ 1]\n color: '#FFFFFF', // 默认弹幕颜色,可以被单独弹幕项覆盖\n mode: 0, // 默认弹幕模式: 0: 滚动,1: 顶部,2: 底部\n modes: [0, 1, 2], // 弹幕可见的模式\n fontSize: 25, // 弹幕字体大小,支持像素数字和百分比\n antiOverlap: true, // 弹幕是否防重叠\n synchronousPlayback: false, // 是否同步播放速度\n mount: undefined, // 弹幕发射器挂载点, 默认为播放器控制栏中部\n heatmap: false, // 是否开启热力图\n points: [], // 热力图数据\n filter: () => true, // 弹幕载入前的过滤器,只支持返回布尔值\n beforeEmit: () => true, // 弹幕发送前的过滤器,支持返回 Promise\n beforeVisible: () => true, // 弹幕显示前的过滤器,支持返回 Promise\n visible: true, // 弹幕层是否可见\n emitter: true, // 是否开启弹幕发射器\n maxLength: 200, // 弹幕输入框最大长度, 范围在[1 ~ 1000]\n lockTime: 5, // 输入框锁定时间,范围在[1 ~ 60]\n theme: 'dark', // 弹幕主题,支持 dark 和 light,只在自定义挂载时生效\n OPACITY: {}, // 不透明度配置项\n FONT_SIZE: {}, // 弹幕字号配置项\n MARGIN: {}, // 显示区域配置项\n SPEED: {}, // 弹幕速度配置项\n COLOR: [], // 颜色列表配置项\n };\n }\n\n // 配置校验\n static get scheme() {\n return {\n danmuku: 'array|function|string',\n speed: 'number',\n margin: 'array',\n opacity: 'number',\n color: 'string',\n mode: 'number',\n modes: 'array',\n fontSize: 'number|string',\n antiOverlap: 'boolean',\n synchronousPlayback: 'boolean',\n mount: '?htmldivelement|string',\n heatmap: 'object|boolean',\n points: 'array',\n filter: 'function',\n beforeEmit: 'function',\n beforeVisible: 'function',\n visible: 'boolean',\n emitter: 'boolean',\n maxLength: 'number',\n lockTime: 'number',\n theme: 'string',\n OPACITY: 'object',\n FONT_SIZE: 'object',\n MARGIN: 'object',\n SPEED: 'object',\n COLOR: 'array',\n };\n }\n\n // 初始弹幕样式\n static get cssText() {\n return `\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-weight: normal;\n line-height: 1.125;\n visibility: hidden;\n font-family: SimHei, \"Microsoft JhengHei\", Arial, Helvetica, sans-serif;\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\n // 是否在移动端使用了自动旋屏,会影响弹幕的left和top值\n get isRotate() {\n return this.art.plugins?.autoOrientation?.state;\n }\n\n // 计算上空白边距\n get marginTop() {\n const { clamp } = this.utils;\n const value = this.option.margin[0];\n const { clientHeight } = this.$player;\n\n if (typeof value === 'number') {\n return clamp(value, 0, clientHeight);\n }\n\n if (typeof value === 'string' && value.endsWith('%')) {\n const ratio = parseFloat(value) / 100;\n return clamp(clientHeight * ratio, 0, clientHeight);\n }\n\n return Danmuku.option.margin[0];\n }\n\n // 计算下空白边距\n get marginBottom() {\n const { clamp } = this.utils;\n const value = this.option.margin[1];\n const { clientHeight } = this.$player;\n\n if (typeof value === 'number') {\n return clamp(value, 0, clientHeight);\n }\n\n if (typeof value === 'string' && value.endsWith('%')) {\n const ratio = parseFloat(value) / 100;\n return clamp(clientHeight * ratio, 0, clientHeight);\n }\n\n return Danmuku.option.margin[1];\n }\n\n // 计算弹幕字体大小\n get fontSize() {\n const { clamp } = this.utils;\n const { clientHeight } = this.$player;\n\n const fontSize = this.option.fontSize;\n\n if (typeof fontSize === 'number') {\n return clamp(fontSize, 12, clientHeight);\n }\n\n if (typeof fontSize === 'string' && fontSize.endsWith('%')) {\n const ratio = parseFloat(fontSize) / 100;\n return clamp(clientHeight * ratio, 12, clientHeight);\n }\n\n return Danmuku.option.fontSize;\n }\n\n // 获取弹幕DOM节点\n get $ref() {\n const $ref = this.$refs.pop() || document.createElement('div');\n $ref.style.cssText = Danmuku.cssText;\n $ref.dataset.mode = '';\n $ref.className = '';\n return $ref;\n }\n\n // 获取准备好发送的弹幕\n get readys() {\n const { currentTime } = this.art;\n\n const result = [];\n\n // 有的是ready状态:之前因为弹幕太多而暂停发送的弹幕\n this.filter('ready', (danmu) => result.push(danmu));\n\n // 有的是wait状态:符合时间范围的弹幕\n this.filter('wait', (danmu) => {\n if (currentTime + 0.1 >= danmu.time && danmu.time >= currentTime - 0.1) {\n result.push(danmu);\n }\n });\n\n return result;\n }\n\n // 可见的弹幕的数据,用于计算下一个弹幕的top值\n get visibles() {\n const result = [];\n const { clientWidth } = this.$player;\n const clientLeft = this.getLeft(this.$player);\n\n this.filter('emit', (danmu) => {\n const top = danmu.$ref.offsetTop;\n const left = this.getLeft(danmu.$ref) - clientLeft;\n const height = danmu.$ref.clientHeight;\n const width = danmu.$ref.clientWidth;\n const distance = left + width;\n const right = clientWidth - distance;\n const speed = distance / danmu.$restTime;\n\n const emit = {};\n emit.top = top;\n emit.left = left;\n emit.height = height;\n emit.width = width;\n emit.right = right;\n emit.speed = speed;\n emit.distance = distance;\n emit.time = danmu.$restTime;\n emit.mode = danmu.mode;\n\n result.push(emit);\n });\n\n return result;\n }\n\n get speed() {\n return this.option.synchronousPlayback && this.art.playbackRate\n ? this.option.speed / Number(this.art.playbackRate)\n : this.option.speed;\n }\n\n // 加载弹幕\n async load() {\n const { errorHandle } = this.utils;\n\n try {\n if (typeof this.option.danmuku === 'function') {\n this.danmus = await this.option.danmuku();\n } else if (typeof this.option.danmuku.then === 'function') {\n this.danmus = await this.option.danmuku;\n } else if (typeof this.option.danmuku === 'string') {\n this.danmus = await bilibiliDanmuParseFromUrl(this.option.danmuku);\n } else {\n this.danmus = this.option.danmuku;\n }\n\n errorHandle(Array.isArray(this.danmus), 'Danmuku need return an array as result');\n\n this.queue = []; // 清空实际弹幕队列\n this.$danmuku.innerText = ''; // 清空弹幕层\n this.danmus.forEach((danmu) => this.emit(danmu)); // 逐个验证原始弹幕并转换为实际弹幕\n this.art.emit('artplayerPluginDanmuku:loaded', this.queue);\n } catch (error) {\n this.art.emit('artplayerPluginDanmuku:error', error);\n throw error;\n }\n\n return this;\n }\n\n // 把原始弹幕转换为实际弹幕\n emit(danmu) {\n const { clamp } = this.utils;\n\n this.validator(danmu, {\n text: 'string', // 弹幕文本\n mode: '?number', // 弹幕模式: 0: 滚动,1: 顶部,2: 底部\n color: '?string', // 弹幕颜色\n time: '?number', // 弹幕时间\n border: '?boolean', // 弹幕是否有边框\n style: '?object', // 弹幕额外样式\n });\n\n // 弹幕文本为空则直接忽略\n if (!danmu.text.trim()) return this;\n\n // 设置弹幕时间,如果没有则默认为当前时间加 0.5 秒\n if (danmu.time) {\n danmu.time = clamp(danmu.time, 0, Infinity);\n } else {\n danmu.time = this.art.currentTime + 0.5;\n }\n\n // 设置弹幕模式,如果没有则默认为全局配置\n if (danmu.mode === undefined) {\n danmu.mode = this.option.mode;\n }\n\n // 设置弹幕单独样式,如果没有则默认为空对象\n if (danmu.style === undefined) {\n danmu.style = {};\n }\n\n // 设置弹幕颜色,如果没有则默认为全局配置\n if (danmu.color === undefined) {\n danmu.color = this.option.color;\n }\n\n // 弹幕模式只能是 0, 1, 2\n if (![0, 1, 2].includes(danmu.mode)) return this;\n\n // 自定义弹幕过滤函数\n if (!this.option.filter(danmu)) return this;\n\n // 添加自定义属性\n const item = {\n ...danmu,\n $state: 'wait', // 弹幕初始状态\n $id: this.index++, // 弹幕唯一标识\n $ref: null, // 弹幕 DOM 节点\n $restTime: 0, // 弹幕剩余时间\n $lastStartTime: 0, // 弹幕上次开始时间\n };\n\n // 转换为wait状态\n this.setState(item, 'wait');\n\n // 添加到实际弹幕队列\n this.queue.push(item);\n\n // 弹幕有四个状态:\n // - wait: 弹幕还未开始显示,没有被添加到 DOM 中\n // - ready: 弹幕准备好显示,没有被添加到 DOM 中\n // - emit: 弹幕正在显示,已经被添加到 DOM 中\n // - stop: 弹幕正在停止显示,已经被添加到 DOM 中\n\n return this;\n }\n\n // 动态配置\n config(option) {\n const { clamp } = this.utils;\n const { $controlsCenter } = this.art.template;\n\n // 判断配置项是否有变化\n const changed = Object.keys(option).some(\n (key) => JSON.stringify(this.option[key]) !== JSON.stringify(option[key]),\n );\n\n if (!changed) return this;\n\n this.option = Object.assign({}, Danmuku.option, this.option, option);\n this.validator(this.option, Danmuku.scheme);\n\n this.option.mode = clamp(this.option.mode, 0, 2);\n this.option.speed = clamp(this.option.speed, 1, 10);\n this.option.opacity = clamp(this.option.opacity, 0, 1);\n this.option.lockTime = clamp(this.option.lockTime, 1, 60);\n this.option.maxLength = clamp(this.option.maxLength, 1, 1000);\n this.option.mount = this.option.mount || $controlsCenter;\n\n // 重新计算弹幕字体大小,需要重新渲染\n if (option.fontSize) {\n this.reset();\n }\n\n // 通过配置项控制弹幕的显示和隐藏\n if (this.option.visible) {\n this.show();\n } else {\n this.hide();\n }\n\n this.art.emit('artplayerPluginDanmuku:config', this.option);\n\n return this;\n }\n\n // 计算DOM的left值,受到旋屏影响\n getLeft($ref) {\n const rect = $ref.getBoundingClientRect();\n return this.isRotate ? rect.top : rect.left;\n }\n\n // 计算弹幕的top值\n postMessage(message = {}) {\n return new Promise((resolve) => {\n message.id = Date.now();\n this.worker.postMessage(message);\n this.worker.onmessage = (event) => {\n const { data } = event;\n if (data.id === message.id) {\n resolve(data);\n }\n };\n });\n }\n\n // 根据状态获取弹幕\n filter(state, callback) {\n const danmus = this.states[state] || [];\n for (let index = 0; index < danmus.length; index++) {\n callback(danmus[index]);\n }\n return danmus;\n }\n\n // 设置弹幕状态\n setState(danmu, state) {\n // 从原状态池中删除\n this.states[danmu.$state] = this.states[danmu.$state].filter((item) => item !== danmu);\n\n // 设置新状态\n danmu.$state = state;\n\n // 设置DOM节点状态\n if (danmu.$ref) {\n danmu.$ref.dataset.state = state;\n }\n\n // 添加到新状态池中\n this.states[state].push(danmu);\n }\n\n // 重置弹幕到wait状态,回收弹幕DOM节点\n makeWait(danmu) {\n this.setState(danmu, 'wait');\n if (danmu.$ref) {\n danmu.$ref.style.cssText = Danmuku.cssText;\n danmu.$ref.style.visibility = 'hidden';\n danmu.$ref.style.marginLeft = '0px';\n danmu.$ref.style.transform = 'translateX(0px)';\n danmu.$ref.style.transition = 'transform 0s linear 0s';\n this.$refs.push(danmu.$ref);\n danmu.$ref = null;\n }\n }\n\n // 实时更新弹幕\n update() {\n const { setStyles } = this.utils;\n\n this.timer = window.requestAnimationFrame(async () => {\n if (this.art.playing && !this.isHide) {\n // 实时计算弹幕的剩余显示时间\n this.filter('emit', (danmu) => {\n const emitTime = (Date.now() - danmu.$lastStartTime) / 1000;\n danmu.$restTime -= emitTime;\n danmu.$lastStartTime = Date.now();\n // 超过时间即重置弹幕\n if (danmu.$restTime <= 0) {\n this.makeWait(danmu);\n }\n });\n\n // 获取准备好发送的弹幕,可能包含ready和wait状态的弹幕\n const readys = this.readys;\n for (let index = 0; index < readys.length; index++) {\n const danmu = readys[index];\n\n // 弹幕发送前的过滤器\n const state = await this.option.beforeVisible(danmu);\n\n if (state) {\n const { clientWidth, clientHeight } = this.$player;\n danmu.$ref = this.$ref; // 获取弹幕DOM节点\n danmu.$ref.innerText = danmu.text; // 设置弹幕文本\n\n // 提前添加到弹幕层中,用于计算top值\n this.$danmuku.appendChild(danmu.$ref);\n\n // 设置初始弹幕样式\n danmu.$ref.style.opacity = this.option.opacity;\n danmu.$ref.style.fontSize = `${this.fontSize}px`;\n danmu.$ref.style.color = danmu.color;\n danmu.$ref.style.border = danmu.border ? `1px solid ${danmu.color}` : null;\n danmu.$ref.style.backgroundColor = danmu.border ? 'rgb(0 0 0 / 50%)' : null;\n\n // 设置单独弹幕样式\n setStyles(danmu.$ref, danmu.style);\n\n // 记录弹幕时间戳\n danmu.$lastStartTime = Date.now();\n\n // 计算弹幕剩余时间\n danmu.$restTime = this.speed;\n\n // 计算弹幕滚动的距离\n const distance = clientWidth + danmu.$ref.clientWidth;\n\n // 计算弹幕的top值\n const { top } = await this.postMessage({\n target: {\n mode: danmu.mode,\n height: danmu.$ref.clientHeight,\n speed: distance / danmu.$restTime,\n }, // 当前弹幕信息\n visibles: this.visibles, // 可见的弹幕的数据\n antiOverlap: this.option.antiOverlap,\n clientWidth: clientWidth,\n clientHeight: clientHeight,\n marginBottom: this.marginBottom,\n marginTop: this.marginTop,\n });\n\n if (danmu.$ref) {\n if (!this.isStop && top !== undefined) {\n this.setState(danmu, 'emit'); // 转换为emit状态\n danmu.$ref.style.top = `${top}px`;\n danmu.$ref.style.visibility = 'visible';\n danmu.$ref.dataset.mode = danmu.mode; // CSS控制模式的显示和隐藏\n\n switch (danmu.mode) {\n // 滚动的弹幕\n case 0: {\n danmu.$ref.style.left = `${clientWidth}px`;\n danmu.$ref.style.marginLeft = '0px';\n danmu.$ref.style.transform = `translateX(${-distance}px)`;\n danmu.$ref.style.transition = `transform ${danmu.$restTime}s linear 0s`;\n break;\n }\n case 1:\n // falls through\n case 2:\n danmu.$ref.style.left = '50%';\n danmu.$ref.style.marginLeft = `-${danmu.$ref.clientWidth / 2}px`;\n break;\n default:\n break;\n }\n\n this.art.emit('artplayerPluginDanmuku:visible', danmu);\n } else {\n // 假如弹幕已经停止或者没有 top 值,则重置弹幕为ready状态,回收弹幕DOM节点,等待下次发送\n this.setState(danmu, 'ready');\n this.$refs.push(danmu.$ref);\n danmu.$ref = null;\n }\n }\n }\n }\n }\n\n // 递归调用\n if (!this.isStop) {\n this.update();\n }\n });\n return this;\n }\n\n // 重置正在显示的弹幕: stop/emit 状态的弹幕\n resize() {\n const { clientWidth } = this.$player;\n\n this.filter('stop', (danmu) => {\n switch (danmu.mode) {\n // 滚动的弹幕\n case 0:\n danmu.$ref.style.left = `${clientWidth}px`;\n break;\n default:\n break;\n }\n });\n\n this.filter('emit', (danmu) => {\n danmu.$lastStartTime = Date.now();\n switch (danmu.mode) {\n // 滚动的弹幕\n case 0: {\n const distance = clientWidth + danmu.$ref.clientWidth;\n danmu.$ref.style.left = `${clientWidth}px`;\n danmu.$ref.style.transform = `translateX(${-distance}px)`;\n danmu.$ref.style.transition = `transform ${danmu.$restTime}s linear 0s`;\n break;\n }\n default:\n break;\n }\n });\n }\n\n // 继续弹幕\n continue() {\n const { clientWidth } = this.$player;\n this.filter('stop', (danmu) => {\n this.setState(danmu, 'emit'); // 转换为emit状态\n danmu.$lastStartTime = Date.now();\n switch (danmu.mode) {\n // 继续滚动的弹幕\n case 0: {\n const distance = clientWidth + danmu.$ref.clientWidth;\n danmu.$ref.style.transform = `translateX(${-distance}px)`;\n danmu.$ref.style.transition = `transform ${danmu.$restTime}s linear 0s`;\n break;\n }\n default:\n break;\n }\n });\n\n return this;\n }\n\n // 暂停弹幕\n suspend() {\n const { clientWidth } = this.$player;\n this.filter('emit', (danmu) => {\n this.setState(danmu, 'stop'); // 转换为stop状态\n switch (danmu.mode) {\n // 停止滚动的弹幕\n case 0: {\n const translateX = clientWidth - (this.getLeft(danmu.$ref) - this.getLeft(this.$player));\n danmu.$ref.style.transform = `translateX(${-translateX}px)`;\n danmu.$ref.style.transition = 'transform 0s linear 0s';\n break;\n }\n default:\n break;\n }\n });\n\n return this;\n }\n\n stop() {\n this.isStop = true;\n this.suspend();\n window.cancelAnimationFrame(this.timer);\n this.art.emit('artplayerPluginDanmuku:stop');\n return this;\n }\n\n start() {\n this.isStop = false;\n this.continue();\n this.update();\n this.art.emit('artplayerPluginDanmuku:start');\n return this;\n }\n\n reset() {\n this.queue.forEach((danmu) => this.makeWait(danmu));\n this.art.emit('artplayerPluginDanmuku:reset');\n return this;\n }\n\n show() {\n this.isHide = false;\n this.$danmuku.style.opacity = 1;\n this.option.visible = true;\n this.art.emit('artplayerPluginDanmuku:show');\n return this;\n }\n\n hide() {\n this.isHide = true;\n this.$danmuku.style.opacity = 0;\n this.option.visible = false;\n this.art.emit('artplayerPluginDanmuku:hide');\n return this;\n }\n\n destroy() {\n this.stop();\n this.worker.terminate();\n this.art.off('video:play', this.start);\n this.art.off('video:playing', this.start);\n this.art.off('video:pause', this.stop);\n this.art.off('video:waiting', this.stop);\n this.art.off('resize', this.reset);\n this.art.off('destroy', this.destroy);\n this.art.emit('artplayerPluginDanmuku:destroy');\n }\n}\n","export function getMode(key) {\n switch (key) {\n case 1:\n case 2:\n case 3:\n return 0; // 滚动\n case 4:\n return 2; // 底部\n case 5:\n return 1; // 顶部\n default:\n return 0;\n }\n}\n\nexport function bilibiliDanmuParseFromXml(xmlString) {\n if (typeof xmlString !== 'string') return [];\n const matches = xmlString.matchAll(/.+?)\"(?: .*?)?>(?.+?)<\\/d>/gs);\n return Array.from(matches)\n .map((match) => {\n const attr = match.groups.p.split(',');\n if (attr.length >= 8) {\n const text = match.groups.text\n .trim()\n .replaceAll('"', '\"')\n .replaceAll(''', \"'\")\n .replaceAll('<', '<')\n .replaceAll('>', '>')\n .replaceAll('&', '&');\n\n return {\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 } else {\n return null;\n }\n })\n .filter(Boolean);\n}\n\nexport async function bilibiliDanmuParseFromUrl(url) {\n const res = await fetch(url);\n const xmlString = await res.text();\n return bilibiliDanmuParseFromXml(xmlString);\n}\n","exports.interopDefault = function (a) {\n return a && a.__esModule ? a : {default: a};\n};\n\nexports.defineInteropFlag = function (a) {\n Object.defineProperty(a, '__esModule', {value: true});\n};\n\nexports.exportAll = function (source, dest) {\n Object.keys(source).forEach(function (key) {\n if (\n key === 'default' ||\n key === '__esModule' ||\n Object.prototype.hasOwnProperty.call(dest, key)\n ) {\n return;\n }\n\n Object.defineProperty(dest, key, {\n enumerable: true,\n get: function () {\n return source[key];\n },\n });\n });\n\n return dest;\n};\n\nexports.export = function (dest, destName, get) {\n Object.defineProperty(dest, destName, {\n enumerable: true,\n get: get,\n });\n};\n","module.exports = \"7a58a7689dcfe725\";","import style from 'bundle-text:./style.less';\nimport $on from 'bundle-text:./img/on.svg';\nimport $off from 'bundle-text:./img/off.svg';\nimport $config from 'bundle-text:./img/config.svg';\nimport $style from 'bundle-text:./img/style.svg';\nimport $mode_0_off from 'bundle-text:./img/mode_0_off.svg';\nimport $mode_0_on from 'bundle-text:./img/mode_0_on.svg';\nimport $mode_1_off from 'bundle-text:./img/mode_1_off.svg';\nimport $mode_1_on from 'bundle-text:./img/mode_1_on.svg';\nimport $mode_2_off from 'bundle-text:./img/mode_2_off.svg';\nimport $mode_2_on from 'bundle-text:./img/mode_2_on.svg';\nimport $check_on from 'bundle-text:./img/check_on.svg';\nimport $check_off from 'bundle-text:./img/check_off.svg';\n\nexport default class Setting {\n constructor(art, danmuku) {\n this.art = art;\n this.danmuku = danmuku;\n this.utils = art.constructor.utils;\n\n const { setStyle } = this.utils;\n const { $controlsCenter } = art.template;\n setStyle($controlsCenter, 'display', 'flex');\n\n this.template = {\n $controlsCenter,\n $mount: $controlsCenter,\n $danmuku: null,\n $toggle: null,\n $configModes: null,\n $styleModes: null,\n $colors: null,\n $opacitySlider: null,\n $opacityValue: null,\n $marginSlider: null,\n $marginValue: null,\n $fontSizeSlider: null,\n $fontSizeValue: null,\n $speedSlider: null,\n $speedValue: null,\n $input: null,\n $send: null,\n };\n\n this.slider = {\n opacity: null,\n margin: null,\n fontSize: null,\n speed: null,\n };\n\n this.emitting = false;\n this.isLock = false;\n this.timer = null;\n\n this.createTemplate();\n this.createSliders();\n this.createEvents();\n\n this.mount(this.option.mount);\n\n art.on('fullscreen', (state) => this.onFullscreen(state));\n art.on('fullscreenWeb', (state) => this.onFullscreen(state));\n }\n\n static get icons() {\n return {\n $on,\n $off,\n $config,\n $style,\n $mode_0_off,\n $mode_0_on,\n $mode_1_off,\n $mode_1_on,\n $mode_2_off,\n $mode_2_on,\n $check_on,\n $check_off,\n };\n }\n\n get option() {\n return this.danmuku.option;\n }\n\n get outside() {\n return this.template.$mount !== this.template.$controlsCenter;\n }\n\n get TEMPLATE() {\n const { option } = this;\n return `\n
\n ${$on}${$off}\n
\n
\n ${$config}\n
\n
\n
\n 按类型屏蔽\n
\n
\n ${$mode_0_off}${$mode_0_on}\n
滚动
\n
\n
\n ${$mode_1_off}${$mode_1_on}\n
顶部
\n
\n
\n ${$mode_2_off}${$mode_2_on}\n
底部
\n
\n
\n
\n
\n
\n ${$check_on}${$check_off}\n 防止弹幕重叠\n
\n
\n ${$check_on}${$check_off}\n 同步视频速度\n
\n
\n
\n 不透明度\n
\n
未知
\n
\n
\n 显示区域\n
\n
未知
\n
\n
\n 弹幕字号\n
\n
未知
\n
\n
\n 弹幕速度\n
\n
未知
\n
\n
\n
\n
\n
\n
\n ${$style}\n
\n
\n
\n 模式\n
\n
\n ${$mode_0_on}\n
滚动
\n
\n
\n ${$mode_1_on}\n
顶部
\n
\n
\n ${$mode_2_on}\n
底部
\n
\n
\n
\n
\n 颜色\n
\n ${this.COLOR.map((color) => `
`).join('')}\n
\n
\n
\n
\n
\n \n
发送
\n
\n `;\n }\n\n get OPACITY() {\n return {\n min: 0,\n max: 100,\n steps: [],\n ...this.option.OPACITY,\n };\n }\n\n get FONT_SIZE() {\n return {\n min: 12,\n max: 120,\n steps: [],\n ...this.option.FONT_SIZE,\n };\n }\n\n get MARGIN() {\n return {\n min: 0,\n max: 3,\n steps: [\n {\n name: '1/4',\n value: [10, '75%'],\n },\n {\n name: '半屏',\n value: [10, '50%'],\n },\n {\n name: '3/4',\n value: [10, '25%'],\n },\n {\n name: '满屏',\n value: [10, 10],\n },\n ],\n ...this.option.MARGIN,\n };\n }\n\n get SPEED() {\n return {\n min: 0,\n max: 4,\n steps: [\n {\n name: '极慢',\n value: 10,\n },\n {\n name: '较慢',\n value: 7.5,\n hide: true,\n },\n {\n name: '适中',\n value: 5,\n },\n {\n name: '较快',\n value: 2.5,\n hide: true,\n },\n {\n name: '极快',\n value: 1,\n },\n ],\n ...this.option.SPEED,\n };\n }\n\n get COLOR() {\n return this.option.COLOR.length\n ? this.option.COLOR\n : [\n '#FE0302',\n '#FF7204',\n '#FFAA02',\n '#FFD302',\n '#FFFF00',\n '#A0EE00',\n '#00CD00',\n '#019899',\n '#4266BE',\n '#89D5FF',\n '#CC0273',\n '#222222',\n '#9B9B9B',\n '#FFFFFF',\n ];\n }\n\n query(selector) {\n const { query } = this.utils;\n const { $danmuku } = this.template;\n return query(selector, $danmuku);\n }\n\n setData(key, value) {\n const { $player } = this.art.template;\n const { $mount } = this.template;\n $player.dataset[key] = value;\n if (this.outside) {\n $mount.dataset[key] = value;\n }\n }\n\n createTemplate() {\n const { createElement, tooltip } = this.utils;\n\n const $danmuku = createElement('div');\n $danmuku.className = 'artplayer-plugin-danmuku';\n $danmuku.innerHTML = this.TEMPLATE;\n\n this.template.$danmuku = $danmuku;\n this.template.$toggle = this.query('.apd-toggle');\n this.template.$configModes = this.query('.apd-config-mode .apd-modes');\n this.template.$styleModes = this.query('.apd-style-mode .apd-modes');\n this.template.$colors = this.query('.apd-colors');\n this.template.$antiOverlap = this.query('.apd-anti-overlap');\n this.template.$syncVideo = this.query('.apd-sync-video');\n this.template.$opacitySlider = this.query('.apd-config-opacity .apd-slider');\n this.template.$opacityValue = this.query('.apd-config-opacity .apd-value');\n this.template.$marginSlider = this.query('.apd-config-margin .apd-slider');\n this.template.$marginValue = this.query('.apd-config-margin .apd-value');\n this.template.$fontSizeSlider = this.query('.apd-config-fontSize .apd-slider');\n this.template.$fontSizeValue = this.query('.apd-config-fontSize .apd-value');\n this.template.$speedSlider = this.query('.apd-config-speed .apd-slider');\n this.template.$speedValue = this.query('.apd-config-speed .apd-value');\n this.template.$input = this.query('.apd-input');\n this.template.$send = this.query('.apd-send');\n\n const { $toggle } = this.template;\n\n this.art.on('artplayerPluginDanmuku:show', () => {\n tooltip($toggle, '关闭弹幕');\n });\n\n this.art.on('artplayerPluginDanmuku:hide', () => {\n tooltip($toggle, '打开弹幕');\n });\n }\n\n createEvents() {\n const { $toggle, $configModes, $styleModes, $colors, $antiOverlap, $syncVideo, $send, $input } = this.template;\n\n this.art.proxy($toggle, 'click', () => {\n this.danmuku.config({\n visible: !this.option.visible,\n });\n this.reset();\n });\n\n this.art.proxy($configModes, 'click', (event) => {\n const $mode = event.target.closest('.apd-mode');\n if (!$mode) return;\n const mode = Number($mode.dataset.mode);\n if (this.option.modes.includes(mode)) {\n this.danmuku.config({\n modes: this.option.modes.filter((m) => m !== mode),\n });\n } else {\n this.danmuku.config({\n modes: [...this.option.modes, mode],\n });\n }\n this.reset();\n });\n\n this.art.proxy($antiOverlap, 'click', () => {\n this.danmuku.config({\n antiOverlap: !this.option.antiOverlap,\n });\n this.reset();\n });\n\n this.art.proxy($syncVideo, 'click', () => {\n this.danmuku.config({\n synchronousPlayback: !this.option.synchronousPlayback,\n });\n this.reset();\n });\n\n this.art.proxy($styleModes, 'click', (event) => {\n const $mode = event.target.closest('.apd-mode');\n if (!$mode) return;\n const mode = Number($mode.dataset.mode);\n this.danmuku.config({\n mode: mode,\n });\n this.reset();\n });\n\n this.art.proxy($colors, 'click', (event) => {\n const $color = event.target.closest('.apd-color');\n if (!$color) return;\n this.danmuku.config({\n color: $color.dataset.color,\n });\n this.reset();\n });\n\n this.art.proxy($send, 'click', () => this.emit());\n\n this.art.proxy($input, 'keypress', (event) => {\n if (event.key === 'Enter') {\n event.preventDefault();\n this.emit();\n }\n });\n }\n\n createSliders() {\n this.slider.opacity = this.createSlider({\n ...this.OPACITY,\n container: this.template.$opacitySlider,\n findIndex: () => {\n return Math.round(this.option.opacity * 100);\n },\n onChange: (index) => {\n const { $opacityValue } = this.template;\n $opacityValue.textContent = `${index}%`;\n this.danmuku.config({\n opacity: index / 100,\n });\n },\n });\n\n this.slider.margin = this.createSlider({\n ...this.MARGIN,\n container: this.template.$marginSlider,\n findIndex: () => {\n return this.MARGIN.steps.findIndex(\n (item) => item.value[0] === this.option.margin[0] && item.value[1] === this.option.margin[1],\n );\n },\n onChange: (index) => {\n const margin = this.MARGIN.steps[index];\n if (!margin) return;\n const { $marginValue } = this.template;\n $marginValue.textContent = margin.name;\n this.danmuku.config({\n margin: margin.value,\n });\n },\n });\n\n this.slider.fontSize = this.createSlider({\n ...this.FONT_SIZE,\n container: this.template.$fontSizeSlider,\n findIndex: () => {\n return Math.round(this.danmuku.fontSize);\n },\n onChange: (index) => {\n const { $fontSizeValue } = this.template;\n $fontSizeValue.textContent = `${index}px`;\n this.danmuku.config({\n fontSize: index,\n });\n },\n });\n\n this.slider.speed = this.createSlider({\n ...this.SPEED,\n container: this.template.$speedSlider,\n findIndex: () => {\n return this.SPEED.steps.findIndex((item) => item.value === this.option.speed);\n },\n onChange: (index) => {\n const speed = this.SPEED.steps[index];\n if (!speed) return;\n const { $speedValue } = this.template;\n $speedValue.textContent = speed.name;\n this.danmuku.config({\n speed: speed.value,\n });\n },\n });\n }\n\n createSlider({ min, max, container, findIndex, onChange, steps = [] }) {\n const { query, clamp } = this.utils;\n\n container.innerHTML = `\n
\n
\n ${steps.map(() => `
`).join('')}\n
\n
\n
\n
\n
\n ${steps.map((step) => (step.hide ? '' : `
${step.name}
`)).join('')}\n
\n `;\n\n const $dot = query('.apd-slider-dot', container);\n const $progress = query('.apd-slider-progress', container);\n\n let isDroging = false;\n\n function reset(index = findIndex()) {\n if (index < min || index > max) return;\n const percentage = (index - min) / (max - min);\n $dot.style.left = `${percentage * 100}%`;\n if (steps.length === 0) {\n $progress.style.width = $dot.style.left;\n }\n onChange(index);\n }\n\n function updateLeft(event) {\n const { left, width } = container.getBoundingClientRect();\n const value = clamp(event.clientX - left, 0, width);\n const index = Math.round((value / width) * (max - min) + min);\n reset(index);\n }\n\n this.art.proxy(container, 'click', (event) => {\n updateLeft(event);\n });\n\n this.art.proxy(container, 'mousedown', (event) => {\n isDroging = event.button === 0;\n });\n\n this.art.on('document:mousemove', (event) => {\n if (isDroging) {\n updateLeft(event);\n }\n });\n\n this.art.on('document:mouseup', (event) => {\n if (isDroging) {\n isDroging = false;\n updateLeft(event);\n }\n });\n\n return { reset };\n }\n\n onFullscreen(state) {\n if (this.outside) {\n const { $danmuku, $controlsCenter, $mount } = this.template;\n if (state) {\n $controlsCenter.appendChild($danmuku);\n } else {\n $mount.appendChild($danmuku);\n }\n }\n }\n\n async emit() {\n const { $input } = this.template;\n\n const text = $input.value.trim();\n if (!text.length) return;\n if (this.isLock) return;\n if (this.emitting) return;\n\n const danmu = {\n text: text,\n mode: this.option.mode,\n color: this.option.color,\n time: this.art.currentTime,\n };\n\n try {\n this.emitting = true;\n const state = await this.option.beforeEmit(danmu);\n this.emitting = false;\n\n if (state !== true) return;\n\n danmu.border = true;\n delete danmu.time;\n this.danmuku.emit(danmu);\n $input.value = '';\n\n this.lock();\n // eslint-disable-next-line no-unused-vars\n } catch (error) {\n this.emitting = false;\n }\n }\n\n lock() {\n const { addClass } = this.utils;\n const { $send } = this.template;\n\n this.isLock = true;\n let time = this.option.lockTime;\n $send.innerText = time;\n addClass($send, 'apd-lock');\n\n const loop = () => {\n this.timer = setTimeout(() => {\n if (time === 0) {\n this.unlock();\n } else {\n time -= 1;\n $send.innerText = time;\n loop();\n }\n }, 1000);\n };\n\n loop();\n }\n\n unlock() {\n const { removeClass } = this.utils;\n const { $send } = this.template;\n clearTimeout(this.timer);\n this.isLock = false;\n $send.innerText = '发送';\n removeClass($send, 'apd-lock');\n }\n\n reset() {\n const { inverseClass, tooltip } = this.utils;\n const { $toggle, $colors } = this.template;\n\n this.slider.opacity.reset();\n this.slider.margin.reset();\n this.slider.fontSize.reset();\n this.slider.speed.reset();\n\n this.setData('danmukuVisible', this.option.visible);\n this.setData('danmukuMode', this.option.mode);\n this.setData('danmukuColor', this.option.color);\n this.setData('danmukuMode0', this.option.modes.includes(0));\n this.setData('danmukuMode1', this.option.modes.includes(1));\n this.setData('danmukuMode2', this.option.modes.includes(2));\n this.setData('danmukuAntiOverlap', this.option.antiOverlap);\n this.setData('danmukuSyncVideo', this.option.synchronousPlayback);\n this.setData('danmukuTheme', this.option.theme);\n this.setData('danmukuEmitter', this.option.emitter);\n\n const colors = $colors.children;\n const $color = Array.from(colors).find((item) => item.dataset.color === this.option.color.toUpperCase());\n $color && inverseClass($color, 'apd-active');\n\n tooltip($toggle, this.option.visible ? '关闭弹幕' : '打开弹幕');\n }\n\n mount(target) {\n const $el = typeof target === 'string' ? document.querySelector(target) : target;\n $el.appendChild(this.template.$danmuku);\n this.template.$mount = $el;\n this.reset();\n }\n}\n\nif (typeof document !== 'undefined') {\n const id = 'artplayer-plugin-danmuku';\n const $style = document.getElementById(id);\n if ($style) {\n $style.textContent = style;\n } else {\n const $style = document.createElement('style');\n $style.id = id;\n $style.textContent = style;\n document.head.appendChild($style);\n }\n}\n","module.exports = \"c09c1588fb4faeee\";","module.exports = \"9cb90863dc3c9a4a\";","module.exports = \"628c4c1d1f0914ae\";","module.exports = \"4a37db4fe35f5e6c\";","module.exports = \"8041896cc7b87454\";","module.exports = \"27fd2e805f7e2f23\";","module.exports = \"909d5129494f122f\";","module.exports = \"b7497c63c700b215\";","module.exports = \"46d7b39385b87ee2\";","module.exports = \"cef7220743b52d16\";","module.exports = \"ff5fa44c0fa0d3e8\";","module.exports = \"1a75f737d749272f\";","module.exports = \"24113e84ce531d81\";","const lib = {\n map(value, inMin, inMax, outMin, outMax) {\n return ((value - inMin) * (outMax - outMin)) / (inMax - inMin) + outMin;\n },\n range(start, end, tick) {\n const s = Math.round(start / tick) * tick;\n return Array.from(\n {\n length: Math.floor((end - start) / tick),\n },\n (v, k) => {\n return k * tick + s;\n },\n );\n },\n};\n\nconst line = (pointA, pointB) => {\n const lengthX = pointB[0] - pointA[0];\n const lengthY = pointB[1] - pointA[1];\n return {\n length: Math.sqrt(Math.pow(lengthX, 2) + Math.pow(lengthY, 2)),\n angle: Math.atan2(lengthY, lengthX),\n };\n};\n\nexport default function heatmap(art, danmuku, option) {\n const { query } = art.constructor.utils;\n\n art.controls.add({\n name: 'heatmap',\n position: 'top',\n html: '',\n style: {\n position: 'absolute',\n top: '-100px',\n left: '0px',\n right: '0px',\n height: '100px',\n width: '100%',\n pointerEvents: 'none',\n },\n mounted($heatmap) {\n let $start = null;\n let $stop = null;\n\n function update(arg = []) {\n $start = null;\n $stop = null;\n $heatmap.innerHTML = '';\n\n if (!art.duration || art.option.isLive) return;\n\n const svg = {\n w: $heatmap.offsetWidth,\n h: $heatmap.offsetHeight,\n };\n\n const options = {\n xMin: 0,\n xMax: svg.w,\n yMin: 0,\n yMax: 128,\n scale: 0.25,\n opacity: 0.2,\n minHeight: Math.floor(svg.h * 0.05),\n sampling: Math.floor(svg.w / 100),\n smoothing: 0.2,\n flattening: 0.2,\n };\n\n if (typeof option === 'object') {\n Object.assign(options, option);\n }\n\n let points = [];\n\n if (Array.isArray(arg) && arg.length) {\n points = [...arg];\n } else {\n const gap = art.duration / svg.w;\n for (let x = 0; x <= svg.w; x += options.sampling) {\n const y = danmuku.danmus.filter(\n ({ time }) => time > x * gap && time <= (x + options.sampling) * gap,\n ).length;\n points.push([x, y]);\n }\n }\n\n if (points.length === 0) return;\n\n const lastPoint = points[points.length - 1];\n const lastX = lastPoint[0];\n const lastY = lastPoint[1];\n if (lastX !== svg.w) {\n points.push([svg.w, lastY]);\n }\n\n const yPoints = points.map((point) => point[1]);\n const yMin = Math.min(...yPoints);\n const yMax = Math.max(...yPoints);\n const yMid = (yMin + yMax) / 2;\n\n for (let i = 0; i < points.length; i++) {\n const point = points[i];\n const y = point[1];\n point[1] = y * (y > yMid ? 1 + options.scale : 1 - options.scale) + options.minHeight;\n }\n\n const controlPoint = (current, previous, next, reverse) => {\n const p = previous || current;\n const n = next || current;\n const o = line(p, n);\n const flat = lib.map(Math.cos(o.angle) * options.flattening, 0, 1, 1, 0);\n const angle = o.angle * flat + (reverse ? Math.PI : 0);\n const length = o.length * options.smoothing;\n const x = current[0] + Math.cos(angle) * length;\n const y = current[1] + Math.sin(angle) * length;\n return [x, y];\n };\n\n const bezierCommand = (point, i, a) => {\n const cps = controlPoint(a[i - 1], a[i - 2], point);\n const cpe = controlPoint(point, a[i - 1], a[i + 1], true);\n const close = i === a.length - 1 ? ' z' : '';\n return `C ${cps[0]},${cps[1]} ${cpe[0]},${cpe[1]} ${point[0]},${point[1]}${close}`;\n };\n\n const pointsPositions = points.map((e) => {\n const x = lib.map(e[0], options.xMin, options.xMax, 0, svg.w);\n const y = lib.map(e[1], options.yMin, options.yMax, svg.h, 0);\n return [x, y];\n });\n\n const pathD = pointsPositions.reduce(\n (acc, e, i, a) =>\n i === 0\n ? `M ${a[a.length - 1][0]},${svg.h} L ${e[0]},${svg.h} L ${e[0]},${e[1]}`\n : `${acc} ${bezierCommand(e, i, a)}`,\n '',\n );\n\n $heatmap.innerHTML = `\n \n \n \n \n \n \n \n \n \n \n \n `;\n\n $start = query('#heatmap-start', $heatmap);\n $stop = query('#heatmap-stop', $heatmap);\n $start.setAttribute('offset', `${art.played * 100}%`);\n $stop.setAttribute('offset', `${art.played * 100}%`);\n }\n\n art.on('video:timeupdate', () => {\n if ($start && $stop) {\n $start.setAttribute('offset', `${art.played * 100}%`);\n $stop.setAttribute('offset', `${art.played * 100}%`);\n }\n });\n\n art.on('setBar', (type, percentage) => {\n if ($start && $stop && type === 'played') {\n $start.setAttribute('offset', `${percentage * 100}%`);\n $stop.setAttribute('offset', `${percentage * 100}%`);\n }\n });\n\n art.on('ready', () => update());\n art.on('resize', () => update());\n art.on('artplayerPluginDanmuku:loaded', () => update());\n art.on('artplayerPluginDanmuku:points', (points) => update(points));\n },\n });\n}\n"],"names":[],"version":3,"file":"index.js.map","sourceRoot":"../../../"} \ No newline at end of file +{"mappings":"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","sources":["packages/artplayer-plugin-danmuku/src/index.js","packages/artplayer-plugin-danmuku/src/danmuku.js","packages/artplayer-plugin-danmuku/src/bilibili.js","node_modules/@parcel/transformer-js/src/esmodule-helpers.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-54089e51cb2f5cb0.js","packages/artplayer-plugin-danmuku/src/setting.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-e633bd0642c0f6d8.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-04a4ccdcbe82b9fc.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-6d3492096472ebee.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-4366f15bf5589225.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-3a33dc2ac5713237.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-7405474972f49ad1.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-0c32b0aed97d3724.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-bfb87ad7bdac92c0.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-90cca85b3e6e9028.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-44a2c233ef45411a.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-7d429a40e7f4f4ac.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-081fb7f7de945ff8.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-61cba682068f8950.js","packages/artplayer-plugin-danmuku/src/heatmap.js"],"sourcesContent":["import Danmuku from './danmuku';\nimport Setting from './setting';\nimport heatmap from './heatmap';\n\nexport default function artplayerPluginDanmuku(option) {\n return (art) => {\n const danmuku = new Danmuku(art, option);\n const setting = new Setting(art, danmuku);\n\n if (danmuku.option.heatmap) {\n heatmap(art, danmuku, danmuku.option.heatmap);\n }\n\n return {\n name: 'artplayerPluginDanmuku',\n emit: danmuku.emit.bind(danmuku),\n load: danmuku.load.bind(danmuku),\n config: danmuku.config.bind(danmuku),\n hide: danmuku.hide.bind(danmuku),\n show: danmuku.show.bind(danmuku),\n reset: danmuku.reset.bind(danmuku),\n mount: setting.mount.bind(setting),\n get option() {\n return danmuku.option;\n },\n get isHide() {\n return danmuku.isHide;\n },\n get isStop() {\n return danmuku.isStop;\n },\n };\n };\n}\n\nartplayerPluginDanmuku.icons = Setting.icons;\n\nif (typeof window !== 'undefined') {\n window['artplayerPluginDanmuku'] = artplayerPluginDanmuku;\n}\n","import { bilibiliDanmuParseFromUrl } from './bilibili';\nimport workerText from 'bundle-text:./worker';\n\nexport default class Danmuku {\n constructor(art, option) {\n const { constructor, template } = art;\n\n this.utils = constructor.utils; // 工具库\n this.validator = constructor.validator; // 配置校验器\n this.$danmuku = template.$danmuku; // 弹幕层容器\n this.$player = template.$player; // 播放器容器\n\n this.art = art;\n this.danmus = []; // 原始弹幕数据\n this.queue = []; // 实际弹幕队列\n this.$refs = []; // 弹幕DOM节点池\n this.isStop = false; // 是否停止\n this.isHide = false; // 是否隐藏\n this.timer = null; // 定时器\n this.index = 0; // 弹幕索引\n\n // 格式化后的配置项\n this.option = Danmuku.option;\n\n // 弹幕状态池\n this.states = {\n wait: [],\n ready: [],\n emit: [],\n stop: [],\n };\n\n // 初始化配置\n this.config(option);\n\n // 创建 Web Worker, 用于计算弹幕的 top 值\n this.worker = new Worker(URL.createObjectURL(new Blob([workerText])));\n\n // 绑定公用事件\n this.start = this.start.bind(this);\n this.stop = this.stop.bind(this);\n this.reset = this.reset.bind(this);\n this.resize = this.resize.bind(this);\n this.destroy = this.destroy.bind(this);\n\n // 监听事件\n art.on('video:play', this.start);\n art.on('video:playing', this.start);\n art.on('video:pause', this.stop);\n art.on('video:waiting', this.stop);\n art.on('destroy', this.destroy);\n art.on('resize', this.resize);\n\n // 开始加载弹幕\n this.load();\n }\n\n // 默认配置\n static get option() {\n return {\n danmuku: [], // 弹幕数据\n speed: 5, // 弹幕持续时间,范围在[1 ~ 10]\n margin: [10, '25%'], // 弹幕上下边距,支持像素数字和百分比\n opacity: 1, // 弹幕透明度,范围在[0 ~ 1]\n color: '#FFFFFF', // 默认弹幕颜色,可以被单独弹幕项覆盖\n mode: 0, // 默认弹幕模式: 0: 滚动,1: 顶部,2: 底部\n modes: [0, 1, 2], // 弹幕可见的模式\n fontSize: 25, // 弹幕字体大小,支持像素数字和百分比\n antiOverlap: true, // 弹幕是否防重叠\n synchronousPlayback: false, // 是否同步播放速度\n mount: undefined, // 弹幕发射器挂载点, 默认为播放器控制栏中部\n heatmap: false, // 是否开启热力图\n points: [], // 热力图数据\n filter: () => true, // 弹幕载入前的过滤器,只支持返回布尔值\n beforeEmit: () => true, // 弹幕发送前的过滤器,支持返回 Promise\n beforeVisible: () => true, // 弹幕显示前的过滤器,支持返回 Promise\n visible: true, // 弹幕层是否可见\n emitter: true, // 是否开启弹幕发射器\n maxLength: 200, // 弹幕输入框最大长度, 范围在[1 ~ 1000]\n lockTime: 5, // 输入框锁定时间,范围在[1 ~ 60]\n theme: 'dark', // 弹幕主题,支持 dark 和 light,只在自定义挂载时生效\n OPACITY: {}, // 不透明度配置项\n FONT_SIZE: {}, // 弹幕字号配置项\n MARGIN: {}, // 显示区域配置项\n SPEED: {}, // 弹幕速度配置项\n COLOR: [], // 颜色列表配置项\n };\n }\n\n // 配置校验\n static get scheme() {\n return {\n danmuku: 'array|function|string',\n speed: 'number',\n margin: 'array',\n opacity: 'number',\n color: 'string',\n mode: 'number',\n modes: 'array',\n fontSize: 'number|string',\n antiOverlap: 'boolean',\n synchronousPlayback: 'boolean',\n mount: '?htmldivelement|string',\n heatmap: 'object|boolean',\n points: 'array',\n filter: 'function',\n beforeEmit: 'function',\n beforeVisible: 'function',\n visible: 'boolean',\n emitter: 'boolean',\n maxLength: 'number',\n lockTime: 'number',\n theme: 'string',\n OPACITY: 'object',\n FONT_SIZE: 'object',\n MARGIN: 'object',\n SPEED: 'object',\n COLOR: 'array',\n };\n }\n\n // 初始弹幕样式\n static get cssText() {\n return `\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-weight: normal;\n line-height: 1.125;\n visibility: hidden;\n font-family: SimHei, \"Microsoft JhengHei\", Arial, Helvetica, sans-serif;\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\n // 是否在移动端使用了自动旋屏,会影响弹幕的left和top值\n get isRotate() {\n return this.art.plugins?.autoOrientation?.state;\n }\n\n // 计算上空白边距\n get marginTop() {\n const { clamp } = this.utils;\n const value = this.option.margin[0];\n const { clientHeight } = this.$player;\n\n if (typeof value === 'number') {\n return clamp(value, 0, clientHeight);\n }\n\n if (typeof value === 'string' && value.endsWith('%')) {\n const ratio = parseFloat(value) / 100;\n return clamp(clientHeight * ratio, 0, clientHeight);\n }\n\n return Danmuku.option.margin[0];\n }\n\n // 计算下空白边距\n get marginBottom() {\n const { clamp } = this.utils;\n const value = this.option.margin[1];\n const { clientHeight } = this.$player;\n\n if (typeof value === 'number') {\n return clamp(value, 0, clientHeight);\n }\n\n if (typeof value === 'string' && value.endsWith('%')) {\n const ratio = parseFloat(value) / 100;\n return clamp(clientHeight * ratio, 0, clientHeight);\n }\n\n return Danmuku.option.margin[1];\n }\n\n // 计算弹幕字体大小\n get fontSize() {\n const { clamp } = this.utils;\n const { clientHeight } = this.$player;\n\n const fontSize = this.option.fontSize;\n\n if (typeof fontSize === 'number') {\n return clamp(fontSize, 12, clientHeight);\n }\n\n if (typeof fontSize === 'string' && fontSize.endsWith('%')) {\n const ratio = parseFloat(fontSize) / 100;\n return clamp(clientHeight * ratio, 12, clientHeight);\n }\n\n return Danmuku.option.fontSize;\n }\n\n // 获取弹幕DOM节点\n get $ref() {\n const $ref = this.$refs.pop() || document.createElement('div');\n $ref.style.cssText = Danmuku.cssText;\n $ref.dataset.mode = '';\n $ref.className = '';\n return $ref;\n }\n\n // 获取准备好发送的弹幕\n get readys() {\n const { currentTime } = this.art;\n\n const result = [];\n\n // 有的是ready状态:之前因为弹幕太多而暂停发送的弹幕\n this.filter('ready', (danmu) => result.push(danmu));\n\n // 有的是wait状态:符合时间范围的弹幕\n this.filter('wait', (danmu) => {\n if (currentTime + 0.1 >= danmu.time && danmu.time >= currentTime - 0.1) {\n result.push(danmu);\n }\n });\n\n return result;\n }\n\n // 可见的弹幕的数据,用于计算下一个弹幕的top值\n get visibles() {\n const result = [];\n const { clientWidth } = this.$player;\n const clientLeft = this.getLeft(this.$player);\n\n this.filter('emit', (danmu) => {\n const top = danmu.$ref.offsetTop;\n const left = this.getLeft(danmu.$ref) - clientLeft;\n const height = danmu.$ref.clientHeight;\n const width = danmu.$ref.clientWidth;\n const distance = left + width;\n const right = clientWidth - distance;\n const speed = distance / danmu.$restTime;\n\n const emit = {};\n emit.top = top;\n emit.left = left;\n emit.height = height;\n emit.width = width;\n emit.right = right;\n emit.speed = speed;\n emit.distance = distance;\n emit.time = danmu.$restTime;\n emit.mode = danmu.mode;\n\n result.push(emit);\n });\n\n return result;\n }\n\n get speed() {\n return this.option.synchronousPlayback && this.art.playbackRate\n ? this.option.speed / Number(this.art.playbackRate)\n : this.option.speed;\n }\n\n // 加载弹幕\n async load() {\n const { errorHandle } = this.utils;\n\n try {\n if (typeof this.option.danmuku === 'function') {\n this.danmus = await this.option.danmuku();\n } else if (typeof this.option.danmuku.then === 'function') {\n this.danmus = await this.option.danmuku;\n } else if (typeof this.option.danmuku === 'string') {\n this.danmus = await bilibiliDanmuParseFromUrl(this.option.danmuku);\n } else {\n this.danmus = this.option.danmuku;\n }\n\n errorHandle(Array.isArray(this.danmus), 'Danmuku need return an array as result');\n\n this.queue = []; // 清空实际弹幕队列\n this.$danmuku.innerText = ''; // 清空弹幕层\n this.danmus.forEach((danmu) => this.emit(danmu)); // 逐个验证原始弹幕并转换为实际弹幕\n this.art.emit('artplayerPluginDanmuku:loaded', this.queue);\n } catch (error) {\n this.art.emit('artplayerPluginDanmuku:error', error);\n throw error;\n }\n\n return this;\n }\n\n // 把原始弹幕转换为实际弹幕\n emit(danmu) {\n const { clamp } = this.utils;\n\n this.validator(danmu, {\n text: 'string', // 弹幕文本\n mode: '?number', // 弹幕模式: 0: 滚动,1: 顶部,2: 底部\n color: '?string', // 弹幕颜色\n time: '?number', // 弹幕时间\n border: '?boolean', // 弹幕是否有边框\n style: '?object', // 弹幕额外样式\n });\n\n // 弹幕文本为空则直接忽略\n if (!danmu.text.trim()) return this;\n\n // 设置弹幕时间,如果没有则默认为当前时间加 0.5 秒\n if (danmu.time) {\n danmu.time = clamp(danmu.time, 0, Infinity);\n } else {\n danmu.time = this.art.currentTime + 0.5;\n }\n\n // 设置弹幕模式,如果没有则默认为全局配置\n if (danmu.mode === undefined) {\n danmu.mode = this.option.mode;\n }\n\n // 设置弹幕单独样式,如果没有则默认为空对象\n if (danmu.style === undefined) {\n danmu.style = {};\n }\n\n // 设置弹幕颜色,如果没有则默认为全局配置\n if (danmu.color === undefined) {\n danmu.color = this.option.color;\n }\n\n // 弹幕模式只能是 0, 1, 2\n if (![0, 1, 2].includes(danmu.mode)) return this;\n\n // 自定义弹幕过滤函数\n if (!this.option.filter(danmu)) return this;\n\n // 添加自定义属性\n const item = {\n ...danmu,\n $state: 'wait', // 弹幕初始状态\n $id: this.index++, // 弹幕唯一标识\n $ref: null, // 弹幕 DOM 节点\n $restTime: 0, // 弹幕剩余时间\n $lastStartTime: 0, // 弹幕上次开始时间\n };\n\n // 转换为wait状态\n this.setState(item, 'wait');\n\n // 添加到实际弹幕队列\n this.queue.push(item);\n\n // 弹幕有四个状态:\n // - wait: 弹幕还未开始显示,没有被添加到 DOM 中\n // - ready: 弹幕准备好显示,没有被添加到 DOM 中\n // - emit: 弹幕正在显示,已经被添加到 DOM 中\n // - stop: 弹幕正在停止显示,已经被添加到 DOM 中\n\n return this;\n }\n\n // 动态配置\n config(option) {\n const { clamp } = this.utils;\n const { $controlsCenter } = this.art.template;\n\n // 判断配置项是否有变化\n const changed = Object.keys(option).some(\n (key) => JSON.stringify(this.option[key]) !== JSON.stringify(option[key]),\n );\n\n if (!changed) return this;\n\n this.option = Object.assign({}, Danmuku.option, this.option, option);\n this.validator(this.option, Danmuku.scheme);\n\n this.option.mode = clamp(this.option.mode, 0, 2);\n this.option.speed = clamp(this.option.speed, 1, 10);\n this.option.opacity = clamp(this.option.opacity, 0, 1);\n this.option.lockTime = clamp(this.option.lockTime, 1, 60);\n this.option.maxLength = clamp(this.option.maxLength, 1, 1000);\n this.option.mount = this.option.mount || $controlsCenter;\n\n // 重新计算弹幕字体大小,需要重新渲染\n if (option.fontSize) {\n this.reset();\n }\n\n // 通过配置项控制弹幕的显示和隐藏\n if (this.option.visible) {\n this.show();\n } else {\n this.hide();\n }\n\n this.art.emit('artplayerPluginDanmuku:config', this.option);\n\n return this;\n }\n\n // 计算DOM的left值,受到旋屏影响\n getLeft($ref) {\n const rect = $ref.getBoundingClientRect();\n return this.isRotate ? rect.top : rect.left;\n }\n\n // 计算弹幕的top值\n postMessage(message = {}) {\n return new Promise((resolve) => {\n message.id = Date.now();\n this.worker.postMessage(message);\n this.worker.onmessage = (event) => {\n const { data } = event;\n if (data.id === message.id) {\n resolve(data);\n }\n };\n });\n }\n\n // 根据状态获取弹幕\n filter(state, callback) {\n const danmus = this.states[state] || [];\n for (let index = 0; index < danmus.length; index++) {\n callback(danmus[index]);\n }\n return danmus;\n }\n\n // 设置弹幕状态\n setState(danmu, state) {\n // 从原状态池中删除\n this.states[danmu.$state] = this.states[danmu.$state].filter((item) => item !== danmu);\n\n // 设置新状态\n danmu.$state = state;\n\n // 设置DOM节点状态\n if (danmu.$ref) {\n danmu.$ref.dataset.state = state;\n }\n\n // 添加到新状态池中\n this.states[state].push(danmu);\n }\n\n // 重置弹幕到wait状态,回收弹幕DOM节点\n makeWait(danmu) {\n this.setState(danmu, 'wait');\n if (danmu.$ref) {\n danmu.$ref.style.cssText = Danmuku.cssText;\n danmu.$ref.style.visibility = 'hidden';\n danmu.$ref.style.marginLeft = '0px';\n danmu.$ref.style.transform = 'translateX(0px)';\n danmu.$ref.style.transition = 'transform 0s linear 0s';\n this.$refs.push(danmu.$ref);\n danmu.$ref = null;\n }\n }\n\n // 实时更新弹幕\n update() {\n const { setStyles } = this.utils;\n\n this.timer = window.requestAnimationFrame(async () => {\n if (this.art.playing && !this.isHide) {\n // 实时计算弹幕的剩余显示时间\n this.filter('emit', (danmu) => {\n const emitTime = (Date.now() - danmu.$lastStartTime) / 1000;\n danmu.$restTime -= emitTime;\n danmu.$lastStartTime = Date.now();\n // 超过时间即重置弹幕\n if (danmu.$restTime <= 0) {\n this.makeWait(danmu);\n }\n });\n\n // 获取准备好发送的弹幕,可能包含ready和wait状态的弹幕\n const readys = this.readys;\n for (let index = 0; index < readys.length; index++) {\n const danmu = readys[index];\n\n // 弹幕发送前的过滤器\n const state = await this.option.beforeVisible(danmu);\n\n if (state) {\n const { clientWidth, clientHeight } = this.$player;\n danmu.$ref = this.$ref; // 获取弹幕DOM节点\n danmu.$ref.innerText = danmu.text; // 设置弹幕文本\n\n // 提前添加到弹幕层中,用于计算top值\n this.$danmuku.appendChild(danmu.$ref);\n\n // 设置初始弹幕样式\n danmu.$ref.style.opacity = this.option.opacity;\n danmu.$ref.style.fontSize = `${this.fontSize}px`;\n danmu.$ref.style.color = danmu.color;\n danmu.$ref.style.border = danmu.border ? `1px solid ${danmu.color}` : null;\n danmu.$ref.style.backgroundColor = danmu.border ? 'rgb(0 0 0 / 50%)' : null;\n\n // 设置单独弹幕样式\n setStyles(danmu.$ref, danmu.style);\n\n // 记录弹幕时间戳\n danmu.$lastStartTime = Date.now();\n\n // 计算弹幕剩余时间\n danmu.$restTime = this.speed;\n\n // 计算弹幕滚动的距离\n const distance = clientWidth + danmu.$ref.clientWidth;\n\n // 计算弹幕的top值\n const { top } = await this.postMessage({\n target: {\n mode: danmu.mode,\n height: danmu.$ref.clientHeight,\n speed: distance / danmu.$restTime,\n }, // 当前弹幕信息\n visibles: this.visibles, // 可见的弹幕的数据\n antiOverlap: this.option.antiOverlap,\n clientWidth: clientWidth,\n clientHeight: clientHeight,\n marginBottom: this.marginBottom,\n marginTop: this.marginTop,\n });\n\n if (danmu.$ref) {\n if (!this.isStop && top !== undefined) {\n this.setState(danmu, 'emit'); // 转换为emit状态\n danmu.$ref.style.top = `${top}px`;\n danmu.$ref.style.visibility = 'visible';\n danmu.$ref.dataset.mode = danmu.mode; // CSS控制模式的显示和隐藏\n\n switch (danmu.mode) {\n // 滚动的弹幕\n case 0: {\n danmu.$ref.style.left = `${clientWidth}px`;\n danmu.$ref.style.marginLeft = '0px';\n danmu.$ref.style.transform = `translateX(${-distance}px)`;\n danmu.$ref.style.transition = `transform ${danmu.$restTime}s linear 0s`;\n break;\n }\n case 1:\n // falls through\n case 2:\n danmu.$ref.style.left = '50%';\n danmu.$ref.style.marginLeft = `-${danmu.$ref.clientWidth / 2}px`;\n break;\n default:\n break;\n }\n\n this.art.emit('artplayerPluginDanmuku:visible', danmu);\n } else {\n // 假如弹幕已经停止或者没有 top 值,则重置弹幕为ready状态,回收弹幕DOM节点,等待下次发送\n this.setState(danmu, 'ready');\n this.$refs.push(danmu.$ref);\n danmu.$ref = null;\n }\n }\n }\n }\n }\n\n // 递归调用\n if (!this.isStop) {\n this.update();\n }\n });\n return this;\n }\n\n // 重置正在显示的弹幕: stop/emit 状态的弹幕\n resize() {\n const { clientWidth } = this.$player;\n\n this.filter('stop', (danmu) => {\n switch (danmu.mode) {\n // 滚动的弹幕\n case 0:\n danmu.$ref.style.left = `${clientWidth}px`;\n break;\n default:\n break;\n }\n });\n\n this.filter('emit', (danmu) => {\n danmu.$lastStartTime = Date.now();\n switch (danmu.mode) {\n // 滚动的弹幕\n case 0: {\n const distance = clientWidth + danmu.$ref.clientWidth;\n danmu.$ref.style.left = `${clientWidth}px`;\n danmu.$ref.style.transform = `translateX(${-distance}px)`;\n danmu.$ref.style.transition = `transform ${danmu.$restTime}s linear 0s`;\n break;\n }\n default:\n break;\n }\n });\n }\n\n // 继续弹幕\n continue() {\n const { clientWidth } = this.$player;\n this.filter('stop', (danmu) => {\n this.setState(danmu, 'emit'); // 转换为emit状态\n danmu.$lastStartTime = Date.now();\n switch (danmu.mode) {\n // 继续滚动的弹幕\n case 0: {\n const distance = clientWidth + danmu.$ref.clientWidth;\n danmu.$ref.style.transform = `translateX(${-distance}px)`;\n danmu.$ref.style.transition = `transform ${danmu.$restTime}s linear 0s`;\n break;\n }\n default:\n break;\n }\n });\n\n return this;\n }\n\n // 暂停弹幕\n suspend() {\n const { clientWidth } = this.$player;\n this.filter('emit', (danmu) => {\n this.setState(danmu, 'stop'); // 转换为stop状态\n switch (danmu.mode) {\n // 停止滚动的弹幕\n case 0: {\n const translateX = clientWidth - (this.getLeft(danmu.$ref) - this.getLeft(this.$player));\n danmu.$ref.style.transform = `translateX(${-translateX}px)`;\n danmu.$ref.style.transition = 'transform 0s linear 0s';\n break;\n }\n default:\n break;\n }\n });\n\n return this;\n }\n\n stop() {\n this.isStop = true;\n this.suspend();\n window.cancelAnimationFrame(this.timer);\n this.art.emit('artplayerPluginDanmuku:stop');\n return this;\n }\n\n start() {\n this.isStop = false;\n this.continue();\n this.update();\n this.art.emit('artplayerPluginDanmuku:start');\n return this;\n }\n\n reset() {\n this.queue.forEach((danmu) => this.makeWait(danmu));\n this.art.emit('artplayerPluginDanmuku:reset');\n return this;\n }\n\n show() {\n this.isHide = false;\n this.$danmuku.style.opacity = 1;\n this.option.visible = true;\n this.art.emit('artplayerPluginDanmuku:show');\n return this;\n }\n\n hide() {\n this.isHide = true;\n this.$danmuku.style.opacity = 0;\n this.option.visible = false;\n this.art.emit('artplayerPluginDanmuku:hide');\n return this;\n }\n\n destroy() {\n this.stop();\n this.worker.terminate();\n this.art.off('video:play', this.start);\n this.art.off('video:playing', this.start);\n this.art.off('video:pause', this.stop);\n this.art.off('video:waiting', this.stop);\n this.art.off('resize', this.reset);\n this.art.off('destroy', this.destroy);\n this.art.emit('artplayerPluginDanmuku:destroy');\n }\n}\n","function getMode(key) {\n switch (key) {\n case 1:\n case 2:\n case 3:\n return 0;\n case 4:\n return 2;\n case 5:\n return 1;\n default:\n return 0;\n }\n}\n\nfunction bilibiliDanmuParseFromXml(xmlString) {\n if (typeof xmlString !== 'string') return [];\n const reg = new RegExp(/.+?)\"(?: .*?)?>(?.+?)<\\/d>/gs);\n const matches = xmlString.matchAll(reg);\n return Array.from(matches)\n .map((match) => {\n const attr = match.groups.p.split(',');\n if (attr.length >= 8) {\n const text = match.groups.text\n .trim()\n .replaceAll('"', '\"')\n .replaceAll(''', \"'\")\n .replaceAll('<', '<')\n .replaceAll('>', '>')\n .replaceAll('&', '&');\n\n return {\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 } else {\n return null;\n }\n })\n .filter(Boolean);\n}\n\nfunction onmessage({ data }) {\n const { xml, id } = data;\n if (!id || !xml) return;\n const danmus = bilibiliDanmuParseFromXml(xml);\n self.postMessage({ danmus, id });\n}\n\nfunction createWorker() {\n const workerText = `\n ${getMode.toString()}\n ${bilibiliDanmuParseFromXml.toString()}\n onmessage = ${onmessage.toString()}\n `;\n const blob = new Blob([workerText], { type: 'application/javascript' });\n return new Worker(URL.createObjectURL(blob));\n}\n\nexport function bilibiliDanmuParseFromUrl(url) {\n return new Promise(async (resolve) => {\n const res = await fetch(url);\n const xml = await res.text();\n\n try {\n const worker = createWorker();\n worker.onmessage = (event) => {\n const { danmus, id } = event.data;\n if (!id || !danmus) return;\n resolve(danmus);\n worker.terminate();\n };\n worker.postMessage({ xml, id: Date.now() });\n } catch (error) {\n const danmus = bilibiliDanmuParseFromXml(xml);\n resolve(danmus);\n }\n });\n}\n","exports.interopDefault = function (a) {\n return a && a.__esModule ? a : {default: a};\n};\n\nexports.defineInteropFlag = function (a) {\n Object.defineProperty(a, '__esModule', {value: true});\n};\n\nexports.exportAll = function (source, dest) {\n Object.keys(source).forEach(function (key) {\n if (\n key === 'default' ||\n key === '__esModule' ||\n Object.prototype.hasOwnProperty.call(dest, key)\n ) {\n return;\n }\n\n Object.defineProperty(dest, key, {\n enumerable: true,\n get: function () {\n return source[key];\n },\n });\n });\n\n return dest;\n};\n\nexports.export = function (dest, destName, get) {\n Object.defineProperty(dest, destName, {\n enumerable: true,\n get: get,\n });\n};\n","module.exports = \"7a58a7689dcfe725\";","import style from 'bundle-text:./style.less';\nimport $on from 'bundle-text:./img/on.svg';\nimport $off from 'bundle-text:./img/off.svg';\nimport $config from 'bundle-text:./img/config.svg';\nimport $style from 'bundle-text:./img/style.svg';\nimport $mode_0_off from 'bundle-text:./img/mode_0_off.svg';\nimport $mode_0_on from 'bundle-text:./img/mode_0_on.svg';\nimport $mode_1_off from 'bundle-text:./img/mode_1_off.svg';\nimport $mode_1_on from 'bundle-text:./img/mode_1_on.svg';\nimport $mode_2_off from 'bundle-text:./img/mode_2_off.svg';\nimport $mode_2_on from 'bundle-text:./img/mode_2_on.svg';\nimport $check_on from 'bundle-text:./img/check_on.svg';\nimport $check_off from 'bundle-text:./img/check_off.svg';\n\nexport default class Setting {\n constructor(art, danmuku) {\n this.art = art;\n this.danmuku = danmuku;\n this.utils = art.constructor.utils;\n\n const { setStyle } = this.utils;\n const { $controlsCenter } = art.template;\n setStyle($controlsCenter, 'display', 'flex');\n\n this.template = {\n $controlsCenter,\n $mount: $controlsCenter,\n $danmuku: null,\n $toggle: null,\n $configModes: null,\n $styleModes: null,\n $colors: null,\n $opacitySlider: null,\n $opacityValue: null,\n $marginSlider: null,\n $marginValue: null,\n $fontSizeSlider: null,\n $fontSizeValue: null,\n $speedSlider: null,\n $speedValue: null,\n $input: null,\n $send: null,\n };\n\n this.slider = {\n opacity: null,\n margin: null,\n fontSize: null,\n speed: null,\n };\n\n this.emitting = false;\n this.isLock = false;\n this.timer = null;\n\n this.createTemplate();\n this.createSliders();\n this.createEvents();\n\n this.mount(this.option.mount);\n\n art.on('fullscreen', (state) => this.onFullscreen(state));\n art.on('fullscreenWeb', (state) => this.onFullscreen(state));\n }\n\n static get icons() {\n return {\n $on,\n $off,\n $config,\n $style,\n $mode_0_off,\n $mode_0_on,\n $mode_1_off,\n $mode_1_on,\n $mode_2_off,\n $mode_2_on,\n $check_on,\n $check_off,\n };\n }\n\n get option() {\n return this.danmuku.option;\n }\n\n get outside() {\n return this.template.$mount !== this.template.$controlsCenter;\n }\n\n get TEMPLATE() {\n const { option } = this;\n return `\n
\n ${$on}${$off}\n
\n
\n ${$config}\n
\n
\n
\n 按类型屏蔽\n
\n
\n ${$mode_0_off}${$mode_0_on}\n
滚动
\n
\n
\n ${$mode_1_off}${$mode_1_on}\n
顶部
\n
\n
\n ${$mode_2_off}${$mode_2_on}\n
底部
\n
\n
\n
\n
\n
\n ${$check_on}${$check_off}\n 防止弹幕重叠\n
\n
\n ${$check_on}${$check_off}\n 同步视频速度\n
\n
\n
\n 不透明度\n
\n
未知
\n
\n
\n 显示区域\n
\n
未知
\n
\n
\n 弹幕字号\n
\n
未知
\n
\n
\n 弹幕速度\n
\n
未知
\n
\n
\n
\n
\n
\n
\n ${$style}\n
\n
\n
\n 模式\n
\n
\n ${$mode_0_on}\n
滚动
\n
\n
\n ${$mode_1_on}\n
顶部
\n
\n
\n ${$mode_2_on}\n
底部
\n
\n
\n
\n
\n 颜色\n
\n ${this.COLOR.map((color) => `
`).join('')}\n
\n
\n
\n
\n
\n \n
发送
\n
\n `;\n }\n\n get OPACITY() {\n return {\n min: 0,\n max: 100,\n steps: [],\n ...this.option.OPACITY,\n };\n }\n\n get FONT_SIZE() {\n return {\n min: 12,\n max: 120,\n steps: [],\n ...this.option.FONT_SIZE,\n };\n }\n\n get MARGIN() {\n return {\n min: 0,\n max: 3,\n steps: [\n {\n name: '1/4',\n value: [10, '75%'],\n },\n {\n name: '半屏',\n value: [10, '50%'],\n },\n {\n name: '3/4',\n value: [10, '25%'],\n },\n {\n name: '满屏',\n value: [10, 10],\n },\n ],\n ...this.option.MARGIN,\n };\n }\n\n get SPEED() {\n return {\n min: 0,\n max: 4,\n steps: [\n {\n name: '极慢',\n value: 10,\n },\n {\n name: '较慢',\n value: 7.5,\n hide: true,\n },\n {\n name: '适中',\n value: 5,\n },\n {\n name: '较快',\n value: 2.5,\n hide: true,\n },\n {\n name: '极快',\n value: 1,\n },\n ],\n ...this.option.SPEED,\n };\n }\n\n get COLOR() {\n return this.option.COLOR.length\n ? this.option.COLOR\n : [\n '#FE0302',\n '#FF7204',\n '#FFAA02',\n '#FFD302',\n '#FFFF00',\n '#A0EE00',\n '#00CD00',\n '#019899',\n '#4266BE',\n '#89D5FF',\n '#CC0273',\n '#222222',\n '#9B9B9B',\n '#FFFFFF',\n ];\n }\n\n query(selector) {\n const { query } = this.utils;\n const { $danmuku } = this.template;\n return query(selector, $danmuku);\n }\n\n setData(key, value) {\n const { $player } = this.art.template;\n const { $mount } = this.template;\n $player.dataset[key] = value;\n if (this.outside) {\n $mount.dataset[key] = value;\n }\n }\n\n createTemplate() {\n const { createElement, tooltip } = this.utils;\n\n const $danmuku = createElement('div');\n $danmuku.className = 'artplayer-plugin-danmuku';\n $danmuku.innerHTML = this.TEMPLATE;\n\n this.template.$danmuku = $danmuku;\n this.template.$toggle = this.query('.apd-toggle');\n this.template.$configModes = this.query('.apd-config-mode .apd-modes');\n this.template.$styleModes = this.query('.apd-style-mode .apd-modes');\n this.template.$colors = this.query('.apd-colors');\n this.template.$antiOverlap = this.query('.apd-anti-overlap');\n this.template.$syncVideo = this.query('.apd-sync-video');\n this.template.$opacitySlider = this.query('.apd-config-opacity .apd-slider');\n this.template.$opacityValue = this.query('.apd-config-opacity .apd-value');\n this.template.$marginSlider = this.query('.apd-config-margin .apd-slider');\n this.template.$marginValue = this.query('.apd-config-margin .apd-value');\n this.template.$fontSizeSlider = this.query('.apd-config-fontSize .apd-slider');\n this.template.$fontSizeValue = this.query('.apd-config-fontSize .apd-value');\n this.template.$speedSlider = this.query('.apd-config-speed .apd-slider');\n this.template.$speedValue = this.query('.apd-config-speed .apd-value');\n this.template.$input = this.query('.apd-input');\n this.template.$send = this.query('.apd-send');\n\n const { $toggle } = this.template;\n\n this.art.on('artplayerPluginDanmuku:show', () => {\n tooltip($toggle, '关闭弹幕');\n });\n\n this.art.on('artplayerPluginDanmuku:hide', () => {\n tooltip($toggle, '打开弹幕');\n });\n }\n\n createEvents() {\n const { $toggle, $configModes, $styleModes, $colors, $antiOverlap, $syncVideo, $send, $input } = this.template;\n\n this.art.proxy($toggle, 'click', () => {\n this.danmuku.config({\n visible: !this.option.visible,\n });\n this.reset();\n });\n\n this.art.proxy($configModes, 'click', (event) => {\n const $mode = event.target.closest('.apd-mode');\n if (!$mode) return;\n const mode = Number($mode.dataset.mode);\n if (this.option.modes.includes(mode)) {\n this.danmuku.config({\n modes: this.option.modes.filter((m) => m !== mode),\n });\n } else {\n this.danmuku.config({\n modes: [...this.option.modes, mode],\n });\n }\n this.reset();\n });\n\n this.art.proxy($antiOverlap, 'click', () => {\n this.danmuku.config({\n antiOverlap: !this.option.antiOverlap,\n });\n this.reset();\n });\n\n this.art.proxy($syncVideo, 'click', () => {\n this.danmuku.config({\n synchronousPlayback: !this.option.synchronousPlayback,\n });\n this.reset();\n });\n\n this.art.proxy($styleModes, 'click', (event) => {\n const $mode = event.target.closest('.apd-mode');\n if (!$mode) return;\n const mode = Number($mode.dataset.mode);\n this.danmuku.config({\n mode: mode,\n });\n this.reset();\n });\n\n this.art.proxy($colors, 'click', (event) => {\n const $color = event.target.closest('.apd-color');\n if (!$color) return;\n this.danmuku.config({\n color: $color.dataset.color,\n });\n this.reset();\n });\n\n this.art.proxy($send, 'click', () => this.emit());\n\n this.art.proxy($input, 'keypress', (event) => {\n if (event.key === 'Enter') {\n event.preventDefault();\n this.emit();\n }\n });\n }\n\n createSliders() {\n this.slider.opacity = this.createSlider({\n ...this.OPACITY,\n container: this.template.$opacitySlider,\n findIndex: () => {\n return Math.round(this.option.opacity * 100);\n },\n onChange: (index) => {\n const { $opacityValue } = this.template;\n $opacityValue.textContent = `${index}%`;\n this.danmuku.config({\n opacity: index / 100,\n });\n },\n });\n\n this.slider.margin = this.createSlider({\n ...this.MARGIN,\n container: this.template.$marginSlider,\n findIndex: () => {\n return this.MARGIN.steps.findIndex(\n (item) => item.value[0] === this.option.margin[0] && item.value[1] === this.option.margin[1],\n );\n },\n onChange: (index) => {\n const margin = this.MARGIN.steps[index];\n if (!margin) return;\n const { $marginValue } = this.template;\n $marginValue.textContent = margin.name;\n this.danmuku.config({\n margin: margin.value,\n });\n },\n });\n\n this.slider.fontSize = this.createSlider({\n ...this.FONT_SIZE,\n container: this.template.$fontSizeSlider,\n findIndex: () => {\n return Math.round(this.danmuku.fontSize);\n },\n onChange: (index) => {\n const { $fontSizeValue } = this.template;\n $fontSizeValue.textContent = `${index}px`;\n this.danmuku.config({\n fontSize: index,\n });\n },\n });\n\n this.slider.speed = this.createSlider({\n ...this.SPEED,\n container: this.template.$speedSlider,\n findIndex: () => {\n return this.SPEED.steps.findIndex((item) => item.value === this.option.speed);\n },\n onChange: (index) => {\n const speed = this.SPEED.steps[index];\n if (!speed) return;\n const { $speedValue } = this.template;\n $speedValue.textContent = speed.name;\n this.danmuku.config({\n speed: speed.value,\n });\n },\n });\n }\n\n createSlider({ min, max, container, findIndex, onChange, steps = [] }) {\n const { query, clamp } = this.utils;\n\n container.innerHTML = `\n
\n
\n ${steps.map(() => `
`).join('')}\n
\n
\n
\n
\n
\n ${steps.map((step) => (step.hide ? '' : `
${step.name}
`)).join('')}\n
\n `;\n\n const $dot = query('.apd-slider-dot', container);\n const $progress = query('.apd-slider-progress', container);\n\n let isDroging = false;\n\n function reset(index = findIndex()) {\n if (index < min || index > max) return;\n const percentage = (index - min) / (max - min);\n $dot.style.left = `${percentage * 100}%`;\n if (steps.length === 0) {\n $progress.style.width = $dot.style.left;\n }\n onChange(index);\n }\n\n function updateLeft(event) {\n const { left, width } = container.getBoundingClientRect();\n const value = clamp(event.clientX - left, 0, width);\n const index = Math.round((value / width) * (max - min) + min);\n reset(index);\n }\n\n this.art.proxy(container, 'click', (event) => {\n updateLeft(event);\n });\n\n this.art.proxy(container, 'mousedown', (event) => {\n isDroging = event.button === 0;\n });\n\n this.art.on('document:mousemove', (event) => {\n if (isDroging) {\n updateLeft(event);\n }\n });\n\n this.art.on('document:mouseup', (event) => {\n if (isDroging) {\n isDroging = false;\n updateLeft(event);\n }\n });\n\n return { reset };\n }\n\n onFullscreen(state) {\n if (this.outside) {\n const { $danmuku, $controlsCenter, $mount } = this.template;\n if (state) {\n $controlsCenter.appendChild($danmuku);\n } else {\n $mount.appendChild($danmuku);\n }\n }\n }\n\n async emit() {\n const { $input } = this.template;\n\n const text = $input.value.trim();\n if (!text.length) return;\n if (this.isLock) return;\n if (this.emitting) return;\n\n const danmu = {\n text: text,\n mode: this.option.mode,\n color: this.option.color,\n time: this.art.currentTime,\n };\n\n try {\n this.emitting = true;\n const state = await this.option.beforeEmit(danmu);\n this.emitting = false;\n\n if (state !== true) return;\n\n danmu.border = true;\n delete danmu.time;\n this.danmuku.emit(danmu);\n $input.value = '';\n\n this.lock();\n // eslint-disable-next-line no-unused-vars\n } catch (error) {\n this.emitting = false;\n }\n }\n\n lock() {\n const { addClass } = this.utils;\n const { $send } = this.template;\n\n this.isLock = true;\n let time = this.option.lockTime;\n $send.innerText = time;\n addClass($send, 'apd-lock');\n\n const loop = () => {\n this.timer = setTimeout(() => {\n if (time === 0) {\n this.unlock();\n } else {\n time -= 1;\n $send.innerText = time;\n loop();\n }\n }, 1000);\n };\n\n loop();\n }\n\n unlock() {\n const { removeClass } = this.utils;\n const { $send } = this.template;\n clearTimeout(this.timer);\n this.isLock = false;\n $send.innerText = '发送';\n removeClass($send, 'apd-lock');\n }\n\n reset() {\n const { inverseClass, tooltip } = this.utils;\n const { $toggle, $colors } = this.template;\n\n this.slider.opacity.reset();\n this.slider.margin.reset();\n this.slider.fontSize.reset();\n this.slider.speed.reset();\n\n this.setData('danmukuVisible', this.option.visible);\n this.setData('danmukuMode', this.option.mode);\n this.setData('danmukuColor', this.option.color);\n this.setData('danmukuMode0', this.option.modes.includes(0));\n this.setData('danmukuMode1', this.option.modes.includes(1));\n this.setData('danmukuMode2', this.option.modes.includes(2));\n this.setData('danmukuAntiOverlap', this.option.antiOverlap);\n this.setData('danmukuSyncVideo', this.option.synchronousPlayback);\n this.setData('danmukuTheme', this.option.theme);\n this.setData('danmukuEmitter', this.option.emitter);\n\n const colors = $colors.children;\n const $color = Array.from(colors).find((item) => item.dataset.color === this.option.color.toUpperCase());\n $color && inverseClass($color, 'apd-active');\n\n tooltip($toggle, this.option.visible ? '关闭弹幕' : '打开弹幕');\n }\n\n mount(target) {\n const $el = typeof target === 'string' ? document.querySelector(target) : target;\n $el.appendChild(this.template.$danmuku);\n this.template.$mount = $el;\n this.reset();\n }\n}\n\nif (typeof document !== 'undefined') {\n const id = 'artplayer-plugin-danmuku';\n const $style = document.getElementById(id);\n if ($style) {\n $style.textContent = style;\n } else {\n const $style = document.createElement('style');\n $style.id = id;\n $style.textContent = style;\n document.head.appendChild($style);\n }\n}\n","module.exports = \"c09c1588fb4faeee\";","module.exports = \"9cb90863dc3c9a4a\";","module.exports = \"628c4c1d1f0914ae\";","module.exports = \"4a37db4fe35f5e6c\";","module.exports = \"8041896cc7b87454\";","module.exports = \"27fd2e805f7e2f23\";","module.exports = \"909d5129494f122f\";","module.exports = \"b7497c63c700b215\";","module.exports = \"46d7b39385b87ee2\";","module.exports = \"cef7220743b52d16\";","module.exports = \"ff5fa44c0fa0d3e8\";","module.exports = \"1a75f737d749272f\";","module.exports = \"24113e84ce531d81\";","const lib = {\n map(value, inMin, inMax, outMin, outMax) {\n return ((value - inMin) * (outMax - outMin)) / (inMax - inMin) + outMin;\n },\n range(start, end, tick) {\n const s = Math.round(start / tick) * tick;\n return Array.from(\n {\n length: Math.floor((end - start) / tick),\n },\n (v, k) => {\n return k * tick + s;\n },\n );\n },\n};\n\nconst line = (pointA, pointB) => {\n const lengthX = pointB[0] - pointA[0];\n const lengthY = pointB[1] - pointA[1];\n return {\n length: Math.sqrt(Math.pow(lengthX, 2) + Math.pow(lengthY, 2)),\n angle: Math.atan2(lengthY, lengthX),\n };\n};\n\nexport default function heatmap(art, danmuku, option) {\n const { query } = art.constructor.utils;\n\n art.controls.add({\n name: 'heatmap',\n position: 'top',\n html: '',\n style: {\n position: 'absolute',\n top: '-100px',\n left: '0px',\n right: '0px',\n height: '100px',\n width: '100%',\n pointerEvents: 'none',\n },\n mounted($heatmap) {\n let $start = null;\n let $stop = null;\n\n function update(arg = []) {\n $start = null;\n $stop = null;\n $heatmap.innerHTML = '';\n\n if (!art.duration || art.option.isLive) return;\n\n const svg = {\n w: $heatmap.offsetWidth,\n h: $heatmap.offsetHeight,\n };\n\n const options = {\n xMin: 0,\n xMax: svg.w,\n yMin: 0,\n yMax: 128,\n scale: 0.25,\n opacity: 0.2,\n minHeight: Math.floor(svg.h * 0.05),\n sampling: Math.floor(svg.w / 100),\n smoothing: 0.2,\n flattening: 0.2,\n };\n\n if (typeof option === 'object') {\n Object.assign(options, option);\n }\n\n let points = [];\n\n if (Array.isArray(arg) && arg.length) {\n points = [...arg];\n } else {\n const gap = art.duration / svg.w;\n for (let x = 0; x <= svg.w; x += options.sampling) {\n const y = danmuku.danmus.filter(\n ({ time }) => time > x * gap && time <= (x + options.sampling) * gap,\n ).length;\n points.push([x, y]);\n }\n }\n\n if (points.length === 0) return;\n\n const lastPoint = points[points.length - 1];\n const lastX = lastPoint[0];\n const lastY = lastPoint[1];\n if (lastX !== svg.w) {\n points.push([svg.w, lastY]);\n }\n\n const yPoints = points.map((point) => point[1]);\n const yMin = Math.min(...yPoints);\n const yMax = Math.max(...yPoints);\n const yMid = (yMin + yMax) / 2;\n\n for (let i = 0; i < points.length; i++) {\n const point = points[i];\n const y = point[1];\n point[1] = y * (y > yMid ? 1 + options.scale : 1 - options.scale) + options.minHeight;\n }\n\n const controlPoint = (current, previous, next, reverse) => {\n const p = previous || current;\n const n = next || current;\n const o = line(p, n);\n const flat = lib.map(Math.cos(o.angle) * options.flattening, 0, 1, 1, 0);\n const angle = o.angle * flat + (reverse ? Math.PI : 0);\n const length = o.length * options.smoothing;\n const x = current[0] + Math.cos(angle) * length;\n const y = current[1] + Math.sin(angle) * length;\n return [x, y];\n };\n\n const bezierCommand = (point, i, a) => {\n const cps = controlPoint(a[i - 1], a[i - 2], point);\n const cpe = controlPoint(point, a[i - 1], a[i + 1], true);\n const close = i === a.length - 1 ? ' z' : '';\n return `C ${cps[0]},${cps[1]} ${cpe[0]},${cpe[1]} ${point[0]},${point[1]}${close}`;\n };\n\n const pointsPositions = points.map((e) => {\n const x = lib.map(e[0], options.xMin, options.xMax, 0, svg.w);\n const y = lib.map(e[1], options.yMin, options.yMax, svg.h, 0);\n return [x, y];\n });\n\n const pathD = pointsPositions.reduce(\n (acc, e, i, a) =>\n i === 0\n ? `M ${a[a.length - 1][0]},${svg.h} L ${e[0]},${svg.h} L ${e[0]},${e[1]}`\n : `${acc} ${bezierCommand(e, i, a)}`,\n '',\n );\n\n $heatmap.innerHTML = `\n \n \n \n \n \n \n \n \n \n \n \n `;\n\n $start = query('#heatmap-start', $heatmap);\n $stop = query('#heatmap-stop', $heatmap);\n $start.setAttribute('offset', `${art.played * 100}%`);\n $stop.setAttribute('offset', `${art.played * 100}%`);\n }\n\n art.on('video:timeupdate', () => {\n if ($start && $stop) {\n $start.setAttribute('offset', `${art.played * 100}%`);\n $stop.setAttribute('offset', `${art.played * 100}%`);\n }\n });\n\n art.on('setBar', (type, percentage) => {\n if ($start && $stop && type === 'played') {\n $start.setAttribute('offset', `${percentage * 100}%`);\n $stop.setAttribute('offset', `${percentage * 100}%`);\n }\n });\n\n art.on('ready', () => update());\n art.on('resize', () => update());\n art.on('artplayerPluginDanmuku:loaded', () => update());\n art.on('artplayerPluginDanmuku:points', (points) => update(points));\n },\n });\n}\n"],"names":[],"version":3,"file":"index.js.map","sourceRoot":"../../../"} \ No newline at end of file diff --git a/packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js b/packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js index 59e8bacf6..7517f089f 100644 --- a/packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js +++ b/packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js @@ -5,4 +5,4 @@ * (c) 2017-2024 Harvey Zack * Released under the MIT License. */ -!function(e,t,i,a,n){var o="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},s="function"==typeof o[a]&&o[a],l=s.cache||{},r="undefined"!=typeof module&&"function"==typeof module.require&&module.require.bind(module);function d(t,i){if(!l[t]){if(!e[t]){var n="function"==typeof o[a]&&o[a];if(!i&&n)return n(t,!0);if(s)return s(t,!0);if(r&&"string"==typeof t)return r(t);var p=Error("Cannot find module '"+t+"'");throw p.code="MODULE_NOT_FOUND",p}h.resolve=function(i){var a=e[t][1][i];return null!=a?a:i},h.cache={};var u=l[t]=new d.Module(t);e[t][0].call(u.exports,h,u,u.exports,this)}return l[t].exports;function h(e){var t=h.resolve(e);return!1===t?{}:d(t)}}d.isParcelRequire=!0,d.Module=function(e){this.id=e,this.bundle=d,this.exports={}},d.modules=e,d.cache=l,d.parent=s,d.register=function(t,i){e[t]=[function(e,t){t.exports=i},{}]},Object.defineProperty(d,"root",{get:function(){return o[a]}}),o[a]=d;for(var p=0;pp);var n=e("./danmuku"),o=a.interopDefault(n),s=e("./setting"),l=a.interopDefault(s),r=e("./heatmap"),d=a.interopDefault(r);function p(e){return t=>{let i=new o.default(t,e),a=new l.default(t,i);return i.option.heatmap&&(0,d.default)(t,i,i.option.heatmap),{name:"artplayerPluginDanmuku",emit:i.emit.bind(i),load:i.load.bind(i),config:i.config.bind(i),hide:i.hide.bind(i),show:i.show.bind(i),reset:i.reset.bind(i),mount:a.mount.bind(a),get option(){return i.option},get isHide(){return i.isHide},get isStop(){return i.isStop}}}}p.icons=l.default.icons,"undefined"!=typeof window&&(window.artplayerPluginDanmuku=p)},{"./danmuku":"4ns48","./setting":"lO8OT","./heatmap":"8AxLD","@parcel/transformer-js/src/esmodule-helpers.js":"9pCYc"}],"4ns48":[function(e,t,i){var a=e("@parcel/transformer-js/src/esmodule-helpers.js");a.defineInteropFlag(i);var n=e("./bilibili"),o=e("bundle-text:./worker"),s=a.interopDefault(o);class l{constructor(e,t){let{constructor:i,template:a}=e;this.utils=i.utils,this.validator=i.validator,this.$danmuku=a.$danmuku,this.$player=a.$player,this.art=e,this.danmus=[],this.queue=[],this.$refs=[],this.isStop=!1,this.isHide=!1,this.timer=null,this.index=0,this.option=l.option,this.states={wait:[],ready:[],emit:[],stop:[]},this.config(t),this.worker=new Worker(URL.createObjectURL(new Blob([s.default]))),this.start=this.start.bind(this),this.stop=this.stop.bind(this),this.reset=this.reset.bind(this),this.resize=this.resize.bind(this),this.destroy=this.destroy.bind(this),e.on("video:play",this.start),e.on("video:playing",this.start),e.on("video:pause",this.stop),e.on("video:waiting",this.stop),e.on("destroy",this.destroy),e.on("resize",this.resize),this.load()}static get option(){return{danmuku:[],speed:5,margin:[10,"25%"],opacity:1,color:"#FFFFFF",mode:0,modes:[0,1,2],fontSize:25,antiOverlap:!0,synchronousPlayback:!1,mount:void 0,heatmap:!1,points:[],filter:()=>!0,beforeEmit:()=>!0,beforeVisible:()=>!0,visible:!0,emitter:!0,maxLength:200,lockTime:5,theme:"dark",OPACITY:{},FONT_SIZE:{},MARGIN:{},SPEED:{},COLOR:[]}}static get scheme(){return{danmuku:"array|function|string",speed:"number",margin:"array",opacity:"number",color:"string",mode:"number",modes:"array",fontSize:"number|string",antiOverlap:"boolean",synchronousPlayback:"boolean",mount:"?htmldivelement|string",heatmap:"object|boolean",points:"array",filter:"function",beforeEmit:"function",beforeVisible:"function",visible:"boolean",emitter:"boolean",maxLength:"number",lockTime:"number",theme:"string",OPACITY:"object",FONT_SIZE:"object",MARGIN:"object",SPEED:"object",COLOR:"array"}}static get cssText(){return` user-select: none; position: absolute; white-space: pre; pointer-events: none; perspective: 500px; display: inline-block; will-change: transform; font-weight: normal; line-height: 1.125; visibility: hidden; font-family: SimHei, "Microsoft JhengHei", Arial, Helvetica, sans-serif; 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; `}get isRotate(){return this.art.plugins?.autoOrientation?.state}get marginTop(){let{clamp:e}=this.utils,t=this.option.margin[0],{clientHeight:i}=this.$player;return"number"==typeof t?e(t,0,i):"string"==typeof t&&t.endsWith("%")?e(i*(parseFloat(t)/100),0,i):l.option.margin[0]}get marginBottom(){let{clamp:e}=this.utils,t=this.option.margin[1],{clientHeight:i}=this.$player;return"number"==typeof t?e(t,0,i):"string"==typeof t&&t.endsWith("%")?e(i*(parseFloat(t)/100),0,i):l.option.margin[1]}get fontSize(){let{clamp:e}=this.utils,{clientHeight:t}=this.$player,i=this.option.fontSize;return"number"==typeof i?e(i,12,t):"string"==typeof i&&i.endsWith("%")?e(t*(parseFloat(i)/100),12,t):l.option.fontSize}get $ref(){let e=this.$refs.pop()||document.createElement("div");return e.style.cssText=l.cssText,e.dataset.mode="",e.className="",e}get readys(){let{currentTime:e}=this.art,t=[];return this.filter("ready",e=>t.push(e)),this.filter("wait",i=>{e+.1>=i.time&&i.time>=e-.1&&t.push(i)}),t}get visibles(){let e=[],{clientWidth:t}=this.$player,i=this.getLeft(this.$player);return this.filter("emit",a=>{let n=a.$ref.offsetTop,o=this.getLeft(a.$ref)-i,s=a.$ref.clientHeight,l=a.$ref.clientWidth,r=o+l,d=r/a.$restTime,p={};p.top=n,p.left=o,p.height=s,p.width=l,p.right=t-r,p.speed=d,p.distance=r,p.time=a.$restTime,p.mode=a.mode,e.push(p)}),e}get speed(){return this.option.synchronousPlayback&&this.art.playbackRate?this.option.speed/Number(this.art.playbackRate):this.option.speed}async load(){let{errorHandle:e}=this.utils;try{"function"==typeof this.option.danmuku?this.danmus=await this.option.danmuku():"function"==typeof this.option.danmuku.then?this.danmus=await this.option.danmuku:"string"==typeof this.option.danmuku?this.danmus=await (0,n.bilibiliDanmuParseFromUrl)(this.option.danmuku):this.danmus=this.option.danmuku,e(Array.isArray(this.danmus),"Danmuku need return an array as result"),this.queue=[],this.$danmuku.innerText="",this.danmus.forEach(e=>this.emit(e)),this.art.emit("artplayerPluginDanmuku:loaded",this.queue)}catch(e){throw this.art.emit("artplayerPluginDanmuku:error",e),e}return this}emit(e){let{clamp:t}=this.utils;if(this.validator(e,{text:"string",mode:"?number",color:"?string",time:"?number",border:"?boolean",style:"?object"}),!e.text.trim()||(e.time?e.time=t(e.time,0,1/0):e.time=this.art.currentTime+.5,void 0===e.mode&&(e.mode=this.option.mode),void 0===e.style&&(e.style={}),void 0===e.color&&(e.color=this.option.color),![0,1,2].includes(e.mode)||!this.option.filter(e)))return this;let i={...e,$state:"wait",$id:this.index++,$ref:null,$restTime:0,$lastStartTime:0};return this.setState(i,"wait"),this.queue.push(i),this}config(e){let{clamp:t}=this.utils,{$controlsCenter:i}=this.art.template;return Object.keys(e).some(t=>JSON.stringify(this.option[t])!==JSON.stringify(e[t]))&&(this.option=Object.assign({},l.option,this.option,e),this.validator(this.option,l.scheme),this.option.mode=t(this.option.mode,0,2),this.option.speed=t(this.option.speed,1,10),this.option.opacity=t(this.option.opacity,0,1),this.option.lockTime=t(this.option.lockTime,1,60),this.option.maxLength=t(this.option.maxLength,1,1e3),this.option.mount=this.option.mount||i,e.fontSize&&this.reset(),this.option.visible?this.show():this.hide(),this.art.emit("artplayerPluginDanmuku:config",this.option)),this}getLeft(e){let t=e.getBoundingClientRect();return this.isRotate?t.top:t.left}postMessage(e={}){return new Promise(t=>{e.id=Date.now(),this.worker.postMessage(e),this.worker.onmessage=i=>{let{data:a}=i;a.id===e.id&&t(a)}})}filter(e,t){let i=this.states[e]||[];for(let e=0;et!==e),e.$state=t,e.$ref&&(e.$ref.dataset.state=t),this.states[t].push(e)}makeWait(e){this.setState(e,"wait"),e.$ref&&(e.$ref.style.cssText=l.cssText,e.$ref.style.visibility="hidden",e.$ref.style.marginLeft="0px",e.$ref.style.transform="translateX(0px)",e.$ref.style.transition="transform 0s linear 0s",this.$refs.push(e.$ref),e.$ref=null)}update(){let{setStyles:e}=this.utils;return this.timer=window.requestAnimationFrame(async()=>{if(this.art.playing&&!this.isHide){this.filter("emit",e=>{let t=(Date.now()-e.$lastStartTime)/1e3;e.$restTime-=t,e.$lastStartTime=Date.now(),e.$restTime<=0&&this.makeWait(e)});let t=this.readys;for(let i=0;i{0===t.mode&&(t.$ref.style.left=`${e}px`)}),this.filter("emit",t=>{if(t.$lastStartTime=Date.now(),0===t.mode){let i=e+t.$ref.clientWidth;t.$ref.style.left=`${e}px`,t.$ref.style.transform=`translateX(${-i}px)`,t.$ref.style.transition=`transform ${t.$restTime}s linear 0s`}})}continue(){let{clientWidth:e}=this.$player;return this.filter("stop",t=>{if(this.setState(t,"emit"),t.$lastStartTime=Date.now(),0===t.mode){let i=e+t.$ref.clientWidth;t.$ref.style.transform=`translateX(${-i}px)`,t.$ref.style.transition=`transform ${t.$restTime}s linear 0s`}}),this}suspend(){let{clientWidth:e}=this.$player;return this.filter("emit",t=>{if(this.setState(t,"stop"),0===t.mode){let i=e-(this.getLeft(t.$ref)-this.getLeft(this.$player));t.$ref.style.transform=`translateX(${-i}px)`,t.$ref.style.transition="transform 0s linear 0s"}}),this}stop(){return this.isStop=!0,this.suspend(),window.cancelAnimationFrame(this.timer),this.art.emit("artplayerPluginDanmuku:stop"),this}start(){return this.isStop=!1,this.continue(),this.update(),this.art.emit("artplayerPluginDanmuku:start"),this}reset(){return this.queue.forEach(e=>this.makeWait(e)),this.art.emit("artplayerPluginDanmuku:reset"),this}show(){return this.isHide=!1,this.$danmuku.style.opacity=1,this.option.visible=!0,this.art.emit("artplayerPluginDanmuku:show"),this}hide(){return this.isHide=!0,this.$danmuku.style.opacity=0,this.option.visible=!1,this.art.emit("artplayerPluginDanmuku:hide"),this}destroy(){this.stop(),this.worker.terminate(),this.art.off("video:play",this.start),this.art.off("video:playing",this.start),this.art.off("video:pause",this.stop),this.art.off("video:waiting",this.stop),this.art.off("resize",this.reset),this.art.off("destroy",this.destroy),this.art.emit("artplayerPluginDanmuku:destroy")}}i.default=l},{"./bilibili":"f83sx","bundle-text:./worker":"lfIAi","@parcel/transformer-js/src/esmodule-helpers.js":"9pCYc"}],f83sx:[function(e,t,i){var a=e("@parcel/transformer-js/src/esmodule-helpers.js");function n(e){switch(e){case 1:case 2:case 3:default:return 0;case 4:return 2;case 5:return 1}}function o(e){return"string"!=typeof e?[]:Array.from(e.matchAll(/(?.+?)<\/d>/gs)).map(e=>{let t=e.groups.p.split(",");return t.length>=8?{text:e.groups.text.trim().replaceAll(""",'"').replaceAll("'","'").replaceAll("<","<").replaceAll(">",">").replaceAll("&","&"),time:Number(t[0]),mode:n(Number(t[1])),fontSize:Number(t[2]),color:`#${Number(t[3]).toString(16)}`,timestamp:Number(t[4]),pool:Number(t[5]),userID:t[6],rowID:Number(t[7])}:null}).filter(Boolean)}async function s(e){let t=await fetch(e);return o(await t.text())}a.defineInteropFlag(i),a.export(i,"getMode",()=>n),a.export(i,"bilibiliDanmuParseFromXml",()=>o),a.export(i,"bilibiliDanmuParseFromUrl",()=>s)},{"@parcel/transformer-js/src/esmodule-helpers.js":"9pCYc"}],"9pCYc":[function(e,t,i){i.interopDefault=function(e){return e&&e.__esModule?e:{default:e}},i.defineInteropFlag=function(e){Object.defineProperty(e,"__esModule",{value:!0})},i.exportAll=function(e,t){return Object.keys(e).forEach(function(i){"default"===i||"__esModule"===i||Object.prototype.hasOwnProperty.call(t,i)||Object.defineProperty(t,i,{enumerable:!0,get:function(){return e[i]}})}),t},i.export=function(e,t,i){Object.defineProperty(e,t,{enumerable:!0,get:i})}},{}],lfIAi:[function(e,t,i){t.exports='!function(e,t,n,o,i){var r="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},f="function"==typeof r[o]&&r[o],l=f.cache||{},d="undefined"!=typeof module&&"function"==typeof module.require&&module.require.bind(module);function u(t,n){if(!l[t]){if(!e[t]){var i="function"==typeof r[o]&&r[o];if(!n&&i)return i(t,!0);if(f)return f(t,!0);if(d&&"string"==typeof t)return d(t);var h=Error("Cannot find module \'"+t+"\'");throw h.code="MODULE_NOT_FOUND",h}p.resolve=function(n){var o=e[t][1][n];return null!=o?o:n},p.cache={};var s=l[t]=new u.Module(t);e[t][0].call(s.exports,p,s,s.exports,this)}return l[t].exports;function p(e){var t=p.resolve(e);return!1===t?{}:u(t)}}u.isParcelRequire=!0,u.Module=function(e){this.id=e,this.bundle=u,this.exports={}},u.modules=e,u.cache=l,u.parent=f,u.register=function(t,n){e[t]=[function(e,t){t.exports=n},{}]},Object.defineProperty(u,"root",{get:function(){return r[o]}}),r[o]=u;for(var h=0;h{let{data:t}=e;if(!t.id)return;let n=function({target:e,visibles:t,clientWidth:n,clientHeight:o,marginBottom:i,marginTop:r,antiOverlap:f}){let l=o-i,d=t.filter(t=>t.mode===e.mode&&t.top<=l).sort((e,t)=>e.top-t.top);if(0===d.length)return 2===e.mode?l-e.height:r;if(d.unshift({type:"top",top:0,left:0,right:0,height:r,width:n,speed:0,distance:n}),d.push({type:"bottom",top:l,left:0,right:0,height:i,width:n,speed:0,distance:n}),2===e.mode)for(let t=d.length-2;t>=0;t-=1){let n=d[t],o=d[t+1],i=n.top+n.height;if(o.top-i>=e.height)return o.top-e.height}else for(let t=1;t=e.height)return i}let u=[];for(let e=1;et.every(t=>!(nt.time)));return t&&t[0]?t[0].top:void 0}case 1:case 2:return}else{switch(e.mode){case 0:u.sort((e,t)=>{let n=Math.min(...t.map(e=>e.right)),o=Math.min(...e.map(e=>e.right));return n*t.length-o*e.length});break;case 1:case 2:u.sort((e,t)=>{let n=Math.max(...t.map(e=>e.width));return Math.max(...e.map(e=>e.width))*e.length-n*t.length})}return u[0][0].top}}(t);self.postMessage({top:n,id:t.id})}},{}]},["59OZS"],"59OZS","parcelRequire4dc0");'},{}],lO8OT:[function(e,t,i){var a=e("@parcel/transformer-js/src/esmodule-helpers.js");a.defineInteropFlag(i);var n=e("bundle-text:./style.less"),o=a.interopDefault(n),s=e("bundle-text:./img/on.svg"),l=a.interopDefault(s),r=e("bundle-text:./img/off.svg"),d=a.interopDefault(r),p=e("bundle-text:./img/config.svg"),u=a.interopDefault(p),h=e("bundle-text:./img/style.svg"),m=a.interopDefault(h),c=e("bundle-text:./img/mode_0_off.svg"),f=a.interopDefault(c),g=e("bundle-text:./img/mode_0_on.svg"),v=a.interopDefault(g),y=e("bundle-text:./img/mode_1_off.svg"),x=a.interopDefault(y),k=e("bundle-text:./img/mode_1_on.svg"),b=a.interopDefault(k),$=e("bundle-text:./img/mode_2_off.svg"),w=a.interopDefault($),M=e("bundle-text:./img/mode_2_on.svg"),E=a.interopDefault(M),D=e("bundle-text:./img/check_on.svg"),S=a.interopDefault(D),z=e("bundle-text:./img/check_off.svg"),A=a.interopDefault(z);if(i.default=class{constructor(e,t){this.art=e,this.danmuku=t,this.utils=e.constructor.utils;let{setStyle:i}=this.utils,{$controlsCenter:a}=e.template;i(a,"display","flex"),this.template={$controlsCenter:a,$mount:a,$danmuku:null,$toggle:null,$configModes:null,$styleModes:null,$colors:null,$opacitySlider:null,$opacityValue:null,$marginSlider:null,$marginValue:null,$fontSizeSlider:null,$fontSizeValue:null,$speedSlider:null,$speedValue:null,$input:null,$send:null},this.slider={opacity:null,margin:null,fontSize:null,speed:null},this.emitting=!1,this.isLock=!1,this.timer=null,this.createTemplate(),this.createSliders(),this.createEvents(),this.mount(this.option.mount),e.on("fullscreen",e=>this.onFullscreen(e)),e.on("fullscreenWeb",e=>this.onFullscreen(e))}static get icons(){return{$on:l.default,$off:d.default,$config:u.default,$style:m.default,$mode_0_off:f.default,$mode_0_on:v.default,$mode_1_off:x.default,$mode_1_on:b.default,$mode_2_off:w.default,$mode_2_on:E.default,$check_on:S.default,$check_off:A.default}}get option(){return this.danmuku.option}get outside(){return this.template.$mount!==this.template.$controlsCenter}get TEMPLATE(){let{option:e}=this;return`
${l.default}${d.default}
${u.default}
\u{6309}\u{7C7B}\u{578B}\u{5C4F}\u{853D}
${f.default}${v.default}
\u{6EDA}\u{52A8}
${x.default}${b.default}
\u{9876}\u{90E8}
${w.default}${E.default}
\u{5E95}\u{90E8}
${S.default}${A.default} \u{9632}\u{6B62}\u{5F39}\u{5E55}\u{91CD}\u{53E0}
${S.default}${A.default} \u{540C}\u{6B65}\u{89C6}\u{9891}\u{901F}\u{5EA6}
\u{4E0D}\u{900F}\u{660E}\u{5EA6}
\u{672A}\u{77E5}
\u{663E}\u{793A}\u{533A}\u{57DF}
\u{672A}\u{77E5}
\u{5F39}\u{5E55}\u{5B57}\u{53F7}
\u{672A}\u{77E5}
\u{5F39}\u{5E55}\u{901F}\u{5EA6}
\u{672A}\u{77E5}
${m.default}
\u{6A21}\u{5F0F}
${v.default}
\u{6EDA}\u{52A8}
${b.default}
\u{9876}\u{90E8}
${E.default}
\u{5E95}\u{90E8}
\u{989C}\u{8272}
${this.COLOR.map(e=>`
`).join("")}
\u{53D1}\u{9001}
`}get OPACITY(){return{min:0,max:100,steps:[],...this.option.OPACITY}}get FONT_SIZE(){return{min:12,max:120,steps:[],...this.option.FONT_SIZE}}get MARGIN(){return{min:0,max:3,steps:[{name:"1/4",value:[10,"75%"]},{name:"半屏",value:[10,"50%"]},{name:"3/4",value:[10,"25%"]},{name:"满屏",value:[10,10]}],...this.option.MARGIN}}get SPEED(){return{min:0,max:4,steps:[{name:"极慢",value:10},{name:"较慢",value:7.5,hide:!0},{name:"适中",value:5},{name:"较快",value:2.5,hide:!0},{name:"极快",value:1}],...this.option.SPEED}}get COLOR(){return this.option.COLOR.length?this.option.COLOR:["#FE0302","#FF7204","#FFAA02","#FFD302","#FFFF00","#A0EE00","#00CD00","#019899","#4266BE","#89D5FF","#CC0273","#222222","#9B9B9B","#FFFFFF"]}query(e){let{query:t}=this.utils,{$danmuku:i}=this.template;return t(e,i)}setData(e,t){let{$player:i}=this.art.template,{$mount:a}=this.template;i.dataset[e]=t,this.outside&&(a.dataset[e]=t)}createTemplate(){let{createElement:e,tooltip:t}=this.utils,i=e("div");i.className="artplayer-plugin-danmuku",i.innerHTML=this.TEMPLATE,this.template.$danmuku=i,this.template.$toggle=this.query(".apd-toggle"),this.template.$configModes=this.query(".apd-config-mode .apd-modes"),this.template.$styleModes=this.query(".apd-style-mode .apd-modes"),this.template.$colors=this.query(".apd-colors"),this.template.$antiOverlap=this.query(".apd-anti-overlap"),this.template.$syncVideo=this.query(".apd-sync-video"),this.template.$opacitySlider=this.query(".apd-config-opacity .apd-slider"),this.template.$opacityValue=this.query(".apd-config-opacity .apd-value"),this.template.$marginSlider=this.query(".apd-config-margin .apd-slider"),this.template.$marginValue=this.query(".apd-config-margin .apd-value"),this.template.$fontSizeSlider=this.query(".apd-config-fontSize .apd-slider"),this.template.$fontSizeValue=this.query(".apd-config-fontSize .apd-value"),this.template.$speedSlider=this.query(".apd-config-speed .apd-slider"),this.template.$speedValue=this.query(".apd-config-speed .apd-value"),this.template.$input=this.query(".apd-input"),this.template.$send=this.query(".apd-send");let{$toggle:a}=this.template;this.art.on("artplayerPluginDanmuku:show",()=>{t(a,"关闭弹幕")}),this.art.on("artplayerPluginDanmuku:hide",()=>{t(a,"打开弹幕")})}createEvents(){let{$toggle:e,$configModes:t,$styleModes:i,$colors:a,$antiOverlap:n,$syncVideo:o,$send:s,$input:l}=this.template;this.art.proxy(e,"click",()=>{this.danmuku.config({visible:!this.option.visible}),this.reset()}),this.art.proxy(t,"click",e=>{let t=e.target.closest(".apd-mode");if(!t)return;let i=Number(t.dataset.mode);this.option.modes.includes(i)?this.danmuku.config({modes:this.option.modes.filter(e=>e!==i)}):this.danmuku.config({modes:[...this.option.modes,i]}),this.reset()}),this.art.proxy(n,"click",()=>{this.danmuku.config({antiOverlap:!this.option.antiOverlap}),this.reset()}),this.art.proxy(o,"click",()=>{this.danmuku.config({synchronousPlayback:!this.option.synchronousPlayback}),this.reset()}),this.art.proxy(i,"click",e=>{let t=e.target.closest(".apd-mode");if(!t)return;let i=Number(t.dataset.mode);this.danmuku.config({mode:i}),this.reset()}),this.art.proxy(a,"click",e=>{let t=e.target.closest(".apd-color");t&&(this.danmuku.config({color:t.dataset.color}),this.reset())}),this.art.proxy(s,"click",()=>this.emit()),this.art.proxy(l,"keypress",e=>{"Enter"===e.key&&(e.preventDefault(),this.emit())})}createSliders(){this.slider.opacity=this.createSlider({...this.OPACITY,container:this.template.$opacitySlider,findIndex:()=>Math.round(100*this.option.opacity),onChange:e=>{let{$opacityValue:t}=this.template;t.textContent=`${e}%`,this.danmuku.config({opacity:e/100})}}),this.slider.margin=this.createSlider({...this.MARGIN,container:this.template.$marginSlider,findIndex:()=>this.MARGIN.steps.findIndex(e=>e.value[0]===this.option.margin[0]&&e.value[1]===this.option.margin[1]),onChange:e=>{let t=this.MARGIN.steps[e];if(!t)return;let{$marginValue:i}=this.template;i.textContent=t.name,this.danmuku.config({margin:t.value})}}),this.slider.fontSize=this.createSlider({...this.FONT_SIZE,container:this.template.$fontSizeSlider,findIndex:()=>Math.round(this.danmuku.fontSize),onChange:e=>{let{$fontSizeValue:t}=this.template;t.textContent=`${e}px`,this.danmuku.config({fontSize:e})}}),this.slider.speed=this.createSlider({...this.SPEED,container:this.template.$speedSlider,findIndex:()=>this.SPEED.steps.findIndex(e=>e.value===this.option.speed),onChange:e=>{let t=this.SPEED.steps[e];if(!t)return;let{$speedValue:i}=this.template;i.textContent=t.name,this.danmuku.config({speed:t.value})}})}createSlider({min:e,max:t,container:i,findIndex:a,onChange:n,steps:o=[]}){let{query:s,clamp:l}=this.utils;i.innerHTML=`
${o.map(()=>'
').join("")}
${o.map(e=>e.hide?"":`
${e.name}
`).join("")}
`;let r=s(".apd-slider-dot",i),d=s(".apd-slider-progress",i),p=!1;function u(i=a()){if(it)return;let s=(i-e)/(t-e);r.style.left=`${100*s}%`,0===o.length&&(d.style.width=r.style.left),n(i)}function h(a){let{left:n,width:o}=i.getBoundingClientRect();u(Math.round(l(a.clientX-n,0,o)/o*(t-e)+e))}return this.art.proxy(i,"click",e=>{h(e)}),this.art.proxy(i,"mousedown",e=>{p=0===e.button}),this.art.on("document:mousemove",e=>{p&&h(e)}),this.art.on("document:mouseup",e=>{p&&(p=!1,h(e))}),{reset:u}}onFullscreen(e){if(this.outside){let{$danmuku:t,$controlsCenter:i,$mount:a}=this.template;e?i.appendChild(t):a.appendChild(t)}}async emit(){let{$input:e}=this.template,t=e.value.trim();if(!t.length||this.isLock||this.emitting)return;let i={text:t,mode:this.option.mode,color:this.option.color,time:this.art.currentTime};try{this.emitting=!0;let t=await this.option.beforeEmit(i);if(this.emitting=!1,!0!==t)return;i.border=!0,delete i.time,this.danmuku.emit(i),e.value="",this.lock()}catch(e){this.emitting=!1}}lock(){let{addClass:e}=this.utils,{$send:t}=this.template;this.isLock=!0;let i=this.option.lockTime;t.innerText=i,e(t,"apd-lock");let a=()=>{this.timer=setTimeout(()=>{0===i?this.unlock():(i-=1,t.innerText=i,a())},1e3)};a()}unlock(){let{removeClass:e}=this.utils,{$send:t}=this.template;clearTimeout(this.timer),this.isLock=!1,t.innerText="发送",e(t,"apd-lock")}reset(){let{inverseClass:e,tooltip:t}=this.utils,{$toggle:i,$colors:a}=this.template;this.slider.opacity.reset(),this.slider.margin.reset(),this.slider.fontSize.reset(),this.slider.speed.reset(),this.setData("danmukuVisible",this.option.visible),this.setData("danmukuMode",this.option.mode),this.setData("danmukuColor",this.option.color),this.setData("danmukuMode0",this.option.modes.includes(0)),this.setData("danmukuMode1",this.option.modes.includes(1)),this.setData("danmukuMode2",this.option.modes.includes(2)),this.setData("danmukuAntiOverlap",this.option.antiOverlap),this.setData("danmukuSyncVideo",this.option.synchronousPlayback),this.setData("danmukuTheme",this.option.theme),this.setData("danmukuEmitter",this.option.emitter);let n=Array.from(a.children).find(e=>e.dataset.color===this.option.color.toUpperCase());n&&e(n,"apd-active"),t(i,this.option.visible?"关闭弹幕":"打开弹幕")}mount(e){let t="string"==typeof e?document.querySelector(e):e;t.appendChild(this.template.$danmuku),this.template.$mount=t,this.reset()}},"undefined"!=typeof document){let e="artplayer-plugin-danmuku",t=document.getElementById(e);if(t)t.textContent=o.default;else{let t=document.createElement("style");t.id=e,t.textContent=o.default,document.head.appendChild(t)}}},{"bundle-text:./style.less":"hViDo","bundle-text:./img/on.svg":"9pjcf","bundle-text:./img/off.svg":"b2dkP","bundle-text:./img/config.svg":"l8tyy","bundle-text:./img/style.svg":"5iZC3","bundle-text:./img/mode_0_off.svg":"i0Vut","bundle-text:./img/mode_0_on.svg":"hOSvZ","bundle-text:./img/mode_1_off.svg":"bOXC3","bundle-text:./img/mode_1_on.svg":"lKuh0","bundle-text:./img/mode_2_off.svg":"eB8W6","bundle-text:./img/mode_2_on.svg":"bpe2E","bundle-text:./img/check_on.svg":"kL9zy","bundle-text:./img/check_off.svg":"22xpM","@parcel/transformer-js/src/esmodule-helpers.js":"9pCYc"}],hViDo:[function(e,t,i){t.exports='.artplayer-plugin-danmuku{z-index:99;color:#fff;flex-shrink:0;justify-content:center;align-items:center;gap:10px;width:100%;height:32px;font-size:12px;font-weight:300;display:flex;position:relative}.artplayer-plugin-danmuku .apd-icon{cursor:pointer;opacity:.75;fill:#fff;transition:all .2s}.artplayer-plugin-danmuku .apd-icon:hover{opacity:1}.artplayer-plugin-danmuku .apd-config{display:flex;position:relative}.artplayer-plugin-danmuku .apd-config .apd-config-panel{width:320px;padding:10px;display:none;position:absolute;bottom:24px;left:-148px}.artplayer-plugin-danmuku .apd-config .apd-config-panel .apd-config-panel-inner{background-color:#000000d9;border-radius:3px;width:100%;padding:10px}.artplayer-plugin-danmuku .apd-config:hover .apd-config-panel{display:flex}.artplayer-plugin-danmuku .apd-config-mode,.artplayer-plugin-danmuku .apd-config-slider,.artplayer-plugin-danmuku .apd-config-other,.artplayer-plugin-danmuku .apd-style-mode{margin-bottom:15px}.artplayer-plugin-danmuku .apd-modes{align-items:center;gap:20px;margin-top:5px;display:flex}.artplayer-plugin-danmuku .apd-modes .apd-mode{cursor:pointer;text-align:center}.artplayer-plugin-danmuku .apd-modes .apd-mode:hover{color:#00a1d6}.artplayer-plugin-danmuku .apd-config-slider{align-items:center;gap:12px;display:flex}.artplayer-plugin-danmuku .apd-config-slider .apd-value{text-align:right;width:32px}.artplayer-plugin-danmuku .apd-slider{cursor:pointer;flex:1;justify-content:center;align-items:center;height:20px;display:flex;position:relative}.artplayer-plugin-danmuku .apd-slider .apd-slider-line{background-color:#ffffff40;border-radius:3px;width:100%;height:2px;position:relative;overflow:hidden}.artplayer-plugin-danmuku .apd-slider .apd-slider-points{justify-content:space-between;align-items:center;display:flex;position:absolute;inset:0}.artplayer-plugin-danmuku .apd-slider .apd-slider-points .apd-slider-point{background-color:#ffffff80;border-radius:50%;width:2px;height:2px}.artplayer-plugin-danmuku .apd-slider .apd-slider-progress{background-color:#00a1d6;width:0%;height:100%}.artplayer-plugin-danmuku .apd-slider .apd-slider-dot{background-color:#00a1d6;border-radius:50%;width:12px;height:12px;position:absolute;left:0%;transform:translate(-6px)}.artplayer-plugin-danmuku .apd-slider .apd-slider-steps{color:#777;justify-content:space-between;align-items:center;width:calc(100% + 32px);display:flex;position:absolute;bottom:-12px}.artplayer-plugin-danmuku .apd-slider .apd-slider-steps .apd-slider-step{text-align:center;flex-shrink:0;width:36px;scale:.95}.artplayer-plugin-danmuku .apd-config-other{align-items:center;gap:20px;display:flex}.artplayer-plugin-danmuku .apd-config-other .apd-check-off,.artplayer-plugin-danmuku .apd-config-other .apd-check-on{width:16px;height:16px}.artplayer-plugin-danmuku .apd-config-other .apd-other{cursor:pointer;align-items:center;gap:2px;display:flex}.artplayer-plugin-danmuku .apd-config-other .apd-other:hover{color:#00a1d6}.artplayer-plugin-danmuku .apd-emitter{background-color:#ffffff40;border-radius:5px;flex:1;align-items:center;height:100%;display:flex}.artplayer-plugin-danmuku .apd-style{justify-content:center;align-items:center;display:flex;position:relative}.artplayer-plugin-danmuku .apd-style .apd-style-panel{width:200px;padding:10px;display:none;position:absolute;bottom:24px;left:-88px}.artplayer-plugin-danmuku .apd-style .apd-style-panel .apd-style-panel-inner{background-color:#000000d9;border-radius:3px;width:100%;padding:10px}.artplayer-plugin-danmuku .apd-style:hover .apd-style-panel{display:flex}.artplayer-plugin-danmuku .apd-colors{flex-wrap:wrap;gap:8px;margin-top:5px;display:flex}.artplayer-plugin-danmuku .apd-colors .apd-color{cursor:pointer;border-radius:2px;width:16px;height:16px}.artplayer-plugin-danmuku .apd-colors .apd-color.apd-active{border:1px solid #000;box-shadow:0 0 0 1px #fff}.artplayer-plugin-danmuku .apd-input{color:#fff;background-color:#0000;border:none;outline:none;flex:1;width:auto;min-width:0;height:100%;line-height:1}.artplayer-plugin-danmuku .apd-input::placeholder{color:#ffffff80}.artplayer-plugin-danmuku .apd-send{cursor:pointer;text-shadow:none;background-color:#00a1d6;border-top-right-radius:5px;border-bottom-right-radius:5px;flex-shrink:0;justify-content:center;align-items:center;width:60px;height:100%;display:flex}.artplayer-plugin-danmuku .apd-send.apd-lock{cursor:not-allowed;color:#666;background-color:#e7e7e7}.art-controls-center .apd-emitter{flex:none;width:260px}.art-fullscreen .artplayer-plugin-danmuku,.art-fullscreen-web .artplayer-plugin-danmuku{gap:16px;height:38px}.art-fullscreen .artplayer-plugin-danmuku .apd-config-icon,.art-fullscreen-web .artplayer-plugin-danmuku .apd-config-icon,.art-fullscreen .artplayer-plugin-danmuku .apd-toggle-off,.art-fullscreen-web .artplayer-plugin-danmuku .apd-toggle-off,.art-fullscreen .artplayer-plugin-danmuku .apd-toggle-on,.art-fullscreen-web .artplayer-plugin-danmuku .apd-toggle-on{width:28px;height:28px}.art-fullscreen .artplayer-plugin-danmuku .apd-emitter,.art-fullscreen-web .artplayer-plugin-danmuku .apd-emitter{flex:none;width:400px}[data-danmuku-emitter=false] .apd-emitter{display:none!important}[data-danmuku-emitter=false] .art-controls-center .artplayer-plugin-danmuku{justify-content:flex-end;gap:18px}[data-danmuku-emitter=false].art-fullscreen .art-controls-center .artplayer-plugin-danmuku,[data-danmuku-emitter=false].art-fullscreen-web .art-controls-center .artplayer-plugin-danmuku{gap:24px}[data-danmuku-theme=light]>.artplayer-plugin-danmuku .apd-icon{fill:#333}[data-danmuku-theme=light]>.artplayer-plugin-danmuku .apd-emitter{background-color:#f1f2f3}[data-danmuku-theme=light]>.artplayer-plugin-danmuku .apd-input{color:#000}[data-danmuku-theme=light]>.artplayer-plugin-danmuku .apd-input::placeholder{color:#0000004d}[data-danmuku-visible=false] .apd-toggle-off{display:block}[data-danmuku-visible=false] .apd-toggle-on,[data-danmuku-visible=true] .apd-toggle-off{display:none}[data-danmuku-visible=true] .apd-toggle-on{display:block}[data-danmuku-anti-overlap=false] .apd-anti-overlap .apd-check-on{display:none}[data-danmuku-anti-overlap=false] .apd-anti-overlap .apd-check-off,[data-danmuku-anti-overlap=true] .apd-anti-overlap .apd-check-on{display:block}[data-danmuku-anti-overlap=true] .apd-anti-overlap .apd-check-off,[data-danmuku-sync-video=false] .apd-sync-video .apd-check-on{display:none}[data-danmuku-sync-video=false] .apd-sync-video .apd-check-off,[data-danmuku-sync-video=true] .apd-sync-video .apd-check-on{display:block}[data-danmuku-sync-video=true] .apd-sync-video .apd-check-off{display:none}[data-danmuku-mode0=false] .apd-config-mode .apd-mode-0-off{display:block}[data-danmuku-mode0=false] .apd-config-mode .apd-mode-0-on{display:none}[data-danmuku-mode0=false] .art-danmuku [data-mode="0"]{opacity:0!important}[data-danmuku-mode0=true] .apd-config-mode .apd-mode-0-off{display:none}[data-danmuku-mode0=true] .apd-config-mode .apd-mode-0-on{display:block}[data-danmuku-mode="0"] .apd-style-mode [data-mode="0"]{color:#00a1d6}[data-danmuku-mode="0"] .apd-style-mode [data-mode="0"] path{fill:#00a1d6}[data-danmuku-mode1=false] .apd-config-mode .apd-mode-1-off{display:block}[data-danmuku-mode1=false] .apd-config-mode .apd-mode-1-on{display:none}[data-danmuku-mode1=false] .art-danmuku [data-mode="1"]{opacity:0!important}[data-danmuku-mode1=true] .apd-config-mode .apd-mode-1-off{display:none}[data-danmuku-mode1=true] .apd-config-mode .apd-mode-1-on{display:block}[data-danmuku-mode="1"] .apd-style-mode [data-mode="1"]{color:#00a1d6}[data-danmuku-mode="1"] .apd-style-mode [data-mode="1"] path{fill:#00a1d6}[data-danmuku-mode2=false] .apd-config-mode .apd-mode-2-off{display:block}[data-danmuku-mode2=false] .apd-config-mode .apd-mode-2-on{display:none}[data-danmuku-mode2=false] .art-danmuku [data-mode="2"]{opacity:0!important}[data-danmuku-mode2=true] .apd-config-mode .apd-mode-2-off{display:none}[data-danmuku-mode2=true] .apd-config-mode .apd-mode-2-on{display:block}[data-danmuku-mode="2"] .apd-style-mode [data-mode="2"]{color:#00a1d6}[data-danmuku-mode="2"] .apd-style-mode [data-mode="2"] path{fill:#00a1d6}'},{}],"9pjcf":[function(e,t,i){t.exports=''},{}],b2dkP:[function(e,t,i){t.exports=''},{}],l8tyy:[function(e,t,i){t.exports=''},{}],"5iZC3":[function(e,t,i){t.exports=''},{}],i0Vut:[function(e,t,i){t.exports=''},{}],hOSvZ:[function(e,t,i){t.exports=''},{}],bOXC3:[function(e,t,i){t.exports=''},{}],lKuh0:[function(e,t,i){t.exports=''},{}],eB8W6:[function(e,t,i){t.exports=''},{}],bpe2E:[function(e,t,i){t.exports=''},{}],kL9zy:[function(e,t,i){t.exports=''},{}],"22xpM":[function(e,t,i){t.exports=''},{}],"8AxLD":[function(e,t,i){var a=e("@parcel/transformer-js/src/esmodule-helpers.js");a.defineInteropFlag(i),a.export(i,"default",()=>s);let n={map:(e,t,i,a,n)=>(e-t)*(n-a)/(i-t)+a,range(e,t,i){let a=Math.round(e/i)*i;return Array.from({length:Math.floor((t-e)/i)},(e,t)=>t*i+a)}},o=(e,t)=>{let i=t[0]-e[0],a=t[1]-e[1];return{length:Math.sqrt(Math.pow(i,2)+Math.pow(a,2)),angle:Math.atan2(a,i)}};function s(e,t,i){let{query:a}=e.constructor.utils;e.controls.add({name:"heatmap",position:"top",html:"",style:{position:"absolute",top:"-100px",left:"0px",right:"0px",height:"100px",width:"100%",pointerEvents:"none"},mounted(s){let l=null,r=null;function d(d=[]){if(l=null,r=null,s.innerHTML="",!e.duration||e.option.isLive)return;let p={w:s.offsetWidth,h:s.offsetHeight},u={xMin:0,xMax:p.w,yMin:0,yMax:128,scale:.25,opacity:.2,minHeight:Math.floor(.05*p.h),sampling:Math.floor(p.w/100),smoothing:.2,flattening:.2};"object"==typeof i&&Object.assign(u,i);let h=[];if(Array.isArray(d)&&d.length)h=[...d];else{let i=e.duration/p.w;for(let e=0;e<=p.w;e+=u.sampling){let a=t.danmus.filter(({time:t})=>t>e*i&&t<=(e+u.sampling)*i).length;h.push([e,a])}}if(0===h.length)return;let m=h[h.length-1],c=m[0],f=m[1];c!==p.w&&h.push([p.w,f]);let g=h.map(e=>e[1]),v=(Math.min(...g)+Math.max(...g))/2;for(let e=0;ev?1+u.scale:1-u.scale)+u.minHeight}let y=(e,t,i,a)=>{let s=o(t||e,i||e),l=n.map(Math.cos(s.angle)*u.flattening,0,1,1,0),r=s.angle*l+(a?Math.PI:0),d=s.length*u.smoothing;return[e[0]+Math.cos(r)*d,e[1]+Math.sin(r)*d]},x=(e,t,i)=>{let a=y(i[t-1],i[t-2],e),n=y(e,i[t-1],i[t+1],!0),o=t===i.length-1?" z":"";return`C ${a[0]},${a[1]} ${n[0]},${n[1]} ${e[0]},${e[1]}${o}`},k=h.map(e=>[n.map(e[0],u.xMin,u.xMax,0,p.w),n.map(e[1],u.yMin,u.yMax,p.h,0)]).reduce((e,t,i,a)=>0===i?`M ${a[a.length-1][0]},${p.h} L ${t[0]},${p.h} L ${t[0]},${t[1]}`:`${e} ${x(t,i,a)}`,"");s.innerHTML=``,l=a("#heatmap-start",s),r=a("#heatmap-stop",s),l.setAttribute("offset",`${100*e.played}%`),r.setAttribute("offset",`${100*e.played}%`)}e.on("video:timeupdate",()=>{l&&r&&(l.setAttribute("offset",`${100*e.played}%`),r.setAttribute("offset",`${100*e.played}%`))}),e.on("setBar",(e,t)=>{l&&r&&"played"===e&&(l.setAttribute("offset",`${100*t}%`),r.setAttribute("offset",`${100*t}%`))}),e.on("ready",()=>d()),e.on("resize",()=>d()),e.on("artplayerPluginDanmuku:loaded",()=>d()),e.on("artplayerPluginDanmuku:points",e=>d(e))}})}},{"@parcel/transformer-js/src/esmodule-helpers.js":"9pCYc"}]},["bgm6t"],"bgm6t","parcelRequire4dc0"); \ No newline at end of file +!function(e,t,i,a,n){var o="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},s="function"==typeof o[a]&&o[a],l=s.cache||{},r="undefined"!=typeof module&&"function"==typeof module.require&&module.require.bind(module);function d(t,i){if(!l[t]){if(!e[t]){var n="function"==typeof o[a]&&o[a];if(!i&&n)return n(t,!0);if(s)return s(t,!0);if(r&&"string"==typeof t)return r(t);var p=Error("Cannot find module '"+t+"'");throw p.code="MODULE_NOT_FOUND",p}h.resolve=function(i){var a=e[t][1][i];return null!=a?a:i},h.cache={};var u=l[t]=new d.Module(t);e[t][0].call(u.exports,h,u,u.exports,this)}return l[t].exports;function h(e){var t=h.resolve(e);return!1===t?{}:d(t)}}d.isParcelRequire=!0,d.Module=function(e){this.id=e,this.bundle=d,this.exports={}},d.modules=e,d.cache=l,d.parent=s,d.register=function(t,i){e[t]=[function(e,t){t.exports=i},{}]},Object.defineProperty(d,"root",{get:function(){return o[a]}}),o[a]=d;for(var p=0;pp);var n=e("./danmuku"),o=a.interopDefault(n),s=e("./setting"),l=a.interopDefault(s),r=e("./heatmap"),d=a.interopDefault(r);function p(e){return t=>{let i=new o.default(t,e),a=new l.default(t,i);return i.option.heatmap&&(0,d.default)(t,i,i.option.heatmap),{name:"artplayerPluginDanmuku",emit:i.emit.bind(i),load:i.load.bind(i),config:i.config.bind(i),hide:i.hide.bind(i),show:i.show.bind(i),reset:i.reset.bind(i),mount:a.mount.bind(a),get option(){return i.option},get isHide(){return i.isHide},get isStop(){return i.isStop}}}}p.icons=l.default.icons,"undefined"!=typeof window&&(window.artplayerPluginDanmuku=p)},{"./danmuku":"4ns48","./setting":"lO8OT","./heatmap":"8AxLD","@parcel/transformer-js/src/esmodule-helpers.js":"9pCYc"}],"4ns48":[function(e,t,i){var a=e("@parcel/transformer-js/src/esmodule-helpers.js");a.defineInteropFlag(i);var n=e("./bilibili"),o=e("bundle-text:./worker"),s=a.interopDefault(o);class l{constructor(e,t){let{constructor:i,template:a}=e;this.utils=i.utils,this.validator=i.validator,this.$danmuku=a.$danmuku,this.$player=a.$player,this.art=e,this.danmus=[],this.queue=[],this.$refs=[],this.isStop=!1,this.isHide=!1,this.timer=null,this.index=0,this.option=l.option,this.states={wait:[],ready:[],emit:[],stop:[]},this.config(t),this.worker=new Worker(URL.createObjectURL(new Blob([s.default]))),this.start=this.start.bind(this),this.stop=this.stop.bind(this),this.reset=this.reset.bind(this),this.resize=this.resize.bind(this),this.destroy=this.destroy.bind(this),e.on("video:play",this.start),e.on("video:playing",this.start),e.on("video:pause",this.stop),e.on("video:waiting",this.stop),e.on("destroy",this.destroy),e.on("resize",this.resize),this.load()}static get option(){return{danmuku:[],speed:5,margin:[10,"25%"],opacity:1,color:"#FFFFFF",mode:0,modes:[0,1,2],fontSize:25,antiOverlap:!0,synchronousPlayback:!1,mount:void 0,heatmap:!1,points:[],filter:()=>!0,beforeEmit:()=>!0,beforeVisible:()=>!0,visible:!0,emitter:!0,maxLength:200,lockTime:5,theme:"dark",OPACITY:{},FONT_SIZE:{},MARGIN:{},SPEED:{},COLOR:[]}}static get scheme(){return{danmuku:"array|function|string",speed:"number",margin:"array",opacity:"number",color:"string",mode:"number",modes:"array",fontSize:"number|string",antiOverlap:"boolean",synchronousPlayback:"boolean",mount:"?htmldivelement|string",heatmap:"object|boolean",points:"array",filter:"function",beforeEmit:"function",beforeVisible:"function",visible:"boolean",emitter:"boolean",maxLength:"number",lockTime:"number",theme:"string",OPACITY:"object",FONT_SIZE:"object",MARGIN:"object",SPEED:"object",COLOR:"array"}}static get cssText(){return` user-select: none; position: absolute; white-space: pre; pointer-events: none; perspective: 500px; display: inline-block; will-change: transform; font-weight: normal; line-height: 1.125; visibility: hidden; font-family: SimHei, "Microsoft JhengHei", Arial, Helvetica, sans-serif; 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; `}get isRotate(){return this.art.plugins?.autoOrientation?.state}get marginTop(){let{clamp:e}=this.utils,t=this.option.margin[0],{clientHeight:i}=this.$player;return"number"==typeof t?e(t,0,i):"string"==typeof t&&t.endsWith("%")?e(i*(parseFloat(t)/100),0,i):l.option.margin[0]}get marginBottom(){let{clamp:e}=this.utils,t=this.option.margin[1],{clientHeight:i}=this.$player;return"number"==typeof t?e(t,0,i):"string"==typeof t&&t.endsWith("%")?e(i*(parseFloat(t)/100),0,i):l.option.margin[1]}get fontSize(){let{clamp:e}=this.utils,{clientHeight:t}=this.$player,i=this.option.fontSize;return"number"==typeof i?e(i,12,t):"string"==typeof i&&i.endsWith("%")?e(t*(parseFloat(i)/100),12,t):l.option.fontSize}get $ref(){let e=this.$refs.pop()||document.createElement("div");return e.style.cssText=l.cssText,e.dataset.mode="",e.className="",e}get readys(){let{currentTime:e}=this.art,t=[];return this.filter("ready",e=>t.push(e)),this.filter("wait",i=>{e+.1>=i.time&&i.time>=e-.1&&t.push(i)}),t}get visibles(){let e=[],{clientWidth:t}=this.$player,i=this.getLeft(this.$player);return this.filter("emit",a=>{let n=a.$ref.offsetTop,o=this.getLeft(a.$ref)-i,s=a.$ref.clientHeight,l=a.$ref.clientWidth,r=o+l,d=r/a.$restTime,p={};p.top=n,p.left=o,p.height=s,p.width=l,p.right=t-r,p.speed=d,p.distance=r,p.time=a.$restTime,p.mode=a.mode,e.push(p)}),e}get speed(){return this.option.synchronousPlayback&&this.art.playbackRate?this.option.speed/Number(this.art.playbackRate):this.option.speed}async load(){let{errorHandle:e}=this.utils;try{"function"==typeof this.option.danmuku?this.danmus=await this.option.danmuku():"function"==typeof this.option.danmuku.then?this.danmus=await this.option.danmuku:"string"==typeof this.option.danmuku?this.danmus=await (0,n.bilibiliDanmuParseFromUrl)(this.option.danmuku):this.danmus=this.option.danmuku,e(Array.isArray(this.danmus),"Danmuku need return an array as result"),this.queue=[],this.$danmuku.innerText="",this.danmus.forEach(e=>this.emit(e)),this.art.emit("artplayerPluginDanmuku:loaded",this.queue)}catch(e){throw this.art.emit("artplayerPluginDanmuku:error",e),e}return this}emit(e){let{clamp:t}=this.utils;if(this.validator(e,{text:"string",mode:"?number",color:"?string",time:"?number",border:"?boolean",style:"?object"}),!e.text.trim()||(e.time?e.time=t(e.time,0,1/0):e.time=this.art.currentTime+.5,void 0===e.mode&&(e.mode=this.option.mode),void 0===e.style&&(e.style={}),void 0===e.color&&(e.color=this.option.color),![0,1,2].includes(e.mode)||!this.option.filter(e)))return this;let i={...e,$state:"wait",$id:this.index++,$ref:null,$restTime:0,$lastStartTime:0};return this.setState(i,"wait"),this.queue.push(i),this}config(e){let{clamp:t}=this.utils,{$controlsCenter:i}=this.art.template;return Object.keys(e).some(t=>JSON.stringify(this.option[t])!==JSON.stringify(e[t]))&&(this.option=Object.assign({},l.option,this.option,e),this.validator(this.option,l.scheme),this.option.mode=t(this.option.mode,0,2),this.option.speed=t(this.option.speed,1,10),this.option.opacity=t(this.option.opacity,0,1),this.option.lockTime=t(this.option.lockTime,1,60),this.option.maxLength=t(this.option.maxLength,1,1e3),this.option.mount=this.option.mount||i,e.fontSize&&this.reset(),this.option.visible?this.show():this.hide(),this.art.emit("artplayerPluginDanmuku:config",this.option)),this}getLeft(e){let t=e.getBoundingClientRect();return this.isRotate?t.top:t.left}postMessage(e={}){return new Promise(t=>{e.id=Date.now(),this.worker.postMessage(e),this.worker.onmessage=i=>{let{data:a}=i;a.id===e.id&&t(a)}})}filter(e,t){let i=this.states[e]||[];for(let e=0;et!==e),e.$state=t,e.$ref&&(e.$ref.dataset.state=t),this.states[t].push(e)}makeWait(e){this.setState(e,"wait"),e.$ref&&(e.$ref.style.cssText=l.cssText,e.$ref.style.visibility="hidden",e.$ref.style.marginLeft="0px",e.$ref.style.transform="translateX(0px)",e.$ref.style.transition="transform 0s linear 0s",this.$refs.push(e.$ref),e.$ref=null)}update(){let{setStyles:e}=this.utils;return this.timer=window.requestAnimationFrame(async()=>{if(this.art.playing&&!this.isHide){this.filter("emit",e=>{let t=(Date.now()-e.$lastStartTime)/1e3;e.$restTime-=t,e.$lastStartTime=Date.now(),e.$restTime<=0&&this.makeWait(e)});let t=this.readys;for(let i=0;i{0===t.mode&&(t.$ref.style.left=`${e}px`)}),this.filter("emit",t=>{if(t.$lastStartTime=Date.now(),0===t.mode){let i=e+t.$ref.clientWidth;t.$ref.style.left=`${e}px`,t.$ref.style.transform=`translateX(${-i}px)`,t.$ref.style.transition=`transform ${t.$restTime}s linear 0s`}})}continue(){let{clientWidth:e}=this.$player;return this.filter("stop",t=>{if(this.setState(t,"emit"),t.$lastStartTime=Date.now(),0===t.mode){let i=e+t.$ref.clientWidth;t.$ref.style.transform=`translateX(${-i}px)`,t.$ref.style.transition=`transform ${t.$restTime}s linear 0s`}}),this}suspend(){let{clientWidth:e}=this.$player;return this.filter("emit",t=>{if(this.setState(t,"stop"),0===t.mode){let i=e-(this.getLeft(t.$ref)-this.getLeft(this.$player));t.$ref.style.transform=`translateX(${-i}px)`,t.$ref.style.transition="transform 0s linear 0s"}}),this}stop(){return this.isStop=!0,this.suspend(),window.cancelAnimationFrame(this.timer),this.art.emit("artplayerPluginDanmuku:stop"),this}start(){return this.isStop=!1,this.continue(),this.update(),this.art.emit("artplayerPluginDanmuku:start"),this}reset(){return this.queue.forEach(e=>this.makeWait(e)),this.art.emit("artplayerPluginDanmuku:reset"),this}show(){return this.isHide=!1,this.$danmuku.style.opacity=1,this.option.visible=!0,this.art.emit("artplayerPluginDanmuku:show"),this}hide(){return this.isHide=!0,this.$danmuku.style.opacity=0,this.option.visible=!1,this.art.emit("artplayerPluginDanmuku:hide"),this}destroy(){this.stop(),this.worker.terminate(),this.art.off("video:play",this.start),this.art.off("video:playing",this.start),this.art.off("video:pause",this.stop),this.art.off("video:waiting",this.stop),this.art.off("resize",this.reset),this.art.off("destroy",this.destroy),this.art.emit("artplayerPluginDanmuku:destroy")}}i.default=l},{"./bilibili":"f83sx","bundle-text:./worker":"lfIAi","@parcel/transformer-js/src/esmodule-helpers.js":"9pCYc"}],f83sx:[function(e,t,i){var a=e("@parcel/transformer-js/src/esmodule-helpers.js");function n(e){switch(e){case 1:case 2:case 3:default:return 0;case 4:return 2;case 5:return 1}}function o(e){if("string"!=typeof e)return[];let t=new RegExp(/(?.+?)<\/d>/gs);return Array.from(e.matchAll(t)).map(e=>{let t=e.groups.p.split(",");return t.length>=8?{text:e.groups.text.trim().replaceAll(""",'"').replaceAll("'","'").replaceAll("<","<").replaceAll(">",">").replaceAll("&","&"),time:Number(t[0]),mode:n(Number(t[1])),fontSize:Number(t[2]),color:`#${Number(t[3]).toString(16)}`,timestamp:Number(t[4]),pool:Number(t[5]),userID:t[6],rowID:Number(t[7])}:null}).filter(Boolean)}function s({data:e}){let{xml:t,id:i}=e;if(!i||!t)return;let a=o(t);self.postMessage({danmus:a,id:i})}function l(e){return new Promise(async t=>{let i=Date.now(),a=await fetch(e),l=await a.text();try{let e=function(){let e=new Blob([` ${n.toString()} ${o.toString()} onmessage = ${s.toString()} `],{type:"application/javascript"});return new Worker(URL.createObjectURL(e))}();e.onmessage=a=>{let{danmus:n,id:o}=a.data;o&&n&&(t(n),e.terminate(),console.log("Worker parse xml",Date.now()-i))},e.postMessage({xml:l,id:Date.now()})}catch(e){t(o(l)),console.log("Main parse xml",Date.now()-i)}})}a.defineInteropFlag(i),a.export(i,"bilibiliDanmuParseFromUrl",()=>l)},{"@parcel/transformer-js/src/esmodule-helpers.js":"9pCYc"}],"9pCYc":[function(e,t,i){i.interopDefault=function(e){return e&&e.__esModule?e:{default:e}},i.defineInteropFlag=function(e){Object.defineProperty(e,"__esModule",{value:!0})},i.exportAll=function(e,t){return Object.keys(e).forEach(function(i){"default"===i||"__esModule"===i||Object.prototype.hasOwnProperty.call(t,i)||Object.defineProperty(t,i,{enumerable:!0,get:function(){return e[i]}})}),t},i.export=function(e,t,i){Object.defineProperty(e,t,{enumerable:!0,get:i})}},{}],lfIAi:[function(e,t,i){t.exports='!function(e,t,n,o,i){var r="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},f="function"==typeof r[o]&&r[o],l=f.cache||{},d="undefined"!=typeof module&&"function"==typeof module.require&&module.require.bind(module);function u(t,n){if(!l[t]){if(!e[t]){var i="function"==typeof r[o]&&r[o];if(!n&&i)return i(t,!0);if(f)return f(t,!0);if(d&&"string"==typeof t)return d(t);var h=Error("Cannot find module \'"+t+"\'");throw h.code="MODULE_NOT_FOUND",h}p.resolve=function(n){var o=e[t][1][n];return null!=o?o:n},p.cache={};var s=l[t]=new u.Module(t);e[t][0].call(s.exports,p,s,s.exports,this)}return l[t].exports;function p(e){var t=p.resolve(e);return!1===t?{}:u(t)}}u.isParcelRequire=!0,u.Module=function(e){this.id=e,this.bundle=u,this.exports={}},u.modules=e,u.cache=l,u.parent=f,u.register=function(t,n){e[t]=[function(e,t){t.exports=n},{}]},Object.defineProperty(u,"root",{get:function(){return r[o]}}),r[o]=u;for(var h=0;h{let{data:t}=e;if(!t.id)return;let n=function({target:e,visibles:t,clientWidth:n,clientHeight:o,marginBottom:i,marginTop:r,antiOverlap:f}){let l=o-i,d=t.filter(t=>t.mode===e.mode&&t.top<=l).sort((e,t)=>e.top-t.top);if(0===d.length)return 2===e.mode?l-e.height:r;if(d.unshift({type:"top",top:0,left:0,right:0,height:r,width:n,speed:0,distance:n}),d.push({type:"bottom",top:l,left:0,right:0,height:i,width:n,speed:0,distance:n}),2===e.mode)for(let t=d.length-2;t>=0;t-=1){let n=d[t],o=d[t+1],i=n.top+n.height;if(o.top-i>=e.height)return o.top-e.height}else for(let t=1;t=e.height)return i}let u=[];for(let e=1;et.every(t=>!(nt.time)));return t&&t[0]?t[0].top:void 0}case 1:case 2:return}else{switch(e.mode){case 0:u.sort((e,t)=>{let n=Math.min(...t.map(e=>e.right)),o=Math.min(...e.map(e=>e.right));return n*t.length-o*e.length});break;case 1:case 2:u.sort((e,t)=>{let n=Math.max(...t.map(e=>e.width));return Math.max(...e.map(e=>e.width))*e.length-n*t.length})}return u[0][0].top}}(t);self.postMessage({top:n,id:t.id})}},{}]},["59OZS"],"59OZS","parcelRequire4dc0");'},{}],lO8OT:[function(e,t,i){var a=e("@parcel/transformer-js/src/esmodule-helpers.js");a.defineInteropFlag(i);var n=e("bundle-text:./style.less"),o=a.interopDefault(n),s=e("bundle-text:./img/on.svg"),l=a.interopDefault(s),r=e("bundle-text:./img/off.svg"),d=a.interopDefault(r),p=e("bundle-text:./img/config.svg"),u=a.interopDefault(p),h=e("bundle-text:./img/style.svg"),m=a.interopDefault(h),c=e("bundle-text:./img/mode_0_off.svg"),f=a.interopDefault(c),g=e("bundle-text:./img/mode_0_on.svg"),v=a.interopDefault(g),y=e("bundle-text:./img/mode_1_off.svg"),x=a.interopDefault(y),k=e("bundle-text:./img/mode_1_on.svg"),b=a.interopDefault(k),$=e("bundle-text:./img/mode_2_off.svg"),w=a.interopDefault($),M=e("bundle-text:./img/mode_2_on.svg"),E=a.interopDefault(M),D=e("bundle-text:./img/check_on.svg"),S=a.interopDefault(D),z=e("bundle-text:./img/check_off.svg"),A=a.interopDefault(z);if(i.default=class{constructor(e,t){this.art=e,this.danmuku=t,this.utils=e.constructor.utils;let{setStyle:i}=this.utils,{$controlsCenter:a}=e.template;i(a,"display","flex"),this.template={$controlsCenter:a,$mount:a,$danmuku:null,$toggle:null,$configModes:null,$styleModes:null,$colors:null,$opacitySlider:null,$opacityValue:null,$marginSlider:null,$marginValue:null,$fontSizeSlider:null,$fontSizeValue:null,$speedSlider:null,$speedValue:null,$input:null,$send:null},this.slider={opacity:null,margin:null,fontSize:null,speed:null},this.emitting=!1,this.isLock=!1,this.timer=null,this.createTemplate(),this.createSliders(),this.createEvents(),this.mount(this.option.mount),e.on("fullscreen",e=>this.onFullscreen(e)),e.on("fullscreenWeb",e=>this.onFullscreen(e))}static get icons(){return{$on:l.default,$off:d.default,$config:u.default,$style:m.default,$mode_0_off:f.default,$mode_0_on:v.default,$mode_1_off:x.default,$mode_1_on:b.default,$mode_2_off:w.default,$mode_2_on:E.default,$check_on:S.default,$check_off:A.default}}get option(){return this.danmuku.option}get outside(){return this.template.$mount!==this.template.$controlsCenter}get TEMPLATE(){let{option:e}=this;return`
${l.default}${d.default}
${u.default}
\u{6309}\u{7C7B}\u{578B}\u{5C4F}\u{853D}
${f.default}${v.default}
\u{6EDA}\u{52A8}
${x.default}${b.default}
\u{9876}\u{90E8}
${w.default}${E.default}
\u{5E95}\u{90E8}
${S.default}${A.default} \u{9632}\u{6B62}\u{5F39}\u{5E55}\u{91CD}\u{53E0}
${S.default}${A.default} \u{540C}\u{6B65}\u{89C6}\u{9891}\u{901F}\u{5EA6}
\u{4E0D}\u{900F}\u{660E}\u{5EA6}
\u{672A}\u{77E5}
\u{663E}\u{793A}\u{533A}\u{57DF}
\u{672A}\u{77E5}
\u{5F39}\u{5E55}\u{5B57}\u{53F7}
\u{672A}\u{77E5}
\u{5F39}\u{5E55}\u{901F}\u{5EA6}
\u{672A}\u{77E5}
${m.default}
\u{6A21}\u{5F0F}
${v.default}
\u{6EDA}\u{52A8}
${b.default}
\u{9876}\u{90E8}
${E.default}
\u{5E95}\u{90E8}
\u{989C}\u{8272}
${this.COLOR.map(e=>`
`).join("")}
\u{53D1}\u{9001}
`}get OPACITY(){return{min:0,max:100,steps:[],...this.option.OPACITY}}get FONT_SIZE(){return{min:12,max:120,steps:[],...this.option.FONT_SIZE}}get MARGIN(){return{min:0,max:3,steps:[{name:"1/4",value:[10,"75%"]},{name:"半屏",value:[10,"50%"]},{name:"3/4",value:[10,"25%"]},{name:"满屏",value:[10,10]}],...this.option.MARGIN}}get SPEED(){return{min:0,max:4,steps:[{name:"极慢",value:10},{name:"较慢",value:7.5,hide:!0},{name:"适中",value:5},{name:"较快",value:2.5,hide:!0},{name:"极快",value:1}],...this.option.SPEED}}get COLOR(){return this.option.COLOR.length?this.option.COLOR:["#FE0302","#FF7204","#FFAA02","#FFD302","#FFFF00","#A0EE00","#00CD00","#019899","#4266BE","#89D5FF","#CC0273","#222222","#9B9B9B","#FFFFFF"]}query(e){let{query:t}=this.utils,{$danmuku:i}=this.template;return t(e,i)}setData(e,t){let{$player:i}=this.art.template,{$mount:a}=this.template;i.dataset[e]=t,this.outside&&(a.dataset[e]=t)}createTemplate(){let{createElement:e,tooltip:t}=this.utils,i=e("div");i.className="artplayer-plugin-danmuku",i.innerHTML=this.TEMPLATE,this.template.$danmuku=i,this.template.$toggle=this.query(".apd-toggle"),this.template.$configModes=this.query(".apd-config-mode .apd-modes"),this.template.$styleModes=this.query(".apd-style-mode .apd-modes"),this.template.$colors=this.query(".apd-colors"),this.template.$antiOverlap=this.query(".apd-anti-overlap"),this.template.$syncVideo=this.query(".apd-sync-video"),this.template.$opacitySlider=this.query(".apd-config-opacity .apd-slider"),this.template.$opacityValue=this.query(".apd-config-opacity .apd-value"),this.template.$marginSlider=this.query(".apd-config-margin .apd-slider"),this.template.$marginValue=this.query(".apd-config-margin .apd-value"),this.template.$fontSizeSlider=this.query(".apd-config-fontSize .apd-slider"),this.template.$fontSizeValue=this.query(".apd-config-fontSize .apd-value"),this.template.$speedSlider=this.query(".apd-config-speed .apd-slider"),this.template.$speedValue=this.query(".apd-config-speed .apd-value"),this.template.$input=this.query(".apd-input"),this.template.$send=this.query(".apd-send");let{$toggle:a}=this.template;this.art.on("artplayerPluginDanmuku:show",()=>{t(a,"关闭弹幕")}),this.art.on("artplayerPluginDanmuku:hide",()=>{t(a,"打开弹幕")})}createEvents(){let{$toggle:e,$configModes:t,$styleModes:i,$colors:a,$antiOverlap:n,$syncVideo:o,$send:s,$input:l}=this.template;this.art.proxy(e,"click",()=>{this.danmuku.config({visible:!this.option.visible}),this.reset()}),this.art.proxy(t,"click",e=>{let t=e.target.closest(".apd-mode");if(!t)return;let i=Number(t.dataset.mode);this.option.modes.includes(i)?this.danmuku.config({modes:this.option.modes.filter(e=>e!==i)}):this.danmuku.config({modes:[...this.option.modes,i]}),this.reset()}),this.art.proxy(n,"click",()=>{this.danmuku.config({antiOverlap:!this.option.antiOverlap}),this.reset()}),this.art.proxy(o,"click",()=>{this.danmuku.config({synchronousPlayback:!this.option.synchronousPlayback}),this.reset()}),this.art.proxy(i,"click",e=>{let t=e.target.closest(".apd-mode");if(!t)return;let i=Number(t.dataset.mode);this.danmuku.config({mode:i}),this.reset()}),this.art.proxy(a,"click",e=>{let t=e.target.closest(".apd-color");t&&(this.danmuku.config({color:t.dataset.color}),this.reset())}),this.art.proxy(s,"click",()=>this.emit()),this.art.proxy(l,"keypress",e=>{"Enter"===e.key&&(e.preventDefault(),this.emit())})}createSliders(){this.slider.opacity=this.createSlider({...this.OPACITY,container:this.template.$opacitySlider,findIndex:()=>Math.round(100*this.option.opacity),onChange:e=>{let{$opacityValue:t}=this.template;t.textContent=`${e}%`,this.danmuku.config({opacity:e/100})}}),this.slider.margin=this.createSlider({...this.MARGIN,container:this.template.$marginSlider,findIndex:()=>this.MARGIN.steps.findIndex(e=>e.value[0]===this.option.margin[0]&&e.value[1]===this.option.margin[1]),onChange:e=>{let t=this.MARGIN.steps[e];if(!t)return;let{$marginValue:i}=this.template;i.textContent=t.name,this.danmuku.config({margin:t.value})}}),this.slider.fontSize=this.createSlider({...this.FONT_SIZE,container:this.template.$fontSizeSlider,findIndex:()=>Math.round(this.danmuku.fontSize),onChange:e=>{let{$fontSizeValue:t}=this.template;t.textContent=`${e}px`,this.danmuku.config({fontSize:e})}}),this.slider.speed=this.createSlider({...this.SPEED,container:this.template.$speedSlider,findIndex:()=>this.SPEED.steps.findIndex(e=>e.value===this.option.speed),onChange:e=>{let t=this.SPEED.steps[e];if(!t)return;let{$speedValue:i}=this.template;i.textContent=t.name,this.danmuku.config({speed:t.value})}})}createSlider({min:e,max:t,container:i,findIndex:a,onChange:n,steps:o=[]}){let{query:s,clamp:l}=this.utils;i.innerHTML=`
${o.map(()=>'
').join("")}
${o.map(e=>e.hide?"":`
${e.name}
`).join("")}
`;let r=s(".apd-slider-dot",i),d=s(".apd-slider-progress",i),p=!1;function u(i=a()){if(it)return;let s=(i-e)/(t-e);r.style.left=`${100*s}%`,0===o.length&&(d.style.width=r.style.left),n(i)}function h(a){let{left:n,width:o}=i.getBoundingClientRect();u(Math.round(l(a.clientX-n,0,o)/o*(t-e)+e))}return this.art.proxy(i,"click",e=>{h(e)}),this.art.proxy(i,"mousedown",e=>{p=0===e.button}),this.art.on("document:mousemove",e=>{p&&h(e)}),this.art.on("document:mouseup",e=>{p&&(p=!1,h(e))}),{reset:u}}onFullscreen(e){if(this.outside){let{$danmuku:t,$controlsCenter:i,$mount:a}=this.template;e?i.appendChild(t):a.appendChild(t)}}async emit(){let{$input:e}=this.template,t=e.value.trim();if(!t.length||this.isLock||this.emitting)return;let i={text:t,mode:this.option.mode,color:this.option.color,time:this.art.currentTime};try{this.emitting=!0;let t=await this.option.beforeEmit(i);if(this.emitting=!1,!0!==t)return;i.border=!0,delete i.time,this.danmuku.emit(i),e.value="",this.lock()}catch(e){this.emitting=!1}}lock(){let{addClass:e}=this.utils,{$send:t}=this.template;this.isLock=!0;let i=this.option.lockTime;t.innerText=i,e(t,"apd-lock");let a=()=>{this.timer=setTimeout(()=>{0===i?this.unlock():(i-=1,t.innerText=i,a())},1e3)};a()}unlock(){let{removeClass:e}=this.utils,{$send:t}=this.template;clearTimeout(this.timer),this.isLock=!1,t.innerText="发送",e(t,"apd-lock")}reset(){let{inverseClass:e,tooltip:t}=this.utils,{$toggle:i,$colors:a}=this.template;this.slider.opacity.reset(),this.slider.margin.reset(),this.slider.fontSize.reset(),this.slider.speed.reset(),this.setData("danmukuVisible",this.option.visible),this.setData("danmukuMode",this.option.mode),this.setData("danmukuColor",this.option.color),this.setData("danmukuMode0",this.option.modes.includes(0)),this.setData("danmukuMode1",this.option.modes.includes(1)),this.setData("danmukuMode2",this.option.modes.includes(2)),this.setData("danmukuAntiOverlap",this.option.antiOverlap),this.setData("danmukuSyncVideo",this.option.synchronousPlayback),this.setData("danmukuTheme",this.option.theme),this.setData("danmukuEmitter",this.option.emitter);let n=Array.from(a.children).find(e=>e.dataset.color===this.option.color.toUpperCase());n&&e(n,"apd-active"),t(i,this.option.visible?"关闭弹幕":"打开弹幕")}mount(e){let t="string"==typeof e?document.querySelector(e):e;t.appendChild(this.template.$danmuku),this.template.$mount=t,this.reset()}},"undefined"!=typeof document){let e="artplayer-plugin-danmuku",t=document.getElementById(e);if(t)t.textContent=o.default;else{let t=document.createElement("style");t.id=e,t.textContent=o.default,document.head.appendChild(t)}}},{"bundle-text:./style.less":"hViDo","bundle-text:./img/on.svg":"9pjcf","bundle-text:./img/off.svg":"b2dkP","bundle-text:./img/config.svg":"l8tyy","bundle-text:./img/style.svg":"5iZC3","bundle-text:./img/mode_0_off.svg":"i0Vut","bundle-text:./img/mode_0_on.svg":"hOSvZ","bundle-text:./img/mode_1_off.svg":"bOXC3","bundle-text:./img/mode_1_on.svg":"lKuh0","bundle-text:./img/mode_2_off.svg":"eB8W6","bundle-text:./img/mode_2_on.svg":"bpe2E","bundle-text:./img/check_on.svg":"kL9zy","bundle-text:./img/check_off.svg":"22xpM","@parcel/transformer-js/src/esmodule-helpers.js":"9pCYc"}],hViDo:[function(e,t,i){t.exports='.artplayer-plugin-danmuku{z-index:99;color:#fff;flex-shrink:0;justify-content:center;align-items:center;gap:10px;width:100%;height:32px;font-size:12px;font-weight:300;display:flex;position:relative}.artplayer-plugin-danmuku .apd-icon{cursor:pointer;opacity:.75;fill:#fff;transition:all .2s}.artplayer-plugin-danmuku .apd-icon:hover{opacity:1}.artplayer-plugin-danmuku .apd-config{display:flex;position:relative}.artplayer-plugin-danmuku .apd-config .apd-config-panel{width:320px;padding:10px;display:none;position:absolute;bottom:24px;left:-148px}.artplayer-plugin-danmuku .apd-config .apd-config-panel .apd-config-panel-inner{background-color:#000000d9;border-radius:3px;width:100%;padding:10px}.artplayer-plugin-danmuku .apd-config:hover .apd-config-panel{display:flex}.artplayer-plugin-danmuku .apd-config-mode,.artplayer-plugin-danmuku .apd-config-slider,.artplayer-plugin-danmuku .apd-config-other,.artplayer-plugin-danmuku .apd-style-mode{margin-bottom:15px}.artplayer-plugin-danmuku .apd-modes{align-items:center;gap:20px;margin-top:5px;display:flex}.artplayer-plugin-danmuku .apd-modes .apd-mode{cursor:pointer;text-align:center}.artplayer-plugin-danmuku .apd-modes .apd-mode:hover{color:#00a1d6}.artplayer-plugin-danmuku .apd-config-slider{align-items:center;gap:12px;display:flex}.artplayer-plugin-danmuku .apd-config-slider .apd-value{text-align:right;width:32px}.artplayer-plugin-danmuku .apd-slider{cursor:pointer;flex:1;justify-content:center;align-items:center;height:20px;display:flex;position:relative}.artplayer-plugin-danmuku .apd-slider .apd-slider-line{background-color:#ffffff40;border-radius:3px;width:100%;height:2px;position:relative;overflow:hidden}.artplayer-plugin-danmuku .apd-slider .apd-slider-points{justify-content:space-between;align-items:center;display:flex;position:absolute;inset:0}.artplayer-plugin-danmuku .apd-slider .apd-slider-points .apd-slider-point{background-color:#ffffff80;border-radius:50%;width:2px;height:2px}.artplayer-plugin-danmuku .apd-slider .apd-slider-progress{background-color:#00a1d6;width:0%;height:100%}.artplayer-plugin-danmuku .apd-slider .apd-slider-dot{background-color:#00a1d6;border-radius:50%;width:12px;height:12px;position:absolute;left:0%;transform:translate(-6px)}.artplayer-plugin-danmuku .apd-slider .apd-slider-steps{color:#777;justify-content:space-between;align-items:center;width:calc(100% + 32px);display:flex;position:absolute;bottom:-12px}.artplayer-plugin-danmuku .apd-slider .apd-slider-steps .apd-slider-step{text-align:center;flex-shrink:0;width:36px;scale:.95}.artplayer-plugin-danmuku .apd-config-other{align-items:center;gap:20px;display:flex}.artplayer-plugin-danmuku .apd-config-other .apd-check-off,.artplayer-plugin-danmuku .apd-config-other .apd-check-on{width:16px;height:16px}.artplayer-plugin-danmuku .apd-config-other .apd-other{cursor:pointer;align-items:center;gap:2px;display:flex}.artplayer-plugin-danmuku .apd-config-other .apd-other:hover{color:#00a1d6}.artplayer-plugin-danmuku .apd-emitter{background-color:#ffffff40;border-radius:5px;flex:1;align-items:center;height:100%;display:flex}.artplayer-plugin-danmuku .apd-style{justify-content:center;align-items:center;display:flex;position:relative}.artplayer-plugin-danmuku .apd-style .apd-style-panel{width:200px;padding:10px;display:none;position:absolute;bottom:24px;left:-88px}.artplayer-plugin-danmuku .apd-style .apd-style-panel .apd-style-panel-inner{background-color:#000000d9;border-radius:3px;width:100%;padding:10px}.artplayer-plugin-danmuku .apd-style:hover .apd-style-panel{display:flex}.artplayer-plugin-danmuku .apd-colors{flex-wrap:wrap;gap:8px;margin-top:5px;display:flex}.artplayer-plugin-danmuku .apd-colors .apd-color{cursor:pointer;border-radius:2px;width:16px;height:16px}.artplayer-plugin-danmuku .apd-colors .apd-color.apd-active{border:1px solid #000;box-shadow:0 0 0 1px #fff}.artplayer-plugin-danmuku .apd-input{color:#fff;background-color:#0000;border:none;outline:none;flex:1;width:auto;min-width:0;height:100%;line-height:1}.artplayer-plugin-danmuku .apd-input::placeholder{color:#ffffff80}.artplayer-plugin-danmuku .apd-send{cursor:pointer;text-shadow:none;background-color:#00a1d6;border-top-right-radius:5px;border-bottom-right-radius:5px;flex-shrink:0;justify-content:center;align-items:center;width:60px;height:100%;display:flex}.artplayer-plugin-danmuku .apd-send.apd-lock{cursor:not-allowed;color:#666;background-color:#e7e7e7}.art-controls-center .apd-emitter{flex:none;width:260px}.art-fullscreen .artplayer-plugin-danmuku,.art-fullscreen-web .artplayer-plugin-danmuku{gap:16px;height:38px}.art-fullscreen .artplayer-plugin-danmuku .apd-config-icon,.art-fullscreen-web .artplayer-plugin-danmuku .apd-config-icon,.art-fullscreen .artplayer-plugin-danmuku .apd-toggle-off,.art-fullscreen-web .artplayer-plugin-danmuku .apd-toggle-off,.art-fullscreen .artplayer-plugin-danmuku .apd-toggle-on,.art-fullscreen-web .artplayer-plugin-danmuku .apd-toggle-on{width:28px;height:28px}.art-fullscreen .artplayer-plugin-danmuku .apd-emitter,.art-fullscreen-web .artplayer-plugin-danmuku .apd-emitter{flex:none;width:400px}[data-danmuku-emitter=false] .apd-emitter{display:none!important}[data-danmuku-emitter=false] .art-controls-center .artplayer-plugin-danmuku{justify-content:flex-end;gap:18px}[data-danmuku-emitter=false].art-fullscreen .art-controls-center .artplayer-plugin-danmuku,[data-danmuku-emitter=false].art-fullscreen-web .art-controls-center .artplayer-plugin-danmuku{gap:24px}[data-danmuku-theme=light]>.artplayer-plugin-danmuku .apd-icon{fill:#333}[data-danmuku-theme=light]>.artplayer-plugin-danmuku .apd-emitter{background-color:#f1f2f3}[data-danmuku-theme=light]>.artplayer-plugin-danmuku .apd-input{color:#000}[data-danmuku-theme=light]>.artplayer-plugin-danmuku .apd-input::placeholder{color:#0000004d}[data-danmuku-visible=false] .apd-toggle-off{display:block}[data-danmuku-visible=false] .apd-toggle-on,[data-danmuku-visible=true] .apd-toggle-off{display:none}[data-danmuku-visible=true] .apd-toggle-on{display:block}[data-danmuku-anti-overlap=false] .apd-anti-overlap .apd-check-on{display:none}[data-danmuku-anti-overlap=false] .apd-anti-overlap .apd-check-off,[data-danmuku-anti-overlap=true] .apd-anti-overlap .apd-check-on{display:block}[data-danmuku-anti-overlap=true] .apd-anti-overlap .apd-check-off,[data-danmuku-sync-video=false] .apd-sync-video .apd-check-on{display:none}[data-danmuku-sync-video=false] .apd-sync-video .apd-check-off,[data-danmuku-sync-video=true] .apd-sync-video .apd-check-on{display:block}[data-danmuku-sync-video=true] .apd-sync-video .apd-check-off{display:none}[data-danmuku-mode0=false] .apd-config-mode .apd-mode-0-off{display:block}[data-danmuku-mode0=false] .apd-config-mode .apd-mode-0-on{display:none}[data-danmuku-mode0=false] .art-danmuku [data-mode="0"]{opacity:0!important}[data-danmuku-mode0=true] .apd-config-mode .apd-mode-0-off{display:none}[data-danmuku-mode0=true] .apd-config-mode .apd-mode-0-on{display:block}[data-danmuku-mode="0"] .apd-style-mode [data-mode="0"]{color:#00a1d6}[data-danmuku-mode="0"] .apd-style-mode [data-mode="0"] path{fill:#00a1d6}[data-danmuku-mode1=false] .apd-config-mode .apd-mode-1-off{display:block}[data-danmuku-mode1=false] .apd-config-mode .apd-mode-1-on{display:none}[data-danmuku-mode1=false] .art-danmuku [data-mode="1"]{opacity:0!important}[data-danmuku-mode1=true] .apd-config-mode .apd-mode-1-off{display:none}[data-danmuku-mode1=true] .apd-config-mode .apd-mode-1-on{display:block}[data-danmuku-mode="1"] .apd-style-mode [data-mode="1"]{color:#00a1d6}[data-danmuku-mode="1"] .apd-style-mode [data-mode="1"] path{fill:#00a1d6}[data-danmuku-mode2=false] .apd-config-mode .apd-mode-2-off{display:block}[data-danmuku-mode2=false] .apd-config-mode .apd-mode-2-on{display:none}[data-danmuku-mode2=false] .art-danmuku [data-mode="2"]{opacity:0!important}[data-danmuku-mode2=true] .apd-config-mode .apd-mode-2-off{display:none}[data-danmuku-mode2=true] .apd-config-mode .apd-mode-2-on{display:block}[data-danmuku-mode="2"] .apd-style-mode [data-mode="2"]{color:#00a1d6}[data-danmuku-mode="2"] .apd-style-mode [data-mode="2"] path{fill:#00a1d6}'},{}],"9pjcf":[function(e,t,i){t.exports=''},{}],b2dkP:[function(e,t,i){t.exports=''},{}],l8tyy:[function(e,t,i){t.exports=''},{}],"5iZC3":[function(e,t,i){t.exports=''},{}],i0Vut:[function(e,t,i){t.exports=''},{}],hOSvZ:[function(e,t,i){t.exports=''},{}],bOXC3:[function(e,t,i){t.exports=''},{}],lKuh0:[function(e,t,i){t.exports=''},{}],eB8W6:[function(e,t,i){t.exports=''},{}],bpe2E:[function(e,t,i){t.exports=''},{}],kL9zy:[function(e,t,i){t.exports=''},{}],"22xpM":[function(e,t,i){t.exports=''},{}],"8AxLD":[function(e,t,i){var a=e("@parcel/transformer-js/src/esmodule-helpers.js");a.defineInteropFlag(i),a.export(i,"default",()=>s);let n={map:(e,t,i,a,n)=>(e-t)*(n-a)/(i-t)+a,range(e,t,i){let a=Math.round(e/i)*i;return Array.from({length:Math.floor((t-e)/i)},(e,t)=>t*i+a)}},o=(e,t)=>{let i=t[0]-e[0],a=t[1]-e[1];return{length:Math.sqrt(Math.pow(i,2)+Math.pow(a,2)),angle:Math.atan2(a,i)}};function s(e,t,i){let{query:a}=e.constructor.utils;e.controls.add({name:"heatmap",position:"top",html:"",style:{position:"absolute",top:"-100px",left:"0px",right:"0px",height:"100px",width:"100%",pointerEvents:"none"},mounted(s){let l=null,r=null;function d(d=[]){if(l=null,r=null,s.innerHTML="",!e.duration||e.option.isLive)return;let p={w:s.offsetWidth,h:s.offsetHeight},u={xMin:0,xMax:p.w,yMin:0,yMax:128,scale:.25,opacity:.2,minHeight:Math.floor(.05*p.h),sampling:Math.floor(p.w/100),smoothing:.2,flattening:.2};"object"==typeof i&&Object.assign(u,i);let h=[];if(Array.isArray(d)&&d.length)h=[...d];else{let i=e.duration/p.w;for(let e=0;e<=p.w;e+=u.sampling){let a=t.danmus.filter(({time:t})=>t>e*i&&t<=(e+u.sampling)*i).length;h.push([e,a])}}if(0===h.length)return;let m=h[h.length-1],c=m[0],f=m[1];c!==p.w&&h.push([p.w,f]);let g=h.map(e=>e[1]),v=(Math.min(...g)+Math.max(...g))/2;for(let e=0;ev?1+u.scale:1-u.scale)+u.minHeight}let y=(e,t,i,a)=>{let s=o(t||e,i||e),l=n.map(Math.cos(s.angle)*u.flattening,0,1,1,0),r=s.angle*l+(a?Math.PI:0),d=s.length*u.smoothing;return[e[0]+Math.cos(r)*d,e[1]+Math.sin(r)*d]},x=(e,t,i)=>{let a=y(i[t-1],i[t-2],e),n=y(e,i[t-1],i[t+1],!0),o=t===i.length-1?" z":"";return`C ${a[0]},${a[1]} ${n[0]},${n[1]} ${e[0]},${e[1]}${o}`},k=h.map(e=>[n.map(e[0],u.xMin,u.xMax,0,p.w),n.map(e[1],u.yMin,u.yMax,p.h,0)]).reduce((e,t,i,a)=>0===i?`M ${a[a.length-1][0]},${p.h} L ${t[0]},${p.h} L ${t[0]},${t[1]}`:`${e} ${x(t,i,a)}`,"");s.innerHTML=``,l=a("#heatmap-start",s),r=a("#heatmap-stop",s),l.setAttribute("offset",`${100*e.played}%`),r.setAttribute("offset",`${100*e.played}%`)}e.on("video:timeupdate",()=>{l&&r&&(l.setAttribute("offset",`${100*e.played}%`),r.setAttribute("offset",`${100*e.played}%`))}),e.on("setBar",(e,t)=>{l&&r&&"played"===e&&(l.setAttribute("offset",`${100*t}%`),r.setAttribute("offset",`${100*t}%`))}),e.on("ready",()=>d()),e.on("resize",()=>d()),e.on("artplayerPluginDanmuku:loaded",()=>d()),e.on("artplayerPluginDanmuku:points",e=>d(e))}})}},{"@parcel/transformer-js/src/esmodule-helpers.js":"9pCYc"}]},["bgm6t"],"bgm6t","parcelRequire4dc0"); \ No newline at end of file diff --git a/packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js b/packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js index f2c633d80..b9075558d 100644 --- a/packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js +++ b/packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.legacy.js @@ -5,4 +5,4 @@ * (c) 2017-2024 Harvey Zack * Released under the MIT License. */ -!function(e,t,r,n,a){var o="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},i="function"==typeof o[n]&&o[n],s=i.cache||{},l="undefined"!=typeof module&&"function"==typeof module.require&&module.require.bind(module);function u(t,r){if(!s[t]){if(!e[t]){var a="function"==typeof o[n]&&o[n];if(!r&&a)return a(t,!0);if(i)return i(t,!0);if(l&&"string"==typeof t)return l(t);var c=Error("Cannot find module '"+t+"'");throw c.code="MODULE_NOT_FOUND",c}d.resolve=function(r){var n=e[t][1][r];return null!=n?n:r},d.cache={};var p=s[t]=new u.Module(t);e[t][0].call(p.exports,d,p,p.exports,this)}return s[t].exports;function d(e){var t=d.resolve(e);return!1===t?{}:u(t)}}u.isParcelRequire=!0,u.Module=function(e){this.id=e,this.bundle=u,this.exports={}},u.modules=e,u.cache=s,u.parent=i,u.register=function(t,r){e[t]=[function(e,t){t.exports=r},{}]},Object.defineProperty(u,"root",{get:function(){return o[n]}}),o[n]=u;for(var c=0;c=r.time&&r.time>=e-.1&&t.push(r)}),t}},{key:"visibles",get:function(){var e=this,t=[],r=this.$player.clientWidth,n=this.getLeft(this.$player);return this.filter("emit",function(a){var o=a.$ref.offsetTop,i=e.getLeft(a.$ref)-n,s=a.$ref.clientHeight,l=a.$ref.clientWidth,u=i+l,c=u/a.$restTime,p={};p.top=o,p.left=i,p.height=s,p.width=l,p.right=r-u,p.speed=c,p.distance=u,p.time=a.$restTime,p.mode=a.mode,t.push(p)}),t}},{key:"speed",get:function(){return this.option.synchronousPlayback&&this.art.playbackRate?this.option.speed/Number(this.art.playbackRate):this.option.speed}},{key:"load",value:function(){var e=this;return(0,a._)(function(){var t,r;return(0,u._)(this,function(n){switch(n.label){case 0:t=e.utils.errorHandle,n.label=1;case 1:if(n.trys.push([1,9,,10]),"function"!=typeof e.option.danmuku)return[3,3];return[4,e.option.danmuku()];case 2:case 4:case 6:return e.danmus=n.sent(),[3,8];case 3:if("function"!=typeof e.option.danmuku.then)return[3,5];return[4,e.option.danmuku];case 5:if("string"!=typeof e.option.danmuku)return[3,7];return[4,(0,c.bilibiliDanmuParseFromUrl)(e.option.danmuku)];case 7:e.danmus=e.option.danmuku,n.label=8;case 8:return t(Array.isArray(e.danmus),"Danmuku need return an array as result"),e.queue=[],e.$danmuku.innerText="",e.danmus.forEach(function(t){return e.emit(t)}),e.art.emit("artplayerPluginDanmuku:loaded",e.queue),[3,10];case 9:throw r=n.sent(),e.art.emit("artplayerPluginDanmuku:error",r),r;case 10:return[2,e]}})})()}},{key:"emit",value:function(e){var t=this.utils.clamp;if(this.validator(e,{text:"string",mode:"?number",color:"?string",time:"?number",border:"?boolean",style:"?object"}),!e.text.trim()||(e.time?e.time=t(e.time,0,1/0):e.time=this.art.currentTime+.5,void 0===e.mode&&(e.mode=this.option.mode),void 0===e.style&&(e.style={}),void 0===e.color&&(e.color=this.option.color),![0,1,2].includes(e.mode)||!this.option.filter(e)))return this;var r=(0,l._)((0,s._)({},e),{$state:"wait",$id:this.index++,$ref:null,$restTime:0,$lastStartTime:0});return this.setState(r,"wait"),this.queue.push(r),this}},{key:"config",value:function(t){var r=this,n=this.utils.clamp,a=this.art.template.$controlsCenter;return Object.keys(t).some(function(e){return JSON.stringify(r.option[e])!==JSON.stringify(t[e])})&&(this.option=Object.assign({},e.option,this.option,t),this.validator(this.option,e.scheme),this.option.mode=n(this.option.mode,0,2),this.option.speed=n(this.option.speed,1,10),this.option.opacity=n(this.option.opacity,0,1),this.option.lockTime=n(this.option.lockTime,1,60),this.option.maxLength=n(this.option.maxLength,1,1e3),this.option.mount=this.option.mount||a,t.fontSize&&this.reset(),this.option.visible?this.show():this.hide(),this.art.emit("artplayerPluginDanmuku:config",this.option)),this}},{key:"getLeft",value:function(e){var t=e.getBoundingClientRect();return this.isRotate?t.top:t.left}},{key:"postMessage",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new Promise(function(r){t.id=Date.now(),e.worker.postMessage(t),e.worker.onmessage=function(e){var n=e.data;n.id===t.id&&r(n)}})}},{key:"filter",value:function(e,t){for(var r=this.states[e]||[],n=0;nt.indexOf(n)&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var a=0,n=Object.getOwnPropertySymbols(e);at.indexOf(n[a])&&Object.prototype.propertyIsEnumerable.call(e,n[a])&&(r[n[a]]=e[n[a]]);return r}function u(e,t,r,n){var a,o=arguments.length,i=o<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(a=e[s])&&(i=(o<3?a(i):o>3?a(t,r,i):a(t,r))||i);return o>3&&i&&Object.defineProperty(t,r,i),i}function c(e,t){return function(r,n){t(r,n,e)}}function p(e,t,r,n,a,o){function i(e){if(void 0!==e&&"function"!=typeof e)throw TypeError("Function expected");return e}for(var s,l=n.kind,u="getter"===l?"get":"setter"===l?"set":"value",c=!t&&e?n.static?e:e.prototype:null,p=t||(c?Object.getOwnPropertyDescriptor(c,n.name):{}),d=!1,f=r.length-1;f>=0;f--){var h={};for(var m in n)h[m]="access"===m?{}:n[m];for(var m in n.access)h.access[m]=n.access[m];h.addInitializer=function(e){if(d)throw TypeError("Cannot add initializers after decoration has completed");o.push(i(e||null))};var y=(0,r[f])("accessor"===l?{get:p.get,set:p.set}:p[u],h);if("accessor"===l){if(void 0===y)continue;if(null===y||"object"!=typeof y)throw TypeError("Object expected");(s=i(y.get))&&(p.get=s),(s=i(y.set))&&(p.set=s),(s=i(y.init))&&a.unshift(s)}else(s=i(y))&&("field"===l?a.unshift(s):p[u]=s)}c&&Object.defineProperty(c,n.name,p),d=!0}function d(e,t,r){for(var n=arguments.length>2,a=0;a0&&a[a.length-1])&&(6===s[0]||2===s[0])){i=0;continue}if(3===s[0]&&(!a||s[1]>a[0]&&s[1]=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function x(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,a,o=r.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i}function k(){for(var e=[],t=0;t1||s(e,t)})})}function s(e,t){try{var r;(r=a[e](t)).value instanceof $?Promise.resolve(r.value.v).then(l,u):c(o[0][2],r)}catch(e){c(o[0][3],e)}}function l(e){s("next",e)}function u(e){s("throw",e)}function c(e,t){e(t),o.shift(),o.length&&s(o[0][0],o[0][1])}}function S(e){var t,r;return t={},n("next"),n("throw",function(e){throw e}),n("return"),t[Symbol.iterator]=function(){return this},t;function n(n,a){t[n]=e[n]?function(t){return(r=!r)?{value:$(e[n](t)),done:!1}:a?a(t):t}:a}}function D(e){if(!Symbol.asyncIterator)throw TypeError("Symbol.asyncIterator is not defined.");var t,r=e[Symbol.asyncIterator];return r?r.call(e):(e=b(e),t={},n("next"),n("throw"),n("return"),t[Symbol.asyncIterator]=function(){return this},t);function n(r){t[r]=e[r]&&function(t){return new Promise(function(n,a){!function(e,t,r,n){Promise.resolve(n).then(function(t){e({value:t,done:r})},t)}(n,a,(t=e[r](t)).done,t.value)})}}}function M(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e}var F=Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t};function P(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&v(t,e,r);return F(t,e),t}function E(e){return e&&e.__esModule?e:{default:e}}function T(e,t,r,n){if("a"===r&&!n)throw TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!n:!t.has(e))throw TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(e):n?n.value:t.get(e)}function A(e,t,r,n,a){if("m"===n)throw TypeError("Private method is not writable");if("a"===n&&!a)throw TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!a:!t.has(e))throw TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?a.call(e,r):a?a.value=r:t.set(e,r),r}function I(e,t){if(null===t||"object"!=typeof t&&"function"!=typeof t)throw TypeError("Cannot use 'in' operator on non-object");return"function"==typeof e?t===e:e.has(t)}function z(e,t,r){if(null!=t){var n;if("object"!=typeof t&&"function"!=typeof t)throw TypeError("Object expected.");if(r){if(!Symbol.asyncDispose)throw TypeError("Symbol.asyncDispose is not defined.");n=t[Symbol.asyncDispose]}if(void 0===n){if(!Symbol.dispose)throw TypeError("Symbol.dispose is not defined.");n=t[Symbol.dispose]}if("function"!=typeof n)throw TypeError("Object not disposable.");e.stack.push({value:t,dispose:n,async:r})}else r&&e.stack.push({async:!0});return t}var C="function"==typeof SuppressedError?SuppressedError:function(e,t,r){var n=Error(r);return n.name="SuppressedError",n.error=e,n.suppressed=t,n};function L(e){function t(t){e.error=e.hasError?new C(t,e.error,"An error was suppressed during disposal."):t,e.hasError=!0}return function r(){for(;e.stack.length;){var n=e.stack.pop();try{var a=n.dispose&&n.dispose.call(n.value);if(n.async)return Promise.resolve(a).then(r,function(e){return t(e),r()})}catch(e){t(e)}}if(e.hasError)throw e.error}()}r.default={__extends:i,__assign:s,__rest:l,__decorate:u,__param:c,__metadata:m,__awaiter:y,__generator:g,__createBinding:v,__exportStar:_,__values:b,__read:x,__spread:k,__spreadArrays:w,__spreadArray:j,__await:$,__asyncGenerator:O,__asyncDelegator:S,__asyncValues:D,__makeTemplateObject:M,__importStar:P,__importDefault:E,__classPrivateFieldGet:T,__classPrivateFieldSet:A,__classPrivateFieldIn:I,__addDisposableResource:z,__disposeResources:L}},{"@swc/helpers/_/_type_of":"felZi","@parcel/transformer-js/src/esmodule-helpers.js":"iWrD0"}],felZi:[function(e,t,r){var n=e("@parcel/transformer-js/src/esmodule-helpers.js");function a(e){return e&&"undefined"!=typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}n.defineInteropFlag(r),n.export(r,"_type_of",function(){return a}),n.export(r,"_",function(){return a})},{"@parcel/transformer-js/src/esmodule-helpers.js":"iWrD0"}],kMsXR:[function(e,t,r){var n=e("@parcel/transformer-js/src/esmodule-helpers.js");n.defineInteropFlag(r),n.export(r,"getMode",function(){return i}),n.export(r,"bilibiliDanmuParseFromXml",function(){return s}),n.export(r,"bilibiliDanmuParseFromUrl",function(){return l});var a=e("@swc/helpers/_/_async_to_generator"),o=e("@swc/helpers/_/_ts_generator");function i(e){switch(e){case 1:case 2:case 3:default:return 0;case 4:return 2;case 5:return 1}}function s(e){return"string"!=typeof e?[]:Array.from(e.matchAll(RegExp('(?.+?)<\\/d>',"gs"))).map(function(e){var t=e.groups.p.split(",");return t.length>=8?{text:e.groups.text.trim().replaceAll(""",'"').replaceAll("'","'").replaceAll("<","<").replaceAll(">",">").replaceAll("&","&"),time:Number(t[0]),mode:i(Number(t[1])),fontSize:Number(t[2]),color:"#".concat(Number(t[3]).toString(16)),timestamp:Number(t[4]),pool:Number(t[5]),userID:t[6],rowID:Number(t[7])}:null}).filter(Boolean)}function l(e){return u.apply(this,arguments)}function u(){return(u=(0,a._)(function(e){return(0,o._)(this,function(t){switch(t.label){case 0:return[4,fetch(e)];case 1:return[4,t.sent().text()];case 2:return[2,s(t.sent())]}})})).apply(this,arguments)}},{"@swc/helpers/_/_async_to_generator":"eONSn","@swc/helpers/_/_ts_generator":"6Xyd0","@parcel/transformer-js/src/esmodule-helpers.js":"iWrD0"}],"1gMd5":[function(e,t,r){t.exports='!function(e,r,t,n,o){var a="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},i="function"==typeof a[n]&&a[n],s=i.cache||{},u="undefined"!=typeof module&&"function"==typeof module.require&&module.require.bind(module);function l(r,t){if(!s[r]){if(!e[r]){var o="function"==typeof a[n]&&a[n];if(!t&&o)return o(r,!0);if(i)return i(r,!0);if(u&&"string"==typeof r)return u(r);var f=Error("Cannot find module \'"+r+"\'");throw f.code="MODULE_NOT_FOUND",f}c.resolve=function(t){var n=e[r][1][t];return null!=n?n:t},c.cache={};var p=s[r]=new l.Module(r);e[r][0].call(p.exports,c,p,p.exports,this)}return s[r].exports;function c(e){var r=c.resolve(e);return!1===r?{}:l(r)}}l.isParcelRequire=!0,l.Module=function(e){this.id=e,this.bundle=l,this.exports={}},l.modules=e,l.cache=s,l.parent=i,l.register=function(r,t){e[r]=[function(e,r){r.exports=t},{}]},Object.defineProperty(l,"root",{get:function(){return a[n]}}),a[n]=l;for(var f=0;f=0;p-=1){var c=f[p],_=f[p+1],d=c.top+c.height;if(_.top-d>=r.height)return _.top-r.height}else for(var h=1;h=r.height)return g}for(var j=[],b=1;be.time)})});return w&&w[0]?w[0].top:void 0;case 1:case 2:return}else{switch(r.mode){case 0:j.sort(function(e,r){var t,o,a=(t=Math).min.apply(t,(0,n._)(r.map(function(e){return e.right}))),i=(o=Math).min.apply(o,(0,n._)(e.map(function(e){return e.right})));return a*r.length-i*e.length});break;case 1:case 2:j.sort(function(e,r){var t,o,a=(t=Math).max.apply(t,(0,n._)(r.map(function(e){return e.width})));return(o=Math).max.apply(o,(0,n._)(e.map(function(e){return e.width})))*e.length-a*r.length})}return j[0][0].top}}(r);self.postMessage({top:t,id:r.id})}}},{"@swc/helpers/_/_to_consumable_array":"iwLF0"}],iwLF0:[function(e,r,t){var n=e("@parcel/transformer-js/src/esmodule-helpers.js");n.defineInteropFlag(t),n.export(t,"_to_consumable_array",function(){return u}),n.export(t,"_",function(){return u});var o=e("./_array_without_holes.js"),a=e("./_iterable_to_array.js"),i=e("./_non_iterable_spread.js"),s=e("./_unsupported_iterable_to_array.js");function u(e){return(0,o._array_without_holes)(e)||(0,a._iterable_to_array)(e)||(0,s._unsupported_iterable_to_array)(e)||(0,i._non_iterable_spread)()}},{"./_array_without_holes.js":"cuL6A","./_iterable_to_array.js":"2thrs","./_non_iterable_spread.js":"a8nO2","./_unsupported_iterable_to_array.js":"5m31D","@parcel/transformer-js/src/esmodule-helpers.js":"iWrD0"}],cuL6A:[function(e,r,t){var n=e("@parcel/transformer-js/src/esmodule-helpers.js");n.defineInteropFlag(t),n.export(t,"_array_without_holes",function(){return a}),n.export(t,"_",function(){return a});var o=e("./_array_like_to_array.js");function a(e){if(Array.isArray(e))return(0,o._array_like_to_array)(e)}},{"./_array_like_to_array.js":"djwRR","@parcel/transformer-js/src/esmodule-helpers.js":"iWrD0"}],djwRR:[function(e,r,t){var n=e("@parcel/transformer-js/src/esmodule-helpers.js");function o(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=Array(r);t\n '.concat(h.default).concat(y.default,'\n\n
\n ').concat(v.default,'\n
\n
\n
\n 按类型屏蔽\n
\n
\n ').concat(k.default).concat(j.default,'\n
滚动
\n
\n
\n ').concat(O.default).concat(D.default,'\n
顶部
\n
\n
\n ').concat(F.default).concat(E.default,'\n
底部
\n
\n
\n
\n
\n
\n ').concat(A.default).concat(z.default,'\n 防止弹幕重叠\n
\n
\n ').concat(A.default).concat(z.default,'\n 同步视频速度\n
\n
\n
\n 不透明度\n
\n
未知
\n
\n
\n 显示区域\n
\n
未知
\n
\n
\n 弹幕字号\n
\n
未知
\n
\n
\n 弹幕速度\n
\n
未知
\n
\n
\n
\n
\n
\n
\n ').concat(b.default,'\n
\n
\n
\n 模式\n
\n
\n ').concat(j.default,'\n
滚动
\n
\n
\n ').concat(D.default,'\n
顶部
\n
\n
\n ').concat(E.default,'\n
底部
\n
\n
\n
\n
\n 颜色\n
\n ').concat(this.COLOR.map(function(e){return'
')}).join(""),'\n
\n
\n
\n
\n
\n\n
发送
\n
\n ')}},{key:"OPACITY",get:function(){return(0,s._)({min:0,max:100,steps:[]},this.option.OPACITY)}},{key:"FONT_SIZE",get:function(){return(0,s._)({min:12,max:120,steps:[]},this.option.FONT_SIZE)}},{key:"MARGIN",get:function(){return(0,s._)({min:0,max:3,steps:[{name:"1/4",value:[10,"75%"]},{name:"半屏",value:[10,"50%"]},{name:"3/4",value:[10,"25%"]},{name:"满屏",value:[10,10]}]},this.option.MARGIN)}},{key:"SPEED",get:function(){return(0,s._)({min:0,max:4,steps:[{name:"极慢",value:10},{name:"较慢",value:7.5,hide:!0},{name:"适中",value:5},{name:"较快",value:2.5,hide:!0},{name:"极快",value:1}]},this.option.SPEED)}},{key:"COLOR",get:function(){return this.option.COLOR.length?this.option.COLOR:["#FE0302","#FF7204","#FFAA02","#FFD302","#FFFF00","#A0EE00","#00CD00","#019899","#4266BE","#89D5FF","#CC0273","#222222","#9B9B9B","#FFFFFF"]}},{key:"query",value:function(e){return(0,this.utils.query)(e,this.template.$danmuku)}},{key:"setData",value:function(e,t){var r=this.art.template.$player,n=this.template.$mount;r.dataset[e]=t,this.outside&&(n.dataset[e]=t)}},{key:"createTemplate",value:function(){var e=this.utils,t=e.createElement,r=e.tooltip,n=t("div");n.className="artplayer-plugin-danmuku",n.innerHTML=this.TEMPLATE,this.template.$danmuku=n,this.template.$toggle=this.query(".apd-toggle"),this.template.$configModes=this.query(".apd-config-mode .apd-modes"),this.template.$styleModes=this.query(".apd-style-mode .apd-modes"),this.template.$colors=this.query(".apd-colors"),this.template.$antiOverlap=this.query(".apd-anti-overlap"),this.template.$syncVideo=this.query(".apd-sync-video"),this.template.$opacitySlider=this.query(".apd-config-opacity .apd-slider"),this.template.$opacityValue=this.query(".apd-config-opacity .apd-value"),this.template.$marginSlider=this.query(".apd-config-margin .apd-slider"),this.template.$marginValue=this.query(".apd-config-margin .apd-value"),this.template.$fontSizeSlider=this.query(".apd-config-fontSize .apd-slider"),this.template.$fontSizeValue=this.query(".apd-config-fontSize .apd-value"),this.template.$speedSlider=this.query(".apd-config-speed .apd-slider"),this.template.$speedValue=this.query(".apd-config-speed .apd-value"),this.template.$input=this.query(".apd-input"),this.template.$send=this.query(".apd-send");var a=this.template.$toggle;this.art.on("artplayerPluginDanmuku:show",function(){r(a,"关闭弹幕")}),this.art.on("artplayerPluginDanmuku:hide",function(){r(a,"打开弹幕")})}},{key:"createEvents",value:function(){var e=this,t=this.template,r=t.$toggle,n=t.$configModes,a=t.$styleModes,o=t.$colors,i=t.$antiOverlap,s=t.$syncVideo,l=t.$send,c=t.$input;this.art.proxy(r,"click",function(){e.danmuku.config({visible:!e.option.visible}),e.reset()}),this.art.proxy(n,"click",function(t){var r=t.target.closest(".apd-mode");if(r){var n=Number(r.dataset.mode);e.option.modes.includes(n)?e.danmuku.config({modes:e.option.modes.filter(function(e){return e!==n})}):e.danmuku.config({modes:(0,u._)(e.option.modes).concat([n])}),e.reset()}}),this.art.proxy(i,"click",function(){e.danmuku.config({antiOverlap:!e.option.antiOverlap}),e.reset()}),this.art.proxy(s,"click",function(){e.danmuku.config({synchronousPlayback:!e.option.synchronousPlayback}),e.reset()}),this.art.proxy(a,"click",function(t){var r=t.target.closest(".apd-mode");if(r){var n=Number(r.dataset.mode);e.danmuku.config({mode:n}),e.reset()}}),this.art.proxy(o,"click",function(t){var r=t.target.closest(".apd-color");r&&(e.danmuku.config({color:r.dataset.color}),e.reset())}),this.art.proxy(l,"click",function(){return e.emit()}),this.art.proxy(c,"keypress",function(t){"Enter"===t.key&&(t.preventDefault(),e.emit())})}},{key:"createSliders",value:function(){var e=this;this.slider.opacity=this.createSlider((0,l._)((0,s._)({},this.OPACITY),{container:this.template.$opacitySlider,findIndex:function(){return Math.round(100*e.option.opacity)},onChange:function(t){e.template.$opacityValue.textContent="".concat(t,"%"),e.danmuku.config({opacity:t/100})}})),this.slider.margin=this.createSlider((0,l._)((0,s._)({},this.MARGIN),{container:this.template.$marginSlider,findIndex:function(){return e.MARGIN.steps.findIndex(function(t){return t.value[0]===e.option.margin[0]&&t.value[1]===e.option.margin[1]})},onChange:function(t){var r=e.MARGIN.steps[t];r&&(e.template.$marginValue.textContent=r.name,e.danmuku.config({margin:r.value}))}})),this.slider.fontSize=this.createSlider((0,l._)((0,s._)({},this.FONT_SIZE),{container:this.template.$fontSizeSlider,findIndex:function(){return Math.round(e.danmuku.fontSize)},onChange:function(t){e.template.$fontSizeValue.textContent="".concat(t,"px"),e.danmuku.config({fontSize:t})}})),this.slider.speed=this.createSlider((0,l._)((0,s._)({},this.SPEED),{container:this.template.$speedSlider,findIndex:function(){return e.SPEED.steps.findIndex(function(t){return t.value===e.option.speed})},onChange:function(t){var r=e.SPEED.steps[t];r&&(e.template.$speedValue.textContent=r.name,e.danmuku.config({speed:r.value}))}}))}},{key:"createSlider",value:function(e){var t=e.min,r=e.max,n=e.container,a=e.findIndex,o=e.onChange,i=e.steps,s=void 0===i?[]:i,l=this.utils,u=l.query,c=l.clamp;n.innerHTML='\n
\n
\n '.concat(s.map(function(){return'
'}).join(""),'\n
\n
\n
\n
\n
\n ').concat(s.map(function(e){return e.hide?"":'
'.concat(e.name,"
")}).join(""),"\n
\n ");var p=u(".apd-slider-dot",n),d=u(".apd-slider-progress",n),f=!1;function h(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:a();if(!(er)){var n=(e-t)/(r-t);p.style.left="".concat(100*n,"%"),0===s.length&&(d.style.width=p.style.left),o(e)}}function m(e){var a=n.getBoundingClientRect(),o=a.left,i=a.width;h(Math.round(c(e.clientX-o,0,i)/i*(r-t)+t))}return this.art.proxy(n,"click",function(e){m(e)}),this.art.proxy(n,"mousedown",function(e){f=0===e.button}),this.art.on("document:mousemove",function(e){f&&m(e)}),this.art.on("document:mouseup",function(e){f&&(f=!1,m(e))}),{reset:h}}},{key:"onFullscreen",value:function(e){if(this.outside){var t=this.template,r=t.$danmuku,n=t.$controlsCenter,a=t.$mount;e?n.appendChild(r):a.appendChild(r)}}},{key:"emit",value:function(){var e=this;return(0,a._)(function(){var t,r,n,a;return(0,c._)(this,function(o){switch(o.label){case 0:if(!(r=(t=e.template.$input).value.trim()).length||e.isLock||e.emitting)return[2];n={text:r,mode:e.option.mode,color:e.option.color,time:e.art.currentTime},o.label=1;case 1:return o.trys.push([1,3,,4]),e.emitting=!0,[4,e.option.beforeEmit(n)];case 2:if(a=o.sent(),e.emitting=!1,!0!==a)return[2];return n.border=!0,delete n.time,e.danmuku.emit(n),t.value="",e.lock(),[3,4];case 3:return o.sent(),e.emitting=!1,[3,4];case 4:return[2]}})})()}},{key:"lock",value:function(){var e=this,t=this.utils.addClass,r=this.template.$send;this.isLock=!0;var n=this.option.lockTime;r.innerText=n,t(r,"apd-lock");var a=function(){e.timer=setTimeout(function(){0===n?e.unlock():(n-=1,r.innerText=n,a())},1e3)};a()}},{key:"unlock",value:function(){var e=this.utils.removeClass,t=this.template.$send;clearTimeout(this.timer),this.isLock=!1,t.innerText="发送",e(t,"apd-lock")}},{key:"reset",value:function(){var e=this,t=this.utils,r=t.inverseClass,n=t.tooltip,a=this.template,o=a.$toggle,i=a.$colors;this.slider.opacity.reset(),this.slider.margin.reset(),this.slider.fontSize.reset(),this.slider.speed.reset(),this.setData("danmukuVisible",this.option.visible),this.setData("danmukuMode",this.option.mode),this.setData("danmukuColor",this.option.color),this.setData("danmukuMode0",this.option.modes.includes(0)),this.setData("danmukuMode1",this.option.modes.includes(1)),this.setData("danmukuMode2",this.option.modes.includes(2)),this.setData("danmukuAntiOverlap",this.option.antiOverlap),this.setData("danmukuSyncVideo",this.option.synchronousPlayback),this.setData("danmukuTheme",this.option.theme),this.setData("danmukuEmitter",this.option.emitter);var s=Array.from(i.children).find(function(t){return t.dataset.color===e.option.color.toUpperCase()});s&&r(s,"apd-active"),n(o,this.option.visible?"关闭弹幕":"打开弹幕")}},{key:"mount",value:function(e){var t="string"==typeof e?document.querySelector(e):e;t.appendChild(this.template.$danmuku),this.template.$mount=t,this.reset()}}],[{key:"icons",get:function(){return{$on:h.default,$off:y.default,$config:v.default,$style:b.default,$mode_0_off:k.default,$mode_0_on:j.default,$mode_1_off:O.default,$mode_1_on:D.default,$mode_2_off:F.default,$mode_2_on:E.default,$check_on:A.default,$check_off:z.default}}}]),e}();if("undefined"!=typeof document){var L="artplayer-plugin-danmuku",H=document.getElementById(L);if(H)H.textContent=d.default;else{var R=document.createElement("style");R.id=L,R.textContent=d.default,document.head.appendChild(R)}}},{"@swc/helpers/_/_async_to_generator":"eONSn","@swc/helpers/_/_class_call_check":"9iJMm","@swc/helpers/_/_create_class":"21IOT","@swc/helpers/_/_object_spread":"9agdF","@swc/helpers/_/_object_spread_props":"gJNH2","@swc/helpers/_/_to_consumable_array":"iwLF0","@swc/helpers/_/_ts_generator":"6Xyd0","bundle-text:./style.less":"i8wAr","bundle-text:./img/on.svg":"4mwSI","bundle-text:./img/off.svg":"9bQDs","bundle-text:./img/config.svg":"cciuY","bundle-text:./img/style.svg":"e5G6o","bundle-text:./img/mode_0_off.svg":"fC4yA","bundle-text:./img/mode_0_on.svg":"fUkVg","bundle-text:./img/mode_1_off.svg":"isoJm","bundle-text:./img/mode_1_on.svg":"20nBM","bundle-text:./img/mode_2_off.svg":"6x9CL","bundle-text:./img/mode_2_on.svg":"7GKdL","bundle-text:./img/check_on.svg":"9SCIh","bundle-text:./img/check_off.svg":"6KRxn","@parcel/transformer-js/src/esmodule-helpers.js":"iWrD0"}],iwLF0:[function(e,t,r){var n=e("@parcel/transformer-js/src/esmodule-helpers.js");n.defineInteropFlag(r),n.export(r,"_to_consumable_array",function(){return l}),n.export(r,"_",function(){return l});var a=e("./_array_without_holes.js"),o=e("./_iterable_to_array.js"),i=e("./_non_iterable_spread.js"),s=e("./_unsupported_iterable_to_array.js");function l(e){return(0,a._array_without_holes)(e)||(0,o._iterable_to_array)(e)||(0,s._unsupported_iterable_to_array)(e)||(0,i._non_iterable_spread)()}},{"./_array_without_holes.js":"cuL6A","./_iterable_to_array.js":"2thrs","./_non_iterable_spread.js":"a8nO2","./_unsupported_iterable_to_array.js":"5m31D","@parcel/transformer-js/src/esmodule-helpers.js":"iWrD0"}],cuL6A:[function(e,t,r){var n=e("@parcel/transformer-js/src/esmodule-helpers.js");n.defineInteropFlag(r),n.export(r,"_array_without_holes",function(){return o}),n.export(r,"_",function(){return o});var a=e("./_array_like_to_array.js");function o(e){if(Array.isArray(e))return(0,a._array_like_to_array)(e)}},{"./_array_like_to_array.js":"djwRR","@parcel/transformer-js/src/esmodule-helpers.js":"iWrD0"}],djwRR:[function(e,t,r){var n=e("@parcel/transformer-js/src/esmodule-helpers.js");function a(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r.artplayer-plugin-danmuku .apd-icon{fill:#333}[data-danmuku-theme=light]>.artplayer-plugin-danmuku .apd-emitter{background-color:#f1f2f3}[data-danmuku-theme=light]>.artplayer-plugin-danmuku .apd-input{color:#000}[data-danmuku-theme=light]>.artplayer-plugin-danmuku .apd-input::placeholder{color:rgba(0,0,0,.3)}[data-danmuku-theme=light]>.artplayer-plugin-danmuku .apd-input::placeholder{color:rgba(0,0,0,.3)}[data-danmuku-visible=false] .apd-toggle-off{display:block}[data-danmuku-visible=false] .apd-toggle-on,[data-danmuku-visible=true] .apd-toggle-off{display:none}[data-danmuku-visible=true] .apd-toggle-on{display:block}[data-danmuku-anti-overlap=false] .apd-anti-overlap .apd-check-on{display:none}[data-danmuku-anti-overlap=false] .apd-anti-overlap .apd-check-off,[data-danmuku-anti-overlap=true] .apd-anti-overlap .apd-check-on{display:block}[data-danmuku-anti-overlap=true] .apd-anti-overlap .apd-check-off,[data-danmuku-sync-video=false] .apd-sync-video .apd-check-on{display:none}[data-danmuku-sync-video=false] .apd-sync-video .apd-check-off,[data-danmuku-sync-video=true] .apd-sync-video .apd-check-on{display:block}[data-danmuku-sync-video=true] .apd-sync-video .apd-check-off{display:none}[data-danmuku-mode0=false] .apd-config-mode .apd-mode-0-off{display:block}[data-danmuku-mode0=false] .apd-config-mode .apd-mode-0-on{display:none}[data-danmuku-mode0=false] .art-danmuku [data-mode="0"]{opacity:0!important}[data-danmuku-mode0=true] .apd-config-mode .apd-mode-0-off{display:none}[data-danmuku-mode0=true] .apd-config-mode .apd-mode-0-on{display:block}[data-danmuku-mode="0"] .apd-style-mode [data-mode="0"]{color:#00a1d6}[data-danmuku-mode="0"] .apd-style-mode [data-mode="0"] path{fill:#00a1d6}[data-danmuku-mode1=false] .apd-config-mode .apd-mode-1-off{display:block}[data-danmuku-mode1=false] .apd-config-mode .apd-mode-1-on{display:none}[data-danmuku-mode1=false] .art-danmuku [data-mode="1"]{opacity:0!important}[data-danmuku-mode1=true] .apd-config-mode .apd-mode-1-off{display:none}[data-danmuku-mode1=true] .apd-config-mode .apd-mode-1-on{display:block}[data-danmuku-mode="1"] .apd-style-mode [data-mode="1"]{color:#00a1d6}[data-danmuku-mode="1"] .apd-style-mode [data-mode="1"] path{fill:#00a1d6}[data-danmuku-mode2=false] .apd-config-mode .apd-mode-2-off{display:block}[data-danmuku-mode2=false] .apd-config-mode .apd-mode-2-on{display:none}[data-danmuku-mode2=false] .art-danmuku [data-mode="2"]{opacity:0!important}[data-danmuku-mode2=true] .apd-config-mode .apd-mode-2-off{display:none}[data-danmuku-mode2=true] .apd-config-mode .apd-mode-2-on{display:block}[data-danmuku-mode="2"] .apd-style-mode [data-mode="2"]{color:#00a1d6}[data-danmuku-mode="2"] .apd-style-mode [data-mode="2"] path{fill:#00a1d6}'},{}],"4mwSI":[function(e,t,r){t.exports=''},{}],"9bQDs":[function(e,t,r){t.exports=''},{}],cciuY:[function(e,t,r){t.exports=''},{}],e5G6o:[function(e,t,r){t.exports=''},{}],fC4yA:[function(e,t,r){t.exports=''},{}],fUkVg:[function(e,t,r){t.exports=''},{}],isoJm:[function(e,t,r){t.exports=''},{}],"20nBM":[function(e,t,r){t.exports=''},{}],"6x9CL":[function(e,t,r){t.exports=''},{}],"7GKdL":[function(e,t,r){t.exports=''},{}],"9SCIh":[function(e,t,r){t.exports=''},{}],"6KRxn":[function(e,t,r){t.exports=''},{}],dXFn2:[function(e,t,r){var n=e("@parcel/transformer-js/src/esmodule-helpers.js");n.defineInteropFlag(r),n.export(r,"default",function(){return s});var a=e("@swc/helpers/_/_to_consumable_array"),o={map:function(e,t,r,n,a){return(e-t)*(a-n)/(r-t)+n}},i=function(e,t){var r=t[0]-e[0],n=t[1]-e[1];return{length:Math.sqrt(Math.pow(r,2)+Math.pow(n,2)),angle:Math.atan2(n,r)}};function s(e,t,r){var n=e.constructor.utils.query;e.controls.add({name:"heatmap",position:"top",html:"",style:{position:"absolute",top:"-100px",left:"0px",right:"0px",height:"100px",width:"100%",pointerEvents:"none"},mounted:function(s){var l=null,u=null;function c(){var c,p,d=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(l=null,u=null,s.innerHTML="",e.duration&&!e.option.isLive){var f={w:s.offsetWidth,h:s.offsetHeight},h={xMin:0,xMax:f.w,yMin:0,yMax:128,scale:.25,opacity:.2,minHeight:Math.floor(.05*f.h),sampling:Math.floor(f.w/100),smoothing:.2,flattening:.2};"object"==typeof r&&Object.assign(h,r);var m=[];if(Array.isArray(d)&&d.length)m=(0,a._)(d);else for(var y=function(e){var r=t.danmus.filter(function(t){var r=t.time;return r>e*g&&r<=(e+h.sampling)*g}).length;m.push([e,r])},g=e.duration/f.w,v=0;v<=f.w;v+=h.sampling)y(v);if(0!==m.length){var _=m[m.length-1],b=_[0],x=_[1];b!==f.w&&m.push([f.w,x]);for(var k=m.map(function(e){return e[1]}),w=((c=Math).min.apply(c,(0,a._)(k))+(p=Math).max.apply(p,(0,a._)(k)))/2,j=0;jw?1+h.scale:1-h.scale)+h.minHeight}var S=function(e,t,r,n){var a=i(t||e,r||e),s=o.map(Math.cos(a.angle)*h.flattening,0,1,1,0),l=a.angle*s+(n?Math.PI:0),u=a.length*h.smoothing;return[e[0]+Math.cos(l)*u,e[1]+Math.sin(l)*u]},D=function(e,t,r){var n=S(r[t-1],r[t-2],e),a=S(e,r[t-1],r[t+1],!0),o=t===r.length-1?" z":"";return"C ".concat(n[0],",").concat(n[1]," ").concat(a[0],",").concat(a[1]," ").concat(e[0],",").concat(e[1]).concat(o)},M=m.map(function(e){return[o.map(e[0],h.xMin,h.xMax,0,f.w),o.map(e[1],h.yMin,h.yMax,f.h,0)]}).reduce(function(e,t,r,n){return 0===r?"M ".concat(n[n.length-1][0],",").concat(f.h," L ").concat(t[0],",").concat(f.h," L ").concat(t[0],",").concat(t[1]):"".concat(e," ").concat(D(t,r,n))},"");s.innerHTML='\n\n\n\n\n\n\n\n\n\n\n\n '),l=n("#heatmap-start",s),u=n("#heatmap-stop",s),l.setAttribute("offset","".concat(100*e.played,"%")),u.setAttribute("offset","".concat(100*e.played,"%"))}}}e.on("video:timeupdate",function(){l&&u&&(l.setAttribute("offset","".concat(100*e.played,"%")),u.setAttribute("offset","".concat(100*e.played,"%")))}),e.on("setBar",function(e,t){l&&u&&"played"===e&&(l.setAttribute("offset","".concat(100*t,"%")),u.setAttribute("offset","".concat(100*t,"%")))}),e.on("ready",function(){return c()}),e.on("resize",function(){return c()}),e.on("artplayerPluginDanmuku:loaded",function(){return c()}),e.on("artplayerPluginDanmuku:points",function(e){return c(e)})}})}},{"@swc/helpers/_/_to_consumable_array":"iwLF0","@parcel/transformer-js/src/esmodule-helpers.js":"iWrD0"}]},["40mNk"],"40mNk","parcelRequire4dc0"); \ No newline at end of file +!function(e,t,r,n,a){var o="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},i="function"==typeof o[n]&&o[n],s=i.cache||{},l="undefined"!=typeof module&&"function"==typeof module.require&&module.require.bind(module);function u(t,r){if(!s[t]){if(!e[t]){var a="function"==typeof o[n]&&o[n];if(!r&&a)return a(t,!0);if(i)return i(t,!0);if(l&&"string"==typeof t)return l(t);var c=Error("Cannot find module '"+t+"'");throw c.code="MODULE_NOT_FOUND",c}d.resolve=function(r){var n=e[t][1][r];return null!=n?n:r},d.cache={};var p=s[t]=new u.Module(t);e[t][0].call(p.exports,d,p,p.exports,this)}return s[t].exports;function d(e){var t=d.resolve(e);return!1===t?{}:u(t)}}u.isParcelRequire=!0,u.Module=function(e){this.id=e,this.bundle=u,this.exports={}},u.modules=e,u.cache=s,u.parent=i,u.register=function(t,r){e[t]=[function(e,t){t.exports=r},{}]},Object.defineProperty(u,"root",{get:function(){return o[n]}}),o[n]=u;for(var c=0;c=r.time&&r.time>=e-.1&&t.push(r)}),t}},{key:"visibles",get:function(){var e=this,t=[],r=this.$player.clientWidth,n=this.getLeft(this.$player);return this.filter("emit",function(a){var o=a.$ref.offsetTop,i=e.getLeft(a.$ref)-n,s=a.$ref.clientHeight,l=a.$ref.clientWidth,u=i+l,c=u/a.$restTime,p={};p.top=o,p.left=i,p.height=s,p.width=l,p.right=r-u,p.speed=c,p.distance=u,p.time=a.$restTime,p.mode=a.mode,t.push(p)}),t}},{key:"speed",get:function(){return this.option.synchronousPlayback&&this.art.playbackRate?this.option.speed/Number(this.art.playbackRate):this.option.speed}},{key:"load",value:function(){var e=this;return(0,a._)(function(){var t,r;return(0,u._)(this,function(n){switch(n.label){case 0:t=e.utils.errorHandle,n.label=1;case 1:if(n.trys.push([1,9,,10]),"function"!=typeof e.option.danmuku)return[3,3];return[4,e.option.danmuku()];case 2:case 4:case 6:return e.danmus=n.sent(),[3,8];case 3:if("function"!=typeof e.option.danmuku.then)return[3,5];return[4,e.option.danmuku];case 5:if("string"!=typeof e.option.danmuku)return[3,7];return[4,(0,c.bilibiliDanmuParseFromUrl)(e.option.danmuku)];case 7:e.danmus=e.option.danmuku,n.label=8;case 8:return t(Array.isArray(e.danmus),"Danmuku need return an array as result"),e.queue=[],e.$danmuku.innerText="",e.danmus.forEach(function(t){return e.emit(t)}),e.art.emit("artplayerPluginDanmuku:loaded",e.queue),[3,10];case 9:throw r=n.sent(),e.art.emit("artplayerPluginDanmuku:error",r),r;case 10:return[2,e]}})})()}},{key:"emit",value:function(e){var t=this.utils.clamp;if(this.validator(e,{text:"string",mode:"?number",color:"?string",time:"?number",border:"?boolean",style:"?object"}),!e.text.trim()||(e.time?e.time=t(e.time,0,1/0):e.time=this.art.currentTime+.5,void 0===e.mode&&(e.mode=this.option.mode),void 0===e.style&&(e.style={}),void 0===e.color&&(e.color=this.option.color),![0,1,2].includes(e.mode)||!this.option.filter(e)))return this;var r=(0,l._)((0,s._)({},e),{$state:"wait",$id:this.index++,$ref:null,$restTime:0,$lastStartTime:0});return this.setState(r,"wait"),this.queue.push(r),this}},{key:"config",value:function(t){var r=this,n=this.utils.clamp,a=this.art.template.$controlsCenter;return Object.keys(t).some(function(e){return JSON.stringify(r.option[e])!==JSON.stringify(t[e])})&&(this.option=Object.assign({},e.option,this.option,t),this.validator(this.option,e.scheme),this.option.mode=n(this.option.mode,0,2),this.option.speed=n(this.option.speed,1,10),this.option.opacity=n(this.option.opacity,0,1),this.option.lockTime=n(this.option.lockTime,1,60),this.option.maxLength=n(this.option.maxLength,1,1e3),this.option.mount=this.option.mount||a,t.fontSize&&this.reset(),this.option.visible?this.show():this.hide(),this.art.emit("artplayerPluginDanmuku:config",this.option)),this}},{key:"getLeft",value:function(e){var t=e.getBoundingClientRect();return this.isRotate?t.top:t.left}},{key:"postMessage",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new Promise(function(r){t.id=Date.now(),e.worker.postMessage(t),e.worker.onmessage=function(e){var n=e.data;n.id===t.id&&r(n)}})}},{key:"filter",value:function(e,t){for(var r=this.states[e]||[],n=0;nt.indexOf(n)&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var a=0,n=Object.getOwnPropertySymbols(e);at.indexOf(n[a])&&Object.prototype.propertyIsEnumerable.call(e,n[a])&&(r[n[a]]=e[n[a]]);return r}function u(e,t,r,n){var a,o=arguments.length,i=o<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(a=e[s])&&(i=(o<3?a(i):o>3?a(t,r,i):a(t,r))||i);return o>3&&i&&Object.defineProperty(t,r,i),i}function c(e,t){return function(r,n){t(r,n,e)}}function p(e,t,r,n,a,o){function i(e){if(void 0!==e&&"function"!=typeof e)throw TypeError("Function expected");return e}for(var s,l=n.kind,u="getter"===l?"get":"setter"===l?"set":"value",c=!t&&e?n.static?e:e.prototype:null,p=t||(c?Object.getOwnPropertyDescriptor(c,n.name):{}),d=!1,f=r.length-1;f>=0;f--){var h={};for(var m in n)h[m]="access"===m?{}:n[m];for(var m in n.access)h.access[m]=n.access[m];h.addInitializer=function(e){if(d)throw TypeError("Cannot add initializers after decoration has completed");o.push(i(e||null))};var y=(0,r[f])("accessor"===l?{get:p.get,set:p.set}:p[u],h);if("accessor"===l){if(void 0===y)continue;if(null===y||"object"!=typeof y)throw TypeError("Object expected");(s=i(y.get))&&(p.get=s),(s=i(y.set))&&(p.set=s),(s=i(y.init))&&a.unshift(s)}else(s=i(y))&&("field"===l?a.unshift(s):p[u]=s)}c&&Object.defineProperty(c,n.name,p),d=!0}function d(e,t,r){for(var n=arguments.length>2,a=0;a0&&a[a.length-1])&&(6===s[0]||2===s[0])){i=0;continue}if(3===s[0]&&(!a||s[1]>a[0]&&s[1]=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function x(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,a,o=r.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i}function k(){for(var e=[],t=0;t1||s(e,t)})})}function s(e,t){try{var r;(r=a[e](t)).value instanceof $?Promise.resolve(r.value.v).then(l,u):c(o[0][2],r)}catch(e){c(o[0][3],e)}}function l(e){s("next",e)}function u(e){s("throw",e)}function c(e,t){e(t),o.shift(),o.length&&s(o[0][0],o[0][1])}}function S(e){var t,r;return t={},n("next"),n("throw",function(e){throw e}),n("return"),t[Symbol.iterator]=function(){return this},t;function n(n,a){t[n]=e[n]?function(t){return(r=!r)?{value:$(e[n](t)),done:!1}:a?a(t):t}:a}}function D(e){if(!Symbol.asyncIterator)throw TypeError("Symbol.asyncIterator is not defined.");var t,r=e[Symbol.asyncIterator];return r?r.call(e):(e=b(e),t={},n("next"),n("throw"),n("return"),t[Symbol.asyncIterator]=function(){return this},t);function n(r){t[r]=e[r]&&function(t){return new Promise(function(n,a){!function(e,t,r,n){Promise.resolve(n).then(function(t){e({value:t,done:r})},t)}(n,a,(t=e[r](t)).done,t.value)})}}}function M(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e}var F=Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t};function P(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&v(t,e,r);return F(t,e),t}function E(e){return e&&e.__esModule?e:{default:e}}function T(e,t,r,n){if("a"===r&&!n)throw TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!n:!t.has(e))throw TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(e):n?n.value:t.get(e)}function A(e,t,r,n,a){if("m"===n)throw TypeError("Private method is not writable");if("a"===n&&!a)throw TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!a:!t.has(e))throw TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?a.call(e,r):a?a.value=r:t.set(e,r),r}function I(e,t){if(null===t||"object"!=typeof t&&"function"!=typeof t)throw TypeError("Cannot use 'in' operator on non-object");return"function"==typeof e?t===e:e.has(t)}function z(e,t,r){if(null!=t){var n;if("object"!=typeof t&&"function"!=typeof t)throw TypeError("Object expected.");if(r){if(!Symbol.asyncDispose)throw TypeError("Symbol.asyncDispose is not defined.");n=t[Symbol.asyncDispose]}if(void 0===n){if(!Symbol.dispose)throw TypeError("Symbol.dispose is not defined.");n=t[Symbol.dispose]}if("function"!=typeof n)throw TypeError("Object not disposable.");e.stack.push({value:t,dispose:n,async:r})}else r&&e.stack.push({async:!0});return t}var C="function"==typeof SuppressedError?SuppressedError:function(e,t,r){var n=Error(r);return n.name="SuppressedError",n.error=e,n.suppressed=t,n};function L(e){function t(t){e.error=e.hasError?new C(t,e.error,"An error was suppressed during disposal."):t,e.hasError=!0}return function r(){for(;e.stack.length;){var n=e.stack.pop();try{var a=n.dispose&&n.dispose.call(n.value);if(n.async)return Promise.resolve(a).then(r,function(e){return t(e),r()})}catch(e){t(e)}}if(e.hasError)throw e.error}()}r.default={__extends:i,__assign:s,__rest:l,__decorate:u,__param:c,__metadata:m,__awaiter:y,__generator:g,__createBinding:v,__exportStar:_,__values:b,__read:x,__spread:k,__spreadArrays:w,__spreadArray:j,__await:$,__asyncGenerator:O,__asyncDelegator:S,__asyncValues:D,__makeTemplateObject:M,__importStar:P,__importDefault:E,__classPrivateFieldGet:T,__classPrivateFieldSet:A,__classPrivateFieldIn:I,__addDisposableResource:z,__disposeResources:L}},{"@swc/helpers/_/_type_of":"felZi","@parcel/transformer-js/src/esmodule-helpers.js":"iWrD0"}],felZi:[function(e,t,r){var n=e("@parcel/transformer-js/src/esmodule-helpers.js");function a(e){return e&&"undefined"!=typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}n.defineInteropFlag(r),n.export(r,"_type_of",function(){return a}),n.export(r,"_",function(){return a})},{"@parcel/transformer-js/src/esmodule-helpers.js":"iWrD0"}],kMsXR:[function(e,t,r){var n=e("@parcel/transformer-js/src/esmodule-helpers.js");n.defineInteropFlag(r),n.export(r,"bilibiliDanmuParseFromUrl",function(){return u});var a=e("@swc/helpers/_/_async_to_generator"),o=e("@swc/helpers/_/_ts_generator");function i(e){switch(e){case 1:case 2:case 3:default:return 0;case 4:return 2;case 5:return 1}}function s(e){if("string"!=typeof e)return[];var t=new RegExp(RegExp('(?.+?)<\\/d>',"gs"));return Array.from(e.matchAll(t)).map(function(e){var t=e.groups.p.split(",");return t.length>=8?{text:e.groups.text.trim().replaceAll(""",'"').replaceAll("'","'").replaceAll("<","<").replaceAll(">",">").replaceAll("&","&"),time:Number(t[0]),mode:i(Number(t[1])),fontSize:Number(t[2]),color:"#".concat(Number(t[3]).toString(16)),timestamp:Number(t[4]),pool:Number(t[5]),userID:t[6],rowID:Number(t[7])}:null}).filter(Boolean)}function l(e){var t=e.data,r=t.xml,n=t.id;if(n&&r){var a=s(r);self.postMessage({danmus:a,id:n})}}function u(e){var t;return new Promise((t=(0,a._)(function(t){var r,n,a;return(0,o._)(this,function(o){switch(o.label){case 0:return r=Date.now(),[4,fetch(e)];case 1:return[4,o.sent().text()];case 2:n=o.sent();try{var u;u=new Blob(["\n ".concat(i.toString(),"\n ").concat(s.toString(),"\n onmessage = ").concat(l.toString(),"\n ")],{type:"application/javascript"}),(a=new Worker(URL.createObjectURL(u))).onmessage=function(e){var n=e.data,o=n.danmus;n.id&&o&&(t(o),a.terminate(),console.log("Worker parse xml",Date.now()-r))},a.postMessage({xml:n,id:Date.now()})}catch(e){t(s(n)),console.log("Main parse xml",Date.now()-r)}return[2]}})}),function(e){return t.apply(this,arguments)}))}},{"@swc/helpers/_/_async_to_generator":"eONSn","@swc/helpers/_/_ts_generator":"6Xyd0","@parcel/transformer-js/src/esmodule-helpers.js":"iWrD0"}],"1gMd5":[function(e,t,r){t.exports='!function(e,r,t,n,o){var a="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},i="function"==typeof a[n]&&a[n],s=i.cache||{},u="undefined"!=typeof module&&"function"==typeof module.require&&module.require.bind(module);function l(r,t){if(!s[r]){if(!e[r]){var o="function"==typeof a[n]&&a[n];if(!t&&o)return o(r,!0);if(i)return i(r,!0);if(u&&"string"==typeof r)return u(r);var f=Error("Cannot find module \'"+r+"\'");throw f.code="MODULE_NOT_FOUND",f}c.resolve=function(t){var n=e[r][1][t];return null!=n?n:t},c.cache={};var p=s[r]=new l.Module(r);e[r][0].call(p.exports,c,p,p.exports,this)}return s[r].exports;function c(e){var r=c.resolve(e);return!1===r?{}:l(r)}}l.isParcelRequire=!0,l.Module=function(e){this.id=e,this.bundle=l,this.exports={}},l.modules=e,l.cache=s,l.parent=i,l.register=function(r,t){e[r]=[function(e,r){r.exports=t},{}]},Object.defineProperty(l,"root",{get:function(){return a[n]}}),a[n]=l;for(var f=0;f=0;p-=1){var c=f[p],_=f[p+1],d=c.top+c.height;if(_.top-d>=r.height)return _.top-r.height}else for(var h=1;h=r.height)return g}for(var j=[],b=1;be.time)})});return w&&w[0]?w[0].top:void 0;case 1:case 2:return}else{switch(r.mode){case 0:j.sort(function(e,r){var t,o,a=(t=Math).min.apply(t,(0,n._)(r.map(function(e){return e.right}))),i=(o=Math).min.apply(o,(0,n._)(e.map(function(e){return e.right})));return a*r.length-i*e.length});break;case 1:case 2:j.sort(function(e,r){var t,o,a=(t=Math).max.apply(t,(0,n._)(r.map(function(e){return e.width})));return(o=Math).max.apply(o,(0,n._)(e.map(function(e){return e.width})))*e.length-a*r.length})}return j[0][0].top}}(r);self.postMessage({top:t,id:r.id})}}},{"@swc/helpers/_/_to_consumable_array":"iwLF0"}],iwLF0:[function(e,r,t){var n=e("@parcel/transformer-js/src/esmodule-helpers.js");n.defineInteropFlag(t),n.export(t,"_to_consumable_array",function(){return u}),n.export(t,"_",function(){return u});var o=e("./_array_without_holes.js"),a=e("./_iterable_to_array.js"),i=e("./_non_iterable_spread.js"),s=e("./_unsupported_iterable_to_array.js");function u(e){return(0,o._array_without_holes)(e)||(0,a._iterable_to_array)(e)||(0,s._unsupported_iterable_to_array)(e)||(0,i._non_iterable_spread)()}},{"./_array_without_holes.js":"cuL6A","./_iterable_to_array.js":"2thrs","./_non_iterable_spread.js":"a8nO2","./_unsupported_iterable_to_array.js":"5m31D","@parcel/transformer-js/src/esmodule-helpers.js":"iWrD0"}],cuL6A:[function(e,r,t){var n=e("@parcel/transformer-js/src/esmodule-helpers.js");n.defineInteropFlag(t),n.export(t,"_array_without_holes",function(){return a}),n.export(t,"_",function(){return a});var o=e("./_array_like_to_array.js");function a(e){if(Array.isArray(e))return(0,o._array_like_to_array)(e)}},{"./_array_like_to_array.js":"djwRR","@parcel/transformer-js/src/esmodule-helpers.js":"iWrD0"}],djwRR:[function(e,r,t){var n=e("@parcel/transformer-js/src/esmodule-helpers.js");function o(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=Array(r);t\n '.concat(h.default).concat(y.default,'\n\n
\n ').concat(v.default,'\n
\n
\n
\n 按类型屏蔽\n
\n
\n ').concat(k.default).concat(j.default,'\n
滚动
\n
\n
\n ').concat(O.default).concat(D.default,'\n
顶部
\n
\n
\n ').concat(F.default).concat(E.default,'\n
底部
\n
\n
\n
\n
\n
\n ').concat(A.default).concat(z.default,'\n 防止弹幕重叠\n
\n
\n ').concat(A.default).concat(z.default,'\n 同步视频速度\n
\n
\n
\n 不透明度\n
\n
未知
\n
\n
\n 显示区域\n
\n
未知
\n
\n
\n 弹幕字号\n
\n
未知
\n
\n
\n 弹幕速度\n
\n
未知
\n
\n
\n
\n
\n
\n
\n ').concat(b.default,'\n
\n
\n
\n 模式\n
\n
\n ').concat(j.default,'\n
滚动
\n
\n
\n ').concat(D.default,'\n
顶部
\n
\n
\n ').concat(E.default,'\n
底部
\n
\n
\n
\n
\n 颜色\n
\n ').concat(this.COLOR.map(function(e){return'
')}).join(""),'\n
\n
\n
\n
\n
\n\n
发送
\n
\n ')}},{key:"OPACITY",get:function(){return(0,s._)({min:0,max:100,steps:[]},this.option.OPACITY)}},{key:"FONT_SIZE",get:function(){return(0,s._)({min:12,max:120,steps:[]},this.option.FONT_SIZE)}},{key:"MARGIN",get:function(){return(0,s._)({min:0,max:3,steps:[{name:"1/4",value:[10,"75%"]},{name:"半屏",value:[10,"50%"]},{name:"3/4",value:[10,"25%"]},{name:"满屏",value:[10,10]}]},this.option.MARGIN)}},{key:"SPEED",get:function(){return(0,s._)({min:0,max:4,steps:[{name:"极慢",value:10},{name:"较慢",value:7.5,hide:!0},{name:"适中",value:5},{name:"较快",value:2.5,hide:!0},{name:"极快",value:1}]},this.option.SPEED)}},{key:"COLOR",get:function(){return this.option.COLOR.length?this.option.COLOR:["#FE0302","#FF7204","#FFAA02","#FFD302","#FFFF00","#A0EE00","#00CD00","#019899","#4266BE","#89D5FF","#CC0273","#222222","#9B9B9B","#FFFFFF"]}},{key:"query",value:function(e){return(0,this.utils.query)(e,this.template.$danmuku)}},{key:"setData",value:function(e,t){var r=this.art.template.$player,n=this.template.$mount;r.dataset[e]=t,this.outside&&(n.dataset[e]=t)}},{key:"createTemplate",value:function(){var e=this.utils,t=e.createElement,r=e.tooltip,n=t("div");n.className="artplayer-plugin-danmuku",n.innerHTML=this.TEMPLATE,this.template.$danmuku=n,this.template.$toggle=this.query(".apd-toggle"),this.template.$configModes=this.query(".apd-config-mode .apd-modes"),this.template.$styleModes=this.query(".apd-style-mode .apd-modes"),this.template.$colors=this.query(".apd-colors"),this.template.$antiOverlap=this.query(".apd-anti-overlap"),this.template.$syncVideo=this.query(".apd-sync-video"),this.template.$opacitySlider=this.query(".apd-config-opacity .apd-slider"),this.template.$opacityValue=this.query(".apd-config-opacity .apd-value"),this.template.$marginSlider=this.query(".apd-config-margin .apd-slider"),this.template.$marginValue=this.query(".apd-config-margin .apd-value"),this.template.$fontSizeSlider=this.query(".apd-config-fontSize .apd-slider"),this.template.$fontSizeValue=this.query(".apd-config-fontSize .apd-value"),this.template.$speedSlider=this.query(".apd-config-speed .apd-slider"),this.template.$speedValue=this.query(".apd-config-speed .apd-value"),this.template.$input=this.query(".apd-input"),this.template.$send=this.query(".apd-send");var a=this.template.$toggle;this.art.on("artplayerPluginDanmuku:show",function(){r(a,"关闭弹幕")}),this.art.on("artplayerPluginDanmuku:hide",function(){r(a,"打开弹幕")})}},{key:"createEvents",value:function(){var e=this,t=this.template,r=t.$toggle,n=t.$configModes,a=t.$styleModes,o=t.$colors,i=t.$antiOverlap,s=t.$syncVideo,l=t.$send,c=t.$input;this.art.proxy(r,"click",function(){e.danmuku.config({visible:!e.option.visible}),e.reset()}),this.art.proxy(n,"click",function(t){var r=t.target.closest(".apd-mode");if(r){var n=Number(r.dataset.mode);e.option.modes.includes(n)?e.danmuku.config({modes:e.option.modes.filter(function(e){return e!==n})}):e.danmuku.config({modes:(0,u._)(e.option.modes).concat([n])}),e.reset()}}),this.art.proxy(i,"click",function(){e.danmuku.config({antiOverlap:!e.option.antiOverlap}),e.reset()}),this.art.proxy(s,"click",function(){e.danmuku.config({synchronousPlayback:!e.option.synchronousPlayback}),e.reset()}),this.art.proxy(a,"click",function(t){var r=t.target.closest(".apd-mode");if(r){var n=Number(r.dataset.mode);e.danmuku.config({mode:n}),e.reset()}}),this.art.proxy(o,"click",function(t){var r=t.target.closest(".apd-color");r&&(e.danmuku.config({color:r.dataset.color}),e.reset())}),this.art.proxy(l,"click",function(){return e.emit()}),this.art.proxy(c,"keypress",function(t){"Enter"===t.key&&(t.preventDefault(),e.emit())})}},{key:"createSliders",value:function(){var e=this;this.slider.opacity=this.createSlider((0,l._)((0,s._)({},this.OPACITY),{container:this.template.$opacitySlider,findIndex:function(){return Math.round(100*e.option.opacity)},onChange:function(t){e.template.$opacityValue.textContent="".concat(t,"%"),e.danmuku.config({opacity:t/100})}})),this.slider.margin=this.createSlider((0,l._)((0,s._)({},this.MARGIN),{container:this.template.$marginSlider,findIndex:function(){return e.MARGIN.steps.findIndex(function(t){return t.value[0]===e.option.margin[0]&&t.value[1]===e.option.margin[1]})},onChange:function(t){var r=e.MARGIN.steps[t];r&&(e.template.$marginValue.textContent=r.name,e.danmuku.config({margin:r.value}))}})),this.slider.fontSize=this.createSlider((0,l._)((0,s._)({},this.FONT_SIZE),{container:this.template.$fontSizeSlider,findIndex:function(){return Math.round(e.danmuku.fontSize)},onChange:function(t){e.template.$fontSizeValue.textContent="".concat(t,"px"),e.danmuku.config({fontSize:t})}})),this.slider.speed=this.createSlider((0,l._)((0,s._)({},this.SPEED),{container:this.template.$speedSlider,findIndex:function(){return e.SPEED.steps.findIndex(function(t){return t.value===e.option.speed})},onChange:function(t){var r=e.SPEED.steps[t];r&&(e.template.$speedValue.textContent=r.name,e.danmuku.config({speed:r.value}))}}))}},{key:"createSlider",value:function(e){var t=e.min,r=e.max,n=e.container,a=e.findIndex,o=e.onChange,i=e.steps,s=void 0===i?[]:i,l=this.utils,u=l.query,c=l.clamp;n.innerHTML='\n
\n
\n '.concat(s.map(function(){return'
'}).join(""),'\n
\n
\n
\n
\n
\n ').concat(s.map(function(e){return e.hide?"":'
'.concat(e.name,"
")}).join(""),"\n
\n ");var p=u(".apd-slider-dot",n),d=u(".apd-slider-progress",n),f=!1;function h(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:a();if(!(er)){var n=(e-t)/(r-t);p.style.left="".concat(100*n,"%"),0===s.length&&(d.style.width=p.style.left),o(e)}}function m(e){var a=n.getBoundingClientRect(),o=a.left,i=a.width;h(Math.round(c(e.clientX-o,0,i)/i*(r-t)+t))}return this.art.proxy(n,"click",function(e){m(e)}),this.art.proxy(n,"mousedown",function(e){f=0===e.button}),this.art.on("document:mousemove",function(e){f&&m(e)}),this.art.on("document:mouseup",function(e){f&&(f=!1,m(e))}),{reset:h}}},{key:"onFullscreen",value:function(e){if(this.outside){var t=this.template,r=t.$danmuku,n=t.$controlsCenter,a=t.$mount;e?n.appendChild(r):a.appendChild(r)}}},{key:"emit",value:function(){var e=this;return(0,a._)(function(){var t,r,n,a;return(0,c._)(this,function(o){switch(o.label){case 0:if(!(r=(t=e.template.$input).value.trim()).length||e.isLock||e.emitting)return[2];n={text:r,mode:e.option.mode,color:e.option.color,time:e.art.currentTime},o.label=1;case 1:return o.trys.push([1,3,,4]),e.emitting=!0,[4,e.option.beforeEmit(n)];case 2:if(a=o.sent(),e.emitting=!1,!0!==a)return[2];return n.border=!0,delete n.time,e.danmuku.emit(n),t.value="",e.lock(),[3,4];case 3:return o.sent(),e.emitting=!1,[3,4];case 4:return[2]}})})()}},{key:"lock",value:function(){var e=this,t=this.utils.addClass,r=this.template.$send;this.isLock=!0;var n=this.option.lockTime;r.innerText=n,t(r,"apd-lock");var a=function(){e.timer=setTimeout(function(){0===n?e.unlock():(n-=1,r.innerText=n,a())},1e3)};a()}},{key:"unlock",value:function(){var e=this.utils.removeClass,t=this.template.$send;clearTimeout(this.timer),this.isLock=!1,t.innerText="发送",e(t,"apd-lock")}},{key:"reset",value:function(){var e=this,t=this.utils,r=t.inverseClass,n=t.tooltip,a=this.template,o=a.$toggle,i=a.$colors;this.slider.opacity.reset(),this.slider.margin.reset(),this.slider.fontSize.reset(),this.slider.speed.reset(),this.setData("danmukuVisible",this.option.visible),this.setData("danmukuMode",this.option.mode),this.setData("danmukuColor",this.option.color),this.setData("danmukuMode0",this.option.modes.includes(0)),this.setData("danmukuMode1",this.option.modes.includes(1)),this.setData("danmukuMode2",this.option.modes.includes(2)),this.setData("danmukuAntiOverlap",this.option.antiOverlap),this.setData("danmukuSyncVideo",this.option.synchronousPlayback),this.setData("danmukuTheme",this.option.theme),this.setData("danmukuEmitter",this.option.emitter);var s=Array.from(i.children).find(function(t){return t.dataset.color===e.option.color.toUpperCase()});s&&r(s,"apd-active"),n(o,this.option.visible?"关闭弹幕":"打开弹幕")}},{key:"mount",value:function(e){var t="string"==typeof e?document.querySelector(e):e;t.appendChild(this.template.$danmuku),this.template.$mount=t,this.reset()}}],[{key:"icons",get:function(){return{$on:h.default,$off:y.default,$config:v.default,$style:b.default,$mode_0_off:k.default,$mode_0_on:j.default,$mode_1_off:O.default,$mode_1_on:D.default,$mode_2_off:F.default,$mode_2_on:E.default,$check_on:A.default,$check_off:z.default}}}]),e}();if("undefined"!=typeof document){var L="artplayer-plugin-danmuku",R=document.getElementById(L);if(R)R.textContent=d.default;else{var H=document.createElement("style");H.id=L,H.textContent=d.default,document.head.appendChild(H)}}},{"@swc/helpers/_/_async_to_generator":"eONSn","@swc/helpers/_/_class_call_check":"9iJMm","@swc/helpers/_/_create_class":"21IOT","@swc/helpers/_/_object_spread":"9agdF","@swc/helpers/_/_object_spread_props":"gJNH2","@swc/helpers/_/_to_consumable_array":"iwLF0","@swc/helpers/_/_ts_generator":"6Xyd0","bundle-text:./style.less":"i8wAr","bundle-text:./img/on.svg":"4mwSI","bundle-text:./img/off.svg":"9bQDs","bundle-text:./img/config.svg":"cciuY","bundle-text:./img/style.svg":"e5G6o","bundle-text:./img/mode_0_off.svg":"fC4yA","bundle-text:./img/mode_0_on.svg":"fUkVg","bundle-text:./img/mode_1_off.svg":"isoJm","bundle-text:./img/mode_1_on.svg":"20nBM","bundle-text:./img/mode_2_off.svg":"6x9CL","bundle-text:./img/mode_2_on.svg":"7GKdL","bundle-text:./img/check_on.svg":"9SCIh","bundle-text:./img/check_off.svg":"6KRxn","@parcel/transformer-js/src/esmodule-helpers.js":"iWrD0"}],iwLF0:[function(e,t,r){var n=e("@parcel/transformer-js/src/esmodule-helpers.js");n.defineInteropFlag(r),n.export(r,"_to_consumable_array",function(){return l}),n.export(r,"_",function(){return l});var a=e("./_array_without_holes.js"),o=e("./_iterable_to_array.js"),i=e("./_non_iterable_spread.js"),s=e("./_unsupported_iterable_to_array.js");function l(e){return(0,a._array_without_holes)(e)||(0,o._iterable_to_array)(e)||(0,s._unsupported_iterable_to_array)(e)||(0,i._non_iterable_spread)()}},{"./_array_without_holes.js":"cuL6A","./_iterable_to_array.js":"2thrs","./_non_iterable_spread.js":"a8nO2","./_unsupported_iterable_to_array.js":"5m31D","@parcel/transformer-js/src/esmodule-helpers.js":"iWrD0"}],cuL6A:[function(e,t,r){var n=e("@parcel/transformer-js/src/esmodule-helpers.js");n.defineInteropFlag(r),n.export(r,"_array_without_holes",function(){return o}),n.export(r,"_",function(){return o});var a=e("./_array_like_to_array.js");function o(e){if(Array.isArray(e))return(0,a._array_like_to_array)(e)}},{"./_array_like_to_array.js":"djwRR","@parcel/transformer-js/src/esmodule-helpers.js":"iWrD0"}],djwRR:[function(e,t,r){var n=e("@parcel/transformer-js/src/esmodule-helpers.js");function a(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r.artplayer-plugin-danmuku .apd-icon{fill:#333}[data-danmuku-theme=light]>.artplayer-plugin-danmuku .apd-emitter{background-color:#f1f2f3}[data-danmuku-theme=light]>.artplayer-plugin-danmuku .apd-input{color:#000}[data-danmuku-theme=light]>.artplayer-plugin-danmuku .apd-input::placeholder{color:rgba(0,0,0,.3)}[data-danmuku-theme=light]>.artplayer-plugin-danmuku .apd-input::placeholder{color:rgba(0,0,0,.3)}[data-danmuku-visible=false] .apd-toggle-off{display:block}[data-danmuku-visible=false] .apd-toggle-on,[data-danmuku-visible=true] .apd-toggle-off{display:none}[data-danmuku-visible=true] .apd-toggle-on{display:block}[data-danmuku-anti-overlap=false] .apd-anti-overlap .apd-check-on{display:none}[data-danmuku-anti-overlap=false] .apd-anti-overlap .apd-check-off,[data-danmuku-anti-overlap=true] .apd-anti-overlap .apd-check-on{display:block}[data-danmuku-anti-overlap=true] .apd-anti-overlap .apd-check-off,[data-danmuku-sync-video=false] .apd-sync-video .apd-check-on{display:none}[data-danmuku-sync-video=false] .apd-sync-video .apd-check-off,[data-danmuku-sync-video=true] .apd-sync-video .apd-check-on{display:block}[data-danmuku-sync-video=true] .apd-sync-video .apd-check-off{display:none}[data-danmuku-mode0=false] .apd-config-mode .apd-mode-0-off{display:block}[data-danmuku-mode0=false] .apd-config-mode .apd-mode-0-on{display:none}[data-danmuku-mode0=false] .art-danmuku [data-mode="0"]{opacity:0!important}[data-danmuku-mode0=true] .apd-config-mode .apd-mode-0-off{display:none}[data-danmuku-mode0=true] .apd-config-mode .apd-mode-0-on{display:block}[data-danmuku-mode="0"] .apd-style-mode [data-mode="0"]{color:#00a1d6}[data-danmuku-mode="0"] .apd-style-mode [data-mode="0"] path{fill:#00a1d6}[data-danmuku-mode1=false] .apd-config-mode .apd-mode-1-off{display:block}[data-danmuku-mode1=false] .apd-config-mode .apd-mode-1-on{display:none}[data-danmuku-mode1=false] .art-danmuku [data-mode="1"]{opacity:0!important}[data-danmuku-mode1=true] .apd-config-mode .apd-mode-1-off{display:none}[data-danmuku-mode1=true] .apd-config-mode .apd-mode-1-on{display:block}[data-danmuku-mode="1"] .apd-style-mode [data-mode="1"]{color:#00a1d6}[data-danmuku-mode="1"] .apd-style-mode [data-mode="1"] path{fill:#00a1d6}[data-danmuku-mode2=false] .apd-config-mode .apd-mode-2-off{display:block}[data-danmuku-mode2=false] .apd-config-mode .apd-mode-2-on{display:none}[data-danmuku-mode2=false] .art-danmuku [data-mode="2"]{opacity:0!important}[data-danmuku-mode2=true] .apd-config-mode .apd-mode-2-off{display:none}[data-danmuku-mode2=true] .apd-config-mode .apd-mode-2-on{display:block}[data-danmuku-mode="2"] .apd-style-mode [data-mode="2"]{color:#00a1d6}[data-danmuku-mode="2"] .apd-style-mode [data-mode="2"] path{fill:#00a1d6}'},{}],"4mwSI":[function(e,t,r){t.exports=''},{}],"9bQDs":[function(e,t,r){t.exports=''},{}],cciuY:[function(e,t,r){t.exports=''},{}],e5G6o:[function(e,t,r){t.exports=''},{}],fC4yA:[function(e,t,r){t.exports=''},{}],fUkVg:[function(e,t,r){t.exports=''},{}],isoJm:[function(e,t,r){t.exports=''},{}],"20nBM":[function(e,t,r){t.exports=''},{}],"6x9CL":[function(e,t,r){t.exports=''},{}],"7GKdL":[function(e,t,r){t.exports=''},{}],"9SCIh":[function(e,t,r){t.exports=''},{}],"6KRxn":[function(e,t,r){t.exports=''},{}],dXFn2:[function(e,t,r){var n=e("@parcel/transformer-js/src/esmodule-helpers.js");n.defineInteropFlag(r),n.export(r,"default",function(){return s});var a=e("@swc/helpers/_/_to_consumable_array"),o={map:function(e,t,r,n,a){return(e-t)*(a-n)/(r-t)+n}},i=function(e,t){var r=t[0]-e[0],n=t[1]-e[1];return{length:Math.sqrt(Math.pow(r,2)+Math.pow(n,2)),angle:Math.atan2(n,r)}};function s(e,t,r){var n=e.constructor.utils.query;e.controls.add({name:"heatmap",position:"top",html:"",style:{position:"absolute",top:"-100px",left:"0px",right:"0px",height:"100px",width:"100%",pointerEvents:"none"},mounted:function(s){var l=null,u=null;function c(){var c,p,d=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(l=null,u=null,s.innerHTML="",e.duration&&!e.option.isLive){var f={w:s.offsetWidth,h:s.offsetHeight},h={xMin:0,xMax:f.w,yMin:0,yMax:128,scale:.25,opacity:.2,minHeight:Math.floor(.05*f.h),sampling:Math.floor(f.w/100),smoothing:.2,flattening:.2};"object"==typeof r&&Object.assign(h,r);var m=[];if(Array.isArray(d)&&d.length)m=(0,a._)(d);else for(var y=function(e){var r=t.danmus.filter(function(t){var r=t.time;return r>e*g&&r<=(e+h.sampling)*g}).length;m.push([e,r])},g=e.duration/f.w,v=0;v<=f.w;v+=h.sampling)y(v);if(0!==m.length){var _=m[m.length-1],b=_[0],x=_[1];b!==f.w&&m.push([f.w,x]);for(var k=m.map(function(e){return e[1]}),w=((c=Math).min.apply(c,(0,a._)(k))+(p=Math).max.apply(p,(0,a._)(k)))/2,j=0;jw?1+h.scale:1-h.scale)+h.minHeight}var S=function(e,t,r,n){var a=i(t||e,r||e),s=o.map(Math.cos(a.angle)*h.flattening,0,1,1,0),l=a.angle*s+(n?Math.PI:0),u=a.length*h.smoothing;return[e[0]+Math.cos(l)*u,e[1]+Math.sin(l)*u]},D=function(e,t,r){var n=S(r[t-1],r[t-2],e),a=S(e,r[t-1],r[t+1],!0),o=t===r.length-1?" z":"";return"C ".concat(n[0],",").concat(n[1]," ").concat(a[0],",").concat(a[1]," ").concat(e[0],",").concat(e[1]).concat(o)},M=m.map(function(e){return[o.map(e[0],h.xMin,h.xMax,0,f.w),o.map(e[1],h.yMin,h.yMax,f.h,0)]}).reduce(function(e,t,r,n){return 0===r?"M ".concat(n[n.length-1][0],",").concat(f.h," L ").concat(t[0],",").concat(f.h," L ").concat(t[0],",").concat(t[1]):"".concat(e," ").concat(D(t,r,n))},"");s.innerHTML='\n\n\n\n\n\n\n\n\n\n\n\n '),l=n("#heatmap-start",s),u=n("#heatmap-stop",s),l.setAttribute("offset","".concat(100*e.played,"%")),u.setAttribute("offset","".concat(100*e.played,"%"))}}}e.on("video:timeupdate",function(){l&&u&&(l.setAttribute("offset","".concat(100*e.played,"%")),u.setAttribute("offset","".concat(100*e.played,"%")))}),e.on("setBar",function(e,t){l&&u&&"played"===e&&(l.setAttribute("offset","".concat(100*t,"%")),u.setAttribute("offset","".concat(100*t,"%")))}),e.on("ready",function(){return c()}),e.on("resize",function(){return c()}),e.on("artplayerPluginDanmuku:loaded",function(){return c()}),e.on("artplayerPluginDanmuku:points",function(e){return c(e)})}})}},{"@swc/helpers/_/_to_consumable_array":"iwLF0","@parcel/transformer-js/src/esmodule-helpers.js":"iWrD0"}]},["40mNk"],"40mNk","parcelRequire4dc0"); \ No newline at end of file diff --git a/packages/artplayer-plugin-danmuku/src/bilibili.js b/packages/artplayer-plugin-danmuku/src/bilibili.js index 381055d1e..0c7d2d3c7 100644 --- a/packages/artplayer-plugin-danmuku/src/bilibili.js +++ b/packages/artplayer-plugin-danmuku/src/bilibili.js @@ -1,21 +1,22 @@ -export function getMode(key) { +function getMode(key) { switch (key) { case 1: case 2: case 3: - return 0; // 滚动 + return 0; case 4: - return 2; // 底部 + return 2; case 5: - return 1; // 顶部 + return 1; default: return 0; } } -export function bilibiliDanmuParseFromXml(xmlString) { +function bilibiliDanmuParseFromXml(xmlString) { if (typeof xmlString !== 'string') return []; - const matches = xmlString.matchAll(/(?.+?)<\/d>/gs); + const reg = new RegExp(/(?.+?)<\/d>/gs); + const matches = xmlString.matchAll(reg); return Array.from(matches) .map((match) => { const attr = match.groups.p.split(','); @@ -46,8 +47,40 @@ export function bilibiliDanmuParseFromXml(xmlString) { .filter(Boolean); } -export async function bilibiliDanmuParseFromUrl(url) { - const res = await fetch(url); - const xmlString = await res.text(); - return bilibiliDanmuParseFromXml(xmlString); +function onmessage({ data }) { + const { xml, id } = data; + if (!id || !xml) return; + const danmus = bilibiliDanmuParseFromXml(xml); + self.postMessage({ danmus, id }); +} + +function createWorker() { + const workerText = ` + ${getMode.toString()} + ${bilibiliDanmuParseFromXml.toString()} + onmessage = ${onmessage.toString()} + `; + const blob = new Blob([workerText], { type: 'application/javascript' }); + return new Worker(URL.createObjectURL(blob)); +} + +export function bilibiliDanmuParseFromUrl(url) { + return new Promise(async (resolve) => { + const res = await fetch(url); + const xml = await res.text(); + + try { + const worker = createWorker(); + worker.onmessage = (event) => { + const { danmus, id } = event.data; + if (!id || !danmus) return; + resolve(danmus); + worker.terminate(); + }; + worker.postMessage({ xml, id: Date.now() }); + } catch (error) { + const danmus = bilibiliDanmuParseFromXml(xml); + resolve(danmus); + } + }); }