react-panel-layout 0.6.0 → 0.6.1

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