react-zeugma 6.2.2 → 6.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.cts CHANGED
@@ -1,5 +1,5 @@
1
- import { P as PortalRegistryValue, Z as ZeugmaActionsValue, a as ZeugmaDragStateValue, b as ZeugmaStateValue, U as UseZeugmaOptions, c as ZeugmaController, d as ZeugmaContextValue, e as ZeugmaProps, S as SplitDirection, T as TreeNode, f as SplitNode } from './types-Yvj0Isvy.cjs';
2
- export { g as PaneNode, h as TabDetails, i as ZeugmaClassNames } from './types-Yvj0Isvy.cjs';
1
+ import { P as PortalRegistryValue, Z as ZeugmaActionsValue, a as ZeugmaDragStateValue, b as ZeugmaStateValue, U as UseZeugmaOptions, c as ZeugmaController, d as ZeugmaContextValue, e as ZeugmaProps, S as SplitDirection, T as TreeNode, f as SplitNode } from './types-Diujkc-H.cjs';
2
+ export { L as LeafNode, g as PaneNode, h as TabDetails, W as WidgetNode, i as ZeugmaClassNames } from './types-Diujkc-H.cjs';
3
3
  import * as React from 'react';
4
4
  import React__default, { ReactNode } from 'react';
5
5
 
@@ -77,21 +77,23 @@ interface PaneTreeProps {
77
77
  }
78
78
  declare const PaneTree: React__default.FC<PaneTreeProps>;
79
79
 
