(()=>{const t=new class{constructor(){this.container=null,this.toasts=[],this.init()}init(){document.querySelector(".toast-container")?this.container=document.querySelector(".toast-container"):(this.container=document.createElement("div"),this.container.className="toast-container",document.body.appendChild(this.container))}show(t={}){const{type:e="info",title:s="",message:o="",duration:i=5e3,closeable:n=!0}=t;if(this.toasts.some(t=>{if(t.classList.contains("hide"))return!1;const i=t.querySelector(".toast-title")?.textContent||"",n=t.querySelector(".toast-message")?.textContent||"";return t.classList.contains(e)&&i===s&&n===o}))return null;const r=this.createToast(e,s,o,n);if(this.container.appendChild(r),this.toasts.push(r),requestAnimationFrame(()=>{r.classList.add("show")}),i>0){const t=r.querySelector(".toast-progress");t&&(t.style.width="100%",t.style.transition=`width ${i}ms linear`,requestAnimationFrame(()=>{t.style.width="0%"}));const e=setTimeout(()=>{this.hide(r)},i);r.addEventListener("mouseenter",()=>{if(clearTimeout(e),t){const e=t.getBoundingClientRect().width/r.getBoundingClientRect().width*100;t.style.transition="none",t.style.width=`${e}%`}}),r.addEventListener("mouseleave",()=>{const t=r.querySelector(".toast-progress");if(t){const e=parseFloat(t.style.width)/100*i;e>0&&(t.style.transition=`width ${e}ms linear`,t.style.width="0%",setTimeout(()=>{this.hide(r)},e))}})}return r}createToast(t,e,s,o){const i=document.createElement("div");i.className=`toast ${t}`;const n=document.createElement("div");n.className="toast-icon",n.innerHTML=this.getIcon(t);const r=document.createElement("div");if(r.className="toast-content",e){const t=document.createElement("div");t.className="toast-title",t.textContent=e,r.appendChild(t)}if(s){const t=document.createElement("div");t.className="toast-message",t.textContent=s,r.appendChild(t)}let c;o&&(c=document.createElement("button"),c.className="toast-close",c.innerHTML="\xd7",c.setAttribute("aria-label","\u95dc\u9589\u901a\u77e5"),c.addEventListener("click",t=>{t.stopPropagation(),this.hide(i)}));const a=document.createElement("div");return a.className="toast-progress",i.appendChild(n),i.appendChild(r),c&&i.appendChild(c),i.appendChild(a),i.addEventListener("click",()=>{this.hide(i)}),i}getIcon(t){const e={success:"\u2713",error:"\u2715",warning:"!",info:"i"};return e[t]||e.info}hide(t){t.classList.remove("show"),t.classList.add("hide"),setTimeout(()=>{t.parentNode&&t.parentNode.removeChild(t);const e=this.toasts.indexOf(t);e>-1&&this.toasts.splice(e,1)},400)}success(t,e,s){return this.show({type:"success",title:t,message:e,duration:s})}error(t,e,s){return this.show({type:"error",title:t,message:e,duration:s})}warning(t,e,s){return this.show({type:"warning",title:t,message:e,duration:s})}info(t,e,s){return this.show({type:"info",title:t,message:e,duration:s})}clearAll(){this.toasts.forEach(t=>this.hide(t))}};typeof window<"u"&&(window.Toast=t),typeof module<"u"&&module.exports&&(module.exports=t)})();