@yahoo/uds-mobile 2.15.0 → 2.17.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 (150) hide show
  1. package/README.md +27 -24
  2. package/dist/bin/fixtures/dist/index.mjs +14 -0
  3. package/dist/components/Input.cjs +16 -13
  4. package/dist/components/Input.d.cts.map +1 -1
  5. package/dist/components/Input.d.ts.map +1 -1
  6. package/dist/components/Input.js +16 -13
  7. package/dist/components/Input.js.map +1 -1
  8. package/dist/components/InputHelpText.cjs +52 -0
  9. package/dist/components/InputHelpText.d.cts +37 -0
  10. package/dist/components/InputHelpText.d.cts.map +1 -0
  11. package/dist/components/InputHelpText.d.ts +37 -0
  12. package/dist/components/InputHelpText.d.ts.map +1 -0
  13. package/dist/components/InputHelpText.js +52 -0
  14. package/dist/components/InputHelpText.js.map +1 -0
  15. package/dist/components/Toast/Toast.cjs +141 -0
  16. package/dist/components/Toast/Toast.d.cts +38 -0
  17. package/dist/components/Toast/Toast.d.cts.map +1 -0
  18. package/dist/components/Toast/Toast.d.ts +38 -0
  19. package/dist/components/Toast/Toast.d.ts.map +1 -0
  20. package/dist/components/Toast/Toast.js +141 -0
  21. package/dist/components/Toast/Toast.js.map +1 -0
  22. package/dist/components/Toast/ToastAnimatedItem.cjs +88 -0
  23. package/dist/components/Toast/ToastAnimatedItem.d.cts +27 -0
  24. package/dist/components/Toast/ToastAnimatedItem.d.cts.map +1 -0
  25. package/dist/components/Toast/ToastAnimatedItem.d.ts +27 -0
  26. package/dist/components/Toast/ToastAnimatedItem.d.ts.map +1 -0
  27. package/dist/components/Toast/ToastAnimatedItem.js +87 -0
  28. package/dist/components/Toast/ToastAnimatedItem.js.map +1 -0
  29. package/dist/components/Toast/ToastItem.cjs +35 -0
  30. package/dist/components/Toast/ToastItem.d.cts +25 -0
  31. package/dist/components/Toast/ToastItem.d.cts.map +1 -0
  32. package/dist/components/Toast/ToastItem.d.ts +25 -0
  33. package/dist/components/Toast/ToastItem.d.ts.map +1 -0
  34. package/dist/components/Toast/ToastItem.js +35 -0
  35. package/dist/components/Toast/ToastItem.js.map +1 -0
  36. package/dist/components/Toast/ToastProvider.cjs +144 -0
  37. package/dist/components/Toast/ToastProvider.d.cts +58 -0
  38. package/dist/components/Toast/ToastProvider.d.cts.map +1 -0
  39. package/dist/components/Toast/ToastProvider.d.ts +58 -0
  40. package/dist/components/Toast/ToastProvider.d.ts.map +1 -0
  41. package/dist/components/Toast/ToastProvider.js +143 -0
  42. package/dist/components/Toast/ToastProvider.js.map +1 -0
  43. package/dist/components/Toast/ToastViewport.cjs +48 -0
  44. package/dist/components/Toast/ToastViewport.d.cts +42 -0
  45. package/dist/components/Toast/ToastViewport.d.cts.map +1 -0
  46. package/dist/components/Toast/ToastViewport.d.ts +42 -0
  47. package/dist/components/Toast/ToastViewport.d.ts.map +1 -0
  48. package/dist/components/Toast/ToastViewport.js +48 -0
  49. package/dist/components/Toast/ToastViewport.js.map +1 -0
  50. package/dist/components/Toast/createToast.cjs +21 -0
  51. package/dist/components/Toast/createToast.d.cts +10 -0
  52. package/dist/components/Toast/createToast.d.cts.map +1 -0
  53. package/dist/components/Toast/createToast.d.ts +10 -0
  54. package/dist/components/Toast/createToast.d.ts.map +1 -0
  55. package/dist/components/Toast/createToast.js +20 -0
  56. package/dist/components/Toast/createToast.js.map +1 -0
  57. package/dist/components/Toast/index.cjs +10 -0
  58. package/dist/components/Toast/index.d.cts +6 -0
  59. package/dist/components/Toast/index.d.ts +6 -0
  60. package/dist/components/Toast/index.js +5 -0
  61. package/dist/components/Toast/types.cjs +1 -0
  62. package/dist/components/Toast/types.d.cts +113 -0
  63. package/dist/components/Toast/types.d.cts.map +1 -0
  64. package/dist/components/Toast/types.d.ts +113 -0
  65. package/dist/components/Toast/types.d.ts.map +1 -0
  66. package/dist/components/Toast/types.js +1 -0
  67. package/dist/components/Toast/useToastController.cjs +286 -0
  68. package/dist/components/Toast/useToastController.d.cts +25 -0
  69. package/dist/components/Toast/useToastController.d.cts.map +1 -0
  70. package/dist/components/Toast/useToastController.d.ts +25 -0
  71. package/dist/components/Toast/useToastController.d.ts.map +1 -0
  72. package/dist/components/Toast/useToastController.js +286 -0
  73. package/dist/components/Toast/useToastController.js.map +1 -0
  74. package/dist/components/Toast/utils.cjs +69 -0
  75. package/dist/components/Toast/utils.d.cts +27 -0
  76. package/dist/components/Toast/utils.d.cts.map +1 -0
  77. package/dist/components/Toast/utils.d.ts +27 -0
  78. package/dist/components/Toast/utils.d.ts.map +1 -0
  79. package/dist/components/Toast/utils.js +55 -0
  80. package/dist/components/Toast/utils.js.map +1 -0
  81. package/dist/components/internal/Overlay/OverlayPortal.cjs +20 -0
  82. package/dist/components/internal/Overlay/OverlayPortal.d.cts +17 -0
  83. package/dist/components/internal/Overlay/OverlayPortal.d.cts.map +1 -0
  84. package/dist/components/internal/Overlay/OverlayPortal.d.ts +17 -0
  85. package/dist/components/internal/Overlay/OverlayPortal.d.ts.map +1 -0
  86. package/dist/components/internal/Overlay/OverlayPortal.js +20 -0
  87. package/dist/components/internal/Overlay/OverlayPortal.js.map +1 -0
  88. package/dist/components/internal/Overlay/index.cjs +6 -0
  89. package/dist/components/internal/Overlay/index.d.cts +5 -0
  90. package/dist/components/internal/Overlay/index.d.ts +5 -0
  91. package/dist/components/internal/Overlay/index.js +4 -0
  92. package/dist/components/internal/Overlay/types.cjs +1 -0
  93. package/dist/components/internal/Overlay/types.d.cts +21 -0
  94. package/dist/components/internal/Overlay/types.d.cts.map +1 -0
  95. package/dist/components/internal/Overlay/types.d.ts +21 -0
  96. package/dist/components/internal/Overlay/types.d.ts.map +1 -0
  97. package/dist/components/internal/Overlay/types.js +1 -0
  98. package/dist/components/internal/Overlay/useControllableState.cjs +34 -0
  99. package/dist/components/internal/Overlay/useControllableState.d.cts +18 -0
  100. package/dist/components/internal/Overlay/useControllableState.d.cts.map +1 -0
  101. package/dist/components/internal/Overlay/useControllableState.d.ts +18 -0
  102. package/dist/components/internal/Overlay/useControllableState.d.ts.map +1 -0
  103. package/dist/components/internal/Overlay/useControllableState.js +34 -0
  104. package/dist/components/internal/Overlay/useControllableState.js.map +1 -0
  105. package/dist/jest/mocks/gesture-handler.cjs +38 -0
  106. package/dist/jest/mocks/gesture-handler.d.cts +41 -0
  107. package/dist/jest/mocks/gesture-handler.d.cts.map +1 -0
  108. package/dist/jest/mocks/gesture-handler.d.ts +41 -0
  109. package/dist/jest/mocks/gesture-handler.d.ts.map +1 -0
  110. package/dist/jest/mocks/gesture-handler.js +37 -0
  111. package/dist/jest/mocks/gesture-handler.js.map +1 -0
  112. package/dist/jest/mocks/safe-area-context.cjs +35 -0
  113. package/dist/jest/mocks/safe-area-context.d.cts +43 -0
  114. package/dist/jest/mocks/safe-area-context.d.cts.map +1 -0
  115. package/dist/jest/mocks/safe-area-context.d.ts +43 -0
  116. package/dist/jest/mocks/safe-area-context.d.ts.map +1 -0
  117. package/dist/jest/mocks/safe-area-context.js +32 -0
  118. package/dist/jest/mocks/safe-area-context.js.map +1 -0
  119. package/dist/jest/mocks/screens.cjs +8 -0
  120. package/dist/jest/mocks/screens.d.cts +12 -0
  121. package/dist/jest/mocks/screens.d.cts.map +1 -0
  122. package/dist/jest/mocks/screens.d.ts +12 -0
  123. package/dist/jest/mocks/screens.d.ts.map +1 -0
  124. package/dist/jest/mocks/screens.js +9 -0
  125. package/dist/jest/mocks/screens.js.map +1 -0
  126. package/dist/jest/mocks/styles.cjs +38 -1
  127. package/dist/jest/mocks/styles.d.cts +3 -2
  128. package/dist/jest/mocks/styles.d.cts.map +1 -1
  129. package/dist/jest/mocks/styles.d.ts +3 -2
  130. package/dist/jest/mocks/styles.d.ts.map +1 -1
  131. package/dist/jest/mocks/styles.js +38 -2
  132. package/dist/jest/mocks/styles.js.map +1 -1
  133. package/dist/portal.cjs +1 -0
  134. package/dist/portal.d.cts +6 -1
  135. package/dist/portal.d.cts.map +1 -1
  136. package/dist/portal.d.ts +6 -1
  137. package/dist/portal.d.ts.map +1 -1
  138. package/dist/portal.js +1 -1
  139. package/dist/portal.js.map +1 -1
  140. package/dist/types/dist/index.d.cts +4 -1
  141. package/dist/types/dist/index.d.cts.map +1 -1
  142. package/dist/types/dist/index.d.ts +4 -1
  143. package/dist/types/dist/index.d.ts.map +1 -1
  144. package/fonts/index.cjs +209 -209
  145. package/fonts/index.mjs +209 -209
  146. package/generated/styles.cjs +114 -0
  147. package/generated/styles.d.ts +29 -0
  148. package/generated/styles.mjs +114 -0
  149. package/generated/unistyles.d.ts +110 -0
  150. package/package.json +21 -1
