react-dockable-desktop 5.1.0 → 5.1.2

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