toastory 0.2.0 → 0.3.1

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 (118) hide show
  1. package/dist/angular.cjs +1 -1
  2. package/dist/angular.cjs.map +1 -1
  3. package/dist/angular.d.cts +4 -4
  4. package/dist/angular.d.ts +4 -4
  5. package/dist/angular.js +1 -1
  6. package/dist/angular.js.map +1 -1
  7. package/dist/core.cjs +1 -1
  8. package/dist/core.cjs.map +1 -1
  9. package/dist/core.d.cts +26 -5
  10. package/dist/core.d.ts +26 -5
  11. package/dist/core.js +1 -1
  12. package/dist/core.js.map +1 -1
  13. package/dist/{dialog-DosUuJM_.d.cts → dialog-CGdmRrqe.d.cts} +1 -1
  14. package/dist/{dialog-DAgL0wyv.d.ts → dialog-DE91Aj5C.d.ts} +1 -1
  15. package/dist/index.cjs +1 -1
  16. package/dist/index.cjs.map +1 -1
  17. package/dist/index.d.cts +6 -6
  18. package/dist/index.d.ts +6 -6
  19. package/dist/index.js +1 -1
  20. package/dist/index.js.map +1 -1
  21. package/dist/native.cjs +1 -1
  22. package/dist/native.cjs.map +1 -1
  23. package/dist/native.d.cts +43 -5
  24. package/dist/native.d.ts +43 -5
  25. package/dist/native.js +1 -1
  26. package/dist/native.js.map +1 -1
  27. package/dist/react.cjs +1 -1
  28. package/dist/react.cjs.map +1 -1
  29. package/dist/react.d.cts +5 -5
  30. package/dist/react.d.ts +5 -5
  31. package/dist/react.js +1 -1
  32. package/dist/react.js.map +1 -1
  33. package/dist/{sound-CedBML6j.d.ts → sound-Bl4jDTol.d.cts} +1 -5
  34. package/dist/{sound-DLGxVNC0.d.cts → sound-De7sjFsb.d.ts} +1 -5
  35. package/dist/svelte.cjs +1 -1
  36. package/dist/svelte.cjs.map +1 -1
  37. package/dist/svelte.d.cts +6 -4
  38. package/dist/svelte.d.ts +6 -4
  39. package/dist/svelte.js +1 -1
  40. package/dist/svelte.js.map +1 -1
  41. package/dist/themes/_base.css +1 -1
  42. package/dist/themes/_base.dialog.css +1 -1
  43. package/dist/themes/_base.toast.css +1 -1
  44. package/dist/themes/all.css +1 -1
  45. package/dist/themes/aurora.css +1 -1
  46. package/dist/themes/aurora.dialog.css +1 -1
  47. package/dist/themes/aurora.toast.css +1 -1
  48. package/dist/themes/basic.css +1 -1
  49. package/dist/themes/basic.dialog.css +1 -1
  50. package/dist/themes/basic.toast.css +1 -1
  51. package/dist/themes/brutal.css +1 -1
  52. package/dist/themes/brutal.dialog.css +1 -1
  53. package/dist/themes/brutal.toast.css +1 -1
  54. package/dist/themes/classic-bar.css +1 -1
  55. package/dist/themes/classic-bar.dialog.css +1 -1
  56. package/dist/themes/classic-bar.toast.css +1 -1
  57. package/dist/themes/classic-stack.css +1 -1
  58. package/dist/themes/classic-stack.dialog.css +1 -1
  59. package/dist/themes/classic-stack.toast.css +1 -1
  60. package/dist/themes/dialogs.css +1 -1
  61. package/dist/themes/dialogs.dialog.css +1 -1
  62. package/dist/themes/dialogs.toast.css +1 -1
  63. package/dist/themes/essentials.css +1 -1
  64. package/dist/themes/essentials.dialog.css +1 -1
  65. package/dist/themes/essentials.toast.css +1 -1
  66. package/dist/themes/flat.css +1 -1
  67. package/dist/themes/flat.dialog.css +1 -1
  68. package/dist/themes/flat.toast.css +1 -1
  69. package/dist/themes/gradient-strip.css +1 -1
  70. package/dist/themes/gradient-strip.dialog.css +1 -1
  71. package/dist/themes/gradient-strip.toast.css +1 -1
  72. package/dist/themes/gradient.css +1 -1
  73. package/dist/themes/gradient.dialog.css +1 -1
  74. package/dist/themes/gradient.toast.css +1 -1
  75. package/dist/themes/ios-glass.css +1 -1
  76. package/dist/themes/ios-glass.dialog.css +1 -1
  77. package/dist/themes/ios-glass.toast.css +1 -1
  78. package/dist/themes/liquid-glass.css +1 -1
  79. package/dist/themes/liquid-glass.dialog.css +1 -1
  80. package/dist/themes/liquid-glass.toast.css +1 -1
  81. package/dist/themes/material.css +1 -1
  82. package/dist/themes/material.dialog.css +1 -1
  83. package/dist/themes/material.toast.css +1 -1
  84. package/dist/themes/minimal.css +1 -1
  85. package/dist/themes/minimal.dialog.css +1 -1
  86. package/dist/themes/minimal.toast.css +1 -1
  87. package/dist/themes/neon.css +1 -1
  88. package/dist/themes/neon.dialog.css +1 -1
  89. package/dist/themes/neon.toast.css +1 -1
  90. package/dist/themes/outline.css +1 -1
  91. package/dist/themes/outline.dialog.css +1 -1
  92. package/dist/themes/outline.toast.css +1 -1
  93. package/dist/themes/pastel.css +1 -1
  94. package/dist/themes/pastel.dialog.css +1 -1
  95. package/dist/themes/pastel.toast.css +1 -1
  96. package/dist/themes/pill.css +1 -1
  97. package/dist/themes/pill.dialog.css +1 -1
  98. package/dist/themes/pill.toast.css +1 -1
  99. package/dist/themes/ripple.css +1 -1
  100. package/dist/themes/ripple.dialog.css +1 -1
  101. package/dist/themes/ripple.toast.css +1 -1
  102. package/dist/themes/showcase.css +1 -1
  103. package/dist/themes/showcase.dialog.css +1 -1
  104. package/dist/themes/showcase.toast.css +1 -1
  105. package/dist/themes/sweet.css +1 -1
  106. package/dist/themes/sweet.dialog.css +1 -1
  107. package/dist/themes/sweet.toast.css +1 -1
  108. package/dist/{toast-api-Bwjc_Kxh.d.cts → toast-api-C_kZeRfH.d.cts} +67 -5
  109. package/dist/{toast-api-Bwjc_Kxh.d.ts → toast-api-C_kZeRfH.d.ts} +67 -5
  110. package/dist/{ui-Bdu8EJ3m.d.cts → ui-CBx21doV.d.cts} +2 -2
  111. package/dist/{ui-DJXC9cko.d.ts → ui-gpLF_9o-.d.ts} +2 -2
  112. package/dist/vue.cjs +1 -1
  113. package/dist/vue.cjs.map +1 -1
  114. package/dist/vue.d.cts +5 -5
  115. package/dist/vue.d.ts +5 -5
  116. package/dist/vue.js +1 -1
  117. package/dist/vue.js.map +1 -1
  118. package/package.json +1 -1