80
- interface PaneRenderProps {
81
- /** True if the pane is actively being dragged. */
80
+ interface BaseLeafRenderProps {
81
+ /** True if the leaf is actively being dragged. */
82
82
  isDragging: boolean;
83
- /** True if the pane currently occupies the fullscreen view. */
83
+ /** True if the leaf currently occupies the fullscreen view. */
84
84
  isFullscreen: boolean;
85
- /** Toggles the pane to and from fullscreen/zoomed mode. */
85
+ /** Toggles the leaf to and from fullscreen/zoomed mode. */
86
86
  toggleFullscreen: () => void;
87
- /** Closes and removes the active tab from the layout tree. */
87
+ /** Closes and removes the leaf from the layout tree. */
88
88
  remove: () => void;
89
- /** The metadata values associated with the active tab, or undefined. */
89
+ /** The metadata values associated with this leaf, or undefined. */
90
90
  metadata: Record<string, unknown> | undefined;
91
- /** Updates the metadata of the active tab using an updater function. */
91
+ /** Updates the metadata of this leaf using an updater function. */
92
92
  updateMetadata: (updater: (current: Record<string, unknown> | undefined) => Record<string, unknown> | undefined) => void;
93
- /** True if this specific pane or the dashboard globally is locked. */
93
+ /** True if this specific leaf or the dashboard globally is locked. */
94
94
  locked: boolean;
95
+ }
96
+ interface PaneRenderProps extends BaseLeafRenderProps {
95
97
  /** The array of tab IDs in this pane. */
96
98
  tabs: string[];
97
99
  /** The currently active tab ID. */
@@ -107,6 +109,10 @@ interface PaneRenderProps {
107
109
  /** Renders the target placeholder element for the currently active tab in the pane. */
108
110
  renderActiveTab: () => ReactNode;
109
111
  }
112
+ interface WidgetRenderProps extends BaseLeafRenderProps {
113
+ /** Renders the target placeholder element for the widget content. */
114
+ renderActiveWidget: () => ReactNode;
115
+ }
110
116
 
111
117
  interface PaneProps {
112
118
  /** The unique ID of the pane, matching a `paneId` in the layout tree schema. */
@@ -182,4 +188,16 @@ interface TabRenderProps {
182
188
  isOver: boolean;
183
189
  }
184
190
 
185
- export { DEFAULT_DRAG_ACTIVATION_DISTANCE, DEFAULT_RESIZER_SIZE, DEFAULT_SNAP_THRESHOLD, DragHandle, type DragHandleProps, type DragSessionConfig, Pane, type PaneProps, type PaneRenderProps, PaneTree, PortalRegistryContext, PortalRegistryValue, SplitDirection, SplitNode, type TabContextValue, type TabRenderProps, Tabs, type TabsProps, TreeNode, UseZeugmaOptions, Zeugma, ZeugmaActionsContext, ZeugmaActionsValue, ZeugmaContextValue, ZeugmaController, ZeugmaDragContext, ZeugmaDragStateValue, ZeugmaProps, ZeugmaStateContext, ZeugmaStateValue, createDragSession, safeJsonStringify, useResizer, useTabContext, useZeugma, useZeugmaActions, useZeugmaContext, useZeugmaDrag, useZeugmaState };
191
+ interface WidgetProps {
192
+ /** The unique ID of the widget, matching a `id` in the layout tree schema. */
193
+ id: string;
194
+ /** Render prop function providing widget state (isDragging, isFullscreen, etc.) and handlers. */
195
+ children: (props: WidgetRenderProps) => React__default.ReactNode;
196
+ /** Optional inline CSS styles applied to the widget outer container. */
197
+ style?: React__default.CSSProperties;
198
+ /** Optional override to lock this specific widget. */
199
+ locked?: boolean;
200
+ }
201
+ declare const Widget: React__default.FC<WidgetProps>;
202
+
203
+ export { DEFAULT_DRAG_ACTIVATION_DISTANCE, DEFAULT_RESIZER_SIZE, DEFAULT_SNAP_THRESHOLD, DragHandle, type DragHandleProps, type DragSessionConfig, Pane, type PaneProps, type PaneRenderProps, PaneTree, PortalRegistryContext, PortalRegistryValue, SplitDirection, SplitNode, type TabContextValue, type TabRenderProps, Tabs, type TabsProps, TreeNode, UseZeugmaOptions, Widget, type WidgetProps, type WidgetRenderProps, Zeugma, ZeugmaActionsContext, ZeugmaActionsValue, ZeugmaContextValue, ZeugmaController, ZeugmaDragContext, ZeugmaDragStateValue, ZeugmaProps, ZeugmaStateContext, ZeugmaStateValue, createDragSession, safeJsonStringify, useResizer, useTabContext, useZeugma, useZeugmaActions, useZeugmaContext, useZeugmaDrag, useZeugmaState };
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { P as PortalRegistryValue, Z as ZeugmaActionsValue, a as ZeugmaDragStateValue, b as ZeugmaStateValue, U as UseZeugmaOptions, c as ZeugmaController, d as ZeugmaContextValue, e as ZeugmaProps, S as SplitDirection, T as TreeNode, f as SplitNode } from './types-Yvj0Isvy.js';
2
- export { g as PaneNode, h as TabDetails, i as ZeugmaClassNames } from './types-Yvj0Isvy.js';
1
+ import { P as PortalRegistryValue, Z as ZeugmaActionsValue, a as ZeugmaDragStateValue, b as ZeugmaStateValue, U as UseZeugmaOptions, c as ZeugmaController, d as ZeugmaContextValue, e as ZeugmaProps, S as SplitDirection, T as TreeNode, f as SplitNode } from './types-Diujkc-H.js';
2
+ export { L as LeafNode, g as PaneNode, h as TabDetails, W as WidgetNode, i as ZeugmaClassNames } from './types-Diujkc-H.js';
3
3
  import * as React from 'react';
4
4
  import React__default, { ReactNode } from 'react';
5
5
 
@@ -77,21 +77,23 @@ interface PaneTreeProps {
77
77
  }
78
78
  declare const PaneTree: React__default.FC<PaneTreeProps>;
79
79
 
80
- interface PaneRenderProps {
81
- /** True if the pane is actively being dragged. */
80
+ interface BaseLeafRenderProps {
81
+ /** True if the leaf is actively being dragged. */
82
82
  isDragging: boolean;
83
- /** True if the pane currently occupies the fullscreen view. */
83
+ /** True if the leaf currently occupies the fullscreen view. */
84
84
  isFullscreen: boolean;
85
- /** Toggles the pane to and from fullscreen/zoomed mode. */
85
+ /** Toggles the leaf to and from fullscreen/zoomed mode. */
86
86
  toggleFullscreen: () => void;
87
- /** Closes and removes the active tab from the layout tree. */
87
+ /** Closes and removes the leaf from the layout tree. */
88
88
  remove: () => void;
89
- /** The metadata values associated with the active tab, or undefined. */
89
+ /** The metadata values associated with this leaf, or undefined. */
90
90
  metadata: Record<string, unknown> | undefined;
91
- /** Updates the metadata of the active tab using an updater function. */
91
+ /** Updates the metadata of this leaf using an updater function. */
92
92
  updateMetadata: (updater: (current: Record<string, unknown> | undefined) => Record<string, unknown> | undefined) => void;
93
- /** True if this specific pane or the dashboard globally is locked. */
93
+ /** True if this specific leaf or the dashboard globally is locked. */
94
94
  locked: boolean;
95
+ }
96
+ interface PaneRenderProps extends BaseLeafRenderProps {
95
97
  /** The array of tab IDs in this pane. */
96
98
  tabs: string[];
97
99
  /** The currently active tab ID. */
@@ -107,6 +109,10 @@ interface PaneRenderProps {
107
109
  /** Renders the target placeholder element for the currently active tab in the pane. */
108
110
  renderActiveTab: () => ReactNode;
109
111
  }
112
+ interface WidgetRenderProps extends BaseLeafRenderProps {
113
+ /** Renders the target placeholder element for the widget content. */
114
+ renderActiveWidget: () => ReactNode;
115
+ }
110
116
 
111
117
  interface PaneProps {
112
118
  /** The unique ID of the pane, matching a `paneId` in the layout tree schema. */
@@ -182,4 +188,16 @@ interface TabRenderProps {
182
188
  isOver: boolean;
183
189
  }
184
190
 
185
- export { DEFAULT_DRAG_ACTIVATION_DISTANCE, DEFAULT_RESIZER_SIZE, DEFAULT_SNAP_THRESHOLD, DragHandle, type DragHandleProps, type DragSessionConfig, Pane, type PaneProps, type PaneRenderProps, PaneTree, PortalRegistryContext, PortalRegistryValue, SplitDirection, SplitNode, type TabContextValue, type TabRenderProps, Tabs, type TabsProps, TreeNode, UseZeugmaOptions, Zeugma, ZeugmaActionsContext, ZeugmaActionsValue, ZeugmaContextValue, ZeugmaController, ZeugmaDragContext, ZeugmaDragStateValue, ZeugmaProps, ZeugmaStateContext, ZeugmaStateValue, createDragSession, safeJsonStringify, useResizer, useTabContext, useZeugma, useZeugmaActions, useZeugmaContext, useZeugmaDrag, useZeugmaState };
191
+ interface WidgetProps {
192
+ /** The unique ID of the widget, matching a `id` in the layout tree schema. */
193
+ id: string;
194
+ /** Render prop function providing widget state (isDragging, isFullscreen, etc.) and handlers. */
195
+ children: (props: WidgetRenderProps) => React__default.ReactNode;
196
+ /** Optional inline CSS styles applied to the widget outer container. */
197
+ style?: React__default.CSSProperties;
198
+ /** Optional override to lock this specific widget. */
199
+ locked?: boolean;
200
+ }
201
+ declare const Widget: React__default.FC<WidgetProps>;
202
+
203
+ export { DEFAULT_DRAG_ACTIVATION_DISTANCE, DEFAULT_RESIZER_SIZE, DEFAULT_SNAP_THRESHOLD, DragHandle, type DragHandleProps, type DragSessionConfig, Pane, type PaneProps, type PaneRenderProps, PaneTree, PortalRegistryContext, PortalRegistryValue, SplitDirection, SplitNode, type TabContextValue, type TabRenderProps, Tabs, type TabsProps, TreeNode, UseZeugmaOptions, Widget, type WidgetProps, type WidgetRenderProps, Zeugma, ZeugmaActionsContext, ZeugmaActionsValue, ZeugmaContextValue, ZeugmaController, ZeugmaDragContext, ZeugmaDragStateValue, ZeugmaProps, ZeugmaStateContext, ZeugmaStateValue, createDragSession, safeJsonStringify, useResizer, useTabContext, useZeugma, useZeugmaActions, useZeugmaContext, useZeugmaDrag, useZeugmaState };
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
- import Xt,{createContext,useState,useRef,useEffect,useCallback,useContext,useMemo}from'react';import {DndContext,useDraggable,useSensors,useSensor,pointerWithin,closestCenter,useDroppable,PointerSensor,TouchSensor}from'@dnd-kit/core';import {jsx,Fragment,jsxs}from'react/jsx-runtime';import {createPortal}from'react-dom';function nt(e){let t=useRef(null);return useEffect(()=>{if(!e){t.current=null;return}let n=o=>{t.current={x:o.clientX,y:o.clientY};},s=o=>{let r=o.touches[0]||o.changedTouches[0];r&&(t.current={x:r.clientX,y:r.clientY});};return window.addEventListener("pointermove",n,{passive:true}),window.addEventListener("touchmove",s,{passive:true}),()=>{window.removeEventListener("pointermove",n),window.removeEventListener("touchmove",s);}},[e]),t}function ot(e){useEffect(()=>(e?document.body.style.setProperty("cursor","not-allowed","important"):document.body.style.removeProperty("cursor"),()=>{document.body.style.removeProperty("cursor");}),[e]);}function rt(){let[e,t]=useState({}),n=useRef(true);useEffect(()=>(n.current=true,()=>{n.current=false;}),[]);let s=useCallback((o,r)=>{n.current&&t(a=>a[o]===r?a:{...a,[o]:r});},[]);return {portalTargets:e,registerPortalTarget:s}}var It=8,Mt=8,Bn=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),s=be(e.second,t);return n===null?s:s===null?n:{...e,first:n,second:s}}function fe(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 r=e.activeTabId;e.activeTabId===t&&(r=o[0]);let a={...e.tabsMetadata};return delete a[t],{...e,tabs:o,activeTabId:r,tabsMetadata:Object.keys(a).length>0?a:void 0}}return e}let n=fe(e.first,t),s=fe(e.second,t);return n===null?s:s===null?n:{...e,first:n,second:s}}function Re(e,t,n,s,o){if(e===null)return typeof o=="string"?{type:"pane",id:de(),tabs:[o],activeTabId:o}:o;if(e.type==="pane"){if(e.id===t){let r=typeof o=="string"?{type:"pane",id:de(),tabs:[o],activeTabId:o}:o,a=s==="left"||s==="top";return {type:"split",direction:n,first:a?r:e,second:a?e:r,splitPercentage:50}}return e}return {...e,first:Re(e.first,t,n,s,o)||e.first,second:Re(e.second,t,n,s,o)||e.second}}function st(e,t,n){if(e===null)return {type:"pane",id:de(),tabs:[t],activeTabId:t,tabsMetadata:n?{[t]:n}:void 0};function s(o,r){return o.type==="pane"?{type:"split",direction:r==="row"?"column":"row",splitPercentage:50,first:o,second:{type:"pane",id:de(),tabs:[t],activeTabId:t,tabsMetadata:n?{[t]:n}:void 0}}:{...o,second:s(o.second,o.direction)}}return s(e,null)}function xe(e,t,n){return e===null?null:e===t?{...e,splitPercentage:n}:e.type==="split"?{...e,first:xe(e.first,t,n)||e.first,second:xe(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 _(e,t){return e===null?null:e.type==="pane"?e.tabs.includes(t)?e:null:_(e.first,t)??_(e.second,t)}function it(e,t){let n=_(e,t);if(!n)return null;let s=n.tabs.indexOf(t);return {id:t,paneId:n.id,isActive:n.activeTabId===t,index:s,metadata:n.tabsMetadata?.[t]}}function Le(e,t,n){if(e===null)return null;if(e.type==="pane"){if(e.tabs.includes(t)){let s=e.tabsMetadata||{},o=s[t],r=n(o),a={...s};return r===void 0?delete a[t]:a[t]=r,{...e,tabsMetadata:Object.keys(a).length>0?a:void 0}}return e}return {...e,first:Le(e.first,t,n)??e.first,second:Le(e.second,t,n)??e.second}}function Ie(e,t,n,s){if(e===null)return null;if(e.type==="pane"){if(e.id===t){let o=[...e.tabs];o.includes(n)||o.push(n);let r=e.tabsMetadata;return s&&(r={...e.tabsMetadata,[n]:s}),{...e,tabs:o,activeTabId:n,tabsMetadata:r}}return e}return {...e,first:Ie(e.first,t,n,s)||e.first,second:Ie(e.second,t,n,s)||e.second}}function Me(e,t,n){if(e===null)return null;if(e.type==="pane"){if(e.id===t){if(n===false){let{locked:s,...o}=e;return o}return {...e,locked:n}}return e}return {...e,first:Me(e.first,t,n)??e.first,second:Me(e.second,t,n)??e.second}}function ye(e,t,n){return e===null?null:e.type==="pane"?e.id===t?e.activeTabId===n?e:{...e,activeTabId:n}:e:{...e,first:ye(e.first,t,n)??e.first,second:ye(e.second,t,n)??e.second}}function at(e,t,n){if(e===null)return null;let o=_(e,t)?.tabsMetadata?.[t],r=fe(e,t);if(r===null)return {type:"pane",id:de(),tabs:[t],activeTabId:t,tabsMetadata:o?{[t]:o}:void 0};function a(l){if(l.type==="pane"){if(l.id===n){let d=[...l.tabs];d.includes(t)||d.push(t);let p={...l.tabsMetadata};return o&&(p[t]=o),{...l,tabs:d,activeTabId:t,tabsMetadata:Object.keys(p).length>0?p:void 0}}return l}return {...l,first:a(l.first),second:a(l.second)}}return a(r)}function Ze(e,t,n,s="before"){if(e===null)return null;let r=_(e,t)?.tabsMetadata?.[t],a=fe(e,t);if(a===null)return {type:"pane",id:de(),tabs:[t],activeTabId:t,tabsMetadata:r?{[t]:r}:void 0};function l(d){if(d.type==="pane"){if(d.tabs.includes(n)){let g=[...d.tabs].filter(S=>S!==t),x=g.indexOf(n);x<0&&(x=0),s==="after"&&(x+=1),g.splice(x,0,t);let y={...d.tabsMetadata};return r&&(y[t]=r),{...d,tabs:g,activeTabId:t,tabsMetadata:Object.keys(y).length>0?y:void 0}}return d}return {...d,first:l(d.first),second:l(d.second)}}return l(a)}function ge(e,t=0,n=0,s=100,o=100,r="root"){if(e===null)return {panes:[],splitters:[]};if(e.type==="pane")return {panes:[{paneId:e.id,left:t,top:n,width:s,height:o,node:e}],splitters:[]};let{direction:a,splitPercentage:l,first:d,second:p}=e,x={id:`splitter-${r}-${a}`,currentNode:e,direction:a,left:a==="row"?t+s*(l/100):t,top:a==="column"?n+o*(l/100):n,width:a==="row"?0:s,height:a==="column"?0:o,parentLeft:t,parentTop:n,parentWidth:s,parentHeight:o},y={panes:[],splitters:[]},S={panes:[],splitters:[]};if(a==="row"){let P=s*(l/100);y=ge(d,t,n,P,o,`${r}-L`),S=ge(p,t+P,n,s-P,o,`${r}-R`);}else {let P=o*(l/100);y=ge(d,t,n,s,P,`${r}-T`),S=ge(p,t,n+P,s,o-P,`${r}-B`);}return {panes:[...y.panes,...S.panes],splitters:[x,...y.splitters,...S.splitters]}}function lt(e,t,n,s){if(!(t==="tab"&&n&&e.includes(n))||!s)return -1;let a=e.indexOf(n);return s==="before"?a:a+1}function Ee(e){try{return JSON.stringify(e)}catch{return ""}}function Zt(e){let{initialLayout:t,layout:n,onChange:s,fullscreenPaneId:o,onFullscreenChange:r,locked:a=false,dragActivationDistance:l=8,snapThreshold:d=8,minSplitPercentage:p=5,maxSplitPercentage:g=95,enableDragToDismiss:x=false,dismissThreshold:y=60,onRemove:S,onDragStart:P,onDragEnd:k,onResizeStart:I,onResize:M,onResizeEnd:u,onDismissIntentChange:T}=e,[N,E]=useState(()=>n!==void 0?n:t??null),[A,J]=useState(()=>Ee(n!==void 0?n:null)),[q,V]=useState(o||null),[ee,te]=useState(a),[ie,ne]=useState(null),[le,D]=useState(null),[O,$]=useState(null),[z,R]=useState(null),i=useRef(null),h=useCallback(c=>{i.current=c;},[]),v=useRef(N);v.current=N;let b=useRef(s);b.current=s;let W=useRef(r);W.current=r;let B=useCallback(c=>{V(c),W.current?.(c);},[]);if(useEffect(()=>{te(a);},[a]),useEffect(()=>{o!==void 0&&V(o);},[o]),n!==void 0){let c=Ee(n);c!==A&&(J(c),E(n));}let f=useCallback(c=>(...w)=>{let H=v.current,U=c(H,...w);Ee(H)!==Ee(U)&&(v.current=U,E(U),b.current?.(U));},[]),F=useCallback(f((c,w)=>typeof w=="function"?w(c):w),[f]),G=F,m=useCallback(c=>{V(null),W.current?.(null),ne(null),D(null),$(null),R(null),F(c);},[F]),C=useCallback(f((c,w)=>be(c,w)),[f]),Z=useCallback(f((c,w,H)=>st(c,w,H)),[f]),oe=useCallback(f((c,w,H,U)=>{let pe=j(c,w)??_(c,w);if(!pe)return c;let Ne=_(c,H),Ue=Ne&&Ne.id===pe.id?c:fe(c,H)??c;return Ie(Ue,pe.id,H,U)}),[f]),K=useCallback(f((c,w,H,U,pe)=>{let Ne=j(c,w)??_(c,w);if(!Ne)return c;let et=j(c,pe)??_(c,pe)??{type:"pane",id:pe,tabs:[pe],activeTabId:pe},Ue=be(c,pe);return Re(Ue,Ne.id,H,U,et)}),[f]),Q=useCallback(f((c,w,H)=>xe(c,w,H)),[f]),Se=useCallback(f((c,w,H)=>Le(c,w,H)),[f]),ce=useCallback(f((c,w,H)=>{let U=j(c,w)??_(c,w);return U?Me(c,U.id,H):c}),[f]),ue=useCallback(f((c,w,H)=>{let U=j(c,w)??_(c,w);return U?ye(c,U.id,H):c}),[f]),L=useCallback(f((c,w,H)=>{let U=j(c,H)??_(c,H);return U?at(c,w,U.id):c}),[f]),re=useCallback(f((c,w,H,U)=>Ze(c,w,H,U)),[f]),Y=useCallback(f((c,w)=>fe(c,w)),[f]),me=useCallback(c=>j(v.current,c),[]),se=useCallback(c=>_(v.current,c),[]),we=useCallback(c=>it(v.current,c),[]);return {layout:N,setLayout:m,_internalSetLayout:G,layoutBeforeDrag:ie,setLayoutBeforeDrag:ne,fullscreenPaneId:q,setFullscreenPaneId:B,locked:ee,setLocked:te,activeId:le,setActiveId:D,activeType:O,setActiveType:$,dismissIntentId:z,setDismissIntentId:R,containerRef:i,setContainerRef:h,dragActivationDistance:l,snapThreshold:d,minSplitPercentage:p,maxSplitPercentage:g,enableDragToDismiss:x,dismissThreshold:y,onRemove:S,onDragStart:P,onDragEnd:k,onResizeStart:I,onResize:M,onResizeEnd:u,onDismissIntentChange:T,removePane:C,addPane:Z,addTab:oe,splitPane:K,updateSplitPercentage:Q,updateTabMetadata:Se,updatePaneLock:ce,selectTab:ue,mergeTab:L,moveTab:re,removeTab:Y,findPaneById:me,findPaneContainingTab:se,findTabById:we}}function ut({cursor:e,resizerEl:t,onMove:n,onEnd:s}){document.body.classList.add("zeugma-resizing");let o=document.createElement("style");o.id="zeugma-global-cursor-style",o.textContent=`
1
+ import qt,{createContext,useState,useRef,useEffect,useCallback,useContext,useMemo}from'react';import {DndContext,useDraggable,useSensors,useSensor,pointerWithin,closestCenter,useDroppable,PointerSensor,TouchSensor}from'@dnd-kit/core';import {jsx,Fragment,jsxs}from'react/jsx-runtime';import {createPortal}from'react-dom';function nt(e){let t=useRef(null);return useEffect(()=>{if(!e){t.current=null;return}let n=o=>{t.current={x:o.clientX,y:o.clientY};},s=o=>{let r=o.touches[0]||o.changedTouches[0];r&&(t.current={x:r.clientX,y:r.clientY});};return window.addEventListener("pointermove",n,{passive:true}),window.addEventListener("touchmove",s,{passive:true}),()=>{window.removeEventListener("pointermove",n),window.removeEventListener("touchmove",s);}},[e]),t}function ot(e){useEffect(()=>(e?document.body.style.setProperty("cursor","not-allowed","important"):document.body.style.removeProperty("cursor"),()=>{document.body.style.removeProperty("cursor");}),[e]);}function rt(){let[e,t]=useState({}),n=useRef(true);useEffect(()=>(n.current=true,()=>{n.current=false;}),[]);let s=useCallback((o,r)=>{n.current&&t(i=>i[o]===r?i:{...i,[o]:r});},[]);return {portalTargets:e,registerPortalTarget:s}}var kt=8,$t=8,Qn=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"||e.type==="widget")return e.id===t?null:e;let n=be(e.first,t),s=be(e.second,t);return n===null?s:s===null?n:{...e,first:n,second:s}}function pe(e,t){if(e===null)return null;if(e.type==="widget")return e;if(e.type==="pane"){if(e.tabs.includes(t)){let o=e.tabs.filter(a=>a!==t);if(o.length===0)return null;let r=e.activeTabId;e.activeTabId===t&&(r=o[0]);let i={...e.tabsMetadata};return delete i[t],{...e,tabs:o,activeTabId:r,tabsMetadata:Object.keys(i).length>0?i:void 0}}return e}let n=pe(e.first,t),s=pe(e.second,t);return n===null?s:s===null?n:{...e,first:n,second:s}}function Pe(e,t,n,s,o){if(e===null)return typeof o=="string"?{type:"pane",id:de(),tabs:[o],activeTabId:o}:o;if(e.type==="pane"||e.type==="widget"){if(e.id===t){let r=typeof o=="string"?{type:"pane",id:de(),tabs:[o],activeTabId:o}:o,i=s==="left"||s==="top";return {type:"split",direction:n,first:i?r:e,second:i?e:r,splitPercentage:50}}return e}return {...e,first:Pe(e.first,t,n,s,o)||e.first,second:Pe(e.second,t,n,s,o)||e.second}}function st(e,t){if(e===null)return t;function n(s,o){return s.type==="pane"||s.type==="widget"?{type:"split",direction:o==="row"?"column":"row",splitPercentage:50,first:s,second:t}:{...s,second:n(s.second,s.direction)}}return n(e,null)}function it(e,t,n){return st(e,{type:"widget",id:t,metadata:n})}function at(e,t,n,s){if(e===null)return {type:"pane",id:de(),tabs:[n],activeTabId:n,tabsMetadata:s?{[n]:s}:void 0};let o=t?ne(e,t):null;if(o&&o.type==="pane"){let a=function(c){if(c.type==="pane"&&c.id===t){let p=[...c.tabs];p.includes(n)||p.push(n);let f=c.tabsMetadata;return s&&(f={...c.tabsMetadata,[n]:s}),{...c,tabs:p,activeTabId:n,tabsMetadata:f}}return c.type==="split"?{...c,first:a(c.first),second:a(c.second)}:c};return a(e)}let r={type:"pane",id:de(),tabs:[n],activeTabId:n,tabsMetadata:s?{[n]:s}:void 0};return st(e,r)}function ve(e,t,n){return e===null?null:e===t?{...e,splitPercentage:n}:e.type==="split"?{...e,first:ve(e.first,t,n)||e.first,second:ve(e.second,t,n)||e.second}:e}function ne(e,t){return e===null?null:e.type==="pane"||e.type==="widget"?e.id===t?e:null:e.type==="split"?ne(e.first,t)??ne(e.second,t):null}function ee(e,t){return e===null?null:e.type==="pane"?e.tabs.includes(t)?e:null:e.type==="split"?ee(e.first,t)??ee(e.second,t):null}function lt(e,t){let n=ee(e,t);if(!n)return null;let s=n.tabs.indexOf(t);return {id:t,paneId:n.id,isActive:n.activeTabId===t,index:s,metadata:n.tabsMetadata?.[t]}}function ke(e,t,n){if(e===null)return null;if(e.type==="pane"){if(e.tabs.includes(t)){let s=e.tabsMetadata||{},o=s[t],r=n(o),i={...s};return r===void 0?delete i[t]:i[t]=r,{...e,tabsMetadata:Object.keys(i).length>0?i:void 0}}return e}return e.type==="widget"?e.id===t?{...e,metadata:n(e.metadata)}:e:e.type==="split"?{...e,first:ke(e.first,t,n)??e.first,second:ke(e.second,t,n)??e.second}:e}function $e(e,t,n){if(e===null)return null;if(e.type==="pane"||e.type==="widget"){if(e.id===t){if(n===false){let{locked:s,...o}=e;return o}return {...e,locked:n}}return e}return e.type==="split"?{...e,first:$e(e.first,t,n)??e.first,second:$e(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 ct(e,t,n){if(e===null)return null;let o=ee(e,t)?.tabsMetadata?.[t],r=pe(e,t);if(r===null)return {type:"pane",id:de(),tabs:[t],activeTabId:t,tabsMetadata:o?{[t]:o}:void 0};function i(a){if(a.type==="pane"){if(a.id===n){let c=[...a.tabs];c.includes(t)||c.push(t);let p={...a.tabsMetadata};return o&&(p[t]=o),{...a,tabs:c,activeTabId:t,tabsMetadata:Object.keys(p).length>0?p:void 0}}return a}return a.type==="widget"?a:a.type==="split"?{...a,first:i(a.first),second:i(a.second)}:a}return i(r)}function ze(e,t,n,s="before"){if(e===null)return null;let r=ee(e,t)?.tabsMetadata?.[t],i=pe(e,t);if(i===null)return {type:"pane",id:de(),tabs:[t],activeTabId:t,tabsMetadata:r?{[t]:r}:void 0};function a(c){if(c.type==="pane"){if(c.tabs.includes(n)){let f=[...c.tabs].filter(w=>w!==t),h=f.indexOf(n);h<0&&(h=0),s==="after"&&(h+=1),f.splice(h,0,t);let R={...c.tabsMetadata};return r&&(R[t]=r),{...c,tabs:f,activeTabId:t,tabsMetadata:Object.keys(R).length>0?R:void 0}}return c}return c.type==="widget"?c:c.type==="split"?{...c,first:a(c.first),second:a(c.second)}:c}return a(i)}function fe(e,t=0,n=0,s=100,o=100,r="root"){if(e===null)return {panes:[],splitters:[]};if(e.type==="pane"||e.type==="widget")return {panes:[{paneId:e.id,left:t,top:n,width:s,height:o,node:e}],splitters:[]};let{direction:i,splitPercentage:a,first:c,second:p}=e,h={id:`splitter-${r}-${i}`,currentNode:e,direction:i,left:i==="row"?t+s*(a/100):t,top:i==="column"?n+o*(a/100):n,width:i==="row"?0:s,height:i==="column"?0:o,parentLeft:t,parentTop:n,parentWidth:s,parentHeight:o},R={panes:[],splitters:[]},w={panes:[],splitters:[]};if(i==="row"){let x=s*(a/100);R=fe(c,t,n,x,o,`${r}-L`),w=fe(p,t+x,n,s-x,o,`${r}-R`);}else {let x=o*(a/100);R=fe(c,t,n,s,x,`${r}-T`),w=fe(p,t,n+x,s,o-x,`${r}-B`);}return {panes:[...R.panes,...w.panes],splitters:[h,...R.splitters,...w.splitters]}}function ut(e,t,n,s){if(!(t==="tab"&&n&&e.includes(n))||!s)return -1;let i=e.indexOf(n);return s==="before"?i:i+1}function Ze(e){try{return JSON.stringify(e)}catch{return ""}}function zt(e){let{initialLayout:t,layout:n,onChange:s,fullscreenPaneId:o,onFullscreenChange:r,locked:i=false,dragActivationDistance:a=8,snapThreshold:c=8,minSplitPercentage:p=5,maxSplitPercentage:f=95,enableDragToDismiss:h=false,dismissThreshold:R=60,onRemove:w,onDragStart:x,onDragEnd:E,onResizeStart:M,onResize:N,onResizeEnd:u,onDismissIntentChange:T}=e,[L,C]=useState(()=>n!==void 0?n:t??null),[z,_]=useState(()=>Ze(n!==void 0?n:null)),[U,F]=useState(o||null),[q,G]=useState(i),[oe,K]=useState(null),[le,g]=useState(null),[Z,A]=useState(null),[H,D]=useState(null),l=useRef(null),P=useCallback(d=>{l.current=d;},[]),y=useRef(L);y.current=L;let v=useRef(s);v.current=s;let X=useRef(r);X.current=r;let O=useCallback(d=>{F(d),X.current?.(d);},[]);if(useEffect(()=>{G(i);},[i]),useEffect(()=>{o!==void 0&&F(o);},[o]),n!==void 0){let d=Ze(n);d!==z&&(_(d),C(n));}let m=useCallback(d=>(...I)=>{let V=y.current,Y=d(V,...I);Ze(V)!==Ze(Y)&&(y.current=Y,C(Y),v.current?.(Y));},[]),B=useCallback(m((d,I)=>typeof I=="function"?I(d):I),[m]),Q=B,b=useCallback(d=>{F(null),X.current?.(null),K(null),g(null),A(null),D(null),B(d);},[B]),S=useCallback(m((d,I)=>be(d,I)),[m]),$=useCallback(m((d,I,V)=>it(d,I,V)),[m]),se=useCallback(m((d,I,V,Y)=>{let me=pe(d,I)??d;return at(me,V,I,Y)}),[m]),j=useCallback(m((d,I,V,Y,me)=>{let et=ne(d,I)??ee(d,I);if(!et)return d;let Et=ne(d,me)??ee(d,me)??{type:"pane",id:me,tabs:[me],activeTabId:me},It=be(d,me);return Pe(It,et.id,V,Y,Et)}),[m]),te=useCallback(m((d,I,V)=>ve(d,I,V)),[m]),Ie=useCallback(m((d,I,V)=>ke(d,I,V)),[m]),ce=useCallback(m((d,I,V)=>{let Y=ne(d,I)??ee(d,I);return Y?$e(d,Y.id,V):d}),[m]),ue=useCallback(m((d,I,V)=>{let Y=ne(d,I)??ee(d,I);return Y?ye(d,Y.id,V):d}),[m]),k=useCallback(m((d,I,V)=>{let Y=ne(d,V)??ee(d,V);return Y?ct(d,I,Y.id):d}),[m]),ie=useCallback(m((d,I,V,Y)=>ze(d,I,V,Y)),[m]),W=useCallback(m((d,I)=>pe(d,I)),[m]),ge=useCallback(d=>ne(y.current,d),[]),ae=useCallback(d=>ee(y.current,d),[]),Me=useCallback(d=>lt(y.current,d),[]);return {layout:L,setLayout:b,_internalSetLayout:Q,layoutBeforeDrag:oe,setLayoutBeforeDrag:K,fullscreenPaneId:U,setFullscreenPaneId:O,locked:q,setLocked:G,activeId:le,setActiveId:g,activeType:Z,setActiveType:A,dismissIntentId:H,setDismissIntentId:D,containerRef:l,setContainerRef:P,dragActivationDistance:a,snapThreshold:c,minSplitPercentage:p,maxSplitPercentage:f,enableDragToDismiss:h,dismissThreshold:R,onRemove:w,onDragStart:x,onDragEnd:E,onResizeStart:M,onResize:N,onResizeEnd:u,onDismissIntentChange:T,removePane:S,addWidget:$,addTab:se,splitPane:j,updateSplitPercentage:te,updateMetadata:Ie,updatePaneLock:ce,selectTab:ue,mergeTab:k,moveTab:ie,removeTab:W,findPaneById:ge,findPaneContainingTab:ae,findTabById:Me}}function pt({cursor:e,resizerEl:t,onMove:n,onEnd:s}){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(o),t.setAttribute("data-resizing","true");let r=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",r),document.removeEventListener("pointerup",a),s();};document.addEventListener("pointermove",r),document.addEventListener("pointerup",a);}var Ye=createContext(void 0),Je=createContext(void 0),ze=createContext(void 0),qe=createContext(void 0),ae=()=>{let e=useContext(Ye);if(!e)throw new Error("useZeugmaState must be used within a Zeugma provider");return e},Ae=()=>{let e=useContext(Je);if(!e)throw new Error("useZeugmaActions must be used within a Zeugma provider");return e},He=()=>{let e=useContext(qe);if(!e)throw new Error("useZeugmaDrag must be used within a Zeugma provider");return e};var kt=()=>{let e=ae(),t=Ae();return {...e,...t}};var Oe=class extends PointerSensor{static activators=[{eventName:"onPointerDown",handler:({nativeEvent:t})=>!t.target?.closest(".drag-cancel")}]},Be=class extends TouchSensor{static activators=[{eventName:"onTouchStart",handler:({nativeEvent:t})=>!t.target?.closest(".drag-cancel")}]};function Fe(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 pt(e){let{layout:t,_internalSetLayout:n,layoutBeforeDrag:s,setLayoutBeforeDrag:o,activeId:r,setActiveId:a,setActiveType:l,dismissIntentId:d,setDismissIntentId:p,setOverTabId:g,setOverTabPosition:x,containerRef:y,dragActivationDistance:S,enableDragToDismiss:P,dismissThreshold:k,onRemove:I,onDragStart:M,onDragEnd:u,onDismissIntentChange:T,removeTab:N}=e,E=useRef(null),A=nt(r),[J,q]=useState(false);ot(J);let V=useSensors(useSensor(Oe,{activationConstraint:{distance:S}}),useSensor(Be,{activationConstraint:{delay:250,tolerance:5}})),ee=useCallback(D=>{let $=D.active.id.toString().startsWith("tab-header-"),z=pointerWithin(D),R=$?z:z.filter(i=>!i.id.toString().startsWith("tab-drop-"));if(R.length>0)return [...R].sort((h,v)=>{let b=h.id.toString(),W=v.id.toString();if($){let F=b.startsWith("tab-drop-"),G=W.startsWith("tab-drop-");if(F&&!G)return -1;if(!F&&G)return 1}let B=b.startsWith("drop-root-"),f=W.startsWith("drop-root-");return B&&!f?-1:!B&&f?1:0});if($){let i=D.droppableContainers.filter(h=>h.id.toString().startsWith("tab-drop-"));return closestCenter({...D,droppableContainers:i})}return []},[]);return {sensors:V,collisionDetection:ee,onDragStart:D=>{let O=D.active.id.toString(),$=O.startsWith("tab-header-"),z=$?O.substring(11):O;a(z),l($?"tab":"pane"),g(null),x(null);let R=D.activatorEvent;A.current=Fe(R),P&&y.current?E.current=y.current.getBoundingClientRect():E.current=null;let i=t;if($){let h=_(t,z);h&&(i=ye(t,h.id,z)||t);}o(i),$&&i!==t&&n(i),M&&M(z);},onDragMove:D=>{let{over:O}=D,$=O?.id.toString()||"",z=$.startsWith("drop-locked-");q(m=>m===z?m:z);let R=D.active.id.toString(),i=R.startsWith("tab-header-"),h=i?R.substring(11):R,v=$.match(/^tab-drop-(.+)$/);if(v&&O&&i){let[,m]=v;if(h!==m){let C="before",Z=O.rect,oe=D.activatorEvent,K=null;if(A.current)K=A.current.x;else {let Q=Fe(oe);Q&&(K=Q.x+D.delta.x);}if(K!==null){let Q=Z.left+Z.width/2;K>Q&&(C="after");}g(Q=>Q===m?Q:m),x(Q=>Q===C?Q:C);}else g(C=>C===null?C:null),x(C=>C===null?C:null);}else g(m=>m===null?m:null),x(m=>m===null?m:null);if(!P)return;let b=E.current;if(!b){d!==null&&(p(null),T?.(null));return}let W=D.activatorEvent,B=null,f=null;if(A.current)B=A.current.x,f=A.current.y;else {let m=Fe(W);m&&(B=m.x+D.delta.x,f=m.y+D.delta.y);}let F=0;if(B!==null&&f!==null){let m=0,C=0;B<b.left?m=b.left-B:B>b.right&&(m=B-b.right),f<b.top?C=b.top-f:f>b.bottom&&(C=f-b.bottom),F=Math.sqrt(m*m+C*C);}else {let m=D.active.rect.current.translated;if(m){let C=m.left+m.width/2,Z=m.top+m.height/2,oe=0,K=0;C<b.left?oe=b.left-C:C>b.right&&(oe=C-b.right),Z<b.top?K=b.top-Z:Z>b.bottom&&(K=Z-b.bottom),F=Math.sqrt(oe*oe+K*K);}}F>k?d!==h&&(p(h),T?.(h)):d!==null&&(p(null),T?.(null));},onDragEnd:D=>{a(null),l(null),q(false),g(null),x(null);let{active:O,over:$}=D,z=O.id.toString(),R=z.startsWith("tab-header-"),i=R?z.substring(11):z,h=P&&d===i;p(null),T?.(null),E.current=null;let v=s||t;if(o(null),h){I?I(i):N(i),u&&u(i,null,null);return}if(!$){n(v),u&&u(i,null,null);return}let b=$.id.toString();if(b.startsWith("drop-locked-")){n(v),u&&u(i,null,null);return}let W=b.match(/^tab-drop-(.+)$/);if(W){if(!R){n(v),u&&u(i,null,null);return}let[,ce]=W;if(i!==ce){let ue="before",L=$.rect,re=D.activatorEvent,Y=null;if(A.current)Y=A.current.x;else {let se=Fe(re);se&&(Y=se.x+D.delta.x);}if(Y!==null){let se=L.left+L.width/2;Y>se&&(ue="after");}let me=Ze(v,i,ce,ue);n(me),u&&u(i,ce,{type:"move",position:"center"});}else n(v),u&&u(i,null,null);return}let B=b.match(/^drop-root-(1\/4|1\/3)-(top|bottom|left|right|start|end)$/);if(B){let[,ce,ue]=B,L=ue;L==="start"&&(L="left"),L==="end"&&(L="right");let re=R?fe(v,i):be(v,i),Y;if(R){let se=_(v,i)?.tabsMetadata?.[i];Y={type:"pane",id:de(),tabs:[i],activeTabId:i,tabsMetadata:se?{[i]:se}:void 0};}else Y=j(v,i)??{type:"pane",id:de(),tabs:[i],activeTabId:i};if(re===null)n(Y);else {let me=L==="left"||L==="right",se=L==="left"||L==="top",we=50;ce==="1/4"?we=se?25:75:ce==="1/3"&&(we=se?100/3:200/3),n({type:"split",direction:me?"row":"column",first:se?Y:re,second:se?re:Y,splitPercentage:we});}u&&u(i,"root",{type:"split",direction:L==="left"||L==="right"?"row":"column",position:L});return}let f=b.match(/^drop-(left|right|top|bottom)-(.+)$/);if(!f){n(v),u&&u(i,null,null);return}let[,F,G]=f,m=R?_(v,i):j(v,i),C=m&&m.id===G,Z=m&&m.tabs.length===1;if(i===G||C&&Z){n(v),u&&u(i,null,null);return}let oe=F==="left"||F==="right"?"row":"column",K;if(R){let ue=_(v,i)?.tabsMetadata?.[i];K={type:"pane",id:de(),tabs:[i],activeTabId:i,tabsMetadata:ue?{[i]:ue}:void 0};}else K=j(v,i)??{type:"pane",id:de(),tabs:[i],activeTabId:i};let Q=R?fe(v,i):be(v,i),Se=Re(Q,G,oe,F,K);n(Se),u&&u(i,G,{type:"split",direction:oe,position:F});},onDragCancel:()=>{a(null),l(null),q(false),g(null),x(null),p(null),T?.(null),E.current=null,s!==null&&(n(s),o(null));}}}var ft=({activeId:e,render:t,className:n})=>{let s=useRef(null);return useEffect(()=>{let o=r=>{s.current&&(s.current.style.transform=`translate(${r.clientX+12}px, ${r.clientY+12}px)`);};return document.addEventListener("pointermove",o),()=>document.removeEventListener("pointermove",o)},[]),jsx("div",{ref:s,className:n,style:{position:"fixed",top:0,left:0,zIndex:9999,pointerEvents:"none"},children:t(e)})};var gt=Xt.memo(({tabId:e,target:t,renderWidget:n})=>{let[s,o]=useState(false),r=useRef(null);if(useEffect(()=>{o(true);},[]),useEffect(()=>{if(!s||!r.current)return;let l=r.current;if(t)t.appendChild(l);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(l);}},[t,s]),useEffect(()=>()=>{r.current&&r.current.remove();},[]),!s)return null;r.current||(r.current=document.createElement("div"),r.current.className=`zeugma-portal-wrapper-${e}`,r.current.style.width="100%",r.current.style.height="100%");let a=r.current;return !a||!n?null:createPortal(n(e),a)});var Kt=e=>{let t=e,{renderPane:n,renderWidget:s,renderDragOverlay:o,classNames:r={},children:a,layout:l,setLayout:d,fullscreenPaneId:p,setFullscreenPaneId:g,locked:x,setLocked:y,findPaneById:S,findPaneContainingTab:P,findTabById:k,activeId:I,activeType:M,dismissIntentId:u,setContainerRef:T,layoutBeforeDrag:N,snapThreshold:E,minSplitPercentage:A,maxSplitPercentage:J,onRemove:q,onResizeStart:V,onResize:ee,onResizeEnd:te,removePane:ie,addPane:ne,addTab:le,updateTabMetadata:D,updatePaneLock:O,selectTab:$,mergeTab:z,removeTab:R,splitPane:i,updateSplitPercentage:h,moveTab:v}=t,{portalTargets:b,registerPortalTarget:W}=rt(),[B,f]=useState(null),[F,G]=useState(null),m=pt({...t,setOverTabId:f,setOverTabPosition:G}),C=useCallback(L=>n(L),[n]),Z=useMemo(()=>r,[r.dashboard,r.dashboardDismissActive,r.pane,r.paneLocked,r.dropPreview,r.rootDropPreview,r.dragOverlay,r.resizer,r.dismissPreview,r.dashboardLocked,r.lockedPreview,r.tabDropPreview,r.tabSeparator]),oe=useCallback((L,re)=>{te&&te(L,re);},[te]),K=useMemo(()=>({layout:l,setLayout:d,renderPane:C,activeId:I,activeType:M,dismissIntentId:u,setContainerRef:T,fullscreenPaneId:p,classNames:Z,onRemove:q,onFullscreenChange:g,snapThreshold:E,onResizeStart:V,onResize:ee,onResizeEnd:oe,minSplitPercentage:A,maxSplitPercentage:J,locked:x,setLocked:y,findPaneById:S,findPaneContainingTab:P,findTabById:k}),[l,I,M,u,T,p,Z,q,g,E,V,ee,A,J,d,C,oe,x,y,S,P,k]),Q=useMemo(()=>({overTabId:B,overTabPosition:F}),[B,F]),Se=useMemo(()=>({removePane:ie,addPane:ne,addTab:le,updateTabMetadata:D,updatePaneLock:O,selectTab:$,mergeTab:z,removeTab:R,setFullscreenPaneId:g,setLocked:y,splitPane:i,updateSplitPercentage:h,moveTab:v}),[ie,ne,le,D,O,$,z,R,g,y,i,h,v]),ce=useMemo(()=>{let L=new Set;function re(Y){Y&&(Y.type==="pane"?Y.tabs.forEach(me=>{L.add(me);}):(re(Y.first),re(Y.second)));}return re(l),N&&re(N),Array.from(L).sort()},[l,I,N]),ue=useMemo(()=>({registerPortalTarget:W}),[W]);return jsx(Je.Provider,{value:Se,children:jsx(Ye.Provider,{value:K,children:jsx(qe.Provider,{value:Q,children:jsxs(ze.Provider,{value:ue,children:[jsx(DndContext,{id:"zeugma-dnd-context",...m,children:a}),I&&M&&o&&jsx(ft,{activeId:I,render:L=>o(L,M),className:`${r.dragOverlay||""} ${I===u&&r.dismissPreview||""}`.trim()}),jsx("div",{id:"zeugma-portal-host",style:{display:"none"},children:ce.map(L=>jsx(gt,{tabId:L,target:b[L]||null,renderWidget:s},L))})]})})})})};var en={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"}}},nn=({id:e,fraction:t,edge:n,activeClassName:s})=>{let{setNodeRef:o,isOver:r}=useDroppable({id:e}),a={position:"absolute",pointerEvents:"none",zIndex:101,boxSizing:"border-box",...tn[n][t]};return jsxs(Fragment,{children:[jsx("div",{ref:o,style:en[n][t]}),r&&jsx("div",{className:s,style:a})]})},ht=({activeClassName:e})=>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=>jsx(nn,{id:n.id,fraction:n.fraction,edge:n.edge,activeClassName:e},n.id))});function Ke({containerRef:e,isRow:t,direction:n,splitPercentage:s,resizerSize:o,snapThreshold:r,layout:a,currentNode:l,onLayoutChange:d,onResizeStart:p,onResizeEnd:g,parentLeft:x,parentTop:y,parentWidth:S,parentHeight:P}){let{onResizeStart:k,onResize:I,onResizeEnd:M,minSplitPercentage:u=5,maxSplitPercentage:T=95,locked:N=false}=ae();return useCallback(E=>{if(N)return;E.preventDefault();let A=e.current;if(!A)return;p&&p(),k&&k(l);let J=A.getBoundingClientRect(),q=E.clientX,V=E.clientY,ee=s,te=E.currentTarget,ie=J.left+J.width*(x/100),ne=J.top+J.height*(y/100),le=J.width*(S/100),D=J.height*(P/100),$=Array.from(document.querySelectorAll('div[role="separator"][data-direction]')).filter(R=>R!==te&&R.getAttribute("data-direction")===n).map(R=>{let i=R.getBoundingClientRect();return t?i.left+i.width/2:i.top+i.height/2}),z=ee;ut({cursor:t?"col-resize":"row-resize",resizerEl:te,onMove:R=>{let i=t?(R.clientX-q)/le*100:(R.clientY-V)/D*100,h=ee+i,v=t?ie+(le-o)*(h/100)+o/2:ne+(D-o)*(h/100)+o/2,b=1/0,W=null;for(let G of $){let m=Math.abs(v-G);m<r&&m<b&&(b=m,W=G);}let B=h;W!==null&&(B=t?(W-o/2-ie)/(le-o)*100:(W-o/2-ne)/(D-o)*100);let f=Math.max(u,Math.min(T,B));z=f;let F=xe(a,l,f);if(F){let{panes:G,splitters:m}=ge(F),C=e.current;if(C){for(let Z of G)C.style.setProperty(`--pane-left-${Z.paneId}`,`${Z.left}%`),C.style.setProperty(`--pane-top-${Z.paneId}`,`${Z.top}%`),C.style.setProperty(`--pane-width-${Z.paneId}`,`${Z.width}%`),C.style.setProperty(`--pane-height-${Z.paneId}`,`${Z.height}%`);for(let Z of m)C.style.setProperty(`--splitter-pos-${Z.id}`,`${Z.direction==="row"?Z.left:Z.top}%`);}}I&&I(l,f);},onEnd:()=>{let R=xe(a,l,z),i=e.current;if(i){let{panes:h,splitters:v}=ge(R);for(let b of h)i.style.removeProperty(`--pane-left-${b.paneId}`),i.style.removeProperty(`--pane-top-${b.paneId}`),i.style.removeProperty(`--pane-width-${b.paneId}`),i.style.removeProperty(`--pane-height-${b.paneId}`);for(let b of v)i.style.removeProperty(`--splitter-pos-${b.id}`);}d(R),g&&g(),M&&M(l,z);}});},[e,t,n,s,o,r,a,l,d,p,g,k,I,M,u,T,x,y,S,P])}var dn=({splitter:e,resizerSize:t,snapThreshold:n,containerRef:s})=>{let{layout:o,setLayout:r,classNames:a,locked:l}=ae(),[d,p]=useState(false),{currentNode:g,direction:x,left:y,top:S,width:P,height:k,parentLeft:I,parentTop:M,parentWidth:u,parentHeight:T}=e,N=x==="row",E=Ke({containerRef:s,isRow:N,direction:x,splitPercentage:g.splitPercentage,resizerSize:t,snapThreshold:n,layout:o,currentNode:g,onLayoutChange:r,onResizeStart:()=>p(true),onResizeEnd:()=>p(false),parentLeft:I,parentTop:M,parentWidth:u,parentHeight:T}),A=N?{position:"absolute",left:`calc(var(--splitter-pos-${e.id}, ${y}%) - ${t/2}px)`,top:`calc(${S}% + ${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(${y}% + ${t/2}px)`,top:`calc(var(--splitter-pos-${e.id}, ${S}%) - ${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 jsx("div",{className:a.resizer||"","data-direction":x,"data-resizing":d||void 0,style:A,onPointerDown:E,role:"separator","aria-valuenow":g.splitPercentage,"aria-valuemin":5,"aria-valuemax":95})},pn=Xt.memo(({paneId:e,renderPane:t})=>jsx(Fragment,{children:t(e)}),(e,t)=>e.paneId===t.paneId&&e.renderPane===t.renderPane),fn=({tree:e,resizerSize:t=4,snapThreshold:n})=>{let{layout:s,renderPane:o,activeId:r,dismissIntentId:a,setContainerRef:l,fullscreenPaneId:d,snapThreshold:p,locked:g,classNames:x}=ae(),y=n!==void 0?n:p??8,S=e!==void 0?e:s,P=useRef(null),{panes:k,splitters:I}=useMemo(()=>S?ge(S):{panes:[],splitters:[]},[S]);if(!S)return null;let M=()=>jsxs(Fragment,{children:[k.map(u=>{let T=d===u.paneId;return jsx("div",{style:{position:"absolute",left:T?"0%":`var(--pane-left-${u.paneId}, ${u.left}%)`,top:T?"0%":`var(--pane-top-${u.paneId}, ${u.top}%)`,width:T?"100%":`var(--pane-width-${u.paneId}, ${u.width}%)`,height:T?"100%":`var(--pane-height-${u.paneId}, ${u.height}%)`,overflow:"hidden",zIndex:T?20:1,display:d&&!T?"none":"block",padding:T?"0px":`${t/2}px`,boxSizing:"border-box"},children:jsx(pn,{paneId:u.paneId,renderPane:o})},u.paneId)}),!d&&I.map(u=>jsx(dn,{splitter:u,resizerSize:t,snapThreshold:y,containerRef:P},u.id))]});if(e===void 0){let u=r!==null&&r===a,T=E=>{l(E),P.current=E;},N=`${x.dashboard||""} ${u&&x.dashboardDismissActive||""} ${g&&x.dashboardLocked||""}`.trim();return jsxs("div",{ref:T,className:N,style:{position:"relative",width:"100%",height:"100%",overflow:"hidden"},children:[M(),r!==null&&!g&&jsx(ht,{activeClassName:x.rootDropPreview??x.dropPreview})]})}return jsx("div",{ref:P,style:{position:"relative",width:"100%",height:"100%",overflow:"hidden"},children:M()})};var We=createContext(null);var Pn={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"}},Rn={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"}},Tt=({id:e,position:t,activeClassName:n})=>{let{setNodeRef:s,isOver:o}=useDroppable({id:e});return jsxs(Fragment,{children:[jsx("div",{ref:s,style:Pn[t]}),o&&jsx("div",{className:n,style:Rn[t]})]})},yn=({id:e,children:t,style:n,locked:s=false})=>{let o=useRef(null),{layout:r,activeId:a,classNames:l,fullscreenPaneId:d,onFullscreenChange:p,locked:g}=ae(),{removePane:x,updateTabMetadata:y,selectTab:S,removeTab:P}=Ae(),k=useContext(ze);if(!k)throw new Error("Pane must be used within a Zeugma provider");let{registerPortalTarget:I}=k,M=useMemo(()=>j(r,e),[r,e]),u=M?.id??e,T=M?.tabs??[e],N=M?.activeTabId??e,E=M?.tabsMetadata,A=E?.[e],J=M?.locked??false,q=s||J,V=g||q,ee=g||q,te=a!==null&&a!==e&&(!T.includes(a)||T.length>1)&&!ee,{attributes:ie,listeners:ne,setNodeRef:le}=useDraggable({id:e,disabled:V}),D=a!==null&&T.includes(a),O=d===e,$=useCallback(()=>jsx("div",{ref:o,id:`zeugma-tab-target-${N}`,className:"zeugma-tab-content-wrapper",style:{height:"100%",width:"100%"}}),[N]);useEffect(()=>{let h=o.current;return I(N,h),()=>{I(N,null);}},[N,I]);let z=useMemo(()=>({isDragging:D,isFullscreen:O,toggleFullscreen:()=>p?.(O?null:e),remove:()=>{O&&p?.(null),x(u);},metadata:A,updateMetadata:h=>{y(e,h);},locked:V,tabs:T,activeTabId:N,selectTab:h=>S(u,h),removeTab:h=>{O&&h===N&&p?.(null),P(h);},tabsMetadata:E,updateTabMetadata:(h,v)=>{y(h,v);},renderActiveTab:$}),[D,O,p,e,P,A,y,V,T,N,S,u,E,$]),R=useMemo(()=>V?{disabled:true}:{...ne,...ie},[ne,ie,V]),i=`${l.pane||""} ${q&&l.paneLocked||""}`.trim();return jsx(We.Provider,{value:R,children:jsxs("div",{ref:le,className:i,style:{position:"relative",width:"100%",height:"100%",...n},children:[t(z),te&&jsx("div",{style:{position:"absolute",top:0,left:0,right:0,bottom:0,zIndex:15,pointerEvents:"none"},children:["top","bottom","left","right"].map(h=>jsx(Tt,{id:`drop-${h}-${e}`,position:h,activeClassName:l.dropPreview},h))}),a!==null&&a!==e&&ee&&jsx("div",{style:{position:"absolute",top:0,left:0,right:0,bottom:0,zIndex:15,pointerEvents:"none"},children:jsx(Tt,{id:`drop-locked-${e}`,position:"full",activeClassName:l.lockedPreview||""})})]})})};var Sn=({children:e,className:t,style:n})=>{let s=useContext(We);if(!s)throw new Error("<DragHandle> must be used inside a <Pane>");let{disabled:o,...r}=s;return jsx("div",{className:t,style:{cursor:o?"default":"grab",userSelect:o?"auto":"none",touchAction:o?"auto":"none",...n},...o?{}:r,children:e})};var Ct=createContext(void 0),Mn=()=>{let e=useContext(Ct);if(!e)throw new Error("useTabContext must be used within a Tab component");return e},St=({id:e,locked:t=false,children:n,className:s,style:o})=>{let{locked:r,classNames:a={},activeType:l}=ae(),{overTabId:d}=He(),p=useContext(je),g=t||r||(p?.locked??false),{attributes:x,listeners:y,setNodeRef:S,isDragging:P}=useDraggable({id:`tab-header-${e}`,disabled:g}),{setNodeRef:k,isOver:I}=useDroppable({id:`tab-drop-${e}`,disabled:g||l==="pane"}),M=ne=>{S(ne),k(ne);},u=I&&d===e,T=p?.tabs||[],N=T.indexOf(e),E=p?.activeTabId,J=N>0&&e!==E&&T[N-1]!==E?jsx("div",{className:a.tabSeparator}):null,q=p?p.activeTabId===e:false,V=p?.tabsMetadata?.[e],ee=useCallback(()=>{p?.selectTab(e);},[p,e]),te=useCallback(()=>{p?.removeTab(e);},[p,e]),ie=useMemo(()=>({tabId:e,isActive:q,isDragging:P,isOver:u,metadata:V,locked:g,selectTab:ee,removeTab:te}),[e,q,P,u,V,g,ee,te]);return jsx(Ct.Provider,{value:ie,children:jsxs("div",{ref:M,className:s,style:{display:"inline-flex",position:"relative",cursor:g?"default":"grab",...o},...g?{}:y,...g?{}:x,children:[J,n({isDragging:P,isOver:u})]})})};var je=createContext(void 0);var wt=(e,t)=>typeof e=="function"?e(t):e,An=({tabs:e,activeTabId:t,locked:n=false,tabsMetadata:s,selectTab:o,removeTab:r,renderTab:a,classNames:l,styles:d})=>{let{classNames:p={},activeType:g}=ae(),{overTabId:x,overTabPosition:y}=He(),S=useMemo(()=>({tabs:e,activeTabId:t,locked:n,tabsMetadata:s,selectTab:o,removeTab:r}),[e,t,n,s,o,r]),P=lt(e,g,x,y);return jsx(je.Provider,{value:S,children:jsxs("div",{className:l?.container,style:{display:"flex",alignItems:"center",height:"100%",...d?.container},children:[e.map((k,I)=>{let M=s?.[k],u=wt(l?.tab,k),T=wt(d?.tab,k),N=I===P;return jsxs(Xt.Fragment,{children:[N&&p.tabDropPreview&&jsx("div",{style:{position:"relative",height:"100%",width:0,zIndex:10},children:jsx("div",{className:p.tabDropPreview,style:{position:"absolute",top:0,bottom:0,transform:I===0?"none":"translateX(-50%)"}})}),jsx(St,{id:k,locked:n,className:u,style:T,children:({isDragging:E,isOver:A})=>a({tabId:k,activeTabId:t,isDragging:E,isOver:A,metadata:M,selectTab:o,removeTab:r})})]},k)}),P===e.length&&p.tabDropPreview&&jsx("div",{style:{position:"relative",height:"100%",width:0,zIndex:10},children:jsx("div",{className:p.tabDropPreview,style:{position:"absolute",top:0,bottom:0,transform:"translateX(-100%)"}})})]})})};export{Mt as DEFAULT_DRAG_ACTIVATION_DISTANCE,Bn as DEFAULT_RESIZER_SIZE,It as DEFAULT_SNAP_THRESHOLD,Sn as DragHandle,yn as Pane,fn as PaneTree,ze as PortalRegistryContext,An as Tabs,Kt as Zeugma,Je as ZeugmaActionsContext,qe as ZeugmaDragContext,Ye as ZeugmaStateContext,ut as createDragSession,Ee as safeJsonStringify,Ke as useResizer,Mn as useTabContext,Zt as useZeugma,Ae as useZeugmaActions,kt as useZeugmaContext,He as useZeugmaDrag,ae as useZeugmaState};//# sourceMappingURL=index.js.map
6
+ `,document.head.appendChild(o),t.setAttribute("data-resizing","true");let r=a=>{n(a);},i=()=>{document.body.classList.remove("zeugma-resizing"),t.removeAttribute("data-resizing");let a=document.getElementById("zeugma-global-cursor-style");a&&a.remove(),document.removeEventListener("pointermove",r),document.removeEventListener("pointerup",i),s();};document.addEventListener("pointermove",r),document.addEventListener("pointerup",i);}var Xe=createContext(void 0),Ye=createContext(void 0),Re=createContext(void 0),Je=createContext(void 0),re=()=>{let e=useContext(Xe);if(!e)throw new Error("useZeugmaState must be used within a Zeugma provider");return e},De=()=>{let e=useContext(Ye);if(!e)throw new Error("useZeugmaActions must be used within a Zeugma provider");return e},Fe=()=>{let e=useContext(Je);if(!e)throw new Error("useZeugmaDrag must be used within a Zeugma provider");return e};var At=()=>{let e=re(),t=De();return {...e,...t}};var Oe=class extends PointerSensor{static activators=[{eventName:"onPointerDown",handler:({nativeEvent:t})=>!t.target?.closest(".drag-cancel")}]},Be=class extends 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 gt(e){let{layout:t,_internalSetLayout:n,layoutBeforeDrag:s,setLayoutBeforeDrag:o,activeId:r,setActiveId:i,setActiveType:a,dismissIntentId:c,setDismissIntentId:p,setOverTabId:f,setOverTabPosition:h,containerRef:R,dragActivationDistance:w,enableDragToDismiss:x,dismissThreshold:E,onRemove:M,onDragStart:N,onDragEnd:u,onDismissIntentChange:T,removeTab:L}=e,C=useRef(null),z=nt(r),[_,U]=useState(false);ot(_);let F=useSensors(useSensor(Oe,{activationConstraint:{distance:w}}),useSensor(Be,{activationConstraint:{delay:250,tolerance:5}})),q=useCallback(g=>{let A=g.active.id.toString().startsWith("tab-header-"),H=pointerWithin(g),D=A?H:H.filter(l=>!l.id.toString().startsWith("tab-drop-"));if(D.length>0)return [...D].sort((P,y)=>{let v=P.id.toString(),X=y.id.toString();if(A){let B=v.startsWith("tab-drop-"),Q=X.startsWith("tab-drop-");if(B&&!Q)return -1;if(!B&&Q)return 1}let O=v.startsWith("drop-root-"),m=X.startsWith("drop-root-");return O&&!m?-1:!O&&m?1:0});if(A){let l=g.droppableContainers.filter(P=>P.id.toString().startsWith("tab-drop-"));return closestCenter({...g,droppableContainers:l})}return []},[]);return {sensors:F,collisionDetection:q,onDragStart:g=>{let Z=g.active.id.toString(),A=Z.startsWith("tab-header-"),H=A?Z.substring(11):Z;i(H),a(A?"tab":"pane"),f(null),h(null);let D=g.activatorEvent;z.current=We(D),x&&R.current?C.current=R.current.getBoundingClientRect():C.current=null;let l=t;if(A){let P=ee(t,H);P&&(l=ye(t,P.id,H)||t);}o(l),A&&l!==t&&n(l),N&&N(H);},onDragMove:g=>{let{over:Z}=g,A=Z?.id.toString()||"",H=A.startsWith("drop-locked-");U(b=>b===H?b:H);let D=g.active.id.toString(),l=D.startsWith("tab-header-"),P=l?D.substring(11):D,y=A.match(/^tab-drop-(.+)$/);if(y&&Z&&l){let[,b]=y;if(P!==b){let S="before",$=Z.rect,se=g.activatorEvent,j=null;if(z.current)j=z.current.x;else {let te=We(se);te&&(j=te.x+g.delta.x);}if(j!==null){let te=$.left+$.width/2;j>te&&(S="after");}f(te=>te===b?te:b),h(te=>te===S?te:S);}else f(S=>S===null?S:null),h(S=>S===null?S:null);}else f(b=>b===null?b:null),h(b=>b===null?b:null);if(!x)return;let v=C.current;if(!v){c!==null&&(p(null),T?.(null));return}let X=g.activatorEvent,O=null,m=null;if(z.current)O=z.current.x,m=z.current.y;else {let b=We(X);b&&(O=b.x+g.delta.x,m=b.y+g.delta.y);}let B=0;if(O!==null&&m!==null){let b=0,S=0;O<v.left?b=v.left-O:O>v.right&&(b=O-v.right),m<v.top?S=v.top-m:m>v.bottom&&(S=m-v.bottom),B=Math.sqrt(b*b+S*S);}else {let b=g.active.rect.current.translated;if(b){let S=b.left+b.width/2,$=b.top+b.height/2,se=0,j=0;S<v.left?se=v.left-S:S>v.right&&(se=S-v.right),$<v.top?j=v.top-$:$>v.bottom&&(j=$-v.bottom),B=Math.sqrt(se*se+j*j);}}B>E?c!==P&&(p(P),T?.(P)):c!==null&&(p(null),T?.(null));},onDragEnd:g=>{i(null),a(null),U(false),f(null),h(null);let{active:Z,over:A}=g,H=Z.id.toString(),D=H.startsWith("tab-header-"),l=D?H.substring(11):H,P=x&&c===l;p(null),T?.(null),C.current=null;let y=s||t;if(o(null),P){M?M(l):L(l),u&&u(l,null,null);return}if(!A){n(y),u&&u(l,null,null);return}let v=A.id.toString();if(v.startsWith("drop-locked-")){n(y),u&&u(l,null,null);return}let X=v.match(/^tab-drop-(.+)$/);if(X){if(!D){n(y),u&&u(l,null,null);return}let[,ce]=X;if(l!==ce){let ue="before",k=A.rect,ie=g.activatorEvent,W=null;if(z.current)W=z.current.x;else {let ae=We(ie);ae&&(W=ae.x+g.delta.x);}if(W!==null){let ae=k.left+k.width/2;W>ae&&(ue="after");}let ge=ze(y,l,ce,ue);n(ge),u&&u(l,ce,{type:"move",position:"center"});}else n(y),u&&u(l,null,null);return}let O=v.match(/^drop-root-(1\/4|1\/3)-(top|bottom|left|right|start|end)$/);if(O){let[,ce,ue]=O,k=ue;k==="start"&&(k="left"),k==="end"&&(k="right");let ie=D?pe(y,l):be(y,l),W;if(D){let ae=ee(y,l)?.tabsMetadata?.[l];W={type:"pane",id:de(),tabs:[l],activeTabId:l,tabsMetadata:ae?{[l]:ae}:void 0};}else W=ne(y,l)??{type:"pane",id:de(),tabs:[l],activeTabId:l};if(ie===null)n(W);else {let ge=k==="left"||k==="right",ae=k==="left"||k==="top",Me=50;ce==="1/4"?Me=ae?25:75:ce==="1/3"&&(Me=ae?100/3:200/3),n({type:"split",direction:ge?"row":"column",first:ae?W:ie,second:ae?ie:W,splitPercentage:Me});}u&&u(l,"root",{type:"split",direction:k==="left"||k==="right"?"row":"column",position:k});return}let m=v.match(/^drop-(left|right|top|bottom)-(.+)$/);if(!m){n(y),u&&u(l,null,null);return}let[,B,Q]=m,b=D?ee(y,l):ne(y,l),S=b&&b.id===Q,$=b&&(b.type==="widget"||b.tabs.length===1);if(l===Q||S&&$){n(y),u&&u(l,null,null);return}let se=B==="left"||B==="right"?"row":"column",j;if(D){let ue=ee(y,l)?.tabsMetadata?.[l];j={type:"pane",id:de(),tabs:[l],activeTabId:l,tabsMetadata:ue?{[l]:ue}:void 0};}else j=ne(y,l)??{type:"pane",id:de(),tabs:[l],activeTabId:l};let te=D?pe(y,l):be(y,l),Ie=Pe(te,Q,se,B,j);n(Ie),u&&u(l,Q,{type:"split",direction:se,position:B});},onDragCancel:()=>{i(null),a(null),U(false),f(null),h(null),p(null),T?.(null),C.current=null,s!==null&&(n(s),o(null));}}}var mt=({activeId:e,render:t,className:n})=>{let s=useRef(null);return useEffect(()=>{let o=r=>{s.current&&(s.current.style.transform=`translate(${r.clientX+12}px, ${r.clientY+12}px)`);};return document.addEventListener("pointermove",o),()=>document.removeEventListener("pointermove",o)},[]),jsx("div",{ref:s,className:n,style:{position:"fixed",top:0,left:0,zIndex:9999,pointerEvents:"none"},children:t(e)})};var bt=qt.memo(({tabId:e,target:t,renderWidget:n})=>{let[s,o]=useState(false),r=useRef(null);if(useEffect(()=>{o(true);},[]),useEffect(()=>{if(!s||!r.current)return;let a=r.current;if(t)t.appendChild(a);else {let c=document.getElementById("zeugma-hidden-portal-container");c||(c=document.createElement("div"),c.id="zeugma-hidden-portal-container",c.style.display="none",document.body.appendChild(c)),c.appendChild(a);}},[t,s]),useEffect(()=>()=>{r.current&&r.current.remove();},[]),!s)return null;r.current||(r.current=document.createElement("div"),r.current.className=`zeugma-portal-wrapper-${e}`,r.current.style.width="100%",r.current.style.height="100%");let i=r.current;return !i||!n?null:createPortal(n(e),i)});var en=e=>{let t=e,{renderPane:n,renderWidget:s,renderDragOverlay:o,classNames:r={},children:i,layout:a,setLayout:c,fullscreenPaneId:p,setFullscreenPaneId:f,locked:h,setLocked:R,findPaneById:w,findPaneContainingTab:x,findTabById:E,activeId:M,activeType:N,dismissIntentId:u,setContainerRef:T,layoutBeforeDrag:L,snapThreshold:C,minSplitPercentage:z,maxSplitPercentage:_,onRemove:U,onResizeStart:F,onResize:q,onResizeEnd:G,removePane:oe,addWidget:K,addTab:le,updateMetadata:g,updatePaneLock:Z,selectTab:A,mergeTab:H,removeTab:D,splitPane:l,updateSplitPercentage:P,moveTab:y}=t,{portalTargets:v,registerPortalTarget:X}=rt(),[O,m]=useState(null),[B,Q]=useState(null),b=gt({...t,setOverTabId:m,setOverTabPosition:Q}),S=useCallback(k=>n(k),[n]),$=useMemo(()=>r,[r.dashboard,r.dashboardDismissActive,r.pane,r.paneLocked,r.dropPreview,r.rootDropPreview,r.dragOverlay,r.resizer,r.dismissPreview,r.dashboardLocked,r.lockedPreview,r.tabDropPreview,r.tabSeparator]),se=useCallback((k,ie)=>{G&&G(k,ie);},[G]),j=useMemo(()=>({layout:a,setLayout:c,renderPane:S,activeId:M,activeType:N,dismissIntentId:u,setContainerRef:T,fullscreenPaneId:p,classNames:$,onRemove:U,onFullscreenChange:f,snapThreshold:C,onResizeStart:F,onResize:q,onResizeEnd:se,minSplitPercentage:z,maxSplitPercentage:_,locked:h,setLocked:R,findPaneById:w,findPaneContainingTab:x,findTabById:E}),[a,M,N,u,T,p,$,U,f,C,F,q,z,_,c,S,se,h,R,w,x,E]),te=useMemo(()=>({overTabId:O,overTabPosition:B}),[O,B]),Ie=useMemo(()=>({removePane:oe,addWidget:K,addTab:le,updateMetadata:g,updatePaneLock:Z,selectTab:A,mergeTab:H,removeTab:D,setFullscreenPaneId:f,setLocked:R,splitPane:l,updateSplitPercentage:P,moveTab:y}),[oe,K,le,g,Z,A,H,D,f,R,l,P,y]),ce=useMemo(()=>{let k=new Set;function ie(W){W&&(W.type==="pane"?W.tabs.forEach(ge=>{k.add(ge);}):W.type==="widget"?k.add(W.id):W.type==="split"&&(ie(W.first),ie(W.second)));}return ie(a),L&&ie(L),Array.from(k).sort()},[a,M,L]),ue=useMemo(()=>({registerPortalTarget:X}),[X]);return jsx(Ye.Provider,{value:Ie,children:jsx(Xe.Provider,{value:j,children:jsx(Je.Provider,{value:te,children:jsxs(Re.Provider,{value:ue,children:[jsx(DndContext,{id:"zeugma-dnd-context",...b,children:i}),M&&N&&o&&jsx(mt,{activeId:M,render:k=>o(k,N),className:`${r.dragOverlay||""} ${M===u&&r.dismissPreview||""}`.trim()}),jsx("div",{id:"zeugma-portal-host",style:{display:"none"},children:ce.map(k=>jsx(bt,{tabId:k,target:v[k]||null,renderWidget:s},k))})]})})})})};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:"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"}}},sn=({id:e,fraction:t,edge:n,activeClassName:s})=>{let{setNodeRef:o,isOver:r}=useDroppable({id:e}),i={position:"absolute",pointerEvents:"none",zIndex:101,boxSizing:"border-box",...rn[n][t]};return jsxs(Fragment,{children:[jsx("div",{ref:o,style:on[n][t]}),r&&jsx("div",{className:s,style:i})]})},xt=({activeClassName:e})=>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=>jsx(sn,{id:n.id,fraction:n.fraction,edge:n.edge,activeClassName:e},n.id))});function Ge({containerRef:e,isRow:t,direction:n,splitPercentage:s,resizerSize:o,snapThreshold:r,layout:i,currentNode:a,onLayoutChange:c,onResizeStart:p,onResizeEnd:f,parentLeft:h,parentTop:R,parentWidth:w,parentHeight:x}){let{onResizeStart:E,onResize:M,onResizeEnd:N,minSplitPercentage:u=5,maxSplitPercentage:T=95,locked:L=false}=re();return useCallback(C=>{if(L)return;C.preventDefault();let z=e.current;if(!z)return;p&&p(),E&&E(a);let _=z.getBoundingClientRect(),U=C.clientX,F=C.clientY,q=s,G=C.currentTarget,oe=_.left+_.width*(h/100),K=_.top+_.height*(R/100),le=_.width*(w/100),g=_.height*(x/100),A=Array.from(document.querySelectorAll('div[role="separator"][data-direction]')).filter(D=>D!==G&&D.getAttribute("data-direction")===n).map(D=>{let l=D.getBoundingClientRect();return t?l.left+l.width/2:l.top+l.height/2}),H=q;pt({cursor:t?"col-resize":"row-resize",resizerEl:G,onMove:D=>{let l=t?(D.clientX-U)/le*100:(D.clientY-F)/g*100,P=q+l,y=t?oe+(le-o)*(P/100)+o/2:K+(g-o)*(P/100)+o/2,v=1/0,X=null;for(let Q of A){let b=Math.abs(y-Q);b<r&&b<v&&(v=b,X=Q);}let O=P;X!==null&&(O=t?(X-o/2-oe)/(le-o)*100:(X-o/2-K)/(g-o)*100);let m=Math.max(u,Math.min(T,O));H=m;let B=ve(i,a,m);if(B){let{panes:Q,splitters:b}=fe(B),S=e.current;if(S){for(let $ of Q)S.style.setProperty(`--pane-left-${$.paneId}`,`${$.left}%`),S.style.setProperty(`--pane-top-${$.paneId}`,`${$.top}%`),S.style.setProperty(`--pane-width-${$.paneId}`,`${$.width}%`),S.style.setProperty(`--pane-height-${$.paneId}`,`${$.height}%`);for(let $ of b)S.style.setProperty(`--splitter-pos-${$.id}`,`${$.direction==="row"?$.left:$.top}%`);}}M&&M(a,m);},onEnd:()=>{let D=ve(i,a,H),l=e.current;if(l){let{panes:P,splitters:y}=fe(D);for(let v of P)l.style.removeProperty(`--pane-left-${v.paneId}`),l.style.removeProperty(`--pane-top-${v.paneId}`),l.style.removeProperty(`--pane-width-${v.paneId}`),l.style.removeProperty(`--pane-height-${v.paneId}`);for(let v of y)l.style.removeProperty(`--splitter-pos-${v.id}`);}c(D),f&&f(),N&&N(a,H);}});},[e,t,n,s,o,r,i,a,c,p,f,E,M,N,u,T,h,R,w,x])}var gn=({splitter:e,resizerSize:t,snapThreshold:n,containerRef:s})=>{let{layout:o,setLayout:r,classNames:i,locked:a}=re(),[c,p]=useState(false),{currentNode:f,direction:h,left:R,top:w,width:x,height:E,parentLeft:M,parentTop:N,parentWidth:u,parentHeight:T}=e,L=h==="row",C=Ge({containerRef:s,isRow:L,direction:h,splitPercentage:f.splitPercentage,resizerSize:t,snapThreshold:n,layout:o,currentNode:f,onLayoutChange:r,onResizeStart:()=>p(true),onResizeEnd:()=>p(false),parentLeft:M,parentTop:N,parentWidth:u,parentHeight:T}),z=L?{position:"absolute",left:`calc(var(--splitter-pos-${e.id}, ${R}%) - ${t/2}px)`,top:`calc(${w}% + ${t/2}px)`,width:`${t}px`,height:`calc(${E}% - ${t}px)`,cursor:a?"default":"col-resize",pointerEvents:a?"none":"auto",zIndex:10,userSelect:"none",touchAction:"none",boxSizing:"border-box"}:{position:"absolute",left:`calc(${R}% + ${t/2}px)`,top:`calc(var(--splitter-pos-${e.id}, ${w}%) - ${t/2}px)`,width:`calc(${x}% - ${t}px)`,height:`${t}px`,cursor:a?"default":"row-resize",pointerEvents:a?"none":"auto",zIndex:10,userSelect:"none",touchAction:"none",boxSizing:"border-box"};return jsx("div",{className:i.resizer||"","data-direction":h,"data-resizing":c||void 0,style:z,onPointerDown:C,role:"separator","aria-valuenow":f.splitPercentage,"aria-valuemin":5,"aria-valuemax":95})},mn=qt.memo(({paneId:e,renderPane:t})=>jsx(Fragment,{children:t(e)}),(e,t)=>e.paneId===t.paneId&&e.renderPane===t.renderPane),bn=({tree:e,resizerSize:t=4,snapThreshold:n})=>{let{layout:s,renderPane:o,activeId:r,dismissIntentId:i,setContainerRef:a,fullscreenPaneId:c,snapThreshold:p,locked:f,classNames:h}=re(),R=n!==void 0?n:p??8,w=e!==void 0?e:s,x=useRef(null),{panes:E,splitters:M}=useMemo(()=>w?fe(w):{panes:[],splitters:[]},[w]);if(!w)return null;let N=()=>jsxs(Fragment,{children:[E.map(u=>{let T=c===u.paneId;return jsx("div",{style:{position:"absolute",left:T?"0%":`var(--pane-left-${u.paneId}, ${u.left}%)`,top:T?"0%":`var(--pane-top-${u.paneId}, ${u.top}%)`,width:T?"100%":`var(--pane-width-${u.paneId}, ${u.width}%)`,height:T?"100%":`var(--pane-height-${u.paneId}, ${u.height}%)`,overflow:"hidden",zIndex:T?20:1,display:c&&!T?"none":"block",padding:T?"0px":`${t/2}px`,boxSizing:"border-box"},children:jsx(mn,{paneId:u.paneId,renderPane:o})},u.paneId)}),!c&&M.map(u=>jsx(gn,{splitter:u,resizerSize:t,snapThreshold:R,containerRef:x},u.id))]});if(e===void 0){let u=r!==null&&r===i,T=C=>{a(C),x.current=C;},L=`${h.dashboard||""} ${u&&h.dashboardDismissActive||""} ${f&&h.dashboardLocked||""}`.trim();return jsxs("div",{ref:T,className:L,style:{position:"relative",width:"100%",height:"100%",overflow:"hidden"},children:[N(),r!==null&&!f&&jsx(xt,{activeClassName:h.rootDropPreview??h.dropPreview})]})}return jsx("div",{ref:x,style:{position:"relative",width:"100%",height:"100%",overflow:"hidden"},children:N()})};var Ce=createContext(null);var xn={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"}},Tn={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"}},Se=({id:e,position:t,activeClassName:n})=>{let{setNodeRef:s,isOver:o}=useDroppable({id:e});return jsxs(Fragment,{children:[jsx("div",{ref:s,style:xn[t]}),o&&jsx("div",{className:n,style:Tn[t]})]})};var Nn=({id:e,children:t,style:n,locked:s=false})=>{let o=useRef(null),{layout:r,activeId:i,classNames:a,fullscreenPaneId:c,onFullscreenChange:p,locked:f}=re(),{removePane:h,updateMetadata:R,selectTab:w,removeTab:x}=De(),E=useContext(Re);if(!E)throw new Error("Pane must be used within a Zeugma provider");let{registerPortalTarget:M}=E,N=useMemo(()=>ne(r,e),[r,e]),u=N?.id??e,T=N?.tabs??[e],L=N?.activeTabId??e,C=N?.tabsMetadata,z=C?.[e],_=N?.locked??false,U=s||_,F=f||U,q=f||U,G=i!==null&&i!==e&&(!T.includes(i)||T.length>1)&&!q,{attributes:oe,listeners:K,setNodeRef:le}=useDraggable({id:e,disabled:F}),g=i!==null&&T.includes(i),Z=c===e,A=useCallback(()=>jsx("div",{ref:o,id:`zeugma-tab-target-${L}`,className:"zeugma-tab-content-wrapper",style:{height:"100%",width:"100%"}}),[L]);useEffect(()=>{let P=o.current;return M(L,P),()=>{M(L,null);}},[L,M]);let H=useMemo(()=>({isDragging:g,isFullscreen:Z,toggleFullscreen:()=>p?.(Z?null:e),remove:()=>{Z&&p?.(null),h(u);},metadata:z,updateMetadata:P=>{R(e,P);},locked:F,tabs:T,activeTabId:L,selectTab:P=>w(u,P),removeTab:P=>{Z&&P===L&&p?.(null),x(P);},tabsMetadata:C,updateTabMetadata:(P,y)=>{R(P,y);},renderActiveTab:A}),[g,Z,p,e,x,z,R,F,T,L,w,u,C,A]),D=useMemo(()=>F?{disabled:true}:{...K,...oe},[K,oe,F]),l=`${a.pane||""} ${U&&a.paneLocked||""}`.trim();return jsx(Ce.Provider,{value:D,children:jsxs("div",{ref:le,className:l,style:{position:"relative",width:"100%",height:"100%",...n},children:[t(H),G&&jsx("div",{style:{position:"absolute",top:0,left:0,right:0,bottom:0,zIndex:15,pointerEvents:"none"},children:["top","bottom","left","right"].map(P=>jsx(Se,{id:`drop-${P}-${e}`,position:P,activeClassName:a.dropPreview},P))}),i!==null&&i!==e&&q&&jsx("div",{style:{position:"absolute",top:0,left:0,right:0,bottom:0,zIndex:15,pointerEvents:"none"},children:jsx(Se,{id:`drop-locked-${e}`,position:"full",activeClassName:a.lockedPreview||""})})]})})};var In=({children:e,className:t,style:n})=>{let s=useContext(Ce);if(!s)throw new Error("<DragHandle> must be used inside a <Pane>");let{disabled:o,...r}=s;return jsx("div",{className:t,style:{cursor:o?"default":"grab",userSelect:o?"auto":"none",touchAction:o?"auto":"none",...n},...o?{}:r,children:e})};var Ct=createContext(void 0),An=()=>{let e=useContext(Ct);if(!e)throw new Error("useTabContext must be used within a Tab component");return e},St=({id:e,locked:t=false,children:n,className:s,style:o})=>{let{locked:r,classNames:i={},activeType:a}=re(),{overTabId:c}=Fe(),p=useContext(Qe),f=t||r||(p?.locked??false),{attributes:h,listeners:R,setNodeRef:w,isDragging:x}=useDraggable({id:`tab-header-${e}`,disabled:f}),{setNodeRef:E,isOver:M}=useDroppable({id:`tab-drop-${e}`,disabled:f||a==="pane"}),N=K=>{w(K),E(K);},u=M&&c===e,T=p?.tabs||[],L=T.indexOf(e),C=p?.activeTabId,_=L>0&&e!==C&&T[L-1]!==C?jsx("div",{className:i.tabSeparator}):null,U=p?p.activeTabId===e:false,F=p?.tabsMetadata?.[e],q=useCallback(()=>{p?.selectTab(e);},[p,e]),G=useCallback(()=>{p?.removeTab(e);},[p,e]),oe=useMemo(()=>({tabId:e,isActive:U,isDragging:x,isOver:u,metadata:F,locked:f,selectTab:q,removeTab:G}),[e,U,x,u,F,f,q,G]);return jsx(Ct.Provider,{value:oe,children:jsxs("div",{ref:N,className:s,style:{display:"inline-flex",position:"relative",cursor:f?"default":"grab",...o},...f?{}:R,...f?{}:h,children:[_,n({isDragging:x,isOver:u})]})})};var Qe=createContext(void 0);var Nt=(e,t)=>typeof e=="function"?e(t):e,Wn=({tabs:e,activeTabId:t,locked:n=false,tabsMetadata:s,selectTab:o,removeTab:r,renderTab:i,classNames:a,styles:c})=>{let{classNames:p={},activeType:f}=re(),{overTabId:h,overTabPosition:R}=Fe(),w=useMemo(()=>({tabs:e,activeTabId:t,locked:n,tabsMetadata:s,selectTab:o,removeTab:r}),[e,t,n,s,o,r]),x=ut(e,f,h,R);return jsx(Qe.Provider,{value:w,children:jsxs("div",{className:a?.container,style:{display:"flex",alignItems:"center",height:"100%",...c?.container},children:[e.map((E,M)=>{let N=s?.[E],u=Nt(a?.tab,E),T=Nt(c?.tab,E),L=M===x;return jsxs(qt.Fragment,{children:[L&&p.tabDropPreview&&jsx("div",{style:{position:"relative",height:"100%",width:0,zIndex:10},children:jsx("div",{className:p.tabDropPreview,style:{position:"absolute",top:0,bottom:0,transform:M===0?"none":"translateX(-50%)"}})}),jsx(St,{id:E,locked:n,className:u,style:T,children:({isDragging:C,isOver:z})=>i({tabId:E,activeTabId:t,isDragging:C,isOver:z,metadata:N,selectTab:o,removeTab:r})})]},E)}),x===e.length&&p.tabDropPreview&&jsx("div",{style:{position:"relative",height:"100%",width:0,zIndex:10},children:jsx("div",{className:p.tabDropPreview,style:{position:"absolute",top:0,bottom:0,transform:"translateX(-100%)"}})})]})})};var Jn=({id:e,children:t,style:n,locked:s=false})=>{let o=useRef(null),{layout:r,activeId:i,classNames:a,fullscreenPaneId:c,onFullscreenChange:p,locked:f}=re(),{removePane:h,updateMetadata:R}=De(),w=useContext(Re);if(!w)throw new Error("Widget must be used within a Zeugma provider");let{registerPortalTarget:x}=w,E=useMemo(()=>{if(!r)return null;if(r.type!=="split"&&r.id===e)return r;function g(Z){return Z?Z.type!=="split"&&Z.id===e?Z:Z.type==="split"?g(Z.first)??g(Z.second):null:null}return g(r)},[r,e]),M=E?.locked??false,N=s||M,u=f||N,T=f||N,L=i!==null&&i!==e&&!T,{attributes:C,listeners:z,setNodeRef:_}=useDraggable({id:e,disabled:u}),U=i===e,F=c===e,q=useCallback(()=>jsx("div",{ref:o,id:`zeugma-widget-target-${e}`,className:"zeugma-widget-content-wrapper",style:{height:"100%",width:"100%"}}),[e]);useEffect(()=>{let g=o.current;return x(e,g),()=>{x(e,null);}},[e,x]);let G=E&&"metadata"in E?E.metadata:void 0,oe=useMemo(()=>({isDragging:U,isFullscreen:F,toggleFullscreen:()=>p?.(F?null:e),remove:()=>{F&&p?.(null),h(e);},metadata:G,updateMetadata:g=>{R(e,g);},locked:u,renderActiveWidget:q}),[U,F,p,e,h,G,R,u,q]),K=useMemo(()=>u?{disabled:true}:{...z,...C},[z,C,u]),le=`${a.pane||""} ${N&&a.paneLocked||""}`.trim();return jsx(Ce.Provider,{value:K,children:jsxs("div",{ref:_,className:le,style:{position:"relative",width:"100%",height:"100%",...n},children:[t(oe),L&&jsx("div",{style:{position:"absolute",top:0,left:0,right:0,bottom:0,zIndex:15,pointerEvents:"none"},children:["top","bottom","left","right"].map(g=>jsx(Se,{id:`drop-${g}-${e}`,position:g,activeClassName:a.dropPreview},g))}),i!==null&&i!==e&&T&&jsx("div",{style:{position:"absolute",top:0,left:0,right:0,bottom:0,zIndex:15,pointerEvents:"none"},children:jsx(Se,{id:`drop-locked-${e}`,position:"full",activeClassName:a.lockedPreview||""})})]})})};export{$t as DEFAULT_DRAG_ACTIVATION_DISTANCE,Qn as DEFAULT_RESIZER_SIZE,kt as DEFAULT_SNAP_THRESHOLD,In as DragHandle,Nn as Pane,bn as PaneTree,Re as PortalRegistryContext,Wn as Tabs,Jn as Widget,en as Zeugma,Ye as ZeugmaActionsContext,Je as ZeugmaDragContext,Xe as ZeugmaStateContext,pt as createDragSession,Ze as safeJsonStringify,Ge as useResizer,An as useTabContext,zt as useZeugma,De as useZeugmaActions,At as useZeugmaContext,Fe as useZeugmaDrag,re as useZeugmaState};//# sourceMappingURL=index.js.map
7
7
  //# sourceMappingURL=index.js.map