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/native.d.cts CHANGED
@@ -1,8 +1,42 @@
1
1
  import React from 'react';
2
- import { GlazeConfig, ToastApi, ToastRecord } from './core.cjs';
2
+ import { ToastApi, GlazeConfig, ToastRecord } from './core.cjs';
3
+ export { S as SoundNote, c as chime, p as playSound } from './sound-DLXnQDzO.cjs';
3
4
 
4
5
  /** Native toast API. */
5
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
+
6
40
  /** Configuration function for React Native. */
7
41
  declare function configure(patch: Partial<GlazeConfig>): Readonly<GlazeConfig>;
8
42
  /** Resets the native engine for tests. */
@@ -13,13 +47,59 @@ declare const ui: {
13
47
  configure: typeof configure;
14
48
  reset: typeof resetNativeEngine;
15
49
  };
50
+ /** Spring physics animation presets inspired by expo-dynamic-toast. */
51
+ declare const nativeSpring: {
52
+ readonly glide: {
53
+ readonly damping: 32;
54
+ readonly stiffness: 170;
55
+ readonly mass: 1;
56
+ };
57
+ readonly snappy: {
58
+ readonly damping: 24;
59
+ readonly stiffness: 280;
60
+ readonly mass: 0.8;
61
+ };
62
+ };
63
+ /** Native timing presets for animations. */
64
+ declare const nativeTiming: {
65
+ readonly normal: {
66
+ readonly duration: 300;
67
+ };
68
+ readonly exit: {
69
+ readonly duration: 200;
70
+ };
71
+ };
16
72
  interface NativeToasterProps {
17
- /** Toast placement. Defaults to 'top'. */
18
- position?: 'top' | 'bottom' | 'center';
73
+ /** Toast placement across 7 positions (top-left, top-center, top-right, center, bottom-left, bottom-center, bottom-right). Defaults to 'top-center'. */
74
+ position?: 'top' | 'bottom' | 'center' | 'middle' | 'top-left' | 'top-center' | 'top-right' | 'bottom-left' | 'bottom-center' | 'bottom-right';
19
75
  /** Optional top/bottom inset offset. */
20
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;
83
+ /** Gap between stacked toasts in pixels. Defaults to 8. */
84
+ gap?: number;
85
+ /** Maximum number of visible toasts. Defaults to 4. */
86
+ visibleToasts?: number;
87
+ /** Whether stacked toasts expand on tap. */
88
+ expand?: boolean;
89
+ /** Whether close button is displayed. */
90
+ closeButton?: boolean;
91
+ /** Whether swipe to dismiss is enabled. Defaults to true. */
92
+ swipeToDismiss?: boolean;
93
+ /** Spring animation preset or configuration. */
94
+ spring?: 'glide' | 'snappy' | {
95
+ damping: number;
96
+ stiffness: number;
97
+ mass: number;
98
+ };
21
99
  /** Toast container style. */
22
100
  style?: Record<string, unknown>;
101
+ /** Individual toast card style. */
102
+ toastStyle?: Record<string, unknown>;
23
103
  }
