react-dockable-desktop 5.0.0 → 5.1.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.cjs CHANGED
@@ -1,8 +1,8 @@
1
- "use strict";var Oo=Object.create;var qt=Object.defineProperty;var Ao=Object.getOwnPropertyDescriptor;var Fo=Object.getOwnPropertyNames;var _o=Object.getPrototypeOf,Ho=Object.prototype.hasOwnProperty;var Bo=(e,t)=>{for(var n in t)qt(e,n,{get:t[n],enumerable:!0})},In=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let p of Fo(t))!Ho.call(e,p)&&p!==n&&qt(e,p,{get:()=>t[p],enumerable:!(o=Ao(t,p))||o.enumerable});return e};var gn=(e,t,n)=>(n=e!=null?Oo(_o(e)):{},In(t||!e||!e.__esModule?qt(n,"default",{value:e,enumerable:!0}):n,e)),$o=e=>In(qt({},"__esModule",{value:!0}),e);var Rr={};Bo(Rr,{ConfirmationForm:()=>Je,ContextMenu:()=>Jt,ContextMenuProvider:()=>Qt,DefaultContextMenuAdapter:()=>ut,DockableDesktopProvider:()=>ro,FormContainerContext:()=>Kt,FormContainerProvider:()=>Ze,LeftPanelRenderer:()=>so,ModalStackRenderer:()=>io,PanelContributionProvider:()=>an,PanelFloatingWindow:()=>kn,PanelOverlayRoot:()=>Mo,PanelProvider:()=>tn,PanelRegistry:()=>Dt,PanelRegistryClass:()=>ct,PanelToolbar:()=>To,PanelToolbarItem:()=>Lo,PanelToolbarSeparator:()=>Io,RightPanelRenderer:()=>ao,SidePanelRenderer:()=>lo,Sidebar:()=>go,ToastContainer:()=>yo,Toolbar:()=>bo,ToolbarButton:()=>So,ToolbarCenter:()=>No,ToolbarProvider:()=>_t,ToolbarSearchInput:()=>zo,ToolbarSpacer:()=>Eo,ToolbarToggle:()=>ko,WindowManager:()=>jn,WindowManagerProvider:()=>jt,WorkspaceClient:()=>sn,computeResizedRect:()=>kt,defaultPredefinedMessages:()=>Ct,formatLabel:()=>he,sidebarSectionToTab:()=>Rn,startPointerDrag:()=>Ve,toast:()=>vo,useActivePanelContribution:()=>ln,useColorScheme:()=>on,useFormContainer:()=>dt,useFormatMessage:()=>Fe,useMergedSidebarTabs:()=>to,useMergedToolbarItems:()=>eo,usePanelActions:()=>Ue,usePanelContext:()=>Fn,usePanelContextMenu:()=>_n,usePanelContribution:()=>Qn,usePanelFloatingWindow:()=>Do,usePanelFloatingWindowManager:()=>Wo,usePanelId:()=>Wt,usePanelSize:()=>En,usePanelState:()=>Xe,usePredefinedMessages:()=>Be,useRegistry:()=>Rt,useShowContextMenu:()=>$n,useSidebar:()=>mo,useSidebarTab:()=>fo,useStyleClasses:()=>Ye,useToolbar:()=>Ht,useWindowManagerActions:()=>Mt,useWindowManagerState:()=>De});module.exports=$o(Rr);var K=gn(require("react"),1),Pn=require("react-dom");var D=require("react");var xt=require("react"),Go={requestClose:()=>{console.warn("FormContainerContract: requestClose called but no container is present")},setDirty:()=>{},onCloseRequested:()=>()=>{},setTitle:()=>{},setIcon:()=>{},containerType:"standalone",instanceId:"standalone",onClose:()=>()=>{},onMinimize:()=>()=>{},onRestore:()=>()=>{},onResize:()=>()=>{},requestMinimize:()=>{},getDimensions:()=>null,onActivate:()=>()=>{},onDeactivate:()=>()=>{},onContainerTypeChange:()=>()=>{}},Kt=(0,xt.createContext)(Go),Ze=Kt.Provider,dt=()=>(0,xt.useContext)(Kt),En=()=>{let{onResize:e,getDimensions:t}=dt();return(0,xt.useSyncExternalStore)(n=>e?e(()=>n()):()=>{},()=>t?t():null)};var ct=class{registry=new Map;register(t,n,o){this.registry.set(t,{Component:n,defaultOptions:o})}get(t){return this.registry.get(t)}getRegisteredIds(){return Array.from(this.registry.keys())}},Dt=new ct;var Ct={floatWindow:{id:"dockable-desktop-floatWindow",defaultMessage:"Float Window"},minimizePanel:{id:"dockable-desktop-minimizePanel",defaultMessage:"Minimize Panel"},closeTab:{id:"dockable-desktop-closeTab",defaultMessage:"Close Tab"},restorePanel:{id:"dockable-desktop-restorePanel",defaultMessage:"Restore Panel"},maximizePanel:{id:"dockable-desktop-maximizePanel",defaultMessage:"Maximize Panel"},closePanel:{id:"dockable-desktop-closePanel",defaultMessage:"Close Panel"},dockWindow:{id:"dockable-desktop-dockWindow",defaultMessage:"Dock Window"},minimize:{id:"dockable-desktop-minimize",defaultMessage:"Minimize"},maximize:{id:"dockable-desktop-maximize",defaultMessage:"Maximize"},restoreSize:{id:"dockable-desktop-restoreSize",defaultMessage:"Restore Size"},close:{id:"dockable-desktop-close",defaultMessage:"Close"},closeEmptyGroup:{id:"dockable-desktop-closeEmptyGroup",defaultMessage:"Close empty split group"},unsavedChangesTitle:{id:"dockable-desktop-unsavedChangesTitle",defaultMessage:"Unsaved Changes"},unsavedChangesMessage:{id:"dockable-desktop-unsavedChangesMessage",defaultMessage:'"{title}" has unsaved changes. Do you want to discard your changes and close?'},discardChanges:{id:"dockable-desktop-discardChanges",defaultMessage:"Discard Changes"},cancel:{id:"dockable-desktop-cancel",defaultMessage:"Cancel"},yes:{id:"dockable-desktop-yes",defaultMessage:"Yes"},no:{id:"dockable-desktop-no",defaultMessage:"No"},ok:{id:"dockable-desktop-ok",defaultMessage:"OK"},closePanelTooltip:{id:"dockable-desktop-closePanelTooltip",defaultMessage:"Close panel"},closeTooltip:{id:"dockable-desktop-closeTooltip",defaultMessage:"Close"}};var je=require("react/jsx-runtime"),wt=(0,D.createContext)(null),Zt=(0,D.createContext)(null),Nn=(0,D.createContext)(null),zn=(0,D.createContext)(null),Dn=(0,D.createContext)(Ct),Wn=(0,D.createContext)({}),Ye=()=>(0,D.useContext)(Wn),On=(0,D.createContext)(Dt),Rt=()=>(0,D.useContext)(On),mn=class{listeners={};subscribe(t,n){return this.listeners[t]||(this.listeners[t]=[]),this.listeners[t].push(n),()=>{this.listeners[t]=this.listeners[t].filter(o=>o!==n)}}publish(t,n){this.listeners[t]&&this.listeners[t].forEach(o=>o(n))}},Yo={type:"leaf",id:"group-default",panels:[],activePanelId:null};function An(e){if(!e||!e.gridRoot||!Array.isArray(e.floating)||!Array.isArray(e.minimized)||!e.panels)return null;let t=e.floating.map(n=>{if("stickyRight"in n||"stickyBottom"in n){let o=n.stickyRight&&n.stickyBottom?"bottom-right":n.stickyRight?"top-right":n.stickyBottom?"bottom-left":null,{stickyRight:p,stickyBottom:s,...T}=n;return{...T,anchor:o}}return n});return{gridRoot:e.gridRoot,floating:t,minimized:e.minimized,panels:e.panels}}function Xo(e){if(e)try{let t=An(JSON.parse(e));if(t)return{...t,activePanelId:Object.keys(t.panels)[0]??null}}catch{}return{gridRoot:Yo,floating:[],minimized:[],panels:{},activePanelId:null}}var jt=({children:e,client:t,formatMessage:n,predefinedMessages:o,dir:p,modalClass:s,modalBodyClass:T,sidePanelClass:h,sidePanelBodyClass:w,windowClass:y,windowBodyClass:v,zIndexBase:b})=>{let R=(0,D.useRef)(t?.registry??Dt).current,I=t?.config.formatMessage??n,k=t?.config.predefinedMessages??o,L=t?.config.dir??p,d=t?.config.zIndexBase??b??1e3,[E,a]=(0,D.useState)(()=>({...Xo(t?.initialState??null),draggedPanelId:null,dir:L||"ltr",isRtl:L==="rtl",splitRatio:Math.min(.9,Math.max(.1,t?.config.defaultSplitRatio??.5)),edgeSplitRatio:Math.min(.9,Math.max(.1,t?.config.defaultEdgeSplitRatio??.2))})),f=(0,D.useRef)(E);f.current=E;let C=(0,D.useRef)(new Set);(0,D.useEffect)(()=>{C.current.forEach(r=>r())},[E]);let O=(0,D.useCallback)(()=>f.current,[]),$=(0,D.useCallback)(r=>(C.current.add(r),()=>C.current.delete(r)),[]),F=(0,D.useRef)({}),l=(0,D.useMemo)(()=>({...Ct,...k}),[k]),M=(0,D.useRef)(new mn),Y=(0,D.useRef)(d);(0,D.useEffect)(()=>(document.documentElement.style.setProperty("--rdd-z-base",String(d)),()=>{document.documentElement.style.removeProperty("--rdd-z-base")}),[d]);let Q=(0,D.useCallback)((r,P)=>M.current.subscribe(r,P),[]),j=(0,D.useCallback)((r,P)=>{M.current.publish(r,P)},[]),se=(0,D.useCallback)((r,P)=>{let c=typeof r.x=="string"?parseFloat(r.x):r.x,u=typeof r.y=="string"?parseFloat(r.y):r.y,H=typeof r.width=="string"?parseFloat(r.width):r.width,A=typeof r.height=="string"?parseFloat(r.height):r.height;isNaN(c)&&(c=300),isNaN(u)&&(u=150),isNaN(H)&&(H=450),isNaN(A)&&(A=350);let ee=S=>P.some(m=>{let x=typeof m.x=="string"?parseFloat(m.x):m.x,G=typeof m.y=="string"?parseFloat(m.y):m.y;return!m.maximized&&Math.abs(x-S.x)<20&&Math.abs(G-S.y)<20}),oe=0;for(;ee({x:c,y:u})&&oe<10;)c+=30,u+=30,oe++;let te=Math.max(100,window.innerWidth||1024),i=Math.max(100,window.innerHeight||768);return(c+H>te||u+A>i)&&(c=100+oe%5*30,u=100+oe%5*30),c=Math.max(0,Math.min(c,te-100)),u=Math.max(0,Math.min(u,i-40)),{x:c,y:u,width:H,height:A}},[]),re=(0,D.useCallback)(r=>{a(P=>{let c=P.panels[r];if(!c)return P;if(c.state==="floating"){let u=P.floating.find(A=>A.id===r);if(!u)return P;let H=!P.floating.some(A=>A.z>u.z);return H&&P.activePanelId===r?P:(H||(Y.current+=1),{...P,floating:P.floating.map(A=>A.id===r?{...A,z:H?u.z:Y.current}:A),activePanelId:r})}else if(c.state==="docked"){if(P.activePanelId===r)return P;let u=H=>H.type==="leaf"?H.panels.includes(r)?{...H,activePanelId:r}:H:{...H,children:H.children.map(u)};return{...P,gridRoot:u(P.gridRoot),activePanelId:r}}return P.activePanelId===r?P:{...P,activePanelId:r}})},[]),ue=(r,P)=>{if(r.type==="leaf"){let c=r.panels.indexOf(P);if(c===-1)return r;let u=r.panels.filter(ee=>ee!==P),H=r.activePanelId===P?u[c]||u[c-1]||u[0]||null:r.activePanelId,A={...r,panels:u,activePanelId:H};return u.length===0&&!r.keepOnEmpty?null:A}else{let c=r.children.map(A=>ue(A,P)).filter(A=>A!==null);if(c.length===0)return null;if(c.length===1)return c[0];let u=r.sizes.slice(0,c.length),H=u.reduce((A,ee)=>A+ee,0);return{...r,children:c,sizes:u.map(A=>A/H)}}},pe=(r,P,c)=>{if(r.type==="leaf"){if(r.id===P){let u=r.panels.includes(c)?r.panels:[...r.panels,c];return{...r,panels:u,activePanelId:c}}return r}else return{...r,children:r.children.map(u=>pe(u,P,c))}},_=r=>{if(r.type==="leaf")return r.id;for(let P of r.children){let c=_(P);if(c)return c}return null},W=(0,D.useCallback)((r,P,c)=>{let u=!(r in f.current.panels),H=c?.focus!==!1;a(A=>{let ee=A.panels[r],oe=R.get(P),te=c?.title||c?.title||oe?.defaultOptions?.title||r,i=c?.initialTarget||oe?.defaultOptions?.initialTarget||"docked",S=oe?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350},m=H?r:A.activePanelId;if(ee)if(ee.state==="minimized"){let q=A.minimized.filter(N=>N.id!==r);if(i==="floating"||!A.gridRoot){Y.current+=1;let N=se(S,A.floating);return{...A,minimized:q,floating:[...A.floating,{...N,id:r,z:Y.current}],panels:{...A.panels,[r]:{...ee,state:"floating"}},activePanelId:m}}else{let N=_(A.gridRoot)||"group-default";return{...A,minimized:q,gridRoot:pe(A.gridRoot,N,r),panels:{...A.panels,[r]:{...ee,state:"docked"}},activePanelId:m}}}else{if(ee.state==="floating")return H&&re(r),A;{let q=N=>N.type==="leaf"?N.panels.includes(r)?{...N,activePanelId:r}:N:{...N,children:N.children.map(q)};return{...A,gridRoot:q(A.gridRoot),activePanelId:m}}}let G={id:r,title:te,component:P,state:i==="tabbed"?"docked":i},V={...A.panels,[r]:G};if(i==="floating"){Y.current+=1;let q=se(S,A.floating),N=c?.anchor??oe?.defaultOptions?.defaultAnchor??null;return{...A,floating:[...A.floating,{...q,id:r,z:Y.current,anchor:N}],panels:V,activePanelId:m}}else{let q=_(A.gridRoot)||"group-default";return{...A,gridRoot:pe(A.gridRoot,q,r),panels:V,activePanelId:m}}}),u&&M.current.publish("panel:opened",{id:r,component:P})},[se,re]),z=(0,D.useCallback)(r=>{let P=r in f.current.panels;a(c=>{let u=c.panels[r];if(!u||R.get(u.component)?.defaultOptions?.canClose===!1)return c;delete F.current[r];let A={...c.panels};delete A[r];let ee=ue(c.gridRoot,r);return{...c,gridRoot:ee||{type:"leaf",id:"group-default",panels:[],activePanelId:null},floating:c.floating.filter(oe=>oe.id!==r),minimized:c.minimized.filter(oe=>oe.id!==r),panels:A}}),P&&M.current.publish("panel:closed",{id:r})},[]),Z=(0,D.useCallback)((r,P)=>{F.current[r]=P},[]),B=(0,D.useCallback)(r=>{delete F.current[r]},[]),ie=(0,D.useCallback)((r,P,c)=>{a(u=>{let H=u.panels[r];return H?{...u,panels:{...u.panels,[r]:{...H,dirty:P,dirtyOptions:c}}}:u})},[]),ve=(0,D.useCallback)((r,P)=>{a(c=>{let u=c.panels[r];return u?{...c,panels:{...c.panels,[r]:{...u,title:P}}}:c})},[]),Pe=(0,D.useCallback)(async(r,P)=>{if(P?.force){z(r);return}let c=F.current[r];if(c&&!await c())return;let u=f.current.panels[r];if(u?.dirty)if(P?.onConfirm){if(!await P.onConfirm(u.dirtyOptions))return}else return;z(r)},[z]),Oe=(0,D.useCallback)(r=>{let P=f.current.panels[r]?.state!=="minimized"&&r in f.current.panels;a(c=>{let u=c.panels[r];if(!u||u.state==="minimized"||R.get(u.component)?.defaultOptions?.canMinimize===!1)return c;let A,ee;if(u.state==="floating"){let te=c.floating.find(i=>i.id===r);te&&(A={x:Number(te.x),y:Number(te.y),width:Number(te.width),height:Number(te.height),anchor:te.anchor??null})}else if(u.state==="docked"){let te=i=>{if(i.type==="leaf")return i.panels.includes(r)?i.id:null;for(let S of i.children){let m=te(S);if(m)return m}return null};ee=te(c.gridRoot)??void 0}let oe=ue(c.gridRoot,r);return{...c,gridRoot:oe||{type:"leaf",id:"group-default",panels:[],activePanelId:null},floating:c.floating.filter(te=>te.id!==r),minimized:[...c.minimized,{id:r,title:u.title,component:u.component}],panels:{...c.panels,[r]:{...u,state:"minimized",previousState:u.state,lastFloatingRect:A,lastLeafId:ee}}}}),P&&M.current.publish("panel:minimized",{id:r})},[]),$e=(0,D.useCallback)(r=>{let P=f.current.panels[r]?.state==="minimized";a(c=>{let u=c.panels[r];if(!u||u.state!=="minimized")return c;let H=c.minimized.filter(ee=>ee.id!==r);if((u.previousState||"docked")==="floating"){Y.current+=1;let ee=R.get(u.component),oe=u.lastFloatingRect||ee?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350},te=se(oe,c.floating);return{...c,minimized:H,floating:[...c.floating,{...te,id:r,z:Y.current,anchor:u.lastFloatingRect?.anchor??null}],panels:{...c.panels,[r]:{...u,state:"floating"}}}}else{let ee=(S,m)=>S.type==="leaf"?S.id===m:S.children.some(x=>ee(x,m)),oe=u.lastLeafId&&ee(c.gridRoot,u.lastLeafId),te=R.get(u.component),i=te?.defaultOptions?.canDrag!==!1;if(oe)return{...c,minimized:H,gridRoot:pe(c.gridRoot,u.lastLeafId,r),panels:{...c.panels,[r]:{...u,state:"docked"}}};if(i){Y.current+=1;let S=u.lastFloatingRect||te?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350},m=se(S,c.floating);return{...c,minimized:H,floating:[...c.floating,{...m,id:r,z:Y.current,anchor:u.lastFloatingRect?.anchor??null}],panels:{...c.panels,[r]:{...u,state:"floating"}}}}else{let S=_(c.gridRoot)||"group-default";return{...c,minimized:H,gridRoot:pe(c.gridRoot,S,r),panels:{...c.panels,[r]:{...u,state:"docked"}}}}}}),P&&M.current.publish("panel:restored",{id:r})},[se]),Ae=(0,D.useCallback)((r,P,c)=>{a(u=>{let H=u.panels[r];if(!H||R.get(H.component)?.defaultOptions?.canDrag===!1)return u;let ee=R.get(H.component),oe=P||ee?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350},te=ue(u.gridRoot,r);Y.current+=1;let i=se(oe,u.floating);return{...u,gridRoot:te||{type:"leaf",id:"group-default",panels:[],activePanelId:null},floating:[...u.floating,{...i,id:r,z:Y.current,anchor:c??null}],panels:{...u.panels,[r]:{...H,state:"floating"}}}})},[se]),He=(0,D.useCallback)((r,P)=>{a(c=>{let u=c.panels[r];if(!u)return c;let H=c.floating.filter(oe=>oe.id!==r),A=ue(c.gridRoot,r),ee=P||_(A||c.gridRoot)||"group-default";return{...c,gridRoot:pe(A||c.gridRoot,ee,r),floating:H,panels:{...c.panels,[r]:{...u,state:"docked"}}}})},[]),tt=(r,P,c,u,H)=>{if(r.type==="leaf"){if(r.id===P){let A={type:"leaf",id:`group-split-${Date.now()}-${Math.floor(Math.random()*1e3)}`,panels:[c],activePanelId:c},ee=u==="left"||u==="right"?"horizontal":"vertical",oe=u==="left"||u==="top"?[A,r]:[r,A],te=u==="left"||u==="top"?[H,1-H]:[1-H,H];return{type:"branch",orientation:ee,sizes:te,children:oe}}return r}else return{...r,children:r.children.map(A=>tt(A,P,c,u,H))}},nt=(0,D.useCallback)(r=>{a(P=>({...P,draggedPanelId:r}))},[]),Lt=(0,D.useCallback)((r,P,c)=>{a(u=>{let H=u.panels[r];if(!H)return u;let A=u.floating.filter(te=>te.id!==r),ee=ue(u.gridRoot,r),oe;return c==="center"?oe=pe(ee||u.gridRoot,P,r):oe=tt(ee||u.gridRoot,P,r,c,u.splitRatio),{...u,gridRoot:oe,floating:A,panels:{...u.panels,[r]:{...H,state:"docked"}},draggedPanelId:null}})},[]),Bt=(0,D.useCallback)((r,P)=>{a(c=>{let u=c.panels[r];if(!u)return c;let H=c.floating.filter(m=>m.id!==r),A=ue(c.gridRoot,r),ee={type:"leaf",id:`group-edge-${Date.now()}-${Math.floor(Math.random()*1e3)}`,panels:[r],activePanelId:r},oe=P==="left"||P==="right"?"horizontal":"vertical",te=P==="left"||P==="top"?[ee,A||c.gridRoot]:[A||c.gridRoot,ee],i=c.edgeSplitRatio,S={type:"branch",orientation:oe,sizes:P==="left"||P==="top"?[i,1-i]:[1-i,i],children:te};return{...c,gridRoot:S,floating:H,panels:{...c.panels,[r]:{...u,state:"docked"}},draggedPanelId:null}})},[]),gt=(0,D.useCallback)((r,P,c)=>{a(u=>{let H=u.panels[r];if(!H)return u;let A=ue(u.gridRoot,r),ee=i=>{if(i.type==="leaf"){if(i.id===P){let S=i.panels.filter(G=>G!==r),m=Math.max(0,Math.min(c,S.length)),x=[...S];return x.splice(m,0,r),{...i,panels:x,activePanelId:r}}return i}else return{...i,children:i.children.map(ee)}},oe=ee(A||u.gridRoot),te=u.floating.filter(i=>i.id!==r);return{...u,gridRoot:oe,floating:te,panels:{...u.panels,[r]:{...H,state:"docked"}},draggedPanelId:null}})},[]),Ie=(0,D.useCallback)(r=>{a(P=>{let c=H=>{if(H.type==="leaf")return H.id===r&&H.canClose!==!1?null:H;{let A=H.children.map(te=>c(te)).filter(te=>te!==null);if(A.length===0)return null;if(A.length===1)return A[0];let ee=H.sizes.slice(0,A.length),oe=ee.reduce((te,i)=>te+i,0);return{...H,children:A,sizes:ee.map(te=>te/oe)}}},u=c(P.gridRoot);return{...P,gridRoot:u||{type:"leaf",id:"group-default",panels:[],activePanelId:null}}})},[]),$t=(0,D.useCallback)(r=>{a(P=>({...P,floating:P.floating.map(c=>c.id===r?{...c,maximized:!c.maximized}:c)}))},[]),Gt=(0,D.useCallback)((r,P)=>{let c=(u,H)=>{if(u.type==="leaf")return u;if(H===r.length)return{...u,sizes:P};let A=r[H],ee=u.children.map((oe,te)=>te===A?c(oe,H+1):oe);return{...u,children:ee}};a(u=>({...u,gridRoot:c(u.gridRoot,0)}))},[]),mt=(0,D.useCallback)((r,P)=>{a(c=>({...c,floating:c.floating.map(u=>u.id===r?{...u,...P}:u)}))},[]),ot=(0,D.useCallback)(()=>{let r={version:1,gridRoot:f.current.gridRoot,floating:f.current.floating,minimized:f.current.minimized,panels:f.current.panels};return JSON.stringify(r)},[]),Nt=(0,D.useCallback)(r=>{try{let P=An(JSON.parse(r));if(!P)return!1;let c=Object.keys(P.panels)[0]||null;return a(u=>({...u,gridRoot:P.gridRoot,floating:P.floating,minimized:P.minimized,panels:P.panels,draggedPanelId:null,activePanelId:c})),!0}catch(P){return console.error("Failed to parse layout configuration:",P),!1}},[]),Yt=(0,D.useCallback)(r=>{a(P=>P.activePanelId===r?P:{...P,activePanelId:r})},[]),Ke=(0,D.useCallback)(r=>{a(P=>P.dir===r?P:{...P,dir:r,isRtl:r==="rtl"})},[]),Ge=(0,D.useCallback)(r=>r in f.current.panels,[]),Xt=(0,D.useCallback)(()=>Object.keys(f.current.panels),[]);(0,D.useEffect)(()=>{L&&a(r=>r.dir===L?r:{...r,dir:L,isRtl:L==="rtl"})},[L]);let zt=(0,D.useRef)(new Map),ft=(0,D.useRef)(null),rt=(0,D.useCallback)(r=>(ft.current=r,()=>{ft.current=null}),[]),it=(0,D.useCallback)(r=>{ft.current?.(r)},[]),st=(0,D.useCallback)((r,P)=>(zt.current.set(r,P),()=>{zt.current.delete(r)}),[]),at=(0,D.useCallback)(r=>zt.current.get(r)?.()??[],[]),ht=(0,D.useMemo)(()=>({openPanel:W,closePanel:z,minimizePanel:Oe,restorePanel:$e,floatPanel:Ae,dockPanel:He,maximizePanel:$t,updateSplitSizes:Gt,updateFloatingPosition:mt,focusPanel:re,isOpen:Ge,getOpenPanelIds:Xt,saveLayout:ot,loadLayout:Nt,publish:j,subscribe:Q,setDraggedPanelId:nt,dockPanelToGroup:Lt,movePanelOrder:gt,closeLeafGroup:Ie,registerCloseGuard:Z,unregisterCloseGuard:B,setPanelDirty:ie,updatePanelTitle:ve,requestClosePanel:Pe,dockPanelToWorkspaceEdge:Bt,setActivePanel:Yt,setDirection:Ke,registerPanelContextMenu:st,getPanelContextMenuItems:at,showContextMenu:it,registerContextMenuFn:rt}),[W,z,Oe,$e,Ae,He,$t,Gt,mt,re,Ge,Xt,ot,Nt,j,Q,nt,Lt,gt,Ie,Z,B,ie,ve,Pe,Bt,Yt,Ke,st,at,it,rt]),cn=r=>{let P=r.defaultMessage||r.id;return r.values&&Object.entries(r.values).forEach(([c,u])=>{P=P.replace(`{${c}}`,String(u))}),P},Vt=(0,D.useMemo)(()=>({modalClass:s,modalBodyClass:T,sidePanelClass:h,sidePanelBodyClass:w,windowClass:y,windowBodyClass:v}),[s,T,h,w,y,v]);(0,D.useEffect)(()=>{if(process.env.NODE_ENV==="development")try{getComputedStyle(document.documentElement).getPropertyValue("--rdd-styles-loaded").trim()!=="1"&&console.error(`[react-dockable-desktop] styles.css is not imported.
1
+ "use strict";var Fo=Object.create;var Kt=Object.defineProperty;var _o=Object.getOwnPropertyDescriptor;var Ho=Object.getOwnPropertyNames;var Bo=Object.getPrototypeOf,$o=Object.prototype.hasOwnProperty;var Go=(e,t)=>{for(var n in t)Kt(e,n,{get:t[n],enumerable:!0})},En=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let f of Ho(t))!$o.call(e,f)&&f!==n&&Kt(e,f,{get:()=>t[f],enumerable:!(o=_o(t,f))||o.enumerable});return e};var fn=(e,t,n)=>(n=e!=null?Fo(Bo(e)):{},En(t||!e||!e.__esModule?Kt(n,"default",{value:e,enumerable:!0}):n,e)),Yo=e=>En(Kt({},"__esModule",{value:!0}),e);var Tr={};Go(Tr,{ConfirmationForm:()=>Ze,ContextMenu:()=>Jt,ContextMenuProvider:()=>Qt,DefaultContextMenuAdapter:()=>ct,DockableDesktopProvider:()=>so,FormContainerContext:()=>qt,FormContainerProvider:()=>Ke,LeftPanelRenderer:()=>lo,ModalStackRenderer:()=>ao,PanelContributionProvider:()=>an,PanelFloatingWindow:()=>In,PanelOverlayRoot:()=>So,PanelProvider:()=>tn,PanelRegistry:()=>Nt,PanelRegistryClass:()=>lt,PanelToolbar:()=>ko,PanelToolbarItem:()=>No,PanelToolbarSeparator:()=>Lo,RightPanelRenderer:()=>co,SidePanelRenderer:()=>uo,Sidebar:()=>mo,ToastContainer:()=>xo,Toolbar:()=>yo,ToolbarButton:()=>Io,ToolbarCenter:()=>Do,ToolbarProvider:()=>Ft,ToolbarSearchInput:()=>Wo,ToolbarSpacer:()=>zo,ToolbarToggle:()=>Eo,WindowManager:()=>Jn,WindowManagerProvider:()=>Zt,WorkspaceClient:()=>sn,computeResizedRect:()=>Mt,defaultPredefinedMessages:()=>yt,formatLabel:()=>ge,isSerializable:()=>dt,sidebarSectionToTab:()=>Mn,startPointerDrag:()=>$e,toast:()=>Po,useActivePanelContribution:()=>ln,useColorScheme:()=>on,useFormContainer:()=>at,useFormatMessage:()=>De,useMergedSidebarTabs:()=>oo,useMergedToolbarItems:()=>no,usePanelActions:()=>je,usePanelContext:()=>Hn,usePanelContextMenu:()=>Bn,usePanelContribution:()=>to,usePanelFloatingWindow:()=>Oo,usePanelFloatingWindowManager:()=>Ao,usePanelId:()=>Dt,usePanelSize:()=>Ln,usePanelState:()=>Be,usePredefinedMessages:()=>Ae,useRegistry:()=>xt,useShowContextMenu:()=>Yn,useSidebar:()=>ho,useSidebarTab:()=>bo,useStyleClasses:()=>He,useToolbar:()=>_t,useWindowManagerActions:()=>Ct,useWindowManagerState:()=>Ee});module.exports=Yo(Tr);var K=fn(require("react"),1),xn=require("react-dom");var W=require("react");var vt=require("react"),Xo={requestClose:()=>{console.warn("FormContainerContract: requestClose called but no container is present")},setDirty:()=>{},onCloseRequested:()=>()=>{},registerStateProvider:()=>()=>{},setTitle:()=>{},setIcon:()=>{},containerType:"standalone",instanceId:"standalone",onClose:()=>()=>{},onMinimize:()=>()=>{},onRestore:()=>()=>{},onResize:()=>()=>{},requestMinimize:()=>{},getDimensions:()=>null,onActivate:()=>()=>{},onDeactivate:()=>()=>{},onContainerTypeChange:()=>()=>{}},qt=(0,vt.createContext)(Xo),Ke=qt.Provider,at=()=>(0,vt.useContext)(qt),Ln=()=>{let{onResize:e,getDimensions:t}=at();return(0,vt.useSyncExternalStore)(n=>e?e(()=>n()):()=>{},()=>t?t():null)};var lt=class{registry=new Map;register(t,n,o){this.registry.set(t,{Component:n,defaultOptions:o})}get(t){return this.registry.get(t)}getRegisteredIds(){return Array.from(this.registry.keys())}},Nt=new lt;var yt={floatWindow:{id:"dockable-desktop-floatWindow",defaultMessage:"Float Window"},minimizePanel:{id:"dockable-desktop-minimizePanel",defaultMessage:"Minimize Panel"},closeTab:{id:"dockable-desktop-closeTab",defaultMessage:"Close Tab"},restorePanel:{id:"dockable-desktop-restorePanel",defaultMessage:"Restore Panel"},maximizePanel:{id:"dockable-desktop-maximizePanel",defaultMessage:"Maximize Panel"},closePanel:{id:"dockable-desktop-closePanel",defaultMessage:"Close Panel"},dockWindow:{id:"dockable-desktop-dockWindow",defaultMessage:"Dock Window"},minimize:{id:"dockable-desktop-minimize",defaultMessage:"Minimize"},maximize:{id:"dockable-desktop-maximize",defaultMessage:"Maximize"},restoreSize:{id:"dockable-desktop-restoreSize",defaultMessage:"Restore Size"},close:{id:"dockable-desktop-close",defaultMessage:"Close"},closeEmptyGroup:{id:"dockable-desktop-closeEmptyGroup",defaultMessage:"Close empty split group"},unsavedChangesTitle:{id:"dockable-desktop-unsavedChangesTitle",defaultMessage:"Unsaved Changes"},unsavedChangesMessage:{id:"dockable-desktop-unsavedChangesMessage",defaultMessage:'"{title}" has unsaved changes. Do you want to discard your changes and close?'},discardChanges:{id:"dockable-desktop-discardChanges",defaultMessage:"Discard Changes"},cancel:{id:"dockable-desktop-cancel",defaultMessage:"Cancel"},yes:{id:"dockable-desktop-yes",defaultMessage:"Yes"},no:{id:"dockable-desktop-no",defaultMessage:"No"},ok:{id:"dockable-desktop-ok",defaultMessage:"OK"},closePanelTooltip:{id:"dockable-desktop-closePanelTooltip",defaultMessage:"Close panel"},closeTooltip:{id:"dockable-desktop-closeTooltip",defaultMessage:"Close"}};var zn=require("react");function dt(e){if(e===null)return!0;if(e===void 0)return!1;let t=typeof e;if(t==="string"||t==="number"||t==="boolean")return!0;if(t==="function"||t==="symbol"||t==="bigint")return!1;if(e instanceof Date)return!0;if((0,zn.isValidElement)(e))return!1;if(Array.isArray(e))return e.every(dt);let n=Object.getPrototypeOf(e);return n!==Object.prototype&&n!==null?!1:Object.values(e).every(dt)}var qe=require("react/jsx-runtime"),Pt=(0,W.createContext)(null),jt=(0,W.createContext)(null),Dn=(0,W.createContext)(null),Wn=(0,W.createContext)(null),On=(0,W.createContext)(yt),An=(0,W.createContext)({}),He=()=>(0,W.useContext)(An),Fn=(0,W.createContext)(Nt),xt=()=>(0,W.useContext)(Fn),mn=class{listeners={};subscribe(t,n){return this.listeners[t]||(this.listeners[t]=[]),this.listeners[t].push(n),()=>{this.listeners[t]=this.listeners[t].filter(o=>o!==n)}}publish(t,n){this.listeners[t]&&this.listeners[t].forEach(o=>o(n))}},Vo={type:"leaf",id:"group-default",panels:[],activePanelId:null};function _n(e){if(!e||!e.gridRoot||!Array.isArray(e.floating)||!Array.isArray(e.minimized)||!e.panels)return null;let t=e.floating.map(n=>{if("stickyRight"in n||"stickyBottom"in n){let o=n.stickyRight&&n.stickyBottom?"bottom-right":n.stickyRight?"top-right":n.stickyBottom?"bottom-left":null,{stickyRight:f,stickyBottom:s,...k}=n;return{...k,anchor:o}}return n});return{gridRoot:e.gridRoot,floating:t,minimized:e.minimized,panels:e.panels}}function Ko(e){if(e)try{let t=_n(JSON.parse(e));if(t)return{...t,activePanelId:Object.keys(t.panels)[0]??null}}catch{}return{gridRoot:Vo,floating:[],minimized:[],panels:{},activePanelId:null}}var Zt=({children:e,client:t,formatMessage:n,predefinedMessages:o,dir:f,modalClass:s,modalBodyClass:k,sidePanelClass:b,sidePanelBodyClass:T,windowClass:w,windowBodyClass:x,zIndexBase:v})=>{let S=(0,W.useRef)(t?.registry??Nt).current,I=t?.config.formatMessage??n,N=t?.config.predefinedMessages??o,z=t?.config.dir??f,d=t?.config.zIndexBase??v??1e3,[E,R]=(0,W.useState)(()=>({...Ko(t?.initialState??null),draggedPanelId:null,dir:z||"ltr",isRtl:z==="rtl",splitRatio:Math.min(.9,Math.max(.1,t?.config.defaultSplitRatio??.5)),edgeSplitRatio:Math.min(.9,Math.max(.1,t?.config.defaultEdgeSplitRatio??.2))})),L=(0,W.useRef)(E);L.current=E;let g=(0,W.useRef)(new Set);(0,W.useEffect)(()=>{g.current.forEach(i=>i())},[E]);let P=(0,W.useCallback)(()=>L.current,[]),H=(0,W.useCallback)(i=>(g.current.add(i),()=>g.current.delete(i)),[]),B=(0,W.useRef)({}),l=(0,W.useRef)({}),D=(0,W.useMemo)(()=>({...yt,...N}),[N]),X=(0,W.useRef)(new mn),j=(0,W.useRef)(d);(0,W.useEffect)(()=>(document.documentElement.style.setProperty("--rdd-z-base",String(d)),()=>{document.documentElement.style.removeProperty("--rdd-z-base")}),[d]);let U=(0,W.useCallback)((i,y)=>X.current.subscribe(i,y),[]),pe=(0,W.useCallback)((i,y)=>{X.current.publish(i,y)},[]),ee=(0,W.useCallback)((i,y)=>{let c=typeof i.x=="string"?parseFloat(i.x):i.x,a=typeof i.y=="string"?parseFloat(i.y):i.y,G=typeof i.width=="string"?parseFloat(i.width):i.width,r=typeof i.height=="string"?parseFloat(i.height):i.height;isNaN(c)&&(c=300),isNaN(a)&&(a=150),isNaN(G)&&(G=450),isNaN(r)&&(r=350);let C=M=>y.some(A=>{let F=typeof A.x=="string"?parseFloat(A.x):A.x,Z=typeof A.y=="string"?parseFloat(A.y):A.y;return!A.maximized&&Math.abs(F-M.x)<20&&Math.abs(Z-M.y)<20}),p=0;for(;C({x:c,y:a})&&p<10;)c+=30,a+=30,p++;let u=Math.max(100,window.innerWidth||1024),h=Math.max(100,window.innerHeight||768);return(c+G>u||a+r>h)&&(c=100+p%5*30,a=100+p%5*30),c=Math.max(0,Math.min(c,u-100)),a=Math.max(0,Math.min(a,h-40)),{x:c,y:a,width:G,height:r}},[]),he=(0,W.useCallback)(i=>{R(y=>{let c=y.panels[i];if(!c)return y;if(c.state==="floating"){let a=y.floating.find(r=>r.id===i);if(!a)return y;let G=!y.floating.some(r=>r.z>a.z);return G&&y.activePanelId===i?y:(G||(j.current+=1),{...y,floating:y.floating.map(r=>r.id===i?{...r,z:G?a.z:j.current}:r),activePanelId:i})}else if(c.state==="docked"){if(y.activePanelId===i)return y;let a=G=>G.type==="leaf"?G.panels.includes(i)?{...G,activePanelId:i}:G:{...G,children:G.children.map(a)};return{...y,gridRoot:a(y.gridRoot),activePanelId:i}}return y.activePanelId===i?y:{...y,activePanelId:i}})},[]),le=(i,y)=>{if(i.type==="leaf"){let c=i.panels.indexOf(y);if(c===-1)return i;let a=i.panels.filter(C=>C!==y),G=i.activePanelId===y?a[c]||a[c-1]||a[0]||null:i.activePanelId,r={...i,panels:a,activePanelId:G};return a.length===0&&!i.keepOnEmpty?null:r}else{let c=i.children.map(r=>le(r,y)).filter(r=>r!==null);if(c.length===0)return null;if(c.length===1)return c[0];let a=i.sizes.slice(0,c.length),G=a.reduce((r,C)=>r+C,0);return{...i,children:c,sizes:a.map(r=>r/G)}}},$=(i,y,c)=>{if(i.type==="leaf"){if(i.id===y){let a=i.panels.includes(c)?i.panels:[...i.panels,c];return{...i,panels:a,activePanelId:c}}return i}else return{...i,children:i.children.map(a=>$(a,y,c))}},O=i=>{if(i.type==="leaf")return i.id;for(let y of i.children){let c=O(y);if(c)return c}return null},_=(0,W.useCallback)((i,y,c)=>{let a=i;if(c?.dedupeKey!==void 0){let h=Object.values(L.current.panels).find(M=>M.component===y&&M.dedupeKey===c.dedupeKey);h&&(a=h.id)}let G=!(a in L.current.panels),r=a!==i,C=c?.focus!==!1,u=c?.props!==void 0?dt(c.props):!0;R(h=>{let M=h.panels[a],A=S.get(y),F=c?.title||c?.title||A?.defaultOptions?.title||a,Z=c?.initialTarget||A?.defaultOptions?.initialTarget||"docked",se=A?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350},J=C?a:h.activePanelId;if(M)if(M.state==="minimized"){let ae=h.minimized.filter(de=>de.id!==a);if(Z==="floating"||!h.gridRoot){j.current+=1;let de=ee(se,h.floating);return{...h,minimized:ae,floating:[...h.floating,{...de,id:a,z:j.current}],panels:{...h.panels,[a]:{...M,state:"floating"}},activePanelId:J}}else{let de=O(h.gridRoot)||"group-default";return{...h,minimized:ae,gridRoot:$(h.gridRoot,de,a),panels:{...h.panels,[a]:{...M,state:"docked"}},activePanelId:J}}}else{if(M.state==="floating")return C&&he(a),h;{let ae=de=>de.type==="leaf"?de.panels.includes(a)?{...de,activePanelId:a}:de:{...de,children:de.children.map(ae)};return{...h,gridRoot:ae(h.gridRoot),activePanelId:J}}}let ce={id:a,title:F,component:y,state:Z==="tabbed"?"docked":Z,props:c?.props,serializable:u,dedupeKey:c?.dedupeKey},te={...h.panels,[a]:ce};if(Z==="floating"){j.current+=1;let ae=ee(se,h.floating),de=c?.anchor??A?.defaultOptions?.defaultAnchor??null;return{...h,floating:[...h.floating,{...ae,id:a,z:j.current,anchor:de}],panels:te,activePanelId:J}}else{let ae=O(h.gridRoot)||"group-default";return{...h,gridRoot:$(h.gridRoot,ae,a),panels:te,activePanelId:J}}}),G&&X.current.publish("panel:opened",{id:a,component:y}),(G||r)&&X.current.publish("layout:changed",{})},[ee,he]),q=(0,W.useCallback)(i=>{let y=i in L.current.panels;R(c=>{let a=c.panels[i];if(!a||S.get(a.component)?.defaultOptions?.canClose===!1)return c;delete B.current[i],delete l.current[i];let r={...c.panels};delete r[i];let C=le(c.gridRoot,i);return{...c,gridRoot:C||{type:"leaf",id:"group-default",panels:[],activePanelId:null},floating:c.floating.filter(p=>p.id!==i),minimized:c.minimized.filter(p=>p.id!==i),panels:r}}),y&&(X.current.publish("panel:closed",{id:i}),X.current.publish("layout:changed",{}))},[]),Y=(0,W.useCallback)((i,y)=>{B.current[i]=y},[]),ne=(0,W.useCallback)(i=>{delete B.current[i]},[]),me=(0,W.useCallback)((i,y)=>{l.current[i]=y},[]),ve=(0,W.useCallback)(i=>{delete l.current[i]},[]),ze=(0,W.useCallback)((i,y,c)=>{R(a=>{let G=a.panels[i];return G?{...a,panels:{...a.panels,[i]:{...G,dirty:y,dirtyOptions:c}}}:a})},[]),Fe=(0,W.useCallback)((i,y)=>{R(c=>{let a=c.panels[i];return a?{...c,panels:{...c.panels,[i]:{...a,title:y}}}:c})},[]),Ne=(0,W.useCallback)(async(i,y)=>{if(y?.force){q(i);return}let c=B.current[i];if(c&&!await c())return;let a=L.current.panels[i];if(a?.dirty)if(y?.onConfirm){if(!await y.onConfirm(a.dirtyOptions))return}else return;q(i)},[q]),Oe=(0,W.useCallback)(i=>{let y=L.current.panels[i]?.state!=="minimized"&&i in L.current.panels;R(c=>{let a=c.panels[i];if(!a||a.state==="minimized"||S.get(a.component)?.defaultOptions?.canMinimize===!1)return c;let r,C;if(a.state==="floating"){let u=c.floating.find(h=>h.id===i);u&&(r={x:Number(u.x),y:Number(u.y),width:Number(u.width),height:Number(u.height),anchor:u.anchor??null})}else if(a.state==="docked"){let u=h=>{if(h.type==="leaf")return h.panels.includes(i)?h.id:null;for(let M of h.children){let A=u(M);if(A)return A}return null};C=u(c.gridRoot)??void 0}let p=le(c.gridRoot,i);return{...c,gridRoot:p||{type:"leaf",id:"group-default",panels:[],activePanelId:null},floating:c.floating.filter(u=>u.id!==i),minimized:[...c.minimized,{id:i,title:a.title,component:a.component}],panels:{...c.panels,[i]:{...a,state:"minimized",previousState:a.state,lastFloatingRect:r,lastLeafId:C}}}}),y&&(X.current.publish("panel:minimized",{id:i}),X.current.publish("layout:changed",{}))},[]),Qe=(0,W.useCallback)(i=>{let y=L.current.panels[i]?.state==="minimized";R(c=>{let a=c.panels[i];if(!a||a.state!=="minimized")return c;let G=c.minimized.filter(C=>C.id!==i);if((a.previousState||"docked")==="floating"){j.current+=1;let C=S.get(a.component),p=a.lastFloatingRect||C?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350},u=ee(p,c.floating);return{...c,minimized:G,floating:[...c.floating,{...u,id:i,z:j.current,anchor:a.lastFloatingRect?.anchor??null}],panels:{...c.panels,[i]:{...a,state:"floating"}}}}else{let C=(M,A)=>M.type==="leaf"?M.id===A:M.children.some(F=>C(F,A)),p=a.lastLeafId&&C(c.gridRoot,a.lastLeafId),u=S.get(a.component),h=u?.defaultOptions?.canDrag!==!1;if(p)return{...c,minimized:G,gridRoot:$(c.gridRoot,a.lastLeafId,i),panels:{...c.panels,[i]:{...a,state:"docked"}}};if(h){j.current+=1;let M=a.lastFloatingRect||u?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350},A=ee(M,c.floating);return{...c,minimized:G,floating:[...c.floating,{...A,id:i,z:j.current,anchor:a.lastFloatingRect?.anchor??null}],panels:{...c.panels,[i]:{...a,state:"floating"}}}}else{let M=O(c.gridRoot)||"group-default";return{...c,minimized:G,gridRoot:$(c.gridRoot,M,i),panels:{...c.panels,[i]:{...a,state:"docked"}}}}}}),y&&(X.current.publish("panel:restored",{id:i}),X.current.publish("layout:changed",{}))},[ee]),et=(0,W.useCallback)((i,y,c)=>{R(a=>{let G=a.panels[i];if(!G||S.get(G.component)?.defaultOptions?.canDrag===!1)return a;let C=S.get(G.component),p=y||C?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350},u=le(a.gridRoot,i);j.current+=1;let h=ee(p,a.floating);return{...a,gridRoot:u||{type:"leaf",id:"group-default",panels:[],activePanelId:null},floating:[...a.floating,{...h,id:i,z:j.current,anchor:c??null}],panels:{...a.panels,[i]:{...G,state:"floating"}}}})},[ee]),kt=(0,W.useCallback)((i,y)=>{R(c=>{let a=c.panels[i];if(!a)return c;let G=c.floating.filter(p=>p.id!==i),r=le(c.gridRoot,i),C=y||O(r||c.gridRoot)||"group-default";return{...c,gridRoot:$(r||c.gridRoot,C,i),floating:G,panels:{...c.panels,[i]:{...a,state:"docked"}}}})},[]),Ht=(i,y,c,a,G)=>{if(i.type==="leaf"){if(i.id===y){let r={type:"leaf",id:`group-split-${Date.now()}-${Math.floor(Math.random()*1e3)}`,panels:[c],activePanelId:c},C=a==="left"||a==="right"?"horizontal":"vertical",p=a==="left"||a==="top"?[r,i]:[i,r],u=a==="left"||a==="top"?[G,1-G]:[1-G,G];return{type:"branch",orientation:C,sizes:u,children:p}}return i}else return{...i,children:i.children.map(r=>Ht(r,y,c,a,G))}},pt=(0,W.useCallback)(i=>{R(y=>({...y,draggedPanelId:i}))},[]),Te=(0,W.useCallback)((i,y,c)=>{R(a=>{let G=a.panels[i];if(!G)return a;let r=a.floating.filter(u=>u.id!==i),C=le(a.gridRoot,i),p;return c==="center"?p=$(C||a.gridRoot,y,i):p=Ht(C||a.gridRoot,y,i,c,a.splitRatio),{...a,gridRoot:p,floating:r,panels:{...a.panels,[i]:{...G,state:"docked"}},draggedPanelId:null}})},[]),Bt=(0,W.useCallback)((i,y)=>{R(c=>{let a=c.panels[i];if(!a)return c;let G=c.floating.filter(A=>A.id!==i),r=le(c.gridRoot,i),C={type:"leaf",id:`group-edge-${Date.now()}-${Math.floor(Math.random()*1e3)}`,panels:[i],activePanelId:i},p=y==="left"||y==="right"?"horizontal":"vertical",u=y==="left"||y==="top"?[C,r||c.gridRoot]:[r||c.gridRoot,C],h=c.edgeSplitRatio,M={type:"branch",orientation:p,sizes:y==="left"||y==="top"?[h,1-h]:[1-h,h],children:u};return{...c,gridRoot:M,floating:G,panels:{...c.panels,[i]:{...a,state:"docked"}},draggedPanelId:null}})},[]),$t=(0,W.useCallback)((i,y,c)=>{R(a=>{let G=a.panels[i];if(!G)return a;let r=le(a.gridRoot,i),C=h=>{if(h.type==="leaf"){if(h.id===y){let M=h.panels.filter(Z=>Z!==i),A=Math.max(0,Math.min(c,M.length)),F=[...M];return F.splice(A,0,i),{...h,panels:F,activePanelId:i}}return h}else return{...h,children:h.children.map(C)}},p=C(r||a.gridRoot),u=a.floating.filter(h=>h.id!==i);return{...a,gridRoot:p,floating:u,panels:{...a.panels,[i]:{...G,state:"docked"}},draggedPanelId:null}})},[]),gt=(0,W.useCallback)(i=>{R(y=>{let c=G=>{if(G.type==="leaf")return G.id===i&&G.canClose!==!1?null:G;{let r=G.children.map(u=>c(u)).filter(u=>u!==null);if(r.length===0)return null;if(r.length===1)return r[0];let C=G.sizes.slice(0,r.length),p=C.reduce((u,h)=>u+h,0);return{...G,children:r,sizes:C.map(u=>u/p)}}},a=c(y.gridRoot);return{...y,gridRoot:a||{type:"leaf",id:"group-default",panels:[],activePanelId:null}}})},[]),tt=(0,W.useCallback)(i=>{R(y=>({...y,floating:y.floating.map(c=>c.id===i?{...c,maximized:!c.maximized}:c)}))},[]),It=(0,W.useCallback)((i,y)=>{let c=(a,G)=>{if(a.type==="leaf")return a;if(G===i.length)return{...a,sizes:y};let r=i[G],C=a.children.map((p,u)=>u===r?c(p,G+1):p);return{...a,children:C}};R(a=>({...a,gridRoot:c(a.gridRoot,0)}))},[]),Gt=(0,W.useCallback)((i,y)=>{R(c=>({...c,floating:c.floating.map(a=>a.id===i?{...a,...y}:a)}))},[]),Ye=(0,W.useCallback)(()=>{let i=L.current.panels,y=[],c={};for(let[p,u]of Object.entries(i)){let h=l.current[p],M=h?.(),A=h!==void 0&&M!==void 0,F=A?M:u.props,Z=A?dt(M):u.serializable;Z?c[p]=A?{...u,props:F,serializable:Z}:u:y.push(p)}let a=L.current.gridRoot,G=L.current.floating,r=L.current.minimized;for(let p of y)a=le(a,p)||{type:"leaf",id:"group-default",panels:[],activePanelId:null},G=G.filter(u=>u.id!==p),r=r.filter(u=>u.id!==p);return y.length>0&&X.current.publish("layout:panels-excluded",{panels:y.map(p=>({id:p,component:i[p].component}))}),JSON.stringify({version:2,gridRoot:a,floating:G,minimized:r,panels:c})},[]),_e=(0,W.useCallback)(i=>{try{let y=_n(JSON.parse(i));if(!y)return!1;let c=Object.keys(y.panels)[0]||null;return R(a=>({...a,gridRoot:y.gridRoot,floating:y.floating,minimized:y.minimized,panels:y.panels,draggedPanelId:null,activePanelId:c})),!0}catch(y){return console.error("Failed to parse layout configuration:",y),!1}},[]),Yt=(0,W.useCallback)(i=>{R(y=>y.activePanelId===i?y:{...y,activePanelId:i})},[]),Xt=(0,W.useCallback)(i=>{R(y=>y.dir===i?y:{...y,dir:i,isRtl:i==="rtl"})},[]),Et=(0,W.useCallback)(i=>i in L.current.panels,[]),nt=(0,W.useCallback)(()=>Object.keys(L.current.panels),[]),ot=(0,W.useCallback)((i,y)=>Object.values(L.current.panels).find(a=>a.component===i&&a.dedupeKey===y)?.id??null,[]);(0,W.useEffect)(()=>{z&&R(i=>i.dir===z?i:{...i,dir:z,isRtl:z==="rtl"})},[z]);let Xe=(0,W.useRef)(new Map),Ve=(0,W.useRef)(null),Lt=(0,W.useCallback)(i=>(Ve.current=i,()=>{Ve.current=null}),[]),Vt=(0,W.useCallback)(i=>{Ve.current?.(i)},[]),zt=(0,W.useCallback)((i,y)=>(Xe.current.set(i,y),()=>{Xe.current.delete(i)}),[]),rt=(0,W.useCallback)(i=>Xe.current.get(i)?.()??[],[]),ft=(0,W.useMemo)(()=>({openPanel:_,closePanel:q,minimizePanel:Oe,restorePanel:Qe,floatPanel:et,dockPanel:kt,maximizePanel:tt,updateSplitSizes:It,updateFloatingPosition:Gt,focusPanel:he,isOpen:Et,getOpenPanelIds:nt,findPanelId:ot,saveLayout:Ye,loadLayout:_e,publish:pe,subscribe:U,setDraggedPanelId:pt,dockPanelToGroup:Te,movePanelOrder:$t,closeLeafGroup:gt,registerCloseGuard:Y,unregisterCloseGuard:ne,registerStateProvider:me,unregisterStateProvider:ve,setPanelDirty:ze,updatePanelTitle:Fe,requestClosePanel:Ne,dockPanelToWorkspaceEdge:Bt,setActivePanel:Yt,setDirection:Xt,registerPanelContextMenu:zt,getPanelContextMenuItems:rt,showContextMenu:Vt,registerContextMenuFn:Lt}),[_,q,Oe,Qe,et,kt,tt,It,Gt,he,Et,nt,ot,Ye,_e,pe,U,pt,Te,$t,gt,Y,ne,me,ve,ze,Fe,Ne,Bt,Yt,Xt,zt,rt,Vt,Lt]),it=i=>{let y=i.defaultMessage||i.id;return i.values&&Object.entries(i.values).forEach(([c,a])=>{y=y.replace(`{${c}}`,String(a))}),y},cn=(0,W.useMemo)(()=>({modalClass:s,modalBodyClass:k,sidePanelClass:b,sidePanelBodyClass:T,windowClass:w,windowBodyClass:x}),[s,k,b,T,w,x]);(0,W.useEffect)(()=>{if(process.env.NODE_ENV==="development")try{getComputedStyle(document.documentElement).getPropertyValue("--rdd-styles-loaded").trim()!=="1"&&console.error(`[react-dockable-desktop] styles.css is not imported.
2
2
  Add this to your entry file (main.tsx / index.tsx):
3
3
  import 'react-dockable-desktop/styles.css'
4
- Without it the workspace renders as a black screen with no console errors.`)}catch{}},[]),(0,D.useEffect)(()=>{if(t)return t._connect(ht),()=>{t._disconnect()}},[t,ht]);let bt=(0,D.useMemo)(()=>({getSnapshot:O,subscribeToState:$}),[O,$]);return(0,je.jsx)(Wn.Provider,{value:Vt,children:(0,je.jsx)(On.Provider,{value:R,children:(0,je.jsx)(zn.Provider,{value:bt,children:(0,je.jsx)(wt.Provider,{value:E,children:(0,je.jsx)(Zt.Provider,{value:ht,children:(0,je.jsx)(Nn.Provider,{value:I||cn,children:(0,je.jsx)(Dn.Provider,{value:l,children:e})})})})})})})},Ln=e=>()=>{};function De(e){let t=(0,D.useContext)(wt),n=(0,D.useContext)(zn),o=(0,D.useRef)(e);o.current=e;let p=(0,D.useSyncExternalStore)(e?n?.subscribeToState??Ln:Ln,()=>{let s=n?.getSnapshot()??t;return o.current?o.current(s):s},()=>{let s=n?.getSnapshot()??t;return o.current?o.current(s):s});if(!t)throw new Error("useWindowManagerState must be used within WindowManagerProvider");return e?p:t}var Mt=()=>{let e=(0,D.useContext)(Zt);if(!e)throw new Error("useWindowManagerActions must be used within WindowManagerProvider");return e},fn=()=>{let e=(0,D.useContext)(Zt);if(!e)throw new Error("useWindowManagerActionsInternal must be used within WindowManagerProvider");return e},Fe=()=>(0,D.useContext)(Nn)||(t=>{let n=t.defaultMessage||t.id;return t.values&&Object.entries(t.values).forEach(([o,p])=>{n=n.replace(`{${o}}`,String(p))}),n}),he=(e,t)=>e?typeof e=="string"?e:t(e):"",Fn=()=>{let{publish:e,subscribe:t}=Mt();return{publish:e,subscribe:t}},Be=()=>(0,D.useContext)(Dn),Wt=()=>dt().instanceId;function _n(e){let t=(0,D.useContext)(Zt),n=Wt(),o=(0,D.useRef)(e);o.current=e,(0,D.useEffect)(()=>{if(!(!t?.registerPanelContextMenu||!n))return t.registerPanelContextMenu(n,()=>o.current)},[n,t?.registerPanelContextMenu])}var be=gn(require("react"),1),hn=require("react-dom"),de=require("react/jsx-runtime");function Vo(e){return e?"touches"in e&&e.touches.length>0?{x:e.touches[0].clientX,y:e.touches[0].clientY}:{x:e.clientX,y:e.clientY}:{x:0,y:0}}function Tt(e,t){return typeof e=="string"?e:t?t(e):e.defaultMessage??e.id}function bn(e){return"separator"in e}function Ut(e){return!bn(e)&&"items"in e}var Bn=(0,be.forwardRef)(({items:e,x:t,y:n,theme:o,fmt:p,onClose:s,onMouseEnter:T,onMouseLeave:h},w)=>((0,be.useLayoutEffect)(()=>{let y=w?.current;if(!y)return;let v=y.getBoundingClientRect(),b=8;v.right>window.innerWidth-b&&(y.style.left=`${Math.max(b,window.innerWidth-v.width-b)}px`,y.style.right="auto"),v.bottom>window.innerHeight-b&&(y.style.top=`${Math.max(b,window.innerHeight-v.height-b)}px`),v.left<b&&(y.style.left=`${b}px`,y.style.right="auto"),v.top<b&&(y.style.top=`${b}px`)}),(0,hn.createPortal)((0,de.jsx)("div",{ref:w,className:`rdd-context-menu rdd-context-menu--${o} rdd-context-menu--submenu`,style:{position:"fixed",left:t,top:n,zIndex:9501},role:"menu",onMouseEnter:T,onMouseLeave:h,children:e.map((y,v)=>{if(bn(y))return(0,de.jsx)("hr",{className:"rdd-context-menu__separator",role:"separator"},v);let b=y,R=b.checkbox&&b.checkbox.active!==!1,I=R&&b.checkbox.value,k=b.disabled===!0||(R?b.checkbox.enabled===!1:!1);return(0,de.jsxs)("button",{type:"button",className:`rdd-context-menu__item${k?" rdd-context-menu__item--disabled":""}`,title:b.title?Tt(b.title,p):void 0,disabled:k,"data-cy-action":b.cyAction,onClick:()=>{k||(b.action?.(),s())},role:"menuitem","aria-checked":R?I:void 0,children:[b.icon?(0,de.jsx)("span",{className:"rdd-context-menu__icon",children:b.icon}):(0,de.jsx)("span",{className:"rdd-context-menu__icon","aria-hidden":"true"}),(0,de.jsx)("span",{className:"rdd-context-menu__label",children:Tt(b.label,p)}),R&&(0,de.jsx)("span",{className:`rdd-context-menu__checkbox${I?" rdd-context-menu__checkbox--checked":""}`,"aria-hidden":"true",children:(0,de.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,de.jsx)("rect",{x:"0.75",y:"0.75",width:"10.5",height:"10.5",rx:"2",fill:"none",stroke:"currentColor",strokeWidth:"1.5"}),I&&(0,de.jsx)("path",{d:"M2.5 6 L4.5 8.5 L9.5 3.5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})]})})]},v)})}),document.body)));Bn.displayName="ContextMenuSubMenuPanel";var Hn={visible:!1,x:0,y:0,items:[]},Jt=(0,be.forwardRef)(({theme:e="dark",formatMessageProvider:t,onShow:n,onHide:o,onOpenChange:p,className:s,style:T},h)=>{let[w,y]=(0,be.useState)(Hn),[v,b]=(0,be.useState)(null),R=(0,be.useRef)(null),I=(0,be.useRef)(null),k=(0,be.useRef)(new Map),L=(0,be.useRef)({open:null,close:null}),d=be.default.useCallback(()=>{y(Hn),b(null),L.current.open&&clearTimeout(L.current.open),L.current.close&&clearTimeout(L.current.close),L.current.open=null,L.current.close=null,o?.(),p?.(!1)},[o,p]);if((0,be.useImperativeHandle)(h,()=>({show({event:l,x:M,y:Y,items:Q}){let j=l?Vo(l):{x:M??0,y:Y??0};k.current.clear(),y({visible:!0,x:j.x,y:j.y,items:Q}),b(null),n?.(),p?.(!0)}}),[n,p]),(0,be.useEffect)(()=>{if(!w.visible)return;let l=M=>{R.current?.contains(M.target)||I.current?.contains(M.target)||d()};return document.addEventListener("pointerdown",l,{capture:!0}),window.addEventListener("click",l),()=>{document.removeEventListener("pointerdown",l,{capture:!0}),window.removeEventListener("click",l)}},[w.visible,d]),(0,be.useEffect)(()=>{if(!w.visible)return;let l=M=>{M.key==="Escape"&&d()};return document.addEventListener("keydown",l),()=>document.removeEventListener("keydown",l)},[w.visible,d]),(0,be.useLayoutEffect)(()=>{if(!w.visible||!R.current)return;let l=R.current,M=l.getBoundingClientRect(),Y=8;M.right>window.innerWidth-Y&&(l.style.left=`${Math.max(Y,window.innerWidth-M.width-Y)}px`),M.bottom>window.innerHeight-Y&&(l.style.top=`${Math.max(Y,window.innerHeight-M.height-Y)}px`),M.left<Y&&(l.style.left=`${Y}px`),M.top<Y&&(l.style.top=`${Y}px`)},[w.visible]),!w.visible)return null;let E=t,a=0,f=0;if(v!==null){let l=k.current.get(v);if(l){let M=l.getBoundingClientRect();a=document.documentElement.dir==="rtl"?window.innerWidth-M.left+2:M.right+2,f=M.top}}function C(){L.current.open&&(clearTimeout(L.current.open),L.current.open=null)}function O(){L.current.close&&(clearTimeout(L.current.close),L.current.close=null)}function $(l,M){O(),v!==null&&v!==l&&(C(),b(null)),Ut(M)&&M.items?.length?(C(),L.current.open=setTimeout(()=>{b(l)},150)):Ut(M)||(C(),v!==null&&(L.current.close=setTimeout(()=>b(null),200)))}function F(l){C(),Ut(l)&&l.items?.length&&(L.current.close=setTimeout(()=>b(null),200))}return(0,hn.createPortal)((0,de.jsxs)(de.Fragment,{children:[(0,de.jsx)("div",{ref:R,className:`rdd-context-menu rdd-context-menu--${e}${s?` ${s}`:""}`,style:{position:"fixed",left:w.x,top:w.y,zIndex:9500,...T},role:"menu","aria-orientation":"vertical",children:w.items.map((l,M)=>{if(bn(l))return(0,de.jsx)("hr",{className:"rdd-context-menu__separator",role:"separator"},M);if(Ut(l))return(0,de.jsxs)("button",{ref:re=>{k.current.set(M,re)},type:"button",className:`rdd-context-menu__item rdd-context-menu__item--has-submenu${v===M?" rdd-context-menu__item--submenu-open":""}`,title:l.title?Tt(l.title,E):void 0,onMouseEnter:()=>$(M,l),onMouseLeave:()=>F(l),role:"menuitem","aria-haspopup":"true","aria-expanded":v===M,children:[(0,de.jsx)("span",{className:"rdd-context-menu__icon","aria-hidden":"true"}),(0,de.jsx)("span",{className:"rdd-context-menu__label",children:Tt(l.label,E)}),(0,de.jsx)("span",{className:"rdd-context-menu__chevron","aria-hidden":"true",children:"\u203A"})]},M);let Y=l,Q=Y.checkbox&&Y.checkbox.active!==!1,j=Q&&Y.checkbox.value,se=Y.disabled===!0||(Q?Y.checkbox.enabled===!1:!1);return(0,de.jsxs)("button",{ref:re=>{k.current.set(M,re)},type:"button",className:`rdd-context-menu__item${se?" rdd-context-menu__item--disabled":""}`,title:Y.title?Tt(Y.title,E):void 0,disabled:se,"data-cy-action":Y.cyAction,onClick:()=>{se||(Y.action?.(),d())},onMouseEnter:()=>$(M,l),onMouseLeave:()=>F(l),role:"menuitem","aria-checked":Q?j:void 0,children:[Y.icon?(0,de.jsx)("span",{className:"rdd-context-menu__icon",children:Y.icon}):(0,de.jsx)("span",{className:"rdd-context-menu__icon","aria-hidden":"true"}),(0,de.jsx)("span",{className:"rdd-context-menu__label",children:Tt(Y.label,E)}),Q&&(0,de.jsx)("span",{className:`rdd-context-menu__checkbox${j?" rdd-context-menu__checkbox--checked":""}`,"aria-hidden":"true",children:(0,de.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,de.jsx)("rect",{x:"0.75",y:"0.75",width:"10.5",height:"10.5",rx:"2",fill:j?"currentColor":"none",stroke:"currentColor",strokeWidth:"1.5"}),j&&(0,de.jsx)("path",{d:"M2.5 6 L4.5 8.5 L9.5 3.5",stroke:"white",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})]})})]},M)})}),v!==null&&(()=>{let l=w.items[v];return(0,de.jsx)(Bn,{ref:I,items:l.items??[],x:a,y:f,theme:e,fmt:E,onClose:d,onMouseEnter:()=>O(),onMouseLeave:()=>{L.current.close=setTimeout(()=>b(null),200)}})})()]}),document.body)});Jt.displayName="ContextMenu";var ut={Component:Jt},St=be.default.createContext(null),Qt=({adapter:e=ut,children:t,...n})=>{let o=(0,be.useRef)(null),[p,s]=be.default.useState(!1),T=be.default.useCallback(h=>{o.current?.show(h)},[]);return(0,de.jsxs)(St.Provider,{value:{show:T,isOpen:p},children:[t,(0,de.jsx)(e.Component,{ref:o,...n,onShow:()=>{s(!0),n.onShow?.()},onHide:()=>{s(!1),n.onHide?.()}})]})};function $n(){let e=be.default.useContext(St);if(!e)throw new Error("useShowContextMenu must be used within a ContextMenuProvider");return e.show}var ye=require("react"),yn=require("react/jsx-runtime"),qo=0,vn=()=>`panel-${++qo}-${Date.now()}`,en=new Map,Gn={leftPanel:null,rightPanel:null,modals:[]},Yn=(0,ye.createContext)(null),Xn=(0,ye.createContext)(null),tn=({children:e})=>{let[t,n]=(0,ye.useState)(Gn),o=(0,ye.useRef)(t);o.current=t;let p=(0,ye.useCallback)((d,E)=>{en.set(d,E)},[]),s=(0,ye.useCallback)(d=>{en.delete(d)},[]),T=(0,ye.useCallback)(async(d,E,a={})=>{let f=o.current.leftPanel;if(f){let $=en.get(f.id);if($&&!await $())return null}let C=vn(),O={id:C,Component:d,props:E,containerType:"left-panel",options:a};return n($=>({...$,leftPanel:O})),C},[]),h=(0,ye.useCallback)(async(d,E,a={})=>{let f=o.current.rightPanel;if(f){let $=en.get(f.id);if($&&!await $())return null}let C=vn(),O={id:C,Component:d,props:E,containerType:"right-panel",options:a};return n($=>({...$,rightPanel:O})),C},[]),w=(0,ye.useCallback)((d,E,a={})=>{let f=vn(),C=E.title,O={...a,title:a.title||C||"Confirmation"},$={id:f,Component:d,props:E,containerType:"modal",options:O};return n(F=>({...F,modals:[...F.modals,$]})),f},[]),y=(0,ye.useCallback)(d=>{n(E=>({leftPanel:E.leftPanel?.id===d?null:E.leftPanel,rightPanel:E.rightPanel?.id===d?null:E.rightPanel,modals:E.modals.filter(a=>a.id!==d)}))},[]),v=(0,ye.useCallback)(()=>{n(Gn)},[]),b=(0,ye.useCallback)(()=>{n(d=>({...d,modals:[]}))},[]),R=(0,ye.useCallback)(d=>t.leftPanel?.id===d?t.leftPanel:t.rightPanel?.id===d?t.rightPanel:t.modals.find(E=>E.id===d),[t]),I=(0,ye.useCallback)((d,E)=>{n(a=>({leftPanel:a.leftPanel?.id===d?{...a.leftPanel,...E}:a.leftPanel,rightPanel:a.rightPanel?.id===d?{...a.rightPanel,...E}:a.rightPanel,modals:a.modals.map(f=>f.id===d?{...f,...E}:f)}))},[]),k=(0,ye.useCallback)((d,E,a)=>{I(d,{dirty:E,dirtyOptions:a})},[I]),L=(0,ye.useMemo)(()=>({openLeftPanel:T,openRightPanel:h,openModal:w,close:y,closeAll:v,closeAllModals:b,getInstance:R,updateInstance:I,setDirty:k,registerCloseHandler:p,unregisterCloseHandler:s}),[T,h,w,y,v,b,R,I,k,p,s]);return(0,yn.jsx)(Yn.Provider,{value:t,children:(0,yn.jsx)(Xn.Provider,{value:L,children:e})})},Xe=()=>{let e=(0,ye.useContext)(Yn);if(!e)throw new Error("usePanelState must be used within PanelProvider");return e},Ue=()=>{let e=(0,ye.useContext)(Xn);if(!e)throw new Error("usePanelActions must be used within PanelProvider");return e};var Ot=require("react");var _e=require("react/jsx-runtime"),Ko=({title:e,message:t,alert:n,alertType:o="info",useYesNoTitles:p=!1,onOK:s,onCancel:T})=>{let{requestClose:h,setIcon:w,setTitle:y}=dt(),v=Fe(),b=Be(),R=(0,Ot.useRef)(null);(0,Ot.useEffect)(()=>{if(e){let a=typeof e=="string"?e:v(e);y(a)}w&&w((0,_e.jsx)("span",{children:"\u2753"}))},[e,y,w,v]),(0,Ot.useEffect)(()=>{R.current?.focus()},[]);let I=typeof t=="string"?t:v(t),k=v(p?b.no:b.cancel),L=v(p?b.yes:b.ok),d=a=>{a.preventDefault(),s?.(),h()},E=()=>{T?.(),h()};return(0,_e.jsxs)("form",{onSubmit:d,className:"rdd-confirmation-form-body",children:[n&&(0,_e.jsxs)("div",{className:`rdd-confirmation-alert confirmation-alert-${o}`,children:[(0,_e.jsx)("span",{children:"\u2139\uFE0F"}),(0,_e.jsx)("span",{children:n})]}),(0,_e.jsx)("div",{style:{fontSize:"0.9rem",color:"inherit",lineHeight:1.5},children:I}),(0,_e.jsx)("hr",{style:{marginTop:"0.5rem",marginBottom:"0.5rem",opacity:.1}}),(0,_e.jsxs)("div",{className:"rdd-confirmation-actions",children:[(0,_e.jsx)("button",{type:"button",className:"rdd-btn rdd-btn-sm rdd-btn-outline",onClick:E,children:k}),(0,_e.jsx)("button",{type:"submit",className:"rdd-btn rdd-btn-sm rdd-btn-primary",ref:R,children:L})]})]})},Je=Ko;function At(e){return e==="top-left"?"top-right":e==="top-right"?"top-left":e==="bottom-left"?"bottom-right":"bottom-left"}function Ve(e){let{element:t,pointerId:n,startClientX:o,startClientY:p,captureStart:s,onMove:T,onEnd:h,activeClasses:w}=e;t.setPointerCapture(n),w?.forEach(({el:R,classes:I})=>R.classList.add(...I));let y=s(),v=R=>{T(R.clientX-o,R.clientY-p,y)},b=()=>{w?.forEach(({el:R,classes:I})=>R.classList.remove(...I)),t.removeEventListener("pointermove",v),t.removeEventListener("pointerup",b),t.removeEventListener("pointercancel",b),h?.(y)};t.addEventListener("pointermove",v),t.addEventListener("pointerup",b),t.addEventListener("pointercancel",b)}function kt(e,t,n,o,p){let{minW:s,minH:T,maxW:h,maxH:w,minX:y,minY:v}=p,{x:b,y:R,w:I,h:k}=o;if(e.includes("e")&&(I=Math.max(s,Math.min(o.w+t,h??1/0))),e.includes("w")){let L=o.w-s,d=y!=null?-(o.x-y):-1/0,E=Math.max(d,Math.min(t,L));I=o.w-E,b=o.x+E}if(e.includes("s")&&(k=Math.max(T,Math.min(o.h+n,w??1/0))),e.includes("n")){let L=o.h-T,d=v!=null?-(o.y-v):-1/0,E=Math.max(d,Math.min(n,L));k=o.h-E,R=o.y+E}return{x:b,y:R,w:I,h:k}}var nn=require("react");function on(){let[e,t]=(0,nn.useState)(()=>document.documentElement.getAttribute("data-color-scheme")==="light"?"light":"dark");return(0,nn.useEffect)(()=>{let n=()=>{t(document.documentElement.getAttribute("data-color-scheme")==="light"?"light":"dark")};n();let o=new MutationObserver(n);return o.observe(document.documentElement,{attributes:!0,attributeFilter:["data-color-scheme"]}),()=>o.disconnect()},[]),e}var g=require("react/jsx-runtime"),Vn=(e,t)=>{if(!e)return null;if(e.type==="leaf")return e.id===t?e:null;for(let n of e.children){let o=Vn(n,t);if(o)return o}return null},Ft=new Map,rn="preserved-dom-container",xn=(0,g.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{display:"block"},children:[(0,g.jsx)("rect",{x:"3",y:"3",width:"7",height:"9",rx:"1"}),(0,g.jsx)("rect",{x:"14",y:"3",width:"7",height:"5",rx:"1"}),(0,g.jsx)("rect",{x:"14",y:"12",width:"7",height:"9",rx:"1"}),(0,g.jsx)("rect",{x:"3",y:"16",width:"7",height:"5",rx:"1"})]}),It={float:(0,g.jsx)("span",{className:"rdd-menu-icon",children:(0,g.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{display:"block"},children:[(0,g.jsx)("rect",{x:"2",y:"8",width:"14",height:"14",rx:"1"}),(0,g.jsx)("rect",{x:"8",y:"2",width:"14",height:"14",rx:"1"})]})}),minimize:(0,g.jsx)("span",{className:"rdd-menu-icon",children:(0,g.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",style:{display:"block"},children:(0,g.jsx)("line",{x1:"4",y1:"18",x2:"20",y2:"18"})})}),restore:(0,g.jsx)("span",{className:"rdd-menu-icon",children:(0,g.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{display:"block"},children:(0,g.jsx)("rect",{x:"4",y:"4",width:"16",height:"16",rx:"1"})})}),maximize:(0,g.jsx)("span",{className:"rdd-menu-icon",children:(0,g.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{display:"block"},children:(0,g.jsx)("rect",{x:"2",y:"2",width:"20",height:"20",rx:"1"})})}),close:(0,g.jsx)("span",{className:"rdd-menu-icon",children:(0,g.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{display:"block"},children:(0,g.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})},qn=e=>{let t=Ft.get(e);return t||(t=document.createElement("div"),t.style.width="100%",t.style.height="100%",Ft.set(e,t)),t},Zo=(e,t,n)=>{let o=n.get(t);if(!o)return console.warn(`[react-dockable-desktop] Panel "${e}" references component key "${t}" which is not registered. Add it to the WorkspaceClient panels config:
5
- new WorkspaceClient({ panels: { "${t}": { component: YourComponent } } })`),(0,g.jsxs)("div",{className:"rdd-unregistered-panel",style:{border:"2px dashed #dc3545"},children:[(0,g.jsx)("h6",{style:{fontWeight:700,marginBottom:"0.25rem"},children:"\u26A0\uFE0F Component Unregistered"}),(0,g.jsxs)("span",{style:{fontSize:"0.875rem",color:"var(--rdd-text-secondary, #94a3b8)"},children:["Key: ",t]})]});let p=o.Component;return(0,g.jsx)(p,{panelId:e})},Cn=new Map,Qe=new Map,pt=e=>{let t=Qe.get(e);return t||(t={onClose:new Set,onMinimize:new Set,onRestore:new Set,onResize:new Set,onActivate:new Set,onDeactivate:new Set,onContainerTypeChange:new Set},Qe.set(e,t)),t},Kn=({panelId:e})=>{let t=(0,K.useRef)(null);return(0,K.useEffect)(()=>{let n=t.current;if(!n)return;let o=qn(e);n.appendChild(o);let p=new ResizeObserver(s=>{for(let T of s){let{width:h,height:w}=T.contentRect;if(h>0&&w>0){Cn.set(e,{width:h,height:w});let y=Qe.get(e);y&&y.onResize.forEach(v=>v(h,w))}}});return p.observe(n),()=>{p.disconnect();let s=document.getElementById(rn);s||(s=document.createElement("div"),s.id=rn,s.style.display="none",document.body.appendChild(s)),s.appendChild(o)}},[e]),(0,g.jsx)("div",{ref:t,style:{width:"100%",height:"100%"}})},jo=({panelId:e})=>{let t=De(),n=Rt(),o=Fe(),p=(0,K.useRef)(null),s=t.panels[e],T=s?n.get(s.component):null,h=T?.defaultOptions?.disableLivePreview||!1,w=Cn.get(e)||{width:800,height:500},y=w.width,v=w.height,I=Math.min(220/y,140/v);if((0,K.useEffect)(()=>{if(h)return;let k=p.current;if(!k)return;let L=Ft.get(e);if(L)return k.appendChild(L),()=>{let d=document.getElementById(rn);d||(d=document.createElement("div"),d.id=rn,d.style.display="none",document.body.appendChild(d)),d.appendChild(L)}},[e,h]),h){let k=y*I,L=v*I,d=s?.title||T?.defaultOptions?.title||"Panel",E=he(d,o),a=(Array.from(E)[0]||"P").toUpperCase();return(0,g.jsx)("div",{className:"rdd-taskbar-item-preview-frame",style:{width:`${k}px`,height:`${L}px`,display:"flex",alignItems:"center",justifyContent:"center",background:"rgba(108, 117, 125, 0.15)",border:"1px dashed var(--rdd-taskbar-item-border, rgba(255, 255, 255, 0.15))"},children:(0,g.jsx)("div",{style:{fontSize:"2rem",fontWeight:600,color:"var(--rdd-panel-title-color, var(--rdd-panel-text, rgba(255, 255, 255, 0.85)))",userSelect:"none"},children:a})})}return(0,g.jsx)("div",{className:"rdd-taskbar-item-preview-frame",style:{width:`${y*I}px`,height:`${v*I}px`},children:(0,g.jsx)("div",{ref:p,className:"rdd-taskbar-item-preview-host",style:{width:`${y}px`,height:`${v}px`,transform:`scale(${I})`,transformOrigin:"top left",position:"absolute",top:0,left:0,"--rdd-preview-scale":I}})})},Uo=({panelId:e,children:t})=>{let n=De(),{requestClosePanel:o,setPanelDirty:p,registerCloseGuard:s,unregisterCloseGuard:T,updatePanelTitle:h,minimizePanel:w}=Mt(),y=n.minimized.some(a=>a.id===e),v=(0,K.useRef)(y);(0,K.useEffect)(()=>{let a=Qe.get(e);a&&(y&&!v.current?a.onMinimize.forEach(f=>f()):!y&&v.current&&a.onRestore.forEach(f=>f()),v.current=y)},[y,e]);let b=n.activePanelId===e,R=(0,K.useRef)(b);(0,K.useEffect)(()=>{let a=R.current;R.current=b;let f=Qe.get(e);f&&(b&&!a?f.onActivate.forEach(C=>C()):!b&&a&&f.onDeactivate.forEach(C=>C()))},[b,e]);let I=n.panels[e]?.state,k=I==="floating"?"floating-window":"dockable-panel",L=(0,K.useRef)(k);(0,K.useEffect)(()=>{if(I==="minimized")return;let a=L.current;L.current=k;let f=Qe.get(e);f&&k!==a&&f.onContainerTypeChange.forEach(C=>C(k))},[k,I,e]),(0,K.useEffect)(()=>()=>{let a=Qe.get(e);a&&(R.current&&a.onDeactivate.forEach(f=>f()),a.onClose.forEach(f=>f()),Qe.delete(e))},[e]);let d=(0,K.useRef)(k),E=K.default.useMemo(()=>({requestClose:a=>o(e,a),setDirty:a=>p(e,a),onCloseRequested:a=>(s(e,a),()=>T(e)),setTitle:a=>h(e,a),instanceId:e,containerType:d.current,onClose:a=>{let f=pt(e);return f.onClose.add(a),()=>f.onClose.delete(a)},onMinimize:a=>{let f=pt(e);return f.onMinimize.add(a),()=>f.onMinimize.delete(a)},onRestore:a=>{let f=pt(e);return f.onRestore.add(a),()=>f.onRestore.delete(a)},onResize:a=>{let f=pt(e);return f.onResize.add(a),()=>f.onResize.delete(a)},requestMinimize:()=>w(e),getDimensions:()=>Cn.get(e)??null,onActivate:a=>{let f=pt(e);return f.onActivate.add(a),()=>f.onActivate.delete(a)},onDeactivate:a=>{let f=pt(e);return f.onDeactivate.add(a),()=>f.onDeactivate.delete(a)},onContainerTypeChange:a=>{let f=pt(e);return f.onContainerTypeChange.add(a),()=>f.onContainerTypeChange.delete(a)}}),[e,o,p,s,T,h,w]);return(0,g.jsx)(Ze,{value:E,children:t})},Zn=({node:e,path:t,onTabRightClick:n,activeDropZone:o,onHoverDropZone:p,onTabDragStart:s,hoveredTab:T,onTabHover:h,defaultPanelIcon:w,onRequestClosePanel:y})=>{let{updateSplitSizes:v}=Mt();if(e.type==="leaf")return(0,g.jsx)(Jo,{leaf:e,onTabRightClick:n,activeDropZone:o,onHoverDropZone:p,onTabDragStart:s,hoveredTab:T,onTabHover:h,defaultPanelIcon:w,onRequestClosePanel:y});let b=e.orientation==="horizontal",R=(I,k)=>{k.preventDefault();let L=k.currentTarget,d=L.parentElement,E=d?b?d.clientWidth:d.clientHeight:b?1e3:800;Ve({element:L,pointerId:k.pointerId,startClientX:k.clientX,startClientY:k.clientY,captureStart:()=>[...e.sizes],activeClasses:[{el:L,classes:["rdd-active"]},{el:document.body,classes:["rdd-resizing-active",b?"rdd-resizing-col-active":"rdd-resizing-row-active"]}],onMove:(a,f,C)=>{let O=(b?a:f)/E,$=[...C];$[I]+=O,$[I+1]-=O,$[I]>.1&&$[I+1]>.1&&v(t,$)}})};return(0,g.jsx)("div",{style:{display:"flex",flexDirection:b?"row":"column",width:"100%",height:"100%",overflow:"hidden",position:"relative"},children:e.children.map((I,k)=>{let L=e.sizes[k]*100;return(0,g.jsxs)(K.default.Fragment,{children:[(0,g.jsx)("div",{style:{flexGrow:e.sizes[k],flexBasis:`${L}%`,overflow:"hidden",position:"relative",minWidth:0,minHeight:0},children:(0,g.jsx)(Zn,{node:I,path:[...t,k],onTabRightClick:n,activeDropZone:o,onHoverDropZone:p,onTabDragStart:s,hoveredTab:T,onTabHover:h,defaultPanelIcon:w,onRequestClosePanel:y})}),k<e.children.length-1&&(0,g.jsx)("div",{onPointerDown:d=>R(k,d),style:{cursor:b?"col-resize":"row-resize",width:b?"1px":"100%",height:b?"100%":"1px",zIndex:20},className:"rdd-resizer-bar"})]},k)})})},Jo=({leaf:e,onTabRightClick:t,activeDropZone:n,onHoverDropZone:o,onTabDragStart:p,hoveredTab:s,onTabHover:T,defaultPanelIcon:h,onRequestClosePanel:w})=>{let y=De(),v=Rt(),{openPanel:b,closeLeafGroup:R,setActivePanel:I}=fn(),k=Fe(),L=Be(),{windowClass:d,windowBodyClass:E}=Ye(),a=(0,K.useRef)(null),[f,C]=(0,K.useState)({left:!1,right:!1}),O=(0,K.useCallback)(()=>{let l=a.current;l&&C({left:l.scrollLeft>0,right:l.scrollLeft<l.scrollWidth-l.clientWidth-1})},[]);(0,K.useEffect)(()=>{let l=a.current;if(!l)return;l.addEventListener("scroll",O,{passive:!0});let M=new ResizeObserver(O);return M.observe(l),O(),()=>{l.removeEventListener("scroll",O),M.disconnect()}},[O]);let $=l=>{a.current?.scrollBy({left:l==="left"?-120:120,behavior:"smooth"})},F=l=>{b(l,y.panels[l].component),I(l)};return(0,g.jsxs)("div",{"data-active-panel-id":e.activePanelId||"",className:`rdd-workspace-panel ${d??""}`,style:{overflow:"hidden",position:"relative"},children:[(0,g.jsxs)("div",{className:"rdd-workspace-tab-bar",style:{minHeight:"38px"},children:[f.left&&(0,g.jsx)("button",{className:"rdd-tab-scroll-btn rdd-tab-scroll-btn-left",onPointerDown:l=>l.stopPropagation(),onClick:()=>$("left"),tabIndex:-1,"aria-label":"Scroll tabs left",children:"\u2039"}),(0,g.jsx)("div",{ref:a,className:"rdd-tab-headers-container",style:{scrollbarWidth:"none"},onPointerMove:l=>{y.draggedPanelId&&l.target===l.currentTarget&&T(e.id,"EMPTY",e.panels.length,"right")},onPointerLeave:l=>{y.draggedPanelId&&l.target===l.currentTarget&&T(e.id,"",-1,null)},children:e.panels.map((l,M)=>{let Y=y.panels[l];if(!Y)return null;let Q=e.activePanelId===l,j=y.activePanelId===l,re=v.get(Y.component)?.defaultOptions,ue=s&&s.leafId===e.id&&s.panelId===l,pe=M===e.panels.length-1,_=s&&s.leafId===e.id&&s.panelId==="EMPTY"&&pe,W=ue?s.side==="left"?"rdd-drag-hover-left":"rdd-drag-hover-right":_?"rdd-drag-hover-right":"",z=Q?j?"rdd-active rdd-workspace-tab-active-focused":"rdd-active rdd-workspace-tab-active-unfocused":"rdd-workspace-tab-inactive";return(0,g.jsxs)("div",{"data-tab-id":l,"data-leaf-id":e.id,"data-tab-index":String(M),onClick:()=>F(l),onPointerDown:Z=>{re?.canDrag!==!1&&p(l,Z)},onContextMenu:Z=>t(l,Z),onPointerMove:Z=>{if(y.draggedPanelId&&Z.pointerType!=="touch"){let B=Z.currentTarget.getBoundingClientRect(),ve=Z.clientX-B.left<B.width/2?"left":"right";T(e.id,l,M,ve)}},onPointerLeave:()=>{y.draggedPanelId&&T(e.id,"",-1,null)},className:`rdd-workspace-tab ${z} ${W}`,style:{cursor:re?.canDrag===!1?"default":"pointer"},children:[(0,g.jsxs)("span",{className:"rdd-text-truncate",style:{maxWidth:"120px",display:"flex",alignItems:"center"},children:[(0,g.jsx)("span",{className:"rdd-workspace-tab-icon",children:re?.icon||h||xn}),(0,g.jsxs)("span",{children:[he(Y.title,k),Y.dirty?" *":""]})]}),re?.renderHeaderActions&&(0,g.jsx)("span",{className:"rdd-tab-header-actions",onClick:Z=>Z.stopPropagation(),onPointerDown:Z=>Z.stopPropagation(),children:re.renderHeaderActions(l)}),re?.canClose!==!1&&(0,g.jsx)("span",{onClick:Z=>{Z.stopPropagation(),w(l)},title:he(L.closeTab,k),className:"rdd-close-tab-x",style:{width:"18px",height:"18px",...re?.renderHeaderActions?{}:{marginInlineStart:"auto"}},children:(0,g.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,g.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]},l)})}),f.right&&(0,g.jsx)("button",{className:"rdd-tab-scroll-btn rdd-tab-scroll-btn-right",onPointerDown:l=>l.stopPropagation(),onClick:()=>$("right"),tabIndex:-1,"aria-label":"Scroll tabs right",children:"\u203A"}),e.panels.length===0&&e.keepOnEmpty&&e.canClose!==!1&&(0,g.jsx)("span",{onClick:()=>R(e.id),className:"rdd-close-tab-x rdd-header-close-empty-group",style:{width:"18px",height:"18px",cursor:"pointer"},title:he(L.closeEmptyGroup,k),children:(0,g.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,g.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),(0,g.jsxs)("div",{className:`rdd-panel-body ${E??""}`,style:{position:"relative",overflow:"hidden"},children:[e.activePanelId&&y.panels[e.activePanelId]?(0,g.jsx)(Kn,{panelId:e.activePanelId},e.activePanelId):(0,g.jsx)("div",{className:"rdd-empty-leaf-placeholder",children:(0,g.jsx)("span",{children:"Empty Workspace Section"})}),y.draggedPanelId!==null&&(0,g.jsx)("div",{className:"rdd-dock-drop-zone-overlay",children:(0,g.jsxs)("div",{className:"rdd-dock-target-cross",children:[(0,g.jsx)("div",{"data-leaf-id":e.id,"data-drop-zone":"top",onPointerEnter:()=>o(e.id,"top"),onPointerLeave:()=>o(e.id,null),className:"rdd-dock-target-box rdd-dock-target-top",children:"\u25B2"}),(0,g.jsx)("div",{"data-leaf-id":e.id,"data-drop-zone":"bottom",onPointerEnter:()=>o(e.id,"bottom"),onPointerLeave:()=>o(e.id,null),className:"rdd-dock-target-box rdd-dock-target-bottom",children:"\u25BC"}),(0,g.jsx)("div",{"data-leaf-id":e.id,"data-drop-zone":"left",onPointerEnter:()=>o(e.id,"left"),onPointerLeave:()=>o(e.id,null),className:"rdd-dock-target-box rdd-dock-target-left",children:"\u25C0"}),(0,g.jsx)("div",{"data-leaf-id":e.id,"data-drop-zone":"right",onPointerEnter:()=>o(e.id,"right"),onPointerLeave:()=>o(e.id,null),className:"rdd-dock-target-box rdd-dock-target-right",children:"\u25B6"}),(0,g.jsx)("div",{"data-leaf-id":e.id,"data-drop-zone":"center",onPointerEnter:()=>o(e.id,"center"),onPointerLeave:()=>o(e.id,null),className:"rdd-dock-target-box rdd-dock-target-center",children:"\u25A3"})]})}),y.draggedPanelId!==null&&n!==null&&n.leafId===e.id&&(0,g.jsx)("div",{className:"rdd-dock-preview-highlight",style:(()=>{let l=n.position,M=`${y.splitRatio*100}%`,Y=`${(1-y.splitRatio)*100}%`;return{left:l==="right"?Y:"0",top:l==="bottom"?Y:"0",width:l==="left"||l==="right"?M:"100%",height:l==="top"||l==="bottom"?M:"100%"}})()})]})]})},Qo=({skin:e="vscode",defaultPanelIcon:t,taskbarVisibility:n="always",contextMenuAdapter:o=ut,animations:p=!0})=>{let s=De(),T=Rt(),{restorePanel:h,minimizePanel:w,requestClosePanel:y,maximizePanel:v,updateFloatingPosition:b,focusPanel:R,floatPanel:I,setDraggedPanelId:k,dockPanelToGroup:L,movePanelOrder:d,dockPanelToWorkspaceEdge:E,setActivePanel:a,getPanelContextMenuItems:f,showContextMenu:C,registerContextMenuFn:O}=fn(),{openModal:$}=Ue(),F=Fe(),l=Be(),M=K.default.useCallback(i=>{let S=s.panels[i];y(i,{onConfirm:m=>new Promise(x=>{let G=m||S?.dirtyOptions,V=S?he(S.title,F):"Panel";$(Je,{title:G?.title||l.unsavedChangesTitle,message:G?.message||{id:l.unsavedChangesMessage.id,defaultMessage:l.unsavedChangesMessage.defaultMessage,values:{title:V}},alert:G?.alert,alertType:G?.alertType||"danger",useYesNoTitles:!0,onOK:()=>x(!0),onCancel:()=>x(!1)},{size:"small"})})})},[y,s.panels,F,$,l]),{windowClass:Y,windowBodyClass:Q}=Ye(),j=(0,K.useContext)(St),se=(0,K.useRef)(null);(0,K.useEffect)(()=>O(j!==null?i=>j.show(i):i=>se.current?.show(i)),[j,O]);let re=(0,K.useRef)(null),[ue,pe]=(0,K.useState)(!1),_=(0,K.useRef)(null),W=(0,K.useRef)(s.minimized.length),[z,Z]=(0,K.useState)(null),B=(0,K.useRef)(null),ie=(0,K.useRef)("mouse"),[ve,Pe]=(0,K.useState)(!1),Oe=j!==null?j.isOpen:ve;(0,K.useEffect)(()=>()=>{B.current&&clearTimeout(B.current)},[]),(0,K.useEffect)(()=>{z&&(s.minimized.some(S=>S.id===z.id)||Z(null))},[s.minimized,z]),(0,K.useEffect)(()=>{if(!z?.fromTouch)return;let i=S=>{S.pointerType!=="touch"||document.querySelector(".rdd-taskbar-item-tooltip")?.contains(S.target)||Z(null)};return document.addEventListener("pointerdown",i,{capture:!0}),()=>document.removeEventListener("pointerdown",i,{capture:!0})},[z?.fromTouch]);let[$e,Ae]=(0,K.useState)(null),He=(0,K.useRef)(null),[tt,nt]=(0,K.useState)({x:0,y:0}),[Lt,Bt]=(0,K.useState)(null),gt=(0,K.useRef)(null),Ie=i=>{Bt(i),gt.current=i},[$t,Gt]=(0,K.useState)(null),mt=(0,K.useRef)(null),ot=i=>{Gt(i),mt.current=i},Nt=(0,K.useContext)(wt)?.isRtl??!1,[Yt,Ke]=(0,K.useState)(null),Ge=(0,K.useRef)(null),Xt=(i,S,m,x)=>{let G=x?{leafId:i,panelId:S,index:m,side:x}:null;Ke(G),Ge.current=G},zt=(i,S)=>{let m=S?{leafId:i,position:S}:null;Ae(m),He.current=m},ft=(i,S)=>{let m=document.elementsFromPoint(i,S),x=!1,G=!1,V=!1;for(let q of m)if(q instanceof HTMLElement){if(!x&&q.dataset.dropZone){let N=q.dataset.leafId;if(N){let ne=q.dataset.dropZone;Ae({leafId:N,position:ne}),He.current={leafId:N,position:ne},x=!0}}if(!V&&q.dataset.tabId){let N=q.dataset.leafId,ne=parseInt(q.dataset.tabIndex||"0",10);if(N){let ge=q.getBoundingClientRect(),J=i-ge.left<ge.width/2?"left":"right";Ke({leafId:N,panelId:q.dataset.tabId,index:ne,side:J}),Ge.current={leafId:N,panelId:q.dataset.tabId,index:ne,side:J},V=!0}}if(!G&&q.dataset.edgeTrigger&&(Ie(q.dataset.edgeTrigger),G=!0),x&&G&&V)break}x||(Ae(null),He.current=null),G||Ie(null),V||(Ke(null),Ge.current=null)},rt=300,it=8,st=()=>{k(null),Ae(null),He.current=null,Ke(null),Ge.current=null,Ie(null)},at=i=>s.isRtl?i==="left"?"right":i==="right"?"left":i:i,ht=(i,S)=>{let m=He.current,x=Ge.current,G=gt.current,V=mt.current;if(G)E(i,at(G));else if(x){let q=x.index;x.side==="right"&&(q+=1);let N=Vn(s.gridRoot,x.leafId);if(N){let ne=N.panels.indexOf(i);ne!==-1&&ne<q&&(q-=1)}d(i,x.leafId,q)}else m?L(i,m.leafId,at(m.position)):V?I(i,void 0,Nt?At(V):V):I(i,{x:S.clientX-150,y:S.clientY-15,width:450,height:350});ot(null),st()},cn=(i,S)=>{if(S.pointerType==="mouse"&&S.button!==0)return;let m=S.currentTarget,x=S.clientX,G=S.clientY;if(S.pointerType==="touch"){let V=S.pointerId,q=!1,N=()=>{q=!0,clearTimeout(ge),m.removeEventListener("pointermove",ne),m.removeEventListener("pointerup",N),m.removeEventListener("pointercancel",N)},ne=J=>{Math.hypot(J.clientX-x,J.clientY-G)>it&&N()},ge=setTimeout(()=>{if(q)return;m.removeEventListener("pointermove",ne),m.removeEventListener("pointerup",N),m.removeEventListener("pointercancel",N);try{m.setPointerCapture(V)}catch{return}m.classList.add("rdd-long-press-active"),navigator.vibrate&&navigator.vibrate(10);let J=!1,ae=Ce=>{J||(J=!0,k(i)),nt({x:Ce.clientX,y:Ce.clientY}),ft(Ce.clientX,Ce.clientY)},fe=Ce=>{m.classList.remove("rdd-long-press-active"),m.removeEventListener("pointermove",ae),m.removeEventListener("pointerup",fe),m.removeEventListener("pointercancel",le),J?ht(i,Ce):Vt(i,Ce)},le=()=>{m.classList.remove("rdd-long-press-active"),m.removeEventListener("pointermove",ae),m.removeEventListener("pointerup",fe),m.removeEventListener("pointercancel",le),J&&st()};m.addEventListener("pointermove",ae),m.addEventListener("pointerup",fe),m.addEventListener("pointercancel",le)},rt);m.addEventListener("pointermove",ne),m.addEventListener("pointerup",N),m.addEventListener("pointercancel",N)}else{let V=!1,q=ne=>{let ge=ne.clientX-x,J=ne.clientY-G;!V&&(Math.abs(ge)>5||Math.abs(J)>5)&&(V=!0,k(i)),V&&nt({x:ne.clientX,y:ne.clientY})},N=ne=>{window.removeEventListener("pointermove",q),window.removeEventListener("pointerup",N),V&&ht(i,ne)};window.addEventListener("pointermove",q),window.addEventListener("pointerup",N)}},Vt=(i,S)=>{S.preventDefault();let m=s.panels[i];if(!m)return;let G=T.get(m.component)?.defaultOptions,V=[];if(G?.canDrag!==!1&&V.push({label:he(l.floatWindow,F),icon:It.float,action:()=>I(i)}),G?.canMinimize!==!1&&V.push({label:he(l.minimizePanel,F),icon:It.minimize,action:()=>w(i)}),V.length>0&&G?.canClose!==!1&&V.push({separator:!0}),G?.canClose!==!1&&V.push({label:he(l.closeTab,F),icon:It.close,action:()=>M(i)}),V.length===0)return;let q=f(i),N=q.length>0?[...V,{separator:!0},...q]:V;C({event:S,items:N})},bt=(i,S)=>{S.preventDefault(),Z(null),C({event:S,items:[{label:he(l.restorePanel,F),icon:It.restore,action:()=>h(i)},{label:he(l.maximizePanel,F),icon:It.maximize,action:()=>v(i)},{separator:!0},{label:he(l.closePanel,F),icon:It.close,action:()=>M(i)}]})};(0,K.useEffect)(()=>{let i=Object.keys(s.panels);for(let S of Array.from(Ft.keys()))i.includes(S)||Ft.delete(S)},[s.panels]),(0,K.useEffect)(()=>{let i=()=>{s.draggedPanelId!==null&&(k(null),Ae(null),Ke(null))};return window.addEventListener("blur",i),()=>{window.removeEventListener("blur",i)}},[s.draggedPanelId]);let r=(0,K.useRef)(null),[P,c]=(0,K.useState)({width:1024,height:768});(0,K.useEffect)(()=>{let i=r.current;if(!i)return;let S=!1,m=new ResizeObserver(x=>{if(!x||x.length===0)return;let G=x[0].contentRect;if(process.env.NODE_ENV==="development"&&G.height<10&&!S){S=!0;let V=i,q=i.parentElement;for(;q&&q!==document.documentElement&&q.getBoundingClientRect().height<10;){V=q;q=q.parentElement}let N=V.tagName.toLowerCase(),ne=V.id?` id="${V.id}"`:"",ge=V.className?` class="${V.className}"`:"",J=V===i?"the WindowManager container itself":`a wrapper element: <${N}${ne}${ge}>`;console.warn(`[react-dockable-desktop] Workspace height is 0px \u2014 the workspace will be invisible.
4
+ Without it the workspace renders as a black screen with no console errors.`)}catch{}},[]),(0,W.useEffect)(()=>{if(t)return t._connect(ft),()=>{t._disconnect()}},[t,ft]);let un=(0,W.useMemo)(()=>({getSnapshot:P,subscribeToState:H}),[P,H]);return(0,qe.jsx)(An.Provider,{value:cn,children:(0,qe.jsx)(Fn.Provider,{value:S,children:(0,qe.jsx)(Wn.Provider,{value:un,children:(0,qe.jsx)(Pt.Provider,{value:E,children:(0,qe.jsx)(jt.Provider,{value:ft,children:(0,qe.jsx)(Dn.Provider,{value:I||it,children:(0,qe.jsx)(On.Provider,{value:D,children:e})})})})})})})},Nn=e=>()=>{};function Ee(e){let t=(0,W.useContext)(Pt),n=(0,W.useContext)(Wn),o=(0,W.useRef)(e);o.current=e;let f=(0,W.useSyncExternalStore)(e?n?.subscribeToState??Nn:Nn,()=>{let s=n?.getSnapshot()??t;return o.current?o.current(s):s},()=>{let s=n?.getSnapshot()??t;return o.current?o.current(s):s});if(!t)throw new Error("useWindowManagerState must be used within WindowManagerProvider");return e?f:t}var Ct=()=>{let e=(0,W.useContext)(jt);if(!e)throw new Error("useWindowManagerActions must be used within WindowManagerProvider");return e},hn=()=>{let e=(0,W.useContext)(jt);if(!e)throw new Error("useWindowManagerActionsInternal must be used within WindowManagerProvider");return e},De=()=>(0,W.useContext)(Dn)||(t=>{let n=t.defaultMessage||t.id;return t.values&&Object.entries(t.values).forEach(([o,f])=>{n=n.replace(`{${o}}`,String(f))}),n}),ge=(e,t)=>e?typeof e=="string"?e:t(e):"",Hn=()=>{let{publish:e,subscribe:t}=Ct();return{publish:e,subscribe:t}},Ae=()=>(0,W.useContext)(On),Dt=()=>at().instanceId;function Bn(e){let t=(0,W.useContext)(jt),n=Dt(),o=(0,W.useRef)(e);o.current=e,(0,W.useEffect)(()=>{if(!(!t?.registerPanelContextMenu||!n))return t.registerPanelContextMenu(n,()=>o.current)},[n,t?.registerPanelContextMenu])}var fe=fn(require("react"),1),bn=require("react-dom"),re=require("react/jsx-runtime");function qo(e){return e?"touches"in e&&e.touches.length>0?{x:e.touches[0].clientX,y:e.touches[0].clientY}:{x:e.clientX,y:e.clientY}:{x:0,y:0}}function wt(e,t){return typeof e=="string"?e:t?t(e):e.defaultMessage??e.id}function vn(e){return"separator"in e}function Ut(e){return!vn(e)&&"items"in e}var Gn=(0,fe.forwardRef)(({items:e,x:t,y:n,theme:o,fmt:f,onClose:s,onMouseEnter:k,onMouseLeave:b},T)=>((0,fe.useLayoutEffect)(()=>{let w=T?.current;if(!w)return;let x=w.getBoundingClientRect(),v=8;x.right>window.innerWidth-v&&(w.style.left=`${Math.max(v,window.innerWidth-x.width-v)}px`,w.style.right="auto"),x.bottom>window.innerHeight-v&&(w.style.top=`${Math.max(v,window.innerHeight-x.height-v)}px`),x.left<v&&(w.style.left=`${v}px`,w.style.right="auto"),x.top<v&&(w.style.top=`${v}px`)}),(0,bn.createPortal)((0,re.jsx)("div",{ref:T,className:`rdd-context-menu rdd-context-menu--${o} rdd-context-menu--submenu`,style:{position:"fixed",left:t,top:n,zIndex:9501},role:"menu",onMouseEnter:k,onMouseLeave:b,children:e.map((w,x)=>{if(vn(w))return(0,re.jsx)("hr",{className:"rdd-context-menu__separator",role:"separator"},x);let v=w,S=v.checkbox&&v.checkbox.active!==!1,I=S&&v.checkbox.value,N=v.disabled===!0||(S?v.checkbox.enabled===!1:!1);return(0,re.jsxs)("button",{type:"button",className:`rdd-context-menu__item${N?" rdd-context-menu__item--disabled":""}`,title:v.title?wt(v.title,f):void 0,disabled:N,"data-cy-action":v.cyAction,onClick:()=>{N||(v.action?.(),s())},role:"menuitem","aria-checked":S?I:void 0,children:[v.icon?(0,re.jsx)("span",{className:"rdd-context-menu__icon",children:v.icon}):(0,re.jsx)("span",{className:"rdd-context-menu__icon","aria-hidden":"true"}),(0,re.jsx)("span",{className:"rdd-context-menu__label",children:wt(v.label,f)}),S&&(0,re.jsx)("span",{className:`rdd-context-menu__checkbox${I?" rdd-context-menu__checkbox--checked":""}`,"aria-hidden":"true",children:(0,re.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,re.jsx)("rect",{x:"0.75",y:"0.75",width:"10.5",height:"10.5",rx:"2",fill:"none",stroke:"currentColor",strokeWidth:"1.5"}),I&&(0,re.jsx)("path",{d:"M2.5 6 L4.5 8.5 L9.5 3.5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})]})})]},x)})}),document.body)));Gn.displayName="ContextMenuSubMenuPanel";var $n={visible:!1,x:0,y:0,items:[]},Jt=(0,fe.forwardRef)(({theme:e="dark",formatMessageProvider:t,onShow:n,onHide:o,onOpenChange:f,className:s,style:k},b)=>{let[T,w]=(0,fe.useState)($n),[x,v]=(0,fe.useState)(null),S=(0,fe.useRef)(null),I=(0,fe.useRef)(null),N=(0,fe.useRef)(new Map),z=(0,fe.useRef)({open:null,close:null}),d=fe.default.useCallback(()=>{w($n),v(null),z.current.open&&clearTimeout(z.current.open),z.current.close&&clearTimeout(z.current.close),z.current.open=null,z.current.close=null,o?.(),f?.(!1)},[o,f]);if((0,fe.useImperativeHandle)(b,()=>({show({event:l,x:D,y:X,items:j}){let U=l?qo(l):{x:D??0,y:X??0};N.current.clear(),w({visible:!0,x:U.x,y:U.y,items:j}),v(null),n?.(),f?.(!0)}}),[n,f]),(0,fe.useEffect)(()=>{if(!T.visible)return;let l=D=>{S.current?.contains(D.target)||I.current?.contains(D.target)||d()};return document.addEventListener("pointerdown",l,{capture:!0}),window.addEventListener("click",l),()=>{document.removeEventListener("pointerdown",l,{capture:!0}),window.removeEventListener("click",l)}},[T.visible,d]),(0,fe.useEffect)(()=>{if(!T.visible)return;let l=D=>{D.key==="Escape"&&d()};return document.addEventListener("keydown",l),()=>document.removeEventListener("keydown",l)},[T.visible,d]),(0,fe.useLayoutEffect)(()=>{if(!T.visible||!S.current)return;let l=S.current,D=l.getBoundingClientRect(),X=8;D.right>window.innerWidth-X&&(l.style.left=`${Math.max(X,window.innerWidth-D.width-X)}px`),D.bottom>window.innerHeight-X&&(l.style.top=`${Math.max(X,window.innerHeight-D.height-X)}px`),D.left<X&&(l.style.left=`${X}px`),D.top<X&&(l.style.top=`${X}px`)},[T.visible]),!T.visible)return null;let E=t,R=0,L=0;if(x!==null){let l=N.current.get(x);if(l){let D=l.getBoundingClientRect();R=document.documentElement.dir==="rtl"?window.innerWidth-D.left+2:D.right+2,L=D.top}}function g(){z.current.open&&(clearTimeout(z.current.open),z.current.open=null)}function P(){z.current.close&&(clearTimeout(z.current.close),z.current.close=null)}function H(l,D){P(),x!==null&&x!==l&&(g(),v(null)),Ut(D)&&D.items?.length?(g(),z.current.open=setTimeout(()=>{v(l)},150)):Ut(D)||(g(),x!==null&&(z.current.close=setTimeout(()=>v(null),200)))}function B(l){g(),Ut(l)&&l.items?.length&&(z.current.close=setTimeout(()=>v(null),200))}return(0,bn.createPortal)((0,re.jsxs)(re.Fragment,{children:[(0,re.jsx)("div",{ref:S,className:`rdd-context-menu rdd-context-menu--${e}${s?` ${s}`:""}`,style:{position:"fixed",left:T.x,top:T.y,zIndex:9500,...k},role:"menu","aria-orientation":"vertical",children:T.items.map((l,D)=>{if(vn(l))return(0,re.jsx)("hr",{className:"rdd-context-menu__separator",role:"separator"},D);if(Ut(l))return(0,re.jsxs)("button",{ref:ee=>{N.current.set(D,ee)},type:"button",className:`rdd-context-menu__item rdd-context-menu__item--has-submenu${x===D?" rdd-context-menu__item--submenu-open":""}`,title:l.title?wt(l.title,E):void 0,onMouseEnter:()=>H(D,l),onMouseLeave:()=>B(l),role:"menuitem","aria-haspopup":"true","aria-expanded":x===D,children:[(0,re.jsx)("span",{className:"rdd-context-menu__icon","aria-hidden":"true"}),(0,re.jsx)("span",{className:"rdd-context-menu__label",children:wt(l.label,E)}),(0,re.jsx)("span",{className:"rdd-context-menu__chevron","aria-hidden":"true",children:"\u203A"})]},D);let X=l,j=X.checkbox&&X.checkbox.active!==!1,U=j&&X.checkbox.value,pe=X.disabled===!0||(j?X.checkbox.enabled===!1:!1);return(0,re.jsxs)("button",{ref:ee=>{N.current.set(D,ee)},type:"button",className:`rdd-context-menu__item${pe?" rdd-context-menu__item--disabled":""}`,title:X.title?wt(X.title,E):void 0,disabled:pe,"data-cy-action":X.cyAction,onClick:()=>{pe||(X.action?.(),d())},onMouseEnter:()=>H(D,l),onMouseLeave:()=>B(l),role:"menuitem","aria-checked":j?U:void 0,children:[X.icon?(0,re.jsx)("span",{className:"rdd-context-menu__icon",children:X.icon}):(0,re.jsx)("span",{className:"rdd-context-menu__icon","aria-hidden":"true"}),(0,re.jsx)("span",{className:"rdd-context-menu__label",children:wt(X.label,E)}),j&&(0,re.jsx)("span",{className:`rdd-context-menu__checkbox${U?" rdd-context-menu__checkbox--checked":""}`,"aria-hidden":"true",children:(0,re.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,re.jsx)("rect",{x:"0.75",y:"0.75",width:"10.5",height:"10.5",rx:"2",fill:U?"currentColor":"none",stroke:"currentColor",strokeWidth:"1.5"}),U&&(0,re.jsx)("path",{d:"M2.5 6 L4.5 8.5 L9.5 3.5",stroke:"white",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})]})})]},D)})}),x!==null&&(()=>{let l=T.items[x];return(0,re.jsx)(Gn,{ref:I,items:l.items??[],x:R,y:L,theme:e,fmt:E,onClose:d,onMouseEnter:()=>P(),onMouseLeave:()=>{z.current.close=setTimeout(()=>v(null),200)}})})()]}),document.body)});Jt.displayName="ContextMenu";var ct={Component:Jt},Rt=fe.default.createContext(null),Qt=({adapter:e=ct,children:t,...n})=>{let o=(0,fe.useRef)(null),[f,s]=fe.default.useState(!1),k=fe.default.useCallback(b=>{o.current?.show(b)},[]);return(0,re.jsxs)(Rt.Provider,{value:{show:k,isOpen:f},children:[t,(0,re.jsx)(e.Component,{ref:o,...n,onShow:()=>{s(!0),n.onShow?.()},onHide:()=>{s(!1),n.onHide?.()}})]})};function Yn(){let e=fe.default.useContext(Rt);if(!e)throw new Error("useShowContextMenu must be used within a ContextMenuProvider");return e.show}var be=require("react"),Pn=require("react/jsx-runtime"),jo=0,yn=()=>`panel-${++jo}-${Date.now()}`,en=new Map,Xn={leftPanel:null,rightPanel:null,modals:[]},Vn=(0,be.createContext)(null),Kn=(0,be.createContext)(null),tn=({children:e})=>{let[t,n]=(0,be.useState)(Xn),o=(0,be.useRef)(t);o.current=t;let f=(0,be.useCallback)((d,E)=>{en.set(d,E)},[]),s=(0,be.useCallback)(d=>{en.delete(d)},[]),k=(0,be.useCallback)(async(d,E,R={})=>{let L=o.current.leftPanel;if(L){let H=en.get(L.id);if(H&&!await H())return null}let g=yn(),P={id:g,Component:d,props:E,containerType:"left-panel",options:R};return n(H=>({...H,leftPanel:P})),g},[]),b=(0,be.useCallback)(async(d,E,R={})=>{let L=o.current.rightPanel;if(L){let H=en.get(L.id);if(H&&!await H())return null}let g=yn(),P={id:g,Component:d,props:E,containerType:"right-panel",options:R};return n(H=>({...H,rightPanel:P})),g},[]),T=(0,be.useCallback)((d,E,R={})=>{let L=yn(),g=E.title,P={...R,title:R.title||g||"Confirmation"},H={id:L,Component:d,props:E,containerType:"modal",options:P};return n(B=>({...B,modals:[...B.modals,H]})),L},[]),w=(0,be.useCallback)(d=>{n(E=>({leftPanel:E.leftPanel?.id===d?null:E.leftPanel,rightPanel:E.rightPanel?.id===d?null:E.rightPanel,modals:E.modals.filter(R=>R.id!==d)}))},[]),x=(0,be.useCallback)(()=>{n(Xn)},[]),v=(0,be.useCallback)(()=>{n(d=>({...d,modals:[]}))},[]),S=(0,be.useCallback)(d=>t.leftPanel?.id===d?t.leftPanel:t.rightPanel?.id===d?t.rightPanel:t.modals.find(E=>E.id===d),[t]),I=(0,be.useCallback)((d,E)=>{n(R=>({leftPanel:R.leftPanel?.id===d?{...R.leftPanel,...E}:R.leftPanel,rightPanel:R.rightPanel?.id===d?{...R.rightPanel,...E}:R.rightPanel,modals:R.modals.map(L=>L.id===d?{...L,...E}:L)}))},[]),N=(0,be.useCallback)((d,E,R)=>{I(d,{dirty:E,dirtyOptions:R})},[I]),z=(0,be.useMemo)(()=>({openLeftPanel:k,openRightPanel:b,openModal:T,close:w,closeAll:x,closeAllModals:v,getInstance:S,updateInstance:I,setDirty:N,registerCloseHandler:f,unregisterCloseHandler:s}),[k,b,T,w,x,v,S,I,N,f,s]);return(0,Pn.jsx)(Vn.Provider,{value:t,children:(0,Pn.jsx)(Kn.Provider,{value:z,children:e})})},Be=()=>{let e=(0,be.useContext)(Vn);if(!e)throw new Error("usePanelState must be used within PanelProvider");return e},je=()=>{let e=(0,be.useContext)(Kn);if(!e)throw new Error("usePanelActions must be used within PanelProvider");return e};var Wt=require("react");var We=require("react/jsx-runtime"),Zo=({title:e,message:t,alert:n,alertType:o="info",useYesNoTitles:f=!1,onOK:s,onCancel:k})=>{let{requestClose:b,setIcon:T,setTitle:w}=at(),x=De(),v=Ae(),S=(0,Wt.useRef)(null);(0,Wt.useEffect)(()=>{if(e){let R=typeof e=="string"?e:x(e);w(R)}T&&T((0,We.jsx)("span",{children:"\u2753"}))},[e,w,T,x]),(0,Wt.useEffect)(()=>{S.current?.focus()},[]);let I=typeof t=="string"?t:x(t),N=x(f?v.no:v.cancel),z=x(f?v.yes:v.ok),d=R=>{R.preventDefault(),s?.(),b()},E=()=>{k?.(),b()};return(0,We.jsxs)("form",{onSubmit:d,className:"rdd-confirmation-form-body",children:[n&&(0,We.jsxs)("div",{className:`rdd-confirmation-alert confirmation-alert-${o}`,children:[(0,We.jsx)("span",{children:"\u2139\uFE0F"}),(0,We.jsx)("span",{children:n})]}),(0,We.jsx)("div",{style:{fontSize:"0.9rem",color:"inherit",lineHeight:1.5},children:I}),(0,We.jsx)("hr",{style:{marginTop:"0.5rem",marginBottom:"0.5rem",opacity:.1}}),(0,We.jsxs)("div",{className:"rdd-confirmation-actions",children:[(0,We.jsx)("button",{type:"button",className:"rdd-btn rdd-btn-sm rdd-btn-outline",onClick:E,children:N}),(0,We.jsx)("button",{type:"submit",className:"rdd-btn rdd-btn-sm rdd-btn-primary",ref:S,children:z})]})]})},Ze=Zo;function Ot(e){return e==="top-left"?"top-right":e==="top-right"?"top-left":e==="bottom-left"?"bottom-right":"bottom-left"}function $e(e){let{element:t,pointerId:n,startClientX:o,startClientY:f,captureStart:s,onMove:k,onEnd:b,activeClasses:T}=e;t.setPointerCapture(n),T?.forEach(({el:S,classes:I})=>S.classList.add(...I));let w=s(),x=S=>{k(S.clientX-o,S.clientY-f,w)},v=()=>{T?.forEach(({el:S,classes:I})=>S.classList.remove(...I)),t.removeEventListener("pointermove",x),t.removeEventListener("pointerup",v),t.removeEventListener("pointercancel",v),b?.(w)};t.addEventListener("pointermove",x),t.addEventListener("pointerup",v),t.addEventListener("pointercancel",v)}function Mt(e,t,n,o,f){let{minW:s,minH:k,maxW:b,maxH:T,minX:w,minY:x}=f,{x:v,y:S,w:I,h:N}=o;if(e.includes("e")&&(I=Math.max(s,Math.min(o.w+t,b??1/0))),e.includes("w")){let z=o.w-s,d=w!=null?-(o.x-w):-1/0,E=Math.max(d,Math.min(t,z));I=o.w-E,v=o.x+E}if(e.includes("s")&&(N=Math.max(k,Math.min(o.h+n,T??1/0))),e.includes("n")){let z=o.h-k,d=x!=null?-(o.y-x):-1/0,E=Math.max(d,Math.min(n,z));N=o.h-E,S=o.y+E}return{x:v,y:S,w:I,h:N}}var nn=require("react");function on(){let[e,t]=(0,nn.useState)(()=>document.documentElement.getAttribute("data-color-scheme")==="light"?"light":"dark");return(0,nn.useEffect)(()=>{let n=()=>{t(document.documentElement.getAttribute("data-color-scheme")==="light"?"light":"dark")};n();let o=new MutationObserver(n);return o.observe(document.documentElement,{attributes:!0,attributeFilter:["data-color-scheme"]}),()=>o.disconnect()},[]),e}var m=require("react/jsx-runtime"),qn=(e,t)=>{if(!e)return null;if(e.type==="leaf")return e.id===t?e:null;for(let n of e.children){let o=qn(n,t);if(o)return o}return null},At=new Map,rn="preserved-dom-container",Cn=(0,m.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{display:"block"},children:[(0,m.jsx)("rect",{x:"3",y:"3",width:"7",height:"9",rx:"1"}),(0,m.jsx)("rect",{x:"14",y:"3",width:"7",height:"5",rx:"1"}),(0,m.jsx)("rect",{x:"14",y:"12",width:"7",height:"9",rx:"1"}),(0,m.jsx)("rect",{x:"3",y:"16",width:"7",height:"5",rx:"1"})]}),Tt={float:(0,m.jsx)("span",{className:"rdd-menu-icon",children:(0,m.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{display:"block"},children:[(0,m.jsx)("rect",{x:"2",y:"8",width:"14",height:"14",rx:"1"}),(0,m.jsx)("rect",{x:"8",y:"2",width:"14",height:"14",rx:"1"})]})}),minimize:(0,m.jsx)("span",{className:"rdd-menu-icon",children:(0,m.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",style:{display:"block"},children:(0,m.jsx)("line",{x1:"4",y1:"18",x2:"20",y2:"18"})})}),restore:(0,m.jsx)("span",{className:"rdd-menu-icon",children:(0,m.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{display:"block"},children:(0,m.jsx)("rect",{x:"4",y:"4",width:"16",height:"16",rx:"1"})})}),maximize:(0,m.jsx)("span",{className:"rdd-menu-icon",children:(0,m.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{display:"block"},children:(0,m.jsx)("rect",{x:"2",y:"2",width:"20",height:"20",rx:"1"})})}),close:(0,m.jsx)("span",{className:"rdd-menu-icon",children:(0,m.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{display:"block"},children:(0,m.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})},jn=e=>{let t=At.get(e);return t||(t=document.createElement("div"),t.style.width="100%",t.style.height="100%",At.set(e,t)),t},Uo=(e,t,n)=>{let o=t.component,f=n.get(o);if(!f)return console.warn(`[react-dockable-desktop] Panel "${e}" references component key "${o}" which is not registered. Add it to the WorkspaceClient panels config:
5
+ new WorkspaceClient({ panels: { "${o}": { component: YourComponent } } })`),(0,m.jsxs)("div",{className:"rdd-unregistered-panel",style:{border:"2px dashed #dc3545"},children:[(0,m.jsx)("h6",{style:{fontWeight:700,marginBottom:"0.25rem"},children:"\u26A0\uFE0F Component Unregistered"}),(0,m.jsxs)("span",{style:{fontSize:"0.875rem",color:"var(--rdd-text-secondary, #94a3b8)"},children:["Key: ",o]})]});let s=f.Component;return(0,m.jsx)(s,{...t.props??{},panelId:e})},wn=new Map,Ue=new Map,ut=e=>{let t=Ue.get(e);return t||(t={onClose:new Set,onMinimize:new Set,onRestore:new Set,onResize:new Set,onActivate:new Set,onDeactivate:new Set,onContainerTypeChange:new Set},Ue.set(e,t)),t},Zn=({panelId:e})=>{let t=(0,K.useRef)(null);return(0,K.useEffect)(()=>{let n=t.current;if(!n)return;let o=jn(e);n.appendChild(o);let f=new ResizeObserver(s=>{for(let k of s){let{width:b,height:T}=k.contentRect;if(b>0&&T>0){wn.set(e,{width:b,height:T});let w=Ue.get(e);w&&w.onResize.forEach(x=>x(b,T))}}});return f.observe(n),()=>{f.disconnect();let s=document.getElementById(rn);s||(s=document.createElement("div"),s.id=rn,s.style.display="none",document.body.appendChild(s)),s.appendChild(o)}},[e]),(0,m.jsx)("div",{ref:t,style:{width:"100%",height:"100%"}})},Jo=({panelId:e})=>{let t=Ee(),n=xt(),o=De(),f=(0,K.useRef)(null),s=t.panels[e],k=s?n.get(s.component):null,b=k?.defaultOptions?.disableLivePreview||!1,T=wn.get(e)||{width:800,height:500},w=T.width,x=T.height,I=Math.min(220/w,140/x);if((0,K.useEffect)(()=>{if(b)return;let N=f.current;if(!N)return;let z=At.get(e);if(z)return N.appendChild(z),()=>{let d=document.getElementById(rn);d||(d=document.createElement("div"),d.id=rn,d.style.display="none",document.body.appendChild(d)),d.appendChild(z)}},[e,b]),b){let N=w*I,z=x*I,d=s?.title||k?.defaultOptions?.title||"Panel",E=ge(d,o),R=(Array.from(E)[0]||"P").toUpperCase();return(0,m.jsx)("div",{className:"rdd-taskbar-item-preview-frame",style:{width:`${N}px`,height:`${z}px`,display:"flex",alignItems:"center",justifyContent:"center",background:"rgba(108, 117, 125, 0.15)",border:"1px dashed var(--rdd-taskbar-item-border, rgba(255, 255, 255, 0.15))"},children:(0,m.jsx)("div",{style:{fontSize:"2rem",fontWeight:600,color:"var(--rdd-panel-title-color, var(--rdd-panel-text, rgba(255, 255, 255, 0.85)))",userSelect:"none"},children:R})})}return(0,m.jsx)("div",{className:"rdd-taskbar-item-preview-frame",style:{width:`${w*I}px`,height:`${x*I}px`},children:(0,m.jsx)("div",{ref:f,className:"rdd-taskbar-item-preview-host",style:{width:`${w}px`,height:`${x}px`,transform:`scale(${I})`,transformOrigin:"top left",position:"absolute",top:0,left:0,"--rdd-preview-scale":I}})})},Qo=({panelId:e,children:t})=>{let n=Ee(),{requestClosePanel:o,setPanelDirty:f,registerCloseGuard:s,unregisterCloseGuard:k,registerStateProvider:b,unregisterStateProvider:T,updatePanelTitle:w,minimizePanel:x}=Ct(),v=n.minimized.some(g=>g.id===e),S=(0,K.useRef)(v);(0,K.useEffect)(()=>{let g=Ue.get(e);g&&(v&&!S.current?g.onMinimize.forEach(P=>P()):!v&&S.current&&g.onRestore.forEach(P=>P()),S.current=v)},[v,e]);let I=n.activePanelId===e,N=(0,K.useRef)(I);(0,K.useEffect)(()=>{let g=N.current;N.current=I;let P=Ue.get(e);P&&(I&&!g?P.onActivate.forEach(H=>H()):!I&&g&&P.onDeactivate.forEach(H=>H()))},[I,e]);let z=n.panels[e]?.state,d=z==="floating"?"floating-window":"dockable-panel",E=(0,K.useRef)(d);(0,K.useEffect)(()=>{if(z==="minimized")return;let g=E.current;E.current=d;let P=Ue.get(e);P&&d!==g&&P.onContainerTypeChange.forEach(H=>H(d))},[d,z,e]),(0,K.useEffect)(()=>()=>{let g=Ue.get(e);g&&(N.current&&g.onDeactivate.forEach(P=>P()),g.onClose.forEach(P=>P()),Ue.delete(e))},[e]);let R=(0,K.useRef)(d),L=K.default.useMemo(()=>({requestClose:g=>o(e,g),setDirty:g=>f(e,g),onCloseRequested:g=>(s(e,g),()=>k(e)),registerStateProvider:g=>(b(e,g),()=>T(e)),setTitle:g=>w(e,g),instanceId:e,containerType:R.current,onClose:g=>{let P=ut(e);return P.onClose.add(g),()=>P.onClose.delete(g)},onMinimize:g=>{let P=ut(e);return P.onMinimize.add(g),()=>P.onMinimize.delete(g)},onRestore:g=>{let P=ut(e);return P.onRestore.add(g),()=>P.onRestore.delete(g)},onResize:g=>{let P=ut(e);return P.onResize.add(g),()=>P.onResize.delete(g)},requestMinimize:()=>x(e),getDimensions:()=>wn.get(e)??null,onActivate:g=>{let P=ut(e);return P.onActivate.add(g),()=>P.onActivate.delete(g)},onDeactivate:g=>{let P=ut(e);return P.onDeactivate.add(g),()=>P.onDeactivate.delete(g)},onContainerTypeChange:g=>{let P=ut(e);return P.onContainerTypeChange.add(g),()=>P.onContainerTypeChange.delete(g)}}),[e,o,f,s,k,b,T,w,x]);return(0,m.jsx)(Ke,{value:L,children:t})},Un=({node:e,path:t,onTabRightClick:n,activeDropZone:o,onHoverDropZone:f,onTabDragStart:s,hoveredTab:k,onTabHover:b,defaultPanelIcon:T,onRequestClosePanel:w})=>{let{updateSplitSizes:x}=Ct();if(e.type==="leaf")return(0,m.jsx)(er,{leaf:e,onTabRightClick:n,activeDropZone:o,onHoverDropZone:f,onTabDragStart:s,hoveredTab:k,onTabHover:b,defaultPanelIcon:T,onRequestClosePanel:w});let v=e.orientation==="horizontal",S=(I,N)=>{N.preventDefault();let z=N.currentTarget,d=z.parentElement,E=d?v?d.clientWidth:d.clientHeight:v?1e3:800;$e({element:z,pointerId:N.pointerId,startClientX:N.clientX,startClientY:N.clientY,captureStart:()=>[...e.sizes],activeClasses:[{el:z,classes:["rdd-active"]},{el:document.body,classes:["rdd-resizing-active",v?"rdd-resizing-col-active":"rdd-resizing-row-active"]}],onMove:(R,L,g)=>{let P=(v?R:L)/E,H=[...g];H[I]+=P,H[I+1]-=P,H[I]>.1&&H[I+1]>.1&&x(t,H)}})};return(0,m.jsx)("div",{style:{display:"flex",flexDirection:v?"row":"column",width:"100%",height:"100%",overflow:"hidden",position:"relative"},children:e.children.map((I,N)=>{let z=e.sizes[N]*100;return(0,m.jsxs)(K.default.Fragment,{children:[(0,m.jsx)("div",{style:{flexGrow:e.sizes[N],flexBasis:`${z}%`,overflow:"hidden",position:"relative",minWidth:0,minHeight:0},children:(0,m.jsx)(Un,{node:I,path:[...t,N],onTabRightClick:n,activeDropZone:o,onHoverDropZone:f,onTabDragStart:s,hoveredTab:k,onTabHover:b,defaultPanelIcon:T,onRequestClosePanel:w})}),N<e.children.length-1&&(0,m.jsx)("div",{onPointerDown:d=>S(N,d),style:{cursor:v?"col-resize":"row-resize",width:v?"1px":"100%",height:v?"100%":"1px",zIndex:20},className:"rdd-resizer-bar"})]},N)})})},er=({leaf:e,onTabRightClick:t,activeDropZone:n,onHoverDropZone:o,onTabDragStart:f,hoveredTab:s,onTabHover:k,defaultPanelIcon:b,onRequestClosePanel:T})=>{let w=Ee(),x=xt(),{openPanel:v,closeLeafGroup:S,setActivePanel:I}=hn(),N=De(),z=Ae(),{windowClass:d,windowBodyClass:E}=He(),R=(0,K.useRef)(null),[L,g]=(0,K.useState)({left:!1,right:!1}),P=(0,K.useCallback)(()=>{let l=R.current;l&&g({left:l.scrollLeft>0,right:l.scrollLeft<l.scrollWidth-l.clientWidth-1})},[]);(0,K.useEffect)(()=>{let l=R.current;if(!l)return;l.addEventListener("scroll",P,{passive:!0});let D=new ResizeObserver(P);return D.observe(l),P(),()=>{l.removeEventListener("scroll",P),D.disconnect()}},[P]);let H=l=>{R.current?.scrollBy({left:l==="left"?-120:120,behavior:"smooth"})},B=l=>{v(l,w.panels[l].component),I(l)};return(0,m.jsxs)("div",{"data-active-panel-id":e.activePanelId||"",className:`rdd-workspace-panel ${d??""}`,style:{overflow:"hidden",position:"relative"},children:[(0,m.jsxs)("div",{className:"rdd-workspace-tab-bar",style:{minHeight:"38px"},children:[L.left&&(0,m.jsx)("button",{className:"rdd-tab-scroll-btn rdd-tab-scroll-btn-left",onPointerDown:l=>l.stopPropagation(),onClick:()=>H("left"),tabIndex:-1,"aria-label":"Scroll tabs left",children:"\u2039"}),(0,m.jsx)("div",{ref:R,className:"rdd-tab-headers-container",style:{scrollbarWidth:"none"},onPointerMove:l=>{w.draggedPanelId&&l.target===l.currentTarget&&k(e.id,"EMPTY",e.panels.length,"right")},onPointerLeave:l=>{w.draggedPanelId&&l.target===l.currentTarget&&k(e.id,"",-1,null)},children:e.panels.map((l,D)=>{let X=w.panels[l];if(!X)return null;let j=e.activePanelId===l,U=w.activePanelId===l,ee=x.get(X.component)?.defaultOptions,he=s&&s.leafId===e.id&&s.panelId===l,le=D===e.panels.length-1,$=s&&s.leafId===e.id&&s.panelId==="EMPTY"&&le,O=he?s.side==="left"?"rdd-drag-hover-left":"rdd-drag-hover-right":$?"rdd-drag-hover-right":"",_=j?U?"rdd-active rdd-workspace-tab-active-focused":"rdd-active rdd-workspace-tab-active-unfocused":"rdd-workspace-tab-inactive";return(0,m.jsxs)("div",{"data-tab-id":l,"data-leaf-id":e.id,"data-tab-index":String(D),onClick:()=>B(l),onPointerDown:q=>{ee?.canDrag!==!1&&f(l,q)},onContextMenu:q=>t(l,q),onPointerMove:q=>{if(w.draggedPanelId&&q.pointerType!=="touch"){let Y=q.currentTarget.getBoundingClientRect(),me=q.clientX-Y.left<Y.width/2?"left":"right";k(e.id,l,D,me)}},onPointerLeave:()=>{w.draggedPanelId&&k(e.id,"",-1,null)},className:`rdd-workspace-tab ${_} ${O}`,style:{cursor:ee?.canDrag===!1?"default":"pointer"},children:[(0,m.jsxs)("span",{className:"rdd-text-truncate",style:{maxWidth:"120px",display:"flex",alignItems:"center"},children:[(0,m.jsx)("span",{className:"rdd-workspace-tab-icon",children:ee?.icon||b||Cn}),(0,m.jsxs)("span",{children:[ge(X.title,N),X.dirty?" *":""]})]}),ee?.renderHeaderActions&&(0,m.jsx)("span",{className:"rdd-tab-header-actions",onClick:q=>q.stopPropagation(),onPointerDown:q=>q.stopPropagation(),children:ee.renderHeaderActions(l)}),ee?.canClose!==!1&&(0,m.jsx)("span",{onClick:q=>{q.stopPropagation(),T(l)},title:ge(z.closeTab,N),className:"rdd-close-tab-x",style:{width:"18px",height:"18px",...ee?.renderHeaderActions?{}:{marginInlineStart:"auto"}},children:(0,m.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,m.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]},l)})}),L.right&&(0,m.jsx)("button",{className:"rdd-tab-scroll-btn rdd-tab-scroll-btn-right",onPointerDown:l=>l.stopPropagation(),onClick:()=>H("right"),tabIndex:-1,"aria-label":"Scroll tabs right",children:"\u203A"}),e.panels.length===0&&e.keepOnEmpty&&e.canClose!==!1&&(0,m.jsx)("span",{onClick:()=>S(e.id),className:"rdd-close-tab-x rdd-header-close-empty-group",style:{width:"18px",height:"18px",cursor:"pointer"},title:ge(z.closeEmptyGroup,N),children:(0,m.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,m.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),(0,m.jsxs)("div",{className:`rdd-panel-body ${E??""}`,style:{position:"relative",overflow:"hidden"},children:[e.activePanelId&&w.panels[e.activePanelId]?(0,m.jsx)(Zn,{panelId:e.activePanelId},e.activePanelId):(0,m.jsx)("div",{className:"rdd-empty-leaf-placeholder",children:(0,m.jsx)("span",{children:"Empty Workspace Section"})}),w.draggedPanelId!==null&&(0,m.jsx)("div",{className:"rdd-dock-drop-zone-overlay",children:(0,m.jsxs)("div",{className:"rdd-dock-target-cross",children:[(0,m.jsx)("div",{"data-leaf-id":e.id,"data-drop-zone":"top",onPointerEnter:()=>o(e.id,"top"),onPointerLeave:()=>o(e.id,null),className:"rdd-dock-target-box rdd-dock-target-top",children:"\u25B2"}),(0,m.jsx)("div",{"data-leaf-id":e.id,"data-drop-zone":"bottom",onPointerEnter:()=>o(e.id,"bottom"),onPointerLeave:()=>o(e.id,null),className:"rdd-dock-target-box rdd-dock-target-bottom",children:"\u25BC"}),(0,m.jsx)("div",{"data-leaf-id":e.id,"data-drop-zone":"left",onPointerEnter:()=>o(e.id,"left"),onPointerLeave:()=>o(e.id,null),className:"rdd-dock-target-box rdd-dock-target-left",children:"\u25C0"}),(0,m.jsx)("div",{"data-leaf-id":e.id,"data-drop-zone":"right",onPointerEnter:()=>o(e.id,"right"),onPointerLeave:()=>o(e.id,null),className:"rdd-dock-target-box rdd-dock-target-right",children:"\u25B6"}),(0,m.jsx)("div",{"data-leaf-id":e.id,"data-drop-zone":"center",onPointerEnter:()=>o(e.id,"center"),onPointerLeave:()=>o(e.id,null),className:"rdd-dock-target-box rdd-dock-target-center",children:"\u25A3"})]})}),w.draggedPanelId!==null&&n!==null&&n.leafId===e.id&&(0,m.jsx)("div",{className:"rdd-dock-preview-highlight",style:(()=>{let l=n.position,D=`${w.splitRatio*100}%`,X=`${(1-w.splitRatio)*100}%`;return{left:l==="right"?X:"0",top:l==="bottom"?X:"0",width:l==="left"||l==="right"?D:"100%",height:l==="top"||l==="bottom"?D:"100%"}})()})]})]})},tr=({skin:e="vscode",defaultPanelIcon:t,taskbarVisibility:n="always",contextMenuAdapter:o=ct,animations:f=!0})=>{let s=Ee(),k=xt(),{restorePanel:b,minimizePanel:T,requestClosePanel:w,maximizePanel:x,updateFloatingPosition:v,focusPanel:S,floatPanel:I,setDraggedPanelId:N,dockPanelToGroup:z,movePanelOrder:d,dockPanelToWorkspaceEdge:E,setActivePanel:R,getPanelContextMenuItems:L,showContextMenu:g,registerContextMenuFn:P}=hn(),{openModal:H}=je(),B=De(),l=Ae(),D=K.default.useCallback(r=>{let C=s.panels[r];w(r,{onConfirm:p=>new Promise(u=>{let h=p||C?.dirtyOptions,M=C?ge(C.title,B):"Panel";H(Ze,{title:h?.title||l.unsavedChangesTitle,message:h?.message||{id:l.unsavedChangesMessage.id,defaultMessage:l.unsavedChangesMessage.defaultMessage,values:{title:M}},alert:h?.alert,alertType:h?.alertType||"danger",useYesNoTitles:!0,onOK:()=>u(!0),onCancel:()=>u(!1)},{size:"small"})})})},[w,s.panels,B,H,l]),{windowClass:X,windowBodyClass:j}=He(),U=(0,K.useContext)(Rt),pe=(0,K.useRef)(null);(0,K.useEffect)(()=>P(U!==null?r=>U.show(r):r=>pe.current?.show(r)),[U,P]);let ee=(0,K.useRef)(null),[he,le]=(0,K.useState)(!1),$=(0,K.useRef)(null),O=(0,K.useRef)(s.minimized.length),[_,q]=(0,K.useState)(null),Y=(0,K.useRef)(null),ne=(0,K.useRef)("mouse"),[me,ve]=(0,K.useState)(!1),ze=U!==null?U.isOpen:me;(0,K.useEffect)(()=>()=>{Y.current&&clearTimeout(Y.current)},[]),(0,K.useEffect)(()=>{_&&(s.minimized.some(C=>C.id===_.id)||q(null))},[s.minimized,_]),(0,K.useEffect)(()=>{if(!_?.fromTouch)return;let r=C=>{C.pointerType!=="touch"||document.querySelector(".rdd-taskbar-item-tooltip")?.contains(C.target)||q(null)};return document.addEventListener("pointerdown",r,{capture:!0}),()=>document.removeEventListener("pointerdown",r,{capture:!0})},[_?.fromTouch]);let[Fe,Ne]=(0,K.useState)(null),Oe=(0,K.useRef)(null),[Qe,et]=(0,K.useState)({x:0,y:0}),[kt,Ht]=(0,K.useState)(null),pt=(0,K.useRef)(null),Te=r=>{Ht(r),pt.current=r},[Bt,$t]=(0,K.useState)(null),gt=(0,K.useRef)(null),tt=r=>{$t(r),gt.current=r},It=(0,K.useContext)(Pt)?.isRtl??!1,[Gt,Ye]=(0,K.useState)(null),_e=(0,K.useRef)(null),Yt=(r,C,p,u)=>{let h=u?{leafId:r,panelId:C,index:p,side:u}:null;Ye(h),_e.current=h},Xt=(r,C)=>{let p=C?{leafId:r,position:C}:null;Ne(p),Oe.current=p},Et=(r,C)=>{let p=document.elementsFromPoint(r,C),u=!1,h=!1,M=!1;for(let A of p)if(A instanceof HTMLElement){if(!u&&A.dataset.dropZone){let F=A.dataset.leafId;if(F){let Z=A.dataset.dropZone;Ne({leafId:F,position:Z}),Oe.current={leafId:F,position:Z},u=!0}}if(!M&&A.dataset.tabId){let F=A.dataset.leafId,Z=parseInt(A.dataset.tabIndex||"0",10);if(F){let se=A.getBoundingClientRect(),J=r-se.left<se.width/2?"left":"right";Ye({leafId:F,panelId:A.dataset.tabId,index:Z,side:J}),_e.current={leafId:F,panelId:A.dataset.tabId,index:Z,side:J},M=!0}}if(!h&&A.dataset.edgeTrigger&&(Te(A.dataset.edgeTrigger),h=!0),u&&h&&M)break}u||(Ne(null),Oe.current=null),h||Te(null),M||(Ye(null),_e.current=null)},nt=300,ot=8,Xe=()=>{N(null),Ne(null),Oe.current=null,Ye(null),_e.current=null,Te(null)},Ve=r=>s.isRtl?r==="left"?"right":r==="right"?"left":r:r,Lt=(r,C)=>{let p=Oe.current,u=_e.current,h=pt.current,M=gt.current;if(h)E(r,Ve(h));else if(u){let A=u.index;u.side==="right"&&(A+=1);let F=qn(s.gridRoot,u.leafId);if(F){let Z=F.panels.indexOf(r);Z!==-1&&Z<A&&(A-=1)}d(r,u.leafId,A)}else p?z(r,p.leafId,Ve(p.position)):M?I(r,void 0,It?Ot(M):M):I(r,{x:C.clientX-150,y:C.clientY-15,width:450,height:350});tt(null),Xe()},Vt=(r,C)=>{if(C.pointerType==="mouse"&&C.button!==0)return;let p=C.currentTarget,u=C.clientX,h=C.clientY;if(C.pointerType==="touch"){let M=C.pointerId,A=!1,F=()=>{A=!0,clearTimeout(se),p.removeEventListener("pointermove",Z),p.removeEventListener("pointerup",F),p.removeEventListener("pointercancel",F)},Z=J=>{Math.hypot(J.clientX-u,J.clientY-h)>ot&&F()},se=setTimeout(()=>{if(A)return;p.removeEventListener("pointermove",Z),p.removeEventListener("pointerup",F),p.removeEventListener("pointercancel",F);try{p.setPointerCapture(M)}catch{return}p.classList.add("rdd-long-press-active"),navigator.vibrate&&navigator.vibrate(10);let J=!1,oe=ae=>{J||(J=!0,N(r)),et({x:ae.clientX,y:ae.clientY}),Et(ae.clientX,ae.clientY)},ce=ae=>{p.classList.remove("rdd-long-press-active"),p.removeEventListener("pointermove",oe),p.removeEventListener("pointerup",ce),p.removeEventListener("pointercancel",te),J?Lt(r,ae):zt(r,ae)},te=()=>{p.classList.remove("rdd-long-press-active"),p.removeEventListener("pointermove",oe),p.removeEventListener("pointerup",ce),p.removeEventListener("pointercancel",te),J&&Xe()};p.addEventListener("pointermove",oe),p.addEventListener("pointerup",ce),p.addEventListener("pointercancel",te)},nt);p.addEventListener("pointermove",Z),p.addEventListener("pointerup",F),p.addEventListener("pointercancel",F)}else{let M=!1,A=Z=>{let se=Z.clientX-u,J=Z.clientY-h;!M&&(Math.abs(se)>5||Math.abs(J)>5)&&(M=!0,N(r)),M&&et({x:Z.clientX,y:Z.clientY})},F=Z=>{window.removeEventListener("pointermove",A),window.removeEventListener("pointerup",F),M&&Lt(r,Z)};window.addEventListener("pointermove",A),window.addEventListener("pointerup",F)}},zt=(r,C)=>{C.preventDefault();let p=s.panels[r];if(!p)return;let h=k.get(p.component)?.defaultOptions,M=[];if(h?.canDrag!==!1&&M.push({label:ge(l.floatWindow,B),icon:Tt.float,action:()=>I(r)}),h?.canMinimize!==!1&&M.push({label:ge(l.minimizePanel,B),icon:Tt.minimize,action:()=>T(r)}),M.length>0&&h?.canClose!==!1&&M.push({separator:!0}),h?.canClose!==!1&&M.push({label:ge(l.closeTab,B),icon:Tt.close,action:()=>D(r)}),M.length===0)return;let A=L(r),F=A.length>0?[...M,{separator:!0},...A]:M;g({event:C,items:F})},rt=(r,C)=>{C.preventDefault(),q(null),g({event:C,items:[{label:ge(l.restorePanel,B),icon:Tt.restore,action:()=>b(r)},{label:ge(l.maximizePanel,B),icon:Tt.maximize,action:()=>x(r)},{separator:!0},{label:ge(l.closePanel,B),icon:Tt.close,action:()=>D(r)}]})};(0,K.useEffect)(()=>{let r=Object.keys(s.panels);for(let C of Array.from(At.keys()))r.includes(C)||At.delete(C)},[s.panels]),(0,K.useEffect)(()=>{let r=()=>{s.draggedPanelId!==null&&(N(null),Ne(null),Ye(null))};return window.addEventListener("blur",r),()=>{window.removeEventListener("blur",r)}},[s.draggedPanelId]);let ft=(0,K.useRef)(null),[it,cn]=(0,K.useState)({width:1024,height:768});(0,K.useEffect)(()=>{let r=ft.current;if(!r)return;let C=!1,p=new ResizeObserver(u=>{if(!u||u.length===0)return;let h=u[0].contentRect;if(process.env.NODE_ENV==="development"&&h.height<10&&!C){C=!0;let M=r,A=r.parentElement;for(;A&&A!==document.documentElement&&A.getBoundingClientRect().height<10;){M=A;A=A.parentElement}let F=M.tagName.toLowerCase(),Z=M.id?` id="${M.id}"`:"",se=M.className?` class="${M.className}"`:"",J=M===r?"the WindowManager container itself":`a wrapper element: <${F}${Z}${se}>`;console.warn(`[react-dockable-desktop] Workspace height is 0px \u2014 the workspace will be invisible.
6
6
 
7
7
  Zero height found at: ${J}
8
8
 
@@ -20,5 +20,5 @@ Fix options:
20
20
  .layout { display: flex; flex-direction: column; height: 100vh; }
21
21
  .workspace { flex: 1; min-height: 0; }
22
22
 
23
- 3. Verify styles.css is imported \u2014 it anchors html, body, #root to 100% height.`)}c({width:Math.max(100,G.width),height:Math.max(100,G.height)})});return m.observe(i),()=>{m.disconnect()}},[]),(0,K.useEffect)(()=>{let i=P.width,S=P.height;s.floating.forEach(m=>{let x=typeof m.width=="string"?parseFloat(m.width):m.width,G=typeof m.height=="string"?parseFloat(m.height):m.height,V=typeof m.x=="string"?parseFloat(m.x):m.x,q=typeof m.y=="string"?parseFloat(m.y):m.y,N=x,ne=G,ge=V,J=q,ae=!1;if(N>i&&(N=Math.max(200,i-20),ae=!0),ne>S&&(ne=Math.max(150,S-40),ae=!0),!m.anchor){let fe=i-100;ge>fe&&(ge=Math.max(0,fe),ae=!0);let le=S-40;J>le&&(J=Math.max(0,le),ae=!0)}ae&&b(m.id,{x:ge,y:J,width:N,height:ne})})},[P,s.floating,b]),(0,K.useEffect)(()=>{let i=S=>{if(S.button!==0)return;let m=S.target;if(!m||typeof m.closest!="function")return;let x=m.closest(".rdd-floating-window");if(x){let V=x.getAttribute("data-window-id");V&&(a(V),R(V));return}let G=m.closest(".rdd-workspace-panel");if(G){let V=G.getAttribute("data-active-panel-id");V&&a(V)}};return document.addEventListener("pointerdown",i),()=>{document.removeEventListener("pointerdown",i)}},[R,a]);let u=(i,S)=>{let m=s.floating.find(J=>J.id===i);if(!m||m.maximized)return;R(i);let x=S.currentTarget,G=x.closest(".rdd-floating-window"),V=S.clientX,q=S.clientY,N=G?G.offsetLeft:0,ne=G?G.offsetTop:0,ge=()=>{let J=He.current,ae=Ge.current,fe=gt.current,le=mt.current;if(le)b(i,{anchor:Nt?At(le):le});else if(fe)E(i,at(fe));else if(ae){let Ce=ae.index;ae.side==="right"&&(Ce+=1),d(i,ae.leafId,Ce)}else J&&L(i,J.leafId,at(J.position));ot(null),st()};if(S.pointerType==="touch"){let J=S.pointerId,ae=!1,fe=()=>{ae=!0,clearTimeout(Ce),x.removeEventListener("pointermove",le),x.removeEventListener("pointerup",fe),x.removeEventListener("pointercancel",fe)},le=ze=>{Math.hypot(ze.clientX-V,ze.clientY-q)>it&&fe()},Ce=setTimeout(()=>{if(ae)return;x.removeEventListener("pointermove",le),x.removeEventListener("pointerup",fe),x.removeEventListener("pointercancel",fe);try{x.setPointerCapture(J)}catch{return}x.classList.add("rdd-long-press-active"),k(i);let ze=vt=>{let yt=vt.clientX-V,Pt=vt.clientY-q;b(i,{x:N+yt,y:ne+Pt,anchor:null}),ft(vt.clientX,vt.clientY)},ke=()=>{x.classList.remove("rdd-long-press-active"),x.removeEventListener("pointermove",ze),x.removeEventListener("pointerup",ke),x.removeEventListener("pointercancel",lt),ge()},lt=()=>{x.classList.remove("rdd-long-press-active"),x.removeEventListener("pointermove",ze),x.removeEventListener("pointerup",ke),x.removeEventListener("pointercancel",lt),st()};x.addEventListener("pointermove",ze),x.addEventListener("pointerup",ke),x.addEventListener("pointercancel",lt)},rt);x.addEventListener("pointermove",le),x.addEventListener("pointerup",fe),x.addEventListener("pointercancel",fe)}else{let J=!1,ae=le=>{let Ce=le.clientX-V,ze=le.clientY-q;!J&&(Math.abs(Ce)>5||Math.abs(ze)>5)&&(J=!0,k(i)),J&&b(i,{x:N+Ce,y:ne+ze,anchor:null})},fe=()=>{window.removeEventListener("pointermove",ae),window.removeEventListener("pointerup",fe),J&&ge()};window.addEventListener("pointermove",ae),window.addEventListener("pointerup",fe)}},H=(i,S,m)=>{m.stopPropagation();let x=s.floating.find(ze=>ze.id===i);if(!x||x.maximized)return;R(i);let G=m.currentTarget,V=G.closest(".rdd-floating-window"),q={x:V?V.offsetLeft:0,y:V?V.offsetTop:0,w:V?V.offsetWidth:400,h:V?V.offsetHeight:300},N=P.width,ne=P.height,ge=typeof x.x=="string"?parseFloat(x.x):x.x,J=typeof x.y=="string"?parseFloat(x.y):x.y,ae=typeof x.width=="string"?parseFloat(x.width):x.width,fe=typeof x.height=="string"?parseFloat(x.height):x.height,le=S==="se"&&Math.abs(ge+ae-N)<4,Ce=S==="se"&&Math.abs(J+fe-ne)<4;Ve({element:G,pointerId:m.pointerId,startClientX:m.clientX,startClientY:m.clientY,captureStart:()=>q,onMove:(ze,ke,lt)=>{let vt=kt(S,ze,ke,lt,{minW:200,minH:150}),{x:yt,y:Pt,w:un,h:pn}=vt;le&&(yt=N-un,yt<0&&(yt=0,un=N)),Ce&&(Pt=ne-pn,Pt<0&&(Pt=0,pn=ne)),b(i,{x:yt,y:Pt,width:un,height:pn})}})},A=i=>{if(re.current){let S=i==="left"?-150:150;re.current.scrollBy({left:S,behavior:"smooth"})}},ee=(0,K.useCallback)(()=>{_.current&&clearTimeout(_.current),pe(!0)},[]),oe=(0,K.useCallback)(()=>{_.current=setTimeout(()=>pe(!1),400)},[]);(0,K.useEffect)(()=>{n==="autohide"&&s.minimized.length>W.current&&(_.current&&clearTimeout(_.current),pe(!0),_.current=setTimeout(()=>pe(!1),2e3)),W.current=s.minimized.length},[s.minimized.length,n]);let te=on();return(0,K.useEffect)(()=>(e?document.documentElement.setAttribute("data-workspace-skin",e):document.documentElement.removeAttribute("data-workspace-skin"),()=>{document.documentElement.removeAttribute("data-workspace-skin")}),[e]),(0,K.useEffect)(()=>(te==="light"?document.documentElement.setAttribute("data-color-scheme","light"):document.documentElement.removeAttribute("data-color-scheme"),()=>{document.documentElement.removeAttribute("data-color-scheme")}),[te]),(0,K.useEffect)(()=>(p?document.documentElement.classList.remove("rdd-no-animations"):document.documentElement.classList.add("rdd-no-animations"),()=>{document.documentElement.classList.remove("rdd-no-animations")}),[p]),(0,g.jsxs)("div",{className:`rdd-workspace${p?"":" rdd-no-animations"}`,"data-workspace-skin":e,"data-color-scheme":te,style:{display:"flex",flexDirection:"column",position:"relative",width:"100%",height:"100%",overflow:"hidden",userSelect:"none"},dir:s.dir,children:[(0,g.jsxs)("div",{ref:r,className:s.draggedPanelId?"rdd-dragging-active":void 0,style:{flexGrow:1,width:"100%",position:"relative",overflow:"hidden"},children:[s.draggedPanelId!==null&&(0,g.jsxs)(g.Fragment,{children:[(0,g.jsx)("div",{"data-edge-trigger":"left",className:"rdd-workspace-edge-trigger rdd-edge-trigger-left",onPointerEnter:()=>Ie("left"),onPointerLeave:()=>Ie(null)}),(0,g.jsx)("div",{"data-edge-trigger":"right",className:"rdd-workspace-edge-trigger rdd-edge-trigger-right",onPointerEnter:()=>Ie("right"),onPointerLeave:()=>Ie(null)}),(0,g.jsx)("div",{"data-edge-trigger":"top",className:"rdd-workspace-edge-trigger rdd-edge-trigger-top",onPointerEnter:()=>Ie("top"),onPointerLeave:()=>Ie(null)}),(0,g.jsx)("div",{"data-edge-trigger":"bottom",className:"rdd-workspace-edge-trigger rdd-edge-trigger-bottom",onPointerEnter:()=>Ie("bottom"),onPointerLeave:()=>Ie(null)})]}),s.draggedPanelId!==null&&["top-left","top-right","bottom-left","bottom-right"].map(i=>(0,g.jsx)("div",{className:`rdd-corner-zone rdd-corner-zone--${i}${$t===i?" rdd-corner-zone--hovered":""}`,onPointerEnter:()=>{ot(i),Ie(null)},onPointerLeave:()=>ot(null),"aria-hidden":"true"},i)),s.draggedPanelId!==null&&Lt!==null&&(0,g.jsx)("div",{className:"rdd-workspace-edge-preview",style:(()=>{let i=`${s.edgeSplitRatio*100}%`;switch(Lt){case"left":return{left:0,top:0,bottom:0,width:i};case"right":return{right:0,top:0,bottom:0,width:i};case"top":return{top:0,left:0,right:0,height:i};case"bottom":return{bottom:0,left:0,right:0,height:i}}})()}),(0,g.jsx)("div",{style:{width:"100%",height:"100%",overflow:"hidden",position:"relative"},children:s.gridRoot?(0,g.jsx)(Zn,{node:s.gridRoot,path:[],onTabRightClick:Vt,activeDropZone:$e,onHoverDropZone:zt,onTabDragStart:cn,hoveredTab:Yt,onTabHover:Xt,defaultPanelIcon:t,onRequestClosePanel:M}):(0,g.jsx)("div",{className:"rdd-empty-workspace-grid",children:"Grid Empty"})}),s.floating.map(i=>{let S=s.panels[i.id];if(!S)return null;let m=i.maximized,x=s.draggedPanelId===i.id,G=s.activePanelId===i.id,q=T.get(S.component)?.defaultOptions;return(0,g.jsxs)("div",{"data-window-id":i.id,dir:s.dir,onPointerDownCapture:()=>{a(i.id),R(i.id)},className:`rdd-floating-window ${m?"rdd-maximized":""} ${G?"rdd-window-focused":""} ${Y??""}`,style:(()=>{let ge=typeof i.width=="number"?`${i.width}px`:i.width,J=typeof i.height=="number"?`${i.height}px`:i.height;if(m)return{position:"absolute",left:0,top:0,width:"100%",height:"100%",zIndex:i.z,pointerEvents:x?"none":"auto"};if(i.anchor){let ae=s.floating.filter(ke=>ke.anchor===i.anchor&&!ke.maximized),fe=ae.findIndex(ke=>ke.id===i.id),le=8;for(let ke=0;ke<fe;ke++){let lt=typeof ae[ke].height=="number"?ae[ke].height:parseFloat(ae[ke].height);le+=lt+8}let Ce=i.anchor.startsWith("top");return{position:"absolute",[i.anchor.endsWith("-right")?"insetInlineEnd":"insetInlineStart"]:8,[Ce?"top":"bottom"]:le,width:ge,height:J,zIndex:i.z,transition:x?"none":"top 0.2s ease, bottom 0.2s ease",pointerEvents:x?"none":"auto"}}return{position:"absolute",left:typeof i.x=="number"?`${i.x}px`:i.x,top:typeof i.y=="number"?`${i.y}px`:i.y,width:ge,height:J,zIndex:i.z,pointerEvents:x?"none":"auto"}})(),children:[(0,g.jsxs)("div",{onDoubleClick:()=>v(i.id),onPointerDown:N=>{q?.canDrag!==!1&&u(i.id,N)},className:"rdd-floating-window-titlebar rdd-cursor-move",style:{cursor:m||q?.canDrag===!1?"default":"move"},children:[(0,g.jsxs)("span",{className:"rdd-floating-window-title",children:[(0,g.jsx)("span",{className:"rdd-window-title-icon",children:q?.icon||t||xn}),(0,g.jsxs)("span",{children:[he(S.title,F),S.dirty?" *":""]})]}),(0,g.jsxs)("div",{className:"rdd-titlebar-actions",style:{gap:"var(--rdd-header-button-gap, 4px)"},onPointerDown:N=>N.stopPropagation(),children:[q?.renderHeaderActions&&(0,g.jsx)("div",{className:"rdd-window-header-actions",children:q.renderHeaderActions(i.id)}),f(i.id).length>0&&(0,g.jsx)("button",{type:"button",className:"rdd-custom-tab-btn rdd-btn-more-actions",title:"More actions",onClick:N=>{N.stopPropagation();let ne=f(i.id);ne.length!==0&&C({event:N,items:ne})},children:(0,g.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"currentColor",style:{display:"block"},children:[(0,g.jsx)("circle",{cx:"12",cy:"5",r:"2"}),(0,g.jsx)("circle",{cx:"12",cy:"12",r:"2"}),(0,g.jsx)("circle",{cx:"12",cy:"19",r:"2"})]})}),(0,g.jsx)("button",{type:"button",title:m?he(l.restoreSize,F):he(l.maximize,F),onClick:()=>v(i.id),className:"rdd-custom-tab-btn rdd-btn-maximize-tab",children:(0,g.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,g.jsx)("rect",{x:"4",y:"4",width:"16",height:"16",rx:"1.5"})})}),q?.canMinimize!==!1&&(0,g.jsx)("button",{type:"button",title:he(l.minimize,F),onClick:()=>w(i.id),className:"rdd-custom-tab-btn rdd-btn-minimize-tab",children:(0,g.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"3",children:(0,g.jsx)("path",{d:"M5 12h14"})})}),q?.canClose!==!1&&(0,g.jsx)("button",{type:"button",title:he(l.close,F),onClick:()=>M(i.id),className:"rdd-custom-tab-btn rdd-btn-close-tab",children:(0,g.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"3",children:(0,g.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]})]}),(0,g.jsx)("div",{className:Q??void 0,style:{flexGrow:1,width:"100%",overflow:"hidden",position:"relative",isolation:"isolate"},children:(0,g.jsx)(Kn,{panelId:i.id},i.id)}),!m&&(0,g.jsxs)(g.Fragment,{children:[(0,g.jsx)("div",{onPointerDown:N=>H(i.id,"n",N),className:"rdd-resize-handle rdd-resize-n"}),(0,g.jsx)("div",{onPointerDown:N=>H(i.id,"ne",N),className:"rdd-resize-handle rdd-resize-ne"}),(0,g.jsx)("div",{onPointerDown:N=>H(i.id,"e",N),className:"rdd-resize-handle rdd-resize-e"}),(0,g.jsx)("div",{onPointerDown:N=>H(i.id,"se",N),className:"rdd-resize-handle rdd-resize-se"}),(0,g.jsx)("div",{onPointerDown:N=>H(i.id,"s",N),className:"rdd-resize-handle rdd-resize-s"}),(0,g.jsx)("div",{onPointerDown:N=>H(i.id,"sw",N),className:"rdd-resize-handle rdd-resize-sw"}),(0,g.jsx)("div",{onPointerDown:N=>H(i.id,"w",N),className:"rdd-resize-handle rdd-resize-w"}),(0,g.jsx)("div",{onPointerDown:N=>H(i.id,"nw",N),className:"rdd-resize-handle rdd-resize-nw"})]})]},i.id)})]}),(n==="always"||s.minimized.length>0)&&(0,g.jsxs)("div",{className:["rdd-taskbar-footer-container",`taskbar-mode-${n}`,n==="autohide"&&ue?"rdd-taskbar-expanded":""].filter(Boolean).join(" "),style:{height:"48px",zIndex:100},onPointerEnter:n==="autohide"?ee:void 0,onPointerLeave:n==="autohide"?oe:void 0,children:[n==="autohide"&&(0,g.jsx)("div",{className:"rdd-taskbar-peek-handle"}),(0,g.jsx)("button",{type:"button",onClick:()=>A("left"),className:"rdd-taskbar-nav-btn",style:{display:s.minimized.length>4?"block":"none"},children:"\u25C0"}),(0,g.jsx)("div",{ref:re,className:"rdd-taskbar-items-container",style:{scrollSnapType:"x mandatory"},children:s.minimized.map(i=>{let m=T.get(i.component)?.defaultOptions?.icon||t||xn;return(0,g.jsx)("div",{onClick:()=>{ie.current!=="touch"&&(Z(null),h(i.id))},onContextMenu:x=>bt(i.id,x),onPointerDown:x=>{if(ie.current=x.pointerType,x.pointerType!=="touch")return;let G=x.currentTarget,V=x.clientX,q=x.clientY,N=x.pointerId,ne=!1,ge=()=>{ne=!0,clearTimeout(fe),G.removeEventListener("pointermove",ae),G.removeEventListener("pointerup",J),G.removeEventListener("pointercancel",ge)},J=()=>{ge();let le=G.getBoundingClientRect();z?.id===i.id?(h(i.id),Z(null)):Z({id:i.id,rect:le,title:i.title,component:i.component,fromTouch:!0})},ae=le=>{Math.hypot(le.clientX-V,le.clientY-q)>it&&ge()},fe=setTimeout(()=>{if(ne)return;G.removeEventListener("pointermove",ae),G.removeEventListener("pointerup",J),G.removeEventListener("pointercancel",ge);try{G.setPointerCapture(N)}catch{return}navigator.vibrate&&navigator.vibrate(10);let le=Ce=>{G.removeEventListener("pointerup",le),G.removeEventListener("pointercancel",le),bt(i.id,Ce)};G.addEventListener("pointerup",le),G.addEventListener("pointercancel",le)},rt);G.addEventListener("pointermove",ae),G.addEventListener("pointerup",J),G.addEventListener("pointercancel",ge)},onPointerEnter:x=>{if(x.pointerType==="touch"||Oe)return;B.current&&clearTimeout(B.current);let G=x.currentTarget.getBoundingClientRect();x.clientX>=G.left&&x.clientX<=G.right&&x.clientY>=G.top&&x.clientY<=G.bottom&&Z({id:i.id,rect:G,title:i.title,component:i.component})},onPointerLeave:x=>{x.pointerType!=="touch"&&(B.current=setTimeout(()=>{Z(null)},150))},className:"rdd-taskbar-glassmorphic-item",style:{backdropFilter:"blur(6px)",transition:"all 0.2s",cursor:"pointer",scrollSnapAlign:"start",width:"38px",height:"38px",position:"relative",padding:0},children:(0,g.jsx)("span",{className:"rdd-taskbar-item-icon",children:m})},i.id)})}),z&&(0,Pn.createPortal)((0,g.jsxs)("div",{className:"rdd-taskbar-item-tooltip",dir:s.dir,style:{position:"fixed",left:`${z.rect.left+z.rect.width/2}px`,top:`${z.rect.top-8}px`,transform:"translateX(-50%) translateY(-100%)",opacity:1,pointerEvents:"auto",zIndex:999999},onPointerEnter:()=>{B.current&&clearTimeout(B.current)},onPointerLeave:i=>{i.pointerType!=="touch"&&Z(null)},onClick:()=>{h(z.id),Z(null)},onContextMenu:i=>bt(z.id,i),onPointerDown:i=>{if(i.pointerType!=="touch")return;let S=z.id,m=i.currentTarget,x=i.clientX,G=i.clientY,V=i.pointerId,q=!1,N=()=>{q=!0,clearTimeout(ge),m.removeEventListener("pointermove",ne),m.removeEventListener("pointerup",N),m.removeEventListener("pointercancel",N)},ne=J=>{Math.hypot(J.clientX-x,J.clientY-G)>it&&N()},ge=setTimeout(()=>{if(q)return;m.removeEventListener("pointermove",ne),m.removeEventListener("pointerup",N),m.removeEventListener("pointercancel",N);try{m.setPointerCapture(V)}catch{return}navigator.vibrate&&navigator.vibrate(10);let J=ae=>{m.removeEventListener("pointerup",J),m.removeEventListener("pointercancel",J),bt(S,ae)};m.addEventListener("pointerup",J),m.addEventListener("pointercancel",J)},rt);m.addEventListener("pointermove",ne),m.addEventListener("pointerup",N),m.addEventListener("pointercancel",N)},children:[(0,g.jsxs)("div",{className:"rdd-tooltip-header-row",children:[(0,g.jsxs)("span",{className:"rdd-tooltip-title-text rdd-text-truncate",style:{maxWidth:"140px"},children:[he(z.title,F),s.panels[z.id]?.dirty?" *":""]}),(0,g.jsx)("span",{onClick:i=>{i.stopPropagation(),M(z.id),Z(null)},title:he(l.closePanel,F),className:"rdd-tooltip-close-x",children:(0,g.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,g.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),(0,g.jsx)(jo,{panelId:z.id})]}),document.body),(0,g.jsx)("button",{type:"button",onClick:()=>A("right"),className:"rdd-taskbar-nav-btn",style:{display:s.minimized.length>4?"block":"none"},children:"\u25B6"})]}),Object.keys(s.panels).map(i=>{let S=s.panels[i];if(!S)return null;let m=qn(i);return(0,Pn.createPortal)((0,g.jsx)(Uo,{panelId:i,children:(0,g.jsx)("div",{style:{width:"100%",height:"100%"},dir:s.dir,children:Zo(i,S.component,T)})}),m,i)}),j===null&&(0,g.jsx)(o.Component,{ref:se,theme:"dark",formatMessageProvider:F,onShow:()=>Pe(!0),onHide:()=>Pe(!1)}),s.draggedPanelId!==null&&!s.floating.some(i=>i.id===s.draggedPanelId)&&(0,g.jsxs)("div",{className:"rdd-drag-ghost-tab",style:{left:tt.x+12,top:tt.y+12,zIndex:1e5},children:["\u{1F4C4} ",he(s.panels[s.draggedPanelId]?.title,F)||"Tab"]})]})},jn=Qo;var sn=class{registry;initialState;config;_actions=null;_initialized=!1;_pendingCalls=[];_pendingOpenPanelIds=new Set;_pendingSubscriptions=[];_disconnectedWarnTimer=null;constructor(t={}){if(this.registry=new ct,this.initialState=t.initialState??null,this.config={formatMessage:t.formatMessage,predefinedMessages:t.predefinedMessages,dir:t.dir,defaultSplitRatio:t.defaultSplitRatio,defaultEdgeSplitRatio:t.defaultEdgeSplitRatio,zIndexBase:t.zIndexBase},t.panels)for(let[n,o]of Object.entries(t.panels))this.registry.register(n,o.component,o.defaultOptions)}_connect(t){this._actions=t,this._disconnectedWarnTimer!==null&&(clearTimeout(this._disconnectedWarnTimer),this._disconnectedWarnTimer=null),this._initialized||(this._initialized=!0);for(let o of this._pendingSubscriptions)o.unsub=t.subscribe(o.event,o.callback);let n=this._pendingCalls.splice(0);for(let o of n)o(t)}_disconnect(){this._actions=null;for(let t of this._pendingSubscriptions)t.unsub?.(),t.unsub=null}get isConnected(){return this._actions!==null}_startWarnTimer(){this._disconnectedWarnTimer===null&&(this._disconnectedWarnTimer=setTimeout(()=>{!this.isConnected&&this._pendingCalls.length>0&&console.error("[react-dockable-desktop] WorkspaceClient has "+this._pendingCalls.length+" queued call(s) but was never connected to a WindowManagerProvider. Did you forget client={workspace} on <WindowManagerProvider>?")},process.env.NODE_ENV==="production"?5e3:1e3))}_dispatch(t){this._actions?t(this._actions):(this._pendingCalls.push(t),this._startWarnTimer())}_subscribeRaw(t,n){if(this._actions)return this._actions.subscribe(t,n);let o={event:t,callback:n,unsub:null};return this._pendingSubscriptions.push(o),()=>{o.unsub?.(),o.unsub=null;let p=this._pendingSubscriptions.indexOf(o);p!==-1&&this._pendingSubscriptions.splice(p,1)}}openPanel(...t){if(this._actions){this._actions.openPanel(...t);return}let n=t[0];this._pendingOpenPanelIds.has(n)||(this._pendingOpenPanelIds.add(n),this._pendingCalls.push(o=>{this._pendingOpenPanelIds.delete(n),o.openPanel(...t)}),this._startWarnTimer())}closePanel(t){this._dispatch(n=>n.closePanel(t))}minimizePanel(t){this._dispatch(n=>n.minimizePanel(t))}restorePanel(t){this._dispatch(n=>n.restorePanel(t))}floatPanel(...t){this._dispatch(n=>n.floatPanel(...t))}dockPanel(...t){this._dispatch(n=>n.dockPanel(...t))}maximizePanel(t){this._dispatch(n=>n.maximizePanel(t))}focusPanel(t){this._dispatch(n=>n.focusPanel(t))}isOpen(t){return this._actions?.isOpen(t)??!1}getOpenPanelIds(){return this._actions?.getOpenPanelIds()??[]}saveLayout(){return this._actions?.saveLayout()??""}loadLayout(t){return this._actions?this._actions.loadLayout(t):(this._pendingCalls.push(n=>{n.loadLayout(t)}),!1)}setDirection(t){this._dispatch(n=>n.setDirection(t))}updateSplitSizes(t,n){this._dispatch(o=>o.updateSplitSizes(t,n))}updateFloatingPosition(t,n){this._dispatch(o=>o.updateFloatingPosition(t,n))}setDraggedPanelId(t){this._dispatch(n=>n.setDraggedPanelId(t))}dockPanelToGroup(t,n,o){this._dispatch(p=>p.dockPanelToGroup(t,n,o))}movePanelOrder(t,n,o){this._dispatch(p=>p.movePanelOrder(t,n,o))}closeLeafGroup(t){this._dispatch(n=>n.closeLeafGroup(t))}registerCloseGuard(t,n){this._dispatch(o=>o.registerCloseGuard(t,n))}unregisterCloseGuard(t){this._dispatch(n=>n.unregisterCloseGuard(t))}setPanelDirty(t,n,o){this._dispatch(p=>p.setPanelDirty(t,n,o))}updatePanelTitle(t,n){this._dispatch(o=>o.updatePanelTitle(t,n))}requestClosePanel(t,n){return this._actions?this._actions.requestClosePanel(t,n):(this._pendingCalls.push(o=>{o.requestClosePanel(t,n)}),Promise.resolve())}dockPanelToWorkspaceEdge(t,n){this._dispatch(o=>o.dockPanelToWorkspaceEdge(t,n))}showContextMenu(t){this._dispatch(n=>n.showContextMenu(t))}publish(t,n){this._dispatch(o=>o.publish(t,n))}subscribe(t,n){return this._subscribeRaw(t,n)}onPanelOpen(t){return this._subscribeRaw("panel:opened",n=>{let o=n;t(o.id,o.component)})}onPanelClose(t){return this._subscribeRaw("panel:closed",n=>{t(n.id)})}onPanelMinimize(t){return this._subscribeRaw("panel:minimized",n=>{t(n.id)})}onPanelRestore(t){return this._subscribeRaw("panel:restored",n=>{t(n.id)})}};var oo=require("react");var qe=require("react"),Jn=require("react/jsx-runtime"),Un=(0,qe.createContext)(null),_t=({children:e})=>{let[t,n]=(0,qe.useState)({}),[o,p]=(0,qe.useState)({}),s=(0,qe.useMemo)(()=>({getActiveInGroup:T=>t[T]??null,setActiveInGroup:(T,h)=>n(w=>({...w,[T]:h})),isModifierActive:T=>o[T]??!1,setModifierActive:(T,h)=>p(w=>({...w,[T]:h})),toggleModifier:T=>p(h=>({...h,[T]:!h[T]}))}),[t,o]);return(0,Jn.jsx)(Un.Provider,{value:s,children:e})};function Ht(){let e=(0,qe.useContext)(Un);if(!e)throw new Error("useToolbar must be used within DockableDesktopProvider");return e}var Ee=require("react");var no=require("react/jsx-runtime");function er(){let e=new Map,t=new Set,n=()=>t.forEach(o=>o());return{publish(o,p){return e.set(o,p),n(),()=>{e.get(o)===p&&(e.delete(o),n())}},get(o){return e.get(o)??null},subscribe(o){return t.add(o),()=>t.delete(o)}}}var wn=(0,Ee.createContext)(null),an=({children:e})=>{let t=(0,Ee.useMemo)(()=>er(),[]);return(0,no.jsx)(wn.Provider,{value:t,children:e})};function Qn(e){let t=Wt(),n=(0,Ee.useContext)(wn),o=(0,Ee.useRef)(null);if(!n)throw new Error("usePanelContribution must be used within PanelContributionProvider");(0,Ee.useLayoutEffect)(()=>{if(n)return o.current?.(),o.current=n.publish(t,e),()=>{o.current?.(),o.current=null}},[n,t,e])}function ln(){let e=De(p=>p.activePanelId),t=(0,Ee.useContext)(wn);if(!t)throw new Error("useActivePanelContribution must be used within PanelContributionProvider");let n=(0,Ee.useCallback)(p=>t?t.subscribe(p):()=>{},[t]),o=()=>t&&e?t.get(e):null;return(0,Ee.useSyncExternalStore)(n,o,o)}function Rn(e,t=null){return{id:e.id,label:e.label,icon:e.icon??t,renderContent:()=>e.content}}function eo(e){let t=ln();return t?.toolbarItems?.length?[...e,{type:"separator"},...t.toolbarItems]:e}function to(e,t=null){let n=ln();return n?.sidebarSections?.length?[...e,...n.sidebarSections.map(o=>Rn(o,t))]:e}var Et=require("react/jsx-runtime"),ro=({contextMenuAdapter:e=ut,...t})=>{let n=(0,oo.useContext)(St),o=(0,Et.jsx)(_t,{children:(0,Et.jsx)(jt,{...t,children:(0,Et.jsx)(an,{children:(0,Et.jsx)(tn,{children:t.children})})})});return n!==null?o:(0,Et.jsx)(Qt,{adapter:e,formatMessageProvider:t.formatMessage,children:o})};var Le=require("react");var Me=require("react/jsx-runtime"),tr=({modal:e,index:t,isTopmost:n})=>{let{close:o,openModal:p,updateInstance:s,setDirty:T}=Ue(),h=Fe(),w=Be(),{dir:y}=De(),{modalClass:v,modalBodyClass:b}=Ye(),R=(0,Le.useRef)(null),{id:I,Component:k,props:L,options:d,dirty:E,dirtyOptions:a}=e,f=d,[C,O]=(0,Le.useState)(f.icon||null),$=(0,Le.useRef)(f);$.current=f;let F=he(f.title,h),l=(0,Le.useCallback)(async W=>{if(W?.force){o(I);return}if(R.current){if(!await R.current())return;o(I);return}if(E){p(Je,{title:a?.title||w.unsavedChangesTitle,message:a?.message||{id:w.unsavedChangesMessage.id,defaultMessage:w.unsavedChangesMessage.defaultMessage,values:{title:F}},alert:a?.alert,alertType:a?.alertType||"danger",useYesNoTitles:!0,onOK:()=>o(I)},{size:"small"});return}o(I)},[o,p,I,E,a,F,w]),M=(0,Le.useCallback)((W,z)=>T(I,W,z),[T,I]),Y=(0,Le.useCallback)(W=>s(I,{options:{...$.current,title:W}}),[s,I]),Q=(0,Le.useCallback)(W=>O(W),[]),j=(0,Le.useCallback)(W=>(R.current=W,()=>{R.current=null}),[]),se=(0,Le.useMemo)(()=>({requestClose:l,setDirty:M,setTitle:Y,setIcon:Q,onCloseRequested:j,containerType:"modal",instanceId:I}),[l,M,Y,Q,j,I]),re=E?`${F} *`:F,ue=f.size?`rdd-modal-size-${f.size}`:"rdd-modal-size-auto",pe=f.closable!==!1;(0,Le.useEffect)(()=>{if(!n||!pe)return;let W=z=>{z.key==="Escape"&&(z.stopPropagation(),l())};return document.addEventListener("keydown",W),()=>document.removeEventListener("keydown",W)},[l,pe,n]);let _=`calc(var(--rdd-z-base, 1000) + 9000 + ${t*10})`;return(0,Me.jsxs)("div",{className:"rdd-modal-overlay",style:{zIndex:_},dir:y,children:[(0,Me.jsx)("div",{className:"rdd-modal-curtain",onClick:pe?()=>l():void 0}),(0,Me.jsxs)("div",{className:`rdd-modal-window ${ue} ${v??""}`,children:[(0,Me.jsxs)("div",{className:"rdd-modal-header",children:[C&&(0,Me.jsx)("div",{className:"rdd-modal-icon",children:C}),(0,Me.jsx)("h4",{className:"rdd-modal-title",children:re}),pe&&(0,Me.jsx)("button",{className:"rdd-modal-close-button",onClick:()=>l(),title:h(w.closeTooltip),type:"button",children:(0,Me.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,Me.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),(0,Me.jsx)("div",{className:`rdd-modal-body ${b??""}`,children:(0,Me.jsx)(Ze,{value:se,children:(0,Me.jsx)(k,{...L,panelId:I})})})]})]})},nr=()=>{let{modals:e}=Xe();return e.length===0?null:(0,Me.jsx)(Me.Fragment,{children:e.map((t,n)=>(0,Me.jsx)(tr,{modal:t,index:n,isTopmost:n===e.length-1},t.id))})},io=nr;var Se=require("react");var we=require("react/jsx-runtime"),dn=({panel:e,position:t,defaultWidth:n})=>{let{close:o,openModal:p,updateInstance:s,setDirty:T,registerCloseHandler:h,unregisterCloseHandler:w}=Ue(),{modals:y}=Xe(),v=Fe(),b=Be(),{dir:R}=De(),{sidePanelClass:I,sidePanelBodyClass:k}=Ye(),L=(0,Se.useRef)(null),{id:d,Component:E,props:a,options:f,dirty:C,dirtyOptions:O}=e,$=f,[F,l]=(0,Se.useState)($.icon||null),M=(0,Se.useRef)($);M.current=$;let Y=he($.title,v),Q=(0,Se.useCallback)(async B=>{if(B?.force){o(d);return}if(L.current){if(!await L.current())return;o(d);return}if(C){p(Je,{title:O?.title||b.unsavedChangesTitle,message:O?.message||{id:b.unsavedChangesMessage.id,defaultMessage:b.unsavedChangesMessage.defaultMessage,values:{title:Y}},alert:O?.alert,alertType:O?.alertType||"danger",useYesNoTitles:!0,onOK:()=>o(d)},{size:"small"});return}o(d)},[o,p,d,C,O,Y,b]),j=(0,Se.useCallback)(async()=>L.current?await L.current():!C,[C]);(0,Se.useEffect)(()=>(h(d,j),()=>w(d)),[d,j,h,w]);let se=(0,Se.useCallback)((B,ie)=>T(d,B,ie),[T,d]),re=(0,Se.useCallback)(B=>s(d,{options:{...M.current,title:B}}),[s,d]),ue=(0,Se.useCallback)(B=>l(B),[]),pe=(0,Se.useCallback)(B=>(L.current=B,()=>{L.current=null}),[]),_=(0,Se.useMemo)(()=>({requestClose:Q,setDirty:se,setTitle:re,setIcon:ue,onCloseRequested:pe,containerType:t==="left"?"left-panel":"right-panel",instanceId:d}),[Q,se,re,ue,pe,t,d]),W=C?`${Y} *`:Y;(0,Se.useEffect)(()=>{let B=ie=>{ie.key==="Escape"&&y.length===0&&Q()};return document.addEventListener("keydown",B),()=>document.removeEventListener("keydown",B)},[Q,y.length]);let z=$.width||n||400,Z=typeof z=="number"?`${z}px`:z;return(0,we.jsx)("div",{className:`rdd-side-panel rdd-side-panel-${t} rdd-side-panel-visible ${I??""}`,style:{width:Z},dir:R,children:(0,we.jsxs)("div",{className:"rdd-side-panel-window",children:[(0,we.jsxs)("div",{className:"rdd-side-panel-header",children:[F&&(0,we.jsx)("div",{className:"rdd-side-panel-icon",children:F}),(0,we.jsx)("h4",{className:"rdd-side-panel-title",children:W}),(0,we.jsx)("button",{className:"rdd-side-panel-close-button",onClick:()=>Q(),title:v(b.closeTooltip),type:"button",children:(0,we.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,we.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),(0,we.jsx)("div",{className:`rdd-side-panel-body ${k??""}`,children:(0,we.jsx)(Ze,{value:_,children:(0,we.jsx)(E,{...a,panelId:d})})})]})})},or=({defaultWidth:e})=>{let{leftPanel:t,rightPanel:n}=Xe();return(0,we.jsxs)(we.Fragment,{children:[t&&(0,we.jsx)(dn,{panel:t,position:"left",defaultWidth:e},t.id),n&&(0,we.jsx)(dn,{panel:n,position:"right",defaultWidth:e},n.id)]})},so=({defaultWidth:e})=>{let{leftPanel:t}=Xe();return t?(0,we.jsx)(dn,{panel:t,position:"left",defaultWidth:e},t.id):null},ao=({defaultWidth:e})=>{let{rightPanel:t}=Xe();return t?(0,we.jsx)(dn,{panel:t,position:"right",defaultWidth:e},t.id):null},lo=or;var ce=require("react");var Re=require("react/jsx-runtime"),uo=(0,ce.createContext)(null),po=(0,ce.createContext)(null);function rr({tabId:e,onClose:t,onOpen:n,setActiveTabId:o,children:p}){let s=(0,ce.useMemo)(()=>({tabId:e,onClose:t,onOpen:n,openTab:T=>o(T)}),[e,t,n,o]);return(0,Re.jsx)(po.Provider,{value:s,children:p})}var co=(0,ce.memo)(function({tabs:t,activeTabId:n,isVisible:o,position:p,onTabClick:s}){return(0,Re.jsx)("div",{style:{width:o?"56px":"0px",height:"100%",overflow:"hidden",transition:"width 0.25s cubic-bezier(0.4, 0, 0.2, 1)",flexShrink:0},children:(0,Re.jsx)("div",{className:`rdd-sidebar-tabs-strip rdd-${p}`,style:{width:"56px",height:"100%"},children:t.map(T=>{let h=n===T.id;return(0,Re.jsx)("button",{type:"button",onClick:()=>s(T.id),className:`rdd-sidebar-tab-btn${h?" rdd-active":""}`,title:T.label,"aria-pressed":h,children:T.icon},T.id)})})})});function ir({position:e,currentWidth:t,minWidth:n,maxWidth:o,onWidthChange:p,rootRef:s}){return(0,Re.jsx)("div",{className:"rdd-resizer-bar",style:{cursor:"col-resize",width:"1px",height:"100%",flexShrink:0,zIndex:20},onPointerDown:h=>{h.preventDefault();let w=h.currentTarget,y=[{el:w,classes:["rdd-active"]},{el:document.body,classes:["rdd-resizing-active","rdd-resizing-col-active"]}];s.current&&y.push({el:s.current,classes:["rdd-sidebar-resizing"]}),Ve({element:w,pointerId:h.pointerId,startClientX:h.clientX,startClientY:h.clientY,captureStart:()=>t,activeClasses:y,onMove:(v,b,R)=>{let I=e==="right"?R-v:R+v;p(Math.max(n,Math.min(o,I)))}})}})}var go=(0,ce.forwardRef)(function({position:t="right",tabs:n,defaultWidth:o,minWidth:p=150,maxWidth:s=600,onWidthChange:T,activeTabId:h,onActiveTabChange:w,visible:y,onVisibilityChange:v,stripVisible:b,onStripVisibilityChange:R,children:I},k){let L=h!==void 0,[d,E]=(0,ce.useState)(()=>o??280),a=(0,ce.useCallback)(B=>{E(B),T?.(B)},[T]),[f,C]=(0,ce.useState)(null),O=L?h:f,[$,F]=(0,ce.useState)(()=>new Set),l=(0,ce.useMemo)(()=>{let B=new Set($);O&&B.add(O);for(let ie of n)ie.eagerMount&&B.add(ie.id);return B},[$,O,n]),M=(0,ce.useRef)(O??null);(0,ce.useEffect)(()=>{M.current=O??null},[O]);let Y=(0,ce.useRef)(d);(0,ce.useEffect)(()=>{Y.current=d},[d]);let Q=(0,ce.useRef)(null),j=(0,ce.useCallback)(B=>{F(B!==null?ie=>{if(ie.has(B))return ie;let ve=new Set(ie);return ve.add(B),ve}:ie=>{let ve=!1,Pe=new Set(ie);for(let Oe of ie){let $e=n.find(Ae=>Ae.id===Oe);$e&&!$e.eagerMount&&!$e.preserveState&&(Pe.delete(Oe),ve=!0)}return ve?Pe:ie}),L||C(B),w?.(B)},[L,w,n]);(0,ce.useImperativeHandle)(k,()=>({openTab:B=>j(B),closeDrawer:()=>j(null),getActiveTab:()=>M.current,show:()=>v?.(!0),hide:()=>v?.(!1),toggle:()=>v?.(y===!1),showStrip:()=>R?.(!0),hideStrip:()=>R?.(!1),setWidth:B=>a(Math.max(p,Math.min(s,B))),getWidth:()=>Y.current}),[j,y,v,R,a,p,s]);let se=(0,ce.useCallback)(B=>{j(O===B?null:B)},[O,j]),re=(0,ce.useCallback)(()=>j(null),[j]),ue=(0,ce.useMemo)(()=>({openTab:B=>j(B),closeDrawer:()=>j(null),getActiveTab:()=>M.current}),[j]),pe=y!==!1,_=pe&&b!==!1,W=pe&&O!=null,z=(0,Re.jsx)("div",{className:`rdd-sidebar-content-drawer rdd-${t}`,style:{flexBasis:W?`${d}px`:"0px",flexShrink:1,flexGrow:0,minWidth:W?`${p}px`:"0px",maxWidth:W?`${s}px`:"0px",overflow:"hidden",transition:"flex-basis 0.2s cubic-bezier(0.4, 0, 0.2, 1), min-width 0.2s cubic-bezier(0.4, 0, 0.2, 1), max-width 0.2s cubic-bezier(0.4, 0, 0.2, 1)"},children:n.map(B=>{if(!l.has(B.id))return null;let ve=O===B.id,Pe=()=>j(B.id);return(0,Re.jsxs)("div",{style:{display:ve?"flex":"none",flexDirection:"column",height:"100%",width:"100%"},children:[(0,Re.jsx)("div",{className:"rdd-sidebar-drawer-header",children:(0,Re.jsx)("span",{className:"rdd-sidebar-header-title",children:B.label})}),(0,Re.jsx)("div",{className:"rdd-sidebar-drawer-body",children:(0,Re.jsx)(rr,{tabId:B.id,onClose:re,onOpen:Pe,setActiveTabId:j,children:B.renderContent(B.id,re,Pe)})})]},B.id)})}),Z=W?(0,Re.jsx)(ir,{position:t,currentWidth:d,minWidth:p,maxWidth:s,onWidthChange:a,rootRef:Q}):null;return(0,Re.jsx)(uo.Provider,{value:ue,children:(0,Re.jsxs)("div",{ref:Q,style:{display:"flex",flexDirection:"row",width:"100%",height:"100%",overflow:"hidden"},children:[t==="left"&&(0,Re.jsx)(co,{tabs:n,activeTabId:O,isVisible:_,position:t,onTabClick:se}),t==="left"&&z,t==="left"&&Z,(0,Re.jsx)("div",{style:{flex:"1 1 0%",minWidth:0,overflow:"hidden"},children:I}),t==="right"&&Z,t==="right"&&z,t==="right"&&(0,Re.jsx)(co,{tabs:n,activeTabId:O,isVisible:_,position:t,onTabClick:se})]})})});function mo(){let e=(0,ce.useContext)(uo);if(!e)throw new Error("useSidebar must be used within Sidebar");return e}function fo(){let e=(0,ce.useContext)(po);if(!e)throw new Error("useSidebarTab must be used within a Sidebar tab renderContent tree");return e}var Ne=require("react"),ho=require("react-dom");var Te=require("react/jsx-runtime");function sr(e,t,n=!1,o=8){switch(t){case"left":return n?{right:window.innerWidth-e.left+o,top:e.top}:{left:e.right+o,top:e.top};case"right":return n?{left:e.right+o,top:e.top}:{right:window.innerWidth-e.left+o,top:e.top};case"top":return n?{top:e.bottom+o,right:window.innerWidth-e.right}:{top:e.bottom+o,left:e.left};case"bottom":return n?{bottom:window.innerHeight-e.top+o,right:window.innerWidth-e.right}:{bottom:window.innerHeight-e.top+o,left:e.left}}}function ar({item:e,position:t,toolbar:n}){let[o,p]=(0,Ne.useState)(!1),[s,T]=(0,Ne.useState)(null),h=(0,Ne.useRef)(null),w=(0,Ne.useRef)(null),y=e.activeItemId!==void 0,v=y?e.activeItemId:n.getActiveInGroup(e.id),b=e.items.find(d=>!("type"in d)&&d.id===v),R=v!==null,I=b?.icon??e.defaultIcon,k=b?.label??e.label,L=()=>{e.disabled||(!o&&h.current&&T(h.current.getBoundingClientRect()),p(d=>!d))};return(0,Ne.useLayoutEffect)(()=>{if(!o||!w.current)return;let d=w.current,E=d.getBoundingClientRect(),a=8;E.right>window.innerWidth-a&&(d.style.left=`${Math.max(a,window.innerWidth-E.width-a)}px`,d.style.right="auto"),E.left<a&&(d.style.left=`${a}px`,d.style.right="auto"),E.bottom>window.innerHeight-a&&(d.style.top=`${Math.max(a,window.innerHeight-E.height-a)}px`,d.style.bottom="auto"),E.top<a&&(d.style.top=`${a}px`,d.style.bottom="auto")},[o]),(0,Ne.useEffect)(()=>{if(!o)return;let d=E=>{let a=E.target;h.current?.contains(a)||w.current?.contains(a)||p(!1)};return document.addEventListener("mousedown",d),()=>document.removeEventListener("mousedown",d)},[o]),(0,Ne.useEffect)(()=>{if(!o)return;let d=E=>{E.key==="Escape"&&p(!1)};return document.addEventListener("keydown",d),()=>document.removeEventListener("keydown",d)},[o]),(0,Te.jsxs)(Te.Fragment,{children:[(0,Te.jsx)("button",{ref:h,type:"button",className:`rdd-toolbar-btn rdd-toolbar-btn-group${R?" rdd-active":""}`,title:k,"aria-label":k,"aria-expanded":o,"aria-haspopup":"menu",disabled:e.disabled,onClick:L,children:I}),o&&s&&(0,ho.createPortal)((0,Te.jsx)("div",{ref:w,className:`rdd-toolbar-group-flyout rdd-${t}`,style:sr(s,t,document.documentElement.dir==="rtl"),role:"menu",children:e.items.map((d,E)=>{if("type"in d)return(0,Te.jsx)("div",{className:"rdd-toolbar-group-flyout-sep",role:"separator"},`sep-${E}`);let a=v===d.id;return(0,Te.jsxs)("button",{type:"button",className:`rdd-toolbar-group-flyout-item${a?" rdd-active":""}`,disabled:d.disabled,role:"menuitem","aria-pressed":a,onClick:()=>{y?e.onActiveItemChange?.(d.id):n.setActiveInGroup(e.id,d.id),d.onActivate?.(d.id),p(!1)},children:[(0,Te.jsx)("span",{className:"rdd-toolbar-group-flyout-icon",children:d.icon}),(0,Te.jsx)("span",{className:"rdd-toolbar-group-flyout-label",children:d.label}),d.shortcut&&(0,Te.jsx)("span",{className:"rdd-toolbar-group-flyout-shortcut",children:d.shortcut})]},d.id)})}),document.body)]})}function lr(e,t,n,o){switch(e.type){case"separator":return(0,Te.jsx)("div",{className:"rdd-toolbar-separator",role:"separator"},`sep-${t}`);case"action":return(0,Te.jsx)("button",{type:"button",className:"rdd-toolbar-btn rdd-toolbar-btn-action",title:e.label,"aria-label":e.label,disabled:e.disabled,onClick:e.onClick,children:e.icon},e.id);case"radio":{let p=n.getActiveInGroup(e.group)===e.id;return(0,Te.jsx)("button",{type:"button",className:`rdd-toolbar-btn rdd-toolbar-btn-radio${p?" rdd-active":""}`,title:e.label,"aria-label":e.label,"aria-pressed":p,disabled:e.disabled,onClick:()=>{n.setActiveInGroup(e.group,e.id),e.onActivate?.(e.id)},children:e.icon},e.id)}case"toggle":{let p=e.active!==void 0,s=p?e.active:n.isModifierActive(e.id);return(0,Te.jsx)("button",{type:"button",className:`rdd-toolbar-btn rdd-toolbar-btn-toggle${s?" rdd-active":""}`,title:e.label,"aria-label":e.label,"aria-pressed":s,disabled:e.disabled,onClick:()=>{p||n.toggleModifier(e.id),e.onToggle?.(!s)},children:e.icon},e.id)}case"group":return(0,Te.jsx)(ar,{item:e,position:o,toolbar:n},e.id)}}var bo=(0,Ne.forwardRef)(function({position:t="left",items:n,visible:o,onVisibilityChange:p,className:s,style:T},h){let w=Ht(),y=t==="left"||t==="right";(0,Ne.useImperativeHandle)(h,()=>({show:()=>p?.(!0),hide:()=>p?.(!1),toggle:()=>p?.(o===!1)}),[o,p]);let v=o!==!1?{}:y?{width:"0px"}:{height:"0px"};return(0,Te.jsx)("div",{className:`rdd-toolbar-strip rdd-${t}${s?` ${s}`:""}`,role:"toolbar","aria-orientation":y?"vertical":"horizontal",style:{...v,...T},children:n.map((b,R)=>lr(b,R,w,t))})});var xe=require("react"),Tn=require("react-dom"),me=require("react/jsx-runtime"),Sn=class{listeners=new Set;counter=0;subscribe(t){this.listeners.add(t)}unsubscribe(t){this.listeners.delete(t)}show(t,n={}){let o=n.id??`toast-${++this.counter}`;return this.emit({kind:"show",id:o,message:t,rawOpts:{...n,id:o}}),o}update(t,n,o){this.emit({kind:"update",id:t,message:n,patch:o})}dismiss(t){this.emit({kind:"dismiss",id:t})}emit(t){this.listeners.forEach(n=>n(t))}},We=new Sn,vo=Object.assign((e,t)=>We.show(e,t),{info:(e,t)=>We.show(e,{...t,type:"info"}),success:(e,t)=>We.show(e,{...t,type:"success"}),warning:(e,t)=>We.show(e,{...t,type:"warning"}),error:(e,t)=>We.show(e,{...t,type:"error"}),dismiss:e=>We.dismiss(e),promise:(e,t,n)=>{let o=We.show(t.pending,{...n,type:"info",duration:0});return e.then(p=>{let s=typeof t.success=="function"?t.success(p):t.success;We.update(o,s,{type:"success",duration:n?.duration??5e3})},p=>{let s=typeof t.error=="function"?t.error(p):t.error;We.update(o,s,{type:"error",duration:n?.duration??5e3})}),e}}),dr=()=>(0,me.jsxs)("svg",{className:"rdd-toast__icon",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[(0,me.jsx)("circle",{cx:"8",cy:"8",r:"7",stroke:"currentColor",strokeWidth:"1.5"}),(0,me.jsx)("path",{d:"M8 5v.01M8 7.5v3.5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]}),cr=()=>(0,me.jsxs)("svg",{className:"rdd-toast__icon",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[(0,me.jsx)("circle",{cx:"8",cy:"8",r:"7",stroke:"currentColor",strokeWidth:"1.5"}),(0,me.jsx)("path",{d:"M5 8l2 2 4-4",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})]}),ur=()=>(0,me.jsxs)("svg",{className:"rdd-toast__icon",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[(0,me.jsx)("path",{d:"M8 2.5L14 13.5H2L8 2.5z",stroke:"currentColor",strokeWidth:"1.5",strokeLinejoin:"round"}),(0,me.jsx)("path",{d:"M8 7v2.5M8 11.5v.01",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]}),pr=()=>(0,me.jsxs)("svg",{className:"rdd-toast__icon",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[(0,me.jsx)("circle",{cx:"8",cy:"8",r:"7",stroke:"currentColor",strokeWidth:"1.5"}),(0,me.jsx)("path",{d:"M5.5 5.5l5 5M10.5 5.5l-5 5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]}),gr=()=>(0,me.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:(0,me.jsx)("path",{d:"M4 4l8 8M12 4l-8 8",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})}),mr={info:(0,me.jsx)(dr,{}),success:(0,me.jsx)(cr,{}),warning:(0,me.jsx)(ur,{}),error:(0,me.jsx)(pr,{})};function fr({id:e,message:t,options:n,exiting:o,isLeft:p,showProgress:s,pauseOnHover:T,animation:h,onDismiss:w,onExited:y}){let v=(0,xe.useRef)(null),b=(0,xe.useRef)(null),R=(0,xe.useRef)(n.duration),I=(0,xe.useRef)(0),[k,L]=(0,xe.useState)(!1),d=h==="none"?"rdd-toast--visible":h==="fade"?"rdd-toast--fade-entering":p?"rdd-toast--entering-left":"rdd-toast--entering",[E,a]=(0,xe.useState)(d);(0,xe.useLayoutEffect)(()=>{v.current&&(v.current.style.maxHeight=`${v.current.offsetHeight}px`)},[]),(0,xe.useEffect)(()=>{if(h==="none")return;let l=requestAnimationFrame(()=>a("rdd-toast--visible"));return()=>cancelAnimationFrame(l)},[]);let f=(0,xe.useCallback)(l=>{l<=0||(I.current=Date.now(),b.current=setTimeout(()=>w(e),l))},[e,w]);(0,xe.useEffect)(()=>(b.current&&clearTimeout(b.current),R.current=n.duration,f(n.duration),()=>{b.current&&clearTimeout(b.current)}),[n.duration,f]),(0,xe.useEffect)(()=>{if(!o)return;let l=v.current;if(!l||h==="none"){y(e);return}let M=Q=>{Q.propertyName==="max-height"&&y(e)};l.addEventListener("transitionend",M);let Y=setTimeout(()=>y(e),520);return()=>{l.removeEventListener("transitionend",M),clearTimeout(Y)}},[o,e,y,h]);let C=()=>{!T||n.duration===0||(b.current&&(clearTimeout(b.current),b.current=null,R.current=Math.max(0,R.current-(Date.now()-I.current))),L(!0))},O=()=>{!T||n.duration===0||(L(!1),f(R.current))},$=["rdd-toast",n.type&&`rdd-toast--${n.type}`,E,o&&"rdd-toast--exiting",k&&"rdd-toast--paused"].filter(Boolean).join(" "),F=n.icon!==void 0?n.icon:n.type?mr[n.type]:null;return(0,me.jsxs)("div",{ref:v,role:"status","aria-live":"polite",className:$,onMouseEnter:C,onMouseLeave:O,children:[F&&F,(0,me.jsx)("div",{className:"rdd-toast__body",children:n.content!==void 0?n.content:t}),n.closable&&(0,me.jsx)("button",{type:"button",className:"rdd-toast__close",onClick:()=>w(e),"aria-label":"Close notification",children:(0,me.jsx)(gr,{})}),s&&n.duration>0&&(0,me.jsx)("div",{className:"rdd-toast__progress",style:{animationDuration:`${n.duration}ms`}})]})}function Mn(e,t,n){return{id:e.id,type:e.type??"info",duration:e.duration??t,closable:e.closable??n,icon:e.icon,content:e.content,onClose:e.onClose}}function yo({position:e="top-right",maxVisible:t=3,defaultDuration:n=5e3,defaultClosable:o=!0,pauseOnHover:p=!0,animation:s="slide",newestOnTop:T=!1,progressBar:h=!1,width:w=320,adapter:y}){let[v,b]=(0,xe.useState)([]),R=(0,xe.useRef)([]),I=(0,xe.useRef)(v);I.current=v;let k=(0,xe.useCallback)(f=>{b(C=>C.map(O=>O.id===f?{...O,exiting:!0}:O)),I.current.find(C=>C.id===f)?.options.onClose?.()},[]),L=(0,xe.useCallback)(f=>{let C=R.current.shift()??null;b(O=>{let $=O.filter(l=>l.id!==f);if(!C)return $;let F=Mn(C.rawOpts,n,o);return[...$,{id:C.id,message:C.message,options:F,exiting:!1}]})},[n,o]);if((0,xe.useEffect)(()=>{if(y)return;let f=C=>{if(C.kind==="show"){let O=Mn(C.rawOpts,n,o),$={id:C.id,message:C.message,options:O,exiting:!1},F={id:C.id,message:C.message,rawOpts:C.rawOpts};b(l=>l.find(Q=>Q.id===C.id)?l.map(Q=>Q.id===C.id?{...Q,message:C.message,options:O}:Q):l.filter(Q=>!Q.exiting).length<t?[...l,$]:(R.current.some(Q=>Q.id===F.id)||R.current.push(F),l))}else C.kind==="update"?(b(O=>O.map($=>{if($.id!==C.id)return $;let F={...$.options,...C.patch,id:$.id};return{...$,message:C.message,options:F}})),R.current=R.current.map(O=>O.id!==C.id?O:{...O,message:C.message,rawOpts:{...O.rawOpts,...C.patch}})):C.kind==="dismiss"&&(C.id===void 0?(b(O=>O.map($=>({...$,exiting:!0}))),R.current=[]):I.current.some($=>$.id===C.id)?k(C.id):R.current=R.current.filter($=>$.id!==C.id))};return We.subscribe(f),()=>We.unsubscribe(f)},[y,t,n,o,k]),(0,xe.useEffect)(()=>{if(!y)return;let f=C=>{if(C.kind==="show"){let O=Mn(C.rawOpts,n,o);y.show(C.id,C.message,O)}else C.kind==="update"?y.update(C.id,C.message,C.patch):C.kind==="dismiss"&&y.dismiss(C.id)};return We.subscribe(f),()=>We.unsubscribe(f)},[y,n,o]),y){if(!y.Container)return null;let f=y.Container;return(0,Tn.createPortal)((0,me.jsx)(f,{position:e}),document.body)}let d=e.endsWith("left"),E="";T===!0&&(E="rdd-toast-container--newest-top"),T===!1&&(E="rdd-toast-container--newest-bottom");let a=["rdd-toast-container",`rdd-toast-container--${e}`,E].filter(Boolean).join(" ");return(0,Tn.createPortal)((0,me.jsx)("div",{className:a,style:{width:w},"aria-label":"Notifications","aria-live":"polite",children:v.map(f=>(0,me.jsx)(fr,{id:f.id,message:f.message,options:f.options,exiting:f.exiting,isLeft:d,showProgress:h,pauseOnHover:p,animation:s,onDismiss:k,onExited:L},f.id))}),document.body)}var X=gn(require("react"),1),xo=require("react-dom");var U=require("react/jsx-runtime"),hr=["top-left","top-right","bottom-left","bottom-right"],Co=(0,X.createContext)(null),wo=(0,X.createContext)(null),Ro=(0,X.createContext)(null),et=80;function br(e,t,n){let o=e.getBoundingClientRect(),p=t-o.left,s=n-o.top;return p<et&&s<et?"top-left":p>o.width-et&&s<et?"top-right":p<et&&s>o.height-et?"bottom-left":p>o.width-et&&s>o.height-et?"bottom-right":null}function Mo({children:e,className:t,style:n}){let[o,p]=(0,X.useState)({}),[s,T]=(0,X.useState)({}),[h,w]=(0,X.useState)({"top-left":[],"top-right":[],"bottom-left":[],"bottom-right":[]}),[y,v]=(0,X.useState)({}),[b,R]=(0,X.useState)(null),[I,k]=(0,X.useState)(null),[L,d]=(0,X.useState)(null),[E,a]=(0,X.useState)(()=>new Map),f=(0,X.useRef)(100),C=(0,X.useRef)(null),O=(0,X.useCallback)((_,W)=>(p(z=>({...z,[_]:W})),()=>p(z=>{let Z={...z};return delete Z[_],Z})),[]),$=(0,X.useCallback)(_=>{f.current+=1;let W=f.current;T(z=>({...z,[_]:W})),d(_)},[]),F=(0,X.useCallback)((_,W)=>{w(z=>{let Z={"top-left":z["top-left"].filter(B=>B!==_),"top-right":z["top-right"].filter(B=>B!==_),"bottom-left":z["bottom-left"].filter(B=>B!==_),"bottom-right":z["bottom-right"].filter(B=>B!==_)};return Z[W]=[...Z[W],_],Z})},[]),l=(0,X.useCallback)(_=>{w(W=>({"top-left":W["top-left"].filter(z=>z!==_),"top-right":W["top-right"].filter(z=>z!==_),"bottom-left":W["bottom-left"].filter(z=>z!==_),"bottom-right":W["bottom-right"].filter(z=>z!==_)}))},[]),M=(0,X.useCallback)((_,W)=>{v(z=>z[_]===W?z:{...z,[_]:W})},[]),Y=(0,X.useCallback)((_,W)=>{a(z=>{let Z=new Map(z);return Z.set(_,W),Z})},[]),Q=(0,X.useCallback)(_=>{a(W=>{let z=new Map(W);return z.delete(_),z})},[]),j=(0,X.useCallback)(()=>{a(new Map)},[]),se=(0,X.useMemo)(()=>Array.from(E.keys()),[E]),re=(0,X.useMemo)(()=>({registerToolbar:O,insetTop:o.top??0,insetBottom:o.bottom??0}),[O,o]),ue=(0,X.useMemo)(()=>({managedWindowIds:se,openManaged:Y,closeManaged:Q,closeAllManaged:j}),[se,Y,Q,j]),pe=(0,X.useMemo)(()=>({topId:L,zOrders:s,focusWindow:$,containerRef:C,stacks:h,dockedSizes:y,dockWindow:F,undockWindow:l,reportDockedSize:M,draggingId:b,setDraggingId:R,hoveredZone:I,setHoveredZone:k,insetTop:o.top??0,insetBottom:o.bottom??0}),[L,s,$,h,y,F,l,M,b,I,o]);return(0,U.jsx)(Co.Provider,{value:re,children:(0,U.jsx)(wo.Provider,{value:ue,children:(0,U.jsx)(Ro.Provider,{value:pe,children:(0,U.jsxs)("div",{ref:C,className:`rdd-panel-overlay-root${b!==null?" rdd-dragging-active":""}${t?" "+t:""}`,style:n,children:[e,b!==null&&(0,U.jsx)(vr,{hoveredZone:I}),Array.from(E.entries()).map(([_,W])=>(0,U.jsx)(kn,{id:_,title:W.title,icon:W.icon,open:!0,onClose:()=>Q(_),defaultAnchor:W.anchor??"top-right",defaultWidth:W.width??320,defaultHeight:W.height??240,children:W.content},_))]})})})})}function vr({hoveredZone:e}){return(0,U.jsx)(U.Fragment,{children:hr.map(t=>(0,U.jsx)("div",{className:`rdd-panel-float-dropzone rdd-panel-float-dropzone--${t}${e===t?" rdd-panel-float-dropzone--hovered":""}`,"aria-hidden":"true"},t))})}function To({position:e,variant:t="transparent",buttonVariant:n="ghost",buttonSize:o,style:p,className:s,children:T}){let h=(0,X.useContext)(Co),w=(0,X.useRef)(null),y=(0,X.useRef)(null);(0,X.useLayoutEffect)(()=>{let k=w.current;if(!k||!h)return;let L=e==="top"||e==="bottom"?k.offsetHeight:k.offsetWidth;return y.current?.(),y.current=h.registerToolbar(e,L),()=>{y.current?.(),y.current=null}},[e,h?.registerToolbar]);let v={position:"absolute",zIndex:5,pointerEvents:"none",boxSizing:"border-box"};e==="top"?(v.top=0,v.left=0,v.right=0):e==="bottom"?(v.bottom=0,v.left=0,v.right=0):e==="left"?(v.insetInlineStart=0,v.top=h?.insetTop??0,v.bottom=h?.insetBottom??0):(v.insetInlineEnd=0,v.top=h?.insetTop??0,v.bottom=h?.insetBottom??0);let R=e==="left"||e==="right"?{...(h?.insetTop??0)>0?{paddingTop:0}:{},...(h?.insetBottom??0)>0?{paddingBottom:0}:{}}:{},I=o!=null?{"--rdd-panel-toolbar-btn-size":`${o}px`}:{};return(0,U.jsx)("div",{ref:w,className:`rdd-panel-toolbar rdd-panel-toolbar--${e}${s?" "+s:""}`,"data-variant":t,"data-btn-variant":n,style:{...v,...R,...I,...p},children:T})}function So({icon:e,onClick:t,disabled:n,title:o,variant:p}){return(0,U.jsx)("button",{type:"button",className:"rdd-panel-toolbar-btn",onClick:t,disabled:n,title:o,"aria-label":o,...p?{"data-variant":p}:{},children:e})}function ko({icon:e,active:t,onToggle:n,disabled:o,title:p,variant:s}){return(0,U.jsx)("button",{type:"button",className:`rdd-panel-toolbar-btn${t?" rdd-panel-toolbar-btn--active":""}`,onClick:n,disabled:o,title:p,"aria-label":p,"aria-pressed":t,...s?{"data-variant":s}:{},children:e})}function Io(){return(0,U.jsx)("span",{className:"rdd-panel-toolbar__sep","aria-hidden":"true"})}function Eo(){return(0,U.jsx)("span",{className:"rdd-panel-toolbar__spacer","aria-hidden":"true"})}function Lo({children:e}){return(0,U.jsx)("span",{className:"rdd-panel-toolbar__item",children:e})}function No({children:e}){return(0,U.jsx)("div",{className:"rdd-panel-toolbar__center",children:e})}function zo({placeholder:e="Search\u2026",onSearch:t,onSelect:n}){let[o,p]=(0,X.useState)(!1),[s,T]=(0,X.useState)(""),[h,w]=(0,X.useState)([]),[y,v]=(0,X.useState)(null),b=(0,X.useRef)(null),R=(0,X.useRef)(null),I=(0,X.useRef)(null),k=(0,X.useRef)(null),L=()=>{p(!0),setTimeout(()=>R.current?.focus(),0)},d=()=>{p(!1),T(""),w([]),v(null),I.current?.abort(),k.current&&clearTimeout(k.current)},E=F=>{let l=F.target.value;if(T(l),I.current?.abort(),k.current&&clearTimeout(k.current),!l.trim()){w([]),v(null);return}k.current=setTimeout(async()=>{let M=new AbortController;I.current=M;try{let Y=await t(l,M.signal);if(!M.signal.aborted){w(Y);let Q=b.current;if(Q&&Y.length>0){let j=Q.getBoundingClientRect(),se=Math.max(j.width,240),re=j.left;re+se>window.innerWidth-8&&(re=window.innerWidth-se-8),v({top:j.bottom+4,left:re,width:se})}else v(null)}}catch{}},300)},a=F=>{n(F),d()},f=F=>{b.current?.contains(F.relatedTarget)||d()},C=F=>{F.key==="Escape"&&d()},O=(0,X.useMemo)(()=>{let F={};for(let l of h){let M=l.group??"";F[M]||(F[M]=[]),F[M].push(l)}return F},[h]),$=(0,U.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,U.jsx)("circle",{cx:"6.5",cy:"6.5",r:"4.5"}),(0,U.jsx)("line",{x1:"10",y1:"10",x2:"14",y2:"14"})]});return o?(0,U.jsxs)("div",{ref:b,className:"rdd-panel-toolbar-search rdd-panel-toolbar-search--open",onBlur:f,children:[(0,U.jsx)("button",{type:"button",className:"rdd-panel-toolbar-btn",onClick:d,"aria-label":"Close search",title:"Close search",children:$}),(0,U.jsx)("input",{ref:R,className:"rdd-panel-toolbar-search__input",type:"text",value:s,onChange:E,onKeyDown:C,placeholder:e,autoComplete:"off"}),y&&h.length>0&&(0,xo.createPortal)((0,U.jsx)("div",{className:"rdd-panel-toolbar-search__dropdown",style:{position:"fixed",top:y.top,left:y.left,width:y.width,zIndex:9502},onMouseDown:F=>F.preventDefault(),children:Object.entries(O).map(([F,l])=>(0,U.jsxs)(X.default.Fragment,{children:[F&&(0,U.jsx)("div",{className:"rdd-panel-toolbar-search__group",children:F}),l.map(M=>(0,U.jsxs)("button",{type:"button",className:"rdd-panel-toolbar-search__item",onClick:()=>a(M),children:[M.icon&&(0,U.jsx)("span",{className:"rdd-panel-toolbar-search__item-icon",children:M.icon}),(0,U.jsx)("span",{className:"rdd-panel-toolbar-search__item-label",children:M.label}),M.description&&(0,U.jsx)("span",{className:"rdd-panel-toolbar-search__item-desc",children:M.description})]},M.id))]},F||"__default__"))}),document.body)]}):(0,U.jsx)("div",{ref:b,className:"rdd-panel-toolbar-search",children:(0,U.jsx)("button",{type:"button",className:"rdd-panel-toolbar-btn",onClick:L,title:"Search","aria-label":"Search",children:$})})}function kn(e){let t=(0,X.useContext)(Ro);return e.open?(0,U.jsx)(Cr,{ctx:t,...e},e.id):null}var yr=120,Pr=60,Po=8,xr=8;function Cr({id:e,title:t,icon:n,defaultAnchor:o,defaultWidth:p,defaultHeight:s,children:T,ctx:h,onClose:w}){let y=(0,X.useContext)(wt)?.isRtl??!1,[v,b]=(0,X.useState)("docked"),[R,I]=(0,X.useState)(o),[k,L]=(0,X.useState)(null),[d,E]=(0,X.useState)({w:p,h:s}),a=(0,X.useRef)(null),f=(0,X.useRef)(v);f.current=v;let C=(0,X.useRef)(k);C.current=k;let O=(0,X.useRef)(d);O.current=d;let $=(0,X.useRef)(null);(0,X.useLayoutEffect)(()=>(h?.dockWindow(e,o),()=>{h?.undockWindow(e)}),[]),(0,X.useEffect)(()=>{h?.reportDockedSize(e,d.h)},[d.h]);let F=h?.zOrders[e]??101,l=!h||h.topId===e,M=()=>{let _=a.current?.offsetParent;return{cw:_?.clientWidth??9999,ch:_?.clientHeight??9999}},Y=()=>{h?.focusWindow(e)},Q=_=>{if(_.button!==0)return;_.preventDefault();let W,z;if(f.current==="docked"){let Z=a.current,B=h?.containerRef?.current;if(Z&&B){let ie=Z.getBoundingClientRect(),ve=B.getBoundingClientRect();W=ie.left-ve.left,z=ie.top-ve.top}else W=Po,z=h?.insetTop??0;h?.undockWindow(e),b("free"),L({x:W,y:z})}else W=C.current?.x??0,z=C.current?.y??0;$.current={mouseX:_.clientX,mouseY:_.clientY,posX:W,posY:z,hasDragged:!1},a.current?.setPointerCapture(_.pointerId)},j=_=>W=>{if(W.button!==0)return;W.preventDefault(),W.stopPropagation();let z=0,Z=0;if(f.current==="free")z=C.current?.x??0,Z=C.current?.y??0;else{let ie=a.current,ve=ie?.offsetParent;if(ie&&ve){let Pe=ie.getBoundingClientRect(),Oe=ve.getBoundingClientRect();z=Pe.left-Oe.left,Z=Pe.top-Oe.top}}let B={x:z,y:Z,w:O.current.w,h:O.current.h};Ve({element:W.currentTarget,pointerId:W.pointerId,startClientX:W.clientX,startClientY:W.clientY,captureStart:()=>B,onMove:(ie,ve,Pe)=>{let{cw:Oe,ch:$e}=M(),{x:Ae,y:He,w:tt,h:nt}=kt(_,ie,ve,Pe,{minW:yr,minH:Pr,maxW:Oe-Pe.x,maxH:$e-Pe.y,minX:0,minY:0});E({w:tt,h:nt}),f.current==="free"&&L({x:Ae,y:He})}})},se=_=>{if($.current){let W=$.current;if(!W.hasDragged){if(Math.abs(_.clientX-W.mouseX)+Math.abs(_.clientY-W.mouseY)<4)return;W.hasDragged=!0,h?.setDraggingId(e)}let{cw:z,ch:Z}=M(),B=Math.max(0,Math.min(W.posX+_.clientX-W.mouseX,z-O.current.w)),ie=Math.max(0,Math.min(W.posY+_.clientY-W.mouseY,Z-O.current.h));L({x:B,y:ie});let ve=h?.containerRef?.current;if(ve){let Pe=br(ve,_.clientX,_.clientY);h?.setHoveredZone(Pe&&y?At(Pe):Pe)}}},re=()=>{if($.current){let _=h?.hoveredZone;_&&(h?.dockWindow(e,_),I(_),b("docked"),L(null)),h?.setHoveredZone(null),h?.setDraggingId(null)}$.current=null},ue;if(v==="docked"&&h){let _=h.stacks[R]??[],W=_.indexOf(e),z=0;for(let Z=0;Z<W;Z++)z+=(h.dockedSizes[_[Z]]??s)+xr;ue={width:d.w,height:d.h,zIndex:F,transition:"top 0.2s ease, bottom 0.2s ease",opacity:W===-1?0:void 0,pointerEvents:W===-1?"none":void 0},ue[R.endsWith("-right")?"insetInlineEnd":"insetInlineStart"]=Po,R.startsWith("top-")?ue.top=h.insetTop+z:ue.bottom=h.insetBottom+z}else ue={left:k?.x??0,top:k?.y??0,width:d.w,height:d.h,zIndex:F};return(0,U.jsxs)("div",{ref:a,dir:y?"rtl":"ltr",className:`rdd-panel-float${l?" rdd-panel-float--active":""}`,style:ue,onPointerDown:Y,onPointerMove:se,onPointerUp:re,children:[(0,U.jsxs)("div",{className:"rdd-panel-float__header",onPointerDown:Q,children:[n&&(0,U.jsx)("span",{className:"rdd-panel-float__icon",children:n}),(0,U.jsx)("span",{className:"rdd-panel-float__title",children:t}),(0,U.jsx)("button",{type:"button",className:"rdd-panel-float__close",onClick:w,onPointerDown:_=>_.stopPropagation(),title:"Close","aria-label":"Close",children:(0,U.jsxs)("svg",{width:"8",height:"8",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",children:[(0,U.jsx)("line",{x1:"1",y1:"1",x2:"9",y2:"9"}),(0,U.jsx)("line",{x1:"9",y1:"1",x2:"1",y2:"9"})]})})]}),(0,U.jsx)("div",{className:"rdd-panel-float__body",children:T}),v==="free"&&(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)("div",{className:"rdd-resize-handle rdd-resize-n",onPointerDown:j("n")}),(0,U.jsx)("div",{className:"rdd-resize-handle rdd-resize-ne",onPointerDown:j("ne")}),(0,U.jsx)("div",{className:"rdd-resize-handle rdd-resize-nw",onPointerDown:j("nw")})]}),(0,U.jsx)("div",{className:"rdd-resize-handle rdd-resize-e",onPointerDown:j("e")}),(0,U.jsx)("div",{className:"rdd-resize-handle rdd-resize-se",onPointerDown:j("se")}),(0,U.jsx)("div",{className:"rdd-resize-handle rdd-resize-s",onPointerDown:j("s")}),(0,U.jsx)("div",{className:"rdd-resize-handle rdd-resize-sw",onPointerDown:j("sw")}),(0,U.jsx)("div",{className:"rdd-resize-handle rdd-resize-w",onPointerDown:j("w")})]})}function Do(){let[e,t]=(0,X.useState)(!1),n=(0,X.useCallback)(()=>{t(!0)},[]),o=(0,X.useCallback)(()=>{t(!1)},[]);return{isOpen:e,open:n,close:o}}var wr=[];function Wo(){let e=(0,X.useContext)(wo),t=e?.managedWindowIds??wr;return(0,X.useMemo)(()=>({open:(n,o)=>e?.openManaged(n,o),close:n=>e?.closeManaged(n),closeAll:()=>e?.closeAllManaged(),isOpen:n=>t.includes(n),openIds:t}),[e,t])}0&&(module.exports={ConfirmationForm,ContextMenu,ContextMenuProvider,DefaultContextMenuAdapter,DockableDesktopProvider,FormContainerContext,FormContainerProvider,LeftPanelRenderer,ModalStackRenderer,PanelContributionProvider,PanelFloatingWindow,PanelOverlayRoot,PanelProvider,PanelRegistry,PanelRegistryClass,PanelToolbar,PanelToolbarItem,PanelToolbarSeparator,RightPanelRenderer,SidePanelRenderer,Sidebar,ToastContainer,Toolbar,ToolbarButton,ToolbarCenter,ToolbarProvider,ToolbarSearchInput,ToolbarSpacer,ToolbarToggle,WindowManager,WindowManagerProvider,WorkspaceClient,computeResizedRect,defaultPredefinedMessages,formatLabel,sidebarSectionToTab,startPointerDrag,toast,useActivePanelContribution,useColorScheme,useFormContainer,useFormatMessage,useMergedSidebarTabs,useMergedToolbarItems,usePanelActions,usePanelContext,usePanelContextMenu,usePanelContribution,usePanelFloatingWindow,usePanelFloatingWindowManager,usePanelId,usePanelSize,usePanelState,usePredefinedMessages,useRegistry,useShowContextMenu,useSidebar,useSidebarTab,useStyleClasses,useToolbar,useWindowManagerActions,useWindowManagerState});
23
+ 3. Verify styles.css is imported \u2014 it anchors html, body, #root to 100% height.`)}cn({width:Math.max(100,h.width),height:Math.max(100,h.height)})});return p.observe(r),()=>{p.disconnect()}},[]),(0,K.useEffect)(()=>{let r=it.width,C=it.height;s.floating.forEach(p=>{let u=typeof p.width=="string"?parseFloat(p.width):p.width,h=typeof p.height=="string"?parseFloat(p.height):p.height,M=typeof p.x=="string"?parseFloat(p.x):p.x,A=typeof p.y=="string"?parseFloat(p.y):p.y,F=u,Z=h,se=M,J=A,oe=!1;if(F>r&&(F=Math.max(200,r-20),oe=!0),Z>C&&(Z=Math.max(150,C-40),oe=!0),!p.anchor){let ce=r-100;se>ce&&(se=Math.max(0,ce),oe=!0);let te=C-40;J>te&&(J=Math.max(0,te),oe=!0)}oe&&v(p.id,{x:se,y:J,width:F,height:Z})})},[it,s.floating,v]),(0,K.useEffect)(()=>{let r=C=>{if(C.button!==0)return;let p=C.target;if(!p||typeof p.closest!="function")return;let u=p.closest(".rdd-floating-window");if(u){let M=u.getAttribute("data-window-id");M&&(R(M),S(M));return}let h=p.closest(".rdd-workspace-panel");if(h){let M=h.getAttribute("data-active-panel-id");M&&R(M)}};return document.addEventListener("pointerdown",r),()=>{document.removeEventListener("pointerdown",r)}},[S,R]);let un=(r,C)=>{let p=s.floating.find(J=>J.id===r);if(!p||p.maximized)return;S(r);let u=C.currentTarget,h=u.closest(".rdd-floating-window"),M=C.clientX,A=C.clientY,F=h?h.offsetLeft:0,Z=h?h.offsetTop:0,se=()=>{let J=Oe.current,oe=_e.current,ce=pt.current,te=gt.current;if(te)v(r,{anchor:It?Ot(te):te});else if(ce)E(r,Ve(ce));else if(oe){let ae=oe.index;oe.side==="right"&&(ae+=1),d(r,oe.leafId,ae)}else J&&z(r,J.leafId,Ve(J.position));tt(null),Xe()};if(C.pointerType==="touch"){let J=C.pointerId,oe=!1,ce=()=>{oe=!0,clearTimeout(ae),u.removeEventListener("pointermove",te),u.removeEventListener("pointerup",ce),u.removeEventListener("pointercancel",ce)},te=de=>{Math.hypot(de.clientX-M,de.clientY-A)>ot&&ce()},ae=setTimeout(()=>{if(oe)return;u.removeEventListener("pointermove",te),u.removeEventListener("pointerup",ce),u.removeEventListener("pointercancel",ce);try{u.setPointerCapture(J)}catch{return}u.classList.add("rdd-long-press-active"),N(r);let de=mt=>{let ht=mt.clientX-M,bt=mt.clientY-A;v(r,{x:F+ht,y:Z+bt,anchor:null}),Et(mt.clientX,mt.clientY)},Me=()=>{u.classList.remove("rdd-long-press-active"),u.removeEventListener("pointermove",de),u.removeEventListener("pointerup",Me),u.removeEventListener("pointercancel",st),se()},st=()=>{u.classList.remove("rdd-long-press-active"),u.removeEventListener("pointermove",de),u.removeEventListener("pointerup",Me),u.removeEventListener("pointercancel",st),Xe()};u.addEventListener("pointermove",de),u.addEventListener("pointerup",Me),u.addEventListener("pointercancel",st)},nt);u.addEventListener("pointermove",te),u.addEventListener("pointerup",ce),u.addEventListener("pointercancel",ce)}else{let J=!1,oe=te=>{let ae=te.clientX-M,de=te.clientY-A;!J&&(Math.abs(ae)>5||Math.abs(de)>5)&&(J=!0,N(r)),J&&v(r,{x:F+ae,y:Z+de,anchor:null})},ce=()=>{window.removeEventListener("pointermove",oe),window.removeEventListener("pointerup",ce),J&&se()};window.addEventListener("pointermove",oe),window.addEventListener("pointerup",ce)}},i=(r,C,p)=>{p.stopPropagation();let u=s.floating.find(de=>de.id===r);if(!u||u.maximized)return;S(r);let h=p.currentTarget,M=h.closest(".rdd-floating-window"),A={x:M?M.offsetLeft:0,y:M?M.offsetTop:0,w:M?M.offsetWidth:400,h:M?M.offsetHeight:300},F=it.width,Z=it.height,se=typeof u.x=="string"?parseFloat(u.x):u.x,J=typeof u.y=="string"?parseFloat(u.y):u.y,oe=typeof u.width=="string"?parseFloat(u.width):u.width,ce=typeof u.height=="string"?parseFloat(u.height):u.height,te=C==="se"&&Math.abs(se+oe-F)<4,ae=C==="se"&&Math.abs(J+ce-Z)<4;$e({element:h,pointerId:p.pointerId,startClientX:p.clientX,startClientY:p.clientY,captureStart:()=>A,onMove:(de,Me,st)=>{let mt=Mt(C,de,Me,st,{minW:200,minH:150}),{x:ht,y:bt,w:pn,h:gn}=mt;te&&(ht=F-pn,ht<0&&(ht=0,pn=F)),ae&&(bt=Z-gn,bt<0&&(bt=0,gn=Z)),v(r,{x:ht,y:bt,width:pn,height:gn})}})},y=r=>{if(ee.current){let C=r==="left"?-150:150;ee.current.scrollBy({left:C,behavior:"smooth"})}},c=(0,K.useCallback)(()=>{$.current&&clearTimeout($.current),le(!0)},[]),a=(0,K.useCallback)(()=>{$.current=setTimeout(()=>le(!1),400)},[]);(0,K.useEffect)(()=>{n==="autohide"&&s.minimized.length>O.current&&($.current&&clearTimeout($.current),le(!0),$.current=setTimeout(()=>le(!1),2e3)),O.current=s.minimized.length},[s.minimized.length,n]);let G=on();return(0,K.useEffect)(()=>(e?document.documentElement.setAttribute("data-workspace-skin",e):document.documentElement.removeAttribute("data-workspace-skin"),()=>{document.documentElement.removeAttribute("data-workspace-skin")}),[e]),(0,K.useEffect)(()=>(G==="light"?document.documentElement.setAttribute("data-color-scheme","light"):document.documentElement.removeAttribute("data-color-scheme"),()=>{document.documentElement.removeAttribute("data-color-scheme")}),[G]),(0,K.useEffect)(()=>(f?document.documentElement.classList.remove("rdd-no-animations"):document.documentElement.classList.add("rdd-no-animations"),()=>{document.documentElement.classList.remove("rdd-no-animations")}),[f]),(0,m.jsxs)("div",{className:`rdd-workspace${f?"":" rdd-no-animations"}`,"data-workspace-skin":e,"data-color-scheme":G,style:{display:"flex",flexDirection:"column",position:"relative",width:"100%",height:"100%",overflow:"hidden",userSelect:"none"},dir:s.dir,children:[(0,m.jsxs)("div",{ref:ft,className:s.draggedPanelId?"rdd-dragging-active":void 0,style:{flexGrow:1,width:"100%",position:"relative",overflow:"hidden"},children:[s.draggedPanelId!==null&&(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)("div",{"data-edge-trigger":"left",className:"rdd-workspace-edge-trigger rdd-edge-trigger-left",onPointerEnter:()=>Te("left"),onPointerLeave:()=>Te(null)}),(0,m.jsx)("div",{"data-edge-trigger":"right",className:"rdd-workspace-edge-trigger rdd-edge-trigger-right",onPointerEnter:()=>Te("right"),onPointerLeave:()=>Te(null)}),(0,m.jsx)("div",{"data-edge-trigger":"top",className:"rdd-workspace-edge-trigger rdd-edge-trigger-top",onPointerEnter:()=>Te("top"),onPointerLeave:()=>Te(null)}),(0,m.jsx)("div",{"data-edge-trigger":"bottom",className:"rdd-workspace-edge-trigger rdd-edge-trigger-bottom",onPointerEnter:()=>Te("bottom"),onPointerLeave:()=>Te(null)})]}),s.draggedPanelId!==null&&["top-left","top-right","bottom-left","bottom-right"].map(r=>(0,m.jsx)("div",{className:`rdd-corner-zone rdd-corner-zone--${r}${Bt===r?" rdd-corner-zone--hovered":""}`,onPointerEnter:()=>{tt(r),Te(null)},onPointerLeave:()=>tt(null),"aria-hidden":"true"},r)),s.draggedPanelId!==null&&kt!==null&&(0,m.jsx)("div",{className:"rdd-workspace-edge-preview",style:(()=>{let r=`${s.edgeSplitRatio*100}%`;switch(kt){case"left":return{left:0,top:0,bottom:0,width:r};case"right":return{right:0,top:0,bottom:0,width:r};case"top":return{top:0,left:0,right:0,height:r};case"bottom":return{bottom:0,left:0,right:0,height:r}}})()}),(0,m.jsx)("div",{style:{width:"100%",height:"100%",overflow:"hidden",position:"relative"},children:s.gridRoot?(0,m.jsx)(Un,{node:s.gridRoot,path:[],onTabRightClick:zt,activeDropZone:Fe,onHoverDropZone:Xt,onTabDragStart:Vt,hoveredTab:Gt,onTabHover:Yt,defaultPanelIcon:t,onRequestClosePanel:D}):(0,m.jsx)("div",{className:"rdd-empty-workspace-grid",children:"Grid Empty"})}),s.floating.map(r=>{let C=s.panels[r.id];if(!C)return null;let p=r.maximized,u=s.draggedPanelId===r.id,h=s.activePanelId===r.id,A=k.get(C.component)?.defaultOptions;return(0,m.jsxs)("div",{"data-window-id":r.id,dir:s.dir,onPointerDownCapture:()=>{R(r.id),S(r.id)},className:`rdd-floating-window ${p?"rdd-maximized":""} ${h?"rdd-window-focused":""} ${X??""}`,style:(()=>{let se=typeof r.width=="number"?`${r.width}px`:r.width,J=typeof r.height=="number"?`${r.height}px`:r.height;if(p)return{position:"absolute",left:0,top:0,width:"100%",height:"100%",zIndex:r.z,pointerEvents:u?"none":"auto"};if(r.anchor){let oe=s.floating.filter(Me=>Me.anchor===r.anchor&&!Me.maximized),ce=oe.findIndex(Me=>Me.id===r.id),te=8;for(let Me=0;Me<ce;Me++){let st=typeof oe[Me].height=="number"?oe[Me].height:parseFloat(oe[Me].height);te+=st+8}let ae=r.anchor.startsWith("top");return{position:"absolute",[r.anchor.endsWith("-right")?"insetInlineEnd":"insetInlineStart"]:8,[ae?"top":"bottom"]:te,width:se,height:J,zIndex:r.z,transition:u?"none":"top 0.2s ease, bottom 0.2s ease",pointerEvents:u?"none":"auto"}}return{position:"absolute",left:typeof r.x=="number"?`${r.x}px`:r.x,top:typeof r.y=="number"?`${r.y}px`:r.y,width:se,height:J,zIndex:r.z,pointerEvents:u?"none":"auto"}})(),children:[(0,m.jsxs)("div",{onDoubleClick:()=>x(r.id),onPointerDown:F=>{A?.canDrag!==!1&&un(r.id,F)},className:"rdd-floating-window-titlebar rdd-cursor-move",style:{cursor:p||A?.canDrag===!1?"default":"move"},children:[(0,m.jsxs)("span",{className:"rdd-floating-window-title",children:[(0,m.jsx)("span",{className:"rdd-window-title-icon",children:A?.icon||t||Cn}),(0,m.jsxs)("span",{children:[ge(C.title,B),C.dirty?" *":""]})]}),(0,m.jsxs)("div",{className:"rdd-titlebar-actions",style:{gap:"var(--rdd-header-button-gap, 4px)"},onPointerDown:F=>F.stopPropagation(),children:[A?.renderHeaderActions&&(0,m.jsx)("div",{className:"rdd-window-header-actions",children:A.renderHeaderActions(r.id)}),L(r.id).length>0&&(0,m.jsx)("button",{type:"button",className:"rdd-custom-tab-btn rdd-btn-more-actions",title:"More actions",onClick:F=>{F.stopPropagation();let Z=L(r.id);Z.length!==0&&g({event:F,items:Z})},children:(0,m.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"currentColor",style:{display:"block"},children:[(0,m.jsx)("circle",{cx:"12",cy:"5",r:"2"}),(0,m.jsx)("circle",{cx:"12",cy:"12",r:"2"}),(0,m.jsx)("circle",{cx:"12",cy:"19",r:"2"})]})}),(0,m.jsx)("button",{type:"button",title:p?ge(l.restoreSize,B):ge(l.maximize,B),onClick:()=>x(r.id),className:"rdd-custom-tab-btn rdd-btn-maximize-tab",children:(0,m.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,m.jsx)("rect",{x:"4",y:"4",width:"16",height:"16",rx:"1.5"})})}),A?.canMinimize!==!1&&(0,m.jsx)("button",{type:"button",title:ge(l.minimize,B),onClick:()=>T(r.id),className:"rdd-custom-tab-btn rdd-btn-minimize-tab",children:(0,m.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"3",children:(0,m.jsx)("path",{d:"M5 12h14"})})}),A?.canClose!==!1&&(0,m.jsx)("button",{type:"button",title:ge(l.close,B),onClick:()=>D(r.id),className:"rdd-custom-tab-btn rdd-btn-close-tab",children:(0,m.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"3",children:(0,m.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]})]}),(0,m.jsx)("div",{className:j??void 0,style:{flexGrow:1,width:"100%",overflow:"hidden",position:"relative",isolation:"isolate"},children:(0,m.jsx)(Zn,{panelId:r.id},r.id)}),!p&&(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)("div",{onPointerDown:F=>i(r.id,"n",F),className:"rdd-resize-handle rdd-resize-n"}),(0,m.jsx)("div",{onPointerDown:F=>i(r.id,"ne",F),className:"rdd-resize-handle rdd-resize-ne"}),(0,m.jsx)("div",{onPointerDown:F=>i(r.id,"e",F),className:"rdd-resize-handle rdd-resize-e"}),(0,m.jsx)("div",{onPointerDown:F=>i(r.id,"se",F),className:"rdd-resize-handle rdd-resize-se"}),(0,m.jsx)("div",{onPointerDown:F=>i(r.id,"s",F),className:"rdd-resize-handle rdd-resize-s"}),(0,m.jsx)("div",{onPointerDown:F=>i(r.id,"sw",F),className:"rdd-resize-handle rdd-resize-sw"}),(0,m.jsx)("div",{onPointerDown:F=>i(r.id,"w",F),className:"rdd-resize-handle rdd-resize-w"}),(0,m.jsx)("div",{onPointerDown:F=>i(r.id,"nw",F),className:"rdd-resize-handle rdd-resize-nw"})]})]},r.id)})]}),(n==="always"||s.minimized.length>0)&&(0,m.jsxs)("div",{className:["rdd-taskbar-footer-container",`taskbar-mode-${n}`,n==="autohide"&&he?"rdd-taskbar-expanded":""].filter(Boolean).join(" "),style:{height:"48px",zIndex:100},onPointerEnter:n==="autohide"?c:void 0,onPointerLeave:n==="autohide"?a:void 0,children:[n==="autohide"&&(0,m.jsx)("div",{className:"rdd-taskbar-peek-handle"}),(0,m.jsx)("button",{type:"button",onClick:()=>y("left"),className:"rdd-taskbar-nav-btn",style:{display:s.minimized.length>4?"block":"none"},children:"\u25C0"}),(0,m.jsx)("div",{ref:ee,className:"rdd-taskbar-items-container",style:{scrollSnapType:"x mandatory"},children:s.minimized.map(r=>{let p=k.get(r.component)?.defaultOptions?.icon||t||Cn;return(0,m.jsx)("div",{onClick:()=>{ne.current!=="touch"&&(q(null),b(r.id))},onContextMenu:u=>rt(r.id,u),onPointerDown:u=>{if(ne.current=u.pointerType,u.pointerType!=="touch")return;let h=u.currentTarget,M=u.clientX,A=u.clientY,F=u.pointerId,Z=!1,se=()=>{Z=!0,clearTimeout(ce),h.removeEventListener("pointermove",oe),h.removeEventListener("pointerup",J),h.removeEventListener("pointercancel",se)},J=()=>{se();let te=h.getBoundingClientRect();_?.id===r.id?(b(r.id),q(null)):q({id:r.id,rect:te,title:r.title,component:r.component,fromTouch:!0})},oe=te=>{Math.hypot(te.clientX-M,te.clientY-A)>ot&&se()},ce=setTimeout(()=>{if(Z)return;h.removeEventListener("pointermove",oe),h.removeEventListener("pointerup",J),h.removeEventListener("pointercancel",se);try{h.setPointerCapture(F)}catch{return}navigator.vibrate&&navigator.vibrate(10);let te=ae=>{h.removeEventListener("pointerup",te),h.removeEventListener("pointercancel",te),rt(r.id,ae)};h.addEventListener("pointerup",te),h.addEventListener("pointercancel",te)},nt);h.addEventListener("pointermove",oe),h.addEventListener("pointerup",J),h.addEventListener("pointercancel",se)},onPointerEnter:u=>{if(u.pointerType==="touch"||ze)return;Y.current&&clearTimeout(Y.current);let h=u.currentTarget.getBoundingClientRect();u.clientX>=h.left&&u.clientX<=h.right&&u.clientY>=h.top&&u.clientY<=h.bottom&&q({id:r.id,rect:h,title:r.title,component:r.component})},onPointerLeave:u=>{u.pointerType!=="touch"&&(Y.current=setTimeout(()=>{q(null)},150))},className:"rdd-taskbar-glassmorphic-item",style:{backdropFilter:"blur(6px)",transition:"all 0.2s",cursor:"pointer",scrollSnapAlign:"start",width:"38px",height:"38px",position:"relative",padding:0},children:(0,m.jsx)("span",{className:"rdd-taskbar-item-icon",children:p})},r.id)})}),_&&(0,xn.createPortal)((0,m.jsxs)("div",{className:"rdd-taskbar-item-tooltip",dir:s.dir,style:{position:"fixed",left:`${_.rect.left+_.rect.width/2}px`,top:`${_.rect.top-8}px`,transform:"translateX(-50%) translateY(-100%)",opacity:1,pointerEvents:"auto",zIndex:999999},onPointerEnter:()=>{Y.current&&clearTimeout(Y.current)},onPointerLeave:r=>{r.pointerType!=="touch"&&q(null)},onClick:()=>{b(_.id),q(null)},onContextMenu:r=>rt(_.id,r),onPointerDown:r=>{if(r.pointerType!=="touch")return;let C=_.id,p=r.currentTarget,u=r.clientX,h=r.clientY,M=r.pointerId,A=!1,F=()=>{A=!0,clearTimeout(se),p.removeEventListener("pointermove",Z),p.removeEventListener("pointerup",F),p.removeEventListener("pointercancel",F)},Z=J=>{Math.hypot(J.clientX-u,J.clientY-h)>ot&&F()},se=setTimeout(()=>{if(A)return;p.removeEventListener("pointermove",Z),p.removeEventListener("pointerup",F),p.removeEventListener("pointercancel",F);try{p.setPointerCapture(M)}catch{return}navigator.vibrate&&navigator.vibrate(10);let J=oe=>{p.removeEventListener("pointerup",J),p.removeEventListener("pointercancel",J),rt(C,oe)};p.addEventListener("pointerup",J),p.addEventListener("pointercancel",J)},nt);p.addEventListener("pointermove",Z),p.addEventListener("pointerup",F),p.addEventListener("pointercancel",F)},children:[(0,m.jsxs)("div",{className:"rdd-tooltip-header-row",children:[(0,m.jsxs)("span",{className:"rdd-tooltip-title-text rdd-text-truncate",style:{maxWidth:"140px"},children:[ge(_.title,B),s.panels[_.id]?.dirty?" *":""]}),(0,m.jsx)("span",{onClick:r=>{r.stopPropagation(),D(_.id),q(null)},title:ge(l.closePanel,B),className:"rdd-tooltip-close-x",children:(0,m.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,m.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),(0,m.jsx)(Jo,{panelId:_.id})]}),document.body),(0,m.jsx)("button",{type:"button",onClick:()=>y("right"),className:"rdd-taskbar-nav-btn",style:{display:s.minimized.length>4?"block":"none"},children:"\u25B6"})]}),Object.keys(s.panels).map(r=>{let C=s.panels[r];if(!C)return null;let p=jn(r);return(0,xn.createPortal)((0,m.jsx)(Qo,{panelId:r,children:(0,m.jsx)("div",{style:{width:"100%",height:"100%"},dir:s.dir,children:Uo(r,C,k)})}),p,r)}),U===null&&(0,m.jsx)(o.Component,{ref:pe,theme:"dark",formatMessageProvider:B,onShow:()=>ve(!0),onHide:()=>ve(!1)}),s.draggedPanelId!==null&&!s.floating.some(r=>r.id===s.draggedPanelId)&&(0,m.jsxs)("div",{className:"rdd-drag-ghost-tab",style:{left:Qe.x+12,top:Qe.y+12,zIndex:1e5},children:["\u{1F4C4} ",ge(s.panels[s.draggedPanelId]?.title,B)||"Tab"]})]})},Jn=tr;var sn=class{registry;initialState;config;_actions=null;_initialized=!1;_pendingCalls=[];_pendingOpenPanelIds=new Set;_pendingSubscriptions=[];_disconnectedWarnTimer=null;constructor(t={}){if(this.registry=new lt,this.initialState=t.initialState??null,this.config={formatMessage:t.formatMessage,predefinedMessages:t.predefinedMessages,dir:t.dir,defaultSplitRatio:t.defaultSplitRatio,defaultEdgeSplitRatio:t.defaultEdgeSplitRatio,zIndexBase:t.zIndexBase},t.panels)for(let[n,o]of Object.entries(t.panels))this.registry.register(n,o.component,o.defaultOptions)}_connect(t){this._actions=t,this._disconnectedWarnTimer!==null&&(clearTimeout(this._disconnectedWarnTimer),this._disconnectedWarnTimer=null),this._initialized||(this._initialized=!0);for(let o of this._pendingSubscriptions)o.unsub=t.subscribe(o.event,o.callback);let n=this._pendingCalls.splice(0);for(let o of n)o(t)}_disconnect(){this._actions=null;for(let t of this._pendingSubscriptions)t.unsub?.(),t.unsub=null}get isConnected(){return this._actions!==null}_startWarnTimer(){this._disconnectedWarnTimer===null&&(this._disconnectedWarnTimer=setTimeout(()=>{!this.isConnected&&this._pendingCalls.length>0&&console.error("[react-dockable-desktop] WorkspaceClient has "+this._pendingCalls.length+" queued call(s) but was never connected to a WindowManagerProvider. Did you forget client={workspace} on <WindowManagerProvider>?")},process.env.NODE_ENV==="production"?5e3:1e3))}_dispatch(t){this._actions?t(this._actions):(this._pendingCalls.push(t),this._startWarnTimer())}_subscribeRaw(t,n){if(this._actions)return this._actions.subscribe(t,n);let o={event:t,callback:n,unsub:null};return this._pendingSubscriptions.push(o),()=>{o.unsub?.(),o.unsub=null;let f=this._pendingSubscriptions.indexOf(o);f!==-1&&this._pendingSubscriptions.splice(f,1)}}openPanel(...t){if(this._actions){this._actions.openPanel(...t);return}let n=t[0];this._pendingOpenPanelIds.has(n)||(this._pendingOpenPanelIds.add(n),this._pendingCalls.push(o=>{this._pendingOpenPanelIds.delete(n),o.openPanel(...t)}),this._startWarnTimer())}closePanel(t){this._dispatch(n=>n.closePanel(t))}minimizePanel(t){this._dispatch(n=>n.minimizePanel(t))}restorePanel(t){this._dispatch(n=>n.restorePanel(t))}floatPanel(...t){this._dispatch(n=>n.floatPanel(...t))}dockPanel(...t){this._dispatch(n=>n.dockPanel(...t))}maximizePanel(t){this._dispatch(n=>n.maximizePanel(t))}focusPanel(t){this._dispatch(n=>n.focusPanel(t))}isOpen(t){return this._actions?.isOpen(t)??!1}getOpenPanelIds(){return this._actions?.getOpenPanelIds()??[]}findPanelId(t,n){return this._actions?.findPanelId(t,n)??null}saveLayout(){return this._actions?.saveLayout()??""}loadLayout(t){return this._actions?this._actions.loadLayout(t):(this._pendingCalls.push(n=>{n.loadLayout(t)}),!1)}setDirection(t){this._dispatch(n=>n.setDirection(t))}updateSplitSizes(t,n){this._dispatch(o=>o.updateSplitSizes(t,n))}updateFloatingPosition(t,n){this._dispatch(o=>o.updateFloatingPosition(t,n))}setDraggedPanelId(t){this._dispatch(n=>n.setDraggedPanelId(t))}dockPanelToGroup(t,n,o){this._dispatch(f=>f.dockPanelToGroup(t,n,o))}movePanelOrder(t,n,o){this._dispatch(f=>f.movePanelOrder(t,n,o))}closeLeafGroup(t){this._dispatch(n=>n.closeLeafGroup(t))}registerCloseGuard(t,n){this._dispatch(o=>o.registerCloseGuard(t,n))}unregisterCloseGuard(t){this._dispatch(n=>n.unregisterCloseGuard(t))}registerStateProvider(t,n){this._dispatch(o=>o.registerStateProvider(t,n))}unregisterStateProvider(t){this._dispatch(n=>n.unregisterStateProvider(t))}setPanelDirty(t,n,o){this._dispatch(f=>f.setPanelDirty(t,n,o))}updatePanelTitle(t,n){this._dispatch(o=>o.updatePanelTitle(t,n))}requestClosePanel(t,n){return this._actions?this._actions.requestClosePanel(t,n):(this._pendingCalls.push(o=>{o.requestClosePanel(t,n)}),Promise.resolve())}dockPanelToWorkspaceEdge(t,n){this._dispatch(o=>o.dockPanelToWorkspaceEdge(t,n))}showContextMenu(t){this._dispatch(n=>n.showContextMenu(t))}publish(t,n){this._dispatch(o=>o.publish(t,n))}subscribe(t,n){return this._subscribeRaw(t,n)}onPanelOpen(t){return this._subscribeRaw("panel:opened",n=>{let o=n;t(o.id,o.component)})}onPanelClose(t){return this._subscribeRaw("panel:closed",n=>{t(n.id)})}onPanelMinimize(t){return this._subscribeRaw("panel:minimized",n=>{t(n.id)})}onPanelRestore(t){return this._subscribeRaw("panel:restored",n=>{t(n.id)})}onLayoutChanged(t){return this._subscribeRaw("layout:changed",()=>t())}onPanelsExcluded(t){return this._subscribeRaw("layout:panels-excluded",n=>{t(n.panels)})}};var io=require("react");var Ge=require("react"),eo=require("react/jsx-runtime"),Qn=(0,Ge.createContext)(null),Ft=({children:e})=>{let[t,n]=(0,Ge.useState)({}),[o,f]=(0,Ge.useState)({}),s=(0,Ge.useMemo)(()=>({getActiveInGroup:k=>t[k]??null,setActiveInGroup:(k,b)=>n(T=>({...T,[k]:b})),isModifierActive:k=>o[k]??!1,setModifierActive:(k,b)=>f(T=>({...T,[k]:b})),toggleModifier:k=>f(b=>({...b,[k]:!b[k]}))}),[t,o]);return(0,eo.jsx)(Qn.Provider,{value:s,children:e})};function _t(){let e=(0,Ge.useContext)(Qn);if(!e)throw new Error("useToolbar must be used within DockableDesktopProvider");return e}var Se=require("react");var ro=require("react/jsx-runtime");function nr(){let e=new Map,t=new Set,n=()=>t.forEach(o=>o());return{publish(o,f){return e.set(o,f),n(),()=>{e.get(o)===f&&(e.delete(o),n())}},get(o){return e.get(o)??null},subscribe(o){return t.add(o),()=>t.delete(o)}}}var Rn=(0,Se.createContext)(null),an=({children:e})=>{let t=(0,Se.useMemo)(()=>nr(),[]);return(0,ro.jsx)(Rn.Provider,{value:t,children:e})};function to(e){let t=Dt(),n=(0,Se.useContext)(Rn),o=(0,Se.useRef)(null);if(!n)throw new Error("usePanelContribution must be used within PanelContributionProvider");(0,Se.useLayoutEffect)(()=>{if(n)return o.current?.(),o.current=n.publish(t,e),()=>{o.current?.(),o.current=null}},[n,t,e])}function ln(){let e=Ee(f=>f.activePanelId),t=(0,Se.useContext)(Rn);if(!t)throw new Error("useActivePanelContribution must be used within PanelContributionProvider");let n=(0,Se.useCallback)(f=>t?t.subscribe(f):()=>{},[t]),o=()=>t&&e?t.get(e):null;return(0,Se.useSyncExternalStore)(n,o,o)}function Mn(e,t=null){return{id:e.id,label:e.label,icon:e.icon??t,renderContent:()=>e.content}}function no(e){let t=ln();return t?.toolbarItems?.length?[...e,{type:"separator"},...t.toolbarItems]:e}function oo(e,t=null){let n=ln();return n?.sidebarSections?.length?[...e,...n.sidebarSections.map(o=>Mn(o,t))]:e}var St=require("react/jsx-runtime"),so=({contextMenuAdapter:e=ct,...t})=>{let n=(0,io.useContext)(Rt),o=(0,St.jsx)(Ft,{children:(0,St.jsx)(Zt,{...t,children:(0,St.jsx)(an,{children:(0,St.jsx)(tn,{children:t.children})})})});return n!==null?o:(0,St.jsx)(Qt,{adapter:e,formatMessageProvider:t.formatMessage,children:o})};var ke=require("react");var Ce=require("react/jsx-runtime"),or=({modal:e,index:t,isTopmost:n})=>{let{close:o,openModal:f,updateInstance:s,setDirty:k}=je(),b=De(),T=Ae(),{dir:w}=Ee(),{modalClass:x,modalBodyClass:v}=He(),S=(0,ke.useRef)(null),{id:I,Component:N,props:z,options:d,dirty:E,dirtyOptions:R}=e,L=d,[g,P]=(0,ke.useState)(L.icon||null),H=(0,ke.useRef)(L);H.current=L;let B=ge(L.title,b),l=(0,ke.useCallback)(async O=>{if(O?.force){o(I);return}if(S.current){if(!await S.current())return;o(I);return}if(E){f(Ze,{title:R?.title||T.unsavedChangesTitle,message:R?.message||{id:T.unsavedChangesMessage.id,defaultMessage:T.unsavedChangesMessage.defaultMessage,values:{title:B}},alert:R?.alert,alertType:R?.alertType||"danger",useYesNoTitles:!0,onOK:()=>o(I)},{size:"small"});return}o(I)},[o,f,I,E,R,B,T]),D=(0,ke.useCallback)((O,_)=>k(I,O,_),[k,I]),X=(0,ke.useCallback)(O=>s(I,{options:{...H.current,title:O}}),[s,I]),j=(0,ke.useCallback)(O=>P(O),[]),U=(0,ke.useCallback)(O=>(S.current=O,()=>{S.current=null}),[]),pe=(0,ke.useMemo)(()=>({requestClose:l,setDirty:D,setTitle:X,setIcon:j,onCloseRequested:U,containerType:"modal",instanceId:I}),[l,D,X,j,U,I]),ee=E?`${B} *`:B,he=L.size?`rdd-modal-size-${L.size}`:"rdd-modal-size-auto",le=L.closable!==!1;(0,ke.useEffect)(()=>{if(!n||!le)return;let O=_=>{_.key==="Escape"&&(_.stopPropagation(),l())};return document.addEventListener("keydown",O),()=>document.removeEventListener("keydown",O)},[l,le,n]);let $=`calc(var(--rdd-z-base, 1000) + 9000 + ${t*10})`;return(0,Ce.jsxs)("div",{className:"rdd-modal-overlay",style:{zIndex:$},dir:w,children:[(0,Ce.jsx)("div",{className:"rdd-modal-curtain",onClick:le?()=>l():void 0}),(0,Ce.jsxs)("div",{className:`rdd-modal-window ${he} ${x??""}`,children:[(0,Ce.jsxs)("div",{className:"rdd-modal-header",children:[g&&(0,Ce.jsx)("div",{className:"rdd-modal-icon",children:g}),(0,Ce.jsx)("h4",{className:"rdd-modal-title",children:ee}),le&&(0,Ce.jsx)("button",{className:"rdd-modal-close-button",onClick:()=>l(),title:b(T.closeTooltip),type:"button",children:(0,Ce.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,Ce.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),(0,Ce.jsx)("div",{className:`rdd-modal-body ${v??""}`,children:(0,Ce.jsx)(Ke,{value:pe,children:(0,Ce.jsx)(N,{...z,panelId:I})})})]})]})},rr=()=>{let{modals:e}=Be();return e.length===0?null:(0,Ce.jsx)(Ce.Fragment,{children:e.map((t,n)=>(0,Ce.jsx)(or,{modal:t,index:n,isTopmost:n===e.length-1},t.id))})},ao=rr;var Re=require("react");var Pe=require("react/jsx-runtime"),dn=({panel:e,position:t,defaultWidth:n})=>{let{close:o,openModal:f,updateInstance:s,setDirty:k,registerCloseHandler:b,unregisterCloseHandler:T}=je(),{modals:w}=Be(),x=De(),v=Ae(),{dir:S}=Ee(),{sidePanelClass:I,sidePanelBodyClass:N}=He(),z=(0,Re.useRef)(null),{id:d,Component:E,props:R,options:L,dirty:g,dirtyOptions:P}=e,H=L,[B,l]=(0,Re.useState)(H.icon||null),D=(0,Re.useRef)(H);D.current=H;let X=ge(H.title,x),j=(0,Re.useCallback)(async Y=>{if(Y?.force){o(d);return}if(z.current){if(!await z.current())return;o(d);return}if(g){f(Ze,{title:P?.title||v.unsavedChangesTitle,message:P?.message||{id:v.unsavedChangesMessage.id,defaultMessage:v.unsavedChangesMessage.defaultMessage,values:{title:X}},alert:P?.alert,alertType:P?.alertType||"danger",useYesNoTitles:!0,onOK:()=>o(d)},{size:"small"});return}o(d)},[o,f,d,g,P,X,v]),U=(0,Re.useCallback)(async()=>z.current?await z.current():!g,[g]);(0,Re.useEffect)(()=>(b(d,U),()=>T(d)),[d,U,b,T]);let pe=(0,Re.useCallback)((Y,ne)=>k(d,Y,ne),[k,d]),ee=(0,Re.useCallback)(Y=>s(d,{options:{...D.current,title:Y}}),[s,d]),he=(0,Re.useCallback)(Y=>l(Y),[]),le=(0,Re.useCallback)(Y=>(z.current=Y,()=>{z.current=null}),[]),$=(0,Re.useMemo)(()=>({requestClose:j,setDirty:pe,setTitle:ee,setIcon:he,onCloseRequested:le,containerType:t==="left"?"left-panel":"right-panel",instanceId:d}),[j,pe,ee,he,le,t,d]),O=g?`${X} *`:X;(0,Re.useEffect)(()=>{let Y=ne=>{ne.key==="Escape"&&w.length===0&&j()};return document.addEventListener("keydown",Y),()=>document.removeEventListener("keydown",Y)},[j,w.length]);let _=H.width||n||400,q=typeof _=="number"?`${_}px`:_;return(0,Pe.jsx)("div",{className:`rdd-side-panel rdd-side-panel-${t} rdd-side-panel-visible ${I??""}`,style:{width:q},dir:S,children:(0,Pe.jsxs)("div",{className:"rdd-side-panel-window",children:[(0,Pe.jsxs)("div",{className:"rdd-side-panel-header",children:[B&&(0,Pe.jsx)("div",{className:"rdd-side-panel-icon",children:B}),(0,Pe.jsx)("h4",{className:"rdd-side-panel-title",children:O}),(0,Pe.jsx)("button",{className:"rdd-side-panel-close-button",onClick:()=>j(),title:x(v.closeTooltip),type:"button",children:(0,Pe.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,Pe.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),(0,Pe.jsx)("div",{className:`rdd-side-panel-body ${N??""}`,children:(0,Pe.jsx)(Ke,{value:$,children:(0,Pe.jsx)(E,{...R,panelId:d})})})]})})},ir=({defaultWidth:e})=>{let{leftPanel:t,rightPanel:n}=Be();return(0,Pe.jsxs)(Pe.Fragment,{children:[t&&(0,Pe.jsx)(dn,{panel:t,position:"left",defaultWidth:e},t.id),n&&(0,Pe.jsx)(dn,{panel:n,position:"right",defaultWidth:e},n.id)]})},lo=({defaultWidth:e})=>{let{leftPanel:t}=Be();return t?(0,Pe.jsx)(dn,{panel:t,position:"left",defaultWidth:e},t.id):null},co=({defaultWidth:e})=>{let{rightPanel:t}=Be();return t?(0,Pe.jsx)(dn,{panel:t,position:"right",defaultWidth:e},t.id):null},uo=ir;var ie=require("react");var xe=require("react/jsx-runtime"),go=(0,ie.createContext)(null),fo=(0,ie.createContext)(null);function sr({tabId:e,onClose:t,onOpen:n,setActiveTabId:o,children:f}){let s=(0,ie.useMemo)(()=>({tabId:e,onClose:t,onOpen:n,openTab:k=>o(k)}),[e,t,n,o]);return(0,xe.jsx)(fo.Provider,{value:s,children:f})}var po=(0,ie.memo)(function({tabs:t,activeTabId:n,isVisible:o,position:f,onTabClick:s}){return(0,xe.jsx)("div",{style:{width:o?"56px":"0px",height:"100%",overflow:"hidden",transition:"width 0.25s cubic-bezier(0.4, 0, 0.2, 1)",flexShrink:0},children:(0,xe.jsx)("div",{className:`rdd-sidebar-tabs-strip rdd-${f}`,style:{width:"56px",height:"100%"},children:t.map(k=>{let b=n===k.id;return(0,xe.jsx)("button",{type:"button",onClick:()=>s(k.id),className:`rdd-sidebar-tab-btn${b?" rdd-active":""}`,title:k.label,"aria-pressed":b,children:k.icon},k.id)})})})});function ar({position:e,currentWidth:t,minWidth:n,maxWidth:o,onWidthChange:f,rootRef:s}){return(0,xe.jsx)("div",{className:"rdd-resizer-bar",style:{cursor:"col-resize",width:"1px",height:"100%",flexShrink:0,zIndex:20},onPointerDown:b=>{b.preventDefault();let T=b.currentTarget,w=[{el:T,classes:["rdd-active"]},{el:document.body,classes:["rdd-resizing-active","rdd-resizing-col-active"]}];s.current&&w.push({el:s.current,classes:["rdd-sidebar-resizing"]}),$e({element:T,pointerId:b.pointerId,startClientX:b.clientX,startClientY:b.clientY,captureStart:()=>t,activeClasses:w,onMove:(x,v,S)=>{let I=e==="right"?S-x:S+x;f(Math.max(n,Math.min(o,I)))}})}})}var mo=(0,ie.forwardRef)(function({position:t="right",tabs:n,defaultWidth:o,minWidth:f=150,maxWidth:s=600,onWidthChange:k,activeTabId:b,onActiveTabChange:T,visible:w,onVisibilityChange:x,stripVisible:v,onStripVisibilityChange:S,children:I},N){let z=b!==void 0,[d,E]=(0,ie.useState)(()=>o??280),R=(0,ie.useCallback)(Y=>{E(Y),k?.(Y)},[k]),[L,g]=(0,ie.useState)(null),P=z?b:L,[H,B]=(0,ie.useState)(()=>new Set),l=(0,ie.useMemo)(()=>{let Y=new Set(H);P&&Y.add(P);for(let ne of n)ne.eagerMount&&Y.add(ne.id);return Y},[H,P,n]),D=(0,ie.useRef)(P??null);(0,ie.useEffect)(()=>{D.current=P??null},[P]);let X=(0,ie.useRef)(d);(0,ie.useEffect)(()=>{X.current=d},[d]);let j=(0,ie.useRef)(null),U=(0,ie.useCallback)(Y=>{B(Y!==null?ne=>{if(ne.has(Y))return ne;let me=new Set(ne);return me.add(Y),me}:ne=>{let me=!1,ve=new Set(ne);for(let ze of ne){let Fe=n.find(Ne=>Ne.id===ze);Fe&&!Fe.eagerMount&&!Fe.preserveState&&(ve.delete(ze),me=!0)}return me?ve:ne}),z||g(Y),T?.(Y)},[z,T,n]);(0,ie.useImperativeHandle)(N,()=>({openTab:Y=>U(Y),closeDrawer:()=>U(null),getActiveTab:()=>D.current,show:()=>x?.(!0),hide:()=>x?.(!1),toggle:()=>x?.(w===!1),showStrip:()=>S?.(!0),hideStrip:()=>S?.(!1),setWidth:Y=>R(Math.max(f,Math.min(s,Y))),getWidth:()=>X.current}),[U,w,x,S,R,f,s]);let pe=(0,ie.useCallback)(Y=>{U(P===Y?null:Y)},[P,U]),ee=(0,ie.useCallback)(()=>U(null),[U]),he=(0,ie.useMemo)(()=>({openTab:Y=>U(Y),closeDrawer:()=>U(null),getActiveTab:()=>D.current}),[U]),le=w!==!1,$=le&&v!==!1,O=le&&P!=null,_=(0,xe.jsx)("div",{className:`rdd-sidebar-content-drawer rdd-${t}`,style:{flexBasis:O?`${d}px`:"0px",flexShrink:1,flexGrow:0,minWidth:O?`${f}px`:"0px",maxWidth:O?`${s}px`:"0px",overflow:"hidden",transition:"flex-basis 0.2s cubic-bezier(0.4, 0, 0.2, 1), min-width 0.2s cubic-bezier(0.4, 0, 0.2, 1), max-width 0.2s cubic-bezier(0.4, 0, 0.2, 1)"},children:n.map(Y=>{if(!l.has(Y.id))return null;let me=P===Y.id,ve=()=>U(Y.id);return(0,xe.jsxs)("div",{style:{display:me?"flex":"none",flexDirection:"column",height:"100%",width:"100%"},children:[(0,xe.jsx)("div",{className:"rdd-sidebar-drawer-header",children:(0,xe.jsx)("span",{className:"rdd-sidebar-header-title",children:Y.label})}),(0,xe.jsx)("div",{className:"rdd-sidebar-drawer-body",children:(0,xe.jsx)(sr,{tabId:Y.id,onClose:ee,onOpen:ve,setActiveTabId:U,children:Y.renderContent(Y.id,ee,ve)})})]},Y.id)})}),q=O?(0,xe.jsx)(ar,{position:t,currentWidth:d,minWidth:f,maxWidth:s,onWidthChange:R,rootRef:j}):null;return(0,xe.jsx)(go.Provider,{value:he,children:(0,xe.jsxs)("div",{ref:j,style:{display:"flex",flexDirection:"row",width:"100%",height:"100%",overflow:"hidden"},children:[t==="left"&&(0,xe.jsx)(po,{tabs:n,activeTabId:P,isVisible:$,position:t,onTabClick:pe}),t==="left"&&_,t==="left"&&q,(0,xe.jsx)("div",{style:{flex:"1 1 0%",minWidth:0,overflow:"hidden"},children:I}),t==="right"&&q,t==="right"&&_,t==="right"&&(0,xe.jsx)(po,{tabs:n,activeTabId:P,isVisible:$,position:t,onTabClick:pe})]})})});function ho(){let e=(0,ie.useContext)(go);if(!e)throw new Error("useSidebar must be used within Sidebar");return e}function bo(){let e=(0,ie.useContext)(fo);if(!e)throw new Error("useSidebarTab must be used within a Sidebar tab renderContent tree");return e}var Ie=require("react"),vo=require("react-dom");var we=require("react/jsx-runtime");function lr(e,t,n=!1,o=8){switch(t){case"left":return n?{right:window.innerWidth-e.left+o,top:e.top}:{left:e.right+o,top:e.top};case"right":return n?{left:e.right+o,top:e.top}:{right:window.innerWidth-e.left+o,top:e.top};case"top":return n?{top:e.bottom+o,right:window.innerWidth-e.right}:{top:e.bottom+o,left:e.left};case"bottom":return n?{bottom:window.innerHeight-e.top+o,right:window.innerWidth-e.right}:{bottom:window.innerHeight-e.top+o,left:e.left}}}function dr({item:e,position:t,toolbar:n}){let[o,f]=(0,Ie.useState)(!1),[s,k]=(0,Ie.useState)(null),b=(0,Ie.useRef)(null),T=(0,Ie.useRef)(null),w=e.activeItemId!==void 0,x=w?e.activeItemId:n.getActiveInGroup(e.id),v=e.items.find(d=>!("type"in d)&&d.id===x),S=x!==null,I=v?.icon??e.defaultIcon,N=v?.label??e.label,z=()=>{e.disabled||(!o&&b.current&&k(b.current.getBoundingClientRect()),f(d=>!d))};return(0,Ie.useLayoutEffect)(()=>{if(!o||!T.current)return;let d=T.current,E=d.getBoundingClientRect(),R=8;E.right>window.innerWidth-R&&(d.style.left=`${Math.max(R,window.innerWidth-E.width-R)}px`,d.style.right="auto"),E.left<R&&(d.style.left=`${R}px`,d.style.right="auto"),E.bottom>window.innerHeight-R&&(d.style.top=`${Math.max(R,window.innerHeight-E.height-R)}px`,d.style.bottom="auto"),E.top<R&&(d.style.top=`${R}px`,d.style.bottom="auto")},[o]),(0,Ie.useEffect)(()=>{if(!o)return;let d=E=>{let R=E.target;b.current?.contains(R)||T.current?.contains(R)||f(!1)};return document.addEventListener("mousedown",d),()=>document.removeEventListener("mousedown",d)},[o]),(0,Ie.useEffect)(()=>{if(!o)return;let d=E=>{E.key==="Escape"&&f(!1)};return document.addEventListener("keydown",d),()=>document.removeEventListener("keydown",d)},[o]),(0,we.jsxs)(we.Fragment,{children:[(0,we.jsx)("button",{ref:b,type:"button",className:`rdd-toolbar-btn rdd-toolbar-btn-group${S?" rdd-active":""}`,title:N,"aria-label":N,"aria-expanded":o,"aria-haspopup":"menu",disabled:e.disabled,onClick:z,children:I}),o&&s&&(0,vo.createPortal)((0,we.jsx)("div",{ref:T,className:`rdd-toolbar-group-flyout rdd-${t}`,style:lr(s,t,document.documentElement.dir==="rtl"),role:"menu",children:e.items.map((d,E)=>{if("type"in d)return(0,we.jsx)("div",{className:"rdd-toolbar-group-flyout-sep",role:"separator"},`sep-${E}`);let R=x===d.id;return(0,we.jsxs)("button",{type:"button",className:`rdd-toolbar-group-flyout-item${R?" rdd-active":""}`,disabled:d.disabled,role:"menuitem","aria-pressed":R,onClick:()=>{w?e.onActiveItemChange?.(d.id):n.setActiveInGroup(e.id,d.id),d.onActivate?.(d.id),f(!1)},children:[(0,we.jsx)("span",{className:"rdd-toolbar-group-flyout-icon",children:d.icon}),(0,we.jsx)("span",{className:"rdd-toolbar-group-flyout-label",children:d.label}),d.shortcut&&(0,we.jsx)("span",{className:"rdd-toolbar-group-flyout-shortcut",children:d.shortcut})]},d.id)})}),document.body)]})}function cr(e,t,n,o){switch(e.type){case"separator":return(0,we.jsx)("div",{className:"rdd-toolbar-separator",role:"separator"},`sep-${t}`);case"action":return(0,we.jsx)("button",{type:"button",className:"rdd-toolbar-btn rdd-toolbar-btn-action",title:e.label,"aria-label":e.label,disabled:e.disabled,onClick:e.onClick,children:e.icon},e.id);case"radio":{let f=n.getActiveInGroup(e.group)===e.id;return(0,we.jsx)("button",{type:"button",className:`rdd-toolbar-btn rdd-toolbar-btn-radio${f?" rdd-active":""}`,title:e.label,"aria-label":e.label,"aria-pressed":f,disabled:e.disabled,onClick:()=>{n.setActiveInGroup(e.group,e.id),e.onActivate?.(e.id)},children:e.icon},e.id)}case"toggle":{let f=e.active!==void 0,s=f?e.active:n.isModifierActive(e.id);return(0,we.jsx)("button",{type:"button",className:`rdd-toolbar-btn rdd-toolbar-btn-toggle${s?" rdd-active":""}`,title:e.label,"aria-label":e.label,"aria-pressed":s,disabled:e.disabled,onClick:()=>{f||n.toggleModifier(e.id),e.onToggle?.(!s)},children:e.icon},e.id)}case"group":return(0,we.jsx)(dr,{item:e,position:o,toolbar:n},e.id)}}var yo=(0,Ie.forwardRef)(function({position:t="left",items:n,visible:o,onVisibilityChange:f,className:s,style:k},b){let T=_t(),w=t==="left"||t==="right";(0,Ie.useImperativeHandle)(b,()=>({show:()=>f?.(!0),hide:()=>f?.(!1),toggle:()=>f?.(o===!1)}),[o,f]);let x=o!==!1?{}:w?{width:"0px"}:{height:"0px"};return(0,we.jsx)("div",{className:`rdd-toolbar-strip rdd-${t}${s?` ${s}`:""}`,role:"toolbar","aria-orientation":w?"vertical":"horizontal",style:{...x,...k},children:n.map((v,S)=>cr(v,S,T,t))})});var ye=require("react"),Sn=require("react-dom"),ue=require("react/jsx-runtime"),kn=class{listeners=new Set;counter=0;subscribe(t){this.listeners.add(t)}unsubscribe(t){this.listeners.delete(t)}show(t,n={}){let o=n.id??`toast-${++this.counter}`;return this.emit({kind:"show",id:o,message:t,rawOpts:{...n,id:o}}),o}update(t,n,o){this.emit({kind:"update",id:t,message:n,patch:o})}dismiss(t){this.emit({kind:"dismiss",id:t})}emit(t){this.listeners.forEach(n=>n(t))}},Le=new kn,Po=Object.assign((e,t)=>Le.show(e,t),{info:(e,t)=>Le.show(e,{...t,type:"info"}),success:(e,t)=>Le.show(e,{...t,type:"success"}),warning:(e,t)=>Le.show(e,{...t,type:"warning"}),error:(e,t)=>Le.show(e,{...t,type:"error"}),dismiss:e=>Le.dismiss(e),promise:(e,t,n)=>{let o=Le.show(t.pending,{...n,type:"info",duration:0});return e.then(f=>{let s=typeof t.success=="function"?t.success(f):t.success;Le.update(o,s,{type:"success",duration:n?.duration??5e3})},f=>{let s=typeof t.error=="function"?t.error(f):t.error;Le.update(o,s,{type:"error",duration:n?.duration??5e3})}),e}}),ur=()=>(0,ue.jsxs)("svg",{className:"rdd-toast__icon",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[(0,ue.jsx)("circle",{cx:"8",cy:"8",r:"7",stroke:"currentColor",strokeWidth:"1.5"}),(0,ue.jsx)("path",{d:"M8 5v.01M8 7.5v3.5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]}),pr=()=>(0,ue.jsxs)("svg",{className:"rdd-toast__icon",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[(0,ue.jsx)("circle",{cx:"8",cy:"8",r:"7",stroke:"currentColor",strokeWidth:"1.5"}),(0,ue.jsx)("path",{d:"M5 8l2 2 4-4",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})]}),gr=()=>(0,ue.jsxs)("svg",{className:"rdd-toast__icon",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[(0,ue.jsx)("path",{d:"M8 2.5L14 13.5H2L8 2.5z",stroke:"currentColor",strokeWidth:"1.5",strokeLinejoin:"round"}),(0,ue.jsx)("path",{d:"M8 7v2.5M8 11.5v.01",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]}),fr=()=>(0,ue.jsxs)("svg",{className:"rdd-toast__icon",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[(0,ue.jsx)("circle",{cx:"8",cy:"8",r:"7",stroke:"currentColor",strokeWidth:"1.5"}),(0,ue.jsx)("path",{d:"M5.5 5.5l5 5M10.5 5.5l-5 5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]}),mr=()=>(0,ue.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:(0,ue.jsx)("path",{d:"M4 4l8 8M12 4l-8 8",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})}),hr={info:(0,ue.jsx)(ur,{}),success:(0,ue.jsx)(pr,{}),warning:(0,ue.jsx)(gr,{}),error:(0,ue.jsx)(fr,{})};function br({id:e,message:t,options:n,exiting:o,isLeft:f,showProgress:s,pauseOnHover:k,animation:b,onDismiss:T,onExited:w}){let x=(0,ye.useRef)(null),v=(0,ye.useRef)(null),S=(0,ye.useRef)(n.duration),I=(0,ye.useRef)(0),[N,z]=(0,ye.useState)(!1),d=b==="none"?"rdd-toast--visible":b==="fade"?"rdd-toast--fade-entering":f?"rdd-toast--entering-left":"rdd-toast--entering",[E,R]=(0,ye.useState)(d);(0,ye.useLayoutEffect)(()=>{x.current&&(x.current.style.maxHeight=`${x.current.offsetHeight}px`)},[]),(0,ye.useEffect)(()=>{if(b==="none")return;let l=requestAnimationFrame(()=>R("rdd-toast--visible"));return()=>cancelAnimationFrame(l)},[]);let L=(0,ye.useCallback)(l=>{l<=0||(I.current=Date.now(),v.current=setTimeout(()=>T(e),l))},[e,T]);(0,ye.useEffect)(()=>(v.current&&clearTimeout(v.current),S.current=n.duration,L(n.duration),()=>{v.current&&clearTimeout(v.current)}),[n.duration,L]),(0,ye.useEffect)(()=>{if(!o)return;let l=x.current;if(!l||b==="none"){w(e);return}let D=j=>{j.propertyName==="max-height"&&w(e)};l.addEventListener("transitionend",D);let X=setTimeout(()=>w(e),520);return()=>{l.removeEventListener("transitionend",D),clearTimeout(X)}},[o,e,w,b]);let g=()=>{!k||n.duration===0||(v.current&&(clearTimeout(v.current),v.current=null,S.current=Math.max(0,S.current-(Date.now()-I.current))),z(!0))},P=()=>{!k||n.duration===0||(z(!1),L(S.current))},H=["rdd-toast",n.type&&`rdd-toast--${n.type}`,E,o&&"rdd-toast--exiting",N&&"rdd-toast--paused"].filter(Boolean).join(" "),B=n.icon!==void 0?n.icon:n.type?hr[n.type]:null;return(0,ue.jsxs)("div",{ref:x,role:"status","aria-live":"polite",className:H,onMouseEnter:g,onMouseLeave:P,children:[B&&B,(0,ue.jsx)("div",{className:"rdd-toast__body",children:n.content!==void 0?n.content:t}),n.closable&&(0,ue.jsx)("button",{type:"button",className:"rdd-toast__close",onClick:()=>T(e),"aria-label":"Close notification",children:(0,ue.jsx)(mr,{})}),s&&n.duration>0&&(0,ue.jsx)("div",{className:"rdd-toast__progress",style:{animationDuration:`${n.duration}ms`}})]})}function Tn(e,t,n){return{id:e.id,type:e.type??"info",duration:e.duration??t,closable:e.closable??n,icon:e.icon,content:e.content,onClose:e.onClose}}function xo({position:e="top-right",maxVisible:t=3,defaultDuration:n=5e3,defaultClosable:o=!0,pauseOnHover:f=!0,animation:s="slide",newestOnTop:k=!1,progressBar:b=!1,width:T=320,adapter:w}){let[x,v]=(0,ye.useState)([]),S=(0,ye.useRef)([]),I=(0,ye.useRef)(x);I.current=x;let N=(0,ye.useCallback)(L=>{v(g=>g.map(P=>P.id===L?{...P,exiting:!0}:P)),I.current.find(g=>g.id===L)?.options.onClose?.()},[]),z=(0,ye.useCallback)(L=>{let g=S.current.shift()??null;v(P=>{let H=P.filter(l=>l.id!==L);if(!g)return H;let B=Tn(g.rawOpts,n,o);return[...H,{id:g.id,message:g.message,options:B,exiting:!1}]})},[n,o]);if((0,ye.useEffect)(()=>{if(w)return;let L=g=>{if(g.kind==="show"){let P=Tn(g.rawOpts,n,o),H={id:g.id,message:g.message,options:P,exiting:!1},B={id:g.id,message:g.message,rawOpts:g.rawOpts};v(l=>l.find(j=>j.id===g.id)?l.map(j=>j.id===g.id?{...j,message:g.message,options:P}:j):l.filter(j=>!j.exiting).length<t?[...l,H]:(S.current.some(j=>j.id===B.id)||S.current.push(B),l))}else g.kind==="update"?(v(P=>P.map(H=>{if(H.id!==g.id)return H;let B={...H.options,...g.patch,id:H.id};return{...H,message:g.message,options:B}})),S.current=S.current.map(P=>P.id!==g.id?P:{...P,message:g.message,rawOpts:{...P.rawOpts,...g.patch}})):g.kind==="dismiss"&&(g.id===void 0?(v(P=>P.map(H=>({...H,exiting:!0}))),S.current=[]):I.current.some(H=>H.id===g.id)?N(g.id):S.current=S.current.filter(H=>H.id!==g.id))};return Le.subscribe(L),()=>Le.unsubscribe(L)},[w,t,n,o,N]),(0,ye.useEffect)(()=>{if(!w)return;let L=g=>{if(g.kind==="show"){let P=Tn(g.rawOpts,n,o);w.show(g.id,g.message,P)}else g.kind==="update"?w.update(g.id,g.message,g.patch):g.kind==="dismiss"&&w.dismiss(g.id)};return Le.subscribe(L),()=>Le.unsubscribe(L)},[w,n,o]),w){if(!w.Container)return null;let L=w.Container;return(0,Sn.createPortal)((0,ue.jsx)(L,{position:e}),document.body)}let d=e.endsWith("left"),E="";k===!0&&(E="rdd-toast-container--newest-top"),k===!1&&(E="rdd-toast-container--newest-bottom");let R=["rdd-toast-container",`rdd-toast-container--${e}`,E].filter(Boolean).join(" ");return(0,Sn.createPortal)((0,ue.jsx)("div",{className:R,style:{width:T},"aria-label":"Notifications","aria-live":"polite",children:x.map(L=>(0,ue.jsx)(br,{id:L.id,message:L.message,options:L.options,exiting:L.exiting,isLeft:d,showProgress:b,pauseOnHover:f,animation:s,onDismiss:N,onExited:z},L.id))}),document.body)}var V=fn(require("react"),1),wo=require("react-dom");var Q=require("react/jsx-runtime"),vr=["top-left","top-right","bottom-left","bottom-right"],Ro=(0,V.createContext)(null),Mo=(0,V.createContext)(null),To=(0,V.createContext)(null),Je=80;function yr(e,t,n){let o=e.getBoundingClientRect(),f=t-o.left,s=n-o.top;return f<Je&&s<Je?"top-left":f>o.width-Je&&s<Je?"top-right":f<Je&&s>o.height-Je?"bottom-left":f>o.width-Je&&s>o.height-Je?"bottom-right":null}function So({children:e,className:t,style:n}){let[o,f]=(0,V.useState)({}),[s,k]=(0,V.useState)({}),[b,T]=(0,V.useState)({"top-left":[],"top-right":[],"bottom-left":[],"bottom-right":[]}),[w,x]=(0,V.useState)({}),[v,S]=(0,V.useState)(null),[I,N]=(0,V.useState)(null),[z,d]=(0,V.useState)(null),[E,R]=(0,V.useState)(()=>new Map),L=(0,V.useRef)(100),g=(0,V.useRef)(null),P=(0,V.useCallback)(($,O)=>(f(_=>({..._,[$]:O})),()=>f(_=>{let q={..._};return delete q[$],q})),[]),H=(0,V.useCallback)($=>{L.current+=1;let O=L.current;k(_=>({..._,[$]:O})),d($)},[]),B=(0,V.useCallback)(($,O)=>{T(_=>{let q={"top-left":_["top-left"].filter(Y=>Y!==$),"top-right":_["top-right"].filter(Y=>Y!==$),"bottom-left":_["bottom-left"].filter(Y=>Y!==$),"bottom-right":_["bottom-right"].filter(Y=>Y!==$)};return q[O]=[...q[O],$],q})},[]),l=(0,V.useCallback)($=>{T(O=>({"top-left":O["top-left"].filter(_=>_!==$),"top-right":O["top-right"].filter(_=>_!==$),"bottom-left":O["bottom-left"].filter(_=>_!==$),"bottom-right":O["bottom-right"].filter(_=>_!==$)}))},[]),D=(0,V.useCallback)(($,O)=>{x(_=>_[$]===O?_:{..._,[$]:O})},[]),X=(0,V.useCallback)(($,O)=>{R(_=>{let q=new Map(_);return q.set($,O),q})},[]),j=(0,V.useCallback)($=>{R(O=>{let _=new Map(O);return _.delete($),_})},[]),U=(0,V.useCallback)(()=>{R(new Map)},[]),pe=(0,V.useMemo)(()=>Array.from(E.keys()),[E]),ee=(0,V.useMemo)(()=>({registerToolbar:P,insetTop:o.top??0,insetBottom:o.bottom??0}),[P,o]),he=(0,V.useMemo)(()=>({managedWindowIds:pe,openManaged:X,closeManaged:j,closeAllManaged:U}),[pe,X,j,U]),le=(0,V.useMemo)(()=>({topId:z,zOrders:s,focusWindow:H,containerRef:g,stacks:b,dockedSizes:w,dockWindow:B,undockWindow:l,reportDockedSize:D,draggingId:v,setDraggingId:S,hoveredZone:I,setHoveredZone:N,insetTop:o.top??0,insetBottom:o.bottom??0}),[z,s,H,b,w,B,l,D,v,I,o]);return(0,Q.jsx)(Ro.Provider,{value:ee,children:(0,Q.jsx)(Mo.Provider,{value:he,children:(0,Q.jsx)(To.Provider,{value:le,children:(0,Q.jsxs)("div",{ref:g,className:`rdd-panel-overlay-root${v!==null?" rdd-dragging-active":""}${t?" "+t:""}`,style:n,children:[e,v!==null&&(0,Q.jsx)(Pr,{hoveredZone:I}),Array.from(E.entries()).map(([$,O])=>(0,Q.jsx)(In,{id:$,title:O.title,icon:O.icon,open:!0,onClose:()=>j($),defaultAnchor:O.anchor??"top-right",defaultWidth:O.width??320,defaultHeight:O.height??240,children:O.content},$))]})})})})}function Pr({hoveredZone:e}){return(0,Q.jsx)(Q.Fragment,{children:vr.map(t=>(0,Q.jsx)("div",{className:`rdd-panel-float-dropzone rdd-panel-float-dropzone--${t}${e===t?" rdd-panel-float-dropzone--hovered":""}`,"aria-hidden":"true"},t))})}function ko({position:e,variant:t="transparent",buttonVariant:n="ghost",buttonSize:o,style:f,className:s,children:k}){let b=(0,V.useContext)(Ro),T=(0,V.useRef)(null),w=(0,V.useRef)(null);(0,V.useLayoutEffect)(()=>{let N=T.current;if(!N||!b)return;let z=e==="top"||e==="bottom"?N.offsetHeight:N.offsetWidth;return w.current?.(),w.current=b.registerToolbar(e,z),()=>{w.current?.(),w.current=null}},[e,b?.registerToolbar]);let x={position:"absolute",zIndex:5,pointerEvents:"none",boxSizing:"border-box"};e==="top"?(x.top=0,x.left=0,x.right=0):e==="bottom"?(x.bottom=0,x.left=0,x.right=0):e==="left"?(x.insetInlineStart=0,x.top=b?.insetTop??0,x.bottom=b?.insetBottom??0):(x.insetInlineEnd=0,x.top=b?.insetTop??0,x.bottom=b?.insetBottom??0);let S=e==="left"||e==="right"?{...(b?.insetTop??0)>0?{paddingTop:0}:{},...(b?.insetBottom??0)>0?{paddingBottom:0}:{}}:{},I=o!=null?{"--rdd-panel-toolbar-btn-size":`${o}px`}:{};return(0,Q.jsx)("div",{ref:T,className:`rdd-panel-toolbar rdd-panel-toolbar--${e}${s?" "+s:""}`,"data-variant":t,"data-btn-variant":n,style:{...x,...S,...I,...f},children:k})}function Io({icon:e,onClick:t,disabled:n,title:o,variant:f}){return(0,Q.jsx)("button",{type:"button",className:"rdd-panel-toolbar-btn",onClick:t,disabled:n,title:o,"aria-label":o,...f?{"data-variant":f}:{},children:e})}function Eo({icon:e,active:t,onToggle:n,disabled:o,title:f,variant:s}){return(0,Q.jsx)("button",{type:"button",className:`rdd-panel-toolbar-btn${t?" rdd-panel-toolbar-btn--active":""}`,onClick:n,disabled:o,title:f,"aria-label":f,"aria-pressed":t,...s?{"data-variant":s}:{},children:e})}function Lo(){return(0,Q.jsx)("span",{className:"rdd-panel-toolbar__sep","aria-hidden":"true"})}function zo(){return(0,Q.jsx)("span",{className:"rdd-panel-toolbar__spacer","aria-hidden":"true"})}function No({children:e}){return(0,Q.jsx)("span",{className:"rdd-panel-toolbar__item",children:e})}function Do({children:e}){return(0,Q.jsx)("div",{className:"rdd-panel-toolbar__center",children:e})}function Wo({placeholder:e="Search\u2026",onSearch:t,onSelect:n}){let[o,f]=(0,V.useState)(!1),[s,k]=(0,V.useState)(""),[b,T]=(0,V.useState)([]),[w,x]=(0,V.useState)(null),v=(0,V.useRef)(null),S=(0,V.useRef)(null),I=(0,V.useRef)(null),N=(0,V.useRef)(null),z=()=>{f(!0),setTimeout(()=>S.current?.focus(),0)},d=()=>{f(!1),k(""),T([]),x(null),I.current?.abort(),N.current&&clearTimeout(N.current)},E=B=>{let l=B.target.value;if(k(l),I.current?.abort(),N.current&&clearTimeout(N.current),!l.trim()){T([]),x(null);return}N.current=setTimeout(async()=>{let D=new AbortController;I.current=D;try{let X=await t(l,D.signal);if(!D.signal.aborted){T(X);let j=v.current;if(j&&X.length>0){let U=j.getBoundingClientRect(),pe=Math.max(U.width,240),ee=U.left;ee+pe>window.innerWidth-8&&(ee=window.innerWidth-pe-8),x({top:U.bottom+4,left:ee,width:pe})}else x(null)}}catch{}},300)},R=B=>{n(B),d()},L=B=>{v.current?.contains(B.relatedTarget)||d()},g=B=>{B.key==="Escape"&&d()},P=(0,V.useMemo)(()=>{let B={};for(let l of b){let D=l.group??"";B[D]||(B[D]=[]),B[D].push(l)}return B},[b]),H=(0,Q.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,Q.jsx)("circle",{cx:"6.5",cy:"6.5",r:"4.5"}),(0,Q.jsx)("line",{x1:"10",y1:"10",x2:"14",y2:"14"})]});return o?(0,Q.jsxs)("div",{ref:v,className:"rdd-panel-toolbar-search rdd-panel-toolbar-search--open",onBlur:L,children:[(0,Q.jsx)("button",{type:"button",className:"rdd-panel-toolbar-btn",onClick:d,"aria-label":"Close search",title:"Close search",children:H}),(0,Q.jsx)("input",{ref:S,className:"rdd-panel-toolbar-search__input",type:"text",value:s,onChange:E,onKeyDown:g,placeholder:e,autoComplete:"off"}),w&&b.length>0&&(0,wo.createPortal)((0,Q.jsx)("div",{className:"rdd-panel-toolbar-search__dropdown",style:{position:"fixed",top:w.top,left:w.left,width:w.width,zIndex:9502},onMouseDown:B=>B.preventDefault(),children:Object.entries(P).map(([B,l])=>(0,Q.jsxs)(V.default.Fragment,{children:[B&&(0,Q.jsx)("div",{className:"rdd-panel-toolbar-search__group",children:B}),l.map(D=>(0,Q.jsxs)("button",{type:"button",className:"rdd-panel-toolbar-search__item",onClick:()=>R(D),children:[D.icon&&(0,Q.jsx)("span",{className:"rdd-panel-toolbar-search__item-icon",children:D.icon}),(0,Q.jsx)("span",{className:"rdd-panel-toolbar-search__item-label",children:D.label}),D.description&&(0,Q.jsx)("span",{className:"rdd-panel-toolbar-search__item-desc",children:D.description})]},D.id))]},B||"__default__"))}),document.body)]}):(0,Q.jsx)("div",{ref:v,className:"rdd-panel-toolbar-search",children:(0,Q.jsx)("button",{type:"button",className:"rdd-panel-toolbar-btn",onClick:z,title:"Search","aria-label":"Search",children:H})})}function In(e){let t=(0,V.useContext)(To);return e.open?(0,Q.jsx)(Rr,{ctx:t,...e},e.id):null}var xr=120,Cr=60,Co=8,wr=8;function Rr({id:e,title:t,icon:n,defaultAnchor:o,defaultWidth:f,defaultHeight:s,children:k,ctx:b,onClose:T}){let w=(0,V.useContext)(Pt)?.isRtl??!1,[x,v]=(0,V.useState)("docked"),[S,I]=(0,V.useState)(o),[N,z]=(0,V.useState)(null),[d,E]=(0,V.useState)({w:f,h:s}),R=(0,V.useRef)(null),L=(0,V.useRef)(x);L.current=x;let g=(0,V.useRef)(N);g.current=N;let P=(0,V.useRef)(d);P.current=d;let H=(0,V.useRef)(null);(0,V.useLayoutEffect)(()=>(b?.dockWindow(e,o),()=>{b?.undockWindow(e)}),[]),(0,V.useEffect)(()=>{b?.reportDockedSize(e,d.h)},[d.h]);let B=b?.zOrders[e]??101,l=!b||b.topId===e,D=()=>{let $=R.current?.offsetParent;return{cw:$?.clientWidth??9999,ch:$?.clientHeight??9999}},X=()=>{b?.focusWindow(e)},j=$=>{if($.button!==0)return;$.preventDefault();let O,_;if(L.current==="docked"){let q=R.current,Y=b?.containerRef?.current;if(q&&Y){let ne=q.getBoundingClientRect(),me=Y.getBoundingClientRect();O=ne.left-me.left,_=ne.top-me.top}else O=Co,_=b?.insetTop??0;b?.undockWindow(e),v("free"),z({x:O,y:_})}else O=g.current?.x??0,_=g.current?.y??0;H.current={mouseX:$.clientX,mouseY:$.clientY,posX:O,posY:_,hasDragged:!1},R.current?.setPointerCapture($.pointerId)},U=$=>O=>{if(O.button!==0)return;O.preventDefault(),O.stopPropagation();let _=0,q=0;if(L.current==="free")_=g.current?.x??0,q=g.current?.y??0;else{let ne=R.current,me=ne?.offsetParent;if(ne&&me){let ve=ne.getBoundingClientRect(),ze=me.getBoundingClientRect();_=ve.left-ze.left,q=ve.top-ze.top}}let Y={x:_,y:q,w:P.current.w,h:P.current.h};$e({element:O.currentTarget,pointerId:O.pointerId,startClientX:O.clientX,startClientY:O.clientY,captureStart:()=>Y,onMove:(ne,me,ve)=>{let{cw:ze,ch:Fe}=D(),{x:Ne,y:Oe,w:Qe,h:et}=Mt($,ne,me,ve,{minW:xr,minH:Cr,maxW:ze-ve.x,maxH:Fe-ve.y,minX:0,minY:0});E({w:Qe,h:et}),L.current==="free"&&z({x:Ne,y:Oe})}})},pe=$=>{if(H.current){let O=H.current;if(!O.hasDragged){if(Math.abs($.clientX-O.mouseX)+Math.abs($.clientY-O.mouseY)<4)return;O.hasDragged=!0,b?.setDraggingId(e)}let{cw:_,ch:q}=D(),Y=Math.max(0,Math.min(O.posX+$.clientX-O.mouseX,_-P.current.w)),ne=Math.max(0,Math.min(O.posY+$.clientY-O.mouseY,q-P.current.h));z({x:Y,y:ne});let me=b?.containerRef?.current;if(me){let ve=yr(me,$.clientX,$.clientY);b?.setHoveredZone(ve&&w?Ot(ve):ve)}}},ee=()=>{if(H.current){let $=b?.hoveredZone;$&&(b?.dockWindow(e,$),I($),v("docked"),z(null)),b?.setHoveredZone(null),b?.setDraggingId(null)}H.current=null},he;if(x==="docked"&&b){let $=b.stacks[S]??[],O=$.indexOf(e),_=0;for(let q=0;q<O;q++)_+=(b.dockedSizes[$[q]]??s)+wr;he={width:d.w,height:d.h,zIndex:B,transition:"top 0.2s ease, bottom 0.2s ease",opacity:O===-1?0:void 0,pointerEvents:O===-1?"none":void 0},he[S.endsWith("-right")?"insetInlineEnd":"insetInlineStart"]=Co,S.startsWith("top-")?he.top=b.insetTop+_:he.bottom=b.insetBottom+_}else he={left:N?.x??0,top:N?.y??0,width:d.w,height:d.h,zIndex:B};return(0,Q.jsxs)("div",{ref:R,dir:w?"rtl":"ltr",className:`rdd-panel-float${l?" rdd-panel-float--active":""}`,style:he,onPointerDown:X,onPointerMove:pe,onPointerUp:ee,children:[(0,Q.jsxs)("div",{className:"rdd-panel-float__header",onPointerDown:j,children:[n&&(0,Q.jsx)("span",{className:"rdd-panel-float__icon",children:n}),(0,Q.jsx)("span",{className:"rdd-panel-float__title",children:t}),(0,Q.jsx)("button",{type:"button",className:"rdd-panel-float__close",onClick:T,onPointerDown:$=>$.stopPropagation(),title:"Close","aria-label":"Close",children:(0,Q.jsxs)("svg",{width:"8",height:"8",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",children:[(0,Q.jsx)("line",{x1:"1",y1:"1",x2:"9",y2:"9"}),(0,Q.jsx)("line",{x1:"9",y1:"1",x2:"1",y2:"9"})]})})]}),(0,Q.jsx)("div",{className:"rdd-panel-float__body",children:k}),x==="free"&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)("div",{className:"rdd-resize-handle rdd-resize-n",onPointerDown:U("n")}),(0,Q.jsx)("div",{className:"rdd-resize-handle rdd-resize-ne",onPointerDown:U("ne")}),(0,Q.jsx)("div",{className:"rdd-resize-handle rdd-resize-nw",onPointerDown:U("nw")})]}),(0,Q.jsx)("div",{className:"rdd-resize-handle rdd-resize-e",onPointerDown:U("e")}),(0,Q.jsx)("div",{className:"rdd-resize-handle rdd-resize-se",onPointerDown:U("se")}),(0,Q.jsx)("div",{className:"rdd-resize-handle rdd-resize-s",onPointerDown:U("s")}),(0,Q.jsx)("div",{className:"rdd-resize-handle rdd-resize-sw",onPointerDown:U("sw")}),(0,Q.jsx)("div",{className:"rdd-resize-handle rdd-resize-w",onPointerDown:U("w")})]})}function Oo(){let[e,t]=(0,V.useState)(!1),n=(0,V.useCallback)(()=>{t(!0)},[]),o=(0,V.useCallback)(()=>{t(!1)},[]);return{isOpen:e,open:n,close:o}}var Mr=[];function Ao(){let e=(0,V.useContext)(Mo),t=e?.managedWindowIds??Mr;return(0,V.useMemo)(()=>({open:(n,o)=>e?.openManaged(n,o),close:n=>e?.closeManaged(n),closeAll:()=>e?.closeAllManaged(),isOpen:n=>t.includes(n),openIds:t}),[e,t])}0&&(module.exports={ConfirmationForm,ContextMenu,ContextMenuProvider,DefaultContextMenuAdapter,DockableDesktopProvider,FormContainerContext,FormContainerProvider,LeftPanelRenderer,ModalStackRenderer,PanelContributionProvider,PanelFloatingWindow,PanelOverlayRoot,PanelProvider,PanelRegistry,PanelRegistryClass,PanelToolbar,PanelToolbarItem,PanelToolbarSeparator,RightPanelRenderer,SidePanelRenderer,Sidebar,ToastContainer,Toolbar,ToolbarButton,ToolbarCenter,ToolbarProvider,ToolbarSearchInput,ToolbarSpacer,ToolbarToggle,WindowManager,WindowManagerProvider,WorkspaceClient,computeResizedRect,defaultPredefinedMessages,formatLabel,isSerializable,sidebarSectionToTab,startPointerDrag,toast,useActivePanelContribution,useColorScheme,useFormContainer,useFormatMessage,useMergedSidebarTabs,useMergedToolbarItems,usePanelActions,usePanelContext,usePanelContextMenu,usePanelContribution,usePanelFloatingWindow,usePanelFloatingWindowManager,usePanelId,usePanelSize,usePanelState,usePredefinedMessages,useRegistry,useShowContextMenu,useSidebar,useSidebarTab,useStyleClasses,useToolbar,useWindowManagerActions,useWindowManagerState});
24
24
  //# sourceMappingURL=index.cjs.map