toastory 0.1.3 → 0.3.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.
Files changed (119) hide show
  1. package/README.md +15 -1
  2. package/dist/angular.cjs +1 -3
  3. package/dist/angular.cjs.map +1 -1
  4. package/dist/angular.d.cts +12 -5
  5. package/dist/angular.d.ts +12 -5
  6. package/dist/angular.js +1 -3
  7. package/dist/angular.js.map +1 -1
  8. package/dist/core.cjs +1 -2
  9. package/dist/core.cjs.map +1 -1
  10. package/dist/core.d.cts +41 -6
  11. package/dist/core.d.ts +41 -6
  12. package/dist/core.js +1 -2
  13. package/dist/core.js.map +1 -1
  14. package/dist/{dialog-Buemfm7I.d.ts → dialog-D-y37Xl5.d.ts} +1 -1
  15. package/dist/{dialog-fziFV6J0.d.cts → dialog-mUI__8O3.d.cts} +1 -1
  16. package/dist/index.cjs +1 -6
  17. package/dist/index.cjs.map +1 -1
  18. package/dist/index.d.cts +6 -5
  19. package/dist/index.d.ts +6 -5
  20. package/dist/index.js +1 -6
  21. package/dist/index.js.map +1 -1
  22. package/dist/native.cjs +1 -2
  23. package/dist/native.cjs.map +1 -1
  24. package/dist/native.d.cts +85 -5
  25. package/dist/native.d.ts +85 -5
  26. package/dist/native.js +1 -2
  27. package/dist/native.js.map +1 -1
  28. package/dist/react.cjs +1 -3
  29. package/dist/react.cjs.map +1 -1
  30. package/dist/react.d.cts +5 -4
  31. package/dist/react.d.ts +5 -4
  32. package/dist/react.js +1 -3
  33. package/dist/react.js.map +1 -1
  34. package/dist/sound-DLXnQDzO.d.cts +18 -0
  35. package/dist/sound-UiOhOgA9.d.ts +18 -0
  36. package/dist/svelte.cjs +1 -3
  37. package/dist/svelte.cjs.map +1 -1
  38. package/dist/svelte.d.cts +6 -3
  39. package/dist/svelte.d.ts +6 -3
  40. package/dist/svelte.js +1 -3
  41. package/dist/svelte.js.map +1 -1
  42. package/dist/themes/_base.css +1 -1
  43. package/dist/themes/_base.dialog.css +1 -1
  44. package/dist/themes/_base.toast.css +1 -1
  45. package/dist/themes/all.css +1 -1
  46. package/dist/themes/aurora.css +1 -1
  47. package/dist/themes/aurora.dialog.css +1 -1
  48. package/dist/themes/aurora.toast.css +1 -1
  49. package/dist/themes/basic.css +1 -1
  50. package/dist/themes/basic.dialog.css +1 -1
  51. package/dist/themes/basic.toast.css +1 -1
  52. package/dist/themes/brutal.css +1 -1
  53. package/dist/themes/brutal.dialog.css +1 -1
  54. package/dist/themes/brutal.toast.css +1 -1
  55. package/dist/themes/classic-bar.css +1 -1
  56. package/dist/themes/classic-bar.dialog.css +1 -1
  57. package/dist/themes/classic-bar.toast.css +1 -1
  58. package/dist/themes/classic-stack.css +1 -1
  59. package/dist/themes/classic-stack.dialog.css +1 -1
  60. package/dist/themes/classic-stack.toast.css +1 -1
  61. package/dist/themes/dialogs.css +1 -1
  62. package/dist/themes/dialogs.dialog.css +1 -1
  63. package/dist/themes/dialogs.toast.css +1 -1
  64. package/dist/themes/essentials.css +1 -1
  65. package/dist/themes/essentials.dialog.css +1 -1
  66. package/dist/themes/essentials.toast.css +1 -1
  67. package/dist/themes/flat.css +1 -1
  68. package/dist/themes/flat.dialog.css +1 -1
  69. package/dist/themes/flat.toast.css +1 -1
  70. package/dist/themes/gradient-strip.css +1 -1
  71. package/dist/themes/gradient-strip.dialog.css +1 -1
  72. package/dist/themes/gradient-strip.toast.css +1 -1
  73. package/dist/themes/gradient.css +1 -1
  74. package/dist/themes/gradient.dialog.css +1 -1
  75. package/dist/themes/gradient.toast.css +1 -1
  76. package/dist/themes/ios-glass.css +1 -1
  77. package/dist/themes/ios-glass.dialog.css +1 -1
  78. package/dist/themes/ios-glass.toast.css +1 -1
  79. package/dist/themes/liquid-glass.css +1 -1
  80. package/dist/themes/liquid-glass.dialog.css +1 -1
  81. package/dist/themes/liquid-glass.toast.css +1 -1
  82. package/dist/themes/material.css +1 -1
  83. package/dist/themes/material.dialog.css +1 -1
  84. package/dist/themes/material.toast.css +1 -1
  85. package/dist/themes/minimal.css +1 -1
  86. package/dist/themes/minimal.dialog.css +1 -1
  87. package/dist/themes/minimal.toast.css +1 -1
  88. package/dist/themes/neon.css +1 -1
  89. package/dist/themes/neon.dialog.css +1 -1
  90. package/dist/themes/neon.toast.css +1 -1
  91. package/dist/themes/outline.css +1 -1
  92. package/dist/themes/outline.dialog.css +1 -1
  93. package/dist/themes/outline.toast.css +1 -1
  94. package/dist/themes/pastel.css +1 -1
  95. package/dist/themes/pastel.dialog.css +1 -1
  96. package/dist/themes/pastel.toast.css +1 -1
  97. package/dist/themes/pill.css +1 -1
  98. package/dist/themes/pill.dialog.css +1 -1
  99. package/dist/themes/pill.toast.css +1 -1
  100. package/dist/themes/ripple.css +1 -1
  101. package/dist/themes/ripple.dialog.css +1 -1
  102. package/dist/themes/ripple.toast.css +1 -1
  103. package/dist/themes/showcase.css +1 -1
  104. package/dist/themes/showcase.dialog.css +1 -1
  105. package/dist/themes/showcase.toast.css +1 -1
  106. package/dist/themes/sweet.css +1 -1
  107. package/dist/themes/sweet.dialog.css +1 -1
  108. package/dist/themes/sweet.toast.css +1 -1
  109. package/dist/{toast-api-D6WYDtUy.d.cts → toast-api-C5nqvDgA.d.cts} +79 -6
  110. package/dist/{toast-api-D6WYDtUy.d.ts → toast-api-C5nqvDgA.d.ts} +79 -6
  111. package/dist/{ui-Cs1AjRNH.d.ts → ui-C1Zh-Kff.d.ts} +4 -2
  112. package/dist/{ui-D5FwMD8Y.d.cts → ui-D1WECTSn.d.cts} +4 -2
  113. package/dist/vue.cjs +1 -3
  114. package/dist/vue.cjs.map +1 -1
  115. package/dist/vue.d.cts +42 -5
  116. package/dist/vue.d.ts +42 -5
  117. package/dist/vue.js +1 -3
  118. package/dist/vue.js.map +1 -1
  119. package/package.json +1 -1
