react-panel-layout 0.6.0 → 0.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 (258) hide show
  1. package/dist/{FloatingPanelFrame-SgYLc6Ud.js → FloatingPanelFrame-3eU9AwPo.js} +2 -2
  2. package/dist/{FloatingPanelFrame-SgYLc6Ud.js.map → FloatingPanelFrame-3eU9AwPo.js.map} +1 -1
  3. package/dist/FloatingWindow-Bw2djgpz.js +1542 -0
  4. package/dist/FloatingWindow-Bw2djgpz.js.map +1 -0
  5. package/dist/FloatingWindow-Cvyokf0m.cjs +2 -0
  6. package/dist/FloatingWindow-Cvyokf0m.cjs.map +1 -0
  7. package/dist/GridLayout-B4aCqSyd.js +947 -0
  8. package/dist/{GridLayout-BltqeCPK.js.map → GridLayout-B4aCqSyd.js.map} +1 -1
  9. package/dist/GridLayout-DNOClFzz.cjs +2 -0
  10. package/dist/{GridLayout-B4VRsC0r.cjs.map → GridLayout-DNOClFzz.cjs.map} +1 -1
  11. package/dist/{HorizontalDivider-WF1k_qND.js → HorizontalDivider-DdxzfV0l.js} +3 -3
  12. package/dist/{HorizontalDivider-WF1k_qND.js.map → HorizontalDivider-DdxzfV0l.js.map} +1 -1
  13. package/dist/{HorizontalDivider-B5Z-KZLk.cjs → HorizontalDivider-_pgV4Mcv.cjs} +2 -2
  14. package/dist/{HorizontalDivider-B5Z-KZLk.cjs.map → HorizontalDivider-_pgV4Mcv.cjs.map} +1 -1
  15. package/dist/PanelSystem-B8Igvnb2.cjs +3 -0
  16. package/dist/PanelSystem-B8Igvnb2.cjs.map +1 -0
  17. package/dist/{PanelSystem-Dr1TBhxM.js → PanelSystem-DDUSFjXD.js} +209 -248
  18. package/dist/PanelSystem-DDUSFjXD.js.map +1 -0
  19. package/dist/ResizeHandle-CBcAS918.cjs +2 -0
  20. package/dist/{ResizeHandle-CScipO5l.cjs.map → ResizeHandle-CBcAS918.cjs.map} +1 -1
  21. package/dist/{ResizeHandle-CdA_JYfN.js → ResizeHandle-CXjc1meV.js} +28 -29
  22. package/dist/{ResizeHandle-CdA_JYfN.js.map → ResizeHandle-CXjc1meV.js.map} +1 -1
  23. package/dist/SwipePivotTabBar-DWrCuwEI.js +411 -0
  24. package/dist/SwipePivotTabBar-DWrCuwEI.js.map +1 -0
  25. package/dist/SwipePivotTabBar-fjjXkpj7.cjs +2 -0
  26. package/dist/SwipePivotTabBar-fjjXkpj7.cjs.map +1 -0
  27. package/dist/components/gesture/SwipeSafeZone.d.ts +40 -0
  28. package/dist/components/window/Drawer.d.ts +4 -1
  29. package/dist/components/window/DrawerLayers.d.ts +1 -1
  30. package/dist/components/window/DrawerRevealContext.d.ts +61 -0
  31. package/dist/components/window/drawerRevealAnimationUtils.d.ts +212 -0
  32. package/dist/components/window/drawerStyles.d.ts +74 -0
  33. package/dist/components/window/drawerSwipeConfig.d.ts +29 -0
  34. package/dist/components/window/useDrawerSwipeTransform.d.ts +29 -0
  35. package/dist/components/window/useDrawerTransform.d.ts +68 -0
  36. package/dist/components/window/useRevealDrawerTransform.d.ts +56 -0
  37. package/dist/config.cjs +1 -1
  38. package/dist/config.cjs.map +1 -1
  39. package/dist/config.js +9 -8
  40. package/dist/config.js.map +1 -1
  41. package/dist/constants/styles.d.ts +17 -0
  42. package/dist/dialog/index.d.ts +69 -0
  43. package/dist/floating.js +1 -1
  44. package/dist/grid.cjs +1 -1
  45. package/dist/grid.js +2 -2
  46. package/dist/hooks/gesture/testing/createGestureSimulator.d.ts +7 -0
  47. package/dist/hooks/gesture/types.d.ts +48 -5
  48. package/dist/hooks/gesture/utils.d.ts +19 -0
  49. package/dist/hooks/useAnimationFrame.d.ts +2 -0
  50. package/dist/hooks/useOperationContinuity.d.ts +64 -0
  51. package/dist/hooks/useResizeObserver.d.ts +33 -1
  52. package/dist/hooks/useSharedElementTransition.d.ts +112 -0
  53. package/dist/hooks/useSwipeContentTransform.d.ts +9 -2
  54. package/dist/index.cjs +1 -1
  55. package/dist/index.js +7 -7
  56. package/dist/modules/dialog/AlertDialog.d.ts +9 -0
  57. package/dist/modules/dialog/DialogContainer.d.ts +37 -0
  58. package/dist/modules/dialog/Modal.d.ts +26 -0
  59. package/dist/modules/dialog/SwipeDialogContainer.d.ts +16 -0
  60. package/dist/modules/dialog/dialogAnimationUtils.d.ts +113 -0
  61. package/dist/modules/dialog/types.d.ts +183 -0
  62. package/dist/modules/dialog/useDialog.d.ts +39 -0
  63. package/dist/modules/dialog/useDialogContainer.d.ts +47 -0
  64. package/dist/modules/dialog/useDialogSwipeInput.d.ts +70 -0
  65. package/dist/modules/dialog/useDialogTransform.d.ts +82 -0
  66. package/dist/modules/drawer/drawerStateMachine.d.ts +168 -0
  67. package/dist/modules/drawer/revealDrawerConstants.d.ts +33 -0
  68. package/dist/modules/drawer/revealDrawerStateMachine.d.ts +146 -0
  69. package/dist/modules/drawer/strategies/index.d.ts +8 -0
  70. package/dist/modules/drawer/strategies/overlayStrategy.d.ts +12 -0
  71. package/dist/modules/drawer/strategies/revealStrategy.d.ts +12 -0
  72. package/dist/modules/drawer/strategies/types.d.ts +116 -0
  73. package/dist/modules/drawer/types.d.ts +74 -0
  74. package/dist/modules/drawer/useDrawerSwipeInput.d.ts +24 -0
  75. package/dist/modules/pivot/SwipePivotTabBar.d.ts +3 -0
  76. package/dist/modules/stack/SwipeStackContent.d.ts +6 -3
  77. package/dist/modules/stack/SwipeStackOutlet.d.ts +4 -4
  78. package/dist/modules/stack/computeSwipeStackTransform.d.ts +1 -1
  79. package/dist/panels.cjs +1 -1
  80. package/dist/panels.js +1 -1
  81. package/dist/pivot.cjs +1 -1
  82. package/dist/pivot.js +1 -1
  83. package/dist/resizer.cjs +1 -1
  84. package/dist/resizer.js +2 -2
  85. package/dist/stack.cjs +1 -1
  86. package/dist/stack.cjs.map +1 -1
  87. package/dist/stack.js +480 -780
  88. package/dist/stack.js.map +1 -1
  89. package/dist/sticky-header/calculateStickyMetrics.d.ts +28 -0
  90. package/dist/sticky-header.cjs +1 -1
  91. package/dist/sticky-header.cjs.map +1 -1
  92. package/dist/sticky-header.js +59 -51
  93. package/dist/sticky-header.js.map +1 -1
  94. package/dist/{styles-DPPuJ0sf.js → styles-NkjuMOVS.js} +13 -13
  95. package/dist/{styles-DPPuJ0sf.js.map → styles-NkjuMOVS.js.map} +1 -1
  96. package/dist/styles-qf6ptVLD.cjs.map +1 -1
  97. package/dist/types.d.ts +30 -0
  98. package/dist/useAnimationFrame-BZ6D2lMq.cjs +2 -0
  99. package/dist/useAnimationFrame-BZ6D2lMq.cjs.map +1 -0
  100. package/dist/useAnimationFrame-Bg4e-H8O.js +394 -0
  101. package/dist/useAnimationFrame-Bg4e-H8O.js.map +1 -0
  102. package/dist/useDocumentPointerEvents-DXxw3qWj.js +54 -0
  103. package/dist/useDocumentPointerEvents-DXxw3qWj.js.map +1 -0
  104. package/dist/useDocumentPointerEvents-DxDSOtip.cjs +2 -0
  105. package/dist/useDocumentPointerEvents-DxDSOtip.cjs.map +1 -0
  106. package/dist/window/index.d.ts +2 -0
  107. package/dist/window.cjs +1 -1
  108. package/dist/window.cjs.map +1 -1
  109. package/dist/window.js +114 -103
  110. package/dist/window.js.map +1 -1
  111. package/package.json +6 -1
  112. package/src/components/gesture/SwipeSafeZone.tsx +70 -0
  113. package/src/components/grid/GridLayout.tsx +110 -38
  114. package/src/components/window/Drawer.tsx +353 -162
  115. package/src/components/window/DrawerLayers.tsx +54 -11
  116. package/src/components/window/DrawerRevealContext.spec.ts +20 -0
  117. package/src/components/window/DrawerRevealContext.tsx +99 -0
  118. package/src/components/window/drawerRevealAnimationUtils.spec.ts +375 -0
  119. package/src/components/window/drawerRevealAnimationUtils.ts +415 -0
  120. package/src/components/window/drawerStyles.spec.ts +302 -0
  121. package/src/components/window/drawerStyles.ts +252 -0
  122. package/src/components/window/drawerSwipeConfig.spec.ts +131 -0
  123. package/src/components/window/drawerSwipeConfig.ts +112 -0
  124. package/src/components/window/useDrawerSwipeTransform.ts +67 -0
  125. package/src/components/window/useDrawerTransform.ts +505 -0
  126. package/src/components/window/useRevealDrawerTransform.spec.ts +1936 -0
  127. package/src/components/window/useRevealDrawerTransform.ts +105 -0
  128. package/src/constants/styles.ts +19 -0
  129. package/src/demo/components/FullscreenDemoPage.tsx +47 -0
  130. package/src/demo/fullscreenRoutes.tsx +32 -0
  131. package/src/demo/index.tsx +5 -0
  132. package/src/demo/pages/Dialog/alerts/index.tsx +22 -0
  133. package/src/demo/pages/Dialog/card/index.tsx +22 -0
  134. package/src/demo/pages/Dialog/components/AlertDialogDemo.tsx +124 -0
  135. package/src/demo/pages/Dialog/components/CardExpandDemo.module.css +243 -0
  136. package/src/demo/pages/Dialog/components/CardExpandDemo.tsx +219 -0
  137. package/src/demo/pages/Dialog/components/CustomAlertDialogDemo.tsx +219 -0
  138. package/src/demo/pages/Dialog/components/DialogDemos.module.css +77 -0
  139. package/src/demo/pages/Dialog/components/ModalBasics.tsx +45 -0
  140. package/src/demo/pages/Dialog/components/SwipeDialogDemo.module.css +77 -0
  141. package/src/demo/pages/Dialog/components/SwipeDialogDemo.tsx +181 -0
  142. package/src/demo/pages/Dialog/custom-alert/index.tsx +22 -0
  143. package/src/demo/pages/Dialog/modal/index.tsx +17 -0
  144. package/src/demo/pages/Dialog/swipe/index.tsx +22 -0
  145. package/src/demo/pages/Drawer/components/DrawerBasics.module.css +6 -1
  146. package/src/demo/pages/Drawer/components/DrawerBasics.tsx +14 -4
  147. package/src/demo/pages/Drawer/components/DrawerReveal.module.css +157 -0
  148. package/src/demo/pages/Drawer/components/DrawerReveal.tsx +128 -0
  149. package/src/demo/pages/Drawer/components/DrawerSwipe.module.css +316 -0
  150. package/src/demo/pages/Drawer/components/DrawerSwipe.tsx +178 -0
  151. package/src/demo/pages/Drawer/reveal/index.tsx +17 -0
  152. package/src/demo/pages/Drawer/reveal-fullscreen/index.tsx +135 -0
  153. package/src/demo/pages/Drawer/reveal-fullscreen/styles.module.css +233 -0
  154. package/src/demo/pages/Drawer/swipe/index.tsx +17 -0
  155. package/src/demo/pages/Pivot/components/SwipeTabsPivot.tsx +54 -23
  156. package/src/demo/pages/Pivot/swipe-debug/index.tsx +1 -1
  157. package/src/demo/pages/Stack/components/StackBasics.spec.tsx +156 -0
  158. package/src/demo/pages/Stack/components/StackBasics.tsx +179 -95
  159. package/src/demo/pages/Stack/components/StackTablet.spec.tsx +110 -0
  160. package/src/demo/pages/Stack/components/StackTablet.tsx +42 -21
  161. package/src/demo/routes.tsx +24 -1
  162. package/src/dialog/index.ts +85 -0
  163. package/src/hooks/gesture/testing/createGestureSimulator.spec.ts +68 -64
  164. package/src/hooks/gesture/testing/createGestureSimulator.ts +113 -37
  165. package/src/hooks/gesture/types.ts +83 -6
  166. package/src/hooks/gesture/useEdgeSwipeInput.spec.ts +22 -14
  167. package/src/hooks/gesture/useNativeGestureGuard.spec.ts +99 -31
  168. package/src/hooks/gesture/useNativeGestureGuard.ts +3 -1
  169. package/src/hooks/gesture/utils.ts +102 -0
  170. package/src/hooks/useAnimatedVisibility.spec.ts +44 -24
  171. package/src/hooks/useAnimatedVisibility.ts +28 -2
  172. package/src/hooks/useAnimationFrame.ts +8 -0
  173. package/src/hooks/useOperationContinuity.spec.ts +394 -0
  174. package/src/hooks/useOperationContinuity.ts +135 -0
  175. package/src/hooks/useResizeObserver.spec.tsx +277 -0
  176. package/src/hooks/useResizeObserver.tsx +108 -39
  177. package/src/hooks/useScrollContainer.ts +4 -10
  178. package/src/hooks/useSharedElementTransition.ts +354 -0
  179. package/src/hooks/useSwipeContentTransform.spec.ts +18 -18
  180. package/src/hooks/useSwipeContentTransform.ts +166 -28
  181. package/src/modules/dialog/AlertDialog.spec.tsx +387 -0
  182. package/src/modules/dialog/AlertDialog.tsx +221 -0
  183. package/src/modules/dialog/DialogContainer.spec.tsx +228 -0
  184. package/src/modules/dialog/DialogContainer.tsx +188 -0
  185. package/src/modules/dialog/Modal.spec.tsx +220 -0
  186. package/src/modules/dialog/Modal.tsx +182 -0
  187. package/src/modules/dialog/SwipeDialogContainer.tsx +208 -0
  188. package/src/modules/dialog/dialogAnimationUtils.spec.ts +252 -0
  189. package/src/modules/dialog/dialogAnimationUtils.ts +297 -0
  190. package/src/modules/dialog/types.ts +186 -0
  191. package/src/modules/dialog/useDialog.spec.tsx +447 -0
  192. package/src/modules/dialog/useDialog.ts +214 -0
  193. package/src/modules/dialog/useDialogContainer.spec.ts +339 -0
  194. package/src/modules/dialog/useDialogContainer.ts +150 -0
  195. package/src/modules/dialog/useDialogSwipeInput.spec.ts +178 -0
  196. package/src/modules/dialog/useDialogSwipeInput.ts +350 -0
  197. package/src/modules/dialog/useDialogTransform.spec.ts +403 -0
  198. package/src/modules/dialog/useDialogTransform.ts +407 -0
  199. package/src/modules/drawer/drawerStateMachine.ts +500 -0
  200. package/src/modules/drawer/revealDrawerConstants.ts +38 -0
  201. package/src/modules/drawer/revealDrawerStateMachine.spec.ts +558 -0
  202. package/src/modules/drawer/revealDrawerStateMachine.ts +197 -0
  203. package/src/modules/drawer/strategies/index.ts +9 -0
  204. package/src/modules/drawer/strategies/overlayStrategy.ts +133 -0
  205. package/src/modules/drawer/strategies/revealStrategy.ts +111 -0
  206. package/src/modules/drawer/strategies/types.ts +160 -0
  207. package/src/modules/drawer/types.ts +102 -0
  208. package/src/modules/drawer/useDrawerSwipeInput.spec.ts +566 -0
  209. package/src/modules/drawer/useDrawerSwipeInput.ts +402 -0
  210. package/src/modules/panels/rendering/ContentRegistry.spec.tsx +21 -14
  211. package/src/modules/pivot/SwipePivotContent.position.spec.tsx +12 -8
  212. package/src/modules/pivot/SwipePivotContent.spec.tsx +66 -25
  213. package/src/modules/pivot/SwipePivotContent.tsx +2 -2
  214. package/src/modules/pivot/SwipePivotTabBar.spec.tsx +85 -68
  215. package/src/modules/pivot/SwipePivotTabBar.tsx +75 -15
  216. package/src/modules/pivot/scaleInputState.spec.ts +11 -2
  217. package/src/modules/pivot/usePivot.spec.ts +17 -3
  218. package/src/modules/pivot/usePivotSwipeInput.spec.ts +182 -123
  219. package/src/modules/stack/SwipeStackContent.spec.tsx +387 -100
  220. package/src/modules/stack/SwipeStackContent.tsx +43 -33
  221. package/src/modules/stack/SwipeStackOutlet.spec.tsx +14 -16
  222. package/src/modules/stack/SwipeStackOutlet.tsx +6 -6
  223. package/src/modules/stack/computeSwipeStackTransform.spec.ts +5 -5
  224. package/src/modules/stack/computeSwipeStackTransform.ts +3 -3
  225. package/src/modules/stack/swipeTransitionContinuity.spec.tsx +1133 -0
  226. package/src/modules/stack/useStackAnimationState.spec.ts +3 -1
  227. package/src/modules/stack/useStackAnimationState.ts +18 -13
  228. package/src/modules/stack/useStackNavigation.spec.ts +198 -3
  229. package/src/modules/stack/useStackNavigation.tsx +113 -56
  230. package/src/modules/stack/useStackSwipeInput.spec.ts +65 -32
  231. package/src/modules/stack/useStackSwipeInput.ts +1 -1
  232. package/src/sticky-header/StickyArea.tsx +29 -57
  233. package/src/sticky-header/calculateStickyMetrics.spec.ts +105 -0
  234. package/src/sticky-header/calculateStickyMetrics.ts +50 -0
  235. package/src/types.ts +33 -0
  236. package/src/window/index.ts +2 -0
  237. package/dist/FloatingWindow-BpdOpg_L.js +0 -400
  238. package/dist/FloatingWindow-BpdOpg_L.js.map +0 -1
  239. package/dist/FloatingWindow-TCDNY5gE.cjs +0 -2
  240. package/dist/FloatingWindow-TCDNY5gE.cjs.map +0 -1
  241. package/dist/GridLayout-B4VRsC0r.cjs +0 -2
  242. package/dist/GridLayout-BltqeCPK.js +0 -927
  243. package/dist/PanelSystem-Bs8bQwQF.cjs +0 -3
  244. package/dist/PanelSystem-Bs8bQwQF.cjs.map +0 -1
  245. package/dist/PanelSystem-Dr1TBhxM.js.map +0 -1
  246. package/dist/ResizeHandle-CScipO5l.cjs +0 -2
  247. package/dist/SwipePivotTabBar-BGO9X94m.js +0 -407
  248. package/dist/SwipePivotTabBar-BGO9X94m.js.map +0 -1
  249. package/dist/SwipePivotTabBar-BrQismcZ.cjs +0 -2
  250. package/dist/SwipePivotTabBar-BrQismcZ.cjs.map +0 -1
  251. package/dist/useDocumentPointerEvents-CKdhGXd0.js +0 -46
  252. package/dist/useDocumentPointerEvents-CKdhGXd0.js.map +0 -1
  253. package/dist/useDocumentPointerEvents-ChqrKXDk.cjs +0 -2
  254. package/dist/useDocumentPointerEvents-ChqrKXDk.cjs.map +0 -1
  255. package/dist/useEffectEvent-Dp7HLCf0.js +0 -13
  256. package/dist/useEffectEvent-Dp7HLCf0.js.map +0 -1
  257. package/dist/useEffectEvent-huSsGUnl.cjs +0 -2
  258. package/dist/useEffectEvent-huSsGUnl.cjs.map +0 -1
