react-zeugma 6.4.0 → 6.4.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.
package/README.md CHANGED
@@ -88,30 +88,46 @@ export default function Dashboard() {
88
88
 
89
89
  ## API Reference
90
90
 
91
+ ### `<ZeugmaProvider>`
92
+
93
+ The context provider that sets up the drag-and-drop state machine, monitors active drags, and registers layout change notifications. This is a headless component that does not render any visual grid container. Wrap your custom dashboard structure (including sidebars, toolbars, and the `<Zeugma>` grid layout) with `<ZeugmaProvider>` to allow descendant components to consume the layout context.
94
+
95
+ It accepts a required `controller` and `children` props:
96
+
97
+ | Prop | Type | Required | Description |
98
+ | :----------- | :----------------- | :------- | :--------------------------------------------------------------------- |
99
+ | `controller` | `ZeugmaController` | Yes | The Zeugma controller object returned by `useZeugma(options)`. |
100
+ | `children` | `React.ReactNode` | Yes | Sibling or descendant components that will have access to the context. |
101
+
102
+ Additionally, `<ZeugmaProvider>` accepts all configuration settings and lifecycle callbacks listed for `<Zeugma>` below (such as `classNames`, `resizerSize`, `renderPane`, `onDragStart`, etc.).
103
+
91
104
  ### `<Zeugma>`
92
105
 
93
- The context provider that sets up the drag-and-drop state machine, monitors active drags, and registers layout change notifications. It accepts a `controller` prop explicitly and takes all configuration settings and lifecycle callbacks.
94
-
95
- | Prop | Type | Required | Description |
96
- | ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | --------------------------------------------------------------------------------------------- |
97
- | `controller` | `ZeugmaController` | Yes | The Zeugma controller object returned by `useZeugma(options)`. |
98
- | `renderPane` | `(paneId: string) => ReactNode` | Yes | Renderer function lookup that returns a `<Pane>` structure. |
99
- | `classNames` | `ZeugmaClassNames` | No | Custom classes for overriding pane, resizer, and drop preview overlays. |
100
- | `renderDragOverlay` | `(active: DragOverlayActiveItem) => ReactNode` | No | Renders a custom cursor-following drag preview overlay. |
101
- | `resizerSize` | `number` | No | Thickness of the split resizer bars in pixels. Defaults to `4`. |
102
- | `dragActivationDistance` | `number` | No | Minimum pointer drag distance (in pixels) required to activate dragging (defaults to `8`). |
103
- | `snapThreshold` | `number` | No | Threshold in pixels to snap layout resizers to adjacent edges (defaults to `8`). |
104
- | `minSplitPercentage` | `number` | No | Minimum resizing limit percentage (defaults to `5`). |
105
- | `maxSplitPercentage` | `number` | No | Maximum resizing limit percentage (defaults to `95`). |
106
- | `enableDragToDismiss` | `boolean` | No | If true, enables the drag-out-to-dismiss gesture to close widgets (defaults to `false`). |
107
- | `dismissThreshold` | `number` | No | Distance in pixels outside container bounds required to trigger dismissal (defaults to `60`). |
108
- | `onRemove` | `(paneId: string) => void` | No | Callback triggered when a pane is removed. |
109
- | `onDragStart` | `(activeId: string) => void` | No | Callback triggered when dragging starts. |
110
- | `onDragEnd` | `(activeId: string, overId: string \| null, dropAction: { type: 'split' \| 'move'; direction?: SplitDirection; position?: string } \| null) => void` | No | Callback triggered when dragging ends. |
111
- | `onResizeStart` | `(currentNode: SplitNode) => void` | No | Callback triggered when resizing starts. |
112
- | `onResize` | `(currentNode: SplitNode, percentage: number) => void` | No | Callback triggered during resizing. |
113
- | `onResizeEnd` | `(currentNode: SplitNode, percentage: number) => void` | No | Callback triggered when resizing ends. |
114
- | `onDismissIntentChange` | `(paneId: string \| null) => void` | No | Callback triggered when drag-out intent changes. |
106
+ The main visual dashboard grid renderer.
107
+
108
+ - **Standalone Mode**: If used standalone, `<Zeugma>` acts as the context provider itself. You must pass both `controller` and `renderPane` props to it.
109
+ - **Provider-Wrapped Mode**: If nested within a `<ZeugmaProvider>`, you do not need to pass any props to `<Zeugma>` (it will automatically read the state, configuration, and callbacks directly from the parent context).
110
+
111
+ | Prop | Type | Required | Description |
112
+ | ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |
113
+ | `controller` | `ZeugmaController` | Standalone only | The Zeugma controller object returned by `useZeugma(options)`. |
114
+ | `renderPane` | `(paneId: string) => ReactNode` | Standalone only | Renderer function lookup that returns a `<Pane>` structure. |
115
+ | `classNames` | `ZeugmaClassNames` | No | Custom classes for overriding pane, resizer, and drop preview overlays. |
116
+ | `renderDragOverlay` | `(active: DragOverlayActiveItem) => ReactNode` | No | Renders a custom cursor-following drag preview overlay. |
117
+ | `resizerSize` | `number` | No | Thickness of the split resizer bars in pixels. Defaults to `4`. |
118
+ | `dragActivationDistance` | `number` | No | Minimum pointer drag distance (in pixels) required to activate dragging (defaults to `8`). |
119
+ | `snapThreshold` | `number` | No | Threshold in pixels to snap layout resizers to adjacent edges (defaults to `8`). |
120
+ | `minSplitPercentage` | `number` | No | Minimum resizing limit percentage (defaults to `5`). |
121
+ | `maxSplitPercentage` | `number` | No | Maximum resizing limit percentage (defaults to `95`). |
122
+ | `enableDragToDismiss` | `boolean` | No | If true, enables the drag-out-to-dismiss gesture to close widgets (defaults to `false`). |
123
+ | `dismissThreshold` | `number` | No | Distance in pixels outside container bounds required to trigger dismissal (defaults to `60`). |
124
+ | `onRemove` | `(paneId: string) => void` | No | Callback triggered when a pane is removed. |
125
+ | `onDragStart` | `(activeId: string) => void` | No | Callback triggered when dragging starts. |
126
+ | `onDragEnd` | `(activeId: string, overId: string \| null, dropAction: { type: 'split' \| 'move'; direction?: SplitDirection; position?: string } \| null) => void` | No | Callback triggered when dragging ends. |
127
+ | `onResizeStart` | `(currentNode: SplitNode) => void` | No | Callback triggered when resizing starts. |
128
+ | `onResize` | `(currentNode: SplitNode, percentage: number) => void` | No | Callback triggered during resizing. |
129
+ | `onResizeEnd` | `(currentNode: SplitNode, percentage: number) => void` | No | Callback triggered when resizing ends. |
130
+ | `onDismissIntentChange` | `(paneId: string \| null) => void` | No | Callback triggered when drag-out intent changes. |
115
131
 
116
132
  ### `useZeugma(options)`
117
133
 
package/dist/index.cjs CHANGED
@@ -1,7 +1,7 @@
1
- 'use strict';var tn=require('react'),core=require('@dnd-kit/core'),jsxRuntime=require('react/jsx-runtime'),reactDom=require('react-dom');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var tn__default=/*#__PURE__*/_interopDefault(tn);function ct(e){let t=tn.useRef(null);return tn.useEffect(()=>{if(!e){t.current=null;return}let n=r=>{t.current={x:r.clientX,y:r.clientY};},o=r=>{let l=r.touches[0]||r.changedTouches[0];l&&(t.current={x:l.clientX,y:l.clientY});};return window.addEventListener("pointermove",n,{passive:true}),window.addEventListener("touchmove",o,{passive:true}),()=>{window.removeEventListener("pointermove",n),window.removeEventListener("touchmove",o);}},[e]),t}function ut(e){tn.useEffect(()=>(e?document.body.style.setProperty("cursor","not-allowed","important"):document.body.style.removeProperty("cursor"),()=>{document.body.style.removeProperty("cursor");}),[e]);}function dt(){let[e,t]=tn.useState({}),n=tn.useRef({}),o=tn.useRef(true);tn.useEffect(()=>(o.current=true,()=>{o.current=false;}),[]);let r=tn.useCallback((a,i)=>{o.current&&t(u=>{if(!i){if(!u[a])return u;let d={...u};return delete d[a],d}return u[a]===i?u:{...u,[a]:i}});},[]),l=tn.useCallback((a,i)=>{n.current[a]=i;},[]);return {portalTargets:e,registerPortalTarget:r,registerRenderCallback:l,renderCallbacksRef:n}}function ce(){return "pane-"+Math.random().toString(36).substring(2,11)}function me(e,t){if(e===null)return null;if(e.type==="pane")return e.id===t?null:e;let n=me(e.first,t),o=me(e.second,t);return n===null?o:o===null?n:{...e,first:n,second:o}}function ue(e,t){if(e===null)return null;if(e.type==="pane"){if(e.tabs.includes(t)){let r=e.tabs.filter(i=>i!==t);if(r.length===0)return null;let l=e.activeTabId;e.activeTabId===t&&(l=r[0]);let a={...e.tabsMetadata};return delete a[t],{...e,tabs:r,activeTabId:l,tabsMetadata:Object.keys(a).length>0?a:void 0}}return e}let n=ue(e.first,t),o=ue(e.second,t);return n===null?o:o===null?n:{...e,first:n,second:o}}function xe(e,t,n,o,r){if(e===null)return typeof r=="string"?{type:"pane",id:ce(),tabs:[r],activeTabId:r}:r;if(e.type==="pane"){if(e.id===t){let l=typeof r=="string"?{type:"pane",id:ce(),tabs:[r],activeTabId:r}:r,a=o==="left"||o==="top";return {type:"split",direction:n,first:a?l:e,second:a?e:l,splitPercentage:50}}return e}return {...e,first:xe(e.first,t,n,o,r)||e.first,second:xe(e.second,t,n,o,r)||e.second}}function Ot(e,t){if(e===null)return t;function n(o,r){return o.type==="pane"?{type:"split",direction:r==="row"?"column":"row",splitPercentage:50,first:o,second:t}:{...o,second:n(o.second,o.direction)}}return n(e,null)}function pt(e,t,n,o){if(e===null)return {type:"pane",id:ce(),tabs:[n],activeTabId:n,tabsMetadata:o?{[n]:o}:void 0};let r=t?j(e,t):null;if(r&&r.type==="pane"){let i=function(u){if(u.type==="pane"&&u.id===t){let d=[...u.tabs];d.includes(n)||d.push(n);let g=u.tabsMetadata;return o&&(g={...u.tabsMetadata,[n]:o}),{...u,tabs:d,activeTabId:n,tabsMetadata:g}}return u.type==="split"?{...u,first:i(u.first),second:i(u.second)}:u};return i(e)}let l={type:"pane",id:ce(),tabs:[n],activeTabId:n,tabsMetadata:o?{[n]:o}:void 0};return Ot(e,l)}function he(e,t,n){return e===null?null:e===t?{...e,splitPercentage:n}:e.type==="split"?{...e,first:he(e.first,t,n)||e.first,second:he(e.second,t,n)||e.second}:e}function j(e,t){return e===null?null:e.type==="pane"?e.id===t?e:null:e.type==="split"?j(e.first,t)??j(e.second,t):null}function K(e,t){return e===null?null:e.type==="pane"?e.tabs.includes(t)?e:null:e.type==="split"?K(e.first,t)??K(e.second,t):null}function Xe(e,t){let n=K(e,t);if(!n)return null;let o=n.tabs.indexOf(t);return {id:t,paneId:n.id,isActive:n.activeTabId===t,index:o,metadata:n.tabsMetadata?.[t]}}function Ye(e,t){return K(e,t)?.tabsMetadata?.[t]}function Je(e,t){let n=j(e,t);return n?.tabsMetadata?.[n.activeTabId]}function Ee(e,t,n){if(e===null)return null;if(e.type==="pane"){if(e.tabs.includes(t)){let o=e.tabsMetadata||{},r=o[t],l=n(r),a={...o};return l===void 0?delete a[t]:a[t]=l,{...e,tabsMetadata:Object.keys(a).length>0?a:void 0}}return e}return e.type==="split"?{...e,first:Ee(e.first,t,n)??e.first,second:Ee(e.second,t,n)??e.second}:e}function Le(e,t,n){if(e===null)return null;if(e.type==="pane"){if(e.id===t){if(n===false){let{locked:o,...r}=e;return r}return {...e,locked:n}}return e}return e.type==="split"?{...e,first:Le(e.first,t,n)??e.first,second:Le(e.second,t,n)??e.second}:e}function ye(e,t,n){return e===null?null:e.type==="pane"?e.id===t?e.activeTabId===n?e:{...e,activeTabId:n}:e:e.type==="split"?{...e,first:ye(e.first,t,n)??e.first,second:ye(e.second,t,n)??e.second}:e}function ft(e,t,n){if(e===null)return null;let r=K(e,t)?.tabsMetadata?.[t],l=ue(e,t);if(l===null)return {type:"pane",id:ce(),tabs:[t],activeTabId:t,tabsMetadata:r?{[t]:r}:void 0};function a(i){if(i.type==="pane"){if(i.id===n){let u=[...i.tabs];u.includes(t)||u.push(t);let d={...i.tabsMetadata};return r&&(d[t]=r),{...i,tabs:u,activeTabId:t,tabsMetadata:Object.keys(d).length>0?d:void 0}}return i}return i.type==="split"?{...i,first:a(i.first),second:a(i.second)}:i}return a(l)}function Me(e,t,n,o="before"){if(e===null)return null;let l=K(e,t)?.tabsMetadata?.[t],a=ue(e,t);if(a===null)return {type:"pane",id:ce(),tabs:[t],activeTabId:t,tabsMetadata:l?{[t]:l}:void 0};function i(u){if(u.type==="pane"){if(u.tabs.includes(n)){let g=[...u.tabs].filter(D=>D!==t),b=g.indexOf(n);b<0&&(b=0),o==="after"&&(b+=1),g.splice(b,0,t);let T={...u.tabsMetadata};return l&&(T[t]=l),{...u,tabs:g,activeTabId:t,tabsMetadata:Object.keys(T).length>0?T:void 0}}return u}return u.type==="split"?{...u,first:i(u.first),second:i(u.second)}:u}return i(a)}function pe(e,t=0,n=0,o=100,r=100,l="root"){if(e===null)return {panes:[],splitters:[]};if(e.type==="pane")return {panes:[{paneId:e.id,left:t,top:n,width:o,height:r,node:e}],splitters:[]};let{direction:a,splitPercentage:i,first:u,second:d}=e,b={id:`splitter-${l}-${a}`,currentNode:e,direction:a,left:a==="row"?t+o*(i/100):t,top:a==="column"?n+r*(i/100):n,width:a==="row"?0:o,height:a==="column"?0:r,parentLeft:t,parentTop:n,parentWidth:o,parentHeight:r},T={panes:[],splitters:[]},D={panes:[],splitters:[]};if(a==="row"){let h=o*(i/100);T=pe(u,t,n,h,r,`${l}-L`),D=pe(d,t+h,n,o-h,r,`${l}-R`);}else {let h=r*(i/100);T=pe(u,t,n,o,h,`${l}-T`),D=pe(d,t,n+h,o,r-h,`${l}-B`);}return {panes:[...T.panes,...D.panes],splitters:[b,...T.splitters,...D.splitters]}}function gt(e,t,n,o){if(!(t==="tab"&&n&&e.includes(n))||!o)return -1;let a=e.indexOf(n);return o==="before"?a:a+1}function we(e){try{return JSON.stringify(e)}catch{return ""}}function Vt(e){let{initialLayout:t,layout:n,onChange:o,fullscreenPaneId:r,onFullscreenChange:l,locked:a=false}=e,[i,u]=tn.useState(()=>n!==void 0?n:t??null),[d,g]=tn.useState(()=>we(n!==void 0?n:null)),[b,T]=tn.useState(r||null),[D,h]=tn.useState(a),[A,L]=tn.useState(null),[B,p]=tn.useState(null),[C,H]=tn.useState(null),[N,P]=tn.useState(null),W=tn.useRef(null),J=tn.useCallback(s=>{W.current=s;},[]),O=tn.useRef(i);O.current=i;let M=tn.useRef(A);M.current=A;let ne=tn.useRef(o);ne.current=o;let ee=tn.useRef(l);ee.current=l;let _=tn.useCallback(s=>{T(s),ee.current?.(s);},[]);if(tn.useEffect(()=>{h(a);},[a]),tn.useEffect(()=>{r!==void 0&&T(r);},[r]),n!==void 0){let s=we(n);s!==d&&(g(s),u(n));}let S=tn.useCallback(s=>(...f)=>{let k=O.current,E=s(k,...f);we(k)!==we(E)&&(O.current=E,u(E),ne.current?.(E));},[]),y=tn.useCallback(S((s,f)=>typeof f=="function"?f(s):f),[S]),F=y,x=tn.useCallback(s=>{T(null),ee.current?.(null),L(null),p(null),H(null),P(null),y(s);},[y]),Z=tn.useCallback(S((s,f)=>me(s,f)),[S]),w=tn.useCallback(S((s,f,k,E)=>{let z=ue(s,f)??s;return pt(z,k,f,E)}),[S]),c=tn.useCallback(S((s,f,k,E,z)=>{let ie=j(s,f)??K(s,f);if(!ie)return s;let re=j(s,z)??K(s,z)??{type:"pane",id:z,tabs:[z],activeTabId:z},fe=me(s,z);return xe(fe,ie.id,k,E,re)}),[S]),V=tn.useCallback(S((s,f,k)=>he(s,f,k)),[S]),I=tn.useCallback(S((s,f,k)=>Ee(s,f,k)),[S]),v=tn.useCallback(S((s,f,k)=>{let E=j(s,f)??K(s,f);return E?Le(s,E.id,k):s}),[S]),q=tn.useCallback(S((s,f,k)=>{let E=j(s,f)??K(s,f);return E?ye(s,E.id,k):s}),[S]),X=tn.useCallback(S((s,f,k)=>{let E=j(s,k)??K(s,k);return E?ft(s,f,E.id):s}),[S]),U=tn.useCallback(S((s,f,k,E)=>Me(s,f,k,E)),[S]),G=tn.useCallback(S((s,f)=>ue(s,f)),[S]),Q=tn.useCallback(s=>{let f=j(O.current,s);return !f&&M.current&&(f=j(M.current,s)),f},[]),m=tn.useCallback(s=>{let f=K(O.current,s);return !f&&M.current&&(f=K(M.current,s)),f},[]),R=tn.useCallback(s=>{let f=Xe(O.current,s);return !f&&M.current&&(f=Xe(M.current,s)),f},[]),$=tn.useCallback(s=>{let f=Ye(O.current,s);return !f&&M.current&&(f=Ye(M.current,s)),f},[]),oe=tn.useCallback(s=>{let f=Je(O.current,s);return !f&&M.current&&(f=Je(M.current,s)),f},[]);return {layout:i,setLayout:x,_internalSetLayout:F,layoutBeforeDrag:A,setLayoutBeforeDrag:L,fullscreenPaneId:b,setFullscreenPaneId:_,locked:D,setLocked:h,activeId:B,setActiveId:p,activeType:C,setActiveType:H,dismissIntentId:N,setDismissIntentId:P,containerRef:W,setContainerRef:J,removePane:Z,addTab:w,updateMetadata:I,updatePaneLock:v,selectTab:q,mergeTab:X,moveTab:U,removeTab:G,splitPane:c,updateSplitPercentage:V,findPaneById:Q,findPaneContainingTab:m,findTabById:R,getTabMetadata:$,getActiveTabMetadata:oe}}var ro=8,ao=8,so=4;function bt({cursor:e,resizerEl:t,onMove:n,onEnd:o}){document.body.classList.add("zeugma-resizing");let r=document.createElement("style");r.id="zeugma-global-cursor-style",r.textContent=`
1
+ 'use strict';var rn=require('react'),core=require('@dnd-kit/core'),jsxRuntime=require('react/jsx-runtime'),reactDom=require('react-dom');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var rn__default=/*#__PURE__*/_interopDefault(rn);function ct(e){let t=rn.useRef(null);return rn.useEffect(()=>{if(!e){t.current=null;return}let n=o=>{t.current={x:o.clientX,y:o.clientY};},r=o=>{let s=o.touches[0]||o.changedTouches[0];s&&(t.current={x:s.clientX,y:s.clientY});};return window.addEventListener("pointermove",n,{passive:true}),window.addEventListener("touchmove",r,{passive:true}),()=>{window.removeEventListener("pointermove",n),window.removeEventListener("touchmove",r);}},[e]),t}function ut(e){rn.useEffect(()=>(e?document.body.style.setProperty("cursor","not-allowed","important"):document.body.style.removeProperty("cursor"),()=>{document.body.style.removeProperty("cursor");}),[e]);}function dt(){let[e,t]=rn.useState({}),n=rn.useRef({}),r=rn.useRef(true);rn.useEffect(()=>(r.current=true,()=>{r.current=false;}),[]);let o=rn.useCallback((a,l)=>{r.current&&t(c=>{if(!l){if(!c[a])return c;let d={...c};return delete d[a],d}return c[a]===l?c:{...c,[a]:l}});},[]),s=rn.useCallback((a,l)=>{n.current[a]=l;},[]);return {portalTargets:e,registerPortalTarget:o,registerRenderCallback:s,renderCallbacksRef:n}}function ce(){return "pane-"+Math.random().toString(36).substring(2,11)}function be(e,t){if(e===null)return null;if(e.type==="pane")return e.id===t?null:e;let n=be(e.first,t),r=be(e.second,t);return n===null?r:r===null?n:{...e,first:n,second:r}}function de(e,t){if(e===null)return null;if(e.type==="pane"){if(e.tabs.includes(t)){let o=e.tabs.filter(l=>l!==t);if(o.length===0)return null;let s=e.activeTabId;e.activeTabId===t&&(s=o[0]);let a={...e.tabsMetadata};return delete a[t],{...e,tabs:o,activeTabId:s,tabsMetadata:Object.keys(a).length>0?a:void 0}}return e}let n=de(e.first,t),r=de(e.second,t);return n===null?r:r===null?n:{...e,first:n,second:r}}function ye(e,t,n,r,o){if(e===null)return typeof o=="string"?{type:"pane",id:ce(),tabs:[o],activeTabId:o}:o;if(e.type==="pane"){if(e.id===t){let s=typeof o=="string"?{type:"pane",id:ce(),tabs:[o],activeTabId:o}:o,a=r==="left"||r==="top";return {type:"split",direction:n,first:a?s:e,second:a?e:s,splitPercentage:50}}return e}return {...e,first:ye(e.first,t,n,r,o)||e.first,second:ye(e.second,t,n,r,o)||e.second}}function Ut(e,t){if(e===null)return t;function n(r,o){return r.type==="pane"?{type:"split",direction:o==="row"?"column":"row",splitPercentage:50,first:r,second:t}:{...r,second:n(r.second,r.direction)}}return n(e,null)}function pt(e,t,n,r){if(e===null)return {type:"pane",id:ce(),tabs:[n],activeTabId:n,tabsMetadata:r?{[n]:r}:void 0};let o=t?ee(e,t):null;if(o&&o.type==="pane"){let l=function(c){if(c.type==="pane"&&c.id===t){let d=[...c.tabs];d.includes(n)||d.push(n);let g=c.tabsMetadata;return r&&(g={...c.tabsMetadata,[n]:r}),{...c,tabs:d,activeTabId:n,tabsMetadata:g}}return c.type==="split"?{...c,first:l(c.first),second:l(c.second)}:c};return l(e)}let s={type:"pane",id:ce(),tabs:[n],activeTabId:n,tabsMetadata:r?{[n]:r}:void 0};return Ut(e,s)}function he(e,t,n){return e===null?null:e===t?{...e,splitPercentage:n}:e.type==="split"?{...e,first:he(e.first,t,n)||e.first,second:he(e.second,t,n)||e.second}:e}function ee(e,t){return e===null?null:e.type==="pane"?e.id===t?e:null:e.type==="split"?ee(e.first,t)??ee(e.second,t):null}function _(e,t){return e===null?null:e.type==="pane"?e.tabs.includes(t)?e:null:e.type==="split"?_(e.first,t)??_(e.second,t):null}function qe(e,t){let n=_(e,t);if(!n)return null;let r=n.tabs.indexOf(t);return {id:t,paneId:n.id,isActive:n.activeTabId===t,index:r,metadata:n.tabsMetadata?.[t]}}function Je(e,t){return _(e,t)?.tabsMetadata?.[t]}function _e(e,t){let n=ee(e,t);return n?.tabsMetadata?.[n.activeTabId]}function Le(e,t,n){if(e===null)return null;if(e.type==="pane"){if(e.tabs.includes(t)){let r=e.tabsMetadata||{},o=r[t],s=n(o),a={...r};return s===void 0?delete a[t]:a[t]=s,{...e,tabsMetadata:Object.keys(a).length>0?a:void 0}}return e}return e.type==="split"?{...e,first:Le(e.first,t,n)??e.first,second:Le(e.second,t,n)??e.second}:e}function Ee(e,t,n){if(e===null)return null;if(e.type==="pane"){if(e.id===t){if(n===false){let{locked:r,...o}=e;return o}return {...e,locked:n}}return e}return e.type==="split"?{...e,first:Ee(e.first,t,n)??e.first,second:Ee(e.second,t,n)??e.second}:e}function Re(e,t,n){return e===null?null:e.type==="pane"?e.id===t?e.activeTabId===n?e:{...e,activeTabId:n}:e:e.type==="split"?{...e,first:Re(e.first,t,n)??e.first,second:Re(e.second,t,n)??e.second}:e}function ft(e,t,n){if(e===null)return null;let o=_(e,t)?.tabsMetadata?.[t],s=de(e,t);if(s===null)return {type:"pane",id:ce(),tabs:[t],activeTabId:t,tabsMetadata:o?{[t]:o}:void 0};function a(l){if(l.type==="pane"){if(l.id===n){let c=[...l.tabs];c.includes(t)||c.push(t);let d={...l.tabsMetadata};return o&&(d[t]=o),{...l,tabs:c,activeTabId:t,tabsMetadata:Object.keys(d).length>0?d:void 0}}return l}return l.type==="split"?{...l,first:a(l.first),second:a(l.second)}:l}return a(s)}function Me(e,t,n,r="before"){if(e===null)return null;let s=_(e,t)?.tabsMetadata?.[t],a=de(e,t);if(a===null)return {type:"pane",id:ce(),tabs:[t],activeTabId:t,tabsMetadata:s?{[t]:s}:void 0};function l(c){if(c.type==="pane"){if(c.tabs.includes(n)){let g=[...c.tabs].filter(w=>w!==t),h=g.indexOf(n);h<0&&(h=0),r==="after"&&(h+=1),g.splice(h,0,t);let y={...c.tabsMetadata};return s&&(y[t]=s),{...c,tabs:g,activeTabId:t,tabsMetadata:Object.keys(y).length>0?y:void 0}}return c}return c.type==="split"?{...c,first:l(c.first),second:l(c.second)}:c}return l(a)}function ge(e,t=0,n=0,r=100,o=100,s="root"){if(e===null)return {panes:[],splitters:[]};if(e.type==="pane")return {panes:[{paneId:e.id,left:t,top:n,width:r,height:o,node:e}],splitters:[]};let{direction:a,splitPercentage:l,first:c,second:d}=e,h={id:`splitter-${s}-${a}`,currentNode:e,direction:a,left:a==="row"?t+r*(l/100):t,top:a==="column"?n+o*(l/100):n,width:a==="row"?0:r,height:a==="column"?0:o,parentLeft:t,parentTop:n,parentWidth:r,parentHeight:o},y={panes:[],splitters:[]},w={panes:[],splitters:[]};if(a==="row"){let P=r*(l/100);y=ge(c,t,n,P,o,`${s}-L`),w=ge(d,t+P,n,r-P,o,`${s}-R`);}else {let P=o*(l/100);y=ge(c,t,n,r,P,`${s}-T`),w=ge(d,t,n+P,r,o-P,`${s}-B`);}return {panes:[...y.panes,...w.panes],splitters:[h,...y.splitters,...w.splitters]}}function gt(e,t,n,r){if(!(t==="tab"&&n&&e.includes(n))||!r)return -1;let a=e.indexOf(n);return r==="before"?a:a+1}function we(e){try{return JSON.stringify(e)}catch{return ""}}function Xt(e){let{initialLayout:t,layout:n,onChange:r,fullscreenPaneId:o,onFullscreenChange:s,locked:a=false}=e,[l,c]=rn.useState(()=>n!==void 0?n:t??null),[d,g]=rn.useState(()=>we(n!==void 0?n:null)),[h,y]=rn.useState(o||null),[w,P]=rn.useState(a),[A,I]=rn.useState(null),[B,m]=rn.useState(null),[O,U]=rn.useState(null),[R,f]=rn.useState(null),N=rn.useRef(null),Y=rn.useCallback(i=>{N.current=i;},[]),Z=rn.useRef(l);Z.current=l;let z=rn.useRef(A);z.current=A;let G=rn.useRef(r);G.current=r;let te=rn.useRef(s);te.current=s;let q=rn.useCallback(i=>{y(i),te.current?.(i);},[]);if(rn.useEffect(()=>{P(a);},[a]),rn.useEffect(()=>{o!==void 0&&y(o);},[o]),n!==void 0){let i=we(n);i!==d&&(g(i),c(n));}let C=rn.useCallback(i=>(...p)=>{let E=Z.current,M=i(E,...p);we(E)!==we(M)&&(Z.current=M,c(M),G.current?.(M));},[]),D=rn.useCallback(C((i,p)=>typeof p=="function"?p(i):p),[C]),K=D,v=rn.useCallback(i=>{y(null),te.current?.(null),I(null),m(null),U(null),f(null),D(i);},[D]),F=rn.useCallback(C((i,p)=>be(i,p)),[C]),x=rn.useCallback(C((i,p,E,M)=>{let H=de(i,p)??i;return pt(H,E,p,M)}),[C]),u=rn.useCallback(C((i,p,E,M,H)=>{let ie=ee(i,p)??_(i,p);if(!ie)return i;let oe=ee(i,H)??_(i,H)??{type:"pane",id:H,tabs:[H],activeTabId:H},pe=be(i,H);return ye(pe,ie.id,E,M,oe)}),[C]),$=rn.useCallback(C((i,p,E)=>he(i,p,E)),[C]),L=rn.useCallback(C((i,p,E)=>Le(i,p,E)),[C]),T=rn.useCallback(C((i,p,E)=>{let M=ee(i,p)??_(i,p);return M?Ee(i,M.id,E):i}),[C]),ne=rn.useCallback(C((i,p,E)=>{let M=ee(i,p)??_(i,p);return M?Re(i,M.id,E):i}),[C]),V=rn.useCallback(C((i,p,E)=>{let M=ee(i,E)??_(i,E);return M?ft(i,p,M.id):i}),[C]),W=rn.useCallback(C((i,p,E,M)=>Me(i,p,E,M)),[C]),J=rn.useCallback(C((i,p)=>de(i,p)),[C]),Q=rn.useCallback(i=>{let p=ee(Z.current,i);return !p&&z.current&&(p=ee(z.current,i)),p},[]),b=rn.useCallback(i=>{let p=_(Z.current,i);return !p&&z.current&&(p=_(z.current,i)),p},[]),S=rn.useCallback(i=>{let p=qe(Z.current,i);return !p&&z.current&&(p=qe(z.current,i)),p},[]),k=rn.useCallback(i=>{let p=Je(Z.current,i);return !p&&z.current&&(p=Je(z.current,i)),p},[]),re=rn.useCallback(i=>{let p=_e(Z.current,i);return !p&&z.current&&(p=_e(z.current,i)),p},[]);return {layout:l,setLayout:v,_internalSetLayout:K,layoutBeforeDrag:A,setLayoutBeforeDrag:I,fullscreenPaneId:h,setFullscreenPaneId:q,locked:w,setLocked:P,activeId:B,setActiveId:m,activeType:O,setActiveType:U,dismissIntentId:R,setDismissIntentId:f,containerRef:N,setContainerRef:Y,removePane:F,addTab:x,updateMetadata:L,updatePaneLock:T,selectTab:ne,mergeTab:V,moveTab:W,removeTab:J,splitPane:u,updateSplitPercentage:$,findPaneById:Q,findPaneContainingTab:b,findTabById:S,getTabMetadata:k,getActiveTabMetadata:re}}function bt({cursor:e,resizerEl:t,onMove:n,onEnd:r}){document.body.classList.add("zeugma-resizing");let o=document.createElement("style");o.id="zeugma-global-cursor-style",o.textContent=`
2
2
  * {
3
3
  cursor: ${e} !important;
4
4
  user-select: none !important;
5
5
  }
6
- `,document.head.appendChild(r),t.setAttribute("data-resizing","true");let l=i=>{n(i);},a=()=>{document.body.classList.remove("zeugma-resizing"),t.removeAttribute("data-resizing");let i=document.getElementById("zeugma-global-cursor-style");i&&i.remove(),document.removeEventListener("pointermove",l),document.removeEventListener("pointerup",a),o();};document.addEventListener("pointermove",l),document.addEventListener("pointerup",a);}var Ge=tn.createContext(void 0),Ke=tn.createContext(void 0),Ze=tn.createContext(void 0),Qe=tn.createContext(void 0),se=()=>{let e=tn.useContext(Ge);if(!e)throw new Error("useZeugmaState must be used within a Zeugma provider");return e},$e=()=>{let e=tn.useContext(Ke);if(!e)throw new Error("useZeugmaActions must be used within a Zeugma provider");return e},Ae=()=>{let e=tn.useContext(Qe);if(!e)throw new Error("useZeugmaDrag must be used within a Zeugma provider");return e};var Wt=()=>{let e=se(),t=$e();return {layout:e.layout,setLayout:e.setLayout,fullscreenPaneId:e.fullscreenPaneId,setFullscreenPaneId:t.setFullscreenPaneId,locked:e.locked,setLocked:t.setLocked,removePane:t.removePane,addTab:t.addTab,updateMetadata:t.updateMetadata,updatePaneLock:t.updatePaneLock,selectTab:t.selectTab,mergeTab:t.mergeTab,removeTab:t.removeTab,splitPane:t.splitPane,updateSplitPercentage:t.updateSplitPercentage,moveTab:t.moveTab,findPaneById:e.findPaneById,findPaneContainingTab:e.findPaneContainingTab,findTabById:e.findTabById,getTabMetadata:e.getTabMetadata,getActiveTabMetadata:e.getActiveTabMetadata}};var ze=class extends core.PointerSensor{static activators=[{eventName:"onPointerDown",handler:({nativeEvent:t})=>!t.target?.closest(".drag-cancel")}]},Be=class extends core.TouchSensor{static activators=[{eventName:"onTouchStart",handler:({nativeEvent:t})=>!t.target?.closest(".drag-cancel")}]};function He(e){if(e instanceof MouseEvent||e instanceof PointerEvent)return {x:e.clientX,y:e.clientY};if(typeof TouchEvent<"u"&&e instanceof TouchEvent){let t=e.touches[0]||e.changedTouches[0];if(t)return {x:t.clientX,y:t.clientY}}return null}function ht(e){let{layout:t,_internalSetLayout:n,layoutBeforeDrag:o,setLayoutBeforeDrag:r,activeId:l,setActiveId:a,setActiveType:i,dismissIntentId:u,setDismissIntentId:d,setOverTabId:g,setOverTabPosition:b,containerRef:T,dragActivationDistance:D,enableDragToDismiss:h,dismissThreshold:A,onRemove:L,onDragStart:B,onDragEnd:p,onDismissIntentChange:C,removeTab:H}=e,N=tn.useRef(null),P=ct(l),[W,J]=tn.useState(false);ut(W);let O=core.useSensors(core.useSensor(ze,{activationConstraint:{distance:D}}),core.useSensor(Be,{activationConstraint:{delay:250,tolerance:5}})),M=tn.useCallback(y=>{let x=y.active.id.toString().startsWith("tab-header-"),Z=core.pointerWithin(y),w=x?Z:Z.filter(c=>!c.id.toString().startsWith("tab-drop-"));if(w.length>0)return [...w].sort((V,I)=>{let v=V.id.toString(),q=I.id.toString();if(x){let G=v.startsWith("tab-drop-"),Q=q.startsWith("tab-drop-");if(G&&!Q)return -1;if(!G&&Q)return 1}let X=v.startsWith("drop-root-"),U=q.startsWith("drop-root-");return X&&!U?-1:!X&&U?1:0});if(x){let c=y.droppableContainers.filter(V=>V.id.toString().startsWith("tab-drop-"));return core.closestCenter({...y,droppableContainers:c})}return []},[]);return {sensors:O,collisionDetection:M,onDragStart:y=>{let F=y.active.id.toString(),x=F.startsWith("tab-header-"),Z=x?F.substring(11):F;a(Z),i(x?"tab":"pane"),g(null),b(null);let w=y.activatorEvent;P.current=He(w),h&&T.current?N.current=T.current.getBoundingClientRect():N.current=null;let c=t;if(x){let V=K(t,Z);V&&(c=ye(t,V.id,Z)||t);}r(c),x&&c!==t&&n(c),B&&B(Z);},onDragMove:y=>{let{over:F}=y,x=F?.id.toString()||"",Z=x.startsWith("drop-locked-");J(m=>m===Z?m:Z);let w=y.active.id.toString(),c=w.startsWith("tab-header-"),V=c?w.substring(11):w,I=x.match(/^tab-drop-(.+)$/);if(I&&F&&c){let[,m]=I;if(V!==m){let R="before",$=F.rect,oe=y.activatorEvent,te=null;if(P.current)te=P.current.x;else {let s=He(oe);s&&(te=s.x+y.delta.x);}if(te!==null){let s=$.left+$.width/2;te>s&&(R="after");}g(s=>s===m?s:m),b(s=>s===R?s:R);}else g(R=>R===null?R:null),b(R=>R===null?R:null);}else g(m=>m===null?m:null),b(m=>m===null?m:null);if(!h)return;let v=N.current;if(!v){u!==null&&(d(null),C?.(null));return}let q=y.activatorEvent,X=null,U=null;if(P.current)X=P.current.x,U=P.current.y;else {let m=He(q);m&&(X=m.x+y.delta.x,U=m.y+y.delta.y);}let G=0;if(X!==null&&U!==null){let m=0,R=0;X<v.left?m=v.left-X:X>v.right&&(m=X-v.right),U<v.top?R=v.top-U:U>v.bottom&&(R=U-v.bottom),G=Math.sqrt(m*m+R*R);}else {let m=y.active.rect.current.translated;if(m){let R=m.left+m.width/2,$=m.top+m.height/2,oe=0,te=0;R<v.left?oe=v.left-R:R>v.right&&(oe=R-v.right),$<v.top?te=v.top-$:$>v.bottom&&(te=$-v.bottom),G=Math.sqrt(oe*oe+te*te);}}G>A?u!==V&&(d(V),C?.(V)):u!==null&&(d(null),C?.(null));},onDragEnd:y=>{a(null),i(null),J(false),g(null),b(null);let{active:F,over:x}=y,Z=F.id.toString(),w=Z.startsWith("tab-header-"),c=w?Z.substring(11):Z,V=h&&u===c;d(null),C?.(null),N.current=null;let I=o||t;if(r(null),V){L?L(c):H(c),p&&p(c,null,null);return}if(!x){n(I),p&&p(c,null,null);return}let v=x.id.toString();if(v.startsWith("drop-locked-")){n(I),p&&p(c,null,null);return}let q=v.match(/^tab-drop-(.+)$/);if(q){if(!w){n(I),p&&p(c,null,null);return}let[,k]=q;if(c!==k){let E="before",z=x.rect,ie=y.activatorEvent,re=null;if(P.current)re=P.current.x;else {let ae=He(ie);ae&&(re=ae.x+y.delta.x);}if(re!==null){let ae=z.left+z.width/2;re>ae&&(E="after");}let fe=Me(I,c,k,E);n(fe),p&&p(c,k,{type:"move",position:"center"});}else n(I),p&&p(c,null,null);return}let X=v.match(/^drop-root-(1\/4|1\/3)-(top|bottom|left|right|start|end)$/);if(X){let[,k,E]=X,z=E;z==="start"&&(z="left"),z==="end"&&(z="right");let ie=w?ue(I,c):me(I,c),re;if(w){let ae=K(I,c)?.tabsMetadata?.[c];re={type:"pane",id:ce(),tabs:[c],activeTabId:c,tabsMetadata:ae?{[c]:ae}:void 0};}else re=j(I,c)??{type:"pane",id:ce(),tabs:[c],activeTabId:c};if(ie===null)n(re);else {let fe=z==="left"||z==="right",ae=z==="left"||z==="top",Se=50;k==="1/4"?Se=ae?25:75:k==="1/3"&&(Se=ae?100/3:200/3),n({type:"split",direction:fe?"row":"column",first:ae?re:ie,second:ae?ie:re,splitPercentage:Se});}p&&p(c,"root",{type:"split",direction:z==="left"||z==="right"?"row":"column",position:z});return}let U=v.match(/^drop-(left|right|top|bottom)-(.+)$/);if(!U){n(I),p&&p(c,null,null);return}let[,G,Q]=U,m=w?K(I,c):j(I,c),R=m&&m.id===Q,$=m&&m.tabs.length===1;if(c===Q||R&&$){n(I),p&&p(c,null,null);return}let oe=G==="left"||G==="right"?"row":"column",te;if(w){let E=K(I,c)?.tabsMetadata?.[c];te={type:"pane",id:ce(),tabs:[c],activeTabId:c,tabsMetadata:E?{[c]:E}:void 0};}else te=j(I,c)??{type:"pane",id:ce(),tabs:[c],activeTabId:c};let s=w?ue(I,c):me(I,c),f=xe(s,Q,oe,G,te);n(f),p&&p(c,Q,{type:"split",direction:oe,position:G});},onDragCancel:()=>{a(null),i(null),J(false),g(null),b(null),d(null),C?.(null),N.current=null,o!==null&&(n(o),r(null));}}}var Tt=({activeId:e,render:t,className:n})=>{let o=tn.useRef(null);return tn.useEffect(()=>{let r=l=>{o.current&&(o.current.style.transform=`translate(${l.clientX+12}px, ${l.clientY+12}px)`);};return document.addEventListener("pointermove",r),()=>document.removeEventListener("pointermove",r)},[]),jsxRuntime.jsx("div",{ref:o,className:n,style:{position:"fixed",top:0,left:0,zIndex:9999,pointerEvents:"none"},children:t(e)})};var Pt=tn__default.default.memo(({tabDetails:e,target:t,renderWidget:n})=>{let{id:o}=e,[r,l]=tn.useState(false),a=tn.useRef(null);if(tn.useEffect(()=>{l(true);},[]),tn.useEffect(()=>{if(!r||!a.current)return;let u=a.current;if(t)t.appendChild(u);else {let d=document.getElementById("zeugma-hidden-portal-container");d||(d=document.createElement("div"),d.id="zeugma-hidden-portal-container",d.style.display="none",document.body.appendChild(d)),d.appendChild(u);}},[t,r]),tn.useEffect(()=>()=>{a.current&&a.current.remove();},[]),!r)return null;a.current||(a.current=document.createElement("div"),a.current.className=`zeugma-portal-wrapper-${o}`,a.current.style.width="100%",a.current.style.height="100%");let i=a.current;return !i||!n?null:reactDom.createPortal(n(e),i)},(e,t)=>e.target===t.target&&e.renderWidget===t.renderWidget&&e.tabDetails.id===t.tabDetails.id&&e.tabDetails.paneId===t.tabDetails.paneId&&e.tabDetails.isActive===t.tabDetails.isActive&&e.tabDetails.index===t.tabDetails.index&&e.tabDetails.metadata===t.tabDetails.metadata);function et({containerRef:e,isRow:t,direction:n,splitPercentage:o,resizerSize:r,snapThreshold:l,layout:a,currentNode:i,onLayoutChange:u,onResizeStart:d,onResizeEnd:g,parentLeft:b,parentTop:T,parentWidth:D,parentHeight:h}){let{onResizeStart:A,onResize:L,onResizeEnd:B,minSplitPercentage:p=5,maxSplitPercentage:C=95,locked:H=false}=se();return tn.useCallback(N=>{if(H)return;N.preventDefault();let P=e.current;if(!P)return;d&&d(),A&&A(i);let W=P.getBoundingClientRect(),J=N.clientX,O=N.clientY,M=o,ne=N.currentTarget,ee=W.left+W.width*(b/100),_=W.top+W.height*(T/100),S=W.width*(D/100),y=W.height*(h/100),x=Array.from(document.querySelectorAll('div[role="separator"][data-direction]')).filter(w=>w!==ne&&w.getAttribute("data-direction")===n).map(w=>{let c=w.getBoundingClientRect();return t?c.left+c.width/2:c.top+c.height/2}),Z=M;bt({cursor:t?"col-resize":"row-resize",resizerEl:ne,onMove:w=>{let c=t?(w.clientX-J)/S*100:(w.clientY-O)/y*100,V=M+c,I=t?ee+(S-r)*(V/100)+r/2:_+(y-r)*(V/100)+r/2,v=1/0,q=null;for(let Q of x){let m=Math.abs(I-Q);m<l&&m<v&&(v=m,q=Q);}let X=V;q!==null&&(X=t?(q-r/2-ee)/(S-r)*100:(q-r/2-_)/(y-r)*100);let U=Math.max(p,Math.min(C,X));Z=U;let G=he(a,i,U);if(G){let{panes:Q,splitters:m}=pe(G),R=e.current;if(R){for(let $ of Q)R.style.setProperty(`--pane-left-${$.paneId}`,`${$.left}%`),R.style.setProperty(`--pane-top-${$.paneId}`,`${$.top}%`),R.style.setProperty(`--pane-width-${$.paneId}`,`${$.width}%`),R.style.setProperty(`--pane-height-${$.paneId}`,`${$.height}%`);for(let $ of m)R.style.setProperty(`--splitter-pos-${$.id}`,`${$.direction==="row"?$.left:$.top}%`);}}L&&L(i,U);},onEnd:()=>{let w=he(a,i,Z),c=e.current;if(c){let{panes:V,splitters:I}=pe(w);for(let v of V)c.style.removeProperty(`--pane-left-${v.paneId}`),c.style.removeProperty(`--pane-top-${v.paneId}`),c.style.removeProperty(`--pane-width-${v.paneId}`),c.style.removeProperty(`--pane-height-${v.paneId}`);for(let v of I)c.style.removeProperty(`--splitter-pos-${v.id}`);}u(w),g&&g(),B&&B(i,Z);}});},[e,t,n,o,r,l,a,i,u,d,g,A,L,B,p,C,b,T,D,h])}var dn=({splitter:e,resizerSize:t,snapThreshold:n,containerRef:o})=>{let{layout:r,setLayout:l,classNames:a,locked:i}=se(),[u,d]=tn.useState(false),{currentNode:g,direction:b,left:T,top:D,width:h,height:A,parentLeft:L,parentTop:B,parentWidth:p,parentHeight:C}=e,H=b==="row",N=et({containerRef:o,isRow:H,direction:b,splitPercentage:g.splitPercentage,resizerSize:t,snapThreshold:n,layout:r,currentNode:g,onLayoutChange:l,onResizeStart:()=>d(true),onResizeEnd:()=>d(false),parentLeft:L,parentTop:B,parentWidth:p,parentHeight:C}),P=H?{position:"absolute",left:`calc(var(--splitter-pos-${e.id}, ${T}%) - ${t/2}px)`,top:`calc(${D}% + ${t/2}px)`,width:`${t}px`,height:`calc(${A}% - ${t}px)`,cursor:i?"default":"col-resize",pointerEvents:i?"none":"auto",zIndex:10,userSelect:"none",touchAction:"none",boxSizing:"border-box"}:{position:"absolute",left:`calc(${T}% + ${t/2}px)`,top:`calc(var(--splitter-pos-${e.id}, ${D}%) - ${t/2}px)`,width:`calc(${h}% - ${t}px)`,height:`${t}px`,cursor:i?"default":"row-resize",pointerEvents:i?"none":"auto",zIndex:10,userSelect:"none",touchAction:"none",boxSizing:"border-box"};return jsxRuntime.jsx("div",{className:a.resizer||"","data-direction":b,"data-resizing":u||void 0,style:P,onPointerDown:N,role:"separator","aria-valuenow":g.splitPercentage,"aria-valuemin":5,"aria-valuemax":95})},pn=tn__default.default.memo(({paneId:e,renderPane:t})=>jsxRuntime.jsx(jsxRuntime.Fragment,{children:t(e)}),(e,t)=>e.paneId===t.paneId&&e.renderPane===t.renderPane),tt=({renderPane:e,tree:t,resizerSize:n=4,snapThreshold:o})=>{let{layout:r,activeId:l,dismissIntentId:a,setContainerRef:i,fullscreenPaneId:u,snapThreshold:d,locked:g,classNames:b}=se(),T=o!==void 0?o:d??8,D=t!==void 0?t:r,h=tn.useRef(null),{panes:A,splitters:L}=tn.useMemo(()=>D?pe(D):{panes:[],splitters:[]},[D]);if(!D)return null;let B=()=>jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[A.map(p=>{let C=u===p.paneId;return jsxRuntime.jsx("div",{style:{position:"absolute",left:C?"0%":`var(--pane-left-${p.paneId}, ${p.left}%)`,top:C?"0%":`var(--pane-top-${p.paneId}, ${p.top}%)`,width:C?"100%":`var(--pane-width-${p.paneId}, ${p.width}%)`,height:C?"100%":`var(--pane-height-${p.paneId}, ${p.height}%)`,overflow:"hidden",zIndex:C?20:1,display:u&&!C?"none":"block",padding:C?"0px":`${n/2}px`,boxSizing:"border-box"},children:jsxRuntime.jsx(pn,{paneId:p.paneId,renderPane:e})},p.paneId)}),!u&&L.map(p=>jsxRuntime.jsx(dn,{splitter:p,resizerSize:n,snapThreshold:T,containerRef:h},p.id))]});if(t===void 0){let p=l!==null&&l===a,C=N=>{i(N),h.current=N;},H=`${b.dashboard||""} ${p&&b.dashboardDismissActive||""} ${g&&b.dashboardLocked||""}`.trim();return jsxRuntime.jsxs("div",{ref:C,className:H,style:{position:"relative",width:"100%",height:"100%",overflow:"hidden"},children:[B(),l!==null&&!g&&jsxRuntime.jsx(Rt,{activeClassName:b.rootDropPreview??b.dropPreview})]})}return jsxRuntime.jsx("div",{ref:h,style:{position:"relative",width:"100%",height:"100%",overflow:"hidden"},children:B()})};var mn=e=>{let{controller:t,renderDragOverlay:n,classNames:o={},renderPane:r,resizerSize:l,dragActivationDistance:a=8,snapThreshold:i=8,minSplitPercentage:u=5,maxSplitPercentage:d=95,enableDragToDismiss:g=false,dismissThreshold:b=60,onRemove:T,onDragStart:D,onDragEnd:h,onResizeStart:A,onResize:L,onResizeEnd:B,onDismissIntentChange:p}=e,C=t,{layout:H,setLayout:N,_internalSetLayout:P,fullscreenPaneId:W,setFullscreenPaneId:J,locked:O,setLocked:M,findPaneById:ne,findPaneContainingTab:ee,findTabById:_,getTabMetadata:S,getActiveTabMetadata:y,activeId:F,setActiveId:x,activeType:Z,setActiveType:w,dismissIntentId:c,setDismissIntentId:V,containerRef:I,setContainerRef:v,layoutBeforeDrag:q,setLayoutBeforeDrag:X,removePane:U,addTab:G,updateMetadata:Q,updatePaneLock:m,selectTab:R,mergeTab:$,removeTab:oe,splitPane:te,updateSplitPercentage:s,moveTab:f}=C,{portalTargets:k,registerPortalTarget:E,registerRenderCallback:z,renderCallbacksRef:ie}=dt(),[re,fe]=tn.useState(null),[ae,Se]=tn.useState(null),at=ht({layout:H,_internalSetLayout:P,layoutBeforeDrag:q,setLayoutBeforeDrag:X,activeId:F,setActiveId:x,setActiveType:w,dismissIntentId:c,setDismissIntentId:V,setOverTabId:fe,setOverTabPosition:Se,containerRef:I,dragActivationDistance:a,enableDragToDismiss:g,dismissThreshold:b,onRemove:T,onDragStart:D,onDragEnd:h,onDismissIntentChange:p,removeTab:oe}),st=tn.useMemo(()=>o,[o.dashboard,o.dashboardDismissActive,o.pane,o.paneLocked,o.dropPreview,o.rootDropPreview,o.dragOverlay,o.resizer,o.dismissPreview,o.dashboardLocked,o.lockedPreview,o.tabDropPreview,o.tabSeparator,o.tabsContainer,o.tab,o.paneContainer,o.paneHeader,o.paneControls,o.paneButton,o.tabCloseButton,o.dragHandle]),it=tn.useCallback((le,ge)=>{B&&B(le,ge);},[B]),Zt=tn.useMemo(()=>({layout:H,setLayout:N,activeId:F,activeType:Z,dismissIntentId:c,setContainerRef:v,fullscreenPaneId:W,classNames:st,onRemove:T,onFullscreenChange:J,snapThreshold:i,onResizeStart:A,onResize:L,onResizeEnd:it,minSplitPercentage:u,maxSplitPercentage:d,locked:O,setLocked:M,findPaneById:ne,findPaneContainingTab:ee,findTabById:_,getTabMetadata:S,getActiveTabMetadata:y,renderPane:r}),[H,F,Z,c,v,W,st,T,J,i,A,L,u,d,N,it,O,M,ne,ee,_,S,y,r]),$t=tn.useMemo(()=>({overTabId:re,overTabPosition:ae}),[re,ae]),At=tn.useMemo(()=>({removePane:U,addTab:G,updateMetadata:Q,updatePaneLock:m,selectTab:R,mergeTab:$,removeTab:oe,setFullscreenPaneId:J,setLocked:M,splitPane:te,updateSplitPercentage:s,moveTab:f}),[U,G,Q,m,R,$,oe,J,M,te,s,f]),zt=tn.useMemo(()=>{let le=new Set;function ge(de){de&&(de.type==="pane"?de.tabs.forEach(Ht=>{le.add(Ht);}):de.type==="split"&&(ge(de.first),ge(de.second)));}return ge(H),q&&ge(q),Array.from(le).sort()},[H,F,q]),Bt=tn.useMemo(()=>({registerPortalTarget:E,registerRenderCallback:z,renderCallbacksRef:ie}),[E,z,ie]);return jsxRuntime.jsx(Ke.Provider,{value:At,children:jsxRuntime.jsx(Ge.Provider,{value:Zt,children:jsxRuntime.jsx(Qe.Provider,{value:$t,children:jsxRuntime.jsxs(Ze.Provider,{value:Bt,children:[jsxRuntime.jsx(core.DndContext,{id:"zeugma-dnd-context",...at,children:jsxRuntime.jsx(tt,{renderPane:r,resizerSize:l,snapThreshold:i})}),F&&Z&&n&&jsxRuntime.jsx(Tt,{activeId:F,render:le=>n({type:Z,id:le,isDismissing:F===c}),className:`${o.dragOverlay||""} ${F===c&&o.dismissPreview||""}`.trim()}),jsxRuntime.jsx("div",{id:"zeugma-portal-host",style:{display:"none"},children:zt.map(le=>{let ge=k[le],de=_(le);return de?jsxRuntime.jsx(Pt,{tabDetails:de,target:ge||null,renderWidget:ie.current[le]},le):null})})]})})})})};var hn={top:{"1/4":{position:"absolute",top:0,left:0,width:"100%",height:"24px",zIndex:100,pointerEvents:"auto"},"1/3":{position:"absolute",top:"24px",left:0,width:"100%",height:"24px",zIndex:100,pointerEvents:"auto"}},bottom:{"1/4":{position:"absolute",bottom:0,left:0,width:"100%",height:"24px",zIndex:100,pointerEvents:"auto"},"1/3":{position:"absolute",bottom:"24px",left:0,width:"100%",height:"24px",zIndex:100,pointerEvents:"auto"}},left:{"1/4":{position:"absolute",left:0,top:"48px",width:"24px",height:"calc(100% - 96px)",zIndex:100,pointerEvents:"auto"},"1/3":{position:"absolute",left:"24px",top:"48px",width:"24px",height:"calc(100% - 96px)",zIndex:100,pointerEvents:"auto"}},right:{"1/4":{position:"absolute",right:0,top:"48px",width:"24px",height:"calc(100% - 96px)",zIndex:100,pointerEvents:"auto"},"1/3":{position:"absolute",right:"24px",top:"48px",width:"24px",height:"calc(100% - 96px)",zIndex:100,pointerEvents:"auto"}}},Tn={top:{"1/4":{top:0,left:0,width:"100%",height:"60px",borderBottomLeftRadius:"12px",borderBottomRightRadius:"12px",borderTopLeftRadius:"0px",borderTopRightRadius:"0px"},"1/3":{top:0,left:0,width:"100%",height:"96px",borderBottomLeftRadius:"12px",borderBottomRightRadius:"12px",borderTopLeftRadius:"0px",borderTopRightRadius:"0px"}},bottom:{"1/4":{bottom:0,left:0,width:"100%",height:"60px",borderTopLeftRadius:"12px",borderTopRightRadius:"12px",borderBottomLeftRadius:"0px",borderBottomRightRadius:"0px"},"1/3":{bottom:0,left:0,width:"100%",height:"96px",borderTopLeftRadius:"12px",borderTopRightRadius:"12px",borderBottomLeftRadius:"0px",borderBottomRightRadius:"0px"}},left:{"1/4":{left:0,top:0,width:"60px",height:"100%",borderTopRightRadius:"12px",borderBottomRightRadius:"12px",borderTopLeftRadius:"0px",borderBottomLeftRadius:"0px"},"1/3":{left:0,top:0,width:"96px",height:"100%",borderTopRightRadius:"12px",borderBottomRightRadius:"12px",borderTopLeftRadius:"0px",borderBottomLeftRadius:"0px"}},right:{"1/4":{right:0,top:0,width:"60px",height:"100%",borderTopLeftRadius:"12px",borderBottomLeftRadius:"12px",borderTopRightRadius:"0px",borderBottomRightRadius:"0px"},"1/3":{right:0,top:0,width:"96px",height:"100%",borderTopLeftRadius:"12px",borderBottomLeftRadius:"12px",borderTopRightRadius:"0px",borderBottomRightRadius:"0px"}}},Pn=({id:e,fraction:t,edge:n,activeClassName:o})=>{let{setNodeRef:r,isOver:l}=core.useDroppable({id:e}),a={position:"absolute",pointerEvents:"none",zIndex:101,boxSizing:"border-box",...Tn[n][t]};return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("div",{ref:r,style:hn[n][t]}),l&&jsxRuntime.jsx("div",{className:o,style:a})]})},Rt=({activeClassName:e})=>jsxRuntime.jsx("div",{style:{position:"absolute",top:0,left:0,right:0,bottom:0,zIndex:99,pointerEvents:"none"},children:[{id:"drop-root-1/4-top",fraction:"1/4",edge:"top"},{id:"drop-root-1/3-top",fraction:"1/3",edge:"top"},{id:"drop-root-1/4-bottom",fraction:"1/4",edge:"bottom"},{id:"drop-root-1/3-bottom",fraction:"1/3",edge:"bottom"},{id:"drop-root-1/4-left",fraction:"1/4",edge:"left"},{id:"drop-root-1/3-left",fraction:"1/3",edge:"left"},{id:"drop-root-1/4-right",fraction:"1/4",edge:"right"},{id:"drop-root-1/3-right",fraction:"1/3",edge:"right"}].map(n=>jsxRuntime.jsx(Pn,{id:n.id,fraction:n.fraction,edge:n.edge,activeClassName:e},n.id))});var Oe=tn.createContext(null);var Cn={top:{position:"absolute",top:0,left:0,width:"100%",height:"25%",zIndex:20,pointerEvents:"auto"},bottom:{position:"absolute",bottom:0,left:0,width:"100%",height:"25%",zIndex:20,pointerEvents:"auto"},left:{position:"absolute",top:"25%",left:0,width:"50%",height:"50%",zIndex:20,pointerEvents:"auto"},right:{position:"absolute",top:"25%",right:0,width:"50%",height:"50%",zIndex:20,pointerEvents:"auto"},full:{position:"absolute",top:0,left:0,right:0,bottom:0,zIndex:20,pointerEvents:"auto",cursor:"not-allowed"}},Sn={top:{position:"absolute",top:0,left:0,right:0,height:"50%",zIndex:21,pointerEvents:"none",boxSizing:"border-box"},bottom:{position:"absolute",bottom:0,left:0,right:0,height:"50%",zIndex:21,pointerEvents:"none",boxSizing:"border-box"},left:{position:"absolute",top:0,bottom:0,left:0,width:"50%",zIndex:21,pointerEvents:"none",boxSizing:"border-box"},right:{position:"absolute",top:0,bottom:0,right:0,width:"50%",zIndex:21,pointerEvents:"none",boxSizing:"border-box"},full:{position:"absolute",top:0,left:0,right:0,bottom:0,zIndex:21,pointerEvents:"none",boxSizing:"border-box"}},nt=({id:e,position:t,activeClassName:n})=>{let{setNodeRef:o,isOver:r}=core.useDroppable({id:e});return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("div",{ref:o,style:Cn[t]}),r&&jsxRuntime.jsx("div",{className:n,style:Sn[t]})]})};var St=({children:e,className:t,style:n})=>{let o=tn.useContext(Oe);if(!o)throw new Error("<DragHandle> must be used inside a <Pane>");let{disabled:r,...l}=o;return jsxRuntime.jsx("div",{className:t,style:{cursor:r?"default":"grab",userSelect:r?"auto":"none",touchAction:r?"auto":"none",...n},...r?{}:l,children:e})};var An=tn.createContext(void 0);var Ie=({id:e,locked:t=false,children:n,className:o,style:r})=>{let{locked:l,classNames:a={},activeType:i}=se(),{overTabId:u}=Ae(),d=tn.useContext(ot),g=t||l||(d?.locked??false),{attributes:b,listeners:T,setNodeRef:D,isDragging:h}=core.useDraggable({id:`tab-header-${e}`,disabled:g}),{setNodeRef:A,isOver:L}=core.useDroppable({id:`tab-drop-${e}`,disabled:g||i==="pane"}),B=_=>{D(_),A(_);},p=L&&u===e,C=d?.tabs||[],H=C.indexOf(e),N=d?.activeTabId,W=H>0&&e!==N&&C[H-1]!==N?jsxRuntime.jsx("div",{className:a.tabSeparator}):null,J=d?d.activeTabId===e:false,O=d?.tabsMetadata?.[e],M=tn.useCallback(()=>{d?.selectTab(e);},[d,e]),ne=tn.useCallback(()=>{d?.removeTab(e);},[d,e]),ee=tn.useMemo(()=>({tabId:e,isActive:J,isDragging:h,isOver:p,metadata:O,locked:g,selectTab:M,removeTab:ne}),[e,J,h,p,O,g,M,ne]);return jsxRuntime.jsx(An.Provider,{value:ee,children:jsxRuntime.jsxs("div",{ref:B,className:o,style:{display:"inline-flex",position:"relative",cursor:g?"default":"grab",...r},...g?{}:T,...g?{}:b,children:[W,n({isDragging:h,isOver:p})]})})};var ot=tn.createContext(void 0);var It=(e,t)=>typeof e=="function"?e(t):e,rt=({tabs:e,activeTabId:t,locked:n,tabsMetadata:o,selectTab:r,removeTab:l,renderTab:a,classNames:i,styles:u})=>{let d=tn.useContext(Ve),g=e??d?.tabs??[],b=t??d?.activeTabId??"",T=n??d?.locked??false,D=o??d?.tabsMetadata,h=r??d?.selectTab??(()=>{}),A=l??d?.removeTab??(()=>{}),{classNames:L={},activeType:B}=se(),{overTabId:p,overTabPosition:C}=Ae(),H=tn.useMemo(()=>({tabs:g,activeTabId:b,locked:T,tabsMetadata:D,selectTab:h,removeTab:A}),[g,b,T,D,h,A]),N=gt(g,B,p,C);return jsxRuntime.jsx(ot.Provider,{value:H,children:jsxRuntime.jsxs("div",{className:i?.container,style:{display:"flex",alignItems:"center",height:"100%",...u?.container},children:[g.map((P,W)=>{let J=D?.[P],O=It(i?.tab,P),M=It(u?.tab,P),ne=W===N;return jsxRuntime.jsxs(tn__default.default.Fragment,{children:[ne&&L.tabDropPreview&&jsxRuntime.jsx("div",{style:{position:"relative",height:"100%",width:0,zIndex:10},children:jsxRuntime.jsx("div",{className:L.tabDropPreview,style:{position:"absolute",top:0,bottom:0,transform:W===0?"none":"translateX(-50%)"}})}),jsxRuntime.jsx(Ie,{id:P,locked:T,className:O,style:M,children:({isDragging:ee,isOver:_})=>a({tabId:P,activeTabId:b,isDragging:ee,isOver:_,metadata:J,onSelect:()=>h(P),onRemove:()=>A(P)})})]},P)}),N===g.length&&L.tabDropPreview&&jsxRuntime.jsx("div",{style:{position:"relative",height:"100%",width:0,zIndex:10},children:jsxRuntime.jsx("div",{className:L.tabDropPreview,style:{position:"absolute",top:0,bottom:0,transform:"translateX(-100%)"}})})]})})};rt.Tab=Ie;var Lt=({className:e,style:t,children:n})=>jsxRuntime.jsx("div",{className:e,style:t,children:n});var Ve=tn.createContext(void 0),kt=()=>{let e=tn.useContext(Ve);if(!e)throw new Error("usePaneContext must be used within a Pane component");return e},Yn=({children:e,className:t,style:n})=>{let{activeTabId:o}=kt(),{classNames:r}=se(),l=tn.useRef(null),a=tn.useContext(Ze);if(!a)throw new Error("PaneContent must be used within a Zeugma provider");let{registerPortalTarget:i,registerRenderCallback:u}=a,d=tn.useMemo(()=>typeof e=="function"?e:()=>e,[e]);return u(o,d),tn.useEffect(()=>{let g=l.current;return i(o,g),()=>{i(o,null);}},[o,i]),jsxRuntime.jsx("div",{ref:l,id:`zeugma-tab-target-${o}`,className:`${r.tabContentWrapper||""} ${t||""}`.trim(),style:{height:"100%",width:"100%",...n}})},Ce=({id:e,children:t,style:n,locked:o=false})=>{let{layout:r,activeId:l,classNames:a,fullscreenPaneId:i,onFullscreenChange:u,locked:d}=se(),{removePane:g,updateMetadata:b,selectTab:T,removeTab:D}=$e(),h=tn.useMemo(()=>j(r,e),[r,e]),A=h?.id??e,L=h?.tabs??[e],B=h?.activeTabId??e,p=h?.tabsMetadata,C=p?.[e],H=h?.locked??false,N=o||H,P=d||N,W=d||N,J=l!==null&&l!==e&&(!L.includes(l)||L.length>1)&&!W,{attributes:O,listeners:M,setNodeRef:ne}=core.useDraggable({id:e,disabled:P}),ee=l!==null&&L.includes(l),_=i===e,S=tn.useMemo(()=>({isDragging:ee,isFullscreen:_,toggleFullscreen:()=>u?.(_?null:e),remove:()=>{_&&u?.(null),g(A);},metadata:C,updateMetadata:x=>{b(e,x);},locked:P,tabs:L,activeTabId:B,selectTab:x=>T(A,x),removeTab:x=>{_&&x===B&&u?.(null),D(x);},tabsMetadata:p,updateTabMetadata:(x,Z)=>{b(x,Z);}}),[ee,_,u,e,D,C,b,P,L,B,T,A,p]),y=tn.useMemo(()=>P?{disabled:true}:{...M,...O},[M,O,P]),F=`${a.pane||""} ${N&&a.paneLocked||""}`.trim();return jsxRuntime.jsx(Ve.Provider,{value:{id:e,...S},children:jsxRuntime.jsx(Oe.Provider,{value:y,children:jsxRuntime.jsxs("div",{ref:ne,className:F,style:{position:"relative",width:"100%",height:"100%",...n},children:[t,J&&jsxRuntime.jsx("div",{style:{position:"absolute",top:0,left:0,right:0,bottom:0,zIndex:15,pointerEvents:"none"},children:["top","bottom","left","right"].map(x=>jsxRuntime.jsx(nt,{id:`drop-${x}-${e}`,position:x,activeClassName:a.dropPreview},x))}),l!==null&&l!==e&&W&&jsxRuntime.jsx("div",{style:{position:"absolute",top:0,left:0,right:0,bottom:0,zIndex:15,pointerEvents:"none"},children:jsxRuntime.jsx(nt,{id:`drop-locked-${e}`,position:"full",activeClassName:a.lockedPreview||""})})]})})})};Ce.Content=Yn;Ce.DragHandle=St;Ce.Tabs=rt;Ce.Tab=Ie;Ce.Controls=Lt;exports.DEFAULT_DRAG_ACTIVATION_DISTANCE=ao;exports.DEFAULT_RESIZER_SIZE=so;exports.DEFAULT_SNAP_THRESHOLD=ro;exports.Pane=Ce;exports.PaneTree=tt;exports.PortalRegistryContext=Ze;exports.Zeugma=mn;exports.ZeugmaActionsContext=Ke;exports.ZeugmaDragContext=Qe;exports.ZeugmaStateContext=Ge;exports.createDragSession=bt;exports.safeJsonStringify=we;exports.usePaneContext=kt;exports.useResizer=et;exports.useZeugma=Vt;exports.useZeugmaActions=$e;exports.useZeugmaContext=Wt;exports.useZeugmaDrag=Ae;exports.useZeugmaState=se;//# sourceMappingURL=index.cjs.map
6
+ `,document.head.appendChild(o),t.setAttribute("data-resizing","true");let s=l=>{n(l);},a=()=>{document.body.classList.remove("zeugma-resizing"),t.removeAttribute("data-resizing");let l=document.getElementById("zeugma-global-cursor-style");l&&l.remove(),document.removeEventListener("pointermove",s),document.removeEventListener("pointerup",a),r();};document.addEventListener("pointermove",s),document.addEventListener("pointerup",a);}var ke=rn.createContext(void 0),Ke=rn.createContext(void 0),ze=rn.createContext(void 0),Qe=rn.createContext(void 0),se=()=>{let e=rn.useContext(ke);if(!e)throw new Error("useZeugmaState must be used within a Zeugma provider");return e},$e=()=>{let e=rn.useContext(Ke);if(!e)throw new Error("useZeugmaActions must be used within a Zeugma provider");return e},Ae=()=>{let e=rn.useContext(Qe);if(!e)throw new Error("useZeugmaDrag must be used within a Zeugma provider");return e};var Yt=()=>{let e=se(),t=$e();return {layout:e.layout,setLayout:e.setLayout,fullscreenPaneId:e.fullscreenPaneId,setFullscreenPaneId:t.setFullscreenPaneId,locked:e.locked,setLocked:t.setLocked,removePane:t.removePane,addTab:t.addTab,updateMetadata:t.updateMetadata,updatePaneLock:t.updatePaneLock,selectTab:t.selectTab,mergeTab:t.mergeTab,removeTab:t.removeTab,splitPane:t.splitPane,updateSplitPercentage:t.updateSplitPercentage,moveTab:t.moveTab,findPaneById:e.findPaneById,findPaneContainingTab:e.findPaneContainingTab,findTabById:e.findTabById,getTabMetadata:e.getTabMetadata,getActiveTabMetadata:e.getActiveTabMetadata}};var Be=class extends core.PointerSensor{static activators=[{eventName:"onPointerDown",handler:({nativeEvent:t})=>!t.target?.closest(".drag-cancel")}]},He=class extends core.TouchSensor{static activators=[{eventName:"onTouchStart",handler:({nativeEvent:t})=>!t.target?.closest(".drag-cancel")}]};function Oe(e){if(e instanceof MouseEvent||e instanceof PointerEvent)return {x:e.clientX,y:e.clientY};if(typeof TouchEvent<"u"&&e instanceof TouchEvent){let t=e.touches[0]||e.changedTouches[0];if(t)return {x:t.clientX,y:t.clientY}}return null}function ht(e){let{layout:t,_internalSetLayout:n,layoutBeforeDrag:r,setLayoutBeforeDrag:o,activeId:s,setActiveId:a,setActiveType:l,dismissIntentId:c,setDismissIntentId:d,setOverTabId:g,setOverTabPosition:h,containerRef:y,dragActivationDistance:w,enableDragToDismiss:P,dismissThreshold:A,onRemove:I,onDragStart:B,onDragEnd:m,onDismissIntentChange:O,removeTab:U}=e,R=rn.useRef(null),f=ct(s),[N,Y]=rn.useState(false);ut(N);let Z=core.useSensors(core.useSensor(Be,{activationConstraint:{distance:w}}),core.useSensor(He,{activationConstraint:{delay:250,tolerance:5}})),z=rn.useCallback(D=>{let v=D.active.id.toString().startsWith("tab-header-"),F=core.pointerWithin(D),x=v?F:F.filter(u=>!u.id.toString().startsWith("tab-drop-"));if(x.length>0)return [...x].sort(($,L)=>{let T=$.id.toString(),ne=L.id.toString();if(v){let J=T.startsWith("tab-drop-"),Q=ne.startsWith("tab-drop-");if(J&&!Q)return -1;if(!J&&Q)return 1}let V=T.startsWith("drop-root-"),W=ne.startsWith("drop-root-");return V&&!W?-1:!V&&W?1:0});if(v){let u=D.droppableContainers.filter($=>$.id.toString().startsWith("tab-drop-"));return core.closestCenter({...D,droppableContainers:u})}return []},[]);return {sensors:Z,collisionDetection:z,onDragStart:D=>{let K=D.active.id.toString(),v=K.startsWith("tab-header-"),F=v?K.substring(11):K;a(F),l(v?"tab":"pane"),g(null),h(null);let x=D.activatorEvent;f.current=Oe(x),P&&y.current?R.current=y.current.getBoundingClientRect():R.current=null;let u=t;if(v){let $=_(t,F);$&&(u=Re(t,$.id,F)||t);}o(u),v&&u!==t&&n(u),B&&B(F);},onDragMove:D=>{let{over:K}=D,v=K?.id.toString()||"",F=v.startsWith("drop-locked-");Y(b=>b===F?b:F);let x=D.active.id.toString(),u=x.startsWith("tab-header-"),$=u?x.substring(11):x,L=v.match(/^tab-drop-(.+)$/);if(L&&K&&u){let[,b]=L;if($!==b){let S="before",k=K.rect,re=D.activatorEvent,j=null;if(f.current)j=f.current.x;else {let i=Oe(re);i&&(j=i.x+D.delta.x);}if(j!==null){let i=k.left+k.width/2;j>i&&(S="after");}g(i=>i===b?i:b),h(i=>i===S?i:S);}else g(S=>S===null?S:null),h(S=>S===null?S:null);}else g(b=>b===null?b:null),h(b=>b===null?b:null);if(!P)return;let T=R.current;if(!T){c!==null&&(d(null),O?.(null));return}let ne=D.activatorEvent,V=null,W=null;if(f.current)V=f.current.x,W=f.current.y;else {let b=Oe(ne);b&&(V=b.x+D.delta.x,W=b.y+D.delta.y);}let J=0;if(V!==null&&W!==null){let b=0,S=0;V<T.left?b=T.left-V:V>T.right&&(b=V-T.right),W<T.top?S=T.top-W:W>T.bottom&&(S=W-T.bottom),J=Math.sqrt(b*b+S*S);}else {let b=D.active.rect.current.translated;if(b){let S=b.left+b.width/2,k=b.top+b.height/2,re=0,j=0;S<T.left?re=T.left-S:S>T.right&&(re=S-T.right),k<T.top?j=T.top-k:k>T.bottom&&(j=k-T.bottom),J=Math.sqrt(re*re+j*j);}}J>A?c!==$&&(d($),O?.($)):c!==null&&(d(null),O?.(null));},onDragEnd:D=>{a(null),l(null),Y(false),g(null),h(null);let{active:K,over:v}=D,F=K.id.toString(),x=F.startsWith("tab-header-"),u=x?F.substring(11):F,$=P&&c===u;d(null),O?.(null),R.current=null;let L=r||t;if(o(null),$){I?I(u):U(u),m&&m(u,null,null);return}if(!v){n(L),m&&m(u,null,null);return}let T=v.id.toString();if(T.startsWith("drop-locked-")){n(L),m&&m(u,null,null);return}let ne=T.match(/^tab-drop-(.+)$/);if(ne){if(!x){n(L),m&&m(u,null,null);return}let[,E]=ne;if(u!==E){let M="before",H=v.rect,ie=D.activatorEvent,oe=null;if(f.current)oe=f.current.x;else {let ae=Oe(ie);ae&&(oe=ae.x+D.delta.x);}if(oe!==null){let ae=H.left+H.width/2;oe>ae&&(M="after");}let pe=Me(L,u,E,M);n(pe),m&&m(u,E,{type:"move",position:"center"});}else n(L),m&&m(u,null,null);return}let V=T.match(/^drop-root-(1\/4|1\/3)-(top|bottom|left|right|start|end)$/);if(V){let[,E,M]=V,H=M;H==="start"&&(H="left"),H==="end"&&(H="right");let ie=x?de(L,u):be(L,u),oe;if(x){let ae=_(L,u)?.tabsMetadata?.[u];oe={type:"pane",id:ce(),tabs:[u],activeTabId:u,tabsMetadata:ae?{[u]:ae}:void 0};}else oe=ee(L,u)??{type:"pane",id:ce(),tabs:[u],activeTabId:u};if(ie===null)n(oe);else {let pe=H==="left"||H==="right",ae=H==="left"||H==="top",xe=50;E==="1/4"?xe=ae?25:75:E==="1/3"&&(xe=ae?100/3:200/3),n({type:"split",direction:pe?"row":"column",first:ae?oe:ie,second:ae?ie:oe,splitPercentage:xe});}m&&m(u,"root",{type:"split",direction:H==="left"||H==="right"?"row":"column",position:H});return}let W=T.match(/^drop-(left|right|top|bottom)-(.+)$/);if(!W){n(L),m&&m(u,null,null);return}let[,J,Q]=W,b=x?_(L,u):ee(L,u),S=b&&b.id===Q,k=b&&b.tabs.length===1;if(u===Q||S&&k){n(L),m&&m(u,null,null);return}let re=J==="left"||J==="right"?"row":"column",j;if(x){let M=_(L,u)?.tabsMetadata?.[u];j={type:"pane",id:ce(),tabs:[u],activeTabId:u,tabsMetadata:M?{[u]:M}:void 0};}else j=ee(L,u)??{type:"pane",id:ce(),tabs:[u],activeTabId:u};let i=x?de(L,u):be(L,u),p=ye(i,Q,re,J,j);n(p),m&&m(u,Q,{type:"split",direction:re,position:J});},onDragCancel:()=>{a(null),l(null),Y(false),g(null),h(null),d(null),O?.(null),R.current=null,r!==null&&(n(r),o(null));}}}var Tt=({activeId:e,render:t,className:n})=>{let r=rn.useRef(null);return rn.useEffect(()=>{let o=s=>{r.current&&(r.current.style.transform=`translate(${s.clientX+12}px, ${s.clientY+12}px)`);};return document.addEventListener("pointermove",o),()=>document.removeEventListener("pointermove",o)},[]),jsxRuntime.jsx("div",{ref:r,className:n,style:{position:"fixed",top:0,left:0,zIndex:9999,pointerEvents:"none"},children:t(e)})};var Pt=rn__default.default.memo(({tabDetails:e,target:t,renderWidget:n})=>{let{id:r}=e,[o,s]=rn.useState(false),a=rn.useRef(null);if(rn.useEffect(()=>{s(true);},[]),rn.useEffect(()=>{if(!o||!a.current)return;let c=a.current;if(t)t.appendChild(c);else {let d=document.getElementById("zeugma-hidden-portal-container");d||(d=document.createElement("div"),d.id="zeugma-hidden-portal-container",d.style.display="none",document.body.appendChild(d)),d.appendChild(c);}},[t,o]),rn.useEffect(()=>()=>{a.current&&a.current.remove();},[]),!o)return null;a.current||(a.current=document.createElement("div"),a.current.className=`zeugma-portal-wrapper-${r}`,a.current.style.width="100%",a.current.style.height="100%");let l=a.current;return !l||!n?null:reactDom.createPortal(n(e),l)},(e,t)=>e.target===t.target&&e.renderWidget===t.renderWidget&&e.tabDetails.id===t.tabDetails.id&&e.tabDetails.paneId===t.tabDetails.paneId&&e.tabDetails.isActive===t.tabDetails.isActive&&e.tabDetails.index===t.tabDetails.index&&e.tabDetails.metadata===t.tabDetails.metadata);function et({containerRef:e,isRow:t,direction:n,splitPercentage:r,resizerSize:o,snapThreshold:s,layout:a,currentNode:l,onLayoutChange:c,onResizeStart:d,onResizeEnd:g,parentLeft:h,parentTop:y,parentWidth:w,parentHeight:P}){let{onResizeStart:A,onResize:I,onResizeEnd:B,minSplitPercentage:m=5,maxSplitPercentage:O=95,locked:U=false}=se();return rn.useCallback(R=>{if(U)return;R.preventDefault();let f=e.current;if(!f)return;d&&d(),A&&A(l);let N=f.getBoundingClientRect(),Y=R.clientX,Z=R.clientY,z=r,G=R.currentTarget,te=N.left+N.width*(h/100),q=N.top+N.height*(y/100),C=N.width*(w/100),D=N.height*(P/100),v=Array.from(document.querySelectorAll('div[role="separator"][data-direction]')).filter(x=>x!==G&&x.getAttribute("data-direction")===n).map(x=>{let u=x.getBoundingClientRect();return t?u.left+u.width/2:u.top+u.height/2}),F=z;bt({cursor:t?"col-resize":"row-resize",resizerEl:G,onMove:x=>{let u=t?(x.clientX-Y)/C*100:(x.clientY-Z)/D*100,$=z+u,L=t?te+(C-o)*($/100)+o/2:q+(D-o)*($/100)+o/2,T=1/0,ne=null;for(let Q of v){let b=Math.abs(L-Q);b<s&&b<T&&(T=b,ne=Q);}let V=$;ne!==null&&(V=t?(ne-o/2-te)/(C-o)*100:(ne-o/2-q)/(D-o)*100);let W=Math.max(m,Math.min(O,V));F=W;let J=he(a,l,W);if(J){let{panes:Q,splitters:b}=ge(J),S=e.current;if(S){for(let k of Q)S.style.setProperty(`--pane-left-${k.paneId}`,`${k.left}%`),S.style.setProperty(`--pane-top-${k.paneId}`,`${k.top}%`),S.style.setProperty(`--pane-width-${k.paneId}`,`${k.width}%`),S.style.setProperty(`--pane-height-${k.paneId}`,`${k.height}%`);for(let k of b)S.style.setProperty(`--splitter-pos-${k.id}`,`${k.direction==="row"?k.left:k.top}%`);}}I&&I(l,W);},onEnd:()=>{let x=he(a,l,F),u=e.current;if(u){let{panes:$,splitters:L}=ge(x);for(let T of $)u.style.removeProperty(`--pane-left-${T.paneId}`),u.style.removeProperty(`--pane-top-${T.paneId}`),u.style.removeProperty(`--pane-width-${T.paneId}`),u.style.removeProperty(`--pane-height-${T.paneId}`);for(let T of L)u.style.removeProperty(`--splitter-pos-${T.id}`);}c(x),g&&g(),B&&B(l,F);}});},[e,t,n,r,o,s,a,l,c,d,g,A,I,B,m,O,h,y,w,P])}var gn=({splitter:e,resizerSize:t,snapThreshold:n,containerRef:r})=>{let{layout:o,setLayout:s,classNames:a,locked:l}=se(),[c,d]=rn.useState(false),{currentNode:g,direction:h,left:y,top:w,width:P,height:A,parentLeft:I,parentTop:B,parentWidth:m,parentHeight:O}=e,U=h==="row",R=et({containerRef:r,isRow:U,direction:h,splitPercentage:g.splitPercentage,resizerSize:t,snapThreshold:n,layout:o,currentNode:g,onLayoutChange:s,onResizeStart:()=>d(true),onResizeEnd:()=>d(false),parentLeft:I,parentTop:B,parentWidth:m,parentHeight:O}),f=U?{position:"absolute",left:`calc(var(--splitter-pos-${e.id}, ${y}%) - ${t/2}px)`,top:`calc(${w}% + ${t/2}px)`,width:`${t}px`,height:`calc(${A}% - ${t}px)`,cursor:l?"default":"col-resize",pointerEvents:l?"none":"auto",zIndex:10,userSelect:"none",touchAction:"none",boxSizing:"border-box"}:{position:"absolute",left:`calc(${y}% + ${t/2}px)`,top:`calc(var(--splitter-pos-${e.id}, ${w}%) - ${t/2}px)`,width:`calc(${P}% - ${t}px)`,height:`${t}px`,cursor:l?"default":"row-resize",pointerEvents:l?"none":"auto",zIndex:10,userSelect:"none",touchAction:"none",boxSizing:"border-box"};return jsxRuntime.jsx("div",{className:a.resizer||"","data-direction":h,"data-resizing":c||void 0,style:f,onPointerDown:R,role:"separator","aria-valuenow":g.splitPercentage,"aria-valuemin":5,"aria-valuemax":95})},mn=rn__default.default.memo(({paneId:e,renderPane:t})=>jsxRuntime.jsx(jsxRuntime.Fragment,{children:t(e)}),(e,t)=>e.paneId===t.paneId&&e.renderPane===t.renderPane),tt=({renderPane:e,tree:t,resizerSize:n,snapThreshold:r})=>{let{layout:o,activeId:s,dismissIntentId:a,setContainerRef:l,fullscreenPaneId:c,snapThreshold:d,locked:g,classNames:h,renderPane:y,resizerSize:w}=se(),P=r!==void 0?r:d??8,A=n!==void 0?n:w??4,I=e!==void 0?e:y;if(!I)throw new Error("PaneTree must be provided a renderPane prop or used within a Zeugma provider with renderPane.");let B=t!==void 0?t:o,m=rn.useRef(null),{panes:O,splitters:U}=rn.useMemo(()=>B?ge(B):{panes:[],splitters:[]},[B]);if(!B)return null;let R=()=>jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[O.map(f=>{let N=c===f.paneId;return jsxRuntime.jsx("div",{style:{position:"absolute",left:N?"0%":`var(--pane-left-${f.paneId}, ${f.left}%)`,top:N?"0%":`var(--pane-top-${f.paneId}, ${f.top}%)`,width:N?"100%":`var(--pane-width-${f.paneId}, ${f.width}%)`,height:N?"100%":`var(--pane-height-${f.paneId}, ${f.height}%)`,overflow:"hidden",zIndex:N?20:1,display:c&&!N?"none":"block",padding:N?"0px":`${A/2}px`,boxSizing:"border-box"},children:jsxRuntime.jsx(mn,{paneId:f.paneId,renderPane:I})},f.paneId)}),!c&&U.map(f=>jsxRuntime.jsx(gn,{splitter:f,resizerSize:A,snapThreshold:P,containerRef:m},f.id))]});if(t===void 0){let f=s!==null&&s===a,N=Z=>{l(Z),m.current=Z;},Y=`${h.dashboard||""} ${f&&h.dashboardDismissActive||""} ${g&&h.dashboardLocked||""}`.trim();return jsxRuntime.jsxs("div",{ref:N,className:Y,style:{position:"relative",width:"100%",height:"100%",overflow:"hidden"},children:[R(),s!==null&&!g&&jsxRuntime.jsx(Rt,{activeClassName:h.rootDropPreview??h.dropPreview})]})}return jsxRuntime.jsx("div",{ref:m,style:{position:"relative",width:"100%",height:"100%",overflow:"hidden"},children:R()})};var St=e=>{let{controller:t,children:n,renderDragOverlay:r,classNames:o={},renderPane:s,resizerSize:a,dragActivationDistance:l=8,snapThreshold:c=8,minSplitPercentage:d=5,maxSplitPercentage:g=95,enableDragToDismiss:h=false,dismissThreshold:y=60,onRemove:w,onDragStart:P,onDragEnd:A,onResizeStart:I,onResize:B,onResizeEnd:m,onDismissIntentChange:O}=e,U=t,{layout:R,setLayout:f,_internalSetLayout:N,fullscreenPaneId:Y,setFullscreenPaneId:Z,locked:z,setLocked:G,findPaneById:te,findPaneContainingTab:q,findTabById:C,getTabMetadata:D,getActiveTabMetadata:K,activeId:v,setActiveId:F,activeType:x,setActiveType:u,dismissIntentId:$,setDismissIntentId:L,containerRef:T,setContainerRef:ne,layoutBeforeDrag:V,setLayoutBeforeDrag:W,removePane:J,addTab:Q,updateMetadata:b,updatePaneLock:S,selectTab:k,mergeTab:re,removeTab:j,splitPane:i,updateSplitPercentage:p,moveTab:E}=U,{portalTargets:M,registerPortalTarget:H,registerRenderCallback:ie,renderCallbacksRef:oe}=dt(),[pe,ae]=rn.useState(null),[xe,at]=rn.useState(null),$t=ht({layout:R,_internalSetLayout:N,layoutBeforeDrag:V,setLayoutBeforeDrag:W,activeId:v,setActiveId:F,setActiveType:u,dismissIntentId:$,setDismissIntentId:L,setOverTabId:ae,setOverTabPosition:at,containerRef:T,dragActivationDistance:l,enableDragToDismiss:h,dismissThreshold:y,onRemove:w,onDragStart:P,onDragEnd:A,onDismissIntentChange:O,removeTab:j}),st=rn.useMemo(()=>o,[o.dashboard,o.dashboardDismissActive,o.pane,o.paneLocked,o.dropPreview,o.rootDropPreview,o.dragOverlay,o.resizer,o.dismissPreview,o.dashboardLocked,o.lockedPreview,o.tabDropPreview,o.tabSeparator,o.tabsContainer,o.tab,o.paneContainer,o.paneHeader,o.paneControls,o.paneButton,o.tabCloseButton,o.dragHandle]),it=rn.useCallback((le,me)=>{m&&m(le,me);},[m]),At=rn.useMemo(()=>({layout:R,setLayout:f,activeId:v,activeType:x,dismissIntentId:$,setContainerRef:ne,fullscreenPaneId:Y,classNames:st,onRemove:w,onFullscreenChange:Z,snapThreshold:c,onResizeStart:I,onResize:B,onResizeEnd:it,minSplitPercentage:d,maxSplitPercentage:g,locked:z,setLocked:G,findPaneById:te,findPaneContainingTab:q,findTabById:C,getTabMetadata:D,getActiveTabMetadata:K,renderPane:s,resizerSize:a}),[R,v,x,$,ne,Y,st,w,Z,c,I,B,d,g,f,it,z,G,te,q,C,D,K,s,a]),Bt=rn.useMemo(()=>({overTabId:pe,overTabPosition:xe}),[pe,xe]),Ht=rn.useMemo(()=>({removePane:J,addTab:Q,updateMetadata:b,updatePaneLock:S,selectTab:k,mergeTab:re,removeTab:j,setFullscreenPaneId:Z,setLocked:G,splitPane:i,updateSplitPercentage:p,moveTab:E}),[J,Q,b,S,k,re,j,Z,G,i,p,E]),Ot=rn.useMemo(()=>{let le=new Set;function me(fe){fe&&(fe.type==="pane"?fe.tabs.forEach(Vt=>{le.add(Vt);}):fe.type==="split"&&(me(fe.first),me(fe.second)));}return me(R),V&&me(V),Array.from(le).sort()},[R,v,V]),Ft=rn.useMemo(()=>({registerPortalTarget:H,registerRenderCallback:ie,renderCallbacksRef:oe}),[H,ie,oe]);return jsxRuntime.jsx(Ke.Provider,{value:Ht,children:jsxRuntime.jsx(ke.Provider,{value:At,children:jsxRuntime.jsx(Qe.Provider,{value:Bt,children:jsxRuntime.jsxs(ze.Provider,{value:Ft,children:[jsxRuntime.jsx(core.DndContext,{id:"zeugma-dnd-context",...$t,children:n}),v&&x&&r&&jsxRuntime.jsx(Tt,{activeId:v,render:le=>r({type:x,id:le,isDismissing:v===$}),className:`${o.dragOverlay||""} ${v===$&&o.dismissPreview||""}`.trim()}),jsxRuntime.jsx("div",{id:"zeugma-portal-host",style:{display:"none"},children:Ot.map(le=>{let me=M[le],fe=C(le);return fe?jsxRuntime.jsx(Pt,{tabDetails:fe,target:me||null,renderWidget:oe.current[le]},le):null})})]})})})})},Dt=({renderPane:e,resizerSize:t,snapThreshold:n})=>jsxRuntime.jsx(tt,{renderPane:e,resizerSize:t,snapThreshold:n}),Tn=e=>{if(!(rn.useContext(ke)!==void 0)){let{controller:r,renderPane:o,...s}=e;if(!r)throw new Error("Zeugma component requires a controller when used standalone.");return jsxRuntime.jsx(St,{controller:r,renderPane:o,...s,children:jsxRuntime.jsx(Dt,{...s})})}return jsxRuntime.jsx(Dt,{...e})};var yn={top:{"1/4":{position:"absolute",top:0,left:0,width:"100%",height:"24px",zIndex:100,pointerEvents:"auto"},"1/3":{position:"absolute",top:"24px",left:0,width:"100%",height:"24px",zIndex:100,pointerEvents:"auto"}},bottom:{"1/4":{position:"absolute",bottom:0,left:0,width:"100%",height:"24px",zIndex:100,pointerEvents:"auto"},"1/3":{position:"absolute",bottom:"24px",left:0,width:"100%",height:"24px",zIndex:100,pointerEvents:"auto"}},left:{"1/4":{position:"absolute",left:0,top:"48px",width:"24px",height:"calc(100% - 96px)",zIndex:100,pointerEvents:"auto"},"1/3":{position:"absolute",left:"24px",top:"48px",width:"24px",height:"calc(100% - 96px)",zIndex:100,pointerEvents:"auto"}},right:{"1/4":{position:"absolute",right:0,top:"48px",width:"24px",height:"calc(100% - 96px)",zIndex:100,pointerEvents:"auto"},"1/3":{position:"absolute",right:"24px",top:"48px",width:"24px",height:"calc(100% - 96px)",zIndex:100,pointerEvents:"auto"}}},Rn={top:{"1/4":{top:0,left:0,width:"100%",height:"60px",borderBottomLeftRadius:"12px",borderBottomRightRadius:"12px",borderTopLeftRadius:"0px",borderTopRightRadius:"0px"},"1/3":{top:0,left:0,width:"100%",height:"96px",borderBottomLeftRadius:"12px",borderBottomRightRadius:"12px",borderTopLeftRadius:"0px",borderTopRightRadius:"0px"}},bottom:{"1/4":{bottom:0,left:0,width:"100%",height:"60px",borderTopLeftRadius:"12px",borderTopRightRadius:"12px",borderBottomLeftRadius:"0px",borderBottomRightRadius:"0px"},"1/3":{bottom:0,left:0,width:"100%",height:"96px",borderTopLeftRadius:"12px",borderTopRightRadius:"12px",borderBottomLeftRadius:"0px",borderBottomRightRadius:"0px"}},left:{"1/4":{left:0,top:0,width:"60px",height:"100%",borderTopRightRadius:"12px",borderBottomRightRadius:"12px",borderTopLeftRadius:"0px",borderBottomLeftRadius:"0px"},"1/3":{left:0,top:0,width:"96px",height:"100%",borderTopRightRadius:"12px",borderBottomRightRadius:"12px",borderTopLeftRadius:"0px",borderBottomLeftRadius:"0px"}},right:{"1/4":{right:0,top:0,width:"60px",height:"100%",borderTopLeftRadius:"12px",borderBottomLeftRadius:"12px",borderTopRightRadius:"0px",borderBottomRightRadius:"0px"},"1/3":{right:0,top:0,width:"96px",height:"100%",borderTopLeftRadius:"12px",borderBottomLeftRadius:"12px",borderTopRightRadius:"0px",borderBottomRightRadius:"0px"}}},Cn=({id:e,fraction:t,edge:n,activeClassName:r})=>{let{setNodeRef:o,isOver:s}=core.useDroppable({id:e}),a={position:"absolute",pointerEvents:"none",zIndex:101,boxSizing:"border-box",...Rn[n][t]};return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("div",{ref:o,style:yn[n][t]}),s&&jsxRuntime.jsx("div",{className:r,style:a})]})},Rt=({activeClassName:e})=>jsxRuntime.jsx("div",{style:{position:"absolute",top:0,left:0,right:0,bottom:0,zIndex:99,pointerEvents:"none"},children:[{id:"drop-root-1/4-top",fraction:"1/4",edge:"top"},{id:"drop-root-1/3-top",fraction:"1/3",edge:"top"},{id:"drop-root-1/4-bottom",fraction:"1/4",edge:"bottom"},{id:"drop-root-1/3-bottom",fraction:"1/3",edge:"bottom"},{id:"drop-root-1/4-left",fraction:"1/4",edge:"left"},{id:"drop-root-1/3-left",fraction:"1/3",edge:"left"},{id:"drop-root-1/4-right",fraction:"1/4",edge:"right"},{id:"drop-root-1/3-right",fraction:"1/3",edge:"right"}].map(n=>jsxRuntime.jsx(Cn,{id:n.id,fraction:n.fraction,edge:n.edge,activeClassName:e},n.id))});var Ve=rn.createContext(null);var In={top:{position:"absolute",top:0,left:0,width:"100%",height:"25%",zIndex:20,pointerEvents:"auto"},bottom:{position:"absolute",bottom:0,left:0,width:"100%",height:"25%",zIndex:20,pointerEvents:"auto"},left:{position:"absolute",top:"25%",left:0,width:"50%",height:"50%",zIndex:20,pointerEvents:"auto"},right:{position:"absolute",top:"25%",right:0,width:"50%",height:"50%",zIndex:20,pointerEvents:"auto"},full:{position:"absolute",top:0,left:0,right:0,bottom:0,zIndex:20,pointerEvents:"auto",cursor:"not-allowed"}},Ln={top:{position:"absolute",top:0,left:0,right:0,height:"50%",zIndex:21,pointerEvents:"none",boxSizing:"border-box"},bottom:{position:"absolute",bottom:0,left:0,right:0,height:"50%",zIndex:21,pointerEvents:"none",boxSizing:"border-box"},left:{position:"absolute",top:0,bottom:0,left:0,width:"50%",zIndex:21,pointerEvents:"none",boxSizing:"border-box"},right:{position:"absolute",top:0,bottom:0,right:0,width:"50%",zIndex:21,pointerEvents:"none",boxSizing:"border-box"},full:{position:"absolute",top:0,left:0,right:0,bottom:0,zIndex:21,pointerEvents:"none",boxSizing:"border-box"}},nt=({id:e,position:t,activeClassName:n})=>{let{setNodeRef:r,isOver:o}=core.useDroppable({id:e});return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("div",{ref:r,style:In[t]}),o&&jsxRuntime.jsx("div",{className:n,style:Ln[t]})]})};var Nt=({children:e,className:t,style:n})=>{let r=rn.useContext(Ve);if(!r)throw new Error("<DragHandle> must be used inside a <Pane>");let{disabled:o,...s}=r;return jsxRuntime.jsx("div",{className:t,style:{cursor:o?"default":"grab",userSelect:o?"auto":"none",touchAction:o?"auto":"none",...n},...o?{}:s,children:e})};var On=rn.createContext(void 0);var Ie=({id:e,locked:t=false,children:n,className:r,style:o})=>{let{locked:s,classNames:a={},activeType:l}=se(),{overTabId:c}=Ae(),d=rn.useContext(ot),g=t||s||(d?.locked??false),{attributes:h,listeners:y,setNodeRef:w,isDragging:P}=core.useDraggable({id:`tab-header-${e}`,disabled:g}),{setNodeRef:A,isOver:I}=core.useDroppable({id:`tab-drop-${e}`,disabled:g||l==="pane"}),B=q=>{w(q),A(q);},m=I&&c===e,O=d?.tabs||[],U=O.indexOf(e),R=d?.activeTabId,N=U>0&&e!==R&&O[U-1]!==R?jsxRuntime.jsx("div",{className:a.tabSeparator}):null,Y=d?d.activeTabId===e:false,Z=d?.tabsMetadata?.[e],z=rn.useCallback(()=>{d?.selectTab(e);},[d,e]),G=rn.useCallback(()=>{d?.removeTab(e);},[d,e]),te=rn.useMemo(()=>({tabId:e,isActive:Y,isDragging:P,isOver:m,metadata:Z,locked:g,selectTab:z,removeTab:G}),[e,Y,P,m,Z,g,z,G]);return jsxRuntime.jsx(On.Provider,{value:te,children:jsxRuntime.jsxs("div",{ref:B,className:r,style:{display:"inline-flex",position:"relative",cursor:g?"default":"grab",...o},...g?{}:y,...g?{}:h,children:[N,n({isDragging:P,isOver:m})]})})};var ot=rn.createContext(void 0);var Et=(e,t)=>typeof e=="function"?e(t):e,rt=({tabs:e,activeTabId:t,locked:n,tabsMetadata:r,selectTab:o,removeTab:s,renderTab:a,classNames:l,styles:c})=>{let d=rn.useContext(We),g=e??d?.tabs??[],h=t??d?.activeTabId??"",y=n??d?.locked??false,w=r??d?.tabsMetadata,P=o??d?.selectTab??(()=>{}),A=s??d?.removeTab??(()=>{}),{classNames:I={},activeType:B}=se(),{overTabId:m,overTabPosition:O}=Ae(),U=rn.useMemo(()=>({tabs:g,activeTabId:h,locked:y,tabsMetadata:w,selectTab:P,removeTab:A}),[g,h,y,w,P,A]),R=gt(g,B,m,O);return jsxRuntime.jsx(ot.Provider,{value:U,children:jsxRuntime.jsxs("div",{className:l?.container,style:{display:"flex",alignItems:"center",height:"100%",...c?.container},children:[g.map((f,N)=>{let Y=w?.[f],Z=Et(l?.tab,f),z=Et(c?.tab,f),G=N===R;return jsxRuntime.jsxs(rn__default.default.Fragment,{children:[G&&I.tabDropPreview&&jsxRuntime.jsx("div",{style:{position:"relative",height:"100%",width:0,zIndex:10},children:jsxRuntime.jsx("div",{className:I.tabDropPreview,style:{position:"absolute",top:0,bottom:0,transform:N===0?"none":"translateX(-50%)"}})}),jsxRuntime.jsx(Ie,{id:f,locked:y,className:Z,style:z,children:({isDragging:te,isOver:q})=>a({tabId:f,activeTabId:h,isDragging:te,isOver:q,metadata:Y,onSelect:()=>P(f),onRemove:()=>A(f)})})]},f)}),R===g.length&&I.tabDropPreview&&jsxRuntime.jsx("div",{style:{position:"relative",height:"100%",width:0,zIndex:10},children:jsxRuntime.jsx("div",{className:I.tabDropPreview,style:{position:"absolute",top:0,bottom:0,transform:"translateX(-100%)"}})})]})})};rt.Tab=Ie;var Zt=({className:e,style:t,children:n})=>jsxRuntime.jsx("div",{className:e,style:t,children:n});var We=rn.createContext(void 0),zt=()=>{let e=rn.useContext(We);if(!e)throw new Error("usePaneContext must be used within a Pane component");return e},Kn=({children:e,className:t,style:n})=>{let{activeTabId:r}=zt(),{classNames:o}=se(),s=rn.useRef(null),a=rn.useContext(ze);if(!a)throw new Error("PaneContent must be used within a Zeugma provider");let{registerPortalTarget:l,registerRenderCallback:c}=a,d=rn.useMemo(()=>typeof e=="function"?e:()=>e,[e]);return c(r,d),rn.useEffect(()=>{let g=s.current;return l(r,g),()=>{l(r,null);}},[r,l]),jsxRuntime.jsx("div",{ref:s,id:`zeugma-tab-target-${r}`,className:`${o.tabContentWrapper||""} ${t||""}`.trim(),style:{height:"100%",width:"100%",...n}})},Se=({id:e,children:t,style:n,locked:r=false})=>{let{layout:o,activeId:s,classNames:a,fullscreenPaneId:l,onFullscreenChange:c,locked:d}=se(),{removePane:g,updateMetadata:h,selectTab:y,removeTab:w}=$e(),P=rn.useMemo(()=>ee(o,e),[o,e]),A=P?.id??e,I=P?.tabs??[e],B=P?.activeTabId??e,m=P?.tabsMetadata,O=m?.[e],U=P?.locked??false,R=r||U,f=d||R,N=d||R,Y=s!==null&&s!==e&&(!I.includes(s)||I.length>1)&&!N,{attributes:Z,listeners:z,setNodeRef:G}=core.useDraggable({id:e,disabled:f}),te=s!==null&&I.includes(s),q=l===e,C=rn.useMemo(()=>({isDragging:te,isFullscreen:q,toggleFullscreen:()=>c?.(q?null:e),remove:()=>{q&&c?.(null),g(A);},metadata:O,updateMetadata:v=>{h(e,v);},locked:f,tabs:I,activeTabId:B,selectTab:v=>y(A,v),removeTab:v=>{q&&v===B&&c?.(null),w(v);},tabsMetadata:m,updateTabMetadata:(v,F)=>{h(v,F);}}),[te,q,c,e,w,O,h,f,I,B,y,A,m]),D=rn.useMemo(()=>f?{disabled:true}:{...z,...Z},[z,Z,f]),K=`${a.pane||""} ${R&&a.paneLocked||""}`.trim();return jsxRuntime.jsx(We.Provider,{value:{id:e,...C},children:jsxRuntime.jsx(Ve.Provider,{value:D,children:jsxRuntime.jsxs("div",{ref:G,className:K,style:{position:"relative",width:"100%",height:"100%",...n},children:[t,Y&&jsxRuntime.jsx("div",{style:{position:"absolute",top:0,left:0,right:0,bottom:0,zIndex:15,pointerEvents:"none"},children:["top","bottom","left","right"].map(v=>jsxRuntime.jsx(nt,{id:`drop-${v}-${e}`,position:v,activeClassName:a.dropPreview},v))}),s!==null&&s!==e&&N&&jsxRuntime.jsx("div",{style:{position:"absolute",top:0,left:0,right:0,bottom:0,zIndex:15,pointerEvents:"none"},children:jsxRuntime.jsx(nt,{id:`drop-locked-${e}`,position:"full",activeClassName:a.lockedPreview||""})})]})})})};Se.Content=Kn;Se.DragHandle=Nt;Se.Tabs=rt;Se.Tab=Ie;Se.Controls=Zt;exports.Pane=Se;exports.PaneTree=tt;exports.Zeugma=Tn;exports.ZeugmaProvider=St;exports.usePaneContext=zt;exports.useResizer=et;exports.useZeugma=Xt;exports.useZeugmaContext=Yt;//# sourceMappingURL=index.cjs.map
7
7
  //# sourceMappingURL=index.cjs.map