react-zeugma 6.1.0 → 6.1.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
@@ -305,18 +305,16 @@ Calculates the target insertion index for a dragged tab within a list of tabs. R
305
305
 
306
306
  Retrieves or initializes a hidden container `div` appended to `document.body` for sheltering portal elements while they are inactive or popped out.
307
307
 
308
- ---
309
-
310
308
  ## Popping Out Tabs (Open in a New Window)
311
309
 
312
310
  `react-zeugma` includes built-in support for popping out tab panels into separate browser windows (popouts) with **zero React component unmounting or state loss**.
313
311
 
314
312
  ### How it Works
315
313
 
316
- 1. **State-Driven**: The popped-out state is controlled via the tab's metadata under the `openInNewWindow` boolean key.
314
+ 1. **State-Driven**: The popped-out state of tabs is tracked in a dedicated `popoutTabs` state map (mapping tab IDs to booleans) on the controller.
317
315
  2. **Stable Portal target**: The React portal container reference is kept stable, and `document.adoptNode` is used to migrate the DOM container directly between parent and popup documents, keeping internal component state (like inputs, terminal histories, or connections) fully intact.
318
316
  3. **Style Syncing**: Active stylesheets and link tags are automatically copied from the parent workspace into the popup window on creation.
319
- 4. **Auto-Restoration**: Close actions on the popup window automatically reset the metadata state to `openInNewWindow: false` and restore the tab wrapper back to the main document layout.
317
+ 4. **Auto-Restoration**: Close actions on the popup window automatically update the state via `setTabPopout(tabId, false)` and restore the tab wrapper back to the main document layout.
320
318
 
321
319
  ### Integration Recipe
322
320
 
@@ -330,15 +328,11 @@ Inside your pane header or controls, add a button to toggle the popout state of
330
328
  <button
331
329
  onClick={() => {
332
330
  const activeTabId = paneProps.activeTabId
333
- const isPopout = !!paneProps.tabsMetadata?.[activeTabId]?.openInNewWindow
334
-
335
- paneProps.updateTabMetadata(activeTabId, (current) => ({
336
- ...current,
337
- openInNewWindow: !isPopout,
338
- }))
331
+ const isPopout = !!zeugma.popoutTabs[activeTabId]
332
+ zeugma.setTabPopout(activeTabId, !isPopout)
339
333
  }}
340
334
  >
341
- {paneProps.tabsMetadata?.[paneProps.activeTabId]?.openInNewWindow ? 'Restore' : 'Popout'}
335
+ {zeugma.popoutTabs[paneProps.activeTabId] ? 'Restore' : 'Popout'}
342
336
  </button>
343
337
  ```
344
338
 
@@ -348,15 +342,12 @@ When a tab is open in a separate window, render a custom placeholder inside the
348
342
 
349
343
  ```tsx
350
344
  <div className="pane-body">