package/dist/stack.js CHANGED
@@ -1,234 +1,250 @@
1
- import { jsx as O, Fragment as Z, jsxs as J } from "react/jsx-runtime";
2
- import * as n from "react";
3
- import { S as Q, B as ee, E as te, I as ne } from "./styles-DPPuJ0sf.js";
4
- import { u as re } from "./useIsomorphicLayoutEffect-DhmEnmZ_.js";
5
- import { u as se } from "./useContentCache-CO3LYNmz.js";
6
- import { a as oe } from "./useDocumentPointerEvents-CKdhGXd0.js";
7
- import { u as U } from "./useEffectEvent-Dp7HLCf0.js";
8
- function ce(r) {
9
- const { wasActive: e, isActive: t, transitionMode: s } = r;
10
- return s !== "css" || e === t ? null : t ? "push" : "pop";
1
+ import { jsx as O, Fragment as Y, jsxs as j } from "react/jsx-runtime";
2
+ import * as r from "react";
3
+ import { S as J, s as q, t as Q, u as Z } from "./styles-NkjuMOVS.js";
4
+ import { u as z } from "./useIsomorphicLayoutEffect-DhmEnmZ_.js";
5
+ import { u as ee } from "./useContentCache-CO3LYNmz.js";
6
+ import { u as te, a as ne, m as re, I as se, i as ie, b as oe, e as ae } from "./useAnimationFrame-Bg4e-H8O.js";
7
+ function ce(n) {
8
+ const { wasActive: e, isActive: t, transitionMode: i } = n;
9
+ return i !== "css" || e === t ? null : t ? "push" : "pop";
11
10
  }
12
- function ie(r) {
11
+ function ue(n) {
13
12
  const {
14
13
  displayMode: e,
15
14
  depth: t,
16
- navigationDepth: s,
17
- isActive: a,
18
- isAnimatingOut: c,
15
+ navigationDepth: i,
16
+ isActive: c,
17
+ isAnimatingOut: o,
19
18
  isRevealing: u,
20
- revealDepth: i
21
- } = r;
22
- return e === "overlay" ? a || c || u && t === i ? "visible" : "hidden" : t <= s || c ? "visible" : "hidden";
19
+ revealDepth: s
20
+ } = n;
21
+ return e === "overlay" ? c || o || u && t === s ? "visible" : "hidden" : t <= i || o ? "visible" : "hidden";
23
22
  }
24
- function ae(r) {
25
- const { depth: e, activeDepth: t, displayMode: s, isRevealing: a, revealDepth: c } = r, u = e === t, i = e < t;
26
- if (a && u && c !== null)
23
+ function le(n) {
24
+ const { depth: e, activeDepth: t, displayMode: i, isRevealing: c, revealDepth: o } = n, u = e === t, s = e < t;
25
+ if (c && u && o !== null)
27
26
  return `translateX(${0.3 * 100}%)`;
28
27
  if (u)
29
28
  return "translateX(0)";
30
- if (i)
31
- switch (s) {
29
+ if (s)
30
+ switch (i) {
32
31
  case "overlay":
33
32
  return "translateX(0)";
34
33
  case "slide":
35
34
  return "translateX(-30%)";
36
35
  case "stack": {
37
- const f = (t - e) * -5, p = 1 - (t - e) * 0.05;
38
- return `translateX(${f}%) scale(${p})`;
36
+ const l = (t - e) * -5, f = 1 - (t - e) * 0.05;
37
+ return `translateX(${l}%) scale(${f})`;
39
38
  }
40
39
  }
41
40
  return "translateX(100%)";
42
41
  }
43
- function ue(r, e, t) {
44
- return e === void 0 || e <= 0 || !t ? r : `translateX(${e * 100}%)`;
42
+ function fe(n, e, t) {
43
+ return e === void 0 || e <= 0 || !t ? n : `translateX(${e * 100}%)`;
45
44
  }
46
- function le(r) {
47
- if (r === "css")
48
- return `transform ${Q} ${ee}`;
45
+ function pe(n) {
46
+ if (n === "css")
47
+ return `transform ${J} ${q}`;
49
48
  }
50
- function fe(r) {
49
+ function de(n) {
51
50
  const {
52
51
  depth: e,
53
52
  isActive: t,
54
- wasActive: s,
55
- currentAnimationType: a,
56
- displayMode: c,
53
+ wasActive: i,
54
+ currentAnimationType: c,
55
+ displayMode: o,
57
56
  transitionMode: u,
58
- navigationState: i,
59
- swipeProgress: f
60
- } = r, o = ce({
61
- wasActive: s,
57
+ navigationState: s,
58
+ swipeProgress: l
59
+ } = n, m = ce({
60
+ wasActive: i,
62
61
  isActive: t,
63
62
  transitionMode: u
64
- }) ?? a, d = o === "pop", m = ie({
65
- displayMode: c,
63
+ }) ?? c, g = m === "pop", a = ue({
64
+ displayMode: o,
66
65
  depth: e,
67
- navigationDepth: i.depth,
66
+ navigationDepth: s.depth,
68
67
  isActive: t,
69
- isAnimatingOut: d,
70
- isRevealing: i.isRevealing,
71
- revealDepth: i.revealDepth
72
- }), g = ae({
68
+ isAnimatingOut: g,
69
+ isRevealing: s.isRevealing,
70
+ revealDepth: s.revealDepth
71
+ }), v = le({
73
72
  depth: e,
74
- activeDepth: i.depth,
75
- displayMode: c,
76
- isRevealing: i.isRevealing,
77
- revealDepth: i.revealDepth
78
- }), T = ue(g, f, t), v = (() => {
73
+ activeDepth: s.depth,
74
+ displayMode: o,
75
+ isRevealing: s.isRevealing,
76
+ revealDepth: s.revealDepth
77
+ }), y = fe(v, l, t), A = (() => {
79
78
  if (u === "css") {
80
- if (o === "push")
81
- return te;
82
- if (o === "pop")
83
- return ne;
79
+ if (m === "push")
80
+ return Q;
81
+ if (m === "pop")
82
+ return Z;
84
83
  }
85
- })(), h = le(u);
84
+ })(), d = pe(u);
86
85
  return {
87
- nextAnimationType: o,
88
- visibility: m,
89
- transform: T,
90
- animation: v,
91
- transition: h,
86
+ nextAnimationType: m,
87
+ visibility: a,
88
+ transform: y,
89
+ animation: A,
90
+ transition: d,
92
91
  zIndex: e,
93
92
  pointerEvents: t ? "auto" : "none"
94
93
  };
95
94
  }
96
- const de = {
95
+ const me = {
97
96
  position: "absolute",
98
97
  inset: 0,
99
98
  width: "100%",
100
99
  height: "100%"
101
- }, pe = n.memo(
102
- ({ id: r, depth: e, isActive: t, displayMode: s, transitionMode: a, navigationState: c, swipeProgress: u, children: i }) => {
103
- const f = n.useRef(null), p = n.useRef(t), [o, d] = n.useState(null), m = fe({
100
+ }, he = r.memo(
101
+ ({ id: n, depth: e, isActive: t, displayMode: i, transitionMode: c, navigationState: o, swipeProgress: u, children: s }) => {
102
+ const l = r.useRef(null), f = r.useRef(t), [m, g] = r.useState(null), a = de({
104
103
  depth: e,
105
104
  isActive: t,
106
- wasActive: p.current,
107
- currentAnimationType: o,
108
- displayMode: s,
109
- transitionMode: a,
110
- navigationState: c,
105
+ wasActive: f.current,
106
+ currentAnimationType: m,
107
+ displayMode: i,
108
+ transitionMode: c,
109
+ navigationState: o,
111
110
  swipeProgress: u
112
111
  });
113
- re(() => {
114
- const h = p.current;
115
- p.current = t, h !== t && d(m.nextAnimationType);
116
- }, [t, m.nextAnimationType]);
117
- const g = n.useCallback((h) => {
118
- h.target === h.currentTarget && d(null);
119
- }, []), T = n.useMemo(() => {
120
- const h = {
121
- ...de,
122
- transform: m.transform,
123
- pointerEvents: m.pointerEvents,
124
- zIndex: m.zIndex,
125
- visibility: m.visibility
112
+ z(() => {
113
+ const d = f.current;
114
+ f.current = t, d !== t && g(a.nextAnimationType);
115
+ }, [t, a.nextAnimationType]);
116
+ const v = r.useCallback((d) => {
117
+ d.target === d.currentTarget && g(null);
118
+ }, []), y = r.useMemo(() => {
119
+ const d = {
120
+ ...me,
121
+ transform: a.transform,
122
+ pointerEvents: a.pointerEvents,
123
+ zIndex: a.zIndex,
124
+ visibility: a.visibility
126
125
  };
127
- return m.animation !== void 0 && (h.animation = m.animation), m.transition !== void 0 && (h.transition = m.transition), h;
126
+ return a.animation !== void 0 && (d.animation = a.animation), a.transition !== void 0 && (d.transition = a.transition), d;
128
127
  }, [
129
- m.transform,
130
- m.pointerEvents,
131
- m.zIndex,
132
- m.visibility,
133
- m.animation,
134
- m.transition
135
- ]), v = /* @__PURE__ */ O(
128
+ a.transform,
129
+ a.pointerEvents,
130
+ a.zIndex,
131
+ a.visibility,
132
+ a.animation,
133
+ a.transition
134
+ ]), A = /* @__PURE__ */ O(
136
135
  "div",
137
136
  {
138
- ref: f,
139
- "data-stack-content": r,
137
+ ref: l,
138
+ "data-stack-content": n,
140
139
  "data-depth": e,
141
140
  "data-active": t ? "true" : "false",
142
- style: T,
143
- onAnimationEnd: g,
144
- children: i
141
+ style: y,
142
+ onAnimationEnd: v,
143
+ children: s
145
144
  }
146
145
  );
147
- return a === "none" ? /* @__PURE__ */ O(n.Activity, { mode: t ? "visible" : "hidden", children: v }) : v;
146
+ return c === "none" ? /* @__PURE__ */ O(r.Activity, { mode: t ? "visible" : "hidden", children: A }) : A;
147
+ }
148
+ );
149
+ function ve(n, e) {
150
+ switch (e.type) {
151
+ case "push":
152
+ return [...n, e.id];
153
+ case "go": {
154
+ if (e.direction >= 0)
155
+ return n;
156
+ const i = n.length - 1 + e.direction;
157
+ return i < 0 ? n : n.slice(0, i + 1);
158
+ }
159
+ case "move":
160
+ return e.targetDepth < 0 || e.targetDepth >= n.length ? n : n.slice(0, e.targetDepth + 1);
161
+ case "replace":
162
+ return n.length === 0 ? [e.id] : [...n.slice(0, -1), e.id];
148
163
  }
149
- ), V = n.createContext(null), me = n.memo(() => {
150
- const r = n.useContext(V);
151
- if (!r)
164
+ }
165
+ const G = r.createContext(null), ge = r.memo(() => {
166
+ const n = r.useContext(G);
167
+ if (!n)
152
168
  throw new Error("StackOutlet must be used within useStackNavigation");
153
- const [, e] = n.useReducer((i) => i + 1, 0);
154
- n.useEffect(() => r.subscribe(e), [r]);
155
- const { panels: t, navigationState: s, displayMode: a, transitionMode: c } = r.getState(), u = n.useMemo(() => s.stack.map((i, f) => {
156
- const p = t.find((o) => o.id === i);
157
- return p ? { panel: p, depth: f } : null;
158
- }).filter((i) => i !== null), [s.stack, t]);
159
- return /* @__PURE__ */ O(Z, { children: u.map(({ panel: i, depth: f }) => /* @__PURE__ */ O(
160
- pe,
169
+ const [, e] = r.useReducer((s) => s + 1, 0);
170
+ r.useEffect(() => n.subscribe(e), [n]);
171
+ const { panels: t, navigationState: i, displayMode: c, transitionMode: o } = n.getState(), u = r.useMemo(() => i.stack.map((s, l) => {
172
+ const f = t.find((m) => m.id === s);
173
+ return f ? { panel: f, depth: l } : null;
174
+ }).filter((s) => s !== null), [i.stack, t]);
175
+ return /* @__PURE__ */ O(Y, { children: u.map(({ panel: s, depth: l }) => /* @__PURE__ */ O(
176
+ he,
161
177
  {
162
- id: i.id,
163
- depth: f,
164
- isActive: f === s.depth,
165
- displayMode: a,
166
- transitionMode: c,
167
- navigationState: s,
168
- children: i.cache ? r.getCachedContent(i.id) : i.content
178
+ id: s.id,
179
+ depth: l,
180
+ isActive: l === i.depth,
181
+ displayMode: c,
182
+ transitionMode: o,
183
+ navigationState: i,
184
+ children: s.cache ? n.getCachedContent(s.id) : s.content
169
185
  },
170
- i.id
186
+ s.id
171
187
  )) });
172
188
  });
173
- function Ze(r) {
189
+ function Ge(n) {
174
190
  const {
175
191
  panels: e,
176
192
  initialPanelId: t,
177
- displayMode: s,
178
- transitionMode: a = "css",
179
- onPanelChange: c
180
- } = r, [u, i] = n.useState(() => {
181
- const l = t ?? e[0]?.id;
182
- if (!l)
183
- throw new Error("useStackNavigation: No panels provided");
184
- return [l];
185
- }), [f, p] = n.useState({ isRevealing: !1, revealDepth: null }), o = u.length - 1, d = n.useMemo(() => ({
186
- stack: u,
187
- depth: o,
188
- isRevealing: f.isRevealing,
189
- revealDepth: f.revealDepth
190
- }), [u, o, f.isRevealing, f.revealDepth]), m = u[o], g = o > 0 ? u[o - 1] : null, T = n.useCallback((l) => {
191
- e.find((A) => A.id === l) && (i((A) => [...A, l]), c?.(l, o + 1));
192
- }, [e, o, c]), v = n.useCallback((l) => {
193
- if (l >= 0)
194
- return;
195
- const y = o + l;
196
- if (y < 0)
197
- return;
198
- i((F) => F.slice(0, y + 1));
199
- const A = u[y];
200
- c?.(A, y);
201
- }, [o, u, c]), h = n.useCallback((l) => {
202
- if (l < 0 || l >= u.length)
203
- return;
204
- i((A) => A.slice(0, l + 1));
205
- const y = u[l];
206
- c?.(y, l);
207
- }, [u, c]), w = n.useCallback((l) => {
208
- e.find((A) => A.id === l) && (i((A) => [...A.slice(0, -1), l]), c?.(l, o));
209
- }, [e, o, c]), E = n.useCallback((l) => l >= 0 ? !1 : o + l >= 0, [o]), k = n.useCallback((l) => {
210
- const y = l ?? o - 1;
211
- y < 0 || y >= o || p({ isRevealing: !0, revealDepth: y });
212
- }, [o]), x = n.useCallback(() => {
213
- o !== 0 && p({ isRevealing: !0, revealDepth: 0 });
214
- }, [o]), P = n.useCallback(() => {
215
- p({ isRevealing: !1, revealDepth: null });
216
- }, []), D = n.useCallback((l) => {
217
- const y = u.indexOf(l), A = y === o;
193
+ displayMode: i,
194
+ transitionMode: c = "css",
195
+ onPanelChange: o
196
+ } = n, u = t ?? e[0]?.id;
197
+ if (!u)
198
+ throw new Error("useStackNavigation: No panels provided");
199
+ const [s, l] = r.useReducer(
200
+ ve,
201
+ [u]
202
+ ), f = r.useRef(s);
203
+ f.current = s;
204
+ const m = r.useRef(s);
205
+ r.useEffect(() => {
206
+ const p = m.current;
207
+ if (m.current = s, o && s !== p) {
208
+ const k = s.length - 1, b = s[k];
209
+ b !== void 0 && o(b, k);
210
+ }
211
+ }, [s, o]);
212
+ const [g, a] = r.useState({ isRevealing: !1, revealDepth: null }), v = s.length - 1, y = r.useMemo(() => ({
213
+ stack: s,
214
+ depth: v,
215
+ isRevealing: g.isRevealing,
216
+ revealDepth: g.revealDepth
217
+ }), [s, v, g.isRevealing, g.revealDepth]), A = s[v], d = v > 0 ? s[v - 1] : null, h = r.useCallback((p) => {
218
+ e.find((b) => b.id === p) && l({ type: "push", id: p });
219
+ }, [e]), R = r.useCallback((p) => {
220
+ l({ type: "go", direction: p });
221
+ }, []), C = r.useCallback((p) => {
222
+ l({ type: "move", targetDepth: p });
223
+ }, []), w = r.useCallback((p) => {
224
+ e.find((b) => b.id === p) && l({ type: "replace", id: p });
225
+ }, [e]), M = r.useCallback((p) => p >= 0 ? !1 : f.current.length - 1 + p >= 0, []), _ = r.useCallback((p) => {
226
+ const k = f.current.length - 1, b = p ?? k - 1;
227
+ b < 0 || b >= k || a({ isRevealing: !0, revealDepth: b });
228
+ }, []), $ = r.useCallback(() => {
229
+ f.current.length - 1 !== 0 && a({ isRevealing: !0, revealDepth: 0 });
230
+ }, []), x = r.useCallback(() => {
231
+ a({ isRevealing: !1, revealDepth: null });
232
+ }, []), N = r.useCallback((p) => {
233
+ const k = f.current, b = k.indexOf(p), X = k.length - 1, F = b === X;
218
234
  return {
219
- "data-stack-panel": l,
220
- "data-depth": y,
221
- "data-active": A ? "true" : "false",
222
- "aria-hidden": !A
235
+ "data-stack-panel": p,
236
+ "data-depth": b,
237
+ "data-active": F ? "true" : "false",
238
+ "aria-hidden": !F
223
239
  };
224
- }, [u, o]), M = n.useCallback(() => {
225
- const l = o > 0, y = g ? e.find((F) => F.id === g) : null, A = y?.title ? `Back to ${y.title}` : "Go back";
240
+ }, []), T = r.useCallback(() => {
241
+ const p = f.current, k = p.length - 1, b = k > 0, X = k > 0 ? p[k - 1] : null, F = X ? e.find((H) => H.id === X) : null, W = F?.title ? `Back to ${F.title}` : "Go back";
226
242
  return {
227
- onClick: () => v(-1),
228
- disabled: !l,
229
- "aria-label": A
243
+ onClick: () => R(-1),
244
+ disabled: !b,
245
+ "aria-label": W
230
246
  };
231
- }, [o, g, e, v]), I = n.useMemo(
247
+ }, [e, R]), S = r.useMemo(
232
248
  () => ({
233
249
  position: "relative",
234
250
  width: "100%",
@@ -236,708 +252,392 @@ function Ze(r) {
236
252
  overflow: "hidden"
237
253
  }),
238
254
  []
239
- ), C = n.useRef({
255
+ ), D = r.useRef({
240
256
  panels: e,
241
- navigationState: d,
242
- displayMode: s,
243
- transitionMode: a
257
+ navigationState: y,
258
+ displayMode: i,
259
+ transitionMode: c
244
260
  });
245
- C.current = {
261
+ D.current = {
246
262
  panels: e,
247
- navigationState: d,
248
- displayMode: s,
249
- transitionMode: a
263
+ navigationState: y,
264
+ displayMode: i,
265
+ transitionMode: c
250
266
  };
251
- const L = n.useRef(/* @__PURE__ */ new Set());
252
- n.useEffect(() => {
253
- L.current.forEach((l) => l());
254
- }, [d, s, a]);
255
- const _ = n.useCallback(
256
- (l) => C.current.panels.find((A) => A.id === l)?.content ?? null,
267
+ const E = r.useRef(/* @__PURE__ */ new Set());
268
+ r.useEffect(() => {
269
+ E.current.forEach((p) => p());
270
+ }, [y, i, c]);
271
+ const U = r.useCallback(
272
+ (p) => D.current.panels.find((b) => b.id === p)?.content ?? null,
257
273
  []
258
- ), N = n.useMemo(() => e.map((l) => l.id), [e]), { getCachedContent: b } = se({
259
- resolveContent: _,
260
- validIds: N
261
- }), R = n.useMemo(
274
+ ), I = r.useMemo(() => e.map((p) => p.id), [e]), { getCachedContent: P } = ee({
275
+ resolveContent: U,
276
+ validIds: I
277
+ }), L = r.useMemo(
262
278
  () => ({
263
- getState: () => C.current,
264
- subscribe: (l) => (L.current.add(l), () => L.current.delete(l)),
265
- getCachedContent: b
279
+ getState: () => D.current,
280
+ subscribe: (p) => (E.current.add(p), () => E.current.delete(p)),
281
+ getCachedContent: P
266
282
  }),
267
- [b]
268
- ), S = n.useMemo(() => {
269
- const l = () => /* @__PURE__ */ O(V.Provider, { value: R, children: /* @__PURE__ */ O("div", { style: I, "data-stack-container": !0, children: /* @__PURE__ */ O(me, {}) }) });
270
- return l.displayName = "StackOutlet", l;
271
- }, [R, I]);
283
+ [P]
284
+ ), K = r.useMemo(() => {
285
+ const p = () => /* @__PURE__ */ O(G.Provider, { value: L, children: /* @__PURE__ */ O("div", { style: S, "data-stack-container": !0, children: /* @__PURE__ */ O(ge, {}) }) });
286
+ return p.displayName = "StackOutlet", p;
287
+ }, [L, S]);
272
288
  return {
273
- state: d,
274
- push: T,
275
- go: v,
276
- move: h,
289
+ state: y,
290
+ push: h,
291
+ go: R,
292
+ move: C,
277
293
  replace: w,
278
- revealParent: k,
279
- revealRoot: x,
280
- dismissReveal: P,
281
- getPanelProps: D,
282
- getBackButtonProps: M,
283
- canGo: E,
284
- currentPanelId: m,
285
- previousPanelId: g,
286
- Outlet: S
294
+ revealParent: _,
295
+ revealRoot: $,
296
+ dismissReveal: x,
297
+ getPanelProps: N,
298
+ getBackButtonProps: T,
299
+ canGo: M,
300
+ currentPanelId: A,
301
+ previousPanelId: d,
302
+ Outlet: K
287
303
  };
288
304
  }
289
- const $ = {
290
- isDown: !1,
291
- start: null,
292
- current: null,
293
- pointerId: null,
294
- wasCanceled: !1
295
- }, G = (r, e) => ({
296
- x: r,
297
- y: e,
298
- timestamp: performance.now()
299
- });
300
- function he(r) {
301
- const { enabled: e, primaryOnly: t = !0 } = r, [s, a] = n.useState($), c = n.useCallback(() => {
302
- a($);
303
- }, []), u = U((d) => {
304
- if (!e || t && !d.isPrimary || d.pointerType === "mouse" && d.button !== 0)
305
- return;
306
- const m = G(d.clientX, d.clientY);
307
- a({
308
- isDown: !0,
309
- start: m,
310
- current: m,
311
- pointerId: d.pointerId,
312
- wasCanceled: !1
313
- });
314
- }), i = U((d) => {
315
- if (s.pointerId !== d.pointerId)
316
- return;
317
- const m = G(d.clientX, d.clientY);
318
- a((g) => ({
319
- ...g,
320
- current: m
321
- }));
322
- }), f = U(() => {
323
- a($);
324
- }), p = U(() => {
325
- a({ ...$, wasCanceled: !0 });
326
- }), o = s.isDown ? e : !1;
327
- return oe(o, {
328
- onMove: i,
329
- onUp: f,
330
- onCancel: p
331
- }), n.useEffect(() => {
332
- !e && s.isDown && c();
333
- }, [e, s.isDown, c]), {
334
- state: s,
335
- onPointerDown: u,
336
- reset: c
337
- };
338
- }
339
- const ve = 10, ge = (r, e) => {
340
- const t = Math.abs(r), s = Math.abs(e);
341
- return t === 0 && s === 0 ? null : t > s * 1.5 ? "horizontal" : s > t * 1.5 ? "vertical" : null;
342
- };
343
- function Ee(r) {
344
- const { tracking: e, lockThreshold: t = ve } = r, [s, a] = n.useState(null), c = n.useCallback(() => {
345
- a(null);
346
- }, []);
347
- return n.useEffect(() => {
348
- if (!e.isDown) {
349
- s !== null && c();
350
- return;
351
- }
352
- if (s !== null || !e.start || !e.current)
353
- return;
354
- const u = e.current.x - e.start.x, i = e.current.y - e.start.y;
355
- if (Math.max(Math.abs(u), Math.abs(i)) < t)
356
- return;
357
- const p = ge(u, i);
358
- p !== null && a(p);
359
- }, [e.isDown, e.start, e.current, s, t, c]), {
360
- lockedAxis: s,
361
- isLocked: s !== null,
362
- reset: c
363
- };
364
- }
365
- const H = (r, e, t) => {
366
- const s = t - e;
367
- return s <= 0 ? 0 : r / s;
368
- }, W = (r) => r > 0 ? 1 : r < 0 ? -1 : 0, be = (...r) => {
369
- const e = {}, t = [];
370
- for (const a of r)
371
- Object.assign(e, a.style), a.onPointerDown && t.push(a.onPointerDown);
372
- return {
373
- onPointerDown: (a) => {
374
- for (const c of t)
375
- c?.(a);
376
- },
377
- style: e
378
- };
379
- }, Y = {
380
- distanceThreshold: 100,
381
- velocityThreshold: 0.5,
382
- lockThreshold: 10
383
- }, K = 20, B = {
384
- phase: "idle",
385
- displacement: { x: 0, y: 0 },
386
- velocity: { x: 0, y: 0 },
387
- direction: 0
388
- }, ye = 150, z = (r, e, t, s, a) => {
389
- const c = t === "horizontal" ? r.x : r.y, u = t === "horizontal" ? e.x : e.y, i = Math.abs(c), f = Math.abs(u);
390
- if (i >= s.distanceThreshold || f >= s.velocityThreshold) {
391
- const o = W(c);
392
- a?.({
393
- phase: "ended",
394
- displacement: r,
395
- velocity: e,
396
- direction: o
397
- });
398
- }
399
- };
400
- function Te(r) {
401
- const {
402
- containerRef: e,
403
- axis: t,
404
- enabled: s = !0,
405
- thresholds: a,
406
- onSwipeEnd: c,
407
- enableWheel: u = !0,
408
- pointerStartFilter: i
409
- } = r, f = {
410
- ...Y,
411
- ...a
412
- }, p = U(c), { state: o, onPointerDown: d } = he({
413
- enabled: s
414
- }), m = n.useCallback(
415
- (b) => {
416
- if (s) {
417
- if (i) {
418
- const R = e.current;
419
- if (!R || !i(b, R))
420
- return;
421
- }
422
- d(b);
423
- }
424
- },
425
- [s, i, e, d]
426
- ), { lockedAxis: g, isLocked: T } = Ee({
427
- tracking: o,
428
- lockThreshold: f.lockThreshold
429
- }), v = n.useRef(null), h = n.useRef(!1);
430
- n.useEffect(() => {
431
- h.current = T ? g === t : !1;
432
- }, [T, g, t]), n.useEffect(() => {
433
- const b = e.current;
434
- if (!b || !s)
435
- return;
436
- const R = (y) => {
437
- y.preventDefault();
438
- }, S = (y) => {
439
- h.current && y.preventDefault(), document.addEventListener("touchmove", R, { passive: !1 });
440
- }, l = () => {
441
- document.removeEventListener("touchmove", R);
442
- };
443
- return document.addEventListener("touchend", l), document.addEventListener("touchcancel", l), b.addEventListener("touchstart", S, { passive: !1 }), () => {
444
- b.removeEventListener("touchstart", S), document.removeEventListener("touchend", l), document.removeEventListener("touchcancel", l);
445
- };
446
- }, [e, s]);
447
- const [w, E] = n.useState(B), k = n.useRef({ x: 0, y: 0 }), x = n.useRef(null), P = n.useRef(!1), D = n.useRef(null), M = n.useCallback(() => {
448
- k.current = { x: 0, y: 0 }, P.current = !1, D.current = null, E(B);
449
- }, []), I = n.useCallback(() => {
450
- const b = { ...k.current };
451
- z(b, { x: 0, y: 0 }, t, f, p), M();
452
- }, [t, f, p, M]), C = U((b) => {
453
- if (!s || !u || o.isDown)
454
- return;
455
- const { deltaX: R, deltaY: S } = b;
456
- if (!P.current) {
457
- const A = Math.abs(R), F = Math.abs(S);
458
- (A >= f.lockThreshold || F >= f.lockThreshold) && (P.current = !0, D.current = A > F ? "horizontal" : "vertical");
459
- }
460
- if (P.current && D.current !== t)
461
- return;
462
- k.current.x -= R, k.current.y -= S;
463
- const l = k.current, y = t === "horizontal" ? l.x : l.y;
464
- E({
465
- phase: "swiping",
466
- displacement: { ...l },
467
- velocity: { x: 0, y: 0 },
468
- direction: W(y)
469
- }), x.current !== null && clearTimeout(x.current), x.current = setTimeout(I, ye);
470
- });
471
- n.useEffect(() => {
472
- const b = e.current;
473
- if (!b || !s || !u)
474
- return;
475
- const R = (S) => {
476
- S.preventDefault(), C(S);
477
- };
478
- return b.addEventListener("wheel", R, { passive: !1 }), () => {
479
- b.removeEventListener("wheel", R), x.current !== null && clearTimeout(x.current);
480
- };
481
- }, [e, s, u, C]), n.useEffect(() => () => {
482
- x.current !== null && clearTimeout(x.current);
483
- }, []);
484
- const L = n.useMemo(() => {
485
- if (!o.isDown || !o.start || !o.current)
486
- return B;
487
- const b = o.current.x - o.start.x, R = o.current.y - o.start.y, S = { x: b, y: R }, l = {
488
- x: H(b, o.start.timestamp, o.current.timestamp),
489
- y: H(R, o.start.timestamp, o.current.timestamp)
490
- };
491
- return !T || g !== t ? { phase: "tracking", displacement: S, velocity: l, direction: 0 } : {
492
- phase: "swiping",
493
- displacement: S,
494
- velocity: l,
495
- direction: W(t === "horizontal" ? b : R)
496
- };
497
- }, [o.isDown, o.start, o.current, T, g, t]);
498
- n.useEffect(() => {
499
- L.phase !== "idle" && (v.current = L);
500
- }, [L]), n.useEffect(() => {
501
- if (o.isDown)
502
- return;
503
- const b = v.current;
504
- !b || b.phase !== "swiping" && b.phase !== "tracking" || (v.current = null, !o.wasCanceled && z(b.displacement, b.velocity, t, f, p));
505
- }, [o.isDown, o.wasCanceled, t, f, p]);
506
- const _ = L.phase !== "idle" ? L : w, N = n.useMemo(() => ({
507
- onPointerDown: m,
508
- style: {
509
- touchAction: t === "horizontal" ? "pan-y pinch-zoom" : "pan-x pinch-zoom",
510
- userSelect: "none",
511
- WebkitUserSelect: "none"
512
- }
513
- }), [t, m]);
514
- return { state: _, containerProps: N };
515
- }
516
- const we = (r) => r === "left" || r === "right" ? "horizontal" : "vertical", Se = (r, e, t, s, a) => {
517
- const c = t.getBoundingClientRect();
518
- switch (s) {
519
- case "left":
520
- return r >= c.left && r <= c.left + a;
521
- case "right":
522
- return r >= c.right - a && r <= c.right;
523
- case "top":
524
- return e >= c.top && e <= c.top + a;
525
- case "bottom":
526
- return e >= c.bottom - a && e <= c.bottom;
527
- }
528
- };
529
- function ke(r) {
530
- const {
531
- containerRef: e,
532
- edge: t,
533
- edgeWidth: s = K,
534
- enabled: a = !0,
535
- thresholds: c,
536
- onSwipeEnd: u
537
- } = r, i = {
538
- ...Y,
539
- ...c
540
- }, f = we(t), [p, o] = n.useState(!1), d = n.useCallback(
541
- (v, h) => {
542
- const w = Se(v.clientX, v.clientY, h, t, s);
543
- return o(w), w;
544
- },
545
- [t, s]
546
- ), { state: m, containerProps: g } = Te({
547
- containerRef: e,
548
- axis: f,
549
- enabled: a,
550
- thresholds: i,
551
- onSwipeEnd: u,
552
- enableWheel: !1,
553
- // Edge swipe doesn't use wheel events
554
- pointerStartFilter: d
555
- });
556
- return n.useEffect(() => {
557
- m.phase === "idle" && o(!1);
558
- }, [m.phase]), {
559
- isEdgeGesture: p,
560
- state: p ? m : B,
561
- containerProps: g
562
- };
563
- }
564
- const Re = (r, e, t) => {
565
- const s = e.getBoundingClientRect();
566
- return r >= s.left && r <= s.left + t;
567
- };
568
- function Ae(r) {
569
- const {
570
- containerRef: e,
571
- active: t,
572
- preventEdgeBack: s = !0,
573
- preventOverscroll: a = !0,
574
- edgeWidth: c = K
575
- } = r, u = n.useRef(null), i = n.useCallback(() => {
576
- if (!a) return;
577
- const o = document.documentElement;
578
- u.current === null && (u.current = o.style.overscrollBehavior), o.style.overscrollBehavior = "none";
579
- }, [a]);
580
- n.useEffect(() => {
581
- t || !a || u.current !== null && (document.documentElement.style.overscrollBehavior = u.current, u.current = null);
582
- }, [t, a]), n.useEffect(() => () => {
583
- u.current !== null && (document.documentElement.style.overscrollBehavior = u.current, u.current = null);
584
- }, []);
585
- const f = n.useCallback((o) => {
586
- if (!s)
587
- return;
588
- const d = e.current;
589
- d && o.pointerType === "touch" && Re(o.clientX, d, c) && (i(), o.preventDefault());
590
- }, [s, e, c, i]);
591
- return {
592
- containerProps: n.useMemo(() => ({
593
- onPointerDown: s ? f : void 0,
594
- style: {
595
- // Always apply to prevent browser navigation gestures
596
- overscrollBehavior: a ? "contain" : void 0,
597
- WebkitOverflowScrolling: "touch"
598
- }
599
- }), [a, s, f])
600
- };
601
- }
602
- function Je(r) {
305
+ function Ve(n) {
603
306
  const {
604
307
  containerRef: e,
605
308
  navigation: t,
606
- edge: s = "left",
607
- edgeWidth: a = 20,
608
- enabled: c = !0
609
- } = r, [u, i] = n.useState(null), f = n.useCallback(
610
- (h) => {
611
- i(null), s === "left" && h.direction === 1 && t.canGo(-1) && t.go(-1);
309
+ edge: i = "left",
310
+ edgeWidth: c = 20,
311
+ enabled: o = !0
312
+ } = n, [u, s] = r.useState(null), l = r.useCallback(
313
+ (d) => {
314
+ s(null), i === "left" && d.direction === 1 && t.canGo(-1) && t.go(-1);
612
315
  },
613
- [s, t]
614
- ), { isEdgeGesture: p, state: o, containerProps: d } = ke({
316
+ [i, t]
317
+ ), { isEdgeGesture: f, state: m, containerProps: g } = te({
615
318
  containerRef: e,
616
- edge: s,
617
- edgeWidth: a,
618
- enabled: c && t.canGo(-1),
319
+ edge: i,
320
+ edgeWidth: c,
321
+ enabled: o ? t.canGo(-1) : !1,
619
322
  // Only enable if can go back
620
- onSwipeEnd: f
323
+ onSwipeEnd: l
621
324
  });
622
- n.useEffect(() => {
623
- p && (o.phase === "swiping" || o.phase === "tracking") ? i(o) : o.phase === "idle" && i(null);
624
- }, [p, o]);
625
- const { containerProps: m } = Ae({
325
+ r.useEffect(() => {
326
+ f && (m.phase === "swiping" || m.phase === "tracking") ? s(m) : m.phase === "idle" && s(null);
327
+ }, [f, m]);
328
+ const { containerProps: a } = ne({
626
329
  containerRef: e,
627
- active: p,
330
+ active: f,
628
331
  preventEdgeBack: !0,
629
332
  preventOverscroll: !0,
630
- edgeWidth: a
631
- }), g = n.useMemo(() => {
333
+ edgeWidth: c
334
+ }), v = r.useMemo(() => {
632
335
  if (!u || !e.current)
633
336
  return 0;
634
- const h = e.current.clientWidth;
635
- if (h === 0)
337
+ const d = e.current.clientWidth;
338
+ if (d === 0)
636
339
  return 0;
637
- const w = u.displacement.x;
638
- if (s === "left" && w <= 0 || s === "right" && w >= 0)
340
+ const h = u.displacement.x;
341
+ if (i === "left" && h <= 0 || i === "right" && h >= 0)
639
342
  return 0;
640
- const E = Math.abs(w);
641
- return Math.min(E / h, 1);
642
- }, [u, e, s]), T = n.useMemo(
643
- () => be(d, m),
644
- [d, m]
343
+ const R = Math.abs(h);
344
+ return Math.min(R / d, 1);
345
+ }, [u, e, i]), y = r.useMemo(
346
+ () => re(g, a),
347
+ [g, a]
645
348
  );
646
349
  return {
647
- isEdgeSwiping: p,
648
- progress: g,
649
- inputState: p ? o : B,
650
- containerProps: T
651
- };
652
- }
653
- const j = {
654
- /** Ease out expo (similar to cubic-bezier(0.22, 1, 0.36, 1)) */
655
- easeOutExpo: (r) => r === 1 ? 1 : 1 - Math.pow(2, -10 * r)
656
- }, xe = 300;
657
- function De(r) {
658
- const {
659
- duration: e = xe,
660
- easing: t = j.easeOutExpo,
661
- onFrame: s,
662
- onComplete: a
663
- } = r, [c, u] = n.useState(!1), i = n.useRef(null), f = n.useRef(null), p = n.useRef(s), o = n.useRef(a);
664
- n.useEffect(() => {
665
- p.current = s, o.current = a;
666
- }, [s, a]);
667
- const d = n.useCallback(() => {
668
- i.current !== null && (cancelAnimationFrame(i.current), i.current = null), f.current = null, u(!1);
669
- }, []), m = n.useCallback(() => {
670
- d(), u(!0), f.current = null;
671
- const g = (T) => {
672
- f.current === null && (f.current = T);
673
- const v = T - f.current, h = Math.min(v / e, 1), w = t(h), E = h >= 1, k = {
674
- progress: h,
675
- easedProgress: w,
676
- elapsed: v,
677
- isComplete: E
678
- };
679
- p.current?.(k), E ? (i.current = null, f.current = null, u(!1), o.current?.()) : i.current = requestAnimationFrame(g);
680
- };
681
- i.current = requestAnimationFrame(g);
682
- }, [e, t, d]);
683
- return n.useEffect(() => () => {
684
- i.current !== null && cancelAnimationFrame(i.current);
685
- }, []), {
686
- isAnimating: c,
687
- start: m,
688
- cancel: d
350
+ isEdgeSwiping: f,
351
+ progress: v,
352
+ inputState: f ? m : se,
353
+ containerProps: y
689
354
  };
690
355
  }
691
- function Ce(r, e, t) {
692
- return r + (e - r) * t;
693
- }
694
- const Pe = 300, X = (r) => r === "horizontal" ? "translateX" : "translateY";
695
- function Ie(r) {
356
+ const ye = 300, B = (n) => n === "horizontal" ? "translateX" : "translateY", Ae = (n, e, t, i) => n || e === void 0 || e <= 0 || t === void 0 || t === i ? null : { from: t, to: i }, Re = (n, e, t, i, c, o, u) => n === e ? { type: "none" } : i ? { type: "none" } : c ? { type: "none" } : o ? Math.abs(t - n) <= 1 ? { type: "snap", position: n } : u ? t > n ? { type: "snap", position: n } : { type: "animate", animation: { from: t, to: n } } : { type: "animate", animation: { from: t, to: n } } : { type: "snap", position: n }, be = (n, e, t) => n === void 0 || n === e || n <= 0 ? null : t;
357
+ function ke(n) {
696
358
  const {
697
359
  elementRef: e,
698
360
  targetPx: t,
699
- displacement: s,
700
- isSwiping: a,
701
- axis: c = "horizontal",
702
- animationDuration: u = Pe,
703
- containerSize: i,
704
- animateOnTargetChange: f = !1,
705
- initialPx: p
706
- } = r, o = p ?? t, d = n.useRef(o), m = n.useRef(null), g = n.useRef(t), T = n.useRef(i), v = n.useRef(null), h = n.useRef(!0);
707
- h.current && p !== void 0 && p !== t ? (v.current = { from: p, to: t }, h.current = !1) : h.current && (h.current = !1), t !== g.current && !a && m.current === null && (f && Math.abs(d.current - t) > 1 ? v.current = { from: d.current, to: t } : d.current = t, g.current = t), i !== void 0 && i !== T.current && i > 0 && (d.current = t, T.current = i);
708
- const w = n.useCallback(
709
- ({ easedProgress: D }) => {
710
- const M = e.current, I = m.current;
711
- if (!M || !I)
361
+ displacement: i,
362
+ isOperating: c,
363
+ axis: o = "horizontal",
364
+ animationDuration: u = ye,
365
+ containerSize: s,
366
+ animateOnTargetChange: l = !1,
367
+ initialPx: f,
368
+ skipTargetChangeAnimation: m = !1
369
+ } = n, g = f ?? t, a = r.useRef(g), v = r.useRef(null), y = r.useRef(t), A = r.useRef(s), d = r.useRef(null), h = r.useRef(!1), R = Ae(
370
+ h.current,
371
+ s,
372
+ f,
373
+ t
374
+ );
375
+ R !== null && (d.current = R, h.current = !0);
376
+ const C = Re(
377
+ t,
378
+ y.current,
379
+ a.current,
380
+ c,
381
+ v.current !== null,
382
+ l,
383
+ m
384
+ );
385
+ C.type === "animate" ? (d.current = C.animation, y.current = t) : C.type === "snap" && (a.current = C.position, y.current = t);
386
+ const w = be(
387
+ s,
388
+ A.current,
389
+ t
390
+ );
391
+ w !== null && (a.current = w, A.current = s);
392
+ const M = r.useCallback(
393
+ ({ easedProgress: T }) => {
394
+ const S = e.current, D = v.current;
395
+ if (!S || !D)
712
396
  return;
713
- const C = Ce(I.from, I.to, D);
714
- d.current = C, M.style.transform = `${X(c)}(${C}px)`;
397
+ const E = ie(D.from, D.to, T);
398
+ a.current = E, S.style.transform = `${B(o)}(${E}px)`;
715
399
  },
716
- [c, e]
717
- ), E = n.useCallback(() => {
718
- m.current = null, d.current = t, g.current = t;
719
- }, [t]), { isAnimating: k, start: x, cancel: P } = De({
400
+ [o, e]
401
+ ), _ = r.useCallback(() => {
402
+ v.current = null, a.current = t, y.current = t;
403
+ }, [t]), { isAnimating: $, start: x, cancel: N } = oe({
720
404
  duration: u,
721
- easing: j.easeOutExpo,
722
- onFrame: w,
723
- onComplete: E
405
+ easing: ae.easeOutExpo,
406
+ onFrame: M,
407
+ onComplete: _
724
408
  });
725
- return n.useLayoutEffect(() => {
726
- if (a) {
727
- P(), m.current = null, v.current = null;
409
+ return r.useLayoutEffect(() => {
410
+ if (c) {
411
+ N(), v.current = null, d.current = null;
728
412
  return;
729
413
  }
730
- if (v.current) {
731
- const I = v.current;
732
- m.current = I, v.current = null;
733
- const C = e.current;
734
- C && (C.style.transform = `${X(c)}(${I.from}px)`), x();
414
+ if (d.current) {
415
+ const D = d.current;
416
+ v.current = D, d.current = null;
417
+ const E = e.current;
418
+ E && (E.style.transform = `${B(o)}(${D.from}px)`), x();
735
419
  return;
736
420
  }
737
- const D = d.current;
738
- Math.abs(D - t) > 1 ? (m.current = { from: D, to: t }, x()) : (d.current = t, g.current = t);
739
- }, [a, t, x, P]), n.useLayoutEffect(() => {
740
- const D = e.current;
741
- if (!D || k || m.current !== null || v.current !== null)
421
+ const T = a.current;
422
+ Math.abs(T - t) > 1 ? (v.current = { from: T, to: t }, x()) : (a.current = t, y.current = t);
423
+ }, [c, t, x, N]), r.useLayoutEffect(() => {
424
+ const T = e.current;
425
+ if (!T || $ || v.current !== null || d.current !== null)
742
426
  return;
743
- const M = t + s;
744
- d.current = M, D.style.transform = `${X(c)}(${M}px)`;
745
- }, [t, s, c, k, e]), {
746
- isAnimating: k,
747
- currentPx: d.current,
748
- animationDirection: m.current
427
+ const S = t + i;
428
+ a.current = S, T.style.transform = `${B(o)}(${S}px)`;
429
+ }, [t, i, o, $, e]), {
430
+ isAnimating: $,
431
+ currentPx: a.current,
432
+ animationDirection: v.current
433
+ };
434
+ }
435
+ function Ce(n, e) {
436
+ const t = r.useRef(e), i = r.useRef(n), c = r.useRef(!1), u = t.current ? !e : !1, s = n !== i.current, l = e ? s : !1, g = (c.current ? !0 : l) ? !0 : u ? s : !1, a = e ? i.current : n;
437
+ return r.useLayoutEffect(() => {
438
+ e ? l && (c.current = !0) : (c.current = !1, i.current = n), t.current = e;
439
+ }), {
440
+ value: a,
441
+ changedDuringOperation: g,
442
+ operationJustEnded: u
749
443
  };
750
444
  }
751
- const q = -0.3;
752
- function Me(r) {
753
- return Math.max(0, r);
445
+ const V = -0.3;
446
+ function Te(n) {
447
+ return Math.max(0, n);
754
448
  }
755
- function Le(r, e, t = q) {
449
+ function Se(n, e, t = V) {
756
450
  if (e <= 0)
757
451
  return 0;
758
- const s = Math.max(0, r), a = Math.min(s / e, 1), c = t * e, u = Math.abs(t) * a * e;
759
- return c + u;
452
+ const i = Math.max(0, n), c = Math.min(i / e, 1), o = t * e, u = Math.abs(t) * c * e;
453
+ return o + u;
760
454
  }
761
- function Oe(r) {
762
- const { depth: e, navigationDepth: t, isActive: s, isSwiping: a, isAnimating: c } = r;
763
- return !!(s || e === t - 1 && (a || c));
455
+ function De(n) {
456
+ const { depth: e, navigationDepth: t, isActive: i, isOperating: c, isAnimating: o } = n;
457
+ return !!(i || e === t - 1 && (c || o));
764
458
  }
765
- function _e(r, e) {
766
- return r === e ? "active" : r === e - 1 ? "behind" : "hidden";
459
+ function Ie(n, e) {
460
+ return n === e ? "active" : n === e - 1 ? "behind" : "hidden";
767
461
  }
768
- const Ne = 300, Fe = 0.05, Ue = 0.1, Be = {
462
+ const Ee = 300, we = 0.05, Me = 0.1, xe = {
769
463
  position: "absolute",
770
464
  inset: 0,
771
465
  width: "100%",
772
466
  height: "100%"
773
- }, $e = (r, e) => r.phase === "idle" ? 0 : e === "horizontal" ? r.displacement.x : r.displacement.y, Xe = "-5px 0 15px rgba(0, 0, 0, 0.1)", We = n.memo(
467
+ }, Pe = (n, e) => n.phase === "idle" ? 0 : e === "horizontal" ? n.displacement.x : n.displacement.y, Oe = "-5px 0 15px rgba(0, 0, 0, 0.1)", Ne = r.memo(
774
468
  ({
775
- id: r,
469
+ id: n,
776
470
  depth: e,
777
471
  navigationDepth: t,
778
- isActive: s,
779
- inputState: a,
780
- containerSize: c,
472
+ isActive: i,
473
+ operationState: c,
474
+ containerSize: o,
781
475
  axis: u = "horizontal",
782
- behindOffset: i = q,
783
- animationDuration: f = Ne,
784
- animateOnMount: p = !1,
785
- showShadow: o = !0,
786
- displayMode: d = "overlay",
787
- showDimming: m = !0,
788
- children: g
476
+ behindOffset: s = V,
477
+ animationDuration: l = Ee,
478
+ animateOnMount: f = !1,
479
+ showShadow: m = !0,
480
+ displayMode: g = "overlay",
481
+ showDimming: a = !0,
482
+ children: v
789
483
  }) => {
790
- const T = n.useRef(null), v = n.useRef(!0), h = $e(a, u), w = a.phase === "swiping" || a.phase === "tracking", E = _e(e, t), k = v.current;
791
- v.current && (v.current = !1);
792
- const x = n.useMemo(() => {
793
- switch (E) {
484
+ const y = r.useRef(null), A = Pe(c, u), d = c.phase === "operating", h = Ie(e, t), { value: R, changedDuringOperation: C } = Ce(
485
+ h,
486
+ A > 0
487
+ ), w = r.useMemo(() => {
488
+ switch (R) {
794
489
  case "active":
795
490
  return 0;
796
491
  case "behind":
797
- return i * c;
492
+ return s * o;
798
493
  case "hidden":
799
- return c;
494
+ return o;
800
495
  }
801
- }, [E, i, c]), P = n.useMemo(() => {
802
- if (h <= 0)
496
+ }, [R, s, o]), M = r.useMemo(() => {
497
+ if (A <= 0)
803
498
  return 0;
804
- switch (E) {
499
+ switch (R) {
805
500
  case "active":
806
- return Me(h);
501
+ return Te(A);
807
502
  case "behind": {
808
- const S = Le(h, c, i), l = i * c;
809
- return S - l;
503
+ const I = Se(A, o, s), P = s * o;
504
+ return I - P;
810
505
  }
811
506
  case "hidden":
812
507
  return 0;
813
508
  }
814
- }, [E, h, c, i]), D = n.useMemo(() => {
815
- if (!(!k || !p) && E === "active" && e > 0)
816
- return c;
817
- }, [k, p, E, e, c]), { isAnimating: M } = Ie({
818
- elementRef: T,
819
- targetPx: x,
820
- displacement: P,
821
- isSwiping: w,
509
+ }, [R, A, o, s]), _ = r.useMemo(() => {
510
+ if (f && h === "active" && e > 0)
511
+ return o;
512
+ }, [f, h, e, o]), { isAnimating: $ } = ke({
513
+ elementRef: y,
514
+ targetPx: w,
515
+ displacement: M,
516
+ isOperating: d,
822
517
  axis: u,
823
- animationDuration: f,
824
- containerSize: c,
518
+ animationDuration: l,
519
+ containerSize: o,
825
520
  // Animate when targetPx changes (button navigation)
826
521
  animateOnTargetChange: !0,
827
522
  // For push animation: start from off-screen
828
- initialPx: D
829
- }), I = Oe({
523
+ initialPx: _,
524
+ // Skip backward animation if role changed during the operation.
525
+ // This handles over-swipe where panel moves beyond 100% and needs to snap back.
526
+ // useSwipeContentTransform allows forward animations (normal swipe-to-complete)
527
+ // but skips backward animations (over-swipe snap).
528
+ skipTargetChangeAnimation: C
529
+ }), x = De({
830
530
  depth: e,
831
531
  navigationDepth: t,
832
- isActive: s,
833
- isSwiping: w,
834
- isAnimating: M
835
- }), C = n.useMemo(() => c <= 0 || h <= 0 ? 0 : Math.min(h / c, 1), [h, c]), L = n.useMemo(() => {
836
- if (d !== "stack")
532
+ isActive: i,
533
+ isOperating: d,
534
+ isAnimating: $
535
+ }), N = r.useMemo(() => o <= 0 || A <= 0 ? 0 : Math.min(A / o, 1), [A, o]), T = r.useMemo(() => {
536
+ if (g !== "stack")
837
537
  return 1;
838
- const S = t - e;
839
- if (E === "active")
538
+ const I = t - e;
539
+ if (h === "active")
840
540
  return 1;
841
- if (E === "behind") {
842
- const l = 1 - S * Fe;
843
- return l + C * (1 - l);
541
+ if (h === "behind") {
542
+ const P = 1 - I * we;
543
+ return P + N * (1 - P);
844
544
  }
845
545
  return 1;
846
- }, [d, E, e, t, C]), _ = n.useMemo(() => !m || E !== "behind" ? 0 : Ue * (1 - C), [m, E, C]);
847
- n.useLayoutEffect(() => {
848
- const S = T.current;
849
- S && (S.style.visibility = I ? "visible" : "hidden");
850
- }, [I]), n.useLayoutEffect(() => {
851
- const S = T.current;
852
- if (!S || d !== "stack")
546
+ }, [g, h, e, t, N]), S = r.useMemo(() => !a || h !== "behind" ? 0 : Me * (1 - N), [a, h, N]);
547
+ r.useLayoutEffect(() => {
548
+ const I = y.current;
549
+ I && (I.style.visibility = x ? "visible" : "hidden");
550
+ }, [x]), r.useLayoutEffect(() => {
551
+ const I = y.current;
552
+ if (!I || g !== "stack")
853
553
  return;
854
- const l = S.style.transform;
855
- if (l.includes("translateX")) {
856
- const y = l.match(/translateX\([^)]+\)/);
857
- y && (S.style.transform = `${y[0]} scale(${L})`);
554
+ const P = I.style.transform;
555
+ if (P.includes("translateX")) {
556
+ const L = P.match(/translateX\([^)]+\)/);
557
+ L && (I.style.transform = `${L[0]} scale(${T})`);
858
558
  } else
859
- S.style.transform = `scale(${L})`;
860
- }, [L, d]);
861
- const N = o && e > 0 && E === "active", b = n.useMemo(
559
+ I.style.transform = `scale(${T})`;
560
+ }, [T, g]);
561
+ const D = m ? e > 0 && h === "active" : !1, E = r.useMemo(
862
562
  () => ({
863
- ...Be,
864
- pointerEvents: s ? "auto" : "none",
563
+ ...xe,
564
+ pointerEvents: i ? "auto" : "none",
865
565
  willChange: "transform",
866
566
  zIndex: e,
867
- visibility: I ? "visible" : "hidden",
868
- boxShadow: N ? Xe : void 0
567
+ visibility: x ? "visible" : "hidden",
568
+ boxShadow: D ? Oe : void 0
869
569
  }),
870
- [s, e, I, N]
871
- ), R = n.useMemo(() => _ <= 0 ? null : {
570
+ [i, e, x, D]
571
+ ), U = r.useMemo(() => S <= 0 ? null : {
872
572
  position: "absolute",
873
573
  inset: 0,
874
- backgroundColor: `rgba(0, 0, 0, ${_})`,
574
+ backgroundColor: `rgba(0, 0, 0, ${S})`,
875
575
  pointerEvents: "none",
876
576
  zIndex: 1
877
- }, [_]);
878
- return /* @__PURE__ */ J(
577
+ }, [S]);
578
+ return /* @__PURE__ */ j(
879
579
  "div",
880
580
  {
881
- ref: T,
882
- "data-stack-content": r,
581
+ ref: y,
582
+ "data-stack-content": n,
883
583
  "data-depth": e,
884
- "data-active": s ? "true" : "false",
885
- "data-role": E,
886
- style: b,
584
+ "data-active": i ? "true" : "false",
585
+ "data-role": h,
586
+ style: E,
887
587
  children: [
888
- g,
889
- R != null && /* @__PURE__ */ O("div", { style: R, "data-dimming-overlay": !0 })
588
+ v,
589
+ U != null ? /* @__PURE__ */ O("div", { style: U, "data-dimming-overlay": !0 }) : null
890
590
  ]
891
591
  }
892
592
  );
893
593
  }
894
- ), Ge = 300;
895
- function He(r, e, t) {
896
- const { stack: s, depth: a } = e, c = [a];
897
- a > 0 && c.push(a - 1);
594
+ ), _e = 300;
595
+ function $e(n, e, t) {
596
+ const { stack: i, depth: c } = e, o = [c];
597
+ c > 0 && o.push(c - 1);
898
598
  const u = [];
899
- for (const i of c) {
900
- const f = s[i], p = r.find((o) => o.id === f);
901
- p && u.push({ panel: p, depth: i, isExiting: !1 });
599
+ for (const s of o) {
600
+ const l = i[s], f = n.find((m) => m.id === l);
601
+ f && u.push({ panel: f, depth: s, isExiting: !1 });
902
602
  }
903
- if (t != null && !u.some((f) => f.panel.id === t)) {
904
- const f = r.find((p) => p.id === t);
905
- f && u.push({ panel: f, depth: a + 1, isExiting: !0 });
603
+ if (t != null && !u.some((l) => l.panel.id === t)) {
604
+ const l = n.find((f) => f.id === t);
605
+ l && u.push({ panel: l, depth: c + 1, isExiting: !0 });
906
606
  }
907
- return u.sort((i, f) => i.depth - f.depth);
607
+ return u.sort((s, l) => s.depth - l.depth);
908
608
  }
909
- const Qe = n.memo(
609
+ const Ke = r.memo(
910
610
  ({
911
- panels: r,
611
+ panels: n,
912
612
  navigationState: e,
913
- inputState: t,
914
- containerSize: s,
915
- getCachedContent: a,
916
- behindOffset: c,
613
+ operationState: t,
614
+ containerSize: i,
615
+ getCachedContent: c,
616
+ behindOffset: o,
917
617
  animateOnMount: u = !1,
918
- animationDuration: i = Ge,
919
- showShadow: f,
920
- displayMode: p,
921
- showDimming: o
618
+ animationDuration: s = _e,
619
+ showShadow: l,
620
+ displayMode: f,
621
+ showDimming: m
922
622
  }) => {
923
- const [d, m] = n.useState(null), g = n.useRef(e.depth), T = n.useRef(e.stack);
924
- n.useLayoutEffect(() => {
925
- const w = g.current, E = T.current, { depth: k, stack: x } = e;
926
- if (g.current = k, T.current = x, k < w) {
927
- const P = E[w];
928
- if (P != null) {
929
- m(P);
930
- const D = setTimeout(() => {
931
- m(null);
932
- }, i);
933
- return () => clearTimeout(D);
623
+ const [g, a] = r.useState(null), v = r.useRef(e.depth), y = r.useRef(e.stack);
624
+ r.useLayoutEffect(() => {
625
+ const h = v.current, R = y.current, { depth: C, stack: w } = e;
626
+ if (v.current = C, y.current = w, C < h) {
627
+ const M = R[h];
628
+ if (M != null) {
629
+ a(M);
630
+ const _ = setTimeout(() => {
631
+ a(null);
632
+ }, s);
633
+ return () => clearTimeout(_);
934
634
  }
935
635
  }
936
- }, [e.depth, e.stack, i]);
937
- const v = n.useMemo(
938
- () => He(r, e, d),
939
- [r, e, d]
940
- ), h = n.useMemo(
636
+ }, [e.depth, e.stack, s]);
637
+ const A = r.useMemo(
638
+ () => $e(n, e, g),
639
+ [n, e, g]
640
+ ), d = r.useMemo(
941
641
  () => ({
942
642
  position: "relative",
943
643
  width: "100%",
@@ -946,35 +646,35 @@ const Qe = n.memo(
946
646
  }),
947
647
  []
948
648
  );
949
- return /* @__PURE__ */ O("div", { style: h, "data-swipe-stack-container": !0, children: v.map(({ panel: w, depth: E, isExiting: k }) => {
950
- const x = E === e.depth && !k, P = a?.(w.id) ?? w.content;
649
+ return /* @__PURE__ */ O("div", { style: d, "data-swipe-stack-container": !0, children: A.map(({ panel: h, depth: R, isExiting: C }) => {
650
+ const w = R === e.depth && !C, M = c?.(h.id) ?? h.content;
951
651
  return /* @__PURE__ */ O(
952
- We,
652
+ Ne,
953
653
  {
954
- id: w.id,
955
- depth: E,
654
+ id: h.id,
655
+ depth: R,
956
656
  navigationDepth: e.depth,
957
- isActive: x,
958
- inputState: t,
959
- containerSize: s,
960
- behindOffset: c,
657
+ isActive: w,
658
+ operationState: t,
659
+ containerSize: i,
660
+ behindOffset: o,
961
661
  animateOnMount: u,
962
- animationDuration: i,
963
- showShadow: f,
964
- displayMode: p,
965
- showDimming: o,
966
- children: P
662
+ animationDuration: s,
663
+ showShadow: l,
664
+ displayMode: f,
665
+ showDimming: m,
666
+ children: M
967
667
  },
968
- w.id
668
+ h.id
969
669
  );
970
670
  }) });
971
671
  }
972
672
  );
973
673
  export {
974
- pe as StackContent,
975
- We as SwipeStackContent,
976
- Qe as SwipeStackOutlet,
977
- Ze as useStackNavigation,
978
- Je as useStackSwipeInput
674
+ he as StackContent,
675
+ Ne as SwipeStackContent,
676
+ Ke as SwipeStackOutlet,
677
+ Ge as useStackNavigation,
678
+ Ve as useStackSwipeInput
979
679
  };
980
680
  //# sourceMappingURL=stack.js.map