@tamagui/toast 2.7.7 → 3.0.0-beta.643.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (303) hide show
  1. package/dist/cjs/ToastComposable.cjs +773 -882
  2. package/dist/cjs/ToastComposable.native.cjs +924 -0
  3. package/dist/cjs/ToastComposable.native.js +854 -966
  4. package/dist/cjs/ToastComposable.native.js.map +1 -1
  5. package/dist/cjs/ToastItemFrame.cjs +48 -119
  6. package/dist/cjs/ToastItemFrame.native.cjs +76 -0
  7. package/dist/cjs/ToastItemFrame.native.js +50 -120
  8. package/dist/cjs/ToastItemFrame.native.js.map +1 -1
  9. package/dist/cjs/ToastState.cjs +281 -290
  10. package/dist/cjs/ToastState.native.cjs +312 -0
  11. package/dist/cjs/ToastState.native.js +280 -290
  12. package/dist/cjs/ToastState.native.js.map +1 -1
  13. package/dist/cjs/createNativeToast.cjs +38 -44
  14. package/dist/cjs/createNativeToast.native.cjs +54 -0
  15. package/dist/cjs/createNativeToast.native.js +36 -40
  16. package/dist/cjs/createNativeToast.native.js.map +1 -1
  17. package/dist/cjs/dispatchNativeToast.cjs +32 -35
  18. package/dist/cjs/dispatchNativeToast.native.cjs +48 -0
  19. package/dist/cjs/dispatchNativeToast.native.js +34 -36
  20. package/dist/cjs/dispatchNativeToast.native.js.map +1 -1
  21. package/dist/cjs/index.cjs +25 -12
  22. package/dist/cjs/index.native.cjs +35 -0
  23. package/dist/cjs/index.native.js +26 -12
  24. package/dist/cjs/index.native.js.map +1 -1
  25. package/dist/cjs/types.cjs +10 -11
  26. package/dist/cjs/types.native.cjs +19 -0
  27. package/dist/cjs/types.native.js +10 -10
  28. package/dist/cjs/types.native.js.map +1 -1
  29. package/dist/cjs/useAnimatedDragGesture.cjs +197 -194
  30. package/dist/cjs/useAnimatedDragGesture.native.cjs +210 -0
  31. package/dist/cjs/useAnimatedDragGesture.native.js +179 -191
  32. package/dist/cjs/useAnimatedDragGesture.native.js.map +1 -1
  33. package/dist/cjs/useReducedMotion.cjs +47 -55
  34. package/dist/cjs/useReducedMotion.native.cjs +74 -0
  35. package/dist/cjs/useReducedMotion.native.js +53 -60
  36. package/dist/cjs/useReducedMotion.native.js.map +1 -1
  37. package/dist/cjs/useToastAnimations.cjs +198 -270
  38. package/dist/cjs/useToastAnimations.native.cjs +229 -0
  39. package/dist/cjs/useToastAnimations.native.js +205 -276
  40. package/dist/cjs/useToastAnimations.native.js.map +1 -1
  41. package/dist/esm/ToastComposable.mjs +752 -854
  42. package/dist/esm/ToastComposable.mjs.map +1 -1
  43. package/dist/esm/ToastComposable.native.js +834 -940
  44. package/dist/esm/ToastComposable.native.js.map +1 -1
  45. package/dist/esm/ToastItemFrame.mjs +31 -99
  46. package/dist/esm/ToastItemFrame.mjs.map +1 -1
  47. package/dist/esm/ToastItemFrame.native.js +34 -102
  48. package/dist/esm/ToastItemFrame.native.js.map +1 -1
  49. package/dist/esm/ToastState.mjs +266 -273
  50. package/dist/esm/ToastState.mjs.map +1 -1
  51. package/dist/esm/ToastState.native.js +265 -274
  52. package/dist/esm/ToastState.native.js.map +1 -1
  53. package/dist/esm/createNativeToast.mjs +22 -26
  54. package/dist/esm/createNativeToast.mjs.map +1 -1
  55. package/dist/esm/createNativeToast.native.js +21 -23
  56. package/dist/esm/createNativeToast.native.js.map +1 -1
  57. package/dist/esm/dispatchNativeToast.mjs +19 -17
  58. package/dist/esm/dispatchNativeToast.mjs.map +1 -1
  59. package/dist/esm/dispatchNativeToast.native.js +21 -19
  60. package/dist/esm/dispatchNativeToast.native.js.map +1 -1
  61. package/dist/esm/index.js +5 -2
  62. package/dist/esm/index.mjs +5 -2
  63. package/dist/esm/index.native.js +5 -2
  64. package/dist/esm/types.mjs +0 -2
  65. package/dist/esm/types.native.js +0 -2
  66. package/dist/esm/useAnimatedDragGesture.mjs +181 -168
  67. package/dist/esm/useAnimatedDragGesture.mjs.map +1 -1
  68. package/dist/esm/useAnimatedDragGesture.native.js +163 -166
  69. package/dist/esm/useAnimatedDragGesture.native.js.map +1 -1
  70. package/dist/esm/useReducedMotion.mjs +31 -29
  71. package/dist/esm/useReducedMotion.mjs.map +1 -1
  72. package/dist/esm/useReducedMotion.native.js +37 -35
  73. package/dist/esm/useReducedMotion.native.js.map +1 -1
  74. package/dist/esm/useToastAnimations.mjs +183 -245
  75. package/dist/esm/useToastAnimations.mjs.map +1 -1
  76. package/dist/esm/useToastAnimations.native.js +190 -252
  77. package/dist/esm/useToastAnimations.native.js.map +1 -1
  78. package/dist/jsx/ToastComposable.mjs +752 -854
  79. package/dist/jsx/ToastComposable.mjs.map +1 -1
  80. package/dist/jsx/ToastComposable.native.cjs +924 -0
  81. package/dist/jsx/ToastComposable.native.js +854 -966
  82. package/dist/jsx/ToastComposable.native.js.map +1 -1
  83. package/dist/jsx/ToastItemFrame.mjs +31 -99
  84. package/dist/jsx/ToastItemFrame.mjs.map +1 -1
  85. package/dist/jsx/ToastItemFrame.native.cjs +76 -0
  86. package/dist/jsx/ToastItemFrame.native.js +50 -120
  87. package/dist/jsx/ToastItemFrame.native.js.map +1 -1
  88. package/dist/jsx/ToastState.mjs +266 -273
  89. package/dist/jsx/ToastState.mjs.map +1 -1
  90. package/dist/jsx/ToastState.native.cjs +312 -0
  91. package/dist/jsx/ToastState.native.js +280 -290
  92. package/dist/jsx/ToastState.native.js.map +1 -1
  93. package/dist/jsx/createNativeToast.mjs +22 -26
  94. package/dist/jsx/createNativeToast.mjs.map +1 -1
  95. package/dist/jsx/createNativeToast.native.cjs +54 -0
  96. package/dist/jsx/createNativeToast.native.js +36 -40
  97. package/dist/jsx/createNativeToast.native.js.map +1 -1
  98. package/dist/jsx/dispatchNativeToast.mjs +19 -17
  99. package/dist/jsx/dispatchNativeToast.mjs.map +1 -1
  100. package/dist/jsx/dispatchNativeToast.native.cjs +48 -0
  101. package/dist/jsx/dispatchNativeToast.native.js +34 -36
  102. package/dist/jsx/dispatchNativeToast.native.js.map +1 -1
  103. package/dist/jsx/index.js +5 -2
  104. package/dist/jsx/index.mjs +5 -2
  105. package/dist/jsx/index.native.cjs +35 -0
  106. package/dist/jsx/index.native.js +26 -12
  107. package/dist/jsx/index.native.js.map +1 -1
  108. package/dist/jsx/types.mjs +0 -2
  109. package/dist/jsx/types.native.cjs +19 -0
  110. package/dist/jsx/types.native.js +10 -10
  111. package/dist/jsx/types.native.js.map +1 -1
  112. package/dist/jsx/useAnimatedDragGesture.mjs +181 -168
  113. package/dist/jsx/useAnimatedDragGesture.mjs.map +1 -1
  114. package/dist/jsx/useAnimatedDragGesture.native.cjs +210 -0
  115. package/dist/jsx/useAnimatedDragGesture.native.js +179 -191
  116. package/dist/jsx/useAnimatedDragGesture.native.js.map +1 -1
  117. package/dist/jsx/useReducedMotion.mjs +31 -29
  118. package/dist/jsx/useReducedMotion.mjs.map +1 -1
  119. package/dist/jsx/useReducedMotion.native.cjs +74 -0
  120. package/dist/jsx/useReducedMotion.native.js +53 -60
  121. package/dist/jsx/useReducedMotion.native.js.map +1 -1
  122. package/dist/jsx/useToastAnimations.mjs +183 -245
  123. package/dist/jsx/useToastAnimations.mjs.map +1 -1
  124. package/dist/jsx/useToastAnimations.native.cjs +229 -0
  125. package/dist/jsx/useToastAnimations.native.js +205 -276
  126. package/dist/jsx/useToastAnimations.native.js.map +1 -1
  127. package/package.json +20 -37
  128. package/src/ToastComposable.tsx +55 -97
  129. package/src/ToastItemFrame.tsx +22 -81
  130. package/src/ToastState.ts +1 -0
  131. package/src/index.ts +34 -2
  132. package/src/types.ts +11 -0
  133. package/src/useAnimatedDragGesture.native.ts +1 -1
  134. package/src/useAnimatedDragGesture.ts +1 -1
  135. package/src/useToastAnimations.ts +20 -36
  136. package/types/ToastComposable.d.ts +124 -47
  137. package/types/ToastComposable.d.ts.map +1 -1
  138. package/types/ToastItemFrame.d.ts +52 -21
  139. package/types/ToastItemFrame.d.ts.map +1 -1
  140. package/types/ToastState.d.ts +15 -11
  141. package/types/ToastState.d.ts.map +1 -1
  142. package/types/index.d.ts +6 -2
  143. package/types/index.d.ts.map +1 -1
  144. package/types/types.d.ts +1 -0
  145. package/types/types.d.ts.map +1 -1
  146. package/types/useAnimatedDragGesture.d.ts +1 -1
  147. package/types/useAnimatedDragGesture.d.ts.map +1 -1
  148. package/types/useAnimatedDragGesture.native.d.ts +1 -1
  149. package/types/useAnimatedDragGesture.native.d.ts.map +1 -1
  150. package/types/useToastAnimations.d.ts +2 -8
  151. package/types/useToastAnimations.d.ts.map +1 -1
  152. package/dist/cjs/Toast.cjs +0 -178
  153. package/dist/cjs/Toast.native.js +0 -181
  154. package/dist/cjs/Toast.native.js.map +0 -1
  155. package/dist/cjs/ToastAnnounce.cjs +0 -103
  156. package/dist/cjs/ToastAnnounce.native.js +0 -111
  157. package/dist/cjs/ToastAnnounce.native.js.map +0 -1
  158. package/dist/cjs/ToastImperative.cjs +0 -119
  159. package/dist/cjs/ToastImperative.native.js +0 -130
  160. package/dist/cjs/ToastImperative.native.js.map +0 -1
  161. package/dist/cjs/ToastImpl.cjs +0 -354
  162. package/dist/cjs/ToastImpl.native.js +0 -364
  163. package/dist/cjs/ToastImpl.native.js.map +0 -1
  164. package/dist/cjs/ToastPortal.cjs +0 -49
  165. package/dist/cjs/ToastPortal.native.js +0 -52
  166. package/dist/cjs/ToastPortal.native.js.map +0 -1
  167. package/dist/cjs/ToastProvider.cjs +0 -150
  168. package/dist/cjs/ToastProvider.native.js +0 -161
  169. package/dist/cjs/ToastProvider.native.js.map +0 -1
  170. package/dist/cjs/ToastViewport.cjs +0 -319
  171. package/dist/cjs/ToastViewport.native.js +0 -343
  172. package/dist/cjs/ToastViewport.native.js.map +0 -1
  173. package/dist/cjs/Toaster.cjs +0 -87
  174. package/dist/cjs/Toaster.native.js +0 -91
  175. package/dist/cjs/Toaster.native.js.map +0 -1
  176. package/dist/cjs/constants.cjs +0 -30
  177. package/dist/cjs/constants.native.js +0 -33
  178. package/dist/cjs/constants.native.js.map +0 -1
  179. package/dist/cjs/v2.cjs +0 -36
  180. package/dist/cjs/v2.native.js +0 -39
  181. package/dist/cjs/v2.native.js.map +0 -1
  182. package/dist/esm/Toast.mjs +0 -137
  183. package/dist/esm/Toast.mjs.map +0 -1
  184. package/dist/esm/Toast.native.js +0 -137
  185. package/dist/esm/Toast.native.js.map +0 -1
  186. package/dist/esm/ToastAnnounce.mjs +0 -66
  187. package/dist/esm/ToastAnnounce.mjs.map +0 -1
  188. package/dist/esm/ToastAnnounce.native.js +0 -71
  189. package/dist/esm/ToastAnnounce.native.js.map +0 -1
  190. package/dist/esm/ToastImperative.mjs +0 -80
  191. package/dist/esm/ToastImperative.mjs.map +0 -1
  192. package/dist/esm/ToastImperative.native.js +0 -88
  193. package/dist/esm/ToastImperative.native.js.map +0 -1
  194. package/dist/esm/ToastImpl.mjs +0 -316
  195. package/dist/esm/ToastImpl.mjs.map +0 -1
  196. package/dist/esm/ToastImpl.native.js +0 -329
  197. package/dist/esm/ToastImpl.native.js.map +0 -1
  198. package/dist/esm/ToastPortal.mjs +0 -24
  199. package/dist/esm/ToastPortal.mjs.map +0 -1
  200. package/dist/esm/ToastPortal.native.js +0 -24
  201. package/dist/esm/ToastPortal.native.js.map +0 -1
  202. package/dist/esm/ToastProvider.mjs +0 -110
  203. package/dist/esm/ToastProvider.mjs.map +0 -1
  204. package/dist/esm/ToastProvider.native.js +0 -118
  205. package/dist/esm/ToastProvider.native.js.map +0 -1
  206. package/dist/esm/ToastViewport.mjs +0 -280
  207. package/dist/esm/ToastViewport.mjs.map +0 -1
  208. package/dist/esm/ToastViewport.native.js +0 -301
  209. package/dist/esm/ToastViewport.native.js.map +0 -1
  210. package/dist/esm/Toaster.mjs +0 -51
  211. package/dist/esm/Toaster.mjs.map +0 -1
  212. package/dist/esm/Toaster.native.js +0 -52
  213. package/dist/esm/Toaster.native.js.map +0 -1
  214. package/dist/esm/constants.mjs +0 -4
  215. package/dist/esm/constants.mjs.map +0 -1
  216. package/dist/esm/constants.native.js +0 -4
  217. package/dist/esm/constants.native.js.map +0 -1
  218. package/dist/esm/index.js.map +0 -1
  219. package/dist/esm/index.mjs.map +0 -1
  220. package/dist/esm/index.native.js.map +0 -1
  221. package/dist/esm/types.mjs.map +0 -1
  222. package/dist/esm/types.native.js.map +0 -1
  223. package/dist/esm/v2.mjs +0 -6
  224. package/dist/esm/v2.mjs.map +0 -1
  225. package/dist/esm/v2.native.js +0 -6
  226. package/dist/esm/v2.native.js.map +0 -1
  227. package/dist/jsx/Toast.mjs +0 -137
  228. package/dist/jsx/Toast.mjs.map +0 -1
  229. package/dist/jsx/Toast.native.js +0 -181
  230. package/dist/jsx/Toast.native.js.map +0 -1
  231. package/dist/jsx/ToastAnnounce.mjs +0 -66
  232. package/dist/jsx/ToastAnnounce.mjs.map +0 -1
  233. package/dist/jsx/ToastAnnounce.native.js +0 -111
  234. package/dist/jsx/ToastAnnounce.native.js.map +0 -1
  235. package/dist/jsx/ToastImperative.mjs +0 -80
  236. package/dist/jsx/ToastImperative.mjs.map +0 -1
  237. package/dist/jsx/ToastImperative.native.js +0 -130
  238. package/dist/jsx/ToastImperative.native.js.map +0 -1
  239. package/dist/jsx/ToastImpl.mjs +0 -316
  240. package/dist/jsx/ToastImpl.mjs.map +0 -1
  241. package/dist/jsx/ToastImpl.native.js +0 -364
  242. package/dist/jsx/ToastImpl.native.js.map +0 -1
  243. package/dist/jsx/ToastPortal.mjs +0 -24
  244. package/dist/jsx/ToastPortal.mjs.map +0 -1
  245. package/dist/jsx/ToastPortal.native.js +0 -52
  246. package/dist/jsx/ToastPortal.native.js.map +0 -1
  247. package/dist/jsx/ToastProvider.mjs +0 -110
  248. package/dist/jsx/ToastProvider.mjs.map +0 -1
  249. package/dist/jsx/ToastProvider.native.js +0 -161
  250. package/dist/jsx/ToastProvider.native.js.map +0 -1
  251. package/dist/jsx/ToastViewport.mjs +0 -280
  252. package/dist/jsx/ToastViewport.mjs.map +0 -1
  253. package/dist/jsx/ToastViewport.native.js +0 -343
  254. package/dist/jsx/ToastViewport.native.js.map +0 -1
  255. package/dist/jsx/Toaster.mjs +0 -51
  256. package/dist/jsx/Toaster.mjs.map +0 -1
  257. package/dist/jsx/Toaster.native.js +0 -91
  258. package/dist/jsx/Toaster.native.js.map +0 -1
  259. package/dist/jsx/constants.mjs +0 -4
  260. package/dist/jsx/constants.mjs.map +0 -1
  261. package/dist/jsx/constants.native.js +0 -33
  262. package/dist/jsx/constants.native.js.map +0 -1
  263. package/dist/jsx/index.js.map +0 -1
  264. package/dist/jsx/index.mjs.map +0 -1
  265. package/dist/jsx/types.mjs.map +0 -1
  266. package/dist/jsx/v2.mjs +0 -6
  267. package/dist/jsx/v2.mjs.map +0 -1
  268. package/dist/jsx/v2.native.js +0 -39
  269. package/dist/jsx/v2.native.js.map +0 -1
  270. package/src/Toast.tsx +0 -219
  271. package/src/ToastAnnounce.tsx +0 -103
  272. package/src/ToastImperative.tsx +0 -192
  273. package/src/ToastImpl.tsx +0 -514
  274. package/src/ToastPortal.tsx +0 -19
  275. package/src/ToastProvider.tsx +0 -204
  276. package/src/ToastViewport.tsx +0 -430
  277. package/src/Toaster.tsx +0 -181
  278. package/src/constants.ts +0 -2
  279. package/src/v2.ts +0 -31
  280. package/types/Toast.d.ts +0 -84
  281. package/types/Toast.d.ts.map +0 -1
  282. package/types/ToastAnnounce.d.ts +0 -18
  283. package/types/ToastAnnounce.d.ts.map +0 -1
  284. package/types/ToastImperative.d.ts +0 -95
  285. package/types/ToastImperative.d.ts.map +0 -1
  286. package/types/ToastImpl.d.ts +0 -109
  287. package/types/ToastImpl.d.ts.map +0 -1
  288. package/types/ToastPortal.d.ts +0 -8
  289. package/types/ToastPortal.d.ts.map +0 -1
  290. package/types/ToastProvider.d.ts +0 -92
  291. package/types/ToastProvider.d.ts.map +0 -1
  292. package/types/ToastViewport.d.ts +0 -75
  293. package/types/ToastViewport.d.ts.map +0 -1
  294. package/types/Toaster.d.ts +0 -112
  295. package/types/Toaster.d.ts.map +0 -1
  296. package/types/constants.d.ts +0 -3
  297. package/types/constants.d.ts.map +0 -1
  298. package/types/v2.d.ts +0 -10
  299. package/types/v2.d.ts.map +0 -1
  300. package/v2/index.cjs +0 -2
  301. package/v2/index.js +0 -2
  302. package/v2/index.native.cjs +0 -2
  303. package/v2/index.native.js +0 -2