351
- {paneProps.tabsMetadata?.[paneProps.activeTabId]?.openInNewWindow ? (
345
+ {zeugma.popoutTabs[paneProps.activeTabId] ? (
352
346
  <div className="popout-placeholder">
353
347
  <p>This tab is open in a separate window.</p>
354
348
  <button
355
349
  onClick={() => {
356
- paneProps.updateTabMetadata(paneProps.activeTabId, (current) => ({
357
- ...current,
358
- openInNewWindow: false,
359
- }))
350
+ zeugma.setTabPopout(paneProps.activeTabId, false)
360
351
  }}
361
352
  >
362
353
  Restore Tab
@@ -81,6 +81,8 @@ interface ZeugmaController {
81
81
  locked: boolean;
82
82
  /** Programmatically updates the global locked status. */
83
83
  setLocked: Dispatch<SetStateAction<boolean>>;
84
+ /** Map of tab IDs to their popped-out state. */
85
+ popoutTabs: Record<string, boolean>;
84
86
  /** The ID of the active dragged item (pane or tab). */
85
87
  activeId: string | null;
86
88
  /** The type of the active dragged item ('pane' | 'tab'). */
@@ -133,6 +135,8 @@ interface ZeugmaController {
133
135
  updateSplitPercentage: (currentNode: SplitNode, percentage: number) => void;
134
136
  /** Moves/reorders a tab relative to another target tab. */
135
137
  moveTab: (draggedTabId: string, targetTabId: string, position?: 'before' | 'after') => void;
138
+ /** Sets the popped-out state of a tab. */
139
+ setTabPopout: (tabId: string, popped: boolean) => void;
136
140
  /** Find a PaneNode by its ID in the layout tree. */
137
141
  findPaneById: (paneId: string) => PaneNode | null;
138
142
  /** Find the PaneNode containing the given tab ID in the layout tree. */
@@ -197,6 +201,8 @@ interface ZeugmaStateValue {
197
201
  locked: boolean;
198
202
  /** Programmatically updates the global locked status. */
199
203
  setLocked: Dispatch<SetStateAction<boolean>>;
204
+ /** Map of tab IDs to their popped-out state. */
205
+ popoutTabs: Record<string, boolean>;
200
206
  /** Find a PaneNode by its ID in the layout tree. */
201
207
  findPaneById: (paneId: string) => PaneNode | null;
202
208
  /** Find the PaneNode containing the given tab ID in the layout tree. */
@@ -256,6 +262,8 @@ interface ZeugmaActionsValue {
256
262
  updateSplitPercentage: (currentNode: SplitNode, percentage: number) => void;
257
263
  /** Moves/reorders a tab relative to another target tab. */
258
264
  moveTab: (draggedTabId: string, targetTabId: string, position?: 'before' | 'after') => void;
265
+ /** Sets the popped-out state of a tab. */
266
+ setTabPopout: (tabId: string, popped: boolean) => void;
259
267
  }
260
268
  interface ZeugmaContextValue extends ZeugmaStateValue, ZeugmaActionsValue {
261
269
  }
@@ -81,6 +81,8 @@ interface ZeugmaController {
81
81
  locked: boolean;
82
82
  /** Programmatically updates the global locked status. */
83
83
  setLocked: Dispatch<SetStateAction<boolean>>;
84
+ /** Map of tab IDs to their popped-out state. */
85
+ popoutTabs: Record<string, boolean>;
84
86
  /** The ID of the active dragged item (pane or tab). */
85
87
  activeId: string | null;
86
88
  /** The type of the active dragged item ('pane' | 'tab'). */
@@ -133,6 +135,8 @@ interface ZeugmaController {
133
135
  updateSplitPercentage: (currentNode: SplitNode, percentage: number) => void;
134
136
  /** Moves/reorders a tab relative to another target tab. */
135
137
  moveTab: (draggedTabId: string, targetTabId: string, position?: 'before' | 'after') => void;
138
+ /** Sets the popped-out state of a tab. */
139
+ setTabPopout: (tabId: string, popped: boolean) => void;
136
140
  /** Find a PaneNode by its ID in the layout tree. */
137
141
  findPaneById: (paneId: string) => PaneNode | null;
138
142
  /** Find the PaneNode containing the given tab ID in the layout tree. */
@@ -197,6 +201,8 @@ interface ZeugmaStateValue {
197
201
  locked: boolean;
198
202
  /** Programmatically updates the global locked status. */
199
203
  setLocked: Dispatch<SetStateAction<boolean>>;
204
+ /** Map of tab IDs to their popped-out state. */
205
+ popoutTabs: Record<string, boolean>;
200
206
  /** Find a PaneNode by its ID in the layout tree. */
201
207
  findPaneById: (paneId: string) => PaneNode | null;
202
208
  /** Find the PaneNode containing the given tab ID in the layout tree. */
@@ -256,6 +262,8 @@ interface ZeugmaActionsValue {
256
262
  updateSplitPercentage: (currentNode: SplitNode, percentage: number) => void;
257
263
  /** Moves/reorders a tab relative to another target tab. */
258
264
  moveTab: (draggedTabId: string, targetTabId: string, position?: 'before' | 'after') => void;
265
+ /** Sets the popped-out state of a tab. */
266
+ setTabPopout: (tabId: string, popped: boolean) => void;
259
267
  }
260
268
  interface ZeugmaContextValue extends ZeugmaStateValue, ZeugmaActionsValue {
261
269
  }
package/dist/index.cjs CHANGED
@@ -1,7 +1,7 @@
1
- 'use strict';var Jt=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 Jt__default=/*#__PURE__*/_interopDefault(Jt);function nt(e,t){Array.from(e.styleSheets).forEach(n=>{try{if(n.cssRules){let o=t.createElement("style");Array.from(n.cssRules).forEach(r=>{o.appendChild(t.createTextNode(r.cssText));}),t.head.appendChild(o);}else if(n.href){let o=t.createElement("link");o.rel="stylesheet",o.href=n.href,t.head.appendChild(o);}}catch{if(n.href){let o=t.createElement("link");o.rel="stylesheet",o.href=n.href,t.head.appendChild(o);}}});}function _e(e){let t=document.getElementById(e);return t||(t=document.createElement("div"),t.id=e,t.style.display="none",document.body.appendChild(t)),t}function rt(e){let t=Jt.useRef(null);return Jt.useEffect(()=>{if(!e){t.current=null;return}let n=r=>{t.current={x:r.clientX,y:r.clientY};},o=r=>{let s=r.touches[0]||r.changedTouches[0];s&&(t.current={x:s.clientX,y:s.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 st(e){Jt.useEffect(()=>(e?document.body.style.setProperty("cursor","not-allowed","important"):document.body.style.removeProperty("cursor"),()=>{document.body.style.removeProperty("cursor");}),[e]);}function it(){let[e,t]=Jt.useState({}),n=Jt.useRef(true);Jt.useEffect(()=>(n.current=true,()=>{n.current=false;}),[]);let o=Jt.useCallback((r,s)=>{n.current&&t(i=>i[r]===s?i:{...i,[r]:s});},[]);return {portalTargets:e,registerPortalTarget:o}}function at({tabId:e,isOpenedInNewWindow:t,onClose:n}){let o=Jt.useRef(null),[r,s]=Jt.useState(null);return Jt.useEffect(()=>{let i=null;if(t){if(!o.current||o.current.closed){let l=`zeugma-tab-${e.replace(/[^a-zA-Z0-9]/g,"_")}`,p=window.open("",l,"width=800,height=600,menubar=no,toolbar=no,location=no,status=no,resizable=yes");if(p){o.current=p;let d=e.includes("/")?e.split("/").pop():e;p.document.title=d,nt(document,p.document);let f=p.document.createElement("div");f.id="zeugma-popup-root",p.document.body.appendChild(f),s(f),p.addEventListener("beforeunload",n),i=setInterval(()=>{p.closed&&n();},300);}else console.warn("Popup window blocked or failed to open."),n();}}else o.current&&!o.current.closed&&o.current.close(),o.current=null,s(null);return ()=>{i&&clearInterval(i),o.current&&o.current.removeEventListener("beforeunload",n);}},[t,e,n]),Jt.useEffect(()=>()=>{o.current&&!o.current.closed&&o.current.close();},[]),{popupWindow:o.current,popupContainer:r}}var Zt=8,kt=8,_n=4;function de(){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),o=be(e.second,t);return n===null?o:o===null?n:{...e,first:n,second:o}}function fe(e,t){if(e===null)return null;if(e.type==="pane"){if(e.tabs.includes(t)){let r=e.tabs.filter(l=>l!==t);if(r.length===0)return null;let s=e.activeTabId;e.activeTabId===t&&(s=r[0]);let i={...e.tabsMetadata};return delete i[t],{...e,tabs:r,activeTabId:s,tabsMetadata:Object.keys(i).length>0?i:void 0}}return e}let n=fe(e.first,t),o=fe(e.second,t);return n===null?o:o===null?n:{...e,first:n,second:o}}function ye(e,t,n,o,r){if(e===null)return typeof r=="string"?{type:"pane",id:de(),tabs:[r],activeTabId:r}:r;if(e.type==="pane"){if(e.id===t){let s=typeof r=="string"?{type:"pane",id:de(),tabs:[r],activeTabId:r}:r,i=o==="left"||o==="top";return {type:"split",direction:n,first:i?s:e,second:i?e:s,splitPercentage:50}}return e}return {...e,first:ye(e.first,t,n,o,r)||e.first,second:ye(e.second,t,n,o,r)||e.second}}function lt(e,t,n){if(e===null)return {type:"pane",id:de(),tabs:[t],activeTabId:t,tabsMetadata:n?{[t]:n}:void 0};function o(r,s){return r.type==="pane"?{type:"split",direction:s==="row"?"column":"row",splitPercentage:50,first:r,second:{type:"pane",id:de(),tabs:[t],activeTabId:t,tabsMetadata:n?{[t]:n}:void 0}}:{...r,second:o(r.second,r.direction)}}return o(e,null)}function Pe(e,t,n){return e===null?null:e===t?{...e,splitPercentage:n}:e.type==="split"?{...e,first:Pe(e.first,t,n)||e.first,second:Pe(e.second,t,n)||e.second}:e}function j(e,t){return e===null?null:e.type==="pane"?e.id===t?e:null:j(e.first,t)??j(e.second,t)}function W(e,t){return e===null?null:e.type==="pane"?e.tabs.includes(t)?e:null:W(e.first,t)??W(e.second,t)}function ct(e,t){let n=W(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 Le(e,t,n){if(e===null)return null;if(e.type==="pane"){if(e.tabs.includes(t)){let o=e.tabsMetadata||{},r=o[t],s=n(r),i={...o};return s===void 0?delete i[t]:i[t]=s,{...e,tabsMetadata:Object.keys(i).length>0?i:void 0}}return e}return {...e,first:Le(e.first,t,n)??e.first,second:Le(e.second,t,n)??e.second}}function Me(e,t,n,o){if(e===null)return null;if(e.type==="pane"){if(e.id===t){let r=[...e.tabs];r.includes(n)||r.push(n);let s=e.tabsMetadata;return o&&(s={...e.tabsMetadata,[n]:o}),{...e,tabs:r,activeTabId:n,tabsMetadata:s}}return e}return {...e,first:Me(e.first,t,n,o)||e.first,second:Me(e.second,t,n,o)||e.second}}function Ze(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,first:Ze(e.first,t,n)??e.first,second:Ze(e.second,t,n)??e.second}}function Ce(e,t,n){return e===null?null:e.type==="pane"?e.id===t?e.activeTabId===n?e:{...e,activeTabId:n}:e:{...e,first:Ce(e.first,t,n)??e.first,second:Ce(e.second,t,n)??e.second}}function ut(e,t,n){if(e===null)return null;let r=W(e,t)?.tabsMetadata?.[t],s=fe(e,t);if(s===null)return {type:"pane",id:de(),tabs:[t],activeTabId:t,tabsMetadata:r?{[t]:r}:void 0};function i(l){if(l.type==="pane"){if(l.id===n){let p=[...l.tabs];p.includes(t)||p.push(t);let d={...l.tabsMetadata};return r&&(d[t]=r),{...l,tabs:p,activeTabId:t,tabsMetadata:Object.keys(d).length>0?d:void 0}}return l}return {...l,first:i(l.first),second:i(l.second)}}return i(s)}function ke(e,t,n,o="before"){if(e===null)return null;let s=W(e,t)?.tabsMetadata?.[t],i=fe(e,t);if(i===null)return {type:"pane",id:de(),tabs:[t],activeTabId:t,tabsMetadata:s?{[t]:s}:void 0};function l(p){if(p.type==="pane"){if(p.tabs.includes(n)){let f=[...p.tabs].filter(C=>C!==t),h=f.indexOf(n);h<0&&(h=0),o==="after"&&(h+=1),f.splice(h,0,t);let T={...p.tabsMetadata};return s&&(T[t]=s),{...p,tabs:f,activeTabId:t,tabsMetadata:Object.keys(T).length>0?T:void 0}}return p}return {...p,first:l(p.first),second:l(p.second)}}return l(i)}function me(e,t=0,n=0,o=100,r=100,s="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:i,splitPercentage:l,first:p,second:d}=e,h={id:`splitter-${s}-${i}`,currentNode:e,direction:i,left:i==="row"?t+o*(l/100):t,top:i==="column"?n+r*(l/100):n,width:i==="row"?0:o,height:i==="column"?0:r,parentLeft:t,parentTop:n,parentWidth:o,parentHeight:r},T={panes:[],splitters:[]},C={panes:[],splitters:[]};if(i==="row"){let m=o*(l/100);T=me(p,t,n,m,r,`${s}-L`),C=me(d,t+m,n,o-m,r,`${s}-R`);}else {let m=r*(l/100);T=me(p,t,n,o,m,`${s}-T`),C=me(d,t,n+m,o,r-m,`${s}-B`);}return {panes:[...T.panes,...C.panes],splitters:[h,...T.splitters,...C.splitters]}}function dt(e,t,n,o){if(!(t==="tab"&&n&&e.includes(n))||!o)return -1;let i=e.indexOf(n);return o==="before"?i:i+1}function Ie(e){try{return JSON.stringify(e)}catch{return ""}}function $t(e){let{initialLayout:t,layout:n,onChange:o,fullscreenPaneId:r,onFullscreenChange:s,locked:i=false,dragActivationDistance:l=8,snapThreshold:p=8,minSplitPercentage:d=5,maxSplitPercentage:f=95,enableDragToDismiss:h=false,dismissThreshold:T=60,onRemove:C,onDragStart:m,onDragEnd:k,onResizeStart:L,onResize:M,onResizeEnd:u,onDismissIntentChange:y}=e,[N,E]=Jt.useState(()=>n!==void 0?n:t??null),[A,J]=Jt.useState(()=>Ie(n!==void 0?n:null)),[q,B]=Jt.useState(r||null),[ee,te]=Jt.useState(i),[ae,oe]=Jt.useState(null),[le,D]=Jt.useState(null),[O,$]=Jt.useState(null),[z,R]=Jt.useState(null),a=Jt.useRef(null),P=Jt.useCallback(c=>{a.current=c;},[]),x=Jt.useRef(N);x.current=N;let v=Jt.useRef(o);v.current=o;let U=Jt.useRef(s);U.current=s;let F=Jt.useCallback(c=>{B(c),U.current?.(c);},[]);if(Jt.useEffect(()=>{te(i);},[i]),Jt.useEffect(()=>{r!==void 0&&B(r);},[r]),n!==void 0){let c=Ie(n);c!==A&&(J(c),E(n));}let g=Jt.useCallback(c=>(...S)=>{let H=x.current,V=c(H,...S);Ie(H)!==Ie(V)&&(x.current=V,E(V),v.current?.(V));},[]),G=Jt.useCallback(g((c,S)=>typeof S=="function"?S(c):S),[g]),b=Jt.useCallback(g((c,S)=>be(c,S)),[g]),w=Jt.useCallback(g((c,S,H)=>lt(c,S,H)),[g]),Z=Jt.useCallback(g((c,S,H,V)=>{let pe=j(c,S)??W(c,S);if(!pe)return c;let Ne=W(c,H),Ue=Ne&&Ne.id===pe.id?c:fe(c,H)??c;return Me(Ue,pe.id,H,V)}),[g]),re=Jt.useCallback(g((c,S,H,V,pe)=>{let Ne=j(c,S)??W(c,S);if(!Ne)return c;let tt=j(c,pe)??W(c,pe)??{type:"pane",id:pe,tabs:[pe],activeTabId:pe},Ue=be(c,pe);return ye(Ue,Ne.id,H,V,tt)}),[g]),K=Jt.useCallback(g((c,S,H)=>Pe(c,S,H)),[g]),Q=Jt.useCallback(g((c,S,H)=>Le(c,S,H)),[g]),Se=Jt.useCallback(g((c,S,H)=>{let V=j(c,S)??W(c,S);return V?Ze(c,V.id,H):c}),[g]),ce=Jt.useCallback(g((c,S,H)=>{let V=j(c,S)??W(c,S);return V?Ce(c,V.id,H):c}),[g]),ue=Jt.useCallback(g((c,S,H)=>{let V=j(c,H)??W(c,H);return V?ut(c,S,V.id):c}),[g]),I=Jt.useCallback(g((c,S,H,V)=>ke(c,S,H,V)),[g]),se=Jt.useCallback(g((c,S)=>fe(c,S)),[g]),X=Jt.useCallback(c=>j(x.current,c),[]),ge=Jt.useCallback(c=>W(x.current,c),[]),ie=Jt.useCallback(c=>ct(x.current,c),[]);return {layout:N,setLayout:G,layoutBeforeDrag:ae,setLayoutBeforeDrag:oe,fullscreenPaneId:q,setFullscreenPaneId:F,locked:ee,setLocked:te,activeId:le,setActiveId:D,activeType:O,setActiveType:$,dismissIntentId:z,setDismissIntentId:R,containerRef:a,setContainerRef:P,dragActivationDistance:l,snapThreshold:p,minSplitPercentage:d,maxSplitPercentage:f,enableDragToDismiss:h,dismissThreshold:T,onRemove:C,onDragStart:m,onDragEnd:k,onResizeStart:L,onResize:M,onResizeEnd:u,onDismissIntentChange:y,removePane:b,addPane:w,addTab:Z,splitPane:re,updateSplitPercentage:K,updateTabMetadata:Q,updatePaneLock:Se,selectTab:ce,mergeTab:ue,moveTab:I,removeTab:se,findPaneById:X,findPaneContainingTab:ge,findTabById:ie}}function ft({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 Kt=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 Kt__default=/*#__PURE__*/_interopDefault(Kt);function rt(e,t){Array.from(e.styleSheets).forEach(n=>{try{if(n.cssRules){let o=t.createElement("style");Array.from(n.cssRules).forEach(r=>{o.appendChild(t.createTextNode(r.cssText));}),t.head.appendChild(o);}else if(n.href){let o=t.createElement("link");o.rel="stylesheet",o.href=n.href,t.head.appendChild(o);}}catch{if(n.href){let o=t.createElement("link");o.rel="stylesheet",o.href=n.href,t.head.appendChild(o);}}});}function Xe(e){let t=document.getElementById(e);return t||(t=document.createElement("div"),t.id=e,t.style.display="none",document.body.appendChild(t)),t}function it(e){let t=Kt.useRef(null);return Kt.useEffect(()=>{if(!e){t.current=null;return}let n=r=>{t.current={x:r.clientX,y:r.clientY};},o=r=>{let s=r.touches[0]||r.changedTouches[0];s&&(t.current={x:s.clientX,y:s.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 at(e){Kt.useEffect(()=>(e?document.body.style.setProperty("cursor","not-allowed","important"):document.body.style.removeProperty("cursor"),()=>{document.body.style.removeProperty("cursor");}),[e]);}function lt(){let[e,t]=Kt.useState({}),n=Kt.useRef(true);Kt.useEffect(()=>(n.current=true,()=>{n.current=false;}),[]);let o=Kt.useCallback((r,s)=>{n.current&&t(i=>i[r]===s?i:{...i,[r]:s});},[]);return {portalTargets:e,registerPortalTarget:o}}function ct({tabId:e,isOpenedInNewWindow:t,onClose:n}){let o=Kt.useRef(null),[r,s]=Kt.useState(null);return Kt.useEffect(()=>{let i=null;if(t){if(!o.current||o.current.closed){let c=`zeugma-tab-${e.replace(/[^a-zA-Z0-9]/g,"_")}`,p=window.open("",c,"width=800,height=600,menubar=no,toolbar=no,location=no,status=no,resizable=yes");if(p){o.current=p;let f=e.includes("/")?e.split("/").pop():e;p.document.title=f,rt(document,p.document);let m=p.document.createElement("div");m.id="zeugma-popup-root",p.document.body.appendChild(m),s(m),p.addEventListener("beforeunload",n),i=setInterval(()=>{p.closed&&n();},300);}else console.warn("Popup window blocked or failed to open."),n();}}else o.current&&!o.current.closed&&o.current.close(),o.current=null,s(null);return ()=>{i&&clearInterval(i),o.current&&o.current.removeEventListener("beforeunload",n);}},[t,e,n]),Kt.useEffect(()=>()=>{o.current&&!o.current.closed&&o.current.close();},[]),{popupWindow:o.current,popupContainer:r}}var zt=8,At=8,Jn=4;function de(){return "pane-"+Math.random().toString(36).substring(2,11)}function he(e,t){if(e===null)return null;if(e.type==="pane")return e.id===t?null:e;let n=he(e.first,t),o=he(e.second,t);return n===null?o:o===null?n:{...e,first:n,second:o}}function fe(e,t){if(e===null)return null;if(e.type==="pane"){if(e.tabs.includes(t)){let r=e.tabs.filter(c=>c!==t);if(r.length===0)return null;let s=e.activeTabId;e.activeTabId===t&&(s=r[0]);let i={...e.tabsMetadata};return delete i[t],{...e,tabs:r,activeTabId:s,tabsMetadata:Object.keys(i).length>0?i:void 0}}return e}let n=fe(e.first,t),o=fe(e.second,t);return n===null?o:o===null?n:{...e,first:n,second:o}}function Ce(e,t,n,o,r){if(e===null)return typeof r=="string"?{type:"pane",id:de(),tabs:[r],activeTabId:r}:r;if(e.type==="pane"){if(e.id===t){let s=typeof r=="string"?{type:"pane",id:de(),tabs:[r],activeTabId:r}:r,i=o==="left"||o==="top";return {type:"split",direction:n,first:i?s:e,second:i?e:s,splitPercentage:50}}return e}return {...e,first:Ce(e.first,t,n,o,r)||e.first,second:Ce(e.second,t,n,o,r)||e.second}}function ut(e,t,n){if(e===null)return {type:"pane",id:de(),tabs:[t],activeTabId:t,tabsMetadata:n?{[t]:n}:void 0};function o(r,s){return r.type==="pane"?{type:"split",direction:s==="row"?"column":"row",splitPercentage:50,first:r,second:{type:"pane",id:de(),tabs:[t],activeTabId:t,tabsMetadata:n?{[t]:n}:void 0}}:{...r,second:o(r.second,r.direction)}}return o(e,null)}function Te(e,t,n){return e===null?null:e===t?{...e,splitPercentage:n}:e.type==="split"?{...e,first:Te(e.first,t,n)||e.first,second:Te(e.second,t,n)||e.second}:e}function ee(e,t){return e===null?null:e.type==="pane"?e.id===t?e:null:ee(e.first,t)??ee(e.second,t)}function U(e,t){return e===null?null:e.type==="pane"?e.tabs.includes(t)?e:null:U(e.first,t)??U(e.second,t)}function dt(e,t){let n=U(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 Me(e,t,n){if(e===null)return null;if(e.type==="pane"){if(e.tabs.includes(t)){let o=e.tabsMetadata||{},r=o[t],s=n(r),i={...o};return s===void 0?delete i[t]:i[t]=s,{...e,tabsMetadata:Object.keys(i).length>0?i:void 0}}return e}return {...e,first:Me(e.first,t,n)??e.first,second:Me(e.second,t,n)??e.second}}function Ze(e,t,n,o){if(e===null)return null;if(e.type==="pane"){if(e.id===t){let r=[...e.tabs];r.includes(n)||r.push(n);let s=e.tabsMetadata;return o&&(s={...e.tabsMetadata,[n]:o}),{...e,tabs:r,activeTabId:n,tabsMetadata:s}}return e}return {...e,first:Ze(e.first,t,n,o)||e.first,second:Ze(e.second,t,n,o)||e.second}}function ke(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,first:ke(e.first,t,n)??e.first,second:ke(e.second,t,n)??e.second}}function Re(e,t,n){return e===null?null:e.type==="pane"?e.id===t?e.activeTabId===n?e:{...e,activeTabId:n}:e:{...e,first:Re(e.first,t,n)??e.first,second:Re(e.second,t,n)??e.second}}function pt(e,t,n){if(e===null)return null;let r=U(e,t)?.tabsMetadata?.[t],s=fe(e,t);if(s===null)return {type:"pane",id:de(),tabs:[t],activeTabId:t,tabsMetadata:r?{[t]:r}:void 0};function i(c){if(c.type==="pane"){if(c.id===n){let p=[...c.tabs];p.includes(t)||p.push(t);let f={...c.tabsMetadata};return r&&(f[t]=r),{...c,tabs:p,activeTabId:t,tabsMetadata:Object.keys(f).length>0?f:void 0}}return c}return {...c,first:i(c.first),second:i(c.second)}}return i(s)}function $e(e,t,n,o="before"){if(e===null)return null;let s=U(e,t)?.tabsMetadata?.[t],i=fe(e,t);if(i===null)return {type:"pane",id:de(),tabs:[t],activeTabId:t,tabsMetadata:s?{[t]:s}:void 0};function c(p){if(p.type==="pane"){if(p.tabs.includes(n)){let m=[...p.tabs].filter(v=>v!==t),b=m.indexOf(n);b<0&&(b=0),o==="after"&&(b+=1),m.splice(b,0,t);let P={...p.tabsMetadata};return s&&(P[t]=s),{...p,tabs:m,activeTabId:t,tabsMetadata:Object.keys(P).length>0?P:void 0}}return p}return {...p,first:c(p.first),second:c(p.second)}}return c(i)}function ge(e,t=0,n=0,o=100,r=100,s="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:i,splitPercentage:c,first:p,second:f}=e,b={id:`splitter-${s}-${i}`,currentNode:e,direction:i,left:i==="row"?t+o*(c/100):t,top:i==="column"?n+r*(c/100):n,width:i==="row"?0:o,height:i==="column"?0:r,parentLeft:t,parentTop:n,parentWidth:o,parentHeight:r},P={panes:[],splitters:[]},v={panes:[],splitters:[]};if(i==="row"){let x=o*(c/100);P=ge(p,t,n,x,r,`${s}-L`),v=ge(f,t+x,n,o-x,r,`${s}-R`);}else {let x=r*(c/100);P=ge(p,t,n,o,x,`${s}-T`),v=ge(f,t,n+x,o,r-x,`${s}-B`);}return {panes:[...P.panes,...v.panes],splitters:[b,...P.splitters,...v.splitters]}}function ft(e,t,n,o){if(!(t==="tab"&&n&&e.includes(n))||!o)return -1;let i=e.indexOf(n);return o==="before"?i:i+1}function Le(e){try{return JSON.stringify(e)}catch{return ""}}function Ht(e){let{initialLayout:t,layout:n,onChange:o,fullscreenPaneId:r,onFullscreenChange:s,locked:i=false,dragActivationDistance:c=8,snapThreshold:p=8,minSplitPercentage:f=5,maxSplitPercentage:m=95,enableDragToDismiss:b=false,dismissThreshold:P=60,onRemove:v,onDragStart:x,onDragEnd:M,onResizeStart:A,onResize:N,onResizeEnd:d,onDismissIntentChange:T}=e,[E,D]=Kt.useState(()=>n!==void 0?n:t??null),[H,q]=Kt.useState(()=>Le(n!==void 0?n:null)),[G,X]=Kt.useState(r||null),[te,oe]=Kt.useState(i),[re,se]=Kt.useState(null),[le,w]=Kt.useState({}),F=Kt.useCallback((u,C)=>{w(L=>L[u]===C?L:{...L,[u]:C});},[]),[Z,k]=Kt.useState(null),[y,a]=Kt.useState(null),[h,R]=Kt.useState(null),g=Kt.useRef(null),K=Kt.useCallback(u=>{g.current=u;},[]),$=Kt.useRef(E);$.current=E;let O=Kt.useRef(o);O.current=o;let V=Kt.useRef(s);V.current=s;let Q=Kt.useCallback(u=>{X(u),V.current?.(u);},[]);if(Kt.useEffect(()=>{oe(i);},[i]),Kt.useEffect(()=>{r!==void 0&&X(r);},[r]),n!==void 0){let u=Le(n);u!==H&&(q(u),D(n));}let l=Kt.useCallback(u=>(...C)=>{let L=$.current,B=u(L,...C);Le(L)!==Le(B)&&($.current=B,D(B),O.current?.(B));},[]),I=Kt.useCallback(l((u,C)=>typeof C=="function"?C(u):C),[l]),ie=Kt.useCallback(l((u,C)=>he(u,C)),[l]),Y=Kt.useCallback(l((u,C,L)=>ut(u,C,L)),[l]),j=Kt.useCallback(l((u,C,L,B)=>{let pe=ee(u,C)??U(u,C);if(!pe)return u;let Ee=U(u,L),_e=Ee&&Ee.id===pe.id?u:fe(u,L)??u;return Ze(_e,pe.id,L,B)}),[l]),Ne=Kt.useCallback(l((u,C,L,B,pe)=>{let Ee=ee(u,C)??U(u,C);if(!Ee)return u;let ot=ee(u,pe)??U(u,pe)??{type:"pane",id:pe,tabs:[pe],activeTabId:pe},_e=he(u,pe);return Ce(_e,Ee.id,L,B,ot)}),[l]),ce=Kt.useCallback(l((u,C,L)=>Te(u,C,L)),[l]),ue=Kt.useCallback(l((u,C,L)=>Me(u,C,L)),[l]),J=Kt.useCallback(l((u,C,L)=>{let B=ee(u,C)??U(u,C);return B?ke(u,B.id,L):u}),[l]),me=Kt.useCallback(l((u,C,L)=>{let B=ee(u,C)??U(u,C);return B?Re(u,B.id,L):u}),[l]),z=Kt.useCallback(l((u,C,L)=>{let B=ee(u,L)??U(u,L);return B?pt(u,C,B.id):u}),[l]),ae=Kt.useCallback(l((u,C,L,B)=>$e(u,C,L,B)),[l]),W=Kt.useCallback(l((u,C)=>fe(u,C)),[l]),Pe=Kt.useCallback(u=>ee($.current,u),[]),nt=Kt.useCallback(u=>U($.current,u),[]),kt=Kt.useCallback(u=>dt($.current,u),[]);return {layout:E,setLayout:I,layoutBeforeDrag:re,setLayoutBeforeDrag:se,fullscreenPaneId:G,setFullscreenPaneId:Q,locked:te,setLocked:oe,popoutTabs:le,activeId:Z,setActiveId:k,activeType:y,setActiveType:a,dismissIntentId:h,setDismissIntentId:R,containerRef:g,setContainerRef:K,dragActivationDistance:c,snapThreshold:p,minSplitPercentage:f,maxSplitPercentage:m,enableDragToDismiss:b,dismissThreshold:P,onRemove:v,onDragStart:x,onDragEnd:M,onResizeStart:A,onResize:N,onResizeEnd:d,onDismissIntentChange:T,removePane:ie,addPane:Y,addTab:j,splitPane:Ne,updateSplitPercentage:ce,updateTabMetadata:ue,updatePaneLock:J,selectTab:me,mergeTab:z,moveTab:ae,removeTab:W,setTabPopout:F,findPaneById:Pe,findPaneContainingTab:nt,findTabById:kt}}function gt({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=`
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 s=l=>{n(l);},i=()=>{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",i),o();};document.addEventListener("pointermove",s),document.addEventListener("pointerup",i);}var Je=Jt.createContext(void 0),qe=Jt.createContext(void 0),Ae=Jt.createContext(void 0),Ge=Jt.createContext(void 0),ne=()=>{let e=Jt.useContext(Je);if(!e)throw new Error("useZeugmaState must be used within a Zeugma provider");return e},Re=()=>{let e=Jt.useContext(qe);if(!e)throw new Error("useZeugmaActions must be used within a Zeugma provider");return e},He=()=>{let e=Jt.useContext(Ge);if(!e)throw new Error("useZeugmaDrag must be used within a Zeugma provider");return e};var zt=()=>{let e=ne(),t=Re();return {...e,...t}};var Oe=class extends core.PointerSensor{static activators=[{eventName:"onPointerDown",handler:({nativeEvent:t})=>!t.target?.closest(".drag-cancel")}]},Fe=class extends core.TouchSensor{static activators=[{eventName:"onTouchStart",handler:({nativeEvent:t})=>!t.target?.closest(".drag-cancel")}]};function Ve(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 gt(e){let{layout:t,setLayout:n,layoutBeforeDrag:o,setLayoutBeforeDrag:r,activeId:s,setActiveId:i,setActiveType:l,dismissIntentId:p,setDismissIntentId:d,setOverTabId:f,setOverTabPosition:h,containerRef:T,dragActivationDistance:C,enableDragToDismiss:m,dismissThreshold:k,onRemove:L,onDragStart:M,onDragEnd:u,onDismissIntentChange:y,removeTab:N}=e,E=Jt.useRef(null),A=rt(s),[J,q]=Jt.useState(false);st(J);let B=core.useSensors(core.useSensor(Oe,{activationConstraint:{distance:C}}),core.useSensor(Fe,{activationConstraint:{delay:250,tolerance:5}})),ee=Jt.useCallback(D=>{let $=D.active.id.toString().startsWith("tab-header-"),z=core.pointerWithin(D),R=$?z:z.filter(a=>!a.id.toString().startsWith("tab-drop-"));if(R.length>0)return [...R].sort((P,x)=>{let v=P.id.toString(),U=x.id.toString();if($){let _=v.startsWith("tab-drop-"),G=U.startsWith("tab-drop-");if(_&&!G)return -1;if(!_&&G)return 1}let F=v.startsWith("drop-root-"),g=U.startsWith("drop-root-");return F&&!g?-1:!F&&g?1:0});if($){let a=D.droppableContainers.filter(P=>P.id.toString().startsWith("tab-drop-"));return core.closestCenter({...D,droppableContainers:a})}return []},[]);return {sensors:B,collisionDetection:ee,onDragStart:D=>{let O=D.active.id.toString(),$=O.startsWith("tab-header-"),z=$?O.substring(11):O;i(z),l($?"tab":"pane"),f(null),h(null);let R=D.activatorEvent;A.current=Ve(R),m&&T.current?E.current=T.current.getBoundingClientRect():E.current=null;let a=t;if($){let P=W(t,z);P&&(a=Ce(t,P.id,z)||t);}r(a),$&&a!==t&&n(a),M&&M(z);},onDragMove:D=>{let{over:O}=D,$=O?.id.toString()||"",z=$.startsWith("drop-locked-");q(b=>b===z?b:z);let R=D.active.id.toString(),a=R.startsWith("tab-header-"),P=a?R.substring(11):R,x=$.match(/^tab-drop-(.+)$/);if(x&&O&&a){let[,b]=x;if(P!==b){let w="before",Z=O.rect,re=D.activatorEvent,K=null;if(A.current)K=A.current.x;else {let Q=Ve(re);Q&&(K=Q.x+D.delta.x);}if(K!==null){let Q=Z.left+Z.width/2;K>Q&&(w="after");}f(Q=>Q===b?Q:b),h(Q=>Q===w?Q:w);}else f(w=>w===null?w:null),h(w=>w===null?w:null);}else f(b=>b===null?b:null),h(b=>b===null?b:null);if(!m)return;let v=E.current;if(!v){p!==null&&(d(null),y?.(null));return}let U=D.activatorEvent,F=null,g=null;if(A.current)F=A.current.x,g=A.current.y;else {let b=Ve(U);b&&(F=b.x+D.delta.x,g=b.y+D.delta.y);}let _=0;if(F!==null&&g!==null){let b=0,w=0;F<v.left?b=v.left-F:F>v.right&&(b=F-v.right),g<v.top?w=v.top-g:g>v.bottom&&(w=g-v.bottom),_=Math.sqrt(b*b+w*w);}else {let b=D.active.rect.current.translated;if(b){let w=b.left+b.width/2,Z=b.top+b.height/2,re=0,K=0;w<v.left?re=v.left-w:w>v.right&&(re=w-v.right),Z<v.top?K=v.top-Z:Z>v.bottom&&(K=Z-v.bottom),_=Math.sqrt(re*re+K*K);}}_>k?p!==P&&(d(P),y?.(P)):p!==null&&(d(null),y?.(null));},onDragEnd:D=>{i(null),l(null),q(false),f(null),h(null);let{active:O,over:$}=D,z=O.id.toString(),R=z.startsWith("tab-header-"),a=R?z.substring(11):z,P=m&&p===a;d(null),y?.(null),E.current=null;let x=o||t;if(r(null),P){L?L(a):N(a),u&&u(a,null,null);return}if(!$){n(x),u&&u(a,null,null);return}let v=$.id.toString();if(v.startsWith("drop-locked-")){n(x),u&&u(a,null,null);return}let U=v.match(/^tab-drop-(.+)$/);if(U){if(!R){n(x),u&&u(a,null,null);return}let[,ce]=U;if(a!==ce){let ue="before",I=$.rect,se=D.activatorEvent,X=null;if(A.current)X=A.current.x;else {let ie=Ve(se);ie&&(X=ie.x+D.delta.x);}if(X!==null){let ie=I.left+I.width/2;X>ie&&(ue="after");}let ge=ke(x,a,ce,ue);n(ge),u&&u(a,ce,{type:"move",position:"center"});}else n(x),u&&u(a,null,null);return}let F=v.match(/^drop-root-(1\/4|1\/3)-(top|bottom|left|right|start|end)$/);if(F){let[,ce,ue]=F,I=ue;I==="start"&&(I="left"),I==="end"&&(I="right");let se=R?fe(x,a):be(x,a),X;if(R){let ie=W(x,a)?.tabsMetadata?.[a];X={type:"pane",id:de(),tabs:[a],activeTabId:a,tabsMetadata:ie?{[a]:ie}:void 0};}else X=j(x,a)??{type:"pane",id:de(),tabs:[a],activeTabId:a};if(se===null)n(X);else {let ge=I==="left"||I==="right",ie=I==="left"||I==="top",c=50;ce==="1/4"?c=ie?25:75:ce==="1/3"&&(c=ie?100/3:200/3),n({type:"split",direction:ge?"row":"column",first:ie?X:se,second:ie?se:X,splitPercentage:c});}u&&u(a,"root",{type:"split",direction:I==="left"||I==="right"?"row":"column",position:I});return}let g=v.match(/^drop-(left|right|top|bottom)-(.+)$/);if(!g){n(x),u&&u(a,null,null);return}let[,_,G]=g,b=R?W(x,a):j(x,a),w=b&&b.id===G,Z=b&&b.tabs.length===1;if(a===G||w&&Z){n(x),u&&u(a,null,null);return}let re=_==="left"||_==="right"?"row":"column",K;if(R){let ue=W(x,a)?.tabsMetadata?.[a];K={type:"pane",id:de(),tabs:[a],activeTabId:a,tabsMetadata:ue?{[a]:ue}:void 0};}else K=j(x,a)??{type:"pane",id:de(),tabs:[a],activeTabId:a};let Q=R?fe(x,a):be(x,a),Se=ye(Q,G,re,_,K);n(Se),u&&u(a,G,{type:"split",direction:re,position:_});},onDragCancel:()=>{i(null),l(null),q(false),f(null),h(null),d(null),y?.(null),E.current=null,o!==null&&(n(o),r(null));}}}var bt=({activeId:e,render:t,className:n})=>{let o=Jt.useRef(null);return Jt.useEffect(()=>{let r=s=>{o.current&&(o.current.style.transform=`translate(${s.clientX+12}px, ${s.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 ht=Jt__default.default.memo(({tabId:e,target:t,renderWidget:n})=>{let[o,r]=Jt.useState(false),s=Jt.useRef(null),{findTabById:i}=ne(),{updateTabMetadata:l}=Re(),d=!!i(e)?.metadata?.openInNewWindow;Jt.useEffect(()=>{r(true);},[]);let f=Jt.useCallback(()=>{s.current&&(document.adoptNode(s.current),_e("zeugma-hidden-portal-container").appendChild(s.current)),l(e,m=>{if(m)return {...m,openInNewWindow:false}});},[e,l]),{popupWindow:h,popupContainer:T}=at({tabId:e,isOpenedInNewWindow:d,onClose:f});if(Jt.useEffect(()=>{if(!o||!s.current)return;let m=s.current;d?T&&h&&(h.document.adoptNode(m),T.appendChild(m)):(document.adoptNode(m),t?t.appendChild(m):_e("zeugma-hidden-portal-container").appendChild(m));},[t,o,d,T,h]),Jt.useEffect(()=>()=>{s.current&&s.current.remove();},[]),!o)return null;s.current||(s.current=document.createElement("div"),s.current.className=`zeugma-portal-wrapper-${e}`,s.current.style.width="100%",s.current.style.height="100%");let C=s.current;return !C||!n?null:reactDom.createPortal(n(e),C)});var en=e=>{let t=e,{renderPane:n,renderWidget:o,renderDragOverlay:r,classNames:s={},children:i,layout:l,setLayout:p,fullscreenPaneId:d,setFullscreenPaneId:f,locked:h,setLocked:T,findPaneById:C,findPaneContainingTab:m,findTabById:k,activeId:L,activeType:M,dismissIntentId:u,setContainerRef:y,layoutBeforeDrag:N,snapThreshold:E,minSplitPercentage:A,maxSplitPercentage:J,onRemove:q,onResizeStart:B,onResize:ee,onResizeEnd:te,removePane:ae,addPane:oe,addTab:le,updateTabMetadata:D,updatePaneLock:O,selectTab:$,mergeTab:z,removeTab:R,splitPane:a,updateSplitPercentage:P,moveTab:x}=t,{portalTargets:v,registerPortalTarget:U}=it(),[F,g]=Jt.useState(null),[_,G]=Jt.useState(null),b=gt({...t,setOverTabId:g,setOverTabPosition:G}),w=Jt.useCallback(I=>n(I),[n]),Z=Jt.useMemo(()=>s,[s.dashboard,s.dashboardDismissActive,s.pane,s.paneLocked,s.dropPreview,s.dragOverlay,s.resizer,s.dismissPreview,s.dashboardLocked,s.lockedPreview,s.tabDropPreview,s.tabSeparator]),re=Jt.useCallback((I,se)=>{te&&te(I,se);},[te]),K=Jt.useMemo(()=>({layout:l,setLayout:p,renderPane:w,activeId:L,activeType:M,dismissIntentId:u,setContainerRef:y,fullscreenPaneId:d,classNames:Z,onRemove:q,onFullscreenChange:f,snapThreshold:E,onResizeStart:B,onResize:ee,onResizeEnd:re,minSplitPercentage:A,maxSplitPercentage:J,locked:h,setLocked:T,findPaneById:C,findPaneContainingTab:m,findTabById:k}),[l,L,M,u,y,d,Z,q,f,E,B,ee,A,J,p,w,re,h,T,C,m,k]),Q=Jt.useMemo(()=>({overTabId:F,overTabPosition:_}),[F,_]),Se=Jt.useMemo(()=>({removePane:ae,addPane:oe,addTab:le,updateTabMetadata:D,updatePaneLock:O,selectTab:$,mergeTab:z,removeTab:R,setFullscreenPaneId:f,setLocked:T,splitPane:a,updateSplitPercentage:P,moveTab:x}),[ae,oe,le,D,O,$,z,R,f,T,a,P,x]),ce=Jt.useMemo(()=>{let I=new Set;function se(X){X&&(X.type==="pane"?X.tabs.forEach(ge=>{I.add(ge);}):(se(X.first),se(X.second)));}return se(l),N&&se(N),Array.from(I).sort()},[l,L,N]),ue=Jt.useMemo(()=>({registerPortalTarget:U}),[U]);return jsxRuntime.jsx(qe.Provider,{value:Se,children:jsxRuntime.jsx(Je.Provider,{value:K,children:jsxRuntime.jsx(Ge.Provider,{value:Q,children:jsxRuntime.jsxs(Ae.Provider,{value:ue,children:[jsxRuntime.jsx(core.DndContext,{id:"zeugma-dnd-context",...b,children:i}),L&&M&&r&&jsxRuntime.jsx(bt,{activeId:L,render:I=>r(I,M),className:`${s.dragOverlay||""} ${L===u&&s.dismissPreview||""}`.trim()}),jsxRuntime.jsx("div",{id:"zeugma-portal-host",style:{display:"none"},children:ce.map(I=>jsxRuntime.jsx(ht,{tabId:I,target:v[I]||null,renderWidget:o},I))})]})})})})};var on={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:"25%"},"1/3":{top:0,left:0,width:"100%",height:"33.3333%"}},bottom:{"1/4":{bottom:0,left:0,width:"100%",height:"25%"},"1/3":{bottom:0,left:0,width:"100%",height:"33.3333%"}},left:{"1/4":{left:0,top:0,width:"25%",height:"100%"},"1/3":{left:0,top:0,width:"33.3333%",height:"100%"}},right:{"1/4":{right:0,top:0,width:"25%",height:"100%"},"1/3":{right:0,top:0,width:"33.3333%",height:"100%"}}},sn=({id:e,fraction:t,edge:n,activeClassName:o})=>{let{setNodeRef:r,isOver:s}=core.useDroppable({id:e}),i={position:"absolute",pointerEvents:"none",zIndex:101,boxSizing:"border-box",...rn[n][t]};return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("div",{ref:r,style:on[n][t]}),s&&jsxRuntime.jsx("div",{className:o,style:i})]})},Tt=({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/3-top",fraction:"1/3",edge:"top"},{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(sn,{id:n.id,fraction:n.fraction,edge:n.edge,activeClassName:e},n.id))});function Qe({containerRef:e,isRow:t,direction:n,splitPercentage:o,resizerSize:r,snapThreshold:s,layout:i,currentNode:l,onLayoutChange:p,onResizeStart:d,onResizeEnd:f,parentLeft:h,parentTop:T,parentWidth:C,parentHeight:m}){let{onResizeStart:k,onResize:L,onResizeEnd:M,minSplitPercentage:u=5,maxSplitPercentage:y=95,locked:N=false}=ne();return Jt.useCallback(E=>{if(N)return;E.preventDefault();let A=e.current;if(!A)return;d&&d(),k&&k(l);let J=A.getBoundingClientRect(),q=E.clientX,B=E.clientY,ee=o,te=E.currentTarget,ae=J.left+J.width*(h/100),oe=J.top+J.height*(T/100),le=J.width*(C/100),D=J.height*(m/100),$=Array.from(document.querySelectorAll('div[role="separator"][data-direction]')).filter(R=>R!==te&&R.getAttribute("data-direction")===n).map(R=>{let a=R.getBoundingClientRect();return t?a.left+a.width/2:a.top+a.height/2}),z=ee;ft({cursor:t?"col-resize":"row-resize",resizerEl:te,onMove:R=>{let a=t?(R.clientX-q)/le*100:(R.clientY-B)/D*100,P=ee+a,x=t?ae+(le-r)*(P/100)+r/2:oe+(D-r)*(P/100)+r/2,v=1/0,U=null;for(let G of $){let b=Math.abs(x-G);b<s&&b<v&&(v=b,U=G);}let F=P;U!==null&&(F=t?(U-r/2-ae)/(le-r)*100:(U-r/2-oe)/(D-r)*100);let g=Math.max(u,Math.min(y,F));z=g;let _=Pe(i,l,g);if(_){let{panes:G,splitters:b}=me(_),w=e.current;if(w){for(let Z of G)w.style.setProperty(`--pane-left-${Z.paneId}`,`${Z.left}%`),w.style.setProperty(`--pane-top-${Z.paneId}`,`${Z.top}%`),w.style.setProperty(`--pane-width-${Z.paneId}`,`${Z.width}%`),w.style.setProperty(`--pane-height-${Z.paneId}`,`${Z.height}%`);for(let Z of b)w.style.setProperty(`--splitter-pos-${Z.id}`,`${Z.direction==="row"?Z.left:Z.top}%`);}}L&&L(l,g);},onEnd:()=>{let R=Pe(i,l,z),a=e.current;if(a){let{panes:P,splitters:x}=me(R);for(let v of P)a.style.removeProperty(`--pane-left-${v.paneId}`),a.style.removeProperty(`--pane-top-${v.paneId}`),a.style.removeProperty(`--pane-width-${v.paneId}`),a.style.removeProperty(`--pane-height-${v.paneId}`);for(let v of x)a.style.removeProperty(`--splitter-pos-${v.id}`);}p(R),f&&f(),M&&M(l,z);}});},[e,t,n,o,r,s,i,l,p,d,f,k,L,M,u,y,h,T,C,m])}var mn=({splitter:e,resizerSize:t,snapThreshold:n,containerRef:o})=>{let{layout:r,setLayout:s,classNames:i,locked:l}=ne(),[p,d]=Jt.useState(false),{currentNode:f,direction:h,left:T,top:C,width:m,height:k,parentLeft:L,parentTop:M,parentWidth:u,parentHeight:y}=e,N=h==="row",E=Qe({containerRef:o,isRow:N,direction:h,splitPercentage:f.splitPercentage,resizerSize:t,snapThreshold:n,layout:r,currentNode:f,onLayoutChange:s,onResizeStart:()=>d(true),onResizeEnd:()=>d(false),parentLeft:L,parentTop:M,parentWidth:u,parentHeight:y}),A=N?{position:"absolute",left:`calc(var(--splitter-pos-${e.id}, ${T}%) - ${t/2}px)`,top:`calc(${C}% + ${t/2}px)`,width:`${t}px`,height:`calc(${k}% - ${t}px)`,cursor:l?"default":"col-resize",pointerEvents:l?"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}, ${C}%) - ${t/2}px)`,width:`calc(${m}% - ${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:i.resizer||"","data-direction":h,"data-resizing":p||void 0,style:A,onPointerDown:E,role:"separator","aria-valuenow":f.splitPercentage,"aria-valuemin":5,"aria-valuemax":95})},gn=Jt__default.default.memo(({paneId:e,renderPane:t})=>jsxRuntime.jsx(jsxRuntime.Fragment,{children:t(e)}),(e,t)=>e.paneId===t.paneId&&e.renderPane===t.renderPane),bn=({tree:e,resizerSize:t=4,snapThreshold:n})=>{let{layout:o,renderPane:r,activeId:s,dismissIntentId:i,setContainerRef:l,fullscreenPaneId:p,snapThreshold:d,locked:f,classNames:h}=ne(),T=n!==void 0?n:d??8,C=e!==void 0?e:o,m=Jt.useRef(null),{panes:k,splitters:L}=Jt.useMemo(()=>C?me(C):{panes:[],splitters:[]},[C]);if(!C)return null;let M=()=>jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[k.map(u=>{let y=p===u.paneId;return jsxRuntime.jsx("div",{style:{position:"absolute",left:y?"0%":`var(--pane-left-${u.paneId}, ${u.left}%)`,top:y?"0%":`var(--pane-top-${u.paneId}, ${u.top}%)`,width:y?"100%":`var(--pane-width-${u.paneId}, ${u.width}%)`,height:y?"100%":`var(--pane-height-${u.paneId}, ${u.height}%)`,overflow:"hidden",zIndex:y?20:1,display:p&&!y?"none":"block",padding:y?"0px":`${t/2}px`,boxSizing:"border-box"},children:jsxRuntime.jsx(gn,{paneId:u.paneId,renderPane:r})},u.paneId)}),!p&&L.map(u=>jsxRuntime.jsx(mn,{splitter:u,resizerSize:t,snapThreshold:T,containerRef:m},u.id))]});if(e===void 0){let u=s!==null&&s===i,y=E=>{l(E),m.current=E;},N=`${h.dashboard||""} ${u&&h.dashboardDismissActive||""} ${f&&h.dashboardLocked||""}`.trim();return jsxRuntime.jsxs("div",{ref:y,className:N,style:{position:"relative",width:"100%",height:"100%",overflow:"hidden"},children:[M(),s!==null&&!f&&jsxRuntime.jsx(Tt,{activeClassName:h.dropPreview})]})}return jsxRuntime.jsx("div",{ref:m,style:{position:"relative",width:"100%",height:"100%",overflow:"hidden"},children:M()})};var Be=Jt.createContext(null);var Rn={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"}},wn={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"}},Ct=({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:Rn[t]}),r&&jsxRuntime.jsx("div",{className:n,style:wn[t]})]})},Dn=({id:e,children:t,style:n,locked:o=false})=>{let r=Jt.useRef(null),{layout:s,activeId:i,classNames:l,fullscreenPaneId:p,onFullscreenChange:d,locked:f}=ne(),{removePane:h,updateTabMetadata:T,selectTab:C,removeTab:m}=Re(),k=Jt.useContext(Ae);if(!k)throw new Error("Pane must be used within a Zeugma provider");let{registerPortalTarget:L}=k,M=Jt.useMemo(()=>j(s,e),[s,e]),u=M?.id??e,y=M?.tabs??[e],N=M?.activeTabId??e,E=M?.tabsMetadata,A=E?.[e],J=M?.locked??false,q=o||J,B=f||q,ee=f||q,te=i!==null&&i!==e&&(!y.includes(i)||y.length>1)&&!ee,{attributes:ae,listeners:oe,setNodeRef:le}=core.useDraggable({id:e,disabled:B}),D=i!==null&&y.includes(i),O=p===e,$=Jt.useCallback(()=>jsxRuntime.jsx("div",{ref:r,id:`zeugma-tab-target-${N}`,className:"zeugma-tab-content-wrapper",style:{height:"100%",width:"100%"}}),[N]);Jt.useEffect(()=>{let P=r.current;return L(N,P),()=>{L(N,null);}},[N,L]);let z=Jt.useMemo(()=>({isDragging:D,isFullscreen:O,toggleFullscreen:()=>d?.(O?null:e),remove:()=>{O&&d?.(null),h(u);},metadata:A,updateMetadata:P=>{T(e,P);},locked:B,tabs:y,activeTabId:N,selectTab:P=>C(u,P),removeTab:P=>{O&&P===N&&d?.(null),m(P);},tabsMetadata:E,updateTabMetadata:(P,x)=>{T(P,x);},renderActiveTab:$}),[D,O,d,e,m,A,T,B,y,N,C,u,E,$]),R=Jt.useMemo(()=>B?{disabled:true}:{...oe,...ae},[oe,ae,B]),a=`${l.pane||""} ${q&&l.paneLocked||""}`.trim();return jsxRuntime.jsx(Be.Provider,{value:R,children:jsxRuntime.jsxs("div",{ref:le,className:a,style:{position:"relative",width:"100%",height:"100%",...n},children:[t(z),te&&jsxRuntime.jsx("div",{style:{position:"absolute",top:0,left:0,right:0,bottom:0,zIndex:15,pointerEvents:"none"},children:["top","bottom","left","right"].map(P=>jsxRuntime.jsx(Ct,{id:`drop-${P}-${e}`,position:P,activeClassName:l.dropPreview},P))}),i!==null&&i!==e&&ee&&jsxRuntime.jsx("div",{style:{position:"absolute",top:0,left:0,right:0,bottom:0,zIndex:15,pointerEvents:"none"},children:jsxRuntime.jsx(Ct,{id:`drop-locked-${e}`,position:"full",activeClassName:l.lockedPreview||""})})]})})};var En=({children:e,className:t,style:n})=>{let o=Jt.useContext(Be);if(!o)throw new Error("<DragHandle> must be used inside a <Pane>");let{disabled:r,...s}=o;return jsxRuntime.jsx("div",{className:t,style:{cursor:r?"default":"grab",userSelect:r?"auto":"none",touchAction:r?"auto":"none",...n},...r?{}:s,children:e})};var Nt=Jt.createContext(void 0),$n=()=>{let e=Jt.useContext(Nt);if(!e)throw new Error("useTabContext must be used within a Tab component");return e},Et=({id:e,locked:t=false,children:n,className:o,style:r})=>{let{locked:s,classNames:i={},activeType:l}=ne(),{overTabId:p}=He(),d=Jt.useContext(et),f=t||s||(d?.locked??false),{attributes:h,listeners:T,setNodeRef:C,isDragging:m}=core.useDraggable({id:`tab-header-${e}`,disabled:f}),{setNodeRef:k,isOver:L}=core.useDroppable({id:`tab-drop-${e}`,disabled:f||l==="pane"}),M=oe=>{C(oe),k(oe);},u=L&&p===e,y=d?.tabs||[],N=y.indexOf(e),E=d?.activeTabId,J=N>0&&e!==E&&y[N-1]!==E?jsxRuntime.jsx("div",{className:i.tabSeparator}):null,q=d?d.activeTabId===e:false,B=d?.tabsMetadata?.[e],ee=Jt.useCallback(()=>{d?.selectTab(e);},[d,e]),te=Jt.useCallback(()=>{d?.removeTab(e);},[d,e]),ae=Jt.useMemo(()=>({tabId:e,isActive:q,isDragging:m,isOver:u,metadata:B,locked:f,selectTab:ee,removeTab:te}),[e,q,m,u,B,f,ee,te]);return jsxRuntime.jsx(Nt.Provider,{value:ae,children:jsxRuntime.jsxs("div",{ref:M,className:o,style:{display:"inline-flex",position:"relative",cursor:f?"default":"grab",...r},...f?{}:T,...f?{}:h,children:[J,n({isDragging:m,isOver:u})]})})};var et=Jt.createContext(void 0);var It=(e,t)=>typeof e=="function"?e(t):e,Fn=({tabs:e,activeTabId:t,locked:n=false,tabsMetadata:o,selectTab:r,removeTab:s,renderTab:i,classNames:l,styles:p})=>{let{classNames:d={},activeType:f}=ne(),{overTabId:h,overTabPosition:T}=He(),C=Jt.useMemo(()=>({tabs:e,activeTabId:t,locked:n,tabsMetadata:o,selectTab:r,removeTab:s}),[e,t,n,o,r,s]),m=dt(e,f,h,T);return jsxRuntime.jsx(et.Provider,{value:C,children:jsxRuntime.jsxs("div",{className:l?.container,style:{display:"flex",alignItems:"center",height:"100%",...p?.container},children:[e.map((k,L)=>{let M=o?.[k],u=It(l?.tab,k),y=It(p?.tab,k),N=L===m;return jsxRuntime.jsxs(Jt__default.default.Fragment,{children:[N&&d.tabDropPreview&&jsxRuntime.jsx("div",{style:{position:"relative",height:"100%",width:0,zIndex:10},children:jsxRuntime.jsx("div",{className:d.tabDropPreview,style:{position:"absolute",top:0,bottom:0,transform:L===0?"none":"translateX(-50%)"}})}),jsxRuntime.jsx(Et,{id:k,locked:n,className:u,style:y,children:({isDragging:E,isOver:A})=>i({tabId:k,activeTabId:t,isDragging:E,isOver:A,metadata:M,selectTab:r,removeTab:s})})]},k)}),m===e.length&&d.tabDropPreview&&jsxRuntime.jsx("div",{style:{position:"relative",height:"100%",width:0,zIndex:10},children:jsxRuntime.jsx("div",{className:d.tabDropPreview,style:{position:"absolute",top:0,bottom:0,transform:"translateX(-100%)"}})})]})})};exports.DEFAULT_DRAG_ACTIVATION_DISTANCE=kt;exports.DEFAULT_RESIZER_SIZE=_n;exports.DEFAULT_SNAP_THRESHOLD=Zt;exports.DragHandle=En;exports.Pane=Dn;exports.PaneTree=bn;exports.PortalRegistryContext=Ae;exports.Tabs=Fn;exports.Zeugma=en;exports.ZeugmaActionsContext=qe;exports.ZeugmaDragContext=Ge;exports.ZeugmaStateContext=Je;exports.copyStyles=nt;exports.createDragSession=ft;exports.getOrCreateHiddenContainer=_e;exports.safeJsonStringify=Ie;exports.useResizer=Qe;exports.useTabContext=$n;exports.useZeugma=$t;exports.useZeugmaActions=Re;exports.useZeugmaContext=zt;exports.useZeugmaDrag=He;exports.useZeugmaState=ne;//# sourceMappingURL=index.cjs.map
6
+ `,document.head.appendChild(r),t.setAttribute("data-resizing","true");let s=c=>{n(c);},i=()=>{document.body.classList.remove("zeugma-resizing"),t.removeAttribute("data-resizing");let c=document.getElementById("zeugma-global-cursor-style");c&&c.remove(),document.removeEventListener("pointermove",s),document.removeEventListener("pointerup",i),o();};document.addEventListener("pointermove",s),document.addEventListener("pointerup",i);}var qe=Kt.createContext(void 0),Ge=Kt.createContext(void 0),He=Kt.createContext(void 0),Ke=Kt.createContext(void 0),ne=()=>{let e=Kt.useContext(qe);if(!e)throw new Error("useZeugmaState must be used within a Zeugma provider");return e},we=()=>{let e=Kt.useContext(Ge);if(!e)throw new Error("useZeugmaActions must be used within a Zeugma provider");return e},Oe=()=>{let e=Kt.useContext(Ke);if(!e)throw new Error("useZeugmaDrag must be used within a Zeugma provider");return e};var Ot=()=>{let e=ne(),t=we();return {...e,...t}};var Fe=class extends core.PointerSensor{static activators=[{eventName:"onPointerDown",handler:({nativeEvent:t})=>!t.target?.closest(".drag-cancel")}]},Ve=class extends core.TouchSensor{static activators=[{eventName:"onTouchStart",handler:({nativeEvent:t})=>!t.target?.closest(".drag-cancel")}]};function We(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,setLayout:n,layoutBeforeDrag:o,setLayoutBeforeDrag:r,activeId:s,setActiveId:i,setActiveType:c,dismissIntentId:p,setDismissIntentId:f,setOverTabId:m,setOverTabPosition:b,containerRef:P,dragActivationDistance:v,enableDragToDismiss:x,dismissThreshold:M,onRemove:A,onDragStart:N,onDragEnd:d,onDismissIntentChange:T,removeTab:E}=e,D=Kt.useRef(null),H=it(s),[q,G]=Kt.useState(false);at(q);let X=core.useSensors(core.useSensor(Fe,{activationConstraint:{distance:v}}),core.useSensor(Ve,{activationConstraint:{delay:250,tolerance:5}})),te=Kt.useCallback(w=>{let Z=w.active.id.toString().startsWith("tab-header-"),k=core.pointerWithin(w),y=Z?k:k.filter(a=>!a.id.toString().startsWith("tab-drop-"));if(y.length>0)return [...y].sort((h,R)=>{let g=h.id.toString(),K=R.id.toString();if(Z){let V=g.startsWith("tab-drop-"),Q=K.startsWith("tab-drop-");if(V&&!Q)return -1;if(!V&&Q)return 1}let $=g.startsWith("drop-root-"),O=K.startsWith("drop-root-");return $&&!O?-1:!$&&O?1:0});if(Z){let a=w.droppableContainers.filter(h=>h.id.toString().startsWith("tab-drop-"));return core.closestCenter({...w,droppableContainers:a})}return []},[]);return {sensors:X,collisionDetection:te,onDragStart:w=>{let F=w.active.id.toString(),Z=F.startsWith("tab-header-"),k=Z?F.substring(11):F;i(k),c(Z?"tab":"pane"),m(null),b(null);let y=w.activatorEvent;H.current=We(y),x&&P.current?D.current=P.current.getBoundingClientRect():D.current=null;let a=t;if(Z){let h=U(t,k);h&&(a=Re(t,h.id,k)||t);}r(a),Z&&a!==t&&n(a),N&&N(k);},onDragMove:w=>{let{over:F}=w,Z=F?.id.toString()||"",k=Z.startsWith("drop-locked-");G(l=>l===k?l:k);let y=w.active.id.toString(),a=y.startsWith("tab-header-"),h=a?y.substring(11):y,R=Z.match(/^tab-drop-(.+)$/);if(R&&F&&a){let[,l]=R;if(h!==l){let S="before",I=F.rect,ie=w.activatorEvent,Y=null;if(H.current)Y=H.current.x;else {let j=We(ie);j&&(Y=j.x+w.delta.x);}if(Y!==null){let j=I.left+I.width/2;Y>j&&(S="after");}m(j=>j===l?j:l),b(j=>j===S?j:S);}else m(S=>S===null?S:null),b(S=>S===null?S:null);}else m(l=>l===null?l:null),b(l=>l===null?l:null);if(!x)return;let g=D.current;if(!g){p!==null&&(f(null),T?.(null));return}let K=w.activatorEvent,$=null,O=null;if(H.current)$=H.current.x,O=H.current.y;else {let l=We(K);l&&($=l.x+w.delta.x,O=l.y+w.delta.y);}let V=0;if($!==null&&O!==null){let l=0,S=0;$<g.left?l=g.left-$:$>g.right&&(l=$-g.right),O<g.top?S=g.top-O:O>g.bottom&&(S=O-g.bottom),V=Math.sqrt(l*l+S*S);}else {let l=w.active.rect.current.translated;if(l){let S=l.left+l.width/2,I=l.top+l.height/2,ie=0,Y=0;S<g.left?ie=g.left-S:S>g.right&&(ie=S-g.right),I<g.top?Y=g.top-I:I>g.bottom&&(Y=I-g.bottom),V=Math.sqrt(ie*ie+Y*Y);}}V>M?p!==h&&(f(h),T?.(h)):p!==null&&(f(null),T?.(null));},onDragEnd:w=>{i(null),c(null),G(false),m(null),b(null);let{active:F,over:Z}=w,k=F.id.toString(),y=k.startsWith("tab-header-"),a=y?k.substring(11):k,h=x&&p===a;f(null),T?.(null),D.current=null;let R=o||t;if(r(null),h){A?A(a):E(a),d&&d(a,null,null);return}if(!Z){n(R),d&&d(a,null,null);return}let g=Z.id.toString();if(g.startsWith("drop-locked-")){n(R),d&&d(a,null,null);return}let K=g.match(/^tab-drop-(.+)$/);if(K){if(!y){n(R),d&&d(a,null,null);return}let[,ce]=K;if(a!==ce){let ue="before",J=Z.rect,me=w.activatorEvent,z=null;if(H.current)z=H.current.x;else {let W=We(me);W&&(z=W.x+w.delta.x);}if(z!==null){let W=J.left+J.width/2;z>W&&(ue="after");}let ae=$e(R,a,ce,ue);n(ae),d&&d(a,ce,{type:"move",position:"center"});}else n(R),d&&d(a,null,null);return}let $=g.match(/^drop-root-(1\/4|1\/3)-(top|bottom|left|right|start|end)$/);if($){let[,ce,ue]=$,J=ue;J==="start"&&(J="left"),J==="end"&&(J="right");let me=y?fe(R,a):he(R,a),z;if(y){let W=U(R,a)?.tabsMetadata?.[a];z={type:"pane",id:de(),tabs:[a],activeTabId:a,tabsMetadata:W?{[a]:W}:void 0};}else z=ee(R,a)??{type:"pane",id:de(),tabs:[a],activeTabId:a};if(me===null)n(z);else {let ae=J==="left"||J==="right",W=J==="left"||J==="top",Pe=50;ce==="1/4"?Pe=W?25:75:ce==="1/3"&&(Pe=W?100/3:200/3),n({type:"split",direction:ae?"row":"column",first:W?z:me,second:W?me:z,splitPercentage:Pe});}d&&d(a,"root",{type:"split",direction:J==="left"||J==="right"?"row":"column",position:J});return}let O=g.match(/^drop-(left|right|top|bottom)-(.+)$/);if(!O){n(R),d&&d(a,null,null);return}let[,V,Q]=O,l=y?U(R,a):ee(R,a),S=l&&l.id===Q,I=l&&l.tabs.length===1;if(a===Q||S&&I){n(R),d&&d(a,null,null);return}let ie=V==="left"||V==="right"?"row":"column",Y;if(y){let ue=U(R,a)?.tabsMetadata?.[a];Y={type:"pane",id:de(),tabs:[a],activeTabId:a,tabsMetadata:ue?{[a]:ue}:void 0};}else Y=ee(R,a)??{type:"pane",id:de(),tabs:[a],activeTabId:a};let j=y?fe(R,a):he(R,a),Ne=Ce(j,Q,ie,V,Y);n(Ne),d&&d(a,Q,{type:"split",direction:ie,position:V});},onDragCancel:()=>{i(null),c(null),G(false),m(null),b(null),f(null),T?.(null),D.current=null,o!==null&&(n(o),r(null));}}}var vt=({activeId:e,render:t,className:n})=>{let o=Kt.useRef(null);return Kt.useEffect(()=>{let r=s=>{o.current&&(o.current.style.transform=`translate(${s.clientX+12}px, ${s.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=Kt__default.default.memo(({tabId:e,target:t,renderWidget:n})=>{let[o,r]=Kt.useState(false),s=Kt.useRef(null),{popoutTabs:i}=ne(),{setTabPopout:c}=we(),p=!!i[e];Kt.useEffect(()=>{r(true);},[]);let f=Kt.useCallback(()=>{s.current&&(document.adoptNode(s.current),Xe("zeugma-hidden-portal-container").appendChild(s.current)),c(e,false);},[e,c]),{popupWindow:m,popupContainer:b}=ct({tabId:e,isOpenedInNewWindow:p,onClose:f});if(Kt.useEffect(()=>{if(!o||!s.current)return;let v=s.current;p?b&&m&&(m.document.adoptNode(v),b.appendChild(v)):(document.adoptNode(v),t?t.appendChild(v):Xe("zeugma-hidden-portal-container").appendChild(v));},[t,o,p,b,m]),Kt.useEffect(()=>()=>{s.current&&s.current.remove();},[]),!o)return null;s.current||(s.current=document.createElement("div"),s.current.className=`zeugma-portal-wrapper-${e}`,s.current.style.width="100%",s.current.style.height="100%");let P=s.current;return !P||!n?null:reactDom.createPortal(n(e),P)});var on=e=>{let t=e,{renderPane:n,renderWidget:o,renderDragOverlay:r,classNames:s={},children:i,layout:c,setLayout:p,fullscreenPaneId:f,setFullscreenPaneId:m,locked:b,setLocked:P,popoutTabs:v,findPaneById:x,findPaneContainingTab:M,findTabById:A,activeId:N,activeType:d,dismissIntentId:T,setContainerRef:E,layoutBeforeDrag:D,snapThreshold:H,minSplitPercentage:q,maxSplitPercentage:G,onRemove:X,onResizeStart:te,onResize:oe,onResizeEnd:re,removePane:se,addPane:le,addTab:w,updateTabMetadata:F,updatePaneLock:Z,selectTab:k,mergeTab:y,removeTab:a,splitPane:h,updateSplitPercentage:R,moveTab:g,setTabPopout:K}=t,{portalTargets:$,registerPortalTarget:O}=lt(),[V,Q]=Kt.useState(null),[l,S]=Kt.useState(null),I=ht({...t,setOverTabId:Q,setOverTabPosition:S}),ie=Kt.useCallback(z=>n(z),[n]),Y=Kt.useMemo(()=>s,[s.dashboard,s.dashboardDismissActive,s.pane,s.paneLocked,s.dropPreview,s.dragOverlay,s.resizer,s.dismissPreview,s.dashboardLocked,s.lockedPreview,s.tabDropPreview,s.tabSeparator]),j=Kt.useCallback((z,ae)=>{re&&re(z,ae);},[re]),Ne=Kt.useMemo(()=>({layout:c,setLayout:p,renderPane:ie,activeId:N,activeType:d,dismissIntentId:T,setContainerRef:E,fullscreenPaneId:f,classNames:Y,onRemove:X,onFullscreenChange:m,snapThreshold:H,onResizeStart:te,onResize:oe,onResizeEnd:j,minSplitPercentage:q,maxSplitPercentage:G,locked:b,setLocked:P,popoutTabs:v,findPaneById:x,findPaneContainingTab:M,findTabById:A}),[c,N,d,T,E,f,Y,X,m,H,te,oe,q,G,p,ie,j,b,P,v,x,M,A]),ce=Kt.useMemo(()=>({overTabId:V,overTabPosition:l}),[V,l]),ue=Kt.useMemo(()=>({removePane:se,addPane:le,addTab:w,updateTabMetadata:F,updatePaneLock:Z,selectTab:k,mergeTab:y,removeTab:a,setFullscreenPaneId:m,setLocked:P,splitPane:h,updateSplitPercentage:R,moveTab:g,setTabPopout:K}),[se,le,w,F,Z,k,y,a,m,P,h,R,g,K]),J=Kt.useMemo(()=>{let z=new Set;function ae(W){W&&(W.type==="pane"?W.tabs.forEach(Pe=>{z.add(Pe);}):(ae(W.first),ae(W.second)));}return ae(c),D&&ae(D),Array.from(z).sort()},[c,N,D]),me=Kt.useMemo(()=>({registerPortalTarget:O}),[O]);return jsxRuntime.jsx(Ge.Provider,{value:ue,children:jsxRuntime.jsx(qe.Provider,{value:Ne,children:jsxRuntime.jsx(Ke.Provider,{value:ce,children:jsxRuntime.jsxs(He.Provider,{value:me,children:[jsxRuntime.jsx(core.DndContext,{id:"zeugma-dnd-context",...I,children:i}),N&&d&&r&&jsxRuntime.jsx(vt,{activeId:N,render:z=>r(z,d),className:`${s.dragOverlay||""} ${N===T&&s.dismissPreview||""}`.trim()}),jsxRuntime.jsx("div",{id:"zeugma-portal-host",style:{display:"none"},children:J.map(z=>jsxRuntime.jsx(Pt,{tabId:z,target:$[z]||null,renderWidget:o},z))})]})})})})};var an={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"}}},ln={top:{"1/4":{top:0,left:0,width:"100%",height:"25%"},"1/3":{top:0,left:0,width:"100%",height:"33.3333%"}},bottom:{"1/4":{bottom:0,left:0,width:"100%",height:"25%"},"1/3":{bottom:0,left:0,width:"100%",height:"33.3333%"}},left:{"1/4":{left:0,top:0,width:"25%",height:"100%"},"1/3":{left:0,top:0,width:"33.3333%",height:"100%"}},right:{"1/4":{right:0,top:0,width:"25%",height:"100%"},"1/3":{right:0,top:0,width:"33.3333%",height:"100%"}}},cn=({id:e,fraction:t,edge:n,activeClassName:o})=>{let{setNodeRef:r,isOver:s}=core.useDroppable({id:e}),i={position:"absolute",pointerEvents:"none",zIndex:101,boxSizing:"border-box",...ln[n][t]};return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("div",{ref:r,style:an[n][t]}),s&&jsxRuntime.jsx("div",{className:o,style:i})]})},yt=({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/3-top",fraction:"1/3",edge:"top"},{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))});function je({containerRef:e,isRow:t,direction:n,splitPercentage:o,resizerSize:r,snapThreshold:s,layout:i,currentNode:c,onLayoutChange:p,onResizeStart:f,onResizeEnd:m,parentLeft:b,parentTop:P,parentWidth:v,parentHeight:x}){let{onResizeStart:M,onResize:A,onResizeEnd:N,minSplitPercentage:d=5,maxSplitPercentage:T=95,locked:E=false}=ne();return Kt.useCallback(D=>{if(E)return;D.preventDefault();let H=e.current;if(!H)return;f&&f(),M&&M(c);let q=H.getBoundingClientRect(),G=D.clientX,X=D.clientY,te=o,oe=D.currentTarget,re=q.left+q.width*(b/100),se=q.top+q.height*(P/100),le=q.width*(v/100),w=q.height*(x/100),Z=Array.from(document.querySelectorAll('div[role="separator"][data-direction]')).filter(y=>y!==oe&&y.getAttribute("data-direction")===n).map(y=>{let a=y.getBoundingClientRect();return t?a.left+a.width/2:a.top+a.height/2}),k=te;gt({cursor:t?"col-resize":"row-resize",resizerEl:oe,onMove:y=>{let a=t?(y.clientX-G)/le*100:(y.clientY-X)/w*100,h=te+a,R=t?re+(le-r)*(h/100)+r/2:se+(w-r)*(h/100)+r/2,g=1/0,K=null;for(let Q of Z){let l=Math.abs(R-Q);l<s&&l<g&&(g=l,K=Q);}let $=h;K!==null&&($=t?(K-r/2-re)/(le-r)*100:(K-r/2-se)/(w-r)*100);let O=Math.max(d,Math.min(T,$));k=O;let V=Te(i,c,O);if(V){let{panes:Q,splitters:l}=ge(V),S=e.current;if(S){for(let I of Q)S.style.setProperty(`--pane-left-${I.paneId}`,`${I.left}%`),S.style.setProperty(`--pane-top-${I.paneId}`,`${I.top}%`),S.style.setProperty(`--pane-width-${I.paneId}`,`${I.width}%`),S.style.setProperty(`--pane-height-${I.paneId}`,`${I.height}%`);for(let I of l)S.style.setProperty(`--splitter-pos-${I.id}`,`${I.direction==="row"?I.left:I.top}%`);}}A&&A(c,O);},onEnd:()=>{let y=Te(i,c,k),a=e.current;if(a){let{panes:h,splitters:R}=ge(y);for(let g of h)a.style.removeProperty(`--pane-left-${g.paneId}`),a.style.removeProperty(`--pane-top-${g.paneId}`),a.style.removeProperty(`--pane-width-${g.paneId}`),a.style.removeProperty(`--pane-height-${g.paneId}`);for(let g of R)a.style.removeProperty(`--splitter-pos-${g.id}`);}p(y),m&&m(),N&&N(c,k);}});},[e,t,n,o,r,s,i,c,p,f,m,M,A,N,d,T,b,P,v,x])}var hn=({splitter:e,resizerSize:t,snapThreshold:n,containerRef:o})=>{let{layout:r,setLayout:s,classNames:i,locked:c}=ne(),[p,f]=Kt.useState(false),{currentNode:m,direction:b,left:P,top:v,width:x,height:M,parentLeft:A,parentTop:N,parentWidth:d,parentHeight:T}=e,E=b==="row",D=je({containerRef:o,isRow:E,direction:b,splitPercentage:m.splitPercentage,resizerSize:t,snapThreshold:n,layout:r,currentNode:m,onLayoutChange:s,onResizeStart:()=>f(true),onResizeEnd:()=>f(false),parentLeft:A,parentTop:N,parentWidth:d,parentHeight:T}),H=E?{position:"absolute",left:`calc(var(--splitter-pos-${e.id}, ${P}%) - ${t/2}px)`,top:`calc(${v}% + ${t/2}px)`,width:`${t}px`,height:`calc(${M}% - ${t}px)`,cursor:c?"default":"col-resize",pointerEvents:c?"none":"auto",zIndex:10,userSelect:"none",touchAction:"none",boxSizing:"border-box"}:{position:"absolute",left:`calc(${P}% + ${t/2}px)`,top:`calc(var(--splitter-pos-${e.id}, ${v}%) - ${t/2}px)`,width:`calc(${x}% - ${t}px)`,height:`${t}px`,cursor:c?"default":"row-resize",pointerEvents:c?"none":"auto",zIndex:10,userSelect:"none",touchAction:"none",boxSizing:"border-box"};return jsxRuntime.jsx("div",{className:i.resizer||"","data-direction":b,"data-resizing":p||void 0,style:H,onPointerDown:D,role:"separator","aria-valuenow":m.splitPercentage,"aria-valuemin":5,"aria-valuemax":95})},vn=Kt__default.default.memo(({paneId:e,renderPane:t})=>jsxRuntime.jsx(jsxRuntime.Fragment,{children:t(e)}),(e,t)=>e.paneId===t.paneId&&e.renderPane===t.renderPane),Pn=({tree:e,resizerSize:t=4,snapThreshold:n})=>{let{layout:o,renderPane:r,activeId:s,dismissIntentId:i,setContainerRef:c,fullscreenPaneId:p,snapThreshold:f,locked:m,classNames:b}=ne(),P=n!==void 0?n:f??8,v=e!==void 0?e:o,x=Kt.useRef(null),{panes:M,splitters:A}=Kt.useMemo(()=>v?ge(v):{panes:[],splitters:[]},[v]);if(!v)return null;let N=()=>jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[M.map(d=>{let T=p===d.paneId;return jsxRuntime.jsx("div",{style:{position:"absolute",left:T?"0%":`var(--pane-left-${d.paneId}, ${d.left}%)`,top:T?"0%":`var(--pane-top-${d.paneId}, ${d.top}%)`,width:T?"100%":`var(--pane-width-${d.paneId}, ${d.width}%)`,height:T?"100%":`var(--pane-height-${d.paneId}, ${d.height}%)`,overflow:"hidden",zIndex:T?20:1,display:p&&!T?"none":"block",padding:T?"0px":`${t/2}px`,boxSizing:"border-box"},children:jsxRuntime.jsx(vn,{paneId:d.paneId,renderPane:r})},d.paneId)}),!p&&A.map(d=>jsxRuntime.jsx(hn,{splitter:d,resizerSize:t,snapThreshold:P,containerRef:x},d.id))]});if(e===void 0){let d=s!==null&&s===i,T=D=>{c(D),x.current=D;},E=`${b.dashboard||""} ${d&&b.dashboardDismissActive||""} ${m&&b.dashboardLocked||""}`.trim();return jsxRuntime.jsxs("div",{ref:T,className:E,style:{position:"relative",width:"100%",height:"100%",overflow:"hidden"},children:[N(),s!==null&&!m&&jsxRuntime.jsx(yt,{activeClassName:b.dropPreview})]})}return jsxRuntime.jsx("div",{ref:x,style:{position:"relative",width:"100%",height:"100%",overflow:"hidden"},children:N()})};var Ue=Kt.createContext(null);var Sn={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"}},Nn={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"}},wt=({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:Sn[t]}),r&&jsxRuntime.jsx("div",{className:n,style:Nn[t]})]})},En=({id:e,children:t,style:n,locked:o=false})=>{let r=Kt.useRef(null),{layout:s,activeId:i,classNames:c,fullscreenPaneId:p,onFullscreenChange:f,locked:m}=ne(),{removePane:b,updateTabMetadata:P,selectTab:v,removeTab:x}=we(),M=Kt.useContext(He);if(!M)throw new Error("Pane must be used within a Zeugma provider");let{registerPortalTarget:A}=M,N=Kt.useMemo(()=>ee(s,e),[s,e]),d=N?.id??e,T=N?.tabs??[e],E=N?.activeTabId??e,D=N?.tabsMetadata,H=D?.[e],q=N?.locked??false,G=o||q,X=m||G,te=m||G,oe=i!==null&&i!==e&&(!T.includes(i)||T.length>1)&&!te,{attributes:re,listeners:se,setNodeRef:le}=core.useDraggable({id:e,disabled:X}),w=i!==null&&T.includes(i),F=p===e,Z=Kt.useCallback(()=>jsxRuntime.jsx("div",{ref:r,id:`zeugma-tab-target-${E}`,className:"zeugma-tab-content-wrapper",style:{height:"100%",width:"100%"}}),[E]);Kt.useEffect(()=>{let h=r.current;return A(E,h),()=>{A(E,null);}},[E,A]);let k=Kt.useMemo(()=>({isDragging:w,isFullscreen:F,toggleFullscreen:()=>f?.(F?null:e),remove:()=>{F&&f?.(null),b(d);},metadata:H,updateMetadata:h=>{P(e,h);},locked:X,tabs:T,activeTabId:E,selectTab:h=>v(d,h),removeTab:h=>{F&&h===E&&f?.(null),x(h);},tabsMetadata:D,updateTabMetadata:(h,R)=>{P(h,R);},renderActiveTab:Z}),[w,F,f,e,x,H,P,X,T,E,v,d,D,Z]),y=Kt.useMemo(()=>X?{disabled:true}:{...se,...re},[se,re,X]),a=`${c.pane||""} ${G&&c.paneLocked||""}`.trim();return jsxRuntime.jsx(Ue.Provider,{value:y,children:jsxRuntime.jsxs("div",{ref:le,className:a,style:{position:"relative",width:"100%",height:"100%",...n},children:[t(k),oe&&jsxRuntime.jsx("div",{style:{position:"absolute",top:0,left:0,right:0,bottom:0,zIndex:15,pointerEvents:"none"},children:["top","bottom","left","right"].map(h=>jsxRuntime.jsx(wt,{id:`drop-${h}-${e}`,position:h,activeClassName:c.dropPreview},h))}),i!==null&&i!==e&&te&&jsxRuntime.jsx("div",{style:{position:"absolute",top:0,left:0,right:0,bottom:0,zIndex:15,pointerEvents:"none"},children:jsxRuntime.jsx(wt,{id:`drop-locked-${e}`,position:"full",activeClassName:c.lockedPreview||""})})]})})};var Mn=({children:e,className:t,style:n})=>{let o=Kt.useContext(Ue);if(!o)throw new Error("<DragHandle> must be used inside a <Pane>");let{disabled:r,...s}=o;return jsxRuntime.jsx("div",{className:t,style:{cursor:r?"default":"grab",userSelect:r?"auto":"none",touchAction:r?"auto":"none",...n},...r?{}:s,children:e})};var It=Kt.createContext(void 0),Hn=()=>{let e=Kt.useContext(It);if(!e)throw new Error("useTabContext must be used within a Tab component");return e},Lt=({id:e,locked:t=false,children:n,className:o,style:r})=>{let{locked:s,classNames:i={},activeType:c}=ne(),{overTabId:p}=Oe(),f=Kt.useContext(tt),m=t||s||(f?.locked??false),{attributes:b,listeners:P,setNodeRef:v,isDragging:x}=core.useDraggable({id:`tab-header-${e}`,disabled:m}),{setNodeRef:M,isOver:A}=core.useDroppable({id:`tab-drop-${e}`,disabled:m||c==="pane"}),N=se=>{v(se),M(se);},d=A&&p===e,T=f?.tabs||[],E=T.indexOf(e),D=f?.activeTabId,q=E>0&&e!==D&&T[E-1]!==D?jsxRuntime.jsx("div",{className:i.tabSeparator}):null,G=f?f.activeTabId===e:false,X=f?.tabsMetadata?.[e],te=Kt.useCallback(()=>{f?.selectTab(e);},[f,e]),oe=Kt.useCallback(()=>{f?.removeTab(e);},[f,e]),re=Kt.useMemo(()=>({tabId:e,isActive:G,isDragging:x,isOver:d,metadata:X,locked:m,selectTab:te,removeTab:oe}),[e,G,x,d,X,m,te,oe]);return jsxRuntime.jsx(It.Provider,{value:re,children:jsxRuntime.jsxs("div",{ref:N,className:o,style:{display:"inline-flex",position:"relative",cursor:m?"default":"grab",...r},...m?{}:P,...m?{}:b,children:[q,n({isDragging:x,isOver:d})]})})};var tt=Kt.createContext(void 0);var Mt=(e,t)=>typeof e=="function"?e(t):e,Bn=({tabs:e,activeTabId:t,locked:n=false,tabsMetadata:o,selectTab:r,removeTab:s,renderTab:i,classNames:c,styles:p})=>{let{classNames:f={},activeType:m}=ne(),{overTabId:b,overTabPosition:P}=Oe(),v=Kt.useMemo(()=>({tabs:e,activeTabId:t,locked:n,tabsMetadata:o,selectTab:r,removeTab:s}),[e,t,n,o,r,s]),x=ft(e,m,b,P);return jsxRuntime.jsx(tt.Provider,{value:v,children:jsxRuntime.jsxs("div",{className:c?.container,style:{display:"flex",alignItems:"center",height:"100%",...p?.container},children:[e.map((M,A)=>{let N=o?.[M],d=Mt(c?.tab,M),T=Mt(p?.tab,M),E=A===x;return jsxRuntime.jsxs(Kt__default.default.Fragment,{children:[E&&f.tabDropPreview&&jsxRuntime.jsx("div",{style:{position:"relative",height:"100%",width:0,zIndex:10},children:jsxRuntime.jsx("div",{className:f.tabDropPreview,style:{position:"absolute",top:0,bottom:0,transform:A===0?"none":"translateX(-50%)"}})}),jsxRuntime.jsx(Lt,{id:M,locked:n,className:d,style:T,children:({isDragging:D,isOver:H})=>i({tabId:M,activeTabId:t,isDragging:D,isOver:H,metadata:N,selectTab:r,removeTab:s})})]},M)}),x===e.length&&f.tabDropPreview&&jsxRuntime.jsx("div",{style:{position:"relative",height:"100%",width:0,zIndex:10},children:jsxRuntime.jsx("div",{className:f.tabDropPreview,style:{position:"absolute",top:0,bottom:0,transform:"translateX(-100%)"}})})]})})};exports.DEFAULT_DRAG_ACTIVATION_DISTANCE=At;exports.DEFAULT_RESIZER_SIZE=Jn;exports.DEFAULT_SNAP_THRESHOLD=zt;exports.DragHandle=Mn;exports.Pane=En;exports.PaneTree=Pn;exports.PortalRegistryContext=He;exports.Tabs=Bn;exports.Zeugma=on;exports.ZeugmaActionsContext=Ge;exports.ZeugmaDragContext=Ke;exports.ZeugmaStateContext=qe;exports.copyStyles=rt;exports.createDragSession=gt;exports.getOrCreateHiddenContainer=Xe;exports.safeJsonStringify=Le;exports.useResizer=je;exports.useTabContext=Hn;exports.useZeugma=Ht;exports.useZeugmaActions=we;exports.useZeugmaContext=Ot;exports.useZeugmaDrag=Oe;exports.useZeugmaState=ne;//# sourceMappingURL=index.cjs.map
7
7
  //# sourceMappingURL=index.cjs.map