} }); ['pointerup','pointercancel','pointerleave'].forEach(ev=>stage.addEventListener(ev,()=>{dragging=false;})); stage.addEventListener('wheel',e=>{ y=Math.min(maxY(),Math.max(0,y+e.deltaY)); apply(); },{passive:true}); // keyboard document.addEventListener('keydown',e=>{ if(script.getAttribute('contenteditable')==='true') return; if(e.key===' '){ e.preventDefault(); toggle(); } else if(e.key==='ArrowUp'){ e.preventDefault(); nudge(1); } else if(e.key==='ArrowDown'){ e.preventDefault(); nudge(-1); } else if(e.key==='ArrowRight'){ setSize(fs+4); showBar(); } else if(e.key==='ArrowLeft'){ setSize(fs-4); showBar(); } else if(e.key.toLowerCase()==='r'){ restart(); } }); window.addEventListener('resize',()=>{ const ratio=y/maxY(); requestAnimationFrame(()=>{ y=ratio*maxY(); apply(); }); });