react-panel-layout 0.5.1 → 0.6.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 (466) hide show
  1. package/dist/{FloatingPanelFrame-D9Cp2al1.cjs → FloatingPanelFrame-CEmXDvUA.cjs} +2 -2
  2. package/dist/FloatingPanelFrame-CEmXDvUA.cjs.map +1 -0
  3. package/dist/{FloatingPanelFrame-6W5OexYe.js → FloatingPanelFrame-SgYLc6Ud.js} +12 -15
  4. package/dist/FloatingPanelFrame-SgYLc6Ud.js.map +1 -0
  5. package/dist/FloatingWindow-BpdOpg_L.js +400 -0
  6. package/dist/FloatingWindow-BpdOpg_L.js.map +1 -0
  7. package/dist/FloatingWindow-TCDNY5gE.cjs +2 -0
  8. package/dist/FloatingWindow-TCDNY5gE.cjs.map +1 -0
  9. package/dist/GridLayout-B4VRsC0r.cjs +2 -0
  10. package/dist/GridLayout-B4VRsC0r.cjs.map +1 -0
  11. package/dist/GridLayout-BltqeCPK.js +927 -0
  12. package/dist/GridLayout-BltqeCPK.js.map +1 -0
  13. package/dist/HorizontalDivider-B5Z-KZLk.cjs +2 -0
  14. package/dist/HorizontalDivider-B5Z-KZLk.cjs.map +1 -0
  15. package/dist/HorizontalDivider-WF1k_qND.js +30 -0
  16. package/dist/HorizontalDivider-WF1k_qND.js.map +1 -0
  17. package/dist/PanelSystem-Bs8bQwQF.cjs +3 -0
  18. package/dist/PanelSystem-Bs8bQwQF.cjs.map +1 -0
  19. package/dist/PanelSystem-Dr1TBhxM.js +1946 -0
  20. package/dist/PanelSystem-Dr1TBhxM.js.map +1 -0
  21. package/dist/ResizeHandle-CScipO5l.cjs +2 -0
  22. package/dist/ResizeHandle-CScipO5l.cjs.map +1 -0
  23. package/dist/ResizeHandle-CdA_JYfN.js +120 -0
  24. package/dist/ResizeHandle-CdA_JYfN.js.map +1 -0
  25. package/dist/SwipePivotTabBar-BGO9X94m.js +407 -0
  26. package/dist/SwipePivotTabBar-BGO9X94m.js.map +1 -0
  27. package/dist/SwipePivotTabBar-BrQismcZ.cjs +2 -0
  28. package/dist/SwipePivotTabBar-BrQismcZ.cjs.map +1 -0
  29. package/dist/config.cjs +1 -1
  30. package/dist/config.cjs.map +1 -1
  31. package/dist/config.js +11 -9
  32. package/dist/config.js.map +1 -1
  33. package/dist/constants/styles.d.ts +18 -4
  34. package/dist/floating.cjs +1 -1
  35. package/dist/floating.js +1 -1
  36. package/dist/grid/index.d.ts +58 -0
  37. package/dist/grid.cjs +2 -0
  38. package/dist/grid.cjs.map +1 -0
  39. package/dist/grid.js +13 -0
  40. package/dist/grid.js.map +1 -0
  41. package/dist/hooks/gesture/presets.d.ts +33 -0
  42. package/dist/hooks/gesture/testing/createGestureSimulator.d.ts +110 -0
  43. package/dist/hooks/gesture/thresholdValue.d.ts +44 -0
  44. package/dist/hooks/gesture/types.d.ts +254 -0
  45. package/dist/hooks/gesture/useDirectionalLock.d.ts +20 -0
  46. package/dist/hooks/gesture/useEdgeSwipeInput.d.ts +23 -0
  47. package/dist/hooks/gesture/useNativeGestureGuard.d.ts +23 -0
  48. package/dist/hooks/gesture/usePointerTracking.d.ts +22 -0
  49. package/dist/hooks/gesture/useScrollBoundary.d.ts +23 -0
  50. package/dist/hooks/gesture/useSwipeInput.d.ts +5 -0
  51. package/dist/hooks/gesture/utils.d.ts +40 -0
  52. package/dist/hooks/useAnimatedVisibility.d.ts +58 -0
  53. package/dist/hooks/useAnimationFrame.d.ts +84 -0
  54. package/dist/hooks/useSnapAnimation.d.ts +54 -0
  55. package/dist/hooks/useSwipeContentTransform.d.ts +79 -0
  56. package/dist/index.cjs +1 -2
  57. package/dist/index.cjs.map +1 -1
  58. package/dist/index.d.ts +0 -1
  59. package/dist/index.js +25 -2006
  60. package/dist/index.js.map +1 -1
  61. package/dist/modules/pivot/PivotContent.d.ts +1 -1
  62. package/dist/modules/pivot/SwipePivotContent.d.ts +39 -0
  63. package/dist/modules/pivot/SwipePivotContent.debug.tmp.d.ts +25 -0
  64. package/dist/modules/pivot/SwipePivotContent.test.d.ts +1 -0
  65. package/dist/modules/pivot/SwipePivotTabBar.d.ts +89 -0
  66. package/dist/modules/pivot/index.d.ts +3 -0
  67. package/dist/modules/pivot/scaleInputState.d.ts +37 -0
  68. package/dist/modules/pivot/types.d.ts +73 -2
  69. package/dist/modules/pivot/usePivotSwipeInput.d.ts +68 -0
  70. package/dist/modules/stack/StackContent.d.ts +15 -0
  71. package/dist/modules/stack/SwipeStackContent.d.ts +63 -0
  72. package/dist/modules/stack/SwipeStackOutlet.d.ts +80 -0
  73. package/dist/modules/stack/computeStackContentState.d.ts +99 -0
  74. package/dist/modules/stack/computeSwipeStackTransform.d.ts +76 -0
  75. package/dist/modules/stack/types.d.ts +194 -0
  76. package/dist/modules/stack/useStackAnimationState.d.ts +32 -0
  77. package/dist/modules/stack/useStackNavigation.d.ts +23 -0
  78. package/dist/modules/stack/useStackSwipeInput.d.ts +27 -0
  79. package/dist/panels/index.d.ts +67 -0
  80. package/dist/panels.cjs +2 -0
  81. package/dist/panels.cjs.map +1 -0
  82. package/dist/panels.js +28 -0
  83. package/dist/panels.js.map +1 -0
  84. package/dist/pivot/index.d.ts +3 -0
  85. package/dist/pivot.cjs +1 -1
  86. package/dist/pivot.cjs.map +1 -1
  87. package/dist/pivot.js +20 -2
  88. package/dist/pivot.js.map +1 -1
  89. package/dist/resizer/index.d.ts +57 -0
  90. package/dist/resizer.cjs +2 -0
  91. package/dist/resizer.cjs.map +1 -0
  92. package/dist/resizer.js +8 -0
  93. package/dist/resizer.js.map +1 -0
  94. package/dist/stack/index.d.ts +72 -0
  95. package/dist/stack.cjs +2 -0
  96. package/dist/stack.cjs.map +1 -0
  97. package/dist/stack.js +980 -0
  98. package/dist/stack.js.map +1 -0
  99. package/dist/sticky-header/StickyArea.d.ts +38 -0
  100. package/dist/sticky-header/index.d.ts +4 -4
  101. package/dist/sticky-header/types.d.ts +35 -22
  102. package/dist/sticky-header.cjs +1 -1
  103. package/dist/sticky-header.cjs.map +1 -1
  104. package/dist/sticky-header.js +65 -174
  105. package/dist/sticky-header.js.map +1 -1
  106. package/dist/styles-DPPuJ0sf.js +57 -0
  107. package/dist/styles-DPPuJ0sf.js.map +1 -0
  108. package/dist/styles-qf6ptVLD.cjs +2 -0
  109. package/dist/styles-qf6ptVLD.cjs.map +1 -0
  110. package/dist/types.d.ts +12 -0
  111. package/dist/useContentCache-CO3LYNmz.js +24 -0
  112. package/dist/useContentCache-CO3LYNmz.js.map +1 -0
  113. package/dist/useContentCache-DqXtLrLs.cjs +2 -0
  114. package/dist/useContentCache-DqXtLrLs.cjs.map +1 -0
  115. package/dist/useDocumentPointerEvents-CKdhGXd0.js +46 -0
  116. package/dist/useDocumentPointerEvents-CKdhGXd0.js.map +1 -0
  117. package/dist/useDocumentPointerEvents-ChqrKXDk.cjs +2 -0
  118. package/dist/useDocumentPointerEvents-ChqrKXDk.cjs.map +1 -0
  119. package/dist/useEffectEvent-Dp7HLCf0.js +13 -0
  120. package/dist/useEffectEvent-Dp7HLCf0.js.map +1 -0
  121. package/dist/useEffectEvent-huSsGUnl.cjs +2 -0
  122. package/dist/useEffectEvent-huSsGUnl.cjs.map +1 -0
  123. package/dist/useFloatingState-C4kRaW_R.cjs +2 -0
  124. package/dist/useFloatingState-C4kRaW_R.cjs.map +1 -0
  125. package/dist/useFloatingState-tEfA_wbc.js +74 -0
  126. package/dist/useFloatingState-tEfA_wbc.js.map +1 -0
  127. package/dist/window/index.d.ts +61 -0
  128. package/dist/window.cjs +2 -0
  129. package/dist/window.cjs.map +1 -0
  130. package/dist/window.js +149 -0
  131. package/dist/window.js.map +1 -0
  132. package/docs/design-tokens.md +405 -0
  133. package/package.json +29 -4
  134. package/src/PanelSystemContext.tsx +88 -0
  135. package/src/components/grid/GridLayerList.tsx +172 -0
  136. package/src/components/grid/GridLayerResizeHandles.tsx +145 -0
  137. package/src/components/grid/GridLayout.spec.tsx +743 -0
  138. package/src/components/grid/GridLayout.tsx +130 -0
  139. package/src/components/grid/GridTrackResizeHandle.tsx +87 -0
  140. package/src/components/paneling/FloatingPanelFrame.tsx +203 -0
  141. package/src/components/panels/DropSuggestOverlay.tsx +131 -0
  142. package/src/components/panels/PanelGroupView.tsx +112 -0
  143. package/src/components/pivot/PivotLayer.tsx +27 -0
  144. package/src/components/resizer/HorizontalDivider.tsx +52 -0
  145. package/src/components/resizer/ResizeHandle.tsx +118 -0
  146. package/src/components/tabs/TabBar.tsx +223 -0
  147. package/src/components/tabs/TabBarTab.tsx +133 -0
  148. package/src/components/tabs/TabDragOverlay.tsx +92 -0
  149. package/src/components/window/DialogOverlay.tsx +180 -0
  150. package/src/components/window/Drawer.tsx +282 -0
  151. package/src/components/window/DrawerLayers.tsx +58 -0
  152. package/src/components/window/FloatingWindow.tsx +95 -0
  153. package/src/components/window/PopupLayerPortal.tsx +218 -0
  154. package/src/config/PanelContentDeclaration.tsx +427 -0
  155. package/src/config/index.tsx +52 -0
  156. package/src/config/panelJsx.spec.tsx +54 -0
  157. package/src/config/panelJsxConfig.spec.tsx +54 -0
  158. package/src/config/panelJsxDrawer.spec.tsx +33 -0
  159. package/src/config/panelRouter.spec.ts +68 -0
  160. package/src/config/panelRouter.tsx +155 -0
  161. package/src/constants/styles.ts +261 -0
  162. package/src/demo/Layout.module.css +258 -0
  163. package/src/demo/Layout.tsx +176 -0
  164. package/src/demo/components/CodeBlock.module.css +54 -0
  165. package/src/demo/components/CodeBlock.tsx +34 -0
  166. package/src/demo/components/CodePreview.module.css +37 -0
  167. package/src/demo/components/CodePreview.tsx +31 -0
  168. package/src/demo/components/DataPreview.module.css +177 -0
  169. package/src/demo/components/DataPreview.tsx +115 -0
  170. package/src/demo/components/Story.module.css +68 -0
  171. package/src/demo/components/Story.tsx +54 -0
  172. package/src/demo/components/layout/CodePanel.module.css +183 -0
  173. package/src/demo/components/layout/CodePanel.tsx +149 -0
  174. package/src/demo/components/layout/DemoPage.module.css +60 -0
  175. package/src/demo/components/layout/DemoPage.tsx +56 -0
  176. package/src/demo/components/layout/SingleSamplePage.module.css +11 -0
  177. package/src/demo/components/layout/SingleSamplePage.tsx +35 -0
  178. package/src/demo/components/layout/SplitDemoLayout.module.css +107 -0
  179. package/src/demo/components/layout/SplitDemoLayout.tsx +218 -0
  180. package/src/demo/components/layout/index.ts +11 -0
  181. package/src/demo/components/tab-styles/ChromeTabBar.module.css +75 -0
  182. package/src/demo/components/tab-styles/ChromeTabBar.tsx +111 -0
  183. package/src/demo/components/tab-styles/GitHubTabBar.module.css +81 -0
  184. package/src/demo/components/tab-styles/GitHubTabBar.tsx +109 -0
  185. package/src/demo/components/tab-styles/VSCodeTabBar.module.css +78 -0
  186. package/src/demo/components/tab-styles/VSCodeTabBar.tsx +109 -0
  187. package/src/demo/components/tab-styles/index.ts +6 -0
  188. package/src/demo/components/ui/DemoButton.module.css +63 -0
  189. package/src/demo/components/ui/DemoButton.tsx +32 -0
  190. package/src/demo/components/ui/DemoCard.module.css +15 -0
  191. package/src/demo/components/ui/DemoCard.tsx +30 -0
  192. package/src/demo/components/ui/DemoContainer.module.css +17 -0
  193. package/src/demo/components/ui/DemoContainer.tsx +30 -0
  194. package/src/demo/components/ui/DemoPanel.module.css +23 -0
  195. package/src/demo/components/ui/DemoPanel.tsx +33 -0
  196. package/src/demo/components/ui/PanelText.module.css +18 -0
  197. package/src/demo/components/ui/PanelText.tsx +29 -0
  198. package/src/demo/components/ui/PanelTitle.module.css +18 -0
  199. package/src/demo/components/ui/PanelTitle.tsx +31 -0
  200. package/src/demo/contexts/TabbarDemoConfig.tsx +218 -0
  201. package/src/demo/demo.css +172 -0
  202. package/src/demo/hooks/useMedia.ts +41 -0
  203. package/src/demo/hooks/useShikiHighlight.ts +55 -0
  204. package/src/demo/index.tsx +293 -0
  205. package/src/demo/pages/Drawer/animations/index.tsx +22 -0
  206. package/src/demo/pages/Drawer/basics/index.tsx +17 -0
  207. package/src/demo/pages/Drawer/components/DrawerAnimations.module.css +125 -0
  208. package/src/demo/pages/Drawer/components/DrawerAnimations.tsx +118 -0
  209. package/src/demo/pages/Drawer/components/DrawerBasics.module.css +55 -0
  210. package/src/demo/pages/Drawer/components/DrawerBasics.tsx +76 -0
  211. package/src/demo/pages/Drawer/components/DrawerMenuLayout.module.css +332 -0
  212. package/src/demo/pages/Drawer/components/DrawerMenuLayout.tsx +199 -0
  213. package/src/demo/pages/Drawer/menu/index.tsx +17 -0
  214. package/src/demo/pages/FloatingPanelFrame/ResizableFloatingPanelsPreview.module.css +163 -0
  215. package/src/demo/pages/FloatingPanelFrame/ResizableFloatingPanelsPreview.tsx +234 -0
  216. package/src/demo/pages/FloatingPanelFrame/basic/index.tsx +17 -0
  217. package/src/demo/pages/FloatingPanelFrame/complex/index.tsx +26 -0
  218. package/src/demo/pages/FloatingPanelFrame/components/BasicPanel.module.css +16 -0
  219. package/src/demo/pages/FloatingPanelFrame/components/BasicPanel.tsx +24 -0
  220. package/src/demo/pages/FloatingPanelFrame/components/ComplexPanel.module.css +54 -0
  221. package/src/demo/pages/FloatingPanelFrame/components/ComplexPanel.tsx +67 -0
  222. package/src/demo/pages/FloatingPanelFrame/components/PanelWithControls.module.css +21 -0
  223. package/src/demo/pages/FloatingPanelFrame/components/PanelWithControls.tsx +41 -0
  224. package/src/demo/pages/FloatingPanelFrame/components/PanelWithMeta.module.css +5 -0
  225. package/src/demo/pages/FloatingPanelFrame/components/PanelWithMeta.tsx +43 -0
  226. package/src/demo/pages/FloatingPanelFrame/components/ScrollablePanel.module.css +11 -0
  227. package/src/demo/pages/FloatingPanelFrame/components/ScrollablePanel.tsx +42 -0
  228. package/src/demo/pages/FloatingPanelFrame/index.tsx +80 -0
  229. package/src/demo/pages/FloatingPanelFrame/scrollable/index.tsx +30 -0
  230. package/src/demo/pages/FloatingPanelFrame/with-controls/index.tsx +30 -0
  231. package/src/demo/pages/FloatingPanelFrame/with-meta/index.tsx +17 -0
  232. package/src/demo/pages/HorizontalDivider/components/PanelsWithRichContent.module.css +112 -0
  233. package/src/demo/pages/HorizontalDivider/components/PanelsWithRichContent.tsx +56 -0
  234. package/src/demo/pages/HorizontalDivider/components/SimpleResizablePanels.module.css +46 -0
  235. package/src/demo/pages/HorizontalDivider/components/SimpleResizablePanels.tsx +29 -0
  236. package/src/demo/pages/HorizontalDivider/components/ThreePanelLayout.module.css +54 -0
  237. package/src/demo/pages/HorizontalDivider/components/ThreePanelLayout.tsx +30 -0
  238. package/src/demo/pages/HorizontalDivider/index.module.css +14 -0
  239. package/src/demo/pages/HorizontalDivider/index.tsx +64 -0
  240. package/src/demo/pages/HorizontalDivider/panels-with-rich-content/index.tsx +21 -0
  241. package/src/demo/pages/HorizontalDivider/simple-resizable-panels/index.tsx +21 -0
  242. package/src/demo/pages/HorizontalDivider/three-panel-layout/index.tsx +21 -0
  243. package/src/demo/pages/PanelLayout/PanelLayoutDemo.module.css +174 -0
  244. package/src/demo/pages/PanelLayout/PanelLayoutDemo.tsx +248 -0
  245. package/src/demo/pages/PanelLayout/components/DashboardLayout.module.css +115 -0
  246. package/src/demo/pages/PanelLayout/components/DashboardLayout.tsx +124 -0
  247. package/src/demo/pages/PanelLayout/components/DraggableOverlays.module.css +101 -0
  248. package/src/demo/pages/PanelLayout/components/DraggableOverlays.tsx +122 -0
  249. package/src/demo/pages/PanelLayout/components/IDELayout.module.css +104 -0
  250. package/src/demo/pages/PanelLayout/components/IDELayout.tsx +143 -0
  251. package/src/demo/pages/PanelLayout/components/SimpleGrid.module.css +19 -0
  252. package/src/demo/pages/PanelLayout/components/SimpleGrid.tsx +62 -0
  253. package/src/demo/pages/PanelLayout/dashboard/index.tsx +22 -0
  254. package/src/demo/pages/PanelLayout/draggable-overlays/index.tsx +22 -0
  255. package/src/demo/pages/PanelLayout/ide-layout/index.tsx +22 -0
  256. package/src/demo/pages/PanelLayout/index.tsx +94 -0
  257. package/src/demo/pages/PanelLayout/simple-grid/index.tsx +22 -0
  258. package/src/demo/pages/PanelSystem/PanelSystemPreview.module.css +20 -0
  259. package/src/demo/pages/PanelSystem/PanelSystemPreview.tsx +101 -0
  260. package/src/demo/pages/PanelSystem/preview/index.tsx +18 -0
  261. package/src/demo/pages/PanelSystem/tabbar/index.tsx +129 -0
  262. package/src/demo/pages/Pivot/basics/index.tsx +17 -0
  263. package/src/demo/pages/Pivot/components/Pivot.module.css +278 -0
  264. package/src/demo/pages/Pivot/components/PivotBasics.tsx +103 -0
  265. package/src/demo/pages/Pivot/components/PivotSidebar.tsx +168 -0
  266. package/src/demo/pages/Pivot/components/PivotTabs.tsx +129 -0
  267. package/src/demo/pages/Pivot/components/PivotTransitions.tsx +120 -0
  268. package/src/demo/pages/Pivot/components/SwipePivot.module.css +114 -0
  269. package/src/demo/pages/Pivot/components/SwipePivot.tsx +193 -0
  270. package/src/demo/pages/Pivot/components/SwipeTabsPivot.module.css +203 -0
  271. package/src/demo/pages/Pivot/components/SwipeTabsPivot.tsx +289 -0
  272. package/src/demo/pages/Pivot/sidebar/index.tsx +17 -0
  273. package/src/demo/pages/Pivot/swipe/index.tsx +16 -0
  274. package/src/demo/pages/Pivot/swipe-debug/index.tsx +287 -0
  275. package/src/demo/pages/Pivot/swipe-tabs/index.tsx +15 -0
  276. package/src/demo/pages/Pivot/tabs/index.tsx +17 -0
  277. package/src/demo/pages/Pivot/transitions/index.tsx +17 -0
  278. package/src/demo/pages/ResizeHandle/both-directions/index.tsx +17 -0
  279. package/src/demo/pages/ResizeHandle/components/BothDirectionsDemo.module.css +72 -0
  280. package/src/demo/pages/ResizeHandle/components/BothDirectionsDemo.tsx +41 -0
  281. package/src/demo/pages/ResizeHandle/components/HorizontalResizeDemo.module.css +61 -0
  282. package/src/demo/pages/ResizeHandle/components/HorizontalResizeDemo.tsx +33 -0
  283. package/src/demo/pages/ResizeHandle/components/NestedPanelsDemo.module.css +83 -0
  284. package/src/demo/pages/ResizeHandle/components/NestedPanelsDemo.tsx +53 -0
  285. package/src/demo/pages/ResizeHandle/components/VerticalResizeDemo.module.css +68 -0
  286. package/src/demo/pages/ResizeHandle/components/VerticalResizeDemo.tsx +33 -0
  287. package/src/demo/pages/ResizeHandle/horizontal/index.tsx +17 -0
  288. package/src/demo/pages/ResizeHandle/index.module.css +11 -0
  289. package/src/demo/pages/ResizeHandle/index.tsx +71 -0
  290. package/src/demo/pages/ResizeHandle/nested-panels/index.tsx +17 -0
  291. package/src/demo/pages/ResizeHandle/vertical/index.tsx +17 -0
  292. package/src/demo/pages/ResponsiveLayout/adaptive-workspace/index.tsx +22 -0
  293. package/src/demo/pages/ResponsiveLayout/components/ResponsiveWorkspace.module.css +423 -0
  294. package/src/demo/pages/ResponsiveLayout/components/ResponsiveWorkspace.tsx +398 -0
  295. package/src/demo/pages/Stack/basics/index.tsx +22 -0
  296. package/src/demo/pages/Stack/components/Stack.module.css +234 -0
  297. package/src/demo/pages/Stack/components/StackBasics.tsx +217 -0
  298. package/src/demo/pages/Stack/components/StackTablet.module.css +299 -0
  299. package/src/demo/pages/Stack/components/StackTablet.tsx +401 -0
  300. package/src/demo/pages/Stack/tablet/index.tsx +22 -0
  301. package/src/demo/pages/StickyHeader/basics/index.tsx +17 -0
  302. package/src/demo/pages/StickyHeader/components/StickyHeader.module.css +219 -0
  303. package/src/demo/pages/StickyHeader/components/StickyHeaderBasics.tsx +103 -0
  304. package/src/demo/routes.tsx +193 -0
  305. package/src/demo/styles/animations.css +68 -0
  306. package/src/demo/styles/stack-themes.css +35 -0
  307. package/src/demo/utils/createPanelView.tsx +58 -0
  308. package/src/floating/index.ts +24 -0
  309. package/src/grid/index.ts +75 -0
  310. package/src/hooks/ContentCacheContext.tsx +87 -0
  311. package/src/hooks/gesture/presets.spec.ts +86 -0
  312. package/src/hooks/gesture/presets.ts +95 -0
  313. package/src/hooks/gesture/testing/createGestureSimulator.spec.ts +237 -0
  314. package/src/hooks/gesture/testing/createGestureSimulator.ts +310 -0
  315. package/src/hooks/gesture/thresholdValue.spec.ts +103 -0
  316. package/src/hooks/gesture/thresholdValue.ts +77 -0
  317. package/src/hooks/gesture/types.ts +290 -0
  318. package/src/hooks/gesture/useDirectionalLock.spec.ts +271 -0
  319. package/src/hooks/gesture/useDirectionalLock.ts +115 -0
  320. package/src/hooks/gesture/useEdgeSwipeInput.spec.ts +454 -0
  321. package/src/hooks/gesture/useEdgeSwipeInput.ts +131 -0
  322. package/src/hooks/gesture/useNativeGestureGuard.spec.ts +413 -0
  323. package/src/hooks/gesture/useNativeGestureGuard.ts +133 -0
  324. package/src/hooks/gesture/usePointerTracking.spec.ts +364 -0
  325. package/src/hooks/gesture/usePointerTracking.ts +134 -0
  326. package/src/hooks/gesture/useScrollBoundary.spec.ts +249 -0
  327. package/src/hooks/gesture/useScrollBoundary.ts +113 -0
  328. package/src/hooks/gesture/useSwipeInput.spec.ts +592 -0
  329. package/src/hooks/gesture/useSwipeInput.ts +310 -0
  330. package/src/hooks/gesture/utils.spec.ts +152 -0
  331. package/src/hooks/gesture/utils.ts +87 -0
  332. package/src/hooks/useAnimatedVisibility.spec.ts +257 -0
  333. package/src/hooks/useAnimatedVisibility.ts +146 -0
  334. package/src/hooks/useAnimationFrame.ts +200 -0
  335. package/src/hooks/useCSSMatrix.spec.ts +214 -0
  336. package/src/hooks/useCSSMatrix.ts +262 -0
  337. package/src/hooks/useClonedElementPreview.ts +28 -0
  338. package/src/hooks/useContainerScroll.ts +78 -0
  339. package/src/hooks/useContentCache.spec.tsx +232 -0
  340. package/src/hooks/useContentCache.tsx +127 -0
  341. package/src/hooks/useDocumentPointerEvents.ts +137 -0
  342. package/src/hooks/useDocumentScroll.ts +41 -0
  343. package/src/hooks/useEffectEvent.ts +40 -0
  344. package/src/hooks/useElementComponentWrapper.tsx +63 -0
  345. package/src/hooks/useIntersectionObserver.tsx +125 -0
  346. package/src/hooks/useIsomorphicLayoutEffect.ts +29 -0
  347. package/src/hooks/useResizeObserver.tsx +81 -0
  348. package/src/hooks/useScrollContainer.ts +79 -0
  349. package/src/hooks/useSnapAnimation.ts +128 -0
  350. package/src/hooks/useSwipeContentTransform.spec.ts +133 -0
  351. package/src/hooks/useSwipeContentTransform.ts +235 -0
  352. package/src/hooks/useTransitionState.ts +95 -0
  353. package/src/index.tsx +88 -0
  354. package/src/modules/grid/GridLayoutContext.tsx +57 -0
  355. package/src/modules/grid/LayerInstanceContext.tsx +56 -0
  356. package/src/modules/grid/resizeHandles.ts +157 -0
  357. package/src/modules/grid/trackUtils.ts +146 -0
  358. package/src/modules/grid/useGridPlacements.ts +143 -0
  359. package/src/modules/grid/useGridTracks.ts +156 -0
  360. package/src/modules/grid/useLayerDragHandle.ts +16 -0
  361. package/src/modules/grid/useLayerInteractions.tsx +850 -0
  362. package/src/modules/keybindings/KeybindingsProvider.tsx +111 -0
  363. package/src/modules/panels/dom/DomRegistry.tsx +94 -0
  364. package/src/modules/panels/index.ts +45 -0
  365. package/src/modules/panels/interactions/InteractionsContext.test.tsx +330 -0
  366. package/src/modules/panels/interactions/InteractionsContext.tsx +394 -0
  367. package/src/modules/panels/interactions/dnd.ts +28 -0
  368. package/src/modules/panels/keybindings/KeybindingsInstaller.tsx +15 -0
  369. package/src/modules/panels/layout/adapter.ts +124 -0
  370. package/src/modules/panels/rendering/ContentRegistry.spec.tsx +304 -0
  371. package/src/modules/panels/rendering/ContentRegistry.tsx +205 -0
  372. package/src/modules/panels/rendering/GroupContainer.tsx +65 -0
  373. package/src/modules/panels/rendering/RenderBridge.tsx +115 -0
  374. package/src/modules/panels/rendering/RenderContext.tsx +31 -0
  375. package/src/modules/panels/state/PanelSplitHandles.tsx +147 -0
  376. package/src/modules/panels/state/PanelSystemContext.splitLimits.spec.tsx +50 -0
  377. package/src/modules/panels/state/PanelSystemContext.tsx +289 -0
  378. package/src/modules/panels/state/StateContext.tsx +12 -0
  379. package/src/modules/panels/state/cleanup.ts +37 -0
  380. package/src/modules/panels/state/commands.ts +53 -0
  381. package/src/modules/panels/state/focus/Context.tsx +25 -0
  382. package/src/modules/panels/state/focus/logic.ts +57 -0
  383. package/src/modules/panels/state/groups/Context.tsx +25 -0
  384. package/src/modules/panels/state/groups/logic.ts +105 -0
  385. package/src/modules/panels/state/splitLimits.spec.ts +46 -0
  386. package/src/modules/panels/state/splitLimits.ts +90 -0
  387. package/src/modules/panels/state/state.spec.ts +49 -0
  388. package/src/modules/panels/state/tree/Context.tsx +24 -0
  389. package/src/modules/panels/state/tree/logic.spec.ts +34 -0
  390. package/src/modules/panels/state/tree/logic.ts +138 -0
  391. package/src/modules/panels/state/types.ts +142 -0
  392. package/src/modules/panels/system/PanelSystem.empty-tabbar.spec.tsx +53 -0
  393. package/src/modules/panels/system/PanelSystem.tab-click-activates.spec.tsx +44 -0
  394. package/src/modules/panels/system/PanelSystem.tab-reorder.spec.tsx +64 -0
  395. package/src/modules/panels/system/PanelSystem.tabs-no-dup.spec.tsx +57 -0
  396. package/src/modules/panels/system/PanelSystem.tsx +206 -0
  397. package/src/modules/pivot/PivotContent.spec.tsx +179 -0
  398. package/src/modules/pivot/PivotContent.tsx +77 -0
  399. package/src/modules/pivot/SwipePivotContent.debug.tmp.tsx +237 -0
  400. package/src/modules/pivot/SwipePivotContent.position.spec.tsx +167 -0
  401. package/src/modules/pivot/SwipePivotContent.spec.tsx +464 -0
  402. package/src/modules/pivot/SwipePivotContent.test.tsx +502 -0
  403. package/src/modules/pivot/SwipePivotContent.tsx +197 -0
  404. package/src/modules/pivot/SwipePivotTabBar.spec.tsx +865 -0
  405. package/src/modules/pivot/SwipePivotTabBar.tsx +523 -0
  406. package/src/modules/pivot/index.ts +8 -0
  407. package/src/modules/pivot/scaleInputState.spec.ts +210 -0
  408. package/src/modules/pivot/scaleInputState.ts +66 -0
  409. package/src/modules/pivot/types.ts +139 -0
  410. package/src/modules/pivot/usePivot.spec.ts +621 -0
  411. package/src/modules/pivot/usePivot.spec.tsx +186 -0
  412. package/src/modules/pivot/usePivot.tsx +345 -0
  413. package/src/modules/pivot/usePivotSwipeInput.spec.ts +649 -0
  414. package/src/modules/pivot/usePivotSwipeInput.ts +136 -0
  415. package/src/modules/resizer/useResizeDrag.ts +94 -0
  416. package/src/modules/stack/StackContent.spec.tsx +264 -0
  417. package/src/modules/stack/StackContent.tsx +111 -0
  418. package/src/modules/stack/SwipeStackContent.spec.tsx +1277 -0
  419. package/src/modules/stack/SwipeStackContent.tsx +356 -0
  420. package/src/modules/stack/SwipeStackOutlet.spec.tsx +252 -0
  421. package/src/modules/stack/SwipeStackOutlet.tsx +221 -0
  422. package/src/modules/stack/computeStackContentState.spec.ts +281 -0
  423. package/src/modules/stack/computeStackContentState.ts +304 -0
  424. package/src/modules/stack/computeSwipeStackTransform.spec.ts +186 -0
  425. package/src/modules/stack/computeSwipeStackTransform.ts +145 -0
  426. package/src/modules/stack/types.ts +226 -0
  427. package/src/modules/stack/useStackAnimationState.spec.ts +186 -0
  428. package/src/modules/stack/useStackAnimationState.ts +138 -0
  429. package/src/modules/stack/useStackNavigation.spec.ts +477 -0
  430. package/src/modules/stack/useStackNavigation.tsx +336 -0
  431. package/src/modules/stack/useStackSwipeInput.spec.ts +276 -0
  432. package/src/modules/stack/useStackSwipeInput.ts +139 -0
  433. package/src/modules/window/useDrawerState.ts +81 -0
  434. package/src/modules/window/useFloatingState.spec.ts +252 -0
  435. package/src/modules/window/useFloatingState.ts +141 -0
  436. package/src/panels/index.ts +119 -0
  437. package/src/pivot/index.ts +19 -0
  438. package/src/resizer/index.ts +68 -0
  439. package/src/stack/index.ts +91 -0
  440. package/src/sticky-header/StickyArea.tsx +221 -0
  441. package/src/sticky-header/index.ts +18 -0
  442. package/src/sticky-header/types.ts +68 -0
  443. package/src/types.ts +323 -0
  444. package/src/utils/CSSMatrix.ts +321 -0
  445. package/src/utils/css.ts +65 -0
  446. package/src/utils/dialogUtils.ts +43 -0
  447. package/src/utils/math.ts +18 -0
  448. package/src/utils/polyfills/createDialogPolyfill.ts +18 -0
  449. package/src/utils/typedActions.ts +103 -0
  450. package/src/vite-env.d.ts +6 -0
  451. package/src/window/index.ts +67 -0
  452. package/dist/FloatingPanelFrame-6W5OexYe.js.map +0 -1
  453. package/dist/FloatingPanelFrame-D9Cp2al1.cjs.map +0 -1
  454. package/dist/GridLayout-BzrIDrC9.js +0 -1465
  455. package/dist/GridLayout-BzrIDrC9.js.map +0 -1
  456. package/dist/GridLayout-ZrOhoLLB.cjs +0 -2
  457. package/dist/GridLayout-ZrOhoLLB.cjs.map +0 -1
  458. package/dist/sticky-header/StickyHeader.d.ts +0 -53
  459. package/dist/styles-CA2_zLZt.js +0 -52
  460. package/dist/styles-CA2_zLZt.js.map +0 -1
  461. package/dist/styles-PsqGOEJP.cjs +0 -2
  462. package/dist/styles-PsqGOEJP.cjs.map +0 -1
  463. package/dist/usePivot-BS-DGfwd.cjs +0 -2
  464. package/dist/usePivot-BS-DGfwd.cjs.map +0 -1
  465. package/dist/usePivot-BvOGxLQQ.js +0 -124
  466. package/dist/usePivot-BvOGxLQQ.js.map +0 -1