package/dist/core.d.ts CHANGED
@@ -1,7 +1,7 @@
1
- import { a9 as ToastId, $ as Store, C as Clock, ah as ToastType, q as DialogOptions, b as ToastStore, S as PromiseMessages, ac as ToastOptions, Q as PromiseHandle, n as DialogHandle, u as DialogState, L as Listener, ao as Unsubscribe, y as DismissReason, s as DialogResult, T as ToastApi, i as ConfigStore, Y as SheetOptions, d as BottomSheetOptions, B as BottomSheetHandle, H as LoadingOptions, F as LoadingHandle, G as GlazeConfig, a as ToastRecord } from './toast-api-D6WYDtUy.js';
2
- export { A as AddToastInput, c as AnimationType, e as BuiltInToastType, f as CloseReason, g as ColorMode, h as Config, D as DEFAULT_CONFIG, j as DialogBackdrop, k as DialogButton, l as DialogChoice, m as DialogColumn, o as DialogIcon, p as DialogInputType, r as DialogPosition, t as DialogRow, v as DialogTone, w as DialogVariant, x as Direction, E as EssentialsToastVariant, z as GlazeConfigPatch, I as IosGlassToastVariant, M as MANUAL_PAUSE, J as Mode, O as OffsetConfig, P as PauseOn, K as Position, N as PromiseData, R as PromiseMessage, U as PromiseOutcome, V as Renderable, W as SheetAction, X as SheetActionStyle, Z as ShowcaseToastVariant, _ as StackMode, a0 as SwipeDirection, a1 as ThemeName, a2 as ToastAction, a3 as ToastActionItem, a4 as ToastAvatarOption, a5 as ToastButton, a6 as ToastClassNames, a7 as ToastCustomRenderer, a8 as ToastFn, aa as ToastManager, ab as ToastManagerOptions, ad as ToastPatch, ae as ToastPosition, af as ToastRenderContext, ag as ToastToggleOption, ai as ToastTypeDefinition, aj as ToastVariant, ak as ToastoryConfig, al as ToastoryConfigPatch, am as TypeRegistry, an as TypedDialogOptions, ap as ValidateResult, aq as createConfigStore, ar as createToastApi, as as createToastManager, at as createToastStore, au as createTypeRegistry, av as defaultClock, aw as resolvePrecedence } from './toast-api-D6WYDtUy.js';
3
- import { S as StepsResult } from './dialog-Buemfm7I.js';
4
- export { D as DialogController, a as DialogPromise, c as createDialogController, r as runSteps } from './dialog-Buemfm7I.js';
1
+ import { ac as ToastId, a2 as Store, C as Clock, ak as ToastType, r as DialogOptions, b as ToastStore, U as PromiseMessages, af as ToastOptions, R as PromiseHandle, o as DialogHandle, v as DialogState, L as Listener, ar as Unsubscribe, z as DismissReason, t as DialogResult, T as ToastApi, j as ConfigStore, _ as SheetOptions, d as BottomSheetOptions, B as BottomSheetHandle, J as LoadingOptions, H as LoadingHandle, G as GlazeConfig, a as ToastRecord } from './toast-api-C5nqvDgA.js';
2
+ export { A as AddToastInput, c as AnimationType, e as BuiltInSoundCue, f as BuiltInToastType, g as CloseReason, h as ColorMode, i as Config, D as DEFAULT_CONFIG, k as DialogBackdrop, l as DialogButton, m as DialogChoice, n as DialogColumn, p as DialogIcon, q as DialogInputType, s as DialogPosition, u as DialogRow, w as DialogTone, x as DialogVariant, y as Direction, E as EssentialsToastVariant, F as GlazeConfigPatch, I as IosGlassToastVariant, M as MANUAL_PAUSE, K as Mode, O as OffsetConfig, P as PauseOn, N as Position, Q as PromiseData, S as PromiseMessage, V as PromiseOutcome, W as Renderable, X as RobotCharacter, Y as SheetAction, Z as SheetActionStyle, $ as ShowcaseToastVariant, a0 as SoundCue, a1 as StackMode, a3 as SwipeDirection, a4 as ThemeName, a5 as ToastAction, a6 as ToastActionItem, a7 as ToastAvatarOption, a8 as ToastButton, a9 as ToastClassNames, aa as ToastCustomRenderer, ab as ToastFn, ad as ToastManager, ae as ToastManagerOptions, ag as ToastPatch, ah as ToastPosition, ai as ToastRenderContext, aj as ToastToggleOption, al as ToastTypeDefinition, am as ToastVariant, an as ToastoryConfig, ao as ToastoryConfigPatch, ap as TypeRegistry, aq as TypedDialogOptions, as as ValidateResult, at as createConfigStore, au as createToastApi, av as createToastManager, aw as createToastStore, ax as createTypeRegistry, ay as defaultClock, az as resolvePrecedence } from './toast-api-C5nqvDgA.js';
3
+ import { S as StepsResult } from './dialog-D-y37Xl5.js';
4
+ export { D as DialogController, a as DialogPromise, c as createDialogController, r as runSteps } from './dialog-D-y37Xl5.js';
5
5
 
