@epic-web/workshop-app 4.6.6 → 4.7.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 (809) hide show
  1. package/build/client/assets/{_-COWH0sBh.js → _-Bd2gNcck.js} +2 -2
  2. package/build/client/assets/{_-COWH0sBh.js.map → _-Bd2gNcck.js.map} +1 -1
  3. package/build/client/assets/{_exerciseNumber-wyz3vbhs.js → _exerciseNumber-CFOo2dQj.js} +2 -2
  4. package/build/client/assets/{_exerciseNumber-wyz3vbhs.js.map → _exerciseNumber-CFOo2dQj.js.map} +1 -1
  5. package/build/client/assets/{_exerciseNumber_._stepNumber-C37pli7_.js → _exerciseNumber_._stepNumber-DCbWNWpZ.js} +2 -2
  6. package/build/client/assets/{_exerciseNumber_._stepNumber-C37pli7_.js.map → _exerciseNumber_._stepNumber-DCbWNWpZ.js.map} +1 -1
  7. package/build/client/assets/_exerciseNumber_.finished-P7xMAtl1.js +2 -0
  8. package/build/client/assets/_exerciseNumber_.finished-P7xMAtl1.js.map +1 -0
  9. package/build/client/assets/_layout-Bdd3mpVx.js +2 -0
  10. package/build/client/assets/_layout-Bdd3mpVx.js.map +1 -0
  11. package/build/client/assets/_layout-DHBLG7Ti.js +6 -0
  12. package/build/client/assets/_layout-DHBLG7Ti.js.map +1 -0
  13. package/build/client/assets/_layout-DaZNLfOL.js +2 -0
  14. package/build/client/assets/{_layout-BR-Qyofe.js.map → _layout-DaZNLfOL.js.map} +1 -1
  15. package/build/client/assets/{_layout-D0zbQZjf.js → _layout-rEQoj43V.js} +2 -2
  16. package/build/client/assets/{_layout-D0zbQZjf.js.map → _layout-rEQoj43V.js.map} +1 -1
  17. package/build/client/assets/{account-DesvwOeg.js → account-CnLkZd_O.js} +2 -2
  18. package/build/client/assets/{account-DesvwOeg.js.map → account-CnLkZd_O.js.map} +1 -1
  19. package/build/client/assets/{button-BfWwrI9B.js → button-CyZl24U2.js} +2 -2
  20. package/build/client/assets/{button-BfWwrI9B.js.map → button-CyZl24U2.js.map} +1 -1
  21. package/build/client/assets/{client-hints-BKxdo5Js.js → client-hints-BE5mB4r0.js} +2 -2
  22. package/build/client/assets/{client-hints-BKxdo5Js.js.map → client-hints-BE5mB4r0.js.map} +1 -1
  23. package/build/client/assets/components-BMzmvxYw.js +166 -0
  24. package/build/client/assets/components-BMzmvxYw.js.map +1 -0
  25. package/build/client/assets/diff-P5f7-8E4.js +2 -0
  26. package/build/client/assets/diff-P5f7-8E4.js.map +1 -0
  27. package/build/client/assets/diff-PfwTHr6-.js +2 -0
  28. package/build/client/assets/{diff-KDzcgGYL.js.map → diff-PfwTHr6-.js.map} +1 -1
  29. package/build/client/assets/{discord-0kv66Q6F.js → discord-COPE8EOZ.js} +2 -2
  30. package/build/client/assets/{discord-0kv66Q6F.js.map → discord-COPE8EOZ.js.map} +1 -1
  31. package/build/client/assets/discord-DIog7bBO.js +2 -0
  32. package/build/client/assets/discord-DIog7bBO.js.map +1 -0
  33. package/build/client/assets/entry.client-B0vV2fsa.js +43 -0
  34. package/build/client/assets/entry.client-B0vV2fsa.js.map +1 -0
  35. package/build/client/assets/{epic-video-BwtXsHGU.js → epic-video-CYnG2ziQ.js} +128 -128
  36. package/build/client/assets/epic-video-CYnG2ziQ.js.map +1 -0
  37. package/build/client/assets/{error-boundary-Bcric_4t.js → error-boundary-DxfVshQ5.js} +2 -2
  38. package/build/client/assets/{error-boundary-Bcric_4t.js.map → error-boundary-DxfVshQ5.js.map} +1 -1
  39. package/build/client/assets/finished-DP5ynR5u.js +2 -0
  40. package/build/client/assets/finished-DP5ynR5u.js.map +1 -0
  41. package/build/client/assets/index-4E9_Sx3m.js +42 -0
  42. package/build/client/assets/index-4E9_Sx3m.js.map +1 -0
  43. package/build/client/assets/{index-Bg9MMnnf.js → index-90bzTYUX.js} +2 -2
  44. package/build/client/assets/index-90bzTYUX.js.map +1 -0
  45. package/build/client/assets/{index-BQRtqn3g.js → index-BXefr1BB.js} +2 -2
  46. package/build/client/assets/{index-BQRtqn3g.js.map → index-BXefr1BB.js.map} +1 -1
  47. package/build/client/assets/index-Czg1ruVn.js +37 -0
  48. package/build/client/assets/index-Czg1ruVn.js.map +1 -0
  49. package/build/client/assets/{index-9nNr0Zqr.js → index-D6ukHE4T.js} +2 -2
  50. package/build/client/assets/{index-9nNr0Zqr.js.map → index-D6ukHE4T.js.map} +1 -1
  51. package/build/client/assets/index-Doi37489.js +3 -0
  52. package/build/client/assets/index-Doi37489.js.map +1 -0
  53. package/build/client/assets/{loading-C9f_vBoM.js → loading-CNWJVymJ.js} +2 -2
  54. package/build/client/assets/{loading-C9f_vBoM.js.map → loading-CNWJVymJ.js.map} +1 -1
  55. package/build/client/assets/{login-D8zyjBAb.js → login-DxG854vQ.js} +2 -2
  56. package/build/client/assets/{login-D8zyjBAb.js.map → login-DxG854vQ.js.map} +1 -1
  57. package/build/client/assets/manifest-a1fde59b.js +1 -0
  58. package/build/client/assets/mdx-CR7Me1v_.js +2 -0
  59. package/build/client/assets/{mdx-BYvGbvEr.js.map → mdx-CR7Me1v_.js.map} +1 -1
  60. package/build/client/assets/misc-CypjEQkt.js +2 -0
  61. package/build/client/assets/misc-CypjEQkt.js.map +1 -0
  62. package/build/client/assets/{nav-chevrons-DOYtx9XE.js → nav-chevrons-BYKwyIgG.js} +2 -2
  63. package/build/client/assets/{nav-chevrons-DOYtx9XE.js.map → nav-chevrons-BYKwyIgG.js.map} +1 -1
  64. package/build/client/assets/{onboarding-euWyXpCL.js → onboarding-b9lcdh4n.js} +2 -2
  65. package/build/client/assets/{onboarding-euWyXpCL.js.map → onboarding-b9lcdh4n.js.map} +1 -1
  66. package/build/client/assets/{presence-BJPzwbUy.js → presence-DXXVJbaH.js} +2 -2
  67. package/build/client/assets/{presence-BJPzwbUy.js.map → presence-DXXVJbaH.js.map} +1 -1
  68. package/build/client/assets/progress-B_mReZVE.js +2 -0
  69. package/build/client/assets/progress-B_mReZVE.js.map +1 -0
  70. package/build/client/assets/{progress-bar-7LK87ZMh.js → progress-bar-DCrt7X4t.js} +2 -2
  71. package/build/client/assets/{progress-bar-7LK87ZMh.js.map → progress-bar-DCrt7X4t.js.map} +1 -1
  72. package/build/client/assets/{request-info-Dyls4H67.js → request-info-CUT0ULYN.js} +2 -2
  73. package/build/client/assets/{request-info-Dyls4H67.js.map → request-info-CUT0ULYN.js.map} +1 -1
  74. package/build/client/assets/{root-BQ7V6fP4.js → root-bgHbi7rA.js} +4 -4
  75. package/build/client/assets/root-bgHbi7rA.js.map +1 -0
  76. package/build/client/assets/{support-DUAHYT3r.js → support-DrY-qRGh.js} +2 -2
  77. package/build/client/assets/{support-DUAHYT3r.js.map → support-DrY-qRGh.js.map} +1 -1
  78. package/build/client/assets/tailwind-D2vjZZFL.css +1 -0
  79. package/build/client/assets/tooltip-CfmIzAYi.js +2 -0
  80. package/build/client/assets/tooltip-CfmIzAYi.js.map +1 -0
  81. package/build/client/assets/{use-event-source-aW6X9lN1.js → use-event-source-ySol3hbz.js} +2 -2
  82. package/build/client/assets/{use-event-source-aW6X9lN1.js.map → use-event-source-ySol3hbz.js.map} +1 -1
  83. package/build/client/assets/{user-73ocDYRe.js → user-C4QTtQw5.js} +2 -2
  84. package/build/client/assets/{user-73ocDYRe.js.map → user-C4QTtQw5.js.map} +1 -1
  85. package/build/server/index.js +841 -607
  86. package/build/server/index.js.map +1 -1
  87. package/node_modules/@babel/runtime/helpers/esm/wrapAsyncGenerator.js +65 -3
  88. package/node_modules/@babel/runtime/helpers/wrapAsyncGenerator.js +65 -3
  89. package/node_modules/@babel/runtime/package.json +1 -28
  90. package/node_modules/@conform-to/dom/dom.d.ts +17 -5
  91. package/node_modules/@conform-to/dom/form.d.ts +221 -122
  92. package/node_modules/@conform-to/dom/index.d.ts +24 -2
  93. package/node_modules/@conform-to/dom/intent.d.ts +92 -60
  94. package/node_modules/@conform-to/dom/package.json +1 -1
  95. package/node_modules/@conform-to/dom/parse.d.ts +47 -27
  96. package/node_modules/@conform-to/dom/types.d.ts +17 -14
  97. package/node_modules/@conform-to/dom/util.d.ts +4 -1
  98. package/node_modules/@conform-to/react/context.d.ts +187 -59
  99. package/node_modules/@conform-to/react/context.js +3 -5
  100. package/node_modules/@conform-to/react/context.mjs +4 -6
  101. package/node_modules/@conform-to/react/experimental.d.ts +0 -0
  102. package/node_modules/@conform-to/react/hooks.d.ts +53 -24
  103. package/node_modules/@conform-to/react/index.d.ts +28 -4
  104. package/node_modules/@conform-to/react/integrations.js +14 -1
  105. package/node_modules/@conform-to/react/integrations.mjs +14 -1
  106. package/node_modules/@conform-to/react/package.json +2 -2
  107. package/node_modules/@conform-to/zod/coercion.d.ts +14 -4
  108. package/node_modules/@conform-to/zod/constraint.d.ts +3 -1
  109. package/node_modules/@conform-to/zod/package.json +2 -2
  110. package/node_modules/@conform-to/zod/parse.d.ts +43 -25
  111. package/node_modules/@floating-ui/core/dist/floating-ui.core.browser.min.mjs +1 -1
  112. package/node_modules/@floating-ui/core/dist/floating-ui.core.browser.mjs +14 -3
  113. package/node_modules/@floating-ui/core/dist/floating-ui.core.d.mts +51 -51
  114. package/node_modules/@floating-ui/core/dist/floating-ui.core.d.ts +51 -51
  115. package/node_modules/@floating-ui/core/dist/floating-ui.core.esm.js +14 -3
  116. package/node_modules/@floating-ui/core/dist/floating-ui.core.mjs +14 -3
  117. package/node_modules/@floating-ui/core/dist/floating-ui.core.umd.js +14 -3
  118. package/node_modules/@floating-ui/core/dist/floating-ui.core.umd.min.js +1 -1
  119. package/node_modules/@floating-ui/core/package.json +2 -2
  120. package/node_modules/@floating-ui/dom/dist/floating-ui.dom.browser.min.mjs +1 -1
  121. package/node_modules/@floating-ui/dom/dist/floating-ui.dom.browser.mjs +12 -11
  122. package/node_modules/@floating-ui/dom/dist/floating-ui.dom.d.mts +11 -8
  123. package/node_modules/@floating-ui/dom/dist/floating-ui.dom.d.ts +11 -8
  124. package/node_modules/@floating-ui/dom/dist/floating-ui.dom.esm.js +1 -12
  125. package/node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs +1 -12
  126. package/node_modules/@floating-ui/dom/dist/floating-ui.dom.umd.js +12 -11
  127. package/node_modules/@floating-ui/dom/dist/floating-ui.dom.umd.min.js +1 -1
  128. package/node_modules/@floating-ui/dom/package.json +2 -2
  129. package/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.d.mts +12 -4
  130. package/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.d.ts +12 -4
  131. package/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.esm.js +1 -0
  132. package/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.mjs +1 -0
  133. package/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.umd.js +1 -0
  134. package/node_modules/@floating-ui/react-dom/package.json +1 -1
  135. package/node_modules/@floating-ui/utils/dist/floating-ui.utils.d.mts +11 -6
  136. package/node_modules/@floating-ui/utils/dist/floating-ui.utils.d.ts +11 -6
  137. package/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.d.mts +2 -0
  138. package/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.d.ts +2 -0
  139. package/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.esm.js +13 -1
  140. package/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs +13 -1
  141. package/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.umd.js +13 -0
  142. package/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.umd.min.js +1 -1
  143. package/node_modules/@floating-ui/utils/dom/floating-ui.utils.dom.d.ts +2 -0
  144. package/node_modules/@floating-ui/utils/dom/floating-ui.utils.dom.esm.js +13 -1
  145. package/node_modules/@floating-ui/utils/dom/floating-ui.utils.dom.umd.js +13 -0
  146. package/node_modules/@floating-ui/utils/package.json +1 -1
  147. package/node_modules/@radix-ui/number/dist/index.d.mts +2 -2
  148. package/node_modules/@radix-ui/number/dist/index.d.ts +2 -2
  149. package/node_modules/@radix-ui/number/dist/index.js +28 -10
  150. package/node_modules/@radix-ui/number/dist/index.js.map +7 -1
  151. package/node_modules/@radix-ui/number/dist/index.mjs +6 -7
  152. package/node_modules/@radix-ui/number/dist/index.mjs.map +7 -1
  153. package/node_modules/@radix-ui/number/package.json +1 -4
  154. package/node_modules/@radix-ui/primitive/dist/index.d.mts +2 -2
  155. package/node_modules/@radix-ui/primitive/dist/index.d.ts +2 -2
  156. package/node_modules/@radix-ui/primitive/dist/index.js +33 -13
  157. package/node_modules/@radix-ui/primitive/dist/index.js.map +7 -1
  158. package/node_modules/@radix-ui/primitive/dist/index.mjs +11 -10
  159. package/node_modules/@radix-ui/primitive/dist/index.mjs.map +7 -1
  160. package/node_modules/@radix-ui/primitive/package.json +1 -4
  161. package/node_modules/@radix-ui/react-accordion/dist/index.d.mts +40 -28
  162. package/node_modules/@radix-ui/react-accordion/dist/index.d.ts +40 -28
  163. package/node_modules/@radix-ui/react-accordion/dist/index.js +324 -316
  164. package/node_modules/@radix-ui/react-accordion/dist/index.js.map +7 -1
  165. package/node_modules/@radix-ui/react-accordion/dist/index.mjs +293 -300
  166. package/node_modules/@radix-ui/react-accordion/dist/index.mjs.map +7 -1
  167. package/node_modules/@radix-ui/react-accordion/package.json +12 -13
  168. package/node_modules/@radix-ui/react-arrow/dist/index.d.mts +8 -8
  169. package/node_modules/@radix-ui/react-arrow/dist/index.d.ts +8 -8
  170. package/node_modules/@radix-ui/react-arrow/dist/index.js +57 -37
  171. package/node_modules/@radix-ui/react-arrow/dist/index.js.map +7 -1
  172. package/node_modules/@radix-ui/react-arrow/dist/index.mjs +25 -30
  173. package/node_modules/@radix-ui/react-arrow/dist/index.mjs.map +7 -1
  174. package/node_modules/@radix-ui/react-arrow/package.json +4 -5
  175. package/node_modules/@radix-ui/react-collapsible/dist/index.d.mts +27 -16
  176. package/node_modules/@radix-ui/react-collapsible/dist/index.d.ts +27 -16
  177. package/node_modules/@radix-ui/react-collapsible/dist/index.js +176 -167
  178. package/node_modules/@radix-ui/react-collapsible/dist/index.js.map +7 -1
  179. package/node_modules/@radix-ui/react-collapsible/dist/index.mjs +143 -153
  180. package/node_modules/@radix-ui/react-collapsible/dist/index.mjs.map +7 -1
  181. package/node_modules/@radix-ui/react-collapsible/package.json +11 -12
  182. package/node_modules/@radix-ui/react-collection/dist/index.d.mts +27 -15
  183. package/node_modules/@radix-ui/react-collection/dist/index.d.ts +27 -15
  184. package/node_modules/@radix-ui/react-collection/dist/index.js +99 -112
  185. package/node_modules/@radix-ui/react-collection/dist/index.js.map +7 -1
  186. package/node_modules/@radix-ui/react-collection/dist/index.mjs +68 -106
  187. package/node_modules/@radix-ui/react-collection/dist/index.mjs.map +7 -1
  188. package/node_modules/@radix-ui/react-collection/package.json +7 -8
  189. package/node_modules/@radix-ui/react-compose-refs/dist/index.d.mts +5 -4
  190. package/node_modules/@radix-ui/react-compose-refs/dist/index.d.ts +5 -4
  191. package/node_modules/@radix-ui/react-compose-refs/dist/index.js +47 -30
  192. package/node_modules/@radix-ui/react-compose-refs/dist/index.js.map +7 -1
  193. package/node_modules/@radix-ui/react-compose-refs/dist/index.mjs +16 -27
  194. package/node_modules/@radix-ui/react-compose-refs/dist/index.mjs.map +7 -1
  195. package/node_modules/@radix-ui/react-compose-refs/package.json +2 -5
  196. package/node_modules/@radix-ui/react-context/dist/index.d.mts +10 -8
  197. package/node_modules/@radix-ui/react-context/dist/index.d.ts +10 -8
  198. package/node_modules/@radix-ui/react-context/dist/index.js +104 -123
  199. package/node_modules/@radix-ui/react-context/dist/index.js.map +7 -1
  200. package/node_modules/@radix-ui/react-context/dist/index.mjs +73 -120
  201. package/node_modules/@radix-ui/react-context/dist/index.mjs.map +7 -1
  202. package/node_modules/@radix-ui/react-context/package.json +2 -5
  203. package/node_modules/@radix-ui/react-direction/dist/index.d.mts +6 -5
  204. package/node_modules/@radix-ui/react-direction/dist/index.d.ts +6 -5
  205. package/node_modules/@radix-ui/react-direction/dist/index.js +47 -24
  206. package/node_modules/@radix-ui/react-direction/dist/index.js.map +7 -1
  207. package/node_modules/@radix-ui/react-direction/dist/index.mjs +16 -20
  208. package/node_modules/@radix-ui/react-direction/dist/index.mjs.map +7 -1
  209. package/node_modules/@radix-ui/react-direction/package.json +2 -5
  210. package/node_modules/@radix-ui/react-dismissable-layer/dist/index.d.mts +10 -10
  211. package/node_modules/@radix-ui/react-dismissable-layer/dist/index.d.ts +10 -10
  212. package/node_modules/@radix-ui/react-dismissable-layer/dist/index.js +230 -270
  213. package/node_modules/@radix-ui/react-dismissable-layer/dist/index.js.map +7 -1
  214. package/node_modules/@radix-ui/react-dismissable-layer/dist/index.mjs +199 -261
  215. package/node_modules/@radix-ui/react-dismissable-layer/dist/index.mjs.map +7 -1
  216. package/node_modules/@radix-ui/react-dismissable-layer/package.json +9 -10
  217. package/node_modules/@radix-ui/react-focus-guards/dist/index.d.mts +4 -4
  218. package/node_modules/@radix-ui/react-focus-guards/dist/index.d.ts +4 -4
  219. package/node_modules/@radix-ui/react-focus-guards/dist/index.js +63 -39
  220. package/node_modules/@radix-ui/react-focus-guards/dist/index.js.map +7 -1
  221. package/node_modules/@radix-ui/react-focus-guards/dist/index.mjs +32 -34
  222. package/node_modules/@radix-ui/react-focus-guards/dist/index.mjs.map +7 -1
  223. package/node_modules/@radix-ui/react-focus-guards/package.json +2 -5
  224. package/node_modules/@radix-ui/react-focus-scope/dist/index.d.mts +8 -8
  225. package/node_modules/@radix-ui/react-focus-scope/dist/index.d.ts +8 -8
  226. package/node_modules/@radix-ui/react-focus-scope/dist/index.js +228 -282
  227. package/node_modules/@radix-ui/react-focus-scope/dist/index.js.map +7 -1
  228. package/node_modules/@radix-ui/react-focus-scope/dist/index.mjs +197 -275
  229. package/node_modules/@radix-ui/react-focus-scope/dist/index.mjs.map +7 -1
  230. package/node_modules/@radix-ui/react-focus-scope/package.json +6 -7
  231. package/node_modules/@radix-ui/react-id/dist/index.d.mts +2 -2
  232. package/node_modules/@radix-ui/react-id/dist/index.d.ts +2 -2
  233. package/node_modules/@radix-ui/react-id/dist/index.js +47 -26
  234. package/node_modules/@radix-ui/react-id/dist/index.js.map +7 -1
  235. package/node_modules/@radix-ui/react-id/dist/index.mjs +14 -22
  236. package/node_modules/@radix-ui/react-id/dist/index.mjs.map +7 -1
  237. package/node_modules/@radix-ui/react-id/package.json +3 -4
  238. package/node_modules/@radix-ui/react-popover/dist/index.d.mts +48 -37
  239. package/node_modules/@radix-ui/react-popover/dist/index.d.ts +48 -37
  240. package/node_modules/@radix-ui/react-popover/dist/index.js +319 -311
  241. package/node_modules/@radix-ui/react-popover/dist/index.js.map +7 -1
  242. package/node_modules/@radix-ui/react-popover/dist/index.mjs +288 -291
  243. package/node_modules/@radix-ui/react-popover/dist/index.mjs.map +7 -1
  244. package/node_modules/@radix-ui/react-popover/package.json +17 -18
  245. package/node_modules/@radix-ui/react-popper/dist/index.d.mts +36 -25
  246. package/node_modules/@radix-ui/react-popper/dist/index.d.ts +36 -25
  247. package/node_modules/@radix-ui/react-popper/dist/index.js +305 -321
  248. package/node_modules/@radix-ui/react-popper/dist/index.js.map +7 -1
  249. package/node_modules/@radix-ui/react-popper/dist/index.mjs +284 -305
  250. package/node_modules/@radix-ui/react-popper/dist/index.mjs.map +7 -1
  251. package/node_modules/@radix-ui/react-popper/package.json +12 -13
  252. package/node_modules/@radix-ui/react-portal/dist/index.d.mts +9 -9
  253. package/node_modules/@radix-ui/react-portal/dist/index.d.ts +9 -9
  254. package/node_modules/@radix-ui/react-portal/dist/index.js +52 -34
  255. package/node_modules/@radix-ui/react-portal/dist/index.js.map +7 -1
  256. package/node_modules/@radix-ui/react-portal/dist/index.mjs +21 -27
  257. package/node_modules/@radix-ui/react-portal/dist/index.mjs.map +7 -1
  258. package/node_modules/@radix-ui/react-portal/package.json +5 -5
  259. package/node_modules/@radix-ui/react-presence/dist/index.d.mts +5 -4
  260. package/node_modules/@radix-ui/react-presence/dist/index.d.ts +5 -4
  261. package/node_modules/@radix-ui/react-presence/dist/index.js +147 -132
  262. package/node_modules/@radix-ui/react-presence/dist/index.js.map +7 -1
  263. package/node_modules/@radix-ui/react-presence/dist/index.mjs +116 -129
  264. package/node_modules/@radix-ui/react-presence/dist/index.mjs.map +7 -1
  265. package/node_modules/@radix-ui/react-presence/package.json +5 -6
  266. package/node_modules/@radix-ui/react-primitive/dist/index.d.mts +8 -9
  267. package/node_modules/@radix-ui/react-primitive/dist/index.d.ts +8 -9
  268. package/node_modules/@radix-ui/react-primitive/dist/index.js +73 -100
  269. package/node_modules/@radix-ui/react-primitive/dist/index.js.map +7 -1
  270. package/node_modules/@radix-ui/react-primitive/dist/index.mjs +42 -93
  271. package/node_modules/@radix-ui/react-primitive/dist/index.mjs.map +7 -1
  272. package/node_modules/@radix-ui/react-primitive/package.json +4 -5
  273. package/node_modules/@radix-ui/react-roving-focus/dist/index.d.mts +25 -13
  274. package/node_modules/@radix-ui/react-roving-focus/dist/index.d.ts +25 -13
  275. package/node_modules/@radix-ui/react-roving-focus/dist/index.js +239 -247
  276. package/node_modules/@radix-ui/react-roving-focus/dist/index.js.map +7 -1
  277. package/node_modules/@radix-ui/react-roving-focus/dist/index.mjs +209 -238
  278. package/node_modules/@radix-ui/react-roving-focus/dist/index.mjs.map +7 -1
  279. package/node_modules/@radix-ui/react-roving-focus/package.json +12 -13
  280. package/node_modules/@radix-ui/react-select/dist/index.d.mts +77 -65
  281. package/node_modules/@radix-ui/react-select/dist/index.d.ts +77 -65
  282. package/node_modules/@radix-ui/react-select/dist/index.js +1107 -1235
  283. package/node_modules/@radix-ui/react-select/dist/index.js.map +7 -1
  284. package/node_modules/@radix-ui/react-select/dist/index.mjs +1076 -1197
  285. package/node_modules/@radix-ui/react-select/dist/index.mjs.map +7 -1
  286. package/node_modules/@radix-ui/react-select/package.json +23 -24
  287. package/node_modules/@radix-ui/react-slot/dist/index.d.mts +9 -7
  288. package/node_modules/@radix-ui/react-slot/dist/index.d.ts +9 -7
  289. package/node_modules/@radix-ui/react-slot/dist/index.js +107 -87
  290. package/node_modules/@radix-ui/react-slot/dist/index.js.map +7 -1
  291. package/node_modules/@radix-ui/react-slot/dist/index.mjs +76 -80
  292. package/node_modules/@radix-ui/react-slot/dist/index.mjs.map +7 -1
  293. package/node_modules/@radix-ui/react-slot/package.json +3 -4
  294. package/node_modules/@radix-ui/react-tabs/dist/index.d.mts +32 -21
  295. package/node_modules/@radix-ui/react-tabs/dist/index.d.ts +32 -21
  296. package/node_modules/@radix-ui/react-tabs/dist/index.js +217 -184
  297. package/node_modules/@radix-ui/react-tabs/dist/index.js.map +7 -1
  298. package/node_modules/@radix-ui/react-tabs/dist/index.mjs +185 -169
  299. package/node_modules/@radix-ui/react-tabs/dist/index.mjs.map +7 -1
  300. package/node_modules/@radix-ui/react-tabs/package.json +11 -12
  301. package/node_modules/@radix-ui/react-toast/dist/index.d.mts +43 -32
  302. package/node_modules/@radix-ui/react-toast/dist/index.d.ts +43 -32
  303. package/node_modules/@radix-ui/react-toast/dist/index.js +645 -715
  304. package/node_modules/@radix-ui/react-toast/dist/index.js.map +7 -1
  305. package/node_modules/@radix-ui/react-toast/dist/index.mjs +614 -695
  306. package/node_modules/@radix-ui/react-toast/dist/index.mjs.map +7 -1
  307. package/node_modules/@radix-ui/react-toast/package.json +15 -16
  308. package/node_modules/@radix-ui/react-use-callback-ref/dist/index.d.mts +2 -2
  309. package/node_modules/@radix-ui/react-use-callback-ref/dist/index.d.ts +2 -2
  310. package/node_modules/@radix-ui/react-use-callback-ref/dist/index.js +42 -23
  311. package/node_modules/@radix-ui/react-use-callback-ref/dist/index.js.map +7 -1
  312. package/node_modules/@radix-ui/react-use-callback-ref/dist/index.mjs +11 -21
  313. package/node_modules/@radix-ui/react-use-callback-ref/dist/index.mjs.map +7 -1
  314. package/node_modules/@radix-ui/react-use-callback-ref/package.json +2 -5
  315. package/node_modules/@radix-ui/react-use-controllable-state/dist/index.d.mts +4 -3
  316. package/node_modules/@radix-ui/react-use-controllable-state/dist/index.d.ts +4 -3
  317. package/node_modules/@radix-ui/react-use-controllable-state/dist/index.js +75 -52
  318. package/node_modules/@radix-ui/react-use-controllable-state/dist/index.js.map +7 -1
  319. package/node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs +44 -50
  320. package/node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs.map +7 -1
  321. package/node_modules/@radix-ui/react-use-controllable-state/package.json +3 -4
  322. package/node_modules/@radix-ui/react-use-escape-keydown/dist/index.d.mts +2 -2
  323. package/node_modules/@radix-ui/react-use-escape-keydown/dist/index.d.ts +2 -2
  324. package/node_modules/@radix-ui/react-use-escape-keydown/dist/index.js +50 -29
  325. package/node_modules/@radix-ui/react-use-escape-keydown/dist/index.js.map +7 -1
  326. package/node_modules/@radix-ui/react-use-escape-keydown/dist/index.mjs +17 -25
  327. package/node_modules/@radix-ui/react-use-escape-keydown/dist/index.mjs.map +7 -1
  328. package/node_modules/@radix-ui/react-use-escape-keydown/package.json +3 -4
  329. package/node_modules/@radix-ui/react-use-layout-effect/dist/index.d.mts +4 -3
  330. package/node_modules/@radix-ui/react-use-layout-effect/dist/index.d.ts +4 -3
  331. package/node_modules/@radix-ui/react-use-layout-effect/dist/index.js +38 -17
  332. package/node_modules/@radix-ui/react-use-layout-effect/dist/index.js.map +7 -1
  333. package/node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs +7 -15
  334. package/node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs.map +7 -1
  335. package/node_modules/@radix-ui/react-use-layout-effect/package.json +2 -5
  336. package/node_modules/@radix-ui/react-use-previous/dist/index.d.mts +2 -2
  337. package/node_modules/@radix-ui/react-use-previous/dist/index.d.ts +2 -2
  338. package/node_modules/@radix-ui/react-use-previous/dist/index.js +45 -26
  339. package/node_modules/@radix-ui/react-use-previous/dist/index.js.map +7 -1
  340. package/node_modules/@radix-ui/react-use-previous/dist/index.mjs +14 -24
  341. package/node_modules/@radix-ui/react-use-previous/dist/index.mjs.map +7 -1
  342. package/node_modules/@radix-ui/react-use-previous/package.json +2 -5
  343. package/node_modules/@radix-ui/react-use-rect/dist/index.d.mts +4 -3
  344. package/node_modules/@radix-ui/react-use-rect/dist/index.d.ts +4 -3
  345. package/node_modules/@radix-ui/react-use-rect/dist/index.js +52 -32
  346. package/node_modules/@radix-ui/react-use-rect/dist/index.js.map +7 -1
  347. package/node_modules/@radix-ui/react-use-rect/dist/index.mjs +19 -28
  348. package/node_modules/@radix-ui/react-use-rect/dist/index.mjs.map +7 -1
  349. package/node_modules/@radix-ui/react-use-rect/package.json +3 -4
  350. package/node_modules/@radix-ui/react-use-size/dist/index.d.mts +2 -2
  351. package/node_modules/@radix-ui/react-use-size/dist/index.d.ts +2 -2
  352. package/node_modules/@radix-ui/react-use-size/dist/index.js +70 -57
  353. package/node_modules/@radix-ui/react-use-size/dist/index.js.map +7 -1
  354. package/node_modules/@radix-ui/react-use-size/dist/index.mjs +39 -55
  355. package/node_modules/@radix-ui/react-use-size/dist/index.mjs.map +7 -1
  356. package/node_modules/@radix-ui/react-use-size/package.json +3 -4
  357. package/node_modules/@radix-ui/react-visually-hidden/dist/index.d.mts +8 -8
  358. package/node_modules/@radix-ui/react-visually-hidden/dist/index.d.ts +8 -8
  359. package/node_modules/@radix-ui/react-visually-hidden/dist/index.js +64 -41
  360. package/node_modules/@radix-ui/react-visually-hidden/dist/index.js.map +7 -1
  361. package/node_modules/@radix-ui/react-visually-hidden/dist/index.mjs +33 -35
  362. package/node_modules/@radix-ui/react-visually-hidden/dist/index.mjs.map +7 -1
  363. package/node_modules/@radix-ui/react-visually-hidden/package.json +4 -5
  364. package/node_modules/@radix-ui/rect/dist/index.d.mts +3 -3
  365. package/node_modules/@radix-ui/rect/dist/index.d.ts +3 -3
  366. package/node_modules/@radix-ui/rect/dist/index.js +69 -66
  367. package/node_modules/@radix-ui/rect/dist/index.js.map +7 -1
  368. package/node_modules/@radix-ui/rect/dist/index.mjs +47 -63
  369. package/node_modules/@radix-ui/rect/dist/index.mjs.map +7 -1
  370. package/node_modules/@radix-ui/rect/package.json +1 -4
  371. package/node_modules/@remix-run/react/CHANGELOG.md +18 -0
  372. package/node_modules/@remix-run/react/dist/_virtual/_rollupPluginBabelHelpers.js +1 -1
  373. package/node_modules/@remix-run/react/dist/browser.js +14 -3
  374. package/node_modules/@remix-run/react/dist/components.d.ts +9 -0
  375. package/node_modules/@remix-run/react/dist/components.js +23 -19
  376. package/node_modules/@remix-run/react/dist/data.js +1 -1
  377. package/node_modules/@remix-run/react/dist/entry.d.ts +1 -0
  378. package/node_modules/@remix-run/react/dist/errorBoundaries.d.ts +5 -2
  379. package/node_modules/@remix-run/react/dist/errorBoundaries.js +26 -5
  380. package/node_modules/@remix-run/react/dist/errors.js +1 -1
  381. package/node_modules/@remix-run/react/dist/esm/_virtual/_rollupPluginBabelHelpers.js +1 -1
  382. package/node_modules/@remix-run/react/dist/esm/browser.js +14 -3
  383. package/node_modules/@remix-run/react/dist/esm/components.js +24 -20
  384. package/node_modules/@remix-run/react/dist/esm/data.js +1 -1
  385. package/node_modules/@remix-run/react/dist/esm/errorBoundaries.js +26 -5
  386. package/node_modules/@remix-run/react/dist/esm/errors.js +1 -1
  387. package/node_modules/@remix-run/react/dist/esm/fallback.js +1 -1
  388. package/node_modules/@remix-run/react/dist/esm/fog-of-war.js +226 -0
  389. package/node_modules/@remix-run/react/dist/esm/index.js +1 -1
  390. package/node_modules/@remix-run/react/dist/esm/invariant.js +1 -1
  391. package/node_modules/@remix-run/react/dist/esm/links.js +2 -2
  392. package/node_modules/@remix-run/react/dist/esm/markup.js +1 -1
  393. package/node_modules/@remix-run/react/dist/esm/routeModules.js +1 -1
  394. package/node_modules/@remix-run/react/dist/esm/routes.js +1 -1
  395. package/node_modules/@remix-run/react/dist/esm/scroll-restoration.js +1 -1
  396. package/node_modules/@remix-run/react/dist/esm/server.js +1 -1
  397. package/node_modules/@remix-run/react/dist/esm/single-fetch.js +1 -1
  398. package/node_modules/@remix-run/react/dist/fallback.js +1 -1
  399. package/node_modules/@remix-run/react/dist/fog-of-war.d.ts +37 -0
  400. package/node_modules/@remix-run/react/dist/fog-of-war.js +254 -0
  401. package/node_modules/@remix-run/react/dist/index.js +1 -1
  402. package/node_modules/@remix-run/react/dist/invariant.js +1 -1
  403. package/node_modules/@remix-run/react/dist/links.js +2 -2
  404. package/node_modules/@remix-run/react/dist/markup.js +1 -1
  405. package/node_modules/@remix-run/react/dist/routeModules.js +1 -1
  406. package/node_modules/@remix-run/react/dist/routes.d.ts +1 -1
  407. package/node_modules/@remix-run/react/dist/routes.js +1 -1
  408. package/node_modules/@remix-run/react/dist/scroll-restoration.js +1 -1
  409. package/node_modules/@remix-run/react/dist/server.js +1 -1
  410. package/node_modules/@remix-run/react/dist/single-fetch.js +1 -1
  411. package/node_modules/@remix-run/react/package.json +8 -8
  412. package/node_modules/@remix-run/router/CHANGELOG.md +9 -0
  413. package/node_modules/@remix-run/router/dist/index.d.ts +1 -1
  414. package/node_modules/@remix-run/router/dist/router.cjs.js +467 -80
  415. package/node_modules/@remix-run/router/dist/router.cjs.js.map +1 -1
  416. package/node_modules/@remix-run/router/dist/router.d.ts +11 -1
  417. package/node_modules/@remix-run/router/dist/router.js +457 -76
  418. package/node_modules/@remix-run/router/dist/router.js.map +1 -1
  419. package/node_modules/@remix-run/router/dist/router.umd.js +467 -80
  420. package/node_modules/@remix-run/router/dist/router.umd.js.map +1 -1
  421. package/node_modules/@remix-run/router/dist/router.umd.min.js +2 -2
  422. package/node_modules/@remix-run/router/dist/router.umd.min.js.map +1 -1
  423. package/node_modules/@remix-run/router/dist/utils.d.ts +9 -1
  424. package/node_modules/@remix-run/router/index.ts +1 -0
  425. package/node_modules/@remix-run/router/package.json +1 -1
  426. package/node_modules/@remix-run/router/router.ts +586 -73
  427. package/node_modules/@remix-run/router/utils.ts +51 -8
  428. package/node_modules/@remix-run/server-runtime/CHANGELOG.md +17 -0
  429. package/node_modules/@remix-run/server-runtime/dist/cookies.js +1 -1
  430. package/node_modules/@remix-run/server-runtime/dist/data.js +1 -1
  431. package/node_modules/@remix-run/server-runtime/dist/deprecations.js +1 -1
  432. package/node_modules/@remix-run/server-runtime/dist/dev.js +1 -1
  433. package/node_modules/@remix-run/server-runtime/dist/entry.d.ts +1 -0
  434. package/node_modules/@remix-run/server-runtime/dist/entry.js +1 -1
  435. package/node_modules/@remix-run/server-runtime/dist/errors.js +1 -1
  436. package/node_modules/@remix-run/server-runtime/dist/esm/cookies.js +1 -1
  437. package/node_modules/@remix-run/server-runtime/dist/esm/data.js +1 -1
  438. package/node_modules/@remix-run/server-runtime/dist/esm/deprecations.js +1 -1
  439. package/node_modules/@remix-run/server-runtime/dist/esm/dev.js +1 -1
  440. package/node_modules/@remix-run/server-runtime/dist/esm/entry.js +1 -1
  441. package/node_modules/@remix-run/server-runtime/dist/esm/errors.js +1 -1
  442. package/node_modules/@remix-run/server-runtime/dist/esm/formData.js +1 -1
  443. package/node_modules/@remix-run/server-runtime/dist/esm/headers.js +1 -1
  444. package/node_modules/@remix-run/server-runtime/dist/esm/index.js +1 -1
  445. package/node_modules/@remix-run/server-runtime/dist/esm/invariant.js +1 -1
  446. package/node_modules/@remix-run/server-runtime/dist/esm/markup.js +1 -1
  447. package/node_modules/@remix-run/server-runtime/dist/esm/mode.js +1 -1
  448. package/node_modules/@remix-run/server-runtime/dist/esm/responses.js +1 -1
  449. package/node_modules/@remix-run/server-runtime/dist/esm/routeMatching.js +1 -1
  450. package/node_modules/@remix-run/server-runtime/dist/esm/routes.js +1 -1
  451. package/node_modules/@remix-run/server-runtime/dist/esm/server.js +76 -11
  452. package/node_modules/@remix-run/server-runtime/dist/esm/serverHandoff.js +1 -1
  453. package/node_modules/@remix-run/server-runtime/dist/esm/sessions/cookieStorage.js +1 -1
  454. package/node_modules/@remix-run/server-runtime/dist/esm/sessions/memoryStorage.js +1 -1
  455. package/node_modules/@remix-run/server-runtime/dist/esm/sessions.js +1 -1
  456. package/node_modules/@remix-run/server-runtime/dist/esm/single-fetch.js +17 -8
  457. package/node_modules/@remix-run/server-runtime/dist/esm/upload/errors.js +1 -1
  458. package/node_modules/@remix-run/server-runtime/dist/esm/upload/memoryUploadHandler.js +1 -1
  459. package/node_modules/@remix-run/server-runtime/dist/esm/warnings.js +1 -1
  460. package/node_modules/@remix-run/server-runtime/dist/formData.js +1 -1
  461. package/node_modules/@remix-run/server-runtime/dist/headers.js +1 -1
  462. package/node_modules/@remix-run/server-runtime/dist/index.js +1 -1
  463. package/node_modules/@remix-run/server-runtime/dist/invariant.js +1 -1
  464. package/node_modules/@remix-run/server-runtime/dist/markup.js +1 -1
  465. package/node_modules/@remix-run/server-runtime/dist/mode.js +1 -1
  466. package/node_modules/@remix-run/server-runtime/dist/responses.js +1 -1
  467. package/node_modules/@remix-run/server-runtime/dist/routeMatching.js +1 -1
  468. package/node_modules/@remix-run/server-runtime/dist/routes.js +1 -1
  469. package/node_modules/@remix-run/server-runtime/dist/server.js +70 -5
  470. package/node_modules/@remix-run/server-runtime/dist/serverHandoff.js +1 -1
  471. package/node_modules/@remix-run/server-runtime/dist/sessions/cookieStorage.js +1 -1
  472. package/node_modules/@remix-run/server-runtime/dist/sessions/memoryStorage.js +1 -1
  473. package/node_modules/@remix-run/server-runtime/dist/sessions.js +1 -1
  474. package/node_modules/@remix-run/server-runtime/dist/single-fetch.d.ts +3 -0
  475. package/node_modules/@remix-run/server-runtime/dist/single-fetch.js +18 -7
  476. package/node_modules/@remix-run/server-runtime/dist/upload/errors.js +1 -1
  477. package/node_modules/@remix-run/server-runtime/dist/upload/memoryUploadHandler.js +1 -1
  478. package/node_modules/@remix-run/server-runtime/dist/warnings.js +1 -1
  479. package/node_modules/@remix-run/server-runtime/package.json +3 -3
  480. package/node_modules/deep-eql/index.js +10 -5
  481. package/node_modules/deep-eql/package.json +1 -1
  482. package/node_modules/framer-motion/dist/cjs/{dom-entry-DSxBucW4.js → dom-entry-GDJJhIpT.js} +59 -106
  483. package/node_modules/framer-motion/dist/cjs/dom-entry.js +1 -1
  484. package/node_modules/framer-motion/dist/cjs/index.js +123 -36
  485. package/node_modules/framer-motion/dist/dom.js +1 -1
  486. package/node_modules/framer-motion/dist/es/gestures/drag/VisualElementDragControls.mjs +3 -3
  487. package/node_modules/framer-motion/dist/es/motion/features/animation/index.mjs +6 -3
  488. package/node_modules/framer-motion/dist/es/motion/index.mjs +33 -13
  489. package/node_modules/framer-motion/dist/es/motion/utils/use-motion-ref.mjs +6 -3
  490. package/node_modules/framer-motion/dist/es/motion/utils/use-visual-element.mjs +54 -3
  491. package/node_modules/framer-motion/dist/es/projection/node/create-projection-node.mjs +5 -2
  492. package/node_modules/framer-motion/dist/es/projection-entry.mjs +11 -0
  493. package/node_modules/framer-motion/dist/es/render/VisualElement.mjs +30 -78
  494. package/node_modules/framer-motion/dist/es/render/utils/animation-state.mjs +5 -1
  495. package/node_modules/framer-motion/dist/es/render/utils/motion-values.mjs +1 -1
  496. package/node_modules/framer-motion/dist/es/utils/mix/color.mjs +8 -2
  497. package/node_modules/framer-motion/dist/es/utils/mix/complex.mjs +1 -3
  498. package/node_modules/framer-motion/dist/es/utils/mix/immediate.mjs +5 -0
  499. package/node_modules/framer-motion/dist/es/value/index.mjs +1 -1
  500. package/node_modules/framer-motion/dist/es/value/types/color/rgba.mjs +1 -1
  501. package/node_modules/framer-motion/dist/framer-motion.dev.js +175 -134
  502. package/node_modules/framer-motion/dist/framer-motion.js +1 -1
  503. package/node_modules/framer-motion/dist/index.d.ts +78 -78
  504. package/node_modules/framer-motion/dist/three-entry.d.ts +59 -72
  505. package/node_modules/framer-motion/package.json +14 -28
  506. package/node_modules/react-remove-scroll/dist/es2015/SideEffect.js +15 -4
  507. package/node_modules/react-remove-scroll/dist/es2015/UI.js +2 -2
  508. package/node_modules/react-remove-scroll/dist/es2015/handleScroll.js +12 -4
  509. package/node_modules/react-remove-scroll/dist/es2015/types.d.ts +10 -2
  510. package/node_modules/react-remove-scroll/dist/es2019/SideEffect.js +15 -4
  511. package/node_modules/react-remove-scroll/dist/es2019/UI.js +2 -2
  512. package/node_modules/react-remove-scroll/dist/es2019/handleScroll.js +12 -4
  513. package/node_modules/react-remove-scroll/dist/es2019/types.d.ts +10 -2
  514. package/node_modules/react-remove-scroll/dist/es5/SideEffect.js +15 -4
  515. package/node_modules/react-remove-scroll/dist/es5/UI.js +2 -2
  516. package/node_modules/react-remove-scroll/dist/es5/handleScroll.js +12 -4
  517. package/node_modules/react-remove-scroll/dist/es5/types.d.ts +10 -2
  518. package/node_modules/react-remove-scroll/dist/index.js +93 -0
  519. package/node_modules/react-remove-scroll/package.json +4 -3
  520. package/node_modules/react-router/CHANGELOG.md +14 -0
  521. package/node_modules/react-router/dist/index.d.ts +4 -1
  522. package/node_modules/react-router/dist/index.js +3 -2
  523. package/node_modules/react-router/dist/index.js.map +1 -1
  524. package/node_modules/react-router/dist/main.js +1 -1
  525. package/node_modules/react-router/dist/react-router.development.js +3 -2
  526. package/node_modules/react-router/dist/react-router.development.js.map +1 -1
  527. package/node_modules/react-router/dist/react-router.production.min.js +2 -2
  528. package/node_modules/react-router/dist/react-router.production.min.js.map +1 -1
  529. package/node_modules/react-router/dist/umd/react-router.development.js +3 -2
  530. package/node_modules/react-router/dist/umd/react-router.development.js.map +1 -1
  531. package/node_modules/react-router/dist/umd/react-router.production.min.js +2 -2
  532. package/node_modules/react-router/dist/umd/react-router.production.min.js.map +1 -1
  533. package/node_modules/react-router/package.json +3 -3
  534. package/node_modules/react-router-dom/CHANGELOG.md +17 -0
  535. package/node_modules/react-router-dom/dist/dom.d.ts +29 -16
  536. package/node_modules/react-router-dom/dist/index.d.ts +18 -6
  537. package/node_modules/react-router-dom/dist/index.js +3 -1
  538. package/node_modules/react-router-dom/dist/index.js.map +1 -1
  539. package/node_modules/react-router-dom/dist/main.js +1 -1
  540. package/node_modules/react-router-dom/dist/react-router-dom.development.js +29 -1
  541. package/node_modules/react-router-dom/dist/react-router-dom.development.js.map +1 -1
  542. package/node_modules/react-router-dom/dist/react-router-dom.production.min.js +2 -2
  543. package/node_modules/react-router-dom/dist/react-router-dom.production.min.js.map +1 -1
  544. package/node_modules/react-router-dom/dist/server.js +4 -1
  545. package/node_modules/react-router-dom/dist/server.mjs +4 -1
  546. package/node_modules/react-router-dom/dist/umd/react-router-dom.development.js +29 -1
  547. package/node_modules/react-router-dom/dist/umd/react-router-dom.development.js.map +1 -1
  548. package/node_modules/react-router-dom/dist/umd/react-router-dom.production.min.js +2 -2
  549. package/node_modules/react-router-dom/dist/umd/react-router-dom.production.min.js.map +1 -1
  550. package/node_modules/react-router-dom/package.json +3 -3
  551. package/node_modules/react-router-dom/server.js +4 -1
  552. package/node_modules/react-router-dom/server.mjs +4 -1
  553. package/node_modules/{@remix-run/server-runtime/node_modules/source-map → source-map}/README.md +32 -112
  554. package/node_modules/source-map/dist/source-map.debug.js +3234 -0
  555. package/node_modules/source-map/dist/source-map.js +3233 -0
  556. package/node_modules/source-map/dist/source-map.min.js +2 -0
  557. package/node_modules/source-map/dist/source-map.min.js.map +1 -0
  558. package/node_modules/source-map/lib/array-set.js +121 -0
  559. package/node_modules/{@remix-run/server-runtime/node_modules/source-map → source-map}/lib/base64-vlq.js +40 -11
  560. package/node_modules/source-map/lib/base64.js +67 -0
  561. package/node_modules/{@remix-run/server-runtime/node_modules/source-map → source-map}/lib/binary-search.js +19 -15
  562. package/node_modules/source-map/lib/mapping-list.js +79 -0
  563. package/node_modules/source-map/lib/quick-sort.js +114 -0
  564. package/node_modules/source-map/lib/source-map-consumer.js +1145 -0
  565. package/node_modules/{@remix-run/server-runtime/node_modules/source-map → source-map}/lib/source-map-generator.js +169 -157
  566. package/node_modules/source-map/lib/source-node.js +413 -0
  567. package/node_modules/{@remix-run/server-runtime/node_modules/source-map → source-map}/lib/util.js +51 -109
  568. package/node_modules/{@remix-run/server-runtime/node_modules/source-map → source-map}/package.json +9 -27
  569. package/node_modules/source-map/source-map.d.ts +98 -0
  570. package/node_modules/source-map/source-map.js +8 -0
  571. package/node_modules/turbo-stream/dist/flatten.d.ts +1 -1
  572. package/node_modules/turbo-stream/dist/flatten.js +44 -9
  573. package/node_modules/turbo-stream/dist/turbo-stream.js +11 -2
  574. package/node_modules/turbo-stream/dist/turbo-stream.mjs +58 -7
  575. package/node_modules/turbo-stream/dist/unflatten.js +2 -0
  576. package/node_modules/turbo-stream/dist/utils.d.ts +1 -0
  577. package/node_modules/turbo-stream/dist/utils.js +2 -1
  578. package/node_modules/turbo-stream/package.json +1 -1
  579. package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/index.d.ts +1 -0
  580. package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/package.json +2 -1
  581. package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/readme.md +1 -0
  582. package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/is-literal.d.ts +6 -4
  583. package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/merge-deep.d.ts +8 -9
  584. package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/omit-deep.d.ts +3 -3
  585. package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/paths.d.ts +14 -8
  586. package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/schema.d.ts +12 -12
  587. package/node_modules/type-fest/source/simplify-deep.d.ts +115 -0
  588. package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/simplify.d.ts +1 -1
  589. package/package.json +4 -4
  590. package/build/client/assets/_exerciseNumber_.finished-DNtyBHjg.js +0 -2
  591. package/build/client/assets/_exerciseNumber_.finished-DNtyBHjg.js.map +0 -1
  592. package/build/client/assets/_layout-BR-Qyofe.js +0 -2
  593. package/build/client/assets/_layout-CNgYirUN.js +0 -2
  594. package/build/client/assets/_layout-CNgYirUN.js.map +0 -1
  595. package/build/client/assets/_layout-xu6a9He_.js +0 -2
  596. package/build/client/assets/_layout-xu6a9He_.js.map +0 -1
  597. package/build/client/assets/components-C5xBZAiL.js +0 -119
  598. package/build/client/assets/components-C5xBZAiL.js.map +0 -1
  599. package/build/client/assets/diff-BKsbFB6w.js +0 -42
  600. package/build/client/assets/diff-BKsbFB6w.js.map +0 -1
  601. package/build/client/assets/diff-KDzcgGYL.js +0 -2
  602. package/build/client/assets/discord-Xp0X4-Fl.js +0 -2
  603. package/build/client/assets/discord-Xp0X4-Fl.js.map +0 -1
  604. package/build/client/assets/entry.client-0j1eoieD.js +0 -80
  605. package/build/client/assets/entry.client-0j1eoieD.js.map +0 -1
  606. package/build/client/assets/epic-video-BwtXsHGU.js.map +0 -1
  607. package/build/client/assets/finished-Cu9PZd5Q.js +0 -2
  608. package/build/client/assets/finished-Cu9PZd5Q.js.map +0 -1
  609. package/build/client/assets/index-Bg9MMnnf.js.map +0 -1
  610. package/build/client/assets/index-D6ygCrVn.js +0 -37
  611. package/build/client/assets/index-D6ygCrVn.js.map +0 -1
  612. package/build/client/assets/index-r90CY6Wk.js +0 -8
  613. package/build/client/assets/index-r90CY6Wk.js.map +0 -1
  614. package/build/client/assets/manifest-b31ba37c.js +0 -1
  615. package/build/client/assets/mdx-BYvGbvEr.js +0 -2
  616. package/build/client/assets/misc-DNgC2Frq.js +0 -2
  617. package/build/client/assets/misc-DNgC2Frq.js.map +0 -1
  618. package/build/client/assets/progress-CF9Xwfxf.js +0 -2
  619. package/build/client/assets/progress-CF9Xwfxf.js.map +0 -1
  620. package/build/client/assets/root-BQ7V6fP4.js.map +0 -1
  621. package/build/client/assets/tailwind-Ck4g-nq0.css +0 -1
  622. package/build/client/assets/tooltip-Kw0lYWBI.js +0 -2
  623. package/build/client/assets/tooltip-Kw0lYWBI.js.map +0 -1
  624. package/node_modules/@babel/runtime/helpers/AsyncGenerator.js +0 -64
  625. package/node_modules/@babel/runtime/helpers/esm/AsyncGenerator.js +0 -64
  626. package/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimitLoose.js +0 -10
  627. package/node_modules/@babel/runtime/helpers/esm/slicedToArrayLoose.js +0 -8
  628. package/node_modules/@babel/runtime/helpers/iterableToArrayLimitLoose.js +0 -10
  629. package/node_modules/@babel/runtime/helpers/slicedToArrayLoose.js +0 -8
  630. package/node_modules/@conform-to/dom/rollup.config.js +0 -100
  631. package/node_modules/@conform-to/react/rollup.config.js +0 -102
  632. package/node_modules/@conform-to/zod/rollup.config.js +0 -100
  633. package/node_modules/@radix-ui/number/dist/index.d.ts.map +0 -1
  634. package/node_modules/@radix-ui/primitive/dist/index.d.ts.map +0 -1
  635. package/node_modules/@radix-ui/react-accordion/dist/index.d.ts.map +0 -1
  636. package/node_modules/@radix-ui/react-arrow/dist/index.d.ts.map +0 -1
  637. package/node_modules/@radix-ui/react-collapsible/dist/index.d.ts.map +0 -1
  638. package/node_modules/@radix-ui/react-collection/dist/index.d.ts.map +0 -1
  639. package/node_modules/@radix-ui/react-compose-refs/dist/index.d.ts.map +0 -1
  640. package/node_modules/@radix-ui/react-context/dist/index.d.ts.map +0 -1
  641. package/node_modules/@radix-ui/react-direction/dist/index.d.ts.map +0 -1
  642. package/node_modules/@radix-ui/react-dismissable-layer/dist/index.d.ts.map +0 -1
  643. package/node_modules/@radix-ui/react-focus-guards/dist/index.d.ts.map +0 -1
  644. package/node_modules/@radix-ui/react-focus-scope/dist/index.d.ts.map +0 -1
  645. package/node_modules/@radix-ui/react-id/dist/index.d.ts.map +0 -1
  646. package/node_modules/@radix-ui/react-popover/dist/index.d.ts.map +0 -1
  647. package/node_modules/@radix-ui/react-popper/dist/index.d.ts.map +0 -1
  648. package/node_modules/@radix-ui/react-portal/dist/index.d.ts.map +0 -1
  649. package/node_modules/@radix-ui/react-presence/dist/index.d.ts.map +0 -1
  650. package/node_modules/@radix-ui/react-primitive/dist/index.d.ts.map +0 -1
  651. package/node_modules/@radix-ui/react-roving-focus/dist/index.d.ts.map +0 -1
  652. package/node_modules/@radix-ui/react-select/dist/index.d.ts.map +0 -1
  653. package/node_modules/@radix-ui/react-slot/dist/index.d.ts.map +0 -1
  654. package/node_modules/@radix-ui/react-tabs/dist/index.d.ts.map +0 -1
  655. package/node_modules/@radix-ui/react-toast/dist/index.d.ts.map +0 -1
  656. package/node_modules/@radix-ui/react-use-callback-ref/dist/index.d.ts.map +0 -1
  657. package/node_modules/@radix-ui/react-use-controllable-state/dist/index.d.ts.map +0 -1
  658. package/node_modules/@radix-ui/react-use-escape-keydown/dist/index.d.ts.map +0 -1
  659. package/node_modules/@radix-ui/react-use-layout-effect/dist/index.d.ts.map +0 -1
  660. package/node_modules/@radix-ui/react-use-previous/dist/index.d.ts.map +0 -1
  661. package/node_modules/@radix-ui/react-use-rect/dist/index.d.ts.map +0 -1
  662. package/node_modules/@radix-ui/react-use-size/dist/index.d.ts.map +0 -1
  663. package/node_modules/@radix-ui/react-visually-hidden/dist/index.d.ts.map +0 -1
  664. package/node_modules/@radix-ui/rect/dist/index.d.ts.map +0 -1
  665. package/node_modules/@remix-run/server-runtime/node_modules/source-map/dist/source-map.js +0 -1
  666. package/node_modules/@remix-run/server-runtime/node_modules/source-map/lib/array-set.js +0 -100
  667. package/node_modules/@remix-run/server-runtime/node_modules/source-map/lib/base64.js +0 -18
  668. package/node_modules/@remix-run/server-runtime/node_modules/source-map/lib/mapping-list.js +0 -80
  669. package/node_modules/@remix-run/server-runtime/node_modules/source-map/lib/source-map-consumer.js +0 -1237
  670. package/node_modules/@remix-run/server-runtime/node_modules/source-map/lib/source-node.js +0 -404
  671. package/node_modules/@remix-run/server-runtime/node_modules/source-map/source-map.d.ts +0 -369
  672. package/node_modules/@remix-run/server-runtime/node_modules/source-map/source-map.js +0 -8
  673. package/node_modules/framer-motion/dist/projection.dev.js +0 -6659
  674. /package/node_modules/{@remix-run/server-runtime/node_modules/source-map → source-map}/LICENSE +0 -0
  675. /package/node_modules/{@remix-run/server-runtime/node_modules/source-map → source-map}/lib/mappings.wasm +0 -0
  676. /package/node_modules/{@remix-run/server-runtime/node_modules/source-map → source-map}/lib/read-wasm.js +0 -0
  677. /package/node_modules/{@remix-run/server-runtime/node_modules/source-map → source-map}/lib/wasm.js +0 -0
  678. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/and.d.ts +0 -0
  679. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/array-indices.d.ts +0 -0
  680. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/array-slice.d.ts +0 -0
  681. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/array-splice.d.ts +0 -0
  682. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/array-values.d.ts +0 -0
  683. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/async-return-type.d.ts +0 -0
  684. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/asyncify.d.ts +0 -0
  685. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/basic.d.ts +0 -0
  686. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/camel-case.d.ts +0 -0
  687. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/camel-cased-properties-deep.d.ts +0 -0
  688. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/camel-cased-properties.d.ts +0 -0
  689. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/conditional-except.d.ts +0 -0
  690. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/conditional-keys.d.ts +0 -0
  691. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/conditional-pick-deep.d.ts +0 -0
  692. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/conditional-pick.d.ts +0 -0
  693. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/conditional-simplify.d.ts +0 -0
  694. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/delimiter-case.d.ts +0 -0
  695. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/delimiter-cased-properties-deep.d.ts +0 -0
  696. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/delimiter-cased-properties.d.ts +0 -0
  697. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/distributed-omit.d.ts +0 -0
  698. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/distributed-pick.d.ts +0 -0
  699. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/empty-object.d.ts +0 -0
  700. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/enforce-optional.d.ts +0 -0
  701. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/entries.d.ts +0 -0
  702. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/entry.d.ts +0 -0
  703. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/exact.d.ts +0 -0
  704. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/except.d.ts +0 -0
  705. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/fixed-length-array.d.ts +0 -0
  706. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/get.d.ts +0 -0
  707. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/global-this.d.ts +0 -0
  708. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/greater-than-or-equal.d.ts +0 -0
  709. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/greater-than.d.ts +0 -0
  710. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/has-optional-keys.d.ts +0 -0
  711. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/has-readonly-keys.d.ts +0 -0
  712. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/has-required-keys.d.ts +0 -0
  713. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/has-writable-keys.d.ts +0 -0
  714. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/if-any.d.ts +0 -0
  715. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/if-empty-object.d.ts +0 -0
  716. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/if-never.d.ts +0 -0
  717. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/if-null.d.ts +0 -0
  718. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/if-unknown.d.ts +0 -0
  719. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/includes.d.ts +0 -0
  720. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/int-range.d.ts +0 -0
  721. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/internal.d.ts +0 -0
  722. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/invariant-of.d.ts +0 -0
  723. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/is-any.d.ts +0 -0
  724. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/is-equal.d.ts +0 -0
  725. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/is-float.d.ts +0 -0
  726. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/is-integer.d.ts +0 -0
  727. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/is-never.d.ts +0 -0
  728. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/is-null.d.ts +0 -0
  729. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/is-unknown.d.ts +0 -0
  730. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/iterable-element.d.ts +0 -0
  731. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/join.d.ts +0 -0
  732. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/jsonifiable.d.ts +0 -0
  733. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/jsonify.d.ts +0 -0
  734. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/kebab-case.d.ts +0 -0
  735. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/kebab-cased-properties-deep.d.ts +0 -0
  736. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/kebab-cased-properties.d.ts +0 -0
  737. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/keys-of-union.d.ts +0 -0
  738. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/last-array-element.d.ts +0 -0
  739. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/less-than-or-equal.d.ts +0 -0
  740. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/less-than.d.ts +0 -0
  741. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/literal-to-primitive-deep.d.ts +0 -0
  742. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/literal-to-primitive.d.ts +0 -0
  743. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/literal-union.d.ts +0 -0
  744. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/merge-exclusive.d.ts +0 -0
  745. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/merge.d.ts +0 -0
  746. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/multidimensional-array.d.ts +0 -0
  747. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/multidimensional-readonly-array.d.ts +0 -0
  748. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/non-empty-object.d.ts +0 -0
  749. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/numeric.d.ts +0 -0
  750. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/observable-like.d.ts +0 -0
  751. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/omit-index-signature.d.ts +0 -0
  752. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/opaque.d.ts +0 -0
  753. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/optional-keys-of.d.ts +0 -0
  754. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/or.d.ts +0 -0
  755. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/override-properties.d.ts +0 -0
  756. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/package-json.d.ts +0 -0
  757. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/partial-deep.d.ts +0 -0
  758. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/partial-on-undefined-deep.d.ts +0 -0
  759. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/pascal-case.d.ts +0 -0
  760. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/pascal-cased-properties-deep.d.ts +0 -0
  761. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/pascal-cased-properties.d.ts +0 -0
  762. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/pick-deep.d.ts +0 -0
  763. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/pick-index-signature.d.ts +0 -0
  764. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/primitive.d.ts +0 -0
  765. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/promisable.d.ts +0 -0
  766. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/readonly-deep.d.ts +0 -0
  767. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/readonly-keys-of.d.ts +0 -0
  768. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/readonly-tuple.d.ts +0 -0
  769. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/replace.d.ts +0 -0
  770. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/require-all-or-none.d.ts +0 -0
  771. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/require-at-least-one.d.ts +0 -0
  772. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/require-exactly-one.d.ts +0 -0
  773. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/require-one-or-none.d.ts +0 -0
  774. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/required-deep.d.ts +0 -0
  775. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/required-keys-of.d.ts +0 -0
  776. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/screaming-snake-case.d.ts +0 -0
  777. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/set-field-type.d.ts +0 -0
  778. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/set-non-nullable.d.ts +0 -0
  779. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/set-optional.d.ts +0 -0
  780. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/set-parameter-type.d.ts +0 -0
  781. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/set-readonly.d.ts +0 -0
  782. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/set-required.d.ts +0 -0
  783. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/set-return-type.d.ts +0 -0
  784. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/shared-union-fields-deep.d.ts +0 -0
  785. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/single-key-object.d.ts +0 -0
  786. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/snake-case.d.ts +0 -0
  787. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/snake-cased-properties-deep.d.ts +0 -0
  788. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/snake-cased-properties.d.ts +0 -0
  789. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/split-words.d.ts +0 -0
  790. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/split.d.ts +0 -0
  791. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/spread.d.ts +0 -0
  792. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/string-key-of.d.ts +0 -0
  793. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/string-slice.d.ts +0 -0
  794. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/stringified.d.ts +0 -0
  795. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/subtract.d.ts +0 -0
  796. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/sum.d.ts +0 -0
  797. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/tagged-union.d.ts +0 -0
  798. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/trim.d.ts +0 -0
  799. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/tsconfig-json.d.ts +0 -0
  800. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/tuple-to-union.d.ts +0 -0
  801. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/typed-array.d.ts +0 -0
  802. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/undefined-on-partial-deep.d.ts +0 -0
  803. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/union-to-intersection.d.ts +0 -0
  804. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/unknown-array.d.ts +0 -0
  805. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/unknown-record.d.ts +0 -0
  806. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/value-of.d.ts +0 -0
  807. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/writable-deep.d.ts +0 -0
  808. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/writable-keys-of.d.ts +0 -0
  809. /package/node_modules/{remix-utils/node_modules/type-fest → type-fest}/source/writable.d.ts +0 -0