package/dist/stack.js ADDED
@@ -0,0 +1,980 @@
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";
11
+ }
12
+ function ie(r) {
13
+ const {
14
+ displayMode: e,
15
+ depth: t,
16
+ navigationDepth: s,
17
+ isActive: a,
18
+ isAnimatingOut: c,
19
+ isRevealing: u,
20
+ revealDepth: i
21
+ } = r;
22
+ return e === "overlay" ? a || c || u && t === i ? "visible" : "hidden" : t <= s || c ? "visible" : "hidden";
23
+ }
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)
27
+ return `translateX(${0.3 * 100}%)`;
28
+ if (u)
29
+ return "translateX(0)";
30
+ if (i)
31
+ switch (s) {
32
+ case "overlay":
33
+ return "translateX(0)";
34
+ case "slide":
35
+ return "translateX(-30%)";
36
+ case "stack": {
37
+ const f = (t - e) * -5, p = 1 - (t - e) * 0.05;
38
+ return `translateX(${f}%) scale(${p})`;
39
+ }
40
+ }
41
+ return "translateX(100%)";
42
+ }
43
+ function ue(r, e, t) {
44
+ return e === void 0 || e <= 0 || !t ? r : `translateX(${e * 100}%)`;
45
+ }
46
+ function le(r) {
47
+ if (r === "css")
48
+ return `transform ${Q} ${ee}`;
49
+ }
50
+ function fe(r) {
51
+ const {
52
+ depth: e,
53
+ isActive: t,
54
+ wasActive: s,
55
+ currentAnimationType: a,
56
+ displayMode: c,
57
+ transitionMode: u,
58
+ navigationState: i,
59
+ swipeProgress: f
60
+ } = r, o = ce({
61
+ wasActive: s,
62
+ isActive: t,
63
+ transitionMode: u
64
+ }) ?? a, d = o === "pop", m = ie({
65
+ displayMode: c,
66
+ depth: e,
67
+ navigationDepth: i.depth,
68
+ isActive: t,
69
+ isAnimatingOut: d,
70
+ isRevealing: i.isRevealing,
71
+ revealDepth: i.revealDepth
72
+ }), g = ae({
73
+ depth: e,
74
+ activeDepth: i.depth,
75
+ displayMode: c,
76
+ isRevealing: i.isRevealing,
77
+ revealDepth: i.revealDepth
78
+ }), T = ue(g, f, t), v = (() => {
79
+ if (u === "css") {
80
+ if (o === "push")
81
+ return te;
82
+ if (o === "pop")
83
+ return ne;
84
+ }
85
+ })(), h = le(u);
86
+ return {
87
+ nextAnimationType: o,
88
+ visibility: m,
89
+ transform: T,
90
+ animation: v,
91
+ transition: h,
92
+ zIndex: e,
93
+ pointerEvents: t ? "auto" : "none"
94
+ };
95
+ }
96
+ const de = {
97
+ position: "absolute",
98
+ inset: 0,
99
+ width: "100%",
100
+ 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({
104
+ depth: e,
105
+ isActive: t,
106
+ wasActive: p.current,
107
+ currentAnimationType: o,
108
+ displayMode: s,
109
+ transitionMode: a,
110
+ navigationState: c,
111
+ swipeProgress: u
112
+ });
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
126
+ };
127
+ return m.animation !== void 0 && (h.animation = m.animation), m.transition !== void 0 && (h.transition = m.transition), h;
128
+ }, [
129
+ m.transform,
130
+ m.pointerEvents,
131
+ m.zIndex,
132
+ m.visibility,
133
+ m.animation,
134
+ m.transition
135
+ ]), v = /* @__PURE__ */ O(
136
+ "div",
137
+ {
138
+ ref: f,
139
+ "data-stack-content": r,
140
+ "data-depth": e,
141
+ "data-active": t ? "true" : "false",
142
+ style: T,
143
+ onAnimationEnd: g,
144
+ children: i
145
+ }
146
+ );
147
+ return a === "none" ? /* @__PURE__ */ O(n.Activity, { mode: t ? "visible" : "hidden", children: v }) : v;
148
+ }
149
+ ), V = n.createContext(null), me = n.memo(() => {
150
+ const r = n.useContext(V);
151
+ if (!r)
152
+ 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,
161
+ {
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
169
+ },
170
+ i.id
171
+ )) });
172
+ });
173
+ function Ze(r) {
174
+ const {
175
+ panels: e,
176
+ 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;
218
+ return {
219
+ "data-stack-panel": l,
220
+ "data-depth": y,
221
+ "data-active": A ? "true" : "false",
222
+ "aria-hidden": !A
223
+ };
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";
226
+ return {
227
+ onClick: () => v(-1),
228
+ disabled: !l,
229
+ "aria-label": A
230
+ };
231
+ }, [o, g, e, v]), I = n.useMemo(
232
+ () => ({
233
+ position: "relative",
234
+ width: "100%",
235
+ height: "100%",
236
+ overflow: "hidden"
237
+ }),
238
+ []
239
+ ), C = n.useRef({
240
+ panels: e,
241
+ navigationState: d,
242
+ displayMode: s,
243
+ transitionMode: a
244
+ });
245
+ C.current = {
246
+ panels: e,
247
+ navigationState: d,
248
+ displayMode: s,
249
+ transitionMode: a
250
+ };
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,
257
+ []
258
+ ), N = n.useMemo(() => e.map((l) => l.id), [e]), { getCachedContent: b } = se({
259
+ resolveContent: _,
260
+ validIds: N
261
+ }), R = n.useMemo(
262
+ () => ({
263
+ getState: () => C.current,
264
+ subscribe: (l) => (L.current.add(l), () => L.current.delete(l)),
265
+ getCachedContent: b
266
+ }),
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]);
272
+ 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
287
+ };
288
+ }
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) {
603
+ const {
604
+ containerRef: e,
605
+ 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);
612
+ },
613
+ [s, t]
614
+ ), { isEdgeGesture: p, state: o, containerProps: d } = ke({
615
+ containerRef: e,
616
+ edge: s,
617
+ edgeWidth: a,
618
+ enabled: c && t.canGo(-1),
619
+ // Only enable if can go back
620
+ onSwipeEnd: f
621
+ });
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({
626
+ containerRef: e,
627
+ active: p,
628
+ preventEdgeBack: !0,
629
+ preventOverscroll: !0,
630
+ edgeWidth: a
631
+ }), g = n.useMemo(() => {
632
+ if (!u || !e.current)
633
+ return 0;
634
+ const h = e.current.clientWidth;
635
+ if (h === 0)
636
+ return 0;
637
+ const w = u.displacement.x;
638
+ if (s === "left" && w <= 0 || s === "right" && w >= 0)
639
+ 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]
645
+ );
646
+ 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
689
+ };
690
+ }
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) {
696
+ const {
697
+ elementRef: e,
698
+ 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)
712
+ return;
713
+ const C = Ce(I.from, I.to, D);
714
+ d.current = C, M.style.transform = `${X(c)}(${C}px)`;
715
+ },
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({
720
+ duration: u,
721
+ easing: j.easeOutExpo,
722
+ onFrame: w,
723
+ onComplete: E
724
+ });
725
+ return n.useLayoutEffect(() => {
726
+ if (a) {
727
+ P(), m.current = null, v.current = null;
728
+ return;
729
+ }
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();
735
+ return;
736
+ }
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)
742
+ 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
749
+ };
750
+ }
751
+ const q = -0.3;
752
+ function Me(r) {
753
+ return Math.max(0, r);
754
+ }
755
+ function Le(r, e, t = q) {
756
+ if (e <= 0)
757
+ 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;
760
+ }
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));
764
+ }
765
+ function _e(r, e) {
766
+ return r === e ? "active" : r === e - 1 ? "behind" : "hidden";
767
+ }
768
+ const Ne = 300, Fe = 0.05, Ue = 0.1, Be = {
769
+ position: "absolute",
770
+ inset: 0,
771
+ width: "100%",
772
+ 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(
774
+ ({
775
+ id: r,
776
+ depth: e,
777
+ navigationDepth: t,
778
+ isActive: s,
779
+ inputState: a,
780
+ containerSize: c,
781
+ 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
789
+ }) => {
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) {
794
+ case "active":
795
+ return 0;
796
+ case "behind":
797
+ return i * c;
798
+ case "hidden":
799
+ return c;
800
+ }
801
+ }, [E, i, c]), P = n.useMemo(() => {
802
+ if (h <= 0)
803
+ return 0;
804
+ switch (E) {
805
+ case "active":
806
+ return Me(h);
807
+ case "behind": {
808
+ const S = Le(h, c, i), l = i * c;
809
+ return S - l;
810
+ }
811
+ case "hidden":
812
+ return 0;
813
+ }
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,
822
+ axis: u,
823
+ animationDuration: f,
824
+ containerSize: c,
825
+ // Animate when targetPx changes (button navigation)
826
+ animateOnTargetChange: !0,
827
+ // For push animation: start from off-screen
828
+ initialPx: D
829
+ }), I = Oe({
830
+ 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")
837
+ return 1;
838
+ const S = t - e;
839
+ if (E === "active")
840
+ return 1;
841
+ if (E === "behind") {
842
+ const l = 1 - S * Fe;
843
+ return l + C * (1 - l);
844
+ }
845
+ 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")
853
+ 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})`);
858
+ } else
859
+ S.style.transform = `scale(${L})`;
860
+ }, [L, d]);
861
+ const N = o && e > 0 && E === "active", b = n.useMemo(
862
+ () => ({
863
+ ...Be,
864
+ pointerEvents: s ? "auto" : "none",
865
+ willChange: "transform",
866
+ zIndex: e,
867
+ visibility: I ? "visible" : "hidden",
868
+ boxShadow: N ? Xe : void 0
869
+ }),
870
+ [s, e, I, N]
871
+ ), R = n.useMemo(() => _ <= 0 ? null : {
872
+ position: "absolute",
873
+ inset: 0,
874
+ backgroundColor: `rgba(0, 0, 0, ${_})`,
875
+ pointerEvents: "none",
876
+ zIndex: 1
877
+ }, [_]);
878
+ return /* @__PURE__ */ J(
879
+ "div",
880
+ {
881
+ ref: T,
882
+ "data-stack-content": r,
883
+ "data-depth": e,
884
+ "data-active": s ? "true" : "false",
885
+ "data-role": E,
886
+ style: b,
887
+ children: [
888
+ g,
889
+ R != null && /* @__PURE__ */ O("div", { style: R, "data-dimming-overlay": !0 })
890
+ ]
891
+ }
892
+ );
893
+ }
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);
898
+ 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 });
902
+ }
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 });
906
+ }
907
+ return u.sort((i, f) => i.depth - f.depth);
908
+ }
909
+ const Qe = n.memo(
910
+ ({
911
+ panels: r,
912
+ navigationState: e,
913
+ inputState: t,
914
+ containerSize: s,
915
+ getCachedContent: a,
916
+ behindOffset: c,
917
+ animateOnMount: u = !1,
918
+ animationDuration: i = Ge,
919
+ showShadow: f,
920
+ displayMode: p,
921
+ showDimming: o
922
+ }) => {
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);
934
+ }
935
+ }
936
+ }, [e.depth, e.stack, i]);
937
+ const v = n.useMemo(
938
+ () => He(r, e, d),
939
+ [r, e, d]
940
+ ), h = n.useMemo(
941
+ () => ({
942
+ position: "relative",
943
+ width: "100%",
944
+ height: "100%",
945
+ overflow: "hidden"
946
+ }),
947
+ []
948
+ );
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,
953
+ {
954
+ id: w.id,
955
+ depth: E,
956
+ navigationDepth: e.depth,
957
+ isActive: x,
958
+ inputState: t,
959
+ containerSize: s,
960
+ behindOffset: c,
961
+ animateOnMount: u,
962
+ animationDuration: i,
963
+ showShadow: f,
964
+ displayMode: p,
965
+ showDimming: o,
966
+ children: P
967
+ },
968
+ w.id
969
+ );
970
+ }) });
971
+ }
972
+ );
973
+ export {
974
+ pe as StackContent,
975
+ We as SwipeStackContent,
976
+ Qe as SwipeStackOutlet,
977
+ Ze as useStackNavigation,
978
+ Je as useStackSwipeInput
979
+ };
980
+ //# sourceMappingURL=stack.js.map