@@ -1,285 +1,278 @@
1
1
  let toastsCounter = 1;
2
- class Observer {
3
- subscribers = [];
4
- toasts = [];
5
- dismissedToasts = /* @__PURE__ */new Set();
6
- /**
7
- * Subscribe to toast state changes.
8
- * Returns an unsubscribe function.
9
- */
10
- subscribe = subscriber => {
11
- this.subscribers.push(subscriber);
12
- return () => {
13
- const index = this.subscribers.indexOf(subscriber);
14
- if (index > -1) {
15
- this.subscribers.splice(index, 1);
16
- }
17
- };
18
- };
19
- /**
20
- * Publish a toast to all subscribers
21
- */
22
- publish = data => {
23
- this.subscribers.forEach(subscriber => subscriber(data));
24
- };
25
- /**
26
- * Add a new toast to the internal array and publish to subscribers
27
- */
28
- addToast = data => {
29
- this.publish(data);
30
- this.toasts = [...this.toasts, data];
31
- };
32
- /**
33
- * Create or update a toast
34
- */
35
- create = data => {
36
- const {
37
- title,
38
- ...rest
39
- } = data;
40
- const id = typeof data?.id === "number" || typeof data?.id === "string" && data.id.length > 0 ? data.id : toastsCounter++;
41
- const alreadyExists = this.toasts.find(toast2 => toast2.id === id);
42
- const dismissible = data.dismissible ?? true;
43
- if (this.dismissedToasts.has(id)) {
44
- this.dismissedToasts.delete(id);
45
- }
46
- if (alreadyExists) {
47
- this.toasts = this.toasts.map(toast2 => {
48
- if (toast2.id === id) {
49
- this.publish({
50
- ...toast2,
51
- ...data,
52
- id,
53
- title,
54
- dismissible
55
- });
56
- return {
57
- ...toast2,
58
- ...data,
59
- id,
60
- title,
61
- dismissible
62
- };
63
- }
64
- return toast2;
65
- });
66
- } else {
67
- this.addToast({
68
- title,
69
- ...rest,
70
- dismissible,
71
- id
72
- });
73
- }
74
- return id;
75
- };
76
- /**
77
- * Dismiss a toast by id, or all toasts if no id provided
78
- */
79
- dismiss = id => {
80
- if (id !== void 0) {
81
- this.dismissedToasts.add(id);
82
- requestAnimationFrame(() => {
83
- this.subscribers.forEach(subscriber => subscriber({
84
- id,
85
- dismiss: true
86
- }));
87
- });
88
- } else {
89
- this.toasts.forEach(toast2 => {
90
- this.subscribers.forEach(subscriber => subscriber({
91
- id: toast2.id,
92
- dismiss: true
93
- }));
94
- });
95
- }
96
- return id;
97
- };
98
- /**
99
- * Show a basic toast message
100
- */
101
- message = (title, data) => {
102
- return this.create({
103
- ...data,
104
- title,
105
- type: "default"
106
- });
107
- };
108
- /**
109
- * Show a success toast
110
- */
111
- success = (title, data) => {
112
- return this.create({
113
- ...data,
114
- title,
115
- type: "success"
116
- });
117
- };
118
- /**
119
- * Show an error toast
120
- */
121
- error = (title, data) => {
122
- return this.create({
123
- ...data,
124
- title,
125
- type: "error"
126
- });
127
- };
128
- /**
129
- * Show a warning toast
130
- */
131
- warning = (title, data) => {
132
- return this.create({
133
- ...data,
134
- title,
135
- type: "warning"
136
- });
137
- };
138
- /**
139
- * Show an info toast
140
- */
141
- info = (title, data) => {
142
- return this.create({
143
- ...data,
144
- title,
145
- type: "info"
146
- });
147
- };
148
- /**
149
- * Show a loading toast
150
- */
151
- loading = (title, data) => {
152
- return this.create({
153
- ...data,
154
- title,
155
- type: "loading"
156
- });
157
- };
158
- /**
159
- * Show a toast for a promise, automatically transitioning through
160
- * loading -> success/error states
161
- */
162
- promise = (promise, data) => {
163
- if (!data) {
164
- return;
165
- }
166
- let id = void 0;
167
- if (data.loading !== void 0) {
168
- id = this.create({
169
- promise,
170
- type: "loading",
171
- title: data.loading,
172
- description: typeof data.description !== "function" ? data.description : void 0,
173
- // loading toasts shouldn't auto-dismiss
174
- duration: Number.POSITIVE_INFINITY
175
- });
176
- }
177
- const p = Promise.resolve(promise instanceof Function ? promise() : promise);
178
- let shouldDismiss = id !== void 0;
179
- let result;
180
- const originalPromise = p.then(async response => {
181
- result = ["resolve", response];
182
- if (isHttpResponse(response) && !response.ok) {
183
- shouldDismiss = false;
184
- const errorMsg = typeof data.error === "function" ? await data.error(`HTTP error! status: ${response.status}`) : data.error;
185
- const description = typeof data.description === "function" ? await data.description(`HTTP error! status: ${response.status}`) : data.description;
186
- this.create({
187
- id,
188
- type: "error",
189
- title: errorMsg,
190
- description
191
- });
192
- } else if (data.success !== void 0) {
193
- shouldDismiss = false;
194
- const successMsg = typeof data.success === "function" ? await data.success(response) : data.success;
195
- const description = typeof data.description === "function" ? await data.description(response) : data.description;
196
- this.create({
197
- id,
198
- type: "success",
199
- title: successMsg,
200
- description
201
- });
202
- }
203
- }).catch(async error => {
204
- result = ["reject", error];
205
- if (data.error !== void 0) {
206
- shouldDismiss = false;
207
- const errorMsg = typeof data.error === "function" ? await data.error(error) : data.error;
208
- const description = typeof data.description === "function" ? await data.description(error) : data.description;
209
- this.create({
210
- id,
211
- type: "error",
212
- title: errorMsg,
213
- description
214
- });
215
- }
216
- }).finally(() => {
217
- if (shouldDismiss) {
218
- this.dismiss(id);
219
- id = void 0;
220
- }
221
- data.finally?.();
222
- });
223
- const unwrap = () => new Promise((resolve, reject) => originalPromise.then(() => result[0] === "reject" ? reject(result[1]) : resolve(result[1])).catch(reject));
224
- if (typeof id !== "string" && typeof id !== "number") {
225
- return {
226
- unwrap
227
- };
228
- } else {
229
- return Object.assign(id, {
230
- unwrap
231
- });
232
- }
233
- };
234
- /**
235
- * Show a custom JSX toast
236
- */
237
- custom = (jsx, data) => {
238
- const id = data?.id ?? toastsCounter++;
239
- this.create({
240
- jsx: jsx(id),
241
- ...data,
242
- id
243
- });
244
- return id;
245
- };
246
- /**
247
- * Get all active (non-dismissed) toasts
248
- */
249
- getActiveToasts = () => {
250
- return this.toasts.filter(toast2 => !this.dismissedToasts.has(toast2.id));
251
- };
252
- /**
253
- * Get full toast history
254
- */
255
- getHistory = () => {
256
- return this.toasts;
257
- };
258
- }
2
+ var Observer = class {
3
+ subscribers = [];
4
+ toasts = [];
5
+ dismissedToasts = /* @__PURE__ */ new Set();
6
+ /**
7
+ * Subscribe to toast state changes.
8
+ * Returns an unsubscribe function.
9
+ */
10
+ subscribe = (subscriber) => {
11
+ this.subscribers.push(subscriber);
12
+ return () => {
13
+ const index = this.subscribers.indexOf(subscriber);
14
+ if (index > -1) {
15
+ this.subscribers.splice(index, 1);
16
+ }
17
+ };
18
+ };
19
+ /**
20
+ * Publish a toast to all subscribers
21
+ */
22
+ publish = (data) => {
23
+ this.subscribers.forEach((subscriber) => subscriber(data));
24
+ };
25
+ /**
26
+ * Add a new toast to the internal array and publish to subscribers
27
+ */
28
+ addToast = (data) => {
29
+ this.publish(data);
30
+ this.toasts = [...this.toasts, data];
31
+ };
32
+ /**
33
+ * Create or update a toast
34
+ */
35
+ create = (data) => {
36
+ const { title, ...rest } = data;
37
+ const id = typeof data?.id === "number" || typeof data?.id === "string" && data.id.length > 0 ? data.id : toastsCounter++;
38
+ const alreadyExists = this.toasts.find((toast2) => toast2.id === id);
39
+ const dismissible = data.dismissible ?? true;
40
+ if (this.dismissedToasts.has(id)) {
41
+ this.dismissedToasts.delete(id);
42
+ }
43
+ if (alreadyExists) {
44
+ this.toasts = this.toasts.map((toast2) => {
45
+ if (toast2.id === id) {
46
+ this.publish({
47
+ ...toast2,
48
+ ...data,
49
+ id,
50
+ title,
51
+ dismissible
52
+ });
53
+ return {
54
+ ...toast2,
55
+ ...data,
56
+ id,
57
+ title,
58
+ dismissible
59
+ };
60
+ }
61
+ return toast2;
62
+ });
63
+ } else {
64
+ this.addToast({
65
+ title,
66
+ ...rest,
67
+ dismissible,
68
+ id
69
+ });
70
+ }
71
+ return id;
72
+ };
73
+ /**
74
+ * Dismiss a toast by id, or all toasts if no id provided
75
+ */
76
+ dismiss = (id) => {
77
+ if (id !== void 0) {
78
+ this.dismissedToasts.add(id);
79
+ requestAnimationFrame(() => {
80
+ this.subscribers.forEach((subscriber) => subscriber({
81
+ id,
82
+ dismiss: true
83
+ }));
84
+ });
85
+ } else {
86
+ this.toasts.forEach((toast2) => {
87
+ this.subscribers.forEach((subscriber) => subscriber({
88
+ id: toast2.id,
89
+ dismiss: true
90
+ }));
91
+ });
92
+ }
93
+ return id;
94
+ };
95
+ /**
96
+ * Show a basic toast message
97
+ */
98
+ message = (title, data) => {
99
+ return this.create({
100
+ ...data,
101
+ title,
102
+ type: "default"
103
+ });
104
+ };
105
+ /**
106
+ * Show a success toast
107
+ */
108
+ success = (title, data) => {
109
+ return this.create({
110
+ ...data,
111
+ title,
112
+ type: "success"
113
+ });
114
+ };
115
+ /**
116
+ * Show an error toast
117
+ */
118
+ error = (title, data) => {
119
+ return this.create({
120
+ ...data,
121
+ title,
122
+ type: "error"
123
+ });
124
+ };
125
+ /**
126
+ * Show a warning toast
127
+ */
128
+ warning = (title, data) => {
129
+ return this.create({
130
+ ...data,
131
+ title,
132
+ type: "warning"
133
+ });
134
+ };
135
+ /**
136
+ * Show an info toast
137
+ */
138
+ info = (title, data) => {
139
+ return this.create({
140
+ ...data,
141
+ title,
142
+ type: "info"
143
+ });
144
+ };
145
+ /**
146
+ * Show a loading toast
147
+ */
148
+ loading = (title, data) => {
149
+ return this.create({
150
+ ...data,
151
+ title,
152
+ type: "loading"
153
+ });
154
+ };
155
+ /**
156
+ * Show a toast for a promise, automatically transitioning through
157
+ * loading -> success/error states
158
+ */
159
+ promise = (promise, data) => {
160
+ if (!data) {
161
+ return;
162
+ }
163
+ let id = void 0;
164
+ if (data.loading !== void 0) {
165
+ id = this.create({
166
+ promise,
167
+ type: "loading",
168
+ title: data.loading,
169
+ description: typeof data.description !== "function" ? data.description : void 0,
170
+ duration: Number.POSITIVE_INFINITY
171
+ });
172
+ }
173
+ const p = Promise.resolve(promise instanceof Function ? promise() : promise);
174
+ let shouldDismiss = id !== void 0;
175
+ let result;
176
+ const originalPromise = p.then(async (response) => {
177
+ result = ["resolve", response];
178
+ if (isHttpResponse(response) && !response.ok) {
179
+ shouldDismiss = false;
180
+ const errorMsg = typeof data.error === "function" ? await data.error(`HTTP error! status: ${response.status}`) : data.error;
181
+ const description = typeof data.description === "function" ? await data.description(`HTTP error! status: ${response.status}`) : data.description;
182
+ this.create({
183
+ id,
184
+ type: "error",
185
+ title: errorMsg,
186
+ description
187
+ });
188
+ } else if (data.success !== void 0) {
189
+ shouldDismiss = false;
190
+ const successMsg = typeof data.success === "function" ? await data.success(response) : data.success;
191
+ const description = typeof data.description === "function" ? await data.description(response) : data.description;
192
+ this.create({
193
+ id,
194
+ type: "success",
195
+ title: successMsg,
196
+ description
197
+ });
198
+ }
199
+ }).catch(async (error) => {
200
+ result = ["reject", error];
201
+ if (data.error !== void 0) {
202
+ shouldDismiss = false;
203
+ const errorMsg = typeof data.error === "function" ? await data.error(error) : data.error;
204
+ const description = typeof data.description === "function" ? await data.description(error) : data.description;
205
+ this.create({
206
+ id,
207
+ type: "error",
208
+ title: errorMsg,
209
+ description
210
+ });
211
+ }
212
+ }).finally(() => {
213
+ if (shouldDismiss) {
214
+ this.dismiss(id);
215
+ id = void 0;
216
+ }
217
+ data.finally?.();
218
+ });
219
+ const unwrap = () => new Promise((resolve, reject) => originalPromise.then(() => result[0] === "reject" ? reject(result[1]) : resolve(result[1])).catch(reject));
220
+ if (typeof id !== "string" && typeof id !== "number") {
221
+ return { unwrap };
222
+ } else {
223
+ return Object.assign(id, { unwrap });
224
+ }
225
+ };
226
+ /**
227
+ * Show a custom JSX toast
228
+ */
229
+ custom = (jsx, data) => {
230
+ const id = data?.id ?? toastsCounter++;
231
+ this.create({
232
+ jsx: jsx(id),
233
+ ...data,
234
+ id
235
+ });
236
+ return id;
237
+ };
238
+ /**
239
+ * Get all active (non-dismissed) toasts
240
+ */
241
+ getActiveToasts = () => {
242
+ return this.toasts.filter((toast2) => !this.dismissedToasts.has(toast2.id));
243
+ };
244
+ /**
245
+ * Get full toast history
246
+ */
247
+ getHistory = () => {
248
+ return this.toasts;
249
+ };
250
+ };
259
251
  function isHttpResponse(data) {
260
- return data && typeof data === "object" && "ok" in data && typeof data.ok === "boolean" && "status" in data && typeof data.status === "number";
252
+ return data && typeof data === "object" && "ok" in data && typeof data.ok === "boolean" && "status" in data && typeof data.status === "number";
261
253
  }
