niconizer
Version:
A desktop application that displays plain text, images, or any other HTML content on the screen, like nicovideo or bilibili.
1 lines • 1.17 kB
JavaScript
const e=function(){let e=document.querySelector(".comment-container")??function(e){throw e}(Error("Comment container not found"));return e.addEventListener("transitionend",({target:e})=>{e instanceof Element&&e.remove()}),t.bind(void 0,e)}();function t(e,t){let n=function(e){let t=document.createElement("div");t.className="comment",t.style.visibility="hidden",t.textContent="M",e.append(t);let{offsetHeight:n}=t;return t.remove(),n}(e),r=document.createElement("div");r.className="comment flip-enter-to",r.innerHTML=t,e.append(r);let{classList:i,style:o,dataset:a,offsetWidth:l,offsetHeight:c,offsetLeft:d}=r;i.remove("flip-enter-to");let{offsetLeft:f}=r;i.add("flip-enter-active"),o.transform=`translateX(${d-f}px)`;let m=0,s=0;for(;;){for(;;){let t=[...e.querySelectorAll(`[data-layer="${m}"][data-line="${s}"]`)].at(-1);if(!t)break;if(function(e,t){let n=e.getBoundingClientRect();return innerWidth<n.right||innerWidth-n.left<t}(t,l)){s++;continue}break}if(!s||n*s+c<=innerHeight)break;m++,s=0}a.line=`${s}`,a.layer=`${m}`,o.setProperty("--line",`${s}`),o.setProperty("--layer",`${m}`)}new WebSocket("ws://localhost:25252/").addEventListener("message",t=>{e(t.data)});