react-dockable-desktop 6.3.0 → 6.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,10 +1,10 @@
1
- import On,{useState as lt,useRef as Fe,useEffect as we,useCallback as Wn,useContext as So}from"react";import{createPortal as To}from"react-dom";import{createContext as Ct,useContext as ct,useState as mr,useRef as et,useMemo as sn,useCallback as oe,useEffect as Wt,useSyncExternalStore as hr}from"react";import{createContext as dr,useContext as cr,useSyncExternalStore as ur}from"react";var pr={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:()=>()=>{}},wn=dr(pr),Pt=wn.Provider,zt=()=>cr(wn),gr=()=>{let{onResize:e,getDimensions:t}=zt();return ur(n=>e?e(()=>n()):()=>{},()=>t?t():null)};var Nt=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())}},rn=new Nt;var Vt={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"}};import{isValidElement as fr}from"react";function Dt(e){if(e===null)return!0;if(e===void 0)return!1;let t=typeof e;if(t==="string"||t==="number"||t==="boolean")return!0;if(t==="function"||t==="symbol"||t==="bigint")return!1;if(e instanceof Date)return!0;if(fr(e))return!1;if(Array.isArray(e))return e.every(Dt);let n=Object.getPrototypeOf(e);return n!==Object.prototype&&n!==null?!1:Object.values(e).every(Dt)}import{jsx as xt}from"react/jsx-runtime";var At=Ct(null),an=Ct(null),ro=Ct(null),io=Ct(null),so=Ct(Vt),ao=Ct({}),pt=()=>ct(ao),lo=Ct(rn),Kt=()=>ct(lo),Rn=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))}},br={type:"leaf",id:"group-default",panels:[],activePanelId:null};function co(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 Mn(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 I of s.children){let M=n(I);if(M)return M}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 uo(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 I=s.stickyRight&&s.stickyBottom?"bottom-right":s.stickyRight?"top-right":s.stickyBottom?"bottom-left":null,{stickyRight:M,stickyBottom:x,...y}=s;return{...y,anchor:I}}return s}),n={gridRoot:e.gridRoot,floating:t,panels:e.panels},o=typeof e.activePanelId=="string"?e.activePanelId:null,a=null;return o!==null&&(co(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=Mn(n)),{gridRoot:e.gridRoot,floating:t,minimized:e.minimized,panels:e.panels,activePanelId:a}}function vr(e){if(e)try{let t=uo(JSON.parse(e));if(t)return t}catch{}return{gridRoot:br,floating:[],minimized:[],panels:{},activePanelId:null}}var Sn=({children:e,client:t,formatMessage:n,predefinedMessages:o,dir:a,modalClass:s,modalBodyClass:I,sidePanelClass:M,sidePanelBodyClass:x,windowClass:y,windowBodyClass:w,zIndexBase:c})=>{let k=et(t?.registry??rn).current,T=t?.config.formatMessage??n,A=t?.config.predefinedMessages??o,_=t?.config.dir??a,u=t?.config.zIndexBase??c??1e3,[C,P]=mr(()=>({...vr(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))})),O=et(C);O.current=C;let m=et(new Set);Wt(()=>{m.current.forEach(i=>i())},[C]);let R=oe(()=>O.current,[]),H=oe(i=>(m.current.add(i),()=>m.current.delete(i)),[]),D=et({}),l=et({}),E=sn(()=>({...Vt,...A}),[A]),F=et(new Rn),X=et(u);Wt(()=>(document.documentElement.style.setProperty("--rdd-z-base",String(u)),()=>{document.documentElement.style.removeProperty("--rdd-z-base")}),[u]);let Z=oe((i,b)=>F.current.subscribe(i,b),[]),U=oe((i,b)=>{F.current.publish(i,b)},[]),Q=oe((i,b)=>{let g=typeof i.x=="string"?parseFloat(i.x):i.x,d=typeof i.y=="string"?parseFloat(i.y):i.y,L=typeof i.width=="string"?parseFloat(i.width):i.width,r=typeof i.height=="string"?parseFloat(i.height):i.height;isNaN(g)&&(g=300),isNaN(d)&&(d=150),isNaN(L)&&(L=450),isNaN(r)&&(r=350);let v=z=>b.some(N=>{let W=typeof N.x=="string"?parseFloat(N.x):N.x,$=typeof N.y=="string"?parseFloat(N.y):N.y;return!N.maximized&&Math.abs(W-z.x)<20&&Math.abs($-z.y)<20}),f=0;for(;v({x:g,y:d})&&f<10;)g+=30,d+=30,f++;let h=Math.max(100,window.innerWidth||1024),p=Math.max(100,window.innerHeight||768);return(g+L>h||d+r>p)&&(g=100+f%5*30,d=100+f%5*30),g=Math.max(0,Math.min(g,h-100)),d=Math.max(0,Math.min(d,p-40)),{x:g,y:d,width:L,height:r}},[]),me=oe(i=>{P(b=>{let g=b.panels[i];if(!g)return b;if(g.state==="floating"){let d=b.floating.find(r=>r.id===i);if(!d)return b;let L=!b.floating.some(r=>r.z>d.z);return L&&b.activePanelId===i?b:(L||(X.current+=1),{...b,floating:b.floating.map(r=>r.id===i?{...r,z:L?d.z:X.current}:r),activePanelId:i})}else if(g.state==="docked"){if(b.activePanelId===i)return b;let d=L=>L.type==="leaf"?L.panels.includes(i)?{...L,activePanelId:i}:L:{...L,children:L.children.map(d)};return{...b,gridRoot:d(b.gridRoot),activePanelId:i}}return b.activePanelId===i?b:{...b,activePanelId:i}})},[]),te=(i,b)=>{if(i.type==="leaf"){let g=i.panels.indexOf(b);if(g===-1)return i;let d=i.panels.filter(v=>v!==b),L=i.activePanelId===b?d[g]||d[g-1]||d[0]||null:i.activePanelId,r={...i,panels:d,activePanelId:L};return d.length===0&&!i.keepOnEmpty?null:r}else{let g=i.children.map(r=>te(r,b)).filter(r=>r!==null);if(g.length===0)return null;if(g.length===1)return g[0];let d=i.sizes.slice(0,g.length),L=d.reduce((r,v)=>r+v,0);return{...i,children:g,sizes:d.map(r=>r/L)}}},G=(i,b,g)=>{if(i.type==="leaf"){if(i.id===b){let d=i.panels.includes(g)?i.panels:[...i.panels,g];return{...i,panels:d,activePanelId:g}}return i}else return{...i,children:i.children.map(d=>G(d,b,g))}},j=i=>{if(i.type==="leaf")return i.id;for(let b of i.children){let g=j(b);if(g)return g}return null},V=oe((i,b,g)=>{let d=i;if(g?.dedupeKey!==void 0){let p=Object.values(O.current.panels).find(z=>z.component===b&&z.dedupeKey===g.dedupeKey);p&&(d=p.id)}let L=!(d in O.current.panels),r=d!==i,v=g?.focus!==!1,h=g?.props!==void 0?Dt(g.props):!0;P(p=>{let z=p.panels[d],N=k.get(b),W=g?.title||g?.title||N?.defaultOptions?.title||d,$=g?.initialTarget||N?.defaultOptions?.initialTarget||"docked",ee=N?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350},Y=v?d:p.activePanelId;if(z)if(z.state==="minimized"){let de=p.minimized.filter(pe=>pe.id!==d);if($==="floating"||!p.gridRoot){X.current+=1;let pe=Q(ee,p.floating);return{...p,minimized:de,floating:[...p.floating,{...pe,id:d,z:X.current}],panels:{...p.panels,[d]:{...z,state:"floating"}},activePanelId:Y}}else{let pe=j(p.gridRoot)||"group-default";return{...p,minimized:de,gridRoot:G(p.gridRoot,pe,d),panels:{...p.panels,[d]:{...z,state:"docked"}},activePanelId:Y}}}else{if(z.state==="floating")return v&&me(d),p;{let de=pe=>pe.type==="leaf"?pe.panels.includes(d)?{...pe,activePanelId:d}:pe:{...pe,children:pe.children.map(de)};return{...p,gridRoot:de(p.gridRoot),activePanelId:Y}}}let ue={id:d,title:W,component:b,state:$==="tabbed"?"docked":$,props:g?.props,serializable:h,dedupeKey:g?.dedupeKey},ie={...p.panels,[d]:ue};if($==="floating"){X.current+=1;let de=Q(ee,p.floating),pe=g?.anchor??N?.defaultOptions?.defaultAnchor??null;return{...p,floating:[...p.floating,{...de,id:d,z:X.current,anchor:pe}],panels:ie,activePanelId:Y}}else{let de=j(p.gridRoot)||"group-default";return{...p,gridRoot:G(p.gridRoot,de,d),panels:ie,activePanelId:Y}}}),L&&F.current.publish("panel:opened",{id:d,component:b}),(L||r)&&F.current.publish("layout:changed",{})},[Q,me]),B=oe(i=>{let b=i in O.current.panels;P(g=>{let d=g.panels[i];if(!d||k.get(d.component)?.defaultOptions?.canClose===!1)return g;delete D.current[i],delete l.current[i];let r={...g.panels};delete r[i];let v=te(g.gridRoot,i)||{type:"leaf",id:"group-default",panels:[],activePanelId:null},f=g.floating.filter(p=>p.id!==i),h=g.activePanelId===i?Mn({gridRoot:v,floating:f,panels:r}):g.activePanelId;return{...g,gridRoot:v,floating:f,minimized:g.minimized.filter(p=>p.id!==i),panels:r,activePanelId:h}}),b&&(F.current.publish("panel:closed",{id:i}),F.current.publish("layout:changed",{}))},[]),se=oe((i,b)=>{D.current[i]=b},[]),be=oe(i=>{delete D.current[i]},[]),ze=oe((i,b)=>{l.current[i]=b},[]),K=oe(i=>{delete l.current[i]},[]),_e=oe((i,b,g)=>{P(d=>{let L=d.panels[i];return L?{...d,panels:{...d.panels,[i]:{...L,dirty:b,dirtyOptions:g}}}:d})},[]),Xe=oe((i,b)=>{P(g=>{let d=g.panels[i];return d?{...g,panels:{...g.panels,[i]:{...d,title:b}}}:g})},[]),Ve=oe(async(i,b)=>{if(b?.force){B(i);return}let g=D.current[i];if(g&&!await g())return;let d=O.current.panels[i];if(d?.dirty)if(b?.onConfirm){if(!await b.onConfirm(d.dirtyOptions))return}else return;B(i)},[B]),Ge=oe(i=>{let b=O.current.panels[i]?.state!=="minimized"&&i in O.current.panels;P(g=>{let d=g.panels[i];if(!d||d.state==="minimized"||k.get(d.component)?.defaultOptions?.canMinimize===!1)return g;let r,v;if(d.state==="floating"){let N=g.floating.find(W=>W.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(d.state==="docked"){let N=W=>{if(W.type==="leaf")return W.panels.includes(i)?W.id:null;for(let $ of W.children){let ee=N($);if(ee)return ee}return null};v=N(g.gridRoot)??void 0}let f=te(g.gridRoot,i)||{type:"leaf",id:"group-default",panels:[],activePanelId:null},h=g.floating.filter(N=>N.id!==i),p={...g.panels,[i]:{...d,state:"minimized",previousState:d.state,lastFloatingRect:r,lastLeafId:v}},z=g.activePanelId===i?Mn({gridRoot:f,floating:h,panels:p}):g.activePanelId;return{...g,gridRoot:f,floating:h,minimized:[...g.minimized,{id:i,title:d.title,component:d.component}],panels:p,activePanelId:z}}),b&&(F.current.publish("panel:minimized",{id:i}),F.current.publish("layout:changed",{}))},[]),rt=oe((i,b)=>{let g=O.current.panels[i]?.state==="minimized",d=b?.focus!==!1;P(L=>{let r=L.panels[i];if(!r||r.state!=="minimized")return L;let v=L.minimized.filter(p=>p.id!==i),f=r.previousState||"docked",h=d?i:L.activePanelId;if(f==="floating"){X.current+=1;let p=k.get(r.component),z=r.lastFloatingRect||p?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350},N=Q(z,L.floating);return{...L,minimized:v,floating:[...L.floating,{...N,id:i,z:X.current,anchor:r.lastFloatingRect?.anchor??null}],panels:{...L.panels,[i]:{...r,state:"floating"}},activePanelId:h}}else{let p=($,ee)=>$.type==="leaf"?$.id===ee:$.children.some(Y=>p(Y,ee)),z=r.lastLeafId&&p(L.gridRoot,r.lastLeafId),N=k.get(r.component),W=N?.defaultOptions?.canDrag!==!1;if(z)return{...L,minimized:v,gridRoot:G(L.gridRoot,r.lastLeafId,i),panels:{...L.panels,[i]:{...r,state:"docked"}},activePanelId:h};if(W){X.current+=1;let $=r.lastFloatingRect||N?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350},ee=Q($,L.floating);return{...L,minimized:v,floating:[...L.floating,{...ee,id:i,z:X.current,anchor:r.lastFloatingRect?.anchor??null}],panels:{...L.panels,[i]:{...r,state:"floating"}},activePanelId:h}}else{let $=j(L.gridRoot)||"group-default";return{...L,minimized:v,gridRoot:G(L.gridRoot,$,i),panels:{...L.panels,[i]:{...r,state:"docked"}},activePanelId:h}}}}),g&&(F.current.publish("panel:restored",{id:i}),F.current.publish("layout:changed",{}))},[Q]),it=oe((i,b,g)=>{P(d=>{let L=d.panels[i];if(!L||k.get(L.component)?.defaultOptions?.canDrag===!1)return d;let v=k.get(L.component),f=b||v?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350},h=te(d.gridRoot,i);X.current+=1;let p=Q(f,d.floating);return{...d,gridRoot:h||{type:"leaf",id:"group-default",panels:[],activePanelId:null},floating:[...d.floating,{...p,id:i,z:X.current,anchor:g??null}],panels:{...d.panels,[i]:{...L,state:"floating"}}}})},[Q]),st=oe((i,b)=>{P(g=>{let d=g.panels[i];if(!d)return g;let L=g.floating.filter(f=>f.id!==i),r=te(g.gridRoot,i),v=b||j(r||g.gridRoot)||"group-default";return{...g,gridRoot:G(r||g.gridRoot,v,i),floating:L,panels:{...g.panels,[i]:{...d,state:"docked"}}}})},[]),Je=(i,b,g,d,L)=>{if(i.type==="leaf"){if(i.id===b){let r={type:"leaf",id:`group-split-${Date.now()}-${Math.floor(Math.random()*1e3)}`,panels:[g],activePanelId:g},v=d==="left"||d==="right"?"horizontal":"vertical",f=d==="left"||d==="top"?[r,i]:[i,r],h=d==="left"||d==="top"?[L,1-L]:[1-L,L];return{type:"branch",orientation:v,sizes:h,children:f}}return i}else return{...i,children:i.children.map(r=>Je(r,b,g,d,L))}},Qe=oe(i=>{P(b=>({...b,draggedPanelId:i}))},[]),Pe=oe((i,b,g)=>{P(d=>{let L=d.panels[i];if(!L)return d;let r=d.floating.filter(h=>h.id!==i),v=te(d.gridRoot,i),f;return g==="center"?f=G(v||d.gridRoot,b,i):f=Je(v||d.gridRoot,b,i,g,d.splitRatio),{...d,gridRoot:f,floating:r,panels:{...d.panels,[i]:{...L,state:"docked"}},draggedPanelId:null}})},[]),ne=oe((i,b)=>{P(g=>{let d=g.panels[i];if(!d)return g;let L=g.floating.filter(N=>N.id!==i),r=te(g.gridRoot,i),v={type:"leaf",id:`group-edge-${Date.now()}-${Math.floor(Math.random()*1e3)}`,panels:[i],activePanelId:i},f=b==="left"||b==="right"?"horizontal":"vertical",h=b==="left"||b==="top"?[v,r||g.gridRoot]:[r||g.gridRoot,v],p=g.edgeSplitRatio,z={type:"branch",orientation:f,sizes:b==="left"||b==="top"?[p,1-p]:[1-p,p],children:h};return{...g,gridRoot:z,floating:L,panels:{...g.panels,[i]:{...d,state:"docked"}},draggedPanelId:null}})},[]),ce=oe((i,b,g)=>{P(d=>{let L=d.panels[i];if(!L)return d;let r=te(d.gridRoot,i),v=p=>{if(p.type==="leaf"){if(p.id===b){let z=p.panels.filter($=>$!==i),N=Math.max(0,Math.min(g,z.length)),W=[...z];return W.splice(N,0,i),{...p,panels:W,activePanelId:i}}return p}else return{...p,children:p.children.map(v)}},f=v(r||d.gridRoot),h=d.floating.filter(p=>p.id!==i);return{...d,gridRoot:f,floating:h,panels:{...d.panels,[i]:{...L,state:"docked"}},draggedPanelId:null}})},[]),$e=oe(i=>{P(b=>{let g=L=>{if(L.type==="leaf")return L.id===i&&L.canClose!==!1?null:L;{let r=L.children.map(h=>g(h)).filter(h=>h!==null);if(r.length===0)return null;if(r.length===1)return r[0];let v=L.sizes.slice(0,r.length),f=v.reduce((h,p)=>h+p,0);return{...L,children:r,sizes:v.map(h=>h/f)}}},d=g(b.gridRoot);return{...b,gridRoot:d||{type:"leaf",id:"group-default",panels:[],activePanelId:null}}})},[]),He=oe(i=>{P(b=>({...b,floating:b.floating.map(g=>g.id===i?{...g,maximized:!g.maximized}:g)}))},[]),q=oe((i,b)=>{let g=(d,L)=>{if(d.type==="leaf")return d;if(L===i.length)return{...d,sizes:b};let r=i[L],v=d.children.map((f,h)=>h===r?g(f,L+1):f);return{...d,children:v}};P(d=>({...d,gridRoot:g(d.gridRoot,0)}))},[]),J=oe((i,b)=>{P(g=>({...g,floating:g.floating.map(d=>d.id===i?{...d,...b}:d)}))},[]),le=oe(()=>{let i=O.current.panels,b=[],g={};for(let[p,z]of Object.entries(i)){let N=l.current[p],W=N?.(),$=N!==void 0&&W!==void 0,ee=$?W:z.props,Y=$?Dt(W):z.serializable;Y?g[p]=$?{...z,props:ee,serializable:Y}:z:b.push(p)}let d=O.current.gridRoot,L=O.current.floating,r=O.current.minimized;for(let p of b)d=te(d,p)||{type:"leaf",id:"group-default",panels:[],activePanelId:null},L=L.filter(z=>z.id!==p),r=r.filter(z=>z.id!==p);b.length>0&&F.current.publish("layout:panels-excluded",{panels:b.map(p=>({id:p,component:i[p].component}))});let v=O.current.activePanelId,f=v!==null&&co(v,{gridRoot:d,floating:L,panels:g})?v:null,h={version:2,...f!==null?{activePanelId:f}:{},gridRoot:d,floating:L,minimized:r,panels:g};return JSON.stringify(h)},[]),he=oe(i=>{try{let b=uo(JSON.parse(i));return b?(P(g=>({...g,gridRoot:b.gridRoot,floating:b.floating,minimized:b.minimized,panels:b.panels,draggedPanelId:null,activePanelId:b.activePanelId})),!0):!1}catch(b){return console.error("Failed to parse layout configuration:",b),!1}},[]),Re=oe(i=>{P(b=>b.activePanelId===i?b:{...b,activePanelId:i})},[]),Me=oe(i=>{P(b=>b.dir===i?b:{...b,dir:i,isRtl:i==="rtl"})},[]),Ne=oe(i=>i in O.current.panels,[]),Se=oe(()=>Object.keys(O.current.panels),[]),Te=oe((i,b)=>Object.values(O.current.panels).find(d=>d.component===i&&d.dedupeKey===b)?.id??null,[]);Wt(()=>{_&&P(i=>i.dir===_?i:{...i,dir:_,isRtl:_==="rtl"})},[_]);let ve=et(new Map),at=et(null),De=oe(i=>(at.current=i,()=>{at.current=null}),[]),We=oe(i=>{at.current?.(i)},[]),Ae=oe((i,b)=>(ve.current.set(i,b),()=>{ve.current.delete(i)}),[]),ke=oe(i=>ve.current.get(i)?.()??[],[]),Ye=sn(()=>({openPanel:V,closePanel:B,minimizePanel:Ge,restorePanel:rt,floatPanel:it,dockPanel:st,maximizePanel:He,updateSplitSizes:q,updateFloatingPosition:J,focusPanel:me,isOpen:Ne,getOpenPanelIds:Se,findPanelId:Te,saveLayout:le,loadLayout:he,publish:U,subscribe:Z,setDraggedPanelId:Qe,dockPanelToGroup:Pe,movePanelOrder:ce,closeLeafGroup:$e,registerCloseGuard:se,unregisterCloseGuard:be,registerStateProvider:ze,unregisterStateProvider:K,setPanelDirty:_e,updatePanelTitle:Xe,requestClosePanel:Ve,dockPanelToWorkspaceEdge:ne,setActivePanel:Re,setDirection:Me,registerPanelContextMenu:Ae,getPanelContextMenuItems:ke,showContextMenu:We,registerContextMenuFn:De}),[V,B,Ge,rt,it,st,He,q,J,me,Ne,Se,Te,le,he,U,Z,Qe,Pe,ce,$e,se,be,ze,K,_e,Xe,Ve,ne,Re,Me,Ae,ke,We,De]),Oe=i=>{let b=i.defaultMessage||i.id;return i.values&&Object.entries(i.values).forEach(([g,d])=>{b=b.replace(`{${g}}`,String(d))}),b},Yt=sn(()=>({modalClass:s,modalBodyClass:I,sidePanelClass:M,sidePanelBodyClass:x,windowClass:y,windowBodyClass:w}),[s,I,M,x,y,w]);Wt(()=>{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
+ import Fn,{useState as at,useRef as Oe,useEffect as Ce,useCallback as On,useContext as To}from"react";import{createPortal as ko}from"react-dom";import{createContext as wt,useContext as ct,useState as hr,useRef as et,useMemo as an,useCallback as oe,useEffect as Ot,useSyncExternalStore as br}from"react";import{createContext as cr,useContext as ur,useSyncExternalStore as pr}from"react";var gr={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:()=>()=>{}},Rn=cr(gr),xt=Rn.Provider,zt=()=>ur(Rn),fr=()=>{let{onResize:e,getDimensions:t}=zt();return pr(o=>e?e(()=>o()):()=>{},()=>t?t():null)};var Dt=class{registry=new Map;register(t,o,r){this.registry.set(t,{Component:o,defaultOptions:r})}get(t){return this.registry.get(t)}getRegisteredIds(){return Array.from(this.registry.keys())}},sn=new Dt;var Kt={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"}};import{isValidElement as mr}from"react";function Wt(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(mr(e))return!1;if(Array.isArray(e))return e.every(Wt);let o=Object.getPrototypeOf(e);return o!==Object.prototype&&o!==null?!1:Object.values(e).every(Wt)}import{jsx as Ct}from"react/jsx-runtime";var Ft=wt(null),ln=wt(null),io=wt(null),so=wt(null),ao=wt(Kt),lo=wt({}),gt=()=>ct(lo),co=wt(sn),qt=()=>ct(co),Mn=class{listeners={};subscribe(t,o){return this.listeners[t]||(this.listeners[t]=[]),this.listeners[t].push(o),()=>{this.listeners[t]=this.listeners[t].filter(r=>r!==o)}}publish(t,o){this.listeners[t]&&this.listeners[t].forEach(r=>r(o))}},At={type:"leaf",id:"group-default",panels:[],activePanelId:null};function uo(e,t){let o=t.panels[e];if(!o||o.state==="minimized")return!1;if(t.floating.some(c=>c.id===e))return!0;let r=c=>c.type==="leaf"?c.activePanelId===e:c.children.some(r);return t.gridRoot?r(t.gridRoot):!1}function Sn(e){let t=s=>s!==null&&!!e.panels[s]&&e.panels[s].state!=="minimized",o=s=>{if(s.type==="leaf")return t(s.activePanelId)?s.activePanelId:null;for(let S of s.children){let h=o(S);if(h)return h}return null},r=e.gridRoot?o(e.gridRoot):null;if(r)return r;let c=null;for(let s of e.floating)t(s.id)&&(!c||s.z>c.z)&&(c=s);return c?.id??null}function vr(e,t){let o=[],r=new Set,c=h=>{if(h.type==="leaf"){let d=h.panels.filter(T=>r.has(T)?(o.push(`panel "${T}" was listed in more than one group`),!1):(r.add(T),!0));if(d.length===h.panels.length)return h;if(d.length===0&&!h.keepOnEmpty)return null;let R=h.activePanelId&&d.includes(h.activePanelId)?h.activePanelId:d[0]??null;return{...h,panels:d,activePanelId:R}}let y=h.children.map(c).filter(d=>d!==null);if(y.length===h.children.length&&y.every((d,R)=>d===h.children[R]))return h;if(y.length===0)return null;if(y.length===1)return y[0];let P=h.sizes.slice(0,y.length),C=P.reduce((d,R)=>d+R,0)||1;return{...h,children:y,sizes:P.map(d=>d/C)}},s=c(e)||At,S=Object.values(t).filter(h=>h.state==="docked"&&!r.has(h.id));if(S.length>0){let h=y=>{if(y.type==="leaf"){let P=S.map(C=>C.id);return{...y,panels:[...y.panels,...P],activePanelId:y.activePanelId??P[0]}}return{...y,children:[h(y.children[0]),...y.children.slice(1)]}};for(let y of S)o.push(`panel "${y.id}" is docked but was in no group`);s=h(s)}return{gridRoot:s,repairs:o}}function po(e){if(!e||!e.gridRoot||!Array.isArray(e.floating)||!Array.isArray(e.minimized)||!e.panels)return null;let t=e.floating.map(h=>{if("stickyRight"in h||"stickyBottom"in h){let y=h.stickyRight&&h.stickyBottom?"bottom-right":h.stickyRight?"top-right":h.stickyBottom?"bottom-left":null,{stickyRight:P,stickyBottom:C,...d}=h;return{...d,anchor:y}}return h}),o=vr(e.gridRoot,e.panels);o.repairs.length>0&&process.env.NODE_ENV==="development"&&console.warn(`[react-dockable-desktop] Repaired the saved layout on load: ${o.repairs.join("; ")}. Layouts saved by versions before 6.3.1 can contain this \u2014 dropping a lone docked panel onto its own group duplicated it \u2014 and the repair is applied every time it is read, so saving again from this session stores the corrected layout.`);let r=o.gridRoot,c={gridRoot:r,floating:t,panels:e.panels},s=typeof e.activePanelId=="string"?e.activePanelId:null,S=null;return s!==null&&(uo(s,c)?S=s:process.env.NODE_ENV==="development"&&console.warn(`[react-dockable-desktop] Ignoring the saved layout's activePanelId ("${s}") \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.`)),S===null&&(S=Sn(c)),{gridRoot:r,floating:t,minimized:e.minimized,panels:e.panels,activePanelId:S}}function yr(e){if(e)try{let t=po(JSON.parse(e));if(t)return t}catch{}return{gridRoot:At,floating:[],minimized:[],panels:{},activePanelId:null}}var Tn=({children:e,client:t,formatMessage:o,predefinedMessages:r,dir:c,modalClass:s,modalBodyClass:S,sidePanelClass:h,sidePanelBodyClass:y,windowClass:P,windowBodyClass:C,zIndexBase:d})=>{let R=et(t?.registry??sn).current,T=t?.config.formatMessage??o,D=t?.config.predefinedMessages??r,A=t?.config.dir??c,g=t?.config.zIndexBase??d??1e3,[w,x]=hr(()=>({...yr(t?.initialState??null),draggedPanelId:null,dir:A||"ltr",isRtl:A==="rtl",splitRatio:Math.min(.9,Math.max(.1,t?.config.defaultSplitRatio??.5)),edgeSplitRatio:Math.min(.9,Math.max(.1,t?.config.defaultEdgeSplitRatio??.2))})),W=et(w);W.current=w;let b=et(new Set);Ot(()=>{b.current.forEach(i=>i())},[w]);let k=oe(()=>W.current,[]),F=oe(i=>(b.current.add(i),()=>b.current.delete(i)),[]),z=et({}),u=et({}),N=an(()=>({...Kt,...D}),[D]),O=et(new Mn),Y=et(g);Ot(()=>(document.documentElement.style.setProperty("--rdd-z-base",String(g)),()=>{document.documentElement.style.removeProperty("--rdd-z-base")}),[g]);let q=oe((i,f)=>O.current.subscribe(i,f),[]),U=oe((i,f)=>{O.current.publish(i,f)},[]),Q=oe((i,f)=>{let p=typeof i.x=="string"?parseFloat(i.x):i.x,n=typeof i.y=="string"?parseFloat(i.y):i.y,l=typeof i.width=="string"?parseFloat(i.width):i.width,a=typeof i.height=="string"?parseFloat(i.height):i.height;isNaN(p)&&(p=300),isNaN(n)&&(n=150),isNaN(l)&&(l=450),isNaN(a)&&(a=350);let m=M=>f.some(_=>{let K=typeof _.x=="string"?parseFloat(_.x):_.x,H=typeof _.y=="string"?parseFloat(_.y):_.y;return!_.maximized&&Math.abs(K-M.x)<20&&Math.abs(H-M.y)<20}),E=0;for(;m({x:p,y:n})&&E<10;)p+=30,n+=30,E++;let I=Math.max(100,window.innerWidth||1024),v=Math.max(100,window.innerHeight||768);return(p+l>I||n+a>v)&&(p=100+E%5*30,n=100+E%5*30),p=Math.max(0,Math.min(p,I-100)),n=Math.max(0,Math.min(n,v-40)),{x:p,y:n,width:l,height:a}},[]),ge=oe(i=>{x(f=>{let p=f.panels[i];if(!p)return f;if(p.state==="floating"){let n=f.floating.find(a=>a.id===i);if(!n)return f;let l=!f.floating.some(a=>a.z>n.z);return l&&f.activePanelId===i?f:(l||(Y.current+=1),{...f,floating:f.floating.map(a=>a.id===i?{...a,z:l?n.z:Y.current}:a),activePanelId:i})}else if(p.state==="docked"){if(f.activePanelId===i)return f;let n=l=>l.type==="leaf"?l.panels.includes(i)?{...l,activePanelId:i}:l:{...l,children:l.children.map(n)};return{...f,gridRoot:n(f.gridRoot),activePanelId:i}}return f.activePanelId===i?f:{...f,activePanelId:i}})},[]),ee=(i,f)=>{if(i.type==="leaf"){let p=i.panels.indexOf(f);if(p===-1)return i;let n=i.panels.filter(m=>m!==f),l=i.activePanelId===f?n[p]||n[p-1]||n[0]||null:i.activePanelId,a={...i,panels:n,activePanelId:l};return n.length===0&&!i.keepOnEmpty?null:a}else{let p=i.children.map(a=>ee(a,f)).filter(a=>a!==null);if(p.length===0)return null;if(p.length===1)return p[0];let n=i.sizes.slice(0,p.length),l=n.reduce((a,m)=>a+m,0);return{...i,children:p,sizes:n.map(a=>a/l)}}},G=(i,f,p)=>{if(i.type==="leaf"){if(i.id===f){let n=i.panels.includes(p)?i.panels:[...i.panels,p];return{...i,panels:n,activePanelId:p}}return i}else return{...i,children:i.children.map(n=>G(n,f,p))}},j=(i,f,p)=>i.type==="leaf"?i.id===f&&i.panels.length===1&&i.panels[0]===p:i.children.some(n=>j(n,f,p)),B=(i,f)=>i.type==="leaf"?i.id===f:i.children.some(p=>B(p,f)),$=i=>{if(i.type==="leaf")return i.id;for(let f of i.children){let p=$(f);if(p)return p}return null},re=oe((i,f,p)=>{let n=i;if(p?.dedupeKey!==void 0){let v=Object.values(W.current.panels).find(M=>M.component===f&&M.dedupeKey===p.dedupeKey);v&&(n=v.id)}let l=!(n in W.current.panels),a=n!==i,m=p?.focus!==!1,I=p?.props!==void 0?Wt(p.props):!0;x(v=>{let M=v.panels[n],_=R.get(f),K=p?.title||p?.title||_?.defaultOptions?.title||n,H=p?.initialTarget||_?.defaultOptions?.initialTarget||"docked",Z=_?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350},ne=m?n:v.activePanelId;if(M)if(M.state==="minimized"){let de=v.minimized.filter(ve=>ve.id!==n);if(H==="floating"||!v.gridRoot){Y.current+=1;let ve=Q(Z,v.floating);return{...v,minimized:de,floating:[...v.floating,{...ve,id:n,z:Y.current}],panels:{...v.panels,[n]:{...M,state:"floating"}},activePanelId:ne}}else{let ve=$(v.gridRoot)||"group-default";return{...v,minimized:de,gridRoot:G(v.gridRoot,ve,n),panels:{...v.panels,[n]:{...M,state:"docked"}},activePanelId:ne}}}else{if(M.state==="floating")return m&&ge(n),v;{let de=ve=>ve.type==="leaf"?ve.panels.includes(n)?{...ve,activePanelId:n}:ve:{...ve,children:ve.children.map(de)};return{...v,gridRoot:de(v.gridRoot),activePanelId:ne}}}let me={id:n,title:K,component:f,state:H==="tabbed"?"docked":H,props:p?.props,serializable:I,dedupeKey:p?.dedupeKey},_e={...v.panels,[n]:me};if(H==="floating"){Y.current+=1;let de=Q(Z,v.floating),ve=p?.anchor??_?.defaultOptions?.defaultAnchor??null;return{...v,floating:[...v.floating,{...de,id:n,z:Y.current,anchor:ve}],panels:_e,activePanelId:ne}}else{let de=$(v.gridRoot)||"group-default";return{...v,gridRoot:G(v.gridRoot,de,n),panels:_e,activePanelId:ne}}}),l&&O.current.publish("panel:opened",{id:n,component:f}),(l||a)&&O.current.publish("layout:changed",{})},[Q,ge]),ue=oe(i=>{let f=i in W.current.panels;x(p=>{let n=p.panels[i];if(!n||R.get(n.component)?.defaultOptions?.canClose===!1)return p;delete z.current[i],delete u.current[i];let a={...p.panels};delete a[i];let m=ee(p.gridRoot,i)||{type:"leaf",id:"group-default",panels:[],activePanelId:null},E=p.floating.filter(v=>v.id!==i),I=p.activePanelId===i?Sn({gridRoot:m,floating:E,panels:a}):p.activePanelId;return{...p,gridRoot:m,floating:E,minimized:p.minimized.filter(v=>v.id!==i),panels:a,activePanelId:I}}),f&&(O.current.publish("panel:closed",{id:i}),O.current.publish("layout:changed",{}))},[]),ze=oe((i,f)=>{z.current[i]=f},[]),X=oe(i=>{delete z.current[i]},[]),Ae=oe((i,f)=>{u.current[i]=f},[]),Ge=oe(i=>{delete u.current[i]},[]),Ye=oe((i,f,p)=>{x(n=>{let l=n.panels[i];return l?{...n,panels:{...n.panels,[i]:{...l,dirty:f,dirtyOptions:p}}}:n})},[]),Be=oe((i,f)=>{x(p=>{let n=p.panels[i];return n?{...p,panels:{...p.panels,[i]:{...n,title:f}}}:p})},[]),rt=oe(async(i,f)=>{if(f?.force){ue(i);return}let p=z.current[i];if(p&&!await p())return;let n=W.current.panels[i];if(n?.dirty)if(f?.onConfirm){if(!await f.onConfirm(n.dirtyOptions))return}else return;ue(i)},[ue]),it=oe(i=>{let f=W.current.panels[i]?.state!=="minimized"&&i in W.current.panels;x(p=>{let n=p.panels[i];if(!n||n.state==="minimized"||R.get(n.component)?.defaultOptions?.canMinimize===!1)return p;let a,m;if(n.state==="floating"){let _=p.floating.find(K=>K.id===i);_&&(a={x:Number(_.x),y:Number(_.y),width:Number(_.width),height:Number(_.height),anchor:_.anchor??null})}else if(n.state==="docked"){let _=K=>{if(K.type==="leaf")return K.panels.includes(i)?K.id:null;for(let H of K.children){let Z=_(H);if(Z)return Z}return null};m=_(p.gridRoot)??void 0}let E=ee(p.gridRoot,i)||{type:"leaf",id:"group-default",panels:[],activePanelId:null},I=p.floating.filter(_=>_.id!==i),v={...p.panels,[i]:{...n,state:"minimized",previousState:n.state,lastFloatingRect:a,lastLeafId:m}},M=p.activePanelId===i?Sn({gridRoot:E,floating:I,panels:v}):p.activePanelId;return{...p,gridRoot:E,floating:I,minimized:[...p.minimized,{id:i,title:n.title,component:n.component}],panels:v,activePanelId:M}}),f&&(O.current.publish("panel:minimized",{id:i}),O.current.publish("layout:changed",{}))},[]),st=oe((i,f)=>{let p=W.current.panels[i]?.state==="minimized",n=f?.focus!==!1;x(l=>{let a=l.panels[i];if(!a||a.state!=="minimized")return l;let m=l.minimized.filter(v=>v.id!==i),E=a.previousState||"docked",I=n?i:l.activePanelId;if(E==="floating"){Y.current+=1;let v=R.get(a.component),M=a.lastFloatingRect||v?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350},_=Q(M,l.floating);return{...l,minimized:m,floating:[...l.floating,{..._,id:i,z:Y.current,anchor:a.lastFloatingRect?.anchor??null}],panels:{...l.panels,[i]:{...a,state:"floating"}},activePanelId:I}}else{let v=(H,Z)=>H.type==="leaf"?H.id===Z:H.children.some(ne=>v(ne,Z)),M=a.lastLeafId&&v(l.gridRoot,a.lastLeafId),_=R.get(a.component),K=_?.defaultOptions?.canDrag!==!1;if(M)return{...l,minimized:m,gridRoot:G(l.gridRoot,a.lastLeafId,i),panels:{...l.panels,[i]:{...a,state:"docked"}},activePanelId:I};if(K){Y.current+=1;let H=a.lastFloatingRect||_?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350},Z=Q(H,l.floating);return{...l,minimized:m,floating:[...l.floating,{...Z,id:i,z:Y.current,anchor:a.lastFloatingRect?.anchor??null}],panels:{...l.panels,[i]:{...a,state:"floating"}},activePanelId:I}}else{let H=$(l.gridRoot)||"group-default";return{...l,minimized:m,gridRoot:G(l.gridRoot,H,i),panels:{...l.panels,[i]:{...a,state:"docked"}},activePanelId:I}}}}),p&&(O.current.publish("panel:restored",{id:i}),O.current.publish("layout:changed",{}))},[Q]),Je=oe((i,f,p)=>{x(n=>{let l=n.panels[i];if(!l||R.get(l.component)?.defaultOptions?.canDrag===!1)return n;let m=R.get(l.component),E=f||m?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350},I=ee(n.gridRoot,i);Y.current+=1;let v=Q(E,n.floating);return{...n,gridRoot:I||{type:"leaf",id:"group-default",panels:[],activePanelId:null},floating:[...n.floating,{...v,id:i,z:Y.current,anchor:p??null}],panels:{...n.panels,[i]:{...l,state:"floating"}}}})},[Q]),Qe=oe((i,f)=>{x(p=>{let n=p.panels[i];if(!n)return p;let l=p.floating.filter(I=>I.id!==i),a=ee(p.gridRoot,i)||At,E=(f&&B(a,f)?f:void 0)||$(a)||At.id;return{...p,gridRoot:G(a,E,i),floating:l,panels:{...p.panels,[i]:{...n,state:"docked"}}}})},[]),ye=(i,f,p,n,l)=>{if(i.type==="leaf"){if(i.id===f){let a={type:"leaf",id:`group-split-${Date.now()}-${Math.floor(Math.random()*1e3)}`,panels:[p],activePanelId:p},m=n==="left"||n==="right"?"horizontal":"vertical",E=n==="left"||n==="top"?[a,i]:[i,a],I=n==="left"||n==="top"?[l,1-l]:[1-l,l];return{type:"branch",orientation:m,sizes:I,children:E}}return i}else return{...i,children:i.children.map(a=>ye(a,f,p,n,l))}},te=oe(i=>{x(f=>({...f,draggedPanelId:i}))},[]),le=oe((i,f,p)=>{x(n=>{let l=n.panels[i];if(!l||j(n.gridRoot,f,i))return n;if(!B(n.gridRoot,f))return process.env.NODE_ENV==="development"&&console.warn(`[react-dockable-desktop] dockPanelToGroup("${i}", "${f}") was ignored: no group with that id is in the layout. Emptying a group removes it, so an id held across a layout change can name a group that no longer exists.`),n;let a=n.floating.filter(I=>I.id!==i),m=ee(n.gridRoot,i)||At,E;return p==="center"?E=G(m,f,i):E=ye(m,f,i,p,n.splitRatio),{...n,gridRoot:E,floating:a,panels:{...n.panels,[i]:{...l,state:"docked"}},draggedPanelId:null}})},[]),$e=oe((i,f)=>{x(p=>{let n=p.panels[i];if(!n)return p;let l=p.floating.filter(_=>_.id!==i),a=ee(p.gridRoot,i);if(a===null)return p;let m={type:"leaf",id:`group-edge-${Date.now()}-${Math.floor(Math.random()*1e3)}`,panels:[i],activePanelId:i},E=f==="left"||f==="right"?"horizontal":"vertical",I=f==="left"||f==="top"?[m,a]:[a,m],v=p.edgeSplitRatio,M={type:"branch",orientation:E,sizes:f==="left"||f==="top"?[v,1-v]:[1-v,v],children:I};return{...p,gridRoot:M,floating:l,panels:{...p.panels,[i]:{...n,state:"docked"}},draggedPanelId:null}})},[]),Fe=oe((i,f,p)=>{x(n=>{let l=n.panels[i];if(!l||j(n.gridRoot,f,i))return n;if(!B(n.gridRoot,f))return process.env.NODE_ENV==="development"&&console.warn(`[react-dockable-desktop] movePanelOrder("${i}", "${f}") was ignored: no group with that id is in the layout.`),n;let a=ee(n.gridRoot,i),m=v=>{if(v.type==="leaf"){if(v.id===f){let M=v.panels.filter(H=>H!==i),_=Math.max(0,Math.min(p,M.length)),K=[...M];return K.splice(_,0,i),{...v,panels:K,activePanelId:i}}return v}else return{...v,children:v.children.map(m)}},E=m(a||At),I=n.floating.filter(v=>v.id!==i);return{...n,gridRoot:E,floating:I,panels:{...n.panels,[i]:{...l,state:"docked"}},draggedPanelId:null}})},[]),V=oe(i=>{x(f=>{let p=l=>{if(l.type==="leaf")return l.id===i&&l.canClose!==!1?null:l;{let a=l.children.map(I=>p(I)).filter(I=>I!==null);if(a.length===0)return null;if(a.length===1)return a[0];let m=l.sizes.slice(0,a.length),E=m.reduce((I,v)=>I+v,0);return{...l,children:a,sizes:m.map(I=>I/E)}}},n=p(f.gridRoot);return{...f,gridRoot:n||{type:"leaf",id:"group-default",panels:[],activePanelId:null}}})},[]),J=oe(i=>{x(f=>({...f,floating:f.floating.map(p=>p.id===i?{...p,maximized:!p.maximized}:p)}))},[]),ae=oe((i,f)=>{let p=(n,l)=>{if(n.type==="leaf")return n;if(l===i.length)return{...n,sizes:f};let a=i[l],m=n.children.map((E,I)=>I===a?p(E,l+1):E);return{...n,children:m}};x(n=>({...n,gridRoot:p(n.gridRoot,0)}))},[]),fe=oe((i,f)=>{x(p=>({...p,floating:p.floating.map(n=>n.id===i?{...n,...f}:n)}))},[]),we=oe(()=>{let i=W.current.panels,f=[],p={};for(let[v,M]of Object.entries(i)){let _=u.current[v],K=_?.(),H=_!==void 0&&K!==void 0,Z=H?K:M.props,ne=H?Wt(K):M.serializable;ne?p[v]=H?{...M,props:Z,serializable:ne}:M:f.push(v)}let n=W.current.gridRoot,l=W.current.floating,a=W.current.minimized;for(let v of f)n=ee(n,v)||{type:"leaf",id:"group-default",panels:[],activePanelId:null},l=l.filter(M=>M.id!==v),a=a.filter(M=>M.id!==v);f.length>0&&O.current.publish("layout:panels-excluded",{panels:f.map(v=>({id:v,component:i[v].component}))});let m=W.current.activePanelId,E=m!==null&&uo(m,{gridRoot:n,floating:l,panels:p})?m:null,I={version:2,...E!==null?{activePanelId:E}:{},gridRoot:n,floating:l,minimized:a,panels:p};return JSON.stringify(I)},[]),Re=oe(i=>{try{let f=po(JSON.parse(i));return f?(x(p=>({...p,gridRoot:f.gridRoot,floating:f.floating,minimized:f.minimized,panels:f.panels,draggedPanelId:null,activePanelId:f.activePanelId})),!0):!1}catch(f){return console.error("Failed to parse layout configuration:",f),!1}},[]),De=oe(i=>{x(f=>f.activePanelId===i?f:{...f,activePanelId:i})},[]),Me=oe(i=>{x(f=>f.dir===i?f:{...f,dir:i,isRtl:i==="rtl"})},[]),Se=oe(i=>i in W.current.panels,[]),be=oe(()=>Object.keys(W.current.panels),[]),dt=oe((i,f)=>Object.values(W.current.panels).find(n=>n.component===i&&n.dedupeKey===f)?.id??null,[]);Ot(()=>{A&&x(i=>i.dir===A?i:{...i,dir:A,isRtl:A==="rtl"})},[A]);let Te=et(new Map),ke=et(null),We=oe(i=>(ke.current=i,()=>{ke.current=null}),[]),Ee=oe(i=>{ke.current?.(i)},[]),Xe=oe((i,f)=>(Te.current.set(i,f),()=>{Te.current.delete(i)}),[]),Ie=oe(i=>Te.current.get(i)?.()??[],[]),Pt=an(()=>({openPanel:re,closePanel:ue,minimizePanel:it,restorePanel:st,floatPanel:Je,dockPanel:Qe,maximizePanel:J,updateSplitSizes:ae,updateFloatingPosition:fe,focusPanel:ge,isOpen:Se,getOpenPanelIds:be,findPanelId:dt,saveLayout:we,loadLayout:Re,publish:U,subscribe:q,setDraggedPanelId:te,dockPanelToGroup:le,movePanelOrder:Fe,closeLeafGroup:V,registerCloseGuard:ze,unregisterCloseGuard:X,registerStateProvider:Ae,unregisterStateProvider:Ge,setPanelDirty:Ye,updatePanelTitle:Be,requestClosePanel:rt,dockPanelToWorkspaceEdge:$e,setActivePanel:De,setDirection:Me,registerPanelContextMenu:Xe,getPanelContextMenuItems:Ie,showContextMenu:Ee,registerContextMenuFn:We}),[re,ue,it,st,Je,Qe,J,ae,fe,ge,Se,be,dt,we,Re,U,q,te,le,Fe,V,ze,X,Ae,Ge,Ye,Be,rt,$e,De,Me,Xe,Ie,Ee,We]),Vt=i=>{let f=i.defaultMessage||i.id;return i.values&&Object.entries(i.values).forEach(([p,n])=>{f=f.replace(`{${p}}`,String(n))}),f},Ve=an(()=>({modalClass:s,modalBodyClass:S,sidePanelClass:h,sidePanelBodyClass:y,windowClass:P,windowBodyClass:C}),[s,S,h,y,P,C]);Ot(()=>{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{}},[]),Wt(()=>{if(t)return t._connect(Ye),()=>{t._disconnect()}},[t,Ye]);let Xt=sn(()=>({getSnapshot:R,subscribeToState:H}),[R,H]);return xt(ao.Provider,{value:Yt,children:xt(lo.Provider,{value:k,children:xt(io.Provider,{value:Xt,children:xt(At.Provider,{value:C,children:xt(an.Provider,{value:Ye,children:xt(ro.Provider,{value:T||Oe,children:xt(so.Provider,{value:E,children:e})})})})})})})},oo=e=>()=>{};function je(e){let t=ct(At),n=ct(io),o=et(e);o.current=e;let a=hr(e?n?.subscribeToState??oo:oo,()=>{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 qt=()=>{let e=ct(an);if(!e)throw new Error("useWindowManagerActions must be used within WindowManagerProvider");return e},Tn=()=>{let e=ct(an);if(!e)throw new Error("useWindowManagerActionsInternal must be used within WindowManagerProvider");return e},Ke=()=>ct(ro)||(t=>{let n=t.defaultMessage||t.id;return t.values&&Object.entries(t.values).forEach(([o,a])=>{n=n.replace(`{${o}}`,String(a))}),n}),ge=(e,t)=>e?typeof e=="string"?e:t(e):"",yr=()=>{let{publish:e,subscribe:t}=qt();return{publish:e,subscribe:t}},Ze=()=>ct(so),ln=()=>zt().instanceId;function Pr(e){let t=ct(an),n=ln(),o=et(e);o.current=e,Wt(()=>{if(!(!t?.registerPanelContextMenu||!n))return t.registerPanelContextMenu(n,()=>o.current)},[n,t?.registerPanelContextMenu])}import Zt,{forwardRef as mo,useImperativeHandle as xr,useState as po,useRef as jt,useEffect as go,useLayoutEffect as ho}from"react";import{createPortal as bo}from"react-dom";import{Fragment as Rr,jsx as xe,jsxs as wt}from"react/jsx-runtime";function Cr(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 Ot(e,t){return typeof e=="string"?e:t?t(e):e.defaultMessage??e.id}function kn(e){return"separator"in e}function dn(e){return!kn(e)&&"items"in e}var vo=mo(({items:e,x:t,y:n,theme:o,fmt:a,onClose:s,onMouseEnter:I,onMouseLeave:M},x)=>(ho(()=>{let y=x?.current;if(!y)return;let w=y.getBoundingClientRect(),c=8;w.right>window.innerWidth-c&&(y.style.left=`${Math.max(c,window.innerWidth-w.width-c)}px`,y.style.right="auto"),w.bottom>window.innerHeight-c&&(y.style.top=`${Math.max(c,window.innerHeight-w.height-c)}px`),w.left<c&&(y.style.left=`${c}px`,y.style.right="auto"),w.top<c&&(y.style.top=`${c}px`)}),bo(xe("div",{ref:x,className:`rdd-context-menu rdd-context-menu--${o} rdd-context-menu--submenu`,style:{position:"fixed",left:t,top:n},role:"menu",onMouseEnter:I,onMouseLeave:M,children:e.map((y,w)=>{if(kn(y))return xe("hr",{className:"rdd-context-menu__separator",role:"separator"},w);let c=y,k=c.checkbox&&c.checkbox.active!==!1,T=k&&c.checkbox.value,A=c.disabled===!0||(k?c.checkbox.enabled===!1:!1);return wt("button",{type:"button",className:`rdd-context-menu__item${A?" rdd-context-menu__item--disabled":""}`,title:c.title?Ot(c.title,a):void 0,disabled:A,"data-cy-action":c.cyAction,onClick:()=>{A||(c.action?.(),s())},role:"menuitem","aria-checked":k?T:void 0,children:[c.icon?xe("span",{className:"rdd-context-menu__icon",children:c.icon}):xe("span",{className:"rdd-context-menu__icon","aria-hidden":"true"}),xe("span",{className:"rdd-context-menu__label",children:Ot(c.label,a)}),k&&xe("span",{className:`rdd-context-menu__checkbox${T?" rdd-context-menu__checkbox--checked":""}`,"aria-hidden":"true",children:wt("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[xe("rect",{x:"0.75",y:"0.75",width:"10.5",height:"10.5",rx:"2",fill:"none",stroke:"currentColor",strokeWidth:"1.5"}),T&&xe("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)));vo.displayName="ContextMenuSubMenuPanel";var fo={visible:!1,x:0,y:0,items:[]},In=mo(({theme:e="dark",formatMessageProvider:t,onShow:n,onHide:o,onOpenChange:a,className:s,style:I},M)=>{let[x,y]=po(fo),[w,c]=po(null),k=jt(null),T=jt(null),A=jt(new Map),_=jt({open:null,close:null}),u=Zt.useCallback(()=>{y(fo),c(null),_.current.open&&clearTimeout(_.current.open),_.current.close&&clearTimeout(_.current.close),_.current.open=null,_.current.close=null,o?.(),a?.(!1)},[o,a]);if(xr(M,()=>({show({event:l,x:E,y:F,items:X}){let Z=l?Cr(l):{x:E??0,y:F??0};A.current.clear(),y({visible:!0,x:Z.x,y:Z.y,items:X}),c(null),n?.(),a?.(!0)}}),[n,a]),go(()=>{if(!x.visible)return;let l=E=>{k.current?.contains(E.target)||T.current?.contains(E.target)||u()};return document.addEventListener("pointerdown",l,{capture:!0}),window.addEventListener("click",l),()=>{document.removeEventListener("pointerdown",l,{capture:!0}),window.removeEventListener("click",l)}},[x.visible,u]),go(()=>{if(!x.visible)return;let l=E=>{E.key==="Escape"&&u()};return document.addEventListener("keydown",l),()=>document.removeEventListener("keydown",l)},[x.visible,u]),ho(()=>{if(!x.visible||!k.current)return;let l=k.current,E=l.getBoundingClientRect(),F=8;E.right>window.innerWidth-F&&(l.style.left=`${Math.max(F,window.innerWidth-E.width-F)}px`),E.bottom>window.innerHeight-F&&(l.style.top=`${Math.max(F,window.innerHeight-E.height-F)}px`),E.left<F&&(l.style.left=`${F}px`),E.top<F&&(l.style.top=`${F}px`)},[x.visible]),!x.visible)return null;let C=t,P=0,O=0;if(w!==null){let l=A.current.get(w);if(l){let E=l.getBoundingClientRect();P=document.documentElement.dir==="rtl"?window.innerWidth-E.left+2:E.right+2,O=E.top}}function m(){_.current.open&&(clearTimeout(_.current.open),_.current.open=null)}function R(){_.current.close&&(clearTimeout(_.current.close),_.current.close=null)}function H(l,E){R(),w!==null&&w!==l&&(m(),c(null)),dn(E)&&E.items?.length?(m(),_.current.open=setTimeout(()=>{c(l)},150)):dn(E)||(m(),w!==null&&(_.current.close=setTimeout(()=>c(null),200)))}function D(l){m(),dn(l)&&l.items?.length&&(_.current.close=setTimeout(()=>c(null),200))}return bo(wt(Rr,{children:[xe("div",{ref:k,className:`rdd-context-menu rdd-context-menu--${e}${s?` ${s}`:""}`,style:{position:"fixed",left:x.x,top:x.y,...I},role:"menu","aria-orientation":"vertical",children:x.items.map((l,E)=>{if(kn(l))return xe("hr",{className:"rdd-context-menu__separator",role:"separator"},E);if(dn(l))return wt("button",{ref:Q=>{A.current.set(E,Q)},type:"button",className:`rdd-context-menu__item rdd-context-menu__item--has-submenu${w===E?" rdd-context-menu__item--submenu-open":""}`,title:l.title?Ot(l.title,C):void 0,onMouseEnter:()=>H(E,l),onMouseLeave:()=>D(l),role:"menuitem","aria-haspopup":"true","aria-expanded":w===E,children:[xe("span",{className:"rdd-context-menu__icon","aria-hidden":"true"}),xe("span",{className:"rdd-context-menu__label",children:Ot(l.label,C)}),xe("span",{className:"rdd-context-menu__chevron","aria-hidden":"true",children:"\u203A"})]},E);let F=l,X=F.checkbox&&F.checkbox.active!==!1,Z=X&&F.checkbox.value,U=F.disabled===!0||(X?F.checkbox.enabled===!1:!1);return wt("button",{ref:Q=>{A.current.set(E,Q)},type:"button",className:`rdd-context-menu__item${U?" rdd-context-menu__item--disabled":""}`,title:F.title?Ot(F.title,C):void 0,disabled:U,"data-cy-action":F.cyAction,onClick:()=>{U||(F.action?.(),u())},onMouseEnter:()=>H(E,l),onMouseLeave:()=>D(l),role:"menuitem","aria-checked":X?Z:void 0,children:[F.icon?xe("span",{className:"rdd-context-menu__icon",children:F.icon}):xe("span",{className:"rdd-context-menu__icon","aria-hidden":"true"}),xe("span",{className:"rdd-context-menu__label",children:Ot(F.label,C)}),X&&xe("span",{className:`rdd-context-menu__checkbox${Z?" rdd-context-menu__checkbox--checked":""}`,"aria-hidden":"true",children:wt("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[xe("rect",{x:"0.75",y:"0.75",width:"10.5",height:"10.5",rx:"2",fill:Z?"currentColor":"none",stroke:"currentColor",strokeWidth:"1.5"}),Z&&xe("path",{d:"M2.5 6 L4.5 8.5 L9.5 3.5",stroke:"white",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})]})})]},E)})}),w!==null&&(()=>{let l=x.items[w];return xe(vo,{ref:T,items:l.items??[],x:P,y:O,theme:e,fmt:C,onClose:u,onMouseEnter:()=>R(),onMouseLeave:()=>{_.current.close=setTimeout(()=>c(null),200)}})})()]}),document.body)});In.displayName="ContextMenu";var Ft={Component:In},_t=Zt.createContext(null),En=({adapter:e=Ft,children:t,...n})=>{let o=jt(null),[a,s]=Zt.useState(!1),I=Zt.useCallback(M=>{o.current?.show(M)},[]);return wt(_t.Provider,{value:{show:I,isOpen:a},children:[t,xe(e.Component,{ref:o,...n,onShow:()=>{s(!0),n.onShow?.()},onHide:()=>{s(!1),n.onHide?.()}})]})};function wr(){let e=Zt.useContext(_t);if(!e)throw new Error("useShowContextMenu must be used within a ContextMenuProvider");return e.show}import{createContext as xo,useContext as Co,useState as Mr,useCallback as tt,useMemo as Sr,useRef as Tr}from"react";import{jsx as Po}from"react/jsx-runtime";var kr=0,Ln=()=>`panel-${++kr}-${Date.now()}`,cn=new Map,yo={leftPanel:null,rightPanel:null,modals:[]},wo=xo(null),Ro=xo(null),zn=({children:e})=>{let[t,n]=Mr(yo),o=Tr(t);o.current=t;let a=tt((u,C)=>{cn.set(u,C)},[]),s=tt(u=>{cn.delete(u)},[]),I=tt(async(u,C,P={})=>{let O=o.current.leftPanel;if(O){let H=cn.get(O.id);if(H&&!await H())return null}let m=Ln(),R={id:m,Component:u,props:C,containerType:"left-panel",options:P};return n(H=>({...H,leftPanel:R})),m},[]),M=tt(async(u,C,P={})=>{let O=o.current.rightPanel;if(O){let H=cn.get(O.id);if(H&&!await H())return null}let m=Ln(),R={id:m,Component:u,props:C,containerType:"right-panel",options:P};return n(H=>({...H,rightPanel:R})),m},[]),x=tt((u,C,P={})=>{let O=Ln(),m=C.title,R={...P,title:P.title||m||"Confirmation"},H={id:O,Component:u,props:C,containerType:"modal",options:R};return n(D=>({...D,modals:[...D.modals,H]})),O},[]),y=tt(u=>{n(C=>({leftPanel:C.leftPanel?.id===u?null:C.leftPanel,rightPanel:C.rightPanel?.id===u?null:C.rightPanel,modals:C.modals.filter(P=>P.id!==u)}))},[]),w=tt(()=>{n(yo)},[]),c=tt(()=>{n(u=>({...u,modals:[]}))},[]),k=tt(u=>t.leftPanel?.id===u?t.leftPanel:t.rightPanel?.id===u?t.rightPanel:t.modals.find(C=>C.id===u),[t]),T=tt((u,C)=>{n(P=>({leftPanel:P.leftPanel?.id===u?{...P.leftPanel,...C}:P.leftPanel,rightPanel:P.rightPanel?.id===u?{...P.rightPanel,...C}:P.rightPanel,modals:P.modals.map(O=>O.id===u?{...O,...C}:O)}))},[]),A=tt((u,C,P)=>{T(u,{dirty:C,dirtyOptions:P})},[T]),_=Sr(()=>({openLeftPanel:I,openRightPanel:M,openModal:x,close:y,closeAll:w,closeAllModals:c,getInstance:k,updateInstance:T,setDirty:A,registerCloseHandler:a,unregisterCloseHandler:s}),[I,M,x,y,w,c,k,T,A,a,s]);return Po(wo.Provider,{value:t,children:Po(Ro.Provider,{value:_,children:e})})},gt=()=>{let e=Co(wo);if(!e)throw new Error("usePanelState must be used within PanelProvider");return e},Rt=()=>{let e=Co(Ro);if(!e)throw new Error("usePanelActions must be used within PanelProvider");return e};import{useEffect as Mo,useRef as Ir}from"react";import{jsx as Mt,jsxs as Nn}from"react/jsx-runtime";var Er=({title:e,message:t,alert:n,alertType:o="info",useYesNoTitles:a=!1,onOK:s,onCancel:I})=>{let{requestClose:M,setIcon:x,setTitle:y}=zt(),w=Ke(),c=Ze(),k=Ir(null);Mo(()=>{if(e){let P=typeof e=="string"?e:w(e);y(P)}x&&x(Mt("span",{children:"\u2753"}))},[e,y,x,w]),Mo(()=>{k.current?.focus({preventScroll:!0})},[]);let T=typeof t=="string"?t:w(t),A=w(a?c.no:c.cancel),_=w(a?c.yes:c.ok),u=P=>{P.preventDefault(),s?.(),M()},C=()=>{I?.(),M()};return Nn("form",{onSubmit:u,className:"rdd-confirmation-form-body",children:[n&&Nn("div",{className:`rdd-confirmation-alert rdd-confirmation-alert-${o}`,children:[Mt("span",{children:"\u2139\uFE0F"}),Mt("span",{children:n})]}),Mt("div",{style:{fontSize:"0.9rem",color:"inherit",lineHeight:1.5},children:T}),Mt("hr",{style:{marginTop:"0.5rem",marginBottom:"0.5rem",opacity:.1}}),Nn("div",{className:"rdd-confirmation-actions",children:[Mt("button",{type:"button",className:"rdd-btn rdd-btn-sm rdd-btn-outline",onClick:C,children:A}),Mt("button",{type:"submit",className:"rdd-btn rdd-btn-sm rdd-btn-primary",ref:k,children:_})]})]})},St=Er;function Ut(e){return e==="top-left"?"top-right":e==="top-right"?"top-left":e==="bottom-left"?"bottom-right":"bottom-left"}function ft(e){let{element:t,pointerId:n,startClientX:o,startClientY:a,captureStart:s,onMove:I,onEnd:M,activeClasses:x}=e;t.setPointerCapture(n),x?.forEach(({el:k,classes:T})=>k.classList.add(...T));let y=s(),w=k=>{I(k.clientX-o,k.clientY-a,y)},c=()=>{x?.forEach(({el:k,classes:T})=>k.classList.remove(...T)),t.removeEventListener("pointermove",w),t.removeEventListener("pointerup",c),t.removeEventListener("pointercancel",c),M?.(y)};t.addEventListener("pointermove",w),t.addEventListener("pointerup",c),t.addEventListener("pointercancel",c)}function Jt(e,t,n,o,a){let{minW:s,minH:I,maxW:M,maxH:x,minX:y,minY:w}=a,{x:c,y:k,w:T,h:A}=o;if(e.includes("e")&&(T=Math.max(s,Math.min(o.w+t,M??1/0))),e.includes("w")){let _=o.w-s,u=y!=null?-(o.x-y):-1/0,C=Math.max(u,Math.min(t,_));T=o.w-C,c=o.x+C}if(e.includes("s")&&(A=Math.max(I,Math.min(o.h+n,x??1/0))),e.includes("n")){let _=o.h-I,u=w!=null?-(o.y-w):-1/0,C=Math.max(u,Math.min(n,_));A=o.h-C,k=o.y+C}return{x:c,y:k,w:T,h:A}}import{useEffect as Lr,useState as zr}from"react";function Dn(){let[e,t]=zr(()=>document.documentElement.getAttribute("data-color-scheme")==="light"?"light":"dark");return Lr(()=>{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}import{Fragment as ko,jsx as S,jsxs as fe}from"react/jsx-runtime";var 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},Qt=new Map,un="preserved-dom-container",An=fe("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{display:"block"},children:[S("rect",{x:"3",y:"3",width:"7",height:"9",rx:"1"}),S("rect",{x:"14",y:"3",width:"7",height:"5",rx:"1"}),S("rect",{x:"14",y:"12",width:"7",height:"9",rx:"1"}),S("rect",{x:"3",y:"16",width:"7",height:"5",rx:"1"})]}),Ht={float:S("span",{className:"rdd-menu-icon",children:fe("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{display:"block"},children:[S("rect",{x:"2",y:"8",width:"14",height:"14",rx:"1"}),S("rect",{x:"8",y:"2",width:"14",height:"14",rx:"1"})]})}),minimize:S("span",{className:"rdd-menu-icon",children:S("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",style:{display:"block"},children:S("line",{x1:"4",y1:"18",x2:"20",y2:"18"})})}),restore:S("span",{className:"rdd-menu-icon",children:S("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{display:"block"},children:S("rect",{x:"4",y:"4",width:"16",height:"16",rx:"1"})})}),maximize:S("span",{className:"rdd-menu-icon",children:S("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{display:"block"},children:S("rect",{x:"2",y:"2",width:"20",height:"20",rx:"1"})})}),close:S("span",{className:"rdd-menu-icon",children:S("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{display:"block"},children:S("path",{d:"M18 6L6 18M6 6l12 12"})})})},Eo=e=>{let t=Qt.get(e);return t||(t=document.createElement("div"),t.style.width="100%",t.style.height="100%",Qt.set(e,t)),t},Nr=(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 } } })`),fe("div",{className:"rdd-unregistered-panel",style:{border:"2px dashed #dc3545"},children:[S("h6",{style:{fontWeight:700,marginBottom:"0.25rem"},children:"\u26A0\uFE0F Component Unregistered"}),fe("span",{style:{fontSize:"0.875rem",color:"var(--rdd-text-secondary, #94a3b8)"},children:["Key: ",o]})]});let s=a.Component;return S(s,{...t.props??{},panelId:e})},Fn=new Map,mt=new Map,Tt=e=>{let t=mt.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},mt.set(e,t)),t},Lo=({panelId:e})=>{let t=Fe(null);return we(()=>{let n=t.current;if(!n)return;let o=Eo(e);n.appendChild(o);let a=new ResizeObserver(s=>{for(let I of s){let{width:M,height:x}=I.contentRect;if(M>0&&x>0){Fn.set(e,{width:M,height:x});let y=mt.get(e);y&&y.onResize.forEach(w=>w(M,x))}}});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]),S("div",{ref:t,style:{width:"100%",height:"100%"}})},Dr=({panelId:e})=>{let t=je(),n=Kt(),o=Ke(),a=Fe(null),s=t.panels[e],I=s?n.get(s.component):null,M=I?.defaultOptions?.disableLivePreview||!1,x=Fn.get(e)||{width:800,height:500},y=x.width,w=x.height,T=Math.min(220/y,140/w);if(we(()=>{if(M)return;let A=a.current;if(!A)return;let _=Qt.get(e);if(_)return A.appendChild(_),()=>{let u=document.getElementById(un);u||(u=document.createElement("div"),u.id=un,u.style.display="none",document.body.appendChild(u)),u.appendChild(_)}},[e,M]),M){let A=y*T,_=w*T,u=s?.title||I?.defaultOptions?.title||"Panel",C=ge(u,o),P=(Array.from(C)[0]||"P").toUpperCase();return S("div",{className:"rdd-taskbar-item-preview-frame",style:{width:`${A}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:S("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:P})})}return S("div",{className:"rdd-taskbar-item-preview-frame",style:{width:`${y*T}px`,height:`${w*T}px`},children:S("div",{ref:a,className:"rdd-taskbar-item-preview-host",style:{width:`${y}px`,height:`${w}px`,transform:`scale(${T})`,transformOrigin:"top left",position:"absolute",top:0,left:0,"--rdd-preview-scale":T}})})},Wr=({panelId:e,children:t})=>{let n=je(),{requestClosePanel:o,setPanelDirty:a,registerCloseGuard:s,unregisterCloseGuard:I,registerStateProvider:M,unregisterStateProvider:x,updatePanelTitle:y,minimizePanel:w}=qt(),c=n.minimized.some(m=>m.id===e),k=Fe(c);we(()=>{let m=mt.get(e);m&&(c&&!k.current?m.onMinimize.forEach(R=>R()):!c&&k.current&&m.onRestore.forEach(R=>R()),k.current=c)},[c,e]);let T=n.activePanelId===e,A=Fe(T);we(()=>{let m=A.current;A.current=T;let R=mt.get(e);R&&(T&&!m?R.onActivate.forEach(H=>H()):!T&&m&&R.onDeactivate.forEach(H=>H()))},[T,e]);let _=n.panels[e]?.state,u=_==="floating"?"floating-window":"dockable-panel",C=Fe(u);we(()=>{if(_==="minimized")return;let m=C.current;C.current=u;let R=mt.get(e);R&&u!==m&&R.onContainerTypeChange.forEach(H=>H(u))},[u,_,e]),we(()=>()=>{let m=mt.get(e);m&&(A.current&&m.onDeactivate.forEach(R=>R()),m.onClose.forEach(R=>R()),mt.delete(e))},[e]);let P=Fe(u),O=On.useMemo(()=>({requestClose:m=>o(e,m),setDirty:m=>a(e,m),onCloseRequested:m=>(s(e,m),()=>I(e)),registerStateProvider:m=>(M(e,m),()=>x(e)),setTitle:m=>y(e,m),instanceId:e,containerType:P.current,onClose:m=>{let R=Tt(e);return R.onClose.add(m),()=>R.onClose.delete(m)},onMinimize:m=>{let R=Tt(e);return R.onMinimize.add(m),()=>R.onMinimize.delete(m)},onRestore:m=>{let R=Tt(e);return R.onRestore.add(m),()=>R.onRestore.delete(m)},onResize:m=>{let R=Tt(e);return R.onResize.add(m),()=>R.onResize.delete(m)},requestMinimize:()=>w(e),getDimensions:()=>Fn.get(e)??null,onActivate:m=>{let R=Tt(e);return R.onActivate.add(m),()=>R.onActivate.delete(m)},onDeactivate:m=>{let R=Tt(e);return R.onDeactivate.add(m),()=>R.onDeactivate.delete(m)},onContainerTypeChange:m=>{let R=Tt(e);return R.onContainerTypeChange.add(m),()=>R.onContainerTypeChange.delete(m)}}),[e,o,a,s,I,M,x,y,w]);return S(Pt,{value:O,children:t})},zo=({node:e,path:t,onTabRightClick:n,activeDropZone:o,onHoverDropZone:a,onTabDragStart:s,hoveredTab:I,onTabHover:M,defaultPanelIcon:x,onRequestClosePanel:y})=>{let{updateSplitSizes:w}=qt();if(e.type==="leaf")return S(Ar,{leaf:e,onTabRightClick:n,activeDropZone:o,onHoverDropZone:a,onTabDragStart:s,hoveredTab:I,onTabHover:M,defaultPanelIcon:x,onRequestClosePanel:y});let c=e.orientation==="horizontal",k=(T,A)=>{A.preventDefault();let _=A.currentTarget,u=_.parentElement,C=u?c?u.clientWidth:u.clientHeight:c?1e3:800;ft({element:_,pointerId:A.pointerId,startClientX:A.clientX,startClientY:A.clientY,captureStart:()=>[...e.sizes],activeClasses:[{el:_,classes:["rdd-active"]},{el:document.body,classes:["rdd-resizing-active",c?"rdd-resizing-col-active":"rdd-resizing-row-active"]}],onMove:(P,O,m)=>{let R=(c?P:O)/C,H=[...m];H[T]+=R,H[T+1]-=R,H[T]>.1&&H[T+1]>.1&&w(t,H)}})};return S("div",{style:{display:"flex",flexDirection:c?"row":"column",width:"100%",height:"100%",overflow:"hidden",position:"relative"},children:e.children.map((T,A)=>{let _=e.sizes[A]*100;return fe(On.Fragment,{children:[S("div",{style:{flexGrow:e.sizes[A],flexBasis:`${_}%`,overflow:"hidden",position:"relative",minWidth:0,minHeight:0},children:S(zo,{node:T,path:[...t,A],onTabRightClick:n,activeDropZone:o,onHoverDropZone:a,onTabDragStart:s,hoveredTab:I,onTabHover:M,defaultPanelIcon:x,onRequestClosePanel:y})}),A<e.children.length-1&&S("div",{onPointerDown:u=>k(A,u),style:{cursor:c?"col-resize":"row-resize",width:c?"1px":"100%",height:c?"100%":"1px",zIndex:20},className:"rdd-resizer-bar"})]},A)})})},Ar=({leaf:e,onTabRightClick:t,activeDropZone:n,onHoverDropZone:o,onTabDragStart:a,hoveredTab:s,onTabHover:I,defaultPanelIcon:M,onRequestClosePanel:x})=>{let y=je(),w=Kt(),{openPanel:c,closeLeafGroup:k,setActivePanel:T}=Tn(),A=Ke(),_=Ze(),{windowClass:u,windowBodyClass:C}=pt(),P=Fe(null),[O,m]=lt({left:!1,right:!1}),R=Wn(()=>{let l=P.current;l&&m({left:l.scrollLeft>0,right:l.scrollLeft<l.scrollWidth-l.clientWidth-1})},[]);we(()=>{let l=P.current;if(!l)return;l.addEventListener("scroll",R,{passive:!0});let E=new ResizeObserver(R);return E.observe(l),R(),()=>{l.removeEventListener("scroll",R),E.disconnect()}},[R]);let H=l=>{P.current?.scrollBy({left:l==="left"?-120:120,behavior:"smooth"})},D=l=>{c(l,y.panels[l].component),T(l)};return fe("div",{"data-active-panel-id":e.activePanelId||"",className:`rdd-workspace-panel ${u??""}`,style:{overflow:"hidden",position:"relative"},children:[fe("div",{className:"rdd-workspace-tab-bar",style:{minHeight:"38px"},children:[O.left&&S("button",{className:"rdd-tab-scroll-btn rdd-tab-scroll-btn-left",onPointerDown:l=>l.stopPropagation(),onClick:()=>H("left"),tabIndex:-1,"aria-label":"Scroll tabs left",children:"\u2039"}),S("div",{ref:P,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,E)=>{let F=y.panels[l];if(!F)return null;let X=e.activePanelId===l,Z=y.activePanelId===l,Q=w.get(F.component)?.defaultOptions,me=s&&s.leafId===e.id&&s.panelId===l,te=E===e.panels.length-1,G=s&&s.leafId===e.id&&s.panelId==="EMPTY"&&te,j=me?s.side==="left"?"rdd-drag-hover-left":"rdd-drag-hover-right":G?"rdd-drag-hover-right":"",V=X?Z?"rdd-active rdd-workspace-tab-active-focused":"rdd-active rdd-workspace-tab-active-unfocused":"rdd-workspace-tab-inactive";return fe("div",{"data-tab-id":l,"data-leaf-id":e.id,"data-tab-index":String(E),onClick:()=>D(l),onPointerDown:B=>{Q?.canDrag!==!1&&a(l,B)},onContextMenu:B=>t(l,B),onPointerMove:B=>{if(y.draggedPanelId&&B.pointerType!=="touch"){let se=B.currentTarget.getBoundingClientRect(),ze=B.clientX-se.left<se.width/2?"left":"right";I(e.id,l,E,ze)}},onPointerLeave:()=>{y.draggedPanelId&&I(e.id,"",-1,null)},className:`rdd-workspace-tab ${V} ${j}`,style:{cursor:Q?.canDrag===!1?"default":"pointer"},children:[fe("span",{className:"rdd-text-truncate",style:{maxWidth:"120px",display:"flex",alignItems:"center"},children:[S("span",{className:"rdd-workspace-tab-icon",children:Q?.icon||M||An}),fe("span",{children:[ge(F.title,A),F.dirty?" *":""]})]}),Q?.renderHeaderActions&&S("span",{className:"rdd-tab-header-actions",onClick:B=>B.stopPropagation(),onPointerDown:B=>B.stopPropagation(),children:Q.renderHeaderActions(l)}),Q?.canClose!==!1&&S("span",{onClick:B=>{B.stopPropagation(),x(l)},title:ge(_.closeTab,A),className:"rdd-close-tab-x",style:{width:"18px",height:"18px",...Q?.renderHeaderActions?{}:{marginInlineStart:"auto"}},children:S("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:S("path",{d:"M18 6L6 18M6 6l12 12"})})})]},l)})}),O.right&&S("button",{className:"rdd-tab-scroll-btn rdd-tab-scroll-btn-right",onPointerDown:l=>l.stopPropagation(),onClick:()=>H("right"),tabIndex:-1,"aria-label":"Scroll tabs right",children:"\u203A"}),e.panels.length===0&&e.keepOnEmpty&&e.canClose!==!1&&S("span",{onClick:()=>k(e.id),className:"rdd-close-tab-x rdd-header-close-empty-group",style:{width:"18px",height:"18px",cursor:"pointer"},title:ge(_.closeEmptyGroup,A),children:S("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:S("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),fe("div",{className:`rdd-panel-body ${C??""}`,style:{position:"relative",overflow:"hidden"},children:[e.activePanelId&&y.panels[e.activePanelId]?S(Lo,{panelId:e.activePanelId},e.activePanelId):S("div",{className:"rdd-empty-leaf-placeholder",children:S("span",{children:"Empty Workspace Section"})}),y.draggedPanelId!==null&&(()=>{let l=E=>n?.leafId===e.id&&n.position===E;return S("div",{className:"rdd-dock-drop-zone-overlay",children:fe("div",{className:"rdd-dock-target-cross",children:[S("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"}),S("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"}),S("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"}),S("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"}),S("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&&S("div",{className:"rdd-dock-preview-highlight",style:(()=>{let l=n.position,E=`${y.splitRatio*100}%`,F=`${(1-y.splitRatio)*100}%`;return{left:l==="right"?F:"0",top:l==="bottom"?F:"0",width:l==="left"||l==="right"?E:"100%",height:l==="top"||l==="bottom"?E:"100%"}})()})]})]})},Or=({skin:e="vscode",defaultPanelIcon:t,taskbarVisibility:n="autohide",contextMenuAdapter:o=Ft,animations:a=!0})=>{let s=je(),I=Kt(),{restorePanel:M,minimizePanel:x,requestClosePanel:y,maximizePanel:w,updateFloatingPosition:c,focusPanel:k,floatPanel:T,setDraggedPanelId:A,dockPanelToGroup:_,movePanelOrder:u,dockPanelToWorkspaceEdge:C,setActivePanel:P,getPanelContextMenuItems:O,showContextMenu:m,registerContextMenuFn:R}=Tn(),{openModal:H}=Rt(),D=Ke(),l=Ze(),E=On.useCallback(r=>{let v=s.panels[r];y(r,{onConfirm:f=>new Promise(h=>{let p=f||v?.dirtyOptions,z=v?ge(v.title,D):"Panel";H(St,{title:p?.title||l.unsavedChangesTitle,message:p?.message||{id:l.unsavedChangesMessage.id,defaultMessage:l.unsavedChangesMessage.defaultMessage,values:{title:z}},alert:p?.alert,alertType:p?.alertType||"danger",useYesNoTitles:!0,onOK:()=>h(!0),onCancel:()=>h(!1)},{size:"small"})})})},[y,s.panels,D,H,l]),{windowClass:F,windowBodyClass:X}=pt(),Z=So(_t),U=Fe(null);we(()=>R(Z!==null?r=>Z.show(r):r=>U.current?.show(r)),[Z,R]);let Q=Fe(null),[me,te]=lt(!1),G=Fe(null),j=Fe(s.minimized.length),[V,B]=lt(null),se=Fe(null),be=Fe("mouse"),[ze,K]=lt(!1),_e=Z!==null?Z.isOpen:ze;we(()=>()=>{se.current&&clearTimeout(se.current)},[]),we(()=>{V&&(s.minimized.some(v=>v.id===V.id)||B(null))},[s.minimized,V]),we(()=>{if(!V?.fromTouch)return;let r=v=>{v.pointerType!=="touch"||document.querySelector(".rdd-taskbar-item-tooltip")?.contains(v.target)||B(null)};return document.addEventListener("pointerdown",r,{capture:!0}),()=>document.removeEventListener("pointerdown",r,{capture:!0})},[V?.fromTouch]);let[Xe,Ve]=lt(null),Ge=Fe(null),[rt,it]=lt({x:0,y:0}),[st,Je]=lt(null),Qe=Fe(null),Pe=r=>{Je(r),Qe.current=r},[ne,ce]=lt(null),$e=Fe(null),He=r=>{ce(r),$e.current=r},q=So(At)?.isRtl??!1,[J,le]=lt(null),he=Fe(null),Re=(r,v,f,h)=>{let p=h?{leafId:r,panelId:v,index:f,side:h}:null;le(p),he.current=p},Me=(r,v)=>{let f=v?{leafId:r,position:v}:null;Ve(f),Ge.current=f,f&&(Pe(null),He(null))},Ne=(r,v)=>{let f=document.elementsFromPoint(r,v),h=!1,p=!1,z=!1;for(let N of f)if(N instanceof HTMLElement){if(!h&&N.dataset.dropZone){let W=N.dataset.leafId;if(W){let $=N.dataset.dropZone;Ve({leafId:W,position:$}),Ge.current={leafId:W,position:$},h=!0}}if(!z&&N.dataset.tabId){let W=N.dataset.leafId,$=parseInt(N.dataset.tabIndex||"0",10);if(W){let ee=N.getBoundingClientRect(),Y=r-ee.left<ee.width/2?"left":"right";le({leafId:W,panelId:N.dataset.tabId,index:$,side:Y}),he.current={leafId:W,panelId:N.dataset.tabId,index:$,side:Y},z=!0}}if(!p&&N.dataset.edgeTrigger&&(Pe(N.dataset.edgeTrigger),p=!0),h&&p&&z)break}h||(Ve(null),Ge.current=null),p||Pe(null),z||(le(null),he.current=null)},Se=300,Te=8,ve=()=>{A(null),Ve(null),Ge.current=null,le(null),he.current=null,Pe(null)},at=r=>s.isRtl?r==="left"?"right":r==="right"?"left":r:r,De=(r,v)=>{let f=Ge.current,h=he.current,p=Qe.current,z=$e.current;if(p)C(r,at(p));else if(h){let N=h.index;h.side==="right"&&(N+=1);let W=Io(s.gridRoot,h.leafId);if(W){let $=W.panels.indexOf(r);$!==-1&&$<N&&(N-=1)}u(r,h.leafId,N)}else f?_(r,f.leafId,at(f.position)):z?T(r,void 0,q?Ut(z):z):T(r,{x:v.clientX-150,y:v.clientY-15,width:450,height:350});He(null),ve()},We=(r,v)=>{if(v.pointerType==="mouse"&&v.button!==0)return;v.preventDefault();let f=v.currentTarget,h=v.clientX,p=v.clientY;if(v.pointerType==="touch"){let z=v.pointerId,N=!1,W=()=>{N=!0,clearTimeout(ee),f.removeEventListener("pointermove",$),f.removeEventListener("pointerup",W),f.removeEventListener("pointercancel",W)},$=Y=>{Math.hypot(Y.clientX-h,Y.clientY-p)>Te&&W()},ee=setTimeout(()=>{if(N)return;f.removeEventListener("pointermove",$),f.removeEventListener("pointerup",W),f.removeEventListener("pointercancel",W);try{f.setPointerCapture(z)}catch{return}f.classList.add("rdd-long-press-active"),document.body.classList.add("rdd-dragging-active"),navigator.vibrate&&navigator.vibrate(10);let Y=!1,re=de=>{Y||(Y=!0,A(r)),it({x:de.clientX,y:de.clientY}),Ne(de.clientX,de.clientY)},ue=de=>{f.classList.remove("rdd-long-press-active"),document.body.classList.remove("rdd-dragging-active"),f.removeEventListener("pointermove",re),f.removeEventListener("pointerup",ue),f.removeEventListener("pointercancel",ie),Y?De(r,de):Ae(r,de)},ie=()=>{f.classList.remove("rdd-long-press-active"),document.body.classList.remove("rdd-dragging-active"),f.removeEventListener("pointermove",re),f.removeEventListener("pointerup",ue),f.removeEventListener("pointercancel",ie),Y&&ve()};f.addEventListener("pointermove",re),f.addEventListener("pointerup",ue),f.addEventListener("pointercancel",ie)},Se);f.addEventListener("pointermove",$),f.addEventListener("pointerup",W),f.addEventListener("pointercancel",W)}else{let z=!1,N=ee=>{let Y=ee.clientX-h,re=ee.clientY-p;!z&&(Math.abs(Y)>5||Math.abs(re)>5)&&(z=!0,A(r)),z&&it({x:ee.clientX,y:ee.clientY})},W=ee=>{document.body.classList.remove("rdd-dragging-active"),window.removeEventListener("pointermove",N),window.removeEventListener("pointerup",W),window.removeEventListener("pointercancel",$),z&&De(r,ee)},$=()=>{document.body.classList.remove("rdd-dragging-active"),window.removeEventListener("pointermove",N),window.removeEventListener("pointerup",W),window.removeEventListener("pointercancel",$),z&&ve()};document.body.classList.add("rdd-dragging-active"),window.addEventListener("pointermove",N),window.addEventListener("pointerup",W),window.addEventListener("pointercancel",$)}},Ae=(r,v)=>{v.preventDefault();let f=s.panels[r];if(!f)return;let p=I.get(f.component)?.defaultOptions,z=[];if(p?.canDrag!==!1&&z.push({label:ge(l.floatWindow,D),icon:Ht.float,action:()=>T(r)}),p?.canMinimize!==!1&&z.push({label:ge(l.minimizePanel,D),icon:Ht.minimize,action:()=>x(r)}),z.length>0&&p?.canClose!==!1&&z.push({separator:!0}),p?.canClose!==!1&&z.push({label:ge(l.closeTab,D),icon:Ht.close,action:()=>E(r)}),z.length===0)return;let N=O(r),W=N.length>0?[...z,{separator:!0},...N]:z;m({event:v,items:W})},ke=(r,v)=>{v.preventDefault(),B(null),m({event:v,items:[{label:ge(l.restorePanel,D),icon:Ht.restore,action:()=>M(r)},{label:ge(l.maximizePanel,D),icon:Ht.maximize,action:()=>w(r)},{separator:!0},{label:ge(l.closePanel,D),icon:Ht.close,action:()=>E(r)}]})};we(()=>{let r=Object.keys(s.panels);for(let v of Array.from(Qt.keys()))r.includes(v)||Qt.delete(v)},[s.panels]),we(()=>{let r=()=>{s.draggedPanelId!==null&&(A(null),Ve(null),le(null))};return window.addEventListener("blur",r),()=>{window.removeEventListener("blur",r)}},[s.draggedPanelId]);let Ye=Fe(null),[Oe,Yt]=lt({width:1024,height:768});we(()=>{let r=Ye.current;if(!r)return;let v=!1,f=new ResizeObserver(h=>{if(!h||h.length===0)return;let p=h[0].contentRect;if(process.env.NODE_ENV==="development"&&p.height<10&&!v){v=!0;let z=r,N=r.parentElement;for(;N&&N!==document.documentElement&&N.getBoundingClientRect().height<10;){z=N;N=N.parentElement}let W=z.tagName.toLowerCase(),$=z.id?` id="${z.id}"`:"",ee=z.className?` class="${z.className}"`:"",Y=z===r?"the WindowManager container itself":`a wrapper element: <${W}${$}${ee}>`;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{}},[]),Ot(()=>{if(t)return t._connect(Pt),()=>{t._disconnect()}},[t,Pt]);let pt=an(()=>({getSnapshot:k,subscribeToState:F}),[k,F]);return Ct(lo.Provider,{value:Ve,children:Ct(co.Provider,{value:R,children:Ct(so.Provider,{value:pt,children:Ct(Ft.Provider,{value:w,children:Ct(ln.Provider,{value:Pt,children:Ct(io.Provider,{value:T||Vt,children:Ct(ao.Provider,{value:N,children:e})})})})})})})},ro=e=>()=>{};function je(e){let t=ct(Ft),o=ct(so),r=et(e);r.current=e;let c=br(e?o?.subscribeToState??ro:ro,()=>{let s=o?.getSnapshot()??t;return r.current?r.current(s):s},()=>{let s=o?.getSnapshot()??t;return r.current?r.current(s):s});if(!t)throw new Error("useWindowManagerState must be used within WindowManagerProvider");return e?c:t}var jt=()=>{let e=ct(ln);if(!e)throw new Error("useWindowManagerActions must be used within WindowManagerProvider");return e},kn=()=>{let e=ct(ln);if(!e)throw new Error("useWindowManagerActionsInternal must be used within WindowManagerProvider");return e},Ke=()=>ct(io)||(t=>{let o=t.defaultMessage||t.id;return t.values&&Object.entries(t.values).forEach(([r,c])=>{o=o.replace(`{${r}}`,String(c))}),o}),ce=(e,t)=>e?typeof e=="string"?e:t(e):"",Pr=()=>{let{publish:e,subscribe:t}=jt();return{publish:e,subscribe:t}},Ze=()=>ct(ao),dn=()=>zt().instanceId;function xr(e){let t=ct(ln),o=dn(),r=et(e);r.current=e,Ot(()=>{if(!(!t?.registerPanelContextMenu||!o))return t.registerPanelContextMenu(o,()=>r.current)},[o,t?.registerPanelContextMenu])}import Ut,{forwardRef as ho,useImperativeHandle as Cr,useState as go,useRef as Zt,useEffect as fo,useLayoutEffect as bo}from"react";import{createPortal as vo}from"react-dom";import{Fragment as Mr,jsx as Pe,jsxs as Rt}from"react/jsx-runtime";function wr(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 En(e){return"separator"in e}function cn(e){return!En(e)&&"items"in e}var yo=ho(({items:e,x:t,y:o,theme:r,fmt:c,onClose:s,onMouseEnter:S,onMouseLeave:h},y)=>(bo(()=>{let P=y?.current;if(!P)return;let C=P.getBoundingClientRect(),d=8;C.right>window.innerWidth-d&&(P.style.left=`${Math.max(d,window.innerWidth-C.width-d)}px`,P.style.right="auto"),C.bottom>window.innerHeight-d&&(P.style.top=`${Math.max(d,window.innerHeight-C.height-d)}px`),C.left<d&&(P.style.left=`${d}px`,P.style.right="auto"),C.top<d&&(P.style.top=`${d}px`)}),vo(Pe("div",{ref:y,className:`rdd-context-menu rdd-context-menu--${r} rdd-context-menu--submenu`,style:{position:"fixed",left:t,top:o},role:"menu",onMouseEnter:S,onMouseLeave:h,children:e.map((P,C)=>{if(En(P))return Pe("hr",{className:"rdd-context-menu__separator",role:"separator"},C);let d=P,R=d.checkbox&&d.checkbox.active!==!1,T=R&&d.checkbox.value,D=d.disabled===!0||(R?d.checkbox.enabled===!1:!1);return Rt("button",{type:"button",className:`rdd-context-menu__item${D?" rdd-context-menu__item--disabled":""}`,title:d.title?_t(d.title,c):void 0,disabled:D,"data-cy-action":d.cyAction,onClick:()=>{D||(d.action?.(),s())},role:"menuitem","aria-checked":R?T:void 0,children:[d.icon?Pe("span",{className:"rdd-context-menu__icon",children:d.icon}):Pe("span",{className:"rdd-context-menu__icon","aria-hidden":"true"}),Pe("span",{className:"rdd-context-menu__label",children:_t(d.label,c)}),R&&Pe("span",{className:`rdd-context-menu__checkbox${T?" rdd-context-menu__checkbox--checked":""}`,"aria-hidden":"true",children:Rt("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[Pe("rect",{x:"0.75",y:"0.75",width:"10.5",height:"10.5",rx:"2",fill:"none",stroke:"currentColor",strokeWidth:"1.5"}),T&&Pe("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)));yo.displayName="ContextMenuSubMenuPanel";var mo={visible:!1,x:0,y:0,items:[]},In=ho(({theme:e="dark",formatMessageProvider:t,onShow:o,onHide:r,onOpenChange:c,className:s,style:S},h)=>{let[y,P]=go(mo),[C,d]=go(null),R=Zt(null),T=Zt(null),D=Zt(new Map),A=Zt({open:null,close:null}),g=Ut.useCallback(()=>{P(mo),d(null),A.current.open&&clearTimeout(A.current.open),A.current.close&&clearTimeout(A.current.close),A.current.open=null,A.current.close=null,r?.(),c?.(!1)},[r,c]);if(Cr(h,()=>({show({event:u,x:N,y:O,items:Y}){let q=u?wr(u):{x:N??0,y:O??0};D.current.clear(),P({visible:!0,x:q.x,y:q.y,items:Y}),d(null),o?.(),c?.(!0)}}),[o,c]),fo(()=>{if(!y.visible)return;let u=N=>{R.current?.contains(N.target)||T.current?.contains(N.target)||g()};return document.addEventListener("pointerdown",u,{capture:!0}),window.addEventListener("click",u),()=>{document.removeEventListener("pointerdown",u,{capture:!0}),window.removeEventListener("click",u)}},[y.visible,g]),fo(()=>{if(!y.visible)return;let u=N=>{N.key==="Escape"&&g()};return document.addEventListener("keydown",u),()=>document.removeEventListener("keydown",u)},[y.visible,g]),bo(()=>{if(!y.visible||!R.current)return;let u=R.current,N=u.getBoundingClientRect(),O=8;N.right>window.innerWidth-O&&(u.style.left=`${Math.max(O,window.innerWidth-N.width-O)}px`),N.bottom>window.innerHeight-O&&(u.style.top=`${Math.max(O,window.innerHeight-N.height-O)}px`),N.left<O&&(u.style.left=`${O}px`),N.top<O&&(u.style.top=`${O}px`)},[y.visible]),!y.visible)return null;let w=t,x=0,W=0;if(C!==null){let u=D.current.get(C);if(u){let N=u.getBoundingClientRect();x=document.documentElement.dir==="rtl"?window.innerWidth-N.left+2:N.right+2,W=N.top}}function b(){A.current.open&&(clearTimeout(A.current.open),A.current.open=null)}function k(){A.current.close&&(clearTimeout(A.current.close),A.current.close=null)}function F(u,N){k(),C!==null&&C!==u&&(b(),d(null)),cn(N)&&N.items?.length?(b(),A.current.open=setTimeout(()=>{d(u)},150)):cn(N)||(b(),C!==null&&(A.current.close=setTimeout(()=>d(null),200)))}function z(u){b(),cn(u)&&u.items?.length&&(A.current.close=setTimeout(()=>d(null),200))}return vo(Rt(Mr,{children:[Pe("div",{ref:R,className:`rdd-context-menu rdd-context-menu--${e}${s?` ${s}`:""}`,style:{position:"fixed",left:y.x,top:y.y,...S},role:"menu","aria-orientation":"vertical",children:y.items.map((u,N)=>{if(En(u))return Pe("hr",{className:"rdd-context-menu__separator",role:"separator"},N);if(cn(u))return Rt("button",{ref:Q=>{D.current.set(N,Q)},type:"button",className:`rdd-context-menu__item rdd-context-menu__item--has-submenu${C===N?" rdd-context-menu__item--submenu-open":""}`,title:u.title?_t(u.title,w):void 0,onMouseEnter:()=>F(N,u),onMouseLeave:()=>z(u),role:"menuitem","aria-haspopup":"true","aria-expanded":C===N,children:[Pe("span",{className:"rdd-context-menu__icon","aria-hidden":"true"}),Pe("span",{className:"rdd-context-menu__label",children:_t(u.label,w)}),Pe("span",{className:"rdd-context-menu__chevron","aria-hidden":"true",children:"\u203A"})]},N);let O=u,Y=O.checkbox&&O.checkbox.active!==!1,q=Y&&O.checkbox.value,U=O.disabled===!0||(Y?O.checkbox.enabled===!1:!1);return Rt("button",{ref:Q=>{D.current.set(N,Q)},type:"button",className:`rdd-context-menu__item${U?" rdd-context-menu__item--disabled":""}`,title:O.title?_t(O.title,w):void 0,disabled:U,"data-cy-action":O.cyAction,onClick:()=>{U||(O.action?.(),g())},onMouseEnter:()=>F(N,u),onMouseLeave:()=>z(u),role:"menuitem","aria-checked":Y?q:void 0,children:[O.icon?Pe("span",{className:"rdd-context-menu__icon",children:O.icon}):Pe("span",{className:"rdd-context-menu__icon","aria-hidden":"true"}),Pe("span",{className:"rdd-context-menu__label",children:_t(O.label,w)}),Y&&Pe("span",{className:`rdd-context-menu__checkbox${q?" rdd-context-menu__checkbox--checked":""}`,"aria-hidden":"true",children:Rt("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[Pe("rect",{x:"0.75",y:"0.75",width:"10.5",height:"10.5",rx:"2",fill:q?"currentColor":"none",stroke:"currentColor",strokeWidth:"1.5"}),q&&Pe("path",{d:"M2.5 6 L4.5 8.5 L9.5 3.5",stroke:"white",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})]})})]},N)})}),C!==null&&(()=>{let u=y.items[C];return Pe(yo,{ref:T,items:u.items??[],x,y:W,theme:e,fmt:w,onClose:g,onMouseEnter:()=>k(),onMouseLeave:()=>{A.current.close=setTimeout(()=>d(null),200)}})})()]}),document.body)});In.displayName="ContextMenu";var Ht={Component:In},$t=Ut.createContext(null),Ln=({adapter:e=Ht,children:t,...o})=>{let r=Zt(null),[c,s]=Ut.useState(!1),S=Ut.useCallback(h=>{r.current?.show(h)},[]);return Rt($t.Provider,{value:{show:S,isOpen:c},children:[t,Pe(e.Component,{ref:r,...o,onShow:()=>{s(!0),o.onShow?.()},onHide:()=>{s(!1),o.onHide?.()}})]})};function Rr(){let e=Ut.useContext($t);if(!e)throw new Error("useShowContextMenu must be used within a ContextMenuProvider");return e.show}import{createContext as Co,useContext as wo,useState as Sr,useCallback as tt,useMemo as Tr,useRef as kr}from"react";import{jsx as xo}from"react/jsx-runtime";var Er=0,Nn=()=>`panel-${++Er}-${Date.now()}`,un=new Map,Po={leftPanel:null,rightPanel:null,modals:[]},Ro=Co(null),Mo=Co(null),zn=({children:e})=>{let[t,o]=Sr(Po),r=kr(t);r.current=t;let c=tt((g,w)=>{un.set(g,w)},[]),s=tt(g=>{un.delete(g)},[]),S=tt(async(g,w,x={})=>{let W=r.current.leftPanel;if(W){let F=un.get(W.id);if(F&&!await F())return null}let b=Nn(),k={id:b,Component:g,props:w,containerType:"left-panel",options:x};return o(F=>({...F,leftPanel:k})),b},[]),h=tt(async(g,w,x={})=>{let W=r.current.rightPanel;if(W){let F=un.get(W.id);if(F&&!await F())return null}let b=Nn(),k={id:b,Component:g,props:w,containerType:"right-panel",options:x};return o(F=>({...F,rightPanel:k})),b},[]),y=tt((g,w,x={})=>{let W=Nn(),b=w.title,k={...x,title:x.title||b||"Confirmation"},F={id:W,Component:g,props:w,containerType:"modal",options:k};return o(z=>({...z,modals:[...z.modals,F]})),W},[]),P=tt(g=>{o(w=>({leftPanel:w.leftPanel?.id===g?null:w.leftPanel,rightPanel:w.rightPanel?.id===g?null:w.rightPanel,modals:w.modals.filter(x=>x.id!==g)}))},[]),C=tt(()=>{o(Po)},[]),d=tt(()=>{o(g=>({...g,modals:[]}))},[]),R=tt(g=>t.leftPanel?.id===g?t.leftPanel:t.rightPanel?.id===g?t.rightPanel:t.modals.find(w=>w.id===g),[t]),T=tt((g,w)=>{o(x=>({leftPanel:x.leftPanel?.id===g?{...x.leftPanel,...w}:x.leftPanel,rightPanel:x.rightPanel?.id===g?{...x.rightPanel,...w}:x.rightPanel,modals:x.modals.map(W=>W.id===g?{...W,...w}:W)}))},[]),D=tt((g,w,x)=>{T(g,{dirty:w,dirtyOptions:x})},[T]),A=Tr(()=>({openLeftPanel:S,openRightPanel:h,openModal:y,close:P,closeAll:C,closeAllModals:d,getInstance:R,updateInstance:T,setDirty:D,registerCloseHandler:c,unregisterCloseHandler:s}),[S,h,y,P,C,d,R,T,D,c,s]);return xo(Ro.Provider,{value:t,children:xo(Mo.Provider,{value:A,children:e})})},ft=()=>{let e=wo(Ro);if(!e)throw new Error("usePanelState must be used within PanelProvider");return e},Mt=()=>{let e=wo(Mo);if(!e)throw new Error("usePanelActions must be used within PanelProvider");return e};import{useEffect as So,useRef as Ir}from"react";import{jsx as St,jsxs as Dn}from"react/jsx-runtime";var Lr=({title:e,message:t,alert:o,alertType:r="info",useYesNoTitles:c=!1,onOK:s,onCancel:S})=>{let{requestClose:h,setIcon:y,setTitle:P}=zt(),C=Ke(),d=Ze(),R=Ir(null);So(()=>{if(e){let x=typeof e=="string"?e:C(e);P(x)}y&&y(St("span",{children:"\u2753"}))},[e,P,y,C]),So(()=>{R.current?.focus({preventScroll:!0})},[]);let T=typeof t=="string"?t:C(t),D=C(c?d.no:d.cancel),A=C(c?d.yes:d.ok),g=x=>{x.preventDefault(),s?.(),h()},w=()=>{S?.(),h()};return Dn("form",{onSubmit:g,className:"rdd-confirmation-form-body",children:[o&&Dn("div",{className:`rdd-confirmation-alert rdd-confirmation-alert-${r}`,children:[St("span",{children:"\u2139\uFE0F"}),St("span",{children:o})]}),St("div",{style:{fontSize:"0.9rem",color:"inherit",lineHeight:1.5},children:T}),St("hr",{style:{marginTop:"0.5rem",marginBottom:"0.5rem",opacity:.1}}),Dn("div",{className:"rdd-confirmation-actions",children:[St("button",{type:"button",className:"rdd-btn rdd-btn-sm rdd-btn-outline",onClick:w,children:D}),St("button",{type:"submit",className:"rdd-btn rdd-btn-sm rdd-btn-primary",ref:R,children:A})]})]})},Tt=Lr;function Jt(e){return e==="top-left"?"top-right":e==="top-right"?"top-left":e==="bottom-left"?"bottom-right":"bottom-left"}function mt(e){let{element:t,pointerId:o,startClientX:r,startClientY:c,captureStart:s,onMove:S,onEnd:h,activeClasses:y}=e;t.setPointerCapture(o),y?.forEach(({el:R,classes:T})=>R.classList.add(...T));let P=s(),C=R=>{S(R.clientX-r,R.clientY-c,P)},d=()=>{y?.forEach(({el:R,classes:T})=>R.classList.remove(...T)),t.removeEventListener("pointermove",C),t.removeEventListener("pointerup",d),t.removeEventListener("pointercancel",d),h?.(P)};t.addEventListener("pointermove",C),t.addEventListener("pointerup",d),t.addEventListener("pointercancel",d)}function Qt(e,t,o,r,c){let{minW:s,minH:S,maxW:h,maxH:y,minX:P,minY:C}=c,{x:d,y:R,w:T,h:D}=r;if(e.includes("e")&&(T=Math.max(s,Math.min(r.w+t,h??1/0))),e.includes("w")){let A=r.w-s,g=P!=null?-(r.x-P):-1/0,w=Math.max(g,Math.min(t,A));T=r.w-w,d=r.x+w}if(e.includes("s")&&(D=Math.max(S,Math.min(r.h+o,y??1/0))),e.includes("n")){let A=r.h-S,g=C!=null?-(r.y-C):-1/0,w=Math.max(g,Math.min(o,A));D=r.h-w,R=r.y+w}return{x:d,y:R,w:T,h:D}}import{useEffect as Nr,useState as zr}from"react";function Wn(){let[e,t]=zr(()=>document.documentElement.getAttribute("data-color-scheme")==="light"?"light":"dark");return Nr(()=>{let o=()=>{t(document.documentElement.getAttribute("data-color-scheme")==="light"?"light":"dark")};o();let r=new MutationObserver(o);return r.observe(document.documentElement,{attributes:!0,attributeFilter:["data-color-scheme"]}),()=>r.disconnect()},[]),e}import{Fragment as Eo,jsx as L,jsxs as pe}from"react/jsx-runtime";var Io=(e,t)=>{if(!e)return null;if(e.type==="leaf")return e.id===t?e:null;for(let o of e.children){let r=Io(o,t);if(r)return r}return null},en=new Map,pn="preserved-dom-container",An=pe("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{display:"block"},children:[L("rect",{x:"3",y:"3",width:"7",height:"9",rx:"1"}),L("rect",{x:"14",y:"3",width:"7",height:"5",rx:"1"}),L("rect",{x:"14",y:"12",width:"7",height:"9",rx:"1"}),L("rect",{x:"3",y:"16",width:"7",height:"5",rx:"1"})]}),Bt={float:L("span",{className:"rdd-menu-icon",children:pe("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{display:"block"},children:[L("rect",{x:"2",y:"8",width:"14",height:"14",rx:"1"}),L("rect",{x:"8",y:"2",width:"14",height:"14",rx:"1"})]})}),minimize:L("span",{className:"rdd-menu-icon",children:L("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",style:{display:"block"},children:L("line",{x1:"4",y1:"18",x2:"20",y2:"18"})})}),restore:L("span",{className:"rdd-menu-icon",children:L("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{display:"block"},children:L("rect",{x:"4",y:"4",width:"16",height:"16",rx:"1"})})}),maximize:L("span",{className:"rdd-menu-icon",children:L("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{display:"block"},children:L("rect",{x:"2",y:"2",width:"20",height:"20",rx:"1"})})}),close:L("span",{className:"rdd-menu-icon",children:L("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{display:"block"},children:L("path",{d:"M18 6L6 18M6 6l12 12"})})})},Lo=e=>{let t=en.get(e);return t||(t=document.createElement("div"),t.style.width="100%",t.style.height="100%",en.set(e,t)),t},Dr=(e,t,o)=>{let r=t.component,c=o.get(r);if(!c)return console.warn(`[react-dockable-desktop] Panel "${e}" references component key "${r}" which is not registered. Add it to the WorkspaceClient panels config:
5
+ new WorkspaceClient({ panels: { "${r}": { component: YourComponent } } })`),pe("div",{className:"rdd-unregistered-panel",style:{border:"2px dashed #dc3545"},children:[L("h6",{style:{fontWeight:700,marginBottom:"0.25rem"},children:"\u26A0\uFE0F Component Unregistered"}),pe("span",{style:{fontSize:"0.875rem",color:"var(--rdd-text-secondary, #94a3b8)"},children:["Key: ",r]})]});let s=c.Component;return L(s,{...t.props??{},panelId:e})},_n=new Map,ht=new Map,kt=e=>{let t=ht.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},ht.set(e,t)),t},No=({panelId:e})=>{let t=Oe(null);return Ce(()=>{let o=t.current;if(!o)return;let r=Lo(e);o.appendChild(r);let c=new ResizeObserver(s=>{for(let S of s){let{width:h,height:y}=S.contentRect;if(h>0&&y>0){_n.set(e,{width:h,height:y});let P=ht.get(e);P&&P.onResize.forEach(C=>C(h,y))}}});return c.observe(o),()=>{c.disconnect();let s=document.getElementById(pn);s||(s=document.createElement("div"),s.id=pn,s.style.display="none",document.body.appendChild(s)),s.appendChild(r)}},[e]),L("div",{ref:t,style:{width:"100%",height:"100%"}})},Wr=({panelId:e})=>{let t=je(),o=qt(),r=Ke(),c=Oe(null),s=t.panels[e],S=s?o.get(s.component):null,h=S?.defaultOptions?.disableLivePreview||!1,y=_n.get(e)||{width:800,height:500},P=y.width,C=y.height,T=Math.min(220/P,140/C);if(Ce(()=>{if(h)return;let D=c.current;if(!D)return;let A=en.get(e);if(A)return D.appendChild(A),()=>{let g=document.getElementById(pn);g||(g=document.createElement("div"),g.id=pn,g.style.display="none",document.body.appendChild(g)),g.appendChild(A)}},[e,h]),h){let D=P*T,A=C*T,g=s?.title||S?.defaultOptions?.title||"Panel",w=ce(g,r),x=(Array.from(w)[0]||"P").toUpperCase();return L("div",{className:"rdd-taskbar-item-preview-frame",style:{width:`${D}px`,height:`${A}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:L("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:x})})}return L("div",{className:"rdd-taskbar-item-preview-frame",style:{width:`${P*T}px`,height:`${C*T}px`},children:L("div",{ref:c,className:"rdd-taskbar-item-preview-host",style:{width:`${P}px`,height:`${C}px`,transform:`scale(${T})`,transformOrigin:"top left",position:"absolute",top:0,left:0,"--rdd-preview-scale":T}})})},Or=({panelId:e,children:t})=>{let o=je(),{requestClosePanel:r,setPanelDirty:c,registerCloseGuard:s,unregisterCloseGuard:S,registerStateProvider:h,unregisterStateProvider:y,updatePanelTitle:P,minimizePanel:C}=jt(),d=o.minimized.some(b=>b.id===e),R=Oe(d);Ce(()=>{let b=ht.get(e);b&&(d&&!R.current?b.onMinimize.forEach(k=>k()):!d&&R.current&&b.onRestore.forEach(k=>k()),R.current=d)},[d,e]);let T=o.activePanelId===e,D=Oe(T);Ce(()=>{let b=D.current;D.current=T;let k=ht.get(e);k&&(T&&!b?k.onActivate.forEach(F=>F()):!T&&b&&k.onDeactivate.forEach(F=>F()))},[T,e]);let A=o.panels[e]?.state,g=A==="floating"?"floating-window":"dockable-panel",w=Oe(g);Ce(()=>{if(A==="minimized")return;let b=w.current;w.current=g;let k=ht.get(e);k&&g!==b&&k.onContainerTypeChange.forEach(F=>F(g))},[g,A,e]),Ce(()=>()=>{let b=ht.get(e);b&&(D.current&&b.onDeactivate.forEach(k=>k()),b.onClose.forEach(k=>k()),ht.delete(e))},[e]);let x=Oe(g),W=Fn.useMemo(()=>({requestClose:b=>r(e,b),setDirty:b=>c(e,b),onCloseRequested:b=>(s(e,b),()=>S(e)),registerStateProvider:b=>(h(e,b),()=>y(e)),setTitle:b=>P(e,b),instanceId:e,containerType:x.current,onClose:b=>{let k=kt(e);return k.onClose.add(b),()=>k.onClose.delete(b)},onMinimize:b=>{let k=kt(e);return k.onMinimize.add(b),()=>k.onMinimize.delete(b)},onRestore:b=>{let k=kt(e);return k.onRestore.add(b),()=>k.onRestore.delete(b)},onResize:b=>{let k=kt(e);return k.onResize.add(b),()=>k.onResize.delete(b)},requestMinimize:()=>C(e),getDimensions:()=>_n.get(e)??null,onActivate:b=>{let k=kt(e);return k.onActivate.add(b),()=>k.onActivate.delete(b)},onDeactivate:b=>{let k=kt(e);return k.onDeactivate.add(b),()=>k.onDeactivate.delete(b)},onContainerTypeChange:b=>{let k=kt(e);return k.onContainerTypeChange.add(b),()=>k.onContainerTypeChange.delete(b)}}),[e,r,c,s,S,h,y,P,C]);return L(xt,{value:W,children:t})},zo=({node:e,path:t,onTabRightClick:o,activeDropZone:r,onHoverDropZone:c,onTabDragStart:s,hoveredTab:S,onTabHover:h,defaultPanelIcon:y,onRequestClosePanel:P})=>{let{updateSplitSizes:C}=jt();if(e.type==="leaf")return L(Ar,{leaf:e,onTabRightClick:o,activeDropZone:r,onHoverDropZone:c,onTabDragStart:s,hoveredTab:S,onTabHover:h,defaultPanelIcon:y,onRequestClosePanel:P});let d=e.orientation==="horizontal",R=(T,D)=>{D.preventDefault();let A=D.currentTarget,g=A.parentElement,w=g?d?g.clientWidth:g.clientHeight:d?1e3:800;mt({element:A,pointerId:D.pointerId,startClientX:D.clientX,startClientY:D.clientY,captureStart:()=>[...e.sizes],activeClasses:[{el:A,classes:["rdd-active"]},{el:document.body,classes:["rdd-resizing-active",d?"rdd-resizing-col-active":"rdd-resizing-row-active"]}],onMove:(x,W,b)=>{let k=(d?x:W)/w,F=[...b];F[T]+=k,F[T+1]-=k,F[T]>.1&&F[T+1]>.1&&C(t,F)}})};return L("div",{style:{display:"flex",flexDirection:d?"row":"column",width:"100%",height:"100%",overflow:"hidden",position:"relative"},children:e.children.map((T,D)=>{let A=e.sizes[D]*100;return pe(Fn.Fragment,{children:[L("div",{style:{flexGrow:e.sizes[D],flexBasis:`${A}%`,overflow:"hidden",position:"relative",minWidth:0,minHeight:0},children:L(zo,{node:T,path:[...t,D],onTabRightClick:o,activeDropZone:r,onHoverDropZone:c,onTabDragStart:s,hoveredTab:S,onTabHover:h,defaultPanelIcon:y,onRequestClosePanel:P})}),D<e.children.length-1&&L("div",{onPointerDown:g=>R(D,g),style:{cursor:d?"col-resize":"row-resize",width:d?"1px":"100%",height:d?"100%":"1px",zIndex:20},className:"rdd-resizer-bar"})]},D)})})},Ar=({leaf:e,onTabRightClick:t,activeDropZone:o,onHoverDropZone:r,onTabDragStart:c,hoveredTab:s,onTabHover:S,defaultPanelIcon:h,onRequestClosePanel:y})=>{let P=je(),C=qt(),{openPanel:d,closeLeafGroup:R,setActivePanel:T}=kn(),D=Ke(),A=Ze(),{windowClass:g,windowBodyClass:w}=gt(),x=Oe(null),[W,b]=at({left:!1,right:!1}),k=On(()=>{let u=x.current;u&&b({left:u.scrollLeft>0,right:u.scrollLeft<u.scrollWidth-u.clientWidth-1})},[]);Ce(()=>{let u=x.current;if(!u)return;u.addEventListener("scroll",k,{passive:!0});let N=new ResizeObserver(k);return N.observe(u),k(),()=>{u.removeEventListener("scroll",k),N.disconnect()}},[k]);let F=u=>{x.current?.scrollBy({left:u==="left"?-120:120,behavior:"smooth"})},z=u=>{d(u,P.panels[u].component),T(u)};return pe("div",{"data-active-panel-id":e.activePanelId||"",className:`rdd-workspace-panel ${g??""}`,style:{overflow:"hidden",position:"relative"},children:[pe("div",{className:"rdd-workspace-tab-bar",style:{minHeight:"38px"},children:[W.left&&L("button",{className:"rdd-tab-scroll-btn rdd-tab-scroll-btn-left",onPointerDown:u=>u.stopPropagation(),onClick:()=>F("left"),tabIndex:-1,"aria-label":"Scroll tabs left",children:"\u2039"}),L("div",{ref:x,className:"rdd-tab-headers-container",style:{scrollbarWidth:"none"},onPointerMove:u=>{P.draggedPanelId&&u.target===u.currentTarget&&S(e.id,"EMPTY",e.panels.length,"right")},onPointerLeave:u=>{P.draggedPanelId&&u.target===u.currentTarget&&S(e.id,"",-1,null)},children:e.panels.map((u,N)=>{let O=P.panels[u];if(!O)return null;let Y=e.activePanelId===u,q=P.activePanelId===u,Q=C.get(O.component)?.defaultOptions,ge=s&&s.leafId===e.id&&s.panelId===u,ee=N===e.panels.length-1,G=s&&s.leafId===e.id&&s.panelId==="EMPTY"&&ee,j=ge?s.side==="left"?"rdd-drag-hover-left":"rdd-drag-hover-right":G?"rdd-drag-hover-right":"",B=Y?q?"rdd-active rdd-workspace-tab-active-focused":"rdd-active rdd-workspace-tab-active-unfocused":"rdd-workspace-tab-inactive";return pe("div",{"data-tab-id":u,"data-leaf-id":e.id,"data-tab-index":String(N),onClick:()=>z(u),onPointerDown:$=>{Q?.canDrag!==!1&&c(u,$)},onContextMenu:$=>t(u,$),onPointerMove:$=>{if(P.draggedPanelId&&$.pointerType!=="touch"){let re=$.currentTarget.getBoundingClientRect(),ze=$.clientX-re.left<re.width/2?"left":"right";S(e.id,u,N,ze)}},onPointerLeave:()=>{P.draggedPanelId&&S(e.id,"",-1,null)},className:`rdd-workspace-tab ${B} ${j}`,style:{cursor:Q?.canDrag===!1?"default":"pointer"},children:[pe("span",{className:"rdd-text-truncate",style:{maxWidth:"120px",display:"flex",alignItems:"center"},children:[L("span",{className:"rdd-workspace-tab-icon",children:Q?.icon||h||An}),pe("span",{children:[ce(O.title,D),O.dirty?" *":""]})]}),Q?.renderHeaderActions&&L("span",{className:"rdd-tab-header-actions",onClick:$=>$.stopPropagation(),onPointerDown:$=>$.stopPropagation(),children:Q.renderHeaderActions(u)}),Q?.canClose!==!1&&L("span",{onClick:$=>{$.stopPropagation(),y(u)},title:ce(A.closeTab,D),className:"rdd-close-tab-x",style:{width:"18px",height:"18px",...Q?.renderHeaderActions?{}:{marginInlineStart:"auto"}},children:L("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:L("path",{d:"M18 6L6 18M6 6l12 12"})})})]},u)})}),W.right&&L("button",{className:"rdd-tab-scroll-btn rdd-tab-scroll-btn-right",onPointerDown:u=>u.stopPropagation(),onClick:()=>F("right"),tabIndex:-1,"aria-label":"Scroll tabs right",children:"\u203A"}),e.panels.length===0&&e.keepOnEmpty&&e.canClose!==!1&&L("span",{onClick:()=>R(e.id),className:"rdd-close-tab-x rdd-header-close-empty-group",style:{width:"18px",height:"18px",cursor:"pointer"},title:ce(A.closeEmptyGroup,D),children:L("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:L("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),pe("div",{className:`rdd-panel-body ${w??""}`,style:{position:"relative",overflow:"hidden"},children:[e.activePanelId&&P.panels[e.activePanelId]?L(No,{panelId:e.activePanelId},e.activePanelId):L("div",{className:"rdd-empty-leaf-placeholder",children:L("span",{children:"Empty Workspace Section"})}),P.draggedPanelId!==null&&(()=>{let u=N=>o?.leafId===e.id&&o.position===N;return L("div",{className:"rdd-dock-drop-zone-overlay",children:pe("div",{className:"rdd-dock-target-cross",children:[L("div",{"data-leaf-id":e.id,"data-drop-zone":"top",onPointerEnter:()=>r(e.id,"top"),onPointerLeave:()=>r(e.id,null),className:`rdd-dock-target-box rdd-dock-target-top${u("top")?" rdd-dock-target-box--active":""}`,children:"\u25B2"}),L("div",{"data-leaf-id":e.id,"data-drop-zone":"bottom",onPointerEnter:()=>r(e.id,"bottom"),onPointerLeave:()=>r(e.id,null),className:`rdd-dock-target-box rdd-dock-target-bottom${u("bottom")?" rdd-dock-target-box--active":""}`,children:"\u25BC"}),L("div",{"data-leaf-id":e.id,"data-drop-zone":"left",onPointerEnter:()=>r(e.id,"left"),onPointerLeave:()=>r(e.id,null),className:`rdd-dock-target-box rdd-dock-target-left${u("left")?" rdd-dock-target-box--active":""}`,children:"\u25C0"}),L("div",{"data-leaf-id":e.id,"data-drop-zone":"right",onPointerEnter:()=>r(e.id,"right"),onPointerLeave:()=>r(e.id,null),className:`rdd-dock-target-box rdd-dock-target-right${u("right")?" rdd-dock-target-box--active":""}`,children:"\u25B6"}),L("div",{"data-leaf-id":e.id,"data-drop-zone":"center",onPointerEnter:()=>r(e.id,"center"),onPointerLeave:()=>r(e.id,null),className:`rdd-dock-target-box rdd-dock-target-center${u("center")?" rdd-dock-target-box--active":""}`,children:"\u25A3"})]})})})(),P.draggedPanelId!==null&&o!==null&&o.leafId===e.id&&L("div",{className:"rdd-dock-preview-highlight",style:(()=>{let u=o.position,N=`${P.splitRatio*100}%`,O=`${(1-P.splitRatio)*100}%`;return{left:u==="right"?O:"0",top:u==="bottom"?O:"0",width:u==="left"||u==="right"?N:"100%",height:u==="top"||u==="bottom"?N:"100%"}})()})]})]})},Fr=({skin:e="vscode",defaultPanelIcon:t,taskbarVisibility:o="autohide",contextMenuAdapter:r=Ht,animations:c=!0})=>{let s=je(),S=qt(),{restorePanel:h,minimizePanel:y,requestClosePanel:P,maximizePanel:C,updateFloatingPosition:d,focusPanel:R,floatPanel:T,setDraggedPanelId:D,dockPanelToGroup:A,movePanelOrder:g,dockPanelToWorkspaceEdge:w,setActivePanel:x,getPanelContextMenuItems:W,showContextMenu:b,registerContextMenuFn:k}=kn(),{openModal:F}=Mt(),z=Ke(),u=Ze(),N=Fn.useCallback(n=>{let l=s.panels[n];P(n,{onConfirm:a=>new Promise(m=>{let E=a||l?.dirtyOptions,I=l?ce(l.title,z):"Panel";F(Tt,{title:E?.title||u.unsavedChangesTitle,message:E?.message||{id:u.unsavedChangesMessage.id,defaultMessage:u.unsavedChangesMessage.defaultMessage,values:{title:I}},alert:E?.alert,alertType:E?.alertType||"danger",useYesNoTitles:!0,onOK:()=>m(!0),onCancel:()=>m(!1)},{size:"small"})})})},[P,s.panels,z,F,u]),{windowClass:O,windowBodyClass:Y}=gt(),q=To($t),U=Oe(null);Ce(()=>k(q!==null?n=>q.show(n):n=>U.current?.show(n)),[q,k]);let Q=Oe(null),[ge,ee]=at(!1),G=Oe(null),j=Oe(s.minimized.length),[B,$]=at(null),re=Oe(null),ue=Oe("mouse"),[ze,X]=at(!1),Ae=q!==null?q.isOpen:ze;Ce(()=>()=>{re.current&&clearTimeout(re.current)},[]),Ce(()=>{B&&(s.minimized.some(l=>l.id===B.id)||$(null))},[s.minimized,B]),Ce(()=>{if(!B?.fromTouch)return;let n=l=>{l.pointerType!=="touch"||document.querySelector(".rdd-taskbar-item-tooltip")?.contains(l.target)||$(null)};return document.addEventListener("pointerdown",n,{capture:!0}),()=>document.removeEventListener("pointerdown",n,{capture:!0})},[B?.fromTouch]);let[Ge,Ye]=at(null),Be=Oe(null),[rt,it]=at({x:0,y:0}),[st,Je]=at(null),Qe=Oe(null),ye=n=>{Je(n),Qe.current=n},[te,le]=at(null),$e=Oe(null),Fe=n=>{le(n),$e.current=n},V=To(Ft)?.isRtl??!1,[J,ae]=at(null),fe=Oe(null),we=(n,l,a,m)=>{let E=m?{leafId:n,panelId:l,index:a,side:m}:null;ae(E),fe.current=E},Re=(n,l)=>{let a=l?{leafId:n,position:l}:null;Ye(a),Be.current=a,a&&(ye(null),Fe(null))},De=(n,l)=>{let a=document.elementsFromPoint(n,l),m=!1,E=!1,I=!1;for(let v of a)if(v instanceof HTMLElement){if(!m&&v.dataset.dropZone){let M=v.dataset.leafId;if(M){let _=v.dataset.dropZone;Ye({leafId:M,position:_}),Be.current={leafId:M,position:_},m=!0}}if(!I&&v.dataset.tabId){let M=v.dataset.leafId,_=parseInt(v.dataset.tabIndex||"0",10);if(M){let K=v.getBoundingClientRect(),H=n-K.left<K.width/2?"left":"right";ae({leafId:M,panelId:v.dataset.tabId,index:_,side:H}),fe.current={leafId:M,panelId:v.dataset.tabId,index:_,side:H},I=!0}}if(!E&&v.dataset.edgeTrigger&&(ye(v.dataset.edgeTrigger),E=!0),m&&E&&I)break}m||(Ye(null),Be.current=null),E||ye(null),I||(ae(null),fe.current=null)},Me=300,Se=8,be=()=>{D(null),Ye(null),Be.current=null,ae(null),fe.current=null,ye(null)},dt=n=>s.isRtl?n==="left"?"right":n==="right"?"left":n:n,Te=(n,l)=>{let a=Be.current,m=fe.current,E=Qe.current,I=$e.current;if(E)w(n,dt(E));else if(m){let v=m.index;m.side==="right"&&(v+=1);let M=Io(s.gridRoot,m.leafId);if(M){let _=M.panels.indexOf(n);_!==-1&&_<v&&(v-=1)}g(n,m.leafId,v)}else a?A(n,a.leafId,dt(a.position)):I?T(n,void 0,V?Jt(I):I):T(n,{x:l.clientX-150,y:l.clientY-15,width:450,height:350});Fe(null),be()},ke=(n,l)=>{if(l.pointerType==="mouse"&&l.button!==0)return;l.preventDefault();let a=l.currentTarget,m=l.clientX,E=l.clientY;if(l.pointerType==="touch"){let I=l.pointerId,v=!1,M=()=>{v=!0,clearTimeout(K),a.removeEventListener("pointermove",_),a.removeEventListener("pointerup",M),a.removeEventListener("pointercancel",M)},_=H=>{Math.hypot(H.clientX-m,H.clientY-E)>Se&&M()},K=setTimeout(()=>{if(v)return;a.removeEventListener("pointermove",_),a.removeEventListener("pointerup",M),a.removeEventListener("pointercancel",M);try{a.setPointerCapture(I)}catch{return}a.classList.add("rdd-long-press-active"),document.body.classList.add("rdd-dragging-active"),navigator.vibrate&&navigator.vibrate(10);let H=!1,Z=me=>{H||(H=!0,D(n)),it({x:me.clientX,y:me.clientY}),De(me.clientX,me.clientY)},ne=me=>{a.classList.remove("rdd-long-press-active"),document.body.classList.remove("rdd-dragging-active"),a.removeEventListener("pointermove",Z),a.removeEventListener("pointerup",ne),a.removeEventListener("pointercancel",ie),H?Te(n,me):We(n,me)},ie=()=>{a.classList.remove("rdd-long-press-active"),document.body.classList.remove("rdd-dragging-active"),a.removeEventListener("pointermove",Z),a.removeEventListener("pointerup",ne),a.removeEventListener("pointercancel",ie),H&&be()};a.addEventListener("pointermove",Z),a.addEventListener("pointerup",ne),a.addEventListener("pointercancel",ie)},Me);a.addEventListener("pointermove",_),a.addEventListener("pointerup",M),a.addEventListener("pointercancel",M)}else{let I=!1,v=K=>{let H=K.clientX-m,Z=K.clientY-E;!I&&(Math.abs(H)>5||Math.abs(Z)>5)&&(I=!0,D(n)),I&&it({x:K.clientX,y:K.clientY})},M=K=>{document.body.classList.remove("rdd-dragging-active"),window.removeEventListener("pointermove",v),window.removeEventListener("pointerup",M),window.removeEventListener("pointercancel",_),I&&Te(n,K)},_=()=>{document.body.classList.remove("rdd-dragging-active"),window.removeEventListener("pointermove",v),window.removeEventListener("pointerup",M),window.removeEventListener("pointercancel",_),I&&be()};document.body.classList.add("rdd-dragging-active"),window.addEventListener("pointermove",v),window.addEventListener("pointerup",M),window.addEventListener("pointercancel",_)}},We=(n,l)=>{l.preventDefault();let a=s.panels[n];if(!a)return;let E=S.get(a.component)?.defaultOptions,I=[];if(E?.canDrag!==!1&&I.push({label:ce(u.floatWindow,z),icon:Bt.float,action:()=>T(n)}),E?.canMinimize!==!1&&I.push({label:ce(u.minimizePanel,z),icon:Bt.minimize,action:()=>y(n)}),I.length>0&&E?.canClose!==!1&&I.push({separator:!0}),E?.canClose!==!1&&I.push({label:ce(u.closeTab,z),icon:Bt.close,action:()=>N(n)}),I.length===0)return;let v=W(n),M=v.length>0?[...I,{separator:!0},...v]:I;b({event:l,items:M})},Ee=(n,l)=>{l.preventDefault(),$(null),b({event:l,items:[{label:ce(u.restorePanel,z),icon:Bt.restore,action:()=>h(n)},{label:ce(u.maximizePanel,z),icon:Bt.maximize,action:()=>C(n)},{separator:!0},{label:ce(u.closePanel,z),icon:Bt.close,action:()=>N(n)}]})};Ce(()=>{let n=Object.keys(s.panels);for(let l of Array.from(en.keys()))n.includes(l)||en.delete(l)},[s.panels]),Ce(()=>{let n=()=>{s.draggedPanelId!==null&&(D(null),Ye(null),ae(null))};return window.addEventListener("blur",n),()=>{window.removeEventListener("blur",n)}},[s.draggedPanelId]);let Xe=Oe(null),[Ie,Pt]=at({width:1024,height:768});Ce(()=>{let n=Xe.current;if(!n)return;let l=!1,a=new ResizeObserver(m=>{if(!m||m.length===0)return;let E=m[0].contentRect;if(process.env.NODE_ENV==="development"&&E.height<10&&!l){l=!0;let I=n,v=n.parentElement;for(;v&&v!==document.documentElement&&v.getBoundingClientRect().height<10;){I=v;v=v.parentElement}let M=I.tagName.toLowerCase(),_=I.id?` id="${I.id}"`:"",K=I.className?` class="${I.className}"`:"",H=I===n?"the WindowManager container itself":`a wrapper element: <${M}${_}${K}>`;console.warn(`[react-dockable-desktop] Workspace height is 0px \u2014 the workspace will be invisible.
6
6
 
7
- Zero height found at: ${Y}
7
+ Zero height found at: ${H}
8
8
 
9
9
  Root cause: in CSS, "height: 100%" only works when the parent has an explicit height.
10
10
  If any ancestor has height: auto (the default for <div>), the chain breaks and
@@ -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.`)}Yt({width:Math.max(100,p.width),height:Math.max(100,p.height)})});return f.observe(r),()=>{f.disconnect()}},[]),we(()=>{let r=Oe.width,v=Oe.height;s.floating.forEach(f=>{let h=typeof f.width=="string"?parseFloat(f.width):f.width,p=typeof f.height=="string"?parseFloat(f.height):f.height,z=typeof f.x=="string"?parseFloat(f.x):f.x,N=typeof f.y=="string"?parseFloat(f.y):f.y,W=h,$=p,ee=z,Y=N,re=!1;if(W>r&&(W=Math.max(200,r-20),re=!0),$>v&&($=Math.max(150,v-40),re=!0),!f.anchor){let ue=r-100;ee>ue&&(ee=Math.max(0,ue),re=!0);let ie=v-40;Y>ie&&(Y=Math.max(0,ie),re=!0)}re&&c(f.id,{x:ee,y:Y,width:W,height:$})})},[Oe,s.floating,c]),we(()=>{let r=v=>{if(v.button!==0)return;let f=v.target;if(!f||typeof f.closest!="function")return;let h=f.closest(".rdd-floating-window");if(h){let z=h.getAttribute("data-window-id");z&&(P(z),k(z));return}let p=f.closest(".rdd-workspace-panel");if(p){let z=p.getAttribute("data-active-panel-id");z&&P(z)}};return document.addEventListener("pointerdown",r),()=>{document.removeEventListener("pointerdown",r)}},[k,P]);let Xt=(r,v)=>{v.preventDefault();let f=s.floating.find(Y=>Y.id===r);if(!f||f.maximized)return;k(r);let h=v.currentTarget,p=h.closest(".rdd-floating-window"),z=v.clientX,N=v.clientY,W=p?p.offsetLeft:0,$=p?p.offsetTop:0,ee=()=>{let Y=Ge.current,re=he.current,ue=Qe.current,ie=$e.current;if(ie)c(r,{anchor:q?Ut(ie):ie});else if(ue)C(r,at(ue));else if(re){let de=re.index;re.side==="right"&&(de+=1),u(r,re.leafId,de)}else Y&&_(r,Y.leafId,at(Y.position));He(null),ve()};if(v.pointerType==="touch"){let Y=v.pointerId,re=!1,ue=()=>{re=!0,clearTimeout(de),h.removeEventListener("pointermove",ie),h.removeEventListener("pointerup",ue),h.removeEventListener("pointercancel",ue)},ie=pe=>{Math.hypot(pe.clientX-z,pe.clientY-N)>Te&&ue()},de=setTimeout(()=>{if(re)return;h.removeEventListener("pointermove",ie),h.removeEventListener("pointerup",ue),h.removeEventListener("pointercancel",ue);try{h.setPointerCapture(Y)}catch{return}h.classList.add("rdd-long-press-active"),document.body.classList.add("rdd-dragging-active"),A(r);let pe=It=>{let Et=It.clientX-z,Lt=It.clientY-N;c(r,{x:W+Et,y:$+Lt,anchor:null}),Ne(It.clientX,It.clientY)},Ie=()=>{h.classList.remove("rdd-long-press-active"),document.body.classList.remove("rdd-dragging-active"),h.removeEventListener("pointermove",pe),h.removeEventListener("pointerup",Ie),h.removeEventListener("pointercancel",yt),ee()},yt=()=>{h.classList.remove("rdd-long-press-active"),document.body.classList.remove("rdd-dragging-active"),h.removeEventListener("pointermove",pe),h.removeEventListener("pointerup",Ie),h.removeEventListener("pointercancel",yt),ve()};h.addEventListener("pointermove",pe),h.addEventListener("pointerup",Ie),h.addEventListener("pointercancel",yt)},Se);h.addEventListener("pointermove",ie),h.addEventListener("pointerup",ue),h.addEventListener("pointercancel",ue)}else{let Y=!1,re=de=>{let pe=de.clientX-z,Ie=de.clientY-N;!Y&&(Math.abs(pe)>5||Math.abs(Ie)>5)&&(Y=!0,A(r)),Y&&c(r,{x:W+pe,y:$+Ie,anchor:null})},ue=()=>{document.body.classList.remove("rdd-dragging-active"),window.removeEventListener("pointermove",re),window.removeEventListener("pointerup",ue),window.removeEventListener("pointercancel",ie),Y&&ee()},ie=()=>{document.body.classList.remove("rdd-dragging-active"),window.removeEventListener("pointermove",re),window.removeEventListener("pointerup",ue),window.removeEventListener("pointercancel",ie),Y&&ve()};document.body.classList.add("rdd-dragging-active"),window.addEventListener("pointermove",re),window.addEventListener("pointerup",ue),window.addEventListener("pointercancel",ie)}},i=(r,v,f)=>{f.preventDefault(),f.stopPropagation();let h=s.floating.find(pe=>pe.id===r);if(!h||h.maximized)return;k(r);let p=f.currentTarget,z=p.closest(".rdd-floating-window"),N={x:z?z.offsetLeft:0,y:z?z.offsetTop:0,w:z?z.offsetWidth:400,h:z?z.offsetHeight:300},W=Oe.width,$=Oe.height,ee=typeof h.x=="string"?parseFloat(h.x):h.x,Y=typeof h.y=="string"?parseFloat(h.y):h.y,re=typeof h.width=="string"?parseFloat(h.width):h.width,ue=typeof h.height=="string"?parseFloat(h.height):h.height,ie=v==="se"&&Math.abs(ee+re-W)<4,de=v==="se"&&Math.abs(Y+ue-$)<4;ft({element:p,pointerId:f.pointerId,startClientX:f.clientX,startClientY:f.clientY,captureStart:()=>N,activeClasses:[{el:document.body,classes:["rdd-resizing-active"]}],onMove:(pe,Ie,yt)=>{let It=Jt(v,pe,Ie,yt,{minW:200,minH:150}),{x:Et,y:Lt,w:xn,h:Cn}=It;ie&&(Et=W-xn,Et<0&&(Et=0,xn=W)),de&&(Lt=$-Cn,Lt<0&&(Lt=0,Cn=$)),c(r,{x:Et,y:Lt,width:xn,height:Cn})}})},b=r=>{if(Q.current){let v=r==="left"?-150:150;Q.current.scrollBy({left:v,behavior:"smooth"})}},g=Wn(()=>{G.current&&clearTimeout(G.current),te(!0)},[]),d=Wn(()=>{G.current=setTimeout(()=>te(!1),400)},[]);we(()=>{n==="autohide"&&s.minimized.length>j.current&&(G.current&&clearTimeout(G.current),te(!0),G.current=setTimeout(()=>te(!1),2e3)),j.current=s.minimized.length},[s.minimized.length,n]);let L=Dn();return we(()=>(e?document.documentElement.setAttribute("data-workspace-skin",e):document.documentElement.removeAttribute("data-workspace-skin"),()=>{document.documentElement.removeAttribute("data-workspace-skin")}),[e]),we(()=>(L==="light"?document.documentElement.setAttribute("data-color-scheme","light"):document.documentElement.removeAttribute("data-color-scheme"),()=>{document.documentElement.removeAttribute("data-color-scheme")}),[L]),we(()=>(a?document.documentElement.classList.remove("rdd-no-animations"):document.documentElement.classList.add("rdd-no-animations"),()=>{document.documentElement.classList.remove("rdd-no-animations")}),[a]),fe("div",{className:`rdd-workspace${a?"":" rdd-no-animations"}`,"data-workspace-skin":e,"data-color-scheme":L,style:{display:"flex",flexDirection:"column",position:"relative",width:"100%",height:"100%",overflow:"hidden",userSelect:"none"},dir:s.dir,children:[fe("div",{ref:Ye,className:s.draggedPanelId?"rdd-dragging-active":void 0,style:{flexGrow:1,width:"100%",position:"relative",overflow:"hidden"},children:[s.draggedPanelId!==null&&fe(ko,{children:[S("div",{"data-edge-trigger":"left",className:"rdd-workspace-edge-trigger rdd-edge-trigger-left",onPointerEnter:()=>Pe("left"),onPointerLeave:()=>Pe(null)}),S("div",{"data-edge-trigger":"right",className:"rdd-workspace-edge-trigger rdd-edge-trigger-right",onPointerEnter:()=>Pe("right"),onPointerLeave:()=>Pe(null)}),S("div",{"data-edge-trigger":"top",className:"rdd-workspace-edge-trigger rdd-edge-trigger-top",onPointerEnter:()=>Pe("top"),onPointerLeave:()=>Pe(null)}),S("div",{"data-edge-trigger":"bottom",className:"rdd-workspace-edge-trigger rdd-edge-trigger-bottom",onPointerEnter:()=>Pe("bottom"),onPointerLeave:()=>Pe(null)})]}),s.draggedPanelId!==null&&["top-left","top-right","bottom-left","bottom-right"].map(r=>S("div",{className:`rdd-corner-zone rdd-corner-zone--${r}${ne===r?" rdd-corner-zone--hovered":""}`,onPointerEnter:()=>{He(r),Pe(null)},onPointerLeave:()=>He(null),"aria-hidden":"true"},r)),s.draggedPanelId!==null&&st!==null&&S("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}}})()}),S("div",{style:{width:"100%",height:"100%",overflow:"hidden",position:"relative"},children:s.gridRoot?S(zo,{node:s.gridRoot,path:[],onTabRightClick:Ae,activeDropZone:Xe,onHoverDropZone:Me,onTabDragStart:We,hoveredTab:J,onTabHover:Re,defaultPanelIcon:t,onRequestClosePanel:E}):S("div",{className:"rdd-empty-workspace-grid",children:"Grid Empty"})}),s.floating.map(r=>{let v=s.panels[r.id];if(!v)return null;let f=r.maximized,h=s.draggedPanelId===r.id,p=s.activePanelId===r.id,N=I.get(v.component)?.defaultOptions;return fe("div",{"data-window-id":r.id,dir:s.dir,onPointerDownCapture:()=>{P(r.id),k(r.id)},className:`rdd-floating-window ${f?"rdd-maximized":""} ${p?"rdd-window-focused":""} ${F??""}`,style:(()=>{let ee=typeof r.width=="number"?`${r.width}px`:r.width,Y=typeof r.height=="number"?`${r.height}px`:r.height;if(f)return{position:"absolute",left:0,top:0,width:"100%",height:"100%",zIndex:r.z,pointerEvents:h?"none":"auto"};if(r.anchor){let re=s.floating.filter(Ie=>Ie.anchor===r.anchor&&!Ie.maximized),ue=re.findIndex(Ie=>Ie.id===r.id),ie=8;for(let Ie=0;Ie<ue;Ie++){let yt=typeof re[Ie].height=="number"?re[Ie].height:parseFloat(re[Ie].height);ie+=yt+8}let de=r.anchor.startsWith("top");return{position:"absolute",[r.anchor.endsWith("-right")?"insetInlineEnd":"insetInlineStart"]:8,[de?"top":"bottom"]:ie,width:ee,height:Y,zIndex:r.z,transition:h?"none":"top 0.2s ease, bottom 0.2s ease",pointerEvents:h?"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:ee,height:Y,zIndex:r.z,pointerEvents:h?"none":"auto"}})(),children:[fe("div",{onDoubleClick:()=>w(r.id),onPointerDown:W=>{N?.canDrag!==!1&&Xt(r.id,W)},className:"rdd-floating-window-titlebar rdd-cursor-move",style:{cursor:f||N?.canDrag===!1?"default":"move"},children:[fe("span",{className:"rdd-floating-window-title",children:[S("span",{className:"rdd-window-title-icon",children:N?.icon||t||An}),fe("span",{children:[ge(v.title,D),v.dirty?" *":""]})]}),fe("div",{className:"rdd-titlebar-actions",style:{gap:"var(--rdd-header-button-gap, 4px)"},onPointerDown:W=>W.stopPropagation(),children:[N?.renderHeaderActions&&S("div",{className:"rdd-window-header-actions",children:N.renderHeaderActions(r.id)}),O(r.id).length>0&&S("button",{type:"button",className:"rdd-custom-tab-btn rdd-btn-more-actions",title:"More actions",onClick:W=>{W.stopPropagation();let $=O(r.id);$.length!==0&&m({event:W,items:$})},children:fe("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"currentColor",style:{display:"block"},children:[S("circle",{cx:"12",cy:"5",r:"2"}),S("circle",{cx:"12",cy:"12",r:"2"}),S("circle",{cx:"12",cy:"19",r:"2"})]})}),S("button",{type:"button",title:f?ge(l.restoreSize,D):ge(l.maximize,D),onClick:()=>w(r.id),className:"rdd-custom-tab-btn rdd-btn-maximize-tab",children:S("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:S("rect",{x:"4",y:"4",width:"16",height:"16",rx:"1.5"})})}),N?.canMinimize!==!1&&S("button",{type:"button",title:ge(l.minimize,D),onClick:()=>x(r.id),className:"rdd-custom-tab-btn rdd-btn-minimize-tab",children:S("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"3",children:S("path",{d:"M5 12h14"})})}),N?.canClose!==!1&&S("button",{type:"button",title:ge(l.close,D),onClick:()=>E(r.id),className:"rdd-custom-tab-btn rdd-btn-close-tab",children:S("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"3",children:S("path",{d:"M18 6L6 18M6 6l12 12"})})})]})]}),S("div",{className:X??void 0,style:{flexGrow:1,width:"100%",overflow:"hidden",position:"relative",isolation:"isolate"},children:S(Lo,{panelId:r.id},r.id)}),!f&&fe(ko,{children:[S("div",{onPointerDown:W=>i(r.id,"n",W),className:"rdd-resize-handle rdd-resize-n"}),S("div",{onPointerDown:W=>i(r.id,"ne",W),className:"rdd-resize-handle rdd-resize-ne"}),S("div",{onPointerDown:W=>i(r.id,"e",W),className:"rdd-resize-handle rdd-resize-e"}),S("div",{onPointerDown:W=>i(r.id,"se",W),className:"rdd-resize-handle rdd-resize-se"}),S("div",{onPointerDown:W=>i(r.id,"s",W),className:"rdd-resize-handle rdd-resize-s"}),S("div",{onPointerDown:W=>i(r.id,"sw",W),className:"rdd-resize-handle rdd-resize-sw"}),S("div",{onPointerDown:W=>i(r.id,"w",W),className:"rdd-resize-handle rdd-resize-w"}),S("div",{onPointerDown:W=>i(r.id,"nw",W),className:"rdd-resize-handle rdd-resize-nw"})]})]},r.id)})]}),(n==="always"||s.minimized.length>0)&&fe("div",{className:["rdd-taskbar-footer-container",`rdd-taskbar-mode-${n}`,n==="autohide"&&me?"rdd-taskbar-expanded":""].filter(Boolean).join(" "),style:{height:"48px",zIndex:100},onPointerEnter:n==="autohide"?g:void 0,onPointerLeave:n==="autohide"?d:void 0,children:[n==="autohide"&&S("div",{className:"rdd-taskbar-peek-handle"}),S("button",{type:"button",onClick:()=>b("left"),className:"rdd-taskbar-nav-btn",style:{display:s.minimized.length>4?"block":"none"},children:"\u25C0"}),S("div",{ref:Q,className:"rdd-taskbar-items-container",style:{scrollSnapType:"x mandatory"},children:s.minimized.map(r=>{let f=I.get(r.component)?.defaultOptions?.icon||t||An;return S("div",{onClick:()=>{be.current!=="touch"&&(B(null),M(r.id))},onContextMenu:h=>ke(r.id,h),onPointerDown:h=>{if(be.current=h.pointerType,h.pointerType!=="touch")return;let p=h.currentTarget,z=h.clientX,N=h.clientY,W=h.pointerId,$=!1,ee=()=>{$=!0,clearTimeout(ue),p.removeEventListener("pointermove",re),p.removeEventListener("pointerup",Y),p.removeEventListener("pointercancel",ee)},Y=()=>{ee();let ie=p.getBoundingClientRect();V?.id===r.id?(M(r.id),B(null)):B({id:r.id,rect:ie,title:r.title,component:r.component,fromTouch:!0})},re=ie=>{Math.hypot(ie.clientX-z,ie.clientY-N)>Te&&ee()},ue=setTimeout(()=>{if($)return;p.removeEventListener("pointermove",re),p.removeEventListener("pointerup",Y),p.removeEventListener("pointercancel",ee);try{p.setPointerCapture(W)}catch{return}navigator.vibrate&&navigator.vibrate(10);let ie=de=>{p.removeEventListener("pointerup",ie),p.removeEventListener("pointercancel",ie),ke(r.id,de)};p.addEventListener("pointerup",ie),p.addEventListener("pointercancel",ie)},Se);p.addEventListener("pointermove",re),p.addEventListener("pointerup",Y),p.addEventListener("pointercancel",ee)},onPointerEnter:h=>{if(h.pointerType==="touch"||_e)return;se.current&&clearTimeout(se.current);let p=h.currentTarget.getBoundingClientRect();h.clientX>=p.left&&h.clientX<=p.right&&h.clientY>=p.top&&h.clientY<=p.bottom&&B({id:r.id,rect:p,title:r.title,component:r.component})},onPointerLeave:h=>{h.pointerType!=="touch"&&(se.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:S("span",{className:"rdd-taskbar-item-icon",children:f})},r.id)})}),V&&To(fe("div",{className:"rdd-taskbar-item-tooltip",dir:s.dir,style:{position:"fixed",left:`${V.rect.left+V.rect.width/2}px`,top:`${V.rect.top-8}px`,transform:"translateX(-50%) translateY(-100%)",opacity:1,pointerEvents:"auto",zIndex:999999},onPointerEnter:()=>{se.current&&clearTimeout(se.current)},onPointerLeave:r=>{r.pointerType!=="touch"&&B(null)},onClick:()=>{M(V.id),B(null)},onContextMenu:r=>ke(V.id,r),onPointerDown:r=>{if(r.pointerType!=="touch")return;let v=V.id,f=r.currentTarget,h=r.clientX,p=r.clientY,z=r.pointerId,N=!1,W=()=>{N=!0,clearTimeout(ee),f.removeEventListener("pointermove",$),f.removeEventListener("pointerup",W),f.removeEventListener("pointercancel",W)},$=Y=>{Math.hypot(Y.clientX-h,Y.clientY-p)>Te&&W()},ee=setTimeout(()=>{if(N)return;f.removeEventListener("pointermove",$),f.removeEventListener("pointerup",W),f.removeEventListener("pointercancel",W);try{f.setPointerCapture(z)}catch{return}navigator.vibrate&&navigator.vibrate(10);let Y=re=>{f.removeEventListener("pointerup",Y),f.removeEventListener("pointercancel",Y),ke(v,re)};f.addEventListener("pointerup",Y),f.addEventListener("pointercancel",Y)},Se);f.addEventListener("pointermove",$),f.addEventListener("pointerup",W),f.addEventListener("pointercancel",W)},children:[fe("div",{className:"rdd-tooltip-header-row",children:[fe("span",{className:"rdd-tooltip-title-text rdd-text-truncate",style:{maxWidth:"140px"},children:[ge(V.title,D),s.panels[V.id]?.dirty?" *":""]}),S("span",{onClick:r=>{r.stopPropagation(),E(V.id),B(null)},title:ge(l.closePanel,D),className:"rdd-tooltip-close-x",children:S("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:S("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),S(Dr,{panelId:V.id})]}),document.body),S("button",{type:"button",onClick:()=>b("right"),className:"rdd-taskbar-nav-btn",style:{display:s.minimized.length>4?"block":"none"},children:"\u25B6"})]}),Object.keys(s.panels).map(r=>{let v=s.panels[r];if(!v)return null;let f=Eo(r);return To(S(Wr,{panelId:r,children:S("div",{style:{width:"100%",height:"100%"},dir:s.dir,children:Nr(r,v,I)})}),f,r)}),Z===null&&S(o.Component,{ref:U,theme:"dark",formatMessageProvider:D,onShow:()=>K(!0),onHide:()=>K(!1)}),s.draggedPanelId!==null&&!s.floating.some(r=>r.id===s.draggedPanelId)&&fe("div",{className:"rdd-drag-ghost-tab",style:{left:rt.x+12,top:rt.y+12,zIndex:1e5},children:["\u{1F4C4} ",ge(s.panels[s.draggedPanelId]?.title,D)||"Tab"]})]})},Fr=Or;var _n=class{registry;initialState;config;_actions=null;_initialized=!1;_pendingCalls=[];_pendingOpenPanelIds=new Set;_pendingSubscriptions=[];_disconnectedWarnTimer=null;constructor(t={}){if(this.registry=new Nt,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)})}};import{useContext as ei}from"react";import{createContext as _r,useContext as Hr,useMemo as Br,useState as No}from"react";import{jsx as $r}from"react/jsx-runtime";var Do=_r(null),pn=({children:e})=>{let[t,n]=No({}),[o,a]=No({}),s=Br(()=>({getActiveInGroup:I=>t[I]??null,setActiveInGroup:(I,M)=>n(x=>({...x,[I]:M})),isModifierActive:I=>o[I]??!1,setModifierActive:(I,M)=>a(x=>({...x,[I]:M})),toggleModifier:I=>a(M=>({...M,[I]:!M[I]}))}),[t,o]);return $r(Do.Provider,{value:s,children:e})};function gn(){let e=Hr(Do);if(!e)throw new Error("useToolbar must be used within DockableDesktopProvider");return e}import{createContext as Gr,useCallback as Yr,useContext as Wo,useLayoutEffect as Xr,useMemo as Vr,useRef as Kr,useSyncExternalStore as qr}from"react";import{jsx as Qr}from"react/jsx-runtime";function jr(){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 Hn=Gr(null),Bn=({children:e})=>{let t=Vr(()=>jr(),[]);return Qr(Hn.Provider,{value:t,children:e})};function Zr(e){let t=ln(),n=Wo(Hn),o=Kr(null);if(!n)throw new Error("usePanelContribution must be used within PanelContributionProvider");Xr(()=>{if(n)return o.current?.(),o.current=n.publish(t,e),()=>{o.current?.(),o.current=null}},[n,t,e])}function $n(){let e=je(a=>a.activePanelId),t=Wo(Hn);if(!t)throw new Error("useActivePanelContribution must be used within PanelContributionProvider");let n=Yr(a=>t?t.subscribe(a):()=>{},[t]),o=()=>t&&e?t.get(e):null;return qr(n,o,o)}function Ao(e,t=null){return{id:e.id,label:e.label,icon:e.icon??t,renderContent:()=>e.content}}function Ur(e){let t=$n();return t?.toolbarItems?.length?[...e,{type:"separator"},...t.toolbarItems]:e}function Jr(e,t=null){let n=$n();return n?.sidebarSections?.length?[...e,...n.sidebarSections.map(o=>Ao(o,t))]:e}import{jsx as en}from"react/jsx-runtime";var ti=({contextMenuAdapter:e=Ft,...t})=>{let n=ei(_t),o=en(pn,{children:en(Sn,{...t,children:en(Bn,{children:en(zn,{children:t.children})})})});return n!==null?o:en(En,{adapter:e,formatMessageProvider:t.formatMessage,children:o})};import{useCallback as tn,useRef as Oo,useEffect as ni,useState as oi,useMemo as ri}from"react";import{Fragment as li,jsx as nt,jsxs as Gn}from"react/jsx-runtime";var ii=({modal:e,index:t,isTopmost:n})=>{let{close:o,openModal:a,updateInstance:s,setDirty:I}=Rt(),M=Ke(),x=Ze(),{dir:y}=je(),{modalClass:w,modalBodyClass:c}=pt(),k=Oo(null),{id:T,Component:A,props:_,options:u,dirty:C,dirtyOptions:P}=e,O=u,[m,R]=oi(O.icon||null),H=Oo(O);H.current=O;let D=ge(O.title,M),l=tn(async B=>{if(B?.force){o(T);return}if(k.current){if(!await k.current())return;o(T);return}if(C){a(St,{title:P?.title||x.unsavedChangesTitle,message:P?.message||{id:x.unsavedChangesMessage.id,defaultMessage:x.unsavedChangesMessage.defaultMessage,values:{title:D}},alert:P?.alert,alertType:P?.alertType||"danger",useYesNoTitles:!0,onOK:()=>o(T)},{size:"small"});return}o(T)},[o,a,T,C,P,D,x]),E=tn((B,se)=>I(T,B,se),[I,T]),F=tn(B=>s(T,{options:{...H.current,title:B}}),[s,T]),X=tn(B=>R(B),[]),Z=tn(B=>(k.current=B,()=>{k.current=null}),[]),U=ri(()=>({requestClose:l,setDirty:E,setTitle:F,setIcon:X,onCloseRequested:Z,containerType:"modal",instanceId:T}),[l,E,F,X,Z,T]),Q=C?`${D} *`:D,me=O.size?`rdd-modal-size-${O.size}`:"rdd-modal-size-auto",te=O.closable!==!1,G=O.bodyPadding,j=G!=null?typeof G=="number"?`${G}px`:G:void 0;ni(()=>{if(!n||!te)return;let B=se=>{se.key==="Escape"&&(se.stopPropagation(),l())};return document.addEventListener("keydown",B),()=>document.removeEventListener("keydown",B)},[l,te,n]);let V=`calc(var(--rdd-z-base, 1000) + 9000 + ${t*10})`;return Gn("div",{className:"rdd-modal-overlay",style:{zIndex:V},dir:y,children:[nt("div",{className:"rdd-modal-curtain",onClick:te?()=>l():void 0}),Gn("div",{className:`rdd-modal-window ${me} ${w??""}`,children:[Gn("div",{className:"rdd-modal-header",children:[m&&nt("div",{className:"rdd-modal-icon",children:m}),nt("h4",{className:"rdd-modal-title",children:Q}),te&&nt("button",{className:"rdd-modal-close-button",onClick:()=>l(),title:M(x.closeTooltip),type:"button",children:nt("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:nt("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),nt("div",{className:`rdd-modal-body ${c??""}`,style:j!=null?{padding:j}:void 0,children:nt(Pt,{value:U,children:nt(A,{..._,panelId:T})})})]})]})},si=()=>{let{modals:e}=gt();return e.length===0?null:nt(li,{children:e.map((t,n)=>nt(ii,{modal:t,index:n,isTopmost:n===e.length-1},t.id))})},ai=si;import{useCallback as Bt,useRef as Yn,useEffect as _o,useState as ui,useMemo as pi}from"react";import{useLayoutEffect as di,useState as ci}from"react";function Fo(e){let[t,n]=ci(null);return di(()=>{let o=e.current?.parentElement;if(!o)return;let a=()=>{let I=o.getBoundingClientRect();n({top:I.top,left:I.left,right:window.innerWidth-I.right,height:I.height})};a();let s=new ResizeObserver(a);return s.observe(o),window.addEventListener("resize",a),()=>{s.disconnect(),window.removeEventListener("resize",a)}},[e]),t}import{Fragment as bi,jsx as Be,jsxs as Xn}from"react/jsx-runtime";var fn=({panel:e,position:t,defaultWidth:n,containerRect:o})=>{let{close:a,openModal:s,updateInstance:I,setDirty:M,registerCloseHandler:x,unregisterCloseHandler:y}=Rt(),{modals:w}=gt(),c=Ke(),k=Ze(),{dir:T}=je(),{sidePanelClass:A,sidePanelBodyClass:_}=pt(),u=Yn(null),{id:C,Component:P,props:O,options:m,dirty:R,dirtyOptions:H}=e,D=m,[l,E]=ui(D.icon||null),F=Yn(D);F.current=D;let X=ge(D.title,c),Z=Bt(async K=>{if(K?.force){a(C);return}if(u.current){if(!await u.current())return;a(C);return}if(R){s(St,{title:H?.title||k.unsavedChangesTitle,message:H?.message||{id:k.unsavedChangesMessage.id,defaultMessage:k.unsavedChangesMessage.defaultMessage,values:{title:X}},alert:H?.alert,alertType:H?.alertType||"danger",useYesNoTitles:!0,onOK:()=>a(C)},{size:"small"});return}a(C)},[a,s,C,R,H,X,k]),U=Bt(async()=>u.current?await u.current():!R,[R]);_o(()=>(x(C,U),()=>y(C)),[C,U,x,y]);let Q=Bt((K,_e)=>M(C,K,_e),[M,C]),me=Bt(K=>I(C,{options:{...F.current,title:K}}),[I,C]),te=Bt(K=>E(K),[]),G=Bt(K=>(u.current=K,()=>{u.current=null}),[]),j=pi(()=>({requestClose:Z,setDirty:Q,setTitle:me,setIcon:te,onCloseRequested:G,containerType:t==="left"?"left-panel":"right-panel",instanceId:C}),[Z,Q,me,te,G,t,C]),V=R?`${X} *`:X;_o(()=>{let K=_e=>{_e.key==="Escape"&&w.length===0&&Z()};return document.addEventListener("keydown",K),()=>document.removeEventListener("keydown",K)},[Z,w.length]);let B=D.width||n||400,se=typeof B=="number"?`${B}px`:B,be=D.bodyPadding,ze=be!=null?typeof be=="number"?`${be}px`:be:void 0;return Be("div",{className:`rdd-side-panel rdd-side-panel-${t} rdd-side-panel-visible ${A??""}`,style:{width:se,...o?{top:o.top,height:o.height,bottom:"auto",...t==="right"?{right:o.right}:{left:o.left}}:{}},dir:T,children:Xn("div",{className:"rdd-side-panel-window",children:[Xn("div",{className:"rdd-side-panel-header",children:[l&&Be("div",{className:"rdd-side-panel-icon",children:l}),Be("h4",{className:"rdd-side-panel-title",children:V}),Be("button",{className:"rdd-side-panel-close-button",onClick:()=>Z(),title:c(k.closeTooltip),type:"button",children:Be("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:Be("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),Be("div",{className:`rdd-side-panel-body ${_??""}`,style:ze!=null?{padding:ze}:void 0,children:Be(Pt,{value:j,children:Be(P,{...O,panelId:C})})})]})})},Vn=({children:e})=>{let t=Yn(null),n=Fo(t);return Be("div",{ref:t,style:{display:"contents"},children:e(n)})},gi=({defaultWidth:e})=>{let{leftPanel:t,rightPanel:n}=gt();return Be(Vn,{children:o=>Xn(bi,{children:[t&&Be(fn,{panel:t,position:"left",defaultWidth:e,containerRect:o},t.id),n&&Be(fn,{panel:n,position:"right",defaultWidth:e,containerRect:o},n.id)]})})},fi=({defaultWidth:e})=>{let{leftPanel:t}=gt();return Be(Vn,{children:n=>t?Be(fn,{panel:t,position:"left",defaultWidth:e,containerRect:n},t.id):null})},mi=({defaultWidth:e})=>{let{rightPanel:t}=gt();return Be(Vn,{children:n=>t?Be(fn,{panel:t,position:"right",defaultWidth:e,containerRect:n},t.id):null})},hi=gi;import vi,{useState as mn,useEffect as hn,useRef as Kn,useCallback as bn,useImperativeHandle as yi,useContext as jn,useMemo as ht,createContext as Go,forwardRef as Yo,memo as Pi}from"react";import{jsx as ye,jsxs as vn}from"react/jsx-runtime";function qn(e){return"renderContent"in e}function xi(e){return"render"in e}function Ho(e){return e==null?[]:Array.isArray(e)?e:[e]}var Zn=Go(null),Xo=Go(null);function Ci({tabId:e,onClose:t,onOpen:n,setActiveTabId:o,children:a}){let s=ht(()=>({tabId:e,onClose:t,onOpen:n,openTab:I=>o(I)}),[e,t,n,o]);return ye(Xo.Provider,{value:s,children:a})}function Bo(e,t,n,o){if(xi(e))return ye(vi.Fragment,{children:e.render()},e.id??t);if(qn(e)){if(e.hidden)return null;let a=n===e.id;return ye("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 ye("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 $o=Pi(function({tabs:t,headerEntries:n,footerEntries:o,activeTabId:a,isVisible:s,position:I,onTabClick:M}){return ye("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:vn("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&&ye("div",{className:"rdd-sidebar-header-area",children:n.map((x,y)=>Bo(x,y,a,M))}),ye("div",{className:"rdd-sidebar-tabs-list",children:t.map(x=>{if(x.hidden)return null;let y=a===x.id;return ye("button",{type:"button",onClick:()=>M(x.id),className:`rdd-sidebar-tab-btn${y?" rdd-active":""}`,title:x.label,"aria-pressed":y,children:x.icon},x.id)})}),o.length>0&&ye("div",{className:"rdd-sidebar-footer-area",children:o.map((x,y)=>Bo(x,y,a,M))})]})})});function wi({position:e,currentWidth:t,minWidth:n,maxWidth:o,onWidthChange:a,onResizeStart:s,onResizeEnd:I}){return ye("div",{className:"rdd-resizer-bar",style:{cursor:"col-resize",width:"1px",height:"100%",flexShrink:0,zIndex:20},onPointerDown:x=>{x.preventDefault();let y=x.currentTarget,w=[{el:y,classes:["rdd-active"]},{el:document.body,classes:["rdd-resizing-active","rdd-resizing-col-active"]}];s(),ft({element:y,pointerId:x.pointerId,startClientX:x.clientX,startClientY:x.clientY,captureStart:()=>t,activeClasses:w,onMove:(c,k,T)=>{let A=e==="right"?T-c:T+c;a(Math.max(n,Math.min(o,A)))},onEnd:()=>I()})}})}var Vo=Yo(function({position:t="right",tabs:n,headerAction:o,footerAction:a,defaultWidth:s,minWidth:I=150,maxWidth:M=600,onWidthChange:x,activeTabId:y,onActiveTabChange:w,visible:c,onVisibilityChange:k,stripVisible:T,onStripVisibilityChange:A,showCloseButton:_=!1,hideDefaultHeader:u=!1,renderHeader:C,isSecondary:P=!1,children:O},m){let R=y!==void 0,[H,D]=mn(()=>s??280),l=bn(ne=>{D(ne),x?.(ne)},[x]),[E,F]=mn(!1),[X,Z]=mn(null),U=R?y:X,Q=ht(()=>Ho(o),[o]),me=ht(()=>Ho(a),[a]),te=ht(()=>Q.filter(qn),[Q]),G=ht(()=>me.filter(qn),[me]),j=ht(()=>[...te,...n,...G],[te,n,G]),[V,B]=mn(()=>new Set),se=ht(()=>{let ne=new Set(V);U&&ne.add(U);for(let ce of j)ce.eagerMount&&ne.add(ce.id);return ne},[V,U,j]),be=Kn(U??null);hn(()=>{be.current=U??null},[U]);let ze=Kn(H);hn(()=>{ze.current=H},[H]);let K=bn(ne=>{B(ne!==null?ce=>{if(ce.has(ne))return ce;let $e=new Set(ce);return $e.add(ne),$e}:ce=>{let $e=!1,He=new Set(ce);for(let q of ce){let J=j.find(le=>le.id===q);J&&!J.eagerMount&&!J.preserveState&&(He.delete(q),$e=!0)}return $e?He:ce}),R||Z(ne),w?.(ne)},[R,w,j]);hn(()=>{U!=null&&!j.some(ne=>ne.id===U)&&K(null)},[U,j,K]),yi(m,()=>({openTab:ne=>K(ne),closeDrawer:()=>K(null),getActiveTab:()=>be.current,show:()=>k?.(!0),hide:()=>k?.(!1),toggle:()=>k?.(c===!1),showStrip:()=>A?.(!0),hideStrip:()=>A?.(!1),setWidth:ne=>l(Math.max(I,Math.min(M,ne))),getWidth:()=>ze.current}),[K,c,k,A,l,I,M]);let _e=bn(ne=>{K(U===ne?null:ne)},[U,K]),Xe=bn(()=>K(null),[K]),Ve=u||C!=null,Ge=Kn(!1);hn(()=>{process.env.NODE_ENV==="development"&&(!_||!Ve||Ge.current||(Ge.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`.')))},[_,Ve]);let rt=ht(()=>({openTab:ne=>K(ne),closeDrawer:()=>K(null),getActiveTab:()=>be.current,position:t,isSecondary:P}),[K,t,P]),it=c!==!1,st=it&&T!==!1,Je=it&&U!=null,Qe=ye("div",{className:`rdd-sidebar-content-drawer rdd-${t}`,style:{flexBasis:Je?`${H}px`:"0px",flexShrink:1,flexGrow:0,minWidth:Je?`${I}px`:"0px",maxWidth:Je?`${M}px`:"0px",overflow:"hidden",transition:E?"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(ne=>{if(!se.has(ne.id))return null;let $e=U===ne.id,He=()=>K(ne.id);return vn("div",{style:{display:$e?"flex":"none",flexDirection:"column",height:"100%",width:"100%"},children:[Ve?C?.(ne,Xe,He):vn("div",{className:"rdd-sidebar-drawer-header",children:[ye("span",{className:"rdd-sidebar-header-title",children:ne.label}),_&&ye("button",{type:"button",className:"rdd-sidebar-drawer-close-button",onClick:Xe,title:"Close","aria-label":"Close",children:ye("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:ye("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),ye("div",{className:"rdd-sidebar-drawer-body",children:ye(Ci,{tabId:ne.id,onClose:Xe,onOpen:He,setActiveTabId:K,children:ne.renderContent(ne.id,Xe,He)})})]},ne.id)})}),Pe=Je?ye(wi,{position:t,currentWidth:H,minWidth:I,maxWidth:M,onWidthChange:l,onResizeStart:()=>F(!0),onResizeEnd:()=>F(!1)}):null;return ye(Zn.Provider,{value:rt,children:vn("div",{style:{display:"flex",flexDirection:"row",width:"100%",height:"100%",overflow:"hidden"},children:[t==="left"&&ye($o,{tabs:n,headerEntries:Q,footerEntries:me,activeTabId:U,isVisible:st,position:t,onTabClick:_e}),t==="left"&&Qe,t==="left"&&Pe,ye("div",{style:{flex:"1 1 0%",minWidth:0,overflow:"hidden"},children:O}),t==="right"&&Pe,t==="right"&&Qe,t==="right"&&ye($o,{tabs:n,headerEntries:Q,footerEntries:me,activeTabId:U,isVisible:st,position:t,onTabClick:_e})]})})}),Ri=Yo(function(t,n){let o=jn(Zn);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 ye(Vo,{ref:n,...t,position:a,isSecondary:!0})});function Mi(){let e=jn(Zn);if(!e)throw new Error("useSidebar must be used within Sidebar");return e}function Si(){let e=jn(Xo);if(!e)throw new Error("useSidebarTab must be used within a Sidebar tab renderContent tree");return e}import{forwardRef as Ti,useImperativeHandle as ki,useState as Ko,useRef as qo,useEffect as jo,useLayoutEffect as Ii}from"react";import{createPortal as Ei}from"react-dom";import{Fragment as Wi,jsx as Ue,jsxs as Zo}from"react/jsx-runtime";function Li(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 zi({item:e,position:t,toolbar:n}){let[o,a]=Ko(!1),[s,I]=Ko(null),M=qo(null),x=qo(null),y=e.activeItemId!==void 0,w=y?e.activeItemId:n.getActiveInGroup(e.id),c=e.items.find(u=>!("type"in u)&&u.id===w),k=w!==null,T=c?.icon??e.defaultIcon,A=c?.label??e.label,_=()=>{e.disabled||(!o&&M.current&&I(M.current.getBoundingClientRect()),a(u=>!u))};return Ii(()=>{if(!o||!x.current)return;let u=x.current,C=u.getBoundingClientRect(),P=8;C.right>window.innerWidth-P&&(u.style.left=`${Math.max(P,window.innerWidth-C.width-P)}px`,u.style.right="auto"),C.left<P&&(u.style.left=`${P}px`,u.style.right="auto"),C.bottom>window.innerHeight-P&&(u.style.top=`${Math.max(P,window.innerHeight-C.height-P)}px`,u.style.bottom="auto"),C.top<P&&(u.style.top=`${P}px`,u.style.bottom="auto")},[o]),jo(()=>{if(!o)return;let u=C=>{let P=C.target;M.current?.contains(P)||x.current?.contains(P)||a(!1)};return document.addEventListener("mousedown",u),()=>document.removeEventListener("mousedown",u)},[o]),jo(()=>{if(!o)return;let u=C=>{C.key==="Escape"&&a(!1)};return document.addEventListener("keydown",u),()=>document.removeEventListener("keydown",u)},[o]),Zo(Wi,{children:[Ue("button",{ref:M,type:"button",className:`rdd-toolbar-btn rdd-toolbar-btn-group${k?" rdd-active":""}`,title:A,"aria-label":A,"aria-expanded":o,"aria-haspopup":"menu",disabled:e.disabled,onClick:_,children:T}),o&&s&&Ei(Ue("div",{ref:x,className:`rdd-toolbar-group-flyout rdd-${t}`,style:Li(s,t,document.documentElement.dir==="rtl"),role:"menu",children:e.items.map((u,C)=>{if("type"in u)return Ue("div",{className:"rdd-toolbar-group-flyout-sep",role:"separator"},`sep-${C}`);let P=w===u.id;return Zo("button",{type:"button",className:`rdd-toolbar-group-flyout-item${P?" rdd-active":""}`,disabled:u.disabled,role:"menuitem","aria-pressed":P,onClick:()=>{y?e.onActiveItemChange?.(u.id):n.setActiveInGroup(e.id,u.id),u.onActivate?.(u.id),a(!1)},children:[Ue("span",{className:"rdd-toolbar-group-flyout-icon",children:u.icon}),Ue("span",{className:"rdd-toolbar-group-flyout-label",children:u.label}),u.shortcut&&Ue("span",{className:"rdd-toolbar-group-flyout-shortcut",children:u.shortcut})]},u.id)})}),document.body)]})}function Ni(e,t,n,o){switch(e.type){case"separator":return Ue("div",{className:"rdd-toolbar-separator",role:"separator"},`sep-${t}`);case"action":return Ue("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 Ue("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 Ue("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 Ue(zi,{item:e,position:o,toolbar:n},e.id)}}var Di=Ti(function({position:t="left",items:n,visible:o,onVisibilityChange:a,className:s,style:I},M){let x=gn(),y=t==="left"||t==="right";ki(M,()=>({show:()=>a?.(!0),hide:()=>a?.(!1),toggle:()=>a?.(o===!1)}),[o,a]);let w=o!==!1?{}:y?{width:"0px"}:{height:"0px"};return Ue("div",{className:`rdd-toolbar-strip rdd-${t}${s?` ${s}`:""}`,role:"toolbar","aria-orientation":y?"vertical":"horizontal",style:{...w,...I},children:n.map((c,k)=>Ni(c,k,x,t))})});import{useCallback as Jn,useEffect as nn,useLayoutEffect as Ai,useRef as kt,useState as Qn}from"react";import{createPortal as Uo}from"react-dom";import{jsx as Ce,jsxs as on}from"react/jsx-runtime";var eo=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 eo,Oi=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}}),Fi=()=>on("svg",{className:"rdd-toast__icon",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[Ce("circle",{cx:"8",cy:"8",r:"7",stroke:"currentColor",strokeWidth:"1.5"}),Ce("path",{d:"M8 5v.01M8 7.5v3.5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]}),_i=()=>on("svg",{className:"rdd-toast__icon",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[Ce("circle",{cx:"8",cy:"8",r:"7",stroke:"currentColor",strokeWidth:"1.5"}),Ce("path",{d:"M5 8l2 2 4-4",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})]}),Hi=()=>on("svg",{className:"rdd-toast__icon",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[Ce("path",{d:"M8 2.5L14 13.5H2L8 2.5z",stroke:"currentColor",strokeWidth:"1.5",strokeLinejoin:"round"}),Ce("path",{d:"M8 7v2.5M8 11.5v.01",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]}),Bi=()=>on("svg",{className:"rdd-toast__icon",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[Ce("circle",{cx:"8",cy:"8",r:"7",stroke:"currentColor",strokeWidth:"1.5"}),Ce("path",{d:"M5.5 5.5l5 5M10.5 5.5l-5 5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]}),$i=()=>Ce("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:Ce("path",{d:"M4 4l8 8M12 4l-8 8",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})}),Gi={info:Ce(Fi,{}),success:Ce(_i,{}),warning:Ce(Hi,{}),error:Ce(Bi,{})};function Yi({id:e,message:t,options:n,exiting:o,isLeft:a,showProgress:s,pauseOnHover:I,animation:M,onDismiss:x,onExited:y}){let w=kt(null),c=kt(null),k=kt(null),T=kt(n.duration),A=kt(0),[_,u]=Qn(!1),C=M==="none"?"rdd-toast--visible":M==="fade"?"rdd-toast--fade-entering":a?"rdd-toast--entering-left":"rdd-toast--entering",[P,O]=Qn(C);Ai(()=>{let E=w.current,F=c.current;if(!E||!F||o)return;let X=()=>{E.style.maxHeight=`${E.scrollHeight}px`};X();let Z=new ResizeObserver(X);return Z.observe(F),()=>Z.disconnect()},[o]),nn(()=>{if(M==="none")return;let E=requestAnimationFrame(()=>O("rdd-toast--visible"));return()=>cancelAnimationFrame(E)},[]);let m=Jn(E=>{E<=0||(A.current=Date.now(),k.current=setTimeout(()=>x(e),E))},[e,x]);nn(()=>(k.current&&clearTimeout(k.current),T.current=n.duration,m(n.duration),()=>{k.current&&clearTimeout(k.current)}),[n.duration,m]),nn(()=>{if(!o)return;let E=w.current;if(!E||M==="none"){y(e);return}let F=Z=>{Z.propertyName==="max-height"&&y(e)};E.addEventListener("transitionend",F);let X=setTimeout(()=>y(e),520);return()=>{E.removeEventListener("transitionend",F),clearTimeout(X)}},[o,e,y,M]);let R=()=>{!I||n.duration===0||(k.current&&(clearTimeout(k.current),k.current=null,T.current=Math.max(0,T.current-(Date.now()-A.current))),u(!0))},H=()=>{!I||n.duration===0||(u(!1),m(T.current))},D=["rdd-toast",n.type&&`rdd-toast--${n.type}`,P,o&&"rdd-toast--exiting",_&&"rdd-toast--paused"].filter(Boolean).join(" "),l=n.icon!==void 0?n.icon:n.type?Gi[n.type]:null;return on("div",{ref:w,role:"status","aria-live":"polite",className:D,onMouseEnter:R,onMouseLeave:H,children:[l&&l,Ce("div",{ref:c,className:"rdd-toast__body",children:n.content!==void 0?n.content:t}),n.closable&&Ce("button",{type:"button",className:"rdd-toast__close",onClick:()=>x(e),"aria-label":"Close notification",children:Ce($i,{})}),s&&n.duration>0&&Ce("div",{className:"rdd-toast__progress",style:{animationDuration:`${n.duration}ms`}})]})}function Un(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 Xi({position:e="top-right",maxVisible:t=3,defaultDuration:n=5e3,defaultClosable:o=!0,pauseOnHover:a=!0,animation:s="slide",newestOnTop:I=!1,progressBar:M=!1,width:x=320,adapter:y}){let[w,c]=Qn([]),k=kt([]),T=kt(w);T.current=w;let A=Jn(O=>{c(m=>m.map(R=>R.id===O?{...R,exiting:!0}:R)),T.current.find(m=>m.id===O)?.options.onClose?.()},[]),_=Jn(O=>{let m=k.current.shift()??null;c(R=>{let H=R.filter(l=>l.id!==O);if(!m)return H;let D=Un(m.rawOpts,n,o);return[...H,{id:m.id,message:m.message,options:D,exiting:!1}]})},[n,o]);if(nn(()=>{if(y)return;let O=m=>{if(m.kind==="show"){let R=Un(m.rawOpts,n,o),H={id:m.id,message:m.message,options:R,exiting:!1},D={id:m.id,message:m.message,rawOpts:m.rawOpts};c(l=>l.find(X=>X.id===m.id)?l.map(X=>X.id===m.id?{...X,message:m.message,options:R}:X):l.filter(X=>!X.exiting).length<t?[...l,H]:(k.current.some(X=>X.id===D.id)||k.current.push(D),l))}else m.kind==="update"?(c(R=>R.map(H=>{if(H.id!==m.id)return H;let D={...H.options,...m.patch,id:H.id};return{...H,message:m.message,options:D}})),k.current=k.current.map(R=>R.id!==m.id?R:{...R,message:m.message,rawOpts:{...R.rawOpts,...m.patch}})):m.kind==="dismiss"&&(m.id===void 0?(c(R=>R.map(H=>({...H,exiting:!0}))),k.current=[]):T.current.some(H=>H.id===m.id)?A(m.id):k.current=k.current.filter(H=>H.id!==m.id))};return qe.subscribe(O),()=>qe.unsubscribe(O)},[y,t,n,o,A]),nn(()=>{if(!y)return;let O=m=>{if(m.kind==="show"){let R=Un(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 qe.subscribe(O),()=>qe.unsubscribe(O)},[y,n,o]),y){if(!y.Container)return null;let O=y.Container;return Uo(Ce(O,{position:e}),document.body)}let u=e.endsWith("left"),C="";I===!0&&(C="rdd-toast-container--newest-top"),I===!1&&(C="rdd-toast-container--newest-bottom");let P=["rdd-toast-container",`rdd-toast-container--${e}`,C].filter(Boolean).join(" ");return Uo(Ce("div",{className:P,style:{width:x},"aria-label":"Notifications","aria-live":"polite",children:w.map(O=>Ce(Yi,{id:O.id,message:O.message,options:O.options,exiting:O.exiting,isLeft:u,showProgress:M,pauseOnHover:a,animation:s,onDismiss:A,onExited:_},O.id))}),document.body)}import nr,{useState as Le,useContext as Pn,createContext as no,useRef as Ee,useLayoutEffect as to,useCallback as ot,useMemo as Gt,useEffect as Jo}from"react";import{createPortal as Vi}from"react-dom";import{Fragment as gs,jsx as ae,jsxs as vt}from"react/jsx-runtime";var ut=e=>e==="width"||e==="both",dt=e=>e==="height"||e==="both",Qo=(e,t)=>t==="inline"?dt(e)?"both":"width":ut(e)?"both":"height",yn=(e,t)=>t==="inline"?e==="both"?"height":ut(e)?null:e:e==="both"?"width":dt(e)?null:e,or=(e,t)=>dt(t)?[]:ut(t)?e.startsWith("top-")?["top-left","top-right"]:["bottom-left","bottom-right"]:[e],Ki=(e,t)=>`${e.startsWith("top-")?"top":"bottom"}-${t}`,qi=(e,t)=>`${t}-${e.endsWith("-right")?"right":"left"}`,rr=["top-left","top-right","bottom-left","bottom-right"],ir=no(null),sr=no(null),ar=no(null),bt=80;function ji(e,t,n){let o=e.getBoundingClientRect(),a=t-o.left,s=n-o.top;return a<bt&&s<bt?"top-left":a>o.width-bt&&s<bt?"top-right":a<bt&&s>o.height-bt?"bottom-left":a>o.width-bt&&s>o.height-bt?"bottom-right":null}function Zi({children:e,className:t,style:n}){let[o,a]=Le({}),[s,I]=Le({}),[M,x]=Le({"top-left":[],"top-right":[],"bottom-left":[],"bottom-right":[]}),[y,w]=Le({}),[c,k]=Le(null),[T,A]=Le(null),[_,u]=Le(null),[C,P]=Le(()=>new Map),O=Ee(100),m=Ee(null),R=ot((G,j)=>(a(V=>({...V,[G]:j})),()=>a(V=>{let B={...V};return delete B[G],B})),[]),H=ot(G=>{O.current+=1;let j=O.current;I(V=>({...V,[G]:j})),u(G)},[]),D=ot((G,j,V=null)=>{let B=or(j,V);x(se=>{let be={"top-left":se["top-left"].filter(K=>K!==G),"top-right":se["top-right"].filter(K=>K!==G),"bottom-left":se["bottom-left"].filter(K=>K!==G),"bottom-right":se["bottom-right"].filter(K=>K!==G)};for(let K of B)be[K]=[...be[K],G];return rr.every(K=>be[K].length===se[K].length&&be[K].every((_e,Xe)=>_e===se[K][Xe]))?se:be})},[]),l=ot(G=>{x(j=>({"top-left":j["top-left"].filter(V=>V!==G),"top-right":j["top-right"].filter(V=>V!==G),"bottom-left":j["bottom-left"].filter(V=>V!==G),"bottom-right":j["bottom-right"].filter(V=>V!==G)}))},[]),E=ot((G,j)=>{w(V=>V[G]===j?V:{...V,[G]:j})},[]),F=ot((G,j)=>{P(V=>{let B=new Map(V);return B.set(G,j),B})},[]),X=ot(G=>{P(j=>{let V=new Map(j);return V.delete(G),V})},[]),Z=ot(()=>{P(new Map)},[]),U=Gt(()=>Array.from(C.keys()),[C]),Q=Gt(()=>({registerToolbar:R,insetTop:o.top??0,insetBottom:o.bottom??0}),[R,o]),me=Gt(()=>({managedWindowIds:U,openManaged:F,closeManaged:X,closeAllManaged:Z}),[U,F,X,Z]),te=Gt(()=>({topId:_,zOrders:s,focusWindow:H,containerRef:m,stacks:M,dockedSizes:y,dockWindow:D,undockWindow:l,reportDockedSize:E,draggingId:c,setDraggingId:k,hoveredZone:T,setHoveredZone:A,insetTop:o.top??0,insetBottom:o.bottom??0,insetInlineStart:o.left??0,insetInlineEnd:o.right??0}),[_,s,H,M,y,D,l,E,c,T,o]);return ae(ir.Provider,{value:Q,children:ae(sr.Provider,{value:me,children:ae(ar.Provider,{value:te,children:vt("div",{ref:m,className:`rdd-panel-overlay-root${c!==null?" rdd-dragging-active":""}${t?" "+t:""}`,style:n,children:[e,c!==null&&ae(Ui,{hoveredZone:T}),Array.from(C.entries()).map(([G,j])=>ae(lr,{id:G,title:j.title,icon:j.icon,open:!0,onClose:()=>X(G),defaultAnchor:j.anchor??"top-right",defaultWidth:j.width??320,defaultHeight:j.height??240,defaultStretch:j.stretch,children:j.content},G))]})})})})}function Ui({hoveredZone:e}){return ae(gs,{children:rr.map(t=>ae("div",{className:`rdd-panel-float-dropzone rdd-panel-float-dropzone--${t}${e===t?" rdd-panel-float-dropzone--hovered":""}`,"aria-hidden":"true"},t))})}function Ji({position:e,variant:t="transparent",buttonVariant:n="ghost",buttonSize:o,style:a,className:s,children:I}){let M=Pn(ir),x=Ee(null),y=Ee(null);to(()=>{let A=x.current;if(!A||!M)return;let _=()=>{let C=e==="top"||e==="bottom"?A.offsetHeight:A.offsetWidth;y.current?.(),y.current=M.registerToolbar(e,C)};_();let u=new ResizeObserver(_);return u.observe(A),()=>{u.disconnect(),y.current?.(),y.current=null}},[e,M?.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=M?.insetTop??0,w.bottom=M?.insetBottom??0):(w.insetInlineEnd=0,w.top=M?.insetTop??0,w.bottom=M?.insetBottom??0);let k=e==="left"||e==="right"?{...(M?.insetTop??0)>0?{paddingTop:0}:{},...(M?.insetBottom??0)>0?{paddingBottom:0}:{}}:{},T=o!=null?{"--rdd-panel-toolbar-btn-size":`${o}px`}:{};return ae("div",{ref:x,className:`rdd-panel-toolbar rdd-panel-toolbar--${e}${s?" "+s:""}`,"data-variant":t,"data-btn-variant":n,style:{...w,...k,...T,...a},children:I})}function Qi({icon:e,onClick:t,disabled:n,title:o,variant:a}){return ae("button",{type:"button",className:"rdd-panel-toolbar-btn",onClick:t,disabled:n,title:o,"aria-label":o,...a?{"data-variant":a}:{},children:e})}function es({icon:e,active:t,onToggle:n,disabled:o,title:a,variant:s}){return ae("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 ts(){return ae("span",{className:"rdd-panel-toolbar__sep","aria-hidden":"true"})}function ns(){return ae("span",{className:"rdd-panel-toolbar__spacer","aria-hidden":"true"})}function os({children:e}){return ae("span",{className:"rdd-panel-toolbar__item",children:e})}function rs({children:e}){return ae("div",{className:"rdd-panel-toolbar__center",children:e})}function is({placeholder:e="Search\u2026",onSearch:t,onSelect:n}){let[o,a]=Le(!1),[s,I]=Le(""),[M,x]=Le([]),[y,w]=Le(null),c=Ee(null),k=Ee(null),T=Ee(null),A=Ee(null),_=()=>{a(!0),setTimeout(()=>k.current?.focus({preventScroll:!0}),0)},u=()=>{a(!1),I(""),x([]),w(null),T.current?.abort(),A.current&&clearTimeout(A.current)},C=D=>{let l=D.target.value;if(I(l),T.current?.abort(),A.current&&clearTimeout(A.current),!l.trim()){x([]),w(null);return}A.current=setTimeout(async()=>{let E=new AbortController;T.current=E;try{let F=await t(l,E.signal);if(!E.signal.aborted){x(F);let X=c.current;if(X&&F.length>0){let Z=X.getBoundingClientRect(),U=Math.max(Z.width,240),Q=Z.left;Q+U>window.innerWidth-8&&(Q=window.innerWidth-U-8),w({top:Z.bottom+4,left:Q,width:U})}else w(null)}}catch{}},300)},P=D=>{n(D),u()},O=D=>{c.current?.contains(D.relatedTarget)||u()},m=D=>{D.key==="Escape"&&u()},R=Gt(()=>{let D={};for(let l of M){let E=l.group??"";D[E]||(D[E]=[]),D[E].push(l)}return D},[M]),H=vt("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[ae("circle",{cx:"6.5",cy:"6.5",r:"4.5"}),ae("line",{x1:"10",y1:"10",x2:"14",y2:"14"})]});return o?vt("div",{ref:c,className:"rdd-panel-toolbar-search rdd-panel-toolbar-search--open",onBlur:O,children:[ae("button",{type:"button",className:"rdd-panel-toolbar-btn",onClick:u,"aria-label":"Close search",title:"Close search",children:H}),ae("input",{ref:k,className:"rdd-panel-toolbar-search__input",type:"text",value:s,onChange:C,onKeyDown:m,placeholder:e,autoComplete:"off"}),y&&M.length>0&&Vi(ae("div",{className:"rdd-panel-toolbar-search__dropdown",style:{position:"fixed",top:y.top,left:y.left,width:y.width},onMouseDown:D=>D.preventDefault(),children:Object.entries(R).map(([D,l])=>vt(nr.Fragment,{children:[D&&ae("div",{className:"rdd-panel-toolbar-search__group",children:D}),l.map(E=>vt("button",{type:"button",className:"rdd-panel-toolbar-search__item",onClick:()=>P(E),children:[E.icon&&ae("span",{className:"rdd-panel-toolbar-search__item-icon",children:E.icon}),ae("span",{className:"rdd-panel-toolbar-search__item-label",children:E.label}),E.description&&ae("span",{className:"rdd-panel-toolbar-search__item-desc",children:E.description})]},E.id))]},D||"__default__"))}),document.body)]}):ae("div",{ref:c,className:"rdd-panel-toolbar-search",children:ae("button",{type:"button",className:"rdd-panel-toolbar-btn",onClick:_,title:"Search","aria-label":"Search",children:H})})}function lr(e){let t=Pn(ar);return e.open?ae(ds,{ctx:t,...e},e.id):null}var ss=120,as=60,$t=8,ls=8,er=16,tr=40;function ds({id:e,title:t,icon:n,defaultAnchor:o,defaultWidth:a,defaultHeight:s,defaultStretch:I,stretch:M,onPlacementChange:x,stretchable:y=!0,children:w,ctx:c,onClose:k}){let T=Pn(At)?.isRtl??!1,A=Ke(),_=Ze(),[u,C]=Le("docked"),[P,O]=Le(o),[m,R]=Le(I??null),H=M!==void 0,D=H?M??null:m,[l,E]=Le(null),[F,X]=Le({w:a,h:s}),Z=Ee(null),U=Ee(u);U.current=u;let Q=Ee(l);Q.current=l;let me=Ee(F);me.current=F;let te=Ee(D);te.current=D;let G=Ee(P);G.current=P;let j=Ee(x);j.current=x;let[V,B]=Le({inline:!1,block:!1}),se=Ee(V);se.current=V;let be=Ee(0),ze=ot((q,J)=>{O(q),H||R(J),j.current?.({anchor:q,stretch:J})},[H]),K=Ee(null);to(()=>{u==="docked"&&c?.dockWindow(e,P,D)},[u,P,D]),to(()=>()=>{c?.undockWindow(e)},[]);let _e=Ee(!1);Jo(()=>{if(process.env.NODE_ENV!=="development"||_e.current||u!=="docked"||!dt(D)||!c)return;let q=P.endsWith("-right")?"right":"left",J=[`top-${q}`,`bottom-${q}`].flatMap(le=>c.stacks[le]??[]).filter(le=>le!==e);J.length!==0&&(_e.current=!0,console.warn(`[react-dockable-desktop] PanelFloatingWindow "${e}" stretches the block axis (stretch: "${D}") while ${J.length} other widget(s) are anchored to the same side (${J.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.`))},[u,D,P,c?.stacks,e]),Jo(()=>{c?.reportDockedSize(e,F.h)},[F.h]);let Xe=c?.zOrders[e]??101,Ve=!c||c.topId===e,Ge=()=>{let q=Z.current?.offsetParent;return{cw:q?.clientWidth??9999,ch:q?.clientHeight??9999}},rt=()=>{let q=c?.insetInlineStart??0,J=c?.insetInlineEnd??0;return{left:(T?J:q)+$t,right:(T?q:J)+$t,top:c?.insetTop??0,bottom:c?.insetBottom??0}},it=()=>{c?.focusWindow(e)},st=q=>{if(q.button!==0)return;q.preventDefault();let J,le;if(U.current==="docked"){let he=Z.current,Re=c?.containerRef?.current;if(he&&Re){let Me=he.getBoundingClientRect(),Ne=Re.getBoundingClientRect();J=Me.left-Ne.left,le=Me.top-Ne.top}else J=$t,le=c?.insetTop??0}else J=Q.current?.x??0,le=Q.current?.y??0;K.current={mouseX:q.clientX,mouseY:q.clientY,posX:J,posY:le,hasDragged:!1},Z.current?.setPointerCapture(q.pointerId)},Je=q=>J=>{if(J.button!==0)return;J.preventDefault(),J.stopPropagation();let le=0,he=0;if(U.current==="free")le=Q.current?.x??0,he=Q.current?.y??0;else{let De=Z.current,We=De?.offsetParent;if(De&&We){let Ae=De.getBoundingClientRect(),ke=We.getBoundingClientRect();le=Ae.left-ke.left,he=Ae.top-ke.top}}let Re=Z.current?.getBoundingClientRect(),Me={x:le,y:he,w:ut(te.current)&&Re?Re.width:me.current.w,h:dt(te.current)&&Re?Re.height:me.current.h},Ne=q.includes("e")||q.includes("w"),Se=q.includes("n")||q.includes("s"),Te=!1,ve={inline:!1,block:!1},at=()=>{if(Te||U.current!=="docked")return;let De=te.current,We=Ne&&ut(De),Ae=Se&&dt(De);if(!We&&!Ae)return;Te=!0;let ke=De,Ye=G.current;if(We){ke=yn(ke,"inline");let Oe=q.includes("e");Ye=Ki(Ye,Oe!==T?"left":"right")}Ae&&(ke=yn(ke,"block"),Ye=qi(Ye,q.includes("s")?"top":"bottom")),ze(Ye,ke)};ft({element:J.currentTarget,pointerId:J.pointerId,startClientX:J.clientX,startClientY:J.clientY,captureStart:()=>Me,activeClasses:[{el:document.body,classes:["rdd-resizing-active"]}],onMove:(De,We,Ae)=>{let{cw:ke,ch:Ye}=Ge(),Oe=U.current==="docked"?rt():{left:0,right:0,top:0,bottom:0},{x:Yt,y:Xt,w:i,h:b}=Jt(q,De,We,Ae,{minW:ss,minH:as,maxW:ke-Oe.right-Ae.x,maxH:Ye-Oe.bottom-Ae.y,minX:Oe.left,minY:Oe.top});if(at(),U.current==="docked"&&y){let d=ke-Oe.left-Oe.right,L=Ye-Oe.top-Oe.bottom-be.current,r=te.current,v={...ve};Ne&&!ut(r)&&(i>=d-er?v.inline=!0:ve.inline&&i<d-tr&&(v.inline=!1)),Se&&!dt(r)&&(b>=L-er?v.block=!0:ve.block&&b<L-tr&&(v.block=!1)),(v.inline!==ve.inline||v.block!==ve.block)&&(ve=v,B(v))}let g=Te?yn(yn(te.current,Ne?"inline":"block"),Se?"block":"inline"):te.current;X(d=>({w:ut(g)?d.w:i,h:dt(g)?d.h:b})),U.current==="free"&&E({x:Yt,y:Xt})},onEnd:De=>{if(!ve.inline&&!ve.block){(se.current.inline||se.current.block)&&B({inline:!1,block:!1});return}X(Ae=>({w:ve.inline?De.w:Ae.w,h:ve.block?De.h:Ae.h}));let We=te.current;ve.inline&&(We=Qo(We,"inline")),ve.block&&(We=Qo(We,"block")),ze(G.current,We),B({inline:!1,block:!1})}})},Qe=q=>{if(K.current){let J=K.current;if(!J.hasDragged){if(Math.abs(q.clientX-J.mouseX)+Math.abs(q.clientY-J.mouseY)<4)return;if(J.hasDragged=!0,U.current==="docked"){if(te.current){let Te=Z.current?.getBoundingClientRect();Te&&X({w:Math.round(Te.width),h:Math.round(Te.height)}),ze(G.current,null)}c?.undockWindow(e),C("free")}document.body.classList.add("rdd-dragging-active"),c?.setDraggingId(e)}let{cw:le,ch:he}=Ge(),Re=Math.max(0,Math.min(J.posX+q.clientX-J.mouseX,le-me.current.w)),Me=Math.max(0,Math.min(J.posY+q.clientY-J.mouseY,he-me.current.h));E({x:Re,y:Me});let Ne=c?.containerRef?.current;if(Ne){let Se=ji(Ne,q.clientX,q.clientY);c?.setHoveredZone(Se&&T?Ut(Se):Se)}}},Pe=()=>{if(K.current?.hasDragged){let q=c?.hoveredZone;q&&(c?.dockWindow(e,q,te.current),C("docked"),E(null),ze(q,te.current)),c?.setHoveredZone(null),c?.setDraggingId(null)}document.body.classList.remove("rdd-dragging-active"),K.current=null},ne=()=>{K.current?.hasDragged&&(c?.setHoveredZone(null),c?.setDraggingId(null)),document.body.classList.remove("rdd-dragging-active"),K.current=null},ce;if(u==="docked"&&c){let q=or(P,D),J=0,le=q.length===0;for(let Re of q){let Me=c.stacks[Re]??[],Ne=Me.indexOf(e);if(Ne===-1)continue;le=!0;let Se=0;for(let Te=0;Te<Ne;Te++)Se+=(c.dockedSizes[Me[Te]]??s)+ls;J=Math.max(J,Se)}be.current=J;let he=rt();ce={zIndex:Xe,transition:"top 0.2s ease, bottom 0.2s ease",opacity:le?void 0:0,pointerEvents:le?void 0:"none"},ut(D)?(ce.insetInlineStart=(c.insetInlineStart??0)+$t,ce.insetInlineEnd=(c.insetInlineEnd??0)+$t):(ce[P.endsWith("-right")?"insetInlineEnd":"insetInlineStart"]=$t,ce.width=F.w),dt(D)?(ce.top=he.top,ce.bottom=he.bottom):P.startsWith("top-")?(ce.top=he.top+J,ce.height=F.h):(ce.bottom=he.bottom+J,ce.height=F.h)}else ce={left:l?.x??0,top:l?.y??0,width:F.w,height:F.h,zIndex:Xe};let $e=nr.useMemo(()=>{if(u==="free")return["n","ne","e","se","s","sw","w","nw"];let q=P.startsWith("top-")?"s":"n",le=P.endsWith("-right")!==T?"w":"e",he=ut(D),Re=dt(D),Me=[];return Me.push(...he?["e","w"]:[le]),Me.push(...Re?["n","s"]:[q]),!he&&!Re&&Me.push(`${q}${le}`),Me},[u,P,T,D]),He=vt("svg",{width:"8",height:"8",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",children:[ae("line",{x1:"1",y1:"1",x2:"9",y2:"9"}),ae("line",{x1:"9",y1:"1",x2:"1",y2:"9"})]});return vt("div",{ref:Z,dir:T?"rtl":"ltr",className:["rdd-panel-float",Ve?"rdd-panel-float--active":"",V.inline||V.block?"rdd-panel-float--snapping":""].filter(Boolean).join(" "),style:ce,onPointerDown:it,onPointerMove:Qe,onPointerUp:Pe,onPointerCancel:ne,children:[vt("div",{className:"rdd-panel-float__header",onPointerDown:st,children:[n&&ae("span",{className:"rdd-panel-float__icon",children:n}),ae("span",{className:"rdd-panel-float__title",children:ge(t,A)}),ae("button",{type:"button",className:"rdd-panel-float__close",onClick:k,onPointerDown:q=>q.stopPropagation(),title:ge(_.closeTooltip,A),"aria-label":ge(_.closeTooltip,A),children:He})]}),ae("div",{className:"rdd-panel-float__body",children:w}),$e.map(q=>ae("div",{className:`rdd-resize-handle rdd-resize-${q}`,onPointerDown:Je(q)},q))]})}function cs(){let[e,t]=Le(!1),n=ot(()=>{t(!0)},[]),o=ot(()=>{t(!1)},[]);return{isOpen:e,open:n,close:o}}var us=[];function ps(){let e=Pn(sr),t=e?.managedWindowIds??us;return Gt(()=>({open:(n,o)=>e?.openManaged(n,o),close:n=>e?.closeManaged(n),closeAll:()=>e?.closeAllManaged(),isOpen:n=>t.includes(n),openIds:t}),[e,t])}export{St as ConfirmationForm,In as ContextMenu,En as ContextMenuProvider,Ft as DefaultContextMenuAdapter,ti as DockableDesktopProvider,wn as FormContainerContext,Pt as FormContainerProvider,fi as LeftPanelRenderer,ai as ModalStackRenderer,Bn as PanelContributionProvider,lr as PanelFloatingWindow,Zi as PanelOverlayRoot,zn as PanelProvider,rn as PanelRegistry,Nt as PanelRegistryClass,Ji as PanelToolbar,os as PanelToolbarItem,ts as PanelToolbarSeparator,mi as RightPanelRenderer,Ri as SecondarySidebar,hi as SidePanelRenderer,Vo as Sidebar,Xi as ToastContainer,Di as Toolbar,Qi as ToolbarButton,rs as ToolbarCenter,pn as ToolbarProvider,is as ToolbarSearchInput,ns as ToolbarSpacer,es as ToolbarToggle,Fr as WindowManager,Sn as WindowManagerProvider,_n as WorkspaceClient,Jt as computeResizedRect,Vt as defaultPredefinedMessages,ge as formatLabel,Dt as isSerializable,Ao as sidebarSectionToTab,ft as startPointerDrag,Oi as toast,$n as useActivePanelContribution,Dn as useColorScheme,zt as useFormContainer,Ke as useFormatMessage,Jr as useMergedSidebarTabs,Ur as useMergedToolbarItems,Rt as usePanelActions,yr as usePanelContext,Pr as usePanelContextMenu,Zr as usePanelContribution,cs as usePanelFloatingWindow,ps as usePanelFloatingWindowManager,ln as usePanelId,gr as usePanelSize,gt as usePanelState,Ze as usePredefinedMessages,Kt as useRegistry,wr as useShowContextMenu,Mi as useSidebar,Si as useSidebarTab,pt as useStyleClasses,gn as useToolbar,qt as useWindowManagerActions,je as useWindowManagerState};
23
+ 3. Verify styles.css is imported \u2014 it anchors html, body, #root to 100% height.`)}Pt({width:Math.max(100,E.width),height:Math.max(100,E.height)})});return a.observe(n),()=>{a.disconnect()}},[]),Ce(()=>{let n=Ie.width,l=Ie.height;s.floating.forEach(a=>{let m=typeof a.width=="string"?parseFloat(a.width):a.width,E=typeof a.height=="string"?parseFloat(a.height):a.height,I=typeof a.x=="string"?parseFloat(a.x):a.x,v=typeof a.y=="string"?parseFloat(a.y):a.y,M=m,_=E,K=I,H=v,Z=!1;if(M>n&&(M=Math.max(200,n-20),Z=!0),_>l&&(_=Math.max(150,l-40),Z=!0),!a.anchor){let ne=n-100;K>ne&&(K=Math.max(0,ne),Z=!0);let ie=l-40;H>ie&&(H=Math.max(0,ie),Z=!0)}Z&&d(a.id,{x:K,y:H,width:M,height:_})})},[Ie,s.floating,d]),Ce(()=>{let n=l=>{if(l.button!==0)return;let a=l.target;if(!a||typeof a.closest!="function")return;let m=a.closest(".rdd-floating-window");if(m){let I=m.getAttribute("data-window-id");I&&(x(I),R(I));return}let E=a.closest(".rdd-workspace-panel");if(E){let I=E.getAttribute("data-active-panel-id");I&&x(I)}};return document.addEventListener("pointerdown",n),()=>{document.removeEventListener("pointerdown",n)}},[R,x]);let Vt=(n,l)=>{l.preventDefault();let a=s.floating.find(H=>H.id===n);if(!a||a.maximized)return;R(n);let m=l.currentTarget,E=m.closest(".rdd-floating-window"),I=l.clientX,v=l.clientY,M=E?E.offsetLeft:0,_=E?E.offsetTop:0,K=()=>{let H=Be.current,Z=fe.current,ne=Qe.current,ie=$e.current;if(ie)d(n,{anchor:V?Jt(ie):ie});else if(ne)w(n,dt(ne));else if(Z){let me=Z.index;Z.side==="right"&&(me+=1),g(n,Z.leafId,me)}else H&&A(n,H.leafId,dt(H.position));Fe(null),be()};if(l.pointerType==="touch"){let H=l.pointerId,Z=!1,ne=()=>{Z=!0,clearTimeout(me),m.removeEventListener("pointermove",ie),m.removeEventListener("pointerup",ne),m.removeEventListener("pointercancel",ne)},ie=_e=>{Math.hypot(_e.clientX-I,_e.clientY-v)>Se&&ne()},me=setTimeout(()=>{if(Z)return;m.removeEventListener("pointermove",ie),m.removeEventListener("pointerup",ne),m.removeEventListener("pointercancel",ne);try{m.setPointerCapture(H)}catch{return}m.classList.add("rdd-long-press-active"),document.body.classList.add("rdd-dragging-active"),D(n);let _e=It=>{let Lt=It.clientX-I,Nt=It.clientY-v;d(n,{x:M+Lt,y:_+Nt,anchor:null}),De(It.clientX,It.clientY)},de=()=>{m.classList.remove("rdd-long-press-active"),document.body.classList.remove("rdd-dragging-active"),m.removeEventListener("pointermove",_e),m.removeEventListener("pointerup",de),m.removeEventListener("pointercancel",ve),K()},ve=()=>{m.classList.remove("rdd-long-press-active"),document.body.classList.remove("rdd-dragging-active"),m.removeEventListener("pointermove",_e),m.removeEventListener("pointerup",de),m.removeEventListener("pointercancel",ve),be()};m.addEventListener("pointermove",_e),m.addEventListener("pointerup",de),m.addEventListener("pointercancel",ve)},Me);m.addEventListener("pointermove",ie),m.addEventListener("pointerup",ne),m.addEventListener("pointercancel",ne)}else{let H=!1,Z=me=>{let _e=me.clientX-I,de=me.clientY-v;!H&&(Math.abs(_e)>5||Math.abs(de)>5)&&(H=!0,D(n)),H&&d(n,{x:M+_e,y:_+de,anchor:null})},ne=()=>{document.body.classList.remove("rdd-dragging-active"),window.removeEventListener("pointermove",Z),window.removeEventListener("pointerup",ne),window.removeEventListener("pointercancel",ie),H&&K()},ie=()=>{document.body.classList.remove("rdd-dragging-active"),window.removeEventListener("pointermove",Z),window.removeEventListener("pointerup",ne),window.removeEventListener("pointercancel",ie),H&&be()};document.body.classList.add("rdd-dragging-active"),window.addEventListener("pointermove",Z),window.addEventListener("pointerup",ne),window.addEventListener("pointercancel",ie)}},Ve=(n,l,a)=>{a.preventDefault(),a.stopPropagation();let m=s.floating.find(_e=>_e.id===n);if(!m||m.maximized)return;R(n);let E=a.currentTarget,I=E.closest(".rdd-floating-window"),v={x:I?I.offsetLeft:0,y:I?I.offsetTop:0,w:I?I.offsetWidth:400,h:I?I.offsetHeight:300},M=Ie.width,_=Ie.height,K=typeof m.x=="string"?parseFloat(m.x):m.x,H=typeof m.y=="string"?parseFloat(m.y):m.y,Z=typeof m.width=="string"?parseFloat(m.width):m.width,ne=typeof m.height=="string"?parseFloat(m.height):m.height,ie=l==="se"&&Math.abs(K+Z-M)<4,me=l==="se"&&Math.abs(H+ne-_)<4;mt({element:E,pointerId:a.pointerId,startClientX:a.clientX,startClientY:a.clientY,captureStart:()=>v,activeClasses:[{el:document.body,classes:["rdd-resizing-active"]}],onMove:(_e,de,ve)=>{let It=Qt(l,_e,de,ve,{minW:200,minH:150}),{x:Lt,y:Nt,w:Cn,h:wn}=It;ie&&(Lt=M-Cn,Lt<0&&(Lt=0,Cn=M)),me&&(Nt=_-wn,Nt<0&&(Nt=0,wn=_)),d(n,{x:Lt,y:Nt,width:Cn,height:wn})}})},pt=n=>{if(Q.current){let l=n==="left"?-150:150;Q.current.scrollBy({left:l,behavior:"smooth"})}},i=On(()=>{G.current&&clearTimeout(G.current),ee(!0)},[]),f=On(()=>{G.current=setTimeout(()=>ee(!1),400)},[]);Ce(()=>{o==="autohide"&&s.minimized.length>j.current&&(G.current&&clearTimeout(G.current),ee(!0),G.current=setTimeout(()=>ee(!1),2e3)),j.current=s.minimized.length},[s.minimized.length,o]);let p=Wn();return Ce(()=>(e?document.documentElement.setAttribute("data-workspace-skin",e):document.documentElement.removeAttribute("data-workspace-skin"),()=>{document.documentElement.removeAttribute("data-workspace-skin")}),[e]),Ce(()=>(p==="light"?document.documentElement.setAttribute("data-color-scheme","light"):document.documentElement.removeAttribute("data-color-scheme"),()=>{document.documentElement.removeAttribute("data-color-scheme")}),[p]),Ce(()=>(c?document.documentElement.classList.remove("rdd-no-animations"):document.documentElement.classList.add("rdd-no-animations"),()=>{document.documentElement.classList.remove("rdd-no-animations")}),[c]),pe("div",{className:`rdd-workspace${c?"":" rdd-no-animations"}`,"data-workspace-skin":e,"data-color-scheme":p,style:{display:"flex",flexDirection:"column",position:"relative",width:"100%",height:"100%",overflow:"hidden",userSelect:"none"},dir:s.dir,children:[pe("div",{ref:Xe,className:s.draggedPanelId?"rdd-dragging-active":void 0,style:{flexGrow:1,width:"100%",position:"relative",overflow:"hidden"},children:[s.draggedPanelId!==null&&pe(Eo,{children:[L("div",{"data-edge-trigger":"left",className:"rdd-workspace-edge-trigger rdd-edge-trigger-left",onPointerEnter:()=>ye("left"),onPointerLeave:()=>ye(null)}),L("div",{"data-edge-trigger":"right",className:"rdd-workspace-edge-trigger rdd-edge-trigger-right",onPointerEnter:()=>ye("right"),onPointerLeave:()=>ye(null)}),L("div",{"data-edge-trigger":"top",className:"rdd-workspace-edge-trigger rdd-edge-trigger-top",onPointerEnter:()=>ye("top"),onPointerLeave:()=>ye(null)}),L("div",{"data-edge-trigger":"bottom",className:"rdd-workspace-edge-trigger rdd-edge-trigger-bottom",onPointerEnter:()=>ye("bottom"),onPointerLeave:()=>ye(null)})]}),s.draggedPanelId!==null&&["top-left","top-right","bottom-left","bottom-right"].map(n=>L("div",{className:`rdd-corner-zone rdd-corner-zone--${n}${te===n?" rdd-corner-zone--hovered":""}`,onPointerEnter:()=>{Fe(n),ye(null)},onPointerLeave:()=>Fe(null),"aria-hidden":"true"},n)),s.draggedPanelId!==null&&st!==null&&L("div",{className:"rdd-workspace-edge-preview",style:(()=>{let n=`${s.edgeSplitRatio*100}%`;switch(st){case"left":return{left:0,top:0,bottom:0,width:n};case"right":return{right:0,top:0,bottom:0,width:n};case"top":return{top:0,left:0,right:0,height:n};case"bottom":return{bottom:0,left:0,right:0,height:n}}})()}),L("div",{style:{width:"100%",height:"100%",overflow:"hidden",position:"relative"},children:s.gridRoot?L(zo,{node:s.gridRoot,path:[],onTabRightClick:We,activeDropZone:Ge,onHoverDropZone:Re,onTabDragStart:ke,hoveredTab:J,onTabHover:we,defaultPanelIcon:t,onRequestClosePanel:N}):L("div",{className:"rdd-empty-workspace-grid",children:"Grid Empty"})}),s.floating.map(n=>{let l=s.panels[n.id];if(!l)return null;let a=n.maximized,m=s.draggedPanelId===n.id,E=s.activePanelId===n.id,v=S.get(l.component)?.defaultOptions;return pe("div",{"data-window-id":n.id,dir:s.dir,onPointerDownCapture:()=>{x(n.id),R(n.id)},className:`rdd-floating-window ${a?"rdd-maximized":""} ${E?"rdd-window-focused":""} ${O??""}`,style:(()=>{let K=typeof n.width=="number"?`${n.width}px`:n.width,H=typeof n.height=="number"?`${n.height}px`:n.height;if(a)return{position:"absolute",left:0,top:0,width:"100%",height:"100%",zIndex:n.z,pointerEvents:m?"none":"auto"};if(n.anchor){let Z=s.floating.filter(de=>de.anchor===n.anchor&&!de.maximized),ne=Z.findIndex(de=>de.id===n.id),ie=8;for(let de=0;de<ne;de++){let ve=typeof Z[de].height=="number"?Z[de].height:parseFloat(Z[de].height);ie+=ve+8}let me=n.anchor.startsWith("top");return{position:"absolute",[n.anchor.endsWith("-right")?"insetInlineEnd":"insetInlineStart"]:8,[me?"top":"bottom"]:ie,width:K,height:H,zIndex:n.z,transition:m?"none":"top 0.2s ease, bottom 0.2s ease",pointerEvents:m?"none":"auto"}}return{position:"absolute",left:typeof n.x=="number"?`${n.x}px`:n.x,top:typeof n.y=="number"?`${n.y}px`:n.y,width:K,height:H,zIndex:n.z,pointerEvents:m?"none":"auto"}})(),children:[pe("div",{onDoubleClick:()=>C(n.id),onPointerDown:M=>{v?.canDrag!==!1&&Vt(n.id,M)},className:"rdd-floating-window-titlebar rdd-cursor-move",style:{cursor:a||v?.canDrag===!1?"default":"move"},children:[pe("span",{className:"rdd-floating-window-title",children:[L("span",{className:"rdd-window-title-icon",children:v?.icon||t||An}),pe("span",{children:[ce(l.title,z),l.dirty?" *":""]})]}),pe("div",{className:"rdd-titlebar-actions",style:{gap:"var(--rdd-header-button-gap, 4px)"},onPointerDown:M=>M.stopPropagation(),children:[v?.renderHeaderActions&&L("div",{className:"rdd-window-header-actions",children:v.renderHeaderActions(n.id)}),W(n.id).length>0&&L("button",{type:"button",className:"rdd-custom-tab-btn rdd-btn-more-actions",title:"More actions",onClick:M=>{M.stopPropagation();let _=W(n.id);_.length!==0&&b({event:M,items:_})},children:pe("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"currentColor",style:{display:"block"},children:[L("circle",{cx:"12",cy:"5",r:"2"}),L("circle",{cx:"12",cy:"12",r:"2"}),L("circle",{cx:"12",cy:"19",r:"2"})]})}),L("button",{type:"button",title:a?ce(u.restoreSize,z):ce(u.maximize,z),onClick:()=>C(n.id),className:"rdd-custom-tab-btn rdd-btn-maximize-tab",children:L("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:L("rect",{x:"4",y:"4",width:"16",height:"16",rx:"1.5"})})}),v?.canMinimize!==!1&&L("button",{type:"button",title:ce(u.minimize,z),onClick:()=>y(n.id),className:"rdd-custom-tab-btn rdd-btn-minimize-tab",children:L("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"3",children:L("path",{d:"M5 12h14"})})}),v?.canClose!==!1&&L("button",{type:"button",title:ce(u.close,z),onClick:()=>N(n.id),className:"rdd-custom-tab-btn rdd-btn-close-tab",children:L("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"3",children:L("path",{d:"M18 6L6 18M6 6l12 12"})})})]})]}),L("div",{className:Y??void 0,style:{flexGrow:1,width:"100%",overflow:"hidden",position:"relative",isolation:"isolate"},children:L(No,{panelId:n.id},n.id)}),!a&&pe(Eo,{children:[L("div",{onPointerDown:M=>Ve(n.id,"n",M),className:"rdd-resize-handle rdd-resize-n"}),L("div",{onPointerDown:M=>Ve(n.id,"ne",M),className:"rdd-resize-handle rdd-resize-ne"}),L("div",{onPointerDown:M=>Ve(n.id,"e",M),className:"rdd-resize-handle rdd-resize-e"}),L("div",{onPointerDown:M=>Ve(n.id,"se",M),className:"rdd-resize-handle rdd-resize-se"}),L("div",{onPointerDown:M=>Ve(n.id,"s",M),className:"rdd-resize-handle rdd-resize-s"}),L("div",{onPointerDown:M=>Ve(n.id,"sw",M),className:"rdd-resize-handle rdd-resize-sw"}),L("div",{onPointerDown:M=>Ve(n.id,"w",M),className:"rdd-resize-handle rdd-resize-w"}),L("div",{onPointerDown:M=>Ve(n.id,"nw",M),className:"rdd-resize-handle rdd-resize-nw"})]})]},n.id)})]}),(o==="always"||s.minimized.length>0)&&pe("div",{className:["rdd-taskbar-footer-container",`rdd-taskbar-mode-${o}`,o==="autohide"&&ge?"rdd-taskbar-expanded":""].filter(Boolean).join(" "),style:{height:"48px",zIndex:100},onPointerEnter:o==="autohide"?i:void 0,onPointerLeave:o==="autohide"?f:void 0,children:[o==="autohide"&&L("div",{className:"rdd-taskbar-peek-handle"}),L("button",{type:"button",onClick:()=>pt("left"),className:"rdd-taskbar-nav-btn",style:{display:s.minimized.length>4?"block":"none"},children:"\u25C0"}),L("div",{ref:Q,className:"rdd-taskbar-items-container",style:{scrollSnapType:"x mandatory"},children:s.minimized.map(n=>{let a=S.get(n.component)?.defaultOptions?.icon||t||An;return L("div",{onClick:()=>{ue.current!=="touch"&&($(null),h(n.id))},onContextMenu:m=>Ee(n.id,m),onPointerDown:m=>{if(ue.current=m.pointerType,m.pointerType!=="touch")return;let E=m.currentTarget,I=m.clientX,v=m.clientY,M=m.pointerId,_=!1,K=()=>{_=!0,clearTimeout(ne),E.removeEventListener("pointermove",Z),E.removeEventListener("pointerup",H),E.removeEventListener("pointercancel",K)},H=()=>{K();let ie=E.getBoundingClientRect();B?.id===n.id?(h(n.id),$(null)):$({id:n.id,rect:ie,title:n.title,component:n.component,fromTouch:!0})},Z=ie=>{Math.hypot(ie.clientX-I,ie.clientY-v)>Se&&K()},ne=setTimeout(()=>{if(_)return;E.removeEventListener("pointermove",Z),E.removeEventListener("pointerup",H),E.removeEventListener("pointercancel",K);try{E.setPointerCapture(M)}catch{return}navigator.vibrate&&navigator.vibrate(10);let ie=me=>{E.removeEventListener("pointerup",ie),E.removeEventListener("pointercancel",ie),Ee(n.id,me)};E.addEventListener("pointerup",ie),E.addEventListener("pointercancel",ie)},Me);E.addEventListener("pointermove",Z),E.addEventListener("pointerup",H),E.addEventListener("pointercancel",K)},onPointerEnter:m=>{if(m.pointerType==="touch"||Ae)return;re.current&&clearTimeout(re.current);let E=m.currentTarget.getBoundingClientRect();m.clientX>=E.left&&m.clientX<=E.right&&m.clientY>=E.top&&m.clientY<=E.bottom&&$({id:n.id,rect:E,title:n.title,component:n.component})},onPointerLeave:m=>{m.pointerType!=="touch"&&(re.current=setTimeout(()=>{$(null)},150))},className:"rdd-taskbar-glassmorphic-item",style:{backdropFilter:"blur(6px)",transition:"all 0.2s",cursor:"pointer",scrollSnapAlign:"start",width:"38px",height:"38px",position:"relative",padding:0},children:L("span",{className:"rdd-taskbar-item-icon",children:a})},n.id)})}),B&&ko(pe("div",{className:"rdd-taskbar-item-tooltip",dir:s.dir,style:{position:"fixed",left:`${B.rect.left+B.rect.width/2}px`,top:`${B.rect.top-8}px`,transform:"translateX(-50%) translateY(-100%)",opacity:1,pointerEvents:"auto",zIndex:999999},onPointerEnter:()=>{re.current&&clearTimeout(re.current)},onPointerLeave:n=>{n.pointerType!=="touch"&&$(null)},onClick:()=>{h(B.id),$(null)},onContextMenu:n=>Ee(B.id,n),onPointerDown:n=>{if(n.pointerType!=="touch")return;let l=B.id,a=n.currentTarget,m=n.clientX,E=n.clientY,I=n.pointerId,v=!1,M=()=>{v=!0,clearTimeout(K),a.removeEventListener("pointermove",_),a.removeEventListener("pointerup",M),a.removeEventListener("pointercancel",M)},_=H=>{Math.hypot(H.clientX-m,H.clientY-E)>Se&&M()},K=setTimeout(()=>{if(v)return;a.removeEventListener("pointermove",_),a.removeEventListener("pointerup",M),a.removeEventListener("pointercancel",M);try{a.setPointerCapture(I)}catch{return}navigator.vibrate&&navigator.vibrate(10);let H=Z=>{a.removeEventListener("pointerup",H),a.removeEventListener("pointercancel",H),Ee(l,Z)};a.addEventListener("pointerup",H),a.addEventListener("pointercancel",H)},Me);a.addEventListener("pointermove",_),a.addEventListener("pointerup",M),a.addEventListener("pointercancel",M)},children:[pe("div",{className:"rdd-tooltip-header-row",children:[pe("span",{className:"rdd-tooltip-title-text rdd-text-truncate",style:{maxWidth:"140px"},children:[ce(B.title,z),s.panels[B.id]?.dirty?" *":""]}),L("span",{onClick:n=>{n.stopPropagation(),N(B.id),$(null)},title:ce(u.closePanel,z),className:"rdd-tooltip-close-x",children:L("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:L("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),L(Wr,{panelId:B.id})]}),document.body),L("button",{type:"button",onClick:()=>pt("right"),className:"rdd-taskbar-nav-btn",style:{display:s.minimized.length>4?"block":"none"},children:"\u25B6"})]}),Object.keys(s.panels).map(n=>{let l=s.panels[n];if(!l)return null;let a=Lo(n);return ko(L(Or,{panelId:n,children:L("div",{style:{width:"100%",height:"100%"},dir:s.dir,children:Dr(n,l,S)})}),a,n)}),q===null&&L(r.Component,{ref:U,theme:"dark",formatMessageProvider:z,onShow:()=>X(!0),onHide:()=>X(!1)}),s.draggedPanelId!==null&&!s.floating.some(n=>n.id===s.draggedPanelId)&&pe("div",{className:"rdd-drag-ghost-tab",style:{left:rt.x+12,top:rt.y+12,zIndex:1e5},children:["\u{1F4C4} ",ce(s.panels[s.draggedPanelId]?.title,z)||"Tab"]})]})},_r=Fr;var Hn=class{registry;initialState;config;_actions=null;_initialized=!1;_pendingCalls=[];_pendingOpenPanelIds=new Set;_pendingSubscriptions=[];_disconnectedWarnTimer=null;constructor(t={}){if(this.registry=new Dt,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[o,r]of Object.entries(t.panels))this.registry.register(o,r.component,r.defaultOptions)}_connect(t){this._actions=t,this._disconnectedWarnTimer!==null&&(clearTimeout(this._disconnectedWarnTimer),this._disconnectedWarnTimer=null),this._initialized||(this._initialized=!0);for(let r of this._pendingSubscriptions)r.unsub=t.subscribe(r.event,r.callback);let o=this._pendingCalls.splice(0);for(let r of o)r(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,o){if(this._actions)return this._actions.subscribe(t,o);let r={event:t,callback:o,unsub:null};return this._pendingSubscriptions.push(r),()=>{r.unsub?.(),r.unsub=null;let c=this._pendingSubscriptions.indexOf(r);c!==-1&&this._pendingSubscriptions.splice(c,1)}}openPanel(...t){if(this._actions){this._actions.openPanel(...t);return}let o=t[0];this._pendingOpenPanelIds.has(o)||(this._pendingOpenPanelIds.add(o),this._pendingCalls.push(r=>{this._pendingOpenPanelIds.delete(o),r.openPanel(...t)}),this._startWarnTimer())}closePanel(t){this._dispatch(o=>o.closePanel(t))}minimizePanel(t){this._dispatch(o=>o.minimizePanel(t))}restorePanel(...t){this._dispatch(o=>o.restorePanel(...t))}floatPanel(...t){this._dispatch(o=>o.floatPanel(...t))}dockPanel(...t){this._dispatch(o=>o.dockPanel(...t))}maximizePanel(t){this._dispatch(o=>o.maximizePanel(t))}focusPanel(t){this._dispatch(o=>o.focusPanel(t))}isOpen(t){return this._actions?.isOpen(t)??!1}getOpenPanelIds(){return this._actions?.getOpenPanelIds()??[]}findPanelId(t,o){return this._actions?.findPanelId(t,o)??null}saveLayout(){return this._actions?.saveLayout()??""}loadLayout(t){return this._actions?this._actions.loadLayout(t):(this._pendingCalls.push(o=>{o.loadLayout(t)}),!1)}setDirection(t){this._dispatch(o=>o.setDirection(t))}updateSplitSizes(t,o){this._dispatch(r=>r.updateSplitSizes(t,o))}updateFloatingPosition(t,o){this._dispatch(r=>r.updateFloatingPosition(t,o))}setDraggedPanelId(t){this._dispatch(o=>o.setDraggedPanelId(t))}dockPanelToGroup(t,o,r){this._dispatch(c=>c.dockPanelToGroup(t,o,r))}movePanelOrder(t,o,r){this._dispatch(c=>c.movePanelOrder(t,o,r))}closeLeafGroup(t){this._dispatch(o=>o.closeLeafGroup(t))}registerCloseGuard(t,o){this._dispatch(r=>r.registerCloseGuard(t,o))}unregisterCloseGuard(t){this._dispatch(o=>o.unregisterCloseGuard(t))}registerStateProvider(t,o){this._dispatch(r=>r.registerStateProvider(t,o))}unregisterStateProvider(t){this._dispatch(o=>o.unregisterStateProvider(t))}setPanelDirty(t,o,r){this._dispatch(c=>c.setPanelDirty(t,o,r))}updatePanelTitle(t,o){this._dispatch(r=>r.updatePanelTitle(t,o))}requestClosePanel(t,o){return this._actions?this._actions.requestClosePanel(t,o):(this._pendingCalls.push(r=>{r.requestClosePanel(t,o)}),Promise.resolve())}dockPanelToWorkspaceEdge(t,o){this._dispatch(r=>r.dockPanelToWorkspaceEdge(t,o))}showContextMenu(t){this._dispatch(o=>o.showContextMenu(t))}publish(t,o){this._dispatch(r=>r.publish(t,o))}subscribe(t,o){return this._subscribeRaw(t,o)}onPanelOpen(t){return this._subscribeRaw("panel:opened",o=>{let r=o;t(r.id,r.component)})}onPanelClose(t){return this._subscribeRaw("panel:closed",o=>{t(o.id)})}onPanelMinimize(t){return this._subscribeRaw("panel:minimized",o=>{t(o.id)})}onPanelRestore(t){return this._subscribeRaw("panel:restored",o=>{t(o.id)})}onLayoutChanged(t){return this._subscribeRaw("layout:changed",()=>t())}onPanelsExcluded(t){return this._subscribeRaw("layout:panels-excluded",o=>{t(o.panels)})}};import{useContext as ti}from"react";import{createContext as Hr,useContext as $r,useMemo as Br,useState as Do}from"react";import{jsx as Gr}from"react/jsx-runtime";var Wo=Hr(null),gn=({children:e})=>{let[t,o]=Do({}),[r,c]=Do({}),s=Br(()=>({getActiveInGroup:S=>t[S]??null,setActiveInGroup:(S,h)=>o(y=>({...y,[S]:h})),isModifierActive:S=>r[S]??!1,setModifierActive:(S,h)=>c(y=>({...y,[S]:h})),toggleModifier:S=>c(h=>({...h,[S]:!h[S]}))}),[t,r]);return Gr(Wo.Provider,{value:s,children:e})};function fn(){let e=$r(Wo);if(!e)throw new Error("useToolbar must be used within DockableDesktopProvider");return e}import{createContext as Yr,useCallback as Xr,useContext as Oo,useLayoutEffect as Vr,useMemo as Kr,useRef as qr,useSyncExternalStore as jr}from"react";import{jsx as ei}from"react/jsx-runtime";function Zr(){let e=new Map,t=new Set,o=()=>t.forEach(r=>r());return{publish(r,c){return e.set(r,c),o(),()=>{e.get(r)===c&&(e.delete(r),o())}},get(r){return e.get(r)??null},subscribe(r){return t.add(r),()=>t.delete(r)}}}var $n=Yr(null),Bn=({children:e})=>{let t=Kr(()=>Zr(),[]);return ei($n.Provider,{value:t,children:e})};function Ur(e){let t=dn(),o=Oo($n),r=qr(null);if(!o)throw new Error("usePanelContribution must be used within PanelContributionProvider");Vr(()=>{if(o)return r.current?.(),r.current=o.publish(t,e),()=>{r.current?.(),r.current=null}},[o,t,e])}function Gn(){let e=je(c=>c.activePanelId),t=Oo($n);if(!t)throw new Error("useActivePanelContribution must be used within PanelContributionProvider");let o=Xr(c=>t?t.subscribe(c):()=>{},[t]),r=()=>t&&e?t.get(e):null;return jr(o,r,r)}function Ao(e,t=null){return{id:e.id,label:e.label,icon:e.icon??t,renderContent:()=>e.content}}function Jr(e){let t=Gn();return t?.toolbarItems?.length?[...e,{type:"separator"},...t.toolbarItems]:e}function Qr(e,t=null){let o=Gn();return o?.sidebarSections?.length?[...e,...o.sidebarSections.map(r=>Ao(r,t))]:e}import{jsx as tn}from"react/jsx-runtime";var ni=({contextMenuAdapter:e=Ht,...t})=>{let o=ti($t),r=tn(gn,{children:tn(Tn,{...t,children:tn(Bn,{children:tn(zn,{children:t.children})})})});return o!==null?r:tn(Ln,{adapter:e,formatMessageProvider:t.formatMessage,children:r})};import{useCallback as nn,useRef as Fo,useEffect as oi,useState as ri,useMemo as ii}from"react";import{Fragment as di,jsx as nt,jsxs as Yn}from"react/jsx-runtime";var si=({modal:e,index:t,isTopmost:o})=>{let{close:r,openModal:c,updateInstance:s,setDirty:S}=Mt(),h=Ke(),y=Ze(),{dir:P}=je(),{modalClass:C,modalBodyClass:d}=gt(),R=Fo(null),{id:T,Component:D,props:A,options:g,dirty:w,dirtyOptions:x}=e,W=g,[b,k]=ri(W.icon||null),F=Fo(W);F.current=W;let z=ce(W.title,h),u=nn(async $=>{if($?.force){r(T);return}if(R.current){if(!await R.current())return;r(T);return}if(w){c(Tt,{title:x?.title||y.unsavedChangesTitle,message:x?.message||{id:y.unsavedChangesMessage.id,defaultMessage:y.unsavedChangesMessage.defaultMessage,values:{title:z}},alert:x?.alert,alertType:x?.alertType||"danger",useYesNoTitles:!0,onOK:()=>r(T)},{size:"small"});return}r(T)},[r,c,T,w,x,z,y]),N=nn(($,re)=>S(T,$,re),[S,T]),O=nn($=>s(T,{options:{...F.current,title:$}}),[s,T]),Y=nn($=>k($),[]),q=nn($=>(R.current=$,()=>{R.current=null}),[]),U=ii(()=>({requestClose:u,setDirty:N,setTitle:O,setIcon:Y,onCloseRequested:q,containerType:"modal",instanceId:T}),[u,N,O,Y,q,T]),Q=w?`${z} *`:z,ge=W.size?`rdd-modal-size-${W.size}`:"rdd-modal-size-auto",ee=W.closable!==!1,G=W.bodyPadding,j=G!=null?typeof G=="number"?`${G}px`:G:void 0;oi(()=>{if(!o||!ee)return;let $=re=>{re.key==="Escape"&&(re.stopPropagation(),u())};return document.addEventListener("keydown",$),()=>document.removeEventListener("keydown",$)},[u,ee,o]);let B=`calc(var(--rdd-z-base, 1000) + 9000 + ${t*10})`;return Yn("div",{className:"rdd-modal-overlay",style:{zIndex:B},dir:P,children:[nt("div",{className:"rdd-modal-curtain",onClick:ee?()=>u():void 0}),Yn("div",{className:`rdd-modal-window ${ge} ${C??""}`,children:[Yn("div",{className:"rdd-modal-header",children:[b&&nt("div",{className:"rdd-modal-icon",children:b}),nt("h4",{className:"rdd-modal-title",children:Q}),ee&&nt("button",{className:"rdd-modal-close-button",onClick:()=>u(),title:h(y.closeTooltip),type:"button",children:nt("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:nt("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),nt("div",{className:`rdd-modal-body ${d??""}`,style:j!=null?{padding:j}:void 0,children:nt(xt,{value:U,children:nt(D,{...A,panelId:T})})})]})]})},ai=()=>{let{modals:e}=ft();return e.length===0?null:nt(di,{children:e.map((t,o)=>nt(si,{modal:t,index:o,isTopmost:o===e.length-1},t.id))})},li=ai;import{useCallback as Gt,useRef as Xn,useEffect as Ho,useState as pi,useMemo as gi}from"react";import{useLayoutEffect as ci,useState as ui}from"react";function _o(e){let[t,o]=ui(null);return ci(()=>{let r=e.current?.parentElement;if(!r)return;let c=()=>{let S=r.getBoundingClientRect();o({top:S.top,left:S.left,right:window.innerWidth-S.right,height:S.height})};c();let s=new ResizeObserver(c);return s.observe(r),window.addEventListener("resize",c),()=>{s.disconnect(),window.removeEventListener("resize",c)}},[e]),t}import{Fragment as vi,jsx as He,jsxs as Vn}from"react/jsx-runtime";var mn=({panel:e,position:t,defaultWidth:o,containerRect:r})=>{let{close:c,openModal:s,updateInstance:S,setDirty:h,registerCloseHandler:y,unregisterCloseHandler:P}=Mt(),{modals:C}=ft(),d=Ke(),R=Ze(),{dir:T}=je(),{sidePanelClass:D,sidePanelBodyClass:A}=gt(),g=Xn(null),{id:w,Component:x,props:W,options:b,dirty:k,dirtyOptions:F}=e,z=b,[u,N]=pi(z.icon||null),O=Xn(z);O.current=z;let Y=ce(z.title,d),q=Gt(async X=>{if(X?.force){c(w);return}if(g.current){if(!await g.current())return;c(w);return}if(k){s(Tt,{title:F?.title||R.unsavedChangesTitle,message:F?.message||{id:R.unsavedChangesMessage.id,defaultMessage:R.unsavedChangesMessage.defaultMessage,values:{title:Y}},alert:F?.alert,alertType:F?.alertType||"danger",useYesNoTitles:!0,onOK:()=>c(w)},{size:"small"});return}c(w)},[c,s,w,k,F,Y,R]),U=Gt(async()=>g.current?await g.current():!k,[k]);Ho(()=>(y(w,U),()=>P(w)),[w,U,y,P]);let Q=Gt((X,Ae)=>h(w,X,Ae),[h,w]),ge=Gt(X=>S(w,{options:{...O.current,title:X}}),[S,w]),ee=Gt(X=>N(X),[]),G=Gt(X=>(g.current=X,()=>{g.current=null}),[]),j=gi(()=>({requestClose:q,setDirty:Q,setTitle:ge,setIcon:ee,onCloseRequested:G,containerType:t==="left"?"left-panel":"right-panel",instanceId:w}),[q,Q,ge,ee,G,t,w]),B=k?`${Y} *`:Y;Ho(()=>{let X=Ae=>{Ae.key==="Escape"&&C.length===0&&q()};return document.addEventListener("keydown",X),()=>document.removeEventListener("keydown",X)},[q,C.length]);let $=z.width||o||400,re=typeof $=="number"?`${$}px`:$,ue=z.bodyPadding,ze=ue!=null?typeof ue=="number"?`${ue}px`:ue:void 0;return He("div",{className:`rdd-side-panel rdd-side-panel-${t} rdd-side-panel-visible ${D??""}`,style:{width:re,...r?{top:r.top,height:r.height,bottom:"auto",...t==="right"?{right:r.right}:{left:r.left}}:{}},dir:T,children:Vn("div",{className:"rdd-side-panel-window",children:[Vn("div",{className:"rdd-side-panel-header",children:[u&&He("div",{className:"rdd-side-panel-icon",children:u}),He("h4",{className:"rdd-side-panel-title",children:B}),He("button",{className:"rdd-side-panel-close-button",onClick:()=>q(),title:d(R.closeTooltip),type:"button",children:He("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:He("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),He("div",{className:`rdd-side-panel-body ${A??""}`,style:ze!=null?{padding:ze}:void 0,children:He(xt,{value:j,children:He(x,{...W,panelId:w})})})]})})},Kn=({children:e})=>{let t=Xn(null),o=_o(t);return He("div",{ref:t,style:{display:"contents"},children:e(o)})},fi=({defaultWidth:e})=>{let{leftPanel:t,rightPanel:o}=ft();return He(Kn,{children:r=>Vn(vi,{children:[t&&He(mn,{panel:t,position:"left",defaultWidth:e,containerRect:r},t.id),o&&He(mn,{panel:o,position:"right",defaultWidth:e,containerRect:r},o.id)]})})},mi=({defaultWidth:e})=>{let{leftPanel:t}=ft();return He(Kn,{children:o=>t?He(mn,{panel:t,position:"left",defaultWidth:e,containerRect:o},t.id):null})},hi=({defaultWidth:e})=>{let{rightPanel:t}=ft();return He(Kn,{children:o=>t?He(mn,{panel:t,position:"right",defaultWidth:e,containerRect:o},t.id):null})},bi=fi;import yi,{useState as hn,useEffect as bn,useRef as qn,useCallback as vn,useImperativeHandle as Pi,useContext as Zn,useMemo as bt,createContext as Yo,forwardRef as Xo,memo as xi}from"react";import{jsx as he,jsxs as yn}from"react/jsx-runtime";function jn(e){return"renderContent"in e}function Ci(e){return"render"in e}function $o(e){return e==null?[]:Array.isArray(e)?e:[e]}var Un=Yo(null),Vo=Yo(null);function wi({tabId:e,onClose:t,onOpen:o,setActiveTabId:r,children:c}){let s=bt(()=>({tabId:e,onClose:t,onOpen:o,openTab:S=>r(S)}),[e,t,o,r]);return he(Vo.Provider,{value:s,children:c})}function Bo(e,t,o,r){if(Ci(e))return he(yi.Fragment,{children:e.render()},e.id??t);if(jn(e)){if(e.hidden)return null;let c=o===e.id;return he("button",{type:"button",onClick:()=>r(e.id),className:`rdd-sidebar-tab-btn${c?" rdd-active":""}`,title:e.label,"aria-pressed":c,children:e.icon},e.id)}return he("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 Go=xi(function({tabs:t,headerEntries:o,footerEntries:r,activeTabId:c,isVisible:s,position:S,onTabClick:h}){return he("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:yn("div",{className:`rdd-sidebar-tabs-strip rdd-${S}${o.length?" rdd-sidebar-tabs-strip--has-header-action":""}${r.length?" rdd-sidebar-tabs-strip--has-footer-action":""}`,style:{width:"56px",height:"100%"},children:[o.length>0&&he("div",{className:"rdd-sidebar-header-area",children:o.map((y,P)=>Bo(y,P,c,h))}),he("div",{className:"rdd-sidebar-tabs-list",children:t.map(y=>{if(y.hidden)return null;let P=c===y.id;return he("button",{type:"button",onClick:()=>h(y.id),className:`rdd-sidebar-tab-btn${P?" rdd-active":""}`,title:y.label,"aria-pressed":P,children:y.icon},y.id)})}),r.length>0&&he("div",{className:"rdd-sidebar-footer-area",children:r.map((y,P)=>Bo(y,P,c,h))})]})})});function Ri({position:e,currentWidth:t,minWidth:o,maxWidth:r,onWidthChange:c,onResizeStart:s,onResizeEnd:S}){return he("div",{className:"rdd-resizer-bar",style:{cursor:"col-resize",width:"1px",height:"100%",flexShrink:0,zIndex:20},onPointerDown:y=>{y.preventDefault();let P=y.currentTarget,C=[{el:P,classes:["rdd-active"]},{el:document.body,classes:["rdd-resizing-active","rdd-resizing-col-active"]}];s(),mt({element:P,pointerId:y.pointerId,startClientX:y.clientX,startClientY:y.clientY,captureStart:()=>t,activeClasses:C,onMove:(d,R,T)=>{let D=e==="right"?T-d:T+d;c(Math.max(o,Math.min(r,D)))},onEnd:()=>S()})}})}var Ko=Xo(function({position:t="right",tabs:o,headerAction:r,footerAction:c,defaultWidth:s,minWidth:S=150,maxWidth:h=600,onWidthChange:y,activeTabId:P,onActiveTabChange:C,visible:d,onVisibilityChange:R,stripVisible:T,onStripVisibilityChange:D,showCloseButton:A=!1,hideDefaultHeader:g=!1,renderHeader:w,isSecondary:x=!1,children:W},b){let k=P!==void 0,[F,z]=hn(()=>s??280),u=vn(te=>{z(te),y?.(te)},[y]),[N,O]=hn(!1),[Y,q]=hn(null),U=k?P:Y,Q=bt(()=>$o(r),[r]),ge=bt(()=>$o(c),[c]),ee=bt(()=>Q.filter(jn),[Q]),G=bt(()=>ge.filter(jn),[ge]),j=bt(()=>[...ee,...o,...G],[ee,o,G]),[B,$]=hn(()=>new Set),re=bt(()=>{let te=new Set(B);U&&te.add(U);for(let le of j)le.eagerMount&&te.add(le.id);return te},[B,U,j]),ue=qn(U??null);bn(()=>{ue.current=U??null},[U]);let ze=qn(F);bn(()=>{ze.current=F},[F]);let X=vn(te=>{$(te!==null?le=>{if(le.has(te))return le;let $e=new Set(le);return $e.add(te),$e}:le=>{let $e=!1,Fe=new Set(le);for(let V of le){let J=j.find(ae=>ae.id===V);J&&!J.eagerMount&&!J.preserveState&&(Fe.delete(V),$e=!0)}return $e?Fe:le}),k||q(te),C?.(te)},[k,C,j]);bn(()=>{U!=null&&!j.some(te=>te.id===U)&&X(null)},[U,j,X]),Pi(b,()=>({openTab:te=>X(te),closeDrawer:()=>X(null),getActiveTab:()=>ue.current,show:()=>R?.(!0),hide:()=>R?.(!1),toggle:()=>R?.(d===!1),showStrip:()=>D?.(!0),hideStrip:()=>D?.(!1),setWidth:te=>u(Math.max(S,Math.min(h,te))),getWidth:()=>ze.current}),[X,d,R,D,u,S,h]);let Ae=vn(te=>{X(U===te?null:te)},[U,X]),Ge=vn(()=>X(null),[X]),Ye=g||w!=null,Be=qn(!1);bn(()=>{process.env.NODE_ENV==="development"&&(!A||!Ye||Be.current||(Be.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`.')))},[A,Ye]);let rt=bt(()=>({openTab:te=>X(te),closeDrawer:()=>X(null),getActiveTab:()=>ue.current,position:t,isSecondary:x}),[X,t,x]),it=d!==!1,st=it&&T!==!1,Je=it&&U!=null,Qe=he("div",{className:`rdd-sidebar-content-drawer rdd-${t}`,style:{flexBasis:Je?`${F}px`:"0px",flexShrink:1,flexGrow:0,minWidth:Je?`${S}px`:"0px",maxWidth:Je?`${h}px`:"0px",overflow:"hidden",transition:N?"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(te=>{if(!re.has(te.id))return null;let $e=U===te.id,Fe=()=>X(te.id);return yn("div",{style:{display:$e?"flex":"none",flexDirection:"column",height:"100%",width:"100%"},children:[Ye?w?.(te,Ge,Fe):yn("div",{className:"rdd-sidebar-drawer-header",children:[he("span",{className:"rdd-sidebar-header-title",children:te.label}),A&&he("button",{type:"button",className:"rdd-sidebar-drawer-close-button",onClick:Ge,title:"Close","aria-label":"Close",children:he("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:he("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),he("div",{className:"rdd-sidebar-drawer-body",children:he(wi,{tabId:te.id,onClose:Ge,onOpen:Fe,setActiveTabId:X,children:te.renderContent(te.id,Ge,Fe)})})]},te.id)})}),ye=Je?he(Ri,{position:t,currentWidth:F,minWidth:S,maxWidth:h,onWidthChange:u,onResizeStart:()=>O(!0),onResizeEnd:()=>O(!1)}):null;return he(Un.Provider,{value:rt,children:yn("div",{style:{display:"flex",flexDirection:"row",width:"100%",height:"100%",overflow:"hidden"},children:[t==="left"&&he(Go,{tabs:o,headerEntries:Q,footerEntries:ge,activeTabId:U,isVisible:st,position:t,onTabClick:Ae}),t==="left"&&Qe,t==="left"&&ye,he("div",{style:{flex:"1 1 0%",minWidth:0,overflow:"hidden"},children:W}),t==="right"&&ye,t==="right"&&Qe,t==="right"&&he(Go,{tabs:o,headerEntries:Q,footerEntries:ge,activeTabId:U,isVisible:st,position:t,onTabClick:Ae})]})})}),Mi=Xo(function(t,o){let r=Zn(Un);if(!r)throw new Error("SecondarySidebar must be rendered inside a primary Sidebar's children");if(r.isSecondary)throw new Error("SecondarySidebar cannot be nested inside another SecondarySidebar");let c=r.position==="left"?"right":"left";return he(Ko,{ref:o,...t,position:c,isSecondary:!0})});function Si(){let e=Zn(Un);if(!e)throw new Error("useSidebar must be used within Sidebar");return e}function Ti(){let e=Zn(Vo);if(!e)throw new Error("useSidebarTab must be used within a Sidebar tab renderContent tree");return e}import{forwardRef as ki,useImperativeHandle as Ei,useState as qo,useRef as jo,useEffect as Zo,useLayoutEffect as Ii}from"react";import{createPortal as Li}from"react-dom";import{Fragment as Oi,jsx as Ue,jsxs as Uo}from"react/jsx-runtime";function Ni(e,t,o=!1,r=8){switch(t){case"left":return o?{right:window.innerWidth-e.left+r,top:e.top}:{left:e.right+r,top:e.top};case"right":return o?{left:e.right+r,top:e.top}:{right:window.innerWidth-e.left+r,top:e.top};case"top":return o?{top:e.bottom+r,right:window.innerWidth-e.right}:{top:e.bottom+r,left:e.left};case"bottom":return o?{bottom:window.innerHeight-e.top+r,right:window.innerWidth-e.right}:{bottom:window.innerHeight-e.top+r,left:e.left}}}function zi({item:e,position:t,toolbar:o}){let[r,c]=qo(!1),[s,S]=qo(null),h=jo(null),y=jo(null),P=e.activeItemId!==void 0,C=P?e.activeItemId:o.getActiveInGroup(e.id),d=e.items.find(g=>!("type"in g)&&g.id===C),R=C!==null,T=d?.icon??e.defaultIcon,D=d?.label??e.label,A=()=>{e.disabled||(!r&&h.current&&S(h.current.getBoundingClientRect()),c(g=>!g))};return Ii(()=>{if(!r||!y.current)return;let g=y.current,w=g.getBoundingClientRect(),x=8;w.right>window.innerWidth-x&&(g.style.left=`${Math.max(x,window.innerWidth-w.width-x)}px`,g.style.right="auto"),w.left<x&&(g.style.left=`${x}px`,g.style.right="auto"),w.bottom>window.innerHeight-x&&(g.style.top=`${Math.max(x,window.innerHeight-w.height-x)}px`,g.style.bottom="auto"),w.top<x&&(g.style.top=`${x}px`,g.style.bottom="auto")},[r]),Zo(()=>{if(!r)return;let g=w=>{let x=w.target;h.current?.contains(x)||y.current?.contains(x)||c(!1)};return document.addEventListener("mousedown",g),()=>document.removeEventListener("mousedown",g)},[r]),Zo(()=>{if(!r)return;let g=w=>{w.key==="Escape"&&c(!1)};return document.addEventListener("keydown",g),()=>document.removeEventListener("keydown",g)},[r]),Uo(Oi,{children:[Ue("button",{ref:h,type:"button",className:`rdd-toolbar-btn rdd-toolbar-btn-group${R?" rdd-active":""}`,title:D,"aria-label":D,"aria-expanded":r,"aria-haspopup":"menu",disabled:e.disabled,onClick:A,children:T}),r&&s&&Li(Ue("div",{ref:y,className:`rdd-toolbar-group-flyout rdd-${t}`,style:Ni(s,t,document.documentElement.dir==="rtl"),role:"menu",children:e.items.map((g,w)=>{if("type"in g)return Ue("div",{className:"rdd-toolbar-group-flyout-sep",role:"separator"},`sep-${w}`);let x=C===g.id;return Uo("button",{type:"button",className:`rdd-toolbar-group-flyout-item${x?" rdd-active":""}`,disabled:g.disabled,role:"menuitem","aria-pressed":x,onClick:()=>{P?e.onActiveItemChange?.(g.id):o.setActiveInGroup(e.id,g.id),g.onActivate?.(g.id),c(!1)},children:[Ue("span",{className:"rdd-toolbar-group-flyout-icon",children:g.icon}),Ue("span",{className:"rdd-toolbar-group-flyout-label",children:g.label}),g.shortcut&&Ue("span",{className:"rdd-toolbar-group-flyout-shortcut",children:g.shortcut})]},g.id)})}),document.body)]})}function Di(e,t,o,r){switch(e.type){case"separator":return Ue("div",{className:"rdd-toolbar-separator",role:"separator"},`sep-${t}`);case"action":return Ue("button",{type:"button",className:"rdd-toolbar-btn rdd-toolbar-btn-action",title:e.label,"aria-label":e.label,disabled:e.disabled,onClick:e.onClick,children:e.icon},e.id);case"radio":{let c=o.getActiveInGroup(e.group)===e.id;return Ue("button",{type:"button",className:`rdd-toolbar-btn rdd-toolbar-btn-radio${c?" rdd-active":""}`,title:e.label,"aria-label":e.label,"aria-pressed":c,disabled:e.disabled,onClick:()=>{o.setActiveInGroup(e.group,e.id),e.onActivate?.(e.id)},children:e.icon},e.id)}case"toggle":{let c=e.active!==void 0,s=c?e.active:o.isModifierActive(e.id);return Ue("button",{type:"button",className:`rdd-toolbar-btn rdd-toolbar-btn-toggle${s?" rdd-active":""}`,title:e.label,"aria-label":e.label,"aria-pressed":s,disabled:e.disabled,onClick:()=>{c||o.toggleModifier(e.id),e.onToggle?.(!s)},children:e.icon},e.id)}case"group":return Ue(zi,{item:e,position:r,toolbar:o},e.id)}}var Wi=ki(function({position:t="left",items:o,visible:r,onVisibilityChange:c,className:s,style:S},h){let y=fn(),P=t==="left"||t==="right";Ei(h,()=>({show:()=>c?.(!0),hide:()=>c?.(!1),toggle:()=>c?.(r===!1)}),[r,c]);let C=r!==!1?{}:P?{width:"0px"}:{height:"0px"};return Ue("div",{className:`rdd-toolbar-strip rdd-${t}${s?` ${s}`:""}`,role:"toolbar","aria-orientation":P?"vertical":"horizontal",style:{...C,...S},children:o.map((d,R)=>Di(d,R,y,t))})});import{useCallback as Qn,useEffect as on,useLayoutEffect as Ai,useRef as Et,useState as eo}from"react";import{createPortal as Jo}from"react-dom";import{jsx as xe,jsxs as rn}from"react/jsx-runtime";var to=class{listeners=new Set;counter=0;subscribe(t){this.listeners.add(t)}unsubscribe(t){this.listeners.delete(t)}show(t,o={}){let r=o.id??`toast-${++this.counter}`;return this.emit({kind:"show",id:r,message:t,rawOpts:{...o,id:r}}),r}update(t,o,r){this.emit({kind:"update",id:t,message:o,patch:r})}dismiss(t){this.emit({kind:"dismiss",id:t})}emit(t){this.listeners.forEach(o=>o(t))}},qe=new to,Fi=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,o)=>{let r=qe.show(t.pending,{...o,type:"info",duration:0});return e.then(c=>{let s=typeof t.success=="function"?t.success(c):t.success;qe.update(r,s,{type:"success",duration:o?.duration??5e3})},c=>{let s=typeof t.error=="function"?t.error(c):t.error;qe.update(r,s,{type:"error",duration:o?.duration??5e3})}),e}}),_i=()=>rn("svg",{className:"rdd-toast__icon",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[xe("circle",{cx:"8",cy:"8",r:"7",stroke:"currentColor",strokeWidth:"1.5"}),xe("path",{d:"M8 5v.01M8 7.5v3.5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]}),Hi=()=>rn("svg",{className:"rdd-toast__icon",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[xe("circle",{cx:"8",cy:"8",r:"7",stroke:"currentColor",strokeWidth:"1.5"}),xe("path",{d:"M5 8l2 2 4-4",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})]}),$i=()=>rn("svg",{className:"rdd-toast__icon",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[xe("path",{d:"M8 2.5L14 13.5H2L8 2.5z",stroke:"currentColor",strokeWidth:"1.5",strokeLinejoin:"round"}),xe("path",{d:"M8 7v2.5M8 11.5v.01",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]}),Bi=()=>rn("svg",{className:"rdd-toast__icon",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[xe("circle",{cx:"8",cy:"8",r:"7",stroke:"currentColor",strokeWidth:"1.5"}),xe("path",{d:"M5.5 5.5l5 5M10.5 5.5l-5 5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]}),Gi=()=>xe("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:xe("path",{d:"M4 4l8 8M12 4l-8 8",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})}),Yi={info:xe(_i,{}),success:xe(Hi,{}),warning:xe($i,{}),error:xe(Bi,{})};function Xi({id:e,message:t,options:o,exiting:r,isLeft:c,showProgress:s,pauseOnHover:S,animation:h,onDismiss:y,onExited:P}){let C=Et(null),d=Et(null),R=Et(null),T=Et(o.duration),D=Et(0),[A,g]=eo(!1),w=h==="none"?"rdd-toast--visible":h==="fade"?"rdd-toast--fade-entering":c?"rdd-toast--entering-left":"rdd-toast--entering",[x,W]=eo(w);Ai(()=>{let N=C.current,O=d.current;if(!N||!O||r)return;let Y=()=>{N.style.maxHeight=`${N.scrollHeight}px`};Y();let q=new ResizeObserver(Y);return q.observe(O),()=>q.disconnect()},[r]),on(()=>{if(h==="none")return;let N=requestAnimationFrame(()=>W("rdd-toast--visible"));return()=>cancelAnimationFrame(N)},[]);let b=Qn(N=>{N<=0||(D.current=Date.now(),R.current=setTimeout(()=>y(e),N))},[e,y]);on(()=>(R.current&&clearTimeout(R.current),T.current=o.duration,b(o.duration),()=>{R.current&&clearTimeout(R.current)}),[o.duration,b]),on(()=>{if(!r)return;let N=C.current;if(!N||h==="none"){P(e);return}let O=q=>{q.propertyName==="max-height"&&P(e)};N.addEventListener("transitionend",O);let Y=setTimeout(()=>P(e),520);return()=>{N.removeEventListener("transitionend",O),clearTimeout(Y)}},[r,e,P,h]);let k=()=>{!S||o.duration===0||(R.current&&(clearTimeout(R.current),R.current=null,T.current=Math.max(0,T.current-(Date.now()-D.current))),g(!0))},F=()=>{!S||o.duration===0||(g(!1),b(T.current))},z=["rdd-toast",o.type&&`rdd-toast--${o.type}`,x,r&&"rdd-toast--exiting",A&&"rdd-toast--paused"].filter(Boolean).join(" "),u=o.icon!==void 0?o.icon:o.type?Yi[o.type]:null;return rn("div",{ref:C,role:"status","aria-live":"polite",className:z,onMouseEnter:k,onMouseLeave:F,children:[u&&u,xe("div",{ref:d,className:"rdd-toast__body",children:o.content!==void 0?o.content:t}),o.closable&&xe("button",{type:"button",className:"rdd-toast__close",onClick:()=>y(e),"aria-label":"Close notification",children:xe(Gi,{})}),s&&o.duration>0&&xe("div",{className:"rdd-toast__progress",style:{animationDuration:`${o.duration}ms`}})]})}function Jn(e,t,o){return{id:e.id,type:e.type??"info",duration:e.duration??t,closable:e.closable??o,icon:e.icon,content:e.content,onClose:e.onClose}}function Vi({position:e="top-right",maxVisible:t=3,defaultDuration:o=5e3,defaultClosable:r=!0,pauseOnHover:c=!0,animation:s="slide",newestOnTop:S=!1,progressBar:h=!1,width:y=320,adapter:P}){let[C,d]=eo([]),R=Et([]),T=Et(C);T.current=C;let D=Qn(W=>{d(b=>b.map(k=>k.id===W?{...k,exiting:!0}:k)),T.current.find(b=>b.id===W)?.options.onClose?.()},[]),A=Qn(W=>{let b=R.current.shift()??null;d(k=>{let F=k.filter(u=>u.id!==W);if(!b)return F;let z=Jn(b.rawOpts,o,r);return[...F,{id:b.id,message:b.message,options:z,exiting:!1}]})},[o,r]);if(on(()=>{if(P)return;let W=b=>{if(b.kind==="show"){let k=Jn(b.rawOpts,o,r),F={id:b.id,message:b.message,options:k,exiting:!1},z={id:b.id,message:b.message,rawOpts:b.rawOpts};d(u=>u.find(Y=>Y.id===b.id)?u.map(Y=>Y.id===b.id?{...Y,message:b.message,options:k}:Y):u.filter(Y=>!Y.exiting).length<t?[...u,F]:(R.current.some(Y=>Y.id===z.id)||R.current.push(z),u))}else b.kind==="update"?(d(k=>k.map(F=>{if(F.id!==b.id)return F;let z={...F.options,...b.patch,id:F.id};return{...F,message:b.message,options:z}})),R.current=R.current.map(k=>k.id!==b.id?k:{...k,message:b.message,rawOpts:{...k.rawOpts,...b.patch}})):b.kind==="dismiss"&&(b.id===void 0?(d(k=>k.map(F=>({...F,exiting:!0}))),R.current=[]):T.current.some(F=>F.id===b.id)?D(b.id):R.current=R.current.filter(F=>F.id!==b.id))};return qe.subscribe(W),()=>qe.unsubscribe(W)},[P,t,o,r,D]),on(()=>{if(!P)return;let W=b=>{if(b.kind==="show"){let k=Jn(b.rawOpts,o,r);P.show(b.id,b.message,k)}else b.kind==="update"?P.update(b.id,b.message,b.patch):b.kind==="dismiss"&&P.dismiss(b.id)};return qe.subscribe(W),()=>qe.unsubscribe(W)},[P,o,r]),P){if(!P.Container)return null;let W=P.Container;return Jo(xe(W,{position:e}),document.body)}let g=e.endsWith("left"),w="";S===!0&&(w="rdd-toast-container--newest-top"),S===!1&&(w="rdd-toast-container--newest-bottom");let x=["rdd-toast-container",`rdd-toast-container--${e}`,w].filter(Boolean).join(" ");return Jo(xe("div",{className:x,style:{width:y},"aria-label":"Notifications","aria-live":"polite",children:C.map(W=>xe(Xi,{id:W.id,message:W.message,options:W.options,exiting:W.exiting,isLeft:g,showProgress:h,pauseOnHover:c,animation:s,onDismiss:D,onExited:A},W.id))}),document.body)}import or,{useState as Ne,useContext as xn,createContext as oo,useRef as Le,useLayoutEffect as no,useCallback as ot,useMemo as Xt,useEffect as Qo}from"react";import{createPortal as Ki}from"react-dom";import{Fragment as fs,jsx as se,jsxs as yt}from"react/jsx-runtime";var ut=e=>e==="width"||e==="both",lt=e=>e==="height"||e==="both",er=(e,t)=>t==="inline"?lt(e)?"both":"width":ut(e)?"both":"height",Pn=(e,t)=>t==="inline"?e==="both"?"height":ut(e)?null:e:e==="both"?"width":lt(e)?null:e,rr=(e,t)=>lt(t)?[]:ut(t)?e.startsWith("top-")?["top-left","top-right"]:["bottom-left","bottom-right"]:[e],qi=(e,t)=>`${e.startsWith("top-")?"top":"bottom"}-${t}`,ji=(e,t)=>`${t}-${e.endsWith("-right")?"right":"left"}`,ir=["top-left","top-right","bottom-left","bottom-right"],sr=oo(null),ar=oo(null),lr=oo(null),vt=80;function Zi(e,t,o){let r=e.getBoundingClientRect(),c=t-r.left,s=o-r.top;return c<vt&&s<vt?"top-left":c>r.width-vt&&s<vt?"top-right":c<vt&&s>r.height-vt?"bottom-left":c>r.width-vt&&s>r.height-vt?"bottom-right":null}function Ui({children:e,className:t,style:o}){let[r,c]=Ne({}),[s,S]=Ne({}),[h,y]=Ne({"top-left":[],"top-right":[],"bottom-left":[],"bottom-right":[]}),[P,C]=Ne({}),[d,R]=Ne(null),[T,D]=Ne(null),[A,g]=Ne(null),[w,x]=Ne(()=>new Map),W=Le(100),b=Le(null),k=ot((G,j)=>(c(B=>({...B,[G]:j})),()=>c(B=>{let $={...B};return delete $[G],$})),[]),F=ot(G=>{W.current+=1;let j=W.current;S(B=>({...B,[G]:j})),g(G)},[]),z=ot((G,j,B=null)=>{let $=rr(j,B);y(re=>{let ue={"top-left":re["top-left"].filter(X=>X!==G),"top-right":re["top-right"].filter(X=>X!==G),"bottom-left":re["bottom-left"].filter(X=>X!==G),"bottom-right":re["bottom-right"].filter(X=>X!==G)};for(let X of $)ue[X]=[...ue[X],G];return ir.every(X=>ue[X].length===re[X].length&&ue[X].every((Ae,Ge)=>Ae===re[X][Ge]))?re:ue})},[]),u=ot(G=>{y(j=>({"top-left":j["top-left"].filter(B=>B!==G),"top-right":j["top-right"].filter(B=>B!==G),"bottom-left":j["bottom-left"].filter(B=>B!==G),"bottom-right":j["bottom-right"].filter(B=>B!==G)}))},[]),N=ot((G,j)=>{C(B=>B[G]===j?B:{...B,[G]:j})},[]),O=ot((G,j)=>{x(B=>{let $=new Map(B);return $.set(G,j),$})},[]),Y=ot(G=>{x(j=>{let B=new Map(j);return B.delete(G),B})},[]),q=ot(()=>{x(new Map)},[]),U=Xt(()=>Array.from(w.keys()),[w]),Q=Xt(()=>({registerToolbar:k,insetTop:r.top??0,insetBottom:r.bottom??0}),[k,r]),ge=Xt(()=>({managedWindowIds:U,openManaged:O,closeManaged:Y,closeAllManaged:q}),[U,O,Y,q]),ee=Xt(()=>({topId:A,zOrders:s,focusWindow:F,containerRef:b,stacks:h,dockedSizes:P,dockWindow:z,undockWindow:u,reportDockedSize:N,draggingId:d,setDraggingId:R,hoveredZone:T,setHoveredZone:D,insetTop:r.top??0,insetBottom:r.bottom??0,insetInlineStart:r.left??0,insetInlineEnd:r.right??0}),[A,s,F,h,P,z,u,N,d,T,r]);return se(sr.Provider,{value:Q,children:se(ar.Provider,{value:ge,children:se(lr.Provider,{value:ee,children:yt("div",{ref:b,className:`rdd-panel-overlay-root${d!==null?" rdd-dragging-active":""}${t?" "+t:""}`,style:o,children:[e,d!==null&&se(Ji,{hoveredZone:T}),Array.from(w.entries()).map(([G,j])=>se(dr,{id:G,title:j.title,icon:j.icon,open:!0,onClose:()=>Y(G),defaultAnchor:j.anchor??"top-right",defaultWidth:j.width??320,defaultHeight:j.height??240,defaultStretch:j.stretch,children:j.content},G))]})})})})}function Ji({hoveredZone:e}){return se(fs,{children:ir.map(t=>se("div",{className:`rdd-panel-float-dropzone rdd-panel-float-dropzone--${t}${e===t?" rdd-panel-float-dropzone--hovered":""}`,"aria-hidden":"true"},t))})}function Qi({position:e,variant:t="transparent",buttonVariant:o="ghost",buttonSize:r,style:c,className:s,children:S}){let h=xn(sr),y=Le(null),P=Le(null);no(()=>{let D=y.current;if(!D||!h)return;let A=()=>{let w=e==="top"||e==="bottom"?D.offsetHeight:D.offsetWidth;P.current?.(),P.current=h.registerToolbar(e,w)};A();let g=new ResizeObserver(A);return g.observe(D),()=>{g.disconnect(),P.current?.(),P.current=null}},[e,h?.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=h?.insetTop??0,C.bottom=h?.insetBottom??0):(C.insetInlineEnd=0,C.top=h?.insetTop??0,C.bottom=h?.insetBottom??0);let R=e==="left"||e==="right"?{...(h?.insetTop??0)>0?{paddingTop:0}:{},...(h?.insetBottom??0)>0?{paddingBottom:0}:{}}:{},T=r!=null?{"--rdd-panel-toolbar-btn-size":`${r}px`}:{};return se("div",{ref:y,className:`rdd-panel-toolbar rdd-panel-toolbar--${e}${s?" "+s:""}`,"data-variant":t,"data-btn-variant":o,style:{...C,...R,...T,...c},children:S})}function es({icon:e,onClick:t,disabled:o,title:r,variant:c}){return se("button",{type:"button",className:"rdd-panel-toolbar-btn",onClick:t,disabled:o,title:r,"aria-label":r,...c?{"data-variant":c}:{},children:e})}function ts({icon:e,active:t,onToggle:o,disabled:r,title:c,variant:s}){return se("button",{type:"button",className:`rdd-panel-toolbar-btn${t?" rdd-panel-toolbar-btn--active":""}`,onClick:o,disabled:r,title:c,"aria-label":c,"aria-pressed":t,...s?{"data-variant":s}:{},children:e})}function ns(){return se("span",{className:"rdd-panel-toolbar__sep","aria-hidden":"true"})}function os(){return se("span",{className:"rdd-panel-toolbar__spacer","aria-hidden":"true"})}function rs({children:e}){return se("span",{className:"rdd-panel-toolbar__item",children:e})}function is({children:e}){return se("div",{className:"rdd-panel-toolbar__center",children:e})}function ss({placeholder:e="Search\u2026",onSearch:t,onSelect:o}){let[r,c]=Ne(!1),[s,S]=Ne(""),[h,y]=Ne([]),[P,C]=Ne(null),d=Le(null),R=Le(null),T=Le(null),D=Le(null),A=()=>{c(!0),setTimeout(()=>R.current?.focus({preventScroll:!0}),0)},g=()=>{c(!1),S(""),y([]),C(null),T.current?.abort(),D.current&&clearTimeout(D.current)},w=z=>{let u=z.target.value;if(S(u),T.current?.abort(),D.current&&clearTimeout(D.current),!u.trim()){y([]),C(null);return}D.current=setTimeout(async()=>{let N=new AbortController;T.current=N;try{let O=await t(u,N.signal);if(!N.signal.aborted){y(O);let Y=d.current;if(Y&&O.length>0){let q=Y.getBoundingClientRect(),U=Math.max(q.width,240),Q=q.left;Q+U>window.innerWidth-8&&(Q=window.innerWidth-U-8),C({top:q.bottom+4,left:Q,width:U})}else C(null)}}catch{}},300)},x=z=>{o(z),g()},W=z=>{d.current?.contains(z.relatedTarget)||g()},b=z=>{z.key==="Escape"&&g()},k=Xt(()=>{let z={};for(let u of h){let N=u.group??"";z[N]||(z[N]=[]),z[N].push(u)}return z},[h]),F=yt("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[se("circle",{cx:"6.5",cy:"6.5",r:"4.5"}),se("line",{x1:"10",y1:"10",x2:"14",y2:"14"})]});return r?yt("div",{ref:d,className:"rdd-panel-toolbar-search rdd-panel-toolbar-search--open",onBlur:W,children:[se("button",{type:"button",className:"rdd-panel-toolbar-btn",onClick:g,"aria-label":"Close search",title:"Close search",children:F}),se("input",{ref:R,className:"rdd-panel-toolbar-search__input",type:"text",value:s,onChange:w,onKeyDown:b,placeholder:e,autoComplete:"off"}),P&&h.length>0&&Ki(se("div",{className:"rdd-panel-toolbar-search__dropdown",style:{position:"fixed",top:P.top,left:P.left,width:P.width},onMouseDown:z=>z.preventDefault(),children:Object.entries(k).map(([z,u])=>yt(or.Fragment,{children:[z&&se("div",{className:"rdd-panel-toolbar-search__group",children:z}),u.map(N=>yt("button",{type:"button",className:"rdd-panel-toolbar-search__item",onClick:()=>x(N),children:[N.icon&&se("span",{className:"rdd-panel-toolbar-search__item-icon",children:N.icon}),se("span",{className:"rdd-panel-toolbar-search__item-label",children:N.label}),N.description&&se("span",{className:"rdd-panel-toolbar-search__item-desc",children:N.description})]},N.id))]},z||"__default__"))}),document.body)]}):se("div",{ref:d,className:"rdd-panel-toolbar-search",children:se("button",{type:"button",className:"rdd-panel-toolbar-btn",onClick:A,title:"Search","aria-label":"Search",children:F})})}function dr(e){let t=xn(lr);return e.open?se(cs,{ctx:t,...e},e.id):null}var as=120,ls=60,Yt=8,ds=8,tr=16,nr=40;function cs({id:e,title:t,icon:o,defaultAnchor:r,defaultWidth:c,defaultHeight:s,defaultStretch:S,stretch:h,onPlacementChange:y,stretchable:P=!0,children:C,ctx:d,onClose:R}){let T=xn(Ft)?.isRtl??!1,D=Ke(),A=Ze(),[g,w]=Ne("docked"),[x,W]=Ne(r),[b,k]=Ne(S??null),F=h!==void 0,z=F?h??null:b,[u,N]=Ne(null),[O,Y]=Ne({w:c,h:s}),q=Le(null),U=Le(g);U.current=g;let Q=Le(u);Q.current=u;let ge=Le(O);ge.current=O;let ee=Le(z);ee.current=z;let G=Le(x);G.current=x;let j=Le(y);j.current=y;let[B,$]=Ne({inline:!1,block:!1}),re=Le(B);re.current=B;let ue=Le(0),ze=ot((V,J)=>{W(V),F||k(J),j.current?.({anchor:V,stretch:J})},[F]),X=Le(null);no(()=>{g==="docked"&&d?.dockWindow(e,x,z)},[g,x,z]),no(()=>()=>{d?.undockWindow(e)},[]);let Ae=Le(!1);Qo(()=>{if(process.env.NODE_ENV!=="development"||Ae.current||g!=="docked"||!lt(z)||!d)return;let V=x.endsWith("-right")?"right":"left",J=[`top-${V}`,`bottom-${V}`].flatMap(ae=>d.stacks[ae]??[]).filter(ae=>ae!==e);J.length!==0&&(Ae.current=!0,console.warn(`[react-dockable-desktop] PanelFloatingWindow "${e}" stretches the block axis (stretch: "${z}") while ${J.length} other widget(s) are anchored to the same side (${J.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.`))},[g,z,x,d?.stacks,e]),Qo(()=>{d?.reportDockedSize(e,O.h)},[O.h]);let Ge=d?.zOrders[e]??101,Ye=!d||d.topId===e,Be=()=>{let V=q.current?.offsetParent;return{cw:V?.clientWidth??9999,ch:V?.clientHeight??9999}},rt=()=>{let V=d?.insetInlineStart??0,J=d?.insetInlineEnd??0;return{left:(T?J:V)+Yt,right:(T?V:J)+Yt,top:d?.insetTop??0,bottom:d?.insetBottom??0}},it=()=>{d?.focusWindow(e)},st=V=>{if(V.button!==0)return;V.preventDefault();let J,ae;if(U.current==="docked"){let fe=q.current,we=d?.containerRef?.current;if(fe&&we){let Re=fe.getBoundingClientRect(),De=we.getBoundingClientRect();J=Re.left-De.left,ae=Re.top-De.top}else J=Yt,ae=d?.insetTop??0}else J=Q.current?.x??0,ae=Q.current?.y??0;X.current={mouseX:V.clientX,mouseY:V.clientY,posX:J,posY:ae,hasDragged:!1},q.current?.setPointerCapture(V.pointerId)},Je=V=>J=>{if(J.button!==0)return;J.preventDefault(),J.stopPropagation();let ae=0,fe=0;if(U.current==="free")ae=Q.current?.x??0,fe=Q.current?.y??0;else{let Te=q.current,ke=Te?.offsetParent;if(Te&&ke){let We=Te.getBoundingClientRect(),Ee=ke.getBoundingClientRect();ae=We.left-Ee.left,fe=We.top-Ee.top}}let we=q.current?.getBoundingClientRect(),Re={x:ae,y:fe,w:ut(ee.current)&&we?we.width:ge.current.w,h:lt(ee.current)&&we?we.height:ge.current.h},De=V.includes("e")||V.includes("w"),Me=V.includes("n")||V.includes("s"),Se=!1,be={inline:!1,block:!1},dt=()=>{if(Se||U.current!=="docked")return;let Te=ee.current,ke=De&&ut(Te),We=Me&&lt(Te);if(!ke&&!We)return;Se=!0;let Ee=Te,Xe=G.current;if(ke){Ee=Pn(Ee,"inline");let Ie=V.includes("e");Xe=qi(Xe,Ie!==T?"left":"right")}We&&(Ee=Pn(Ee,"block"),Xe=ji(Xe,V.includes("s")?"top":"bottom")),ze(Xe,Ee)};mt({element:J.currentTarget,pointerId:J.pointerId,startClientX:J.clientX,startClientY:J.clientY,captureStart:()=>Re,activeClasses:[{el:document.body,classes:["rdd-resizing-active"]}],onMove:(Te,ke,We)=>{let{cw:Ee,ch:Xe}=Be(),Ie=U.current==="docked"?rt():{left:0,right:0,top:0,bottom:0},{x:Pt,y:Vt,w:Ve,h:pt}=Qt(V,Te,ke,We,{minW:as,minH:ls,maxW:Ee-Ie.right-We.x,maxH:Xe-Ie.bottom-We.y,minX:Ie.left,minY:Ie.top});if(dt(),U.current==="docked"&&P){let f=Ee-Ie.left-Ie.right,p=Xe-Ie.top-Ie.bottom-ue.current,n=ee.current,l={...be};De&&!ut(n)&&(Ve>=f-tr?l.inline=!0:be.inline&&Ve<f-nr&&(l.inline=!1)),Me&&!lt(n)&&(pt>=p-tr?l.block=!0:be.block&&pt<p-nr&&(l.block=!1)),(l.inline!==be.inline||l.block!==be.block)&&(be=l,$(l))}let i=Se?Pn(Pn(ee.current,De?"inline":"block"),Me?"block":"inline"):ee.current;Y(f=>({w:ut(i)?f.w:Ve,h:lt(i)?f.h:pt})),U.current==="free"&&N({x:Pt,y:Vt})},onEnd:Te=>{if(!be.inline&&!be.block){(re.current.inline||re.current.block)&&$({inline:!1,block:!1});return}Y(We=>({w:be.inline?Te.w:We.w,h:be.block?Te.h:We.h}));let ke=ee.current;be.inline&&(ke=er(ke,"inline")),be.block&&(ke=er(ke,"block")),ze(G.current,ke),$({inline:!1,block:!1})}})},Qe=V=>{if(X.current){let J=X.current;if(!J.hasDragged){if(Math.abs(V.clientX-J.mouseX)+Math.abs(V.clientY-J.mouseY)<4)return;if(J.hasDragged=!0,U.current==="docked"){if(ee.current){let Se=q.current?.getBoundingClientRect();Se&&Y({w:Math.round(Se.width),h:Math.round(Se.height)}),ze(G.current,null)}d?.undockWindow(e),w("free")}document.body.classList.add("rdd-dragging-active"),d?.setDraggingId(e)}let{cw:ae,ch:fe}=Be(),we=Math.max(0,Math.min(J.posX+V.clientX-J.mouseX,ae-ge.current.w)),Re=Math.max(0,Math.min(J.posY+V.clientY-J.mouseY,fe-ge.current.h));N({x:we,y:Re});let De=d?.containerRef?.current;if(De){let Me=Zi(De,V.clientX,V.clientY);d?.setHoveredZone(Me&&T?Jt(Me):Me)}}},ye=()=>{if(X.current?.hasDragged){let V=d?.hoveredZone;V&&(d?.dockWindow(e,V,ee.current),w("docked"),N(null),ze(V,ee.current)),d?.setHoveredZone(null),d?.setDraggingId(null)}document.body.classList.remove("rdd-dragging-active"),X.current=null},te=()=>{X.current?.hasDragged&&(d?.setHoveredZone(null),d?.setDraggingId(null)),document.body.classList.remove("rdd-dragging-active"),X.current=null},le;if(g==="docked"&&d){let V=rr(x,z),J=0,ae=V.length===0;for(let we of V){let Re=d.stacks[we]??[],De=Re.indexOf(e);if(De===-1)continue;ae=!0;let Me=0;for(let Se=0;Se<De;Se++)Me+=(d.dockedSizes[Re[Se]]??s)+ds;J=Math.max(J,Me)}ue.current=J;let fe=rt();le={zIndex:Ge,transition:"top 0.2s ease, bottom 0.2s ease",opacity:ae?void 0:0,pointerEvents:ae?void 0:"none"},ut(z)?(le.insetInlineStart=(d.insetInlineStart??0)+Yt,le.insetInlineEnd=(d.insetInlineEnd??0)+Yt):(le[x.endsWith("-right")?"insetInlineEnd":"insetInlineStart"]=Yt,le.width=O.w),lt(z)?(le.top=fe.top,le.bottom=fe.bottom):x.startsWith("top-")?(le.top=fe.top+J,le.height=O.h):(le.bottom=fe.bottom+J,le.height=O.h)}else le={left:u?.x??0,top:u?.y??0,width:O.w,height:O.h,zIndex:Ge};let $e=or.useMemo(()=>{if(g==="free")return["n","ne","e","se","s","sw","w","nw"];let V=x.startsWith("top-")?"s":"n",ae=x.endsWith("-right")!==T?"w":"e",fe=ut(z),we=lt(z),Re=[];return Re.push(...fe?["e","w"]:[ae]),Re.push(...we?["n","s"]:[V]),!fe&&!we&&Re.push(`${V}${ae}`),Re},[g,x,T,z]),Fe=yt("svg",{width:"8",height:"8",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",children:[se("line",{x1:"1",y1:"1",x2:"9",y2:"9"}),se("line",{x1:"9",y1:"1",x2:"1",y2:"9"})]});return yt("div",{ref:q,dir:T?"rtl":"ltr",className:["rdd-panel-float",Ye?"rdd-panel-float--active":"",B.inline||B.block?"rdd-panel-float--snapping":""].filter(Boolean).join(" "),style:le,onPointerDown:it,onPointerMove:Qe,onPointerUp:ye,onPointerCancel:te,children:[yt("div",{className:"rdd-panel-float__header",onPointerDown:st,children:[o&&se("span",{className:"rdd-panel-float__icon",children:o}),se("span",{className:"rdd-panel-float__title",children:ce(t,D)}),se("button",{type:"button",className:"rdd-panel-float__close",onClick:R,onPointerDown:V=>V.stopPropagation(),title:ce(A.closeTooltip,D),"aria-label":ce(A.closeTooltip,D),children:Fe})]}),se("div",{className:"rdd-panel-float__body",children:C}),$e.map(V=>se("div",{className:`rdd-resize-handle rdd-resize-${V}`,onPointerDown:Je(V)},V))]})}function us(){let[e,t]=Ne(!1),o=ot(()=>{t(!0)},[]),r=ot(()=>{t(!1)},[]);return{isOpen:e,open:o,close:r}}var ps=[];function gs(){let e=xn(ar),t=e?.managedWindowIds??ps;return Xt(()=>({open:(o,r)=>e?.openManaged(o,r),close:o=>e?.closeManaged(o),closeAll:()=>e?.closeAllManaged(),isOpen:o=>t.includes(o),openIds:t}),[e,t])}export{Tt as ConfirmationForm,In as ContextMenu,Ln as ContextMenuProvider,Ht as DefaultContextMenuAdapter,ni as DockableDesktopProvider,Rn as FormContainerContext,xt as FormContainerProvider,mi as LeftPanelRenderer,li as ModalStackRenderer,Bn as PanelContributionProvider,dr as PanelFloatingWindow,Ui as PanelOverlayRoot,zn as PanelProvider,sn as PanelRegistry,Dt as PanelRegistryClass,Qi as PanelToolbar,rs as PanelToolbarItem,ns as PanelToolbarSeparator,hi as RightPanelRenderer,Mi as SecondarySidebar,bi as SidePanelRenderer,Ko as Sidebar,Vi as ToastContainer,Wi as Toolbar,es as ToolbarButton,is as ToolbarCenter,gn as ToolbarProvider,ss as ToolbarSearchInput,os as ToolbarSpacer,ts as ToolbarToggle,_r as WindowManager,Tn as WindowManagerProvider,Hn as WorkspaceClient,Qt as computeResizedRect,Kt as defaultPredefinedMessages,ce as formatLabel,Wt as isSerializable,Ao as sidebarSectionToTab,mt as startPointerDrag,Fi as toast,Gn as useActivePanelContribution,Wn as useColorScheme,zt as useFormContainer,Ke as useFormatMessage,Qr as useMergedSidebarTabs,Jr as useMergedToolbarItems,Mt as usePanelActions,Pr as usePanelContext,xr as usePanelContextMenu,Ur as usePanelContribution,us as usePanelFloatingWindow,gs as usePanelFloatingWindowManager,dn as usePanelId,fr as usePanelSize,ft as usePanelState,Ze as usePredefinedMessages,qt as useRegistry,Rr as useShowContextMenu,Si as useSidebar,Ti as useSidebarTab,gt as useStyleClasses,fn as useToolbar,jt as useWindowManagerActions,je as useWindowManagerState};
24
24
  //# sourceMappingURL=index.js.map