1class XToast extends HTMLElement{constructor(){super(),this._queue=[],this._visible=!1,this._container=document.createElement("div"),this._container.className="toast-container",this.appendChild(this._container)}connectedCallback(){this._onGlobal=e=>{const d=e.detail||{},message=d.message??d.msg??d.text,type=d.type??"info",duration=typeof d.duration=="number"?d.duration:void 0;message&&this.show(message,{type,duration})},window.addEventListener("toast",this._onGlobal),this.hasAttribute("message")&&(this.show(this.getAttribute("message"),{type:this.getAttribute("type")||"info"}),this.removeAttribute("message"))}disconnectedCallback(){window.removeEventListener("toast",this._onGlobal)}static get observedAttributes(){return["message","type","duration"]}attributeChangedCallback(name,oldVal,newVal){if(name==="message"&&newVal){const type=this.getAttribute("type")||"info",duration=this.hasAttribute("duration")?parseInt(this.getAttribute("duration"),10):void 0;this.show(newVal,{type,duration}),this.removeAttribute("message")}}show(message,opts={}){const type=opts.type||"info",duration=Number.isFinite(opts.duration)?opts.duration:4e3;this._queue.push({message,type,duration}),this._visible||this._processQueue()}_processQueue(){if(this._queue.length===0){this._visible=!1;return}this._visible=!0;const item=this._queue.shift(),toast=document.createElement("div");toast.className=`toast ${item.type}`,toast.innerHTML=` 2 <div class="msg">${this._escapeHtml(String(item.message))}</div> 3 <button class="close-btn" aria-label="close"> 4 <svg 5 xmlns="http://www.w3.org/2000/svg" 6 aria-hidden="true" 7 focusable="false" 8 class="icon icon-close" 9 fill="none"
10 viewBox="0 0 18 17" 11 > 12 <path d="M.865 15.978a.5.5 0 00.707.707l7.433-7.431 7.579 7.282a.501.501 0 00.846-.37.5.5 0 00-.153-.351L9.712 8.546l7.417-7.416a.5.5 0 10-.707-.708L8.991 7.853 1.413.573a.5.5 0 10-.693.72l7.563 7.268-7.418 7.417z" fill="currentColor"> 13 </svg> 14 </button> 15 `;const closeBtn=toast.querySelector(".close-btn"),remove=()=>{toast.classList.remove("show"),toast.addEventListener("transitionend",()=>{toast.parentNode&&toast.parentNode.removeChild(toast)},{once:!0}),setTimeout(()=>this._processQueue(),120)};closeBtn.addEventListener("click",()=>{clearTimeout(timer),remove()}),this._container.appendChild(toast),toast.offsetWidth,toast.classList.add("show");const timer=setTimeout(()=>{remove()},item.duration)}_escapeHtml(str){return str.replace(/[&<>"'`=\/]/g,s=>({"&":"&","<":"<",">":">",'"':""","'":"'","/":"/","`":"`","=":"="})[s])}}customElements.define("x-toast",XToast),window.addEventListener("DOMContentLoaded",()=>{window.toast=document.querySelector("x-toast")}); 16//# sourceMappingURL=/cdn/shop/t/106/assets/x-toast.js.map?v=85721621344319558401763530144
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.