customizable-toast-notification 3.11.5 → 3.12.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/CHANGELOG.md +7 -0
- package/README.md +106 -12
- package/dist/index.cjs +3 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +36 -106
- package/dist/index.esm.mjs +3 -3
- package/dist/index.esm.mjs.map +1 -1
- package/dist/index.umd.js +4 -4
- package/dist/index.umd.js.map +1 -1
- package/package.json +7 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
# [3.12.0](https://github.com/sammy-cool/customizable-toast-notification/compare/v3.11.5...v3.12.0) (2026-08-31)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Features
|
|
5
|
+
|
|
6
|
+
* add toastPromise() and targeted per-toast dismissal handles ([2acd46a](https://github.com/sammy-cool/customizable-toast-notification/commit/2acd46a7b004ff68e078f5a08b4be1cc1d4e3ce7))
|
|
7
|
+
|
|
1
8
|
## [3.11.5](https://github.com/sammy-cool/customizable-toast-notification/compare/v3.11.4...v3.11.5) (2026-08-23)
|
|
2
9
|
|
|
3
10
|
|
package/README.md
CHANGED
|
@@ -5,23 +5,26 @@
|
|
|
5
5
|
[](https://opensource.org/licenses/Apache-2.0)
|
|
6
6
|
[](https://bundlephobia.com/package/customizable-toast-notification)
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
**[▶ Try the live demo](https://sammy-cool.github.io/customizable-toast-notification/)** — click a button, watch a real toast fire, sanitized HTML included.
|
|
9
|
+
|
|
10
|
+
Toast notifications that work the same everywhere — plain JavaScript, Vue, Svelte, Angular, or a plain multi-page app — not just React. Built with sanitized-by-default HTML rendering, zero runtime dependencies, and 129 real cross-browser end-to-end tests.
|
|
9
11
|
|
|
10
12
|
## ✨ Key Features
|
|
11
13
|
|
|
12
|
-
-
|
|
13
|
-
- 🛡️ **
|
|
14
|
+
- 🌐 **Actually Framework Agnostic** - Not a React library with "vanilla JS support" bolted on — the same API works identically in React, Vue, Angular, Svelte, htmx, or plain HTML with no build step at all
|
|
15
|
+
- 🛡️ **Sanitized by Default** - `allowHtml` content is sanitized before render (DOMPurify if it's on the page, a verified-equivalent fallback if not) — safe to use with content you don't fully control
|
|
16
|
+
- ✅ **Rigorously Tested** - 129 real Playwright end-to-end tests across Chromium, Firefox, and WebKit, plus a fast unit suite — not just "it worked on my machine"
|
|
17
|
+
- 🚫 **Zero Runtime Dependencies** - Nothing pulled in when your users load your app
|
|
18
|
+
- 🔧 **Real TypeScript Types** - Full type definitions with real autocomplete and type-checking, not a placeholder `any`
|
|
14
19
|
- 🎨 **Highly Customizable** - Colors, positions, animations, progress bars, and styling
|
|
15
|
-
-
|
|
16
|
-
-
|
|
17
|
-
-
|
|
18
|
-
-
|
|
19
|
-
-
|
|
20
|
-
- ⏸️ **Pause on Hover** - CTA toasts pause when user hovers or focuses
|
|
21
|
-
- 🎯 **Call-to-Action** - Built-in support for interactive buttons and links
|
|
20
|
+
- ♿ **Accessible** - ARIA live regions, keyboard navigation, and WCAG-contrast text color computed automatically
|
|
21
|
+
- 🔄 **Smart Grouping** - Duplicate notifications are automatically grouped with a count badge instead of stacking
|
|
22
|
+
- ⏸️ **Pause on Hover** - CTA toasts pause on hover or keyboard focus
|
|
23
|
+
- 🎯 **Call-to-Action** - Built-in button or link CTA, with optional async `onClick`
|
|
24
|
+
- ⏳ **Promise-based Toasts** - `toastPromise()` shows loading → success/error automatically, transparently passing through the original resolved value or error
|
|
22
25
|
- 📊 **Queue Management** - Maximum 3 visible toasts with intelligent queueing
|
|
23
26
|
- 🌈 **Multiple Themes** - Success, error, warning, and info styles
|
|
24
|
-
-
|
|
27
|
+
- ⚡ **CDN Ready** - One `<script>` tag, no build step, no npm required
|
|
25
28
|
|
|
26
29
|
## 📦 Installation
|
|
27
30
|
|
|
@@ -92,7 +95,19 @@ Global Variable Name: `customizableToast`
|
|
|
92
95
|
|
|
93
96
|
### `createToast(options)`
|
|
94
97
|
|
|
95
|
-
Creates and displays a toast notification.
|
|
98
|
+
Creates and displays a toast notification. Returns a handle for
|
|
99
|
+
dismissing _that specific toast_ later — useful when other toasts might
|
|
100
|
+
be created in between:
|
|
101
|
+
|
|
102
|
+
```js
|
|
103
|
+
const handle = await createToast({ message: "Uploading...", duration: 60000 });
|
|
104
|
+
|
|
105
|
+
// later, regardless of what else has happened on screen since:
|
|
106
|
+
await handle.dismiss();
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
`handle.dismiss()` is always safe to call, even if the toast already
|
|
110
|
+
auto-dismissed on its own — it no-ops rather than throwing.
|
|
96
111
|
|
|
97
112
|
#### Options
|
|
98
113
|
|
|
@@ -218,6 +233,85 @@ setDefaultMessages({
|
|
|
218
233
|
});
|
|
219
234
|
```
|
|
220
235
|
|
|
236
|
+
## ⏳ Promise-based Toasts
|
|
237
|
+
|
|
238
|
+
Show a loading toast that automatically swaps to success or error once an
|
|
239
|
+
async operation settles — no manual dismiss/create juggling required:
|
|
240
|
+
|
|
241
|
+
```js
|
|
242
|
+
import { toastPromise } from "customizable-toast-notification";
|
|
243
|
+
|
|
244
|
+
await toastPromise(
|
|
245
|
+
saveUserData(), // any Promise
|
|
246
|
+
{
|
|
247
|
+
loading: "Saving...",
|
|
248
|
+
success: "Saved successfully!",
|
|
249
|
+
error: "Failed to save.",
|
|
250
|
+
},
|
|
251
|
+
);
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
Messages can also be functions, receiving the resolved value or the caught
|
|
255
|
+
error:
|
|
256
|
+
|
|
257
|
+
```js
|
|
258
|
+
await toastPromise(
|
|
259
|
+
fetch("/api/user").then((r) => r.json()),
|
|
260
|
+
{
|
|
261
|
+
loading: "Loading profile...",
|
|
262
|
+
success: (user) => `Welcome back, ${user.name}!`,
|
|
263
|
+
error: (err) => `Couldn't load profile: ${err.message}`,
|
|
264
|
+
},
|
|
265
|
+
);
|
|
266
|
+
|
|
267
|
+
// A function that returns a promise works too — called immediately
|
|
268
|
+
await toastPromise(() => fetch("/api/save", { method: "POST" }), {
|
|
269
|
+
loading: "Saving...",
|
|
270
|
+
success: "Saved!",
|
|
271
|
+
error: "Save failed.",
|
|
272
|
+
});
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
`toastPromise` resolves or rejects with whatever the original promise did —
|
|
276
|
+
it's a thin UI layer on top of a promise you're already awaiting, not a
|
|
277
|
+
replacement for your own error handling:
|
|
278
|
+
|
|
279
|
+
```js
|
|
280
|
+
try {
|
|
281
|
+
const result = await toastPromise(riskyOperation(), {
|
|
282
|
+
/* ... */
|
|
283
|
+
});
|
|
284
|
+
// result is the real resolved value
|
|
285
|
+
} catch (err) {
|
|
286
|
+
// err is the real original error — toastPromise re-throws it
|
|
287
|
+
}
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
A third argument accepts any normal toast options (position, colors, etc.),
|
|
291
|
+
applied to all three phases:
|
|
292
|
+
|
|
293
|
+
```js
|
|
294
|
+
await toastPromise(
|
|
295
|
+
syncData(),
|
|
296
|
+
{ loading: "Syncing...", success: "Synced!", error: "Sync failed." },
|
|
297
|
+
{ position: "top-center" },
|
|
298
|
+
);
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
### `toastPromise` reference
|
|
302
|
+
|
|
303
|
+
| Parameter | Type | Description |
|
|
304
|
+
| ------------------ | ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
|
|
305
|
+
| `promiseOrFn` | `Promise \| () => Promise` | The operation to track. A function is called immediately. |
|
|
306
|
+
| `messages.loading` | `string` | Default: `"Loading..."` |
|
|
307
|
+
| `messages.success` | `string \| (value) => string` | Default: `"Done!"` |
|
|
308
|
+
| `messages.error` | `string \| (error) => string` | Default: `"Something went wrong."` |
|
|
309
|
+
| `options` | `ToastOptions` | Applied to the loading, success, and error toasts. `type` and `message` are controlled by this function and can't be overridden here. |
|
|
310
|
+
|
|
311
|
+
The loading toast doesn't use `duration` from `options` — it stays until
|
|
312
|
+
the promise settles, then is replaced by a success or error toast that
|
|
313
|
+
does respect the normal duration/auto-dismiss behavior.
|
|
314
|
+
|
|
221
315
|
## 💡 Examples
|
|
222
316
|
|
|
223
317
|
### Basic Toast Types
|
package/dist/index.cjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* Customizable Toast Notifications
|
|
3
|
-
* Build: 2026-08-
|
|
4
|
-
* Cache-Buster:
|
|
3
|
+
* Build: 2026-08-31 06:37:33
|
|
4
|
+
* Cache-Buster: 1788158253006
|
|
5
5
|
* Author: Priyanshu Patel
|
|
6
6
|
* Email: priyanshu.alt191@gmail.com
|
|
7
7
|
* License: Apache-2.0
|
|
@@ -12,5 +12,5 @@
|
|
|
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
|
-
"use strict";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(t=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,o=1){if(!t)return"snow";const r=`${t}|${o}`,i=e.get(r);if(i)return i;if(n[null==t?void 0:t.toLowerCase()]){const o=n[t.toLowerCase()];return e.set(r,o),o}let a,s,l;try{const e=function(t){const e=null==t?void 0:t.match(/^#([0-9a-f]{3,8})$/i);if(e){let t=e[1];return 3===t.length&&(t=t.split("").map(t=>t+t).join("")),{r:parseInt(t.slice(0,2),16),g:parseInt(t.slice(2,4),16),b:parseInt(t.slice(4,6),16)}}const n=null==t?void 0:t.match(/rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*[\d.]+)?\)/i);if(n)return{r:Number(n[1]),g:Number(n[2]),b:Number(n[3])};const o=null==t?void 0:t.match(/hsla?\(\s*([\d.]+)(?:deg)?\s*,\s*([\d.]+)%\s*,\s*([\d.]+)%(?:\s*,\s*[\d.]+)?\)/i);if(o){const t=Number(o[1])/360,e=Number(o[2])/100,n=Number(o[3])/100;if(0===e){const t=Math.round(255*n);return{r:t,g:t,b:t}}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),i=n<.5?n*(1+e):n+e-n*e,a=2*n-i;return{r:Math.round(255*r(a,i,t+1/3)),g:Math.round(255*r(a,i,t)),b:Math.round(255*r(a,i,t-1/3))}}return null}(function(t){var e;const n=null==t?void 0:t.match(/^var\((--[\w-]+)(?:\s*,\s*(.+))?\)$/i);if(!n)return t;try{if("undefined"!=typeof document&&"function"==typeof getComputedStyle){const t=getComputedStyle(document.documentElement).getPropertyValue(n[1]).trim();if(t)return t}}catch(t){}return(null===(e=n[2])||void 0===e?void 0:e.trim())||t}(t));if(!e)throw new Error("Unknown color");({r:a,g:s,b:l}=e)}catch{a=s=l=128}a=Math.round(a*o+255*(1-o)),s=Math.round(s*o+255*(1-o)),l=Math.round(l*o+255*(1-o));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,m,f]=((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 p=f<.5?Math.min(f+.5,1):Math.max(f-.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,m,p);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)=>`#${t.toString(16).padStart(2,"0")}${e.toString(16).padStart(2,"0")}${n.toString(16).padStart(2,"0")}`)(h,y,g);return e.set(r,b),b}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,[e,o,r]])=>{const i=t=>{const e=t/255;return e<=.03928?e/12.92:Math.pow((e+.055)/1.055,2.4)},a=.2126*i(e)+.7152*i(o)+.0722*i(r),s=(a+.05)/.05,l=1.05/(a+.05);n[t.toLowerCase()]=s>=l?"#000000":"#ffffff"});const r=new Set(["DIV","SPAN","P","BR","STRONG","B","EM","I","U","SMALL","UL","OL","LI","A","IMG","PRE","CODE","MARK"]),i=new Set(["href","src","alt","title","class","target","rel"]);function a(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");function o(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(!r.has(e)){const e=document.createDocumentFragment();return Array.from(t.childNodes).forEach(t=>{const n=o(t);n&&e.appendChild(n)}),e}const n=document.createElement(t.tagName);return Array.from(t.attributes||[]).forEach(e=>{const o=e.name.toLowerCase(),r=e.value;i.has(o)&&("href"!==o&&"src"!==o||!/^\s*javascript:/i.test(r))&&("src"!==o||/^\s*(https?:|data:image\/)/i.test(r))&&("target"===o&&"_blank"===r&&n.setAttribute("rel",(t.getAttribute("rel")||"")+" noopener noreferrer"),n.setAttribute(o,r))}),Array.from(t.childNodes).forEach(t=>{const e=o(t);e&&n.appendChild(e)}),n}n.innerHTML=e;const a=document.createDocumentFragment();Array.from(n.childNodes).forEach(t=>{const e=o(t);e&&a.appendChild(e)});const s=document.createElement("div");return s.appendChild(a),s.innerHTML}function s(t,e={}){if(!t)return"";try{if(!e.forceFallback&&function(){try{if("undefined"!=typeof window&&window.DOMPurify)return!0}catch(t){}return!1}()){const e=window.DOMPurify.sanitize(t,{ALLOWED_TAGS:Array.from(r),ALLOWED_ATTR:Array.from(i),ALLOWED_URI_REGEXP:/^(?:(?:https?|mailto|ftp|tel|data):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i}),n=document.createElement("div");return n.innerHTML=e,n.querySelectorAll('a[target="_blank"]').forEach(t=>{const e=(t.getAttribute("rel")||"").split(/\s+/).filter(Boolean);e.includes("noopener")||e.push("noopener"),e.includes("noreferrer")||e.push("noreferrer"),t.setAttribute("rel",e.join(" "))}),n.innerHTML}}catch(t){}return a(t)}async function l(t,e,n){const o=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==e?void 0:e.type)??"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=o;const r=document.createElement("span");null!=e&&e.wrapText?Object.assign(r.style,{display:"block",whiteSpace:"normal"}):Object.assign(r.style,{display:"-webkit-box",WebkitBoxOrient:"vertical",WebkitLineClamp:"3",whiteSpace:"nowrap"}),Object.assign(r.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"});const i=!!e.allowHtml,a=e.message??"";if(e.loader||e.showLoader){const t=function(t={}){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||{});r.appendChild(t);const n=document.createElement("span");n.style.display="inline-block",n.style.width="8px",r.appendChild(n)}if(i&&"string"==typeof a&&a.trim().length>0)try{const t=s(a),e=document.createElement("div");for(e.innerHTML=t;e.firstChild;)r.appendChild(e.firstChild)}catch(t){console.warn("HTML message sanitization failed, falling back to text:",t),r.textContent=a}else r.textContent=String(a);r.setAttribute("aria-label","Toast Notification Center"),r.setAttribute("title","string"==typeof a?a.replace(/<[^>]+>/g,""):String(a)),t.appendChild(r),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;const r={...o};r.label||(r.label="CTA Label Missing!");const i=!!r.href&&"link"===r.variant,a=document.createElement(i?"a":"button");i?(a.href=r.href,r.target&&(a.target=r.target),a.rel=r.rel||("_blank"===r.target?"noopener noreferrer":"")):a.type="button",a.setAttribute("aria-label",r.ariaLabel||r.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=r.label;const s=async e=>{try{if("function"==typeof r.onClick){const t=r.onClick(e);null!=t&&t.then&&await t}}finally{!1!==r.autoClose&&n(t)}};a.addEventListener("click",s),a._cleanup=()=>a.removeEventListener("click",s),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 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?"12px":"0",a=r?12:0,s=Math.max(r-10,a),l=r?`calc(100% - ${s}px)`:"100%";Object.assign(n.style,{position:"absolute",left:`${i}`,height:e.progressHeight||"4px",background:e.progressColor||"rgba(255, 255, 255, 0.3)",width:`${l}`,transition:`width ${e.duration||1800}ms linear`,["top"===e.progressPosition?"top":"bottom"]:"0",borderRadius:e.borderRadius||"4px"}),t.appendChild(n),"function"==typeof n.animate?t._progressAnimation=n.animate([{width:l},{width:"0%"}],{duration:Number(e.duration)||1800,easing:"linear",fill:"forwards",delay:50}):(n.style.transition=`width ${e.duration||1800}ms linear`,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 c(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=s(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 console.error("Emergency toast creation failed:",n),setTimeout(()=>{alert((null==t?void 0:t.message)||"Emergency Toast Creation Showing!"),e(null)},100),null}}const u=new Map,d=new Map;function m(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 f(t,e){const n=m(t.position);if(d.has(n))return d.get(n);const o=(async()=>{const o=u.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(`#${n}`);if(i.length>1)for(let t=1;t<i.length;t++)try{i[t].remove()}catch{}return u.set(n,r),r})();d.set(n,o);try{return await o}finally{d.delete(m(t.position))}}async function p(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(n.hasTop)return e.maxWidth="100vw",t.style.top="10px",t.style.left="10px",t.style.right="10px",!0;if(n.hasBottom)return e.maxWidth="100vw",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":(e.hasBottom||e.hasTop||(t.style.bottom="10px"),t.style.left="50%",t.style.transform="translateX(-50%)")}(t,n)}class h{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 y=new Map,g=new Map,b=[];let w=0;async function v(t={}){try{const e=function(t={}){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(y.has(e)){const n=y.get(e);if(!n)throw new Error(`Active toast with key ${e} not found`);return n.count++,n.timer.clear(),n.timer=E(n.toast,t),await S(n),void await L(n)}if(g.has(e)){const t=g.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};g.set(e,n),n.rafId=requestAnimationFrame(async()=>{const t=g.get(e);if(t){if(g.delete(e),w>=3)return b.push({options:t.options,key:e,count:t.count}),void await A();try{await x(t.options,e,t.count)}catch(t){console.error("showToast failed:",t)}}})}catch(t){console.error("showToast failed:",t)}}async function x(e,n,o){try{if(!e||"object"!=typeof e)throw new TypeError("options must be an object");w++;const r=await f(e,p);if(!r)throw new Error("Failed to create toast container");const i=await async function(e,n){if(!document.querySelector('[id^="toast-container-"]'))return null;let o;try{return o=await t("div","toast"),await l(o,e,n),o}catch(t){return console.warn("toast creation failed with error showing fallback one: ",t),o=await c(e,n),o}}(e,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 u=!1!==e.pauseOnHover&&(!0===e.pauseOnHover||!!e.cta),d={outer:a,toast:i,count:Math.max(1,Math.floor(o??0)),timeout:null,pauseOnHover:u};y.set(n,d),i._key=n,d.count>1&&await L(d),d.timer=E(i,e),await S(d)}catch(t){console.error("Something went wrong: ",t),w=Math.max(0,w-1);(document.querySelector('[id^="toast-container-"]')||document.body).appendChild(await c(e,T))}}const C=async function(){try{if(0===y.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(-1);o&&(t=o.querySelector('[id^="toast-"]')||o)}),!t){const e=Array.from(y.entries());if(e.length>0){const[,n]=e.at(-1);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){console.error("dismissMostRecent failed:",t)}},k=async function(){try{const t=Array.from(y.values()).map(t=>t.toast).filter(Boolean);b.length=0,g.clear();for(const e of t)try{await T(e)}catch(t){console.warn("closeAllToasts: failed to close one toast:",t)}}catch(t){console.error("closeAllToasts failed:",t)}};function E(t,e){const n=Number(e.duration??1800)+5,o=new h(async()=>await T(t),n);return o.start(),o}async function S(t){if(!t.pauseOnHover||!t.outer||!t.timer)return;const{outer:e,timer:n,toast:o}=t,r=()=>{var t;n.pause(),null==o||null===(t=o._progressAnimation)||void 0===t||t.pause()},i=()=>{var t;n.resume(),null==o||null===(t=o._progressAnimation)||void 0===t||t.play()},a=t=>{var e;t.target.matches("[tabindex], div, span, button, a")&&(n.pause(),null==o||null===(e=o._progressAnimation)||void 0===e||e.pause())},s=t=>{var r;e.contains(t.relatedTarget)||(n.resume(),null==o||null===(r=o._progressAnimation)||void 0===r||r.play())};e.addEventListener("mouseenter",r),e.addEventListener("mouseleave",i),e.addEventListener("focusin",a),e.addEventListener("focusout",s),e._pauseCleanup=()=>{e.removeEventListener("mouseenter",r),e.removeEventListener("mouseleave",i),e.removeEventListener("focusin",a),e.removeEventListener("focusout",s)}}async function T(t){try{var e,n,o;if(null==t||!t._key)return;const r=y.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),y.delete(t._key),w=Math.max(0,w-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{}try{if(t.remove)return t.remove(),!0}catch{}try{return Object.assign(t.style,{display:"none",opacity:"0",pointerEvents:"none",position:"absolute",left:"-9999px"}),!0}catch{}}(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){console.error("removeWithTransition error:",t)}};try{r.addEventListener("transitionend",i,!0)}catch(t){console.error("removeWithTransition error:",t)}setTimeout(()=>{try{r.removeEventListener("transitionend",i,!0),o()}catch(t){console.error("removeWithTransition error:",t)}},700)}):Promise.resolve()}(r.outer),await A()}catch(t){console.error("Closing Toast failed!: ",t)}}async function A(){for(;w<3&&b.length;){const t=b.shift();if(y.has(t.key)){const e=y.get(t.key);e.count+=t.count,await L(e);continue}x(t.options,t.key,t.count)}}async function L({outer:t,count:e}){if(!(t&&t instanceof HTMLElement))throw new Error("updateBadge: outer must be a valid HTMLElement");if(e<2){const e=t.querySelector(".toast-count-badge");return void(e&&e.remove())}let n=t.querySelector(".toast-count-badge");n||(n=document.createElement("span"),n.className="toast-count-badge",n.setAttribute("aria-label",`${e} identical notifications`),Object.assign(n.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"}),t.appendChild(n)),n.textContent=e>99?"99+":String(e);try{n.style.transform="scale(1.2)",setTimeout(()=>n.style.transform="scale(1)",150)}catch(t){console.error("updateBadge animation error:",t)}}let M={success:"#28a745",error:"#dc3545",warning:"#ffc107",info:"#17a2b8"},I={success:"Operation completed successfully!",error:"Something went wrong!",warning:"Warning message!",info:"Information message!"};const O=[];let D=!1;async function $(t={}){try{const e=await async function(t){var e;const n=null==t||null===(e=t.position)||void 0===e||null===(e=e.toLowerCase())||void 0===e?void 0:e.trim(),r=null!=n&&n.includes("top-full-width")||null!=n&&n.includes("bottom-full-width")?"100vw":"400px",i={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",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:r,..."object"!=typeof t||Array.isArray(t)?{}:t};i.message=(null==t?void 0:t.message)??i.message;try{var a;if(!i.backgroundColor)i.backgroundColor=(null===(a=M)||void 0===a?void 0:a[i.type])??(window.matchMedia("(prefers-color-scheme: dark)").matches?"#f5f5f5":"#111111")}catch(t){console.warn("Background color resolution failed:",t)}try{var s;i.message=i.message||(null===(s=I)||void 0===s?void 0:s[i.type])||"No Message Provided!"}catch(t){console.warn("Default message resolution failed:",t)}try{!i.textColor&&i.backgroundColor&&(i.textColor=o(i.backgroundColor))}catch(t){console.warn("Text color resolution failed:",t)}try{!i.progressColor&&i.backgroundColor&&(i.progressColor=i.textColor||o(i.backgroundColor))}catch(t){console.warn("Progress bar color resolution failed:",t)}"string"!=typeof i.message&&(i.message="No Message Provided!");return i}(t);await async function(t){try{return await f(t,p)}catch(t){return console.error("Failed to create toast container:",t),document.body}}(e),await v(e)}catch(e){console.error("CreateToast failed:",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)}}function N(t){try{t&&"object"==typeof t&&!Array.isArray(t)&&(M={...M,...t})}catch(t){console.error("setDefaultColors failed:",t)}}function j(t){try{t&&"object"==typeof t&&!Array.isArray(t)&&(I={...I,...t})}catch(t){console.error("setDefaultMessages failed:",t)}}let z=!1,B=null;const W=async function(t={}){"undefined"!=typeof window&&"undefined"!=typeof document?(await async function(){if(D)return;"undefined"!=typeof window&&"undefined"!=typeof document&&("complete"===document.readyState||"interactive"===document.readyState?(D=!0,O.forEach(t=>setTimeout(()=>$(t),200)),O.length=0):document.addEventListener("DOMContentLoaded",()=>{D=!0,O.forEach(t=>setTimeout(()=>$(t),200)),O.length=0},{once:!0}))}(),D?await $(t):O.push(t)):console.warn("ToastNotification: running in non-browser environment, no DOM available.")};async function P(t={}){return async function(t){if(z&&B)try{await B}catch(t){console.warn("Previous close operation failed (continuing anyway):",t)}return t()}(()=>W(t))}const H=async()=>{z=!0,B=(async()=>{try{await C()}finally{z=!1,B=null}})(),await B},R=async()=>{z=!0,B=(async()=>{try{await k()}finally{z=!1,B=null}})(),await B};if("undefined"!=typeof window&&"undefined"!=typeof document){const t=t=>{"Escape"!==t.key&&"Esc"!==t.key||(async()=>{z=!0,B=(async()=>{try{await C()}finally{z=!1,B=null}})(),await B})()};window.addEventListener("keydown",t,{passive:!0})}try{"undefined"!=typeof window&&(window.customizableToast={createToast:P,setDefaultColors:N,setDefaultMessages:j,noop:R,dismiss:H})}catch(t){console.error("Global assignment failed:",t)}exports.createToast=P,exports.dismiss=H,exports.noop=R,exports.setDefaultColors=N,exports.setDefaultMessages=j;
|
|
15
|
+
"use strict";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(t=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,o=1){if(!t)return"snow";const r=`${t}|${o}`,i=e.get(r);if(i)return i;if(n[null==t?void 0:t.toLowerCase()]){const o=n[t.toLowerCase()];return e.set(r,o),o}let a,s,l;try{const e=function(t){const e=null==t?void 0:t.match(/^#([0-9a-f]{3,8})$/i);if(e){let t=e[1];return 3===t.length&&(t=t.split("").map(t=>t+t).join("")),{r:parseInt(t.slice(0,2),16),g:parseInt(t.slice(2,4),16),b:parseInt(t.slice(4,6),16)}}const n=null==t?void 0:t.match(/rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*[\d.]+)?\)/i);if(n)return{r:Number(n[1]),g:Number(n[2]),b:Number(n[3])};const o=null==t?void 0:t.match(/hsla?\(\s*([\d.]+)(?:deg)?\s*,\s*([\d.]+)%\s*,\s*([\d.]+)%(?:\s*,\s*[\d.]+)?\)/i);if(o){const t=Number(o[1])/360,e=Number(o[2])/100,n=Number(o[3])/100;if(0===e){const t=Math.round(255*n);return{r:t,g:t,b:t}}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),i=n<.5?n*(1+e):n+e-n*e,a=2*n-i;return{r:Math.round(255*r(a,i,t+1/3)),g:Math.round(255*r(a,i,t)),b:Math.round(255*r(a,i,t-1/3))}}return null}(function(t){var e;const n=null==t?void 0:t.match(/^var\((--[\w-]+)(?:\s*,\s*(.+))?\)$/i);if(!n)return t;try{if("undefined"!=typeof document&&"function"==typeof getComputedStyle){const t=getComputedStyle(document.documentElement).getPropertyValue(n[1]).trim();if(t)return t}}catch(t){}return(null===(e=n[2])||void 0===e?void 0:e.trim())||t}(t));if(!e)throw new Error("Unknown color");({r:a,g:s,b:l}=e)}catch{a=s=l=128}a=Math.round(a*o+255*(1-o)),s=Math.round(s*o+255*(1-o)),l=Math.round(l*o+255*(1-o));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,m,f]=((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 p=f<.5?Math.min(f+.5,1):Math.max(f-.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,m,p);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 w=((t,e,n)=>`#${t.toString(16).padStart(2,"0")}${e.toString(16).padStart(2,"0")}${n.toString(16).padStart(2,"0")}`)(h,y,g);return e.set(r,w),w}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,[e,o,r]])=>{const i=t=>{const e=t/255;return e<=.03928?e/12.92:Math.pow((e+.055)/1.055,2.4)},a=.2126*i(e)+.7152*i(o)+.0722*i(r),s=(a+.05)/.05,l=1.05/(a+.05);n[t.toLowerCase()]=s>=l?"#000000":"#ffffff"});const r=new Set(["DIV","SPAN","P","BR","STRONG","B","EM","I","U","SMALL","UL","OL","LI","A","IMG","PRE","CODE","MARK"]),i=new Set(["href","src","alt","title","class","target","rel"]);function a(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");function o(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(!r.has(e)){const e=document.createDocumentFragment();return Array.from(t.childNodes).forEach(t=>{const n=o(t);n&&e.appendChild(n)}),e}const n=document.createElement(t.tagName);return Array.from(t.attributes||[]).forEach(e=>{const o=e.name.toLowerCase(),r=e.value;i.has(o)&&("href"!==o&&"src"!==o||!/^\s*javascript:/i.test(r))&&("src"!==o||/^\s*(https?:|data:image\/)/i.test(r))&&("target"===o&&"_blank"===r&&n.setAttribute("rel",(t.getAttribute("rel")||"")+" noopener noreferrer"),n.setAttribute(o,r))}),Array.from(t.childNodes).forEach(t=>{const e=o(t);e&&n.appendChild(e)}),n}n.innerHTML=e;const a=document.createDocumentFragment();Array.from(n.childNodes).forEach(t=>{const e=o(t);e&&a.appendChild(e)});const s=document.createElement("div");return s.appendChild(a),s.innerHTML}function s(t,e={}){if(!t)return"";try{if(!e.forceFallback&&function(){try{if("undefined"!=typeof window&&window.DOMPurify)return!0}catch(t){}return!1}()){const e=window.DOMPurify.sanitize(t,{ALLOWED_TAGS:Array.from(r),ALLOWED_ATTR:Array.from(i),ALLOWED_URI_REGEXP:/^(?:(?:https?|mailto|ftp|tel|data):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i}),n=document.createElement("div");return n.innerHTML=e,n.querySelectorAll('a[target="_blank"]').forEach(t=>{const e=(t.getAttribute("rel")||"").split(/\s+/).filter(Boolean);e.includes("noopener")||e.push("noopener"),e.includes("noreferrer")||e.push("noreferrer"),t.setAttribute("rel",e.join(" "))}),n.innerHTML}}catch(t){}return a(t)}async function l(t,e,n){const o=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==e?void 0:e.type)??"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=o;const r=document.createElement("span");null!=e&&e.wrapText?Object.assign(r.style,{display:"block",whiteSpace:"normal"}):Object.assign(r.style,{display:"-webkit-box",WebkitBoxOrient:"vertical",WebkitLineClamp:"3",whiteSpace:"nowrap"}),Object.assign(r.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"});const i=!!e.allowHtml,a=e.message??"";if(e.loader||e.showLoader){const t=function(t={}){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||{});r.appendChild(t);const n=document.createElement("span");n.style.display="inline-block",n.style.width="8px",r.appendChild(n)}if(i&&"string"==typeof a&&a.trim().length>0)try{const t=s(a),e=document.createElement("div");for(e.innerHTML=t;e.firstChild;)r.appendChild(e.firstChild)}catch(t){console.warn("HTML message sanitization failed, falling back to text:",t),r.textContent=a}else r.textContent=String(a);r.setAttribute("aria-label","Toast Notification Center"),r.setAttribute("title","string"==typeof a?a.replace(/<[^>]+>/g,""):String(a)),t.appendChild(r),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;const r={...o};r.label||(r.label="CTA Label Missing!");const i=!!r.href&&"link"===r.variant,a=document.createElement(i?"a":"button");i?(a.href=r.href,r.target&&(a.target=r.target),a.rel=r.rel||("_blank"===r.target?"noopener noreferrer":"")):a.type="button",a.setAttribute("aria-label",r.ariaLabel||r.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=r.label;const s=async e=>{try{if("function"==typeof r.onClick){const t=r.onClick(e);null!=t&&t.then&&await t}}finally{!1!==r.autoClose&&n(t)}};a.addEventListener("click",s),a._cleanup=()=>a.removeEventListener("click",s),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 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?"12px":"0",a=r?12:0,s=Math.max(r-10,a),l=r?`calc(100% - ${s}px)`:"100%";Object.assign(n.style,{position:"absolute",left:`${i}`,height:e.progressHeight||"4px",background:e.progressColor||"rgba(255, 255, 255, 0.3)",width:`${l}`,transition:`width ${e.duration||1800}ms linear`,["top"===e.progressPosition?"top":"bottom"]:"0",borderRadius:e.borderRadius||"4px"}),t.appendChild(n),"function"==typeof n.animate?t._progressAnimation=n.animate([{width:l},{width:"0%"}],{duration:Number(e.duration)||1800,easing:"linear",fill:"forwards",delay:50}):(n.style.transition=`width ${e.duration||1800}ms linear`,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 c(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=s(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 console.error("Emergency toast creation failed:",n),setTimeout(()=>{alert((null==t?void 0:t.message)||"Emergency Toast Creation Showing!"),e(null)},100),null}}const u=new Map,d=new Map;function m(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 f(t,e){const n=m(t.position);if(d.has(n))return d.get(n);const o=(async()=>{const o=u.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(`#${n}`);if(i.length>1)for(let t=1;t<i.length;t++)try{i[t].remove()}catch{}return u.set(n,r),r})();d.set(n,o);try{return await o}finally{d.delete(m(t.position))}}async function p(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(n.hasTop)return e.maxWidth="100vw",t.style.top="10px",t.style.left="10px",t.style.right="10px",!0;if(n.hasBottom)return e.maxWidth="100vw",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":(e.hasBottom||e.hasTop||(t.style.bottom="10px"),t.style.left="50%",t.style.transform="translateX(-50%)")}(t,n)}class h{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 y=new Map,g=new Map,w=[];let b=0;async function v(t={}){try{const e=function(t={}){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(y.has(e)){const n=y.get(e);if(!n)throw new Error(`Active toast with key ${e} not found`);return n.count++,n.timer.clear(),n.timer=E(n.toast,t),await S(n),await M(n),e}if(g.has(e)){const t=g.get(e);if(!t)throw new Error(`Pending toast with key ${e} not found`);return t.count++,e}const n={options:t,count:1,rafId:0};return g.set(e,n),n.rafId=requestAnimationFrame(async()=>{const t=g.get(e);if(t){if(g.delete(e),b>=3)return w.push({options:t.options,key:e,count:t.count}),void await L();try{await x(t.options,e,t.count)}catch(t){console.error("showToast failed:",t)}}}),e}catch(t){console.error("showToast failed:",t)}}async function x(e,n,o){try{if(!e||"object"!=typeof e)throw new TypeError("options must be an object");b++;const r=await f(e,p);if(!r)throw new Error("Failed to create toast container");const i=await async function(e,n){if(!document.querySelector('[id^="toast-container-"]'))return null;let o;try{return o=await t("div","toast"),await l(o,e,n),o}catch(t){return console.warn("toast creation failed with error showing fallback one: ",t),o=await c(e,n),o}}(e,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 u=!1!==e.pauseOnHover&&(!0===e.pauseOnHover||!!e.cta),d={outer:a,toast:i,count:Math.max(1,Math.floor(o??0)),timeout:null,pauseOnHover:u};y.set(n,d),i._key=n,d.count>1&&await M(d),d.timer=E(i,e),await S(d)}catch(t){console.error("Something went wrong: ",t),b=Math.max(0,b-1);(document.querySelector('[id^="toast-container-"]')||document.body).appendChild(await c(e,T))}}const C=async function(){try{if(0===y.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(-1);o&&(t=o.querySelector('[id^="toast-"]')||o)}),!t){const e=Array.from(y.entries());if(e.length>0){const[,n]=e.at(-1);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){console.error("dismissMostRecent failed:",t)}},k=async function(){try{const t=Array.from(y.values()).map(t=>t.toast).filter(Boolean);w.length=0,g.clear();for(const e of t)try{await T(e)}catch(t){console.warn("closeAllToasts: failed to close one toast:",t)}}catch(t){console.error("closeAllToasts failed:",t)}};function E(t,e){const n=Number(e.duration??1800)+5,o=new h(async()=>await T(t),n);return o.start(),o}async function S(t){if(!t.pauseOnHover||!t.outer||!t.timer)return;const{outer:e,timer:n,toast:o}=t,r=()=>{var t;n.pause(),null==o||null===(t=o._progressAnimation)||void 0===t||t.pause()},i=()=>{var t;n.resume(),null==o||null===(t=o._progressAnimation)||void 0===t||t.play()},a=t=>{var e;t.target.matches("[tabindex], div, span, button, a")&&(n.pause(),null==o||null===(e=o._progressAnimation)||void 0===e||e.pause())},s=t=>{var r;e.contains(t.relatedTarget)||(n.resume(),null==o||null===(r=o._progressAnimation)||void 0===r||r.play())};e.addEventListener("mouseenter",r),e.addEventListener("mouseleave",i),e.addEventListener("focusin",a),e.addEventListener("focusout",s),e._pauseCleanup=()=>{e.removeEventListener("mouseenter",r),e.removeEventListener("mouseleave",i),e.removeEventListener("focusin",a),e.removeEventListener("focusout",s)}}async function T(t){if(null!=t&&t._key)return A(t._key)}async function A(t){try{var e,n,o;if(!t)return;const r=g.get(t);if(r)return cancelAnimationFrame(r.rafId),void g.delete(t);const i=w.findIndex(e=>e.key===t);if(-1!==i)return void w.splice(i,1);const a=y.get(t);if(!a)return;null===(e=a.timer)||void 0===e||e.clear(),null===(n=a.outer)||void 0===n||null===(o=n._pauseCleanup)||void 0===o||o.call(n),y.delete(t),b=Math.max(0,b-1);const s=a.outer.querySelector(".toast-count-badge");s&&s.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{}try{if(t.remove)return t.remove(),!0}catch{}try{return Object.assign(t.style,{display:"none",opacity:"0",pointerEvents:"none",position:"absolute",left:"-9999px"}),!0}catch{}}(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){console.error("removeWithTransition error:",t)}};try{r.addEventListener("transitionend",i,!0)}catch(t){console.error("removeWithTransition error:",t)}setTimeout(()=>{try{r.removeEventListener("transitionend",i,!0),o()}catch(t){console.error("removeWithTransition error:",t)}},700)}):Promise.resolve()}(a.outer),await L()}catch(t){console.error("Closing Toast failed!: ",t)}}async function L(){for(;b<3&&w.length;){const t=w.shift();if(y.has(t.key)){const e=y.get(t.key);e.count+=t.count,await M(e);continue}x(t.options,t.key,t.count)}}async function M({outer:t,count:e}){if(!(t&&t instanceof HTMLElement))throw new Error("updateBadge: outer must be a valid HTMLElement");if(e<2){const e=t.querySelector(".toast-count-badge");return void(e&&e.remove())}let n=t.querySelector(".toast-count-badge");n||(n=document.createElement("span"),n.className="toast-count-badge",n.setAttribute("aria-label",`${e} identical notifications`),Object.assign(n.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"}),t.appendChild(n)),n.textContent=e>99?"99+":String(e);try{n.style.transform="scale(1.2)",setTimeout(()=>n.style.transform="scale(1)",150)}catch(t){console.error("updateBadge animation error:",t)}}let I={success:"#28a745",error:"#dc3545",warning:"#ffc107",info:"#17a2b8"},O={success:"Operation completed successfully!",error:"Something went wrong!",warning:"Warning message!",info:"Information message!"};const D=[];let $=!1;async function N(t={}){try{const e=await async function(t){var e;const n=null==t||null===(e=t.position)||void 0===e||null===(e=e.toLowerCase())||void 0===e?void 0:e.trim(),r=null!=n&&n.includes("top-full-width")||null!=n&&n.includes("bottom-full-width")?"100vw":"400px",i={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",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:r,..."object"!=typeof t||Array.isArray(t)?{}:t};i.message=(null==t?void 0:t.message)??i.message;try{var a;if(!i.backgroundColor)i.backgroundColor=(null===(a=I)||void 0===a?void 0:a[i.type])??(window.matchMedia("(prefers-color-scheme: dark)").matches?"#f5f5f5":"#111111")}catch(t){console.warn("Background color resolution failed:",t)}try{var s;i.message=i.message||(null===(s=O)||void 0===s?void 0:s[i.type])||"No Message Provided!"}catch(t){console.warn("Default message resolution failed:",t)}try{!i.textColor&&i.backgroundColor&&(i.textColor=o(i.backgroundColor))}catch(t){console.warn("Text color resolution failed:",t)}try{!i.progressColor&&i.backgroundColor&&(i.progressColor=i.textColor||o(i.backgroundColor))}catch(t){console.warn("Progress bar color resolution failed:",t)}"string"!=typeof i.message&&(i.message="No Message Provided!");return i}(t);return await async function(t){try{return await f(t,p)}catch(t){return console.error("Failed to create toast container:",t),document.body}}(e),await v(e)}catch(e){console.error("CreateToast failed:",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!";return alert(n),null}}function B(t){try{t&&"object"==typeof t&&!Array.isArray(t)&&(I={...I,...t})}catch(t){console.error("setDefaultColors failed:",t)}}function P(t){try{t&&"object"==typeof t&&!Array.isArray(t)&&(O={...O,...t})}catch(t){console.error("setDefaultMessages failed:",t)}}let j=!1,z=null;const W=async function(t={}){return"undefined"!=typeof window&&"undefined"!=typeof document?(await async function(){if($)return;"undefined"!=typeof window&&"undefined"!=typeof document&&("complete"===document.readyState||"interactive"===document.readyState?($=!0,D.forEach(t=>setTimeout(()=>N(t),200)),D.length=0):document.addEventListener("DOMContentLoaded",()=>{$=!0,D.forEach(t=>setTimeout(()=>N(t),200)),D.length=0},{once:!0}))}(),$?await N(t):(D.push(t),null)):(console.warn("ToastNotification: running in non-browser environment, no DOM available."),null)};async function H(t={}){const e=await async function(t){if(j&&z)try{await z}catch(t){console.warn("Previous close operation failed (continuing anyway):",t)}return t()}(()=>W(t));return{dismiss:()=>e?A(e):Promise.resolve()}}const R=async()=>{j=!0,z=(async()=>{try{await C()}finally{j=!1,z=null}})(),await z},_=async()=>{j=!0,z=(async()=>{try{await k()}finally{j=!1,z=null}})(),await z};async function q(t,e={},n={}){const o=e.loading??"Loading...",r=await H({...n,type:"info",message:o,duration:864e5,showProgressBar:!1}),i="function"==typeof t?t():t;try{const t=await i;await r.dismiss();const o="function"==typeof e.success?e.success(t):e.success??"Done!";return await H({...n,type:"success",message:o}),t}catch(t){await r.dismiss();const o="function"==typeof e.error?e.error(t):e.error??"Something went wrong.";throw await H({...n,type:"error",message:o}),t}}if("undefined"!=typeof window&&"undefined"!=typeof document){const t=t=>{"Escape"!==t.key&&"Esc"!==t.key||(async()=>{j=!0,z=(async()=>{try{await C()}finally{j=!1,z=null}})(),await z})()};window.addEventListener("keydown",t,{passive:!0})}try{"undefined"!=typeof window&&(window.customizableToast={createToast:H,setDefaultColors:B,setDefaultMessages:P,noop:_,dismiss:R,toastPromise:q})}catch(t){console.error("Global assignment failed:",t)}exports.createToast=H,exports.dismiss=R,exports.noop=_,exports.setDefaultColors=B,exports.setDefaultMessages=P,exports.toastPromise=q;
|
|
16
16
|
//# sourceMappingURL=index.cjs.map
|