diff --git a/docs/compiled/artplayer-plugin-danmuku.js b/docs/compiled/artplayer-plugin-danmuku.js index d6ccaeb3d..39768dd51 100644 --- a/docs/compiled/artplayer-plugin-danmuku.js +++ b/docs/compiled/artplayer-plugin-danmuku.js @@ -5,4 +5,4 @@ * (c) 2017-2026 Harvey Zhao * Released under the MIT License. */ -!function(t,e,i,a,n){var o="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},s="function"==typeof o[a]&&o[a],r=s.i||{},l=s.cache||{},d="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function p(e,i){if(!l[e]){if(!t[e]){if(n[e])return n[e];var r="function"==typeof o[a]&&o[a];if(!i&&r)return r(e,!0);if(s)return s(e,!0);if(d&&"string"==typeof e)return d(e);var u=Error("Cannot find module '"+e+"'");throw u.code="MODULE_NOT_FOUND",u}m.resolve=function(i){var a=t[e][1][i];return null!=a?a:i},m.cache={};var h=l[e]=new p.Module(e);t[e][0].call(h.exports,m,h,h.exports,o)}return l[e].exports;function m(t){var e=m.resolve(t);if(!1===e)return{};if(Array.isArray(e)){var i={__esModule:!0};return e.forEach(function(t){var e=t[0],a=t[1],n=t[2]||t[0],o=p(a);"*"===e?Object.keys(o).forEach(function(t){"default"===t||"__esModule"===t||Object.prototype.hasOwnProperty.call(i,t)||Object.defineProperty(i,t,{enumerable:!0,get:function(){return o[t]}})}):"*"===n?Object.defineProperty(i,e,{enumerable:!0,value:o}):Object.defineProperty(i,e,{enumerable:!0,get:function(){return"default"===n?o.__esModule?o.default:o:o[n]}})}),i}return p(e)}}p.isParcelRequire=!0,p.Module=function(t){this.id=t,this.bundle=p,this.require=d,this.exports={}},p.modules=t,p.cache=l,p.parent=s,p.distDir=void 0,p.publicUrl=void 0,p.devServer=void 0,p.i=r,p.register=function(e,i){t[e]=[function(t,e){e.exports=i},{}]},Object.defineProperty(p,"root",{get:function(){return o[a]}}),o[a]=p;for(var u=0;utypeof module?module.exports=h:"function"==typeof define&&define.amd&&define(function(){return h})}}({"666Ok":[function(t,e,i,a){var n=t("@parcel/transformer-js/src/esmodule-helpers.js");n.defineInteropFlag(i),n.export(i,"default",()=>u);var o=t("./danmuku"),s=n.interopDefault(o),r=t("./heatmap"),l=n.interopDefault(r),d=t("./setting"),p=n.interopDefault(d);function u(t){return e=>{let i=new(0,s.default)(e,t),a=new(0,p.default)(e,i);return i.option.heatmap&&(0,l.default)(e,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}}}}u.icons=p.default.icons,"u">typeof window&&(window.artplayerPluginDanmuku=u)},{"./danmuku":"g81Wu","./heatmap":"hjtgU","./setting":"ho690","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],g81Wu:[function(t,e,i,a){var n=t("@parcel/transformer-js/src/esmodule-helpers.js");n.defineInteropFlag(i);var o=t("bundle-text:./worker"),s=n.interopDefault(o),r=t("./bilibili");class l{constructor(t,e){const{constructor:i,template:a}=t;this.utils=i.utils,this.validator=i.validator,this.$danmuku=a.$danmuku,this.$player=a.$player,this.art=t,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(e,!0);const n=new Blob([s.default.replace("export{e as default};","")],{type:"application/javascript"});this.worker=new Worker(URL.createObjectURL(n)),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),t.on("video:play",this.start),t.on("video:playing",this.start),t.on("video:pause",this.stop),t.on("video:waiting",this.stop),t.on("destroy",this.destroy),t.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,width:512,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",width:"number",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:t}=this.utils,e=this.option.margin[0],{clientHeight:i}=this.$player;return"number"==typeof e?t(e,0,i):"string"==typeof e&&e.endsWith("%")?t(i*(Number.parseFloat(e)/100),0,i):l.option.margin[0]}get marginBottom(){let{clamp:t}=this.utils,e=this.option.margin[1],{clientHeight:i}=this.$player;return"number"==typeof e?t(e,0,i):"string"==typeof e&&e.endsWith("%")?t(i*(Number.parseFloat(e)/100),0,i):l.option.margin[1]}get fontSize(){let{clamp:t}=this.utils,{clientHeight:e}=this.$player,i=this.option.fontSize;return"number"==typeof i?Math.round(t(i,12,e)):"string"==typeof i&&i.endsWith("%")?Math.round(t(e*(Number.parseFloat(i)/100),12,e)):l.option.fontSize}get $ref(){let t=this.$refs.pop()||document.createElement("div");return t.style.cssText=l.cssText,t.dataset.mode="",t.dataset.id="",t.className="",t}get readys(){let{currentTime:t}=this.art,e=[];return this.filter("ready",t=>e.push(t)),this.filter("wait",i=>{t+.1>=i.time&&i.time>=t-.1&&e.push(i)}),e}get visibles(){let t=[],{clientWidth:e}=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,r=a.$ref.clientWidth,l=o+r,d=l/a.$restTime,p={};p.top=n,p.left=o,p.height=s,p.width=r,p.right=e-l,p.speed=d,p.distance=l,p.time=a.$restTime,p.mode=a.mode,t.push(p)}),t}get speed(){return this.option.synchronousPlayback&&this.art.playbackRate?this.option.speed/Number(this.art.playbackRate):this.option.speed}async load(t){let{errorHandle:e}=this.utils,i=[],a=t||this.option.danmuku;try{"function"==typeof a?i=await a():a instanceof Promise?i=await a:"string"==typeof a?i=await (0,r.bilibiliDanmuParseFromUrl)(a):Array.isArray(a)&&(i=a),e(Array.isArray(i),"Danmuku need return an array as result"),void 0===t&&(this.reset(),this.queue=[],this.states={wait:[],ready:[],emit:[],stop:[]},this.$refs=[],this.$danmuku.textContent="");for(let t=0;tJSON.stringify(this.option[e])!==JSON.stringify(t[e]))||e)&&(this.option=Object.assign({},l.option,this.option,t),this.validator(this.option,l.scheme),this.option.mode=i(this.option.mode,0,2),this.option.speed=i(this.option.speed,1,10),this.option.opacity=i(this.option.opacity,0,1),this.option.lockTime=i(this.option.lockTime,1,60),this.option.maxLength=i(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}getLeft(t){let e=t.getBoundingClientRect();return this.isRotate?e.top:e.left}postMessage(t={}){return new Promise(e=>{t.id=Date.now(),this.worker.postMessage(t),this.worker.onmessage=i=>{let{data:a}=i;a.id===t.id&&e(a)}})}filter(t,e){let i=this.states[t]||[];for(let t=0;te!==t),t.$state=e,t.$ref&&(t.$ref.dataset.state=e),this.states[e].push(t)}makeWait(t){this.setState(t,"wait"),t.$ref&&(t.$ref.style.cssText=l.cssText,t.$ref.style.visibility="hidden",t.$ref.style.marginLeft="0px",t.$ref.style.transform="translateX(0px)",t.$ref.style.transition="transform 0s linear 0s",this.$refs.push(t.$ref),t.$ref=null)}update(){let{setStyles:t}=this.utils;return this.timer=window.requestAnimationFrame(async()=>{if(this.art.playing&&!this.isHide){this.filter("emit",t=>{let e=(Date.now()-t.$lastStartTime)/1e3;t.$restTime-=e,t.$lastStartTime=Date.now(),t.$restTime<=0&&this.makeWait(t)});let e=this.readys;for(let i=0;i{0===e.mode&&(e.$ref.style.left=`${t}px`)}),this.filter("emit",e=>{if(e.$lastStartTime=Date.now(),0===e.mode){let i=t+e.$ref.clientWidth;e.$ref.style.left=`${t}px`,e.$ref.style.transform=`translateX(${-i}px)`,e.$ref.style.transition=`transform ${e.$restTime}s linear 0s`}})}continue(){let{clientWidth:t}=this.$player;return this.filter("stop",e=>{if(this.setState(e,"emit"),e.$lastStartTime=Date.now(),0===e.mode){let i=t+e.$ref.clientWidth;e.$ref.style.transform=`translateX(${-i}px)`,e.$ref.style.transition=`transform ${e.$restTime}s linear 0s`}}),this}suspend(){let{clientWidth:t}=this.$player;return this.filter("emit",e=>{if(this.setState(e,"stop"),0===e.mode){let i=t-(this.getLeft(e.$ref)-this.getLeft(this.$player));e.$ref.style.transform=`translateX(${-i}px)`,e.$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(t=>this.makeWait(t)),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},{"bundle-text:./worker":"f8uCH","./bilibili":"jICn4","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],f8uCH:[function(t,e,i,a){e.exports='!function(e,t,r,o,i){var n="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},u="function"==typeof n[o]&&n[o],l=u.i||{},f=u.cache||{},p="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function s(t,r){if(!f[t]){if(!e[t]){if(i[t])return i[t];var l="function"==typeof n[o]&&n[o];if(!r&&l)return l(t,!0);if(u)return u(t,!0);if(p&&"string"==typeof t)return p(t);var d=Error("Cannot find module \'"+t+"\'");throw d.code="MODULE_NOT_FOUND",d}a.resolve=function(r){var o=e[t][1][r];return null!=o?o:r},a.cache={};var h=f[t]=new s.Module(t);e[t][0].call(h.exports,a,h,h.exports,n)}return f[t].exports;function a(e){var t=a.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var r={__esModule:!0};return t.forEach(function(e){var t=e[0],o=e[1],i=e[2]||e[0],n=s(o);"*"===t?Object.keys(n).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(r,e)||Object.defineProperty(r,e,{enumerable:!0,get:function(){return n[e]}})}):"*"===i?Object.defineProperty(r,t,{enumerable:!0,value:n}):Object.defineProperty(r,t,{enumerable:!0,get:function(){return"default"===i?n.__esModule?n.default:n:n[i]}})}),r}return s(t)}}s.isParcelRequire=!0,s.Module=function(e){this.id=e,this.bundle=s,this.require=p,this.exports={}},s.modules=e,s.cache=f,s.parent=u,s.distDir=void 0,s.publicUrl=void 0,s.devServer=void 0,s.i=l,s.register=function(t,r){e[t]=[function(e,t){t.exports=r},{}]},Object.defineProperty(s,"root",{get:function(){return n[o]}}),n[o]=s;for(var d=0;dtypeof module?module.exports=h:"function"==typeof define&&define.amd&&define(function(){return h})}}({fpBtQ:[function(e,t,r,o){function i({target:e,visibles:t,clientWidth:r,clientHeight:o,marginBottom:n,marginTop:u,antiOverlap:l}){let f=o-n,p=t.filter(t=>t.mode===e.mode&&t.top<=f).sort((e,t)=>e.top-t.top);if(0===p.length)if(2===e.mode)return f-e.height;else return u;if(p.unshift({type:"top",top:0,left:0,right:0,height:u,width:r,speed:0,distance:r}),p.push({type:"bottom",top:f,left:0,right:0,height:n,width:r,speed:0,distance:r}),2===e.mode)for(let t=p.length-2;t>=0;t-=1){let r=p[t],o=p[t+1],i=r.top+r.height;if(o.top-i>=e.height)return o.top-e.height}else for(let t=1;t=e.height)return i}let s=[];for(let e=1;et.every(t=>!(rt.time))));return t&&t[0]?t[0].top:void 0}case 1:case 2:return}else{switch(e.mode){case 0:s.sort((e,t)=>{let r=Math.min(...t.map(e=>e.right)),o=Math.min(...e.map(e=>e.right));return r*t.length-o*e.length});break;case 1:case 2:s.sort((e,t)=>{let r=Math.max(...t.map(e=>e.width));return Math.max(...e.map(e=>e.width))*e.length-r*t.length})}return s[0][0].top}}onmessage=e=>{let{data:t}=e;t.id&&t.type&&globalThis.postMessage({result:(0,({getDanmuTop:i})[t.type])(t),id:t.id})}},{}]},["fpBtQ"],"fpBtQ","parcelRequire4dc0",{});'},{}],jICn4:[function(t,e,i,a){var n=t("@parcel/transformer-js/src/esmodule-helpers.js");function o(t){switch(t){case 1:case 2:case 3:default:return 0;case 4:return 2;case 5:return 1}}function s(t){return"string"!=typeof t?[]:Array.from(t.matchAll(/]*?p="(?

[^"]+)"[^>]*>(?.*?)<\/d>/gs)).map(t=>{let e=t.groups.p.split(",");return e.length>=8?{text:t.groups.text.trim().replaceAll(""",'"').replaceAll("'","'").replaceAll("<","<").replaceAll(">",">").replaceAll("&","&"),time:Number(e[0]),mode:o(Number(e[1])),fontSize:Number(e[2]),color:`#${Number(e[3]).toString(16)}`,timestamp:Number(e[4]),pool:Number(e[5]),userID:e[6],rowID:Number(e[7])}:null}).filter(Boolean)}function r({data:t}){let{xml:e,id:i}=t;i&&e&&globalThis.postMessage({danmus:s(e),id:i})}function l(t){return new Promise(async e=>{let i=await fetch(t),a=await i.text();try{let t,i=(t=new Blob([` ${o.toString()} ${s.toString()} onmessage = ${r.toString()} `],{type:"application/javascript"}),new Worker(URL.createObjectURL(t)));i.onmessage=t=>{let{danmus:a,id:n}=t.data;n&&a&&(e(a),i.terminate())},i.postMessage({xml:a,id:Date.now()})}catch(t){console.error("Error parsing Bilibili Danmu:",t),e(s(a))}})}n.defineInteropFlag(i),n.export(i,"bilibiliDanmuParseFromUrl",()=>l)},{"@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"6ykb1":[function(t,e,i,a){i.interopDefault=function(t){return t&&t.__esModule?t:{default:t}},i.defineInteropFlag=function(t){Object.defineProperty(t,"__esModule",{value:!0})},i.exportAll=function(t,e){return Object.keys(t).forEach(function(i){"default"===i||"__esModule"===i||Object.prototype.hasOwnProperty.call(e,i)||Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[i]}})}),e},i.export=function(t,e,i){Object.defineProperty(t,e,{enumerable:!0,get:i})}},{}],hjtgU:[function(t,e,i,a){var n=t("@parcel/transformer-js/src/esmodule-helpers.js");n.defineInteropFlag(i),n.export(i,"default",()=>s);let o={map:(t,e,i,a,n)=>(t-e)*(n-a)/(i-e)+a,range(t,e,i){let a=Math.round(t/i)*i;return Array.from({length:Math.floor((e-t)/i)},(t,e)=>e*i+a)}};function s(t,e,i){let{query:a}=t.constructor.utils;t.controls.add({name:"heatmap",position:"top",html:"",style:{position:"absolute",top:"-100px",left:"0px",right:"0px",height:"100px",width:"100%",pointerEvents:"none"},mounted(n){let s=null,r=null;function l(d=[]){if(s=null,r=null,n.innerHTML="",!t.duration||t.option.isLive)return;let p={w:n.offsetWidth,h:n.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=t.duration/p.w;for(let t=0;t<=p.w;t+=u.sampling){let a=e.queue.filter(({time:e})=>e>t*i&&e<=(t+u.sampling)*i).length;h.push([t,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(t=>t[1]),y=(Math.min(...g)+Math.max(...g))/2;for(let t=0;ty?1+u.scale:1-u.scale)+u.minHeight}let v=(t,e,i,a)=>{let n,s,r=e||t,l=i||t,d=(n=l[0]-r[0],{length:Math.sqrt(n**2+(s=l[1]-r[1])**2),angle:Math.atan2(s,n)}),p=o.map(Math.cos(d.angle)*u.flattening,0,1,1,0),h=d.angle*p+(a?Math.PI:0),m=d.length*u.smoothing;return[t[0]+Math.cos(h)*m,t[1]+Math.sin(h)*m]},x=h.map(t=>[o.map(t[0],u.xMin,u.xMax,0,p.w),o.map(t[1],u.yMin,u.yMax,p.h,0)]).reduce((t,e,i,a)=>{let n,o,s;return 0===i?`M ${a[a.length-1][0]},${p.h} L ${e[0]},${p.h} L ${e[0]},${e[1]}`:`${t} ${n=v(a[i-1],a[i-2],e),o=v(e,a[i-1],a[i+1],!0),s=i===a.length-1?" z":"",`C ${n[0]},${n[1]} ${o[0]},${o[1]} ${e[0]},${e[1]}${s}`}`},"");n.innerHTML=``,s=a("#heatmap-start",n),r=a("#heatmap-stop",n),s.setAttribute("offset",`${100*t.played}%`),r.setAttribute("offset",`${100*t.played}%`)}t.on("video:timeupdate",()=>{s&&r&&(s.setAttribute("offset",`${100*t.played}%`),r.setAttribute("offset",`${100*t.played}%`))}),t.on("setBar",(t,e)=>{s&&r&&"played"===t&&(s.setAttribute("offset",`${100*e}%`),r.setAttribute("offset",`${100*e}%`))}),t.on("ready",()=>l()),t.on("resize",()=>l()),t.on("artplayerPluginDanmuku:loaded",()=>l()),t.on("artplayerPluginDanmuku:points",t=>l(t))}})}},{"@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],ho690:[function(t,e,i,a){var n=t("@parcel/transformer-js/src/esmodule-helpers.js");n.defineInteropFlag(i);var o=t("bundle-text:./img/check_off.svg"),s=n.interopDefault(o),r=t("bundle-text:./img/check_on.svg"),l=n.interopDefault(r),d=t("bundle-text:./img/config.svg"),p=n.interopDefault(d),u=t("bundle-text:./img/mode_0_off.svg"),h=n.interopDefault(u),m=t("bundle-text:./img/mode_0_on.svg"),c=n.interopDefault(m),f=t("bundle-text:./img/mode_1_off.svg"),g=n.interopDefault(f),y=t("bundle-text:./img/mode_1_on.svg"),v=n.interopDefault(y),x=t("bundle-text:./img/mode_2_off.svg"),k=n.interopDefault(x),b=t("bundle-text:./img/mode_2_on.svg"),$=n.interopDefault(b),w=t("bundle-text:./img/off.svg"),M=n.interopDefault(w),D=t("bundle-text:./img/on.svg"),S=n.interopDefault(D),E=t("bundle-text:./img/style.svg"),A=n.interopDefault(E),O=t("bundle-text:./style.less"),j=n.interopDefault(O);if(i.default=class{constructor(t,e){this.art=t,this.danmuku=e,this.utils=t.constructor.utils;const{setStyle:i}=this.utils,{$controlsCenter:a}=t.template;i(a,"display","flex"),this.template={$controlsCenter:a,$mount:a,$danmuku:null,$toggle:null,$config:null,$configPanel:null,$configModes:null,$style:null,$stylePanel: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),t.on("resize",()=>this.resize()),t.on("fullscreen",t=>this.onFullscreen(t)),t.on("fullscreenWeb",t=>this.onFullscreen(t)),t.proxy(this.template.$config,"mouseenter",()=>{this.onMouseEnter({$control:this.template.$config,$panel:this.template.$configPanel})}),t.proxy(this.template.$style,"mouseenter",()=>{this.onMouseEnter({$control:this.template.$style,$panel:this.template.$stylePanel})})}static get icons(){return{$on:S.default,$off:M.default,$config:p.default,$style:A.default,$mode_0_off:h.default,$mode_0_on:c.default,$mode_1_off:g.default,$mode_1_on:v.default,$mode_2_off:k.default,$mode_2_on:$.default,$check_on:l.default,$check_off:s.default}}get option(){return this.danmuku.option}get outside(){return this.template.$mount!==this.template.$controlsCenter}get TEMPLATE(){let{option:t}=this;return`

${S.default}${M.default}
${p.default}
\u{6309}\u{7C7B}\u{578B}\u{5C4F}\u{853D}
${h.default}${c.default}
\u{6EDA}\u{52A8}
${g.default}${v.default}
\u{9876}\u{90E8}
${k.default}${$.default}
\u{5E95}\u{90E8}
${l.default}${s.default} \u{9632}\u{6B62}\u{5F39}\u{5E55}\u{91CD}\u{53E0}
${l.default}${s.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}
${A.default}
\u{6A21}\u{5F0F}
${c.default}
\u{6EDA}\u{52A8}
${v.default}
\u{9876}\u{90E8}
${$.default}
\u{5E95}\u{90E8}
\u{989C}\u{8272}
${this.COLOR.map(t=>`
`).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(t){let{query:e}=this.utils,{$danmuku:i}=this.template;return e(t,i)}append(t,e){let{append:i}=this.utils;[...t.children].includes(e)||i(t,e)}setData(t,e){let{$player:i}=this.art.template,{$mount:a}=this.template;i.dataset[t]=e,this.outside&&(a.dataset[t]=e)}createTemplate(){let{createElement:t,tooltip:e}=this.utils,i=t("div");i.className="artplayer-plugin-danmuku",i.innerHTML=this.TEMPLATE,this.template.$danmuku=i,this.template.$toggle=this.query(".apd-toggle"),this.template.$config=this.query(".apd-config"),this.template.$configPanel=this.query(".apd-config-panel"),this.template.$configModes=this.query(".apd-config-mode .apd-modes"),this.template.$style=this.query(".apd-style"),this.template.$stylePanel=this.query(".apd-style-panel"),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",()=>{e(a,"关闭弹幕")}),this.art.on("artplayerPluginDanmuku:hide",()=>{e(a,"打开弹幕")})}createEvents(){let{$toggle:t,$configModes:e,$styleModes:i,$colors:a,$antiOverlap:n,$syncVideo:o,$send:s,$input:r}=this.template;this.art.proxy(t,"click",()=>{this.danmuku.config({visible:!this.option.visible}),this.reset()}),this.art.proxy(e,"click",t=>{let e=t.target.closest(".apd-mode");if(!e)return;let i=Number(e.dataset.mode);this.option.modes.includes(i)?this.danmuku.config({modes:this.option.modes.filter(t=>t!==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",t=>{let e=t.target.closest(".apd-mode");if(!e)return;let i=Number(e.dataset.mode);this.danmuku.config({mode:i}),this.reset()}),this.art.proxy(a,"click",t=>{let e=t.target.closest(".apd-color");e&&(this.danmuku.config({color:e.dataset.color}),this.reset())}),this.art.proxy(s,"click",()=>this.emit()),this.art.proxy(r,"keypress",t=>{"Enter"===t.key&&(t.preventDefault(),this.emit())})}createSliders(){this.slider.opacity=this.createSlider({...this.OPACITY,container:this.template.$opacitySlider,findIndex:()=>Math.round(100*this.option.opacity),onChange:t=>{let{$opacityValue:e}=this.template;e.textContent=`${t}%`,this.danmuku.config({opacity:t/100})}}),this.slider.margin=this.createSlider({...this.MARGIN,container:this.template.$marginSlider,findIndex:()=>this.MARGIN.steps.findIndex(t=>t.value[0]===this.option.margin[0]&&t.value[1]===this.option.margin[1]),onChange:t=>{let e=this.MARGIN.steps[t];if(!e)return;let{$marginValue:i}=this.template;i.textContent=e.name,this.danmuku.config({margin:e.value})}}),this.slider.fontSize=this.createSlider({...this.FONT_SIZE,container:this.template.$fontSizeSlider,findIndex:()=>this.danmuku.fontSize,onChange:t=>{let{$fontSizeValue:e}=this.template;e.textContent=`${t}px`,t!==this.danmuku.fontSize&&this.danmuku.config({fontSize:t})}}),this.slider.speed=this.createSlider({...this.SPEED,container:this.template.$speedSlider,findIndex:()=>this.SPEED.steps.findIndex(t=>t.value===this.option.speed),onChange:t=>{let e=this.SPEED.steps[t];if(!e)return;let{$speedValue:i}=this.template;i.textContent=e.name,this.danmuku.config({speed:e.value})}})}createSlider({min:t,max:e,container:i,findIndex:a,onChange:n,steps:o=[]}){let{query:s,clamp:r,setStyle:l}=this.utils;l(i,"touch-action","none"),i.innerHTML=`
${o.map(()=>'
').join("")}
${o.map(t=>t.hide?"":`
${t.name}
`).join("")}
`;let d=s(".apd-slider-dot",i),p=s(".apd-slider-progress",i),u=!1;function h(i=a()){if(ie)return;let s=(i-t)/(e-t);d.style.left=`${100*s}%`,0===o.length&&(p.style.width=d.style.left),n(i)}function m(a){let{top:n,height:o,left:s,width:l}=i.getBoundingClientRect();this.art.isRotate?h(Math.round(r(a.clientY-n,0,o)/o*(e-t)+t)):h(Math.round(r(a.clientX-s,0,l)/l*(e-t)+t))}return this.art.proxy(i,"click",t=>{m.call(this,t)}),this.art.proxy(i,"pointerdown",t=>{u=0===t.button}),this.art.on("document:pointermove",t=>{u&&m.call(this,t)}),this.art.on("document:pointerup",t=>{u&&(u=!1,m.call(this,t))}),{reset:h}}onFullscreen(t){let{$danmuku:e,$controlsCenter:i,$mount:a}=this.template;this.outside?t?this.append(i,e):this.append(a,e):this.append(i,e)}onMouseEnter({$control:t,$panel:e}){let{$player:i}=this.art.template,a=t.getBoundingClientRect(),n=e.getBoundingClientRect(),o=i.getBoundingClientRect(),s=n.width/2-a.width/2,r=o.left-(a.left-s),l=a.right+s-o.right;r>0?e.style.left=`${-s+r}px`:l>0?e.style.left=`${-s-l}px`:e.style.left=`${-s}px`}async emit(){let{$input:t}=this.template,e=t.value.trim();if(!e.length||this.isLock||this.emitting)return;let i={text:e,mode:this.option.mode,color:this.option.color,time:this.art.currentTime};try{this.emitting=!0;let e=await this.option.beforeEmit(i);if(this.emitting=!1,!0!==e)return;i.border=!0,delete i.time,this.danmuku.emit(i),t.value="",this.lock()}catch(t){console.error("Error emitting danmuku:",t),this.emitting=!1}}lock(){let{addClass:t}=this.utils,{$send:e}=this.template;this.isLock=!0;let i=this.option.lockTime;e.textContent=i,t(e,"apd-lock");let a=()=>{this.timer=setTimeout(()=>{0===i?this.unlock():(e.textContent=i-=1,a())},1e3)};a()}unlock(){let{removeClass:t}=this.utils,{$send:e}=this.template;clearTimeout(this.timer),this.isLock=!1,e.textContent="发送",t(e,"apd-lock")}resize(){if(this.outside||this.art.fullscreen||this.art.fullscreenWeb)return;let{$player:t,$controlsCenter:e}=this.art.template,{$danmuku:i}=this.template;this.art.widtht.dataset.color===this.option.color.toUpperCase());n&&t(n,"apd-active"),e(i,this.option.visible?"关闭弹幕":"打开弹幕"),this.resize()}mount(t){let{errorHandle:e}=this.utils,i="string"==typeof t?document.querySelector(t):t;e(i,`Can not find the mount point: ${t}`),this.append(i,this.template.$danmuku),this.template.$mount=i,this.reset()}},"u">typeof document){let t="artplayer-plugin-danmuku",e=document.getElementById(t);e||((e=document.createElement("style")).id=t,"loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>{document.head.appendChild(e)}):(document.head||document.documentElement).appendChild(e)),e.textContent=j.default}},{"bundle-text:./img/check_off.svg":"2pPC1","bundle-text:./img/check_on.svg":"47UDb","bundle-text:./img/config.svg":"kCi8g","bundle-text:./img/mode_0_off.svg":"7HQlG","bundle-text:./img/mode_0_on.svg":"t7s2B","bundle-text:./img/mode_1_off.svg":"lkKl2","bundle-text:./img/mode_1_on.svg":"8f8zW","bundle-text:./img/mode_2_off.svg":"emrpJ","bundle-text:./img/mode_2_on.svg":"1fmjY","bundle-text:./img/off.svg":"8Ug2A","bundle-text:./img/on.svg":"1BQ1c","bundle-text:./img/style.svg":"b24KT","bundle-text:./style.less":"k8RGI","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"2pPC1":[function(t,e,i,a){e.exports=''},{}],"47UDb":[function(t,e,i,a){e.exports=''},{}],kCi8g:[function(t,e,i,a){e.exports=''},{}],"7HQlG":[function(t,e,i,a){e.exports=''},{}],t7s2B:[function(t,e,i,a){e.exports=''},{}],lkKl2:[function(t,e,i,a){e.exports=''},{}],"8f8zW":[function(t,e,i,a){e.exports=''},{}],emrpJ:[function(t,e,i,a){e.exports=''},{}],"1fmjY":[function(t,e,i,a){e.exports=''},{}],"8Ug2A":[function(t,e,i,a){e.exports=''},{}],"1BQ1c":[function(t,e,i,a){e.exports=''},{}],b24KT:[function(t,e,i,a){e.exports=''},{}],k8RGI:[function(t,e,i,a){e.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{opacity:0;pointer-events:none;width:320px;padding:10px;position:absolute;bottom:24px;left:0}.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{opacity:100;pointer-events:all}.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{opacity:0;pointer-events:none;width:200px;padding:10px;position:absolute;bottom:24px;left:0}.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{opacity:100;pointer-events:all}.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;width:60px;height:100%;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;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}.art-video-player>.artplayer-plugin-danmuku{padding:0 10px;position:absolute;bottom:-40px;left:0;right:0}.art-video-player:has(>.artplayer-plugin-danmuku){margin-bottom:40px}[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}'},{}]},["666Ok"],"666Ok","parcelRequire4dc0",{}); \ No newline at end of file +!function(t,e,i,a,n,o,s,r){var l="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},d="function"==typeof l[a]&&l[a],p=d.i||{},u=d.cache||{},h="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function m(e,i){if(!u[e]){if(!t[e]){if(n[e])return n[e];var o="function"==typeof l[a]&&l[a];if(!i&&o)return o(e,!0);if(d)return d(e,!0);if(h&&"string"==typeof e)return h(e);var s=Error("Cannot find module '"+e+"'");throw s.code="MODULE_NOT_FOUND",s}p.resolve=function(i){var a=t[e][1][i];return null!=a?a:i},p.cache={};var r=u[e]=new m.Module(e);t[e][0].call(r.exports,p,r,r.exports,l)}return u[e].exports;function p(t){var e=p.resolve(t);if(!1===e)return{};if(Array.isArray(e)){var i={__esModule:!0};return e.forEach(function(t){var e=t[0],a=t[1],n=t[2]||t[0],o=m(a);"*"===e?Object.keys(o).forEach(function(t){"default"===t||"__esModule"===t||Object.prototype.hasOwnProperty.call(i,t)||Object.defineProperty(i,t,{enumerable:!0,get:function(){return o[t]}})}):"*"===n?Object.defineProperty(i,e,{enumerable:!0,value:o}):Object.defineProperty(i,e,{enumerable:!0,get:function(){return"default"===n?o.__esModule?o.default:o:o[n]}})}),i}return m(e)}}m.isParcelRequire=!0,m.Module=function(t){this.id=t,this.bundle=m,this.require=h,this.exports={}},m.modules=t,m.cache=u,m.parent=d,m.distDir=void 0,m.publicUrl=void 0,m.devServer=void 0,m.i=p,m.register=function(e,i){t[e]=[function(t,e){e.exports=i},{}]},Object.defineProperty(m,"root",{get:function(){return l[a]}}),l[a]=m;for(var c=0;ctypeof module?module.exports=f:"function"==typeof define&&define.amd&&define(function(){return f})}}({"666Ok":[function(t,e,i,a){var n=t("@parcel/transformer-js/src/esmodule-helpers.js");n.defineInteropFlag(i),n.export(i,"default",()=>u);var o=t("./danmuku"),s=n.interopDefault(o),r=t("./heatmap"),l=n.interopDefault(r),d=t("./setting"),p=n.interopDefault(d);function u(t){return e=>{let i=new(0,s.default)(e,t),a=new(0,p.default)(e,i);return i.option.heatmap&&(0,l.default)(e,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}}}}u.icons=p.default.icons,"u">typeof window&&(window.artplayerPluginDanmuku=u)},{"./danmuku":"g81Wu","./heatmap":"hjtgU","./setting":"ho690","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],g81Wu:[function(t,e,i,a){var n=t("@parcel/transformer-js/src/esmodule-helpers.js");n.defineInteropFlag(i);var o=t("bundle-text:./worker"),s=n.interopDefault(o),r=t("./bilibili");class l{constructor(t,e){const{constructor:i,template:a}=t;this.utils=i.utils,this.validator=i.validator,this.$danmuku=a.$danmuku,this.$player=a.$player,this.art=t,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(e,!0);const n=new Blob([s.default.replace("export{e as default};","")],{type:"application/javascript"});this.worker=new Worker(URL.createObjectURL(n)),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),t.on("video:play",this.start),t.on("video:playing",this.start),t.on("video:pause",this.stop),t.on("video:waiting",this.stop),t.on("destroy",this.destroy),t.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,width:512,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",width:"number",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:t}=this.utils,e=this.option.margin[0],{clientHeight:i}=this.$player;return"number"==typeof e?t(e,0,i):"string"==typeof e&&e.endsWith("%")?t(i*(Number.parseFloat(e)/100),0,i):l.option.margin[0]}get marginBottom(){let{clamp:t}=this.utils,e=this.option.margin[1],{clientHeight:i}=this.$player;return"number"==typeof e?t(e,0,i):"string"==typeof e&&e.endsWith("%")?t(i*(Number.parseFloat(e)/100),0,i):l.option.margin[1]}get fontSize(){let{clamp:t}=this.utils,{clientHeight:e}=this.$player,i=this.option.fontSize;return"number"==typeof i?Math.round(t(i,12,e)):"string"==typeof i&&i.endsWith("%")?Math.round(t(e*(Number.parseFloat(i)/100),12,e)):l.option.fontSize}get $ref(){let t=this.$refs.pop()||document.createElement("div");return t.style.cssText=l.cssText,t.dataset.mode="",t.dataset.id="",t.className="",t}get readys(){let{currentTime:t}=this.art,e=[];return this.filter("ready",t=>e.push(t)),this.filter("wait",i=>{t+.1>=i.time&&i.time>=t-.1&&e.push(i)}),e}get visibles(){let t=[],{clientWidth:e}=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,r=a.$ref.clientWidth,l=o+r,d=l/a.$restTime,p={};p.top=n,p.left=o,p.height=s,p.width=r,p.right=e-l,p.speed=d,p.distance=l,p.time=a.$restTime,p.mode=a.mode,t.push(p)}),t}get speed(){return this.option.synchronousPlayback&&this.art.playbackRate?this.option.speed/Number(this.art.playbackRate):this.option.speed}async load(t){let{errorHandle:e}=this.utils,i=[],a=t||this.option.danmuku;try{"function"==typeof a?i=await a():a instanceof Promise?i=await a:"string"==typeof a?i=await (0,r.bilibiliDanmuParseFromUrl)(a):Array.isArray(a)&&(i=a),e(Array.isArray(i),"Danmuku need return an array as result"),void 0===t&&(this.reset(),this.queue=[],this.states={wait:[],ready:[],emit:[],stop:[]},this.$refs=[],this.$danmuku.textContent="");for(let t=0;tJSON.stringify(this.option[e])!==JSON.stringify(t[e]))||e)&&(this.option=Object.assign({},l.option,this.option,t),this.validator(this.option,l.scheme),this.option.mode=i(this.option.mode,0,2),this.option.speed=i(this.option.speed,1,10),this.option.opacity=i(this.option.opacity,0,1),this.option.lockTime=i(this.option.lockTime,1,60),this.option.maxLength=i(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}getLeft(t){let e=t.getBoundingClientRect();return this.isRotate?e.top:e.left}postMessage(t={}){return new Promise(e=>{t.id=Date.now(),this.worker.postMessage(t),this.worker.onmessage=i=>{let{data:a}=i;a.id===t.id&&e(a)}})}filter(t,e){let i=this.states[t]||[];for(let t=0;te!==t),t.$state=e,t.$ref&&(t.$ref.dataset.state=e),this.states[e].push(t)}makeWait(t){this.setState(t,"wait"),t.$ref&&(t.$ref.style.cssText=l.cssText,t.$ref.style.visibility="hidden",t.$ref.style.marginLeft="0px",t.$ref.style.transform="translateX(0px)",t.$ref.style.transition="transform 0s linear 0s",this.$refs.push(t.$ref),t.$ref=null)}update(){let{setStyles:t}=this.utils;return this.timer=window.requestAnimationFrame(async()=>{if(this.art.playing&&!this.isHide){this.filter("emit",t=>{let e=(Date.now()-t.$lastStartTime)/1e3;t.$restTime-=e,t.$lastStartTime=Date.now(),t.$restTime<=0&&this.makeWait(t)});let e=this.readys;for(let i=0;i{0===e.mode&&(e.$ref.style.left=`${t}px`)}),this.filter("emit",e=>{if(e.$lastStartTime=Date.now(),0===e.mode){let i=t+e.$ref.clientWidth;e.$ref.style.left=`${t}px`,e.$ref.style.transform=`translateX(${-i}px)`,e.$ref.style.transition=`transform ${e.$restTime}s linear 0s`}})}continue(){let{clientWidth:t}=this.$player;return this.filter("stop",e=>{if(this.setState(e,"emit"),e.$lastStartTime=Date.now(),0===e.mode){let i=t+e.$ref.clientWidth;e.$ref.style.transform=`translateX(${-i}px)`,e.$ref.style.transition=`transform ${e.$restTime}s linear 0s`}}),this}suspend(){let{clientWidth:t}=this.$player;return this.filter("emit",e=>{if(this.setState(e,"stop"),0===e.mode){let i=t-(this.getLeft(e.$ref)-this.getLeft(this.$player));e.$ref.style.transform=`translateX(${-i}px)`,e.$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(t=>this.makeWait(t)),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},{"bundle-text:./worker":"f8uCH","./bilibili":"jICn4","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],f8uCH:[function(t,e,i,a){e.exports='!function(e,t,r,o,i,n,u,l){var f="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},p="function"==typeof f[o]&&f[o],s=p.i||{},d=p.cache||{},h="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function a(t,r){if(!d[t]){if(!e[t]){if(i[t])return i[t];var n="function"==typeof f[o]&&f[o];if(!r&&n)return n(t,!0);if(p)return p(t,!0);if(h&&"string"==typeof t)return h(t);var u=Error("Cannot find module \'"+t+"\'");throw u.code="MODULE_NOT_FOUND",u}s.resolve=function(r){var o=e[t][1][r];return null!=o?o:r},s.cache={};var l=d[t]=new a.Module(t);e[t][0].call(l.exports,s,l,l.exports,f)}return d[t].exports;function s(e){var t=s.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var r={__esModule:!0};return t.forEach(function(e){var t=e[0],o=e[1],i=e[2]||e[0],n=a(o);"*"===t?Object.keys(n).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(r,e)||Object.defineProperty(r,e,{enumerable:!0,get:function(){return n[e]}})}):"*"===i?Object.defineProperty(r,t,{enumerable:!0,value:n}):Object.defineProperty(r,t,{enumerable:!0,get:function(){return"default"===i?n.__esModule?n.default:n:n[i]}})}),r}return a(t)}}a.isParcelRequire=!0,a.Module=function(e){this.id=e,this.bundle=a,this.require=h,this.exports={}},a.modules=e,a.cache=d,a.parent=p,a.distDir=void 0,a.publicUrl=void 0,a.devServer=void 0,a.i=s,a.register=function(t,r){e[t]=[function(e,t){t.exports=r},{}]},Object.defineProperty(a,"root",{get:function(){return f[o]}}),f[o]=a;for(var c=0;ctypeof module?module.exports=g:"function"==typeof define&&define.amd&&define(function(){return g})}}({fpBtQ:[function(e,t,r,o){function i({target:e,visibles:t,clientWidth:r,clientHeight:o,marginBottom:i,marginTop:n,antiOverlap:u}){let l=o-i,f=t.filter(t=>t.mode===e.mode&&t.top<=l).sort((e,t)=>e.top-t.top);if(0===f.length)if(2===e.mode)return l-e.height;else return n;if(f.unshift({type:"top",top:0,left:0,right:0,height:n,width:r,speed:0,distance:r}),f.push({type:"bottom",top:l,left:0,right:0,height:i,width:r,speed:0,distance:r}),2===e.mode)for(let t=f.length-2;t>=0;t-=1){let r=f[t],o=f[t+1],i=r.top+r.height;if(o.top-i>=e.height)return o.top-e.height}else for(let t=1;t=e.height)return i}let p=[];for(let e=1;et.every(t=>!(rt.time))));return t&&t[0]?t[0].top:void 0}case 1:case 2:return}else{switch(e.mode){case 0:p.sort((e,t)=>{let r=Math.min(...t.map(e=>e.right)),o=Math.min(...e.map(e=>e.right));return r*t.length-o*e.length});break;case 1:case 2:p.sort((e,t)=>{let r=Math.max(...t.map(e=>e.width));return Math.max(...e.map(e=>e.width))*e.length-r*t.length})}return p[0][0].top}}onmessage=e=>{let{data:t}=e;t.id&&t.type&&globalThis.postMessage({result:(0,({getDanmuTop:i})[t.type])(t),id:t.id})}},{}]},["fpBtQ"],"fpBtQ","parcelRequire4dc0",{});'},{}],jICn4:[function(t,e,i,a){var n=t("@parcel/transformer-js/src/esmodule-helpers.js");function o(t){switch(t){case 1:case 2:case 3:default:return 0;case 4:return 2;case 5:return 1}}function s(t){return"string"!=typeof t?[]:Array.from(t.matchAll(/]*?p="(?

[^"]+)"[^>]*>(?.*?)<\/d>/gs)).map(t=>{let e=t.groups.p.split(",");return e.length>=8?{text:t.groups.text.trim().replaceAll(""",'"').replaceAll("'","'").replaceAll("<","<").replaceAll(">",">").replaceAll("&","&"),time:Number(e[0]),mode:o(Number(e[1])),fontSize:Number(e[2]),color:`#${Number(e[3]).toString(16)}`,timestamp:Number(e[4]),pool:Number(e[5]),userID:e[6],rowID:Number(e[7])}:null}).filter(Boolean)}function r({data:t}){let{xml:e,id:i}=t;i&&e&&globalThis.postMessage({danmus:s(e),id:i})}function l(t){return new Promise(async e=>{let i=await fetch(t),a=await i.text();try{let t,i=(t=new Blob([` ${o.toString()} ${s.toString()} onmessage = ${r.toString()} `],{type:"application/javascript"}),new Worker(URL.createObjectURL(t)));i.onmessage=t=>{let{danmus:a,id:n}=t.data;n&&a&&(e(a),i.terminate())},i.postMessage({xml:a,id:Date.now()})}catch(t){console.error("Error parsing Bilibili Danmu:",t),e(s(a))}})}n.defineInteropFlag(i),n.export(i,"bilibiliDanmuParseFromUrl",()=>l)},{"@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"6ykb1":[function(t,e,i,a){i.interopDefault=function(t){return t&&t.__esModule?t:{default:t}},i.defineInteropFlag=function(t){Object.defineProperty(t,"__esModule",{value:!0})},i.exportAll=function(t,e){return Object.keys(t).forEach(function(i){"default"===i||"__esModule"===i||Object.prototype.hasOwnProperty.call(e,i)||Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[i]}})}),e},i.export=function(t,e,i){Object.defineProperty(t,e,{enumerable:!0,get:i})}},{}],hjtgU:[function(t,e,i,a){var n=t("@parcel/transformer-js/src/esmodule-helpers.js");n.defineInteropFlag(i),n.export(i,"default",()=>s);let o={map:(t,e,i,a,n)=>(t-e)*(n-a)/(i-e)+a,range(t,e,i){let a=Math.round(t/i)*i;return Array.from({length:Math.floor((e-t)/i)},(t,e)=>e*i+a)}};function s(t,e,i){let{query:a}=t.constructor.utils;t.controls.add({name:"heatmap",position:"top",html:"",style:{position:"absolute",top:"-100px",left:"0px",right:"0px",height:"100px",width:"100%",pointerEvents:"none"},mounted(n){let s=null,r=null;function l(d=[]){if(s=null,r=null,n.innerHTML="",!t.duration||t.option.isLive)return;let p={w:n.offsetWidth,h:n.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=t.duration/p.w;for(let t=0;t<=p.w;t+=u.sampling){let a=e.queue.filter(({time:e})=>e>t*i&&e<=(t+u.sampling)*i).length;h.push([t,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(t=>t[1]),y=(Math.min(...g)+Math.max(...g))/2;for(let t=0;ty?1+u.scale:1-u.scale)+u.minHeight}let v=(t,e,i,a)=>{let n,s,r=e||t,l=i||t,d=(n=l[0]-r[0],{length:Math.sqrt(n**2+(s=l[1]-r[1])**2),angle:Math.atan2(s,n)}),p=o.map(Math.cos(d.angle)*u.flattening,0,1,1,0),h=d.angle*p+(a?Math.PI:0),m=d.length*u.smoothing;return[t[0]+Math.cos(h)*m,t[1]+Math.sin(h)*m]},x=h.map(t=>[o.map(t[0],u.xMin,u.xMax,0,p.w),o.map(t[1],u.yMin,u.yMax,p.h,0)]).reduce((t,e,i,a)=>{let n,o,s;return 0===i?`M ${a[a.length-1][0]},${p.h} L ${e[0]},${p.h} L ${e[0]},${e[1]}`:`${t} ${n=v(a[i-1],a[i-2],e),o=v(e,a[i-1],a[i+1],!0),s=i===a.length-1?" z":"",`C ${n[0]},${n[1]} ${o[0]},${o[1]} ${e[0]},${e[1]}${s}`}`},"");n.innerHTML=``,s=a("#heatmap-start",n),r=a("#heatmap-stop",n),s.setAttribute("offset",`${100*t.played}%`),r.setAttribute("offset",`${100*t.played}%`)}t.on("video:timeupdate",()=>{s&&r&&(s.setAttribute("offset",`${100*t.played}%`),r.setAttribute("offset",`${100*t.played}%`))}),t.on("setBar",(t,e)=>{s&&r&&"played"===t&&(s.setAttribute("offset",`${100*e}%`),r.setAttribute("offset",`${100*e}%`))}),t.on("ready",()=>l()),t.on("resize",()=>l()),t.on("artplayerPluginDanmuku:loaded",()=>l()),t.on("artplayerPluginDanmuku:points",t=>l(t))}})}},{"@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],ho690:[function(t,e,i,a){var n=t("@parcel/transformer-js/src/esmodule-helpers.js");n.defineInteropFlag(i);var o=t("bundle-text:./img/check_off.svg"),s=n.interopDefault(o),r=t("bundle-text:./img/check_on.svg"),l=n.interopDefault(r),d=t("bundle-text:./img/config.svg"),p=n.interopDefault(d),u=t("bundle-text:./img/mode_0_off.svg"),h=n.interopDefault(u),m=t("bundle-text:./img/mode_0_on.svg"),c=n.interopDefault(m),f=t("bundle-text:./img/mode_1_off.svg"),g=n.interopDefault(f),y=t("bundle-text:./img/mode_1_on.svg"),v=n.interopDefault(y),x=t("bundle-text:./img/mode_2_off.svg"),k=n.interopDefault(x),b=t("bundle-text:./img/mode_2_on.svg"),$=n.interopDefault(b),w=t("bundle-text:./img/off.svg"),M=n.interopDefault(w),D=t("bundle-text:./img/on.svg"),S=n.interopDefault(D),E=t("bundle-text:./img/style.svg"),A=n.interopDefault(E),O=t("bundle-text:./style.less"),j=n.interopDefault(O);if(i.default=class{constructor(t,e){this.art=t,this.danmuku=e,this.utils=t.constructor.utils;const{setStyle:i}=this.utils,{$controlsCenter:a}=t.template;i(a,"display","flex"),this.template={$controlsCenter:a,$mount:a,$danmuku:null,$toggle:null,$config:null,$configPanel:null,$configModes:null,$style:null,$stylePanel: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),t.on("resize",()=>this.resize()),t.on("fullscreen",t=>this.onFullscreen(t)),t.on("fullscreenWeb",t=>this.onFullscreen(t)),t.proxy(this.template.$config,"mouseenter",()=>{this.onMouseEnter({$control:this.template.$config,$panel:this.template.$configPanel})}),t.proxy(this.template.$style,"mouseenter",()=>{this.onMouseEnter({$control:this.template.$style,$panel:this.template.$stylePanel})})}static get icons(){return{$on:S.default,$off:M.default,$config:p.default,$style:A.default,$mode_0_off:h.default,$mode_0_on:c.default,$mode_1_off:g.default,$mode_1_on:v.default,$mode_2_off:k.default,$mode_2_on:$.default,$check_on:l.default,$check_off:s.default}}get option(){return this.danmuku.option}get outside(){return this.template.$mount!==this.template.$controlsCenter}get TEMPLATE(){let{option:t}=this;return`

${S.default}${M.default}
${p.default}
\u{6309}\u{7C7B}\u{578B}\u{5C4F}\u{853D}
${h.default}${c.default}
\u{6EDA}\u{52A8}
${g.default}${v.default}
\u{9876}\u{90E8}
${k.default}${$.default}
\u{5E95}\u{90E8}
${l.default}${s.default} \u{9632}\u{6B62}\u{5F39}\u{5E55}\u{91CD}\u{53E0}
${l.default}${s.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}
${A.default}
\u{6A21}\u{5F0F}
${c.default}
\u{6EDA}\u{52A8}
${v.default}
\u{9876}\u{90E8}
${$.default}
\u{5E95}\u{90E8}
\u{989C}\u{8272}
${this.COLOR.map(t=>`
`).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(t){let{query:e}=this.utils,{$danmuku:i}=this.template;return e(t,i)}append(t,e){let{append:i}=this.utils;[...t.children].includes(e)||i(t,e)}setData(t,e){let{$player:i}=this.art.template,{$mount:a}=this.template;i.dataset[t]=e,this.outside&&(a.dataset[t]=e)}createTemplate(){let{createElement:t,tooltip:e}=this.utils,i=t("div");i.className="artplayer-plugin-danmuku",i.innerHTML=this.TEMPLATE,this.template.$danmuku=i,this.template.$toggle=this.query(".apd-toggle"),this.template.$config=this.query(".apd-config"),this.template.$configPanel=this.query(".apd-config-panel"),this.template.$configModes=this.query(".apd-config-mode .apd-modes"),this.template.$style=this.query(".apd-style"),this.template.$stylePanel=this.query(".apd-style-panel"),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",()=>{e(a,"关闭弹幕")}),this.art.on("artplayerPluginDanmuku:hide",()=>{e(a,"打开弹幕")})}createEvents(){let{$toggle:t,$configModes:e,$styleModes:i,$colors:a,$antiOverlap:n,$syncVideo:o,$send:s,$input:r}=this.template;this.art.proxy(t,"click",()=>{this.danmuku.config({visible:!this.option.visible}),this.reset()}),this.art.proxy(e,"click",t=>{let e=t.target.closest(".apd-mode");if(!e)return;let i=Number(e.dataset.mode);this.option.modes.includes(i)?this.danmuku.config({modes:this.option.modes.filter(t=>t!==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",t=>{let e=t.target.closest(".apd-mode");if(!e)return;let i=Number(e.dataset.mode);this.danmuku.config({mode:i}),this.reset()}),this.art.proxy(a,"click",t=>{let e=t.target.closest(".apd-color");e&&(this.danmuku.config({color:e.dataset.color}),this.reset())}),this.art.proxy(s,"click",()=>this.emit()),this.art.proxy(r,"keypress",t=>{"Enter"===t.key&&(t.preventDefault(),this.emit())})}createSliders(){this.slider.opacity=this.createSlider({...this.OPACITY,container:this.template.$opacitySlider,findIndex:()=>Math.round(100*this.option.opacity),onChange:t=>{let{$opacityValue:e}=this.template;e.textContent=`${t}%`,this.danmuku.config({opacity:t/100})}}),this.slider.margin=this.createSlider({...this.MARGIN,container:this.template.$marginSlider,findIndex:()=>this.MARGIN.steps.findIndex(t=>t.value[0]===this.option.margin[0]&&t.value[1]===this.option.margin[1]),onChange:t=>{let e=this.MARGIN.steps[t];if(!e)return;let{$marginValue:i}=this.template;i.textContent=e.name,this.danmuku.config({margin:e.value})}}),this.slider.fontSize=this.createSlider({...this.FONT_SIZE,container:this.template.$fontSizeSlider,findIndex:()=>this.danmuku.fontSize,onChange:t=>{let{$fontSizeValue:e}=this.template;e.textContent=`${t}px`,t!==this.danmuku.fontSize&&this.danmuku.config({fontSize:t})}}),this.slider.speed=this.createSlider({...this.SPEED,container:this.template.$speedSlider,findIndex:()=>this.SPEED.steps.findIndex(t=>t.value===this.option.speed),onChange:t=>{let e=this.SPEED.steps[t];if(!e)return;let{$speedValue:i}=this.template;i.textContent=e.name,this.danmuku.config({speed:e.value})}})}createSlider({min:t,max:e,container:i,findIndex:a,onChange:n,steps:o=[]}){let{query:s,clamp:r,setStyle:l}=this.utils;l(i,"touch-action","none"),i.innerHTML=`
${o.map(()=>'
').join("")}
${o.map(t=>t.hide?"":`
${t.name}
`).join("")}
`;let d=s(".apd-slider-dot",i),p=s(".apd-slider-progress",i),u=!1;function h(i=a()){if(ie)return;let s=(i-t)/(e-t);d.style.left=`${100*s}%`,0===o.length&&(p.style.width=d.style.left),n(i)}function m(a){let{top:n,height:o,left:s,width:l}=i.getBoundingClientRect();this.art.isRotate?h(Math.round(r(a.clientY-n,0,o)/o*(e-t)+t)):h(Math.round(r(a.clientX-s,0,l)/l*(e-t)+t))}return this.art.proxy(i,"click",t=>{m.call(this,t)}),this.art.proxy(i,"pointerdown",t=>{u=0===t.button}),this.art.on("document:pointermove",t=>{u&&m.call(this,t)}),this.art.on("document:pointerup",t=>{u&&(u=!1,m.call(this,t))}),{reset:h}}onFullscreen(t){let{$danmuku:e,$controlsCenter:i,$mount:a}=this.template;this.outside?t?this.append(i,e):this.append(a,e):this.append(i,e)}onMouseEnter({$control:t,$panel:e}){let{$player:i}=this.art.template,a=t.getBoundingClientRect(),n=e.getBoundingClientRect(),o=i.getBoundingClientRect(),s=n.width/2-a.width/2,r=o.left-(a.left-s),l=a.right+s-o.right;r>0?e.style.left=`${-s+r}px`:l>0?e.style.left=`${-s-l}px`:e.style.left=`${-s}px`}async emit(){let{$input:t}=this.template,e=t.value.trim();if(!e.length||this.isLock||this.emitting)return;let i={text:e,mode:this.option.mode,color:this.option.color,time:this.art.currentTime};try{this.emitting=!0;let e=await this.option.beforeEmit(i);if(this.emitting=!1,!0!==e)return;i.border=!0,delete i.time,this.danmuku.emit(i),t.value="",this.lock()}catch(t){console.error("Error emitting danmuku:",t),this.emitting=!1}}lock(){let{addClass:t}=this.utils,{$send:e}=this.template;this.isLock=!0;let i=this.option.lockTime;e.textContent=i,t(e,"apd-lock");let a=()=>{this.timer=setTimeout(()=>{0===i?this.unlock():(e.textContent=i-=1,a())},1e3)};a()}unlock(){let{removeClass:t}=this.utils,{$send:e}=this.template;clearTimeout(this.timer),this.isLock=!1,e.textContent="发送",t(e,"apd-lock")}resize(){if(this.outside||this.art.fullscreen||this.art.fullscreenWeb)return;let{$player:t,$controlsCenter:e}=this.art.template,{$danmuku:i}=this.template;this.art.widtht.dataset.color===this.option.color.toUpperCase());n&&t(n,"apd-active"),e(i,this.option.visible?"关闭弹幕":"打开弹幕"),this.resize()}mount(t){let{errorHandle:e}=this.utils,i="string"==typeof t?document.querySelector(t):t;e(i,`Can not find the mount point: ${t}`),this.append(i,this.template.$danmuku),this.template.$mount=i,this.reset()}},"u">typeof document){let t="artplayer-plugin-danmuku",e=document.getElementById(t);e||((e=document.createElement("style")).id=t,"loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>{document.head.appendChild(e)}):(document.head||document.documentElement).appendChild(e)),e.textContent=j.default}},{"bundle-text:./img/check_off.svg":"2pPC1","bundle-text:./img/check_on.svg":"47UDb","bundle-text:./img/config.svg":"kCi8g","bundle-text:./img/mode_0_off.svg":"7HQlG","bundle-text:./img/mode_0_on.svg":"t7s2B","bundle-text:./img/mode_1_off.svg":"lkKl2","bundle-text:./img/mode_1_on.svg":"8f8zW","bundle-text:./img/mode_2_off.svg":"emrpJ","bundle-text:./img/mode_2_on.svg":"1fmjY","bundle-text:./img/off.svg":"8Ug2A","bundle-text:./img/on.svg":"1BQ1c","bundle-text:./img/style.svg":"b24KT","bundle-text:./style.less":"k8RGI","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"2pPC1":[function(t,e,i,a){e.exports=''},{}],"47UDb":[function(t,e,i,a){e.exports=''},{}],kCi8g:[function(t,e,i,a){e.exports=''},{}],"7HQlG":[function(t,e,i,a){e.exports=''},{}],t7s2B:[function(t,e,i,a){e.exports=''},{}],lkKl2:[function(t,e,i,a){e.exports=''},{}],"8f8zW":[function(t,e,i,a){e.exports=''},{}],emrpJ:[function(t,e,i,a){e.exports=''},{}],"1fmjY":[function(t,e,i,a){e.exports=''},{}],"8Ug2A":[function(t,e,i,a){e.exports=''},{}],"1BQ1c":[function(t,e,i,a){e.exports=''},{}],b24KT:[function(t,e,i,a){e.exports=''},{}],k8RGI:[function(t,e,i,a){e.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{opacity:0;pointer-events:none;width:320px;padding:10px;position:absolute;bottom:24px;left:0}.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{opacity:100;pointer-events:all}.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{opacity:0;pointer-events:none;width:200px;padding:10px;position:absolute;bottom:24px;left:0}.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{opacity:100;pointer-events:all}.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;width:60px;height:100%;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;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}.art-video-player>.artplayer-plugin-danmuku{padding:0 10px;position:absolute;bottom:-40px;left:0;right:0}.art-video-player:has(>.artplayer-plugin-danmuku){margin-bottom:40px}[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}'},{}]},["666Ok"],"666Ok","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 b679aea7a..815cbdece 100644 --- a/docs/compiled/artplayer-plugin-danmuku.legacy.js +++ b/docs/compiled/artplayer-plugin-danmuku.legacy.js @@ -5,4 +5,4 @@ * (c) 2017-2026 Harvey Zhao * Released under the MIT License. */ -!function(e,t,n,a,i){var r="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},o="function"==typeof r[a]&&r[a],s=o.i||{},l=o.cache||{},u="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function d(t,n){if(!l[t]){if(!e[t]){if(i[t])return i[t];var s="function"==typeof r[a]&&r[a];if(!n&&s)return s(t,!0);if(o)return o(t,!0);if(u&&"string"==typeof t)return u(t);var c=Error("Cannot find module '"+t+"'");throw c.code="MODULE_NOT_FOUND",c}f.resolve=function(n){var a=e[t][1][n];return null!=a?a:n},f.cache={};var p=l[t]=new d.Module(t);e[t][0].call(p.exports,f,p,p.exports,r)}return l[t].exports;function f(e){var t=f.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var n={__esModule:!0};return t.forEach(function(e){var t=e[0],a=e[1],i=e[2]||e[0],r=d(a);"*"===t?Object.keys(r).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(n,e)||Object.defineProperty(n,e,{enumerable:!0,get:function(){return r[e]}})}):"*"===i?Object.defineProperty(n,t,{enumerable:!0,value:r}):Object.defineProperty(n,t,{enumerable:!0,get:function(){return"default"===i?r.__esModule?r.default:r:r[i]}})}),n}return d(t)}}d.isParcelRequire=!0,d.Module=function(e){this.id=e,this.bundle=d,this.require=u,this.exports={}},d.modules=e,d.cache=l,d.parent=o,d.distDir=void 0,d.publicUrl=void 0,d.devServer=void 0,d.i=s,d.register=function(t,n){e[t]=[function(e,t){t.exports=n},{}]},Object.defineProperty(d,"root",{get:function(){return r[a]}}),r[a]=d;for(var c=0;ctypeof module?module.exports=p:"function"==typeof define&&define.amd&&define(function(){return p})}}({l3CkF:[function(e,t,n,a){var i=e("@parcel/transformer-js/src/esmodule-helpers.js");i.defineInteropFlag(n),i.export(n,"default",function(){return c});var r=e("./danmuku"),o=i.interopDefault(r),s=e("./heatmap"),l=i.interopDefault(s),u=e("./setting"),d=i.interopDefault(u);function c(e){return function(t){var n=new(0,o.default)(t,e),a=new(0,d.default)(t,n);return n.option.heatmap&&(0,l.default)(t,n,n.option.heatmap),{name:"artplayerPluginDanmuku",emit:n.emit.bind(n),load:n.load.bind(n),config:n.config.bind(n),hide:n.hide.bind(n),show:n.show.bind(n),reset:n.reset.bind(n),mount:a.mount.bind(a),get option(){return n.option},get isHide(){return n.isHide},get isStop(){return n.isStop}}}}c.icons=d.default.icons,"u">typeof window&&(window.artplayerPluginDanmuku=c)},{"./danmuku":"u1ZRC","./heatmap":"hLPK6","./setting":"jpEpW","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],u1ZRC:[function(e,t,n,a){var i=e("@parcel/transformer-js/src/esmodule-helpers.js");i.defineInteropFlag(n),i.export(n,"default",function(){return h});var r=e("@swc/helpers/cjs/_async_to_generator.cjs"),o=e("@swc/helpers/cjs/_class_call_check.cjs"),s=e("@swc/helpers/cjs/_create_class.cjs"),l=e("@swc/helpers/cjs/_object_spread.cjs"),u=e("@swc/helpers/cjs/_object_spread_props.cjs"),d=e("@swc/helpers/cjs/_ts_generator.cjs"),c=e("bundle-text:./worker"),p=i.interopDefault(c),f=e("./bilibili"),h=function(){"use strict";function e(t,n){(0,o._)(this,e);var a=t.constructor,i=t.template;this.utils=a.utils,this.validator=a.validator,this.$danmuku=i.$danmuku,this.$player=i.$player,this.art=t,this.queue=[],this.$refs=[],this.isStop=!1,this.isHide=!1,this.timer=null,this.index=0,this.option=e.option,this.states={wait:[],ready:[],emit:[],stop:[]},this.config(n,!0);var r=new Blob([p.default.replace("export{e as default};","")],{type:"application/javascript"});this.worker=new Worker(URL.createObjectURL(r)),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),t.on("video:play",this.start),t.on("video:playing",this.start),t.on("video:pause",this.stop),t.on("video:waiting",this.stop),t.on("destroy",this.destroy),t.on("resize",this.resize),this.load()}return(0,s._)(e,[{key:"isRotate",get:function(){var e,t;return null==(t=this.art.plugins)||null==(e=t.autoOrientation)?void 0:e.state}},{key:"marginTop",get:function(){var t=this.utils.clamp,n=this.option.margin[0],a=this.$player.clientHeight;return"number"==typeof n?t(n,0,a):"string"==typeof n&&n.endsWith("%")?t(a*(Number.parseFloat(n)/100),0,a):e.option.margin[0]}},{key:"marginBottom",get:function(){var t=this.utils.clamp,n=this.option.margin[1],a=this.$player.clientHeight;return"number"==typeof n?t(n,0,a):"string"==typeof n&&n.endsWith("%")?t(a*(Number.parseFloat(n)/100),0,a):e.option.margin[1]}},{key:"fontSize",get:function(){var t=this.utils.clamp,n=this.$player.clientHeight,a=this.option.fontSize;return"number"==typeof a?Math.round(t(a,12,n)):"string"==typeof a&&a.endsWith("%")?Math.round(t(n*(Number.parseFloat(a)/100),12,n)):e.option.fontSize}},{key:"$ref",get:function(){var t=this.$refs.pop()||document.createElement("div");return t.style.cssText=e.cssText,t.dataset.mode="",t.dataset.id="",t.className="",t}},{key:"readys",get:function(){var e=this.art.currentTime,t=[];return this.filter("ready",function(e){return t.push(e)}),this.filter("wait",function(n){e+.1>=n.time&&n.time>=e-.1&&t.push(n)}),t}},{key:"visibles",get:function(){var e=this,t=[],n=this.$player.clientWidth,a=this.getLeft(this.$player);return this.filter("emit",function(i){var r=i.$ref.offsetTop,o=e.getLeft(i.$ref)-a,s=i.$ref.clientHeight,l=i.$ref.clientWidth,u=o+l,d=u/i.$restTime,c={};c.top=r,c.left=o,c.height=s,c.width=l,c.right=n-u,c.speed=d,c.distance=u,c.time=i.$restTime,c.mode=i.mode,t.push(c)}),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(e){return(0,r._)(function(){var t,n,a,i,r,o;return(0,d._)(this,function(s){switch(s.label){case 0:t=this.utils.errorHandle,n=[],a=e||this.option.danmuku,s.label=1;case 1:if(s.trys.push([1,13,,14]),"function"!=typeof a)return[3,3];return[4,a()];case 2:case 4:case 6:return n=s.sent(),[3,8];case 3:if(!(a instanceof Promise))return[3,5];return[4,a];case 5:if("string"!=typeof a)return[3,7];return[4,(0,f.bilibiliDanmuParseFromUrl)(a)];case 7:Array.isArray(a)&&(n=a),s.label=8;case 8:t(Array.isArray(n),"Danmuku need return an array as result"),void 0===e&&(this.reset(),this.queue=[],this.states={wait:[],ready:[],emit:[],stop:[]},this.$refs=[],this.$danmuku.textContent=""),i=0,s.label=9;case 9:if(!(i1&&void 0!==arguments[1]&&arguments[1],i=this.utils.clamp,r=this.art.template.$controlsCenter;return(Object.keys(t).some(function(e){return JSON.stringify(n.option[e])!==JSON.stringify(t[e])})||a)&&(this.option=Object.assign({},e.option,this.option,t),this.validator(this.option,e.scheme),this.option.mode=i(this.option.mode,0,2),this.option.speed=i(this.option.speed,1,10),this.option.opacity=i(this.option.opacity,0,1),this.option.lockTime=i(this.option.lockTime,1,60),this.option.maxLength=i(this.option.maxLength,1,1e3),this.option.mount=this.option.mount||r,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(n){t.id=Date.now(),e.worker.postMessage(t),e.worker.onmessage=function(e){var a=e.data;a.id===t.id&&n(a)}})}},{key:"filter",value:function(e,t){for(var n=this.states[e]||[],a=0;a0&&i[i.length-1])&&(6===u[0]||2===u[0])){r=0;continue}if(3===u[0]&&(!i||u[1]>i[0]&&u[1]typeof module?module.exports=p:"function"==typeof define&&define.amd&&define(function(){return p})}}({Df7KK:[function(e,t,r,n){var o=e("@swc/helpers/cjs/_to_consumable_array.cjs");function i(e){var t=e.target,r=e.visibles,n=e.clientWidth,i=e.clientHeight,u=e.marginBottom,f=e.marginTop,a=e.antiOverlap,c=i-u,s=r.filter(function(e){return e.mode===t.mode&&e.top<=c}).sort(function(e,t){return e.top-t.top});if(0===s.length)if(2===t.mode)return c-t.height;else return f;if(s.unshift({type:"top",top:0,left:0,right:0,height:f,width:n,speed:0,distance:n}),s.push({type:"bottom",top:c,left:0,right:0,height:u,width:n,speed:0,distance:n}),2===t.mode)for(var l=s.length-2;l>=0;l-=1){var p=s[l],d=s[l+1],h=p.top+p.height;if(d.top-h>=t.height)return d.top-t.height}else for(var b=1;b=t.height)return y}for(var v=[],_=1;_e.time))})});return j&&j[0]?j[0].top:void 0;case 1:case 2:return}else{switch(t.mode){case 0:v.sort(function(e,t){var r,n,i=(r=Math).min.apply(r,(0,o._)(t.map(function(e){return e.right}))),u=(n=Math).min.apply(n,(0,o._)(e.map(function(e){return e.right})));return i*t.length-u*e.length});break;case 1:case 2:v.sort(function(e,t){var r,n,i=(r=Math).max.apply(r,(0,o._)(t.map(function(e){return e.width})));return(n=Math).max.apply(n,(0,o._)(e.map(function(e){return e.width})))*e.length-i*t.length})}return v[0][0].top}}onmessage=function(e){var t=e.data;t.id&&t.type&&globalThis.postMessage({result:(0,({getDanmuTop:i})[t.type])(t),id:t.id})}},{"@swc/helpers/cjs/_to_consumable_array.cjs":"i81N6"}],i81N6:[function(e,t,r,n){"use strict";var o=e("d402183024004bc7"),i=e("3209e2b12672cd18"),u=e("fc58adb8f1bff142"),f=e("5e213dc122a10171");r._=function(e){return o._(e)||i._(e)||f._(e)||u._()}},{d402183024004bc7:"hfQG0","3209e2b12672cd18":"fQrlQ",fc58adb8f1bff142:"fWabh","5e213dc122a10171":"fh7mx"}],hfQG0:[function(e,t,r,n){"use strict";var o=e("5bd5b10bf87fc8e");r._=function(e){if(Array.isArray(e))return o._(e)}},{"5bd5b10bf87fc8e":"1WOAB"}],"1WOAB":[function(e,t,r,n){"use strict";r._=function(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);rtypeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}},{}],fWabh:[function(e,t,r,n){"use strict";r._=function(){throw TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}},{}],fh7mx:[function(e,t,r,n){"use strict";var o=e("3ee51b7dc02d0c44");r._=function(e,t){if(e){if("string"==typeof e)return o._(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if("Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r)return Array.from(r);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return o._(e,t)}}},{"3ee51b7dc02d0c44":"1WOAB"}]},["Df7KK"],"Df7KK","parcelRequire4dc0",{});'},{}],nzPZ8:[function(e,t,n,a){var i=e("@parcel/transformer-js/src/esmodule-helpers.js");i.defineInteropFlag(n),i.export(n,"bilibiliDanmuParseFromUrl",function(){return d});var r=e("@swc/helpers/cjs/_async_to_generator.cjs"),o=e("@swc/helpers/cjs/_ts_generator.cjs");function s(e){switch(e){case 1:case 2:case 3:default:return 0;case 4:return 2;case 5:return 1}}function l(e){if("string"!=typeof e)return[];var t=RegExp(']*?p="(?

[^"]+)"[^>]*>(?.*?)<\\/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:s(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 u(e){var t=e.data,n=t.xml,a=t.id;a&&n&&globalThis.postMessage({danmus:l(n),id:a})}function d(e){return new Promise(function(t){return(0,r._)(function(){var n,a;return(0,o._)(this,function(i){switch(i.label){case 0:return[4,fetch(e)];case 1:return[4,i.sent().text()];case 2:n=i.sent();try{var r;r=new Blob(["\n ".concat(s.toString(),"\n ").concat(l.toString(),"\n onmessage = ").concat(u.toString(),"\n ")],{type:"application/javascript"}),(a=new Worker(URL.createObjectURL(r))).onmessage=function(e){var n=e.data,i=n.danmus;n.id&&i&&(t(i),a.terminate())},a.postMessage({xml:n,id:Date.now()})}catch(e){console.error("Error parsing Bilibili Danmu:",e),t(l(n))}return[2]}})})()})}},{"@swc/helpers/cjs/_async_to_generator.cjs":"cZn0e","@swc/helpers/cjs/_ts_generator.cjs":"eltGh","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],qpMMf:[function(e,t,n,a){n.interopDefault=function(e){return e&&e.__esModule?e:{default:e}},n.defineInteropFlag=function(e){Object.defineProperty(e,"__esModule",{value:!0})},n.exportAll=function(e,t){return Object.keys(e).forEach(function(n){"default"===n||"__esModule"===n||Object.prototype.hasOwnProperty.call(t,n)||Object.defineProperty(t,n,{enumerable:!0,get:function(){return e[n]}})}),t},n.export=function(e,t,n){Object.defineProperty(e,t,{enumerable:!0,get:n})}},{}],hLPK6:[function(e,t,n,a){var i=e("@parcel/transformer-js/src/esmodule-helpers.js");i.defineInteropFlag(n),i.export(n,"default",function(){return l});var r=e("@swc/helpers/cjs/_to_consumable_array.cjs"),o=e("@swc/helpers/cjs/_type_of.cjs"),s=function(e,t,n,a,i){return(e-t)*(i-a)/(n-t)+a};function l(e,t,n){var a=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(i){var l=null,u=null;function d(){var d,c,p=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(l=null,u=null,i.innerHTML="",e.duration&&!e.option.isLive){var f={w:i.offsetWidth,h:i.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};(void 0===n?"undefined":(0,o._)(n))==="object"&&Object.assign(h,n);var m=[];if(Array.isArray(p)&&p.length)m=(0,r._)(p);else for(var g=function(e){var n=t.queue.filter(function(t){var n=t.time;return n>e*v&&n<=(e+h.sampling)*v}).length;m.push([e,n])},v=e.duration/f.w,y=0;y<=f.w;y+=h.sampling)g(y);if(0!==m.length){var b=m[m.length-1],k=b[0],x=b[1];k!==f.w&&m.push([f.w,x]);for(var w=m.map(function(e){return e[1]}),_=((d=Math).min.apply(d,(0,r._)(w))+(c=Math).max.apply(c,(0,r._)(w)))/2,$=0;$_?1+h.scale:1-h.scale)+h.minHeight}var O=function(e,t,n,a){var i,r,o=t||e,l=n||e,u={length:Math.sqrt(Math.pow(i=l[0]-o[0],2)+Math.pow(r=l[1]-o[1],2)),angle:Math.atan2(r,i)},d=s(Math.cos(u.angle)*h.flattening,0,1,1,0),c=u.angle*d+(a?Math.PI:0),p=u.length*h.smoothing;return[e[0]+Math.cos(c)*p,e[1]+Math.sin(c)*p]},S=function(e,t,n){var a=O(n[t-1],n[t-2],e),i=O(e,n[t-1],n[t+1],!0),r=t===n.length-1?" z":"";return"C ".concat(a[0],",").concat(a[1]," ").concat(i[0],",").concat(i[1]," ").concat(e[0],",").concat(e[1]).concat(r)},D=m.map(function(e){return[s(e[0],h.xMin,h.xMax,0,f.w),s(e[1],h.yMin,h.yMax,f.h,0)]}).reduce(function(e,t,n,a){return 0===n?"M ".concat(a[a.length-1][0],",").concat(f.h," L ").concat(t[0],",").concat(f.h," L ").concat(t[0],",").concat(t[1]):"".concat(e," ").concat(S(t,n,a))},"");i.innerHTML='\n\n\n\n\n\n\n\n\n\n\n\n '),l=a("#heatmap-start",i),u=a("#heatmap-stop",i),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 d()}),e.on("resize",function(){return d()}),e.on("artplayerPluginDanmuku:loaded",function(){return d()}),e.on("artplayerPluginDanmuku:points",function(e){return d(e)})}})}},{"@swc/helpers/cjs/_to_consumable_array.cjs":"i81N6","@swc/helpers/cjs/_type_of.cjs":"iXhRw","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],i81N6:[function(e,t,n,a){"use strict";var i=e("d402183024004bc7"),r=e("3209e2b12672cd18"),o=e("fc58adb8f1bff142"),s=e("5e213dc122a10171");n._=function(e){return i._(e)||r._(e)||s._(e)||o._()}},{d402183024004bc7:"hfQG0","3209e2b12672cd18":"fQrlQ",fc58adb8f1bff142:"fWabh","5e213dc122a10171":"fh7mx"}],hfQG0:[function(e,t,n,a){"use strict";var i=e("5bd5b10bf87fc8e");n._=function(e){if(Array.isArray(e))return i._(e)}},{"5bd5b10bf87fc8e":"1WOAB"}],"1WOAB":[function(e,t,n,a){"use strict";n._=function(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);ntypeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}},{}],fWabh:[function(e,t,n,a){"use strict";n._=function(){throw TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}},{}],fh7mx:[function(e,t,n,a){"use strict";var i=e("3ee51b7dc02d0c44");n._=function(e,t){if(e){if("string"==typeof e)return i._(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return i._(e,t)}}},{"3ee51b7dc02d0c44":"1WOAB"}],iXhRw:[function(e,t,n,a){"use strict";n._=function(e){return e&&"u">typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}},{}],jpEpW:[function(e,t,n,a){var i=e("@parcel/transformer-js/src/esmodule-helpers.js");i.defineInteropFlag(n),i.export(n,"default",function(){return H});var r=e("@swc/helpers/cjs/_async_to_generator.cjs"),o=e("@swc/helpers/cjs/_class_call_check.cjs"),s=e("@swc/helpers/cjs/_create_class.cjs"),l=e("@swc/helpers/cjs/_object_spread.cjs"),u=e("@swc/helpers/cjs/_object_spread_props.cjs"),d=e("@swc/helpers/cjs/_to_consumable_array.cjs"),c=e("@swc/helpers/cjs/_ts_generator.cjs"),p=e("bundle-text:./img/check_off.svg"),f=i.interopDefault(p),h=e("bundle-text:./img/check_on.svg"),m=i.interopDefault(h),g=e("bundle-text:./img/config.svg"),v=i.interopDefault(g),y=e("bundle-text:./img/mode_0_off.svg"),b=i.interopDefault(y),k=e("bundle-text:./img/mode_0_on.svg"),x=i.interopDefault(k),w=e("bundle-text:./img/mode_1_off.svg"),_=i.interopDefault(w),$=e("bundle-text:./img/mode_1_on.svg"),j=i.interopDefault($),M=e("bundle-text:./img/mode_2_off.svg"),O=i.interopDefault(M),S=e("bundle-text:./img/mode_2_on.svg"),D=i.interopDefault(S),P=e("bundle-text:./img/off.svg"),T=i.interopDefault(P),A=e("bundle-text:./img/on.svg"),q=i.interopDefault(A),E=e("bundle-text:./img/style.svg"),C=i.interopDefault(E),Z=e("bundle-text:./style.less"),F=i.interopDefault(Z),H=function(){"use strict";function e(t,n){var a=this;(0,o._)(this,e),this.art=t,this.danmuku=n,this.utils=t.constructor.utils;var i=this.utils.setStyle,r=t.template.$controlsCenter;i(r,"display","flex"),this.template={$controlsCenter:r,$mount:r,$danmuku:null,$toggle:null,$config:null,$configPanel:null,$configModes:null,$style:null,$stylePanel: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),t.on("resize",function(){return a.resize()}),t.on("fullscreen",function(e){return a.onFullscreen(e)}),t.on("fullscreenWeb",function(e){return a.onFullscreen(e)}),t.proxy(this.template.$config,"mouseenter",function(){a.onMouseEnter({$control:a.template.$config,$panel:a.template.$configPanel})}),t.proxy(this.template.$style,"mouseenter",function(){a.onMouseEnter({$control:a.template.$style,$panel:a.template.$stylePanel})})}return(0,s._)(e,[{key:"option",get:function(){return this.danmuku.option}},{key:"outside",get:function(){return this.template.$mount!==this.template.$controlsCenter}},{key:"TEMPLATE",get:function(){var e=this.option;return'\n

\n '.concat(q.default).concat(T.default,'\n
\n
\n ').concat(v.default,'\n
\n
\n
\n 按类型屏蔽\n
\n
\n ').concat(b.default).concat(x.default,'\n
滚动
\n
\n
\n ').concat(_.default).concat(j.default,'\n
顶部
\n
\n
\n ').concat(O.default).concat(D.default,'\n
底部
\n
\n
\n
\n
\n
\n ').concat(m.default).concat(f.default,'\n 防止弹幕重叠\n
\n
\n ').concat(m.default).concat(f.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(C.default,'\n
\n
\n
\n 模式\n
\n
\n ').concat(x.default,'\n
滚动
\n
\n
\n ').concat(j.default,'\n
顶部
\n
\n
\n ').concat(D.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,l._)({min:0,max:100,steps:[]},this.option.OPACITY)}},{key:"FONT_SIZE",get:function(){return(0,l._)({min:12,max:120,steps:[]},this.option.FONT_SIZE)}},{key:"MARGIN",get:function(){return(0,l._)({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,l._)({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:"append",value:function(e,t){var n=this.utils.append;(0,d._)(e.children).includes(t)||n(e,t)}},{key:"setData",value:function(e,t){var n=this.art.template.$player,a=this.template.$mount;n.dataset[e]=t,this.outside&&(a.dataset[e]=t)}},{key:"createTemplate",value:function(){var e=this.utils,t=e.createElement,n=e.tooltip,a=t("div");a.className="artplayer-plugin-danmuku",a.innerHTML=this.TEMPLATE,this.template.$danmuku=a,this.template.$toggle=this.query(".apd-toggle"),this.template.$config=this.query(".apd-config"),this.template.$configPanel=this.query(".apd-config-panel"),this.template.$configModes=this.query(".apd-config-mode .apd-modes"),this.template.$style=this.query(".apd-style"),this.template.$stylePanel=this.query(".apd-style-panel"),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 i=this.template.$toggle;this.art.on("artplayerPluginDanmuku:show",function(){n(i,"关闭弹幕")}),this.art.on("artplayerPluginDanmuku:hide",function(){n(i,"打开弹幕")})}},{key:"createEvents",value:function(){var e=this,t=this.template,n=t.$toggle,a=t.$configModes,i=t.$styleModes,r=t.$colors,o=t.$antiOverlap,s=t.$syncVideo,l=t.$send,u=t.$input;this.art.proxy(n,"click",function(){e.danmuku.config({visible:!e.option.visible}),e.reset()}),this.art.proxy(a,"click",function(t){var n=t.target.closest(".apd-mode");if(n){var a=Number(n.dataset.mode);e.option.modes.includes(a)?e.danmuku.config({modes:e.option.modes.filter(function(e){return e!==a})}):e.danmuku.config({modes:(0,d._)(e.option.modes).concat([a])}),e.reset()}}),this.art.proxy(o,"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(i,"click",function(t){var n=t.target.closest(".apd-mode");if(n){var a=Number(n.dataset.mode);e.danmuku.config({mode:a}),e.reset()}}),this.art.proxy(r,"click",function(t){var n=t.target.closest(".apd-color");n&&(e.danmuku.config({color:n.dataset.color}),e.reset())}),this.art.proxy(l,"click",function(){return e.emit()}),this.art.proxy(u,"keypress",function(t){"Enter"===t.key&&(t.preventDefault(),e.emit())})}},{key:"createSliders",value:function(){var e=this;this.slider.opacity=this.createSlider((0,u._)((0,l._)({},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,u._)((0,l._)({},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 n=e.MARGIN.steps[t];n&&(e.template.$marginValue.textContent=n.name,e.danmuku.config({margin:n.value}))}})),this.slider.fontSize=this.createSlider((0,u._)((0,l._)({},this.FONT_SIZE),{container:this.template.$fontSizeSlider,findIndex:function(){return e.danmuku.fontSize},onChange:function(t){e.template.$fontSizeValue.textContent="".concat(t,"px"),t!==e.danmuku.fontSize&&e.danmuku.config({fontSize:t})}})),this.slider.speed=this.createSlider((0,u._)((0,l._)({},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 n=e.SPEED.steps[t];n&&(e.template.$speedValue.textContent=n.name,e.danmuku.config({speed:n.value}))}}))}},{key:"createSlider",value:function(e){var t=this,n=e.min,a=e.max,i=e.container,r=e.findIndex,o=e.onChange,s=e.steps,l=void 0===s?[]:s,u=this.utils,d=u.query,c=u.clamp;(0,u.setStyle)(i,"touch-action","none"),i.innerHTML='\n
\n
\n '.concat(l.map(function(){return'
'}).join(""),'\n
\n
\n
\n
\n
\n ').concat(l.map(function(e){return e.hide?"":'
'.concat(e.name,"
")}).join(""),"\n
\n ");var p=d(".apd-slider-dot",i),f=d(".apd-slider-progress",i),h=!1;function m(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:r();if(!(ea)){var t=(e-n)/(a-n);p.style.left="".concat(100*t,"%"),0===l.length&&(f.style.width=p.style.left),o(e)}}function g(e){var t=i.getBoundingClientRect(),r=t.top,o=t.height,s=t.left,l=t.width;this.art.isRotate?m(Math.round(c(e.clientY-r,0,o)/o*(a-n)+n)):m(Math.round(c(e.clientX-s,0,l)/l*(a-n)+n))}return this.art.proxy(i,"click",function(e){g.call(t,e)}),this.art.proxy(i,"pointerdown",function(e){h=0===e.button}),this.art.on("document:pointermove",function(e){h&&g.call(t,e)}),this.art.on("document:pointerup",function(e){h&&(h=!1,g.call(t,e))}),{reset:m}}},{key:"onFullscreen",value:function(e){var t=this.template,n=t.$danmuku,a=t.$controlsCenter,i=t.$mount;this.outside?e?this.append(a,n):this.append(i,n):this.append(a,n)}},{key:"onMouseEnter",value:function(e){var t=e.$control,n=e.$panel,a=this.art.template.$player,i=t.getBoundingClientRect(),r=n.getBoundingClientRect(),o=a.getBoundingClientRect(),s=r.width/2-i.width/2,l=o.left-(i.left-s),u=i.right+s-o.right;l>0?n.style.left="".concat(-s+l,"px"):u>0?n.style.left="".concat(-s-u,"px"):n.style.left="".concat(-s,"px")}},{key:"emit",value:function(){return(0,r._)(function(){var e,t,n,a;return(0,c._)(this,function(i){switch(i.label){case 0:if(!(t=(e=this.template.$input).value.trim()).length||this.isLock||this.emitting)return[2];n={text:t,mode:this.option.mode,color:this.option.color,time:this.art.currentTime},i.label=1;case 1:return i.trys.push([1,3,,4]),this.emitting=!0,[4,this.option.beforeEmit(n)];case 2:if(a=i.sent(),this.emitting=!1,!0!==a)return[2];return n.border=!0,delete n.time,this.danmuku.emit(n),e.value="",this.lock(),[3,4];case 3:return console.error("Error emitting danmuku:",i.sent()),this.emitting=!1,[3,4];case 4:return[2]}})}).call(this)}},{key:"lock",value:function(){var e=this,t=this.utils.addClass,n=this.template.$send;this.isLock=!0;var a=this.option.lockTime;n.textContent=a,t(n,"apd-lock");var i=function(){e.timer=setTimeout(function(){0===a?e.unlock():(n.textContent=a-=1,i())},1e3)};i()}},{key:"unlock",value:function(){var e=this.utils.removeClass,t=this.template.$send;clearTimeout(this.timer),this.isLock=!1,t.textContent="发送",e(t,"apd-lock")}},{key:"resize",value:function(){if(!this.outside&&!this.art.fullscreen&&!this.art.fullscreenWeb){var e=this.art.template,t=e.$player,n=e.$controlsCenter,a=this.template.$danmuku;this.art.widthtypeof document){var L="artplayer-plugin-danmuku",V=document.getElementById(L);V||((V=document.createElement("style")).id=L,"loading"===document.readyState?document.addEventListener("DOMContentLoaded",function(){document.head.appendChild(V)}):(document.head||document.documentElement).appendChild(V)),V.textContent=F.default}},{"@swc/helpers/cjs/_async_to_generator.cjs":"cZn0e","@swc/helpers/cjs/_class_call_check.cjs":"4Uf9M","@swc/helpers/cjs/_create_class.cjs":"igUuK","@swc/helpers/cjs/_object_spread.cjs":"kyoEj","@swc/helpers/cjs/_object_spread_props.cjs":"3G1wX","@swc/helpers/cjs/_to_consumable_array.cjs":"i81N6","@swc/helpers/cjs/_ts_generator.cjs":"eltGh","bundle-text:./img/check_off.svg":"3Kuo7","bundle-text:./img/check_on.svg":"lVPfB","bundle-text:./img/config.svg":"a75dO","bundle-text:./img/mode_0_off.svg":"e5Ndj","bundle-text:./img/mode_0_on.svg":"fgakY","bundle-text:./img/mode_1_off.svg":"1rW7G","bundle-text:./img/mode_1_on.svg":"86V1z","bundle-text:./img/mode_2_off.svg":"8rkmQ","bundle-text:./img/mode_2_on.svg":"bGZsR","bundle-text:./img/off.svg":"iO9LX","bundle-text:./img/on.svg":"abS9U","bundle-text:./img/style.svg":"g7T0K","bundle-text:./style.less":"d3e2n","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],"3Kuo7":[function(e,t,n,a){t.exports=''},{}],lVPfB:[function(e,t,n,a){t.exports=''},{}],a75dO:[function(e,t,n,a){t.exports=''},{}],e5Ndj:[function(e,t,n,a){t.exports=''},{}],fgakY:[function(e,t,n,a){t.exports=''},{}],"1rW7G":[function(e,t,n,a){t.exports=''},{}],"86V1z":[function(e,t,n,a){t.exports=''},{}],"8rkmQ":[function(e,t,n,a){t.exports=''},{}],bGZsR:[function(e,t,n,a){t.exports=''},{}],iO9LX:[function(e,t,n,a){t.exports=''},{}],abS9U:[function(e,t,n,a){t.exports=''},{}],g7T0K:[function(e,t,n,a){t.exports=''},{}],d3e2n:[function(e,t,n,a){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{opacity:0;pointer-events:none;width:320px;padding:10px;position:absolute;bottom:24px;left:0}.artplayer-plugin-danmuku .apd-config .apd-config-panel .apd-config-panel-inner{background-color:rgba(0,0,0,.85);border-radius:3px;width:100%;padding:10px}.artplayer-plugin-danmuku .apd-config:hover .apd-config-panel{opacity:100;pointer-events:all}.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:rgba(255,255,255,.25);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;top:0;bottom:0;left:0;right:0}.artplayer-plugin-danmuku .apd-slider .apd-slider-points .apd-slider-point{background-color:rgba(255,255,255,.5);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:rgba(255,255,255,.25);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{opacity:0;pointer-events:none;width:200px;padding:10px;position:absolute;bottom:24px;left:0}.artplayer-plugin-danmuku .apd-style .apd-style-panel .apd-style-panel-inner{background-color:rgba(0,0,0,.85);border-radius:3px;width:100%;padding:10px}.artplayer-plugin-danmuku .apd-style:hover .apd-style-panel{opacity:100;pointer-events:all}.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:transparent;border:none;outline:none;flex:1;width:auto;min-width:0;height:100%;line-height:1}.artplayer-plugin-danmuku .apd-input::placeholder{color:rgba(255,255,255,.5)}.artplayer-plugin-danmuku .apd-input::placeholder{color:rgba(255,255,255,.5)}.artplayer-plugin-danmuku .apd-send{cursor:pointer;width:60px;height:100%;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;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}.art-video-player>.artplayer-plugin-danmuku{padding:0 10px;position:absolute;bottom:-40px;left:0;right:0}.art-video-player:has(>.artplayer-plugin-danmuku){margin-bottom:40px}[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: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}'},{}]},["l3CkF"],"l3CkF","parcelRequire4dc0",{}); \ No newline at end of file +!function(e,t,n,a,i,r,o,s){var l="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},u="function"==typeof l[a]&&l[a],d=u.i||{},c=u.cache||{},p="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function f(t,n){if(!c[t]){if(!e[t]){if(i[t])return i[t];var r="function"==typeof l[a]&&l[a];if(!n&&r)return r(t,!0);if(u)return u(t,!0);if(p&&"string"==typeof t)return p(t);var o=Error("Cannot find module '"+t+"'");throw o.code="MODULE_NOT_FOUND",o}d.resolve=function(n){var a=e[t][1][n];return null!=a?a:n},d.cache={};var s=c[t]=new f.Module(t);e[t][0].call(s.exports,d,s,s.exports,l)}return c[t].exports;function d(e){var t=d.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var n={__esModule:!0};return t.forEach(function(e){var t=e[0],a=e[1],i=e[2]||e[0],r=f(a);"*"===t?Object.keys(r).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(n,e)||Object.defineProperty(n,e,{enumerable:!0,get:function(){return r[e]}})}):"*"===i?Object.defineProperty(n,t,{enumerable:!0,value:r}):Object.defineProperty(n,t,{enumerable:!0,get:function(){return"default"===i?r.__esModule?r.default:r:r[i]}})}),n}return f(t)}}f.isParcelRequire=!0,f.Module=function(e){this.id=e,this.bundle=f,this.require=p,this.exports={}},f.modules=e,f.cache=c,f.parent=u,f.distDir=void 0,f.publicUrl=void 0,f.devServer=void 0,f.i=d,f.register=function(t,n){e[t]=[function(e,t){t.exports=n},{}]},Object.defineProperty(f,"root",{get:function(){return l[a]}}),l[a]=f;for(var h=0;htypeof module?module.exports=m:"function"==typeof define&&define.amd&&define(function(){return m})}}({l3CkF:[function(e,t,n,a){var i=e("@parcel/transformer-js/src/esmodule-helpers.js");i.defineInteropFlag(n),i.export(n,"default",function(){return c});var r=e("./danmuku"),o=i.interopDefault(r),s=e("./heatmap"),l=i.interopDefault(s),u=e("./setting"),d=i.interopDefault(u);function c(e){return function(t){var n=new(0,o.default)(t,e),a=new(0,d.default)(t,n);return n.option.heatmap&&(0,l.default)(t,n,n.option.heatmap),{name:"artplayerPluginDanmuku",emit:n.emit.bind(n),load:n.load.bind(n),config:n.config.bind(n),hide:n.hide.bind(n),show:n.show.bind(n),reset:n.reset.bind(n),mount:a.mount.bind(a),get option(){return n.option},get isHide(){return n.isHide},get isStop(){return n.isStop}}}}c.icons=d.default.icons,"u">typeof window&&(window.artplayerPluginDanmuku=c)},{"./danmuku":"u1ZRC","./heatmap":"hLPK6","./setting":"jpEpW","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],u1ZRC:[function(e,t,n,a){var i=e("@parcel/transformer-js/src/esmodule-helpers.js");i.defineInteropFlag(n),i.export(n,"default",function(){return h});var r=e("@swc/helpers/cjs/_async_to_generator.cjs"),o=e("@swc/helpers/cjs/_class_call_check.cjs"),s=e("@swc/helpers/cjs/_create_class.cjs"),l=e("@swc/helpers/cjs/_object_spread.cjs"),u=e("@swc/helpers/cjs/_object_spread_props.cjs"),d=e("@swc/helpers/cjs/_ts_generator.cjs"),c=e("bundle-text:./worker"),p=i.interopDefault(c),f=e("./bilibili"),h=function(){"use strict";function e(t,n){(0,o._)(this,e);var a=t.constructor,i=t.template;this.utils=a.utils,this.validator=a.validator,this.$danmuku=i.$danmuku,this.$player=i.$player,this.art=t,this.queue=[],this.$refs=[],this.isStop=!1,this.isHide=!1,this.timer=null,this.index=0,this.option=e.option,this.states={wait:[],ready:[],emit:[],stop:[]},this.config(n,!0);var r=new Blob([p.default.replace("export{e as default};","")],{type:"application/javascript"});this.worker=new Worker(URL.createObjectURL(r)),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),t.on("video:play",this.start),t.on("video:playing",this.start),t.on("video:pause",this.stop),t.on("video:waiting",this.stop),t.on("destroy",this.destroy),t.on("resize",this.resize),this.load()}return(0,s._)(e,[{key:"isRotate",get:function(){var e,t;return null==(t=this.art.plugins)||null==(e=t.autoOrientation)?void 0:e.state}},{key:"marginTop",get:function(){var t=this.utils.clamp,n=this.option.margin[0],a=this.$player.clientHeight;return"number"==typeof n?t(n,0,a):"string"==typeof n&&n.endsWith("%")?t(a*(Number.parseFloat(n)/100),0,a):e.option.margin[0]}},{key:"marginBottom",get:function(){var t=this.utils.clamp,n=this.option.margin[1],a=this.$player.clientHeight;return"number"==typeof n?t(n,0,a):"string"==typeof n&&n.endsWith("%")?t(a*(Number.parseFloat(n)/100),0,a):e.option.margin[1]}},{key:"fontSize",get:function(){var t=this.utils.clamp,n=this.$player.clientHeight,a=this.option.fontSize;return"number"==typeof a?Math.round(t(a,12,n)):"string"==typeof a&&a.endsWith("%")?Math.round(t(n*(Number.parseFloat(a)/100),12,n)):e.option.fontSize}},{key:"$ref",get:function(){var t=this.$refs.pop()||document.createElement("div");return t.style.cssText=e.cssText,t.dataset.mode="",t.dataset.id="",t.className="",t}},{key:"readys",get:function(){var e=this.art.currentTime,t=[];return this.filter("ready",function(e){return t.push(e)}),this.filter("wait",function(n){e+.1>=n.time&&n.time>=e-.1&&t.push(n)}),t}},{key:"visibles",get:function(){var e=this,t=[],n=this.$player.clientWidth,a=this.getLeft(this.$player);return this.filter("emit",function(i){var r=i.$ref.offsetTop,o=e.getLeft(i.$ref)-a,s=i.$ref.clientHeight,l=i.$ref.clientWidth,u=o+l,d=u/i.$restTime,c={};c.top=r,c.left=o,c.height=s,c.width=l,c.right=n-u,c.speed=d,c.distance=u,c.time=i.$restTime,c.mode=i.mode,t.push(c)}),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(e){return(0,r._)(function(){var t,n,a,i,r,o;return(0,d._)(this,function(s){switch(s.label){case 0:t=this.utils.errorHandle,n=[],a=e||this.option.danmuku,s.label=1;case 1:if(s.trys.push([1,13,,14]),"function"!=typeof a)return[3,3];return[4,a()];case 2:case 4:case 6:return n=s.sent(),[3,8];case 3:if(!(a instanceof Promise))return[3,5];return[4,a];case 5:if("string"!=typeof a)return[3,7];return[4,(0,f.bilibiliDanmuParseFromUrl)(a)];case 7:Array.isArray(a)&&(n=a),s.label=8;case 8:t(Array.isArray(n),"Danmuku need return an array as result"),void 0===e&&(this.reset(),this.queue=[],this.states={wait:[],ready:[],emit:[],stop:[]},this.$refs=[],this.$danmuku.textContent=""),i=0,s.label=9;case 9:if(!(i1&&void 0!==arguments[1]&&arguments[1],i=this.utils.clamp,r=this.art.template.$controlsCenter;return(Object.keys(t).some(function(e){return JSON.stringify(n.option[e])!==JSON.stringify(t[e])})||a)&&(this.option=Object.assign({},e.option,this.option,t),this.validator(this.option,e.scheme),this.option.mode=i(this.option.mode,0,2),this.option.speed=i(this.option.speed,1,10),this.option.opacity=i(this.option.opacity,0,1),this.option.lockTime=i(this.option.lockTime,1,60),this.option.maxLength=i(this.option.maxLength,1,1e3),this.option.mount=this.option.mount||r,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(n){t.id=Date.now(),e.worker.postMessage(t),e.worker.onmessage=function(e){var a=e.data;a.id===t.id&&n(a)}})}},{key:"filter",value:function(e,t){for(var n=this.states[e]||[],a=0;a0&&i[i.length-1])&&(6===u[0]||2===u[0])){r=0;continue}if(3===u[0]&&(!i||u[1]>i[0]&&u[1]typeof module?module.exports=b:"function"==typeof define&&define.amd&&define(function(){return b})}}({Df7KK:[function(e,t,r,n){var o=e("@swc/helpers/cjs/_to_consumable_array.cjs");function i(e){var t=e.target,r=e.visibles,n=e.clientWidth,i=e.clientHeight,u=e.marginBottom,f=e.marginTop,a=e.antiOverlap,c=i-u,s=r.filter(function(e){return e.mode===t.mode&&e.top<=c}).sort(function(e,t){return e.top-t.top});if(0===s.length)if(2===t.mode)return c-t.height;else return f;if(s.unshift({type:"top",top:0,left:0,right:0,height:f,width:n,speed:0,distance:n}),s.push({type:"bottom",top:c,left:0,right:0,height:u,width:n,speed:0,distance:n}),2===t.mode)for(var l=s.length-2;l>=0;l-=1){var p=s[l],d=s[l+1],h=p.top+p.height;if(d.top-h>=t.height)return d.top-t.height}else for(var b=1;b=t.height)return y}for(var v=[],_=1;_e.time))})});return j&&j[0]?j[0].top:void 0;case 1:case 2:return}else{switch(t.mode){case 0:v.sort(function(e,t){var r,n,i=(r=Math).min.apply(r,(0,o._)(t.map(function(e){return e.right}))),u=(n=Math).min.apply(n,(0,o._)(e.map(function(e){return e.right})));return i*t.length-u*e.length});break;case 1:case 2:v.sort(function(e,t){var r,n,i=(r=Math).max.apply(r,(0,o._)(t.map(function(e){return e.width})));return(n=Math).max.apply(n,(0,o._)(e.map(function(e){return e.width})))*e.length-i*t.length})}return v[0][0].top}}onmessage=function(e){var t=e.data;t.id&&t.type&&globalThis.postMessage({result:(0,({getDanmuTop:i})[t.type])(t),id:t.id})}},{"@swc/helpers/cjs/_to_consumable_array.cjs":"i81N6"}],i81N6:[function(e,t,r,n){"use strict";var o=e("d402183024004bc7"),i=e("3209e2b12672cd18"),u=e("fc58adb8f1bff142"),f=e("5e213dc122a10171");r._=function(e){return o._(e)||i._(e)||f._(e)||u._()}},{d402183024004bc7:"hfQG0","3209e2b12672cd18":"fQrlQ",fc58adb8f1bff142:"fWabh","5e213dc122a10171":"fh7mx"}],hfQG0:[function(e,t,r,n){"use strict";var o=e("5bd5b10bf87fc8e");r._=function(e){if(Array.isArray(e))return o._(e)}},{"5bd5b10bf87fc8e":"1WOAB"}],"1WOAB":[function(e,t,r,n){"use strict";r._=function(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);rtypeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}},{}],fWabh:[function(e,t,r,n){"use strict";r._=function(){throw TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}},{}],fh7mx:[function(e,t,r,n){"use strict";var o=e("3ee51b7dc02d0c44");r._=function(e,t){if(e){if("string"==typeof e)return o._(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if("Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r)return Array.from(r);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return o._(e,t)}}},{"3ee51b7dc02d0c44":"1WOAB"}]},["Df7KK"],"Df7KK","parcelRequire4dc0",{});'},{}],nzPZ8:[function(e,t,n,a){var i=e("@parcel/transformer-js/src/esmodule-helpers.js");i.defineInteropFlag(n),i.export(n,"bilibiliDanmuParseFromUrl",function(){return d});var r=e("@swc/helpers/cjs/_async_to_generator.cjs"),o=e("@swc/helpers/cjs/_ts_generator.cjs");function s(e){switch(e){case 1:case 2:case 3:default:return 0;case 4:return 2;case 5:return 1}}function l(e){if("string"!=typeof e)return[];var t=RegExp(']*?p="(?

[^"]+)"[^>]*>(?.*?)<\\/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:s(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 u(e){var t=e.data,n=t.xml,a=t.id;a&&n&&globalThis.postMessage({danmus:l(n),id:a})}function d(e){return new Promise(function(t){return(0,r._)(function(){var n,a;return(0,o._)(this,function(i){switch(i.label){case 0:return[4,fetch(e)];case 1:return[4,i.sent().text()];case 2:n=i.sent();try{var r;r=new Blob(["\n ".concat(s.toString(),"\n ").concat(l.toString(),"\n onmessage = ").concat(u.toString(),"\n ")],{type:"application/javascript"}),(a=new Worker(URL.createObjectURL(r))).onmessage=function(e){var n=e.data,i=n.danmus;n.id&&i&&(t(i),a.terminate())},a.postMessage({xml:n,id:Date.now()})}catch(e){console.error("Error parsing Bilibili Danmu:",e),t(l(n))}return[2]}})})()})}},{"@swc/helpers/cjs/_async_to_generator.cjs":"cZn0e","@swc/helpers/cjs/_ts_generator.cjs":"eltGh","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],qpMMf:[function(e,t,n,a){n.interopDefault=function(e){return e&&e.__esModule?e:{default:e}},n.defineInteropFlag=function(e){Object.defineProperty(e,"__esModule",{value:!0})},n.exportAll=function(e,t){return Object.keys(e).forEach(function(n){"default"===n||"__esModule"===n||Object.prototype.hasOwnProperty.call(t,n)||Object.defineProperty(t,n,{enumerable:!0,get:function(){return e[n]}})}),t},n.export=function(e,t,n){Object.defineProperty(e,t,{enumerable:!0,get:n})}},{}],hLPK6:[function(e,t,n,a){var i=e("@parcel/transformer-js/src/esmodule-helpers.js");i.defineInteropFlag(n),i.export(n,"default",function(){return l});var r=e("@swc/helpers/cjs/_to_consumable_array.cjs"),o=e("@swc/helpers/cjs/_type_of.cjs"),s=function(e,t,n,a,i){return(e-t)*(i-a)/(n-t)+a};function l(e,t,n){var a=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(i){var l=null,u=null;function d(){var d,c,p=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(l=null,u=null,i.innerHTML="",e.duration&&!e.option.isLive){var f={w:i.offsetWidth,h:i.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};(void 0===n?"undefined":(0,o._)(n))==="object"&&Object.assign(h,n);var m=[];if(Array.isArray(p)&&p.length)m=(0,r._)(p);else for(var g=function(e){var n=t.queue.filter(function(t){var n=t.time;return n>e*v&&n<=(e+h.sampling)*v}).length;m.push([e,n])},v=e.duration/f.w,y=0;y<=f.w;y+=h.sampling)g(y);if(0!==m.length){var b=m[m.length-1],k=b[0],x=b[1];k!==f.w&&m.push([f.w,x]);for(var w=m.map(function(e){return e[1]}),_=((d=Math).min.apply(d,(0,r._)(w))+(c=Math).max.apply(c,(0,r._)(w)))/2,$=0;$_?1+h.scale:1-h.scale)+h.minHeight}var O=function(e,t,n,a){var i,r,o=t||e,l=n||e,u={length:Math.sqrt(Math.pow(i=l[0]-o[0],2)+Math.pow(r=l[1]-o[1],2)),angle:Math.atan2(r,i)},d=s(Math.cos(u.angle)*h.flattening,0,1,1,0),c=u.angle*d+(a?Math.PI:0),p=u.length*h.smoothing;return[e[0]+Math.cos(c)*p,e[1]+Math.sin(c)*p]},S=function(e,t,n){var a=O(n[t-1],n[t-2],e),i=O(e,n[t-1],n[t+1],!0),r=t===n.length-1?" z":"";return"C ".concat(a[0],",").concat(a[1]," ").concat(i[0],",").concat(i[1]," ").concat(e[0],",").concat(e[1]).concat(r)},D=m.map(function(e){return[s(e[0],h.xMin,h.xMax,0,f.w),s(e[1],h.yMin,h.yMax,f.h,0)]}).reduce(function(e,t,n,a){return 0===n?"M ".concat(a[a.length-1][0],",").concat(f.h," L ").concat(t[0],",").concat(f.h," L ").concat(t[0],",").concat(t[1]):"".concat(e," ").concat(S(t,n,a))},"");i.innerHTML='\n\n\n\n\n\n\n\n\n\n\n\n '),l=a("#heatmap-start",i),u=a("#heatmap-stop",i),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 d()}),e.on("resize",function(){return d()}),e.on("artplayerPluginDanmuku:loaded",function(){return d()}),e.on("artplayerPluginDanmuku:points",function(e){return d(e)})}})}},{"@swc/helpers/cjs/_to_consumable_array.cjs":"i81N6","@swc/helpers/cjs/_type_of.cjs":"iXhRw","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],i81N6:[function(e,t,n,a){"use strict";var i=e("d402183024004bc7"),r=e("3209e2b12672cd18"),o=e("fc58adb8f1bff142"),s=e("5e213dc122a10171");n._=function(e){return i._(e)||r._(e)||s._(e)||o._()}},{d402183024004bc7:"hfQG0","3209e2b12672cd18":"fQrlQ",fc58adb8f1bff142:"fWabh","5e213dc122a10171":"fh7mx"}],hfQG0:[function(e,t,n,a){"use strict";var i=e("5bd5b10bf87fc8e");n._=function(e){if(Array.isArray(e))return i._(e)}},{"5bd5b10bf87fc8e":"1WOAB"}],"1WOAB":[function(e,t,n,a){"use strict";n._=function(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);ntypeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}},{}],fWabh:[function(e,t,n,a){"use strict";n._=function(){throw TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}},{}],fh7mx:[function(e,t,n,a){"use strict";var i=e("3ee51b7dc02d0c44");n._=function(e,t){if(e){if("string"==typeof e)return i._(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return i._(e,t)}}},{"3ee51b7dc02d0c44":"1WOAB"}],iXhRw:[function(e,t,n,a){"use strict";n._=function(e){return e&&"u">typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}},{}],jpEpW:[function(e,t,n,a){var i=e("@parcel/transformer-js/src/esmodule-helpers.js");i.defineInteropFlag(n),i.export(n,"default",function(){return H});var r=e("@swc/helpers/cjs/_async_to_generator.cjs"),o=e("@swc/helpers/cjs/_class_call_check.cjs"),s=e("@swc/helpers/cjs/_create_class.cjs"),l=e("@swc/helpers/cjs/_object_spread.cjs"),u=e("@swc/helpers/cjs/_object_spread_props.cjs"),d=e("@swc/helpers/cjs/_to_consumable_array.cjs"),c=e("@swc/helpers/cjs/_ts_generator.cjs"),p=e("bundle-text:./img/check_off.svg"),f=i.interopDefault(p),h=e("bundle-text:./img/check_on.svg"),m=i.interopDefault(h),g=e("bundle-text:./img/config.svg"),v=i.interopDefault(g),y=e("bundle-text:./img/mode_0_off.svg"),b=i.interopDefault(y),k=e("bundle-text:./img/mode_0_on.svg"),x=i.interopDefault(k),w=e("bundle-text:./img/mode_1_off.svg"),_=i.interopDefault(w),$=e("bundle-text:./img/mode_1_on.svg"),j=i.interopDefault($),M=e("bundle-text:./img/mode_2_off.svg"),O=i.interopDefault(M),S=e("bundle-text:./img/mode_2_on.svg"),D=i.interopDefault(S),P=e("bundle-text:./img/off.svg"),T=i.interopDefault(P),A=e("bundle-text:./img/on.svg"),q=i.interopDefault(A),E=e("bundle-text:./img/style.svg"),C=i.interopDefault(E),Z=e("bundle-text:./style.less"),F=i.interopDefault(Z),H=function(){"use strict";function e(t,n){var a=this;(0,o._)(this,e),this.art=t,this.danmuku=n,this.utils=t.constructor.utils;var i=this.utils.setStyle,r=t.template.$controlsCenter;i(r,"display","flex"),this.template={$controlsCenter:r,$mount:r,$danmuku:null,$toggle:null,$config:null,$configPanel:null,$configModes:null,$style:null,$stylePanel: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),t.on("resize",function(){return a.resize()}),t.on("fullscreen",function(e){return a.onFullscreen(e)}),t.on("fullscreenWeb",function(e){return a.onFullscreen(e)}),t.proxy(this.template.$config,"mouseenter",function(){a.onMouseEnter({$control:a.template.$config,$panel:a.template.$configPanel})}),t.proxy(this.template.$style,"mouseenter",function(){a.onMouseEnter({$control:a.template.$style,$panel:a.template.$stylePanel})})}return(0,s._)(e,[{key:"option",get:function(){return this.danmuku.option}},{key:"outside",get:function(){return this.template.$mount!==this.template.$controlsCenter}},{key:"TEMPLATE",get:function(){var e=this.option;return'\n

\n '.concat(q.default).concat(T.default,'\n
\n
\n ').concat(v.default,'\n
\n
\n
\n 按类型屏蔽\n
\n
\n ').concat(b.default).concat(x.default,'\n
滚动
\n
\n
\n ').concat(_.default).concat(j.default,'\n
顶部
\n
\n
\n ').concat(O.default).concat(D.default,'\n
底部
\n
\n
\n
\n
\n
\n ').concat(m.default).concat(f.default,'\n 防止弹幕重叠\n
\n
\n ').concat(m.default).concat(f.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(C.default,'\n
\n
\n
\n 模式\n
\n
\n ').concat(x.default,'\n
滚动
\n
\n
\n ').concat(j.default,'\n
顶部
\n
\n
\n ').concat(D.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,l._)({min:0,max:100,steps:[]},this.option.OPACITY)}},{key:"FONT_SIZE",get:function(){return(0,l._)({min:12,max:120,steps:[]},this.option.FONT_SIZE)}},{key:"MARGIN",get:function(){return(0,l._)({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,l._)({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:"append",value:function(e,t){var n=this.utils.append;(0,d._)(e.children).includes(t)||n(e,t)}},{key:"setData",value:function(e,t){var n=this.art.template.$player,a=this.template.$mount;n.dataset[e]=t,this.outside&&(a.dataset[e]=t)}},{key:"createTemplate",value:function(){var e=this.utils,t=e.createElement,n=e.tooltip,a=t("div");a.className="artplayer-plugin-danmuku",a.innerHTML=this.TEMPLATE,this.template.$danmuku=a,this.template.$toggle=this.query(".apd-toggle"),this.template.$config=this.query(".apd-config"),this.template.$configPanel=this.query(".apd-config-panel"),this.template.$configModes=this.query(".apd-config-mode .apd-modes"),this.template.$style=this.query(".apd-style"),this.template.$stylePanel=this.query(".apd-style-panel"),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 i=this.template.$toggle;this.art.on("artplayerPluginDanmuku:show",function(){n(i,"关闭弹幕")}),this.art.on("artplayerPluginDanmuku:hide",function(){n(i,"打开弹幕")})}},{key:"createEvents",value:function(){var e=this,t=this.template,n=t.$toggle,a=t.$configModes,i=t.$styleModes,r=t.$colors,o=t.$antiOverlap,s=t.$syncVideo,l=t.$send,u=t.$input;this.art.proxy(n,"click",function(){e.danmuku.config({visible:!e.option.visible}),e.reset()}),this.art.proxy(a,"click",function(t){var n=t.target.closest(".apd-mode");if(n){var a=Number(n.dataset.mode);e.option.modes.includes(a)?e.danmuku.config({modes:e.option.modes.filter(function(e){return e!==a})}):e.danmuku.config({modes:(0,d._)(e.option.modes).concat([a])}),e.reset()}}),this.art.proxy(o,"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(i,"click",function(t){var n=t.target.closest(".apd-mode");if(n){var a=Number(n.dataset.mode);e.danmuku.config({mode:a}),e.reset()}}),this.art.proxy(r,"click",function(t){var n=t.target.closest(".apd-color");n&&(e.danmuku.config({color:n.dataset.color}),e.reset())}),this.art.proxy(l,"click",function(){return e.emit()}),this.art.proxy(u,"keypress",function(t){"Enter"===t.key&&(t.preventDefault(),e.emit())})}},{key:"createSliders",value:function(){var e=this;this.slider.opacity=this.createSlider((0,u._)((0,l._)({},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,u._)((0,l._)({},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 n=e.MARGIN.steps[t];n&&(e.template.$marginValue.textContent=n.name,e.danmuku.config({margin:n.value}))}})),this.slider.fontSize=this.createSlider((0,u._)((0,l._)({},this.FONT_SIZE),{container:this.template.$fontSizeSlider,findIndex:function(){return e.danmuku.fontSize},onChange:function(t){e.template.$fontSizeValue.textContent="".concat(t,"px"),t!==e.danmuku.fontSize&&e.danmuku.config({fontSize:t})}})),this.slider.speed=this.createSlider((0,u._)((0,l._)({},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 n=e.SPEED.steps[t];n&&(e.template.$speedValue.textContent=n.name,e.danmuku.config({speed:n.value}))}}))}},{key:"createSlider",value:function(e){var t=this,n=e.min,a=e.max,i=e.container,r=e.findIndex,o=e.onChange,s=e.steps,l=void 0===s?[]:s,u=this.utils,d=u.query,c=u.clamp;(0,u.setStyle)(i,"touch-action","none"),i.innerHTML='\n
\n
\n '.concat(l.map(function(){return'
'}).join(""),'\n
\n
\n
\n
\n
\n ').concat(l.map(function(e){return e.hide?"":'
'.concat(e.name,"
")}).join(""),"\n
\n ");var p=d(".apd-slider-dot",i),f=d(".apd-slider-progress",i),h=!1;function m(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:r();if(!(ea)){var t=(e-n)/(a-n);p.style.left="".concat(100*t,"%"),0===l.length&&(f.style.width=p.style.left),o(e)}}function g(e){var t=i.getBoundingClientRect(),r=t.top,o=t.height,s=t.left,l=t.width;this.art.isRotate?m(Math.round(c(e.clientY-r,0,o)/o*(a-n)+n)):m(Math.round(c(e.clientX-s,0,l)/l*(a-n)+n))}return this.art.proxy(i,"click",function(e){g.call(t,e)}),this.art.proxy(i,"pointerdown",function(e){h=0===e.button}),this.art.on("document:pointermove",function(e){h&&g.call(t,e)}),this.art.on("document:pointerup",function(e){h&&(h=!1,g.call(t,e))}),{reset:m}}},{key:"onFullscreen",value:function(e){var t=this.template,n=t.$danmuku,a=t.$controlsCenter,i=t.$mount;this.outside?e?this.append(a,n):this.append(i,n):this.append(a,n)}},{key:"onMouseEnter",value:function(e){var t=e.$control,n=e.$panel,a=this.art.template.$player,i=t.getBoundingClientRect(),r=n.getBoundingClientRect(),o=a.getBoundingClientRect(),s=r.width/2-i.width/2,l=o.left-(i.left-s),u=i.right+s-o.right;l>0?n.style.left="".concat(-s+l,"px"):u>0?n.style.left="".concat(-s-u,"px"):n.style.left="".concat(-s,"px")}},{key:"emit",value:function(){return(0,r._)(function(){var e,t,n,a;return(0,c._)(this,function(i){switch(i.label){case 0:if(!(t=(e=this.template.$input).value.trim()).length||this.isLock||this.emitting)return[2];n={text:t,mode:this.option.mode,color:this.option.color,time:this.art.currentTime},i.label=1;case 1:return i.trys.push([1,3,,4]),this.emitting=!0,[4,this.option.beforeEmit(n)];case 2:if(a=i.sent(),this.emitting=!1,!0!==a)return[2];return n.border=!0,delete n.time,this.danmuku.emit(n),e.value="",this.lock(),[3,4];case 3:return console.error("Error emitting danmuku:",i.sent()),this.emitting=!1,[3,4];case 4:return[2]}})}).call(this)}},{key:"lock",value:function(){var e=this,t=this.utils.addClass,n=this.template.$send;this.isLock=!0;var a=this.option.lockTime;n.textContent=a,t(n,"apd-lock");var i=function(){e.timer=setTimeout(function(){0===a?e.unlock():(n.textContent=a-=1,i())},1e3)};i()}},{key:"unlock",value:function(){var e=this.utils.removeClass,t=this.template.$send;clearTimeout(this.timer),this.isLock=!1,t.textContent="发送",e(t,"apd-lock")}},{key:"resize",value:function(){if(!this.outside&&!this.art.fullscreen&&!this.art.fullscreenWeb){var e=this.art.template,t=e.$player,n=e.$controlsCenter,a=this.template.$danmuku;this.art.widthtypeof document){var L="artplayer-plugin-danmuku",V=document.getElementById(L);V||((V=document.createElement("style")).id=L,"loading"===document.readyState?document.addEventListener("DOMContentLoaded",function(){document.head.appendChild(V)}):(document.head||document.documentElement).appendChild(V)),V.textContent=F.default}},{"@swc/helpers/cjs/_async_to_generator.cjs":"cZn0e","@swc/helpers/cjs/_class_call_check.cjs":"4Uf9M","@swc/helpers/cjs/_create_class.cjs":"igUuK","@swc/helpers/cjs/_object_spread.cjs":"kyoEj","@swc/helpers/cjs/_object_spread_props.cjs":"3G1wX","@swc/helpers/cjs/_to_consumable_array.cjs":"i81N6","@swc/helpers/cjs/_ts_generator.cjs":"eltGh","bundle-text:./img/check_off.svg":"3Kuo7","bundle-text:./img/check_on.svg":"lVPfB","bundle-text:./img/config.svg":"a75dO","bundle-text:./img/mode_0_off.svg":"e5Ndj","bundle-text:./img/mode_0_on.svg":"fgakY","bundle-text:./img/mode_1_off.svg":"1rW7G","bundle-text:./img/mode_1_on.svg":"86V1z","bundle-text:./img/mode_2_off.svg":"8rkmQ","bundle-text:./img/mode_2_on.svg":"bGZsR","bundle-text:./img/off.svg":"iO9LX","bundle-text:./img/on.svg":"abS9U","bundle-text:./img/style.svg":"g7T0K","bundle-text:./style.less":"d3e2n","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],"3Kuo7":[function(e,t,n,a){t.exports=''},{}],lVPfB:[function(e,t,n,a){t.exports=''},{}],a75dO:[function(e,t,n,a){t.exports=''},{}],e5Ndj:[function(e,t,n,a){t.exports=''},{}],fgakY:[function(e,t,n,a){t.exports=''},{}],"1rW7G":[function(e,t,n,a){t.exports=''},{}],"86V1z":[function(e,t,n,a){t.exports=''},{}],"8rkmQ":[function(e,t,n,a){t.exports=''},{}],bGZsR:[function(e,t,n,a){t.exports=''},{}],iO9LX:[function(e,t,n,a){t.exports=''},{}],abS9U:[function(e,t,n,a){t.exports=''},{}],g7T0K:[function(e,t,n,a){t.exports=''},{}],d3e2n:[function(e,t,n,a){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{opacity:0;pointer-events:none;width:320px;padding:10px;position:absolute;bottom:24px;left:0}.artplayer-plugin-danmuku .apd-config .apd-config-panel .apd-config-panel-inner{background-color:rgba(0,0,0,.85);border-radius:3px;width:100%;padding:10px}.artplayer-plugin-danmuku .apd-config:hover .apd-config-panel{opacity:100;pointer-events:all}.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:rgba(255,255,255,.25);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;top:0;bottom:0;left:0;right:0}.artplayer-plugin-danmuku .apd-slider .apd-slider-points .apd-slider-point{background-color:rgba(255,255,255,.5);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:rgba(255,255,255,.25);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{opacity:0;pointer-events:none;width:200px;padding:10px;position:absolute;bottom:24px;left:0}.artplayer-plugin-danmuku .apd-style .apd-style-panel .apd-style-panel-inner{background-color:rgba(0,0,0,.85);border-radius:3px;width:100%;padding:10px}.artplayer-plugin-danmuku .apd-style:hover .apd-style-panel{opacity:100;pointer-events:all}.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:transparent;border:none;outline:none;flex:1;width:auto;min-width:0;height:100%;line-height:1}.artplayer-plugin-danmuku .apd-input::placeholder{color:rgba(255,255,255,.5)}.artplayer-plugin-danmuku .apd-input::placeholder{color:rgba(255,255,255,.5)}.artplayer-plugin-danmuku .apd-send{cursor:pointer;width:60px;height:100%;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;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}.art-video-player>.artplayer-plugin-danmuku{padding:0 10px;position:absolute;bottom:-40px;left:0;right:0}.art-video-player:has(>.artplayer-plugin-danmuku){margin-bottom:40px}[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: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}'},{}]},["l3CkF"],"l3CkF","parcelRequire4dc0",{}); \ No newline at end of file diff --git a/docs/compiled/artplayer-plugin-danmuku.mjs b/docs/compiled/artplayer-plugin-danmuku.mjs index 3a32c9160..78b590330 100644 --- a/docs/compiled/artplayer-plugin-danmuku.mjs +++ b/docs/compiled/artplayer-plugin-danmuku.mjs @@ -5,4 +5,4 @@ * (c) 2017-2026 Harvey Zhao * Released under the MIT License. */ -!function(e,t,i,a,o){var n="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},s="function"==typeof n[a]&&n[a],r=s.i||{},l=s.cache||{},d="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function p(t,i){if(!l[t]){if(!e[t]){if(o[t])return o[t];var r="function"==typeof n[a]&&n[a];if(!i&&r)return r(t,!0);if(s)return s(t,!0);if(d&&"string"==typeof t)return d(t);var u=Error("Cannot find module '"+t+"'");throw u.code="MODULE_NOT_FOUND",u}m.resolve=function(i){var a=e[t][1][i];return null!=a?a:i},m.cache={};var h=l[t]=new p.Module(t);e[t][0].call(h.exports,m,h,h.exports,n)}return l[t].exports;function m(e){var t=m.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var i={__esModule:!0};return t.forEach(function(e){var t=e[0],a=e[1],o=e[2]||e[0],n=p(a);"*"===t?Object.keys(n).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(i,e)||Object.defineProperty(i,e,{enumerable:!0,get:function(){return n[e]}})}):"*"===o?Object.defineProperty(i,t,{enumerable:!0,value:n}):Object.defineProperty(i,t,{enumerable:!0,get:function(){return"default"===o?n.__esModule?n.default:n:n[o]}})}),i}return p(t)}}p.isParcelRequire=!0,p.Module=function(e){this.id=e,this.bundle=p,this.require=d,this.exports={}},p.modules=e,p.cache=l,p.parent=s,p.distDir=void 0,p.publicUrl=void 0,p.devServer=void 0,p.i=r,p.register=function(t,i){e[t]=[function(e,t){t.exports=i},{}]},Object.defineProperty(p,"root",{get:function(){return n[a]}}),n[a]=p;for(var u=0;utypeof module?module.exports=h:"function"==typeof define&&define.amd&&define(function(){return h})}}({"7ICE7":[function(e,t,i,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(i),o.export(i,"default",()=>u);var n=e("./danmuku"),s=o.interopDefault(n),r=e("./heatmap"),l=o.interopDefault(r),d=e("./setting"),p=o.interopDefault(d);function u(e){return t=>{let i=new(0,s.default)(t,e),a=new(0,p.default)(t,i);return i.option.heatmap&&(0,l.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}}}}u.icons=p.default.icons,"u">typeof window&&(window.artplayerPluginDanmuku=u)},{"./danmuku":"9bpce","./heatmap":"9KNY2","./setting":"94xSe","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],"9bpce":[function(e,t,i,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(i);var n=e("bundle-text:./worker"),s=o.interopDefault(n),r=e("./bilibili");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.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,!0);let o=new Blob([s.default.replace("export{e as default};","")],{type:"application/javascript"});this.worker=new Worker(URL.createObjectURL(o)),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,width:512,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",width:"number",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*(Number.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*(Number.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?Math.round(e(i,12,t)):"string"==typeof i&&i.endsWith("%")?Math.round(e(t*(Number.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.dataset.id="",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 o=a.$ref.offsetTop,n=this.getLeft(a.$ref)-i,s=a.$ref.clientHeight,r=a.$ref.clientWidth,l=n+r,d=l/a.$restTime,p={};p.top=o,p.left=n,p.height=s,p.width=r,p.right=t-l,p.speed=d,p.distance=l,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(e){let{errorHandle:t}=this.utils,i=[],a=e||this.option.danmuku;try{"function"==typeof a?i=await a():a instanceof Promise?i=await a:"string"==typeof a?i=await (0,r.bilibiliDanmuParseFromUrl)(a):Array.isArray(a)&&(i=a),t(Array.isArray(i),"Danmuku need return an array as result"),void 0===e&&(this.reset(),this.queue=[],this.states={wait:[],ready:[],emit:[],stop:[]},this.$refs=[],this.$danmuku.textContent="");for(let e=0;eJSON.stringify(this.option[t])!==JSON.stringify(e[t]))||t)&&(this.option=Object.assign({},l.option,this.option,e),this.validator(this.option,l.scheme),this.option.mode=i(this.option.mode,0,2),this.option.speed=i(this.option.speed,1,10),this.option.opacity=i(this.option.opacity,0,1),this.option.lockTime=i(this.option.lockTime,1,60),this.option.maxLength=i(this.option.maxLength,1,1e3),this.option.mount=this.option.mount||a,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},{"bundle-text:./worker":"eStRD","./bilibili":"f9FoX","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],eStRD:[function(e,t,i,a){t.exports='!function(e,t,r,o,i){var n="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},u="function"==typeof n[o]&&n[o],l=u.i||{},f=u.cache||{},p="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function s(t,r){if(!f[t]){if(!e[t]){if(i[t])return i[t];var l="function"==typeof n[o]&&n[o];if(!r&&l)return l(t,!0);if(u)return u(t,!0);if(p&&"string"==typeof t)return p(t);var d=Error("Cannot find module \'"+t+"\'");throw d.code="MODULE_NOT_FOUND",d}h.resolve=function(r){var o=e[t][1][r];return null!=o?o:r},h.cache={};var a=f[t]=new s.Module(t);e[t][0].call(a.exports,h,a,a.exports,n)}return f[t].exports;function h(e){var t=h.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var r={__esModule:!0};return t.forEach(function(e){var t=e[0],o=e[1],i=e[2]||e[0],n=s(o);"*"===t?Object.keys(n).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(r,e)||Object.defineProperty(r,e,{enumerable:!0,get:function(){return n[e]}})}):"*"===i?Object.defineProperty(r,t,{enumerable:!0,value:n}):Object.defineProperty(r,t,{enumerable:!0,get:function(){return"default"===i?n.__esModule?n.default:n:n[i]}})}),r}return s(t)}}s.isParcelRequire=!0,s.Module=function(e){this.id=e,this.bundle=s,this.require=p,this.exports={}},s.modules=e,s.cache=f,s.parent=u,s.distDir=void 0,s.publicUrl=void 0,s.devServer=void 0,s.i=l,s.register=function(t,r){e[t]=[function(e,t){t.exports=r},{}]},Object.defineProperty(s,"root",{get:function(){return n[o]}}),n[o]=s;for(var d=0;dtypeof module?module.exports=a:"function"==typeof define&&define.amd&&define(function(){return a})}}({b8YFA:[function(e,t,r,o){function i({target:e,visibles:t,clientWidth:r,clientHeight:o,marginBottom:n,marginTop:u,antiOverlap:l}){let f=o-n,p=t.filter(t=>t.mode===e.mode&&t.top<=f).sort((e,t)=>e.top-t.top);if(0===p.length)if(2===e.mode)return f-e.height;else return u;if(p.unshift({type:"top",top:0,left:0,right:0,height:u,width:r,speed:0,distance:r}),p.push({type:"bottom",top:f,left:0,right:0,height:n,width:r,speed:0,distance:r}),2===e.mode)for(let t=p.length-2;t>=0;t-=1){let r=p[t],o=p[t+1],i=r.top+r.height;if(o.top-i>=e.height)return o.top-e.height}else for(let t=1;t=e.height)return i}let s=[];for(let e=1;et.every(t=>!(rt.time))));return t&&t[0]?t[0].top:void 0}case 1:case 2:return}else{switch(e.mode){case 0:s.sort((e,t)=>{let r=Math.min(...t.map(e=>e.right)),o=Math.min(...e.map(e=>e.right));return r*t.length-o*e.length});break;case 1:case 2:s.sort((e,t)=>{let r=Math.max(...t.map(e=>e.width));return Math.max(...e.map(e=>e.width))*e.length-r*t.length})}return s[0][0].top}}onmessage=e=>{let{data:t}=e;t.id&&t.type&&globalThis.postMessage({result:(0,({getDanmuTop:i})[t.type])(t),id:t.id})}},{}]},["b8YFA"],"b8YFA","parcelRequire4dc0",{});let{"*":e}=parcelRequire4dc0("b8YFA");export{e as default};'},{}],f9FoX:[function(e,t,i,a){var o=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 s(e){return"string"!=typeof e?[]:Array.from(e.matchAll(/]*?p="(?

[^"]+)"[^>]*>(?.*?)<\/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)}function r({data:e}){let{xml:t,id:i}=e;i&&t&&globalThis.postMessage({danmus:s(t),id:i})}function l(e){return new Promise(async t=>{let i=await fetch(e),a=await i.text();try{let e,i=(e=new Blob([` ${n.toString()} ${s.toString()} onmessage = ${r.toString()} `],{type:"application/javascript"}),new Worker(URL.createObjectURL(e)));i.onmessage=e=>{let{danmus:a,id:o}=e.data;o&&a&&(t(a),i.terminate())},i.postMessage({xml:a,id:Date.now()})}catch(e){console.error("Error parsing Bilibili Danmu:",e),t(s(a))}})}o.defineInteropFlag(i),o.export(i,"bilibiliDanmuParseFromUrl",()=>l)},{"@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],loqXi:[function(e,t,i,a){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})}},{}],"9KNY2":[function(e,t,i,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(i),o.export(i,"default",()=>s);let n={map:(e,t,i,a,o)=>(e-t)*(o-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)}};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(o){let s=null,r=null;function l(d=[]){if(s=null,r=null,o.innerHTML="",!e.duration||e.option.isLive)return;let p={w:o.offsetWidth,h:o.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.queue.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]),y=(Math.min(...g)+Math.max(...g))/2;for(let e=0;ey?1+u.scale:1-u.scale)+u.minHeight}let v=(e,t,i,a)=>{let o,s,r=t||e,l=i||e,d=(o=l[0]-r[0],{length:Math.sqrt(o**2+(s=l[1]-r[1])**2),angle:Math.atan2(s,o)}),p=n.map(Math.cos(d.angle)*u.flattening,0,1,1,0),h=d.angle*p+(a?Math.PI:0),m=d.length*u.smoothing;return[e[0]+Math.cos(h)*m,e[1]+Math.sin(h)*m]},x=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)=>{let o,n,s;return 0===i?`M ${a[a.length-1][0]},${p.h} L ${t[0]},${p.h} L ${t[0]},${t[1]}`:`${e} ${o=v(a[i-1],a[i-2],t),n=v(t,a[i-1],a[i+1],!0),s=i===a.length-1?" z":"",`C ${o[0]},${o[1]} ${n[0]},${n[1]} ${t[0]},${t[1]}${s}`}`},"");o.innerHTML=``,s=a("#heatmap-start",o),r=a("#heatmap-stop",o),s.setAttribute("offset",`${100*e.played}%`),r.setAttribute("offset",`${100*e.played}%`)}e.on("video:timeupdate",()=>{s&&r&&(s.setAttribute("offset",`${100*e.played}%`),r.setAttribute("offset",`${100*e.played}%`))}),e.on("setBar",(e,t)=>{s&&r&&"played"===e&&(s.setAttribute("offset",`${100*t}%`),r.setAttribute("offset",`${100*t}%`))}),e.on("ready",()=>l()),e.on("resize",()=>l()),e.on("artplayerPluginDanmuku:loaded",()=>l()),e.on("artplayerPluginDanmuku:points",e=>l(e))}})}},{"@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],"94xSe":[function(e,t,i,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(i);var n=e("bundle-text:./img/check_off.svg"),s=o.interopDefault(n),r=e("bundle-text:./img/check_on.svg"),l=o.interopDefault(r),d=e("bundle-text:./img/config.svg"),p=o.interopDefault(d),u=e("bundle-text:./img/mode_0_off.svg"),h=o.interopDefault(u),m=e("bundle-text:./img/mode_0_on.svg"),c=o.interopDefault(m),f=e("bundle-text:./img/mode_1_off.svg"),g=o.interopDefault(f),y=e("bundle-text:./img/mode_1_on.svg"),v=o.interopDefault(y),x=e("bundle-text:./img/mode_2_off.svg"),b=o.interopDefault(x),k=e("bundle-text:./img/mode_2_on.svg"),$=o.interopDefault(k),w=e("bundle-text:./img/off.svg"),M=o.interopDefault(w),D=e("bundle-text:./img/on.svg"),S=o.interopDefault(D),E=e("bundle-text:./img/style.svg"),O=o.interopDefault(E),A=e("bundle-text:./style.less"),q=o.interopDefault(A);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,$config:null,$configPanel:null,$configModes:null,$style:null,$stylePanel: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("resize",()=>this.resize()),e.on("fullscreen",e=>this.onFullscreen(e)),e.on("fullscreenWeb",e=>this.onFullscreen(e)),e.proxy(this.template.$config,"mouseenter",()=>{this.onMouseEnter({$control:this.template.$config,$panel:this.template.$configPanel})}),e.proxy(this.template.$style,"mouseenter",()=>{this.onMouseEnter({$control:this.template.$style,$panel:this.template.$stylePanel})})}static get icons(){return{$on:S.default,$off:M.default,$config:p.default,$style:O.default,$mode_0_off:h.default,$mode_0_on:c.default,$mode_1_off:g.default,$mode_1_on:v.default,$mode_2_off:b.default,$mode_2_on:$.default,$check_on:l.default,$check_off:s.default}}get option(){return this.danmuku.option}get outside(){return this.template.$mount!==this.template.$controlsCenter}get TEMPLATE(){let{option:e}=this;return`

${S.default}${M.default}
${p.default}
\u{6309}\u{7C7B}\u{578B}\u{5C4F}\u{853D}
${h.default}${c.default}
\u{6EDA}\u{52A8}
${g.default}${v.default}
\u{9876}\u{90E8}
${b.default}${$.default}
\u{5E95}\u{90E8}
${l.default}${s.default} \u{9632}\u{6B62}\u{5F39}\u{5E55}\u{91CD}\u{53E0}
${l.default}${s.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}
${O.default}
\u{6A21}\u{5F0F}
${c.default}
\u{6EDA}\u{52A8}
${v.default}
\u{9876}\u{90E8}
${$.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)}append(e,t){let{append:i}=this.utils;[...e.children].includes(t)||i(e,t)}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.$config=this.query(".apd-config"),this.template.$configPanel=this.query(".apd-config-panel"),this.template.$configModes=this.query(".apd-config-mode .apd-modes"),this.template.$style=this.query(".apd-style"),this.template.$stylePanel=this.query(".apd-style-panel"),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:o,$syncVideo:n,$send:s,$input:r}=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(o,"click",()=>{this.danmuku.config({antiOverlap:!this.option.antiOverlap}),this.reset()}),this.art.proxy(n,"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(r,"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:()=>this.danmuku.fontSize,onChange:e=>{let{$fontSizeValue:t}=this.template;t.textContent=`${e}px`,e!==this.danmuku.fontSize&&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:o,steps:n=[]}){let{query:s,clamp:r,setStyle:l}=this.utils;l(i,"touch-action","none"),i.innerHTML=`
${n.map(()=>'
').join("")}
${n.map(e=>e.hide?"":`
${e.name}
`).join("")}
`;let d=s(".apd-slider-dot",i),p=s(".apd-slider-progress",i),u=!1;function h(i=a()){if(it)return;let s=(i-e)/(t-e);d.style.left=`${100*s}%`,0===n.length&&(p.style.width=d.style.left),o(i)}function m(a){let{top:o,height:n,left:s,width:l}=i.getBoundingClientRect();this.art.isRotate?h(Math.round(r(a.clientY-o,0,n)/n*(t-e)+e)):h(Math.round(r(a.clientX-s,0,l)/l*(t-e)+e))}return this.art.proxy(i,"click",e=>{m.call(this,e)}),this.art.proxy(i,"pointerdown",e=>{u=0===e.button}),this.art.on("document:pointermove",e=>{u&&m.call(this,e)}),this.art.on("document:pointerup",e=>{u&&(u=!1,m.call(this,e))}),{reset:h}}onFullscreen(e){let{$danmuku:t,$controlsCenter:i,$mount:a}=this.template;this.outside?e?this.append(i,t):this.append(a,t):this.append(i,t)}onMouseEnter({$control:e,$panel:t}){let{$player:i}=this.art.template,a=e.getBoundingClientRect(),o=t.getBoundingClientRect(),n=i.getBoundingClientRect(),s=o.width/2-a.width/2,r=n.left-(a.left-s),l=a.right+s-n.right;r>0?t.style.left=`${-s+r}px`:l>0?t.style.left=`${-s-l}px`:t.style.left=`${-s}px`}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){console.error("Error emitting danmuku:",e),this.emitting=!1}}lock(){let{addClass:e}=this.utils,{$send:t}=this.template;this.isLock=!0;let i=this.option.lockTime;t.textContent=i,e(t,"apd-lock");let a=()=>{this.timer=setTimeout(()=>{0===i?this.unlock():(t.textContent=i-=1,a())},1e3)};a()}unlock(){let{removeClass:e}=this.utils,{$send:t}=this.template;clearTimeout(this.timer),this.isLock=!1,t.textContent="发送",e(t,"apd-lock")}resize(){if(this.outside||this.art.fullscreen||this.art.fullscreenWeb)return;let{$player:e,$controlsCenter:t}=this.art.template,{$danmuku:i}=this.template;this.art.widthe.dataset.color===this.option.color.toUpperCase());o&&e(o,"apd-active"),t(i,this.option.visible?"关闭弹幕":"打开弹幕"),this.resize()}mount(e){let{errorHandle:t}=this.utils,i="string"==typeof e?document.querySelector(e):e;t(i,`Can not find the mount point: ${e}`),this.append(i,this.template.$danmuku),this.template.$mount=i,this.reset()}},"u">typeof document){let e="artplayer-plugin-danmuku",t=document.getElementById(e);t||((t=document.createElement("style")).id=e,"loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>{document.head.appendChild(t)}):(document.head||document.documentElement).appendChild(t)),t.textContent=q.default}},{"bundle-text:./img/check_off.svg":"im46l","bundle-text:./img/check_on.svg":"ltwtZ","bundle-text:./img/config.svg":"8OIDW","bundle-text:./img/mode_0_off.svg":"5p0NW","bundle-text:./img/mode_0_on.svg":"6UO2K","bundle-text:./img/mode_1_off.svg":"3NEwu","bundle-text:./img/mode_1_on.svg":"i22mQ","bundle-text:./img/mode_2_off.svg":"61WC2","bundle-text:./img/mode_2_on.svg":"aE6Hl","bundle-text:./img/off.svg":"jKHHh","bundle-text:./img/on.svg":"iryDR","bundle-text:./img/style.svg":"4Oibx","bundle-text:./style.less":"bjrFj","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],im46l:[function(e,t,i,a){t.exports=''},{}],ltwtZ:[function(e,t,i,a){t.exports=''},{}],"8OIDW":[function(e,t,i,a){t.exports=''},{}],"5p0NW":[function(e,t,i,a){t.exports=''},{}],"6UO2K":[function(e,t,i,a){t.exports=''},{}],"3NEwu":[function(e,t,i,a){t.exports=''},{}],i22mQ:[function(e,t,i,a){t.exports=''},{}],"61WC2":[function(e,t,i,a){t.exports=''},{}],aE6Hl:[function(e,t,i,a){t.exports=''},{}],jKHHh:[function(e,t,i,a){t.exports=''},{}],iryDR:[function(e,t,i,a){t.exports=''},{}],"4Oibx":[function(e,t,i,a){t.exports=''},{}],bjrFj:[function(e,t,i,a){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{opacity:0;pointer-events:none;width:320px;padding:10px;position:absolute;bottom:24px;left:0}.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{opacity:100;pointer-events:all}.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{opacity:0;pointer-events:none;width:200px;padding:10px;position:absolute;bottom:24px;left:0}.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{opacity:100;pointer-events:all}.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;width:60px;height:100%;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;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}.art-video-player>.artplayer-plugin-danmuku{padding:0 10px;position:absolute;bottom:-40px;left:0;right:0}.art-video-player:has(>.artplayer-plugin-danmuku){margin-bottom:40px}[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}'},{}]},["7ICE7"],"7ICE7","parcelRequire4dc0",{});let{default:e}=parcelRequire4dc0("7ICE7");export{e as default}; \ No newline at end of file +!function(e,t,i,a,o,n,s,r){var l="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},d="function"==typeof l[a]&&l[a],p=d.i||{},u=d.cache||{},h="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function m(t,i){if(!u[t]){if(!e[t]){if(o[t])return o[t];var n="function"==typeof l[a]&&l[a];if(!i&&n)return n(t,!0);if(d)return d(t,!0);if(h&&"string"==typeof t)return h(t);var s=Error("Cannot find module '"+t+"'");throw s.code="MODULE_NOT_FOUND",s}p.resolve=function(i){var a=e[t][1][i];return null!=a?a:i},p.cache={};var r=u[t]=new m.Module(t);e[t][0].call(r.exports,p,r,r.exports,l)}return u[t].exports;function p(e){var t=p.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var i={__esModule:!0};return t.forEach(function(e){var t=e[0],a=e[1],o=e[2]||e[0],n=m(a);"*"===t?Object.keys(n).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(i,e)||Object.defineProperty(i,e,{enumerable:!0,get:function(){return n[e]}})}):"*"===o?Object.defineProperty(i,t,{enumerable:!0,value:n}):Object.defineProperty(i,t,{enumerable:!0,get:function(){return"default"===o?n.__esModule?n.default:n:n[o]}})}),i}return m(t)}}m.isParcelRequire=!0,m.Module=function(e){this.id=e,this.bundle=m,this.require=h,this.exports={}},m.modules=e,m.cache=u,m.parent=d,m.distDir=void 0,m.publicUrl=void 0,m.devServer=void 0,m.i=p,m.register=function(t,i){e[t]=[function(e,t){t.exports=i},{}]},Object.defineProperty(m,"root",{get:function(){return l[a]}}),l[a]=m;for(var c=0;ctypeof module?module.exports=f:"function"==typeof define&&define.amd&&define(function(){return f})}}({"7ICE7":[function(e,t,i,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(i),o.export(i,"default",()=>u);var n=e("./danmuku"),s=o.interopDefault(n),r=e("./heatmap"),l=o.interopDefault(r),d=e("./setting"),p=o.interopDefault(d);function u(e){return t=>{let i=new(0,s.default)(t,e),a=new(0,p.default)(t,i);return i.option.heatmap&&(0,l.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}}}}u.icons=p.default.icons,"u">typeof window&&(window.artplayerPluginDanmuku=u)},{"./danmuku":"9bpce","./heatmap":"9KNY2","./setting":"94xSe","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],"9bpce":[function(e,t,i,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(i);var n=e("bundle-text:./worker"),s=o.interopDefault(n),r=e("./bilibili");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.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,!0);let o=new Blob([s.default.replace("export{e as default};","")],{type:"application/javascript"});this.worker=new Worker(URL.createObjectURL(o)),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,width:512,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",width:"number",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*(Number.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*(Number.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?Math.round(e(i,12,t)):"string"==typeof i&&i.endsWith("%")?Math.round(e(t*(Number.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.dataset.id="",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 o=a.$ref.offsetTop,n=this.getLeft(a.$ref)-i,s=a.$ref.clientHeight,r=a.$ref.clientWidth,l=n+r,d=l/a.$restTime,p={};p.top=o,p.left=n,p.height=s,p.width=r,p.right=t-l,p.speed=d,p.distance=l,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(e){let{errorHandle:t}=this.utils,i=[],a=e||this.option.danmuku;try{"function"==typeof a?i=await a():a instanceof Promise?i=await a:"string"==typeof a?i=await (0,r.bilibiliDanmuParseFromUrl)(a):Array.isArray(a)&&(i=a),t(Array.isArray(i),"Danmuku need return an array as result"),void 0===e&&(this.reset(),this.queue=[],this.states={wait:[],ready:[],emit:[],stop:[]},this.$refs=[],this.$danmuku.textContent="");for(let e=0;eJSON.stringify(this.option[t])!==JSON.stringify(e[t]))||t)&&(this.option=Object.assign({},l.option,this.option,e),this.validator(this.option,l.scheme),this.option.mode=i(this.option.mode,0,2),this.option.speed=i(this.option.speed,1,10),this.option.opacity=i(this.option.opacity,0,1),this.option.lockTime=i(this.option.lockTime,1,60),this.option.maxLength=i(this.option.maxLength,1,1e3),this.option.mount=this.option.mount||a,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},{"bundle-text:./worker":"eStRD","./bilibili":"f9FoX","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],eStRD:[function(e,t,i,a){t.exports='!function(e,t,r,o,i,n,u,l){var f="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},p="function"==typeof f[o]&&f[o],s=p.i||{},d=p.cache||{},a="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function h(t,r){if(!d[t]){if(!e[t]){if(i[t])return i[t];var n="function"==typeof f[o]&&f[o];if(!r&&n)return n(t,!0);if(p)return p(t,!0);if(a&&"string"==typeof t)return a(t);var u=Error("Cannot find module \'"+t+"\'");throw u.code="MODULE_NOT_FOUND",u}s.resolve=function(r){var o=e[t][1][r];return null!=o?o:r},s.cache={};var l=d[t]=new h.Module(t);e[t][0].call(l.exports,s,l,l.exports,f)}return d[t].exports;function s(e){var t=s.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var r={__esModule:!0};return t.forEach(function(e){var t=e[0],o=e[1],i=e[2]||e[0],n=h(o);"*"===t?Object.keys(n).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(r,e)||Object.defineProperty(r,e,{enumerable:!0,get:function(){return n[e]}})}):"*"===i?Object.defineProperty(r,t,{enumerable:!0,value:n}):Object.defineProperty(r,t,{enumerable:!0,get:function(){return"default"===i?n.__esModule?n.default:n:n[i]}})}),r}return h(t)}}h.isParcelRequire=!0,h.Module=function(e){this.id=e,this.bundle=h,this.require=a,this.exports={}},h.modules=e,h.cache=d,h.parent=p,h.distDir=void 0,h.publicUrl=void 0,h.devServer=void 0,h.i=s,h.register=function(t,r){e[t]=[function(e,t){t.exports=r},{}]},Object.defineProperty(h,"root",{get:function(){return f[o]}}),f[o]=h;for(var c=0;ctypeof module?module.exports=g:"function"==typeof define&&define.amd&&define(function(){return g})}}({b8YFA:[function(e,t,r,o){function i({target:e,visibles:t,clientWidth:r,clientHeight:o,marginBottom:i,marginTop:n,antiOverlap:u}){let l=o-i,f=t.filter(t=>t.mode===e.mode&&t.top<=l).sort((e,t)=>e.top-t.top);if(0===f.length)if(2===e.mode)return l-e.height;else return n;if(f.unshift({type:"top",top:0,left:0,right:0,height:n,width:r,speed:0,distance:r}),f.push({type:"bottom",top:l,left:0,right:0,height:i,width:r,speed:0,distance:r}),2===e.mode)for(let t=f.length-2;t>=0;t-=1){let r=f[t],o=f[t+1],i=r.top+r.height;if(o.top-i>=e.height)return o.top-e.height}else for(let t=1;t=e.height)return i}let p=[];for(let e=1;et.every(t=>!(rt.time))));return t&&t[0]?t[0].top:void 0}case 1:case 2:return}else{switch(e.mode){case 0:p.sort((e,t)=>{let r=Math.min(...t.map(e=>e.right)),o=Math.min(...e.map(e=>e.right));return r*t.length-o*e.length});break;case 1:case 2:p.sort((e,t)=>{let r=Math.max(...t.map(e=>e.width));return Math.max(...e.map(e=>e.width))*e.length-r*t.length})}return p[0][0].top}}onmessage=e=>{let{data:t}=e;t.id&&t.type&&globalThis.postMessage({result:(0,({getDanmuTop:i})[t.type])(t),id:t.id})}},{}]},["b8YFA"],"b8YFA","parcelRequire4dc0",{});let{"*":e}=parcelRequire4dc0("b8YFA");export{e as default};'},{}],f9FoX:[function(e,t,i,a){var o=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 s(e){return"string"!=typeof e?[]:Array.from(e.matchAll(/]*?p="(?

[^"]+)"[^>]*>(?.*?)<\/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)}function r({data:e}){let{xml:t,id:i}=e;i&&t&&globalThis.postMessage({danmus:s(t),id:i})}function l(e){return new Promise(async t=>{let i=await fetch(e),a=await i.text();try{let e,i=(e=new Blob([` ${n.toString()} ${s.toString()} onmessage = ${r.toString()} `],{type:"application/javascript"}),new Worker(URL.createObjectURL(e)));i.onmessage=e=>{let{danmus:a,id:o}=e.data;o&&a&&(t(a),i.terminate())},i.postMessage({xml:a,id:Date.now()})}catch(e){console.error("Error parsing Bilibili Danmu:",e),t(s(a))}})}o.defineInteropFlag(i),o.export(i,"bilibiliDanmuParseFromUrl",()=>l)},{"@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],loqXi:[function(e,t,i,a){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})}},{}],"9KNY2":[function(e,t,i,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(i),o.export(i,"default",()=>s);let n={map:(e,t,i,a,o)=>(e-t)*(o-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)}};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(o){let s=null,r=null;function l(d=[]){if(s=null,r=null,o.innerHTML="",!e.duration||e.option.isLive)return;let p={w:o.offsetWidth,h:o.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.queue.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]),y=(Math.min(...g)+Math.max(...g))/2;for(let e=0;ey?1+u.scale:1-u.scale)+u.minHeight}let v=(e,t,i,a)=>{let o,s,r=t||e,l=i||e,d=(o=l[0]-r[0],{length:Math.sqrt(o**2+(s=l[1]-r[1])**2),angle:Math.atan2(s,o)}),p=n.map(Math.cos(d.angle)*u.flattening,0,1,1,0),h=d.angle*p+(a?Math.PI:0),m=d.length*u.smoothing;return[e[0]+Math.cos(h)*m,e[1]+Math.sin(h)*m]},x=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)=>{let o,n,s;return 0===i?`M ${a[a.length-1][0]},${p.h} L ${t[0]},${p.h} L ${t[0]},${t[1]}`:`${e} ${o=v(a[i-1],a[i-2],t),n=v(t,a[i-1],a[i+1],!0),s=i===a.length-1?" z":"",`C ${o[0]},${o[1]} ${n[0]},${n[1]} ${t[0]},${t[1]}${s}`}`},"");o.innerHTML=``,s=a("#heatmap-start",o),r=a("#heatmap-stop",o),s.setAttribute("offset",`${100*e.played}%`),r.setAttribute("offset",`${100*e.played}%`)}e.on("video:timeupdate",()=>{s&&r&&(s.setAttribute("offset",`${100*e.played}%`),r.setAttribute("offset",`${100*e.played}%`))}),e.on("setBar",(e,t)=>{s&&r&&"played"===e&&(s.setAttribute("offset",`${100*t}%`),r.setAttribute("offset",`${100*t}%`))}),e.on("ready",()=>l()),e.on("resize",()=>l()),e.on("artplayerPluginDanmuku:loaded",()=>l()),e.on("artplayerPluginDanmuku:points",e=>l(e))}})}},{"@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],"94xSe":[function(e,t,i,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(i);var n=e("bundle-text:./img/check_off.svg"),s=o.interopDefault(n),r=e("bundle-text:./img/check_on.svg"),l=o.interopDefault(r),d=e("bundle-text:./img/config.svg"),p=o.interopDefault(d),u=e("bundle-text:./img/mode_0_off.svg"),h=o.interopDefault(u),m=e("bundle-text:./img/mode_0_on.svg"),c=o.interopDefault(m),f=e("bundle-text:./img/mode_1_off.svg"),g=o.interopDefault(f),y=e("bundle-text:./img/mode_1_on.svg"),v=o.interopDefault(y),x=e("bundle-text:./img/mode_2_off.svg"),b=o.interopDefault(x),k=e("bundle-text:./img/mode_2_on.svg"),$=o.interopDefault(k),w=e("bundle-text:./img/off.svg"),M=o.interopDefault(w),D=e("bundle-text:./img/on.svg"),S=o.interopDefault(D),E=e("bundle-text:./img/style.svg"),O=o.interopDefault(E),A=e("bundle-text:./style.less"),q=o.interopDefault(A);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,$config:null,$configPanel:null,$configModes:null,$style:null,$stylePanel: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("resize",()=>this.resize()),e.on("fullscreen",e=>this.onFullscreen(e)),e.on("fullscreenWeb",e=>this.onFullscreen(e)),e.proxy(this.template.$config,"mouseenter",()=>{this.onMouseEnter({$control:this.template.$config,$panel:this.template.$configPanel})}),e.proxy(this.template.$style,"mouseenter",()=>{this.onMouseEnter({$control:this.template.$style,$panel:this.template.$stylePanel})})}static get icons(){return{$on:S.default,$off:M.default,$config:p.default,$style:O.default,$mode_0_off:h.default,$mode_0_on:c.default,$mode_1_off:g.default,$mode_1_on:v.default,$mode_2_off:b.default,$mode_2_on:$.default,$check_on:l.default,$check_off:s.default}}get option(){return this.danmuku.option}get outside(){return this.template.$mount!==this.template.$controlsCenter}get TEMPLATE(){let{option:e}=this;return`

${S.default}${M.default}
${p.default}
\u{6309}\u{7C7B}\u{578B}\u{5C4F}\u{853D}
${h.default}${c.default}
\u{6EDA}\u{52A8}
${g.default}${v.default}
\u{9876}\u{90E8}
${b.default}${$.default}
\u{5E95}\u{90E8}
${l.default}${s.default} \u{9632}\u{6B62}\u{5F39}\u{5E55}\u{91CD}\u{53E0}
${l.default}${s.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}
${O.default}
\u{6A21}\u{5F0F}
${c.default}
\u{6EDA}\u{52A8}
${v.default}
\u{9876}\u{90E8}
${$.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)}append(e,t){let{append:i}=this.utils;[...e.children].includes(t)||i(e,t)}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.$config=this.query(".apd-config"),this.template.$configPanel=this.query(".apd-config-panel"),this.template.$configModes=this.query(".apd-config-mode .apd-modes"),this.template.$style=this.query(".apd-style"),this.template.$stylePanel=this.query(".apd-style-panel"),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:o,$syncVideo:n,$send:s,$input:r}=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(o,"click",()=>{this.danmuku.config({antiOverlap:!this.option.antiOverlap}),this.reset()}),this.art.proxy(n,"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(r,"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:()=>this.danmuku.fontSize,onChange:e=>{let{$fontSizeValue:t}=this.template;t.textContent=`${e}px`,e!==this.danmuku.fontSize&&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:o,steps:n=[]}){let{query:s,clamp:r,setStyle:l}=this.utils;l(i,"touch-action","none"),i.innerHTML=`
${n.map(()=>'
').join("")}
${n.map(e=>e.hide?"":`
${e.name}
`).join("")}
`;let d=s(".apd-slider-dot",i),p=s(".apd-slider-progress",i),u=!1;function h(i=a()){if(it)return;let s=(i-e)/(t-e);d.style.left=`${100*s}%`,0===n.length&&(p.style.width=d.style.left),o(i)}function m(a){let{top:o,height:n,left:s,width:l}=i.getBoundingClientRect();this.art.isRotate?h(Math.round(r(a.clientY-o,0,n)/n*(t-e)+e)):h(Math.round(r(a.clientX-s,0,l)/l*(t-e)+e))}return this.art.proxy(i,"click",e=>{m.call(this,e)}),this.art.proxy(i,"pointerdown",e=>{u=0===e.button}),this.art.on("document:pointermove",e=>{u&&m.call(this,e)}),this.art.on("document:pointerup",e=>{u&&(u=!1,m.call(this,e))}),{reset:h}}onFullscreen(e){let{$danmuku:t,$controlsCenter:i,$mount:a}=this.template;this.outside?e?this.append(i,t):this.append(a,t):this.append(i,t)}onMouseEnter({$control:e,$panel:t}){let{$player:i}=this.art.template,a=e.getBoundingClientRect(),o=t.getBoundingClientRect(),n=i.getBoundingClientRect(),s=o.width/2-a.width/2,r=n.left-(a.left-s),l=a.right+s-n.right;r>0?t.style.left=`${-s+r}px`:l>0?t.style.left=`${-s-l}px`:t.style.left=`${-s}px`}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){console.error("Error emitting danmuku:",e),this.emitting=!1}}lock(){let{addClass:e}=this.utils,{$send:t}=this.template;this.isLock=!0;let i=this.option.lockTime;t.textContent=i,e(t,"apd-lock");let a=()=>{this.timer=setTimeout(()=>{0===i?this.unlock():(t.textContent=i-=1,a())},1e3)};a()}unlock(){let{removeClass:e}=this.utils,{$send:t}=this.template;clearTimeout(this.timer),this.isLock=!1,t.textContent="发送",e(t,"apd-lock")}resize(){if(this.outside||this.art.fullscreen||this.art.fullscreenWeb)return;let{$player:e,$controlsCenter:t}=this.art.template,{$danmuku:i}=this.template;this.art.widthe.dataset.color===this.option.color.toUpperCase());o&&e(o,"apd-active"),t(i,this.option.visible?"关闭弹幕":"打开弹幕"),this.resize()}mount(e){let{errorHandle:t}=this.utils,i="string"==typeof e?document.querySelector(e):e;t(i,`Can not find the mount point: ${e}`),this.append(i,this.template.$danmuku),this.template.$mount=i,this.reset()}},"u">typeof document){let e="artplayer-plugin-danmuku",t=document.getElementById(e);t||((t=document.createElement("style")).id=e,"loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>{document.head.appendChild(t)}):(document.head||document.documentElement).appendChild(t)),t.textContent=q.default}},{"bundle-text:./img/check_off.svg":"im46l","bundle-text:./img/check_on.svg":"ltwtZ","bundle-text:./img/config.svg":"8OIDW","bundle-text:./img/mode_0_off.svg":"5p0NW","bundle-text:./img/mode_0_on.svg":"6UO2K","bundle-text:./img/mode_1_off.svg":"3NEwu","bundle-text:./img/mode_1_on.svg":"i22mQ","bundle-text:./img/mode_2_off.svg":"61WC2","bundle-text:./img/mode_2_on.svg":"aE6Hl","bundle-text:./img/off.svg":"jKHHh","bundle-text:./img/on.svg":"iryDR","bundle-text:./img/style.svg":"4Oibx","bundle-text:./style.less":"bjrFj","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],im46l:[function(e,t,i,a){t.exports=''},{}],ltwtZ:[function(e,t,i,a){t.exports=''},{}],"8OIDW":[function(e,t,i,a){t.exports=''},{}],"5p0NW":[function(e,t,i,a){t.exports=''},{}],"6UO2K":[function(e,t,i,a){t.exports=''},{}],"3NEwu":[function(e,t,i,a){t.exports=''},{}],i22mQ:[function(e,t,i,a){t.exports=''},{}],"61WC2":[function(e,t,i,a){t.exports=''},{}],aE6Hl:[function(e,t,i,a){t.exports=''},{}],jKHHh:[function(e,t,i,a){t.exports=''},{}],iryDR:[function(e,t,i,a){t.exports=''},{}],"4Oibx":[function(e,t,i,a){t.exports=''},{}],bjrFj:[function(e,t,i,a){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{opacity:0;pointer-events:none;width:320px;padding:10px;position:absolute;bottom:24px;left:0}.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{opacity:100;pointer-events:all}.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{opacity:0;pointer-events:none;width:200px;padding:10px;position:absolute;bottom:24px;left:0}.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{opacity:100;pointer-events:all}.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;width:60px;height:100%;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;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}.art-video-player>.artplayer-plugin-danmuku{padding:0 10px;position:absolute;bottom:-40px;left:0;right:0}.art-video-player:has(>.artplayer-plugin-danmuku){margin-bottom:40px}[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}'},{}]},["7ICE7"],"7ICE7","parcelRequire4dc0",{});let{default:e}=parcelRequire4dc0("7ICE7");export{e as default}; \ 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 772e5f194..f2d604814 100644 --- a/docs/uncompiled/artplayer-plugin-danmuku/index.js +++ b/docs/uncompiled/artplayer-plugin-danmuku/index.js @@ -94,7 +94,54 @@ function localRequire(x) { var res = localRequire.resolve(x); - return res === false ? {} : newRequire(res); + if (res === false) { + return {}; + } + // Synthesize a module to follow re-exports. + if (Array.isArray(res)) { + var m = {__esModule: true}; + res.forEach(function (v) { + var key = v[0]; + var id = v[1]; + var exp = v[2] || v[0]; + var x = newRequire(id); + if (key === '*') { + Object.keys(x).forEach(function (key) { + if ( + key === 'default' || + key === '__esModule' || + Object.prototype.hasOwnProperty.call(m, key) + ) { + return; + } + + Object.defineProperty(m, key, { + enumerable: true, + get: function () { + return x[key]; + }, + }); + }); + } else if (exp === '*') { + Object.defineProperty(m, key, { + enumerable: true, + value: x, + }); + } else { + Object.defineProperty(m, key, { + enumerable: true, + get: function () { + if (exp === 'default') { + return x.__esModule ? x.default : x; + } + return x[exp]; + }, + }); + } + }); + return m; + } + return newRequire(res); } function resolve(x) { @@ -833,7 +880,7 @@ class Danmuku { exports.default = Danmuku; },{"bundle-text:./worker":"2Spvp","./bilibili":"aIvhn","@parcel/transformer-js/src/esmodule-helpers.js":"8oCsH"}],"2Spvp":[function(require,module,exports,__globalThis) { -module.exports = "// modules are defined as an array\n// [ module function, map of requires ]\n//\n// map of requires is short require name -> numeric require\n//\n// anything defined in a previous bundle is accessed via the\n// orig method which is the require for previous bundles\n\n(function (\n modules,\n entry,\n mainEntry,\n parcelRequireName,\n externals,\n distDir,\n publicUrl,\n devServer\n) {\n /* eslint-disable no-undef */\n var globalObject =\n typeof globalThis !== 'undefined'\n ? globalThis\n : typeof self !== 'undefined'\n ? self\n : typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : {};\n /* eslint-enable no-undef */\n\n // Save the require from previous bundle to this closure if any\n var previousRequire =\n typeof globalObject[parcelRequireName] === 'function' &&\n globalObject[parcelRequireName];\n\n var importMap = previousRequire.i || {};\n var cache = previousRequire.cache || {};\n // Do not use `require` to prevent Webpack from trying to bundle this call\n var nodeRequire =\n typeof module !== 'undefined' &&\n typeof module.require === 'function' &&\n module.require.bind(module);\n\n function newRequire(name, jumped) {\n if (!cache[name]) {\n if (!modules[name]) {\n if (externals[name]) {\n return externals[name];\n }\n // if we cannot find the module within our internal map or\n // cache jump to the current global require ie. the last bundle\n // that was added to the page.\n var currentRequire =\n typeof globalObject[parcelRequireName] === 'function' &&\n globalObject[parcelRequireName];\n if (!jumped && currentRequire) {\n return currentRequire(name, true);\n }\n\n // If there are other bundles on this page the require from the\n // previous one is saved to 'previousRequire'. Repeat this as\n // many times as there are bundles until the module is found or\n // we exhaust the require chain.\n if (previousRequire) {\n return previousRequire(name, true);\n }\n\n // Try the node require function if it exists.\n if (nodeRequire && typeof name === 'string') {\n return nodeRequire(name);\n }\n\n var err = new Error(\"Cannot find module '\" + name + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n }\n\n localRequire.resolve = resolve;\n localRequire.cache = {};\n\n var module = (cache[name] = new newRequire.Module(name));\n\n modules[name][0].call(\n module.exports,\n localRequire,\n module,\n module.exports,\n globalObject\n );\n }\n\n return cache[name].exports;\n\n function localRequire(x) {\n var res = localRequire.resolve(x);\n return res === false ? {} : newRequire(res);\n }\n\n function resolve(x) {\n var id = modules[name][1][x];\n return id != null ? id : x;\n }\n }\n\n function Module(moduleName) {\n this.id = moduleName;\n this.bundle = newRequire;\n this.require = nodeRequire;\n this.exports = {};\n }\n\n newRequire.isParcelRequire = true;\n newRequire.Module = Module;\n newRequire.modules = modules;\n newRequire.cache = cache;\n newRequire.parent = previousRequire;\n newRequire.distDir = distDir;\n newRequire.publicUrl = publicUrl;\n newRequire.devServer = devServer;\n newRequire.i = importMap;\n newRequire.register = function (id, exports) {\n modules[id] = [\n function (require, module) {\n module.exports = exports;\n },\n {},\n ];\n };\n\n // Only insert newRequire.load when it is actually used.\n // The code in this file is linted against ES5, so dynamic import is not allowed.\n // INSERT_LOAD_HERE\n\n Object.defineProperty(newRequire, 'root', {\n get: function () {\n return globalObject[parcelRequireName];\n },\n });\n\n globalObject[parcelRequireName] = newRequire;\n\n for (var i = 0; i < entry.length; i++) {\n newRequire(entry[i]);\n }\n\n if (mainEntry) {\n // Expose entry point to Node, AMD or browser globals\n // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js\n var mainExports = newRequire(mainEntry);\n\n // CommonJS\n if (typeof exports === 'object' && typeof module !== 'undefined') {\n module.exports = mainExports;\n\n // RequireJS\n } else if (typeof define === 'function' && define.amd) {\n define(function () {\n return mainExports;\n });\n }\n }\n})({\"02up6\":[function(require,module,exports,__globalThis) {\nfunction getDanmuTop({ target, visibles, clientWidth, clientHeight, marginBottom, marginTop, antiOverlap }) {\n // 弹幕最大高度\n const maxTop = clientHeight - marginBottom;\n // 过滤同模式的弹幕,即每种模式各不影响\n const danmus = visibles.filter((item)=>item.mode === target.mode && item.top <= maxTop).sort((prev, next)=>prev.top - next.top);\n // 如果没有同模式的弹幕,直接返回\n if (danmus.length === 0) {\n if (target.mode === 2) return maxTop - target.height;\n else return marginTop;\n }\n // 上下各加一个虚拟弹幕,方便计算\n danmus.unshift({\n type: 'top',\n top: 0,\n left: 0,\n right: 0,\n height: marginTop,\n width: clientWidth,\n speed: 0,\n distance: clientWidth\n });\n danmus.push({\n type: 'bottom',\n top: maxTop,\n left: 0,\n right: 0,\n height: marginBottom,\n width: clientWidth,\n speed: 0,\n distance: clientWidth\n });\n // 查找是否有多余的缝隙足以容纳当前弹幕\n if (target.mode === 2) // 倒序查找\n for(let index = danmus.length - 2; index >= 0; index -= 1){\n const item = danmus[index];\n const prev = danmus[index + 1];\n const itemBottom = item.top + item.height;\n const diff = prev.top - itemBottom;\n if (diff >= target.height) return prev.top - target.height;\n }\n else // 顺序查找\n for(let index = 1; index < danmus.length; index += 1){\n const item = danmus[index];\n const prev = danmus[index - 1];\n const prevBottom = prev.top + prev.height;\n const diff = item.top - prevBottom;\n if (diff >= target.height) return prevBottom;\n }\n const topMap = [];\n for(let index = 1; index < danmus.length - 1; index += 1){\n const item = danmus[index];\n if (topMap.length) {\n const last = topMap[topMap.length - 1];\n if (last[0].top === item.top) last.push(item);\n else topMap.push([\n item\n ]);\n } else topMap.push([\n item\n ]);\n }\n if (antiOverlap) switch(target.mode){\n case 0:\n {\n const result = topMap.find((list)=>{\n return list.every((danmu)=>{\n if (clientWidth < danmu.distance) return false;\n if (target.speed < danmu.speed) return true;\n const overlapTime = danmu.right / (target.speed - danmu.speed);\n if (overlapTime > danmu.time) return true;\n return false;\n });\n });\n return result && result[0] ? result[0].top : undefined;\n }\n // 静止弹幕没有重叠问题\n case 1:\n case 2:\n return undefined;\n default:\n break;\n }\n else {\n switch(target.mode){\n case 0:\n topMap.sort((prev, next)=>{\n const nextMinRight = Math.min(...next.map((item)=>item.right));\n const prevMinRight = Math.min(...prev.map((item)=>item.right));\n return nextMinRight * next.length - prevMinRight * prev.length;\n });\n break;\n case 1:\n case 2:\n topMap.sort((prev, next)=>{\n const nextMaxWidth = Math.max(...next.map((item)=>item.width));\n const prevMaxWidth = Math.max(...prev.map((item)=>item.width));\n return prevMaxWidth * prev.length - nextMaxWidth * next.length;\n });\n break;\n default:\n break;\n }\n return topMap[0][0].top;\n }\n}\nonmessage = (event)=>{\n const { data } = event;\n if (!data.id || !data.type) return;\n const fns = {\n getDanmuTop\n };\n const fn = fns[data.type];\n const result = fn(data);\n globalThis.postMessage({\n result,\n id: data.id\n });\n};\n\n},{}]},[\"02up6\"], \"02up6\", \"parcelRequire4dc0\", {})\n\n"; +module.exports = "// modules are defined as an array\n// [ module function, map of requires ]\n//\n// map of requires is short require name -> numeric require\n//\n// anything defined in a previous bundle is accessed via the\n// orig method which is the require for previous bundles\n\n(function (\n modules,\n entry,\n mainEntry,\n parcelRequireName,\n externals,\n distDir,\n publicUrl,\n devServer\n) {\n /* eslint-disable no-undef */\n var globalObject =\n typeof globalThis !== 'undefined'\n ? globalThis\n : typeof self !== 'undefined'\n ? self\n : typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : {};\n /* eslint-enable no-undef */\n\n // Save the require from previous bundle to this closure if any\n var previousRequire =\n typeof globalObject[parcelRequireName] === 'function' &&\n globalObject[parcelRequireName];\n\n var importMap = previousRequire.i || {};\n var cache = previousRequire.cache || {};\n // Do not use `require` to prevent Webpack from trying to bundle this call\n var nodeRequire =\n typeof module !== 'undefined' &&\n typeof module.require === 'function' &&\n module.require.bind(module);\n\n function newRequire(name, jumped) {\n if (!cache[name]) {\n if (!modules[name]) {\n if (externals[name]) {\n return externals[name];\n }\n // if we cannot find the module within our internal map or\n // cache jump to the current global require ie. the last bundle\n // that was added to the page.\n var currentRequire =\n typeof globalObject[parcelRequireName] === 'function' &&\n globalObject[parcelRequireName];\n if (!jumped && currentRequire) {\n return currentRequire(name, true);\n }\n\n // If there are other bundles on this page the require from the\n // previous one is saved to 'previousRequire'. Repeat this as\n // many times as there are bundles until the module is found or\n // we exhaust the require chain.\n if (previousRequire) {\n return previousRequire(name, true);\n }\n\n // Try the node require function if it exists.\n if (nodeRequire && typeof name === 'string') {\n return nodeRequire(name);\n }\n\n var err = new Error(\"Cannot find module '\" + name + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n }\n\n localRequire.resolve = resolve;\n localRequire.cache = {};\n\n var module = (cache[name] = new newRequire.Module(name));\n\n modules[name][0].call(\n module.exports,\n localRequire,\n module,\n module.exports,\n globalObject\n );\n }\n\n return cache[name].exports;\n\n function localRequire(x) {\n var res = localRequire.resolve(x);\n if (res === false) {\n return {};\n }\n // Synthesize a module to follow re-exports.\n if (Array.isArray(res)) {\n var m = {__esModule: true};\n res.forEach(function (v) {\n var key = v[0];\n var id = v[1];\n var exp = v[2] || v[0];\n var x = newRequire(id);\n if (key === '*') {\n Object.keys(x).forEach(function (key) {\n if (\n key === 'default' ||\n key === '__esModule' ||\n Object.prototype.hasOwnProperty.call(m, key)\n ) {\n return;\n }\n\n Object.defineProperty(m, key, {\n enumerable: true,\n get: function () {\n return x[key];\n },\n });\n });\n } else if (exp === '*') {\n Object.defineProperty(m, key, {\n enumerable: true,\n value: x,\n });\n } else {\n Object.defineProperty(m, key, {\n enumerable: true,\n get: function () {\n if (exp === 'default') {\n return x.__esModule ? x.default : x;\n }\n return x[exp];\n },\n });\n }\n });\n return m;\n }\n return newRequire(res);\n }\n\n function resolve(x) {\n var id = modules[name][1][x];\n return id != null ? id : x;\n }\n }\n\n function Module(moduleName) {\n this.id = moduleName;\n this.bundle = newRequire;\n this.require = nodeRequire;\n this.exports = {};\n }\n\n newRequire.isParcelRequire = true;\n newRequire.Module = Module;\n newRequire.modules = modules;\n newRequire.cache = cache;\n newRequire.parent = previousRequire;\n newRequire.distDir = distDir;\n newRequire.publicUrl = publicUrl;\n newRequire.devServer = devServer;\n newRequire.i = importMap;\n newRequire.register = function (id, exports) {\n modules[id] = [\n function (require, module) {\n module.exports = exports;\n },\n {},\n ];\n };\n\n // Only insert newRequire.load when it is actually used.\n // The code in this file is linted against ES5, so dynamic import is not allowed.\n // INSERT_LOAD_HERE\n\n Object.defineProperty(newRequire, 'root', {\n get: function () {\n return globalObject[parcelRequireName];\n },\n });\n\n globalObject[parcelRequireName] = newRequire;\n\n for (var i = 0; i < entry.length; i++) {\n newRequire(entry[i]);\n }\n\n if (mainEntry) {\n // Expose entry point to Node, AMD or browser globals\n // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js\n var mainExports = newRequire(mainEntry);\n\n // CommonJS\n if (typeof exports === 'object' && typeof module !== 'undefined') {\n module.exports = mainExports;\n\n // RequireJS\n } else if (typeof define === 'function' && define.amd) {\n define(function () {\n return mainExports;\n });\n }\n }\n})({\"02up6\":[function(require,module,exports,__globalThis) {\nfunction getDanmuTop({ target, visibles, clientWidth, clientHeight, marginBottom, marginTop, antiOverlap }) {\n // 弹幕最大高度\n const maxTop = clientHeight - marginBottom;\n // 过滤同模式的弹幕,即每种模式各不影响\n const danmus = visibles.filter((item)=>item.mode === target.mode && item.top <= maxTop).sort((prev, next)=>prev.top - next.top);\n // 如果没有同模式的弹幕,直接返回\n if (danmus.length === 0) {\n if (target.mode === 2) return maxTop - target.height;\n else return marginTop;\n }\n // 上下各加一个虚拟弹幕,方便计算\n danmus.unshift({\n type: 'top',\n top: 0,\n left: 0,\n right: 0,\n height: marginTop,\n width: clientWidth,\n speed: 0,\n distance: clientWidth\n });\n danmus.push({\n type: 'bottom',\n top: maxTop,\n left: 0,\n right: 0,\n height: marginBottom,\n width: clientWidth,\n speed: 0,\n distance: clientWidth\n });\n // 查找是否有多余的缝隙足以容纳当前弹幕\n if (target.mode === 2) // 倒序查找\n for(let index = danmus.length - 2; index >= 0; index -= 1){\n const item = danmus[index];\n const prev = danmus[index + 1];\n const itemBottom = item.top + item.height;\n const diff = prev.top - itemBottom;\n if (diff >= target.height) return prev.top - target.height;\n }\n else // 顺序查找\n for(let index = 1; index < danmus.length; index += 1){\n const item = danmus[index];\n const prev = danmus[index - 1];\n const prevBottom = prev.top + prev.height;\n const diff = item.top - prevBottom;\n if (diff >= target.height) return prevBottom;\n }\n const topMap = [];\n for(let index = 1; index < danmus.length - 1; index += 1){\n const item = danmus[index];\n if (topMap.length) {\n const last = topMap[topMap.length - 1];\n if (last[0].top === item.top) last.push(item);\n else topMap.push([\n item\n ]);\n } else topMap.push([\n item\n ]);\n }\n if (antiOverlap) switch(target.mode){\n case 0:\n {\n const result = topMap.find((list)=>{\n return list.every((danmu)=>{\n if (clientWidth < danmu.distance) return false;\n if (target.speed < danmu.speed) return true;\n const overlapTime = danmu.right / (target.speed - danmu.speed);\n if (overlapTime > danmu.time) return true;\n return false;\n });\n });\n return result && result[0] ? result[0].top : undefined;\n }\n // 静止弹幕没有重叠问题\n case 1:\n case 2:\n return undefined;\n default:\n break;\n }\n else {\n switch(target.mode){\n case 0:\n topMap.sort((prev, next)=>{\n const nextMinRight = Math.min(...next.map((item)=>item.right));\n const prevMinRight = Math.min(...prev.map((item)=>item.right));\n return nextMinRight * next.length - prevMinRight * prev.length;\n });\n break;\n case 1:\n case 2:\n topMap.sort((prev, next)=>{\n const nextMaxWidth = Math.max(...next.map((item)=>item.width));\n const prevMaxWidth = Math.max(...prev.map((item)=>item.width));\n return prevMaxWidth * prev.length - nextMaxWidth * next.length;\n });\n break;\n default:\n break;\n }\n return topMap[0][0].top;\n }\n}\nonmessage = (event)=>{\n const { data } = event;\n if (!data.id || !data.type) return;\n const fns = {\n getDanmuTop\n };\n const fn = fns[data.type];\n const result = fn(data);\n globalThis.postMessage({\n result,\n id: data.id\n });\n};\n\n},{}]},[\"02up6\"], \"02up6\", \"parcelRequire4dc0\", {})\n\n"; },{}],"aIvhn":[function(require,module,exports,__globalThis) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); diff --git a/docs/uncompiled/artplayer-plugin-danmuku/index.js.map b/docs/uncompiled/artplayer-plugin-danmuku/index.js.map index 99532ee78..2c135f34f 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","node_modules/@parcel/runtime-js/lib/bundles/runtime-17e4dd909398e569.js","packages/artplayer-plugin-danmuku/src/bilibili.js","node_modules/@parcel/transformer-js/src/esmodule-helpers.js","packages/artplayer-plugin-danmuku/src/heatmap.js","packages/artplayer-plugin-danmuku/src/setting.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-e06b06703f22c8eb.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-ec1a2b323654893d.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-ab14b9be0ece93ac.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-76c315480ca27c87.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-b1458ff964353dd6.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-99ebb9e9ce705f53.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-415105bf9d0dad80.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-87721bd507e67269.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-df0d0cb27ecb2329.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-b2c30279f9ecca46.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-04939e555ef8b080.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-28aea7d78a23879e.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-df41fcd818e2c172.js"],"sourcesContent":["import Danmuku from './danmuku'\nimport heatmap from './heatmap'\nimport Setting from './setting'\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 workerText from 'bundle-text:./worker'\nimport { bilibiliDanmuParseFromUrl } from './bilibili'\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.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 = { wait: [], ready: [], emit: [], stop: [] }\n\n // 初始化配置\n this.config(option, true)\n\n // 创建 Web Worker, 用于计算弹幕的 top 值\n const workerText2 = workerText.replace('export{e as default};', '')\n const blob = new Blob([workerText2], { type: 'application/javascript' })\n this.worker = new Worker(URL.createObjectURL(blob))\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 width: 512, // 当播放器宽度小于此值时,弹幕发射器置于播放器底部\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 width: 'number',\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 = Number.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 = Number.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 Math.round(clamp(fontSize, 12, clientHeight))\n }\n\n if (typeof fontSize === 'string' && fontSize.endsWith('%')) {\n const ratio = Number.parseFloat(fontSize) / 100\n return Math.round(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.dataset.id = ''\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 // 计算弹幕速度\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(danmuku) {\n const { errorHandle } = this.utils\n\n let danmus = []\n const target = danmuku || this.option.danmuku\n\n try {\n if (typeof target === 'function') {\n danmus = await target() // 异步函数获取\n }\n else if (target instanceof Promise) {\n danmus = await target // 从 Promise 对象获取\n }\n else if (typeof target === 'string') {\n danmus = await bilibiliDanmuParseFromUrl(target) // 从B站xml链接解析\n }\n else if (Array.isArray(target)) {\n danmus = target // 直接传入数组\n }\n\n errorHandle(Array.isArray(danmus), 'Danmuku need return an array as result')\n\n // 假如没有传入弹幕参数,则清空弹幕,否则追加弹幕\n if (danmuku === undefined) {\n this.reset() // 重置弹幕\n this.queue = [] // 清空弹幕队列\n this.states = { wait: [], ready: [], emit: [], stop: [] } // 清空弹幕状态池\n this.$refs = [] // 清空弹幕DOM节点池\n this.$danmuku.textContent = '' // 清空弹幕层\n }\n\n // 逐个验证原始弹幕并转换到弹幕队列\n for (let index = 0; index < danmus.length; index++) {\n const danmu = danmus[index]\n await this.emit(danmu)\n }\n\n this.art.emit('artplayerPluginDanmuku:loaded', this.queue)\n }\n catch (error) {\n this.art.emit('artplayerPluginDanmuku:error', error)\n throw error\n }\n\n return this\n }\n\n // 把原始弹幕转换到弹幕队列\n async emit(danmu) {\n const { clamp } = this.utils\n\n this.validator(danmu, {\n id: '?string', // 弹幕唯一标识\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())\n return this\n\n // 设置弹幕时间,如果没有则默认为当前时间加 0.5 秒\n if (danmu.time) {\n danmu.time = clamp(danmu.time, 0, Infinity)\n }\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))\n return this\n\n // 自定义弹幕过滤函数\n if (!this.option.filter(danmu))\n return this\n\n // 添加自定义属性\n const item = {\n ...danmu,\n $state: 'wait', // 弹幕初始状态\n $index: 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, isInit = false) {\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 // 没有变化则直接返回\n if (!changed && !isInit)\n return this\n\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 }\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 // 复杂运算交给 Web Worker 处理\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 // 判断是否是当前的消息\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\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.textContent = 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 { result: top } = await this.postMessage({\n type: 'getDanmuTop',\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,\n 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 danmu.$ref.dataset.id = danmu.id || '' // 用于悬停的唯一标识\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 }\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","module.exports = \"07cc0a7cc35c8e4c\";","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')\n return []\n const reg = /]*?p=\"(?

[^\"]+)\"[^>]*>(?.*?)<\\/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 }\n else {\n return null\n }\n })\n .filter(Boolean)\n}\n\nfunction onmessage({ data }) {\n const { xml, id } = data\n if (!id || !xml)\n return\n const danmus = bilibiliDanmuParseFromXml(xml)\n globalThis.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 // eslint-disable-next-line no-async-promise-executor\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)\n return\n resolve(danmus)\n worker.terminate()\n }\n worker.postMessage({ xml, id: Date.now() })\n }\n catch (error) {\n console.error('Error parsing Bilibili Danmu:', 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","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\nfunction line(pointA, pointB) {\n const lengthX = pointB[0] - pointA[0]\n const lengthY = pointB[1] - pointA[1]\n return {\n length: Math.sqrt(lengthX ** 2 + 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)\n 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 }\n else {\n const gap = art.duration / svg.w\n for (let x = 0; x <= svg.w; x += options.sampling) {\n const y = danmuku.queue.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)\n 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","import $check_off from 'bundle-text:./img/check_off.svg'\nimport $check_on from 'bundle-text:./img/check_on.svg'\nimport $config from 'bundle-text:./img/config.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 $off from 'bundle-text:./img/off.svg'\nimport $on from 'bundle-text:./img/on.svg'\nimport $style from 'bundle-text:./img/style.svg'\nimport style from 'bundle-text:./style.less'\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 $config: null,\n $configPanel: null,\n $configModes: null,\n $style: null,\n $stylePanel: 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('resize', () => this.resize())\n art.on('fullscreen', state => this.onFullscreen(state))\n art.on('fullscreenWeb', state => this.onFullscreen(state))\n\n art.proxy(this.template.$config, 'mouseenter', () => {\n this.onMouseEnter({\n $control: this.template.$config,\n $panel: this.template.$configPanel,\n })\n })\n\n art.proxy(this.template.$style, 'mouseenter', () => {\n this.onMouseEnter({\n $control: this.template.$style,\n $panel: this.template.$stylePanel,\n })\n })\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 append(el, target) {\n const { append } = this.utils\n const children = [...el.children]\n if (children.includes(target))\n return\n append(el, target)\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.$config = this.query('.apd-config')\n this.template.$configPanel = this.query('.apd-config-panel')\n this.template.$configModes = this.query('.apd-config-mode .apd-modes')\n this.template.$style = this.query('.apd-style')\n this.template.$stylePanel = this.query('.apd-style-panel')\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)\n 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 }\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)\n return\n const mode = Number($mode.dataset.mode)\n this.danmuku.config({\n 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)\n 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)\n 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 this.danmuku.fontSize\n },\n onChange: (index) => {\n const { $fontSizeValue } = this.template\n $fontSizeValue.textContent = `${index}px`\n if (index === this.danmuku.fontSize)\n return\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)\n 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, setStyle } = this.utils\n\n setStyle(container, 'touch-action', 'none')\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)\n 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 { top, height, left, width } = container.getBoundingClientRect()\n if (this.art.isRotate) {\n const value = clamp(event.clientY - top, 0, height)\n const index = Math.round((value / height) * (max - min) + min)\n reset(index)\n }\n else {\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\n this.art.proxy(container, 'click', (event) => {\n updateLeft.call(this, event)\n })\n\n this.art.proxy(container, 'pointerdown', (event) => {\n isDroging = event.button === 0\n })\n\n this.art.on('document:pointermove', (event) => {\n if (isDroging) {\n updateLeft.call(this, event)\n }\n })\n\n this.art.on('document:pointerup', (event) => {\n if (isDroging) {\n isDroging = false\n updateLeft.call(this, event)\n }\n })\n\n return { reset }\n }\n\n onFullscreen(state) {\n const { $danmuku, $controlsCenter, $mount } = this.template\n if (this.outside) {\n if (state) {\n this.append($controlsCenter, $danmuku)\n }\n else {\n this.append($mount, $danmuku)\n }\n }\n else {\n this.append($controlsCenter, $danmuku)\n }\n }\n\n onMouseEnter({ $control, $panel }) {\n const { $player } = this.art.template\n const controlRect = $control.getBoundingClientRect()\n const panelRect = $panel.getBoundingClientRect()\n const playerRect = $player.getBoundingClientRect()\n\n const half = panelRect.width / 2 - controlRect.width / 2\n const left = playerRect.left - (controlRect.left - half)\n const right = controlRect.right + half - playerRect.right\n\n if (left > 0) {\n $panel.style.left = `${-half + left}px`\n }\n else if (right > 0) {\n $panel.style.left = `${-half - right}px`\n }\n else {\n $panel.style.left = `${-half}px`\n }\n }\n\n async emit() {\n const { $input } = this.template\n\n const text = $input.value.trim()\n if (!text.length)\n return\n if (this.isLock)\n return\n if (this.emitting)\n return\n\n const danmu = {\n 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)\n return\n\n danmu.border = true\n delete danmu.time\n this.danmuku.emit(danmu)\n $input.value = ''\n\n this.lock()\n }\n catch (error) {\n console.error('Error emitting danmuku:', 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.textContent = time\n addClass($send, 'apd-lock')\n\n const loop = () => {\n this.timer = setTimeout(() => {\n if (time === 0) {\n this.unlock()\n }\n else {\n time -= 1\n $send.textContent = 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.textContent = '发送'\n removeClass($send, 'apd-lock')\n }\n\n resize() {\n if (this.outside)\n return\n if (this.art.fullscreen)\n return\n if (this.art.fullscreenWeb)\n return\n const { $player, $controlsCenter } = this.art.template\n const { $danmuku } = this.template\n if (this.art.width < this.option.width) {\n this.append($player, $danmuku)\n }\n else {\n this.append($controlsCenter, $danmuku)\n }\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 this.resize()\n }\n\n mount(target) {\n const { errorHandle } = this.utils\n const $el = typeof target === 'string' ? document.querySelector(target) : target\n errorHandle($el, `Can not find the mount point: ${target}`)\n this.append($el, 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 let $style = document.getElementById(id)\n if (!$style) {\n $style = document.createElement('style')\n $style.id = id\n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', () => {\n document.head.appendChild($style)\n })\n }\n else {\n (document.head || document.documentElement).appendChild($style)\n }\n }\n $style.textContent = style\n}\n","module.exports = \"c28963a4f139517c\";","module.exports = \"469338a744265a8b\";","module.exports = \"90842e11c6ecb43a\";","module.exports = \"e82600b1fd4599fb\";","module.exports = \"c3722bee49d765b2\";","module.exports = \"8cf82700f8fc43c1\";","module.exports = \"6cb45dc0e743e136\";","module.exports = \"4701a5f85dec4373\";","module.exports = \"223c9b9278a2222a\";","module.exports = \"ff1da11f96e97480\";","module.exports = \"c150a54789fb9dce\";","module.exports = \"cb2b742af8ffaef9\";","module.exports = \"606fae5003b81d5f\";"],"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","node_modules/@parcel/runtime-js/lib/bundles/runtime-17e4dd909398e569.js","packages/artplayer-plugin-danmuku/src/bilibili.js","node_modules/@parcel/transformer-js/src/esmodule-helpers.js","packages/artplayer-plugin-danmuku/src/heatmap.js","packages/artplayer-plugin-danmuku/src/setting.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-e06b06703f22c8eb.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-ec1a2b323654893d.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-ab14b9be0ece93ac.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-76c315480ca27c87.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-b1458ff964353dd6.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-99ebb9e9ce705f53.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-415105bf9d0dad80.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-87721bd507e67269.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-df0d0cb27ecb2329.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-b2c30279f9ecca46.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-04939e555ef8b080.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-28aea7d78a23879e.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-df41fcd818e2c172.js"],"sourcesContent":["import Danmuku from './danmuku'\nimport heatmap from './heatmap'\nimport Setting from './setting'\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 workerText from 'bundle-text:./worker'\nimport { bilibiliDanmuParseFromUrl } from './bilibili'\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.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 = { wait: [], ready: [], emit: [], stop: [] }\n\n // 初始化配置\n this.config(option, true)\n\n // 创建 Web Worker, 用于计算弹幕的 top 值\n const workerText2 = workerText.replace('export{e as default};', '')\n const blob = new Blob([workerText2], { type: 'application/javascript' })\n this.worker = new Worker(URL.createObjectURL(blob))\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 width: 512, // 当播放器宽度小于此值时,弹幕发射器置于播放器底部\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 width: 'number',\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 = Number.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 = Number.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 Math.round(clamp(fontSize, 12, clientHeight))\n }\n\n if (typeof fontSize === 'string' && fontSize.endsWith('%')) {\n const ratio = Number.parseFloat(fontSize) / 100\n return Math.round(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.dataset.id = ''\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 // 计算弹幕速度\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(danmuku) {\n const { errorHandle } = this.utils\n\n let danmus = []\n const target = danmuku || this.option.danmuku\n\n try {\n if (typeof target === 'function') {\n danmus = await target() // 异步函数获取\n }\n else if (target instanceof Promise) {\n danmus = await target // 从 Promise 对象获取\n }\n else if (typeof target === 'string') {\n danmus = await bilibiliDanmuParseFromUrl(target) // 从B站xml链接解析\n }\n else if (Array.isArray(target)) {\n danmus = target // 直接传入数组\n }\n\n errorHandle(Array.isArray(danmus), 'Danmuku need return an array as result')\n\n // 假如没有传入弹幕参数,则清空弹幕,否则追加弹幕\n if (danmuku === undefined) {\n this.reset() // 重置弹幕\n this.queue = [] // 清空弹幕队列\n this.states = { wait: [], ready: [], emit: [], stop: [] } // 清空弹幕状态池\n this.$refs = [] // 清空弹幕DOM节点池\n this.$danmuku.textContent = '' // 清空弹幕层\n }\n\n // 逐个验证原始弹幕并转换到弹幕队列\n for (let index = 0; index < danmus.length; index++) {\n const danmu = danmus[index]\n await this.emit(danmu)\n }\n\n this.art.emit('artplayerPluginDanmuku:loaded', this.queue)\n }\n catch (error) {\n this.art.emit('artplayerPluginDanmuku:error', error)\n throw error\n }\n\n return this\n }\n\n // 把原始弹幕转换到弹幕队列\n async emit(danmu) {\n const { clamp } = this.utils\n\n this.validator(danmu, {\n id: '?string', // 弹幕唯一标识\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())\n return this\n\n // 设置弹幕时间,如果没有则默认为当前时间加 0.5 秒\n if (danmu.time) {\n danmu.time = clamp(danmu.time, 0, Infinity)\n }\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))\n return this\n\n // 自定义弹幕过滤函数\n if (!this.option.filter(danmu))\n return this\n\n // 添加自定义属性\n const item = {\n ...danmu,\n $state: 'wait', // 弹幕初始状态\n $index: 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, isInit = false) {\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 // 没有变化则直接返回\n if (!changed && !isInit)\n return this\n\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 }\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 // 复杂运算交给 Web Worker 处理\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 // 判断是否是当前的消息\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\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.textContent = 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 { result: top } = await this.postMessage({\n type: 'getDanmuTop',\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,\n 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 danmu.$ref.dataset.id = danmu.id || '' // 用于悬停的唯一标识\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 }\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","module.exports = \"07cc0a7cc35c8e4c\";","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')\n return []\n const reg = /]*?p=\"(?

[^\"]+)\"[^>]*>(?.*?)<\\/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 }\n else {\n return null\n }\n })\n .filter(Boolean)\n}\n\nfunction onmessage({ data }) {\n const { xml, id } = data\n if (!id || !xml)\n return\n const danmus = bilibiliDanmuParseFromXml(xml)\n globalThis.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 // eslint-disable-next-line no-async-promise-executor\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)\n return\n resolve(danmus)\n worker.terminate()\n }\n worker.postMessage({ xml, id: Date.now() })\n }\n catch (error) {\n console.error('Error parsing Bilibili Danmu:', 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","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\nfunction line(pointA, pointB) {\n const lengthX = pointB[0] - pointA[0]\n const lengthY = pointB[1] - pointA[1]\n return {\n length: Math.sqrt(lengthX ** 2 + 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)\n 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 }\n else {\n const gap = art.duration / svg.w\n for (let x = 0; x <= svg.w; x += options.sampling) {\n const y = danmuku.queue.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)\n 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","import $check_off from 'bundle-text:./img/check_off.svg'\nimport $check_on from 'bundle-text:./img/check_on.svg'\nimport $config from 'bundle-text:./img/config.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 $off from 'bundle-text:./img/off.svg'\nimport $on from 'bundle-text:./img/on.svg'\nimport $style from 'bundle-text:./img/style.svg'\nimport style from 'bundle-text:./style.less'\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 $config: null,\n $configPanel: null,\n $configModes: null,\n $style: null,\n $stylePanel: 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('resize', () => this.resize())\n art.on('fullscreen', state => this.onFullscreen(state))\n art.on('fullscreenWeb', state => this.onFullscreen(state))\n\n art.proxy(this.template.$config, 'mouseenter', () => {\n this.onMouseEnter({\n $control: this.template.$config,\n $panel: this.template.$configPanel,\n })\n })\n\n art.proxy(this.template.$style, 'mouseenter', () => {\n this.onMouseEnter({\n $control: this.template.$style,\n $panel: this.template.$stylePanel,\n })\n })\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 append(el, target) {\n const { append } = this.utils\n const children = [...el.children]\n if (children.includes(target))\n return\n append(el, target)\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.$config = this.query('.apd-config')\n this.template.$configPanel = this.query('.apd-config-panel')\n this.template.$configModes = this.query('.apd-config-mode .apd-modes')\n this.template.$style = this.query('.apd-style')\n this.template.$stylePanel = this.query('.apd-style-panel')\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)\n 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 }\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)\n return\n const mode = Number($mode.dataset.mode)\n this.danmuku.config({\n 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)\n 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)\n 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 this.danmuku.fontSize\n },\n onChange: (index) => {\n const { $fontSizeValue } = this.template\n $fontSizeValue.textContent = `${index}px`\n if (index === this.danmuku.fontSize)\n return\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)\n 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, setStyle } = this.utils\n\n setStyle(container, 'touch-action', 'none')\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)\n 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 { top, height, left, width } = container.getBoundingClientRect()\n if (this.art.isRotate) {\n const value = clamp(event.clientY - top, 0, height)\n const index = Math.round((value / height) * (max - min) + min)\n reset(index)\n }\n else {\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\n this.art.proxy(container, 'click', (event) => {\n updateLeft.call(this, event)\n })\n\n this.art.proxy(container, 'pointerdown', (event) => {\n isDroging = event.button === 0\n })\n\n this.art.on('document:pointermove', (event) => {\n if (isDroging) {\n updateLeft.call(this, event)\n }\n })\n\n this.art.on('document:pointerup', (event) => {\n if (isDroging) {\n isDroging = false\n updateLeft.call(this, event)\n }\n })\n\n return { reset }\n }\n\n onFullscreen(state) {\n const { $danmuku, $controlsCenter, $mount } = this.template\n if (this.outside) {\n if (state) {\n this.append($controlsCenter, $danmuku)\n }\n else {\n this.append($mount, $danmuku)\n }\n }\n else {\n this.append($controlsCenter, $danmuku)\n }\n }\n\n onMouseEnter({ $control, $panel }) {\n const { $player } = this.art.template\n const controlRect = $control.getBoundingClientRect()\n const panelRect = $panel.getBoundingClientRect()\n const playerRect = $player.getBoundingClientRect()\n\n const half = panelRect.width / 2 - controlRect.width / 2\n const left = playerRect.left - (controlRect.left - half)\n const right = controlRect.right + half - playerRect.right\n\n if (left > 0) {\n $panel.style.left = `${-half + left}px`\n }\n else if (right > 0) {\n $panel.style.left = `${-half - right}px`\n }\n else {\n $panel.style.left = `${-half}px`\n }\n }\n\n async emit() {\n const { $input } = this.template\n\n const text = $input.value.trim()\n if (!text.length)\n return\n if (this.isLock)\n return\n if (this.emitting)\n return\n\n const danmu = {\n 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)\n return\n\n danmu.border = true\n delete danmu.time\n this.danmuku.emit(danmu)\n $input.value = ''\n\n this.lock()\n }\n catch (error) {\n console.error('Error emitting danmuku:', 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.textContent = time\n addClass($send, 'apd-lock')\n\n const loop = () => {\n this.timer = setTimeout(() => {\n if (time === 0) {\n this.unlock()\n }\n else {\n time -= 1\n $send.textContent = 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.textContent = '发送'\n removeClass($send, 'apd-lock')\n }\n\n resize() {\n if (this.outside)\n return\n if (this.art.fullscreen)\n return\n if (this.art.fullscreenWeb)\n return\n const { $player, $controlsCenter } = this.art.template\n const { $danmuku } = this.template\n if (this.art.width < this.option.width) {\n this.append($player, $danmuku)\n }\n else {\n this.append($controlsCenter, $danmuku)\n }\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 this.resize()\n }\n\n mount(target) {\n const { errorHandle } = this.utils\n const $el = typeof target === 'string' ? document.querySelector(target) : target\n errorHandle($el, `Can not find the mount point: ${target}`)\n this.append($el, 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 let $style = document.getElementById(id)\n if (!$style) {\n $style = document.createElement('style')\n $style.id = id\n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', () => {\n document.head.appendChild($style)\n })\n }\n else {\n (document.head || document.documentElement).appendChild($style)\n }\n }\n $style.textContent = style\n}\n","module.exports = \"c28963a4f139517c\";","module.exports = \"469338a744265a8b\";","module.exports = \"90842e11c6ecb43a\";","module.exports = \"e82600b1fd4599fb\";","module.exports = \"c3722bee49d765b2\";","module.exports = \"8cf82700f8fc43c1\";","module.exports = \"6cb45dc0e743e136\";","module.exports = \"4701a5f85dec4373\";","module.exports = \"223c9b9278a2222a\";","module.exports = \"ff1da11f96e97480\";","module.exports = \"c150a54789fb9dce\";","module.exports = \"cb2b742af8ffaef9\";","module.exports = \"606fae5003b81d5f\";"],"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 d6ccaeb3d..39768dd51 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-2026 Harvey Zhao * Released under the MIT License. */ -!function(t,e,i,a,n){var o="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},s="function"==typeof o[a]&&o[a],r=s.i||{},l=s.cache||{},d="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function p(e,i){if(!l[e]){if(!t[e]){if(n[e])return n[e];var r="function"==typeof o[a]&&o[a];if(!i&&r)return r(e,!0);if(s)return s(e,!0);if(d&&"string"==typeof e)return d(e);var u=Error("Cannot find module '"+e+"'");throw u.code="MODULE_NOT_FOUND",u}m.resolve=function(i){var a=t[e][1][i];return null!=a?a:i},m.cache={};var h=l[e]=new p.Module(e);t[e][0].call(h.exports,m,h,h.exports,o)}return l[e].exports;function m(t){var e=m.resolve(t);if(!1===e)return{};if(Array.isArray(e)){var i={__esModule:!0};return e.forEach(function(t){var e=t[0],a=t[1],n=t[2]||t[0],o=p(a);"*"===e?Object.keys(o).forEach(function(t){"default"===t||"__esModule"===t||Object.prototype.hasOwnProperty.call(i,t)||Object.defineProperty(i,t,{enumerable:!0,get:function(){return o[t]}})}):"*"===n?Object.defineProperty(i,e,{enumerable:!0,value:o}):Object.defineProperty(i,e,{enumerable:!0,get:function(){return"default"===n?o.__esModule?o.default:o:o[n]}})}),i}return p(e)}}p.isParcelRequire=!0,p.Module=function(t){this.id=t,this.bundle=p,this.require=d,this.exports={}},p.modules=t,p.cache=l,p.parent=s,p.distDir=void 0,p.publicUrl=void 0,p.devServer=void 0,p.i=r,p.register=function(e,i){t[e]=[function(t,e){e.exports=i},{}]},Object.defineProperty(p,"root",{get:function(){return o[a]}}),o[a]=p;for(var u=0;utypeof module?module.exports=h:"function"==typeof define&&define.amd&&define(function(){return h})}}({"666Ok":[function(t,e,i,a){var n=t("@parcel/transformer-js/src/esmodule-helpers.js");n.defineInteropFlag(i),n.export(i,"default",()=>u);var o=t("./danmuku"),s=n.interopDefault(o),r=t("./heatmap"),l=n.interopDefault(r),d=t("./setting"),p=n.interopDefault(d);function u(t){return e=>{let i=new(0,s.default)(e,t),a=new(0,p.default)(e,i);return i.option.heatmap&&(0,l.default)(e,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}}}}u.icons=p.default.icons,"u">typeof window&&(window.artplayerPluginDanmuku=u)},{"./danmuku":"g81Wu","./heatmap":"hjtgU","./setting":"ho690","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],g81Wu:[function(t,e,i,a){var n=t("@parcel/transformer-js/src/esmodule-helpers.js");n.defineInteropFlag(i);var o=t("bundle-text:./worker"),s=n.interopDefault(o),r=t("./bilibili");class l{constructor(t,e){const{constructor:i,template:a}=t;this.utils=i.utils,this.validator=i.validator,this.$danmuku=a.$danmuku,this.$player=a.$player,this.art=t,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(e,!0);const n=new Blob([s.default.replace("export{e as default};","")],{type:"application/javascript"});this.worker=new Worker(URL.createObjectURL(n)),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),t.on("video:play",this.start),t.on("video:playing",this.start),t.on("video:pause",this.stop),t.on("video:waiting",this.stop),t.on("destroy",this.destroy),t.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,width:512,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",width:"number",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:t}=this.utils,e=this.option.margin[0],{clientHeight:i}=this.$player;return"number"==typeof e?t(e,0,i):"string"==typeof e&&e.endsWith("%")?t(i*(Number.parseFloat(e)/100),0,i):l.option.margin[0]}get marginBottom(){let{clamp:t}=this.utils,e=this.option.margin[1],{clientHeight:i}=this.$player;return"number"==typeof e?t(e,0,i):"string"==typeof e&&e.endsWith("%")?t(i*(Number.parseFloat(e)/100),0,i):l.option.margin[1]}get fontSize(){let{clamp:t}=this.utils,{clientHeight:e}=this.$player,i=this.option.fontSize;return"number"==typeof i?Math.round(t(i,12,e)):"string"==typeof i&&i.endsWith("%")?Math.round(t(e*(Number.parseFloat(i)/100),12,e)):l.option.fontSize}get $ref(){let t=this.$refs.pop()||document.createElement("div");return t.style.cssText=l.cssText,t.dataset.mode="",t.dataset.id="",t.className="",t}get readys(){let{currentTime:t}=this.art,e=[];return this.filter("ready",t=>e.push(t)),this.filter("wait",i=>{t+.1>=i.time&&i.time>=t-.1&&e.push(i)}),e}get visibles(){let t=[],{clientWidth:e}=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,r=a.$ref.clientWidth,l=o+r,d=l/a.$restTime,p={};p.top=n,p.left=o,p.height=s,p.width=r,p.right=e-l,p.speed=d,p.distance=l,p.time=a.$restTime,p.mode=a.mode,t.push(p)}),t}get speed(){return this.option.synchronousPlayback&&this.art.playbackRate?this.option.speed/Number(this.art.playbackRate):this.option.speed}async load(t){let{errorHandle:e}=this.utils,i=[],a=t||this.option.danmuku;try{"function"==typeof a?i=await a():a instanceof Promise?i=await a:"string"==typeof a?i=await (0,r.bilibiliDanmuParseFromUrl)(a):Array.isArray(a)&&(i=a),e(Array.isArray(i),"Danmuku need return an array as result"),void 0===t&&(this.reset(),this.queue=[],this.states={wait:[],ready:[],emit:[],stop:[]},this.$refs=[],this.$danmuku.textContent="");for(let t=0;tJSON.stringify(this.option[e])!==JSON.stringify(t[e]))||e)&&(this.option=Object.assign({},l.option,this.option,t),this.validator(this.option,l.scheme),this.option.mode=i(this.option.mode,0,2),this.option.speed=i(this.option.speed,1,10),this.option.opacity=i(this.option.opacity,0,1),this.option.lockTime=i(this.option.lockTime,1,60),this.option.maxLength=i(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}getLeft(t){let e=t.getBoundingClientRect();return this.isRotate?e.top:e.left}postMessage(t={}){return new Promise(e=>{t.id=Date.now(),this.worker.postMessage(t),this.worker.onmessage=i=>{let{data:a}=i;a.id===t.id&&e(a)}})}filter(t,e){let i=this.states[t]||[];for(let t=0;te!==t),t.$state=e,t.$ref&&(t.$ref.dataset.state=e),this.states[e].push(t)}makeWait(t){this.setState(t,"wait"),t.$ref&&(t.$ref.style.cssText=l.cssText,t.$ref.style.visibility="hidden",t.$ref.style.marginLeft="0px",t.$ref.style.transform="translateX(0px)",t.$ref.style.transition="transform 0s linear 0s",this.$refs.push(t.$ref),t.$ref=null)}update(){let{setStyles:t}=this.utils;return this.timer=window.requestAnimationFrame(async()=>{if(this.art.playing&&!this.isHide){this.filter("emit",t=>{let e=(Date.now()-t.$lastStartTime)/1e3;t.$restTime-=e,t.$lastStartTime=Date.now(),t.$restTime<=0&&this.makeWait(t)});let e=this.readys;for(let i=0;i{0===e.mode&&(e.$ref.style.left=`${t}px`)}),this.filter("emit",e=>{if(e.$lastStartTime=Date.now(),0===e.mode){let i=t+e.$ref.clientWidth;e.$ref.style.left=`${t}px`,e.$ref.style.transform=`translateX(${-i}px)`,e.$ref.style.transition=`transform ${e.$restTime}s linear 0s`}})}continue(){let{clientWidth:t}=this.$player;return this.filter("stop",e=>{if(this.setState(e,"emit"),e.$lastStartTime=Date.now(),0===e.mode){let i=t+e.$ref.clientWidth;e.$ref.style.transform=`translateX(${-i}px)`,e.$ref.style.transition=`transform ${e.$restTime}s linear 0s`}}),this}suspend(){let{clientWidth:t}=this.$player;return this.filter("emit",e=>{if(this.setState(e,"stop"),0===e.mode){let i=t-(this.getLeft(e.$ref)-this.getLeft(this.$player));e.$ref.style.transform=`translateX(${-i}px)`,e.$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(t=>this.makeWait(t)),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},{"bundle-text:./worker":"f8uCH","./bilibili":"jICn4","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],f8uCH:[function(t,e,i,a){e.exports='!function(e,t,r,o,i){var n="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},u="function"==typeof n[o]&&n[o],l=u.i||{},f=u.cache||{},p="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function s(t,r){if(!f[t]){if(!e[t]){if(i[t])return i[t];var l="function"==typeof n[o]&&n[o];if(!r&&l)return l(t,!0);if(u)return u(t,!0);if(p&&"string"==typeof t)return p(t);var d=Error("Cannot find module \'"+t+"\'");throw d.code="MODULE_NOT_FOUND",d}a.resolve=function(r){var o=e[t][1][r];return null!=o?o:r},a.cache={};var h=f[t]=new s.Module(t);e[t][0].call(h.exports,a,h,h.exports,n)}return f[t].exports;function a(e){var t=a.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var r={__esModule:!0};return t.forEach(function(e){var t=e[0],o=e[1],i=e[2]||e[0],n=s(o);"*"===t?Object.keys(n).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(r,e)||Object.defineProperty(r,e,{enumerable:!0,get:function(){return n[e]}})}):"*"===i?Object.defineProperty(r,t,{enumerable:!0,value:n}):Object.defineProperty(r,t,{enumerable:!0,get:function(){return"default"===i?n.__esModule?n.default:n:n[i]}})}),r}return s(t)}}s.isParcelRequire=!0,s.Module=function(e){this.id=e,this.bundle=s,this.require=p,this.exports={}},s.modules=e,s.cache=f,s.parent=u,s.distDir=void 0,s.publicUrl=void 0,s.devServer=void 0,s.i=l,s.register=function(t,r){e[t]=[function(e,t){t.exports=r},{}]},Object.defineProperty(s,"root",{get:function(){return n[o]}}),n[o]=s;for(var d=0;dtypeof module?module.exports=h:"function"==typeof define&&define.amd&&define(function(){return h})}}({fpBtQ:[function(e,t,r,o){function i({target:e,visibles:t,clientWidth:r,clientHeight:o,marginBottom:n,marginTop:u,antiOverlap:l}){let f=o-n,p=t.filter(t=>t.mode===e.mode&&t.top<=f).sort((e,t)=>e.top-t.top);if(0===p.length)if(2===e.mode)return f-e.height;else return u;if(p.unshift({type:"top",top:0,left:0,right:0,height:u,width:r,speed:0,distance:r}),p.push({type:"bottom",top:f,left:0,right:0,height:n,width:r,speed:0,distance:r}),2===e.mode)for(let t=p.length-2;t>=0;t-=1){let r=p[t],o=p[t+1],i=r.top+r.height;if(o.top-i>=e.height)return o.top-e.height}else for(let t=1;t=e.height)return i}let s=[];for(let e=1;et.every(t=>!(rt.time))));return t&&t[0]?t[0].top:void 0}case 1:case 2:return}else{switch(e.mode){case 0:s.sort((e,t)=>{let r=Math.min(...t.map(e=>e.right)),o=Math.min(...e.map(e=>e.right));return r*t.length-o*e.length});break;case 1:case 2:s.sort((e,t)=>{let r=Math.max(...t.map(e=>e.width));return Math.max(...e.map(e=>e.width))*e.length-r*t.length})}return s[0][0].top}}onmessage=e=>{let{data:t}=e;t.id&&t.type&&globalThis.postMessage({result:(0,({getDanmuTop:i})[t.type])(t),id:t.id})}},{}]},["fpBtQ"],"fpBtQ","parcelRequire4dc0",{});'},{}],jICn4:[function(t,e,i,a){var n=t("@parcel/transformer-js/src/esmodule-helpers.js");function o(t){switch(t){case 1:case 2:case 3:default:return 0;case 4:return 2;case 5:return 1}}function s(t){return"string"!=typeof t?[]:Array.from(t.matchAll(/]*?p="(?

[^"]+)"[^>]*>(?.*?)<\/d>/gs)).map(t=>{let e=t.groups.p.split(",");return e.length>=8?{text:t.groups.text.trim().replaceAll(""",'"').replaceAll("'","'").replaceAll("<","<").replaceAll(">",">").replaceAll("&","&"),time:Number(e[0]),mode:o(Number(e[1])),fontSize:Number(e[2]),color:`#${Number(e[3]).toString(16)}`,timestamp:Number(e[4]),pool:Number(e[5]),userID:e[6],rowID:Number(e[7])}:null}).filter(Boolean)}function r({data:t}){let{xml:e,id:i}=t;i&&e&&globalThis.postMessage({danmus:s(e),id:i})}function l(t){return new Promise(async e=>{let i=await fetch(t),a=await i.text();try{let t,i=(t=new Blob([` ${o.toString()} ${s.toString()} onmessage = ${r.toString()} `],{type:"application/javascript"}),new Worker(URL.createObjectURL(t)));i.onmessage=t=>{let{danmus:a,id:n}=t.data;n&&a&&(e(a),i.terminate())},i.postMessage({xml:a,id:Date.now()})}catch(t){console.error("Error parsing Bilibili Danmu:",t),e(s(a))}})}n.defineInteropFlag(i),n.export(i,"bilibiliDanmuParseFromUrl",()=>l)},{"@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"6ykb1":[function(t,e,i,a){i.interopDefault=function(t){return t&&t.__esModule?t:{default:t}},i.defineInteropFlag=function(t){Object.defineProperty(t,"__esModule",{value:!0})},i.exportAll=function(t,e){return Object.keys(t).forEach(function(i){"default"===i||"__esModule"===i||Object.prototype.hasOwnProperty.call(e,i)||Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[i]}})}),e},i.export=function(t,e,i){Object.defineProperty(t,e,{enumerable:!0,get:i})}},{}],hjtgU:[function(t,e,i,a){var n=t("@parcel/transformer-js/src/esmodule-helpers.js");n.defineInteropFlag(i),n.export(i,"default",()=>s);let o={map:(t,e,i,a,n)=>(t-e)*(n-a)/(i-e)+a,range(t,e,i){let a=Math.round(t/i)*i;return Array.from({length:Math.floor((e-t)/i)},(t,e)=>e*i+a)}};function s(t,e,i){let{query:a}=t.constructor.utils;t.controls.add({name:"heatmap",position:"top",html:"",style:{position:"absolute",top:"-100px",left:"0px",right:"0px",height:"100px",width:"100%",pointerEvents:"none"},mounted(n){let s=null,r=null;function l(d=[]){if(s=null,r=null,n.innerHTML="",!t.duration||t.option.isLive)return;let p={w:n.offsetWidth,h:n.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=t.duration/p.w;for(let t=0;t<=p.w;t+=u.sampling){let a=e.queue.filter(({time:e})=>e>t*i&&e<=(t+u.sampling)*i).length;h.push([t,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(t=>t[1]),y=(Math.min(...g)+Math.max(...g))/2;for(let t=0;ty?1+u.scale:1-u.scale)+u.minHeight}let v=(t,e,i,a)=>{let n,s,r=e||t,l=i||t,d=(n=l[0]-r[0],{length:Math.sqrt(n**2+(s=l[1]-r[1])**2),angle:Math.atan2(s,n)}),p=o.map(Math.cos(d.angle)*u.flattening,0,1,1,0),h=d.angle*p+(a?Math.PI:0),m=d.length*u.smoothing;return[t[0]+Math.cos(h)*m,t[1]+Math.sin(h)*m]},x=h.map(t=>[o.map(t[0],u.xMin,u.xMax,0,p.w),o.map(t[1],u.yMin,u.yMax,p.h,0)]).reduce((t,e,i,a)=>{let n,o,s;return 0===i?`M ${a[a.length-1][0]},${p.h} L ${e[0]},${p.h} L ${e[0]},${e[1]}`:`${t} ${n=v(a[i-1],a[i-2],e),o=v(e,a[i-1],a[i+1],!0),s=i===a.length-1?" z":"",`C ${n[0]},${n[1]} ${o[0]},${o[1]} ${e[0]},${e[1]}${s}`}`},"");n.innerHTML=``,s=a("#heatmap-start",n),r=a("#heatmap-stop",n),s.setAttribute("offset",`${100*t.played}%`),r.setAttribute("offset",`${100*t.played}%`)}t.on("video:timeupdate",()=>{s&&r&&(s.setAttribute("offset",`${100*t.played}%`),r.setAttribute("offset",`${100*t.played}%`))}),t.on("setBar",(t,e)=>{s&&r&&"played"===t&&(s.setAttribute("offset",`${100*e}%`),r.setAttribute("offset",`${100*e}%`))}),t.on("ready",()=>l()),t.on("resize",()=>l()),t.on("artplayerPluginDanmuku:loaded",()=>l()),t.on("artplayerPluginDanmuku:points",t=>l(t))}})}},{"@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],ho690:[function(t,e,i,a){var n=t("@parcel/transformer-js/src/esmodule-helpers.js");n.defineInteropFlag(i);var o=t("bundle-text:./img/check_off.svg"),s=n.interopDefault(o),r=t("bundle-text:./img/check_on.svg"),l=n.interopDefault(r),d=t("bundle-text:./img/config.svg"),p=n.interopDefault(d),u=t("bundle-text:./img/mode_0_off.svg"),h=n.interopDefault(u),m=t("bundle-text:./img/mode_0_on.svg"),c=n.interopDefault(m),f=t("bundle-text:./img/mode_1_off.svg"),g=n.interopDefault(f),y=t("bundle-text:./img/mode_1_on.svg"),v=n.interopDefault(y),x=t("bundle-text:./img/mode_2_off.svg"),k=n.interopDefault(x),b=t("bundle-text:./img/mode_2_on.svg"),$=n.interopDefault(b),w=t("bundle-text:./img/off.svg"),M=n.interopDefault(w),D=t("bundle-text:./img/on.svg"),S=n.interopDefault(D),E=t("bundle-text:./img/style.svg"),A=n.interopDefault(E),O=t("bundle-text:./style.less"),j=n.interopDefault(O);if(i.default=class{constructor(t,e){this.art=t,this.danmuku=e,this.utils=t.constructor.utils;const{setStyle:i}=this.utils,{$controlsCenter:a}=t.template;i(a,"display","flex"),this.template={$controlsCenter:a,$mount:a,$danmuku:null,$toggle:null,$config:null,$configPanel:null,$configModes:null,$style:null,$stylePanel: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),t.on("resize",()=>this.resize()),t.on("fullscreen",t=>this.onFullscreen(t)),t.on("fullscreenWeb",t=>this.onFullscreen(t)),t.proxy(this.template.$config,"mouseenter",()=>{this.onMouseEnter({$control:this.template.$config,$panel:this.template.$configPanel})}),t.proxy(this.template.$style,"mouseenter",()=>{this.onMouseEnter({$control:this.template.$style,$panel:this.template.$stylePanel})})}static get icons(){return{$on:S.default,$off:M.default,$config:p.default,$style:A.default,$mode_0_off:h.default,$mode_0_on:c.default,$mode_1_off:g.default,$mode_1_on:v.default,$mode_2_off:k.default,$mode_2_on:$.default,$check_on:l.default,$check_off:s.default}}get option(){return this.danmuku.option}get outside(){return this.template.$mount!==this.template.$controlsCenter}get TEMPLATE(){let{option:t}=this;return`

${S.default}${M.default}
${p.default}
\u{6309}\u{7C7B}\u{578B}\u{5C4F}\u{853D}
${h.default}${c.default}
\u{6EDA}\u{52A8}
${g.default}${v.default}
\u{9876}\u{90E8}
${k.default}${$.default}
\u{5E95}\u{90E8}
${l.default}${s.default} \u{9632}\u{6B62}\u{5F39}\u{5E55}\u{91CD}\u{53E0}
${l.default}${s.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}
${A.default}
\u{6A21}\u{5F0F}
${c.default}
\u{6EDA}\u{52A8}
${v.default}
\u{9876}\u{90E8}
${$.default}
\u{5E95}\u{90E8}
\u{989C}\u{8272}
${this.COLOR.map(t=>`
`).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(t){let{query:e}=this.utils,{$danmuku:i}=this.template;return e(t,i)}append(t,e){let{append:i}=this.utils;[...t.children].includes(e)||i(t,e)}setData(t,e){let{$player:i}=this.art.template,{$mount:a}=this.template;i.dataset[t]=e,this.outside&&(a.dataset[t]=e)}createTemplate(){let{createElement:t,tooltip:e}=this.utils,i=t("div");i.className="artplayer-plugin-danmuku",i.innerHTML=this.TEMPLATE,this.template.$danmuku=i,this.template.$toggle=this.query(".apd-toggle"),this.template.$config=this.query(".apd-config"),this.template.$configPanel=this.query(".apd-config-panel"),this.template.$configModes=this.query(".apd-config-mode .apd-modes"),this.template.$style=this.query(".apd-style"),this.template.$stylePanel=this.query(".apd-style-panel"),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",()=>{e(a,"关闭弹幕")}),this.art.on("artplayerPluginDanmuku:hide",()=>{e(a,"打开弹幕")})}createEvents(){let{$toggle:t,$configModes:e,$styleModes:i,$colors:a,$antiOverlap:n,$syncVideo:o,$send:s,$input:r}=this.template;this.art.proxy(t,"click",()=>{this.danmuku.config({visible:!this.option.visible}),this.reset()}),this.art.proxy(e,"click",t=>{let e=t.target.closest(".apd-mode");if(!e)return;let i=Number(e.dataset.mode);this.option.modes.includes(i)?this.danmuku.config({modes:this.option.modes.filter(t=>t!==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",t=>{let e=t.target.closest(".apd-mode");if(!e)return;let i=Number(e.dataset.mode);this.danmuku.config({mode:i}),this.reset()}),this.art.proxy(a,"click",t=>{let e=t.target.closest(".apd-color");e&&(this.danmuku.config({color:e.dataset.color}),this.reset())}),this.art.proxy(s,"click",()=>this.emit()),this.art.proxy(r,"keypress",t=>{"Enter"===t.key&&(t.preventDefault(),this.emit())})}createSliders(){this.slider.opacity=this.createSlider({...this.OPACITY,container:this.template.$opacitySlider,findIndex:()=>Math.round(100*this.option.opacity),onChange:t=>{let{$opacityValue:e}=this.template;e.textContent=`${t}%`,this.danmuku.config({opacity:t/100})}}),this.slider.margin=this.createSlider({...this.MARGIN,container:this.template.$marginSlider,findIndex:()=>this.MARGIN.steps.findIndex(t=>t.value[0]===this.option.margin[0]&&t.value[1]===this.option.margin[1]),onChange:t=>{let e=this.MARGIN.steps[t];if(!e)return;let{$marginValue:i}=this.template;i.textContent=e.name,this.danmuku.config({margin:e.value})}}),this.slider.fontSize=this.createSlider({...this.FONT_SIZE,container:this.template.$fontSizeSlider,findIndex:()=>this.danmuku.fontSize,onChange:t=>{let{$fontSizeValue:e}=this.template;e.textContent=`${t}px`,t!==this.danmuku.fontSize&&this.danmuku.config({fontSize:t})}}),this.slider.speed=this.createSlider({...this.SPEED,container:this.template.$speedSlider,findIndex:()=>this.SPEED.steps.findIndex(t=>t.value===this.option.speed),onChange:t=>{let e=this.SPEED.steps[t];if(!e)return;let{$speedValue:i}=this.template;i.textContent=e.name,this.danmuku.config({speed:e.value})}})}createSlider({min:t,max:e,container:i,findIndex:a,onChange:n,steps:o=[]}){let{query:s,clamp:r,setStyle:l}=this.utils;l(i,"touch-action","none"),i.innerHTML=`
${o.map(()=>'
').join("")}
${o.map(t=>t.hide?"":`
${t.name}
`).join("")}
`;let d=s(".apd-slider-dot",i),p=s(".apd-slider-progress",i),u=!1;function h(i=a()){if(ie)return;let s=(i-t)/(e-t);d.style.left=`${100*s}%`,0===o.length&&(p.style.width=d.style.left),n(i)}function m(a){let{top:n,height:o,left:s,width:l}=i.getBoundingClientRect();this.art.isRotate?h(Math.round(r(a.clientY-n,0,o)/o*(e-t)+t)):h(Math.round(r(a.clientX-s,0,l)/l*(e-t)+t))}return this.art.proxy(i,"click",t=>{m.call(this,t)}),this.art.proxy(i,"pointerdown",t=>{u=0===t.button}),this.art.on("document:pointermove",t=>{u&&m.call(this,t)}),this.art.on("document:pointerup",t=>{u&&(u=!1,m.call(this,t))}),{reset:h}}onFullscreen(t){let{$danmuku:e,$controlsCenter:i,$mount:a}=this.template;this.outside?t?this.append(i,e):this.append(a,e):this.append(i,e)}onMouseEnter({$control:t,$panel:e}){let{$player:i}=this.art.template,a=t.getBoundingClientRect(),n=e.getBoundingClientRect(),o=i.getBoundingClientRect(),s=n.width/2-a.width/2,r=o.left-(a.left-s),l=a.right+s-o.right;r>0?e.style.left=`${-s+r}px`:l>0?e.style.left=`${-s-l}px`:e.style.left=`${-s}px`}async emit(){let{$input:t}=this.template,e=t.value.trim();if(!e.length||this.isLock||this.emitting)return;let i={text:e,mode:this.option.mode,color:this.option.color,time:this.art.currentTime};try{this.emitting=!0;let e=await this.option.beforeEmit(i);if(this.emitting=!1,!0!==e)return;i.border=!0,delete i.time,this.danmuku.emit(i),t.value="",this.lock()}catch(t){console.error("Error emitting danmuku:",t),this.emitting=!1}}lock(){let{addClass:t}=this.utils,{$send:e}=this.template;this.isLock=!0;let i=this.option.lockTime;e.textContent=i,t(e,"apd-lock");let a=()=>{this.timer=setTimeout(()=>{0===i?this.unlock():(e.textContent=i-=1,a())},1e3)};a()}unlock(){let{removeClass:t}=this.utils,{$send:e}=this.template;clearTimeout(this.timer),this.isLock=!1,e.textContent="发送",t(e,"apd-lock")}resize(){if(this.outside||this.art.fullscreen||this.art.fullscreenWeb)return;let{$player:t,$controlsCenter:e}=this.art.template,{$danmuku:i}=this.template;this.art.widtht.dataset.color===this.option.color.toUpperCase());n&&t(n,"apd-active"),e(i,this.option.visible?"关闭弹幕":"打开弹幕"),this.resize()}mount(t){let{errorHandle:e}=this.utils,i="string"==typeof t?document.querySelector(t):t;e(i,`Can not find the mount point: ${t}`),this.append(i,this.template.$danmuku),this.template.$mount=i,this.reset()}},"u">typeof document){let t="artplayer-plugin-danmuku",e=document.getElementById(t);e||((e=document.createElement("style")).id=t,"loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>{document.head.appendChild(e)}):(document.head||document.documentElement).appendChild(e)),e.textContent=j.default}},{"bundle-text:./img/check_off.svg":"2pPC1","bundle-text:./img/check_on.svg":"47UDb","bundle-text:./img/config.svg":"kCi8g","bundle-text:./img/mode_0_off.svg":"7HQlG","bundle-text:./img/mode_0_on.svg":"t7s2B","bundle-text:./img/mode_1_off.svg":"lkKl2","bundle-text:./img/mode_1_on.svg":"8f8zW","bundle-text:./img/mode_2_off.svg":"emrpJ","bundle-text:./img/mode_2_on.svg":"1fmjY","bundle-text:./img/off.svg":"8Ug2A","bundle-text:./img/on.svg":"1BQ1c","bundle-text:./img/style.svg":"b24KT","bundle-text:./style.less":"k8RGI","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"2pPC1":[function(t,e,i,a){e.exports=''},{}],"47UDb":[function(t,e,i,a){e.exports=''},{}],kCi8g:[function(t,e,i,a){e.exports=''},{}],"7HQlG":[function(t,e,i,a){e.exports=''},{}],t7s2B:[function(t,e,i,a){e.exports=''},{}],lkKl2:[function(t,e,i,a){e.exports=''},{}],"8f8zW":[function(t,e,i,a){e.exports=''},{}],emrpJ:[function(t,e,i,a){e.exports=''},{}],"1fmjY":[function(t,e,i,a){e.exports=''},{}],"8Ug2A":[function(t,e,i,a){e.exports=''},{}],"1BQ1c":[function(t,e,i,a){e.exports=''},{}],b24KT:[function(t,e,i,a){e.exports=''},{}],k8RGI:[function(t,e,i,a){e.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{opacity:0;pointer-events:none;width:320px;padding:10px;position:absolute;bottom:24px;left:0}.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{opacity:100;pointer-events:all}.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{opacity:0;pointer-events:none;width:200px;padding:10px;position:absolute;bottom:24px;left:0}.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{opacity:100;pointer-events:all}.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;width:60px;height:100%;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;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}.art-video-player>.artplayer-plugin-danmuku{padding:0 10px;position:absolute;bottom:-40px;left:0;right:0}.art-video-player:has(>.artplayer-plugin-danmuku){margin-bottom:40px}[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}'},{}]},["666Ok"],"666Ok","parcelRequire4dc0",{}); \ No newline at end of file +!function(t,e,i,a,n,o,s,r){var l="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},d="function"==typeof l[a]&&l[a],p=d.i||{},u=d.cache||{},h="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function m(e,i){if(!u[e]){if(!t[e]){if(n[e])return n[e];var o="function"==typeof l[a]&&l[a];if(!i&&o)return o(e,!0);if(d)return d(e,!0);if(h&&"string"==typeof e)return h(e);var s=Error("Cannot find module '"+e+"'");throw s.code="MODULE_NOT_FOUND",s}p.resolve=function(i){var a=t[e][1][i];return null!=a?a:i},p.cache={};var r=u[e]=new m.Module(e);t[e][0].call(r.exports,p,r,r.exports,l)}return u[e].exports;function p(t){var e=p.resolve(t);if(!1===e)return{};if(Array.isArray(e)){var i={__esModule:!0};return e.forEach(function(t){var e=t[0],a=t[1],n=t[2]||t[0],o=m(a);"*"===e?Object.keys(o).forEach(function(t){"default"===t||"__esModule"===t||Object.prototype.hasOwnProperty.call(i,t)||Object.defineProperty(i,t,{enumerable:!0,get:function(){return o[t]}})}):"*"===n?Object.defineProperty(i,e,{enumerable:!0,value:o}):Object.defineProperty(i,e,{enumerable:!0,get:function(){return"default"===n?o.__esModule?o.default:o:o[n]}})}),i}return m(e)}}m.isParcelRequire=!0,m.Module=function(t){this.id=t,this.bundle=m,this.require=h,this.exports={}},m.modules=t,m.cache=u,m.parent=d,m.distDir=void 0,m.publicUrl=void 0,m.devServer=void 0,m.i=p,m.register=function(e,i){t[e]=[function(t,e){e.exports=i},{}]},Object.defineProperty(m,"root",{get:function(){return l[a]}}),l[a]=m;for(var c=0;ctypeof module?module.exports=f:"function"==typeof define&&define.amd&&define(function(){return f})}}({"666Ok":[function(t,e,i,a){var n=t("@parcel/transformer-js/src/esmodule-helpers.js");n.defineInteropFlag(i),n.export(i,"default",()=>u);var o=t("./danmuku"),s=n.interopDefault(o),r=t("./heatmap"),l=n.interopDefault(r),d=t("./setting"),p=n.interopDefault(d);function u(t){return e=>{let i=new(0,s.default)(e,t),a=new(0,p.default)(e,i);return i.option.heatmap&&(0,l.default)(e,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}}}}u.icons=p.default.icons,"u">typeof window&&(window.artplayerPluginDanmuku=u)},{"./danmuku":"g81Wu","./heatmap":"hjtgU","./setting":"ho690","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],g81Wu:[function(t,e,i,a){var n=t("@parcel/transformer-js/src/esmodule-helpers.js");n.defineInteropFlag(i);var o=t("bundle-text:./worker"),s=n.interopDefault(o),r=t("./bilibili");class l{constructor(t,e){const{constructor:i,template:a}=t;this.utils=i.utils,this.validator=i.validator,this.$danmuku=a.$danmuku,this.$player=a.$player,this.art=t,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(e,!0);const n=new Blob([s.default.replace("export{e as default};","")],{type:"application/javascript"});this.worker=new Worker(URL.createObjectURL(n)),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),t.on("video:play",this.start),t.on("video:playing",this.start),t.on("video:pause",this.stop),t.on("video:waiting",this.stop),t.on("destroy",this.destroy),t.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,width:512,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",width:"number",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:t}=this.utils,e=this.option.margin[0],{clientHeight:i}=this.$player;return"number"==typeof e?t(e,0,i):"string"==typeof e&&e.endsWith("%")?t(i*(Number.parseFloat(e)/100),0,i):l.option.margin[0]}get marginBottom(){let{clamp:t}=this.utils,e=this.option.margin[1],{clientHeight:i}=this.$player;return"number"==typeof e?t(e,0,i):"string"==typeof e&&e.endsWith("%")?t(i*(Number.parseFloat(e)/100),0,i):l.option.margin[1]}get fontSize(){let{clamp:t}=this.utils,{clientHeight:e}=this.$player,i=this.option.fontSize;return"number"==typeof i?Math.round(t(i,12,e)):"string"==typeof i&&i.endsWith("%")?Math.round(t(e*(Number.parseFloat(i)/100),12,e)):l.option.fontSize}get $ref(){let t=this.$refs.pop()||document.createElement("div");return t.style.cssText=l.cssText,t.dataset.mode="",t.dataset.id="",t.className="",t}get readys(){let{currentTime:t}=this.art,e=[];return this.filter("ready",t=>e.push(t)),this.filter("wait",i=>{t+.1>=i.time&&i.time>=t-.1&&e.push(i)}),e}get visibles(){let t=[],{clientWidth:e}=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,r=a.$ref.clientWidth,l=o+r,d=l/a.$restTime,p={};p.top=n,p.left=o,p.height=s,p.width=r,p.right=e-l,p.speed=d,p.distance=l,p.time=a.$restTime,p.mode=a.mode,t.push(p)}),t}get speed(){return this.option.synchronousPlayback&&this.art.playbackRate?this.option.speed/Number(this.art.playbackRate):this.option.speed}async load(t){let{errorHandle:e}=this.utils,i=[],a=t||this.option.danmuku;try{"function"==typeof a?i=await a():a instanceof Promise?i=await a:"string"==typeof a?i=await (0,r.bilibiliDanmuParseFromUrl)(a):Array.isArray(a)&&(i=a),e(Array.isArray(i),"Danmuku need return an array as result"),void 0===t&&(this.reset(),this.queue=[],this.states={wait:[],ready:[],emit:[],stop:[]},this.$refs=[],this.$danmuku.textContent="");for(let t=0;tJSON.stringify(this.option[e])!==JSON.stringify(t[e]))||e)&&(this.option=Object.assign({},l.option,this.option,t),this.validator(this.option,l.scheme),this.option.mode=i(this.option.mode,0,2),this.option.speed=i(this.option.speed,1,10),this.option.opacity=i(this.option.opacity,0,1),this.option.lockTime=i(this.option.lockTime,1,60),this.option.maxLength=i(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}getLeft(t){let e=t.getBoundingClientRect();return this.isRotate?e.top:e.left}postMessage(t={}){return new Promise(e=>{t.id=Date.now(),this.worker.postMessage(t),this.worker.onmessage=i=>{let{data:a}=i;a.id===t.id&&e(a)}})}filter(t,e){let i=this.states[t]||[];for(let t=0;te!==t),t.$state=e,t.$ref&&(t.$ref.dataset.state=e),this.states[e].push(t)}makeWait(t){this.setState(t,"wait"),t.$ref&&(t.$ref.style.cssText=l.cssText,t.$ref.style.visibility="hidden",t.$ref.style.marginLeft="0px",t.$ref.style.transform="translateX(0px)",t.$ref.style.transition="transform 0s linear 0s",this.$refs.push(t.$ref),t.$ref=null)}update(){let{setStyles:t}=this.utils;return this.timer=window.requestAnimationFrame(async()=>{if(this.art.playing&&!this.isHide){this.filter("emit",t=>{let e=(Date.now()-t.$lastStartTime)/1e3;t.$restTime-=e,t.$lastStartTime=Date.now(),t.$restTime<=0&&this.makeWait(t)});let e=this.readys;for(let i=0;i{0===e.mode&&(e.$ref.style.left=`${t}px`)}),this.filter("emit",e=>{if(e.$lastStartTime=Date.now(),0===e.mode){let i=t+e.$ref.clientWidth;e.$ref.style.left=`${t}px`,e.$ref.style.transform=`translateX(${-i}px)`,e.$ref.style.transition=`transform ${e.$restTime}s linear 0s`}})}continue(){let{clientWidth:t}=this.$player;return this.filter("stop",e=>{if(this.setState(e,"emit"),e.$lastStartTime=Date.now(),0===e.mode){let i=t+e.$ref.clientWidth;e.$ref.style.transform=`translateX(${-i}px)`,e.$ref.style.transition=`transform ${e.$restTime}s linear 0s`}}),this}suspend(){let{clientWidth:t}=this.$player;return this.filter("emit",e=>{if(this.setState(e,"stop"),0===e.mode){let i=t-(this.getLeft(e.$ref)-this.getLeft(this.$player));e.$ref.style.transform=`translateX(${-i}px)`,e.$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(t=>this.makeWait(t)),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},{"bundle-text:./worker":"f8uCH","./bilibili":"jICn4","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],f8uCH:[function(t,e,i,a){e.exports='!function(e,t,r,o,i,n,u,l){var f="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},p="function"==typeof f[o]&&f[o],s=p.i||{},d=p.cache||{},h="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function a(t,r){if(!d[t]){if(!e[t]){if(i[t])return i[t];var n="function"==typeof f[o]&&f[o];if(!r&&n)return n(t,!0);if(p)return p(t,!0);if(h&&"string"==typeof t)return h(t);var u=Error("Cannot find module \'"+t+"\'");throw u.code="MODULE_NOT_FOUND",u}s.resolve=function(r){var o=e[t][1][r];return null!=o?o:r},s.cache={};var l=d[t]=new a.Module(t);e[t][0].call(l.exports,s,l,l.exports,f)}return d[t].exports;function s(e){var t=s.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var r={__esModule:!0};return t.forEach(function(e){var t=e[0],o=e[1],i=e[2]||e[0],n=a(o);"*"===t?Object.keys(n).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(r,e)||Object.defineProperty(r,e,{enumerable:!0,get:function(){return n[e]}})}):"*"===i?Object.defineProperty(r,t,{enumerable:!0,value:n}):Object.defineProperty(r,t,{enumerable:!0,get:function(){return"default"===i?n.__esModule?n.default:n:n[i]}})}),r}return a(t)}}a.isParcelRequire=!0,a.Module=function(e){this.id=e,this.bundle=a,this.require=h,this.exports={}},a.modules=e,a.cache=d,a.parent=p,a.distDir=void 0,a.publicUrl=void 0,a.devServer=void 0,a.i=s,a.register=function(t,r){e[t]=[function(e,t){t.exports=r},{}]},Object.defineProperty(a,"root",{get:function(){return f[o]}}),f[o]=a;for(var c=0;ctypeof module?module.exports=g:"function"==typeof define&&define.amd&&define(function(){return g})}}({fpBtQ:[function(e,t,r,o){function i({target:e,visibles:t,clientWidth:r,clientHeight:o,marginBottom:i,marginTop:n,antiOverlap:u}){let l=o-i,f=t.filter(t=>t.mode===e.mode&&t.top<=l).sort((e,t)=>e.top-t.top);if(0===f.length)if(2===e.mode)return l-e.height;else return n;if(f.unshift({type:"top",top:0,left:0,right:0,height:n,width:r,speed:0,distance:r}),f.push({type:"bottom",top:l,left:0,right:0,height:i,width:r,speed:0,distance:r}),2===e.mode)for(let t=f.length-2;t>=0;t-=1){let r=f[t],o=f[t+1],i=r.top+r.height;if(o.top-i>=e.height)return o.top-e.height}else for(let t=1;t=e.height)return i}let p=[];for(let e=1;et.every(t=>!(rt.time))));return t&&t[0]?t[0].top:void 0}case 1:case 2:return}else{switch(e.mode){case 0:p.sort((e,t)=>{let r=Math.min(...t.map(e=>e.right)),o=Math.min(...e.map(e=>e.right));return r*t.length-o*e.length});break;case 1:case 2:p.sort((e,t)=>{let r=Math.max(...t.map(e=>e.width));return Math.max(...e.map(e=>e.width))*e.length-r*t.length})}return p[0][0].top}}onmessage=e=>{let{data:t}=e;t.id&&t.type&&globalThis.postMessage({result:(0,({getDanmuTop:i})[t.type])(t),id:t.id})}},{}]},["fpBtQ"],"fpBtQ","parcelRequire4dc0",{});'},{}],jICn4:[function(t,e,i,a){var n=t("@parcel/transformer-js/src/esmodule-helpers.js");function o(t){switch(t){case 1:case 2:case 3:default:return 0;case 4:return 2;case 5:return 1}}function s(t){return"string"!=typeof t?[]:Array.from(t.matchAll(/]*?p="(?

[^"]+)"[^>]*>(?.*?)<\/d>/gs)).map(t=>{let e=t.groups.p.split(",");return e.length>=8?{text:t.groups.text.trim().replaceAll(""",'"').replaceAll("'","'").replaceAll("<","<").replaceAll(">",">").replaceAll("&","&"),time:Number(e[0]),mode:o(Number(e[1])),fontSize:Number(e[2]),color:`#${Number(e[3]).toString(16)}`,timestamp:Number(e[4]),pool:Number(e[5]),userID:e[6],rowID:Number(e[7])}:null}).filter(Boolean)}function r({data:t}){let{xml:e,id:i}=t;i&&e&&globalThis.postMessage({danmus:s(e),id:i})}function l(t){return new Promise(async e=>{let i=await fetch(t),a=await i.text();try{let t,i=(t=new Blob([` ${o.toString()} ${s.toString()} onmessage = ${r.toString()} `],{type:"application/javascript"}),new Worker(URL.createObjectURL(t)));i.onmessage=t=>{let{danmus:a,id:n}=t.data;n&&a&&(e(a),i.terminate())},i.postMessage({xml:a,id:Date.now()})}catch(t){console.error("Error parsing Bilibili Danmu:",t),e(s(a))}})}n.defineInteropFlag(i),n.export(i,"bilibiliDanmuParseFromUrl",()=>l)},{"@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"6ykb1":[function(t,e,i,a){i.interopDefault=function(t){return t&&t.__esModule?t:{default:t}},i.defineInteropFlag=function(t){Object.defineProperty(t,"__esModule",{value:!0})},i.exportAll=function(t,e){return Object.keys(t).forEach(function(i){"default"===i||"__esModule"===i||Object.prototype.hasOwnProperty.call(e,i)||Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[i]}})}),e},i.export=function(t,e,i){Object.defineProperty(t,e,{enumerable:!0,get:i})}},{}],hjtgU:[function(t,e,i,a){var n=t("@parcel/transformer-js/src/esmodule-helpers.js");n.defineInteropFlag(i),n.export(i,"default",()=>s);let o={map:(t,e,i,a,n)=>(t-e)*(n-a)/(i-e)+a,range(t,e,i){let a=Math.round(t/i)*i;return Array.from({length:Math.floor((e-t)/i)},(t,e)=>e*i+a)}};function s(t,e,i){let{query:a}=t.constructor.utils;t.controls.add({name:"heatmap",position:"top",html:"",style:{position:"absolute",top:"-100px",left:"0px",right:"0px",height:"100px",width:"100%",pointerEvents:"none"},mounted(n){let s=null,r=null;function l(d=[]){if(s=null,r=null,n.innerHTML="",!t.duration||t.option.isLive)return;let p={w:n.offsetWidth,h:n.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=t.duration/p.w;for(let t=0;t<=p.w;t+=u.sampling){let a=e.queue.filter(({time:e})=>e>t*i&&e<=(t+u.sampling)*i).length;h.push([t,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(t=>t[1]),y=(Math.min(...g)+Math.max(...g))/2;for(let t=0;ty?1+u.scale:1-u.scale)+u.minHeight}let v=(t,e,i,a)=>{let n,s,r=e||t,l=i||t,d=(n=l[0]-r[0],{length:Math.sqrt(n**2+(s=l[1]-r[1])**2),angle:Math.atan2(s,n)}),p=o.map(Math.cos(d.angle)*u.flattening,0,1,1,0),h=d.angle*p+(a?Math.PI:0),m=d.length*u.smoothing;return[t[0]+Math.cos(h)*m,t[1]+Math.sin(h)*m]},x=h.map(t=>[o.map(t[0],u.xMin,u.xMax,0,p.w),o.map(t[1],u.yMin,u.yMax,p.h,0)]).reduce((t,e,i,a)=>{let n,o,s;return 0===i?`M ${a[a.length-1][0]},${p.h} L ${e[0]},${p.h} L ${e[0]},${e[1]}`:`${t} ${n=v(a[i-1],a[i-2],e),o=v(e,a[i-1],a[i+1],!0),s=i===a.length-1?" z":"",`C ${n[0]},${n[1]} ${o[0]},${o[1]} ${e[0]},${e[1]}${s}`}`},"");n.innerHTML=``,s=a("#heatmap-start",n),r=a("#heatmap-stop",n),s.setAttribute("offset",`${100*t.played}%`),r.setAttribute("offset",`${100*t.played}%`)}t.on("video:timeupdate",()=>{s&&r&&(s.setAttribute("offset",`${100*t.played}%`),r.setAttribute("offset",`${100*t.played}%`))}),t.on("setBar",(t,e)=>{s&&r&&"played"===t&&(s.setAttribute("offset",`${100*e}%`),r.setAttribute("offset",`${100*e}%`))}),t.on("ready",()=>l()),t.on("resize",()=>l()),t.on("artplayerPluginDanmuku:loaded",()=>l()),t.on("artplayerPluginDanmuku:points",t=>l(t))}})}},{"@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],ho690:[function(t,e,i,a){var n=t("@parcel/transformer-js/src/esmodule-helpers.js");n.defineInteropFlag(i);var o=t("bundle-text:./img/check_off.svg"),s=n.interopDefault(o),r=t("bundle-text:./img/check_on.svg"),l=n.interopDefault(r),d=t("bundle-text:./img/config.svg"),p=n.interopDefault(d),u=t("bundle-text:./img/mode_0_off.svg"),h=n.interopDefault(u),m=t("bundle-text:./img/mode_0_on.svg"),c=n.interopDefault(m),f=t("bundle-text:./img/mode_1_off.svg"),g=n.interopDefault(f),y=t("bundle-text:./img/mode_1_on.svg"),v=n.interopDefault(y),x=t("bundle-text:./img/mode_2_off.svg"),k=n.interopDefault(x),b=t("bundle-text:./img/mode_2_on.svg"),$=n.interopDefault(b),w=t("bundle-text:./img/off.svg"),M=n.interopDefault(w),D=t("bundle-text:./img/on.svg"),S=n.interopDefault(D),E=t("bundle-text:./img/style.svg"),A=n.interopDefault(E),O=t("bundle-text:./style.less"),j=n.interopDefault(O);if(i.default=class{constructor(t,e){this.art=t,this.danmuku=e,this.utils=t.constructor.utils;const{setStyle:i}=this.utils,{$controlsCenter:a}=t.template;i(a,"display","flex"),this.template={$controlsCenter:a,$mount:a,$danmuku:null,$toggle:null,$config:null,$configPanel:null,$configModes:null,$style:null,$stylePanel: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),t.on("resize",()=>this.resize()),t.on("fullscreen",t=>this.onFullscreen(t)),t.on("fullscreenWeb",t=>this.onFullscreen(t)),t.proxy(this.template.$config,"mouseenter",()=>{this.onMouseEnter({$control:this.template.$config,$panel:this.template.$configPanel})}),t.proxy(this.template.$style,"mouseenter",()=>{this.onMouseEnter({$control:this.template.$style,$panel:this.template.$stylePanel})})}static get icons(){return{$on:S.default,$off:M.default,$config:p.default,$style:A.default,$mode_0_off:h.default,$mode_0_on:c.default,$mode_1_off:g.default,$mode_1_on:v.default,$mode_2_off:k.default,$mode_2_on:$.default,$check_on:l.default,$check_off:s.default}}get option(){return this.danmuku.option}get outside(){return this.template.$mount!==this.template.$controlsCenter}get TEMPLATE(){let{option:t}=this;return`

${S.default}${M.default}
${p.default}
\u{6309}\u{7C7B}\u{578B}\u{5C4F}\u{853D}
${h.default}${c.default}
\u{6EDA}\u{52A8}
${g.default}${v.default}
\u{9876}\u{90E8}
${k.default}${$.default}
\u{5E95}\u{90E8}
${l.default}${s.default} \u{9632}\u{6B62}\u{5F39}\u{5E55}\u{91CD}\u{53E0}
${l.default}${s.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}
${A.default}
\u{6A21}\u{5F0F}
${c.default}
\u{6EDA}\u{52A8}
${v.default}
\u{9876}\u{90E8}
${$.default}
\u{5E95}\u{90E8}
\u{989C}\u{8272}
${this.COLOR.map(t=>`
`).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(t){let{query:e}=this.utils,{$danmuku:i}=this.template;return e(t,i)}append(t,e){let{append:i}=this.utils;[...t.children].includes(e)||i(t,e)}setData(t,e){let{$player:i}=this.art.template,{$mount:a}=this.template;i.dataset[t]=e,this.outside&&(a.dataset[t]=e)}createTemplate(){let{createElement:t,tooltip:e}=this.utils,i=t("div");i.className="artplayer-plugin-danmuku",i.innerHTML=this.TEMPLATE,this.template.$danmuku=i,this.template.$toggle=this.query(".apd-toggle"),this.template.$config=this.query(".apd-config"),this.template.$configPanel=this.query(".apd-config-panel"),this.template.$configModes=this.query(".apd-config-mode .apd-modes"),this.template.$style=this.query(".apd-style"),this.template.$stylePanel=this.query(".apd-style-panel"),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",()=>{e(a,"关闭弹幕")}),this.art.on("artplayerPluginDanmuku:hide",()=>{e(a,"打开弹幕")})}createEvents(){let{$toggle:t,$configModes:e,$styleModes:i,$colors:a,$antiOverlap:n,$syncVideo:o,$send:s,$input:r}=this.template;this.art.proxy(t,"click",()=>{this.danmuku.config({visible:!this.option.visible}),this.reset()}),this.art.proxy(e,"click",t=>{let e=t.target.closest(".apd-mode");if(!e)return;let i=Number(e.dataset.mode);this.option.modes.includes(i)?this.danmuku.config({modes:this.option.modes.filter(t=>t!==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",t=>{let e=t.target.closest(".apd-mode");if(!e)return;let i=Number(e.dataset.mode);this.danmuku.config({mode:i}),this.reset()}),this.art.proxy(a,"click",t=>{let e=t.target.closest(".apd-color");e&&(this.danmuku.config({color:e.dataset.color}),this.reset())}),this.art.proxy(s,"click",()=>this.emit()),this.art.proxy(r,"keypress",t=>{"Enter"===t.key&&(t.preventDefault(),this.emit())})}createSliders(){this.slider.opacity=this.createSlider({...this.OPACITY,container:this.template.$opacitySlider,findIndex:()=>Math.round(100*this.option.opacity),onChange:t=>{let{$opacityValue:e}=this.template;e.textContent=`${t}%`,this.danmuku.config({opacity:t/100})}}),this.slider.margin=this.createSlider({...this.MARGIN,container:this.template.$marginSlider,findIndex:()=>this.MARGIN.steps.findIndex(t=>t.value[0]===this.option.margin[0]&&t.value[1]===this.option.margin[1]),onChange:t=>{let e=this.MARGIN.steps[t];if(!e)return;let{$marginValue:i}=this.template;i.textContent=e.name,this.danmuku.config({margin:e.value})}}),this.slider.fontSize=this.createSlider({...this.FONT_SIZE,container:this.template.$fontSizeSlider,findIndex:()=>this.danmuku.fontSize,onChange:t=>{let{$fontSizeValue:e}=this.template;e.textContent=`${t}px`,t!==this.danmuku.fontSize&&this.danmuku.config({fontSize:t})}}),this.slider.speed=this.createSlider({...this.SPEED,container:this.template.$speedSlider,findIndex:()=>this.SPEED.steps.findIndex(t=>t.value===this.option.speed),onChange:t=>{let e=this.SPEED.steps[t];if(!e)return;let{$speedValue:i}=this.template;i.textContent=e.name,this.danmuku.config({speed:e.value})}})}createSlider({min:t,max:e,container:i,findIndex:a,onChange:n,steps:o=[]}){let{query:s,clamp:r,setStyle:l}=this.utils;l(i,"touch-action","none"),i.innerHTML=`
${o.map(()=>'
').join("")}
${o.map(t=>t.hide?"":`
${t.name}
`).join("")}
`;let d=s(".apd-slider-dot",i),p=s(".apd-slider-progress",i),u=!1;function h(i=a()){if(ie)return;let s=(i-t)/(e-t);d.style.left=`${100*s}%`,0===o.length&&(p.style.width=d.style.left),n(i)}function m(a){let{top:n,height:o,left:s,width:l}=i.getBoundingClientRect();this.art.isRotate?h(Math.round(r(a.clientY-n,0,o)/o*(e-t)+t)):h(Math.round(r(a.clientX-s,0,l)/l*(e-t)+t))}return this.art.proxy(i,"click",t=>{m.call(this,t)}),this.art.proxy(i,"pointerdown",t=>{u=0===t.button}),this.art.on("document:pointermove",t=>{u&&m.call(this,t)}),this.art.on("document:pointerup",t=>{u&&(u=!1,m.call(this,t))}),{reset:h}}onFullscreen(t){let{$danmuku:e,$controlsCenter:i,$mount:a}=this.template;this.outside?t?this.append(i,e):this.append(a,e):this.append(i,e)}onMouseEnter({$control:t,$panel:e}){let{$player:i}=this.art.template,a=t.getBoundingClientRect(),n=e.getBoundingClientRect(),o=i.getBoundingClientRect(),s=n.width/2-a.width/2,r=o.left-(a.left-s),l=a.right+s-o.right;r>0?e.style.left=`${-s+r}px`:l>0?e.style.left=`${-s-l}px`:e.style.left=`${-s}px`}async emit(){let{$input:t}=this.template,e=t.value.trim();if(!e.length||this.isLock||this.emitting)return;let i={text:e,mode:this.option.mode,color:this.option.color,time:this.art.currentTime};try{this.emitting=!0;let e=await this.option.beforeEmit(i);if(this.emitting=!1,!0!==e)return;i.border=!0,delete i.time,this.danmuku.emit(i),t.value="",this.lock()}catch(t){console.error("Error emitting danmuku:",t),this.emitting=!1}}lock(){let{addClass:t}=this.utils,{$send:e}=this.template;this.isLock=!0;let i=this.option.lockTime;e.textContent=i,t(e,"apd-lock");let a=()=>{this.timer=setTimeout(()=>{0===i?this.unlock():(e.textContent=i-=1,a())},1e3)};a()}unlock(){let{removeClass:t}=this.utils,{$send:e}=this.template;clearTimeout(this.timer),this.isLock=!1,e.textContent="发送",t(e,"apd-lock")}resize(){if(this.outside||this.art.fullscreen||this.art.fullscreenWeb)return;let{$player:t,$controlsCenter:e}=this.art.template,{$danmuku:i}=this.template;this.art.widtht.dataset.color===this.option.color.toUpperCase());n&&t(n,"apd-active"),e(i,this.option.visible?"关闭弹幕":"打开弹幕"),this.resize()}mount(t){let{errorHandle:e}=this.utils,i="string"==typeof t?document.querySelector(t):t;e(i,`Can not find the mount point: ${t}`),this.append(i,this.template.$danmuku),this.template.$mount=i,this.reset()}},"u">typeof document){let t="artplayer-plugin-danmuku",e=document.getElementById(t);e||((e=document.createElement("style")).id=t,"loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>{document.head.appendChild(e)}):(document.head||document.documentElement).appendChild(e)),e.textContent=j.default}},{"bundle-text:./img/check_off.svg":"2pPC1","bundle-text:./img/check_on.svg":"47UDb","bundle-text:./img/config.svg":"kCi8g","bundle-text:./img/mode_0_off.svg":"7HQlG","bundle-text:./img/mode_0_on.svg":"t7s2B","bundle-text:./img/mode_1_off.svg":"lkKl2","bundle-text:./img/mode_1_on.svg":"8f8zW","bundle-text:./img/mode_2_off.svg":"emrpJ","bundle-text:./img/mode_2_on.svg":"1fmjY","bundle-text:./img/off.svg":"8Ug2A","bundle-text:./img/on.svg":"1BQ1c","bundle-text:./img/style.svg":"b24KT","bundle-text:./style.less":"k8RGI","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"2pPC1":[function(t,e,i,a){e.exports=''},{}],"47UDb":[function(t,e,i,a){e.exports=''},{}],kCi8g:[function(t,e,i,a){e.exports=''},{}],"7HQlG":[function(t,e,i,a){e.exports=''},{}],t7s2B:[function(t,e,i,a){e.exports=''},{}],lkKl2:[function(t,e,i,a){e.exports=''},{}],"8f8zW":[function(t,e,i,a){e.exports=''},{}],emrpJ:[function(t,e,i,a){e.exports=''},{}],"1fmjY":[function(t,e,i,a){e.exports=''},{}],"8Ug2A":[function(t,e,i,a){e.exports=''},{}],"1BQ1c":[function(t,e,i,a){e.exports=''},{}],b24KT:[function(t,e,i,a){e.exports=''},{}],k8RGI:[function(t,e,i,a){e.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{opacity:0;pointer-events:none;width:320px;padding:10px;position:absolute;bottom:24px;left:0}.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{opacity:100;pointer-events:all}.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{opacity:0;pointer-events:none;width:200px;padding:10px;position:absolute;bottom:24px;left:0}.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{opacity:100;pointer-events:all}.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;width:60px;height:100%;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;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}.art-video-player>.artplayer-plugin-danmuku{padding:0 10px;position:absolute;bottom:-40px;left:0;right:0}.art-video-player:has(>.artplayer-plugin-danmuku){margin-bottom:40px}[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}'},{}]},["666Ok"],"666Ok","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 b679aea7a..815cbdece 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-2026 Harvey Zhao * Released under the MIT License. */ -!function(e,t,n,a,i){var r="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},o="function"==typeof r[a]&&r[a],s=o.i||{},l=o.cache||{},u="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function d(t,n){if(!l[t]){if(!e[t]){if(i[t])return i[t];var s="function"==typeof r[a]&&r[a];if(!n&&s)return s(t,!0);if(o)return o(t,!0);if(u&&"string"==typeof t)return u(t);var c=Error("Cannot find module '"+t+"'");throw c.code="MODULE_NOT_FOUND",c}f.resolve=function(n){var a=e[t][1][n];return null!=a?a:n},f.cache={};var p=l[t]=new d.Module(t);e[t][0].call(p.exports,f,p,p.exports,r)}return l[t].exports;function f(e){var t=f.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var n={__esModule:!0};return t.forEach(function(e){var t=e[0],a=e[1],i=e[2]||e[0],r=d(a);"*"===t?Object.keys(r).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(n,e)||Object.defineProperty(n,e,{enumerable:!0,get:function(){return r[e]}})}):"*"===i?Object.defineProperty(n,t,{enumerable:!0,value:r}):Object.defineProperty(n,t,{enumerable:!0,get:function(){return"default"===i?r.__esModule?r.default:r:r[i]}})}),n}return d(t)}}d.isParcelRequire=!0,d.Module=function(e){this.id=e,this.bundle=d,this.require=u,this.exports={}},d.modules=e,d.cache=l,d.parent=o,d.distDir=void 0,d.publicUrl=void 0,d.devServer=void 0,d.i=s,d.register=function(t,n){e[t]=[function(e,t){t.exports=n},{}]},Object.defineProperty(d,"root",{get:function(){return r[a]}}),r[a]=d;for(var c=0;ctypeof module?module.exports=p:"function"==typeof define&&define.amd&&define(function(){return p})}}({l3CkF:[function(e,t,n,a){var i=e("@parcel/transformer-js/src/esmodule-helpers.js");i.defineInteropFlag(n),i.export(n,"default",function(){return c});var r=e("./danmuku"),o=i.interopDefault(r),s=e("./heatmap"),l=i.interopDefault(s),u=e("./setting"),d=i.interopDefault(u);function c(e){return function(t){var n=new(0,o.default)(t,e),a=new(0,d.default)(t,n);return n.option.heatmap&&(0,l.default)(t,n,n.option.heatmap),{name:"artplayerPluginDanmuku",emit:n.emit.bind(n),load:n.load.bind(n),config:n.config.bind(n),hide:n.hide.bind(n),show:n.show.bind(n),reset:n.reset.bind(n),mount:a.mount.bind(a),get option(){return n.option},get isHide(){return n.isHide},get isStop(){return n.isStop}}}}c.icons=d.default.icons,"u">typeof window&&(window.artplayerPluginDanmuku=c)},{"./danmuku":"u1ZRC","./heatmap":"hLPK6","./setting":"jpEpW","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],u1ZRC:[function(e,t,n,a){var i=e("@parcel/transformer-js/src/esmodule-helpers.js");i.defineInteropFlag(n),i.export(n,"default",function(){return h});var r=e("@swc/helpers/cjs/_async_to_generator.cjs"),o=e("@swc/helpers/cjs/_class_call_check.cjs"),s=e("@swc/helpers/cjs/_create_class.cjs"),l=e("@swc/helpers/cjs/_object_spread.cjs"),u=e("@swc/helpers/cjs/_object_spread_props.cjs"),d=e("@swc/helpers/cjs/_ts_generator.cjs"),c=e("bundle-text:./worker"),p=i.interopDefault(c),f=e("./bilibili"),h=function(){"use strict";function e(t,n){(0,o._)(this,e);var a=t.constructor,i=t.template;this.utils=a.utils,this.validator=a.validator,this.$danmuku=i.$danmuku,this.$player=i.$player,this.art=t,this.queue=[],this.$refs=[],this.isStop=!1,this.isHide=!1,this.timer=null,this.index=0,this.option=e.option,this.states={wait:[],ready:[],emit:[],stop:[]},this.config(n,!0);var r=new Blob([p.default.replace("export{e as default};","")],{type:"application/javascript"});this.worker=new Worker(URL.createObjectURL(r)),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),t.on("video:play",this.start),t.on("video:playing",this.start),t.on("video:pause",this.stop),t.on("video:waiting",this.stop),t.on("destroy",this.destroy),t.on("resize",this.resize),this.load()}return(0,s._)(e,[{key:"isRotate",get:function(){var e,t;return null==(t=this.art.plugins)||null==(e=t.autoOrientation)?void 0:e.state}},{key:"marginTop",get:function(){var t=this.utils.clamp,n=this.option.margin[0],a=this.$player.clientHeight;return"number"==typeof n?t(n,0,a):"string"==typeof n&&n.endsWith("%")?t(a*(Number.parseFloat(n)/100),0,a):e.option.margin[0]}},{key:"marginBottom",get:function(){var t=this.utils.clamp,n=this.option.margin[1],a=this.$player.clientHeight;return"number"==typeof n?t(n,0,a):"string"==typeof n&&n.endsWith("%")?t(a*(Number.parseFloat(n)/100),0,a):e.option.margin[1]}},{key:"fontSize",get:function(){var t=this.utils.clamp,n=this.$player.clientHeight,a=this.option.fontSize;return"number"==typeof a?Math.round(t(a,12,n)):"string"==typeof a&&a.endsWith("%")?Math.round(t(n*(Number.parseFloat(a)/100),12,n)):e.option.fontSize}},{key:"$ref",get:function(){var t=this.$refs.pop()||document.createElement("div");return t.style.cssText=e.cssText,t.dataset.mode="",t.dataset.id="",t.className="",t}},{key:"readys",get:function(){var e=this.art.currentTime,t=[];return this.filter("ready",function(e){return t.push(e)}),this.filter("wait",function(n){e+.1>=n.time&&n.time>=e-.1&&t.push(n)}),t}},{key:"visibles",get:function(){var e=this,t=[],n=this.$player.clientWidth,a=this.getLeft(this.$player);return this.filter("emit",function(i){var r=i.$ref.offsetTop,o=e.getLeft(i.$ref)-a,s=i.$ref.clientHeight,l=i.$ref.clientWidth,u=o+l,d=u/i.$restTime,c={};c.top=r,c.left=o,c.height=s,c.width=l,c.right=n-u,c.speed=d,c.distance=u,c.time=i.$restTime,c.mode=i.mode,t.push(c)}),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(e){return(0,r._)(function(){var t,n,a,i,r,o;return(0,d._)(this,function(s){switch(s.label){case 0:t=this.utils.errorHandle,n=[],a=e||this.option.danmuku,s.label=1;case 1:if(s.trys.push([1,13,,14]),"function"!=typeof a)return[3,3];return[4,a()];case 2:case 4:case 6:return n=s.sent(),[3,8];case 3:if(!(a instanceof Promise))return[3,5];return[4,a];case 5:if("string"!=typeof a)return[3,7];return[4,(0,f.bilibiliDanmuParseFromUrl)(a)];case 7:Array.isArray(a)&&(n=a),s.label=8;case 8:t(Array.isArray(n),"Danmuku need return an array as result"),void 0===e&&(this.reset(),this.queue=[],this.states={wait:[],ready:[],emit:[],stop:[]},this.$refs=[],this.$danmuku.textContent=""),i=0,s.label=9;case 9:if(!(i1&&void 0!==arguments[1]&&arguments[1],i=this.utils.clamp,r=this.art.template.$controlsCenter;return(Object.keys(t).some(function(e){return JSON.stringify(n.option[e])!==JSON.stringify(t[e])})||a)&&(this.option=Object.assign({},e.option,this.option,t),this.validator(this.option,e.scheme),this.option.mode=i(this.option.mode,0,2),this.option.speed=i(this.option.speed,1,10),this.option.opacity=i(this.option.opacity,0,1),this.option.lockTime=i(this.option.lockTime,1,60),this.option.maxLength=i(this.option.maxLength,1,1e3),this.option.mount=this.option.mount||r,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(n){t.id=Date.now(),e.worker.postMessage(t),e.worker.onmessage=function(e){var a=e.data;a.id===t.id&&n(a)}})}},{key:"filter",value:function(e,t){for(var n=this.states[e]||[],a=0;a0&&i[i.length-1])&&(6===u[0]||2===u[0])){r=0;continue}if(3===u[0]&&(!i||u[1]>i[0]&&u[1]typeof module?module.exports=p:"function"==typeof define&&define.amd&&define(function(){return p})}}({Df7KK:[function(e,t,r,n){var o=e("@swc/helpers/cjs/_to_consumable_array.cjs");function i(e){var t=e.target,r=e.visibles,n=e.clientWidth,i=e.clientHeight,u=e.marginBottom,f=e.marginTop,a=e.antiOverlap,c=i-u,s=r.filter(function(e){return e.mode===t.mode&&e.top<=c}).sort(function(e,t){return e.top-t.top});if(0===s.length)if(2===t.mode)return c-t.height;else return f;if(s.unshift({type:"top",top:0,left:0,right:0,height:f,width:n,speed:0,distance:n}),s.push({type:"bottom",top:c,left:0,right:0,height:u,width:n,speed:0,distance:n}),2===t.mode)for(var l=s.length-2;l>=0;l-=1){var p=s[l],d=s[l+1],h=p.top+p.height;if(d.top-h>=t.height)return d.top-t.height}else for(var b=1;b=t.height)return y}for(var v=[],_=1;_e.time))})});return j&&j[0]?j[0].top:void 0;case 1:case 2:return}else{switch(t.mode){case 0:v.sort(function(e,t){var r,n,i=(r=Math).min.apply(r,(0,o._)(t.map(function(e){return e.right}))),u=(n=Math).min.apply(n,(0,o._)(e.map(function(e){return e.right})));return i*t.length-u*e.length});break;case 1:case 2:v.sort(function(e,t){var r,n,i=(r=Math).max.apply(r,(0,o._)(t.map(function(e){return e.width})));return(n=Math).max.apply(n,(0,o._)(e.map(function(e){return e.width})))*e.length-i*t.length})}return v[0][0].top}}onmessage=function(e){var t=e.data;t.id&&t.type&&globalThis.postMessage({result:(0,({getDanmuTop:i})[t.type])(t),id:t.id})}},{"@swc/helpers/cjs/_to_consumable_array.cjs":"i81N6"}],i81N6:[function(e,t,r,n){"use strict";var o=e("d402183024004bc7"),i=e("3209e2b12672cd18"),u=e("fc58adb8f1bff142"),f=e("5e213dc122a10171");r._=function(e){return o._(e)||i._(e)||f._(e)||u._()}},{d402183024004bc7:"hfQG0","3209e2b12672cd18":"fQrlQ",fc58adb8f1bff142:"fWabh","5e213dc122a10171":"fh7mx"}],hfQG0:[function(e,t,r,n){"use strict";var o=e("5bd5b10bf87fc8e");r._=function(e){if(Array.isArray(e))return o._(e)}},{"5bd5b10bf87fc8e":"1WOAB"}],"1WOAB":[function(e,t,r,n){"use strict";r._=function(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);rtypeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}},{}],fWabh:[function(e,t,r,n){"use strict";r._=function(){throw TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}},{}],fh7mx:[function(e,t,r,n){"use strict";var o=e("3ee51b7dc02d0c44");r._=function(e,t){if(e){if("string"==typeof e)return o._(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if("Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r)return Array.from(r);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return o._(e,t)}}},{"3ee51b7dc02d0c44":"1WOAB"}]},["Df7KK"],"Df7KK","parcelRequire4dc0",{});'},{}],nzPZ8:[function(e,t,n,a){var i=e("@parcel/transformer-js/src/esmodule-helpers.js");i.defineInteropFlag(n),i.export(n,"bilibiliDanmuParseFromUrl",function(){return d});var r=e("@swc/helpers/cjs/_async_to_generator.cjs"),o=e("@swc/helpers/cjs/_ts_generator.cjs");function s(e){switch(e){case 1:case 2:case 3:default:return 0;case 4:return 2;case 5:return 1}}function l(e){if("string"!=typeof e)return[];var t=RegExp(']*?p="(?

[^"]+)"[^>]*>(?.*?)<\\/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:s(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 u(e){var t=e.data,n=t.xml,a=t.id;a&&n&&globalThis.postMessage({danmus:l(n),id:a})}function d(e){return new Promise(function(t){return(0,r._)(function(){var n,a;return(0,o._)(this,function(i){switch(i.label){case 0:return[4,fetch(e)];case 1:return[4,i.sent().text()];case 2:n=i.sent();try{var r;r=new Blob(["\n ".concat(s.toString(),"\n ").concat(l.toString(),"\n onmessage = ").concat(u.toString(),"\n ")],{type:"application/javascript"}),(a=new Worker(URL.createObjectURL(r))).onmessage=function(e){var n=e.data,i=n.danmus;n.id&&i&&(t(i),a.terminate())},a.postMessage({xml:n,id:Date.now()})}catch(e){console.error("Error parsing Bilibili Danmu:",e),t(l(n))}return[2]}})})()})}},{"@swc/helpers/cjs/_async_to_generator.cjs":"cZn0e","@swc/helpers/cjs/_ts_generator.cjs":"eltGh","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],qpMMf:[function(e,t,n,a){n.interopDefault=function(e){return e&&e.__esModule?e:{default:e}},n.defineInteropFlag=function(e){Object.defineProperty(e,"__esModule",{value:!0})},n.exportAll=function(e,t){return Object.keys(e).forEach(function(n){"default"===n||"__esModule"===n||Object.prototype.hasOwnProperty.call(t,n)||Object.defineProperty(t,n,{enumerable:!0,get:function(){return e[n]}})}),t},n.export=function(e,t,n){Object.defineProperty(e,t,{enumerable:!0,get:n})}},{}],hLPK6:[function(e,t,n,a){var i=e("@parcel/transformer-js/src/esmodule-helpers.js");i.defineInteropFlag(n),i.export(n,"default",function(){return l});var r=e("@swc/helpers/cjs/_to_consumable_array.cjs"),o=e("@swc/helpers/cjs/_type_of.cjs"),s=function(e,t,n,a,i){return(e-t)*(i-a)/(n-t)+a};function l(e,t,n){var a=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(i){var l=null,u=null;function d(){var d,c,p=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(l=null,u=null,i.innerHTML="",e.duration&&!e.option.isLive){var f={w:i.offsetWidth,h:i.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};(void 0===n?"undefined":(0,o._)(n))==="object"&&Object.assign(h,n);var m=[];if(Array.isArray(p)&&p.length)m=(0,r._)(p);else for(var g=function(e){var n=t.queue.filter(function(t){var n=t.time;return n>e*v&&n<=(e+h.sampling)*v}).length;m.push([e,n])},v=e.duration/f.w,y=0;y<=f.w;y+=h.sampling)g(y);if(0!==m.length){var b=m[m.length-1],k=b[0],x=b[1];k!==f.w&&m.push([f.w,x]);for(var w=m.map(function(e){return e[1]}),_=((d=Math).min.apply(d,(0,r._)(w))+(c=Math).max.apply(c,(0,r._)(w)))/2,$=0;$_?1+h.scale:1-h.scale)+h.minHeight}var O=function(e,t,n,a){var i,r,o=t||e,l=n||e,u={length:Math.sqrt(Math.pow(i=l[0]-o[0],2)+Math.pow(r=l[1]-o[1],2)),angle:Math.atan2(r,i)},d=s(Math.cos(u.angle)*h.flattening,0,1,1,0),c=u.angle*d+(a?Math.PI:0),p=u.length*h.smoothing;return[e[0]+Math.cos(c)*p,e[1]+Math.sin(c)*p]},S=function(e,t,n){var a=O(n[t-1],n[t-2],e),i=O(e,n[t-1],n[t+1],!0),r=t===n.length-1?" z":"";return"C ".concat(a[0],",").concat(a[1]," ").concat(i[0],",").concat(i[1]," ").concat(e[0],",").concat(e[1]).concat(r)},D=m.map(function(e){return[s(e[0],h.xMin,h.xMax,0,f.w),s(e[1],h.yMin,h.yMax,f.h,0)]}).reduce(function(e,t,n,a){return 0===n?"M ".concat(a[a.length-1][0],",").concat(f.h," L ").concat(t[0],",").concat(f.h," L ").concat(t[0],",").concat(t[1]):"".concat(e," ").concat(S(t,n,a))},"");i.innerHTML='\n\n\n\n\n\n\n\n\n\n\n\n '),l=a("#heatmap-start",i),u=a("#heatmap-stop",i),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 d()}),e.on("resize",function(){return d()}),e.on("artplayerPluginDanmuku:loaded",function(){return d()}),e.on("artplayerPluginDanmuku:points",function(e){return d(e)})}})}},{"@swc/helpers/cjs/_to_consumable_array.cjs":"i81N6","@swc/helpers/cjs/_type_of.cjs":"iXhRw","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],i81N6:[function(e,t,n,a){"use strict";var i=e("d402183024004bc7"),r=e("3209e2b12672cd18"),o=e("fc58adb8f1bff142"),s=e("5e213dc122a10171");n._=function(e){return i._(e)||r._(e)||s._(e)||o._()}},{d402183024004bc7:"hfQG0","3209e2b12672cd18":"fQrlQ",fc58adb8f1bff142:"fWabh","5e213dc122a10171":"fh7mx"}],hfQG0:[function(e,t,n,a){"use strict";var i=e("5bd5b10bf87fc8e");n._=function(e){if(Array.isArray(e))return i._(e)}},{"5bd5b10bf87fc8e":"1WOAB"}],"1WOAB":[function(e,t,n,a){"use strict";n._=function(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);ntypeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}},{}],fWabh:[function(e,t,n,a){"use strict";n._=function(){throw TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}},{}],fh7mx:[function(e,t,n,a){"use strict";var i=e("3ee51b7dc02d0c44");n._=function(e,t){if(e){if("string"==typeof e)return i._(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return i._(e,t)}}},{"3ee51b7dc02d0c44":"1WOAB"}],iXhRw:[function(e,t,n,a){"use strict";n._=function(e){return e&&"u">typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}},{}],jpEpW:[function(e,t,n,a){var i=e("@parcel/transformer-js/src/esmodule-helpers.js");i.defineInteropFlag(n),i.export(n,"default",function(){return H});var r=e("@swc/helpers/cjs/_async_to_generator.cjs"),o=e("@swc/helpers/cjs/_class_call_check.cjs"),s=e("@swc/helpers/cjs/_create_class.cjs"),l=e("@swc/helpers/cjs/_object_spread.cjs"),u=e("@swc/helpers/cjs/_object_spread_props.cjs"),d=e("@swc/helpers/cjs/_to_consumable_array.cjs"),c=e("@swc/helpers/cjs/_ts_generator.cjs"),p=e("bundle-text:./img/check_off.svg"),f=i.interopDefault(p),h=e("bundle-text:./img/check_on.svg"),m=i.interopDefault(h),g=e("bundle-text:./img/config.svg"),v=i.interopDefault(g),y=e("bundle-text:./img/mode_0_off.svg"),b=i.interopDefault(y),k=e("bundle-text:./img/mode_0_on.svg"),x=i.interopDefault(k),w=e("bundle-text:./img/mode_1_off.svg"),_=i.interopDefault(w),$=e("bundle-text:./img/mode_1_on.svg"),j=i.interopDefault($),M=e("bundle-text:./img/mode_2_off.svg"),O=i.interopDefault(M),S=e("bundle-text:./img/mode_2_on.svg"),D=i.interopDefault(S),P=e("bundle-text:./img/off.svg"),T=i.interopDefault(P),A=e("bundle-text:./img/on.svg"),q=i.interopDefault(A),E=e("bundle-text:./img/style.svg"),C=i.interopDefault(E),Z=e("bundle-text:./style.less"),F=i.interopDefault(Z),H=function(){"use strict";function e(t,n){var a=this;(0,o._)(this,e),this.art=t,this.danmuku=n,this.utils=t.constructor.utils;var i=this.utils.setStyle,r=t.template.$controlsCenter;i(r,"display","flex"),this.template={$controlsCenter:r,$mount:r,$danmuku:null,$toggle:null,$config:null,$configPanel:null,$configModes:null,$style:null,$stylePanel: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),t.on("resize",function(){return a.resize()}),t.on("fullscreen",function(e){return a.onFullscreen(e)}),t.on("fullscreenWeb",function(e){return a.onFullscreen(e)}),t.proxy(this.template.$config,"mouseenter",function(){a.onMouseEnter({$control:a.template.$config,$panel:a.template.$configPanel})}),t.proxy(this.template.$style,"mouseenter",function(){a.onMouseEnter({$control:a.template.$style,$panel:a.template.$stylePanel})})}return(0,s._)(e,[{key:"option",get:function(){return this.danmuku.option}},{key:"outside",get:function(){return this.template.$mount!==this.template.$controlsCenter}},{key:"TEMPLATE",get:function(){var e=this.option;return'\n

\n '.concat(q.default).concat(T.default,'\n
\n
\n ').concat(v.default,'\n
\n
\n
\n 按类型屏蔽\n
\n
\n ').concat(b.default).concat(x.default,'\n
滚动
\n
\n
\n ').concat(_.default).concat(j.default,'\n
顶部
\n
\n
\n ').concat(O.default).concat(D.default,'\n
底部
\n
\n
\n
\n
\n
\n ').concat(m.default).concat(f.default,'\n 防止弹幕重叠\n
\n
\n ').concat(m.default).concat(f.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(C.default,'\n
\n
\n
\n 模式\n
\n
\n ').concat(x.default,'\n
滚动
\n
\n
\n ').concat(j.default,'\n
顶部
\n
\n
\n ').concat(D.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,l._)({min:0,max:100,steps:[]},this.option.OPACITY)}},{key:"FONT_SIZE",get:function(){return(0,l._)({min:12,max:120,steps:[]},this.option.FONT_SIZE)}},{key:"MARGIN",get:function(){return(0,l._)({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,l._)({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:"append",value:function(e,t){var n=this.utils.append;(0,d._)(e.children).includes(t)||n(e,t)}},{key:"setData",value:function(e,t){var n=this.art.template.$player,a=this.template.$mount;n.dataset[e]=t,this.outside&&(a.dataset[e]=t)}},{key:"createTemplate",value:function(){var e=this.utils,t=e.createElement,n=e.tooltip,a=t("div");a.className="artplayer-plugin-danmuku",a.innerHTML=this.TEMPLATE,this.template.$danmuku=a,this.template.$toggle=this.query(".apd-toggle"),this.template.$config=this.query(".apd-config"),this.template.$configPanel=this.query(".apd-config-panel"),this.template.$configModes=this.query(".apd-config-mode .apd-modes"),this.template.$style=this.query(".apd-style"),this.template.$stylePanel=this.query(".apd-style-panel"),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 i=this.template.$toggle;this.art.on("artplayerPluginDanmuku:show",function(){n(i,"关闭弹幕")}),this.art.on("artplayerPluginDanmuku:hide",function(){n(i,"打开弹幕")})}},{key:"createEvents",value:function(){var e=this,t=this.template,n=t.$toggle,a=t.$configModes,i=t.$styleModes,r=t.$colors,o=t.$antiOverlap,s=t.$syncVideo,l=t.$send,u=t.$input;this.art.proxy(n,"click",function(){e.danmuku.config({visible:!e.option.visible}),e.reset()}),this.art.proxy(a,"click",function(t){var n=t.target.closest(".apd-mode");if(n){var a=Number(n.dataset.mode);e.option.modes.includes(a)?e.danmuku.config({modes:e.option.modes.filter(function(e){return e!==a})}):e.danmuku.config({modes:(0,d._)(e.option.modes).concat([a])}),e.reset()}}),this.art.proxy(o,"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(i,"click",function(t){var n=t.target.closest(".apd-mode");if(n){var a=Number(n.dataset.mode);e.danmuku.config({mode:a}),e.reset()}}),this.art.proxy(r,"click",function(t){var n=t.target.closest(".apd-color");n&&(e.danmuku.config({color:n.dataset.color}),e.reset())}),this.art.proxy(l,"click",function(){return e.emit()}),this.art.proxy(u,"keypress",function(t){"Enter"===t.key&&(t.preventDefault(),e.emit())})}},{key:"createSliders",value:function(){var e=this;this.slider.opacity=this.createSlider((0,u._)((0,l._)({},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,u._)((0,l._)({},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 n=e.MARGIN.steps[t];n&&(e.template.$marginValue.textContent=n.name,e.danmuku.config({margin:n.value}))}})),this.slider.fontSize=this.createSlider((0,u._)((0,l._)({},this.FONT_SIZE),{container:this.template.$fontSizeSlider,findIndex:function(){return e.danmuku.fontSize},onChange:function(t){e.template.$fontSizeValue.textContent="".concat(t,"px"),t!==e.danmuku.fontSize&&e.danmuku.config({fontSize:t})}})),this.slider.speed=this.createSlider((0,u._)((0,l._)({},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 n=e.SPEED.steps[t];n&&(e.template.$speedValue.textContent=n.name,e.danmuku.config({speed:n.value}))}}))}},{key:"createSlider",value:function(e){var t=this,n=e.min,a=e.max,i=e.container,r=e.findIndex,o=e.onChange,s=e.steps,l=void 0===s?[]:s,u=this.utils,d=u.query,c=u.clamp;(0,u.setStyle)(i,"touch-action","none"),i.innerHTML='\n
\n
\n '.concat(l.map(function(){return'
'}).join(""),'\n
\n
\n
\n
\n
\n ').concat(l.map(function(e){return e.hide?"":'
'.concat(e.name,"
")}).join(""),"\n
\n ");var p=d(".apd-slider-dot",i),f=d(".apd-slider-progress",i),h=!1;function m(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:r();if(!(ea)){var t=(e-n)/(a-n);p.style.left="".concat(100*t,"%"),0===l.length&&(f.style.width=p.style.left),o(e)}}function g(e){var t=i.getBoundingClientRect(),r=t.top,o=t.height,s=t.left,l=t.width;this.art.isRotate?m(Math.round(c(e.clientY-r,0,o)/o*(a-n)+n)):m(Math.round(c(e.clientX-s,0,l)/l*(a-n)+n))}return this.art.proxy(i,"click",function(e){g.call(t,e)}),this.art.proxy(i,"pointerdown",function(e){h=0===e.button}),this.art.on("document:pointermove",function(e){h&&g.call(t,e)}),this.art.on("document:pointerup",function(e){h&&(h=!1,g.call(t,e))}),{reset:m}}},{key:"onFullscreen",value:function(e){var t=this.template,n=t.$danmuku,a=t.$controlsCenter,i=t.$mount;this.outside?e?this.append(a,n):this.append(i,n):this.append(a,n)}},{key:"onMouseEnter",value:function(e){var t=e.$control,n=e.$panel,a=this.art.template.$player,i=t.getBoundingClientRect(),r=n.getBoundingClientRect(),o=a.getBoundingClientRect(),s=r.width/2-i.width/2,l=o.left-(i.left-s),u=i.right+s-o.right;l>0?n.style.left="".concat(-s+l,"px"):u>0?n.style.left="".concat(-s-u,"px"):n.style.left="".concat(-s,"px")}},{key:"emit",value:function(){return(0,r._)(function(){var e,t,n,a;return(0,c._)(this,function(i){switch(i.label){case 0:if(!(t=(e=this.template.$input).value.trim()).length||this.isLock||this.emitting)return[2];n={text:t,mode:this.option.mode,color:this.option.color,time:this.art.currentTime},i.label=1;case 1:return i.trys.push([1,3,,4]),this.emitting=!0,[4,this.option.beforeEmit(n)];case 2:if(a=i.sent(),this.emitting=!1,!0!==a)return[2];return n.border=!0,delete n.time,this.danmuku.emit(n),e.value="",this.lock(),[3,4];case 3:return console.error("Error emitting danmuku:",i.sent()),this.emitting=!1,[3,4];case 4:return[2]}})}).call(this)}},{key:"lock",value:function(){var e=this,t=this.utils.addClass,n=this.template.$send;this.isLock=!0;var a=this.option.lockTime;n.textContent=a,t(n,"apd-lock");var i=function(){e.timer=setTimeout(function(){0===a?e.unlock():(n.textContent=a-=1,i())},1e3)};i()}},{key:"unlock",value:function(){var e=this.utils.removeClass,t=this.template.$send;clearTimeout(this.timer),this.isLock=!1,t.textContent="发送",e(t,"apd-lock")}},{key:"resize",value:function(){if(!this.outside&&!this.art.fullscreen&&!this.art.fullscreenWeb){var e=this.art.template,t=e.$player,n=e.$controlsCenter,a=this.template.$danmuku;this.art.widthtypeof document){var L="artplayer-plugin-danmuku",V=document.getElementById(L);V||((V=document.createElement("style")).id=L,"loading"===document.readyState?document.addEventListener("DOMContentLoaded",function(){document.head.appendChild(V)}):(document.head||document.documentElement).appendChild(V)),V.textContent=F.default}},{"@swc/helpers/cjs/_async_to_generator.cjs":"cZn0e","@swc/helpers/cjs/_class_call_check.cjs":"4Uf9M","@swc/helpers/cjs/_create_class.cjs":"igUuK","@swc/helpers/cjs/_object_spread.cjs":"kyoEj","@swc/helpers/cjs/_object_spread_props.cjs":"3G1wX","@swc/helpers/cjs/_to_consumable_array.cjs":"i81N6","@swc/helpers/cjs/_ts_generator.cjs":"eltGh","bundle-text:./img/check_off.svg":"3Kuo7","bundle-text:./img/check_on.svg":"lVPfB","bundle-text:./img/config.svg":"a75dO","bundle-text:./img/mode_0_off.svg":"e5Ndj","bundle-text:./img/mode_0_on.svg":"fgakY","bundle-text:./img/mode_1_off.svg":"1rW7G","bundle-text:./img/mode_1_on.svg":"86V1z","bundle-text:./img/mode_2_off.svg":"8rkmQ","bundle-text:./img/mode_2_on.svg":"bGZsR","bundle-text:./img/off.svg":"iO9LX","bundle-text:./img/on.svg":"abS9U","bundle-text:./img/style.svg":"g7T0K","bundle-text:./style.less":"d3e2n","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],"3Kuo7":[function(e,t,n,a){t.exports=''},{}],lVPfB:[function(e,t,n,a){t.exports=''},{}],a75dO:[function(e,t,n,a){t.exports=''},{}],e5Ndj:[function(e,t,n,a){t.exports=''},{}],fgakY:[function(e,t,n,a){t.exports=''},{}],"1rW7G":[function(e,t,n,a){t.exports=''},{}],"86V1z":[function(e,t,n,a){t.exports=''},{}],"8rkmQ":[function(e,t,n,a){t.exports=''},{}],bGZsR:[function(e,t,n,a){t.exports=''},{}],iO9LX:[function(e,t,n,a){t.exports=''},{}],abS9U:[function(e,t,n,a){t.exports=''},{}],g7T0K:[function(e,t,n,a){t.exports=''},{}],d3e2n:[function(e,t,n,a){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{opacity:0;pointer-events:none;width:320px;padding:10px;position:absolute;bottom:24px;left:0}.artplayer-plugin-danmuku .apd-config .apd-config-panel .apd-config-panel-inner{background-color:rgba(0,0,0,.85);border-radius:3px;width:100%;padding:10px}.artplayer-plugin-danmuku .apd-config:hover .apd-config-panel{opacity:100;pointer-events:all}.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:rgba(255,255,255,.25);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;top:0;bottom:0;left:0;right:0}.artplayer-plugin-danmuku .apd-slider .apd-slider-points .apd-slider-point{background-color:rgba(255,255,255,.5);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:rgba(255,255,255,.25);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{opacity:0;pointer-events:none;width:200px;padding:10px;position:absolute;bottom:24px;left:0}.artplayer-plugin-danmuku .apd-style .apd-style-panel .apd-style-panel-inner{background-color:rgba(0,0,0,.85);border-radius:3px;width:100%;padding:10px}.artplayer-plugin-danmuku .apd-style:hover .apd-style-panel{opacity:100;pointer-events:all}.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:transparent;border:none;outline:none;flex:1;width:auto;min-width:0;height:100%;line-height:1}.artplayer-plugin-danmuku .apd-input::placeholder{color:rgba(255,255,255,.5)}.artplayer-plugin-danmuku .apd-input::placeholder{color:rgba(255,255,255,.5)}.artplayer-plugin-danmuku .apd-send{cursor:pointer;width:60px;height:100%;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;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}.art-video-player>.artplayer-plugin-danmuku{padding:0 10px;position:absolute;bottom:-40px;left:0;right:0}.art-video-player:has(>.artplayer-plugin-danmuku){margin-bottom:40px}[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: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}'},{}]},["l3CkF"],"l3CkF","parcelRequire4dc0",{}); \ No newline at end of file +!function(e,t,n,a,i,r,o,s){var l="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},u="function"==typeof l[a]&&l[a],d=u.i||{},c=u.cache||{},p="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function f(t,n){if(!c[t]){if(!e[t]){if(i[t])return i[t];var r="function"==typeof l[a]&&l[a];if(!n&&r)return r(t,!0);if(u)return u(t,!0);if(p&&"string"==typeof t)return p(t);var o=Error("Cannot find module '"+t+"'");throw o.code="MODULE_NOT_FOUND",o}d.resolve=function(n){var a=e[t][1][n];return null!=a?a:n},d.cache={};var s=c[t]=new f.Module(t);e[t][0].call(s.exports,d,s,s.exports,l)}return c[t].exports;function d(e){var t=d.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var n={__esModule:!0};return t.forEach(function(e){var t=e[0],a=e[1],i=e[2]||e[0],r=f(a);"*"===t?Object.keys(r).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(n,e)||Object.defineProperty(n,e,{enumerable:!0,get:function(){return r[e]}})}):"*"===i?Object.defineProperty(n,t,{enumerable:!0,value:r}):Object.defineProperty(n,t,{enumerable:!0,get:function(){return"default"===i?r.__esModule?r.default:r:r[i]}})}),n}return f(t)}}f.isParcelRequire=!0,f.Module=function(e){this.id=e,this.bundle=f,this.require=p,this.exports={}},f.modules=e,f.cache=c,f.parent=u,f.distDir=void 0,f.publicUrl=void 0,f.devServer=void 0,f.i=d,f.register=function(t,n){e[t]=[function(e,t){t.exports=n},{}]},Object.defineProperty(f,"root",{get:function(){return l[a]}}),l[a]=f;for(var h=0;htypeof module?module.exports=m:"function"==typeof define&&define.amd&&define(function(){return m})}}({l3CkF:[function(e,t,n,a){var i=e("@parcel/transformer-js/src/esmodule-helpers.js");i.defineInteropFlag(n),i.export(n,"default",function(){return c});var r=e("./danmuku"),o=i.interopDefault(r),s=e("./heatmap"),l=i.interopDefault(s),u=e("./setting"),d=i.interopDefault(u);function c(e){return function(t){var n=new(0,o.default)(t,e),a=new(0,d.default)(t,n);return n.option.heatmap&&(0,l.default)(t,n,n.option.heatmap),{name:"artplayerPluginDanmuku",emit:n.emit.bind(n),load:n.load.bind(n),config:n.config.bind(n),hide:n.hide.bind(n),show:n.show.bind(n),reset:n.reset.bind(n),mount:a.mount.bind(a),get option(){return n.option},get isHide(){return n.isHide},get isStop(){return n.isStop}}}}c.icons=d.default.icons,"u">typeof window&&(window.artplayerPluginDanmuku=c)},{"./danmuku":"u1ZRC","./heatmap":"hLPK6","./setting":"jpEpW","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],u1ZRC:[function(e,t,n,a){var i=e("@parcel/transformer-js/src/esmodule-helpers.js");i.defineInteropFlag(n),i.export(n,"default",function(){return h});var r=e("@swc/helpers/cjs/_async_to_generator.cjs"),o=e("@swc/helpers/cjs/_class_call_check.cjs"),s=e("@swc/helpers/cjs/_create_class.cjs"),l=e("@swc/helpers/cjs/_object_spread.cjs"),u=e("@swc/helpers/cjs/_object_spread_props.cjs"),d=e("@swc/helpers/cjs/_ts_generator.cjs"),c=e("bundle-text:./worker"),p=i.interopDefault(c),f=e("./bilibili"),h=function(){"use strict";function e(t,n){(0,o._)(this,e);var a=t.constructor,i=t.template;this.utils=a.utils,this.validator=a.validator,this.$danmuku=i.$danmuku,this.$player=i.$player,this.art=t,this.queue=[],this.$refs=[],this.isStop=!1,this.isHide=!1,this.timer=null,this.index=0,this.option=e.option,this.states={wait:[],ready:[],emit:[],stop:[]},this.config(n,!0);var r=new Blob([p.default.replace("export{e as default};","")],{type:"application/javascript"});this.worker=new Worker(URL.createObjectURL(r)),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),t.on("video:play",this.start),t.on("video:playing",this.start),t.on("video:pause",this.stop),t.on("video:waiting",this.stop),t.on("destroy",this.destroy),t.on("resize",this.resize),this.load()}return(0,s._)(e,[{key:"isRotate",get:function(){var e,t;return null==(t=this.art.plugins)||null==(e=t.autoOrientation)?void 0:e.state}},{key:"marginTop",get:function(){var t=this.utils.clamp,n=this.option.margin[0],a=this.$player.clientHeight;return"number"==typeof n?t(n,0,a):"string"==typeof n&&n.endsWith("%")?t(a*(Number.parseFloat(n)/100),0,a):e.option.margin[0]}},{key:"marginBottom",get:function(){var t=this.utils.clamp,n=this.option.margin[1],a=this.$player.clientHeight;return"number"==typeof n?t(n,0,a):"string"==typeof n&&n.endsWith("%")?t(a*(Number.parseFloat(n)/100),0,a):e.option.margin[1]}},{key:"fontSize",get:function(){var t=this.utils.clamp,n=this.$player.clientHeight,a=this.option.fontSize;return"number"==typeof a?Math.round(t(a,12,n)):"string"==typeof a&&a.endsWith("%")?Math.round(t(n*(Number.parseFloat(a)/100),12,n)):e.option.fontSize}},{key:"$ref",get:function(){var t=this.$refs.pop()||document.createElement("div");return t.style.cssText=e.cssText,t.dataset.mode="",t.dataset.id="",t.className="",t}},{key:"readys",get:function(){var e=this.art.currentTime,t=[];return this.filter("ready",function(e){return t.push(e)}),this.filter("wait",function(n){e+.1>=n.time&&n.time>=e-.1&&t.push(n)}),t}},{key:"visibles",get:function(){var e=this,t=[],n=this.$player.clientWidth,a=this.getLeft(this.$player);return this.filter("emit",function(i){var r=i.$ref.offsetTop,o=e.getLeft(i.$ref)-a,s=i.$ref.clientHeight,l=i.$ref.clientWidth,u=o+l,d=u/i.$restTime,c={};c.top=r,c.left=o,c.height=s,c.width=l,c.right=n-u,c.speed=d,c.distance=u,c.time=i.$restTime,c.mode=i.mode,t.push(c)}),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(e){return(0,r._)(function(){var t,n,a,i,r,o;return(0,d._)(this,function(s){switch(s.label){case 0:t=this.utils.errorHandle,n=[],a=e||this.option.danmuku,s.label=1;case 1:if(s.trys.push([1,13,,14]),"function"!=typeof a)return[3,3];return[4,a()];case 2:case 4:case 6:return n=s.sent(),[3,8];case 3:if(!(a instanceof Promise))return[3,5];return[4,a];case 5:if("string"!=typeof a)return[3,7];return[4,(0,f.bilibiliDanmuParseFromUrl)(a)];case 7:Array.isArray(a)&&(n=a),s.label=8;case 8:t(Array.isArray(n),"Danmuku need return an array as result"),void 0===e&&(this.reset(),this.queue=[],this.states={wait:[],ready:[],emit:[],stop:[]},this.$refs=[],this.$danmuku.textContent=""),i=0,s.label=9;case 9:if(!(i1&&void 0!==arguments[1]&&arguments[1],i=this.utils.clamp,r=this.art.template.$controlsCenter;return(Object.keys(t).some(function(e){return JSON.stringify(n.option[e])!==JSON.stringify(t[e])})||a)&&(this.option=Object.assign({},e.option,this.option,t),this.validator(this.option,e.scheme),this.option.mode=i(this.option.mode,0,2),this.option.speed=i(this.option.speed,1,10),this.option.opacity=i(this.option.opacity,0,1),this.option.lockTime=i(this.option.lockTime,1,60),this.option.maxLength=i(this.option.maxLength,1,1e3),this.option.mount=this.option.mount||r,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(n){t.id=Date.now(),e.worker.postMessage(t),e.worker.onmessage=function(e){var a=e.data;a.id===t.id&&n(a)}})}},{key:"filter",value:function(e,t){for(var n=this.states[e]||[],a=0;a0&&i[i.length-1])&&(6===u[0]||2===u[0])){r=0;continue}if(3===u[0]&&(!i||u[1]>i[0]&&u[1]typeof module?module.exports=b:"function"==typeof define&&define.amd&&define(function(){return b})}}({Df7KK:[function(e,t,r,n){var o=e("@swc/helpers/cjs/_to_consumable_array.cjs");function i(e){var t=e.target,r=e.visibles,n=e.clientWidth,i=e.clientHeight,u=e.marginBottom,f=e.marginTop,a=e.antiOverlap,c=i-u,s=r.filter(function(e){return e.mode===t.mode&&e.top<=c}).sort(function(e,t){return e.top-t.top});if(0===s.length)if(2===t.mode)return c-t.height;else return f;if(s.unshift({type:"top",top:0,left:0,right:0,height:f,width:n,speed:0,distance:n}),s.push({type:"bottom",top:c,left:0,right:0,height:u,width:n,speed:0,distance:n}),2===t.mode)for(var l=s.length-2;l>=0;l-=1){var p=s[l],d=s[l+1],h=p.top+p.height;if(d.top-h>=t.height)return d.top-t.height}else for(var b=1;b=t.height)return y}for(var v=[],_=1;_e.time))})});return j&&j[0]?j[0].top:void 0;case 1:case 2:return}else{switch(t.mode){case 0:v.sort(function(e,t){var r,n,i=(r=Math).min.apply(r,(0,o._)(t.map(function(e){return e.right}))),u=(n=Math).min.apply(n,(0,o._)(e.map(function(e){return e.right})));return i*t.length-u*e.length});break;case 1:case 2:v.sort(function(e,t){var r,n,i=(r=Math).max.apply(r,(0,o._)(t.map(function(e){return e.width})));return(n=Math).max.apply(n,(0,o._)(e.map(function(e){return e.width})))*e.length-i*t.length})}return v[0][0].top}}onmessage=function(e){var t=e.data;t.id&&t.type&&globalThis.postMessage({result:(0,({getDanmuTop:i})[t.type])(t),id:t.id})}},{"@swc/helpers/cjs/_to_consumable_array.cjs":"i81N6"}],i81N6:[function(e,t,r,n){"use strict";var o=e("d402183024004bc7"),i=e("3209e2b12672cd18"),u=e("fc58adb8f1bff142"),f=e("5e213dc122a10171");r._=function(e){return o._(e)||i._(e)||f._(e)||u._()}},{d402183024004bc7:"hfQG0","3209e2b12672cd18":"fQrlQ",fc58adb8f1bff142:"fWabh","5e213dc122a10171":"fh7mx"}],hfQG0:[function(e,t,r,n){"use strict";var o=e("5bd5b10bf87fc8e");r._=function(e){if(Array.isArray(e))return o._(e)}},{"5bd5b10bf87fc8e":"1WOAB"}],"1WOAB":[function(e,t,r,n){"use strict";r._=function(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);rtypeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}},{}],fWabh:[function(e,t,r,n){"use strict";r._=function(){throw TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}},{}],fh7mx:[function(e,t,r,n){"use strict";var o=e("3ee51b7dc02d0c44");r._=function(e,t){if(e){if("string"==typeof e)return o._(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if("Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r)return Array.from(r);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return o._(e,t)}}},{"3ee51b7dc02d0c44":"1WOAB"}]},["Df7KK"],"Df7KK","parcelRequire4dc0",{});'},{}],nzPZ8:[function(e,t,n,a){var i=e("@parcel/transformer-js/src/esmodule-helpers.js");i.defineInteropFlag(n),i.export(n,"bilibiliDanmuParseFromUrl",function(){return d});var r=e("@swc/helpers/cjs/_async_to_generator.cjs"),o=e("@swc/helpers/cjs/_ts_generator.cjs");function s(e){switch(e){case 1:case 2:case 3:default:return 0;case 4:return 2;case 5:return 1}}function l(e){if("string"!=typeof e)return[];var t=RegExp(']*?p="(?

[^"]+)"[^>]*>(?.*?)<\\/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:s(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 u(e){var t=e.data,n=t.xml,a=t.id;a&&n&&globalThis.postMessage({danmus:l(n),id:a})}function d(e){return new Promise(function(t){return(0,r._)(function(){var n,a;return(0,o._)(this,function(i){switch(i.label){case 0:return[4,fetch(e)];case 1:return[4,i.sent().text()];case 2:n=i.sent();try{var r;r=new Blob(["\n ".concat(s.toString(),"\n ").concat(l.toString(),"\n onmessage = ").concat(u.toString(),"\n ")],{type:"application/javascript"}),(a=new Worker(URL.createObjectURL(r))).onmessage=function(e){var n=e.data,i=n.danmus;n.id&&i&&(t(i),a.terminate())},a.postMessage({xml:n,id:Date.now()})}catch(e){console.error("Error parsing Bilibili Danmu:",e),t(l(n))}return[2]}})})()})}},{"@swc/helpers/cjs/_async_to_generator.cjs":"cZn0e","@swc/helpers/cjs/_ts_generator.cjs":"eltGh","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],qpMMf:[function(e,t,n,a){n.interopDefault=function(e){return e&&e.__esModule?e:{default:e}},n.defineInteropFlag=function(e){Object.defineProperty(e,"__esModule",{value:!0})},n.exportAll=function(e,t){return Object.keys(e).forEach(function(n){"default"===n||"__esModule"===n||Object.prototype.hasOwnProperty.call(t,n)||Object.defineProperty(t,n,{enumerable:!0,get:function(){return e[n]}})}),t},n.export=function(e,t,n){Object.defineProperty(e,t,{enumerable:!0,get:n})}},{}],hLPK6:[function(e,t,n,a){var i=e("@parcel/transformer-js/src/esmodule-helpers.js");i.defineInteropFlag(n),i.export(n,"default",function(){return l});var r=e("@swc/helpers/cjs/_to_consumable_array.cjs"),o=e("@swc/helpers/cjs/_type_of.cjs"),s=function(e,t,n,a,i){return(e-t)*(i-a)/(n-t)+a};function l(e,t,n){var a=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(i){var l=null,u=null;function d(){var d,c,p=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(l=null,u=null,i.innerHTML="",e.duration&&!e.option.isLive){var f={w:i.offsetWidth,h:i.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};(void 0===n?"undefined":(0,o._)(n))==="object"&&Object.assign(h,n);var m=[];if(Array.isArray(p)&&p.length)m=(0,r._)(p);else for(var g=function(e){var n=t.queue.filter(function(t){var n=t.time;return n>e*v&&n<=(e+h.sampling)*v}).length;m.push([e,n])},v=e.duration/f.w,y=0;y<=f.w;y+=h.sampling)g(y);if(0!==m.length){var b=m[m.length-1],k=b[0],x=b[1];k!==f.w&&m.push([f.w,x]);for(var w=m.map(function(e){return e[1]}),_=((d=Math).min.apply(d,(0,r._)(w))+(c=Math).max.apply(c,(0,r._)(w)))/2,$=0;$_?1+h.scale:1-h.scale)+h.minHeight}var O=function(e,t,n,a){var i,r,o=t||e,l=n||e,u={length:Math.sqrt(Math.pow(i=l[0]-o[0],2)+Math.pow(r=l[1]-o[1],2)),angle:Math.atan2(r,i)},d=s(Math.cos(u.angle)*h.flattening,0,1,1,0),c=u.angle*d+(a?Math.PI:0),p=u.length*h.smoothing;return[e[0]+Math.cos(c)*p,e[1]+Math.sin(c)*p]},S=function(e,t,n){var a=O(n[t-1],n[t-2],e),i=O(e,n[t-1],n[t+1],!0),r=t===n.length-1?" z":"";return"C ".concat(a[0],",").concat(a[1]," ").concat(i[0],",").concat(i[1]," ").concat(e[0],",").concat(e[1]).concat(r)},D=m.map(function(e){return[s(e[0],h.xMin,h.xMax,0,f.w),s(e[1],h.yMin,h.yMax,f.h,0)]}).reduce(function(e,t,n,a){return 0===n?"M ".concat(a[a.length-1][0],",").concat(f.h," L ").concat(t[0],",").concat(f.h," L ").concat(t[0],",").concat(t[1]):"".concat(e," ").concat(S(t,n,a))},"");i.innerHTML='\n\n\n\n\n\n\n\n\n\n\n\n '),l=a("#heatmap-start",i),u=a("#heatmap-stop",i),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 d()}),e.on("resize",function(){return d()}),e.on("artplayerPluginDanmuku:loaded",function(){return d()}),e.on("artplayerPluginDanmuku:points",function(e){return d(e)})}})}},{"@swc/helpers/cjs/_to_consumable_array.cjs":"i81N6","@swc/helpers/cjs/_type_of.cjs":"iXhRw","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],i81N6:[function(e,t,n,a){"use strict";var i=e("d402183024004bc7"),r=e("3209e2b12672cd18"),o=e("fc58adb8f1bff142"),s=e("5e213dc122a10171");n._=function(e){return i._(e)||r._(e)||s._(e)||o._()}},{d402183024004bc7:"hfQG0","3209e2b12672cd18":"fQrlQ",fc58adb8f1bff142:"fWabh","5e213dc122a10171":"fh7mx"}],hfQG0:[function(e,t,n,a){"use strict";var i=e("5bd5b10bf87fc8e");n._=function(e){if(Array.isArray(e))return i._(e)}},{"5bd5b10bf87fc8e":"1WOAB"}],"1WOAB":[function(e,t,n,a){"use strict";n._=function(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);ntypeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}},{}],fWabh:[function(e,t,n,a){"use strict";n._=function(){throw TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}},{}],fh7mx:[function(e,t,n,a){"use strict";var i=e("3ee51b7dc02d0c44");n._=function(e,t){if(e){if("string"==typeof e)return i._(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return i._(e,t)}}},{"3ee51b7dc02d0c44":"1WOAB"}],iXhRw:[function(e,t,n,a){"use strict";n._=function(e){return e&&"u">typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}},{}],jpEpW:[function(e,t,n,a){var i=e("@parcel/transformer-js/src/esmodule-helpers.js");i.defineInteropFlag(n),i.export(n,"default",function(){return H});var r=e("@swc/helpers/cjs/_async_to_generator.cjs"),o=e("@swc/helpers/cjs/_class_call_check.cjs"),s=e("@swc/helpers/cjs/_create_class.cjs"),l=e("@swc/helpers/cjs/_object_spread.cjs"),u=e("@swc/helpers/cjs/_object_spread_props.cjs"),d=e("@swc/helpers/cjs/_to_consumable_array.cjs"),c=e("@swc/helpers/cjs/_ts_generator.cjs"),p=e("bundle-text:./img/check_off.svg"),f=i.interopDefault(p),h=e("bundle-text:./img/check_on.svg"),m=i.interopDefault(h),g=e("bundle-text:./img/config.svg"),v=i.interopDefault(g),y=e("bundle-text:./img/mode_0_off.svg"),b=i.interopDefault(y),k=e("bundle-text:./img/mode_0_on.svg"),x=i.interopDefault(k),w=e("bundle-text:./img/mode_1_off.svg"),_=i.interopDefault(w),$=e("bundle-text:./img/mode_1_on.svg"),j=i.interopDefault($),M=e("bundle-text:./img/mode_2_off.svg"),O=i.interopDefault(M),S=e("bundle-text:./img/mode_2_on.svg"),D=i.interopDefault(S),P=e("bundle-text:./img/off.svg"),T=i.interopDefault(P),A=e("bundle-text:./img/on.svg"),q=i.interopDefault(A),E=e("bundle-text:./img/style.svg"),C=i.interopDefault(E),Z=e("bundle-text:./style.less"),F=i.interopDefault(Z),H=function(){"use strict";function e(t,n){var a=this;(0,o._)(this,e),this.art=t,this.danmuku=n,this.utils=t.constructor.utils;var i=this.utils.setStyle,r=t.template.$controlsCenter;i(r,"display","flex"),this.template={$controlsCenter:r,$mount:r,$danmuku:null,$toggle:null,$config:null,$configPanel:null,$configModes:null,$style:null,$stylePanel: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),t.on("resize",function(){return a.resize()}),t.on("fullscreen",function(e){return a.onFullscreen(e)}),t.on("fullscreenWeb",function(e){return a.onFullscreen(e)}),t.proxy(this.template.$config,"mouseenter",function(){a.onMouseEnter({$control:a.template.$config,$panel:a.template.$configPanel})}),t.proxy(this.template.$style,"mouseenter",function(){a.onMouseEnter({$control:a.template.$style,$panel:a.template.$stylePanel})})}return(0,s._)(e,[{key:"option",get:function(){return this.danmuku.option}},{key:"outside",get:function(){return this.template.$mount!==this.template.$controlsCenter}},{key:"TEMPLATE",get:function(){var e=this.option;return'\n

\n '.concat(q.default).concat(T.default,'\n
\n
\n ').concat(v.default,'\n
\n
\n
\n 按类型屏蔽\n
\n
\n ').concat(b.default).concat(x.default,'\n
滚动
\n
\n
\n ').concat(_.default).concat(j.default,'\n
顶部
\n
\n
\n ').concat(O.default).concat(D.default,'\n
底部
\n
\n
\n
\n
\n
\n ').concat(m.default).concat(f.default,'\n 防止弹幕重叠\n
\n
\n ').concat(m.default).concat(f.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(C.default,'\n
\n
\n
\n 模式\n
\n
\n ').concat(x.default,'\n
滚动
\n
\n
\n ').concat(j.default,'\n
顶部
\n
\n
\n ').concat(D.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,l._)({min:0,max:100,steps:[]},this.option.OPACITY)}},{key:"FONT_SIZE",get:function(){return(0,l._)({min:12,max:120,steps:[]},this.option.FONT_SIZE)}},{key:"MARGIN",get:function(){return(0,l._)({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,l._)({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:"append",value:function(e,t){var n=this.utils.append;(0,d._)(e.children).includes(t)||n(e,t)}},{key:"setData",value:function(e,t){var n=this.art.template.$player,a=this.template.$mount;n.dataset[e]=t,this.outside&&(a.dataset[e]=t)}},{key:"createTemplate",value:function(){var e=this.utils,t=e.createElement,n=e.tooltip,a=t("div");a.className="artplayer-plugin-danmuku",a.innerHTML=this.TEMPLATE,this.template.$danmuku=a,this.template.$toggle=this.query(".apd-toggle"),this.template.$config=this.query(".apd-config"),this.template.$configPanel=this.query(".apd-config-panel"),this.template.$configModes=this.query(".apd-config-mode .apd-modes"),this.template.$style=this.query(".apd-style"),this.template.$stylePanel=this.query(".apd-style-panel"),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 i=this.template.$toggle;this.art.on("artplayerPluginDanmuku:show",function(){n(i,"关闭弹幕")}),this.art.on("artplayerPluginDanmuku:hide",function(){n(i,"打开弹幕")})}},{key:"createEvents",value:function(){var e=this,t=this.template,n=t.$toggle,a=t.$configModes,i=t.$styleModes,r=t.$colors,o=t.$antiOverlap,s=t.$syncVideo,l=t.$send,u=t.$input;this.art.proxy(n,"click",function(){e.danmuku.config({visible:!e.option.visible}),e.reset()}),this.art.proxy(a,"click",function(t){var n=t.target.closest(".apd-mode");if(n){var a=Number(n.dataset.mode);e.option.modes.includes(a)?e.danmuku.config({modes:e.option.modes.filter(function(e){return e!==a})}):e.danmuku.config({modes:(0,d._)(e.option.modes).concat([a])}),e.reset()}}),this.art.proxy(o,"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(i,"click",function(t){var n=t.target.closest(".apd-mode");if(n){var a=Number(n.dataset.mode);e.danmuku.config({mode:a}),e.reset()}}),this.art.proxy(r,"click",function(t){var n=t.target.closest(".apd-color");n&&(e.danmuku.config({color:n.dataset.color}),e.reset())}),this.art.proxy(l,"click",function(){return e.emit()}),this.art.proxy(u,"keypress",function(t){"Enter"===t.key&&(t.preventDefault(),e.emit())})}},{key:"createSliders",value:function(){var e=this;this.slider.opacity=this.createSlider((0,u._)((0,l._)({},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,u._)((0,l._)({},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 n=e.MARGIN.steps[t];n&&(e.template.$marginValue.textContent=n.name,e.danmuku.config({margin:n.value}))}})),this.slider.fontSize=this.createSlider((0,u._)((0,l._)({},this.FONT_SIZE),{container:this.template.$fontSizeSlider,findIndex:function(){return e.danmuku.fontSize},onChange:function(t){e.template.$fontSizeValue.textContent="".concat(t,"px"),t!==e.danmuku.fontSize&&e.danmuku.config({fontSize:t})}})),this.slider.speed=this.createSlider((0,u._)((0,l._)({},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 n=e.SPEED.steps[t];n&&(e.template.$speedValue.textContent=n.name,e.danmuku.config({speed:n.value}))}}))}},{key:"createSlider",value:function(e){var t=this,n=e.min,a=e.max,i=e.container,r=e.findIndex,o=e.onChange,s=e.steps,l=void 0===s?[]:s,u=this.utils,d=u.query,c=u.clamp;(0,u.setStyle)(i,"touch-action","none"),i.innerHTML='\n
\n
\n '.concat(l.map(function(){return'
'}).join(""),'\n
\n
\n
\n
\n
\n ').concat(l.map(function(e){return e.hide?"":'
'.concat(e.name,"
")}).join(""),"\n
\n ");var p=d(".apd-slider-dot",i),f=d(".apd-slider-progress",i),h=!1;function m(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:r();if(!(ea)){var t=(e-n)/(a-n);p.style.left="".concat(100*t,"%"),0===l.length&&(f.style.width=p.style.left),o(e)}}function g(e){var t=i.getBoundingClientRect(),r=t.top,o=t.height,s=t.left,l=t.width;this.art.isRotate?m(Math.round(c(e.clientY-r,0,o)/o*(a-n)+n)):m(Math.round(c(e.clientX-s,0,l)/l*(a-n)+n))}return this.art.proxy(i,"click",function(e){g.call(t,e)}),this.art.proxy(i,"pointerdown",function(e){h=0===e.button}),this.art.on("document:pointermove",function(e){h&&g.call(t,e)}),this.art.on("document:pointerup",function(e){h&&(h=!1,g.call(t,e))}),{reset:m}}},{key:"onFullscreen",value:function(e){var t=this.template,n=t.$danmuku,a=t.$controlsCenter,i=t.$mount;this.outside?e?this.append(a,n):this.append(i,n):this.append(a,n)}},{key:"onMouseEnter",value:function(e){var t=e.$control,n=e.$panel,a=this.art.template.$player,i=t.getBoundingClientRect(),r=n.getBoundingClientRect(),o=a.getBoundingClientRect(),s=r.width/2-i.width/2,l=o.left-(i.left-s),u=i.right+s-o.right;l>0?n.style.left="".concat(-s+l,"px"):u>0?n.style.left="".concat(-s-u,"px"):n.style.left="".concat(-s,"px")}},{key:"emit",value:function(){return(0,r._)(function(){var e,t,n,a;return(0,c._)(this,function(i){switch(i.label){case 0:if(!(t=(e=this.template.$input).value.trim()).length||this.isLock||this.emitting)return[2];n={text:t,mode:this.option.mode,color:this.option.color,time:this.art.currentTime},i.label=1;case 1:return i.trys.push([1,3,,4]),this.emitting=!0,[4,this.option.beforeEmit(n)];case 2:if(a=i.sent(),this.emitting=!1,!0!==a)return[2];return n.border=!0,delete n.time,this.danmuku.emit(n),e.value="",this.lock(),[3,4];case 3:return console.error("Error emitting danmuku:",i.sent()),this.emitting=!1,[3,4];case 4:return[2]}})}).call(this)}},{key:"lock",value:function(){var e=this,t=this.utils.addClass,n=this.template.$send;this.isLock=!0;var a=this.option.lockTime;n.textContent=a,t(n,"apd-lock");var i=function(){e.timer=setTimeout(function(){0===a?e.unlock():(n.textContent=a-=1,i())},1e3)};i()}},{key:"unlock",value:function(){var e=this.utils.removeClass,t=this.template.$send;clearTimeout(this.timer),this.isLock=!1,t.textContent="发送",e(t,"apd-lock")}},{key:"resize",value:function(){if(!this.outside&&!this.art.fullscreen&&!this.art.fullscreenWeb){var e=this.art.template,t=e.$player,n=e.$controlsCenter,a=this.template.$danmuku;this.art.widthtypeof document){var L="artplayer-plugin-danmuku",V=document.getElementById(L);V||((V=document.createElement("style")).id=L,"loading"===document.readyState?document.addEventListener("DOMContentLoaded",function(){document.head.appendChild(V)}):(document.head||document.documentElement).appendChild(V)),V.textContent=F.default}},{"@swc/helpers/cjs/_async_to_generator.cjs":"cZn0e","@swc/helpers/cjs/_class_call_check.cjs":"4Uf9M","@swc/helpers/cjs/_create_class.cjs":"igUuK","@swc/helpers/cjs/_object_spread.cjs":"kyoEj","@swc/helpers/cjs/_object_spread_props.cjs":"3G1wX","@swc/helpers/cjs/_to_consumable_array.cjs":"i81N6","@swc/helpers/cjs/_ts_generator.cjs":"eltGh","bundle-text:./img/check_off.svg":"3Kuo7","bundle-text:./img/check_on.svg":"lVPfB","bundle-text:./img/config.svg":"a75dO","bundle-text:./img/mode_0_off.svg":"e5Ndj","bundle-text:./img/mode_0_on.svg":"fgakY","bundle-text:./img/mode_1_off.svg":"1rW7G","bundle-text:./img/mode_1_on.svg":"86V1z","bundle-text:./img/mode_2_off.svg":"8rkmQ","bundle-text:./img/mode_2_on.svg":"bGZsR","bundle-text:./img/off.svg":"iO9LX","bundle-text:./img/on.svg":"abS9U","bundle-text:./img/style.svg":"g7T0K","bundle-text:./style.less":"d3e2n","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],"3Kuo7":[function(e,t,n,a){t.exports=''},{}],lVPfB:[function(e,t,n,a){t.exports=''},{}],a75dO:[function(e,t,n,a){t.exports=''},{}],e5Ndj:[function(e,t,n,a){t.exports=''},{}],fgakY:[function(e,t,n,a){t.exports=''},{}],"1rW7G":[function(e,t,n,a){t.exports=''},{}],"86V1z":[function(e,t,n,a){t.exports=''},{}],"8rkmQ":[function(e,t,n,a){t.exports=''},{}],bGZsR:[function(e,t,n,a){t.exports=''},{}],iO9LX:[function(e,t,n,a){t.exports=''},{}],abS9U:[function(e,t,n,a){t.exports=''},{}],g7T0K:[function(e,t,n,a){t.exports=''},{}],d3e2n:[function(e,t,n,a){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{opacity:0;pointer-events:none;width:320px;padding:10px;position:absolute;bottom:24px;left:0}.artplayer-plugin-danmuku .apd-config .apd-config-panel .apd-config-panel-inner{background-color:rgba(0,0,0,.85);border-radius:3px;width:100%;padding:10px}.artplayer-plugin-danmuku .apd-config:hover .apd-config-panel{opacity:100;pointer-events:all}.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:rgba(255,255,255,.25);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;top:0;bottom:0;left:0;right:0}.artplayer-plugin-danmuku .apd-slider .apd-slider-points .apd-slider-point{background-color:rgba(255,255,255,.5);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:rgba(255,255,255,.25);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{opacity:0;pointer-events:none;width:200px;padding:10px;position:absolute;bottom:24px;left:0}.artplayer-plugin-danmuku .apd-style .apd-style-panel .apd-style-panel-inner{background-color:rgba(0,0,0,.85);border-radius:3px;width:100%;padding:10px}.artplayer-plugin-danmuku .apd-style:hover .apd-style-panel{opacity:100;pointer-events:all}.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:transparent;border:none;outline:none;flex:1;width:auto;min-width:0;height:100%;line-height:1}.artplayer-plugin-danmuku .apd-input::placeholder{color:rgba(255,255,255,.5)}.artplayer-plugin-danmuku .apd-input::placeholder{color:rgba(255,255,255,.5)}.artplayer-plugin-danmuku .apd-send{cursor:pointer;width:60px;height:100%;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;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}.art-video-player>.artplayer-plugin-danmuku{padding:0 10px;position:absolute;bottom:-40px;left:0;right:0}.art-video-player:has(>.artplayer-plugin-danmuku){margin-bottom:40px}[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: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}'},{}]},["l3CkF"],"l3CkF","parcelRequire4dc0",{}); \ No newline at end of file diff --git a/packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.mjs b/packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.mjs index 3a32c9160..78b590330 100644 --- a/packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.mjs +++ b/packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.mjs @@ -5,4 +5,4 @@ * (c) 2017-2026 Harvey Zhao * Released under the MIT License. */ -!function(e,t,i,a,o){var n="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},s="function"==typeof n[a]&&n[a],r=s.i||{},l=s.cache||{},d="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function p(t,i){if(!l[t]){if(!e[t]){if(o[t])return o[t];var r="function"==typeof n[a]&&n[a];if(!i&&r)return r(t,!0);if(s)return s(t,!0);if(d&&"string"==typeof t)return d(t);var u=Error("Cannot find module '"+t+"'");throw u.code="MODULE_NOT_FOUND",u}m.resolve=function(i){var a=e[t][1][i];return null!=a?a:i},m.cache={};var h=l[t]=new p.Module(t);e[t][0].call(h.exports,m,h,h.exports,n)}return l[t].exports;function m(e){var t=m.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var i={__esModule:!0};return t.forEach(function(e){var t=e[0],a=e[1],o=e[2]||e[0],n=p(a);"*"===t?Object.keys(n).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(i,e)||Object.defineProperty(i,e,{enumerable:!0,get:function(){return n[e]}})}):"*"===o?Object.defineProperty(i,t,{enumerable:!0,value:n}):Object.defineProperty(i,t,{enumerable:!0,get:function(){return"default"===o?n.__esModule?n.default:n:n[o]}})}),i}return p(t)}}p.isParcelRequire=!0,p.Module=function(e){this.id=e,this.bundle=p,this.require=d,this.exports={}},p.modules=e,p.cache=l,p.parent=s,p.distDir=void 0,p.publicUrl=void 0,p.devServer=void 0,p.i=r,p.register=function(t,i){e[t]=[function(e,t){t.exports=i},{}]},Object.defineProperty(p,"root",{get:function(){return n[a]}}),n[a]=p;for(var u=0;utypeof module?module.exports=h:"function"==typeof define&&define.amd&&define(function(){return h})}}({"7ICE7":[function(e,t,i,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(i),o.export(i,"default",()=>u);var n=e("./danmuku"),s=o.interopDefault(n),r=e("./heatmap"),l=o.interopDefault(r),d=e("./setting"),p=o.interopDefault(d);function u(e){return t=>{let i=new(0,s.default)(t,e),a=new(0,p.default)(t,i);return i.option.heatmap&&(0,l.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}}}}u.icons=p.default.icons,"u">typeof window&&(window.artplayerPluginDanmuku=u)},{"./danmuku":"9bpce","./heatmap":"9KNY2","./setting":"94xSe","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],"9bpce":[function(e,t,i,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(i);var n=e("bundle-text:./worker"),s=o.interopDefault(n),r=e("./bilibili");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.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,!0);let o=new Blob([s.default.replace("export{e as default};","")],{type:"application/javascript"});this.worker=new Worker(URL.createObjectURL(o)),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,width:512,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",width:"number",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*(Number.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*(Number.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?Math.round(e(i,12,t)):"string"==typeof i&&i.endsWith("%")?Math.round(e(t*(Number.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.dataset.id="",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 o=a.$ref.offsetTop,n=this.getLeft(a.$ref)-i,s=a.$ref.clientHeight,r=a.$ref.clientWidth,l=n+r,d=l/a.$restTime,p={};p.top=o,p.left=n,p.height=s,p.width=r,p.right=t-l,p.speed=d,p.distance=l,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(e){let{errorHandle:t}=this.utils,i=[],a=e||this.option.danmuku;try{"function"==typeof a?i=await a():a instanceof Promise?i=await a:"string"==typeof a?i=await (0,r.bilibiliDanmuParseFromUrl)(a):Array.isArray(a)&&(i=a),t(Array.isArray(i),"Danmuku need return an array as result"),void 0===e&&(this.reset(),this.queue=[],this.states={wait:[],ready:[],emit:[],stop:[]},this.$refs=[],this.$danmuku.textContent="");for(let e=0;eJSON.stringify(this.option[t])!==JSON.stringify(e[t]))||t)&&(this.option=Object.assign({},l.option,this.option,e),this.validator(this.option,l.scheme),this.option.mode=i(this.option.mode,0,2),this.option.speed=i(this.option.speed,1,10),this.option.opacity=i(this.option.opacity,0,1),this.option.lockTime=i(this.option.lockTime,1,60),this.option.maxLength=i(this.option.maxLength,1,1e3),this.option.mount=this.option.mount||a,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},{"bundle-text:./worker":"eStRD","./bilibili":"f9FoX","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],eStRD:[function(e,t,i,a){t.exports='!function(e,t,r,o,i){var n="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},u="function"==typeof n[o]&&n[o],l=u.i||{},f=u.cache||{},p="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function s(t,r){if(!f[t]){if(!e[t]){if(i[t])return i[t];var l="function"==typeof n[o]&&n[o];if(!r&&l)return l(t,!0);if(u)return u(t,!0);if(p&&"string"==typeof t)return p(t);var d=Error("Cannot find module \'"+t+"\'");throw d.code="MODULE_NOT_FOUND",d}h.resolve=function(r){var o=e[t][1][r];return null!=o?o:r},h.cache={};var a=f[t]=new s.Module(t);e[t][0].call(a.exports,h,a,a.exports,n)}return f[t].exports;function h(e){var t=h.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var r={__esModule:!0};return t.forEach(function(e){var t=e[0],o=e[1],i=e[2]||e[0],n=s(o);"*"===t?Object.keys(n).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(r,e)||Object.defineProperty(r,e,{enumerable:!0,get:function(){return n[e]}})}):"*"===i?Object.defineProperty(r,t,{enumerable:!0,value:n}):Object.defineProperty(r,t,{enumerable:!0,get:function(){return"default"===i?n.__esModule?n.default:n:n[i]}})}),r}return s(t)}}s.isParcelRequire=!0,s.Module=function(e){this.id=e,this.bundle=s,this.require=p,this.exports={}},s.modules=e,s.cache=f,s.parent=u,s.distDir=void 0,s.publicUrl=void 0,s.devServer=void 0,s.i=l,s.register=function(t,r){e[t]=[function(e,t){t.exports=r},{}]},Object.defineProperty(s,"root",{get:function(){return n[o]}}),n[o]=s;for(var d=0;dtypeof module?module.exports=a:"function"==typeof define&&define.amd&&define(function(){return a})}}({b8YFA:[function(e,t,r,o){function i({target:e,visibles:t,clientWidth:r,clientHeight:o,marginBottom:n,marginTop:u,antiOverlap:l}){let f=o-n,p=t.filter(t=>t.mode===e.mode&&t.top<=f).sort((e,t)=>e.top-t.top);if(0===p.length)if(2===e.mode)return f-e.height;else return u;if(p.unshift({type:"top",top:0,left:0,right:0,height:u,width:r,speed:0,distance:r}),p.push({type:"bottom",top:f,left:0,right:0,height:n,width:r,speed:0,distance:r}),2===e.mode)for(let t=p.length-2;t>=0;t-=1){let r=p[t],o=p[t+1],i=r.top+r.height;if(o.top-i>=e.height)return o.top-e.height}else for(let t=1;t=e.height)return i}let s=[];for(let e=1;et.every(t=>!(rt.time))));return t&&t[0]?t[0].top:void 0}case 1:case 2:return}else{switch(e.mode){case 0:s.sort((e,t)=>{let r=Math.min(...t.map(e=>e.right)),o=Math.min(...e.map(e=>e.right));return r*t.length-o*e.length});break;case 1:case 2:s.sort((e,t)=>{let r=Math.max(...t.map(e=>e.width));return Math.max(...e.map(e=>e.width))*e.length-r*t.length})}return s[0][0].top}}onmessage=e=>{let{data:t}=e;t.id&&t.type&&globalThis.postMessage({result:(0,({getDanmuTop:i})[t.type])(t),id:t.id})}},{}]},["b8YFA"],"b8YFA","parcelRequire4dc0",{});let{"*":e}=parcelRequire4dc0("b8YFA");export{e as default};'},{}],f9FoX:[function(e,t,i,a){var o=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 s(e){return"string"!=typeof e?[]:Array.from(e.matchAll(/]*?p="(?

[^"]+)"[^>]*>(?.*?)<\/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)}function r({data:e}){let{xml:t,id:i}=e;i&&t&&globalThis.postMessage({danmus:s(t),id:i})}function l(e){return new Promise(async t=>{let i=await fetch(e),a=await i.text();try{let e,i=(e=new Blob([` ${n.toString()} ${s.toString()} onmessage = ${r.toString()} `],{type:"application/javascript"}),new Worker(URL.createObjectURL(e)));i.onmessage=e=>{let{danmus:a,id:o}=e.data;o&&a&&(t(a),i.terminate())},i.postMessage({xml:a,id:Date.now()})}catch(e){console.error("Error parsing Bilibili Danmu:",e),t(s(a))}})}o.defineInteropFlag(i),o.export(i,"bilibiliDanmuParseFromUrl",()=>l)},{"@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],loqXi:[function(e,t,i,a){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})}},{}],"9KNY2":[function(e,t,i,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(i),o.export(i,"default",()=>s);let n={map:(e,t,i,a,o)=>(e-t)*(o-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)}};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(o){let s=null,r=null;function l(d=[]){if(s=null,r=null,o.innerHTML="",!e.duration||e.option.isLive)return;let p={w:o.offsetWidth,h:o.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.queue.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]),y=(Math.min(...g)+Math.max(...g))/2;for(let e=0;ey?1+u.scale:1-u.scale)+u.minHeight}let v=(e,t,i,a)=>{let o,s,r=t||e,l=i||e,d=(o=l[0]-r[0],{length:Math.sqrt(o**2+(s=l[1]-r[1])**2),angle:Math.atan2(s,o)}),p=n.map(Math.cos(d.angle)*u.flattening,0,1,1,0),h=d.angle*p+(a?Math.PI:0),m=d.length*u.smoothing;return[e[0]+Math.cos(h)*m,e[1]+Math.sin(h)*m]},x=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)=>{let o,n,s;return 0===i?`M ${a[a.length-1][0]},${p.h} L ${t[0]},${p.h} L ${t[0]},${t[1]}`:`${e} ${o=v(a[i-1],a[i-2],t),n=v(t,a[i-1],a[i+1],!0),s=i===a.length-1?" z":"",`C ${o[0]},${o[1]} ${n[0]},${n[1]} ${t[0]},${t[1]}${s}`}`},"");o.innerHTML=``,s=a("#heatmap-start",o),r=a("#heatmap-stop",o),s.setAttribute("offset",`${100*e.played}%`),r.setAttribute("offset",`${100*e.played}%`)}e.on("video:timeupdate",()=>{s&&r&&(s.setAttribute("offset",`${100*e.played}%`),r.setAttribute("offset",`${100*e.played}%`))}),e.on("setBar",(e,t)=>{s&&r&&"played"===e&&(s.setAttribute("offset",`${100*t}%`),r.setAttribute("offset",`${100*t}%`))}),e.on("ready",()=>l()),e.on("resize",()=>l()),e.on("artplayerPluginDanmuku:loaded",()=>l()),e.on("artplayerPluginDanmuku:points",e=>l(e))}})}},{"@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],"94xSe":[function(e,t,i,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(i);var n=e("bundle-text:./img/check_off.svg"),s=o.interopDefault(n),r=e("bundle-text:./img/check_on.svg"),l=o.interopDefault(r),d=e("bundle-text:./img/config.svg"),p=o.interopDefault(d),u=e("bundle-text:./img/mode_0_off.svg"),h=o.interopDefault(u),m=e("bundle-text:./img/mode_0_on.svg"),c=o.interopDefault(m),f=e("bundle-text:./img/mode_1_off.svg"),g=o.interopDefault(f),y=e("bundle-text:./img/mode_1_on.svg"),v=o.interopDefault(y),x=e("bundle-text:./img/mode_2_off.svg"),b=o.interopDefault(x),k=e("bundle-text:./img/mode_2_on.svg"),$=o.interopDefault(k),w=e("bundle-text:./img/off.svg"),M=o.interopDefault(w),D=e("bundle-text:./img/on.svg"),S=o.interopDefault(D),E=e("bundle-text:./img/style.svg"),O=o.interopDefault(E),A=e("bundle-text:./style.less"),q=o.interopDefault(A);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,$config:null,$configPanel:null,$configModes:null,$style:null,$stylePanel: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("resize",()=>this.resize()),e.on("fullscreen",e=>this.onFullscreen(e)),e.on("fullscreenWeb",e=>this.onFullscreen(e)),e.proxy(this.template.$config,"mouseenter",()=>{this.onMouseEnter({$control:this.template.$config,$panel:this.template.$configPanel})}),e.proxy(this.template.$style,"mouseenter",()=>{this.onMouseEnter({$control:this.template.$style,$panel:this.template.$stylePanel})})}static get icons(){return{$on:S.default,$off:M.default,$config:p.default,$style:O.default,$mode_0_off:h.default,$mode_0_on:c.default,$mode_1_off:g.default,$mode_1_on:v.default,$mode_2_off:b.default,$mode_2_on:$.default,$check_on:l.default,$check_off:s.default}}get option(){return this.danmuku.option}get outside(){return this.template.$mount!==this.template.$controlsCenter}get TEMPLATE(){let{option:e}=this;return`

${S.default}${M.default}
${p.default}
\u{6309}\u{7C7B}\u{578B}\u{5C4F}\u{853D}
${h.default}${c.default}
\u{6EDA}\u{52A8}
${g.default}${v.default}
\u{9876}\u{90E8}
${b.default}${$.default}
\u{5E95}\u{90E8}
${l.default}${s.default} \u{9632}\u{6B62}\u{5F39}\u{5E55}\u{91CD}\u{53E0}
${l.default}${s.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}
${O.default}
\u{6A21}\u{5F0F}
${c.default}
\u{6EDA}\u{52A8}
${v.default}
\u{9876}\u{90E8}
${$.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)}append(e,t){let{append:i}=this.utils;[...e.children].includes(t)||i(e,t)}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.$config=this.query(".apd-config"),this.template.$configPanel=this.query(".apd-config-panel"),this.template.$configModes=this.query(".apd-config-mode .apd-modes"),this.template.$style=this.query(".apd-style"),this.template.$stylePanel=this.query(".apd-style-panel"),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:o,$syncVideo:n,$send:s,$input:r}=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(o,"click",()=>{this.danmuku.config({antiOverlap:!this.option.antiOverlap}),this.reset()}),this.art.proxy(n,"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(r,"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:()=>this.danmuku.fontSize,onChange:e=>{let{$fontSizeValue:t}=this.template;t.textContent=`${e}px`,e!==this.danmuku.fontSize&&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:o,steps:n=[]}){let{query:s,clamp:r,setStyle:l}=this.utils;l(i,"touch-action","none"),i.innerHTML=`
${n.map(()=>'
').join("")}
${n.map(e=>e.hide?"":`
${e.name}
`).join("")}
`;let d=s(".apd-slider-dot",i),p=s(".apd-slider-progress",i),u=!1;function h(i=a()){if(it)return;let s=(i-e)/(t-e);d.style.left=`${100*s}%`,0===n.length&&(p.style.width=d.style.left),o(i)}function m(a){let{top:o,height:n,left:s,width:l}=i.getBoundingClientRect();this.art.isRotate?h(Math.round(r(a.clientY-o,0,n)/n*(t-e)+e)):h(Math.round(r(a.clientX-s,0,l)/l*(t-e)+e))}return this.art.proxy(i,"click",e=>{m.call(this,e)}),this.art.proxy(i,"pointerdown",e=>{u=0===e.button}),this.art.on("document:pointermove",e=>{u&&m.call(this,e)}),this.art.on("document:pointerup",e=>{u&&(u=!1,m.call(this,e))}),{reset:h}}onFullscreen(e){let{$danmuku:t,$controlsCenter:i,$mount:a}=this.template;this.outside?e?this.append(i,t):this.append(a,t):this.append(i,t)}onMouseEnter({$control:e,$panel:t}){let{$player:i}=this.art.template,a=e.getBoundingClientRect(),o=t.getBoundingClientRect(),n=i.getBoundingClientRect(),s=o.width/2-a.width/2,r=n.left-(a.left-s),l=a.right+s-n.right;r>0?t.style.left=`${-s+r}px`:l>0?t.style.left=`${-s-l}px`:t.style.left=`${-s}px`}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){console.error("Error emitting danmuku:",e),this.emitting=!1}}lock(){let{addClass:e}=this.utils,{$send:t}=this.template;this.isLock=!0;let i=this.option.lockTime;t.textContent=i,e(t,"apd-lock");let a=()=>{this.timer=setTimeout(()=>{0===i?this.unlock():(t.textContent=i-=1,a())},1e3)};a()}unlock(){let{removeClass:e}=this.utils,{$send:t}=this.template;clearTimeout(this.timer),this.isLock=!1,t.textContent="发送",e(t,"apd-lock")}resize(){if(this.outside||this.art.fullscreen||this.art.fullscreenWeb)return;let{$player:e,$controlsCenter:t}=this.art.template,{$danmuku:i}=this.template;this.art.widthe.dataset.color===this.option.color.toUpperCase());o&&e(o,"apd-active"),t(i,this.option.visible?"关闭弹幕":"打开弹幕"),this.resize()}mount(e){let{errorHandle:t}=this.utils,i="string"==typeof e?document.querySelector(e):e;t(i,`Can not find the mount point: ${e}`),this.append(i,this.template.$danmuku),this.template.$mount=i,this.reset()}},"u">typeof document){let e="artplayer-plugin-danmuku",t=document.getElementById(e);t||((t=document.createElement("style")).id=e,"loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>{document.head.appendChild(t)}):(document.head||document.documentElement).appendChild(t)),t.textContent=q.default}},{"bundle-text:./img/check_off.svg":"im46l","bundle-text:./img/check_on.svg":"ltwtZ","bundle-text:./img/config.svg":"8OIDW","bundle-text:./img/mode_0_off.svg":"5p0NW","bundle-text:./img/mode_0_on.svg":"6UO2K","bundle-text:./img/mode_1_off.svg":"3NEwu","bundle-text:./img/mode_1_on.svg":"i22mQ","bundle-text:./img/mode_2_off.svg":"61WC2","bundle-text:./img/mode_2_on.svg":"aE6Hl","bundle-text:./img/off.svg":"jKHHh","bundle-text:./img/on.svg":"iryDR","bundle-text:./img/style.svg":"4Oibx","bundle-text:./style.less":"bjrFj","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],im46l:[function(e,t,i,a){t.exports=''},{}],ltwtZ:[function(e,t,i,a){t.exports=''},{}],"8OIDW":[function(e,t,i,a){t.exports=''},{}],"5p0NW":[function(e,t,i,a){t.exports=''},{}],"6UO2K":[function(e,t,i,a){t.exports=''},{}],"3NEwu":[function(e,t,i,a){t.exports=''},{}],i22mQ:[function(e,t,i,a){t.exports=''},{}],"61WC2":[function(e,t,i,a){t.exports=''},{}],aE6Hl:[function(e,t,i,a){t.exports=''},{}],jKHHh:[function(e,t,i,a){t.exports=''},{}],iryDR:[function(e,t,i,a){t.exports=''},{}],"4Oibx":[function(e,t,i,a){t.exports=''},{}],bjrFj:[function(e,t,i,a){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{opacity:0;pointer-events:none;width:320px;padding:10px;position:absolute;bottom:24px;left:0}.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{opacity:100;pointer-events:all}.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{opacity:0;pointer-events:none;width:200px;padding:10px;position:absolute;bottom:24px;left:0}.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{opacity:100;pointer-events:all}.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;width:60px;height:100%;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;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}.art-video-player>.artplayer-plugin-danmuku{padding:0 10px;position:absolute;bottom:-40px;left:0;right:0}.art-video-player:has(>.artplayer-plugin-danmuku){margin-bottom:40px}[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}'},{}]},["7ICE7"],"7ICE7","parcelRequire4dc0",{});let{default:e}=parcelRequire4dc0("7ICE7");export{e as default}; \ No newline at end of file +!function(e,t,i,a,o,n,s,r){var l="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},d="function"==typeof l[a]&&l[a],p=d.i||{},u=d.cache||{},h="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function m(t,i){if(!u[t]){if(!e[t]){if(o[t])return o[t];var n="function"==typeof l[a]&&l[a];if(!i&&n)return n(t,!0);if(d)return d(t,!0);if(h&&"string"==typeof t)return h(t);var s=Error("Cannot find module '"+t+"'");throw s.code="MODULE_NOT_FOUND",s}p.resolve=function(i){var a=e[t][1][i];return null!=a?a:i},p.cache={};var r=u[t]=new m.Module(t);e[t][0].call(r.exports,p,r,r.exports,l)}return u[t].exports;function p(e){var t=p.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var i={__esModule:!0};return t.forEach(function(e){var t=e[0],a=e[1],o=e[2]||e[0],n=m(a);"*"===t?Object.keys(n).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(i,e)||Object.defineProperty(i,e,{enumerable:!0,get:function(){return n[e]}})}):"*"===o?Object.defineProperty(i,t,{enumerable:!0,value:n}):Object.defineProperty(i,t,{enumerable:!0,get:function(){return"default"===o?n.__esModule?n.default:n:n[o]}})}),i}return m(t)}}m.isParcelRequire=!0,m.Module=function(e){this.id=e,this.bundle=m,this.require=h,this.exports={}},m.modules=e,m.cache=u,m.parent=d,m.distDir=void 0,m.publicUrl=void 0,m.devServer=void 0,m.i=p,m.register=function(t,i){e[t]=[function(e,t){t.exports=i},{}]},Object.defineProperty(m,"root",{get:function(){return l[a]}}),l[a]=m;for(var c=0;ctypeof module?module.exports=f:"function"==typeof define&&define.amd&&define(function(){return f})}}({"7ICE7":[function(e,t,i,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(i),o.export(i,"default",()=>u);var n=e("./danmuku"),s=o.interopDefault(n),r=e("./heatmap"),l=o.interopDefault(r),d=e("./setting"),p=o.interopDefault(d);function u(e){return t=>{let i=new(0,s.default)(t,e),a=new(0,p.default)(t,i);return i.option.heatmap&&(0,l.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}}}}u.icons=p.default.icons,"u">typeof window&&(window.artplayerPluginDanmuku=u)},{"./danmuku":"9bpce","./heatmap":"9KNY2","./setting":"94xSe","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],"9bpce":[function(e,t,i,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(i);var n=e("bundle-text:./worker"),s=o.interopDefault(n),r=e("./bilibili");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.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,!0);let o=new Blob([s.default.replace("export{e as default};","")],{type:"application/javascript"});this.worker=new Worker(URL.createObjectURL(o)),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,width:512,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",width:"number",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*(Number.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*(Number.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?Math.round(e(i,12,t)):"string"==typeof i&&i.endsWith("%")?Math.round(e(t*(Number.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.dataset.id="",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 o=a.$ref.offsetTop,n=this.getLeft(a.$ref)-i,s=a.$ref.clientHeight,r=a.$ref.clientWidth,l=n+r,d=l/a.$restTime,p={};p.top=o,p.left=n,p.height=s,p.width=r,p.right=t-l,p.speed=d,p.distance=l,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(e){let{errorHandle:t}=this.utils,i=[],a=e||this.option.danmuku;try{"function"==typeof a?i=await a():a instanceof Promise?i=await a:"string"==typeof a?i=await (0,r.bilibiliDanmuParseFromUrl)(a):Array.isArray(a)&&(i=a),t(Array.isArray(i),"Danmuku need return an array as result"),void 0===e&&(this.reset(),this.queue=[],this.states={wait:[],ready:[],emit:[],stop:[]},this.$refs=[],this.$danmuku.textContent="");for(let e=0;eJSON.stringify(this.option[t])!==JSON.stringify(e[t]))||t)&&(this.option=Object.assign({},l.option,this.option,e),this.validator(this.option,l.scheme),this.option.mode=i(this.option.mode,0,2),this.option.speed=i(this.option.speed,1,10),this.option.opacity=i(this.option.opacity,0,1),this.option.lockTime=i(this.option.lockTime,1,60),this.option.maxLength=i(this.option.maxLength,1,1e3),this.option.mount=this.option.mount||a,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},{"bundle-text:./worker":"eStRD","./bilibili":"f9FoX","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],eStRD:[function(e,t,i,a){t.exports='!function(e,t,r,o,i,n,u,l){var f="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},p="function"==typeof f[o]&&f[o],s=p.i||{},d=p.cache||{},a="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function h(t,r){if(!d[t]){if(!e[t]){if(i[t])return i[t];var n="function"==typeof f[o]&&f[o];if(!r&&n)return n(t,!0);if(p)return p(t,!0);if(a&&"string"==typeof t)return a(t);var u=Error("Cannot find module \'"+t+"\'");throw u.code="MODULE_NOT_FOUND",u}s.resolve=function(r){var o=e[t][1][r];return null!=o?o:r},s.cache={};var l=d[t]=new h.Module(t);e[t][0].call(l.exports,s,l,l.exports,f)}return d[t].exports;function s(e){var t=s.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var r={__esModule:!0};return t.forEach(function(e){var t=e[0],o=e[1],i=e[2]||e[0],n=h(o);"*"===t?Object.keys(n).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(r,e)||Object.defineProperty(r,e,{enumerable:!0,get:function(){return n[e]}})}):"*"===i?Object.defineProperty(r,t,{enumerable:!0,value:n}):Object.defineProperty(r,t,{enumerable:!0,get:function(){return"default"===i?n.__esModule?n.default:n:n[i]}})}),r}return h(t)}}h.isParcelRequire=!0,h.Module=function(e){this.id=e,this.bundle=h,this.require=a,this.exports={}},h.modules=e,h.cache=d,h.parent=p,h.distDir=void 0,h.publicUrl=void 0,h.devServer=void 0,h.i=s,h.register=function(t,r){e[t]=[function(e,t){t.exports=r},{}]},Object.defineProperty(h,"root",{get:function(){return f[o]}}),f[o]=h;for(var c=0;ctypeof module?module.exports=g:"function"==typeof define&&define.amd&&define(function(){return g})}}({b8YFA:[function(e,t,r,o){function i({target:e,visibles:t,clientWidth:r,clientHeight:o,marginBottom:i,marginTop:n,antiOverlap:u}){let l=o-i,f=t.filter(t=>t.mode===e.mode&&t.top<=l).sort((e,t)=>e.top-t.top);if(0===f.length)if(2===e.mode)return l-e.height;else return n;if(f.unshift({type:"top",top:0,left:0,right:0,height:n,width:r,speed:0,distance:r}),f.push({type:"bottom",top:l,left:0,right:0,height:i,width:r,speed:0,distance:r}),2===e.mode)for(let t=f.length-2;t>=0;t-=1){let r=f[t],o=f[t+1],i=r.top+r.height;if(o.top-i>=e.height)return o.top-e.height}else for(let t=1;t=e.height)return i}let p=[];for(let e=1;et.every(t=>!(rt.time))));return t&&t[0]?t[0].top:void 0}case 1:case 2:return}else{switch(e.mode){case 0:p.sort((e,t)=>{let r=Math.min(...t.map(e=>e.right)),o=Math.min(...e.map(e=>e.right));return r*t.length-o*e.length});break;case 1:case 2:p.sort((e,t)=>{let r=Math.max(...t.map(e=>e.width));return Math.max(...e.map(e=>e.width))*e.length-r*t.length})}return p[0][0].top}}onmessage=e=>{let{data:t}=e;t.id&&t.type&&globalThis.postMessage({result:(0,({getDanmuTop:i})[t.type])(t),id:t.id})}},{}]},["b8YFA"],"b8YFA","parcelRequire4dc0",{});let{"*":e}=parcelRequire4dc0("b8YFA");export{e as default};'},{}],f9FoX:[function(e,t,i,a){var o=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 s(e){return"string"!=typeof e?[]:Array.from(e.matchAll(/]*?p="(?

[^"]+)"[^>]*>(?.*?)<\/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)}function r({data:e}){let{xml:t,id:i}=e;i&&t&&globalThis.postMessage({danmus:s(t),id:i})}function l(e){return new Promise(async t=>{let i=await fetch(e),a=await i.text();try{let e,i=(e=new Blob([` ${n.toString()} ${s.toString()} onmessage = ${r.toString()} `],{type:"application/javascript"}),new Worker(URL.createObjectURL(e)));i.onmessage=e=>{let{danmus:a,id:o}=e.data;o&&a&&(t(a),i.terminate())},i.postMessage({xml:a,id:Date.now()})}catch(e){console.error("Error parsing Bilibili Danmu:",e),t(s(a))}})}o.defineInteropFlag(i),o.export(i,"bilibiliDanmuParseFromUrl",()=>l)},{"@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],loqXi:[function(e,t,i,a){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})}},{}],"9KNY2":[function(e,t,i,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(i),o.export(i,"default",()=>s);let n={map:(e,t,i,a,o)=>(e-t)*(o-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)}};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(o){let s=null,r=null;function l(d=[]){if(s=null,r=null,o.innerHTML="",!e.duration||e.option.isLive)return;let p={w:o.offsetWidth,h:o.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.queue.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]),y=(Math.min(...g)+Math.max(...g))/2;for(let e=0;ey?1+u.scale:1-u.scale)+u.minHeight}let v=(e,t,i,a)=>{let o,s,r=t||e,l=i||e,d=(o=l[0]-r[0],{length:Math.sqrt(o**2+(s=l[1]-r[1])**2),angle:Math.atan2(s,o)}),p=n.map(Math.cos(d.angle)*u.flattening,0,1,1,0),h=d.angle*p+(a?Math.PI:0),m=d.length*u.smoothing;return[e[0]+Math.cos(h)*m,e[1]+Math.sin(h)*m]},x=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)=>{let o,n,s;return 0===i?`M ${a[a.length-1][0]},${p.h} L ${t[0]},${p.h} L ${t[0]},${t[1]}`:`${e} ${o=v(a[i-1],a[i-2],t),n=v(t,a[i-1],a[i+1],!0),s=i===a.length-1?" z":"",`C ${o[0]},${o[1]} ${n[0]},${n[1]} ${t[0]},${t[1]}${s}`}`},"");o.innerHTML=``,s=a("#heatmap-start",o),r=a("#heatmap-stop",o),s.setAttribute("offset",`${100*e.played}%`),r.setAttribute("offset",`${100*e.played}%`)}e.on("video:timeupdate",()=>{s&&r&&(s.setAttribute("offset",`${100*e.played}%`),r.setAttribute("offset",`${100*e.played}%`))}),e.on("setBar",(e,t)=>{s&&r&&"played"===e&&(s.setAttribute("offset",`${100*t}%`),r.setAttribute("offset",`${100*t}%`))}),e.on("ready",()=>l()),e.on("resize",()=>l()),e.on("artplayerPluginDanmuku:loaded",()=>l()),e.on("artplayerPluginDanmuku:points",e=>l(e))}})}},{"@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],"94xSe":[function(e,t,i,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(i);var n=e("bundle-text:./img/check_off.svg"),s=o.interopDefault(n),r=e("bundle-text:./img/check_on.svg"),l=o.interopDefault(r),d=e("bundle-text:./img/config.svg"),p=o.interopDefault(d),u=e("bundle-text:./img/mode_0_off.svg"),h=o.interopDefault(u),m=e("bundle-text:./img/mode_0_on.svg"),c=o.interopDefault(m),f=e("bundle-text:./img/mode_1_off.svg"),g=o.interopDefault(f),y=e("bundle-text:./img/mode_1_on.svg"),v=o.interopDefault(y),x=e("bundle-text:./img/mode_2_off.svg"),b=o.interopDefault(x),k=e("bundle-text:./img/mode_2_on.svg"),$=o.interopDefault(k),w=e("bundle-text:./img/off.svg"),M=o.interopDefault(w),D=e("bundle-text:./img/on.svg"),S=o.interopDefault(D),E=e("bundle-text:./img/style.svg"),O=o.interopDefault(E),A=e("bundle-text:./style.less"),q=o.interopDefault(A);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,$config:null,$configPanel:null,$configModes:null,$style:null,$stylePanel: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("resize",()=>this.resize()),e.on("fullscreen",e=>this.onFullscreen(e)),e.on("fullscreenWeb",e=>this.onFullscreen(e)),e.proxy(this.template.$config,"mouseenter",()=>{this.onMouseEnter({$control:this.template.$config,$panel:this.template.$configPanel})}),e.proxy(this.template.$style,"mouseenter",()=>{this.onMouseEnter({$control:this.template.$style,$panel:this.template.$stylePanel})})}static get icons(){return{$on:S.default,$off:M.default,$config:p.default,$style:O.default,$mode_0_off:h.default,$mode_0_on:c.default,$mode_1_off:g.default,$mode_1_on:v.default,$mode_2_off:b.default,$mode_2_on:$.default,$check_on:l.default,$check_off:s.default}}get option(){return this.danmuku.option}get outside(){return this.template.$mount!==this.template.$controlsCenter}get TEMPLATE(){let{option:e}=this;return`

${S.default}${M.default}
${p.default}
\u{6309}\u{7C7B}\u{578B}\u{5C4F}\u{853D}
${h.default}${c.default}
\u{6EDA}\u{52A8}
${g.default}${v.default}
\u{9876}\u{90E8}
${b.default}${$.default}
\u{5E95}\u{90E8}
${l.default}${s.default} \u{9632}\u{6B62}\u{5F39}\u{5E55}\u{91CD}\u{53E0}
${l.default}${s.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}
${O.default}
\u{6A21}\u{5F0F}
${c.default}
\u{6EDA}\u{52A8}
${v.default}
\u{9876}\u{90E8}
${$.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)}append(e,t){let{append:i}=this.utils;[...e.children].includes(t)||i(e,t)}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.$config=this.query(".apd-config"),this.template.$configPanel=this.query(".apd-config-panel"),this.template.$configModes=this.query(".apd-config-mode .apd-modes"),this.template.$style=this.query(".apd-style"),this.template.$stylePanel=this.query(".apd-style-panel"),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:o,$syncVideo:n,$send:s,$input:r}=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(o,"click",()=>{this.danmuku.config({antiOverlap:!this.option.antiOverlap}),this.reset()}),this.art.proxy(n,"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(r,"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:()=>this.danmuku.fontSize,onChange:e=>{let{$fontSizeValue:t}=this.template;t.textContent=`${e}px`,e!==this.danmuku.fontSize&&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:o,steps:n=[]}){let{query:s,clamp:r,setStyle:l}=this.utils;l(i,"touch-action","none"),i.innerHTML=`
${n.map(()=>'
').join("")}
${n.map(e=>e.hide?"":`
${e.name}
`).join("")}
`;let d=s(".apd-slider-dot",i),p=s(".apd-slider-progress",i),u=!1;function h(i=a()){if(it)return;let s=(i-e)/(t-e);d.style.left=`${100*s}%`,0===n.length&&(p.style.width=d.style.left),o(i)}function m(a){let{top:o,height:n,left:s,width:l}=i.getBoundingClientRect();this.art.isRotate?h(Math.round(r(a.clientY-o,0,n)/n*(t-e)+e)):h(Math.round(r(a.clientX-s,0,l)/l*(t-e)+e))}return this.art.proxy(i,"click",e=>{m.call(this,e)}),this.art.proxy(i,"pointerdown",e=>{u=0===e.button}),this.art.on("document:pointermove",e=>{u&&m.call(this,e)}),this.art.on("document:pointerup",e=>{u&&(u=!1,m.call(this,e))}),{reset:h}}onFullscreen(e){let{$danmuku:t,$controlsCenter:i,$mount:a}=this.template;this.outside?e?this.append(i,t):this.append(a,t):this.append(i,t)}onMouseEnter({$control:e,$panel:t}){let{$player:i}=this.art.template,a=e.getBoundingClientRect(),o=t.getBoundingClientRect(),n=i.getBoundingClientRect(),s=o.width/2-a.width/2,r=n.left-(a.left-s),l=a.right+s-n.right;r>0?t.style.left=`${-s+r}px`:l>0?t.style.left=`${-s-l}px`:t.style.left=`${-s}px`}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){console.error("Error emitting danmuku:",e),this.emitting=!1}}lock(){let{addClass:e}=this.utils,{$send:t}=this.template;this.isLock=!0;let i=this.option.lockTime;t.textContent=i,e(t,"apd-lock");let a=()=>{this.timer=setTimeout(()=>{0===i?this.unlock():(t.textContent=i-=1,a())},1e3)};a()}unlock(){let{removeClass:e}=this.utils,{$send:t}=this.template;clearTimeout(this.timer),this.isLock=!1,t.textContent="发送",e(t,"apd-lock")}resize(){if(this.outside||this.art.fullscreen||this.art.fullscreenWeb)return;let{$player:e,$controlsCenter:t}=this.art.template,{$danmuku:i}=this.template;this.art.widthe.dataset.color===this.option.color.toUpperCase());o&&e(o,"apd-active"),t(i,this.option.visible?"关闭弹幕":"打开弹幕"),this.resize()}mount(e){let{errorHandle:t}=this.utils,i="string"==typeof e?document.querySelector(e):e;t(i,`Can not find the mount point: ${e}`),this.append(i,this.template.$danmuku),this.template.$mount=i,this.reset()}},"u">typeof document){let e="artplayer-plugin-danmuku",t=document.getElementById(e);t||((t=document.createElement("style")).id=e,"loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>{document.head.appendChild(t)}):(document.head||document.documentElement).appendChild(t)),t.textContent=q.default}},{"bundle-text:./img/check_off.svg":"im46l","bundle-text:./img/check_on.svg":"ltwtZ","bundle-text:./img/config.svg":"8OIDW","bundle-text:./img/mode_0_off.svg":"5p0NW","bundle-text:./img/mode_0_on.svg":"6UO2K","bundle-text:./img/mode_1_off.svg":"3NEwu","bundle-text:./img/mode_1_on.svg":"i22mQ","bundle-text:./img/mode_2_off.svg":"61WC2","bundle-text:./img/mode_2_on.svg":"aE6Hl","bundle-text:./img/off.svg":"jKHHh","bundle-text:./img/on.svg":"iryDR","bundle-text:./img/style.svg":"4Oibx","bundle-text:./style.less":"bjrFj","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],im46l:[function(e,t,i,a){t.exports=''},{}],ltwtZ:[function(e,t,i,a){t.exports=''},{}],"8OIDW":[function(e,t,i,a){t.exports=''},{}],"5p0NW":[function(e,t,i,a){t.exports=''},{}],"6UO2K":[function(e,t,i,a){t.exports=''},{}],"3NEwu":[function(e,t,i,a){t.exports=''},{}],i22mQ:[function(e,t,i,a){t.exports=''},{}],"61WC2":[function(e,t,i,a){t.exports=''},{}],aE6Hl:[function(e,t,i,a){t.exports=''},{}],jKHHh:[function(e,t,i,a){t.exports=''},{}],iryDR:[function(e,t,i,a){t.exports=''},{}],"4Oibx":[function(e,t,i,a){t.exports=''},{}],bjrFj:[function(e,t,i,a){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{opacity:0;pointer-events:none;width:320px;padding:10px;position:absolute;bottom:24px;left:0}.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{opacity:100;pointer-events:all}.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{opacity:0;pointer-events:none;width:200px;padding:10px;position:absolute;bottom:24px;left:0}.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{opacity:100;pointer-events:all}.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;width:60px;height:100%;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;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}.art-video-player>.artplayer-plugin-danmuku{padding:0 10px;position:absolute;bottom:-40px;left:0;right:0}.art-video-player:has(>.artplayer-plugin-danmuku){margin-bottom:40px}[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}'},{}]},["7ICE7"],"7ICE7","parcelRequire4dc0",{});let{default:e}=parcelRequire4dc0("7ICE7");export{e as default}; \ No newline at end of file