Bilibili-Evolved/min/video-danmaku.min.js
2021-10-26 13:22:15 +08:00

1 line
856 B
JavaScript

(()=>(e,t)=>{let n;const o=[];const r=e=>({element:e,reuse:false,text:e.textContent||""});const d=(e,t)=>{if(n){n.stop()}n=Observer.childListSubtree(e,(e=>{e.forEach((e=>{e.addedNodes.forEach((e=>{if(e.nodeType===Node.TEXT_NODE){const n=e.parentElement;const r=o.find((e=>e.element===n));if(!r){return}r.text=e.textContent||"";r.reuse=true;t.added&&t.added(r);return}if(!(e instanceof HTMLElement)){return}const n=r(e);o.push(n);t.added&&t.added(n)}));e.removedNodes.forEach((e=>{if(!(e instanceof HTMLElement)){return}const n=o.findIndex((t=>t.element===e));if(n!==-1){const[e]=o.splice(n,1);t.removed&&t.removed(e)}}))}))}))};const i=async e=>{const t=await videoCondition();if(!t){return}Observer.videoChange((async()=>{const t=await SpinQuery.select(".bilibili-player-video-danmaku");if(!t){return}d(t,e)}))};return{export:{forEachVideoDanmaku:i}}})();