react-native-sooner 1.0.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 (80) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +376 -0
  3. package/lib/module/constants.js +40 -0
  4. package/lib/module/constants.js.map +1 -0
  5. package/lib/module/context.js +25 -0
  6. package/lib/module/context.js.map +1 -0
  7. package/lib/module/easings.js +9 -0
  8. package/lib/module/easings.js.map +1 -0
  9. package/lib/module/gestures.js +119 -0
  10. package/lib/module/gestures.js.map +1 -0
  11. package/lib/module/hooks.js +9 -0
  12. package/lib/module/hooks.js.map +1 -0
  13. package/lib/module/icons.js +332 -0
  14. package/lib/module/icons.js.map +1 -0
  15. package/lib/module/index.js +13 -0
  16. package/lib/module/index.js.map +1 -0
  17. package/lib/module/package.json +1 -0
  18. package/lib/module/state.js +200 -0
  19. package/lib/module/state.js.map +1 -0
  20. package/lib/module/theme.js +189 -0
  21. package/lib/module/theme.js.map +1 -0
  22. package/lib/module/toast.js +362 -0
  23. package/lib/module/toast.js.map +1 -0
  24. package/lib/module/toaster.js +198 -0
  25. package/lib/module/toaster.js.map +1 -0
  26. package/lib/module/types.js +4 -0
  27. package/lib/module/types.js.map +1 -0
  28. package/lib/module/use-app-state.js +13 -0
  29. package/lib/module/use-app-state.js.map +1 -0
  30. package/lib/module/use-pauseable-timer.js +18 -0
  31. package/lib/module/use-pauseable-timer.js.map +1 -0
  32. package/lib/module/use-toast-state.js +37 -0
  33. package/lib/module/use-toast-state.js.map +1 -0
  34. package/lib/typescript/package.json +1 -0
  35. package/lib/typescript/src/constants.d.ts +32 -0
  36. package/lib/typescript/src/constants.d.ts.map +1 -0
  37. package/lib/typescript/src/context.d.ts +20 -0
  38. package/lib/typescript/src/context.d.ts.map +1 -0
  39. package/lib/typescript/src/easings.d.ts +6 -0
  40. package/lib/typescript/src/easings.d.ts.map +1 -0
  41. package/lib/typescript/src/gestures.d.ts +17 -0
  42. package/lib/typescript/src/gestures.d.ts.map +1 -0
  43. package/lib/typescript/src/hooks.d.ts +5 -0
  44. package/lib/typescript/src/hooks.d.ts.map +1 -0
  45. package/lib/typescript/src/icons.d.ts +15 -0
  46. package/lib/typescript/src/icons.d.ts.map +1 -0
  47. package/lib/typescript/src/index.d.ts +12 -0
  48. package/lib/typescript/src/index.d.ts.map +1 -0
  49. package/lib/typescript/src/state.d.ts +66 -0
  50. package/lib/typescript/src/state.d.ts.map +1 -0
  51. package/lib/typescript/src/theme.d.ts +163 -0
  52. package/lib/typescript/src/theme.d.ts.map +1 -0
  53. package/lib/typescript/src/toast.d.ts +3 -0
  54. package/lib/typescript/src/toast.d.ts.map +1 -0
  55. package/lib/typescript/src/toaster.d.ts +3 -0
  56. package/lib/typescript/src/toaster.d.ts.map +1 -0
  57. package/lib/typescript/src/types.d.ts +264 -0
  58. package/lib/typescript/src/types.d.ts.map +1 -0
  59. package/lib/typescript/src/use-app-state.d.ts +3 -0
  60. package/lib/typescript/src/use-app-state.d.ts.map +1 -0
  61. package/lib/typescript/src/use-pauseable-timer.d.ts +2 -0
  62. package/lib/typescript/src/use-pauseable-timer.d.ts.map +1 -0
  63. package/lib/typescript/src/use-toast-state.d.ts +7 -0
  64. package/lib/typescript/src/use-toast-state.d.ts.map +1 -0
  65. package/package.json +152 -0
  66. package/src/constants.ts +44 -0
  67. package/src/context.tsx +38 -0
  68. package/src/easings.ts +7 -0
  69. package/src/gestures.tsx +135 -0
  70. package/src/hooks.ts +3 -0
  71. package/src/icons.tsx +227 -0
  72. package/src/index.tsx +48 -0
  73. package/src/state.ts +262 -0
  74. package/src/theme.ts +170 -0
  75. package/src/toast.tsx +429 -0
  76. package/src/toaster.tsx +221 -0
  77. package/src/types.ts +311 -0
  78. package/src/use-app-state.ts +15 -0
  79. package/src/use-pauseable-timer.ts +24 -0
  80. package/src/use-toast-state.ts +43 -0
