react-dockable-desktop 5.3.5 → 5.4.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 Yo=Object.create;var Kt=Object.defineProperty;var Xo=Object.getOwnPropertyDescriptor;var Vo=Object.getOwnPropertyNames;var Ko=Object.getPrototypeOf,qo=Object.prototype.hasOwnProperty;var jo=(e,t)=>{for(var n in t)Kt(e,n,{get:t[n],enumerable:!0})},Nn=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let c of Vo(t))!qo.call(e,c)&&c!==n&&Kt(e,c,{get:()=>t[c],enumerable:!(o=Xo(t,c))||o.enumerable});return e};var qt=(e,t,n)=>(n=e!=null?Yo(Ko(e)):{},Nn(t||!e||!e.__esModule?Kt(n,"default",{value:e,enumerable:!0}):n,e)),Zo=e=>Nn(Kt({},"__esModule",{value:!0}),e);var Nr={};jo(Nr,{ConfirmationForm:()=>nt,ContextMenu:()=>Qt,ContextMenuProvider:()=>en,DefaultContextMenuAdapter:()=>gt,DockableDesktopProvider:()=>co,FormContainerContext:()=>jt,FormContainerProvider:()=>Qe,LeftPanelRenderer:()=>go,ModalStackRenderer:()=>uo,PanelContributionProvider:()=>ln,PanelFloatingWindow:()=>zn,PanelOverlayRoot:()=>No,PanelProvider:()=>nn,PanelRegistry:()=>Wt,PanelRegistryClass:()=>ut,PanelToolbar:()=>Do,PanelToolbarItem:()=>_o,PanelToolbarSeparator:()=>Ao,RightPanelRenderer:()=>mo,SidePanelRenderer:()=>fo,Sidebar:()=>xo,ToastContainer:()=>So,Toolbar:()=>Mo,ToolbarButton:()=>Wo,ToolbarCenter:()=>Ho,ToolbarProvider:()=>Ht,ToolbarSearchInput:()=>Bo,ToolbarSpacer:()=>Fo,ToolbarToggle:()=>Oo,WindowManager:()=>to,WindowManagerProvider:()=>Ut,WorkspaceClient:()=>an,computeResizedRect:()=>kt,defaultPredefinedMessages:()=>Ct,formatLabel:()=>fe,isSerializable:()=>pt,sidebarSectionToTab:()=>Tn,startPointerDrag:()=>qe,toast:()=>To,useActivePanelContribution:()=>dn,useColorScheme:()=>rn,useFormContainer:()=>ct,useFormatMessage:()=>_e,useMergedSidebarTabs:()=>so,useMergedToolbarItems:()=>io,usePanelActions:()=>tt,usePanelContext:()=>Gn,usePanelContextMenu:()=>Yn,usePanelContribution:()=>ro,usePanelFloatingWindow:()=>$o,usePanelFloatingWindowManager:()=>Go,usePanelId:()=>Ot,usePanelSize:()=>Dn,usePanelState:()=>Ke,usePredefinedMessages:()=>Be,useRegistry:()=>Rt,useShowContextMenu:()=>Kn,useSidebar:()=>Co,useSidebarTab:()=>wo,useStyleClasses:()=>Ve,useToolbar:()=>Bt,useWindowManagerActions:()=>Mt,useWindowManagerState:()=>Ae});module.exports=Zo(Nr);var V=qt(require("react"),1),Cn=require("react-dom");var W=require("react");var xt=require("react"),Uo={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:()=>()=>{}},jt=(0,xt.createContext)(Uo),Qe=jt.Provider,ct=()=>(0,xt.useContext)(jt),Dn=()=>{let{onResize:e,getDimensions:t}=ct();return(0,xt.useSyncExternalStore)(n=>e?e(()=>n()):()=>{},()=>t?t():null)};var ut=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())}},Wt=new ut;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 Wn=require("react");function pt(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,Wn.isValidElement)(e))return!1;if(Array.isArray(e))return e.every(pt);let n=Object.getPrototypeOf(e);return n!==Object.prototype&&n!==null?!1:Object.values(e).every(pt)}var et=require("react/jsx-runtime"),wt=(0,W.createContext)(null),Zt=(0,W.createContext)(null),An=(0,W.createContext)(null),Fn=(0,W.createContext)(null),_n=(0,W.createContext)(Ct),Hn=(0,W.createContext)({}),Ve=()=>(0,W.useContext)(Hn),Bn=(0,W.createContext)(Wt),Rt=()=>(0,W.useContext)(Bn),hn=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))}},Jo={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:c,stickyBottom:a,...I}=n;return{...I,anchor:o}}return n});return{gridRoot:e.gridRoot,floating:t,minimized:e.minimized,panels:e.panels}}function Qo(e){if(e)try{let t=$n(JSON.parse(e));if(t)return{...t,activePanelId:Object.keys(t.panels)[0]??null}}catch{}return{gridRoot:Jo,floating:[],minimized:[],panels:{},activePanelId:null}}var Ut=({children:e,client:t,formatMessage:n,predefinedMessages:o,dir:c,modalClass:a,modalBodyClass:I,sidePanelClass:b,sidePanelBodyClass:T,windowClass:y,windowBodyClass:C,zIndexBase:P})=>{let S=(0,W.useRef)(t?.registry??Wt).current,L=t?.config.formatMessage??n,N=t?.config.predefinedMessages??o,_=t?.config.dir??c,g=t?.config.zIndexBase??P??1e3,[M,w]=(0,W.useState)(()=>({...Qo(t?.initialState??null),draggedPanelId:null,dir:_||"ltr",isRtl:_==="rtl",splitRatio:Math.min(.9,Math.max(.1,t?.config.defaultSplitRatio??.5)),edgeSplitRatio:Math.min(.9,Math.max(.1,t?.config.defaultEdgeSplitRatio??.2))})),z=(0,W.useRef)(M);z.current=M;let m=(0,W.useRef)(new Set);(0,W.useEffect)(()=>{m.current.forEach(i=>i())},[M]);let R=(0,W.useCallback)(()=>z.current,[]),H=(0,W.useCallback)(i=>(m.current.add(i),()=>m.current.delete(i)),[]),B=(0,W.useRef)({}),s=(0,W.useRef)({}),k=(0,W.useMemo)(()=>({...Ct,...N}),[N]),Y=(0,W.useRef)(new hn),K=(0,W.useRef)(g);(0,W.useEffect)(()=>(document.documentElement.style.setProperty("--rdd-z-base",String(g)),()=>{document.documentElement.style.removeProperty("--rdd-z-base")}),[g]);let U=(0,W.useCallback)((i,v)=>Y.current.subscribe(i,v),[]),ae=(0,W.useCallback)((i,v)=>{Y.current.publish(i,v)},[]),ee=(0,W.useCallback)((i,v)=>{let d=typeof i.x=="string"?parseFloat(i.x):i.x,l=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(d)&&(d=300),isNaN(l)&&(l=150),isNaN(G)&&(G=450),isNaN(r)&&(r=350);let x=E=>v.some(O=>{let A=typeof O.x=="string"?parseFloat(O.x):O.x,J=typeof O.y=="string"?parseFloat(O.y):O.y;return!O.maximized&&Math.abs(A-E.x)<20&&Math.abs(J-E.y)<20}),u=0;for(;x({x:d,y:l})&&u<10;)d+=30,l+=30,u++;let p=Math.max(100,window.innerWidth||1024),h=Math.max(100,window.innerHeight||768);return(d+G>p||l+r>h)&&(d=100+u%5*30,l=100+u%5*30),d=Math.max(0,Math.min(d,p-100)),l=Math.max(0,Math.min(l,h-40)),{x:d,y:l,width:G,height:r}},[]),xe=(0,W.useCallback)(i=>{w(v=>{let d=v.panels[i];if(!d)return v;if(d.state==="floating"){let l=v.floating.find(r=>r.id===i);if(!l)return v;let G=!v.floating.some(r=>r.z>l.z);return G&&v.activePanelId===i?v:(G||(K.current+=1),{...v,floating:v.floating.map(r=>r.id===i?{...r,z:G?l.z:K.current}:r),activePanelId:i})}else if(d.state==="docked"){if(v.activePanelId===i)return v;let l=G=>G.type==="leaf"?G.panels.includes(i)?{...G,activePanelId:i}:G:{...G,children:G.children.map(l)};return{...v,gridRoot:l(v.gridRoot),activePanelId:i}}return v.activePanelId===i?v:{...v,activePanelId:i}})},[]),se=(i,v)=>{if(i.type==="leaf"){let d=i.panels.indexOf(v);if(d===-1)return i;let l=i.panels.filter(x=>x!==v),G=i.activePanelId===v?l[d]||l[d-1]||l[0]||null:i.activePanelId,r={...i,panels:l,activePanelId:G};return l.length===0&&!i.keepOnEmpty?null:r}else{let d=i.children.map(r=>se(r,v)).filter(r=>r!==null);if(d.length===0)return null;if(d.length===1)return d[0];let l=i.sizes.slice(0,d.length),G=l.reduce((r,x)=>r+x,0);return{...i,children:d,sizes:l.map(r=>r/G)}}},j=(i,v,d)=>{if(i.type==="leaf"){if(i.id===v){let l=i.panels.includes(d)?i.panels:[...i.panels,d];return{...i,panels:l,activePanelId:d}}return i}else return{...i,children:i.children.map(l=>j(l,v,d))}},F=i=>{if(i.type==="leaf")return i.id;for(let v of i.children){let d=F(v);if(d)return d}return null},D=(0,W.useCallback)((i,v,d)=>{let l=i;if(d?.dedupeKey!==void 0){let h=Object.values(z.current.panels).find(E=>E.component===v&&E.dedupeKey===d.dedupeKey);h&&(l=h.id)}let G=!(l in z.current.panels),r=l!==i,x=d?.focus!==!1,p=d?.props!==void 0?pt(d.props):!0;w(h=>{let E=h.panels[l],O=S.get(v),A=d?.title||d?.title||O?.defaultOptions?.title||l,J=d?.initialTarget||O?.defaultOptions?.initialTarget||"docked",re=O?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350},q=x?l:h.activePanelId;if(E)if(E.state==="minimized"){let de=h.minimized.filter(pe=>pe.id!==l);if(J==="floating"||!h.gridRoot){K.current+=1;let pe=ee(re,h.floating);return{...h,minimized:de,floating:[...h.floating,{...pe,id:l,z:K.current}],panels:{...h.panels,[l]:{...E,state:"floating"}},activePanelId:q}}else{let pe=F(h.gridRoot)||"group-default";return{...h,minimized:de,gridRoot:j(h.gridRoot,pe,l),panels:{...h.panels,[l]:{...E,state:"docked"}},activePanelId:q}}}else{if(E.state==="floating")return x&&xe(l),h;{let de=pe=>pe.type==="leaf"?pe.panels.includes(l)?{...pe,activePanelId:l}:pe:{...pe,children:pe.children.map(de)};return{...h,gridRoot:de(h.gridRoot),activePanelId:q}}}let ue={id:l,title:A,component:v,state:J==="tabbed"?"docked":J,props:d?.props,serializable:p,dedupeKey:d?.dedupeKey},ie={...h.panels,[l]:ue};if(J==="floating"){K.current+=1;let de=ee(re,h.floating),pe=d?.anchor??O?.defaultOptions?.defaultAnchor??null;return{...h,floating:[...h.floating,{...de,id:l,z:K.current,anchor:pe}],panels:ie,activePanelId:q}}else{let de=F(h.gridRoot)||"group-default";return{...h,gridRoot:j(h.gridRoot,de,l),panels:ie,activePanelId:q}}}),G&&Y.current.publish("panel:opened",{id:l,component:v}),(G||r)&&Y.current.publish("layout:changed",{})},[ee,xe]),$=(0,W.useCallback)(i=>{let v=i in z.current.panels;w(d=>{let l=d.panels[i];if(!l||S.get(l.component)?.defaultOptions?.canClose===!1)return d;delete B.current[i],delete s.current[i];let r={...d.panels};delete r[i];let x=se(d.gridRoot,i);return{...d,gridRoot:x||{type:"leaf",id:"group-default",panels:[],activePanelId:null},floating:d.floating.filter(u=>u.id!==i),minimized:d.minimized.filter(u=>u.id!==i),panels:r}}),v&&(Y.current.publish("panel:closed",{id:i}),Y.current.publish("layout:changed",{}))},[]),ne=(0,W.useCallback)((i,v)=>{B.current[i]=v},[]),ce=(0,W.useCallback)(i=>{delete B.current[i]},[]),be=(0,W.useCallback)((i,v)=>{s.current[i]=v},[]),we=(0,W.useCallback)(i=>{delete s.current[i]},[]),Re=(0,W.useCallback)((i,v,d)=>{w(l=>{let G=l.panels[i];return G?{...l,panels:{...l.panels,[i]:{...G,dirty:v,dirtyOptions:d}}}:l})},[]),De=(0,W.useCallback)((i,v)=>{w(d=>{let l=d.panels[i];return l?{...d,panels:{...d.panels,[i]:{...l,title:v}}}:d})},[]),Oe=(0,W.useCallback)(async(i,v)=>{if(v?.force){$(i);return}let d=B.current[i];if(d&&!await d())return;let l=z.current.panels[i];if(l?.dirty)if(v?.onConfirm){if(!await v.onConfirm(l.dirtyOptions))return}else return;$(i)},[$]),We=(0,W.useCallback)(i=>{let v=z.current.panels[i]?.state!=="minimized"&&i in z.current.panels;w(d=>{let l=d.panels[i];if(!l||l.state==="minimized"||S.get(l.component)?.defaultOptions?.canMinimize===!1)return d;let r,x;if(l.state==="floating"){let p=d.floating.find(h=>h.id===i);p&&(r={x:Number(p.x),y:Number(p.y),width:Number(p.width),height:Number(p.height),anchor:p.anchor??null})}else if(l.state==="docked"){let p=h=>{if(h.type==="leaf")return h.panels.includes(i)?h.id:null;for(let E of h.children){let O=p(E);if(O)return O}return null};x=p(d.gridRoot)??void 0}let u=se(d.gridRoot,i);return{...d,gridRoot:u||{type:"leaf",id:"group-default",panels:[],activePanelId:null},floating:d.floating.filter(p=>p.id!==i),minimized:[...d.minimized,{id:i,title:l.title,component:l.component}],panels:{...d.panels,[i]:{...l,state:"minimized",previousState:l.state,lastFloatingRect:r,lastLeafId:x}}}}),v&&(Y.current.publish("panel:minimized",{id:i}),Y.current.publish("layout:changed",{}))},[]),Q=(0,W.useCallback)(i=>{let v=z.current.panels[i]?.state==="minimized";w(d=>{let l=d.panels[i];if(!l||l.state!=="minimized")return d;let G=d.minimized.filter(x=>x.id!==i);if((l.previousState||"docked")==="floating"){K.current+=1;let x=S.get(l.component),u=l.lastFloatingRect||x?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350},p=ee(u,d.floating);return{...d,minimized:G,floating:[...d.floating,{...p,id:i,z:K.current,anchor:l.lastFloatingRect?.anchor??null}],panels:{...d.panels,[i]:{...l,state:"floating"}}}}else{let x=(E,O)=>E.type==="leaf"?E.id===O:E.children.some(A=>x(A,O)),u=l.lastLeafId&&x(d.gridRoot,l.lastLeafId),p=S.get(l.component),h=p?.defaultOptions?.canDrag!==!1;if(u)return{...d,minimized:G,gridRoot:j(d.gridRoot,l.lastLeafId,i),panels:{...d.panels,[i]:{...l,state:"docked"}}};if(h){K.current+=1;let E=l.lastFloatingRect||p?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350},O=ee(E,d.floating);return{...d,minimized:G,floating:[...d.floating,{...O,id:i,z:K.current,anchor:l.lastFloatingRect?.anchor??null}],panels:{...d.panels,[i]:{...l,state:"floating"}}}}else{let E=F(d.gridRoot)||"group-default";return{...d,minimized:G,gridRoot:j(d.gridRoot,E,i),panels:{...d.panels,[i]:{...l,state:"docked"}}}}}}),v&&(Y.current.publish("panel:restored",{id:i}),Y.current.publish("layout:changed",{}))},[ee]),Me=(0,W.useCallback)((i,v,d)=>{w(l=>{let G=l.panels[i];if(!G||S.get(G.component)?.defaultOptions?.canDrag===!1)return l;let x=S.get(G.component),u=v||x?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350},p=se(l.gridRoot,i);K.current+=1;let h=ee(u,l.floating);return{...l,gridRoot:p||{type:"leaf",id:"group-default",panels:[],activePanelId:null},floating:[...l.floating,{...h,id:i,z:K.current,anchor:d??null}],panels:{...l.panels,[i]:{...G,state:"floating"}}}})},[ee]),Ie=(0,W.useCallback)((i,v)=>{w(d=>{let l=d.panels[i];if(!l)return d;let G=d.floating.filter(u=>u.id!==i),r=se(d.gridRoot,i),x=v||F(r||d.gridRoot)||"group-default";return{...d,gridRoot:j(r||d.gridRoot,x,i),floating:G,panels:{...d.panels,[i]:{...l,state:"docked"}}}})},[]),$e=(i,v,d,l,G)=>{if(i.type==="leaf"){if(i.id===v){let r={type:"leaf",id:`group-split-${Date.now()}-${Math.floor(Math.random()*1e3)}`,panels:[d],activePanelId:d},x=l==="left"||l==="right"?"horizontal":"vertical",u=l==="left"||l==="top"?[r,i]:[i,r],p=l==="left"||l==="top"?[G,1-G]:[1-G,G];return{type:"branch",orientation:x,sizes:p,children:u}}return i}else return{...i,children:i.children.map(r=>$e(r,v,d,l,G))}},Ye=(0,W.useCallback)(i=>{w(v=>({...v,draggedPanelId:i}))},[]),Ce=(0,W.useCallback)((i,v,d)=>{w(l=>{let G=l.panels[i];if(!G)return l;let r=l.floating.filter(p=>p.id!==i),x=se(l.gridRoot,i),u;return d==="center"?u=j(x||l.gridRoot,v,i):u=$e(x||l.gridRoot,v,i,d,l.splitRatio),{...l,gridRoot:u,floating:r,panels:{...l.panels,[i]:{...G,state:"docked"}},draggedPanelId:null}})},[]),ft=(0,W.useCallback)((i,v)=>{w(d=>{let l=d.panels[i];if(!l)return d;let G=d.floating.filter(O=>O.id!==i),r=se(d.gridRoot,i),x={type:"leaf",id:`group-edge-${Date.now()}-${Math.floor(Math.random()*1e3)}`,panels:[i],activePanelId:i},u=v==="left"||v==="right"?"horizontal":"vertical",p=v==="left"||v==="top"?[x,r||d.gridRoot]:[r||d.gridRoot,x],h=d.edgeSplitRatio,E={type:"branch",orientation:u,sizes:v==="left"||v==="top"?[h,1-h]:[1-h,h],children:p};return{...d,gridRoot:E,floating:G,panels:{...d.panels,[i]:{...l,state:"docked"}},draggedPanelId:null}})},[]),$t=(0,W.useCallback)((i,v,d)=>{w(l=>{let G=l.panels[i];if(!G)return l;let r=se(l.gridRoot,i),x=h=>{if(h.type==="leaf"){if(h.id===v){let E=h.panels.filter(J=>J!==i),O=Math.max(0,Math.min(d,E.length)),A=[...E];return A.splice(O,0,i),{...h,panels:A,activePanelId:i}}return h}else return{...h,children:h.children.map(x)}},u=x(r||l.gridRoot),p=l.floating.filter(h=>h.id!==i);return{...l,gridRoot:u,floating:p,panels:{...l.panels,[i]:{...G,state:"docked"}},draggedPanelId:null}})},[]),ht=(0,W.useCallback)(i=>{w(v=>{let d=G=>{if(G.type==="leaf")return G.id===i&&G.canClose!==!1?null:G;{let r=G.children.map(p=>d(p)).filter(p=>p!==null);if(r.length===0)return null;if(r.length===1)return r[0];let x=G.sizes.slice(0,r.length),u=x.reduce((p,h)=>p+h,0);return{...G,children:r,sizes:x.map(p=>p/u)}}},l=d(v.gridRoot);return{...v,gridRoot:l||{type:"leaf",id:"group-default",panels:[],activePanelId:null}}})},[]),Ze=(0,W.useCallback)(i=>{w(v=>({...v,floating:v.floating.map(d=>d.id===i?{...d,maximized:!d.maximized}:d)}))},[]),Lt=(0,W.useCallback)((i,v)=>{let d=(l,G)=>{if(l.type==="leaf")return l;if(G===i.length)return{...l,sizes:v};let r=i[G],x=l.children.map((u,p)=>p===r?d(u,G+1):u);return{...l,children:x}};w(l=>({...l,gridRoot:d(l.gridRoot,0)}))},[]),Gt=(0,W.useCallback)((i,v)=>{w(d=>({...d,floating:d.floating.map(l=>l.id===i?{...l,...v}:l)}))},[]),Ue=(0,W.useCallback)(()=>{let i=z.current.panels,v=[],d={};for(let[u,p]of Object.entries(i)){let h=s.current[u],E=h?.(),O=h!==void 0&&E!==void 0,A=O?E:p.props,J=O?pt(E):p.serializable;J?d[u]=O?{...p,props:A,serializable:J}:p:v.push(u)}let l=z.current.gridRoot,G=z.current.floating,r=z.current.minimized;for(let u of v)l=se(l,u)||{type:"leaf",id:"group-default",panels:[],activePanelId:null},G=G.filter(p=>p.id!==u),r=r.filter(p=>p.id!==u);return v.length>0&&Y.current.publish("layout:panels-excluded",{panels:v.map(u=>({id:u,component:i[u].component}))}),JSON.stringify({version:2,gridRoot:l,floating:G,minimized:r,panels:d})},[]),Xe=(0,W.useCallback)(i=>{try{let v=$n(JSON.parse(i));if(!v)return!1;let d=Object.keys(v.panels)[0]||null;return w(l=>({...l,gridRoot:v.gridRoot,floating:v.floating,minimized:v.minimized,panels:v.panels,draggedPanelId:null,activePanelId:d})),!0}catch(v){return console.error("Failed to parse layout configuration:",v),!1}},[]),Yt=(0,W.useCallback)(i=>{w(v=>v.activePanelId===i?v:{...v,activePanelId:i})},[]),Xt=(0,W.useCallback)(i=>{w(v=>v.dir===i?v:{...v,dir:i,isRtl:i==="rtl"})},[]),zt=(0,W.useCallback)(i=>i in z.current.panels,[]),it=(0,W.useCallback)(()=>Object.keys(z.current.panels),[]),st=(0,W.useCallback)((i,v)=>Object.values(z.current.panels).find(l=>l.component===i&&l.dedupeKey===v)?.id??null,[]);(0,W.useEffect)(()=>{_&&w(i=>i.dir===_?i:{...i,dir:_,isRtl:_==="rtl"})},[_]);let Ge=(0,W.useRef)(new Map),Je=(0,W.useRef)(null),Nt=(0,W.useCallback)(i=>(Je.current=i,()=>{Je.current=null}),[]),Vt=(0,W.useCallback)(i=>{Je.current?.(i)},[]),Dt=(0,W.useCallback)((i,v)=>(Ge.current.set(i,v),()=>{Ge.current.delete(i)}),[]),at=(0,W.useCallback)(i=>Ge.current.get(i)?.()??[],[]),bt=(0,W.useMemo)(()=>({openPanel:D,closePanel:$,minimizePanel:We,restorePanel:Q,floatPanel:Me,dockPanel:Ie,maximizePanel:Ze,updateSplitSizes:Lt,updateFloatingPosition:Gt,focusPanel:xe,isOpen:zt,getOpenPanelIds:it,findPanelId:st,saveLayout:Ue,loadLayout:Xe,publish:ae,subscribe:U,setDraggedPanelId:Ye,dockPanelToGroup:Ce,movePanelOrder:$t,closeLeafGroup:ht,registerCloseGuard:ne,unregisterCloseGuard:ce,registerStateProvider:be,unregisterStateProvider:we,setPanelDirty:Re,updatePanelTitle:De,requestClosePanel:Oe,dockPanelToWorkspaceEdge:ft,setActivePanel:Yt,setDirection:Xt,registerPanelContextMenu:Dt,getPanelContextMenuItems:at,showContextMenu:Vt,registerContextMenuFn:Nt}),[D,$,We,Q,Me,Ie,Ze,Lt,Gt,xe,zt,it,st,Ue,Xe,ae,U,Ye,Ce,$t,ht,ne,ce,be,we,Re,De,Oe,ft,Yt,Xt,Dt,at,Vt,Nt]),lt=i=>{let v=i.defaultMessage||i.id;return i.values&&Object.entries(i.values).forEach(([d,l])=>{v=v.replace(`{${d}}`,String(l))}),v},pn=(0,W.useMemo)(()=>({modalClass:a,modalBodyClass:I,sidePanelClass:b,sidePanelBodyClass:T,windowClass:y,windowBodyClass:C}),[a,I,b,T,y,C]);(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.
1
+ "use strict";var Yo=Object.create;var Kt=Object.defineProperty;var Xo=Object.getOwnPropertyDescriptor;var Vo=Object.getOwnPropertyNames;var Ko=Object.getPrototypeOf,qo=Object.prototype.hasOwnProperty;var jo=(e,t)=>{for(var n in t)Kt(e,n,{get:t[n],enumerable:!0})},zn=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let c of Vo(t))!qo.call(e,c)&&c!==n&&Kt(e,c,{get:()=>t[c],enumerable:!(o=Xo(t,c))||o.enumerable});return e};var qt=(e,t,n)=>(n=e!=null?Yo(Ko(e)):{},zn(t||!e||!e.__esModule?Kt(n,"default",{value:e,enumerable:!0}):n,e)),Zo=e=>zn(Kt({},"__esModule",{value:!0}),e);var zr={};jo(zr,{ConfirmationForm:()=>rt,ContextMenu:()=>Qt,ContextMenuProvider:()=>en,DefaultContextMenuAdapter:()=>bt,DockableDesktopProvider:()=>co,FormContainerContext:()=>jt,FormContainerProvider:()=>tt,LeftPanelRenderer:()=>go,ModalStackRenderer:()=>uo,PanelContributionProvider:()=>ln,PanelFloatingWindow:()=>Nn,PanelOverlayRoot:()=>zo,PanelProvider:()=>nn,PanelRegistry:()=>Ot,PanelRegistryClass:()=>ft,PanelToolbar:()=>Do,PanelToolbarItem:()=>_o,PanelToolbarSeparator:()=>Ao,RightPanelRenderer:()=>mo,SidePanelRenderer:()=>fo,Sidebar:()=>xo,ToastContainer:()=>So,Toolbar:()=>Mo,ToolbarButton:()=>Wo,ToolbarCenter:()=>Ho,ToolbarProvider:()=>Bt,ToolbarSearchInput:()=>Bo,ToolbarSpacer:()=>Fo,ToolbarToggle:()=>Oo,WindowManager:()=>to,WindowManagerProvider:()=>Ut,WorkspaceClient:()=>an,computeResizedRect:()=>It,defaultPredefinedMessages:()=>Rt,formatLabel:()=>he,isSerializable:()=>ht,sidebarSectionToTab:()=>Tn,startPointerDrag:()=>Ue,toast:()=>To,useActivePanelContribution:()=>dn,useColorScheme:()=>rn,useFormContainer:()=>mt,useFormatMessage:()=>He,useMergedSidebarTabs:()=>so,useMergedToolbarItems:()=>io,usePanelActions:()=>ot,usePanelContext:()=>Gn,usePanelContextMenu:()=>Yn,usePanelContribution:()=>ro,usePanelFloatingWindow:()=>$o,usePanelFloatingWindowManager:()=>Go,usePanelId:()=>At,usePanelSize:()=>Dn,usePanelState:()=>Ze,usePredefinedMessages:()=>Ge,useRegistry:()=>Tt,useShowContextMenu:()=>Kn,useSidebar:()=>Co,useSidebarTab:()=>wo,useStyleClasses:()=>je,useToolbar:()=>$t,useWindowManagerActions:()=>St,useWindowManagerState:()=>ze});module.exports=Zo(zr);var V=qt(require("react"),1),Cn=require("react-dom");var O=require("react");var wt=require("react"),Uo={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:()=>()=>{}},jt=(0,wt.createContext)(Uo),tt=jt.Provider,mt=()=>(0,wt.useContext)(jt),Dn=()=>{let{onResize:e,getDimensions:t}=mt();return(0,wt.useSyncExternalStore)(n=>e?e(()=>n()):()=>{},()=>t?t():null)};var ft=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())}},Ot=new ft;var Rt={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 Wn=require("react");function ht(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,Wn.isValidElement)(e))return!1;if(Array.isArray(e))return e.every(ht);let n=Object.getPrototypeOf(e);return n!==Object.prototype&&n!==null?!1:Object.values(e).every(ht)}var nt=require("react/jsx-runtime"),Mt=(0,O.createContext)(null),Zt=(0,O.createContext)(null),An=(0,O.createContext)(null),Fn=(0,O.createContext)(null),_n=(0,O.createContext)(Rt),Hn=(0,O.createContext)({}),je=()=>(0,O.useContext)(Hn),Bn=(0,O.createContext)(Ot),Tt=()=>(0,O.useContext)(Bn),hn=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))}},Jo={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:c,stickyBottom:s,...I}=n;return{...I,anchor:o}}return n});return{gridRoot:e.gridRoot,floating:t,minimized:e.minimized,panels:e.panels}}function Qo(e){if(e)try{let t=$n(JSON.parse(e));if(t)return{...t,activePanelId:Object.keys(t.panels)[0]??null}}catch{}return{gridRoot:Jo,floating:[],minimized:[],panels:{},activePanelId:null}}var Ut=({children:e,client:t,formatMessage:n,predefinedMessages:o,dir:c,modalClass:s,modalBodyClass:I,sidePanelClass:b,sidePanelBodyClass:T,windowClass:y,windowBodyClass:C,zIndexBase:P})=>{let S=(0,O.useRef)(t?.registry??Ot).current,L=t?.config.formatMessage??n,N=t?.config.predefinedMessages??o,_=t?.config.dir??c,g=t?.config.zIndexBase??P??1e3,[M,R]=(0,O.useState)(()=>({...Qo(t?.initialState??null),draggedPanelId:null,dir:_||"ltr",isRtl:_==="rtl",splitRatio:Math.min(.9,Math.max(.1,t?.config.defaultSplitRatio??.5)),edgeSplitRatio:Math.min(.9,Math.max(.1,t?.config.defaultEdgeSplitRatio??.2))})),D=(0,O.useRef)(M);D.current=M;let m=(0,O.useRef)(new Set);(0,O.useEffect)(()=>{m.current.forEach(i=>i())},[M]);let w=(0,O.useCallback)(()=>D.current,[]),$=(0,O.useCallback)(i=>(m.current.add(i),()=>m.current.delete(i)),[]),H=(0,O.useRef)({}),l=(0,O.useRef)({}),k=(0,O.useMemo)(()=>({...Rt,...N}),[N]),W=(0,O.useRef)(new hn),K=(0,O.useRef)(g);(0,O.useEffect)(()=>(document.documentElement.style.setProperty("--rdd-z-base",String(g)),()=>{document.documentElement.style.removeProperty("--rdd-z-base")}),[g]);let j=(0,O.useCallback)((i,v)=>W.current.subscribe(i,v),[]),fe=(0,O.useCallback)((i,v)=>{W.current.publish(i,v)},[]),ne=(0,O.useCallback)((i,v)=>{let d=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(d)&&(d=300),isNaN(a)&&(a=150),isNaN(G)&&(G=450),isNaN(r)&&(r=350);let x=E=>v.some(A=>{let F=typeof A.x=="string"?parseFloat(A.x):A.x,J=typeof A.y=="string"?parseFloat(A.y):A.y;return!A.maximized&&Math.abs(F-E.x)<20&&Math.abs(J-E.y)<20}),u=0;for(;x({x:d,y:a})&&u<10;)d+=30,a+=30,u++;let p=Math.max(100,window.innerWidth||1024),h=Math.max(100,window.innerHeight||768);return(d+G>p||a+r>h)&&(d=100+u%5*30,a=100+u%5*30),d=Math.max(0,Math.min(d,p-100)),a=Math.max(0,Math.min(a,h-40)),{x:d,y:a,width:G,height:r}},[]),ve=(0,O.useCallback)(i=>{R(v=>{let d=v.panels[i];if(!d)return v;if(d.state==="floating"){let a=v.floating.find(r=>r.id===i);if(!a)return v;let G=!v.floating.some(r=>r.z>a.z);return G&&v.activePanelId===i?v:(G||(K.current+=1),{...v,floating:v.floating.map(r=>r.id===i?{...r,z:G?a.z:K.current}:r),activePanelId:i})}else if(d.state==="docked"){if(v.activePanelId===i)return v;let a=G=>G.type==="leaf"?G.panels.includes(i)?{...G,activePanelId:i}:G:{...G,children:G.children.map(a)};return{...v,gridRoot:a(v.gridRoot),activePanelId:i}}return v.activePanelId===i?v:{...v,activePanelId:i}})},[]),ie=(i,v)=>{if(i.type==="leaf"){let d=i.panels.indexOf(v);if(d===-1)return i;let a=i.panels.filter(x=>x!==v),G=i.activePanelId===v?a[d]||a[d-1]||a[0]||null:i.activePanelId,r={...i,panels:a,activePanelId:G};return a.length===0&&!i.keepOnEmpty?null:r}else{let d=i.children.map(r=>ie(r,v)).filter(r=>r!==null);if(d.length===0)return null;if(d.length===1)return d[0];let a=i.sizes.slice(0,d.length),G=a.reduce((r,x)=>r+x,0);return{...i,children:d,sizes:a.map(r=>r/G)}}},U=(i,v,d)=>{if(i.type==="leaf"){if(i.id===v){let a=i.panels.includes(d)?i.panels:[...i.panels,d];return{...i,panels:a,activePanelId:d}}return i}else return{...i,children:i.children.map(a=>U(a,v,d))}},B=i=>{if(i.type==="leaf")return i.id;for(let v of i.children){let d=B(v);if(d)return d}return null},z=(0,O.useCallback)((i,v,d)=>{let a=i;if(d?.dedupeKey!==void 0){let h=Object.values(D.current.panels).find(E=>E.component===v&&E.dedupeKey===d.dedupeKey);h&&(a=h.id)}let G=!(a in D.current.panels),r=a!==i,x=d?.focus!==!1,p=d?.props!==void 0?ht(d.props):!0;R(h=>{let E=h.panels[a],A=S.get(v),F=d?.title||d?.title||A?.defaultOptions?.title||a,J=d?.initialTarget||A?.defaultOptions?.initialTarget||"docked",se=A?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350},q=x?a:h.activePanelId;if(E)if(E.state==="minimized"){let de=h.minimized.filter(ue=>ue.id!==a);if(J==="floating"||!h.gridRoot){K.current+=1;let ue=ne(se,h.floating);return{...h,minimized:de,floating:[...h.floating,{...ue,id:a,z:K.current}],panels:{...h.panels,[a]:{...E,state:"floating"}},activePanelId:q}}else{let ue=B(h.gridRoot)||"group-default";return{...h,minimized:de,gridRoot:U(h.gridRoot,ue,a),panels:{...h.panels,[a]:{...E,state:"docked"}},activePanelId:q}}}else{if(E.state==="floating")return x&&ve(a),h;{let de=ue=>ue.type==="leaf"?ue.panels.includes(a)?{...ue,activePanelId:a}:ue:{...ue,children:ue.children.map(de)};return{...h,gridRoot:de(h.gridRoot),activePanelId:q}}}let ce={id:a,title:F,component:v,state:J==="tabbed"?"docked":J,props:d?.props,serializable:p,dedupeKey:d?.dedupeKey},ae={...h.panels,[a]:ce};if(J==="floating"){K.current+=1;let de=ne(se,h.floating),ue=d?.anchor??A?.defaultOptions?.defaultAnchor??null;return{...h,floating:[...h.floating,{...de,id:a,z:K.current,anchor:ue}],panels:ae,activePanelId:q}}else{let de=B(h.gridRoot)||"group-default";return{...h,gridRoot:U(h.gridRoot,de,a),panels:ae,activePanelId:q}}}),G&&W.current.publish("panel:opened",{id:a,component:v}),(G||r)&&W.current.publish("layout:changed",{})},[ne,ve]),X=(0,O.useCallback)(i=>{let v=i in D.current.panels;R(d=>{let a=d.panels[i];if(!a||S.get(a.component)?.defaultOptions?.canClose===!1)return d;delete H.current[i],delete l.current[i];let r={...d.panels};delete r[i];let x=ie(d.gridRoot,i);return{...d,gridRoot:x||{type:"leaf",id:"group-default",panels:[],activePanelId:null},floating:d.floating.filter(u=>u.id!==i),minimized:d.minimized.filter(u=>u.id!==i),panels:r}}),v&&(W.current.publish("panel:closed",{id:i}),W.current.publish("layout:changed",{}))},[]),oe=(0,O.useCallback)((i,v)=>{H.current[i]=v},[]),ee=(0,O.useCallback)(i=>{delete H.current[i]},[]),ye=(0,O.useCallback)((i,v)=>{l.current[i]=v},[]),we=(0,O.useCallback)(i=>{delete l.current[i]},[]),Re=(0,O.useCallback)((i,v,d)=>{R(a=>{let G=a.panels[i];return G?{...a,panels:{...a.panels,[i]:{...G,dirty:v,dirtyOptions:d}}}:a})},[]),We=(0,O.useCallback)((i,v)=>{R(d=>{let a=d.panels[i];return a?{...d,panels:{...d.panels,[i]:{...a,title:v}}}:d})},[]),Oe=(0,O.useCallback)(async(i,v)=>{if(v?.force){X(i);return}let d=H.current[i];if(d&&!await d())return;let a=D.current.panels[i];if(a?.dirty)if(v?.onConfirm){if(!await v.onConfirm(a.dirtyOptions))return}else return;X(i)},[X]),Ne=(0,O.useCallback)(i=>{let v=D.current.panels[i]?.state!=="minimized"&&i in D.current.panels;R(d=>{let a=d.panels[i];if(!a||a.state==="minimized"||S.get(a.component)?.defaultOptions?.canMinimize===!1)return d;let r,x;if(a.state==="floating"){let p=d.floating.find(h=>h.id===i);p&&(r={x:Number(p.x),y:Number(p.y),width:Number(p.width),height:Number(p.height),anchor:p.anchor??null})}else if(a.state==="docked"){let p=h=>{if(h.type==="leaf")return h.panels.includes(i)?h.id:null;for(let E of h.children){let A=p(E);if(A)return A}return null};x=p(d.gridRoot)??void 0}let u=ie(d.gridRoot,i);return{...d,gridRoot:u||{type:"leaf",id:"group-default",panels:[],activePanelId:null},floating:d.floating.filter(p=>p.id!==i),minimized:[...d.minimized,{id:i,title:a.title,component:a.component}],panels:{...d.panels,[i]:{...a,state:"minimized",previousState:a.state,lastFloatingRect:r,lastLeafId:x}}}}),v&&(W.current.publish("panel:minimized",{id:i}),W.current.publish("layout:changed",{}))},[]),Ye=(0,O.useCallback)(i=>{let v=D.current.panels[i]?.state==="minimized";R(d=>{let a=d.panels[i];if(!a||a.state!=="minimized")return d;let G=d.minimized.filter(x=>x.id!==i);if((a.previousState||"docked")==="floating"){K.current+=1;let x=S.get(a.component),u=a.lastFloatingRect||x?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350},p=ne(u,d.floating);return{...d,minimized:G,floating:[...d.floating,{...p,id:i,z:K.current,anchor:a.lastFloatingRect?.anchor??null}],panels:{...d.panels,[i]:{...a,state:"floating"}}}}else{let x=(E,A)=>E.type==="leaf"?E.id===A:E.children.some(F=>x(F,A)),u=a.lastLeafId&&x(d.gridRoot,a.lastLeafId),p=S.get(a.component),h=p?.defaultOptions?.canDrag!==!1;if(u)return{...d,minimized:G,gridRoot:U(d.gridRoot,a.lastLeafId,i),panels:{...d.panels,[i]:{...a,state:"docked"}}};if(h){K.current+=1;let E=a.lastFloatingRect||p?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350},A=ne(E,d.floating);return{...d,minimized:G,floating:[...d.floating,{...A,id:i,z:K.current,anchor:a.lastFloatingRect?.anchor??null}],panels:{...d.panels,[i]:{...a,state:"floating"}}}}else{let E=B(d.gridRoot)||"group-default";return{...d,minimized:G,gridRoot:U(d.gridRoot,E,i),panels:{...d.panels,[i]:{...a,state:"docked"}}}}}}),v&&(W.current.publish("panel:restored",{id:i}),W.current.publish("layout:changed",{}))},[ne]),Ae=(0,O.useCallback)((i,v,d)=>{R(a=>{let G=a.panels[i];if(!G||S.get(G.component)?.defaultOptions?.canDrag===!1)return a;let x=S.get(G.component),u=v||x?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350},p=ie(a.gridRoot,i);K.current+=1;let h=ne(u,a.floating);return{...a,gridRoot:p||{type:"leaf",id:"group-default",panels:[],activePanelId:null},floating:[...a.floating,{...h,id:i,z:K.current,anchor:d??null}],panels:{...a.panels,[i]:{...G,state:"floating"}}}})},[ne]),Xe=(0,O.useCallback)((i,v)=>{R(d=>{let a=d.panels[i];if(!a)return d;let G=d.floating.filter(u=>u.id!==i),r=ie(d.gridRoot,i),x=v||B(r||d.gridRoot)||"group-default";return{...d,gridRoot:U(r||d.gridRoot,x,i),floating:G,panels:{...d.panels,[i]:{...a,state:"docked"}}}})},[]),at=(i,v,d,a,G)=>{if(i.type==="leaf"){if(i.id===v){let r={type:"leaf",id:`group-split-${Date.now()}-${Math.floor(Math.random()*1e3)}`,panels:[d],activePanelId:d},x=a==="left"||a==="right"?"horizontal":"vertical",u=a==="left"||a==="top"?[r,i]:[i,r],p=a==="left"||a==="top"?[G,1-G]:[1-G,G];return{type:"branch",orientation:x,sizes:p,children:u}}return i}else return{...i,children:i.children.map(r=>at(r,v,d,a,G))}},te=(0,O.useCallback)(i=>{R(v=>({...v,draggedPanelId:i}))},[]),pe=(0,O.useCallback)((i,v,d)=>{R(a=>{let G=a.panels[i];if(!G)return a;let r=a.floating.filter(p=>p.id!==i),x=ie(a.gridRoot,i),u;return d==="center"?u=U(x||a.gridRoot,v,i):u=at(x||a.gridRoot,v,i,d,a.splitRatio),{...a,gridRoot:u,floating:r,panels:{...a.panels,[i]:{...G,state:"docked"}},draggedPanelId:null}})},[]),Fe=(0,O.useCallback)((i,v)=>{R(d=>{let a=d.panels[i];if(!a)return d;let G=d.floating.filter(A=>A.id!==i),r=ie(d.gridRoot,i),x={type:"leaf",id:`group-edge-${Date.now()}-${Math.floor(Math.random()*1e3)}`,panels:[i],activePanelId:i},u=v==="left"||v==="right"?"horizontal":"vertical",p=v==="left"||v==="top"?[x,r||d.gridRoot]:[r||d.gridRoot,x],h=d.edgeSplitRatio,E={type:"branch",orientation:u,sizes:v==="left"||v==="top"?[h,1-h]:[1-h,h],children:p};return{...d,gridRoot:E,floating:G,panels:{...d.panels,[i]:{...a,state:"docked"}},draggedPanelId:null}})},[]),$e=(0,O.useCallback)((i,v,d)=>{R(a=>{let G=a.panels[i];if(!G)return a;let r=ie(a.gridRoot,i),x=h=>{if(h.type==="leaf"){if(h.id===v){let E=h.panels.filter(J=>J!==i),A=Math.max(0,Math.min(d,E.length)),F=[...E];return F.splice(A,0,i),{...h,panels:F,activePanelId:i}}return h}else return{...h,children:h.children.map(x)}},u=x(r||a.gridRoot),p=a.floating.filter(h=>h.id!==i);return{...a,gridRoot:u,floating:p,panels:{...a.panels,[i]:{...G,state:"docked"}},draggedPanelId:null}})},[]),Ke=(0,O.useCallback)(i=>{R(v=>{let d=G=>{if(G.type==="leaf")return G.id===i&&G.canClose!==!1?null:G;{let r=G.children.map(p=>d(p)).filter(p=>p!==null);if(r.length===0)return null;if(r.length===1)return r[0];let x=G.sizes.slice(0,r.length),u=x.reduce((p,h)=>p+h,0);return{...G,children:r,sizes:x.map(p=>p/u)}}},a=d(v.gridRoot);return{...v,gridRoot:a||{type:"leaf",id:"group-default",panels:[],activePanelId:null}}})},[]),_e=(0,O.useCallback)(i=>{R(v=>({...v,floating:v.floating.map(d=>d.id===i?{...d,maximized:!d.maximized}:d)}))},[]),lt=(0,O.useCallback)((i,v)=>{let d=(a,G)=>{if(a.type==="leaf")return a;if(G===i.length)return{...a,sizes:v};let r=i[G],x=a.children.map((u,p)=>p===r?d(u,G+1):u);return{...a,children:x}};R(a=>({...a,gridRoot:d(a.gridRoot,0)}))},[]),Gt=(0,O.useCallback)((i,v)=>{R(d=>({...d,floating:d.floating.map(a=>a.id===i?{...a,...v}:a)}))},[]),Qe=(0,O.useCallback)(()=>{let i=D.current.panels,v=[],d={};for(let[u,p]of Object.entries(i)){let h=l.current[u],E=h?.(),A=h!==void 0&&E!==void 0,F=A?E:p.props,J=A?ht(E):p.serializable;J?d[u]=A?{...p,props:F,serializable:J}:p:v.push(u)}let a=D.current.gridRoot,G=D.current.floating,r=D.current.minimized;for(let u of v)a=ie(a,u)||{type:"leaf",id:"group-default",panels:[],activePanelId:null},G=G.filter(p=>p.id!==u),r=r.filter(p=>p.id!==u);return v.length>0&&W.current.publish("layout:panels-excluded",{panels:v.map(u=>({id:u,component:i[u].component}))}),JSON.stringify({version:2,gridRoot:a,floating:G,minimized:r,panels:d})},[]),qe=(0,O.useCallback)(i=>{try{let v=$n(JSON.parse(i));if(!v)return!1;let d=Object.keys(v.panels)[0]||null;return R(a=>({...a,gridRoot:v.gridRoot,floating:v.floating,minimized:v.minimized,panels:v.panels,draggedPanelId:null,activePanelId:d})),!0}catch(v){return console.error("Failed to parse layout configuration:",v),!1}},[]),Yt=(0,O.useCallback)(i=>{R(v=>v.activePanelId===i?v:{...v,activePanelId:i})},[]),Xt=(0,O.useCallback)(i=>{R(v=>v.dir===i?v:{...v,dir:i,isRtl:i==="rtl"})},[]),zt=(0,O.useCallback)(i=>i in D.current.panels,[]),dt=(0,O.useCallback)(()=>Object.keys(D.current.panels),[]),ct=(0,O.useCallback)((i,v)=>Object.values(D.current.panels).find(a=>a.component===i&&a.dedupeKey===v)?.id??null,[]);(0,O.useEffect)(()=>{_&&R(i=>i.dir===_?i:{...i,dir:_,isRtl:_==="rtl"})},[_]);let Ve=(0,O.useRef)(new Map),et=(0,O.useRef)(null),Dt=(0,O.useCallback)(i=>(et.current=i,()=>{et.current=null}),[]),Vt=(0,O.useCallback)(i=>{et.current?.(i)},[]),Wt=(0,O.useCallback)((i,v)=>(Ve.current.set(i,v),()=>{Ve.current.delete(i)}),[]),ut=(0,O.useCallback)(i=>Ve.current.get(i)?.()??[],[]),yt=(0,O.useMemo)(()=>({openPanel:z,closePanel:X,minimizePanel:Ne,restorePanel:Ye,floatPanel:Ae,dockPanel:Xe,maximizePanel:_e,updateSplitSizes:lt,updateFloatingPosition:Gt,focusPanel:ve,isOpen:zt,getOpenPanelIds:dt,findPanelId:ct,saveLayout:Qe,loadLayout:qe,publish:fe,subscribe:j,setDraggedPanelId:te,dockPanelToGroup:pe,movePanelOrder:$e,closeLeafGroup:Ke,registerCloseGuard:oe,unregisterCloseGuard:ee,registerStateProvider:ye,unregisterStateProvider:we,setPanelDirty:Re,updatePanelTitle:We,requestClosePanel:Oe,dockPanelToWorkspaceEdge:Fe,setActivePanel:Yt,setDirection:Xt,registerPanelContextMenu:Wt,getPanelContextMenuItems:ut,showContextMenu:Vt,registerContextMenuFn:Dt}),[z,X,Ne,Ye,Ae,Xe,_e,lt,Gt,ve,zt,dt,ct,Qe,qe,fe,j,te,pe,$e,Ke,oe,ee,ye,we,Re,We,Oe,Fe,Yt,Xt,Wt,ut,Vt,Dt]),pt=i=>{let v=i.defaultMessage||i.id;return i.values&&Object.entries(i.values).forEach(([d,a])=>{v=v.replace(`{${d}}`,String(a))}),v},pn=(0,O.useMemo)(()=>({modalClass:s,modalBodyClass:I,sidePanelClass:b,sidePanelBodyClass:T,windowClass:y,windowBodyClass:C}),[s,I,b,T,y,C]);(0,O.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,W.useEffect)(()=>{if(t)return t._connect(bt),()=>{t._disconnect()}},[t,bt]);let gn=(0,W.useMemo)(()=>({getSnapshot:R,subscribeToState:H}),[R,H]);return(0,et.jsx)(Hn.Provider,{value:pn,children:(0,et.jsx)(Bn.Provider,{value:S,children:(0,et.jsx)(Fn.Provider,{value:gn,children:(0,et.jsx)(wt.Provider,{value:M,children:(0,et.jsx)(Zt.Provider,{value:bt,children:(0,et.jsx)(An.Provider,{value:L||lt,children:(0,et.jsx)(_n.Provider,{value:k,children:e})})})})})})})},On=e=>()=>{};function Ae(e){let t=(0,W.useContext)(wt),n=(0,W.useContext)(Fn),o=(0,W.useRef)(e);o.current=e;let c=(0,W.useSyncExternalStore)(e?n?.subscribeToState??On:On,()=>{let a=n?.getSnapshot()??t;return o.current?o.current(a):a},()=>{let a=n?.getSnapshot()??t;return o.current?o.current(a):a});if(!t)throw new Error("useWindowManagerState must be used within WindowManagerProvider");return e?c:t}var Mt=()=>{let e=(0,W.useContext)(Zt);if(!e)throw new Error("useWindowManagerActions must be used within WindowManagerProvider");return e},bn=()=>{let e=(0,W.useContext)(Zt);if(!e)throw new Error("useWindowManagerActionsInternal must be used within WindowManagerProvider");return e},_e=()=>(0,W.useContext)(An)||(t=>{let n=t.defaultMessage||t.id;return t.values&&Object.entries(t.values).forEach(([o,c])=>{n=n.replace(`{${o}}`,String(c))}),n}),fe=(e,t)=>e?typeof e=="string"?e:t(e):"",Gn=()=>{let{publish:e,subscribe:t}=Mt();return{publish:e,subscribe:t}},Be=()=>(0,W.useContext)(_n),Ot=()=>ct().instanceId;function Yn(e){let t=(0,W.useContext)(Zt),n=Ot(),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 he=qt(require("react"),1),vn=require("react-dom"),le=require("react/jsx-runtime");function er(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 yn(e){return"separator"in e}function Jt(e){return!yn(e)&&"items"in e}var Vn=(0,he.forwardRef)(({items:e,x:t,y:n,theme:o,fmt:c,onClose:a,onMouseEnter:I,onMouseLeave:b},T)=>((0,he.useLayoutEffect)(()=>{let y=T?.current;if(!y)return;let C=y.getBoundingClientRect(),P=8;C.right>window.innerWidth-P&&(y.style.left=`${Math.max(P,window.innerWidth-C.width-P)}px`,y.style.right="auto"),C.bottom>window.innerHeight-P&&(y.style.top=`${Math.max(P,window.innerHeight-C.height-P)}px`),C.left<P&&(y.style.left=`${P}px`,y.style.right="auto"),C.top<P&&(y.style.top=`${P}px`)}),(0,vn.createPortal)((0,le.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:I,onMouseLeave:b,children:e.map((y,C)=>{if(yn(y))return(0,le.jsx)("hr",{className:"rdd-context-menu__separator",role:"separator"},C);let P=y,S=P.checkbox&&P.checkbox.active!==!1,L=S&&P.checkbox.value,N=P.disabled===!0||(S?P.checkbox.enabled===!1:!1);return(0,le.jsxs)("button",{type:"button",className:`rdd-context-menu__item${N?" rdd-context-menu__item--disabled":""}`,title:P.title?Tt(P.title,c):void 0,disabled:N,"data-cy-action":P.cyAction,onClick:()=>{N||(P.action?.(),a())},role:"menuitem","aria-checked":S?L:void 0,children:[P.icon?(0,le.jsx)("span",{className:"rdd-context-menu__icon",children:P.icon}):(0,le.jsx)("span",{className:"rdd-context-menu__icon","aria-hidden":"true"}),(0,le.jsx)("span",{className:"rdd-context-menu__label",children:Tt(P.label,c)}),S&&(0,le.jsx)("span",{className:`rdd-context-menu__checkbox${L?" rdd-context-menu__checkbox--checked":""}`,"aria-hidden":"true",children:(0,le.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,le.jsx)("rect",{x:"0.75",y:"0.75",width:"10.5",height:"10.5",rx:"2",fill:"none",stroke:"currentColor",strokeWidth:"1.5"}),L&&(0,le.jsx)("path",{d:"M2.5 6 L4.5 8.5 L9.5 3.5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})]})})]},C)})}),document.body)));Vn.displayName="ContextMenuSubMenuPanel";var Xn={visible:!1,x:0,y:0,items:[]},Qt=(0,he.forwardRef)(({theme:e="dark",formatMessageProvider:t,onShow:n,onHide:o,onOpenChange:c,className:a,style:I},b)=>{let[T,y]=(0,he.useState)(Xn),[C,P]=(0,he.useState)(null),S=(0,he.useRef)(null),L=(0,he.useRef)(null),N=(0,he.useRef)(new Map),_=(0,he.useRef)({open:null,close:null}),g=he.default.useCallback(()=>{y(Xn),P(null),_.current.open&&clearTimeout(_.current.open),_.current.close&&clearTimeout(_.current.close),_.current.open=null,_.current.close=null,o?.(),c?.(!1)},[o,c]);if((0,he.useImperativeHandle)(b,()=>({show({event:s,x:k,y:Y,items:K}){let U=s?er(s):{x:k??0,y:Y??0};N.current.clear(),y({visible:!0,x:U.x,y:U.y,items:K}),P(null),n?.(),c?.(!0)}}),[n,c]),(0,he.useEffect)(()=>{if(!T.visible)return;let s=k=>{S.current?.contains(k.target)||L.current?.contains(k.target)||g()};return document.addEventListener("pointerdown",s,{capture:!0}),window.addEventListener("click",s),()=>{document.removeEventListener("pointerdown",s,{capture:!0}),window.removeEventListener("click",s)}},[T.visible,g]),(0,he.useEffect)(()=>{if(!T.visible)return;let s=k=>{k.key==="Escape"&&g()};return document.addEventListener("keydown",s),()=>document.removeEventListener("keydown",s)},[T.visible,g]),(0,he.useLayoutEffect)(()=>{if(!T.visible||!S.current)return;let s=S.current,k=s.getBoundingClientRect(),Y=8;k.right>window.innerWidth-Y&&(s.style.left=`${Math.max(Y,window.innerWidth-k.width-Y)}px`),k.bottom>window.innerHeight-Y&&(s.style.top=`${Math.max(Y,window.innerHeight-k.height-Y)}px`),k.left<Y&&(s.style.left=`${Y}px`),k.top<Y&&(s.style.top=`${Y}px`)},[T.visible]),!T.visible)return null;let M=t,w=0,z=0;if(C!==null){let s=N.current.get(C);if(s){let k=s.getBoundingClientRect();w=document.documentElement.dir==="rtl"?window.innerWidth-k.left+2:k.right+2,z=k.top}}function m(){_.current.open&&(clearTimeout(_.current.open),_.current.open=null)}function R(){_.current.close&&(clearTimeout(_.current.close),_.current.close=null)}function H(s,k){R(),C!==null&&C!==s&&(m(),P(null)),Jt(k)&&k.items?.length?(m(),_.current.open=setTimeout(()=>{P(s)},150)):Jt(k)||(m(),C!==null&&(_.current.close=setTimeout(()=>P(null),200)))}function B(s){m(),Jt(s)&&s.items?.length&&(_.current.close=setTimeout(()=>P(null),200))}return(0,vn.createPortal)((0,le.jsxs)(le.Fragment,{children:[(0,le.jsx)("div",{ref:S,className:`rdd-context-menu rdd-context-menu--${e}${a?` ${a}`:""}`,style:{position:"fixed",left:T.x,top:T.y,zIndex:9500,...I},role:"menu","aria-orientation":"vertical",children:T.items.map((s,k)=>{if(yn(s))return(0,le.jsx)("hr",{className:"rdd-context-menu__separator",role:"separator"},k);if(Jt(s))return(0,le.jsxs)("button",{ref:ee=>{N.current.set(k,ee)},type:"button",className:`rdd-context-menu__item rdd-context-menu__item--has-submenu${C===k?" rdd-context-menu__item--submenu-open":""}`,title:s.title?Tt(s.title,M):void 0,onMouseEnter:()=>H(k,s),onMouseLeave:()=>B(s),role:"menuitem","aria-haspopup":"true","aria-expanded":C===k,children:[(0,le.jsx)("span",{className:"rdd-context-menu__icon","aria-hidden":"true"}),(0,le.jsx)("span",{className:"rdd-context-menu__label",children:Tt(s.label,M)}),(0,le.jsx)("span",{className:"rdd-context-menu__chevron","aria-hidden":"true",children:"\u203A"})]},k);let Y=s,K=Y.checkbox&&Y.checkbox.active!==!1,U=K&&Y.checkbox.value,ae=Y.disabled===!0||(K?Y.checkbox.enabled===!1:!1);return(0,le.jsxs)("button",{ref:ee=>{N.current.set(k,ee)},type:"button",className:`rdd-context-menu__item${ae?" rdd-context-menu__item--disabled":""}`,title:Y.title?Tt(Y.title,M):void 0,disabled:ae,"data-cy-action":Y.cyAction,onClick:()=>{ae||(Y.action?.(),g())},onMouseEnter:()=>H(k,s),onMouseLeave:()=>B(s),role:"menuitem","aria-checked":K?U:void 0,children:[Y.icon?(0,le.jsx)("span",{className:"rdd-context-menu__icon",children:Y.icon}):(0,le.jsx)("span",{className:"rdd-context-menu__icon","aria-hidden":"true"}),(0,le.jsx)("span",{className:"rdd-context-menu__label",children:Tt(Y.label,M)}),K&&(0,le.jsx)("span",{className:`rdd-context-menu__checkbox${U?" rdd-context-menu__checkbox--checked":""}`,"aria-hidden":"true",children:(0,le.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,le.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,le.jsx)("path",{d:"M2.5 6 L4.5 8.5 L9.5 3.5",stroke:"white",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})]})})]},k)})}),C!==null&&(()=>{let s=T.items[C];return(0,le.jsx)(Vn,{ref:L,items:s.items??[],x:w,y:z,theme:e,fmt:M,onClose:g,onMouseEnter:()=>R(),onMouseLeave:()=>{_.current.close=setTimeout(()=>P(null),200)}})})()]}),document.body)});Qt.displayName="ContextMenu";var gt={Component:Qt},St=he.default.createContext(null),en=({adapter:e=gt,children:t,...n})=>{let o=(0,he.useRef)(null),[c,a]=he.default.useState(!1),I=he.default.useCallback(b=>{o.current?.show(b)},[]);return(0,le.jsxs)(St.Provider,{value:{show:I,isOpen:c},children:[t,(0,le.jsx)(e.Component,{ref:o,...n,onShow:()=>{a(!0),n.onShow?.()},onHide:()=>{a(!1),n.onHide?.()}})]})};function Kn(){let e=he.default.useContext(St);if(!e)throw new Error("useShowContextMenu must be used within a ContextMenuProvider");return e.show}var ve=require("react"),xn=require("react/jsx-runtime"),tr=0,Pn=()=>`panel-${++tr}-${Date.now()}`,tn=new Map,qn={leftPanel:null,rightPanel:null,modals:[]},jn=(0,ve.createContext)(null),Zn=(0,ve.createContext)(null),nn=({children:e})=>{let[t,n]=(0,ve.useState)(qn),o=(0,ve.useRef)(t);o.current=t;let c=(0,ve.useCallback)((g,M)=>{tn.set(g,M)},[]),a=(0,ve.useCallback)(g=>{tn.delete(g)},[]),I=(0,ve.useCallback)(async(g,M,w={})=>{let z=o.current.leftPanel;if(z){let H=tn.get(z.id);if(H&&!await H())return null}let m=Pn(),R={id:m,Component:g,props:M,containerType:"left-panel",options:w};return n(H=>({...H,leftPanel:R})),m},[]),b=(0,ve.useCallback)(async(g,M,w={})=>{let z=o.current.rightPanel;if(z){let H=tn.get(z.id);if(H&&!await H())return null}let m=Pn(),R={id:m,Component:g,props:M,containerType:"right-panel",options:w};return n(H=>({...H,rightPanel:R})),m},[]),T=(0,ve.useCallback)((g,M,w={})=>{let z=Pn(),m=M.title,R={...w,title:w.title||m||"Confirmation"},H={id:z,Component:g,props:M,containerType:"modal",options:R};return n(B=>({...B,modals:[...B.modals,H]})),z},[]),y=(0,ve.useCallback)(g=>{n(M=>({leftPanel:M.leftPanel?.id===g?null:M.leftPanel,rightPanel:M.rightPanel?.id===g?null:M.rightPanel,modals:M.modals.filter(w=>w.id!==g)}))},[]),C=(0,ve.useCallback)(()=>{n(qn)},[]),P=(0,ve.useCallback)(()=>{n(g=>({...g,modals:[]}))},[]),S=(0,ve.useCallback)(g=>t.leftPanel?.id===g?t.leftPanel:t.rightPanel?.id===g?t.rightPanel:t.modals.find(M=>M.id===g),[t]),L=(0,ve.useCallback)((g,M)=>{n(w=>({leftPanel:w.leftPanel?.id===g?{...w.leftPanel,...M}:w.leftPanel,rightPanel:w.rightPanel?.id===g?{...w.rightPanel,...M}:w.rightPanel,modals:w.modals.map(z=>z.id===g?{...z,...M}:z)}))},[]),N=(0,ve.useCallback)((g,M,w)=>{L(g,{dirty:M,dirtyOptions:w})},[L]),_=(0,ve.useMemo)(()=>({openLeftPanel:I,openRightPanel:b,openModal:T,close:y,closeAll:C,closeAllModals:P,getInstance:S,updateInstance:L,setDirty:N,registerCloseHandler:c,unregisterCloseHandler:a}),[I,b,T,y,C,P,S,L,N,c,a]);return(0,xn.jsx)(jn.Provider,{value:t,children:(0,xn.jsx)(Zn.Provider,{value:_,children:e})})},Ke=()=>{let e=(0,ve.useContext)(jn);if(!e)throw new Error("usePanelState must be used within PanelProvider");return e},tt=()=>{let e=(0,ve.useContext)(Zn);if(!e)throw new Error("usePanelActions must be used within PanelProvider");return e};var At=require("react");var He=require("react/jsx-runtime"),nr=({title:e,message:t,alert:n,alertType:o="info",useYesNoTitles:c=!1,onOK:a,onCancel:I})=>{let{requestClose:b,setIcon:T,setTitle:y}=ct(),C=_e(),P=Be(),S=(0,At.useRef)(null);(0,At.useEffect)(()=>{if(e){let w=typeof e=="string"?e:C(e);y(w)}T&&T((0,He.jsx)("span",{children:"\u2753"}))},[e,y,T,C]),(0,At.useEffect)(()=>{S.current?.focus({preventScroll:!0})},[]);let L=typeof t=="string"?t:C(t),N=C(c?P.no:P.cancel),_=C(c?P.yes:P.ok),g=w=>{w.preventDefault(),a?.(),b()},M=()=>{I?.(),b()};return(0,He.jsxs)("form",{onSubmit:g,className:"rdd-confirmation-form-body",children:[n&&(0,He.jsxs)("div",{className:`rdd-confirmation-alert confirmation-alert-${o}`,children:[(0,He.jsx)("span",{children:"\u2139\uFE0F"}),(0,He.jsx)("span",{children:n})]}),(0,He.jsx)("div",{style:{fontSize:"0.9rem",color:"inherit",lineHeight:1.5},children:L}),(0,He.jsx)("hr",{style:{marginTop:"0.5rem",marginBottom:"0.5rem",opacity:.1}}),(0,He.jsxs)("div",{className:"rdd-confirmation-actions",children:[(0,He.jsx)("button",{type:"button",className:"rdd-btn rdd-btn-sm rdd-btn-outline",onClick:M,children:N}),(0,He.jsx)("button",{type:"submit",className:"rdd-btn rdd-btn-sm rdd-btn-primary",ref:S,children:_})]})]})},nt=nr;function Ft(e){return e==="top-left"?"top-right":e==="top-right"?"top-left":e==="bottom-left"?"bottom-right":"bottom-left"}function qe(e){let{element:t,pointerId:n,startClientX:o,startClientY:c,captureStart:a,onMove:I,onEnd:b,activeClasses:T}=e;t.setPointerCapture(n),T?.forEach(({el:S,classes:L})=>S.classList.add(...L));let y=a(),C=S=>{I(S.clientX-o,S.clientY-c,y)},P=()=>{T?.forEach(({el:S,classes:L})=>S.classList.remove(...L)),t.removeEventListener("pointermove",C),t.removeEventListener("pointerup",P),t.removeEventListener("pointercancel",P),b?.(y)};t.addEventListener("pointermove",C),t.addEventListener("pointerup",P),t.addEventListener("pointercancel",P)}function kt(e,t,n,o,c){let{minW:a,minH:I,maxW:b,maxH:T,minX:y,minY:C}=c,{x:P,y:S,w:L,h:N}=o;if(e.includes("e")&&(L=Math.max(a,Math.min(o.w+t,b??1/0))),e.includes("w")){let _=o.w-a,g=y!=null?-(o.x-y):-1/0,M=Math.max(g,Math.min(t,_));L=o.w-M,P=o.x+M}if(e.includes("s")&&(N=Math.max(I,Math.min(o.h+n,T??1/0))),e.includes("n")){let _=o.h-I,g=C!=null?-(o.y-C):-1/0,M=Math.max(g,Math.min(n,_));N=o.h-M,S=o.y+M}return{x:P,y:S,w:L,h:N}}var on=require("react");function rn(){let[e,t]=(0,on.useState)(()=>document.documentElement.getAttribute("data-color-scheme")==="light"?"light":"dark");return(0,on.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 f=require("react/jsx-runtime"),Un=(e,t)=>{if(!e)return null;if(e.type==="leaf")return e.id===t?e:null;for(let n of e.children){let o=Un(n,t);if(o)return o}return null},_t=new Map,sn="preserved-dom-container",wn=(0,f.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,f.jsx)("rect",{x:"3",y:"3",width:"7",height:"9",rx:"1"}),(0,f.jsx)("rect",{x:"14",y:"3",width:"7",height:"5",rx:"1"}),(0,f.jsx)("rect",{x:"14",y:"12",width:"7",height:"9",rx:"1"}),(0,f.jsx)("rect",{x:"3",y:"16",width:"7",height:"5",rx:"1"})]}),Et={float:(0,f.jsx)("span",{className:"rdd-menu-icon",children:(0,f.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,f.jsx)("rect",{x:"2",y:"8",width:"14",height:"14",rx:"1"}),(0,f.jsx)("rect",{x:"8",y:"2",width:"14",height:"14",rx:"1"})]})}),minimize:(0,f.jsx)("span",{className:"rdd-menu-icon",children:(0,f.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",style:{display:"block"},children:(0,f.jsx)("line",{x1:"4",y1:"18",x2:"20",y2:"18"})})}),restore:(0,f.jsx)("span",{className:"rdd-menu-icon",children:(0,f.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,f.jsx)("rect",{x:"4",y:"4",width:"16",height:"16",rx:"1"})})}),maximize:(0,f.jsx)("span",{className:"rdd-menu-icon",children:(0,f.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,f.jsx)("rect",{x:"2",y:"2",width:"20",height:"20",rx:"1"})})}),close:(0,f.jsx)("span",{className:"rdd-menu-icon",children:(0,f.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,f.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})},Jn=e=>{let t=_t.get(e);return t||(t=document.createElement("div"),t.style.width="100%",t.style.height="100%",_t.set(e,t)),t},or=(e,t,n)=>{let o=t.component,c=n.get(o);if(!c)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,f.jsxs)("div",{className:"rdd-unregistered-panel",style:{border:"2px dashed #dc3545"},children:[(0,f.jsx)("h6",{style:{fontWeight:700,marginBottom:"0.25rem"},children:"\u26A0\uFE0F Component Unregistered"}),(0,f.jsxs)("span",{style:{fontSize:"0.875rem",color:"var(--rdd-text-secondary, #94a3b8)"},children:["Key: ",o]})]});let a=c.Component;return(0,f.jsx)(a,{...t.props??{},panelId:e})},Rn=new Map,ot=new Map,mt=e=>{let t=ot.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},ot.set(e,t)),t},Qn=({panelId:e})=>{let t=(0,V.useRef)(null);return(0,V.useEffect)(()=>{let n=t.current;if(!n)return;let o=Jn(e);n.appendChild(o);let c=new ResizeObserver(a=>{for(let I of a){let{width:b,height:T}=I.contentRect;if(b>0&&T>0){Rn.set(e,{width:b,height:T});let y=ot.get(e);y&&y.onResize.forEach(C=>C(b,T))}}});return c.observe(n),()=>{c.disconnect();let a=document.getElementById(sn);a||(a=document.createElement("div"),a.id=sn,a.style.display="none",document.body.appendChild(a)),a.appendChild(o)}},[e]),(0,f.jsx)("div",{ref:t,style:{width:"100%",height:"100%"}})},rr=({panelId:e})=>{let t=Ae(),n=Rt(),o=_e(),c=(0,V.useRef)(null),a=t.panels[e],I=a?n.get(a.component):null,b=I?.defaultOptions?.disableLivePreview||!1,T=Rn.get(e)||{width:800,height:500},y=T.width,C=T.height,L=Math.min(220/y,140/C);if((0,V.useEffect)(()=>{if(b)return;let N=c.current;if(!N)return;let _=_t.get(e);if(_)return N.appendChild(_),()=>{let g=document.getElementById(sn);g||(g=document.createElement("div"),g.id=sn,g.style.display="none",document.body.appendChild(g)),g.appendChild(_)}},[e,b]),b){let N=y*L,_=C*L,g=a?.title||I?.defaultOptions?.title||"Panel",M=fe(g,o),w=(Array.from(M)[0]||"P").toUpperCase();return(0,f.jsx)("div",{className:"rdd-taskbar-item-preview-frame",style:{width:`${N}px`,height:`${_}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,f.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:w})})}return(0,f.jsx)("div",{className:"rdd-taskbar-item-preview-frame",style:{width:`${y*L}px`,height:`${C*L}px`},children:(0,f.jsx)("div",{ref:c,className:"rdd-taskbar-item-preview-host",style:{width:`${y}px`,height:`${C}px`,transform:`scale(${L})`,transformOrigin:"top left",position:"absolute",top:0,left:0,"--rdd-preview-scale":L}})})},ir=({panelId:e,children:t})=>{let n=Ae(),{requestClosePanel:o,setPanelDirty:c,registerCloseGuard:a,unregisterCloseGuard:I,registerStateProvider:b,unregisterStateProvider:T,updatePanelTitle:y,minimizePanel:C}=Mt(),P=n.minimized.some(m=>m.id===e),S=(0,V.useRef)(P);(0,V.useEffect)(()=>{let m=ot.get(e);m&&(P&&!S.current?m.onMinimize.forEach(R=>R()):!P&&S.current&&m.onRestore.forEach(R=>R()),S.current=P)},[P,e]);let L=n.activePanelId===e,N=(0,V.useRef)(L);(0,V.useEffect)(()=>{let m=N.current;N.current=L;let R=ot.get(e);R&&(L&&!m?R.onActivate.forEach(H=>H()):!L&&m&&R.onDeactivate.forEach(H=>H()))},[L,e]);let _=n.panels[e]?.state,g=_==="floating"?"floating-window":"dockable-panel",M=(0,V.useRef)(g);(0,V.useEffect)(()=>{if(_==="minimized")return;let m=M.current;M.current=g;let R=ot.get(e);R&&g!==m&&R.onContainerTypeChange.forEach(H=>H(g))},[g,_,e]),(0,V.useEffect)(()=>()=>{let m=ot.get(e);m&&(N.current&&m.onDeactivate.forEach(R=>R()),m.onClose.forEach(R=>R()),ot.delete(e))},[e]);let w=(0,V.useRef)(g),z=V.default.useMemo(()=>({requestClose:m=>o(e,m),setDirty:m=>c(e,m),onCloseRequested:m=>(a(e,m),()=>I(e)),registerStateProvider:m=>(b(e,m),()=>T(e)),setTitle:m=>y(e,m),instanceId:e,containerType:w.current,onClose:m=>{let R=mt(e);return R.onClose.add(m),()=>R.onClose.delete(m)},onMinimize:m=>{let R=mt(e);return R.onMinimize.add(m),()=>R.onMinimize.delete(m)},onRestore:m=>{let R=mt(e);return R.onRestore.add(m),()=>R.onRestore.delete(m)},onResize:m=>{let R=mt(e);return R.onResize.add(m),()=>R.onResize.delete(m)},requestMinimize:()=>C(e),getDimensions:()=>Rn.get(e)??null,onActivate:m=>{let R=mt(e);return R.onActivate.add(m),()=>R.onActivate.delete(m)},onDeactivate:m=>{let R=mt(e);return R.onDeactivate.add(m),()=>R.onDeactivate.delete(m)},onContainerTypeChange:m=>{let R=mt(e);return R.onContainerTypeChange.add(m),()=>R.onContainerTypeChange.delete(m)}}),[e,o,c,a,I,b,T,y,C]);return(0,f.jsx)(Qe,{value:z,children:t})},eo=({node:e,path:t,onTabRightClick:n,activeDropZone:o,onHoverDropZone:c,onTabDragStart:a,hoveredTab:I,onTabHover:b,defaultPanelIcon:T,onRequestClosePanel:y})=>{let{updateSplitSizes:C}=Mt();if(e.type==="leaf")return(0,f.jsx)(sr,{leaf:e,onTabRightClick:n,activeDropZone:o,onHoverDropZone:c,onTabDragStart:a,hoveredTab:I,onTabHover:b,defaultPanelIcon:T,onRequestClosePanel:y});let P=e.orientation==="horizontal",S=(L,N)=>{N.preventDefault();let _=N.currentTarget,g=_.parentElement,M=g?P?g.clientWidth:g.clientHeight:P?1e3:800;qe({element:_,pointerId:N.pointerId,startClientX:N.clientX,startClientY:N.clientY,captureStart:()=>[...e.sizes],activeClasses:[{el:_,classes:["rdd-active"]},{el:document.body,classes:["rdd-resizing-active",P?"rdd-resizing-col-active":"rdd-resizing-row-active"]}],onMove:(w,z,m)=>{let R=(P?w:z)/M,H=[...m];H[L]+=R,H[L+1]-=R,H[L]>.1&&H[L+1]>.1&&C(t,H)}})};return(0,f.jsx)("div",{style:{display:"flex",flexDirection:P?"row":"column",width:"100%",height:"100%",overflow:"hidden",position:"relative"},children:e.children.map((L,N)=>{let _=e.sizes[N]*100;return(0,f.jsxs)(V.default.Fragment,{children:[(0,f.jsx)("div",{style:{flexGrow:e.sizes[N],flexBasis:`${_}%`,overflow:"hidden",position:"relative",minWidth:0,minHeight:0},children:(0,f.jsx)(eo,{node:L,path:[...t,N],onTabRightClick:n,activeDropZone:o,onHoverDropZone:c,onTabDragStart:a,hoveredTab:I,onTabHover:b,defaultPanelIcon:T,onRequestClosePanel:y})}),N<e.children.length-1&&(0,f.jsx)("div",{onPointerDown:g=>S(N,g),style:{cursor:P?"col-resize":"row-resize",width:P?"1px":"100%",height:P?"100%":"1px",zIndex:20},className:"rdd-resizer-bar"})]},N)})})},sr=({leaf:e,onTabRightClick:t,activeDropZone:n,onHoverDropZone:o,onTabDragStart:c,hoveredTab:a,onTabHover:I,defaultPanelIcon:b,onRequestClosePanel:T})=>{let y=Ae(),C=Rt(),{openPanel:P,closeLeafGroup:S,setActivePanel:L}=bn(),N=_e(),_=Be(),{windowClass:g,windowBodyClass:M}=Ve(),w=(0,V.useRef)(null),[z,m]=(0,V.useState)({left:!1,right:!1}),R=(0,V.useCallback)(()=>{let s=w.current;s&&m({left:s.scrollLeft>0,right:s.scrollLeft<s.scrollWidth-s.clientWidth-1})},[]);(0,V.useEffect)(()=>{let s=w.current;if(!s)return;s.addEventListener("scroll",R,{passive:!0});let k=new ResizeObserver(R);return k.observe(s),R(),()=>{s.removeEventListener("scroll",R),k.disconnect()}},[R]);let H=s=>{w.current?.scrollBy({left:s==="left"?-120:120,behavior:"smooth"})},B=s=>{P(s,y.panels[s].component),L(s)};return(0,f.jsxs)("div",{"data-active-panel-id":e.activePanelId||"",className:`rdd-workspace-panel ${g??""}`,style:{overflow:"hidden",position:"relative"},children:[(0,f.jsxs)("div",{className:"rdd-workspace-tab-bar",style:{minHeight:"38px"},children:[z.left&&(0,f.jsx)("button",{className:"rdd-tab-scroll-btn rdd-tab-scroll-btn-left",onPointerDown:s=>s.stopPropagation(),onClick:()=>H("left"),tabIndex:-1,"aria-label":"Scroll tabs left",children:"\u2039"}),(0,f.jsx)("div",{ref:w,className:"rdd-tab-headers-container",style:{scrollbarWidth:"none"},onPointerMove:s=>{y.draggedPanelId&&s.target===s.currentTarget&&I(e.id,"EMPTY",e.panels.length,"right")},onPointerLeave:s=>{y.draggedPanelId&&s.target===s.currentTarget&&I(e.id,"",-1,null)},children:e.panels.map((s,k)=>{let Y=y.panels[s];if(!Y)return null;let K=e.activePanelId===s,U=y.activePanelId===s,ee=C.get(Y.component)?.defaultOptions,xe=a&&a.leafId===e.id&&a.panelId===s,se=k===e.panels.length-1,j=a&&a.leafId===e.id&&a.panelId==="EMPTY"&&se,F=xe?a.side==="left"?"rdd-drag-hover-left":"rdd-drag-hover-right":j?"rdd-drag-hover-right":"",D=K?U?"rdd-active rdd-workspace-tab-active-focused":"rdd-active rdd-workspace-tab-active-unfocused":"rdd-workspace-tab-inactive";return(0,f.jsxs)("div",{"data-tab-id":s,"data-leaf-id":e.id,"data-tab-index":String(k),onClick:()=>B(s),onPointerDown:$=>{ee?.canDrag!==!1&&c(s,$)},onContextMenu:$=>t(s,$),onPointerMove:$=>{if(y.draggedPanelId&&$.pointerType!=="touch"){let ne=$.currentTarget.getBoundingClientRect(),be=$.clientX-ne.left<ne.width/2?"left":"right";I(e.id,s,k,be)}},onPointerLeave:()=>{y.draggedPanelId&&I(e.id,"",-1,null)},className:`rdd-workspace-tab ${D} ${F}`,style:{cursor:ee?.canDrag===!1?"default":"pointer"},children:[(0,f.jsxs)("span",{className:"rdd-text-truncate",style:{maxWidth:"120px",display:"flex",alignItems:"center"},children:[(0,f.jsx)("span",{className:"rdd-workspace-tab-icon",children:ee?.icon||b||wn}),(0,f.jsxs)("span",{children:[fe(Y.title,N),Y.dirty?" *":""]})]}),ee?.renderHeaderActions&&(0,f.jsx)("span",{className:"rdd-tab-header-actions",onClick:$=>$.stopPropagation(),onPointerDown:$=>$.stopPropagation(),children:ee.renderHeaderActions(s)}),ee?.canClose!==!1&&(0,f.jsx)("span",{onClick:$=>{$.stopPropagation(),T(s)},title:fe(_.closeTab,N),className:"rdd-close-tab-x",style:{width:"18px",height:"18px",...ee?.renderHeaderActions?{}:{marginInlineStart:"auto"}},children:(0,f.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,f.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]},s)})}),z.right&&(0,f.jsx)("button",{className:"rdd-tab-scroll-btn rdd-tab-scroll-btn-right",onPointerDown:s=>s.stopPropagation(),onClick:()=>H("right"),tabIndex:-1,"aria-label":"Scroll tabs right",children:"\u203A"}),e.panels.length===0&&e.keepOnEmpty&&e.canClose!==!1&&(0,f.jsx)("span",{onClick:()=>S(e.id),className:"rdd-close-tab-x rdd-header-close-empty-group",style:{width:"18px",height:"18px",cursor:"pointer"},title:fe(_.closeEmptyGroup,N),children:(0,f.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,f.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),(0,f.jsxs)("div",{className:`rdd-panel-body ${M??""}`,style:{position:"relative",overflow:"hidden"},children:[e.activePanelId&&y.panels[e.activePanelId]?(0,f.jsx)(Qn,{panelId:e.activePanelId},e.activePanelId):(0,f.jsx)("div",{className:"rdd-empty-leaf-placeholder",children:(0,f.jsx)("span",{children:"Empty Workspace Section"})}),y.draggedPanelId!==null&&(()=>{let s=k=>n?.leafId===e.id&&n.position===k;return(0,f.jsx)("div",{className:"rdd-dock-drop-zone-overlay",children:(0,f.jsxs)("div",{className:"rdd-dock-target-cross",children:[(0,f.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${s("top")?" rdd-dock-target-box--active":""}`,children:"\u25B2"}),(0,f.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${s("bottom")?" rdd-dock-target-box--active":""}`,children:"\u25BC"}),(0,f.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${s("left")?" rdd-dock-target-box--active":""}`,children:"\u25C0"}),(0,f.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${s("right")?" rdd-dock-target-box--active":""}`,children:"\u25B6"}),(0,f.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${s("center")?" rdd-dock-target-box--active":""}`,children:"\u25A3"})]})})})(),y.draggedPanelId!==null&&n!==null&&n.leafId===e.id&&(0,f.jsx)("div",{className:"rdd-dock-preview-highlight",style:(()=>{let s=n.position,k=`${y.splitRatio*100}%`,Y=`${(1-y.splitRatio)*100}%`;return{left:s==="right"?Y:"0",top:s==="bottom"?Y:"0",width:s==="left"||s==="right"?k:"100%",height:s==="top"||s==="bottom"?k:"100%"}})()})]})]})},ar=({skin:e="vscode",defaultPanelIcon:t,taskbarVisibility:n="always",contextMenuAdapter:o=gt,animations:c=!0})=>{let a=Ae(),I=Rt(),{restorePanel:b,minimizePanel:T,requestClosePanel:y,maximizePanel:C,updateFloatingPosition:P,focusPanel:S,floatPanel:L,setDraggedPanelId:N,dockPanelToGroup:_,movePanelOrder:g,dockPanelToWorkspaceEdge:M,setActivePanel:w,getPanelContextMenuItems:z,showContextMenu:m,registerContextMenuFn:R}=bn(),{openModal:H}=tt(),B=_e(),s=Be(),k=V.default.useCallback(r=>{let x=a.panels[r];y(r,{onConfirm:u=>new Promise(p=>{let h=u||x?.dirtyOptions,E=x?fe(x.title,B):"Panel";H(nt,{title:h?.title||s.unsavedChangesTitle,message:h?.message||{id:s.unsavedChangesMessage.id,defaultMessage:s.unsavedChangesMessage.defaultMessage,values:{title:E}},alert:h?.alert,alertType:h?.alertType||"danger",useYesNoTitles:!0,onOK:()=>p(!0),onCancel:()=>p(!1)},{size:"small"})})})},[y,a.panels,B,H,s]),{windowClass:Y,windowBodyClass:K}=Ve(),U=(0,V.useContext)(St),ae=(0,V.useRef)(null);(0,V.useEffect)(()=>R(U!==null?r=>U.show(r):r=>ae.current?.show(r)),[U,R]);let ee=(0,V.useRef)(null),[xe,se]=(0,V.useState)(!1),j=(0,V.useRef)(null),F=(0,V.useRef)(a.minimized.length),[D,$]=(0,V.useState)(null),ne=(0,V.useRef)(null),ce=(0,V.useRef)("mouse"),[be,we]=(0,V.useState)(!1),Re=U!==null?U.isOpen:be;(0,V.useEffect)(()=>()=>{ne.current&&clearTimeout(ne.current)},[]),(0,V.useEffect)(()=>{D&&(a.minimized.some(x=>x.id===D.id)||$(null))},[a.minimized,D]),(0,V.useEffect)(()=>{if(!D?.fromTouch)return;let r=x=>{x.pointerType!=="touch"||document.querySelector(".rdd-taskbar-item-tooltip")?.contains(x.target)||$(null)};return document.addEventListener("pointerdown",r,{capture:!0}),()=>document.removeEventListener("pointerdown",r,{capture:!0})},[D?.fromTouch]);let[De,Oe]=(0,V.useState)(null),We=(0,V.useRef)(null),[Q,Me]=(0,V.useState)({x:0,y:0}),[Ie,$e]=(0,V.useState)(null),Ye=(0,V.useRef)(null),Ce=r=>{$e(r),Ye.current=r},[ft,$t]=(0,V.useState)(null),ht=(0,V.useRef)(null),Ze=r=>{$t(r),ht.current=r},Lt=(0,V.useContext)(wt)?.isRtl??!1,[Gt,Ue]=(0,V.useState)(null),Xe=(0,V.useRef)(null),Yt=(r,x,u,p)=>{let h=p?{leafId:r,panelId:x,index:u,side:p}:null;Ue(h),Xe.current=h},Xt=(r,x)=>{let u=x?{leafId:r,position:x}:null;Oe(u),We.current=u,u&&(Ce(null),Ze(null))},zt=(r,x)=>{let u=document.elementsFromPoint(r,x),p=!1,h=!1,E=!1;for(let O of u)if(O instanceof HTMLElement){if(!p&&O.dataset.dropZone){let A=O.dataset.leafId;if(A){let J=O.dataset.dropZone;Oe({leafId:A,position:J}),We.current={leafId:A,position:J},p=!0}}if(!E&&O.dataset.tabId){let A=O.dataset.leafId,J=parseInt(O.dataset.tabIndex||"0",10);if(A){let re=O.getBoundingClientRect(),q=r-re.left<re.width/2?"left":"right";Ue({leafId:A,panelId:O.dataset.tabId,index:J,side:q}),Xe.current={leafId:A,panelId:O.dataset.tabId,index:J,side:q},E=!0}}if(!h&&O.dataset.edgeTrigger&&(Ce(O.dataset.edgeTrigger),h=!0),p&&h&&E)break}p||(Oe(null),We.current=null),h||Ce(null),E||(Ue(null),Xe.current=null)},it=300,st=8,Ge=()=>{N(null),Oe(null),We.current=null,Ue(null),Xe.current=null,Ce(null)},Je=r=>a.isRtl?r==="left"?"right":r==="right"?"left":r:r,Nt=(r,x)=>{let u=We.current,p=Xe.current,h=Ye.current,E=ht.current;if(h)M(r,Je(h));else if(p){let O=p.index;p.side==="right"&&(O+=1);let A=Un(a.gridRoot,p.leafId);if(A){let J=A.panels.indexOf(r);J!==-1&&J<O&&(O-=1)}g(r,p.leafId,O)}else u?_(r,u.leafId,Je(u.position)):E?L(r,void 0,Lt?Ft(E):E):L(r,{x:x.clientX-150,y:x.clientY-15,width:450,height:350});Ze(null),Ge()},Vt=(r,x)=>{if(x.pointerType==="mouse"&&x.button!==0)return;x.preventDefault();let u=x.currentTarget,p=x.clientX,h=x.clientY;if(x.pointerType==="touch"){let E=x.pointerId,O=!1,A=()=>{O=!0,clearTimeout(re),u.removeEventListener("pointermove",J),u.removeEventListener("pointerup",A),u.removeEventListener("pointercancel",A)},J=q=>{Math.hypot(q.clientX-p,q.clientY-h)>st&&A()},re=setTimeout(()=>{if(O)return;u.removeEventListener("pointermove",J),u.removeEventListener("pointerup",A),u.removeEventListener("pointercancel",A);try{u.setPointerCapture(E)}catch{return}u.classList.add("rdd-long-press-active"),document.body.classList.add("rdd-dragging-active"),navigator.vibrate&&navigator.vibrate(10);let q=!1,oe=de=>{q||(q=!0,N(r)),Me({x:de.clientX,y:de.clientY}),zt(de.clientX,de.clientY)},ue=de=>{u.classList.remove("rdd-long-press-active"),document.body.classList.remove("rdd-dragging-active"),u.removeEventListener("pointermove",oe),u.removeEventListener("pointerup",ue),u.removeEventListener("pointercancel",ie),q?Nt(r,de):Dt(r,de)},ie=()=>{u.classList.remove("rdd-long-press-active"),document.body.classList.remove("rdd-dragging-active"),u.removeEventListener("pointermove",oe),u.removeEventListener("pointerup",ue),u.removeEventListener("pointercancel",ie),q&&Ge()};u.addEventListener("pointermove",oe),u.addEventListener("pointerup",ue),u.addEventListener("pointercancel",ie)},it);u.addEventListener("pointermove",J),u.addEventListener("pointerup",A),u.addEventListener("pointercancel",A)}else{let E=!1,O=re=>{let q=re.clientX-p,oe=re.clientY-h;!E&&(Math.abs(q)>5||Math.abs(oe)>5)&&(E=!0,N(r)),E&&Me({x:re.clientX,y:re.clientY})},A=re=>{document.body.classList.remove("rdd-dragging-active"),window.removeEventListener("pointermove",O),window.removeEventListener("pointerup",A),window.removeEventListener("pointercancel",J),E&&Nt(r,re)},J=()=>{document.body.classList.remove("rdd-dragging-active"),window.removeEventListener("pointermove",O),window.removeEventListener("pointerup",A),window.removeEventListener("pointercancel",J),E&&Ge()};document.body.classList.add("rdd-dragging-active"),window.addEventListener("pointermove",O),window.addEventListener("pointerup",A),window.addEventListener("pointercancel",J)}},Dt=(r,x)=>{x.preventDefault();let u=a.panels[r];if(!u)return;let h=I.get(u.component)?.defaultOptions,E=[];if(h?.canDrag!==!1&&E.push({label:fe(s.floatWindow,B),icon:Et.float,action:()=>L(r)}),h?.canMinimize!==!1&&E.push({label:fe(s.minimizePanel,B),icon:Et.minimize,action:()=>T(r)}),E.length>0&&h?.canClose!==!1&&E.push({separator:!0}),h?.canClose!==!1&&E.push({label:fe(s.closeTab,B),icon:Et.close,action:()=>k(r)}),E.length===0)return;let O=z(r),A=O.length>0?[...E,{separator:!0},...O]:E;m({event:x,items:A})},at=(r,x)=>{x.preventDefault(),$(null),m({event:x,items:[{label:fe(s.restorePanel,B),icon:Et.restore,action:()=>b(r)},{label:fe(s.maximizePanel,B),icon:Et.maximize,action:()=>C(r)},{separator:!0},{label:fe(s.closePanel,B),icon:Et.close,action:()=>k(r)}]})};(0,V.useEffect)(()=>{let r=Object.keys(a.panels);for(let x of Array.from(_t.keys()))r.includes(x)||_t.delete(x)},[a.panels]),(0,V.useEffect)(()=>{let r=()=>{a.draggedPanelId!==null&&(N(null),Oe(null),Ue(null))};return window.addEventListener("blur",r),()=>{window.removeEventListener("blur",r)}},[a.draggedPanelId]);let bt=(0,V.useRef)(null),[lt,pn]=(0,V.useState)({width:1024,height:768});(0,V.useEffect)(()=>{let r=bt.current;if(!r)return;let x=!1,u=new ResizeObserver(p=>{if(!p||p.length===0)return;let h=p[0].contentRect;if(process.env.NODE_ENV==="development"&&h.height<10&&!x){x=!0;let E=r,O=r.parentElement;for(;O&&O!==document.documentElement&&O.getBoundingClientRect().height<10;){E=O;O=O.parentElement}let A=E.tagName.toLowerCase(),J=E.id?` id="${E.id}"`:"",re=E.className?` class="${E.className}"`:"",q=E===r?"the WindowManager container itself":`a wrapper element: <${A}${J}${re}>`;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,O.useEffect)(()=>{if(t)return t._connect(yt),()=>{t._disconnect()}},[t,yt]);let gn=(0,O.useMemo)(()=>({getSnapshot:w,subscribeToState:$}),[w,$]);return(0,nt.jsx)(Hn.Provider,{value:pn,children:(0,nt.jsx)(Bn.Provider,{value:S,children:(0,nt.jsx)(Fn.Provider,{value:gn,children:(0,nt.jsx)(Mt.Provider,{value:M,children:(0,nt.jsx)(Zt.Provider,{value:yt,children:(0,nt.jsx)(An.Provider,{value:L||pt,children:(0,nt.jsx)(_n.Provider,{value:k,children:e})})})})})})})},On=e=>()=>{};function ze(e){let t=(0,O.useContext)(Mt),n=(0,O.useContext)(Fn),o=(0,O.useRef)(e);o.current=e;let c=(0,O.useSyncExternalStore)(e?n?.subscribeToState??On:On,()=>{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?c:t}var St=()=>{let e=(0,O.useContext)(Zt);if(!e)throw new Error("useWindowManagerActions must be used within WindowManagerProvider");return e},bn=()=>{let e=(0,O.useContext)(Zt);if(!e)throw new Error("useWindowManagerActionsInternal must be used within WindowManagerProvider");return e},He=()=>(0,O.useContext)(An)||(t=>{let n=t.defaultMessage||t.id;return t.values&&Object.entries(t.values).forEach(([o,c])=>{n=n.replace(`{${o}}`,String(c))}),n}),he=(e,t)=>e?typeof e=="string"?e:t(e):"",Gn=()=>{let{publish:e,subscribe:t}=St();return{publish:e,subscribe:t}},Ge=()=>(0,O.useContext)(_n),At=()=>mt().instanceId;function Yn(e){let t=(0,O.useContext)(Zt),n=At(),o=(0,O.useRef)(e);o.current=e,(0,O.useEffect)(()=>{if(!(!t?.registerPanelContextMenu||!n))return t.registerPanelContextMenu(n,()=>o.current)},[n,t?.registerPanelContextMenu])}var be=qt(require("react"),1),vn=require("react-dom"),le=require("react/jsx-runtime");function er(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 kt(e,t){return typeof e=="string"?e:t?t(e):e.defaultMessage??e.id}function yn(e){return"separator"in e}function Jt(e){return!yn(e)&&"items"in e}var Vn=(0,be.forwardRef)(({items:e,x:t,y:n,theme:o,fmt:c,onClose:s,onMouseEnter:I,onMouseLeave:b},T)=>((0,be.useLayoutEffect)(()=>{let y=T?.current;if(!y)return;let C=y.getBoundingClientRect(),P=8;C.right>window.innerWidth-P&&(y.style.left=`${Math.max(P,window.innerWidth-C.width-P)}px`,y.style.right="auto"),C.bottom>window.innerHeight-P&&(y.style.top=`${Math.max(P,window.innerHeight-C.height-P)}px`),C.left<P&&(y.style.left=`${P}px`,y.style.right="auto"),C.top<P&&(y.style.top=`${P}px`)}),(0,vn.createPortal)((0,le.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:I,onMouseLeave:b,children:e.map((y,C)=>{if(yn(y))return(0,le.jsx)("hr",{className:"rdd-context-menu__separator",role:"separator"},C);let P=y,S=P.checkbox&&P.checkbox.active!==!1,L=S&&P.checkbox.value,N=P.disabled===!0||(S?P.checkbox.enabled===!1:!1);return(0,le.jsxs)("button",{type:"button",className:`rdd-context-menu__item${N?" rdd-context-menu__item--disabled":""}`,title:P.title?kt(P.title,c):void 0,disabled:N,"data-cy-action":P.cyAction,onClick:()=>{N||(P.action?.(),s())},role:"menuitem","aria-checked":S?L:void 0,children:[P.icon?(0,le.jsx)("span",{className:"rdd-context-menu__icon",children:P.icon}):(0,le.jsx)("span",{className:"rdd-context-menu__icon","aria-hidden":"true"}),(0,le.jsx)("span",{className:"rdd-context-menu__label",children:kt(P.label,c)}),S&&(0,le.jsx)("span",{className:`rdd-context-menu__checkbox${L?" rdd-context-menu__checkbox--checked":""}`,"aria-hidden":"true",children:(0,le.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,le.jsx)("rect",{x:"0.75",y:"0.75",width:"10.5",height:"10.5",rx:"2",fill:"none",stroke:"currentColor",strokeWidth:"1.5"}),L&&(0,le.jsx)("path",{d:"M2.5 6 L4.5 8.5 L9.5 3.5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})]})})]},C)})}),document.body)));Vn.displayName="ContextMenuSubMenuPanel";var Xn={visible:!1,x:0,y:0,items:[]},Qt=(0,be.forwardRef)(({theme:e="dark",formatMessageProvider:t,onShow:n,onHide:o,onOpenChange:c,className:s,style:I},b)=>{let[T,y]=(0,be.useState)(Xn),[C,P]=(0,be.useState)(null),S=(0,be.useRef)(null),L=(0,be.useRef)(null),N=(0,be.useRef)(new Map),_=(0,be.useRef)({open:null,close:null}),g=be.default.useCallback(()=>{y(Xn),P(null),_.current.open&&clearTimeout(_.current.open),_.current.close&&clearTimeout(_.current.close),_.current.open=null,_.current.close=null,o?.(),c?.(!1)},[o,c]);if((0,be.useImperativeHandle)(b,()=>({show({event:l,x:k,y:W,items:K}){let j=l?er(l):{x:k??0,y:W??0};N.current.clear(),y({visible:!0,x:j.x,y:j.y,items:K}),P(null),n?.(),c?.(!0)}}),[n,c]),(0,be.useEffect)(()=>{if(!T.visible)return;let l=k=>{S.current?.contains(k.target)||L.current?.contains(k.target)||g()};return document.addEventListener("pointerdown",l,{capture:!0}),window.addEventListener("click",l),()=>{document.removeEventListener("pointerdown",l,{capture:!0}),window.removeEventListener("click",l)}},[T.visible,g]),(0,be.useEffect)(()=>{if(!T.visible)return;let l=k=>{k.key==="Escape"&&g()};return document.addEventListener("keydown",l),()=>document.removeEventListener("keydown",l)},[T.visible,g]),(0,be.useLayoutEffect)(()=>{if(!T.visible||!S.current)return;let l=S.current,k=l.getBoundingClientRect(),W=8;k.right>window.innerWidth-W&&(l.style.left=`${Math.max(W,window.innerWidth-k.width-W)}px`),k.bottom>window.innerHeight-W&&(l.style.top=`${Math.max(W,window.innerHeight-k.height-W)}px`),k.left<W&&(l.style.left=`${W}px`),k.top<W&&(l.style.top=`${W}px`)},[T.visible]),!T.visible)return null;let M=t,R=0,D=0;if(C!==null){let l=N.current.get(C);if(l){let k=l.getBoundingClientRect();R=document.documentElement.dir==="rtl"?window.innerWidth-k.left+2:k.right+2,D=k.top}}function m(){_.current.open&&(clearTimeout(_.current.open),_.current.open=null)}function w(){_.current.close&&(clearTimeout(_.current.close),_.current.close=null)}function $(l,k){w(),C!==null&&C!==l&&(m(),P(null)),Jt(k)&&k.items?.length?(m(),_.current.open=setTimeout(()=>{P(l)},150)):Jt(k)||(m(),C!==null&&(_.current.close=setTimeout(()=>P(null),200)))}function H(l){m(),Jt(l)&&l.items?.length&&(_.current.close=setTimeout(()=>P(null),200))}return(0,vn.createPortal)((0,le.jsxs)(le.Fragment,{children:[(0,le.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,...I},role:"menu","aria-orientation":"vertical",children:T.items.map((l,k)=>{if(yn(l))return(0,le.jsx)("hr",{className:"rdd-context-menu__separator",role:"separator"},k);if(Jt(l))return(0,le.jsxs)("button",{ref:ne=>{N.current.set(k,ne)},type:"button",className:`rdd-context-menu__item rdd-context-menu__item--has-submenu${C===k?" rdd-context-menu__item--submenu-open":""}`,title:l.title?kt(l.title,M):void 0,onMouseEnter:()=>$(k,l),onMouseLeave:()=>H(l),role:"menuitem","aria-haspopup":"true","aria-expanded":C===k,children:[(0,le.jsx)("span",{className:"rdd-context-menu__icon","aria-hidden":"true"}),(0,le.jsx)("span",{className:"rdd-context-menu__label",children:kt(l.label,M)}),(0,le.jsx)("span",{className:"rdd-context-menu__chevron","aria-hidden":"true",children:"\u203A"})]},k);let W=l,K=W.checkbox&&W.checkbox.active!==!1,j=K&&W.checkbox.value,fe=W.disabled===!0||(K?W.checkbox.enabled===!1:!1);return(0,le.jsxs)("button",{ref:ne=>{N.current.set(k,ne)},type:"button",className:`rdd-context-menu__item${fe?" rdd-context-menu__item--disabled":""}`,title:W.title?kt(W.title,M):void 0,disabled:fe,"data-cy-action":W.cyAction,onClick:()=>{fe||(W.action?.(),g())},onMouseEnter:()=>$(k,l),onMouseLeave:()=>H(l),role:"menuitem","aria-checked":K?j:void 0,children:[W.icon?(0,le.jsx)("span",{className:"rdd-context-menu__icon",children:W.icon}):(0,le.jsx)("span",{className:"rdd-context-menu__icon","aria-hidden":"true"}),(0,le.jsx)("span",{className:"rdd-context-menu__label",children:kt(W.label,M)}),K&&(0,le.jsx)("span",{className:`rdd-context-menu__checkbox${j?" rdd-context-menu__checkbox--checked":""}`,"aria-hidden":"true",children:(0,le.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,le.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,le.jsx)("path",{d:"M2.5 6 L4.5 8.5 L9.5 3.5",stroke:"white",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})]})})]},k)})}),C!==null&&(()=>{let l=T.items[C];return(0,le.jsx)(Vn,{ref:L,items:l.items??[],x:R,y:D,theme:e,fmt:M,onClose:g,onMouseEnter:()=>w(),onMouseLeave:()=>{_.current.close=setTimeout(()=>P(null),200)}})})()]}),document.body)});Qt.displayName="ContextMenu";var bt={Component:Qt},Et=be.default.createContext(null),en=({adapter:e=bt,children:t,...n})=>{let o=(0,be.useRef)(null),[c,s]=be.default.useState(!1),I=be.default.useCallback(b=>{o.current?.show(b)},[]);return(0,le.jsxs)(Et.Provider,{value:{show:I,isOpen:c},children:[t,(0,le.jsx)(e.Component,{ref:o,...n,onShow:()=>{s(!0),n.onShow?.()},onHide:()=>{s(!1),n.onHide?.()}})]})};function Kn(){let e=be.default.useContext(Et);if(!e)throw new Error("useShowContextMenu must be used within a ContextMenuProvider");return e.show}var Pe=require("react"),xn=require("react/jsx-runtime"),tr=0,Pn=()=>`panel-${++tr}-${Date.now()}`,tn=new Map,qn={leftPanel:null,rightPanel:null,modals:[]},jn=(0,Pe.createContext)(null),Zn=(0,Pe.createContext)(null),nn=({children:e})=>{let[t,n]=(0,Pe.useState)(qn),o=(0,Pe.useRef)(t);o.current=t;let c=(0,Pe.useCallback)((g,M)=>{tn.set(g,M)},[]),s=(0,Pe.useCallback)(g=>{tn.delete(g)},[]),I=(0,Pe.useCallback)(async(g,M,R={})=>{let D=o.current.leftPanel;if(D){let $=tn.get(D.id);if($&&!await $())return null}let m=Pn(),w={id:m,Component:g,props:M,containerType:"left-panel",options:R};return n($=>({...$,leftPanel:w})),m},[]),b=(0,Pe.useCallback)(async(g,M,R={})=>{let D=o.current.rightPanel;if(D){let $=tn.get(D.id);if($&&!await $())return null}let m=Pn(),w={id:m,Component:g,props:M,containerType:"right-panel",options:R};return n($=>({...$,rightPanel:w})),m},[]),T=(0,Pe.useCallback)((g,M,R={})=>{let D=Pn(),m=M.title,w={...R,title:R.title||m||"Confirmation"},$={id:D,Component:g,props:M,containerType:"modal",options:w};return n(H=>({...H,modals:[...H.modals,$]})),D},[]),y=(0,Pe.useCallback)(g=>{n(M=>({leftPanel:M.leftPanel?.id===g?null:M.leftPanel,rightPanel:M.rightPanel?.id===g?null:M.rightPanel,modals:M.modals.filter(R=>R.id!==g)}))},[]),C=(0,Pe.useCallback)(()=>{n(qn)},[]),P=(0,Pe.useCallback)(()=>{n(g=>({...g,modals:[]}))},[]),S=(0,Pe.useCallback)(g=>t.leftPanel?.id===g?t.leftPanel:t.rightPanel?.id===g?t.rightPanel:t.modals.find(M=>M.id===g),[t]),L=(0,Pe.useCallback)((g,M)=>{n(R=>({leftPanel:R.leftPanel?.id===g?{...R.leftPanel,...M}:R.leftPanel,rightPanel:R.rightPanel?.id===g?{...R.rightPanel,...M}:R.rightPanel,modals:R.modals.map(D=>D.id===g?{...D,...M}:D)}))},[]),N=(0,Pe.useCallback)((g,M,R)=>{L(g,{dirty:M,dirtyOptions:R})},[L]),_=(0,Pe.useMemo)(()=>({openLeftPanel:I,openRightPanel:b,openModal:T,close:y,closeAll:C,closeAllModals:P,getInstance:S,updateInstance:L,setDirty:N,registerCloseHandler:c,unregisterCloseHandler:s}),[I,b,T,y,C,P,S,L,N,c,s]);return(0,xn.jsx)(jn.Provider,{value:t,children:(0,xn.jsx)(Zn.Provider,{value:_,children:e})})},Ze=()=>{let e=(0,Pe.useContext)(jn);if(!e)throw new Error("usePanelState must be used within PanelProvider");return e},ot=()=>{let e=(0,Pe.useContext)(Zn);if(!e)throw new Error("usePanelActions must be used within PanelProvider");return e};var Ft=require("react");var Be=require("react/jsx-runtime"),nr=({title:e,message:t,alert:n,alertType:o="info",useYesNoTitles:c=!1,onOK:s,onCancel:I})=>{let{requestClose:b,setIcon:T,setTitle:y}=mt(),C=He(),P=Ge(),S=(0,Ft.useRef)(null);(0,Ft.useEffect)(()=>{if(e){let R=typeof e=="string"?e:C(e);y(R)}T&&T((0,Be.jsx)("span",{children:"\u2753"}))},[e,y,T,C]),(0,Ft.useEffect)(()=>{S.current?.focus({preventScroll:!0})},[]);let L=typeof t=="string"?t:C(t),N=C(c?P.no:P.cancel),_=C(c?P.yes:P.ok),g=R=>{R.preventDefault(),s?.(),b()},M=()=>{I?.(),b()};return(0,Be.jsxs)("form",{onSubmit:g,className:"rdd-confirmation-form-body",children:[n&&(0,Be.jsxs)("div",{className:`rdd-confirmation-alert confirmation-alert-${o}`,children:[(0,Be.jsx)("span",{children:"\u2139\uFE0F"}),(0,Be.jsx)("span",{children:n})]}),(0,Be.jsx)("div",{style:{fontSize:"0.9rem",color:"inherit",lineHeight:1.5},children:L}),(0,Be.jsx)("hr",{style:{marginTop:"0.5rem",marginBottom:"0.5rem",opacity:.1}}),(0,Be.jsxs)("div",{className:"rdd-confirmation-actions",children:[(0,Be.jsx)("button",{type:"button",className:"rdd-btn rdd-btn-sm rdd-btn-outline",onClick:M,children:N}),(0,Be.jsx)("button",{type:"submit",className:"rdd-btn rdd-btn-sm rdd-btn-primary",ref:S,children:_})]})]})},rt=nr;function _t(e){return e==="top-left"?"top-right":e==="top-right"?"top-left":e==="bottom-left"?"bottom-right":"bottom-left"}function Ue(e){let{element:t,pointerId:n,startClientX:o,startClientY:c,captureStart:s,onMove:I,onEnd:b,activeClasses:T}=e;t.setPointerCapture(n),T?.forEach(({el:S,classes:L})=>S.classList.add(...L));let y=s(),C=S=>{I(S.clientX-o,S.clientY-c,y)},P=()=>{T?.forEach(({el:S,classes:L})=>S.classList.remove(...L)),t.removeEventListener("pointermove",C),t.removeEventListener("pointerup",P),t.removeEventListener("pointercancel",P),b?.(y)};t.addEventListener("pointermove",C),t.addEventListener("pointerup",P),t.addEventListener("pointercancel",P)}function It(e,t,n,o,c){let{minW:s,minH:I,maxW:b,maxH:T,minX:y,minY:C}=c,{x:P,y:S,w:L,h:N}=o;if(e.includes("e")&&(L=Math.max(s,Math.min(o.w+t,b??1/0))),e.includes("w")){let _=o.w-s,g=y!=null?-(o.x-y):-1/0,M=Math.max(g,Math.min(t,_));L=o.w-M,P=o.x+M}if(e.includes("s")&&(N=Math.max(I,Math.min(o.h+n,T??1/0))),e.includes("n")){let _=o.h-I,g=C!=null?-(o.y-C):-1/0,M=Math.max(g,Math.min(n,_));N=o.h-M,S=o.y+M}return{x:P,y:S,w:L,h:N}}var on=require("react");function rn(){let[e,t]=(0,on.useState)(()=>document.documentElement.getAttribute("data-color-scheme")==="light"?"light":"dark");return(0,on.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 f=require("react/jsx-runtime"),Un=(e,t)=>{if(!e)return null;if(e.type==="leaf")return e.id===t?e:null;for(let n of e.children){let o=Un(n,t);if(o)return o}return null},Ht=new Map,sn="preserved-dom-container",wn=(0,f.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,f.jsx)("rect",{x:"3",y:"3",width:"7",height:"9",rx:"1"}),(0,f.jsx)("rect",{x:"14",y:"3",width:"7",height:"5",rx:"1"}),(0,f.jsx)("rect",{x:"14",y:"12",width:"7",height:"9",rx:"1"}),(0,f.jsx)("rect",{x:"3",y:"16",width:"7",height:"5",rx:"1"})]}),Lt={float:(0,f.jsx)("span",{className:"rdd-menu-icon",children:(0,f.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,f.jsx)("rect",{x:"2",y:"8",width:"14",height:"14",rx:"1"}),(0,f.jsx)("rect",{x:"8",y:"2",width:"14",height:"14",rx:"1"})]})}),minimize:(0,f.jsx)("span",{className:"rdd-menu-icon",children:(0,f.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",style:{display:"block"},children:(0,f.jsx)("line",{x1:"4",y1:"18",x2:"20",y2:"18"})})}),restore:(0,f.jsx)("span",{className:"rdd-menu-icon",children:(0,f.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,f.jsx)("rect",{x:"4",y:"4",width:"16",height:"16",rx:"1"})})}),maximize:(0,f.jsx)("span",{className:"rdd-menu-icon",children:(0,f.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,f.jsx)("rect",{x:"2",y:"2",width:"20",height:"20",rx:"1"})})}),close:(0,f.jsx)("span",{className:"rdd-menu-icon",children:(0,f.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,f.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})},Jn=e=>{let t=Ht.get(e);return t||(t=document.createElement("div"),t.style.width="100%",t.style.height="100%",Ht.set(e,t)),t},or=(e,t,n)=>{let o=t.component,c=n.get(o);if(!c)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,f.jsxs)("div",{className:"rdd-unregistered-panel",style:{border:"2px dashed #dc3545"},children:[(0,f.jsx)("h6",{style:{fontWeight:700,marginBottom:"0.25rem"},children:"\u26A0\uFE0F Component Unregistered"}),(0,f.jsxs)("span",{style:{fontSize:"0.875rem",color:"var(--rdd-text-secondary, #94a3b8)"},children:["Key: ",o]})]});let s=c.Component;return(0,f.jsx)(s,{...t.props??{},panelId:e})},Rn=new Map,it=new Map,vt=e=>{let t=it.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},it.set(e,t)),t},Qn=({panelId:e})=>{let t=(0,V.useRef)(null);return(0,V.useEffect)(()=>{let n=t.current;if(!n)return;let o=Jn(e);n.appendChild(o);let c=new ResizeObserver(s=>{for(let I of s){let{width:b,height:T}=I.contentRect;if(b>0&&T>0){Rn.set(e,{width:b,height:T});let y=it.get(e);y&&y.onResize.forEach(C=>C(b,T))}}});return c.observe(n),()=>{c.disconnect();let s=document.getElementById(sn);s||(s=document.createElement("div"),s.id=sn,s.style.display="none",document.body.appendChild(s)),s.appendChild(o)}},[e]),(0,f.jsx)("div",{ref:t,style:{width:"100%",height:"100%"}})},rr=({panelId:e})=>{let t=ze(),n=Tt(),o=He(),c=(0,V.useRef)(null),s=t.panels[e],I=s?n.get(s.component):null,b=I?.defaultOptions?.disableLivePreview||!1,T=Rn.get(e)||{width:800,height:500},y=T.width,C=T.height,L=Math.min(220/y,140/C);if((0,V.useEffect)(()=>{if(b)return;let N=c.current;if(!N)return;let _=Ht.get(e);if(_)return N.appendChild(_),()=>{let g=document.getElementById(sn);g||(g=document.createElement("div"),g.id=sn,g.style.display="none",document.body.appendChild(g)),g.appendChild(_)}},[e,b]),b){let N=y*L,_=C*L,g=s?.title||I?.defaultOptions?.title||"Panel",M=he(g,o),R=(Array.from(M)[0]||"P").toUpperCase();return(0,f.jsx)("div",{className:"rdd-taskbar-item-preview-frame",style:{width:`${N}px`,height:`${_}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,f.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,f.jsx)("div",{className:"rdd-taskbar-item-preview-frame",style:{width:`${y*L}px`,height:`${C*L}px`},children:(0,f.jsx)("div",{ref:c,className:"rdd-taskbar-item-preview-host",style:{width:`${y}px`,height:`${C}px`,transform:`scale(${L})`,transformOrigin:"top left",position:"absolute",top:0,left:0,"--rdd-preview-scale":L}})})},ir=({panelId:e,children:t})=>{let n=ze(),{requestClosePanel:o,setPanelDirty:c,registerCloseGuard:s,unregisterCloseGuard:I,registerStateProvider:b,unregisterStateProvider:T,updatePanelTitle:y,minimizePanel:C}=St(),P=n.minimized.some(m=>m.id===e),S=(0,V.useRef)(P);(0,V.useEffect)(()=>{let m=it.get(e);m&&(P&&!S.current?m.onMinimize.forEach(w=>w()):!P&&S.current&&m.onRestore.forEach(w=>w()),S.current=P)},[P,e]);let L=n.activePanelId===e,N=(0,V.useRef)(L);(0,V.useEffect)(()=>{let m=N.current;N.current=L;let w=it.get(e);w&&(L&&!m?w.onActivate.forEach($=>$()):!L&&m&&w.onDeactivate.forEach($=>$()))},[L,e]);let _=n.panels[e]?.state,g=_==="floating"?"floating-window":"dockable-panel",M=(0,V.useRef)(g);(0,V.useEffect)(()=>{if(_==="minimized")return;let m=M.current;M.current=g;let w=it.get(e);w&&g!==m&&w.onContainerTypeChange.forEach($=>$(g))},[g,_,e]),(0,V.useEffect)(()=>()=>{let m=it.get(e);m&&(N.current&&m.onDeactivate.forEach(w=>w()),m.onClose.forEach(w=>w()),it.delete(e))},[e]);let R=(0,V.useRef)(g),D=V.default.useMemo(()=>({requestClose:m=>o(e,m),setDirty:m=>c(e,m),onCloseRequested:m=>(s(e,m),()=>I(e)),registerStateProvider:m=>(b(e,m),()=>T(e)),setTitle:m=>y(e,m),instanceId:e,containerType:R.current,onClose:m=>{let w=vt(e);return w.onClose.add(m),()=>w.onClose.delete(m)},onMinimize:m=>{let w=vt(e);return w.onMinimize.add(m),()=>w.onMinimize.delete(m)},onRestore:m=>{let w=vt(e);return w.onRestore.add(m),()=>w.onRestore.delete(m)},onResize:m=>{let w=vt(e);return w.onResize.add(m),()=>w.onResize.delete(m)},requestMinimize:()=>C(e),getDimensions:()=>Rn.get(e)??null,onActivate:m=>{let w=vt(e);return w.onActivate.add(m),()=>w.onActivate.delete(m)},onDeactivate:m=>{let w=vt(e);return w.onDeactivate.add(m),()=>w.onDeactivate.delete(m)},onContainerTypeChange:m=>{let w=vt(e);return w.onContainerTypeChange.add(m),()=>w.onContainerTypeChange.delete(m)}}),[e,o,c,s,I,b,T,y,C]);return(0,f.jsx)(tt,{value:D,children:t})},eo=({node:e,path:t,onTabRightClick:n,activeDropZone:o,onHoverDropZone:c,onTabDragStart:s,hoveredTab:I,onTabHover:b,defaultPanelIcon:T,onRequestClosePanel:y})=>{let{updateSplitSizes:C}=St();if(e.type==="leaf")return(0,f.jsx)(sr,{leaf:e,onTabRightClick:n,activeDropZone:o,onHoverDropZone:c,onTabDragStart:s,hoveredTab:I,onTabHover:b,defaultPanelIcon:T,onRequestClosePanel:y});let P=e.orientation==="horizontal",S=(L,N)=>{N.preventDefault();let _=N.currentTarget,g=_.parentElement,M=g?P?g.clientWidth:g.clientHeight:P?1e3:800;Ue({element:_,pointerId:N.pointerId,startClientX:N.clientX,startClientY:N.clientY,captureStart:()=>[...e.sizes],activeClasses:[{el:_,classes:["rdd-active"]},{el:document.body,classes:["rdd-resizing-active",P?"rdd-resizing-col-active":"rdd-resizing-row-active"]}],onMove:(R,D,m)=>{let w=(P?R:D)/M,$=[...m];$[L]+=w,$[L+1]-=w,$[L]>.1&&$[L+1]>.1&&C(t,$)}})};return(0,f.jsx)("div",{style:{display:"flex",flexDirection:P?"row":"column",width:"100%",height:"100%",overflow:"hidden",position:"relative"},children:e.children.map((L,N)=>{let _=e.sizes[N]*100;return(0,f.jsxs)(V.default.Fragment,{children:[(0,f.jsx)("div",{style:{flexGrow:e.sizes[N],flexBasis:`${_}%`,overflow:"hidden",position:"relative",minWidth:0,minHeight:0},children:(0,f.jsx)(eo,{node:L,path:[...t,N],onTabRightClick:n,activeDropZone:o,onHoverDropZone:c,onTabDragStart:s,hoveredTab:I,onTabHover:b,defaultPanelIcon:T,onRequestClosePanel:y})}),N<e.children.length-1&&(0,f.jsx)("div",{onPointerDown:g=>S(N,g),style:{cursor:P?"col-resize":"row-resize",width:P?"1px":"100%",height:P?"100%":"1px",zIndex:20},className:"rdd-resizer-bar"})]},N)})})},sr=({leaf:e,onTabRightClick:t,activeDropZone:n,onHoverDropZone:o,onTabDragStart:c,hoveredTab:s,onTabHover:I,defaultPanelIcon:b,onRequestClosePanel:T})=>{let y=ze(),C=Tt(),{openPanel:P,closeLeafGroup:S,setActivePanel:L}=bn(),N=He(),_=Ge(),{windowClass:g,windowBodyClass:M}=je(),R=(0,V.useRef)(null),[D,m]=(0,V.useState)({left:!1,right:!1}),w=(0,V.useCallback)(()=>{let l=R.current;l&&m({left:l.scrollLeft>0,right:l.scrollLeft<l.scrollWidth-l.clientWidth-1})},[]);(0,V.useEffect)(()=>{let l=R.current;if(!l)return;l.addEventListener("scroll",w,{passive:!0});let k=new ResizeObserver(w);return k.observe(l),w(),()=>{l.removeEventListener("scroll",w),k.disconnect()}},[w]);let $=l=>{R.current?.scrollBy({left:l==="left"?-120:120,behavior:"smooth"})},H=l=>{P(l,y.panels[l].component),L(l)};return(0,f.jsxs)("div",{"data-active-panel-id":e.activePanelId||"",className:`rdd-workspace-panel ${g??""}`,style:{overflow:"hidden",position:"relative"},children:[(0,f.jsxs)("div",{className:"rdd-workspace-tab-bar",style:{minHeight:"38px"},children:[D.left&&(0,f.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,f.jsx)("div",{ref:R,className:"rdd-tab-headers-container",style:{scrollbarWidth:"none"},onPointerMove:l=>{y.draggedPanelId&&l.target===l.currentTarget&&I(e.id,"EMPTY",e.panels.length,"right")},onPointerLeave:l=>{y.draggedPanelId&&l.target===l.currentTarget&&I(e.id,"",-1,null)},children:e.panels.map((l,k)=>{let W=y.panels[l];if(!W)return null;let K=e.activePanelId===l,j=y.activePanelId===l,ne=C.get(W.component)?.defaultOptions,ve=s&&s.leafId===e.id&&s.panelId===l,ie=k===e.panels.length-1,U=s&&s.leafId===e.id&&s.panelId==="EMPTY"&&ie,B=ve?s.side==="left"?"rdd-drag-hover-left":"rdd-drag-hover-right":U?"rdd-drag-hover-right":"",z=K?j?"rdd-active rdd-workspace-tab-active-focused":"rdd-active rdd-workspace-tab-active-unfocused":"rdd-workspace-tab-inactive";return(0,f.jsxs)("div",{"data-tab-id":l,"data-leaf-id":e.id,"data-tab-index":String(k),onClick:()=>H(l),onPointerDown:X=>{ne?.canDrag!==!1&&c(l,X)},onContextMenu:X=>t(l,X),onPointerMove:X=>{if(y.draggedPanelId&&X.pointerType!=="touch"){let oe=X.currentTarget.getBoundingClientRect(),ye=X.clientX-oe.left<oe.width/2?"left":"right";I(e.id,l,k,ye)}},onPointerLeave:()=>{y.draggedPanelId&&I(e.id,"",-1,null)},className:`rdd-workspace-tab ${z} ${B}`,style:{cursor:ne?.canDrag===!1?"default":"pointer"},children:[(0,f.jsxs)("span",{className:"rdd-text-truncate",style:{maxWidth:"120px",display:"flex",alignItems:"center"},children:[(0,f.jsx)("span",{className:"rdd-workspace-tab-icon",children:ne?.icon||b||wn}),(0,f.jsxs)("span",{children:[he(W.title,N),W.dirty?" *":""]})]}),ne?.renderHeaderActions&&(0,f.jsx)("span",{className:"rdd-tab-header-actions",onClick:X=>X.stopPropagation(),onPointerDown:X=>X.stopPropagation(),children:ne.renderHeaderActions(l)}),ne?.canClose!==!1&&(0,f.jsx)("span",{onClick:X=>{X.stopPropagation(),T(l)},title:he(_.closeTab,N),className:"rdd-close-tab-x",style:{width:"18px",height:"18px",...ne?.renderHeaderActions?{}:{marginInlineStart:"auto"}},children:(0,f.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,f.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]},l)})}),D.right&&(0,f.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,f.jsx)("span",{onClick:()=>S(e.id),className:"rdd-close-tab-x rdd-header-close-empty-group",style:{width:"18px",height:"18px",cursor:"pointer"},title:he(_.closeEmptyGroup,N),children:(0,f.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,f.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),(0,f.jsxs)("div",{className:`rdd-panel-body ${M??""}`,style:{position:"relative",overflow:"hidden"},children:[e.activePanelId&&y.panels[e.activePanelId]?(0,f.jsx)(Qn,{panelId:e.activePanelId},e.activePanelId):(0,f.jsx)("div",{className:"rdd-empty-leaf-placeholder",children:(0,f.jsx)("span",{children:"Empty Workspace Section"})}),y.draggedPanelId!==null&&(()=>{let l=k=>n?.leafId===e.id&&n.position===k;return(0,f.jsx)("div",{className:"rdd-dock-drop-zone-overlay",children:(0,f.jsxs)("div",{className:"rdd-dock-target-cross",children:[(0,f.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${l("top")?" rdd-dock-target-box--active":""}`,children:"\u25B2"}),(0,f.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${l("bottom")?" rdd-dock-target-box--active":""}`,children:"\u25BC"}),(0,f.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${l("left")?" rdd-dock-target-box--active":""}`,children:"\u25C0"}),(0,f.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${l("right")?" rdd-dock-target-box--active":""}`,children:"\u25B6"}),(0,f.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${l("center")?" rdd-dock-target-box--active":""}`,children:"\u25A3"})]})})})(),y.draggedPanelId!==null&&n!==null&&n.leafId===e.id&&(0,f.jsx)("div",{className:"rdd-dock-preview-highlight",style:(()=>{let l=n.position,k=`${y.splitRatio*100}%`,W=`${(1-y.splitRatio)*100}%`;return{left:l==="right"?W:"0",top:l==="bottom"?W:"0",width:l==="left"||l==="right"?k:"100%",height:l==="top"||l==="bottom"?k:"100%"}})()})]})]})},ar=({skin:e="vscode",defaultPanelIcon:t,taskbarVisibility:n="always",contextMenuAdapter:o=bt,animations:c=!0})=>{let s=ze(),I=Tt(),{restorePanel:b,minimizePanel:T,requestClosePanel:y,maximizePanel:C,updateFloatingPosition:P,focusPanel:S,floatPanel:L,setDraggedPanelId:N,dockPanelToGroup:_,movePanelOrder:g,dockPanelToWorkspaceEdge:M,setActivePanel:R,getPanelContextMenuItems:D,showContextMenu:m,registerContextMenuFn:w}=bn(),{openModal:$}=ot(),H=He(),l=Ge(),k=V.default.useCallback(r=>{let x=s.panels[r];y(r,{onConfirm:u=>new Promise(p=>{let h=u||x?.dirtyOptions,E=x?he(x.title,H):"Panel";$(rt,{title:h?.title||l.unsavedChangesTitle,message:h?.message||{id:l.unsavedChangesMessage.id,defaultMessage:l.unsavedChangesMessage.defaultMessage,values:{title:E}},alert:h?.alert,alertType:h?.alertType||"danger",useYesNoTitles:!0,onOK:()=>p(!0),onCancel:()=>p(!1)},{size:"small"})})})},[y,s.panels,H,$,l]),{windowClass:W,windowBodyClass:K}=je(),j=(0,V.useContext)(Et),fe=(0,V.useRef)(null);(0,V.useEffect)(()=>w(j!==null?r=>j.show(r):r=>fe.current?.show(r)),[j,w]);let ne=(0,V.useRef)(null),[ve,ie]=(0,V.useState)(!1),U=(0,V.useRef)(null),B=(0,V.useRef)(s.minimized.length),[z,X]=(0,V.useState)(null),oe=(0,V.useRef)(null),ee=(0,V.useRef)("mouse"),[ye,we]=(0,V.useState)(!1),Re=j!==null?j.isOpen:ye;(0,V.useEffect)(()=>()=>{oe.current&&clearTimeout(oe.current)},[]),(0,V.useEffect)(()=>{z&&(s.minimized.some(x=>x.id===z.id)||X(null))},[s.minimized,z]),(0,V.useEffect)(()=>{if(!z?.fromTouch)return;let r=x=>{x.pointerType!=="touch"||document.querySelector(".rdd-taskbar-item-tooltip")?.contains(x.target)||X(null)};return document.addEventListener("pointerdown",r,{capture:!0}),()=>document.removeEventListener("pointerdown",r,{capture:!0})},[z?.fromTouch]);let[We,Oe]=(0,V.useState)(null),Ne=(0,V.useRef)(null),[Ye,Ae]=(0,V.useState)({x:0,y:0}),[Xe,at]=(0,V.useState)(null),te=(0,V.useRef)(null),pe=r=>{at(r),te.current=r},[Fe,$e]=(0,V.useState)(null),Ke=(0,V.useRef)(null),_e=r=>{$e(r),Ke.current=r},lt=(0,V.useContext)(Mt)?.isRtl??!1,[Gt,Qe]=(0,V.useState)(null),qe=(0,V.useRef)(null),Yt=(r,x,u,p)=>{let h=p?{leafId:r,panelId:x,index:u,side:p}:null;Qe(h),qe.current=h},Xt=(r,x)=>{let u=x?{leafId:r,position:x}:null;Oe(u),Ne.current=u,u&&(pe(null),_e(null))},zt=(r,x)=>{let u=document.elementsFromPoint(r,x),p=!1,h=!1,E=!1;for(let A of u)if(A instanceof HTMLElement){if(!p&&A.dataset.dropZone){let F=A.dataset.leafId;if(F){let J=A.dataset.dropZone;Oe({leafId:F,position:J}),Ne.current={leafId:F,position:J},p=!0}}if(!E&&A.dataset.tabId){let F=A.dataset.leafId,J=parseInt(A.dataset.tabIndex||"0",10);if(F){let se=A.getBoundingClientRect(),q=r-se.left<se.width/2?"left":"right";Qe({leafId:F,panelId:A.dataset.tabId,index:J,side:q}),qe.current={leafId:F,panelId:A.dataset.tabId,index:J,side:q},E=!0}}if(!h&&A.dataset.edgeTrigger&&(pe(A.dataset.edgeTrigger),h=!0),p&&h&&E)break}p||(Oe(null),Ne.current=null),h||pe(null),E||(Qe(null),qe.current=null)},dt=300,ct=8,Ve=()=>{N(null),Oe(null),Ne.current=null,Qe(null),qe.current=null,pe(null)},et=r=>s.isRtl?r==="left"?"right":r==="right"?"left":r:r,Dt=(r,x)=>{let u=Ne.current,p=qe.current,h=te.current,E=Ke.current;if(h)M(r,et(h));else if(p){let A=p.index;p.side==="right"&&(A+=1);let F=Un(s.gridRoot,p.leafId);if(F){let J=F.panels.indexOf(r);J!==-1&&J<A&&(A-=1)}g(r,p.leafId,A)}else u?_(r,u.leafId,et(u.position)):E?L(r,void 0,lt?_t(E):E):L(r,{x:x.clientX-150,y:x.clientY-15,width:450,height:350});_e(null),Ve()},Vt=(r,x)=>{if(x.pointerType==="mouse"&&x.button!==0)return;x.preventDefault();let u=x.currentTarget,p=x.clientX,h=x.clientY;if(x.pointerType==="touch"){let E=x.pointerId,A=!1,F=()=>{A=!0,clearTimeout(se),u.removeEventListener("pointermove",J),u.removeEventListener("pointerup",F),u.removeEventListener("pointercancel",F)},J=q=>{Math.hypot(q.clientX-p,q.clientY-h)>ct&&F()},se=setTimeout(()=>{if(A)return;u.removeEventListener("pointermove",J),u.removeEventListener("pointerup",F),u.removeEventListener("pointercancel",F);try{u.setPointerCapture(E)}catch{return}u.classList.add("rdd-long-press-active"),document.body.classList.add("rdd-dragging-active"),navigator.vibrate&&navigator.vibrate(10);let q=!1,re=de=>{q||(q=!0,N(r)),Ae({x:de.clientX,y:de.clientY}),zt(de.clientX,de.clientY)},ce=de=>{u.classList.remove("rdd-long-press-active"),document.body.classList.remove("rdd-dragging-active"),u.removeEventListener("pointermove",re),u.removeEventListener("pointerup",ce),u.removeEventListener("pointercancel",ae),q?Dt(r,de):Wt(r,de)},ae=()=>{u.classList.remove("rdd-long-press-active"),document.body.classList.remove("rdd-dragging-active"),u.removeEventListener("pointermove",re),u.removeEventListener("pointerup",ce),u.removeEventListener("pointercancel",ae),q&&Ve()};u.addEventListener("pointermove",re),u.addEventListener("pointerup",ce),u.addEventListener("pointercancel",ae)},dt);u.addEventListener("pointermove",J),u.addEventListener("pointerup",F),u.addEventListener("pointercancel",F)}else{let E=!1,A=se=>{let q=se.clientX-p,re=se.clientY-h;!E&&(Math.abs(q)>5||Math.abs(re)>5)&&(E=!0,N(r)),E&&Ae({x:se.clientX,y:se.clientY})},F=se=>{document.body.classList.remove("rdd-dragging-active"),window.removeEventListener("pointermove",A),window.removeEventListener("pointerup",F),window.removeEventListener("pointercancel",J),E&&Dt(r,se)},J=()=>{document.body.classList.remove("rdd-dragging-active"),window.removeEventListener("pointermove",A),window.removeEventListener("pointerup",F),window.removeEventListener("pointercancel",J),E&&Ve()};document.body.classList.add("rdd-dragging-active"),window.addEventListener("pointermove",A),window.addEventListener("pointerup",F),window.addEventListener("pointercancel",J)}},Wt=(r,x)=>{x.preventDefault();let u=s.panels[r];if(!u)return;let h=I.get(u.component)?.defaultOptions,E=[];if(h?.canDrag!==!1&&E.push({label:he(l.floatWindow,H),icon:Lt.float,action:()=>L(r)}),h?.canMinimize!==!1&&E.push({label:he(l.minimizePanel,H),icon:Lt.minimize,action:()=>T(r)}),E.length>0&&h?.canClose!==!1&&E.push({separator:!0}),h?.canClose!==!1&&E.push({label:he(l.closeTab,H),icon:Lt.close,action:()=>k(r)}),E.length===0)return;let A=D(r),F=A.length>0?[...E,{separator:!0},...A]:E;m({event:x,items:F})},ut=(r,x)=>{x.preventDefault(),X(null),m({event:x,items:[{label:he(l.restorePanel,H),icon:Lt.restore,action:()=>b(r)},{label:he(l.maximizePanel,H),icon:Lt.maximize,action:()=>C(r)},{separator:!0},{label:he(l.closePanel,H),icon:Lt.close,action:()=>k(r)}]})};(0,V.useEffect)(()=>{let r=Object.keys(s.panels);for(let x of Array.from(Ht.keys()))r.includes(x)||Ht.delete(x)},[s.panels]),(0,V.useEffect)(()=>{let r=()=>{s.draggedPanelId!==null&&(N(null),Oe(null),Qe(null))};return window.addEventListener("blur",r),()=>{window.removeEventListener("blur",r)}},[s.draggedPanelId]);let yt=(0,V.useRef)(null),[pt,pn]=(0,V.useState)({width:1024,height:768});(0,V.useEffect)(()=>{let r=yt.current;if(!r)return;let x=!1,u=new ResizeObserver(p=>{if(!p||p.length===0)return;let h=p[0].contentRect;if(process.env.NODE_ENV==="development"&&h.height<10&&!x){x=!0;let E=r,A=r.parentElement;for(;A&&A!==document.documentElement&&A.getBoundingClientRect().height<10;){E=A;A=A.parentElement}let F=E.tagName.toLowerCase(),J=E.id?` id="${E.id}"`:"",se=E.className?` class="${E.className}"`:"",q=E===r?"the WindowManager container itself":`a wrapper element: <${F}${J}${se}>`;console.warn(`[react-dockable-desktop] Workspace height is 0px \u2014 the workspace will be invisible.
6
6
 
7
7
  Zero height found at: ${q}
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.`)}pn({width:Math.max(100,h.width),height:Math.max(100,h.height)})});return u.observe(r),()=>{u.disconnect()}},[]),(0,V.useEffect)(()=>{let r=lt.width,x=lt.height;a.floating.forEach(u=>{let p=typeof u.width=="string"?parseFloat(u.width):u.width,h=typeof u.height=="string"?parseFloat(u.height):u.height,E=typeof u.x=="string"?parseFloat(u.x):u.x,O=typeof u.y=="string"?parseFloat(u.y):u.y,A=p,J=h,re=E,q=O,oe=!1;if(A>r&&(A=Math.max(200,r-20),oe=!0),J>x&&(J=Math.max(150,x-40),oe=!0),!u.anchor){let ue=r-100;re>ue&&(re=Math.max(0,ue),oe=!0);let ie=x-40;q>ie&&(q=Math.max(0,ie),oe=!0)}oe&&P(u.id,{x:re,y:q,width:A,height:J})})},[lt,a.floating,P]),(0,V.useEffect)(()=>{let r=x=>{if(x.button!==0)return;let u=x.target;if(!u||typeof u.closest!="function")return;let p=u.closest(".rdd-floating-window");if(p){let E=p.getAttribute("data-window-id");E&&(w(E),S(E));return}let h=u.closest(".rdd-workspace-panel");if(h){let E=h.getAttribute("data-active-panel-id");E&&w(E)}};return document.addEventListener("pointerdown",r),()=>{document.removeEventListener("pointerdown",r)}},[S,w]);let gn=(r,x)=>{x.preventDefault();let u=a.floating.find(q=>q.id===r);if(!u||u.maximized)return;S(r);let p=x.currentTarget,h=p.closest(".rdd-floating-window"),E=x.clientX,O=x.clientY,A=h?h.offsetLeft:0,J=h?h.offsetTop:0,re=()=>{let q=We.current,oe=Xe.current,ue=Ye.current,ie=ht.current;if(ie)P(r,{anchor:Lt?Ft(ie):ie});else if(ue)M(r,Je(ue));else if(oe){let de=oe.index;oe.side==="right"&&(de+=1),g(r,oe.leafId,de)}else q&&_(r,q.leafId,Je(q.position));Ze(null),Ge()};if(x.pointerType==="touch"){let q=x.pointerId,oe=!1,ue=()=>{oe=!0,clearTimeout(de),p.removeEventListener("pointermove",ie),p.removeEventListener("pointerup",ue),p.removeEventListener("pointercancel",ue)},ie=pe=>{Math.hypot(pe.clientX-E,pe.clientY-O)>st&&ue()},de=setTimeout(()=>{if(oe)return;p.removeEventListener("pointermove",ie),p.removeEventListener("pointerup",ue),p.removeEventListener("pointercancel",ue);try{p.setPointerCapture(q)}catch{return}p.classList.add("rdd-long-press-active"),document.body.classList.add("rdd-dragging-active"),N(r);let pe=vt=>{let yt=vt.clientX-E,Pt=vt.clientY-O;P(r,{x:A+yt,y:J+Pt,anchor:null}),zt(vt.clientX,vt.clientY)},Te=()=>{p.classList.remove("rdd-long-press-active"),document.body.classList.remove("rdd-dragging-active"),p.removeEventListener("pointermove",pe),p.removeEventListener("pointerup",Te),p.removeEventListener("pointercancel",dt),re()},dt=()=>{p.classList.remove("rdd-long-press-active"),document.body.classList.remove("rdd-dragging-active"),p.removeEventListener("pointermove",pe),p.removeEventListener("pointerup",Te),p.removeEventListener("pointercancel",dt),Ge()};p.addEventListener("pointermove",pe),p.addEventListener("pointerup",Te),p.addEventListener("pointercancel",dt)},it);p.addEventListener("pointermove",ie),p.addEventListener("pointerup",ue),p.addEventListener("pointercancel",ue)}else{let q=!1,oe=de=>{let pe=de.clientX-E,Te=de.clientY-O;!q&&(Math.abs(pe)>5||Math.abs(Te)>5)&&(q=!0,N(r)),q&&P(r,{x:A+pe,y:J+Te,anchor:null})},ue=()=>{document.body.classList.remove("rdd-dragging-active"),window.removeEventListener("pointermove",oe),window.removeEventListener("pointerup",ue),window.removeEventListener("pointercancel",ie),q&&re()},ie=()=>{document.body.classList.remove("rdd-dragging-active"),window.removeEventListener("pointermove",oe),window.removeEventListener("pointerup",ue),window.removeEventListener("pointercancel",ie),q&&Ge()};document.body.classList.add("rdd-dragging-active"),window.addEventListener("pointermove",oe),window.addEventListener("pointerup",ue),window.addEventListener("pointercancel",ie)}},i=(r,x,u)=>{u.preventDefault(),u.stopPropagation();let p=a.floating.find(pe=>pe.id===r);if(!p||p.maximized)return;S(r);let h=u.currentTarget,E=h.closest(".rdd-floating-window"),O={x:E?E.offsetLeft:0,y:E?E.offsetTop:0,w:E?E.offsetWidth:400,h:E?E.offsetHeight:300},A=lt.width,J=lt.height,re=typeof p.x=="string"?parseFloat(p.x):p.x,q=typeof p.y=="string"?parseFloat(p.y):p.y,oe=typeof p.width=="string"?parseFloat(p.width):p.width,ue=typeof p.height=="string"?parseFloat(p.height):p.height,ie=x==="se"&&Math.abs(re+oe-A)<4,de=x==="se"&&Math.abs(q+ue-J)<4;qe({element:h,pointerId:u.pointerId,startClientX:u.clientX,startClientY:u.clientY,captureStart:()=>O,activeClasses:[{el:document.body,classes:["rdd-resizing-active"]}],onMove:(pe,Te,dt)=>{let vt=kt(x,pe,Te,dt,{minW:200,minH:150}),{x:yt,y:Pt,w:mn,h:fn}=vt;ie&&(yt=A-mn,yt<0&&(yt=0,mn=A)),de&&(Pt=J-fn,Pt<0&&(Pt=0,fn=J)),P(r,{x:yt,y:Pt,width:mn,height:fn})}})},v=r=>{if(ee.current){let x=r==="left"?-150:150;ee.current.scrollBy({left:x,behavior:"smooth"})}},d=(0,V.useCallback)(()=>{j.current&&clearTimeout(j.current),se(!0)},[]),l=(0,V.useCallback)(()=>{j.current=setTimeout(()=>se(!1),400)},[]);(0,V.useEffect)(()=>{n==="autohide"&&a.minimized.length>F.current&&(j.current&&clearTimeout(j.current),se(!0),j.current=setTimeout(()=>se(!1),2e3)),F.current=a.minimized.length},[a.minimized.length,n]);let G=rn();return(0,V.useEffect)(()=>(e?document.documentElement.setAttribute("data-workspace-skin",e):document.documentElement.removeAttribute("data-workspace-skin"),()=>{document.documentElement.removeAttribute("data-workspace-skin")}),[e]),(0,V.useEffect)(()=>(G==="light"?document.documentElement.setAttribute("data-color-scheme","light"):document.documentElement.removeAttribute("data-color-scheme"),()=>{document.documentElement.removeAttribute("data-color-scheme")}),[G]),(0,V.useEffect)(()=>(c?document.documentElement.classList.remove("rdd-no-animations"):document.documentElement.classList.add("rdd-no-animations"),()=>{document.documentElement.classList.remove("rdd-no-animations")}),[c]),(0,f.jsxs)("div",{className:`rdd-workspace${c?"":" 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:a.dir,children:[(0,f.jsxs)("div",{ref:bt,className:a.draggedPanelId?"rdd-dragging-active":void 0,style:{flexGrow:1,width:"100%",position:"relative",overflow:"hidden"},children:[a.draggedPanelId!==null&&(0,f.jsxs)(f.Fragment,{children:[(0,f.jsx)("div",{"data-edge-trigger":"left",className:"rdd-workspace-edge-trigger rdd-edge-trigger-left",onPointerEnter:()=>Ce("left"),onPointerLeave:()=>Ce(null)}),(0,f.jsx)("div",{"data-edge-trigger":"right",className:"rdd-workspace-edge-trigger rdd-edge-trigger-right",onPointerEnter:()=>Ce("right"),onPointerLeave:()=>Ce(null)}),(0,f.jsx)("div",{"data-edge-trigger":"top",className:"rdd-workspace-edge-trigger rdd-edge-trigger-top",onPointerEnter:()=>Ce("top"),onPointerLeave:()=>Ce(null)}),(0,f.jsx)("div",{"data-edge-trigger":"bottom",className:"rdd-workspace-edge-trigger rdd-edge-trigger-bottom",onPointerEnter:()=>Ce("bottom"),onPointerLeave:()=>Ce(null)})]}),a.draggedPanelId!==null&&["top-left","top-right","bottom-left","bottom-right"].map(r=>(0,f.jsx)("div",{className:`rdd-corner-zone rdd-corner-zone--${r}${ft===r?" rdd-corner-zone--hovered":""}`,onPointerEnter:()=>{Ze(r),Ce(null)},onPointerLeave:()=>Ze(null),"aria-hidden":"true"},r)),a.draggedPanelId!==null&&Ie!==null&&(0,f.jsx)("div",{className:"rdd-workspace-edge-preview",style:(()=>{let r=`${a.edgeSplitRatio*100}%`;switch(Ie){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,f.jsx)("div",{style:{width:"100%",height:"100%",overflow:"hidden",position:"relative"},children:a.gridRoot?(0,f.jsx)(eo,{node:a.gridRoot,path:[],onTabRightClick:Dt,activeDropZone:De,onHoverDropZone:Xt,onTabDragStart:Vt,hoveredTab:Gt,onTabHover:Yt,defaultPanelIcon:t,onRequestClosePanel:k}):(0,f.jsx)("div",{className:"rdd-empty-workspace-grid",children:"Grid Empty"})}),a.floating.map(r=>{let x=a.panels[r.id];if(!x)return null;let u=r.maximized,p=a.draggedPanelId===r.id,h=a.activePanelId===r.id,O=I.get(x.component)?.defaultOptions;return(0,f.jsxs)("div",{"data-window-id":r.id,dir:a.dir,onPointerDownCapture:()=>{w(r.id),S(r.id)},className:`rdd-floating-window ${u?"rdd-maximized":""} ${h?"rdd-window-focused":""} ${Y??""}`,style:(()=>{let re=typeof r.width=="number"?`${r.width}px`:r.width,q=typeof r.height=="number"?`${r.height}px`:r.height;if(u)return{position:"absolute",left:0,top:0,width:"100%",height:"100%",zIndex:r.z,pointerEvents:p?"none":"auto"};if(r.anchor){let oe=a.floating.filter(Te=>Te.anchor===r.anchor&&!Te.maximized),ue=oe.findIndex(Te=>Te.id===r.id),ie=8;for(let Te=0;Te<ue;Te++){let dt=typeof oe[Te].height=="number"?oe[Te].height:parseFloat(oe[Te].height);ie+=dt+8}let de=r.anchor.startsWith("top");return{position:"absolute",[r.anchor.endsWith("-right")?"insetInlineEnd":"insetInlineStart"]:8,[de?"top":"bottom"]:ie,width:re,height:q,zIndex:r.z,transition:p?"none":"top 0.2s ease, bottom 0.2s ease",pointerEvents:p?"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:re,height:q,zIndex:r.z,pointerEvents:p?"none":"auto"}})(),children:[(0,f.jsxs)("div",{onDoubleClick:()=>C(r.id),onPointerDown:A=>{O?.canDrag!==!1&&gn(r.id,A)},className:"rdd-floating-window-titlebar rdd-cursor-move",style:{cursor:u||O?.canDrag===!1?"default":"move"},children:[(0,f.jsxs)("span",{className:"rdd-floating-window-title",children:[(0,f.jsx)("span",{className:"rdd-window-title-icon",children:O?.icon||t||wn}),(0,f.jsxs)("span",{children:[fe(x.title,B),x.dirty?" *":""]})]}),(0,f.jsxs)("div",{className:"rdd-titlebar-actions",style:{gap:"var(--rdd-header-button-gap, 4px)"},onPointerDown:A=>A.stopPropagation(),children:[O?.renderHeaderActions&&(0,f.jsx)("div",{className:"rdd-window-header-actions",children:O.renderHeaderActions(r.id)}),z(r.id).length>0&&(0,f.jsx)("button",{type:"button",className:"rdd-custom-tab-btn rdd-btn-more-actions",title:"More actions",onClick:A=>{A.stopPropagation();let J=z(r.id);J.length!==0&&m({event:A,items:J})},children:(0,f.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"currentColor",style:{display:"block"},children:[(0,f.jsx)("circle",{cx:"12",cy:"5",r:"2"}),(0,f.jsx)("circle",{cx:"12",cy:"12",r:"2"}),(0,f.jsx)("circle",{cx:"12",cy:"19",r:"2"})]})}),(0,f.jsx)("button",{type:"button",title:u?fe(s.restoreSize,B):fe(s.maximize,B),onClick:()=>C(r.id),className:"rdd-custom-tab-btn rdd-btn-maximize-tab",children:(0,f.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,f.jsx)("rect",{x:"4",y:"4",width:"16",height:"16",rx:"1.5"})})}),O?.canMinimize!==!1&&(0,f.jsx)("button",{type:"button",title:fe(s.minimize,B),onClick:()=>T(r.id),className:"rdd-custom-tab-btn rdd-btn-minimize-tab",children:(0,f.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"3",children:(0,f.jsx)("path",{d:"M5 12h14"})})}),O?.canClose!==!1&&(0,f.jsx)("button",{type:"button",title:fe(s.close,B),onClick:()=>k(r.id),className:"rdd-custom-tab-btn rdd-btn-close-tab",children:(0,f.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"3",children:(0,f.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]})]}),(0,f.jsx)("div",{className:K??void 0,style:{flexGrow:1,width:"100%",overflow:"hidden",position:"relative",isolation:"isolate"},children:(0,f.jsx)(Qn,{panelId:r.id},r.id)}),!u&&(0,f.jsxs)(f.Fragment,{children:[(0,f.jsx)("div",{onPointerDown:A=>i(r.id,"n",A),className:"rdd-resize-handle rdd-resize-n"}),(0,f.jsx)("div",{onPointerDown:A=>i(r.id,"ne",A),className:"rdd-resize-handle rdd-resize-ne"}),(0,f.jsx)("div",{onPointerDown:A=>i(r.id,"e",A),className:"rdd-resize-handle rdd-resize-e"}),(0,f.jsx)("div",{onPointerDown:A=>i(r.id,"se",A),className:"rdd-resize-handle rdd-resize-se"}),(0,f.jsx)("div",{onPointerDown:A=>i(r.id,"s",A),className:"rdd-resize-handle rdd-resize-s"}),(0,f.jsx)("div",{onPointerDown:A=>i(r.id,"sw",A),className:"rdd-resize-handle rdd-resize-sw"}),(0,f.jsx)("div",{onPointerDown:A=>i(r.id,"w",A),className:"rdd-resize-handle rdd-resize-w"}),(0,f.jsx)("div",{onPointerDown:A=>i(r.id,"nw",A),className:"rdd-resize-handle rdd-resize-nw"})]})]},r.id)})]}),(n==="always"||a.minimized.length>0)&&(0,f.jsxs)("div",{className:["rdd-taskbar-footer-container",`taskbar-mode-${n}`,n==="autohide"&&xe?"rdd-taskbar-expanded":""].filter(Boolean).join(" "),style:{height:"48px",zIndex:100},onPointerEnter:n==="autohide"?d:void 0,onPointerLeave:n==="autohide"?l:void 0,children:[n==="autohide"&&(0,f.jsx)("div",{className:"rdd-taskbar-peek-handle"}),(0,f.jsx)("button",{type:"button",onClick:()=>v("left"),className:"rdd-taskbar-nav-btn",style:{display:a.minimized.length>4?"block":"none"},children:"\u25C0"}),(0,f.jsx)("div",{ref:ee,className:"rdd-taskbar-items-container",style:{scrollSnapType:"x mandatory"},children:a.minimized.map(r=>{let u=I.get(r.component)?.defaultOptions?.icon||t||wn;return(0,f.jsx)("div",{onClick:()=>{ce.current!=="touch"&&($(null),b(r.id))},onContextMenu:p=>at(r.id,p),onPointerDown:p=>{if(ce.current=p.pointerType,p.pointerType!=="touch")return;let h=p.currentTarget,E=p.clientX,O=p.clientY,A=p.pointerId,J=!1,re=()=>{J=!0,clearTimeout(ue),h.removeEventListener("pointermove",oe),h.removeEventListener("pointerup",q),h.removeEventListener("pointercancel",re)},q=()=>{re();let ie=h.getBoundingClientRect();D?.id===r.id?(b(r.id),$(null)):$({id:r.id,rect:ie,title:r.title,component:r.component,fromTouch:!0})},oe=ie=>{Math.hypot(ie.clientX-E,ie.clientY-O)>st&&re()},ue=setTimeout(()=>{if(J)return;h.removeEventListener("pointermove",oe),h.removeEventListener("pointerup",q),h.removeEventListener("pointercancel",re);try{h.setPointerCapture(A)}catch{return}navigator.vibrate&&navigator.vibrate(10);let ie=de=>{h.removeEventListener("pointerup",ie),h.removeEventListener("pointercancel",ie),at(r.id,de)};h.addEventListener("pointerup",ie),h.addEventListener("pointercancel",ie)},it);h.addEventListener("pointermove",oe),h.addEventListener("pointerup",q),h.addEventListener("pointercancel",re)},onPointerEnter:p=>{if(p.pointerType==="touch"||Re)return;ne.current&&clearTimeout(ne.current);let h=p.currentTarget.getBoundingClientRect();p.clientX>=h.left&&p.clientX<=h.right&&p.clientY>=h.top&&p.clientY<=h.bottom&&$({id:r.id,rect:h,title:r.title,component:r.component})},onPointerLeave:p=>{p.pointerType!=="touch"&&(ne.current=setTimeout(()=>{$(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,f.jsx)("span",{className:"rdd-taskbar-item-icon",children:u})},r.id)})}),D&&(0,Cn.createPortal)((0,f.jsxs)("div",{className:"rdd-taskbar-item-tooltip",dir:a.dir,style:{position:"fixed",left:`${D.rect.left+D.rect.width/2}px`,top:`${D.rect.top-8}px`,transform:"translateX(-50%) translateY(-100%)",opacity:1,pointerEvents:"auto",zIndex:999999},onPointerEnter:()=>{ne.current&&clearTimeout(ne.current)},onPointerLeave:r=>{r.pointerType!=="touch"&&$(null)},onClick:()=>{b(D.id),$(null)},onContextMenu:r=>at(D.id,r),onPointerDown:r=>{if(r.pointerType!=="touch")return;let x=D.id,u=r.currentTarget,p=r.clientX,h=r.clientY,E=r.pointerId,O=!1,A=()=>{O=!0,clearTimeout(re),u.removeEventListener("pointermove",J),u.removeEventListener("pointerup",A),u.removeEventListener("pointercancel",A)},J=q=>{Math.hypot(q.clientX-p,q.clientY-h)>st&&A()},re=setTimeout(()=>{if(O)return;u.removeEventListener("pointermove",J),u.removeEventListener("pointerup",A),u.removeEventListener("pointercancel",A);try{u.setPointerCapture(E)}catch{return}navigator.vibrate&&navigator.vibrate(10);let q=oe=>{u.removeEventListener("pointerup",q),u.removeEventListener("pointercancel",q),at(x,oe)};u.addEventListener("pointerup",q),u.addEventListener("pointercancel",q)},it);u.addEventListener("pointermove",J),u.addEventListener("pointerup",A),u.addEventListener("pointercancel",A)},children:[(0,f.jsxs)("div",{className:"rdd-tooltip-header-row",children:[(0,f.jsxs)("span",{className:"rdd-tooltip-title-text rdd-text-truncate",style:{maxWidth:"140px"},children:[fe(D.title,B),a.panels[D.id]?.dirty?" *":""]}),(0,f.jsx)("span",{onClick:r=>{r.stopPropagation(),k(D.id),$(null)},title:fe(s.closePanel,B),className:"rdd-tooltip-close-x",children:(0,f.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,f.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),(0,f.jsx)(rr,{panelId:D.id})]}),document.body),(0,f.jsx)("button",{type:"button",onClick:()=>v("right"),className:"rdd-taskbar-nav-btn",style:{display:a.minimized.length>4?"block":"none"},children:"\u25B6"})]}),Object.keys(a.panels).map(r=>{let x=a.panels[r];if(!x)return null;let u=Jn(r);return(0,Cn.createPortal)((0,f.jsx)(ir,{panelId:r,children:(0,f.jsx)("div",{style:{width:"100%",height:"100%"},dir:a.dir,children:or(r,x,I)})}),u,r)}),U===null&&(0,f.jsx)(o.Component,{ref:ae,theme:"dark",formatMessageProvider:B,onShow:()=>we(!0),onHide:()=>we(!1)}),a.draggedPanelId!==null&&!a.floating.some(r=>r.id===a.draggedPanelId)&&(0,f.jsxs)("div",{className:"rdd-drag-ghost-tab",style:{left:Q.x+12,top:Q.y+12,zIndex:1e5},children:["\u{1F4C4} ",fe(a.panels[a.draggedPanelId]?.title,B)||"Tab"]})]})},to=ar;var an=class{registry;initialState;config;_actions=null;_initialized=!1;_pendingCalls=[];_pendingOpenPanelIds=new Set;_pendingSubscriptions=[];_disconnectedWarnTimer=null;constructor(t={}){if(this.registry=new ut,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 c=this._pendingSubscriptions.indexOf(o);c!==-1&&this._pendingSubscriptions.splice(c,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(c=>c.dockPanelToGroup(t,n,o))}movePanelOrder(t,n,o){this._dispatch(c=>c.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(c=>c.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 lo=require("react");var je=require("react"),oo=require("react/jsx-runtime"),no=(0,je.createContext)(null),Ht=({children:e})=>{let[t,n]=(0,je.useState)({}),[o,c]=(0,je.useState)({}),a=(0,je.useMemo)(()=>({getActiveInGroup:I=>t[I]??null,setActiveInGroup:(I,b)=>n(T=>({...T,[I]:b})),isModifierActive:I=>o[I]??!1,setModifierActive:(I,b)=>c(T=>({...T,[I]:b})),toggleModifier:I=>c(b=>({...b,[I]:!b[I]}))}),[t,o]);return(0,oo.jsx)(no.Provider,{value:a,children:e})};function Bt(){let e=(0,je.useContext)(no);if(!e)throw new Error("useToolbar must be used within DockableDesktopProvider");return e}var Le=require("react");var ao=require("react/jsx-runtime");function lr(){let e=new Map,t=new Set,n=()=>t.forEach(o=>o());return{publish(o,c){return e.set(o,c),n(),()=>{e.get(o)===c&&(e.delete(o),n())}},get(o){return e.get(o)??null},subscribe(o){return t.add(o),()=>t.delete(o)}}}var Mn=(0,Le.createContext)(null),ln=({children:e})=>{let t=(0,Le.useMemo)(()=>lr(),[]);return(0,ao.jsx)(Mn.Provider,{value:t,children:e})};function ro(e){let t=Ot(),n=(0,Le.useContext)(Mn),o=(0,Le.useRef)(null);if(!n)throw new Error("usePanelContribution must be used within PanelContributionProvider");(0,Le.useLayoutEffect)(()=>{if(n)return o.current?.(),o.current=n.publish(t,e),()=>{o.current?.(),o.current=null}},[n,t,e])}function dn(){let e=Ae(c=>c.activePanelId),t=(0,Le.useContext)(Mn);if(!t)throw new Error("useActivePanelContribution must be used within PanelContributionProvider");let n=(0,Le.useCallback)(c=>t?t.subscribe(c):()=>{},[t]),o=()=>t&&e?t.get(e):null;return(0,Le.useSyncExternalStore)(n,o,o)}function Tn(e,t=null){return{id:e.id,label:e.label,icon:e.icon??t,renderContent:()=>e.content}}function io(e){let t=dn();return t?.toolbarItems?.length?[...e,{type:"separator"},...t.toolbarItems]:e}function so(e,t=null){let n=dn();return n?.sidebarSections?.length?[...e,...n.sidebarSections.map(o=>Tn(o,t))]:e}var It=require("react/jsx-runtime"),co=({contextMenuAdapter:e=gt,...t})=>{let n=(0,lo.useContext)(St),o=(0,It.jsx)(Ht,{children:(0,It.jsx)(Ut,{...t,children:(0,It.jsx)(ln,{children:(0,It.jsx)(nn,{children:t.children})})})});return n!==null?o:(0,It.jsx)(en,{adapter:e,formatMessageProvider:t.formatMessage,children:o})};var ze=require("react");var Se=require("react/jsx-runtime"),dr=({modal:e,index:t,isTopmost:n})=>{let{close:o,openModal:c,updateInstance:a,setDirty:I}=tt(),b=_e(),T=Be(),{dir:y}=Ae(),{modalClass:C,modalBodyClass:P}=Ve(),S=(0,ze.useRef)(null),{id:L,Component:N,props:_,options:g,dirty:M,dirtyOptions:w}=e,z=g,[m,R]=(0,ze.useState)(z.icon||null),H=(0,ze.useRef)(z);H.current=z;let B=fe(z.title,b),s=(0,ze.useCallback)(async F=>{if(F?.force){o(L);return}if(S.current){if(!await S.current())return;o(L);return}if(M){c(nt,{title:w?.title||T.unsavedChangesTitle,message:w?.message||{id:T.unsavedChangesMessage.id,defaultMessage:T.unsavedChangesMessage.defaultMessage,values:{title:B}},alert:w?.alert,alertType:w?.alertType||"danger",useYesNoTitles:!0,onOK:()=>o(L)},{size:"small"});return}o(L)},[o,c,L,M,w,B,T]),k=(0,ze.useCallback)((F,D)=>I(L,F,D),[I,L]),Y=(0,ze.useCallback)(F=>a(L,{options:{...H.current,title:F}}),[a,L]),K=(0,ze.useCallback)(F=>R(F),[]),U=(0,ze.useCallback)(F=>(S.current=F,()=>{S.current=null}),[]),ae=(0,ze.useMemo)(()=>({requestClose:s,setDirty:k,setTitle:Y,setIcon:K,onCloseRequested:U,containerType:"modal",instanceId:L}),[s,k,Y,K,U,L]),ee=M?`${B} *`:B,xe=z.size?`rdd-modal-size-${z.size}`:"rdd-modal-size-auto",se=z.closable!==!1;(0,ze.useEffect)(()=>{if(!n||!se)return;let F=D=>{D.key==="Escape"&&(D.stopPropagation(),s())};return document.addEventListener("keydown",F),()=>document.removeEventListener("keydown",F)},[s,se,n]);let j=`calc(var(--rdd-z-base, 1000) + 9000 + ${t*10})`;return(0,Se.jsxs)("div",{className:"rdd-modal-overlay",style:{zIndex:j},dir:y,children:[(0,Se.jsx)("div",{className:"rdd-modal-curtain",onClick:se?()=>s():void 0}),(0,Se.jsxs)("div",{className:`rdd-modal-window ${xe} ${C??""}`,children:[(0,Se.jsxs)("div",{className:"rdd-modal-header",children:[m&&(0,Se.jsx)("div",{className:"rdd-modal-icon",children:m}),(0,Se.jsx)("h4",{className:"rdd-modal-title",children:ee}),se&&(0,Se.jsx)("button",{className:"rdd-modal-close-button",onClick:()=>s(),title:b(T.closeTooltip),type:"button",children:(0,Se.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,Se.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),(0,Se.jsx)("div",{className:`rdd-modal-body ${P??""}`,children:(0,Se.jsx)(Qe,{value:ae,children:(0,Se.jsx)(N,{..._,panelId:L})})})]})]})},cr=()=>{let{modals:e}=Ke();return e.length===0?null:(0,Se.jsx)(Se.Fragment,{children:e.map((t,n)=>(0,Se.jsx)(dr,{modal:t,index:n,isTopmost:n===e.length-1},t.id))})},uo=cr;var ke=require("react");var cn=require("react");function po(e){let[t,n]=(0,cn.useState)(null);return(0,cn.useLayoutEffect)(()=>{let o=e.current?.parentElement;if(!o)return;let c=()=>{let I=o.getBoundingClientRect();n({top:I.top,left:I.left,right:window.innerWidth-I.right,height:I.height})};c();let a=new ResizeObserver(c);return a.observe(o),window.addEventListener("resize",c),()=>{a.disconnect(),window.removeEventListener("resize",c)}},[e]),t}var ye=require("react/jsx-runtime"),un=({panel:e,position:t,defaultWidth:n,containerRect:o})=>{let{close:c,openModal:a,updateInstance:I,setDirty:b,registerCloseHandler:T,unregisterCloseHandler:y}=tt(),{modals:C}=Ke(),P=_e(),S=Be(),{dir:L}=Ae(),{sidePanelClass:N,sidePanelBodyClass:_}=Ve(),g=(0,ke.useRef)(null),{id:M,Component:w,props:z,options:m,dirty:R,dirtyOptions:H}=e,B=m,[s,k]=(0,ke.useState)(B.icon||null),Y=(0,ke.useRef)(B);Y.current=B;let K=fe(B.title,P),U=(0,ke.useCallback)(async ce=>{if(ce?.force){c(M);return}if(g.current){if(!await g.current())return;c(M);return}if(R){a(nt,{title:H?.title||S.unsavedChangesTitle,message:H?.message||{id:S.unsavedChangesMessage.id,defaultMessage:S.unsavedChangesMessage.defaultMessage,values:{title:K}},alert:H?.alert,alertType:H?.alertType||"danger",useYesNoTitles:!0,onOK:()=>c(M)},{size:"small"});return}c(M)},[c,a,M,R,H,K,S]),ae=(0,ke.useCallback)(async()=>g.current?await g.current():!R,[R]);(0,ke.useEffect)(()=>(T(M,ae),()=>y(M)),[M,ae,T,y]);let ee=(0,ke.useCallback)((ce,be)=>b(M,ce,be),[b,M]),xe=(0,ke.useCallback)(ce=>I(M,{options:{...Y.current,title:ce}}),[I,M]),se=(0,ke.useCallback)(ce=>k(ce),[]),j=(0,ke.useCallback)(ce=>(g.current=ce,()=>{g.current=null}),[]),F=(0,ke.useMemo)(()=>({requestClose:U,setDirty:ee,setTitle:xe,setIcon:se,onCloseRequested:j,containerType:t==="left"?"left-panel":"right-panel",instanceId:M}),[U,ee,xe,se,j,t,M]),D=R?`${K} *`:K;(0,ke.useEffect)(()=>{let ce=be=>{be.key==="Escape"&&C.length===0&&U()};return document.addEventListener("keydown",ce),()=>document.removeEventListener("keydown",ce)},[U,C.length]);let $=B.width||n||400,ne=typeof $=="number"?`${$}px`:$;return(0,ye.jsx)("div",{className:`rdd-side-panel rdd-side-panel-${t} rdd-side-panel-visible ${N??""}`,style:{width:ne,...o?{top:o.top,height:o.height,bottom:"auto",...t==="right"?{right:o.right}:{left:o.left}}:{}},dir:L,children:(0,ye.jsxs)("div",{className:"rdd-side-panel-window",children:[(0,ye.jsxs)("div",{className:"rdd-side-panel-header",children:[s&&(0,ye.jsx)("div",{className:"rdd-side-panel-icon",children:s}),(0,ye.jsx)("h4",{className:"rdd-side-panel-title",children:D}),(0,ye.jsx)("button",{className:"rdd-side-panel-close-button",onClick:()=>U(),title:P(S.closeTooltip),type:"button",children:(0,ye.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,ye.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),(0,ye.jsx)("div",{className:`rdd-side-panel-body ${_??""}`,children:(0,ye.jsx)(Qe,{value:F,children:(0,ye.jsx)(w,{...z,panelId:M})})})]})})},Sn=({children:e})=>{let t=(0,ke.useRef)(null),n=po(t);return(0,ye.jsx)("div",{ref:t,style:{display:"contents"},children:e(n)})},ur=({defaultWidth:e})=>{let{leftPanel:t,rightPanel:n}=Ke();return(0,ye.jsx)(Sn,{children:o=>(0,ye.jsxs)(ye.Fragment,{children:[t&&(0,ye.jsx)(un,{panel:t,position:"left",defaultWidth:e,containerRect:o},t.id),n&&(0,ye.jsx)(un,{panel:n,position:"right",defaultWidth:e,containerRect:o},n.id)]})})},go=({defaultWidth:e})=>{let{leftPanel:t}=Ke();return(0,ye.jsx)(Sn,{children:n=>t?(0,ye.jsx)(un,{panel:t,position:"left",defaultWidth:e,containerRect:n},t.id):null})},mo=({defaultWidth:e})=>{let{rightPanel:t}=Ke();return(0,ye.jsx)(Sn,{children:n=>t?(0,ye.jsx)(un,{panel:t,position:"right",defaultWidth:e,containerRect:n},t.id):null})},fo=ur;var te=qt(require("react"),1);var ge=require("react/jsx-runtime");function kn(e){return"renderContent"in e}function pr(e){return"render"in e}function ho(e){return e==null?[]:Array.isArray(e)?e:[e]}var yo=(0,te.createContext)(null),Po=(0,te.createContext)(null);function gr({tabId:e,onClose:t,onOpen:n,setActiveTabId:o,children:c}){let a=(0,te.useMemo)(()=>({tabId:e,onClose:t,onOpen:n,openTab:I=>o(I)}),[e,t,n,o]);return(0,ge.jsx)(Po.Provider,{value:a,children:c})}function bo(e,t,n,o){if(pr(e))return(0,ge.jsx)(te.default.Fragment,{children:e.render()},e.id??t);if(kn(e)){let c=n===e.id;return(0,ge.jsx)("button",{type:"button",onClick:()=>o(e.id),className:`rdd-sidebar-tab-btn${c?" rdd-active":""}`,title:e.label,"aria-pressed":c,children:e.icon},e.id)}return(0,ge.jsx)("button",{type:"button",onClick:e.onClick,disabled:e.disabled,className:"rdd-sidebar-tab-btn rdd-sidebar-header-action-btn",title:e.label,"aria-label":e.label,children:e.icon},e.id??t)}var vo=(0,te.memo)(function({tabs:t,headerEntries:n,footerEntries:o,activeTabId:c,isVisible:a,position:I,onTabClick:b}){return(0,ge.jsx)("div",{style:{width:a?"56px":"0px",height:"100%",overflow:"hidden",transition:"width 0.25s cubic-bezier(0.4, 0, 0.2, 1)",flexShrink:0},children:(0,ge.jsxs)("div",{className:`rdd-sidebar-tabs-strip rdd-${I}${n.length?" rdd-sidebar-tabs-strip--has-header-action":""}${o.length?" rdd-sidebar-tabs-strip--has-footer-action":""}`,style:{width:"56px",height:"100%"},children:[n.length>0&&(0,ge.jsx)("div",{className:"rdd-sidebar-header-area",children:n.map((T,y)=>bo(T,y,c,b))}),(0,ge.jsx)("div",{className:"rdd-sidebar-tabs-list",children:t.map(T=>{let y=c===T.id;return(0,ge.jsx)("button",{type:"button",onClick:()=>b(T.id),className:`rdd-sidebar-tab-btn${y?" rdd-active":""}`,title:T.label,"aria-pressed":y,children:T.icon},T.id)})}),o.length>0&&(0,ge.jsx)("div",{className:"rdd-sidebar-footer-area",children:o.map((T,y)=>bo(T,y,c,b))})]})})});function mr({position:e,currentWidth:t,minWidth:n,maxWidth:o,onWidthChange:c,rootRef:a}){return(0,ge.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,y=[{el:T,classes:["rdd-active"]},{el:document.body,classes:["rdd-resizing-active","rdd-resizing-col-active"]}];a.current&&y.push({el:a.current,classes:["rdd-sidebar-resizing"]}),qe({element:T,pointerId:b.pointerId,startClientX:b.clientX,startClientY:b.clientY,captureStart:()=>t,activeClasses:y,onMove:(C,P,S)=>{let L=e==="right"?S-C:S+C;c(Math.max(n,Math.min(o,L)))}})}})}var xo=(0,te.forwardRef)(function({position:t="right",tabs:n,headerAction:o,footerAction:c,defaultWidth:a,minWidth:I=150,maxWidth:b=600,onWidthChange:T,activeTabId:y,onActiveTabChange:C,visible:P,onVisibilityChange:S,stripVisible:L,onStripVisibilityChange:N,showCloseButton:_=!1,children:g},M){let w=y!==void 0,[z,m]=(0,te.useState)(()=>a??280),R=(0,te.useCallback)(Q=>{m(Q),T?.(Q)},[T]),[H,B]=(0,te.useState)(null),s=w?y:H,k=(0,te.useMemo)(()=>ho(o),[o]),Y=(0,te.useMemo)(()=>ho(c),[c]),K=(0,te.useMemo)(()=>k.filter(kn),[k]),U=(0,te.useMemo)(()=>Y.filter(kn),[Y]),ae=(0,te.useMemo)(()=>[...K,...n,...U],[K,n,U]),[ee,xe]=(0,te.useState)(()=>new Set),se=(0,te.useMemo)(()=>{let Q=new Set(ee);s&&Q.add(s);for(let Me of ae)Me.eagerMount&&Q.add(Me.id);return Q},[ee,s,ae]),j=(0,te.useRef)(s??null);(0,te.useEffect)(()=>{j.current=s??null},[s]);let F=(0,te.useRef)(z);(0,te.useEffect)(()=>{F.current=z},[z]);let D=(0,te.useRef)(null),$=(0,te.useCallback)(Q=>{xe(Q!==null?Me=>{if(Me.has(Q))return Me;let Ie=new Set(Me);return Ie.add(Q),Ie}:Me=>{let Ie=!1,$e=new Set(Me);for(let Ye of Me){let Ce=ae.find(ft=>ft.id===Ye);Ce&&!Ce.eagerMount&&!Ce.preserveState&&($e.delete(Ye),Ie=!0)}return Ie?$e:Me}),w||B(Q),C?.(Q)},[w,C,ae]);(0,te.useEffect)(()=>{s!=null&&!ae.some(Q=>Q.id===s)&&$(null)},[s,ae,$]),(0,te.useImperativeHandle)(M,()=>({openTab:Q=>$(Q),closeDrawer:()=>$(null),getActiveTab:()=>j.current,show:()=>S?.(!0),hide:()=>S?.(!1),toggle:()=>S?.(P===!1),showStrip:()=>N?.(!0),hideStrip:()=>N?.(!1),setWidth:Q=>R(Math.max(I,Math.min(b,Q))),getWidth:()=>F.current}),[$,P,S,N,R,I,b]);let ne=(0,te.useCallback)(Q=>{$(s===Q?null:Q)},[s,$]),ce=(0,te.useCallback)(()=>$(null),[$]),be=(0,te.useMemo)(()=>({openTab:Q=>$(Q),closeDrawer:()=>$(null),getActiveTab:()=>j.current}),[$]),we=P!==!1,Re=we&&L!==!1,De=we&&s!=null,Oe=(0,ge.jsx)("div",{className:`rdd-sidebar-content-drawer rdd-${t}`,style:{flexBasis:De?`${z}px`:"0px",flexShrink:1,flexGrow:0,minWidth:De?`${I}px`:"0px",maxWidth:De?`${b}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:ae.map(Q=>{if(!se.has(Q.id))return null;let Ie=s===Q.id,$e=()=>$(Q.id);return(0,ge.jsxs)("div",{style:{display:Ie?"flex":"none",flexDirection:"column",height:"100%",width:"100%"},children:[(0,ge.jsxs)("div",{className:"rdd-sidebar-drawer-header",children:[(0,ge.jsx)("span",{className:"rdd-sidebar-header-title",children:Q.label}),_&&(0,ge.jsx)("button",{type:"button",className:"rdd-sidebar-drawer-close-button",onClick:ce,title:"Close","aria-label":"Close",children:(0,ge.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,ge.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),(0,ge.jsx)("div",{className:"rdd-sidebar-drawer-body",children:(0,ge.jsx)(gr,{tabId:Q.id,onClose:ce,onOpen:$e,setActiveTabId:$,children:Q.renderContent(Q.id,ce,$e)})})]},Q.id)})}),We=De?(0,ge.jsx)(mr,{position:t,currentWidth:z,minWidth:I,maxWidth:b,onWidthChange:R,rootRef:D}):null;return(0,ge.jsx)(yo.Provider,{value:be,children:(0,ge.jsxs)("div",{ref:D,style:{display:"flex",flexDirection:"row",width:"100%",height:"100%",overflow:"hidden"},children:[t==="left"&&(0,ge.jsx)(vo,{tabs:n,headerEntries:k,footerEntries:Y,activeTabId:s,isVisible:Re,position:t,onTabClick:ne}),t==="left"&&Oe,t==="left"&&We,(0,ge.jsx)("div",{style:{flex:"1 1 0%",minWidth:0,overflow:"hidden"},children:g}),t==="right"&&We,t==="right"&&Oe,t==="right"&&(0,ge.jsx)(vo,{tabs:n,headerEntries:k,footerEntries:Y,activeTabId:s,isVisible:Re,position:t,onTabClick:ne})]})})});function Co(){let e=(0,te.useContext)(yo);if(!e)throw new Error("useSidebar must be used within Sidebar");return e}function wo(){let e=(0,te.useContext)(Po);if(!e)throw new Error("useSidebarTab must be used within a Sidebar tab renderContent tree");return e}var Ne=require("react"),Ro=require("react-dom");var Ee=require("react/jsx-runtime");function fr(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 hr({item:e,position:t,toolbar:n}){let[o,c]=(0,Ne.useState)(!1),[a,I]=(0,Ne.useState)(null),b=(0,Ne.useRef)(null),T=(0,Ne.useRef)(null),y=e.activeItemId!==void 0,C=y?e.activeItemId:n.getActiveInGroup(e.id),P=e.items.find(g=>!("type"in g)&&g.id===C),S=C!==null,L=P?.icon??e.defaultIcon,N=P?.label??e.label,_=()=>{e.disabled||(!o&&b.current&&I(b.current.getBoundingClientRect()),c(g=>!g))};return(0,Ne.useLayoutEffect)(()=>{if(!o||!T.current)return;let g=T.current,M=g.getBoundingClientRect(),w=8;M.right>window.innerWidth-w&&(g.style.left=`${Math.max(w,window.innerWidth-M.width-w)}px`,g.style.right="auto"),M.left<w&&(g.style.left=`${w}px`,g.style.right="auto"),M.bottom>window.innerHeight-w&&(g.style.top=`${Math.max(w,window.innerHeight-M.height-w)}px`,g.style.bottom="auto"),M.top<w&&(g.style.top=`${w}px`,g.style.bottom="auto")},[o]),(0,Ne.useEffect)(()=>{if(!o)return;let g=M=>{let w=M.target;b.current?.contains(w)||T.current?.contains(w)||c(!1)};return document.addEventListener("mousedown",g),()=>document.removeEventListener("mousedown",g)},[o]),(0,Ne.useEffect)(()=>{if(!o)return;let g=M=>{M.key==="Escape"&&c(!1)};return document.addEventListener("keydown",g),()=>document.removeEventListener("keydown",g)},[o]),(0,Ee.jsxs)(Ee.Fragment,{children:[(0,Ee.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:_,children:L}),o&&a&&(0,Ro.createPortal)((0,Ee.jsx)("div",{ref:T,className:`rdd-toolbar-group-flyout rdd-${t}`,style:fr(a,t,document.documentElement.dir==="rtl"),role:"menu",children:e.items.map((g,M)=>{if("type"in g)return(0,Ee.jsx)("div",{className:"rdd-toolbar-group-flyout-sep",role:"separator"},`sep-${M}`);let w=C===g.id;return(0,Ee.jsxs)("button",{type:"button",className:`rdd-toolbar-group-flyout-item${w?" rdd-active":""}`,disabled:g.disabled,role:"menuitem","aria-pressed":w,onClick:()=>{y?e.onActiveItemChange?.(g.id):n.setActiveInGroup(e.id,g.id),g.onActivate?.(g.id),c(!1)},children:[(0,Ee.jsx)("span",{className:"rdd-toolbar-group-flyout-icon",children:g.icon}),(0,Ee.jsx)("span",{className:"rdd-toolbar-group-flyout-label",children:g.label}),g.shortcut&&(0,Ee.jsx)("span",{className:"rdd-toolbar-group-flyout-shortcut",children:g.shortcut})]},g.id)})}),document.body)]})}function br(e,t,n,o){switch(e.type){case"separator":return(0,Ee.jsx)("div",{className:"rdd-toolbar-separator",role:"separator"},`sep-${t}`);case"action":return(0,Ee.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 c=n.getActiveInGroup(e.group)===e.id;return(0,Ee.jsx)("button",{type:"button",className:`rdd-toolbar-btn rdd-toolbar-btn-radio${c?" rdd-active":""}`,title:e.label,"aria-label":e.label,"aria-pressed":c,disabled:e.disabled,onClick:()=>{n.setActiveInGroup(e.group,e.id),e.onActivate?.(e.id)},children:e.icon},e.id)}case"toggle":{let c=e.active!==void 0,a=c?e.active:n.isModifierActive(e.id);return(0,Ee.jsx)("button",{type:"button",className:`rdd-toolbar-btn rdd-toolbar-btn-toggle${a?" rdd-active":""}`,title:e.label,"aria-label":e.label,"aria-pressed":a,disabled:e.disabled,onClick:()=>{c||n.toggleModifier(e.id),e.onToggle?.(!a)},children:e.icon},e.id)}case"group":return(0,Ee.jsx)(hr,{item:e,position:o,toolbar:n},e.id)}}var Mo=(0,Ne.forwardRef)(function({position:t="left",items:n,visible:o,onVisibilityChange:c,className:a,style:I},b){let T=Bt(),y=t==="left"||t==="right";(0,Ne.useImperativeHandle)(b,()=>({show:()=>c?.(!0),hide:()=>c?.(!1),toggle:()=>c?.(o===!1)}),[o,c]);let C=o!==!1?{}:y?{width:"0px"}:{height:"0px"};return(0,Ee.jsx)("div",{className:`rdd-toolbar-strip rdd-${t}${a?` ${a}`:""}`,role:"toolbar","aria-orientation":y?"vertical":"horizontal",style:{...C,...I},children:n.map((P,S)=>br(P,S,T,t))})});var Pe=require("react"),In=require("react-dom"),me=require("react/jsx-runtime"),Ln=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))}},Fe=new Ln,To=Object.assign((e,t)=>Fe.show(e,t),{info:(e,t)=>Fe.show(e,{...t,type:"info"}),success:(e,t)=>Fe.show(e,{...t,type:"success"}),warning:(e,t)=>Fe.show(e,{...t,type:"warning"}),error:(e,t)=>Fe.show(e,{...t,type:"error"}),dismiss:e=>Fe.dismiss(e),promise:(e,t,n)=>{let o=Fe.show(t.pending,{...n,type:"info",duration:0});return e.then(c=>{let a=typeof t.success=="function"?t.success(c):t.success;Fe.update(o,a,{type:"success",duration:n?.duration??5e3})},c=>{let a=typeof t.error=="function"?t.error(c):t.error;Fe.update(o,a,{type:"error",duration:n?.duration??5e3})}),e}}),vr=()=>(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"})]}),yr=()=>(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"})]}),Pr=()=>(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"})]}),xr=()=>(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"})]}),Cr=()=>(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"})}),wr={info:(0,me.jsx)(vr,{}),success:(0,me.jsx)(yr,{}),warning:(0,me.jsx)(Pr,{}),error:(0,me.jsx)(xr,{})};function Rr({id:e,message:t,options:n,exiting:o,isLeft:c,showProgress:a,pauseOnHover:I,animation:b,onDismiss:T,onExited:y}){let C=(0,Pe.useRef)(null),P=(0,Pe.useRef)(null),S=(0,Pe.useRef)(null),L=(0,Pe.useRef)(n.duration),N=(0,Pe.useRef)(0),[_,g]=(0,Pe.useState)(!1),M=b==="none"?"rdd-toast--visible":b==="fade"?"rdd-toast--fade-entering":c?"rdd-toast--entering-left":"rdd-toast--entering",[w,z]=(0,Pe.useState)(M);(0,Pe.useLayoutEffect)(()=>{let k=C.current,Y=P.current;if(!k||!Y||o)return;let K=()=>{k.style.maxHeight=`${k.scrollHeight}px`};K();let U=new ResizeObserver(K);return U.observe(Y),()=>U.disconnect()},[o]),(0,Pe.useEffect)(()=>{if(b==="none")return;let k=requestAnimationFrame(()=>z("rdd-toast--visible"));return()=>cancelAnimationFrame(k)},[]);let m=(0,Pe.useCallback)(k=>{k<=0||(N.current=Date.now(),S.current=setTimeout(()=>T(e),k))},[e,T]);(0,Pe.useEffect)(()=>(S.current&&clearTimeout(S.current),L.current=n.duration,m(n.duration),()=>{S.current&&clearTimeout(S.current)}),[n.duration,m]),(0,Pe.useEffect)(()=>{if(!o)return;let k=C.current;if(!k||b==="none"){y(e);return}let Y=U=>{U.propertyName==="max-height"&&y(e)};k.addEventListener("transitionend",Y);let K=setTimeout(()=>y(e),520);return()=>{k.removeEventListener("transitionend",Y),clearTimeout(K)}},[o,e,y,b]);let R=()=>{!I||n.duration===0||(S.current&&(clearTimeout(S.current),S.current=null,L.current=Math.max(0,L.current-(Date.now()-N.current))),g(!0))},H=()=>{!I||n.duration===0||(g(!1),m(L.current))},B=["rdd-toast",n.type&&`rdd-toast--${n.type}`,w,o&&"rdd-toast--exiting",_&&"rdd-toast--paused"].filter(Boolean).join(" "),s=n.icon!==void 0?n.icon:n.type?wr[n.type]:null;return(0,me.jsxs)("div",{ref:C,role:"status","aria-live":"polite",className:B,onMouseEnter:R,onMouseLeave:H,children:[s&&s,(0,me.jsx)("div",{ref:P,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:()=>T(e),"aria-label":"Close notification",children:(0,me.jsx)(Cr,{})}),a&&n.duration>0&&(0,me.jsx)("div",{className:"rdd-toast__progress",style:{animationDuration:`${n.duration}ms`}})]})}function En(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 So({position:e="top-right",maxVisible:t=3,defaultDuration:n=5e3,defaultClosable:o=!0,pauseOnHover:c=!0,animation:a="slide",newestOnTop:I=!1,progressBar:b=!1,width:T=320,adapter:y}){let[C,P]=(0,Pe.useState)([]),S=(0,Pe.useRef)([]),L=(0,Pe.useRef)(C);L.current=C;let N=(0,Pe.useCallback)(z=>{P(m=>m.map(R=>R.id===z?{...R,exiting:!0}:R)),L.current.find(m=>m.id===z)?.options.onClose?.()},[]),_=(0,Pe.useCallback)(z=>{let m=S.current.shift()??null;P(R=>{let H=R.filter(s=>s.id!==z);if(!m)return H;let B=En(m.rawOpts,n,o);return[...H,{id:m.id,message:m.message,options:B,exiting:!1}]})},[n,o]);if((0,Pe.useEffect)(()=>{if(y)return;let z=m=>{if(m.kind==="show"){let R=En(m.rawOpts,n,o),H={id:m.id,message:m.message,options:R,exiting:!1},B={id:m.id,message:m.message,rawOpts:m.rawOpts};P(s=>s.find(K=>K.id===m.id)?s.map(K=>K.id===m.id?{...K,message:m.message,options:R}:K):s.filter(K=>!K.exiting).length<t?[...s,H]:(S.current.some(K=>K.id===B.id)||S.current.push(B),s))}else m.kind==="update"?(P(R=>R.map(H=>{if(H.id!==m.id)return H;let B={...H.options,...m.patch,id:H.id};return{...H,message:m.message,options:B}})),S.current=S.current.map(R=>R.id!==m.id?R:{...R,message:m.message,rawOpts:{...R.rawOpts,...m.patch}})):m.kind==="dismiss"&&(m.id===void 0?(P(R=>R.map(H=>({...H,exiting:!0}))),S.current=[]):L.current.some(H=>H.id===m.id)?N(m.id):S.current=S.current.filter(H=>H.id!==m.id))};return Fe.subscribe(z),()=>Fe.unsubscribe(z)},[y,t,n,o,N]),(0,Pe.useEffect)(()=>{if(!y)return;let z=m=>{if(m.kind==="show"){let R=En(m.rawOpts,n,o);y.show(m.id,m.message,R)}else m.kind==="update"?y.update(m.id,m.message,m.patch):m.kind==="dismiss"&&y.dismiss(m.id)};return Fe.subscribe(z),()=>Fe.unsubscribe(z)},[y,n,o]),y){if(!y.Container)return null;let z=y.Container;return(0,In.createPortal)((0,me.jsx)(z,{position:e}),document.body)}let g=e.endsWith("left"),M="";I===!0&&(M="rdd-toast-container--newest-top"),I===!1&&(M="rdd-toast-container--newest-bottom");let w=["rdd-toast-container",`rdd-toast-container--${e}`,M].filter(Boolean).join(" ");return(0,In.createPortal)((0,me.jsx)("div",{className:w,style:{width:T},"aria-label":"Notifications","aria-live":"polite",children:C.map(z=>(0,me.jsx)(Rr,{id:z.id,message:z.message,options:z.options,exiting:z.exiting,isLeft:g,showProgress:b,pauseOnHover:c,animation:a,onDismiss:N,onExited:_},z.id))}),document.body)}var X=qt(require("react"),1),Eo=require("react-dom");var Z=require("react/jsx-runtime"),Mr=["top-left","top-right","bottom-left","bottom-right"],Io=(0,X.createContext)(null),Lo=(0,X.createContext)(null),zo=(0,X.createContext)(null),rt=80;function Tr(e,t,n){let o=e.getBoundingClientRect(),c=t-o.left,a=n-o.top;return c<rt&&a<rt?"top-left":c>o.width-rt&&a<rt?"top-right":c<rt&&a>o.height-rt?"bottom-left":c>o.width-rt&&a>o.height-rt?"bottom-right":null}function No({children:e,className:t,style:n}){let[o,c]=(0,X.useState)({}),[a,I]=(0,X.useState)({}),[b,T]=(0,X.useState)({"top-left":[],"top-right":[],"bottom-left":[],"bottom-right":[]}),[y,C]=(0,X.useState)({}),[P,S]=(0,X.useState)(null),[L,N]=(0,X.useState)(null),[_,g]=(0,X.useState)(null),[M,w]=(0,X.useState)(()=>new Map),z=(0,X.useRef)(100),m=(0,X.useRef)(null),R=(0,X.useCallback)((j,F)=>(c(D=>({...D,[j]:F})),()=>c(D=>{let $={...D};return delete $[j],$})),[]),H=(0,X.useCallback)(j=>{z.current+=1;let F=z.current;I(D=>({...D,[j]:F})),g(j)},[]),B=(0,X.useCallback)((j,F)=>{T(D=>{let $={"top-left":D["top-left"].filter(ne=>ne!==j),"top-right":D["top-right"].filter(ne=>ne!==j),"bottom-left":D["bottom-left"].filter(ne=>ne!==j),"bottom-right":D["bottom-right"].filter(ne=>ne!==j)};return $[F]=[...$[F],j],$})},[]),s=(0,X.useCallback)(j=>{T(F=>({"top-left":F["top-left"].filter(D=>D!==j),"top-right":F["top-right"].filter(D=>D!==j),"bottom-left":F["bottom-left"].filter(D=>D!==j),"bottom-right":F["bottom-right"].filter(D=>D!==j)}))},[]),k=(0,X.useCallback)((j,F)=>{C(D=>D[j]===F?D:{...D,[j]:F})},[]),Y=(0,X.useCallback)((j,F)=>{w(D=>{let $=new Map(D);return $.set(j,F),$})},[]),K=(0,X.useCallback)(j=>{w(F=>{let D=new Map(F);return D.delete(j),D})},[]),U=(0,X.useCallback)(()=>{w(new Map)},[]),ae=(0,X.useMemo)(()=>Array.from(M.keys()),[M]),ee=(0,X.useMemo)(()=>({registerToolbar:R,insetTop:o.top??0,insetBottom:o.bottom??0}),[R,o]),xe=(0,X.useMemo)(()=>({managedWindowIds:ae,openManaged:Y,closeManaged:K,closeAllManaged:U}),[ae,Y,K,U]),se=(0,X.useMemo)(()=>({topId:_,zOrders:a,focusWindow:H,containerRef:m,stacks:b,dockedSizes:y,dockWindow:B,undockWindow:s,reportDockedSize:k,draggingId:P,setDraggingId:S,hoveredZone:L,setHoveredZone:N,insetTop:o.top??0,insetBottom:o.bottom??0}),[_,a,H,b,y,B,s,k,P,L,o]);return(0,Z.jsx)(Io.Provider,{value:ee,children:(0,Z.jsx)(Lo.Provider,{value:xe,children:(0,Z.jsx)(zo.Provider,{value:se,children:(0,Z.jsxs)("div",{ref:m,className:`rdd-panel-overlay-root${P!==null?" rdd-dragging-active":""}${t?" "+t:""}`,style:n,children:[e,P!==null&&(0,Z.jsx)(Sr,{hoveredZone:L}),Array.from(M.entries()).map(([j,F])=>(0,Z.jsx)(zn,{id:j,title:F.title,icon:F.icon,open:!0,onClose:()=>K(j),defaultAnchor:F.anchor??"top-right",defaultWidth:F.width??320,defaultHeight:F.height??240,children:F.content},j))]})})})})}function Sr({hoveredZone:e}){return(0,Z.jsx)(Z.Fragment,{children:Mr.map(t=>(0,Z.jsx)("div",{className:`rdd-panel-float-dropzone rdd-panel-float-dropzone--${t}${e===t?" rdd-panel-float-dropzone--hovered":""}`,"aria-hidden":"true"},t))})}function Do({position:e,variant:t="transparent",buttonVariant:n="ghost",buttonSize:o,style:c,className:a,children:I}){let b=(0,X.useContext)(Io),T=(0,X.useRef)(null),y=(0,X.useRef)(null);(0,X.useLayoutEffect)(()=>{let N=T.current;if(!N||!b)return;let _=()=>{let M=e==="top"||e==="bottom"?N.offsetHeight:N.offsetWidth;y.current?.(),y.current=b.registerToolbar(e,M)};_();let g=new ResizeObserver(_);return g.observe(N),()=>{g.disconnect(),y.current?.(),y.current=null}},[e,b?.registerToolbar]);let C={position:"absolute",zIndex:5,pointerEvents:"none",boxSizing:"border-box"};e==="top"?(C.top=0,C.left=0,C.right=0):e==="bottom"?(C.bottom=0,C.left=0,C.right=0):e==="left"?(C.insetInlineStart=0,C.top=b?.insetTop??0,C.bottom=b?.insetBottom??0):(C.insetInlineEnd=0,C.top=b?.insetTop??0,C.bottom=b?.insetBottom??0);let S=e==="left"||e==="right"?{...(b?.insetTop??0)>0?{paddingTop:0}:{},...(b?.insetBottom??0)>0?{paddingBottom:0}:{}}:{},L=o!=null?{"--rdd-panel-toolbar-btn-size":`${o}px`}:{};return(0,Z.jsx)("div",{ref:T,className:`rdd-panel-toolbar rdd-panel-toolbar--${e}${a?" "+a:""}`,"data-variant":t,"data-btn-variant":n,style:{...C,...S,...L,...c},children:I})}function Wo({icon:e,onClick:t,disabled:n,title:o,variant:c}){return(0,Z.jsx)("button",{type:"button",className:"rdd-panel-toolbar-btn",onClick:t,disabled:n,title:o,"aria-label":o,...c?{"data-variant":c}:{},children:e})}function Oo({icon:e,active:t,onToggle:n,disabled:o,title:c,variant:a}){return(0,Z.jsx)("button",{type:"button",className:`rdd-panel-toolbar-btn${t?" rdd-panel-toolbar-btn--active":""}`,onClick:n,disabled:o,title:c,"aria-label":c,"aria-pressed":t,...a?{"data-variant":a}:{},children:e})}function Ao(){return(0,Z.jsx)("span",{className:"rdd-panel-toolbar__sep","aria-hidden":"true"})}function Fo(){return(0,Z.jsx)("span",{className:"rdd-panel-toolbar__spacer","aria-hidden":"true"})}function _o({children:e}){return(0,Z.jsx)("span",{className:"rdd-panel-toolbar__item",children:e})}function Ho({children:e}){return(0,Z.jsx)("div",{className:"rdd-panel-toolbar__center",children:e})}function Bo({placeholder:e="Search\u2026",onSearch:t,onSelect:n}){let[o,c]=(0,X.useState)(!1),[a,I]=(0,X.useState)(""),[b,T]=(0,X.useState)([]),[y,C]=(0,X.useState)(null),P=(0,X.useRef)(null),S=(0,X.useRef)(null),L=(0,X.useRef)(null),N=(0,X.useRef)(null),_=()=>{c(!0),setTimeout(()=>S.current?.focus({preventScroll:!0}),0)},g=()=>{c(!1),I(""),T([]),C(null),L.current?.abort(),N.current&&clearTimeout(N.current)},M=B=>{let s=B.target.value;if(I(s),L.current?.abort(),N.current&&clearTimeout(N.current),!s.trim()){T([]),C(null);return}N.current=setTimeout(async()=>{let k=new AbortController;L.current=k;try{let Y=await t(s,k.signal);if(!k.signal.aborted){T(Y);let K=P.current;if(K&&Y.length>0){let U=K.getBoundingClientRect(),ae=Math.max(U.width,240),ee=U.left;ee+ae>window.innerWidth-8&&(ee=window.innerWidth-ae-8),C({top:U.bottom+4,left:ee,width:ae})}else C(null)}}catch{}},300)},w=B=>{n(B),g()},z=B=>{P.current?.contains(B.relatedTarget)||g()},m=B=>{B.key==="Escape"&&g()},R=(0,X.useMemo)(()=>{let B={};for(let s of b){let k=s.group??"";B[k]||(B[k]=[]),B[k].push(s)}return B},[b]),H=(0,Z.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,Z.jsx)("circle",{cx:"6.5",cy:"6.5",r:"4.5"}),(0,Z.jsx)("line",{x1:"10",y1:"10",x2:"14",y2:"14"})]});return o?(0,Z.jsxs)("div",{ref:P,className:"rdd-panel-toolbar-search rdd-panel-toolbar-search--open",onBlur:z,children:[(0,Z.jsx)("button",{type:"button",className:"rdd-panel-toolbar-btn",onClick:g,"aria-label":"Close search",title:"Close search",children:H}),(0,Z.jsx)("input",{ref:S,className:"rdd-panel-toolbar-search__input",type:"text",value:a,onChange:M,onKeyDown:m,placeholder:e,autoComplete:"off"}),y&&b.length>0&&(0,Eo.createPortal)((0,Z.jsx)("div",{className:"rdd-panel-toolbar-search__dropdown",style:{position:"fixed",top:y.top,left:y.left,width:y.width,zIndex:9502},onMouseDown:B=>B.preventDefault(),children:Object.entries(R).map(([B,s])=>(0,Z.jsxs)(X.default.Fragment,{children:[B&&(0,Z.jsx)("div",{className:"rdd-panel-toolbar-search__group",children:B}),s.map(k=>(0,Z.jsxs)("button",{type:"button",className:"rdd-panel-toolbar-search__item",onClick:()=>w(k),children:[k.icon&&(0,Z.jsx)("span",{className:"rdd-panel-toolbar-search__item-icon",children:k.icon}),(0,Z.jsx)("span",{className:"rdd-panel-toolbar-search__item-label",children:k.label}),k.description&&(0,Z.jsx)("span",{className:"rdd-panel-toolbar-search__item-desc",children:k.description})]},k.id))]},B||"__default__"))}),document.body)]}):(0,Z.jsx)("div",{ref:P,className:"rdd-panel-toolbar-search",children:(0,Z.jsx)("button",{type:"button",className:"rdd-panel-toolbar-btn",onClick:_,title:"Search","aria-label":"Search",children:H})})}function zn(e){let t=(0,X.useContext)(zo);return e.open?(0,Z.jsx)(Lr,{ctx:t,...e},e.id):null}var kr=120,Er=60,ko=8,Ir=8;function Lr({id:e,title:t,icon:n,defaultAnchor:o,defaultWidth:c,defaultHeight:a,children:I,ctx:b,onClose:T}){let y=(0,X.useContext)(wt)?.isRtl??!1,[C,P]=(0,X.useState)("docked"),[S,L]=(0,X.useState)(o),[N,_]=(0,X.useState)(null),[g,M]=(0,X.useState)({w:c,h:a}),w=(0,X.useRef)(null),z=(0,X.useRef)(C);z.current=C;let m=(0,X.useRef)(N);m.current=N;let R=(0,X.useRef)(g);R.current=g;let H=(0,X.useRef)(null);(0,X.useLayoutEffect)(()=>(b?.dockWindow(e,o),()=>{b?.undockWindow(e)}),[]),(0,X.useEffect)(()=>{b?.reportDockedSize(e,g.h)},[g.h]);let B=b?.zOrders[e]??101,s=!b||b.topId===e,k=()=>{let F=w.current?.offsetParent;return{cw:F?.clientWidth??9999,ch:F?.clientHeight??9999}},Y=()=>{b?.focusWindow(e)},K=F=>{if(F.button!==0)return;F.preventDefault();let D,$;if(z.current==="docked"){let ne=w.current,ce=b?.containerRef?.current;if(ne&&ce){let be=ne.getBoundingClientRect(),we=ce.getBoundingClientRect();D=be.left-we.left,$=be.top-we.top}else D=ko,$=b?.insetTop??0;b?.undockWindow(e),P("free"),_({x:D,y:$})}else D=m.current?.x??0,$=m.current?.y??0;H.current={mouseX:F.clientX,mouseY:F.clientY,posX:D,posY:$,hasDragged:!1},w.current?.setPointerCapture(F.pointerId),document.body.classList.add("rdd-dragging-active")},U=F=>D=>{if(D.button!==0)return;D.preventDefault(),D.stopPropagation();let $=0,ne=0;if(z.current==="free")$=m.current?.x??0,ne=m.current?.y??0;else{let be=w.current,we=be?.offsetParent;if(be&&we){let Re=be.getBoundingClientRect(),De=we.getBoundingClientRect();$=Re.left-De.left,ne=Re.top-De.top}}let ce={x:$,y:ne,w:R.current.w,h:R.current.h};qe({element:D.currentTarget,pointerId:D.pointerId,startClientX:D.clientX,startClientY:D.clientY,captureStart:()=>ce,activeClasses:[{el:document.body,classes:["rdd-resizing-active"]}],onMove:(be,we,Re)=>{let{cw:De,ch:Oe}=k(),{x:We,y:Q,w:Me,h:Ie}=kt(F,be,we,Re,{minW:kr,minH:Er,maxW:De-Re.x,maxH:Oe-Re.y,minX:0,minY:0});M({w:Me,h:Ie}),z.current==="free"&&_({x:We,y:Q})}})},ae=F=>{if(H.current){let D=H.current;if(!D.hasDragged){if(Math.abs(F.clientX-D.mouseX)+Math.abs(F.clientY-D.mouseY)<4)return;D.hasDragged=!0,b?.setDraggingId(e)}let{cw:$,ch:ne}=k(),ce=Math.max(0,Math.min(D.posX+F.clientX-D.mouseX,$-R.current.w)),be=Math.max(0,Math.min(D.posY+F.clientY-D.mouseY,ne-R.current.h));_({x:ce,y:be});let we=b?.containerRef?.current;if(we){let Re=Tr(we,F.clientX,F.clientY);b?.setHoveredZone(Re&&y?Ft(Re):Re)}}},ee=()=>{if(H.current){let F=b?.hoveredZone;F&&(b?.dockWindow(e,F),L(F),P("docked"),_(null)),b?.setHoveredZone(null),b?.setDraggingId(null)}document.body.classList.remove("rdd-dragging-active"),H.current=null},xe=()=>{H.current&&(b?.setHoveredZone(null),b?.setDraggingId(null)),document.body.classList.remove("rdd-dragging-active"),H.current=null},se;if(C==="docked"&&b){let F=b.stacks[S]??[],D=F.indexOf(e),$=0;for(let ne=0;ne<D;ne++)$+=(b.dockedSizes[F[ne]]??a)+Ir;se={width:g.w,height:g.h,zIndex:B,transition:"top 0.2s ease, bottom 0.2s ease",opacity:D===-1?0:void 0,pointerEvents:D===-1?"none":void 0},se[S.endsWith("-right")?"insetInlineEnd":"insetInlineStart"]=ko,S.startsWith("top-")?se.top=b.insetTop+$:se.bottom=b.insetBottom+$}else se={left:N?.x??0,top:N?.y??0,width:g.w,height:g.h,zIndex:B};return(0,Z.jsxs)("div",{ref:w,dir:y?"rtl":"ltr",className:`rdd-panel-float${s?" rdd-panel-float--active":""}`,style:se,onPointerDown:Y,onPointerMove:ae,onPointerUp:ee,onPointerCancel:xe,children:[(0,Z.jsxs)("div",{className:"rdd-panel-float__header",onPointerDown:K,children:[n&&(0,Z.jsx)("span",{className:"rdd-panel-float__icon",children:n}),(0,Z.jsx)("span",{className:"rdd-panel-float__title",children:t}),(0,Z.jsx)("button",{type:"button",className:"rdd-panel-float__close",onClick:T,onPointerDown:F=>F.stopPropagation(),title:"Close","aria-label":"Close",children:(0,Z.jsxs)("svg",{width:"8",height:"8",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",children:[(0,Z.jsx)("line",{x1:"1",y1:"1",x2:"9",y2:"9"}),(0,Z.jsx)("line",{x1:"9",y1:"1",x2:"1",y2:"9"})]})})]}),(0,Z.jsx)("div",{className:"rdd-panel-float__body",children:I}),C==="free"&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)("div",{className:"rdd-resize-handle rdd-resize-n",onPointerDown:U("n")}),(0,Z.jsx)("div",{className:"rdd-resize-handle rdd-resize-ne",onPointerDown:U("ne")}),(0,Z.jsx)("div",{className:"rdd-resize-handle rdd-resize-nw",onPointerDown:U("nw")})]}),(0,Z.jsx)("div",{className:"rdd-resize-handle rdd-resize-e",onPointerDown:U("e")}),(0,Z.jsx)("div",{className:"rdd-resize-handle rdd-resize-se",onPointerDown:U("se")}),(0,Z.jsx)("div",{className:"rdd-resize-handle rdd-resize-s",onPointerDown:U("s")}),(0,Z.jsx)("div",{className:"rdd-resize-handle rdd-resize-sw",onPointerDown:U("sw")}),(0,Z.jsx)("div",{className:"rdd-resize-handle rdd-resize-w",onPointerDown:U("w")})]})}function $o(){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 zr=[];function Go(){let e=(0,X.useContext)(Lo),t=e?.managedWindowIds??zr;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,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});
23
+ 3. Verify styles.css is imported \u2014 it anchors html, body, #root to 100% height.`)}pn({width:Math.max(100,h.width),height:Math.max(100,h.height)})});return u.observe(r),()=>{u.disconnect()}},[]),(0,V.useEffect)(()=>{let r=pt.width,x=pt.height;s.floating.forEach(u=>{let p=typeof u.width=="string"?parseFloat(u.width):u.width,h=typeof u.height=="string"?parseFloat(u.height):u.height,E=typeof u.x=="string"?parseFloat(u.x):u.x,A=typeof u.y=="string"?parseFloat(u.y):u.y,F=p,J=h,se=E,q=A,re=!1;if(F>r&&(F=Math.max(200,r-20),re=!0),J>x&&(J=Math.max(150,x-40),re=!0),!u.anchor){let ce=r-100;se>ce&&(se=Math.max(0,ce),re=!0);let ae=x-40;q>ae&&(q=Math.max(0,ae),re=!0)}re&&P(u.id,{x:se,y:q,width:F,height:J})})},[pt,s.floating,P]),(0,V.useEffect)(()=>{let r=x=>{if(x.button!==0)return;let u=x.target;if(!u||typeof u.closest!="function")return;let p=u.closest(".rdd-floating-window");if(p){let E=p.getAttribute("data-window-id");E&&(R(E),S(E));return}let h=u.closest(".rdd-workspace-panel");if(h){let E=h.getAttribute("data-active-panel-id");E&&R(E)}};return document.addEventListener("pointerdown",r),()=>{document.removeEventListener("pointerdown",r)}},[S,R]);let gn=(r,x)=>{x.preventDefault();let u=s.floating.find(q=>q.id===r);if(!u||u.maximized)return;S(r);let p=x.currentTarget,h=p.closest(".rdd-floating-window"),E=x.clientX,A=x.clientY,F=h?h.offsetLeft:0,J=h?h.offsetTop:0,se=()=>{let q=Ne.current,re=qe.current,ce=te.current,ae=Ke.current;if(ae)P(r,{anchor:lt?_t(ae):ae});else if(ce)M(r,et(ce));else if(re){let de=re.index;re.side==="right"&&(de+=1),g(r,re.leafId,de)}else q&&_(r,q.leafId,et(q.position));_e(null),Ve()};if(x.pointerType==="touch"){let q=x.pointerId,re=!1,ce=()=>{re=!0,clearTimeout(de),p.removeEventListener("pointermove",ae),p.removeEventListener("pointerup",ce),p.removeEventListener("pointercancel",ce)},ae=ue=>{Math.hypot(ue.clientX-E,ue.clientY-A)>ct&&ce()},de=setTimeout(()=>{if(re)return;p.removeEventListener("pointermove",ae),p.removeEventListener("pointerup",ce),p.removeEventListener("pointercancel",ce);try{p.setPointerCapture(q)}catch{return}p.classList.add("rdd-long-press-active"),document.body.classList.add("rdd-dragging-active"),N(r);let ue=Pt=>{let xt=Pt.clientX-E,Ct=Pt.clientY-A;P(r,{x:F+xt,y:J+Ct,anchor:null}),zt(Pt.clientX,Pt.clientY)},Me=()=>{p.classList.remove("rdd-long-press-active"),document.body.classList.remove("rdd-dragging-active"),p.removeEventListener("pointermove",ue),p.removeEventListener("pointerup",Me),p.removeEventListener("pointercancel",gt),se()},gt=()=>{p.classList.remove("rdd-long-press-active"),document.body.classList.remove("rdd-dragging-active"),p.removeEventListener("pointermove",ue),p.removeEventListener("pointerup",Me),p.removeEventListener("pointercancel",gt),Ve()};p.addEventListener("pointermove",ue),p.addEventListener("pointerup",Me),p.addEventListener("pointercancel",gt)},dt);p.addEventListener("pointermove",ae),p.addEventListener("pointerup",ce),p.addEventListener("pointercancel",ce)}else{let q=!1,re=de=>{let ue=de.clientX-E,Me=de.clientY-A;!q&&(Math.abs(ue)>5||Math.abs(Me)>5)&&(q=!0,N(r)),q&&P(r,{x:F+ue,y:J+Me,anchor:null})},ce=()=>{document.body.classList.remove("rdd-dragging-active"),window.removeEventListener("pointermove",re),window.removeEventListener("pointerup",ce),window.removeEventListener("pointercancel",ae),q&&se()},ae=()=>{document.body.classList.remove("rdd-dragging-active"),window.removeEventListener("pointermove",re),window.removeEventListener("pointerup",ce),window.removeEventListener("pointercancel",ae),q&&Ve()};document.body.classList.add("rdd-dragging-active"),window.addEventListener("pointermove",re),window.addEventListener("pointerup",ce),window.addEventListener("pointercancel",ae)}},i=(r,x,u)=>{u.preventDefault(),u.stopPropagation();let p=s.floating.find(ue=>ue.id===r);if(!p||p.maximized)return;S(r);let h=u.currentTarget,E=h.closest(".rdd-floating-window"),A={x:E?E.offsetLeft:0,y:E?E.offsetTop:0,w:E?E.offsetWidth:400,h:E?E.offsetHeight:300},F=pt.width,J=pt.height,se=typeof p.x=="string"?parseFloat(p.x):p.x,q=typeof p.y=="string"?parseFloat(p.y):p.y,re=typeof p.width=="string"?parseFloat(p.width):p.width,ce=typeof p.height=="string"?parseFloat(p.height):p.height,ae=x==="se"&&Math.abs(se+re-F)<4,de=x==="se"&&Math.abs(q+ce-J)<4;Ue({element:h,pointerId:u.pointerId,startClientX:u.clientX,startClientY:u.clientY,captureStart:()=>A,activeClasses:[{el:document.body,classes:["rdd-resizing-active"]}],onMove:(ue,Me,gt)=>{let Pt=It(x,ue,Me,gt,{minW:200,minH:150}),{x:xt,y:Ct,w:mn,h:fn}=Pt;ae&&(xt=F-mn,xt<0&&(xt=0,mn=F)),de&&(Ct=J-fn,Ct<0&&(Ct=0,fn=J)),P(r,{x:xt,y:Ct,width:mn,height:fn})}})},v=r=>{if(ne.current){let x=r==="left"?-150:150;ne.current.scrollBy({left:x,behavior:"smooth"})}},d=(0,V.useCallback)(()=>{U.current&&clearTimeout(U.current),ie(!0)},[]),a=(0,V.useCallback)(()=>{U.current=setTimeout(()=>ie(!1),400)},[]);(0,V.useEffect)(()=>{n==="autohide"&&s.minimized.length>B.current&&(U.current&&clearTimeout(U.current),ie(!0),U.current=setTimeout(()=>ie(!1),2e3)),B.current=s.minimized.length},[s.minimized.length,n]);let G=rn();return(0,V.useEffect)(()=>(e?document.documentElement.setAttribute("data-workspace-skin",e):document.documentElement.removeAttribute("data-workspace-skin"),()=>{document.documentElement.removeAttribute("data-workspace-skin")}),[e]),(0,V.useEffect)(()=>(G==="light"?document.documentElement.setAttribute("data-color-scheme","light"):document.documentElement.removeAttribute("data-color-scheme"),()=>{document.documentElement.removeAttribute("data-color-scheme")}),[G]),(0,V.useEffect)(()=>(c?document.documentElement.classList.remove("rdd-no-animations"):document.documentElement.classList.add("rdd-no-animations"),()=>{document.documentElement.classList.remove("rdd-no-animations")}),[c]),(0,f.jsxs)("div",{className:`rdd-workspace${c?"":" 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,f.jsxs)("div",{ref:yt,className:s.draggedPanelId?"rdd-dragging-active":void 0,style:{flexGrow:1,width:"100%",position:"relative",overflow:"hidden"},children:[s.draggedPanelId!==null&&(0,f.jsxs)(f.Fragment,{children:[(0,f.jsx)("div",{"data-edge-trigger":"left",className:"rdd-workspace-edge-trigger rdd-edge-trigger-left",onPointerEnter:()=>pe("left"),onPointerLeave:()=>pe(null)}),(0,f.jsx)("div",{"data-edge-trigger":"right",className:"rdd-workspace-edge-trigger rdd-edge-trigger-right",onPointerEnter:()=>pe("right"),onPointerLeave:()=>pe(null)}),(0,f.jsx)("div",{"data-edge-trigger":"top",className:"rdd-workspace-edge-trigger rdd-edge-trigger-top",onPointerEnter:()=>pe("top"),onPointerLeave:()=>pe(null)}),(0,f.jsx)("div",{"data-edge-trigger":"bottom",className:"rdd-workspace-edge-trigger rdd-edge-trigger-bottom",onPointerEnter:()=>pe("bottom"),onPointerLeave:()=>pe(null)})]}),s.draggedPanelId!==null&&["top-left","top-right","bottom-left","bottom-right"].map(r=>(0,f.jsx)("div",{className:`rdd-corner-zone rdd-corner-zone--${r}${Fe===r?" rdd-corner-zone--hovered":""}`,onPointerEnter:()=>{_e(r),pe(null)},onPointerLeave:()=>_e(null),"aria-hidden":"true"},r)),s.draggedPanelId!==null&&Xe!==null&&(0,f.jsx)("div",{className:"rdd-workspace-edge-preview",style:(()=>{let r=`${s.edgeSplitRatio*100}%`;switch(Xe){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,f.jsx)("div",{style:{width:"100%",height:"100%",overflow:"hidden",position:"relative"},children:s.gridRoot?(0,f.jsx)(eo,{node:s.gridRoot,path:[],onTabRightClick:Wt,activeDropZone:We,onHoverDropZone:Xt,onTabDragStart:Vt,hoveredTab:Gt,onTabHover:Yt,defaultPanelIcon:t,onRequestClosePanel:k}):(0,f.jsx)("div",{className:"rdd-empty-workspace-grid",children:"Grid Empty"})}),s.floating.map(r=>{let x=s.panels[r.id];if(!x)return null;let u=r.maximized,p=s.draggedPanelId===r.id,h=s.activePanelId===r.id,A=I.get(x.component)?.defaultOptions;return(0,f.jsxs)("div",{"data-window-id":r.id,dir:s.dir,onPointerDownCapture:()=>{R(r.id),S(r.id)},className:`rdd-floating-window ${u?"rdd-maximized":""} ${h?"rdd-window-focused":""} ${W??""}`,style:(()=>{let se=typeof r.width=="number"?`${r.width}px`:r.width,q=typeof r.height=="number"?`${r.height}px`:r.height;if(u)return{position:"absolute",left:0,top:0,width:"100%",height:"100%",zIndex:r.z,pointerEvents:p?"none":"auto"};if(r.anchor){let re=s.floating.filter(Me=>Me.anchor===r.anchor&&!Me.maximized),ce=re.findIndex(Me=>Me.id===r.id),ae=8;for(let Me=0;Me<ce;Me++){let gt=typeof re[Me].height=="number"?re[Me].height:parseFloat(re[Me].height);ae+=gt+8}let de=r.anchor.startsWith("top");return{position:"absolute",[r.anchor.endsWith("-right")?"insetInlineEnd":"insetInlineStart"]:8,[de?"top":"bottom"]:ae,width:se,height:q,zIndex:r.z,transition:p?"none":"top 0.2s ease, bottom 0.2s ease",pointerEvents:p?"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:q,zIndex:r.z,pointerEvents:p?"none":"auto"}})(),children:[(0,f.jsxs)("div",{onDoubleClick:()=>C(r.id),onPointerDown:F=>{A?.canDrag!==!1&&gn(r.id,F)},className:"rdd-floating-window-titlebar rdd-cursor-move",style:{cursor:u||A?.canDrag===!1?"default":"move"},children:[(0,f.jsxs)("span",{className:"rdd-floating-window-title",children:[(0,f.jsx)("span",{className:"rdd-window-title-icon",children:A?.icon||t||wn}),(0,f.jsxs)("span",{children:[he(x.title,H),x.dirty?" *":""]})]}),(0,f.jsxs)("div",{className:"rdd-titlebar-actions",style:{gap:"var(--rdd-header-button-gap, 4px)"},onPointerDown:F=>F.stopPropagation(),children:[A?.renderHeaderActions&&(0,f.jsx)("div",{className:"rdd-window-header-actions",children:A.renderHeaderActions(r.id)}),D(r.id).length>0&&(0,f.jsx)("button",{type:"button",className:"rdd-custom-tab-btn rdd-btn-more-actions",title:"More actions",onClick:F=>{F.stopPropagation();let J=D(r.id);J.length!==0&&m({event:F,items:J})},children:(0,f.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"currentColor",style:{display:"block"},children:[(0,f.jsx)("circle",{cx:"12",cy:"5",r:"2"}),(0,f.jsx)("circle",{cx:"12",cy:"12",r:"2"}),(0,f.jsx)("circle",{cx:"12",cy:"19",r:"2"})]})}),(0,f.jsx)("button",{type:"button",title:u?he(l.restoreSize,H):he(l.maximize,H),onClick:()=>C(r.id),className:"rdd-custom-tab-btn rdd-btn-maximize-tab",children:(0,f.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,f.jsx)("rect",{x:"4",y:"4",width:"16",height:"16",rx:"1.5"})})}),A?.canMinimize!==!1&&(0,f.jsx)("button",{type:"button",title:he(l.minimize,H),onClick:()=>T(r.id),className:"rdd-custom-tab-btn rdd-btn-minimize-tab",children:(0,f.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"3",children:(0,f.jsx)("path",{d:"M5 12h14"})})}),A?.canClose!==!1&&(0,f.jsx)("button",{type:"button",title:he(l.close,H),onClick:()=>k(r.id),className:"rdd-custom-tab-btn rdd-btn-close-tab",children:(0,f.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"3",children:(0,f.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]})]}),(0,f.jsx)("div",{className:K??void 0,style:{flexGrow:1,width:"100%",overflow:"hidden",position:"relative",isolation:"isolate"},children:(0,f.jsx)(Qn,{panelId:r.id},r.id)}),!u&&(0,f.jsxs)(f.Fragment,{children:[(0,f.jsx)("div",{onPointerDown:F=>i(r.id,"n",F),className:"rdd-resize-handle rdd-resize-n"}),(0,f.jsx)("div",{onPointerDown:F=>i(r.id,"ne",F),className:"rdd-resize-handle rdd-resize-ne"}),(0,f.jsx)("div",{onPointerDown:F=>i(r.id,"e",F),className:"rdd-resize-handle rdd-resize-e"}),(0,f.jsx)("div",{onPointerDown:F=>i(r.id,"se",F),className:"rdd-resize-handle rdd-resize-se"}),(0,f.jsx)("div",{onPointerDown:F=>i(r.id,"s",F),className:"rdd-resize-handle rdd-resize-s"}),(0,f.jsx)("div",{onPointerDown:F=>i(r.id,"sw",F),className:"rdd-resize-handle rdd-resize-sw"}),(0,f.jsx)("div",{onPointerDown:F=>i(r.id,"w",F),className:"rdd-resize-handle rdd-resize-w"}),(0,f.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,f.jsxs)("div",{className:["rdd-taskbar-footer-container",`taskbar-mode-${n}`,n==="autohide"&&ve?"rdd-taskbar-expanded":""].filter(Boolean).join(" "),style:{height:"48px",zIndex:100},onPointerEnter:n==="autohide"?d:void 0,onPointerLeave:n==="autohide"?a:void 0,children:[n==="autohide"&&(0,f.jsx)("div",{className:"rdd-taskbar-peek-handle"}),(0,f.jsx)("button",{type:"button",onClick:()=>v("left"),className:"rdd-taskbar-nav-btn",style:{display:s.minimized.length>4?"block":"none"},children:"\u25C0"}),(0,f.jsx)("div",{ref:ne,className:"rdd-taskbar-items-container",style:{scrollSnapType:"x mandatory"},children:s.minimized.map(r=>{let u=I.get(r.component)?.defaultOptions?.icon||t||wn;return(0,f.jsx)("div",{onClick:()=>{ee.current!=="touch"&&(X(null),b(r.id))},onContextMenu:p=>ut(r.id,p),onPointerDown:p=>{if(ee.current=p.pointerType,p.pointerType!=="touch")return;let h=p.currentTarget,E=p.clientX,A=p.clientY,F=p.pointerId,J=!1,se=()=>{J=!0,clearTimeout(ce),h.removeEventListener("pointermove",re),h.removeEventListener("pointerup",q),h.removeEventListener("pointercancel",se)},q=()=>{se();let ae=h.getBoundingClientRect();z?.id===r.id?(b(r.id),X(null)):X({id:r.id,rect:ae,title:r.title,component:r.component,fromTouch:!0})},re=ae=>{Math.hypot(ae.clientX-E,ae.clientY-A)>ct&&se()},ce=setTimeout(()=>{if(J)return;h.removeEventListener("pointermove",re),h.removeEventListener("pointerup",q),h.removeEventListener("pointercancel",se);try{h.setPointerCapture(F)}catch{return}navigator.vibrate&&navigator.vibrate(10);let ae=de=>{h.removeEventListener("pointerup",ae),h.removeEventListener("pointercancel",ae),ut(r.id,de)};h.addEventListener("pointerup",ae),h.addEventListener("pointercancel",ae)},dt);h.addEventListener("pointermove",re),h.addEventListener("pointerup",q),h.addEventListener("pointercancel",se)},onPointerEnter:p=>{if(p.pointerType==="touch"||Re)return;oe.current&&clearTimeout(oe.current);let h=p.currentTarget.getBoundingClientRect();p.clientX>=h.left&&p.clientX<=h.right&&p.clientY>=h.top&&p.clientY<=h.bottom&&X({id:r.id,rect:h,title:r.title,component:r.component})},onPointerLeave:p=>{p.pointerType!=="touch"&&(oe.current=setTimeout(()=>{X(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,f.jsx)("span",{className:"rdd-taskbar-item-icon",children:u})},r.id)})}),z&&(0,Cn.createPortal)((0,f.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:()=>{oe.current&&clearTimeout(oe.current)},onPointerLeave:r=>{r.pointerType!=="touch"&&X(null)},onClick:()=>{b(z.id),X(null)},onContextMenu:r=>ut(z.id,r),onPointerDown:r=>{if(r.pointerType!=="touch")return;let x=z.id,u=r.currentTarget,p=r.clientX,h=r.clientY,E=r.pointerId,A=!1,F=()=>{A=!0,clearTimeout(se),u.removeEventListener("pointermove",J),u.removeEventListener("pointerup",F),u.removeEventListener("pointercancel",F)},J=q=>{Math.hypot(q.clientX-p,q.clientY-h)>ct&&F()},se=setTimeout(()=>{if(A)return;u.removeEventListener("pointermove",J),u.removeEventListener("pointerup",F),u.removeEventListener("pointercancel",F);try{u.setPointerCapture(E)}catch{return}navigator.vibrate&&navigator.vibrate(10);let q=re=>{u.removeEventListener("pointerup",q),u.removeEventListener("pointercancel",q),ut(x,re)};u.addEventListener("pointerup",q),u.addEventListener("pointercancel",q)},dt);u.addEventListener("pointermove",J),u.addEventListener("pointerup",F),u.addEventListener("pointercancel",F)},children:[(0,f.jsxs)("div",{className:"rdd-tooltip-header-row",children:[(0,f.jsxs)("span",{className:"rdd-tooltip-title-text rdd-text-truncate",style:{maxWidth:"140px"},children:[he(z.title,H),s.panels[z.id]?.dirty?" *":""]}),(0,f.jsx)("span",{onClick:r=>{r.stopPropagation(),k(z.id),X(null)},title:he(l.closePanel,H),className:"rdd-tooltip-close-x",children:(0,f.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,f.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),(0,f.jsx)(rr,{panelId:z.id})]}),document.body),(0,f.jsx)("button",{type:"button",onClick:()=>v("right"),className:"rdd-taskbar-nav-btn",style:{display:s.minimized.length>4?"block":"none"},children:"\u25B6"})]}),Object.keys(s.panels).map(r=>{let x=s.panels[r];if(!x)return null;let u=Jn(r);return(0,Cn.createPortal)((0,f.jsx)(ir,{panelId:r,children:(0,f.jsx)("div",{style:{width:"100%",height:"100%"},dir:s.dir,children:or(r,x,I)})}),u,r)}),j===null&&(0,f.jsx)(o.Component,{ref:fe,theme:"dark",formatMessageProvider:H,onShow:()=>we(!0),onHide:()=>we(!1)}),s.draggedPanelId!==null&&!s.floating.some(r=>r.id===s.draggedPanelId)&&(0,f.jsxs)("div",{className:"rdd-drag-ghost-tab",style:{left:Ye.x+12,top:Ye.y+12,zIndex:1e5},children:["\u{1F4C4} ",he(s.panels[s.draggedPanelId]?.title,H)||"Tab"]})]})},to=ar;var an=class{registry;initialState;config;_actions=null;_initialized=!1;_pendingCalls=[];_pendingOpenPanelIds=new Set;_pendingSubscriptions=[];_disconnectedWarnTimer=null;constructor(t={}){if(this.registry=new ft,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 c=this._pendingSubscriptions.indexOf(o);c!==-1&&this._pendingSubscriptions.splice(c,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(c=>c.dockPanelToGroup(t,n,o))}movePanelOrder(t,n,o){this._dispatch(c=>c.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(c=>c.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 lo=require("react");var Je=require("react"),oo=require("react/jsx-runtime"),no=(0,Je.createContext)(null),Bt=({children:e})=>{let[t,n]=(0,Je.useState)({}),[o,c]=(0,Je.useState)({}),s=(0,Je.useMemo)(()=>({getActiveInGroup:I=>t[I]??null,setActiveInGroup:(I,b)=>n(T=>({...T,[I]:b})),isModifierActive:I=>o[I]??!1,setModifierActive:(I,b)=>c(T=>({...T,[I]:b})),toggleModifier:I=>c(b=>({...b,[I]:!b[I]}))}),[t,o]);return(0,oo.jsx)(no.Provider,{value:s,children:e})};function $t(){let e=(0,Je.useContext)(no);if(!e)throw new Error("useToolbar must be used within DockableDesktopProvider");return e}var Ee=require("react");var ao=require("react/jsx-runtime");function lr(){let e=new Map,t=new Set,n=()=>t.forEach(o=>o());return{publish(o,c){return e.set(o,c),n(),()=>{e.get(o)===c&&(e.delete(o),n())}},get(o){return e.get(o)??null},subscribe(o){return t.add(o),()=>t.delete(o)}}}var Mn=(0,Ee.createContext)(null),ln=({children:e})=>{let t=(0,Ee.useMemo)(()=>lr(),[]);return(0,ao.jsx)(Mn.Provider,{value:t,children:e})};function ro(e){let t=At(),n=(0,Ee.useContext)(Mn),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 dn(){let e=ze(c=>c.activePanelId),t=(0,Ee.useContext)(Mn);if(!t)throw new Error("useActivePanelContribution must be used within PanelContributionProvider");let n=(0,Ee.useCallback)(c=>t?t.subscribe(c):()=>{},[t]),o=()=>t&&e?t.get(e):null;return(0,Ee.useSyncExternalStore)(n,o,o)}function Tn(e,t=null){return{id:e.id,label:e.label,icon:e.icon??t,renderContent:()=>e.content}}function io(e){let t=dn();return t?.toolbarItems?.length?[...e,{type:"separator"},...t.toolbarItems]:e}function so(e,t=null){let n=dn();return n?.sidebarSections?.length?[...e,...n.sidebarSections.map(o=>Tn(o,t))]:e}var Nt=require("react/jsx-runtime"),co=({contextMenuAdapter:e=bt,...t})=>{let n=(0,lo.useContext)(Et),o=(0,Nt.jsx)(Bt,{children:(0,Nt.jsx)(Ut,{...t,children:(0,Nt.jsx)(ln,{children:(0,Nt.jsx)(nn,{children:t.children})})})});return n!==null?o:(0,Nt.jsx)(en,{adapter:e,formatMessageProvider:t.formatMessage,children:o})};var Ie=require("react");var Te=require("react/jsx-runtime"),dr=({modal:e,index:t,isTopmost:n})=>{let{close:o,openModal:c,updateInstance:s,setDirty:I}=ot(),b=He(),T=Ge(),{dir:y}=ze(),{modalClass:C,modalBodyClass:P}=je(),S=(0,Ie.useRef)(null),{id:L,Component:N,props:_,options:g,dirty:M,dirtyOptions:R}=e,D=g,[m,w]=(0,Ie.useState)(D.icon||null),$=(0,Ie.useRef)(D);$.current=D;let H=he(D.title,b),l=(0,Ie.useCallback)(async B=>{if(B?.force){o(L);return}if(S.current){if(!await S.current())return;o(L);return}if(M){c(rt,{title:R?.title||T.unsavedChangesTitle,message:R?.message||{id:T.unsavedChangesMessage.id,defaultMessage:T.unsavedChangesMessage.defaultMessage,values:{title:H}},alert:R?.alert,alertType:R?.alertType||"danger",useYesNoTitles:!0,onOK:()=>o(L)},{size:"small"});return}o(L)},[o,c,L,M,R,H,T]),k=(0,Ie.useCallback)((B,z)=>I(L,B,z),[I,L]),W=(0,Ie.useCallback)(B=>s(L,{options:{...$.current,title:B}}),[s,L]),K=(0,Ie.useCallback)(B=>w(B),[]),j=(0,Ie.useCallback)(B=>(S.current=B,()=>{S.current=null}),[]),fe=(0,Ie.useMemo)(()=>({requestClose:l,setDirty:k,setTitle:W,setIcon:K,onCloseRequested:j,containerType:"modal",instanceId:L}),[l,k,W,K,j,L]),ne=M?`${H} *`:H,ve=D.size?`rdd-modal-size-${D.size}`:"rdd-modal-size-auto",ie=D.closable!==!1;(0,Ie.useEffect)(()=>{if(!n||!ie)return;let B=z=>{z.key==="Escape"&&(z.stopPropagation(),l())};return document.addEventListener("keydown",B),()=>document.removeEventListener("keydown",B)},[l,ie,n]);let U=`calc(var(--rdd-z-base, 1000) + 9000 + ${t*10})`;return(0,Te.jsxs)("div",{className:"rdd-modal-overlay",style:{zIndex:U},dir:y,children:[(0,Te.jsx)("div",{className:"rdd-modal-curtain",onClick:ie?()=>l():void 0}),(0,Te.jsxs)("div",{className:`rdd-modal-window ${ve} ${C??""}`,children:[(0,Te.jsxs)("div",{className:"rdd-modal-header",children:[m&&(0,Te.jsx)("div",{className:"rdd-modal-icon",children:m}),(0,Te.jsx)("h4",{className:"rdd-modal-title",children:ne}),ie&&(0,Te.jsx)("button",{className:"rdd-modal-close-button",onClick:()=>l(),title:b(T.closeTooltip),type:"button",children:(0,Te.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,Te.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),(0,Te.jsx)("div",{className:`rdd-modal-body ${P??""}`,children:(0,Te.jsx)(tt,{value:fe,children:(0,Te.jsx)(N,{..._,panelId:L})})})]})]})},cr=()=>{let{modals:e}=Ze();return e.length===0?null:(0,Te.jsx)(Te.Fragment,{children:e.map((t,n)=>(0,Te.jsx)(dr,{modal:t,index:n,isTopmost:n===e.length-1},t.id))})},uo=cr;var Se=require("react");var cn=require("react");function po(e){let[t,n]=(0,cn.useState)(null);return(0,cn.useLayoutEffect)(()=>{let o=e.current?.parentElement;if(!o)return;let c=()=>{let I=o.getBoundingClientRect();n({top:I.top,left:I.left,right:window.innerWidth-I.right,height:I.height})};c();let s=new ResizeObserver(c);return s.observe(o),window.addEventListener("resize",c),()=>{s.disconnect(),window.removeEventListener("resize",c)}},[e]),t}var xe=require("react/jsx-runtime"),un=({panel:e,position:t,defaultWidth:n,containerRect:o})=>{let{close:c,openModal:s,updateInstance:I,setDirty:b,registerCloseHandler:T,unregisterCloseHandler:y}=ot(),{modals:C}=Ze(),P=He(),S=Ge(),{dir:L}=ze(),{sidePanelClass:N,sidePanelBodyClass:_}=je(),g=(0,Se.useRef)(null),{id:M,Component:R,props:D,options:m,dirty:w,dirtyOptions:$}=e,H=m,[l,k]=(0,Se.useState)(H.icon||null),W=(0,Se.useRef)(H);W.current=H;let K=he(H.title,P),j=(0,Se.useCallback)(async ee=>{if(ee?.force){c(M);return}if(g.current){if(!await g.current())return;c(M);return}if(w){s(rt,{title:$?.title||S.unsavedChangesTitle,message:$?.message||{id:S.unsavedChangesMessage.id,defaultMessage:S.unsavedChangesMessage.defaultMessage,values:{title:K}},alert:$?.alert,alertType:$?.alertType||"danger",useYesNoTitles:!0,onOK:()=>c(M)},{size:"small"});return}c(M)},[c,s,M,w,$,K,S]),fe=(0,Se.useCallback)(async()=>g.current?await g.current():!w,[w]);(0,Se.useEffect)(()=>(T(M,fe),()=>y(M)),[M,fe,T,y]);let ne=(0,Se.useCallback)((ee,ye)=>b(M,ee,ye),[b,M]),ve=(0,Se.useCallback)(ee=>I(M,{options:{...W.current,title:ee}}),[I,M]),ie=(0,Se.useCallback)(ee=>k(ee),[]),U=(0,Se.useCallback)(ee=>(g.current=ee,()=>{g.current=null}),[]),B=(0,Se.useMemo)(()=>({requestClose:j,setDirty:ne,setTitle:ve,setIcon:ie,onCloseRequested:U,containerType:t==="left"?"left-panel":"right-panel",instanceId:M}),[j,ne,ve,ie,U,t,M]),z=w?`${K} *`:K;(0,Se.useEffect)(()=>{let ee=ye=>{ye.key==="Escape"&&C.length===0&&j()};return document.addEventListener("keydown",ee),()=>document.removeEventListener("keydown",ee)},[j,C.length]);let X=H.width||n||400,oe=typeof X=="number"?`${X}px`:X;return(0,xe.jsx)("div",{className:`rdd-side-panel rdd-side-panel-${t} rdd-side-panel-visible ${N??""}`,style:{width:oe,...o?{top:o.top,height:o.height,bottom:"auto",...t==="right"?{right:o.right}:{left:o.left}}:{}},dir:L,children:(0,xe.jsxs)("div",{className:"rdd-side-panel-window",children:[(0,xe.jsxs)("div",{className:"rdd-side-panel-header",children:[l&&(0,xe.jsx)("div",{className:"rdd-side-panel-icon",children:l}),(0,xe.jsx)("h4",{className:"rdd-side-panel-title",children:z}),(0,xe.jsx)("button",{className:"rdd-side-panel-close-button",onClick:()=>j(),title:P(S.closeTooltip),type:"button",children:(0,xe.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,xe.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),(0,xe.jsx)("div",{className:`rdd-side-panel-body ${_??""}`,children:(0,xe.jsx)(tt,{value:B,children:(0,xe.jsx)(R,{...D,panelId:M})})})]})})},Sn=({children:e})=>{let t=(0,Se.useRef)(null),n=po(t);return(0,xe.jsx)("div",{ref:t,style:{display:"contents"},children:e(n)})},ur=({defaultWidth:e})=>{let{leftPanel:t,rightPanel:n}=Ze();return(0,xe.jsx)(Sn,{children:o=>(0,xe.jsxs)(xe.Fragment,{children:[t&&(0,xe.jsx)(un,{panel:t,position:"left",defaultWidth:e,containerRect:o},t.id),n&&(0,xe.jsx)(un,{panel:n,position:"right",defaultWidth:e,containerRect:o},n.id)]})})},go=({defaultWidth:e})=>{let{leftPanel:t}=Ze();return(0,xe.jsx)(Sn,{children:n=>t?(0,xe.jsx)(un,{panel:t,position:"left",defaultWidth:e,containerRect:n},t.id):null})},mo=({defaultWidth:e})=>{let{rightPanel:t}=Ze();return(0,xe.jsx)(Sn,{children:n=>t?(0,xe.jsx)(un,{panel:t,position:"right",defaultWidth:e,containerRect:n},t.id):null})},fo=ur;var Q=qt(require("react"),1);var ge=require("react/jsx-runtime");function kn(e){return"renderContent"in e}function pr(e){return"render"in e}function ho(e){return e==null?[]:Array.isArray(e)?e:[e]}var yo=(0,Q.createContext)(null),Po=(0,Q.createContext)(null);function gr({tabId:e,onClose:t,onOpen:n,setActiveTabId:o,children:c}){let s=(0,Q.useMemo)(()=>({tabId:e,onClose:t,onOpen:n,openTab:I=>o(I)}),[e,t,n,o]);return(0,ge.jsx)(Po.Provider,{value:s,children:c})}function bo(e,t,n,o){if(pr(e))return(0,ge.jsx)(Q.default.Fragment,{children:e.render()},e.id??t);if(kn(e)){if(e.hidden)return null;let c=n===e.id;return(0,ge.jsx)("button",{type:"button",onClick:()=>o(e.id),className:`rdd-sidebar-tab-btn${c?" rdd-active":""}`,title:e.label,"aria-pressed":c,children:e.icon},e.id)}return(0,ge.jsx)("button",{type:"button",onClick:e.onClick,disabled:e.disabled,className:"rdd-sidebar-tab-btn rdd-sidebar-header-action-btn",title:e.label,"aria-label":e.label,children:e.icon},e.id??t)}var vo=(0,Q.memo)(function({tabs:t,headerEntries:n,footerEntries:o,activeTabId:c,isVisible:s,position:I,onTabClick:b}){return(0,ge.jsx)("div",{style:{width:s?"56px":"0px",height:"100%",overflow:"hidden",transition:"width 0.25s cubic-bezier(0.4, 0, 0.2, 1)",flexShrink:0},children:(0,ge.jsxs)("div",{className:`rdd-sidebar-tabs-strip rdd-${I}${n.length?" rdd-sidebar-tabs-strip--has-header-action":""}${o.length?" rdd-sidebar-tabs-strip--has-footer-action":""}`,style:{width:"56px",height:"100%"},children:[n.length>0&&(0,ge.jsx)("div",{className:"rdd-sidebar-header-area",children:n.map((T,y)=>bo(T,y,c,b))}),(0,ge.jsx)("div",{className:"rdd-sidebar-tabs-list",children:t.map(T=>{if(T.hidden)return null;let y=c===T.id;return(0,ge.jsx)("button",{type:"button",onClick:()=>b(T.id),className:`rdd-sidebar-tab-btn${y?" rdd-active":""}`,title:T.label,"aria-pressed":y,children:T.icon},T.id)})}),o.length>0&&(0,ge.jsx)("div",{className:"rdd-sidebar-footer-area",children:o.map((T,y)=>bo(T,y,c,b))})]})})});function mr({position:e,currentWidth:t,minWidth:n,maxWidth:o,onWidthChange:c,rootRef:s}){return(0,ge.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,y=[{el:T,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"]}),Ue({element:T,pointerId:b.pointerId,startClientX:b.clientX,startClientY:b.clientY,captureStart:()=>t,activeClasses:y,onMove:(C,P,S)=>{let L=e==="right"?S-C:S+C;c(Math.max(n,Math.min(o,L)))}})}})}var xo=(0,Q.forwardRef)(function({position:t="right",tabs:n,headerAction:o,footerAction:c,defaultWidth:s,minWidth:I=150,maxWidth:b=600,onWidthChange:T,activeTabId:y,onActiveTabChange:C,visible:P,onVisibilityChange:S,stripVisible:L,onStripVisibilityChange:N,showCloseButton:_=!1,hideDefaultHeader:g=!1,renderHeader:M,children:R},D){let m=y!==void 0,[w,$]=(0,Q.useState)(()=>s??280),H=(0,Q.useCallback)(te=>{$(te),T?.(te)},[T]),[l,k]=(0,Q.useState)(null),W=m?y:l,K=(0,Q.useMemo)(()=>ho(o),[o]),j=(0,Q.useMemo)(()=>ho(c),[c]),fe=(0,Q.useMemo)(()=>K.filter(kn),[K]),ne=(0,Q.useMemo)(()=>j.filter(kn),[j]),ve=(0,Q.useMemo)(()=>[...fe,...n,...ne],[fe,n,ne]),[ie,U]=(0,Q.useState)(()=>new Set),B=(0,Q.useMemo)(()=>{let te=new Set(ie);W&&te.add(W);for(let pe of ve)pe.eagerMount&&te.add(pe.id);return te},[ie,W,ve]),z=(0,Q.useRef)(W??null);(0,Q.useEffect)(()=>{z.current=W??null},[W]);let X=(0,Q.useRef)(w);(0,Q.useEffect)(()=>{X.current=w},[w]);let oe=(0,Q.useRef)(null),ee=(0,Q.useCallback)(te=>{U(te!==null?pe=>{if(pe.has(te))return pe;let Fe=new Set(pe);return Fe.add(te),Fe}:pe=>{let Fe=!1,$e=new Set(pe);for(let Ke of pe){let _e=ve.find(lt=>lt.id===Ke);_e&&!_e.eagerMount&&!_e.preserveState&&($e.delete(Ke),Fe=!0)}return Fe?$e:pe}),m||k(te),C?.(te)},[m,C,ve]);(0,Q.useEffect)(()=>{W!=null&&!ve.some(te=>te.id===W)&&ee(null)},[W,ve,ee]),(0,Q.useImperativeHandle)(D,()=>({openTab:te=>ee(te),closeDrawer:()=>ee(null),getActiveTab:()=>z.current,show:()=>S?.(!0),hide:()=>S?.(!1),toggle:()=>S?.(P===!1),showStrip:()=>N?.(!0),hideStrip:()=>N?.(!1),setWidth:te=>H(Math.max(I,Math.min(b,te))),getWidth:()=>X.current}),[ee,P,S,N,H,I,b]);let ye=(0,Q.useCallback)(te=>{ee(W===te?null:te)},[W,ee]),we=(0,Q.useCallback)(()=>ee(null),[ee]),Re=g||M!=null,We=(0,Q.useRef)(!1);(0,Q.useEffect)(()=>{process.env.NODE_ENV==="development"&&(!_||!Re||We.current||(We.current=!0,console.warn('[react-dockable-desktop] `showCloseButton` has no effect because the default header is suppressed (`hideDefaultHeader` is set, or `renderHeader` was passed). The "X" close button only renders as part of the library\'s own default header, which is skipped in this case. Add your own close control inside `renderHeader` (or `renderContent`), wired to its `onClose` parameter or `useSidebarTab().onClose`.')))},[_,Re]);let Oe=(0,Q.useMemo)(()=>({openTab:te=>ee(te),closeDrawer:()=>ee(null),getActiveTab:()=>z.current}),[ee]),Ne=P!==!1,Ye=Ne&&L!==!1,Ae=Ne&&W!=null,Xe=(0,ge.jsx)("div",{className:`rdd-sidebar-content-drawer rdd-${t}`,style:{flexBasis:Ae?`${w}px`:"0px",flexShrink:1,flexGrow:0,minWidth:Ae?`${I}px`:"0px",maxWidth:Ae?`${b}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:ve.map(te=>{if(!B.has(te.id))return null;let Fe=W===te.id,$e=()=>ee(te.id);return(0,ge.jsxs)("div",{style:{display:Fe?"flex":"none",flexDirection:"column",height:"100%",width:"100%"},children:[Re?M?.(te,we,$e):(0,ge.jsxs)("div",{className:"rdd-sidebar-drawer-header",children:[(0,ge.jsx)("span",{className:"rdd-sidebar-header-title",children:te.label}),_&&(0,ge.jsx)("button",{type:"button",className:"rdd-sidebar-drawer-close-button",onClick:we,title:"Close","aria-label":"Close",children:(0,ge.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,ge.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),(0,ge.jsx)("div",{className:"rdd-sidebar-drawer-body",children:(0,ge.jsx)(gr,{tabId:te.id,onClose:we,onOpen:$e,setActiveTabId:ee,children:te.renderContent(te.id,we,$e)})})]},te.id)})}),at=Ae?(0,ge.jsx)(mr,{position:t,currentWidth:w,minWidth:I,maxWidth:b,onWidthChange:H,rootRef:oe}):null;return(0,ge.jsx)(yo.Provider,{value:Oe,children:(0,ge.jsxs)("div",{ref:oe,style:{display:"flex",flexDirection:"row",width:"100%",height:"100%",overflow:"hidden"},children:[t==="left"&&(0,ge.jsx)(vo,{tabs:n,headerEntries:K,footerEntries:j,activeTabId:W,isVisible:Ye,position:t,onTabClick:ye}),t==="left"&&Xe,t==="left"&&at,(0,ge.jsx)("div",{style:{flex:"1 1 0%",minWidth:0,overflow:"hidden"},children:R}),t==="right"&&at,t==="right"&&Xe,t==="right"&&(0,ge.jsx)(vo,{tabs:n,headerEntries:K,footerEntries:j,activeTabId:W,isVisible:Ye,position:t,onTabClick:ye})]})})});function Co(){let e=(0,Q.useContext)(yo);if(!e)throw new Error("useSidebar must be used within Sidebar");return e}function wo(){let e=(0,Q.useContext)(Po);if(!e)throw new Error("useSidebarTab must be used within a Sidebar tab renderContent tree");return e}var Le=require("react"),Ro=require("react-dom");var ke=require("react/jsx-runtime");function fr(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 hr({item:e,position:t,toolbar:n}){let[o,c]=(0,Le.useState)(!1),[s,I]=(0,Le.useState)(null),b=(0,Le.useRef)(null),T=(0,Le.useRef)(null),y=e.activeItemId!==void 0,C=y?e.activeItemId:n.getActiveInGroup(e.id),P=e.items.find(g=>!("type"in g)&&g.id===C),S=C!==null,L=P?.icon??e.defaultIcon,N=P?.label??e.label,_=()=>{e.disabled||(!o&&b.current&&I(b.current.getBoundingClientRect()),c(g=>!g))};return(0,Le.useLayoutEffect)(()=>{if(!o||!T.current)return;let g=T.current,M=g.getBoundingClientRect(),R=8;M.right>window.innerWidth-R&&(g.style.left=`${Math.max(R,window.innerWidth-M.width-R)}px`,g.style.right="auto"),M.left<R&&(g.style.left=`${R}px`,g.style.right="auto"),M.bottom>window.innerHeight-R&&(g.style.top=`${Math.max(R,window.innerHeight-M.height-R)}px`,g.style.bottom="auto"),M.top<R&&(g.style.top=`${R}px`,g.style.bottom="auto")},[o]),(0,Le.useEffect)(()=>{if(!o)return;let g=M=>{let R=M.target;b.current?.contains(R)||T.current?.contains(R)||c(!1)};return document.addEventListener("mousedown",g),()=>document.removeEventListener("mousedown",g)},[o]),(0,Le.useEffect)(()=>{if(!o)return;let g=M=>{M.key==="Escape"&&c(!1)};return document.addEventListener("keydown",g),()=>document.removeEventListener("keydown",g)},[o]),(0,ke.jsxs)(ke.Fragment,{children:[(0,ke.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:_,children:L}),o&&s&&(0,Ro.createPortal)((0,ke.jsx)("div",{ref:T,className:`rdd-toolbar-group-flyout rdd-${t}`,style:fr(s,t,document.documentElement.dir==="rtl"),role:"menu",children:e.items.map((g,M)=>{if("type"in g)return(0,ke.jsx)("div",{className:"rdd-toolbar-group-flyout-sep",role:"separator"},`sep-${M}`);let R=C===g.id;return(0,ke.jsxs)("button",{type:"button",className:`rdd-toolbar-group-flyout-item${R?" rdd-active":""}`,disabled:g.disabled,role:"menuitem","aria-pressed":R,onClick:()=>{y?e.onActiveItemChange?.(g.id):n.setActiveInGroup(e.id,g.id),g.onActivate?.(g.id),c(!1)},children:[(0,ke.jsx)("span",{className:"rdd-toolbar-group-flyout-icon",children:g.icon}),(0,ke.jsx)("span",{className:"rdd-toolbar-group-flyout-label",children:g.label}),g.shortcut&&(0,ke.jsx)("span",{className:"rdd-toolbar-group-flyout-shortcut",children:g.shortcut})]},g.id)})}),document.body)]})}function br(e,t,n,o){switch(e.type){case"separator":return(0,ke.jsx)("div",{className:"rdd-toolbar-separator",role:"separator"},`sep-${t}`);case"action":return(0,ke.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 c=n.getActiveInGroup(e.group)===e.id;return(0,ke.jsx)("button",{type:"button",className:`rdd-toolbar-btn rdd-toolbar-btn-radio${c?" rdd-active":""}`,title:e.label,"aria-label":e.label,"aria-pressed":c,disabled:e.disabled,onClick:()=>{n.setActiveInGroup(e.group,e.id),e.onActivate?.(e.id)},children:e.icon},e.id)}case"toggle":{let c=e.active!==void 0,s=c?e.active:n.isModifierActive(e.id);return(0,ke.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:()=>{c||n.toggleModifier(e.id),e.onToggle?.(!s)},children:e.icon},e.id)}case"group":return(0,ke.jsx)(hr,{item:e,position:o,toolbar:n},e.id)}}var Mo=(0,Le.forwardRef)(function({position:t="left",items:n,visible:o,onVisibilityChange:c,className:s,style:I},b){let T=$t(),y=t==="left"||t==="right";(0,Le.useImperativeHandle)(b,()=>({show:()=>c?.(!0),hide:()=>c?.(!1),toggle:()=>c?.(o===!1)}),[o,c]);let C=o!==!1?{}:y?{width:"0px"}:{height:"0px"};return(0,ke.jsx)("div",{className:`rdd-toolbar-strip rdd-${t}${s?` ${s}`:""}`,role:"toolbar","aria-orientation":y?"vertical":"horizontal",style:{...C,...I},children:n.map((P,S)=>br(P,S,T,t))})});var Ce=require("react"),In=require("react-dom"),me=require("react/jsx-runtime"),Ln=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))}},De=new Ln,To=Object.assign((e,t)=>De.show(e,t),{info:(e,t)=>De.show(e,{...t,type:"info"}),success:(e,t)=>De.show(e,{...t,type:"success"}),warning:(e,t)=>De.show(e,{...t,type:"warning"}),error:(e,t)=>De.show(e,{...t,type:"error"}),dismiss:e=>De.dismiss(e),promise:(e,t,n)=>{let o=De.show(t.pending,{...n,type:"info",duration:0});return e.then(c=>{let s=typeof t.success=="function"?t.success(c):t.success;De.update(o,s,{type:"success",duration:n?.duration??5e3})},c=>{let s=typeof t.error=="function"?t.error(c):t.error;De.update(o,s,{type:"error",duration:n?.duration??5e3})}),e}}),vr=()=>(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"})]}),yr=()=>(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"})]}),Pr=()=>(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"})]}),xr=()=>(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"})]}),Cr=()=>(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"})}),wr={info:(0,me.jsx)(vr,{}),success:(0,me.jsx)(yr,{}),warning:(0,me.jsx)(Pr,{}),error:(0,me.jsx)(xr,{})};function Rr({id:e,message:t,options:n,exiting:o,isLeft:c,showProgress:s,pauseOnHover:I,animation:b,onDismiss:T,onExited:y}){let C=(0,Ce.useRef)(null),P=(0,Ce.useRef)(null),S=(0,Ce.useRef)(null),L=(0,Ce.useRef)(n.duration),N=(0,Ce.useRef)(0),[_,g]=(0,Ce.useState)(!1),M=b==="none"?"rdd-toast--visible":b==="fade"?"rdd-toast--fade-entering":c?"rdd-toast--entering-left":"rdd-toast--entering",[R,D]=(0,Ce.useState)(M);(0,Ce.useLayoutEffect)(()=>{let k=C.current,W=P.current;if(!k||!W||o)return;let K=()=>{k.style.maxHeight=`${k.scrollHeight}px`};K();let j=new ResizeObserver(K);return j.observe(W),()=>j.disconnect()},[o]),(0,Ce.useEffect)(()=>{if(b==="none")return;let k=requestAnimationFrame(()=>D("rdd-toast--visible"));return()=>cancelAnimationFrame(k)},[]);let m=(0,Ce.useCallback)(k=>{k<=0||(N.current=Date.now(),S.current=setTimeout(()=>T(e),k))},[e,T]);(0,Ce.useEffect)(()=>(S.current&&clearTimeout(S.current),L.current=n.duration,m(n.duration),()=>{S.current&&clearTimeout(S.current)}),[n.duration,m]),(0,Ce.useEffect)(()=>{if(!o)return;let k=C.current;if(!k||b==="none"){y(e);return}let W=j=>{j.propertyName==="max-height"&&y(e)};k.addEventListener("transitionend",W);let K=setTimeout(()=>y(e),520);return()=>{k.removeEventListener("transitionend",W),clearTimeout(K)}},[o,e,y,b]);let w=()=>{!I||n.duration===0||(S.current&&(clearTimeout(S.current),S.current=null,L.current=Math.max(0,L.current-(Date.now()-N.current))),g(!0))},$=()=>{!I||n.duration===0||(g(!1),m(L.current))},H=["rdd-toast",n.type&&`rdd-toast--${n.type}`,R,o&&"rdd-toast--exiting",_&&"rdd-toast--paused"].filter(Boolean).join(" "),l=n.icon!==void 0?n.icon:n.type?wr[n.type]:null;return(0,me.jsxs)("div",{ref:C,role:"status","aria-live":"polite",className:H,onMouseEnter:w,onMouseLeave:$,children:[l&&l,(0,me.jsx)("div",{ref:P,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:()=>T(e),"aria-label":"Close notification",children:(0,me.jsx)(Cr,{})}),s&&n.duration>0&&(0,me.jsx)("div",{className:"rdd-toast__progress",style:{animationDuration:`${n.duration}ms`}})]})}function En(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 So({position:e="top-right",maxVisible:t=3,defaultDuration:n=5e3,defaultClosable:o=!0,pauseOnHover:c=!0,animation:s="slide",newestOnTop:I=!1,progressBar:b=!1,width:T=320,adapter:y}){let[C,P]=(0,Ce.useState)([]),S=(0,Ce.useRef)([]),L=(0,Ce.useRef)(C);L.current=C;let N=(0,Ce.useCallback)(D=>{P(m=>m.map(w=>w.id===D?{...w,exiting:!0}:w)),L.current.find(m=>m.id===D)?.options.onClose?.()},[]),_=(0,Ce.useCallback)(D=>{let m=S.current.shift()??null;P(w=>{let $=w.filter(l=>l.id!==D);if(!m)return $;let H=En(m.rawOpts,n,o);return[...$,{id:m.id,message:m.message,options:H,exiting:!1}]})},[n,o]);if((0,Ce.useEffect)(()=>{if(y)return;let D=m=>{if(m.kind==="show"){let w=En(m.rawOpts,n,o),$={id:m.id,message:m.message,options:w,exiting:!1},H={id:m.id,message:m.message,rawOpts:m.rawOpts};P(l=>l.find(K=>K.id===m.id)?l.map(K=>K.id===m.id?{...K,message:m.message,options:w}:K):l.filter(K=>!K.exiting).length<t?[...l,$]:(S.current.some(K=>K.id===H.id)||S.current.push(H),l))}else m.kind==="update"?(P(w=>w.map($=>{if($.id!==m.id)return $;let H={...$.options,...m.patch,id:$.id};return{...$,message:m.message,options:H}})),S.current=S.current.map(w=>w.id!==m.id?w:{...w,message:m.message,rawOpts:{...w.rawOpts,...m.patch}})):m.kind==="dismiss"&&(m.id===void 0?(P(w=>w.map($=>({...$,exiting:!0}))),S.current=[]):L.current.some($=>$.id===m.id)?N(m.id):S.current=S.current.filter($=>$.id!==m.id))};return De.subscribe(D),()=>De.unsubscribe(D)},[y,t,n,o,N]),(0,Ce.useEffect)(()=>{if(!y)return;let D=m=>{if(m.kind==="show"){let w=En(m.rawOpts,n,o);y.show(m.id,m.message,w)}else m.kind==="update"?y.update(m.id,m.message,m.patch):m.kind==="dismiss"&&y.dismiss(m.id)};return De.subscribe(D),()=>De.unsubscribe(D)},[y,n,o]),y){if(!y.Container)return null;let D=y.Container;return(0,In.createPortal)((0,me.jsx)(D,{position:e}),document.body)}let g=e.endsWith("left"),M="";I===!0&&(M="rdd-toast-container--newest-top"),I===!1&&(M="rdd-toast-container--newest-bottom");let R=["rdd-toast-container",`rdd-toast-container--${e}`,M].filter(Boolean).join(" ");return(0,In.createPortal)((0,me.jsx)("div",{className:R,style:{width:T},"aria-label":"Notifications","aria-live":"polite",children:C.map(D=>(0,me.jsx)(Rr,{id:D.id,message:D.message,options:D.options,exiting:D.exiting,isLeft:g,showProgress:b,pauseOnHover:c,animation:s,onDismiss:N,onExited:_},D.id))}),document.body)}var Y=qt(require("react"),1),Eo=require("react-dom");var Z=require("react/jsx-runtime"),Mr=["top-left","top-right","bottom-left","bottom-right"],Io=(0,Y.createContext)(null),Lo=(0,Y.createContext)(null),No=(0,Y.createContext)(null),st=80;function Tr(e,t,n){let o=e.getBoundingClientRect(),c=t-o.left,s=n-o.top;return c<st&&s<st?"top-left":c>o.width-st&&s<st?"top-right":c<st&&s>o.height-st?"bottom-left":c>o.width-st&&s>o.height-st?"bottom-right":null}function zo({children:e,className:t,style:n}){let[o,c]=(0,Y.useState)({}),[s,I]=(0,Y.useState)({}),[b,T]=(0,Y.useState)({"top-left":[],"top-right":[],"bottom-left":[],"bottom-right":[]}),[y,C]=(0,Y.useState)({}),[P,S]=(0,Y.useState)(null),[L,N]=(0,Y.useState)(null),[_,g]=(0,Y.useState)(null),[M,R]=(0,Y.useState)(()=>new Map),D=(0,Y.useRef)(100),m=(0,Y.useRef)(null),w=(0,Y.useCallback)((U,B)=>(c(z=>({...z,[U]:B})),()=>c(z=>{let X={...z};return delete X[U],X})),[]),$=(0,Y.useCallback)(U=>{D.current+=1;let B=D.current;I(z=>({...z,[U]:B})),g(U)},[]),H=(0,Y.useCallback)((U,B)=>{T(z=>{let X={"top-left":z["top-left"].filter(oe=>oe!==U),"top-right":z["top-right"].filter(oe=>oe!==U),"bottom-left":z["bottom-left"].filter(oe=>oe!==U),"bottom-right":z["bottom-right"].filter(oe=>oe!==U)};return X[B]=[...X[B],U],X})},[]),l=(0,Y.useCallback)(U=>{T(B=>({"top-left":B["top-left"].filter(z=>z!==U),"top-right":B["top-right"].filter(z=>z!==U),"bottom-left":B["bottom-left"].filter(z=>z!==U),"bottom-right":B["bottom-right"].filter(z=>z!==U)}))},[]),k=(0,Y.useCallback)((U,B)=>{C(z=>z[U]===B?z:{...z,[U]:B})},[]),W=(0,Y.useCallback)((U,B)=>{R(z=>{let X=new Map(z);return X.set(U,B),X})},[]),K=(0,Y.useCallback)(U=>{R(B=>{let z=new Map(B);return z.delete(U),z})},[]),j=(0,Y.useCallback)(()=>{R(new Map)},[]),fe=(0,Y.useMemo)(()=>Array.from(M.keys()),[M]),ne=(0,Y.useMemo)(()=>({registerToolbar:w,insetTop:o.top??0,insetBottom:o.bottom??0}),[w,o]),ve=(0,Y.useMemo)(()=>({managedWindowIds:fe,openManaged:W,closeManaged:K,closeAllManaged:j}),[fe,W,K,j]),ie=(0,Y.useMemo)(()=>({topId:_,zOrders:s,focusWindow:$,containerRef:m,stacks:b,dockedSizes:y,dockWindow:H,undockWindow:l,reportDockedSize:k,draggingId:P,setDraggingId:S,hoveredZone:L,setHoveredZone:N,insetTop:o.top??0,insetBottom:o.bottom??0}),[_,s,$,b,y,H,l,k,P,L,o]);return(0,Z.jsx)(Io.Provider,{value:ne,children:(0,Z.jsx)(Lo.Provider,{value:ve,children:(0,Z.jsx)(No.Provider,{value:ie,children:(0,Z.jsxs)("div",{ref:m,className:`rdd-panel-overlay-root${P!==null?" rdd-dragging-active":""}${t?" "+t:""}`,style:n,children:[e,P!==null&&(0,Z.jsx)(Sr,{hoveredZone:L}),Array.from(M.entries()).map(([U,B])=>(0,Z.jsx)(Nn,{id:U,title:B.title,icon:B.icon,open:!0,onClose:()=>K(U),defaultAnchor:B.anchor??"top-right",defaultWidth:B.width??320,defaultHeight:B.height??240,children:B.content},U))]})})})})}function Sr({hoveredZone:e}){return(0,Z.jsx)(Z.Fragment,{children:Mr.map(t=>(0,Z.jsx)("div",{className:`rdd-panel-float-dropzone rdd-panel-float-dropzone--${t}${e===t?" rdd-panel-float-dropzone--hovered":""}`,"aria-hidden":"true"},t))})}function Do({position:e,variant:t="transparent",buttonVariant:n="ghost",buttonSize:o,style:c,className:s,children:I}){let b=(0,Y.useContext)(Io),T=(0,Y.useRef)(null),y=(0,Y.useRef)(null);(0,Y.useLayoutEffect)(()=>{let N=T.current;if(!N||!b)return;let _=()=>{let M=e==="top"||e==="bottom"?N.offsetHeight:N.offsetWidth;y.current?.(),y.current=b.registerToolbar(e,M)};_();let g=new ResizeObserver(_);return g.observe(N),()=>{g.disconnect(),y.current?.(),y.current=null}},[e,b?.registerToolbar]);let C={position:"absolute",zIndex:5,pointerEvents:"none",boxSizing:"border-box"};e==="top"?(C.top=0,C.left=0,C.right=0):e==="bottom"?(C.bottom=0,C.left=0,C.right=0):e==="left"?(C.insetInlineStart=0,C.top=b?.insetTop??0,C.bottom=b?.insetBottom??0):(C.insetInlineEnd=0,C.top=b?.insetTop??0,C.bottom=b?.insetBottom??0);let S=e==="left"||e==="right"?{...(b?.insetTop??0)>0?{paddingTop:0}:{},...(b?.insetBottom??0)>0?{paddingBottom:0}:{}}:{},L=o!=null?{"--rdd-panel-toolbar-btn-size":`${o}px`}:{};return(0,Z.jsx)("div",{ref:T,className:`rdd-panel-toolbar rdd-panel-toolbar--${e}${s?" "+s:""}`,"data-variant":t,"data-btn-variant":n,style:{...C,...S,...L,...c},children:I})}function Wo({icon:e,onClick:t,disabled:n,title:o,variant:c}){return(0,Z.jsx)("button",{type:"button",className:"rdd-panel-toolbar-btn",onClick:t,disabled:n,title:o,"aria-label":o,...c?{"data-variant":c}:{},children:e})}function Oo({icon:e,active:t,onToggle:n,disabled:o,title:c,variant:s}){return(0,Z.jsx)("button",{type:"button",className:`rdd-panel-toolbar-btn${t?" rdd-panel-toolbar-btn--active":""}`,onClick:n,disabled:o,title:c,"aria-label":c,"aria-pressed":t,...s?{"data-variant":s}:{},children:e})}function Ao(){return(0,Z.jsx)("span",{className:"rdd-panel-toolbar__sep","aria-hidden":"true"})}function Fo(){return(0,Z.jsx)("span",{className:"rdd-panel-toolbar__spacer","aria-hidden":"true"})}function _o({children:e}){return(0,Z.jsx)("span",{className:"rdd-panel-toolbar__item",children:e})}function Ho({children:e}){return(0,Z.jsx)("div",{className:"rdd-panel-toolbar__center",children:e})}function Bo({placeholder:e="Search\u2026",onSearch:t,onSelect:n}){let[o,c]=(0,Y.useState)(!1),[s,I]=(0,Y.useState)(""),[b,T]=(0,Y.useState)([]),[y,C]=(0,Y.useState)(null),P=(0,Y.useRef)(null),S=(0,Y.useRef)(null),L=(0,Y.useRef)(null),N=(0,Y.useRef)(null),_=()=>{c(!0),setTimeout(()=>S.current?.focus({preventScroll:!0}),0)},g=()=>{c(!1),I(""),T([]),C(null),L.current?.abort(),N.current&&clearTimeout(N.current)},M=H=>{let l=H.target.value;if(I(l),L.current?.abort(),N.current&&clearTimeout(N.current),!l.trim()){T([]),C(null);return}N.current=setTimeout(async()=>{let k=new AbortController;L.current=k;try{let W=await t(l,k.signal);if(!k.signal.aborted){T(W);let K=P.current;if(K&&W.length>0){let j=K.getBoundingClientRect(),fe=Math.max(j.width,240),ne=j.left;ne+fe>window.innerWidth-8&&(ne=window.innerWidth-fe-8),C({top:j.bottom+4,left:ne,width:fe})}else C(null)}}catch{}},300)},R=H=>{n(H),g()},D=H=>{P.current?.contains(H.relatedTarget)||g()},m=H=>{H.key==="Escape"&&g()},w=(0,Y.useMemo)(()=>{let H={};for(let l of b){let k=l.group??"";H[k]||(H[k]=[]),H[k].push(l)}return H},[b]),$=(0,Z.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,Z.jsx)("circle",{cx:"6.5",cy:"6.5",r:"4.5"}),(0,Z.jsx)("line",{x1:"10",y1:"10",x2:"14",y2:"14"})]});return o?(0,Z.jsxs)("div",{ref:P,className:"rdd-panel-toolbar-search rdd-panel-toolbar-search--open",onBlur:D,children:[(0,Z.jsx)("button",{type:"button",className:"rdd-panel-toolbar-btn",onClick:g,"aria-label":"Close search",title:"Close search",children:$}),(0,Z.jsx)("input",{ref:S,className:"rdd-panel-toolbar-search__input",type:"text",value:s,onChange:M,onKeyDown:m,placeholder:e,autoComplete:"off"}),y&&b.length>0&&(0,Eo.createPortal)((0,Z.jsx)("div",{className:"rdd-panel-toolbar-search__dropdown",style:{position:"fixed",top:y.top,left:y.left,width:y.width,zIndex:9502},onMouseDown:H=>H.preventDefault(),children:Object.entries(w).map(([H,l])=>(0,Z.jsxs)(Y.default.Fragment,{children:[H&&(0,Z.jsx)("div",{className:"rdd-panel-toolbar-search__group",children:H}),l.map(k=>(0,Z.jsxs)("button",{type:"button",className:"rdd-panel-toolbar-search__item",onClick:()=>R(k),children:[k.icon&&(0,Z.jsx)("span",{className:"rdd-panel-toolbar-search__item-icon",children:k.icon}),(0,Z.jsx)("span",{className:"rdd-panel-toolbar-search__item-label",children:k.label}),k.description&&(0,Z.jsx)("span",{className:"rdd-panel-toolbar-search__item-desc",children:k.description})]},k.id))]},H||"__default__"))}),document.body)]}):(0,Z.jsx)("div",{ref:P,className:"rdd-panel-toolbar-search",children:(0,Z.jsx)("button",{type:"button",className:"rdd-panel-toolbar-btn",onClick:_,title:"Search","aria-label":"Search",children:$})})}function Nn(e){let t=(0,Y.useContext)(No);return e.open?(0,Z.jsx)(Lr,{ctx:t,...e},e.id):null}var kr=120,Er=60,ko=8,Ir=8;function Lr({id:e,title:t,icon:n,defaultAnchor:o,defaultWidth:c,defaultHeight:s,children:I,ctx:b,onClose:T}){let y=(0,Y.useContext)(Mt)?.isRtl??!1,[C,P]=(0,Y.useState)("docked"),[S,L]=(0,Y.useState)(o),[N,_]=(0,Y.useState)(null),[g,M]=(0,Y.useState)({w:c,h:s}),R=(0,Y.useRef)(null),D=(0,Y.useRef)(C);D.current=C;let m=(0,Y.useRef)(N);m.current=N;let w=(0,Y.useRef)(g);w.current=g;let $=(0,Y.useRef)(null);(0,Y.useLayoutEffect)(()=>(b?.dockWindow(e,o),()=>{b?.undockWindow(e)}),[]),(0,Y.useEffect)(()=>{b?.reportDockedSize(e,g.h)},[g.h]);let H=b?.zOrders[e]??101,l=!b||b.topId===e,k=()=>{let B=R.current?.offsetParent;return{cw:B?.clientWidth??9999,ch:B?.clientHeight??9999}},W=()=>{b?.focusWindow(e)},K=B=>{if(B.button!==0)return;B.preventDefault();let z,X;if(D.current==="docked"){let oe=R.current,ee=b?.containerRef?.current;if(oe&&ee){let ye=oe.getBoundingClientRect(),we=ee.getBoundingClientRect();z=ye.left-we.left,X=ye.top-we.top}else z=ko,X=b?.insetTop??0;b?.undockWindow(e),P("free"),_({x:z,y:X})}else z=m.current?.x??0,X=m.current?.y??0;$.current={mouseX:B.clientX,mouseY:B.clientY,posX:z,posY:X,hasDragged:!1},R.current?.setPointerCapture(B.pointerId),document.body.classList.add("rdd-dragging-active")},j=B=>z=>{if(z.button!==0)return;z.preventDefault(),z.stopPropagation();let X=0,oe=0;if(D.current==="free")X=m.current?.x??0,oe=m.current?.y??0;else{let ye=R.current,we=ye?.offsetParent;if(ye&&we){let Re=ye.getBoundingClientRect(),We=we.getBoundingClientRect();X=Re.left-We.left,oe=Re.top-We.top}}let ee={x:X,y:oe,w:w.current.w,h:w.current.h};Ue({element:z.currentTarget,pointerId:z.pointerId,startClientX:z.clientX,startClientY:z.clientY,captureStart:()=>ee,activeClasses:[{el:document.body,classes:["rdd-resizing-active"]}],onMove:(ye,we,Re)=>{let{cw:We,ch:Oe}=k(),{x:Ne,y:Ye,w:Ae,h:Xe}=It(B,ye,we,Re,{minW:kr,minH:Er,maxW:We-Re.x,maxH:Oe-Re.y,minX:0,minY:0});M({w:Ae,h:Xe}),D.current==="free"&&_({x:Ne,y:Ye})}})},fe=B=>{if($.current){let z=$.current;if(!z.hasDragged){if(Math.abs(B.clientX-z.mouseX)+Math.abs(B.clientY-z.mouseY)<4)return;z.hasDragged=!0,b?.setDraggingId(e)}let{cw:X,ch:oe}=k(),ee=Math.max(0,Math.min(z.posX+B.clientX-z.mouseX,X-w.current.w)),ye=Math.max(0,Math.min(z.posY+B.clientY-z.mouseY,oe-w.current.h));_({x:ee,y:ye});let we=b?.containerRef?.current;if(we){let Re=Tr(we,B.clientX,B.clientY);b?.setHoveredZone(Re&&y?_t(Re):Re)}}},ne=()=>{if($.current){let B=b?.hoveredZone;B&&(b?.dockWindow(e,B),L(B),P("docked"),_(null)),b?.setHoveredZone(null),b?.setDraggingId(null)}document.body.classList.remove("rdd-dragging-active"),$.current=null},ve=()=>{$.current&&(b?.setHoveredZone(null),b?.setDraggingId(null)),document.body.classList.remove("rdd-dragging-active"),$.current=null},ie;if(C==="docked"&&b){let B=b.stacks[S]??[],z=B.indexOf(e),X=0;for(let oe=0;oe<z;oe++)X+=(b.dockedSizes[B[oe]]??s)+Ir;ie={width:g.w,height:g.h,zIndex:H,transition:"top 0.2s ease, bottom 0.2s ease",opacity:z===-1?0:void 0,pointerEvents:z===-1?"none":void 0},ie[S.endsWith("-right")?"insetInlineEnd":"insetInlineStart"]=ko,S.startsWith("top-")?ie.top=b.insetTop+X:ie.bottom=b.insetBottom+X}else ie={left:N?.x??0,top:N?.y??0,width:g.w,height:g.h,zIndex:H};return(0,Z.jsxs)("div",{ref:R,dir:y?"rtl":"ltr",className:`rdd-panel-float${l?" rdd-panel-float--active":""}`,style:ie,onPointerDown:W,onPointerMove:fe,onPointerUp:ne,onPointerCancel:ve,children:[(0,Z.jsxs)("div",{className:"rdd-panel-float__header",onPointerDown:K,children:[n&&(0,Z.jsx)("span",{className:"rdd-panel-float__icon",children:n}),(0,Z.jsx)("span",{className:"rdd-panel-float__title",children:t}),(0,Z.jsx)("button",{type:"button",className:"rdd-panel-float__close",onClick:T,onPointerDown:B=>B.stopPropagation(),title:"Close","aria-label":"Close",children:(0,Z.jsxs)("svg",{width:"8",height:"8",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",children:[(0,Z.jsx)("line",{x1:"1",y1:"1",x2:"9",y2:"9"}),(0,Z.jsx)("line",{x1:"9",y1:"1",x2:"1",y2:"9"})]})})]}),(0,Z.jsx)("div",{className:"rdd-panel-float__body",children:I}),C==="free"&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)("div",{className:"rdd-resize-handle rdd-resize-n",onPointerDown:j("n")}),(0,Z.jsx)("div",{className:"rdd-resize-handle rdd-resize-ne",onPointerDown:j("ne")}),(0,Z.jsx)("div",{className:"rdd-resize-handle rdd-resize-nw",onPointerDown:j("nw")})]}),(0,Z.jsx)("div",{className:"rdd-resize-handle rdd-resize-e",onPointerDown:j("e")}),(0,Z.jsx)("div",{className:"rdd-resize-handle rdd-resize-se",onPointerDown:j("se")}),(0,Z.jsx)("div",{className:"rdd-resize-handle rdd-resize-s",onPointerDown:j("s")}),(0,Z.jsx)("div",{className:"rdd-resize-handle rdd-resize-sw",onPointerDown:j("sw")}),(0,Z.jsx)("div",{className:"rdd-resize-handle rdd-resize-w",onPointerDown:j("w")})]})}function $o(){let[e,t]=(0,Y.useState)(!1),n=(0,Y.useCallback)(()=>{t(!0)},[]),o=(0,Y.useCallback)(()=>{t(!1)},[]);return{isOpen:e,open:n,close:o}}var Nr=[];function Go(){let e=(0,Y.useContext)(Lo),t=e?.managedWindowIds??Nr;return(0,Y.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