react-native-terra-ui 0.10.0 → 0.10.2

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 (65) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/lib/module/components/button/Button.js +21 -13
  3. package/lib/module/components/button/Button.js.map +1 -1
  4. package/lib/module/components/button/index.js.map +1 -1
  5. package/lib/module/components/divider/Divider.js +127 -0
  6. package/lib/module/components/divider/Divider.js.map +1 -0
  7. package/lib/module/components/divider/index.js +4 -0
  8. package/lib/module/components/divider/index.js.map +1 -0
  9. package/lib/module/components/index.js +2 -0
  10. package/lib/module/components/index.js.map +1 -1
  11. package/lib/module/components/pressable/index.js +4 -0
  12. package/lib/module/components/pressable/index.js.map +1 -0
  13. package/lib/module/components/pressable/variants/PressableScale/index.js +110 -0
  14. package/lib/module/components/pressable/variants/PressableScale/index.js.map +1 -0
  15. package/lib/module/components/toast/ToastProvider.js +9 -236
  16. package/lib/module/components/toast/ToastProvider.js.map +1 -1
  17. package/lib/module/components/toast/hooks/use-toast-manager.js +96 -0
  18. package/lib/module/components/toast/hooks/use-toast-manager.js.map +1 -0
  19. package/lib/module/components/toast/parts/ToastAnimatedItem.js +34 -50
  20. package/lib/module/components/toast/parts/ToastAnimatedItem.js.map +1 -1
  21. package/lib/module/components/toast/parts/ToastOverlay.ios.js +36 -0
  22. package/lib/module/components/toast/parts/ToastOverlay.ios.js.map +1 -0
  23. package/lib/module/components/toast/parts/ToastOverlay.js +34 -0
  24. package/lib/module/components/toast/parts/ToastOverlay.js.map +1 -0
  25. package/lib/module/components/toast/parts/ToastViewport.js +91 -0
  26. package/lib/module/components/toast/parts/ToastViewport.js.map +1 -0
  27. package/lib/typescript/src/components/button/Button.d.ts +7 -0
  28. package/lib/typescript/src/components/button/Button.d.ts.map +1 -1
  29. package/lib/typescript/src/components/button/index.d.ts +1 -1
  30. package/lib/typescript/src/components/button/index.d.ts.map +1 -1
  31. package/lib/typescript/src/components/divider/Divider.d.ts +49 -0
  32. package/lib/typescript/src/components/divider/Divider.d.ts.map +1 -0
  33. package/lib/typescript/src/components/divider/index.d.ts +3 -0
  34. package/lib/typescript/src/components/divider/index.d.ts.map +1 -0
  35. package/lib/typescript/src/components/index.d.ts +2 -0
  36. package/lib/typescript/src/components/index.d.ts.map +1 -1
  37. package/lib/typescript/src/components/pressable/index.d.ts +3 -0
  38. package/lib/typescript/src/components/pressable/index.d.ts.map +1 -0
  39. package/lib/typescript/src/components/pressable/variants/PressableScale/index.d.ts +47 -0
  40. package/lib/typescript/src/components/pressable/variants/PressableScale/index.d.ts.map +1 -0
  41. package/lib/typescript/src/components/toast/ToastProvider.d.ts.map +1 -1
  42. package/lib/typescript/src/components/toast/hooks/use-toast-manager.d.ts +6 -0
  43. package/lib/typescript/src/components/toast/hooks/use-toast-manager.d.ts.map +1 -0
  44. package/lib/typescript/src/components/toast/parts/ToastAnimatedItem.d.ts +3 -2
  45. package/lib/typescript/src/components/toast/parts/ToastAnimatedItem.d.ts.map +1 -1
  46. package/lib/typescript/src/components/toast/parts/ToastOverlay.d.ts +28 -0
  47. package/lib/typescript/src/components/toast/parts/ToastOverlay.d.ts.map +1 -0
  48. package/lib/typescript/src/components/toast/parts/ToastOverlay.ios.d.ts +28 -0
  49. package/lib/typescript/src/components/toast/parts/ToastOverlay.ios.d.ts.map +1 -0
  50. package/lib/typescript/src/components/toast/parts/ToastViewport.d.ts +11 -0
  51. package/lib/typescript/src/components/toast/parts/ToastViewport.d.ts.map +1 -0
  52. package/package.json +1 -1
  53. package/src/components/button/Button.tsx +32 -13
  54. package/src/components/button/index.ts +1 -0
  55. package/src/components/divider/Divider.tsx +164 -0
  56. package/src/components/divider/index.ts +7 -0
  57. package/src/components/index.ts +2 -0
  58. package/src/components/pressable/index.ts +5 -0
  59. package/src/components/pressable/variants/PressableScale/index.tsx +166 -0
  60. package/src/components/toast/ToastProvider.tsx +7 -288
  61. package/src/components/toast/hooks/use-toast-manager.tsx +114 -0
  62. package/src/components/toast/parts/ToastAnimatedItem.tsx +32 -50
  63. package/src/components/toast/parts/ToastOverlay.ios.tsx +30 -0
  64. package/src/components/toast/parts/ToastOverlay.tsx +28 -0
  65. package/src/components/toast/parts/ToastViewport.tsx +104 -0