@@ -1,730 +1,649 @@
1
- import $eyrYI$babelruntimehelpersesmextends from "@babel/runtime/helpers/esm/extends";
2
- import {useState as $eyrYI$useState, useRef as $eyrYI$useRef, createElement as $eyrYI$createElement, useCallback as $eyrYI$useCallback, forwardRef as $eyrYI$forwardRef, useEffect as $eyrYI$useEffect, useMemo as $eyrYI$useMemo, Fragment as $eyrYI$Fragment} from "react";
3
- import {createPortal as $eyrYI$createPortal} from "react-dom";
4
- import {composeEventHandlers as $eyrYI$composeEventHandlers} from "@radix-ui/primitive";
5
- import {useComposedRefs as $eyrYI$useComposedRefs} from "@radix-ui/react-compose-refs";
6
- import {createCollection as $eyrYI$createCollection} from "@radix-ui/react-collection";
7
- import {createContextScope as $eyrYI$createContextScope} from "@radix-ui/react-context";
8
- import {Branch as $eyrYI$Branch, Root as $eyrYI$Root} from "@radix-ui/react-dismissable-layer";
9
- import {Portal as $eyrYI$Portal} from "@radix-ui/react-portal";
10
- import {Presence as $eyrYI$Presence} from "@radix-ui/react-presence";
11
- import {Primitive as $eyrYI$Primitive, dispatchDiscreteCustomEvent as $eyrYI$dispatchDiscreteCustomEvent} from "@radix-ui/react-primitive";
12
- import {useCallbackRef as $eyrYI$useCallbackRef} from "@radix-ui/react-use-callback-ref";
13
- import {useControllableState as $eyrYI$useControllableState} from "@radix-ui/react-use-controllable-state";
14
- import {useLayoutEffect as $eyrYI$useLayoutEffect} from "@radix-ui/react-use-layout-effect";
15
- import {VisuallyHidden as $eyrYI$VisuallyHidden} from "@radix-ui/react-visually-hidden";
1
+ "use client";
16
2
 