262
254
  const ToastState = new Observer();
263
255
  const toastFunction = (title, data) => {
264
- return ToastState.create({
265
- ...data,
266
- title
267
- });
256
+ return ToastState.create({
257
+ ...data,
258
+ title
259
+ });
268
260
  };
269
261
  const getHistory = () => ToastState.getHistory();
270
262
  const getToasts = () => ToastState.getActiveToasts();
271
263
  const toast = Object.assign(toastFunction, {
272
- success: ToastState.success,
273
- error: ToastState.error,
274
- warning: ToastState.warning,
275
- info: ToastState.info,
276
- loading: ToastState.loading,
277
- promise: ToastState.promise,
278
- custom: ToastState.custom,
279
- dismiss: ToastState.dismiss,
280
- message: ToastState.message,
281
- getHistory,
282
- getToasts
264
+ success: ToastState.success,
265
+ error: ToastState.error,
266
+ warning: ToastState.warning,
267
+ info: ToastState.info,
268
+ loading: ToastState.loading,
269
+ promise: ToastState.promise,
270
+ custom: ToastState.custom,
271
+ dismiss: ToastState.dismiss,
272
+ message: ToastState.message,
273
+ getHistory,
274
+ getToasts
283
275
  });
276
+
284
277
  export { ToastState, toast };