package/dist/native.d.cts CHANGED
@@ -1,9 +1,42 @@
1
1
  import React from 'react';
2
- import { GlazeConfig, ToastApi, ToastRecord } from './core.cjs';
3
- export { S as SoundNote, c as chime, p as playSound } from './sound-DLGxVNC0.cjs';
2
+ import { ToastApi, GlazeConfig, ToastRecord } from './core.cjs';
3
+ export { S as SoundNote, c as chime, p as playSound } from './sound-Bl4jDTol.cjs';
4
4
 
5
5
  /** Native toast API. */
6
6
  declare const toast: ToastApi;
7
+ interface ToastShowParams {
8
+ type?: 'success' | 'error' | 'info' | 'warning' | 'loading' | string;
9
+ text1?: string | React.ReactNode;
10
+ text2?: string | React.ReactNode;
11
+ position?: 'top' | 'bottom' | 'center' | string;
12
+ autoHide?: boolean;
13
+ visibilityTime?: number;
14
+ topOffset?: number;
15
+ bottomOffset?: number;
16
+ keyboardOffset?: number;
17
+ onShow?: () => void;
18
+ onHide?: () => void;
19
+ onPress?: () => void;
20
+ props?: Record<string, unknown>;
21
+ id?: string | number;
22
+ swipeable?: boolean;
23
+ image?: string;
24
+ closeButton?: boolean;
25
+ closeText?: string;
26
+ discardText?: string;
27
+ [key: string]: unknown;
28
+ }
29
+ /**
30
+ * Full react-native-toast-message v2.5.2 drop-in compatible interface.
31
+ * Allows instant migration from react-native-toast-message with zero code changes.
32
+ */
33
+ declare const Toast: ToastApi & {
34
+ show(params: ToastShowParams | string): string | number;
35
+ hide(id?: string | number): void;
36
+ setRef(ref: unknown): void;
37
+ getRef(): unknown;
38
+ };
39
+
7
40
  /** Configuration function for React Native. */
8
41
  declare function configure(patch: Partial<GlazeConfig>): Readonly<GlazeConfig>;
9
42
  /** Resets the native engine for tests. */
