react-zeugma 5.2.1 → 5.3.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/dist/index.d.cts CHANGED
@@ -171,4 +171,30 @@ interface TabProps {
171
171
  }
172
172
  declare const Tab: React__default.FC<TabProps>;
173
173
 
174
- export { DEFAULT_DRAG_ACTIVATION_DISTANCE, DEFAULT_RESIZER_SIZE, DEFAULT_SNAP_THRESHOLD, DragHandle, type DragHandleProps, type DragSessionConfig, Pane, type PaneProps, type PaneRenderProps, PaneTree, PortalRegistryContext, PortalRegistryValue, ResizableContainer, type ResizableContainerProps, SplitDirection, SplitNode, Tab, type TabProps, type TabRenderProps, TreeNode, UseZeugmaOptions, Zeugma, ZeugmaActionsContext, ZeugmaActionsValue, ZeugmaContextValue, ZeugmaController, ZeugmaInternalStateValue, ZeugmaProps, ZeugmaStateContext, ZeugmaStateValue, createDragSession, safeJsonStringify, useResizer, useZeugma, useZeugmaActions, useZeugmaContext, useZeugmaState };
174
+ interface TabsListRenderProps extends TabRenderProps {
175
+ /** The unique ID of the individual tab. */
176
+ tabId: string;
177
+ /** Whether the tab is currently active. */
178
+ isActive: boolean;
179
+ /** The index position of the tab in the array. */
180
+ index: number;
181
+ /** Whether this is the last tab in the list. */
182
+ isLast: boolean;
183
+ /** Pre-bound action to select this specific tab. */
184
+ select: () => void;
185
+ /** Pre-bound action to remove/close this specific tab. */
186
+ remove: () => void;
187
+ /** The custom metadata associated with this tab. */
188
+ metadata: Record<string, unknown> | undefined;
189
+ }
190
+ interface TabsListProps {
191
+ /** Render prop function to render each tab's visual content. */
192
+ children: (props: TabsListRenderProps) => React__default.ReactNode;
193
+ /** Custom CSS class applied to the individual tab wrappers. */
194
+ className?: string;
195
+ /** Custom inline CSS style applied to the individual tab wrappers. */
196
+ style?: React__default.CSSProperties;
197
+ }
198
+ declare const TabsList: React__default.FC<TabsListProps>;
199
+
200
+ export { DEFAULT_DRAG_ACTIVATION_DISTANCE, DEFAULT_RESIZER_SIZE, DEFAULT_SNAP_THRESHOLD, DragHandle, type DragHandleProps, type DragSessionConfig, Pane, type PaneProps, type PaneRenderProps, PaneTree, PortalRegistryContext, PortalRegistryValue, ResizableContainer, type ResizableContainerProps, SplitDirection, SplitNode, Tab, type TabProps, type TabRenderProps, TabsList, type TabsListProps, type TabsListRenderProps, TreeNode, UseZeugmaOptions, Zeugma, ZeugmaActionsContext, ZeugmaActionsValue, ZeugmaContextValue, ZeugmaController, ZeugmaInternalStateValue, ZeugmaProps, ZeugmaStateContext, ZeugmaStateValue, createDragSession, safeJsonStringify, useResizer, useZeugma, useZeugmaActions, useZeugmaContext, useZeugmaState };
package/dist/index.d.ts CHANGED
@@ -171,4 +171,30 @@ interface TabProps {
171
171
  }
172
172
  declare const Tab: React__default.FC<TabProps>;
173
173
 