285
278
  //# sourceMappingURL=ToastState.mjs.map
@@ -1 +1 @@
1
- {"version":3,"names":["toastsCounter","Observer","subscribers","toasts","dismissedToasts","Set","subscribe","subscriber","push","index","indexOf","splice","publish","data","forEach","addToast","create","title","rest","id","length","alreadyExists","find","toast","toast2","dismissible","has","delete","map","dismiss","add","requestAnimationFrame","message","type","success","error","warning","info","loading","promise","description","duration","Number","POSITIVE_INFINITY","p","Promise","resolve","Function","shouldDismiss","result","originalPromise","then","response","isHttpResponse","ok","errorMsg","status","successMsg","catch","finally","unwrap","reject","Object","assign","custom","jsx","getActiveToasts","filter","getHistory","ToastState","toastFunction","getToasts"],"sources":["../../src/ToastState.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ToastState.js","names":[],"sources":["jsx/ToastState.js"],"sourcesContent":["let toastsCounter = 1;\nclass Observer {\n subscribers = [];\n toasts = [];\n dismissedToasts = /* @__PURE__ */ new Set();\n /**\n * Subscribe to toast state changes.\n * Returns an unsubscribe function.\n */\n subscribe = (subscriber) => {\n this.subscribers.push(subscriber);\n return () => {\n const index = this.subscribers.indexOf(subscriber);\n if (index > -1) {\n this.subscribers.splice(index, 1);\n }\n };\n };\n /**\n * Publish a toast to all subscribers\n */\n publish = (data) => {\n this.subscribers.forEach((subscriber) => subscriber(data));\n };\n /**\n * Add a new toast to the internal array and publish to subscribers\n */\n addToast = (data) => {\n this.publish(data);\n this.toasts = [...this.toasts, data];\n };\n /**\n * Create or update a toast\n */\n create = (data) => {\n const { title, ...rest } = data;\n const id = typeof data?.id === \"number\" || typeof data?.id === \"string\" && data.id.length > 0 ? data.id : toastsCounter++;\n const alreadyExists = this.toasts.find((toast2) => toast2.id === id);\n const dismissible = data.dismissible ?? true;\n if (this.dismissedToasts.has(id)) {\n this.dismissedToasts.delete(id);\n }\n if (alreadyExists) {\n this.toasts = this.toasts.map((toast2) => {\n if (toast2.id === id) {\n this.publish({ ...toast2, ...data, id, title, dismissible });\n return { ...toast2, ...data, id, title, dismissible };\n }\n return toast2;\n });\n } else {\n this.addToast({ title, ...rest, dismissible, id });\n }\n return id;\n };\n /**\n * Dismiss a toast by id, or all toasts if no id provided\n */\n dismiss = (id) => {\n if (id !== void 0) {\n this.dismissedToasts.add(id);\n requestAnimationFrame(() => {\n this.subscribers.forEach((subscriber) => subscriber({ id, dismiss: true }));\n });\n } else {\n this.toasts.forEach((toast2) => {\n this.subscribers.forEach(\n (subscriber) => subscriber({ id: toast2.id, dismiss: true })\n );\n });\n }\n return id;\n };\n /**\n * Show a basic toast message\n */\n message = (title, data) => {\n return this.create({ ...data, title, type: \"default\" });\n };\n /**\n * Show a success toast\n */\n success = (title, data) => {\n return this.create({ ...data, title, type: \"success\" });\n };\n /**\n * Show an error toast\n */\n error = (title, data) => {\n return this.create({ ...data, title, type: \"error\" });\n };\n /**\n * Show a warning toast\n */\n warning = (title, data) => {\n return this.create({ ...data, title, type: \"warning\" });\n };\n /**\n * Show an info toast\n */\n info = (title, data) => {\n return this.create({ ...data, title, type: \"info\" });\n };\n /**\n * Show a loading toast\n */\n loading = (title, data) => {\n return this.create({ ...data, title, type: \"loading\" });\n };\n /**\n * Show a toast for a promise, automatically transitioning through\n * loading -> success/error states\n */\n promise = (promise, data) => {\n if (!data) {\n return;\n }\n let id = void 0;\n if (data.loading !== void 0) {\n id = this.create({\n promise,\n type: \"loading\",\n title: data.loading,\n description: typeof data.description !== \"function\" ? data.description : void 0,\n // loading toasts shouldn't auto-dismiss\n duration: Number.POSITIVE_INFINITY\n });\n }\n const p = Promise.resolve(promise instanceof Function ? promise() : promise);\n let shouldDismiss = id !== void 0;\n let result;\n const originalPromise = p.then(async (response) => {\n result = [\"resolve\", response];\n if (isHttpResponse(response) && !response.ok) {\n shouldDismiss = false;\n const errorMsg = typeof data.error === \"function\" ? await data.error(`HTTP error! status: ${response.status}`) : data.error;\n const description = typeof data.description === \"function\" ? await data.description(`HTTP error! status: ${response.status}`) : data.description;\n this.create({ id, type: \"error\", title: errorMsg, description });\n } else if (data.success !== void 0) {\n shouldDismiss = false;\n const successMsg = typeof data.success === \"function\" ? await data.success(response) : data.success;\n const description = typeof data.description === \"function\" ? await data.description(response) : data.description;\n this.create({ id, type: \"success\", title: successMsg, description });\n }\n }).catch(async (error) => {\n result = [\"reject\", error];\n if (data.error !== void 0) {\n shouldDismiss = false;\n const errorMsg = typeof data.error === \"function\" ? await data.error(error) : data.error;\n const description = typeof data.description === \"function\" ? await data.description(error) : data.description;\n this.create({ id, type: \"error\", title: errorMsg, description });\n }\n }).finally(() => {\n if (shouldDismiss) {\n this.dismiss(id);\n id = void 0;\n }\n data.finally?.();\n });\n const unwrap = () => new Promise(\n (resolve, reject) => originalPromise.then(() => result[0] === \"reject\" ? reject(result[1]) : resolve(result[1])).catch(reject)\n );\n if (typeof id !== \"string\" && typeof id !== \"number\") {\n return { unwrap };\n } else {\n return Object.assign(id, { unwrap });\n }\n };\n /**\n * Show a custom JSX toast\n */\n custom = (jsx, data) => {\n const id = data?.id ?? toastsCounter++;\n this.create({ jsx: jsx(id), ...data, id });\n return id;\n };\n /**\n * Get all active (non-dismissed) toasts\n */\n getActiveToasts = () => {\n return this.toasts.filter((toast2) => !this.dismissedToasts.has(toast2.id));\n };\n /**\n * Get full toast history\n */\n getHistory = () => {\n return this.toasts;\n };\n}\nfunction isHttpResponse(data) {\n return data && typeof data === \"object\" && \"ok\" in data && typeof data.ok === \"boolean\" && \"status\" in data && typeof data.status === \"number\";\n}\nconst ToastState = new Observer();\nconst toastFunction = (title, data) => {\n return ToastState.create({ ...data, title });\n};\nconst getHistory = () => ToastState.getHistory();\nconst getToasts = () => ToastState.getActiveToasts();\nconst toast = Object.assign(toastFunction, {\n success: ToastState.success,\n error: ToastState.error,\n warning: ToastState.warning,\n info: ToastState.info,\n loading: ToastState.loading,\n promise: ToastState.promise,\n custom: ToastState.custom,\n dismiss: ToastState.dismiss,\n message: ToastState.message,\n getHistory,\n getToasts\n});\nexport {\n ToastState,\n toast\n};\n//# sourceMappingURL=ToastState.js.map\n"],"mappings":"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"}