@@ -41,6 +74,12 @@ interface NativeToasterProps {
41
74
  position?: 'top' | 'bottom' | 'center' | 'middle' | 'top-left' | 'top-center' | 'top-right' | 'bottom-left' | 'bottom-center' | 'bottom-right';
42
75
  /** Optional top/bottom inset offset. */
43
76
  offset?: number;
77
+ /** Distance in pixels from top screen boundary (react-native-toast-message compatible). */
78
+ topOffset?: number;
79
+ /** Distance in pixels from bottom screen boundary (react-native-toast-message compatible). */
80
+ bottomOffset?: number;
81
+ /** Distance in pixels above soft keyboard (react-native-toast-message compatible). */
82
+ keyboardOffset?: number;
44
83
  /** Gap between stacked toasts in pixels. Defaults to 8. */
45
84
  gap?: number;
46
85
  /** Maximum number of visible toasts. Defaults to 4. */
@@ -73,11 +112,10 @@ declare function GlazeProvider({ children }: GlazeProviderProps): React.JSX.Elem
73
112
  */
74
113
  declare function Toaster(props: NativeToasterProps): React.JSX.Element | null;
75
114
  /** React Native hook for reactive toast state. */
76
- /** React Native hook for reactive toast state. */
77
115
  declare function useNativeToast(): {
78
116
  toast: ToastApi;
79
117
  toasts: readonly ToastRecord[];
80
118
  };
81
119
 
82
- export { GlazeProvider, Toaster, configure, nativeSpring, nativeTiming, resetNativeEngine, toast, ui, useNativeToast };
83
- export type { GlazeProviderProps, NativeToasterProps };
120
+ export { GlazeProvider, Toast, Toaster, configure, Toast as default, nativeSpring, nativeTiming, resetNativeEngine, toast, ui, useNativeToast };
121
+ export type { GlazeProviderProps, NativeToasterProps, ToastShowParams };
package/dist/native.d.ts CHANGED
@@ -1,9 +1,42 @@
1
1
  import React from 'react';
2
- import { GlazeConfig, ToastApi, ToastRecord } from './core.js';
3
- export { S as SoundNote, c as chime, p as playSound } from './sound-CedBML6j.js';
2
+ import { ToastApi, GlazeConfig, ToastRecord } from './core.js';
3
+ export { S as SoundNote, c as chime, p as playSound } from './sound-De7sjFsb.js';
4
4
 
5
5
  /** Native toast API. */
6
6
  declare const toast: ToastApi;
7
+ interface ToastShowParams {
8
+ type?: 'success' | 'error' | 'info' | 'warning' | 'loading' | string;
9
+ text1?: string | React.ReactNode;
10
+ text2?: string | React.ReactNode;
11
+ position?: 'top' | 'bottom' | 'center' | string;
12
+ autoHide?: boolean;
13
+ visibilityTime?: number;
14
+ topOffset?: number;
15
+ bottomOffset?: number;
16
+ keyboardOffset?: number;
17
+ onShow?: () => void;
18
+ onHide?: () => void;
19
+ onPress?: () => void;
20
+ props?: Record<string, unknown>;
21
+ id?: string | number;
22
+ swipeable?: boolean;
23
+ image?: string;
24
+ closeButton?: boolean;
25
+ closeText?: string;
26
+ discardText?: string;
27
+ [key: string]: unknown;
28
+ }
29
+ /**
30
+ * Full react-native-toast-message v2.5.2 drop-in compatible interface.
31
+ * Allows instant migration from react-native-toast-message with zero code changes.
32
+ */
33
+ declare const Toast: ToastApi & {
34
+ show(params: ToastShowParams | string): string | number;
35
+ hide(id?: string | number): void;
36
+ setRef(ref: unknown): void;
37
+ getRef(): unknown;
38
+ };
39
+
7
40
  /** Configuration function for React Native. */
8
41
  declare function configure(patch: Partial<GlazeConfig>): Readonly<GlazeConfig>;
9
42
  /** Resets the native engine for tests. */
@@ -41,6 +74,12 @@ interface NativeToasterProps {
41
74
  position?: 'top' | 'bottom' | 'center' | 'middle' | 'top-left' | 'top-center' | 'top-right' | 'bottom-left' | 'bottom-center' | 'bottom-right';
42
75
  /** Optional top/bottom inset offset. */
43
76
  offset?: number;
77
+ /** Distance in pixels from top screen boundary (react-native-toast-message compatible). */
78
+ topOffset?: number;
79
+ /** Distance in pixels from bottom screen boundary (react-native-toast-message compatible). */
80
+ bottomOffset?: number;
81
+ /** Distance in pixels above soft keyboard (react-native-toast-message compatible). */
82
+ keyboardOffset?: number;
44
83
  /** Gap between stacked toasts in pixels. Defaults to 8. */
45
84
  gap?: number;
46
85
  /** Maximum number of visible toasts. Defaults to 4. */
@@ -73,11 +112,10 @@ declare function GlazeProvider({ children }: GlazeProviderProps): React.JSX.Elem
73
112
  */
74
113
  declare function Toaster(props: NativeToasterProps): React.JSX.Element | null;
75
114
  /** React Native hook for reactive toast state. */
76
- /** React Native hook for reactive toast state. */
77
115
  declare function useNativeToast(): {
78
116
  toast: ToastApi;
79
117
  toasts: readonly ToastRecord[];
80
118
  };
81
119
 
82
- export { GlazeProvider, Toaster, configure, nativeSpring, nativeTiming, resetNativeEngine, toast, ui, useNativeToast };
83
- export type { GlazeProviderProps, NativeToasterProps };
120
+ export { GlazeProvider, Toast, Toaster, configure, Toast as default, nativeSpring, nativeTiming, resetNativeEngine, toast, ui, useNativeToast };
121
+ export type { GlazeProviderProps, NativeToasterProps, ToastShowParams };
package/dist/native.js CHANGED
@@ -1 +1 @@
1
- import{useState as e,useEffect as t,useMemo as r}from"react";import{jsx as o,Fragment as i,jsxs as s}from"react/jsx-runtime";var n={now:()=>Date.now(),setTimeout:(e,t)=>{const r=setTimeout(e,t);return()=>clearTimeout(r)},setInterval:(e,t)=>{const r=setInterval(e,t);return()=>clearInterval(r)}},a=0;function c(e,t="gk"){return void 0!==e&&""!==e?e:function(e="gk"){return`${e}-${++a}`}(t)}var d=Object.freeze({theme:"ios-glass",mode:"auto",position:"top-right",duration:4e3,maxVisible:8,gap:12,stack:!0,dir:"auto",hotkey:"alt+t",pauseOn:["hover","focus","hidden"],shadow:!0,closeButton:!1,richColors:!1,invert:!1,swipe:!0,dragThreshold:45,progress:!1,closeOnClick:!1,exitDuration:250,historyLimit:100,regionLabel:"Notifications",closeLabel:"Close notification",startPaused:!1,newestOnTop:!0,dedupeWindow:500,container:void 0,sound:!1,soundVolume:.5});function u(e){const t={};for(const r in e)void 0!==e[r]&&(t[r]=e[r]);return t}var l=(e,t="polite")=>({color:`var(--gk-${e})`,ariaLive:t}),p={success:l("success"),error:l("error","assertive"),warning:l("warning","assertive"),info:l("info"),loading:{...l("info"),defaults:{duration:0,dismissible:!1}},message:l("fg")};var f,m=(e,...t)=>{try{e?.(...t)}catch(e){console.error(e)}},g={loading:{duration:0}};function y(e={}){const t=e.config??function(e={}){let t=Object.freeze({...d,...u(e)});const r=new Set,o=()=>{r.forEach(e=>e())};return{get:()=>t,set:e=>(t=Object.freeze({...t,...u(e)}),o(),t),reset(){t=d,o()},subscribe:e=>(r.add(e),()=>{r.delete(e)})}}(),r=e.clock??n,o=e.now??r.now,i=e.types??function(){const e=new Map;return{add(t,r={}){const o="string"==typeof t?t.trim():"";if(!o)throw new TypeError("toastory: invalid type");e.set(o,r)},remove:t=>e.delete(t),get:t=>e.get(t)??p[t],list:()=>[...e.keys()]}}(),s=new Map;let a=[],l=[],f=[];const y=new Set,v=()=>{l=a.map(e=>s.get(e)?.record).filter(Boolean),y.forEach(e=>e())},h=e=>`${e.container??""}|${e.position}`,b=(e,r,s,n)=>{const a=t.get(),c=r.type??"default",d={...g[c],...i.get(c)?.defaults,...r},u=d.duration??a.duration,l=Number.isFinite(u)&&u>0?u:0,p=d.important||"error"===c,f=o();return{...d,id:e,type:c,duration:l,position:d.position??a.position,ariaLive:d.ariaLive??(p?"assertive":"polite"),role:d.role??(p?"alert":"status"),createdAt:s?.createdAt??f,updatedAt:f,revision:(s?.revision??-1)+1,timerEpoch:s?.timerEpoch??0,count:s?.count??1,visible:s?.visible??!1,dismissed:!1,pausedBy:s?.pausedBy??(a.startPaused?["manual"]:[]),remaining:s?.remaining??(l||1/0),custom:n}},w=e=>0===e.record.duration?1/0:e.timer.remaining(),x=e=>{if(!1===e.dedupe)return;if("string"==typeof e.dedupe)return e.dedupe;const t="string"==typeof e.title?e.title:"",r="string"==typeof e.description?e.description:"";return t||r?`${e.type??"default"}|${t}|${r}`:void 0},T=()=>{const e=t.get(),r=new Map;for(const t of a){const o=s.get(t);if(!o||o.record.dismissed)continue;const i=h(o.record),n=r.get(i)??0,a=!!o.record.important;n<e.maxVisible||a?(o.record.visible||(o.record={...o.record,visible:!0},!o.record.pausedBy.length&&o.record.duration>0&&o.timer.start()),a||r.set(i,n+1)):o.record.visible&&(o.record={...o.record,visible:!1},o.timer.pause())}},k=e=>{e.exitHandle?.(),e.timer.cancel(),s.delete(e.record.id),a=a.filter(t=>t!==e.record.id),f=[{...e.record,dismissed:!0},...f].slice(0,t.get().historyLimit),T(),F(),v(),e.closedFired||(e.closedFired=!0,m(e.record.onClose,e.record,e.reason??"api"))},A=(e,o)=>{if(e.record.dismissed)return;if(!1===e.record.dismissible&&("user"===(i=o)||"swipe"===i||"click"===i))return;var i;e.reason=o,e.record={...e.record,dismissed:!0,remaining:0,revision:e.record.revision+1},e.timer.cancel(),e.dismissFired||"auto"===o||(e.dismissFired=!0,m(e.record.onDismiss,e.record,o)),T(),F(),v();const s=t.get().exitDuration;s<=0||!e.record.visible?k(e):e.exitHandle=r.setTimeout(()=>k(e),s)},z=(e,t)=>{const{custom:o,...i}=t,s=b(e,i,void 0,o),a={opts:i,custom:o,record:s,timer:void 0,dedupeKey:x(i),exitHandle:void 0,reason:void 0,openedFired:!1,closedFired:!1,dismissFired:!1,autoCloseFired:!1};return a.timer=function(e,t,r=n){let o,i,s=e,a=e,c=0,d=!1,u=!1;const l=new Map,p=new Set,f=()=>Number.isFinite(a)&&a>0,m=()=>{if(0===p.size)return;const e=g(),t=s>0?Math.max(0,Math.min(1,e/s)):0;for(const r of p)try{r(e,t)}catch(e){console.error(e)}},g=()=>u?0:d&&0===l.size?Math.max(0,a-(r.now()-c)):a,y=()=>{o?.(),o=void 0,i?.(),i=void 0},v=()=>{y(),!f()||l.size>0||u||(c=r.now(),o=r.setTimeout(()=>{y(),a=0,u=!0,d=!1,m(),t()},a),p.size>0&&(i=r.setInterval(()=>{m()},50)))};return{start(){!u&&f()&&(d=!0,l.clear(),v(),m())},pause:(e="manual")=>{u||(l.set(e,(l.get(e)??0)+1),d&&1===l.size&&(a=Math.max(0,a-(r.now()-c)),y(),m()))},resume:(e="manual")=>{if(u)return;const t=l.get(e);t&&(t<=1?l.delete(e):l.set(e,t-1),d&&0===l.size&&f()&&(v(),m()))},clearReasons(){l.clear(),d&&f()&&v()},add(e){if(u||!Number.isFinite(a))return;const t=d&&0===l.size;a=Math.max(1,(t?a-(r.now()-c):a)+e),s=Math.max(s,a),t&&v(),m()},reset(e){u=!1,a=s=void 0!==e?e:s,d&&0===l.size&&(f()?v():y()),m()},cancel(){y(),d=!1,u=!0,a=0},remaining:g,elapsed:()=>Math.max(0,s-g()),isRunning:()=>d&&!u&&!l.size&&f(),isPaused:()=>l.size>0,pausedReasons:()=>[...l.keys()],onTick:e=>(p.add(e),d&&0===l.size&&!i&&(i=r.setInterval(m,50)),()=>{p.delete(e),0===p.size&&i&&(i(),i=void 0)})}}(s.duration,()=>{a.autoCloseFired||(a.autoCloseFired=!0,m(a.record.onAutoClose,a.record)),A(a,"auto")},r),s.pausedBy.length&&a.timer.pause(),a},C=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:w(e)}},F=()=>{for(const e of a){const t=s.get(e);t&&t.record.visible&&!t.openedFired&&!t.record.dismissed&&(t.openedFired=!0,m(t.record.onOpen,t.record))}},S={config:t,types:i,add(e){const t=c(e.id),r=s.get(t);if(r&&!r.record.dismissed){const{custom:o,...i}=e;return S.update(t,i),o&&(r.custom=o,r.record={...r.record,custom:o},v()),t}r&&k(r);const i=x(e);if(void 0!==i)for(const e of s.values())if(e.dedupeKey===i&&!e.record.dismissed)return e.record={...e.record,count:e.record.count+1,revision:e.record.revision+1,updatedAt:o()},C(e),v(),e.record.id;const n=z(t,e);return s.set(t,n),a=[...a,t],T(),v(),F(),t},update(e,t){const r=s.get(e);if(!r||r.record.dismissed)return!1;const{resetTimer:o=!0,...i}=t,n={...r.opts};void 0!==i.type&&i.type!==r.record.type&&(delete n.duration,delete n.ariaLive,delete n.role,delete n.icon);let a=!1;for(const e in i){const t=i[e];void 0!==t&&(r.opts[e]!==t&&(a=!0),n[e]=t)}if(!a&&void 0===i.type&&void 0===i.position)return!0;r.opts=n,r.dedupeKey=x(n);const c=b(e,n,r.record,r.custom),d=c.position!==r.record.position;return r.record=c,d&&(r.record={...r.record,visible:!1},T()),o||d?C(r):r.record={...r.record,remaining:w(r)},v(),F(),!0},dismiss(e,t="api"){if(void 0===e)return S.dismissAll(t);const r=s.get(e);r&&A(r,t)},dismissAll(e="api"){for(const t of s.values())A(t,e)},pause(e,t){const r=void 0===e?[...s.values()]:[s.get(e)].filter(e=>Boolean(e));for(const e of r)e.record.pausedBy.includes(t)||(e.timer.pause(t),e.record={...e.record,pausedBy:[...e.record.pausedBy,t],remaining:w(e)});v()},resume(e,t){const r=void 0===e?[...s.values()]:[s.get(e)].filter(e=>Boolean(e));for(const e of r){if(!e.record.pausedBy.includes(t))continue;e.timer.resume(t);const r=e.record.pausedBy.filter(e=>e!==t);e.record={...e.record,pausedBy:r,remaining:w(e)},!r.length&&e.record.visible&&e.record.duration>0&&e.timer.start()}v()},extend(e,t){const r=s.get(e);r&&!r.record.dismissed&&(r.timer.add(t),r.record={...r.record,remaining:w(r),timerEpoch:r.record.timerEpoch+1,revision:r.record.revision+1},v())},getRemaining(e){const t=s.get(e);return t?w(t):0},getToasts:()=>l,getHistory:()=>f,clear(){for(const e of s.values())e.exitHandle?.(),e.timer.cancel();s.clear(),a=[],l=[],v()},clearHistory(){f=[],v()},subscribe:e=>(y.add(e),()=>{y.delete(e)})};return S}function v(e){return"string"==typeof e?{title:e}:e}function h(e,t,r,o={}){let i;try{i="function"==typeof t?t():t}catch(e){i=Promise.reject(e)}const{id:s,...n}=o,a=v(r.loading),c=e.add({...n,id:s,...a,type:"loading",duration:0}),d=(t,o,i)=>{const s="function"==typeof r.description?r.description("success"===t?{status:t,value:i}:{status:t,error:i}):r.description;e.update(c,{duration:n.duration??e.config.get().duration,...v(o),type:t,...void 0!==s?{description:s}:{},resetTimer:!0})};return i.then(t=>{void 0===r.success?e.dismiss(c):d("success","function"==typeof r.success?r.success(t):r.success,t)}).catch(e=>{d("error",void 0===r.error?function(e){return e instanceof Error?e.message:String(e)}(e):"function"==typeof r.error?r.error(e):r.error,e)}).finally(()=>{try{r.finally?.()}catch(e){console.error(e)}}),{id:c,unwrap:()=>i}}function b(e){const t=t=>(r,o={})=>{const i={type:t,...o};return void 0!==o.type&&(i.type=o.type),void 0!==r&&(void 0===o.title?i.title=r:void 0===o.description&&(i.description=r)),e.add(i)},r=t();return r.success=t("success"),r.error=t("error"),r.info=t("info"),r.warning=t("warning"),r.loading=t("loading"),r.message=t("message"),r.custom=(t,r)=>e.add({...r,custom:t}),r.update=e.update,r.dismiss=e.dismiss,r.dismissAll=e.dismissAll,r.getToasts=e.getToasts,r.getHistory=e.getHistory,r.types=e.types,r.promise=(t,r,o)=>h(e,t,r,o),r}var w={success:[[392,0,1],[523.3,.1,1]],error:[[233.1,0,1],[185,.13,1]],warning:[[349.2,0,.8],[349.2,.16,.6]],info:[[466.2,0,.9]],ding:[[659.3,0,.9],[880,.08,1]],pop:[[440,0,.7],[880,.03,.9]],chime:[[523.3,0,.8],[659.3,.09,.85],[784,.18,1]],bell:[[587.3,0,1],[1174.6,.04,.5]],message:[[440,0,.8],[659.3,.12,.9]],bubble:[[330,0,.6],[493.9,.06,.8]]};function x(e,t,r,o,i){const s=e.currentTime+o,n=e.createOscillator(),a=e.createGain();n.frequency.value=r,a.gain.setValueAtTime(.001,s),a.gain.exponentialRampToValueAtTime(Math.max(.001,.3*i),s+.02),a.gain.exponentialRampToValueAtTime(1e-4,s+.35),n.connect(a).connect(t),n.start(s),n.stop(s+.4)}function T(e,t=.5){if(!e||"undefined"==typeof window)return;const r=!0===e?"info":String(e);if(/^(https?:|data:audio|blob:)/.test(r)){try{const e=new Audio(r);e.volume=Math.min(1,Math.max(0,t)),e.play().catch(()=>{})}catch{}return}const o=w[r];if(o)try{const e=window.AudioContext||window.webkitAudioContext;if(!e)return;if(f??(f=new e),"suspended"===f.state&&f.resume(),"closed"===f.state)return;const r=f.createGain();r.gain.value=.45*Math.min(1,Math.max(0,t)),r.connect(f.destination);for(const[e,t,i]of o)x(f,r,e,t,i)}catch{}}var k,A=T;function z(){return k||(k=function(e={}){const t=y({config:e.config});return{store:t,toast:b(t)}}()),k}var C=function(){const e=z().toast,t=e=>(t,r={})=>(async function(e){try{const t=await(import("expo-haptics"));if(!t)return;"success"===e?await t.notificationAsync(t.NotificationFeedbackType.Success):"error"===e?await t.notificationAsync(t.NotificationFeedbackType.Error):"warning"===e?await t.notificationAsync(t.NotificationFeedbackType.Warning):await t.impactAsync(t.ImpactFeedbackStyle.Light)}catch{}}(r.type??"default"),e(t,r)),r=t(e);return r.success=t(e.success),r.error=t(e.error),r.info=t(e.info),r.warning=t(e.warning),r.loading=t(e.loading),r.message=t(e.message),r.promise=e.promise,r.custom=e.custom,r.update=e.update,r.dismiss=e.dismiss,r.dismissAll=e.dismissAll,r.getToasts=e.getToasts,r.getHistory=e.getHistory,Object.defineProperty(r,"types",{value:e.types,enumerable:!0}),r}();function F(e){return z().store.config.set(e)}function S(){k&&(k.store.clear(),k.store.clearHistory(),k.store.config.reset())}var B={toast:C,configure:F,reset:S},M={glide:{damping:32,stiffness:170,mass:1},snappy:{damping:24,stiffness:280,mass:.8}},E={normal:{duration:300},exit:{duration:200}};function H({children:e}){return o(i,{children:e})}function I(i){const[n,a]=e([]);t(()=>{const e=z();a(e.store.getToasts());const t=e.store.subscribe(()=>{a(e.store.getToasts())});return()=>t()},[]);const c=r(()=>n.filter(e=>e.visible),[n]);if(0===c.length)return null;const d=i.position??"top-center",u=d.startsWith("bottom"),l="center"===d||"middle"===d,p=d.endsWith("left"),f=d.endsWith("right"),m=u?{bottom:i.offset??50}:l?{top:"50%",transform:"translateY(-50%)"}:{top:i.offset??50},g=p?{alignItems:"flex-start"}:f?{alignItems:"flex-end"}:{alignItems:"center"},y=i.visibleToasts??4,v=c.slice(0,y);return o("div",{style:{position:"absolute",...m,...g,left:16,right:16,zIndex:99999,display:"flex",flexDirection:"column",gap:i.gap??8,...i.style},children:v.map(e=>s("div",{style:{backgroundColor:"rgba(28, 28, 30, 0.88)",padding:14,borderRadius:16,minWidth:200,maxWidth:"100%",boxShadow:"0 8px 24px rgba(0, 0, 0, 0.25)",display:"flex",flexDirection:"column",gap:4,position:"relative",...i.toastStyle},children:[i.closeButton||e.closeButton?o("button",{type:"button",onClick:()=>z().toast.dismiss(e.id),"aria-label":"Close notification",style:{position:"absolute",top:8,right:10,background:"transparent",border:"none",color:"rgba(255,255,255,0.6)",cursor:"pointer",fontSize:16,padding:2,lineHeight:1},children:"×"}):null,e.badge?o("div",{style:{fontSize:11,fontWeight:"600",color:"#38bdf8",textTransform:"uppercase",letterSpacing:"0.04em"},children:"string"==typeof e.badge?e.badge:e.badge.label??""}):null,e.title?o("div",{style:{color:"#fff",fontWeight:"600",fontSize:15},children:String(e.title)}):null,e.description?o("div",{style:{color:"#aaa",fontSize:13,marginTop:2},children:String(e.description)}):null,void 0!==e.progressValue?o("div",{style:{height:3,backgroundColor:"rgba(255,255,255,0.15)",borderRadius:3,marginTop:6,overflow:"hidden"},children:o("div",{style:{height:"100%",width:`${Math.round(100*e.progressValue)}%`,backgroundColor:"#38bdf8"}})}):null,e.actions&&e.actions.length>0?o("div",{style:{display:"flex",gap:8,marginTop:8,justifyContent:"flex-end"},children:e.actions.map((e,t)=>o("button",{type:"button",onClick:e.onClick?t=>e.onClick?.(t.nativeEvent):void 0,style:{fontSize:12,fontWeight:"600",padding:"4px 10px",borderRadius:8,border:"none",backgroundColor:"rgba(255, 255, 255, 0.12)",color:"#fff",cursor:"pointer"},children:e.label??e.text??"Action"},t))}):null]},String(e.id)))})}function W(){const[r,o]=e([]);return t(()=>{const e=z();return o(e.store.getToasts()),e.store.subscribe(()=>{o(e.store.getToasts())})},[]),{toast:C,toasts:r}}export{H as GlazeProvider,I as Toaster,A as chime,F as configure,M as nativeSpring,E as nativeTiming,T as playSound,S as resetNativeEngine,C as toast,B as ui,W as useNativeToast};//# sourceMappingURL=native.js.map
1
+ function e(e){const t={};for(const o in e)void 0!==e[o]&&(t[o]=e[o]);return t}function t(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){return 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){return((e,t,o,r={})=>{let i;try{i="function"==typeof t?t():t}catch(e){i=Promise.reject(e)}const{id:s,...n}=r,a=C(o.loading),c=e.add({...n,id:s,...a,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(c,{duration:n.duration??e.config.get().duration,...C(r),type:t,...void 0!==s?{description:s}:{},resetTimer:1})};return i.then(t=>{void 0===o.success?e.dismiss(c):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:c,unwrap:()=>i}})(e,t,o,r)}})}function o(e,t,o,r,i){const s=e.currentTime+r,n=o*(1+.008*(Math.random()-.5));for(const[o,r,a]of A){const c=e.createOscillator(),d=e.createGain();c.frequency.value=n*o,d.gain.setValueAtTime(1e-4,s),d.gain.linearRampToValueAtTime(r*i,s+.015),d.gain.exponentialRampToValueAtTime(1e-4,s+a),c.connect(d).connect(t),c.start(s),c.stop(s+a+.05)}}function r(e,t=.5){if(!e||"undefined"==typeof window)return;const r=1==e?"info":e+"",i=Math.min(1,Math.max(0,t));if(/^(https?:|data:audio|blob:)/.test(r)){try{const e=new Audio(r);e.volume=i,e.play().catch(()=>{})}catch{}return}const s=O[r],n=s&&("undefined"!=typeof window?window.AudioContext||window.webkitAudioContext:void 0);if(s&&n)try{if(y??(y=new n),"suspended"===y.state&&y.resume(),"closed"===y.state)return;const e=y.createGain();e.gain.value=.45*i;const t=y.createBiquadFilter();t.frequency.value=1300,e.connect(t).connect(y.destination);for(const[t,r,i]of s)o(y,e,t,r,i)}catch{}}function i(){return b||(b=((o={})=>{const r=((t={})=>{const o=t.config??((t={})=>{let o=Object.freeze({...x,...e(t)});const r=new Set,i=()=>{r.forEach(e=>e())};return{get(){return o},set(t){const r={...o,...e(t)};return Object.keys(r).some(e=>r[e]!==o[e])&&(o=Object.freeze(r),i()),o},reset(){o=x,i()},subscribe:e=>(r.add(e),()=>{r.delete(e)})}})(),r=t.clock??v,i=t.now??r.now,s=t.types??(()=>{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){return e.delete(t)},get(t){return e.get(t)??T[t]},list(){return[...e.keys()]}}})(),n=new Map;let a=[],c=[],d=[];const l=new Set,u=()=>{c=a.map(e=>n.get(e)?.record).filter(Boolean),l.forEach(e=>e())},p=(e,t,r,n)=>{const a=o.get(),c=t.type??"default",d={...s.get(c)?.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)?.(t),autoDismiss:e.autoDismiss,kind:e.kind})));const l=0==d.autoHide?0:d.duration??d.visibilityTime??a.duration,u=Number.isFinite(l)&&l>0?l:0,p=d.important||"error"===c,f=i();return{...d,id:e,type:c,duration:u,position:d.position??a.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??(a.startPaused?["manual"]:[]),remaining:r?.remaining??(u||1/0),custom:n}},f=e=>0===e.record.duration?1/0:e.timer.remaining(),m=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;return"string"==typeof t||"string"==typeof o?`${e.type??"default"}|${t??""}|${o??""}`:void 0},g=()=>{const{maxVisible:e}=o.get(),t=new Map;for(const o of a){const r=n.get(o);if(!r||r.record.dismissed)continue;const i=`${r.record.container??""}|${r.record.position}`,s=t.get(i)??0,a=!!r.record.important;e>s||a?(r.record.visible||(r.record={...r.record,visible:1},!r.record.pausedBy.length&&r.record.duration>0&&r.timer.start()),a||t.set(i,s+1)):r.record.visible&&(r.record={...r.record,visible:0},r.timer.pause())}},y=e=>{e.exitHandle?.(),e.timer.cancel(),n.delete(e.record.id),a=a.filter(t=>t!==e.record.id),d=[{...e.record,dismissed:1},...d].slice(0,o.get().historyLimit),g(),C(),u(),2&e.flags||(e.flags|=2,k(e.record.onClose,e.record,e.reason??"api"))},b=(e,t)=>{if(e.record.dismissed)return;if(0==e.record.dismissible&&("user"===t||"swipe"===t||"click"===t))return;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,k(e.record.onDismiss,e.record,t)),g(),C(),u();const i=o.get().exitDuration;i>0&&e.record.visible?e.exitHandle=r.setTimeout(()=>y(e),i):y(e)},w=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:f(e)}},C=()=>{for(const e of a){const t=n.get(e);!t||!t.record.visible||1&t.flags||t.record.dismissed||(t.flags|=1,k(t.record.onOpen,t.record))}},O={config:o,types:s,add(e){const t=((e,t="gk")=>void 0!==e&&""!==e?e:((e="gk")=>`${e}-${++h}`)(t))(e.id),o=n.get(t);if(o&&!o.record.dismissed){const{custom:r,...i}=e;return O.update(t,i),r&&(o.custom=r,o.record={...o.record,custom:r},u()),t}o&&y(o);const s=m(e);if(void 0!==s)for(const e of n.values())if(e.dedupeKey===s&&!e.record.dismissed)return e.record={...e.record,count:e.record.count+1,revision:e.record.revision+1,updatedAt:i()},w(e),u(),e.record.id;const c=((e,t)=>{const{custom:o,...i}=t,s=p(e,i,void 0,o),n={opts:i,custom:o,record:s,timer:void 0,dedupeKey:m(i),exitHandle:void 0,reason:void 0,flags:0};return n.timer=((e,t,o=v)=>{let r,i,s=e,n=e,a=0,c=0,d=0;const l=new Map,u=new Set,p=()=>Number.isFinite(n)&&n>0,f=()=>c&&!l.size,m=()=>d?0:f()?Math.max(0,n-(o.now()-a)):n,g=()=>{if(!u.size)return;const e=m(),t=s>0?Math.max(0,Math.min(1,e/s)):0;for(const o of u)try{o(e,t)}catch(e){console.error(e)}},y=()=>{r?.(),i?.(),r=i=void 0},b=()=>{y(),!p()||l.size||d||(a=o.now(),r=o.setTimeout(()=>{y(),n=0,d=1,c=0,g(),t()},n),u.size&&(i=o.setInterval(g,50)))};return{start(){!d&&p()&&(c=1,l.clear(),b(),g())},pause(e="manual"){d||(l.set(e,(l.get(e)??0)+1),c&&1===l.size&&(n=Math.max(0,n-(o.now()-a)),y(),g()))},resume(e="manual"){const t=!d&&l.get(e);t&&(t>1?l.set(e,t-1):l.delete(e),f()&&p()&&(b(),g()))},clearReasons(){l.clear(),c&&p()&&b()},add(e){if(d||!Number.isFinite(n))return;const t=f();n=Math.max(1,m()+e),s=Math.max(s,n),t&&b(),g()},reset(e){d=0,n=s=e??s,f()&&(p()?b():y()),g()},cancel(){y(),u.clear(),c=0,d=1,n=0},remaining:m,elapsed:()=>Math.max(0,s-m()),isRunning:()=>f()&&!d&&p(),isPaused:()=>l.size>0,pausedReasons:()=>[...l.keys()],onTick(e){return u.add(e),f()&&!i&&(i=o.setInterval(g,50)),()=>{u.delete(e),!u.size&&i&&(i(),i=void 0)}}}})(s.duration,()=>{8&n.flags||(n.flags|=8,k(n.record.onAutoClose,n.record)),b(n,"auto")},r),s.pausedBy.length&&n.timer.pause(),n})(t,e);return n.set(t,c),a=[...a,t],g(),u(),C(),t},update(e,t){const o=n.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 a=0;for(const e in i){const t=i[e];void 0!==t&&(o.opts[e]!==t&&(a=1),s[e]=t)}if(!a&&void 0===i.type&&void 0===i.position)return 1;o.opts=s,o.dedupeKey=m(s);const c=p(e,s,o.record,o.custom),d=c.position!==o.record.position;return o.record=c,d&&(o.record={...o.record,visible:0},g()),r||d?w(o):o.record={...o.record,remaining:f(o)},u(),C(),1},dismiss(e,t="api"){if(void 0===e)return O.dismissAll(t);const o=n.get(e);o&&b(o,t)},dismissAll(e="api"){for(const t of n.values())b(t,e)},pause(e,t){for(const o of void 0!==e?[n.get(e)]:n.values())o&&!o.record.pausedBy.includes(t)&&(o.timer.pause(t),o.record={...o.record,pausedBy:[...o.record.pausedBy,t],remaining:f(o)});u()},resume(e,t){for(const o of void 0!==e?[n.get(e)]:n.values()){if(!o||!o.record.pausedBy.includes(t))continue;o.timer.resume(t);const e=o.record.pausedBy.filter(e=>e!==t);o.record={...o.record,pausedBy:e,remaining:f(o)},!e.length&&o.record.visible&&o.record.duration>0&&o.timer.start()}u()},extend(e,t){const o=n.get(e);o&&!o.record.dismissed&&(o.timer.add(t),o.record={...o.record,remaining:f(o),timerEpoch:o.record.timerEpoch+1,revision:o.record.revision+1},u())},getRemaining(e){const t=n.get(e);return t?f(t):0},getToasts:()=>c,getHistory:()=>d,clear(){for(const e of n.values())e.exitHandle?.(),e.timer.cancel();n.clear(),a=[],c=[],u()},clearHistory(){d=[],u()},subscribe(e){return l.add(e),()=>{l.delete(e)}}};return O})({config:o.config});return{store:r,toast:t(r)}})()),b}function s(e){return i().store.config.set(e)}function n(){b&&(b.store.clear(),b.store.clearHistory(),b.store.config.reset())}function a({children:e}){return f(m,{children:e})}function c(e){const[t,o]=l([]);u(()=>{const e=i();o(e.store.getToasts());const t=e.store.subscribe(()=>{o(e.store.getToasts())});return()=>t()},[]);const r=p(()=>t.filter(e=>e.visible),[t]);if(0===r.length)return null;const s=e.position??"top-center",n=s.startsWith("bottom"),a="center"===s||"middle"===s,c=s.endsWith("left"),d=s.endsWith("right"),m=n?{bottom:e.bottomOffset??e.offset??50}:a?{top:"50%",transform:"translateY(-50%)"}:{top:e.topOffset??e.offset??50},y=c?{alignItems:"flex-start"}:d?{alignItems:"flex-end"}:{alignItems:"center"},b=r.slice(0,e.visibleToasts??4);return f("div",{style:{position:"absolute",...m,...y,left:16,right:16,zIndex:99999,display:"flex",flexDirection:"column",gap:e.gap??8,...e.style},children:b.map(t=>g("div",{onClick(){t.onPress&&t.onPress(t)},style:{backgroundColor:"rgba(28, 28, 30, 0.88)",padding:14,borderRadius:16,minWidth:200,maxWidth:"100%",boxShadow:"0 8px 24px rgba(0, 0, 0, 0.25)",display:"flex",flexDirection:"column",gap:4,position:"relative",cursor:t.onPress?"pointer":void 0,...e.toastStyle},children:[t.image?f("div",{style:{borderRadius:10,overflow:"hidden",marginBottom:4},children:f("img",{src:"string"==typeof t.image?t.image:t.image.src,alt:"",style:{width:"100%",maxHeight:120,objectFit:"cover"}})}):null,e.closeButton||t.closeButton||t.closeText||t.discardText?f("button",{type:"button",onClick(e){e.stopPropagation(),i().toast.dismiss(t.id)},"aria-label":t.closeButtonLabel??"Close notification",style:{position:"absolute",top:8,right:10,background:"transparent",border:"none",color:"rgba(255,255,255,0.6)",cursor:"pointer",fontSize:t.closeText||t.discardText?12:16,fontWeight:t.closeText||t.discardText?"600":"normal",padding:"2px 6px",lineHeight:1},children:t.closeText??t.discardText??"×"}):null,t.character||t.robotVariant?g("div",{style:{fontSize:11,fontWeight:"700",color:"#a78bfa",textTransform:"uppercase",letterSpacing:"0.05em",marginBottom:2},children:["[",t.character??t.robotVariant,"]"]}):null,t.badge?f("div",{style:{fontSize:11,fontWeight:"600",color:"#38bdf8",textTransform:"uppercase",letterSpacing:"0.04em"},children:"string"==typeof t.badge?t.badge:t.badge.label??""}):null,t.title?f("div",{style:{color:"#fff",fontWeight:"600",fontSize:15},children:t.title+""}):null,t.description?f("div",{style:{color:"#aaa",fontSize:13,marginTop:2},children:t.description+""}):null,void 0!==t.progressValue?f("div",{style:{height:3,backgroundColor:"rgba(255,255,255,0.15)",borderRadius:3,marginTop:6,overflow:"hidden"},children:f("div",{style:{height:"100%",width:Math.round(100*t.progressValue)+"%",backgroundColor:"#38bdf8"}})}):null,t.actions&&t.actions.length>0?f("div",{style:{display:"flex",gap:8,marginTop:8,justifyContent:"flex-end"},children:t.actions.map((e,t)=>f("button",{type:"button",onClick:e.onClick?t=>e.onClick?.(t.nativeEvent):void 0,style:{fontSize:12,fontWeight:"600",padding:"4px 10px",borderRadius:8,border:"none",backgroundColor:"rgba(255, 255, 255, 0.12)",color:"#fff",cursor:"pointer"},children:e.label??e.text??"Action"},t))}):null]},t.id+""))})}function d(){const[e,t]=l([]);return u(()=>{const e=i();return t(e.store.getToasts()),e.store.subscribe(()=>{t(e.store.getToasts())})},[]),{toast:z,toasts:e}}import{useState as l,useEffect as u,useMemo as p}from"react";import{jsx as f,Fragment as m,jsxs as g}from"react/jsx-runtime";var y,b,v={now(){return Date.now()},setTimeout(e,t){const o=setTimeout(e,t);return()=>clearTimeout(o)},setInterval(e,t){const o=setInterval(e,t);return()=>clearInterval(o)}},h=0,x=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}),w=(e,t="polite")=>({color:`var(--gk-${e})`,ariaLive:t}),T={success:w("success"),error:w("error","assertive"),warning:w("warning","assertive"),info:w("info"),loading:{...w("info"),defaults:{duration:0,dismissible:0}},message:w("fg")},k=(e,t,o)=>{try{e?.(t,o)}catch(e){console.error(e)}},C=e=>"string"==typeof e?{title:e}:e,O={success:[[392,0,1],[523,.1,1]],error:[[233,0,1],[185,.13,1]],warning:[[349,0,.8],[349,.16,.6]],info:[[466,0,.9]],ding:[[659,0,.9],[880,.08,1]],pop:[[440,0,.7],[880,.03,.9]],chime:[[523,0,.8],[659,.09,.85],[784,.18,1]],bell:[[587,0,1],[1175,.04,.5]],message:[[440,0,.8],[659,.12,.9]],bubble:[[330,0,.6],[494,.06,.8]],marimba:[[523,0,1],[659,.06,.9],[784,.12,1],[1047,.18,.8]],crystal:[[880,0,.8],[1319,.08,.9],[1760,.16,.7]],subtle:[[440,0,.6]],harp:[[392,0,.7],[494,.05,.8],[587,.1,.9],[784,.15,1]]},A=[[1,.6,.5],[2,.06,.15]],B=r,z=(()=>{const e=i().toast,t=e=>(t,o={})=>((async e=>{try{const t=await(import("expo-haptics"));if(!t)return;"success"===e?await t.notificationAsync(t.NotificationFeedbackType.Success):"error"===e?await t.notificationAsync(t.NotificationFeedbackType.Error):"warning"===e?await t.notificationAsync(t.NotificationFeedbackType.Warning):await t.impactAsync(t.ImpactFeedbackStyle.Light)}catch{}})(o.type??"default"),e(t,o)),o=t(e);return o.success=t(e.success),o.error=t(e.error),o.info=t(e.info),o.warning=t(e.warning),o.loading=t(e.loading),o.message=t(e.message),o.promise=e.promise,o.custom=e.custom,o.update=e.update,o.dismiss=e.dismiss,o.dismissAll=e.dismissAll,o.getToasts=e.getToasts,o.getHistory=e.getHistory,Object.defineProperty(o,"types",{value:e.types,enumerable:1}),o})(),H=null,S=Object.assign(z,{show(e){if("string"==typeof e)return z(e);const{type:t="success",text1:o,text2:r,position:i="top",autoHide:s=1,visibilityTime:n,topOffset:a,bottomOffset:c,keyboardOffset:d,onShow:l,onHide:u,onPress:p,...f}=e,m=f,g=0==s?0:n??m.duration??4e3,y="top"===i?"top-center":"bottom"===i?"bottom-center":i;return z(o??m.title,{...m,type:t,title:o??m.title,description:r??m.description,duration:g,position:y,topOffset:a,bottomOffset:c,keyboardOffset:d,onOpen:l?()=>l():m.onOpen,onClose:u?()=>u():m.onClose,onPress:p?()=>p():m.onPress})},hide(e){void 0!==e?z.dismiss(e):z.dismissAll()},setRef(e){H=e},getRef:()=>H}),M=S,P={toast:z,configure:s,reset:n},E={glide:{damping:32,stiffness:170,mass:1},snappy:{damping:24,stiffness:280,mass:.8}},R={normal:{duration:300},exit:{duration:200}};export{a as GlazeProvider,S as Toast,c as Toaster,B as chime,s as configure,M as default,E as nativeSpring,R as nativeTiming,r as playSound,n as resetNativeEngine,z as toast,P as ui,d as useNativeToast};//# sourceMappingURL=native.js.map