@@ -1,169 +1,21 @@
1
1
  "use strict";
2
2
 
3
- import { createContext, useCallback, useContext, useEffect, useMemo, useReducer, useRef } from "react";
4
- import { Keyboard, Platform } from "react-native";
5
- import Animated, { useAnimatedStyle, useSharedValue, withTiming } from "react-native-reanimated";
6
- import { useSafeAreaInsets } from "react-native-safe-area-context";
7
- import { ToastAnimatedItem } from "./parts/ToastAnimatedItem.js";
8
- import { DefaultToast } from "./Toast.js";
9
- import { setToastManager } from "./utils/controller.js";
3
+ import { createContext, useContext } from "react";
4
+ import { useToastManager } from "./hooks/use-toast-manager.js";
5
+ import { ToastViewport } from "./parts/ToastViewport.js";
10
6
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
11
- const DEFAULT_DURATION = 4000;
12
- const DEFAULT_MAX_VISIBLE_TOASTS = 3;
13
7
  const ToastManagerContext = /*#__PURE__*/createContext(null);
14
- function toastReducer(state, action) {
15
- switch (action.type) {
16
- case "show":
17
- return [...state.filter(toast => toast.id !== action.item.id), action.item];
18
- case "hide":
19
- return state.filter(toast => !action.ids.some(id => id === toast.id));
20
- case "hideAll":
21
- return [];
22
- case "hidePlacement":
23
- return state.filter(toast => toast.placement !== action.placement);
24
- }
25
- }
26
- function createDefaultToastComponent(config, manager) {
27
- return ({
28
- id,
29
- hide
30
- }) => /*#__PURE__*/_jsx(DefaultToast, {
31
- id: id,
32
- hide: toastId => hide(String(toastId)),
33
- variant: config.variant,
34
- label: config.label,
35
- description: config.description,
36
- icon: config.icon,
37
- actionLabel: config.actionLabel,
38
- showCloseButton: config.showCloseButton,
39
- onActionPress: () => config.onActionPress?.(manager)
40
- });
41
- }
42
- function isCustomToast(options) {
43
- return typeof options === "object" && options !== null && "component" in options;
44
- }
45
- function normalizePlacement(placement, fallback) {
46
- return placement ?? fallback;
47
- }
48
- function normalizeDuration(duration, fallback) {
49
- return duration ?? fallback;
50
- }
51
- function toastId(counter) {
52
- return `toast-${Date.now()}-${counter}`;
53
- }
54
8
  export function ToastProvider({
55
9
  children,
56
10
  defaultPlacement = "top",
57
- defaultDuration = DEFAULT_DURATION,
58
- maxVisibleToasts = DEFAULT_MAX_VISIBLE_TOASTS,
11
+ defaultDuration = 4000,
12
+ maxVisibleToasts = 3,
59
13
  offset
60
14
  }) {
61
- const [toasts, dispatch] = useReducer(toastReducer, []);
62
- const toastsRef = useRef([]);
63
- const counterRef = useRef(0);
64
- const timeoutsRef = useRef(new Map());
65
- useEffect(() => {
66
- toastsRef.current = toasts;
67
- }, [toasts]);
68
- const clearToastTimeout = useCallback(id => {
69
- const timeout = timeoutsRef.current.get(id);
70
- if (timeout) clearTimeout(timeout);
71
- timeoutsRef.current.delete(id);
72
- }, []);
73
- const hide = useCallback(id => {
74
- if (id === "all") {
75
- for (const toast of toastsRef.current) {
76
- clearToastTimeout(toast.id);
77
- toast.onHide?.();
78
- }
79
- toastsRef.current = [];
80
- dispatch({
81
- type: "hideAll"
82
- });
83
- return;
84
- }
85
- const lastToastId = toastsRef.current[toastsRef.current.length - 1]?.id;
86
- const ids = id === undefined ? lastToastId ? [lastToastId] : [] : Array.isArray(id) ? id : [id];
87
- if (ids.length === 0) return;
88
- for (const toastId of ids) {
89
- clearToastTimeout(toastId);
90
- toastsRef.current.find(toast => toast.id === toastId)?.onHide?.();
91
- }
92
- toastsRef.current = toastsRef.current.filter(toast => !ids.some(toastId => toastId === toast.id));
93
- dispatch({
94
- type: "hide",
95
- ids
96
- });
97
- }, [clearToastTimeout]);
98
- const managerRef = useRef({
99
- show: () => "",
100
- hide
101
- });
102
- const show = useCallback(options => {
103
- const nextId = typeof options === "object" && options !== null && "id" in options ? options.id ?? toastId(counterRef.current++) : toastId(counterRef.current++);
104
- const item = typeof options === "string" ? {
105
- id: nextId,
106
- component: createDefaultToastComponent({
107
- label: options
108
- }, managerRef.current),
109
- duration: defaultDuration,
110
- placement: defaultPlacement
111
- } : isCustomToast(options) ? {
112
- id: nextId,
113
- component: options.component,
114
- duration: normalizeDuration(options.duration, defaultDuration),
115
- placement: normalizePlacement(options.placement, defaultPlacement),
116
- onHide: options.onHide
117
- } : {
118
- id: nextId,
119
- component: createDefaultToastComponent(options, managerRef.current),
120
- duration: normalizeDuration(options.duration, defaultDuration),
121
- placement: normalizePlacement(options.placement, defaultPlacement),
122
- onHide: options.onHide
123
- };
124
- const oppositePlacement = item.placement === "top" ? "bottom" : "top";
125
- const oppositeToasts = toastsRef.current.filter(t => t.placement === oppositePlacement);
126
- if (oppositeToasts.length > 0) {
127
- for (const t of oppositeToasts) {
128
- clearToastTimeout(t.id);
129
- t.onHide?.();
130
- }
131
- toastsRef.current = toastsRef.current.filter(t => t.placement !== oppositePlacement);
132
- dispatch({
133
- type: "hidePlacement",
134
- placement: oppositePlacement
135
- });
136
- }
137
- clearToastTimeout(item.id);
138
- toastsRef.current = [...toastsRef.current.filter(toast => toast.id !== item.id), item];
139
- dispatch({
140
- type: "show",
141
- item
142
- });
143
- if (typeof options === "object" && options !== null && "onShow" in options) {
144
- options.onShow?.();
145
- }
146
- if (item.duration !== "persistent" && Number.isFinite(item.duration) && item.duration > 0) {
147
- const timeout = setTimeout(() => hide(item.id), item.duration);
148
- timeoutsRef.current.set(item.id, timeout);
149
- }
150
- return item.id;
151
- }, [clearToastTimeout, defaultDuration, defaultPlacement, hide]);
152
- const manager = useMemo(() => ({
153
- show,
154
- hide
155
- }), [show, hide]);
156
- managerRef.current = manager;
157
- useEffect(() => {
158
- setToastManager(manager);
159
- return () => {
160
- setToastManager(null);
161
- for (const timeout of timeoutsRef.current.values()) {
162
- clearTimeout(timeout);
163
- }
164
- timeoutsRef.current.clear();
165
- };
166
- }, [manager]);
15
+ const {
16
+ toasts,
17
+ manager
18
+ } = useToastManager(defaultPlacement, defaultDuration);
167
19
  const topToasts = toasts.filter(toast => toast.placement === "top");
168
20
  const bottomToasts = toasts.filter(toast => toast.placement === "bottom");
169
21
  return /*#__PURE__*/_jsxs(ToastManagerContext.Provider, {
@@ -183,85 +35,6 @@ export function ToastProvider({
183
35
  })]
184
36
  });
