customizable-toast-notification 3.9.7 → 3.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +4 -17
- package/dist/index.esm.mjs +4 -5
- package/dist/index.umd.js +5 -6
- package/package.json +1 -1
- package/postinstall.js +4 -43
- package/dist/index.esm.mjs.map +0 -1
- package/dist/index.umd.js.map +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
*/
|
|
5
|
-
declare function createToast(options?: any): Promise<void>;
|
|
1
|
+
declare function dismissToast(): Promise<void>;
|
|
2
|
+
declare function noopAll(): Promise<void>;
|
|
3
|
+
declare function createToastWithPriority(options?: {}): Promise<any>;
|
|
6
4
|
/**
|
|
7
5
|
* Sets default colors
|
|
8
6
|
* @param {Object} colors
|
|
@@ -13,16 +11,5 @@ declare function setDefaultColors(colors: any): void;
|
|
|
13
11
|
* @param {Object} messages
|
|
14
12
|
*/
|
|
15
13
|
declare function setDefaultMessages(messages: any): void;
|
|
16
|
-
/**
|
|
17
|
-
* Removes the first visible toast from the DOM.
|
|
18
|
-
* Remove toast notifications from the DOM.
|
|
19
|
-
*
|
|
20
|
-
* @async
|
|
21
|
-
* @function noop
|
|
22
|
-
* @param {"all"} [mode] - If `"all"`, removes all matching toast elements.
|
|
23
|
-
* Otherwise, removes only the first matching toast.
|
|
24
|
-
* @returns {Promise<void>} Resolves when removal is attempted.
|
|
25
|
-
*/
|
|
26
|
-
declare function noop(): Promise<void>;
|
|
27
14
|
|
|
28
|
-
export { createToast, noop, setDefaultColors, setDefaultMessages };
|
|
15
|
+
export { createToastWithPriority as createToast, dismissToast as dismiss, dismissToast, noopAll as noop, noopAll, setDefaultColors, setDefaultMessages };
|
package/dist/index.esm.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Customizable Toast Notifications 3.
|
|
3
|
-
* Build: 2025-
|
|
4
|
-
* Cache-Buster:
|
|
2
|
+
* Customizable Toast Notifications 3.11.0
|
|
3
|
+
* Build: 2025-11-09 16:47:48
|
|
4
|
+
* Cache-Buster: 1762706868262
|
|
5
5
|
* Author: Priyanshu Patel
|
|
6
6
|
* Email: [priyanshu.alt191@gmail.com](mailto:priyanshu.alt191@gmail.com)
|
|
7
7
|
* License: Apache-2.0
|
|
@@ -12,5 +12,4 @@
|
|
|
12
12
|
* Supports flexible positioning, theming, icons, animations, and timing options
|
|
13
13
|
* out of the box — with CTA support and zero dependencies.
|
|
14
14
|
*/
|
|
15
|
-
async function t(t,e){const n=document.createElement(t);return n.id=function(t){return`${t}-${Date.now().toString(36)}-${Math.floor(1048575*Math.random()).toString(36)}`}(e),n}const e=new class{constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:200;this.maxSize=t,this.map=new Map}get(t){if(!this.map.has(t))return;const e=this.map.get(t);return this.map.delete(t),this.map.set(t,e),e}set(t,e){if(this.map.has(t))this.map.delete(t);else if(this.map.size>=this.maxSize){const t=this.map.keys().next().value;this.map.delete(t)}this.map.set(t,e)}}(200),n={};function o(t){let o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;if(!t)return"snow";const i=`${t}|${o}`,a=e.get(i);if(a)return a;if(n[null==t?void 0:t.toLowerCase()]){const o=n[t.toLowerCase()];return e.set(i,o),o}let r,s,l;try{const e=null==t?void 0:t.match(/^#([0-9a-f]{3,8})$/i);if(e){let t=e[1];3===t.length&&(t=t.split("").map(t=>t+t).join("")),r=parseInt(t.slice(0,2),16),s=parseInt(t.slice(2,4),16),l=parseInt(t.slice(4,6),16)}else{const e=null==t?void 0:t.match(/rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*[\d.]+)?\)/i);if(!e)throw new Error("Unknown color");r=Number(e[1]),s=Number(e[2]),l=Number(e[3])}}catch(t){r=50+Math.floor(206*Math.random()),s=50+Math.floor(206*Math.random()),l=50+Math.floor(206*Math.random())}r=Math.round(r*o+255*(1-o)),s=Math.round(s*o+255*(1-o)),l=Math.round(l*o+255*(1-o));const u=(t,e,n)=>{const o=[t,e,n].map(t=>(t/=255)<=.03928?t/12.92:Math.pow((t+.055)/1.055,2.4));return.2126*o[0]+.7152*o[1]+.0722*o[2]},d=(t,e)=>{const n=u(...t),o=u(...e);return(Math.max(n,o)+.05)/(Math.min(n,o)+.05)};let[c,h,m]=((t,e,n)=>{t/=255,e/=255,n/=255;const o=Math.max(t,e,n),i=Math.min(t,e,n);let a,r,s=(o+i)/2;if(o===i)a=r=0;else{const l=o-i;switch(r=s>.5?l/(2-o-i):l/(o+i),o){case t:a=(e-n)/l+(e<n?6:0);break;case e:a=(n-t)/l+2;break;case n:a=(t-e)/l+4}a/=6}return[360*a,r,s]})(r,s,l);let p=m<.5?Math.min(m+.5,1):Math.max(m-.5,0),[f,g,y]=((t,e,n)=>{let o,i,a;if(t/=360,0===e)o=i=a=n;else{const r=(t,e,n)=>(n<0&&(n+=1),n>1&&(n-=1),n<1/6?t+6*(e-t)*n:n<.5?e:n<2/3?t+(e-t)*(2/3-n)*6:t),s=n<.5?n*(1+e):n+e-n*e,l=2*n-s;o=r(l,s,t+1/3),i=r(l,s,t),a=r(l,s,t-1/3)}return[Math.round(255*o),Math.round(255*i),Math.round(255*a)]})(c,h,p);if(d([r,s,l],[f,g,y])<4.5){const t=d([r,s,l],[0,0,0]),e=d([r,s,l],[255,255,255]);[f,g,y]=t>=e?[0,0,0]:[255,255,255]}const b=((t,e,n)=>`#${t.toString(16).padStart(2,"0")}${e.toString(16).padStart(2,"0")}${n.toString(16).padStart(2,"0")}`)(f,g,y);return e.set(i,b),b}async function i(t,e,n){var o;const i=await async function(t){if("number"==typeof t&&t>0)return t;if("string"==typeof t){if(t.endsWith("s")&&!t.endsWith("ms")){const e=1e3*parseFloat(t);return e>0?e:500}const e=parseFloat(t);return e>0?e:500}return 500}(null==e?void 0:e.animationDuration);t.className=`toast toast-${null!==(o=null==e?void 0:e.type)&&void 0!==o?o:"info"}`,Object.assign(t.style,{background:null==e?void 0:e.backgroundColor,padding:"12px 16px",marginBottom:"10px",borderRadius:null==e?void 0:e.borderRadius,overflow:"hidden",display:"flex",alignItems:"center",justifyContent:"space-between",boxShadow:"0 4px 6px rgba(0, 0, 0, 0.1)",minWidth:"250px",maxWidth:null==e?void 0:e.maxWidth,opacity:"0",position:"relative",cursor:"default",boxSizing:"border-box",userSelect:"text",transition:`opacity ${null==e?void 0:e.animationDuration} ${null==e?void 0:e.animationEasing}, transform ${null==e?void 0:e.animationDuration} ${null==e?void 0:e.animationEasing}`,transform:"translateY(20px)",zIndex:"9999"}),t.setAttribute("role","alert"),t.setAttribute("aria-live","polite"),t.tabIndex=0,t._animationDuration=i;const a=document.createElement("span");null!=e&&e.wrapText?Object.assign(a.style,{display:"block",whiteSpace:"normal"}):Object.assign(a.style,{display:"-webkit-box",WebkitBoxOrient:"vertical",WebkitLineClamp:"3",whiteSpace:"nowrap"}),Object.assign(a.style,{flex:"1",padding:null==e?void 0:e.fontPadding,fontFamily:null==e?void 0:e.fontFamily,fontSize:null==e?void 0:e.fontSize,fontWeight:null==e?void 0:e.fontWeight,lineHeight:null==e?void 0:e.fontLineHeight,color:null==e?void 0:e.textColor,userSelect:"text",wordBreak:"break-word",overflow:"hidden",textOverflow:"ellipsis",display:"-webkit-box",WebkitLineClamp:"3",WebkitBoxOrient:"vertical"}),a.textContent=null==e?void 0:e.message,a.setAttribute("message",null==e?void 0:e.message),a.setAttribute("aria-label",null==e?void 0:e.message),t.appendChild(a),null!=e&&e.cta&&0!==Object.keys(e.cta).length&&function(t,e,n){const o=null==e?void 0:e.cta;if(!o)return;o.label||(o.label="CTA Label Missing!");const i=!!o.href&&"link"===o.variant,a=document.createElement(i?"a":"button");i?(a.href=o.href,o.target&&(a.target=o.target),a.rel=o.rel||("_blank"===o.target?"noopener noreferrer":"")):a.type="button",a.setAttribute("aria-label",o.ariaLabel||o.label),Object.assign(a.style,{marginLeft:"10px",padding:"6px 10px",borderRadius:"6px",fontSize:"12px",fontWeight:"600",lineHeight:"1",border:"1px solid rgba(255,255,255,0.35)",color:e.textColor||"#fff",background:"rgba(255,255,255,0.15)",cursor:"pointer",whiteSpace:"nowrap",flexShrink:"0"}),a.textContent=o.label;const r=async e=>{try{if("function"==typeof o.onClick){const t=o.onClick(e);null!=t&&t.then&&await t}}finally{!1!==o.autoClose&&n(t)}};a.addEventListener("click",r),a._cleanup=()=>a.removeEventListener("click",r),t.appendChild(a)}(t,e,n),null!=e&&e.showCloseButton&&function(t,e,n){const o=document.createElement("button");o.setAttribute("aria-label","Close notification"),o.setAttribute("title","Close"),o.textContent="×",Object.assign(o.style,{background:"none",border:"none",color:e.textColor||"white",fontSize:"18px",marginLeft:"10px",cursor:"pointer"});const i=()=>n(t);o.addEventListener("click",i),t._cleanupCloseButton=()=>{o.removeEventListener("click",i)},t.appendChild(o)}(t,e,n),null!=e&&e.showProgressBar&&function(t,e){const n=document.createElement("div"),o=e.borderRadius||0,i=parseInt(o,10),a=i?`calc(100% - ${i-10+"px"})`:"100%",r=i?"12px":"0";Object.assign(n.style,{position:"absolute",left:`${r}`,height:e.progressHeight||"4px",background:e.progressColor||"rgba(255, 255, 255, 0.3)",width:`${a}`,transition:`width ${e.duration||1800}ms linear`,["top"===e.progressPosition?"top":"bottom"]:"0",borderRadius:e.borderRadius||"4px"}),t.appendChild(n),setTimeout(()=>{n.offsetWidth,n.style.width="0%"},50)}(t,e),function(t){setTimeout(()=>{requestAnimationFrame(()=>{t.style.opacity="1",t.style.transform="translateY(0)"})},50)}(t)}async function a(t,e){try{const n=document.createElement("div");Object.assign(n.style,{background:"#333",color:"white",padding:"10px 15px",position:"fixed",top:"20px",right:"20px",zIndex:"99999",borderRadius:"3px",maxWidth:"250px",wordWrap:"break-word",boxShadow:"0 2px 10px rgba(0,0,0,0.3)",cursor:"pointer"});const o=document.createElement("span");o.textContent=(null==t?void 0:t.message)||"Emergency Toast Creation Showing!",n.appendChild(o);const i=document.createElement("span");return i.textContent="×",Object.assign(i.style,{float:"right",marginLeft:"10px",fontWeight:"bold"}),i.onclick=()=>{n.remove(),e(n)},n.appendChild(i),document.body.appendChild(n),setTimeout(()=>{n.remove(),e(n)},null==t?void 0:t.duration),n}catch(n){return setTimeout(()=>{alert((null==t?void 0:t.message)||"Emergency Toast Creation Showing!"),e(null)},100),null}}Object.entries({aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}).forEach(t=>{let[e,[o,i,a]]=t;const r=t=>{const e=t/255;return e<=.03928?e/12.92:Math.pow((e+.055)/1.055,2.4)},s=.2126*r(o)+.7152*r(i)+.0722*r(a),l=(s+.05)/.05,u=1.05/(s+.05);n[e.toLowerCase()]=l>=u?"#000000":"#ffffff"});const r=new Map,s=new Map;function l(t){return`toast-container-${function(t){return String(t).toLowerCase().trim().replace(/\bbelow\b/g,"bottom").replace(/\s+/g,"-").replace(/[^a-z0-9-]/g,"-").replace(/-{2,}/g,"-")}(t)}`}async function u(t,e){const n=l(t.position);if(s.has(n))return s.get(n);const o=(async()=>{const o=r.get(n);if(null!=o&&o.isConnected)return o;let i=document.getElementById(n);i&&!i.isConnected&&document.body.appendChild(i),i?(i.style.position=i.style.position||"fixed",i.style.zIndex=i.style.zIndex||"9999","function"==typeof e&&await e(i,t)):(i=document.createElement("div"),i.id=n,i.setAttribute("role","status"),i.setAttribute("aria-atomic","true"),i.style.position="fixed",i.style.zIndex="9999",i.style.inset="auto 10px 10px auto",i.style.display="flex",i.style.justifyContent="space-between",i.style.alignItems="center",i.style.flexDirection="column",i.style.overflow="hidden","function"==typeof e&&await e(i,t),document.body.appendChild(i));const a=document.querySelectorAll(`#${n}`);if(a.length>1)for(let t=1;t<a.length;t++)try{a[t].remove()}catch(t){}return r.set(n,i),i})();s.set(n,o);try{return await o}finally{s.delete(l(t.position))}}async function d(t,e){if(!t||!e.position)throw new Error("Invalid container or position!");!function(t){t.style.top="auto",t.style.bottom="auto",t.style.left="auto",t.style.right="auto",t.style.transform="none"}(t);const n=function(t){const e=t.toLowerCase().trim();return{hasTop:e.includes("top"),hasBottom:e.includes("bottom")||e.includes("below"),hasLeft:e.includes("left"),hasRight:e.includes("right"),hasCenter:e.includes("center"),hasFullWidth:e.includes("top-full-width")||e.includes("bottom-full-width")||e.includes("fullwidth")}}(e.position);(function(t,e,n){if(!n.hasFullWidth)return!1;if(e.maxWidth="100vw",n.hasTop)return t.style.top="10px",t.style.left="10px",t.style.right="10px",!0;if(n.hasBottom)return t.style.bottom="10px",t.style.left="10px",t.style.right="10px",!0;return!1})(t,e,n)||function(t,e){if(!e.hasCenter)return!1;if(e.hasTop&&!e.hasLeft&&!e.hasRight)return t.style.top="10px",t.style.left="50%",t.style.transform="translateX(-50%)",!0;if(e.hasBottom&&!e.hasLeft&&!e.hasRight)return t.style.bottom="10px",t.style.left="50%",t.style.transform="translateX(-50%)",!0;if(e.hasLeft&&!e.hasTop&&!e.hasBottom)return t.style.left="10px",t.style.top="50%",t.style.transform="translateY(-50%)",!0;if(e.hasRight&&!e.hasTop&&!e.hasBottom)return t.style.right="10px",t.style.top="50%",t.style.transform="translateY(-50%)",!0;if(!(e.hasLeft||e.hasRight||e.hasTop||e.hasBottom))return t.style.top="50%",t.style.left="50%",t.style.transform="translate(-50%, -50%)",!0;return!1}(t,n)||function(t,e){e.hasBottom?t.style.bottom="10px":e.hasTop&&(t.style.top="10px");e.hasRight?t.style.right="10px":e.hasLeft?t.style.left="10px":(t.style.bottom="10px",t.style.left="50%",t.style.transform="translateX(-50%)")}(t,n)}class c{constructor(t,e){this.callback=t,this.delay=e,this.remaining=e,this.startTime=null,this.timeoutId=null,this.isPaused=!1,this.isCompleted=!1}start(){return this.isCompleted||this.timeoutId||(this.startTime=Date.now(),this.timeoutId=setTimeout(()=>{this.isCompleted=!0,this.timeoutId=null,this.callback()},this.remaining)),this}pause(){return this.isPaused||!this.timeoutId||this.isCompleted||(clearTimeout(this.timeoutId),this.timeoutId=null,this.remaining-=Date.now()-this.startTime,this.remaining=Math.max(0,this.remaining),this.isPaused=!0),this}resume(){return!this.isPaused||this.isCompleted||(this.isPaused=!1,this.start()),this}clear(){return this.timeoutId&&(clearTimeout(this.timeoutId),this.timeoutId=null),this.isCompleted=!0,this}getRemainingTime(){return this.isCompleted?0:this.isPaused?this.remaining:this.timeoutId?Math.max(0,this.remaining-(Date.now()-this.startTime)):this.delay}}const h=new Map,m=new Map,p=[];let f=0;async function g(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};try{const e=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return`${String(t.type).trim().toLowerCase()}|${function(t){let e=5381;for(let n=0;n<t.length;n++)e=(e<<5)+e+t.charCodeAt(n);return e>>>0}(String(t.message||"")).toString(16)}|${String(t.position).trim().toLowerCase()}`}(t);if(h.has(e)){const n=h.get(e);if(!n)throw new Error(`Active toast with key ${e} not found`);return n.count++,n.timer.clear(),n.timer=b(n.toast,t),await v(n),void await k(n)}if(m.has(e)){const t=m.get(e);if(!t)throw new Error(`Pending toast with key ${e} not found`);return void t.count++}const n={options:t,count:1,rafId:0};m.set(e,n),n.rafId=requestAnimationFrame(async()=>{const t=m.get(e);if(t){if(m.delete(e),f>=3)return p.push({options:t.options,key:e,count:t.count}),void await x();try{await y(t.options,e,t.count)}catch(t){}}})}catch(t){}}async function y(e,n,o){try{if(!e||"object"!=typeof e)throw new TypeError("options must be an object");f++;const r=await u(e,d);if(!r)throw new Error("Failed to create toast container");const s=await async function(e,n){if(!document.querySelector('[id^="toast-container-"]'))return null;let o;try{return o=await t("div","toast"),await i(o,e,n),o}catch(t){return o=await a(e,n),o}}(e,w);if(!s)throw new Error("Toast element creation failed");const l=document.createElement("div");Object.assign(l.style,{position:"relative",display:"inline-block",overflow:"visible",marginBottom:"10px",zIndex:"0",width:"100%"});const c=document.createElement("div");Object.assign(c.style,{position:"relative",overflow:"hidden",zIndex:"1"}),c.appendChild(s),l.appendChild(c),r.id.includes("toast-container-")&&r.appendChild(l);const m=!1!==e.pauseOnHover&&(!0===e.pauseOnHover||!!e.cta),p={outer:l,toast:s,count:Math.max(1,Math.floor(null!=o?o:0)),timeout:null,pauseOnHover:m};h.set(n,p),s._key=n,p.count>1&&await k(p),p.timer=b(s,e),await v(p)}catch(t){f=Math.max(0,f-1);(document.querySelector('[id^="toast-container-"]')||document.body).appendChild(await a(e,w))}}function b(t,e){var n;const o=Number(null!==(n=e.duration)&&void 0!==n?n:1800)+5,i=new c(async()=>await w(t),o);return i.start(),i}async function v(t){if(!t.pauseOnHover||!t.outer||!t.timer)return;const{outer:e,timer:n}=t,o=()=>n.pause(),i=()=>n.resume(),a=t=>{t.target.matches("[tabindex], div, span, button, a")&&n.pause()},r=t=>{e.contains(t.relatedTarget)||n.resume()};e.addEventListener("mouseenter",o),e.addEventListener("mouseleave",i),e.addEventListener("focusin",a),e.addEventListener("focusout",r),e._pauseCleanup=()=>{e.removeEventListener("mouseenter",o),e.removeEventListener("mouseleave",i),e.removeEventListener("focusin",a),e.removeEventListener("focusout",r)}}async function w(t){try{var e,n,o;if(null==t||!t._key)return;const i=h.get(t._key);if(!i)return;null===(e=i.timer)||void 0===e||e.clear(),null===(n=i.outer)||void 0===n||null===(o=n._pauseCleanup)||void 0===o||o.call(n),h.delete(t._key),f=Math.max(0,f-1);const a=i.outer.querySelector(".toast-count-badge");a&&a.remove(),await async function(t){return t?new Promise(e=>{let n=!1;const o=()=>{n||(n=!0,async function(t){if(!t)return!0;try{var e;if(null!=t&&null!==(e=t.parentNode)&&void 0!==e&&e.id.includes("toast-container-"))return t.parentNode.removeChild(t),!0}catch(t){}try{if(t.remove)return t.remove(),!0}catch(t){}try{return Object.assign(t.style,{display:"none",opacity:"0",pointerEvents:"none",position:"absolute",left:"-9999px"}),!0}catch(t){}}(t),e())},i=t.firstElementChild||t;if(!i)return e();const a=t=>{try{if(t.target!==i)return;i.removeEventListener("transitionend",a,!0),o()}catch(t){}};try{i.addEventListener("transitionend",a,!0)}catch(t){}setTimeout(()=>{try{i.removeEventListener("transitionend",a,!0),o()}catch(t){}},700)}):Promise.resolve()}(i.outer),await x()}catch(t){}}async function x(){for(;f<3&&p.length;){const t=p.shift();if(h.has(t.key)){const e=h.get(t.key);e.count+=t.count,await k(e);continue}y(t.options,t.key,t.count)}}async function k(t){let{outer:e,count:n}=t;if(!(e&&e instanceof HTMLElement))throw new Error("updateBadge: outer must be a valid HTMLElement");if(n<2){const t=e.querySelector(".toast-count-badge");return void(t&&t.remove())}let o=e.querySelector(".toast-count-badge");o||(o=document.createElement("span"),o.className="toast-count-badge",o.setAttribute("aria-label",`${n} identical notifications`),Object.assign(o.style,{position:"absolute",top:"6px",right:"6px",backgroundColor:"#f44336",color:"#fff",borderRadius:"50%",minWidth:"20px",height:"20px",fontSize:"12px",fontWeight:"600",display:"flex",alignItems:"center",justifyContent:"center",border:"2px solid #fff",boxShadow:"0 2px 6px rgba(0,0,0,0.3)",zIndex:"2",pointerEvents:"none",transition:"transform 150ms ease"}),e.appendChild(o)),o.textContent=n>99?"99+":String(n);try{o.style.transform="scale(1.2)",setTimeout(()=>o.style.transform="scale(1)",150)}catch(t){}}let C={success:"#28a745",error:"#dc3545",warning:"#ffc107",info:"#17a2b8"},E={success:"Operation completed successfully!",error:"Something went wrong!",warning:"Warning message!",info:"Information message!"};const S=[];let L=!1;async function M(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};try{const e=await async function(t){var e,n;const i=null==t||null===(e=t.position)||void 0===e||null===(e=e.toLowerCase())||void 0===e?void 0:e.trim(),a=null!=i&&i.includes("top-full-width")||null!=i&&i.includes("bottom-full-width")?"100vw":"400px",r={pauseOnHover:void 0,duration:2500,position:"bottom-right",type:"info",borderRadius:"50px",backgroundColor:void 0,textColor:void 0,showCloseButton:!0,animationDuration:"0.4s",animationType:"fade",animationEasing:"ease",showProgressBar:!0,progressColor:void 0,progressHeight:"4px",progressPosition:"bottom",fontPosition:"relative",fontPadding:void 0,fontBorderRadius:void 0,fontBackgroundColor:void 0,fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"',fontSize:"14px",fontWeight:"400",fontLineHeight:"1.4",fontDirection:"auto",wrapText:"normal",maxWidth:a,..."object"!=typeof t||Array.isArray(t)?{}:t};r.message=null!==(n=null==t?void 0:t.message)&&void 0!==n?n:r.message;try{var s,l,u;if(!r.backgroundColor)r.backgroundColor=null!==(l=null===(u=C)||void 0===u?void 0:u[r.type])&&void 0!==l?l:window.matchMedia("(prefers-color-scheme: dark)").matches?"#f5f5f5":"#111111";if(r.message=r.message||(null===(s=E)||void 0===s?void 0:s[r.type])||"No Message Provided!",!r.textColor&&r.backgroundColor){const t=o(r.backgroundColor);r.textColor=t}if(!r.progressColor&&r.backgroundColor)if(r.textColor)r.progressColor=r.textColor;else{const t=o(r.backgroundColor);r.progressColor=t}}catch(t){}"string"!=typeof r.message&&(r.message="No Message Provided!");return r}(t);await async function(t){try{return await u(t,d)}catch(t){return document.body}}(e),await g(e)}catch(e){const n="string"==typeof(null==t?void 0:t.message)&&null!==(null==t?void 0:t.message)?`${t.message.substring(0,200)} toast creation failed!`:"Toast creation failed!";alert(n)}}async function T(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};"undefined"!=typeof window&&"undefined"!=typeof document&&(await async function(){L||"undefined"!=typeof window&&"undefined"!=typeof document&&("complete"===document.readyState||"interactive"===document.readyState?(L=!0,S.forEach(t=>setTimeout(()=>M(t),2500)),S.length=0):document.addEventListener("DOMContentLoaded",()=>{L=!0,S.forEach(t=>setTimeout(()=>M(t),2500)),S.length=0},{once:!0}))}(),L?await M(t):S.push(t))}function I(t){try{t&&"object"==typeof t&&!Array.isArray(t)&&(C={...C,...t})}catch(t){}}function j(t){try{t&&"object"==typeof t&&!Array.isArray(t)&&(E={...E,...t})}catch(t){}}const $=async function(){const t=document.querySelector('[id^="toast-"]:not([id*="container"])');await w(t)};try{"undefined"!=typeof window&&(window.customizableToast={createToast:T,setDefaultColors:I,setDefaultMessages:j,noop:$})}catch(t){}export{T as createToast,$ as noop,I as setDefaultColors,j as setDefaultMessages};
|
|
16
|
-
//# sourceMappingURL=index.esm.mjs.map
|
|
15
|
+
function t(t,e,n){return(e=function(t){var e=function(t,e){if("object"!=typeof t||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var o=n.call(t,e);if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:e+""}(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function e(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),n.push.apply(n,o)}return n}function n(n){for(var o=1;o<arguments.length;o++){var r=null!=arguments[o]?arguments[o]:{};o%2?e(Object(r),!0).forEach(function(e){t(n,e,r[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(r)):e(Object(r)).forEach(function(t){Object.defineProperty(n,t,Object.getOwnPropertyDescriptor(r,t))})}return n}async function o(t,e){const n=document.createElement(t);return n.id=function(t){const e=Date.now().toString(36),n=Math.floor(1048575*Math.random()).toString(36);return"".concat(t,"-").concat(e,"-").concat(n)}(e),n}const r=new class{constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:200;this.maxSize=t,this.map=new Map}get(t){if(!this.map.has(t))return;const e=this.map.get(t);return this.map.delete(t),this.map.set(t,e),e}set(t,e){if(this.map.has(t))this.map.delete(t);else if(this.map.size>=this.maxSize){const t=this.map.keys().next().value;this.map.delete(t)}this.map.set(t,e)}}(200),i={};function a(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;if(!t)return"snow";const n="".concat(t,"|").concat(e),o=r.get(n);if(o)return o;if(i[null==t?void 0:t.toLowerCase()]){const e=i[t.toLowerCase()];return r.set(n,e),e}let a,s,l;try{const e=null==t?void 0:t.match(/^#([0-9a-f]{3,8})$/i);if(e){let t=e[1];3===t.length&&(t=t.split("").map(t=>t+t).join("")),a=parseInt(t.slice(0,2),16),s=parseInt(t.slice(2,4),16),l=parseInt(t.slice(4,6),16)}else{const e=null==t?void 0:t.match(/rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*[\d.]+)?\)/i);if(!e)throw new Error("Unknown color");a=Number(e[1]),s=Number(e[2]),l=Number(e[3])}}catch(t){a=50+Math.floor(206*Math.random()),s=50+Math.floor(206*Math.random()),l=50+Math.floor(206*Math.random())}a=Math.round(a*e+255*(1-e)),s=Math.round(s*e+255*(1-e)),l=Math.round(l*e+255*(1-e));const c=(t,e,n)=>{const o=[t,e,n].map(t=>(t/=255)<=.03928?t/12.92:Math.pow((t+.055)/1.055,2.4));return.2126*o[0]+.7152*o[1]+.0722*o[2]},u=(t,e)=>{const n=c(...t),o=c(...e);return(Math.max(n,o)+.05)/(Math.min(n,o)+.05)};let[d,p,m]=((t,e,n)=>{t/=255,e/=255,n/=255;const o=Math.max(t,e,n),r=Math.min(t,e,n);let i,a,s=(o+r)/2;if(o===r)i=a=0;else{const l=o-r;switch(a=s>.5?l/(2-o-r):l/(o+r),o){case t:i=(e-n)/l+(e<n?6:0);break;case e:i=(n-t)/l+2;break;case n:i=(t-e)/l+4}i/=6}return[360*i,a,s]})(a,s,l);let f=m<.5?Math.min(m+.5,1):Math.max(m-.5,0),[h,y,g]=((t,e,n)=>{let o,r,i;if(t/=360,0===e)o=r=i=n;else{const a=(t,e,n)=>(n<0&&(n+=1),n>1&&(n-=1),n<1/6?t+6*(e-t)*n:n<.5?e:n<2/3?t+(e-t)*(2/3-n)*6:t),s=n<.5?n*(1+e):n+e-n*e,l=2*n-s;o=a(l,s,t+1/3),r=a(l,s,t),i=a(l,s,t-1/3)}return[Math.round(255*o),Math.round(255*r),Math.round(255*i)]})(d,p,f);if(u([a,s,l],[h,y,g])<4.5){const t=u([a,s,l],[0,0,0]),e=u([a,s,l],[255,255,255]);[h,y,g]=t>=e?[0,0,0]:[255,255,255]}const b=((t,e,n)=>"#".concat(t.toString(16).padStart(2,"0")).concat(e.toString(16).padStart(2,"0")).concat(n.toString(16).padStart(2,"0")))(h,y,g);return r.set(n,b),b}function s(t){if(!t||"string"!=typeof t)return"";let e=t.replace(/<\/?(script|iframe|object|embed|link|meta|style|form|input|button)[^>]*>/gi,"");e=e.replace(/\s(on\w+)\s*=\s*(['"])[\s\S]*?\2/gi,""),e=e.replace(/(href|src)\s*=\s*(['"])\s*javascript:[^'"]*\2/gi,"$1=$2#$2");const n=document.createElement("div");n.innerHTML=e;const o=new Set(["DIV","SPAN","P","BR","STRONG","B","EM","I","U","SMALL","UL","OL","LI","A","IMG","PRE","CODE","MARK"]),r=new Set(["href","src","alt","title","class","style","target","rel"]);function i(t){if(t.nodeType===Node.TEXT_NODE)return document.createTextNode(t.nodeValue);if(t.nodeType!==Node.ELEMENT_NODE)return null;const e=t.tagName.toUpperCase();if(!o.has(e)){const e=document.createDocumentFragment();return Array.from(t.childNodes).forEach(t=>{const n=i(t);n&&e.appendChild(n)}),e}const n=document.createElement(t.tagName);return Array.from(t.attributes||[]).forEach(e=>{const o=e.name.toLowerCase(),i=e.value;r.has(o)&&("href"!==o&&"src"!==o||!/^\s*javascript:/i.test(i))&&("src"!==o||/^\s*(https?:|data:image\/)/i.test(i))&&("target"===o&&"_blank"===i&&n.setAttribute("rel",(t.getAttribute("rel")||"")+" noopener noreferrer"),n.setAttribute(o,i))}),Array.from(t.childNodes).forEach(t=>{const e=i(t);e&&n.appendChild(e)}),n}const a=document.createDocumentFragment();Array.from(n.childNodes).forEach(t=>{const e=i(t);e&&a.appendChild(e)});const s=document.createElement("div");return s.appendChild(a),s.innerHTML}function l(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!t)return"";try{if(!e.forceFallback&&function(){try{if("undefined"!=typeof window&&window.DOMPurify)return!0}catch(t){}return!1}())return window.DOMPurify.sanitize(t,{ADD_ATTR:["target"],ALLOWED_URI_REGEXP:/^(?:(?:https?|mailto|ftp|tel|data):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i})}catch(t){}return s(t)}async function c(t,e,n){var o,r;const i=await async function(t){if("number"==typeof t&&t>0)return t;if("string"==typeof t){if(t.endsWith("s")&&!t.endsWith("ms")){const e=1e3*parseFloat(t);return e>0?e:500}const e=parseFloat(t);return e>0?e:500}return 500}(null==e?void 0:e.animationDuration);t.className="toast toast-".concat(null!==(o=null==e?void 0:e.type)&&void 0!==o?o:"info"),Object.assign(t.style,{background:null==e?void 0:e.backgroundColor,padding:"12px 16px",marginBottom:"10px",borderRadius:null==e?void 0:e.borderRadius,overflow:"hidden",display:"flex",alignItems:"center",justifyContent:"space-between",boxShadow:"0 4px 6px rgba(0, 0, 0, 0.1)",minWidth:"250px",maxWidth:null==e?void 0:e.maxWidth,opacity:"0",position:"relative",cursor:"default",boxSizing:"border-box",userSelect:"text",transition:"opacity ".concat(null==e?void 0:e.animationDuration," ").concat(null==e?void 0:e.animationEasing,", transform ").concat(null==e?void 0:e.animationDuration," ").concat(null==e?void 0:e.animationEasing),transform:"translateY(20px)",zIndex:"9999"}),t.setAttribute("role","alert"),t.setAttribute("aria-live","polite"),t.tabIndex=0,t._animationDuration=i;const a=document.createElement("span");null!=e&&e.wrapText?Object.assign(a.style,{display:"block",whiteSpace:"normal"}):Object.assign(a.style,{display:"-webkit-box",WebkitBoxOrient:"vertical",WebkitLineClamp:"3",whiteSpace:"nowrap"}),Object.assign(a.style,{flex:"1",padding:null==e?void 0:e.fontPadding,fontFamily:null==e?void 0:e.fontFamily,fontSize:null==e?void 0:e.fontSize,fontWeight:null==e?void 0:e.fontWeight,lineHeight:null==e?void 0:e.fontLineHeight,color:null==e?void 0:e.textColor,userSelect:"text",wordBreak:"break-word",overflow:"hidden",textOverflow:"ellipsis",display:"-webkit-box",WebkitLineClamp:"3",WebkitBoxOrient:"vertical"});const s=!!e.allowHtml,c=null!==(r=e.message)&&void 0!==r?r:"";if(e.loader||e.showLoader){const t=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const e=t.size||14,n=t.color||"currentColor",o=t.text||"",r=document.createElement("span");r.className="toast-loader",r.style.display="inline-flex",r.style.alignItems="center",r.style.gap="8px";const i="http://www.w3.org/2000/svg",a=document.createElementNS(i,"svg");a.setAttribute("width",String(e)),a.setAttribute("height",String(e)),a.setAttribute("viewBox","0 0 50 50"),a.setAttribute("aria-hidden","true");const s=document.createElementNS(i,"circle");if(s.setAttribute("cx","25"),s.setAttribute("cy","25"),s.setAttribute("r","20"),s.setAttribute("fill","none"),s.setAttribute("stroke",n),s.setAttribute("stroke-width","4"),s.setAttribute("stroke-linecap","round"),s.style.opacity="0.85",s.style.strokeDasharray="90",s.style.strokeDashoffset="60",s.style.transformOrigin="center",s.style.animation="toast-spinner 1s linear infinite",a.appendChild(s),r.appendChild(a),o){const t=document.createElement("span");t.style.fontSize="13px",t.textContent=o,r.appendChild(t)}if(!document.getElementById("toast-spinner-styles")){const t=document.createElement("style");t.id="toast-spinner-styles",t.innerHTML="@keyframes toast-spinner { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } }",document.head.appendChild(t)}return r}(e.loader||{});a.appendChild(t);const n=document.createElement("span");n.style.display="inline-block",n.style.width="8px",a.appendChild(n)}if(s&&"string"==typeof c&&c.trim().length>0)try{const t=l(c),e=document.createElement("div");for(e.innerHTML=t;e.firstChild;)a.appendChild(e.firstChild)}catch(t){a.textContent=c}else a.textContent=String(c);a.setAttribute("aria-label","Toast Notification Center"),a.setAttribute("title","string"==typeof c?c.replace(/<[^>]+>/g,""):String(c)),t.appendChild(a),null!=e&&e.cta&&0!==Object.keys(e.cta).length&&function(t,e,n){const o=null==e?void 0:e.cta;if(!o)return;o.label||(o.label="CTA Label Missing!");const r=!!o.href&&"link"===o.variant,i=document.createElement(r?"a":"button");r?(i.href=o.href,o.target&&(i.target=o.target),i.rel=o.rel||("_blank"===o.target?"noopener noreferrer":"")):i.type="button",i.setAttribute("aria-label",o.ariaLabel||o.label),Object.assign(i.style,{marginLeft:"10px",padding:"6px 10px",borderRadius:"6px",fontSize:"12px",fontWeight:"600",lineHeight:"1",border:"1px solid rgba(255,255,255,0.35)",color:e.textColor||"#fff",background:"rgba(255,255,255,0.15)",cursor:"pointer",whiteSpace:"nowrap",flexShrink:"0"}),i.textContent=o.label;const a=async e=>{try{if("function"==typeof o.onClick){const t=o.onClick(e);null!=t&&t.then&&await t}}finally{!1!==o.autoClose&&n(t)}};i.addEventListener("click",a),i._cleanup=()=>i.removeEventListener("click",a),t.appendChild(i)}(t,e,n),null!=e&&e.showCloseButton&&function(t,e,n){const o=document.createElement("button");o.setAttribute("aria-label","Close notification"),o.setAttribute("title","Close"),o.textContent="×",Object.assign(o.style,{background:"none",border:"none",color:e.textColor||"white",fontSize:"18px",marginLeft:"10px",cursor:"pointer"});const r=()=>n(t);o.addEventListener("click",r),t._cleanupCloseButton=()=>{o.removeEventListener("click",r)},t.appendChild(o)}(t,e,n),null!=e&&e.showProgressBar&&function(t,e){const n=document.createElement("div"),o=e.borderRadius||0,r=parseInt(o,10),i=r?"calc(100% - ".concat(r-10+"px",")"):"100%",a=r?"12px":"0";Object.assign(n.style,{position:"absolute",left:"".concat(a),height:e.progressHeight||"4px",background:e.progressColor||"rgba(255, 255, 255, 0.3)",width:"".concat(i),transition:"width ".concat(e.duration||1800,"ms linear"),["top"===e.progressPosition?"top":"bottom"]:"0",borderRadius:e.borderRadius||"4px"}),t.appendChild(n),setTimeout(()=>{n.offsetWidth,n.style.width="0%"},50)}(t,e),function(t){setTimeout(()=>{requestAnimationFrame(()=>{t.style.opacity="1",t.style.transform="translateY(0)"})},50)}(t)}async function u(t,e){try{const n=document.createElement("div");Object.assign(n.style,{background:"#333",color:"white",padding:"10px 15px",position:"fixed",top:"20px",right:"20px",zIndex:"99999",borderRadius:"3px",maxWidth:"250px",wordWrap:"break-word",boxShadow:"0 2px 10px rgba(0,0,0,0.3)",cursor:"pointer"});const o=document.createElement("div"),r=document.createElement("span");r.style.display="inline-block",t.allowHtml?r.innerHTML=l(String(t.message||"Emergency Toast Showing!")):r.textContent=String(t.message||"Emergency Toast Creation Showing!"),o.appendChild(r);const i=document.createElement("span");for(i.style.cssText="float: right; margin-left: 10px; font-weight: bold;",i.textContent="×",o.appendChild(i);n.firstChild;)n.removeChild(n.firstChild);return n.appendChild(o),i.onclick=()=>{n.remove(),e(n)},document.body.appendChild(n),setTimeout(()=>{n.remove(),e(n)},null==t?void 0:t.duration),n}catch(n){return setTimeout(()=>{alert((null==t?void 0:t.message)||"Emergency Toast Creation Showing!"),e(null)},100),null}}Object.entries({aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}).forEach(t=>{let[e,[n,o,r]]=t;const a=t=>{const e=t/255;return e<=.03928?e/12.92:Math.pow((e+.055)/1.055,2.4)},s=.2126*a(n)+.7152*a(o)+.0722*a(r),l=(s+.05)/.05,c=1.05/(s+.05);i[e.toLowerCase()]=l>=c?"#000000":"#ffffff"});const d=new Map,p=new Map;function m(t){return"toast-container-".concat(function(t){return String(t).toLowerCase().trim().replace(/\bbelow\b/g,"bottom").replace(/\s+/g,"-").replace(/[^a-z0-9-]/g,"-").replace(/-{2,}/g,"-")}(t))}async function f(t,e){const n=m(t.position);if(p.has(n))return p.get(n);const o=(async()=>{const o=d.get(n);if(null!=o&&o.isConnected)return o;let r=document.getElementById(n);r&&!r.isConnected&&document.body.appendChild(r),r?(r.style.position=r.style.position||"fixed",r.style.zIndex=r.style.zIndex||"9999","function"==typeof e&&await e(r,t)):(r=document.createElement("div"),r.id=n,r.setAttribute("role","status"),r.setAttribute("aria-atomic","true"),r.style.position="fixed",r.style.zIndex="9999",r.style.inset="auto 10px 10px auto",r.style.display="flex",r.style.justifyContent="space-between",r.style.alignItems="center",r.style.flexDirection="column",r.style.overflow="hidden","function"==typeof e&&await e(r,t),document.body.appendChild(r));const i=document.querySelectorAll("#".concat(n));if(i.length>1)for(let t=1;t<i.length;t++)try{i[t].remove()}catch(t){}return d.set(n,r),r})();p.set(n,o);try{return await o}finally{p.delete(m(t.position))}}async function h(t,e){if(!t||!e.position)throw new Error("Invalid container or position!");!function(t){t.style.top="auto",t.style.bottom="auto",t.style.left="auto",t.style.right="auto",t.style.transform="none"}(t);const n=function(t){const e=t.toLowerCase().trim();return{hasTop:e.includes("top"),hasBottom:e.includes("bottom")||e.includes("below"),hasLeft:e.includes("left"),hasRight:e.includes("right"),hasCenter:e.includes("center"),hasFullWidth:e.includes("top-full-width")||e.includes("bottom-full-width")||e.includes("fullwidth")}}(e.position);(function(t,e,n){if(!n.hasFullWidth)return!1;if(e.maxWidth="100vw",n.hasTop)return t.style.top="10px",t.style.left="10px",t.style.right="10px",!0;if(n.hasBottom)return t.style.bottom="10px",t.style.left="10px",t.style.right="10px",!0;return!1})(t,e,n)||function(t,e){if(!e.hasCenter)return!1;if(e.hasTop&&!e.hasLeft&&!e.hasRight)return t.style.top="10px",t.style.left="50%",t.style.transform="translateX(-50%)",!0;if(e.hasBottom&&!e.hasLeft&&!e.hasRight)return t.style.bottom="10px",t.style.left="50%",t.style.transform="translateX(-50%)",!0;if(e.hasLeft&&!e.hasTop&&!e.hasBottom)return t.style.left="10px",t.style.top="50%",t.style.transform="translateY(-50%)",!0;if(e.hasRight&&!e.hasTop&&!e.hasBottom)return t.style.right="10px",t.style.top="50%",t.style.transform="translateY(-50%)",!0;if(!(e.hasLeft||e.hasRight||e.hasTop||e.hasBottom))return t.style.top="50%",t.style.left="50%",t.style.transform="translate(-50%, -50%)",!0;return!1}(t,n)||function(t,e){e.hasBottom?t.style.bottom="10px":e.hasTop&&(t.style.top="10px");e.hasRight?t.style.right="10px":e.hasLeft?t.style.left="10px":(t.style.bottom="10px",t.style.left="50%",t.style.transform="translateX(-50%)")}(t,n)}class y{constructor(t,e){this.callback=t,this.delay=e,this.remaining=e,this.startTime=null,this.timeoutId=null,this.isPaused=!1,this.isCompleted=!1}start(){return this.isCompleted||this.timeoutId||(this.startTime=Date.now(),this.timeoutId=setTimeout(()=>{this.isCompleted=!0,this.timeoutId=null,this.callback()},this.remaining)),this}pause(){return this.isPaused||!this.timeoutId||this.isCompleted||(clearTimeout(this.timeoutId),this.timeoutId=null,this.remaining-=Date.now()-this.startTime,this.remaining=Math.max(0,this.remaining),this.isPaused=!0),this}resume(){return!this.isPaused||this.isCompleted||(this.isPaused=!1,this.start()),this}clear(){return this.timeoutId&&(clearTimeout(this.timeoutId),this.timeoutId=null),this.isCompleted=!0,this}getRemainingTime(){return this.isCompleted?0:this.isPaused?this.remaining:this.timeoutId?Math.max(0,this.remaining-(Date.now()-this.startTime)):this.delay}}const g=new Map,b=new Map,w=[];let v=0;async function x(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};try{const e=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const e=String(t.type).trim().toLowerCase(),n=function(t){let e=5381;for(let n=0;n<t.length;n++)e=(e<<5)+e+t.charCodeAt(n);return e>>>0}(String(t.message||"")).toString(16),o=String(t.position).trim().toLowerCase();return"".concat(e,"|").concat(n,"|").concat(o)}(t);if(g.has(e)){const n=g.get(e);if(!n)throw new Error("Active toast with key ".concat(e," not found"));return n.count++,n.timer.clear(),n.timer=S(n.toast,t),await L(n),void await A(n)}if(b.has(e)){const t=b.get(e);if(!t)throw new Error("Pending toast with key ".concat(e," not found"));return void t.count++}const n={options:t,count:1,rafId:0};b.set(e,n),n.rafId=requestAnimationFrame(async()=>{const t=b.get(e);if(t){if(b.delete(e),v>=3)return w.push({options:t.options,key:e,count:t.count}),void await M();try{await C(t.options,e,t.count)}catch(t){}}})}catch(t){}}async function C(t,e,n){try{if(!t||"object"!=typeof t)throw new TypeError("options must be an object");v++;const r=await f(t,h);if(!r)throw new Error("Failed to create toast container");const i=await async function(t,e){if(!document.querySelector('[id^="toast-container-"]'))return null;let n;try{return n=await o("div","toast"),await c(n,t,e),n}catch(o){return n=await u(t,e),n}}(t,T);if(!i)throw new Error("Toast element creation failed");const a=document.createElement("div");Object.assign(a.style,{position:"relative",display:"inline-block",overflow:"visible",marginBottom:"10px",zIndex:"0",width:"100%"});const s=document.createElement("div");Object.assign(s.style,{position:"relative",overflow:"hidden",zIndex:"1"}),s.appendChild(i),a.appendChild(s),r.id.includes("toast-container-")&&r.appendChild(a);const l=!1!==t.pauseOnHover&&(!0===t.pauseOnHover||!!t.cta),d={outer:a,toast:i,count:Math.max(1,Math.floor(null!=n?n:0)),timeout:null,pauseOnHover:l};g.set(e,d),i._key=e,d.count>1&&await A(d),d.timer=S(i,t),await L(d)}catch(e){v=Math.max(0,v-1);(document.querySelector('[id^="toast-container-"]')||document.body).appendChild(await u(t,T))}}const k=async function(){try{if(0===g.size)return;let t=null;if(document.querySelectorAll('[id^="toast-container-"]').forEach(e=>{const n=Array.from(e.children||[]);if(0===n.length)return;const o=n.at(0);o&&(t=o.querySelector('[id^="toast-"]')||o)}),!t){const e=Array.from(g.entries());if(e.length>0){const[,n]=e.at(0);t=n.toast||n.outer&&n.outer.querySelector('[id^="toast-"]')}}if(!t)return;const e=t._key?t:t.querySelector('[id^="toast-"]')||t;await T(e)}catch(t){}},E=async function(){try{const t=Array.from(g.values()).map(t=>t.toast).filter(Boolean);w.length=0,b.clear();for(const e of t)try{await T(e)}catch(t){}}catch(t){}};function S(t,e){var n;const o=Number(null!==(n=e.duration)&&void 0!==n?n:1800)+5,r=new y(async()=>await T(t),o);return r.start(),r}async function L(t){if(!t.pauseOnHover||!t.outer||!t.timer)return;const{outer:e,timer:n}=t,o=()=>n.pause(),r=()=>n.resume(),i=t=>{t.target.matches("[tabindex], div, span, button, a")&&n.pause()},a=t=>{e.contains(t.relatedTarget)||n.resume()};e.addEventListener("mouseenter",o),e.addEventListener("mouseleave",r),e.addEventListener("focusin",i),e.addEventListener("focusout",a),e._pauseCleanup=()=>{e.removeEventListener("mouseenter",o),e.removeEventListener("mouseleave",r),e.removeEventListener("focusin",i),e.removeEventListener("focusout",a)}}async function T(t){try{var e,n,o;if(null==t||!t._key)return;const r=g.get(t._key);if(!r)return;null===(e=r.timer)||void 0===e||e.clear(),null===(n=r.outer)||void 0===n||null===(o=n._pauseCleanup)||void 0===o||o.call(n),g.delete(t._key),v=Math.max(0,v-1);const i=r.outer.querySelector(".toast-count-badge");i&&i.remove(),await async function(t){return t?new Promise(e=>{let n=!1;const o=()=>{n||(n=!0,async function(t){if(!t)return!0;try{var e;if(null!=t&&null!==(e=t.parentNode)&&void 0!==e&&e.id.includes("toast-container-"))return t.parentNode.removeChild(t),!0}catch(t){}try{if(t.remove)return t.remove(),!0}catch(t){}try{return Object.assign(t.style,{display:"none",opacity:"0",pointerEvents:"none",position:"absolute",left:"-9999px"}),!0}catch(t){}}(t),e())},r=t.firstElementChild||t;if(!r)return e();const i=t=>{try{if(t.target!==r)return;r.removeEventListener("transitionend",i,!0),o()}catch(t){}};try{r.addEventListener("transitionend",i,!0)}catch(t){}setTimeout(()=>{try{r.removeEventListener("transitionend",i,!0),o()}catch(t){}},700)}):Promise.resolve()}(r.outer),await M()}catch(t){}}async function M(){for(;v<3&&w.length;){const t=w.shift();if(g.has(t.key)){const e=g.get(t.key);e.count+=t.count,await A(e);continue}C(t.options,t.key,t.count)}}async function A(t){let{outer:e,count:n}=t;if(!(e&&e instanceof HTMLElement))throw new Error("updateBadge: outer must be a valid HTMLElement");if(n<2){const t=e.querySelector(".toast-count-badge");return void(t&&t.remove())}let o=e.querySelector(".toast-count-badge");o||(o=document.createElement("span"),o.className="toast-count-badge",o.setAttribute("aria-label","".concat(n," identical notifications")),Object.assign(o.style,{position:"absolute",top:"6px",right:"6px",backgroundColor:"#f44336",color:"#fff",borderRadius:"50%",minWidth:"20px",height:"20px",fontSize:"12px",fontWeight:"600",display:"flex",alignItems:"center",justifyContent:"center",border:"2px solid #fff",boxShadow:"0 2px 6px rgba(0,0,0,0.3)",zIndex:"2",pointerEvents:"none",transition:"transform 150ms ease"}),e.appendChild(o)),o.textContent=n>99?"99+":String(n);try{o.style.transform="scale(1.2)",setTimeout(()=>o.style.transform="scale(1)",150)}catch(t){}}let O={success:"#28a745",error:"#dc3545",warning:"#ffc107",info:"#17a2b8"},j={success:"Operation completed successfully!",error:"Something went wrong!",warning:"Warning message!",info:"Information message!"};const I=[];let P=!1;async function D(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};try{const e=await async function(t){var e,o;const r=null==t||null===(e=t.position)||void 0===e||null===(e=e.toLowerCase())||void 0===e?void 0:e.trim(),i=null!=r&&r.includes("top-full-width")||null!=r&&r.includes("bottom-full-width")?"100vw":"400px",s=n(n({},{allowHtml:!1,sanitizeHtml:!0,pauseOnHover:void 0,duration:2500,position:"bottom-right",type:"info",borderRadius:"50px",backgroundColor:void 0,textColor:void 0,showCloseButton:!0,animationDuration:"0.4s",animationType:"fade",animationEasing:"ease",showProgressBar:!0,progressColor:void 0,progressHeight:"4px",progressPosition:"bottom",fontPosition:"relative",fontPadding:void 0,fontBorderRadius:void 0,fontBackgroundColor:void 0,fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"',fontSize:"14px",fontWeight:"400",fontLineHeight:"1.4",fontDirection:"auto",wrapText:"normal",maxWidth:i}),"object"!=typeof t||Array.isArray(t)?{}:t);s.message=null!==(o=null==t?void 0:t.message)&&void 0!==o?o:s.message;try{var l,c,u;if(!s.backgroundColor)s.backgroundColor=null!==(c=null===(u=O)||void 0===u?void 0:u[s.type])&&void 0!==c?c:window.matchMedia("(prefers-color-scheme: dark)").matches?"#f5f5f5":"#111111";if(s.message=s.message||(null===(l=j)||void 0===l?void 0:l[s.type])||"No Message Provided!",!s.textColor&&s.backgroundColor){const t=a(s.backgroundColor);s.textColor=t}if(!s.progressColor&&s.backgroundColor)if(s.textColor)s.progressColor=s.textColor;else{const t=a(s.backgroundColor);s.progressColor=t}}catch(t){}"string"!=typeof s.message&&(s.message="No Message Provided!");return s}(t);await async function(t){try{return await f(t,h)}catch(t){return document.body}}(e),await x(e)}catch(e){const n="string"==typeof(null==t?void 0:t.message)&&null!==(null==t?void 0:t.message)?"".concat(t.message.substring(0,200)," toast creation failed!"):"Toast creation failed!";alert(n)}}async function z(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};"undefined"!=typeof window&&"undefined"!=typeof document&&(await async function(){P||"undefined"!=typeof window&&"undefined"!=typeof document&&("complete"===document.readyState||"interactive"===document.readyState?(P=!0,I.forEach(t=>setTimeout(()=>D(t),2500)),I.length=0):document.addEventListener("DOMContentLoaded",()=>{P=!0,I.forEach(t=>setTimeout(()=>D(t),2500)),I.length=0},{once:!0}))}(),P?await D(t):I.push(t))}function N(t){try{t&&"object"==typeof t&&!Array.isArray(t)&&(O=n(n({},O),t))}catch(t){}}function B(t){try{t&&"object"==typeof t&&!Array.isArray(t)&&(j=n(n({},j),t))}catch(t){}}let R=!1,W=null;const H=z;async function q(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return async function(t){if(R&&W)try{await W}catch(t){}return t()}(()=>H(t))}const _=async()=>{R=!0,W=(async()=>{try{await k()}finally{R=!1,W=null}})(),await W},F=async()=>{R=!0,W=(async()=>{try{await E()}finally{R=!1,W=null}})(),await W};if("undefined"!=typeof window&&"undefined"!=typeof document){let t=!1;if(!t){const e=t=>{"Escape"!==t.key&&"Esc"!==t.key||(async()=>{R=!0,W=(async()=>{try{await k()}finally{R=!1,W=null}})(),await W})()};window.addEventListener("keydown",e,{passive:!0}),t=!0}}const U=async function(){await E()};try{"undefined"!=typeof window&&(window.customizableToast={createToast:z,setDefaultColors:N,setDefaultMessages:B,noop:U,dismiss:k})}catch(t){}export{q as createToast,_ as dismiss,_ as dismissToast,F as noop,F as noopAll,N as setDefaultColors,B as setDefaultMessages};
|
package/dist/index.umd.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Customizable Toast Notifications 3.
|
|
3
|
-
* Build: 2025-
|
|
4
|
-
* Cache-Buster:
|
|
2
|
+
* Customizable Toast Notifications 3.11.0
|
|
3
|
+
* Build: 2025-11-09 16:47:48
|
|
4
|
+
* Cache-Buster: 1762706868262
|
|
5
5
|
* Author: Priyanshu Patel
|
|
6
6
|
* Email: [priyanshu.alt191@gmail.com](mailto:priyanshu.alt191@gmail.com)
|
|
7
7
|
* License: Apache-2.0
|
|
@@ -12,7 +12,6 @@
|
|
|
12
12
|
* Supports flexible positioning, theming, icons, animations, and timing options
|
|
13
13
|
* out of the box — with CTA support and zero dependencies.
|
|
14
14
|
*/
|
|
15
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).customizableToast={})}(this,function(e){"use strict";function t(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function n(e,t,n,r,o,
|
|
15
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).customizableToast={})}(this,function(e){"use strict";function t(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function n(e,t,n,r,a,o,i){try{var s=e[o](i),u=s.value}catch(e){return void n(e)}s.done?t(u):Promise.resolve(u).then(r,a)}function r(e){return function(){var t=this,r=arguments;return new Promise(function(a,o){var i=e.apply(t,r);function s(e){n(i,a,o,s,u,"next",e)}function u(e){n(i,a,o,s,u,"throw",e)}s(void 0)})}}function a(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=f(e))||t){n&&(e=n);var r=0,a=function(){};return{s:a,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,i=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return i=e.done,e},e:function(e){s=!0,o=e},f:function(){try{i||null==n.return||n.return()}finally{if(s)throw o}}}}function o(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t);if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach(function(t){o(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function u(){
|
|
16
16
|
/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */
|
|
17
|
-
var e,t,n="function"==typeof Symbol?Symbol:{},r=n.iterator||"@@iterator",o=n.toStringTag||"@@toStringTag";function a(n,r,o,a){var s=r&&r.prototype instanceof l?r:l,c=Object.create(s.prototype);return u(c,"_invoke",function(n,r,o){var a,s,u,l=0,c=o||[],d=!1,p={p:0,n:0,v:e,a:f,f:f.bind(e,4),d:function(t,n){return a=t,s=0,u=e,p.n=n,i}};function f(n,r){for(s=n,u=r,t=0;!d&&l&&!o&&t<c.length;t++){var o,a=c[t],f=p.p,h=a[2];n>3?(o=h===r)&&(u=a[(s=a[4])?5:(s=3,3)],a[4]=a[5]=e):a[0]<=f&&((o=n<2&&f<a[1])?(s=0,p.v=r,p.n=a[1]):f<h&&(o=n<3||a[0]>r||r>h)&&(a[4]=n,a[5]=r,p.n=h,s=0))}if(o||n>1)return i;throw d=!0,r}return function(o,c,h){if(l>1)throw TypeError("Generator is already running");for(d&&1===c&&f(c,h),s=c,u=h;(t=s<2?e:u)||!d;){a||(s?s<3?(s>1&&(p.n=-1),f(s,u)):p.n=u:p.v=u);try{if(l=2,a){if(s||(o="next"),t=a[o]){if(!(t=t.call(a,u)))throw TypeError("iterator result is not an object");if(!t.done)return t;u=t.value,s<2&&(s=0)}else 1===s&&(t=a.return)&&t.call(a),s<2&&(u=TypeError("The iterator does not provide a '"+o+"' method"),s=1);a=e}else if((t=(d=p.n<0)?u:n.call(r,p))!==i)break}catch(t){a=e,s=1,u=t}finally{l=1}}return{value:t,done:d}}}(n,o,a),!0),c}var i={};function l(){}function c(){}function d(){}t=Object.getPrototypeOf;var p=[][r]?t(t([][r]())):(u(t={},r,function(){return this}),t),f=d.prototype=l.prototype=Object.create(p);function h(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,d):(e.__proto__=d,u(e,o,"GeneratorFunction")),e.prototype=Object.create(f),e}return c.prototype=d,u(f,"constructor",d),u(d,"constructor",c),c.displayName="GeneratorFunction",u(d,o,"GeneratorFunction"),u(f),u(f,o,"Generator"),u(f,r,function(){return this}),u(f,"toString",function(){return"[object Generator]"}),(s=function(){return{w:a,m:h}})()}function u(e,t,n,r){var o=Object.defineProperty;try{o({},"",{})}catch(e){o=0}u=function(e,t,n,r){function a(t,n){u(e,t,function(e){return this._invoke(t,n,e)})}t?o?o(e,t,{value:n,enumerable:!r,configurable:!r,writable:!r}):e[t]=n:(a("next",0),a("throw",1),a("return",2))},u(e,t,n,r)}function l(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,a,i,s=[],u=!0,l=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;u=!1}else for(;!(u=(r=a.call(n)).done)&&(s.push(r.value),s.length!==t);u=!0);}catch(e){l=!0,o=e}finally{try{if(!u&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(l)throw o}}return s}}(e,n)||function(e,n){if(e){if("string"==typeof e)return t(e,n);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?t(e,n):void 0}}(e,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function c(e){var t=Date.now().toString(36),n=Math.floor(1048575*Math.random()).toString(36);return"".concat(e,"-").concat(t,"-").concat(n)}function d(e,t){return p.apply(this,arguments)}function p(){return(p=r(s().m(function e(t,n){var r;return s().w(function(e){for(;;)switch(e.n){case 0:if(t&&n){e.n=1;break}throw new Error("tagName and prefix are required");case 1:return(r=document.createElement(t)).id=c(n),e.a(2,r)}},e)}))).apply(this,arguments)}function f(e){return h.apply(this,arguments)}function h(){return(h=r(s().m(function e(t){var n;return s().w(function(e){for(;;)switch(e.p=e.n){case 0:if(t){e.n=1;break}return e.a(2,!0);case 1:if(e.p=1,null==t||null===(n=t.parentNode)||void 0===n||!n.id.includes("toast-container-")){e.n=2;break}return t.parentNode.removeChild(t),e.a(2,!0);case 2:e.n=4;break;case 3:e.p=3,e.v;case 4:if(e.p=4,!t.remove){e.n=5;break}return t.remove(),e.a(2,!0);case 5:e.n=7;break;case 6:e.p=6,e.v;case 7:return e.p=7,Object.assign(t.style,{display:"none",opacity:"0",pointerEvents:"none",position:"absolute",left:"-9999px"}),e.a(2,!0);case 8:return e.p=8,e.v,e.a(2,!1)}},e,null,[[7,8],[4,6],[1,3]])}))).apply(this,arguments)}function m(e){return y.apply(this,arguments)}function y(){return(y=r(s().m(function e(t){var n,r;return s().w(function(e){for(;;)switch(e.n){case 0:if(!("number"==typeof t&&t>0)){e.n=1;break}return e.a(2,t);case 1:if("string"!=typeof t){e.n=3;break}if(!t.endsWith("s")||t.endsWith("ms")){e.n=2;break}return n=1e3*parseFloat(t),e.a(2,n>0?n:500);case 2:return r=parseFloat(t),e.a(2,r>0?r:500);case 3:return e.a(2,500)}},e)}))).apply(this,arguments)}var g=new class{constructor(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:200;this.maxSize=e,this.map=new Map}get(e){if(this.map.has(e)){var t=this.map.get(e);return this.map.delete(e),this.map.set(e,t),t}}set(e,t){if(this.map.has(e))this.map.delete(e);else if(this.map.size>=this.maxSize){var n=this.map.keys().next().value;this.map.delete(n)}this.map.set(e,t)}}(200),b={};function v(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;if(!e)return"snow";var n,r,o,a="".concat(e,"|").concat(t),i=g.get(a);if(i)return i;if(b[null==e?void 0:e.toLowerCase()]){var s=b[e.toLowerCase()];return g.set(a,s),s}try{var u=null==e?void 0:e.match(/^#([0-9a-f]{3,8})$/i);if(u){var c=u[1];3===c.length&&(c=c.split("").map(e=>e+e).join("")),n=parseInt(c.slice(0,2),16),r=parseInt(c.slice(2,4),16),o=parseInt(c.slice(4,6),16)}else{var d=null==e?void 0:e.match(/rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*[\d.]+)?\)/i);if(!d)throw new Error("Unknown color");n=Number(d[1]),r=Number(d[2]),o=Number(d[3])}}catch(e){n=50+Math.floor(206*Math.random()),r=50+Math.floor(206*Math.random()),o=50+Math.floor(206*Math.random())}n=Math.round(n*t+255*(1-t)),r=Math.round(r*t+255*(1-t)),o=Math.round(o*t+255*(1-t));var p=(e,t,n)=>{var r=[e,t,n].map(e=>(e/=255)<=.03928?e/12.92:Math.pow((e+.055)/1.055,2.4));return.2126*r[0]+.7152*r[1]+.0722*r[2]},f=(e,t)=>{var n=p(...e),r=p(...t);return(Math.max(n,r)+.05)/(Math.min(n,r)+.05)},h=((e,t,n)=>{e/=255,t/=255,n/=255;var r,o,a=Math.max(e,t,n),i=Math.min(e,t,n),s=(a+i)/2;if(a===i)r=o=0;else{var u=a-i;switch(o=s>.5?u/(2-a-i):u/(a+i),a){case e:r=(t-n)/u+(t<n?6:0);break;case t:r=(n-e)/u+2;break;case n:r=(e-t)/u+4}r/=6}return[360*r,o,s]})(n,r,o),m=l(h,3),y=m[0],v=m[1],w=m[2],k=((e,t,n)=>{var r,o,a;if(e/=360,0===t)r=o=a=n;else{var i=(e,t,n)=>(n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+6*(t-e)*n:n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e),s=n<.5?n*(1+t):n+t-n*t,u=2*n-s;r=i(u,s,e+1/3),o=i(u,s,e),a=i(u,s,e-1/3)}return[Math.round(255*r),Math.round(255*o),Math.round(255*a)]})(y,v,w<.5?Math.min(w+.5,1):Math.max(w-.5,0)),x=l(k,3),C=x[0],S=x[1],E=x[2];if(f([n,r,o],[C,S,E])<4.5){var O=l(f([n,r,o],[0,0,0])>=f([n,r,o],[255,255,255])?[0,0,0]:[255,255,255],3);C=O[0],S=O[1],E=O[2]}var j=((e,t,n)=>"#".concat(e.toString(16).padStart(2,"0")).concat(t.toString(16).padStart(2,"0")).concat(n.toString(16).padStart(2,"0")))(C,S,E);return g.set(a,j),j}function w(e,t,n){var o=null==t?void 0:t.cta;if(o){o.label||(o.label="CTA Label Missing!");var a=!!o.href&&"link"===o.variant,i=document.createElement(a?"a":"button");a?(i.href=o.href,o.target&&(i.target=o.target),i.rel=o.rel||("_blank"===o.target?"noopener noreferrer":"")):i.type="button",i.setAttribute("aria-label",o.ariaLabel||o.label),Object.assign(i.style,{marginLeft:"10px",padding:"6px 10px",borderRadius:"6px",fontSize:"12px",fontWeight:"600",lineHeight:"1",border:"1px solid rgba(255,255,255,0.35)",color:t.textColor||"#fff",background:"rgba(255,255,255,0.15)",cursor:"pointer",whiteSpace:"nowrap",flexShrink:"0"}),i.textContent=o.label;var u=function(){var t=r(s().m(function t(r){var a;return s().w(function(t){for(;;)switch(t.p=t.n){case 0:if(t.p=0,"function"!=typeof o.onClick){t.n=1;break}if(null==(a=o.onClick(r))||!a.then){t.n=1;break}return t.n=1,a;case 1:return t.p=1,!1!==o.autoClose&&n(e),t.f(1);case 2:return t.a(2)}},t,null,[[0,,1,2]])}));return function(e){return t.apply(this,arguments)}}();i.addEventListener("click",u),i._cleanup=()=>i.removeEventListener("click",u),e.appendChild(i)}}function k(e,t,n){var r=document.createElement("button");r.setAttribute("aria-label","Close notification"),r.setAttribute("title","Close"),r.textContent="×",Object.assign(r.style,{background:"none",border:"none",color:t.textColor||"white",fontSize:"18px",marginLeft:"10px",cursor:"pointer"});var o=()=>n(e);r.addEventListener("click",o),e._cleanupCloseButton=()=>{r.removeEventListener("click",o)},e.appendChild(r)}function x(e,t){var n=document.createElement("div"),r=t.borderRadius||0,o=parseInt(r,10),a=o?"calc(100% - ".concat(o-10+"px",")"):"100%",i=o?"12px":"0";Object.assign(n.style,{position:"absolute",left:"".concat(i),height:t.progressHeight||"4px",background:t.progressColor||"rgba(255, 255, 255, 0.3)",width:"".concat(a),transition:"width ".concat(t.duration||1800,"ms linear"),["top"===t.progressPosition?"top":"bottom"]:"0",borderRadius:t.borderRadius||"4px"}),e.appendChild(n),setTimeout(()=>{n.offsetWidth,n.style.width="0%"},50)}function C(e){setTimeout(()=>{requestAnimationFrame(()=>{e.style.opacity="1",e.style.transform="translateY(0)"})},50)}function S(e,t,n){return E.apply(this,arguments)}function E(){return(E=r(s().m(function e(t,n,r){var o,a,i;return s().w(function(e){for(;;)switch(e.n){case 0:return e.n=1,m(null==n?void 0:n.animationDuration);case 1:a=e.v,t.className="toast toast-".concat(null!==(o=null==n?void 0:n.type)&&void 0!==o?o:"info"),Object.assign(t.style,{background:null==n?void 0:n.backgroundColor,padding:"12px 16px",marginBottom:"10px",borderRadius:null==n?void 0:n.borderRadius,overflow:"hidden",display:"flex",alignItems:"center",justifyContent:"space-between",boxShadow:"0 4px 6px rgba(0, 0, 0, 0.1)",minWidth:"250px",maxWidth:null==n?void 0:n.maxWidth,opacity:"0",position:"relative",cursor:"default",boxSizing:"border-box",userSelect:"text",transition:"opacity ".concat(null==n?void 0:n.animationDuration," ").concat(null==n?void 0:n.animationEasing,", transform ").concat(null==n?void 0:n.animationDuration," ").concat(null==n?void 0:n.animationEasing),transform:"translateY(20px)",zIndex:"9999"}),t.setAttribute("role","alert"),t.setAttribute("aria-live","polite"),t.tabIndex=0,t._animationDuration=a,i=document.createElement("span"),null!=n&&n.wrapText?Object.assign(i.style,{display:"block",whiteSpace:"normal"}):Object.assign(i.style,{display:"-webkit-box",WebkitBoxOrient:"vertical",WebkitLineClamp:"3",whiteSpace:"nowrap"}),Object.assign(i.style,{flex:"1",padding:null==n?void 0:n.fontPadding,fontFamily:null==n?void 0:n.fontFamily,fontSize:null==n?void 0:n.fontSize,fontWeight:null==n?void 0:n.fontWeight,lineHeight:null==n?void 0:n.fontLineHeight,color:null==n?void 0:n.textColor,userSelect:"text",wordBreak:"break-word",overflow:"hidden",textOverflow:"ellipsis",display:"-webkit-box",WebkitLineClamp:"3",WebkitBoxOrient:"vertical"}),i.textContent=null==n?void 0:n.message,i.setAttribute("message",null==n?void 0:n.message),i.setAttribute("aria-label",null==n?void 0:n.message),t.appendChild(i),null!=n&&n.cta&&0!==Object.keys(n.cta).length&&w(t,n,r),null!=n&&n.showCloseButton&&k(t,n,r),null!=n&&n.showProgressBar&&x(t,n),C(t);case 2:return e.a(2)}},e)}))).apply(this,arguments)}function O(e,t){return j.apply(this,arguments)}function j(){return(j=r(s().m(function e(t,n){var r,o,a;return s().w(function(e){for(;;)switch(e.p=e.n){case 0:return e.p=0,r=document.createElement("div"),Object.assign(r.style,{background:"#333",color:"white",padding:"10px 15px",position:"fixed",top:"20px",right:"20px",zIndex:"99999",borderRadius:"3px",maxWidth:"250px",wordWrap:"break-word",boxShadow:"0 2px 10px rgba(0,0,0,0.3)",cursor:"pointer"}),(o=document.createElement("span")).textContent=(null==t?void 0:t.message)||"Emergency Toast Creation Showing!",r.appendChild(o),(a=document.createElement("span")).textContent="×",Object.assign(a.style,{float:"right",marginLeft:"10px",fontWeight:"bold"}),a.onclick=()=>{r.remove(),n(r)},r.appendChild(a),document.body.appendChild(r),setTimeout(()=>{r.remove(),n(r)},null==t?void 0:t.duration),e.a(2,r);case 1:return e.p=1,e.v,setTimeout(()=>{alert((null==t?void 0:t.message)||"Emergency Toast Creation Showing!"),n(null)},100),e.a(2,null)}},e,null,[[0,1]])}))).apply(this,arguments)}function T(e,t){return M.apply(this,arguments)}function M(){return(M=r(s().m(function e(t,n){var r;return s().w(function(e){for(;;)switch(e.p=e.n){case 0:if(document.querySelector('[id^="toast-container-"]')){e.n=1;break}return e.a(2,null);case 1:return e.p=2,e.n=3,d("div","toast");case 3:return r=e.v,e.n=4,S(r,t,n);case 4:return e.a(2,r);case 5:return e.p=5,e.v,e.n=6,O(t,n);case 6:return r=e.v,e.a(2,r)}},e,null,[[2,5]])}))).apply(this,arguments)}Object.entries({aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}).forEach(e=>{var t=l(e,2),n=t[0],r=l(t[1],3),o=r[0],a=r[1],i=r[2],s=e=>{var t=e/255;return t<=.03928?t/12.92:Math.pow((t+.055)/1.055,2.4)},u=.2126*s(o)+.7152*s(a)+.0722*s(i),c=(u+.05)/.05,d=1.05/(u+.05);b[n.toLowerCase()]=c>=d?"#000000":"#ffffff"});var L=new Map,I=new Map;function P(e){return"toast-container-".concat(function(e){return String(e).toLowerCase().trim().replace(/\bbelow\b/g,"bottom").replace(/\s+/g,"-").replace(/[^a-z0-9-]/g,"-").replace(/-{2,}/g,"-")}(e))}function A(e,t){return W.apply(this,arguments)}function W(){return W=r(s().m(function e(t,n){var o,a,i;return s().w(function(e){for(;;)switch(e.p=e.n){case 0:if(o=P(t.position),!I.has(o)){e.n=1;break}return e.a(2,I.get(o));case 1:return a=r(s().m(function e(){var r,a,i,u;return s().w(function(e){for(;;)switch(e.n){case 0:if(null==(r=L.get(o))||!r.isConnected){e.n=1;break}return e.a(2,r);case 1:if((a=document.getElementById(o))&&!a.isConnected&&document.body.appendChild(a),a){e.n=3;break}if((a=document.createElement("div")).id=o,a.setAttribute("role","status"),a.setAttribute("aria-atomic","true"),a.style.position="fixed",a.style.zIndex="9999",a.style.inset="auto 10px 10px auto",a.style.display="flex",a.style.justifyContent="space-between",a.style.alignItems="center",a.style.flexDirection="column",a.style.overflow="hidden","function"!=typeof n){e.n=2;break}return e.n=2,n(a,t);case 2:document.body.appendChild(a),e.n=4;break;case 3:if(a.style.position=a.style.position||"fixed",a.style.zIndex=a.style.zIndex||"9999","function"!=typeof n){e.n=4;break}return e.n=4,n(a,t);case 4:if((i=document.querySelectorAll("#".concat(o))).length>1)for(u=1;u<i.length;u++)try{i[u].remove()}catch(e){}return L.set(o,a),e.a(2,a)}},e)}))(),I.set(o,a),e.p=2,e.n=3,a;case 3:return i=e.v,e.a(2,i);case 4:return e.p=4,I.delete(P(t.position)),e.f(4);case 5:return e.a(2)}},e,null,[[2,,4,5]])})),W.apply(this,arguments)}function z(e,t){return B.apply(this,arguments)}function B(){return(B=r(s().m(function e(t,n){var r;return s().w(function(e){for(;;)switch(e.n){case 0:if(t&&n.position){e.n=1;break}throw new Error("Invalid container or position!");case 1:if(D(t),r=q(n.position),!R(t,n,r)){e.n=2;break}return e.a(2);case 2:if(!_(t,r)){e.n=3;break}return e.a(2);case 3:F(t,r);case 4:return e.a(2)}},e)}))).apply(this,arguments)}function D(e){e.style.top="auto",e.style.bottom="auto",e.style.left="auto",e.style.right="auto",e.style.transform="none"}function q(e){var t=e.toLowerCase().trim();return{hasTop:t.includes("top"),hasBottom:t.includes("bottom")||t.includes("below"),hasLeft:t.includes("left"),hasRight:t.includes("right"),hasCenter:t.includes("center"),hasFullWidth:t.includes("top-full-width")||t.includes("bottom-full-width")||t.includes("fullwidth")}}function R(e,t,n){return!!n.hasFullWidth&&(t.maxWidth="100vw",n.hasTop?(e.style.top="10px",e.style.left="10px",e.style.right="10px",!0):!!n.hasBottom&&(e.style.bottom="10px",e.style.left="10px",e.style.right="10px",!0))}function _(e,t){return!!t.hasCenter&&(!t.hasTop||t.hasLeft||t.hasRight?!t.hasBottom||t.hasLeft||t.hasRight?!t.hasLeft||t.hasTop||t.hasBottom?!t.hasRight||t.hasTop||t.hasBottom?!(t.hasLeft||t.hasRight||t.hasTop||t.hasBottom)&&(e.style.top="50%",e.style.left="50%",e.style.transform="translate(-50%, -50%)",!0):(e.style.right="10px",e.style.top="50%",e.style.transform="translateY(-50%)",!0):(e.style.left="10px",e.style.top="50%",e.style.transform="translateY(-50%)",!0):(e.style.bottom="10px",e.style.left="50%",e.style.transform="translateX(-50%)",!0):(e.style.top="10px",e.style.left="50%",e.style.transform="translateX(-50%)",!0))}function F(e,t){t.hasBottom?e.style.bottom="10px":t.hasTop&&(e.style.top="10px"),t.hasRight?e.style.right="10px":t.hasLeft?e.style.left="10px":(e.style.bottom="10px",e.style.left="50%",e.style.transform="translateX(-50%)")}class H{constructor(e,t){this.callback=e,this.delay=t,this.remaining=t,this.startTime=null,this.timeoutId=null,this.isPaused=!1,this.isCompleted=!1}start(){return this.isCompleted||this.timeoutId||(this.startTime=Date.now(),this.timeoutId=setTimeout(()=>{this.isCompleted=!0,this.timeoutId=null,this.callback()},this.remaining)),this}pause(){return this.isPaused||!this.timeoutId||this.isCompleted||(clearTimeout(this.timeoutId),this.timeoutId=null,this.remaining-=Date.now()-this.startTime,this.remaining=Math.max(0,this.remaining),this.isPaused=!0),this}resume(){return!this.isPaused||this.isCompleted||(this.isPaused=!1,this.start()),this}clear(){return this.timeoutId&&(clearTimeout(this.timeoutId),this.timeoutId=null),this.isCompleted=!0,this}getRemainingTime(){return this.isCompleted?0:this.isPaused?this.remaining:this.timeoutId?Math.max(0,this.remaining-(Date.now()-this.startTime)):this.delay}}var N=new Map,G=new Map,U=[],Y=0;function X(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=String(e.type).trim().toLowerCase(),n=function(e){for(var t=5381,n=0;n<e.length;n++)t=(t<<5)+t+e.charCodeAt(n);return t>>>0}(String(e.message||"")).toString(16),r=String(e.position).trim().toLowerCase();return"".concat(t,"|").concat(n,"|").concat(r)}function $(){return J.apply(this,arguments)}function J(){return J=r(s().m(function e(){var t,n,o,a,i,u=arguments;return s().w(function(e){for(;;)switch(e.p=e.n){case 0:if(t=u.length>0&&void 0!==u[0]?u[0]:{},e.p=1,n=X(t),!N.has(n)){e.n=5;break}if(o=N.get(n)){e.n=2;break}throw new Error("Active toast with key ".concat(n," not found"));case 2:return o.count++,o.timer.clear(),o.timer=V(o.toast,t),e.n=3,Z(o);case 3:return e.n=4,se(o);case 4:return e.a(2);case 5:if(!G.has(n)){e.n=7;break}if(a=G.get(n)){e.n=6;break}throw new Error("Pending toast with key ".concat(n," not found"));case 6:return a.count++,e.a(2);case 7:i={options:t,count:1,rafId:0},G.set(n,i),i.rafId=requestAnimationFrame(r(s().m(function e(){var t;return s().w(function(e){for(;;)switch(e.p=e.n){case 0:if(t=G.get(n)){e.n=1;break}return e.a(2);case 1:if(G.delete(n),!(Y>=3)){e.n=3;break}return U.push({options:t.options,key:n,count:t.count}),e.n=2,re();case 2:return e.a(2);case 3:return e.p=3,e.n=4,K(t.options,n,t.count);case 4:e.n=6;break;case 5:e.p=5,e.v;case 6:return e.a(2)}},e,null,[[3,5]])}))),e.n=9;break;case 8:e.p=8,e.v;case 9:return e.a(2)}},e,null,[[1,8]])})),J.apply(this,arguments)}function K(e,t,n){return Q.apply(this,arguments)}function Q(){return(Q=r(s().m(function e(t,n,r){var o,a,i,u,l,c,d,p;return s().w(function(e){for(;;)switch(e.p=e.n){case 0:if(e.p=0,t&&"object"==typeof t){e.n=1;break}throw new TypeError("options must be an object");case 1:return Y++,e.n=2,A(t,z);case 2:if(o=e.v){e.n=3;break}throw new Error("Failed to create toast container");case 3:return e.n=4,T(t,te);case 4:if(a=e.v){e.n=5;break}throw new Error("Toast element creation failed");case 5:if(i=document.createElement("div"),Object.assign(i.style,{position:"relative",display:"inline-block",overflow:"visible",marginBottom:"10px",zIndex:"0",width:"100%"}),u=document.createElement("div"),Object.assign(u.style,{position:"relative",overflow:"hidden",zIndex:"1"}),u.appendChild(a),i.appendChild(u),o.id.includes("toast-container-")&&o.appendChild(i),l=!1!==t.pauseOnHover&&(!0===t.pauseOnHover||!!t.cta),c={outer:i,toast:a,count:Math.max(1,Math.floor(null!=r?r:0)),timeout:null,pauseOnHover:l},N.set(n,c),a._key=n,!(c.count>1)){e.n=6;break}return e.n=6,se(c);case 6:return c.timer=V(a,t),e.n=7,Z(c);case 7:e.n=10;break;case 8:return e.p=8,e.v,Y=Math.max(0,Y-1),d=document.querySelector('[id^="toast-container-"]')||document.body,p=d,e.n=9,O(t,te);case 9:p.appendChild.call(p,e.v);case 10:return e.a(2)}},e,null,[[0,8]])}))).apply(this,arguments)}function V(e,t){var n,o=Number(null!==(n=t.duration)&&void 0!==n?n:1800)+5,a=new H(r(s().m(function t(){return s().w(function(t){for(;;)switch(t.n){case 0:return t.n=1,te(e);case 1:return t.a(2,t.v)}},t)})),o);return a.start(),a}function Z(e){return ee.apply(this,arguments)}function ee(){return(ee=r(s().m(function e(t){var n,r,o,a,i,u;return s().w(function(e){for(;;)switch(e.n){case 0:if(t.pauseOnHover&&t.outer&&t.timer){e.n=1;break}return e.a(2);case 1:n=t.outer,r=t.timer,o=()=>r.pause(),a=()=>r.resume(),i=e=>{e.target.matches("[tabindex], div, span, button, a")&&r.pause()},u=e=>{n.contains(e.relatedTarget)||r.resume()},n.addEventListener("mouseenter",o),n.addEventListener("mouseleave",a),n.addEventListener("focusin",i),n.addEventListener("focusout",u),n._pauseCleanup=()=>{n.removeEventListener("mouseenter",o),n.removeEventListener("mouseleave",a),n.removeEventListener("focusin",i),n.removeEventListener("focusout",u)};case 2:return e.a(2)}},e)}))).apply(this,arguments)}function te(e){return ne.apply(this,arguments)}function ne(){return(ne=r(s().m(function e(t){var n,r,o,a,i;return s().w(function(e){for(;;)switch(e.p=e.n){case 0:if(e.p=1,null!=t&&t._key){e.n=2;break}return e.a(2);case 2:if(a=N.get(t._key)){e.n=3;break}return e.a(2);case 3:return null===(n=a.timer)||void 0===n||n.clear(),null===(r=a.outer)||void 0===r||null===(o=r._pauseCleanup)||void 0===o||o.call(r),N.delete(t._key),Y=Math.max(0,Y-1),(i=a.outer.querySelector(".toast-count-badge"))&&i.remove(),e.n=4,ae(a.outer);case 4:return e.n=5,re();case 5:e.n=7;break;case 6:e.p=6,e.v;case 7:return e.a(2)}},e,null,[[1,6]])}))).apply(this,arguments)}function re(){return oe.apply(this,arguments)}function oe(){return(oe=r(s().m(function e(){var t,n;return s().w(function(e){for(;;)switch(e.n){case 0:if(!(Y<3&&U.length)){e.n=3;break}if(t=U.shift(),!N.has(t.key)){e.n=2;break}return(n=N.get(t.key)).count+=t.count,e.n=1,se(n);case 1:return e.a(3,0);case 2:K(t.options,t.key,t.count),e.n=0;break;case 3:return e.a(2)}},e)}))).apply(this,arguments)}function ae(e){return ie.apply(this,arguments)}function ie(){return(ie=r(s().m(function e(t){return s().w(function(e){for(;;)switch(e.n){case 0:if(t){e.n=1;break}return e.a(2,Promise.resolve());case 1:return e.a(2,new Promise(e=>{var n=!1,r=()=>{n||(n=!0,f(t),e())},o=t.firstElementChild||t;if(!o)return e();var a=e=>{try{if(e.target!==o)return;o.removeEventListener("transitionend",a,!0),r()}catch(e){}};try{o.addEventListener("transitionend",a,!0)}catch(e){}setTimeout(()=>{try{o.removeEventListener("transitionend",a,!0),r()}catch(e){}},700)}))}},e)}))).apply(this,arguments)}function se(e){return ue.apply(this,arguments)}function ue(){return(ue=r(s().m(function e(t){var n,r,o,a;return s().w(function(e){for(;;)switch(e.n){case 0:if(n=t.outer,r=t.count,n&&n instanceof HTMLElement){e.n=1;break}throw new Error("updateBadge: outer must be a valid HTMLElement");case 1:if(!(r<2)){e.n=2;break}return(o=n.querySelector(".toast-count-badge"))&&o.remove(),e.a(2);case 2:(a=n.querySelector(".toast-count-badge"))||((a=document.createElement("span")).className="toast-count-badge",a.setAttribute("aria-label","".concat(r," identical notifications")),Object.assign(a.style,{position:"absolute",top:"6px",right:"6px",backgroundColor:"#f44336",color:"#fff",borderRadius:"50%",minWidth:"20px",height:"20px",fontSize:"12px",fontWeight:"600",display:"flex",alignItems:"center",justifyContent:"center",border:"2px solid #fff",boxShadow:"0 2px 6px rgba(0,0,0,0.3)",zIndex:"2",pointerEvents:"none",transition:"transform 150ms ease"}),n.appendChild(a)),a.textContent=r>99?"99+":String(r);try{a.style.transform="scale(1.2)",setTimeout(()=>a.style.transform="scale(1)",150)}catch(e){}case 3:return e.a(2)}},e)}))).apply(this,arguments)}var le={success:"#28a745",error:"#dc3545",warning:"#ffc107",info:"#17a2b8"},ce={success:"Operation completed successfully!",error:"Something went wrong!",warning:"Warning message!",info:"Information message!"},de=[],pe=!1;function fe(){return he.apply(this,arguments)}function he(){return(he=r(s().m(function e(){return s().w(function(e){for(;;)switch(e.n){case 0:if(!pe){e.n=1;break}return e.a(2);case 1:"undefined"!=typeof window&&"undefined"!=typeof document&&("complete"===document.readyState||"interactive"===document.readyState?(pe=!0,de.forEach(e=>setTimeout(()=>me(e),2500)),de.length=0):document.addEventListener("DOMContentLoaded",()=>{pe=!0,de.forEach(e=>setTimeout(()=>me(e),2500)),de.length=0},{once:!0}));case 2:return e.a(2)}},e)}))).apply(this,arguments)}function me(){return ye.apply(this,arguments)}function ye(){return ye=r(s().m(function e(){var t,n,r,o=arguments;return s().w(function(e){for(;;)switch(e.p=e.n){case 0:return t=o.length>0&&void 0!==o[0]?o[0]:{},e.p=1,e.n=2,ke(t);case 2:return n=e.v,e.n=3,ve(n);case 3:return e.n=4,$(n);case 4:e.n=6;break;case 5:e.p=5,e.v,r="string"==typeof(null==t?void 0:t.message)&&null!==(null==t?void 0:t.message)?"".concat(t.message.substring(0,200)," toast creation failed!"):"Toast creation failed!",alert(r);case 6:return e.a(2)}},e,null,[[1,5]])})),ye.apply(this,arguments)}function ge(){return be.apply(this,arguments)}function be(){return be=r(s().m(function e(){var t,n=arguments;return s().w(function(e){for(;;)switch(e.n){case 0:if(t=n.length>0&&void 0!==n[0]?n[0]:{},"undefined"!=typeof window&&"undefined"!=typeof document){e.n=1;break}return e.a(2);case 1:return e.n=2,fe();case 2:if(pe){e.n=3;break}return de.push(t),e.a(2);case 3:return e.n=4,me(t);case 4:return e.a(2)}},e)})),be.apply(this,arguments)}function ve(e){return we.apply(this,arguments)}function we(){return(we=r(s().m(function e(t){return s().w(function(e){for(;;)switch(e.p=e.n){case 0:return e.p=0,e.n=1,A(t,z);case 1:return e.a(2,e.v);case 2:return e.p=2,e.v,e.a(2,document.body)}},e,null,[[0,2]])}))).apply(this,arguments)}function ke(e){return xe.apply(this,arguments)}function xe(){return(xe=r(s().m(function e(t){var n,r,o,a,u,l,c,d,p,f;return s().w(function(e){for(;;)if(0===e.n){o=null==t||null===(n=t.position)||void 0===n||null===(n=n.toLowerCase())||void 0===n?void 0:n.trim(),a=null!=o&&o.includes("top-full-width")||null!=o&&o.includes("bottom-full-width")?"100vw":"400px",(u=i(i({},{pauseOnHover:void 0,duration:2500,position:"bottom-right",type:"info",borderRadius:"50px",backgroundColor:void 0,textColor:void 0,showCloseButton:!0,animationDuration:"0.4s",animationType:"fade",animationEasing:"ease",showProgressBar:!0,progressColor:void 0,progressHeight:"4px",progressPosition:"bottom",fontPosition:"relative",fontPadding:void 0,fontBorderRadius:void 0,fontBackgroundColor:void 0,fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"',fontSize:"14px",fontWeight:"400",fontLineHeight:"1.4",fontDirection:"auto",wrapText:"normal",maxWidth:a}),"object"!=typeof t||Array.isArray(t)?{}:t)).message=null!==(r=null==t?void 0:t.message)&&void 0!==r?r:u.message;try{u.backgroundColor||(u.backgroundColor=null!==(c=null===(d=le)||void 0===d?void 0:d[u.type])&&void 0!==c?c:window.matchMedia("(prefers-color-scheme: dark)").matches?"#f5f5f5":"#111111"),u.message=u.message||(null===(l=ce)||void 0===l?void 0:l[u.type])||"No Message Provided!",!u.textColor&&u.backgroundColor&&(p=v(u.backgroundColor),u.textColor=p),!u.progressColor&&u.backgroundColor&&(u.textColor?u.progressColor=u.textColor:(f=v(u.backgroundColor),u.progressColor=f))}catch(e){}return"string"!=typeof u.message&&(u.message="No Message Provided!"),e.a(2,u)}},e)}))).apply(this,arguments)}function Ce(e){try{e&&"object"==typeof e&&!Array.isArray(e)&&(le=i(i({},le),e))}catch(e){}}function Se(e){try{e&&"object"==typeof e&&!Array.isArray(e)&&(ce=i(i({},ce),e))}catch(e){}}var Ee=function(){var e=r(s().m(function e(){var t;return s().w(function(e){for(;;)switch(e.n){case 0:return t=document.querySelector('[id^="toast-"]:not([id*="container"])'),e.n=1,te(t);case 1:return e.a(2)}},e)}));return function(){return e.apply(this,arguments)}}();try{"undefined"!=typeof window&&(window.customizableToast={createToast:ge,setDefaultColors:Ce,setDefaultMessages:Se,noop:Ee})}catch(e){}e.createToast=ge,e.noop=Ee,e.setDefaultColors=Ce,e.setDefaultMessages=Se});
|
|
18
|
-
//# sourceMappingURL=index.umd.js.map
|
|
17
|
+
var e,t,n="function"==typeof Symbol?Symbol:{},r=n.iterator||"@@iterator",a=n.toStringTag||"@@toStringTag";function o(n,r,a,o){var u=r&&r.prototype instanceof s?r:s,c=Object.create(u.prototype);return l(c,"_invoke",function(n,r,a){var o,s,u,l=0,c=a||[],f=!1,d={p:0,n:0,v:e,a:p,f:p.bind(e,4),d:function(t,n){return o=t,s=0,u=e,d.n=n,i}};function p(n,r){for(s=n,u=r,t=0;!f&&l&&!a&&t<c.length;t++){var a,o=c[t],p=d.p,h=o[2];n>3?(a=h===r)&&(u=o[(s=o[4])?5:(s=3,3)],o[4]=o[5]=e):o[0]<=p&&((a=n<2&&p<o[1])?(s=0,d.v=r,d.n=o[1]):p<h&&(a=n<3||o[0]>r||r>h)&&(o[4]=n,o[5]=r,d.n=h,s=0))}if(a||n>1)return i;throw f=!0,r}return function(a,c,h){if(l>1)throw TypeError("Generator is already running");for(f&&1===c&&p(c,h),s=c,u=h;(t=s<2?e:u)||!f;){o||(s?s<3?(s>1&&(d.n=-1),p(s,u)):d.n=u:d.v=u);try{if(l=2,o){if(s||(a="next"),t=o[a]){if(!(t=t.call(o,u)))throw TypeError("iterator result is not an object");if(!t.done)return t;u=t.value,s<2&&(s=0)}else 1===s&&(t=o.return)&&t.call(o),s<2&&(u=TypeError("The iterator does not provide a '"+a+"' method"),s=1);o=e}else if((t=(f=d.n<0)?u:n.call(r,d))!==i)break}catch(t){o=e,s=1,u=t}finally{l=1}}return{value:t,done:f}}}(n,a,o),!0),c}var i={};function s(){}function c(){}function f(){}t=Object.getPrototypeOf;var d=[][r]?t(t([][r]())):(l(t={},r,function(){return this}),t),p=f.prototype=s.prototype=Object.create(d);function h(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,f):(e.__proto__=f,l(e,a,"GeneratorFunction")),e.prototype=Object.create(p),e}return c.prototype=f,l(p,"constructor",f),l(f,"constructor",c),c.displayName="GeneratorFunction",l(f,a,"GeneratorFunction"),l(p),l(p,a,"Generator"),l(p,r,function(){return this}),l(p,"toString",function(){return"[object Generator]"}),(u=function(){return{w:o,m:h}})()}function l(e,t,n,r){var a=Object.defineProperty;try{a({},"",{})}catch(e){a=0}l=function(e,t,n,r){function o(t,n){l(e,t,function(e){return this._invoke(t,n,e)})}t?a?a(e,t,{value:n,enumerable:!r,configurable:!r,writable:!r}):e[t]=n:(o("next",0),o("throw",1),o("return",2))},l(e,t,n,r)}function c(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,s=[],u=!0,l=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;u=!1}else for(;!(u=(r=o.call(n)).done)&&(s.push(r.value),s.length!==t);u=!0);}catch(e){l=!0,a=e}finally{try{if(!u&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(l)throw a}}return s}}(e,t)||f(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function f(e,n){if(e){if("string"==typeof e)return t(e,n);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?t(e,n):void 0}}function d(e){var t=Date.now().toString(36),n=Math.floor(1048575*Math.random()).toString(36);return"".concat(e,"-").concat(t,"-").concat(n)}function p(e,t){return h.apply(this,arguments)}function h(){return(h=r(u().m(function e(t,n){var r;return u().w(function(e){for(;;)switch(e.n){case 0:if(t&&n){e.n=1;break}throw new Error("tagName and prefix are required");case 1:return(r=document.createElement(t)).id=d(n),e.a(2,r)}},e)}))).apply(this,arguments)}function m(e){return y.apply(this,arguments)}function y(){return(y=r(u().m(function e(t){var n;return u().w(function(e){for(;;)switch(e.p=e.n){case 0:if(t){e.n=1;break}return e.a(2,!0);case 1:if(e.p=1,null==t||null===(n=t.parentNode)||void 0===n||!n.id.includes("toast-container-")){e.n=2;break}return t.parentNode.removeChild(t),e.a(2,!0);case 2:e.n=4;break;case 3:e.p=3,e.v;case 4:if(e.p=4,!t.remove){e.n=5;break}return t.remove(),e.a(2,!0);case 5:e.n=7;break;case 6:e.p=6,e.v;case 7:return e.p=7,Object.assign(t.style,{display:"none",opacity:"0",pointerEvents:"none",position:"absolute",left:"-9999px"}),e.a(2,!0);case 8:return e.p=8,e.v,e.a(2,!1)}},e,null,[[7,8],[4,6],[1,3]])}))).apply(this,arguments)}function g(e){return v.apply(this,arguments)}function v(){return(v=r(u().m(function e(t){var n,r;return u().w(function(e){for(;;)switch(e.n){case 0:if(!("number"==typeof t&&t>0)){e.n=1;break}return e.a(2,t);case 1:if("string"!=typeof t){e.n=3;break}if(!t.endsWith("s")||t.endsWith("ms")){e.n=2;break}return n=1e3*parseFloat(t),e.a(2,n>0?n:500);case 2:return r=parseFloat(t),e.a(2,r>0?r:500);case 3:return e.a(2,500)}},e)}))).apply(this,arguments)}var b=new class{constructor(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:200;this.maxSize=e,this.map=new Map}get(e){if(this.map.has(e)){var t=this.map.get(e);return this.map.delete(e),this.map.set(e,t),t}}set(e,t){if(this.map.has(e))this.map.delete(e);else if(this.map.size>=this.maxSize){var n=this.map.keys().next().value;this.map.delete(n)}this.map.set(e,t)}}(200),w={};function k(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;if(!e)return"snow";var n,r,a,o="".concat(e,"|").concat(t),i=b.get(o);if(i)return i;if(w[null==e?void 0:e.toLowerCase()]){var s=w[e.toLowerCase()];return b.set(o,s),s}try{var u=null==e?void 0:e.match(/^#([0-9a-f]{3,8})$/i);if(u){var l=u[1];3===l.length&&(l=l.split("").map(e=>e+e).join("")),n=parseInt(l.slice(0,2),16),r=parseInt(l.slice(2,4),16),a=parseInt(l.slice(4,6),16)}else{var f=null==e?void 0:e.match(/rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*[\d.]+)?\)/i);if(!f)throw new Error("Unknown color");n=Number(f[1]),r=Number(f[2]),a=Number(f[3])}}catch(e){n=50+Math.floor(206*Math.random()),r=50+Math.floor(206*Math.random()),a=50+Math.floor(206*Math.random())}n=Math.round(n*t+255*(1-t)),r=Math.round(r*t+255*(1-t)),a=Math.round(a*t+255*(1-t));var d=(e,t,n)=>{var r=[e,t,n].map(e=>(e/=255)<=.03928?e/12.92:Math.pow((e+.055)/1.055,2.4));return.2126*r[0]+.7152*r[1]+.0722*r[2]},p=(e,t)=>{var n=d(...e),r=d(...t);return(Math.max(n,r)+.05)/(Math.min(n,r)+.05)},h=((e,t,n)=>{e/=255,t/=255,n/=255;var r,a,o=Math.max(e,t,n),i=Math.min(e,t,n),s=(o+i)/2;if(o===i)r=a=0;else{var u=o-i;switch(a=s>.5?u/(2-o-i):u/(o+i),o){case e:r=(t-n)/u+(t<n?6:0);break;case t:r=(n-e)/u+2;break;case n:r=(e-t)/u+4}r/=6}return[360*r,a,s]})(n,r,a),m=c(h,3),y=m[0],g=m[1],v=m[2],k=((e,t,n)=>{var r,a,o;if(e/=360,0===t)r=a=o=n;else{var i=(e,t,n)=>(n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+6*(t-e)*n:n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e),s=n<.5?n*(1+t):n+t-n*t,u=2*n-s;r=i(u,s,e+1/3),a=i(u,s,e),o=i(u,s,e-1/3)}return[Math.round(255*r),Math.round(255*a),Math.round(255*o)]})(y,g,v<.5?Math.min(v+.5,1):Math.max(v-.5,0)),x=c(k,3),C=x[0],E=x[1],S=x[2];if(p([n,r,a],[C,E,S])<4.5){var T=c(p([n,r,a],[0,0,0])>=p([n,r,a],[255,255,255])?[0,0,0]:[255,255,255],3);C=T[0],E=T[1],S=T[2]}var O=((e,t,n)=>"#".concat(e.toString(16).padStart(2,"0")).concat(t.toString(16).padStart(2,"0")).concat(n.toString(16).padStart(2,"0")))(C,E,S);return b.set(o,O),O}function x(e){if(!e||"string"!=typeof e)return"";var t=e.replace(/<\/?(script|iframe|object|embed|link|meta|style|form|input|button)[^>]*>/gi,"");t=(t=t.replace(/\s(on\w+)\s*=\s*(['"])[\s\S]*?\2/gi,"")).replace(/(href|src)\s*=\s*(['"])\s*javascript:[^'"]*\2/gi,"$1=$2#$2");var n=document.createElement("div");n.innerHTML=t;var r=new Set(["DIV","SPAN","P","BR","STRONG","B","EM","I","U","SMALL","UL","OL","LI","A","IMG","PRE","CODE","MARK"]),a=new Set(["href","src","alt","title","class","style","target","rel"]);function o(e){if(e.nodeType===Node.TEXT_NODE)return document.createTextNode(e.nodeValue);if(e.nodeType!==Node.ELEMENT_NODE)return null;var t=e.tagName.toUpperCase();if(!r.has(t)){var n=document.createDocumentFragment();return Array.from(e.childNodes).forEach(e=>{var t=o(e);t&&n.appendChild(t)}),n}var i=document.createElement(e.tagName);return Array.from(e.attributes||[]).forEach(t=>{var n=t.name.toLowerCase(),r=t.value;a.has(n)&&("href"!==n&&"src"!==n||!/^\s*javascript:/i.test(r))&&("src"!==n||/^\s*(https?:|data:image\/)/i.test(r))&&("target"===n&&"_blank"===r&&i.setAttribute("rel",(e.getAttribute("rel")||"")+" noopener noreferrer"),i.setAttribute(n,r))}),Array.from(e.childNodes).forEach(e=>{var t=o(e);t&&i.appendChild(t)}),i}var i=document.createDocumentFragment();Array.from(n.childNodes).forEach(e=>{var t=o(e);t&&i.appendChild(t)});var s=document.createElement("div");return s.appendChild(i),s.innerHTML}function C(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!e)return"";try{if(!t.forceFallback&&function(){try{if("undefined"!=typeof window&&window.DOMPurify)return!0}catch(e){}return!1}())return window.DOMPurify.sanitize(e,{ADD_ATTR:["target"],ALLOWED_URI_REGEXP:/^(?:(?:https?|mailto|ftp|tel|data):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i})}catch(e){}return x(e)}function E(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.size||14,n=e.color||"currentColor",r=e.text||"",a=document.createElement("span");a.className="toast-loader",a.style.display="inline-flex",a.style.alignItems="center",a.style.gap="8px";var o="http://www.w3.org/2000/svg",i=document.createElementNS(o,"svg");i.setAttribute("width",String(t)),i.setAttribute("height",String(t)),i.setAttribute("viewBox","0 0 50 50"),i.setAttribute("aria-hidden","true");var s=document.createElementNS(o,"circle");if(s.setAttribute("cx","25"),s.setAttribute("cy","25"),s.setAttribute("r","20"),s.setAttribute("fill","none"),s.setAttribute("stroke",n),s.setAttribute("stroke-width","4"),s.setAttribute("stroke-linecap","round"),s.style.opacity="0.85",s.style.strokeDasharray="90",s.style.strokeDashoffset="60",s.style.transformOrigin="center",s.style.animation="toast-spinner 1s linear infinite",i.appendChild(s),a.appendChild(i),r){var u=document.createElement("span");u.style.fontSize="13px",u.textContent=r,a.appendChild(u)}if(!document.getElementById("toast-spinner-styles")){var l=document.createElement("style");l.id="toast-spinner-styles",l.innerHTML="@keyframes toast-spinner { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } }",document.head.appendChild(l)}return a}function S(e,t,n){var a=null==t?void 0:t.cta;if(a){a.label||(a.label="CTA Label Missing!");var o=!!a.href&&"link"===a.variant,i=document.createElement(o?"a":"button");o?(i.href=a.href,a.target&&(i.target=a.target),i.rel=a.rel||("_blank"===a.target?"noopener noreferrer":"")):i.type="button",i.setAttribute("aria-label",a.ariaLabel||a.label),Object.assign(i.style,{marginLeft:"10px",padding:"6px 10px",borderRadius:"6px",fontSize:"12px",fontWeight:"600",lineHeight:"1",border:"1px solid rgba(255,255,255,0.35)",color:t.textColor||"#fff",background:"rgba(255,255,255,0.15)",cursor:"pointer",whiteSpace:"nowrap",flexShrink:"0"}),i.textContent=a.label;var s=function(){var t=r(u().m(function t(r){var o;return u().w(function(t){for(;;)switch(t.p=t.n){case 0:if(t.p=0,"function"!=typeof a.onClick){t.n=1;break}if(null==(o=a.onClick(r))||!o.then){t.n=1;break}return t.n=1,o;case 1:return t.p=1,!1!==a.autoClose&&n(e),t.f(1);case 2:return t.a(2)}},t,null,[[0,,1,2]])}));return function(e){return t.apply(this,arguments)}}();i.addEventListener("click",s),i._cleanup=()=>i.removeEventListener("click",s),e.appendChild(i)}}function T(e,t,n){var r=document.createElement("button");r.setAttribute("aria-label","Close notification"),r.setAttribute("title","Close"),r.textContent="×",Object.assign(r.style,{background:"none",border:"none",color:t.textColor||"white",fontSize:"18px",marginLeft:"10px",cursor:"pointer"});var a=()=>n(e);r.addEventListener("click",a),e._cleanupCloseButton=()=>{r.removeEventListener("click",a)},e.appendChild(r)}function O(e,t){var n=document.createElement("div"),r=t.borderRadius||0,a=parseInt(r,10),o=a?"calc(100% - ".concat(a-10+"px",")"):"100%",i=a?"12px":"0";Object.assign(n.style,{position:"absolute",left:"".concat(i),height:t.progressHeight||"4px",background:t.progressColor||"rgba(255, 255, 255, 0.3)",width:"".concat(o),transition:"width ".concat(t.duration||1800,"ms linear"),["top"===t.progressPosition?"top":"bottom"]:"0",borderRadius:t.borderRadius||"4px"}),e.appendChild(n),setTimeout(()=>{n.offsetWidth,n.style.width="0%"},50)}function A(e){setTimeout(()=>{requestAnimationFrame(()=>{e.style.opacity="1",e.style.transform="translateY(0)"})},50)}function j(e,t,n){return L.apply(this,arguments)}function L(){return(L=r(u().m(function e(t,n,r){var a,o,i,s,l,c,f,d,p,h;return u().w(function(e){for(;;)switch(e.n){case 0:return e.n=1,g(null==n?void 0:n.animationDuration);case 1:if(i=e.v,t.className="toast toast-".concat(null!==(a=null==n?void 0:n.type)&&void 0!==a?a:"info"),Object.assign(t.style,{background:null==n?void 0:n.backgroundColor,padding:"12px 16px",marginBottom:"10px",borderRadius:null==n?void 0:n.borderRadius,overflow:"hidden",display:"flex",alignItems:"center",justifyContent:"space-between",boxShadow:"0 4px 6px rgba(0, 0, 0, 0.1)",minWidth:"250px",maxWidth:null==n?void 0:n.maxWidth,opacity:"0",position:"relative",cursor:"default",boxSizing:"border-box",userSelect:"text",transition:"opacity ".concat(null==n?void 0:n.animationDuration," ").concat(null==n?void 0:n.animationEasing,", transform ").concat(null==n?void 0:n.animationDuration," ").concat(null==n?void 0:n.animationEasing),transform:"translateY(20px)",zIndex:"9999"}),t.setAttribute("role","alert"),t.setAttribute("aria-live","polite"),t.tabIndex=0,t._animationDuration=i,s=document.createElement("span"),null!=n&&n.wrapText?Object.assign(s.style,{display:"block",whiteSpace:"normal"}):Object.assign(s.style,{display:"-webkit-box",WebkitBoxOrient:"vertical",WebkitLineClamp:"3",whiteSpace:"nowrap"}),Object.assign(s.style,{flex:"1",padding:null==n?void 0:n.fontPadding,fontFamily:null==n?void 0:n.fontFamily,fontSize:null==n?void 0:n.fontSize,fontWeight:null==n?void 0:n.fontWeight,lineHeight:null==n?void 0:n.fontLineHeight,color:null==n?void 0:n.textColor,userSelect:"text",wordBreak:"break-word",overflow:"hidden",textOverflow:"ellipsis",display:"-webkit-box",WebkitLineClamp:"3",WebkitBoxOrient:"vertical"}),l=!!n.allowHtml,c=null!==(o=n.message)&&void 0!==o?o:"",(n.loader||n.showLoader)&&(f=E(n.loader||{}),s.appendChild(f),(d=document.createElement("span")).style.display="inline-block",d.style.width="8px",s.appendChild(d)),l&&"string"==typeof c&&c.trim().length>0)try{for(p=C(c),(h=document.createElement("div")).innerHTML=p;h.firstChild;)s.appendChild(h.firstChild)}catch(e){s.textContent=c}else s.textContent=String(c);s.setAttribute("aria-label","Toast Notification Center"),s.setAttribute("title","string"==typeof c?c.replace(/<[^>]+>/g,""):String(c)),t.appendChild(s),null!=n&&n.cta&&0!==Object.keys(n.cta).length&&S(t,n,r),null!=n&&n.showCloseButton&&T(t,n,r),null!=n&&n.showProgressBar&&O(t,n),A(t);case 2:return e.a(2)}},e)}))).apply(this,arguments)}function M(e,t){return I.apply(this,arguments)}function I(){return(I=r(u().m(function e(t,n){var r,a,o,i;return u().w(function(e){for(;;)switch(e.p=e.n){case 0:for(e.p=0,r=document.createElement("div"),Object.assign(r.style,{background:"#333",color:"white",padding:"10px 15px",position:"fixed",top:"20px",right:"20px",zIndex:"99999",borderRadius:"3px",maxWidth:"250px",wordWrap:"break-word",boxShadow:"0 2px 10px rgba(0,0,0,0.3)",cursor:"pointer"}),a=document.createElement("div"),(o=document.createElement("span")).style.display="inline-block",t.allowHtml?o.innerHTML=C(String(t.message||"Emergency Toast Showing!")):o.textContent=String(t.message||"Emergency Toast Creation Showing!"),a.appendChild(o),(i=document.createElement("span")).style.cssText="float: right; margin-left: 10px; font-weight: bold;",i.textContent="×",a.appendChild(i);r.firstChild;)r.removeChild(r.firstChild);return r.appendChild(a),i.onclick=()=>{r.remove(),n(r)},document.body.appendChild(r),setTimeout(()=>{r.remove(),n(r)},null==t?void 0:t.duration),e.a(2,r);case 1:return e.p=1,e.v,setTimeout(()=>{alert((null==t?void 0:t.message)||"Emergency Toast Creation Showing!"),n(null)},100),e.a(2,null)}},e,null,[[0,1]])}))).apply(this,arguments)}function P(e,t){return D.apply(this,arguments)}function D(){return(D=r(u().m(function e(t,n){var r;return u().w(function(e){for(;;)switch(e.p=e.n){case 0:if(document.querySelector('[id^="toast-container-"]')){e.n=1;break}return e.a(2,null);case 1:return e.p=2,e.n=3,p("div","toast");case 3:return r=e.v,e.n=4,j(r,t,n);case 4:return e.a(2,r);case 5:return e.p=5,e.v,e.n=6,M(t,n);case 6:return r=e.v,e.a(2,r)}},e,null,[[2,5]])}))).apply(this,arguments)}Object.entries({aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}).forEach(e=>{var t=c(e,2),n=t[0],r=c(t[1],3),a=r[0],o=r[1],i=r[2],s=e=>{var t=e/255;return t<=.03928?t/12.92:Math.pow((t+.055)/1.055,2.4)},u=.2126*s(a)+.7152*s(o)+.0722*s(i),l=(u+.05)/.05,f=1.05/(u+.05);w[n.toLowerCase()]=l>=f?"#000000":"#ffffff"});var z=new Map,N=new Map;function B(e){return"toast-container-".concat(function(e){return String(e).toLowerCase().trim().replace(/\bbelow\b/g,"bottom").replace(/\s+/g,"-").replace(/[^a-z0-9-]/g,"-").replace(/-{2,}/g,"-")}(e))}function R(e,t){return W.apply(this,arguments)}function W(){return W=r(u().m(function e(t,n){var a,o,i;return u().w(function(e){for(;;)switch(e.p=e.n){case 0:if(a=B(t.position),!N.has(a)){e.n=1;break}return e.a(2,N.get(a));case 1:return o=r(u().m(function e(){var r,o,i,s;return u().w(function(e){for(;;)switch(e.n){case 0:if(null==(r=z.get(a))||!r.isConnected){e.n=1;break}return e.a(2,r);case 1:if((o=document.getElementById(a))&&!o.isConnected&&document.body.appendChild(o),o){e.n=3;break}if((o=document.createElement("div")).id=a,o.setAttribute("role","status"),o.setAttribute("aria-atomic","true"),o.style.position="fixed",o.style.zIndex="9999",o.style.inset="auto 10px 10px auto",o.style.display="flex",o.style.justifyContent="space-between",o.style.alignItems="center",o.style.flexDirection="column",o.style.overflow="hidden","function"!=typeof n){e.n=2;break}return e.n=2,n(o,t);case 2:document.body.appendChild(o),e.n=4;break;case 3:if(o.style.position=o.style.position||"fixed",o.style.zIndex=o.style.zIndex||"9999","function"!=typeof n){e.n=4;break}return e.n=4,n(o,t);case 4:if((i=document.querySelectorAll("#".concat(a))).length>1)for(s=1;s<i.length;s++)try{i[s].remove()}catch(e){}return z.set(a,o),e.a(2,o)}},e)}))(),N.set(a,o),e.p=2,e.n=3,o;case 3:return i=e.v,e.a(2,i);case 4:return e.p=4,N.delete(B(t.position)),e.f(4);case 5:return e.a(2)}},e,null,[[2,,4,5]])})),W.apply(this,arguments)}function H(e,t){return _.apply(this,arguments)}function _(){return(_=r(u().m(function e(t,n){var r;return u().w(function(e){for(;;)switch(e.n){case 0:if(t&&n.position){e.n=1;break}throw new Error("Invalid container or position!");case 1:if(q(t),r=F(n.position),!G(t,n,r)){e.n=2;break}return e.a(2);case 2:if(!U(t,r)){e.n=3;break}return e.a(2);case 3:$(t,r);case 4:return e.a(2)}},e)}))).apply(this,arguments)}function q(e){e.style.top="auto",e.style.bottom="auto",e.style.left="auto",e.style.right="auto",e.style.transform="none"}function F(e){var t=e.toLowerCase().trim();return{hasTop:t.includes("top"),hasBottom:t.includes("bottom")||t.includes("below"),hasLeft:t.includes("left"),hasRight:t.includes("right"),hasCenter:t.includes("center"),hasFullWidth:t.includes("top-full-width")||t.includes("bottom-full-width")||t.includes("fullwidth")}}function G(e,t,n){return!!n.hasFullWidth&&(t.maxWidth="100vw",n.hasTop?(e.style.top="10px",e.style.left="10px",e.style.right="10px",!0):!!n.hasBottom&&(e.style.bottom="10px",e.style.left="10px",e.style.right="10px",!0))}function U(e,t){return!!t.hasCenter&&(!t.hasTop||t.hasLeft||t.hasRight?!t.hasBottom||t.hasLeft||t.hasRight?!t.hasLeft||t.hasTop||t.hasBottom?!t.hasRight||t.hasTop||t.hasBottom?!(t.hasLeft||t.hasRight||t.hasTop||t.hasBottom)&&(e.style.top="50%",e.style.left="50%",e.style.transform="translate(-50%, -50%)",!0):(e.style.right="10px",e.style.top="50%",e.style.transform="translateY(-50%)",!0):(e.style.left="10px",e.style.top="50%",e.style.transform="translateY(-50%)",!0):(e.style.bottom="10px",e.style.left="50%",e.style.transform="translateX(-50%)",!0):(e.style.top="10px",e.style.left="50%",e.style.transform="translateX(-50%)",!0))}function $(e,t){t.hasBottom?e.style.bottom="10px":t.hasTop&&(e.style.top="10px"),t.hasRight?e.style.right="10px":t.hasLeft?e.style.left="10px":(e.style.bottom="10px",e.style.left="50%",e.style.transform="translateX(-50%)")}class X{constructor(e,t){this.callback=e,this.delay=t,this.remaining=t,this.startTime=null,this.timeoutId=null,this.isPaused=!1,this.isCompleted=!1}start(){return this.isCompleted||this.timeoutId||(this.startTime=Date.now(),this.timeoutId=setTimeout(()=>{this.isCompleted=!0,this.timeoutId=null,this.callback()},this.remaining)),this}pause(){return this.isPaused||!this.timeoutId||this.isCompleted||(clearTimeout(this.timeoutId),this.timeoutId=null,this.remaining-=Date.now()-this.startTime,this.remaining=Math.max(0,this.remaining),this.isPaused=!0),this}resume(){return!this.isPaused||this.isCompleted||(this.isPaused=!1,this.start()),this}clear(){return this.timeoutId&&(clearTimeout(this.timeoutId),this.timeoutId=null),this.isCompleted=!0,this}getRemainingTime(){return this.isCompleted?0:this.isPaused?this.remaining:this.timeoutId?Math.max(0,this.remaining-(Date.now()-this.startTime)):this.delay}}var Y=new Map,V=new Map,K=[],J=0;function Q(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=String(e.type).trim().toLowerCase(),n=function(e){for(var t=5381,n=0;n<e.length;n++)t=(t<<5)+t+e.charCodeAt(n);return t>>>0}(String(e.message||"")).toString(16),r=String(e.position).trim().toLowerCase();return"".concat(t,"|").concat(n,"|").concat(r)}function Z(){return ee.apply(this,arguments)}function ee(){return ee=r(u().m(function e(){var t,n,a,o,i,s=arguments;return u().w(function(e){for(;;)switch(e.p=e.n){case 0:if(t=s.length>0&&void 0!==s[0]?s[0]:{},e.p=1,n=Q(t),!Y.has(n)){e.n=5;break}if(a=Y.get(n)){e.n=2;break}throw new Error("Active toast with key ".concat(n," not found"));case 2:return a.count++,a.timer.clear(),a.timer=se(a.toast,t),e.n=3,ue(a);case 3:return e.n=4,ye(a);case 4:return e.a(2);case 5:if(!V.has(n)){e.n=7;break}if(o=V.get(n)){e.n=6;break}throw new Error("Pending toast with key ".concat(n," not found"));case 6:return o.count++,e.a(2);case 7:i={options:t,count:1,rafId:0},V.set(n,i),i.rafId=requestAnimationFrame(r(u().m(function e(){var t;return u().w(function(e){for(;;)switch(e.p=e.n){case 0:if(t=V.get(n)){e.n=1;break}return e.a(2);case 1:if(V.delete(n),!(J>=3)){e.n=3;break}return K.push({options:t.options,key:n,count:t.count}),e.n=2,de();case 2:return e.a(2);case 3:return e.p=3,e.n=4,te(t.options,n,t.count);case 4:e.n=6;break;case 5:e.p=5,e.v;case 6:return e.a(2)}},e,null,[[3,5]])}))),e.n=9;break;case 8:e.p=8,e.v;case 9:return e.a(2)}},e,null,[[1,8]])})),ee.apply(this,arguments)}function te(e,t,n){return ne.apply(this,arguments)}function ne(){return(ne=r(u().m(function e(t,n,r){var a,o,i,s,l,c,f,d;return u().w(function(e){for(;;)switch(e.p=e.n){case 0:if(e.p=0,t&&"object"==typeof t){e.n=1;break}throw new TypeError("options must be an object");case 1:return J++,e.n=2,R(t,H);case 2:if(a=e.v){e.n=3;break}throw new Error("Failed to create toast container");case 3:return e.n=4,P(t,ce);case 4:if(o=e.v){e.n=5;break}throw new Error("Toast element creation failed");case 5:if(i=document.createElement("div"),Object.assign(i.style,{position:"relative",display:"inline-block",overflow:"visible",marginBottom:"10px",zIndex:"0",width:"100%"}),s=document.createElement("div"),Object.assign(s.style,{position:"relative",overflow:"hidden",zIndex:"1"}),s.appendChild(o),i.appendChild(s),a.id.includes("toast-container-")&&a.appendChild(i),l=!1!==t.pauseOnHover&&(!0===t.pauseOnHover||!!t.cta),c={outer:i,toast:o,count:Math.max(1,Math.floor(null!=r?r:0)),timeout:null,pauseOnHover:l},Y.set(n,c),o._key=n,!(c.count>1)){e.n=6;break}return e.n=6,ye(c);case 6:return c.timer=se(o,t),e.n=7,ue(c);case 7:e.n=10;break;case 8:return e.p=8,e.v,J=Math.max(0,J-1),f=document.querySelector('[id^="toast-container-"]')||document.body,d=f,e.n=9,M(t,ce);case 9:d.appendChild.call(d,e.v);case 10:return e.a(2)}},e,null,[[0,8]])}))).apply(this,arguments)}function re(){return(re=r(u().m(function e(){var t,n,r,a,o,i;return u().w(function(e){for(;;)switch(e.p=e.n){case 0:if(e.p=0,0!==Y.size){e.n=1;break}return e.a(2);case 1:if(t=null,document.querySelectorAll('[id^="toast-container-"]').forEach(e=>{var n=Array.from(e.children||[]);if(0!==n.length){var r=n.at(0);r&&(t=r.querySelector('[id^="toast-"]')||r)}}),t||(n=Array.from(Y.entries())).length>0&&(r=n.at(0),a=c(r,2),o=a[1],t=o.toast||o.outer&&o.outer.querySelector('[id^="toast-"]')),t){e.n=2;break}return e.a(2);case 2:return i=t._key?t:t.querySelector('[id^="toast-"]')||t,e.n=3,ce(i);case 3:e.n=5;break;case 4:e.p=4,e.v;case 5:return e.a(2)}},e,null,[[0,4]])}))).apply(this,arguments)}function ae(){return(ae=r(u().m(function e(){var t,n,r,o,i;return u().w(function(e){for(;;)switch(e.p=e.n){case 0:e.p=0,t=Array.from(Y.values()).map(e=>e.toast).filter(Boolean),K.length=0,V.clear(),n=a(t),e.p=1,n.s();case 2:if((r=n.n()).done){e.n=7;break}return o=r.value,e.p=3,e.n=4,ce(o);case 4:e.n=6;break;case 5:e.p=5,e.v;case 6:e.n=2;break;case 7:e.n=9;break;case 8:e.p=8,i=e.v,n.e(i);case 9:return e.p=9,n.f(),e.f(9);case 10:e.n=12;break;case 11:e.p=11,e.v;case 12:return e.a(2)}},e,null,[[3,5],[1,8,9,10],[0,11]])}))).apply(this,arguments)}var oe=function(){return re.apply(this,arguments)},ie=function(){return ae.apply(this,arguments)};function se(e,t){var n,a=Number(null!==(n=t.duration)&&void 0!==n?n:1800)+5,o=new X(r(u().m(function t(){return u().w(function(t){for(;;)switch(t.n){case 0:return t.n=1,ce(e);case 1:return t.a(2,t.v)}},t)})),a);return o.start(),o}function ue(e){return le.apply(this,arguments)}function le(){return(le=r(u().m(function e(t){var n,r,a,o,i,s;return u().w(function(e){for(;;)switch(e.n){case 0:if(t.pauseOnHover&&t.outer&&t.timer){e.n=1;break}return e.a(2);case 1:n=t.outer,r=t.timer,a=()=>r.pause(),o=()=>r.resume(),i=e=>{e.target.matches("[tabindex], div, span, button, a")&&r.pause()},s=e=>{n.contains(e.relatedTarget)||r.resume()},n.addEventListener("mouseenter",a),n.addEventListener("mouseleave",o),n.addEventListener("focusin",i),n.addEventListener("focusout",s),n._pauseCleanup=()=>{n.removeEventListener("mouseenter",a),n.removeEventListener("mouseleave",o),n.removeEventListener("focusin",i),n.removeEventListener("focusout",s)};case 2:return e.a(2)}},e)}))).apply(this,arguments)}function ce(e){return fe.apply(this,arguments)}function fe(){return(fe=r(u().m(function e(t){var n,r,a,o,i;return u().w(function(e){for(;;)switch(e.p=e.n){case 0:if(e.p=0,null!=t&&t._key){e.n=1;break}return e.a(2);case 1:if(o=Y.get(t._key)){e.n=2;break}return e.a(2);case 2:return null===(n=o.timer)||void 0===n||n.clear(),null===(r=o.outer)||void 0===r||null===(a=r._pauseCleanup)||void 0===a||a.call(r),Y.delete(t._key),J=Math.max(0,J-1),(i=o.outer.querySelector(".toast-count-badge"))&&i.remove(),e.n=3,he(o.outer);case 3:return e.n=4,de();case 4:e.n=6;break;case 5:e.p=5,e.v;case 6:return e.a(2)}},e,null,[[0,5]])}))).apply(this,arguments)}function de(){return pe.apply(this,arguments)}function pe(){return(pe=r(u().m(function e(){var t,n;return u().w(function(e){for(;;)switch(e.n){case 0:if(!(J<3&&K.length)){e.n=3;break}if(t=K.shift(),!Y.has(t.key)){e.n=2;break}return(n=Y.get(t.key)).count+=t.count,e.n=1,ye(n);case 1:return e.a(3,0);case 2:te(t.options,t.key,t.count),e.n=0;break;case 3:return e.a(2)}},e)}))).apply(this,arguments)}function he(e){return me.apply(this,arguments)}function me(){return(me=r(u().m(function e(t){return u().w(function(e){for(;;)switch(e.n){case 0:if(t){e.n=1;break}return e.a(2,Promise.resolve());case 1:return e.a(2,new Promise(e=>{var n=!1,r=()=>{n||(n=!0,m(t),e())},a=t.firstElementChild||t;if(!a)return e();var o=e=>{try{if(e.target!==a)return;a.removeEventListener("transitionend",o,!0),r()}catch(e){}};try{a.addEventListener("transitionend",o,!0)}catch(e){}setTimeout(()=>{try{a.removeEventListener("transitionend",o,!0),r()}catch(e){}},700)}))}},e)}))).apply(this,arguments)}function ye(e){return ge.apply(this,arguments)}function ge(){return(ge=r(u().m(function e(t){var n,r,a,o;return u().w(function(e){for(;;)switch(e.n){case 0:if(n=t.outer,r=t.count,n&&n instanceof HTMLElement){e.n=1;break}throw new Error("updateBadge: outer must be a valid HTMLElement");case 1:if(!(r<2)){e.n=2;break}return(a=n.querySelector(".toast-count-badge"))&&a.remove(),e.a(2);case 2:(o=n.querySelector(".toast-count-badge"))||((o=document.createElement("span")).className="toast-count-badge",o.setAttribute("aria-label","".concat(r," identical notifications")),Object.assign(o.style,{position:"absolute",top:"6px",right:"6px",backgroundColor:"#f44336",color:"#fff",borderRadius:"50%",minWidth:"20px",height:"20px",fontSize:"12px",fontWeight:"600",display:"flex",alignItems:"center",justifyContent:"center",border:"2px solid #fff",boxShadow:"0 2px 6px rgba(0,0,0,0.3)",zIndex:"2",pointerEvents:"none",transition:"transform 150ms ease"}),n.appendChild(o)),o.textContent=r>99?"99+":String(r);try{o.style.transform="scale(1.2)",setTimeout(()=>o.style.transform="scale(1)",150)}catch(e){}case 3:return e.a(2)}},e)}))).apply(this,arguments)}var ve={success:"#28a745",error:"#dc3545",warning:"#ffc107",info:"#17a2b8"},be={success:"Operation completed successfully!",error:"Something went wrong!",warning:"Warning message!",info:"Information message!"},we=[],ke=!1;function xe(){return Ce.apply(this,arguments)}function Ce(){return(Ce=r(u().m(function e(){return u().w(function(e){for(;;)switch(e.n){case 0:if(!ke){e.n=1;break}return e.a(2);case 1:"undefined"!=typeof window&&"undefined"!=typeof document&&("complete"===document.readyState||"interactive"===document.readyState?(ke=!0,we.forEach(e=>setTimeout(()=>Ee(e),2500)),we.length=0):document.addEventListener("DOMContentLoaded",()=>{ke=!0,we.forEach(e=>setTimeout(()=>Ee(e),2500)),we.length=0},{once:!0}));case 2:return e.a(2)}},e)}))).apply(this,arguments)}function Ee(){return Se.apply(this,arguments)}function Se(){return Se=r(u().m(function e(){var t,n,r,a=arguments;return u().w(function(e){for(;;)switch(e.p=e.n){case 0:return t=a.length>0&&void 0!==a[0]?a[0]:{},e.p=1,e.n=2,Le(t);case 2:return n=e.v,e.n=3,Ae(n);case 3:return e.n=4,Z(n);case 4:e.n=6;break;case 5:e.p=5,e.v,r="string"==typeof(null==t?void 0:t.message)&&null!==(null==t?void 0:t.message)?"".concat(t.message.substring(0,200)," toast creation failed!"):"Toast creation failed!",alert(r);case 6:return e.a(2)}},e,null,[[1,5]])})),Se.apply(this,arguments)}function Te(){return Oe.apply(this,arguments)}function Oe(){return Oe=r(u().m(function e(){var t,n=arguments;return u().w(function(e){for(;;)switch(e.n){case 0:if(t=n.length>0&&void 0!==n[0]?n[0]:{},"undefined"!=typeof window&&"undefined"!=typeof document){e.n=1;break}return e.a(2);case 1:return e.n=2,xe();case 2:if(ke){e.n=3;break}return we.push(t),e.a(2);case 3:return e.n=4,Ee(t);case 4:return e.a(2)}},e)})),Oe.apply(this,arguments)}function Ae(e){return je.apply(this,arguments)}function je(){return(je=r(u().m(function e(t){return u().w(function(e){for(;;)switch(e.p=e.n){case 0:return e.p=0,e.n=1,R(t,H);case 1:return e.a(2,e.v);case 2:return e.p=2,e.v,e.a(2,document.body)}},e,null,[[0,2]])}))).apply(this,arguments)}function Le(e){return Me.apply(this,arguments)}function Me(){return(Me=r(u().m(function e(t){var n,r,a,o,i,l,c,f,d,p;return u().w(function(e){for(;;)if(0===e.n){a=null==t||null===(n=t.position)||void 0===n||null===(n=n.toLowerCase())||void 0===n?void 0:n.trim(),o=null!=a&&a.includes("top-full-width")||null!=a&&a.includes("bottom-full-width")?"100vw":"400px",(i=s(s({},{allowHtml:!1,sanitizeHtml:!0,pauseOnHover:void 0,duration:2500,position:"bottom-right",type:"info",borderRadius:"50px",backgroundColor:void 0,textColor:void 0,showCloseButton:!0,animationDuration:"0.4s",animationType:"fade",animationEasing:"ease",showProgressBar:!0,progressColor:void 0,progressHeight:"4px",progressPosition:"bottom",fontPosition:"relative",fontPadding:void 0,fontBorderRadius:void 0,fontBackgroundColor:void 0,fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"',fontSize:"14px",fontWeight:"400",fontLineHeight:"1.4",fontDirection:"auto",wrapText:"normal",maxWidth:o}),"object"!=typeof t||Array.isArray(t)?{}:t)).message=null!==(r=null==t?void 0:t.message)&&void 0!==r?r:i.message;try{i.backgroundColor||(i.backgroundColor=null!==(c=null===(f=ve)||void 0===f?void 0:f[i.type])&&void 0!==c?c:window.matchMedia("(prefers-color-scheme: dark)").matches?"#f5f5f5":"#111111"),i.message=i.message||(null===(l=be)||void 0===l?void 0:l[i.type])||"No Message Provided!",!i.textColor&&i.backgroundColor&&(d=k(i.backgroundColor),i.textColor=d),!i.progressColor&&i.backgroundColor&&(i.textColor?i.progressColor=i.textColor:(p=k(i.backgroundColor),i.progressColor=p))}catch(e){}return"string"!=typeof i.message&&(i.message="No Message Provided!"),e.a(2,i)}},e)}))).apply(this,arguments)}function Ie(e){try{e&&"object"==typeof e&&!Array.isArray(e)&&(ve=s(s({},ve),e))}catch(e){}}function Pe(e){try{e&&"object"==typeof e&&!Array.isArray(e)&&(be=s(s({},be),e))}catch(e){}}var De=!1,ze=null;function Ne(e){return Be.apply(this,arguments)}function Be(){return(Be=r(u().m(function e(t){return u().w(function(e){for(;;)switch(e.p=e.n){case 0:if(!De||!ze){e.n=4;break}return e.p=1,e.n=2,ze;case 2:e.n=4;break;case 3:e.p=3,e.v;case 4:return e.a(2,t())}},e,null,[[1,3]])}))).apply(this,arguments)}var Re=Te;function We(){return We=r(u().m(function e(){var t,n=arguments;return u().w(function(e){for(;;)if(0===e.n)return t=n.length>0&&void 0!==n[0]?n[0]:{},e.a(2,Ne(()=>Re(t)))},e)})),We.apply(this,arguments)}var He=function(){var e=r(u().m(function e(){return u().w(function(e){for(;;)switch(e.n){case 0:return De=!0,ze=r(u().m(function e(){return u().w(function(e){for(;;)switch(e.p=e.n){case 0:return e.p=0,e.n=1,oe();case 1:return e.p=1,De=!1,ze=null,e.f(1);case 2:return e.a(2)}},e,null,[[0,,1,2]])}))(),e.n=1,ze;case 1:return e.a(2)}},e)}));return function(){return e.apply(this,arguments)}}(),_e=function(){var e=r(u().m(function e(){return u().w(function(e){for(;;)switch(e.n){case 0:return De=!0,ze=r(u().m(function e(){return u().w(function(e){for(;;)switch(e.p=e.n){case 0:return e.p=0,e.n=1,ie();case 1:return e.p=1,De=!1,ze=null,e.f(1);case 2:return e.a(2)}},e,null,[[0,,1,2]])}))(),e.n=1,ze;case 1:return e.a(2)}},e)}));return function(){return e.apply(this,arguments)}}();if("undefined"!=typeof window&&"undefined"!=typeof document){var qe=!1;if(!qe){window.addEventListener("keydown",e=>{"Escape"!==e.key&&"Esc"!==e.key||r(u().m(function e(){return u().w(function(e){for(;;)switch(e.n){case 0:return De=!0,ze=r(u().m(function e(){return u().w(function(e){for(;;)switch(e.p=e.n){case 0:return e.p=0,e.n=1,oe();case 1:return e.p=1,De=!1,ze=null,e.f(1);case 2:return e.a(2)}},e,null,[[0,,1,2]])}))(),e.n=1,ze;case 1:return e.a(2)}},e)}))()},{passive:!0}),qe=!0}}var Fe=function(){var e=r(u().m(function e(){return u().w(function(e){for(;;)switch(e.n){case 0:return e.n=1,ie();case 1:return e.a(2)}},e)}));return function(){return e.apply(this,arguments)}}();try{"undefined"!=typeof window&&(window.customizableToast={createToast:Te,setDefaultColors:Ie,setDefaultMessages:Pe,noop:Fe,dismiss:oe})}catch(e){}e.createToast=function(){return We.apply(this,arguments)},e.dismiss=He,e.dismissToast=He,e.noop=_e,e.noopAll=_e,e.setDefaultColors=Ie,e.setDefaultMessages=Pe});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "customizable-toast-notification",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.11.0",
|
|
4
4
|
"description": "A lightweight, zero-dependency toast notification library with CTA support for modern JavaScript applications with production-grade reliability and comprehensive system mechanisms",
|
|
5
5
|
"main": "dist/index.esm.mjs",
|
|
6
6
|
"module": "dist/index.esm.mjs",
|
package/postinstall.js
CHANGED
|
@@ -6,28 +6,12 @@ try {
|
|
|
6
6
|
) {
|
|
7
7
|
process.exit(0);
|
|
8
8
|
} else {
|
|
9
|
-
showMessage(
|
|
9
|
+
showMessage();
|
|
10
10
|
}
|
|
11
11
|
|
|
12
|
-
function showMessage(
|
|
13
|
-
const width = process.stdout.columns || 80;
|
|
14
|
-
const boxWidth = 60;
|
|
15
|
-
|
|
16
|
-
const spinnerFrames = ["|", "/", "-", "\\"];
|
|
17
|
-
let i = 0;
|
|
18
|
-
|
|
19
|
-
const stripAnsi = (text) => text.replace(/\x1b\[[0-9;]*m/g, "");
|
|
20
|
-
const pad = (text) =>
|
|
21
|
-
" ".repeat(Math.max(boxWidth - stripAnsi(text).length, 0));
|
|
22
|
-
const center = (text) =>
|
|
23
|
-
" ".repeat(
|
|
24
|
-
Math.max(Math.floor((width - stripAnsi(text).length) / 2), 0)
|
|
25
|
-
) + text;
|
|
26
|
-
|
|
12
|
+
function showMessage() {
|
|
27
13
|
const lines = [
|
|
28
|
-
|
|
29
|
-
? "🎯Thanks for sticking with it!\nThis is the final message. 🚀"
|
|
30
|
-
: `📦Thanks for using this package!`,
|
|
14
|
+
"🎯Thanks for sticking with it! This is the final message. 🚀...📦Thanks for using this package!",
|
|
31
15
|
"📘 In README.md - More professional",
|
|
32
16
|
"👨💻 Author **Priyanshu Patel** -",
|
|
33
17
|
"🤝 Open to collaboration & teamwork",
|
|
@@ -36,30 +20,7 @@ try {
|
|
|
36
20
|
"🚀 Built different. Stay creative.",
|
|
37
21
|
];
|
|
38
22
|
|
|
39
|
-
|
|
40
|
-
process.stdout.write(
|
|
41
|
-
`\r⏳ Finalizing install ${spinnerFrames[i++ % spinnerFrames.length]} `
|
|
42
|
-
);
|
|
43
|
-
}, 100);
|
|
44
|
-
|
|
45
|
-
setTimeout(() => {
|
|
46
|
-
clearInterval(spinner);
|
|
47
|
-
process.stdout.write("\r".padEnd(40, " ") + "\r"); // Clear spinner line
|
|
48
|
-
|
|
49
|
-
console.log(
|
|
50
|
-
"\n" + center(`\x1b[36m\x1b[1m╔${"═".repeat(boxWidth)}╗\x1b[0m`)
|
|
51
|
-
);
|
|
52
|
-
lines.forEach((line) => {
|
|
53
|
-
line.split("\n").forEach((sub) => {
|
|
54
|
-
console.log(
|
|
55
|
-
center(`\x1b[36m║ \x1b[0m${sub}${pad(sub)}\x1b[36m ║\x1b[0m`)
|
|
56
|
-
);
|
|
57
|
-
});
|
|
58
|
-
});
|
|
59
|
-
console.log(center(`\x1b[36m╚${"═".repeat(boxWidth)}╝\x1b[0m`) + "\n");
|
|
60
|
-
|
|
61
|
-
process.exit(0); // ✅ Exit only after message shown
|
|
62
|
-
}, 300);
|
|
23
|
+
console.log(lines);
|
|
63
24
|
}
|
|
64
25
|
} catch (error) {
|
|
65
26
|
process.exit(0); // Exit silently
|
package/dist/index.esm.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.mjs","sources":["../src/utils/dom.js","../src/utils/id.js","../src/components/toast-utils.js","../src/components/toast-utils-core.js","../src/utils/containerRegistry.js","../src/utils/position.js","../src/utils/PausableTimer.js","../src/components/ToastManager.js","../src/components/Toast.js","../src/index.js"],"sourcesContent":["// src/utils/dom.js\r\n\"use strict\";\r\n\r\nimport { generateToastId } from \"./id.js\";\r\n\r\n/**\r\n * Creates an element with a unique ID using the given prefix.\r\n * @param {string} tagName - Tag name of the element.\r\n * @param {string} prefix - Prefix for the element ID.\r\n * @returns {Promise<Element>}\r\n */\r\nexport async function createElementWithId(tagName, prefix) {\r\n if (!tagName || !prefix) throw new Error(\"tagName and prefix are required\");\r\n const el = document.createElement(tagName);\r\n el.id = generateToastId(prefix);\r\n return el;\r\n}\r\n\r\n/**\r\n * Appends a child element to a parent element with multiple fallbacks.\r\n * @param {Element} parent - The parent element.\r\n * @param {Element} child - The child element.\r\n * @returns {Promise<boolean>}\r\n */\r\nexport async function appendChild(parent, child) {\r\n if (!parent || !child) return false;\r\n\r\n try {\r\n if (!parent.contains(child)) parent.appendChild(child);\r\n return true;\r\n } catch (primaryError) {\r\n console.warn(\"appendChild primary failed:\", primaryError);\r\n try {\r\n parent.insertAdjacentElement(\"beforeend\", child);\r\n return true;\r\n } catch (fallbackError) {\r\n console.warn(\"appendChild fallback failed:\", fallbackError);\r\n try {\r\n if (parent === document.body) {\r\n const clone = child.cloneNode(true);\r\n parent.appendChild(clone);\r\n return true;\r\n }\r\n } catch (emergencyError) {\r\n console.error(\"appendChild emergency failed:\", emergencyError);\r\n return false;\r\n }\r\n }\r\n }\r\n return false;\r\n}\r\n\r\n/**\r\n * Removes an element from the DOM with multiple methods.\r\n * @param {Element} el - The element to be removed.\r\n * @returns {Promise<boolean>}\r\n */\r\nexport async function removeElement(el) {\r\n if (!el) return true;\r\n\r\n try {\r\n if (el?.parentNode?.id.includes(\"toast-container-\")) {\r\n el.parentNode.removeChild(el);\r\n return true;\r\n }\r\n } catch {}\r\n\r\n try {\r\n if (el.remove) {\r\n el.remove();\r\n return true;\r\n }\r\n } catch {}\r\n\r\n try {\r\n Object.assign(el.style, {\r\n display: \"none\",\r\n opacity: \"0\",\r\n pointerEvents: \"none\",\r\n position: \"absolute\",\r\n left: \"-9999px\",\r\n });\r\n return true;\r\n } catch {}\r\n\r\n return false;\r\n}\r\n\r\n/**\r\n * Parses animation duration from a string or number.\r\n * @param {string|number} duration - Duration value.\r\n * @returns {Promise<number>} - Milliseconds.\r\n */\r\nexport async function parseAnimationDuration(duration) {\r\n if (typeof duration === \"number\" && duration > 0) return duration;\r\n if (typeof duration === \"string\") {\r\n if (duration.endsWith(\"s\") && !duration.endsWith(\"ms\")) {\r\n const parsed = parseFloat(duration) * 1000;\r\n return parsed > 0 ? parsed : 500;\r\n }\r\n const parsed = parseFloat(duration);\r\n return parsed > 0 ? parsed : 500;\r\n }\r\n return 500;\r\n}\r\n\r\n/**\r\n * Forces a reflow on an element.\r\n * @param {Element} el - The element.\r\n * @returns {number}\r\n */\r\nexport function forceReflow(el) {\r\n try {\r\n return el?.offsetWidth || 0;\r\n } catch (error) {\r\n console.warn(\"Force reflow failed:\", error);\r\n return 0;\r\n }\r\n}\r\n\r\n/**\r\n * Shortcut for query selection with optional root.\r\n * @param {string} selector - CSS selector.\r\n * @param {Element|Document} [root=document] - Root element.\r\n * @returns {Element|null}\r\n */\r\nexport function query(selector, root = document) {\r\n return root.querySelector(selector);\r\n}\r\n\r\n/**\r\n * Gets accessible text color based on background according to WCAG.\r\n * Optimized with caching for repeated background colors.\r\n *\r\n * @param {string} toastBg - Background color (hex, rgb, hsl, named).\r\n * @param {number} [opa=1] - Optional opacity (0–1).\r\n * @returns {string} - Text color: \"black\" or \"white\".\r\n */\r\nclass LRUCache {\r\n constructor(maxSize = 200) {\r\n this.maxSize = maxSize;\r\n this.map = new Map();\r\n }\r\n\r\n get(key) {\r\n if (!this.map.has(key)) return undefined;\r\n const value = this.map.get(key);\r\n this.map.delete(key);\r\n this.map.set(key, value);\r\n return value;\r\n }\r\n\r\n set(key, value) {\r\n if (this.map.has(key)) this.map.delete(key);\r\n else if (this.map.size >= this.maxSize) {\r\n const firstKey = this.map.keys().next().value;\r\n this.map.delete(firstKey);\r\n }\r\n this.map.set(key, value);\r\n }\r\n}\r\n\r\nconst colorCache = new LRUCache(200);\r\n\r\n// Full named CSS color table\r\nconst namedColors = {\r\n aliceblue: [240, 248, 255],\r\n antiquewhite: [250, 235, 215],\r\n aqua: [0, 255, 255],\r\n aquamarine: [127, 255, 212],\r\n azure: [240, 255, 255],\r\n beige: [245, 245, 220],\r\n bisque: [255, 228, 196],\r\n black: [0, 0, 0],\r\n blanchedalmond: [255, 235, 205],\r\n blue: [0, 0, 255],\r\n blueviolet: [138, 43, 226],\r\n brown: [165, 42, 42],\r\n burlywood: [222, 184, 135],\r\n cadetblue: [95, 158, 160],\r\n chartreuse: [127, 255, 0],\r\n chocolate: [210, 105, 30],\r\n coral: [255, 127, 80],\r\n cornflowerblue: [100, 149, 237],\r\n cornsilk: [255, 248, 220],\r\n crimson: [220, 20, 60],\r\n cyan: [0, 255, 255],\r\n darkblue: [0, 0, 139],\r\n darkcyan: [0, 139, 139],\r\n darkgoldenrod: [184, 134, 11],\r\n darkgray: [169, 169, 169],\r\n darkgreen: [0, 100, 0],\r\n darkgrey: [169, 169, 169],\r\n darkkhaki: [189, 183, 107],\r\n darkmagenta: [139, 0, 139],\r\n darkolivegreen: [85, 107, 47],\r\n darkorange: [255, 140, 0],\r\n darkorchid: [153, 50, 204],\r\n darkred: [139, 0, 0],\r\n darksalmon: [233, 150, 122],\r\n darkseagreen: [143, 188, 143],\r\n darkslateblue: [72, 61, 139],\r\n darkslategray: [47, 79, 79],\r\n darkslategrey: [47, 79, 79],\r\n darkturquoise: [0, 206, 209],\r\n darkviolet: [148, 0, 211],\r\n deeppink: [255, 20, 147],\r\n deepskyblue: [0, 191, 255],\r\n dimgray: [105, 105, 105],\r\n dimgrey: [105, 105, 105],\r\n dodgerblue: [30, 144, 255],\r\n firebrick: [178, 34, 34],\r\n floralwhite: [255, 250, 240],\r\n forestgreen: [34, 139, 34],\r\n fuchsia: [255, 0, 255],\r\n gainsboro: [220, 220, 220],\r\n ghostwhite: [248, 248, 255],\r\n gold: [255, 215, 0],\r\n goldenrod: [218, 165, 32],\r\n gray: [128, 128, 128],\r\n green: [0, 128, 0],\r\n greenyellow: [173, 255, 47],\r\n grey: [128, 128, 128],\r\n honeydew: [240, 255, 240],\r\n hotpink: [255, 105, 180],\r\n indianred: [205, 92, 92],\r\n indigo: [75, 0, 130],\r\n ivory: [255, 255, 240],\r\n khaki: [240, 230, 140],\r\n lavender: [230, 230, 250],\r\n lavenderblush: [255, 240, 245],\r\n lawngreen: [124, 252, 0],\r\n lemonchiffon: [255, 250, 205],\r\n lightblue: [173, 216, 230],\r\n lightcoral: [240, 128, 128],\r\n lightcyan: [224, 255, 255],\r\n lightgoldenrodyellow: [250, 250, 210],\r\n lightgray: [211, 211, 211],\r\n lightgreen: [144, 238, 144],\r\n lightgrey: [211, 211, 211],\r\n lightpink: [255, 182, 193],\r\n lightsalmon: [255, 160, 122],\r\n lightseagreen: [32, 178, 170],\r\n lightskyblue: [135, 206, 250],\r\n lightslategray: [119, 136, 153],\r\n lightslategrey: [119, 136, 153],\r\n lightsteelblue: [176, 196, 222],\r\n lightyellow: [255, 255, 224],\r\n lime: [0, 255, 0],\r\n limegreen: [50, 205, 50],\r\n linen: [250, 240, 230],\r\n magenta: [255, 0, 255],\r\n maroon: [128, 0, 0],\r\n mediumaquamarine: [102, 205, 170],\r\n mediumblue: [0, 0, 205],\r\n mediumorchid: [186, 85, 211],\r\n mediumpurple: [147, 112, 219],\r\n mediumseagreen: [60, 179, 113],\r\n mediumslateblue: [123, 104, 238],\r\n mediumspringgreen: [0, 250, 154],\r\n mediumturquoise: [72, 209, 204],\r\n mediumvioletred: [199, 21, 133],\r\n midnightblue: [25, 25, 112],\r\n mintcream: [245, 255, 250],\r\n mistyrose: [255, 228, 225],\r\n moccasin: [255, 228, 181],\r\n navajowhite: [255, 222, 173],\r\n navy: [0, 0, 128],\r\n oldlace: [253, 245, 230],\r\n olive: [128, 128, 0],\r\n olivedrab: [107, 142, 35],\r\n orange: [255, 165, 0],\r\n orangered: [255, 69, 0],\r\n orchid: [218, 112, 214],\r\n palegoldenrod: [238, 232, 170],\r\n palegreen: [152, 251, 152],\r\n paleturquoise: [175, 238, 238],\r\n palevioletred: [219, 112, 147],\r\n papayawhip: [255, 239, 213],\r\n peachpuff: [255, 218, 185],\r\n peru: [205, 133, 63],\r\n pink: [255, 192, 203],\r\n plum: [221, 160, 221],\r\n powderblue: [176, 224, 230],\r\n purple: [128, 0, 128],\r\n rebeccapurple: [102, 51, 153],\r\n red: [255, 0, 0],\r\n rosybrown: [188, 143, 143],\r\n royalblue: [65, 105, 225],\r\n saddlebrown: [139, 69, 19],\r\n salmon: [250, 128, 114],\r\n sandybrown: [244, 164, 96],\r\n seagreen: [46, 139, 87],\r\n seashell: [255, 245, 238],\r\n sienna: [160, 82, 45],\r\n silver: [192, 192, 192],\r\n skyblue: [135, 206, 235],\r\n slateblue: [106, 90, 205],\r\n slategray: [112, 128, 144],\r\n slategrey: [112, 128, 144],\r\n snow: [255, 250, 250],\r\n springgreen: [0, 255, 127],\r\n steelblue: [70, 130, 180],\r\n tan: [210, 180, 140],\r\n teal: [0, 128, 128],\r\n thistle: [216, 191, 216],\r\n tomato: [255, 99, 71],\r\n turquoise: [64, 224, 208],\r\n violet: [238, 130, 238],\r\n wheat: [245, 222, 179],\r\n white: [255, 255, 255],\r\n whitesmoke: [245, 245, 245],\r\n yellow: [255, 255, 0],\r\n yellowgreen: [154, 205, 50],\r\n};\r\n\r\n// Precompute accessible text for all named colors (O(1) lookup) (case-insensitive)\r\nconst precomputedNamedTextColors = {};\r\nObject.entries(namedColors).forEach(([name, [r, g, b]]) => {\r\n // Calculate relative luminance\r\n const lum = (c) => {\r\n const v = c / 255;\r\n return v <= 0.03928 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);\r\n };\r\n const L = 0.2126 * lum(r) + 0.7152 * lum(g) + 0.0722 * lum(b);\r\n // WCAG contrast: choose black or white based on which has higher contrast\r\n const contrastBlack = (L + 0.05) / 0.05;\r\n const contrastWhite = 1.05 / (L + 0.05);\r\n precomputedNamedTextColors[name.toLowerCase()] =\r\n contrastBlack >= contrastWhite ? \"#000000\" : \"#ffffff\";\r\n});\r\n\r\nexport function getDynamicAccessibleTextColorHex(toastBg, opa = 1) {\r\n if (!toastBg) return \"snow\";\r\n\r\n const key = `${toastBg}|${opa}`;\r\n const cached = colorCache.get(key);\r\n if (cached) return cached;\r\n\r\n // Named color precomputed lookup\r\n if (precomputedNamedTextColors[toastBg?.toLowerCase()]) {\r\n const textColor = precomputedNamedTextColors[toastBg.toLowerCase()];\r\n colorCache.set(key, textColor);\r\n return textColor;\r\n }\r\n\r\n let r, g, b;\r\n\r\n try {\r\n const hexMatch = toastBg?.match(/^#([0-9a-f]{3,8})$/i);\r\n if (hexMatch) {\r\n let hex = hexMatch[1];\r\n if (hex.length === 3)\r\n hex = hex\r\n .split(\"\")\r\n .map((c) => c + c)\r\n .join(\"\");\r\n r = parseInt(hex.slice(0, 2), 16);\r\n g = parseInt(hex.slice(2, 4), 16);\r\n b = parseInt(hex.slice(4, 6), 16);\r\n } else {\r\n const rgbMatch = toastBg?.match(\r\n /rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)(?:,\\s*[\\d.]+)?\\)/i\r\n );\r\n if (rgbMatch) {\r\n r = Number(rgbMatch[1]);\r\n g = Number(rgbMatch[2]);\r\n b = Number(rgbMatch[3]);\r\n } else throw new Error(\"Unknown color\");\r\n }\r\n } catch {\r\n r = 50 + Math.floor(Math.random() * 206);\r\n g = 50 + Math.floor(Math.random() * 206);\r\n b = 50 + Math.floor(Math.random() * 206);\r\n }\r\n\r\n // Apply opacity blending\r\n r = Math.round(r * opa + 255 * (1 - opa));\r\n g = Math.round(g * opa + 255 * (1 - opa));\r\n b = Math.round(b * opa + 255 * (1 - opa));\r\n\r\n // Convert HSL and adjust lightness dynamically\r\n const rgbToHsl = (r, g, b) => {\r\n r /= 255;\r\n g /= 255;\r\n b /= 255;\r\n const max = Math.max(r, g, b),\r\n min = Math.min(r, g, b);\r\n let h,\r\n s,\r\n l = (max + min) / 2;\r\n if (max === min) h = s = 0;\r\n else {\r\n const d = max - min;\r\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\r\n switch (max) {\r\n case r:\r\n h = (g - b) / d + (g < b ? 6 : 0);\r\n break;\r\n case g:\r\n h = (b - r) / d + 2;\r\n break;\r\n case b:\r\n h = (r - g) / d + 4;\r\n }\r\n h /= 6;\r\n }\r\n return [h * 360, s, l];\r\n };\r\n const hslToRgb = (h, s, l) => {\r\n h /= 360;\r\n let r, g, b;\r\n if (s === 0) r = g = b = l;\r\n else {\r\n const hue2rgb = (p, q, t) => {\r\n if (t < 0) t += 1;\r\n if (t > 1) t -= 1;\r\n if (t < 1 / 6) return p + (q - p) * 6 * t;\r\n if (t < 1 / 2) return q;\r\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\r\n return p;\r\n };\r\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\r\n const p = 2 * l - q;\r\n r = hue2rgb(p, q, h + 1 / 3);\r\n g = hue2rgb(p, q, h);\r\n b = hue2rgb(p, q, h - 1 / 3);\r\n }\r\n return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)];\r\n };\r\n const luminance = (r, g, b) => {\r\n const a = [r, g, b].map((v) => {\r\n v /= 255;\r\n return v <= 0.03928 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);\r\n });\r\n return 0.2126 * a[0] + 0.7152 * a[1] + 0.0722 * a[2];\r\n };\r\n const contrastRatio = (rgb1, rgb2) => {\r\n const L1 = luminance(...rgb1);\r\n const L2 = luminance(...rgb2);\r\n return (Math.max(L1, L2) + 0.05) / (Math.min(L1, L2) + 0.05);\r\n };\r\n const rgbToHex = (r, g, b) =>\r\n `#${r.toString(16).padStart(2, \"0\")}${g.toString(16).padStart(2, \"0\")}${b\r\n .toString(16)\r\n .padStart(2, \"0\")}`;\r\n\r\n let [h, s, l] = rgbToHsl(r, g, b);\r\n const minContrast = 4.5;\r\n let textL = l < 0.5 ? Math.min(l + 0.5, 1) : Math.max(l - 0.5, 0);\r\n let [tr, tg, tb] = hslToRgb(h, s, textL);\r\n\r\n if (contrastRatio([r, g, b], [tr, tg, tb]) < minContrast) {\r\n const contrastBlack = contrastRatio([r, g, b], [0, 0, 0]);\r\n const contrastWhite = contrastRatio([r, g, b], [255, 255, 255]);\r\n [tr, tg, tb] = contrastBlack >= contrastWhite ? [0, 0, 0] : [255, 255, 255];\r\n }\r\n\r\n const result = rgbToHex(tr, tg, tb);\r\n colorCache.set(key, result);\r\n return result;\r\n}\r\n","// src/utils/id.js\r\n\"use strict\";\r\n\r\n/**\r\n * Generate unique ID for DOM elements to avoid conflicts\r\n * @param {string} prefix - Optional prefix for ID\r\n * @returns {string} Unique ID\r\n */\r\nexport function generateToastId(prefix) {\r\n const timestamp = Date.now().toString(36); // shorter timestamp\r\n const random = Math.floor(Math.random() * 0xfffff).toString(36); // short random part\r\n return `${prefix}-${timestamp}-${random}`;\r\n}\r\n","// src/components/toast-utils.js\r\n\"use strict\";\r\n\r\nimport { parseAnimationDuration } from \"../utils/dom.js\";\r\nimport {\r\n createCTA,\r\n createCloseButton,\r\n createProgressBar,\r\n runToastAnimation,\r\n} from \"./toast-utils-core.js\";\r\n\r\n/**\r\n * Applies rich styling and content to a toast element.\r\n * @param {HTMLElement} toast - The toast container element.\r\n * @param {object} options - Configuration options for the toast.\r\n * @param {Function} onClose - Callback invoked when the toast closes.\r\n */\r\nexport async function applyRichStyling(toast, options, onClose) {\r\n const durationMs = await parseAnimationDuration(options?.animationDuration);\r\n\r\n // Compose className based on provided type (default to \"info\")\r\n toast.className = `toast toast-${options?.type ?? \"info\"}`;\r\n\r\n Object.assign(toast.style, {\r\n background: options?.backgroundColor,\r\n padding: \"12px 16px\",\r\n marginBottom: \"10px\",\r\n borderRadius: options?.borderRadius,\r\n overflow: \"hidden\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\",\r\n boxShadow: \"0 4px 6px rgba(0, 0, 0, 0.1)\",\r\n minWidth: \"250px\",\r\n maxWidth: options?.maxWidth,\r\n opacity: \"0\",\r\n position: \"relative\",\r\n cursor: \"default\",\r\n boxSizing: \"border-box\",\r\n userSelect: \"text\",\r\n transition: `opacity ${options?.animationDuration} ${options?.animationEasing}, transform ${options?.animationDuration} ${options?.animationEasing}`,\r\n transform: \"translateY(20px)\",\r\n zIndex: \"9999\",\r\n });\r\n // Accessibility settings\r\n toast.setAttribute(\"role\", \"alert\");\r\n toast.setAttribute(\"aria-live\", \"polite\");\r\n toast.tabIndex = 0; // Make focusable for accessibility if needed\r\n\r\n toast._animationDuration = durationMs;\r\n\r\n const messageSpan = document.createElement(\"span\");\r\n\r\n if (options?.wrapText) {\r\n Object.assign(messageSpan.style, {\r\n display: \"block\",\r\n whiteSpace: \"normal\",\r\n });\r\n } else {\r\n Object.assign(messageSpan.style, {\r\n display: \"-webkit-box\",\r\n WebkitBoxOrient: \"vertical\",\r\n WebkitLineClamp: \"3\",\r\n whiteSpace: \"nowrap\",\r\n });\r\n }\r\n\r\n Object.assign(messageSpan.style, {\r\n flex: \"1\",\r\n padding: options?.fontPadding,\r\n fontFamily: options?.fontFamily,\r\n fontSize: options?.fontSize,\r\n fontWeight: options?.fontWeight,\r\n lineHeight: options?.fontLineHeight,\r\n color: options?.textColor,\r\n userSelect: \"text\",\r\n wordBreak: \"break-word\",\r\n overflow: \"hidden\",\r\n textOverflow: \"ellipsis\",\r\n display: \"-webkit-box\",\r\n WebkitLineClamp: \"3\",\r\n WebkitBoxOrient: \"vertical\",\r\n });\r\n\r\n messageSpan.textContent = options?.message;\r\n messageSpan.setAttribute(\"message\", options?.message);\r\n messageSpan.setAttribute(\"aria-label\", options?.message);\r\n toast.appendChild(messageSpan);\r\n\r\n if (options?.cta && Object.keys(options.cta).length !== 0) {\r\n createCTA(toast, options, onClose);\r\n }\r\n\r\n if (options?.showCloseButton) {\r\n createCloseButton(toast, options, onClose);\r\n }\r\n\r\n if (options?.showProgressBar) {\r\n createProgressBar(toast, options);\r\n }\r\n\r\n runToastAnimation(toast);\r\n}\r\n\r\n/**\r\n * Creates an emergency toast as a safe fallback.\r\n * @param {object} options - Configuration options for the toast.\r\n * @param {Function} onClose - Callback invoked when the toast closes.\r\n * @returns {Promise<HTMLElement|null>}\r\n */\r\nexport async function createEmergencyToast(options, onClose) {\r\n try {\r\n const emergency = document.createElement(\"div\");\r\n Object.assign(emergency.style, {\r\n background: \"#333\",\r\n color: \"white\",\r\n padding: \"10px 15px\",\r\n position: \"fixed\",\r\n top: \"20px\",\r\n right: \"20px\",\r\n zIndex: \"99999\",\r\n borderRadius: \"3px\",\r\n maxWidth: \"250px\",\r\n wordWrap: \"break-word\",\r\n boxShadow: \"0 2px 10px rgba(0,0,0,0.3)\",\r\n cursor: \"pointer\",\r\n });\r\n\r\n const messageSpan = document.createElement(\"span\");\r\n messageSpan.textContent =\r\n options?.message || \"Emergency Toast Creation Showing!\";\r\n emergency.appendChild(messageSpan);\r\n\r\n const closeSpan = document.createElement(\"span\");\r\n closeSpan.textContent = \"×\";\r\n Object.assign(closeSpan.style, {\r\n float: \"right\",\r\n marginLeft: \"10px\",\r\n fontWeight: \"bold\",\r\n });\r\n closeSpan.onclick = () => {\r\n emergency.remove();\r\n onClose(emergency);\r\n };\r\n emergency.appendChild(closeSpan);\r\n\r\n document.body.appendChild(emergency);\r\n setTimeout(() => {\r\n emergency.remove();\r\n onClose(emergency);\r\n }, options?.duration);\r\n\r\n return emergency;\r\n } catch (error) {\r\n console.error(\"Emergency toast creation failed:\", error);\r\n setTimeout(() => {\r\n alert(options?.message || \"Emergency Toast Creation Showing!\");\r\n onClose(null);\r\n }, 100);\r\n return null;\r\n }\r\n}\r\n","\"use strict\";\r\n\r\n/**\r\n * Creates a Call-To-Action (CTA) button or link for the toast.\r\n * @param {HTMLElement} toast - The toast container element.\r\n * @param {Object} options - Toast options including cta config.\r\n * @param {Function} onClose - Callback when toast closes.\r\n */\r\nexport function createCTA(toast, options, onClose) {\r\n const cfg = options?.cta;\r\n if (!cfg) return;\r\n\r\n if (!cfg.label) {\r\n cfg.label = \"CTA Label Missing!\";\r\n }\r\n\r\n const isLink = !!cfg.href && cfg.variant === \"link\";\r\n const el = document.createElement(isLink ? \"a\" : \"button\");\r\n\r\n if (isLink) {\r\n el.href = cfg.href;\r\n if (cfg.target) el.target = cfg.target;\r\n el.rel = cfg.rel || (cfg.target === \"_blank\" ? \"noopener noreferrer\" : \"\");\r\n } else {\r\n el.type = \"button\";\r\n }\r\n\r\n el.setAttribute(\"aria-label\", cfg.ariaLabel || cfg.label);\r\n\r\n Object.assign(el.style, {\r\n marginLeft: \"10px\",\r\n padding: \"6px 10px\",\r\n borderRadius: \"6px\",\r\n fontSize: \"12px\",\r\n fontWeight: \"600\",\r\n lineHeight: \"1\",\r\n border: \"1px solid rgba(255,255,255,0.35)\",\r\n color: options.textColor || \"#fff\",\r\n background: \"rgba(255,255,255,0.15)\",\r\n cursor: \"pointer\",\r\n whiteSpace: \"nowrap\",\r\n flexShrink: \"0\",\r\n });\r\n\r\n el.textContent = cfg.label;\r\n\r\n const onClick = async (e) => {\r\n try {\r\n if (typeof cfg.onClick === \"function\") {\r\n const res = cfg.onClick(e);\r\n if (res?.then) await res;\r\n }\r\n } finally {\r\n if (cfg.autoClose !== false) onClose(toast);\r\n }\r\n };\r\n\r\n el.addEventListener(\"click\", onClick);\r\n\r\n // Store cleanup for event listener removal if needed\r\n el._cleanup = () => el.removeEventListener(\"click\", onClick);\r\n\r\n toast.appendChild(el);\r\n}\r\n\r\n/**\r\n * Creates the close button for the toast.\r\n * @param {HTMLElement} toast\r\n * @param {Object} options\r\n * @param {Function} onClose\r\n */\r\nexport function createCloseButton(toast, options, onClose) {\r\n const closeBtn = document.createElement(\"button\");\r\n closeBtn.setAttribute(\"aria-label\", \"Close notification\");\r\n closeBtn.setAttribute(\"title\", \"Close\");\r\n closeBtn.textContent = \"×\";\r\n\r\n Object.assign(closeBtn.style, {\r\n background: \"none\",\r\n border: \"none\",\r\n color: options.textColor || \"white\",\r\n fontSize: \"18px\",\r\n marginLeft: \"10px\",\r\n cursor: \"pointer\",\r\n });\r\n\r\n const onClick = () => onClose(toast);\r\n closeBtn.addEventListener(\"click\", onClick);\r\n\r\n // Provide cleanup for memory management\r\n toast._cleanupCloseButton = () => {\r\n closeBtn.removeEventListener(\"click\", onClick);\r\n };\r\n\r\n toast.appendChild(closeBtn);\r\n}\r\n\r\n/**\r\n * Creates and animates the progress bar on the toast.\r\n * @param {HTMLElement} toast\r\n * @param {Object} options\r\n */\r\nexport function createProgressBar(toast, options) {\r\n const progressBar = document.createElement(\"div\");\r\n const borderRadiusStr = options.borderRadius || 0;\r\n const borderRadiusNum = parseInt(borderRadiusStr, 10);\r\n const newRadiusSub = borderRadiusNum - 10 + \"px\";\r\n const finalWidth = borderRadiusNum ? `calc(100% - ${newRadiusSub})` : \"100%\";\r\n const leftVal = borderRadiusNum ? \"12px\" : \"0\";\r\n\r\n Object.assign(progressBar.style, {\r\n position: \"absolute\",\r\n left: `${leftVal}`,\r\n height: options.progressHeight || \"4px\",\r\n background: options.progressColor || \"rgba(255, 255, 255, 0.3)\",\r\n width: `${finalWidth}`,\r\n transition: `width ${options.duration || 1800}ms linear`,\r\n [options.progressPosition === \"top\" ? \"top\" : \"bottom\"]: \"0\",\r\n borderRadius: options.borderRadius || \"4px\",\r\n });\r\n\r\n toast.appendChild(progressBar);\r\n\r\n // Trigger width animation after insertion\r\n setTimeout(() => {\r\n // Force reflow to apply transition properly\r\n progressBar.offsetWidth;\r\n progressBar.style.width = \"0%\";\r\n }, 50);\r\n}\r\n\r\n/**\r\n * Runs the toast's fade-in animation.\r\n * @param {HTMLElement} toast\r\n */\r\nexport function runToastAnimation(toast) {\r\n setTimeout(() => {\r\n requestAnimationFrame(() => {\r\n toast.style.opacity = \"1\";\r\n toast.style.transform = \"translateY(0)\";\r\n });\r\n }, 50);\r\n}\r\n","// src/utils/containerRegistry.js\r\n\"use strict\";\r\n\r\nconst containerRegistry = new Map(); // id -> HTMLElement\r\nconst containerLocks = new Map(); // id -> Promise<HTMLElement>\r\n\r\n/**\r\n * Normalize a position string to a canonical key (id-safe, stable).\r\n */\r\nexport function normalizePositionKey(position) {\r\n // lower-case, trim, unify separators, alias \"below\" -> \"bottom\"\r\n const raw = String(position).toLowerCase().trim();\r\n const aliased = raw.replace(/\\bbelow\\b/g, \"bottom\");\r\n return aliased\r\n .replace(/\\s+/g, \"-\")\r\n .replace(/[^a-z0-9-]/g, \"-\")\r\n .replace(/-{2,}/g, \"-\");\r\n}\r\n\r\n/**\r\n * Canonical container id\r\n */\r\nexport function getContainerId(position) {\r\n return `toast-container-${normalizePositionKey(position)}`;\r\n}\r\n\r\n/**\r\n * Atomically get or create a single container per canonical id.\r\n */\r\nexport async function getOrCreateToastContainer(options, setPosition) {\r\n const id = getContainerId(options.position);\r\n // If a creation is in-flight, await it\r\n if (containerLocks.has(id)) {\r\n return containerLocks.get(id);\r\n }\r\n\r\n const p = (async () => {\r\n // 1) Prefer registry cache if still connected\r\n const cached = containerRegistry.get(id);\r\n if (cached?.isConnected) {\r\n return cached;\r\n }\r\n\r\n // 2) Find existing in DOM\r\n let el = document.getElementById(id); // unique by spec, but may return first if duplicates exist\r\n if (el && !el.isConnected) {\r\n // re-attach if detached\r\n document.body.appendChild(el);\r\n }\r\n\r\n // 3) If not found, create\r\n if (!el) {\r\n el = document.createElement(\"div\");\r\n el.id = id;\r\n el.setAttribute(\"role\", \"status\"); // polite + atomic by default\r\n el.setAttribute(\"aria-atomic\", \"true\"); // explicit for consistency\r\n el.style.position = \"fixed\";\r\n el.style.zIndex = \"9999\";\r\n el.style.inset = \"auto 10px 10px auto\";\r\n el.style.display = \"flex\";\r\n el.style.justifyContent = \"space-between\";\r\n el.style.alignItems = \"center\";\r\n el.style.flexDirection = \"column\";\r\n el.style.overflow = \"hidden\";\r\n // Position with provided helper\r\n if (typeof setPosition === \"function\") {\r\n await setPosition(el, options);\r\n }\r\n document.body.appendChild(el);\r\n } else {\r\n // Ensure base styles and (re)apply position in case options changed\r\n el.style.position = el.style.position || \"fixed\";\r\n el.style.zIndex = el.style.zIndex || \"9999\";\r\n if (typeof setPosition === \"function\") {\r\n await setPosition(el, options);\r\n }\r\n }\r\n\r\n // 4) If somehow duplicates exist, keep the first and remove the rest\r\n // getElementById would have returned the first; clean up others proactively\r\n const all = document.querySelectorAll(`#${id}`);\r\n if (all.length > 1) {\r\n for (let i = 1; i < all.length; i++) {\r\n try {\r\n all[i].remove();\r\n } catch {}\r\n }\r\n }\r\n\r\n containerRegistry.set(id, el);\r\n return el;\r\n })();\r\n\r\n containerLocks.set(id, p);\r\n try {\r\n const out = await p;\r\n return out;\r\n } finally {\r\n // Clear the lock so future calls can re-enter if needed\r\n containerLocks.delete(getContainerId(options.position));\r\n }\r\n}\r\n","// src/utils/position.js\r\n\"use strict\";\r\n\r\n/**\r\n * Set position for toast container\r\n * @param {HTMLElement} container - Toast container element\r\n * @param {Object} options - Options object containing position\r\n * @returns {Promise<void>}\r\n */\r\nexport async function setPosition(container, options) {\r\n if (!container || !options.position) {\r\n throw new Error(\"Invalid container or position!\");\r\n }\r\n\r\n resetContainerStyles(container);\r\n const positionFlags = parsePosition(options.position);\r\n\r\n if (handleFullWidthPositions(container, options, positionFlags)) return;\r\n if (handleCenterPositions(container, positionFlags)) return;\r\n\r\n applyStandardPositioning(container, positionFlags);\r\n}\r\n\r\n/**\r\n * Reset all position-related styles\r\n * @param {HTMLElement} container\r\n */\r\nfunction resetContainerStyles(container) {\r\n container.style.top = \"auto\";\r\n container.style.bottom = \"auto\";\r\n container.style.left = \"auto\";\r\n container.style.right = \"auto\";\r\n container.style.transform = \"none\";\r\n}\r\n\r\n/**\r\n * Parse position string into boolean flags\r\n * @param {string} position\r\n * @returns {Object} Position flags\r\n */\r\nfunction parsePosition(position) {\r\n const pos = position.toLowerCase().trim();\r\n return {\r\n hasTop: pos.includes(\"top\"),\r\n hasBottom: pos.includes(\"bottom\") || pos.includes(\"below\"),\r\n hasLeft: pos.includes(\"left\"),\r\n hasRight: pos.includes(\"right\"),\r\n hasCenter: pos.includes(\"center\"),\r\n hasFullWidth:\r\n pos.includes(\"top-full-width\") ||\r\n pos.includes(\"bottom-full-width\") ||\r\n pos.includes(\"fullwidth\"),\r\n };\r\n}\r\n\r\n/**\r\n * Handle full-width positioning cases\r\n * @param {HTMLElement} container\r\n * @param {Object} options\r\n * @param {Object} flags\r\n * @returns {boolean} True if position was handled\r\n */\r\nfunction handleFullWidthPositions(container, options, flags) {\r\n if (!flags.hasFullWidth) return false;\r\n\r\n options.maxWidth = \"100vw\";\r\n\r\n if (flags.hasTop) {\r\n container.style.top = \"10px\";\r\n container.style.left = \"10px\";\r\n container.style.right = \"10px\";\r\n return true;\r\n }\r\n\r\n if (flags.hasBottom) {\r\n container.style.bottom = \"10px\";\r\n container.style.left = \"10px\";\r\n container.style.right = \"10px\";\r\n return true;\r\n }\r\n\r\n return false;\r\n}\r\n\r\n/**\r\n * Handle center positioning cases\r\n * @param {HTMLElement} container\r\n * @param {Object} flags\r\n * @returns {boolean} True if position was handled\r\n */\r\nfunction handleCenterPositions(container, flags) {\r\n if (!flags.hasCenter) return false;\r\n\r\n // top-center\r\n if (flags.hasTop && !flags.hasLeft && !flags.hasRight) {\r\n container.style.top = \"10px\";\r\n container.style.left = \"50%\";\r\n container.style.transform = \"translateX(-50%)\";\r\n return true;\r\n }\r\n\r\n // bottom-center\r\n if (flags.hasBottom && !flags.hasLeft && !flags.hasRight) {\r\n container.style.bottom = \"10px\";\r\n container.style.left = \"50%\";\r\n container.style.transform = \"translateX(-50%)\";\r\n return true;\r\n }\r\n\r\n // left-center\r\n if (flags.hasLeft && !flags.hasTop && !flags.hasBottom) {\r\n container.style.left = \"10px\";\r\n container.style.top = \"50%\";\r\n container.style.transform = \"translateY(-50%)\";\r\n return true;\r\n }\r\n\r\n // right-center\r\n if (flags.hasRight && !flags.hasTop && !flags.hasBottom) {\r\n container.style.right = \"10px\";\r\n container.style.top = \"50%\";\r\n container.style.transform = \"translateY(-50%)\";\r\n return true;\r\n }\r\n\r\n // full center (no sides specified)\r\n if (!flags.hasLeft && !flags.hasRight && !flags.hasTop && !flags.hasBottom) {\r\n container.style.top = \"50%\";\r\n container.style.left = \"50%\";\r\n container.style.transform = \"translate(-50%, -50%)\";\r\n return true;\r\n }\r\n\r\n return false;\r\n}\r\n\r\n/**\r\n * Apply standard positioning (corners and edges)\r\n * @param {HTMLElement} container\r\n * @param {Object} flags\r\n */\r\nfunction applyStandardPositioning(container, flags) {\r\n // Set vertical position\r\n if (flags.hasBottom) {\r\n container.style.bottom = \"10px\";\r\n } else if (flags.hasTop) {\r\n container.style.top = \"10px\";\r\n }\r\n\r\n // Set horizontal position\r\n if (flags.hasRight) {\r\n container.style.right = \"10px\";\r\n } else if (flags.hasLeft) {\r\n container.style.left = \"10px\";\r\n } else {\r\n // Default: bottom-center\r\n container.style.bottom = \"10px\";\r\n container.style.left = \"50%\";\r\n container.style.transform = \"translateX(-50%)\";\r\n }\r\n}\r\n","// src/utils/PausableTimer.js\r\n\"use strict\";\r\n\r\nexport class PausableTimer {\r\n constructor(callback, delay) {\r\n this.callback = callback;\r\n this.delay = delay;\r\n this.remaining = delay;\r\n this.startTime = null;\r\n this.timeoutId = null;\r\n this.isPaused = false;\r\n this.isCompleted = false;\r\n }\r\n\r\n start() {\r\n if (this.isCompleted || this.timeoutId) return this;\r\n this.startTime = Date.now();\r\n this.timeoutId = setTimeout(() => {\r\n this.isCompleted = true;\r\n this.timeoutId = null;\r\n this.callback();\r\n }, this.remaining);\r\n return this;\r\n }\r\n\r\n pause() {\r\n if (this.isPaused || !this.timeoutId || this.isCompleted) return this;\r\n clearTimeout(this.timeoutId);\r\n this.timeoutId = null;\r\n this.remaining -= Date.now() - this.startTime;\r\n this.remaining = Math.max(0, this.remaining); // prevent negative\r\n this.isPaused = true;\r\n return this;\r\n }\r\n\r\n resume() {\r\n if (!this.isPaused || this.isCompleted) return this;\r\n this.isPaused = false;\r\n this.start();\r\n return this;\r\n }\r\n\r\n clear() {\r\n if (this.timeoutId) {\r\n clearTimeout(this.timeoutId);\r\n this.timeoutId = null;\r\n }\r\n this.isCompleted = true;\r\n return this;\r\n }\r\n\r\n getRemainingTime() {\r\n if (this.isCompleted) return 0;\r\n if (this.isPaused) return this.remaining;\r\n if (!this.timeoutId) return this.delay;\r\n return Math.max(0, this.remaining - (Date.now() - this.startTime));\r\n }\r\n}\r\n","// src/components/ToastManager.js\r\n\"use strict\";\r\n\r\nimport { createToastElement } from \"./Toast.js\";\r\nimport { removeElement } from \"../utils/dom.js\";\r\nimport { createEmergencyToast } from \"./toast-utils.js\";\r\nimport { getOrCreateToastContainer } from \"../utils/containerRegistry.js\";\r\nimport { setPosition } from \"../utils/position.js\";\r\nimport { PausableTimer } from \"../utils/PausableTimer.js\";\r\n\r\n// Config\r\nconst MAX_VISIBLE = 3;\r\n\r\n// State\r\nconst active = new Map(); // key -> { outer, toast, count, timeout }\r\nconst pending = new Map(); // key -> { options, count, rafId }\r\nconst queue = []; // [{ options, key, count }]\r\nlet visibleCount = 0;\r\n\r\n// djb2 hash function for message deduplication\r\nfunction hashString(str) {\r\n let h = 5381;\r\n for (let i = 0; i < str.length; i++) h = (h << 5) + h + str.charCodeAt(i);\r\n return h >>> 0;\r\n}\r\n\r\n/**\r\n * Creates a unique key for a toast notification based on its type, message, and position.\r\n * This key is used to identify and deduplicate identical toast notifications.\r\n * @param {Object} options - Toast options with type, message, and position.\r\n * @returns {string} A unique key for the toast notification.\r\n */\r\nfunction makeKey(options = {}) {\r\n const type = String(options.type).trim().toLowerCase();\r\n const messageHash = hashString(String(options.message || \"\")).toString(16);\r\n const position = String(options.position).trim().toLowerCase();\r\n\r\n return `${type}|${messageHash}|${position}`;\r\n}\r\n\r\n/**\r\n * Shows a toast notification with the given options.\r\n * If there is already an active toast with the same type, message, and position,\r\n * it will be grouped immediately and the count will be incremented.\r\n * If there is already a pending toast with the same type, message, and position,\r\n * it will be coalesced and the count will be incremented.\r\n * If there is no capacity left (i.e. the number of visible toasts is at the maximum),\r\n * the grouped request will be enqueued and processed later.\r\n * @param {Object} options - Toast options with type, message, and position.\r\n * @returns {Promise<void>} A promise that resolves when the toast is fully created and displayed.\r\n */\r\nexport async function showToast(options = {}) {\r\n try {\r\n const key = makeKey(options);\r\n\r\n // If already active: group immediately\r\n if (active.has(key)) {\r\n const data = active.get(key);\r\n if (!data) throw new Error(`Active toast with key ${key} not found`);\r\n data.count++;\r\n\r\n // Reset timer with new duration\r\n data.timer.clear();\r\n data.timer = createDismissTimer(data.toast, options);\r\n await setupPauseOnHover(data);\r\n await updateBadge(data);\r\n return;\r\n }\r\n\r\n // If coalescing is already scheduled for this key, just increment the pending count\r\n if (pending.has(key)) {\r\n const current = pending.get(key);\r\n if (!current) throw new Error(`Pending toast with key ${key} not found`);\r\n current.count++;\r\n return;\r\n }\r\n\r\n // Start coalescing identical calls in the same frame\r\n const entry = { options, count: 1, rafId: 0 };\r\n pending.set(key, entry);\r\n\r\n entry.rafId = requestAnimationFrame(async () => {\r\n // finalize batch for this key\r\n const current = pending.get(key);\r\n if (!current) return;\r\n pending.delete(key);\r\n\r\n // If capacity full, enqueue the grouped request\r\n if (visibleCount >= MAX_VISIBLE) {\r\n queue.push({ options: current.options, key, count: current.count });\r\n await drainQueue();\r\n return;\r\n }\r\n\r\n // Otherwise create immediately with the grouped count\r\n try {\r\n await createOne(current.options, key, current.count);\r\n } catch (error) {\r\n console.error(\"showToast failed:\", error);\r\n }\r\n });\r\n } catch (error) {\r\n console.error(\"showToast failed:\", error);\r\n }\r\n}\r\n\r\n/**\r\n * Creates a single toast notification with the given options and initial count.\r\n * Will create and mount the toast element, and setup a timer to auto-dismiss.\r\n * If the toast creation fails, it will fallback to an emergency toast.\r\n * @param {Object} options - Toast options with type, message, and position.\r\n * @param {string} key - Unique key for the toast.\r\n * @param {number} initialCount - Initial count for the toast.\r\n * @returns {Promise<void>} A promise that resolves when the toast is fully created and displayed.\r\n */\r\nasync function createOne(options, key, initialCount) {\r\n try {\r\n if (!options || typeof options !== \"object\") {\r\n throw new TypeError(\"options must be an object\");\r\n }\r\n\r\n visibleCount++;\r\n\r\n const container = await getOrCreateToastContainer(options, setPosition);\r\n if (!container) {\r\n throw new Error(\"Failed to create toast container\");\r\n }\r\n\r\n // Build the toast element\r\n const toast = await createToastElement(options, closeToast);\r\n if (!toast) {\r\n throw new Error(\"Toast element creation failed\");\r\n }\r\n\r\n // Outer wrapper (badge surface; visible overflow)\r\n const outer = document.createElement(\"div\");\r\n Object.assign(outer.style, {\r\n position: \"relative\",\r\n display: \"inline-block\",\r\n overflow: \"visible\",\r\n marginBottom: \"10px\",\r\n zIndex: \"0\",\r\n width: \"100%\",\r\n });\r\n\r\n // Inner wrapper (clip progress bar & rounded corners)\r\n const inner = document.createElement(\"div\");\r\n Object.assign(inner.style, {\r\n position: \"relative\",\r\n overflow: \"hidden\",\r\n // borderRadius: options.borderRadius || \"8px\",\r\n zIndex: \"1\",\r\n });\r\n\r\n inner.appendChild(toast);\r\n outer.appendChild(inner);\r\n\r\n // Mount\r\n if (container.id.includes(\"toast-container-\")) {\r\n container.appendChild(outer);\r\n }\r\n\r\n // Determine if should pause on hover (default: true if has CTA)\r\n const shouldPauseOnHover =\r\n options.pauseOnHover !== false &&\r\n (options.pauseOnHover === true || !!options.cta);\r\n\r\n // Track\r\n const data = {\r\n outer,\r\n toast,\r\n count: Math.max(1, Math.floor(initialCount ?? 0)),\r\n timeout: null,\r\n pauseOnHover: shouldPauseOnHover,\r\n };\r\n active.set(key, data);\r\n toast._key = key;\r\n\r\n if (data.count > 1) await updateBadge(data);\r\n\r\n // Create and start timer\r\n data.timer = createDismissTimer(toast, options);\r\n await setupPauseOnHover(data);\r\n } catch (err) {\r\n console.error(\"Something went wrong: \", err);\r\n visibleCount = Math.max(0, visibleCount - 1);\r\n const el =\r\n document.querySelector('[id^=\"toast-container-\"]') || document.body;\r\n el.appendChild(await createEmergencyToast(options, closeToast));\r\n }\r\n}\r\n\r\n/**\r\n * Creates a PausableTimer that auto-closes a toast after a delay.\r\n * @param {HTMLElement} toast - The toast element to auto-close.\r\n * @param {Object} options - Toast options with duration.\r\n * @returns {PausableTimer} A timer that can be paused, resumed, or cleared.\r\n */\r\nfunction createDismissTimer(toast, options) {\r\n const delay = Number(options.duration ?? 1800) + 5;\r\n const timer = new PausableTimer(async () => await closeToast(toast), delay);\r\n timer.start();\r\n return timer;\r\n}\r\n\r\nasync function setupPauseOnHover(data) {\r\n if (!data.pauseOnHover || !data.outer || !data.timer) return;\r\n\r\n const { outer, timer } = data;\r\n\r\n // Mouse events\r\n const onMouseEnter = () => timer.pause();\r\n const onMouseLeave = () => timer.resume();\r\n\r\n // Focus events (for keyboard users)\r\n // Only pause if focus is on interactive elements (CTA, close button)\r\n const onFocusIn = (e) => {\r\n if (e.target.matches(\"[tabindex], div, span, button, a\")) timer.pause();\r\n };\r\n\r\n // Only resume if focus is leaving the toast entirely\r\n const onFocusOut = (e) => {\r\n if (!outer.contains(e.relatedTarget)) timer.resume();\r\n };\r\n\r\n // Add event listeners\r\n outer.addEventListener(\"mouseenter\", onMouseEnter);\r\n outer.addEventListener(\"mouseleave\", onMouseLeave);\r\n outer.addEventListener(\"focusin\", onFocusIn);\r\n outer.addEventListener(\"focusout\", onFocusOut);\r\n\r\n // Store cleanup function\r\n outer._pauseCleanup = () => {\r\n outer.removeEventListener(\"mouseenter\", onMouseEnter);\r\n outer.removeEventListener(\"mouseleave\", onMouseLeave);\r\n outer.removeEventListener(\"focusin\", onFocusIn);\r\n outer.removeEventListener(\"focusout\", onFocusOut);\r\n };\r\n}\r\n\r\n/**\r\n * Closes a toast notification immediately.\r\n * If the toast is not found in the active toasts map, this function does nothing.\r\n * @param {HTMLElement|null} toast - The toast element to close.\r\n * @returns {Promise<void>} A promise that resolves when the toast is fully removed from the DOM.\r\n */\r\nexport async function closeToast(toast) {\r\n debugger;\r\n try {\r\n if (!toast?._key) return;\r\n const data = active.get(toast._key);\r\n if (!data) return;\r\n\r\n // Clear timer and cleanup pause events\r\n data.timer?.clear();\r\n data.outer?._pauseCleanup?.();\r\n\r\n active.delete(toast._key);\r\n visibleCount = Math.max(0, visibleCount - 1);\r\n\r\n // Remove badge if present\r\n const badge = data.outer.querySelector(\".toast-count-badge\");\r\n if (badge) badge.remove();\r\n\r\n // Remove wrapper after transition ends (or fallback)\r\n await removeWithTransition(data.outer);\r\n\r\n // Drain queue after a slot frees\r\n await drainQueue();\r\n } catch (error) {\r\n console.error(\"Closing Toast failed!: \", error);\r\n }\r\n}\r\n\r\nasync function drainQueue() {\r\n // Fill available slots; coalesce queued entries against active if they became active meanwhile\r\n while (visibleCount < MAX_VISIBLE && queue.length) {\r\n const item = queue.shift();\r\n if (active.has(item.key)) {\r\n const data = active.get(item.key);\r\n data.count += item.count;\r\n await updateBadge(data);\r\n continue;\r\n }\r\n // Create without awaiting to keep loop responsive; visibleCount is incremented inside createOne\r\n void createOne(item.options, item.key, item.count);\r\n }\r\n}\r\n\r\n/**\r\n * Safely remove an element after its transition ends, with a hard timeout fallback\r\n * @param {Element} el - The element to remove\r\n * @returns {Promise<void>} A promise that resolves after the element is removed\r\n */\r\nasync function removeWithTransition(el) {\r\n if (!el) return Promise.resolve();\r\n\r\n return new Promise((resolve) => {\r\n let done = false;\r\n const finish = () => {\r\n if (done) return;\r\n done = true;\r\n removeElement(el);\r\n resolve();\r\n };\r\n\r\n // Listen on the immediate child (inner wrapper) if possible\r\n const child = el.firstElementChild || el;\r\n if (!child) return resolve();\r\n\r\n const onEnd = (e) => {\r\n try {\r\n // Check if the event target is the same element we're listening on\r\n if (e.target !== child) return;\r\n // Remove the event listener to prevent multiple triggers\r\n child.removeEventListener(\"transitionend\", onEnd, true);\r\n finish();\r\n } catch (error) {\r\n console.error(\"removeWithTransition error:\", error);\r\n }\r\n };\r\n\r\n // Add the event listener to the child element\r\n try {\r\n child.addEventListener(\"transitionend\", onEnd, true);\r\n } catch (error) {\r\n console.error(\"removeWithTransition error:\", error);\r\n }\r\n\r\n // Hard fallback if no transition fires after 700ms\r\n setTimeout(() => {\r\n try {\r\n // Remove the event listener to prevent multiple triggers\r\n child.removeEventListener(\"transitionend\", onEnd, true);\r\n finish();\r\n } catch (error) {\r\n console.error(\"removeWithTransition error:\", error);\r\n }\r\n }, 700);\r\n });\r\n}\r\n\r\n/**\r\n * Updates the badge count on the outer toast wrapper.\r\n * @param {Object} options Options object containing the outer toast wrapper and the count.\r\n * @param {HTMLElement} options.outer The outer toast wrapper element.\r\n * @param {number} options.count The count of identical notifications.\r\n */\r\nasync function updateBadge({ outer, count }) {\r\n if (!outer || !(outer instanceof HTMLElement)) {\r\n throw new Error(\"updateBadge: outer must be a valid HTMLElement\");\r\n }\r\n\r\n if (count < 2) {\r\n // Remove the badge if the count is less than 2\r\n const badge = outer.querySelector(\".toast-count-badge\");\r\n if (badge) badge.remove();\r\n return;\r\n }\r\n\r\n let badge = outer.querySelector(\".toast-count-badge\");\r\n if (!badge) {\r\n // Create the badge if it doesn't exist\r\n badge = document.createElement(\"span\");\r\n badge.className = \"toast-count-badge\";\r\n badge.setAttribute(\"aria-label\", `${count} identical notifications`);\r\n\r\n // Style the badge\r\n Object.assign(badge.style, {\r\n position: \"absolute\",\r\n top: \"6px\",\r\n right: \"6px\",\r\n backgroundColor: \"#f44336\",\r\n color: \"#fff\",\r\n borderRadius: \"50%\",\r\n minWidth: \"20px\",\r\n height: \"20px\",\r\n fontSize: \"12px\",\r\n fontWeight: \"600\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n border: \"2px solid #fff\",\r\n boxShadow: \"0 2px 6px rgba(0,0,0,0.3)\",\r\n zIndex: \"2\",\r\n pointerEvents: \"none\",\r\n transition: \"transform 150ms ease\",\r\n });\r\n\r\n // Add the badge to the outer toast wrapper\r\n outer.appendChild(badge);\r\n }\r\n\r\n // Update the badge text content\r\n badge.textContent = count > 99 ? \"99+\" : String(count);\r\n\r\n // Animate the badge by scaling it up and then back down\r\n try {\r\n badge.style.transform = \"scale(1.2)\";\r\n setTimeout(() => (badge.style.transform = \"scale(1)\"), 150);\r\n } catch (error) {\r\n console.error(\"updateBadge animation error:\", error);\r\n }\r\n}\r\n","// src/components/Toast.js //# Single responsibility\r\n\"use strict\";\r\n\r\nimport { createElementWithId } from \"../utils/dom.js\";\r\nimport { applyRichStyling, createEmergencyToast } from \"./toast-utils.js\";\r\n\r\n/**\r\n * Creates a multi-layer toast element with satellite-grade fallbacks\r\n * @param {Object} options - Toast configuration options\r\n * @param {Function} onClose - Callback when toast closes\r\n * @returns {HTMLElement} Toast element\r\n */\r\nexport async function createToastElement(options, onClose) {\r\n const toastContainerSelector = '[id^=\"toast-container-\"]';\r\n const toastContainer = document.querySelector(toastContainerSelector);\r\n if (!toastContainer) return null;\r\n\r\n let toast;\r\n const tagName = \"div\";\r\n const prefix = \"toast\";\r\n\r\n // PRIMARY: Full-featured toast\r\n try {\r\n toast = await createElementWithId(tagName, prefix);\r\n await applyRichStyling(toast, options, onClose);\r\n return toast;\r\n } catch (error) {\r\n console.warn(\r\n \"toast creation failed with error showing fallback one: \",\r\n error\r\n );\r\n // Fallback: create emergency toast\r\n toast = await createEmergencyToast(options, onClose);\r\n return toast;\r\n }\r\n}\r\n","// src/index.js\r\n\"use strict\";\r\n\r\nimport { closeToast, showToast } from \"./components/ToastManager.js\";\r\nimport { getOrCreateToastContainer } from \"./utils/containerRegistry.js\";\r\nimport { getDynamicAccessibleTextColorHex } from \"./utils/dom.js\";\r\nimport { setPosition } from \"./utils/position.js\";\r\n\r\n// Protected default colors with fallbacks\r\nlet defaultColors = {\r\n success: \"#28a745\",\r\n error: \"#dc3545\",\r\n warning: \"#ffc107\",\r\n info: \"#17a2b8\",\r\n};\r\n\r\nlet defaultMessages = {\r\n success: \"Operation completed successfully!\",\r\n error: \"Something went wrong!\",\r\n warning: \"Warning message!\",\r\n info: \"Information message!\",\r\n};\r\n\r\n/**\r\n * Create toast with satellite-grade reliability\r\n */\r\n// Toast queue for calls before DOM ready\r\nconst pendingToasts = [];\r\n\r\n// Flag to indicate DOM ready for toast execution\r\nlet domReady = false;\r\n\r\n/**\r\n * Checks if DOM is ready and flushes pending toasts after a delay\r\n */\r\nasync function checkDOMReady() {\r\n if (domReady) return;\r\n\r\n if (typeof window !== \"undefined\" && typeof document !== \"undefined\") {\r\n if (\r\n document.readyState === \"complete\" ||\r\n document.readyState === \"interactive\"\r\n ) {\r\n domReady = true;\r\n // Flush queued toasts after 2.5s delay\r\n pendingToasts.forEach((options) =>\r\n setTimeout(() => createToastNow(options), 2500)\r\n );\r\n pendingToasts.length = 0;\r\n } else {\r\n // Wait for DOMContentLoaded\r\n document.addEventListener(\r\n \"DOMContentLoaded\",\r\n () => {\r\n domReady = true;\r\n pendingToasts.forEach((options) =>\r\n setTimeout(() => createToastNow(options), 2500)\r\n );\r\n pendingToasts.length = 0;\r\n },\r\n { once: true }\r\n );\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Core toast creation logic\r\n * @param {Object} options - Toast options\r\n * @returns {Promise<void>} Toast creation promise\r\n */\r\nasync function createToastNow(options = {}) {\r\n try {\r\n /**\r\n * Sanitize toast options and fill in defaults\r\n * @param {Object} options - Toast options\r\n * @returns {Promise<Object>} Sanitized toast options promise\r\n */\r\n const sanitizedOptions = await sanitizeToastOptions(options);\r\n\r\n /**\r\n * Create the first toast container for pre-validate to a given position for same position toast stacking\r\n * @param {Object} options - Sanitized toast options\r\n * @returns {Promise<HTMLElement>} Toast container promise\r\n */\r\n await createFirstToastContainer(sanitizedOptions);\r\n\r\n /**\r\n * Show the toast notification with given options\r\n * @param {Object} options - Sanitized toast options\r\n * @returns {Promise<void>} Show toast promise\r\n */\r\n await showToast(sanitizedOptions);\r\n } catch (error) {\r\n console.error(\"CreateToast failed:\", error);\r\n\r\n const safeMessage =\r\n typeof options?.message === \"string\" && options?.message !== null\r\n ? `${options.message.substring(0, 200)} toast creation failed!`\r\n : \"Toast creation failed!\";\r\n\r\n alert(safeMessage);\r\n }\r\n}\r\n\r\n/**\r\n * Public API for creating a toast\r\n * @param {Object} options Toast options\r\n */\r\nasync function createToast(options = {}) {\r\n // Check browser environment\r\n const isBrowser =\r\n typeof window !== \"undefined\" && typeof document !== \"undefined\";\r\n\r\n if (!isBrowser) {\r\n console.warn(\r\n \"ToastNotification: running in non-browser environment, no DOM available.\"\r\n );\r\n return;\r\n }\r\n\r\n // Check if DOM ready\r\n await checkDOMReady();\r\n\r\n if (!domReady) {\r\n // Queue for later execution\r\n pendingToasts.push(options);\r\n return;\r\n }\r\n\r\n await createToastNow(options);\r\n}\r\n\r\n/**\r\n * Creates or retrieves the toast container for a given position\r\n * Single source of truth for containers; prevents same-id duplicates\r\n * @param {Object} options\r\n * @returns {Promise<HTMLElement>}\r\n */\r\nasync function createFirstToastContainer(options) {\r\n try {\r\n return await getOrCreateToastContainer(options, setPosition);\r\n } catch (error) {\r\n console.error(\"Failed to create toast container:\", error);\r\n return document.body;\r\n }\r\n}\r\n\r\n/**\r\n * Sanitizes and normalizes toast options.\r\n * Fills in defaults, validates input, and ensures colors & messages are set.\r\n * @param {Object} options - User-provided toast options\r\n * @returns {Promise<Object>} final sanitized toast options\r\n */\r\nasync function sanitizeToastOptions(options) {\r\n const contPosition = options?.position?.toLowerCase()?.trim();\r\n const contMaxWidth =\r\n contPosition?.includes(\"top-full-width\") ||\r\n contPosition?.includes(\"bottom-full-width\")\r\n ? \"100vw\"\r\n : \"400px\";\r\n\r\n const defaults = {\r\n pauseOnHover: undefined,\r\n duration: 2500,\r\n position: \"bottom-right\",\r\n type: \"info\",\r\n borderRadius: \"50px\",\r\n backgroundColor: undefined,\r\n textColor: undefined,\r\n showCloseButton: true,\r\n animationDuration: \"0.4s\",\r\n animationType: \"fade\",\r\n animationEasing: \"ease\",\r\n showProgressBar: true,\r\n progressColor: undefined,\r\n progressHeight: \"4px\",\r\n progressPosition: \"bottom\",\r\n fontPosition: \"relative\",\r\n fontPadding: undefined,\r\n fontBorderRadius: undefined,\r\n fontBackgroundColor: undefined,\r\n fontFamily:\r\n '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"',\r\n fontSize: \"14px\",\r\n fontWeight: \"400\",\r\n fontLineHeight: \"1.4\",\r\n fontDirection: \"auto\",\r\n wrapText: \"normal\",\r\n maxWidth: contMaxWidth,\r\n };\r\n\r\n // Merge defaults with user options\r\n const final = {\r\n ...defaults,\r\n ...(typeof options === \"object\" && !Array.isArray(options) ? options : {}),\r\n };\r\n\r\n // Ensure message property separately\r\n final.message = options?.message ?? final.message;\r\n\r\n try {\r\n // Background color fallback based on type or system preference\r\n if (!final.backgroundColor) {\r\n final.backgroundColor =\r\n defaultColors?.[final.type] ??\r\n (window.matchMedia(\"(prefers-color-scheme: dark)\").matches\r\n ? \"#f5f5f5\"\r\n : \"#111111\");\r\n }\r\n\r\n // Default message if not provided\r\n final.message =\r\n final.message || defaultMessages?.[final.type] || \"No Message Provided!\";\r\n\r\n // Ensure textColor is set\r\n if (!final.textColor && final.backgroundColor) {\r\n const textColorResult = getDynamicAccessibleTextColorHex(\r\n final.backgroundColor\r\n );\r\n final.textColor = textColorResult;\r\n }\r\n\r\n // Ensure progressColor is set\r\n if (!final.progressColor && final.backgroundColor) {\r\n if (final.textColor) {\r\n final.progressColor = final.textColor;\r\n } else {\r\n const barColorResult = getDynamicAccessibleTextColorHex(\r\n final.backgroundColor\r\n );\r\n final.progressColor = barColorResult;\r\n }\r\n }\r\n } catch (error) {\r\n console.warn(\"Option processing failed:\", error);\r\n }\r\n\r\n // Safety check for message type\r\n if (typeof final.message !== \"string\") {\r\n final.message = \"No Message Provided!\";\r\n }\r\n\r\n return final;\r\n}\r\n\r\n/**\r\n * Sets default colors\r\n * @param {Object} colors\r\n */\r\nfunction setDefaultColors(colors) {\r\n try {\r\n if (colors && typeof colors === \"object\" && !Array.isArray(colors)) {\r\n defaultColors = { ...defaultColors, ...colors };\r\n }\r\n } catch (error) {\r\n console.error(\"setDefaultColors failed:\", error);\r\n }\r\n}\r\n\r\n/**\r\n * Sets default messages\r\n * @param {Object} messages\r\n */\r\nfunction setDefaultMessages(messages) {\r\n try {\r\n if (messages && typeof messages === \"object\" && !Array.isArray(messages)) {\r\n defaultMessages = { ...defaultMessages, ...messages };\r\n }\r\n } catch (error) {\r\n console.error(\"setDefaultMessages failed:\", error);\r\n }\r\n}\r\n\r\n/**\r\n * Removes the first visible toast from the DOM.\r\n * Remove toast notifications from the DOM.\r\n *\r\n * @async\r\n * @function noop\r\n * @param {\"all\"} [mode] - If `\"all\"`, removes all matching toast elements.\r\n * Otherwise, removes only the first matching toast.\r\n * @returns {Promise<void>} Resolves when removal is attempted.\r\n */\r\nconst noop = async function () {\r\n const toast = document.querySelector('[id^=\"toast-\"]:not([id*=\"container\"])');\r\n await closeToast(toast);\r\n};\r\n\r\n// Module exports\r\nexport { createToast, setDefaultColors, setDefaultMessages, noop };\r\n\r\n// Global assignment with protection\r\ntry {\r\n // UMD/Global support\r\n if (typeof window !== \"undefined\") {\r\n window.customizableToast = {\r\n createToast,\r\n setDefaultColors,\r\n setDefaultMessages,\r\n noop,\r\n };\r\n }\r\n} catch (error) {\r\n console.error(\"Global assignment failed:\", error);\r\n}\r\n"],"names":["async","createElementWithId","tagName","prefix","el","document","createElement","id","Date","now","toString","Math","floor","random","generateToastId","colorCache","constructor","maxSize","arguments","length","undefined","this","map","Map","get","key","has","value","delete","set","size","firstKey","keys","next","precomputedNamedTextColors","getDynamicAccessibleTextColorHex","toastBg","opa","cached","toLowerCase","textColor","r","g","b","hexMatch","match","hex","split","c","join","parseInt","slice","rgbMatch","Error","Number","_unused4","round","luminance","a","v","pow","contrastRatio","rgb1","rgb2","L1","L2","max","min","h","s","l","rgbToHsl","d","textL","tr","tg","tb","hslToRgb","hue2rgb","p","q","t","contrastBlack","contrastWhite","result","rgbToHex","padStart","applyRichStyling","toast","options","onClose","_options$type","durationMs","duration","endsWith","parsed","parseFloat","parseAnimationDuration","animationDuration","className","type","Object","assign","style","background","backgroundColor","padding","marginBottom","borderRadius","overflow","display","alignItems","justifyContent","boxShadow","minWidth","maxWidth","opacity","position","cursor","boxSizing","userSelect","transition","animationEasing","transform","zIndex","setAttribute","tabIndex","_animationDuration","messageSpan","wrapText","whiteSpace","WebkitBoxOrient","WebkitLineClamp","flex","fontPadding","fontFamily","fontSize","fontWeight","lineHeight","fontLineHeight","color","wordBreak","textOverflow","textContent","message","appendChild","cta","cfg","label","isLink","href","variant","target","rel","ariaLabel","marginLeft","border","flexShrink","onClick","res","e","then","autoClose","addEventListener","_cleanup","removeEventListener","createCTA","showCloseButton","closeBtn","_cleanupCloseButton","createCloseButton","showProgressBar","progressBar","borderRadiusStr","borderRadiusNum","finalWidth","leftVal","left","height","progressHeight","progressColor","width","progressPosition","setTimeout","offsetWidth","createProgressBar","requestAnimationFrame","runToastAnimation","createEmergencyToast","emergency","top","right","wordWrap","closeSpan","float","onclick","remove","body","error","alert","entries","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","forEach","_ref","name","lum","L","containerRegistry","containerLocks","getContainerId","String","trim","replace","normalizePositionKey","getOrCreateToastContainer","setPosition","isConnected","getElementById","inset","flexDirection","all","querySelectorAll","i","_unused","container","bottom","resetContainerStyles","positionFlags","pos","hasTop","includes","hasBottom","hasLeft","hasRight","hasCenter","hasFullWidth","parsePosition","flags","handleFullWidthPositions","handleCenterPositions","applyStandardPositioning","PausableTimer","callback","delay","remaining","startTime","timeoutId","isPaused","isCompleted","start","pause","clearTimeout","resume","clear","getRemainingTime","active","pending","queue","visibleCount","showToast","str","charCodeAt","hashString","makeKey","data","count","timer","createDismissTimer","setupPauseOnHover","updateBadge","current","entry","rafId","push","drainQueue","createOne","initialCount","TypeError","querySelector","createToastElement","closeToast","outer","inner","shouldPauseOnHover","pauseOnHover","timeout","_key","err","_options$duration","onMouseEnter","onMouseLeave","onFocusIn","matches","onFocusOut","contains","relatedTarget","_pauseCleanup","_data$timer","_data$outer","_data$outer$_pauseCle","call","badge","Promise","resolve","done","finish","_el$parentNode","parentNode","removeChild","_unused2","pointerEvents","_unused3","removeElement","child","firstElementChild","onEnd","removeWithTransition","item","shift","HTMLElement","defaultColors","success","warning","info","defaultMessages","pendingToasts","domReady","createToastNow","sanitizedOptions","_options$position","_options$message","contPosition","contMaxWidth","final","animationType","fontPosition","fontBorderRadius","fontBackgroundColor","fontDirection","Array","isArray","_defaultMessages","_defaultColors$final$","_defaultColors","window","matchMedia","textColorResult","barColorResult","sanitizeToastOptions","createFirstToastContainer","safeMessage","substring","createToast","readyState","once","checkDOMReady","setDefaultColors","colors","setDefaultMessages","messages","noop","customizableToast"],"mappings":"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"}
|
package/dist/index.umd.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.umd.js","sources":["../src/utils/id.js","../src/utils/dom.js","../src/components/toast-utils-core.js","../src/components/toast-utils.js","../src/components/Toast.js","../src/utils/containerRegistry.js","../src/utils/position.js","../src/utils/PausableTimer.js","../src/components/ToastManager.js","../src/index.js"],"sourcesContent":["// src/utils/id.js\r\n\"use strict\";\r\n\r\n/**\r\n * Generate unique ID for DOM elements to avoid conflicts\r\n * @param {string} prefix - Optional prefix for ID\r\n * @returns {string} Unique ID\r\n */\r\nexport function generateToastId(prefix) {\r\n const timestamp = Date.now().toString(36); // shorter timestamp\r\n const random = Math.floor(Math.random() * 0xfffff).toString(36); // short random part\r\n return `${prefix}-${timestamp}-${random}`;\r\n}\r\n","// src/utils/dom.js\r\n\"use strict\";\r\n\r\nimport { generateToastId } from \"./id.js\";\r\n\r\n/**\r\n * Creates an element with a unique ID using the given prefix.\r\n * @param {string} tagName - Tag name of the element.\r\n * @param {string} prefix - Prefix for the element ID.\r\n * @returns {Promise<Element>}\r\n */\r\nexport async function createElementWithId(tagName, prefix) {\r\n if (!tagName || !prefix) throw new Error(\"tagName and prefix are required\");\r\n const el = document.createElement(tagName);\r\n el.id = generateToastId(prefix);\r\n return el;\r\n}\r\n\r\n/**\r\n * Appends a child element to a parent element with multiple fallbacks.\r\n * @param {Element} parent - The parent element.\r\n * @param {Element} child - The child element.\r\n * @returns {Promise<boolean>}\r\n */\r\nexport async function appendChild(parent, child) {\r\n if (!parent || !child) return false;\r\n\r\n try {\r\n if (!parent.contains(child)) parent.appendChild(child);\r\n return true;\r\n } catch (primaryError) {\r\n console.warn(\"appendChild primary failed:\", primaryError);\r\n try {\r\n parent.insertAdjacentElement(\"beforeend\", child);\r\n return true;\r\n } catch (fallbackError) {\r\n console.warn(\"appendChild fallback failed:\", fallbackError);\r\n try {\r\n if (parent === document.body) {\r\n const clone = child.cloneNode(true);\r\n parent.appendChild(clone);\r\n return true;\r\n }\r\n } catch (emergencyError) {\r\n console.error(\"appendChild emergency failed:\", emergencyError);\r\n return false;\r\n }\r\n }\r\n }\r\n return false;\r\n}\r\n\r\n/**\r\n * Removes an element from the DOM with multiple methods.\r\n * @param {Element} el - The element to be removed.\r\n * @returns {Promise<boolean>}\r\n */\r\nexport async function removeElement(el) {\r\n if (!el) return true;\r\n\r\n try {\r\n if (el?.parentNode?.id.includes(\"toast-container-\")) {\r\n el.parentNode.removeChild(el);\r\n return true;\r\n }\r\n } catch {}\r\n\r\n try {\r\n if (el.remove) {\r\n el.remove();\r\n return true;\r\n }\r\n } catch {}\r\n\r\n try {\r\n Object.assign(el.style, {\r\n display: \"none\",\r\n opacity: \"0\",\r\n pointerEvents: \"none\",\r\n position: \"absolute\",\r\n left: \"-9999px\",\r\n });\r\n return true;\r\n } catch {}\r\n\r\n return false;\r\n}\r\n\r\n/**\r\n * Parses animation duration from a string or number.\r\n * @param {string|number} duration - Duration value.\r\n * @returns {Promise<number>} - Milliseconds.\r\n */\r\nexport async function parseAnimationDuration(duration) {\r\n if (typeof duration === \"number\" && duration > 0) return duration;\r\n if (typeof duration === \"string\") {\r\n if (duration.endsWith(\"s\") && !duration.endsWith(\"ms\")) {\r\n const parsed = parseFloat(duration) * 1000;\r\n return parsed > 0 ? parsed : 500;\r\n }\r\n const parsed = parseFloat(duration);\r\n return parsed > 0 ? parsed : 500;\r\n }\r\n return 500;\r\n}\r\n\r\n/**\r\n * Forces a reflow on an element.\r\n * @param {Element} el - The element.\r\n * @returns {number}\r\n */\r\nexport function forceReflow(el) {\r\n try {\r\n return el?.offsetWidth || 0;\r\n } catch (error) {\r\n console.warn(\"Force reflow failed:\", error);\r\n return 0;\r\n }\r\n}\r\n\r\n/**\r\n * Shortcut for query selection with optional root.\r\n * @param {string} selector - CSS selector.\r\n * @param {Element|Document} [root=document] - Root element.\r\n * @returns {Element|null}\r\n */\r\nexport function query(selector, root = document) {\r\n return root.querySelector(selector);\r\n}\r\n\r\n/**\r\n * Gets accessible text color based on background according to WCAG.\r\n * Optimized with caching for repeated background colors.\r\n *\r\n * @param {string} toastBg - Background color (hex, rgb, hsl, named).\r\n * @param {number} [opa=1] - Optional opacity (0–1).\r\n * @returns {string} - Text color: \"black\" or \"white\".\r\n */\r\nclass LRUCache {\r\n constructor(maxSize = 200) {\r\n this.maxSize = maxSize;\r\n this.map = new Map();\r\n }\r\n\r\n get(key) {\r\n if (!this.map.has(key)) return undefined;\r\n const value = this.map.get(key);\r\n this.map.delete(key);\r\n this.map.set(key, value);\r\n return value;\r\n }\r\n\r\n set(key, value) {\r\n if (this.map.has(key)) this.map.delete(key);\r\n else if (this.map.size >= this.maxSize) {\r\n const firstKey = this.map.keys().next().value;\r\n this.map.delete(firstKey);\r\n }\r\n this.map.set(key, value);\r\n }\r\n}\r\n\r\nconst colorCache = new LRUCache(200);\r\n\r\n// Full named CSS color table\r\nconst namedColors = {\r\n aliceblue: [240, 248, 255],\r\n antiquewhite: [250, 235, 215],\r\n aqua: [0, 255, 255],\r\n aquamarine: [127, 255, 212],\r\n azure: [240, 255, 255],\r\n beige: [245, 245, 220],\r\n bisque: [255, 228, 196],\r\n black: [0, 0, 0],\r\n blanchedalmond: [255, 235, 205],\r\n blue: [0, 0, 255],\r\n blueviolet: [138, 43, 226],\r\n brown: [165, 42, 42],\r\n burlywood: [222, 184, 135],\r\n cadetblue: [95, 158, 160],\r\n chartreuse: [127, 255, 0],\r\n chocolate: [210, 105, 30],\r\n coral: [255, 127, 80],\r\n cornflowerblue: [100, 149, 237],\r\n cornsilk: [255, 248, 220],\r\n crimson: [220, 20, 60],\r\n cyan: [0, 255, 255],\r\n darkblue: [0, 0, 139],\r\n darkcyan: [0, 139, 139],\r\n darkgoldenrod: [184, 134, 11],\r\n darkgray: [169, 169, 169],\r\n darkgreen: [0, 100, 0],\r\n darkgrey: [169, 169, 169],\r\n darkkhaki: [189, 183, 107],\r\n darkmagenta: [139, 0, 139],\r\n darkolivegreen: [85, 107, 47],\r\n darkorange: [255, 140, 0],\r\n darkorchid: [153, 50, 204],\r\n darkred: [139, 0, 0],\r\n darksalmon: [233, 150, 122],\r\n darkseagreen: [143, 188, 143],\r\n darkslateblue: [72, 61, 139],\r\n darkslategray: [47, 79, 79],\r\n darkslategrey: [47, 79, 79],\r\n darkturquoise: [0, 206, 209],\r\n darkviolet: [148, 0, 211],\r\n deeppink: [255, 20, 147],\r\n deepskyblue: [0, 191, 255],\r\n dimgray: [105, 105, 105],\r\n dimgrey: [105, 105, 105],\r\n dodgerblue: [30, 144, 255],\r\n firebrick: [178, 34, 34],\r\n floralwhite: [255, 250, 240],\r\n forestgreen: [34, 139, 34],\r\n fuchsia: [255, 0, 255],\r\n gainsboro: [220, 220, 220],\r\n ghostwhite: [248, 248, 255],\r\n gold: [255, 215, 0],\r\n goldenrod: [218, 165, 32],\r\n gray: [128, 128, 128],\r\n green: [0, 128, 0],\r\n greenyellow: [173, 255, 47],\r\n grey: [128, 128, 128],\r\n honeydew: [240, 255, 240],\r\n hotpink: [255, 105, 180],\r\n indianred: [205, 92, 92],\r\n indigo: [75, 0, 130],\r\n ivory: [255, 255, 240],\r\n khaki: [240, 230, 140],\r\n lavender: [230, 230, 250],\r\n lavenderblush: [255, 240, 245],\r\n lawngreen: [124, 252, 0],\r\n lemonchiffon: [255, 250, 205],\r\n lightblue: [173, 216, 230],\r\n lightcoral: [240, 128, 128],\r\n lightcyan: [224, 255, 255],\r\n lightgoldenrodyellow: [250, 250, 210],\r\n lightgray: [211, 211, 211],\r\n lightgreen: [144, 238, 144],\r\n lightgrey: [211, 211, 211],\r\n lightpink: [255, 182, 193],\r\n lightsalmon: [255, 160, 122],\r\n lightseagreen: [32, 178, 170],\r\n lightskyblue: [135, 206, 250],\r\n lightslategray: [119, 136, 153],\r\n lightslategrey: [119, 136, 153],\r\n lightsteelblue: [176, 196, 222],\r\n lightyellow: [255, 255, 224],\r\n lime: [0, 255, 0],\r\n limegreen: [50, 205, 50],\r\n linen: [250, 240, 230],\r\n magenta: [255, 0, 255],\r\n maroon: [128, 0, 0],\r\n mediumaquamarine: [102, 205, 170],\r\n mediumblue: [0, 0, 205],\r\n mediumorchid: [186, 85, 211],\r\n mediumpurple: [147, 112, 219],\r\n mediumseagreen: [60, 179, 113],\r\n mediumslateblue: [123, 104, 238],\r\n mediumspringgreen: [0, 250, 154],\r\n mediumturquoise: [72, 209, 204],\r\n mediumvioletred: [199, 21, 133],\r\n midnightblue: [25, 25, 112],\r\n mintcream: [245, 255, 250],\r\n mistyrose: [255, 228, 225],\r\n moccasin: [255, 228, 181],\r\n navajowhite: [255, 222, 173],\r\n navy: [0, 0, 128],\r\n oldlace: [253, 245, 230],\r\n olive: [128, 128, 0],\r\n olivedrab: [107, 142, 35],\r\n orange: [255, 165, 0],\r\n orangered: [255, 69, 0],\r\n orchid: [218, 112, 214],\r\n palegoldenrod: [238, 232, 170],\r\n palegreen: [152, 251, 152],\r\n paleturquoise: [175, 238, 238],\r\n palevioletred: [219, 112, 147],\r\n papayawhip: [255, 239, 213],\r\n peachpuff: [255, 218, 185],\r\n peru: [205, 133, 63],\r\n pink: [255, 192, 203],\r\n plum: [221, 160, 221],\r\n powderblue: [176, 224, 230],\r\n purple: [128, 0, 128],\r\n rebeccapurple: [102, 51, 153],\r\n red: [255, 0, 0],\r\n rosybrown: [188, 143, 143],\r\n royalblue: [65, 105, 225],\r\n saddlebrown: [139, 69, 19],\r\n salmon: [250, 128, 114],\r\n sandybrown: [244, 164, 96],\r\n seagreen: [46, 139, 87],\r\n seashell: [255, 245, 238],\r\n sienna: [160, 82, 45],\r\n silver: [192, 192, 192],\r\n skyblue: [135, 206, 235],\r\n slateblue: [106, 90, 205],\r\n slategray: [112, 128, 144],\r\n slategrey: [112, 128, 144],\r\n snow: [255, 250, 250],\r\n springgreen: [0, 255, 127],\r\n steelblue: [70, 130, 180],\r\n tan: [210, 180, 140],\r\n teal: [0, 128, 128],\r\n thistle: [216, 191, 216],\r\n tomato: [255, 99, 71],\r\n turquoise: [64, 224, 208],\r\n violet: [238, 130, 238],\r\n wheat: [245, 222, 179],\r\n white: [255, 255, 255],\r\n whitesmoke: [245, 245, 245],\r\n yellow: [255, 255, 0],\r\n yellowgreen: [154, 205, 50],\r\n};\r\n\r\n// Precompute accessible text for all named colors (O(1) lookup) (case-insensitive)\r\nconst precomputedNamedTextColors = {};\r\nObject.entries(namedColors).forEach(([name, [r, g, b]]) => {\r\n // Calculate relative luminance\r\n const lum = (c) => {\r\n const v = c / 255;\r\n return v <= 0.03928 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);\r\n };\r\n const L = 0.2126 * lum(r) + 0.7152 * lum(g) + 0.0722 * lum(b);\r\n // WCAG contrast: choose black or white based on which has higher contrast\r\n const contrastBlack = (L + 0.05) / 0.05;\r\n const contrastWhite = 1.05 / (L + 0.05);\r\n precomputedNamedTextColors[name.toLowerCase()] =\r\n contrastBlack >= contrastWhite ? \"#000000\" : \"#ffffff\";\r\n});\r\n\r\nexport function getDynamicAccessibleTextColorHex(toastBg, opa = 1) {\r\n if (!toastBg) return \"snow\";\r\n\r\n const key = `${toastBg}|${opa}`;\r\n const cached = colorCache.get(key);\r\n if (cached) return cached;\r\n\r\n // Named color precomputed lookup\r\n if (precomputedNamedTextColors[toastBg?.toLowerCase()]) {\r\n const textColor = precomputedNamedTextColors[toastBg.toLowerCase()];\r\n colorCache.set(key, textColor);\r\n return textColor;\r\n }\r\n\r\n let r, g, b;\r\n\r\n try {\r\n const hexMatch = toastBg?.match(/^#([0-9a-f]{3,8})$/i);\r\n if (hexMatch) {\r\n let hex = hexMatch[1];\r\n if (hex.length === 3)\r\n hex = hex\r\n .split(\"\")\r\n .map((c) => c + c)\r\n .join(\"\");\r\n r = parseInt(hex.slice(0, 2), 16);\r\n g = parseInt(hex.slice(2, 4), 16);\r\n b = parseInt(hex.slice(4, 6), 16);\r\n } else {\r\n const rgbMatch = toastBg?.match(\r\n /rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)(?:,\\s*[\\d.]+)?\\)/i\r\n );\r\n if (rgbMatch) {\r\n r = Number(rgbMatch[1]);\r\n g = Number(rgbMatch[2]);\r\n b = Number(rgbMatch[3]);\r\n } else throw new Error(\"Unknown color\");\r\n }\r\n } catch {\r\n r = 50 + Math.floor(Math.random() * 206);\r\n g = 50 + Math.floor(Math.random() * 206);\r\n b = 50 + Math.floor(Math.random() * 206);\r\n }\r\n\r\n // Apply opacity blending\r\n r = Math.round(r * opa + 255 * (1 - opa));\r\n g = Math.round(g * opa + 255 * (1 - opa));\r\n b = Math.round(b * opa + 255 * (1 - opa));\r\n\r\n // Convert HSL and adjust lightness dynamically\r\n const rgbToHsl = (r, g, b) => {\r\n r /= 255;\r\n g /= 255;\r\n b /= 255;\r\n const max = Math.max(r, g, b),\r\n min = Math.min(r, g, b);\r\n let h,\r\n s,\r\n l = (max + min) / 2;\r\n if (max === min) h = s = 0;\r\n else {\r\n const d = max - min;\r\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\r\n switch (max) {\r\n case r:\r\n h = (g - b) / d + (g < b ? 6 : 0);\r\n break;\r\n case g:\r\n h = (b - r) / d + 2;\r\n break;\r\n case b:\r\n h = (r - g) / d + 4;\r\n }\r\n h /= 6;\r\n }\r\n return [h * 360, s, l];\r\n };\r\n const hslToRgb = (h, s, l) => {\r\n h /= 360;\r\n let r, g, b;\r\n if (s === 0) r = g = b = l;\r\n else {\r\n const hue2rgb = (p, q, t) => {\r\n if (t < 0) t += 1;\r\n if (t > 1) t -= 1;\r\n if (t < 1 / 6) return p + (q - p) * 6 * t;\r\n if (t < 1 / 2) return q;\r\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\r\n return p;\r\n };\r\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\r\n const p = 2 * l - q;\r\n r = hue2rgb(p, q, h + 1 / 3);\r\n g = hue2rgb(p, q, h);\r\n b = hue2rgb(p, q, h - 1 / 3);\r\n }\r\n return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)];\r\n };\r\n const luminance = (r, g, b) => {\r\n const a = [r, g, b].map((v) => {\r\n v /= 255;\r\n return v <= 0.03928 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);\r\n });\r\n return 0.2126 * a[0] + 0.7152 * a[1] + 0.0722 * a[2];\r\n };\r\n const contrastRatio = (rgb1, rgb2) => {\r\n const L1 = luminance(...rgb1);\r\n const L2 = luminance(...rgb2);\r\n return (Math.max(L1, L2) + 0.05) / (Math.min(L1, L2) + 0.05);\r\n };\r\n const rgbToHex = (r, g, b) =>\r\n `#${r.toString(16).padStart(2, \"0\")}${g.toString(16).padStart(2, \"0\")}${b\r\n .toString(16)\r\n .padStart(2, \"0\")}`;\r\n\r\n let [h, s, l] = rgbToHsl(r, g, b);\r\n const minContrast = 4.5;\r\n let textL = l < 0.5 ? Math.min(l + 0.5, 1) : Math.max(l - 0.5, 0);\r\n let [tr, tg, tb] = hslToRgb(h, s, textL);\r\n\r\n if (contrastRatio([r, g, b], [tr, tg, tb]) < minContrast) {\r\n const contrastBlack = contrastRatio([r, g, b], [0, 0, 0]);\r\n const contrastWhite = contrastRatio([r, g, b], [255, 255, 255]);\r\n [tr, tg, tb] = contrastBlack >= contrastWhite ? [0, 0, 0] : [255, 255, 255];\r\n }\r\n\r\n const result = rgbToHex(tr, tg, tb);\r\n colorCache.set(key, result);\r\n return result;\r\n}\r\n","\"use strict\";\r\n\r\n/**\r\n * Creates a Call-To-Action (CTA) button or link for the toast.\r\n * @param {HTMLElement} toast - The toast container element.\r\n * @param {Object} options - Toast options including cta config.\r\n * @param {Function} onClose - Callback when toast closes.\r\n */\r\nexport function createCTA(toast, options, onClose) {\r\n const cfg = options?.cta;\r\n if (!cfg) return;\r\n\r\n if (!cfg.label) {\r\n cfg.label = \"CTA Label Missing!\";\r\n }\r\n\r\n const isLink = !!cfg.href && cfg.variant === \"link\";\r\n const el = document.createElement(isLink ? \"a\" : \"button\");\r\n\r\n if (isLink) {\r\n el.href = cfg.href;\r\n if (cfg.target) el.target = cfg.target;\r\n el.rel = cfg.rel || (cfg.target === \"_blank\" ? \"noopener noreferrer\" : \"\");\r\n } else {\r\n el.type = \"button\";\r\n }\r\n\r\n el.setAttribute(\"aria-label\", cfg.ariaLabel || cfg.label);\r\n\r\n Object.assign(el.style, {\r\n marginLeft: \"10px\",\r\n padding: \"6px 10px\",\r\n borderRadius: \"6px\",\r\n fontSize: \"12px\",\r\n fontWeight: \"600\",\r\n lineHeight: \"1\",\r\n border: \"1px solid rgba(255,255,255,0.35)\",\r\n color: options.textColor || \"#fff\",\r\n background: \"rgba(255,255,255,0.15)\",\r\n cursor: \"pointer\",\r\n whiteSpace: \"nowrap\",\r\n flexShrink: \"0\",\r\n });\r\n\r\n el.textContent = cfg.label;\r\n\r\n const onClick = async (e) => {\r\n try {\r\n if (typeof cfg.onClick === \"function\") {\r\n const res = cfg.onClick(e);\r\n if (res?.then) await res;\r\n }\r\n } finally {\r\n if (cfg.autoClose !== false) onClose(toast);\r\n }\r\n };\r\n\r\n el.addEventListener(\"click\", onClick);\r\n\r\n // Store cleanup for event listener removal if needed\r\n el._cleanup = () => el.removeEventListener(\"click\", onClick);\r\n\r\n toast.appendChild(el);\r\n}\r\n\r\n/**\r\n * Creates the close button for the toast.\r\n * @param {HTMLElement} toast\r\n * @param {Object} options\r\n * @param {Function} onClose\r\n */\r\nexport function createCloseButton(toast, options, onClose) {\r\n const closeBtn = document.createElement(\"button\");\r\n closeBtn.setAttribute(\"aria-label\", \"Close notification\");\r\n closeBtn.setAttribute(\"title\", \"Close\");\r\n closeBtn.textContent = \"×\";\r\n\r\n Object.assign(closeBtn.style, {\r\n background: \"none\",\r\n border: \"none\",\r\n color: options.textColor || \"white\",\r\n fontSize: \"18px\",\r\n marginLeft: \"10px\",\r\n cursor: \"pointer\",\r\n });\r\n\r\n const onClick = () => onClose(toast);\r\n closeBtn.addEventListener(\"click\", onClick);\r\n\r\n // Provide cleanup for memory management\r\n toast._cleanupCloseButton = () => {\r\n closeBtn.removeEventListener(\"click\", onClick);\r\n };\r\n\r\n toast.appendChild(closeBtn);\r\n}\r\n\r\n/**\r\n * Creates and animates the progress bar on the toast.\r\n * @param {HTMLElement} toast\r\n * @param {Object} options\r\n */\r\nexport function createProgressBar(toast, options) {\r\n const progressBar = document.createElement(\"div\");\r\n const borderRadiusStr = options.borderRadius || 0;\r\n const borderRadiusNum = parseInt(borderRadiusStr, 10);\r\n const newRadiusSub = borderRadiusNum - 10 + \"px\";\r\n const finalWidth = borderRadiusNum ? `calc(100% - ${newRadiusSub})` : \"100%\";\r\n const leftVal = borderRadiusNum ? \"12px\" : \"0\";\r\n\r\n Object.assign(progressBar.style, {\r\n position: \"absolute\",\r\n left: `${leftVal}`,\r\n height: options.progressHeight || \"4px\",\r\n background: options.progressColor || \"rgba(255, 255, 255, 0.3)\",\r\n width: `${finalWidth}`,\r\n transition: `width ${options.duration || 1800}ms linear`,\r\n [options.progressPosition === \"top\" ? \"top\" : \"bottom\"]: \"0\",\r\n borderRadius: options.borderRadius || \"4px\",\r\n });\r\n\r\n toast.appendChild(progressBar);\r\n\r\n // Trigger width animation after insertion\r\n setTimeout(() => {\r\n // Force reflow to apply transition properly\r\n progressBar.offsetWidth;\r\n progressBar.style.width = \"0%\";\r\n }, 50);\r\n}\r\n\r\n/**\r\n * Runs the toast's fade-in animation.\r\n * @param {HTMLElement} toast\r\n */\r\nexport function runToastAnimation(toast) {\r\n setTimeout(() => {\r\n requestAnimationFrame(() => {\r\n toast.style.opacity = \"1\";\r\n toast.style.transform = \"translateY(0)\";\r\n });\r\n }, 50);\r\n}\r\n","// src/components/toast-utils.js\r\n\"use strict\";\r\n\r\nimport { parseAnimationDuration } from \"../utils/dom.js\";\r\nimport {\r\n createCTA,\r\n createCloseButton,\r\n createProgressBar,\r\n runToastAnimation,\r\n} from \"./toast-utils-core.js\";\r\n\r\n/**\r\n * Applies rich styling and content to a toast element.\r\n * @param {HTMLElement} toast - The toast container element.\r\n * @param {object} options - Configuration options for the toast.\r\n * @param {Function} onClose - Callback invoked when the toast closes.\r\n */\r\nexport async function applyRichStyling(toast, options, onClose) {\r\n const durationMs = await parseAnimationDuration(options?.animationDuration);\r\n\r\n // Compose className based on provided type (default to \"info\")\r\n toast.className = `toast toast-${options?.type ?? \"info\"}`;\r\n\r\n Object.assign(toast.style, {\r\n background: options?.backgroundColor,\r\n padding: \"12px 16px\",\r\n marginBottom: \"10px\",\r\n borderRadius: options?.borderRadius,\r\n overflow: \"hidden\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\",\r\n boxShadow: \"0 4px 6px rgba(0, 0, 0, 0.1)\",\r\n minWidth: \"250px\",\r\n maxWidth: options?.maxWidth,\r\n opacity: \"0\",\r\n position: \"relative\",\r\n cursor: \"default\",\r\n boxSizing: \"border-box\",\r\n userSelect: \"text\",\r\n transition: `opacity ${options?.animationDuration} ${options?.animationEasing}, transform ${options?.animationDuration} ${options?.animationEasing}`,\r\n transform: \"translateY(20px)\",\r\n zIndex: \"9999\",\r\n });\r\n // Accessibility settings\r\n toast.setAttribute(\"role\", \"alert\");\r\n toast.setAttribute(\"aria-live\", \"polite\");\r\n toast.tabIndex = 0; // Make focusable for accessibility if needed\r\n\r\n toast._animationDuration = durationMs;\r\n\r\n const messageSpan = document.createElement(\"span\");\r\n\r\n if (options?.wrapText) {\r\n Object.assign(messageSpan.style, {\r\n display: \"block\",\r\n whiteSpace: \"normal\",\r\n });\r\n } else {\r\n Object.assign(messageSpan.style, {\r\n display: \"-webkit-box\",\r\n WebkitBoxOrient: \"vertical\",\r\n WebkitLineClamp: \"3\",\r\n whiteSpace: \"nowrap\",\r\n });\r\n }\r\n\r\n Object.assign(messageSpan.style, {\r\n flex: \"1\",\r\n padding: options?.fontPadding,\r\n fontFamily: options?.fontFamily,\r\n fontSize: options?.fontSize,\r\n fontWeight: options?.fontWeight,\r\n lineHeight: options?.fontLineHeight,\r\n color: options?.textColor,\r\n userSelect: \"text\",\r\n wordBreak: \"break-word\",\r\n overflow: \"hidden\",\r\n textOverflow: \"ellipsis\",\r\n display: \"-webkit-box\",\r\n WebkitLineClamp: \"3\",\r\n WebkitBoxOrient: \"vertical\",\r\n });\r\n\r\n messageSpan.textContent = options?.message;\r\n messageSpan.setAttribute(\"message\", options?.message);\r\n messageSpan.setAttribute(\"aria-label\", options?.message);\r\n toast.appendChild(messageSpan);\r\n\r\n if (options?.cta && Object.keys(options.cta).length !== 0) {\r\n createCTA(toast, options, onClose);\r\n }\r\n\r\n if (options?.showCloseButton) {\r\n createCloseButton(toast, options, onClose);\r\n }\r\n\r\n if (options?.showProgressBar) {\r\n createProgressBar(toast, options);\r\n }\r\n\r\n runToastAnimation(toast);\r\n}\r\n\r\n/**\r\n * Creates an emergency toast as a safe fallback.\r\n * @param {object} options - Configuration options for the toast.\r\n * @param {Function} onClose - Callback invoked when the toast closes.\r\n * @returns {Promise<HTMLElement|null>}\r\n */\r\nexport async function createEmergencyToast(options, onClose) {\r\n try {\r\n const emergency = document.createElement(\"div\");\r\n Object.assign(emergency.style, {\r\n background: \"#333\",\r\n color: \"white\",\r\n padding: \"10px 15px\",\r\n position: \"fixed\",\r\n top: \"20px\",\r\n right: \"20px\",\r\n zIndex: \"99999\",\r\n borderRadius: \"3px\",\r\n maxWidth: \"250px\",\r\n wordWrap: \"break-word\",\r\n boxShadow: \"0 2px 10px rgba(0,0,0,0.3)\",\r\n cursor: \"pointer\",\r\n });\r\n\r\n const messageSpan = document.createElement(\"span\");\r\n messageSpan.textContent =\r\n options?.message || \"Emergency Toast Creation Showing!\";\r\n emergency.appendChild(messageSpan);\r\n\r\n const closeSpan = document.createElement(\"span\");\r\n closeSpan.textContent = \"×\";\r\n Object.assign(closeSpan.style, {\r\n float: \"right\",\r\n marginLeft: \"10px\",\r\n fontWeight: \"bold\",\r\n });\r\n closeSpan.onclick = () => {\r\n emergency.remove();\r\n onClose(emergency);\r\n };\r\n emergency.appendChild(closeSpan);\r\n\r\n document.body.appendChild(emergency);\r\n setTimeout(() => {\r\n emergency.remove();\r\n onClose(emergency);\r\n }, options?.duration);\r\n\r\n return emergency;\r\n } catch (error) {\r\n console.error(\"Emergency toast creation failed:\", error);\r\n setTimeout(() => {\r\n alert(options?.message || \"Emergency Toast Creation Showing!\");\r\n onClose(null);\r\n }, 100);\r\n return null;\r\n }\r\n}\r\n","// src/components/Toast.js //# Single responsibility\r\n\"use strict\";\r\n\r\nimport { createElementWithId } from \"../utils/dom.js\";\r\nimport { applyRichStyling, createEmergencyToast } from \"./toast-utils.js\";\r\n\r\n/**\r\n * Creates a multi-layer toast element with satellite-grade fallbacks\r\n * @param {Object} options - Toast configuration options\r\n * @param {Function} onClose - Callback when toast closes\r\n * @returns {HTMLElement} Toast element\r\n */\r\nexport async function createToastElement(options, onClose) {\r\n const toastContainerSelector = '[id^=\"toast-container-\"]';\r\n const toastContainer = document.querySelector(toastContainerSelector);\r\n if (!toastContainer) return null;\r\n\r\n let toast;\r\n const tagName = \"div\";\r\n const prefix = \"toast\";\r\n\r\n // PRIMARY: Full-featured toast\r\n try {\r\n toast = await createElementWithId(tagName, prefix);\r\n await applyRichStyling(toast, options, onClose);\r\n return toast;\r\n } catch (error) {\r\n console.warn(\r\n \"toast creation failed with error showing fallback one: \",\r\n error\r\n );\r\n // Fallback: create emergency toast\r\n toast = await createEmergencyToast(options, onClose);\r\n return toast;\r\n }\r\n}\r\n","// src/utils/containerRegistry.js\r\n\"use strict\";\r\n\r\nconst containerRegistry = new Map(); // id -> HTMLElement\r\nconst containerLocks = new Map(); // id -> Promise<HTMLElement>\r\n\r\n/**\r\n * Normalize a position string to a canonical key (id-safe, stable).\r\n */\r\nexport function normalizePositionKey(position) {\r\n // lower-case, trim, unify separators, alias \"below\" -> \"bottom\"\r\n const raw = String(position).toLowerCase().trim();\r\n const aliased = raw.replace(/\\bbelow\\b/g, \"bottom\");\r\n return aliased\r\n .replace(/\\s+/g, \"-\")\r\n .replace(/[^a-z0-9-]/g, \"-\")\r\n .replace(/-{2,}/g, \"-\");\r\n}\r\n\r\n/**\r\n * Canonical container id\r\n */\r\nexport function getContainerId(position) {\r\n return `toast-container-${normalizePositionKey(position)}`;\r\n}\r\n\r\n/**\r\n * Atomically get or create a single container per canonical id.\r\n */\r\nexport async function getOrCreateToastContainer(options, setPosition) {\r\n const id = getContainerId(options.position);\r\n // If a creation is in-flight, await it\r\n if (containerLocks.has(id)) {\r\n return containerLocks.get(id);\r\n }\r\n\r\n const p = (async () => {\r\n // 1) Prefer registry cache if still connected\r\n const cached = containerRegistry.get(id);\r\n if (cached?.isConnected) {\r\n return cached;\r\n }\r\n\r\n // 2) Find existing in DOM\r\n let el = document.getElementById(id); // unique by spec, but may return first if duplicates exist\r\n if (el && !el.isConnected) {\r\n // re-attach if detached\r\n document.body.appendChild(el);\r\n }\r\n\r\n // 3) If not found, create\r\n if (!el) {\r\n el = document.createElement(\"div\");\r\n el.id = id;\r\n el.setAttribute(\"role\", \"status\"); // polite + atomic by default\r\n el.setAttribute(\"aria-atomic\", \"true\"); // explicit for consistency\r\n el.style.position = \"fixed\";\r\n el.style.zIndex = \"9999\";\r\n el.style.inset = \"auto 10px 10px auto\";\r\n el.style.display = \"flex\";\r\n el.style.justifyContent = \"space-between\";\r\n el.style.alignItems = \"center\";\r\n el.style.flexDirection = \"column\";\r\n el.style.overflow = \"hidden\";\r\n // Position with provided helper\r\n if (typeof setPosition === \"function\") {\r\n await setPosition(el, options);\r\n }\r\n document.body.appendChild(el);\r\n } else {\r\n // Ensure base styles and (re)apply position in case options changed\r\n el.style.position = el.style.position || \"fixed\";\r\n el.style.zIndex = el.style.zIndex || \"9999\";\r\n if (typeof setPosition === \"function\") {\r\n await setPosition(el, options);\r\n }\r\n }\r\n\r\n // 4) If somehow duplicates exist, keep the first and remove the rest\r\n // getElementById would have returned the first; clean up others proactively\r\n const all = document.querySelectorAll(`#${id}`);\r\n if (all.length > 1) {\r\n for (let i = 1; i < all.length; i++) {\r\n try {\r\n all[i].remove();\r\n } catch {}\r\n }\r\n }\r\n\r\n containerRegistry.set(id, el);\r\n return el;\r\n })();\r\n\r\n containerLocks.set(id, p);\r\n try {\r\n const out = await p;\r\n return out;\r\n } finally {\r\n // Clear the lock so future calls can re-enter if needed\r\n containerLocks.delete(getContainerId(options.position));\r\n }\r\n}\r\n","// src/utils/position.js\r\n\"use strict\";\r\n\r\n/**\r\n * Set position for toast container\r\n * @param {HTMLElement} container - Toast container element\r\n * @param {Object} options - Options object containing position\r\n * @returns {Promise<void>}\r\n */\r\nexport async function setPosition(container, options) {\r\n if (!container || !options.position) {\r\n throw new Error(\"Invalid container or position!\");\r\n }\r\n\r\n resetContainerStyles(container);\r\n const positionFlags = parsePosition(options.position);\r\n\r\n if (handleFullWidthPositions(container, options, positionFlags)) return;\r\n if (handleCenterPositions(container, positionFlags)) return;\r\n\r\n applyStandardPositioning(container, positionFlags);\r\n}\r\n\r\n/**\r\n * Reset all position-related styles\r\n * @param {HTMLElement} container\r\n */\r\nfunction resetContainerStyles(container) {\r\n container.style.top = \"auto\";\r\n container.style.bottom = \"auto\";\r\n container.style.left = \"auto\";\r\n container.style.right = \"auto\";\r\n container.style.transform = \"none\";\r\n}\r\n\r\n/**\r\n * Parse position string into boolean flags\r\n * @param {string} position\r\n * @returns {Object} Position flags\r\n */\r\nfunction parsePosition(position) {\r\n const pos = position.toLowerCase().trim();\r\n return {\r\n hasTop: pos.includes(\"top\"),\r\n hasBottom: pos.includes(\"bottom\") || pos.includes(\"below\"),\r\n hasLeft: pos.includes(\"left\"),\r\n hasRight: pos.includes(\"right\"),\r\n hasCenter: pos.includes(\"center\"),\r\n hasFullWidth:\r\n pos.includes(\"top-full-width\") ||\r\n pos.includes(\"bottom-full-width\") ||\r\n pos.includes(\"fullwidth\"),\r\n };\r\n}\r\n\r\n/**\r\n * Handle full-width positioning cases\r\n * @param {HTMLElement} container\r\n * @param {Object} options\r\n * @param {Object} flags\r\n * @returns {boolean} True if position was handled\r\n */\r\nfunction handleFullWidthPositions(container, options, flags) {\r\n if (!flags.hasFullWidth) return false;\r\n\r\n options.maxWidth = \"100vw\";\r\n\r\n if (flags.hasTop) {\r\n container.style.top = \"10px\";\r\n container.style.left = \"10px\";\r\n container.style.right = \"10px\";\r\n return true;\r\n }\r\n\r\n if (flags.hasBottom) {\r\n container.style.bottom = \"10px\";\r\n container.style.left = \"10px\";\r\n container.style.right = \"10px\";\r\n return true;\r\n }\r\n\r\n return false;\r\n}\r\n\r\n/**\r\n * Handle center positioning cases\r\n * @param {HTMLElement} container\r\n * @param {Object} flags\r\n * @returns {boolean} True if position was handled\r\n */\r\nfunction handleCenterPositions(container, flags) {\r\n if (!flags.hasCenter) return false;\r\n\r\n // top-center\r\n if (flags.hasTop && !flags.hasLeft && !flags.hasRight) {\r\n container.style.top = \"10px\";\r\n container.style.left = \"50%\";\r\n container.style.transform = \"translateX(-50%)\";\r\n return true;\r\n }\r\n\r\n // bottom-center\r\n if (flags.hasBottom && !flags.hasLeft && !flags.hasRight) {\r\n container.style.bottom = \"10px\";\r\n container.style.left = \"50%\";\r\n container.style.transform = \"translateX(-50%)\";\r\n return true;\r\n }\r\n\r\n // left-center\r\n if (flags.hasLeft && !flags.hasTop && !flags.hasBottom) {\r\n container.style.left = \"10px\";\r\n container.style.top = \"50%\";\r\n container.style.transform = \"translateY(-50%)\";\r\n return true;\r\n }\r\n\r\n // right-center\r\n if (flags.hasRight && !flags.hasTop && !flags.hasBottom) {\r\n container.style.right = \"10px\";\r\n container.style.top = \"50%\";\r\n container.style.transform = \"translateY(-50%)\";\r\n return true;\r\n }\r\n\r\n // full center (no sides specified)\r\n if (!flags.hasLeft && !flags.hasRight && !flags.hasTop && !flags.hasBottom) {\r\n container.style.top = \"50%\";\r\n container.style.left = \"50%\";\r\n container.style.transform = \"translate(-50%, -50%)\";\r\n return true;\r\n }\r\n\r\n return false;\r\n}\r\n\r\n/**\r\n * Apply standard positioning (corners and edges)\r\n * @param {HTMLElement} container\r\n * @param {Object} flags\r\n */\r\nfunction applyStandardPositioning(container, flags) {\r\n // Set vertical position\r\n if (flags.hasBottom) {\r\n container.style.bottom = \"10px\";\r\n } else if (flags.hasTop) {\r\n container.style.top = \"10px\";\r\n }\r\n\r\n // Set horizontal position\r\n if (flags.hasRight) {\r\n container.style.right = \"10px\";\r\n } else if (flags.hasLeft) {\r\n container.style.left = \"10px\";\r\n } else {\r\n // Default: bottom-center\r\n container.style.bottom = \"10px\";\r\n container.style.left = \"50%\";\r\n container.style.transform = \"translateX(-50%)\";\r\n }\r\n}\r\n","// src/utils/PausableTimer.js\r\n\"use strict\";\r\n\r\nexport class PausableTimer {\r\n constructor(callback, delay) {\r\n this.callback = callback;\r\n this.delay = delay;\r\n this.remaining = delay;\r\n this.startTime = null;\r\n this.timeoutId = null;\r\n this.isPaused = false;\r\n this.isCompleted = false;\r\n }\r\n\r\n start() {\r\n if (this.isCompleted || this.timeoutId) return this;\r\n this.startTime = Date.now();\r\n this.timeoutId = setTimeout(() => {\r\n this.isCompleted = true;\r\n this.timeoutId = null;\r\n this.callback();\r\n }, this.remaining);\r\n return this;\r\n }\r\n\r\n pause() {\r\n if (this.isPaused || !this.timeoutId || this.isCompleted) return this;\r\n clearTimeout(this.timeoutId);\r\n this.timeoutId = null;\r\n this.remaining -= Date.now() - this.startTime;\r\n this.remaining = Math.max(0, this.remaining); // prevent negative\r\n this.isPaused = true;\r\n return this;\r\n }\r\n\r\n resume() {\r\n if (!this.isPaused || this.isCompleted) return this;\r\n this.isPaused = false;\r\n this.start();\r\n return this;\r\n }\r\n\r\n clear() {\r\n if (this.timeoutId) {\r\n clearTimeout(this.timeoutId);\r\n this.timeoutId = null;\r\n }\r\n this.isCompleted = true;\r\n return this;\r\n }\r\n\r\n getRemainingTime() {\r\n if (this.isCompleted) return 0;\r\n if (this.isPaused) return this.remaining;\r\n if (!this.timeoutId) return this.delay;\r\n return Math.max(0, this.remaining - (Date.now() - this.startTime));\r\n }\r\n}\r\n","// src/components/ToastManager.js\r\n\"use strict\";\r\n\r\nimport { createToastElement } from \"./Toast.js\";\r\nimport { removeElement } from \"../utils/dom.js\";\r\nimport { createEmergencyToast } from \"./toast-utils.js\";\r\nimport { getOrCreateToastContainer } from \"../utils/containerRegistry.js\";\r\nimport { setPosition } from \"../utils/position.js\";\r\nimport { PausableTimer } from \"../utils/PausableTimer.js\";\r\n\r\n// Config\r\nconst MAX_VISIBLE = 3;\r\n\r\n// State\r\nconst active = new Map(); // key -> { outer, toast, count, timeout }\r\nconst pending = new Map(); // key -> { options, count, rafId }\r\nconst queue = []; // [{ options, key, count }]\r\nlet visibleCount = 0;\r\n\r\n// djb2 hash function for message deduplication\r\nfunction hashString(str) {\r\n let h = 5381;\r\n for (let i = 0; i < str.length; i++) h = (h << 5) + h + str.charCodeAt(i);\r\n return h >>> 0;\r\n}\r\n\r\n/**\r\n * Creates a unique key for a toast notification based on its type, message, and position.\r\n * This key is used to identify and deduplicate identical toast notifications.\r\n * @param {Object} options - Toast options with type, message, and position.\r\n * @returns {string} A unique key for the toast notification.\r\n */\r\nfunction makeKey(options = {}) {\r\n const type = String(options.type).trim().toLowerCase();\r\n const messageHash = hashString(String(options.message || \"\")).toString(16);\r\n const position = String(options.position).trim().toLowerCase();\r\n\r\n return `${type}|${messageHash}|${position}`;\r\n}\r\n\r\n/**\r\n * Shows a toast notification with the given options.\r\n * If there is already an active toast with the same type, message, and position,\r\n * it will be grouped immediately and the count will be incremented.\r\n * If there is already a pending toast with the same type, message, and position,\r\n * it will be coalesced and the count will be incremented.\r\n * If there is no capacity left (i.e. the number of visible toasts is at the maximum),\r\n * the grouped request will be enqueued and processed later.\r\n * @param {Object} options - Toast options with type, message, and position.\r\n * @returns {Promise<void>} A promise that resolves when the toast is fully created and displayed.\r\n */\r\nexport async function showToast(options = {}) {\r\n try {\r\n const key = makeKey(options);\r\n\r\n // If already active: group immediately\r\n if (active.has(key)) {\r\n const data = active.get(key);\r\n if (!data) throw new Error(`Active toast with key ${key} not found`);\r\n data.count++;\r\n\r\n // Reset timer with new duration\r\n data.timer.clear();\r\n data.timer = createDismissTimer(data.toast, options);\r\n await setupPauseOnHover(data);\r\n await updateBadge(data);\r\n return;\r\n }\r\n\r\n // If coalescing is already scheduled for this key, just increment the pending count\r\n if (pending.has(key)) {\r\n const current = pending.get(key);\r\n if (!current) throw new Error(`Pending toast with key ${key} not found`);\r\n current.count++;\r\n return;\r\n }\r\n\r\n // Start coalescing identical calls in the same frame\r\n const entry = { options, count: 1, rafId: 0 };\r\n pending.set(key, entry);\r\n\r\n entry.rafId = requestAnimationFrame(async () => {\r\n // finalize batch for this key\r\n const current = pending.get(key);\r\n if (!current) return;\r\n pending.delete(key);\r\n\r\n // If capacity full, enqueue the grouped request\r\n if (visibleCount >= MAX_VISIBLE) {\r\n queue.push({ options: current.options, key, count: current.count });\r\n await drainQueue();\r\n return;\r\n }\r\n\r\n // Otherwise create immediately with the grouped count\r\n try {\r\n await createOne(current.options, key, current.count);\r\n } catch (error) {\r\n console.error(\"showToast failed:\", error);\r\n }\r\n });\r\n } catch (error) {\r\n console.error(\"showToast failed:\", error);\r\n }\r\n}\r\n\r\n/**\r\n * Creates a single toast notification with the given options and initial count.\r\n * Will create and mount the toast element, and setup a timer to auto-dismiss.\r\n * If the toast creation fails, it will fallback to an emergency toast.\r\n * @param {Object} options - Toast options with type, message, and position.\r\n * @param {string} key - Unique key for the toast.\r\n * @param {number} initialCount - Initial count for the toast.\r\n * @returns {Promise<void>} A promise that resolves when the toast is fully created and displayed.\r\n */\r\nasync function createOne(options, key, initialCount) {\r\n try {\r\n if (!options || typeof options !== \"object\") {\r\n throw new TypeError(\"options must be an object\");\r\n }\r\n\r\n visibleCount++;\r\n\r\n const container = await getOrCreateToastContainer(options, setPosition);\r\n if (!container) {\r\n throw new Error(\"Failed to create toast container\");\r\n }\r\n\r\n // Build the toast element\r\n const toast = await createToastElement(options, closeToast);\r\n if (!toast) {\r\n throw new Error(\"Toast element creation failed\");\r\n }\r\n\r\n // Outer wrapper (badge surface; visible overflow)\r\n const outer = document.createElement(\"div\");\r\n Object.assign(outer.style, {\r\n position: \"relative\",\r\n display: \"inline-block\",\r\n overflow: \"visible\",\r\n marginBottom: \"10px\",\r\n zIndex: \"0\",\r\n width: \"100%\",\r\n });\r\n\r\n // Inner wrapper (clip progress bar & rounded corners)\r\n const inner = document.createElement(\"div\");\r\n Object.assign(inner.style, {\r\n position: \"relative\",\r\n overflow: \"hidden\",\r\n // borderRadius: options.borderRadius || \"8px\",\r\n zIndex: \"1\",\r\n });\r\n\r\n inner.appendChild(toast);\r\n outer.appendChild(inner);\r\n\r\n // Mount\r\n if (container.id.includes(\"toast-container-\")) {\r\n container.appendChild(outer);\r\n }\r\n\r\n // Determine if should pause on hover (default: true if has CTA)\r\n const shouldPauseOnHover =\r\n options.pauseOnHover !== false &&\r\n (options.pauseOnHover === true || !!options.cta);\r\n\r\n // Track\r\n const data = {\r\n outer,\r\n toast,\r\n count: Math.max(1, Math.floor(initialCount ?? 0)),\r\n timeout: null,\r\n pauseOnHover: shouldPauseOnHover,\r\n };\r\n active.set(key, data);\r\n toast._key = key;\r\n\r\n if (data.count > 1) await updateBadge(data);\r\n\r\n // Create and start timer\r\n data.timer = createDismissTimer(toast, options);\r\n await setupPauseOnHover(data);\r\n } catch (err) {\r\n console.error(\"Something went wrong: \", err);\r\n visibleCount = Math.max(0, visibleCount - 1);\r\n const el =\r\n document.querySelector('[id^=\"toast-container-\"]') || document.body;\r\n el.appendChild(await createEmergencyToast(options, closeToast));\r\n }\r\n}\r\n\r\n/**\r\n * Creates a PausableTimer that auto-closes a toast after a delay.\r\n * @param {HTMLElement} toast - The toast element to auto-close.\r\n * @param {Object} options - Toast options with duration.\r\n * @returns {PausableTimer} A timer that can be paused, resumed, or cleared.\r\n */\r\nfunction createDismissTimer(toast, options) {\r\n const delay = Number(options.duration ?? 1800) + 5;\r\n const timer = new PausableTimer(async () => await closeToast(toast), delay);\r\n timer.start();\r\n return timer;\r\n}\r\n\r\nasync function setupPauseOnHover(data) {\r\n if (!data.pauseOnHover || !data.outer || !data.timer) return;\r\n\r\n const { outer, timer } = data;\r\n\r\n // Mouse events\r\n const onMouseEnter = () => timer.pause();\r\n const onMouseLeave = () => timer.resume();\r\n\r\n // Focus events (for keyboard users)\r\n // Only pause if focus is on interactive elements (CTA, close button)\r\n const onFocusIn = (e) => {\r\n if (e.target.matches(\"[tabindex], div, span, button, a\")) timer.pause();\r\n };\r\n\r\n // Only resume if focus is leaving the toast entirely\r\n const onFocusOut = (e) => {\r\n if (!outer.contains(e.relatedTarget)) timer.resume();\r\n };\r\n\r\n // Add event listeners\r\n outer.addEventListener(\"mouseenter\", onMouseEnter);\r\n outer.addEventListener(\"mouseleave\", onMouseLeave);\r\n outer.addEventListener(\"focusin\", onFocusIn);\r\n outer.addEventListener(\"focusout\", onFocusOut);\r\n\r\n // Store cleanup function\r\n outer._pauseCleanup = () => {\r\n outer.removeEventListener(\"mouseenter\", onMouseEnter);\r\n outer.removeEventListener(\"mouseleave\", onMouseLeave);\r\n outer.removeEventListener(\"focusin\", onFocusIn);\r\n outer.removeEventListener(\"focusout\", onFocusOut);\r\n };\r\n}\r\n\r\n/**\r\n * Closes a toast notification immediately.\r\n * If the toast is not found in the active toasts map, this function does nothing.\r\n * @param {HTMLElement|null} toast - The toast element to close.\r\n * @returns {Promise<void>} A promise that resolves when the toast is fully removed from the DOM.\r\n */\r\nexport async function closeToast(toast) {\r\n debugger;\r\n try {\r\n if (!toast?._key) return;\r\n const data = active.get(toast._key);\r\n if (!data) return;\r\n\r\n // Clear timer and cleanup pause events\r\n data.timer?.clear();\r\n data.outer?._pauseCleanup?.();\r\n\r\n active.delete(toast._key);\r\n visibleCount = Math.max(0, visibleCount - 1);\r\n\r\n // Remove badge if present\r\n const badge = data.outer.querySelector(\".toast-count-badge\");\r\n if (badge) badge.remove();\r\n\r\n // Remove wrapper after transition ends (or fallback)\r\n await removeWithTransition(data.outer);\r\n\r\n // Drain queue after a slot frees\r\n await drainQueue();\r\n } catch (error) {\r\n console.error(\"Closing Toast failed!: \", error);\r\n }\r\n}\r\n\r\nasync function drainQueue() {\r\n // Fill available slots; coalesce queued entries against active if they became active meanwhile\r\n while (visibleCount < MAX_VISIBLE && queue.length) {\r\n const item = queue.shift();\r\n if (active.has(item.key)) {\r\n const data = active.get(item.key);\r\n data.count += item.count;\r\n await updateBadge(data);\r\n continue;\r\n }\r\n // Create without awaiting to keep loop responsive; visibleCount is incremented inside createOne\r\n void createOne(item.options, item.key, item.count);\r\n }\r\n}\r\n\r\n/**\r\n * Safely remove an element after its transition ends, with a hard timeout fallback\r\n * @param {Element} el - The element to remove\r\n * @returns {Promise<void>} A promise that resolves after the element is removed\r\n */\r\nasync function removeWithTransition(el) {\r\n if (!el) return Promise.resolve();\r\n\r\n return new Promise((resolve) => {\r\n let done = false;\r\n const finish = () => {\r\n if (done) return;\r\n done = true;\r\n removeElement(el);\r\n resolve();\r\n };\r\n\r\n // Listen on the immediate child (inner wrapper) if possible\r\n const child = el.firstElementChild || el;\r\n if (!child) return resolve();\r\n\r\n const onEnd = (e) => {\r\n try {\r\n // Check if the event target is the same element we're listening on\r\n if (e.target !== child) return;\r\n // Remove the event listener to prevent multiple triggers\r\n child.removeEventListener(\"transitionend\", onEnd, true);\r\n finish();\r\n } catch (error) {\r\n console.error(\"removeWithTransition error:\", error);\r\n }\r\n };\r\n\r\n // Add the event listener to the child element\r\n try {\r\n child.addEventListener(\"transitionend\", onEnd, true);\r\n } catch (error) {\r\n console.error(\"removeWithTransition error:\", error);\r\n }\r\n\r\n // Hard fallback if no transition fires after 700ms\r\n setTimeout(() => {\r\n try {\r\n // Remove the event listener to prevent multiple triggers\r\n child.removeEventListener(\"transitionend\", onEnd, true);\r\n finish();\r\n } catch (error) {\r\n console.error(\"removeWithTransition error:\", error);\r\n }\r\n }, 700);\r\n });\r\n}\r\n\r\n/**\r\n * Updates the badge count on the outer toast wrapper.\r\n * @param {Object} options Options object containing the outer toast wrapper and the count.\r\n * @param {HTMLElement} options.outer The outer toast wrapper element.\r\n * @param {number} options.count The count of identical notifications.\r\n */\r\nasync function updateBadge({ outer, count }) {\r\n if (!outer || !(outer instanceof HTMLElement)) {\r\n throw new Error(\"updateBadge: outer must be a valid HTMLElement\");\r\n }\r\n\r\n if (count < 2) {\r\n // Remove the badge if the count is less than 2\r\n const badge = outer.querySelector(\".toast-count-badge\");\r\n if (badge) badge.remove();\r\n return;\r\n }\r\n\r\n let badge = outer.querySelector(\".toast-count-badge\");\r\n if (!badge) {\r\n // Create the badge if it doesn't exist\r\n badge = document.createElement(\"span\");\r\n badge.className = \"toast-count-badge\";\r\n badge.setAttribute(\"aria-label\", `${count} identical notifications`);\r\n\r\n // Style the badge\r\n Object.assign(badge.style, {\r\n position: \"absolute\",\r\n top: \"6px\",\r\n right: \"6px\",\r\n backgroundColor: \"#f44336\",\r\n color: \"#fff\",\r\n borderRadius: \"50%\",\r\n minWidth: \"20px\",\r\n height: \"20px\",\r\n fontSize: \"12px\",\r\n fontWeight: \"600\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n border: \"2px solid #fff\",\r\n boxShadow: \"0 2px 6px rgba(0,0,0,0.3)\",\r\n zIndex: \"2\",\r\n pointerEvents: \"none\",\r\n transition: \"transform 150ms ease\",\r\n });\r\n\r\n // Add the badge to the outer toast wrapper\r\n outer.appendChild(badge);\r\n }\r\n\r\n // Update the badge text content\r\n badge.textContent = count > 99 ? \"99+\" : String(count);\r\n\r\n // Animate the badge by scaling it up and then back down\r\n try {\r\n badge.style.transform = \"scale(1.2)\";\r\n setTimeout(() => (badge.style.transform = \"scale(1)\"), 150);\r\n } catch (error) {\r\n console.error(\"updateBadge animation error:\", error);\r\n }\r\n}\r\n","// src/index.js\r\n\"use strict\";\r\n\r\nimport { closeToast, showToast } from \"./components/ToastManager.js\";\r\nimport { getOrCreateToastContainer } from \"./utils/containerRegistry.js\";\r\nimport { getDynamicAccessibleTextColorHex } from \"./utils/dom.js\";\r\nimport { setPosition } from \"./utils/position.js\";\r\n\r\n// Protected default colors with fallbacks\r\nlet defaultColors = {\r\n success: \"#28a745\",\r\n error: \"#dc3545\",\r\n warning: \"#ffc107\",\r\n info: \"#17a2b8\",\r\n};\r\n\r\nlet defaultMessages = {\r\n success: \"Operation completed successfully!\",\r\n error: \"Something went wrong!\",\r\n warning: \"Warning message!\",\r\n info: \"Information message!\",\r\n};\r\n\r\n/**\r\n * Create toast with satellite-grade reliability\r\n */\r\n// Toast queue for calls before DOM ready\r\nconst pendingToasts = [];\r\n\r\n// Flag to indicate DOM ready for toast execution\r\nlet domReady = false;\r\n\r\n/**\r\n * Checks if DOM is ready and flushes pending toasts after a delay\r\n */\r\nasync function checkDOMReady() {\r\n if (domReady) return;\r\n\r\n if (typeof window !== \"undefined\" && typeof document !== \"undefined\") {\r\n if (\r\n document.readyState === \"complete\" ||\r\n document.readyState === \"interactive\"\r\n ) {\r\n domReady = true;\r\n // Flush queued toasts after 2.5s delay\r\n pendingToasts.forEach((options) =>\r\n setTimeout(() => createToastNow(options), 2500)\r\n );\r\n pendingToasts.length = 0;\r\n } else {\r\n // Wait for DOMContentLoaded\r\n document.addEventListener(\r\n \"DOMContentLoaded\",\r\n () => {\r\n domReady = true;\r\n pendingToasts.forEach((options) =>\r\n setTimeout(() => createToastNow(options), 2500)\r\n );\r\n pendingToasts.length = 0;\r\n },\r\n { once: true }\r\n );\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Core toast creation logic\r\n * @param {Object} options - Toast options\r\n * @returns {Promise<void>} Toast creation promise\r\n */\r\nasync function createToastNow(options = {}) {\r\n try {\r\n /**\r\n * Sanitize toast options and fill in defaults\r\n * @param {Object} options - Toast options\r\n * @returns {Promise<Object>} Sanitized toast options promise\r\n */\r\n const sanitizedOptions = await sanitizeToastOptions(options);\r\n\r\n /**\r\n * Create the first toast container for pre-validate to a given position for same position toast stacking\r\n * @param {Object} options - Sanitized toast options\r\n * @returns {Promise<HTMLElement>} Toast container promise\r\n */\r\n await createFirstToastContainer(sanitizedOptions);\r\n\r\n /**\r\n * Show the toast notification with given options\r\n * @param {Object} options - Sanitized toast options\r\n * @returns {Promise<void>} Show toast promise\r\n */\r\n await showToast(sanitizedOptions);\r\n } catch (error) {\r\n console.error(\"CreateToast failed:\", error);\r\n\r\n const safeMessage =\r\n typeof options?.message === \"string\" && options?.message !== null\r\n ? `${options.message.substring(0, 200)} toast creation failed!`\r\n : \"Toast creation failed!\";\r\n\r\n alert(safeMessage);\r\n }\r\n}\r\n\r\n/**\r\n * Public API for creating a toast\r\n * @param {Object} options Toast options\r\n */\r\nasync function createToast(options = {}) {\r\n // Check browser environment\r\n const isBrowser =\r\n typeof window !== \"undefined\" && typeof document !== \"undefined\";\r\n\r\n if (!isBrowser) {\r\n console.warn(\r\n \"ToastNotification: running in non-browser environment, no DOM available.\"\r\n );\r\n return;\r\n }\r\n\r\n // Check if DOM ready\r\n await checkDOMReady();\r\n\r\n if (!domReady) {\r\n // Queue for later execution\r\n pendingToasts.push(options);\r\n return;\r\n }\r\n\r\n await createToastNow(options);\r\n}\r\n\r\n/**\r\n * Creates or retrieves the toast container for a given position\r\n * Single source of truth for containers; prevents same-id duplicates\r\n * @param {Object} options\r\n * @returns {Promise<HTMLElement>}\r\n */\r\nasync function createFirstToastContainer(options) {\r\n try {\r\n return await getOrCreateToastContainer(options, setPosition);\r\n } catch (error) {\r\n console.error(\"Failed to create toast container:\", error);\r\n return document.body;\r\n }\r\n}\r\n\r\n/**\r\n * Sanitizes and normalizes toast options.\r\n * Fills in defaults, validates input, and ensures colors & messages are set.\r\n * @param {Object} options - User-provided toast options\r\n * @returns {Promise<Object>} final sanitized toast options\r\n */\r\nasync function sanitizeToastOptions(options) {\r\n const contPosition = options?.position?.toLowerCase()?.trim();\r\n const contMaxWidth =\r\n contPosition?.includes(\"top-full-width\") ||\r\n contPosition?.includes(\"bottom-full-width\")\r\n ? \"100vw\"\r\n : \"400px\";\r\n\r\n const defaults = {\r\n pauseOnHover: undefined,\r\n duration: 2500,\r\n position: \"bottom-right\",\r\n type: \"info\",\r\n borderRadius: \"50px\",\r\n backgroundColor: undefined,\r\n textColor: undefined,\r\n showCloseButton: true,\r\n animationDuration: \"0.4s\",\r\n animationType: \"fade\",\r\n animationEasing: \"ease\",\r\n showProgressBar: true,\r\n progressColor: undefined,\r\n progressHeight: \"4px\",\r\n progressPosition: \"bottom\",\r\n fontPosition: \"relative\",\r\n fontPadding: undefined,\r\n fontBorderRadius: undefined,\r\n fontBackgroundColor: undefined,\r\n fontFamily:\r\n '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"',\r\n fontSize: \"14px\",\r\n fontWeight: \"400\",\r\n fontLineHeight: \"1.4\",\r\n fontDirection: \"auto\",\r\n wrapText: \"normal\",\r\n maxWidth: contMaxWidth,\r\n };\r\n\r\n // Merge defaults with user options\r\n const final = {\r\n ...defaults,\r\n ...(typeof options === \"object\" && !Array.isArray(options) ? options : {}),\r\n };\r\n\r\n // Ensure message property separately\r\n final.message = options?.message ?? final.message;\r\n\r\n try {\r\n // Background color fallback based on type or system preference\r\n if (!final.backgroundColor) {\r\n final.backgroundColor =\r\n defaultColors?.[final.type] ??\r\n (window.matchMedia(\"(prefers-color-scheme: dark)\").matches\r\n ? \"#f5f5f5\"\r\n : \"#111111\");\r\n }\r\n\r\n // Default message if not provided\r\n final.message =\r\n final.message || defaultMessages?.[final.type] || \"No Message Provided!\";\r\n\r\n // Ensure textColor is set\r\n if (!final.textColor && final.backgroundColor) {\r\n const textColorResult = getDynamicAccessibleTextColorHex(\r\n final.backgroundColor\r\n );\r\n final.textColor = textColorResult;\r\n }\r\n\r\n // Ensure progressColor is set\r\n if (!final.progressColor && final.backgroundColor) {\r\n if (final.textColor) {\r\n final.progressColor = final.textColor;\r\n } else {\r\n const barColorResult = getDynamicAccessibleTextColorHex(\r\n final.backgroundColor\r\n );\r\n final.progressColor = barColorResult;\r\n }\r\n }\r\n } catch (error) {\r\n console.warn(\"Option processing failed:\", error);\r\n }\r\n\r\n // Safety check for message type\r\n if (typeof final.message !== \"string\") {\r\n final.message = \"No Message Provided!\";\r\n }\r\n\r\n return final;\r\n}\r\n\r\n/**\r\n * Sets default colors\r\n * @param {Object} colors\r\n */\r\nfunction setDefaultColors(colors) {\r\n try {\r\n if (colors && typeof colors === \"object\" && !Array.isArray(colors)) {\r\n defaultColors = { ...defaultColors, ...colors };\r\n }\r\n } catch (error) {\r\n console.error(\"setDefaultColors failed:\", error);\r\n }\r\n}\r\n\r\n/**\r\n * Sets default messages\r\n * @param {Object} messages\r\n */\r\nfunction setDefaultMessages(messages) {\r\n try {\r\n if (messages && typeof messages === \"object\" && !Array.isArray(messages)) {\r\n defaultMessages = { ...defaultMessages, ...messages };\r\n }\r\n } catch (error) {\r\n console.error(\"setDefaultMessages failed:\", error);\r\n }\r\n}\r\n\r\n/**\r\n * Removes the first visible toast from the DOM.\r\n * Remove toast notifications from the DOM.\r\n *\r\n * @async\r\n * @function noop\r\n * @param {\"all\"} [mode] - If `\"all\"`, removes all matching toast elements.\r\n * Otherwise, removes only the first matching toast.\r\n * @returns {Promise<void>} Resolves when removal is attempted.\r\n */\r\nconst noop = async function () {\r\n const toast = document.querySelector('[id^=\"toast-\"]:not([id*=\"container\"])');\r\n await closeToast(toast);\r\n};\r\n\r\n// Module exports\r\nexport { createToast, setDefaultColors, setDefaultMessages, noop };\r\n\r\n// Global assignment with protection\r\ntry {\r\n // UMD/Global support\r\n if (typeof window !== \"undefined\") {\r\n window.customizableToast = {\r\n createToast,\r\n setDefaultColors,\r\n setDefaultMessages,\r\n noop,\r\n };\r\n }\r\n} catch (error) {\r\n console.error(\"Global assignment failed:\", error);\r\n}\r\n"],"names":["generateToastId","prefix","timestamp","Date","now","toString","random","Math","floor","concat","createElementWithId","_x","_x2","_createElementWithId","apply","this","arguments","_asyncToGenerator","_regenerator","m","_callee","tagName","el","w","_context","n","Error","document","createElement","id","a","removeElement","_x5","_removeElement","_callee3","_el$parentNode","_context3","p","parentNode","includes","removeChild","v","remove","Object","assign","style","display","opacity","pointerEvents","position","left","parseAnimationDuration","_x6","_parseAnimationDuration","_callee4","duration","_parsed","parsed","_context4","endsWith","parseFloat","colorCache","constructor","maxSize","length","undefined","map","Map","get","key","has","value","delete","set","size","firstKey","keys","next","precomputedNamedTextColors","getDynamicAccessibleTextColorHex","toastBg","opa","r","g","b","cached","toLowerCase","textColor","hexMatch","match","hex","split","c","join","parseInt","slice","rgbMatch","Number","_unused","round","luminance","pow","contrastRatio","rgb1","rgb2","L1","L2","max","min","_rgbToHsl","rgbToHsl","h","s","l","d","_rgbToHsl2","_slicedToArray","_hslToRgb","hslToRgb","hue2rgb","q","t","_hslToRgb2","tr","tg","tb","_ref4","result","rgbToHex","padStart","createCTA","toast","options","onClose","cfg","cta","label","isLink","href","variant","target","rel","type","setAttribute","ariaLabel","marginLeft","padding","borderRadius","fontSize","fontWeight","lineHeight","border","color","background","cursor","whiteSpace","flexShrink","textContent","onClick","_ref","e","res","then","autoClose","f","addEventListener","_cleanup","removeEventListener","appendChild","createCloseButton","closeBtn","_cleanupCloseButton","createProgressBar","progressBar","borderRadiusStr","borderRadiusNum","finalWidth","leftVal","height","progressHeight","progressColor","width","transition","progressPosition","setTimeout","offsetWidth","runToastAnimation","requestAnimationFrame","transform","applyRichStyling","_x3","_applyRichStyling","_options$type","durationMs","messageSpan","animationDuration","className","backgroundColor","marginBottom","overflow","alignItems","justifyContent","boxShadow","minWidth","maxWidth","boxSizing","userSelect","animationEasing","zIndex","tabIndex","_animationDuration","wrapText","WebkitBoxOrient","WebkitLineClamp","flex","fontPadding","fontFamily","fontLineHeight","wordBreak","textOverflow","message","showCloseButton","showProgressBar","createEmergencyToast","_x4","_createEmergencyToast","_callee2","emergency","closeSpan","_context2","top","right","wordWrap","float","onclick","body","alert","createToastElement","_createToastElement","querySelector","entries","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","forEach","_ref2","name","_ref2$","lum","L","contrastBlack","contrastWhite","containerRegistry","containerLocks","getContainerId","String","trim","replace","normalizePositionKey","getOrCreateToastContainer","_getOrCreateToastContainer","setPosition","out","all","i","isConnected","getElementById","inset","flexDirection","querySelectorAll","_setPosition","container","positionFlags","resetContainerStyles","parsePosition","handleFullWidthPositions","handleCenterPositions","applyStandardPositioning","bottom","pos","hasTop","hasBottom","hasLeft","hasRight","hasCenter","hasFullWidth","flags","PausableTimer","callback","delay","remaining","startTime","timeoutId","isPaused","isCompleted","start","pause","clearTimeout","resume","clear","getRemainingTime","active","pending","queue","visibleCount","makeKey","messageHash","str","charCodeAt","hashString","showToast","_showToast","data","current","entry","_args3","count","timer","createDismissTimer","setupPauseOnHover","updateBadge","rafId","push","drainQueue","createOne","_createOne","initialCount","outer","inner","shouldPauseOnHover","_t4","TypeError","closeToast","pauseOnHover","timeout","_key","call","_options$duration","_setupPauseOnHover","_callee5","onMouseEnter","onMouseLeave","onFocusIn","onFocusOut","_context5","matches","contains","relatedTarget","_pauseCleanup","_closeToast","_callee6","_data$timer","_data$outer","_data$outer$_pauseCle","badge","_context6","removeWithTransition","_drainQueue","_callee7","item","_context7","shift","_removeWithTransition","_callee8","_context8","Promise","resolve","done","finish","child","firstElementChild","onEnd","error","_x7","_updateBadge","_callee9","_badge","_context9","HTMLElement","defaultColors","success","warning","info","defaultMessages","pendingToasts","domReady","checkDOMReady","_checkDOMReady","window","readyState","createToastNow","once","_createToastNow","sanitizedOptions","safeMessage","sanitizeToastOptions","createFirstToastContainer","substring","createToast","_createToast","_args4","_createFirstToastContainer","_sanitizeToastOptions","_options$position","_options$message","contPosition","contMaxWidth","final","_defaultMessages","_defaultColors$final$","_defaultColors","textColorResult","barColorResult","_objectSpread","animationType","fontPosition","fontBorderRadius","fontBackgroundColor","fontDirection","Array","isArray","matchMedia","setDefaultColors","colors","setDefaultMessages","messages","noop","customizableToast"],"mappings":"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"}
|