react-dockable-desktop 6.0.0 → 6.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1,8 +1,8 @@
1
- "use strict";var Xo=Object.create;var Kt=Object.defineProperty;var Vo=Object.getOwnPropertyDescriptor;var Ko=Object.getOwnPropertyNames;var qo=Object.getPrototypeOf,jo=Object.prototype.hasOwnProperty;var Zo=(e,t)=>{for(var n in t)Kt(e,n,{get:t[n],enumerable:!0})},Wn=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let d of Ko(t))!jo.call(e,d)&&d!==n&&Kt(e,d,{get:()=>t[d],enumerable:!(o=Vo(t,d))||o.enumerable});return e};var qt=(e,t,n)=>(n=e!=null?Xo(qo(e)):{},Wn(t||!e||!e.__esModule?Kt(n,"default",{value:e,enumerable:!0}):n,e)),Uo=e=>Wn(Kt({},"__esModule",{value:!0}),e);var Dr={};Zo(Dr,{ConfirmationForm:()=>at,ContextMenu:()=>Qt,ContextMenuProvider:()=>en,DefaultContextMenuAdapter:()=>vt,DockableDesktopProvider:()=>po,FormContainerContext:()=>jt,FormContainerProvider:()=>rt,LeftPanelRenderer:()=>fo,ModalStackRenderer:()=>go,PanelContributionProvider:()=>ln,PanelFloatingWindow:()=>Dn,PanelOverlayRoot:()=>Do,PanelProvider:()=>nn,PanelRegistry:()=>At,PanelRegistryClass:()=>ht,PanelToolbar:()=>Wo,PanelToolbarItem:()=>Ho,PanelToolbarSeparator:()=>Fo,RightPanelRenderer:()=>ho,SecondarySidebar:()=>Co,SidePanelRenderer:()=>bo,Sidebar:()=>In,ToastContainer:()=>ko,Toolbar:()=>To,ToolbarButton:()=>Oo,ToolbarCenter:()=>Bo,ToolbarProvider:()=>$t,ToolbarSearchInput:()=>$o,ToolbarSpacer:()=>_o,ToolbarToggle:()=>Ao,WindowManager:()=>oo,WindowManagerProvider:()=>Ut,WorkspaceClient:()=>an,computeResizedRect:()=>Lt,defaultPredefinedMessages:()=>Mt,formatLabel:()=>fe,isSerializable:()=>bt,sidebarSectionToTab:()=>Tn,startPointerDrag:()=>Qe,toast:()=>So,useActivePanelContribution:()=>dn,useColorScheme:()=>rn,useFormContainer:()=>ft,useFormatMessage:()=>He,useMergedSidebarTabs:()=>lo,useMergedToolbarItems:()=>ao,usePanelActions:()=>st,usePanelContext:()=>Xn,usePanelContextMenu:()=>Vn,usePanelContribution:()=>so,usePanelFloatingWindow:()=>Go,usePanelFloatingWindowManager:()=>Yo,usePanelId:()=>Ft,usePanelSize:()=>On,usePanelState:()=>Je,usePredefinedMessages:()=>$e,useRegistry:()=>St,useShowContextMenu:()=>jn,useSidebar:()=>wo,useSidebarTab:()=>Ro,useStyleClasses:()=>Ue,useToolbar:()=>Gt,useWindowManagerActions:()=>kt,useWindowManagerState:()=>Fe});module.exports=Uo(Dr);var V=qt(require("react"),1),Cn=require("react-dom");var D=require("react");var Rt=require("react"),Jo={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,Rt.createContext)(Jo),rt=jt.Provider,ft=()=>(0,Rt.useContext)(jt),On=()=>{let{onResize:e,getDimensions:t}=ft();return(0,Rt.useSyncExternalStore)(n=>e?e(()=>n()):()=>{},()=>t?t():null)};var ht=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())}},At=new ht;var Mt={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 An=require("react");function bt(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,An.isValidElement)(e))return!1;if(Array.isArray(e))return e.every(bt);let n=Object.getPrototypeOf(e);return n!==Object.prototype&&n!==null?!1:Object.values(e).every(bt)}var it=require("react/jsx-runtime"),Tt=(0,D.createContext)(null),Zt=(0,D.createContext)(null),_n=(0,D.createContext)(null),Hn=(0,D.createContext)(null),Bn=(0,D.createContext)(Mt),$n=(0,D.createContext)({}),Ue=()=>(0,D.useContext)($n),Gn=(0,D.createContext)(At),St=()=>(0,D.useContext)(Gn),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))}},Qo={type:"leaf",id:"group-default",panels:[],activePanelId:null};function Yn(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:d,stickyBottom:s,...I}=n;return{...I,anchor:o}}return n});return{gridRoot:e.gridRoot,floating:t,minimized:e.minimized,panels:e.panels}}function er(e){if(e)try{let t=Yn(JSON.parse(e));if(t)return{...t,activePanelId:Object.keys(t.panels)[0]??null}}catch{}return{gridRoot:Qo,floating:[],minimized:[],panels:{},activePanelId:null}}var Ut=({children:e,client:t,formatMessage:n,predefinedMessages:o,dir:d,modalClass:s,modalBodyClass:I,sidePanelClass:b,sidePanelBodyClass:M,windowClass:y,windowBodyClass:C,zIndexBase:P})=>{let S=(0,D.useRef)(t?.registry??At).current,L=t?.config.formatMessage??n,z=t?.config.predefinedMessages??o,_=t?.config.dir??d,g=t?.config.zIndexBase??P??1e3,[T,w]=(0,D.useState)(()=>({...er(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))})),N=(0,D.useRef)(T);N.current=T;let m=(0,D.useRef)(new Set);(0,D.useEffect)(()=>{m.current.forEach(i=>i())},[T]);let R=(0,D.useCallback)(()=>N.current,[]),A=(0,D.useCallback)(i=>(m.current.add(i),()=>m.current.delete(i)),[]),H=(0,D.useRef)({}),l=(0,D.useRef)({}),k=(0,D.useMemo)(()=>({...Mt,...z}),[z]),Y=(0,D.useRef)(new hn),K=(0,D.useRef)(g);(0,D.useEffect)(()=>(document.documentElement.style.setProperty("--rdd-z-base",String(g)),()=>{document.documentElement.style.removeProperty("--rdd-z-base")}),[g]);let J=(0,D.useCallback)((i,v)=>Y.current.subscribe(i,v),[]),oe=(0,D.useCallback)((i,v)=>{Y.current.publish(i,v)},[]),ne=(0,D.useCallback)((i,v)=>{let c=typeof i.x=="string"?parseFloat(i.x):i.x,a=typeof i.y=="string"?parseFloat(i.y):i.y,G=typeof i.width=="string"?parseFloat(i.width):i.width,r=typeof i.height=="string"?parseFloat(i.height):i.height;isNaN(c)&&(c=300),isNaN(a)&&(a=150),isNaN(G)&&(G=450),isNaN(r)&&(r=350);let x=E=>v.some(O=>{let F=typeof O.x=="string"?parseFloat(O.x):O.x,U=typeof O.y=="string"?parseFloat(O.y):O.y;return!O.maximized&&Math.abs(F-E.x)<20&&Math.abs(U-E.y)<20}),u=0;for(;x({x:c,y:a})&&u<10;)c+=30,a+=30,u++;let p=Math.max(100,window.innerWidth||1024),h=Math.max(100,window.innerHeight||768);return(c+G>p||a+r>h)&&(c=100+u%5*30,a=100+u%5*30),c=Math.max(0,Math.min(c,p-100)),a=Math.max(0,Math.min(a,h-40)),{x:c,y:a,width:G,height:r}},[]),Ce=(0,D.useCallback)(i=>{w(v=>{let c=v.panels[i];if(!c)return v;if(c.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(c.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}})},[]),se=(i,v)=>{if(i.type==="leaf"){let c=i.panels.indexOf(v);if(c===-1)return i;let a=i.panels.filter(x=>x!==v),G=i.activePanelId===v?a[c]||a[c-1]||a[0]||null:i.activePanelId,r={...i,panels:a,activePanelId:G};return a.length===0&&!i.keepOnEmpty?null:r}else{let c=i.children.map(r=>se(r,v)).filter(r=>r!==null);if(c.length===0)return null;if(c.length===1)return c[0];let a=i.sizes.slice(0,c.length),G=a.reduce((r,x)=>r+x,0);return{...i,children:c,sizes:a.map(r=>r/G)}}},q=(i,v,c)=>{if(i.type==="leaf"){if(i.id===v){let a=i.panels.includes(c)?i.panels:[...i.panels,c];return{...i,panels:a,activePanelId:c}}return i}else return{...i,children:i.children.map(a=>q(a,v,c))}},$=i=>{if(i.type==="leaf")return i.id;for(let v of i.children){let c=$(v);if(c)return c}return null},W=(0,D.useCallback)((i,v,c)=>{let a=i;if(c?.dedupeKey!==void 0){let h=Object.values(N.current.panels).find(E=>E.component===v&&E.dedupeKey===c.dedupeKey);h&&(a=h.id)}let G=!(a in N.current.panels),r=a!==i,x=c?.focus!==!1,p=c?.props!==void 0?bt(c.props):!0;w(h=>{let E=h.panels[a],O=S.get(v),F=c?.title||c?.title||O?.defaultOptions?.title||a,U=c?.initialTarget||O?.defaultOptions?.initialTarget||"docked",ae=O?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350},j=x?a:h.activePanelId;if(E)if(E.state==="minimized"){let ce=h.minimized.filter(pe=>pe.id!==a);if(U==="floating"||!h.gridRoot){K.current+=1;let pe=ne(ae,h.floating);return{...h,minimized:ce,floating:[...h.floating,{...pe,id:a,z:K.current}],panels:{...h.panels,[a]:{...E,state:"floating"}},activePanelId:j}}else{let pe=$(h.gridRoot)||"group-default";return{...h,minimized:ce,gridRoot:q(h.gridRoot,pe,a),panels:{...h.panels,[a]:{...E,state:"docked"}},activePanelId:j}}}else{if(E.state==="floating")return x&&Ce(a),h;{let ce=pe=>pe.type==="leaf"?pe.panels.includes(a)?{...pe,activePanelId:a}:pe:{...pe,children:pe.children.map(ce)};return{...h,gridRoot:ce(h.gridRoot),activePanelId:j}}}let ue={id:a,title:F,component:v,state:U==="tabbed"?"docked":U,props:c?.props,serializable:p,dedupeKey:c?.dedupeKey},le={...h.panels,[a]:ue};if(U==="floating"){K.current+=1;let ce=ne(ae,h.floating),pe=c?.anchor??O?.defaultOptions?.defaultAnchor??null;return{...h,floating:[...h.floating,{...ce,id:a,z:K.current,anchor:pe}],panels:le,activePanelId:j}}else{let ce=$(h.gridRoot)||"group-default";return{...h,gridRoot:q(h.gridRoot,ce,a),panels:le,activePanelId:j}}}),G&&Y.current.publish("panel:opened",{id:a,component:v}),(G||r)&&Y.current.publish("layout:changed",{})},[ne,Ce]),B=(0,D.useCallback)(i=>{let v=i in N.current.panels;w(c=>{let a=c.panels[i];if(!a||S.get(a.component)?.defaultOptions?.canClose===!1)return c;delete H.current[i],delete l.current[i];let r={...c.panels};delete r[i];let x=se(c.gridRoot,i);return{...c,gridRoot:x||{type:"leaf",id:"group-default",panels:[],activePanelId:null},floating:c.floating.filter(u=>u.id!==i),minimized:c.minimized.filter(u=>u.id!==i),panels:r}}),v&&(Y.current.publish("panel:closed",{id:i}),Y.current.publish("layout:changed",{}))},[]),Q=(0,D.useCallback)((i,v)=>{H.current[i]=v},[]),we=(0,D.useCallback)(i=>{delete H.current[i]},[]),xe=(0,D.useCallback)((i,v)=>{l.current[i]=v},[]),ee=(0,D.useCallback)(i=>{delete l.current[i]},[]),be=(0,D.useCallback)((i,v,c)=>{w(a=>{let G=a.panels[i];return G?{...a,panels:{...a.panels,[i]:{...G,dirty:v,dirtyOptions:c}}}:a})},[]),De=(0,D.useCallback)((i,v)=>{w(c=>{let a=c.panels[i];return a?{...c,panels:{...c.panels,[i]:{...a,title:v}}}:c})},[]),We=(0,D.useCallback)(async(i,v)=>{if(v?.force){B(i);return}let c=H.current[i];if(c&&!await c())return;let a=N.current.panels[i];if(a?.dirty)if(v?.onConfirm){if(!await v.onConfirm(a.dirtyOptions))return}else return;B(i)},[B]),Oe=(0,D.useCallback)(i=>{let v=N.current.panels[i]?.state!=="minimized"&&i in N.current.panels;w(c=>{let a=c.panels[i];if(!a||a.state==="minimized"||S.get(a.component)?.defaultOptions?.canMinimize===!1)return c;let r,x;if(a.state==="floating"){let p=c.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 O=p(E);if(O)return O}return null};x=p(c.gridRoot)??void 0}let u=se(c.gridRoot,i);return{...c,gridRoot:u||{type:"leaf",id:"group-default",panels:[],activePanelId:null},floating:c.floating.filter(p=>p.id!==i),minimized:[...c.minimized,{id:i,title:a.title,component:a.component}],panels:{...c.panels,[i]:{...a,state:"minimized",previousState:a.state,lastFloatingRect:r,lastLeafId:x}}}}),v&&(Y.current.publish("panel:minimized",{id:i}),Y.current.publish("layout:changed",{}))},[]),Ke=(0,D.useCallback)(i=>{let v=N.current.panels[i]?.state==="minimized";w(c=>{let a=c.panels[i];if(!a||a.state!=="minimized")return c;let G=c.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,c.floating);return{...c,minimized:G,floating:[...c.floating,{...p,id:i,z:K.current,anchor:a.lastFloatingRect?.anchor??null}],panels:{...c.panels,[i]:{...a,state:"floating"}}}}else{let x=(E,O)=>E.type==="leaf"?E.id===O:E.children.some(F=>x(F,O)),u=a.lastLeafId&&x(c.gridRoot,a.lastLeafId),p=S.get(a.component),h=p?.defaultOptions?.canDrag!==!1;if(u)return{...c,minimized:G,gridRoot:q(c.gridRoot,a.lastLeafId,i),panels:{...c.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},O=ne(E,c.floating);return{...c,minimized:G,floating:[...c.floating,{...O,id:i,z:K.current,anchor:a.lastFloatingRect?.anchor??null}],panels:{...c.panels,[i]:{...a,state:"floating"}}}}else{let E=$(c.gridRoot)||"group-default";return{...c,minimized:G,gridRoot:q(c.gridRoot,E,i),panels:{...c.panels,[i]:{...a,state:"docked"}}}}}}),v&&(Y.current.publish("panel:restored",{id:i}),Y.current.publish("layout:changed",{}))},[ne]),Ge=(0,D.useCallback)((i,v,c)=>{w(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=se(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:c??null}],panels:{...a.panels,[i]:{...G,state:"floating"}}}})},[ne]),Ye=(0,D.useCallback)((i,v)=>{w(c=>{let a=c.panels[i];if(!a)return c;let G=c.floating.filter(u=>u.id!==i),r=se(c.gridRoot,i),x=v||$(r||c.gridRoot)||"group-default";return{...c,gridRoot:q(r||c.gridRoot,x,i),floating:G,panels:{...c.panels,[i]:{...a,state:"docked"}}}})},[]),qe=(i,v,c,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:[c],activePanelId:c},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=>qe(r,v,c,a,G))}},je=(0,D.useCallback)(i=>{w(v=>({...v,draggedPanelId:i}))},[]),Re=(0,D.useCallback)((i,v,c)=>{w(a=>{let G=a.panels[i];if(!G)return a;let r=a.floating.filter(p=>p.id!==i),x=se(a.gridRoot,i),u;return c==="center"?u=q(x||a.gridRoot,v,i):u=qe(x||a.gridRoot,v,i,c,a.splitRatio),{...a,gridRoot:u,floating:r,panels:{...a.panels,[i]:{...G,state:"docked"}},draggedPanelId:null}})},[]),re=(0,D.useCallback)((i,v)=>{w(c=>{let a=c.panels[i];if(!a)return c;let G=c.floating.filter(O=>O.id!==i),r=se(c.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||c.gridRoot]:[r||c.gridRoot,x],h=c.edgeSplitRatio,E={type:"branch",orientation:u,sizes:v==="left"||v==="top"?[h,1-h]:[1-h,h],children:p};return{...c,gridRoot:E,floating:G,panels:{...c.panels,[i]:{...a,state:"docked"}},draggedPanelId:null}})},[]),Ee=(0,D.useCallback)((i,v,c)=>{w(a=>{let G=a.panels[i];if(!G)return a;let r=se(a.gridRoot,i),x=h=>{if(h.type==="leaf"){if(h.id===v){let E=h.panels.filter(U=>U!==i),O=Math.max(0,Math.min(c,E.length)),F=[...E];return F.splice(O,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}})},[]),Ae=(0,D.useCallback)(i=>{w(v=>{let c=G=>{if(G.type==="leaf")return G.id===i&&G.canClose!==!1?null:G;{let r=G.children.map(p=>c(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=c(v.gridRoot);return{...v,gridRoot:a||{type:"leaf",id:"group-default",panels:[],activePanelId:null}}})},[]),Ie=(0,D.useCallback)(i=>{w(v=>({...v,floating:v.floating.map(c=>c.id===i?{...c,maximized:!c.maximized}:c)}))},[]),tt=(0,D.useCallback)((i,v)=>{let c=(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?c(u,G+1):u);return{...a,children:x}};w(a=>({...a,gridRoot:c(a.gridRoot,0)}))},[]),nt=(0,D.useCallback)((i,v)=>{w(c=>({...c,floating:c.floating.map(a=>a.id===i?{...a,...v}:a)}))},[]),Xe=(0,D.useCallback)(()=>{let i=N.current.panels,v=[],c={};for(let[u,p]of Object.entries(i)){let h=l.current[u],E=h?.(),O=h!==void 0&&E!==void 0,F=O?E:p.props,U=O?bt(E):p.serializable;U?c[u]=O?{...p,props:F,serializable:U}:p:v.push(u)}let a=N.current.gridRoot,G=N.current.floating,r=N.current.minimized;for(let u of v)a=se(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&&Y.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:c})},[]),Ze=(0,D.useCallback)(i=>{try{let v=Yn(JSON.parse(i));if(!v)return!1;let c=Object.keys(v.panels)[0]||null;return w(a=>({...a,gridRoot:v.gridRoot,floating:v.floating,minimized:v.minimized,panels:v.panels,draggedPanelId:null,activePanelId:c})),!0}catch(v){return console.error("Failed to parse layout configuration:",v),!1}},[]),Yt=(0,D.useCallback)(i=>{w(v=>v.activePanelId===i?v:{...v,activePanelId:i})},[]),Xt=(0,D.useCallback)(i=>{w(v=>v.dir===i?v:{...v,dir:i,isRtl:i==="rtl"})},[]),Dt=(0,D.useCallback)(i=>i in N.current.panels,[]),ct=(0,D.useCallback)(()=>Object.keys(N.current.panels),[]),ut=(0,D.useCallback)((i,v)=>Object.values(N.current.panels).find(a=>a.component===i&&a.dedupeKey===v)?.id??null,[]);(0,D.useEffect)(()=>{_&&w(i=>i.dir===_?i:{...i,dir:_,isRtl:_==="rtl"})},[_]);let Ve=(0,D.useRef)(new Map),ot=(0,D.useRef)(null),Wt=(0,D.useCallback)(i=>(ot.current=i,()=>{ot.current=null}),[]),Vt=(0,D.useCallback)(i=>{ot.current?.(i)},[]),Ot=(0,D.useCallback)((i,v)=>(Ve.current.set(i,v),()=>{Ve.current.delete(i)}),[]),pt=(0,D.useCallback)(i=>Ve.current.get(i)?.()??[],[]),Pt=(0,D.useMemo)(()=>({openPanel:W,closePanel:B,minimizePanel:Oe,restorePanel:Ke,floatPanel:Ge,dockPanel:Ye,maximizePanel:Ie,updateSplitSizes:tt,updateFloatingPosition:nt,focusPanel:Ce,isOpen:Dt,getOpenPanelIds:ct,findPanelId:ut,saveLayout:Xe,loadLayout:Ze,publish:oe,subscribe:J,setDraggedPanelId:je,dockPanelToGroup:Re,movePanelOrder:Ee,closeLeafGroup:Ae,registerCloseGuard:Q,unregisterCloseGuard:we,registerStateProvider:xe,unregisterStateProvider:ee,setPanelDirty:be,updatePanelTitle:De,requestClosePanel:We,dockPanelToWorkspaceEdge:re,setActivePanel:Yt,setDirection:Xt,registerPanelContextMenu:Ot,getPanelContextMenuItems:pt,showContextMenu:Vt,registerContextMenuFn:Wt}),[W,B,Oe,Ke,Ge,Ye,Ie,tt,nt,Ce,Dt,ct,ut,Xe,Ze,oe,J,je,Re,Ee,Ae,Q,we,xe,ee,be,De,We,re,Yt,Xt,Ot,pt,Vt,Wt]),gt=i=>{let v=i.defaultMessage||i.id;return i.values&&Object.entries(i.values).forEach(([c,a])=>{v=v.replace(`{${c}}`,String(a))}),v},pn=(0,D.useMemo)(()=>({modalClass:s,modalBodyClass:I,sidePanelClass:b,sidePanelBodyClass:M,windowClass:y,windowBodyClass:C}),[s,I,b,M,y,C]);(0,D.useEffect)(()=>{if(process.env.NODE_ENV==="development")try{getComputedStyle(document.documentElement).getPropertyValue("--rdd-styles-loaded").trim()!=="1"&&console.error(`[react-dockable-desktop] styles.css is not imported.
1
+ "use strict";var tr=Object.create;var Jt=Object.defineProperty;var nr=Object.getOwnPropertyDescriptor;var or=Object.getOwnPropertyNames;var rr=Object.getPrototypeOf,ir=Object.prototype.hasOwnProperty;var sr=(e,t)=>{for(var n in t)Jt(e,n,{get:t[n],enumerable:!0})},Hn=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of or(t))!ir.call(e,a)&&a!==n&&Jt(e,a,{get:()=>t[a],enumerable:!(o=nr(t,a))||o.enumerable});return e};var Qt=(e,t,n)=>(n=e!=null?tr(rr(e)):{},Hn(t||!e||!e.__esModule?Jt(n,"default",{value:e,enumerable:!0}):n,e)),ar=e=>Hn(Jt({},"__esModule",{value:!0}),e);var Xr={};sr(Xr,{ConfirmationForm:()=>Pt,ContextMenu:()=>rn,ContextMenuProvider:()=>sn,DefaultContextMenuAdapter:()=>It,DockableDesktopProvider:()=>vo,FormContainerContext:()=>en,FormContainerProvider:()=>bt,LeftPanelRenderer:()=>xo,ModalStackRenderer:()=>yo,PanelContributionProvider:()=>gn,PanelFloatingWindow:()=>_n,PanelOverlayRoot:()=>Yo,PanelProvider:()=>ln,PanelRegistry:()=>Xt,PanelRegistryClass:()=>Tt,PanelToolbar:()=>Xo,PanelToolbarItem:()=>Zo,PanelToolbarSeparator:()=>qo,RightPanelRenderer:()=>Co,SecondarySidebar:()=>ko,SidePanelRenderer:()=>wo,Sidebar:()=>Wn,ToastContainer:()=>Do,Toolbar:()=>zo,ToolbarButton:()=>Vo,ToolbarCenter:()=>Uo,ToolbarProvider:()=>Zt,ToolbarSearchInput:()=>Jo,ToolbarSpacer:()=>jo,ToolbarToggle:()=>Ko,WindowManager:()=>co,WindowManagerProvider:()=>nn,WorkspaceClient:()=>pn,computeResizedRect:()=>Bt,defaultPredefinedMessages:()=>Wt,formatLabel:()=>Pe,isSerializable:()=>kt,sidebarSectionToTab:()=>Ln,startPointerDrag:()=>gt,toast:()=>No,useActivePanelContribution:()=>fn,useColorScheme:()=>cn,useFormContainer:()=>St,useFormatMessage:()=>et,useMergedSidebarTabs:()=>mo,useMergedToolbarItems:()=>fo,usePanelActions:()=>yt,usePanelContext:()=>Un,usePanelContextMenu:()=>Jn,usePanelContribution:()=>go,usePanelFloatingWindow:()=>Qo,usePanelFloatingWindowManager:()=>er,usePanelId:()=>Vt,usePanelSize:()=>Bn,usePanelState:()=>pt,usePredefinedMessages:()=>rt,useRegistry:()=>Ot,useShowContextMenu:()=>to,useSidebar:()=>Io,useSidebarTab:()=>Eo,useStyleClasses:()=>ut,useToolbar:()=>Ut,useWindowManagerActions:()=>Ft,useWindowManagerState:()=>Je});module.exports=ar(Xr);var V=Qt(require("react"),1),Tn=require("react-dom");var O=require("react");var Dt=require("react"),lr={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:()=>()=>{}},en=(0,Dt.createContext)(lr),bt=en.Provider,St=()=>(0,Dt.useContext)(en),Bn=()=>{let{onResize:e,getDimensions:t}=St();return(0,Dt.useSyncExternalStore)(n=>e?e(()=>n()):()=>{},()=>t?t():null)};var Tt=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())}},Xt=new Tt;var Wt={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 $n=require("react");function kt(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,$n.isValidElement)(e))return!1;if(Array.isArray(e))return e.every(kt);let n=Object.getPrototypeOf(e);return n!==Object.prototype&&n!==null?!1:Object.values(e).every(kt)}var vt=require("react/jsx-runtime"),At=(0,O.createContext)(null),tn=(0,O.createContext)(null),Yn=(0,O.createContext)(null),Xn=(0,O.createContext)(null),Vn=(0,O.createContext)(Wt),Kn=(0,O.createContext)({}),ut=()=>(0,O.useContext)(Kn),qn=(0,O.createContext)(Xt),Ot=()=>(0,O.useContext)(qn),Pn=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))}},dr={type:"leaf",id:"group-default",panels:[],activePanelId:null};function jn(e,t){let n=t.panels[e];if(!n||n.state==="minimized")return!1;if(t.floating.some(a=>a.id===e))return!0;let o=a=>a.type==="leaf"?a.activePanelId===e:a.children.some(o);return t.gridRoot?o(t.gridRoot):!1}function xn(e){let t=s=>s!==null&&!!e.panels[s]&&e.panels[s].state!=="minimized",n=s=>{if(s.type==="leaf")return t(s.activePanelId)?s.activePanelId:null;for(let L of s.children){let S=n(L);if(S)return S}return null},o=e.gridRoot?n(e.gridRoot):null;if(o)return o;let a=null;for(let s of e.floating)t(s.id)&&(!a||s.z>a.z)&&(a=s);return a?.id??null}function Zn(e){if(!e||!e.gridRoot||!Array.isArray(e.floating)||!Array.isArray(e.minimized)||!e.panels)return null;let t=e.floating.map(s=>{if("stickyRight"in s||"stickyBottom"in s){let L=s.stickyRight&&s.stickyBottom?"bottom-right":s.stickyRight?"top-right":s.stickyBottom?"bottom-left":null,{stickyRight:S,stickyBottom:C,...y}=s;return{...y,anchor:L}}return s}),n={gridRoot:e.gridRoot,floating:t,panels:e.panels},o=typeof e.activePanelId=="string"?e.activePanelId:null,a=null;return o!==null&&(jn(o,n)?a=o:process.env.NODE_ENV==="development"&&console.warn(`[react-dockable-desktop] Ignoring the saved layout's activePanelId ("${o}") \u2014 it doesn't name a currently visible panel (it may have been closed, minimized, or excluded from the snapshot as non-serializable). Falling back to the selected tab of the first leaf in the grid.`)),a===null&&(a=xn(n)),{gridRoot:e.gridRoot,floating:t,minimized:e.minimized,panels:e.panels,activePanelId:a}}function cr(e){if(e)try{let t=Zn(JSON.parse(e));if(t)return t}catch{}return{gridRoot:dr,floating:[],minimized:[],panels:{},activePanelId:null}}var nn=({children:e,client:t,formatMessage:n,predefinedMessages:o,dir:a,modalClass:s,modalBodyClass:L,sidePanelClass:S,sidePanelBodyClass:C,windowClass:y,windowBodyClass:w,zIndexBase:u})=>{let I=(0,O.useRef)(t?.registry??Xt).current,k=t?.config.formatMessage??n,E=t?.config.predefinedMessages??o,H=t?.config.dir??a,p=t?.config.zIndexBase??u??1e3,[R,M]=(0,O.useState)(()=>({...cr(t?.initialState??null),draggedPanelId:null,dir:H||"ltr",isRtl:H==="rtl",splitRatio:Math.min(.9,Math.max(.1,t?.config.defaultSplitRatio??.5)),edgeSplitRatio:Math.min(.9,Math.max(.1,t?.config.defaultEdgeSplitRatio??.2))})),W=(0,O.useRef)(R);W.current=R;let m=(0,O.useRef)(new Set);(0,O.useEffect)(()=>{m.current.forEach(i=>i())},[R]);let x=(0,O.useCallback)(()=>W.current,[]),_=(0,O.useCallback)(i=>(m.current.add(i),()=>m.current.delete(i)),[]),F=(0,O.useRef)({}),d=(0,O.useRef)({}),z=(0,O.useMemo)(()=>({...Wt,...E}),[E]),B=(0,O.useRef)(new Pn),G=(0,O.useRef)(p);(0,O.useEffect)(()=>(document.documentElement.style.setProperty("--rdd-z-base",String(p)),()=>{document.documentElement.style.removeProperty("--rdd-z-base")}),[p]);let te=(0,O.useCallback)((i,v)=>B.current.subscribe(i,v),[]),oe=(0,O.useCallback)((i,v)=>{B.current.publish(i,v)},[]),Q=(0,O.useCallback)((i,v)=>{let c=typeof i.x=="string"?parseFloat(i.x):i.x,l=typeof i.y=="string"?parseFloat(i.y):i.y,A=typeof i.width=="string"?parseFloat(i.width):i.width,r=typeof i.height=="string"?parseFloat(i.height):i.height;isNaN(c)&&(c=300),isNaN(l)&&(l=150),isNaN(A)&&(A=450),isNaN(r)&&(r=350);let P=T=>v.some(N=>{let D=typeof N.x=="string"?parseFloat(N.x):N.x,Z=typeof N.y=="string"?parseFloat(N.y):N.y;return!N.maximized&&Math.abs(D-T.x)<20&&Math.abs(Z-T.y)<20}),g=0;for(;P({x:c,y:l})&&g<10;)c+=30,l+=30,g++;let b=Math.max(100,window.innerWidth||1024),f=Math.max(100,window.innerHeight||768);return(c+A>b||l+r>f)&&(c=100+g%5*30,l=100+g%5*30),c=Math.max(0,Math.min(c,b-100)),l=Math.max(0,Math.min(l,f-40)),{x:c,y:l,width:A,height:r}},[]),Ce=(0,O.useCallback)(i=>{M(v=>{let c=v.panels[i];if(!c)return v;if(c.state==="floating"){let l=v.floating.find(r=>r.id===i);if(!l)return v;let A=!v.floating.some(r=>r.z>l.z);return A&&v.activePanelId===i?v:(A||(G.current+=1),{...v,floating:v.floating.map(r=>r.id===i?{...r,z:A?l.z:G.current}:r),activePanelId:i})}else if(c.state==="docked"){if(v.activePanelId===i)return v;let l=A=>A.type==="leaf"?A.panels.includes(i)?{...A,activePanelId:i}:A:{...A,children:A.children.map(l)};return{...v,gridRoot:l(v.gridRoot),activePanelId:i}}return v.activePanelId===i?v:{...v,activePanelId:i}})},[]),ue=(i,v)=>{if(i.type==="leaf"){let c=i.panels.indexOf(v);if(c===-1)return i;let l=i.panels.filter(P=>P!==v),A=i.activePanelId===v?l[c]||l[c-1]||l[0]||null:i.activePanelId,r={...i,panels:l,activePanelId:A};return l.length===0&&!i.keepOnEmpty?null:r}else{let c=i.children.map(r=>ue(r,v)).filter(r=>r!==null);if(c.length===0)return null;if(c.length===1)return c[0];let l=i.sizes.slice(0,c.length),A=l.reduce((r,P)=>r+P,0);return{...i,children:c,sizes:l.map(r=>r/A)}}},K=(i,v,c)=>{if(i.type==="leaf"){if(i.id===v){let l=i.panels.includes(c)?i.panels:[...i.panels,c];return{...i,panels:l,activePanelId:c}}return i}else return{...i,children:i.children.map(l=>K(l,v,c))}},J=i=>{if(i.type==="leaf")return i.id;for(let v of i.children){let c=J(v);if(c)return c}return null},q=(0,O.useCallback)((i,v,c)=>{let l=i;if(c?.dedupeKey!==void 0){let f=Object.values(W.current.panels).find(T=>T.component===v&&T.dedupeKey===c.dedupeKey);f&&(l=f.id)}let A=!(l in W.current.panels),r=l!==i,P=c?.focus!==!1,b=c?.props!==void 0?kt(c.props):!0;M(f=>{let T=f.panels[l],N=I.get(v),D=c?.title||c?.title||N?.defaultOptions?.title||l,Z=c?.initialTarget||N?.defaultOptions?.initialTarget||"docked",se=N?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350},j=P?l:f.activePanelId;if(T)if(T.state==="minimized"){let ge=f.minimized.filter(be=>be.id!==l);if(Z==="floating"||!f.gridRoot){G.current+=1;let be=Q(se,f.floating);return{...f,minimized:ge,floating:[...f.floating,{...be,id:l,z:G.current}],panels:{...f.panels,[l]:{...T,state:"floating"}},activePanelId:j}}else{let be=J(f.gridRoot)||"group-default";return{...f,minimized:ge,gridRoot:K(f.gridRoot,be,l),panels:{...f.panels,[l]:{...T,state:"docked"}},activePanelId:j}}}else{if(T.state==="floating")return P&&Ce(l),f;{let ge=be=>be.type==="leaf"?be.panels.includes(l)?{...be,activePanelId:l}:be:{...be,children:be.children.map(ge)};return{...f,gridRoot:ge(f.gridRoot),activePanelId:j}}}let he={id:l,title:D,component:v,state:Z==="tabbed"?"docked":Z,props:c?.props,serializable:b,dedupeKey:c?.dedupeKey},de={...f.panels,[l]:he};if(Z==="floating"){G.current+=1;let ge=Q(se,f.floating),be=c?.anchor??N?.defaultOptions?.defaultAnchor??null;return{...f,floating:[...f.floating,{...ge,id:l,z:G.current,anchor:be}],panels:de,activePanelId:j}}else{let ge=J(f.gridRoot)||"group-default";return{...f,gridRoot:K(f.gridRoot,ge,l),panels:de,activePanelId:j}}}),A&&B.current.publish("panel:opened",{id:l,component:v}),(A||r)&&B.current.publish("layout:changed",{})},[Q,Ce]),X=(0,O.useCallback)(i=>{let v=i in W.current.panels;M(c=>{let l=c.panels[i];if(!l||I.get(l.component)?.defaultOptions?.canClose===!1)return c;delete F.current[i],delete d.current[i];let r={...c.panels};delete r[i];let P=ue(c.gridRoot,i)||{type:"leaf",id:"group-default",panels:[],activePanelId:null},g=c.floating.filter(f=>f.id!==i),b=c.activePanelId===i?xn({gridRoot:P,floating:g,panels:r}):c.activePanelId;return{...c,gridRoot:P,floating:g,minimized:c.minimized.filter(f=>f.id!==i),panels:r,activePanelId:b}}),v&&(B.current.publish("panel:closed",{id:i}),B.current.publish("layout:changed",{}))},[]),le=(0,O.useCallback)((i,v)=>{F.current[i]=v},[]),me=(0,O.useCallback)(i=>{delete F.current[i]},[]),Be=(0,O.useCallback)((i,v)=>{d.current[i]=v},[]),ee=(0,O.useCallback)(i=>{delete d.current[i]},[]),$e=(0,O.useCallback)((i,v,c)=>{M(l=>{let A=l.panels[i];return A?{...l,panels:{...l.panels,[i]:{...A,dirty:v,dirtyOptions:c}}}:l})},[]),je=(0,O.useCallback)((i,v)=>{M(c=>{let l=c.panels[i];return l?{...c,panels:{...c.panels,[i]:{...l,title:v}}}:c})},[]),Xe=(0,O.useCallback)(async(i,v)=>{if(v?.force){X(i);return}let c=F.current[i];if(c&&!await c())return;let l=W.current.panels[i];if(l?.dirty)if(v?.onConfirm){if(!await v.onConfirm(l.dirtyOptions))return}else return;X(i)},[X]),Ze=(0,O.useCallback)(i=>{let v=W.current.panels[i]?.state!=="minimized"&&i in W.current.panels;M(c=>{let l=c.panels[i];if(!l||l.state==="minimized"||I.get(l.component)?.defaultOptions?.canMinimize===!1)return c;let r,P;if(l.state==="floating"){let N=c.floating.find(D=>D.id===i);N&&(r={x:Number(N.x),y:Number(N.y),width:Number(N.width),height:Number(N.height),anchor:N.anchor??null})}else if(l.state==="docked"){let N=D=>{if(D.type==="leaf")return D.panels.includes(i)?D.id:null;for(let Z of D.children){let se=N(Z);if(se)return se}return null};P=N(c.gridRoot)??void 0}let g=ue(c.gridRoot,i)||{type:"leaf",id:"group-default",panels:[],activePanelId:null},b=c.floating.filter(N=>N.id!==i),f={...c.panels,[i]:{...l,state:"minimized",previousState:l.state,lastFloatingRect:r,lastLeafId:P}},T=c.activePanelId===i?xn({gridRoot:g,floating:b,panels:f}):c.activePanelId;return{...c,gridRoot:g,floating:b,minimized:[...c.minimized,{id:i,title:l.title,component:l.component}],panels:f,activePanelId:T}}),v&&(B.current.publish("panel:minimized",{id:i}),B.current.publish("layout:changed",{}))},[]),lt=(0,O.useCallback)(i=>{let v=W.current.panels[i]?.state==="minimized";M(c=>{let l=c.panels[i];if(!l||l.state!=="minimized")return c;let A=c.minimized.filter(P=>P.id!==i);if((l.previousState||"docked")==="floating"){G.current+=1;let P=I.get(l.component),g=l.lastFloatingRect||P?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350},b=Q(g,c.floating);return{...c,minimized:A,floating:[...c.floating,{...b,id:i,z:G.current,anchor:l.lastFloatingRect?.anchor??null}],panels:{...c.panels,[i]:{...l,state:"floating"}}}}else{let P=(T,N)=>T.type==="leaf"?T.id===N:T.children.some(D=>P(D,N)),g=l.lastLeafId&&P(c.gridRoot,l.lastLeafId),b=I.get(l.component),f=b?.defaultOptions?.canDrag!==!1;if(g)return{...c,minimized:A,gridRoot:K(c.gridRoot,l.lastLeafId,i),panels:{...c.panels,[i]:{...l,state:"docked"}}};if(f){G.current+=1;let T=l.lastFloatingRect||b?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350},N=Q(T,c.floating);return{...c,minimized:A,floating:[...c.floating,{...N,id:i,z:G.current,anchor:l.lastFloatingRect?.anchor??null}],panels:{...c.panels,[i]:{...l,state:"floating"}}}}else{let T=J(c.gridRoot)||"group-default";return{...c,minimized:A,gridRoot:K(c.gridRoot,T,i),panels:{...c.panels,[i]:{...l,state:"docked"}}}}}}),v&&(B.current.publish("panel:restored",{id:i}),B.current.publish("layout:changed",{}))},[Q]),it=(0,O.useCallback)((i,v,c)=>{M(l=>{let A=l.panels[i];if(!A||I.get(A.component)?.defaultOptions?.canDrag===!1)return l;let P=I.get(A.component),g=v||P?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350},b=ue(l.gridRoot,i);G.current+=1;let f=Q(g,l.floating);return{...l,gridRoot:b||{type:"leaf",id:"group-default",panels:[],activePanelId:null},floating:[...l.floating,{...f,id:i,z:G.current,anchor:c??null}],panels:{...l.panels,[i]:{...A,state:"floating"}}}})},[Q]),st=(0,O.useCallback)((i,v)=>{M(c=>{let l=c.panels[i];if(!l)return c;let A=c.floating.filter(g=>g.id!==i),r=ue(c.gridRoot,i),P=v||J(r||c.gridRoot)||"group-default";return{...c,gridRoot:K(r||c.gridRoot,P,i),floating:A,panels:{...c.panels,[i]:{...l,state:"docked"}}}})},[]),nt=(i,v,c,l,A)=>{if(i.type==="leaf"){if(i.id===v){let r={type:"leaf",id:`group-split-${Date.now()}-${Math.floor(Math.random()*1e3)}`,panels:[c],activePanelId:c},P=l==="left"||l==="right"?"horizontal":"vertical",g=l==="left"||l==="top"?[r,i]:[i,r],b=l==="left"||l==="top"?[A,1-A]:[1-A,A];return{type:"branch",orientation:P,sizes:b,children:g}}return i}else return{...i,children:i.children.map(r=>nt(r,v,c,l,A))}},ot=(0,O.useCallback)(i=>{M(v=>({...v,draggedPanelId:i}))},[]),ce=(0,O.useCallback)((i,v,c)=>{M(l=>{let A=l.panels[i];if(!A)return l;let r=l.floating.filter(b=>b.id!==i),P=ue(l.gridRoot,i),g;return c==="center"?g=K(P||l.gridRoot,v,i):g=nt(P||l.gridRoot,v,i,c,l.splitRatio),{...l,gridRoot:g,floating:r,panels:{...l.panels,[i]:{...A,state:"docked"}},draggedPanelId:null}})},[]),ie=(0,O.useCallback)((i,v)=>{M(c=>{let l=c.panels[i];if(!l)return c;let A=c.floating.filter(N=>N.id!==i),r=ue(c.gridRoot,i),P={type:"leaf",id:`group-edge-${Date.now()}-${Math.floor(Math.random()*1e3)}`,panels:[i],activePanelId:i},g=v==="left"||v==="right"?"horizontal":"vertical",b=v==="left"||v==="top"?[P,r||c.gridRoot]:[r||c.gridRoot,P],f=c.edgeSplitRatio,T={type:"branch",orientation:g,sizes:v==="left"||v==="top"?[f,1-f]:[1-f,f],children:b};return{...c,gridRoot:T,floating:A,panels:{...c.panels,[i]:{...l,state:"docked"}},draggedPanelId:null}})},[]),Ne=(0,O.useCallback)((i,v,c)=>{M(l=>{let A=l.panels[i];if(!A)return l;let r=ue(l.gridRoot,i),P=f=>{if(f.type==="leaf"){if(f.id===v){let T=f.panels.filter(Z=>Z!==i),N=Math.max(0,Math.min(c,T.length)),D=[...T];return D.splice(N,0,i),{...f,panels:D,activePanelId:i}}return f}else return{...f,children:f.children.map(P)}},g=P(r||l.gridRoot),b=l.floating.filter(f=>f.id!==i);return{...l,gridRoot:g,floating:b,panels:{...l.panels,[i]:{...A,state:"docked"}},draggedPanelId:null}})},[]),Y=(0,O.useCallback)(i=>{M(v=>{let c=A=>{if(A.type==="leaf")return A.id===i&&A.canClose!==!1?null:A;{let r=A.children.map(b=>c(b)).filter(b=>b!==null);if(r.length===0)return null;if(r.length===1)return r[0];let P=A.sizes.slice(0,r.length),g=P.reduce((b,f)=>b+f,0);return{...A,children:r,sizes:P.map(b=>b/g)}}},l=c(v.gridRoot);return{...v,gridRoot:l||{type:"leaf",id:"group-default",panels:[],activePanelId:null}}})},[]),U=(0,O.useCallback)(i=>{M(v=>({...v,floating:v.floating.map(c=>c.id===i?{...c,maximized:!c.maximized}:c)}))},[]),fe=(0,O.useCallback)((i,v)=>{let c=(l,A)=>{if(l.type==="leaf")return l;if(A===i.length)return{...l,sizes:v};let r=i[A],P=l.children.map((g,b)=>b===r?c(g,A+1):g);return{...l,children:P}};M(l=>({...l,gridRoot:c(l.gridRoot,0)}))},[]),we=(0,O.useCallback)((i,v)=>{M(c=>({...c,floating:c.floating.map(l=>l.id===i?{...l,...v}:l)}))},[]),Re=(0,O.useCallback)(()=>{let i=W.current.panels,v=[],c={};for(let[f,T]of Object.entries(i)){let N=d.current[f],D=N?.(),Z=N!==void 0&&D!==void 0,se=Z?D:T.props,j=Z?kt(D):T.serializable;j?c[f]=Z?{...T,props:se,serializable:j}:T:v.push(f)}let l=W.current.gridRoot,A=W.current.floating,r=W.current.minimized;for(let f of v)l=ue(l,f)||{type:"leaf",id:"group-default",panels:[],activePanelId:null},A=A.filter(T=>T.id!==f),r=r.filter(T=>T.id!==f);v.length>0&&B.current.publish("layout:panels-excluded",{panels:v.map(f=>({id:f,component:i[f].component}))});let P=W.current.activePanelId,g=P!==null&&jn(P,{gridRoot:l,floating:A,panels:c})?P:null,b={version:2,...g!==null?{activePanelId:g}:{},gridRoot:l,floating:A,minimized:r,panels:c};return JSON.stringify(b)},[]),Me=(0,O.useCallback)(i=>{try{let v=Zn(JSON.parse(i));return v?(M(c=>({...c,gridRoot:v.gridRoot,floating:v.floating,minimized:v.minimized,panels:v.panels,draggedPanelId:null,activePanelId:v.activePanelId})),!0):!1}catch(v){return console.error("Failed to parse layout configuration:",v),!1}},[]),_e=(0,O.useCallback)(i=>{M(v=>v.activePanelId===i?v:{...v,activePanelId:i})},[]),Ge=(0,O.useCallback)(i=>{M(v=>v.dir===i?v:{...v,dir:i,isRtl:i==="rtl"})},[]),He=(0,O.useCallback)(i=>i in W.current.panels,[]),Le=(0,O.useCallback)(()=>Object.keys(W.current.panels),[]),dt=(0,O.useCallback)((i,v)=>Object.values(W.current.panels).find(l=>l.component===i&&l.dedupeKey===v)?.id??null,[]);(0,O.useEffect)(()=>{H&&M(i=>i.dir===H?i:{...i,dir:H,isRtl:H==="rtl"})},[H]);let Ie=(0,O.useRef)(new Map),Ee=(0,O.useRef)(null),De=(0,O.useCallback)(i=>(Ee.current=i,()=>{Ee.current=null}),[]),Ye=(0,O.useCallback)(i=>{Ee.current?.(i)},[]),Ue=(0,O.useCallback)((i,v)=>(Ie.current.set(i,v),()=>{Ie.current.delete(i)}),[]),We=(0,O.useCallback)(i=>Ie.current.get(i)?.()??[],[]),ht=(0,O.useMemo)(()=>({openPanel:q,closePanel:X,minimizePanel:Ze,restorePanel:lt,floatPanel:it,dockPanel:st,maximizePanel:U,updateSplitSizes:fe,updateFloatingPosition:we,focusPanel:Ce,isOpen:He,getOpenPanelIds:Le,findPanelId:dt,saveLayout:Re,loadLayout:Me,publish:oe,subscribe:te,setDraggedPanelId:ot,dockPanelToGroup:ce,movePanelOrder:Ne,closeLeafGroup:Y,registerCloseGuard:le,unregisterCloseGuard:me,registerStateProvider:Be,unregisterStateProvider:ee,setPanelDirty:$e,updatePanelTitle:je,requestClosePanel:Xe,dockPanelToWorkspaceEdge:ie,setActivePanel:_e,setDirection:Ge,registerPanelContextMenu:Ue,getPanelContextMenuItems:We,showContextMenu:Ye,registerContextMenuFn:De}),[q,X,Ze,lt,it,st,U,fe,we,Ce,He,Le,dt,Re,Me,oe,te,ot,ce,Ne,Y,le,me,Be,ee,$e,je,Xe,ie,_e,Ge,Ue,We,Ye,De]),ct=i=>{let v=i.defaultMessage||i.id;return i.values&&Object.entries(i.values).forEach(([c,l])=>{v=v.replace(`{${c}}`,String(l))}),v},wt=(0,O.useMemo)(()=>({modalClass:s,modalBodyClass:L,sidePanelClass:S,sidePanelBodyClass:C,windowClass:y,windowBodyClass:w}),[s,L,S,C,y,w]);(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,D.useEffect)(()=>{if(t)return t._connect(Pt),()=>{t._disconnect()}},[t,Pt]);let gn=(0,D.useMemo)(()=>({getSnapshot:R,subscribeToState:A}),[R,A]);return(0,it.jsx)($n.Provider,{value:pn,children:(0,it.jsx)(Gn.Provider,{value:S,children:(0,it.jsx)(Hn.Provider,{value:gn,children:(0,it.jsx)(Tt.Provider,{value:T,children:(0,it.jsx)(Zt.Provider,{value:Pt,children:(0,it.jsx)(_n.Provider,{value:L||gt,children:(0,it.jsx)(Bn.Provider,{value:k,children:e})})})})})})})},Fn=e=>()=>{};function Fe(e){let t=(0,D.useContext)(Tt),n=(0,D.useContext)(Hn),o=(0,D.useRef)(e);o.current=e;let d=(0,D.useSyncExternalStore)(e?n?.subscribeToState??Fn:Fn,()=>{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?d:t}var kt=()=>{let e=(0,D.useContext)(Zt);if(!e)throw new Error("useWindowManagerActions must be used within WindowManagerProvider");return e},bn=()=>{let e=(0,D.useContext)(Zt);if(!e)throw new Error("useWindowManagerActionsInternal must be used within WindowManagerProvider");return e},He=()=>(0,D.useContext)(_n)||(t=>{let n=t.defaultMessage||t.id;return t.values&&Object.entries(t.values).forEach(([o,d])=>{n=n.replace(`{${o}}`,String(d))}),n}),fe=(e,t)=>e?typeof e=="string"?e:t(e):"",Xn=()=>{let{publish:e,subscribe:t}=kt();return{publish:e,subscribe:t}},$e=()=>(0,D.useContext)(Bn),Ft=()=>ft().instanceId;function Vn(e){let t=(0,D.useContext)(Zt),n=Ft(),o=(0,D.useRef)(e);o.current=e,(0,D.useEffect)(()=>{if(!(!t?.registerPanelContextMenu||!n))return t.registerPanelContextMenu(n,()=>o.current)},[n,t?.registerPanelContextMenu])}var he=qt(require("react"),1),vn=require("react-dom"),de=require("react/jsx-runtime");function tr(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 Et(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 qn=(0,he.forwardRef)(({items:e,x:t,y:n,theme:o,fmt:d,onClose:s,onMouseEnter:I,onMouseLeave:b},M)=>((0,he.useLayoutEffect)(()=>{let y=M?.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,de.jsx)("div",{ref:M,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,de.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,z=P.disabled===!0||(S?P.checkbox.enabled===!1:!1);return(0,de.jsxs)("button",{type:"button",className:`rdd-context-menu__item${z?" rdd-context-menu__item--disabled":""}`,title:P.title?Et(P.title,d):void 0,disabled:z,"data-cy-action":P.cyAction,onClick:()=>{z||(P.action?.(),s())},role:"menuitem","aria-checked":S?L:void 0,children:[P.icon?(0,de.jsx)("span",{className:"rdd-context-menu__icon",children:P.icon}):(0,de.jsx)("span",{className:"rdd-context-menu__icon","aria-hidden":"true"}),(0,de.jsx)("span",{className:"rdd-context-menu__label",children:Et(P.label,d)}),S&&(0,de.jsx)("span",{className:`rdd-context-menu__checkbox${L?" rdd-context-menu__checkbox--checked":""}`,"aria-hidden":"true",children:(0,de.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,de.jsx)("rect",{x:"0.75",y:"0.75",width:"10.5",height:"10.5",rx:"2",fill:"none",stroke:"currentColor",strokeWidth:"1.5"}),L&&(0,de.jsx)("path",{d:"M2.5 6 L4.5 8.5 L9.5 3.5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})]})})]},C)})}),document.body)));qn.displayName="ContextMenuSubMenuPanel";var Kn={visible:!1,x:0,y:0,items:[]},Qt=(0,he.forwardRef)(({theme:e="dark",formatMessageProvider:t,onShow:n,onHide:o,onOpenChange:d,className:s,style:I},b)=>{let[M,y]=(0,he.useState)(Kn),[C,P]=(0,he.useState)(null),S=(0,he.useRef)(null),L=(0,he.useRef)(null),z=(0,he.useRef)(new Map),_=(0,he.useRef)({open:null,close:null}),g=he.default.useCallback(()=>{y(Kn),P(null),_.current.open&&clearTimeout(_.current.open),_.current.close&&clearTimeout(_.current.close),_.current.open=null,_.current.close=null,o?.(),d?.(!1)},[o,d]);if((0,he.useImperativeHandle)(b,()=>({show({event:l,x:k,y:Y,items:K}){let J=l?tr(l):{x:k??0,y:Y??0};z.current.clear(),y({visible:!0,x:J.x,y:J.y,items:K}),P(null),n?.(),d?.(!0)}}),[n,d]),(0,he.useEffect)(()=>{if(!M.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)}},[M.visible,g]),(0,he.useEffect)(()=>{if(!M.visible)return;let l=k=>{k.key==="Escape"&&g()};return document.addEventListener("keydown",l),()=>document.removeEventListener("keydown",l)},[M.visible,g]),(0,he.useLayoutEffect)(()=>{if(!M.visible||!S.current)return;let l=S.current,k=l.getBoundingClientRect(),Y=8;k.right>window.innerWidth-Y&&(l.style.left=`${Math.max(Y,window.innerWidth-k.width-Y)}px`),k.bottom>window.innerHeight-Y&&(l.style.top=`${Math.max(Y,window.innerHeight-k.height-Y)}px`),k.left<Y&&(l.style.left=`${Y}px`),k.top<Y&&(l.style.top=`${Y}px`)},[M.visible]),!M.visible)return null;let T=t,w=0,N=0;if(C!==null){let l=z.current.get(C);if(l){let k=l.getBoundingClientRect();w=document.documentElement.dir==="rtl"?window.innerWidth-k.left+2:k.right+2,N=k.top}}function m(){_.current.open&&(clearTimeout(_.current.open),_.current.open=null)}function R(){_.current.close&&(clearTimeout(_.current.close),_.current.close=null)}function A(l,k){R(),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,de.jsxs)(de.Fragment,{children:[(0,de.jsx)("div",{ref:S,className:`rdd-context-menu rdd-context-menu--${e}${s?` ${s}`:""}`,style:{position:"fixed",left:M.x,top:M.y,zIndex:9500,...I},role:"menu","aria-orientation":"vertical",children:M.items.map((l,k)=>{if(yn(l))return(0,de.jsx)("hr",{className:"rdd-context-menu__separator",role:"separator"},k);if(Jt(l))return(0,de.jsxs)("button",{ref:ne=>{z.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?Et(l.title,T):void 0,onMouseEnter:()=>A(k,l),onMouseLeave:()=>H(l),role:"menuitem","aria-haspopup":"true","aria-expanded":C===k,children:[(0,de.jsx)("span",{className:"rdd-context-menu__icon","aria-hidden":"true"}),(0,de.jsx)("span",{className:"rdd-context-menu__label",children:Et(l.label,T)}),(0,de.jsx)("span",{className:"rdd-context-menu__chevron","aria-hidden":"true",children:"\u203A"})]},k);let Y=l,K=Y.checkbox&&Y.checkbox.active!==!1,J=K&&Y.checkbox.value,oe=Y.disabled===!0||(K?Y.checkbox.enabled===!1:!1);return(0,de.jsxs)("button",{ref:ne=>{z.current.set(k,ne)},type:"button",className:`rdd-context-menu__item${oe?" rdd-context-menu__item--disabled":""}`,title:Y.title?Et(Y.title,T):void 0,disabled:oe,"data-cy-action":Y.cyAction,onClick:()=>{oe||(Y.action?.(),g())},onMouseEnter:()=>A(k,l),onMouseLeave:()=>H(l),role:"menuitem","aria-checked":K?J:void 0,children:[Y.icon?(0,de.jsx)("span",{className:"rdd-context-menu__icon",children:Y.icon}):(0,de.jsx)("span",{className:"rdd-context-menu__icon","aria-hidden":"true"}),(0,de.jsx)("span",{className:"rdd-context-menu__label",children:Et(Y.label,T)}),K&&(0,de.jsx)("span",{className:`rdd-context-menu__checkbox${J?" rdd-context-menu__checkbox--checked":""}`,"aria-hidden":"true",children:(0,de.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,de.jsx)("rect",{x:"0.75",y:"0.75",width:"10.5",height:"10.5",rx:"2",fill:J?"currentColor":"none",stroke:"currentColor",strokeWidth:"1.5"}),J&&(0,de.jsx)("path",{d:"M2.5 6 L4.5 8.5 L9.5 3.5",stroke:"white",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})]})})]},k)})}),C!==null&&(()=>{let l=M.items[C];return(0,de.jsx)(qn,{ref:L,items:l.items??[],x:w,y:N,theme:e,fmt:T,onClose:g,onMouseEnter:()=>R(),onMouseLeave:()=>{_.current.close=setTimeout(()=>P(null),200)}})})()]}),document.body)});Qt.displayName="ContextMenu";var vt={Component:Qt},It=he.default.createContext(null),en=({adapter:e=vt,children:t,...n})=>{let o=(0,he.useRef)(null),[d,s]=he.default.useState(!1),I=he.default.useCallback(b=>{o.current?.show(b)},[]);return(0,de.jsxs)(It.Provider,{value:{show:I,isOpen:d},children:[t,(0,de.jsx)(e.Component,{ref:o,...n,onShow:()=>{s(!0),n.onShow?.()},onHide:()=>{s(!1),n.onHide?.()}})]})};function jn(){let e=he.default.useContext(It);if(!e)throw new Error("useShowContextMenu must be used within a ContextMenuProvider");return e.show}var ve=require("react"),xn=require("react/jsx-runtime"),nr=0,Pn=()=>`panel-${++nr}-${Date.now()}`,tn=new Map,Zn={leftPanel:null,rightPanel:null,modals:[]},Un=(0,ve.createContext)(null),Jn=(0,ve.createContext)(null),nn=({children:e})=>{let[t,n]=(0,ve.useState)(Zn),o=(0,ve.useRef)(t);o.current=t;let d=(0,ve.useCallback)((g,T)=>{tn.set(g,T)},[]),s=(0,ve.useCallback)(g=>{tn.delete(g)},[]),I=(0,ve.useCallback)(async(g,T,w={})=>{let N=o.current.leftPanel;if(N){let A=tn.get(N.id);if(A&&!await A())return null}let m=Pn(),R={id:m,Component:g,props:T,containerType:"left-panel",options:w};return n(A=>({...A,leftPanel:R})),m},[]),b=(0,ve.useCallback)(async(g,T,w={})=>{let N=o.current.rightPanel;if(N){let A=tn.get(N.id);if(A&&!await A())return null}let m=Pn(),R={id:m,Component:g,props:T,containerType:"right-panel",options:w};return n(A=>({...A,rightPanel:R})),m},[]),M=(0,ve.useCallback)((g,T,w={})=>{let N=Pn(),m=T.title,R={...w,title:w.title||m||"Confirmation"},A={id:N,Component:g,props:T,containerType:"modal",options:R};return n(H=>({...H,modals:[...H.modals,A]})),N},[]),y=(0,ve.useCallback)(g=>{n(T=>({leftPanel:T.leftPanel?.id===g?null:T.leftPanel,rightPanel:T.rightPanel?.id===g?null:T.rightPanel,modals:T.modals.filter(w=>w.id!==g)}))},[]),C=(0,ve.useCallback)(()=>{n(Zn)},[]),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(T=>T.id===g),[t]),L=(0,ve.useCallback)((g,T)=>{n(w=>({leftPanel:w.leftPanel?.id===g?{...w.leftPanel,...T}:w.leftPanel,rightPanel:w.rightPanel?.id===g?{...w.rightPanel,...T}:w.rightPanel,modals:w.modals.map(N=>N.id===g?{...N,...T}:N)}))},[]),z=(0,ve.useCallback)((g,T,w)=>{L(g,{dirty:T,dirtyOptions:w})},[L]),_=(0,ve.useMemo)(()=>({openLeftPanel:I,openRightPanel:b,openModal:M,close:y,closeAll:C,closeAllModals:P,getInstance:S,updateInstance:L,setDirty:z,registerCloseHandler:d,unregisterCloseHandler:s}),[I,b,M,y,C,P,S,L,z,d,s]);return(0,xn.jsx)(Un.Provider,{value:t,children:(0,xn.jsx)(Jn.Provider,{value:_,children:e})})},Je=()=>{let e=(0,ve.useContext)(Un);if(!e)throw new Error("usePanelState must be used within PanelProvider");return e},st=()=>{let e=(0,ve.useContext)(Jn);if(!e)throw new Error("usePanelActions must be used within PanelProvider");return e};var _t=require("react");var Be=require("react/jsx-runtime"),or=({title:e,message:t,alert:n,alertType:o="info",useYesNoTitles:d=!1,onOK:s,onCancel:I})=>{let{requestClose:b,setIcon:M,setTitle:y}=ft(),C=He(),P=$e(),S=(0,_t.useRef)(null);(0,_t.useEffect)(()=>{if(e){let w=typeof e=="string"?e:C(e);y(w)}M&&M((0,Be.jsx)("span",{children:"\u2753"}))},[e,y,M,C]),(0,_t.useEffect)(()=>{S.current?.focus({preventScroll:!0})},[]);let L=typeof t=="string"?t:C(t),z=C(d?P.no:P.cancel),_=C(d?P.yes:P.ok),g=w=>{w.preventDefault(),s?.(),b()},T=()=>{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:T,children:z}),(0,Be.jsx)("button",{type:"submit",className:"rdd-btn rdd-btn-sm rdd-btn-primary",ref:S,children:_})]})]})},at=or;function Ht(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:d,captureStart:s,onMove:I,onEnd:b,activeClasses:M}=e;t.setPointerCapture(n),M?.forEach(({el:S,classes:L})=>S.classList.add(...L));let y=s(),C=S=>{I(S.clientX-o,S.clientY-d,y)},P=()=>{M?.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 Lt(e,t,n,o,d){let{minW:s,minH:I,maxW:b,maxH:M,minX:y,minY:C}=d,{x:P,y:S,w:L,h:z}=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,T=Math.max(g,Math.min(t,_));L=o.w-T,P=o.x+T}if(e.includes("s")&&(z=Math.max(I,Math.min(o.h+n,M??1/0))),e.includes("n")){let _=o.h-I,g=C!=null?-(o.y-C):-1/0,T=Math.max(g,Math.min(n,_));z=o.h-T,S=o.y+T}return{x:P,y:S,w:L,h:z}}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"),Qn=(e,t)=>{if(!e)return null;if(e.type==="leaf")return e.id===t?e:null;for(let n of e.children){let o=Qn(n,t);if(o)return o}return null},Bt=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"})]}),zt={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"})})})},eo=e=>{let t=Bt.get(e);return t||(t=document.createElement("div"),t.style.width="100%",t.style.height="100%",Bt.set(e,t)),t},rr=(e,t,n)=>{let o=t.component,d=n.get(o);if(!d)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=d.Component;return(0,f.jsx)(s,{...t.props??{},panelId:e})},Rn=new Map,lt=new Map,yt=e=>{let t=lt.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},lt.set(e,t)),t},to=({panelId:e})=>{let t=(0,V.useRef)(null);return(0,V.useEffect)(()=>{let n=t.current;if(!n)return;let o=eo(e);n.appendChild(o);let d=new ResizeObserver(s=>{for(let I of s){let{width:b,height:M}=I.contentRect;if(b>0&&M>0){Rn.set(e,{width:b,height:M});let y=lt.get(e);y&&y.onResize.forEach(C=>C(b,M))}}});return d.observe(n),()=>{d.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%"}})},ir=({panelId:e})=>{let t=Fe(),n=St(),o=He(),d=(0,V.useRef)(null),s=t.panels[e],I=s?n.get(s.component):null,b=I?.defaultOptions?.disableLivePreview||!1,M=Rn.get(e)||{width:800,height:500},y=M.width,C=M.height,L=Math.min(220/y,140/C);if((0,V.useEffect)(()=>{if(b)return;let z=d.current;if(!z)return;let _=Bt.get(e);if(_)return z.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 z=y*L,_=C*L,g=s?.title||I?.defaultOptions?.title||"Panel",T=fe(g,o),w=(Array.from(T)[0]||"P").toUpperCase();return(0,f.jsx)("div",{className:"rdd-taskbar-item-preview-frame",style:{width:`${z}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:d,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}})})},sr=({panelId:e,children:t})=>{let n=Fe(),{requestClosePanel:o,setPanelDirty:d,registerCloseGuard:s,unregisterCloseGuard:I,registerStateProvider:b,unregisterStateProvider:M,updatePanelTitle:y,minimizePanel:C}=kt(),P=n.minimized.some(m=>m.id===e),S=(0,V.useRef)(P);(0,V.useEffect)(()=>{let m=lt.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,z=(0,V.useRef)(L);(0,V.useEffect)(()=>{let m=z.current;z.current=L;let R=lt.get(e);R&&(L&&!m?R.onActivate.forEach(A=>A()):!L&&m&&R.onDeactivate.forEach(A=>A()))},[L,e]);let _=n.panels[e]?.state,g=_==="floating"?"floating-window":"dockable-panel",T=(0,V.useRef)(g);(0,V.useEffect)(()=>{if(_==="minimized")return;let m=T.current;T.current=g;let R=lt.get(e);R&&g!==m&&R.onContainerTypeChange.forEach(A=>A(g))},[g,_,e]),(0,V.useEffect)(()=>()=>{let m=lt.get(e);m&&(z.current&&m.onDeactivate.forEach(R=>R()),m.onClose.forEach(R=>R()),lt.delete(e))},[e]);let w=(0,V.useRef)(g),N=V.default.useMemo(()=>({requestClose:m=>o(e,m),setDirty:m=>d(e,m),onCloseRequested:m=>(s(e,m),()=>I(e)),registerStateProvider:m=>(b(e,m),()=>M(e)),setTitle:m=>y(e,m),instanceId:e,containerType:w.current,onClose:m=>{let R=yt(e);return R.onClose.add(m),()=>R.onClose.delete(m)},onMinimize:m=>{let R=yt(e);return R.onMinimize.add(m),()=>R.onMinimize.delete(m)},onRestore:m=>{let R=yt(e);return R.onRestore.add(m),()=>R.onRestore.delete(m)},onResize:m=>{let R=yt(e);return R.onResize.add(m),()=>R.onResize.delete(m)},requestMinimize:()=>C(e),getDimensions:()=>Rn.get(e)??null,onActivate:m=>{let R=yt(e);return R.onActivate.add(m),()=>R.onActivate.delete(m)},onDeactivate:m=>{let R=yt(e);return R.onDeactivate.add(m),()=>R.onDeactivate.delete(m)},onContainerTypeChange:m=>{let R=yt(e);return R.onContainerTypeChange.add(m),()=>R.onContainerTypeChange.delete(m)}}),[e,o,d,s,I,b,M,y,C]);return(0,f.jsx)(rt,{value:N,children:t})},no=({node:e,path:t,onTabRightClick:n,activeDropZone:o,onHoverDropZone:d,onTabDragStart:s,hoveredTab:I,onTabHover:b,defaultPanelIcon:M,onRequestClosePanel:y})=>{let{updateSplitSizes:C}=kt();if(e.type==="leaf")return(0,f.jsx)(ar,{leaf:e,onTabRightClick:n,activeDropZone:o,onHoverDropZone:d,onTabDragStart:s,hoveredTab:I,onTabHover:b,defaultPanelIcon:M,onRequestClosePanel:y});let P=e.orientation==="horizontal",S=(L,z)=>{z.preventDefault();let _=z.currentTarget,g=_.parentElement,T=g?P?g.clientWidth:g.clientHeight:P?1e3:800;Qe({element:_,pointerId:z.pointerId,startClientX:z.clientX,startClientY:z.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,N,m)=>{let R=(P?w:N)/T,A=[...m];A[L]+=R,A[L+1]-=R,A[L]>.1&&A[L+1]>.1&&C(t,A)}})};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,z)=>{let _=e.sizes[z]*100;return(0,f.jsxs)(V.default.Fragment,{children:[(0,f.jsx)("div",{style:{flexGrow:e.sizes[z],flexBasis:`${_}%`,overflow:"hidden",position:"relative",minWidth:0,minHeight:0},children:(0,f.jsx)(no,{node:L,path:[...t,z],onTabRightClick:n,activeDropZone:o,onHoverDropZone:d,onTabDragStart:s,hoveredTab:I,onTabHover:b,defaultPanelIcon:M,onRequestClosePanel:y})}),z<e.children.length-1&&(0,f.jsx)("div",{onPointerDown:g=>S(z,g),style:{cursor:P?"col-resize":"row-resize",width:P?"1px":"100%",height:P?"100%":"1px",zIndex:20},className:"rdd-resizer-bar"})]},z)})})},ar=({leaf:e,onTabRightClick:t,activeDropZone:n,onHoverDropZone:o,onTabDragStart:d,hoveredTab:s,onTabHover:I,defaultPanelIcon:b,onRequestClosePanel:M})=>{let y=Fe(),C=St(),{openPanel:P,closeLeafGroup:S,setActivePanel:L}=bn(),z=He(),_=$e(),{windowClass:g,windowBodyClass:T}=Ue(),w=(0,V.useRef)(null),[N,m]=(0,V.useState)({left:!1,right:!1}),R=(0,V.useCallback)(()=>{let l=w.current;l&&m({left:l.scrollLeft>0,right:l.scrollLeft<l.scrollWidth-l.clientWidth-1})},[]);(0,V.useEffect)(()=>{let l=w.current;if(!l)return;l.addEventListener("scroll",R,{passive:!0});let k=new ResizeObserver(R);return k.observe(l),R(),()=>{l.removeEventListener("scroll",R),k.disconnect()}},[R]);let A=l=>{w.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:[N.left&&(0,f.jsx)("button",{className:"rdd-tab-scroll-btn rdd-tab-scroll-btn-left",onPointerDown:l=>l.stopPropagation(),onClick:()=>A("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: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 Y=y.panels[l];if(!Y)return null;let K=e.activePanelId===l,J=y.activePanelId===l,ne=C.get(Y.component)?.defaultOptions,Ce=s&&s.leafId===e.id&&s.panelId===l,se=k===e.panels.length-1,q=s&&s.leafId===e.id&&s.panelId==="EMPTY"&&se,$=Ce?s.side==="left"?"rdd-drag-hover-left":"rdd-drag-hover-right":q?"rdd-drag-hover-right":"",W=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:B=>{ne?.canDrag!==!1&&d(l,B)},onContextMenu:B=>t(l,B),onPointerMove:B=>{if(y.draggedPanelId&&B.pointerType!=="touch"){let Q=B.currentTarget.getBoundingClientRect(),xe=B.clientX-Q.left<Q.width/2?"left":"right";I(e.id,l,k,xe)}},onPointerLeave:()=>{y.draggedPanelId&&I(e.id,"",-1,null)},className:`rdd-workspace-tab ${W} ${$}`,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:[fe(Y.title,z),Y.dirty?" *":""]})]}),ne?.renderHeaderActions&&(0,f.jsx)("span",{className:"rdd-tab-header-actions",onClick:B=>B.stopPropagation(),onPointerDown:B=>B.stopPropagation(),children:ne.renderHeaderActions(l)}),ne?.canClose!==!1&&(0,f.jsx)("span",{onClick:B=>{B.stopPropagation(),M(l)},title:fe(_.closeTab,z),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)})}),N.right&&(0,f.jsx)("button",{className:"rdd-tab-scroll-btn rdd-tab-scroll-btn-right",onPointerDown:l=>l.stopPropagation(),onClick:()=>A("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,z),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 ${T??""}`,style:{position:"relative",overflow:"hidden"},children:[e.activePanelId&&y.panels[e.activePanelId]?(0,f.jsx)(to,{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}%`,Y=`${(1-y.splitRatio)*100}%`;return{left:l==="right"?Y:"0",top:l==="bottom"?Y:"0",width:l==="left"||l==="right"?k:"100%",height:l==="top"||l==="bottom"?k:"100%"}})()})]})]})},lr=({skin:e="vscode",defaultPanelIcon:t,taskbarVisibility:n="always",contextMenuAdapter:o=vt,animations:d=!0})=>{let s=Fe(),I=St(),{restorePanel:b,minimizePanel:M,requestClosePanel:y,maximizePanel:C,updateFloatingPosition:P,focusPanel:S,floatPanel:L,setDraggedPanelId:z,dockPanelToGroup:_,movePanelOrder:g,dockPanelToWorkspaceEdge:T,setActivePanel:w,getPanelContextMenuItems:N,showContextMenu:m,registerContextMenuFn:R}=bn(),{openModal:A}=st(),H=He(),l=$e(),k=V.default.useCallback(r=>{let x=s.panels[r];y(r,{onConfirm:u=>new Promise(p=>{let h=u||x?.dirtyOptions,E=x?fe(x.title,H):"Panel";A(at,{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,A,l]),{windowClass:Y,windowBodyClass:K}=Ue(),J=(0,V.useContext)(It),oe=(0,V.useRef)(null);(0,V.useEffect)(()=>R(J!==null?r=>J.show(r):r=>oe.current?.show(r)),[J,R]);let ne=(0,V.useRef)(null),[Ce,se]=(0,V.useState)(!1),q=(0,V.useRef)(null),$=(0,V.useRef)(s.minimized.length),[W,B]=(0,V.useState)(null),Q=(0,V.useRef)(null),we=(0,V.useRef)("mouse"),[xe,ee]=(0,V.useState)(!1),be=J!==null?J.isOpen:xe;(0,V.useEffect)(()=>()=>{Q.current&&clearTimeout(Q.current)},[]),(0,V.useEffect)(()=>{W&&(s.minimized.some(x=>x.id===W.id)||B(null))},[s.minimized,W]),(0,V.useEffect)(()=>{if(!W?.fromTouch)return;let r=x=>{x.pointerType!=="touch"||document.querySelector(".rdd-taskbar-item-tooltip")?.contains(x.target)||B(null)};return document.addEventListener("pointerdown",r,{capture:!0}),()=>document.removeEventListener("pointerdown",r,{capture:!0})},[W?.fromTouch]);let[De,We]=(0,V.useState)(null),Oe=(0,V.useRef)(null),[Ke,Ge]=(0,V.useState)({x:0,y:0}),[Ye,qe]=(0,V.useState)(null),je=(0,V.useRef)(null),Re=r=>{qe(r),je.current=r},[re,Ee]=(0,V.useState)(null),Ae=(0,V.useRef)(null),Ie=r=>{Ee(r),Ae.current=r},tt=(0,V.useContext)(Tt)?.isRtl??!1,[nt,Xe]=(0,V.useState)(null),Ze=(0,V.useRef)(null),Yt=(r,x,u,p)=>{let h=p?{leafId:r,panelId:x,index:u,side:p}:null;Xe(h),Ze.current=h},Xt=(r,x)=>{let u=x?{leafId:r,position:x}:null;We(u),Oe.current=u,u&&(Re(null),Ie(null))},Dt=(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 F=O.dataset.leafId;if(F){let U=O.dataset.dropZone;We({leafId:F,position:U}),Oe.current={leafId:F,position:U},p=!0}}if(!E&&O.dataset.tabId){let F=O.dataset.leafId,U=parseInt(O.dataset.tabIndex||"0",10);if(F){let ae=O.getBoundingClientRect(),j=r-ae.left<ae.width/2?"left":"right";Xe({leafId:F,panelId:O.dataset.tabId,index:U,side:j}),Ze.current={leafId:F,panelId:O.dataset.tabId,index:U,side:j},E=!0}}if(!h&&O.dataset.edgeTrigger&&(Re(O.dataset.edgeTrigger),h=!0),p&&h&&E)break}p||(We(null),Oe.current=null),h||Re(null),E||(Xe(null),Ze.current=null)},ct=300,ut=8,Ve=()=>{z(null),We(null),Oe.current=null,Xe(null),Ze.current=null,Re(null)},ot=r=>s.isRtl?r==="left"?"right":r==="right"?"left":r:r,Wt=(r,x)=>{let u=Oe.current,p=Ze.current,h=je.current,E=Ae.current;if(h)T(r,ot(h));else if(p){let O=p.index;p.side==="right"&&(O+=1);let F=Qn(s.gridRoot,p.leafId);if(F){let U=F.panels.indexOf(r);U!==-1&&U<O&&(O-=1)}g(r,p.leafId,O)}else u?_(r,u.leafId,ot(u.position)):E?L(r,void 0,tt?Ht(E):E):L(r,{x:x.clientX-150,y:x.clientY-15,width:450,height:350});Ie(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,O=!1,F=()=>{O=!0,clearTimeout(ae),u.removeEventListener("pointermove",U),u.removeEventListener("pointerup",F),u.removeEventListener("pointercancel",F)},U=j=>{Math.hypot(j.clientX-p,j.clientY-h)>ut&&F()},ae=setTimeout(()=>{if(O)return;u.removeEventListener("pointermove",U),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 j=!1,ie=ce=>{j||(j=!0,z(r)),Ge({x:ce.clientX,y:ce.clientY}),Dt(ce.clientX,ce.clientY)},ue=ce=>{u.classList.remove("rdd-long-press-active"),document.body.classList.remove("rdd-dragging-active"),u.removeEventListener("pointermove",ie),u.removeEventListener("pointerup",ue),u.removeEventListener("pointercancel",le),j?Wt(r,ce):Ot(r,ce)},le=()=>{u.classList.remove("rdd-long-press-active"),document.body.classList.remove("rdd-dragging-active"),u.removeEventListener("pointermove",ie),u.removeEventListener("pointerup",ue),u.removeEventListener("pointercancel",le),j&&Ve()};u.addEventListener("pointermove",ie),u.addEventListener("pointerup",ue),u.addEventListener("pointercancel",le)},ct);u.addEventListener("pointermove",U),u.addEventListener("pointerup",F),u.addEventListener("pointercancel",F)}else{let E=!1,O=ae=>{let j=ae.clientX-p,ie=ae.clientY-h;!E&&(Math.abs(j)>5||Math.abs(ie)>5)&&(E=!0,z(r)),E&&Ge({x:ae.clientX,y:ae.clientY})},F=ae=>{document.body.classList.remove("rdd-dragging-active"),window.removeEventListener("pointermove",O),window.removeEventListener("pointerup",F),window.removeEventListener("pointercancel",U),E&&Wt(r,ae)},U=()=>{document.body.classList.remove("rdd-dragging-active"),window.removeEventListener("pointermove",O),window.removeEventListener("pointerup",F),window.removeEventListener("pointercancel",U),E&&Ve()};document.body.classList.add("rdd-dragging-active"),window.addEventListener("pointermove",O),window.addEventListener("pointerup",F),window.addEventListener("pointercancel",U)}},Ot=(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:fe(l.floatWindow,H),icon:zt.float,action:()=>L(r)}),h?.canMinimize!==!1&&E.push({label:fe(l.minimizePanel,H),icon:zt.minimize,action:()=>M(r)}),E.length>0&&h?.canClose!==!1&&E.push({separator:!0}),h?.canClose!==!1&&E.push({label:fe(l.closeTab,H),icon:zt.close,action:()=>k(r)}),E.length===0)return;let O=N(r),F=O.length>0?[...E,{separator:!0},...O]:E;m({event:x,items:F})},pt=(r,x)=>{x.preventDefault(),B(null),m({event:x,items:[{label:fe(l.restorePanel,H),icon:zt.restore,action:()=>b(r)},{label:fe(l.maximizePanel,H),icon:zt.maximize,action:()=>C(r)},{separator:!0},{label:fe(l.closePanel,H),icon:zt.close,action:()=>k(r)}]})};(0,V.useEffect)(()=>{let r=Object.keys(s.panels);for(let x of Array.from(Bt.keys()))r.includes(x)||Bt.delete(x)},[s.panels]),(0,V.useEffect)(()=>{let r=()=>{s.draggedPanelId!==null&&(z(null),We(null),Xe(null))};return window.addEventListener("blur",r),()=>{window.removeEventListener("blur",r)}},[s.draggedPanelId]);let Pt=(0,V.useRef)(null),[gt,pn]=(0,V.useState)({width:1024,height:768});(0,V.useEffect)(()=>{let r=Pt.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 F=E.tagName.toLowerCase(),U=E.id?` id="${E.id}"`:"",ae=E.className?` class="${E.className}"`:"",j=E===r?"the WindowManager container itself":`a wrapper element: <${F}${U}${ae}>`;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(ht),()=>{t._disconnect()}},[t,ht]);let Rt=(0,O.useMemo)(()=>({getSnapshot:x,subscribeToState:_}),[x,_]);return(0,vt.jsx)(Kn.Provider,{value:wt,children:(0,vt.jsx)(qn.Provider,{value:I,children:(0,vt.jsx)(Xn.Provider,{value:Rt,children:(0,vt.jsx)(At.Provider,{value:R,children:(0,vt.jsx)(tn.Provider,{value:ht,children:(0,vt.jsx)(Yn.Provider,{value:k||ct,children:(0,vt.jsx)(Vn.Provider,{value:z,children:e})})})})})})})},Gn=e=>()=>{};function Je(e){let t=(0,O.useContext)(At),n=(0,O.useContext)(Xn),o=(0,O.useRef)(e);o.current=e;let a=(0,O.useSyncExternalStore)(e?n?.subscribeToState??Gn:Gn,()=>{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?a:t}var Ft=()=>{let e=(0,O.useContext)(tn);if(!e)throw new Error("useWindowManagerActions must be used within WindowManagerProvider");return e},Cn=()=>{let e=(0,O.useContext)(tn);if(!e)throw new Error("useWindowManagerActionsInternal must be used within WindowManagerProvider");return e},et=()=>(0,O.useContext)(Yn)||(t=>{let n=t.defaultMessage||t.id;return t.values&&Object.entries(t.values).forEach(([o,a])=>{n=n.replace(`{${o}}`,String(a))}),n}),Pe=(e,t)=>e?typeof e=="string"?e:t(e):"",Un=()=>{let{publish:e,subscribe:t}=Ft();return{publish:e,subscribe:t}},rt=()=>(0,O.useContext)(Vn),Vt=()=>St().instanceId;function Jn(e){let t=(0,O.useContext)(tn),n=Vt(),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 xe=Qt(require("react"),1),wn=require("react-dom"),pe=require("react/jsx-runtime");function ur(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 _t(e,t){return typeof e=="string"?e:t?t(e):e.defaultMessage??e.id}function Rn(e){return"separator"in e}function on(e){return!Rn(e)&&"items"in e}var eo=(0,xe.forwardRef)(({items:e,x:t,y:n,theme:o,fmt:a,onClose:s,onMouseEnter:L,onMouseLeave:S},C)=>((0,xe.useLayoutEffect)(()=>{let y=C?.current;if(!y)return;let w=y.getBoundingClientRect(),u=8;w.right>window.innerWidth-u&&(y.style.left=`${Math.max(u,window.innerWidth-w.width-u)}px`,y.style.right="auto"),w.bottom>window.innerHeight-u&&(y.style.top=`${Math.max(u,window.innerHeight-w.height-u)}px`),w.left<u&&(y.style.left=`${u}px`,y.style.right="auto"),w.top<u&&(y.style.top=`${u}px`)}),(0,wn.createPortal)((0,pe.jsx)("div",{ref:C,className:`rdd-context-menu rdd-context-menu--${o} rdd-context-menu--submenu`,style:{position:"fixed",left:t,top:n},role:"menu",onMouseEnter:L,onMouseLeave:S,children:e.map((y,w)=>{if(Rn(y))return(0,pe.jsx)("hr",{className:"rdd-context-menu__separator",role:"separator"},w);let u=y,I=u.checkbox&&u.checkbox.active!==!1,k=I&&u.checkbox.value,E=u.disabled===!0||(I?u.checkbox.enabled===!1:!1);return(0,pe.jsxs)("button",{type:"button",className:`rdd-context-menu__item${E?" rdd-context-menu__item--disabled":""}`,title:u.title?_t(u.title,a):void 0,disabled:E,"data-cy-action":u.cyAction,onClick:()=>{E||(u.action?.(),s())},role:"menuitem","aria-checked":I?k:void 0,children:[u.icon?(0,pe.jsx)("span",{className:"rdd-context-menu__icon",children:u.icon}):(0,pe.jsx)("span",{className:"rdd-context-menu__icon","aria-hidden":"true"}),(0,pe.jsx)("span",{className:"rdd-context-menu__label",children:_t(u.label,a)}),I&&(0,pe.jsx)("span",{className:`rdd-context-menu__checkbox${k?" rdd-context-menu__checkbox--checked":""}`,"aria-hidden":"true",children:(0,pe.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,pe.jsx)("rect",{x:"0.75",y:"0.75",width:"10.5",height:"10.5",rx:"2",fill:"none",stroke:"currentColor",strokeWidth:"1.5"}),k&&(0,pe.jsx)("path",{d:"M2.5 6 L4.5 8.5 L9.5 3.5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})]})})]},w)})}),document.body)));eo.displayName="ContextMenuSubMenuPanel";var Qn={visible:!1,x:0,y:0,items:[]},rn=(0,xe.forwardRef)(({theme:e="dark",formatMessageProvider:t,onShow:n,onHide:o,onOpenChange:a,className:s,style:L},S)=>{let[C,y]=(0,xe.useState)(Qn),[w,u]=(0,xe.useState)(null),I=(0,xe.useRef)(null),k=(0,xe.useRef)(null),E=(0,xe.useRef)(new Map),H=(0,xe.useRef)({open:null,close:null}),p=xe.default.useCallback(()=>{y(Qn),u(null),H.current.open&&clearTimeout(H.current.open),H.current.close&&clearTimeout(H.current.close),H.current.open=null,H.current.close=null,o?.(),a?.(!1)},[o,a]);if((0,xe.useImperativeHandle)(S,()=>({show({event:d,x:z,y:B,items:G}){let te=d?ur(d):{x:z??0,y:B??0};E.current.clear(),y({visible:!0,x:te.x,y:te.y,items:G}),u(null),n?.(),a?.(!0)}}),[n,a]),(0,xe.useEffect)(()=>{if(!C.visible)return;let d=z=>{I.current?.contains(z.target)||k.current?.contains(z.target)||p()};return document.addEventListener("pointerdown",d,{capture:!0}),window.addEventListener("click",d),()=>{document.removeEventListener("pointerdown",d,{capture:!0}),window.removeEventListener("click",d)}},[C.visible,p]),(0,xe.useEffect)(()=>{if(!C.visible)return;let d=z=>{z.key==="Escape"&&p()};return document.addEventListener("keydown",d),()=>document.removeEventListener("keydown",d)},[C.visible,p]),(0,xe.useLayoutEffect)(()=>{if(!C.visible||!I.current)return;let d=I.current,z=d.getBoundingClientRect(),B=8;z.right>window.innerWidth-B&&(d.style.left=`${Math.max(B,window.innerWidth-z.width-B)}px`),z.bottom>window.innerHeight-B&&(d.style.top=`${Math.max(B,window.innerHeight-z.height-B)}px`),z.left<B&&(d.style.left=`${B}px`),z.top<B&&(d.style.top=`${B}px`)},[C.visible]),!C.visible)return null;let R=t,M=0,W=0;if(w!==null){let d=E.current.get(w);if(d){let z=d.getBoundingClientRect();M=document.documentElement.dir==="rtl"?window.innerWidth-z.left+2:z.right+2,W=z.top}}function m(){H.current.open&&(clearTimeout(H.current.open),H.current.open=null)}function x(){H.current.close&&(clearTimeout(H.current.close),H.current.close=null)}function _(d,z){x(),w!==null&&w!==d&&(m(),u(null)),on(z)&&z.items?.length?(m(),H.current.open=setTimeout(()=>{u(d)},150)):on(z)||(m(),w!==null&&(H.current.close=setTimeout(()=>u(null),200)))}function F(d){m(),on(d)&&d.items?.length&&(H.current.close=setTimeout(()=>u(null),200))}return(0,wn.createPortal)((0,pe.jsxs)(pe.Fragment,{children:[(0,pe.jsx)("div",{ref:I,className:`rdd-context-menu rdd-context-menu--${e}${s?` ${s}`:""}`,style:{position:"fixed",left:C.x,top:C.y,...L},role:"menu","aria-orientation":"vertical",children:C.items.map((d,z)=>{if(Rn(d))return(0,pe.jsx)("hr",{className:"rdd-context-menu__separator",role:"separator"},z);if(on(d))return(0,pe.jsxs)("button",{ref:Q=>{E.current.set(z,Q)},type:"button",className:`rdd-context-menu__item rdd-context-menu__item--has-submenu${w===z?" rdd-context-menu__item--submenu-open":""}`,title:d.title?_t(d.title,R):void 0,onMouseEnter:()=>_(z,d),onMouseLeave:()=>F(d),role:"menuitem","aria-haspopup":"true","aria-expanded":w===z,children:[(0,pe.jsx)("span",{className:"rdd-context-menu__icon","aria-hidden":"true"}),(0,pe.jsx)("span",{className:"rdd-context-menu__label",children:_t(d.label,R)}),(0,pe.jsx)("span",{className:"rdd-context-menu__chevron","aria-hidden":"true",children:"\u203A"})]},z);let B=d,G=B.checkbox&&B.checkbox.active!==!1,te=G&&B.checkbox.value,oe=B.disabled===!0||(G?B.checkbox.enabled===!1:!1);return(0,pe.jsxs)("button",{ref:Q=>{E.current.set(z,Q)},type:"button",className:`rdd-context-menu__item${oe?" rdd-context-menu__item--disabled":""}`,title:B.title?_t(B.title,R):void 0,disabled:oe,"data-cy-action":B.cyAction,onClick:()=>{oe||(B.action?.(),p())},onMouseEnter:()=>_(z,d),onMouseLeave:()=>F(d),role:"menuitem","aria-checked":G?te:void 0,children:[B.icon?(0,pe.jsx)("span",{className:"rdd-context-menu__icon",children:B.icon}):(0,pe.jsx)("span",{className:"rdd-context-menu__icon","aria-hidden":"true"}),(0,pe.jsx)("span",{className:"rdd-context-menu__label",children:_t(B.label,R)}),G&&(0,pe.jsx)("span",{className:`rdd-context-menu__checkbox${te?" rdd-context-menu__checkbox--checked":""}`,"aria-hidden":"true",children:(0,pe.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,pe.jsx)("rect",{x:"0.75",y:"0.75",width:"10.5",height:"10.5",rx:"2",fill:te?"currentColor":"none",stroke:"currentColor",strokeWidth:"1.5"}),te&&(0,pe.jsx)("path",{d:"M2.5 6 L4.5 8.5 L9.5 3.5",stroke:"white",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})]})})]},z)})}),w!==null&&(()=>{let d=C.items[w];return(0,pe.jsx)(eo,{ref:k,items:d.items??[],x:M,y:W,theme:e,fmt:R,onClose:p,onMouseEnter:()=>x(),onMouseLeave:()=>{H.current.close=setTimeout(()=>u(null),200)}})})()]}),document.body)});rn.displayName="ContextMenu";var It={Component:rn},Ht=xe.default.createContext(null),sn=({adapter:e=It,children:t,...n})=>{let o=(0,xe.useRef)(null),[a,s]=xe.default.useState(!1),L=xe.default.useCallback(S=>{o.current?.show(S)},[]);return(0,pe.jsxs)(Ht.Provider,{value:{show:L,isOpen:a},children:[t,(0,pe.jsx)(e.Component,{ref:o,...n,onShow:()=>{s(!0),n.onShow?.()},onHide:()=>{s(!1),n.onHide?.()}})]})};function to(){let e=xe.default.useContext(Ht);if(!e)throw new Error("useShowContextMenu must be used within a ContextMenuProvider");return e.show}var Se=require("react"),Sn=require("react/jsx-runtime"),pr=0,Mn=()=>`panel-${++pr}-${Date.now()}`,an=new Map,no={leftPanel:null,rightPanel:null,modals:[]},oo=(0,Se.createContext)(null),ro=(0,Se.createContext)(null),ln=({children:e})=>{let[t,n]=(0,Se.useState)(no),o=(0,Se.useRef)(t);o.current=t;let a=(0,Se.useCallback)((p,R)=>{an.set(p,R)},[]),s=(0,Se.useCallback)(p=>{an.delete(p)},[]),L=(0,Se.useCallback)(async(p,R,M={})=>{let W=o.current.leftPanel;if(W){let _=an.get(W.id);if(_&&!await _())return null}let m=Mn(),x={id:m,Component:p,props:R,containerType:"left-panel",options:M};return n(_=>({..._,leftPanel:x})),m},[]),S=(0,Se.useCallback)(async(p,R,M={})=>{let W=o.current.rightPanel;if(W){let _=an.get(W.id);if(_&&!await _())return null}let m=Mn(),x={id:m,Component:p,props:R,containerType:"right-panel",options:M};return n(_=>({..._,rightPanel:x})),m},[]),C=(0,Se.useCallback)((p,R,M={})=>{let W=Mn(),m=R.title,x={...M,title:M.title||m||"Confirmation"},_={id:W,Component:p,props:R,containerType:"modal",options:x};return n(F=>({...F,modals:[...F.modals,_]})),W},[]),y=(0,Se.useCallback)(p=>{n(R=>({leftPanel:R.leftPanel?.id===p?null:R.leftPanel,rightPanel:R.rightPanel?.id===p?null:R.rightPanel,modals:R.modals.filter(M=>M.id!==p)}))},[]),w=(0,Se.useCallback)(()=>{n(no)},[]),u=(0,Se.useCallback)(()=>{n(p=>({...p,modals:[]}))},[]),I=(0,Se.useCallback)(p=>t.leftPanel?.id===p?t.leftPanel:t.rightPanel?.id===p?t.rightPanel:t.modals.find(R=>R.id===p),[t]),k=(0,Se.useCallback)((p,R)=>{n(M=>({leftPanel:M.leftPanel?.id===p?{...M.leftPanel,...R}:M.leftPanel,rightPanel:M.rightPanel?.id===p?{...M.rightPanel,...R}:M.rightPanel,modals:M.modals.map(W=>W.id===p?{...W,...R}:W)}))},[]),E=(0,Se.useCallback)((p,R,M)=>{k(p,{dirty:R,dirtyOptions:M})},[k]),H=(0,Se.useMemo)(()=>({openLeftPanel:L,openRightPanel:S,openModal:C,close:y,closeAll:w,closeAllModals:u,getInstance:I,updateInstance:k,setDirty:E,registerCloseHandler:a,unregisterCloseHandler:s}),[L,S,C,y,w,u,I,k,E,a,s]);return(0,Sn.jsx)(oo.Provider,{value:t,children:(0,Sn.jsx)(ro.Provider,{value:H,children:e})})},pt=()=>{let e=(0,Se.useContext)(oo);if(!e)throw new Error("usePanelState must be used within PanelProvider");return e},yt=()=>{let e=(0,Se.useContext)(ro);if(!e)throw new Error("usePanelActions must be used within PanelProvider");return e};var Kt=require("react");var tt=require("react/jsx-runtime"),gr=({title:e,message:t,alert:n,alertType:o="info",useYesNoTitles:a=!1,onOK:s,onCancel:L})=>{let{requestClose:S,setIcon:C,setTitle:y}=St(),w=et(),u=rt(),I=(0,Kt.useRef)(null);(0,Kt.useEffect)(()=>{if(e){let M=typeof e=="string"?e:w(e);y(M)}C&&C((0,tt.jsx)("span",{children:"\u2753"}))},[e,y,C,w]),(0,Kt.useEffect)(()=>{I.current?.focus({preventScroll:!0})},[]);let k=typeof t=="string"?t:w(t),E=w(a?u.no:u.cancel),H=w(a?u.yes:u.ok),p=M=>{M.preventDefault(),s?.(),S()},R=()=>{L?.(),S()};return(0,tt.jsxs)("form",{onSubmit:p,className:"rdd-confirmation-form-body",children:[n&&(0,tt.jsxs)("div",{className:`rdd-confirmation-alert rdd-confirmation-alert-${o}`,children:[(0,tt.jsx)("span",{children:"\u2139\uFE0F"}),(0,tt.jsx)("span",{children:n})]}),(0,tt.jsx)("div",{style:{fontSize:"0.9rem",color:"inherit",lineHeight:1.5},children:k}),(0,tt.jsx)("hr",{style:{marginTop:"0.5rem",marginBottom:"0.5rem",opacity:.1}}),(0,tt.jsxs)("div",{className:"rdd-confirmation-actions",children:[(0,tt.jsx)("button",{type:"button",className:"rdd-btn rdd-btn-sm rdd-btn-outline",onClick:R,children:E}),(0,tt.jsx)("button",{type:"submit",className:"rdd-btn rdd-btn-sm rdd-btn-primary",ref:I,children:H})]})]})},Pt=gr;function qt(e){return e==="top-left"?"top-right":e==="top-right"?"top-left":e==="bottom-left"?"bottom-right":"bottom-left"}function gt(e){let{element:t,pointerId:n,startClientX:o,startClientY:a,captureStart:s,onMove:L,onEnd:S,activeClasses:C}=e;t.setPointerCapture(n),C?.forEach(({el:I,classes:k})=>I.classList.add(...k));let y=s(),w=I=>{L(I.clientX-o,I.clientY-a,y)},u=()=>{C?.forEach(({el:I,classes:k})=>I.classList.remove(...k)),t.removeEventListener("pointermove",w),t.removeEventListener("pointerup",u),t.removeEventListener("pointercancel",u),S?.(y)};t.addEventListener("pointermove",w),t.addEventListener("pointerup",u),t.addEventListener("pointercancel",u)}function Bt(e,t,n,o,a){let{minW:s,minH:L,maxW:S,maxH:C,minX:y,minY:w}=a,{x:u,y:I,w:k,h:E}=o;if(e.includes("e")&&(k=Math.max(s,Math.min(o.w+t,S??1/0))),e.includes("w")){let H=o.w-s,p=y!=null?-(o.x-y):-1/0,R=Math.max(p,Math.min(t,H));k=o.w-R,u=o.x+R}if(e.includes("s")&&(E=Math.max(L,Math.min(o.h+n,C??1/0))),e.includes("n")){let H=o.h-L,p=w!=null?-(o.y-w):-1/0,R=Math.max(p,Math.min(n,H));E=o.h-R,I=o.y+R}return{x:u,y:I,w:k,h:E}}var dn=require("react");function cn(){let[e,t]=(0,dn.useState)(()=>document.documentElement.getAttribute("data-color-scheme")==="light"?"light":"dark");return(0,dn.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 h=require("react/jsx-runtime"),io=(e,t)=>{if(!e)return null;if(e.type==="leaf")return e.id===t?e:null;for(let n of e.children){let o=io(n,t);if(o)return o}return null},jt=new Map,un="preserved-dom-container",kn=(0,h.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,h.jsx)("rect",{x:"3",y:"3",width:"7",height:"9",rx:"1"}),(0,h.jsx)("rect",{x:"14",y:"3",width:"7",height:"5",rx:"1"}),(0,h.jsx)("rect",{x:"14",y:"12",width:"7",height:"9",rx:"1"}),(0,h.jsx)("rect",{x:"3",y:"16",width:"7",height:"5",rx:"1"})]}),$t={float:(0,h.jsx)("span",{className:"rdd-menu-icon",children:(0,h.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,h.jsx)("rect",{x:"2",y:"8",width:"14",height:"14",rx:"1"}),(0,h.jsx)("rect",{x:"8",y:"2",width:"14",height:"14",rx:"1"})]})}),minimize:(0,h.jsx)("span",{className:"rdd-menu-icon",children:(0,h.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",style:{display:"block"},children:(0,h.jsx)("line",{x1:"4",y1:"18",x2:"20",y2:"18"})})}),restore:(0,h.jsx)("span",{className:"rdd-menu-icon",children:(0,h.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,h.jsx)("rect",{x:"4",y:"4",width:"16",height:"16",rx:"1"})})}),maximize:(0,h.jsx)("span",{className:"rdd-menu-icon",children:(0,h.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,h.jsx)("rect",{x:"2",y:"2",width:"20",height:"20",rx:"1"})})}),close:(0,h.jsx)("span",{className:"rdd-menu-icon",children:(0,h.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,h.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})},so=e=>{let t=jt.get(e);return t||(t=document.createElement("div"),t.style.width="100%",t.style.height="100%",jt.set(e,t)),t},fr=(e,t,n)=>{let o=t.component,a=n.get(o);if(!a)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,h.jsxs)("div",{className:"rdd-unregistered-panel",style:{border:"2px dashed #dc3545"},children:[(0,h.jsx)("h6",{style:{fontWeight:700,marginBottom:"0.25rem"},children:"\u26A0\uFE0F Component Unregistered"}),(0,h.jsxs)("span",{style:{fontSize:"0.875rem",color:"var(--rdd-text-secondary, #94a3b8)"},children:["Key: ",o]})]});let s=a.Component;return(0,h.jsx)(s,{...t.props??{},panelId:e})},In=new Map,xt=new Map,Et=e=>{let t=xt.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},xt.set(e,t)),t},ao=({panelId:e})=>{let t=(0,V.useRef)(null);return(0,V.useEffect)(()=>{let n=t.current;if(!n)return;let o=so(e);n.appendChild(o);let a=new ResizeObserver(s=>{for(let L of s){let{width:S,height:C}=L.contentRect;if(S>0&&C>0){In.set(e,{width:S,height:C});let y=xt.get(e);y&&y.onResize.forEach(w=>w(S,C))}}});return a.observe(n),()=>{a.disconnect();let s=document.getElementById(un);s||(s=document.createElement("div"),s.id=un,s.style.display="none",document.body.appendChild(s)),s.appendChild(o)}},[e]),(0,h.jsx)("div",{ref:t,style:{width:"100%",height:"100%"}})},mr=({panelId:e})=>{let t=Je(),n=Ot(),o=et(),a=(0,V.useRef)(null),s=t.panels[e],L=s?n.get(s.component):null,S=L?.defaultOptions?.disableLivePreview||!1,C=In.get(e)||{width:800,height:500},y=C.width,w=C.height,k=Math.min(220/y,140/w);if((0,V.useEffect)(()=>{if(S)return;let E=a.current;if(!E)return;let H=jt.get(e);if(H)return E.appendChild(H),()=>{let p=document.getElementById(un);p||(p=document.createElement("div"),p.id=un,p.style.display="none",document.body.appendChild(p)),p.appendChild(H)}},[e,S]),S){let E=y*k,H=w*k,p=s?.title||L?.defaultOptions?.title||"Panel",R=Pe(p,o),M=(Array.from(R)[0]||"P").toUpperCase();return(0,h.jsx)("div",{className:"rdd-taskbar-item-preview-frame",style:{width:`${E}px`,height:`${H}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,h.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:M})})}return(0,h.jsx)("div",{className:"rdd-taskbar-item-preview-frame",style:{width:`${y*k}px`,height:`${w*k}px`},children:(0,h.jsx)("div",{ref:a,className:"rdd-taskbar-item-preview-host",style:{width:`${y}px`,height:`${w}px`,transform:`scale(${k})`,transformOrigin:"top left",position:"absolute",top:0,left:0,"--rdd-preview-scale":k}})})},hr=({panelId:e,children:t})=>{let n=Je(),{requestClosePanel:o,setPanelDirty:a,registerCloseGuard:s,unregisterCloseGuard:L,registerStateProvider:S,unregisterStateProvider:C,updatePanelTitle:y,minimizePanel:w}=Ft(),u=n.minimized.some(m=>m.id===e),I=(0,V.useRef)(u);(0,V.useEffect)(()=>{let m=xt.get(e);m&&(u&&!I.current?m.onMinimize.forEach(x=>x()):!u&&I.current&&m.onRestore.forEach(x=>x()),I.current=u)},[u,e]);let k=n.activePanelId===e,E=(0,V.useRef)(k);(0,V.useEffect)(()=>{let m=E.current;E.current=k;let x=xt.get(e);x&&(k&&!m?x.onActivate.forEach(_=>_()):!k&&m&&x.onDeactivate.forEach(_=>_()))},[k,e]);let H=n.panels[e]?.state,p=H==="floating"?"floating-window":"dockable-panel",R=(0,V.useRef)(p);(0,V.useEffect)(()=>{if(H==="minimized")return;let m=R.current;R.current=p;let x=xt.get(e);x&&p!==m&&x.onContainerTypeChange.forEach(_=>_(p))},[p,H,e]),(0,V.useEffect)(()=>()=>{let m=xt.get(e);m&&(E.current&&m.onDeactivate.forEach(x=>x()),m.onClose.forEach(x=>x()),xt.delete(e))},[e]);let M=(0,V.useRef)(p),W=V.default.useMemo(()=>({requestClose:m=>o(e,m),setDirty:m=>a(e,m),onCloseRequested:m=>(s(e,m),()=>L(e)),registerStateProvider:m=>(S(e,m),()=>C(e)),setTitle:m=>y(e,m),instanceId:e,containerType:M.current,onClose:m=>{let x=Et(e);return x.onClose.add(m),()=>x.onClose.delete(m)},onMinimize:m=>{let x=Et(e);return x.onMinimize.add(m),()=>x.onMinimize.delete(m)},onRestore:m=>{let x=Et(e);return x.onRestore.add(m),()=>x.onRestore.delete(m)},onResize:m=>{let x=Et(e);return x.onResize.add(m),()=>x.onResize.delete(m)},requestMinimize:()=>w(e),getDimensions:()=>In.get(e)??null,onActivate:m=>{let x=Et(e);return x.onActivate.add(m),()=>x.onActivate.delete(m)},onDeactivate:m=>{let x=Et(e);return x.onDeactivate.add(m),()=>x.onDeactivate.delete(m)},onContainerTypeChange:m=>{let x=Et(e);return x.onContainerTypeChange.add(m),()=>x.onContainerTypeChange.delete(m)}}),[e,o,a,s,L,S,C,y,w]);return(0,h.jsx)(bt,{value:W,children:t})},lo=({node:e,path:t,onTabRightClick:n,activeDropZone:o,onHoverDropZone:a,onTabDragStart:s,hoveredTab:L,onTabHover:S,defaultPanelIcon:C,onRequestClosePanel:y})=>{let{updateSplitSizes:w}=Ft();if(e.type==="leaf")return(0,h.jsx)(br,{leaf:e,onTabRightClick:n,activeDropZone:o,onHoverDropZone:a,onTabDragStart:s,hoveredTab:L,onTabHover:S,defaultPanelIcon:C,onRequestClosePanel:y});let u=e.orientation==="horizontal",I=(k,E)=>{E.preventDefault();let H=E.currentTarget,p=H.parentElement,R=p?u?p.clientWidth:p.clientHeight:u?1e3:800;gt({element:H,pointerId:E.pointerId,startClientX:E.clientX,startClientY:E.clientY,captureStart:()=>[...e.sizes],activeClasses:[{el:H,classes:["rdd-active"]},{el:document.body,classes:["rdd-resizing-active",u?"rdd-resizing-col-active":"rdd-resizing-row-active"]}],onMove:(M,W,m)=>{let x=(u?M:W)/R,_=[...m];_[k]+=x,_[k+1]-=x,_[k]>.1&&_[k+1]>.1&&w(t,_)}})};return(0,h.jsx)("div",{style:{display:"flex",flexDirection:u?"row":"column",width:"100%",height:"100%",overflow:"hidden",position:"relative"},children:e.children.map((k,E)=>{let H=e.sizes[E]*100;return(0,h.jsxs)(V.default.Fragment,{children:[(0,h.jsx)("div",{style:{flexGrow:e.sizes[E],flexBasis:`${H}%`,overflow:"hidden",position:"relative",minWidth:0,minHeight:0},children:(0,h.jsx)(lo,{node:k,path:[...t,E],onTabRightClick:n,activeDropZone:o,onHoverDropZone:a,onTabDragStart:s,hoveredTab:L,onTabHover:S,defaultPanelIcon:C,onRequestClosePanel:y})}),E<e.children.length-1&&(0,h.jsx)("div",{onPointerDown:p=>I(E,p),style:{cursor:u?"col-resize":"row-resize",width:u?"1px":"100%",height:u?"100%":"1px",zIndex:20},className:"rdd-resizer-bar"})]},E)})})},br=({leaf:e,onTabRightClick:t,activeDropZone:n,onHoverDropZone:o,onTabDragStart:a,hoveredTab:s,onTabHover:L,defaultPanelIcon:S,onRequestClosePanel:C})=>{let y=Je(),w=Ot(),{openPanel:u,closeLeafGroup:I,setActivePanel:k}=Cn(),E=et(),H=rt(),{windowClass:p,windowBodyClass:R}=ut(),M=(0,V.useRef)(null),[W,m]=(0,V.useState)({left:!1,right:!1}),x=(0,V.useCallback)(()=>{let d=M.current;d&&m({left:d.scrollLeft>0,right:d.scrollLeft<d.scrollWidth-d.clientWidth-1})},[]);(0,V.useEffect)(()=>{let d=M.current;if(!d)return;d.addEventListener("scroll",x,{passive:!0});let z=new ResizeObserver(x);return z.observe(d),x(),()=>{d.removeEventListener("scroll",x),z.disconnect()}},[x]);let _=d=>{M.current?.scrollBy({left:d==="left"?-120:120,behavior:"smooth"})},F=d=>{u(d,y.panels[d].component),k(d)};return(0,h.jsxs)("div",{"data-active-panel-id":e.activePanelId||"",className:`rdd-workspace-panel ${p??""}`,style:{overflow:"hidden",position:"relative"},children:[(0,h.jsxs)("div",{className:"rdd-workspace-tab-bar",style:{minHeight:"38px"},children:[W.left&&(0,h.jsx)("button",{className:"rdd-tab-scroll-btn rdd-tab-scroll-btn-left",onPointerDown:d=>d.stopPropagation(),onClick:()=>_("left"),tabIndex:-1,"aria-label":"Scroll tabs left",children:"\u2039"}),(0,h.jsx)("div",{ref:M,className:"rdd-tab-headers-container",style:{scrollbarWidth:"none"},onPointerMove:d=>{y.draggedPanelId&&d.target===d.currentTarget&&L(e.id,"EMPTY",e.panels.length,"right")},onPointerLeave:d=>{y.draggedPanelId&&d.target===d.currentTarget&&L(e.id,"",-1,null)},children:e.panels.map((d,z)=>{let B=y.panels[d];if(!B)return null;let G=e.activePanelId===d,te=y.activePanelId===d,Q=w.get(B.component)?.defaultOptions,Ce=s&&s.leafId===e.id&&s.panelId===d,ue=z===e.panels.length-1,K=s&&s.leafId===e.id&&s.panelId==="EMPTY"&&ue,J=Ce?s.side==="left"?"rdd-drag-hover-left":"rdd-drag-hover-right":K?"rdd-drag-hover-right":"",q=G?te?"rdd-active rdd-workspace-tab-active-focused":"rdd-active rdd-workspace-tab-active-unfocused":"rdd-workspace-tab-inactive";return(0,h.jsxs)("div",{"data-tab-id":d,"data-leaf-id":e.id,"data-tab-index":String(z),onClick:()=>F(d),onPointerDown:X=>{Q?.canDrag!==!1&&a(d,X)},onContextMenu:X=>t(d,X),onPointerMove:X=>{if(y.draggedPanelId&&X.pointerType!=="touch"){let le=X.currentTarget.getBoundingClientRect(),Be=X.clientX-le.left<le.width/2?"left":"right";L(e.id,d,z,Be)}},onPointerLeave:()=>{y.draggedPanelId&&L(e.id,"",-1,null)},className:`rdd-workspace-tab ${q} ${J}`,style:{cursor:Q?.canDrag===!1?"default":"pointer"},children:[(0,h.jsxs)("span",{className:"rdd-text-truncate",style:{maxWidth:"120px",display:"flex",alignItems:"center"},children:[(0,h.jsx)("span",{className:"rdd-workspace-tab-icon",children:Q?.icon||S||kn}),(0,h.jsxs)("span",{children:[Pe(B.title,E),B.dirty?" *":""]})]}),Q?.renderHeaderActions&&(0,h.jsx)("span",{className:"rdd-tab-header-actions",onClick:X=>X.stopPropagation(),onPointerDown:X=>X.stopPropagation(),children:Q.renderHeaderActions(d)}),Q?.canClose!==!1&&(0,h.jsx)("span",{onClick:X=>{X.stopPropagation(),C(d)},title:Pe(H.closeTab,E),className:"rdd-close-tab-x",style:{width:"18px",height:"18px",...Q?.renderHeaderActions?{}:{marginInlineStart:"auto"}},children:(0,h.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,h.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]},d)})}),W.right&&(0,h.jsx)("button",{className:"rdd-tab-scroll-btn rdd-tab-scroll-btn-right",onPointerDown:d=>d.stopPropagation(),onClick:()=>_("right"),tabIndex:-1,"aria-label":"Scroll tabs right",children:"\u203A"}),e.panels.length===0&&e.keepOnEmpty&&e.canClose!==!1&&(0,h.jsx)("span",{onClick:()=>I(e.id),className:"rdd-close-tab-x rdd-header-close-empty-group",style:{width:"18px",height:"18px",cursor:"pointer"},title:Pe(H.closeEmptyGroup,E),children:(0,h.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,h.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),(0,h.jsxs)("div",{className:`rdd-panel-body ${R??""}`,style:{position:"relative",overflow:"hidden"},children:[e.activePanelId&&y.panels[e.activePanelId]?(0,h.jsx)(ao,{panelId:e.activePanelId},e.activePanelId):(0,h.jsx)("div",{className:"rdd-empty-leaf-placeholder",children:(0,h.jsx)("span",{children:"Empty Workspace Section"})}),y.draggedPanelId!==null&&(()=>{let d=z=>n?.leafId===e.id&&n.position===z;return(0,h.jsx)("div",{className:"rdd-dock-drop-zone-overlay",children:(0,h.jsxs)("div",{className:"rdd-dock-target-cross",children:[(0,h.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${d("top")?" rdd-dock-target-box--active":""}`,children:"\u25B2"}),(0,h.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${d("bottom")?" rdd-dock-target-box--active":""}`,children:"\u25BC"}),(0,h.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${d("left")?" rdd-dock-target-box--active":""}`,children:"\u25C0"}),(0,h.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${d("right")?" rdd-dock-target-box--active":""}`,children:"\u25B6"}),(0,h.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${d("center")?" rdd-dock-target-box--active":""}`,children:"\u25A3"})]})})})(),y.draggedPanelId!==null&&n!==null&&n.leafId===e.id&&(0,h.jsx)("div",{className:"rdd-dock-preview-highlight",style:(()=>{let d=n.position,z=`${y.splitRatio*100}%`,B=`${(1-y.splitRatio)*100}%`;return{left:d==="right"?B:"0",top:d==="bottom"?B:"0",width:d==="left"||d==="right"?z:"100%",height:d==="top"||d==="bottom"?z:"100%"}})()})]})]})},vr=({skin:e="vscode",defaultPanelIcon:t,taskbarVisibility:n="always",contextMenuAdapter:o=It,animations:a=!0})=>{let s=Je(),L=Ot(),{restorePanel:S,minimizePanel:C,requestClosePanel:y,maximizePanel:w,updateFloatingPosition:u,focusPanel:I,floatPanel:k,setDraggedPanelId:E,dockPanelToGroup:H,movePanelOrder:p,dockPanelToWorkspaceEdge:R,setActivePanel:M,getPanelContextMenuItems:W,showContextMenu:m,registerContextMenuFn:x}=Cn(),{openModal:_}=yt(),F=et(),d=rt(),z=V.default.useCallback(r=>{let P=s.panels[r];y(r,{onConfirm:g=>new Promise(b=>{let f=g||P?.dirtyOptions,T=P?Pe(P.title,F):"Panel";_(Pt,{title:f?.title||d.unsavedChangesTitle,message:f?.message||{id:d.unsavedChangesMessage.id,defaultMessage:d.unsavedChangesMessage.defaultMessage,values:{title:T}},alert:f?.alert,alertType:f?.alertType||"danger",useYesNoTitles:!0,onOK:()=>b(!0),onCancel:()=>b(!1)},{size:"small"})})})},[y,s.panels,F,_,d]),{windowClass:B,windowBodyClass:G}=ut(),te=(0,V.useContext)(Ht),oe=(0,V.useRef)(null);(0,V.useEffect)(()=>x(te!==null?r=>te.show(r):r=>oe.current?.show(r)),[te,x]);let Q=(0,V.useRef)(null),[Ce,ue]=(0,V.useState)(!1),K=(0,V.useRef)(null),J=(0,V.useRef)(s.minimized.length),[q,X]=(0,V.useState)(null),le=(0,V.useRef)(null),me=(0,V.useRef)("mouse"),[Be,ee]=(0,V.useState)(!1),$e=te!==null?te.isOpen:Be;(0,V.useEffect)(()=>()=>{le.current&&clearTimeout(le.current)},[]),(0,V.useEffect)(()=>{q&&(s.minimized.some(P=>P.id===q.id)||X(null))},[s.minimized,q]),(0,V.useEffect)(()=>{if(!q?.fromTouch)return;let r=P=>{P.pointerType!=="touch"||document.querySelector(".rdd-taskbar-item-tooltip")?.contains(P.target)||X(null)};return document.addEventListener("pointerdown",r,{capture:!0}),()=>document.removeEventListener("pointerdown",r,{capture:!0})},[q?.fromTouch]);let[je,Xe]=(0,V.useState)(null),Ze=(0,V.useRef)(null),[lt,it]=(0,V.useState)({x:0,y:0}),[st,nt]=(0,V.useState)(null),ot=(0,V.useRef)(null),ce=r=>{nt(r),ot.current=r},[ie,Ne]=(0,V.useState)(null),Y=(0,V.useRef)(null),U=r=>{Ne(r),Y.current=r},fe=(0,V.useContext)(At)?.isRtl??!1,[we,Re]=(0,V.useState)(null),Me=(0,V.useRef)(null),_e=(r,P,g,b)=>{let f=b?{leafId:r,panelId:P,index:g,side:b}:null;Re(f),Me.current=f},Ge=(r,P)=>{let g=P?{leafId:r,position:P}:null;Xe(g),Ze.current=g,g&&(ce(null),U(null))},He=(r,P)=>{let g=document.elementsFromPoint(r,P),b=!1,f=!1,T=!1;for(let N of g)if(N instanceof HTMLElement){if(!b&&N.dataset.dropZone){let D=N.dataset.leafId;if(D){let Z=N.dataset.dropZone;Xe({leafId:D,position:Z}),Ze.current={leafId:D,position:Z},b=!0}}if(!T&&N.dataset.tabId){let D=N.dataset.leafId,Z=parseInt(N.dataset.tabIndex||"0",10);if(D){let se=N.getBoundingClientRect(),j=r-se.left<se.width/2?"left":"right";Re({leafId:D,panelId:N.dataset.tabId,index:Z,side:j}),Me.current={leafId:D,panelId:N.dataset.tabId,index:Z,side:j},T=!0}}if(!f&&N.dataset.edgeTrigger&&(ce(N.dataset.edgeTrigger),f=!0),b&&f&&T)break}b||(Xe(null),Ze.current=null),f||ce(null),T||(Re(null),Me.current=null)},Le=300,dt=8,Ie=()=>{E(null),Xe(null),Ze.current=null,Re(null),Me.current=null,ce(null)},Ee=r=>s.isRtl?r==="left"?"right":r==="right"?"left":r:r,De=(r,P)=>{let g=Ze.current,b=Me.current,f=ot.current,T=Y.current;if(f)R(r,Ee(f));else if(b){let N=b.index;b.side==="right"&&(N+=1);let D=io(s.gridRoot,b.leafId);if(D){let Z=D.panels.indexOf(r);Z!==-1&&Z<N&&(N-=1)}p(r,b.leafId,N)}else g?H(r,g.leafId,Ee(g.position)):T?k(r,void 0,fe?qt(T):T):k(r,{x:P.clientX-150,y:P.clientY-15,width:450,height:350});U(null),Ie()},Ye=(r,P)=>{if(P.pointerType==="mouse"&&P.button!==0)return;P.preventDefault();let g=P.currentTarget,b=P.clientX,f=P.clientY;if(P.pointerType==="touch"){let T=P.pointerId,N=!1,D=()=>{N=!0,clearTimeout(se),g.removeEventListener("pointermove",Z),g.removeEventListener("pointerup",D),g.removeEventListener("pointercancel",D)},Z=j=>{Math.hypot(j.clientX-b,j.clientY-f)>dt&&D()},se=setTimeout(()=>{if(N)return;g.removeEventListener("pointermove",Z),g.removeEventListener("pointerup",D),g.removeEventListener("pointercancel",D);try{g.setPointerCapture(T)}catch{return}g.classList.add("rdd-long-press-active"),document.body.classList.add("rdd-dragging-active"),navigator.vibrate&&navigator.vibrate(10);let j=!1,ae=ge=>{j||(j=!0,E(r)),it({x:ge.clientX,y:ge.clientY}),He(ge.clientX,ge.clientY)},he=ge=>{g.classList.remove("rdd-long-press-active"),document.body.classList.remove("rdd-dragging-active"),g.removeEventListener("pointermove",ae),g.removeEventListener("pointerup",he),g.removeEventListener("pointercancel",de),j?De(r,ge):Ue(r,ge)},de=()=>{g.classList.remove("rdd-long-press-active"),document.body.classList.remove("rdd-dragging-active"),g.removeEventListener("pointermove",ae),g.removeEventListener("pointerup",he),g.removeEventListener("pointercancel",de),j&&Ie()};g.addEventListener("pointermove",ae),g.addEventListener("pointerup",he),g.addEventListener("pointercancel",de)},Le);g.addEventListener("pointermove",Z),g.addEventListener("pointerup",D),g.addEventListener("pointercancel",D)}else{let T=!1,N=se=>{let j=se.clientX-b,ae=se.clientY-f;!T&&(Math.abs(j)>5||Math.abs(ae)>5)&&(T=!0,E(r)),T&&it({x:se.clientX,y:se.clientY})},D=se=>{document.body.classList.remove("rdd-dragging-active"),window.removeEventListener("pointermove",N),window.removeEventListener("pointerup",D),window.removeEventListener("pointercancel",Z),T&&De(r,se)},Z=()=>{document.body.classList.remove("rdd-dragging-active"),window.removeEventListener("pointermove",N),window.removeEventListener("pointerup",D),window.removeEventListener("pointercancel",Z),T&&Ie()};document.body.classList.add("rdd-dragging-active"),window.addEventListener("pointermove",N),window.addEventListener("pointerup",D),window.addEventListener("pointercancel",Z)}},Ue=(r,P)=>{P.preventDefault();let g=s.panels[r];if(!g)return;let f=L.get(g.component)?.defaultOptions,T=[];if(f?.canDrag!==!1&&T.push({label:Pe(d.floatWindow,F),icon:$t.float,action:()=>k(r)}),f?.canMinimize!==!1&&T.push({label:Pe(d.minimizePanel,F),icon:$t.minimize,action:()=>C(r)}),T.length>0&&f?.canClose!==!1&&T.push({separator:!0}),f?.canClose!==!1&&T.push({label:Pe(d.closeTab,F),icon:$t.close,action:()=>z(r)}),T.length===0)return;let N=W(r),D=N.length>0?[...T,{separator:!0},...N]:T;m({event:P,items:D})},We=(r,P)=>{P.preventDefault(),X(null),m({event:P,items:[{label:Pe(d.restorePanel,F),icon:$t.restore,action:()=>S(r)},{label:Pe(d.maximizePanel,F),icon:$t.maximize,action:()=>w(r)},{separator:!0},{label:Pe(d.closePanel,F),icon:$t.close,action:()=>z(r)}]})};(0,V.useEffect)(()=>{let r=Object.keys(s.panels);for(let P of Array.from(jt.keys()))r.includes(P)||jt.delete(P)},[s.panels]),(0,V.useEffect)(()=>{let r=()=>{s.draggedPanelId!==null&&(E(null),Xe(null),Re(null))};return window.addEventListener("blur",r),()=>{window.removeEventListener("blur",r)}},[s.draggedPanelId]);let ht=(0,V.useRef)(null),[ct,wt]=(0,V.useState)({width:1024,height:768});(0,V.useEffect)(()=>{let r=ht.current;if(!r)return;let P=!1,g=new ResizeObserver(b=>{if(!b||b.length===0)return;let f=b[0].contentRect;if(process.env.NODE_ENV==="development"&&f.height<10&&!P){P=!0;let T=r,N=r.parentElement;for(;N&&N!==document.documentElement&&N.getBoundingClientRect().height<10;){T=N;N=N.parentElement}let D=T.tagName.toLowerCase(),Z=T.id?` id="${T.id}"`:"",se=T.className?` class="${T.className}"`:"",j=T===r?"the WindowManager container itself":`a wrapper element: <${D}${Z}${se}>`;console.warn(`[react-dockable-desktop] Workspace height is 0px \u2014 the workspace will be invisible.
6
6
 
7
7
  Zero height found at: ${j}
8
8
 
@@ -20,5 +20,5 @@ Fix options:
20
20
  .layout { display: flex; flex-direction: column; height: 100vh; }
21
21
  .workspace { flex: 1; min-height: 0; }
22
22
 
23
- 3. Verify styles.css is imported \u2014 it anchors html, body, #root to 100% height.`)}pn({width:Math.max(100,h.width),height:Math.max(100,h.height)})});return u.observe(r),()=>{u.disconnect()}},[]),(0,V.useEffect)(()=>{let r=gt.width,x=gt.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,O=typeof u.y=="string"?parseFloat(u.y):u.y,F=p,U=h,ae=E,j=O,ie=!1;if(F>r&&(F=Math.max(200,r-20),ie=!0),U>x&&(U=Math.max(150,x-40),ie=!0),!u.anchor){let ue=r-100;ae>ue&&(ae=Math.max(0,ue),ie=!0);let le=x-40;j>le&&(j=Math.max(0,le),ie=!0)}ie&&P(u.id,{x:ae,y:j,width:F,height:U})})},[gt,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&&(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=s.floating.find(j=>j.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,F=h?h.offsetLeft:0,U=h?h.offsetTop:0,ae=()=>{let j=Oe.current,ie=Ze.current,ue=je.current,le=Ae.current;if(le)P(r,{anchor:tt?Ht(le):le});else if(ue)T(r,ot(ue));else if(ie){let ce=ie.index;ie.side==="right"&&(ce+=1),g(r,ie.leafId,ce)}else j&&_(r,j.leafId,ot(j.position));Ie(null),Ve()};if(x.pointerType==="touch"){let j=x.pointerId,ie=!1,ue=()=>{ie=!0,clearTimeout(ce),p.removeEventListener("pointermove",le),p.removeEventListener("pointerup",ue),p.removeEventListener("pointercancel",ue)},le=pe=>{Math.hypot(pe.clientX-E,pe.clientY-O)>ut&&ue()},ce=setTimeout(()=>{if(ie)return;p.removeEventListener("pointermove",le),p.removeEventListener("pointerup",ue),p.removeEventListener("pointercancel",ue);try{p.setPointerCapture(j)}catch{return}p.classList.add("rdd-long-press-active"),document.body.classList.add("rdd-dragging-active"),z(r);let pe=xt=>{let Ct=xt.clientX-E,wt=xt.clientY-O;P(r,{x:F+Ct,y:U+wt,anchor:null}),Dt(xt.clientX,xt.clientY)},Me=()=>{p.classList.remove("rdd-long-press-active"),document.body.classList.remove("rdd-dragging-active"),p.removeEventListener("pointermove",pe),p.removeEventListener("pointerup",Me),p.removeEventListener("pointercancel",mt),ae()},mt=()=>{p.classList.remove("rdd-long-press-active"),document.body.classList.remove("rdd-dragging-active"),p.removeEventListener("pointermove",pe),p.removeEventListener("pointerup",Me),p.removeEventListener("pointercancel",mt),Ve()};p.addEventListener("pointermove",pe),p.addEventListener("pointerup",Me),p.addEventListener("pointercancel",mt)},ct);p.addEventListener("pointermove",le),p.addEventListener("pointerup",ue),p.addEventListener("pointercancel",ue)}else{let j=!1,ie=ce=>{let pe=ce.clientX-E,Me=ce.clientY-O;!j&&(Math.abs(pe)>5||Math.abs(Me)>5)&&(j=!0,z(r)),j&&P(r,{x:F+pe,y:U+Me,anchor:null})},ue=()=>{document.body.classList.remove("rdd-dragging-active"),window.removeEventListener("pointermove",ie),window.removeEventListener("pointerup",ue),window.removeEventListener("pointercancel",le),j&&ae()},le=()=>{document.body.classList.remove("rdd-dragging-active"),window.removeEventListener("pointermove",ie),window.removeEventListener("pointerup",ue),window.removeEventListener("pointercancel",le),j&&Ve()};document.body.classList.add("rdd-dragging-active"),window.addEventListener("pointermove",ie),window.addEventListener("pointerup",ue),window.addEventListener("pointercancel",le)}},i=(r,x,u)=>{u.preventDefault(),u.stopPropagation();let p=s.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},F=gt.width,U=gt.height,ae=typeof p.x=="string"?parseFloat(p.x):p.x,j=typeof p.y=="string"?parseFloat(p.y):p.y,ie=typeof p.width=="string"?parseFloat(p.width):p.width,ue=typeof p.height=="string"?parseFloat(p.height):p.height,le=x==="se"&&Math.abs(ae+ie-F)<4,ce=x==="se"&&Math.abs(j+ue-U)<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,Me,mt)=>{let xt=Lt(x,pe,Me,mt,{minW:200,minH:150}),{x:Ct,y:wt,w:mn,h:fn}=xt;le&&(Ct=F-mn,Ct<0&&(Ct=0,mn=F)),ce&&(wt=U-fn,wt<0&&(wt=0,fn=U)),P(r,{x:Ct,y:wt,width:mn,height:fn})}})},v=r=>{if(ne.current){let x=r==="left"?-150:150;ne.current.scrollBy({left:x,behavior:"smooth"})}},c=(0,V.useCallback)(()=>{q.current&&clearTimeout(q.current),se(!0)},[]),a=(0,V.useCallback)(()=>{q.current=setTimeout(()=>se(!1),400)},[]);(0,V.useEffect)(()=>{n==="autohide"&&s.minimized.length>$.current&&(q.current&&clearTimeout(q.current),se(!0),q.current=setTimeout(()=>se(!1),2e3)),$.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)(()=>(d?document.documentElement.classList.remove("rdd-no-animations"):document.documentElement.classList.add("rdd-no-animations"),()=>{document.documentElement.classList.remove("rdd-no-animations")}),[d]),(0,f.jsxs)("div",{className:`rdd-workspace${d?"":" 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:Pt,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:()=>Re("left"),onPointerLeave:()=>Re(null)}),(0,f.jsx)("div",{"data-edge-trigger":"right",className:"rdd-workspace-edge-trigger rdd-edge-trigger-right",onPointerEnter:()=>Re("right"),onPointerLeave:()=>Re(null)}),(0,f.jsx)("div",{"data-edge-trigger":"top",className:"rdd-workspace-edge-trigger rdd-edge-trigger-top",onPointerEnter:()=>Re("top"),onPointerLeave:()=>Re(null)}),(0,f.jsx)("div",{"data-edge-trigger":"bottom",className:"rdd-workspace-edge-trigger rdd-edge-trigger-bottom",onPointerEnter:()=>Re("bottom"),onPointerLeave:()=>Re(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}${re===r?" rdd-corner-zone--hovered":""}`,onPointerEnter:()=>{Ie(r),Re(null)},onPointerLeave:()=>Ie(null),"aria-hidden":"true"},r)),s.draggedPanelId!==null&&Ye!==null&&(0,f.jsx)("div",{className:"rdd-workspace-edge-preview",style:(()=>{let r=`${s.edgeSplitRatio*100}%`;switch(Ye){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)(no,{node:s.gridRoot,path:[],onTabRightClick:Ot,activeDropZone:De,onHoverDropZone:Xt,onTabDragStart:Vt,hoveredTab:nt,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,O=I.get(x.component)?.defaultOptions;return(0,f.jsxs)("div",{"data-window-id":r.id,dir:s.dir,onPointerDownCapture:()=>{w(r.id),S(r.id)},className:`rdd-floating-window ${u?"rdd-maximized":""} ${h?"rdd-window-focused":""} ${Y??""}`,style:(()=>{let ae=typeof r.width=="number"?`${r.width}px`:r.width,j=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 ie=s.floating.filter(Me=>Me.anchor===r.anchor&&!Me.maximized),ue=ie.findIndex(Me=>Me.id===r.id),le=8;for(let Me=0;Me<ue;Me++){let mt=typeof ie[Me].height=="number"?ie[Me].height:parseFloat(ie[Me].height);le+=mt+8}let ce=r.anchor.startsWith("top");return{position:"absolute",[r.anchor.endsWith("-right")?"insetInlineEnd":"insetInlineStart"]:8,[ce?"top":"bottom"]:le,width:ae,height:j,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:ae,height:j,zIndex:r.z,pointerEvents:p?"none":"auto"}})(),children:[(0,f.jsxs)("div",{onDoubleClick:()=>C(r.id),onPointerDown:F=>{O?.canDrag!==!1&&gn(r.id,F)},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,H),x.dirty?" *":""]})]}),(0,f.jsxs)("div",{className:"rdd-titlebar-actions",style:{gap:"var(--rdd-header-button-gap, 4px)"},onPointerDown:F=>F.stopPropagation(),children:[O?.renderHeaderActions&&(0,f.jsx)("div",{className:"rdd-window-header-actions",children:O.renderHeaderActions(r.id)}),N(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 U=N(r.id);U.length!==0&&m({event:F,items:U})},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(l.restoreSize,H):fe(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"})})}),O?.canMinimize!==!1&&(0,f.jsx)("button",{type:"button",title:fe(l.minimize,H),onClick:()=>M(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(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)(to,{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"&&Ce?"rdd-taskbar-expanded":""].filter(Boolean).join(" "),style:{height:"48px",zIndex:100},onPointerEnter:n==="autohide"?c:void 0,onPointerLeave:n==="autohide"?a:void 0,children:[n==="autohide"&&(0,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:()=>{we.current!=="touch"&&(B(null),b(r.id))},onContextMenu:p=>pt(r.id,p),onPointerDown:p=>{if(we.current=p.pointerType,p.pointerType!=="touch")return;let h=p.currentTarget,E=p.clientX,O=p.clientY,F=p.pointerId,U=!1,ae=()=>{U=!0,clearTimeout(ue),h.removeEventListener("pointermove",ie),h.removeEventListener("pointerup",j),h.removeEventListener("pointercancel",ae)},j=()=>{ae();let le=h.getBoundingClientRect();W?.id===r.id?(b(r.id),B(null)):B({id:r.id,rect:le,title:r.title,component:r.component,fromTouch:!0})},ie=le=>{Math.hypot(le.clientX-E,le.clientY-O)>ut&&ae()},ue=setTimeout(()=>{if(U)return;h.removeEventListener("pointermove",ie),h.removeEventListener("pointerup",j),h.removeEventListener("pointercancel",ae);try{h.setPointerCapture(F)}catch{return}navigator.vibrate&&navigator.vibrate(10);let le=ce=>{h.removeEventListener("pointerup",le),h.removeEventListener("pointercancel",le),pt(r.id,ce)};h.addEventListener("pointerup",le),h.addEventListener("pointercancel",le)},ct);h.addEventListener("pointermove",ie),h.addEventListener("pointerup",j),h.addEventListener("pointercancel",ae)},onPointerEnter:p=>{if(p.pointerType==="touch"||be)return;Q.current&&clearTimeout(Q.current);let h=p.currentTarget.getBoundingClientRect();p.clientX>=h.left&&p.clientX<=h.right&&p.clientY>=h.top&&p.clientY<=h.bottom&&B({id:r.id,rect:h,title:r.title,component:r.component})},onPointerLeave:p=>{p.pointerType!=="touch"&&(Q.current=setTimeout(()=>{B(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)})}),W&&(0,Cn.createPortal)((0,f.jsxs)("div",{className:"rdd-taskbar-item-tooltip",dir:s.dir,style:{position:"fixed",left:`${W.rect.left+W.rect.width/2}px`,top:`${W.rect.top-8}px`,transform:"translateX(-50%) translateY(-100%)",opacity:1,pointerEvents:"auto",zIndex:999999},onPointerEnter:()=>{Q.current&&clearTimeout(Q.current)},onPointerLeave:r=>{r.pointerType!=="touch"&&B(null)},onClick:()=>{b(W.id),B(null)},onContextMenu:r=>pt(W.id,r),onPointerDown:r=>{if(r.pointerType!=="touch")return;let x=W.id,u=r.currentTarget,p=r.clientX,h=r.clientY,E=r.pointerId,O=!1,F=()=>{O=!0,clearTimeout(ae),u.removeEventListener("pointermove",U),u.removeEventListener("pointerup",F),u.removeEventListener("pointercancel",F)},U=j=>{Math.hypot(j.clientX-p,j.clientY-h)>ut&&F()},ae=setTimeout(()=>{if(O)return;u.removeEventListener("pointermove",U),u.removeEventListener("pointerup",F),u.removeEventListener("pointercancel",F);try{u.setPointerCapture(E)}catch{return}navigator.vibrate&&navigator.vibrate(10);let j=ie=>{u.removeEventListener("pointerup",j),u.removeEventListener("pointercancel",j),pt(x,ie)};u.addEventListener("pointerup",j),u.addEventListener("pointercancel",j)},ct);u.addEventListener("pointermove",U),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:[fe(W.title,H),s.panels[W.id]?.dirty?" *":""]}),(0,f.jsx)("span",{onClick:r=>{r.stopPropagation(),k(W.id),B(null)},title:fe(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)(ir,{panelId:W.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=eo(r);return(0,Cn.createPortal)((0,f.jsx)(sr,{panelId:r,children:(0,f.jsx)("div",{style:{width:"100%",height:"100%"},dir:s.dir,children:rr(r,x,I)})}),u,r)}),J===null&&(0,f.jsx)(o.Component,{ref:oe,theme:"dark",formatMessageProvider:H,onShow:()=>ee(!0),onHide:()=>ee(!1)}),s.draggedPanelId!==null&&!s.floating.some(r=>r.id===s.draggedPanelId)&&(0,f.jsxs)("div",{className:"rdd-drag-ghost-tab",style:{left:Ke.x+12,top:Ke.y+12,zIndex:1e5},children:["\u{1F4C4} ",fe(s.panels[s.draggedPanelId]?.title,H)||"Tab"]})]})},oo=lr;var an=class{registry;initialState;config;_actions=null;_initialized=!1;_pendingCalls=[];_pendingOpenPanelIds=new Set;_pendingSubscriptions=[];_disconnectedWarnTimer=null;constructor(t={}){if(this.registry=new ht,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 d=this._pendingSubscriptions.indexOf(o);d!==-1&&this._pendingSubscriptions.splice(d,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(d=>d.dockPanelToGroup(t,n,o))}movePanelOrder(t,n,o){this._dispatch(d=>d.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(d=>d.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 uo=require("react");var et=require("react"),io=require("react/jsx-runtime"),ro=(0,et.createContext)(null),$t=({children:e})=>{let[t,n]=(0,et.useState)({}),[o,d]=(0,et.useState)({}),s=(0,et.useMemo)(()=>({getActiveInGroup:I=>t[I]??null,setActiveInGroup:(I,b)=>n(M=>({...M,[I]:b})),isModifierActive:I=>o[I]??!1,setModifierActive:(I,b)=>d(M=>({...M,[I]:b})),toggleModifier:I=>d(b=>({...b,[I]:!b[I]}))}),[t,o]);return(0,io.jsx)(ro.Provider,{value:s,children:e})};function Gt(){let e=(0,et.useContext)(ro);if(!e)throw new Error("useToolbar must be used within DockableDesktopProvider");return e}var Le=require("react");var co=require("react/jsx-runtime");function dr(){let e=new Map,t=new Set,n=()=>t.forEach(o=>o());return{publish(o,d){return e.set(o,d),n(),()=>{e.get(o)===d&&(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)(()=>dr(),[]);return(0,co.jsx)(Mn.Provider,{value:t,children:e})};function so(e){let t=Ft(),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=Fe(d=>d.activePanelId),t=(0,Le.useContext)(Mn);if(!t)throw new Error("useActivePanelContribution must be used within PanelContributionProvider");let n=(0,Le.useCallback)(d=>t?t.subscribe(d):()=>{},[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 ao(e){let t=dn();return t?.toolbarItems?.length?[...e,{type:"separator"},...t.toolbarItems]:e}function lo(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"),po=({contextMenuAdapter:e=vt,...t})=>{let n=(0,uo.useContext)(It),o=(0,Nt.jsx)($t,{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 ze=require("react");var Te=require("react/jsx-runtime"),cr=({modal:e,index:t,isTopmost:n})=>{let{close:o,openModal:d,updateInstance:s,setDirty:I}=st(),b=He(),M=$e(),{dir:y}=Fe(),{modalClass:C,modalBodyClass:P}=Ue(),S=(0,ze.useRef)(null),{id:L,Component:z,props:_,options:g,dirty:T,dirtyOptions:w}=e,N=g,[m,R]=(0,ze.useState)(N.icon||null),A=(0,ze.useRef)(N);A.current=N;let H=fe(N.title,b),l=(0,ze.useCallback)(async B=>{if(B?.force){o(L);return}if(S.current){if(!await S.current())return;o(L);return}if(T){d(at,{title:w?.title||M.unsavedChangesTitle,message:w?.message||{id:M.unsavedChangesMessage.id,defaultMessage:M.unsavedChangesMessage.defaultMessage,values:{title:H}},alert:w?.alert,alertType:w?.alertType||"danger",useYesNoTitles:!0,onOK:()=>o(L)},{size:"small"});return}o(L)},[o,d,L,T,w,H,M]),k=(0,ze.useCallback)((B,Q)=>I(L,B,Q),[I,L]),Y=(0,ze.useCallback)(B=>s(L,{options:{...A.current,title:B}}),[s,L]),K=(0,ze.useCallback)(B=>R(B),[]),J=(0,ze.useCallback)(B=>(S.current=B,()=>{S.current=null}),[]),oe=(0,ze.useMemo)(()=>({requestClose:l,setDirty:k,setTitle:Y,setIcon:K,onCloseRequested:J,containerType:"modal",instanceId:L}),[l,k,Y,K,J,L]),ne=T?`${H} *`:H,Ce=N.size?`rdd-modal-size-${N.size}`:"rdd-modal-size-auto",se=N.closable!==!1,q=N.bodyPadding,$=q!=null?typeof q=="number"?`${q}px`:q:void 0;(0,ze.useEffect)(()=>{if(!n||!se)return;let B=Q=>{Q.key==="Escape"&&(Q.stopPropagation(),l())};return document.addEventListener("keydown",B),()=>document.removeEventListener("keydown",B)},[l,se,n]);let W=`calc(var(--rdd-z-base, 1000) + 9000 + ${t*10})`;return(0,Te.jsxs)("div",{className:"rdd-modal-overlay",style:{zIndex:W},dir:y,children:[(0,Te.jsx)("div",{className:"rdd-modal-curtain",onClick:se?()=>l():void 0}),(0,Te.jsxs)("div",{className:`rdd-modal-window ${Ce} ${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}),se&&(0,Te.jsx)("button",{className:"rdd-modal-close-button",onClick:()=>l(),title:b(M.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??""}`,style:$!=null?{padding:$}:void 0,children:(0,Te.jsx)(rt,{value:oe,children:(0,Te.jsx)(z,{..._,panelId:L})})})]})]})},ur=()=>{let{modals:e}=Je();return e.length===0?null:(0,Te.jsx)(Te.Fragment,{children:e.map((t,n)=>(0,Te.jsx)(cr,{modal:t,index:n,isTopmost:n===e.length-1},t.id))})},go=ur;var Se=require("react");var cn=require("react");function mo(e){let[t,n]=(0,cn.useState)(null);return(0,cn.useLayoutEffect)(()=>{let o=e.current?.parentElement;if(!o)return;let d=()=>{let I=o.getBoundingClientRect();n({top:I.top,left:I.left,right:window.innerWidth-I.right,height:I.height})};d();let s=new ResizeObserver(d);return s.observe(o),window.addEventListener("resize",d),()=>{s.disconnect(),window.removeEventListener("resize",d)}},[e]),t}var ye=require("react/jsx-runtime"),un=({panel:e,position:t,defaultWidth:n,containerRect:o})=>{let{close:d,openModal:s,updateInstance:I,setDirty:b,registerCloseHandler:M,unregisterCloseHandler:y}=st(),{modals:C}=Je(),P=He(),S=$e(),{dir:L}=Fe(),{sidePanelClass:z,sidePanelBodyClass:_}=Ue(),g=(0,Se.useRef)(null),{id:T,Component:w,props:N,options:m,dirty:R,dirtyOptions:A}=e,H=m,[l,k]=(0,Se.useState)(H.icon||null),Y=(0,Se.useRef)(H);Y.current=H;let K=fe(H.title,P),J=(0,Se.useCallback)(async ee=>{if(ee?.force){d(T);return}if(g.current){if(!await g.current())return;d(T);return}if(R){s(at,{title:A?.title||S.unsavedChangesTitle,message:A?.message||{id:S.unsavedChangesMessage.id,defaultMessage:S.unsavedChangesMessage.defaultMessage,values:{title:K}},alert:A?.alert,alertType:A?.alertType||"danger",useYesNoTitles:!0,onOK:()=>d(T)},{size:"small"});return}d(T)},[d,s,T,R,A,K,S]),oe=(0,Se.useCallback)(async()=>g.current?await g.current():!R,[R]);(0,Se.useEffect)(()=>(M(T,oe),()=>y(T)),[T,oe,M,y]);let ne=(0,Se.useCallback)((ee,be)=>b(T,ee,be),[b,T]),Ce=(0,Se.useCallback)(ee=>I(T,{options:{...Y.current,title:ee}}),[I,T]),se=(0,Se.useCallback)(ee=>k(ee),[]),q=(0,Se.useCallback)(ee=>(g.current=ee,()=>{g.current=null}),[]),$=(0,Se.useMemo)(()=>({requestClose:J,setDirty:ne,setTitle:Ce,setIcon:se,onCloseRequested:q,containerType:t==="left"?"left-panel":"right-panel",instanceId:T}),[J,ne,Ce,se,q,t,T]),W=R?`${K} *`:K;(0,Se.useEffect)(()=>{let ee=be=>{be.key==="Escape"&&C.length===0&&J()};return document.addEventListener("keydown",ee),()=>document.removeEventListener("keydown",ee)},[J,C.length]);let B=H.width||n||400,Q=typeof B=="number"?`${B}px`:B,we=H.bodyPadding,xe=we!=null?typeof we=="number"?`${we}px`:we:void 0;return(0,ye.jsx)("div",{className:`rdd-side-panel rdd-side-panel-${t} rdd-side-panel-visible ${z??""}`,style:{width:Q,...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:[l&&(0,ye.jsx)("div",{className:"rdd-side-panel-icon",children:l}),(0,ye.jsx)("h4",{className:"rdd-side-panel-title",children:W}),(0,ye.jsx)("button",{className:"rdd-side-panel-close-button",onClick:()=>J(),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 ${_??""}`,style:xe!=null?{padding:xe}:void 0,children:(0,ye.jsx)(rt,{value:$,children:(0,ye.jsx)(w,{...N,panelId:T})})})]})})},Sn=({children:e})=>{let t=(0,Se.useRef)(null),n=mo(t);return(0,ye.jsx)("div",{ref:t,style:{display:"contents"},children:e(n)})},pr=({defaultWidth:e})=>{let{leftPanel:t,rightPanel:n}=Je();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)]})})},fo=({defaultWidth:e})=>{let{leftPanel:t}=Je();return(0,ye.jsx)(Sn,{children:n=>t?(0,ye.jsx)(un,{panel:t,position:"left",defaultWidth:e,containerRect:n},t.id):null})},ho=({defaultWidth:e})=>{let{rightPanel:t}=Je();return(0,ye.jsx)(Sn,{children:n=>t?(0,ye.jsx)(un,{panel:t,position:"right",defaultWidth:e,containerRect:n},t.id):null})},bo=pr;var te=qt(require("react"),1);var ge=require("react/jsx-runtime");function kn(e){return"renderContent"in e}function gr(e){return"render"in e}function vo(e){return e==null?[]:Array.isArray(e)?e:[e]}var En=(0,te.createContext)(null),xo=(0,te.createContext)(null);function mr({tabId:e,onClose:t,onOpen:n,setActiveTabId:o,children:d}){let s=(0,te.useMemo)(()=>({tabId:e,onClose:t,onOpen:n,openTab:I=>o(I)}),[e,t,n,o]);return(0,ge.jsx)(xo.Provider,{value:s,children:d})}function yo(e,t,n,o){if(gr(e))return(0,ge.jsx)(te.default.Fragment,{children:e.render()},e.id??t);if(kn(e)){if(e.hidden)return null;let d=n===e.id;return(0,ge.jsx)("button",{type:"button",onClick:()=>o(e.id),className:`rdd-sidebar-tab-btn${d?" rdd-active":""}`,title:e.label,"aria-pressed":d,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 Po=(0,te.memo)(function({tabs:t,headerEntries:n,footerEntries:o,activeTabId:d,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((M,y)=>yo(M,y,d,b))}),(0,ge.jsx)("div",{className:"rdd-sidebar-tabs-list",children:t.map(M=>{if(M.hidden)return null;let y=d===M.id;return(0,ge.jsx)("button",{type:"button",onClick:()=>b(M.id),className:`rdd-sidebar-tab-btn${y?" rdd-active":""}`,title:M.label,"aria-pressed":y,children:M.icon},M.id)})}),o.length>0&&(0,ge.jsx)("div",{className:"rdd-sidebar-footer-area",children:o.map((M,y)=>yo(M,y,d,b))})]})})});function fr({position:e,currentWidth:t,minWidth:n,maxWidth:o,onWidthChange:d,onResizeStart:s,onResizeEnd:I}){return(0,ge.jsx)("div",{className:"rdd-resizer-bar",style:{cursor:"col-resize",width:"1px",height:"100%",flexShrink:0,zIndex:20},onPointerDown:M=>{M.preventDefault();let y=M.currentTarget,C=[{el:y,classes:["rdd-active"]},{el:document.body,classes:["rdd-resizing-active","rdd-resizing-col-active"]}];s(),Qe({element:y,pointerId:M.pointerId,startClientX:M.clientX,startClientY:M.clientY,captureStart:()=>t,activeClasses:C,onMove:(P,S,L)=>{let z=e==="right"?L-P:L+P;d(Math.max(n,Math.min(o,z)))},onEnd:()=>I()})}})}var In=(0,te.forwardRef)(function({position:t="right",tabs:n,headerAction:o,footerAction:d,defaultWidth:s,minWidth:I=150,maxWidth:b=600,onWidthChange:M,activeTabId:y,onActiveTabChange:C,visible:P,onVisibilityChange:S,stripVisible:L,onStripVisibilityChange:z,showCloseButton:_=!1,hideDefaultHeader:g=!1,renderHeader:T,isSecondary:w=!1,children:N},m){let R=y!==void 0,[A,H]=(0,te.useState)(()=>s??280),l=(0,te.useCallback)(re=>{H(re),M?.(re)},[M]),[k,Y]=(0,te.useState)(!1),[K,J]=(0,te.useState)(null),oe=R?y:K,ne=(0,te.useMemo)(()=>vo(o),[o]),Ce=(0,te.useMemo)(()=>vo(d),[d]),se=(0,te.useMemo)(()=>ne.filter(kn),[ne]),q=(0,te.useMemo)(()=>Ce.filter(kn),[Ce]),$=(0,te.useMemo)(()=>[...se,...n,...q],[se,n,q]),[W,B]=(0,te.useState)(()=>new Set),Q=(0,te.useMemo)(()=>{let re=new Set(W);oe&&re.add(oe);for(let Ee of $)Ee.eagerMount&&re.add(Ee.id);return re},[W,oe,$]),we=(0,te.useRef)(oe??null);(0,te.useEffect)(()=>{we.current=oe??null},[oe]);let xe=(0,te.useRef)(A);(0,te.useEffect)(()=>{xe.current=A},[A]);let ee=(0,te.useCallback)(re=>{B(re!==null?Ee=>{if(Ee.has(re))return Ee;let Ae=new Set(Ee);return Ae.add(re),Ae}:Ee=>{let Ae=!1,Ie=new Set(Ee);for(let tt of Ee){let nt=$.find(Xe=>Xe.id===tt);nt&&!nt.eagerMount&&!nt.preserveState&&(Ie.delete(tt),Ae=!0)}return Ae?Ie:Ee}),R||J(re),C?.(re)},[R,C,$]);(0,te.useEffect)(()=>{oe!=null&&!$.some(re=>re.id===oe)&&ee(null)},[oe,$,ee]),(0,te.useImperativeHandle)(m,()=>({openTab:re=>ee(re),closeDrawer:()=>ee(null),getActiveTab:()=>we.current,show:()=>S?.(!0),hide:()=>S?.(!1),toggle:()=>S?.(P===!1),showStrip:()=>z?.(!0),hideStrip:()=>z?.(!1),setWidth:re=>l(Math.max(I,Math.min(b,re))),getWidth:()=>xe.current}),[ee,P,S,z,l,I,b]);let be=(0,te.useCallback)(re=>{ee(oe===re?null:re)},[oe,ee]),De=(0,te.useCallback)(()=>ee(null),[ee]),We=g||T!=null,Oe=(0,te.useRef)(!1);(0,te.useEffect)(()=>{process.env.NODE_ENV==="development"&&(!_||!We||Oe.current||(Oe.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`.')))},[_,We]);let Ke=(0,te.useMemo)(()=>({openTab:re=>ee(re),closeDrawer:()=>ee(null),getActiveTab:()=>we.current,position:t,isSecondary:w}),[ee,t,w]),Ge=P!==!1,Ye=Ge&&L!==!1,qe=Ge&&oe!=null,je=(0,ge.jsx)("div",{className:`rdd-sidebar-content-drawer rdd-${t}`,style:{flexBasis:qe?`${A}px`:"0px",flexShrink:1,flexGrow:0,minWidth:qe?`${I}px`:"0px",maxWidth:qe?`${b}px`:"0px",overflow:"hidden",transition:k?"none":"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:$.map(re=>{if(!Q.has(re.id))return null;let Ae=oe===re.id,Ie=()=>ee(re.id);return(0,ge.jsxs)("div",{style:{display:Ae?"flex":"none",flexDirection:"column",height:"100%",width:"100%"},children:[We?T?.(re,De,Ie):(0,ge.jsxs)("div",{className:"rdd-sidebar-drawer-header",children:[(0,ge.jsx)("span",{className:"rdd-sidebar-header-title",children:re.label}),_&&(0,ge.jsx)("button",{type:"button",className:"rdd-sidebar-drawer-close-button",onClick:De,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)(mr,{tabId:re.id,onClose:De,onOpen:Ie,setActiveTabId:ee,children:re.renderContent(re.id,De,Ie)})})]},re.id)})}),Re=qe?(0,ge.jsx)(fr,{position:t,currentWidth:A,minWidth:I,maxWidth:b,onWidthChange:l,onResizeStart:()=>Y(!0),onResizeEnd:()=>Y(!1)}):null;return(0,ge.jsx)(En.Provider,{value:Ke,children:(0,ge.jsxs)("div",{style:{display:"flex",flexDirection:"row",width:"100%",height:"100%",overflow:"hidden"},children:[t==="left"&&(0,ge.jsx)(Po,{tabs:n,headerEntries:ne,footerEntries:Ce,activeTabId:oe,isVisible:Ye,position:t,onTabClick:be}),t==="left"&&je,t==="left"&&Re,(0,ge.jsx)("div",{style:{flex:"1 1 0%",minWidth:0,overflow:"hidden"},children:N}),t==="right"&&Re,t==="right"&&je,t==="right"&&(0,ge.jsx)(Po,{tabs:n,headerEntries:ne,footerEntries:Ce,activeTabId:oe,isVisible:Ye,position:t,onTabClick:be})]})})}),Co=(0,te.forwardRef)(function(t,n){let o=(0,te.useContext)(En);if(!o)throw new Error("SecondarySidebar must be rendered inside a primary Sidebar's children");if(o.isSecondary)throw new Error("SecondarySidebar cannot be nested inside another SecondarySidebar");let d=o.position==="left"?"right":"left";return(0,ge.jsx)(In,{ref:n,...t,position:d,isSecondary:!0})});function wo(){let e=(0,te.useContext)(En);if(!e)throw new Error("useSidebar must be used within Sidebar");return e}function Ro(){let e=(0,te.useContext)(xo);if(!e)throw new Error("useSidebarTab must be used within a Sidebar tab renderContent tree");return e}var Ne=require("react"),Mo=require("react-dom");var ke=require("react/jsx-runtime");function hr(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 br({item:e,position:t,toolbar:n}){let[o,d]=(0,Ne.useState)(!1),[s,I]=(0,Ne.useState)(null),b=(0,Ne.useRef)(null),M=(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,z=P?.label??e.label,_=()=>{e.disabled||(!o&&b.current&&I(b.current.getBoundingClientRect()),d(g=>!g))};return(0,Ne.useLayoutEffect)(()=>{if(!o||!M.current)return;let g=M.current,T=g.getBoundingClientRect(),w=8;T.right>window.innerWidth-w&&(g.style.left=`${Math.max(w,window.innerWidth-T.width-w)}px`,g.style.right="auto"),T.left<w&&(g.style.left=`${w}px`,g.style.right="auto"),T.bottom>window.innerHeight-w&&(g.style.top=`${Math.max(w,window.innerHeight-T.height-w)}px`,g.style.bottom="auto"),T.top<w&&(g.style.top=`${w}px`,g.style.bottom="auto")},[o]),(0,Ne.useEffect)(()=>{if(!o)return;let g=T=>{let w=T.target;b.current?.contains(w)||M.current?.contains(w)||d(!1)};return document.addEventListener("mousedown",g),()=>document.removeEventListener("mousedown",g)},[o]),(0,Ne.useEffect)(()=>{if(!o)return;let g=T=>{T.key==="Escape"&&d(!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:z,"aria-label":z,"aria-expanded":o,"aria-haspopup":"menu",disabled:e.disabled,onClick:_,children:L}),o&&s&&(0,Mo.createPortal)((0,ke.jsx)("div",{ref:M,className:`rdd-toolbar-group-flyout rdd-${t}`,style:hr(s,t,document.documentElement.dir==="rtl"),role:"menu",children:e.items.map((g,T)=>{if("type"in g)return(0,ke.jsx)("div",{className:"rdd-toolbar-group-flyout-sep",role:"separator"},`sep-${T}`);let w=C===g.id;return(0,ke.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),d(!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 vr(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 d=n.getActiveInGroup(e.group)===e.id;return(0,ke.jsx)("button",{type:"button",className:`rdd-toolbar-btn rdd-toolbar-btn-radio${d?" rdd-active":""}`,title:e.label,"aria-label":e.label,"aria-pressed":d,disabled:e.disabled,onClick:()=>{n.setActiveInGroup(e.group,e.id),e.onActivate?.(e.id)},children:e.icon},e.id)}case"toggle":{let d=e.active!==void 0,s=d?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:()=>{d||n.toggleModifier(e.id),e.onToggle?.(!s)},children:e.icon},e.id)}case"group":return(0,ke.jsx)(br,{item:e,position:o,toolbar:n},e.id)}}var To=(0,Ne.forwardRef)(function({position:t="left",items:n,visible:o,onVisibilityChange:d,className:s,style:I},b){let M=Gt(),y=t==="left"||t==="right";(0,Ne.useImperativeHandle)(b,()=>({show:()=>d?.(!0),hide:()=>d?.(!1),toggle:()=>d?.(o===!1)}),[o,d]);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)=>vr(P,S,M,t))})});var Pe=require("react"),zn=require("react-dom"),me=require("react/jsx-runtime"),Nn=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))}},_e=new Nn,So=Object.assign((e,t)=>_e.show(e,t),{info:(e,t)=>_e.show(e,{...t,type:"info"}),success:(e,t)=>_e.show(e,{...t,type:"success"}),warning:(e,t)=>_e.show(e,{...t,type:"warning"}),error:(e,t)=>_e.show(e,{...t,type:"error"}),dismiss:e=>_e.dismiss(e),promise:(e,t,n)=>{let o=_e.show(t.pending,{...n,type:"info",duration:0});return e.then(d=>{let s=typeof t.success=="function"?t.success(d):t.success;_e.update(o,s,{type:"success",duration:n?.duration??5e3})},d=>{let s=typeof t.error=="function"?t.error(d):t.error;_e.update(o,s,{type:"error",duration:n?.duration??5e3})}),e}}),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:"M8 5v.01M8 7.5v3.5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]}),Pr=()=>(0,me.jsxs)("svg",{className:"rdd-toast__icon",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[(0,me.jsx)("circle",{cx:"8",cy:"8",r:"7",stroke:"currentColor",strokeWidth:"1.5"}),(0,me.jsx)("path",{d:"M5 8l2 2 4-4",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})]}),xr=()=>(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"})]}),Cr=()=>(0,me.jsxs)("svg",{className:"rdd-toast__icon",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[(0,me.jsx)("circle",{cx:"8",cy:"8",r:"7",stroke:"currentColor",strokeWidth:"1.5"}),(0,me.jsx)("path",{d:"M5.5 5.5l5 5M10.5 5.5l-5 5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]}),wr=()=>(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"})}),Rr={info:(0,me.jsx)(yr,{}),success:(0,me.jsx)(Pr,{}),warning:(0,me.jsx)(xr,{}),error:(0,me.jsx)(Cr,{})};function Mr({id:e,message:t,options:n,exiting:o,isLeft:d,showProgress:s,pauseOnHover:I,animation:b,onDismiss:M,onExited:y}){let C=(0,Pe.useRef)(null),P=(0,Pe.useRef)(null),S=(0,Pe.useRef)(null),L=(0,Pe.useRef)(n.duration),z=(0,Pe.useRef)(0),[_,g]=(0,Pe.useState)(!1),T=b==="none"?"rdd-toast--visible":b==="fade"?"rdd-toast--fade-entering":d?"rdd-toast--entering-left":"rdd-toast--entering",[w,N]=(0,Pe.useState)(T);(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 J=new ResizeObserver(K);return J.observe(Y),()=>J.disconnect()},[o]),(0,Pe.useEffect)(()=>{if(b==="none")return;let k=requestAnimationFrame(()=>N("rdd-toast--visible"));return()=>cancelAnimationFrame(k)},[]);let m=(0,Pe.useCallback)(k=>{k<=0||(z.current=Date.now(),S.current=setTimeout(()=>M(e),k))},[e,M]);(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=J=>{J.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()-z.current))),g(!0))},A=()=>{!I||n.duration===0||(g(!1),m(L.current))},H=["rdd-toast",n.type&&`rdd-toast--${n.type}`,w,o&&"rdd-toast--exiting",_&&"rdd-toast--paused"].filter(Boolean).join(" "),l=n.icon!==void 0?n.icon:n.type?Rr[n.type]:null;return(0,me.jsxs)("div",{ref:C,role:"status","aria-live":"polite",className:H,onMouseEnter:R,onMouseLeave:A,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:()=>M(e),"aria-label":"Close notification",children:(0,me.jsx)(wr,{})}),s&&n.duration>0&&(0,me.jsx)("div",{className:"rdd-toast__progress",style:{animationDuration:`${n.duration}ms`}})]})}function Ln(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 ko({position:e="top-right",maxVisible:t=3,defaultDuration:n=5e3,defaultClosable:o=!0,pauseOnHover:d=!0,animation:s="slide",newestOnTop:I=!1,progressBar:b=!1,width:M=320,adapter:y}){let[C,P]=(0,Pe.useState)([]),S=(0,Pe.useRef)([]),L=(0,Pe.useRef)(C);L.current=C;let z=(0,Pe.useCallback)(N=>{P(m=>m.map(R=>R.id===N?{...R,exiting:!0}:R)),L.current.find(m=>m.id===N)?.options.onClose?.()},[]),_=(0,Pe.useCallback)(N=>{let m=S.current.shift()??null;P(R=>{let A=R.filter(l=>l.id!==N);if(!m)return A;let H=Ln(m.rawOpts,n,o);return[...A,{id:m.id,message:m.message,options:H,exiting:!1}]})},[n,o]);if((0,Pe.useEffect)(()=>{if(y)return;let N=m=>{if(m.kind==="show"){let R=Ln(m.rawOpts,n,o),A={id:m.id,message:m.message,options:R,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:R}:K):l.filter(K=>!K.exiting).length<t?[...l,A]:(S.current.some(K=>K.id===H.id)||S.current.push(H),l))}else m.kind==="update"?(P(R=>R.map(A=>{if(A.id!==m.id)return A;let H={...A.options,...m.patch,id:A.id};return{...A,message:m.message,options:H}})),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(A=>({...A,exiting:!0}))),S.current=[]):L.current.some(A=>A.id===m.id)?z(m.id):S.current=S.current.filter(A=>A.id!==m.id))};return _e.subscribe(N),()=>_e.unsubscribe(N)},[y,t,n,o,z]),(0,Pe.useEffect)(()=>{if(!y)return;let N=m=>{if(m.kind==="show"){let R=Ln(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 _e.subscribe(N),()=>_e.unsubscribe(N)},[y,n,o]),y){if(!y.Container)return null;let N=y.Container;return(0,zn.createPortal)((0,me.jsx)(N,{position:e}),document.body)}let g=e.endsWith("left"),T="";I===!0&&(T="rdd-toast-container--newest-top"),I===!1&&(T="rdd-toast-container--newest-bottom");let w=["rdd-toast-container",`rdd-toast-container--${e}`,T].filter(Boolean).join(" ");return(0,zn.createPortal)((0,me.jsx)("div",{className:w,style:{width:M},"aria-label":"Notifications","aria-live":"polite",children:C.map(N=>(0,me.jsx)(Mr,{id:N.id,message:N.message,options:N.options,exiting:N.exiting,isLeft:g,showProgress:b,pauseOnHover:d,animation:s,onDismiss:z,onExited:_},N.id))}),document.body)}var X=qt(require("react"),1),Io=require("react-dom");var Z=require("react/jsx-runtime"),Tr=["top-left","top-right","bottom-left","bottom-right"],Lo=(0,X.createContext)(null),zo=(0,X.createContext)(null),No=(0,X.createContext)(null),dt=80;function Sr(e,t,n){let o=e.getBoundingClientRect(),d=t-o.left,s=n-o.top;return d<dt&&s<dt?"top-left":d>o.width-dt&&s<dt?"top-right":d<dt&&s>o.height-dt?"bottom-left":d>o.width-dt&&s>o.height-dt?"bottom-right":null}function Do({children:e,className:t,style:n}){let[o,d]=(0,X.useState)({}),[s,I]=(0,X.useState)({}),[b,M]=(0,X.useState)({"top-left":[],"top-right":[],"bottom-left":[],"bottom-right":[]}),[y,C]=(0,X.useState)({}),[P,S]=(0,X.useState)(null),[L,z]=(0,X.useState)(null),[_,g]=(0,X.useState)(null),[T,w]=(0,X.useState)(()=>new Map),N=(0,X.useRef)(100),m=(0,X.useRef)(null),R=(0,X.useCallback)((q,$)=>(d(W=>({...W,[q]:$})),()=>d(W=>{let B={...W};return delete B[q],B})),[]),A=(0,X.useCallback)(q=>{N.current+=1;let $=N.current;I(W=>({...W,[q]:$})),g(q)},[]),H=(0,X.useCallback)((q,$)=>{M(W=>{let B={"top-left":W["top-left"].filter(Q=>Q!==q),"top-right":W["top-right"].filter(Q=>Q!==q),"bottom-left":W["bottom-left"].filter(Q=>Q!==q),"bottom-right":W["bottom-right"].filter(Q=>Q!==q)};return B[$]=[...B[$],q],B})},[]),l=(0,X.useCallback)(q=>{M($=>({"top-left":$["top-left"].filter(W=>W!==q),"top-right":$["top-right"].filter(W=>W!==q),"bottom-left":$["bottom-left"].filter(W=>W!==q),"bottom-right":$["bottom-right"].filter(W=>W!==q)}))},[]),k=(0,X.useCallback)((q,$)=>{C(W=>W[q]===$?W:{...W,[q]:$})},[]),Y=(0,X.useCallback)((q,$)=>{w(W=>{let B=new Map(W);return B.set(q,$),B})},[]),K=(0,X.useCallback)(q=>{w($=>{let W=new Map($);return W.delete(q),W})},[]),J=(0,X.useCallback)(()=>{w(new Map)},[]),oe=(0,X.useMemo)(()=>Array.from(T.keys()),[T]),ne=(0,X.useMemo)(()=>({registerToolbar:R,insetTop:o.top??0,insetBottom:o.bottom??0}),[R,o]),Ce=(0,X.useMemo)(()=>({managedWindowIds:oe,openManaged:Y,closeManaged:K,closeAllManaged:J}),[oe,Y,K,J]),se=(0,X.useMemo)(()=>({topId:_,zOrders:s,focusWindow:A,containerRef:m,stacks:b,dockedSizes:y,dockWindow:H,undockWindow:l,reportDockedSize:k,draggingId:P,setDraggingId:S,hoveredZone:L,setHoveredZone:z,insetTop:o.top??0,insetBottom:o.bottom??0}),[_,s,A,b,y,H,l,k,P,L,o]);return(0,Z.jsx)(Lo.Provider,{value:ne,children:(0,Z.jsx)(zo.Provider,{value:Ce,children:(0,Z.jsx)(No.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)(kr,{hoveredZone:L}),Array.from(T.entries()).map(([q,$])=>(0,Z.jsx)(Dn,{id:q,title:$.title,icon:$.icon,open:!0,onClose:()=>K(q),defaultAnchor:$.anchor??"top-right",defaultWidth:$.width??320,defaultHeight:$.height??240,children:$.content},q))]})})})})}function kr({hoveredZone:e}){return(0,Z.jsx)(Z.Fragment,{children:Tr.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 Wo({position:e,variant:t="transparent",buttonVariant:n="ghost",buttonSize:o,style:d,className:s,children:I}){let b=(0,X.useContext)(Lo),M=(0,X.useRef)(null),y=(0,X.useRef)(null);(0,X.useLayoutEffect)(()=>{let z=M.current;if(!z||!b)return;let _=()=>{let T=e==="top"||e==="bottom"?z.offsetHeight:z.offsetWidth;y.current?.(),y.current=b.registerToolbar(e,T)};_();let g=new ResizeObserver(_);return g.observe(z),()=>{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:M,className:`rdd-panel-toolbar rdd-panel-toolbar--${e}${s?" "+s:""}`,"data-variant":t,"data-btn-variant":n,style:{...C,...S,...L,...d},children:I})}function Oo({icon:e,onClick:t,disabled:n,title:o,variant:d}){return(0,Z.jsx)("button",{type:"button",className:"rdd-panel-toolbar-btn",onClick:t,disabled:n,title:o,"aria-label":o,...d?{"data-variant":d}:{},children:e})}function Ao({icon:e,active:t,onToggle:n,disabled:o,title:d,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:d,"aria-label":d,"aria-pressed":t,...s?{"data-variant":s}:{},children:e})}function Fo(){return(0,Z.jsx)("span",{className:"rdd-panel-toolbar__sep","aria-hidden":"true"})}function _o(){return(0,Z.jsx)("span",{className:"rdd-panel-toolbar__spacer","aria-hidden":"true"})}function Ho({children:e}){return(0,Z.jsx)("span",{className:"rdd-panel-toolbar__item",children:e})}function Bo({children:e}){return(0,Z.jsx)("div",{className:"rdd-panel-toolbar__center",children:e})}function $o({placeholder:e="Search\u2026",onSearch:t,onSelect:n}){let[o,d]=(0,X.useState)(!1),[s,I]=(0,X.useState)(""),[b,M]=(0,X.useState)([]),[y,C]=(0,X.useState)(null),P=(0,X.useRef)(null),S=(0,X.useRef)(null),L=(0,X.useRef)(null),z=(0,X.useRef)(null),_=()=>{d(!0),setTimeout(()=>S.current?.focus({preventScroll:!0}),0)},g=()=>{d(!1),I(""),M([]),C(null),L.current?.abort(),z.current&&clearTimeout(z.current)},T=H=>{let l=H.target.value;if(I(l),L.current?.abort(),z.current&&clearTimeout(z.current),!l.trim()){M([]),C(null);return}z.current=setTimeout(async()=>{let k=new AbortController;L.current=k;try{let Y=await t(l,k.signal);if(!k.signal.aborted){M(Y);let K=P.current;if(K&&Y.length>0){let J=K.getBoundingClientRect(),oe=Math.max(J.width,240),ne=J.left;ne+oe>window.innerWidth-8&&(ne=window.innerWidth-oe-8),C({top:J.bottom+4,left:ne,width:oe})}else C(null)}}catch{}},300)},w=H=>{n(H),g()},N=H=>{P.current?.contains(H.relatedTarget)||g()},m=H=>{H.key==="Escape"&&g()},R=(0,X.useMemo)(()=>{let H={};for(let l of b){let k=l.group??"";H[k]||(H[k]=[]),H[k].push(l)}return H},[b]),A=(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:N,children:[(0,Z.jsx)("button",{type:"button",className:"rdd-panel-toolbar-btn",onClick:g,"aria-label":"Close search",title:"Close search",children:A}),(0,Z.jsx)("input",{ref:S,className:"rdd-panel-toolbar-search__input",type:"text",value:s,onChange:T,onKeyDown:m,placeholder:e,autoComplete:"off"}),y&&b.length>0&&(0,Io.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(R).map(([H,l])=>(0,Z.jsxs)(X.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:()=>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))]},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:A})})}function Dn(e){let t=(0,X.useContext)(No);return e.open?(0,Z.jsx)(zr,{ctx:t,...e},e.id):null}var Er=120,Ir=60,Eo=8,Lr=8;function zr({id:e,title:t,icon:n,defaultAnchor:o,defaultWidth:d,defaultHeight:s,children:I,ctx:b,onClose:M}){let y=(0,X.useContext)(Tt)?.isRtl??!1,[C,P]=(0,X.useState)("docked"),[S,L]=(0,X.useState)(o),[z,_]=(0,X.useState)(null),[g,T]=(0,X.useState)({w:d,h:s}),w=(0,X.useRef)(null),N=(0,X.useRef)(C);N.current=C;let m=(0,X.useRef)(z);m.current=z;let R=(0,X.useRef)(g);R.current=g;let A=(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 H=b?.zOrders[e]??101,l=!b||b.topId===e,k=()=>{let $=w.current?.offsetParent;return{cw:$?.clientWidth??9999,ch:$?.clientHeight??9999}},Y=()=>{b?.focusWindow(e)},K=$=>{if($.button!==0)return;$.preventDefault();let W,B;if(N.current==="docked"){let Q=w.current,we=b?.containerRef?.current;if(Q&&we){let xe=Q.getBoundingClientRect(),ee=we.getBoundingClientRect();W=xe.left-ee.left,B=xe.top-ee.top}else W=Eo,B=b?.insetTop??0;b?.undockWindow(e),P("free"),_({x:W,y:B})}else W=m.current?.x??0,B=m.current?.y??0;A.current={mouseX:$.clientX,mouseY:$.clientY,posX:W,posY:B,hasDragged:!1},w.current?.setPointerCapture($.pointerId),document.body.classList.add("rdd-dragging-active")},J=$=>W=>{if(W.button!==0)return;W.preventDefault(),W.stopPropagation();let B=0,Q=0;if(N.current==="free")B=m.current?.x??0,Q=m.current?.y??0;else{let xe=w.current,ee=xe?.offsetParent;if(xe&&ee){let be=xe.getBoundingClientRect(),De=ee.getBoundingClientRect();B=be.left-De.left,Q=be.top-De.top}}let we={x:B,y:Q,w:R.current.w,h:R.current.h};Qe({element:W.currentTarget,pointerId:W.pointerId,startClientX:W.clientX,startClientY:W.clientY,captureStart:()=>we,activeClasses:[{el:document.body,classes:["rdd-resizing-active"]}],onMove:(xe,ee,be)=>{let{cw:De,ch:We}=k(),{x:Oe,y:Ke,w:Ge,h:Ye}=Lt($,xe,ee,be,{minW:Er,minH:Ir,maxW:De-be.x,maxH:We-be.y,minX:0,minY:0});T({w:Ge,h:Ye}),N.current==="free"&&_({x:Oe,y:Ke})}})},oe=$=>{if(A.current){let W=A.current;if(!W.hasDragged){if(Math.abs($.clientX-W.mouseX)+Math.abs($.clientY-W.mouseY)<4)return;W.hasDragged=!0,b?.setDraggingId(e)}let{cw:B,ch:Q}=k(),we=Math.max(0,Math.min(W.posX+$.clientX-W.mouseX,B-R.current.w)),xe=Math.max(0,Math.min(W.posY+$.clientY-W.mouseY,Q-R.current.h));_({x:we,y:xe});let ee=b?.containerRef?.current;if(ee){let be=Sr(ee,$.clientX,$.clientY);b?.setHoveredZone(be&&y?Ht(be):be)}}},ne=()=>{if(A.current){let $=b?.hoveredZone;$&&(b?.dockWindow(e,$),L($),P("docked"),_(null)),b?.setHoveredZone(null),b?.setDraggingId(null)}document.body.classList.remove("rdd-dragging-active"),A.current=null},Ce=()=>{A.current&&(b?.setHoveredZone(null),b?.setDraggingId(null)),document.body.classList.remove("rdd-dragging-active"),A.current=null},se;if(C==="docked"&&b){let $=b.stacks[S]??[],W=$.indexOf(e),B=0;for(let Q=0;Q<W;Q++)B+=(b.dockedSizes[$[Q]]??s)+Lr;se={width:g.w,height:g.h,zIndex:H,transition:"top 0.2s ease, bottom 0.2s ease",opacity:W===-1?0:void 0,pointerEvents:W===-1?"none":void 0},se[S.endsWith("-right")?"insetInlineEnd":"insetInlineStart"]=Eo,S.startsWith("top-")?se.top=b.insetTop+B:se.bottom=b.insetBottom+B}else se={left:z?.x??0,top:z?.y??0,width:g.w,height:g.h,zIndex:H};return(0,Z.jsxs)("div",{ref:w,dir:y?"rtl":"ltr",className:`rdd-panel-float${l?" rdd-panel-float--active":""}`,style:se,onPointerDown:Y,onPointerMove:oe,onPointerUp:ne,onPointerCancel:Ce,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:M,onPointerDown:$=>$.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 Go(){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 Nr=[];function Yo(){let e=(0,X.useContext)(zo),t=e?.managedWindowIds??Nr;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,SecondarySidebar,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.`)}wt({width:Math.max(100,f.width),height:Math.max(100,f.height)})});return g.observe(r),()=>{g.disconnect()}},[]),(0,V.useEffect)(()=>{let r=ct.width,P=ct.height;s.floating.forEach(g=>{let b=typeof g.width=="string"?parseFloat(g.width):g.width,f=typeof g.height=="string"?parseFloat(g.height):g.height,T=typeof g.x=="string"?parseFloat(g.x):g.x,N=typeof g.y=="string"?parseFloat(g.y):g.y,D=b,Z=f,se=T,j=N,ae=!1;if(D>r&&(D=Math.max(200,r-20),ae=!0),Z>P&&(Z=Math.max(150,P-40),ae=!0),!g.anchor){let he=r-100;se>he&&(se=Math.max(0,he),ae=!0);let de=P-40;j>de&&(j=Math.max(0,de),ae=!0)}ae&&u(g.id,{x:se,y:j,width:D,height:Z})})},[ct,s.floating,u]),(0,V.useEffect)(()=>{let r=P=>{if(P.button!==0)return;let g=P.target;if(!g||typeof g.closest!="function")return;let b=g.closest(".rdd-floating-window");if(b){let T=b.getAttribute("data-window-id");T&&(M(T),I(T));return}let f=g.closest(".rdd-workspace-panel");if(f){let T=f.getAttribute("data-active-panel-id");T&&M(T)}};return document.addEventListener("pointerdown",r),()=>{document.removeEventListener("pointerdown",r)}},[I,M]);let Rt=(r,P)=>{P.preventDefault();let g=s.floating.find(j=>j.id===r);if(!g||g.maximized)return;I(r);let b=P.currentTarget,f=b.closest(".rdd-floating-window"),T=P.clientX,N=P.clientY,D=f?f.offsetLeft:0,Z=f?f.offsetTop:0,se=()=>{let j=Ze.current,ae=Me.current,he=ot.current,de=Y.current;if(de)u(r,{anchor:fe?qt(de):de});else if(he)R(r,Ee(he));else if(ae){let ge=ae.index;ae.side==="right"&&(ge+=1),p(r,ae.leafId,ge)}else j&&H(r,j.leafId,Ee(j.position));U(null),Ie()};if(P.pointerType==="touch"){let j=P.pointerId,ae=!1,he=()=>{ae=!0,clearTimeout(ge),b.removeEventListener("pointermove",de),b.removeEventListener("pointerup",he),b.removeEventListener("pointercancel",he)},de=be=>{Math.hypot(be.clientX-T,be.clientY-N)>dt&&he()},ge=setTimeout(()=>{if(ae)return;b.removeEventListener("pointermove",de),b.removeEventListener("pointerup",he),b.removeEventListener("pointercancel",he);try{b.setPointerCapture(j)}catch{return}b.classList.add("rdd-long-press-active"),document.body.classList.add("rdd-dragging-active"),E(r);let be=Lt=>{let zt=Lt.clientX-T,Nt=Lt.clientY-N;u(r,{x:D+zt,y:Z+Nt,anchor:null}),He(Lt.clientX,Lt.clientY)},ze=()=>{b.classList.remove("rdd-long-press-active"),document.body.classList.remove("rdd-dragging-active"),b.removeEventListener("pointermove",be),b.removeEventListener("pointerup",ze),b.removeEventListener("pointercancel",Mt),se()},Mt=()=>{b.classList.remove("rdd-long-press-active"),document.body.classList.remove("rdd-dragging-active"),b.removeEventListener("pointermove",be),b.removeEventListener("pointerup",ze),b.removeEventListener("pointercancel",Mt),Ie()};b.addEventListener("pointermove",be),b.addEventListener("pointerup",ze),b.addEventListener("pointercancel",Mt)},Le);b.addEventListener("pointermove",de),b.addEventListener("pointerup",he),b.addEventListener("pointercancel",he)}else{let j=!1,ae=ge=>{let be=ge.clientX-T,ze=ge.clientY-N;!j&&(Math.abs(be)>5||Math.abs(ze)>5)&&(j=!0,E(r)),j&&u(r,{x:D+be,y:Z+ze,anchor:null})},he=()=>{document.body.classList.remove("rdd-dragging-active"),window.removeEventListener("pointermove",ae),window.removeEventListener("pointerup",he),window.removeEventListener("pointercancel",de),j&&se()},de=()=>{document.body.classList.remove("rdd-dragging-active"),window.removeEventListener("pointermove",ae),window.removeEventListener("pointerup",he),window.removeEventListener("pointercancel",de),j&&Ie()};document.body.classList.add("rdd-dragging-active"),window.addEventListener("pointermove",ae),window.addEventListener("pointerup",he),window.addEventListener("pointercancel",de)}},i=(r,P,g)=>{g.preventDefault(),g.stopPropagation();let b=s.floating.find(be=>be.id===r);if(!b||b.maximized)return;I(r);let f=g.currentTarget,T=f.closest(".rdd-floating-window"),N={x:T?T.offsetLeft:0,y:T?T.offsetTop:0,w:T?T.offsetWidth:400,h:T?T.offsetHeight:300},D=ct.width,Z=ct.height,se=typeof b.x=="string"?parseFloat(b.x):b.x,j=typeof b.y=="string"?parseFloat(b.y):b.y,ae=typeof b.width=="string"?parseFloat(b.width):b.width,he=typeof b.height=="string"?parseFloat(b.height):b.height,de=P==="se"&&Math.abs(se+ae-D)<4,ge=P==="se"&&Math.abs(j+he-Z)<4;gt({element:f,pointerId:g.pointerId,startClientX:g.clientX,startClientY:g.clientY,captureStart:()=>N,activeClasses:[{el:document.body,classes:["rdd-resizing-active"]}],onMove:(be,ze,Mt)=>{let Lt=Bt(P,be,ze,Mt,{minW:200,minH:150}),{x:zt,y:Nt,w:vn,h:yn}=Lt;de&&(zt=D-vn,zt<0&&(zt=0,vn=D)),ge&&(Nt=Z-yn,Nt<0&&(Nt=0,yn=Z)),u(r,{x:zt,y:Nt,width:vn,height:yn})}})},v=r=>{if(Q.current){let P=r==="left"?-150:150;Q.current.scrollBy({left:P,behavior:"smooth"})}},c=(0,V.useCallback)(()=>{K.current&&clearTimeout(K.current),ue(!0)},[]),l=(0,V.useCallback)(()=>{K.current=setTimeout(()=>ue(!1),400)},[]);(0,V.useEffect)(()=>{n==="autohide"&&s.minimized.length>J.current&&(K.current&&clearTimeout(K.current),ue(!0),K.current=setTimeout(()=>ue(!1),2e3)),J.current=s.minimized.length},[s.minimized.length,n]);let A=cn();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)(()=>(A==="light"?document.documentElement.setAttribute("data-color-scheme","light"):document.documentElement.removeAttribute("data-color-scheme"),()=>{document.documentElement.removeAttribute("data-color-scheme")}),[A]),(0,V.useEffect)(()=>(a?document.documentElement.classList.remove("rdd-no-animations"):document.documentElement.classList.add("rdd-no-animations"),()=>{document.documentElement.classList.remove("rdd-no-animations")}),[a]),(0,h.jsxs)("div",{className:`rdd-workspace${a?"":" rdd-no-animations"}`,"data-workspace-skin":e,"data-color-scheme":A,style:{display:"flex",flexDirection:"column",position:"relative",width:"100%",height:"100%",overflow:"hidden",userSelect:"none"},dir:s.dir,children:[(0,h.jsxs)("div",{ref:ht,className:s.draggedPanelId?"rdd-dragging-active":void 0,style:{flexGrow:1,width:"100%",position:"relative",overflow:"hidden"},children:[s.draggedPanelId!==null&&(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)("div",{"data-edge-trigger":"left",className:"rdd-workspace-edge-trigger rdd-edge-trigger-left",onPointerEnter:()=>ce("left"),onPointerLeave:()=>ce(null)}),(0,h.jsx)("div",{"data-edge-trigger":"right",className:"rdd-workspace-edge-trigger rdd-edge-trigger-right",onPointerEnter:()=>ce("right"),onPointerLeave:()=>ce(null)}),(0,h.jsx)("div",{"data-edge-trigger":"top",className:"rdd-workspace-edge-trigger rdd-edge-trigger-top",onPointerEnter:()=>ce("top"),onPointerLeave:()=>ce(null)}),(0,h.jsx)("div",{"data-edge-trigger":"bottom",className:"rdd-workspace-edge-trigger rdd-edge-trigger-bottom",onPointerEnter:()=>ce("bottom"),onPointerLeave:()=>ce(null)})]}),s.draggedPanelId!==null&&["top-left","top-right","bottom-left","bottom-right"].map(r=>(0,h.jsx)("div",{className:`rdd-corner-zone rdd-corner-zone--${r}${ie===r?" rdd-corner-zone--hovered":""}`,onPointerEnter:()=>{U(r),ce(null)},onPointerLeave:()=>U(null),"aria-hidden":"true"},r)),s.draggedPanelId!==null&&st!==null&&(0,h.jsx)("div",{className:"rdd-workspace-edge-preview",style:(()=>{let r=`${s.edgeSplitRatio*100}%`;switch(st){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,h.jsx)("div",{style:{width:"100%",height:"100%",overflow:"hidden",position:"relative"},children:s.gridRoot?(0,h.jsx)(lo,{node:s.gridRoot,path:[],onTabRightClick:Ue,activeDropZone:je,onHoverDropZone:Ge,onTabDragStart:Ye,hoveredTab:we,onTabHover:_e,defaultPanelIcon:t,onRequestClosePanel:z}):(0,h.jsx)("div",{className:"rdd-empty-workspace-grid",children:"Grid Empty"})}),s.floating.map(r=>{let P=s.panels[r.id];if(!P)return null;let g=r.maximized,b=s.draggedPanelId===r.id,f=s.activePanelId===r.id,N=L.get(P.component)?.defaultOptions;return(0,h.jsxs)("div",{"data-window-id":r.id,dir:s.dir,onPointerDownCapture:()=>{M(r.id),I(r.id)},className:`rdd-floating-window ${g?"rdd-maximized":""} ${f?"rdd-window-focused":""} ${B??""}`,style:(()=>{let se=typeof r.width=="number"?`${r.width}px`:r.width,j=typeof r.height=="number"?`${r.height}px`:r.height;if(g)return{position:"absolute",left:0,top:0,width:"100%",height:"100%",zIndex:r.z,pointerEvents:b?"none":"auto"};if(r.anchor){let ae=s.floating.filter(ze=>ze.anchor===r.anchor&&!ze.maximized),he=ae.findIndex(ze=>ze.id===r.id),de=8;for(let ze=0;ze<he;ze++){let Mt=typeof ae[ze].height=="number"?ae[ze].height:parseFloat(ae[ze].height);de+=Mt+8}let ge=r.anchor.startsWith("top");return{position:"absolute",[r.anchor.endsWith("-right")?"insetInlineEnd":"insetInlineStart"]:8,[ge?"top":"bottom"]:de,width:se,height:j,zIndex:r.z,transition:b?"none":"top 0.2s ease, bottom 0.2s ease",pointerEvents:b?"none":"auto"}}return{position:"absolute",left:typeof r.x=="number"?`${r.x}px`:r.x,top:typeof r.y=="number"?`${r.y}px`:r.y,width:se,height:j,zIndex:r.z,pointerEvents:b?"none":"auto"}})(),children:[(0,h.jsxs)("div",{onDoubleClick:()=>w(r.id),onPointerDown:D=>{N?.canDrag!==!1&&Rt(r.id,D)},className:"rdd-floating-window-titlebar rdd-cursor-move",style:{cursor:g||N?.canDrag===!1?"default":"move"},children:[(0,h.jsxs)("span",{className:"rdd-floating-window-title",children:[(0,h.jsx)("span",{className:"rdd-window-title-icon",children:N?.icon||t||kn}),(0,h.jsxs)("span",{children:[Pe(P.title,F),P.dirty?" *":""]})]}),(0,h.jsxs)("div",{className:"rdd-titlebar-actions",style:{gap:"var(--rdd-header-button-gap, 4px)"},onPointerDown:D=>D.stopPropagation(),children:[N?.renderHeaderActions&&(0,h.jsx)("div",{className:"rdd-window-header-actions",children:N.renderHeaderActions(r.id)}),W(r.id).length>0&&(0,h.jsx)("button",{type:"button",className:"rdd-custom-tab-btn rdd-btn-more-actions",title:"More actions",onClick:D=>{D.stopPropagation();let Z=W(r.id);Z.length!==0&&m({event:D,items:Z})},children:(0,h.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"currentColor",style:{display:"block"},children:[(0,h.jsx)("circle",{cx:"12",cy:"5",r:"2"}),(0,h.jsx)("circle",{cx:"12",cy:"12",r:"2"}),(0,h.jsx)("circle",{cx:"12",cy:"19",r:"2"})]})}),(0,h.jsx)("button",{type:"button",title:g?Pe(d.restoreSize,F):Pe(d.maximize,F),onClick:()=>w(r.id),className:"rdd-custom-tab-btn rdd-btn-maximize-tab",children:(0,h.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,h.jsx)("rect",{x:"4",y:"4",width:"16",height:"16",rx:"1.5"})})}),N?.canMinimize!==!1&&(0,h.jsx)("button",{type:"button",title:Pe(d.minimize,F),onClick:()=>C(r.id),className:"rdd-custom-tab-btn rdd-btn-minimize-tab",children:(0,h.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"3",children:(0,h.jsx)("path",{d:"M5 12h14"})})}),N?.canClose!==!1&&(0,h.jsx)("button",{type:"button",title:Pe(d.close,F),onClick:()=>z(r.id),className:"rdd-custom-tab-btn rdd-btn-close-tab",children:(0,h.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"3",children:(0,h.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]})]}),(0,h.jsx)("div",{className:G??void 0,style:{flexGrow:1,width:"100%",overflow:"hidden",position:"relative",isolation:"isolate"},children:(0,h.jsx)(ao,{panelId:r.id},r.id)}),!g&&(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)("div",{onPointerDown:D=>i(r.id,"n",D),className:"rdd-resize-handle rdd-resize-n"}),(0,h.jsx)("div",{onPointerDown:D=>i(r.id,"ne",D),className:"rdd-resize-handle rdd-resize-ne"}),(0,h.jsx)("div",{onPointerDown:D=>i(r.id,"e",D),className:"rdd-resize-handle rdd-resize-e"}),(0,h.jsx)("div",{onPointerDown:D=>i(r.id,"se",D),className:"rdd-resize-handle rdd-resize-se"}),(0,h.jsx)("div",{onPointerDown:D=>i(r.id,"s",D),className:"rdd-resize-handle rdd-resize-s"}),(0,h.jsx)("div",{onPointerDown:D=>i(r.id,"sw",D),className:"rdd-resize-handle rdd-resize-sw"}),(0,h.jsx)("div",{onPointerDown:D=>i(r.id,"w",D),className:"rdd-resize-handle rdd-resize-w"}),(0,h.jsx)("div",{onPointerDown:D=>i(r.id,"nw",D),className:"rdd-resize-handle rdd-resize-nw"})]})]},r.id)})]}),(n==="always"||s.minimized.length>0)&&(0,h.jsxs)("div",{className:["rdd-taskbar-footer-container",`rdd-taskbar-mode-${n}`,n==="autohide"&&Ce?"rdd-taskbar-expanded":""].filter(Boolean).join(" "),style:{height:"48px",zIndex:100},onPointerEnter:n==="autohide"?c:void 0,onPointerLeave:n==="autohide"?l:void 0,children:[n==="autohide"&&(0,h.jsx)("div",{className:"rdd-taskbar-peek-handle"}),(0,h.jsx)("button",{type:"button",onClick:()=>v("left"),className:"rdd-taskbar-nav-btn",style:{display:s.minimized.length>4?"block":"none"},children:"\u25C0"}),(0,h.jsx)("div",{ref:Q,className:"rdd-taskbar-items-container",style:{scrollSnapType:"x mandatory"},children:s.minimized.map(r=>{let g=L.get(r.component)?.defaultOptions?.icon||t||kn;return(0,h.jsx)("div",{onClick:()=>{me.current!=="touch"&&(X(null),S(r.id))},onContextMenu:b=>We(r.id,b),onPointerDown:b=>{if(me.current=b.pointerType,b.pointerType!=="touch")return;let f=b.currentTarget,T=b.clientX,N=b.clientY,D=b.pointerId,Z=!1,se=()=>{Z=!0,clearTimeout(he),f.removeEventListener("pointermove",ae),f.removeEventListener("pointerup",j),f.removeEventListener("pointercancel",se)},j=()=>{se();let de=f.getBoundingClientRect();q?.id===r.id?(S(r.id),X(null)):X({id:r.id,rect:de,title:r.title,component:r.component,fromTouch:!0})},ae=de=>{Math.hypot(de.clientX-T,de.clientY-N)>dt&&se()},he=setTimeout(()=>{if(Z)return;f.removeEventListener("pointermove",ae),f.removeEventListener("pointerup",j),f.removeEventListener("pointercancel",se);try{f.setPointerCapture(D)}catch{return}navigator.vibrate&&navigator.vibrate(10);let de=ge=>{f.removeEventListener("pointerup",de),f.removeEventListener("pointercancel",de),We(r.id,ge)};f.addEventListener("pointerup",de),f.addEventListener("pointercancel",de)},Le);f.addEventListener("pointermove",ae),f.addEventListener("pointerup",j),f.addEventListener("pointercancel",se)},onPointerEnter:b=>{if(b.pointerType==="touch"||$e)return;le.current&&clearTimeout(le.current);let f=b.currentTarget.getBoundingClientRect();b.clientX>=f.left&&b.clientX<=f.right&&b.clientY>=f.top&&b.clientY<=f.bottom&&X({id:r.id,rect:f,title:r.title,component:r.component})},onPointerLeave:b=>{b.pointerType!=="touch"&&(le.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,h.jsx)("span",{className:"rdd-taskbar-item-icon",children:g})},r.id)})}),q&&(0,Tn.createPortal)((0,h.jsxs)("div",{className:"rdd-taskbar-item-tooltip",dir:s.dir,style:{position:"fixed",left:`${q.rect.left+q.rect.width/2}px`,top:`${q.rect.top-8}px`,transform:"translateX(-50%) translateY(-100%)",opacity:1,pointerEvents:"auto",zIndex:999999},onPointerEnter:()=>{le.current&&clearTimeout(le.current)},onPointerLeave:r=>{r.pointerType!=="touch"&&X(null)},onClick:()=>{S(q.id),X(null)},onContextMenu:r=>We(q.id,r),onPointerDown:r=>{if(r.pointerType!=="touch")return;let P=q.id,g=r.currentTarget,b=r.clientX,f=r.clientY,T=r.pointerId,N=!1,D=()=>{N=!0,clearTimeout(se),g.removeEventListener("pointermove",Z),g.removeEventListener("pointerup",D),g.removeEventListener("pointercancel",D)},Z=j=>{Math.hypot(j.clientX-b,j.clientY-f)>dt&&D()},se=setTimeout(()=>{if(N)return;g.removeEventListener("pointermove",Z),g.removeEventListener("pointerup",D),g.removeEventListener("pointercancel",D);try{g.setPointerCapture(T)}catch{return}navigator.vibrate&&navigator.vibrate(10);let j=ae=>{g.removeEventListener("pointerup",j),g.removeEventListener("pointercancel",j),We(P,ae)};g.addEventListener("pointerup",j),g.addEventListener("pointercancel",j)},Le);g.addEventListener("pointermove",Z),g.addEventListener("pointerup",D),g.addEventListener("pointercancel",D)},children:[(0,h.jsxs)("div",{className:"rdd-tooltip-header-row",children:[(0,h.jsxs)("span",{className:"rdd-tooltip-title-text rdd-text-truncate",style:{maxWidth:"140px"},children:[Pe(q.title,F),s.panels[q.id]?.dirty?" *":""]}),(0,h.jsx)("span",{onClick:r=>{r.stopPropagation(),z(q.id),X(null)},title:Pe(d.closePanel,F),className:"rdd-tooltip-close-x",children:(0,h.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,h.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),(0,h.jsx)(mr,{panelId:q.id})]}),document.body),(0,h.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 P=s.panels[r];if(!P)return null;let g=so(r);return(0,Tn.createPortal)((0,h.jsx)(hr,{panelId:r,children:(0,h.jsx)("div",{style:{width:"100%",height:"100%"},dir:s.dir,children:fr(r,P,L)})}),g,r)}),te===null&&(0,h.jsx)(o.Component,{ref:oe,theme:"dark",formatMessageProvider:F,onShow:()=>ee(!0),onHide:()=>ee(!1)}),s.draggedPanelId!==null&&!s.floating.some(r=>r.id===s.draggedPanelId)&&(0,h.jsxs)("div",{className:"rdd-drag-ghost-tab",style:{left:lt.x+12,top:lt.y+12,zIndex:1e5},children:["\u{1F4C4} ",Pe(s.panels[s.draggedPanelId]?.title,F)||"Tab"]})]})},co=vr;var pn=class{registry;initialState;config;_actions=null;_initialized=!1;_pendingCalls=[];_pendingOpenPanelIds=new Set;_pendingSubscriptions=[];_disconnectedWarnTimer=null;constructor(t={}){if(this.registry=new Tt,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 a=this._pendingSubscriptions.indexOf(o);a!==-1&&this._pendingSubscriptions.splice(a,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(a=>a.dockPanelToGroup(t,n,o))}movePanelOrder(t,n,o){this._dispatch(a=>a.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(a=>a.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 bo=require("react");var ft=require("react"),po=require("react/jsx-runtime"),uo=(0,ft.createContext)(null),Zt=({children:e})=>{let[t,n]=(0,ft.useState)({}),[o,a]=(0,ft.useState)({}),s=(0,ft.useMemo)(()=>({getActiveInGroup:L=>t[L]??null,setActiveInGroup:(L,S)=>n(C=>({...C,[L]:S})),isModifierActive:L=>o[L]??!1,setModifierActive:(L,S)=>a(C=>({...C,[L]:S})),toggleModifier:L=>a(S=>({...S,[L]:!S[L]}))}),[t,o]);return(0,po.jsx)(uo.Provider,{value:s,children:e})};function Ut(){let e=(0,ft.useContext)(uo);if(!e)throw new Error("useToolbar must be used within DockableDesktopProvider");return e}var Ve=require("react");var ho=require("react/jsx-runtime");function yr(){let e=new Map,t=new Set,n=()=>t.forEach(o=>o());return{publish(o,a){return e.set(o,a),n(),()=>{e.get(o)===a&&(e.delete(o),n())}},get(o){return e.get(o)??null},subscribe(o){return t.add(o),()=>t.delete(o)}}}var En=(0,Ve.createContext)(null),gn=({children:e})=>{let t=(0,Ve.useMemo)(()=>yr(),[]);return(0,ho.jsx)(En.Provider,{value:t,children:e})};function go(e){let t=Vt(),n=(0,Ve.useContext)(En),o=(0,Ve.useRef)(null);if(!n)throw new Error("usePanelContribution must be used within PanelContributionProvider");(0,Ve.useLayoutEffect)(()=>{if(n)return o.current?.(),o.current=n.publish(t,e),()=>{o.current?.(),o.current=null}},[n,t,e])}function fn(){let e=Je(a=>a.activePanelId),t=(0,Ve.useContext)(En);if(!t)throw new Error("useActivePanelContribution must be used within PanelContributionProvider");let n=(0,Ve.useCallback)(a=>t?t.subscribe(a):()=>{},[t]),o=()=>t&&e?t.get(e):null;return(0,Ve.useSyncExternalStore)(n,o,o)}function Ln(e,t=null){return{id:e.id,label:e.label,icon:e.icon??t,renderContent:()=>e.content}}function fo(e){let t=fn();return t?.toolbarItems?.length?[...e,{type:"separator"},...t.toolbarItems]:e}function mo(e,t=null){let n=fn();return n?.sidebarSections?.length?[...e,...n.sidebarSections.map(o=>Ln(o,t))]:e}var Gt=require("react/jsx-runtime"),vo=({contextMenuAdapter:e=It,...t})=>{let n=(0,bo.useContext)(Ht),o=(0,Gt.jsx)(Zt,{children:(0,Gt.jsx)(nn,{...t,children:(0,Gt.jsx)(gn,{children:(0,Gt.jsx)(ln,{children:t.children})})})});return n!==null?o:(0,Gt.jsx)(sn,{adapter:e,formatMessageProvider:t.formatMessage,children:o})};var Ke=require("react");var Ae=require("react/jsx-runtime"),Pr=({modal:e,index:t,isTopmost:n})=>{let{close:o,openModal:a,updateInstance:s,setDirty:L}=yt(),S=et(),C=rt(),{dir:y}=Je(),{modalClass:w,modalBodyClass:u}=ut(),I=(0,Ke.useRef)(null),{id:k,Component:E,props:H,options:p,dirty:R,dirtyOptions:M}=e,W=p,[m,x]=(0,Ke.useState)(W.icon||null),_=(0,Ke.useRef)(W);_.current=W;let F=Pe(W.title,S),d=(0,Ke.useCallback)(async X=>{if(X?.force){o(k);return}if(I.current){if(!await I.current())return;o(k);return}if(R){a(Pt,{title:M?.title||C.unsavedChangesTitle,message:M?.message||{id:C.unsavedChangesMessage.id,defaultMessage:C.unsavedChangesMessage.defaultMessage,values:{title:F}},alert:M?.alert,alertType:M?.alertType||"danger",useYesNoTitles:!0,onOK:()=>o(k)},{size:"small"});return}o(k)},[o,a,k,R,M,F,C]),z=(0,Ke.useCallback)((X,le)=>L(k,X,le),[L,k]),B=(0,Ke.useCallback)(X=>s(k,{options:{..._.current,title:X}}),[s,k]),G=(0,Ke.useCallback)(X=>x(X),[]),te=(0,Ke.useCallback)(X=>(I.current=X,()=>{I.current=null}),[]),oe=(0,Ke.useMemo)(()=>({requestClose:d,setDirty:z,setTitle:B,setIcon:G,onCloseRequested:te,containerType:"modal",instanceId:k}),[d,z,B,G,te,k]),Q=R?`${F} *`:F,Ce=W.size?`rdd-modal-size-${W.size}`:"rdd-modal-size-auto",ue=W.closable!==!1,K=W.bodyPadding,J=K!=null?typeof K=="number"?`${K}px`:K:void 0;(0,Ke.useEffect)(()=>{if(!n||!ue)return;let X=le=>{le.key==="Escape"&&(le.stopPropagation(),d())};return document.addEventListener("keydown",X),()=>document.removeEventListener("keydown",X)},[d,ue,n]);let q=`calc(var(--rdd-z-base, 1000) + 9000 + ${t*10})`;return(0,Ae.jsxs)("div",{className:"rdd-modal-overlay",style:{zIndex:q},dir:y,children:[(0,Ae.jsx)("div",{className:"rdd-modal-curtain",onClick:ue?()=>d():void 0}),(0,Ae.jsxs)("div",{className:`rdd-modal-window ${Ce} ${w??""}`,children:[(0,Ae.jsxs)("div",{className:"rdd-modal-header",children:[m&&(0,Ae.jsx)("div",{className:"rdd-modal-icon",children:m}),(0,Ae.jsx)("h4",{className:"rdd-modal-title",children:Q}),ue&&(0,Ae.jsx)("button",{className:"rdd-modal-close-button",onClick:()=>d(),title:S(C.closeTooltip),type:"button",children:(0,Ae.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,Ae.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),(0,Ae.jsx)("div",{className:`rdd-modal-body ${u??""}`,style:J!=null?{padding:J}:void 0,children:(0,Ae.jsx)(bt,{value:oe,children:(0,Ae.jsx)(E,{...H,panelId:k})})})]})]})},xr=()=>{let{modals:e}=pt();return e.length===0?null:(0,Ae.jsx)(Ae.Fragment,{children:e.map((t,n)=>(0,Ae.jsx)(Pr,{modal:t,index:n,isTopmost:n===e.length-1},t.id))})},yo=xr;var Oe=require("react");var mn=require("react");function Po(e){let[t,n]=(0,mn.useState)(null);return(0,mn.useLayoutEffect)(()=>{let o=e.current?.parentElement;if(!o)return;let a=()=>{let L=o.getBoundingClientRect();n({top:L.top,left:L.left,right:window.innerWidth-L.right,height:L.height})};a();let s=new ResizeObserver(a);return s.observe(o),window.addEventListener("resize",a),()=>{s.disconnect(),window.removeEventListener("resize",a)}},[e]),t}var Te=require("react/jsx-runtime"),hn=({panel:e,position:t,defaultWidth:n,containerRect:o})=>{let{close:a,openModal:s,updateInstance:L,setDirty:S,registerCloseHandler:C,unregisterCloseHandler:y}=yt(),{modals:w}=pt(),u=et(),I=rt(),{dir:k}=Je(),{sidePanelClass:E,sidePanelBodyClass:H}=ut(),p=(0,Oe.useRef)(null),{id:R,Component:M,props:W,options:m,dirty:x,dirtyOptions:_}=e,F=m,[d,z]=(0,Oe.useState)(F.icon||null),B=(0,Oe.useRef)(F);B.current=F;let G=Pe(F.title,u),te=(0,Oe.useCallback)(async ee=>{if(ee?.force){a(R);return}if(p.current){if(!await p.current())return;a(R);return}if(x){s(Pt,{title:_?.title||I.unsavedChangesTitle,message:_?.message||{id:I.unsavedChangesMessage.id,defaultMessage:I.unsavedChangesMessage.defaultMessage,values:{title:G}},alert:_?.alert,alertType:_?.alertType||"danger",useYesNoTitles:!0,onOK:()=>a(R)},{size:"small"});return}a(R)},[a,s,R,x,_,G,I]),oe=(0,Oe.useCallback)(async()=>p.current?await p.current():!x,[x]);(0,Oe.useEffect)(()=>(C(R,oe),()=>y(R)),[R,oe,C,y]);let Q=(0,Oe.useCallback)((ee,$e)=>S(R,ee,$e),[S,R]),Ce=(0,Oe.useCallback)(ee=>L(R,{options:{...B.current,title:ee}}),[L,R]),ue=(0,Oe.useCallback)(ee=>z(ee),[]),K=(0,Oe.useCallback)(ee=>(p.current=ee,()=>{p.current=null}),[]),J=(0,Oe.useMemo)(()=>({requestClose:te,setDirty:Q,setTitle:Ce,setIcon:ue,onCloseRequested:K,containerType:t==="left"?"left-panel":"right-panel",instanceId:R}),[te,Q,Ce,ue,K,t,R]),q=x?`${G} *`:G;(0,Oe.useEffect)(()=>{let ee=$e=>{$e.key==="Escape"&&w.length===0&&te()};return document.addEventListener("keydown",ee),()=>document.removeEventListener("keydown",ee)},[te,w.length]);let X=F.width||n||400,le=typeof X=="number"?`${X}px`:X,me=F.bodyPadding,Be=me!=null?typeof me=="number"?`${me}px`:me:void 0;return(0,Te.jsx)("div",{className:`rdd-side-panel rdd-side-panel-${t} rdd-side-panel-visible ${E??""}`,style:{width:le,...o?{top:o.top,height:o.height,bottom:"auto",...t==="right"?{right:o.right}:{left:o.left}}:{}},dir:k,children:(0,Te.jsxs)("div",{className:"rdd-side-panel-window",children:[(0,Te.jsxs)("div",{className:"rdd-side-panel-header",children:[d&&(0,Te.jsx)("div",{className:"rdd-side-panel-icon",children:d}),(0,Te.jsx)("h4",{className:"rdd-side-panel-title",children:q}),(0,Te.jsx)("button",{className:"rdd-side-panel-close-button",onClick:()=>te(),title:u(I.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-side-panel-body ${H??""}`,style:Be!=null?{padding:Be}:void 0,children:(0,Te.jsx)(bt,{value:J,children:(0,Te.jsx)(M,{...W,panelId:R})})})]})})},zn=({children:e})=>{let t=(0,Oe.useRef)(null),n=Po(t);return(0,Te.jsx)("div",{ref:t,style:{display:"contents"},children:e(n)})},Cr=({defaultWidth:e})=>{let{leftPanel:t,rightPanel:n}=pt();return(0,Te.jsx)(zn,{children:o=>(0,Te.jsxs)(Te.Fragment,{children:[t&&(0,Te.jsx)(hn,{panel:t,position:"left",defaultWidth:e,containerRect:o},t.id),n&&(0,Te.jsx)(hn,{panel:n,position:"right",defaultWidth:e,containerRect:o},n.id)]})})},xo=({defaultWidth:e})=>{let{leftPanel:t}=pt();return(0,Te.jsx)(zn,{children:n=>t?(0,Te.jsx)(hn,{panel:t,position:"left",defaultWidth:e,containerRect:n},t.id):null})},Co=({defaultWidth:e})=>{let{rightPanel:t}=pt();return(0,Te.jsx)(zn,{children:n=>t?(0,Te.jsx)(hn,{panel:t,position:"right",defaultWidth:e,containerRect:n},t.id):null})},wo=Cr;var re=Qt(require("react"),1);var ve=require("react/jsx-runtime");function Nn(e){return"renderContent"in e}function wr(e){return"render"in e}function Ro(e){return e==null?[]:Array.isArray(e)?e:[e]}var Dn=(0,re.createContext)(null),To=(0,re.createContext)(null);function Rr({tabId:e,onClose:t,onOpen:n,setActiveTabId:o,children:a}){let s=(0,re.useMemo)(()=>({tabId:e,onClose:t,onOpen:n,openTab:L=>o(L)}),[e,t,n,o]);return(0,ve.jsx)(To.Provider,{value:s,children:a})}function Mo(e,t,n,o){if(wr(e))return(0,ve.jsx)(re.default.Fragment,{children:e.render()},e.id??t);if(Nn(e)){if(e.hidden)return null;let a=n===e.id;return(0,ve.jsx)("button",{type:"button",onClick:()=>o(e.id),className:`rdd-sidebar-tab-btn${a?" rdd-active":""}`,title:e.label,"aria-pressed":a,children:e.icon},e.id)}return(0,ve.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 So=(0,re.memo)(function({tabs:t,headerEntries:n,footerEntries:o,activeTabId:a,isVisible:s,position:L,onTabClick:S}){return(0,ve.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,ve.jsxs)("div",{className:`rdd-sidebar-tabs-strip rdd-${L}${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,ve.jsx)("div",{className:"rdd-sidebar-header-area",children:n.map((C,y)=>Mo(C,y,a,S))}),(0,ve.jsx)("div",{className:"rdd-sidebar-tabs-list",children:t.map(C=>{if(C.hidden)return null;let y=a===C.id;return(0,ve.jsx)("button",{type:"button",onClick:()=>S(C.id),className:`rdd-sidebar-tab-btn${y?" rdd-active":""}`,title:C.label,"aria-pressed":y,children:C.icon},C.id)})}),o.length>0&&(0,ve.jsx)("div",{className:"rdd-sidebar-footer-area",children:o.map((C,y)=>Mo(C,y,a,S))})]})})});function Mr({position:e,currentWidth:t,minWidth:n,maxWidth:o,onWidthChange:a,onResizeStart:s,onResizeEnd:L}){return(0,ve.jsx)("div",{className:"rdd-resizer-bar",style:{cursor:"col-resize",width:"1px",height:"100%",flexShrink:0,zIndex:20},onPointerDown:C=>{C.preventDefault();let y=C.currentTarget,w=[{el:y,classes:["rdd-active"]},{el:document.body,classes:["rdd-resizing-active","rdd-resizing-col-active"]}];s(),gt({element:y,pointerId:C.pointerId,startClientX:C.clientX,startClientY:C.clientY,captureStart:()=>t,activeClasses:w,onMove:(u,I,k)=>{let E=e==="right"?k-u:k+u;a(Math.max(n,Math.min(o,E)))},onEnd:()=>L()})}})}var Wn=(0,re.forwardRef)(function({position:t="right",tabs:n,headerAction:o,footerAction:a,defaultWidth:s,minWidth:L=150,maxWidth:S=600,onWidthChange:C,activeTabId:y,onActiveTabChange:w,visible:u,onVisibilityChange:I,stripVisible:k,onStripVisibilityChange:E,showCloseButton:H=!1,hideDefaultHeader:p=!1,renderHeader:R,isSecondary:M=!1,children:W},m){let x=y!==void 0,[_,F]=(0,re.useState)(()=>s??280),d=(0,re.useCallback)(ie=>{F(ie),C?.(ie)},[C]),[z,B]=(0,re.useState)(!1),[G,te]=(0,re.useState)(null),oe=x?y:G,Q=(0,re.useMemo)(()=>Ro(o),[o]),Ce=(0,re.useMemo)(()=>Ro(a),[a]),ue=(0,re.useMemo)(()=>Q.filter(Nn),[Q]),K=(0,re.useMemo)(()=>Ce.filter(Nn),[Ce]),J=(0,re.useMemo)(()=>[...ue,...n,...K],[ue,n,K]),[q,X]=(0,re.useState)(()=>new Set),le=(0,re.useMemo)(()=>{let ie=new Set(q);oe&&ie.add(oe);for(let Ne of J)Ne.eagerMount&&ie.add(Ne.id);return ie},[q,oe,J]),me=(0,re.useRef)(oe??null);(0,re.useEffect)(()=>{me.current=oe??null},[oe]);let Be=(0,re.useRef)(_);(0,re.useEffect)(()=>{Be.current=_},[_]);let ee=(0,re.useCallback)(ie=>{X(ie!==null?Ne=>{if(Ne.has(ie))return Ne;let Y=new Set(Ne);return Y.add(ie),Y}:Ne=>{let Y=!1,U=new Set(Ne);for(let fe of Ne){let we=J.find(Re=>Re.id===fe);we&&!we.eagerMount&&!we.preserveState&&(U.delete(fe),Y=!0)}return Y?U:Ne}),x||te(ie),w?.(ie)},[x,w,J]);(0,re.useEffect)(()=>{oe!=null&&!J.some(ie=>ie.id===oe)&&ee(null)},[oe,J,ee]),(0,re.useImperativeHandle)(m,()=>({openTab:ie=>ee(ie),closeDrawer:()=>ee(null),getActiveTab:()=>me.current,show:()=>I?.(!0),hide:()=>I?.(!1),toggle:()=>I?.(u===!1),showStrip:()=>E?.(!0),hideStrip:()=>E?.(!1),setWidth:ie=>d(Math.max(L,Math.min(S,ie))),getWidth:()=>Be.current}),[ee,u,I,E,d,L,S]);let $e=(0,re.useCallback)(ie=>{ee(oe===ie?null:ie)},[oe,ee]),je=(0,re.useCallback)(()=>ee(null),[ee]),Xe=p||R!=null,Ze=(0,re.useRef)(!1);(0,re.useEffect)(()=>{process.env.NODE_ENV==="development"&&(!H||!Xe||Ze.current||(Ze.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`.')))},[H,Xe]);let lt=(0,re.useMemo)(()=>({openTab:ie=>ee(ie),closeDrawer:()=>ee(null),getActiveTab:()=>me.current,position:t,isSecondary:M}),[ee,t,M]),it=u!==!1,st=it&&k!==!1,nt=it&&oe!=null,ot=(0,ve.jsx)("div",{className:`rdd-sidebar-content-drawer rdd-${t}`,style:{flexBasis:nt?`${_}px`:"0px",flexShrink:1,flexGrow:0,minWidth:nt?`${L}px`:"0px",maxWidth:nt?`${S}px`:"0px",overflow:"hidden",transition:z?"none":"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:J.map(ie=>{if(!le.has(ie.id))return null;let Y=oe===ie.id,U=()=>ee(ie.id);return(0,ve.jsxs)("div",{style:{display:Y?"flex":"none",flexDirection:"column",height:"100%",width:"100%"},children:[Xe?R?.(ie,je,U):(0,ve.jsxs)("div",{className:"rdd-sidebar-drawer-header",children:[(0,ve.jsx)("span",{className:"rdd-sidebar-header-title",children:ie.label}),H&&(0,ve.jsx)("button",{type:"button",className:"rdd-sidebar-drawer-close-button",onClick:je,title:"Close","aria-label":"Close",children:(0,ve.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,ve.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),(0,ve.jsx)("div",{className:"rdd-sidebar-drawer-body",children:(0,ve.jsx)(Rr,{tabId:ie.id,onClose:je,onOpen:U,setActiveTabId:ee,children:ie.renderContent(ie.id,je,U)})})]},ie.id)})}),ce=nt?(0,ve.jsx)(Mr,{position:t,currentWidth:_,minWidth:L,maxWidth:S,onWidthChange:d,onResizeStart:()=>B(!0),onResizeEnd:()=>B(!1)}):null;return(0,ve.jsx)(Dn.Provider,{value:lt,children:(0,ve.jsxs)("div",{style:{display:"flex",flexDirection:"row",width:"100%",height:"100%",overflow:"hidden"},children:[t==="left"&&(0,ve.jsx)(So,{tabs:n,headerEntries:Q,footerEntries:Ce,activeTabId:oe,isVisible:st,position:t,onTabClick:$e}),t==="left"&&ot,t==="left"&&ce,(0,ve.jsx)("div",{style:{flex:"1 1 0%",minWidth:0,overflow:"hidden"},children:W}),t==="right"&&ce,t==="right"&&ot,t==="right"&&(0,ve.jsx)(So,{tabs:n,headerEntries:Q,footerEntries:Ce,activeTabId:oe,isVisible:st,position:t,onTabClick:$e})]})})}),ko=(0,re.forwardRef)(function(t,n){let o=(0,re.useContext)(Dn);if(!o)throw new Error("SecondarySidebar must be rendered inside a primary Sidebar's children");if(o.isSecondary)throw new Error("SecondarySidebar cannot be nested inside another SecondarySidebar");let a=o.position==="left"?"right":"left";return(0,ve.jsx)(Wn,{ref:n,...t,position:a,isSecondary:!0})});function Io(){let e=(0,re.useContext)(Dn);if(!e)throw new Error("useSidebar must be used within Sidebar");return e}function Eo(){let e=(0,re.useContext)(To);if(!e)throw new Error("useSidebarTab must be used within a Sidebar tab renderContent tree");return e}var qe=require("react"),Lo=require("react-dom");var Fe=require("react/jsx-runtime");function Sr(e,t,n=!1,o=8){switch(t){case"left":return n?{right:window.innerWidth-e.left+o,top:e.top}:{left:e.right+o,top:e.top};case"right":return n?{left:e.right+o,top:e.top}:{right:window.innerWidth-e.left+o,top:e.top};case"top":return n?{top:e.bottom+o,right:window.innerWidth-e.right}:{top:e.bottom+o,left:e.left};case"bottom":return n?{bottom:window.innerHeight-e.top+o,right:window.innerWidth-e.right}:{bottom:window.innerHeight-e.top+o,left:e.left}}}function Tr({item:e,position:t,toolbar:n}){let[o,a]=(0,qe.useState)(!1),[s,L]=(0,qe.useState)(null),S=(0,qe.useRef)(null),C=(0,qe.useRef)(null),y=e.activeItemId!==void 0,w=y?e.activeItemId:n.getActiveInGroup(e.id),u=e.items.find(p=>!("type"in p)&&p.id===w),I=w!==null,k=u?.icon??e.defaultIcon,E=u?.label??e.label,H=()=>{e.disabled||(!o&&S.current&&L(S.current.getBoundingClientRect()),a(p=>!p))};return(0,qe.useLayoutEffect)(()=>{if(!o||!C.current)return;let p=C.current,R=p.getBoundingClientRect(),M=8;R.right>window.innerWidth-M&&(p.style.left=`${Math.max(M,window.innerWidth-R.width-M)}px`,p.style.right="auto"),R.left<M&&(p.style.left=`${M}px`,p.style.right="auto"),R.bottom>window.innerHeight-M&&(p.style.top=`${Math.max(M,window.innerHeight-R.height-M)}px`,p.style.bottom="auto"),R.top<M&&(p.style.top=`${M}px`,p.style.bottom="auto")},[o]),(0,qe.useEffect)(()=>{if(!o)return;let p=R=>{let M=R.target;S.current?.contains(M)||C.current?.contains(M)||a(!1)};return document.addEventListener("mousedown",p),()=>document.removeEventListener("mousedown",p)},[o]),(0,qe.useEffect)(()=>{if(!o)return;let p=R=>{R.key==="Escape"&&a(!1)};return document.addEventListener("keydown",p),()=>document.removeEventListener("keydown",p)},[o]),(0,Fe.jsxs)(Fe.Fragment,{children:[(0,Fe.jsx)("button",{ref:S,type:"button",className:`rdd-toolbar-btn rdd-toolbar-btn-group${I?" rdd-active":""}`,title:E,"aria-label":E,"aria-expanded":o,"aria-haspopup":"menu",disabled:e.disabled,onClick:H,children:k}),o&&s&&(0,Lo.createPortal)((0,Fe.jsx)("div",{ref:C,className:`rdd-toolbar-group-flyout rdd-${t}`,style:Sr(s,t,document.documentElement.dir==="rtl"),role:"menu",children:e.items.map((p,R)=>{if("type"in p)return(0,Fe.jsx)("div",{className:"rdd-toolbar-group-flyout-sep",role:"separator"},`sep-${R}`);let M=w===p.id;return(0,Fe.jsxs)("button",{type:"button",className:`rdd-toolbar-group-flyout-item${M?" rdd-active":""}`,disabled:p.disabled,role:"menuitem","aria-pressed":M,onClick:()=>{y?e.onActiveItemChange?.(p.id):n.setActiveInGroup(e.id,p.id),p.onActivate?.(p.id),a(!1)},children:[(0,Fe.jsx)("span",{className:"rdd-toolbar-group-flyout-icon",children:p.icon}),(0,Fe.jsx)("span",{className:"rdd-toolbar-group-flyout-label",children:p.label}),p.shortcut&&(0,Fe.jsx)("span",{className:"rdd-toolbar-group-flyout-shortcut",children:p.shortcut})]},p.id)})}),document.body)]})}function kr(e,t,n,o){switch(e.type){case"separator":return(0,Fe.jsx)("div",{className:"rdd-toolbar-separator",role:"separator"},`sep-${t}`);case"action":return(0,Fe.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 a=n.getActiveInGroup(e.group)===e.id;return(0,Fe.jsx)("button",{type:"button",className:`rdd-toolbar-btn rdd-toolbar-btn-radio${a?" rdd-active":""}`,title:e.label,"aria-label":e.label,"aria-pressed":a,disabled:e.disabled,onClick:()=>{n.setActiveInGroup(e.group,e.id),e.onActivate?.(e.id)},children:e.icon},e.id)}case"toggle":{let a=e.active!==void 0,s=a?e.active:n.isModifierActive(e.id);return(0,Fe.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:()=>{a||n.toggleModifier(e.id),e.onToggle?.(!s)},children:e.icon},e.id)}case"group":return(0,Fe.jsx)(Tr,{item:e,position:o,toolbar:n},e.id)}}var zo=(0,qe.forwardRef)(function({position:t="left",items:n,visible:o,onVisibilityChange:a,className:s,style:L},S){let C=Ut(),y=t==="left"||t==="right";(0,qe.useImperativeHandle)(S,()=>({show:()=>a?.(!0),hide:()=>a?.(!1),toggle:()=>a?.(o===!1)}),[o,a]);let w=o!==!1?{}:y?{width:"0px"}:{height:"0px"};return(0,Fe.jsx)("div",{className:`rdd-toolbar-strip rdd-${t}${s?` ${s}`:""}`,role:"toolbar","aria-orientation":y?"vertical":"horizontal",style:{...w,...L},children:n.map((u,I)=>kr(u,I,C,t))})});var ke=require("react"),On=require("react-dom"),ye=require("react/jsx-runtime"),Fn=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))}},Qe=new Fn,No=Object.assign((e,t)=>Qe.show(e,t),{info:(e,t)=>Qe.show(e,{...t,type:"info"}),success:(e,t)=>Qe.show(e,{...t,type:"success"}),warning:(e,t)=>Qe.show(e,{...t,type:"warning"}),error:(e,t)=>Qe.show(e,{...t,type:"error"}),dismiss:e=>Qe.dismiss(e),promise:(e,t,n)=>{let o=Qe.show(t.pending,{...n,type:"info",duration:0});return e.then(a=>{let s=typeof t.success=="function"?t.success(a):t.success;Qe.update(o,s,{type:"success",duration:n?.duration??5e3})},a=>{let s=typeof t.error=="function"?t.error(a):t.error;Qe.update(o,s,{type:"error",duration:n?.duration??5e3})}),e}}),Ir=()=>(0,ye.jsxs)("svg",{className:"rdd-toast__icon",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[(0,ye.jsx)("circle",{cx:"8",cy:"8",r:"7",stroke:"currentColor",strokeWidth:"1.5"}),(0,ye.jsx)("path",{d:"M8 5v.01M8 7.5v3.5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]}),Er=()=>(0,ye.jsxs)("svg",{className:"rdd-toast__icon",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[(0,ye.jsx)("circle",{cx:"8",cy:"8",r:"7",stroke:"currentColor",strokeWidth:"1.5"}),(0,ye.jsx)("path",{d:"M5 8l2 2 4-4",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})]}),Lr=()=>(0,ye.jsxs)("svg",{className:"rdd-toast__icon",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[(0,ye.jsx)("path",{d:"M8 2.5L14 13.5H2L8 2.5z",stroke:"currentColor",strokeWidth:"1.5",strokeLinejoin:"round"}),(0,ye.jsx)("path",{d:"M8 7v2.5M8 11.5v.01",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]}),zr=()=>(0,ye.jsxs)("svg",{className:"rdd-toast__icon",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[(0,ye.jsx)("circle",{cx:"8",cy:"8",r:"7",stroke:"currentColor",strokeWidth:"1.5"}),(0,ye.jsx)("path",{d:"M5.5 5.5l5 5M10.5 5.5l-5 5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]}),Nr=()=>(0,ye.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:(0,ye.jsx)("path",{d:"M4 4l8 8M12 4l-8 8",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})}),Dr={info:(0,ye.jsx)(Ir,{}),success:(0,ye.jsx)(Er,{}),warning:(0,ye.jsx)(Lr,{}),error:(0,ye.jsx)(zr,{})};function Wr({id:e,message:t,options:n,exiting:o,isLeft:a,showProgress:s,pauseOnHover:L,animation:S,onDismiss:C,onExited:y}){let w=(0,ke.useRef)(null),u=(0,ke.useRef)(null),I=(0,ke.useRef)(null),k=(0,ke.useRef)(n.duration),E=(0,ke.useRef)(0),[H,p]=(0,ke.useState)(!1),R=S==="none"?"rdd-toast--visible":S==="fade"?"rdd-toast--fade-entering":a?"rdd-toast--entering-left":"rdd-toast--entering",[M,W]=(0,ke.useState)(R);(0,ke.useLayoutEffect)(()=>{let z=w.current,B=u.current;if(!z||!B||o)return;let G=()=>{z.style.maxHeight=`${z.scrollHeight}px`};G();let te=new ResizeObserver(G);return te.observe(B),()=>te.disconnect()},[o]),(0,ke.useEffect)(()=>{if(S==="none")return;let z=requestAnimationFrame(()=>W("rdd-toast--visible"));return()=>cancelAnimationFrame(z)},[]);let m=(0,ke.useCallback)(z=>{z<=0||(E.current=Date.now(),I.current=setTimeout(()=>C(e),z))},[e,C]);(0,ke.useEffect)(()=>(I.current&&clearTimeout(I.current),k.current=n.duration,m(n.duration),()=>{I.current&&clearTimeout(I.current)}),[n.duration,m]),(0,ke.useEffect)(()=>{if(!o)return;let z=w.current;if(!z||S==="none"){y(e);return}let B=te=>{te.propertyName==="max-height"&&y(e)};z.addEventListener("transitionend",B);let G=setTimeout(()=>y(e),520);return()=>{z.removeEventListener("transitionend",B),clearTimeout(G)}},[o,e,y,S]);let x=()=>{!L||n.duration===0||(I.current&&(clearTimeout(I.current),I.current=null,k.current=Math.max(0,k.current-(Date.now()-E.current))),p(!0))},_=()=>{!L||n.duration===0||(p(!1),m(k.current))},F=["rdd-toast",n.type&&`rdd-toast--${n.type}`,M,o&&"rdd-toast--exiting",H&&"rdd-toast--paused"].filter(Boolean).join(" "),d=n.icon!==void 0?n.icon:n.type?Dr[n.type]:null;return(0,ye.jsxs)("div",{ref:w,role:"status","aria-live":"polite",className:F,onMouseEnter:x,onMouseLeave:_,children:[d&&d,(0,ye.jsx)("div",{ref:u,className:"rdd-toast__body",children:n.content!==void 0?n.content:t}),n.closable&&(0,ye.jsx)("button",{type:"button",className:"rdd-toast__close",onClick:()=>C(e),"aria-label":"Close notification",children:(0,ye.jsx)(Nr,{})}),s&&n.duration>0&&(0,ye.jsx)("div",{className:"rdd-toast__progress",style:{animationDuration:`${n.duration}ms`}})]})}function An(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 Do({position:e="top-right",maxVisible:t=3,defaultDuration:n=5e3,defaultClosable:o=!0,pauseOnHover:a=!0,animation:s="slide",newestOnTop:L=!1,progressBar:S=!1,width:C=320,adapter:y}){let[w,u]=(0,ke.useState)([]),I=(0,ke.useRef)([]),k=(0,ke.useRef)(w);k.current=w;let E=(0,ke.useCallback)(W=>{u(m=>m.map(x=>x.id===W?{...x,exiting:!0}:x)),k.current.find(m=>m.id===W)?.options.onClose?.()},[]),H=(0,ke.useCallback)(W=>{let m=I.current.shift()??null;u(x=>{let _=x.filter(d=>d.id!==W);if(!m)return _;let F=An(m.rawOpts,n,o);return[..._,{id:m.id,message:m.message,options:F,exiting:!1}]})},[n,o]);if((0,ke.useEffect)(()=>{if(y)return;let W=m=>{if(m.kind==="show"){let x=An(m.rawOpts,n,o),_={id:m.id,message:m.message,options:x,exiting:!1},F={id:m.id,message:m.message,rawOpts:m.rawOpts};u(d=>d.find(G=>G.id===m.id)?d.map(G=>G.id===m.id?{...G,message:m.message,options:x}:G):d.filter(G=>!G.exiting).length<t?[...d,_]:(I.current.some(G=>G.id===F.id)||I.current.push(F),d))}else m.kind==="update"?(u(x=>x.map(_=>{if(_.id!==m.id)return _;let F={..._.options,...m.patch,id:_.id};return{..._,message:m.message,options:F}})),I.current=I.current.map(x=>x.id!==m.id?x:{...x,message:m.message,rawOpts:{...x.rawOpts,...m.patch}})):m.kind==="dismiss"&&(m.id===void 0?(u(x=>x.map(_=>({..._,exiting:!0}))),I.current=[]):k.current.some(_=>_.id===m.id)?E(m.id):I.current=I.current.filter(_=>_.id!==m.id))};return Qe.subscribe(W),()=>Qe.unsubscribe(W)},[y,t,n,o,E]),(0,ke.useEffect)(()=>{if(!y)return;let W=m=>{if(m.kind==="show"){let x=An(m.rawOpts,n,o);y.show(m.id,m.message,x)}else m.kind==="update"?y.update(m.id,m.message,m.patch):m.kind==="dismiss"&&y.dismiss(m.id)};return Qe.subscribe(W),()=>Qe.unsubscribe(W)},[y,n,o]),y){if(!y.Container)return null;let W=y.Container;return(0,On.createPortal)((0,ye.jsx)(W,{position:e}),document.body)}let p=e.endsWith("left"),R="";L===!0&&(R="rdd-toast-container--newest-top"),L===!1&&(R="rdd-toast-container--newest-bottom");let M=["rdd-toast-container",`rdd-toast-container--${e}`,R].filter(Boolean).join(" ");return(0,On.createPortal)((0,ye.jsx)("div",{className:M,style:{width:C},"aria-label":"Notifications","aria-live":"polite",children:w.map(W=>(0,ye.jsx)(Wr,{id:W.id,message:W.message,options:W.options,exiting:W.exiting,isLeft:p,showProgress:S,pauseOnHover:a,animation:s,onDismiss:E,onExited:H},W.id))}),document.body)}var $=Qt(require("react"),1),Fo=require("react-dom");var ne=require("react/jsx-runtime"),mt=e=>e==="width"||e==="both",at=e=>e==="height"||e==="both",Wo=(e,t)=>t==="inline"?at(e)?"both":"width":mt(e)?"both":"height",bn=(e,t)=>t==="inline"?e==="both"?"height":mt(e)?null:e:e==="both"?"width":at(e)?null:e,_o=(e,t)=>at(t)?[]:mt(t)?e.startsWith("top-")?["top-left","top-right"]:["bottom-left","bottom-right"]:[e],Ar=(e,t)=>`${e.startsWith("top-")?"top":"bottom"}-${t}`,Or=(e,t)=>`${t}-${e.endsWith("-right")?"right":"left"}`,Ho=["top-left","top-right","bottom-left","bottom-right"],Bo=(0,$.createContext)(null),$o=(0,$.createContext)(null),Go=(0,$.createContext)(null),Ct=80;function Fr(e,t,n){let o=e.getBoundingClientRect(),a=t-o.left,s=n-o.top;return a<Ct&&s<Ct?"top-left":a>o.width-Ct&&s<Ct?"top-right":a<Ct&&s>o.height-Ct?"bottom-left":a>o.width-Ct&&s>o.height-Ct?"bottom-right":null}function Yo({children:e,className:t,style:n}){let[o,a]=(0,$.useState)({}),[s,L]=(0,$.useState)({}),[S,C]=(0,$.useState)({"top-left":[],"top-right":[],"bottom-left":[],"bottom-right":[]}),[y,w]=(0,$.useState)({}),[u,I]=(0,$.useState)(null),[k,E]=(0,$.useState)(null),[H,p]=(0,$.useState)(null),[R,M]=(0,$.useState)(()=>new Map),W=(0,$.useRef)(100),m=(0,$.useRef)(null),x=(0,$.useCallback)((K,J)=>(a(q=>({...q,[K]:J})),()=>a(q=>{let X={...q};return delete X[K],X})),[]),_=(0,$.useCallback)(K=>{W.current+=1;let J=W.current;L(q=>({...q,[K]:J})),p(K)},[]),F=(0,$.useCallback)((K,J,q=null)=>{let X=_o(J,q);C(le=>{let me={"top-left":le["top-left"].filter(ee=>ee!==K),"top-right":le["top-right"].filter(ee=>ee!==K),"bottom-left":le["bottom-left"].filter(ee=>ee!==K),"bottom-right":le["bottom-right"].filter(ee=>ee!==K)};for(let ee of X)me[ee]=[...me[ee],K];return Ho.every(ee=>me[ee].length===le[ee].length&&me[ee].every(($e,je)=>$e===le[ee][je]))?le:me})},[]),d=(0,$.useCallback)(K=>{C(J=>({"top-left":J["top-left"].filter(q=>q!==K),"top-right":J["top-right"].filter(q=>q!==K),"bottom-left":J["bottom-left"].filter(q=>q!==K),"bottom-right":J["bottom-right"].filter(q=>q!==K)}))},[]),z=(0,$.useCallback)((K,J)=>{w(q=>q[K]===J?q:{...q,[K]:J})},[]),B=(0,$.useCallback)((K,J)=>{M(q=>{let X=new Map(q);return X.set(K,J),X})},[]),G=(0,$.useCallback)(K=>{M(J=>{let q=new Map(J);return q.delete(K),q})},[]),te=(0,$.useCallback)(()=>{M(new Map)},[]),oe=(0,$.useMemo)(()=>Array.from(R.keys()),[R]),Q=(0,$.useMemo)(()=>({registerToolbar:x,insetTop:o.top??0,insetBottom:o.bottom??0}),[x,o]),Ce=(0,$.useMemo)(()=>({managedWindowIds:oe,openManaged:B,closeManaged:G,closeAllManaged:te}),[oe,B,G,te]),ue=(0,$.useMemo)(()=>({topId:H,zOrders:s,focusWindow:_,containerRef:m,stacks:S,dockedSizes:y,dockWindow:F,undockWindow:d,reportDockedSize:z,draggingId:u,setDraggingId:I,hoveredZone:k,setHoveredZone:E,insetTop:o.top??0,insetBottom:o.bottom??0,insetInlineStart:o.left??0,insetInlineEnd:o.right??0}),[H,s,_,S,y,F,d,z,u,k,o]);return(0,ne.jsx)(Bo.Provider,{value:Q,children:(0,ne.jsx)($o.Provider,{value:Ce,children:(0,ne.jsx)(Go.Provider,{value:ue,children:(0,ne.jsxs)("div",{ref:m,className:`rdd-panel-overlay-root${u!==null?" rdd-dragging-active":""}${t?" "+t:""}`,style:n,children:[e,u!==null&&(0,ne.jsx)(_r,{hoveredZone:k}),Array.from(R.entries()).map(([K,J])=>(0,ne.jsx)(_n,{id:K,title:J.title,icon:J.icon,open:!0,onClose:()=>G(K),defaultAnchor:J.anchor??"top-right",defaultWidth:J.width??320,defaultHeight:J.height??240,defaultStretch:J.stretch,children:J.content},K))]})})})})}function _r({hoveredZone:e}){return(0,ne.jsx)(ne.Fragment,{children:Ho.map(t=>(0,ne.jsx)("div",{className:`rdd-panel-float-dropzone rdd-panel-float-dropzone--${t}${e===t?" rdd-panel-float-dropzone--hovered":""}`,"aria-hidden":"true"},t))})}function Xo({position:e,variant:t="transparent",buttonVariant:n="ghost",buttonSize:o,style:a,className:s,children:L}){let S=(0,$.useContext)(Bo),C=(0,$.useRef)(null),y=(0,$.useRef)(null);(0,$.useLayoutEffect)(()=>{let E=C.current;if(!E||!S)return;let H=()=>{let R=e==="top"||e==="bottom"?E.offsetHeight:E.offsetWidth;y.current?.(),y.current=S.registerToolbar(e,R)};H();let p=new ResizeObserver(H);return p.observe(E),()=>{p.disconnect(),y.current?.(),y.current=null}},[e,S?.registerToolbar]);let w={position:"absolute",zIndex:5,pointerEvents:"none",boxSizing:"border-box"};e==="top"?(w.top=0,w.left=0,w.right=0):e==="bottom"?(w.bottom=0,w.left=0,w.right=0):e==="left"?(w.insetInlineStart=0,w.top=S?.insetTop??0,w.bottom=S?.insetBottom??0):(w.insetInlineEnd=0,w.top=S?.insetTop??0,w.bottom=S?.insetBottom??0);let I=e==="left"||e==="right"?{...(S?.insetTop??0)>0?{paddingTop:0}:{},...(S?.insetBottom??0)>0?{paddingBottom:0}:{}}:{},k=o!=null?{"--rdd-panel-toolbar-btn-size":`${o}px`}:{};return(0,ne.jsx)("div",{ref:C,className:`rdd-panel-toolbar rdd-panel-toolbar--${e}${s?" "+s:""}`,"data-variant":t,"data-btn-variant":n,style:{...w,...I,...k,...a},children:L})}function Vo({icon:e,onClick:t,disabled:n,title:o,variant:a}){return(0,ne.jsx)("button",{type:"button",className:"rdd-panel-toolbar-btn",onClick:t,disabled:n,title:o,"aria-label":o,...a?{"data-variant":a}:{},children:e})}function Ko({icon:e,active:t,onToggle:n,disabled:o,title:a,variant:s}){return(0,ne.jsx)("button",{type:"button",className:`rdd-panel-toolbar-btn${t?" rdd-panel-toolbar-btn--active":""}`,onClick:n,disabled:o,title:a,"aria-label":a,"aria-pressed":t,...s?{"data-variant":s}:{},children:e})}function qo(){return(0,ne.jsx)("span",{className:"rdd-panel-toolbar__sep","aria-hidden":"true"})}function jo(){return(0,ne.jsx)("span",{className:"rdd-panel-toolbar__spacer","aria-hidden":"true"})}function Zo({children:e}){return(0,ne.jsx)("span",{className:"rdd-panel-toolbar__item",children:e})}function Uo({children:e}){return(0,ne.jsx)("div",{className:"rdd-panel-toolbar__center",children:e})}function Jo({placeholder:e="Search\u2026",onSearch:t,onSelect:n}){let[o,a]=(0,$.useState)(!1),[s,L]=(0,$.useState)(""),[S,C]=(0,$.useState)([]),[y,w]=(0,$.useState)(null),u=(0,$.useRef)(null),I=(0,$.useRef)(null),k=(0,$.useRef)(null),E=(0,$.useRef)(null),H=()=>{a(!0),setTimeout(()=>I.current?.focus({preventScroll:!0}),0)},p=()=>{a(!1),L(""),C([]),w(null),k.current?.abort(),E.current&&clearTimeout(E.current)},R=F=>{let d=F.target.value;if(L(d),k.current?.abort(),E.current&&clearTimeout(E.current),!d.trim()){C([]),w(null);return}E.current=setTimeout(async()=>{let z=new AbortController;k.current=z;try{let B=await t(d,z.signal);if(!z.signal.aborted){C(B);let G=u.current;if(G&&B.length>0){let te=G.getBoundingClientRect(),oe=Math.max(te.width,240),Q=te.left;Q+oe>window.innerWidth-8&&(Q=window.innerWidth-oe-8),w({top:te.bottom+4,left:Q,width:oe})}else w(null)}}catch{}},300)},M=F=>{n(F),p()},W=F=>{u.current?.contains(F.relatedTarget)||p()},m=F=>{F.key==="Escape"&&p()},x=(0,$.useMemo)(()=>{let F={};for(let d of S){let z=d.group??"";F[z]||(F[z]=[]),F[z].push(d)}return F},[S]),_=(0,ne.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,ne.jsx)("circle",{cx:"6.5",cy:"6.5",r:"4.5"}),(0,ne.jsx)("line",{x1:"10",y1:"10",x2:"14",y2:"14"})]});return o?(0,ne.jsxs)("div",{ref:u,className:"rdd-panel-toolbar-search rdd-panel-toolbar-search--open",onBlur:W,children:[(0,ne.jsx)("button",{type:"button",className:"rdd-panel-toolbar-btn",onClick:p,"aria-label":"Close search",title:"Close search",children:_}),(0,ne.jsx)("input",{ref:I,className:"rdd-panel-toolbar-search__input",type:"text",value:s,onChange:R,onKeyDown:m,placeholder:e,autoComplete:"off"}),y&&S.length>0&&(0,Fo.createPortal)((0,ne.jsx)("div",{className:"rdd-panel-toolbar-search__dropdown",style:{position:"fixed",top:y.top,left:y.left,width:y.width},onMouseDown:F=>F.preventDefault(),children:Object.entries(x).map(([F,d])=>(0,ne.jsxs)($.default.Fragment,{children:[F&&(0,ne.jsx)("div",{className:"rdd-panel-toolbar-search__group",children:F}),d.map(z=>(0,ne.jsxs)("button",{type:"button",className:"rdd-panel-toolbar-search__item",onClick:()=>M(z),children:[z.icon&&(0,ne.jsx)("span",{className:"rdd-panel-toolbar-search__item-icon",children:z.icon}),(0,ne.jsx)("span",{className:"rdd-panel-toolbar-search__item-label",children:z.label}),z.description&&(0,ne.jsx)("span",{className:"rdd-panel-toolbar-search__item-desc",children:z.description})]},z.id))]},F||"__default__"))}),document.body)]}):(0,ne.jsx)("div",{ref:u,className:"rdd-panel-toolbar-search",children:(0,ne.jsx)("button",{type:"button",className:"rdd-panel-toolbar-btn",onClick:H,title:"Search","aria-label":"Search",children:_})})}function _n(e){let t=(0,$.useContext)(Go);return e.open?(0,ne.jsx)(Gr,{ctx:t,...e},e.id):null}var Hr=120,Br=60,Yt=8,$r=8,Ao=16,Oo=40;function Gr({id:e,title:t,icon:n,defaultAnchor:o,defaultWidth:a,defaultHeight:s,defaultStretch:L,stretch:S,onPlacementChange:C,stretchable:y=!0,children:w,ctx:u,onClose:I}){let k=(0,$.useContext)(At)?.isRtl??!1,[E,H]=(0,$.useState)("docked"),[p,R]=(0,$.useState)(o),[M,W]=(0,$.useState)(L??null),m=S!==void 0,x=m?S??null:M,[_,F]=(0,$.useState)(null),[d,z]=(0,$.useState)({w:a,h:s}),B=(0,$.useRef)(null),G=(0,$.useRef)(E);G.current=E;let te=(0,$.useRef)(_);te.current=_;let oe=(0,$.useRef)(d);oe.current=d;let Q=(0,$.useRef)(x);Q.current=x;let Ce=(0,$.useRef)(p);Ce.current=p;let ue=(0,$.useRef)(C);ue.current=C;let[K,J]=(0,$.useState)({inline:!1,block:!1}),q=(0,$.useRef)(K);q.current=K;let X=(0,$.useRef)(0),le=(0,$.useCallback)((Y,U)=>{R(Y),m||W(U),ue.current?.({anchor:Y,stretch:U})},[m]),me=(0,$.useRef)(null);(0,$.useLayoutEffect)(()=>{E==="docked"&&u?.dockWindow(e,p,x)},[E,p,x]),(0,$.useLayoutEffect)(()=>()=>{u?.undockWindow(e)},[]);let Be=(0,$.useRef)(!1);(0,$.useEffect)(()=>{if(process.env.NODE_ENV!=="development"||Be.current||E!=="docked"||!at(x)||!u)return;let Y=p.endsWith("-right")?"right":"left",U=[`top-${Y}`,`bottom-${Y}`].flatMap(fe=>u.stacks[fe]??[]).filter(fe=>fe!==e);U.length!==0&&(Be.current=!0,console.warn(`[react-dockable-desktop] PanelFloatingWindow "${e}" stretches the block axis (stretch: "${x}") while ${U.length} other widget(s) are anchored to the same side (${U.join(", ")}). A block-stretched widget spans the axis that stacking uses to separate siblings, so it cannot stack and will overlap them \u2014 z-order decides which is on top. Either give it a fixed height, or move the other widgets to the opposite side.`))},[E,x,p,u?.stacks,e]),(0,$.useEffect)(()=>{u?.reportDockedSize(e,d.h)},[d.h]);let ee=u?.zOrders[e]??101,$e=!u||u.topId===e,je=()=>{let Y=B.current?.offsetParent;return{cw:Y?.clientWidth??9999,ch:Y?.clientHeight??9999}},Xe=()=>{let Y=u?.insetInlineStart??0,U=u?.insetInlineEnd??0;return{left:(k?U:Y)+Yt,right:(k?Y:U)+Yt,top:u?.insetTop??0,bottom:u?.insetBottom??0}},Ze=()=>{u?.focusWindow(e)},lt=Y=>{if(Y.button!==0)return;Y.preventDefault();let U,fe;if(G.current==="docked"){let we=B.current,Re=u?.containerRef?.current;if(we&&Re){let Me=we.getBoundingClientRect(),_e=Re.getBoundingClientRect();U=Me.left-_e.left,fe=Me.top-_e.top}else U=Yt,fe=u?.insetTop??0}else U=te.current?.x??0,fe=te.current?.y??0;me.current={mouseX:Y.clientX,mouseY:Y.clientY,posX:U,posY:fe,hasDragged:!1},B.current?.setPointerCapture(Y.pointerId)},it=Y=>U=>{if(U.button!==0)return;U.preventDefault(),U.stopPropagation();let fe=0,we=0;if(G.current==="free")fe=te.current?.x??0,we=te.current?.y??0;else{let Ie=B.current,Ee=Ie?.offsetParent;if(Ie&&Ee){let De=Ie.getBoundingClientRect(),Ye=Ee.getBoundingClientRect();fe=De.left-Ye.left,we=De.top-Ye.top}}let Re=B.current?.getBoundingClientRect(),Me={x:fe,y:we,w:mt(Q.current)&&Re?Re.width:oe.current.w,h:at(Q.current)&&Re?Re.height:oe.current.h},_e=Y.includes("e")||Y.includes("w"),Ge=Y.includes("n")||Y.includes("s"),He=!1,Le={inline:!1,block:!1},dt=()=>{if(He||G.current!=="docked")return;let Ie=Q.current,Ee=_e&&mt(Ie),De=Ge&&at(Ie);if(!Ee&&!De)return;He=!0;let Ye=Ie,Ue=Ce.current;if(Ee){Ye=bn(Ye,"inline");let We=Y.includes("e");Ue=Ar(Ue,We!==k?"left":"right")}De&&(Ye=bn(Ye,"block"),Ue=Or(Ue,Y.includes("s")?"top":"bottom")),le(Ue,Ye)};gt({element:U.currentTarget,pointerId:U.pointerId,startClientX:U.clientX,startClientY:U.clientY,captureStart:()=>Me,activeClasses:[{el:document.body,classes:["rdd-resizing-active"]}],onMove:(Ie,Ee,De)=>{let{cw:Ye,ch:Ue}=je(),We=G.current==="docked"?Xe():{left:0,right:0,top:0,bottom:0},{x:ht,y:ct,w:wt,h:Rt}=Bt(Y,Ie,Ee,De,{minW:Hr,minH:Br,maxW:Ye-We.right-De.x,maxH:Ue-We.bottom-De.y,minX:We.left,minY:We.top});if(dt(),G.current==="docked"&&y){let v=Ye-We.left-We.right,c=Ue-We.top-We.bottom-X.current,l=Q.current,A={...Le};_e&&!mt(l)&&(wt>=v-Ao?A.inline=!0:Le.inline&&wt<v-Oo&&(A.inline=!1)),Ge&&!at(l)&&(Rt>=c-Ao?A.block=!0:Le.block&&Rt<c-Oo&&(A.block=!1)),(A.inline!==Le.inline||A.block!==Le.block)&&(Le=A,J(A))}let i=He?bn(bn(Q.current,_e?"inline":"block"),Ge?"block":"inline"):Q.current;z(v=>({w:mt(i)?v.w:wt,h:at(i)?v.h:Rt})),G.current==="free"&&F({x:ht,y:ct})},onEnd:Ie=>{if(!Le.inline&&!Le.block){(q.current.inline||q.current.block)&&J({inline:!1,block:!1});return}z(De=>({w:Le.inline?Ie.w:De.w,h:Le.block?Ie.h:De.h}));let Ee=Q.current;Le.inline&&(Ee=Wo(Ee,"inline")),Le.block&&(Ee=Wo(Ee,"block")),le(Ce.current,Ee),J({inline:!1,block:!1})}})},st=Y=>{if(me.current){let U=me.current;if(!U.hasDragged){if(Math.abs(Y.clientX-U.mouseX)+Math.abs(Y.clientY-U.mouseY)<4)return;if(U.hasDragged=!0,G.current==="docked"){if(Q.current){let He=B.current?.getBoundingClientRect();He&&z({w:Math.round(He.width),h:Math.round(He.height)}),le(Ce.current,null)}u?.undockWindow(e),H("free")}document.body.classList.add("rdd-dragging-active"),u?.setDraggingId(e)}let{cw:fe,ch:we}=je(),Re=Math.max(0,Math.min(U.posX+Y.clientX-U.mouseX,fe-oe.current.w)),Me=Math.max(0,Math.min(U.posY+Y.clientY-U.mouseY,we-oe.current.h));F({x:Re,y:Me});let _e=u?.containerRef?.current;if(_e){let Ge=Fr(_e,Y.clientX,Y.clientY);u?.setHoveredZone(Ge&&k?qt(Ge):Ge)}}},nt=()=>{if(me.current?.hasDragged){let Y=u?.hoveredZone;Y&&(u?.dockWindow(e,Y,Q.current),H("docked"),F(null),le(Y,Q.current)),u?.setHoveredZone(null),u?.setDraggingId(null)}document.body.classList.remove("rdd-dragging-active"),me.current=null},ot=()=>{me.current?.hasDragged&&(u?.setHoveredZone(null),u?.setDraggingId(null)),document.body.classList.remove("rdd-dragging-active"),me.current=null},ce;if(E==="docked"&&u){let Y=_o(p,x),U=0,fe=Y.length===0;for(let Re of Y){let Me=u.stacks[Re]??[],_e=Me.indexOf(e);if(_e===-1)continue;fe=!0;let Ge=0;for(let He=0;He<_e;He++)Ge+=(u.dockedSizes[Me[He]]??s)+$r;U=Math.max(U,Ge)}X.current=U;let we=Xe();ce={zIndex:ee,transition:"top 0.2s ease, bottom 0.2s ease",opacity:fe?void 0:0,pointerEvents:fe?void 0:"none"},mt(x)?(ce.insetInlineStart=(u.insetInlineStart??0)+Yt,ce.insetInlineEnd=(u.insetInlineEnd??0)+Yt):(ce[p.endsWith("-right")?"insetInlineEnd":"insetInlineStart"]=Yt,ce.width=d.w),at(x)?(ce.top=we.top,ce.bottom=we.bottom):p.startsWith("top-")?(ce.top=we.top+U,ce.height=d.h):(ce.bottom=we.bottom+U,ce.height=d.h)}else ce={left:_?.x??0,top:_?.y??0,width:d.w,height:d.h,zIndex:ee};let ie=$.default.useMemo(()=>{if(E==="free")return["n","ne","e","se","s","sw","w","nw"];let Y=p.startsWith("top-")?"s":"n",fe=p.endsWith("-right")!==k?"w":"e",we=mt(x),Re=at(x),Me=[];return Me.push(...we?["e","w"]:[fe]),Me.push(...Re?["n","s"]:[Y]),!we&&!Re&&Me.push(`${Y}${fe}`),Me},[E,p,k,x]),Ne=(0,ne.jsxs)("svg",{width:"8",height:"8",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",children:[(0,ne.jsx)("line",{x1:"1",y1:"1",x2:"9",y2:"9"}),(0,ne.jsx)("line",{x1:"9",y1:"1",x2:"1",y2:"9"})]});return(0,ne.jsxs)("div",{ref:B,dir:k?"rtl":"ltr",className:["rdd-panel-float",$e?"rdd-panel-float--active":"",K.inline||K.block?"rdd-panel-float--snapping":""].filter(Boolean).join(" "),style:ce,onPointerDown:Ze,onPointerMove:st,onPointerUp:nt,onPointerCancel:ot,children:[(0,ne.jsxs)("div",{className:"rdd-panel-float__header",onPointerDown:lt,children:[n&&(0,ne.jsx)("span",{className:"rdd-panel-float__icon",children:n}),(0,ne.jsx)("span",{className:"rdd-panel-float__title",children:t}),(0,ne.jsx)("button",{type:"button",className:"rdd-panel-float__close",onClick:I,onPointerDown:Y=>Y.stopPropagation(),title:"Close","aria-label":"Close",children:Ne})]}),(0,ne.jsx)("div",{className:"rdd-panel-float__body",children:w}),ie.map(Y=>(0,ne.jsx)("div",{className:`rdd-resize-handle rdd-resize-${Y}`,onPointerDown:it(Y)},Y))]})}function Qo(){let[e,t]=(0,$.useState)(!1),n=(0,$.useCallback)(()=>{t(!0)},[]),o=(0,$.useCallback)(()=>{t(!1)},[]);return{isOpen:e,open:n,close:o}}var Yr=[];function er(){let e=(0,$.useContext)($o),t=e?.managedWindowIds??Yr;return(0,$.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,SecondarySidebar,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