185
37
  }
186
- function ToastViewport({
187
- placement,
188
- toasts,
189
- manager,
190
- maxVisibleToasts,
191
- offset
192
- }) {
193
- const safeAreaInsets = useSafeAreaInsets();
194
- const heights = useSharedValue({});
195
- const total = useSharedValue(0);
196
- const keyboardHeight = useSharedValue(0);
197
- const baseBottom = offset?.bottom ?? safeAreaInsets.bottom + (Platform.OS === "ios" ? 6 : 12);
198
- const baseTop = offset?.top ?? safeAreaInsets.top + (Platform.OS === "ios" ? 0 : 12);
199
- useEffect(() => {
200
- if (placement !== "bottom") return;
201
- const showEvent = Platform.OS === "ios" ? "keyboardWillShow" : "keyboardDidShow";
202
- const hideEvent = Platform.OS === "ios" ? "keyboardWillHide" : "keyboardDidHide";
203
- const showSub = Keyboard.addListener(showEvent, e => {
204
- keyboardHeight.value = withTiming(e.endCoordinates.height);
205
- });
206
- const hideSub = Keyboard.addListener(hideEvent, () => {
207
- keyboardHeight.value = withTiming(0);
208
- });
209
- return () => {
210
- showSub.remove();
211
- hideSub.remove();
212
- };
213
- }, [keyboardHeight, placement]);
214
- const gap = Platform.OS === "ios" ? 6 : 12;
215
- const keyboardStyle = useAnimatedStyle(() => {
216
- if (placement === "top") return {
217
- top: baseTop
218
- };
219
- if (keyboardHeight.value > 0) {
220
- return {
221
- bottom: keyboardHeight.value + gap
222
- };
223
- }
224
- return {
225
- bottom: baseBottom
226
- };
227
- });
228
- useEffect(() => {
229
- total.value = toasts.length;
230
- const activeIds = new Set(toasts.map(toast => toast.id));
231
- const nextHeights = {};
232
- for (const [id, height] of Object.entries(heights.value)) {
233
- if (activeIds.has(id)) {
234
- nextHeights[id] = height;
235
- }
236
- }
237
- heights.value = nextHeights;
238
- }, [heights, toasts, total]);
239
- if (toasts.length === 0) return null;
240
- return /*#__PURE__*/_jsx(Animated.View, {
241
- pointerEvents: "box-none",
242
- style: [{
243
- position: "absolute",
244
- zIndex: 9999,
245
- elevation: 9999,
246
- left: offset?.left ?? safeAreaInsets.left + 12,
247
- right: offset?.right ?? safeAreaInsets.right + 12
248
- }, keyboardStyle],
249
- children: toasts.map((toast, index) => /*#__PURE__*/_jsx(ToastAnimatedItem, {
250
- heights: heights,
251
- id: toast.id,
252
- index: index,
253
- maxVisibleToasts: maxVisibleToasts,
254
- placement: placement,
255
- total: total,
256
- children: toast.component({
257
- id: toast.id,
258
- index,
259
- hide: manager.hide,
260
- show: manager.show
261
- })
262
- }, toast.id))
263
- });
264
- }
265
38
  export function useToast() {
266
39
  const manager = useContext(ToastManagerContext);
267
40
  if (!manager) {
@@ -1 +1 @@
1
- {"version":3,"names":["createContext","useCallback","useContext","useEffect","useMemo","useReducer","useRef","Keyboard","Platform","Animated","useAnimatedStyle","useSharedValue","withTiming","useSafeAreaInsets","ToastAnimatedItem","DefaultToast","setToastManager","jsx","_jsx","jsxs","_jsxs","DEFAULT_DURATION","DEFAULT_MAX_VISIBLE_TOASTS","ToastManagerContext","toastReducer","state","action","type","filter","toast","id","item","ids","some","placement","createDefaultToastComponent","config","manager","hide","toastId","String","variant","label","description","icon","actionLabel","showCloseButton","onActionPress","isCustomToast","options","normalizePlacement","fallback","normalizeDuration","duration","counter","Date","now","ToastProvider","children","defaultPlacement","defaultDuration","maxVisibleToasts","offset","toasts","dispatch","toastsRef","counterRef","timeoutsRef","Map","current","clearToastTimeout","timeout","get","clearTimeout","delete","onHide","lastToastId","length","undefined","Array","isArray","find","managerRef","show","nextId","component","oppositePlacement","oppositeToasts","t","onShow","Number","isFinite","setTimeout","set","values","clear","topToasts","bottomToasts","Provider","value","ToastViewport","safeAreaInsets","heights","total","keyboardHeight","baseBottom","bottom","OS","baseTop","top","showEvent","hideEvent","showSub","addListener","e","endCoordinates","height","hideSub","remove","gap","keyboardStyle","activeIds","Set","map","nextHeights","Object","entries","has","View","pointerEvents","style","position","zIndex","elevation","left","right","index","useToast","Error"],"sourceRoot":"../../../../src","sources":["components/toast/ToastProvider.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["createContext","useContext","useToastManager","ToastViewport","jsx","_jsx","jsxs","_jsxs","ToastManagerContext","ToastProvider","children","defaultPlacement","defaultDuration","maxVisibleToasts","offset","toasts","manager","topToasts","filter","toast","placement","bottomToasts","Provider","value","useToast","Error"],"sourceRoot":"../../../../src","sources":["components/toast/ToastProvider.tsx"],"mappings":";;AAAA,SAASA,aAAa,EAAEC,UAAU,QAAQ,OAAO;AAEjD,SAASC,eAAe;AACxB,SAASC,aAAa;AAAgC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAGtD,MAAMC,mBAAmB,gBAAGR,aAAa,CAAsB,IAAI,CAAC;AAEpE,OAAO,SAASS,aAAaA,CAAC;EAC5BC,QAAQ;EACRC,gBAAgB,GAAG,KAAK;EACxBC,eAAe,GAAG,IAAI;EACtBC,gBAAgB,GAAG,CAAC;EACpBC;AACkB,CAAC,EAAE;EACrB,MAAM;IAAEC,MAAM;IAAEC;EAAQ,CAAC,GAAGd,eAAe,CAACS,gBAAgB,EAAEC,eAAe,CAAC;EAC9E,MAAMK,SAAS,GAAGF,MAAM,CAACG,MAAM,CAAEC,KAAK,IAAKA,KAAK,CAACC,SAAS,KAAK,KAAK,CAAC;EACrE,MAAMC,YAAY,GAAGN,MAAM,CAACG,MAAM,CAAEC,KAAK,IAAKA,KAAK,CAACC,SAAS,KAAK,QAAQ,CAAC;EAE3E,oBACEb,KAAA,CAACC,mBAAmB,CAACc,QAAQ;IAACC,KAAK,EAAEP,OAAQ;IAAAN,QAAA,GAC1CA,QAAQ,eACTL,IAAA,CAACF,aAAa;MACZiB,SAAS,EAAC,KAAK;MACfL,MAAM,EAAEE,SAAU;MAClBD,OAAO,EAAEA,OAAQ;MACjBH,gBAAgB,EAAEA,gBAAiB;MACnCC,MAAM,EAAEA;IAAO,CAChB,CAAC,eACFT,IAAA,CAACF,aAAa;MACZiB,SAAS,EAAC,QAAQ;MAClBL,MAAM,EAAEM,YAAa;MACrBL,OAAO,EAAEA,OAAQ;MACjBH,gBAAgB,EAAEA,gBAAiB;MACnCC,MAAM,EAAEA;IAAO,CAChB,CAAC;EAAA,CAC0B,CAAC;AAEnC;AAEA,OAAO,SAASU,QAAQA,CAAA,EAAiB;EACvC,MAAMR,OAAO,GAAGf,UAAU,CAACO,mBAAmB,CAAC;EAC/C,IAAI,CAACQ,OAAO,EAAE;IACZ,MAAM,IAAIS,KAAK,CAAC,iDAAiD,CAAC;EACpE;EACA,OAAOT,OAAO;AAChB","ignoreList":[]}
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+
3
+ import { useCallback, useEffect, useMemo, useRef, useState } from "react";
4
+ import { DefaultToast } from "../Toast.js";
5
+ import { setToastManager } from "../utils/controller.js";
6
+ import { jsx as _jsx } from "react/jsx-runtime";
7
+ function createDefaultToastComponent(config) {
8
+ return ({
9
+ id,
10
+ hide,
11
+ show
12
+ }) => /*#__PURE__*/_jsx(DefaultToast, {
13
+ id: id,
14
+ hide: toastId => hide(String(toastId)),
15
+ variant: config.variant,
16
+ label: config.label,
17
+ description: config.description,
18
+ icon: config.icon,
19
+ actionLabel: config.actionLabel,
20
+ showCloseButton: config.showCloseButton,
21
+ onActionPress: () => config.onActionPress?.({
22
+ show,
23
+ hide
24
+ })
25
+ });
26
+ }
27
+ export function useToastManager(defaultPlacement, defaultDuration) {
28
+ const [toasts, setToasts] = useState([]);
29
+ // Synchronous state lets batched calls and lifecycle callbacks see the latest stack.
30
+ const toastsRef = useRef([]);
31
+ const counterRef = useRef(0);
32
+ const timeoutsRef = useRef(new Map());
33
+ const commit = useCallback(next => {
34
+ toastsRef.current = next;
35
+ setToasts(next);
36
+ }, []);
37
+ const clearToastTimeout = useCallback(id => {
38
+ const timeout = timeoutsRef.current.get(id);
39
+ if (timeout !== undefined) clearTimeout(timeout);
40
+ timeoutsRef.current.delete(id);
41
+ }, []);
42
+ const hide = useCallback(id => {
43
+ const current = toastsRef.current;
44
+ const ids = new Set(id === undefined ? current.slice(-1).map(toast => toast.id) : Array.isArray(id) ? id : [id]);
45
+ const removed = id === "all" ? current : current.filter(toast => ids.has(toast.id));
46
+ if (removed.length === 0) return;
47
+ for (const toast of removed) clearToastTimeout(toast.id);
48
+ commit(id === "all" ? [] : current.filter(toast => !ids.has(toast.id)));
49
+ for (const toast of removed) toast.onHide?.();
50
+ }, [clearToastTimeout, commit]);
51
+ const show = useCallback(options => {
52
+ const config = typeof options === "string" ? {
53
+ label: options
54
+ } : options;
55
+ const item = {
56
+ id: config.id ?? `toast-${Date.now()}-${counterRef.current++}`,
57
+ component: "component" in config ? config.component : createDefaultToastComponent(config),
58
+ duration: config.duration ?? defaultDuration,
59
+ placement: config.placement ?? defaultPlacement,
60
+ onHide: config.onHide
61
+ };
62
+ const current = toastsRef.current;
63
+ const removed = current.filter(toast => toast.placement !== item.placement);
64
+ for (const toast of removed) clearToastTimeout(toast.id);
65
+ clearToastTimeout(item.id);
66
+ commit([...current.filter(toast => toast.placement === item.placement && toast.id !== item.id), item]);
67
+ if (item.duration !== "persistent" && Number.isFinite(item.duration) && item.duration > 0) {
68
+ timeoutsRef.current.set(item.id, setTimeout(() => hide(item.id), item.duration));
69
+ }
70
+
71
+ // Finish the transaction before callbacks can replace or dismiss this item.
72
+ for (const toast of removed) toast.onHide?.();
73
+ if (toastsRef.current.includes(item)) config.onShow?.();
74
+ return item.id;
75
+ }, [clearToastTimeout, commit, defaultDuration, defaultPlacement, hide]);
76
+ const manager = useMemo(() => ({
77
+ show,
78
+ hide
79
+ }), [show, hide]);
80
+ useEffect(() => {
81
+ setToastManager(manager);
82
+ return () => setToastManager(null);
83
+ }, [manager]);
84
+ useEffect(() => {
85
+ const timeouts = timeoutsRef.current;
86
+ return () => {
87
+ for (const timeout of timeouts.values()) clearTimeout(timeout);
88
+ timeouts.clear();
89
+ };
90
+ }, []);
91
+ return {
92
+ toasts,
93
+ manager
94
+ };
95
+ }
96
+ //# sourceMappingURL=use-toast-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useCallback","useEffect","useMemo","useRef","useState","DefaultToast","setToastManager","jsx","_jsx","createDefaultToastComponent","config","id","hide","show","toastId","String","variant","label","description","icon","actionLabel","showCloseButton","onActionPress","useToastManager","defaultPlacement","defaultDuration","toasts","setToasts","toastsRef","counterRef","timeoutsRef","Map","commit","next","current","clearToastTimeout","timeout","get","undefined","clearTimeout","delete","ids","Set","slice","map","toast","Array","isArray","removed","filter","has","length","onHide","options","item","Date","now","component","duration","placement","Number","isFinite","set","setTimeout","includes","onShow","manager","timeouts","values","clear"],"sourceRoot":"../../../../../src","sources":["components/toast/hooks/use-toast-manager.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
 
3
3
  import { View } from "react-native-unistyles/components/native/View";
4
- import { StyleSheet } from "react-native";
5
- import Animated, { Easing, Extrapolation, interpolate, Keyframe, useAnimatedStyle, withSpring, withTiming } from "react-native-reanimated";
6
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
+ import Animated, { Easing, Keyframe, useAnimatedStyle, withSpring, withTiming } from "react-native-reanimated";
5
+ import { StyleSheet } from "react-native-unistyles";
6
+ import { jsx as _jsx } from "react/jsx-runtime";
7
7
  export const enteringTop = new Keyframe({
8
8
  0: {
9
9
  opacity: 1,
@@ -72,16 +72,7 @@ export const exitingBottom = new Keyframe({
72
72
  easing: Easing.bezier(0.4, 0, 1, 1)
73
73
  }
74
74
  }).duration(150);
75
- const opacityValue = [1, 0];
76
- const opacityTimingConfig = {
77
- duration: 300
78
- };
79
- const translateYValue = [0, 10];
80
- const translateYTimingConfig = {
81
- duration: 300
82
- };
83
- const scaleValue = [1, 0.97];
84
- const scaleTimingConfig = {
75
+ const timingConfig = {
85
76
  duration: 300
86
77
  };
87
78
  export function ToastAnimatedItem({
@@ -91,60 +82,54 @@ export function ToastAnimatedItem({
91
82
  index,
92
83
  maxVisibleToasts,
93
84
  placement,
94
- total
85
+ total,
86
+ frontId
95
87
  }) {
88
+ const depth = total - index - 1;
89
+ const isVisible = depth < maxVisibleToasts;
96
90
  const containerStyle = useAnimatedStyle(() => {
97
- const heightEntries = Object.entries(heights.value);
98
- const lastToastId = heightEntries[heightEntries.length - 1]?.[0];
99
- const lastToastHeight = lastToastId ? heights.value[lastToastId] : undefined;
100
- const totalValue = total.value;
91
+ const lastToastHeight = heights.value[frontId];
101
92
  const sign = placement === "top" ? 1 : -1;
102
- const inputRange = [totalValue - 1, totalValue - 2];
103
- const opacityInputRange = [totalValue - maxVisibleToasts, totalValue - maxVisibleToasts - 1];
104
- const opacity = interpolate(index, opacityInputRange, opacityValue);
105
- const translateY = interpolate(index, inputRange, [translateYValue[0], translateYValue[1] * sign], Extrapolation.CLAMP);
106
- const scale = interpolate(index, inputRange, scaleValue, {
107
- extrapolateLeft: Extrapolation.CLAMP
108
- });
109
93
  return {
110
94
  height: lastToastHeight ? withSpring(lastToastHeight, {
111
95
  damping: 100,
112
96
  stiffness: 1200,
113
97
  mass: 3
114
98
  }) : undefined,
115
- pointerEvents: opacity === 0 ? "none" : "auto",
116
- opacity: withTiming(opacity, opacityTimingConfig),
99
+ opacity: withTiming(isVisible ? 1 : 0, timingConfig),
117
100
  transform: [{
118
- translateY: withTiming(translateY, translateYTimingConfig)
101
+ translateY: withTiming(Math.min(depth, 1) * 10 * sign, timingConfig)
119
102
  }, {
120
- scale: withTiming(scale, scaleTimingConfig)
103
+ scale: withTiming(Math.max(0, 1 - depth * 0.03), timingConfig)
121
104
  }],
122
105
  zIndex: 1000 + index
123
106
  };
124
107
  });
125
- return /*#__PURE__*/_jsxs(Animated.View, {
108
+ return /*#__PURE__*/_jsx(Animated.View, {
126
109
  entering: placement === "top" ? enteringTop : enteringBottom,
127
110
  exiting: placement === "top" ? exitingTop : exitingBottom,
128
111
  pointerEvents: "box-none",
129
112
  style: [styles.position, placement === "top" ? styles.top : styles.bottom],
130
- children: [/*#__PURE__*/_jsx(Animated.View, {
113
+ children: /*#__PURE__*/_jsx(Animated.View, {
131
114
  style: containerStyle,
132
- children: children
133
- }), /*#__PURE__*/_jsx(View, {
134
- pointerEvents: "none",
135
- "aria-hidden": true,
136
- importantForAccessibility: "no-hide-descendants",
137
- accessibilityElementsHidden: true,
138
- style: styles.measurement,
139
- onLayout: event => {
140
- const measuredHeight = event.nativeEvent.layout.height;
141
- heights.value = {
142
- ...heights.value,
143
- [id]: measuredHeight
144
- };
145
- },
146
- children: process.env.NODE_ENV === "test" ? null : children
147
- })]
115
+ pointerEvents: isVisible ? "box-none" : "none",
116
+ accessibilityElementsHidden: !isVisible,
117
+ importantForAccessibility: isVisible ? "auto" : "no-hide-descendants",
118
+ "aria-hidden": !isVisible,
119
+ children: /*#__PURE__*/_jsx(View, {
120
+ style: [styles.content, placement === "top" ? styles.top : styles.bottom],
121
+ onLayout: event => {
122
+ const height = event.nativeEvent.layout.height;
123
+ if (heights.value[id] !== height) {
124
+ heights.value = {
125
+ ...heights.value,
126
+ [id]: height
127
+ };
128
+ }
129
+ },
130
+ children: children
131
+ })
132
+ })
148
133
  });
149
134
  }
150
135
  const styles = StyleSheet.create({
@@ -159,11 +144,10 @@ const styles = StyleSheet.create({
159
144
  bottom: {
160
145
  bottom: 0
161
146
  },
162
- measurement: {
147
+ content: {
163
148
  position: "absolute",
164
149
  left: 0,
165
- right: 0,
166
- opacity: 0
150
+ right: 0
167
151
  }
168
152
  });
169
153
  //# sourceMappingURL=ToastAnimatedItem.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["StyleSheet","Animated","Easing","Extrapolation","interpolate","Keyframe","useAnimatedStyle","withSpring","withTiming","jsx","_jsx","jsxs","_jsxs","enteringTop","opacity","transform","translateY","easing","out","cubic","duration","exitingTop","scale","bezier","enteringBottom","exitingBottom","opacityValue","opacityTimingConfig","translateYValue","translateYTimingConfig","scaleValue","scaleTimingConfig","ToastAnimatedItem","children","heights","id","index","maxVisibleToasts","placement","total","containerStyle","heightEntries","Object","entries","value","lastToastId","length","lastToastHeight","undefined","totalValue","sign","inputRange","opacityInputRange","CLAMP","extrapolateLeft","height","damping","stiffness","mass","pointerEvents","zIndex","View","entering","exiting","style","styles","position","top","bottom","importantForAccessibility","accessibilityElementsHidden","measurement","onLayout","event","measuredHeight","nativeEvent","layout","process","env","NODE_ENV","create","left","right"],"sourceRoot":"../../../../../src","sources":["components/toast/parts/ToastAnimatedItem.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Animated","Easing","Keyframe","useAnimatedStyle","withSpring","withTiming","StyleSheet","jsx","_jsx","enteringTop","opacity","transform","translateY","easing","out","cubic","duration","exitingTop","scale","bezier","enteringBottom","exitingBottom","timingConfig","ToastAnimatedItem","children","heights","id","index","maxVisibleToasts","placement","total","frontId","depth","isVisible","containerStyle","lastToastHeight","value","sign","height","damping","stiffness","mass","undefined","Math","min","max","zIndex","View","entering","exiting","pointerEvents","style","styles","position","top","bottom","accessibilityElementsHidden","importantForAccessibility","content","onLayout","event","nativeEvent","layout","create","left","right"],"sourceRoot":"../../../../../src","sources":["components/toast/parts/ToastAnimatedItem.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+
3
+ import { FullWindowOverlay } from "react-native-screens";
4
+
5
+ /**
6
+ * Lifts the toast viewport into a window of its own, above every presented
7
+ * view controller.
8
+ *
9
+ * Without this, a toast raised from a screen presented as `modal` or
10
+ * `formSheet` is invisible. `ToastProvider` sits above the app's navigator, so
11
+ * its viewport belongs to the root view controller's view; UIKit presents a
12
+ * sheet as a *separate* view controller on top of that one. They are different
13
+ * presentation layers, so no `zIndex` or `elevation` can lift the viewport over
14
+ * the sheet — the toast is mounted and animating, just underneath. The reader
15
+ * presses something, the app reports the result, and nothing appears.
16
+ *
17
+ * `FullWindowOverlay` hosts its children in its own `UIWindow`, which sits
18
+ * above presented controllers, so the viewport paints over a sheet the same way
19
+ * it paints over an ordinary screen.
20
+ *
21
+ * It covers the whole window, but it does not swallow the app's touches:
22
+ * `RNSFullWindowOverlay`'s `pointInside:` walks its subviews and answers NO
23
+ * anywhere they are not, so presses fall through to whatever is underneath.
24
+ *
25
+ * Mounted only alongside a non-empty viewport — `ToastViewport` returns `null`
26
+ * before reaching this — so an idle app carries no extra window.
27
+ */
28
+ import { jsx as _jsx } from "react/jsx-runtime";
29
+ export function ToastOverlay({
30
+ children
31
+ }) {
32
+ return /*#__PURE__*/_jsx(FullWindowOverlay, {
33
+ children: children
34
+ });
35
+ }
36
+ //# sourceMappingURL=ToastOverlay.ios.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["FullWindowOverlay","jsx","_jsx","ToastOverlay","children"],"sourceRoot":"../../../../../src","sources":["components/toast/parts/ToastOverlay.ios.tsx"],"mappings":";;AAEA,SAASA,iBAAiB,QAAQ,sBAAsB;;AAExD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAtBA,SAAAC,GAAA,IAAAC,IAAA;AAuBA,OAAO,SAASC,YAAYA,CAAC;EAAEC;AAAkC,CAAC,EAAE;EAClE,oBAAOF,IAAA,CAACF,iBAAiB;IAAAI,QAAA,EAAEA;EAAQ,CAAoB,CAAC;AAC1D","ignoreList":[]}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+
3
+ import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
4
+ /**
5
+ * Hosts the toast viewport where it already is, because on Android it is
6
+ * already in the right place.
7
+ *
8
+ * The iOS variant explains the problem: a sheet there is a separate view
9
+ * controller, so a toast in the root tree paints underneath it. Android does
10
+ * not have that problem for these screens. `react-native-screens` handles
11
+ * `formSheet` as a `StackPresentation` inside the screen stack (see
12
+ * `Screen.kt`), which lives in the Activity's own window — the same window as
13
+ * this provider — so the viewport's `elevation: 9999` puts it on top the
14
+ * ordinary way. Verified on an API 36 emulator: a toast raised from a
15
+ * `formSheet` route renders over that sheet.
16
+ *
17
+ * Not to be confused with `ScreenModalFragment`, which *is* a
18
+ * `BottomSheetDialogFragment` and so does carry its own `Window`. It backs a
19
+ * different presentation, not the `formSheet` route above. A toast raised from
20
+ * something hosted in a real `Dialog` — that fragment, or React Native's own
21
+ * `Modal` — would still be behind it, and `elevation` cannot cross windows.
22
+ * Untested, and left alone: `FullWindowOverlay` is iOS-only (elsewhere it warns
23
+ * and renders a plain `View`), so the remedy there would be to own a window
24
+ * too, via a React Native `Modal`, which brings its own back-button and
25
+ * touch-capture behaviour.
26
+ */
27
+ export function ToastOverlay({
28
+ children
29
+ }) {
30
+ return /*#__PURE__*/_jsx(_Fragment, {
31
+ children: children
32
+ });
33
+ }
34
+ //# sourceMappingURL=ToastOverlay.js.map