@@ -0,0 +1,286 @@
1
+ /*! © 2026 Yahoo, Inc. UDS Mobile v0.0.0-development */
2
+ import { createToastId, isPersistentAutoClose, resolveToastInput, toastReducer } from "./utils.js";
3
+ import { useCallback, useEffect, useMemo, useReducer, useRef, useState } from "react";
4
+ //#region src/components/Toast/useToastController.ts
5
+ function useToastController({ autoClose, limit, placement, shouldReduceMotion }) {
6
+ const [toasts, baseDispatch] = useReducer(toastReducer, []);
7
+ const [waitingToastCount, setWaitingToastCount] = useState(0);
8
+ const toastsRef = useRef(toasts);
9
+ const limitRef = useRef(limit);
10
+ const waitingQueueRef = useRef([]);
11
+ const timeoutRefs = useRef(/* @__PURE__ */ new Map());
12
+ const exitTimeoutRefs = useRef(/* @__PURE__ */ new Map());
13
+ const hideRef = useRef(null);
14
+ useEffect(() => {
15
+ toastsRef.current = toasts;
16
+ }, [toasts]);
17
+ const dispatchToastAction = useCallback((action) => {
18
+ toastsRef.current = toastReducer(toastsRef.current, action);
19
+ baseDispatch(action);
20
+ }, [baseDispatch]);
21
+ const clearToastTimer = useCallback((id) => {
22
+ const timeout = timeoutRefs.current.get(id);
23
+ if (timeout) {
24
+ clearTimeout(timeout);
25
+ timeoutRefs.current.delete(id);
26
+ }
27
+ }, []);
28
+ const clearAllToastTimers = useCallback(() => {
29
+ timeoutRefs.current.forEach((timeout) => clearTimeout(timeout));
30
+ timeoutRefs.current.clear();
31
+ }, []);
32
+ const clearToastExitTimer = useCallback((id) => {
33
+ const timeout = exitTimeoutRefs.current.get(id);
34
+ if (timeout) {
35
+ clearTimeout(timeout);
36
+ exitTimeoutRefs.current.delete(id);
37
+ }
38
+ }, []);
39
+ const clearAllToastExitTimers = useCallback(() => {
40
+ exitTimeoutRefs.current.forEach((timeout) => clearTimeout(timeout));
41
+ exitTimeoutRefs.current.clear();
42
+ }, []);
43
+ const syncWaitingToastCount = useCallback(() => {
44
+ setWaitingToastCount(waitingQueueRef.current.length);
45
+ }, []);
46
+ const clearWaitingQueue = useCallback(() => {
47
+ waitingQueueRef.current = [];
48
+ syncWaitingToastCount();
49
+ }, [syncWaitingToastCount]);
50
+ const getQueuedToastIndex = useCallback((id) => waitingQueueRef.current.findIndex((toast) => toast.id === id), []);
51
+ const removeQueuedToast = useCallback((id) => {
52
+ const queuedToastIndex = getQueuedToastIndex(id);
53
+ if (queuedToastIndex === -1) return false;
54
+ waitingQueueRef.current.splice(queuedToastIndex, 1);
55
+ syncWaitingToastCount();
56
+ return true;
57
+ }, [getQueuedToastIndex, syncWaitingToastCount]);
58
+ const scheduleToast = useCallback((toast) => {
59
+ clearToastTimer(toast.id);
60
+ if (isPersistentAutoClose(toast.autoClose)) return;
61
+ if (!Number.isFinite(toast.autoClose)) return;
62
+ if (toast.autoClose <= 0) {
63
+ hideRef.current?.(toast.id);
64
+ return;
65
+ }
66
+ const timeout = setTimeout(() => {
67
+ hideRef.current?.(toast.id);
68
+ timeoutRefs.current.delete(toast.id);
69
+ }, toast.autoClose);
70
+ timeoutRefs.current.set(toast.id, timeout);
71
+ }, [clearToastTimer]);
72
+ const showVisibleToast = useCallback((toast, shouldCallOnShow) => {
73
+ clearToastExitTimer(toast.id);
74
+ removeQueuedToast(toast.id);
75
+ dispatchToastAction({
76
+ type: "upsert",
77
+ toast
78
+ });
79
+ if (shouldCallOnShow) toast.onShow?.();
80
+ scheduleToast(toast);
81
+ }, [
82
+ clearToastExitTimer,
83
+ dispatchToastAction,
84
+ removeQueuedToast,
85
+ scheduleToast
86
+ ]);
87
+ const flushWaitingQueue = useCallback(() => {
88
+ let availableSlots = limitRef.current - toastsRef.current.length;
89
+ while (availableSlots > 0 && waitingQueueRef.current.length > 0) {
90
+ const toast = waitingQueueRef.current.shift();
91
+ if (toast) {
92
+ showVisibleToast(toast, true);
93
+ availableSlots -= 1;
94
+ }
95
+ }
96
+ syncWaitingToastCount();
97
+ }, [showVisibleToast, syncWaitingToastCount]);
98
+ const removeToast = useCallback((id) => {
99
+ clearToastTimer(id);
100
+ clearToastExitTimer(id);
101
+ dispatchToastAction({
102
+ type: "remove",
103
+ id
104
+ });
105
+ flushWaitingQueue();
106
+ }, [
107
+ clearToastExitTimer,
108
+ clearToastTimer,
109
+ dispatchToastAction,
110
+ flushWaitingQueue
111
+ ]);
112
+ const beginHideToast = useCallback((toast) => {
113
+ clearToastTimer(toast.id);
114
+ if (toast.isExiting) return;
115
+ toast.onHide?.();
116
+ if (shouldReduceMotion) {
117
+ removeToast(toast.id);
118
+ return;
119
+ }
120
+ dispatchToastAction({
121
+ type: "update",
122
+ id: toast.id,
123
+ toast: { isExiting: true }
124
+ });
125
+ clearToastExitTimer(toast.id);
126
+ const timeout = setTimeout(() => {
127
+ exitTimeoutRefs.current.delete(toast.id);
128
+ removeToast(toast.id);
129
+ }, 150);
130
+ exitTimeoutRefs.current.set(toast.id, timeout);
131
+ }, [
132
+ clearToastExitTimer,
133
+ clearToastTimer,
134
+ dispatchToastAction,
135
+ removeToast,
136
+ shouldReduceMotion
137
+ ]);
138
+ const hide = useCallback((id) => {
139
+ if (id === "all") {
140
+ clearWaitingQueue();
141
+ toastsRef.current.forEach(beginHideToast);
142
+ return;
143
+ }
144
+ const toastId = id ?? toastsRef.current.at(-1)?.id;
145
+ if (!toastId) return;
146
+ const toast = toastsRef.current.find((item) => item.id === toastId);
147
+ if (!toast) {
148
+ removeQueuedToast(toastId);
149
+ return;
150
+ }
151
+ beginHideToast(toast);
152
+ }, [
153
+ beginHideToast,
154
+ clearWaitingQueue,
155
+ removeQueuedToast
156
+ ]);
157
+ useEffect(() => {
158
+ hideRef.current = hide;
159
+ }, [hide]);
160
+ const createToastRecord = useCallback((options, existingToast) => {
161
+ const id = options.id ?? existingToast?.id ?? createToastId();
162
+ return {
163
+ ...existingToast,
164
+ ...options,
165
+ id,
166
+ size: options.size ?? existingToast?.size ?? "default",
167
+ variant: options.variant ?? existingToast?.variant ?? "info",
168
+ placement: options.placement ?? existingToast?.placement ?? placement,
169
+ autoClose: options.autoClose ?? existingToast?.autoClose ?? autoClose,
170
+ createdAt: existingToast?.createdAt ?? Date.now(),
171
+ closeOnAction: options.closeOnAction ?? existingToast?.closeOnAction ?? false,
172
+ isExiting: false
173
+ };
174
+ }, [autoClose, placement]);
175
+ const upsertToast = useCallback((toast, shouldCallOnShow) => {
176
+ if (toastsRef.current.find((item) => item.id === toast.id) || toastsRef.current.length < limitRef.current) {
177
+ showVisibleToast(toast, shouldCallOnShow);
178
+ return;
179
+ }
180
+ const queuedToastIndex = getQueuedToastIndex(toast.id);
181
+ if (queuedToastIndex === -1) {
182
+ waitingQueueRef.current.push(toast);
183
+ syncWaitingToastCount();
184
+ return;
185
+ }
186
+ waitingQueueRef.current[queuedToastIndex] = toast;
187
+ }, [
188
+ getQueuedToastIndex,
189
+ showVisibleToast,
190
+ syncWaitingToastCount
191
+ ]);
192
+ const update = useCallback((id, options) => {
193
+ const existingToast = toastsRef.current.find((toast) => toast.id === id);
194
+ const queuedToastIndex = getQueuedToastIndex(id);
195
+ const queuedToast = queuedToastIndex === -1 ? void 0 : waitingQueueRef.current[queuedToastIndex];
196
+ upsertToast(createToastRecord({
197
+ ...options,
198
+ id
199
+ }, existingToast ?? queuedToast), false);
200
+ return {
201
+ id,
202
+ update: (nextOptions) => update(id, nextOptions),
203
+ close: () => hide(id)
204
+ };
205
+ }, [
206
+ createToastRecord,
207
+ getQueuedToastIndex,
208
+ hide,
209
+ upsertToast
210
+ ]);
211
+ const show = useCallback((input) => {
212
+ const options = resolveToastInput(input);
213
+ const id = options.id ?? createToastId();
214
+ const existingToast = toastsRef.current.find((toast) => toast.id === id);
215
+ const queuedToastIndex = getQueuedToastIndex(id);
216
+ const queuedToast = queuedToastIndex === -1 ? void 0 : waitingQueueRef.current[queuedToastIndex];
217
+ upsertToast(createToastRecord({
218
+ ...options,
219
+ id
220
+ }, existingToast ?? queuedToast), true);
221
+ return {
222
+ id,
223
+ update: (nextOptions) => update(id, nextOptions),
224
+ close: () => hide(id)
225
+ };
226
+ }, [
227
+ createToastRecord,
228
+ getQueuedToastIndex,
229
+ hide,
230
+ update,
231
+ upsertToast
232
+ ]);
233
+ const hideAll = useCallback(() => hide("all"), [hide]);
234
+ useEffect(() => {
235
+ limitRef.current = limit;
236
+ if (toastsRef.current.length > limit) {
237
+ const visibleToasts = toastsRef.current.slice(0, limit);
238
+ const queuedToasts = toastsRef.current.slice(limit).map((toast) => ({
239
+ ...toast,
240
+ isExiting: false
241
+ }));
242
+ queuedToasts.forEach((toast) => {
243
+ clearToastTimer(toast.id);
244
+ clearToastExitTimer(toast.id);
245
+ });
246
+ waitingQueueRef.current = [...queuedToasts, ...waitingQueueRef.current];
247
+ syncWaitingToastCount();
248
+ dispatchToastAction({
249
+ type: "set",
250
+ toasts: visibleToasts
251
+ });
252
+ return;
253
+ }
254
+ flushWaitingQueue();
255
+ }, [
256
+ clearToastExitTimer,
257
+ clearToastTimer,
258
+ dispatchToastAction,
259
+ flushWaitingQueue,
260
+ limit,
261
+ syncWaitingToastCount
262
+ ]);
263
+ return {
264
+ clearAllToastExitTimers,
265
+ clearAllToastTimers,
266
+ controller: useMemo(() => ({
267
+ show,
268
+ update,
269
+ hide,
270
+ hideAll,
271
+ clearWaitingQueue
272
+ }), [
273
+ clearWaitingQueue,
274
+ hide,
275
+ hideAll,
276
+ show,
277
+ update
278
+ ]),
279
+ toasts,
280
+ waitingToastCount
281
+ };
282
+ }
283
+ //#endregion
284
+ export { useToastController };
285
+
286
+ //# sourceMappingURL=useToastController.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useToastController.js","names":[],"sources":["../../../src/components/Toast/useToastController.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useReducer, useRef, useState } from 'react';\n\nimport type {\n ToastAction,\n ToastAutoClose,\n ToastController,\n ToastHandle,\n ToastPlacement,\n ToastRecord,\n ToastShowInput,\n ToastShowOptions,\n} from './types';\nimport {\n createToastId,\n isPersistentAutoClose,\n resolveToastInput,\n TOAST_EXIT_ANIMATION_DURATION,\n toastReducer,\n} from './utils';\n\ninterface UseToastControllerOptions {\n autoClose: ToastAutoClose;\n limit: number;\n placement: ToastPlacement;\n shouldReduceMotion: boolean;\n}\n\nfunction useToastController({\n autoClose,\n limit,\n placement,\n shouldReduceMotion,\n}: UseToastControllerOptions) {\n const [toasts, baseDispatch] = useReducer(toastReducer, [] as ToastRecord[]);\n const [waitingToastCount, setWaitingToastCount] = useState(0);\n const toastsRef = useRef<ToastRecord[]>(toasts);\n const limitRef = useRef(limit);\n const waitingQueueRef = useRef<ToastRecord[]>([]);\n const timeoutRefs = useRef(new Map<string, ReturnType<typeof setTimeout>>());\n const exitTimeoutRefs = useRef(new Map<string, ReturnType<typeof setTimeout>>());\n const hideRef = useRef<ToastController['hide'] | null>(null);\n\n useEffect(() => {\n toastsRef.current = toasts;\n }, [toasts]);\n\n const dispatchToastAction = useCallback(\n (action: ToastAction) => {\n toastsRef.current = toastReducer(toastsRef.current, action);\n baseDispatch(action);\n },\n [baseDispatch],\n );\n\n const clearToastTimer = useCallback((id: string) => {\n const timeout = timeoutRefs.current.get(id);\n\n if (timeout) {\n clearTimeout(timeout);\n timeoutRefs.current.delete(id);\n }\n }, []);\n\n const clearAllToastTimers = useCallback(() => {\n timeoutRefs.current.forEach((timeout) => clearTimeout(timeout));\n timeoutRefs.current.clear();\n }, []);\n\n const clearToastExitTimer = useCallback((id: string) => {\n const timeout = exitTimeoutRefs.current.get(id);\n\n if (timeout) {\n clearTimeout(timeout);\n exitTimeoutRefs.current.delete(id);\n }\n }, []);\n\n const clearAllToastExitTimers = useCallback(() => {\n exitTimeoutRefs.current.forEach((timeout) => clearTimeout(timeout));\n exitTimeoutRefs.current.clear();\n }, []);\n\n const syncWaitingToastCount = useCallback(() => {\n setWaitingToastCount(waitingQueueRef.current.length);\n }, []);\n\n const clearWaitingQueue = useCallback(() => {\n waitingQueueRef.current = [];\n syncWaitingToastCount();\n }, [syncWaitingToastCount]);\n\n const getQueuedToastIndex = useCallback(\n (id: string) => waitingQueueRef.current.findIndex((toast) => toast.id === id),\n [],\n );\n\n const removeQueuedToast = useCallback(\n (id: string) => {\n const queuedToastIndex = getQueuedToastIndex(id);\n\n if (queuedToastIndex === -1) {\n return false;\n }\n\n waitingQueueRef.current.splice(queuedToastIndex, 1);\n syncWaitingToastCount();\n return true;\n },\n [getQueuedToastIndex, syncWaitingToastCount],\n );\n\n const scheduleToast = useCallback(\n (toast: ToastRecord) => {\n clearToastTimer(toast.id);\n\n if (isPersistentAutoClose(toast.autoClose)) {\n return;\n }\n\n if (!Number.isFinite(toast.autoClose)) {\n return;\n }\n\n if (toast.autoClose <= 0) {\n hideRef.current?.(toast.id);\n return;\n }\n\n const timeout = setTimeout(() => {\n hideRef.current?.(toast.id);\n timeoutRefs.current.delete(toast.id);\n }, toast.autoClose);\n\n timeoutRefs.current.set(toast.id, timeout);\n },\n [clearToastTimer],\n );\n\n const showVisibleToast = useCallback(\n (toast: ToastRecord, shouldCallOnShow: boolean) => {\n clearToastExitTimer(toast.id);\n removeQueuedToast(toast.id);\n dispatchToastAction({ type: 'upsert', toast });\n\n if (shouldCallOnShow) {\n toast.onShow?.();\n }\n\n scheduleToast(toast);\n },\n [clearToastExitTimer, dispatchToastAction, removeQueuedToast, scheduleToast],\n );\n\n const flushWaitingQueue = useCallback(() => {\n let availableSlots = limitRef.current - toastsRef.current.length;\n\n while (availableSlots > 0 && waitingQueueRef.current.length > 0) {\n const toast = waitingQueueRef.current.shift();\n\n if (toast) {\n showVisibleToast(toast, true);\n availableSlots -= 1;\n }\n }\n\n syncWaitingToastCount();\n }, [showVisibleToast, syncWaitingToastCount]);\n\n const removeToast = useCallback(\n (id: string) => {\n clearToastTimer(id);\n clearToastExitTimer(id);\n dispatchToastAction({ type: 'remove', id });\n flushWaitingQueue();\n },\n [clearToastExitTimer, clearToastTimer, dispatchToastAction, flushWaitingQueue],\n );\n\n const beginHideToast = useCallback(\n (toast: ToastRecord) => {\n clearToastTimer(toast.id);\n\n if (toast.isExiting) {\n return;\n }\n\n toast.onHide?.();\n\n if (shouldReduceMotion) {\n removeToast(toast.id);\n return;\n }\n\n dispatchToastAction({ type: 'update', id: toast.id, toast: { isExiting: true } });\n clearToastExitTimer(toast.id);\n\n const timeout = setTimeout(() => {\n exitTimeoutRefs.current.delete(toast.id);\n removeToast(toast.id);\n }, TOAST_EXIT_ANIMATION_DURATION);\n\n exitTimeoutRefs.current.set(toast.id, timeout);\n },\n [clearToastExitTimer, clearToastTimer, dispatchToastAction, removeToast, shouldReduceMotion],\n );\n\n const hide = useCallback(\n (id?: string | 'all') => {\n if (id === 'all') {\n clearWaitingQueue();\n toastsRef.current.forEach(beginHideToast);\n return;\n }\n\n const toastId = id ?? toastsRef.current.at(-1)?.id;\n\n if (!toastId) {\n return;\n }\n\n const toast = toastsRef.current.find((item) => item.id === toastId);\n\n if (!toast) {\n removeQueuedToast(toastId);\n return;\n }\n\n beginHideToast(toast);\n },\n [beginHideToast, clearWaitingQueue, removeQueuedToast],\n );\n\n useEffect(() => {\n hideRef.current = hide;\n }, [hide]);\n\n const createToastRecord = useCallback(\n (options: Partial<ToastRecord>, existingToast?: ToastRecord): ToastRecord => {\n const id = options.id ?? existingToast?.id ?? createToastId();\n\n return {\n ...existingToast,\n ...options,\n id,\n size: options.size ?? existingToast?.size ?? 'default',\n variant: options.variant ?? existingToast?.variant ?? 'info',\n placement: options.placement ?? existingToast?.placement ?? placement,\n autoClose: options.autoClose ?? existingToast?.autoClose ?? autoClose,\n createdAt: existingToast?.createdAt ?? Date.now(),\n closeOnAction: options.closeOnAction ?? existingToast?.closeOnAction ?? false,\n isExiting: false,\n };\n },\n [autoClose, placement],\n );\n\n const upsertToast = useCallback(\n (toast: ToastRecord, shouldCallOnShow: boolean) => {\n const visibleToast = toastsRef.current.find((item) => item.id === toast.id);\n\n if (visibleToast || toastsRef.current.length < limitRef.current) {\n showVisibleToast(toast, shouldCallOnShow);\n return;\n }\n\n const queuedToastIndex = getQueuedToastIndex(toast.id);\n\n if (queuedToastIndex === -1) {\n waitingQueueRef.current.push(toast);\n syncWaitingToastCount();\n return;\n }\n\n waitingQueueRef.current[queuedToastIndex] = toast;\n },\n [getQueuedToastIndex, showVisibleToast, syncWaitingToastCount],\n );\n\n const update = useCallback(\n (id: string, options: Partial<ToastShowOptions>): ToastHandle => {\n const existingToast = toastsRef.current.find((toast) => toast.id === id);\n const queuedToastIndex = getQueuedToastIndex(id);\n const queuedToast =\n queuedToastIndex === -1 ? undefined : waitingQueueRef.current[queuedToastIndex];\n const toast = createToastRecord({ ...options, id }, existingToast ?? queuedToast);\n\n upsertToast(toast, false);\n\n return {\n id,\n update: (nextOptions) => update(id, nextOptions),\n close: () => hide(id),\n };\n },\n [createToastRecord, getQueuedToastIndex, hide, upsertToast],\n );\n\n const show = useCallback(\n (input: ToastShowInput): ToastHandle => {\n const options = resolveToastInput(input);\n const id = options.id ?? createToastId();\n const existingToast = toastsRef.current.find((toast) => toast.id === id);\n const queuedToastIndex = getQueuedToastIndex(id);\n const queuedToast =\n queuedToastIndex === -1 ? undefined : waitingQueueRef.current[queuedToastIndex];\n const toast = createToastRecord({ ...options, id }, existingToast ?? queuedToast);\n\n upsertToast(toast, true);\n\n return {\n id,\n update: (nextOptions) => update(id, nextOptions),\n close: () => hide(id),\n };\n },\n [createToastRecord, getQueuedToastIndex, hide, update, upsertToast],\n );\n\n const hideAll = useCallback(() => hide('all'), [hide]);\n\n useEffect(() => {\n limitRef.current = limit;\n\n if (toastsRef.current.length > limit) {\n const visibleToasts = toastsRef.current.slice(0, limit);\n const queuedToasts = toastsRef.current.slice(limit).map((toast) => ({\n ...toast,\n isExiting: false,\n }));\n\n queuedToasts.forEach((toast) => {\n clearToastTimer(toast.id);\n clearToastExitTimer(toast.id);\n });\n\n waitingQueueRef.current = [...queuedToasts, ...waitingQueueRef.current];\n syncWaitingToastCount();\n dispatchToastAction({ type: 'set', toasts: visibleToasts });\n return;\n }\n\n flushWaitingQueue();\n }, [\n clearToastExitTimer,\n clearToastTimer,\n dispatchToastAction,\n flushWaitingQueue,\n limit,\n syncWaitingToastCount,\n ]);\n\n const controller = useMemo<ToastController>(\n () => ({\n show,\n update,\n hide,\n hideAll,\n clearWaitingQueue,\n }),\n [clearWaitingQueue, hide, hideAll, show, update],\n );\n\n return {\n clearAllToastExitTimers,\n clearAllToastTimers,\n controller,\n toasts,\n waitingToastCount,\n };\n}\n\nexport { useToastController };\n"],"mappings":";;;;AA2BA,SAAS,mBAAmB,EAC1B,WACA,OACA,WACA,sBAC4B;CAC5B,MAAM,CAAC,QAAQ,gBAAgB,WAAW,cAAc,EAAE,CAAkB;CAC5E,MAAM,CAAC,mBAAmB,wBAAwB,SAAS,EAAE;CAC7D,MAAM,YAAY,OAAsB,OAAO;CAC/C,MAAM,WAAW,OAAO,MAAM;CAC9B,MAAM,kBAAkB,OAAsB,EAAE,CAAC;CACjD,MAAM,cAAc,uBAAO,IAAI,KAA4C,CAAC;CAC5E,MAAM,kBAAkB,uBAAO,IAAI,KAA4C,CAAC;CAChF,MAAM,UAAU,OAAuC,KAAK;CAE5D,gBAAgB;EACd,UAAU,UAAU;IACnB,CAAC,OAAO,CAAC;CAEZ,MAAM,sBAAsB,aACzB,WAAwB;EACvB,UAAU,UAAU,aAAa,UAAU,SAAS,OAAO;EAC3D,aAAa,OAAO;IAEtB,CAAC,aAAa,CACf;CAED,MAAM,kBAAkB,aAAa,OAAe;EAClD,MAAM,UAAU,YAAY,QAAQ,IAAI,GAAG;EAE3C,IAAI,SAAS;GACX,aAAa,QAAQ;GACrB,YAAY,QAAQ,OAAO,GAAG;;IAE/B,EAAE,CAAC;CAEN,MAAM,sBAAsB,kBAAkB;EAC5C,YAAY,QAAQ,SAAS,YAAY,aAAa,QAAQ,CAAC;EAC/D,YAAY,QAAQ,OAAO;IAC1B,EAAE,CAAC;CAEN,MAAM,sBAAsB,aAAa,OAAe;EACtD,MAAM,UAAU,gBAAgB,QAAQ,IAAI,GAAG;EAE/C,IAAI,SAAS;GACX,aAAa,QAAQ;GACrB,gBAAgB,QAAQ,OAAO,GAAG;;IAEnC,EAAE,CAAC;CAEN,MAAM,0BAA0B,kBAAkB;EAChD,gBAAgB,QAAQ,SAAS,YAAY,aAAa,QAAQ,CAAC;EACnE,gBAAgB,QAAQ,OAAO;IAC9B,EAAE,CAAC;CAEN,MAAM,wBAAwB,kBAAkB;EAC9C,qBAAqB,gBAAgB,QAAQ,OAAO;IACnD,EAAE,CAAC;CAEN,MAAM,oBAAoB,kBAAkB;EAC1C,gBAAgB,UAAU,EAAE;EAC5B,uBAAuB;IACtB,CAAC,sBAAsB,CAAC;CAE3B,MAAM,sBAAsB,aACzB,OAAe,gBAAgB,QAAQ,WAAW,UAAU,MAAM,OAAO,GAAG,EAC7E,EAAE,CACH;CAED,MAAM,oBAAoB,aACvB,OAAe;EACd,MAAM,mBAAmB,oBAAoB,GAAG;EAEhD,IAAI,qBAAqB,IACvB,OAAO;EAGT,gBAAgB,QAAQ,OAAO,kBAAkB,EAAE;EACnD,uBAAuB;EACvB,OAAO;IAET,CAAC,qBAAqB,sBAAsB,CAC7C;CAED,MAAM,gBAAgB,aACnB,UAAuB;EACtB,gBAAgB,MAAM,GAAG;EAEzB,IAAI,sBAAsB,MAAM,UAAU,EACxC;EAGF,IAAI,CAAC,OAAO,SAAS,MAAM,UAAU,EACnC;EAGF,IAAI,MAAM,aAAa,GAAG;GACxB,QAAQ,UAAU,MAAM,GAAG;GAC3B;;EAGF,MAAM,UAAU,iBAAiB;GAC/B,QAAQ,UAAU,MAAM,GAAG;GAC3B,YAAY,QAAQ,OAAO,MAAM,GAAG;KACnC,MAAM,UAAU;EAEnB,YAAY,QAAQ,IAAI,MAAM,IAAI,QAAQ;IAE5C,CAAC,gBAAgB,CAClB;CAED,MAAM,mBAAmB,aACtB,OAAoB,qBAA8B;EACjD,oBAAoB,MAAM,GAAG;EAC7B,kBAAkB,MAAM,GAAG;EAC3B,oBAAoB;GAAE,MAAM;GAAU;GAAO,CAAC;EAE9C,IAAI,kBACF,MAAM,UAAU;EAGlB,cAAc,MAAM;IAEtB;EAAC;EAAqB;EAAqB;EAAmB;EAAc,CAC7E;CAED,MAAM,oBAAoB,kBAAkB;EAC1C,IAAI,iBAAiB,SAAS,UAAU,UAAU,QAAQ;EAE1D,OAAO,iBAAiB,KAAK,gBAAgB,QAAQ,SAAS,GAAG;GAC/D,MAAM,QAAQ,gBAAgB,QAAQ,OAAO;GAE7C,IAAI,OAAO;IACT,iBAAiB,OAAO,KAAK;IAC7B,kBAAkB;;;EAItB,uBAAuB;IACtB,CAAC,kBAAkB,sBAAsB,CAAC;CAE7C,MAAM,cAAc,aACjB,OAAe;EACd,gBAAgB,GAAG;EACnB,oBAAoB,GAAG;EACvB,oBAAoB;GAAE,MAAM;GAAU;GAAI,CAAC;EAC3C,mBAAmB;IAErB;EAAC;EAAqB;EAAiB;EAAqB;EAAkB,CAC/E;CAED,MAAM,iBAAiB,aACpB,UAAuB;EACtB,gBAAgB,MAAM,GAAG;EAEzB,IAAI,MAAM,WACR;EAGF,MAAM,UAAU;EAEhB,IAAI,oBAAoB;GACtB,YAAY,MAAM,GAAG;GACrB;;EAGF,oBAAoB;GAAE,MAAM;GAAU,IAAI,MAAM;GAAI,OAAO,EAAE,WAAW,MAAM;GAAE,CAAC;EACjF,oBAAoB,MAAM,GAAG;EAE7B,MAAM,UAAU,iBAAiB;GAC/B,gBAAgB,QAAQ,OAAO,MAAM,GAAG;GACxC,YAAY,MAAM,GAAG;SACU;EAEjC,gBAAgB,QAAQ,IAAI,MAAM,IAAI,QAAQ;IAEhD;EAAC;EAAqB;EAAiB;EAAqB;EAAa;EAAmB,CAC7F;CAED,MAAM,OAAO,aACV,OAAwB;EACvB,IAAI,OAAO,OAAO;GAChB,mBAAmB;GACnB,UAAU,QAAQ,QAAQ,eAAe;GACzC;;EAGF,MAAM,UAAU,MAAM,UAAU,QAAQ,GAAG,GAAG,EAAE;EAEhD,IAAI,CAAC,SACH;EAGF,MAAM,QAAQ,UAAU,QAAQ,MAAM,SAAS,KAAK,OAAO,QAAQ;EAEnE,IAAI,CAAC,OAAO;GACV,kBAAkB,QAAQ;GAC1B;;EAGF,eAAe,MAAM;IAEvB;EAAC;EAAgB;EAAmB;EAAkB,CACvD;CAED,gBAAgB;EACd,QAAQ,UAAU;IACjB,CAAC,KAAK,CAAC;CAEV,MAAM,oBAAoB,aACvB,SAA+B,kBAA6C;EAC3E,MAAM,KAAK,QAAQ,MAAM,eAAe,MAAM,eAAe;EAE7D,OAAO;GACL,GAAG;GACH,GAAG;GACH;GACA,MAAM,QAAQ,QAAQ,eAAe,QAAQ;GAC7C,SAAS,QAAQ,WAAW,eAAe,WAAW;GACtD,WAAW,QAAQ,aAAa,eAAe,aAAa;GAC5D,WAAW,QAAQ,aAAa,eAAe,aAAa;GAC5D,WAAW,eAAe,aAAa,KAAK,KAAK;GACjD,eAAe,QAAQ,iBAAiB,eAAe,iBAAiB;GACxE,WAAW;GACZ;IAEH,CAAC,WAAW,UAAU,CACvB;CAED,MAAM,cAAc,aACjB,OAAoB,qBAA8B;EAGjD,IAFqB,UAAU,QAAQ,MAAM,SAAS,KAAK,OAAO,MAAM,GAExD,IAAI,UAAU,QAAQ,SAAS,SAAS,SAAS;GAC/D,iBAAiB,OAAO,iBAAiB;GACzC;;EAGF,MAAM,mBAAmB,oBAAoB,MAAM,GAAG;EAEtD,IAAI,qBAAqB,IAAI;GAC3B,gBAAgB,QAAQ,KAAK,MAAM;GACnC,uBAAuB;GACvB;;EAGF,gBAAgB,QAAQ,oBAAoB;IAE9C;EAAC;EAAqB;EAAkB;EAAsB,CAC/D;CAED,MAAM,SAAS,aACZ,IAAY,YAAoD;EAC/D,MAAM,gBAAgB,UAAU,QAAQ,MAAM,UAAU,MAAM,OAAO,GAAG;EACxE,MAAM,mBAAmB,oBAAoB,GAAG;EAChD,MAAM,cACJ,qBAAqB,KAAK,KAAA,IAAY,gBAAgB,QAAQ;EAGhE,YAFc,kBAAkB;GAAE,GAAG;GAAS;GAAI,EAAE,iBAAiB,YAEpD,EAAE,MAAM;EAEzB,OAAO;GACL;GACA,SAAS,gBAAgB,OAAO,IAAI,YAAY;GAChD,aAAa,KAAK,GAAG;GACtB;IAEH;EAAC;EAAmB;EAAqB;EAAM;EAAY,CAC5D;CAED,MAAM,OAAO,aACV,UAAuC;EACtC,MAAM,UAAU,kBAAkB,MAAM;EACxC,MAAM,KAAK,QAAQ,MAAM,eAAe;EACxC,MAAM,gBAAgB,UAAU,QAAQ,MAAM,UAAU,MAAM,OAAO,GAAG;EACxE,MAAM,mBAAmB,oBAAoB,GAAG;EAChD,MAAM,cACJ,qBAAqB,KAAK,KAAA,IAAY,gBAAgB,QAAQ;EAGhE,YAFc,kBAAkB;GAAE,GAAG;GAAS;GAAI,EAAE,iBAAiB,YAEpD,EAAE,KAAK;EAExB,OAAO;GACL;GACA,SAAS,gBAAgB,OAAO,IAAI,YAAY;GAChD,aAAa,KAAK,GAAG;GACtB;IAEH;EAAC;EAAmB;EAAqB;EAAM;EAAQ;EAAY,CACpE;CAED,MAAM,UAAU,kBAAkB,KAAK,MAAM,EAAE,CAAC,KAAK,CAAC;CAEtD,gBAAgB;EACd,SAAS,UAAU;EAEnB,IAAI,UAAU,QAAQ,SAAS,OAAO;GACpC,MAAM,gBAAgB,UAAU,QAAQ,MAAM,GAAG,MAAM;GACvD,MAAM,eAAe,UAAU,QAAQ,MAAM,MAAM,CAAC,KAAK,WAAW;IAClE,GAAG;IACH,WAAW;IACZ,EAAE;GAEH,aAAa,SAAS,UAAU;IAC9B,gBAAgB,MAAM,GAAG;IACzB,oBAAoB,MAAM,GAAG;KAC7B;GAEF,gBAAgB,UAAU,CAAC,GAAG,cAAc,GAAG,gBAAgB,QAAQ;GACvE,uBAAuB;GACvB,oBAAoB;IAAE,MAAM;IAAO,QAAQ;IAAe,CAAC;GAC3D;;EAGF,mBAAmB;IAClB;EACD;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;CAaF,OAAO;EACL;EACA;EACA,YAdiB,eACV;GACL;GACA;GACA;GACA;GACA;GACD,GACD;GAAC;GAAmB;GAAM;GAAS;GAAM;GAAO,CAMtC;EACV;EACA;EACD"}
@@ -0,0 +1,69 @@
1
+ /*! © 2026 Yahoo, Inc. UDS Mobile v0.0.0-development */
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ //#region src/components/Toast/utils.ts
4
+ const DEFAULT_TOAST_AUTO_CLOSE = 6e3;
5
+ const DEFAULT_TOAST_PLACEMENT = "bottom-center";
6
+ const DEFAULT_MAX_VISIBLE_TOASTS = 3;
7
+ const DEFAULT_TOAST_INSETS = {
8
+ top: 16,
9
+ bottom: 16,
10
+ horizontal: 16
11
+ };
12
+ const TOAST_ENTER_ANIMATION_DURATION = 200;
13
+ const TOAST_EXIT_ANIMATION_DURATION = 150;
14
+ const TOAST_ANIMATION_TRANSLATE_OFFSET = 16;
15
+ const TOAST_SWIPE_DISMISS_TRANSLATE_OFFSET = 96;
16
+ const TOAST_SWIPE_DISMISS_TRANSLATION = 50;
17
+ const TOAST_SWIPE_DISMISS_VELOCITY = 500;
18
+ const TOAST_SWIPE_OPPOSITE_DIRECTION_FACTOR = .2;
19
+ let toastIdCounter = 0;
20
+ function createToastId() {
21
+ toastIdCounter += 1;
22
+ return `toast-${toastIdCounter}`;
23
+ }
24
+ function isPersistentAutoClose(autoClose) {
25
+ return autoClose === false;
26
+ }
27
+ function isToastShowOptions(input) {
28
+ return "actionButton" in input || "children" in input || "closeIcon" in input || "closeOnAction" in input || "autoClose" in input || "dismissible" in input || "id" in input || "message" in input || "onActionPress" in input || "onClickActionButton" in input || "onClickCloseButton" in input || "onClose" in input || "onHide" in input || "onShow" in input || "placement" in input || "size" in input || "startIcon" in input || "variant" in input;
29
+ }
30
+ function resolveToastInput(input) {
31
+ if (input == null || typeof input !== "object") return { message: input };
32
+ return isToastShowOptions(input) ? input : { message: input };
33
+ }
34
+ function toastReducer(state, action) {
35
+ switch (action.type) {
36
+ case "upsert": {
37
+ const existingIndex = state.findIndex((toast) => toast.id === action.toast.id);
38
+ if (existingIndex === -1) return [...state, action.toast];
39
+ const next = [...state];
40
+ next[existingIndex] = action.toast;
41
+ return next;
42
+ }
43
+ case "update": return state.map((toast) => toast.id === action.id ? {
44
+ ...toast,
45
+ ...action.toast,
46
+ id: toast.id
47
+ } : toast);
48
+ case "remove": return state.filter((toast) => toast.id !== action.id);
49
+ case "set": return action.toasts;
50
+ case "removeAll": return [];
51
+ }
52
+ }
53
+ //#endregion
54
+ exports.DEFAULT_MAX_VISIBLE_TOASTS = DEFAULT_MAX_VISIBLE_TOASTS;
55
+ exports.DEFAULT_TOAST_AUTO_CLOSE = DEFAULT_TOAST_AUTO_CLOSE;
56
+ exports.DEFAULT_TOAST_INSETS = DEFAULT_TOAST_INSETS;
57
+ exports.DEFAULT_TOAST_PLACEMENT = DEFAULT_TOAST_PLACEMENT;
58
+ exports.TOAST_ANIMATION_TRANSLATE_OFFSET = TOAST_ANIMATION_TRANSLATE_OFFSET;
59
+ exports.TOAST_ENTER_ANIMATION_DURATION = TOAST_ENTER_ANIMATION_DURATION;
60
+ exports.TOAST_EXIT_ANIMATION_DURATION = TOAST_EXIT_ANIMATION_DURATION;
61
+ exports.TOAST_SWIPE_DISMISS_TRANSLATE_OFFSET = TOAST_SWIPE_DISMISS_TRANSLATE_OFFSET;
62
+ exports.TOAST_SWIPE_DISMISS_TRANSLATION = TOAST_SWIPE_DISMISS_TRANSLATION;
63
+ exports.TOAST_SWIPE_DISMISS_VELOCITY = TOAST_SWIPE_DISMISS_VELOCITY;
64
+ exports.TOAST_SWIPE_OPPOSITE_DIRECTION_FACTOR = TOAST_SWIPE_OPPOSITE_DIRECTION_FACTOR;
65
+ exports.createToastId = createToastId;
66
+ exports.isPersistentAutoClose = isPersistentAutoClose;
67
+ exports.isToastShowOptions = isToastShowOptions;
68
+ exports.resolveToastInput = resolveToastInput;
69
+ exports.toastReducer = toastReducer;
@@ -0,0 +1,27 @@
1
+
2
+ import { ToastAction, ToastAutoClose, ToastRecord, ToastShowInput } from "./types.cjs";
3
+
4
+ //#region src/components/Toast/utils.d.ts
5
+ declare const DEFAULT_TOAST_AUTO_CLOSE = 6000;
6
+ declare const DEFAULT_TOAST_PLACEMENT = "bottom-center";
7
+ declare const DEFAULT_MAX_VISIBLE_TOASTS = 3;
8
+ declare const DEFAULT_TOAST_INSETS: {
9
+ readonly top: 16;
10
+ readonly bottom: 16;
11
+ readonly horizontal: 16;
12
+ };
13
+ declare const TOAST_ENTER_ANIMATION_DURATION = 200;
14
+ declare const TOAST_EXIT_ANIMATION_DURATION = 150;
15
+ declare const TOAST_ANIMATION_TRANSLATE_OFFSET = 16;
16
+ declare const TOAST_SWIPE_DISMISS_TRANSLATE_OFFSET = 96;
17
+ declare const TOAST_SWIPE_DISMISS_TRANSLATION = 50;
18
+ declare const TOAST_SWIPE_DISMISS_VELOCITY = 500;
19
+ declare const TOAST_SWIPE_OPPOSITE_DIRECTION_FACTOR = 0.2;
20
+ declare function createToastId(): string;
21
+ declare function isPersistentAutoClose(autoClose: ToastAutoClose): autoClose is false;
22
+ declare function isToastShowOptions(input: object): input is Partial<ToastRecord>;
23
+ declare function resolveToastInput(input: ToastShowInput): Partial<ToastRecord>;
24
+ declare function toastReducer(state: ToastRecord[], action: ToastAction): ToastRecord[];
25
+ //#endregion
26
+ export { DEFAULT_MAX_VISIBLE_TOASTS, DEFAULT_TOAST_AUTO_CLOSE, DEFAULT_TOAST_INSETS, DEFAULT_TOAST_PLACEMENT, TOAST_ANIMATION_TRANSLATE_OFFSET, TOAST_ENTER_ANIMATION_DURATION, TOAST_EXIT_ANIMATION_DURATION, TOAST_SWIPE_DISMISS_TRANSLATE_OFFSET, TOAST_SWIPE_DISMISS_TRANSLATION, TOAST_SWIPE_DISMISS_VELOCITY, TOAST_SWIPE_OPPOSITE_DIRECTION_FACTOR, createToastId, isPersistentAutoClose, isToastShowOptions, resolveToastInput, toastReducer };
27
+ //# sourceMappingURL=utils.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.cts","names":[],"sources":["../../../src/components/Toast/utils.ts"],"mappings":";;;;cAIM,wBAAA;AAAA,cACA,uBAAA;AAAA,cACA,0BAAA;AAAA,cACA,oBAAA;EAAA;;;;cAKA,8BAAA;AAAA,cACA,6BAAA;AAAA,cACA,gCAAA;AAAA,cACA,oCAAA;AAAA,cACA,+BAAA;AAAA,cACA,4BAAA;AAAA,cACA,qCAAA;AAAA,iBAIG,aAAA,CAAA;AAAA,iBAKA,qBAAA,CAAsB,SAAA,EAAW,cAAA,GAAiB,SAAA;AAAA,iBAIlD,kBAAA,CAAmB,KAAA,WAAgB,KAAA,IAAS,OAAA,CAAQ,WAAA;AAAA,iBAuBpD,iBAAA,CAAkB,KAAA,EAAO,cAAA,GAAiB,OAAA,CAAQ,WAAA;AAAA,iBAQlD,YAAA,CAAa,KAAA,EAAO,WAAA,IAAe,MAAA,EAAQ,WAAA,GAAc,WAAA"}
@@ -0,0 +1,27 @@
1
+
2
+ import { ToastAction, ToastAutoClose, ToastRecord, ToastShowInput } from "./types.js";
3
+
4
+ //#region src/components/Toast/utils.d.ts
5
+ declare const DEFAULT_TOAST_AUTO_CLOSE = 6000;
6
+ declare const DEFAULT_TOAST_PLACEMENT = "bottom-center";
7
+ declare const DEFAULT_MAX_VISIBLE_TOASTS = 3;
8
+ declare const DEFAULT_TOAST_INSETS: {
9
+ readonly top: 16;
10
+ readonly bottom: 16;
11
+ readonly horizontal: 16;
12
+ };
13
+ declare const TOAST_ENTER_ANIMATION_DURATION = 200;
14
+ declare const TOAST_EXIT_ANIMATION_DURATION = 150;
15
+ declare const TOAST_ANIMATION_TRANSLATE_OFFSET = 16;
16
+ declare const TOAST_SWIPE_DISMISS_TRANSLATE_OFFSET = 96;
17
+ declare const TOAST_SWIPE_DISMISS_TRANSLATION = 50;
18
+ declare const TOAST_SWIPE_DISMISS_VELOCITY = 500;
19
+ declare const TOAST_SWIPE_OPPOSITE_DIRECTION_FACTOR = 0.2;
20
+ declare function createToastId(): string;
21
+ declare function isPersistentAutoClose(autoClose: ToastAutoClose): autoClose is false;
22
+ declare function isToastShowOptions(input: object): input is Partial<ToastRecord>;
23
+ declare function resolveToastInput(input: ToastShowInput): Partial<ToastRecord>;
24
+ declare function toastReducer(state: ToastRecord[], action: ToastAction): ToastRecord[];
25
+ //#endregion
26
+ export { DEFAULT_MAX_VISIBLE_TOASTS, DEFAULT_TOAST_AUTO_CLOSE, DEFAULT_TOAST_INSETS, DEFAULT_TOAST_PLACEMENT, TOAST_ANIMATION_TRANSLATE_OFFSET, TOAST_ENTER_ANIMATION_DURATION, TOAST_EXIT_ANIMATION_DURATION, TOAST_SWIPE_DISMISS_TRANSLATE_OFFSET, TOAST_SWIPE_DISMISS_TRANSLATION, TOAST_SWIPE_DISMISS_VELOCITY, TOAST_SWIPE_OPPOSITE_DIRECTION_FACTOR, createToastId, isPersistentAutoClose, isToastShowOptions, resolveToastInput, toastReducer };
27
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","names":[],"sources":["../../../src/components/Toast/utils.ts"],"mappings":";;;;cAIM,wBAAA;AAAA,cACA,uBAAA;AAAA,cACA,0BAAA;AAAA,cACA,oBAAA;EAAA;;;;cAKA,8BAAA;AAAA,cACA,6BAAA;AAAA,cACA,gCAAA;AAAA,cACA,oCAAA;AAAA,cACA,+BAAA;AAAA,cACA,4BAAA;AAAA,cACA,qCAAA;AAAA,iBAIG,aAAA,CAAA;AAAA,iBAKA,qBAAA,CAAsB,SAAA,EAAW,cAAA,GAAiB,SAAA;AAAA,iBAIlD,kBAAA,CAAmB,KAAA,WAAgB,KAAA,IAAS,OAAA,CAAQ,WAAA;AAAA,iBAuBpD,iBAAA,CAAkB,KAAA,EAAO,cAAA,GAAiB,OAAA,CAAQ,WAAA;AAAA,iBAQlD,YAAA,CAAa,KAAA,EAAO,WAAA,IAAe,MAAA,EAAQ,WAAA,GAAc,WAAA"}
@@ -0,0 +1,55 @@
1
+ /*! © 2026 Yahoo, Inc. UDS Mobile v0.0.0-development */
2
+ //#region src/components/Toast/utils.ts
3
+ const DEFAULT_TOAST_AUTO_CLOSE = 6e3;
4
+ const DEFAULT_TOAST_PLACEMENT = "bottom-center";
5
+ const DEFAULT_MAX_VISIBLE_TOASTS = 3;
6
+ const DEFAULT_TOAST_INSETS = {
7
+ top: 16,
8
+ bottom: 16,
9
+ horizontal: 16
10
+ };
11
+ const TOAST_ENTER_ANIMATION_DURATION = 200;
12
+ const TOAST_EXIT_ANIMATION_DURATION = 150;
13
+ const TOAST_ANIMATION_TRANSLATE_OFFSET = 16;
14
+ const TOAST_SWIPE_DISMISS_TRANSLATE_OFFSET = 96;
15
+ const TOAST_SWIPE_DISMISS_TRANSLATION = 50;
16
+ const TOAST_SWIPE_DISMISS_VELOCITY = 500;
17
+ const TOAST_SWIPE_OPPOSITE_DIRECTION_FACTOR = .2;
18
+ let toastIdCounter = 0;
19
+ function createToastId() {
20
+ toastIdCounter += 1;
21
+ return `toast-${toastIdCounter}`;
22
+ }
23
+ function isPersistentAutoClose(autoClose) {
24
+ return autoClose === false;
25
+ }
26
+ function isToastShowOptions(input) {
27
+ return "actionButton" in input || "children" in input || "closeIcon" in input || "closeOnAction" in input || "autoClose" in input || "dismissible" in input || "id" in input || "message" in input || "onActionPress" in input || "onClickActionButton" in input || "onClickCloseButton" in input || "onClose" in input || "onHide" in input || "onShow" in input || "placement" in input || "size" in input || "startIcon" in input || "variant" in input;
28
+ }
29
+ function resolveToastInput(input) {
30
+ if (input == null || typeof input !== "object") return { message: input };
31
+ return isToastShowOptions(input) ? input : { message: input };
32
+ }
33
+ function toastReducer(state, action) {
34
+ switch (action.type) {
35
+ case "upsert": {
36
+ const existingIndex = state.findIndex((toast) => toast.id === action.toast.id);
37
+ if (existingIndex === -1) return [...state, action.toast];
38
+ const next = [...state];
39
+ next[existingIndex] = action.toast;
40
+ return next;
41
+ }
42
+ case "update": return state.map((toast) => toast.id === action.id ? {
43
+ ...toast,
44
+ ...action.toast,
45
+ id: toast.id
46
+ } : toast);
47
+ case "remove": return state.filter((toast) => toast.id !== action.id);
48
+ case "set": return action.toasts;
49
+ case "removeAll": return [];
50
+ }
51
+ }
52
+ //#endregion
53
+ export { DEFAULT_MAX_VISIBLE_TOASTS, DEFAULT_TOAST_AUTO_CLOSE, DEFAULT_TOAST_INSETS, DEFAULT_TOAST_PLACEMENT, TOAST_ANIMATION_TRANSLATE_OFFSET, TOAST_ENTER_ANIMATION_DURATION, TOAST_EXIT_ANIMATION_DURATION, TOAST_SWIPE_DISMISS_TRANSLATE_OFFSET, TOAST_SWIPE_DISMISS_TRANSLATION, TOAST_SWIPE_DISMISS_VELOCITY, TOAST_SWIPE_OPPOSITE_DIRECTION_FACTOR, createToastId, isPersistentAutoClose, isToastShowOptions, resolveToastInput, toastReducer };
54
+
55
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","names":[],"sources":["../../../src/components/Toast/utils.ts"],"sourcesContent":["import type { ReactNode } from 'react';\n\nimport type { ToastAction, ToastAutoClose, ToastRecord, ToastShowInput } from './types';\n\nconst DEFAULT_TOAST_AUTO_CLOSE = 6_000;\nconst DEFAULT_TOAST_PLACEMENT = 'bottom-center';\nconst DEFAULT_MAX_VISIBLE_TOASTS = 3;\nconst DEFAULT_TOAST_INSETS = {\n top: 16,\n bottom: 16,\n horizontal: 16,\n} as const;\nconst TOAST_ENTER_ANIMATION_DURATION = 200;\nconst TOAST_EXIT_ANIMATION_DURATION = 150;\nconst TOAST_ANIMATION_TRANSLATE_OFFSET = 16;\nconst TOAST_SWIPE_DISMISS_TRANSLATE_OFFSET = 96;\nconst TOAST_SWIPE_DISMISS_TRANSLATION = 50;\nconst TOAST_SWIPE_DISMISS_VELOCITY = 500;\nconst TOAST_SWIPE_OPPOSITE_DIRECTION_FACTOR = 0.2;\n\nlet toastIdCounter = 0;\n\nfunction createToastId(): string {\n toastIdCounter += 1;\n return `toast-${toastIdCounter}`;\n}\n\nfunction isPersistentAutoClose(autoClose: ToastAutoClose): autoClose is false {\n return autoClose === false;\n}\n\nfunction isToastShowOptions(input: object): input is Partial<ToastRecord> {\n return (\n 'actionButton' in input ||\n 'children' in input ||\n 'closeIcon' in input ||\n 'closeOnAction' in input ||\n 'autoClose' in input ||\n 'dismissible' in input ||\n 'id' in input ||\n 'message' in input ||\n 'onActionPress' in input ||\n 'onClickActionButton' in input ||\n 'onClickCloseButton' in input ||\n 'onClose' in input ||\n 'onHide' in input ||\n 'onShow' in input ||\n 'placement' in input ||\n 'size' in input ||\n 'startIcon' in input ||\n 'variant' in input\n );\n}\n\nfunction resolveToastInput(input: ToastShowInput): Partial<ToastRecord> {\n if (input == null || typeof input !== 'object') {\n return { message: input };\n }\n\n return isToastShowOptions(input) ? input : { message: input as ReactNode };\n}\n\nfunction toastReducer(state: ToastRecord[], action: ToastAction): ToastRecord[] {\n switch (action.type) {\n case 'upsert': {\n const existingIndex = state.findIndex((toast) => toast.id === action.toast.id);\n\n if (existingIndex === -1) {\n return [...state, action.toast];\n }\n\n const next = [...state];\n next[existingIndex] = action.toast;\n return next;\n }\n case 'update': {\n return state.map((toast) =>\n toast.id === action.id ? { ...toast, ...action.toast, id: toast.id } : toast,\n );\n }\n case 'remove': {\n return state.filter((toast) => toast.id !== action.id);\n }\n case 'set': {\n return action.toasts;\n }\n case 'removeAll': {\n return [];\n }\n }\n}\n\nexport {\n createToastId,\n DEFAULT_MAX_VISIBLE_TOASTS,\n DEFAULT_TOAST_AUTO_CLOSE,\n DEFAULT_TOAST_INSETS,\n DEFAULT_TOAST_PLACEMENT,\n isPersistentAutoClose,\n isToastShowOptions,\n resolveToastInput,\n TOAST_ANIMATION_TRANSLATE_OFFSET,\n TOAST_ENTER_ANIMATION_DURATION,\n TOAST_EXIT_ANIMATION_DURATION,\n TOAST_SWIPE_DISMISS_TRANSLATE_OFFSET,\n TOAST_SWIPE_DISMISS_TRANSLATION,\n TOAST_SWIPE_DISMISS_VELOCITY,\n TOAST_SWIPE_OPPOSITE_DIRECTION_FACTOR,\n toastReducer,\n};\n"],"mappings":";;AAIA,MAAM,2BAA2B;AACjC,MAAM,0BAA0B;AAChC,MAAM,6BAA6B;AACnC,MAAM,uBAAuB;CAC3B,KAAK;CACL,QAAQ;CACR,YAAY;CACb;AACD,MAAM,iCAAiC;AACvC,MAAM,gCAAgC;AACtC,MAAM,mCAAmC;AACzC,MAAM,uCAAuC;AAC7C,MAAM,kCAAkC;AACxC,MAAM,+BAA+B;AACrC,MAAM,wCAAwC;AAE9C,IAAI,iBAAiB;AAErB,SAAS,gBAAwB;CAC/B,kBAAkB;CAClB,OAAO,SAAS;;AAGlB,SAAS,sBAAsB,WAA+C;CAC5E,OAAO,cAAc;;AAGvB,SAAS,mBAAmB,OAA8C;CACxE,OACE,kBAAkB,SAClB,cAAc,SACd,eAAe,SACf,mBAAmB,SACnB,eAAe,SACf,iBAAiB,SACjB,QAAQ,SACR,aAAa,SACb,mBAAmB,SACnB,yBAAyB,SACzB,wBAAwB,SACxB,aAAa,SACb,YAAY,SACZ,YAAY,SACZ,eAAe,SACf,UAAU,SACV,eAAe,SACf,aAAa;;AAIjB,SAAS,kBAAkB,OAA6C;CACtE,IAAI,SAAS,QAAQ,OAAO,UAAU,UACpC,OAAO,EAAE,SAAS,OAAO;CAG3B,OAAO,mBAAmB,MAAM,GAAG,QAAQ,EAAE,SAAS,OAAoB;;AAG5E,SAAS,aAAa,OAAsB,QAAoC;CAC9E,QAAQ,OAAO,MAAf;EACE,KAAK,UAAU;GACb,MAAM,gBAAgB,MAAM,WAAW,UAAU,MAAM,OAAO,OAAO,MAAM,GAAG;GAE9E,IAAI,kBAAkB,IACpB,OAAO,CAAC,GAAG,OAAO,OAAO,MAAM;GAGjC,MAAM,OAAO,CAAC,GAAG,MAAM;GACvB,KAAK,iBAAiB,OAAO;GAC7B,OAAO;;EAET,KAAK,UACH,OAAO,MAAM,KAAK,UAChB,MAAM,OAAO,OAAO,KAAK;GAAE,GAAG;GAAO,GAAG,OAAO;GAAO,IAAI,MAAM;GAAI,GAAG,MACxE;EAEH,KAAK,UACH,OAAO,MAAM,QAAQ,UAAU,MAAM,OAAO,OAAO,GAAG;EAExD,KAAK,OACH,OAAO,OAAO;EAEhB,KAAK,aACH,OAAO,EAAE"}
@@ -0,0 +1,20 @@
1
+ /*! © 2026 Yahoo, Inc. UDS Mobile v0.0.0-development */
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ require("../../../_virtual/_rolldown/runtime.cjs");
4
+ const require_portal = require("../../../portal.cjs");
5
+ let react_native = require("react-native");
6
+ let react_jsx_runtime = require("react/jsx-runtime");
7
+ let react_native_screens = require("react-native-screens");
8
+ //#region src/components/internal/Overlay/OverlayPortal.tsx
9
+ /**
10
+ * Internal portal wrapper for mobile overlays.
11
+ *
12
+ * Uses `FullWindowOverlay` on iOS when requested, otherwise renders through the UDS portal host.
13
+ */
14
+ function OverlayPortal({ children, useFullWindowOverlay = true }) {
15
+ require_portal.usePortalContext();
16
+ if (react_native.Platform.OS === "ios" && useFullWindowOverlay) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_native_screens.FullWindowOverlay, { children });
17
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_portal.Portal, { children });
18
+ }
19
+ //#endregion
20
+ exports.OverlayPortal = OverlayPortal;
@@ -0,0 +1,17 @@
1
+
2
+ import { OverlayPortalProps } from "./types.cjs";
3
+ import * as _$react from "react";
4
+
5
+ //#region src/components/internal/Overlay/OverlayPortal.d.ts
6
+ /**
7
+ * Internal portal wrapper for mobile overlays.
8
+ *
9
+ * Uses `FullWindowOverlay` on iOS when requested, otherwise renders through the UDS portal host.
10
+ */
11
+ declare function OverlayPortal({
12
+ children,
13
+ useFullWindowOverlay
14
+ }: OverlayPortalProps): _$react.JSX.Element;
15
+ //#endregion
16
+ export { OverlayPortal };
17
+ //# sourceMappingURL=OverlayPortal.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OverlayPortal.d.cts","names":[],"sources":["../../../../src/components/internal/Overlay/OverlayPortal.tsx"],"mappings":";;;;;;;;AAIkD;;iBAOzC,aAAA,CAAA;EAAgB,QAAA;EAAU;AAAA,GAA+B,kBAAA,GAAkB,OAAA,CAAA,GAAA,CAAA,OAAA"}
@@ -0,0 +1,17 @@
1
+
2
+ import { OverlayPortalProps } from "./types.js";
3
+ import * as _$react from "react";
4
+
5
+ //#region src/components/internal/Overlay/OverlayPortal.d.ts
6
+ /**
7
+ * Internal portal wrapper for mobile overlays.
8
+ *
9
+ * Uses `FullWindowOverlay` on iOS when requested, otherwise renders through the UDS portal host.
10
+ */
11
+ declare function OverlayPortal({
12
+ children,
13
+ useFullWindowOverlay
14
+ }: OverlayPortalProps): _$react.JSX.Element;
15
+ //#endregion
16
+ export { OverlayPortal };
17
+ //# sourceMappingURL=OverlayPortal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OverlayPortal.d.ts","names":[],"sources":["../../../../src/components/internal/Overlay/OverlayPortal.tsx"],"mappings":";;;;;;;;AAIkD;;iBAOzC,aAAA,CAAA;EAAgB,QAAA;EAAU;AAAA,GAA+B,kBAAA,GAAkB,OAAA,CAAA,GAAA,CAAA,OAAA"}
@@ -0,0 +1,20 @@
1
+ /*! © 2026 Yahoo, Inc. UDS Mobile v0.0.0-development */
2
+ import { Portal, usePortalContext } from "../../../portal.js";
3
+ import { Platform } from "react-native";
4
+ import { jsx } from "react/jsx-runtime";
5
+ import { FullWindowOverlay } from "react-native-screens";
6
+ //#region src/components/internal/Overlay/OverlayPortal.tsx
7
+ /**
8
+ * Internal portal wrapper for mobile overlays.
9
+ *
10
+ * Uses `FullWindowOverlay` on iOS when requested, otherwise renders through the UDS portal host.
11
+ */
12
+ function OverlayPortal({ children, useFullWindowOverlay = true }) {
13
+ usePortalContext();
14
+ if (Platform.OS === "ios" && useFullWindowOverlay) return /* @__PURE__ */ jsx(FullWindowOverlay, { children });
15
+ return /* @__PURE__ */ jsx(Portal, { children });
16
+ }
17
+ //#endregion
18
+ export { OverlayPortal };
19
+
20
+ //# sourceMappingURL=OverlayPortal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OverlayPortal.js","names":[],"sources":["../../../../src/components/internal/Overlay/OverlayPortal.tsx"],"sourcesContent":["import { Platform } from 'react-native';\nimport { FullWindowOverlay } from 'react-native-screens';\n\nimport { Portal, usePortalContext } from '../../../portal';\nimport type { OverlayPortalProps } from './types';\n\n/**\n * Internal portal wrapper for mobile overlays.\n *\n * Uses `FullWindowOverlay` on iOS when requested, otherwise renders through the UDS portal host.\n */\nfunction OverlayPortal({ children, useFullWindowOverlay = true }: OverlayPortalProps) {\n // Always assert UDSProvider presence, even when iOS renders through FullWindowOverlay.\n usePortalContext();\n\n if (Platform.OS === 'ios' && useFullWindowOverlay) {\n return <FullWindowOverlay>{children}</FullWindowOverlay>;\n }\n\n return <Portal>{children}</Portal>;\n}\n\nexport { OverlayPortal };\n"],"mappings":";;;;;;;;;;;AAWA,SAAS,cAAc,EAAE,UAAU,uBAAuB,QAA4B;CAEpF,kBAAkB;CAElB,IAAI,SAAS,OAAO,SAAS,sBAC3B,OAAO,oBAAC,mBAAD,EAAoB,UAA6B,CAAA;CAG1D,OAAO,oBAAC,QAAD,EAAS,UAAkB,CAAA"}
@@ -0,0 +1,6 @@
1
+ /*! © 2026 Yahoo, Inc. UDS Mobile v0.0.0-development */
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const require_components_internal_Overlay_OverlayPortal = require("./OverlayPortal.cjs");
4
+ const require_components_internal_Overlay_useControllableState = require("./useControllableState.cjs");
5
+ exports.OverlayPortal = require_components_internal_Overlay_OverlayPortal.OverlayPortal;
6
+ exports.useControllableState = require_components_internal_Overlay_useControllableState.useControllableState;
@@ -0,0 +1,5 @@
1
+
2
+ import { OverlayPortalProps, UseControllableStateProps, UseControllableStateResult } from "./types.cjs";
3
+ import { OverlayPortal } from "./OverlayPortal.cjs";
4
+ import { useControllableState } from "./useControllableState.cjs";
5
+ export { OverlayPortal, type OverlayPortalProps, type UseControllableStateProps, type UseControllableStateResult, useControllableState };
@@ -0,0 +1,5 @@
1
+
2
+ import { OverlayPortalProps, UseControllableStateProps, UseControllableStateResult } from "./types.js";
3
+ import { OverlayPortal } from "./OverlayPortal.js";
4
+ import { useControllableState } from "./useControllableState.js";
5
+ export { OverlayPortal, type OverlayPortalProps, type UseControllableStateProps, type UseControllableStateResult, useControllableState };
@@ -0,0 +1,4 @@
1
+ /*! © 2026 Yahoo, Inc. UDS Mobile v0.0.0-development */
2
+ import { OverlayPortal } from "./OverlayPortal.js";
3
+ import { useControllableState } from "./useControllableState.js";
4
+ export { OverlayPortal, useControllableState };
@@ -0,0 +1 @@
1
+ /*! © 2026 Yahoo, Inc. UDS Mobile v0.0.0-development */