@@ -0,0 +1,189 @@
1
+ "use strict";
2
+
3
+ import { Appearance, StyleSheet } from "react-native";
4
+ export function resolveTheme(theme) {
5
+ if (theme === "system") {
6
+ const scheme = Appearance.getColorScheme();
7
+ return scheme === "dark" ? "dark" : "light";
8
+ }
9
+ return theme;
10
+ }
11
+ export const colors = {
12
+ light: {
13
+ background: "#ffffff",
14
+ foreground: "#0f172a",
15
+ description: "#64748b",
16
+ border: "#e2e8f0",
17
+ success: "#22c55e",
18
+ error: "#ef4444",
19
+ warning: "#f59e0b",
20
+ info: "#3b82f6",
21
+ loading: "#6b7280"
22
+ },
23
+ dark: {
24
+ background: "#1e293b",
25
+ foreground: "#f8fafc",
26
+ description: "#94a3b8",
27
+ border: "#334155",
28
+ success: "#4ade80",
29
+ error: "#f87171",
30
+ warning: "#fbbf24",
31
+ info: "#60a5fa",
32
+ loading: "#9ca3af"
33
+ }
34
+ };
35
+ export const richColors = {
36
+ light: {
37
+ success: {
38
+ background: "#dcfce7",
39
+ foreground: "#166534",
40
+ border: "#bbf7d0"
41
+ },
42
+ error: {
43
+ background: "#fee2e2",
44
+ foreground: "#991b1b",
45
+ border: "#fecaca"
46
+ },
47
+ warning: {
48
+ background: "#fef3c7",
49
+ foreground: "#92400e",
50
+ border: "#fde68a"
51
+ },
52
+ info: {
53
+ background: "#dbeafe",
54
+ foreground: "#1e40af",
55
+ border: "#bfdbfe"
56
+ }
57
+ },
58
+ dark: {
59
+ success: {
60
+ background: "#166534",
61
+ foreground: "#dcfce7",
62
+ border: "#22c55e"
63
+ },
64
+ error: {
65
+ background: "#991b1b",
66
+ foreground: "#fee2e2",
67
+ border: "#ef4444"
68
+ },
69
+ warning: {
70
+ background: "#92400e",
71
+ foreground: "#fef3c7",
72
+ border: "#f59e0b"
73
+ },
74
+ info: {
75
+ background: "#1e40af",
76
+ foreground: "#dbeafe",
77
+ border: "#3b82f6"
78
+ }
79
+ }
80
+ };
81
+ export function getIconColor(type, theme, rich) {
82
+ if (type === "default" || type === "loading") {
83
+ return colors[theme].loading;
84
+ }
85
+ if (rich) {
86
+ const richColor = richColors[theme][type];
87
+ return richColor?.foreground ?? colors[theme][type];
88
+ }
89
+ return colors[theme][type];
90
+ }
91
+ export function getToastColors(type, theme, rich) {
92
+ const baseColors = colors[theme];
93
+ if (rich && type !== "default" && type !== "loading") {
94
+ const richColor = richColors[theme][type];
95
+ if (richColor) {
96
+ return {
97
+ background: richColor.background,
98
+ foreground: richColor.foreground,
99
+ description: richColor.foreground,
100
+ border: richColor.border
101
+ };
102
+ }
103
+ }
104
+ return {
105
+ background: baseColors.background,
106
+ foreground: baseColors.foreground,
107
+ description: baseColors.description,
108
+ border: baseColors.border
109
+ };
110
+ }
111
+ export const baseStyles = StyleSheet.create({
112
+ container: {
113
+ flexDirection: "row",
114
+ alignItems: "center",
115
+ paddingHorizontal: 16,
116
+ paddingVertical: 14,
117
+ borderRadius: 12,
118
+ borderWidth: 1,
119
+ shadowColor: "#000",
120
+ shadowOffset: {
121
+ width: 0,
122
+ height: 2
123
+ },
124
+ shadowOpacity: 0.1,
125
+ shadowRadius: 8,
126
+ elevation: 4,
127
+ minHeight: 52,
128
+ maxWidth: "100%"
129
+ },
130
+ content: {
131
+ flex: 1,
132
+ marginLeft: 12
133
+ },
134
+ contentNoIcon: {
135
+ marginLeft: 0
136
+ },
137
+ title: {
138
+ fontSize: 14,
139
+ fontWeight: "500",
140
+ lineHeight: 20
141
+ },
142
+ description: {
143
+ fontSize: 13,
144
+ lineHeight: 18,
145
+ marginTop: 2
146
+ },
147
+ actionsContainer: {
148
+ flexDirection: "row",
149
+ alignItems: "center",
150
+ marginLeft: 12,
151
+ gap: 8
152
+ },
153
+ actionButton: {
154
+ paddingHorizontal: 12,
155
+ paddingVertical: 6,
156
+ borderRadius: 6,
157
+ backgroundColor: "#0f172a"
158
+ },
159
+ actionButtonText: {
160
+ fontSize: 13,
161
+ fontWeight: "500",
162
+ color: "#ffffff"
163
+ },
164
+ cancelButton: {
165
+ paddingHorizontal: 12,
166
+ paddingVertical: 6,
167
+ borderRadius: 6,
168
+ backgroundColor: "transparent",
169
+ borderWidth: 1,
170
+ borderColor: "#e2e8f0"
171
+ },
172
+ cancelButtonText: {
173
+ fontSize: 13,
174
+ fontWeight: "500",
175
+ color: "#64748b"
176
+ },
177
+ closeButton: {
178
+ marginLeft: 8,
179
+ padding: 4,
180
+ borderRadius: 4
181
+ },
182
+ iconContainer: {
183
+ width: 20,
184
+ height: 20,
185
+ justifyContent: "center",
186
+ alignItems: "center"
187
+ }
188
+ });
189
+ //# sourceMappingURL=theme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Appearance","StyleSheet","resolveTheme","theme","scheme","getColorScheme","colors","light","background","foreground","description","border","success","error","warning","info","loading","dark","richColors","getIconColor","type","rich","richColor","getToastColors","baseColors","baseStyles","create","container","flexDirection","alignItems","paddingHorizontal","paddingVertical","borderRadius","borderWidth","shadowColor","shadowOffset","width","height","shadowOpacity","shadowRadius","elevation","minHeight","maxWidth","content","flex","marginLeft","contentNoIcon","title","fontSize","fontWeight","lineHeight","marginTop","actionsContainer","gap","actionButton","backgroundColor","actionButtonText","color","cancelButton","borderColor","cancelButtonText","closeButton","padding","iconContainer","justifyContent"],"sourceRoot":"..\\..\\src","sources":["theme.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,362 @@
1
+ "use strict";
2
+
3
+ import { useCallback, useEffect, useMemo, useRef } from "react";
4
+ import { Pressable, Text, View } from "react-native";
5
+ import { Gesture, GestureDetector } from "react-native-gesture-handler";
6
+ import Animated, { Easing, runOnJS, useAnimatedStyle, useSharedValue, withSpring, withTiming } from "react-native-reanimated";
7
+ import { ANIMATION_DEFAULTS, DAMPING_FACTOR, ENTRY_OFFSET, SNAP_BACK_DURATION, SWIPE_EXIT_DISTANCE, SWIPE_THRESHOLD, VELOCITY_THRESHOLD } from "./constants.js";
8
+ import { CloseIcon, getIcon } from "./icons.js";
9
+ import { baseStyles, getIconColor, getToastColors } from "./theme.js";
10
+ import { usePauseableTimer } from "./use-pauseable-timer.js";
11
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
12
+ let Haptics = null;
13
+ try {
14
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
15
+ Haptics = require("expo-haptics");
16
+ } catch {
17
+ // expo-haptics not available
18
+ }
19
+ function triggerHaptic(type = "light") {
20
+ if (!Haptics) return;
21
+ try {
22
+ switch (type) {
23
+ case "success":
24
+ Haptics.notificationAsync(Haptics.NotificationFeedbackType.Success);
25
+ break;
26
+ case "warning":
27
+ Haptics.notificationAsync(Haptics.NotificationFeedbackType.Warning);
28
+ break;
29
+ case "error":
30
+ Haptics.notificationAsync(Haptics.NotificationFeedbackType.Error);
31
+ break;
32
+ case "medium":
33
+ Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Medium);
34
+ break;
35
+ default:
36
+ Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Light);
37
+ }
38
+ } catch {
39
+ // ignore
40
+ }
41
+ }
42
+ function getSpringConfig(animation) {
43
+ return {
44
+ damping: animation.damping,
45
+ stiffness: animation.stiffness,
46
+ mass: animation.mass
47
+ };
48
+ }
49
+ function ToastIcon({
50
+ icon,
51
+ icons,
52
+ type,
53
+ iconColor
54
+ }) {
55
+ if (icon) {
56
+ return /*#__PURE__*/_jsx(View, {
57
+ style: baseStyles.iconContainer,
58
+ children: icon
59
+ });
60
+ }
61
+ if (icons && type in icons) {
62
+ const customIcon = icons[type];
63
+ if (customIcon) {
64
+ return /*#__PURE__*/_jsx(View, {
65
+ style: baseStyles.iconContainer,
66
+ children: customIcon
67
+ });
68
+ }
69
+ }
70
+ const defaultIcon = getIcon(type, iconColor);
71
+ if (defaultIcon) {
72
+ return /*#__PURE__*/_jsx(View, {
73
+ style: baseStyles.iconContainer,
74
+ children: defaultIcon
75
+ });
76
+ }
77
+ return null;
78
+ }
79
+ function ToastActions({
80
+ toast,
81
+ action,
82
+ cancel,
83
+ toastColors,
84
+ defaultStyles,
85
+ hapticFeedback
86
+ }) {
87
+ const handleActionPress = useCallback(() => {
88
+ if (hapticFeedback) triggerHaptic("medium");
89
+ action?.onClick(toast);
90
+ }, [action, toast, hapticFeedback]);
91
+ const handleCancelPress = useCallback(() => {
92
+ if (hapticFeedback) triggerHaptic("light");
93
+ cancel?.onClick(toast);
94
+ }, [cancel, toast, hapticFeedback]);
95
+ if (!action && !cancel) return null;
96
+ const cancelButtonStyle = {
97
+ ...baseStyles.cancelButton,
98
+ borderColor: toastColors.border,
99
+ ...defaultStyles?.cancelButton,
100
+ ...toast.styles?.cancelButton,
101
+ ...cancel?.style
102
+ };
103
+ const cancelTextStyle = {
104
+ ...baseStyles.cancelButtonText,
105
+ color: toastColors.description,
106
+ ...defaultStyles?.cancelButtonText,
107
+ ...toast.styles?.cancelButtonText,
108
+ ...cancel?.textStyle
109
+ };
110
+ const actionButtonStyle = {
111
+ ...baseStyles.actionButton,
112
+ backgroundColor: toastColors.foreground,
113
+ ...defaultStyles?.actionButton,
114
+ ...toast.styles?.actionButton,
115
+ ...action?.style
116
+ };
117
+ const actionTextStyle = {
118
+ ...baseStyles.actionButtonText,
119
+ color: toastColors.background,
120
+ ...defaultStyles?.actionButtonText,
121
+ ...toast.styles?.actionButtonText,
122
+ ...action?.textStyle
123
+ };
124
+ return /*#__PURE__*/_jsxs(View, {
125
+ style: baseStyles.actionsContainer,
126
+ children: [cancel && /*#__PURE__*/_jsx(Pressable, {
127
+ onPress: handleCancelPress,
128
+ style: cancelButtonStyle,
129
+ accessibilityLabel: cancel.label,
130
+ children: /*#__PURE__*/_jsx(Text, {
131
+ style: cancelTextStyle,
132
+ children: cancel.label
133
+ })
134
+ }), action && /*#__PURE__*/_jsx(Pressable, {
135
+ onPress: handleActionPress,
136
+ style: actionButtonStyle,
137
+ accessibilityLabel: action.label,
138
+ children: /*#__PURE__*/_jsx(Text, {
139
+ style: actionTextStyle,
140
+ children: action.label
141
+ })
142
+ })]
143
+ });
144
+ }
145
+ export function Toast({
146
+ toast,
147
+ position,
148
+ gap,
149
+ swipeToDismiss,
150
+ swipeDirection,
151
+ theme,
152
+ richColors,
153
+ closeButton,
154
+ icons,
155
+ defaultStyles,
156
+ defaultAnimation = ANIMATION_DEFAULTS,
157
+ onDismiss,
158
+ duration,
159
+ pauseOnAppBackground,
160
+ hapticFeedback = false
161
+ }) {
162
+ const animation = useMemo(() => {
163
+ const toastAnim = toast.animation;
164
+ return {
165
+ duration: toastAnim?.duration ?? defaultAnimation.duration ?? ANIMATION_DEFAULTS.duration,
166
+ exitDuration: toastAnim?.exitDuration ?? defaultAnimation.exitDuration ?? ANIMATION_DEFAULTS.exitDuration,
167
+ useSpring: toastAnim?.useSpring ?? defaultAnimation.useSpring ?? ANIMATION_DEFAULTS.useSpring,
168
+ damping: toastAnim?.damping ?? defaultAnimation.damping ?? ANIMATION_DEFAULTS.damping,
169
+ stiffness: toastAnim?.stiffness ?? defaultAnimation.stiffness ?? ANIMATION_DEFAULTS.stiffness,
170
+ mass: toastAnim?.mass ?? defaultAnimation.mass ?? ANIMATION_DEFAULTS.mass
171
+ };
172
+ }, [defaultAnimation, toast.animation]);
173
+ const opacity = useSharedValue(0);
174
+ const translateY = useSharedValue(position.startsWith("top") ? -ENTRY_OFFSET : ENTRY_OFFSET);
175
+ const translateX = useSharedValue(0);
176
+ const scale = useSharedValue(0.95);
177
+ const isExiting = useRef(false);
178
+ const canSwipeLeft = swipeDirection.includes("left");
179
+ const canSwipeRight = swipeDirection.includes("right");
180
+ const {
181
+ type,
182
+ title,
183
+ description,
184
+ action,
185
+ cancel,
186
+ icon,
187
+ dismissible = true
188
+ } = toast;
189
+ const toastColors = getToastColors(type, theme, richColors);
190
+ const hasCustomIcon = Boolean(icon) || Boolean(icons?.[type]);
191
+ const iconColor = useMemo(() => {
192
+ if (hasCustomIcon || type === "default") return "";
193
+ return getIconColor(type, theme, richColors);
194
+ }, [hasCustomIcon, type, theme, richColors]);
195
+ const hasIcon = hasCustomIcon || type !== "default";
196
+ useEffect(() => {
197
+ if (animation.useSpring) {
198
+ const springConfig = getSpringConfig(animation);
199
+ opacity.value = withTiming(1, {
200
+ duration: animation.duration * 0.6
201
+ });
202
+ translateY.value = withSpring(0, springConfig);
203
+ scale.value = withSpring(1, springConfig);
204
+ } else {
205
+ const timingConfig = {
206
+ duration: animation.duration,
207
+ easing: Easing.bezier(0.19, 1, 0.22, 1)
208
+ };
209
+ opacity.value = withTiming(1, {
210
+ duration: animation.duration * 0.6
211
+ });
212
+ translateY.value = withTiming(0, timingConfig);
213
+ scale.value = withTiming(1, timingConfig);
214
+ }
215
+ if (hapticFeedback) {
216
+ const hapticType = type === "success" ? "success" : type === "error" ? "error" : type === "warning" ? "warning" : "light";
217
+ triggerHaptic(hapticType);
218
+ }
219
+ }, [opacity, translateY, scale, animation, hapticFeedback, type]);
220
+ const handleDismiss = useCallback(() => {
221
+ if (isExiting.current) return;
222
+ isExiting.current = true;
223
+ const exitOffset = position.startsWith("top") ? -ENTRY_OFFSET : ENTRY_OFFSET;
224
+ const exitConfig = {
225
+ duration: animation.exitDuration,
226
+ easing: Easing.bezier(0.4, 0, 1, 1)
227
+ };
228
+ opacity.value = withTiming(0, {
229
+ duration: animation.exitDuration * 0.7
230
+ });
231
+ translateY.value = withTiming(exitOffset, exitConfig);
232
+ scale.value = withTiming(0.95, exitConfig);
233
+ setTimeout(() => onDismiss(toast.id), animation.exitDuration);
234
+ }, [opacity, translateY, scale, position, onDismiss, toast.id, animation.exitDuration]);
235
+ const delayedDismiss = useCallback(() => {
236
+ if (isExiting.current) return;
237
+ isExiting.current = true;
238
+ setTimeout(() => onDismiss(toast.id), animation.exitDuration);
239
+ }, [onDismiss, toast.id, animation.exitDuration]);
240
+ const effectiveDuration = toast.duration ?? duration;
241
+ const shouldAutoDismiss = effectiveDuration > 0 && effectiveDuration !== Number.POSITIVE_INFINITY && toast.type !== "loading";
242
+ const handleAutoClose = useCallback(() => {
243
+ toast.onAutoClose?.(toast);
244
+ handleDismiss();
245
+ }, [toast, handleDismiss]);
246
+ usePauseableTimer(handleAutoClose, effectiveDuration, shouldAutoDismiss, pauseOnAppBackground);
247
+ const panGesture = Gesture.Pan().enabled(swipeToDismiss && dismissible).onUpdate(event => {
248
+ "worklet";
249
+
250
+ if (canSwipeLeft && event.translationX < 0) {
251
+ translateX.value = event.translationX;
252
+ } else if (canSwipeRight && event.translationX > 0) {
253
+ translateX.value = event.translationX;
254
+ }
255
+ if (Math.abs(translateX.value) > SWIPE_THRESHOLD) {
256
+ const excess = Math.abs(translateX.value) - SWIPE_THRESHOLD;
257
+ const direction = translateX.value > 0 ? 1 : -1;
258
+ translateX.value = direction * (SWIPE_THRESHOLD + excess * DAMPING_FACTOR);
259
+ }
260
+ }).onEnd(event => {
261
+ "worklet";
262
+
263
+ const shouldDismiss = Math.abs(event.translationX) > SWIPE_THRESHOLD || Math.abs(event.velocityX) > VELOCITY_THRESHOLD;
264
+ if (shouldDismiss) {
265
+ const direction = event.translationX > 0 ? 1 : -1;
266
+ translateX.value = withTiming(direction * SWIPE_EXIT_DISTANCE, {
267
+ duration: animation.exitDuration
268
+ });
269
+ opacity.value = withTiming(0, {
270
+ duration: animation.exitDuration
271
+ });
272
+ runOnJS(delayedDismiss)();
273
+ } else {
274
+ translateX.value = withTiming(0, {
275
+ duration: SNAP_BACK_DURATION
276
+ });
277
+ }
278
+ });
279
+ const animatedStyle = useAnimatedStyle(() => ({
280
+ opacity: opacity.value,
281
+ transform: [{
282
+ translateY: translateY.value
283
+ }, {
284
+ translateX: translateX.value
285
+ }, {
286
+ scale: scale.value
287
+ }]
288
+ }));
289
+ const containerStyle = {
290
+ ...baseStyles.container,
291
+ backgroundColor: toastColors.background,
292
+ borderColor: toastColors.border,
293
+ marginBottom: gap,
294
+ ...defaultStyles?.container,
295
+ ...toast.styles?.container
296
+ };
297
+ const contentStyle = {
298
+ ...baseStyles.content,
299
+ ...(!hasIcon ? baseStyles.contentNoIcon : {}),
300
+ ...defaultStyles?.content,
301
+ ...toast.styles?.content
302
+ };
303
+ const titleStyle = {
304
+ ...baseStyles.title,
305
+ color: toastColors.foreground,
306
+ ...defaultStyles?.title,
307
+ ...toast.styles?.title
308
+ };
309
+ const descriptionStyle = {
310
+ ...baseStyles.description,
311
+ color: toastColors.description,
312
+ ...defaultStyles?.description,
313
+ ...toast.styles?.description
314
+ };
315
+ const closeButtonStyle = {
316
+ ...baseStyles.closeButton,
317
+ ...defaultStyles?.closeButton,
318
+ ...toast.styles?.closeButton
319
+ };
320
+ const accessibilityLabel = toast.accessibility?.accessibilityLabel ?? (typeof title === "string" ? title : undefined);
321
+ return /*#__PURE__*/_jsx(GestureDetector, {
322
+ gesture: panGesture,
323
+ children: /*#__PURE__*/_jsxs(Animated.View, {
324
+ style: [containerStyle, animatedStyle],
325
+ accessible: true,
326
+ accessibilityLabel: accessibilityLabel,
327
+ children: [/*#__PURE__*/_jsx(ToastIcon, {
328
+ icon: icon,
329
+ icons: icons,
330
+ type: type,
331
+ iconColor: iconColor
332
+ }), /*#__PURE__*/_jsxs(View, {
333
+ style: contentStyle,
334
+ children: [typeof title === "string" ? /*#__PURE__*/_jsx(Text, {
335
+ style: titleStyle,
336
+ numberOfLines: 2,
337
+ children: title
338
+ }) : title, description && (typeof description === "string" ? /*#__PURE__*/_jsx(Text, {
339
+ style: descriptionStyle,
340
+ numberOfLines: 3,
341
+ children: description
342
+ }) : description)]
343
+ }), /*#__PURE__*/_jsx(ToastActions, {
344
+ toast: toast,
345
+ action: action,
346
+ cancel: cancel,
347
+ toastColors: toastColors,
348
+ defaultStyles: defaultStyles,
349
+ hapticFeedback: hapticFeedback
350
+ }), closeButton && dismissible && /*#__PURE__*/_jsx(Pressable, {
351
+ onPress: handleDismiss,
352
+ style: closeButtonStyle,
353
+ hitSlop: 8,
354
+ accessibilityLabel: "Close notification",
355
+ children: /*#__PURE__*/_jsx(CloseIcon, {
356
+ color: toastColors.description
357
+ })
358
+ })]
359
+ })
360
+ });
361
+ }
362
+ //# sourceMappingURL=toast.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useCallback","useEffect","useMemo","useRef","Pressable","Text","View","Gesture","GestureDetector","Animated","Easing","runOnJS","useAnimatedStyle","useSharedValue","withSpring","withTiming","ANIMATION_DEFAULTS","DAMPING_FACTOR","ENTRY_OFFSET","SNAP_BACK_DURATION","SWIPE_EXIT_DISTANCE","SWIPE_THRESHOLD","VELOCITY_THRESHOLD","CloseIcon","getIcon","baseStyles","getIconColor","getToastColors","usePauseableTimer","jsx","_jsx","jsxs","_jsxs","Haptics","require","triggerHaptic","type","notificationAsync","NotificationFeedbackType","Success","Warning","Error","impactAsync","ImpactFeedbackStyle","Medium","Light","getSpringConfig","animation","damping","stiffness","mass","ToastIcon","icon","icons","iconColor","style","iconContainer","children","customIcon","defaultIcon","ToastActions","toast","action","cancel","toastColors","defaultStyles","hapticFeedback","handleActionPress","onClick","handleCancelPress","cancelButtonStyle","cancelButton","borderColor","border","styles","cancelTextStyle","cancelButtonText","color","description","textStyle","actionButtonStyle","actionButton","backgroundColor","foreground","actionTextStyle","actionButtonText","background","actionsContainer","onPress","accessibilityLabel","label","Toast","position","gap","swipeToDismiss","swipeDirection","theme","richColors","closeButton","defaultAnimation","onDismiss","duration","pauseOnAppBackground","toastAnim","exitDuration","useSpring","opacity","translateY","startsWith","translateX","scale","isExiting","canSwipeLeft","includes","canSwipeRight","title","dismissible","hasCustomIcon","Boolean","hasIcon","springConfig","value","timingConfig","easing","bezier","hapticType","handleDismiss","current","exitOffset","exitConfig","setTimeout","id","delayedDismiss","effectiveDuration","shouldAutoDismiss","Number","POSITIVE_INFINITY","handleAutoClose","onAutoClose","panGesture","Pan","enabled","onUpdate","event","translationX","Math","abs","excess","direction","onEnd","shouldDismiss","velocityX","animatedStyle","transform","containerStyle","container","marginBottom","contentStyle","content","contentNoIcon","titleStyle","descriptionStyle","closeButtonStyle","accessibility","undefined","gesture","accessible","numberOfLines","hitSlop"],"sourceRoot":"..\\..\\src","sources":["toast.tsx"],"mappings":"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","ignoreList":[]}