24
104
  interface GlazeProviderProps {
25
105
  children?: React.ReactNode;
@@ -37,5 +117,5 @@ declare function useNativeToast(): {
37
117
  toasts: readonly ToastRecord[];
38
118
  };
39
119
 
40
- export { GlazeProvider, Toaster, configure, resetNativeEngine, toast, ui, useNativeToast };
41
- 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,8 +1,42 @@
1
1
  import React from 'react';
2
- import { GlazeConfig, ToastApi, ToastRecord } from './core.js';
2
+ import { ToastApi, GlazeConfig, ToastRecord } from './core.js';
3
+ export { S as SoundNote, c as chime, p as playSound } from './sound-UiOhOgA9.js';
3
4
 
4
5
  /** Native toast API. */
5
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
+
6
40
  /** Configuration function for React Native. */
7
41
  declare function configure(patch: Partial<GlazeConfig>): Readonly<GlazeConfig>;
8
42
  /** Resets the native engine for tests. */
@@ -13,13 +47,59 @@ declare const ui: {
13
47
  configure: typeof configure;
14
48
  reset: typeof resetNativeEngine;
15
49
  };
50
+ /** Spring physics animation presets inspired by expo-dynamic-toast. */
51
+ declare const nativeSpring: {
52
+ readonly glide: {
53
+ readonly damping: 32;
54
+ readonly stiffness: 170;
55
+ readonly mass: 1;
56
+ };
57
+ readonly snappy: {
58
+ readonly damping: 24;
59
+ readonly stiffness: 280;
60
+ readonly mass: 0.8;
61
+ };
62
+ };
63
+ /** Native timing presets for animations. */
64
+ declare const nativeTiming: {
65
+ readonly normal: {
66
+ readonly duration: 300;
67
+ };
68
+ readonly exit: {
69
+ readonly duration: 200;
70
+ };
71
+ };
16
72
  interface NativeToasterProps {
17
- /** Toast placement. Defaults to 'top'. */
18
- position?: 'top' | 'bottom' | 'center';
73
+ /** Toast placement across 7 positions (top-left, top-center, top-right, center, bottom-left, bottom-center, bottom-right). Defaults to 'top-center'. */
74
+ position?: 'top' | 'bottom' | 'center' | 'middle' | 'top-left' | 'top-center' | 'top-right' | 'bottom-left' | 'bottom-center' | 'bottom-right';
19
75
  /** Optional top/bottom inset offset. */
20
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;
83
+ /** Gap between stacked toasts in pixels. Defaults to 8. */
84
+ gap?: number;
85
+ /** Maximum number of visible toasts. Defaults to 4. */
86
+ visibleToasts?: number;
87
+ /** Whether stacked toasts expand on tap. */
88
+ expand?: boolean;
89
+ /** Whether close button is displayed. */
90
+ closeButton?: boolean;
91
+ /** Whether swipe to dismiss is enabled. Defaults to true. */
92
+ swipeToDismiss?: boolean;
93
+ /** Spring animation preset or configuration. */
94
+ spring?: 'glide' | 'snappy' | {
95
+ damping: number;
96
+ stiffness: number;
97
+ mass: number;
98
+ };
21
99
  /** Toast container style. */
22
100
  style?: Record<string, unknown>;
101
+ /** Individual toast card style. */
102
+ toastStyle?: Record<string, unknown>;
23
103
  }
24
104
  interface GlazeProviderProps {
25
105
  children?: React.ReactNode;
@@ -37,5 +117,5 @@ declare function useNativeToast(): {
37
117
  toasts: readonly ToastRecord[];
38
118
  };
39
119
 
40
- export { GlazeProvider, Toaster, configure, resetNativeEngine, toast, ui, useNativeToast };
41
- 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,2 +1 @@
1
- import {useState,useEffect,useMemo}from'react';import {jsx,Fragment,jsxs}from'react/jsx-runtime';var L={now:()=>Date.now(),setTimeout:(o,t)=>{let r=setTimeout(o,t);return ()=>clearTimeout(r)},setInterval:(o,t)=>{let r=setInterval(o,t);return ()=>clearInterval(r)}};var Z=0;function ee(o="gk"){return `${o}-${++Z}`}function U(o,t="gk"){return o!==void 0&&o!==""?o:ee(t)}var N=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});function $(o={}){let t=Object.freeze({...N,...G(o)}),r=new Set,c=()=>{r.forEach(l=>l());};return {get:()=>t,set(l){return t=Object.freeze({...t,...G(l)}),c(),t},reset(){t=N,c();},subscribe(l){return r.add(l),()=>{r.delete(l);}}}}function G(o){let t={};for(let r in o)o[r]!==void 0&&(t[r]=o[r]);return t}function _(o,t,r=L){let c=o,l=o,p=0,d,f,g=false,y=false,a=new Map,S=new Set,R=()=>Number.isFinite(l)&&l>0,b=()=>{if(S.size===0)return;let T=w(),h=c>0?Math.max(0,Math.min(1,T/c)):0;for(let E of S)try{E(T,h);}catch(e){console.error(e);}},w=()=>y?0:g&&a.size===0?Math.max(0,l-(r.now()-p)):l,x=()=>{d?.(),d=void 0,f?.(),f=void 0;},C=()=>{x(),!(!R()||a.size>0||y)&&(p=r.now(),d=r.setTimeout(()=>{x(),l=0,y=true,g=false,b(),t();},l),S.size>0&&(f=r.setInterval(()=>{b();},50)));};return {start(){y||!R()||(g=true,a.clear(),C(),b());},pause:(T="manual")=>{y||(a.set(T,(a.get(T)??0)+1),g&&a.size===1&&(l=Math.max(0,l-(r.now()-p)),x(),b()));},resume:(T="manual")=>{if(y)return;let h=a.get(T);h&&(h<=1?a.delete(T):a.set(T,h-1),g&&a.size===0&&R()&&(C(),b()));},clearReasons(){a.clear(),g&&R()&&C();},add(T){if(y||!Number.isFinite(l))return;let h=g&&a.size===0;l=Math.max(1,(h?l-(r.now()-p):l)+T),c=Math.max(c,l),h&&C(),b();},reset(T){y=false,l=c=T!==void 0?T:c,g&&a.size===0&&(R()?C():x()),b();},cancel(){x(),g=false,y=true,l=0;},remaining:w,elapsed(){return Math.max(0,c-w())},isRunning:()=>g&&!y&&!a.size&&R(),isPaused:()=>a.size>0,pausedReasons:()=>[...a.keys()],onTick(T){return S.add(T),g&&a.size===0&&!f&&(f=r.setInterval(b,50)),()=>{S.delete(T),S.size===0&&f&&(f(),f=void 0);}}}}var M=(o,t="polite")=>({color:`var(--gk-${o})`,ariaLive:t}),te={success:M("success"),error:M("error","assertive"),warning:M("warning","assertive"),info:M("info"),loading:{...M("info"),defaults:{duration:0,dismissible:false}},message:M("fg")};function W(){let o=new Map;return {add(t,r={}){let c=typeof t=="string"?t.trim():"";if(!c)throw new TypeError("toastory: invalid type");o.set(c,r);},remove:t=>o.delete(t),get:t=>o.get(t)??te[t],list:()=>[...o.keys()]}}var oe=new Set(["user","swipe","click"]),F=(o,...t)=>{try{o?.(...t);}catch(r){console.error(r);}},re="manual",ie={loading:{duration:0}};function j(o={}){let t=o.config??$(),r=o.clock??L,c=o.now??(()=>r.now()),l=o.types??W(),p=new Map,d=[],f=[],g=[],y=new Set,a=()=>{f=d.map(e=>p.get(e)?.record).filter(Boolean),y.forEach(e=>e());},S=e=>`${e.container??""}|${e.position}`,R=(e,n,i,s)=>{let m=t.get(),u=n.type??"default",v={...ie[u],...l.get(u)?.defaults,...n},k=v.duration??m.duration,O=Number.isFinite(k)&&k>0?k:0,D=v.important||u==="error",A=c();return {...v,id:e,type:u,duration:O,position:v.position??m.position,ariaLive:v.ariaLive??(D?"assertive":"polite"),role:v.role??(D?"alert":"status"),createdAt:i?.createdAt??A,updatedAt:A,revision:(i?.revision??-1)+1,timerEpoch:i?.timerEpoch??0,count:i?.count??1,visible:i?.visible??false,dismissed:false,pausedBy:i?.pausedBy??(m.startPaused?[re]:[]),remaining:i?.remaining??(O||1/0),custom:s}},b=e=>e.record.duration===0?1/0:e.timer.remaining(),w=e=>{if(e.dedupe===false)return;if(typeof e.dedupe=="string")return e.dedupe;let n=typeof e.title=="string"?e.title:"",i=typeof e.description=="string"?e.description:"";return n||i?`${e.type??"default"}|${n}|${i}`:void 0},x=()=>{let e=t.get(),n=new Map;for(let i of d){let s=p.get(i);if(!s||s.record.dismissed)continue;let m=S(s.record),u=n.get(m)??0,v=!!s.record.important;u<e.maxVisible||v?(s.record.visible||(s.record={...s.record,visible:true},!s.record.pausedBy.length&&s.record.duration>0&&s.timer.start()),v||n.set(m,u+1)):s.record.visible&&(s.record={...s.record,visible:false},s.timer.pause());}},C=e=>{e.exitHandle?.(),e.timer.cancel(),p.delete(e.record.id),d=d.filter(n=>n!==e.record.id),g=[{...e.record,dismissed:true},...g].slice(0,t.get().historyLimit),x(),h(),a(),e.closedFired||(e.closedFired=true,F(e.record.onClose,e.record,e.reason??"api"));},z=(e,n)=>{if(e.record.dismissed||e.record.dismissible===false&&oe.has(n))return;e.reason=n,e.record={...e.record,dismissed:true,remaining:0,revision:e.record.revision+1},e.timer.cancel(),!e.dismissFired&&n!=="auto"&&(e.dismissFired=true,F(e.record.onDismiss,e.record,n)),x(),h(),a();let i=t.get().exitDuration;i<=0||!e.record.visible?C(e):e.exitHandle=r.setTimeout(()=>C(e),i);},H=(e,n)=>{let{custom:i,...s}=n,m=R(e,s,void 0,i),u={opts:s,custom:i,record:m,timer:void 0,dedupeKey:w(s),exitHandle:void 0,reason:void 0,openedFired:false,closedFired:false,dismissFired:false,autoCloseFired:false};return u.timer=_(m.duration,()=>{u.autoCloseFired||(u.autoCloseFired=true,F(u.record.onAutoClose,u.record)),z(u,"auto");},r),m.pausedBy.length&&u.timer.pause(),u},T=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:b(e)};},h=()=>{for(let e of d){let n=p.get(e);n&&n.record.visible&&!n.openedFired&&!n.record.dismissed&&(n.openedFired=true,F(n.record.onOpen,n.record));}},E={config:t,types:l,add(e){let n=U(e.id),i=p.get(n);if(i&&!i.record.dismissed){let{custom:u,...v}=e;return E.update(n,v),u&&(i.custom=u,i.record={...i.record,custom:u},a()),n}i&&C(i);let s=w(e);if(s!==void 0){for(let u of p.values())if(u.dedupeKey===s&&!u.record.dismissed)return u.record={...u.record,count:u.record.count+1,revision:u.record.revision+1,updatedAt:c()},T(u),a(),u.record.id}let m=H(n,e);return p.set(n,m),d=[...d,n],x(),a(),h(),n},update(e,n){let i=p.get(e);if(!i||i.record.dismissed)return false;let{resetTimer:s=true,...m}=n,u={...i.opts};m.type!==void 0&&m.type!==i.record.type&&(delete u.duration,delete u.ariaLive,delete u.role,delete u.icon);let v=false;for(let D in m){let A=m[D];A!==void 0&&(i.opts[D]!==A&&(v=true),u[D]=A);}if(!v&&m.type===void 0&&m.position===void 0)return true;i.opts=u,i.dedupeKey=w(u);let k=R(e,u,i.record,i.custom),O=k.position!==i.record.position;return i.record=k,O&&(i.record={...i.record,visible:false},x()),s||O?T(i):i.record={...i.record,remaining:b(i)},a(),h(),true},dismiss(e,n="api"){if(e===void 0)return E.dismissAll(n);let i=p.get(e);i&&z(i,n);},dismissAll(e="api"){for(let n of p.values())z(n,e);},pause(e,n){let i=e===void 0?[...p.values()]:[p.get(e)].filter(s=>!!s);for(let s of i)s.record.pausedBy.includes(n)||(s.timer.pause(n),s.record={...s.record,pausedBy:[...s.record.pausedBy,n],remaining:b(s)});a();},resume(e,n){let i=e===void 0?[...p.values()]:[p.get(e)].filter(s=>!!s);for(let s of i){if(!s.record.pausedBy.includes(n))continue;s.timer.resume(n);let m=s.record.pausedBy.filter(u=>u!==n);s.record={...s.record,pausedBy:m,remaining:b(s)},!m.length&&s.record.visible&&s.record.duration>0&&s.timer.start();}a();},extend(e,n){let i=p.get(e);!i||i.record.dismissed||(i.timer.add(n),i.record={...i.record,remaining:b(i),timerEpoch:i.record.timerEpoch+1,revision:i.record.revision+1},a());},getRemaining(e){let n=p.get(e);return n?b(n):0},getToasts:()=>f,getHistory:()=>g,clear(){for(let e of p.values())e.exitHandle?.(),e.timer.cancel();p.clear(),d=[],f=[],a();},clearHistory(){g=[],a();},subscribe(e){return y.add(e),()=>{y.delete(e);}}};return E}function K(o){return typeof o=="string"?{title:o}:o}function ne(o){return o instanceof Error?o.message:String(o)}function V(o,t,r,c={}){let l;try{l=typeof t=="function"?t():t;}catch(a){l=Promise.reject(a);}let{id:p,...d}=c,f=K(r.loading),g=o.add({...d,id:p,...f,type:"loading",duration:0}),y=(a,S,R)=>{let b=typeof r.description=="function"?r.description(a==="success"?{status:a,value:R}:{status:a,error:R}):r.description;o.update(g,{duration:d.duration??o.config.get().duration,...K(S),type:a,...b!==void 0?{description:b}:{},resetTimer:true});};return l.then(a=>{r.success===void 0?o.dismiss(g):y("success",typeof r.success=="function"?r.success(a):r.success,a);}).catch(a=>{y("error",r.error===void 0?ne(a):typeof r.error=="function"?r.error(a):r.error,a);}).finally(()=>{try{r.finally?.();}catch(a){console.error(a);}}),{id:g,unwrap:()=>l}}function J(o){let t=c=>(l,p={})=>{let d={type:c,...p};return p.type!==void 0&&(d.type=p.type),l!==void 0&&(p.title===void 0?d.title=l:p.description===void 0&&(d.description=l)),o.add(d)},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=(c,l)=>o.add({...l,custom:c}),r.update=o.update,r.dismiss=o.dismiss,r.dismissAll=o.dismissAll,r.getToasts=o.getToasts,r.getHistory=o.getHistory,r.types=o.types,r.promise=(c,l,p)=>V(o,c,l,p),r}function Q(o={}){let t=j({config:o.config});return {store:t,toast:J(t)}}var I;function B(){return I||(I=Q()),I}async function ae(o){try{let t=await import('expo-haptics');if(!t)return;o==="success"?await t.notificationAsync(t.NotificationFeedbackType.Success):o==="error"?await t.notificationAsync(t.NotificationFeedbackType.Error):o==="warning"?await t.notificationAsync(t.NotificationFeedbackType.Warning):await t.impactAsync(t.ImpactFeedbackStyle.Light);}catch{}}function de(){let t=B().toast,r=l=>(p,d={})=>{let f=d.type??"default";return ae(f),l(p,d)},c=r(t);return c.success=r(t.success),c.error=r(t.error),c.info=r(t.info),c.warning=r(t.warning),c.loading=r(t.loading),c.message=r(t.message),c.promise=t.promise,c.custom=t.custom,c.update=t.update,c.dismiss=t.dismiss,c.dismissAll=t.dismissAll,c.getToasts=t.getToasts,c.getHistory=t.getHistory,Object.defineProperty(c,"types",{value:t.types,enumerable:true}),c}var q=de();function ce(o){return B().store.config.set(o)}function le(){I&&(I.store.clear(),I.store.clearHistory(),I.store.config.reset());}var Le={toast:q,configure:ce,reset:le};function Fe({children:o}){return jsx(Fragment,{children:o})}function Be(o){let[t,r]=useState([]);useEffect(()=>{let d=B();r(d.store.getToasts());let f=d.store.subscribe(()=>{r(d.store.getToasts());});return ()=>f()},[]);let c=useMemo(()=>t.filter(d=>d.visible),[t]);if(c.length===0)return null;let l=o.position??"top",p=l==="bottom"?{bottom:o.offset??50}:l==="center"?{top:"50%",transform:"translateY(-50%)"}:{top:o.offset??50};return jsx("div",{style:{position:"absolute",...p,left:16,right:16,zIndex:99999,display:"flex",flexDirection:"column",alignItems:"center",gap:8,...o.style},children:c.map(d=>jsxs("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},children:[d.badge?jsx("div",{style:{fontSize:11,fontWeight:"600",color:"#38bdf8",textTransform:"uppercase",letterSpacing:"0.04em"},children:typeof d.badge=="string"?d.badge:d.badge.label??""}):null,d.title?jsx("div",{style:{color:"#fff",fontWeight:"600",fontSize:15},children:String(d.title)}):null,d.description?jsx("div",{style:{color:"#aaa",fontSize:13,marginTop:2},children:String(d.description)}):null,d.progressValue!==void 0?jsx("div",{style:{height:3,backgroundColor:"rgba(255,255,255,0.15)",borderRadius:3,marginTop:6,overflow:"hidden"},children:jsx("div",{style:{height:"100%",width:`${Math.round(d.progressValue*100)}%`,backgroundColor:"#38bdf8"}})}):null,d.actions&&d.actions.length>0?jsx("div",{style:{display:"flex",gap:8,marginTop:8,justifyContent:"flex-end"},children:d.actions.map((f,g)=>jsx("button",{type:"button",onClick:f.onClick?y=>f.onClick?.(y.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:f.label??f.text??"Action"},g))}):null]},String(d.id)))})}function He(){let[o,t]=useState([]);return useEffect(()=>{let r=B();return t(r.store.getToasts()),r.store.subscribe(()=>{t(r.store.getToasts());})},[]),{toast:q,toasts:o}}export{Fe as GlazeProvider,Be as Toaster,ce as configure,le as resetNativeEngine,q as toast,Le as ui,He as useNativeToast};//# sourceMappingURL=native.js.map
2
- //# 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);setTimeout(()=>t.disconnect(),900)}catch{}}function i(){return v||(v=((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??b,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)?.({preventDefault:()=>t.preventDefault(),defaultPrevented:t.defaultPrevented}),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,r="string"==typeof t?t:"",i="string"==typeof o?o:"";return r||i?`${e.type??"default"}|${r}|${i}`:void 0},g=()=>{const 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;s<e.maxVisible||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"))},v=(e,t)=>{if(e.record.dismissed)return;if(0==e.record.dismissible&&("user"===(i=t)||"swipe"===i||"click"===i))return;var i;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 s=o.get().exitDuration;s>0&&e.record.visible?e.exitHandle=r.setTimeout(()=>y(e),s):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=b)=>{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},v=()=>{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(),v(),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()&&(v(),g()))},clearReasons(){l.clear(),c&&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():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)),v(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&&v(o,t)},dismissAll(e="api"){for(const t of n.values())v(t,e)},pause(e,t){const o=void 0!==e?[n.get(e)]:n.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:f(e)});u()},resume(e,t){const o=void 0!==e?[n.get(e)]:n.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:f(e)},!o.length&&e.record.visible&&e.record.duration>0&&e.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)}})()),v}function s(e){return i().store.config.set(e)}function n(){v&&(v.store.clear(),v.store.clearHistory(),v.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=e.topOffset??e.offset??50,y=e.bottomOffset??e.offset??50,v=n?{bottom:y}:a?{top:"50%",transform:"translateY(-50%)"}:{top:m},b=c?{alignItems:"flex-start"}:d?{alignItems:"flex-end"}:{alignItems:"center"},h=e.visibleToasts??4,x=r.slice(0,h);return f("div",{style:{position:"absolute",...v,...b,left:16,right:16,zIndex:99999,display:"flex",flexDirection:"column",gap:e.gap??8,...e.style},children:x.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,v,b={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