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/README.md +5 -1
- package/dist/index.cjs +5 -5
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +5 -5
- package/dist/index.js.map +1 -1
- package/package.json +12 -1
package/dist/index.cjs
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
"use strict";var tr=Object.create;var Jt=Object.defineProperty;var nr=Object.getOwnPropertyDescriptor;var or=Object.getOwnPropertyNames;var rr=Object.getPrototypeOf,ir=Object.prototype.hasOwnProperty;var sr=(e,t)=>{for(var n in t)Jt(e,n,{get:t[n],enumerable:!0})},Hn=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of or(t))!ir.call(e,a)&&a!==n&&Jt(e,a,{get:()=>t[a],enumerable:!(o=nr(t,a))||o.enumerable});return e};var Qt=(e,t,n)=>(n=e!=null?tr(rr(e)):{},Hn(t||!e||!e.__esModule?Jt(n,"default",{value:e,enumerable:!0}):n,e)),ar=e=>Hn(Jt({},"__esModule",{value:!0}),e);var Xr={};sr(Xr,{ConfirmationForm:()=>Pt,ContextMenu:()=>rn,ContextMenuProvider:()=>sn,DefaultContextMenuAdapter:()=>Tt,DockableDesktopProvider:()=>vo,FormContainerContext:()=>en,FormContainerProvider:()=>bt,LeftPanelRenderer:()=>xo,ModalStackRenderer:()=>yo,PanelContributionProvider:()=>gn,PanelFloatingWindow:()=>_n,PanelOverlayRoot:()=>Yo,PanelProvider:()=>ln,PanelRegistry:()=>Xt,PanelRegistryClass:()=>Mt,PanelToolbar:()=>Xo,PanelToolbarItem:()=>Zo,PanelToolbarSeparator:()=>qo,RightPanelRenderer:()=>Co,SecondarySidebar:()=>ko,SidePanelRenderer:()=>wo,Sidebar:()=>Wn,ToastContainer:()=>Do,Toolbar:()=>zo,ToolbarButton:()=>Vo,ToolbarCenter:()=>Uo,ToolbarProvider:()=>Zt,ToolbarSearchInput:()=>Jo,ToolbarSpacer:()=>jo,ToolbarToggle:()=>Ko,WindowManager:()=>co,WindowManagerProvider:()=>nn,WorkspaceClient:()=>pn,computeResizedRect:()=>_t,defaultPredefinedMessages:()=>Nt,formatLabel:()=>me,isSerializable:()=>St,sidebarSectionToTab:()=>Ln,startPointerDrag:()=>ft,toast:()=>No,useActivePanelContribution:()=>fn,useColorScheme:()=>cn,useFormContainer:()=>Rt,useFormatMessage:()=>et,useMergedSidebarTabs:()=>mo,useMergedToolbarItems:()=>fo,usePanelActions:()=>yt,usePanelContext:()=>Un,usePanelContextMenu:()=>Jn,usePanelContribution:()=>go,usePanelFloatingWindow:()=>Qo,usePanelFloatingWindowManager:()=>er,usePanelId:()=>Vt,usePanelSize:()=>Bn,usePanelState:()=>gt,usePredefinedMessages:()=>nt,useRegistry:()=>Wt,useShowContextMenu:()=>to,useSidebar:()=>Io,useSidebarTab:()=>Eo,useStyleClasses:()=>pt,useToolbar:()=>Ut,useWindowManagerActions:()=>At,useWindowManagerState:()=>tt});module.exports=ar(Xr);var X=Qt(require("react"),1),Tn=require("react-dom");var F=require("react");var zt=require("react"),lr={requestClose:()=>{console.warn("FormContainerContract: requestClose called but no container is present")},setDirty:()=>{},onCloseRequested:()=>()=>{},registerStateProvider:()=>()=>{},setTitle:()=>{},setIcon:()=>{},containerType:"standalone",instanceId:"standalone",onClose:()=>()=>{},onMinimize:()=>()=>{},onRestore:()=>()=>{},onResize:()=>()=>{},requestMinimize:()=>{},getDimensions:()=>null,onActivate:()=>()=>{},onDeactivate:()=>()=>{},onContainerTypeChange:()=>()=>{}},en=(0,zt.createContext)(lr),bt=en.Provider,Rt=()=>(0,zt.useContext)(en),Bn=()=>{let{onResize:e,getDimensions:t}=Rt();return(0,zt.useSyncExternalStore)(n=>e?e(()=>n()):()=>{},()=>t?t():null)};var Mt=class{registry=new Map;register(t,n,o){this.registry.set(t,{Component:n,defaultOptions:o})}get(t){return this.registry.get(t)}getRegisteredIds(){return Array.from(this.registry.keys())}},Xt=new Mt;var Nt={floatWindow:{id:"dockable-desktop-floatWindow",defaultMessage:"Float Window"},minimizePanel:{id:"dockable-desktop-minimizePanel",defaultMessage:"Minimize Panel"},closeTab:{id:"dockable-desktop-closeTab",defaultMessage:"Close Tab"},restorePanel:{id:"dockable-desktop-restorePanel",defaultMessage:"Restore Panel"},maximizePanel:{id:"dockable-desktop-maximizePanel",defaultMessage:"Maximize Panel"},closePanel:{id:"dockable-desktop-closePanel",defaultMessage:"Close Panel"},dockWindow:{id:"dockable-desktop-dockWindow",defaultMessage:"Dock Window"},minimize:{id:"dockable-desktop-minimize",defaultMessage:"Minimize"},maximize:{id:"dockable-desktop-maximize",defaultMessage:"Maximize"},restoreSize:{id:"dockable-desktop-restoreSize",defaultMessage:"Restore Size"},close:{id:"dockable-desktop-close",defaultMessage:"Close"},closeEmptyGroup:{id:"dockable-desktop-closeEmptyGroup",defaultMessage:"Close empty split group"},unsavedChangesTitle:{id:"dockable-desktop-unsavedChangesTitle",defaultMessage:"Unsaved Changes"},unsavedChangesMessage:{id:"dockable-desktop-unsavedChangesMessage",defaultMessage:'"{title}" has unsaved changes. Do you want to discard your changes and close?'},discardChanges:{id:"dockable-desktop-discardChanges",defaultMessage:"Discard Changes"},cancel:{id:"dockable-desktop-cancel",defaultMessage:"Cancel"},yes:{id:"dockable-desktop-yes",defaultMessage:"Yes"},no:{id:"dockable-desktop-no",defaultMessage:"No"},ok:{id:"dockable-desktop-ok",defaultMessage:"OK"},closePanelTooltip:{id:"dockable-desktop-closePanelTooltip",defaultMessage:"Close panel"},closeTooltip:{id:"dockable-desktop-closeTooltip",defaultMessage:"Close"}};var $n=require("react");function St(e){if(e===null)return!0;if(e===void 0)return!1;let t=typeof e;if(t==="string"||t==="number"||t==="boolean")return!0;if(t==="function"||t==="symbol"||t==="bigint")return!1;if(e instanceof Date)return!0;if((0,$n.isValidElement)(e))return!1;if(Array.isArray(e))return e.every(St);let n=Object.getPrototypeOf(e);return n!==Object.prototype&&n!==null?!1:Object.values(e).every(St)}var vt=require("react/jsx-runtime"),Dt=(0,F.createContext)(null),tn=(0,F.createContext)(null),Yn=(0,F.createContext)(null),Xn=(0,F.createContext)(null),Vn=(0,F.createContext)(Nt),Kn=(0,F.createContext)({}),pt=()=>(0,F.useContext)(Kn),qn=(0,F.createContext)(Xt),Wt=()=>(0,F.useContext)(qn),Pn=class{listeners={};subscribe(t,n){return this.listeners[t]||(this.listeners[t]=[]),this.listeners[t].push(n),()=>{this.listeners[t]=this.listeners[t].filter(o=>o!==n)}}publish(t,n){this.listeners[t]&&this.listeners[t].forEach(o=>o(n))}},dr={type:"leaf",id:"group-default",panels:[],activePanelId:null};function jn(e,t){let n=t.panels[e];if(!n||n.state==="minimized")return!1;if(t.floating.some(a=>a.id===e))return!0;let o=a=>a.type==="leaf"?a.activePanelId===e:a.children.some(o);return t.gridRoot?o(t.gridRoot):!1}function xn(e){let t=s=>s!==null&&!!e.panels[s]&&e.panels[s].state!=="minimized",n=s=>{if(s.type==="leaf")return t(s.activePanelId)?s.activePanelId:null;for(let I of s.children){let S=n(I);if(S)return S}return null},o=e.gridRoot?n(e.gridRoot):null;if(o)return o;let a=null;for(let s of e.floating)t(s.id)&&(!a||s.z>a.z)&&(a=s);return a?.id??null}function Zn(e){if(!e||!e.gridRoot||!Array.isArray(e.floating)||!Array.isArray(e.minimized)||!e.panels)return null;let t=e.floating.map(s=>{if("stickyRight"in s||"stickyBottom"in s){let I=s.stickyRight&&s.stickyBottom?"bottom-right":s.stickyRight?"top-right":s.stickyBottom?"bottom-left":null,{stickyRight:S,stickyBottom:C,...P}=s;return{...P,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&&(jn(o,n)?a=o:process.env.NODE_ENV==="development"&&console.warn(`[react-dockable-desktop] Ignoring the saved layout's activePanelId ("${o}") \u2014 it doesn't name a currently visible panel (it may have been closed, minimized, or excluded from the snapshot as non-serializable). Falling back to the selected tab of the first leaf in the grid.`)),a===null&&(a=xn(n)),{gridRoot:e.gridRoot,floating:t,minimized:e.minimized,panels:e.panels,activePanelId:a}}function cr(e){if(e)try{let t=Zn(JSON.parse(e));if(t)return t}catch{}return{gridRoot:dr,floating:[],minimized:[],panels:{},activePanelId:null}}var nn=({children:e,client:t,formatMessage:n,predefinedMessages:o,dir:a,modalClass:s,modalBodyClass:I,sidePanelClass:S,sidePanelBodyClass:C,windowClass:P,windowBodyClass:R,zIndexBase:c})=>{let k=(0,F.useRef)(t?.registry??Xt).current,T=t?.config.formatMessage??n,A=t?.config.predefinedMessages??o,H=t?.config.dir??a,u=t?.config.zIndexBase??c??1e3,[w,x]=(0,F.useState)(()=>({...cr(t?.initialState??null),draggedPanelId:null,dir:H||"ltr",isRtl:H==="rtl",splitRatio:Math.min(.9,Math.max(.1,t?.config.defaultSplitRatio??.5)),edgeSplitRatio:Math.min(.9,Math.max(.1,t?.config.defaultEdgeSplitRatio??.2))})),O=(0,F.useRef)(w);O.current=w;let h=(0,F.useRef)(new Set);(0,F.useEffect)(()=>{h.current.forEach(i=>i())},[w]);let M=(0,F.useCallback)(()=>O.current,[]),B=(0,F.useCallback)(i=>(h.current.add(i),()=>h.current.delete(i)),[]),D=(0,F.useRef)({}),l=(0,F.useRef)({}),E=(0,F.useMemo)(()=>({...Nt,...A}),[A]),_=(0,F.useRef)(new Pn),q=(0,F.useRef)(u);(0,F.useEffect)(()=>(document.documentElement.style.setProperty("--rdd-z-base",String(u)),()=>{document.documentElement.style.removeProperty("--rdd-z-base")}),[u]);let Q=(0,F.useCallback)((i,v)=>_.current.subscribe(i,v),[]),ee=(0,F.useCallback)((i,v)=>{_.current.publish(i,v)},[]),ne=(0,F.useCallback)((i,v)=>{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 y=z=>v.some(N=>{let W=typeof N.x=="string"?parseFloat(N.x):N.x,Y=typeof N.y=="string"?parseFloat(N.y):N.y;return!N.maximized&&Math.abs(W-z.x)<20&&Math.abs(Y-z.y)<20}),f=0;for(;y({x:g,y:d})&&f<10;)g+=30,d+=30,f++;let b=Math.max(100,window.innerWidth||1024),p=Math.max(100,window.innerHeight||768);return(g+L>b||d+r>p)&&(g=100+f%5*30,d=100+f%5*30),g=Math.max(0,Math.min(g,b-100)),d=Math.max(0,Math.min(d,p-40)),{x:g,y:d,width:L,height:r}},[]),Pe=(0,F.useCallback)(i=>{x(v=>{let g=v.panels[i];if(!g)return v;if(g.state==="floating"){let d=v.floating.find(r=>r.id===i);if(!d)return v;let L=!v.floating.some(r=>r.z>d.z);return L&&v.activePanelId===i?v:(L||(q.current+=1),{...v,floating:v.floating.map(r=>r.id===i?{...r,z:L?d.z:q.current}:r),activePanelId:i})}else if(g.state==="docked"){if(v.activePanelId===i)return v;let d=L=>L.type==="leaf"?L.panels.includes(i)?{...L,activePanelId:i}:L:{...L,children:L.children.map(d)};return{...v,gridRoot:d(v.gridRoot),activePanelId:i}}return v.activePanelId===i?v:{...v,activePanelId:i}})},[]),se=(i,v)=>{if(i.type==="leaf"){let g=i.panels.indexOf(v);if(g===-1)return i;let d=i.panels.filter(y=>y!==v),L=i.activePanelId===v?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=>se(r,v)).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,y)=>r+y,0);return{...i,children:g,sizes:d.map(r=>r/L)}}},V=(i,v,g)=>{if(i.type==="leaf"){if(i.id===v){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=>V(d,v,g))}},J=i=>{if(i.type==="leaf")return i.id;for(let v of i.children){let g=J(v);if(g)return g}return null},j=(0,F.useCallback)((i,v,g)=>{let d=i;if(g?.dedupeKey!==void 0){let p=Object.values(O.current.panels).find(z=>z.component===v&&z.dedupeKey===g.dedupeKey);p&&(d=p.id)}let L=!(d in O.current.panels),r=d!==i,y=g?.focus!==!1,b=g?.props!==void 0?St(g.props):!0;x(p=>{let z=p.panels[d],N=k.get(v),W=g?.title||g?.title||N?.defaultOptions?.title||d,Y=g?.initialTarget||N?.defaultOptions?.initialTarget||"docked",oe=N?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350},K=y?d:p.activePanelId;if(z)if(z.state==="minimized"){let ge=p.minimized.filter(be=>be.id!==d);if(Y==="floating"||!p.gridRoot){q.current+=1;let be=ne(oe,p.floating);return{...p,minimized:ge,floating:[...p.floating,{...be,id:d,z:q.current}],panels:{...p.panels,[d]:{...z,state:"floating"}},activePanelId:K}}else{let be=J(p.gridRoot)||"group-default";return{...p,minimized:ge,gridRoot:V(p.gridRoot,be,d),panels:{...p.panels,[d]:{...z,state:"docked"}},activePanelId:K}}}else{if(z.state==="floating")return y&&Pe(d),p;{let ge=be=>be.type==="leaf"?be.panels.includes(d)?{...be,activePanelId:d}:be:{...be,children:be.children.map(ge)};return{...p,gridRoot:ge(p.gridRoot),activePanelId:K}}}let he={id:d,title:W,component:v,state:Y==="tabbed"?"docked":Y,props:g?.props,serializable:b,dedupeKey:g?.dedupeKey},de={...p.panels,[d]:he};if(Y==="floating"){q.current+=1;let ge=ne(oe,p.floating),be=g?.anchor??N?.defaultOptions?.defaultAnchor??null;return{...p,floating:[...p.floating,{...ge,id:d,z:q.current,anchor:be}],panels:de,activePanelId:K}}else{let ge=J(p.gridRoot)||"group-default";return{...p,gridRoot:V(p.gridRoot,ge,d),panels:de,activePanelId:K}}}),L&&_.current.publish("panel:opened",{id:d,component:v}),(L||r)&&_.current.publish("layout:changed",{})},[ne,Pe]),G=(0,F.useCallback)(i=>{let v=i in O.current.panels;x(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 y=se(g.gridRoot,i)||{type:"leaf",id:"group-default",panels:[],activePanelId:null},f=g.floating.filter(p=>p.id!==i),b=g.activePanelId===i?xn({gridRoot:y,floating:f,panels:r}):g.activePanelId;return{...g,gridRoot:y,floating:f,minimized:g.minimized.filter(p=>p.id!==i),panels:r,activePanelId:b}}),v&&(_.current.publish("panel:closed",{id:i}),_.current.publish("layout:changed",{}))},[]),ce=(0,F.useCallback)((i,v)=>{D.current[i]=v},[]),we=(0,F.useCallback)(i=>{delete D.current[i]},[]),We=(0,F.useCallback)((i,v)=>{l.current[i]=v},[]),Z=(0,F.useCallback)(i=>{delete l.current[i]},[]),Ye=(0,F.useCallback)((i,v,g)=>{x(d=>{let L=d.panels[i];return L?{...d,panels:{...d.panels,[i]:{...L,dirty:v,dirtyOptions:g}}}:d})},[]),Je=(0,F.useCallback)((i,v)=>{x(g=>{let d=g.panels[i];return d?{...g,panels:{...g.panels,[i]:{...d,title:v}}}:g})},[]),Qe=(0,F.useCallback)(async(i,v)=>{if(v?.force){G(i);return}let g=D.current[i];if(g&&!await g())return;let d=O.current.panels[i];if(d?.dirty)if(v?.onConfirm){if(!await v.onConfirm(d.dirtyOptions))return}else return;G(i)},[G]),Ke=(0,F.useCallback)(i=>{let v=O.current.panels[i]?.state!=="minimized"&&i in O.current.panels;x(g=>{let d=g.panels[i];if(!d||d.state==="minimized"||k.get(d.component)?.defaultOptions?.canMinimize===!1)return g;let r,y;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 Y of W.children){let oe=N(Y);if(oe)return oe}return null};y=N(g.gridRoot)??void 0}let f=se(g.gridRoot,i)||{type:"leaf",id:"group-default",panels:[],activePanelId:null},b=g.floating.filter(N=>N.id!==i),p={...g.panels,[i]:{...d,state:"minimized",previousState:d.state,lastFloatingRect:r,lastLeafId:y}},z=g.activePanelId===i?xn({gridRoot:f,floating:b,panels:p}):g.activePanelId;return{...g,gridRoot:f,floating:b,minimized:[...g.minimized,{id:i,title:d.title,component:d.component}],panels:p,activePanelId:z}}),v&&(_.current.publish("panel:minimized",{id:i}),_.current.publish("layout:changed",{}))},[]),at=(0,F.useCallback)((i,v)=>{let g=O.current.panels[i]?.state==="minimized",d=v?.focus!==!1;x(L=>{let r=L.panels[i];if(!r||r.state!=="minimized")return L;let y=L.minimized.filter(p=>p.id!==i),f=r.previousState||"docked",b=d?i:L.activePanelId;if(f==="floating"){q.current+=1;let p=k.get(r.component),z=r.lastFloatingRect||p?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350},N=ne(z,L.floating);return{...L,minimized:y,floating:[...L.floating,{...N,id:i,z:q.current,anchor:r.lastFloatingRect?.anchor??null}],panels:{...L.panels,[i]:{...r,state:"floating"}},activePanelId:b}}else{let p=(Y,oe)=>Y.type==="leaf"?Y.id===oe:Y.children.some(K=>p(K,oe)),z=r.lastLeafId&&p(L.gridRoot,r.lastLeafId),N=k.get(r.component),W=N?.defaultOptions?.canDrag!==!1;if(z)return{...L,minimized:y,gridRoot:V(L.gridRoot,r.lastLeafId,i),panels:{...L.panels,[i]:{...r,state:"docked"}},activePanelId:b};if(W){q.current+=1;let Y=r.lastFloatingRect||N?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350},oe=ne(Y,L.floating);return{...L,minimized:y,floating:[...L.floating,{...oe,id:i,z:q.current,anchor:r.lastFloatingRect?.anchor??null}],panels:{...L.panels,[i]:{...r,state:"floating"}},activePanelId:b}}else{let Y=J(L.gridRoot)||"group-default";return{...L,minimized:y,gridRoot:V(L.gridRoot,Y,i),panels:{...L.panels,[i]:{...r,state:"docked"}},activePanelId:b}}}}),g&&(_.current.publish("panel:restored",{id:i}),_.current.publish("layout:changed",{}))},[ne]),lt=(0,F.useCallback)((i,v,g)=>{x(d=>{let L=d.panels[i];if(!L||k.get(L.component)?.defaultOptions?.canDrag===!1)return d;let y=k.get(L.component),f=v||y?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350},b=se(d.gridRoot,i);q.current+=1;let p=ne(f,d.floating);return{...d,gridRoot:b||{type:"leaf",id:"group-default",panels:[],activePanelId:null},floating:[...d.floating,{...p,id:i,z:q.current,anchor:g??null}],panels:{...d.panels,[i]:{...L,state:"floating"}}}})},[ne]),dt=(0,F.useCallback)((i,v)=>{x(g=>{let d=g.panels[i];if(!d)return g;let L=g.floating.filter(f=>f.id!==i),r=se(g.gridRoot,i),y=v||J(r||g.gridRoot)||"group-default";return{...g,gridRoot:V(r||g.gridRoot,y,i),floating:L,panels:{...g.panels,[i]:{...d,state:"docked"}}}})},[]),it=(i,v,g,d,L)=>{if(i.type==="leaf"){if(i.id===v){let r={type:"leaf",id:`group-split-${Date.now()}-${Math.floor(Math.random()*1e3)}`,panels:[g],activePanelId:g},y=d==="left"||d==="right"?"horizontal":"vertical",f=d==="left"||d==="top"?[r,i]:[i,r],b=d==="left"||d==="top"?[L,1-L]:[1-L,L];return{type:"branch",orientation:y,sizes:b,children:f}}return i}else return{...i,children:i.children.map(r=>it(r,v,g,d,L))}},st=(0,F.useCallback)(i=>{x(v=>({...v,draggedPanelId:i}))},[]),ke=(0,F.useCallback)((i,v,g)=>{x(d=>{let L=d.panels[i];if(!L)return d;let r=d.floating.filter(b=>b.id!==i),y=se(d.gridRoot,i),f;return g==="center"?f=V(y||d.gridRoot,v,i):f=it(y||d.gridRoot,v,i,g,d.splitRatio),{...d,gridRoot:f,floating:r,panels:{...d.panels,[i]:{...L,state:"docked"}},draggedPanelId:null}})},[]),ae=(0,F.useCallback)((i,v)=>{x(g=>{let d=g.panels[i];if(!d)return g;let L=g.floating.filter(N=>N.id!==i),r=se(g.gridRoot,i),y={type:"leaf",id:`group-edge-${Date.now()}-${Math.floor(Math.random()*1e3)}`,panels:[i],activePanelId:i},f=v==="left"||v==="right"?"horizontal":"vertical",b=v==="left"||v==="top"?[y,r||g.gridRoot]:[r||g.gridRoot,y],p=g.edgeSplitRatio,z={type:"branch",orientation:f,sizes:v==="left"||v==="top"?[p,1-p]:[1-p,p],children:b};return{...g,gridRoot:z,floating:L,panels:{...g.panels,[i]:{...d,state:"docked"}},draggedPanelId:null}})},[]),fe=(0,F.useCallback)((i,v,g)=>{x(d=>{let L=d.panels[i];if(!L)return d;let r=se(d.gridRoot,i),y=p=>{if(p.type==="leaf"){if(p.id===v){let z=p.panels.filter(Y=>Y!==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(y)}},f=y(r||d.gridRoot),b=d.floating.filter(p=>p.id!==i);return{...d,gridRoot:f,floating:b,panels:{...d.panels,[i]:{...L,state:"docked"}},draggedPanelId:null}})},[]),Ve=(0,F.useCallback)(i=>{x(v=>{let g=L=>{if(L.type==="leaf")return L.id===i&&L.canClose!==!1?null:L;{let r=L.children.map(b=>g(b)).filter(b=>b!==null);if(r.length===0)return null;if(r.length===1)return r[0];let y=L.sizes.slice(0,r.length),f=y.reduce((b,p)=>b+p,0);return{...L,children:r,sizes:y.map(b=>b/f)}}},d=g(v.gridRoot);return{...v,gridRoot:d||{type:"leaf",id:"group-default",panels:[],activePanelId:null}}})},[]),Xe=(0,F.useCallback)(i=>{x(v=>({...v,floating:v.floating.map(g=>g.id===i?{...g,maximized:!g.maximized}:g)}))},[]),U=(0,F.useCallback)((i,v)=>{let g=(d,L)=>{if(d.type==="leaf")return d;if(L===i.length)return{...d,sizes:v};let r=i[L],y=d.children.map((f,b)=>b===r?g(f,L+1):f);return{...d,children:y}};x(d=>({...d,gridRoot:g(d.gridRoot,0)}))},[]),te=(0,F.useCallback)((i,v)=>{x(g=>({...g,floating:g.floating.map(d=>d.id===i?{...d,...v}:d)}))},[]),ue=(0,F.useCallback)(()=>{let i=O.current.panels,v=[],g={};for(let[p,z]of Object.entries(i)){let N=l.current[p],W=N?.(),Y=N!==void 0&&W!==void 0,oe=Y?W:z.props,K=Y?St(W):z.serializable;K?g[p]=Y?{...z,props:oe,serializable:K}:z:v.push(p)}let d=O.current.gridRoot,L=O.current.floating,r=O.current.minimized;for(let p of v)d=se(d,p)||{type:"leaf",id:"group-default",panels:[],activePanelId:null},L=L.filter(z=>z.id!==p),r=r.filter(z=>z.id!==p);v.length>0&&_.current.publish("layout:panels-excluded",{panels:v.map(p=>({id:p,component:i[p].component}))});let y=O.current.activePanelId,f=y!==null&&jn(y,{gridRoot:d,floating:L,panels:g})?y:null,b={version:2,...f!==null?{activePanelId:f}:{},gridRoot:d,floating:L,minimized:r,panels:g};return JSON.stringify(b)},[]),xe=(0,F.useCallback)(i=>{try{let v=Zn(JSON.parse(i));return v?(x(g=>({...g,gridRoot:v.gridRoot,floating:v.floating,minimized:v.minimized,panels:v.panels,draggedPanelId:null,activePanelId:v.activePanelId})),!0):!1}catch(v){return console.error("Failed to parse layout configuration:",v),!1}},[]),Ie=(0,F.useCallback)(i=>{x(v=>v.activePanelId===i?v:{...v,activePanelId:i})},[]),Ee=(0,F.useCallback)(i=>{x(v=>v.dir===i?v:{...v,dir:i,isRtl:i==="rtl"})},[]),Ae=(0,F.useCallback)(i=>i in O.current.panels,[]),Le=(0,F.useCallback)(()=>Object.keys(O.current.panels),[]),ze=(0,F.useCallback)((i,v)=>Object.values(O.current.panels).find(d=>d.component===i&&d.dedupeKey===v)?.id??null,[]);(0,F.useEffect)(()=>{H&&x(i=>i.dir===H?i:{...i,dir:H,isRtl:H==="rtl"})},[H]);let Te=(0,F.useRef)(new Map),ct=(0,F.useRef)(null),Oe=(0,F.useCallback)(i=>(ct.current=i,()=>{ct.current=null}),[]),Fe=(0,F.useCallback)(i=>{ct.current?.(i)},[]),_e=(0,F.useCallback)((i,v)=>(Te.current.set(i,v),()=>{Te.current.delete(i)}),[]),Ne=(0,F.useCallback)(i=>Te.current.get(i)?.()??[],[]),qe=(0,F.useMemo)(()=>({openPanel:j,closePanel:G,minimizePanel:Ke,restorePanel:at,floatPanel:lt,dockPanel:dt,maximizePanel:Xe,updateSplitSizes:U,updateFloatingPosition:te,focusPanel:Pe,isOpen:Ae,getOpenPanelIds:Le,findPanelId:ze,saveLayout:ue,loadLayout:xe,publish:ee,subscribe:Q,setDraggedPanelId:st,dockPanelToGroup:ke,movePanelOrder:fe,closeLeafGroup:Ve,registerCloseGuard:ce,unregisterCloseGuard:we,registerStateProvider:We,unregisterStateProvider:Z,setPanelDirty:Ye,updatePanelTitle:Je,requestClosePanel:Qe,dockPanelToWorkspaceEdge:ae,setActivePanel:Ie,setDirection:Ee,registerPanelContextMenu:_e,getPanelContextMenuItems:Ne,showContextMenu:Fe,registerContextMenuFn:Oe}),[j,G,Ke,at,lt,dt,Xe,U,te,Pe,Ae,Le,ze,ue,xe,ee,Q,st,ke,fe,Ve,ce,we,We,Z,Ye,Je,Qe,ae,Ie,Ee,_e,Ne,Fe,Oe]),He=i=>{let v=i.defaultMessage||i.id;return i.values&&Object.entries(i.values).forEach(([g,d])=>{v=v.replace(`{${g}}`,String(d))}),v},Gt=(0,F.useMemo)(()=>({modalClass:s,modalBodyClass:I,sidePanelClass:S,sidePanelBodyClass:C,windowClass:P,windowBodyClass:R}),[s,I,S,C,P,R]);(0,F.useEffect)(()=>{if(process.env.NODE_ENV==="development")try{getComputedStyle(document.documentElement).getPropertyValue("--rdd-styles-loaded").trim()!=="1"&&console.error(`[react-dockable-desktop] styles.css is not imported.
|
|
1
|
+
"use strict";var nr=Object.create;var Qt=Object.defineProperty;var or=Object.getOwnPropertyDescriptor;var rr=Object.getOwnPropertyNames;var ir=Object.getPrototypeOf,sr=Object.prototype.hasOwnProperty;var ar=(e,t)=>{for(var o in t)Qt(e,o,{get:t[o],enumerable:!0})},$n=(e,t,o,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let d of rr(t))!sr.call(e,d)&&d!==o&&Qt(e,d,{get:()=>t[d],enumerable:!(r=or(t,d))||r.enumerable});return e};var en=(e,t,o)=>(o=e!=null?nr(ir(e)):{},$n(t||!e||!e.__esModule?Qt(o,"default",{value:e,enumerable:!0}):o,e)),lr=e=>$n(Qt({},"__esModule",{value:!0}),e);var Vr={};ar(Vr,{ConfirmationForm:()=>xt,ContextMenu:()=>sn,ContextMenuProvider:()=>an,DefaultContextMenuAdapter:()=>kt,DockableDesktopProvider:()=>yo,FormContainerContext:()=>tn,FormContainerProvider:()=>vt,LeftPanelRenderer:()=>Co,ModalStackRenderer:()=>Po,PanelContributionProvider:()=>fn,PanelFloatingWindow:()=>Hn,PanelOverlayRoot:()=>Xo,PanelProvider:()=>dn,PanelRegistry:()=>Vt,PanelRegistryClass:()=>St,PanelToolbar:()=>Vo,PanelToolbarItem:()=>Uo,PanelToolbarSeparator:()=>jo,RightPanelRenderer:()=>wo,SecondarySidebar:()=>Eo,SidePanelRenderer:()=>Ro,Sidebar:()=>On,ToastContainer:()=>Wo,Toolbar:()=>zo,ToolbarButton:()=>Ko,ToolbarCenter:()=>Jo,ToolbarProvider:()=>Ut,ToolbarSearchInput:()=>Qo,ToolbarSpacer:()=>Zo,ToolbarToggle:()=>qo,WindowManager:()=>uo,WindowManagerProvider:()=>on,WorkspaceClient:()=>gn,computeResizedRect:()=>$t,defaultPredefinedMessages:()=>Dt,formatLabel:()=>ge,isSerializable:()=>Tt,sidebarSectionToTab:()=>Nn,startPointerDrag:()=>ft,toast:()=>Do,useActivePanelContribution:()=>mn,useColorScheme:()=>un,useFormContainer:()=>Mt,useFormatMessage:()=>et,useMergedSidebarTabs:()=>ho,useMergedToolbarItems:()=>mo,usePanelActions:()=>Pt,usePanelContext:()=>Jn,usePanelContextMenu:()=>Qn,usePanelContribution:()=>fo,usePanelFloatingWindow:()=>er,usePanelFloatingWindowManager:()=>tr,usePanelId:()=>Kt,usePanelSize:()=>Bn,usePanelState:()=>gt,usePredefinedMessages:()=>nt,useRegistry:()=>At,useShowContextMenu:()=>no,useSidebar:()=>Io,useSidebarTab:()=>Lo,useStyleClasses:()=>pt,useToolbar:()=>Jt,useWindowManagerActions:()=>Ft,useWindowManagerState:()=>tt});module.exports=lr(Vr);var Y=en(require("react"),1),kn=require("react-dom");var O=require("react");var zt=require("react"),dr={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:()=>()=>{}},tn=(0,zt.createContext)(dr),vt=tn.Provider,Mt=()=>(0,zt.useContext)(tn),Bn=()=>{let{onResize:e,getDimensions:t}=Mt();return(0,zt.useSyncExternalStore)(o=>e?e(()=>o()):()=>{},()=>t?t():null)};var St=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())}},Vt=new St;var Dt={floatWindow:{id:"dockable-desktop-floatWindow",defaultMessage:"Float Window"},minimizePanel:{id:"dockable-desktop-minimizePanel",defaultMessage:"Minimize Panel"},closeTab:{id:"dockable-desktop-closeTab",defaultMessage:"Close Tab"},restorePanel:{id:"dockable-desktop-restorePanel",defaultMessage:"Restore Panel"},maximizePanel:{id:"dockable-desktop-maximizePanel",defaultMessage:"Maximize Panel"},closePanel:{id:"dockable-desktop-closePanel",defaultMessage:"Close Panel"},dockWindow:{id:"dockable-desktop-dockWindow",defaultMessage:"Dock Window"},minimize:{id:"dockable-desktop-minimize",defaultMessage:"Minimize"},maximize:{id:"dockable-desktop-maximize",defaultMessage:"Maximize"},restoreSize:{id:"dockable-desktop-restoreSize",defaultMessage:"Restore Size"},close:{id:"dockable-desktop-close",defaultMessage:"Close"},closeEmptyGroup:{id:"dockable-desktop-closeEmptyGroup",defaultMessage:"Close empty split group"},unsavedChangesTitle:{id:"dockable-desktop-unsavedChangesTitle",defaultMessage:"Unsaved Changes"},unsavedChangesMessage:{id:"dockable-desktop-unsavedChangesMessage",defaultMessage:'"{title}" has unsaved changes. Do you want to discard your changes and close?'},discardChanges:{id:"dockable-desktop-discardChanges",defaultMessage:"Discard Changes"},cancel:{id:"dockable-desktop-cancel",defaultMessage:"Cancel"},yes:{id:"dockable-desktop-yes",defaultMessage:"Yes"},no:{id:"dockable-desktop-no",defaultMessage:"No"},ok:{id:"dockable-desktop-ok",defaultMessage:"OK"},closePanelTooltip:{id:"dockable-desktop-closePanelTooltip",defaultMessage:"Close panel"},closeTooltip:{id:"dockable-desktop-closeTooltip",defaultMessage:"Close"}};var Gn=require("react");function Tt(e){if(e===null)return!0;if(e===void 0)return!1;let t=typeof e;if(t==="string"||t==="number"||t==="boolean")return!0;if(t==="function"||t==="symbol"||t==="bigint")return!1;if(e instanceof Date)return!0;if((0,Gn.isValidElement)(e))return!1;if(Array.isArray(e))return e.every(Tt);let o=Object.getPrototypeOf(e);return o!==Object.prototype&&o!==null?!1:Object.values(e).every(Tt)}var yt=require("react/jsx-runtime"),Ot=(0,O.createContext)(null),nn=(0,O.createContext)(null),Xn=(0,O.createContext)(null),Vn=(0,O.createContext)(null),Kn=(0,O.createContext)(Dt),qn=(0,O.createContext)({}),pt=()=>(0,O.useContext)(qn),jn=(0,O.createContext)(Vt),At=()=>(0,O.useContext)(jn),xn=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))}},Wt={type:"leaf",id:"group-default",panels:[],activePanelId:null};function Zn(e,t){let o=t.panels[e];if(!o||o.state==="minimized")return!1;if(t.floating.some(d=>d.id===e))return!0;let r=d=>d.type==="leaf"?d.activePanelId===e:d.children.some(r);return t.gridRoot?r(t.gridRoot):!1}function Cn(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 T of s.children){let b=o(T);if(b)return b}return null},r=e.gridRoot?o(e.gridRoot):null;if(r)return r;let d=null;for(let s of e.floating)t(s.id)&&(!d||s.z>d.z)&&(d=s);return d?.id??null}function cr(e,t){let o=[],r=new Set,d=b=>{if(b.type==="leaf"){let c=b.panels.filter(k=>r.has(k)?(o.push(`panel "${k}" was listed in more than one group`),!1):(r.add(k),!0));if(c.length===b.panels.length)return b;if(c.length===0&&!b.keepOnEmpty)return null;let M=b.activePanelId&&c.includes(b.activePanelId)?b.activePanelId:c[0]??null;return{...b,panels:c,activePanelId:M}}let P=b.children.map(d).filter(c=>c!==null);if(P.length===b.children.length&&P.every((c,M)=>c===b.children[M]))return b;if(P.length===0)return null;if(P.length===1)return P[0];let x=b.sizes.slice(0,P.length),w=x.reduce((c,M)=>c+M,0)||1;return{...b,children:P,sizes:x.map(c=>c/w)}},s=d(e)||Wt,T=Object.values(t).filter(b=>b.state==="docked"&&!r.has(b.id));if(T.length>0){let b=P=>{if(P.type==="leaf"){let x=T.map(w=>w.id);return{...P,panels:[...P.panels,...x],activePanelId:P.activePanelId??x[0]}}return{...P,children:[b(P.children[0]),...P.children.slice(1)]}};for(let P of T)o.push(`panel "${P.id}" is docked but was in no group`);s=b(s)}return{gridRoot:s,repairs:o}}function Un(e){if(!e||!e.gridRoot||!Array.isArray(e.floating)||!Array.isArray(e.minimized)||!e.panels)return null;let t=e.floating.map(b=>{if("stickyRight"in b||"stickyBottom"in b){let P=b.stickyRight&&b.stickyBottom?"bottom-right":b.stickyRight?"top-right":b.stickyBottom?"bottom-left":null,{stickyRight:x,stickyBottom:w,...c}=b;return{...c,anchor:P}}return b}),o=cr(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,d={gridRoot:r,floating:t,panels:e.panels},s=typeof e.activePanelId=="string"?e.activePanelId:null,T=null;return s!==null&&(Zn(s,d)?T=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.`)),T===null&&(T=Cn(d)),{gridRoot:r,floating:t,minimized:e.minimized,panels:e.panels,activePanelId:T}}function ur(e){if(e)try{let t=Un(JSON.parse(e));if(t)return t}catch{}return{gridRoot:Wt,floating:[],minimized:[],panels:{},activePanelId:null}}var on=({children:e,client:t,formatMessage:o,predefinedMessages:r,dir:d,modalClass:s,modalBodyClass:T,sidePanelClass:b,sidePanelBodyClass:P,windowClass:x,windowBodyClass:w,zIndexBase:c})=>{let M=(0,O.useRef)(t?.registry??Vt).current,k=t?.config.formatMessage??o,D=t?.config.predefinedMessages??r,F=t?.config.dir??d,g=t?.config.zIndexBase??c??1e3,[R,C]=(0,O.useState)(()=>({...ur(t?.initialState??null),draggedPanelId:null,dir:F||"ltr",isRtl:F==="rtl",splitRatio:Math.min(.9,Math.max(.1,t?.config.defaultSplitRatio??.5)),edgeSplitRatio:Math.min(.9,Math.max(.1,t?.config.defaultEdgeSplitRatio??.2))})),W=(0,O.useRef)(R);W.current=R;let v=(0,O.useRef)(new Set);(0,O.useEffect)(()=>{v.current.forEach(i=>i())},[R]);let E=(0,O.useCallback)(()=>W.current,[]),_=(0,O.useCallback)(i=>(v.current.add(i),()=>v.current.delete(i)),[]),z=(0,O.useRef)({}),u=(0,O.useRef)({}),N=(0,O.useMemo)(()=>({...Dt,...D}),[D]),A=(0,O.useRef)(new xn),K=(0,O.useRef)(g);(0,O.useEffect)(()=>(document.documentElement.style.setProperty("--rdd-z-base",String(g)),()=>{document.documentElement.style.removeProperty("--rdd-z-base")}),[g]);let U=(0,O.useCallback)((i,f)=>A.current.subscribe(i,f),[]),ee=(0,O.useCallback)((i,f)=>{A.current.publish(i,f)},[]),ne=(0,O.useCallback)((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=S=>f.some($=>{let Z=typeof $.x=="string"?parseFloat($.x):$.x,B=typeof $.y=="string"?parseFloat($.y):$.y;return!$.maximized&&Math.abs(Z-S.x)<20&&Math.abs(B-S.y)<20}),I=0;for(;m({x:p,y:n})&&I<10;)p+=30,n+=30,I++;let L=Math.max(100,window.innerWidth||1024),y=Math.max(100,window.innerHeight||768);return(p+l>L||n+a>y)&&(p=100+I%5*30,n=100+I%5*30),p=Math.max(0,Math.min(p,L-100)),n=Math.max(0,Math.min(n,y-40)),{x:p,y:n,width:l,height:a}},[]),ve=(0,O.useCallback)(i=>{C(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||(K.current+=1),{...f,floating:f.floating.map(a=>a.id===i?{...a,z:l?n.z:K.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}})},[]),ie=(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=>ie(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)}}},V=(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=>V(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)),X=(i,f)=>i.type==="leaf"?i.id===f:i.children.some(p=>X(p,f)),G=i=>{if(i.type==="leaf")return i.id;for(let f of i.children){let p=G(f);if(p)return p}return null},le=(0,O.useCallback)((i,f,p)=>{let n=i;if(p?.dedupeKey!==void 0){let y=Object.values(W.current.panels).find(S=>S.component===f&&S.dedupeKey===p.dedupeKey);y&&(n=y.id)}let l=!(n in W.current.panels),a=n!==i,m=p?.focus!==!1,L=p?.props!==void 0?Tt(p.props):!0;C(y=>{let S=y.panels[n],$=M.get(f),Z=p?.title||p?.title||$?.defaultOptions?.title||n,B=p?.initialTarget||$?.defaultOptions?.initialTarget||"docked",Q=$?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350},ae=m?n:y.activePanelId;if(S)if(S.state==="minimized"){let fe=y.minimized.filter(Se=>Se.id!==n);if(B==="floating"||!y.gridRoot){K.current+=1;let Se=ne(Q,y.floating);return{...y,minimized:fe,floating:[...y.floating,{...Se,id:n,z:K.current}],panels:{...y.panels,[n]:{...S,state:"floating"}},activePanelId:ae}}else{let Se=G(y.gridRoot)||"group-default";return{...y,minimized:fe,gridRoot:V(y.gridRoot,Se,n),panels:{...y.panels,[n]:{...S,state:"docked"}},activePanelId:ae}}}else{if(S.state==="floating")return m&&ve(n),y;{let fe=Se=>Se.type==="leaf"?Se.panels.includes(n)?{...Se,activePanelId:n}:Se:{...Se,children:Se.children.map(fe)};return{...y,gridRoot:fe(y.gridRoot),activePanelId:ae}}}let Re={id:n,title:Z,component:f,state:B==="tabbed"?"docked":B,props:p?.props,serializable:L,dedupeKey:p?.dedupeKey},Ye={...y.panels,[n]:Re};if(B==="floating"){K.current+=1;let fe=ne(Q,y.floating),Se=p?.anchor??$?.defaultOptions?.defaultAnchor??null;return{...y,floating:[...y.floating,{...fe,id:n,z:K.current,anchor:Se}],panels:Ye,activePanelId:ae}}else{let fe=G(y.gridRoot)||"group-default";return{...y,gridRoot:V(y.gridRoot,fe,n),panels:Ye,activePanelId:ae}}}),l&&A.current.publish("panel:opened",{id:n,component:f}),(l||a)&&A.current.publish("layout:changed",{})},[ne,ve]),be=(0,O.useCallback)(i=>{let f=i in W.current.panels;C(p=>{let n=p.panels[i];if(!n||M.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=ie(p.gridRoot,i)||{type:"leaf",id:"group-default",panels:[],activePanelId:null},I=p.floating.filter(y=>y.id!==i),L=p.activePanelId===i?Cn({gridRoot:m,floating:I,panels:a}):p.activePanelId;return{...p,gridRoot:m,floating:I,minimized:p.minimized.filter(y=>y.id!==i),panels:a,activePanelId:L}}),f&&(A.current.publish("panel:closed",{id:i}),A.current.publish("layout:changed",{}))},[]),Oe=(0,O.useCallback)((i,f)=>{z.current[i]=f},[]),q=(0,O.useCallback)(i=>{delete z.current[i]},[]),Be=(0,O.useCallback)((i,f)=>{u.current[i]=f},[]),Ze=(0,O.useCallback)(i=>{delete u.current[i]},[]),Ue=(0,O.useCallback)((i,f,p)=>{C(n=>{let l=n.panels[i];return l?{...n,panels:{...n.panels,[i]:{...l,dirty:f,dirtyOptions:p}}}:n})},[]),Ve=(0,O.useCallback)((i,f)=>{C(p=>{let n=p.panels[i];return n?{...p,panels:{...p.panels,[i]:{...n,title:f}}}:p})},[]),at=(0,O.useCallback)(async(i,f)=>{if(f?.force){be(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;be(i)},[be]),lt=(0,O.useCallback)(i=>{let f=W.current.panels[i]?.state!=="minimized"&&i in W.current.panels;C(p=>{let n=p.panels[i];if(!n||n.state==="minimized"||M.get(n.component)?.defaultOptions?.canMinimize===!1)return p;let a,m;if(n.state==="floating"){let $=p.floating.find(Z=>Z.id===i);$&&(a={x:Number($.x),y:Number($.y),width:Number($.width),height:Number($.height),anchor:$.anchor??null})}else if(n.state==="docked"){let $=Z=>{if(Z.type==="leaf")return Z.panels.includes(i)?Z.id:null;for(let B of Z.children){let Q=$(B);if(Q)return Q}return null};m=$(p.gridRoot)??void 0}let I=ie(p.gridRoot,i)||{type:"leaf",id:"group-default",panels:[],activePanelId:null},L=p.floating.filter($=>$.id!==i),y={...p.panels,[i]:{...n,state:"minimized",previousState:n.state,lastFloatingRect:a,lastLeafId:m}},S=p.activePanelId===i?Cn({gridRoot:I,floating:L,panels:y}):p.activePanelId;return{...p,gridRoot:I,floating:L,minimized:[...p.minimized,{id:i,title:n.title,component:n.component}],panels:y,activePanelId:S}}),f&&(A.current.publish("panel:minimized",{id:i}),A.current.publish("layout:changed",{}))},[]),dt=(0,O.useCallback)((i,f)=>{let p=W.current.panels[i]?.state==="minimized",n=f?.focus!==!1;C(l=>{let a=l.panels[i];if(!a||a.state!=="minimized")return l;let m=l.minimized.filter(y=>y.id!==i),I=a.previousState||"docked",L=n?i:l.activePanelId;if(I==="floating"){K.current+=1;let y=M.get(a.component),S=a.lastFloatingRect||y?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350},$=ne(S,l.floating);return{...l,minimized:m,floating:[...l.floating,{...$,id:i,z:K.current,anchor:a.lastFloatingRect?.anchor??null}],panels:{...l.panels,[i]:{...a,state:"floating"}},activePanelId:L}}else{let y=(B,Q)=>B.type==="leaf"?B.id===Q:B.children.some(ae=>y(ae,Q)),S=a.lastLeafId&&y(l.gridRoot,a.lastLeafId),$=M.get(a.component),Z=$?.defaultOptions?.canDrag!==!1;if(S)return{...l,minimized:m,gridRoot:V(l.gridRoot,a.lastLeafId,i),panels:{...l.panels,[i]:{...a,state:"docked"}},activePanelId:L};if(Z){K.current+=1;let B=a.lastFloatingRect||$?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350},Q=ne(B,l.floating);return{...l,minimized:m,floating:[...l.floating,{...Q,id:i,z:K.current,anchor:a.lastFloatingRect?.anchor??null}],panels:{...l.panels,[i]:{...a,state:"floating"}},activePanelId:L}}else{let B=G(l.gridRoot)||"group-default";return{...l,minimized:m,gridRoot:V(l.gridRoot,B,i),panels:{...l.panels,[i]:{...a,state:"docked"}},activePanelId:L}}}}),p&&(A.current.publish("panel:restored",{id:i}),A.current.publish("layout:changed",{}))},[ne]),it=(0,O.useCallback)((i,f,p)=>{C(n=>{let l=n.panels[i];if(!l||M.get(l.component)?.defaultOptions?.canDrag===!1)return n;let m=M.get(l.component),I=f||m?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350},L=ie(n.gridRoot,i);K.current+=1;let y=ne(I,n.floating);return{...n,gridRoot:L||{type:"leaf",id:"group-default",panels:[],activePanelId:null},floating:[...n.floating,{...y,id:i,z:K.current,anchor:p??null}],panels:{...n.panels,[i]:{...l,state:"floating"}}}})},[ne]),st=(0,O.useCallback)((i,f)=>{C(p=>{let n=p.panels[i];if(!n)return p;let l=p.floating.filter(L=>L.id!==i),a=ie(p.gridRoot,i)||Wt,I=(f&&X(a,f)?f:void 0)||G(a)||Wt.id;return{...p,gridRoot:V(a,I,i),floating:l,panels:{...p.panels,[i]:{...n,state:"docked"}}}})},[]),Te=(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",I=n==="left"||n==="top"?[a,i]:[i,a],L=n==="left"||n==="top"?[l,1-l]:[1-l,l];return{type:"branch",orientation:m,sizes:L,children:I}}return i}else return{...i,children:i.children.map(a=>Te(a,f,p,n,l))}},se=(0,O.useCallback)(i=>{C(f=>({...f,draggedPanelId:i}))},[]),pe=(0,O.useCallback)((i,f,p)=>{C(n=>{let l=n.panels[i];if(!l||J(n.gridRoot,f,i))return n;if(!X(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(L=>L.id!==i),m=ie(n.gridRoot,i)||Wt,I;return p==="center"?I=V(m,f,i):I=Te(m,f,i,p,n.splitRatio),{...n,gridRoot:I,floating:a,panels:{...n.panels,[i]:{...l,state:"docked"}},draggedPanelId:null}})},[]),Xe=(0,O.useCallback)((i,f)=>{C(p=>{let n=p.panels[i];if(!n)return p;let l=p.floating.filter($=>$.id!==i),a=ie(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},I=f==="left"||f==="right"?"horizontal":"vertical",L=f==="left"||f==="top"?[m,a]:[a,m],y=p.edgeSplitRatio,S={type:"branch",orientation:I,sizes:f==="left"||f==="top"?[y,1-y]:[1-y,y],children:L};return{...p,gridRoot:S,floating:l,panels:{...p.panels,[i]:{...n,state:"docked"}},draggedPanelId:null}})},[]),Ge=(0,O.useCallback)((i,f,p)=>{C(n=>{let l=n.panels[i];if(!l||J(n.gridRoot,f,i))return n;if(!X(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=ie(n.gridRoot,i),m=y=>{if(y.type==="leaf"){if(y.id===f){let S=y.panels.filter(B=>B!==i),$=Math.max(0,Math.min(p,S.length)),Z=[...S];return Z.splice($,0,i),{...y,panels:Z,activePanelId:i}}return y}else return{...y,children:y.children.map(m)}},I=m(a||Wt),L=n.floating.filter(y=>y.id!==i);return{...n,gridRoot:I,floating:L,panels:{...n.panels,[i]:{...l,state:"docked"}},draggedPanelId:null}})},[]),j=(0,O.useCallback)(i=>{C(f=>{let p=l=>{if(l.type==="leaf")return l.id===i&&l.canClose!==!1?null:l;{let a=l.children.map(L=>p(L)).filter(L=>L!==null);if(a.length===0)return null;if(a.length===1)return a[0];let m=l.sizes.slice(0,a.length),I=m.reduce((L,y)=>L+y,0);return{...l,children:a,sizes:m.map(L=>L/I)}}},n=p(f.gridRoot);return{...f,gridRoot:n||{type:"leaf",id:"group-default",panels:[],activePanelId:null}}})},[]),te=(0,O.useCallback)(i=>{C(f=>({...f,floating:f.floating.map(p=>p.id===i?{...p,maximized:!p.maximized}:p)}))},[]),ce=(0,O.useCallback)((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((I,L)=>L===a?p(I,l+1):I);return{...n,children:m}};C(n=>({...n,gridRoot:p(n.gridRoot,0)}))},[]),ye=(0,O.useCallback)((i,f)=>{C(p=>({...p,floating:p.floating.map(n=>n.id===i?{...n,...f}:n)}))},[]),ke=(0,O.useCallback)(()=>{let i=W.current.panels,f=[],p={};for(let[y,S]of Object.entries(i)){let $=u.current[y],Z=$?.(),B=$!==void 0&&Z!==void 0,Q=B?Z:S.props,ae=B?Tt(Z):S.serializable;ae?p[y]=B?{...S,props:Q,serializable:ae}:S:f.push(y)}let n=W.current.gridRoot,l=W.current.floating,a=W.current.minimized;for(let y of f)n=ie(n,y)||{type:"leaf",id:"group-default",panels:[],activePanelId:null},l=l.filter(S=>S.id!==y),a=a.filter(S=>S.id!==y);f.length>0&&A.current.publish("layout:panels-excluded",{panels:f.map(y=>({id:y,component:i[y].component}))});let m=W.current.activePanelId,I=m!==null&&Zn(m,{gridRoot:n,floating:l,panels:p})?m:null,L={version:2,...I!==null?{activePanelId:I}:{},gridRoot:n,floating:l,minimized:a,panels:p};return JSON.stringify(L)},[]),Ee=(0,O.useCallback)(i=>{try{let f=Un(JSON.parse(i));return f?(C(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}},[]),Ae=(0,O.useCallback)(i=>{C(f=>f.activePanelId===i?f:{...f,activePanelId:i})},[]),Ie=(0,O.useCallback)(i=>{C(f=>f.dir===i?f:{...f,dir:i,isRtl:i==="rtl"})},[]),Le=(0,O.useCallback)(i=>i in W.current.panels,[]),Me=(0,O.useCallback)(()=>Object.keys(W.current.panels),[]),ut=(0,O.useCallback)((i,f)=>Object.values(W.current.panels).find(n=>n.component===i&&n.dedupeKey===f)?.id??null,[]);(0,O.useEffect)(()=>{F&&C(i=>i.dir===F?i:{...i,dir:F,isRtl:F==="rtl"})},[F]);let Ne=(0,O.useRef)(new Map),ze=(0,O.useRef)(null),Fe=(0,O.useCallback)(i=>(ze.current=i,()=>{ze.current=null}),[]),De=(0,O.useCallback)(i=>{ze.current?.(i)},[]),Je=(0,O.useCallback)((i,f)=>(Ne.current.set(i,f),()=>{Ne.current.delete(i)}),[]),We=(0,O.useCallback)(i=>Ne.current.get(i)?.()??[],[]),Rt=(0,O.useMemo)(()=>({openPanel:le,closePanel:be,minimizePanel:lt,restorePanel:dt,floatPanel:it,dockPanel:st,maximizePanel:te,updateSplitSizes:ce,updateFloatingPosition:ye,focusPanel:ve,isOpen:Le,getOpenPanelIds:Me,findPanelId:ut,saveLayout:ke,loadLayout:Ee,publish:ee,subscribe:U,setDraggedPanelId:se,dockPanelToGroup:pe,movePanelOrder:Ge,closeLeafGroup:j,registerCloseGuard:Oe,unregisterCloseGuard:q,registerStateProvider:Be,unregisterStateProvider:Ze,setPanelDirty:Ue,updatePanelTitle:Ve,requestClosePanel:at,dockPanelToWorkspaceEdge:Xe,setActivePanel:Ae,setDirection:Ie,registerPanelContextMenu:Je,getPanelContextMenuItems:We,showContextMenu:De,registerContextMenuFn:Fe}),[le,be,lt,dt,it,st,te,ce,ye,ve,Le,Me,ut,ke,Ee,ee,U,se,pe,Ge,j,Oe,q,Be,Ze,Ue,Ve,at,Xe,Ae,Ie,Je,We,De,Fe]),Xt=i=>{let f=i.defaultMessage||i.id;return i.values&&Object.entries(i.values).forEach(([p,n])=>{f=f.replace(`{${p}}`,String(n))}),f},Qe=(0,O.useMemo)(()=>({modalClass:s,modalBodyClass:T,sidePanelClass:b,sidePanelBodyClass:P,windowClass:x,windowBodyClass:w}),[s,T,b,P,x,w]);(0,O.useEffect)(()=>{if(process.env.NODE_ENV==="development")try{getComputedStyle(document.documentElement).getPropertyValue("--rdd-styles-loaded").trim()!=="1"&&console.error(`[react-dockable-desktop] styles.css is not imported.
|
|
2
2
|
Add this to your entry file (main.tsx / index.tsx):
|
|
3
3
|
import 'react-dockable-desktop/styles.css'
|
|
4
|
-
Without it the workspace renders as a black screen with no console errors.`)}catch{}},[]),(0,F.useEffect)(()=>{if(t)return t._connect(qe),()=>{t._disconnect()}},[t,qe]);let Yt=(0,F.useMemo)(()=>({getSnapshot:M,subscribeToState:B}),[M,B]);return(0,vt.jsx)(Kn.Provider,{value:Gt,children:(0,vt.jsx)(qn.Provider,{value:k,children:(0,vt.jsx)(Xn.Provider,{value:Yt,children:(0,vt.jsx)(Dt.Provider,{value:w,children:(0,vt.jsx)(tn.Provider,{value:qe,children:(0,vt.jsx)(Yn.Provider,{value:T||He,children:(0,vt.jsx)(Vn.Provider,{value:E,children:e})})})})})})})},Gn=e=>()=>{};function tt(e){let t=(0,F.useContext)(Dt),n=(0,F.useContext)(Xn),o=(0,F.useRef)(e);o.current=e;let a=(0,F.useSyncExternalStore)(e?n?.subscribeToState??Gn:Gn,()=>{let s=n?.getSnapshot()??t;return o.current?o.current(s):s},()=>{let s=n?.getSnapshot()??t;return o.current?o.current(s):s});if(!t)throw new Error("useWindowManagerState must be used within WindowManagerProvider");return e?a:t}var At=()=>{let e=(0,F.useContext)(tn);if(!e)throw new Error("useWindowManagerActions must be used within WindowManagerProvider");return e},Cn=()=>{let e=(0,F.useContext)(tn);if(!e)throw new Error("useWindowManagerActionsInternal must be used within WindowManagerProvider");return e},et=()=>(0,F.useContext)(Yn)||(t=>{let n=t.defaultMessage||t.id;return t.values&&Object.entries(t.values).forEach(([o,a])=>{n=n.replace(`{${o}}`,String(a))}),n}),me=(e,t)=>e?typeof e=="string"?e:t(e):"",Un=()=>{let{publish:e,subscribe:t}=At();return{publish:e,subscribe:t}},nt=()=>(0,F.useContext)(Vn),Vt=()=>Rt().instanceId;function Jn(e){let t=(0,F.useContext)(tn),n=Vt(),o=(0,F.useRef)(e);o.current=e,(0,F.useEffect)(()=>{if(!(!t?.registerPanelContextMenu||!n))return t.registerPanelContextMenu(n,()=>o.current)},[n,t?.registerPanelContextMenu])}var Ce=Qt(require("react"),1),wn=require("react-dom"),pe=require("react/jsx-runtime");function ur(e){return e?"touches"in e&&e.touches.length>0?{x:e.touches[0].clientX,y:e.touches[0].clientY}:{x:e.clientX,y:e.clientY}:{x:0,y:0}}function Ot(e,t){return typeof e=="string"?e:t?t(e):e.defaultMessage??e.id}function Rn(e){return"separator"in e}function on(e){return!Rn(e)&&"items"in e}var eo=(0,Ce.forwardRef)(({items:e,x:t,y:n,theme:o,fmt:a,onClose:s,onMouseEnter:I,onMouseLeave:S},C)=>((0,Ce.useLayoutEffect)(()=>{let P=C?.current;if(!P)return;let R=P.getBoundingClientRect(),c=8;R.right>window.innerWidth-c&&(P.style.left=`${Math.max(c,window.innerWidth-R.width-c)}px`,P.style.right="auto"),R.bottom>window.innerHeight-c&&(P.style.top=`${Math.max(c,window.innerHeight-R.height-c)}px`),R.left<c&&(P.style.left=`${c}px`,P.style.right="auto"),R.top<c&&(P.style.top=`${c}px`)}),(0,wn.createPortal)((0,pe.jsx)("div",{ref:C,className:`rdd-context-menu rdd-context-menu--${o} rdd-context-menu--submenu`,style:{position:"fixed",left:t,top:n},role:"menu",onMouseEnter:I,onMouseLeave:S,children:e.map((P,R)=>{if(Rn(P))return(0,pe.jsx)("hr",{className:"rdd-context-menu__separator",role:"separator"},R);let c=P,k=c.checkbox&&c.checkbox.active!==!1,T=k&&c.checkbox.value,A=c.disabled===!0||(k?c.checkbox.enabled===!1:!1);return(0,pe.jsxs)("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?(0,pe.jsx)("span",{className:"rdd-context-menu__icon",children:c.icon}):(0,pe.jsx)("span",{className:"rdd-context-menu__icon","aria-hidden":"true"}),(0,pe.jsx)("span",{className:"rdd-context-menu__label",children:Ot(c.label,a)}),k&&(0,pe.jsx)("span",{className:`rdd-context-menu__checkbox${T?" rdd-context-menu__checkbox--checked":""}`,"aria-hidden":"true",children:(0,pe.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,pe.jsx)("rect",{x:"0.75",y:"0.75",width:"10.5",height:"10.5",rx:"2",fill:"none",stroke:"currentColor",strokeWidth:"1.5"}),T&&(0,pe.jsx)("path",{d:"M2.5 6 L4.5 8.5 L9.5 3.5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})]})})]},R)})}),document.body)));eo.displayName="ContextMenuSubMenuPanel";var Qn={visible:!1,x:0,y:0,items:[]},rn=(0,Ce.forwardRef)(({theme:e="dark",formatMessageProvider:t,onShow:n,onHide:o,onOpenChange:a,className:s,style:I},S)=>{let[C,P]=(0,Ce.useState)(Qn),[R,c]=(0,Ce.useState)(null),k=(0,Ce.useRef)(null),T=(0,Ce.useRef)(null),A=(0,Ce.useRef)(new Map),H=(0,Ce.useRef)({open:null,close:null}),u=Ce.default.useCallback(()=>{P(Qn),c(null),H.current.open&&clearTimeout(H.current.open),H.current.close&&clearTimeout(H.current.close),H.current.open=null,H.current.close=null,o?.(),a?.(!1)},[o,a]);if((0,Ce.useImperativeHandle)(S,()=>({show({event:l,x:E,y:_,items:q}){let Q=l?ur(l):{x:E??0,y:_??0};A.current.clear(),P({visible:!0,x:Q.x,y:Q.y,items:q}),c(null),n?.(),a?.(!0)}}),[n,a]),(0,Ce.useEffect)(()=>{if(!C.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)}},[C.visible,u]),(0,Ce.useEffect)(()=>{if(!C.visible)return;let l=E=>{E.key==="Escape"&&u()};return document.addEventListener("keydown",l),()=>document.removeEventListener("keydown",l)},[C.visible,u]),(0,Ce.useLayoutEffect)(()=>{if(!C.visible||!k.current)return;let l=k.current,E=l.getBoundingClientRect(),_=8;E.right>window.innerWidth-_&&(l.style.left=`${Math.max(_,window.innerWidth-E.width-_)}px`),E.bottom>window.innerHeight-_&&(l.style.top=`${Math.max(_,window.innerHeight-E.height-_)}px`),E.left<_&&(l.style.left=`${_}px`),E.top<_&&(l.style.top=`${_}px`)},[C.visible]),!C.visible)return null;let w=t,x=0,O=0;if(R!==null){let l=A.current.get(R);if(l){let E=l.getBoundingClientRect();x=document.documentElement.dir==="rtl"?window.innerWidth-E.left+2:E.right+2,O=E.top}}function h(){H.current.open&&(clearTimeout(H.current.open),H.current.open=null)}function M(){H.current.close&&(clearTimeout(H.current.close),H.current.close=null)}function B(l,E){M(),R!==null&&R!==l&&(h(),c(null)),on(E)&&E.items?.length?(h(),H.current.open=setTimeout(()=>{c(l)},150)):on(E)||(h(),R!==null&&(H.current.close=setTimeout(()=>c(null),200)))}function D(l){h(),on(l)&&l.items?.length&&(H.current.close=setTimeout(()=>c(null),200))}return(0,wn.createPortal)((0,pe.jsxs)(pe.Fragment,{children:[(0,pe.jsx)("div",{ref:k,className:`rdd-context-menu rdd-context-menu--${e}${s?` ${s}`:""}`,style:{position:"fixed",left:C.x,top:C.y,...I},role:"menu","aria-orientation":"vertical",children:C.items.map((l,E)=>{if(Rn(l))return(0,pe.jsx)("hr",{className:"rdd-context-menu__separator",role:"separator"},E);if(on(l))return(0,pe.jsxs)("button",{ref:ne=>{A.current.set(E,ne)},type:"button",className:`rdd-context-menu__item rdd-context-menu__item--has-submenu${R===E?" rdd-context-menu__item--submenu-open":""}`,title:l.title?Ot(l.title,w):void 0,onMouseEnter:()=>B(E,l),onMouseLeave:()=>D(l),role:"menuitem","aria-haspopup":"true","aria-expanded":R===E,children:[(0,pe.jsx)("span",{className:"rdd-context-menu__icon","aria-hidden":"true"}),(0,pe.jsx)("span",{className:"rdd-context-menu__label",children:Ot(l.label,w)}),(0,pe.jsx)("span",{className:"rdd-context-menu__chevron","aria-hidden":"true",children:"\u203A"})]},E);let _=l,q=_.checkbox&&_.checkbox.active!==!1,Q=q&&_.checkbox.value,ee=_.disabled===!0||(q?_.checkbox.enabled===!1:!1);return(0,pe.jsxs)("button",{ref:ne=>{A.current.set(E,ne)},type:"button",className:`rdd-context-menu__item${ee?" rdd-context-menu__item--disabled":""}`,title:_.title?Ot(_.title,w):void 0,disabled:ee,"data-cy-action":_.cyAction,onClick:()=>{ee||(_.action?.(),u())},onMouseEnter:()=>B(E,l),onMouseLeave:()=>D(l),role:"menuitem","aria-checked":q?Q:void 0,children:[_.icon?(0,pe.jsx)("span",{className:"rdd-context-menu__icon",children:_.icon}):(0,pe.jsx)("span",{className:"rdd-context-menu__icon","aria-hidden":"true"}),(0,pe.jsx)("span",{className:"rdd-context-menu__label",children:Ot(_.label,w)}),q&&(0,pe.jsx)("span",{className:`rdd-context-menu__checkbox${Q?" rdd-context-menu__checkbox--checked":""}`,"aria-hidden":"true",children:(0,pe.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,pe.jsx)("rect",{x:"0.75",y:"0.75",width:"10.5",height:"10.5",rx:"2",fill:Q?"currentColor":"none",stroke:"currentColor",strokeWidth:"1.5"}),Q&&(0,pe.jsx)("path",{d:"M2.5 6 L4.5 8.5 L9.5 3.5",stroke:"white",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})]})})]},E)})}),R!==null&&(()=>{let l=C.items[R];return(0,pe.jsx)(eo,{ref:T,items:l.items??[],x,y:O,theme:e,fmt:w,onClose:u,onMouseEnter:()=>M(),onMouseLeave:()=>{H.current.close=setTimeout(()=>c(null),200)}})})()]}),document.body)});rn.displayName="ContextMenu";var Tt={Component:rn},Ft=Ce.default.createContext(null),sn=({adapter:e=Tt,children:t,...n})=>{let o=(0,Ce.useRef)(null),[a,s]=Ce.default.useState(!1),I=Ce.default.useCallback(S=>{o.current?.show(S)},[]);return(0,pe.jsxs)(Ft.Provider,{value:{show:I,isOpen:a},children:[t,(0,pe.jsx)(e.Component,{ref:o,...n,onShow:()=>{s(!0),n.onShow?.()},onHide:()=>{s(!1),n.onHide?.()}})]})};function to(){let e=Ce.default.useContext(Ft);if(!e)throw new Error("useShowContextMenu must be used within a ContextMenuProvider");return e.show}var Re=require("react"),Sn=require("react/jsx-runtime"),pr=0,Mn=()=>`panel-${++pr}-${Date.now()}`,an=new Map,no={leftPanel:null,rightPanel:null,modals:[]},oo=(0,Re.createContext)(null),ro=(0,Re.createContext)(null),ln=({children:e})=>{let[t,n]=(0,Re.useState)(no),o=(0,Re.useRef)(t);o.current=t;let a=(0,Re.useCallback)((u,w)=>{an.set(u,w)},[]),s=(0,Re.useCallback)(u=>{an.delete(u)},[]),I=(0,Re.useCallback)(async(u,w,x={})=>{let O=o.current.leftPanel;if(O){let B=an.get(O.id);if(B&&!await B())return null}let h=Mn(),M={id:h,Component:u,props:w,containerType:"left-panel",options:x};return n(B=>({...B,leftPanel:M})),h},[]),S=(0,Re.useCallback)(async(u,w,x={})=>{let O=o.current.rightPanel;if(O){let B=an.get(O.id);if(B&&!await B())return null}let h=Mn(),M={id:h,Component:u,props:w,containerType:"right-panel",options:x};return n(B=>({...B,rightPanel:M})),h},[]),C=(0,Re.useCallback)((u,w,x={})=>{let O=Mn(),h=w.title,M={...x,title:x.title||h||"Confirmation"},B={id:O,Component:u,props:w,containerType:"modal",options:M};return n(D=>({...D,modals:[...D.modals,B]})),O},[]),P=(0,Re.useCallback)(u=>{n(w=>({leftPanel:w.leftPanel?.id===u?null:w.leftPanel,rightPanel:w.rightPanel?.id===u?null:w.rightPanel,modals:w.modals.filter(x=>x.id!==u)}))},[]),R=(0,Re.useCallback)(()=>{n(no)},[]),c=(0,Re.useCallback)(()=>{n(u=>({...u,modals:[]}))},[]),k=(0,Re.useCallback)(u=>t.leftPanel?.id===u?t.leftPanel:t.rightPanel?.id===u?t.rightPanel:t.modals.find(w=>w.id===u),[t]),T=(0,Re.useCallback)((u,w)=>{n(x=>({leftPanel:x.leftPanel?.id===u?{...x.leftPanel,...w}:x.leftPanel,rightPanel:x.rightPanel?.id===u?{...x.rightPanel,...w}:x.rightPanel,modals:x.modals.map(O=>O.id===u?{...O,...w}:O)}))},[]),A=(0,Re.useCallback)((u,w,x)=>{T(u,{dirty:w,dirtyOptions:x})},[T]),H=(0,Re.useMemo)(()=>({openLeftPanel:I,openRightPanel:S,openModal:C,close:P,closeAll:R,closeAllModals:c,getInstance:k,updateInstance:T,setDirty:A,registerCloseHandler:a,unregisterCloseHandler:s}),[I,S,C,P,R,c,k,T,A,a,s]);return(0,Sn.jsx)(oo.Provider,{value:t,children:(0,Sn.jsx)(ro.Provider,{value:H,children:e})})},gt=()=>{let e=(0,Re.useContext)(oo);if(!e)throw new Error("usePanelState must be used within PanelProvider");return e},yt=()=>{let e=(0,Re.useContext)(ro);if(!e)throw new Error("usePanelActions must be used within PanelProvider");return e};var Kt=require("react");var rt=require("react/jsx-runtime"),gr=({title:e,message:t,alert:n,alertType:o="info",useYesNoTitles:a=!1,onOK:s,onCancel:I})=>{let{requestClose:S,setIcon:C,setTitle:P}=Rt(),R=et(),c=nt(),k=(0,Kt.useRef)(null);(0,Kt.useEffect)(()=>{if(e){let x=typeof e=="string"?e:R(e);P(x)}C&&C((0,rt.jsx)("span",{children:"\u2753"}))},[e,P,C,R]),(0,Kt.useEffect)(()=>{k.current?.focus({preventScroll:!0})},[]);let T=typeof t=="string"?t:R(t),A=R(a?c.no:c.cancel),H=R(a?c.yes:c.ok),u=x=>{x.preventDefault(),s?.(),S()},w=()=>{I?.(),S()};return(0,rt.jsxs)("form",{onSubmit:u,className:"rdd-confirmation-form-body",children:[n&&(0,rt.jsxs)("div",{className:`rdd-confirmation-alert rdd-confirmation-alert-${o}`,children:[(0,rt.jsx)("span",{children:"\u2139\uFE0F"}),(0,rt.jsx)("span",{children:n})]}),(0,rt.jsx)("div",{style:{fontSize:"0.9rem",color:"inherit",lineHeight:1.5},children:T}),(0,rt.jsx)("hr",{style:{marginTop:"0.5rem",marginBottom:"0.5rem",opacity:.1}}),(0,rt.jsxs)("div",{className:"rdd-confirmation-actions",children:[(0,rt.jsx)("button",{type:"button",className:"rdd-btn rdd-btn-sm rdd-btn-outline",onClick:w,children:A}),(0,rt.jsx)("button",{type:"submit",className:"rdd-btn rdd-btn-sm rdd-btn-primary",ref:k,children:H})]})]})},Pt=gr;function qt(e){return e==="top-left"?"top-right":e==="top-right"?"top-left":e==="bottom-left"?"bottom-right":"bottom-left"}function ft(e){let{element:t,pointerId:n,startClientX:o,startClientY:a,captureStart:s,onMove:I,onEnd:S,activeClasses:C}=e;t.setPointerCapture(n),C?.forEach(({el:k,classes:T})=>k.classList.add(...T));let P=s(),R=k=>{I(k.clientX-o,k.clientY-a,P)},c=()=>{C?.forEach(({el:k,classes:T})=>k.classList.remove(...T)),t.removeEventListener("pointermove",R),t.removeEventListener("pointerup",c),t.removeEventListener("pointercancel",c),S?.(P)};t.addEventListener("pointermove",R),t.addEventListener("pointerup",c),t.addEventListener("pointercancel",c)}function _t(e,t,n,o,a){let{minW:s,minH:I,maxW:S,maxH:C,minX:P,minY:R}=a,{x:c,y:k,w:T,h:A}=o;if(e.includes("e")&&(T=Math.max(s,Math.min(o.w+t,S??1/0))),e.includes("w")){let H=o.w-s,u=P!=null?-(o.x-P):-1/0,w=Math.max(u,Math.min(t,H));T=o.w-w,c=o.x+w}if(e.includes("s")&&(A=Math.max(I,Math.min(o.h+n,C??1/0))),e.includes("n")){let H=o.h-I,u=R!=null?-(o.y-R):-1/0,w=Math.max(u,Math.min(n,H));A=o.h-w,k=o.y+w}return{x:c,y:k,w:T,h:A}}var dn=require("react");function cn(){let[e,t]=(0,dn.useState)(()=>document.documentElement.getAttribute("data-color-scheme")==="light"?"light":"dark");return(0,dn.useEffect)(()=>{let n=()=>{t(document.documentElement.getAttribute("data-color-scheme")==="light"?"light":"dark")};n();let o=new MutationObserver(n);return o.observe(document.documentElement,{attributes:!0,attributeFilter:["data-color-scheme"]}),()=>o.disconnect()},[]),e}var m=require("react/jsx-runtime"),io=(e,t)=>{if(!e)return null;if(e.type==="leaf")return e.id===t?e:null;for(let n of e.children){let o=io(n,t);if(o)return o}return null},jt=new Map,un="preserved-dom-container",kn=(0,m.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{display:"block"},children:[(0,m.jsx)("rect",{x:"3",y:"3",width:"7",height:"9",rx:"1"}),(0,m.jsx)("rect",{x:"14",y:"3",width:"7",height:"5",rx:"1"}),(0,m.jsx)("rect",{x:"14",y:"12",width:"7",height:"9",rx:"1"}),(0,m.jsx)("rect",{x:"3",y:"16",width:"7",height:"5",rx:"1"})]}),Ht={float:(0,m.jsx)("span",{className:"rdd-menu-icon",children:(0,m.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{display:"block"},children:[(0,m.jsx)("rect",{x:"2",y:"8",width:"14",height:"14",rx:"1"}),(0,m.jsx)("rect",{x:"8",y:"2",width:"14",height:"14",rx:"1"})]})}),minimize:(0,m.jsx)("span",{className:"rdd-menu-icon",children:(0,m.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",style:{display:"block"},children:(0,m.jsx)("line",{x1:"4",y1:"18",x2:"20",y2:"18"})})}),restore:(0,m.jsx)("span",{className:"rdd-menu-icon",children:(0,m.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{display:"block"},children:(0,m.jsx)("rect",{x:"4",y:"4",width:"16",height:"16",rx:"1"})})}),maximize:(0,m.jsx)("span",{className:"rdd-menu-icon",children:(0,m.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{display:"block"},children:(0,m.jsx)("rect",{x:"2",y:"2",width:"20",height:"20",rx:"1"})})}),close:(0,m.jsx)("span",{className:"rdd-menu-icon",children:(0,m.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{display:"block"},children:(0,m.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})},so=e=>{let t=jt.get(e);return t||(t=document.createElement("div"),t.style.width="100%",t.style.height="100%",jt.set(e,t)),t},fr=(e,t,n)=>{let o=t.component,a=n.get(o);if(!a)return console.warn(`[react-dockable-desktop] Panel "${e}" references component key "${o}" which is not registered. Add it to the WorkspaceClient panels config:
|
|
5
|
-
new WorkspaceClient({ panels: { "${o}": { component: YourComponent } } })`),(0,m.jsxs)("div",{className:"rdd-unregistered-panel",style:{border:"2px dashed #dc3545"},children:[(0,m.jsx)("h6",{style:{fontWeight:700,marginBottom:"0.25rem"},children:"\u26A0\uFE0F Component Unregistered"}),(0,m.jsxs)("span",{style:{fontSize:"0.875rem",color:"var(--rdd-text-secondary, #94a3b8)"},children:["Key: ",o]})]});let s=a.Component;return(0,m.jsx)(s,{...t.props??{},panelId:e})},In=new Map,xt=new Map,kt=e=>{let t=xt.get(e);return t||(t={onClose:new Set,onMinimize:new Set,onRestore:new Set,onResize:new Set,onActivate:new Set,onDeactivate:new Set,onContainerTypeChange:new Set},xt.set(e,t)),t},ao=({panelId:e})=>{let t=(0,X.useRef)(null);return(0,X.useEffect)(()=>{let n=t.current;if(!n)return;let o=so(e);n.appendChild(o);let a=new ResizeObserver(s=>{for(let I of s){let{width:S,height:C}=I.contentRect;if(S>0&&C>0){In.set(e,{width:S,height:C});let P=xt.get(e);P&&P.onResize.forEach(R=>R(S,C))}}});return a.observe(n),()=>{a.disconnect();let s=document.getElementById(un);s||(s=document.createElement("div"),s.id=un,s.style.display="none",document.body.appendChild(s)),s.appendChild(o)}},[e]),(0,m.jsx)("div",{ref:t,style:{width:"100%",height:"100%"}})},mr=({panelId:e})=>{let t=tt(),n=Wt(),o=et(),a=(0,X.useRef)(null),s=t.panels[e],I=s?n.get(s.component):null,S=I?.defaultOptions?.disableLivePreview||!1,C=In.get(e)||{width:800,height:500},P=C.width,R=C.height,T=Math.min(220/P,140/R);if((0,X.useEffect)(()=>{if(S)return;let A=a.current;if(!A)return;let H=jt.get(e);if(H)return A.appendChild(H),()=>{let u=document.getElementById(un);u||(u=document.createElement("div"),u.id=un,u.style.display="none",document.body.appendChild(u)),u.appendChild(H)}},[e,S]),S){let A=P*T,H=R*T,u=s?.title||I?.defaultOptions?.title||"Panel",w=me(u,o),x=(Array.from(w)[0]||"P").toUpperCase();return(0,m.jsx)("div",{className:"rdd-taskbar-item-preview-frame",style:{width:`${A}px`,height:`${H}px`,display:"flex",alignItems:"center",justifyContent:"center",background:"rgba(108, 117, 125, 0.15)",border:"1px dashed var(--rdd-taskbar-item-border, rgba(255, 255, 255, 0.15))"},children:(0,m.jsx)("div",{style:{fontSize:"2rem",fontWeight:600,color:"var(--rdd-panel-title-color, var(--rdd-panel-text, rgba(255, 255, 255, 0.85)))",userSelect:"none"},children:x})})}return(0,m.jsx)("div",{className:"rdd-taskbar-item-preview-frame",style:{width:`${P*T}px`,height:`${R*T}px`},children:(0,m.jsx)("div",{ref:a,className:"rdd-taskbar-item-preview-host",style:{width:`${P}px`,height:`${R}px`,transform:`scale(${T})`,transformOrigin:"top left",position:"absolute",top:0,left:0,"--rdd-preview-scale":T}})})},hr=({panelId:e,children:t})=>{let n=tt(),{requestClosePanel:o,setPanelDirty:a,registerCloseGuard:s,unregisterCloseGuard:I,registerStateProvider:S,unregisterStateProvider:C,updatePanelTitle:P,minimizePanel:R}=At(),c=n.minimized.some(h=>h.id===e),k=(0,X.useRef)(c);(0,X.useEffect)(()=>{let h=xt.get(e);h&&(c&&!k.current?h.onMinimize.forEach(M=>M()):!c&&k.current&&h.onRestore.forEach(M=>M()),k.current=c)},[c,e]);let T=n.activePanelId===e,A=(0,X.useRef)(T);(0,X.useEffect)(()=>{let h=A.current;A.current=T;let M=xt.get(e);M&&(T&&!h?M.onActivate.forEach(B=>B()):!T&&h&&M.onDeactivate.forEach(B=>B()))},[T,e]);let H=n.panels[e]?.state,u=H==="floating"?"floating-window":"dockable-panel",w=(0,X.useRef)(u);(0,X.useEffect)(()=>{if(H==="minimized")return;let h=w.current;w.current=u;let M=xt.get(e);M&&u!==h&&M.onContainerTypeChange.forEach(B=>B(u))},[u,H,e]),(0,X.useEffect)(()=>()=>{let h=xt.get(e);h&&(A.current&&h.onDeactivate.forEach(M=>M()),h.onClose.forEach(M=>M()),xt.delete(e))},[e]);let x=(0,X.useRef)(u),O=X.default.useMemo(()=>({requestClose:h=>o(e,h),setDirty:h=>a(e,h),onCloseRequested:h=>(s(e,h),()=>I(e)),registerStateProvider:h=>(S(e,h),()=>C(e)),setTitle:h=>P(e,h),instanceId:e,containerType:x.current,onClose:h=>{let M=kt(e);return M.onClose.add(h),()=>M.onClose.delete(h)},onMinimize:h=>{let M=kt(e);return M.onMinimize.add(h),()=>M.onMinimize.delete(h)},onRestore:h=>{let M=kt(e);return M.onRestore.add(h),()=>M.onRestore.delete(h)},onResize:h=>{let M=kt(e);return M.onResize.add(h),()=>M.onResize.delete(h)},requestMinimize:()=>R(e),getDimensions:()=>In.get(e)??null,onActivate:h=>{let M=kt(e);return M.onActivate.add(h),()=>M.onActivate.delete(h)},onDeactivate:h=>{let M=kt(e);return M.onDeactivate.add(h),()=>M.onDeactivate.delete(h)},onContainerTypeChange:h=>{let M=kt(e);return M.onContainerTypeChange.add(h),()=>M.onContainerTypeChange.delete(h)}}),[e,o,a,s,I,S,C,P,R]);return(0,m.jsx)(bt,{value:O,children:t})},lo=({node:e,path:t,onTabRightClick:n,activeDropZone:o,onHoverDropZone:a,onTabDragStart:s,hoveredTab:I,onTabHover:S,defaultPanelIcon:C,onRequestClosePanel:P})=>{let{updateSplitSizes:R}=At();if(e.type==="leaf")return(0,m.jsx)(br,{leaf:e,onTabRightClick:n,activeDropZone:o,onHoverDropZone:a,onTabDragStart:s,hoveredTab:I,onTabHover:S,defaultPanelIcon:C,onRequestClosePanel:P});let c=e.orientation==="horizontal",k=(T,A)=>{A.preventDefault();let H=A.currentTarget,u=H.parentElement,w=u?c?u.clientWidth:u.clientHeight:c?1e3:800;ft({element:H,pointerId:A.pointerId,startClientX:A.clientX,startClientY:A.clientY,captureStart:()=>[...e.sizes],activeClasses:[{el:H,classes:["rdd-active"]},{el:document.body,classes:["rdd-resizing-active",c?"rdd-resizing-col-active":"rdd-resizing-row-active"]}],onMove:(x,O,h)=>{let M=(c?x:O)/w,B=[...h];B[T]+=M,B[T+1]-=M,B[T]>.1&&B[T+1]>.1&&R(t,B)}})};return(0,m.jsx)("div",{style:{display:"flex",flexDirection:c?"row":"column",width:"100%",height:"100%",overflow:"hidden",position:"relative"},children:e.children.map((T,A)=>{let H=e.sizes[A]*100;return(0,m.jsxs)(X.default.Fragment,{children:[(0,m.jsx)("div",{style:{flexGrow:e.sizes[A],flexBasis:`${H}%`,overflow:"hidden",position:"relative",minWidth:0,minHeight:0},children:(0,m.jsx)(lo,{node:T,path:[...t,A],onTabRightClick:n,activeDropZone:o,onHoverDropZone:a,onTabDragStart:s,hoveredTab:I,onTabHover:S,defaultPanelIcon:C,onRequestClosePanel:P})}),A<e.children.length-1&&(0,m.jsx)("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)})})},br=({leaf:e,onTabRightClick:t,activeDropZone:n,onHoverDropZone:o,onTabDragStart:a,hoveredTab:s,onTabHover:I,defaultPanelIcon:S,onRequestClosePanel:C})=>{let P=tt(),R=Wt(),{openPanel:c,closeLeafGroup:k,setActivePanel:T}=Cn(),A=et(),H=nt(),{windowClass:u,windowBodyClass:w}=pt(),x=(0,X.useRef)(null),[O,h]=(0,X.useState)({left:!1,right:!1}),M=(0,X.useCallback)(()=>{let l=x.current;l&&h({left:l.scrollLeft>0,right:l.scrollLeft<l.scrollWidth-l.clientWidth-1})},[]);(0,X.useEffect)(()=>{let l=x.current;if(!l)return;l.addEventListener("scroll",M,{passive:!0});let E=new ResizeObserver(M);return E.observe(l),M(),()=>{l.removeEventListener("scroll",M),E.disconnect()}},[M]);let B=l=>{x.current?.scrollBy({left:l==="left"?-120:120,behavior:"smooth"})},D=l=>{c(l,P.panels[l].component),T(l)};return(0,m.jsxs)("div",{"data-active-panel-id":e.activePanelId||"",className:`rdd-workspace-panel ${u??""}`,style:{overflow:"hidden",position:"relative"},children:[(0,m.jsxs)("div",{className:"rdd-workspace-tab-bar",style:{minHeight:"38px"},children:[O.left&&(0,m.jsx)("button",{className:"rdd-tab-scroll-btn rdd-tab-scroll-btn-left",onPointerDown:l=>l.stopPropagation(),onClick:()=>B("left"),tabIndex:-1,"aria-label":"Scroll tabs left",children:"\u2039"}),(0,m.jsx)("div",{ref:x,className:"rdd-tab-headers-container",style:{scrollbarWidth:"none"},onPointerMove:l=>{P.draggedPanelId&&l.target===l.currentTarget&&I(e.id,"EMPTY",e.panels.length,"right")},onPointerLeave:l=>{P.draggedPanelId&&l.target===l.currentTarget&&I(e.id,"",-1,null)},children:e.panels.map((l,E)=>{let _=P.panels[l];if(!_)return null;let q=e.activePanelId===l,Q=P.activePanelId===l,ne=R.get(_.component)?.defaultOptions,Pe=s&&s.leafId===e.id&&s.panelId===l,se=E===e.panels.length-1,V=s&&s.leafId===e.id&&s.panelId==="EMPTY"&&se,J=Pe?s.side==="left"?"rdd-drag-hover-left":"rdd-drag-hover-right":V?"rdd-drag-hover-right":"",j=q?Q?"rdd-active rdd-workspace-tab-active-focused":"rdd-active rdd-workspace-tab-active-unfocused":"rdd-workspace-tab-inactive";return(0,m.jsxs)("div",{"data-tab-id":l,"data-leaf-id":e.id,"data-tab-index":String(E),onClick:()=>D(l),onPointerDown:G=>{ne?.canDrag!==!1&&a(l,G)},onContextMenu:G=>t(l,G),onPointerMove:G=>{if(P.draggedPanelId&&G.pointerType!=="touch"){let ce=G.currentTarget.getBoundingClientRect(),We=G.clientX-ce.left<ce.width/2?"left":"right";I(e.id,l,E,We)}},onPointerLeave:()=>{P.draggedPanelId&&I(e.id,"",-1,null)},className:`rdd-workspace-tab ${j} ${J}`,style:{cursor:ne?.canDrag===!1?"default":"pointer"},children:[(0,m.jsxs)("span",{className:"rdd-text-truncate",style:{maxWidth:"120px",display:"flex",alignItems:"center"},children:[(0,m.jsx)("span",{className:"rdd-workspace-tab-icon",children:ne?.icon||S||kn}),(0,m.jsxs)("span",{children:[me(_.title,A),_.dirty?" *":""]})]}),ne?.renderHeaderActions&&(0,m.jsx)("span",{className:"rdd-tab-header-actions",onClick:G=>G.stopPropagation(),onPointerDown:G=>G.stopPropagation(),children:ne.renderHeaderActions(l)}),ne?.canClose!==!1&&(0,m.jsx)("span",{onClick:G=>{G.stopPropagation(),C(l)},title:me(H.closeTab,A),className:"rdd-close-tab-x",style:{width:"18px",height:"18px",...ne?.renderHeaderActions?{}:{marginInlineStart:"auto"}},children:(0,m.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,m.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]},l)})}),O.right&&(0,m.jsx)("button",{className:"rdd-tab-scroll-btn rdd-tab-scroll-btn-right",onPointerDown:l=>l.stopPropagation(),onClick:()=>B("right"),tabIndex:-1,"aria-label":"Scroll tabs right",children:"\u203A"}),e.panels.length===0&&e.keepOnEmpty&&e.canClose!==!1&&(0,m.jsx)("span",{onClick:()=>k(e.id),className:"rdd-close-tab-x rdd-header-close-empty-group",style:{width:"18px",height:"18px",cursor:"pointer"},title:me(H.closeEmptyGroup,A),children:(0,m.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,m.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),(0,m.jsxs)("div",{className:`rdd-panel-body ${w??""}`,style:{position:"relative",overflow:"hidden"},children:[e.activePanelId&&P.panels[e.activePanelId]?(0,m.jsx)(ao,{panelId:e.activePanelId},e.activePanelId):(0,m.jsx)("div",{className:"rdd-empty-leaf-placeholder",children:(0,m.jsx)("span",{children:"Empty Workspace Section"})}),P.draggedPanelId!==null&&(()=>{let l=E=>n?.leafId===e.id&&n.position===E;return(0,m.jsx)("div",{className:"rdd-dock-drop-zone-overlay",children:(0,m.jsxs)("div",{className:"rdd-dock-target-cross",children:[(0,m.jsx)("div",{"data-leaf-id":e.id,"data-drop-zone":"top",onPointerEnter:()=>o(e.id,"top"),onPointerLeave:()=>o(e.id,null),className:`rdd-dock-target-box rdd-dock-target-top${l("top")?" rdd-dock-target-box--active":""}`,children:"\u25B2"}),(0,m.jsx)("div",{"data-leaf-id":e.id,"data-drop-zone":"bottom",onPointerEnter:()=>o(e.id,"bottom"),onPointerLeave:()=>o(e.id,null),className:`rdd-dock-target-box rdd-dock-target-bottom${l("bottom")?" rdd-dock-target-box--active":""}`,children:"\u25BC"}),(0,m.jsx)("div",{"data-leaf-id":e.id,"data-drop-zone":"left",onPointerEnter:()=>o(e.id,"left"),onPointerLeave:()=>o(e.id,null),className:`rdd-dock-target-box rdd-dock-target-left${l("left")?" rdd-dock-target-box--active":""}`,children:"\u25C0"}),(0,m.jsx)("div",{"data-leaf-id":e.id,"data-drop-zone":"right",onPointerEnter:()=>o(e.id,"right"),onPointerLeave:()=>o(e.id,null),className:`rdd-dock-target-box rdd-dock-target-right${l("right")?" rdd-dock-target-box--active":""}`,children:"\u25B6"}),(0,m.jsx)("div",{"data-leaf-id":e.id,"data-drop-zone":"center",onPointerEnter:()=>o(e.id,"center"),onPointerLeave:()=>o(e.id,null),className:`rdd-dock-target-box rdd-dock-target-center${l("center")?" rdd-dock-target-box--active":""}`,children:"\u25A3"})]})})})(),P.draggedPanelId!==null&&n!==null&&n.leafId===e.id&&(0,m.jsx)("div",{className:"rdd-dock-preview-highlight",style:(()=>{let l=n.position,E=`${P.splitRatio*100}%`,_=`${(1-P.splitRatio)*100}%`;return{left:l==="right"?_:"0",top:l==="bottom"?_:"0",width:l==="left"||l==="right"?E:"100%",height:l==="top"||l==="bottom"?E:"100%"}})()})]})]})},vr=({skin:e="vscode",defaultPanelIcon:t,taskbarVisibility:n="autohide",contextMenuAdapter:o=Tt,animations:a=!0})=>{let s=tt(),I=Wt(),{restorePanel:S,minimizePanel:C,requestClosePanel:P,maximizePanel:R,updateFloatingPosition:c,focusPanel:k,floatPanel:T,setDraggedPanelId:A,dockPanelToGroup:H,movePanelOrder:u,dockPanelToWorkspaceEdge:w,setActivePanel:x,getPanelContextMenuItems:O,showContextMenu:h,registerContextMenuFn:M}=Cn(),{openModal:B}=yt(),D=et(),l=nt(),E=X.default.useCallback(r=>{let y=s.panels[r];P(r,{onConfirm:f=>new Promise(b=>{let p=f||y?.dirtyOptions,z=y?me(y.title,D):"Panel";B(Pt,{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:()=>b(!0),onCancel:()=>b(!1)},{size:"small"})})})},[P,s.panels,D,B,l]),{windowClass:_,windowBodyClass:q}=pt(),Q=(0,X.useContext)(Ft),ee=(0,X.useRef)(null);(0,X.useEffect)(()=>M(Q!==null?r=>Q.show(r):r=>ee.current?.show(r)),[Q,M]);let ne=(0,X.useRef)(null),[Pe,se]=(0,X.useState)(!1),V=(0,X.useRef)(null),J=(0,X.useRef)(s.minimized.length),[j,G]=(0,X.useState)(null),ce=(0,X.useRef)(null),we=(0,X.useRef)("mouse"),[We,Z]=(0,X.useState)(!1),Ye=Q!==null?Q.isOpen:We;(0,X.useEffect)(()=>()=>{ce.current&&clearTimeout(ce.current)},[]),(0,X.useEffect)(()=>{j&&(s.minimized.some(y=>y.id===j.id)||G(null))},[s.minimized,j]),(0,X.useEffect)(()=>{if(!j?.fromTouch)return;let r=y=>{y.pointerType!=="touch"||document.querySelector(".rdd-taskbar-item-tooltip")?.contains(y.target)||G(null)};return document.addEventListener("pointerdown",r,{capture:!0}),()=>document.removeEventListener("pointerdown",r,{capture:!0})},[j?.fromTouch]);let[Je,Qe]=(0,X.useState)(null),Ke=(0,X.useRef)(null),[at,lt]=(0,X.useState)({x:0,y:0}),[dt,it]=(0,X.useState)(null),st=(0,X.useRef)(null),ke=r=>{it(r),st.current=r},[ae,fe]=(0,X.useState)(null),Ve=(0,X.useRef)(null),Xe=r=>{fe(r),Ve.current=r},U=(0,X.useContext)(Dt)?.isRtl??!1,[te,ue]=(0,X.useState)(null),xe=(0,X.useRef)(null),Ie=(r,y,f,b)=>{let p=b?{leafId:r,panelId:y,index:f,side:b}:null;ue(p),xe.current=p},Ee=(r,y)=>{let f=y?{leafId:r,position:y}:null;Qe(f),Ke.current=f,f&&(ke(null),Xe(null))},Ae=(r,y)=>{let f=document.elementsFromPoint(r,y),b=!1,p=!1,z=!1;for(let N of f)if(N instanceof HTMLElement){if(!b&&N.dataset.dropZone){let W=N.dataset.leafId;if(W){let Y=N.dataset.dropZone;Qe({leafId:W,position:Y}),Ke.current={leafId:W,position:Y},b=!0}}if(!z&&N.dataset.tabId){let W=N.dataset.leafId,Y=parseInt(N.dataset.tabIndex||"0",10);if(W){let oe=N.getBoundingClientRect(),K=r-oe.left<oe.width/2?"left":"right";ue({leafId:W,panelId:N.dataset.tabId,index:Y,side:K}),xe.current={leafId:W,panelId:N.dataset.tabId,index:Y,side:K},z=!0}}if(!p&&N.dataset.edgeTrigger&&(ke(N.dataset.edgeTrigger),p=!0),b&&p&&z)break}b||(Qe(null),Ke.current=null),p||ke(null),z||(ue(null),xe.current=null)},Le=300,ze=8,Te=()=>{A(null),Qe(null),Ke.current=null,ue(null),xe.current=null,ke(null)},ct=r=>s.isRtl?r==="left"?"right":r==="right"?"left":r:r,Oe=(r,y)=>{let f=Ke.current,b=xe.current,p=st.current,z=Ve.current;if(p)w(r,ct(p));else if(b){let N=b.index;b.side==="right"&&(N+=1);let W=io(s.gridRoot,b.leafId);if(W){let Y=W.panels.indexOf(r);Y!==-1&&Y<N&&(N-=1)}u(r,b.leafId,N)}else f?H(r,f.leafId,ct(f.position)):z?T(r,void 0,U?qt(z):z):T(r,{x:y.clientX-150,y:y.clientY-15,width:450,height:350});Xe(null),Te()},Fe=(r,y)=>{if(y.pointerType==="mouse"&&y.button!==0)return;y.preventDefault();let f=y.currentTarget,b=y.clientX,p=y.clientY;if(y.pointerType==="touch"){let z=y.pointerId,N=!1,W=()=>{N=!0,clearTimeout(oe),f.removeEventListener("pointermove",Y),f.removeEventListener("pointerup",W),f.removeEventListener("pointercancel",W)},Y=K=>{Math.hypot(K.clientX-b,K.clientY-p)>ze&&W()},oe=setTimeout(()=>{if(N)return;f.removeEventListener("pointermove",Y),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 K=!1,le=ge=>{K||(K=!0,A(r)),lt({x:ge.clientX,y:ge.clientY}),Ae(ge.clientX,ge.clientY)},he=ge=>{f.classList.remove("rdd-long-press-active"),document.body.classList.remove("rdd-dragging-active"),f.removeEventListener("pointermove",le),f.removeEventListener("pointerup",he),f.removeEventListener("pointercancel",de),K?Oe(r,ge):_e(r,ge)},de=()=>{f.classList.remove("rdd-long-press-active"),document.body.classList.remove("rdd-dragging-active"),f.removeEventListener("pointermove",le),f.removeEventListener("pointerup",he),f.removeEventListener("pointercancel",de),K&&Te()};f.addEventListener("pointermove",le),f.addEventListener("pointerup",he),f.addEventListener("pointercancel",de)},Le);f.addEventListener("pointermove",Y),f.addEventListener("pointerup",W),f.addEventListener("pointercancel",W)}else{let z=!1,N=oe=>{let K=oe.clientX-b,le=oe.clientY-p;!z&&(Math.abs(K)>5||Math.abs(le)>5)&&(z=!0,A(r)),z&<({x:oe.clientX,y:oe.clientY})},W=oe=>{document.body.classList.remove("rdd-dragging-active"),window.removeEventListener("pointermove",N),window.removeEventListener("pointerup",W),window.removeEventListener("pointercancel",Y),z&&Oe(r,oe)},Y=()=>{document.body.classList.remove("rdd-dragging-active"),window.removeEventListener("pointermove",N),window.removeEventListener("pointerup",W),window.removeEventListener("pointercancel",Y),z&&Te()};document.body.classList.add("rdd-dragging-active"),window.addEventListener("pointermove",N),window.addEventListener("pointerup",W),window.addEventListener("pointercancel",Y)}},_e=(r,y)=>{y.preventDefault();let f=s.panels[r];if(!f)return;let p=I.get(f.component)?.defaultOptions,z=[];if(p?.canDrag!==!1&&z.push({label:me(l.floatWindow,D),icon:Ht.float,action:()=>T(r)}),p?.canMinimize!==!1&&z.push({label:me(l.minimizePanel,D),icon:Ht.minimize,action:()=>C(r)}),z.length>0&&p?.canClose!==!1&&z.push({separator:!0}),p?.canClose!==!1&&z.push({label:me(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;h({event:y,items:W})},Ne=(r,y)=>{y.preventDefault(),G(null),h({event:y,items:[{label:me(l.restorePanel,D),icon:Ht.restore,action:()=>S(r)},{label:me(l.maximizePanel,D),icon:Ht.maximize,action:()=>R(r)},{separator:!0},{label:me(l.closePanel,D),icon:Ht.close,action:()=>E(r)}]})};(0,X.useEffect)(()=>{let r=Object.keys(s.panels);for(let y of Array.from(jt.keys()))r.includes(y)||jt.delete(y)},[s.panels]),(0,X.useEffect)(()=>{let r=()=>{s.draggedPanelId!==null&&(A(null),Qe(null),ue(null))};return window.addEventListener("blur",r),()=>{window.removeEventListener("blur",r)}},[s.draggedPanelId]);let qe=(0,X.useRef)(null),[He,Gt]=(0,X.useState)({width:1024,height:768});(0,X.useEffect)(()=>{let r=qe.current;if(!r)return;let y=!1,f=new ResizeObserver(b=>{if(!b||b.length===0)return;let p=b[0].contentRect;if(process.env.NODE_ENV==="development"&&p.height<10&&!y){y=!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(),Y=z.id?` id="${z.id}"`:"",oe=z.className?` class="${z.className}"`:"",K=z===r?"the WindowManager container itself":`a wrapper element: <${W}${Y}${oe}>`;console.warn(`[react-dockable-desktop] Workspace height is 0px \u2014 the workspace will be invisible.
|
|
4
|
+
Without it the workspace renders as a black screen with no console errors.`)}catch{}},[]),(0,O.useEffect)(()=>{if(t)return t._connect(Rt),()=>{t._disconnect()}},[t,Rt]);let bt=(0,O.useMemo)(()=>({getSnapshot:E,subscribeToState:_}),[E,_]);return(0,yt.jsx)(qn.Provider,{value:Qe,children:(0,yt.jsx)(jn.Provider,{value:M,children:(0,yt.jsx)(Vn.Provider,{value:bt,children:(0,yt.jsx)(Ot.Provider,{value:R,children:(0,yt.jsx)(nn.Provider,{value:Rt,children:(0,yt.jsx)(Xn.Provider,{value:k||Xt,children:(0,yt.jsx)(Kn.Provider,{value:N,children:e})})})})})})})},Yn=e=>()=>{};function tt(e){let t=(0,O.useContext)(Ot),o=(0,O.useContext)(Vn),r=(0,O.useRef)(e);r.current=e;let d=(0,O.useSyncExternalStore)(e?o?.subscribeToState??Yn:Yn,()=>{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?d:t}var Ft=()=>{let e=(0,O.useContext)(nn);if(!e)throw new Error("useWindowManagerActions must be used within WindowManagerProvider");return e},wn=()=>{let e=(0,O.useContext)(nn);if(!e)throw new Error("useWindowManagerActionsInternal must be used within WindowManagerProvider");return e},et=()=>(0,O.useContext)(Xn)||(t=>{let o=t.defaultMessage||t.id;return t.values&&Object.entries(t.values).forEach(([r,d])=>{o=o.replace(`{${r}}`,String(d))}),o}),ge=(e,t)=>e?typeof e=="string"?e:t(e):"",Jn=()=>{let{publish:e,subscribe:t}=Ft();return{publish:e,subscribe:t}},nt=()=>(0,O.useContext)(Kn),Kt=()=>Mt().instanceId;function Qn(e){let t=(0,O.useContext)(nn),o=Kt(),r=(0,O.useRef)(e);r.current=e,(0,O.useEffect)(()=>{if(!(!t?.registerPanelContextMenu||!o))return t.registerPanelContextMenu(o,()=>r.current)},[o,t?.registerPanelContextMenu])}var Pe=en(require("react"),1),Rn=require("react-dom"),ue=require("react/jsx-runtime");function pr(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 Mn(e){return"separator"in e}function rn(e){return!Mn(e)&&"items"in e}var to=(0,Pe.forwardRef)(({items:e,x:t,y:o,theme:r,fmt:d,onClose:s,onMouseEnter:T,onMouseLeave:b},P)=>((0,Pe.useLayoutEffect)(()=>{let x=P?.current;if(!x)return;let w=x.getBoundingClientRect(),c=8;w.right>window.innerWidth-c&&(x.style.left=`${Math.max(c,window.innerWidth-w.width-c)}px`,x.style.right="auto"),w.bottom>window.innerHeight-c&&(x.style.top=`${Math.max(c,window.innerHeight-w.height-c)}px`),w.left<c&&(x.style.left=`${c}px`,x.style.right="auto"),w.top<c&&(x.style.top=`${c}px`)}),(0,Rn.createPortal)((0,ue.jsx)("div",{ref:P,className:`rdd-context-menu rdd-context-menu--${r} rdd-context-menu--submenu`,style:{position:"fixed",left:t,top:o},role:"menu",onMouseEnter:T,onMouseLeave:b,children:e.map((x,w)=>{if(Mn(x))return(0,ue.jsx)("hr",{className:"rdd-context-menu__separator",role:"separator"},w);let c=x,M=c.checkbox&&c.checkbox.active!==!1,k=M&&c.checkbox.value,D=c.disabled===!0||(M?c.checkbox.enabled===!1:!1);return(0,ue.jsxs)("button",{type:"button",className:`rdd-context-menu__item${D?" rdd-context-menu__item--disabled":""}`,title:c.title?_t(c.title,d):void 0,disabled:D,"data-cy-action":c.cyAction,onClick:()=>{D||(c.action?.(),s())},role:"menuitem","aria-checked":M?k:void 0,children:[c.icon?(0,ue.jsx)("span",{className:"rdd-context-menu__icon",children:c.icon}):(0,ue.jsx)("span",{className:"rdd-context-menu__icon","aria-hidden":"true"}),(0,ue.jsx)("span",{className:"rdd-context-menu__label",children:_t(c.label,d)}),M&&(0,ue.jsx)("span",{className:`rdd-context-menu__checkbox${k?" rdd-context-menu__checkbox--checked":""}`,"aria-hidden":"true",children:(0,ue.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,ue.jsx)("rect",{x:"0.75",y:"0.75",width:"10.5",height:"10.5",rx:"2",fill:"none",stroke:"currentColor",strokeWidth:"1.5"}),k&&(0,ue.jsx)("path",{d:"M2.5 6 L4.5 8.5 L9.5 3.5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})]})})]},w)})}),document.body)));to.displayName="ContextMenuSubMenuPanel";var eo={visible:!1,x:0,y:0,items:[]},sn=(0,Pe.forwardRef)(({theme:e="dark",formatMessageProvider:t,onShow:o,onHide:r,onOpenChange:d,className:s,style:T},b)=>{let[P,x]=(0,Pe.useState)(eo),[w,c]=(0,Pe.useState)(null),M=(0,Pe.useRef)(null),k=(0,Pe.useRef)(null),D=(0,Pe.useRef)(new Map),F=(0,Pe.useRef)({open:null,close:null}),g=Pe.default.useCallback(()=>{x(eo),c(null),F.current.open&&clearTimeout(F.current.open),F.current.close&&clearTimeout(F.current.close),F.current.open=null,F.current.close=null,r?.(),d?.(!1)},[r,d]);if((0,Pe.useImperativeHandle)(b,()=>({show({event:u,x:N,y:A,items:K}){let U=u?pr(u):{x:N??0,y:A??0};D.current.clear(),x({visible:!0,x:U.x,y:U.y,items:K}),c(null),o?.(),d?.(!0)}}),[o,d]),(0,Pe.useEffect)(()=>{if(!P.visible)return;let u=N=>{M.current?.contains(N.target)||k.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)}},[P.visible,g]),(0,Pe.useEffect)(()=>{if(!P.visible)return;let u=N=>{N.key==="Escape"&&g()};return document.addEventListener("keydown",u),()=>document.removeEventListener("keydown",u)},[P.visible,g]),(0,Pe.useLayoutEffect)(()=>{if(!P.visible||!M.current)return;let u=M.current,N=u.getBoundingClientRect(),A=8;N.right>window.innerWidth-A&&(u.style.left=`${Math.max(A,window.innerWidth-N.width-A)}px`),N.bottom>window.innerHeight-A&&(u.style.top=`${Math.max(A,window.innerHeight-N.height-A)}px`),N.left<A&&(u.style.left=`${A}px`),N.top<A&&(u.style.top=`${A}px`)},[P.visible]),!P.visible)return null;let R=t,C=0,W=0;if(w!==null){let u=D.current.get(w);if(u){let N=u.getBoundingClientRect();C=document.documentElement.dir==="rtl"?window.innerWidth-N.left+2:N.right+2,W=N.top}}function v(){F.current.open&&(clearTimeout(F.current.open),F.current.open=null)}function E(){F.current.close&&(clearTimeout(F.current.close),F.current.close=null)}function _(u,N){E(),w!==null&&w!==u&&(v(),c(null)),rn(N)&&N.items?.length?(v(),F.current.open=setTimeout(()=>{c(u)},150)):rn(N)||(v(),w!==null&&(F.current.close=setTimeout(()=>c(null),200)))}function z(u){v(),rn(u)&&u.items?.length&&(F.current.close=setTimeout(()=>c(null),200))}return(0,Rn.createPortal)((0,ue.jsxs)(ue.Fragment,{children:[(0,ue.jsx)("div",{ref:M,className:`rdd-context-menu rdd-context-menu--${e}${s?` ${s}`:""}`,style:{position:"fixed",left:P.x,top:P.y,...T},role:"menu","aria-orientation":"vertical",children:P.items.map((u,N)=>{if(Mn(u))return(0,ue.jsx)("hr",{className:"rdd-context-menu__separator",role:"separator"},N);if(rn(u))return(0,ue.jsxs)("button",{ref:ne=>{D.current.set(N,ne)},type:"button",className:`rdd-context-menu__item rdd-context-menu__item--has-submenu${w===N?" rdd-context-menu__item--submenu-open":""}`,title:u.title?_t(u.title,R):void 0,onMouseEnter:()=>_(N,u),onMouseLeave:()=>z(u),role:"menuitem","aria-haspopup":"true","aria-expanded":w===N,children:[(0,ue.jsx)("span",{className:"rdd-context-menu__icon","aria-hidden":"true"}),(0,ue.jsx)("span",{className:"rdd-context-menu__label",children:_t(u.label,R)}),(0,ue.jsx)("span",{className:"rdd-context-menu__chevron","aria-hidden":"true",children:"\u203A"})]},N);let A=u,K=A.checkbox&&A.checkbox.active!==!1,U=K&&A.checkbox.value,ee=A.disabled===!0||(K?A.checkbox.enabled===!1:!1);return(0,ue.jsxs)("button",{ref:ne=>{D.current.set(N,ne)},type:"button",className:`rdd-context-menu__item${ee?" rdd-context-menu__item--disabled":""}`,title:A.title?_t(A.title,R):void 0,disabled:ee,"data-cy-action":A.cyAction,onClick:()=>{ee||(A.action?.(),g())},onMouseEnter:()=>_(N,u),onMouseLeave:()=>z(u),role:"menuitem","aria-checked":K?U:void 0,children:[A.icon?(0,ue.jsx)("span",{className:"rdd-context-menu__icon",children:A.icon}):(0,ue.jsx)("span",{className:"rdd-context-menu__icon","aria-hidden":"true"}),(0,ue.jsx)("span",{className:"rdd-context-menu__label",children:_t(A.label,R)}),K&&(0,ue.jsx)("span",{className:`rdd-context-menu__checkbox${U?" rdd-context-menu__checkbox--checked":""}`,"aria-hidden":"true",children:(0,ue.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,ue.jsx)("rect",{x:"0.75",y:"0.75",width:"10.5",height:"10.5",rx:"2",fill:U?"currentColor":"none",stroke:"currentColor",strokeWidth:"1.5"}),U&&(0,ue.jsx)("path",{d:"M2.5 6 L4.5 8.5 L9.5 3.5",stroke:"white",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})]})})]},N)})}),w!==null&&(()=>{let u=P.items[w];return(0,ue.jsx)(to,{ref:k,items:u.items??[],x:C,y:W,theme:e,fmt:R,onClose:g,onMouseEnter:()=>E(),onMouseLeave:()=>{F.current.close=setTimeout(()=>c(null),200)}})})()]}),document.body)});sn.displayName="ContextMenu";var kt={Component:sn},Ht=Pe.default.createContext(null),an=({adapter:e=kt,children:t,...o})=>{let r=(0,Pe.useRef)(null),[d,s]=Pe.default.useState(!1),T=Pe.default.useCallback(b=>{r.current?.show(b)},[]);return(0,ue.jsxs)(Ht.Provider,{value:{show:T,isOpen:d},children:[t,(0,ue.jsx)(e.Component,{ref:r,...o,onShow:()=>{s(!0),o.onShow?.()},onHide:()=>{s(!1),o.onHide?.()}})]})};function no(){let e=Pe.default.useContext(Ht);if(!e)throw new Error("useShowContextMenu must be used within a ContextMenuProvider");return e.show}var xe=require("react"),Tn=require("react/jsx-runtime"),gr=0,Sn=()=>`panel-${++gr}-${Date.now()}`,ln=new Map,oo={leftPanel:null,rightPanel:null,modals:[]},ro=(0,xe.createContext)(null),io=(0,xe.createContext)(null),dn=({children:e})=>{let[t,o]=(0,xe.useState)(oo),r=(0,xe.useRef)(t);r.current=t;let d=(0,xe.useCallback)((g,R)=>{ln.set(g,R)},[]),s=(0,xe.useCallback)(g=>{ln.delete(g)},[]),T=(0,xe.useCallback)(async(g,R,C={})=>{let W=r.current.leftPanel;if(W){let _=ln.get(W.id);if(_&&!await _())return null}let v=Sn(),E={id:v,Component:g,props:R,containerType:"left-panel",options:C};return o(_=>({..._,leftPanel:E})),v},[]),b=(0,xe.useCallback)(async(g,R,C={})=>{let W=r.current.rightPanel;if(W){let _=ln.get(W.id);if(_&&!await _())return null}let v=Sn(),E={id:v,Component:g,props:R,containerType:"right-panel",options:C};return o(_=>({..._,rightPanel:E})),v},[]),P=(0,xe.useCallback)((g,R,C={})=>{let W=Sn(),v=R.title,E={...C,title:C.title||v||"Confirmation"},_={id:W,Component:g,props:R,containerType:"modal",options:E};return o(z=>({...z,modals:[...z.modals,_]})),W},[]),x=(0,xe.useCallback)(g=>{o(R=>({leftPanel:R.leftPanel?.id===g?null:R.leftPanel,rightPanel:R.rightPanel?.id===g?null:R.rightPanel,modals:R.modals.filter(C=>C.id!==g)}))},[]),w=(0,xe.useCallback)(()=>{o(oo)},[]),c=(0,xe.useCallback)(()=>{o(g=>({...g,modals:[]}))},[]),M=(0,xe.useCallback)(g=>t.leftPanel?.id===g?t.leftPanel:t.rightPanel?.id===g?t.rightPanel:t.modals.find(R=>R.id===g),[t]),k=(0,xe.useCallback)((g,R)=>{o(C=>({leftPanel:C.leftPanel?.id===g?{...C.leftPanel,...R}:C.leftPanel,rightPanel:C.rightPanel?.id===g?{...C.rightPanel,...R}:C.rightPanel,modals:C.modals.map(W=>W.id===g?{...W,...R}:W)}))},[]),D=(0,xe.useCallback)((g,R,C)=>{k(g,{dirty:R,dirtyOptions:C})},[k]),F=(0,xe.useMemo)(()=>({openLeftPanel:T,openRightPanel:b,openModal:P,close:x,closeAll:w,closeAllModals:c,getInstance:M,updateInstance:k,setDirty:D,registerCloseHandler:d,unregisterCloseHandler:s}),[T,b,P,x,w,c,M,k,D,d,s]);return(0,Tn.jsx)(ro.Provider,{value:t,children:(0,Tn.jsx)(io.Provider,{value:F,children:e})})},gt=()=>{let e=(0,xe.useContext)(ro);if(!e)throw new Error("usePanelState must be used within PanelProvider");return e},Pt=()=>{let e=(0,xe.useContext)(io);if(!e)throw new Error("usePanelActions must be used within PanelProvider");return e};var qt=require("react");var rt=require("react/jsx-runtime"),fr=({title:e,message:t,alert:o,alertType:r="info",useYesNoTitles:d=!1,onOK:s,onCancel:T})=>{let{requestClose:b,setIcon:P,setTitle:x}=Mt(),w=et(),c=nt(),M=(0,qt.useRef)(null);(0,qt.useEffect)(()=>{if(e){let C=typeof e=="string"?e:w(e);x(C)}P&&P((0,rt.jsx)("span",{children:"\u2753"}))},[e,x,P,w]),(0,qt.useEffect)(()=>{M.current?.focus({preventScroll:!0})},[]);let k=typeof t=="string"?t:w(t),D=w(d?c.no:c.cancel),F=w(d?c.yes:c.ok),g=C=>{C.preventDefault(),s?.(),b()},R=()=>{T?.(),b()};return(0,rt.jsxs)("form",{onSubmit:g,className:"rdd-confirmation-form-body",children:[o&&(0,rt.jsxs)("div",{className:`rdd-confirmation-alert rdd-confirmation-alert-${r}`,children:[(0,rt.jsx)("span",{children:"\u2139\uFE0F"}),(0,rt.jsx)("span",{children:o})]}),(0,rt.jsx)("div",{style:{fontSize:"0.9rem",color:"inherit",lineHeight:1.5},children:k}),(0,rt.jsx)("hr",{style:{marginTop:"0.5rem",marginBottom:"0.5rem",opacity:.1}}),(0,rt.jsxs)("div",{className:"rdd-confirmation-actions",children:[(0,rt.jsx)("button",{type:"button",className:"rdd-btn rdd-btn-sm rdd-btn-outline",onClick:R,children:D}),(0,rt.jsx)("button",{type:"submit",className:"rdd-btn rdd-btn-sm rdd-btn-primary",ref:M,children:F})]})]})},xt=fr;function jt(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:o,startClientX:r,startClientY:d,captureStart:s,onMove:T,onEnd:b,activeClasses:P}=e;t.setPointerCapture(o),P?.forEach(({el:M,classes:k})=>M.classList.add(...k));let x=s(),w=M=>{T(M.clientX-r,M.clientY-d,x)},c=()=>{P?.forEach(({el:M,classes:k})=>M.classList.remove(...k)),t.removeEventListener("pointermove",w),t.removeEventListener("pointerup",c),t.removeEventListener("pointercancel",c),b?.(x)};t.addEventListener("pointermove",w),t.addEventListener("pointerup",c),t.addEventListener("pointercancel",c)}function $t(e,t,o,r,d){let{minW:s,minH:T,maxW:b,maxH:P,minX:x,minY:w}=d,{x:c,y:M,w:k,h:D}=r;if(e.includes("e")&&(k=Math.max(s,Math.min(r.w+t,b??1/0))),e.includes("w")){let F=r.w-s,g=x!=null?-(r.x-x):-1/0,R=Math.max(g,Math.min(t,F));k=r.w-R,c=r.x+R}if(e.includes("s")&&(D=Math.max(T,Math.min(r.h+o,P??1/0))),e.includes("n")){let F=r.h-T,g=w!=null?-(r.y-w):-1/0,R=Math.max(g,Math.min(o,F));D=r.h-R,M=r.y+R}return{x:c,y:M,w:k,h:D}}var cn=require("react");function un(){let[e,t]=(0,cn.useState)(()=>document.documentElement.getAttribute("data-color-scheme")==="light"?"light":"dark");return(0,cn.useEffect)(()=>{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}var h=require("react/jsx-runtime"),so=(e,t)=>{if(!e)return null;if(e.type==="leaf")return e.id===t?e:null;for(let o of e.children){let r=so(o,t);if(r)return r}return null},Zt=new Map,pn="preserved-dom-container",En=(0,h.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{display:"block"},children:[(0,h.jsx)("rect",{x:"3",y:"3",width:"7",height:"9",rx:"1"}),(0,h.jsx)("rect",{x:"14",y:"3",width:"7",height:"5",rx:"1"}),(0,h.jsx)("rect",{x:"14",y:"12",width:"7",height:"9",rx:"1"}),(0,h.jsx)("rect",{x:"3",y:"16",width:"7",height:"5",rx:"1"})]}),Bt={float:(0,h.jsx)("span",{className:"rdd-menu-icon",children:(0,h.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{display:"block"},children:[(0,h.jsx)("rect",{x:"2",y:"8",width:"14",height:"14",rx:"1"}),(0,h.jsx)("rect",{x:"8",y:"2",width:"14",height:"14",rx:"1"})]})}),minimize:(0,h.jsx)("span",{className:"rdd-menu-icon",children:(0,h.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",style:{display:"block"},children:(0,h.jsx)("line",{x1:"4",y1:"18",x2:"20",y2:"18"})})}),restore:(0,h.jsx)("span",{className:"rdd-menu-icon",children:(0,h.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{display:"block"},children:(0,h.jsx)("rect",{x:"4",y:"4",width:"16",height:"16",rx:"1"})})}),maximize:(0,h.jsx)("span",{className:"rdd-menu-icon",children:(0,h.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{display:"block"},children:(0,h.jsx)("rect",{x:"2",y:"2",width:"20",height:"20",rx:"1"})})}),close:(0,h.jsx)("span",{className:"rdd-menu-icon",children:(0,h.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{display:"block"},children:(0,h.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})},ao=e=>{let t=Zt.get(e);return t||(t=document.createElement("div"),t.style.width="100%",t.style.height="100%",Zt.set(e,t)),t},mr=(e,t,o)=>{let r=t.component,d=o.get(r);if(!d)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 } } })`),(0,h.jsxs)("div",{className:"rdd-unregistered-panel",style:{border:"2px dashed #dc3545"},children:[(0,h.jsx)("h6",{style:{fontWeight:700,marginBottom:"0.25rem"},children:"\u26A0\uFE0F Component Unregistered"}),(0,h.jsxs)("span",{style:{fontSize:"0.875rem",color:"var(--rdd-text-secondary, #94a3b8)"},children:["Key: ",r]})]});let s=d.Component;return(0,h.jsx)(s,{...t.props??{},panelId:e})},In=new Map,Ct=new Map,Et=e=>{let t=Ct.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},Ct.set(e,t)),t},lo=({panelId:e})=>{let t=(0,Y.useRef)(null);return(0,Y.useEffect)(()=>{let o=t.current;if(!o)return;let r=ao(e);o.appendChild(r);let d=new ResizeObserver(s=>{for(let T of s){let{width:b,height:P}=T.contentRect;if(b>0&&P>0){In.set(e,{width:b,height:P});let x=Ct.get(e);x&&x.onResize.forEach(w=>w(b,P))}}});return d.observe(o),()=>{d.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]),(0,h.jsx)("div",{ref:t,style:{width:"100%",height:"100%"}})},hr=({panelId:e})=>{let t=tt(),o=At(),r=et(),d=(0,Y.useRef)(null),s=t.panels[e],T=s?o.get(s.component):null,b=T?.defaultOptions?.disableLivePreview||!1,P=In.get(e)||{width:800,height:500},x=P.width,w=P.height,k=Math.min(220/x,140/w);if((0,Y.useEffect)(()=>{if(b)return;let D=d.current;if(!D)return;let F=Zt.get(e);if(F)return D.appendChild(F),()=>{let g=document.getElementById(pn);g||(g=document.createElement("div"),g.id=pn,g.style.display="none",document.body.appendChild(g)),g.appendChild(F)}},[e,b]),b){let D=x*k,F=w*k,g=s?.title||T?.defaultOptions?.title||"Panel",R=ge(g,r),C=(Array.from(R)[0]||"P").toUpperCase();return(0,h.jsx)("div",{className:"rdd-taskbar-item-preview-frame",style:{width:`${D}px`,height:`${F}px`,display:"flex",alignItems:"center",justifyContent:"center",background:"rgba(108, 117, 125, 0.15)",border:"1px dashed var(--rdd-taskbar-item-border, rgba(255, 255, 255, 0.15))"},children:(0,h.jsx)("div",{style:{fontSize:"2rem",fontWeight:600,color:"var(--rdd-panel-title-color, var(--rdd-panel-text, rgba(255, 255, 255, 0.85)))",userSelect:"none"},children:C})})}return(0,h.jsx)("div",{className:"rdd-taskbar-item-preview-frame",style:{width:`${x*k}px`,height:`${w*k}px`},children:(0,h.jsx)("div",{ref:d,className:"rdd-taskbar-item-preview-host",style:{width:`${x}px`,height:`${w}px`,transform:`scale(${k})`,transformOrigin:"top left",position:"absolute",top:0,left:0,"--rdd-preview-scale":k}})})},br=({panelId:e,children:t})=>{let o=tt(),{requestClosePanel:r,setPanelDirty:d,registerCloseGuard:s,unregisterCloseGuard:T,registerStateProvider:b,unregisterStateProvider:P,updatePanelTitle:x,minimizePanel:w}=Ft(),c=o.minimized.some(v=>v.id===e),M=(0,Y.useRef)(c);(0,Y.useEffect)(()=>{let v=Ct.get(e);v&&(c&&!M.current?v.onMinimize.forEach(E=>E()):!c&&M.current&&v.onRestore.forEach(E=>E()),M.current=c)},[c,e]);let k=o.activePanelId===e,D=(0,Y.useRef)(k);(0,Y.useEffect)(()=>{let v=D.current;D.current=k;let E=Ct.get(e);E&&(k&&!v?E.onActivate.forEach(_=>_()):!k&&v&&E.onDeactivate.forEach(_=>_()))},[k,e]);let F=o.panels[e]?.state,g=F==="floating"?"floating-window":"dockable-panel",R=(0,Y.useRef)(g);(0,Y.useEffect)(()=>{if(F==="minimized")return;let v=R.current;R.current=g;let E=Ct.get(e);E&&g!==v&&E.onContainerTypeChange.forEach(_=>_(g))},[g,F,e]),(0,Y.useEffect)(()=>()=>{let v=Ct.get(e);v&&(D.current&&v.onDeactivate.forEach(E=>E()),v.onClose.forEach(E=>E()),Ct.delete(e))},[e]);let C=(0,Y.useRef)(g),W=Y.default.useMemo(()=>({requestClose:v=>r(e,v),setDirty:v=>d(e,v),onCloseRequested:v=>(s(e,v),()=>T(e)),registerStateProvider:v=>(b(e,v),()=>P(e)),setTitle:v=>x(e,v),instanceId:e,containerType:C.current,onClose:v=>{let E=Et(e);return E.onClose.add(v),()=>E.onClose.delete(v)},onMinimize:v=>{let E=Et(e);return E.onMinimize.add(v),()=>E.onMinimize.delete(v)},onRestore:v=>{let E=Et(e);return E.onRestore.add(v),()=>E.onRestore.delete(v)},onResize:v=>{let E=Et(e);return E.onResize.add(v),()=>E.onResize.delete(v)},requestMinimize:()=>w(e),getDimensions:()=>In.get(e)??null,onActivate:v=>{let E=Et(e);return E.onActivate.add(v),()=>E.onActivate.delete(v)},onDeactivate:v=>{let E=Et(e);return E.onDeactivate.add(v),()=>E.onDeactivate.delete(v)},onContainerTypeChange:v=>{let E=Et(e);return E.onContainerTypeChange.add(v),()=>E.onContainerTypeChange.delete(v)}}),[e,r,d,s,T,b,P,x,w]);return(0,h.jsx)(vt,{value:W,children:t})},co=({node:e,path:t,onTabRightClick:o,activeDropZone:r,onHoverDropZone:d,onTabDragStart:s,hoveredTab:T,onTabHover:b,defaultPanelIcon:P,onRequestClosePanel:x})=>{let{updateSplitSizes:w}=Ft();if(e.type==="leaf")return(0,h.jsx)(vr,{leaf:e,onTabRightClick:o,activeDropZone:r,onHoverDropZone:d,onTabDragStart:s,hoveredTab:T,onTabHover:b,defaultPanelIcon:P,onRequestClosePanel:x});let c=e.orientation==="horizontal",M=(k,D)=>{D.preventDefault();let F=D.currentTarget,g=F.parentElement,R=g?c?g.clientWidth:g.clientHeight:c?1e3:800;ft({element:F,pointerId:D.pointerId,startClientX:D.clientX,startClientY:D.clientY,captureStart:()=>[...e.sizes],activeClasses:[{el:F,classes:["rdd-active"]},{el:document.body,classes:["rdd-resizing-active",c?"rdd-resizing-col-active":"rdd-resizing-row-active"]}],onMove:(C,W,v)=>{let E=(c?C:W)/R,_=[...v];_[k]+=E,_[k+1]-=E,_[k]>.1&&_[k+1]>.1&&w(t,_)}})};return(0,h.jsx)("div",{style:{display:"flex",flexDirection:c?"row":"column",width:"100%",height:"100%",overflow:"hidden",position:"relative"},children:e.children.map((k,D)=>{let F=e.sizes[D]*100;return(0,h.jsxs)(Y.default.Fragment,{children:[(0,h.jsx)("div",{style:{flexGrow:e.sizes[D],flexBasis:`${F}%`,overflow:"hidden",position:"relative",minWidth:0,minHeight:0},children:(0,h.jsx)(co,{node:k,path:[...t,D],onTabRightClick:o,activeDropZone:r,onHoverDropZone:d,onTabDragStart:s,hoveredTab:T,onTabHover:b,defaultPanelIcon:P,onRequestClosePanel:x})}),D<e.children.length-1&&(0,h.jsx)("div",{onPointerDown:g=>M(D,g),style:{cursor:c?"col-resize":"row-resize",width:c?"1px":"100%",height:c?"100%":"1px",zIndex:20},className:"rdd-resizer-bar"})]},D)})})},vr=({leaf:e,onTabRightClick:t,activeDropZone:o,onHoverDropZone:r,onTabDragStart:d,hoveredTab:s,onTabHover:T,defaultPanelIcon:b,onRequestClosePanel:P})=>{let x=tt(),w=At(),{openPanel:c,closeLeafGroup:M,setActivePanel:k}=wn(),D=et(),F=nt(),{windowClass:g,windowBodyClass:R}=pt(),C=(0,Y.useRef)(null),[W,v]=(0,Y.useState)({left:!1,right:!1}),E=(0,Y.useCallback)(()=>{let u=C.current;u&&v({left:u.scrollLeft>0,right:u.scrollLeft<u.scrollWidth-u.clientWidth-1})},[]);(0,Y.useEffect)(()=>{let u=C.current;if(!u)return;u.addEventListener("scroll",E,{passive:!0});let N=new ResizeObserver(E);return N.observe(u),E(),()=>{u.removeEventListener("scroll",E),N.disconnect()}},[E]);let _=u=>{C.current?.scrollBy({left:u==="left"?-120:120,behavior:"smooth"})},z=u=>{c(u,x.panels[u].component),k(u)};return(0,h.jsxs)("div",{"data-active-panel-id":e.activePanelId||"",className:`rdd-workspace-panel ${g??""}`,style:{overflow:"hidden",position:"relative"},children:[(0,h.jsxs)("div",{className:"rdd-workspace-tab-bar",style:{minHeight:"38px"},children:[W.left&&(0,h.jsx)("button",{className:"rdd-tab-scroll-btn rdd-tab-scroll-btn-left",onPointerDown:u=>u.stopPropagation(),onClick:()=>_("left"),tabIndex:-1,"aria-label":"Scroll tabs left",children:"\u2039"}),(0,h.jsx)("div",{ref:C,className:"rdd-tab-headers-container",style:{scrollbarWidth:"none"},onPointerMove:u=>{x.draggedPanelId&&u.target===u.currentTarget&&T(e.id,"EMPTY",e.panels.length,"right")},onPointerLeave:u=>{x.draggedPanelId&&u.target===u.currentTarget&&T(e.id,"",-1,null)},children:e.panels.map((u,N)=>{let A=x.panels[u];if(!A)return null;let K=e.activePanelId===u,U=x.activePanelId===u,ne=w.get(A.component)?.defaultOptions,ve=s&&s.leafId===e.id&&s.panelId===u,ie=N===e.panels.length-1,V=s&&s.leafId===e.id&&s.panelId==="EMPTY"&&ie,J=ve?s.side==="left"?"rdd-drag-hover-left":"rdd-drag-hover-right":V?"rdd-drag-hover-right":"",X=K?U?"rdd-active rdd-workspace-tab-active-focused":"rdd-active rdd-workspace-tab-active-unfocused":"rdd-workspace-tab-inactive";return(0,h.jsxs)("div",{"data-tab-id":u,"data-leaf-id":e.id,"data-tab-index":String(N),onClick:()=>z(u),onPointerDown:G=>{ne?.canDrag!==!1&&d(u,G)},onContextMenu:G=>t(u,G),onPointerMove:G=>{if(x.draggedPanelId&&G.pointerType!=="touch"){let le=G.currentTarget.getBoundingClientRect(),Oe=G.clientX-le.left<le.width/2?"left":"right";T(e.id,u,N,Oe)}},onPointerLeave:()=>{x.draggedPanelId&&T(e.id,"",-1,null)},className:`rdd-workspace-tab ${X} ${J}`,style:{cursor:ne?.canDrag===!1?"default":"pointer"},children:[(0,h.jsxs)("span",{className:"rdd-text-truncate",style:{maxWidth:"120px",display:"flex",alignItems:"center"},children:[(0,h.jsx)("span",{className:"rdd-workspace-tab-icon",children:ne?.icon||b||En}),(0,h.jsxs)("span",{children:[ge(A.title,D),A.dirty?" *":""]})]}),ne?.renderHeaderActions&&(0,h.jsx)("span",{className:"rdd-tab-header-actions",onClick:G=>G.stopPropagation(),onPointerDown:G=>G.stopPropagation(),children:ne.renderHeaderActions(u)}),ne?.canClose!==!1&&(0,h.jsx)("span",{onClick:G=>{G.stopPropagation(),P(u)},title:ge(F.closeTab,D),className:"rdd-close-tab-x",style:{width:"18px",height:"18px",...ne?.renderHeaderActions?{}:{marginInlineStart:"auto"}},children:(0,h.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,h.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]},u)})}),W.right&&(0,h.jsx)("button",{className:"rdd-tab-scroll-btn rdd-tab-scroll-btn-right",onPointerDown:u=>u.stopPropagation(),onClick:()=>_("right"),tabIndex:-1,"aria-label":"Scroll tabs right",children:"\u203A"}),e.panels.length===0&&e.keepOnEmpty&&e.canClose!==!1&&(0,h.jsx)("span",{onClick:()=>M(e.id),className:"rdd-close-tab-x rdd-header-close-empty-group",style:{width:"18px",height:"18px",cursor:"pointer"},title:ge(F.closeEmptyGroup,D),children:(0,h.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,h.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),(0,h.jsxs)("div",{className:`rdd-panel-body ${R??""}`,style:{position:"relative",overflow:"hidden"},children:[e.activePanelId&&x.panels[e.activePanelId]?(0,h.jsx)(lo,{panelId:e.activePanelId},e.activePanelId):(0,h.jsx)("div",{className:"rdd-empty-leaf-placeholder",children:(0,h.jsx)("span",{children:"Empty Workspace Section"})}),x.draggedPanelId!==null&&(()=>{let u=N=>o?.leafId===e.id&&o.position===N;return(0,h.jsx)("div",{className:"rdd-dock-drop-zone-overlay",children:(0,h.jsxs)("div",{className:"rdd-dock-target-cross",children:[(0,h.jsx)("div",{"data-leaf-id":e.id,"data-drop-zone":"top",onPointerEnter:()=>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"}),(0,h.jsx)("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"}),(0,h.jsx)("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"}),(0,h.jsx)("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"}),(0,h.jsx)("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"})]})})})(),x.draggedPanelId!==null&&o!==null&&o.leafId===e.id&&(0,h.jsx)("div",{className:"rdd-dock-preview-highlight",style:(()=>{let u=o.position,N=`${x.splitRatio*100}%`,A=`${(1-x.splitRatio)*100}%`;return{left:u==="right"?A:"0",top:u==="bottom"?A:"0",width:u==="left"||u==="right"?N:"100%",height:u==="top"||u==="bottom"?N:"100%"}})()})]})]})},yr=({skin:e="vscode",defaultPanelIcon:t,taskbarVisibility:o="autohide",contextMenuAdapter:r=kt,animations:d=!0})=>{let s=tt(),T=At(),{restorePanel:b,minimizePanel:P,requestClosePanel:x,maximizePanel:w,updateFloatingPosition:c,focusPanel:M,floatPanel:k,setDraggedPanelId:D,dockPanelToGroup:F,movePanelOrder:g,dockPanelToWorkspaceEdge:R,setActivePanel:C,getPanelContextMenuItems:W,showContextMenu:v,registerContextMenuFn:E}=wn(),{openModal:_}=Pt(),z=et(),u=nt(),N=Y.default.useCallback(n=>{let l=s.panels[n];x(n,{onConfirm:a=>new Promise(m=>{let I=a||l?.dirtyOptions,L=l?ge(l.title,z):"Panel";_(xt,{title:I?.title||u.unsavedChangesTitle,message:I?.message||{id:u.unsavedChangesMessage.id,defaultMessage:u.unsavedChangesMessage.defaultMessage,values:{title:L}},alert:I?.alert,alertType:I?.alertType||"danger",useYesNoTitles:!0,onOK:()=>m(!0),onCancel:()=>m(!1)},{size:"small"})})})},[x,s.panels,z,_,u]),{windowClass:A,windowBodyClass:K}=pt(),U=(0,Y.useContext)(Ht),ee=(0,Y.useRef)(null);(0,Y.useEffect)(()=>E(U!==null?n=>U.show(n):n=>ee.current?.show(n)),[U,E]);let ne=(0,Y.useRef)(null),[ve,ie]=(0,Y.useState)(!1),V=(0,Y.useRef)(null),J=(0,Y.useRef)(s.minimized.length),[X,G]=(0,Y.useState)(null),le=(0,Y.useRef)(null),be=(0,Y.useRef)("mouse"),[Oe,q]=(0,Y.useState)(!1),Be=U!==null?U.isOpen:Oe;(0,Y.useEffect)(()=>()=>{le.current&&clearTimeout(le.current)},[]),(0,Y.useEffect)(()=>{X&&(s.minimized.some(l=>l.id===X.id)||G(null))},[s.minimized,X]),(0,Y.useEffect)(()=>{if(!X?.fromTouch)return;let n=l=>{l.pointerType!=="touch"||document.querySelector(".rdd-taskbar-item-tooltip")?.contains(l.target)||G(null)};return document.addEventListener("pointerdown",n,{capture:!0}),()=>document.removeEventListener("pointerdown",n,{capture:!0})},[X?.fromTouch]);let[Ze,Ue]=(0,Y.useState)(null),Ve=(0,Y.useRef)(null),[at,lt]=(0,Y.useState)({x:0,y:0}),[dt,it]=(0,Y.useState)(null),st=(0,Y.useRef)(null),Te=n=>{it(n),st.current=n},[se,pe]=(0,Y.useState)(null),Xe=(0,Y.useRef)(null),Ge=n=>{pe(n),Xe.current=n},j=(0,Y.useContext)(Ot)?.isRtl??!1,[te,ce]=(0,Y.useState)(null),ye=(0,Y.useRef)(null),ke=(n,l,a,m)=>{let I=m?{leafId:n,panelId:l,index:a,side:m}:null;ce(I),ye.current=I},Ee=(n,l)=>{let a=l?{leafId:n,position:l}:null;Ue(a),Ve.current=a,a&&(Te(null),Ge(null))},Ae=(n,l)=>{let a=document.elementsFromPoint(n,l),m=!1,I=!1,L=!1;for(let y of a)if(y instanceof HTMLElement){if(!m&&y.dataset.dropZone){let S=y.dataset.leafId;if(S){let $=y.dataset.dropZone;Ue({leafId:S,position:$}),Ve.current={leafId:S,position:$},m=!0}}if(!L&&y.dataset.tabId){let S=y.dataset.leafId,$=parseInt(y.dataset.tabIndex||"0",10);if(S){let Z=y.getBoundingClientRect(),B=n-Z.left<Z.width/2?"left":"right";ce({leafId:S,panelId:y.dataset.tabId,index:$,side:B}),ye.current={leafId:S,panelId:y.dataset.tabId,index:$,side:B},L=!0}}if(!I&&y.dataset.edgeTrigger&&(Te(y.dataset.edgeTrigger),I=!0),m&&I&&L)break}m||(Ue(null),Ve.current=null),I||Te(null),L||(ce(null),ye.current=null)},Ie=300,Le=8,Me=()=>{D(null),Ue(null),Ve.current=null,ce(null),ye.current=null,Te(null)},ut=n=>s.isRtl?n==="left"?"right":n==="right"?"left":n:n,Ne=(n,l)=>{let a=Ve.current,m=ye.current,I=st.current,L=Xe.current;if(I)R(n,ut(I));else if(m){let y=m.index;m.side==="right"&&(y+=1);let S=so(s.gridRoot,m.leafId);if(S){let $=S.panels.indexOf(n);$!==-1&&$<y&&(y-=1)}g(n,m.leafId,y)}else a?F(n,a.leafId,ut(a.position)):L?k(n,void 0,j?jt(L):L):k(n,{x:l.clientX-150,y:l.clientY-15,width:450,height:350});Ge(null),Me()},ze=(n,l)=>{if(l.pointerType==="mouse"&&l.button!==0)return;l.preventDefault();let a=l.currentTarget,m=l.clientX,I=l.clientY;if(l.pointerType==="touch"){let L=l.pointerId,y=!1,S=()=>{y=!0,clearTimeout(Z),a.removeEventListener("pointermove",$),a.removeEventListener("pointerup",S),a.removeEventListener("pointercancel",S)},$=B=>{Math.hypot(B.clientX-m,B.clientY-I)>Le&&S()},Z=setTimeout(()=>{if(y)return;a.removeEventListener("pointermove",$),a.removeEventListener("pointerup",S),a.removeEventListener("pointercancel",S);try{a.setPointerCapture(L)}catch{return}a.classList.add("rdd-long-press-active"),document.body.classList.add("rdd-dragging-active"),navigator.vibrate&&navigator.vibrate(10);let B=!1,Q=Re=>{B||(B=!0,D(n)),lt({x:Re.clientX,y:Re.clientY}),Ae(Re.clientX,Re.clientY)},ae=Re=>{a.classList.remove("rdd-long-press-active"),document.body.classList.remove("rdd-dragging-active"),a.removeEventListener("pointermove",Q),a.removeEventListener("pointerup",ae),a.removeEventListener("pointercancel",de),B?Ne(n,Re):Fe(n,Re)},de=()=>{a.classList.remove("rdd-long-press-active"),document.body.classList.remove("rdd-dragging-active"),a.removeEventListener("pointermove",Q),a.removeEventListener("pointerup",ae),a.removeEventListener("pointercancel",de),B&&Me()};a.addEventListener("pointermove",Q),a.addEventListener("pointerup",ae),a.addEventListener("pointercancel",de)},Ie);a.addEventListener("pointermove",$),a.addEventListener("pointerup",S),a.addEventListener("pointercancel",S)}else{let L=!1,y=Z=>{let B=Z.clientX-m,Q=Z.clientY-I;!L&&(Math.abs(B)>5||Math.abs(Q)>5)&&(L=!0,D(n)),L&<({x:Z.clientX,y:Z.clientY})},S=Z=>{document.body.classList.remove("rdd-dragging-active"),window.removeEventListener("pointermove",y),window.removeEventListener("pointerup",S),window.removeEventListener("pointercancel",$),L&&Ne(n,Z)},$=()=>{document.body.classList.remove("rdd-dragging-active"),window.removeEventListener("pointermove",y),window.removeEventListener("pointerup",S),window.removeEventListener("pointercancel",$),L&&Me()};document.body.classList.add("rdd-dragging-active"),window.addEventListener("pointermove",y),window.addEventListener("pointerup",S),window.addEventListener("pointercancel",$)}},Fe=(n,l)=>{l.preventDefault();let a=s.panels[n];if(!a)return;let I=T.get(a.component)?.defaultOptions,L=[];if(I?.canDrag!==!1&&L.push({label:ge(u.floatWindow,z),icon:Bt.float,action:()=>k(n)}),I?.canMinimize!==!1&&L.push({label:ge(u.minimizePanel,z),icon:Bt.minimize,action:()=>P(n)}),L.length>0&&I?.canClose!==!1&&L.push({separator:!0}),I?.canClose!==!1&&L.push({label:ge(u.closeTab,z),icon:Bt.close,action:()=>N(n)}),L.length===0)return;let y=W(n),S=y.length>0?[...L,{separator:!0},...y]:L;v({event:l,items:S})},De=(n,l)=>{l.preventDefault(),G(null),v({event:l,items:[{label:ge(u.restorePanel,z),icon:Bt.restore,action:()=>b(n)},{label:ge(u.maximizePanel,z),icon:Bt.maximize,action:()=>w(n)},{separator:!0},{label:ge(u.closePanel,z),icon:Bt.close,action:()=>N(n)}]})};(0,Y.useEffect)(()=>{let n=Object.keys(s.panels);for(let l of Array.from(Zt.keys()))n.includes(l)||Zt.delete(l)},[s.panels]),(0,Y.useEffect)(()=>{let n=()=>{s.draggedPanelId!==null&&(D(null),Ue(null),ce(null))};return window.addEventListener("blur",n),()=>{window.removeEventListener("blur",n)}},[s.draggedPanelId]);let Je=(0,Y.useRef)(null),[We,Rt]=(0,Y.useState)({width:1024,height:768});(0,Y.useEffect)(()=>{let n=Je.current;if(!n)return;let l=!1,a=new ResizeObserver(m=>{if(!m||m.length===0)return;let I=m[0].contentRect;if(process.env.NODE_ENV==="development"&&I.height<10&&!l){l=!0;let L=n,y=n.parentElement;for(;y&&y!==document.documentElement&&y.getBoundingClientRect().height<10;){L=y;y=y.parentElement}let S=L.tagName.toLowerCase(),$=L.id?` id="${L.id}"`:"",Z=L.className?` class="${L.className}"`:"",B=L===n?"the WindowManager container itself":`a wrapper element: <${S}${$}${Z}>`;console.warn(`[react-dockable-desktop] Workspace height is 0px \u2014 the workspace will be invisible.
|
|
6
6
|
|
|
7
|
-
Zero height found at: ${
|
|
7
|
+
Zero height found at: ${B}
|
|
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.`)}Gt({width:Math.max(100,p.width),height:Math.max(100,p.height)})});return f.observe(r),()=>{f.disconnect()}},[]),(0,X.useEffect)(()=>{let r=He.width,y=He.height;s.floating.forEach(f=>{let b=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=b,Y=p,oe=z,K=N,le=!1;if(W>r&&(W=Math.max(200,r-20),le=!0),Y>y&&(Y=Math.max(150,y-40),le=!0),!f.anchor){let he=r-100;oe>he&&(oe=Math.max(0,he),le=!0);let de=y-40;K>de&&(K=Math.max(0,de),le=!0)}le&&c(f.id,{x:oe,y:K,width:W,height:Y})})},[He,s.floating,c]),(0,X.useEffect)(()=>{let r=y=>{if(y.button!==0)return;let f=y.target;if(!f||typeof f.closest!="function")return;let b=f.closest(".rdd-floating-window");if(b){let z=b.getAttribute("data-window-id");z&&(x(z),k(z));return}let p=f.closest(".rdd-workspace-panel");if(p){let z=p.getAttribute("data-active-panel-id");z&&x(z)}};return document.addEventListener("pointerdown",r),()=>{document.removeEventListener("pointerdown",r)}},[k,x]);let Yt=(r,y)=>{y.preventDefault();let f=s.floating.find(K=>K.id===r);if(!f||f.maximized)return;k(r);let b=y.currentTarget,p=b.closest(".rdd-floating-window"),z=y.clientX,N=y.clientY,W=p?p.offsetLeft:0,Y=p?p.offsetTop:0,oe=()=>{let K=Ke.current,le=xe.current,he=st.current,de=Ve.current;if(de)c(r,{anchor:U?qt(de):de});else if(he)w(r,ct(he));else if(le){let ge=le.index;le.side==="right"&&(ge+=1),u(r,le.leafId,ge)}else K&&H(r,K.leafId,ct(K.position));Xe(null),Te()};if(y.pointerType==="touch"){let K=y.pointerId,le=!1,he=()=>{le=!0,clearTimeout(ge),b.removeEventListener("pointermove",de),b.removeEventListener("pointerup",he),b.removeEventListener("pointercancel",he)},de=be=>{Math.hypot(be.clientX-z,be.clientY-N)>ze&&he()},ge=setTimeout(()=>{if(le)return;b.removeEventListener("pointermove",de),b.removeEventListener("pointerup",he),b.removeEventListener("pointercancel",he);try{b.setPointerCapture(K)}catch{return}b.classList.add("rdd-long-press-active"),document.body.classList.add("rdd-dragging-active"),A(r);let be=It=>{let Et=It.clientX-z,Lt=It.clientY-N;c(r,{x:W+Et,y:Y+Lt,anchor:null}),Ae(It.clientX,It.clientY)},De=()=>{b.classList.remove("rdd-long-press-active"),document.body.classList.remove("rdd-dragging-active"),b.removeEventListener("pointermove",be),b.removeEventListener("pointerup",De),b.removeEventListener("pointercancel",wt),oe()},wt=()=>{b.classList.remove("rdd-long-press-active"),document.body.classList.remove("rdd-dragging-active"),b.removeEventListener("pointermove",be),b.removeEventListener("pointerup",De),b.removeEventListener("pointercancel",wt),Te()};b.addEventListener("pointermove",be),b.addEventListener("pointerup",De),b.addEventListener("pointercancel",wt)},Le);b.addEventListener("pointermove",de),b.addEventListener("pointerup",he),b.addEventListener("pointercancel",he)}else{let K=!1,le=ge=>{let be=ge.clientX-z,De=ge.clientY-N;!K&&(Math.abs(be)>5||Math.abs(De)>5)&&(K=!0,A(r)),K&&c(r,{x:W+be,y:Y+De,anchor:null})},he=()=>{document.body.classList.remove("rdd-dragging-active"),window.removeEventListener("pointermove",le),window.removeEventListener("pointerup",he),window.removeEventListener("pointercancel",de),K&&oe()},de=()=>{document.body.classList.remove("rdd-dragging-active"),window.removeEventListener("pointermove",le),window.removeEventListener("pointerup",he),window.removeEventListener("pointercancel",de),K&&Te()};document.body.classList.add("rdd-dragging-active"),window.addEventListener("pointermove",le),window.addEventListener("pointerup",he),window.addEventListener("pointercancel",de)}},i=(r,y,f)=>{f.preventDefault(),f.stopPropagation();let b=s.floating.find(be=>be.id===r);if(!b||b.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=He.width,Y=He.height,oe=typeof b.x=="string"?parseFloat(b.x):b.x,K=typeof b.y=="string"?parseFloat(b.y):b.y,le=typeof b.width=="string"?parseFloat(b.width):b.width,he=typeof b.height=="string"?parseFloat(b.height):b.height,de=y==="se"&&Math.abs(oe+le-W)<4,ge=y==="se"&&Math.abs(K+he-Y)<4;ft({element:p,pointerId:f.pointerId,startClientX:f.clientX,startClientY:f.clientY,captureStart:()=>N,activeClasses:[{el:document.body,classes:["rdd-resizing-active"]}],onMove:(be,De,wt)=>{let It=_t(y,be,De,wt,{minW:200,minH:150}),{x:Et,y:Lt,w:vn,h:yn}=It;de&&(Et=W-vn,Et<0&&(Et=0,vn=W)),ge&&(Lt=Y-yn,Lt<0&&(Lt=0,yn=Y)),c(r,{x:Et,y:Lt,width:vn,height:yn})}})},v=r=>{if(ne.current){let y=r==="left"?-150:150;ne.current.scrollBy({left:y,behavior:"smooth"})}},g=(0,X.useCallback)(()=>{V.current&&clearTimeout(V.current),se(!0)},[]),d=(0,X.useCallback)(()=>{V.current=setTimeout(()=>se(!1),400)},[]);(0,X.useEffect)(()=>{n==="autohide"&&s.minimized.length>J.current&&(V.current&&clearTimeout(V.current),se(!0),V.current=setTimeout(()=>se(!1),2e3)),J.current=s.minimized.length},[s.minimized.length,n]);let L=cn();return(0,X.useEffect)(()=>(e?document.documentElement.setAttribute("data-workspace-skin",e):document.documentElement.removeAttribute("data-workspace-skin"),()=>{document.documentElement.removeAttribute("data-workspace-skin")}),[e]),(0,X.useEffect)(()=>(L==="light"?document.documentElement.setAttribute("data-color-scheme","light"):document.documentElement.removeAttribute("data-color-scheme"),()=>{document.documentElement.removeAttribute("data-color-scheme")}),[L]),(0,X.useEffect)(()=>(a?document.documentElement.classList.remove("rdd-no-animations"):document.documentElement.classList.add("rdd-no-animations"),()=>{document.documentElement.classList.remove("rdd-no-animations")}),[a]),(0,m.jsxs)("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:[(0,m.jsxs)("div",{ref:qe,className:s.draggedPanelId?"rdd-dragging-active":void 0,style:{flexGrow:1,width:"100%",position:"relative",overflow:"hidden"},children:[s.draggedPanelId!==null&&(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)("div",{"data-edge-trigger":"left",className:"rdd-workspace-edge-trigger rdd-edge-trigger-left",onPointerEnter:()=>ke("left"),onPointerLeave:()=>ke(null)}),(0,m.jsx)("div",{"data-edge-trigger":"right",className:"rdd-workspace-edge-trigger rdd-edge-trigger-right",onPointerEnter:()=>ke("right"),onPointerLeave:()=>ke(null)}),(0,m.jsx)("div",{"data-edge-trigger":"top",className:"rdd-workspace-edge-trigger rdd-edge-trigger-top",onPointerEnter:()=>ke("top"),onPointerLeave:()=>ke(null)}),(0,m.jsx)("div",{"data-edge-trigger":"bottom",className:"rdd-workspace-edge-trigger rdd-edge-trigger-bottom",onPointerEnter:()=>ke("bottom"),onPointerLeave:()=>ke(null)})]}),s.draggedPanelId!==null&&["top-left","top-right","bottom-left","bottom-right"].map(r=>(0,m.jsx)("div",{className:`rdd-corner-zone rdd-corner-zone--${r}${ae===r?" rdd-corner-zone--hovered":""}`,onPointerEnter:()=>{Xe(r),ke(null)},onPointerLeave:()=>Xe(null),"aria-hidden":"true"},r)),s.draggedPanelId!==null&&dt!==null&&(0,m.jsx)("div",{className:"rdd-workspace-edge-preview",style:(()=>{let r=`${s.edgeSplitRatio*100}%`;switch(dt){case"left":return{left:0,top:0,bottom:0,width:r};case"right":return{right:0,top:0,bottom:0,width:r};case"top":return{top:0,left:0,right:0,height:r};case"bottom":return{bottom:0,left:0,right:0,height:r}}})()}),(0,m.jsx)("div",{style:{width:"100%",height:"100%",overflow:"hidden",position:"relative"},children:s.gridRoot?(0,m.jsx)(lo,{node:s.gridRoot,path:[],onTabRightClick:_e,activeDropZone:Je,onHoverDropZone:Ee,onTabDragStart:Fe,hoveredTab:te,onTabHover:Ie,defaultPanelIcon:t,onRequestClosePanel:E}):(0,m.jsx)("div",{className:"rdd-empty-workspace-grid",children:"Grid Empty"})}),s.floating.map(r=>{let y=s.panels[r.id];if(!y)return null;let f=r.maximized,b=s.draggedPanelId===r.id,p=s.activePanelId===r.id,N=I.get(y.component)?.defaultOptions;return(0,m.jsxs)("div",{"data-window-id":r.id,dir:s.dir,onPointerDownCapture:()=>{x(r.id),k(r.id)},className:`rdd-floating-window ${f?"rdd-maximized":""} ${p?"rdd-window-focused":""} ${_??""}`,style:(()=>{let oe=typeof r.width=="number"?`${r.width}px`:r.width,K=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:b?"none":"auto"};if(r.anchor){let le=s.floating.filter(De=>De.anchor===r.anchor&&!De.maximized),he=le.findIndex(De=>De.id===r.id),de=8;for(let De=0;De<he;De++){let wt=typeof le[De].height=="number"?le[De].height:parseFloat(le[De].height);de+=wt+8}let ge=r.anchor.startsWith("top");return{position:"absolute",[r.anchor.endsWith("-right")?"insetInlineEnd":"insetInlineStart"]:8,[ge?"top":"bottom"]:de,width:oe,height:K,zIndex:r.z,transition:b?"none":"top 0.2s ease, bottom 0.2s ease",pointerEvents:b?"none":"auto"}}return{position:"absolute",left:typeof r.x=="number"?`${r.x}px`:r.x,top:typeof r.y=="number"?`${r.y}px`:r.y,width:oe,height:K,zIndex:r.z,pointerEvents:b?"none":"auto"}})(),children:[(0,m.jsxs)("div",{onDoubleClick:()=>R(r.id),onPointerDown:W=>{N?.canDrag!==!1&&Yt(r.id,W)},className:"rdd-floating-window-titlebar rdd-cursor-move",style:{cursor:f||N?.canDrag===!1?"default":"move"},children:[(0,m.jsxs)("span",{className:"rdd-floating-window-title",children:[(0,m.jsx)("span",{className:"rdd-window-title-icon",children:N?.icon||t||kn}),(0,m.jsxs)("span",{children:[me(y.title,D),y.dirty?" *":""]})]}),(0,m.jsxs)("div",{className:"rdd-titlebar-actions",style:{gap:"var(--rdd-header-button-gap, 4px)"},onPointerDown:W=>W.stopPropagation(),children:[N?.renderHeaderActions&&(0,m.jsx)("div",{className:"rdd-window-header-actions",children:N.renderHeaderActions(r.id)}),O(r.id).length>0&&(0,m.jsx)("button",{type:"button",className:"rdd-custom-tab-btn rdd-btn-more-actions",title:"More actions",onClick:W=>{W.stopPropagation();let Y=O(r.id);Y.length!==0&&h({event:W,items:Y})},children:(0,m.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"currentColor",style:{display:"block"},children:[(0,m.jsx)("circle",{cx:"12",cy:"5",r:"2"}),(0,m.jsx)("circle",{cx:"12",cy:"12",r:"2"}),(0,m.jsx)("circle",{cx:"12",cy:"19",r:"2"})]})}),(0,m.jsx)("button",{type:"button",title:f?me(l.restoreSize,D):me(l.maximize,D),onClick:()=>R(r.id),className:"rdd-custom-tab-btn rdd-btn-maximize-tab",children:(0,m.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,m.jsx)("rect",{x:"4",y:"4",width:"16",height:"16",rx:"1.5"})})}),N?.canMinimize!==!1&&(0,m.jsx)("button",{type:"button",title:me(l.minimize,D),onClick:()=>C(r.id),className:"rdd-custom-tab-btn rdd-btn-minimize-tab",children:(0,m.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"3",children:(0,m.jsx)("path",{d:"M5 12h14"})})}),N?.canClose!==!1&&(0,m.jsx)("button",{type:"button",title:me(l.close,D),onClick:()=>E(r.id),className:"rdd-custom-tab-btn rdd-btn-close-tab",children:(0,m.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"3",children:(0,m.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]})]}),(0,m.jsx)("div",{className:q??void 0,style:{flexGrow:1,width:"100%",overflow:"hidden",position:"relative",isolation:"isolate"},children:(0,m.jsx)(ao,{panelId:r.id},r.id)}),!f&&(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)("div",{onPointerDown:W=>i(r.id,"n",W),className:"rdd-resize-handle rdd-resize-n"}),(0,m.jsx)("div",{onPointerDown:W=>i(r.id,"ne",W),className:"rdd-resize-handle rdd-resize-ne"}),(0,m.jsx)("div",{onPointerDown:W=>i(r.id,"e",W),className:"rdd-resize-handle rdd-resize-e"}),(0,m.jsx)("div",{onPointerDown:W=>i(r.id,"se",W),className:"rdd-resize-handle rdd-resize-se"}),(0,m.jsx)("div",{onPointerDown:W=>i(r.id,"s",W),className:"rdd-resize-handle rdd-resize-s"}),(0,m.jsx)("div",{onPointerDown:W=>i(r.id,"sw",W),className:"rdd-resize-handle rdd-resize-sw"}),(0,m.jsx)("div",{onPointerDown:W=>i(r.id,"w",W),className:"rdd-resize-handle rdd-resize-w"}),(0,m.jsx)("div",{onPointerDown:W=>i(r.id,"nw",W),className:"rdd-resize-handle rdd-resize-nw"})]})]},r.id)})]}),(n==="always"||s.minimized.length>0)&&(0,m.jsxs)("div",{className:["rdd-taskbar-footer-container",`rdd-taskbar-mode-${n}`,n==="autohide"&&Pe?"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"&&(0,m.jsx)("div",{className:"rdd-taskbar-peek-handle"}),(0,m.jsx)("button",{type:"button",onClick:()=>v("left"),className:"rdd-taskbar-nav-btn",style:{display:s.minimized.length>4?"block":"none"},children:"\u25C0"}),(0,m.jsx)("div",{ref:ne,className:"rdd-taskbar-items-container",style:{scrollSnapType:"x mandatory"},children:s.minimized.map(r=>{let f=I.get(r.component)?.defaultOptions?.icon||t||kn;return(0,m.jsx)("div",{onClick:()=>{we.current!=="touch"&&(G(null),S(r.id))},onContextMenu:b=>Ne(r.id,b),onPointerDown:b=>{if(we.current=b.pointerType,b.pointerType!=="touch")return;let p=b.currentTarget,z=b.clientX,N=b.clientY,W=b.pointerId,Y=!1,oe=()=>{Y=!0,clearTimeout(he),p.removeEventListener("pointermove",le),p.removeEventListener("pointerup",K),p.removeEventListener("pointercancel",oe)},K=()=>{oe();let de=p.getBoundingClientRect();j?.id===r.id?(S(r.id),G(null)):G({id:r.id,rect:de,title:r.title,component:r.component,fromTouch:!0})},le=de=>{Math.hypot(de.clientX-z,de.clientY-N)>ze&&oe()},he=setTimeout(()=>{if(Y)return;p.removeEventListener("pointermove",le),p.removeEventListener("pointerup",K),p.removeEventListener("pointercancel",oe);try{p.setPointerCapture(W)}catch{return}navigator.vibrate&&navigator.vibrate(10);let de=ge=>{p.removeEventListener("pointerup",de),p.removeEventListener("pointercancel",de),Ne(r.id,ge)};p.addEventListener("pointerup",de),p.addEventListener("pointercancel",de)},Le);p.addEventListener("pointermove",le),p.addEventListener("pointerup",K),p.addEventListener("pointercancel",oe)},onPointerEnter:b=>{if(b.pointerType==="touch"||Ye)return;ce.current&&clearTimeout(ce.current);let p=b.currentTarget.getBoundingClientRect();b.clientX>=p.left&&b.clientX<=p.right&&b.clientY>=p.top&&b.clientY<=p.bottom&&G({id:r.id,rect:p,title:r.title,component:r.component})},onPointerLeave:b=>{b.pointerType!=="touch"&&(ce.current=setTimeout(()=>{G(null)},150))},className:"rdd-taskbar-glassmorphic-item",style:{backdropFilter:"blur(6px)",transition:"all 0.2s",cursor:"pointer",scrollSnapAlign:"start",width:"38px",height:"38px",position:"relative",padding:0},children:(0,m.jsx)("span",{className:"rdd-taskbar-item-icon",children:f})},r.id)})}),j&&(0,Tn.createPortal)((0,m.jsxs)("div",{className:"rdd-taskbar-item-tooltip",dir:s.dir,style:{position:"fixed",left:`${j.rect.left+j.rect.width/2}px`,top:`${j.rect.top-8}px`,transform:"translateX(-50%) translateY(-100%)",opacity:1,pointerEvents:"auto",zIndex:999999},onPointerEnter:()=>{ce.current&&clearTimeout(ce.current)},onPointerLeave:r=>{r.pointerType!=="touch"&&G(null)},onClick:()=>{S(j.id),G(null)},onContextMenu:r=>Ne(j.id,r),onPointerDown:r=>{if(r.pointerType!=="touch")return;let y=j.id,f=r.currentTarget,b=r.clientX,p=r.clientY,z=r.pointerId,N=!1,W=()=>{N=!0,clearTimeout(oe),f.removeEventListener("pointermove",Y),f.removeEventListener("pointerup",W),f.removeEventListener("pointercancel",W)},Y=K=>{Math.hypot(K.clientX-b,K.clientY-p)>ze&&W()},oe=setTimeout(()=>{if(N)return;f.removeEventListener("pointermove",Y),f.removeEventListener("pointerup",W),f.removeEventListener("pointercancel",W);try{f.setPointerCapture(z)}catch{return}navigator.vibrate&&navigator.vibrate(10);let K=le=>{f.removeEventListener("pointerup",K),f.removeEventListener("pointercancel",K),Ne(y,le)};f.addEventListener("pointerup",K),f.addEventListener("pointercancel",K)},Le);f.addEventListener("pointermove",Y),f.addEventListener("pointerup",W),f.addEventListener("pointercancel",W)},children:[(0,m.jsxs)("div",{className:"rdd-tooltip-header-row",children:[(0,m.jsxs)("span",{className:"rdd-tooltip-title-text rdd-text-truncate",style:{maxWidth:"140px"},children:[me(j.title,D),s.panels[j.id]?.dirty?" *":""]}),(0,m.jsx)("span",{onClick:r=>{r.stopPropagation(),E(j.id),G(null)},title:me(l.closePanel,D),className:"rdd-tooltip-close-x",children:(0,m.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,m.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),(0,m.jsx)(mr,{panelId:j.id})]}),document.body),(0,m.jsx)("button",{type:"button",onClick:()=>v("right"),className:"rdd-taskbar-nav-btn",style:{display:s.minimized.length>4?"block":"none"},children:"\u25B6"})]}),Object.keys(s.panels).map(r=>{let y=s.panels[r];if(!y)return null;let f=so(r);return(0,Tn.createPortal)((0,m.jsx)(hr,{panelId:r,children:(0,m.jsx)("div",{style:{width:"100%",height:"100%"},dir:s.dir,children:fr(r,y,I)})}),f,r)}),Q===null&&(0,m.jsx)(o.Component,{ref:ee,theme:"dark",formatMessageProvider:D,onShow:()=>Z(!0),onHide:()=>Z(!1)}),s.draggedPanelId!==null&&!s.floating.some(r=>r.id===s.draggedPanelId)&&(0,m.jsxs)("div",{className:"rdd-drag-ghost-tab",style:{left:at.x+12,top:at.y+12,zIndex:1e5},children:["\u{1F4C4} ",me(s.panels[s.draggedPanelId]?.title,D)||"Tab"]})]})},co=vr;var pn=class{registry;initialState;config;_actions=null;_initialized=!1;_pendingCalls=[];_pendingOpenPanelIds=new Set;_pendingSubscriptions=[];_disconnectedWarnTimer=null;constructor(t={}){if(this.registry=new Mt,this.initialState=t.initialState??null,this.config={formatMessage:t.formatMessage,predefinedMessages:t.predefinedMessages,dir:t.dir,defaultSplitRatio:t.defaultSplitRatio,defaultEdgeSplitRatio:t.defaultEdgeSplitRatio,zIndexBase:t.zIndexBase},t.panels)for(let[n,o]of Object.entries(t.panels))this.registry.register(n,o.component,o.defaultOptions)}_connect(t){this._actions=t,this._disconnectedWarnTimer!==null&&(clearTimeout(this._disconnectedWarnTimer),this._disconnectedWarnTimer=null),this._initialized||(this._initialized=!0);for(let o of this._pendingSubscriptions)o.unsub=t.subscribe(o.event,o.callback);let n=this._pendingCalls.splice(0);for(let o of n)o(t)}_disconnect(){this._actions=null;for(let t of this._pendingSubscriptions)t.unsub?.(),t.unsub=null}get isConnected(){return this._actions!==null}_startWarnTimer(){this._disconnectedWarnTimer===null&&(this._disconnectedWarnTimer=setTimeout(()=>{!this.isConnected&&this._pendingCalls.length>0&&console.error("[react-dockable-desktop] WorkspaceClient has "+this._pendingCalls.length+" queued call(s) but was never connected to a WindowManagerProvider. Did you forget client={workspace} on <WindowManagerProvider>?")},process.env.NODE_ENV==="production"?5e3:1e3))}_dispatch(t){this._actions?t(this._actions):(this._pendingCalls.push(t),this._startWarnTimer())}_subscribeRaw(t,n){if(this._actions)return this._actions.subscribe(t,n);let o={event:t,callback:n,unsub:null};return this._pendingSubscriptions.push(o),()=>{o.unsub?.(),o.unsub=null;let a=this._pendingSubscriptions.indexOf(o);a!==-1&&this._pendingSubscriptions.splice(a,1)}}openPanel(...t){if(this._actions){this._actions.openPanel(...t);return}let n=t[0];this._pendingOpenPanelIds.has(n)||(this._pendingOpenPanelIds.add(n),this._pendingCalls.push(o=>{this._pendingOpenPanelIds.delete(n),o.openPanel(...t)}),this._startWarnTimer())}closePanel(t){this._dispatch(n=>n.closePanel(t))}minimizePanel(t){this._dispatch(n=>n.minimizePanel(t))}restorePanel(...t){this._dispatch(n=>n.restorePanel(...t))}floatPanel(...t){this._dispatch(n=>n.floatPanel(...t))}dockPanel(...t){this._dispatch(n=>n.dockPanel(...t))}maximizePanel(t){this._dispatch(n=>n.maximizePanel(t))}focusPanel(t){this._dispatch(n=>n.focusPanel(t))}isOpen(t){return this._actions?.isOpen(t)??!1}getOpenPanelIds(){return this._actions?.getOpenPanelIds()??[]}findPanelId(t,n){return this._actions?.findPanelId(t,n)??null}saveLayout(){return this._actions?.saveLayout()??""}loadLayout(t){return this._actions?this._actions.loadLayout(t):(this._pendingCalls.push(n=>{n.loadLayout(t)}),!1)}setDirection(t){this._dispatch(n=>n.setDirection(t))}updateSplitSizes(t,n){this._dispatch(o=>o.updateSplitSizes(t,n))}updateFloatingPosition(t,n){this._dispatch(o=>o.updateFloatingPosition(t,n))}setDraggedPanelId(t){this._dispatch(n=>n.setDraggedPanelId(t))}dockPanelToGroup(t,n,o){this._dispatch(a=>a.dockPanelToGroup(t,n,o))}movePanelOrder(t,n,o){this._dispatch(a=>a.movePanelOrder(t,n,o))}closeLeafGroup(t){this._dispatch(n=>n.closeLeafGroup(t))}registerCloseGuard(t,n){this._dispatch(o=>o.registerCloseGuard(t,n))}unregisterCloseGuard(t){this._dispatch(n=>n.unregisterCloseGuard(t))}registerStateProvider(t,n){this._dispatch(o=>o.registerStateProvider(t,n))}unregisterStateProvider(t){this._dispatch(n=>n.unregisterStateProvider(t))}setPanelDirty(t,n,o){this._dispatch(a=>a.setPanelDirty(t,n,o))}updatePanelTitle(t,n){this._dispatch(o=>o.updatePanelTitle(t,n))}requestClosePanel(t,n){return this._actions?this._actions.requestClosePanel(t,n):(this._pendingCalls.push(o=>{o.requestClosePanel(t,n)}),Promise.resolve())}dockPanelToWorkspaceEdge(t,n){this._dispatch(o=>o.dockPanelToWorkspaceEdge(t,n))}showContextMenu(t){this._dispatch(n=>n.showContextMenu(t))}publish(t,n){this._dispatch(o=>o.publish(t,n))}subscribe(t,n){return this._subscribeRaw(t,n)}onPanelOpen(t){return this._subscribeRaw("panel:opened",n=>{let o=n;t(o.id,o.component)})}onPanelClose(t){return this._subscribeRaw("panel:closed",n=>{t(n.id)})}onPanelMinimize(t){return this._subscribeRaw("panel:minimized",n=>{t(n.id)})}onPanelRestore(t){return this._subscribeRaw("panel:restored",n=>{t(n.id)})}onLayoutChanged(t){return this._subscribeRaw("layout:changed",()=>t())}onPanelsExcluded(t){return this._subscribeRaw("layout:panels-excluded",n=>{t(n.panels)})}};var bo=require("react");var mt=require("react"),po=require("react/jsx-runtime"),uo=(0,mt.createContext)(null),Zt=({children:e})=>{let[t,n]=(0,mt.useState)({}),[o,a]=(0,mt.useState)({}),s=(0,mt.useMemo)(()=>({getActiveInGroup:I=>t[I]??null,setActiveInGroup:(I,S)=>n(C=>({...C,[I]:S})),isModifierActive:I=>o[I]??!1,setModifierActive:(I,S)=>a(C=>({...C,[I]:S})),toggleModifier:I=>a(S=>({...S,[I]:!S[I]}))}),[t,o]);return(0,po.jsx)(uo.Provider,{value:s,children:e})};function Ut(){let e=(0,mt.useContext)(uo);if(!e)throw new Error("useToolbar must be used within DockableDesktopProvider");return e}var je=require("react");var ho=require("react/jsx-runtime");function yr(){let e=new Map,t=new Set,n=()=>t.forEach(o=>o());return{publish(o,a){return e.set(o,a),n(),()=>{e.get(o)===a&&(e.delete(o),n())}},get(o){return e.get(o)??null},subscribe(o){return t.add(o),()=>t.delete(o)}}}var En=(0,je.createContext)(null),gn=({children:e})=>{let t=(0,je.useMemo)(()=>yr(),[]);return(0,ho.jsx)(En.Provider,{value:t,children:e})};function go(e){let t=Vt(),n=(0,je.useContext)(En),o=(0,je.useRef)(null);if(!n)throw new Error("usePanelContribution must be used within PanelContributionProvider");(0,je.useLayoutEffect)(()=>{if(n)return o.current?.(),o.current=n.publish(t,e),()=>{o.current?.(),o.current=null}},[n,t,e])}function fn(){let e=tt(a=>a.activePanelId),t=(0,je.useContext)(En);if(!t)throw new Error("useActivePanelContribution must be used within PanelContributionProvider");let n=(0,je.useCallback)(a=>t?t.subscribe(a):()=>{},[t]),o=()=>t&&e?t.get(e):null;return(0,je.useSyncExternalStore)(n,o,o)}function Ln(e,t=null){return{id:e.id,label:e.label,icon:e.icon??t,renderContent:()=>e.content}}function fo(e){let t=fn();return t?.toolbarItems?.length?[...e,{type:"separator"},...t.toolbarItems]:e}function mo(e,t=null){let n=fn();return n?.sidebarSections?.length?[...e,...n.sidebarSections.map(o=>Ln(o,t))]:e}var Bt=require("react/jsx-runtime"),vo=({contextMenuAdapter:e=Tt,...t})=>{let n=(0,bo.useContext)(Ft),o=(0,Bt.jsx)(Zt,{children:(0,Bt.jsx)(nn,{...t,children:(0,Bt.jsx)(gn,{children:(0,Bt.jsx)(ln,{children:t.children})})})});return n!==null?o:(0,Bt.jsx)(sn,{adapter:e,formatMessageProvider:t.formatMessage,children:o})};var Ze=require("react");var Be=require("react/jsx-runtime"),Pr=({modal:e,index:t,isTopmost:n})=>{let{close:o,openModal:a,updateInstance:s,setDirty:I}=yt(),S=et(),C=nt(),{dir:P}=tt(),{modalClass:R,modalBodyClass:c}=pt(),k=(0,Ze.useRef)(null),{id:T,Component:A,props:H,options:u,dirty:w,dirtyOptions:x}=e,O=u,[h,M]=(0,Ze.useState)(O.icon||null),B=(0,Ze.useRef)(O);B.current=O;let D=me(O.title,S),l=(0,Ze.useCallback)(async G=>{if(G?.force){o(T);return}if(k.current){if(!await k.current())return;o(T);return}if(w){a(Pt,{title:x?.title||C.unsavedChangesTitle,message:x?.message||{id:C.unsavedChangesMessage.id,defaultMessage:C.unsavedChangesMessage.defaultMessage,values:{title:D}},alert:x?.alert,alertType:x?.alertType||"danger",useYesNoTitles:!0,onOK:()=>o(T)},{size:"small"});return}o(T)},[o,a,T,w,x,D,C]),E=(0,Ze.useCallback)((G,ce)=>I(T,G,ce),[I,T]),_=(0,Ze.useCallback)(G=>s(T,{options:{...B.current,title:G}}),[s,T]),q=(0,Ze.useCallback)(G=>M(G),[]),Q=(0,Ze.useCallback)(G=>(k.current=G,()=>{k.current=null}),[]),ee=(0,Ze.useMemo)(()=>({requestClose:l,setDirty:E,setTitle:_,setIcon:q,onCloseRequested:Q,containerType:"modal",instanceId:T}),[l,E,_,q,Q,T]),ne=w?`${D} *`:D,Pe=O.size?`rdd-modal-size-${O.size}`:"rdd-modal-size-auto",se=O.closable!==!1,V=O.bodyPadding,J=V!=null?typeof V=="number"?`${V}px`:V:void 0;(0,Ze.useEffect)(()=>{if(!n||!se)return;let G=ce=>{ce.key==="Escape"&&(ce.stopPropagation(),l())};return document.addEventListener("keydown",G),()=>document.removeEventListener("keydown",G)},[l,se,n]);let j=`calc(var(--rdd-z-base, 1000) + 9000 + ${t*10})`;return(0,Be.jsxs)("div",{className:"rdd-modal-overlay",style:{zIndex:j},dir:P,children:[(0,Be.jsx)("div",{className:"rdd-modal-curtain",onClick:se?()=>l():void 0}),(0,Be.jsxs)("div",{className:`rdd-modal-window ${Pe} ${R??""}`,children:[(0,Be.jsxs)("div",{className:"rdd-modal-header",children:[h&&(0,Be.jsx)("div",{className:"rdd-modal-icon",children:h}),(0,Be.jsx)("h4",{className:"rdd-modal-title",children:ne}),se&&(0,Be.jsx)("button",{className:"rdd-modal-close-button",onClick:()=>l(),title:S(C.closeTooltip),type:"button",children:(0,Be.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,Be.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),(0,Be.jsx)("div",{className:`rdd-modal-body ${c??""}`,style:J!=null?{padding:J}:void 0,children:(0,Be.jsx)(bt,{value:ee,children:(0,Be.jsx)(A,{...H,panelId:T})})})]})]})},xr=()=>{let{modals:e}=gt();return e.length===0?null:(0,Be.jsx)(Be.Fragment,{children:e.map((t,n)=>(0,Be.jsx)(Pr,{modal:t,index:n,isTopmost:n===e.length-1},t.id))})},yo=xr;var $e=require("react");var mn=require("react");function Po(e){let[t,n]=(0,mn.useState)(null);return(0,mn.useLayoutEffect)(()=>{let o=e.current?.parentElement;if(!o)return;let a=()=>{let 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}var Me=require("react/jsx-runtime"),hn=({panel:e,position:t,defaultWidth:n,containerRect:o})=>{let{close:a,openModal:s,updateInstance:I,setDirty:S,registerCloseHandler:C,unregisterCloseHandler:P}=yt(),{modals:R}=gt(),c=et(),k=nt(),{dir:T}=tt(),{sidePanelClass:A,sidePanelBodyClass:H}=pt(),u=(0,$e.useRef)(null),{id:w,Component:x,props:O,options:h,dirty:M,dirtyOptions:B}=e,D=h,[l,E]=(0,$e.useState)(D.icon||null),_=(0,$e.useRef)(D);_.current=D;let q=me(D.title,c),Q=(0,$e.useCallback)(async Z=>{if(Z?.force){a(w);return}if(u.current){if(!await u.current())return;a(w);return}if(M){s(Pt,{title:B?.title||k.unsavedChangesTitle,message:B?.message||{id:k.unsavedChangesMessage.id,defaultMessage:k.unsavedChangesMessage.defaultMessage,values:{title:q}},alert:B?.alert,alertType:B?.alertType||"danger",useYesNoTitles:!0,onOK:()=>a(w)},{size:"small"});return}a(w)},[a,s,w,M,B,q,k]),ee=(0,$e.useCallback)(async()=>u.current?await u.current():!M,[M]);(0,$e.useEffect)(()=>(C(w,ee),()=>P(w)),[w,ee,C,P]);let ne=(0,$e.useCallback)((Z,Ye)=>S(w,Z,Ye),[S,w]),Pe=(0,$e.useCallback)(Z=>I(w,{options:{..._.current,title:Z}}),[I,w]),se=(0,$e.useCallback)(Z=>E(Z),[]),V=(0,$e.useCallback)(Z=>(u.current=Z,()=>{u.current=null}),[]),J=(0,$e.useMemo)(()=>({requestClose:Q,setDirty:ne,setTitle:Pe,setIcon:se,onCloseRequested:V,containerType:t==="left"?"left-panel":"right-panel",instanceId:w}),[Q,ne,Pe,se,V,t,w]),j=M?`${q} *`:q;(0,$e.useEffect)(()=>{let Z=Ye=>{Ye.key==="Escape"&&R.length===0&&Q()};return document.addEventListener("keydown",Z),()=>document.removeEventListener("keydown",Z)},[Q,R.length]);let G=D.width||n||400,ce=typeof G=="number"?`${G}px`:G,we=D.bodyPadding,We=we!=null?typeof we=="number"?`${we}px`:we:void 0;return(0,Me.jsx)("div",{className:`rdd-side-panel rdd-side-panel-${t} rdd-side-panel-visible ${A??""}`,style:{width:ce,...o?{top:o.top,height:o.height,bottom:"auto",...t==="right"?{right:o.right}:{left:o.left}}:{}},dir:T,children:(0,Me.jsxs)("div",{className:"rdd-side-panel-window",children:[(0,Me.jsxs)("div",{className:"rdd-side-panel-header",children:[l&&(0,Me.jsx)("div",{className:"rdd-side-panel-icon",children:l}),(0,Me.jsx)("h4",{className:"rdd-side-panel-title",children:j}),(0,Me.jsx)("button",{className:"rdd-side-panel-close-button",onClick:()=>Q(),title:c(k.closeTooltip),type:"button",children:(0,Me.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,Me.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),(0,Me.jsx)("div",{className:`rdd-side-panel-body ${H??""}`,style:We!=null?{padding:We}:void 0,children:(0,Me.jsx)(bt,{value:J,children:(0,Me.jsx)(x,{...O,panelId:w})})})]})})},zn=({children:e})=>{let t=(0,$e.useRef)(null),n=Po(t);return(0,Me.jsx)("div",{ref:t,style:{display:"contents"},children:e(n)})},Cr=({defaultWidth:e})=>{let{leftPanel:t,rightPanel:n}=gt();return(0,Me.jsx)(zn,{children:o=>(0,Me.jsxs)(Me.Fragment,{children:[t&&(0,Me.jsx)(hn,{panel:t,position:"left",defaultWidth:e,containerRect:o},t.id),n&&(0,Me.jsx)(hn,{panel:n,position:"right",defaultWidth:e,containerRect:o},n.id)]})})},xo=({defaultWidth:e})=>{let{leftPanel:t}=gt();return(0,Me.jsx)(zn,{children:n=>t?(0,Me.jsx)(hn,{panel:t,position:"left",defaultWidth:e,containerRect:n},t.id):null})},Co=({defaultWidth:e})=>{let{rightPanel:t}=gt();return(0,Me.jsx)(zn,{children:n=>t?(0,Me.jsx)(hn,{panel:t,position:"right",defaultWidth:e,containerRect:n},t.id):null})},wo=Cr;var ie=Qt(require("react"),1);var ve=require("react/jsx-runtime");function Nn(e){return"renderContent"in e}function wr(e){return"render"in e}function Ro(e){return e==null?[]:Array.isArray(e)?e:[e]}var Dn=(0,ie.createContext)(null),To=(0,ie.createContext)(null);function Rr({tabId:e,onClose:t,onOpen:n,setActiveTabId:o,children:a}){let s=(0,ie.useMemo)(()=>({tabId:e,onClose:t,onOpen:n,openTab:I=>o(I)}),[e,t,n,o]);return(0,ve.jsx)(To.Provider,{value:s,children:a})}function Mo(e,t,n,o){if(wr(e))return(0,ve.jsx)(ie.default.Fragment,{children:e.render()},e.id??t);if(Nn(e)){if(e.hidden)return null;let a=n===e.id;return(0,ve.jsx)("button",{type:"button",onClick:()=>o(e.id),className:`rdd-sidebar-tab-btn${a?" rdd-active":""}`,title:e.label,"aria-pressed":a,children:e.icon},e.id)}return(0,ve.jsx)("button",{type:"button",onClick:e.onClick,disabled:e.disabled,className:"rdd-sidebar-tab-btn rdd-sidebar-header-action-btn",title:e.label,"aria-label":e.label,children:e.icon},e.id??t)}var So=(0,ie.memo)(function({tabs:t,headerEntries:n,footerEntries:o,activeTabId:a,isVisible:s,position:I,onTabClick:S}){return(0,ve.jsx)("div",{style:{width:s?"56px":"0px",height:"100%",overflow:"hidden",transition:"width 0.25s cubic-bezier(0.4, 0, 0.2, 1)",flexShrink:0},children:(0,ve.jsxs)("div",{className:`rdd-sidebar-tabs-strip rdd-${I}${n.length?" rdd-sidebar-tabs-strip--has-header-action":""}${o.length?" rdd-sidebar-tabs-strip--has-footer-action":""}`,style:{width:"56px",height:"100%"},children:[n.length>0&&(0,ve.jsx)("div",{className:"rdd-sidebar-header-area",children:n.map((C,P)=>Mo(C,P,a,S))}),(0,ve.jsx)("div",{className:"rdd-sidebar-tabs-list",children:t.map(C=>{if(C.hidden)return null;let P=a===C.id;return(0,ve.jsx)("button",{type:"button",onClick:()=>S(C.id),className:`rdd-sidebar-tab-btn${P?" rdd-active":""}`,title:C.label,"aria-pressed":P,children:C.icon},C.id)})}),o.length>0&&(0,ve.jsx)("div",{className:"rdd-sidebar-footer-area",children:o.map((C,P)=>Mo(C,P,a,S))})]})})});function Mr({position:e,currentWidth:t,minWidth:n,maxWidth:o,onWidthChange:a,onResizeStart:s,onResizeEnd:I}){return(0,ve.jsx)("div",{className:"rdd-resizer-bar",style:{cursor:"col-resize",width:"1px",height:"100%",flexShrink:0,zIndex:20},onPointerDown:C=>{C.preventDefault();let P=C.currentTarget,R=[{el:P,classes:["rdd-active"]},{el:document.body,classes:["rdd-resizing-active","rdd-resizing-col-active"]}];s(),ft({element:P,pointerId:C.pointerId,startClientX:C.clientX,startClientY:C.clientY,captureStart:()=>t,activeClasses:R,onMove:(c,k,T)=>{let A=e==="right"?T-c:T+c;a(Math.max(n,Math.min(o,A)))},onEnd:()=>I()})}})}var Wn=(0,ie.forwardRef)(function({position:t="right",tabs:n,headerAction:o,footerAction:a,defaultWidth:s,minWidth:I=150,maxWidth:S=600,onWidthChange:C,activeTabId:P,onActiveTabChange:R,visible:c,onVisibilityChange:k,stripVisible:T,onStripVisibilityChange:A,showCloseButton:H=!1,hideDefaultHeader:u=!1,renderHeader:w,isSecondary:x=!1,children:O},h){let M=P!==void 0,[B,D]=(0,ie.useState)(()=>s??280),l=(0,ie.useCallback)(ae=>{D(ae),C?.(ae)},[C]),[E,_]=(0,ie.useState)(!1),[q,Q]=(0,ie.useState)(null),ee=M?P:q,ne=(0,ie.useMemo)(()=>Ro(o),[o]),Pe=(0,ie.useMemo)(()=>Ro(a),[a]),se=(0,ie.useMemo)(()=>ne.filter(Nn),[ne]),V=(0,ie.useMemo)(()=>Pe.filter(Nn),[Pe]),J=(0,ie.useMemo)(()=>[...se,...n,...V],[se,n,V]),[j,G]=(0,ie.useState)(()=>new Set),ce=(0,ie.useMemo)(()=>{let ae=new Set(j);ee&&ae.add(ee);for(let fe of J)fe.eagerMount&&ae.add(fe.id);return ae},[j,ee,J]),we=(0,ie.useRef)(ee??null);(0,ie.useEffect)(()=>{we.current=ee??null},[ee]);let We=(0,ie.useRef)(B);(0,ie.useEffect)(()=>{We.current=B},[B]);let Z=(0,ie.useCallback)(ae=>{G(ae!==null?fe=>{if(fe.has(ae))return fe;let Ve=new Set(fe);return Ve.add(ae),Ve}:fe=>{let Ve=!1,Xe=new Set(fe);for(let U of fe){let te=J.find(ue=>ue.id===U);te&&!te.eagerMount&&!te.preserveState&&(Xe.delete(U),Ve=!0)}return Ve?Xe:fe}),M||Q(ae),R?.(ae)},[M,R,J]);(0,ie.useEffect)(()=>{ee!=null&&!J.some(ae=>ae.id===ee)&&Z(null)},[ee,J,Z]),(0,ie.useImperativeHandle)(h,()=>({openTab:ae=>Z(ae),closeDrawer:()=>Z(null),getActiveTab:()=>we.current,show:()=>k?.(!0),hide:()=>k?.(!1),toggle:()=>k?.(c===!1),showStrip:()=>A?.(!0),hideStrip:()=>A?.(!1),setWidth:ae=>l(Math.max(I,Math.min(S,ae))),getWidth:()=>We.current}),[Z,c,k,A,l,I,S]);let Ye=(0,ie.useCallback)(ae=>{Z(ee===ae?null:ae)},[ee,Z]),Je=(0,ie.useCallback)(()=>Z(null),[Z]),Qe=u||w!=null,Ke=(0,ie.useRef)(!1);(0,ie.useEffect)(()=>{process.env.NODE_ENV==="development"&&(!H||!Qe||Ke.current||(Ke.current=!0,console.warn('[react-dockable-desktop] `showCloseButton` has no effect because the default header is suppressed (`hideDefaultHeader` is set, or `renderHeader` was passed). The "X" close button only renders as part of the library\'s own default header, which is skipped in this case. Add your own close control inside `renderHeader` (or `renderContent`), wired to its `onClose` parameter or `useSidebarTab().onClose`.')))},[H,Qe]);let at=(0,ie.useMemo)(()=>({openTab:ae=>Z(ae),closeDrawer:()=>Z(null),getActiveTab:()=>we.current,position:t,isSecondary:x}),[Z,t,x]),lt=c!==!1,dt=lt&&T!==!1,it=lt&&ee!=null,st=(0,ve.jsx)("div",{className:`rdd-sidebar-content-drawer rdd-${t}`,style:{flexBasis:it?`${B}px`:"0px",flexShrink:1,flexGrow:0,minWidth:it?`${I}px`:"0px",maxWidth:it?`${S}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(ae=>{if(!ce.has(ae.id))return null;let Ve=ee===ae.id,Xe=()=>Z(ae.id);return(0,ve.jsxs)("div",{style:{display:Ve?"flex":"none",flexDirection:"column",height:"100%",width:"100%"},children:[Qe?w?.(ae,Je,Xe):(0,ve.jsxs)("div",{className:"rdd-sidebar-drawer-header",children:[(0,ve.jsx)("span",{className:"rdd-sidebar-header-title",children:ae.label}),H&&(0,ve.jsx)("button",{type:"button",className:"rdd-sidebar-drawer-close-button",onClick:Je,title:"Close","aria-label":"Close",children:(0,ve.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,ve.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),(0,ve.jsx)("div",{className:"rdd-sidebar-drawer-body",children:(0,ve.jsx)(Rr,{tabId:ae.id,onClose:Je,onOpen:Xe,setActiveTabId:Z,children:ae.renderContent(ae.id,Je,Xe)})})]},ae.id)})}),ke=it?(0,ve.jsx)(Mr,{position:t,currentWidth:B,minWidth:I,maxWidth:S,onWidthChange:l,onResizeStart:()=>_(!0),onResizeEnd:()=>_(!1)}):null;return(0,ve.jsx)(Dn.Provider,{value:at,children:(0,ve.jsxs)("div",{style:{display:"flex",flexDirection:"row",width:"100%",height:"100%",overflow:"hidden"},children:[t==="left"&&(0,ve.jsx)(So,{tabs:n,headerEntries:ne,footerEntries:Pe,activeTabId:ee,isVisible:dt,position:t,onTabClick:Ye}),t==="left"&&st,t==="left"&&ke,(0,ve.jsx)("div",{style:{flex:"1 1 0%",minWidth:0,overflow:"hidden"},children:O}),t==="right"&&ke,t==="right"&&st,t==="right"&&(0,ve.jsx)(So,{tabs:n,headerEntries:ne,footerEntries:Pe,activeTabId:ee,isVisible:dt,position:t,onTabClick:Ye})]})})}),ko=(0,ie.forwardRef)(function(t,n){let o=(0,ie.useContext)(Dn);if(!o)throw new Error("SecondarySidebar must be rendered inside a primary Sidebar's children");if(o.isSecondary)throw new Error("SecondarySidebar cannot be nested inside another SecondarySidebar");let a=o.position==="left"?"right":"left";return(0,ve.jsx)(Wn,{ref:n,...t,position:a,isSecondary:!0})});function Io(){let e=(0,ie.useContext)(Dn);if(!e)throw new Error("useSidebar must be used within Sidebar");return e}function Eo(){let e=(0,ie.useContext)(To);if(!e)throw new Error("useSidebarTab must be used within a Sidebar tab renderContent tree");return e}var Ue=require("react"),Lo=require("react-dom");var Ge=require("react/jsx-runtime");function Sr(e,t,n=!1,o=8){switch(t){case"left":return n?{right:window.innerWidth-e.left+o,top:e.top}:{left:e.right+o,top:e.top};case"right":return n?{left:e.right+o,top:e.top}:{right:window.innerWidth-e.left+o,top:e.top};case"top":return n?{top:e.bottom+o,right:window.innerWidth-e.right}:{top:e.bottom+o,left:e.left};case"bottom":return n?{bottom:window.innerHeight-e.top+o,right:window.innerWidth-e.right}:{bottom:window.innerHeight-e.top+o,left:e.left}}}function Tr({item:e,position:t,toolbar:n}){let[o,a]=(0,Ue.useState)(!1),[s,I]=(0,Ue.useState)(null),S=(0,Ue.useRef)(null),C=(0,Ue.useRef)(null),P=e.activeItemId!==void 0,R=P?e.activeItemId:n.getActiveInGroup(e.id),c=e.items.find(u=>!("type"in u)&&u.id===R),k=R!==null,T=c?.icon??e.defaultIcon,A=c?.label??e.label,H=()=>{e.disabled||(!o&&S.current&&I(S.current.getBoundingClientRect()),a(u=>!u))};return(0,Ue.useLayoutEffect)(()=>{if(!o||!C.current)return;let u=C.current,w=u.getBoundingClientRect(),x=8;w.right>window.innerWidth-x&&(u.style.left=`${Math.max(x,window.innerWidth-w.width-x)}px`,u.style.right="auto"),w.left<x&&(u.style.left=`${x}px`,u.style.right="auto"),w.bottom>window.innerHeight-x&&(u.style.top=`${Math.max(x,window.innerHeight-w.height-x)}px`,u.style.bottom="auto"),w.top<x&&(u.style.top=`${x}px`,u.style.bottom="auto")},[o]),(0,Ue.useEffect)(()=>{if(!o)return;let u=w=>{let x=w.target;S.current?.contains(x)||C.current?.contains(x)||a(!1)};return document.addEventListener("mousedown",u),()=>document.removeEventListener("mousedown",u)},[o]),(0,Ue.useEffect)(()=>{if(!o)return;let u=w=>{w.key==="Escape"&&a(!1)};return document.addEventListener("keydown",u),()=>document.removeEventListener("keydown",u)},[o]),(0,Ge.jsxs)(Ge.Fragment,{children:[(0,Ge.jsx)("button",{ref:S,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:H,children:T}),o&&s&&(0,Lo.createPortal)((0,Ge.jsx)("div",{ref:C,className:`rdd-toolbar-group-flyout rdd-${t}`,style:Sr(s,t,document.documentElement.dir==="rtl"),role:"menu",children:e.items.map((u,w)=>{if("type"in u)return(0,Ge.jsx)("div",{className:"rdd-toolbar-group-flyout-sep",role:"separator"},`sep-${w}`);let x=R===u.id;return(0,Ge.jsxs)("button",{type:"button",className:`rdd-toolbar-group-flyout-item${x?" rdd-active":""}`,disabled:u.disabled,role:"menuitem","aria-pressed":x,onClick:()=>{P?e.onActiveItemChange?.(u.id):n.setActiveInGroup(e.id,u.id),u.onActivate?.(u.id),a(!1)},children:[(0,Ge.jsx)("span",{className:"rdd-toolbar-group-flyout-icon",children:u.icon}),(0,Ge.jsx)("span",{className:"rdd-toolbar-group-flyout-label",children:u.label}),u.shortcut&&(0,Ge.jsx)("span",{className:"rdd-toolbar-group-flyout-shortcut",children:u.shortcut})]},u.id)})}),document.body)]})}function kr(e,t,n,o){switch(e.type){case"separator":return(0,Ge.jsx)("div",{className:"rdd-toolbar-separator",role:"separator"},`sep-${t}`);case"action":return(0,Ge.jsx)("button",{type:"button",className:"rdd-toolbar-btn rdd-toolbar-btn-action",title:e.label,"aria-label":e.label,disabled:e.disabled,onClick:e.onClick,children:e.icon},e.id);case"radio":{let a=n.getActiveInGroup(e.group)===e.id;return(0,Ge.jsx)("button",{type:"button",className:`rdd-toolbar-btn rdd-toolbar-btn-radio${a?" rdd-active":""}`,title:e.label,"aria-label":e.label,"aria-pressed":a,disabled:e.disabled,onClick:()=>{n.setActiveInGroup(e.group,e.id),e.onActivate?.(e.id)},children:e.icon},e.id)}case"toggle":{let a=e.active!==void 0,s=a?e.active:n.isModifierActive(e.id);return(0,Ge.jsx)("button",{type:"button",className:`rdd-toolbar-btn rdd-toolbar-btn-toggle${s?" rdd-active":""}`,title:e.label,"aria-label":e.label,"aria-pressed":s,disabled:e.disabled,onClick:()=>{a||n.toggleModifier(e.id),e.onToggle?.(!s)},children:e.icon},e.id)}case"group":return(0,Ge.jsx)(Tr,{item:e,position:o,toolbar:n},e.id)}}var zo=(0,Ue.forwardRef)(function({position:t="left",items:n,visible:o,onVisibilityChange:a,className:s,style:I},S){let C=Ut(),P=t==="left"||t==="right";(0,Ue.useImperativeHandle)(S,()=>({show:()=>a?.(!0),hide:()=>a?.(!1),toggle:()=>a?.(o===!1)}),[o,a]);let R=o!==!1?{}:P?{width:"0px"}:{height:"0px"};return(0,Ge.jsx)("div",{className:`rdd-toolbar-strip rdd-${t}${s?` ${s}`:""}`,role:"toolbar","aria-orientation":P?"vertical":"horizontal",style:{...R,...I},children:n.map((c,k)=>kr(c,k,C,t))})});var Se=require("react"),On=require("react-dom"),ye=require("react/jsx-runtime"),Fn=class{listeners=new Set;counter=0;subscribe(t){this.listeners.add(t)}unsubscribe(t){this.listeners.delete(t)}show(t,n={}){let o=n.id??`toast-${++this.counter}`;return this.emit({kind:"show",id:o,message:t,rawOpts:{...n,id:o}}),o}update(t,n,o){this.emit({kind:"update",id:t,message:n,patch:o})}dismiss(t){this.emit({kind:"dismiss",id:t})}emit(t){this.listeners.forEach(n=>n(t))}},ot=new Fn,No=Object.assign((e,t)=>ot.show(e,t),{info:(e,t)=>ot.show(e,{...t,type:"info"}),success:(e,t)=>ot.show(e,{...t,type:"success"}),warning:(e,t)=>ot.show(e,{...t,type:"warning"}),error:(e,t)=>ot.show(e,{...t,type:"error"}),dismiss:e=>ot.dismiss(e),promise:(e,t,n)=>{let o=ot.show(t.pending,{...n,type:"info",duration:0});return e.then(a=>{let s=typeof t.success=="function"?t.success(a):t.success;ot.update(o,s,{type:"success",duration:n?.duration??5e3})},a=>{let s=typeof t.error=="function"?t.error(a):t.error;ot.update(o,s,{type:"error",duration:n?.duration??5e3})}),e}}),Ir=()=>(0,ye.jsxs)("svg",{className:"rdd-toast__icon",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[(0,ye.jsx)("circle",{cx:"8",cy:"8",r:"7",stroke:"currentColor",strokeWidth:"1.5"}),(0,ye.jsx)("path",{d:"M8 5v.01M8 7.5v3.5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]}),Er=()=>(0,ye.jsxs)("svg",{className:"rdd-toast__icon",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[(0,ye.jsx)("circle",{cx:"8",cy:"8",r:"7",stroke:"currentColor",strokeWidth:"1.5"}),(0,ye.jsx)("path",{d:"M5 8l2 2 4-4",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})]}),Lr=()=>(0,ye.jsxs)("svg",{className:"rdd-toast__icon",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[(0,ye.jsx)("path",{d:"M8 2.5L14 13.5H2L8 2.5z",stroke:"currentColor",strokeWidth:"1.5",strokeLinejoin:"round"}),(0,ye.jsx)("path",{d:"M8 7v2.5M8 11.5v.01",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]}),zr=()=>(0,ye.jsxs)("svg",{className:"rdd-toast__icon",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[(0,ye.jsx)("circle",{cx:"8",cy:"8",r:"7",stroke:"currentColor",strokeWidth:"1.5"}),(0,ye.jsx)("path",{d:"M5.5 5.5l5 5M10.5 5.5l-5 5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]}),Nr=()=>(0,ye.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:(0,ye.jsx)("path",{d:"M4 4l8 8M12 4l-8 8",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})}),Dr={info:(0,ye.jsx)(Ir,{}),success:(0,ye.jsx)(Er,{}),warning:(0,ye.jsx)(Lr,{}),error:(0,ye.jsx)(zr,{})};function Wr({id:e,message:t,options:n,exiting:o,isLeft:a,showProgress:s,pauseOnHover:I,animation:S,onDismiss:C,onExited:P}){let R=(0,Se.useRef)(null),c=(0,Se.useRef)(null),k=(0,Se.useRef)(null),T=(0,Se.useRef)(n.duration),A=(0,Se.useRef)(0),[H,u]=(0,Se.useState)(!1),w=S==="none"?"rdd-toast--visible":S==="fade"?"rdd-toast--fade-entering":a?"rdd-toast--entering-left":"rdd-toast--entering",[x,O]=(0,Se.useState)(w);(0,Se.useLayoutEffect)(()=>{let E=R.current,_=c.current;if(!E||!_||o)return;let q=()=>{E.style.maxHeight=`${E.scrollHeight}px`};q();let Q=new ResizeObserver(q);return Q.observe(_),()=>Q.disconnect()},[o]),(0,Se.useEffect)(()=>{if(S==="none")return;let E=requestAnimationFrame(()=>O("rdd-toast--visible"));return()=>cancelAnimationFrame(E)},[]);let h=(0,Se.useCallback)(E=>{E<=0||(A.current=Date.now(),k.current=setTimeout(()=>C(e),E))},[e,C]);(0,Se.useEffect)(()=>(k.current&&clearTimeout(k.current),T.current=n.duration,h(n.duration),()=>{k.current&&clearTimeout(k.current)}),[n.duration,h]),(0,Se.useEffect)(()=>{if(!o)return;let E=R.current;if(!E||S==="none"){P(e);return}let _=Q=>{Q.propertyName==="max-height"&&P(e)};E.addEventListener("transitionend",_);let q=setTimeout(()=>P(e),520);return()=>{E.removeEventListener("transitionend",_),clearTimeout(q)}},[o,e,P,S]);let M=()=>{!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))},B=()=>{!I||n.duration===0||(u(!1),h(T.current))},D=["rdd-toast",n.type&&`rdd-toast--${n.type}`,x,o&&"rdd-toast--exiting",H&&"rdd-toast--paused"].filter(Boolean).join(" "),l=n.icon!==void 0?n.icon:n.type?Dr[n.type]:null;return(0,ye.jsxs)("div",{ref:R,role:"status","aria-live":"polite",className:D,onMouseEnter:M,onMouseLeave:B,children:[l&&l,(0,ye.jsx)("div",{ref:c,className:"rdd-toast__body",children:n.content!==void 0?n.content:t}),n.closable&&(0,ye.jsx)("button",{type:"button",className:"rdd-toast__close",onClick:()=>C(e),"aria-label":"Close notification",children:(0,ye.jsx)(Nr,{})}),s&&n.duration>0&&(0,ye.jsx)("div",{className:"rdd-toast__progress",style:{animationDuration:`${n.duration}ms`}})]})}function An(e,t,n){return{id:e.id,type:e.type??"info",duration:e.duration??t,closable:e.closable??n,icon:e.icon,content:e.content,onClose:e.onClose}}function Do({position:e="top-right",maxVisible:t=3,defaultDuration:n=5e3,defaultClosable:o=!0,pauseOnHover:a=!0,animation:s="slide",newestOnTop:I=!1,progressBar:S=!1,width:C=320,adapter:P}){let[R,c]=(0,Se.useState)([]),k=(0,Se.useRef)([]),T=(0,Se.useRef)(R);T.current=R;let A=(0,Se.useCallback)(O=>{c(h=>h.map(M=>M.id===O?{...M,exiting:!0}:M)),T.current.find(h=>h.id===O)?.options.onClose?.()},[]),H=(0,Se.useCallback)(O=>{let h=k.current.shift()??null;c(M=>{let B=M.filter(l=>l.id!==O);if(!h)return B;let D=An(h.rawOpts,n,o);return[...B,{id:h.id,message:h.message,options:D,exiting:!1}]})},[n,o]);if((0,Se.useEffect)(()=>{if(P)return;let O=h=>{if(h.kind==="show"){let M=An(h.rawOpts,n,o),B={id:h.id,message:h.message,options:M,exiting:!1},D={id:h.id,message:h.message,rawOpts:h.rawOpts};c(l=>l.find(q=>q.id===h.id)?l.map(q=>q.id===h.id?{...q,message:h.message,options:M}:q):l.filter(q=>!q.exiting).length<t?[...l,B]:(k.current.some(q=>q.id===D.id)||k.current.push(D),l))}else h.kind==="update"?(c(M=>M.map(B=>{if(B.id!==h.id)return B;let D={...B.options,...h.patch,id:B.id};return{...B,message:h.message,options:D}})),k.current=k.current.map(M=>M.id!==h.id?M:{...M,message:h.message,rawOpts:{...M.rawOpts,...h.patch}})):h.kind==="dismiss"&&(h.id===void 0?(c(M=>M.map(B=>({...B,exiting:!0}))),k.current=[]):T.current.some(B=>B.id===h.id)?A(h.id):k.current=k.current.filter(B=>B.id!==h.id))};return ot.subscribe(O),()=>ot.unsubscribe(O)},[P,t,n,o,A]),(0,Se.useEffect)(()=>{if(!P)return;let O=h=>{if(h.kind==="show"){let M=An(h.rawOpts,n,o);P.show(h.id,h.message,M)}else h.kind==="update"?P.update(h.id,h.message,h.patch):h.kind==="dismiss"&&P.dismiss(h.id)};return ot.subscribe(O),()=>ot.unsubscribe(O)},[P,n,o]),P){if(!P.Container)return null;let O=P.Container;return(0,On.createPortal)((0,ye.jsx)(O,{position:e}),document.body)}let u=e.endsWith("left"),w="";I===!0&&(w="rdd-toast-container--newest-top"),I===!1&&(w="rdd-toast-container--newest-bottom");let x=["rdd-toast-container",`rdd-toast-container--${e}`,w].filter(Boolean).join(" ");return(0,On.createPortal)((0,ye.jsx)("div",{className:x,style:{width:C},"aria-label":"Notifications","aria-live":"polite",children:R.map(O=>(0,ye.jsx)(Wr,{id:O.id,message:O.message,options:O.options,exiting:O.exiting,isLeft:u,showProgress:S,pauseOnHover:a,animation:s,onDismiss:A,onExited:H},O.id))}),document.body)}var $=Qt(require("react"),1),Fo=require("react-dom");var re=require("react/jsx-runtime"),ht=e=>e==="width"||e==="both",ut=e=>e==="height"||e==="both",Wo=(e,t)=>t==="inline"?ut(e)?"both":"width":ht(e)?"both":"height",bn=(e,t)=>t==="inline"?e==="both"?"height":ht(e)?null:e:e==="both"?"width":ut(e)?null:e,_o=(e,t)=>ut(t)?[]:ht(t)?e.startsWith("top-")?["top-left","top-right"]:["bottom-left","bottom-right"]:[e],Ar=(e,t)=>`${e.startsWith("top-")?"top":"bottom"}-${t}`,Or=(e,t)=>`${t}-${e.endsWith("-right")?"right":"left"}`,Ho=["top-left","top-right","bottom-left","bottom-right"],Bo=(0,$.createContext)(null),$o=(0,$.createContext)(null),Go=(0,$.createContext)(null),Ct=80;function Fr(e,t,n){let o=e.getBoundingClientRect(),a=t-o.left,s=n-o.top;return a<Ct&&s<Ct?"top-left":a>o.width-Ct&&s<Ct?"top-right":a<Ct&&s>o.height-Ct?"bottom-left":a>o.width-Ct&&s>o.height-Ct?"bottom-right":null}function Yo({children:e,className:t,style:n}){let[o,a]=(0,$.useState)({}),[s,I]=(0,$.useState)({}),[S,C]=(0,$.useState)({"top-left":[],"top-right":[],"bottom-left":[],"bottom-right":[]}),[P,R]=(0,$.useState)({}),[c,k]=(0,$.useState)(null),[T,A]=(0,$.useState)(null),[H,u]=(0,$.useState)(null),[w,x]=(0,$.useState)(()=>new Map),O=(0,$.useRef)(100),h=(0,$.useRef)(null),M=(0,$.useCallback)((V,J)=>(a(j=>({...j,[V]:J})),()=>a(j=>{let G={...j};return delete G[V],G})),[]),B=(0,$.useCallback)(V=>{O.current+=1;let J=O.current;I(j=>({...j,[V]:J})),u(V)},[]),D=(0,$.useCallback)((V,J,j=null)=>{let G=_o(J,j);C(ce=>{let we={"top-left":ce["top-left"].filter(Z=>Z!==V),"top-right":ce["top-right"].filter(Z=>Z!==V),"bottom-left":ce["bottom-left"].filter(Z=>Z!==V),"bottom-right":ce["bottom-right"].filter(Z=>Z!==V)};for(let Z of G)we[Z]=[...we[Z],V];return Ho.every(Z=>we[Z].length===ce[Z].length&&we[Z].every((Ye,Je)=>Ye===ce[Z][Je]))?ce:we})},[]),l=(0,$.useCallback)(V=>{C(J=>({"top-left":J["top-left"].filter(j=>j!==V),"top-right":J["top-right"].filter(j=>j!==V),"bottom-left":J["bottom-left"].filter(j=>j!==V),"bottom-right":J["bottom-right"].filter(j=>j!==V)}))},[]),E=(0,$.useCallback)((V,J)=>{R(j=>j[V]===J?j:{...j,[V]:J})},[]),_=(0,$.useCallback)((V,J)=>{x(j=>{let G=new Map(j);return G.set(V,J),G})},[]),q=(0,$.useCallback)(V=>{x(J=>{let j=new Map(J);return j.delete(V),j})},[]),Q=(0,$.useCallback)(()=>{x(new Map)},[]),ee=(0,$.useMemo)(()=>Array.from(w.keys()),[w]),ne=(0,$.useMemo)(()=>({registerToolbar:M,insetTop:o.top??0,insetBottom:o.bottom??0}),[M,o]),Pe=(0,$.useMemo)(()=>({managedWindowIds:ee,openManaged:_,closeManaged:q,closeAllManaged:Q}),[ee,_,q,Q]),se=(0,$.useMemo)(()=>({topId:H,zOrders:s,focusWindow:B,containerRef:h,stacks:S,dockedSizes:P,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}),[H,s,B,S,P,D,l,E,c,T,o]);return(0,re.jsx)(Bo.Provider,{value:ne,children:(0,re.jsx)($o.Provider,{value:Pe,children:(0,re.jsx)(Go.Provider,{value:se,children:(0,re.jsxs)("div",{ref:h,className:`rdd-panel-overlay-root${c!==null?" rdd-dragging-active":""}${t?" "+t:""}`,style:n,children:[e,c!==null&&(0,re.jsx)(_r,{hoveredZone:T}),Array.from(w.entries()).map(([V,J])=>(0,re.jsx)(_n,{id:V,title:J.title,icon:J.icon,open:!0,onClose:()=>q(V),defaultAnchor:J.anchor??"top-right",defaultWidth:J.width??320,defaultHeight:J.height??240,defaultStretch:J.stretch,children:J.content},V))]})})})})}function _r({hoveredZone:e}){return(0,re.jsx)(re.Fragment,{children:Ho.map(t=>(0,re.jsx)("div",{className:`rdd-panel-float-dropzone rdd-panel-float-dropzone--${t}${e===t?" rdd-panel-float-dropzone--hovered":""}`,"aria-hidden":"true"},t))})}function Xo({position:e,variant:t="transparent",buttonVariant:n="ghost",buttonSize:o,style:a,className:s,children:I}){let S=(0,$.useContext)(Bo),C=(0,$.useRef)(null),P=(0,$.useRef)(null);(0,$.useLayoutEffect)(()=>{let A=C.current;if(!A||!S)return;let H=()=>{let w=e==="top"||e==="bottom"?A.offsetHeight:A.offsetWidth;P.current?.(),P.current=S.registerToolbar(e,w)};H();let u=new ResizeObserver(H);return u.observe(A),()=>{u.disconnect(),P.current?.(),P.current=null}},[e,S?.registerToolbar]);let R={position:"absolute",zIndex:5,pointerEvents:"none",boxSizing:"border-box"};e==="top"?(R.top=0,R.left=0,R.right=0):e==="bottom"?(R.bottom=0,R.left=0,R.right=0):e==="left"?(R.insetInlineStart=0,R.top=S?.insetTop??0,R.bottom=S?.insetBottom??0):(R.insetInlineEnd=0,R.top=S?.insetTop??0,R.bottom=S?.insetBottom??0);let k=e==="left"||e==="right"?{...(S?.insetTop??0)>0?{paddingTop:0}:{},...(S?.insetBottom??0)>0?{paddingBottom:0}:{}}:{},T=o!=null?{"--rdd-panel-toolbar-btn-size":`${o}px`}:{};return(0,re.jsx)("div",{ref:C,className:`rdd-panel-toolbar rdd-panel-toolbar--${e}${s?" "+s:""}`,"data-variant":t,"data-btn-variant":n,style:{...R,...k,...T,...a},children:I})}function Vo({icon:e,onClick:t,disabled:n,title:o,variant:a}){return(0,re.jsx)("button",{type:"button",className:"rdd-panel-toolbar-btn",onClick:t,disabled:n,title:o,"aria-label":o,...a?{"data-variant":a}:{},children:e})}function Ko({icon:e,active:t,onToggle:n,disabled:o,title:a,variant:s}){return(0,re.jsx)("button",{type:"button",className:`rdd-panel-toolbar-btn${t?" rdd-panel-toolbar-btn--active":""}`,onClick:n,disabled:o,title:a,"aria-label":a,"aria-pressed":t,...s?{"data-variant":s}:{},children:e})}function qo(){return(0,re.jsx)("span",{className:"rdd-panel-toolbar__sep","aria-hidden":"true"})}function jo(){return(0,re.jsx)("span",{className:"rdd-panel-toolbar__spacer","aria-hidden":"true"})}function Zo({children:e}){return(0,re.jsx)("span",{className:"rdd-panel-toolbar__item",children:e})}function Uo({children:e}){return(0,re.jsx)("div",{className:"rdd-panel-toolbar__center",children:e})}function Jo({placeholder:e="Search\u2026",onSearch:t,onSelect:n}){let[o,a]=(0,$.useState)(!1),[s,I]=(0,$.useState)(""),[S,C]=(0,$.useState)([]),[P,R]=(0,$.useState)(null),c=(0,$.useRef)(null),k=(0,$.useRef)(null),T=(0,$.useRef)(null),A=(0,$.useRef)(null),H=()=>{a(!0),setTimeout(()=>k.current?.focus({preventScroll:!0}),0)},u=()=>{a(!1),I(""),C([]),R(null),T.current?.abort(),A.current&&clearTimeout(A.current)},w=D=>{let l=D.target.value;if(I(l),T.current?.abort(),A.current&&clearTimeout(A.current),!l.trim()){C([]),R(null);return}A.current=setTimeout(async()=>{let E=new AbortController;T.current=E;try{let _=await t(l,E.signal);if(!E.signal.aborted){C(_);let q=c.current;if(q&&_.length>0){let Q=q.getBoundingClientRect(),ee=Math.max(Q.width,240),ne=Q.left;ne+ee>window.innerWidth-8&&(ne=window.innerWidth-ee-8),R({top:Q.bottom+4,left:ne,width:ee})}else R(null)}}catch{}},300)},x=D=>{n(D),u()},O=D=>{c.current?.contains(D.relatedTarget)||u()},h=D=>{D.key==="Escape"&&u()},M=(0,$.useMemo)(()=>{let D={};for(let l of S){let E=l.group??"";D[E]||(D[E]=[]),D[E].push(l)}return D},[S]),B=(0,re.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,re.jsx)("circle",{cx:"6.5",cy:"6.5",r:"4.5"}),(0,re.jsx)("line",{x1:"10",y1:"10",x2:"14",y2:"14"})]});return o?(0,re.jsxs)("div",{ref:c,className:"rdd-panel-toolbar-search rdd-panel-toolbar-search--open",onBlur:O,children:[(0,re.jsx)("button",{type:"button",className:"rdd-panel-toolbar-btn",onClick:u,"aria-label":"Close search",title:"Close search",children:B}),(0,re.jsx)("input",{ref:k,className:"rdd-panel-toolbar-search__input",type:"text",value:s,onChange:w,onKeyDown:h,placeholder:e,autoComplete:"off"}),P&&S.length>0&&(0,Fo.createPortal)((0,re.jsx)("div",{className:"rdd-panel-toolbar-search__dropdown",style:{position:"fixed",top:P.top,left:P.left,width:P.width},onMouseDown:D=>D.preventDefault(),children:Object.entries(M).map(([D,l])=>(0,re.jsxs)($.default.Fragment,{children:[D&&(0,re.jsx)("div",{className:"rdd-panel-toolbar-search__group",children:D}),l.map(E=>(0,re.jsxs)("button",{type:"button",className:"rdd-panel-toolbar-search__item",onClick:()=>x(E),children:[E.icon&&(0,re.jsx)("span",{className:"rdd-panel-toolbar-search__item-icon",children:E.icon}),(0,re.jsx)("span",{className:"rdd-panel-toolbar-search__item-label",children:E.label}),E.description&&(0,re.jsx)("span",{className:"rdd-panel-toolbar-search__item-desc",children:E.description})]},E.id))]},D||"__default__"))}),document.body)]}):(0,re.jsx)("div",{ref:c,className:"rdd-panel-toolbar-search",children:(0,re.jsx)("button",{type:"button",className:"rdd-panel-toolbar-btn",onClick:H,title:"Search","aria-label":"Search",children:B})})}function _n(e){let t=(0,$.useContext)(Go);return e.open?(0,re.jsx)(Gr,{ctx:t,...e},e.id):null}var Hr=120,Br=60,$t=8,$r=8,Ao=16,Oo=40;function Gr({id:e,title:t,icon:n,defaultAnchor:o,defaultWidth:a,defaultHeight:s,defaultStretch:I,stretch:S,onPlacementChange:C,stretchable:P=!0,children:R,ctx:c,onClose:k}){let T=(0,$.useContext)(Dt)?.isRtl??!1,A=et(),H=nt(),[u,w]=(0,$.useState)("docked"),[x,O]=(0,$.useState)(o),[h,M]=(0,$.useState)(I??null),B=S!==void 0,D=B?S??null:h,[l,E]=(0,$.useState)(null),[_,q]=(0,$.useState)({w:a,h:s}),Q=(0,$.useRef)(null),ee=(0,$.useRef)(u);ee.current=u;let ne=(0,$.useRef)(l);ne.current=l;let Pe=(0,$.useRef)(_);Pe.current=_;let se=(0,$.useRef)(D);se.current=D;let V=(0,$.useRef)(x);V.current=x;let J=(0,$.useRef)(C);J.current=C;let[j,G]=(0,$.useState)({inline:!1,block:!1}),ce=(0,$.useRef)(j);ce.current=j;let we=(0,$.useRef)(0),We=(0,$.useCallback)((U,te)=>{O(U),B||M(te),J.current?.({anchor:U,stretch:te})},[B]),Z=(0,$.useRef)(null);(0,$.useLayoutEffect)(()=>{u==="docked"&&c?.dockWindow(e,x,D)},[u,x,D]),(0,$.useLayoutEffect)(()=>()=>{c?.undockWindow(e)},[]);let Ye=(0,$.useRef)(!1);(0,$.useEffect)(()=>{if(process.env.NODE_ENV!=="development"||Ye.current||u!=="docked"||!ut(D)||!c)return;let U=x.endsWith("-right")?"right":"left",te=[`top-${U}`,`bottom-${U}`].flatMap(ue=>c.stacks[ue]??[]).filter(ue=>ue!==e);te.length!==0&&(Ye.current=!0,console.warn(`[react-dockable-desktop] PanelFloatingWindow "${e}" stretches the block axis (stretch: "${D}") while ${te.length} other widget(s) are anchored to the same side (${te.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,x,c?.stacks,e]),(0,$.useEffect)(()=>{c?.reportDockedSize(e,_.h)},[_.h]);let Je=c?.zOrders[e]??101,Qe=!c||c.topId===e,Ke=()=>{let U=Q.current?.offsetParent;return{cw:U?.clientWidth??9999,ch:U?.clientHeight??9999}},at=()=>{let U=c?.insetInlineStart??0,te=c?.insetInlineEnd??0;return{left:(T?te:U)+$t,right:(T?U:te)+$t,top:c?.insetTop??0,bottom:c?.insetBottom??0}},lt=()=>{c?.focusWindow(e)},dt=U=>{if(U.button!==0)return;U.preventDefault();let te,ue;if(ee.current==="docked"){let xe=Q.current,Ie=c?.containerRef?.current;if(xe&&Ie){let Ee=xe.getBoundingClientRect(),Ae=Ie.getBoundingClientRect();te=Ee.left-Ae.left,ue=Ee.top-Ae.top}else te=$t,ue=c?.insetTop??0}else te=ne.current?.x??0,ue=ne.current?.y??0;Z.current={mouseX:U.clientX,mouseY:U.clientY,posX:te,posY:ue,hasDragged:!1},Q.current?.setPointerCapture(U.pointerId)},it=U=>te=>{if(te.button!==0)return;te.preventDefault(),te.stopPropagation();let ue=0,xe=0;if(ee.current==="free")ue=ne.current?.x??0,xe=ne.current?.y??0;else{let Oe=Q.current,Fe=Oe?.offsetParent;if(Oe&&Fe){let _e=Oe.getBoundingClientRect(),Ne=Fe.getBoundingClientRect();ue=_e.left-Ne.left,xe=_e.top-Ne.top}}let Ie=Q.current?.getBoundingClientRect(),Ee={x:ue,y:xe,w:ht(se.current)&&Ie?Ie.width:Pe.current.w,h:ut(se.current)&&Ie?Ie.height:Pe.current.h},Ae=U.includes("e")||U.includes("w"),Le=U.includes("n")||U.includes("s"),ze=!1,Te={inline:!1,block:!1},ct=()=>{if(ze||ee.current!=="docked")return;let Oe=se.current,Fe=Ae&&ht(Oe),_e=Le&&ut(Oe);if(!Fe&&!_e)return;ze=!0;let Ne=Oe,qe=V.current;if(Fe){Ne=bn(Ne,"inline");let He=U.includes("e");qe=Ar(qe,He!==T?"left":"right")}_e&&(Ne=bn(Ne,"block"),qe=Or(qe,U.includes("s")?"top":"bottom")),We(qe,Ne)};ft({element:te.currentTarget,pointerId:te.pointerId,startClientX:te.clientX,startClientY:te.clientY,captureStart:()=>Ee,activeClasses:[{el:document.body,classes:["rdd-resizing-active"]}],onMove:(Oe,Fe,_e)=>{let{cw:Ne,ch:qe}=Ke(),He=ee.current==="docked"?at():{left:0,right:0,top:0,bottom:0},{x:Gt,y:Yt,w:i,h:v}=_t(U,Oe,Fe,_e,{minW:Hr,minH:Br,maxW:Ne-He.right-_e.x,maxH:qe-He.bottom-_e.y,minX:He.left,minY:He.top});if(ct(),ee.current==="docked"&&P){let d=Ne-He.left-He.right,L=qe-He.top-He.bottom-we.current,r=se.current,y={...Te};Ae&&!ht(r)&&(i>=d-Ao?y.inline=!0:Te.inline&&i<d-Oo&&(y.inline=!1)),Le&&!ut(r)&&(v>=L-Ao?y.block=!0:Te.block&&v<L-Oo&&(y.block=!1)),(y.inline!==Te.inline||y.block!==Te.block)&&(Te=y,G(y))}let g=ze?bn(bn(se.current,Ae?"inline":"block"),Le?"block":"inline"):se.current;q(d=>({w:ht(g)?d.w:i,h:ut(g)?d.h:v})),ee.current==="free"&&E({x:Gt,y:Yt})},onEnd:Oe=>{if(!Te.inline&&!Te.block){(ce.current.inline||ce.current.block)&&G({inline:!1,block:!1});return}q(_e=>({w:Te.inline?Oe.w:_e.w,h:Te.block?Oe.h:_e.h}));let Fe=se.current;Te.inline&&(Fe=Wo(Fe,"inline")),Te.block&&(Fe=Wo(Fe,"block")),We(V.current,Fe),G({inline:!1,block:!1})}})},st=U=>{if(Z.current){let te=Z.current;if(!te.hasDragged){if(Math.abs(U.clientX-te.mouseX)+Math.abs(U.clientY-te.mouseY)<4)return;if(te.hasDragged=!0,ee.current==="docked"){if(se.current){let ze=Q.current?.getBoundingClientRect();ze&&q({w:Math.round(ze.width),h:Math.round(ze.height)}),We(V.current,null)}c?.undockWindow(e),w("free")}document.body.classList.add("rdd-dragging-active"),c?.setDraggingId(e)}let{cw:ue,ch:xe}=Ke(),Ie=Math.max(0,Math.min(te.posX+U.clientX-te.mouseX,ue-Pe.current.w)),Ee=Math.max(0,Math.min(te.posY+U.clientY-te.mouseY,xe-Pe.current.h));E({x:Ie,y:Ee});let Ae=c?.containerRef?.current;if(Ae){let Le=Fr(Ae,U.clientX,U.clientY);c?.setHoveredZone(Le&&T?qt(Le):Le)}}},ke=()=>{if(Z.current?.hasDragged){let U=c?.hoveredZone;U&&(c?.dockWindow(e,U,se.current),w("docked"),E(null),We(U,se.current)),c?.setHoveredZone(null),c?.setDraggingId(null)}document.body.classList.remove("rdd-dragging-active"),Z.current=null},ae=()=>{Z.current?.hasDragged&&(c?.setHoveredZone(null),c?.setDraggingId(null)),document.body.classList.remove("rdd-dragging-active"),Z.current=null},fe;if(u==="docked"&&c){let U=_o(x,D),te=0,ue=U.length===0;for(let Ie of U){let Ee=c.stacks[Ie]??[],Ae=Ee.indexOf(e);if(Ae===-1)continue;ue=!0;let Le=0;for(let ze=0;ze<Ae;ze++)Le+=(c.dockedSizes[Ee[ze]]??s)+$r;te=Math.max(te,Le)}we.current=te;let xe=at();fe={zIndex:Je,transition:"top 0.2s ease, bottom 0.2s ease",opacity:ue?void 0:0,pointerEvents:ue?void 0:"none"},ht(D)?(fe.insetInlineStart=(c.insetInlineStart??0)+$t,fe.insetInlineEnd=(c.insetInlineEnd??0)+$t):(fe[x.endsWith("-right")?"insetInlineEnd":"insetInlineStart"]=$t,fe.width=_.w),ut(D)?(fe.top=xe.top,fe.bottom=xe.bottom):x.startsWith("top-")?(fe.top=xe.top+te,fe.height=_.h):(fe.bottom=xe.bottom+te,fe.height=_.h)}else fe={left:l?.x??0,top:l?.y??0,width:_.w,height:_.h,zIndex:Je};let Ve=$.default.useMemo(()=>{if(u==="free")return["n","ne","e","se","s","sw","w","nw"];let U=x.startsWith("top-")?"s":"n",ue=x.endsWith("-right")!==T?"w":"e",xe=ht(D),Ie=ut(D),Ee=[];return Ee.push(...xe?["e","w"]:[ue]),Ee.push(...Ie?["n","s"]:[U]),!xe&&!Ie&&Ee.push(`${U}${ue}`),Ee},[u,x,T,D]),Xe=(0,re.jsxs)("svg",{width:"8",height:"8",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",children:[(0,re.jsx)("line",{x1:"1",y1:"1",x2:"9",y2:"9"}),(0,re.jsx)("line",{x1:"9",y1:"1",x2:"1",y2:"9"})]});return(0,re.jsxs)("div",{ref:Q,dir:T?"rtl":"ltr",className:["rdd-panel-float",Qe?"rdd-panel-float--active":"",j.inline||j.block?"rdd-panel-float--snapping":""].filter(Boolean).join(" "),style:fe,onPointerDown:lt,onPointerMove:st,onPointerUp:ke,onPointerCancel:ae,children:[(0,re.jsxs)("div",{className:"rdd-panel-float__header",onPointerDown:dt,children:[n&&(0,re.jsx)("span",{className:"rdd-panel-float__icon",children:n}),(0,re.jsx)("span",{className:"rdd-panel-float__title",children:me(t,A)}),(0,re.jsx)("button",{type:"button",className:"rdd-panel-float__close",onClick:k,onPointerDown:U=>U.stopPropagation(),title:me(H.closeTooltip,A),"aria-label":me(H.closeTooltip,A),children:Xe})]}),(0,re.jsx)("div",{className:"rdd-panel-float__body",children:R}),Ve.map(U=>(0,re.jsx)("div",{className:`rdd-resize-handle rdd-resize-${U}`,onPointerDown:it(U)},U))]})}function Qo(){let[e,t]=(0,$.useState)(!1),n=(0,$.useCallback)(()=>{t(!0)},[]),o=(0,$.useCallback)(()=>{t(!1)},[]);return{isOpen:e,open:n,close:o}}var Yr=[];function er(){let e=(0,$.useContext)($o),t=e?.managedWindowIds??Yr;return(0,$.useMemo)(()=>({open:(n,o)=>e?.openManaged(n,o),close:n=>e?.closeManaged(n),closeAll:()=>e?.closeAllManaged(),isOpen:n=>t.includes(n),openIds:t}),[e,t])}0&&(module.exports={ConfirmationForm,ContextMenu,ContextMenuProvider,DefaultContextMenuAdapter,DockableDesktopProvider,FormContainerContext,FormContainerProvider,LeftPanelRenderer,ModalStackRenderer,PanelContributionProvider,PanelFloatingWindow,PanelOverlayRoot,PanelProvider,PanelRegistry,PanelRegistryClass,PanelToolbar,PanelToolbarItem,PanelToolbarSeparator,RightPanelRenderer,SecondarySidebar,SidePanelRenderer,Sidebar,ToastContainer,Toolbar,ToolbarButton,ToolbarCenter,ToolbarProvider,ToolbarSearchInput,ToolbarSpacer,ToolbarToggle,WindowManager,WindowManagerProvider,WorkspaceClient,computeResizedRect,defaultPredefinedMessages,formatLabel,isSerializable,sidebarSectionToTab,startPointerDrag,toast,useActivePanelContribution,useColorScheme,useFormContainer,useFormatMessage,useMergedSidebarTabs,useMergedToolbarItems,usePanelActions,usePanelContext,usePanelContextMenu,usePanelContribution,usePanelFloatingWindow,usePanelFloatingWindowManager,usePanelId,usePanelSize,usePanelState,usePredefinedMessages,useRegistry,useShowContextMenu,useSidebar,useSidebarTab,useStyleClasses,useToolbar,useWindowManagerActions,useWindowManagerState});
|
|
23
|
+
3. Verify styles.css is imported \u2014 it anchors html, body, #root to 100% height.`)}Rt({width:Math.max(100,I.width),height:Math.max(100,I.height)})});return a.observe(n),()=>{a.disconnect()}},[]),(0,Y.useEffect)(()=>{let n=We.width,l=We.height;s.floating.forEach(a=>{let m=typeof a.width=="string"?parseFloat(a.width):a.width,I=typeof a.height=="string"?parseFloat(a.height):a.height,L=typeof a.x=="string"?parseFloat(a.x):a.x,y=typeof a.y=="string"?parseFloat(a.y):a.y,S=m,$=I,Z=L,B=y,Q=!1;if(S>n&&(S=Math.max(200,n-20),Q=!0),$>l&&($=Math.max(150,l-40),Q=!0),!a.anchor){let ae=n-100;Z>ae&&(Z=Math.max(0,ae),Q=!0);let de=l-40;B>de&&(B=Math.max(0,de),Q=!0)}Q&&c(a.id,{x:Z,y:B,width:S,height:$})})},[We,s.floating,c]),(0,Y.useEffect)(()=>{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 L=m.getAttribute("data-window-id");L&&(C(L),M(L));return}let I=a.closest(".rdd-workspace-panel");if(I){let L=I.getAttribute("data-active-panel-id");L&&C(L)}};return document.addEventListener("pointerdown",n),()=>{document.removeEventListener("pointerdown",n)}},[M,C]);let Xt=(n,l)=>{l.preventDefault();let a=s.floating.find(B=>B.id===n);if(!a||a.maximized)return;M(n);let m=l.currentTarget,I=m.closest(".rdd-floating-window"),L=l.clientX,y=l.clientY,S=I?I.offsetLeft:0,$=I?I.offsetTop:0,Z=()=>{let B=Ve.current,Q=ye.current,ae=st.current,de=Xe.current;if(de)c(n,{anchor:j?jt(de):de});else if(ae)R(n,ut(ae));else if(Q){let Re=Q.index;Q.side==="right"&&(Re+=1),g(n,Q.leafId,Re)}else B&&F(n,B.leafId,ut(B.position));Ge(null),Me()};if(l.pointerType==="touch"){let B=l.pointerId,Q=!1,ae=()=>{Q=!0,clearTimeout(Re),m.removeEventListener("pointermove",de),m.removeEventListener("pointerup",ae),m.removeEventListener("pointercancel",ae)},de=Ye=>{Math.hypot(Ye.clientX-L,Ye.clientY-y)>Le&&ae()},Re=setTimeout(()=>{if(Q)return;m.removeEventListener("pointermove",de),m.removeEventListener("pointerup",ae),m.removeEventListener("pointercancel",ae);try{m.setPointerCapture(B)}catch{return}m.classList.add("rdd-long-press-active"),document.body.classList.add("rdd-dragging-active"),D(n);let Ye=It=>{let Lt=It.clientX-L,Nt=It.clientY-y;c(n,{x:S+Lt,y:$+Nt,anchor:null}),Ae(It.clientX,It.clientY)},fe=()=>{m.classList.remove("rdd-long-press-active"),document.body.classList.remove("rdd-dragging-active"),m.removeEventListener("pointermove",Ye),m.removeEventListener("pointerup",fe),m.removeEventListener("pointercancel",Se),Z()},Se=()=>{m.classList.remove("rdd-long-press-active"),document.body.classList.remove("rdd-dragging-active"),m.removeEventListener("pointermove",Ye),m.removeEventListener("pointerup",fe),m.removeEventListener("pointercancel",Se),Me()};m.addEventListener("pointermove",Ye),m.addEventListener("pointerup",fe),m.addEventListener("pointercancel",Se)},Ie);m.addEventListener("pointermove",de),m.addEventListener("pointerup",ae),m.addEventListener("pointercancel",ae)}else{let B=!1,Q=Re=>{let Ye=Re.clientX-L,fe=Re.clientY-y;!B&&(Math.abs(Ye)>5||Math.abs(fe)>5)&&(B=!0,D(n)),B&&c(n,{x:S+Ye,y:$+fe,anchor:null})},ae=()=>{document.body.classList.remove("rdd-dragging-active"),window.removeEventListener("pointermove",Q),window.removeEventListener("pointerup",ae),window.removeEventListener("pointercancel",de),B&&Z()},de=()=>{document.body.classList.remove("rdd-dragging-active"),window.removeEventListener("pointermove",Q),window.removeEventListener("pointerup",ae),window.removeEventListener("pointercancel",de),B&&Me()};document.body.classList.add("rdd-dragging-active"),window.addEventListener("pointermove",Q),window.addEventListener("pointerup",ae),window.addEventListener("pointercancel",de)}},Qe=(n,l,a)=>{a.preventDefault(),a.stopPropagation();let m=s.floating.find(Ye=>Ye.id===n);if(!m||m.maximized)return;M(n);let I=a.currentTarget,L=I.closest(".rdd-floating-window"),y={x:L?L.offsetLeft:0,y:L?L.offsetTop:0,w:L?L.offsetWidth:400,h:L?L.offsetHeight:300},S=We.width,$=We.height,Z=typeof m.x=="string"?parseFloat(m.x):m.x,B=typeof m.y=="string"?parseFloat(m.y):m.y,Q=typeof m.width=="string"?parseFloat(m.width):m.width,ae=typeof m.height=="string"?parseFloat(m.height):m.height,de=l==="se"&&Math.abs(Z+Q-S)<4,Re=l==="se"&&Math.abs(B+ae-$)<4;ft({element:I,pointerId:a.pointerId,startClientX:a.clientX,startClientY:a.clientY,captureStart:()=>y,activeClasses:[{el:document.body,classes:["rdd-resizing-active"]}],onMove:(Ye,fe,Se)=>{let It=$t(l,Ye,fe,Se,{minW:200,minH:150}),{x:Lt,y:Nt,w:yn,h:Pn}=It;de&&(Lt=S-yn,Lt<0&&(Lt=0,yn=S)),Re&&(Nt=$-Pn,Nt<0&&(Nt=0,Pn=$)),c(n,{x:Lt,y:Nt,width:yn,height:Pn})}})},bt=n=>{if(ne.current){let l=n==="left"?-150:150;ne.current.scrollBy({left:l,behavior:"smooth"})}},i=(0,Y.useCallback)(()=>{V.current&&clearTimeout(V.current),ie(!0)},[]),f=(0,Y.useCallback)(()=>{V.current=setTimeout(()=>ie(!1),400)},[]);(0,Y.useEffect)(()=>{o==="autohide"&&s.minimized.length>J.current&&(V.current&&clearTimeout(V.current),ie(!0),V.current=setTimeout(()=>ie(!1),2e3)),J.current=s.minimized.length},[s.minimized.length,o]);let p=un();return(0,Y.useEffect)(()=>(e?document.documentElement.setAttribute("data-workspace-skin",e):document.documentElement.removeAttribute("data-workspace-skin"),()=>{document.documentElement.removeAttribute("data-workspace-skin")}),[e]),(0,Y.useEffect)(()=>(p==="light"?document.documentElement.setAttribute("data-color-scheme","light"):document.documentElement.removeAttribute("data-color-scheme"),()=>{document.documentElement.removeAttribute("data-color-scheme")}),[p]),(0,Y.useEffect)(()=>(d?document.documentElement.classList.remove("rdd-no-animations"):document.documentElement.classList.add("rdd-no-animations"),()=>{document.documentElement.classList.remove("rdd-no-animations")}),[d]),(0,h.jsxs)("div",{className:`rdd-workspace${d?"":" 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:[(0,h.jsxs)("div",{ref:Je,className:s.draggedPanelId?"rdd-dragging-active":void 0,style:{flexGrow:1,width:"100%",position:"relative",overflow:"hidden"},children:[s.draggedPanelId!==null&&(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)("div",{"data-edge-trigger":"left",className:"rdd-workspace-edge-trigger rdd-edge-trigger-left",onPointerEnter:()=>Te("left"),onPointerLeave:()=>Te(null)}),(0,h.jsx)("div",{"data-edge-trigger":"right",className:"rdd-workspace-edge-trigger rdd-edge-trigger-right",onPointerEnter:()=>Te("right"),onPointerLeave:()=>Te(null)}),(0,h.jsx)("div",{"data-edge-trigger":"top",className:"rdd-workspace-edge-trigger rdd-edge-trigger-top",onPointerEnter:()=>Te("top"),onPointerLeave:()=>Te(null)}),(0,h.jsx)("div",{"data-edge-trigger":"bottom",className:"rdd-workspace-edge-trigger rdd-edge-trigger-bottom",onPointerEnter:()=>Te("bottom"),onPointerLeave:()=>Te(null)})]}),s.draggedPanelId!==null&&["top-left","top-right","bottom-left","bottom-right"].map(n=>(0,h.jsx)("div",{className:`rdd-corner-zone rdd-corner-zone--${n}${se===n?" rdd-corner-zone--hovered":""}`,onPointerEnter:()=>{Ge(n),Te(null)},onPointerLeave:()=>Ge(null),"aria-hidden":"true"},n)),s.draggedPanelId!==null&&dt!==null&&(0,h.jsx)("div",{className:"rdd-workspace-edge-preview",style:(()=>{let n=`${s.edgeSplitRatio*100}%`;switch(dt){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}}})()}),(0,h.jsx)("div",{style:{width:"100%",height:"100%",overflow:"hidden",position:"relative"},children:s.gridRoot?(0,h.jsx)(co,{node:s.gridRoot,path:[],onTabRightClick:Fe,activeDropZone:Ze,onHoverDropZone:Ee,onTabDragStart:ze,hoveredTab:te,onTabHover:ke,defaultPanelIcon:t,onRequestClosePanel:N}):(0,h.jsx)("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,I=s.activePanelId===n.id,y=T.get(l.component)?.defaultOptions;return(0,h.jsxs)("div",{"data-window-id":n.id,dir:s.dir,onPointerDownCapture:()=>{C(n.id),M(n.id)},className:`rdd-floating-window ${a?"rdd-maximized":""} ${I?"rdd-window-focused":""} ${A??""}`,style:(()=>{let Z=typeof n.width=="number"?`${n.width}px`:n.width,B=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 Q=s.floating.filter(fe=>fe.anchor===n.anchor&&!fe.maximized),ae=Q.findIndex(fe=>fe.id===n.id),de=8;for(let fe=0;fe<ae;fe++){let Se=typeof Q[fe].height=="number"?Q[fe].height:parseFloat(Q[fe].height);de+=Se+8}let Re=n.anchor.startsWith("top");return{position:"absolute",[n.anchor.endsWith("-right")?"insetInlineEnd":"insetInlineStart"]:8,[Re?"top":"bottom"]:de,width:Z,height:B,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:Z,height:B,zIndex:n.z,pointerEvents:m?"none":"auto"}})(),children:[(0,h.jsxs)("div",{onDoubleClick:()=>w(n.id),onPointerDown:S=>{y?.canDrag!==!1&&Xt(n.id,S)},className:"rdd-floating-window-titlebar rdd-cursor-move",style:{cursor:a||y?.canDrag===!1?"default":"move"},children:[(0,h.jsxs)("span",{className:"rdd-floating-window-title",children:[(0,h.jsx)("span",{className:"rdd-window-title-icon",children:y?.icon||t||En}),(0,h.jsxs)("span",{children:[ge(l.title,z),l.dirty?" *":""]})]}),(0,h.jsxs)("div",{className:"rdd-titlebar-actions",style:{gap:"var(--rdd-header-button-gap, 4px)"},onPointerDown:S=>S.stopPropagation(),children:[y?.renderHeaderActions&&(0,h.jsx)("div",{className:"rdd-window-header-actions",children:y.renderHeaderActions(n.id)}),W(n.id).length>0&&(0,h.jsx)("button",{type:"button",className:"rdd-custom-tab-btn rdd-btn-more-actions",title:"More actions",onClick:S=>{S.stopPropagation();let $=W(n.id);$.length!==0&&v({event:S,items:$})},children:(0,h.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"currentColor",style:{display:"block"},children:[(0,h.jsx)("circle",{cx:"12",cy:"5",r:"2"}),(0,h.jsx)("circle",{cx:"12",cy:"12",r:"2"}),(0,h.jsx)("circle",{cx:"12",cy:"19",r:"2"})]})}),(0,h.jsx)("button",{type:"button",title:a?ge(u.restoreSize,z):ge(u.maximize,z),onClick:()=>w(n.id),className:"rdd-custom-tab-btn rdd-btn-maximize-tab",children:(0,h.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,h.jsx)("rect",{x:"4",y:"4",width:"16",height:"16",rx:"1.5"})})}),y?.canMinimize!==!1&&(0,h.jsx)("button",{type:"button",title:ge(u.minimize,z),onClick:()=>P(n.id),className:"rdd-custom-tab-btn rdd-btn-minimize-tab",children:(0,h.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"3",children:(0,h.jsx)("path",{d:"M5 12h14"})})}),y?.canClose!==!1&&(0,h.jsx)("button",{type:"button",title:ge(u.close,z),onClick:()=>N(n.id),className:"rdd-custom-tab-btn rdd-btn-close-tab",children:(0,h.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"3",children:(0,h.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]})]}),(0,h.jsx)("div",{className:K??void 0,style:{flexGrow:1,width:"100%",overflow:"hidden",position:"relative",isolation:"isolate"},children:(0,h.jsx)(lo,{panelId:n.id},n.id)}),!a&&(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)("div",{onPointerDown:S=>Qe(n.id,"n",S),className:"rdd-resize-handle rdd-resize-n"}),(0,h.jsx)("div",{onPointerDown:S=>Qe(n.id,"ne",S),className:"rdd-resize-handle rdd-resize-ne"}),(0,h.jsx)("div",{onPointerDown:S=>Qe(n.id,"e",S),className:"rdd-resize-handle rdd-resize-e"}),(0,h.jsx)("div",{onPointerDown:S=>Qe(n.id,"se",S),className:"rdd-resize-handle rdd-resize-se"}),(0,h.jsx)("div",{onPointerDown:S=>Qe(n.id,"s",S),className:"rdd-resize-handle rdd-resize-s"}),(0,h.jsx)("div",{onPointerDown:S=>Qe(n.id,"sw",S),className:"rdd-resize-handle rdd-resize-sw"}),(0,h.jsx)("div",{onPointerDown:S=>Qe(n.id,"w",S),className:"rdd-resize-handle rdd-resize-w"}),(0,h.jsx)("div",{onPointerDown:S=>Qe(n.id,"nw",S),className:"rdd-resize-handle rdd-resize-nw"})]})]},n.id)})]}),(o==="always"||s.minimized.length>0)&&(0,h.jsxs)("div",{className:["rdd-taskbar-footer-container",`rdd-taskbar-mode-${o}`,o==="autohide"&&ve?"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"&&(0,h.jsx)("div",{className:"rdd-taskbar-peek-handle"}),(0,h.jsx)("button",{type:"button",onClick:()=>bt("left"),className:"rdd-taskbar-nav-btn",style:{display:s.minimized.length>4?"block":"none"},children:"\u25C0"}),(0,h.jsx)("div",{ref:ne,className:"rdd-taskbar-items-container",style:{scrollSnapType:"x mandatory"},children:s.minimized.map(n=>{let a=T.get(n.component)?.defaultOptions?.icon||t||En;return(0,h.jsx)("div",{onClick:()=>{be.current!=="touch"&&(G(null),b(n.id))},onContextMenu:m=>De(n.id,m),onPointerDown:m=>{if(be.current=m.pointerType,m.pointerType!=="touch")return;let I=m.currentTarget,L=m.clientX,y=m.clientY,S=m.pointerId,$=!1,Z=()=>{$=!0,clearTimeout(ae),I.removeEventListener("pointermove",Q),I.removeEventListener("pointerup",B),I.removeEventListener("pointercancel",Z)},B=()=>{Z();let de=I.getBoundingClientRect();X?.id===n.id?(b(n.id),G(null)):G({id:n.id,rect:de,title:n.title,component:n.component,fromTouch:!0})},Q=de=>{Math.hypot(de.clientX-L,de.clientY-y)>Le&&Z()},ae=setTimeout(()=>{if($)return;I.removeEventListener("pointermove",Q),I.removeEventListener("pointerup",B),I.removeEventListener("pointercancel",Z);try{I.setPointerCapture(S)}catch{return}navigator.vibrate&&navigator.vibrate(10);let de=Re=>{I.removeEventListener("pointerup",de),I.removeEventListener("pointercancel",de),De(n.id,Re)};I.addEventListener("pointerup",de),I.addEventListener("pointercancel",de)},Ie);I.addEventListener("pointermove",Q),I.addEventListener("pointerup",B),I.addEventListener("pointercancel",Z)},onPointerEnter:m=>{if(m.pointerType==="touch"||Be)return;le.current&&clearTimeout(le.current);let I=m.currentTarget.getBoundingClientRect();m.clientX>=I.left&&m.clientX<=I.right&&m.clientY>=I.top&&m.clientY<=I.bottom&&G({id:n.id,rect:I,title:n.title,component:n.component})},onPointerLeave:m=>{m.pointerType!=="touch"&&(le.current=setTimeout(()=>{G(null)},150))},className:"rdd-taskbar-glassmorphic-item",style:{backdropFilter:"blur(6px)",transition:"all 0.2s",cursor:"pointer",scrollSnapAlign:"start",width:"38px",height:"38px",position:"relative",padding:0},children:(0,h.jsx)("span",{className:"rdd-taskbar-item-icon",children:a})},n.id)})}),X&&(0,kn.createPortal)((0,h.jsxs)("div",{className:"rdd-taskbar-item-tooltip",dir:s.dir,style:{position:"fixed",left:`${X.rect.left+X.rect.width/2}px`,top:`${X.rect.top-8}px`,transform:"translateX(-50%) translateY(-100%)",opacity:1,pointerEvents:"auto",zIndex:999999},onPointerEnter:()=>{le.current&&clearTimeout(le.current)},onPointerLeave:n=>{n.pointerType!=="touch"&&G(null)},onClick:()=>{b(X.id),G(null)},onContextMenu:n=>De(X.id,n),onPointerDown:n=>{if(n.pointerType!=="touch")return;let l=X.id,a=n.currentTarget,m=n.clientX,I=n.clientY,L=n.pointerId,y=!1,S=()=>{y=!0,clearTimeout(Z),a.removeEventListener("pointermove",$),a.removeEventListener("pointerup",S),a.removeEventListener("pointercancel",S)},$=B=>{Math.hypot(B.clientX-m,B.clientY-I)>Le&&S()},Z=setTimeout(()=>{if(y)return;a.removeEventListener("pointermove",$),a.removeEventListener("pointerup",S),a.removeEventListener("pointercancel",S);try{a.setPointerCapture(L)}catch{return}navigator.vibrate&&navigator.vibrate(10);let B=Q=>{a.removeEventListener("pointerup",B),a.removeEventListener("pointercancel",B),De(l,Q)};a.addEventListener("pointerup",B),a.addEventListener("pointercancel",B)},Ie);a.addEventListener("pointermove",$),a.addEventListener("pointerup",S),a.addEventListener("pointercancel",S)},children:[(0,h.jsxs)("div",{className:"rdd-tooltip-header-row",children:[(0,h.jsxs)("span",{className:"rdd-tooltip-title-text rdd-text-truncate",style:{maxWidth:"140px"},children:[ge(X.title,z),s.panels[X.id]?.dirty?" *":""]}),(0,h.jsx)("span",{onClick:n=>{n.stopPropagation(),N(X.id),G(null)},title:ge(u.closePanel,z),className:"rdd-tooltip-close-x",children:(0,h.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,h.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),(0,h.jsx)(hr,{panelId:X.id})]}),document.body),(0,h.jsx)("button",{type:"button",onClick:()=>bt("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=ao(n);return(0,kn.createPortal)((0,h.jsx)(br,{panelId:n,children:(0,h.jsx)("div",{style:{width:"100%",height:"100%"},dir:s.dir,children:mr(n,l,T)})}),a,n)}),U===null&&(0,h.jsx)(r.Component,{ref:ee,theme:"dark",formatMessageProvider:z,onShow:()=>q(!0),onHide:()=>q(!1)}),s.draggedPanelId!==null&&!s.floating.some(n=>n.id===s.draggedPanelId)&&(0,h.jsxs)("div",{className:"rdd-drag-ghost-tab",style:{left:at.x+12,top:at.y+12,zIndex:1e5},children:["\u{1F4C4} ",ge(s.panels[s.draggedPanelId]?.title,z)||"Tab"]})]})},uo=yr;var gn=class{registry;initialState;config;_actions=null;_initialized=!1;_pendingCalls=[];_pendingOpenPanelIds=new Set;_pendingSubscriptions=[];_disconnectedWarnTimer=null;constructor(t={}){if(this.registry=new St,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 d=this._pendingSubscriptions.indexOf(r);d!==-1&&this._pendingSubscriptions.splice(d,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(d=>d.dockPanelToGroup(t,o,r))}movePanelOrder(t,o,r){this._dispatch(d=>d.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(d=>d.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)})}};var vo=require("react");var mt=require("react"),go=require("react/jsx-runtime"),po=(0,mt.createContext)(null),Ut=({children:e})=>{let[t,o]=(0,mt.useState)({}),[r,d]=(0,mt.useState)({}),s=(0,mt.useMemo)(()=>({getActiveInGroup:T=>t[T]??null,setActiveInGroup:(T,b)=>o(P=>({...P,[T]:b})),isModifierActive:T=>r[T]??!1,setModifierActive:(T,b)=>d(P=>({...P,[T]:b})),toggleModifier:T=>d(b=>({...b,[T]:!b[T]}))}),[t,r]);return(0,go.jsx)(po.Provider,{value:s,children:e})};function Jt(){let e=(0,mt.useContext)(po);if(!e)throw new Error("useToolbar must be used within DockableDesktopProvider");return e}var Ke=require("react");var bo=require("react/jsx-runtime");function Pr(){let e=new Map,t=new Set,o=()=>t.forEach(r=>r());return{publish(r,d){return e.set(r,d),o(),()=>{e.get(r)===d&&(e.delete(r),o())}},get(r){return e.get(r)??null},subscribe(r){return t.add(r),()=>t.delete(r)}}}var Ln=(0,Ke.createContext)(null),fn=({children:e})=>{let t=(0,Ke.useMemo)(()=>Pr(),[]);return(0,bo.jsx)(Ln.Provider,{value:t,children:e})};function fo(e){let t=Kt(),o=(0,Ke.useContext)(Ln),r=(0,Ke.useRef)(null);if(!o)throw new Error("usePanelContribution must be used within PanelContributionProvider");(0,Ke.useLayoutEffect)(()=>{if(o)return r.current?.(),r.current=o.publish(t,e),()=>{r.current?.(),r.current=null}},[o,t,e])}function mn(){let e=tt(d=>d.activePanelId),t=(0,Ke.useContext)(Ln);if(!t)throw new Error("useActivePanelContribution must be used within PanelContributionProvider");let o=(0,Ke.useCallback)(d=>t?t.subscribe(d):()=>{},[t]),r=()=>t&&e?t.get(e):null;return(0,Ke.useSyncExternalStore)(o,r,r)}function Nn(e,t=null){return{id:e.id,label:e.label,icon:e.icon??t,renderContent:()=>e.content}}function mo(e){let t=mn();return t?.toolbarItems?.length?[...e,{type:"separator"},...t.toolbarItems]:e}function ho(e,t=null){let o=mn();return o?.sidebarSections?.length?[...e,...o.sidebarSections.map(r=>Nn(r,t))]:e}var Gt=require("react/jsx-runtime"),yo=({contextMenuAdapter:e=kt,...t})=>{let o=(0,vo.useContext)(Ht),r=(0,Gt.jsx)(Ut,{children:(0,Gt.jsx)(on,{...t,children:(0,Gt.jsx)(fn,{children:(0,Gt.jsx)(dn,{children:t.children})})})});return o!==null?r:(0,Gt.jsx)(an,{adapter:e,formatMessageProvider:t.formatMessage,children:r})};var qe=require("react");var _e=require("react/jsx-runtime"),xr=({modal:e,index:t,isTopmost:o})=>{let{close:r,openModal:d,updateInstance:s,setDirty:T}=Pt(),b=et(),P=nt(),{dir:x}=tt(),{modalClass:w,modalBodyClass:c}=pt(),M=(0,qe.useRef)(null),{id:k,Component:D,props:F,options:g,dirty:R,dirtyOptions:C}=e,W=g,[v,E]=(0,qe.useState)(W.icon||null),_=(0,qe.useRef)(W);_.current=W;let z=ge(W.title,b),u=(0,qe.useCallback)(async G=>{if(G?.force){r(k);return}if(M.current){if(!await M.current())return;r(k);return}if(R){d(xt,{title:C?.title||P.unsavedChangesTitle,message:C?.message||{id:P.unsavedChangesMessage.id,defaultMessage:P.unsavedChangesMessage.defaultMessage,values:{title:z}},alert:C?.alert,alertType:C?.alertType||"danger",useYesNoTitles:!0,onOK:()=>r(k)},{size:"small"});return}r(k)},[r,d,k,R,C,z,P]),N=(0,qe.useCallback)((G,le)=>T(k,G,le),[T,k]),A=(0,qe.useCallback)(G=>s(k,{options:{..._.current,title:G}}),[s,k]),K=(0,qe.useCallback)(G=>E(G),[]),U=(0,qe.useCallback)(G=>(M.current=G,()=>{M.current=null}),[]),ee=(0,qe.useMemo)(()=>({requestClose:u,setDirty:N,setTitle:A,setIcon:K,onCloseRequested:U,containerType:"modal",instanceId:k}),[u,N,A,K,U,k]),ne=R?`${z} *`:z,ve=W.size?`rdd-modal-size-${W.size}`:"rdd-modal-size-auto",ie=W.closable!==!1,V=W.bodyPadding,J=V!=null?typeof V=="number"?`${V}px`:V:void 0;(0,qe.useEffect)(()=>{if(!o||!ie)return;let G=le=>{le.key==="Escape"&&(le.stopPropagation(),u())};return document.addEventListener("keydown",G),()=>document.removeEventListener("keydown",G)},[u,ie,o]);let X=`calc(var(--rdd-z-base, 1000) + 9000 + ${t*10})`;return(0,_e.jsxs)("div",{className:"rdd-modal-overlay",style:{zIndex:X},dir:x,children:[(0,_e.jsx)("div",{className:"rdd-modal-curtain",onClick:ie?()=>u():void 0}),(0,_e.jsxs)("div",{className:`rdd-modal-window ${ve} ${w??""}`,children:[(0,_e.jsxs)("div",{className:"rdd-modal-header",children:[v&&(0,_e.jsx)("div",{className:"rdd-modal-icon",children:v}),(0,_e.jsx)("h4",{className:"rdd-modal-title",children:ne}),ie&&(0,_e.jsx)("button",{className:"rdd-modal-close-button",onClick:()=>u(),title:b(P.closeTooltip),type:"button",children:(0,_e.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,_e.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),(0,_e.jsx)("div",{className:`rdd-modal-body ${c??""}`,style:J!=null?{padding:J}:void 0,children:(0,_e.jsx)(vt,{value:ee,children:(0,_e.jsx)(D,{...F,panelId:k})})})]})]})},Cr=()=>{let{modals:e}=gt();return e.length===0?null:(0,_e.jsx)(_e.Fragment,{children:e.map((t,o)=>(0,_e.jsx)(xr,{modal:t,index:o,isTopmost:o===e.length-1},t.id))})},Po=Cr;var He=require("react");var hn=require("react");function xo(e){let[t,o]=(0,hn.useState)(null);return(0,hn.useLayoutEffect)(()=>{let r=e.current?.parentElement;if(!r)return;let d=()=>{let T=r.getBoundingClientRect();o({top:T.top,left:T.left,right:window.innerWidth-T.right,height:T.height})};d();let s=new ResizeObserver(d);return s.observe(r),window.addEventListener("resize",d),()=>{s.disconnect(),window.removeEventListener("resize",d)}},[e]),t}var Ce=require("react/jsx-runtime"),bn=({panel:e,position:t,defaultWidth:o,containerRect:r})=>{let{close:d,openModal:s,updateInstance:T,setDirty:b,registerCloseHandler:P,unregisterCloseHandler:x}=Pt(),{modals:w}=gt(),c=et(),M=nt(),{dir:k}=tt(),{sidePanelClass:D,sidePanelBodyClass:F}=pt(),g=(0,He.useRef)(null),{id:R,Component:C,props:W,options:v,dirty:E,dirtyOptions:_}=e,z=v,[u,N]=(0,He.useState)(z.icon||null),A=(0,He.useRef)(z);A.current=z;let K=ge(z.title,c),U=(0,He.useCallback)(async q=>{if(q?.force){d(R);return}if(g.current){if(!await g.current())return;d(R);return}if(E){s(xt,{title:_?.title||M.unsavedChangesTitle,message:_?.message||{id:M.unsavedChangesMessage.id,defaultMessage:M.unsavedChangesMessage.defaultMessage,values:{title:K}},alert:_?.alert,alertType:_?.alertType||"danger",useYesNoTitles:!0,onOK:()=>d(R)},{size:"small"});return}d(R)},[d,s,R,E,_,K,M]),ee=(0,He.useCallback)(async()=>g.current?await g.current():!E,[E]);(0,He.useEffect)(()=>(P(R,ee),()=>x(R)),[R,ee,P,x]);let ne=(0,He.useCallback)((q,Be)=>b(R,q,Be),[b,R]),ve=(0,He.useCallback)(q=>T(R,{options:{...A.current,title:q}}),[T,R]),ie=(0,He.useCallback)(q=>N(q),[]),V=(0,He.useCallback)(q=>(g.current=q,()=>{g.current=null}),[]),J=(0,He.useMemo)(()=>({requestClose:U,setDirty:ne,setTitle:ve,setIcon:ie,onCloseRequested:V,containerType:t==="left"?"left-panel":"right-panel",instanceId:R}),[U,ne,ve,ie,V,t,R]),X=E?`${K} *`:K;(0,He.useEffect)(()=>{let q=Be=>{Be.key==="Escape"&&w.length===0&&U()};return document.addEventListener("keydown",q),()=>document.removeEventListener("keydown",q)},[U,w.length]);let G=z.width||o||400,le=typeof G=="number"?`${G}px`:G,be=z.bodyPadding,Oe=be!=null?typeof be=="number"?`${be}px`:be:void 0;return(0,Ce.jsx)("div",{className:`rdd-side-panel rdd-side-panel-${t} rdd-side-panel-visible ${D??""}`,style:{width:le,...r?{top:r.top,height:r.height,bottom:"auto",...t==="right"?{right:r.right}:{left:r.left}}:{}},dir:k,children:(0,Ce.jsxs)("div",{className:"rdd-side-panel-window",children:[(0,Ce.jsxs)("div",{className:"rdd-side-panel-header",children:[u&&(0,Ce.jsx)("div",{className:"rdd-side-panel-icon",children:u}),(0,Ce.jsx)("h4",{className:"rdd-side-panel-title",children:X}),(0,Ce.jsx)("button",{className:"rdd-side-panel-close-button",onClick:()=>U(),title:c(M.closeTooltip),type:"button",children:(0,Ce.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,Ce.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),(0,Ce.jsx)("div",{className:`rdd-side-panel-body ${F??""}`,style:Oe!=null?{padding:Oe}:void 0,children:(0,Ce.jsx)(vt,{value:J,children:(0,Ce.jsx)(C,{...W,panelId:R})})})]})})},zn=({children:e})=>{let t=(0,He.useRef)(null),o=xo(t);return(0,Ce.jsx)("div",{ref:t,style:{display:"contents"},children:e(o)})},wr=({defaultWidth:e})=>{let{leftPanel:t,rightPanel:o}=gt();return(0,Ce.jsx)(zn,{children:r=>(0,Ce.jsxs)(Ce.Fragment,{children:[t&&(0,Ce.jsx)(bn,{panel:t,position:"left",defaultWidth:e,containerRect:r},t.id),o&&(0,Ce.jsx)(bn,{panel:o,position:"right",defaultWidth:e,containerRect:r},o.id)]})})},Co=({defaultWidth:e})=>{let{leftPanel:t}=gt();return(0,Ce.jsx)(zn,{children:o=>t?(0,Ce.jsx)(bn,{panel:t,position:"left",defaultWidth:e,containerRect:o},t.id):null})},wo=({defaultWidth:e})=>{let{rightPanel:t}=gt();return(0,Ce.jsx)(zn,{children:o=>t?(0,Ce.jsx)(bn,{panel:t,position:"right",defaultWidth:e,containerRect:o},t.id):null})},Ro=wr;var re=en(require("react"),1);var me=require("react/jsx-runtime");function Dn(e){return"renderContent"in e}function Rr(e){return"render"in e}function Mo(e){return e==null?[]:Array.isArray(e)?e:[e]}var Wn=(0,re.createContext)(null),ko=(0,re.createContext)(null);function Mr({tabId:e,onClose:t,onOpen:o,setActiveTabId:r,children:d}){let s=(0,re.useMemo)(()=>({tabId:e,onClose:t,onOpen:o,openTab:T=>r(T)}),[e,t,o,r]);return(0,me.jsx)(ko.Provider,{value:s,children:d})}function So(e,t,o,r){if(Rr(e))return(0,me.jsx)(re.default.Fragment,{children:e.render()},e.id??t);if(Dn(e)){if(e.hidden)return null;let d=o===e.id;return(0,me.jsx)("button",{type:"button",onClick:()=>r(e.id),className:`rdd-sidebar-tab-btn${d?" rdd-active":""}`,title:e.label,"aria-pressed":d,children:e.icon},e.id)}return(0,me.jsx)("button",{type:"button",onClick:e.onClick,disabled:e.disabled,className:"rdd-sidebar-tab-btn rdd-sidebar-header-action-btn",title:e.label,"aria-label":e.label,children:e.icon},e.id??t)}var To=(0,re.memo)(function({tabs:t,headerEntries:o,footerEntries:r,activeTabId:d,isVisible:s,position:T,onTabClick:b}){return(0,me.jsx)("div",{style:{width:s?"56px":"0px",height:"100%",overflow:"hidden",transition:"width 0.25s cubic-bezier(0.4, 0, 0.2, 1)",flexShrink:0},children:(0,me.jsxs)("div",{className:`rdd-sidebar-tabs-strip rdd-${T}${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&&(0,me.jsx)("div",{className:"rdd-sidebar-header-area",children:o.map((P,x)=>So(P,x,d,b))}),(0,me.jsx)("div",{className:"rdd-sidebar-tabs-list",children:t.map(P=>{if(P.hidden)return null;let x=d===P.id;return(0,me.jsx)("button",{type:"button",onClick:()=>b(P.id),className:`rdd-sidebar-tab-btn${x?" rdd-active":""}`,title:P.label,"aria-pressed":x,children:P.icon},P.id)})}),r.length>0&&(0,me.jsx)("div",{className:"rdd-sidebar-footer-area",children:r.map((P,x)=>So(P,x,d,b))})]})})});function Sr({position:e,currentWidth:t,minWidth:o,maxWidth:r,onWidthChange:d,onResizeStart:s,onResizeEnd:T}){return(0,me.jsx)("div",{className:"rdd-resizer-bar",style:{cursor:"col-resize",width:"1px",height:"100%",flexShrink:0,zIndex:20},onPointerDown:P=>{P.preventDefault();let x=P.currentTarget,w=[{el:x,classes:["rdd-active"]},{el:document.body,classes:["rdd-resizing-active","rdd-resizing-col-active"]}];s(),ft({element:x,pointerId:P.pointerId,startClientX:P.clientX,startClientY:P.clientY,captureStart:()=>t,activeClasses:w,onMove:(c,M,k)=>{let D=e==="right"?k-c:k+c;d(Math.max(o,Math.min(r,D)))},onEnd:()=>T()})}})}var On=(0,re.forwardRef)(function({position:t="right",tabs:o,headerAction:r,footerAction:d,defaultWidth:s,minWidth:T=150,maxWidth:b=600,onWidthChange:P,activeTabId:x,onActiveTabChange:w,visible:c,onVisibilityChange:M,stripVisible:k,onStripVisibilityChange:D,showCloseButton:F=!1,hideDefaultHeader:g=!1,renderHeader:R,isSecondary:C=!1,children:W},v){let E=x!==void 0,[_,z]=(0,re.useState)(()=>s??280),u=(0,re.useCallback)(se=>{z(se),P?.(se)},[P]),[N,A]=(0,re.useState)(!1),[K,U]=(0,re.useState)(null),ee=E?x:K,ne=(0,re.useMemo)(()=>Mo(r),[r]),ve=(0,re.useMemo)(()=>Mo(d),[d]),ie=(0,re.useMemo)(()=>ne.filter(Dn),[ne]),V=(0,re.useMemo)(()=>ve.filter(Dn),[ve]),J=(0,re.useMemo)(()=>[...ie,...o,...V],[ie,o,V]),[X,G]=(0,re.useState)(()=>new Set),le=(0,re.useMemo)(()=>{let se=new Set(X);ee&&se.add(ee);for(let pe of J)pe.eagerMount&&se.add(pe.id);return se},[X,ee,J]),be=(0,re.useRef)(ee??null);(0,re.useEffect)(()=>{be.current=ee??null},[ee]);let Oe=(0,re.useRef)(_);(0,re.useEffect)(()=>{Oe.current=_},[_]);let q=(0,re.useCallback)(se=>{G(se!==null?pe=>{if(pe.has(se))return pe;let Xe=new Set(pe);return Xe.add(se),Xe}:pe=>{let Xe=!1,Ge=new Set(pe);for(let j of pe){let te=J.find(ce=>ce.id===j);te&&!te.eagerMount&&!te.preserveState&&(Ge.delete(j),Xe=!0)}return Xe?Ge:pe}),E||U(se),w?.(se)},[E,w,J]);(0,re.useEffect)(()=>{ee!=null&&!J.some(se=>se.id===ee)&&q(null)},[ee,J,q]),(0,re.useImperativeHandle)(v,()=>({openTab:se=>q(se),closeDrawer:()=>q(null),getActiveTab:()=>be.current,show:()=>M?.(!0),hide:()=>M?.(!1),toggle:()=>M?.(c===!1),showStrip:()=>D?.(!0),hideStrip:()=>D?.(!1),setWidth:se=>u(Math.max(T,Math.min(b,se))),getWidth:()=>Oe.current}),[q,c,M,D,u,T,b]);let Be=(0,re.useCallback)(se=>{q(ee===se?null:se)},[ee,q]),Ze=(0,re.useCallback)(()=>q(null),[q]),Ue=g||R!=null,Ve=(0,re.useRef)(!1);(0,re.useEffect)(()=>{process.env.NODE_ENV==="development"&&(!F||!Ue||Ve.current||(Ve.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`.')))},[F,Ue]);let at=(0,re.useMemo)(()=>({openTab:se=>q(se),closeDrawer:()=>q(null),getActiveTab:()=>be.current,position:t,isSecondary:C}),[q,t,C]),lt=c!==!1,dt=lt&&k!==!1,it=lt&&ee!=null,st=(0,me.jsx)("div",{className:`rdd-sidebar-content-drawer rdd-${t}`,style:{flexBasis:it?`${_}px`:"0px",flexShrink:1,flexGrow:0,minWidth:it?`${T}px`:"0px",maxWidth:it?`${b}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(se=>{if(!le.has(se.id))return null;let Xe=ee===se.id,Ge=()=>q(se.id);return(0,me.jsxs)("div",{style:{display:Xe?"flex":"none",flexDirection:"column",height:"100%",width:"100%"},children:[Ue?R?.(se,Ze,Ge):(0,me.jsxs)("div",{className:"rdd-sidebar-drawer-header",children:[(0,me.jsx)("span",{className:"rdd-sidebar-header-title",children:se.label}),F&&(0,me.jsx)("button",{type:"button",className:"rdd-sidebar-drawer-close-button",onClick:Ze,title:"Close","aria-label":"Close",children:(0,me.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,me.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),(0,me.jsx)("div",{className:"rdd-sidebar-drawer-body",children:(0,me.jsx)(Mr,{tabId:se.id,onClose:Ze,onOpen:Ge,setActiveTabId:q,children:se.renderContent(se.id,Ze,Ge)})})]},se.id)})}),Te=it?(0,me.jsx)(Sr,{position:t,currentWidth:_,minWidth:T,maxWidth:b,onWidthChange:u,onResizeStart:()=>A(!0),onResizeEnd:()=>A(!1)}):null;return(0,me.jsx)(Wn.Provider,{value:at,children:(0,me.jsxs)("div",{style:{display:"flex",flexDirection:"row",width:"100%",height:"100%",overflow:"hidden"},children:[t==="left"&&(0,me.jsx)(To,{tabs:o,headerEntries:ne,footerEntries:ve,activeTabId:ee,isVisible:dt,position:t,onTabClick:Be}),t==="left"&&st,t==="left"&&Te,(0,me.jsx)("div",{style:{flex:"1 1 0%",minWidth:0,overflow:"hidden"},children:W}),t==="right"&&Te,t==="right"&&st,t==="right"&&(0,me.jsx)(To,{tabs:o,headerEntries:ne,footerEntries:ve,activeTabId:ee,isVisible:dt,position:t,onTabClick:Be})]})})}),Eo=(0,re.forwardRef)(function(t,o){let r=(0,re.useContext)(Wn);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 d=r.position==="left"?"right":"left";return(0,me.jsx)(On,{ref:o,...t,position:d,isSecondary:!0})});function Io(){let e=(0,re.useContext)(Wn);if(!e)throw new Error("useSidebar must be used within Sidebar");return e}function Lo(){let e=(0,re.useContext)(ko);if(!e)throw new Error("useSidebarTab must be used within a Sidebar tab renderContent tree");return e}var je=require("react"),No=require("react-dom");var $e=require("react/jsx-runtime");function Tr(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 kr({item:e,position:t,toolbar:o}){let[r,d]=(0,je.useState)(!1),[s,T]=(0,je.useState)(null),b=(0,je.useRef)(null),P=(0,je.useRef)(null),x=e.activeItemId!==void 0,w=x?e.activeItemId:o.getActiveInGroup(e.id),c=e.items.find(g=>!("type"in g)&&g.id===w),M=w!==null,k=c?.icon??e.defaultIcon,D=c?.label??e.label,F=()=>{e.disabled||(!r&&b.current&&T(b.current.getBoundingClientRect()),d(g=>!g))};return(0,je.useLayoutEffect)(()=>{if(!r||!P.current)return;let g=P.current,R=g.getBoundingClientRect(),C=8;R.right>window.innerWidth-C&&(g.style.left=`${Math.max(C,window.innerWidth-R.width-C)}px`,g.style.right="auto"),R.left<C&&(g.style.left=`${C}px`,g.style.right="auto"),R.bottom>window.innerHeight-C&&(g.style.top=`${Math.max(C,window.innerHeight-R.height-C)}px`,g.style.bottom="auto"),R.top<C&&(g.style.top=`${C}px`,g.style.bottom="auto")},[r]),(0,je.useEffect)(()=>{if(!r)return;let g=R=>{let C=R.target;b.current?.contains(C)||P.current?.contains(C)||d(!1)};return document.addEventListener("mousedown",g),()=>document.removeEventListener("mousedown",g)},[r]),(0,je.useEffect)(()=>{if(!r)return;let g=R=>{R.key==="Escape"&&d(!1)};return document.addEventListener("keydown",g),()=>document.removeEventListener("keydown",g)},[r]),(0,$e.jsxs)($e.Fragment,{children:[(0,$e.jsx)("button",{ref:b,type:"button",className:`rdd-toolbar-btn rdd-toolbar-btn-group${M?" rdd-active":""}`,title:D,"aria-label":D,"aria-expanded":r,"aria-haspopup":"menu",disabled:e.disabled,onClick:F,children:k}),r&&s&&(0,No.createPortal)((0,$e.jsx)("div",{ref:P,className:`rdd-toolbar-group-flyout rdd-${t}`,style:Tr(s,t,document.documentElement.dir==="rtl"),role:"menu",children:e.items.map((g,R)=>{if("type"in g)return(0,$e.jsx)("div",{className:"rdd-toolbar-group-flyout-sep",role:"separator"},`sep-${R}`);let C=w===g.id;return(0,$e.jsxs)("button",{type:"button",className:`rdd-toolbar-group-flyout-item${C?" rdd-active":""}`,disabled:g.disabled,role:"menuitem","aria-pressed":C,onClick:()=>{x?e.onActiveItemChange?.(g.id):o.setActiveInGroup(e.id,g.id),g.onActivate?.(g.id),d(!1)},children:[(0,$e.jsx)("span",{className:"rdd-toolbar-group-flyout-icon",children:g.icon}),(0,$e.jsx)("span",{className:"rdd-toolbar-group-flyout-label",children:g.label}),g.shortcut&&(0,$e.jsx)("span",{className:"rdd-toolbar-group-flyout-shortcut",children:g.shortcut})]},g.id)})}),document.body)]})}function Er(e,t,o,r){switch(e.type){case"separator":return(0,$e.jsx)("div",{className:"rdd-toolbar-separator",role:"separator"},`sep-${t}`);case"action":return(0,$e.jsx)("button",{type:"button",className:"rdd-toolbar-btn rdd-toolbar-btn-action",title:e.label,"aria-label":e.label,disabled:e.disabled,onClick:e.onClick,children:e.icon},e.id);case"radio":{let d=o.getActiveInGroup(e.group)===e.id;return(0,$e.jsx)("button",{type:"button",className:`rdd-toolbar-btn rdd-toolbar-btn-radio${d?" rdd-active":""}`,title:e.label,"aria-label":e.label,"aria-pressed":d,disabled:e.disabled,onClick:()=>{o.setActiveInGroup(e.group,e.id),e.onActivate?.(e.id)},children:e.icon},e.id)}case"toggle":{let d=e.active!==void 0,s=d?e.active:o.isModifierActive(e.id);return(0,$e.jsx)("button",{type:"button",className:`rdd-toolbar-btn rdd-toolbar-btn-toggle${s?" rdd-active":""}`,title:e.label,"aria-label":e.label,"aria-pressed":s,disabled:e.disabled,onClick:()=>{d||o.toggleModifier(e.id),e.onToggle?.(!s)},children:e.icon},e.id)}case"group":return(0,$e.jsx)(kr,{item:e,position:r,toolbar:o},e.id)}}var zo=(0,je.forwardRef)(function({position:t="left",items:o,visible:r,onVisibilityChange:d,className:s,style:T},b){let P=Jt(),x=t==="left"||t==="right";(0,je.useImperativeHandle)(b,()=>({show:()=>d?.(!0),hide:()=>d?.(!1),toggle:()=>d?.(r===!1)}),[r,d]);let w=r!==!1?{}:x?{width:"0px"}:{height:"0px"};return(0,$e.jsx)("div",{className:`rdd-toolbar-strip rdd-${t}${s?` ${s}`:""}`,role:"toolbar","aria-orientation":x?"vertical":"horizontal",style:{...w,...T},children:o.map((c,M)=>Er(c,M,P,t))})});var we=require("react"),Fn=require("react-dom"),he=require("react/jsx-runtime"),_n=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))}},ot=new _n,Do=Object.assign((e,t)=>ot.show(e,t),{info:(e,t)=>ot.show(e,{...t,type:"info"}),success:(e,t)=>ot.show(e,{...t,type:"success"}),warning:(e,t)=>ot.show(e,{...t,type:"warning"}),error:(e,t)=>ot.show(e,{...t,type:"error"}),dismiss:e=>ot.dismiss(e),promise:(e,t,o)=>{let r=ot.show(t.pending,{...o,type:"info",duration:0});return e.then(d=>{let s=typeof t.success=="function"?t.success(d):t.success;ot.update(r,s,{type:"success",duration:o?.duration??5e3})},d=>{let s=typeof t.error=="function"?t.error(d):t.error;ot.update(r,s,{type:"error",duration:o?.duration??5e3})}),e}}),Ir=()=>(0,he.jsxs)("svg",{className:"rdd-toast__icon",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[(0,he.jsx)("circle",{cx:"8",cy:"8",r:"7",stroke:"currentColor",strokeWidth:"1.5"}),(0,he.jsx)("path",{d:"M8 5v.01M8 7.5v3.5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]}),Lr=()=>(0,he.jsxs)("svg",{className:"rdd-toast__icon",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[(0,he.jsx)("circle",{cx:"8",cy:"8",r:"7",stroke:"currentColor",strokeWidth:"1.5"}),(0,he.jsx)("path",{d:"M5 8l2 2 4-4",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})]}),Nr=()=>(0,he.jsxs)("svg",{className:"rdd-toast__icon",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[(0,he.jsx)("path",{d:"M8 2.5L14 13.5H2L8 2.5z",stroke:"currentColor",strokeWidth:"1.5",strokeLinejoin:"round"}),(0,he.jsx)("path",{d:"M8 7v2.5M8 11.5v.01",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]}),zr=()=>(0,he.jsxs)("svg",{className:"rdd-toast__icon",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[(0,he.jsx)("circle",{cx:"8",cy:"8",r:"7",stroke:"currentColor",strokeWidth:"1.5"}),(0,he.jsx)("path",{d:"M5.5 5.5l5 5M10.5 5.5l-5 5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]}),Dr=()=>(0,he.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:(0,he.jsx)("path",{d:"M4 4l8 8M12 4l-8 8",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})}),Wr={info:(0,he.jsx)(Ir,{}),success:(0,he.jsx)(Lr,{}),warning:(0,he.jsx)(Nr,{}),error:(0,he.jsx)(zr,{})};function Or({id:e,message:t,options:o,exiting:r,isLeft:d,showProgress:s,pauseOnHover:T,animation:b,onDismiss:P,onExited:x}){let w=(0,we.useRef)(null),c=(0,we.useRef)(null),M=(0,we.useRef)(null),k=(0,we.useRef)(o.duration),D=(0,we.useRef)(0),[F,g]=(0,we.useState)(!1),R=b==="none"?"rdd-toast--visible":b==="fade"?"rdd-toast--fade-entering":d?"rdd-toast--entering-left":"rdd-toast--entering",[C,W]=(0,we.useState)(R);(0,we.useLayoutEffect)(()=>{let N=w.current,A=c.current;if(!N||!A||r)return;let K=()=>{N.style.maxHeight=`${N.scrollHeight}px`};K();let U=new ResizeObserver(K);return U.observe(A),()=>U.disconnect()},[r]),(0,we.useEffect)(()=>{if(b==="none")return;let N=requestAnimationFrame(()=>W("rdd-toast--visible"));return()=>cancelAnimationFrame(N)},[]);let v=(0,we.useCallback)(N=>{N<=0||(D.current=Date.now(),M.current=setTimeout(()=>P(e),N))},[e,P]);(0,we.useEffect)(()=>(M.current&&clearTimeout(M.current),k.current=o.duration,v(o.duration),()=>{M.current&&clearTimeout(M.current)}),[o.duration,v]),(0,we.useEffect)(()=>{if(!r)return;let N=w.current;if(!N||b==="none"){x(e);return}let A=U=>{U.propertyName==="max-height"&&x(e)};N.addEventListener("transitionend",A);let K=setTimeout(()=>x(e),520);return()=>{N.removeEventListener("transitionend",A),clearTimeout(K)}},[r,e,x,b]);let E=()=>{!T||o.duration===0||(M.current&&(clearTimeout(M.current),M.current=null,k.current=Math.max(0,k.current-(Date.now()-D.current))),g(!0))},_=()=>{!T||o.duration===0||(g(!1),v(k.current))},z=["rdd-toast",o.type&&`rdd-toast--${o.type}`,C,r&&"rdd-toast--exiting",F&&"rdd-toast--paused"].filter(Boolean).join(" "),u=o.icon!==void 0?o.icon:o.type?Wr[o.type]:null;return(0,he.jsxs)("div",{ref:w,role:"status","aria-live":"polite",className:z,onMouseEnter:E,onMouseLeave:_,children:[u&&u,(0,he.jsx)("div",{ref:c,className:"rdd-toast__body",children:o.content!==void 0?o.content:t}),o.closable&&(0,he.jsx)("button",{type:"button",className:"rdd-toast__close",onClick:()=>P(e),"aria-label":"Close notification",children:(0,he.jsx)(Dr,{})}),s&&o.duration>0&&(0,he.jsx)("div",{className:"rdd-toast__progress",style:{animationDuration:`${o.duration}ms`}})]})}function An(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 Wo({position:e="top-right",maxVisible:t=3,defaultDuration:o=5e3,defaultClosable:r=!0,pauseOnHover:d=!0,animation:s="slide",newestOnTop:T=!1,progressBar:b=!1,width:P=320,adapter:x}){let[w,c]=(0,we.useState)([]),M=(0,we.useRef)([]),k=(0,we.useRef)(w);k.current=w;let D=(0,we.useCallback)(W=>{c(v=>v.map(E=>E.id===W?{...E,exiting:!0}:E)),k.current.find(v=>v.id===W)?.options.onClose?.()},[]),F=(0,we.useCallback)(W=>{let v=M.current.shift()??null;c(E=>{let _=E.filter(u=>u.id!==W);if(!v)return _;let z=An(v.rawOpts,o,r);return[..._,{id:v.id,message:v.message,options:z,exiting:!1}]})},[o,r]);if((0,we.useEffect)(()=>{if(x)return;let W=v=>{if(v.kind==="show"){let E=An(v.rawOpts,o,r),_={id:v.id,message:v.message,options:E,exiting:!1},z={id:v.id,message:v.message,rawOpts:v.rawOpts};c(u=>u.find(K=>K.id===v.id)?u.map(K=>K.id===v.id?{...K,message:v.message,options:E}:K):u.filter(K=>!K.exiting).length<t?[...u,_]:(M.current.some(K=>K.id===z.id)||M.current.push(z),u))}else v.kind==="update"?(c(E=>E.map(_=>{if(_.id!==v.id)return _;let z={..._.options,...v.patch,id:_.id};return{..._,message:v.message,options:z}})),M.current=M.current.map(E=>E.id!==v.id?E:{...E,message:v.message,rawOpts:{...E.rawOpts,...v.patch}})):v.kind==="dismiss"&&(v.id===void 0?(c(E=>E.map(_=>({..._,exiting:!0}))),M.current=[]):k.current.some(_=>_.id===v.id)?D(v.id):M.current=M.current.filter(_=>_.id!==v.id))};return ot.subscribe(W),()=>ot.unsubscribe(W)},[x,t,o,r,D]),(0,we.useEffect)(()=>{if(!x)return;let W=v=>{if(v.kind==="show"){let E=An(v.rawOpts,o,r);x.show(v.id,v.message,E)}else v.kind==="update"?x.update(v.id,v.message,v.patch):v.kind==="dismiss"&&x.dismiss(v.id)};return ot.subscribe(W),()=>ot.unsubscribe(W)},[x,o,r]),x){if(!x.Container)return null;let W=x.Container;return(0,Fn.createPortal)((0,he.jsx)(W,{position:e}),document.body)}let g=e.endsWith("left"),R="";T===!0&&(R="rdd-toast-container--newest-top"),T===!1&&(R="rdd-toast-container--newest-bottom");let C=["rdd-toast-container",`rdd-toast-container--${e}`,R].filter(Boolean).join(" ");return(0,Fn.createPortal)((0,he.jsx)("div",{className:C,style:{width:P},"aria-label":"Notifications","aria-live":"polite",children:w.map(W=>(0,he.jsx)(Or,{id:W.id,message:W.message,options:W.options,exiting:W.exiting,isLeft:g,showProgress:b,pauseOnHover:d,animation:s,onDismiss:D,onExited:F},W.id))}),document.body)}var H=en(require("react"),1),_o=require("react-dom");var oe=require("react/jsx-runtime"),ht=e=>e==="width"||e==="both",ct=e=>e==="height"||e==="both",Oo=(e,t)=>t==="inline"?ct(e)?"both":"width":ht(e)?"both":"height",vn=(e,t)=>t==="inline"?e==="both"?"height":ht(e)?null:e:e==="both"?"width":ct(e)?null:e,Ho=(e,t)=>ct(t)?[]:ht(t)?e.startsWith("top-")?["top-left","top-right"]:["bottom-left","bottom-right"]:[e],Ar=(e,t)=>`${e.startsWith("top-")?"top":"bottom"}-${t}`,Fr=(e,t)=>`${t}-${e.endsWith("-right")?"right":"left"}`,$o=["top-left","top-right","bottom-left","bottom-right"],Bo=(0,H.createContext)(null),Go=(0,H.createContext)(null),Yo=(0,H.createContext)(null),wt=80;function _r(e,t,o){let r=e.getBoundingClientRect(),d=t-r.left,s=o-r.top;return d<wt&&s<wt?"top-left":d>r.width-wt&&s<wt?"top-right":d<wt&&s>r.height-wt?"bottom-left":d>r.width-wt&&s>r.height-wt?"bottom-right":null}function Xo({children:e,className:t,style:o}){let[r,d]=(0,H.useState)({}),[s,T]=(0,H.useState)({}),[b,P]=(0,H.useState)({"top-left":[],"top-right":[],"bottom-left":[],"bottom-right":[]}),[x,w]=(0,H.useState)({}),[c,M]=(0,H.useState)(null),[k,D]=(0,H.useState)(null),[F,g]=(0,H.useState)(null),[R,C]=(0,H.useState)(()=>new Map),W=(0,H.useRef)(100),v=(0,H.useRef)(null),E=(0,H.useCallback)((V,J)=>(d(X=>({...X,[V]:J})),()=>d(X=>{let G={...X};return delete G[V],G})),[]),_=(0,H.useCallback)(V=>{W.current+=1;let J=W.current;T(X=>({...X,[V]:J})),g(V)},[]),z=(0,H.useCallback)((V,J,X=null)=>{let G=Ho(J,X);P(le=>{let be={"top-left":le["top-left"].filter(q=>q!==V),"top-right":le["top-right"].filter(q=>q!==V),"bottom-left":le["bottom-left"].filter(q=>q!==V),"bottom-right":le["bottom-right"].filter(q=>q!==V)};for(let q of G)be[q]=[...be[q],V];return $o.every(q=>be[q].length===le[q].length&&be[q].every((Be,Ze)=>Be===le[q][Ze]))?le:be})},[]),u=(0,H.useCallback)(V=>{P(J=>({"top-left":J["top-left"].filter(X=>X!==V),"top-right":J["top-right"].filter(X=>X!==V),"bottom-left":J["bottom-left"].filter(X=>X!==V),"bottom-right":J["bottom-right"].filter(X=>X!==V)}))},[]),N=(0,H.useCallback)((V,J)=>{w(X=>X[V]===J?X:{...X,[V]:J})},[]),A=(0,H.useCallback)((V,J)=>{C(X=>{let G=new Map(X);return G.set(V,J),G})},[]),K=(0,H.useCallback)(V=>{C(J=>{let X=new Map(J);return X.delete(V),X})},[]),U=(0,H.useCallback)(()=>{C(new Map)},[]),ee=(0,H.useMemo)(()=>Array.from(R.keys()),[R]),ne=(0,H.useMemo)(()=>({registerToolbar:E,insetTop:r.top??0,insetBottom:r.bottom??0}),[E,r]),ve=(0,H.useMemo)(()=>({managedWindowIds:ee,openManaged:A,closeManaged:K,closeAllManaged:U}),[ee,A,K,U]),ie=(0,H.useMemo)(()=>({topId:F,zOrders:s,focusWindow:_,containerRef:v,stacks:b,dockedSizes:x,dockWindow:z,undockWindow:u,reportDockedSize:N,draggingId:c,setDraggingId:M,hoveredZone:k,setHoveredZone:D,insetTop:r.top??0,insetBottom:r.bottom??0,insetInlineStart:r.left??0,insetInlineEnd:r.right??0}),[F,s,_,b,x,z,u,N,c,k,r]);return(0,oe.jsx)(Bo.Provider,{value:ne,children:(0,oe.jsx)(Go.Provider,{value:ve,children:(0,oe.jsx)(Yo.Provider,{value:ie,children:(0,oe.jsxs)("div",{ref:v,className:`rdd-panel-overlay-root${c!==null?" rdd-dragging-active":""}${t?" "+t:""}`,style:o,children:[e,c!==null&&(0,oe.jsx)(Hr,{hoveredZone:k}),Array.from(R.entries()).map(([V,J])=>(0,oe.jsx)(Hn,{id:V,title:J.title,icon:J.icon,open:!0,onClose:()=>K(V),defaultAnchor:J.anchor??"top-right",defaultWidth:J.width??320,defaultHeight:J.height??240,defaultStretch:J.stretch,children:J.content},V))]})})})})}function Hr({hoveredZone:e}){return(0,oe.jsx)(oe.Fragment,{children:$o.map(t=>(0,oe.jsx)("div",{className:`rdd-panel-float-dropzone rdd-panel-float-dropzone--${t}${e===t?" rdd-panel-float-dropzone--hovered":""}`,"aria-hidden":"true"},t))})}function Vo({position:e,variant:t="transparent",buttonVariant:o="ghost",buttonSize:r,style:d,className:s,children:T}){let b=(0,H.useContext)(Bo),P=(0,H.useRef)(null),x=(0,H.useRef)(null);(0,H.useLayoutEffect)(()=>{let D=P.current;if(!D||!b)return;let F=()=>{let R=e==="top"||e==="bottom"?D.offsetHeight:D.offsetWidth;x.current?.(),x.current=b.registerToolbar(e,R)};F();let g=new ResizeObserver(F);return g.observe(D),()=>{g.disconnect(),x.current?.(),x.current=null}},[e,b?.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=b?.insetTop??0,w.bottom=b?.insetBottom??0):(w.insetInlineEnd=0,w.top=b?.insetTop??0,w.bottom=b?.insetBottom??0);let M=e==="left"||e==="right"?{...(b?.insetTop??0)>0?{paddingTop:0}:{},...(b?.insetBottom??0)>0?{paddingBottom:0}:{}}:{},k=r!=null?{"--rdd-panel-toolbar-btn-size":`${r}px`}:{};return(0,oe.jsx)("div",{ref:P,className:`rdd-panel-toolbar rdd-panel-toolbar--${e}${s?" "+s:""}`,"data-variant":t,"data-btn-variant":o,style:{...w,...M,...k,...d},children:T})}function Ko({icon:e,onClick:t,disabled:o,title:r,variant:d}){return(0,oe.jsx)("button",{type:"button",className:"rdd-panel-toolbar-btn",onClick:t,disabled:o,title:r,"aria-label":r,...d?{"data-variant":d}:{},children:e})}function qo({icon:e,active:t,onToggle:o,disabled:r,title:d,variant:s}){return(0,oe.jsx)("button",{type:"button",className:`rdd-panel-toolbar-btn${t?" rdd-panel-toolbar-btn--active":""}`,onClick:o,disabled:r,title:d,"aria-label":d,"aria-pressed":t,...s?{"data-variant":s}:{},children:e})}function jo(){return(0,oe.jsx)("span",{className:"rdd-panel-toolbar__sep","aria-hidden":"true"})}function Zo(){return(0,oe.jsx)("span",{className:"rdd-panel-toolbar__spacer","aria-hidden":"true"})}function Uo({children:e}){return(0,oe.jsx)("span",{className:"rdd-panel-toolbar__item",children:e})}function Jo({children:e}){return(0,oe.jsx)("div",{className:"rdd-panel-toolbar__center",children:e})}function Qo({placeholder:e="Search\u2026",onSearch:t,onSelect:o}){let[r,d]=(0,H.useState)(!1),[s,T]=(0,H.useState)(""),[b,P]=(0,H.useState)([]),[x,w]=(0,H.useState)(null),c=(0,H.useRef)(null),M=(0,H.useRef)(null),k=(0,H.useRef)(null),D=(0,H.useRef)(null),F=()=>{d(!0),setTimeout(()=>M.current?.focus({preventScroll:!0}),0)},g=()=>{d(!1),T(""),P([]),w(null),k.current?.abort(),D.current&&clearTimeout(D.current)},R=z=>{let u=z.target.value;if(T(u),k.current?.abort(),D.current&&clearTimeout(D.current),!u.trim()){P([]),w(null);return}D.current=setTimeout(async()=>{let N=new AbortController;k.current=N;try{let A=await t(u,N.signal);if(!N.signal.aborted){P(A);let K=c.current;if(K&&A.length>0){let U=K.getBoundingClientRect(),ee=Math.max(U.width,240),ne=U.left;ne+ee>window.innerWidth-8&&(ne=window.innerWidth-ee-8),w({top:U.bottom+4,left:ne,width:ee})}else w(null)}}catch{}},300)},C=z=>{o(z),g()},W=z=>{c.current?.contains(z.relatedTarget)||g()},v=z=>{z.key==="Escape"&&g()},E=(0,H.useMemo)(()=>{let z={};for(let u of b){let N=u.group??"";z[N]||(z[N]=[]),z[N].push(u)}return z},[b]),_=(0,oe.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,oe.jsx)("circle",{cx:"6.5",cy:"6.5",r:"4.5"}),(0,oe.jsx)("line",{x1:"10",y1:"10",x2:"14",y2:"14"})]});return r?(0,oe.jsxs)("div",{ref:c,className:"rdd-panel-toolbar-search rdd-panel-toolbar-search--open",onBlur:W,children:[(0,oe.jsx)("button",{type:"button",className:"rdd-panel-toolbar-btn",onClick:g,"aria-label":"Close search",title:"Close search",children:_}),(0,oe.jsx)("input",{ref:M,className:"rdd-panel-toolbar-search__input",type:"text",value:s,onChange:R,onKeyDown:v,placeholder:e,autoComplete:"off"}),x&&b.length>0&&(0,_o.createPortal)((0,oe.jsx)("div",{className:"rdd-panel-toolbar-search__dropdown",style:{position:"fixed",top:x.top,left:x.left,width:x.width},onMouseDown:z=>z.preventDefault(),children:Object.entries(E).map(([z,u])=>(0,oe.jsxs)(H.default.Fragment,{children:[z&&(0,oe.jsx)("div",{className:"rdd-panel-toolbar-search__group",children:z}),u.map(N=>(0,oe.jsxs)("button",{type:"button",className:"rdd-panel-toolbar-search__item",onClick:()=>C(N),children:[N.icon&&(0,oe.jsx)("span",{className:"rdd-panel-toolbar-search__item-icon",children:N.icon}),(0,oe.jsx)("span",{className:"rdd-panel-toolbar-search__item-label",children:N.label}),N.description&&(0,oe.jsx)("span",{className:"rdd-panel-toolbar-search__item-desc",children:N.description})]},N.id))]},z||"__default__"))}),document.body)]}):(0,oe.jsx)("div",{ref:c,className:"rdd-panel-toolbar-search",children:(0,oe.jsx)("button",{type:"button",className:"rdd-panel-toolbar-btn",onClick:F,title:"Search","aria-label":"Search",children:_})})}function Hn(e){let t=(0,H.useContext)(Yo);return e.open?(0,oe.jsx)(Yr,{ctx:t,...e},e.id):null}var $r=120,Br=60,Yt=8,Gr=8,Ao=16,Fo=40;function Yr({id:e,title:t,icon:o,defaultAnchor:r,defaultWidth:d,defaultHeight:s,defaultStretch:T,stretch:b,onPlacementChange:P,stretchable:x=!0,children:w,ctx:c,onClose:M}){let k=(0,H.useContext)(Ot)?.isRtl??!1,D=et(),F=nt(),[g,R]=(0,H.useState)("docked"),[C,W]=(0,H.useState)(r),[v,E]=(0,H.useState)(T??null),_=b!==void 0,z=_?b??null:v,[u,N]=(0,H.useState)(null),[A,K]=(0,H.useState)({w:d,h:s}),U=(0,H.useRef)(null),ee=(0,H.useRef)(g);ee.current=g;let ne=(0,H.useRef)(u);ne.current=u;let ve=(0,H.useRef)(A);ve.current=A;let ie=(0,H.useRef)(z);ie.current=z;let V=(0,H.useRef)(C);V.current=C;let J=(0,H.useRef)(P);J.current=P;let[X,G]=(0,H.useState)({inline:!1,block:!1}),le=(0,H.useRef)(X);le.current=X;let be=(0,H.useRef)(0),Oe=(0,H.useCallback)((j,te)=>{W(j),_||E(te),J.current?.({anchor:j,stretch:te})},[_]),q=(0,H.useRef)(null);(0,H.useLayoutEffect)(()=>{g==="docked"&&c?.dockWindow(e,C,z)},[g,C,z]),(0,H.useLayoutEffect)(()=>()=>{c?.undockWindow(e)},[]);let Be=(0,H.useRef)(!1);(0,H.useEffect)(()=>{if(process.env.NODE_ENV!=="development"||Be.current||g!=="docked"||!ct(z)||!c)return;let j=C.endsWith("-right")?"right":"left",te=[`top-${j}`,`bottom-${j}`].flatMap(ce=>c.stacks[ce]??[]).filter(ce=>ce!==e);te.length!==0&&(Be.current=!0,console.warn(`[react-dockable-desktop] PanelFloatingWindow "${e}" stretches the block axis (stretch: "${z}") while ${te.length} other widget(s) are anchored to the same side (${te.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,C,c?.stacks,e]),(0,H.useEffect)(()=>{c?.reportDockedSize(e,A.h)},[A.h]);let Ze=c?.zOrders[e]??101,Ue=!c||c.topId===e,Ve=()=>{let j=U.current?.offsetParent;return{cw:j?.clientWidth??9999,ch:j?.clientHeight??9999}},at=()=>{let j=c?.insetInlineStart??0,te=c?.insetInlineEnd??0;return{left:(k?te:j)+Yt,right:(k?j:te)+Yt,top:c?.insetTop??0,bottom:c?.insetBottom??0}},lt=()=>{c?.focusWindow(e)},dt=j=>{if(j.button!==0)return;j.preventDefault();let te,ce;if(ee.current==="docked"){let ye=U.current,ke=c?.containerRef?.current;if(ye&&ke){let Ee=ye.getBoundingClientRect(),Ae=ke.getBoundingClientRect();te=Ee.left-Ae.left,ce=Ee.top-Ae.top}else te=Yt,ce=c?.insetTop??0}else te=ne.current?.x??0,ce=ne.current?.y??0;q.current={mouseX:j.clientX,mouseY:j.clientY,posX:te,posY:ce,hasDragged:!1},U.current?.setPointerCapture(j.pointerId)},it=j=>te=>{if(te.button!==0)return;te.preventDefault(),te.stopPropagation();let ce=0,ye=0;if(ee.current==="free")ce=ne.current?.x??0,ye=ne.current?.y??0;else{let Ne=U.current,ze=Ne?.offsetParent;if(Ne&&ze){let Fe=Ne.getBoundingClientRect(),De=ze.getBoundingClientRect();ce=Fe.left-De.left,ye=Fe.top-De.top}}let ke=U.current?.getBoundingClientRect(),Ee={x:ce,y:ye,w:ht(ie.current)&&ke?ke.width:ve.current.w,h:ct(ie.current)&&ke?ke.height:ve.current.h},Ae=j.includes("e")||j.includes("w"),Ie=j.includes("n")||j.includes("s"),Le=!1,Me={inline:!1,block:!1},ut=()=>{if(Le||ee.current!=="docked")return;let Ne=ie.current,ze=Ae&&ht(Ne),Fe=Ie&&ct(Ne);if(!ze&&!Fe)return;Le=!0;let De=Ne,Je=V.current;if(ze){De=vn(De,"inline");let We=j.includes("e");Je=Ar(Je,We!==k?"left":"right")}Fe&&(De=vn(De,"block"),Je=Fr(Je,j.includes("s")?"top":"bottom")),Oe(Je,De)};ft({element:te.currentTarget,pointerId:te.pointerId,startClientX:te.clientX,startClientY:te.clientY,captureStart:()=>Ee,activeClasses:[{el:document.body,classes:["rdd-resizing-active"]}],onMove:(Ne,ze,Fe)=>{let{cw:De,ch:Je}=Ve(),We=ee.current==="docked"?at():{left:0,right:0,top:0,bottom:0},{x:Rt,y:Xt,w:Qe,h:bt}=$t(j,Ne,ze,Fe,{minW:$r,minH:Br,maxW:De-We.right-Fe.x,maxH:Je-We.bottom-Fe.y,minX:We.left,minY:We.top});if(ut(),ee.current==="docked"&&x){let f=De-We.left-We.right,p=Je-We.top-We.bottom-be.current,n=ie.current,l={...Me};Ae&&!ht(n)&&(Qe>=f-Ao?l.inline=!0:Me.inline&&Qe<f-Fo&&(l.inline=!1)),Ie&&!ct(n)&&(bt>=p-Ao?l.block=!0:Me.block&&bt<p-Fo&&(l.block=!1)),(l.inline!==Me.inline||l.block!==Me.block)&&(Me=l,G(l))}let i=Le?vn(vn(ie.current,Ae?"inline":"block"),Ie?"block":"inline"):ie.current;K(f=>({w:ht(i)?f.w:Qe,h:ct(i)?f.h:bt})),ee.current==="free"&&N({x:Rt,y:Xt})},onEnd:Ne=>{if(!Me.inline&&!Me.block){(le.current.inline||le.current.block)&&G({inline:!1,block:!1});return}K(Fe=>({w:Me.inline?Ne.w:Fe.w,h:Me.block?Ne.h:Fe.h}));let ze=ie.current;Me.inline&&(ze=Oo(ze,"inline")),Me.block&&(ze=Oo(ze,"block")),Oe(V.current,ze),G({inline:!1,block:!1})}})},st=j=>{if(q.current){let te=q.current;if(!te.hasDragged){if(Math.abs(j.clientX-te.mouseX)+Math.abs(j.clientY-te.mouseY)<4)return;if(te.hasDragged=!0,ee.current==="docked"){if(ie.current){let Le=U.current?.getBoundingClientRect();Le&&K({w:Math.round(Le.width),h:Math.round(Le.height)}),Oe(V.current,null)}c?.undockWindow(e),R("free")}document.body.classList.add("rdd-dragging-active"),c?.setDraggingId(e)}let{cw:ce,ch:ye}=Ve(),ke=Math.max(0,Math.min(te.posX+j.clientX-te.mouseX,ce-ve.current.w)),Ee=Math.max(0,Math.min(te.posY+j.clientY-te.mouseY,ye-ve.current.h));N({x:ke,y:Ee});let Ae=c?.containerRef?.current;if(Ae){let Ie=_r(Ae,j.clientX,j.clientY);c?.setHoveredZone(Ie&&k?jt(Ie):Ie)}}},Te=()=>{if(q.current?.hasDragged){let j=c?.hoveredZone;j&&(c?.dockWindow(e,j,ie.current),R("docked"),N(null),Oe(j,ie.current)),c?.setHoveredZone(null),c?.setDraggingId(null)}document.body.classList.remove("rdd-dragging-active"),q.current=null},se=()=>{q.current?.hasDragged&&(c?.setHoveredZone(null),c?.setDraggingId(null)),document.body.classList.remove("rdd-dragging-active"),q.current=null},pe;if(g==="docked"&&c){let j=Ho(C,z),te=0,ce=j.length===0;for(let ke of j){let Ee=c.stacks[ke]??[],Ae=Ee.indexOf(e);if(Ae===-1)continue;ce=!0;let Ie=0;for(let Le=0;Le<Ae;Le++)Ie+=(c.dockedSizes[Ee[Le]]??s)+Gr;te=Math.max(te,Ie)}be.current=te;let ye=at();pe={zIndex:Ze,transition:"top 0.2s ease, bottom 0.2s ease",opacity:ce?void 0:0,pointerEvents:ce?void 0:"none"},ht(z)?(pe.insetInlineStart=(c.insetInlineStart??0)+Yt,pe.insetInlineEnd=(c.insetInlineEnd??0)+Yt):(pe[C.endsWith("-right")?"insetInlineEnd":"insetInlineStart"]=Yt,pe.width=A.w),ct(z)?(pe.top=ye.top,pe.bottom=ye.bottom):C.startsWith("top-")?(pe.top=ye.top+te,pe.height=A.h):(pe.bottom=ye.bottom+te,pe.height=A.h)}else pe={left:u?.x??0,top:u?.y??0,width:A.w,height:A.h,zIndex:Ze};let Xe=H.default.useMemo(()=>{if(g==="free")return["n","ne","e","se","s","sw","w","nw"];let j=C.startsWith("top-")?"s":"n",ce=C.endsWith("-right")!==k?"w":"e",ye=ht(z),ke=ct(z),Ee=[];return Ee.push(...ye?["e","w"]:[ce]),Ee.push(...ke?["n","s"]:[j]),!ye&&!ke&&Ee.push(`${j}${ce}`),Ee},[g,C,k,z]),Ge=(0,oe.jsxs)("svg",{width:"8",height:"8",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",children:[(0,oe.jsx)("line",{x1:"1",y1:"1",x2:"9",y2:"9"}),(0,oe.jsx)("line",{x1:"9",y1:"1",x2:"1",y2:"9"})]});return(0,oe.jsxs)("div",{ref:U,dir:k?"rtl":"ltr",className:["rdd-panel-float",Ue?"rdd-panel-float--active":"",X.inline||X.block?"rdd-panel-float--snapping":""].filter(Boolean).join(" "),style:pe,onPointerDown:lt,onPointerMove:st,onPointerUp:Te,onPointerCancel:se,children:[(0,oe.jsxs)("div",{className:"rdd-panel-float__header",onPointerDown:dt,children:[o&&(0,oe.jsx)("span",{className:"rdd-panel-float__icon",children:o}),(0,oe.jsx)("span",{className:"rdd-panel-float__title",children:ge(t,D)}),(0,oe.jsx)("button",{type:"button",className:"rdd-panel-float__close",onClick:M,onPointerDown:j=>j.stopPropagation(),title:ge(F.closeTooltip,D),"aria-label":ge(F.closeTooltip,D),children:Ge})]}),(0,oe.jsx)("div",{className:"rdd-panel-float__body",children:w}),Xe.map(j=>(0,oe.jsx)("div",{className:`rdd-resize-handle rdd-resize-${j}`,onPointerDown:it(j)},j))]})}function er(){let[e,t]=(0,H.useState)(!1),o=(0,H.useCallback)(()=>{t(!0)},[]),r=(0,H.useCallback)(()=>{t(!1)},[]);return{isOpen:e,open:o,close:r}}var Xr=[];function tr(){let e=(0,H.useContext)(Go),t=e?.managedWindowIds??Xr;return(0,H.useMemo)(()=>({open:(o,r)=>e?.openManaged(o,r),close:o=>e?.closeManaged(o),closeAll:()=>e?.closeAllManaged(),isOpen:o=>t.includes(o),openIds:t}),[e,t])}0&&(module.exports={ConfirmationForm,ContextMenu,ContextMenuProvider,DefaultContextMenuAdapter,DockableDesktopProvider,FormContainerContext,FormContainerProvider,LeftPanelRenderer,ModalStackRenderer,PanelContributionProvider,PanelFloatingWindow,PanelOverlayRoot,PanelProvider,PanelRegistry,PanelRegistryClass,PanelToolbar,PanelToolbarItem,PanelToolbarSeparator,RightPanelRenderer,SecondarySidebar,SidePanelRenderer,Sidebar,ToastContainer,Toolbar,ToolbarButton,ToolbarCenter,ToolbarProvider,ToolbarSearchInput,ToolbarSpacer,ToolbarToggle,WindowManager,WindowManagerProvider,WorkspaceClient,computeResizedRect,defaultPredefinedMessages,formatLabel,isSerializable,sidebarSectionToTab,startPointerDrag,toast,useActivePanelContribution,useColorScheme,useFormContainer,useFormatMessage,useMergedSidebarTabs,useMergedToolbarItems,usePanelActions,usePanelContext,usePanelContextMenu,usePanelContribution,usePanelFloatingWindow,usePanelFloatingWindowManager,usePanelId,usePanelSize,usePanelState,usePredefinedMessages,useRegistry,useShowContextMenu,useSidebar,useSidebarTab,useStyleClasses,useToolbar,useWindowManagerActions,useWindowManagerState});
|
|
24
24
|
//# sourceMappingURL=index.cjs.map
|