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
@@ -1,3 +1,3 @@
1
- "use strict";const b=require("react/jsx-runtime"),Nt=require("react"),A=require("./GridLayout-B4VRsC0r.cjs"),J=require("./useEffectEvent-huSsGUnl.cjs"),Q=require("./ResizeHandle-CScipO5l.cjs"),k=require("./styles-qf6ptVLD.cjs"),st=require("./useIsomorphicLayoutEffect-DGRNF4Lf.cjs"),Bt=require("react-dom"),$t=require("./useContentCache-DqXtLrLs.cjs");function Lt(t){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const r in t)if(r!=="default"){const n=Object.getOwnPropertyDescriptor(t,r);Object.defineProperty(e,r,n.get?n:{enumerable:!0,get:()=>t[r]})}}return e.default=t,Object.freeze(e)}const l=Lt(Nt),ft=l.createContext(null),Ht=()=>{const t=l.useContext(ft);if(!t)throw new Error("useKeybindings must be used within KeybindingsProvider");return t},zt=t=>{const e=[];t.metaKey&&e.push("Mod"),t.ctrlKey&&e.push("Ctrl"),t.altKey&&e.push("Alt"),t.shiftKey&&e.push("Shift");const r=t.key.length===1?t.key.toUpperCase():t.key;return e.push(r),e.join("-")},Xt=({children:t,configure:e})=>{const r=l.useRef({}),n=l.useCallback((c,i)=>{r.current={...r.current,[c]:i}},[]),o=l.useCallback(c=>{const i={...r.current};delete i[c],r.current=i},[]);l.useEffect(()=>{const c=i=>{const u=zt(i),a=r.current[u];a&&a(i)};return window.addEventListener("keydown",c),()=>{window.removeEventListener("keydown",c)}},[]);const s=l.useMemo(()=>({register:n,unregister:o}),[n,o]);return l.useEffect(()=>{e&&e(s)},[s,e]),b.jsx(ft.Provider,{value:s,children:t})},Ft=(t,e)=>{t.register("Mod-\\",r=>{r.preventDefault(),e.splitFocused("vertical")}),t.register("Mod-Shift-\\",r=>{r.preventDefault(),e.splitFocused("horizontal")});for(const r of[1,2,3,4,5,6,7,8,9])t.register(`Mod-${String(r)}`,n=>{n.preventDefault(),e.focusGroupIndex(r)});t.register("Alt-ArrowRight",r=>{r.preventDefault(),e.focusNextGroup()}),t.register("Alt-ArrowLeft",r=>{r.preventDefault(),e.focusPrevGroup()})},Yt=t=>t.type==="group",bt=(t,e={x:0,y:0,w:100,h:100})=>{const r=new Map,n=(o,s)=>{if(Yt(o)){r.set(o.groupId,s);return}if(o.direction==="vertical"){const u=s.w*o.ratio,a=s.w-u;n(o.a,{x:s.x,y:s.y,w:u,h:s.h}),n(o.b,{x:s.x+u,y:s.y,w:a,h:s.h});return}const c=s.h*o.ratio,i=s.h-c;n(o.a,{x:s.x,y:s.y,w:s.w,h:c}),n(o.b,{x:s.x,y:s.y+c,w:s.w,h:i})};return n(t,e),r},qt=(t,e)=>{const r=bt(t.tree),n={areas:[["root"]],rows:[{size:"1fr"}],columns:[{size:"1fr"}],gap:"0px",style:{position:"relative"}},o=Array.from(r.entries()).map(([s,c])=>{const i={position:"absolute",left:`${c.x}%`,top:`${c.y}%`,width:`${c.w}%`,height:`${c.h}%`,overflow:"hidden",display:"flex",flexDirection:"column"};return{id:s,positionMode:"absolute",style:i,component:e(s)}});return{config:n,layers:o}},Wt=(t,e,r)=>{const n=bt(t.tree),o=Array.from(new Set(Array.from(n.values()).flatMap(g=>[g.x,g.x+g.w]))).sort((g,v)=>g-v),s=Array.from(new Set(Array.from(n.values()).flatMap(g=>[g.y,g.y+g.h]))).sort((g,v)=>g-v),c=o.slice(1).map((g,v)=>`${g-o[v]}fr`),i=s.slice(1).map((g,v)=>`${g-s[v]}fr`),u=c.map(g=>({size:g,resizable:r})),a=i.map(g=>({size:g,resizable:r})),d=(g,v,x,y)=>{for(const[f,I]of n.entries())if(g>=I.x&&v<=I.x+I.w&&x>=I.y&&y<=I.y+I.h)return f;return"."},h=[];for(let g=0;g<s.length-1;g+=1){const v=[];for(let x=0;x<o.length-1;x+=1)v.push(d(o[x],o[x+1],s[g],s[g+1]));h.push(v)}const m={areas:h,rows:a,columns:u,gap:"0px"},w=Array.from(n.keys()).map(g=>({id:g,gridArea:g,component:e(g)}));return{config:m,layers:w}},ht=l.createContext(null),Kt=()=>{const t=l.useContext(ht);if(!t)throw new Error("usePanelRenderContext must be used within PanelRenderProvider");return t},Ut=({value:t,children:e})=>b.jsx(ht.Provider,{value:t,children:e}),gt=l.createContext(null),mt=()=>{const t=l.useContext(gt);if(!t)throw new Error("useDomRegistry must be used within DomRegistryProvider");return t},Vt=({children:t})=>{const e=l.useRef(new Map),r=l.useCallback(u=>{const a=e.current.get(u);if(a)return a;const d={group:null,tabbar:null,content:null};return e.current.set(u,d),d},[]),n=l.useCallback((u,a)=>{const d=r(u);if(d.group=a,a===null){const h=e.current.get(u);(h?h.tabbar===null&&h.content===null:!1)&&e.current.delete(u)}},[r]),o=l.useCallback((u,a)=>{const d=r(u);if(d.tabbar=a,a===null){const h=e.current.get(u);(h?h.group===null&&h.content===null:!1)&&e.current.delete(u)}},[r]),s=l.useCallback((u,a)=>{const d=r(u);if(d.content=a,a===null){const h=e.current.get(u);(h?h.group===null&&h.tabbar===null:!1)&&e.current.delete(u)}},[r]),c=l.useCallback(()=>e.current,[]),i=l.useMemo(()=>({setGroupEl:n,setTabbarEl:o,setContentEl:s,getAll:c}),[n,o,s,c]);return b.jsx(gt.Provider,{value:i,children:t})},Zt={display:"flex",flexDirection:"column",width:"100%",height:"100%"},Jt={flex:"1 1 auto",minWidth:0,minHeight:0,position:"relative",overflow:"hidden"};function Qt(t,e,r,n){return t?l.cloneElement(t,r,n):e?b.jsx(e,{...r,children:n}):b.jsx("div",{...r,children:n})}function te(t,e,r,n){return t?l.cloneElement(t,r,n):e?b.jsx(e,{...r,children:n}):b.jsx("div",{...r,children:n})}const ee=({group:t,tabbar:e,content:r,onContentPointerDown:n,groupRef:o,contentRef:s,component:c,element:i,contentComponent:u,contentElement:a})=>{const d={ref:o,style:Zt,"data-group-id":t.id},m=Qt(a,u,{ref:s,style:Jt,"data-dnd-zone":"content",onPointerDown:n},r),w=b.jsxs(b.Fragment,{children:[e,m]});return te(i,c,d,w)},it=l.memo(ee,(t,e)=>t.group.id!==e.group.id||t.group.activeTabId!==e.group.activeTabId||t.group.tabs.length!==e.group.tabs.length?!1:t.group.tabs===e.group.tabs);it.displayName="PanelGroupView";const q=(t,e,r)=>{const n=t.left,o=t.top,s=t.width,c=t.height,i=e-n,u=r-o,a=s/3,d=c/3;return i>a&&i<s-a&&u>d&&u<c-d?"center":i<u&&i<s-i&&u<c-u?"left":s-i<u&&s-i<i&&u<c-u?"right":u<i&&u<c-u&&i<s-i?"top":"bottom"};function D(t,e){if(!e){const n=(()=>({type:t}));return Object.defineProperty(n,"type",{value:t,writable:!1,enumerable:!0}),n}const r=((...n)=>{const o=e(...n);return typeof o>"u"?{type:t}:{type:t,payload:o}});return Object.defineProperty(r,"type",{value:t,writable:!1,enumerable:!0}),r}const re=(t,e)=>{const r={};return Object.keys(t).forEach(n=>{const o=t[n];r[n]=((...s)=>{const c=o(...s);return e(c),c})}),r},vt=(t,e)=>{const r={};return Object.keys(e).forEach(n=>{const o=e[n];if(!o)return;const s=t[n];if(!s)throw new Error(`Missing action creator for key "${String(n)}"`);r[s.type]=o}),r},xt={phase:{kind:"idle"},suggest:null,pointer:null,tabbarHover:null,draggingTabElement:null},j={startContent:D("START_CONTENT",t=>t),startTab:D("START_TAB",t=>t),setSuggest:D("SET_SUGGEST",t=>t),setPointer:D("SET_POINTER",t=>t),setTabbarHover:D("SET_TABBAR_HOVER",t=>t),reset:D("RESET")},ne=vt(j,{startContent:(t,e)=>({phase:{kind:"content",startX:e.payload.x,startY:e.payload.y,fromGroupId:e.payload.groupId,tabId:e.payload.tabId,cache:e.payload.cache},suggest:null,pointer:null,tabbarHover:null,draggingTabElement:null}),startTab:(t,e)=>({phase:{kind:"tab",startX:e.payload.x,startY:e.payload.y,fromGroupId:e.payload.groupId,tabId:e.payload.tabId,cache:e.payload.cache},suggest:null,pointer:null,tabbarHover:null,draggingTabElement:e.payload.element}),setSuggest:(t,e)=>({...t,suggest:e.payload}),setPointer:(t,e)=>({...t,pointer:e.payload}),setTabbarHover:(t,e)=>({...t,tabbarHover:e.payload}),reset:()=>xt}),oe=(t,e)=>{const r=ne[e.type];return r?r(t,e,void 0):t},It=l.createContext(null),U=()=>{const t=l.useContext(It);if(!t)throw new Error("usePanelInteractions must be used within InteractionsProvider");return t},se=({containerRef:t,dragThresholdPx:e,onCommitContentDrop:r,onCommitTabDrop:n,isContentZoneAllowed:o,children:s})=>{const[c,i]=l.useReducer(oe,xt),u=mt(),a=l.useCallback(()=>{const x=Array.from(u.getAll().entries()),y=x.map(([p,G])=>({gid:p,el:G.content??G.group})).filter(p=>!!p.el).map(p=>({...p,rect:p.el.getBoundingClientRect()})),f=x.map(([p,G])=>({gid:p,el:G.tabbar})).filter(p=>!!p.el).map(p=>({...p,rect:p.el.getBoundingClientRect()})),I=x.map(([p,G])=>({gid:p,el:G.content??G.group})).filter(p=>!!p.el).map(p=>({...p,rect:p.el.getBoundingClientRect()}));return{groups:y,tabbars:f,contents:I}},[u]),d=J.useEffectEvent(x=>{if(!t.current)return;const f=x.clientX,I=x.clientY,p=c.phase;if(p.kind==="idle")return;const G=Math.abs(f-p.startX),E=Math.abs(I-p.startY);if(G<e&&E<e){c.phase.kind==="content"&&i(j.setSuggest(null)),i(j.setPointer(null)),i(j.setTabbarHover(null));return}if(i(j.setPointer({x:f,y:I})),p.kind==="content"){const S=p.cache.groups.find(({rect:T})=>f>=T.left&&f<=T.right&&I>=T.top&&I<=T.bottom);if(!S){i(j.setSuggest(null));return}const P=q(S.rect,f,I);if(o&&!o({targetGroupId:S.gid,zone:P})){i(j.setSuggest(null));return}i(j.setSuggest({rect:S.rect,zone:P}));return}if(p.kind==="tab"){const S=p.cache.tabbars.find(({rect:C})=>f>=C.left&&f<=C.right&&I>=C.top&&I<=C.bottom);if(S){const O=Array.from(S.el.querySelectorAll("[role='tab']")).map(z=>z.getBoundingClientRect()),R=O.map(z=>z.left+z.width/2),_=R.findIndex(z=>f<z),N=_===-1?R.length:_,_t=O.length===0?S.rect.left+8:N===0?O[0].left:N===O.length?O[O.length-1].right:(O[N-1].right+O[N].left)/2;i(j.setTabbarHover({groupId:S.gid,index:N,rect:S.rect,insertX:_t}))}else i(j.setTabbarHover(null));const P=p.cache.contents.find(({rect:C})=>f>=C.left&&f<=C.right&&I>=C.top&&I<=C.bottom);if(!P){i(j.setSuggest(null));return}const T=q(P.rect,f,I);if(o&&!o({targetGroupId:P.gid,zone:T})){i(j.setSuggest(null));return}i(j.setSuggest({rect:P.rect,zone:T}))}}),h=J.useEffectEvent(x=>{const y=t.current,f=c;if(i(j.reset()),!y)return;const I=x.clientX,p=x.clientY;if(f.phase.kind==="idle")return;const G=Math.abs(I-f.phase.startX),E=Math.abs(p-f.phase.startY);if(!(G<e&&E<e)){if(f.phase.kind==="content"){const S=f.phase.cache.groups.find(({rect:C})=>I>=C.left&&I<=C.right&&p>=C.top&&p<=C.bottom);if(!S)return;const P=S.gid??null;if(!P)return;const T=q(S.rect,I,p);if(o&&!o({targetGroupId:P,zone:T}))return;r({fromGroupId:f.phase.fromGroupId,tabId:f.phase.tabId,targetGroupId:P,zone:T});return}if(f.phase.kind==="tab"){const S=f.phase.cache.tabbars.find(({rect:T})=>I>=T.left&&I<=T.right&&p>=T.top&&p<=T.bottom);if(S){const T=S.gid;if(!T)return;const O=Array.from(S.el.querySelectorAll("[role='tab']")).map(N=>{const Z=N.getBoundingClientRect();return Z.left+Z.width/2}),R=O.findIndex(N=>I<N),_=R===-1?O.length:R;n({fromGroupId:f.phase.fromGroupId,tabId:f.phase.tabId,targetGroupId:T,targetIndex:_});return}const P=f.phase.cache.contents.find(({rect:T})=>I>=T.left&&I<=T.right&&p>=T.top&&p<=T.bottom);if(P){const T=P.gid??null;if(!T)return;const C=q(P.rect,I,p);if(o&&!o({targetGroupId:T,zone:C}))return;r({fromGroupId:f.phase.fromGroupId,tabId:f.phase.tabId,targetGroupId:T,zone:C})}}}}),m=J.useEffectEvent(()=>{i(j.reset())});l.useEffect(()=>{if(c.phase.kind!=="idle")return window.addEventListener("pointermove",d),window.addEventListener("pointerup",h,{once:!0}),window.addEventListener("pointercancel",m,{once:!0}),()=>{window.removeEventListener("pointermove",d),window.removeEventListener("pointerup",h),window.removeEventListener("pointercancel",m)}},[c.phase.kind]);const w=l.useCallback((x,y,f)=>{if(f.button!==0)return;f.currentTarget.setPointerCapture(f.pointerId);const I=a();i(j.startContent({x:f.clientX,y:f.clientY,groupId:x,tabId:y,cache:I}))},[a]),g=l.useCallback((x,y,f)=>{if(f.button!==0)return;const I=f.currentTarget;I&&I.setPointerCapture(f.pointerId);const p=a();i(j.startTab({x:f.clientX,y:f.clientY,groupId:y,tabId:x,cache:p,element:I}))},[a]),v=l.useMemo(()=>({suggest:c.suggest,isTabDragging:c.phase.kind==="tab",draggingTabId:c.phase.kind==="tab"?c.phase.tabId:null,dragPointer:c.pointer,tabbarHover:c.tabbarHover,draggingTabElement:c.draggingTabElement,onStartContentDrag:w,onStartTabDrag:g}),[c.suggest,c.pointer,c.tabbarHover,c.phase,c.draggingTabElement,w,g]);return b.jsx(It.Provider,{value:v,children:s})},dt={display:"inline-flex",alignItems:"center",userSelect:"none"},ie=({groupId:t,tab:e,active:r,dragging:n,onClickTab:o,onStartDrag:s,onCloseTab:c,tabComponent:i,tabElement:u,onDoubleClick:a})=>{const d=l.useEffectEvent(()=>{o(e.id)}),h=l.useEffectEvent(v=>{s&&v.button===0&&s(e.id,t,v)}),m=()=>{const v=!!c;return b.jsx(l.Activity,{mode:v?"visible":"hidden",children:b.jsx("button",{type:"button","aria-label":`Close tab ${e.title}`,onClick:x=>{c&&(x.stopPropagation(),c(t,e.id))},style:{marginLeft:6},tabIndex:v?void 0:-1,disabled:!v,"aria-hidden":v?void 0:!0,children:"×"})})},w={role:"tab","aria-selected":r,tabIndex:r?0:-1,style:dt,onClick:d,onPointerDown:h,onDoubleClick:a,"data-tab-id":e.id,"data-active":r?"true":"false","data-dragging":n?"true":"false",children:b.jsxs(b.Fragment,{children:[b.jsx("span",{children:e.title}),m()]})},g={type:"button",role:"tab","aria-selected":r,tabIndex:r?0:-1,style:dt,onClick:()=>{o(e.id)},onPointerDown:v=>{s&&v.button===0&&s(e.id,t,v)},onDoubleClick:a,children:b.jsx("span",{children:e.title})};return u?u(g):i?b.jsx(i,{...g}):b.jsx("div",{...w})},ce={display:"flex",alignItems:"center"},ue={flex:"1 1 auto",alignSelf:"stretch"},ae=({group:t,onClickTab:e,onStartDrag:r,rootRef:n,component:o,element:s,tabComponent:c,tabElement:i,onAddTab:u,onCloseTab:a,doubleClickToAdd:d})=>{const{isTabDragging:h,draggingTabId:m}=U(),w=l.useRef(null),g=l.useCallback(p=>{if(w.current=p,!!n){if(typeof n=="function"){n(p);return}try{n.current=p}catch{}}},[n]),v=l.useEffectEvent(p=>{const G=w.current??p.currentTarget;if(!G)return;const E=Array.from(G.querySelectorAll('[role="tab"]'));if(E.length===0)return;const S=R=>{const _=Math.max(0,Math.min(R,E.length-1)),N=E[_];N&&N.focus()},P=document.activeElement,T=P?E.indexOf(P):E.findIndex(R=>R.getAttribute("data-tab-id")===t.activeTabId);if(p.key==="ArrowRight"){p.preventDefault();const R=T>=0?T+1:0;S(R>=E.length?0:R);return}if(p.key==="ArrowLeft"){p.preventDefault();const R=T>=0?T-1:E.length-1;S(R<0?E.length-1:R);return}if(p.key==="Home"){p.preventDefault(),S(0);return}if(p.key==="End"){p.preventDefault(),S(E.length-1);return}if(p.key==="Enter"||p.key===" "){p.preventDefault();const _=(T>=0?E[T]:null)?.getAttribute("data-tab-id")??null;_&&e(_);return}if(p.key==="Delete"||p.key==="Backspace"){if(a){p.preventDefault();const _=(T>=0?E[T]:null)?.getAttribute("data-tab-id")??null;_&&a(t.id,_)}return}const C=(p.ctrlKey?1:0)+(p.metaKey?1:0)>0,O=typeof p.key=="string"?p.key.toLowerCase():"";if(C&&O==="t"){u&&(p.preventDefault(),u(t.id));return}});l.useEffect(()=>{const p=w.current;if(!p)return;const G=p.querySelector(`[role="tab"][data-tab-id="${t.activeTabId}"]`);if(G===document.activeElement)return;!p.contains(document.activeElement)&&G&&G.focus()},[t.activeTabId]);const x={style:ce,role:"tablist","data-tabbar":"true","data-group-id":t.id,"data-dragging":h?"true":"false",onKeyDown:v},y=Q.useElementComponentWrapper({element:s,component:o}),f=()=>u?b.jsx("button",{type:"button","aria-label":"Add tab",onClick:()=>{u(t.id)},children:"+"}):null,I=l.useCallback(()=>{d&&u&&u(t.id)},[d,u,t.id]);return b.jsxs(y,{...x,ref:g,onDoubleClick:I,children:[t.tabs.map((p,G)=>b.jsx(ie,{groupId:t.id,tab:p,active:t.activeTabId===p.id,dragging:m===p.id,onClickTab:e,onStartDrag:r,onCloseTab:a,tabComponent:c,tabElement:i,onDoubleClick:E=>E.stopPropagation()},`${t.id}:${p.id}:${G}`)),b.jsx("span",{style:ue}),f()]})},le=({id:t,TabBarComponent:e,PanelGroupComponent:r})=>{const{getGroup:n,getGroupContent:o,onClickTab:s,onAddTab:c,onCloseTab:i,onStartTabDrag:u,doubleClickToAdd:a,registerContentContainer:d}=Kt(),{setGroupEl:h,setTabbarEl:m,setContentEl:w}=mt(),g=l.useCallback(G=>{h(t,G)},[t,h]),v=l.useCallback(G=>{w(t,G),d(t,G)},[t,w,d]),x=l.useCallback(G=>{m(t,G)},[t,m]),y=n(t);if(!y)return null;const f=o(t),I=e??ae,p=r??(G=>b.jsx(it,{...G}));return b.jsx(p,{group:y,tabbar:b.jsx(I,{rootRef:x,group:y,onClickTab:G=>s(t,G),onAddTab:c,onCloseTab:i,onStartDrag:(G,E,S)=>u(G,E,S),doubleClickToAdd:a}),content:f,groupRef:g,contentRef:v})},de=(t,e)=>{const r=new Array(16);for(let n=0;n<4;n++)for(let o=0;o<4;o++)r[n*4+o]=t[0+o]*e[n*4+0]+t[4+o]*e[n*4+1]+t[8+o]*e[n*4+2]+t[12+o]*e[n*4+3];return r},W=t=>{if(t.length!==16)throw new Error("Matrix must have exactly 16 values");const e=Object.freeze([...t]),r=n=>{const o=de(e,n);return W(o)};return Object.freeze({translate:(n=0,o=0,s=0)=>r([1,0,0,0,0,1,0,0,0,0,1,0,n,o,s,1]),translate3d:(n,o,s)=>r([1,0,0,0,0,1,0,0,0,0,1,0,n,o,s,1]),translateX:n=>r([1,0,0,0,0,1,0,0,0,0,1,0,n,0,0,1]),translateY:n=>r([1,0,0,0,0,1,0,0,0,0,1,0,0,n,0,1]),translateZ:n=>r([1,0,0,0,0,1,0,0,0,0,1,0,0,0,n,1]),scale:(n=1,o=1,s=1)=>r([n,0,0,0,0,o,0,0,0,0,s,0,0,0,0,1]),scale3d:(n,o,s)=>r([n,0,0,0,0,o,0,0,0,0,s,0,0,0,0,1]),scaleX:n=>r([n,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),scaleY:n=>r([1,0,0,0,0,n,0,0,0,0,1,0,0,0,0,1]),scaleZ:n=>r([1,0,0,0,0,1,0,0,0,0,n,0,0,0,0,1]),rotateX:n=>{const o=Math.cos(n),s=Math.sin(n);return r([1,0,0,0,0,o,s,0,0,-s,o,0,0,0,0,1])},rotateY:n=>{const o=Math.cos(n),s=Math.sin(n);return r([o,0,-s,0,0,1,0,0,s,0,o,0,0,0,0,1])},rotateZ:n=>{const o=Math.cos(n),s=Math.sin(n);return r([o,s,0,0,-s,o,0,0,0,0,1,0,0,0,0,1])},rotate:(n,o,s,c)=>{const i=Math.sqrt(o*o+s*s+c*c);if(i===0)return W(e);o/=i,s/=i,c/=i;const u=Math.cos(n),a=Math.sin(n),d=1-u;return r([d*o*o+u,d*o*s+a*c,d*o*c-a*s,0,d*o*s-a*c,d*s*s+u,d*s*c+a*o,0,d*o*c+a*s,d*s*c-a*o,d*c*c+u,0,0,0,0,1])},rotate3d:(n,o,s,c)=>{const i=Math.sqrt(n*n+o*o+s*s);if(i===0)return W(e);n/=i,o/=i,s/=i;const u=Math.cos(c),a=Math.sin(c),d=1-u;return r([d*n*n+u,d*n*o+a*s,d*n*s-a*o,0,d*n*o-a*s,d*o*o+u,d*o*s+a*n,0,d*n*s+a*o,d*o*s-a*n,d*s*s+u,0,0,0,0,1])},skew:(n=0,o=0)=>{const s=Math.tan(n),c=Math.tan(o);return r([1,c,0,0,s,1,0,0,0,0,1,0,0,0,0,1])},skewX:n=>{const o=Math.tan(n);return r([1,0,0,0,o,1,0,0,0,0,1,0,0,0,0,1])},skewY:n=>{const o=Math.tan(n);return r([1,o,0,0,0,1,0,0,0,0,1,0,0,0,0,1])},perspective:n=>{if(n===0)throw new Error("Perspective distance cannot be zero");return r([1,0,0,0,0,1,0,0,0,0,1,-1/n,0,0,0,1])},toCSS:()=>`matrix3d(${e.join(", ")})`,toArray:()=>e,toString:()=>[`[${e[0]}, ${e[4]}, ${e[8]}, ${e[12]}]`,`[${e[1]}, ${e[5]}, ${e[9]}, ${e[13]}]`,`[${e[2]}, ${e[6]}, ${e[10]}, ${e[14]}]`,`[${e[3]}, ${e[7]}, ${e[11]}, ${e[15]}]`].join(`
1
+ "use strict";const b=require("react/jsx-runtime"),Nt=require("react"),A=require("./GridLayout-DKTg_N61.cjs"),J=require("./useDocumentPointerEvents-DxDSOtip.cjs"),Q=require("./ResizeHandle-CBcAS918.cjs"),k=require("./styles-qf6ptVLD.cjs"),st=require("./useIsomorphicLayoutEffect-DGRNF4Lf.cjs"),Bt=require("react-dom"),$t=require("./useContentCache-DqXtLrLs.cjs");function Lt(t){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const r in t)if(r!=="default"){const n=Object.getOwnPropertyDescriptor(t,r);Object.defineProperty(e,r,n.get?n:{enumerable:!0,get:()=>t[r]})}}return e.default=t,Object.freeze(e)}const l=Lt(Nt),ft=l.createContext(null),Ht=()=>{const t=l.useContext(ft);if(!t)throw new Error("useKeybindings must be used within KeybindingsProvider");return t},zt=t=>{const e=[];t.metaKey&&e.push("Mod"),t.ctrlKey&&e.push("Ctrl"),t.altKey&&e.push("Alt"),t.shiftKey&&e.push("Shift");const r=t.key.length===1?t.key.toUpperCase():t.key;return e.push(r),e.join("-")},Xt=({children:t,configure:e})=>{const r=l.useRef({}),n=l.useCallback((c,i)=>{r.current={...r.current,[c]:i}},[]),o=l.useCallback(c=>{const i={...r.current};delete i[c],r.current=i},[]);l.useEffect(()=>{const c=i=>{const u=zt(i),a=r.current[u];a&&a(i)};return window.addEventListener("keydown",c),()=>{window.removeEventListener("keydown",c)}},[]);const s=l.useMemo(()=>({register:n,unregister:o}),[n,o]);return l.useEffect(()=>{e&&e(s)},[s,e]),b.jsx(ft.Provider,{value:s,children:t})},Ft=(t,e)=>{t.register("Mod-\\",r=>{r.preventDefault(),e.splitFocused("vertical")}),t.register("Mod-Shift-\\",r=>{r.preventDefault(),e.splitFocused("horizontal")});for(const r of[1,2,3,4,5,6,7,8,9])t.register(`Mod-${String(r)}`,n=>{n.preventDefault(),e.focusGroupIndex(r)});t.register("Alt-ArrowRight",r=>{r.preventDefault(),e.focusNextGroup()}),t.register("Alt-ArrowLeft",r=>{r.preventDefault(),e.focusPrevGroup()})},Yt=t=>t.type==="group",bt=(t,e={x:0,y:0,w:100,h:100})=>{const r=new Map,n=(o,s)=>{if(Yt(o)){r.set(o.groupId,s);return}if(o.direction==="vertical"){const u=s.w*o.ratio,a=s.w-u;n(o.a,{x:s.x,y:s.y,w:u,h:s.h}),n(o.b,{x:s.x+u,y:s.y,w:a,h:s.h});return}const c=s.h*o.ratio,i=s.h-c;n(o.a,{x:s.x,y:s.y,w:s.w,h:c}),n(o.b,{x:s.x,y:s.y+c,w:s.w,h:i})};return n(t,e),r},qt=(t,e)=>{const r=bt(t.tree),n={areas:[["root"]],rows:[{size:"1fr"}],columns:[{size:"1fr"}],gap:"0px",style:{position:"relative"}},o=Array.from(r.entries()).map(([s,c])=>{const i={position:"absolute",left:`${c.x}%`,top:`${c.y}%`,width:`${c.w}%`,height:`${c.h}%`,overflow:"hidden",display:"flex",flexDirection:"column"};return{id:s,positionMode:"absolute",style:i,component:e(s)}});return{config:n,layers:o}},Wt=(t,e,r)=>{const n=bt(t.tree),o=Array.from(new Set(Array.from(n.values()).flatMap(g=>[g.x,g.x+g.w]))).sort((g,v)=>g-v),s=Array.from(new Set(Array.from(n.values()).flatMap(g=>[g.y,g.y+g.h]))).sort((g,v)=>g-v),c=o.slice(1).map((g,v)=>`${g-o[v]}fr`),i=s.slice(1).map((g,v)=>`${g-s[v]}fr`),u=c.map(g=>({size:g,resizable:r})),a=i.map(g=>({size:g,resizable:r})),d=(g,v,x,y)=>{for(const[f,I]of n.entries())if(g>=I.x&&v<=I.x+I.w&&x>=I.y&&y<=I.y+I.h)return f;return"."},h=[];for(let g=0;g<s.length-1;g+=1){const v=[];for(let x=0;x<o.length-1;x+=1)v.push(d(o[x],o[x+1],s[g],s[g+1]));h.push(v)}const m={areas:h,rows:a,columns:u,gap:"0px"},w=Array.from(n.keys()).map(g=>({id:g,gridArea:g,component:e(g)}));return{config:m,layers:w}},ht=l.createContext(null),Kt=()=>{const t=l.useContext(ht);if(!t)throw new Error("usePanelRenderContext must be used within PanelRenderProvider");return t},Ut=({value:t,children:e})=>b.jsx(ht.Provider,{value:t,children:e}),gt=l.createContext(null),mt=()=>{const t=l.useContext(gt);if(!t)throw new Error("useDomRegistry must be used within DomRegistryProvider");return t},Vt=({children:t})=>{const e=l.useRef(new Map),r=l.useCallback(u=>{const a=e.current.get(u);if(a)return a;const d={group:null,tabbar:null,content:null};return e.current.set(u,d),d},[]),n=l.useCallback((u,a)=>{const d=r(u);if(d.group=a,a===null){const h=e.current.get(u);(h?h.tabbar===null&&h.content===null:!1)&&e.current.delete(u)}},[r]),o=l.useCallback((u,a)=>{const d=r(u);if(d.tabbar=a,a===null){const h=e.current.get(u);(h?h.group===null&&h.content===null:!1)&&e.current.delete(u)}},[r]),s=l.useCallback((u,a)=>{const d=r(u);if(d.content=a,a===null){const h=e.current.get(u);(h?h.group===null&&h.tabbar===null:!1)&&e.current.delete(u)}},[r]),c=l.useCallback(()=>e.current,[]),i=l.useMemo(()=>({setGroupEl:n,setTabbarEl:o,setContentEl:s,getAll:c}),[n,o,s,c]);return b.jsx(gt.Provider,{value:i,children:t})},Zt={display:"flex",flexDirection:"column",width:"100%",height:"100%"},Jt={flex:"1 1 auto",minWidth:0,minHeight:0,position:"relative",overflow:"hidden"};function Qt(t,e,r,n){return t?l.cloneElement(t,r,n):e?b.jsx(e,{...r,children:n}):b.jsx("div",{...r,children:n})}function te(t,e,r,n){return t?l.cloneElement(t,r,n):e?b.jsx(e,{...r,children:n}):b.jsx("div",{...r,children:n})}const ee=({group:t,tabbar:e,content:r,onContentPointerDown:n,groupRef:o,contentRef:s,component:c,element:i,contentComponent:u,contentElement:a})=>{const d={ref:o,style:Zt,"data-group-id":t.id},m=Qt(a,u,{ref:s,style:Jt,"data-dnd-zone":"content",onPointerDown:n},r),w=b.jsxs(b.Fragment,{children:[e,m]});return te(i,c,d,w)},it=l.memo(ee,(t,e)=>t.group.id!==e.group.id||t.group.activeTabId!==e.group.activeTabId||t.group.tabs.length!==e.group.tabs.length?!1:t.group.tabs===e.group.tabs);it.displayName="PanelGroupView";const q=(t,e,r)=>{const n=t.left,o=t.top,s=t.width,c=t.height,i=e-n,u=r-o,a=s/3,d=c/3;return i>a&&i<s-a&&u>d&&u<c-d?"center":i<u&&i<s-i&&u<c-u?"left":s-i<u&&s-i<i&&u<c-u?"right":u<i&&u<c-u&&i<s-i?"top":"bottom"};function D(t,e){if(!e){const n=(()=>({type:t}));return Object.defineProperty(n,"type",{value:t,writable:!1,enumerable:!0}),n}const r=((...n)=>{const o=e(...n);return typeof o>"u"?{type:t}:{type:t,payload:o}});return Object.defineProperty(r,"type",{value:t,writable:!1,enumerable:!0}),r}const re=(t,e)=>{const r={};return Object.keys(t).forEach(n=>{const o=t[n];r[n]=((...s)=>{const c=o(...s);return e(c),c})}),r},vt=(t,e)=>{const r={};return Object.keys(e).forEach(n=>{const o=e[n];if(!o)return;const s=t[n];if(!s)throw new Error(`Missing action creator for key "${String(n)}"`);r[s.type]=o}),r},xt={phase:{kind:"idle"},suggest:null,pointer:null,tabbarHover:null,draggingTabElement:null},j={startContent:D("START_CONTENT",t=>t),startTab:D("START_TAB",t=>t),setSuggest:D("SET_SUGGEST",t=>t),setPointer:D("SET_POINTER",t=>t),setTabbarHover:D("SET_TABBAR_HOVER",t=>t),reset:D("RESET")},ne=vt(j,{startContent:(t,e)=>({phase:{kind:"content",startX:e.payload.x,startY:e.payload.y,fromGroupId:e.payload.groupId,tabId:e.payload.tabId,cache:e.payload.cache},suggest:null,pointer:null,tabbarHover:null,draggingTabElement:null}),startTab:(t,e)=>({phase:{kind:"tab",startX:e.payload.x,startY:e.payload.y,fromGroupId:e.payload.groupId,tabId:e.payload.tabId,cache:e.payload.cache},suggest:null,pointer:null,tabbarHover:null,draggingTabElement:e.payload.element}),setSuggest:(t,e)=>({...t,suggest:e.payload}),setPointer:(t,e)=>({...t,pointer:e.payload}),setTabbarHover:(t,e)=>({...t,tabbarHover:e.payload}),reset:()=>xt}),oe=(t,e)=>{const r=ne[e.type];return r?r(t,e,void 0):t},It=l.createContext(null),U=()=>{const t=l.useContext(It);if(!t)throw new Error("usePanelInteractions must be used within InteractionsProvider");return t},se=({containerRef:t,dragThresholdPx:e,onCommitContentDrop:r,onCommitTabDrop:n,isContentZoneAllowed:o,children:s})=>{const[c,i]=l.useReducer(oe,xt),u=mt(),a=l.useCallback(()=>{const x=Array.from(u.getAll().entries()),y=x.map(([p,G])=>({gid:p,el:G.content??G.group})).filter(p=>!!p.el).map(p=>({...p,rect:p.el.getBoundingClientRect()})),f=x.map(([p,G])=>({gid:p,el:G.tabbar})).filter(p=>!!p.el).map(p=>({...p,rect:p.el.getBoundingClientRect()})),I=x.map(([p,G])=>({gid:p,el:G.content??G.group})).filter(p=>!!p.el).map(p=>({...p,rect:p.el.getBoundingClientRect()}));return{groups:y,tabbars:f,contents:I}},[u]),d=J.useEffectEvent(x=>{if(!t.current)return;const f=x.clientX,I=x.clientY,p=c.phase;if(p.kind==="idle")return;const G=Math.abs(f-p.startX),E=Math.abs(I-p.startY);if(G<e&&E<e){c.phase.kind==="content"&&i(j.setSuggest(null)),i(j.setPointer(null)),i(j.setTabbarHover(null));return}if(i(j.setPointer({x:f,y:I})),p.kind==="content"){const S=p.cache.groups.find(({rect:T})=>f>=T.left&&f<=T.right&&I>=T.top&&I<=T.bottom);if(!S){i(j.setSuggest(null));return}const P=q(S.rect,f,I);if(o&&!o({targetGroupId:S.gid,zone:P})){i(j.setSuggest(null));return}i(j.setSuggest({rect:S.rect,zone:P}));return}if(p.kind==="tab"){const S=p.cache.tabbars.find(({rect:C})=>f>=C.left&&f<=C.right&&I>=C.top&&I<=C.bottom);if(S){const O=Array.from(S.el.querySelectorAll("[role='tab']")).map(z=>z.getBoundingClientRect()),R=O.map(z=>z.left+z.width/2),_=R.findIndex(z=>f<z),N=_===-1?R.length:_,_t=O.length===0?S.rect.left+8:N===0?O[0].left:N===O.length?O[O.length-1].right:(O[N-1].right+O[N].left)/2;i(j.setTabbarHover({groupId:S.gid,index:N,rect:S.rect,insertX:_t}))}else i(j.setTabbarHover(null));const P=p.cache.contents.find(({rect:C})=>f>=C.left&&f<=C.right&&I>=C.top&&I<=C.bottom);if(!P){i(j.setSuggest(null));return}const T=q(P.rect,f,I);if(o&&!o({targetGroupId:P.gid,zone:T})){i(j.setSuggest(null));return}i(j.setSuggest({rect:P.rect,zone:T}))}}),h=J.useEffectEvent(x=>{const y=t.current,f=c;if(i(j.reset()),!y)return;const I=x.clientX,p=x.clientY;if(f.phase.kind==="idle")return;const G=Math.abs(I-f.phase.startX),E=Math.abs(p-f.phase.startY);if(!(G<e&&E<e)){if(f.phase.kind==="content"){const S=f.phase.cache.groups.find(({rect:C})=>I>=C.left&&I<=C.right&&p>=C.top&&p<=C.bottom);if(!S)return;const P=S.gid??null;if(!P)return;const T=q(S.rect,I,p);if(o&&!o({targetGroupId:P,zone:T}))return;r({fromGroupId:f.phase.fromGroupId,tabId:f.phase.tabId,targetGroupId:P,zone:T});return}if(f.phase.kind==="tab"){const S=f.phase.cache.tabbars.find(({rect:T})=>I>=T.left&&I<=T.right&&p>=T.top&&p<=T.bottom);if(S){const T=S.gid;if(!T)return;const O=Array.from(S.el.querySelectorAll("[role='tab']")).map(N=>{const Z=N.getBoundingClientRect();return Z.left+Z.width/2}),R=O.findIndex(N=>I<N),_=R===-1?O.length:R;n({fromGroupId:f.phase.fromGroupId,tabId:f.phase.tabId,targetGroupId:T,targetIndex:_});return}const P=f.phase.cache.contents.find(({rect:T})=>I>=T.left&&I<=T.right&&p>=T.top&&p<=T.bottom);if(P){const T=P.gid??null;if(!T)return;const C=q(P.rect,I,p);if(o&&!o({targetGroupId:T,zone:C}))return;r({fromGroupId:f.phase.fromGroupId,tabId:f.phase.tabId,targetGroupId:T,zone:C})}}}}),m=J.useEffectEvent(()=>{i(j.reset())});l.useEffect(()=>{if(c.phase.kind!=="idle")return window.addEventListener("pointermove",d),window.addEventListener("pointerup",h,{once:!0}),window.addEventListener("pointercancel",m,{once:!0}),()=>{window.removeEventListener("pointermove",d),window.removeEventListener("pointerup",h),window.removeEventListener("pointercancel",m)}},[c.phase.kind]);const w=l.useCallback((x,y,f)=>{if(f.button!==0)return;f.currentTarget.setPointerCapture(f.pointerId);const I=a();i(j.startContent({x:f.clientX,y:f.clientY,groupId:x,tabId:y,cache:I}))},[a]),g=l.useCallback((x,y,f)=>{if(f.button!==0)return;const I=f.currentTarget;I&&I.setPointerCapture(f.pointerId);const p=a();i(j.startTab({x:f.clientX,y:f.clientY,groupId:y,tabId:x,cache:p,element:I}))},[a]),v=l.useMemo(()=>({suggest:c.suggest,isTabDragging:c.phase.kind==="tab",draggingTabId:c.phase.kind==="tab"?c.phase.tabId:null,dragPointer:c.pointer,tabbarHover:c.tabbarHover,draggingTabElement:c.draggingTabElement,onStartContentDrag:w,onStartTabDrag:g}),[c.suggest,c.pointer,c.tabbarHover,c.phase,c.draggingTabElement,w,g]);return b.jsx(It.Provider,{value:v,children:s})},dt={display:"inline-flex",alignItems:"center",userSelect:"none"},ie=({groupId:t,tab:e,active:r,dragging:n,onClickTab:o,onStartDrag:s,onCloseTab:c,tabComponent:i,tabElement:u,onDoubleClick:a})=>{const d=l.useEffectEvent(()=>{o(e.id)}),h=l.useEffectEvent(v=>{s&&v.button===0&&s(e.id,t,v)}),m=()=>{const v=!!c;return b.jsx(l.Activity,{mode:v?"visible":"hidden",children:b.jsx("button",{type:"button","aria-label":`Close tab ${e.title}`,onClick:x=>{c&&(x.stopPropagation(),c(t,e.id))},style:{marginLeft:6},tabIndex:v?void 0:-1,disabled:!v,"aria-hidden":v?void 0:!0,children:"×"})})},w={role:"tab","aria-selected":r,tabIndex:r?0:-1,style:dt,onClick:d,onPointerDown:h,onDoubleClick:a,"data-tab-id":e.id,"data-active":r?"true":"false","data-dragging":n?"true":"false",children:b.jsxs(b.Fragment,{children:[b.jsx("span",{children:e.title}),m()]})},g={type:"button",role:"tab","aria-selected":r,tabIndex:r?0:-1,style:dt,onClick:()=>{o(e.id)},onPointerDown:v=>{s&&v.button===0&&s(e.id,t,v)},onDoubleClick:a,children:b.jsx("span",{children:e.title})};return u?u(g):i?b.jsx(i,{...g}):b.jsx("div",{...w})},ce={display:"flex",alignItems:"center"},ue={flex:"1 1 auto",alignSelf:"stretch"},ae=({group:t,onClickTab:e,onStartDrag:r,rootRef:n,component:o,element:s,tabComponent:c,tabElement:i,onAddTab:u,onCloseTab:a,doubleClickToAdd:d})=>{const{isTabDragging:h,draggingTabId:m}=U(),w=l.useRef(null),g=l.useCallback(p=>{if(w.current=p,!!n){if(typeof n=="function"){n(p);return}try{n.current=p}catch{}}},[n]),v=l.useEffectEvent(p=>{const G=w.current??p.currentTarget;if(!G)return;const E=Array.from(G.querySelectorAll('[role="tab"]'));if(E.length===0)return;const S=R=>{const _=Math.max(0,Math.min(R,E.length-1)),N=E[_];N&&N.focus()},P=document.activeElement,T=P?E.indexOf(P):E.findIndex(R=>R.getAttribute("data-tab-id")===t.activeTabId);if(p.key==="ArrowRight"){p.preventDefault();const R=T>=0?T+1:0;S(R>=E.length?0:R);return}if(p.key==="ArrowLeft"){p.preventDefault();const R=T>=0?T-1:E.length-1;S(R<0?E.length-1:R);return}if(p.key==="Home"){p.preventDefault(),S(0);return}if(p.key==="End"){p.preventDefault(),S(E.length-1);return}if(p.key==="Enter"||p.key===" "){p.preventDefault();const _=(T>=0?E[T]:null)?.getAttribute("data-tab-id")??null;_&&e(_);return}if(p.key==="Delete"||p.key==="Backspace"){if(a){p.preventDefault();const _=(T>=0?E[T]:null)?.getAttribute("data-tab-id")??null;_&&a(t.id,_)}return}const C=(p.ctrlKey?1:0)+(p.metaKey?1:0)>0,O=typeof p.key=="string"?p.key.toLowerCase():"";if(C&&O==="t"){u&&(p.preventDefault(),u(t.id));return}});l.useEffect(()=>{const p=w.current;if(!p)return;const G=p.querySelector(`[role="tab"][data-tab-id="${t.activeTabId}"]`);if(G===document.activeElement)return;!p.contains(document.activeElement)&&G&&G.focus()},[t.activeTabId]);const x={style:ce,role:"tablist","data-tabbar":"true","data-group-id":t.id,"data-dragging":h?"true":"false",onKeyDown:v},y=Q.useElementComponentWrapper({element:s,component:o}),f=()=>u?b.jsx("button",{type:"button","aria-label":"Add tab",onClick:()=>{u(t.id)},children:"+"}):null,I=l.useCallback(()=>{d&&u&&u(t.id)},[d,u,t.id]);return b.jsxs(y,{...x,ref:g,onDoubleClick:I,children:[t.tabs.map((p,G)=>b.jsx(ie,{groupId:t.id,tab:p,active:t.activeTabId===p.id,dragging:m===p.id,onClickTab:e,onStartDrag:r,onCloseTab:a,tabComponent:c,tabElement:i,onDoubleClick:E=>E.stopPropagation()},`${t.id}:${p.id}:${G}`)),b.jsx("span",{style:ue}),f()]})},le=({id:t,TabBarComponent:e,PanelGroupComponent:r})=>{const{getGroup:n,getGroupContent:o,onClickTab:s,onAddTab:c,onCloseTab:i,onStartTabDrag:u,doubleClickToAdd:a,registerContentContainer:d}=Kt(),{setGroupEl:h,setTabbarEl:m,setContentEl:w}=mt(),g=l.useCallback(G=>{h(t,G)},[t,h]),v=l.useCallback(G=>{w(t,G),d(t,G)},[t,w,d]),x=l.useCallback(G=>{m(t,G)},[t,m]),y=n(t);if(!y)return null;const f=o(t),I=e??ae,p=r??(G=>b.jsx(it,{...G}));return b.jsx(p,{group:y,tabbar:b.jsx(I,{rootRef:x,group:y,onClickTab:G=>s(t,G),onAddTab:c,onCloseTab:i,onStartDrag:(G,E,S)=>u(G,E,S),doubleClickToAdd:a}),content:f,groupRef:g,contentRef:v})},de=(t,e)=>{const r=new Array(16);for(let n=0;n<4;n++)for(let o=0;o<4;o++)r[n*4+o]=t[0+o]*e[n*4+0]+t[4+o]*e[n*4+1]+t[8+o]*e[n*4+2]+t[12+o]*e[n*4+3];return r},W=t=>{if(t.length!==16)throw new Error("Matrix must have exactly 16 values");const e=Object.freeze([...t]),r=n=>{const o=de(e,n);return W(o)};return Object.freeze({translate:(n=0,o=0,s=0)=>r([1,0,0,0,0,1,0,0,0,0,1,0,n,o,s,1]),translate3d:(n,o,s)=>r([1,0,0,0,0,1,0,0,0,0,1,0,n,o,s,1]),translateX:n=>r([1,0,0,0,0,1,0,0,0,0,1,0,n,0,0,1]),translateY:n=>r([1,0,0,0,0,1,0,0,0,0,1,0,0,n,0,1]),translateZ:n=>r([1,0,0,0,0,1,0,0,0,0,1,0,0,0,n,1]),scale:(n=1,o=1,s=1)=>r([n,0,0,0,0,o,0,0,0,0,s,0,0,0,0,1]),scale3d:(n,o,s)=>r([n,0,0,0,0,o,0,0,0,0,s,0,0,0,0,1]),scaleX:n=>r([n,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),scaleY:n=>r([1,0,0,0,0,n,0,0,0,0,1,0,0,0,0,1]),scaleZ:n=>r([1,0,0,0,0,1,0,0,0,0,n,0,0,0,0,1]),rotateX:n=>{const o=Math.cos(n),s=Math.sin(n);return r([1,0,0,0,0,o,s,0,0,-s,o,0,0,0,0,1])},rotateY:n=>{const o=Math.cos(n),s=Math.sin(n);return r([o,0,-s,0,0,1,0,0,s,0,o,0,0,0,0,1])},rotateZ:n=>{const o=Math.cos(n),s=Math.sin(n);return r([o,s,0,0,-s,o,0,0,0,0,1,0,0,0,0,1])},rotate:(n,o,s,c)=>{const i=Math.sqrt(o*o+s*s+c*c);if(i===0)return W(e);o/=i,s/=i,c/=i;const u=Math.cos(n),a=Math.sin(n),d=1-u;return r([d*o*o+u,d*o*s+a*c,d*o*c-a*s,0,d*o*s-a*c,d*s*s+u,d*s*c+a*o,0,d*o*c+a*s,d*s*c-a*o,d*c*c+u,0,0,0,0,1])},rotate3d:(n,o,s,c)=>{const i=Math.sqrt(n*n+o*o+s*s);if(i===0)return W(e);n/=i,o/=i,s/=i;const u=Math.cos(c),a=Math.sin(c),d=1-u;return r([d*n*n+u,d*n*o+a*s,d*n*s-a*o,0,d*n*o-a*s,d*o*o+u,d*o*s+a*n,0,d*n*s+a*o,d*o*s-a*n,d*s*s+u,0,0,0,0,1])},skew:(n=0,o=0)=>{const s=Math.tan(n),c=Math.tan(o);return r([1,c,0,0,s,1,0,0,0,0,1,0,0,0,0,1])},skewX:n=>{const o=Math.tan(n);return r([1,0,0,0,o,1,0,0,0,0,1,0,0,0,0,1])},skewY:n=>{const o=Math.tan(n);return r([1,o,0,0,0,1,0,0,0,0,1,0,0,0,0,1])},perspective:n=>{if(n===0)throw new Error("Perspective distance cannot be zero");return r([1,0,0,0,0,1,0,0,0,0,1,-1/n,0,0,0,1])},toCSS:()=>`matrix3d(${e.join(", ")})`,toArray:()=>e,toString:()=>[`[${e[0]}, ${e[4]}, ${e[8]}, ${e[12]}]`,`[${e[1]}, ${e[5]}, ${e[9]}, ${e[13]}]`,`[${e[2]}, ${e[6]}, ${e[10]}, ${e[14]}]`,`[${e[3]}, ${e[7]}, ${e[11]}, ${e[15]}]`].join(`
2
2
  `)})},pe=()=>W([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),fe={position:"fixed",inset:0,pointerEvents:"none",zIndex:k.DROP_SUGGEST_Z_INDEX},be={position:"absolute",border:`${k.DROP_SUGGEST_BORDER_WIDTH} dashed ${k.DROP_SUGGEST_BORDER_COLOR}`,background:k.DROP_SUGGEST_BG_COLOR,borderRadius:k.DROP_SUGGEST_BORDER_RADIUS,transformOrigin:"top left"},B=(t,e)=>e<=0?0:A.clampNumber(t/e,0),he=(t,e,r)=>{const{width:n,height:o}=t,s=r/2,c=n>0?n:1,i=o>0?o:1,u={translateX:r,translateY:r,scaleX:B(A.clampNumber(n-r*2,0),c),scaleY:B(A.clampNumber(o-r*2,0),i)},a={translateX:r,translateY:r,scaleX:B(A.clampNumber(n/2-r*1.5,0),c),scaleY:B(A.clampNumber(o-r*2,0),i)},d={translateX:n/2+s,translateY:r,scaleX:B(A.clampNumber(n/2-r*1.5,0),c),scaleY:B(A.clampNumber(o-r*2,0),i)},h={translateX:r,translateY:r,scaleX:B(A.clampNumber(n-r*2,0),c),scaleY:B(A.clampNumber(o/2-r*1.5,0),i)},m={translateX:r,translateY:o/2+s,scaleX:B(A.clampNumber(n-r*2,0),c),scaleY:B(A.clampNumber(o/2-r*1.5,0),i)},w={center:u,left:a,right:d,top:h,bottom:m},{translateX:g,translateY:v,scaleX:x,scaleY:y}=w[e];return pe().translate(g,v,0).scale(x,y,1).toCSS()},ge=(t,e)=>{const r=k.DROP_SUGGEST_PADDING_PX;return{...be,left:t.left,top:t.top,width:t.width,height:t.height,transform:he(t,e,r)}},wt=({suggest:t})=>{if(!t)return null;const{rect:e,zone:r}=t,n=ge(e,r);return b.jsx("div",{style:fe,children:b.jsx("div",{style:n})})},me=typeof window<"u"&&typeof document<"u",ve=t=>{const[e,r]=l.useState(null),[n,o]=l.useState(null);return st.useIsomorphicLayoutEffect(()=>{if(!me||!t){r(null),o(null);return}const s=t.getBoundingClientRect();r({width:s.width,height:s.height}),o(t.outerHTML)},[t]),{html:n,size:e}},xe={position:"fixed",inset:0,pointerEvents:"none",zIndex:k.TAB_DRAG_OVERLAY_Z_INDEX},Ie={position:"absolute",width:k.TAB_DRAG_INSERT_GUIDE_WIDTH,borderRadius:k.TAB_DRAG_INSERT_GUIDE_BORDER_RADIUS,background:k.TAB_DRAG_INSERT_GUIDE_COLOR,boxShadow:k.TAB_DRAG_INSERT_GUIDE_SHADOW},we=()=>{const{isTabDragging:t,draggingTabId:e,dragPointer:r,tabbarHover:n,draggingTabElement:o}=U(),{html:s,size:c}=ve(o),i=r!==null&&e!==null,u=l.useMemo(()=>{if(!(!i||!r))return{position:"absolute",left:r.x,top:r.y,transform:`translate(${k.TAB_DRAG_PREVIEW_OFFSET_X}, ${k.TAB_DRAG_PREVIEW_OFFSET_Y})`,pointerEvents:"none"}},[i,r]),a=l.useMemo(()=>{if(!(!u||!o))return c?{...u,width:c.width,height:c.height}:u},[u,o,c]),d=l.useMemo(()=>{if(n)return{...Ie,left:n.insertX,top:n.rect.top+4,height:Math.max(0,n.rect.height-8)}},[n]);return t?b.jsxs("div",{style:xe,children:[b.jsx(l.Activity,{mode:a?"visible":"hidden",children:b.jsx("div",{style:a,children:b.jsx("div",{style:{width:"100%",height:"100%",pointerEvents:"none"},dangerouslySetInnerHTML:{__html:s??""}})})}),b.jsx(l.Activity,{mode:d?"visible":"hidden",children:b.jsx("div",{style:d})})]}):null},M=t=>t.type==="group",L=(t,e=[])=>{if(M(t))return[...e,t.groupId];const r=L(t.a,e);return L(t.b,r)},V=(t,e)=>e.reduce((r,n)=>M(r)?r:r[n],t),Y=(t,e,r)=>{if(e.length===0)return r;const[n,...o]=e;return M(t)?t:n==="a"?{...t,a:Y(t.a,o,r)}:{...t,b:Y(t.b,o,r)}},K=(t,e,r=[])=>{if(M(t))return t.groupId===e?{splitPath:null,side:null}:null;if(M(t.a)&&t.a.groupId===e)return{splitPath:r,side:"a"};if(M(t.b)&&t.b.groupId===e)return{splitPath:r,side:"b"};const n=K(t.a,e,[...r,"a"]);return n||K(t.b,e,[...r,"b"])},ct=(t,e,r,n)=>{const o=n(),s=K(t,e),c={type:"split",direction:r,ratio:.5,a:{type:"group",groupId:e},b:{type:"group",groupId:o}};if(!s||s.splitPath===null)return{tree:c,newGroupId:o};const i=s.splitPath,u=V(t,i);if(M(u))return{tree:c,newGroupId:o};const a=s.side==="a"?{...u,a:c}:{...u,b:c};return{tree:Y(t,i,a),newGroupId:o}},yt=(t,e)=>{const r=K(t,e);if(!r||r.splitPath===null)return{tree:t,survivorGroupId:e};const n=r.splitPath,o=V(t,n);if(M(o))return{tree:t,survivorGroupId:e};const s=r.side==="a"?o.b:o.a,c=Y(t,n,s),i=M(s)?s.groupId:L(s)[0]??null;return{tree:c,survivorGroupId:i}},Gt=(t,e,r)=>{const n=V(t,e);if(M(n))return t;const o={...n,ratio:A.clampNumber(r,.05,.95)};return Y(t,e,o)},tt=t=>{if(Object.keys(t.groups).filter(o=>t.groups[o].tabIds.length===0).length===0)return t;const n=(o,s)=>{const c=o.groups[s];if(!c||c.tabs.length>0||Object.keys(o.groups).length<=1)return o;const{tree:u,survivorGroupId:a}=yt(o.tree,s),{[s]:d,...h}=o.groups,m=L(u),w=o.focusedGroupId===s?a??m[0]??null:o.focusedGroupId;return{...o,tree:u,groups:h,groupOrder:m,focusedGroupId:w}};return t.groupOrder.reduce((o,s)=>n(o,s),t)},Tt=t=>({id:t,tabIds:[],tabs:[],activeTabId:null}),et=(t,e,r,n)=>{const o={...t.groups},s=o[e];if(!s)throw new Error(`Group ${e} does not exist.`);const c={...t.panels,[r.id]:r},i=[...s.tabIds,r.id],u=n?r.id:s.activeTabId??r.id,a=i.map(h=>c[h]),d={...s,tabIds:i,tabs:a,activeTabId:u};return o[e]=d,{...t,panels:c,groups:o}},St=(t,e,r)=>{const n={...t.groups},o=n[e];if(!o)throw new Error(`Group ${e} does not exist.`);const s=o.tabIds.filter(u=>u!==r),c=s.map(u=>t.panels[u]),i=o.activeTabId===r?s[0]??null:o.activeTabId;return n[e]={...o,tabIds:s,tabs:c,activeTabId:i},{...t,groups:n}},rt=(t,e,r,n,o)=>{const s=t.groups[e],c=t.groups[r];if(!s||!c)throw new Error("moveTab: source or target group is missing.");const i={...t.groups},u=s.tabIds.filter(h=>h!==n),a=[...c.tabIds.filter(h=>h!==n),n],d=s.activeTabId===n?u[0]??null:s.activeTabId;return i[e]={...s,tabIds:u,tabs:u.map(h=>t.panels[h]),activeTabId:d},i[r]={...c,tabIds:a,tabs:a.map(h=>t.panels[h]),activeTabId:o?n:c.activeTabId??n},{...t,groups:i}},ut=(t,e,r)=>{const n=t.groups[e];if(!n)throw new Error(`setActiveTab: group ${e} not found.`);if(!n.tabIds.some(s=>s===r))throw new Error(`setActiveTab: tab ${r} not found in group ${e}.`);const o={...t.groups,[e]:{...n,activeTabId:r}};return{...t,groups:o,focusedGroupId:e}},ye=(t,e,r,n)=>{const o=t.groups[e];if(!o)throw new Error(`reorderTabWithinGroup: group ${e} not found.`);const s=o.tabIds.findIndex(h=>h===r);if(s===-1)throw new Error(`reorderTabWithinGroup: tab ${r} not in group ${e}.`);const c=Math.max(0,Math.min(n,o.tabIds.length-1));if(s===c)return t;const i=o.tabIds.slice(),[u]=i.splice(s,1);i.splice(c,0,u);const a=i.map(h=>t.panels[h]),d={...t.groups,[e]:{...o,tabIds:i,tabs:a}};return{...t,groups:d}},nt=(t,e,r,n,o)=>{const s=t.groups[e];if(!s)throw new Error(`addTabToGroupAtIndex: group ${e} not found.`);const c={...t.panels,[r.id]:r},i=s.tabIds.slice(),u=Math.max(0,Math.min(n,i.length));i.splice(u,0,r.id);const a=i.map(m=>c[m]),d=o?r.id:s.activeTabId??r.id,h={...t.groups,[e]:{...s,tabIds:i,tabs:a,activeTabId:d}};return{...t,panels:c,groups:h}},$=(t,e)=>{if(!t.groups[e])throw new Error(`setFocusedGroup: group ${e} not found.`);return{...t,focusedGroupId:e}},Et=(t,e)=>{const r=e-1,n=t.groupOrder[r];return n?$(t,n):t},Ct=t=>{const e=t.groupOrder,r=t.focusedGroupId;if(!r){const s=e[0];return s?$(t,s):t}const n=e.indexOf(r),o=e[(n+1)%e.length];return $(t,o)},Pt=t=>{const e=t.groupOrder,r=t.focusedGroupId;if(!r){const s=e[e.length-1];return s?$(t,s):t}const n=e.indexOf(r),o=e[(n-1+e.length)%e.length];return $(t,o)},Ge=t=>{const e=L(t.tree);return{...t,groupOrder:e}},at=(t,e,r,n)=>{const{tree:o,newGroupId:s}=ct(t.tree,e,r,n),c={...t.groups,[s]:Tt(s)},i=L(o);return{...t,tree:o,groups:c,groupOrder:i,focusedGroupId:s}},Te=t=>{const r={type:"group",groupId:"g_1"},n=Object.fromEntries(t.map(i=>[i.id,i])),s={g_1:{id:"g_1",tabIds:t.map(i=>i.id),tabs:t,activeTabId:t[0]?.id??null}};return{tree:r,panels:n,groups:s,groupOrder:["g_1"],focusedGroupId:"g_1"}},Se=l.createContext(null),Ee=({value:t,children:e})=>b.jsx(Se.Provider,{value:t,children:e}),Rt=l.createContext(null),Ce=()=>{const t=l.useContext(Rt);if(!t)throw new Error("useTree must be used within TreeProvider");return t},Pe=({value:t,children:e})=>b.jsx(Rt.Provider,{value:t,children:e}),Re=l.createContext(null),je=({value:t,children:e})=>b.jsx(Re.Provider,{value:t,children:e}),X=t=>{const e=A.toFiniteNumberOr(t,Number.POSITIVE_INFINITY);return A.clampNumber(e,1)},De=t=>typeof t=="object"&&t!==null,Ae=t=>De(t)?"rows"in t?!0:"cols"in t:!1,jt=t=>{if(!t)return{rows:Number.POSITIVE_INFINITY,cols:Number.POSITIVE_INFINITY};if(typeof t=="number"){const r=X(t);return{rows:r,cols:r}}if(Ae(t))return{rows:X(t.rows),cols:X(t.cols)};const e=t;return{rows:X(e.maxHorizontal),cols:X(e.maxVertical)}},ot=t=>{if(M(t))return{horizontal:1,vertical:1};const e=ot(t.a),r=ot(t.b);return t.direction==="horizontal"?{horizontal:e.horizontal+r.horizontal,vertical:Math.max(e.vertical,r.vertical)}:{horizontal:Math.max(e.horizontal,r.horizontal),vertical:e.vertical+r.vertical}},ke=(t,e,r)=>{const{tree:n}=ct(t,e,r,()=>"__preview__");return n},lt=(t,e,r,n)=>{if(!Number.isFinite(n.rows)&&!Number.isFinite(n.cols))return!0;const o=ke(t,e,r),s=ot(o);return!(s.horizontal>n.rows||s.vertical>n.cols)},Dt={splitFocused:D("panelState/splitFocused",t=>({direction:t})),focusGroupIndex:D("panelState/focusGroupIndex",t=>({index1Based:t})),focusNextGroup:D("panelState/focusNextGroup"),focusPrevGroup:D("panelState/focusPrevGroup"),setActiveTab:D("panelState/setActiveTab",(t,e)=>({groupId:t,tabId:e})),addTab:D("panelState/addTab",t=>t),addNewTab:D("panelState/addNewTab",t=>t),removeTab:D("panelState/removeTab",(t,e)=>({groupId:t,tabId:e})),contentDrop:D("panelState/contentDrop",t=>t),tabDrop:D("panelState/tabDrop",t=>t),adjustSplitRatio:D("panelState/adjustSplitRatio",t=>t)},Me=(t,e,r)=>{const n=t.groups[e.fromGroupId],o=t.groups[e.targetGroupId];if(!n||!o||!n.tabs.find(h=>h.id===e.tabId))return t;if(e.zone==="center"&&e.fromGroupId===e.targetGroupId)return ut(t,e.fromGroupId,e.tabId);if(e.zone==="center"){const h=rt(t,e.fromGroupId,e.targetGroupId,e.tabId,!0);return $(h,e.targetGroupId)}const c=e.zone==="left"||e.zone==="right"?"vertical":"horizontal";if(!lt(t.tree,e.targetGroupId,c,r.splitLimits))return t;const i=r.createGroupId(),u=at(t,e.targetGroupId,c,()=>i),a=e.zone==="left"||e.zone==="top"?e.targetGroupId:i,d=rt(u,e.fromGroupId,a,e.tabId,!0);return $(d,a)},Oe=(t,e)=>{const r=t.groups[e.fromGroupId],n=t.groups[e.targetGroupId];if(!r||!n||!t.panels[e.tabId])return t;if(e.fromGroupId===e.targetGroupId){const m=r.tabIds.filter(y=>y!==e.tabId),w=Math.max(0,Math.min(e.targetIndex,m.length)),g=m.slice(0,w).concat([e.tabId],m.slice(w)),v=g.map(y=>t.panels[y]).filter(Boolean),x={...t.groups,[e.fromGroupId]:{...r,tabIds:g,tabs:v}};return{...t,groups:x}}const s={...t.groups},c=r.tabIds.filter(m=>m!==e.tabId),i=c.map(m=>t.panels[m]);s[e.fromGroupId]={...r,tabIds:c,tabs:i,activeTabId:r.activeTabId===e.tabId?i[0]?.id??null:r.activeTabId};const u=n.tabIds.filter(m=>m!==e.tabId),a=Math.max(0,Math.min(e.targetIndex,u.length)),d=u.slice(0,a).concat([e.tabId],u.slice(a)),h=d.map(m=>t.panels[m]).filter(Boolean);return s[e.targetGroupId]={...n,tabIds:d,tabs:h,activeTabId:e.tabId},{...t,groups:s,focusedGroupId:e.targetGroupId}},_e=vt(Dt,{splitFocused:(t,e,r)=>{const n=t.focusedGroupId??t.groupOrder[0]??null;return!n||!lt(t.tree,n,e.payload.direction,r.splitLimits)?t:at(t,n,e.payload.direction,r.createGroupId)},focusGroupIndex:(t,e)=>Et(t,e.payload.index1Based),focusNextGroup:t=>Ct(t),focusPrevGroup:t=>Pt(t),setActiveTab:(t,e)=>ut(t,e.payload.groupId,e.payload.tabId),addTab:(t,e)=>{const{groupId:r,tab:n,index:o,makeActive:s}=e.payload;return typeof o=="number"?nt(t,r,n,o,s??!0):et(t,r,n,s??!0)},addNewTab:(t,e,r)=>{if(!r.createPanelId)throw new Error("addNewTab requires PanelSystemProvider.createPanelId");const o={id:r.createPanelId(),title:e.payload.title,render:()=>e.payload.title},{groupId:s,index:c,makeActive:i}=e.payload;return typeof c=="number"?nt(t,s,o,c,i??!0):et(t,s,o,i??!0)},removeTab:(t,e)=>St(t,e.payload.groupId,e.payload.tabId),contentDrop:(t,e,r)=>Me(t,e.payload,r),tabDrop:(t,e)=>Oe(t,e.payload),adjustSplitRatio:(t,e)=>{const r=V(t.tree,e.payload.path);if(M(r))return t;const n=Gt(t.tree,e.payload.path,r.ratio+e.payload.deltaRatio);return{...t,tree:n}}}),pt=(t,e,r)=>{const n=_e[e.type];if(!n)return t;const o=n(t,e,r);return tt(o)},At=l.createContext(null),H=()=>{const t=l.useContext(At);if(!t)throw new Error("usePanelSystem must be used within PanelSystemProvider");return t},kt=({initialState:t,createGroupId:e,createPanelId:r,state:n,onStateChange:o,splitLimits:s,children:c})=>{const i=l.useMemo(()=>tt(t),[t]),u=l.useMemo(()=>jt(s),[s]),a=l.useRef({createGroupId:e,splitLimits:u,createPanelId:r});a.current.createGroupId=e,a.current.splitLimits=u,a.current.createPanelId=r;const[d,h]=l.useReducer((G,E)=>pt(G,E,a.current),i),m=l.useMemo(()=>n?tt(n):d,[n,d]),w=l.useRef(m);w.current=m;const g=n!==void 0,v=l.useCallback(G=>{if(g){const E=pt(w.current,G,a.current);o?.(E);return}h(G)},[g,o,h]),x=l.useMemo(()=>re(Dt,v),[v]),y=l.useMemo(()=>({setActiveTab:x.setActiveTab,tabDrop:x.tabDrop}),[x]),f=l.useMemo(()=>({adjustSplitRatio:x.adjustSplitRatio}),[x]),I=l.useMemo(()=>({focusGroupIndex:x.focusGroupIndex,focusNextGroup:x.focusNextGroup,focusPrevGroup:x.focusPrevGroup}),[x]),p=l.useMemo(()=>({state:m,dispatch:v,actions:x}),[m,v,x]);return b.jsx(At.Provider,{value:p,children:b.jsx(Ee,{value:y,children:b.jsx(Pe,{value:f,children:b.jsx(je,{value:I,children:c})})})})},Ne=()=>{const{actions:t}=H();return l.useMemo(()=>({splitFocused:e=>{t.splitFocused(e)},focusGroupIndex:e=>{t.focusGroupIndex(e)},focusNextGroup:()=>{t.focusNextGroup()},focusPrevGroup:()=>{t.focusPrevGroup()},closeFocusedGroup:()=>{}}),[t])},Be=()=>{const{actions:t}=H(),e=l.useCallback(({fromGroupId:n,tabId:o,targetGroupId:s,zone:c})=>{t.contentDrop({fromGroupId:n,tabId:o,targetGroupId:s,zone:c})},[t]),r=l.useCallback(({fromGroupId:n,tabId:o,targetGroupId:s,targetIndex:c})=>{t.tabDrop({fromGroupId:n,tabId:o,targetGroupId:s,targetIndex:c})},[t]);return{onCommitContentDrop:e,onCommitTabDrop:r}},$e=()=>{const t=Ht(),e=Ne();return l.useEffect(()=>{Ft(t,e)},[t,e]),null},Mt=l.createContext(null),Le=()=>{const t=l.useContext(Mt);if(!t)throw new Error("useContentRegistry must be used within ContentRegistryProvider");return t},He=t=>{const e=document.createElement("div");return e.setAttribute("data-panel-wrapper",t),e.style.display="contents",e},ze=(t,e,r)=>{const[n]=l.useState(()=>He(t));return st.useIsomorphicLayoutEffect(()=>(n.style.display=r?"contents":"none",e&&n.parentElement!==e&&e.appendChild(n),()=>{n.parentElement?.removeChild(n)}),[n,e,r]),n},Ot=l.memo(({panelId:t,content:e,placement:r,containerElement:n})=>{const o=r?.isActive??!1,s=ze(t,n,o);return Bt.createPortal(b.jsx(l.Activity,{mode:o?"visible":"hidden",children:e}),s)});Ot.displayName="PanelContentHost";const Xe=({children:t,panels:e,placements:r})=>{const[n,o]=l.useState(new Map),s=l.useCallback((m,w)=>{o(g=>{const v=new Map(g);return w?v.set(m,w):v.delete(m),v})},[]),c=l.useMemo(()=>({registerContentContainer:s}),[s]),i=l.useRef(e);i.current=e;const u=l.useCallback(m=>{const w=i.current[m];return w?w.render(w.id):null},[]),a=l.useMemo(()=>Object.keys(e),[e]),{getCachedContent:d}=$t.useContentCache({resolveContent:u,validIds:a}),h=Object.keys(e);return b.jsxs(Mt.Provider,{value:c,children:[t,h.map(m=>{if(!e[m])return null;const g=r[m]??null,v=g?n.get(g.groupId)??null:null,x=d(m);return b.jsx(Ot,{panelId:m,content:x,placement:g,containerElement:v},m)})]})},Fe=({children:t,emptyContentComponent:e,doubleClickToAdd:r})=>{const n=U(),{state:o,actions:s}=H(),{registerContentContainer:c}=Le(),i=l.useCallback(()=>l.createElement("div",{style:{color:"#888",fontSize:12,padding:12}},"No tabs"),[]),u=e??i,a=l.useCallback(y=>{const f=o.groups[y];if(!f)return null;const I=f.tabIds.map(p=>o.panels[p]).filter(Boolean);return{...f,tabs:I}},[o.groups,o.panels]),d=l.useCallback(y=>{const f=o.groups[y];return!f||f.tabIds.length===0?b.jsx(u,{}):null},[o.groups,u]),h=l.useCallback((y,f)=>{s.setActiveTab(y,f)},[s]),m=l.useCallback(y=>{s.addNewTab({groupId:y,title:"New Tab",makeActive:!0})},[s]),w=l.useCallback((y,f)=>{s.removeTab(y,f)},[s]),g=l.useCallback((y,f,I)=>{s.setActiveTab(f,y),n.onStartTabDrag(y,f,I)},[s,n]),v=l.useCallback((y,f)=>{const I=o.groups[y];!I||!I.activeTabId||n.onStartContentDrag(y,I.activeTabId,f)},[o.groups,n]),x=l.useMemo(()=>({getGroup:a,getGroupContent:d,onClickTab:h,onAddTab:m,onCloseTab:w,onStartTabDrag:g,onStartContentDrag:v,doubleClickToAdd:r,registerContentContainer:c}),[a,d,h,m,w,g,v,r,c]);return b.jsx(Ut,{value:x,children:t})},Ye=({children:t,emptyContentComponent:e,doubleClickToAdd:r})=>{const{state:n}=H(),o=l.useMemo(()=>{const s={};for(const[c,i]of Object.entries(n.groups))for(const u of i.tabIds)s[u]={groupId:c,isActive:u===i.activeTabId};return s},[n.groups]);return b.jsx(Xe,{panels:n.panels,placements:o,children:b.jsx(Fe,{emptyContentComponent:e,doubleClickToAdd:r,children:t})})},F=(t,e,r,n)=>{if(M(t))return n;const o=t.direction,s=o==="vertical"?r.x+r.w*t.ratio:r.y+r.h*t.ratio;if(n.push({path:e,direction:o,parentRect:r,linePos:s}),o==="vertical"){const u=r.w*t.ratio,a=r.w-u;return F(t.a,[...e,"a"],{x:r.x,y:r.y,w:u,h:r.h},n),F(t.b,[...e,"b"],{x:r.x+u,y:r.y,w:a,h:r.h},n),n}const c=r.h*t.ratio,i=r.h-c;return F(t.a,[...e,"a"],{x:r.x,y:r.y,w:r.w,h:c},n),F(t.b,[...e,"b"],{x:r.x,y:r.y+c,w:r.w,h:i},n),n},qe=({containerRef:t})=>{const{state:e}=H(),{adjustSplitRatio:r}=Ce(),n=l.useMemo(()=>F(e.tree,[],{x:0,y:0,w:100,h:100},[]),[e.tree]),[o,s]=l.useState(null);if(st.useIsomorphicLayoutEffect(()=>{const i=t.current;if(!i)return;const u=()=>{const w=i.getBoundingClientRect();s({left:w.left,top:w.top,width:w.width,height:w.height})};u();function a(){try{const w=window.ResizeObserver;return typeof w=="function"?w:null}catch{return null}}const d=a(),h=d?new d(()=>u()):null;h&&h.observe(i);const m=()=>u();return window.addEventListener("scroll",m,!0),()=>{window.removeEventListener("scroll",m,!0),h&&h.disconnect()}},[t,e.tree]),!o)return null;const c=(i,u)=>{const a={left:o.left+o.width*i.parentRect.x/100,top:o.top+o.height*i.parentRect.y/100,width:o.width*i.parentRect.w/100,height:o.height*i.parentRect.h/100},d=k.SPLIT_HANDLE_THICKNESS;if(i.direction==="vertical"){const g=a.left+a.width*(i.linePos-i.parentRect.x)/i.parentRect.w,v={position:"fixed",left:`calc(${Math.round(g)}px - ${d} / 2)`,top:Math.round(a.top),width:d,height:Math.round(a.height),cursor:"col-resize",pointerEvents:"auto"},x=y=>{const f=o.width*i.parentRect.w/100,I=f===0?0:y/f;r({path:i.path,deltaRatio:I})};return b.jsx("div",{style:v,children:b.jsx(Q.ResizeHandle,{direction:"vertical",onResize:x})},`split-${u}`)}const h=a.top+a.height*(i.linePos-i.parentRect.y)/i.parentRect.h,m={position:"fixed",left:Math.round(a.left),top:`calc(${Math.round(h)}px - ${d} / 2)`,width:Math.round(a.width),height:d,cursor:"row-resize",pointerEvents:"auto"},w=g=>{const v=o.height*i.parentRect.h/100,x=v===0?0:g/v;r({path:i.path,deltaRatio:x})};return b.jsx("div",{style:m,children:b.jsx(Q.ResizeHandle,{direction:"horizontal",onResize:w})},`split-${u}`)};return b.jsx("div",{style:{position:"fixed",inset:0,pointerEvents:"none"},children:n.map((i,u)=>c(i,u))})},We={position:"relative",display:"flex",width:"100%",height:"100%"},Ke=({state:t,layoutMode:e,gridTracksInteractive:r,view:n,tabBarComponent:o,panelGroupComponent:s})=>{const c=u=>{if(n){const a=n;return b.jsx(a,{groupId:u})}return b.jsx(le,{id:u,TabBarComponent:o,PanelGroupComponent:s})};if(e==="grid"){const u=Wt(t,c,!!r);return b.jsx(A.GridLayout,{config:u.config,layers:u.layers})}const i=qt(t,c);return b.jsx(A.GridLayout,{config:i.config,layers:i.layers})},Ue=({containerRef:t,layoutMode:e,gridTracksInteractive:r,dragThresholdPx:n,view:o,style:s,className:c,tabBarComponent:i,panelGroupComponent:u,splitLimits:a,emptyContentComponent:d,doubleClickToAdd:h})=>{const{state:m}=H(),{onCommitContentDrop:w,onCommitTabDrop:g}=Be(),v=l.useMemo(()=>({...We,...s}),[s]),x=l.useCallback(({targetGroupId:y,zone:f})=>{if(f==="center")return!0;const I=f==="left"||f==="right"?"vertical":"horizontal";return lt(m.tree,y,I,a)},[m.tree,a]);return b.jsx(Vt,{children:b.jsxs(se,{containerRef:t,dragThresholdPx:n,onCommitContentDrop:w,onCommitTabDrop:g,isContentZoneAllowed:x,children:[b.jsx(Ye,{emptyContentComponent:d,doubleClickToAdd:h,children:b.jsx("div",{ref:t,className:c,style:v,children:b.jsx(Ke,{state:m,layoutMode:e,gridTracksInteractive:r,view:o,tabBarComponent:i,panelGroupComponent:u})})}),b.jsx(qe,{containerRef:t}),b.jsx(Ve,{})]})})},Ve=()=>{const t=U();return b.jsxs(b.Fragment,{children:[b.jsx(wt,{suggest:t.suggest}),b.jsx(we,{})]})},Ze=({initialState:t,createGroupId:e,createPanelId:r,layoutMode:n,gridTracksInteractive:o,dragThresholdPx:s,view:c,emptyContentComponent:i,state:u,onStateChange:a,className:d,style:h,tabBarComponent:m,panelGroupComponent:w,splitLimits:g,doubleClickToAdd:v})=>{if(!t)throw new Error("PanelSystem requires initialState.");if(!e)throw new Error("PanelSystem requires explicit createGroupId function.");if(!n)throw new Error("PanelSystem requires explicit layoutMode ('absolute' | 'grid').");if(n==="grid"&&o===void 0)throw new Error("PanelSystem(layoutMode='grid') requires explicit 'gridTracksInteractive' flag.");if(s===void 0)throw new Error("PanelSystem requires explicit 'dragThresholdPx' value.");const x=l.useRef(null),y=l.useMemo(()=>jt(g),[g]);return b.jsx(kt,{initialState:t,createGroupId:e,createPanelId:r,state:u,onStateChange:a,splitLimits:g,children:b.jsxs(Xt,{children:[b.jsx($e,{}),b.jsx(Ue,{containerRef:x,layoutMode:n,gridTracksInteractive:o,dragThresholdPx:s,view:c,style:h,className:d,tabBarComponent:m,panelGroupComponent:w,splitLimits:y,emptyContentComponent:i,doubleClickToAdd:v})]})})};exports.DropSuggestOverlay=wt;exports.PanelGroupView=it;exports.PanelSystem=Ze;exports.PanelSystemProvider=kt;exports.addTabToGroup=et;exports.addTabToGroupAtIndex=nt;exports.buildInitialState=Te;exports.closeLeaf=yt;exports.collectGroupsInOrder=L;exports.createEmptyGroup=Tt;exports.focusGroupIndex=Et;exports.isGroup=M;exports.moveTab=rt;exports.nextGroup=Ct;exports.prevGroup=Pt;exports.refreshGroupOrder=Ge;exports.removeTabFromGroup=St;exports.reorderTabWithinGroup=ye;exports.setActiveTab=ut;exports.setFocusedGroup=$;exports.setSplitRatio=Gt;exports.splitGroup=at;exports.splitLeaf=ct;exports.usePanelSystem=H;
3
- //# sourceMappingURL=PanelSystem-Bs8bQwQF.cjs.map
3
+ //# sourceMappingURL=PanelSystem-D603LKKv.cjs.map