timeshare/assets/js/toast.min.js
2025-08-30 13:06:28 -07:00

2 lines
1.3 KiB
JavaScript

(()=>{(function(){"use strict";let n=new Map;function o(t){let i=parseInt(t.dataset.tuiToastDuration||"3000"),e=t.querySelector(".toast-progress"),a={timer:null,startTime:Date.now(),remaining:i,paused:!1};n.set(t,a),e&&i>0&&(e.style.transitionDuration=i+"ms",requestAnimationFrame(()=>{e.style.transform="scaleX(0)"})),i>0&&(a.timer=setTimeout(()=>r(t),i)),t.addEventListener("mouseenter",()=>{let s=n.get(t);if(!(!s||s.paused)&&(clearTimeout(s.timer),s.remaining=s.remaining-(Date.now()-s.startTime),s.paused=!0,e)){let m=getComputedStyle(e);e.style.transitionDuration="0ms",e.style.transform=m.transform}}),t.addEventListener("mouseleave",()=>{let s=n.get(t);!s||!s.paused||s.remaining<=0||(s.startTime=Date.now(),s.paused=!1,s.timer=setTimeout(()=>r(t),s.remaining),e&&(e.style.transitionDuration=s.remaining+"ms",e.style.transform="scaleX(0)"))})}function r(t){n.delete(t),t.style.transition="opacity 300ms, transform 300ms",t.style.opacity="0",t.style.transform="translateY(1rem)",setTimeout(()=>t.remove(),300)}document.addEventListener("click",t=>{let i=t.target.closest("[data-tui-toast-dismiss]");if(i){let e=i.closest("[data-tui-toast]");e&&r(e)}}),new MutationObserver(t=>{t.forEach(i=>{i.addedNodes.forEach(e=>{e.nodeType===1&&e.matches?.("[data-tui-toast]")&&o(e)})})}).observe(document.body,{childList:!0,subtree:!0})})();})();