174
- export { DEFAULT_DRAG_ACTIVATION_DISTANCE, DEFAULT_RESIZER_SIZE, DEFAULT_SNAP_THRESHOLD, DragHandle, type DragHandleProps, type DragSessionConfig, Pane, type PaneProps, type PaneRenderProps, PaneTree, PortalRegistryContext, PortalRegistryValue, ResizableContainer, type ResizableContainerProps, SplitDirection, SplitNode, Tab, type TabProps, type TabRenderProps, TreeNode, UseZeugmaOptions, Zeugma, ZeugmaActionsContext, ZeugmaActionsValue, ZeugmaContextValue, ZeugmaController, ZeugmaInternalStateValue, ZeugmaProps, ZeugmaStateContext, ZeugmaStateValue, createDragSession, safeJsonStringify, useResizer, useZeugma, useZeugmaActions, useZeugmaContext, useZeugmaState };
174
+ interface TabsListRenderProps extends TabRenderProps {
175
+ /** The unique ID of the individual tab. */
176
+ tabId: string;
177
+ /** Whether the tab is currently active. */
178
+ isActive: boolean;
179
+ /** The index position of the tab in the array. */
180
+ index: number;
181
+ /** Whether this is the last tab in the list. */
182
+ isLast: boolean;
183
+ /** Pre-bound action to select this specific tab. */
184
+ select: () => void;
185
+ /** Pre-bound action to remove/close this specific tab. */
186
+ remove: () => void;
187
+ /** The custom metadata associated with this tab. */
188
+ metadata: Record<string, unknown> | undefined;
189
+ }
190
+ interface TabsListProps {
191
+ /** Render prop function to render each tab's visual content. */
192
+ children: (props: TabsListRenderProps) => React__default.ReactNode;
193
+ /** Custom CSS class applied to the individual tab wrappers. */
194
+ className?: string;
195
+ /** Custom inline CSS style applied to the individual tab wrappers. */
196
+ style?: React__default.CSSProperties;
197
+ }
198
+ declare const TabsList: React__default.FC<TabsListProps>;
199
+
200
+ export { DEFAULT_DRAG_ACTIVATION_DISTANCE, DEFAULT_RESIZER_SIZE, DEFAULT_SNAP_THRESHOLD, DragHandle, type DragHandleProps, type DragSessionConfig, Pane, type PaneProps, type PaneRenderProps, PaneTree, PortalRegistryContext, PortalRegistryValue, ResizableContainer, type ResizableContainerProps, SplitDirection, SplitNode, Tab, type TabProps, type TabRenderProps, TabsList, type TabsListProps, type TabsListRenderProps, TreeNode, UseZeugmaOptions, Zeugma, ZeugmaActionsContext, ZeugmaActionsValue, ZeugmaContextValue, ZeugmaController, ZeugmaInternalStateValue, ZeugmaProps, ZeugmaStateContext, ZeugmaStateValue, createDragSession, safeJsonStringify, useResizer, useZeugma, useZeugmaActions, useZeugmaContext, useZeugmaState };
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
- import Wt,{createContext,useState,useRef,useCallback,useEffect,useContext,useMemo}from'react';import {DndContext,useDraggable,useDroppable,useSensors,useSensor,pointerWithin,closestCenter,PointerSensor,TouchSensor}from'@dnd-kit/core';import {jsx,Fragment,jsxs}from'react/jsx-runtime';import {createPortal}from'react-dom';function qe(e){let t=useRef(null);return useEffect(()=>{if(!e){t.current=null;return}let n=r=>{t.current={x:r.clientX,y:r.clientY};},s=r=>{let o=r.touches[0]||r.changedTouches[0];o&&(t.current={x:o.clientX,y:o.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 Je(e){useEffect(()=>(e?document.body.style.setProperty("cursor","not-allowed","important"):document.body.style.removeProperty("cursor"),()=>{document.body.style.removeProperty("cursor");}),[e]);}function Ge(){let[e,t]=useState({}),n=useRef(true);useEffect(()=>(n.current=true,()=>{n.current=false;}),[]);let s=useCallback((r,o)=>{n.current&&t(i=>i[r]===o?i:{...i,[r]:o});},[]);return {portalTargets:e,registerPortalTarget:s}}var yt=8,xt=8,Sn=4;function de(){return "pane-"+Math.random().toString(36).substring(2,11)}function me(e,t){if(e===null)return null;if(e.type==="pane")return e.id===t?null:e;let n=me(e.first,t),s=me(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==="pane"){if(e.tabs.includes(t)){let r=e.tabs.filter(a=>a!==t);if(r.length===0)return null;let o=e.activeTabId;e.activeTabId===t&&(o=r[0]);let i={...e.tabsMetadata};return delete i[t],{...e,tabs:r,activeTabId:o,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,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 o=typeof r=="string"?{type:"pane",id:de(),tabs:[r],activeTabId:r}:r,i=s==="left"||s==="top";return {type:"split",direction:n,first:i?o:e,second:i?e:o,splitPercentage:50}}return e}return {...e,first:Pe(e.first,t,n,s,r)||e.first,second:Pe(e.second,t,n,s,r)||e.second}}function Ke(e,t,n){if(e===null)return {type:"pane",id:de(),tabs:[t],activeTabId:t,tabsMetadata:n?{[t]:n}:void 0};function s(r,o){return r.type==="pane"?{type:"split",direction:o==="row"?"column":"row",splitPercentage:50,first:r,second:{type:"pane",id:de(),tabs:[t],activeTabId:t,tabsMetadata:n?{[t]:n}:void 0}}:{...r,second:s(r.second,r.direction)}}return s(e,null)}function ge(e,t,n){return e===null?null:e===t?{...e,splitPercentage:n}:e.type==="split"?{...e,first:ge(e.first,t,n)||e.first,second:ge(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 Y(e,t){return e===null?null:e.type==="pane"?e.tabs.includes(t)?e:null:Y(e.first,t)??Y(e.second,t)}function je(e,t){let n=Y(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 Se(e,t,n){if(e===null)return null;if(e.type==="pane"){if(e.tabs.includes(t)){let s=e.tabsMetadata||{},r=s[t],o=n(r),i={...s};return o===void 0?delete i[t]:i[t]=o,{...e,tabsMetadata:Object.keys(i).length>0?i:void 0}}return e}return {...e,first:Se(e.first,t,n)??e.first,second:Se(e.second,t,n)??e.second}}function De(e,t,n,s){if(e===null)return null;if(e.type==="pane"){if(e.id===t){let r=[...e.tabs];r.includes(n)||r.push(n);let o=e.tabsMetadata;return s&&(o={...e.tabsMetadata,[n]:s}),{...e,tabs:r,activeTabId:n,tabsMetadata:o}}return e}return {...e,first:De(e.first,t,n,s)||e.first,second:De(e.second,t,n,s)||e.second}}function Ce(e,t,n){if(e===null)return null;if(e.type==="pane"){if(e.id===t){if(n===false){let{locked:s,...r}=e;return r}return {...e,locked:n}}return e}return {...e,first:Ce(e.first,t,n)??e.first,second:Ce(e.second,t,n)??e.second}}function we(e,t,n){return e===null?null:e.type==="pane"?e.id===t?{...e,activeTabId:n}:e:{...e,first:we(e.first,t,n)??e.first,second:we(e.second,t,n)??e.second}}function Qe(e,t,n){if(e===null)return null;let r=Y(e,t)?.tabsMetadata?.[t],o=pe(e,t);if(o===null)return {type:"pane",id:de(),tabs:[t],activeTabId:t,tabsMetadata:r?{[t]:r}:void 0};function i(a){if(a.type==="pane"){if(a.id===n){let u=[...a.tabs];u.includes(t)||u.push(t);let f={...a.tabsMetadata};return r&&(f[t]=r),{...a,tabs:u,activeTabId:t,tabsMetadata:Object.keys(f).length>0?f:void 0}}return a}return {...a,first:i(a.first),second:i(a.second)}}return i(o)}function et(e,t,n,s="before"){if(e===null)return null;let o=Y(e,t)?.tabsMetadata?.[t],i=pe(e,t);if(i===null)return {type:"pane",id:de(),tabs:[t],activeTabId:t,tabsMetadata:o?{[t]:o}:void 0};function a(u){if(u.type==="pane"){if(u.tabs.includes(n)){let C=[...u.tabs].filter(x=>x!==t),g=C.indexOf(n);g<0&&(g=0),s==="after"&&(g+=1),C.splice(g,0,t);let v={...u.tabsMetadata};return o&&(v[t]=o),{...u,tabs:C,activeTabId:t,tabsMetadata:Object.keys(v).length>0?v:void 0}}return u}return {...u,first:a(u.first),second:a(u.second)}}return a(i)}function ue(e,t=0,n=0,s=100,r=100,o="root"){if(e===null)return {panes:[],splitters:[]};if(e.type==="pane")return {panes:[{paneId:e.id,left:t,top:n,width:s,height:r,node:e}],splitters:[]};let{direction:i,splitPercentage:a,first:u,second:f}=e,g={id:`splitter-${o}-${i}`,currentNode:e,direction:i,left:i==="row"?t+s*(a/100):t,top:i==="column"?n+r*(a/100):n,width:i==="row"?0:s,height:i==="column"?0:r,parentLeft:t,parentTop:n,parentWidth:s,parentHeight:r},v={panes:[],splitters:[]},x={panes:[],splitters:[]};if(i==="row"){let R=s*(a/100);v=ue(u,t,n,R,r,`${o}-L`),x=ue(f,t+R,n,s-R,r,`${o}-R`);}else {let R=r*(a/100);v=ue(u,t,n,s,R,`${o}-T`),x=ue(f,t,n+R,s,r-R,`${o}-B`);}return {panes:[...v.panes,...x.panes],splitters:[g,...v.splitters,...x.splitters]}}function xe(e){try{return JSON.stringify(e)}catch{return ""}}function Rt(e){let{initialLayout:t,layout:n,onChange:s,fullscreenPaneId:r,onFullscreenChange:o,locked:i=false,dragActivationDistance:a=8,snapThreshold:u=8,minSplitPercentage:f=5,maxSplitPercentage:C=95,enableDragToDismiss:g=false,dismissThreshold:v=60,onRemove:x,onDragStart:R,onDragEnd:$,onResizeStart:p,onResize:S,onResizeEnd:m,onDismissIntentChange:D}=e,[P,M]=useState(()=>n!==void 0?n:t??null),[H,W]=useState(()=>xe(n!==void 0?n:null)),[q,Z]=useState(r||null),[G,V]=useState(i),[J,Q]=useState(null),[ee,d]=useState(null),[T,k]=useState(null),E=useRef(null),y=useCallback(c=>{E.current=c;},[]),l=useRef(P);l.current=P;let I=useRef(s);I.current=s;let U=useRef(o);U.current=o;let h=useCallback(c=>{Z(c),U.current?.(c);},[]);if(useEffect(()=>{V(i);},[i]),useEffect(()=>{r!==void 0&&Z(r);},[r]),n!==void 0){let c=xe(n);c!==H&&(W(c),M(n));}let b=useCallback(c=>(...w)=>{let A=l.current,B=c(A,...w);xe(A)!==xe(B)&&(l.current=B,M(B),I.current?.(B));},[]),O=useCallback(b((c,w)=>typeof w=="function"?w(c):w),[b]),K=useCallback(b((c,w)=>me(c,w)),[b]),oe=useCallback(b((c,w,A)=>Ke(c,w,A)),[b]),N=useCallback(b((c,w,A,B)=>{let ce=j(c,w)??Y(c,w);if(!ce)return c;let ye=Y(c,A),Ae=ye&&ye.id===ce.id?c:pe(c,A)??c;return De(Ae,ce.id,A,B)}),[b]),L=useCallback(b((c,w,A,B,ce)=>{let ye=j(c,w)??Y(c,w);if(!ye)return c;let Ye=j(c,ce)??Y(c,ce)??{type:"pane",id:ce,tabs:[ce],activeTabId:ce},Ae=me(c,ce);return Pe(Ae,ye.id,A,B,Ye)}),[b]),z=useCallback(b((c,w,A)=>ge(c,w,A)),[b]),se=useCallback(b((c,w,A)=>Se(c,w,A)),[b]),ne=useCallback(b((c,w,A)=>{let B=j(c,w)??Y(c,w);return B?Ce(c,B.id,A):c}),[b]),ie=useCallback(b((c,w,A)=>{let B=j(c,w)??Y(c,w);return B?we(c,B.id,A):c}),[b]),ae=useCallback(b((c,w,A)=>{let B=j(c,A)??Y(c,A);return B?Qe(c,w,B.id):c}),[b]),F=useCallback(b((c,w,A,B)=>et(c,w,A,B)),[b]),te=useCallback(b((c,w)=>pe(c,w)),[b]),re=useCallback(c=>j(l.current,c),[]),he=useCallback(c=>Y(l.current,c),[]),ht=useCallback(c=>je(l.current,c),[]);return {layout:P,setLayout:O,fullscreenPaneId:q,setFullscreenPaneId:h,locked:G,setLocked:V,activeId:J,setActiveId:Q,activeType:ee,setActiveType:d,dismissIntentId:T,setDismissIntentId:k,containerRef:E,setContainerRef:y,dragActivationDistance:a,snapThreshold:u,minSplitPercentage:f,maxSplitPercentage:C,enableDragToDismiss:g,dismissThreshold:v,onRemove:x,onDragStart:R,onDragEnd:$,onResizeStart:p,onResize:S,onResizeEnd:m,onDismissIntentChange:D,removePane:K,addPane:oe,addTab:N,splitPane:L,updateSplitPercentage:z,updateTabMetadata:se,updatePaneLock:ne,selectTab:ie,mergeTab:ae,moveTab:F,removeTab:te,findPaneById:re,findPaneContainingTab:he,findTabById:ht}}function Ne({cursor:e,resizerEl:t,onMove:n,onEnd:s}){document.body.classList.add("zeugma-resizing");let r=document.createElement("style");r.id="zeugma-global-cursor-style",r.textContent=`
1
+ import jt,{createContext,useCallback,useContext,useState,useRef,useEffect,useMemo}from'react';import {useDraggable,useDroppable,DndContext,useSensors,useSensor,pointerWithin,closestCenter,PointerSensor,TouchSensor}from'@dnd-kit/core';import {jsx,Fragment,jsxs}from'react/jsx-runtime';import {createPortal}from'react-dom';function Qe(e){let t=useRef(null);return useEffect(()=>{if(!e){t.current=null;return}let n=r=>{t.current={x:r.clientX,y:r.clientY};},s=r=>{let o=r.touches[0]||r.changedTouches[0];o&&(t.current={x:o.clientX,y:o.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 je(e){useEffect(()=>(e?document.body.style.setProperty("cursor","not-allowed","important"):document.body.style.removeProperty("cursor"),()=>{document.body.style.removeProperty("cursor");}),[e]);}function et(){let[e,t]=useState({}),n=useRef(true);useEffect(()=>(n.current=true,()=>{n.current=false;}),[]);let s=useCallback((r,o)=>{n.current&&t(a=>a[r]===o?a:{...a,[r]:o});},[]);return {portalTargets:e,registerPortalTarget:s}}var It=8,Mt=8,$n=4;function de(){return "pane-"+Math.random().toString(36).substring(2,11)}function me(e,t){if(e===null)return null;if(e.type==="pane")return e.id===t?null:e;let n=me(e.first,t),s=me(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==="pane"){if(e.tabs.includes(t)){let r=e.tabs.filter(i=>i!==t);if(r.length===0)return null;let o=e.activeTabId;e.activeTabId===t&&(o=r[0]);let a={...e.tabsMetadata};return delete a[t],{...e,tabs:r,activeTabId:o,tabsMetadata:Object.keys(a).length>0?a: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,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 o=typeof r=="string"?{type:"pane",id:de(),tabs:[r],activeTabId:r}:r,a=s==="left"||s==="top";return {type:"split",direction:n,first:a?o:e,second:a?e:o,splitPercentage:50}}return e}return {...e,first:Pe(e.first,t,n,s,r)||e.first,second:Pe(e.second,t,n,s,r)||e.second}}function tt(e,t,n){if(e===null)return {type:"pane",id:de(),tabs:[t],activeTabId:t,tabsMetadata:n?{[t]:n}:void 0};function s(r,o){return r.type==="pane"?{type:"split",direction:o==="row"?"column":"row",splitPercentage:50,first:r,second:{type:"pane",id:de(),tabs:[t],activeTabId:t,tabsMetadata:n?{[t]:n}:void 0}}:{...r,second:s(r.second,r.direction)}}return s(e,null)}function ge(e,t,n){return e===null?null:e===t?{...e,splitPercentage:n}:e.type==="split"?{...e,first:ge(e.first,t,n)||e.first,second:ge(e.second,t,n)||e.second}:e}function Q(e,t){return e===null?null:e.type==="pane"?e.id===t?e:null:Q(e.first,t)??Q(e.second,t)}function Y(e,t){return e===null?null:e.type==="pane"?e.tabs.includes(t)?e:null:Y(e.first,t)??Y(e.second,t)}function nt(e,t){let n=Y(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 De(e,t,n){if(e===null)return null;if(e.type==="pane"){if(e.tabs.includes(t)){let s=e.tabsMetadata||{},r=s[t],o=n(r),a={...s};return o===void 0?delete a[t]:a[t]=o,{...e,tabsMetadata:Object.keys(a).length>0?a:void 0}}return e}return {...e,first:De(e.first,t,n)??e.first,second:De(e.second,t,n)??e.second}}function Ce(e,t,n,s){if(e===null)return null;if(e.type==="pane"){if(e.id===t){let r=[...e.tabs];r.includes(n)||r.push(n);let o=e.tabsMetadata;return s&&(o={...e.tabsMetadata,[n]:s}),{...e,tabs:r,activeTabId:n,tabsMetadata:o}}return e}return {...e,first:Ce(e.first,t,n,s)||e.first,second:Ce(e.second,t,n,s)||e.second}}function we(e,t,n){if(e===null)return null;if(e.type==="pane"){if(e.id===t){if(n===false){let{locked:s,...r}=e;return r}return {...e,locked:n}}return e}return {...e,first:we(e.first,t,n)??e.first,second:we(e.second,t,n)??e.second}}function Ne(e,t,n){return e===null?null:e.type==="pane"?e.id===t?{...e,activeTabId:n}:e:{...e,first:Ne(e.first,t,n)??e.first,second:Ne(e.second,t,n)??e.second}}function rt(e,t,n){if(e===null)return null;let r=Y(e,t)?.tabsMetadata?.[t],o=pe(e,t);if(o===null)return {type:"pane",id:de(),tabs:[t],activeTabId:t,tabsMetadata:r?{[t]:r}:void 0};function a(i){if(i.type==="pane"){if(i.id===n){let u=[...i.tabs];u.includes(t)||u.push(t);let f={...i.tabsMetadata};return r&&(f[t]=r),{...i,tabs:u,activeTabId:t,tabsMetadata:Object.keys(f).length>0?f:void 0}}return i}return {...i,first:a(i.first),second:a(i.second)}}return a(o)}function ot(e,t,n,s="before"){if(e===null)return null;let o=Y(e,t)?.tabsMetadata?.[t],a=pe(e,t);if(a===null)return {type:"pane",id:de(),tabs:[t],activeTabId:t,tabsMetadata:o?{[t]:o}:void 0};function i(u){if(u.type==="pane"){if(u.tabs.includes(n)){let g=[...u.tabs].filter(P=>P!==t),p=g.indexOf(n);p<0&&(p=0),s==="after"&&(p+=1),g.splice(p,0,t);let b={...u.tabsMetadata};return o&&(b[t]=o),{...u,tabs:g,activeTabId:t,tabsMetadata:Object.keys(b).length>0?b:void 0}}return u}return {...u,first:i(u.first),second:i(u.second)}}return i(a)}function ue(e,t=0,n=0,s=100,r=100,o="root"){if(e===null)return {panes:[],splitters:[]};if(e.type==="pane")return {panes:[{paneId:e.id,left:t,top:n,width:s,height:r,node:e}],splitters:[]};let{direction:a,splitPercentage:i,first:u,second:f}=e,p={id:`splitter-${o}-${a}`,currentNode:e,direction:a,left:a==="row"?t+s*(i/100):t,top:a==="column"?n+r*(i/100):n,width:a==="row"?0:s,height:a==="column"?0:r,parentLeft:t,parentTop:n,parentWidth:s,parentHeight:r},b={panes:[],splitters:[]},P={panes:[],splitters:[]};if(a==="row"){let T=s*(i/100);b=ue(u,t,n,T,r,`${o}-L`),P=ue(f,t+T,n,s-T,r,`${o}-R`);}else {let T=r*(i/100);b=ue(u,t,n,s,T,`${o}-T`),P=ue(f,t,n+T,s,r-T,`${o}-B`);}return {panes:[...b.panes,...P.panes],splitters:[p,...b.splitters,...P.splitters]}}function Re(e){try{return JSON.stringify(e)}catch{return ""}}function zt(e){let{initialLayout:t,layout:n,onChange:s,fullscreenPaneId:r,onFullscreenChange:o,locked:a=false,dragActivationDistance:i=8,snapThreshold:u=8,minSplitPercentage:f=5,maxSplitPercentage:g=95,enableDragToDismiss:p=false,dismissThreshold:b=60,onRemove:P,onDragStart:T,onDragEnd:$,onResizeStart:m,onResize:L,onResizeEnd:h,onDismissIntentChange:N}=e,[R,I]=useState(()=>n!==void 0?n:t??null),[A,W]=useState(()=>Re(n!==void 0?n:null)),[q,k]=useState(r||null),[G,V]=useState(a),[J,j]=useState(null),[ee,d]=useState(null),[x,Z]=useState(null),D=useRef(null),S=useCallback(c=>{D.current=c;},[]),l=useRef(R);l.current=R;let E=useRef(s);E.current=s;let U=useRef(o);U.current=o;let y=useCallback(c=>{k(c),U.current?.(c);},[]);if(useEffect(()=>{V(a);},[a]),useEffect(()=>{r!==void 0&&k(r);},[r]),n!==void 0){let c=Re(n);c!==A&&(W(c),I(n));}let v=useCallback(c=>(...C)=>{let H=l.current,B=c(H,...C);Re(H)!==Re(B)&&(l.current=B,I(B),E.current?.(B));},[]),O=useCallback(v((c,C)=>typeof C=="function"?C(c):C),[v]),K=useCallback(v((c,C)=>me(c,C)),[v]),se=useCallback(v((c,C,H)=>tt(c,C,H)),[v]),w=useCallback(v((c,C,H,B)=>{let ce=Q(c,C)??Y(c,C);if(!ce)return c;let ye=Y(c,H),Oe=ye&&ye.id===ce.id?c:pe(c,H)??c;return Ce(Oe,ce.id,H,B)}),[v]),M=useCallback(v((c,C,H,B,ce)=>{let ye=Q(c,C)??Y(c,C);if(!ye)return c;let Ge=Q(c,ce)??Y(c,ce)??{type:"pane",id:ce,tabs:[ce],activeTabId:ce},Oe=me(c,ce);return Pe(Oe,ye.id,H,B,Ge)}),[v]),z=useCallback(v((c,C,H)=>ge(c,C,H)),[v]),ae=useCallback(v((c,C,H)=>De(c,C,H)),[v]),ne=useCallback(v((c,C,H)=>{let B=Q(c,C)??Y(c,C);return B?we(c,B.id,H):c}),[v]),ie=useCallback(v((c,C,H)=>{let B=Q(c,C)??Y(c,C);return B?Ne(c,B.id,H):c}),[v]),le=useCallback(v((c,C,H)=>{let B=Q(c,H)??Y(c,H);return B?rt(c,C,B.id):c}),[v]),F=useCallback(v((c,C,H,B)=>ot(c,C,H,B)),[v]),te=useCallback(v((c,C)=>pe(c,C)),[v]),re=useCallback(c=>Q(l.current,c),[]),he=useCallback(c=>Y(l.current,c),[]),Nt=useCallback(c=>nt(l.current,c),[]);return {layout:R,setLayout:O,fullscreenPaneId:q,setFullscreenPaneId:y,locked:G,setLocked:V,activeId:J,setActiveId:j,activeType:ee,setActiveType:d,dismissIntentId:x,setDismissIntentId:Z,containerRef:D,setContainerRef:S,dragActivationDistance:i,snapThreshold:u,minSplitPercentage:f,maxSplitPercentage:g,enableDragToDismiss:p,dismissThreshold:b,onRemove:P,onDragStart:T,onDragEnd:$,onResizeStart:m,onResize:L,onResizeEnd:h,onDismissIntentChange:N,removePane:K,addPane:se,addTab:w,splitPane:M,updateSplitPercentage:z,updateTabMetadata:ae,updatePaneLock:ne,selectTab:ie,mergeTab:le,moveTab:F,removeTab:te,findPaneById:re,findPaneContainingTab:he,findTabById:Nt}}function Le({cursor:e,resizerEl:t,onMove:n,onEnd:s}){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 o=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",o),document.removeEventListener("pointerup",i),s();};document.addEventListener("pointermove",o),document.addEventListener("pointerup",i);}var Ve=createContext(void 0),Be=createContext(void 0),Ie=createContext(void 0),le=()=>{let e=useContext(Ve);if(!e)throw new Error("useZeugmaState must be used within a Zeugma provider");return e},Me=()=>{let e=useContext(Be);if(!e)throw new Error("useZeugmaActions must be used within a Zeugma provider");return e};var St=()=>{let e=le(),t=Me();return {...e,...t}};var Le=class extends PointerSensor{static activators=[{eventName:"onPointerDown",handler:({nativeEvent:t})=>!t.target?.closest(".drag-cancel")}]},ze=class extends TouchSensor{static activators=[{eventName:"onTouchStart",handler:({nativeEvent:t})=>!t.target?.closest(".drag-cancel")}]};function $e(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 ot(e){let{layout:t,setLayout:n,activeId:s,setActiveId:r,setActiveType:o,dismissIntentId:i,setDismissIntentId:a,setOverTabId:u,setOverTabPosition:f,containerRef:C,dragActivationDistance:g,enableDragToDismiss:v,dismissThreshold:x,onRemove:R,onDragStart:$,onDragEnd:p,onDismissIntentChange:S,removeTab:m,moveTab:D,selectTab:P}=e,M=useRef(null),H=qe(s),[W,q]=useState(false);Je(W);let Z=useSensors(useSensor(Le,{activationConstraint:{distance:g}}),useSensor(ze,{activationConstraint:{delay:250,tolerance:5}})),G=useCallback(d=>{let T=pointerWithin(d);if(T.length>0)return T;if(d.active.id.toString().startsWith("tab-header-")){let E=d.droppableContainers.filter(y=>y.id.toString().startsWith("tab-drop-"));return closestCenter({...d,droppableContainers:E})}return []},[]);return {sensors:Z,collisionDetection:G,onDragStart:d=>{let T=d.active.id.toString(),k=T.startsWith("tab-header-"),E=k?T.substring(11):T;r(E),o(k?"tab":"pane"),u(null),f(null);let y=d.activatorEvent;if(H.current=$e(y),v&&C.current?M.current=C.current.getBoundingClientRect():M.current=null,k){let l=Y(t,E);l&&P(l.id,E);}$&&$(E);},onDragMove:d=>{let{over:T}=d,k=T?.id.toString()||"",E=k.startsWith("drop-locked-");q(E);let y=k.match(/^tab-drop-(.+)$/);if(y&&T){let[,N]=y,L=d.active.id.toString();if((L.startsWith("tab-header-")?L.substring(11):L)!==N){let ne="before",ie=T.rect,ae=d.activatorEvent,F=null;if(H.current)F=H.current.x;else {let te=$e(ae);te&&(F=te.x+d.delta.x);}if(F!==null){let te=ie.left+ie.width/2;F>te&&(ne="after");}u(N),f(ne);}else u(null),f(null);}else u(null),f(null);if(!v)return;let l=d.active.id.toString(),U=l.startsWith("tab-header-")?l.substring(11):l,h=M.current;if(!h){i!==null&&(a(null),S?.(null));return}let b=d.activatorEvent,_=null,O=null;if(H.current)_=H.current.x,O=H.current.y;else {let N=$e(b);N&&(_=N.x+d.delta.x,O=N.y+d.delta.y);}let K=0;if(_!==null&&O!==null){let N=0,L=0;_<h.left?N=h.left-_:_>h.right&&(N=_-h.right),O<h.top?L=h.top-O:O>h.bottom&&(L=O-h.bottom),K=Math.sqrt(N*N+L*L);}else {let N=d.active.rect.current.translated;if(N){let L=N.left+N.width/2,z=N.top+N.height/2,se=0,ne=0;L<h.left?se=h.left-L:L>h.right&&(se=L-h.right),z<h.top?ne=h.top-z:z>h.bottom&&(ne=z-h.bottom),K=Math.sqrt(se*se+ne*ne);}}K>x?i!==U&&(a(U),S?.(U)):i!==null&&(a(null),S?.(null));},onDragEnd:d=>{r(null),o(null),q(false),u(null),f(null);let{active:T,over:k}=d,E=T.id.toString(),y=E.startsWith("tab-header-"),l=y?E.substring(11):E,I=v&&i===l;if(a(null),S?.(null),M.current=null,I){R?R(l):m(l),p&&p(l,null,null);return}if(!k){p&&p(l,null,null);return}let U=k.id.toString();if(U.startsWith("drop-locked-")){p&&p(l,null,null);return}let h=U.match(/^tab-drop-(.+)$/);if(h){let[,ie]=h;if(l!==ie){let ae="before",F=k.rect,te=d.activatorEvent,re=null;if(H.current)re=H.current.x;else {let he=$e(te);he&&(re=he.x+d.delta.x);}if(re!==null){let he=F.left+F.width/2;re>he&&(ae="after");}D(l,ie,ae),p&&p(l,ie,{type:"move",position:"center"});}else p&&p(l,null,null);return}let b=U.match(/^drop-(left|right|top|bottom)-(.+)$/);if(!b){p&&p(l,null,null);return}let[,_,O]=b,K=y?Y(t,l):j(t,l),oe=K&&K.id===O,N=K&&K.tabs.length===1;if(l===O||oe&&N){p&&p(l,null,null);return}let L=_==="left"||_==="right"?"row":"column",z;if(y){let ae=Y(t,l)?.tabsMetadata?.[l];z={type:"pane",id:de(),tabs:[l],activeTabId:l,tabsMetadata:ae?{[l]:ae}:void 0};}else z=j(t,l)??{type:"pane",id:de(),tabs:[l],activeTabId:l};let se=y?pe(t,l):me(t,l),ne=Pe(se,O,L,_,z);n(ne),p&&p(l,O,{type:"split",direction:L,position:_});},onDragCancel:()=>{r(null),o(null),q(false),u(null),f(null),a(null),S?.(null),M.current=null;}}}var st=({activeId:e,render:t,className:n})=>{let s=useRef(null);return useEffect(()=>{let r=o=>{s.current&&(s.current.style.transform=`translate(${o.clientX+12}px, ${o.clientY+12}px)`);};return document.addEventListener("pointermove",r),()=>document.removeEventListener("pointermove",r)},[]),jsx("div",{ref:s,className:n,style:{position:"fixed",top:0,left:0,zIndex:9999,pointerEvents:"none"},children:t(e)})};var it=({tabId:e,target:t,renderWidget:n})=>{let[s,r]=useState(false),o=useRef(null);if(useEffect(()=>{r(true);},[]),useEffect(()=>{if(!s||!o.current)return;let a=o.current;if(t)t.appendChild(a);else {let u=document.getElementById("zeugma-hidden-portal-container");u||(u=document.createElement("div"),u.id="zeugma-hidden-portal-container",u.style.display="none",document.body.appendChild(u)),u.appendChild(a);}},[t,s]),useEffect(()=>()=>{o.current&&o.current.remove();},[]),!s)return null;o.current||(o.current=document.createElement("div"),o.current.className=`zeugma-portal-wrapper-${e}`,o.current.style.width="100%",o.current.style.height="100%");let i=o.current;return !i||!n?null:createPortal(n(e),i)};var Ot=e=>{let t=e,{renderPane:n,renderWidget:s,renderDragOverlay:r,classNames:o={},children:i,layout:a,setLayout:u,fullscreenPaneId:f,setFullscreenPaneId:C,locked:g,setLocked:v,findPaneById:x,findPaneContainingTab:R,findTabById:$,activeId:p,activeType:S,dismissIntentId:m,setContainerRef:D,snapThreshold:P,minSplitPercentage:M,maxSplitPercentage:H,onRemove:W,onResizeStart:q,onResize:Z,onResizeEnd:G,removePane:V,addPane:J,addTab:Q,updateTabMetadata:ee,updatePaneLock:d,selectTab:T,mergeTab:k,removeTab:E,splitPane:y,updateSplitPercentage:l,moveTab:I}=t,{portalTargets:U,registerPortalTarget:h}=Ge(),[b,_]=useState(null),[O,K]=useState(null),oe=ot({...t,setOverTabId:_,setOverTabPosition:K}),N=useCallback(F=>n(F),[n]),L=useMemo(()=>o,[o.dashboard,o.dashboardDismissActive,o.pane,o.paneLocked,o.dropPreview,o.dragOverlay,o.resizer,o.dismissPreview,o.dashboardLocked,o.lockedPreview,o.tabDropPreview]),z=useCallback((F,te)=>{G&&G(F,te);},[G]),se=useMemo(()=>({layout:a,setLayout:u,renderPane:N,activeId:p,dismissIntentId:m,overTabId:b,overTabPosition:O,setContainerRef:D,fullscreenPaneId:f,classNames:L,onRemove:W,onFullscreenChange:C,snapThreshold:P,onResizeStart:q,onResize:Z,onResizeEnd:z,minSplitPercentage:M,maxSplitPercentage:H,locked:g,setLocked:v,findPaneById:x,findPaneContainingTab:R,findTabById:$}),[a,p,m,b,O,D,f,L,W,C,P,q,Z,M,H,u,N,z,g,v,x,R,$]),ne=useMemo(()=>({removePane:V,addPane:J,addTab:Q,updateTabMetadata:ee,updatePaneLock:d,selectTab:T,mergeTab:k,removeTab:E,setFullscreenPaneId:C,setLocked:v,splitPane:y,updateSplitPercentage:l,moveTab:I}),[V,J,Q,ee,d,T,k,E,C,v,y,l,I]),ie=useMemo(()=>{let F=[];function te(re){re&&(re.type==="pane"?F.push(...re.tabs):(te(re.first),te(re.second)));}return te(a),F},[a]),ae=useMemo(()=>({registerPortalTarget:h}),[h]);return jsx(Be.Provider,{value:ne,children:jsx(Ve.Provider,{value:se,children:jsxs(Ie.Provider,{value:ae,children:[jsx(DndContext,{id:"zeugma-dnd-context",...oe,children:i}),p&&S&&r&&jsx(st,{activeId:p,render:F=>r(F,S),className:`${o.dragOverlay||""} ${p===m&&o.dismissPreview||""}`.trim()}),jsx("div",{id:"zeugma-portal-host",style:{display:"none"},children:ie.map(F=>jsx(it,{tabId:F,target:U[F]||null,renderWidget:s},F))})]})})})};function Ue({containerRef:e,isRow:t,direction:n,splitPercentage:s,resizerSize:r,snapThreshold:o,layout:i,currentNode:a,onLayoutChange:u,onResizeStart:f,onResizeEnd:C,parentLeft:g,parentTop:v,parentWidth:x,parentHeight:R}){let{onResizeStart:$,onResize:p,onResizeEnd:S,minSplitPercentage:m=5,maxSplitPercentage:D=95,locked:P=false}=le();return useCallback(M=>{if(P)return;M.preventDefault();let H=e.current;if(!H)return;f&&f(),$&&$(a);let W=H.getBoundingClientRect(),q=M.clientX,Z=M.clientY,G=s,V=M.currentTarget,J=W.left+W.width*(g/100),Q=W.top+W.height*(v/100),ee=W.width*(x/100),d=W.height*(R/100),k=Array.from(document.querySelectorAll('div[role="separator"][data-direction]')).filter(y=>y!==V&&y.getAttribute("data-direction")===n).map(y=>{let l=y.getBoundingClientRect();return t?l.left+l.width/2:l.top+l.height/2}),E=G;Ne({cursor:t?"col-resize":"row-resize",resizerEl:V,onMove:y=>{let l=t?(y.clientX-q)/ee*100:(y.clientY-Z)/d*100,I=G+l,U=t?J+(ee-r)*(I/100)+r/2:Q+(d-r)*(I/100)+r/2,h=1/0,b=null;for(let oe of k){let N=Math.abs(U-oe);N<o&&N<h&&(h=N,b=oe);}let _=I;b!==null&&(_=t?(b-r/2-J)/(ee-r)*100:(b-r/2-Q)/(d-r)*100);let O=Math.max(m,Math.min(D,_));E=O;let K=ge(i,a,O);if(K){let{panes:oe,splitters:N}=ue(K),L=e.current;if(L){for(let z of oe)L.style.setProperty(`--pane-left-${z.paneId}`,`${z.left}%`),L.style.setProperty(`--pane-top-${z.paneId}`,`${z.top}%`),L.style.setProperty(`--pane-width-${z.paneId}`,`${z.width}%`),L.style.setProperty(`--pane-height-${z.paneId}`,`${z.height}%`);for(let z of N)L.style.setProperty(`--splitter-pos-${z.id}`,`${z.direction==="row"?z.left:z.top}%`);}}p&&p(a,O);},onEnd:()=>{let y=ge(i,a,E),l=e.current;if(l){let{panes:I,splitters:U}=ue(y);for(let h of I)l.style.removeProperty(`--pane-left-${h.paneId}`),l.style.removeProperty(`--pane-top-${h.paneId}`),l.style.removeProperty(`--pane-width-${h.paneId}`),l.style.removeProperty(`--pane-height-${h.paneId}`);for(let h of U)l.style.removeProperty(`--splitter-pos-${h.id}`);}u(y),C&&C(),S&&S(a,E);}});},[e,t,n,s,r,o,i,a,u,f,C,$,p,S,m,D,g,v,x,R])}var Xt=({splitter:e,resizerSize:t,snapThreshold:n,containerRef:s})=>{let{layout:r,setLayout:o,classNames:i,locked:a}=le(),[u,f]=useState(false),{currentNode:C,direction:g,left:v,top:x,width:R,height:$,parentLeft:p,parentTop:S,parentWidth:m,parentHeight:D}=e,P=g==="row",M=Ue({containerRef:s,isRow:P,direction:g,splitPercentage:C.splitPercentage,resizerSize:t,snapThreshold:n,layout:r,currentNode:C,onLayoutChange:o,onResizeStart:()=>f(true),onResizeEnd:()=>f(false),parentLeft:p,parentTop:S,parentWidth:m,parentHeight:D}),H=P?{position:"absolute",left:`calc(var(--splitter-pos-${e.id}, ${v}%) - ${t/2}px)`,top:`calc(${x}% + ${t/2}px)`,width:`${t}px`,height:`calc(${$}% - ${t}px)`,cursor:a?"default":"col-resize",pointerEvents:a?"none":"auto",zIndex:10,userSelect:"none",touchAction:"none",boxSizing:"border-box"}:{position:"absolute",left:`calc(${v}% + ${t/2}px)`,top:`calc(var(--splitter-pos-${e.id}, ${x}%) - ${t/2}px)`,width:`calc(${R}% - ${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":g,"data-resizing":u||void 0,style:H,onPointerDown:M,role:"separator","aria-valuenow":C.splitPercentage,"aria-valuemin":5,"aria-valuemax":95})},qt=Wt.memo(({paneId:e,renderPane:t})=>jsx(Fragment,{children:t(e)}),(e,t)=>e.paneId===t.paneId&&e.renderPane===t.renderPane),Jt=({tree:e,resizerSize:t=4,snapThreshold:n})=>{let{layout:s,renderPane:r,activeId:o,dismissIntentId:i,setContainerRef:a,fullscreenPaneId:u,snapThreshold:f,locked:C,classNames:g}=le(),v=n!==void 0?n:f??8,x=e!==void 0?e:s,R=useRef(null),{panes:$,splitters:p}=useMemo(()=>x?ue(x):{panes:[],splitters:[]},[x]);if(!x)return null;let S=()=>jsxs(Fragment,{children:[$.map(m=>{let D=u===m.paneId;return jsx("div",{style:{position:"absolute",left:D?"0%":`var(--pane-left-${m.paneId}, ${m.left}%)`,top:D?"0%":`var(--pane-top-${m.paneId}, ${m.top}%)`,width:D?"100%":`var(--pane-width-${m.paneId}, ${m.width}%)`,height:D?"100%":`var(--pane-height-${m.paneId}, ${m.height}%)`,overflow:"hidden",zIndex:D?20:1,display:u&&!D?"none":"block",padding:D?"0px":`${t/2}px`,boxSizing:"border-box"},children:jsx(qt,{paneId:m.paneId,renderPane:r})},m.paneId)}),!u&&p.map(m=>jsx(Xt,{splitter:m,resizerSize:t,snapThreshold:v,containerRef:R},m.id))]});if(e===void 0){let m=o!==null&&o===i,D=M=>{a(M),R.current=M;},P=`${g.dashboard||""} ${m&&g.dashboardDismissActive||""} ${C&&g.dashboardLocked||""}`.trim();return jsx("div",{ref:D,className:P,style:{position:"relative",width:"100%",height:"100%",overflow:"hidden"},children:S()})}return jsx("div",{ref:R,style:{position:"relative",width:"100%",height:"100%",overflow:"hidden"},children:S()})};var ft="zeugma-height:",Qt="default-pane";function en(e){try{let t=localStorage.getItem(ft+e);if(t!==null){let n=Number(t);if(Number.isFinite(n)&&n>0)return n}}catch{}return null}function pt(e,t){try{localStorage.setItem(ft+e,String(Math.round(t)));}catch{}}var mt=({children:e,active:t=true,height:n,onHeightChange:s,minHeight:r=100,maxHeight:o=1/0,persist:i,localStorageKey:a,resizerHeight:u=6,className:f,resizerClassName:C})=>{let g=i?a||Qt:null,v=()=>{let P=(g?en(g):null)??n??400;return Ze(P,r,o)},[x,R]=useState(v),$=useRef(null),p=g?x:n??x,S=useRef(n);useEffect(()=>{if(n!==void 0&&n!==S.current){let P=Ze(n,r,o);R(P),g&&pt(g,P);}S.current=n;},[n,r,o,g]);let m=useCallback(()=>o,[o]),D=useCallback(P=>{P.preventDefault();let M=P.clientY,H=p,W=m(),q=P.currentTarget,Z=gt($.current),G=Z?Z.scrollTop:0,V=M,J=null,Q=(d,T)=>{let k=T-G,y=d-M+k,l=Ze(H+y,r,W);return $.current&&($.current.style.height=`${l}px`),l},ee=()=>{if(!Z)return;let d=Z===document.documentElement||Z===document.body?{top:0,bottom:window.innerHeight}:Z.getBoundingClientRect(),T=40,k=10,E=0;V>d.bottom-T?E=Math.min(1,(V-(d.bottom-T))/T)*k:V<d.top+T&&(E=-Math.min(1,(d.top+T-V)/T)*k),E!==0&&(Z.scrollTop+=E,Q(V,Z.scrollTop)),J=requestAnimationFrame(ee);};J=requestAnimationFrame(ee),Ne({cursor:"row-resize",resizerEl:q,onMove:d=>{V=d.clientY,Z&&Q(V,Z.scrollTop);},onEnd:()=>{J!==null&&cancelAnimationFrame(J);let d=H;$.current&&(d=$.current.getBoundingClientRect().height),d=Ze(d,r,W),R(d),s&&s(d),g&&pt(g,d);}});},[p,r,m,s,g]);return t?jsxs("div",{ref:$,className:`zeugma-resizable-container ${f||""}`.trim(),style:{height:`${p}px`,position:"relative",overflow:"hidden",boxSizing:"border-box"},children:[jsx("div",{style:{height:`calc(100% - ${u}px)`,overflow:"hidden"},children:e}),jsx("div",{className:`zeugma-resizable-handle ${C||""}`.trim(),style:{height:`${u}px`,cursor:"row-resize",position:"relative",zIndex:10,userSelect:"none",touchAction:"none",boxSizing:"border-box",flexShrink:0},onPointerDown:D,role:"separator","aria-orientation":"horizontal","aria-valuenow":Math.round(p),"aria-valuemin":r,"aria-valuemax":o===1/0?void 0:o})]}):jsx("div",{className:`zeugma-resizable-container disabled ${f||""}`.trim(),style:{height:"100%",position:"relative",overflow:"hidden",boxSizing:"border-box"},children:jsx("div",{style:{height:"100%",overflow:"hidden"},children:e})})};function Ze(e,t,n){return Math.max(t,Math.min(n,e))}function gt(e){if(typeof window>"u"||!e)return null;let t=e.parentElement;if(!t)return document.documentElement;let s=window.getComputedStyle(t).overflowY;return s==="auto"||s==="scroll"?t:gt(t)}var He=createContext(null);var un={top:{position:"absolute",top:0,left:"25%",width:"50%",height:"25%",zIndex:20,pointerEvents:"auto"},bottom:{position:"absolute",bottom:0,left:"25%",width:"50%",height:"25%",zIndex:20,pointerEvents:"auto"},left:{position:"absolute",top:"25%",left:0,width:"25%",height:"50%",zIndex:20,pointerEvents:"auto"},right:{position:"absolute",top:"25%",right:0,width:"25%",height:"50%",zIndex:20,pointerEvents:"auto"},full:{position:"absolute",top:0,left:0,right:0,bottom:0,zIndex:20,pointerEvents:"auto",cursor:"not-allowed"}},dn={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"}},bt=({id:e,position:t,activeClassName:n})=>{let{setNodeRef:s,isOver:r}=useDroppable({id:e});return jsxs(Fragment,{children:[jsx("div",{ref:s,style:un[t]}),r&&jsx("div",{className:n,style:dn[t]})]})},pn=({id:e,children:t,style:n,locked:s=false})=>{let r=useRef(null),{layout:o,activeId:i,classNames:a,fullscreenPaneId:u,onFullscreenChange:f,locked:C}=le(),{removePane:g,updateTabMetadata:v,selectTab:x,removeTab:R}=Me(),$=useContext(Ie);if(!$)throw new Error("Pane must be used within a Zeugma provider");let{registerPortalTarget:p}=$,S=useMemo(()=>j(o,e),[o,e]),m=S?.id??e,D=S?.tabs??[e],P=S?.activeTabId??e,M=S?.tabsMetadata,H=M?.[e],W=S?.locked??false,q=s||W,Z=C||q,G=C||q,V=i!==null&&i!==e&&(!D.includes(i)||D.length>1)&&!G,{attributes:J,listeners:Q,setNodeRef:ee}=useDraggable({id:e,disabled:Z}),d=i!==null&&D.includes(i),T=u===e,k=useCallback(()=>jsx("div",{ref:r,id:`zeugma-tab-target-${P}`,className:"zeugma-tab-content-wrapper",style:{height:"100%",width:"100%"}}),[P]);useEffect(()=>{let I=r.current;return p(P,I),()=>{p(P,null);}},[P,p]);let E=useMemo(()=>({isDragging:d,isFullscreen:T,toggleFullscreen:()=>f?.(T?null:e),remove:()=>{T&&f?.(null),g(m);},metadata:H,updateMetadata:I=>{v(e,I);},locked:Z,tabs:D,activeTabId:P,selectTab:I=>x(m,I),removeTab:I=>{T&&I===P&&f?.(null),R(I);},tabsMetadata:M,updateTabMetadata:(I,U)=>{v(I,U);},renderActiveTab:k}),[d,T,f,e,R,H,v,Z,D,P,x,m,M,k]),y=useMemo(()=>Z?{disabled:true}:{...Q,...J},[Q,J,Z]),l=`${a.pane||""} ${q&&a.paneLocked||""}`.trim();return jsx(He.Provider,{value:y,children:jsxs("div",{ref:ee,className:l,style:{position:"relative",width:"100%",height:"100%",...n},children:[t(E),V&&jsx("div",{style:{position:"absolute",top:0,left:0,right:0,bottom:0,zIndex:15,pointerEvents:"none"},children:["top","bottom","left","right"].map(I=>jsx(bt,{id:`drop-${I}-${e}`,position:I,activeClassName:a.dropPreview},I))}),i!==null&&i!==e&&G&&jsx("div",{style:{position:"absolute",top:0,left:0,right:0,bottom:0,zIndex:15,pointerEvents:"none"},children:jsx(bt,{id:`drop-locked-${e}`,position:"full",activeClassName:a.lockedPreview||""})})]})})};var gn=({children:e,className:t,style:n})=>{let s=useContext(He);if(!s)throw new Error("<DragHandle> must be used inside a <Pane>");let{disabled:r,...o}=s;return jsx("div",{className:t,style:{cursor:r?"default":"grab",userSelect:r?"auto":"none",touchAction:r?"auto":"none",...n},...r?{}:o,children:e})};var Pn=({id:e,locked:t=false,children:n,className:s,style:r})=>{let{locked:o,classNames:i={},overTabId:a,overTabPosition:u}=le(),f=t||o,{attributes:C,listeners:g,setNodeRef:v,isDragging:x}=useDraggable({id:`tab-header-${e}`,disabled:f}),{setNodeRef:R,isOver:$}=useDroppable({id:`tab-drop-${e}`,disabled:f}),p=D=>{v(D),R(D);},S=$&&a===e,m=S?u:null;return jsxs("div",{ref:p,className:s,style:{display:"inline-flex",position:"relative",cursor:f?"default":"grab",...r},...f?{}:g,...f?{}:C,children:[n({isDragging:x,isOver:S}),S&&m&&jsx("div",{className:i.tabDropPreview||"",style:{position:"absolute",top:0,bottom:0,width:"2px",backgroundColor:"#6366f1",left:m==="before"?0:void 0,right:m==="after"?0:void 0,pointerEvents:"none",zIndex:10}})]})};export{xt as DEFAULT_DRAG_ACTIVATION_DISTANCE,Sn as DEFAULT_RESIZER_SIZE,yt as DEFAULT_SNAP_THRESHOLD,gn as DragHandle,pn as Pane,Jt as PaneTree,Ie as PortalRegistryContext,mt as ResizableContainer,Pn as Tab,Ot as Zeugma,Be as ZeugmaActionsContext,Ve as ZeugmaStateContext,Ne as createDragSession,xe as safeJsonStringify,Ue as useResizer,Rt as useZeugma,Me as useZeugmaActions,St as useZeugmaContext,le as useZeugmaState};//# sourceMappingURL=index.js.map
6
+ `,document.head.appendChild(r),t.setAttribute("data-resizing","true");let o=i=>{n(i);},a=()=>{document.body.classList.remove("zeugma-resizing"),t.removeAttribute("data-resizing");let i=document.getElementById("zeugma-global-cursor-style");i&&i.remove(),document.removeEventListener("pointermove",o),document.removeEventListener("pointerup",a),s();};document.addEventListener("pointermove",o),document.addEventListener("pointerup",a);}var We=createContext(void 0),Ue=createContext(void 0),Ie=createContext(void 0),oe=()=>{let e=useContext(We);if(!e)throw new Error("useZeugmaState must be used within a Zeugma provider");return e},Me=()=>{let e=useContext(Ue);if(!e)throw new Error("useZeugmaActions must be used within a Zeugma provider");return e};var kt=()=>{let e=oe(),t=Me();return {...e,...t}};var ze=class extends PointerSensor{static activators=[{eventName:"onPointerDown",handler:({nativeEvent:t})=>!t.target?.closest(".drag-cancel")}]},ke=class extends TouchSensor{static activators=[{eventName:"onTouchStart",handler:({nativeEvent:t})=>!t.target?.closest(".drag-cancel")}]};function Ze(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 lt(e){let{layout:t,setLayout:n,activeId:s,setActiveId:r,setActiveType:o,dismissIntentId:a,setDismissIntentId:i,setOverTabId:u,setOverTabPosition:f,containerRef:g,dragActivationDistance:p,enableDragToDismiss:b,dismissThreshold:P,onRemove:T,onDragStart:$,onDragEnd:m,onDismissIntentChange:L,removeTab:h,moveTab:N,selectTab:R}=e,I=useRef(null),A=Qe(s),[W,q]=useState(false);je(W);let k=useSensors(useSensor(ze,{activationConstraint:{distance:p}}),useSensor(ke,{activationConstraint:{delay:250,tolerance:5}})),G=useCallback(d=>{let x=pointerWithin(d);if(x.length>0)return x;if(d.active.id.toString().startsWith("tab-header-")){let D=d.droppableContainers.filter(S=>S.id.toString().startsWith("tab-drop-"));return closestCenter({...d,droppableContainers:D})}return []},[]);return {sensors:k,collisionDetection:G,onDragStart:d=>{let x=d.active.id.toString(),Z=x.startsWith("tab-header-"),D=Z?x.substring(11):x;r(D),o(Z?"tab":"pane"),u(null),f(null);let S=d.activatorEvent;if(A.current=Ze(S),b&&g.current?I.current=g.current.getBoundingClientRect():I.current=null,Z){let l=Y(t,D);l&&R(l.id,D);}$&&$(D);},onDragMove:d=>{let{over:x}=d,Z=x?.id.toString()||"",D=Z.startsWith("drop-locked-");q(D);let S=Z.match(/^tab-drop-(.+)$/);if(S&&x){let[,w]=S,M=d.active.id.toString();if((M.startsWith("tab-header-")?M.substring(11):M)!==w){let ne="before",ie=x.rect,le=d.activatorEvent,F=null;if(A.current)F=A.current.x;else {let te=Ze(le);te&&(F=te.x+d.delta.x);}if(F!==null){let te=ie.left+ie.width/2;F>te&&(ne="after");}u(w),f(ne);}else u(null),f(null);}else u(null),f(null);if(!b)return;let l=d.active.id.toString(),U=l.startsWith("tab-header-")?l.substring(11):l,y=I.current;if(!y){a!==null&&(i(null),L?.(null));return}let v=d.activatorEvent,_=null,O=null;if(A.current)_=A.current.x,O=A.current.y;else {let w=Ze(v);w&&(_=w.x+d.delta.x,O=w.y+d.delta.y);}let K=0;if(_!==null&&O!==null){let w=0,M=0;_<y.left?w=y.left-_:_>y.right&&(w=_-y.right),O<y.top?M=y.top-O:O>y.bottom&&(M=O-y.bottom),K=Math.sqrt(w*w+M*M);}else {let w=d.active.rect.current.translated;if(w){let M=w.left+w.width/2,z=w.top+w.height/2,ae=0,ne=0;M<y.left?ae=y.left-M:M>y.right&&(ae=M-y.right),z<y.top?ne=y.top-z:z>y.bottom&&(ne=z-y.bottom),K=Math.sqrt(ae*ae+ne*ne);}}K>P?a!==U&&(i(U),L?.(U)):a!==null&&(i(null),L?.(null));},onDragEnd:d=>{r(null),o(null),q(false),u(null),f(null);let{active:x,over:Z}=d,D=x.id.toString(),S=D.startsWith("tab-header-"),l=S?D.substring(11):D,E=b&&a===l;if(i(null),L?.(null),I.current=null,E){T?T(l):h(l),m&&m(l,null,null);return}if(!Z){m&&m(l,null,null);return}let U=Z.id.toString();if(U.startsWith("drop-locked-")){m&&m(l,null,null);return}let y=U.match(/^tab-drop-(.+)$/);if(y){let[,ie]=y;if(l!==ie){let le="before",F=Z.rect,te=d.activatorEvent,re=null;if(A.current)re=A.current.x;else {let he=Ze(te);he&&(re=he.x+d.delta.x);}if(re!==null){let he=F.left+F.width/2;re>he&&(le="after");}N(l,ie,le),m&&m(l,ie,{type:"move",position:"center"});}else m&&m(l,null,null);return}let v=U.match(/^drop-(left|right|top|bottom)-(.+)$/);if(!v){m&&m(l,null,null);return}let[,_,O]=v,K=S?Y(t,l):Q(t,l),se=K&&K.id===O,w=K&&K.tabs.length===1;if(l===O||se&&w){m&&m(l,null,null);return}let M=_==="left"||_==="right"?"row":"column",z;if(S){let le=Y(t,l)?.tabsMetadata?.[l];z={type:"pane",id:de(),tabs:[l],activeTabId:l,tabsMetadata:le?{[l]:le}:void 0};}else z=Q(t,l)??{type:"pane",id:de(),tabs:[l],activeTabId:l};let ae=S?pe(t,l):me(t,l),ne=Pe(ae,O,M,_,z);n(ne),m&&m(l,O,{type:"split",direction:M,position:_});},onDragCancel:()=>{r(null),o(null),q(false),u(null),f(null),i(null),L?.(null),I.current=null;}}}var ct=({activeId:e,render:t,className:n})=>{let s=useRef(null);return useEffect(()=>{let r=o=>{s.current&&(s.current.style.transform=`translate(${o.clientX+12}px, ${o.clientY+12}px)`);};return document.addEventListener("pointermove",r),()=>document.removeEventListener("pointermove",r)},[]),jsx("div",{ref:s,className:n,style:{position:"fixed",top:0,left:0,zIndex:9999,pointerEvents:"none"},children:t(e)})};var ut=({tabId:e,target:t,renderWidget:n})=>{let[s,r]=useState(false),o=useRef(null);if(useEffect(()=>{r(true);},[]),useEffect(()=>{if(!s||!o.current)return;let i=o.current;if(t)t.appendChild(i);else {let u=document.getElementById("zeugma-hidden-portal-container");u||(u=document.createElement("div"),u.id="zeugma-hidden-portal-container",u.style.display="none",document.body.appendChild(u)),u.appendChild(i);}},[t,s]),useEffect(()=>()=>{o.current&&o.current.remove();},[]),!s)return null;o.current||(o.current=document.createElement("div"),o.current.className=`zeugma-portal-wrapper-${e}`,o.current.style.width="100%",o.current.style.height="100%");let a=o.current;return !a||!n?null:createPortal(n(e),a)};var Gt=e=>{let t=e,{renderPane:n,renderWidget:s,renderDragOverlay:r,classNames:o={},children:a,layout:i,setLayout:u,fullscreenPaneId:f,setFullscreenPaneId:g,locked:p,setLocked:b,findPaneById:P,findPaneContainingTab:T,findTabById:$,activeId:m,activeType:L,dismissIntentId:h,setContainerRef:N,snapThreshold:R,minSplitPercentage:I,maxSplitPercentage:A,onRemove:W,onResizeStart:q,onResize:k,onResizeEnd:G,removePane:V,addPane:J,addTab:j,updateTabMetadata:ee,updatePaneLock:d,selectTab:x,mergeTab:Z,removeTab:D,splitPane:S,updateSplitPercentage:l,moveTab:E}=t,{portalTargets:U,registerPortalTarget:y}=et(),[v,_]=useState(null),[O,K]=useState(null),se=lt({...t,setOverTabId:_,setOverTabPosition:K}),w=useCallback(F=>n(F),[n]),M=useMemo(()=>o,[o.dashboard,o.dashboardDismissActive,o.pane,o.paneLocked,o.dropPreview,o.dragOverlay,o.resizer,o.dismissPreview,o.dashboardLocked,o.lockedPreview,o.tabDropPreview]),z=useCallback((F,te)=>{G&&G(F,te);},[G]),ae=useMemo(()=>({layout:i,setLayout:u,renderPane:w,activeId:m,dismissIntentId:h,overTabId:v,overTabPosition:O,setContainerRef:N,fullscreenPaneId:f,classNames:M,onRemove:W,onFullscreenChange:g,snapThreshold:R,onResizeStart:q,onResize:k,onResizeEnd:z,minSplitPercentage:I,maxSplitPercentage:A,locked:p,setLocked:b,findPaneById:P,findPaneContainingTab:T,findTabById:$}),[i,m,h,v,O,N,f,M,W,g,R,q,k,I,A,u,w,z,p,b,P,T,$]),ne=useMemo(()=>({removePane:V,addPane:J,addTab:j,updateTabMetadata:ee,updatePaneLock:d,selectTab:x,mergeTab:Z,removeTab:D,setFullscreenPaneId:g,setLocked:b,splitPane:S,updateSplitPercentage:l,moveTab:E}),[V,J,j,ee,d,x,Z,D,g,b,S,l,E]),ie=useMemo(()=>{let F=[];function te(re){re&&(re.type==="pane"?F.push(...re.tabs):(te(re.first),te(re.second)));}return te(i),F},[i]),le=useMemo(()=>({registerPortalTarget:y}),[y]);return jsx(Ue.Provider,{value:ne,children:jsx(We.Provider,{value:ae,children:jsxs(Ie.Provider,{value:le,children:[jsx(DndContext,{id:"zeugma-dnd-context",...se,children:a}),m&&L&&r&&jsx(ct,{activeId:m,render:F=>r(F,L),className:`${o.dragOverlay||""} ${m===h&&o.dismissPreview||""}`.trim()}),jsx("div",{id:"zeugma-portal-host",style:{display:"none"},children:ie.map(F=>jsx(ut,{tabId:F,target:U[F]||null,renderWidget:s},F))})]})})})};function Ye({containerRef:e,isRow:t,direction:n,splitPercentage:s,resizerSize:r,snapThreshold:o,layout:a,currentNode:i,onLayoutChange:u,onResizeStart:f,onResizeEnd:g,parentLeft:p,parentTop:b,parentWidth:P,parentHeight:T}){let{onResizeStart:$,onResize:m,onResizeEnd:L,minSplitPercentage:h=5,maxSplitPercentage:N=95,locked:R=false}=oe();return useCallback(I=>{if(R)return;I.preventDefault();let A=e.current;if(!A)return;f&&f(),$&&$(i);let W=A.getBoundingClientRect(),q=I.clientX,k=I.clientY,G=s,V=I.currentTarget,J=W.left+W.width*(p/100),j=W.top+W.height*(b/100),ee=W.width*(P/100),d=W.height*(T/100),Z=Array.from(document.querySelectorAll('div[role="separator"][data-direction]')).filter(S=>S!==V&&S.getAttribute("data-direction")===n).map(S=>{let l=S.getBoundingClientRect();return t?l.left+l.width/2:l.top+l.height/2}),D=G;Le({cursor:t?"col-resize":"row-resize",resizerEl:V,onMove:S=>{let l=t?(S.clientX-q)/ee*100:(S.clientY-k)/d*100,E=G+l,U=t?J+(ee-r)*(E/100)+r/2:j+(d-r)*(E/100)+r/2,y=1/0,v=null;for(let se of Z){let w=Math.abs(U-se);w<o&&w<y&&(y=w,v=se);}let _=E;v!==null&&(_=t?(v-r/2-J)/(ee-r)*100:(v-r/2-j)/(d-r)*100);let O=Math.max(h,Math.min(N,_));D=O;let K=ge(a,i,O);if(K){let{panes:se,splitters:w}=ue(K),M=e.current;if(M){for(let z of se)M.style.setProperty(`--pane-left-${z.paneId}`,`${z.left}%`),M.style.setProperty(`--pane-top-${z.paneId}`,`${z.top}%`),M.style.setProperty(`--pane-width-${z.paneId}`,`${z.width}%`),M.style.setProperty(`--pane-height-${z.paneId}`,`${z.height}%`);for(let z of w)M.style.setProperty(`--splitter-pos-${z.id}`,`${z.direction==="row"?z.left:z.top}%`);}}m&&m(i,O);},onEnd:()=>{let S=ge(a,i,D),l=e.current;if(l){let{panes:E,splitters:U}=ue(S);for(let y of E)l.style.removeProperty(`--pane-left-${y.paneId}`),l.style.removeProperty(`--pane-top-${y.paneId}`),l.style.removeProperty(`--pane-width-${y.paneId}`),l.style.removeProperty(`--pane-height-${y.paneId}`);for(let y of U)l.style.removeProperty(`--splitter-pos-${y.id}`);}u(S),g&&g(),L&&L(i,D);}});},[e,t,n,s,r,o,a,i,u,f,g,$,m,L,h,N,p,b,P,T])}var rn=({splitter:e,resizerSize:t,snapThreshold:n,containerRef:s})=>{let{layout:r,setLayout:o,classNames:a,locked:i}=oe(),[u,f]=useState(false),{currentNode:g,direction:p,left:b,top:P,width:T,height:$,parentLeft:m,parentTop:L,parentWidth:h,parentHeight:N}=e,R=p==="row",I=Ye({containerRef:s,isRow:R,direction:p,splitPercentage:g.splitPercentage,resizerSize:t,snapThreshold:n,layout:r,currentNode:g,onLayoutChange:o,onResizeStart:()=>f(true),onResizeEnd:()=>f(false),parentLeft:m,parentTop:L,parentWidth:h,parentHeight:N}),A=R?{position:"absolute",left:`calc(var(--splitter-pos-${e.id}, ${b}%) - ${t/2}px)`,top:`calc(${P}% + ${t/2}px)`,width:`${t}px`,height:`calc(${$}% - ${t}px)`,cursor:i?"default":"col-resize",pointerEvents:i?"none":"auto",zIndex:10,userSelect:"none",touchAction:"none",boxSizing:"border-box"}:{position:"absolute",left:`calc(${b}% + ${t/2}px)`,top:`calc(var(--splitter-pos-${e.id}, ${P}%) - ${t/2}px)`,width:`calc(${T}% - ${t}px)`,height:`${t}px`,cursor:i?"default":"row-resize",pointerEvents:i?"none":"auto",zIndex:10,userSelect:"none",touchAction:"none",boxSizing:"border-box"};return jsx("div",{className:a.resizer||"","data-direction":p,"data-resizing":u||void 0,style:A,onPointerDown:I,role:"separator","aria-valuenow":g.splitPercentage,"aria-valuemin":5,"aria-valuemax":95})},on=jt.memo(({paneId:e,renderPane:t})=>jsx(Fragment,{children:t(e)}),(e,t)=>e.paneId===t.paneId&&e.renderPane===t.renderPane),sn=({tree:e,resizerSize:t=4,snapThreshold:n})=>{let{layout:s,renderPane:r,activeId:o,dismissIntentId:a,setContainerRef:i,fullscreenPaneId:u,snapThreshold:f,locked:g,classNames:p}=oe(),b=n!==void 0?n:f??8,P=e!==void 0?e:s,T=useRef(null),{panes:$,splitters:m}=useMemo(()=>P?ue(P):{panes:[],splitters:[]},[P]);if(!P)return null;let L=()=>jsxs(Fragment,{children:[$.map(h=>{let N=u===h.paneId;return jsx("div",{style:{position:"absolute",left:N?"0%":`var(--pane-left-${h.paneId}, ${h.left}%)`,top:N?"0%":`var(--pane-top-${h.paneId}, ${h.top}%)`,width:N?"100%":`var(--pane-width-${h.paneId}, ${h.width}%)`,height:N?"100%":`var(--pane-height-${h.paneId}, ${h.height}%)`,overflow:"hidden",zIndex:N?20:1,display:u&&!N?"none":"block",padding:N?"0px":`${t/2}px`,boxSizing:"border-box"},children:jsx(on,{paneId:h.paneId,renderPane:r})},h.paneId)}),!u&&m.map(h=>jsx(rn,{splitter:h,resizerSize:t,snapThreshold:b,containerRef:T},h.id))]});if(e===void 0){let h=o!==null&&o===a,N=I=>{i(I),T.current=I;},R=`${p.dashboard||""} ${h&&p.dashboardDismissActive||""} ${g&&p.dashboardLocked||""}`.trim();return jsx("div",{ref:N,className:R,style:{position:"relative",width:"100%",height:"100%",overflow:"hidden"},children:L()})}return jsx("div",{ref:T,style:{position:"relative",width:"100%",height:"100%",overflow:"hidden"},children:L()})};var vt="zeugma-height:",un="default-pane";function dn(e){try{let t=localStorage.getItem(vt+e);if(t!==null){let n=Number(t);if(Number.isFinite(n)&&n>0)return n}}catch{}return null}function bt(e,t){try{localStorage.setItem(vt+e,String(Math.round(t)));}catch{}}var ht=({children:e,active:t=true,height:n,onHeightChange:s,minHeight:r=100,maxHeight:o=1/0,persist:a,localStorageKey:i,resizerHeight:u=6,className:f,resizerClassName:g})=>{let p=a?i||un:null,b=()=>{let R=(p?dn(p):null)??n??400;return $e(R,r,o)},[P,T]=useState(b),$=useRef(null),m=p?P:n??P,L=useRef(n);useEffect(()=>{if(n!==void 0&&n!==L.current){let R=$e(n,r,o);T(R),p&&bt(p,R);}L.current=n;},[n,r,o,p]);let h=useCallback(()=>o,[o]),N=useCallback(R=>{R.preventDefault();let I=R.clientY,A=m,W=h(),q=R.currentTarget,k=Pt($.current),G=k?k.scrollTop:0,V=I,J=null,j=(d,x)=>{let Z=x-G,S=d-I+Z,l=$e(A+S,r,W);return $.current&&($.current.style.height=`${l}px`),l},ee=()=>{if(!k)return;let d=k===document.documentElement||k===document.body?{top:0,bottom:window.innerHeight}:k.getBoundingClientRect(),x=40,Z=10,D=0;V>d.bottom-x?D=Math.min(1,(V-(d.bottom-x))/x)*Z:V<d.top+x&&(D=-Math.min(1,(d.top+x-V)/x)*Z),D!==0&&(k.scrollTop+=D,j(V,k.scrollTop)),J=requestAnimationFrame(ee);};J=requestAnimationFrame(ee),Le({cursor:"row-resize",resizerEl:q,onMove:d=>{V=d.clientY,k&&j(V,k.scrollTop);},onEnd:()=>{J!==null&&cancelAnimationFrame(J);let d=A;$.current&&(d=$.current.getBoundingClientRect().height),d=$e(d,r,W),T(d),s&&s(d),p&&bt(p,d);}});},[m,r,h,s,p]);return t?jsxs("div",{ref:$,className:`zeugma-resizable-container ${f||""}`.trim(),style:{height:`${m}px`,position:"relative",overflow:"hidden",boxSizing:"border-box"},children:[jsx("div",{style:{height:`calc(100% - ${u}px)`,overflow:"hidden"},children:e}),jsx("div",{className:`zeugma-resizable-handle ${g||""}`.trim(),style:{height:`${u}px`,cursor:"row-resize",position:"relative",zIndex:10,userSelect:"none",touchAction:"none",boxSizing:"border-box",flexShrink:0},onPointerDown:N,role:"separator","aria-orientation":"horizontal","aria-valuenow":Math.round(m),"aria-valuemin":r,"aria-valuemax":o===1/0?void 0:o})]}):jsx("div",{className:`zeugma-resizable-container disabled ${f||""}`.trim(),style:{height:"100%",position:"relative",overflow:"hidden",boxSizing:"border-box"},children:jsx("div",{style:{height:"100%",overflow:"hidden"},children:e})})};function $e(e,t,n){return Math.max(t,Math.min(n,e))}function Pt(e){if(typeof window>"u"||!e)return null;let t=e.parentElement;if(!t)return document.documentElement;let s=window.getComputedStyle(t).overflowY;return s==="auto"||s==="scroll"?t:Pt(t)}var He=createContext(null),Fe=createContext(null);var Pn={top:{position:"absolute",top:0,left:"25%",width:"50%",height:"25%",zIndex:20,pointerEvents:"auto"},bottom:{position:"absolute",bottom:0,left:"25%",width:"50%",height:"25%",zIndex:20,pointerEvents:"auto"},left:{position:"absolute",top:"25%",left:0,width:"25%",height:"50%",zIndex:20,pointerEvents:"auto"},right:{position:"absolute",top:"25%",right:0,width:"25%",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"}},yt=({id:e,position:t,activeClassName:n})=>{let{setNodeRef:s,isOver:r}=useDroppable({id:e});return jsxs(Fragment,{children:[jsx("div",{ref:s,style:Pn[t]}),r&&jsx("div",{className:n,style:Tn[t]})]})},yn=({id:e,children:t,style:n,locked:s=false})=>{let r=useRef(null),{layout:o,activeId:a,classNames:i,fullscreenPaneId:u,onFullscreenChange:f,locked:g}=oe(),{removePane:p,updateTabMetadata:b,selectTab:P,removeTab:T}=Me(),$=useContext(Ie);if(!$)throw new Error("Pane must be used within a Zeugma provider");let{registerPortalTarget:m}=$,L=useMemo(()=>Q(o,e),[o,e]),h=L?.id??e,N=L?.tabs??[e],R=L?.activeTabId??e,I=L?.tabsMetadata,A=I?.[e],W=L?.locked??false,q=s||W,k=g||q,G=g||q,V=a!==null&&a!==e&&(!N.includes(a)||N.length>1)&&!G,{attributes:J,listeners:j,setNodeRef:ee}=useDraggable({id:e,disabled:k}),d=a!==null&&N.includes(a),x=u===e,Z=useCallback(()=>jsx("div",{ref:r,id:`zeugma-tab-target-${R}`,className:"zeugma-tab-content-wrapper",style:{height:"100%",width:"100%"}}),[R]);useEffect(()=>{let E=r.current;return m(R,E),()=>{m(R,null);}},[R,m]);let D=useMemo(()=>({isDragging:d,isFullscreen:x,toggleFullscreen:()=>f?.(x?null:e),remove:()=>{x&&f?.(null),p(h);},metadata:A,updateMetadata:E=>{b(e,E);},locked:k,tabs:N,activeTabId:R,selectTab:E=>P(h,E),removeTab:E=>{x&&E===R&&f?.(null),T(E);},tabsMetadata:I,updateTabMetadata:(E,U)=>{b(E,U);},renderActiveTab:Z}),[d,x,f,e,T,A,b,k,N,R,P,h,I,Z]),S=useMemo(()=>k?{disabled:true}:{...j,...J},[j,J,k]),l=`${i.pane||""} ${q&&i.paneLocked||""}`.trim();return jsx(He.Provider,{value:S,children:jsx(Fe.Provider,{value:D,children:jsxs("div",{ref:ee,className:l,style:{position:"relative",width:"100%",height:"100%",...n},children:[t(D),V&&jsx("div",{style:{position:"absolute",top:0,left:0,right:0,bottom:0,zIndex:15,pointerEvents:"none"},children:["top","bottom","left","right"].map(E=>jsx(yt,{id:`drop-${E}-${e}`,position:E,activeClassName:i.dropPreview},E))}),a!==null&&a!==e&&G&&jsx("div",{style:{position:"absolute",top:0,left:0,right:0,bottom:0,zIndex:15,pointerEvents:"none"},children:jsx(yt,{id:`drop-locked-${e}`,position:"full",activeClassName:i.lockedPreview||""})})]})})})};var Sn=({children:e,className:t,style:n})=>{let s=useContext(He);if(!s)throw new Error("<DragHandle> must be used inside a <Pane>");let{disabled:r,...o}=s;return jsx("div",{className:t,style:{cursor:r?"default":"grab",userSelect:r?"auto":"none",touchAction:r?"auto":"none",...n},...r?{}:o,children:e})};var xt=jt.memo(({isDragging:e,children:t})=>jsx(Fragment,{children:t({isDragging:e,isOver:false})}));xt.displayName="TabNormal";var St=({id:e,isDragging:t,children:n})=>{let{overTabId:s,overTabPosition:r,classNames:o={}}=oe(),a=s===e,i=a?r:null;return jsxs(Fragment,{children:[n({isDragging:t,isOver:a}),a&&i&&jsx("div",{className:o.tabDropPreview||"",style:{position:"absolute",top:0,bottom:0,width:"2px",backgroundColor:"#6366f1",left:i==="before"?0:void 0,right:i==="after"?0:void 0,pointerEvents:"none",zIndex:10}})]})};St.displayName="TabHovered";var qe=({id:e,locked:t=false,children:n,className:s,style:r})=>{let o=oe(),a=t||o.locked,{attributes:i,listeners:u,setNodeRef:f,isDragging:g}=useDraggable({id:`tab-header-${e}`,disabled:a}),{setNodeRef:p,isOver:b}=useDroppable({id:`tab-drop-${e}`,disabled:a});return jsx("div",{ref:T=>{f(T),p(T);},className:s,style:{display:"inline-flex",position:"relative",cursor:a?"default":"grab",...r},...a?{}:u,...a?{}:i,children:b?jsx(St,{id:e,isDragging:g,children:n}):jsx(xt,{isDragging:g,children:n})})};var wt=jt.memo(({tabId:e,isActive:t,isLast:n,index:s,locked:r,selectTab:o,removeTab:a,metadata:i,children:u,className:f,style:g})=>{let p=useCallback(()=>o(e),[o,e]),b=useCallback(()=>a(e),[a,e]);return jsx(qe,{id:e,locked:r,className:f,style:g,children:P=>u({...P,tabId:e,isActive:t,index:s,isLast:n,select:p,remove:b,metadata:i})})},(e,t)=>e.tabId===t.tabId&&e.isActive===t.isActive&&e.isLast===t.isLast&&e.index===t.index&&e.locked===t.locked&&e.className===t.className&&e.style===t.style&&e.metadata===t.metadata);wt.displayName="TabsListItem";var Mn=({children:e,className:t,style:n})=>{let s=useContext(Fe);if(!s)throw new Error("<TabsList> must be rendered inside a <Pane> component.");let{tabs:r,activeTabId:o,selectTab:a,removeTab:i,tabsMetadata:u,locked:f}=s;return jsx(Fragment,{children:r.map((g,p)=>{let b=g===o,P=p===r.length-1,T=u?.[g];return jsx(wt,{tabId:g,isActive:b,isLast:P,index:p,locked:f,selectTab:a,removeTab:i,metadata:T,className:t,style:n,children:e},g)})})};export{Mt as DEFAULT_DRAG_ACTIVATION_DISTANCE,$n as DEFAULT_RESIZER_SIZE,It as DEFAULT_SNAP_THRESHOLD,Sn as DragHandle,yn as Pane,sn as PaneTree,Ie as PortalRegistryContext,ht as ResizableContainer,qe as Tab,Mn as TabsList,Gt as Zeugma,Ue as ZeugmaActionsContext,We as ZeugmaStateContext,Le as createDragSession,Re as safeJsonStringify,Ye as useResizer,zt as useZeugma,Me as useZeugmaActions,kt as useZeugmaContext,oe as useZeugmaState};//# sourceMappingURL=index.js.map
7
7
  //# sourceMappingURL=index.js.map