17
-
18
-
19
-
20
-
21
-
22
-
23
-
24
-
25
-
26
-
27
-
28
-
29
-
30
-
31
-
32
- /* -------------------------------------------------------------------------------------------------
33
- * ToastProvider
34
- * -----------------------------------------------------------------------------------------------*/ const $054eb8030ebde76e$var$PROVIDER_NAME = 'ToastProvider';
35
- const [$054eb8030ebde76e$var$Collection, $054eb8030ebde76e$var$useCollection, $054eb8030ebde76e$var$createCollectionScope] = $eyrYI$createCollection('Toast');
36
- const [$054eb8030ebde76e$var$createToastContext, $054eb8030ebde76e$export$8a359da18fbc9073] = $eyrYI$createContextScope('Toast', [
37
- $054eb8030ebde76e$var$createCollectionScope
38
- ]);
39
- const [$054eb8030ebde76e$var$ToastProviderProvider, $054eb8030ebde76e$var$useToastProviderContext] = $054eb8030ebde76e$var$createToastContext($054eb8030ebde76e$var$PROVIDER_NAME);
40
- const $054eb8030ebde76e$export$f5d03d415824e0e = (props)=>{
41
- const { __scopeToast: __scopeToast , label: label = 'Notification' , duration: duration = 5000 , swipeDirection: swipeDirection = 'right' , swipeThreshold: swipeThreshold = 50 , children: children } = props;
42
- const [viewport, setViewport] = $eyrYI$useState(null);
43
- const [toastCount, setToastCount] = $eyrYI$useState(0);
44
- const isFocusedToastEscapeKeyDownRef = $eyrYI$useRef(false);
45
- const isClosePausedRef = $eyrYI$useRef(false);
46
- return /*#__PURE__*/ $eyrYI$createElement($054eb8030ebde76e$var$Collection.Provider, {
47
- scope: __scopeToast
48
- }, /*#__PURE__*/ $eyrYI$createElement($054eb8030ebde76e$var$ToastProviderProvider, {
49
- scope: __scopeToast,
50
- label: label,
51
- duration: duration,
52
- swipeDirection: swipeDirection,
53
- swipeThreshold: swipeThreshold,
54
- toastCount: toastCount,
55
- viewport: viewport,
56
- onViewportChange: setViewport,
57
- onToastAdd: $eyrYI$useCallback(()=>setToastCount((prevCount)=>prevCount + 1
58
- )
59
- , []),
60
- onToastRemove: $eyrYI$useCallback(()=>setToastCount((prevCount)=>prevCount - 1
61
- )
62
- , []),
63
- isFocusedToastEscapeKeyDownRef: isFocusedToastEscapeKeyDownRef,
64
- isClosePausedRef: isClosePausedRef
65
- }, children));
66
- };
67
- $054eb8030ebde76e$export$f5d03d415824e0e.propTypes = {
68
- label (props) {
69
- if (props.label && typeof props.label === 'string' && !props.label.trim()) {
70
- const error = `Invalid prop \`label\` supplied to \`${$054eb8030ebde76e$var$PROVIDER_NAME}\`. Expected non-empty \`string\`.`;
71
- return new Error(error);
72
- }
73
- return null;
3
+ // packages/react/toast/src/Toast.tsx
4
+ import * as React from "react";
5
+ import * as ReactDOM from "react-dom";
6
+ import { composeEventHandlers } from "@radix-ui/primitive";
7
+ import { useComposedRefs } from "@radix-ui/react-compose-refs";
8
+ import { createCollection } from "@radix-ui/react-collection";
9
+ import { createContextScope } from "@radix-ui/react-context";
10
+ import * as DismissableLayer from "@radix-ui/react-dismissable-layer";
11
+ import { Portal } from "@radix-ui/react-portal";
12
+ import { Presence } from "@radix-ui/react-presence";
13
+ import { Primitive, dispatchDiscreteCustomEvent } from "@radix-ui/react-primitive";
14
+ import { useCallbackRef } from "@radix-ui/react-use-callback-ref";
15
+ import { useControllableState } from "@radix-ui/react-use-controllable-state";
16
+ import { useLayoutEffect } from "@radix-ui/react-use-layout-effect";
17
+ import { VisuallyHidden } from "@radix-ui/react-visually-hidden";
18
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
19
+ var PROVIDER_NAME = "ToastProvider";
20
+ var [Collection, useCollection, createCollectionScope] = createCollection("Toast");
21
+ var [createToastContext, createToastScope] = createContextScope("Toast", [createCollectionScope]);
22
+ var [ToastProviderProvider, useToastProviderContext] = createToastContext(PROVIDER_NAME);
23
+ var ToastProvider = (props) => {
24
+ const {
25
+ __scopeToast,
26
+ label = "Notification",
27
+ duration = 5e3,
28
+ swipeDirection = "right",
29
+ swipeThreshold = 50,
30
+ children
31
+ } = props;
32
+ const [viewport, setViewport] = React.useState(null);
33
+ const [toastCount, setToastCount] = React.useState(0);
34
+ const isFocusedToastEscapeKeyDownRef = React.useRef(false);
35
+ const isClosePausedRef = React.useRef(false);
36
+ if (!label.trim()) {
37
+ console.error(
38
+ `Invalid prop \`label\` supplied to \`${PROVIDER_NAME}\`. Expected non-empty \`string\`.`
39
+ );
40
+ }
41
+ return /* @__PURE__ */ jsx(Collection.Provider, { scope: __scopeToast, children: /* @__PURE__ */ jsx(
42
+ ToastProviderProvider,
43
+ {
44
+ scope: __scopeToast,
45
+ label,
46
+ duration,
47
+ swipeDirection,
48
+ swipeThreshold,
49
+ toastCount,
50
+ viewport,
51
+ onViewportChange: setViewport,
52
+ onToastAdd: React.useCallback(() => setToastCount((prevCount) => prevCount + 1), []),
53
+ onToastRemove: React.useCallback(() => setToastCount((prevCount) => prevCount - 1), []),
54
+ isFocusedToastEscapeKeyDownRef,
55
+ isClosePausedRef,
56
+ children
74
57
  }
58
+ ) });
75
59
  };
76
- /*#__PURE__*/ Object.assign($054eb8030ebde76e$export$f5d03d415824e0e, {
77
- displayName: $054eb8030ebde76e$var$PROVIDER_NAME
78
- });
79
- /* -------------------------------------------------------------------------------------------------
80
- * ToastViewport
81
- * -----------------------------------------------------------------------------------------------*/ const $054eb8030ebde76e$var$VIEWPORT_NAME = 'ToastViewport';
82
- const $054eb8030ebde76e$var$VIEWPORT_DEFAULT_HOTKEY = [
83
- 'F8'
84
- ];
85
- const $054eb8030ebde76e$var$VIEWPORT_PAUSE = 'toast.viewportPause';
86
- const $054eb8030ebde76e$var$VIEWPORT_RESUME = 'toast.viewportResume';
87
- const $054eb8030ebde76e$export$6192c2425ecfd989 = /*#__PURE__*/ $eyrYI$forwardRef((props, forwardedRef)=>{
88
- const { __scopeToast: __scopeToast , hotkey: hotkey = $054eb8030ebde76e$var$VIEWPORT_DEFAULT_HOTKEY , label: label = 'Notifications ({hotkey})' , ...viewportProps } = props;
89
- const context = $054eb8030ebde76e$var$useToastProviderContext($054eb8030ebde76e$var$VIEWPORT_NAME, __scopeToast);
90
- const getItems = $054eb8030ebde76e$var$useCollection(__scopeToast);
91
- const wrapperRef = $eyrYI$useRef(null);
92
- const headFocusProxyRef = $eyrYI$useRef(null);
93
- const tailFocusProxyRef = $eyrYI$useRef(null);
94
- const ref = $eyrYI$useRef(null);
95
- const composedRefs = $eyrYI$useComposedRefs(forwardedRef, ref, context.onViewportChange);
96
- const hotkeyLabel = hotkey.join('+').replace(/Key/g, '').replace(/Digit/g, '');
60
+ ToastProvider.displayName = PROVIDER_NAME;
61
+ var VIEWPORT_NAME = "ToastViewport";
62
+ var VIEWPORT_DEFAULT_HOTKEY = ["F8"];
63
+ var VIEWPORT_PAUSE = "toast.viewportPause";
64
+ var VIEWPORT_RESUME = "toast.viewportResume";
65
+ var ToastViewport = React.forwardRef(
66
+ (props, forwardedRef) => {
67
+ const {
68
+ __scopeToast,
69
+ hotkey = VIEWPORT_DEFAULT_HOTKEY,
70
+ label = "Notifications ({hotkey})",
71
+ ...viewportProps
72
+ } = props;
73
+ const context = useToastProviderContext(VIEWPORT_NAME, __scopeToast);
74
+ const getItems = useCollection(__scopeToast);
75
+ const wrapperRef = React.useRef(null);
76
+ const headFocusProxyRef = React.useRef(null);
77
+ const tailFocusProxyRef = React.useRef(null);
78
+ const ref = React.useRef(null);
79
+ const composedRefs = useComposedRefs(forwardedRef, ref, context.onViewportChange);
80
+ const hotkeyLabel = hotkey.join("+").replace(/Key/g, "").replace(/Digit/g, "");
97
81
  const hasToasts = context.toastCount > 0;
98
- $eyrYI$useEffect(()=>{
99
- const handleKeyDown = (event)=>{
100
- var _ref$current;
101
- // we use `event.code` as it is consistent regardless of meta keys that were pressed.
102
- // for example, `event.key` for `Control+Alt+t` is `†` and `t !== †`
103
- const isHotkeyPressed = hotkey.every((key)=>event[key] || event.code === key
104
- );
105
- if (isHotkeyPressed) (_ref$current = ref.current) === null || _ref$current === void 0 || _ref$current.focus();
82
+ React.useEffect(() => {
83
+ const handleKeyDown = (event) => {
84
+ const isHotkeyPressed = hotkey.every((key) => event[key] || event.code === key);
85
+ if (isHotkeyPressed) ref.current?.focus();
86
+ };
87
+ document.addEventListener("keydown", handleKeyDown);
88
+ return () => document.removeEventListener("keydown", handleKeyDown);
89
+ }, [hotkey]);
90
+ React.useEffect(() => {
91
+ const wrapper = wrapperRef.current;
92
+ const viewport = ref.current;
93
+ if (hasToasts && wrapper && viewport) {
94
+ const handlePause = () => {
95
+ if (!context.isClosePausedRef.current) {
96
+ const pauseEvent = new CustomEvent(VIEWPORT_PAUSE);
97
+ viewport.dispatchEvent(pauseEvent);
98
+ context.isClosePausedRef.current = true;
99
+ }
106
100
  };
107
- document.addEventListener('keydown', handleKeyDown);
108
- return ()=>document.removeEventListener('keydown', handleKeyDown)
109
- ;
110
- }, [
111
- hotkey
112
- ]);
113
- $eyrYI$useEffect(()=>{
114
- const wrapper = wrapperRef.current;
115
- const viewport = ref.current;
116
- if (hasToasts && wrapper && viewport) {
117
- const handlePause = ()=>{
118
- if (!context.isClosePausedRef.current) {
119
- const pauseEvent = new CustomEvent($054eb8030ebde76e$var$VIEWPORT_PAUSE);
120
- viewport.dispatchEvent(pauseEvent);
121
- context.isClosePausedRef.current = true;
122
- }
123
- };
124
- const handleResume = ()=>{
125
- if (context.isClosePausedRef.current) {
126
- const resumeEvent = new CustomEvent($054eb8030ebde76e$var$VIEWPORT_RESUME);
127
- viewport.dispatchEvent(resumeEvent);
128
- context.isClosePausedRef.current = false;
129
- }
130
- };
131
- const handleFocusOutResume = (event)=>{
132
- const isFocusMovingOutside = !wrapper.contains(event.relatedTarget);
133
- if (isFocusMovingOutside) handleResume();
134
- };
135
- const handlePointerLeaveResume = ()=>{
136
- const isFocusInside = wrapper.contains(document.activeElement);
137
- if (!isFocusInside) handleResume();
138
- }; // Toasts are not in the viewport React tree so we need to bind DOM events
139
- wrapper.addEventListener('focusin', handlePause);
140
- wrapper.addEventListener('focusout', handleFocusOutResume);
141
- wrapper.addEventListener('pointermove', handlePause);
142
- wrapper.addEventListener('pointerleave', handlePointerLeaveResume);
143
- window.addEventListener('blur', handlePause);
144
- window.addEventListener('focus', handleResume);
145
- return ()=>{
146
- wrapper.removeEventListener('focusin', handlePause);
147
- wrapper.removeEventListener('focusout', handleFocusOutResume);
148
- wrapper.removeEventListener('pointermove', handlePause);
149
- wrapper.removeEventListener('pointerleave', handlePointerLeaveResume);
150
- window.removeEventListener('blur', handlePause);
151
- window.removeEventListener('focus', handleResume);
152
- };
153
- }
154
- }, [
155
- hasToasts,
156
- context.isClosePausedRef
157
- ]);
158
- const getSortedTabbableCandidates = $eyrYI$useCallback(({ tabbingDirection: tabbingDirection })=>{
101
+ const handleResume = () => {
102
+ if (context.isClosePausedRef.current) {
103
+ const resumeEvent = new CustomEvent(VIEWPORT_RESUME);
104
+ viewport.dispatchEvent(resumeEvent);
105
+ context.isClosePausedRef.current = false;
106
+ }
107
+ };
108
+ const handleFocusOutResume = (event) => {
109
+ const isFocusMovingOutside = !wrapper.contains(event.relatedTarget);
110
+ if (isFocusMovingOutside) handleResume();
111
+ };
112
+ const handlePointerLeaveResume = () => {
113
+ const isFocusInside = wrapper.contains(document.activeElement);
114
+ if (!isFocusInside) handleResume();
115
+ };
116
+ wrapper.addEventListener("focusin", handlePause);
117
+ wrapper.addEventListener("focusout", handleFocusOutResume);
118
+ wrapper.addEventListener("pointermove", handlePause);
119
+ wrapper.addEventListener("pointerleave", handlePointerLeaveResume);
120
+ window.addEventListener("blur", handlePause);
121
+ window.addEventListener("focus", handleResume);
122
+ return () => {
123
+ wrapper.removeEventListener("focusin", handlePause);
124
+ wrapper.removeEventListener("focusout", handleFocusOutResume);
125
+ wrapper.removeEventListener("pointermove", handlePause);
126
+ wrapper.removeEventListener("pointerleave", handlePointerLeaveResume);
127
+ window.removeEventListener("blur", handlePause);
128
+ window.removeEventListener("focus", handleResume);
129
+ };
130
+ }
131
+ }, [hasToasts, context.isClosePausedRef]);
132
+ const getSortedTabbableCandidates = React.useCallback(
133
+ ({ tabbingDirection }) => {
159
134
  const toastItems = getItems();
160
- const tabbableCandidates = toastItems.map((toastItem)=>{
161
- const toastNode = toastItem.ref.current;
162
- const toastTabbableCandidates = [
163
- toastNode,
164
- ...$054eb8030ebde76e$var$getTabbableCandidates(toastNode)
165
- ];
166
- return tabbingDirection === 'forwards' ? toastTabbableCandidates : toastTabbableCandidates.reverse();
135
+ const tabbableCandidates = toastItems.map((toastItem) => {
136
+ const toastNode = toastItem.ref.current;
137
+ const toastTabbableCandidates = [toastNode, ...getTabbableCandidates(toastNode)];
138
+ return tabbingDirection === "forwards" ? toastTabbableCandidates : toastTabbableCandidates.reverse();
167
139
  });
168
- return (tabbingDirection === 'forwards' ? tabbableCandidates.reverse() : tabbableCandidates).flat();
169
- }, [
170
- getItems
171
- ]);
172
- $eyrYI$useEffect(()=>{
173
- const viewport = ref.current; // We programmatically manage tabbing as we are unable to influence
174
- // the source order with portals, this allows us to reverse the
175
- // tab order so that it runs from most recent toast to least
176
- if (viewport) {
177
- const handleKeyDown = (event)=>{
178
- const isMetaKey = event.altKey || event.ctrlKey || event.metaKey;
179
- const isTabKey = event.key === 'Tab' && !isMetaKey;
180
- if (isTabKey) {
181
- const focusedElement = document.activeElement;
182
- const isTabbingBackwards = event.shiftKey;
183
- const targetIsViewport = event.target === viewport; // If we're back tabbing after jumping to the viewport then we simply
184
- // proxy focus out to the preceding document
185
- if (targetIsViewport && isTabbingBackwards) {
186
- var _headFocusProxyRef$cu;
187
- (_headFocusProxyRef$cu = headFocusProxyRef.current) === null || _headFocusProxyRef$cu === void 0 || _headFocusProxyRef$cu.focus();
188
- return;
189
- }
190
- const tabbingDirection = isTabbingBackwards ? 'backwards' : 'forwards';
191
- const sortedCandidates = getSortedTabbableCandidates({
192
- tabbingDirection: tabbingDirection
193
- });
194
- const index = sortedCandidates.findIndex((candidate)=>candidate === focusedElement
195
- );
196
- if ($054eb8030ebde76e$var$focusFirst(sortedCandidates.slice(index + 1))) event.preventDefault();
197
- else {
198
- var _headFocusProxyRef$cu2, _tailFocusProxyRef$cu;
199
- // If we can't focus that means we're at the edges so we
200
- // proxy to the corresponding exit point and let the browser handle
201
- // tab/shift+tab keypress and implicitly pass focus to the next valid element in the document
202
- isTabbingBackwards ? (_headFocusProxyRef$cu2 = headFocusProxyRef.current) === null || _headFocusProxyRef$cu2 === void 0 || _headFocusProxyRef$cu2.focus() : (_tailFocusProxyRef$cu = tailFocusProxyRef.current) === null || _tailFocusProxyRef$cu === void 0 || _tailFocusProxyRef$cu.focus();
203
- }
204
- }
205
- }; // Toasts are not in the viewport React tree so we need to bind DOM events
206
- viewport.addEventListener('keydown', handleKeyDown);
207
- return ()=>viewport.removeEventListener('keydown', handleKeyDown)
208
- ;
209
- }
210
- }, [
211
- getItems,
212
- getSortedTabbableCandidates
213
- ]);
214
- return /*#__PURE__*/ $eyrYI$createElement($eyrYI$Branch, {
140
+ return (tabbingDirection === "forwards" ? tabbableCandidates.reverse() : tabbableCandidates).flat();
141
+ },
142
+ [getItems]
143
+ );
144
+ React.useEffect(() => {
145
+ const viewport = ref.current;
146
+ if (viewport) {
147
+ const handleKeyDown = (event) => {
148
+ const isMetaKey = event.altKey || event.ctrlKey || event.metaKey;
149
+ const isTabKey = event.key === "Tab" && !isMetaKey;
150
+ if (isTabKey) {
151
+ const focusedElement = document.activeElement;
152
+ const isTabbingBackwards = event.shiftKey;
153
+ const targetIsViewport = event.target === viewport;
154
+ if (targetIsViewport && isTabbingBackwards) {
155
+ headFocusProxyRef.current?.focus();
156
+ return;
157
+ }
158
+ const tabbingDirection = isTabbingBackwards ? "backwards" : "forwards";
159
+ const sortedCandidates = getSortedTabbableCandidates({ tabbingDirection });
160
+ const index = sortedCandidates.findIndex((candidate) => candidate === focusedElement);
161
+ if (focusFirst(sortedCandidates.slice(index + 1))) {
162
+ event.preventDefault();
163
+ } else {
164
+ isTabbingBackwards ? headFocusProxyRef.current?.focus() : tailFocusProxyRef.current?.focus();
165
+ }
166
+ }
167
+ };
168
+ viewport.addEventListener("keydown", handleKeyDown);
169
+ return () => viewport.removeEventListener("keydown", handleKeyDown);
170
+ }
171
+ }, [getItems, getSortedTabbableCandidates]);
172
+ return /* @__PURE__ */ jsxs(
173
+ DismissableLayer.Branch,
174
+ {
215
175
  ref: wrapperRef,
216
176
  role: "region",
217
- "aria-label": label.replace('{hotkey}', hotkeyLabel) // Ensure virtual cursor from landmarks menus triggers focus/blur for pause/resume
218
- ,
219
- tabIndex: -1 // incase list has size when empty (e.g. padding), we remove pointer events so
220
- ,
221
- style: {
222
- pointerEvents: hasToasts ? undefined : 'none'
223
- }
224
- }, hasToasts && /*#__PURE__*/ $eyrYI$createElement($054eb8030ebde76e$var$FocusProxy, {
225
- ref: headFocusProxyRef,
226
- onFocusFromOutsideViewport: ()=>{
227
- const tabbableCandidates = getSortedTabbableCandidates({
228
- tabbingDirection: 'forwards'
229
- });
230
- $054eb8030ebde76e$var$focusFirst(tabbableCandidates);
231
- }
232
- }), /*#__PURE__*/ $eyrYI$createElement($054eb8030ebde76e$var$Collection.Slot, {
233
- scope: __scopeToast
234
- }, /*#__PURE__*/ $eyrYI$createElement($eyrYI$Primitive.ol, $eyrYI$babelruntimehelpersesmextends({
235
- tabIndex: -1
236
- }, viewportProps, {
237
- ref: composedRefs
238
- }))), hasToasts && /*#__PURE__*/ $eyrYI$createElement($054eb8030ebde76e$var$FocusProxy, {
239
- ref: tailFocusProxyRef,
240
- onFocusFromOutsideViewport: ()=>{
241
- const tabbableCandidates = getSortedTabbableCandidates({
242
- tabbingDirection: 'backwards'
243
- });
244
- $054eb8030ebde76e$var$focusFirst(tabbableCandidates);
245
- }
246
- }));
247
- });
248
- /*#__PURE__*/ Object.assign($054eb8030ebde76e$export$6192c2425ecfd989, {
249
- displayName: $054eb8030ebde76e$var$VIEWPORT_NAME
250
- });
251
- /* -----------------------------------------------------------------------------------------------*/ const $054eb8030ebde76e$var$FOCUS_PROXY_NAME = 'ToastFocusProxy';
252
- const $054eb8030ebde76e$var$FocusProxy = /*#__PURE__*/ $eyrYI$forwardRef((props, forwardedRef)=>{
253
- const { __scopeToast: __scopeToast , onFocusFromOutsideViewport: onFocusFromOutsideViewport , ...proxyProps } = props;
254
- const context = $054eb8030ebde76e$var$useToastProviderContext($054eb8030ebde76e$var$FOCUS_PROXY_NAME, __scopeToast);
255
- return /*#__PURE__*/ $eyrYI$createElement($eyrYI$VisuallyHidden, $eyrYI$babelruntimehelpersesmextends({
177
+ "aria-label": label.replace("{hotkey}", hotkeyLabel),
178
+ tabIndex: -1,
179
+ style: { pointerEvents: hasToasts ? void 0 : "none" },
180
+ children: [
181
+ hasToasts && /* @__PURE__ */ jsx(
182
+ FocusProxy,
183
+ {
184
+ ref: headFocusProxyRef,
185
+ onFocusFromOutsideViewport: () => {
186
+ const tabbableCandidates = getSortedTabbableCandidates({
187
+ tabbingDirection: "forwards"
188
+ });
189
+ focusFirst(tabbableCandidates);
190
+ }
191
+ }
192
+ ),
193
+ /* @__PURE__ */ jsx(Collection.Slot, { scope: __scopeToast, children: /* @__PURE__ */ jsx(Primitive.ol, { tabIndex: -1, ...viewportProps, ref: composedRefs }) }),
194
+ hasToasts && /* @__PURE__ */ jsx(
195
+ FocusProxy,
196
+ {
197
+ ref: tailFocusProxyRef,
198
+ onFocusFromOutsideViewport: () => {
199
+ const tabbableCandidates = getSortedTabbableCandidates({
200
+ tabbingDirection: "backwards"
201
+ });
202
+ focusFirst(tabbableCandidates);
203
+ }
204
+ }
205
+ )
206
+ ]
207
+ }
208
+ );
209
+ }
210
+ );
211
+ ToastViewport.displayName = VIEWPORT_NAME;
212
+ var FOCUS_PROXY_NAME = "ToastFocusProxy";
213
+ var FocusProxy = React.forwardRef(
214
+ (props, forwardedRef) => {
215
+ const { __scopeToast, onFocusFromOutsideViewport, ...proxyProps } = props;
216
+ const context = useToastProviderContext(FOCUS_PROXY_NAME, __scopeToast);
217
+ return /* @__PURE__ */ jsx(
218
+ VisuallyHidden,
219
+ {
256
220
  "aria-hidden": true,
257
- tabIndex: 0
258
- }, proxyProps, {
259
- ref: forwardedRef // Avoid page scrolling when focus is on the focus proxy
260
- ,
261
- style: {
262
- position: 'fixed'
263
- },
264
- onFocus: (event)=>{
265
- var _context$viewport;
266
- const prevFocusedElement = event.relatedTarget;
267
- const isFocusFromOutsideViewport = !((_context$viewport = context.viewport) !== null && _context$viewport !== void 0 && _context$viewport.contains(prevFocusedElement));
268
- if (isFocusFromOutsideViewport) onFocusFromOutsideViewport();
221
+ tabIndex: 0,
222
+ ...proxyProps,
223
+ ref: forwardedRef,
224
+ style: { position: "fixed" },
225
+ onFocus: (event) => {
226
+ const prevFocusedElement = event.relatedTarget;
227
+ const isFocusFromOutsideViewport = !context.viewport?.contains(prevFocusedElement);
228
+ if (isFocusFromOutsideViewport) onFocusFromOutsideViewport();
269
229
  }
270
- }));
271
- });
272
- /*#__PURE__*/ Object.assign($054eb8030ebde76e$var$FocusProxy, {
273
- displayName: $054eb8030ebde76e$var$FOCUS_PROXY_NAME
274
- });
275
- /* -------------------------------------------------------------------------------------------------
276
- * Toast
277
- * -----------------------------------------------------------------------------------------------*/ const $054eb8030ebde76e$var$TOAST_NAME = 'Toast';
278
- const $054eb8030ebde76e$var$TOAST_SWIPE_START = 'toast.swipeStart';
279
- const $054eb8030ebde76e$var$TOAST_SWIPE_MOVE = 'toast.swipeMove';
280
- const $054eb8030ebde76e$var$TOAST_SWIPE_CANCEL = 'toast.swipeCancel';
281
- const $054eb8030ebde76e$var$TOAST_SWIPE_END = 'toast.swipeEnd';
282
- const $054eb8030ebde76e$export$8d8dc7d5f743331b = /*#__PURE__*/ $eyrYI$forwardRef((props, forwardedRef)=>{
283
- const { forceMount: forceMount , open: openProp , defaultOpen: defaultOpen , onOpenChange: onOpenChange , ...toastProps } = props;
284
- const [open = true, setOpen] = $eyrYI$useControllableState({
285
- prop: openProp,
286
- defaultProp: defaultOpen,
287
- onChange: onOpenChange
230
+ }
231
+ );
232
+ }
233
+ );
234
+ FocusProxy.displayName = FOCUS_PROXY_NAME;
235
+ var TOAST_NAME = "Toast";
236
+ var TOAST_SWIPE_START = "toast.swipeStart";
237
+ var TOAST_SWIPE_MOVE = "toast.swipeMove";
238
+ var TOAST_SWIPE_CANCEL = "toast.swipeCancel";
239
+ var TOAST_SWIPE_END = "toast.swipeEnd";
240
+ var Toast = React.forwardRef(
241
+ (props, forwardedRef) => {
242
+ const { forceMount, open: openProp, defaultOpen, onOpenChange, ...toastProps } = props;
243
+ const [open = true, setOpen] = useControllableState({
244
+ prop: openProp,
245
+ defaultProp: defaultOpen,
246
+ onChange: onOpenChange
288
247
  });
289
- return /*#__PURE__*/ $eyrYI$createElement($eyrYI$Presence, {
290
- present: forceMount || open
291
- }, /*#__PURE__*/ $eyrYI$createElement($054eb8030ebde76e$var$ToastImpl, $eyrYI$babelruntimehelpersesmextends({
292
- open: open
293
- }, toastProps, {
248
+ return /* @__PURE__ */ jsx(Presence, { present: forceMount || open, children: /* @__PURE__ */ jsx(
249
+ ToastImpl,
250
+ {
251
+ open,
252
+ ...toastProps,
294
253
  ref: forwardedRef,
295
- onClose: ()=>setOpen(false)
296
- ,
297
- onPause: $eyrYI$useCallbackRef(props.onPause),
298
- onResume: $eyrYI$useCallbackRef(props.onResume),
299
- onSwipeStart: $eyrYI$composeEventHandlers(props.onSwipeStart, (event)=>{
300
- event.currentTarget.setAttribute('data-swipe', 'start');
254
+ onClose: () => setOpen(false),
255
+ onPause: useCallbackRef(props.onPause),
256
+ onResume: useCallbackRef(props.onResume),
257
+ onSwipeStart: composeEventHandlers(props.onSwipeStart, (event) => {
258
+ event.currentTarget.setAttribute("data-swipe", "start");
301
259
  }),
302
- onSwipeMove: $eyrYI$composeEventHandlers(props.onSwipeMove, (event)=>{
303
- const { x: x , y: y } = event.detail.delta;
304
- event.currentTarget.setAttribute('data-swipe', 'move');
305
- event.currentTarget.style.setProperty('--radix-toast-swipe-move-x', `${x}px`);
306
- event.currentTarget.style.setProperty('--radix-toast-swipe-move-y', `${y}px`);
260
+ onSwipeMove: composeEventHandlers(props.onSwipeMove, (event) => {
261
+ const { x, y } = event.detail.delta;
262
+ event.currentTarget.setAttribute("data-swipe", "move");
263
+ event.currentTarget.style.setProperty("--radix-toast-swipe-move-x", `${x}px`);
264
+ event.currentTarget.style.setProperty("--radix-toast-swipe-move-y", `${y}px`);
307
265
  }),
308
- onSwipeCancel: $eyrYI$composeEventHandlers(props.onSwipeCancel, (event)=>{
309
- event.currentTarget.setAttribute('data-swipe', 'cancel');
310
- event.currentTarget.style.removeProperty('--radix-toast-swipe-move-x');
311
- event.currentTarget.style.removeProperty('--radix-toast-swipe-move-y');
312
- event.currentTarget.style.removeProperty('--radix-toast-swipe-end-x');
313
- event.currentTarget.style.removeProperty('--radix-toast-swipe-end-y');
266
+ onSwipeCancel: composeEventHandlers(props.onSwipeCancel, (event) => {
267
+ event.currentTarget.setAttribute("data-swipe", "cancel");
268
+ event.currentTarget.style.removeProperty("--radix-toast-swipe-move-x");
269
+ event.currentTarget.style.removeProperty("--radix-toast-swipe-move-y");
270
+ event.currentTarget.style.removeProperty("--radix-toast-swipe-end-x");
271
+ event.currentTarget.style.removeProperty("--radix-toast-swipe-end-y");
314
272
  }),
315
- onSwipeEnd: $eyrYI$composeEventHandlers(props.onSwipeEnd, (event)=>{
316
- const { x: x , y: y } = event.detail.delta;
317
- event.currentTarget.setAttribute('data-swipe', 'end');
318
- event.currentTarget.style.removeProperty('--radix-toast-swipe-move-x');
319
- event.currentTarget.style.removeProperty('--radix-toast-swipe-move-y');
320
- event.currentTarget.style.setProperty('--radix-toast-swipe-end-x', `${x}px`);
321
- event.currentTarget.style.setProperty('--radix-toast-swipe-end-y', `${y}px`);
322
- setOpen(false);
273
+ onSwipeEnd: composeEventHandlers(props.onSwipeEnd, (event) => {
274
+ const { x, y } = event.detail.delta;
275
+ event.currentTarget.setAttribute("data-swipe", "end");
276
+ event.currentTarget.style.removeProperty("--radix-toast-swipe-move-x");
277
+ event.currentTarget.style.removeProperty("--radix-toast-swipe-move-y");
278
+ event.currentTarget.style.setProperty("--radix-toast-swipe-end-x", `${x}px`);
279
+ event.currentTarget.style.setProperty("--radix-toast-swipe-end-y", `${y}px`);
280
+ setOpen(false);
323
281
  })
324
- })));
325
- });
326
- /*#__PURE__*/ Object.assign($054eb8030ebde76e$export$8d8dc7d5f743331b, {
327
- displayName: $054eb8030ebde76e$var$TOAST_NAME
328
- });
329
- /* -----------------------------------------------------------------------------------------------*/ const [$054eb8030ebde76e$var$ToastInteractiveProvider, $054eb8030ebde76e$var$useToastInteractiveContext] = $054eb8030ebde76e$var$createToastContext($054eb8030ebde76e$var$TOAST_NAME, {
330
- onClose () {}
282
+ }
283
+ ) });
284
+ }
285
+ );
286
+ Toast.displayName = TOAST_NAME;
287
+ var [ToastInteractiveProvider, useToastInteractiveContext] = createToastContext(TOAST_NAME, {
288
+ onClose() {
289
+ }
331
290
  });
332
- const $054eb8030ebde76e$var$ToastImpl = /*#__PURE__*/ $eyrYI$forwardRef((props, forwardedRef)=>{
333
- const { __scopeToast: __scopeToast , type: type = 'foreground' , duration: durationProp , open: open , onClose: onClose , onEscapeKeyDown: onEscapeKeyDown , onPause: onPause , onResume: onResume , onSwipeStart: onSwipeStart , onSwipeMove: onSwipeMove , onSwipeCancel: onSwipeCancel , onSwipeEnd: onSwipeEnd , ...toastProps } = props;
334
- const context = $054eb8030ebde76e$var$useToastProviderContext($054eb8030ebde76e$var$TOAST_NAME, __scopeToast);
335
- const [node1, setNode] = $eyrYI$useState(null);
336
- const composedRefs = $eyrYI$useComposedRefs(forwardedRef, (node)=>setNode(node)
337
- );
338
- const pointerStartRef = $eyrYI$useRef(null);
339
- const swipeDeltaRef = $eyrYI$useRef(null);
340
- const duration1 = durationProp || context.duration;
341
- const closeTimerStartTimeRef = $eyrYI$useRef(0);
342
- const closeTimerRemainingTimeRef = $eyrYI$useRef(duration1);
343
- const closeTimerRef = $eyrYI$useRef(0);
344
- const { onToastAdd: onToastAdd , onToastRemove: onToastRemove } = context;
345
- const handleClose = $eyrYI$useCallbackRef(()=>{
346
- var _context$viewport2;
347
- // focus viewport if focus is within toast to read the remaining toast
348
- // count to SR users and ensure focus isn't lost
349
- const isFocusInToast = node1 === null || node1 === void 0 ? void 0 : node1.contains(document.activeElement);
350
- if (isFocusInToast) (_context$viewport2 = context.viewport) === null || _context$viewport2 === void 0 || _context$viewport2.focus();
351
- onClose();
291
+ var ToastImpl = React.forwardRef(
292
+ (props, forwardedRef) => {
293
+ const {
294
+ __scopeToast,
295
+ type = "foreground",
296
+ duration: durationProp,
297
+ open,
298
+ onClose,
299
+ onEscapeKeyDown,
300
+ onPause,
301
+ onResume,
302
+ onSwipeStart,
303
+ onSwipeMove,
304
+ onSwipeCancel,
305
+ onSwipeEnd,
306
+ ...toastProps
307
+ } = props;
308
+ const context = useToastProviderContext(TOAST_NAME, __scopeToast);
309
+ const [node, setNode] = React.useState(null);
310
+ const composedRefs = useComposedRefs(forwardedRef, (node2) => setNode(node2));
311
+ const pointerStartRef = React.useRef(null);
312
+ const swipeDeltaRef = React.useRef(null);
313
+ const duration = durationProp || context.duration;
314
+ const closeTimerStartTimeRef = React.useRef(0);
315
+ const closeTimerRemainingTimeRef = React.useRef(duration);
316
+ const closeTimerRef = React.useRef(0);
317
+ const { onToastAdd, onToastRemove } = context;
318
+ const handleClose = useCallbackRef(() => {
319
+ const isFocusInToast = node?.contains(document.activeElement);
320
+ if (isFocusInToast) context.viewport?.focus();
321
+ onClose();
352
322
  });
353
- const startTimer = $eyrYI$useCallback((duration)=>{
354
- if (!duration || duration === Infinity) return;
323
+ const startTimer = React.useCallback(
324
+ (duration2) => {
325
+ if (!duration2 || duration2 === Infinity) return;
355
326
  window.clearTimeout(closeTimerRef.current);
356
- closeTimerStartTimeRef.current = new Date().getTime();
357
- closeTimerRef.current = window.setTimeout(handleClose, duration);
358
- }, [
359
- handleClose
360
- ]);
361
- $eyrYI$useEffect(()=>{
362
- const viewport = context.viewport;
363
- if (viewport) {
364
- const handleResume = ()=>{
365
- startTimer(closeTimerRemainingTimeRef.current);
366
- onResume === null || onResume === void 0 || onResume();
367
- };
368
- const handlePause = ()=>{
369
- const elapsedTime = new Date().getTime() - closeTimerStartTimeRef.current;
370
- closeTimerRemainingTimeRef.current = closeTimerRemainingTimeRef.current - elapsedTime;
371
- window.clearTimeout(closeTimerRef.current);
372
- onPause === null || onPause === void 0 || onPause();
373
- };
374
- viewport.addEventListener($054eb8030ebde76e$var$VIEWPORT_PAUSE, handlePause);
375
- viewport.addEventListener($054eb8030ebde76e$var$VIEWPORT_RESUME, handleResume);
376
- return ()=>{
377
- viewport.removeEventListener($054eb8030ebde76e$var$VIEWPORT_PAUSE, handlePause);
378
- viewport.removeEventListener($054eb8030ebde76e$var$VIEWPORT_RESUME, handleResume);
379
- };
380
- }
381
- }, [
382
- context.viewport,
383
- duration1,
384
- onPause,
385
- onResume,
386
- startTimer
387
- ]); // start timer when toast opens or duration changes.
388
- // we include `open` in deps because closed !== unmounted when animating
389
- // so it could reopen before being completely unmounted
390
- $eyrYI$useEffect(()=>{
391
- if (open && !context.isClosePausedRef.current) startTimer(duration1);
392
- }, [
393
- open,
394
- duration1,
395
- context.isClosePausedRef,
396
- startTimer
397
- ]);
398
- $eyrYI$useEffect(()=>{
399
- onToastAdd();
400
- return ()=>onToastRemove()
401
- ;
402
- }, [
403
- onToastAdd,
404
- onToastRemove
405
- ]);
406
- const announceTextContent = $eyrYI$useMemo(()=>{
407
- return node1 ? $054eb8030ebde76e$var$getAnnounceTextContent(node1) : null;
408
- }, [
409
- node1
410
- ]);
327
+ closeTimerStartTimeRef.current = (/* @__PURE__ */ new Date()).getTime();
328
+ closeTimerRef.current = window.setTimeout(handleClose, duration2);
329
+ },
330
+ [handleClose]
331
+ );
332
+ React.useEffect(() => {
333
+ const viewport = context.viewport;
334
+ if (viewport) {
335
+ const handleResume = () => {
336
+ startTimer(closeTimerRemainingTimeRef.current);
337
+ onResume?.();
338
+ };
339
+ const handlePause = () => {
340
+ const elapsedTime = (/* @__PURE__ */ new Date()).getTime() - closeTimerStartTimeRef.current;
341
+ closeTimerRemainingTimeRef.current = closeTimerRemainingTimeRef.current - elapsedTime;
342
+ window.clearTimeout(closeTimerRef.current);
343
+ onPause?.();
344
+ };
345
+ viewport.addEventListener(VIEWPORT_PAUSE, handlePause);
346
+ viewport.addEventListener(VIEWPORT_RESUME, handleResume);
347
+ return () => {
348
+ viewport.removeEventListener(VIEWPORT_PAUSE, handlePause);
349
+ viewport.removeEventListener(VIEWPORT_RESUME, handleResume);
350
+ };
351
+ }
352
+ }, [context.viewport, duration, onPause, onResume, startTimer]);
353
+ React.useEffect(() => {
354
+ if (open && !context.isClosePausedRef.current) startTimer(duration);
355
+ }, [open, duration, context.isClosePausedRef, startTimer]);
356
+ React.useEffect(() => {
357
+ onToastAdd();
358
+ return () => onToastRemove();
359
+ }, [onToastAdd, onToastRemove]);
360
+ const announceTextContent = React.useMemo(() => {
361
+ return node ? getAnnounceTextContent(node) : null;
362
+ }, [node]);
411
363
  if (!context.viewport) return null;
412
- return /*#__PURE__*/ $eyrYI$createElement($eyrYI$Fragment, null, announceTextContent && /*#__PURE__*/ $eyrYI$createElement($054eb8030ebde76e$var$ToastAnnounce, {
413
- __scopeToast: __scopeToast // Toasts are always role=status to avoid stuttering issues with role=alert in SRs.
414
- ,
415
- role: "status",
416
- "aria-live": type === 'foreground' ? 'assertive' : 'polite',
417
- "aria-atomic": true
418
- }, announceTextContent), /*#__PURE__*/ $eyrYI$createElement($054eb8030ebde76e$var$ToastInteractiveProvider, {
419
- scope: __scopeToast,
420
- onClose: handleClose
421
- }, /*#__PURE__*/ $eyrYI$createPortal(/*#__PURE__*/ $eyrYI$createElement($054eb8030ebde76e$var$Collection.ItemSlot, {
422
- scope: __scopeToast
423
- }, /*#__PURE__*/ $eyrYI$createElement($eyrYI$Root, {
424
- asChild: true,
425
- onEscapeKeyDown: $eyrYI$composeEventHandlers(onEscapeKeyDown, ()=>{
426
- if (!context.isFocusedToastEscapeKeyDownRef.current) handleClose();
427
- context.isFocusedToastEscapeKeyDownRef.current = false;
428
- })
429
- }, /*#__PURE__*/ $eyrYI$createElement($eyrYI$Primitive.li, $eyrYI$babelruntimehelpersesmextends({
430
- // Ensure toasts are announced as status list or status when focused
431
- role: "status",
432
- "aria-live": "off",
433
- "aria-atomic": true,
434
- tabIndex: 0,
435
- "data-state": open ? 'open' : 'closed',
436
- "data-swipe-direction": context.swipeDirection
437
- }, toastProps, {
438
- ref: composedRefs,
439
- style: {
440
- userSelect: 'none',
441
- touchAction: 'none',
442
- ...props.style
443
- },
444
- onKeyDown: $eyrYI$composeEventHandlers(props.onKeyDown, (event)=>{
445
- if (event.key !== 'Escape') return;
446
- onEscapeKeyDown === null || onEscapeKeyDown === void 0 || onEscapeKeyDown(event.nativeEvent);
447
- if (!event.nativeEvent.defaultPrevented) {
448
- context.isFocusedToastEscapeKeyDownRef.current = true;
449
- handleClose();
450
- }
451
- }),
452
- onPointerDown: $eyrYI$composeEventHandlers(props.onPointerDown, (event)=>{
453
- if (event.button !== 0) return;
454
- pointerStartRef.current = {
455
- x: event.clientX,
456
- y: event.clientY
457
- };
458
- }),
459
- onPointerMove: $eyrYI$composeEventHandlers(props.onPointerMove, (event)=>{
460
- if (!pointerStartRef.current) return;
461
- const x = event.clientX - pointerStartRef.current.x;
462
- const y = event.clientY - pointerStartRef.current.y;
463
- const hasSwipeMoveStarted = Boolean(swipeDeltaRef.current);
464
- const isHorizontalSwipe = [
465
- 'left',
466
- 'right'
467
- ].includes(context.swipeDirection);
468
- const clamp = [
469
- 'left',
470
- 'up'
471
- ].includes(context.swipeDirection) ? Math.min : Math.max;
472
- const clampedX = isHorizontalSwipe ? clamp(0, x) : 0;
473
- const clampedY = !isHorizontalSwipe ? clamp(0, y) : 0;
474
- const moveStartBuffer = event.pointerType === 'touch' ? 10 : 2;
475
- const delta = {
476
- x: clampedX,
477
- y: clampedY
478
- };
479
- const eventDetail = {
480
- originalEvent: event,
481
- delta: delta
482
- };
483
- if (hasSwipeMoveStarted) {
484
- swipeDeltaRef.current = delta;
485
- $054eb8030ebde76e$var$handleAndDispatchCustomEvent($054eb8030ebde76e$var$TOAST_SWIPE_MOVE, onSwipeMove, eventDetail, {
486
- discrete: false
487
- });
488
- } else if ($054eb8030ebde76e$var$isDeltaInDirection(delta, context.swipeDirection, moveStartBuffer)) {
489
- swipeDeltaRef.current = delta;
490
- $054eb8030ebde76e$var$handleAndDispatchCustomEvent($054eb8030ebde76e$var$TOAST_SWIPE_START, onSwipeStart, eventDetail, {
491
- discrete: false
492
- });
493
- event.target.setPointerCapture(event.pointerId);
494
- } else if (Math.abs(x) > moveStartBuffer || Math.abs(y) > moveStartBuffer) // User is swiping in wrong direction so we disable swipe gesture
495
- // for the current pointer down interaction
496
- pointerStartRef.current = null;
497
- }),
498
- onPointerUp: $eyrYI$composeEventHandlers(props.onPointerUp, (event1)=>{
499
- const delta = swipeDeltaRef.current;
500
- const target = event1.target;
501
- if (target.hasPointerCapture(event1.pointerId)) target.releasePointerCapture(event1.pointerId);
502
- swipeDeltaRef.current = null;
503
- pointerStartRef.current = null;
504
- if (delta) {
505
- const toast = event1.currentTarget;
506
- const eventDetail = {
507
- originalEvent: event1,
508
- delta: delta
509
- };
510
- if ($054eb8030ebde76e$var$isDeltaInDirection(delta, context.swipeDirection, context.swipeThreshold)) $054eb8030ebde76e$var$handleAndDispatchCustomEvent($054eb8030ebde76e$var$TOAST_SWIPE_END, onSwipeEnd, eventDetail, {
511
- discrete: true
512
- });
513
- else $054eb8030ebde76e$var$handleAndDispatchCustomEvent($054eb8030ebde76e$var$TOAST_SWIPE_CANCEL, onSwipeCancel, eventDetail, {
514
- discrete: true
515
- });
516
- // Prevent click event from triggering on items within the toast when
517
- // pointer up is part of a swipe gesture
518
- toast.addEventListener('click', (event)=>event.preventDefault()
519
- , {
520
- once: true
521
- });
522
- }
523
- })
524
- })))), context.viewport)));
525
- });
526
- $054eb8030ebde76e$var$ToastImpl.propTypes = {
527
- type (props) {
528
- if (props.type && ![
529
- 'foreground',
530
- 'background'
531
- ].includes(props.type)) {
532
- const error = `Invalid prop \`type\` supplied to \`${$054eb8030ebde76e$var$TOAST_NAME}\`. Expected \`foreground | background\`.`;
533
- return new Error(error);
364
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
365
+ announceTextContent && /* @__PURE__ */ jsx(
366
+ ToastAnnounce,
367
+ {
368
+ __scopeToast,
369
+ role: "status",
370
+ "aria-live": type === "foreground" ? "assertive" : "polite",
371
+ "aria-atomic": true,
372
+ children: announceTextContent
534
373
  }
535
- return null;
536
- }
537
- };
538
- /* -----------------------------------------------------------------------------------------------*/ const $054eb8030ebde76e$var$ToastAnnounce = (props)=>{
539
- const { __scopeToast: __scopeToast , children: children , ...announceProps } = props;
540
- const context = $054eb8030ebde76e$var$useToastProviderContext($054eb8030ebde76e$var$TOAST_NAME, __scopeToast);
541
- const [renderAnnounceText, setRenderAnnounceText] = $eyrYI$useState(false);
542
- const [isAnnounced, setIsAnnounced] = $eyrYI$useState(false); // render text content in the next frame to ensure toast is announced in NVDA
543
- $054eb8030ebde76e$var$useNextFrame(()=>setRenderAnnounceText(true)
544
- ); // cleanup after announcing
545
- $eyrYI$useEffect(()=>{
546
- const timer = window.setTimeout(()=>setIsAnnounced(true)
547
- , 1000);
548
- return ()=>window.clearTimeout(timer)
549
- ;
550
- }, []);
551
- return isAnnounced ? null : /*#__PURE__*/ $eyrYI$createElement($eyrYI$Portal, {
552
- asChild: true
553
- }, /*#__PURE__*/ $eyrYI$createElement($eyrYI$VisuallyHidden, announceProps, renderAnnounceText && /*#__PURE__*/ $eyrYI$createElement($eyrYI$Fragment, null, context.label, " ", children)));
374
+ ),
375
+ /* @__PURE__ */ jsx(ToastInteractiveProvider, { scope: __scopeToast, onClose: handleClose, children: ReactDOM.createPortal(
376
+ /* @__PURE__ */ jsx(Collection.ItemSlot, { scope: __scopeToast, children: /* @__PURE__ */ jsx(
377
+ DismissableLayer.Root,
378
+ {
379
+ asChild: true,
380
+ onEscapeKeyDown: composeEventHandlers(onEscapeKeyDown, () => {
381
+ if (!context.isFocusedToastEscapeKeyDownRef.current) handleClose();
382
+ context.isFocusedToastEscapeKeyDownRef.current = false;
383
+ }),
384
+ children: /* @__PURE__ */ jsx(
385
+ Primitive.li,
386
+ {
387
+ role: "status",
388
+ "aria-live": "off",
389
+ "aria-atomic": true,
390
+ tabIndex: 0,
391
+ "data-state": open ? "open" : "closed",
392
+ "data-swipe-direction": context.swipeDirection,
393
+ ...toastProps,
394
+ ref: composedRefs,
395
+ style: { userSelect: "none", touchAction: "none", ...props.style },
396
+ onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {
397
+ if (event.key !== "Escape") return;
398
+ onEscapeKeyDown?.(event.nativeEvent);
399
+ if (!event.nativeEvent.defaultPrevented) {
400
+ context.isFocusedToastEscapeKeyDownRef.current = true;
401
+ handleClose();
402
+ }
403
+ }),
404
+ onPointerDown: composeEventHandlers(props.onPointerDown, (event) => {
405
+ if (event.button !== 0) return;
406
+ pointerStartRef.current = { x: event.clientX, y: event.clientY };
407
+ }),
408
+ onPointerMove: composeEventHandlers(props.onPointerMove, (event) => {
409
+ if (!pointerStartRef.current) return;
410
+ const x = event.clientX - pointerStartRef.current.x;
411
+ const y = event.clientY - pointerStartRef.current.y;
412
+ const hasSwipeMoveStarted = Boolean(swipeDeltaRef.current);
413
+ const isHorizontalSwipe = ["left", "right"].includes(context.swipeDirection);
414
+ const clamp = ["left", "up"].includes(context.swipeDirection) ? Math.min : Math.max;
415
+ const clampedX = isHorizontalSwipe ? clamp(0, x) : 0;
416
+ const clampedY = !isHorizontalSwipe ? clamp(0, y) : 0;
417
+ const moveStartBuffer = event.pointerType === "touch" ? 10 : 2;
418
+ const delta = { x: clampedX, y: clampedY };
419
+ const eventDetail = { originalEvent: event, delta };
420
+ if (hasSwipeMoveStarted) {
421
+ swipeDeltaRef.current = delta;
422
+ handleAndDispatchCustomEvent(TOAST_SWIPE_MOVE, onSwipeMove, eventDetail, {
423
+ discrete: false
424
+ });
425
+ } else if (isDeltaInDirection(delta, context.swipeDirection, moveStartBuffer)) {
426
+ swipeDeltaRef.current = delta;
427
+ handleAndDispatchCustomEvent(TOAST_SWIPE_START, onSwipeStart, eventDetail, {
428
+ discrete: false
429
+ });
430
+ event.target.setPointerCapture(event.pointerId);
431
+ } else if (Math.abs(x) > moveStartBuffer || Math.abs(y) > moveStartBuffer) {
432
+ pointerStartRef.current = null;
433
+ }
434
+ }),
435
+ onPointerUp: composeEventHandlers(props.onPointerUp, (event) => {
436
+ const delta = swipeDeltaRef.current;
437
+ const target = event.target;
438
+ if (target.hasPointerCapture(event.pointerId)) {
439
+ target.releasePointerCapture(event.pointerId);
440
+ }
441
+ swipeDeltaRef.current = null;
442
+ pointerStartRef.current = null;
443
+ if (delta) {
444
+ const toast = event.currentTarget;
445
+ const eventDetail = { originalEvent: event, delta };
446
+ if (isDeltaInDirection(delta, context.swipeDirection, context.swipeThreshold)) {
447
+ handleAndDispatchCustomEvent(TOAST_SWIPE_END, onSwipeEnd, eventDetail, {
448
+ discrete: true
449
+ });
450
+ } else {
451
+ handleAndDispatchCustomEvent(
452
+ TOAST_SWIPE_CANCEL,
453
+ onSwipeCancel,
454
+ eventDetail,
455
+ {
456
+ discrete: true
457
+ }
458
+ );
459
+ }
460
+ toast.addEventListener("click", (event2) => event2.preventDefault(), {
461
+ once: true
462
+ });
463
+ }
464
+ })
465
+ }
466
+ )
467
+ }
468
+ ) }),
469
+ context.viewport
470
+ ) })
471
+ ] });
472
+ }
473
+ );
474
+ var ToastAnnounce = (props) => {
475
+ const { __scopeToast, children, ...announceProps } = props;
476
+ const context = useToastProviderContext(TOAST_NAME, __scopeToast);
477
+ const [renderAnnounceText, setRenderAnnounceText] = React.useState(false);
478
+ const [isAnnounced, setIsAnnounced] = React.useState(false);
479
+ useNextFrame(() => setRenderAnnounceText(true));
480
+ React.useEffect(() => {
481
+ const timer = window.setTimeout(() => setIsAnnounced(true), 1e3);
482
+ return () => window.clearTimeout(timer);
483
+ }, []);
484
+ return isAnnounced ? null : /* @__PURE__ */ jsx(Portal, { asChild: true, children: /* @__PURE__ */ jsx(VisuallyHidden, { ...announceProps, children: renderAnnounceText && /* @__PURE__ */ jsxs(Fragment, { children: [
485
+ context.label,
486
+ " ",
487
+ children
488
+ ] }) }) });
554
489
  };
555
- /* -------------------------------------------------------------------------------------------------
556
- * ToastTitle
557
- * -----------------------------------------------------------------------------------------------*/ const $054eb8030ebde76e$var$TITLE_NAME = 'ToastTitle';
558
- const $054eb8030ebde76e$export$16d42d7c29b95a4 = /*#__PURE__*/ $eyrYI$forwardRef((props, forwardedRef)=>{
559
- const { __scopeToast: __scopeToast , ...titleProps } = props;
560
- return /*#__PURE__*/ $eyrYI$createElement($eyrYI$Primitive.div, $eyrYI$babelruntimehelpersesmextends({}, titleProps, {
561
- ref: forwardedRef
562
- }));
563
- });
564
- /*#__PURE__*/ Object.assign($054eb8030ebde76e$export$16d42d7c29b95a4, {
565
- displayName: $054eb8030ebde76e$var$TITLE_NAME
566
- });
567
- /* -------------------------------------------------------------------------------------------------
568
- * ToastDescription
569
- * -----------------------------------------------------------------------------------------------*/ const $054eb8030ebde76e$var$DESCRIPTION_NAME = 'ToastDescription';
570
- const $054eb8030ebde76e$export$ecddd96c53621d9a = /*#__PURE__*/ $eyrYI$forwardRef((props, forwardedRef)=>{
571
- const { __scopeToast: __scopeToast , ...descriptionProps } = props;
572
- return /*#__PURE__*/ $eyrYI$createElement($eyrYI$Primitive.div, $eyrYI$babelruntimehelpersesmextends({}, descriptionProps, {
573
- ref: forwardedRef
574
- }));
575
- });
576
- /*#__PURE__*/ Object.assign($054eb8030ebde76e$export$ecddd96c53621d9a, {
577
- displayName: $054eb8030ebde76e$var$DESCRIPTION_NAME
578
- });
579
- /* -------------------------------------------------------------------------------------------------
580
- * ToastAction
581
- * -----------------------------------------------------------------------------------------------*/ const $054eb8030ebde76e$var$ACTION_NAME = 'ToastAction';
582
- const $054eb8030ebde76e$export$3019feecfda683d2 = /*#__PURE__*/ $eyrYI$forwardRef((props, forwardedRef)=>{
583
- const { altText: altText , ...actionProps } = props;
584
- if (!altText) return null;
585
- return /*#__PURE__*/ $eyrYI$createElement($054eb8030ebde76e$var$ToastAnnounceExclude, {
586
- altText: altText,
587
- asChild: true
588
- }, /*#__PURE__*/ $eyrYI$createElement($054eb8030ebde76e$export$811e70f61c205839, $eyrYI$babelruntimehelpersesmextends({}, actionProps, {
589
- ref: forwardedRef
590
- })));
591
- });
592
- $054eb8030ebde76e$export$3019feecfda683d2.propTypes = {
593
- altText (props) {
594
- if (!props.altText) return new Error(`Missing prop \`altText\` expected on \`${$054eb8030ebde76e$var$ACTION_NAME}\``);
595
- return null;
490
+ var TITLE_NAME = "ToastTitle";
491
+ var ToastTitle = React.forwardRef(
492
+ (props, forwardedRef) => {
493
+ const { __scopeToast, ...titleProps } = props;
494
+ return /* @__PURE__ */ jsx(Primitive.div, { ...titleProps, ref: forwardedRef });
495
+ }
496
+ );
497
+ ToastTitle.displayName = TITLE_NAME;
498
+ var DESCRIPTION_NAME = "ToastDescription";
499
+ var ToastDescription = React.forwardRef(
500
+ (props, forwardedRef) => {
501
+ const { __scopeToast, ...descriptionProps } = props;
502
+ return /* @__PURE__ */ jsx(Primitive.div, { ...descriptionProps, ref: forwardedRef });
503
+ }
504
+ );
505
+ ToastDescription.displayName = DESCRIPTION_NAME;
506
+ var ACTION_NAME = "ToastAction";
507
+ var ToastAction = React.forwardRef(
508
+ (props, forwardedRef) => {
509
+ const { altText, ...actionProps } = props;
510
+ if (!altText.trim()) {
511
+ console.error(
512
+ `Invalid prop \`altText\` supplied to \`${ACTION_NAME}\`. Expected non-empty \`string\`.`
513
+ );
514
+ return null;
596
515
  }
597
- };
598
- /*#__PURE__*/ Object.assign($054eb8030ebde76e$export$3019feecfda683d2, {
599
- displayName: $054eb8030ebde76e$var$ACTION_NAME
600
- });
601
- /* -------------------------------------------------------------------------------------------------
602
- * ToastClose
603
- * -----------------------------------------------------------------------------------------------*/ const $054eb8030ebde76e$var$CLOSE_NAME = 'ToastClose';
604
- const $054eb8030ebde76e$export$811e70f61c205839 = /*#__PURE__*/ $eyrYI$forwardRef((props, forwardedRef)=>{
605
- const { __scopeToast: __scopeToast , ...closeProps } = props;
606
- const interactiveContext = $054eb8030ebde76e$var$useToastInteractiveContext($054eb8030ebde76e$var$CLOSE_NAME, __scopeToast);
607
- return /*#__PURE__*/ $eyrYI$createElement($054eb8030ebde76e$var$ToastAnnounceExclude, {
608
- asChild: true
609
- }, /*#__PURE__*/ $eyrYI$createElement($eyrYI$Primitive.button, $eyrYI$babelruntimehelpersesmextends({
610
- type: "button"
611
- }, closeProps, {
516
+ return /* @__PURE__ */ jsx(ToastAnnounceExclude, { altText, asChild: true, children: /* @__PURE__ */ jsx(ToastClose, { ...actionProps, ref: forwardedRef }) });
517
+ }
518
+ );
519
+ ToastAction.displayName = ACTION_NAME;
520
+ var CLOSE_NAME = "ToastClose";
521
+ var ToastClose = React.forwardRef(
522
+ (props, forwardedRef) => {
523
+ const { __scopeToast, ...closeProps } = props;
524
+ const interactiveContext = useToastInteractiveContext(CLOSE_NAME, __scopeToast);
525
+ return /* @__PURE__ */ jsx(ToastAnnounceExclude, { asChild: true, children: /* @__PURE__ */ jsx(
526
+ Primitive.button,
527
+ {
528
+ type: "button",
529
+ ...closeProps,
612
530
  ref: forwardedRef,
613
- onClick: $eyrYI$composeEventHandlers(props.onClick, interactiveContext.onClose)
614
- })));
615
- });
616
- /*#__PURE__*/ Object.assign($054eb8030ebde76e$export$811e70f61c205839, {
617
- displayName: $054eb8030ebde76e$var$CLOSE_NAME
618
- });
619
- /* ---------------------------------------------------------------------------------------------- */ const $054eb8030ebde76e$var$ToastAnnounceExclude = /*#__PURE__*/ $eyrYI$forwardRef((props, forwardedRef)=>{
620
- const { __scopeToast: __scopeToast , altText: altText , ...announceExcludeProps } = props;
621
- return /*#__PURE__*/ $eyrYI$createElement($eyrYI$Primitive.div, $eyrYI$babelruntimehelpersesmextends({
622
- "data-radix-toast-announce-exclude": "",
623
- "data-radix-toast-announce-alt": altText || undefined
624
- }, announceExcludeProps, {
625
- ref: forwardedRef
626
- }));
531
+ onClick: composeEventHandlers(props.onClick, interactiveContext.onClose)
532
+ }
533
+ ) });
534
+ }
535
+ );
536
+ ToastClose.displayName = CLOSE_NAME;
537
+ var ToastAnnounceExclude = React.forwardRef((props, forwardedRef) => {
538
+ const { __scopeToast, altText, ...announceExcludeProps } = props;
539
+ return /* @__PURE__ */ jsx(
540
+ Primitive.div,
541
+ {
542
+ "data-radix-toast-announce-exclude": "",
543
+ "data-radix-toast-announce-alt": altText || void 0,
544
+ ...announceExcludeProps,
545
+ ref: forwardedRef
546
+ }
547
+ );
627
548
  });
628
- function $054eb8030ebde76e$var$getAnnounceTextContent(container) {
629
- const textContent = [];
630
- const childNodes = Array.from(container.childNodes);
631
- childNodes.forEach((node)=>{
632
- if (node.nodeType === node.TEXT_NODE && node.textContent) textContent.push(node.textContent);
633
- if ($054eb8030ebde76e$var$isHTMLElement(node)) {
634
- const isHidden = node.ariaHidden || node.hidden || node.style.display === 'none';
635
- const isExcluded = node.dataset.radixToastAnnounceExclude === '';
636
- if (!isHidden) {
637
- if (isExcluded) {
638
- const altText = node.dataset.radixToastAnnounceAlt;
639
- if (altText) textContent.push(altText);
640
- } else textContent.push(...$054eb8030ebde76e$var$getAnnounceTextContent(node));
641
- }
549
+ function getAnnounceTextContent(container) {
550
+ const textContent = [];
551
+ const childNodes = Array.from(container.childNodes);
552
+ childNodes.forEach((node) => {
553
+ if (node.nodeType === node.TEXT_NODE && node.textContent) textContent.push(node.textContent);
554
+ if (isHTMLElement(node)) {
555
+ const isHidden = node.ariaHidden || node.hidden || node.style.display === "none";
556
+ const isExcluded = node.dataset.radixToastAnnounceExclude === "";
557
+ if (!isHidden) {
558
+ if (isExcluded) {
559
+ const altText = node.dataset.radixToastAnnounceAlt;
560
+ if (altText) textContent.push(altText);
561
+ } else {
562
+ textContent.push(...getAnnounceTextContent(node));
642
563
  }
643
- }); // We return a collection of text rather than a single concatenated string.
644
- // This allows SR VO to naturally pause break between nodes while announcing.
645
- return textContent;
564
+ }
565
+ }
566
+ });
567
+ return textContent;
646
568
  }
647
- /* ---------------------------------------------------------------------------------------------- */ function $054eb8030ebde76e$var$handleAndDispatchCustomEvent(name, handler, detail, { discrete: discrete }) {
648
- const currentTarget = detail.originalEvent.currentTarget;
649
- const event = new CustomEvent(name, {
650
- bubbles: true,
651
- cancelable: true,
652
- detail: detail
653
- });
654
- if (handler) currentTarget.addEventListener(name, handler, {
655
- once: true
656
- });
657
- if (discrete) $eyrYI$dispatchDiscreteCustomEvent(currentTarget, event);
658
- else currentTarget.dispatchEvent(event);
569
+ function handleAndDispatchCustomEvent(name, handler, detail, { discrete }) {
570
+ const currentTarget = detail.originalEvent.currentTarget;
571
+ const event = new CustomEvent(name, { bubbles: true, cancelable: true, detail });
572
+ if (handler) currentTarget.addEventListener(name, handler, { once: true });
573
+ if (discrete) {
574
+ dispatchDiscreteCustomEvent(currentTarget, event);
575
+ } else {
576
+ currentTarget.dispatchEvent(event);
577
+ }
659
578
  }
660
- const $054eb8030ebde76e$var$isDeltaInDirection = (delta, direction, threshold = 0)=>{
661
- const deltaX = Math.abs(delta.x);
662
- const deltaY = Math.abs(delta.y);
663
- const isDeltaX = deltaX > deltaY;
664
- if (direction === 'left' || direction === 'right') return isDeltaX && deltaX > threshold;
665
- else return !isDeltaX && deltaY > threshold;
579
+ var isDeltaInDirection = (delta, direction, threshold = 0) => {
580
+ const deltaX = Math.abs(delta.x);
581
+ const deltaY = Math.abs(delta.y);
582
+ const isDeltaX = deltaX > deltaY;
583
+ if (direction === "left" || direction === "right") {
584
+ return isDeltaX && deltaX > threshold;
585
+ } else {
586
+ return !isDeltaX && deltaY > threshold;
587
+ }
666
588
  };
667
- function $054eb8030ebde76e$var$useNextFrame(callback = ()=>{}) {
668
- const fn = $eyrYI$useCallbackRef(callback);
669
- $eyrYI$useLayoutEffect(()=>{
670
- let raf1 = 0;
671
- let raf2 = 0;
672
- raf1 = window.requestAnimationFrame(()=>raf2 = window.requestAnimationFrame(fn)
673
- );
674
- return ()=>{
675
- window.cancelAnimationFrame(raf1);
676
- window.cancelAnimationFrame(raf2);
677
- };
678
- }, [
679
- fn
680
- ]);
589
+ function useNextFrame(callback = () => {
590
+ }) {
591
+ const fn = useCallbackRef(callback);
592
+ useLayoutEffect(() => {
593
+ let raf1 = 0;
594
+ let raf2 = 0;
595
+ raf1 = window.requestAnimationFrame(() => raf2 = window.requestAnimationFrame(fn));
596
+ return () => {
597
+ window.cancelAnimationFrame(raf1);
598
+ window.cancelAnimationFrame(raf2);
599
+ };
600
+ }, [fn]);
681
601
  }
682
- function $054eb8030ebde76e$var$isHTMLElement(node) {
683
- return node.nodeType === node.ELEMENT_NODE;
602
+ function isHTMLElement(node) {
603
+ return node.nodeType === node.ELEMENT_NODE;
684
604
  }
685
- /**
686
- * Returns a list of potential tabbable candidates.
687
- *
688
- * NOTE: This is only a close approximation. For example it doesn't take into account cases like when
689
- * elements are not visible. This cannot be worked out easily by just reading a property, but rather
690
- * necessitate runtime knowledge (computed styles, etc). We deal with these cases separately.
691
- *
692
- * See: https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker
693
- * Credit: https://github.com/discord/focus-layers/blob/master/src/util/wrapFocus.tsx#L1
694
- */ function $054eb8030ebde76e$var$getTabbableCandidates(container) {
695
- const nodes = [];
696
- const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {
697
- acceptNode: (node)=>{
698
- const isHiddenInput = node.tagName === 'INPUT' && node.type === 'hidden';
699
- if (node.disabled || node.hidden || isHiddenInput) return NodeFilter.FILTER_SKIP; // `.tabIndex` is not the same as the `tabindex` attribute. It works on the
700
- // runtime's understanding of tabbability, so this automatically accounts
701
- // for any kind of element that could be tabbed to.
702
- return node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;
703
- }
704
- });
705
- while(walker.nextNode())nodes.push(walker.currentNode); // we do not take into account the order of nodes with positive `tabIndex` as it
706
- // hinders accessibility to have tab order different from visual order.
707
- return nodes;
605
+ function getTabbableCandidates(container) {
606
+ const nodes = [];
607
+ const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {
608
+ acceptNode: (node) => {
609
+ const isHiddenInput = node.tagName === "INPUT" && node.type === "hidden";
610
+ if (node.disabled || node.hidden || isHiddenInput) return NodeFilter.FILTER_SKIP;
611
+ return node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;
612
+ }
613
+ });
614
+ while (walker.nextNode()) nodes.push(walker.currentNode);
615
+ return nodes;
708
616
  }
709
- function $054eb8030ebde76e$var$focusFirst(candidates) {
710
- const previouslyFocusedElement = document.activeElement;
711
- return candidates.some((candidate)=>{
712
- // if focus is already where we want to go, we don't want to keep going through the candidates
713
- if (candidate === previouslyFocusedElement) return true;
714
- candidate.focus();
715
- return document.activeElement !== previouslyFocusedElement;
716
- });
617
+ function focusFirst(candidates) {
618
+ const previouslyFocusedElement = document.activeElement;
619
+ return candidates.some((candidate) => {
620
+ if (candidate === previouslyFocusedElement) return true;
621
+ candidate.focus();
622
+ return document.activeElement !== previouslyFocusedElement;
623
+ });
717
624
  }
718
- const $054eb8030ebde76e$export$2881499e37b75b9a = $054eb8030ebde76e$export$f5d03d415824e0e;
719
- const $054eb8030ebde76e$export$d5c6c08dc2d3ca7 = $054eb8030ebde76e$export$6192c2425ecfd989;
720
- const $054eb8030ebde76e$export$be92b6f5f03c0fe9 = $054eb8030ebde76e$export$8d8dc7d5f743331b;
721
- const $054eb8030ebde76e$export$f99233281efd08a0 = $054eb8030ebde76e$export$16d42d7c29b95a4;
722
- const $054eb8030ebde76e$export$393edc798c47379d = $054eb8030ebde76e$export$ecddd96c53621d9a;
723
- const $054eb8030ebde76e$export$e19cd5f9376f8cee = $054eb8030ebde76e$export$3019feecfda683d2;
724
- const $054eb8030ebde76e$export$f39c2d165cd861fe = $054eb8030ebde76e$export$811e70f61c205839;
725
-
726
-
727
-
728
-
729
- export {$054eb8030ebde76e$export$8a359da18fbc9073 as createToastScope, $054eb8030ebde76e$export$f5d03d415824e0e as ToastProvider, $054eb8030ebde76e$export$6192c2425ecfd989 as ToastViewport, $054eb8030ebde76e$export$8d8dc7d5f743331b as Toast, $054eb8030ebde76e$export$16d42d7c29b95a4 as ToastTitle, $054eb8030ebde76e$export$ecddd96c53621d9a as ToastDescription, $054eb8030ebde76e$export$3019feecfda683d2 as ToastAction, $054eb8030ebde76e$export$811e70f61c205839 as ToastClose, $054eb8030ebde76e$export$2881499e37b75b9a as Provider, $054eb8030ebde76e$export$d5c6c08dc2d3ca7 as Viewport, $054eb8030ebde76e$export$be92b6f5f03c0fe9 as Root, $054eb8030ebde76e$export$f99233281efd08a0 as Title, $054eb8030ebde76e$export$393edc798c47379d as Description, $054eb8030ebde76e$export$e19cd5f9376f8cee as Action, $054eb8030ebde76e$export$f39c2d165cd861fe as Close};
625
+ var Provider = ToastProvider;
626
+ var Viewport = ToastViewport;
627
+ var Root2 = Toast;
628
+ var Title = ToastTitle;
629
+ var Description = ToastDescription;
630
+ var Action = ToastAction;
631
+ var Close = ToastClose;
632
+ export {
633
+ Action,
634
+ Close,
635
+ Description,
636
+ Provider,
637
+ Root2 as Root,
638
+ Title,
639
+ Toast,
640
+ ToastAction,
641
+ ToastClose,
642
+ ToastDescription,
643
+ ToastProvider,
644
+ ToastTitle,
645
+ ToastViewport,
646
+ Viewport,
647
+ createToastScope
648
+ };
730
649
  //# sourceMappingURL=index.mjs.map