6
6
  /**
7
7
  * Returns a collision-safe, incremental unique identifier.
@@ -118,6 +118,41 @@ interface DialogManager {
118
118
  }
119
119
  declare function createDialogManager(clock?: Clock): DialogManager;
120
120
 
121
+ interface SpringConfig {
122
+ stiffness?: number;
123
+ damping?: number;
124
+ mass?: number;
125
+ }
126
+ /** Closed-form damped harmonic oscillator, 0 to 1, zero initial velocity. t in seconds. */
127
+ declare function springPosition(t: number, k: number, c: number, m: number): number;
128
+ /**
129
+ * Bakes a physics-accurate spring curve into a CSS linear() easing function.
130
+ * Enables 100% native GPU-accelerated spring animations without per-frame JS.
131
+ */
132
+ declare function springEasing(config?: SpringConfig): {
133
+ easing: string;
134
+ duration: number;
135
+ };
136
+ /**
137
+ * Numerical Mass-spring-damper on a scalar value.
138
+ * Retains instantaneous velocity when the target changes, ensuring fluid uninterrupted retargeting.
139
+ */
140
+ declare class Spring {
141
+ x: number;
142
+ v: number;
143
+ to: number;
144
+ cfg: Required<SpringConfig>;
145
+ constructor(x: number, cfg?: SpringConfig);
146
+ tune(c: SpringConfig): void;
147
+ /**
148
+ * Advance dt seconds using numerical sub-stepping (h = 1/240) for high stability.
149
+ * Returns true while the spring is still in motion, false when settled at rest.
150
+ */
151
+ step(dt: number): boolean;
152
+ }
153
+ /** Runs a spring task every frame until it returns false. Fully safe in Node and SSR environments. */
154
+ declare function runSpringTask(task: (dt: number) => boolean): void;
155
+
121
156
  /**
122
157
  * Renderer interface for bridging the framework-agnostic core to UI adapters.
123
158
  * If a call happens before a renderer is registered, it queues and replays upon registration.
@@ -187,5 +222,5 @@ declare function createToastEngine(options?: {
187
222
  config?: ConfigStore;
188
223
  }): ToastEngine;
189
224
 
190
- export { BottomSheetHandle, BottomSheetOptions, Clock, ConfigStore, DialogHandle, DialogOptions, DialogResult, DialogState, DismissReason, GlazeConfig, Listener, LoadingHandle, LoadingOptions, PromiseHandle, PromiseMessages, SheetOptions, StepsResult, Store, ToastApi, ToastId, ToastOptions, ToastRecord, ToastStore, ToastType, Unsubscribe, createDialogManager, createStore, createTimer, createToastEngine, createUI, decideAriaLive, decideDialogLabels, decideDialogRole, decideFocusTarget, decideToastRole, nextId, normalizeId, registerRenderer, resetIdCounter, runPromiseToast, ui };
191
- export type { CoreUI, CreateUIOptions, DialogManager, DialogQueueItem, HeadlessDialogController, PausableTimer, Renderer, ToastEngine };
225
+ export { BottomSheetHandle, BottomSheetOptions, Clock, ConfigStore, DialogHandle, DialogOptions, DialogResult, DialogState, DismissReason, GlazeConfig, Listener, LoadingHandle, LoadingOptions, PromiseHandle, PromiseMessages, SheetOptions, Spring, StepsResult, Store, ToastApi, ToastId, ToastOptions, ToastRecord, ToastStore, ToastType, Unsubscribe, createDialogManager, createStore, createTimer, createToastEngine, createUI, decideAriaLive, decideDialogLabels, decideDialogRole, decideFocusTarget, decideToastRole, nextId, normalizeId, registerRenderer, resetIdCounter, runPromiseToast, runSpringTask, springEasing, springPosition, ui };
226
+ export type { CoreUI, CreateUIOptions, DialogManager, DialogQueueItem, HeadlessDialogController, PausableTimer, Renderer, SpringConfig, ToastEngine };
package/dist/core.js CHANGED
@@ -1,2 +1 @@
1
- var L={now:()=>Date.now(),setTimeout:(e,i)=>{let o=setTimeout(e,i);return ()=>clearTimeout(o)},setInterval:(e,i)=>{let o=setInterval(e,i);return ()=>clearInterval(o)}};var q=0;function W(e="gk"){return `${e}-${++q}`}function N(e,i="gk"){return e!==void 0&&e!==""?e:W(i)}function oe(){q=0;}var G=Object.freeze({theme:"ios-glass",mode:"auto",position:"top-right",duration:4e3,maxVisible:8,gap:12,stack:true,dir:"auto",hotkey:"alt+t",pauseOn:["hover","focus","hidden"],shadow:true,closeButton:false,richColors:false,invert:false,swipe:true,dragThreshold:45,progress:false,closeOnClick:false,exitDuration:250,historyLimit:100,regionLabel:"Notifications",closeLabel:"Close notification",startPaused:false,newestOnTop:true,dedupeWindow:500,container:void 0}),ie=(e,i,o,u)=>e??i??o??u;function F(e={}){let i=Object.freeze({...G,...Y(e)}),o=new Set,u=()=>{o.forEach(n=>n());};return {get:()=>i,set(n){return i=Object.freeze({...i,...Y(n)}),u(),i},reset(){i=G,u();},subscribe(n){return o.add(n),()=>{o.delete(n);}}}}function Y(e){let i={};for(let o in e)e[o]!==void 0&&(i[o]=e[o]);return i}function M(e,i,o=L){let u=e,n=e,f=0,s,v,g=false,y=false,p=new Map,x=new Set,l=()=>Number.isFinite(n)&&n>0,d=()=>{if(x.size===0)return;let b=h(),R=u>0?Math.max(0,Math.min(1,b/u)):0;for(let I of x)try{I(b,R);}catch(t){console.error(t);}},h=()=>y?0:g&&p.size===0?Math.max(0,n-(o.now()-f)):n,C=()=>{s?.(),s=void 0,v?.(),v=void 0;},S=()=>{C(),!(!l()||p.size>0||y)&&(f=o.now(),s=o.setTimeout(()=>{C(),n=0,y=true,g=false,d(),i();},n),x.size>0&&(v=o.setInterval(()=>{d();},50)));};return {start(){y||!l()||(g=true,p.clear(),S(),d());},pause:(b="manual")=>{y||(p.set(b,(p.get(b)??0)+1),g&&p.size===1&&(n=Math.max(0,n-(o.now()-f)),C(),d()));},resume:(b="manual")=>{if(y)return;let R=p.get(b);R&&(R<=1?p.delete(b):p.set(b,R-1),g&&p.size===0&&l()&&(S(),d()));},clearReasons(){p.clear(),g&&l()&&S();},add(b){if(y||!Number.isFinite(n))return;let R=g&&p.size===0;n=Math.max(1,(R?n-(o.now()-f):n)+b),u=Math.max(u,n),R&&S(),d();},reset(b){y=false,n=u=b!==void 0?b:u,g&&p.size===0&&(l()?S():C()),d();},cancel(){C(),g=false,y=true,n=0;},remaining:h,elapsed(){return Math.max(0,u-h())},isRunning:()=>g&&!y&&!p.size&&l(),isPaused:()=>p.size>0,pausedReasons:()=>[...p.keys()],onTick(b){return x.add(b),g&&p.size===0&&!v&&(v=o.setInterval(d,50)),()=>{x.delete(b),x.size===0&&v&&(v(),v=void 0);}}}}var E=(e,i="polite")=>({color:`var(--gk-${e})`,ariaLive:i}),re={success:E("success"),error:E("error","assertive"),warning:E("warning","assertive"),info:E("info"),loading:{...E("info"),defaults:{duration:0,dismissible:false}},message:E("fg")};function Q(){let e=new Map;return {add(i,o={}){let u=typeof i=="string"?i.trim():"";if(!u)throw new TypeError("toastory: invalid type");e.set(u,o);},remove:i=>e.delete(i),get:i=>e.get(i)??re[i],list:()=>[...e.keys()]}}var ne=new Set(["user","swipe","click"]),U=(e,...i)=>{try{e?.(...i);}catch(o){console.error(o);}},J="manual",se={loading:{duration:0}};function z(e={}){let i=e.config??F(),o=e.clock??L,u=e.now??(()=>o.now()),n=e.types??Q(),f=new Map,s=[],v=[],g=[],y=new Set,p=()=>{v=s.map(t=>f.get(t)?.record).filter(Boolean),y.forEach(t=>t());},x=t=>`${t.container??""}|${t.position}`,l=(t,c,a,r)=>{let D=i.get(),T=c.type??"default",P={...se[T],...n.get(T)?.defaults,...c},w=P.duration??D.duration,B=Number.isFinite(w)&&w>0?w:0,A=P.important||T==="error",H=u();return {...P,id:t,type:T,duration:B,position:P.position??D.position,ariaLive:P.ariaLive??(A?"assertive":"polite"),role:P.role??(A?"alert":"status"),createdAt:a?.createdAt??H,updatedAt:H,revision:(a?.revision??-1)+1,timerEpoch:a?.timerEpoch??0,count:a?.count??1,visible:a?.visible??false,dismissed:false,pausedBy:a?.pausedBy??(D.startPaused?[J]:[]),remaining:a?.remaining??(B||1/0),custom:r}},d=t=>t.record.duration===0?1/0:t.timer.remaining(),h=t=>{if(t.dedupe===false)return;if(typeof t.dedupe=="string")return t.dedupe;let c=typeof t.title=="string"?t.title:"",a=typeof t.description=="string"?t.description:"";return c||a?`${t.type??"default"}|${c}|${a}`:void 0},C=()=>{let t=i.get(),c=new Map;for(let a of s){let r=f.get(a);if(!r||r.record.dismissed)continue;let D=x(r.record),T=c.get(D)??0,P=!!r.record.important;T<t.maxVisible||P?(r.record.visible||(r.record={...r.record,visible:true},!r.record.pausedBy.length&&r.record.duration>0&&r.timer.start()),P||c.set(D,T+1)):r.record.visible&&(r.record={...r.record,visible:false},r.timer.pause());}},S=t=>{t.exitHandle?.(),t.timer.cancel(),f.delete(t.record.id),s=s.filter(c=>c!==t.record.id),g=[{...t.record,dismissed:true},...g].slice(0,i.get().historyLimit),C(),R(),p(),t.closedFired||(t.closedFired=true,U(t.record.onClose,t.record,t.reason??"api"));},m=(t,c)=>{if(t.record.dismissed||t.record.dismissible===false&&ne.has(c))return;t.reason=c,t.record={...t.record,dismissed:true,remaining:0,revision:t.record.revision+1},t.timer.cancel(),!t.dismissFired&&c!=="auto"&&(t.dismissFired=true,U(t.record.onDismiss,t.record,c)),C(),R(),p();let a=i.get().exitDuration;a<=0||!t.record.visible?S(t):t.exitHandle=o.setTimeout(()=>S(t),a);},k=(t,c)=>{let{custom:a,...r}=c,D=l(t,r,void 0,a),T={opts:r,custom:a,record:D,timer:void 0,dedupeKey:h(r),exitHandle:void 0,reason:void 0,openedFired:false,closedFired:false,dismissFired:false,autoCloseFired:false};return T.timer=M(D.duration,()=>{T.autoCloseFired||(T.autoCloseFired=true,U(T.record.onAutoClose,T.record)),m(T,"auto");},o),D.pausedBy.length&&T.timer.pause(),T},b=t=>{t.timer.cancel(),t.record.duration>0&&(t.timer.reset(t.record.duration),t.record.visible&&!t.record.pausedBy.length&&t.timer.start()),t.record={...t.record,timerEpoch:t.record.timerEpoch+1,remaining:d(t)};},R=()=>{for(let t of s){let c=f.get(t);c&&c.record.visible&&!c.openedFired&&!c.record.dismissed&&(c.openedFired=true,U(c.record.onOpen,c.record));}},I={config:i,types:n,add(t){let c=N(t.id),a=f.get(c);if(a&&!a.record.dismissed){let{custom:T,...P}=t;return I.update(c,P),T&&(a.custom=T,a.record={...a.record,custom:T},p()),c}a&&S(a);let r=h(t);if(r!==void 0){for(let T of f.values())if(T.dedupeKey===r&&!T.record.dismissed)return T.record={...T.record,count:T.record.count+1,revision:T.record.revision+1,updatedAt:u()},b(T),p(),T.record.id}let D=k(c,t);return f.set(c,D),s=[...s,c],C(),p(),R(),c},update(t,c){let a=f.get(t);if(!a||a.record.dismissed)return false;let{resetTimer:r=true,...D}=c,T={...a.opts};D.type!==void 0&&D.type!==a.record.type&&(delete T.duration,delete T.ariaLive,delete T.role,delete T.icon);let P=false;for(let A in D){let H=D[A];H!==void 0&&(a.opts[A]!==H&&(P=true),T[A]=H);}if(!P&&D.type===void 0&&D.position===void 0)return true;a.opts=T,a.dedupeKey=h(T);let w=l(t,T,a.record,a.custom),B=w.position!==a.record.position;return a.record=w,B&&(a.record={...a.record,visible:false},C()),r||B?b(a):a.record={...a.record,remaining:d(a)},p(),R(),true},dismiss(t,c="api"){if(t===void 0)return I.dismissAll(c);let a=f.get(t);a&&m(a,c);},dismissAll(t="api"){for(let c of f.values())m(c,t);},pause(t,c){let a=t===void 0?[...f.values()]:[f.get(t)].filter(r=>!!r);for(let r of a)r.record.pausedBy.includes(c)||(r.timer.pause(c),r.record={...r.record,pausedBy:[...r.record.pausedBy,c],remaining:d(r)});p();},resume(t,c){let a=t===void 0?[...f.values()]:[f.get(t)].filter(r=>!!r);for(let r of a){if(!r.record.pausedBy.includes(c))continue;r.timer.resume(c);let D=r.record.pausedBy.filter(T=>T!==c);r.record={...r.record,pausedBy:D,remaining:d(r)},!D.length&&r.record.visible&&r.record.duration>0&&r.timer.start();}p();},extend(t,c){let a=f.get(t);!a||a.record.dismissed||(a.timer.add(c),a.record={...a.record,remaining:d(a),timerEpoch:a.record.timerEpoch+1,revision:a.record.revision+1},p());},getRemaining(t){let c=f.get(t);return c?d(c):0},getToasts:()=>v,getHistory:()=>g,clear(){for(let t of f.values())t.exitHandle?.(),t.timer.cancel();f.clear(),s=[],v=[],p();},clearHistory(){g=[],p();},subscribe(t){return y.add(t),()=>{y.delete(t);}}};return I}var ae=z;function _(e){let i=e,o=new Set,u=false,n=()=>{u=false;let s=i;o.forEach(v=>{try{v(s);}catch(g){console.error(g);}});},f=s=>{if(s){n();return}u||(u=true,typeof queueMicrotask=="function"?queueMicrotask(n):Promise.resolve().then(n));};return {getSnapshot:()=>i,setState:(s,v=false)=>{let g=typeof s=="function"?s(i):s;Object.is(g,i)||(i=g,f(v));},subscribe:s=>{if(o.add(s),s.length>0)try{s(i);}catch(v){console.error(v);}return ()=>{o.delete(s);}}}}var de=(e,i,o)=>o??(i||e==="error"||e==="warning"?"assertive":"polite"),le=(e,i,o)=>o??(i||e==="error"?"alert":"status"),ce=e=>!e.input&&(e.tone==="danger"||e.tone==="warning")?"alertdialog":"dialog",ue=e=>e.focusOn??(e.input!==void 0?"input":e.tone==="danger"&&e.cancelButton?.show!==false?"cancel":"confirm"),fe=e=>({confirmLabel:e.confirmButton?.label??"OK",denyLabel:e.denyButton?.label??"No",cancelLabel:e.cancelButton?.label??"Cancel"});function X(e){return typeof e=="string"?{title:e}:e}function pe(e){return e instanceof Error?e.message:String(e)}function $(e,i,o,u={}){let n;try{n=typeof i=="function"?i():i;}catch(p){n=Promise.reject(p);}let{id:f,...s}=u,v=X(o.loading),g=e.add({...s,id:f,...v,type:"loading",duration:0}),y=(p,x,l)=>{let d=typeof o.description=="function"?o.description(p==="success"?{status:p,value:l}:{status:p,error:l}):o.description;e.update(g,{duration:s.duration??e.config.get().duration,...X(x),type:p,...d!==void 0?{description:d}:{},resetTimer:true});};return n.then(p=>{o.success===void 0?e.dismiss(g):y("success",typeof o.success=="function"?o.success(p):o.success,p);}).catch(p=>{y("error",o.error===void 0?pe(p):typeof o.error=="function"?o.error(p):o.error,p);}).finally(()=>{try{o.finally?.();}catch(p){console.error(p);}}),{id:g,unwrap:()=>n}}function Z(e){return e instanceof Error?e.message:typeof e=="string"?e:String(e)}function j(e=L){let i=0,o,u=[],n=_(0),f=()=>{n.setState(g=>g+1,true);},s=()=>{o==null&&u.length!==0&&(u.sort((g,y)=>y.priority!==g.priority?y.priority-g.priority:g.id-y.id),o=u.shift(),o&&(f(),o.controller.opened()));};return {clock:e,open:g=>{i+=1;let y=i,p=g.priority??0,x,l=new Promise(r=>{x=r;}),d={options:{...g},loading:null,error:void 0,open:true,revision:0},h=new Set,C=()=>{for(let r of [...h])try{r();}catch(D){console.error(D);}},S,m=()=>d.options.inputValue,k=false,b=r=>{d={...d,...r,revision:d.revision+1},C();},R=()=>{S?.cancel(),d={...d,open:false,revision:d.revision+1},C(),o?.id===y&&(o=void 0,f(),s());},I=r=>{if(!k){k=true;try{d.options.willClose?.(t,r);}catch(D){console.error(D);}R(),x(r);}},t={close(r){I({isConfirmed:r?.isConfirmed??false,isDenied:r?.isDenied??false,isDismissed:r?.isDismissed??true,value:r?.value,dismiss:r?.dismiss??"close"});},update(r){k||b({options:{...d.options,...r}});},setLoading(r){b({loading:r===true?"confirm":r===false?null:r});},showError(r){b({error:r??void 0});},timer:{pause:()=>S?.pause("manual"),resume:()=>S?.resume("manual"),add:r=>S?.add(r),remaining:()=>S?.remaining()??0,paused:()=>S?.isPaused()??false},result:l},c={handle:t,getState:()=>d,subscribe(r){return h.add(r),()=>{h.delete(r);}},setValueReader(r){m=r;},opened(){d.options.timer&&d.options.timer>0&&(S=M(d.options.timer,()=>{c.dismiss("timer");},e),S.start());try{d.options.didOpen?.(t);}catch(r){console.error(r);}C();},async submit(r){if(k||d.loading!==null)return;let D=r==="confirm",T=m();if(D&&d.options.validate)try{let w=await d.options.validate(T,t);if(typeof w=="string"&&w.trim()!==""){t.showError(w);return}}catch(w){t.showError(Z(w));return}t.showError(void 0);let P=D?d.options.preConfirm:d.options.preDeny;if(P){t.setLoading(r);try{let w=await P(T,t);if(w===!1){t.setLoading(!1);return}w!==void 0&&(T=w);}catch(w){t.showError(Z(w)),t.setLoading(false);return}t.setLoading(false);}I({isConfirmed:D,isDenied:!D,isDismissed:false,value:T,dismiss:void 0});},async dismiss(r){I({isConfirmed:false,isDenied:false,isDismissed:true,value:void 0,dismiss:r});}},a={id:y,options:g,priority:p,resolve:x,controller:c};return o===void 0?(o=a,c.opened()):u.push(a),f(),t},getActive:()=>o?.controller,getQueue:()=>u.map(g=>g.options),clear(){let g=[...u];u.length=0;for(let y of g)y.resolve({isConfirmed:false,isDenied:false,isDismissed:true,value:void 0,dismiss:"close"});if(o){let y=o;o=void 0,y.controller.handle.close({dismiss:"close"});}f();},subscribe:n.subscribe}}var ee=e=>e instanceof Error?e.message:String(e);function me(e){let i={...e},o=null,u,n=true,f=0,s,v=()=>i.inputValue,g=()=>{},y=new Set,p=new Promise(m=>{g=m;}),x={options:i,loading:o,error:u,open:n,revision:f},l=()=>{f+=1,x={options:i,loading:o,error:u,open:n,revision:f};for(let m of [...y])m();},d=m=>{if(!n)return;let k={isConfirmed:false,isDenied:false,isDismissed:false,value:void 0,dismiss:void 0,...m};i.willClose?.(C,k),n=false,s?.cancel(),l(),g(k);},h=m=>{s?.cancel(),s=void 0,m>0&&Number.isFinite(m)&&(s=M(m,()=>{d({isDismissed:true,dismiss:"timer"});}),s.start());},C={result:p,close(m){d(m??{isDismissed:true,dismiss:"close"});},update(m){n&&(i={...i,...m},m.timer!==void 0&&h(m.timer),l());},setLoading(m){n&&(o=m===true?"confirm":m===false?null:m,l());},showError(m){n&&(u=m??void 0,l());},timer:{pause:()=>{s?.pause(),l();},resume:()=>{s?.resume(),l();},add:m=>{s?s.add(m):h(Math.max(1,m)),l();},remaining:()=>s?.remaining()??0,paused:()=>s?!s.isRunning()&&s.remaining()>0:false}};return {handle:C,getState:()=>x,subscribe(m){return y.add(m),()=>{y.delete(m);}},setValueReader(m){v=m;},opened(){n&&(i.timer!==void 0&&h(i.timer),l(),i.didOpen?.(C));},async submit(m){if(!n||o)return;let k=v();if(u!==void 0&&(u=void 0,l()),m==="confirm"&&i.validate){o="confirm",l();let R;try{R=await i.validate(k,C);}catch(I){R=ee(I);}if(o=null,!n)return;if(typeof R=="string"&&R){u=R,l();return}l();}let b=m==="confirm"?i.preConfirm:i.preDeny;if(b){o=m,l();let R;try{R=await b(k,C);}catch(I){o=null,n&&(u=ee(I),l());return}if(o=null,!n)return;if(R===false){l();return}R!==void 0&&(k=R);}d({isConfirmed:m==="confirm",isDenied:m==="deny",value:k});},dismiss(m){return !n||o&&m!=="timer"||m==="backdrop"&&i.allowOutsideClick===false||m==="esc"&&i.allowEscape===false?false:(d({isDismissed:true,dismiss:m}),true)}}}async function K(e,i,o="Back"){let u=[],n=0,f={isConfirmed:false,isDenied:false,isDismissed:true,value:void 0,dismiss:"close"};for(;n<e.length;){let s=e[n];if(!s){n+=1;continue}let v=n>0?{...s,denyButton:{show:true,label:o,...s.denyButton}}:s,g=u[n],y=typeof g=="string"||typeof g=="number"||typeof g=="boolean"?g:v.inputValue;if(f=await i({...v,inputValue:y}),f.isConfirmed)u[n]=f.value,n+=1;else if(f.isDenied&&n>0)n-=1;else return {...f,values:u.slice(0,n),step:n}}return {...f,values:u,step:Math.max(0,e.length-1)}}function V(e){let i=u=>(n,f={})=>{let s={type:u,...f};return f.type!==void 0&&(s.type=f.type),n!==void 0&&(f.title===void 0?s.title=n:f.description===void 0&&(s.description=n)),e.add(s)},o=i();return o.success=i("success"),o.error=i("error"),o.info=i("info"),o.warning=i("warning"),o.loading=i("loading"),o.message=i("message"),o.custom=(u,n)=>e.add({...n,custom:u}),o.update=e.update,o.dismiss=e.dismiss,o.dismissAll=e.dismissAll,o.getToasts=e.getToasts,o.getHistory=e.getHistory,o.types=e.types,o.promise=(u,n,f)=>$(e,u,n,f),o}function ge(e={}){let i=e.clock??L,o=e.config??F(),u=z({config:o,clock:i}),n=V(u),f=j(i),s,v=[],g=l=>typeof l=="string"?{title:l}:{...l},y=l=>{let d=f.open(l);return s?.openDialog?s.openDialog(l,d):v.push(()=>{s?.openDialog?.(l,d);}),d.result},p={isConfirmed:false,isDenied:false,isDismissed:true,value:void 0,dismiss:"close"},x={toast:n,config:o,toastStore:u,dialogManager:f,confirm:l=>y({confirmButton:{show:true},cancelButton:{show:true},...g(l)}),alert:l=>y({confirmButton:{show:true},cancelButton:{show:false},denyButton:{show:false},...g(l)}),prompt:l=>y({input:"text",confirmButton:{show:true},cancelButton:{show:true},...g(l)}),steps(l,d="Back"){return K(l,h=>x.confirm(h),d)},sheet:l=>s?.openSheet?s.openSheet(l):new Promise(d=>{v.push(()=>s?.openSheet?void s.openSheet(l).then(d):d(p));}),bottomSheet(l){if(s?.openBottomSheet)return s.openBottomSheet(l);let d;return {body:void 0,close:h=>d?.close(h),snapTo:h=>d?.snapTo(h),update:h=>d?.update(h),result:new Promise(h=>{v.push(()=>s?.openBottomSheet?void(d=s.openBottomSheet(l)).result.then(h):h(p));})}},loading(l={}){let d=typeof l=="string"?{text:l}:l;if(s?.openLoading)return s.openLoading(d);let h,C,S=new Promise(m=>{C=m;});return v.push(()=>s?.openLoading?void(h=s.openLoading(d)).closed.then(C):C()),{update:m=>h?.update(m),close:()=>{h?.close(),C();},closed:S}},configure:l=>o.set(l),getConfig:()=>o.get(),clear(){u.clear(),f.clear(),v.length=0;},registerRenderer(l){for(s=l;v.length>0;)v.shift()?.();},getRenderer:()=>s};return x}var te,O=()=>te??(te=ge()),je={get toast(){return O().toast},get config(){return O().config},get toastStore(){return O().toastStore},get dialogManager(){return O().dialogManager},confirm:e=>O().confirm(e),alert:e=>O().alert(e),prompt:e=>O().prompt(e),steps:(e,i)=>O().steps(e,i),sheet:e=>O().sheet(e),bottomSheet:e=>O().bottomSheet(e),loading:e=>O().loading(e),configure:e=>O().configure(e),getConfig:()=>O().getConfig(),clear:()=>O().clear(),registerRenderer:e=>O().registerRenderer(e),getRenderer:()=>O().getRenderer()};function Ke(e){O().registerRenderer(e);}function qe(e={}){let i=z({config:e.config});return {store:i,toast:V(i)}}export{G as DEFAULT_CONFIG,J as MANUAL_PAUSE,F as createConfigStore,me as createDialogController,j as createDialogManager,_ as createStore,M as createTimer,V as createToastApi,qe as createToastEngine,z as createToastManager,ae as createToastStore,Q as createTypeRegistry,ge as createUI,de as decideAriaLive,fe as decideDialogLabels,ce as decideDialogRole,ue as decideFocusTarget,le as decideToastRole,L as defaultClock,W as nextId,N as normalizeId,Ke as registerRenderer,oe as resetIdCounter,ie as resolvePrecedence,$ as runPromiseToast,K as runSteps,je as ui};//# sourceMappingURL=core.js.map
2
- //# sourceMappingURL=core.js.map
1
+ function e(e="gk"){return`${e}-${++D}`}function t(t,o="gk"){return void 0!==t&&""!==t?t:e(o)}function o(){D=0}function r(e={}){let t=Object.freeze({...k,...i(e)});const o=new Set,r=()=>{o.forEach(e=>e())};return{get:()=>t,set(e){const o={...t,...i(e)};return Object.keys(o).some(e=>o[e]!==t[e])&&(t=Object.freeze(o),r()),t},reset(){t=k,r()},subscribe(e){return o.add(e),()=>{o.delete(e)}}}}function i(e){const t={};for(const o in e)void 0!==e[o]&&(t[o]=e[o]);return t}function s(e,t,o=S){let r,i,s=e,n=e,c=0,a=0,d=0;const u=new Map,l=new Set,p=()=>Number.isFinite(n)&&n>0,f=()=>a&&!u.size,m=()=>d?0:f()?Math.max(0,n-(o.now()-c)):n,g=()=>{if(!l.size)return;const e=m(),t=s>0?Math.max(0,Math.min(1,e/s)):0;for(const o of l)try{o(e,t)}catch(e){console.error(e)}},h=()=>{r?.(),i?.(),r=i=void 0},v=()=>{h(),!p()||u.size||d||(c=o.now(),r=o.setTimeout(()=>{h(),n=0,d=1,a=0,g(),t()},n),l.size&&(i=o.setInterval(g,50)))};return{start(){!d&&p()&&(a=1,u.clear(),v(),g())},pause(e="manual"){d||(u.set(e,(u.get(e)??0)+1),a&&1===u.size&&(n=Math.max(0,n-(o.now()-c)),h(),g()))},resume(e="manual"){const t=!d&&u.get(e);t&&(t>1?u.set(e,t-1):u.delete(e),f()&&p()&&(v(),g()))},clearReasons(){u.clear(),a&&p()&&v()},add(e){if(d||!Number.isFinite(n))return;const t=f();n=Math.max(1,m()+e),s=Math.max(s,n),t&&v(),g()},reset(e){d=0,n=s=e??s,f()&&(p()?v():h()),g()},cancel(){h(),l.clear(),a=0,d=1,n=0},remaining:m,elapsed:()=>Math.max(0,s-m()),isRunning:()=>f()&&!d&&p(),isPaused:()=>u.size>0,pausedReasons:()=>[...u.keys()],onTick(e){return l.add(e),f()&&!i&&(i=o.setInterval(g,50)),()=>{l.delete(e),!l.size&&i&&(i(),i=void 0)}}}}function n(){const e=new Map;return{add(t,o={}){const r="string"==typeof t?t.trim():"";if(!r)throw new TypeError("toastory: invalid type");e.set(r,o)},remove:t=>e.delete(t),get:t=>e.get(t)??O[t],list:()=>[...e.keys()]}}function c(e={}){const o=e.config??r(),i=e.clock??S,c=e.now??i.now,a=e.types??n(),d=new Map;let u=[],l=[],p=[];const f=new Set,m=()=>{l=u.map(e=>d.get(e)?.record).filter(Boolean),f.forEach(e=>e())},g=(e,t,r,i)=>{const s=o.get(),n=t.type??"default",d={...a.get(n)?.defaults,...t};d.title??(d.title=d.text1),d.description??(d.description=d.text2),d.onOpen??(d.onOpen=d.onShow),d.onClose??(d.onClose=d.onHide),!d.actions&&d.buttons&&(d.actions=d.buttons.map(e=>({label:e.label,onClick:t=>(e.onClick??e.onPress)?.({preventDefault:()=>t.preventDefault(),defaultPrevented:t.defaultPrevented}),autoDismiss:e.autoDismiss,kind:e.kind})));const u=0==d.autoHide?0:d.duration??d.visibilityTime??s.duration,l=Number.isFinite(u)&&u>0?u:0,p=d.important||"error"===n,f=c();return{...d,id:e,type:n,duration:l,position:d.position??s.position,ariaLive:d.ariaLive??(p?"assertive":"polite"),role:d.role??(p?"alert":"status"),createdAt:r?.createdAt??f,updatedAt:f,revision:(r?.revision??-1)+1,timerEpoch:r?.timerEpoch??0,count:r?.count??1,visible:r?.visible??0,dismissed:0,pausedBy:r?.pausedBy??(s.startPaused?[R]:[]),remaining:r?.remaining??(l||1/0),custom:i}},h=e=>0===e.record.duration?1/0:e.timer.remaining(),v=e=>{if(0==e.dedupe)return;if("string"==typeof e.dedupe)return e.dedupe;const t=e.title??e.text1,o=e.description??e.text2,r="string"==typeof t?t:"",i="string"==typeof o?o:"";return r||i?`${e.type??"default"}|${r}|${i}`:void 0},y=()=>{const e=o.get(),t=new Map;for(const o of u){const r=d.get(o);if(!r||r.record.dismissed)continue;const i=`${r.record.container??""}|${r.record.position}`,s=t.get(i)??0,n=!!r.record.important;s<e.maxVisible||n?(r.record.visible||(r.record={...r.record,visible:1},!r.record.pausedBy.length&&r.record.duration>0&&r.timer.start()),n||t.set(i,s+1)):r.record.visible&&(r.record={...r.record,visible:0},r.timer.pause())}},b=e=>{e.exitHandle?.(),e.timer.cancel(),d.delete(e.record.id),u=u.filter(t=>t!==e.record.id),p=[{...e.record,dismissed:1},...p].slice(0,o.get().historyLimit),y(),M(),m(),2&e.flags||(e.flags|=2,L(e.record.onClose,e.record,e.reason??"api"))},w=(e,t)=>{if(e.record.dismissed)return;if(0==e.record.dismissible&&("user"===(r=t)||"swipe"===r||"click"===r))return;var r;e.reason=t,e.record={...e.record,dismissed:1,remaining:0,revision:e.record.revision+1},e.timer.cancel(),4&e.flags||"auto"===t||(e.flags|=4,L(e.record.onDismiss,e.record,t)),y(),M(),m();const s=o.get().exitDuration;s>0&&e.record.visible?e.exitHandle=i.setTimeout(()=>b(e),s):b(e)},x=e=>{e.timer.cancel(),e.record.duration>0&&(e.timer.reset(e.record.duration),e.record.visible&&!e.record.pausedBy.length&&e.timer.start()),e.record={...e.record,timerEpoch:e.record.timerEpoch+1,remaining:h(e)}},M=()=>{for(const e of u){const t=d.get(e);!t||!t.record.visible||1&t.flags||t.record.dismissed||(t.flags|=1,L(t.record.onOpen,t.record))}},B={config:o,types:a,add(e){const o=t(e.id),r=d.get(o);if(r&&!r.record.dismissed){const{custom:t,...i}=e;return B.update(o,i),t&&(r.custom=t,r.record={...r.record,custom:t},m()),o}r&&b(r);const n=v(e);if(void 0!==n)for(const e of d.values())if(e.dedupeKey===n&&!e.record.dismissed)return e.record={...e.record,count:e.record.count+1,revision:e.record.revision+1,updatedAt:c()},x(e),m(),e.record.id;const a=((e,t)=>{const{custom:o,...r}=t,n=g(e,r,void 0,o),c={opts:r,custom:o,record:n,timer:void 0,dedupeKey:v(r),exitHandle:void 0,reason:void 0,flags:0};return c.timer=s(n.duration,()=>{8&c.flags||(c.flags|=8,L(c.record.onAutoClose,c.record)),w(c,"auto")},i),n.pausedBy.length&&c.timer.pause(),c})(o,e);return d.set(o,a),u=[...u,o],y(),m(),M(),o},update(e,t){const o=d.get(e);if(!o||o.record.dismissed)return 0;const{resetTimer:r=1,...i}=t,s={...o.opts};void 0!==i.type&&i.type!==o.record.type&&(delete s.duration,delete s.ariaLive,delete s.role,delete s.icon);let n=0;for(const e in i){const t=i[e];void 0!==t&&(o.opts[e]!==t&&(n=1),s[e]=t)}if(!n&&void 0===i.type&&void 0===i.position)return 1;o.opts=s,o.dedupeKey=v(s);const c=g(e,s,o.record,o.custom),a=c.position!==o.record.position;return o.record=c,a&&(o.record={...o.record,visible:0},y()),r||a?x(o):o.record={...o.record,remaining:h(o)},m(),M(),1},dismiss(e,t="api"){if(void 0===e)return B.dismissAll(t);const o=d.get(e);o&&w(o,t)},dismissAll(e="api"){for(const t of d.values())w(t,e)},pause(e,t){const o=void 0!==e?[d.get(e)]:d.values();for(const e of o)e&&!e.record.pausedBy.includes(t)&&(e.timer.pause(t),e.record={...e.record,pausedBy:[...e.record.pausedBy,t],remaining:h(e)});m()},resume(e,t){const o=void 0!==e?[d.get(e)]:d.values();for(const e of o){if(!e||!e.record.pausedBy.includes(t))continue;e.timer.resume(t);const o=e.record.pausedBy.filter(e=>e!==t);e.record={...e.record,pausedBy:o,remaining:h(e)},!o.length&&e.record.visible&&e.record.duration>0&&e.timer.start()}m()},extend(e,t){const o=d.get(e);o&&!o.record.dismissed&&(o.timer.add(t),o.record={...o.record,remaining:h(o),timerEpoch:o.record.timerEpoch+1,revision:o.record.revision+1},m())},getRemaining(e){const t=d.get(e);return t?h(t):0},getToasts:()=>l,getHistory:()=>p,clear(){for(const e of d.values())e.exitHandle?.(),e.timer.cancel();d.clear(),u=[],l=[],m()},clearHistory(){p=[],m()},subscribe(e){return f.add(e),()=>{f.delete(e)}}};return B}function a(e){let t=e;const o=new Set;let r=0;const i=()=>{r=0;const e=t;o.forEach(t=>{try{t(e)}catch(e){console.error(e)}})};return{getSnapshot:()=>t,setState(e,o=0){const s="function"==typeof e?e(t):e;Object.is(s,t)||(t=s,(e=>{e?i():r||(r=1,"function"==typeof queueMicrotask?queueMicrotask(i):Promise.resolve().then(i))})(o))},subscribe(e){if(o.add(e),e.length>0)try{e(t)}catch(e){console.error(e)}return()=>{o.delete(e)}}}}function d(e,t,o,r={}){let i;try{i="function"==typeof t?t():t}catch(e){i=Promise.reject(e)}const{id:s,...n}=r,c=V(o.loading),a=e.add({...n,id:s,...c,type:"loading",duration:0}),d=(t,r,i)=>{const s="function"==typeof o.description?o.description("success"===t?{status:t,value:i}:{status:t,error:i}):o.description;e.update(a,{duration:n.duration??e.config.get().duration,...V(r),type:t,...void 0!==s?{description:s}:{},resetTimer:1})};return i.then(t=>{void 0===o.success?e.dismiss(a):d("success","function"==typeof o.success?o.success(t):o.success,t)}).catch(e=>{var t;d("error",void 0===o.error?(t=e)instanceof Error?t.message:t+"":"function"==typeof o.error?o.error(e):o.error,e)}).finally(()=>{try{o.finally?.()}catch(e){console.error(e)}}),{id:a,unwrap:()=>i}}function u(e){let t,o,r={...e},i=null,n=1,c=0,a=()=>r.inputValue,d=()=>{};const u=new Set,l=new Promise(e=>{d=e});let p={options:r,loading:i,error:t,open:n,revision:c};const f=()=>{c+=1,p={options:r,loading:i,error:t,open:n,revision:c};for(const e of[...u])try{e()}catch(e){console.error(e)}},m=e=>{if(!n)return;const t={isConfirmed:0,isDenied:0,isDismissed:0,value:void 0,dismiss:void 0,...e};try{r.willClose?.(h,t)}catch(e){console.error(e)}n=0,o?.cancel(),f(),u.clear(),d(t)},g=e=>{o?.cancel(),o=void 0,e>0&&Number.isFinite(e)&&(o=s(e,()=>{m({isDismissed:1,dismiss:"timer"})}),o.start())},h={result:l,close(e){m(e??{isDismissed:1,dismiss:"close"})},update(e){n&&(r={...r,...e},void 0!==e.timer&&g(e.timer),f())},setLoading(e){n&&(i=1==e?"confirm":0==e?null:e,f())},showError(e){n&&(t=e??void 0,f())},timer:{pause(){o?.pause(),f()},resume(){o?.resume(),f()},add(e){o?o.add(e):g(Math.max(1,e)),f()},remaining:()=>o?.remaining()??0,paused:()=>o?!o.isRunning()&&o.remaining()>0:0}};return{handle:h,getState:()=>p,subscribe(e){return u.add(e),()=>{u.delete(e)}},setValueReader(e){a=e},opened(){if(n){void 0!==r.timer&&g(r.timer),f();try{r.didOpen?.(h)}catch(e){console.error(e)}}},async submit(e){if(!n||i)return;let o=a();if(void 0!==t&&(t=void 0,f()),"confirm"===e&&r.validate){let e;i="confirm",f();try{e=await r.validate(o,h)}catch(t){e=$(t)}if(i=null,!n)return;if("string"==typeof e&&e)return t=e,void f();f()}const s="confirm"===e?r.preConfirm:r.preDeny;if(s){let r;i=e,f();try{r=await s(o,h)}catch(e){return i=null,void(n&&(t=$(e),f()))}if(i=null,!n)return;if(0==r)return void f();void 0!==r&&(o=r)}m({isConfirmed:"confirm"===e,isDenied:"deny"===e,value:o})},dismiss(e){return!n||i&&"timer"!==e||"backdrop"===e&&0==r.allowOutsideClick||"esc"===e&&0==r.allowEscape?0:(m({isDismissed:1,dismiss:e}),1)}}}async function l(e,t,o="Back"){const r=[];let i=0,s={isConfirmed:0,isDenied:0,isDismissed:1,value:void 0,dismiss:"close"};for(;i<e.length;){const n=e[i];if(!n){i+=1;continue}const c=i>0?{...n,denyButton:{show:1,label:o,...n.denyButton}}:n,a=r[i],d="string"==typeof a||"number"==typeof a||"boolean"==typeof a?a:c.inputValue;if(s=await t({...c,inputValue:d}),s.isConfirmed)r[i]=s.value,i+=1;else{if(!s.isDenied||0>=i)return{...s,values:r.slice(0,i),step:i};i-=1}}return{...s,values:r,step:Math.max(0,e.length-1)}}function p(e=S){let t,o=0;const r=[],i=a(0),s=()=>{i.setState(e=>e+1,1)};return{clock:e,open(e){o+=1;const i=o,n=e.priority??0,c=u(e),a={handle:c.handle,getState:c.getState,subscribe:c.subscribe,setValueReader:c.setValueReader,opened:c.opened,submit:c.submit,async dismiss(e){c.dismiss(e)}};c.subscribe(()=>{c.getState().open||t?.id===i&&(t=void 0,s(),!t&&r.length&&(r.sort((e,t)=>t.priority!==e.priority?t.priority-e.priority:e.id-t.id),t=r.shift(),t&&(s(),t.controller.opened())))});const d={id:i,options:e,priority:n,resolve(){},controller:a};return t?r.push(d):(t=d,a.opened()),c.handle},getActive:()=>t?.controller,getQueue:()=>r.map(e=>e.options),clear(){if(t){const e=t;t=void 0,e.controller.handle.close({isDismissed:1,dismiss:"close"})}for(const e of r)e.controller.handle.close({isDismissed:1,dismiss:"close"});r.length=0,s()},subscribe:i.subscribe}}function f(e){const t=t=>(o,r={})=>{const i={type:t,...r};return void 0!==r.type&&(i.type=r.type),void 0!==o&&(void 0===r.title?i.title=o:void 0===r.description&&(i.description=o)),e.add(i)};return Object.assign(t(),{success:t("success"),error:t("error"),info:t("info"),warning:t("warning"),loading:t("loading"),message:t("message"),custom:(t,o)=>e.add({...o,custom:t}),update:e.update,dismiss:e.dismiss,dismissAll:e.dismissAll,getToasts:e.getToasts,getHistory:e.getHistory,types:e.types,promise:(t,o,r)=>d(e,t,o,r)})}function m(e,t,o,r){const i=Math.sqrt(t/r),s=o/(2*Math.sqrt(t*r));if(1>s){const t=i*Math.sqrt(1-s*s);return 1-Math.exp(-s*i*e)*(Math.cos(t*e)+s*i/t*Math.sin(t*e))}if(1===s)return 1-Math.exp(-i*e)*(1+i*e);const n=i*Math.sqrt(s*s-1),c=-s*i+n,a=-s*i-n;return 1-(a*Math.exp(c*e)-c*Math.exp(a*e))/(a-c)}function g(e={}){const{stiffness:t=170,damping:o=18,mass:r=1}=e,i=e=>m(e,t,o,r),s=1/120;let n=0;for(let e=0;5>=e;e+=s)Math.abs(1-i(e))>.001&&(n=e);n=Math.max(n+s,.05);const c=Math.max(2,Math.ceil(60*n)),a=[];for(let e=0;c>=e;e++)a.push(+i(e/c*n).toFixed(4)+"");return a[c]="1",{easing:`linear(${a.join(",")})`,duration:Math.round(1e3*n)}}function h(){return"undefined"!=typeof globalThis&&"requestAnimationFrame"in globalThis?globalThis.requestAnimationFrame:void 0}function v(e){const t=Math.min(.1,(e-N)/1e3);if(N=e,M){for(const e of M)e(t)||M.delete(e);const e=h();F=M.size&&e?e(v):0}else F=0}function y(e){const t=h();t&&((M??(M=new Set)).add(e),F||(N="undefined"!=typeof performance?performance.now():Date.now(),F=t(v)))}function b(e={}){const t=e.clock??S,o=e.config??r(),i=c({config:o,clock:t}),s=f(i),n=p(t);let a;const d=[],u=e=>"string"==typeof e?{title:e}:{...e},m=e=>{const t=n.open(e);return a?.openDialog?a.openDialog(e,t):d.push(()=>{a?.openDialog?.(e,t)}),t.result},g={isConfirmed:0,isDenied:0,isDismissed:1,value:void 0,dismiss:"close"},h={toast:s,config:o,toastStore:i,dialogManager:n,confirm:e=>m({confirmButton:{show:1},cancelButton:{show:1},...u(e)}),alert:e=>m({confirmButton:{show:1},cancelButton:{show:0},denyButton:{show:0},...u(e)}),prompt:e=>m({input:"text",confirmButton:{show:1},cancelButton:{show:1},...u(e)}),steps:(e,t="Back")=>l(e,e=>h.confirm(e),t),sheet:e=>a?.openSheet?a.openSheet(e):new Promise(t=>{d.push(()=>a?.openSheet?void a.openSheet(e).then(t):t(g))}),bottomSheet(e){if(a?.openBottomSheet)return a.openBottomSheet(e);let t;return{body:void 0,close:e=>t?.close(e),snapTo:e=>t?.snapTo(e),update:e=>t?.update(e),result:new Promise(o=>{d.push(()=>a?.openBottomSheet?void(t=a.openBottomSheet(e)).result.then(o):o(g))})}},loading(e={}){const t="string"==typeof e?{text:e}:e;if(a?.openLoading)return a.openLoading(t);let o,r;const i=new Promise(e=>{r=e});return d.push(()=>a?.openLoading?void(o=a.openLoading(t)).closed.then(r):r()),{update:e=>o?.update(e),close(){o?.close(),r()},closed:i}},configure:e=>o.set(e),getConfig:()=>o.get(),clear(){i.clear(),n.clear(),d.length=0},registerRenderer(e){for(a=e;d.length;)d.shift()?.()},getRenderer:()=>a};return h}function w(e){I().registerRenderer(e)}function x(e={}){const t=c({config:e.config});return{store:t,toast:f(t)}}var M,B,S={now:()=>Date.now(),setTimeout(e,t){const o=setTimeout(e,t);return()=>clearTimeout(o)},setInterval(e,t){const o=setInterval(e,t);return()=>clearInterval(o)}},D=0,k=Object.freeze({theme:"ios-glass",mode:"auto",position:"top-right",duration:4e3,maxVisible:8,gap:12,stack:1,dir:"auto",hotkey:"alt+t",pauseOn:["hover","focus","hidden"],shadow:1,closeButton:0,richColors:0,invert:0,swipe:1,dragThreshold:45,progress:0,closeOnClick:0,exitDuration:250,historyLimit:100,regionLabel:"Notifications",closeLabel:"Close notification",startPaused:0,newestOnTop:1,dedupeWindow:500,sound:0,soundVolume:.5,container:void 0}),C=(e,t,o,r)=>e??t??o??r,T=(e,t="polite")=>({color:`var(--gk-${e})`,ariaLive:t}),O={success:T("success"),error:T("error","assertive"),warning:T("warning","assertive"),info:T("info"),loading:{...T("info"),defaults:{duration:0,dismissible:0}},message:T("fg")},L=(e,t,o)=>{try{e?.(t,o)}catch(e){console.error(e)}},R="manual",E=c,A=(e,t,o)=>o??(t||"error"===e||"warning"===e?"assertive":"polite"),P=(e,t,o)=>o??(t||"error"===e?"alert":"status"),z=e=>e.input||"danger"!==e.tone&&"warning"!==e.tone?"dialog":"alertdialog",H=e=>e.focusOn??(void 0!==e.input?"input":"danger"===e.tone&&0!=e.cancelButton?.show?"cancel":"confirm"),j=e=>({confirmLabel:e.confirmButton?.label??"OK",denyLabel:e.denyButton?.label??"No",cancelLabel:e.cancelButton?.label??"Cancel"}),V=e=>"string"==typeof e?{title:e}:e,$=e=>e instanceof Error?e.message:e+"",q=class{constructor(e,t={}){this.x=e,this.v=0,this.to=e,this.cfg={stiffness:170,damping:18,mass:1,...t}}tune(e){Object.assign(this.cfg,e)}step(e){const{stiffness:t,damping:o,mass:r}=this.cfg,i=1/240;for(let s=0;e>s;s+=i)this.v+=(-t*(this.x-this.to)-o*this.v)/r*i,this.x+=this.v*i;return.05>Math.abs(this.v)&&.05>Math.abs(this.x-this.to)?(this.x=this.to,this.v=0,0):1}},F=0,N=0,I=()=>B??(B=b()),K={get toast(){return I().toast},get config(){return I().config},get toastStore(){return I().toastStore},get dialogManager(){return I().dialogManager},confirm:e=>I().confirm(e),alert:e=>I().alert(e),prompt:e=>I().prompt(e),steps:(e,t)=>I().steps(e,t),sheet:e=>I().sheet(e),bottomSheet:e=>I().bottomSheet(e),loading:e=>I().loading(e),configure:e=>I().configure(e),getConfig:()=>I().getConfig(),clear:()=>I().clear(),registerRenderer:e=>I().registerRenderer(e),getRenderer:()=>I().getRenderer()};export{k as DEFAULT_CONFIG,R as MANUAL_PAUSE,q as Spring,r as createConfigStore,u as createDialogController,p as createDialogManager,a as createStore,s as createTimer,f as createToastApi,x as createToastEngine,c as createToastManager,E as createToastStore,n as createTypeRegistry,b as createUI,A as decideAriaLive,j as decideDialogLabels,z as decideDialogRole,H as decideFocusTarget,P as decideToastRole,S as defaultClock,e as nextId,t as normalizeId,w as registerRenderer,o as resetIdCounter,C as resolvePrecedence,d as runPromiseToast,y as runSpringTask,l as runSteps,g as springEasing,m as springPosition,K as ui};//# sourceMappingURL=core.js.map