react-dockable-desktop 6.0.0 → 6.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,10 +1,10 @@
1
- import zn,{useState as Ge,useRef as xe,useEffect as ve,useCallback as In,useContext as yo}from"react";import{createPortal as Po}from"react-dom";import{createContext as gt,useContext as je,useState as rr,useRef as De,useMemo as en,useCallback as te,useEffect as St,useSyncExternalStore as ir}from"react";import{createContext as Jo,useContext as Qo,useSyncExternalStore as er}from"react";var tr={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:()=>()=>{}},yn=Jo(tr),ut=yn.Provider,Rt=()=>Qo(yn),nr=()=>{let{onResize:e,getDimensions:t}=Rt();return er(n=>e?e(()=>n()):()=>{},()=>t?t():null)};var Mt=class{registry=new Map;register(t,n,o){this.registry.set(t,{Component:n,defaultOptions:o})}get(t){return this.registry.get(t)}getRegisteredIds(){return Array.from(this.registry.keys())}},Qt=new Mt;var Ft={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 or}from"react";function Tt(e){if(e===null)return!0;if(e===void 0)return!1;let t=typeof e;if(t==="string"||t==="number"||t==="boolean")return!0;if(t==="function"||t==="symbol"||t==="bigint")return!1;if(e instanceof Date)return!0;if(or(e))return!1;if(Array.isArray(e))return e.every(Tt);let n=Object.getPrototypeOf(e);return n!==Object.prototype&&n!==null?!1:Object.values(e).every(Tt)}import{jsx as pt}from"react/jsx-runtime";var kt=gt(null),tn=gt(null),Jn=gt(null),Qn=gt(null),eo=gt(Ft),to=gt({}),et=()=>je(to),no=gt(Qt),_t=()=>je(no),Pn=class{listeners={};subscribe(t,n){return this.listeners[t]||(this.listeners[t]=[]),this.listeners[t].push(n),()=>{this.listeners[t]=this.listeners[t].filter(o=>o!==n)}}publish(t,n){this.listeners[t]&&this.listeners[t].forEach(o=>o(n))}},sr={type:"leaf",id:"group-default",panels:[],activePanelId:null};function oo(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:p,stickyBottom:s,...I}=n;return{...I,anchor:o}}return n});return{gridRoot:e.gridRoot,floating:t,minimized:e.minimized,panels:e.panels}}function ar(e){if(e)try{let t=oo(JSON.parse(e));if(t)return{...t,activePanelId:Object.keys(t.panels)[0]??null}}catch{}return{gridRoot:sr,floating:[],minimized:[],panels:{},activePanelId:null}}var xn=({children:e,client:t,formatMessage:n,predefinedMessages:o,dir:p,modalClass:s,modalBodyClass:I,sidePanelClass:h,sidePanelBodyClass:R,windowClass:v,windowBodyClass:x,zIndexBase:y})=>{let S=De(t?.registry??Qt).current,L=t?.config.formatMessage??n,z=t?.config.predefinedMessages??o,F=t?.config.dir??p,g=t?.config.zIndexBase??y??1e3,[M,C]=rr(()=>({...ar(t?.initialState??null),draggedPanelId:null,dir:F||"ltr",isRtl:F==="rtl",splitRatio:Math.min(.9,Math.max(.1,t?.config.defaultSplitRatio??.5)),edgeSplitRatio:Math.min(.9,Math.max(.1,t?.config.defaultEdgeSplitRatio??.2))})),N=De(M);N.current=M;let m=De(new Set);St(()=>{m.current.forEach(i=>i())},[M]);let w=te(()=>N.current,[]),O=te(i=>(m.current.add(i),()=>m.current.delete(i)),[]),_=De({}),l=De({}),k=en(()=>({...Ft,...z}),[z]),G=De(new Pn),Y=De(g);St(()=>(document.documentElement.style.setProperty("--rdd-z-base",String(g)),()=>{document.documentElement.style.removeProperty("--rdd-z-base")}),[g]);let q=te((i,b)=>G.current.subscribe(i,b),[]),J=te((i,b)=>{G.current.publish(i,b)},[]),U=te((i,b)=>{let d=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(d)&&(d=300),isNaN(a)&&(a=150),isNaN($)&&($=450),isNaN(r)&&(r=350);let P=E=>b.some(W=>{let A=typeof W.x=="string"?parseFloat(W.x):W.x,K=typeof W.y=="string"?parseFloat(W.y):W.y;return!W.maximized&&Math.abs(A-E.x)<20&&Math.abs(K-E.y)<20}),c=0;for(;P({x:d,y:a})&&c<10;)d+=30,a+=30,c++;let u=Math.max(100,window.innerWidth||1024),f=Math.max(100,window.innerHeight||768);return(d+$>u||a+r>f)&&(d=100+c%5*30,a=100+c%5*30),d=Math.max(0,Math.min(d,u-100)),a=Math.max(0,Math.min(a,f-40)),{x:d,y:a,width:$,height:r}},[]),me=te(i=>{C(b=>{let d=b.panels[i];if(!d)return b;if(d.state==="floating"){let a=b.floating.find(r=>r.id===i);if(!a)return b;let $=!b.floating.some(r=>r.z>a.z);return $&&b.activePanelId===i?b:($||(Y.current+=1),{...b,floating:b.floating.map(r=>r.id===i?{...r,z:$?a.z:Y.current}:r),activePanelId:i})}else if(d.state==="docked"){if(b.activePanelId===i)return b;let a=$=>$.type==="leaf"?$.panels.includes(i)?{...$,activePanelId:i}:$:{...$,children:$.children.map(a)};return{...b,gridRoot:a(b.gridRoot),activePanelId:i}}return b.activePanelId===i?b:{...b,activePanelId:i}})},[]),oe=(i,b)=>{if(i.type==="leaf"){let d=i.panels.indexOf(b);if(d===-1)return i;let a=i.panels.filter(P=>P!==b),$=i.activePanelId===b?a[d]||a[d-1]||a[0]||null:i.activePanelId,r={...i,panels:a,activePanelId:$};return a.length===0&&!i.keepOnEmpty?null:r}else{let d=i.children.map(r=>oe(r,b)).filter(r=>r!==null);if(d.length===0)return null;if(d.length===1)return d[0];let a=i.sizes.slice(0,d.length),$=a.reduce((r,P)=>r+P,0);return{...i,children:d,sizes:a.map(r=>r/$)}}},X=(i,b,d)=>{if(i.type==="leaf"){if(i.id===b){let a=i.panels.includes(d)?i.panels:[...i.panels,d];return{...i,panels:a,activePanelId:d}}return i}else return{...i,children:i.children.map(a=>X(a,b,d))}},B=i=>{if(i.type==="leaf")return i.id;for(let b of i.children){let d=B(b);if(d)return d}return null},D=te((i,b,d)=>{let a=i;if(d?.dedupeKey!==void 0){let f=Object.values(N.current.panels).find(E=>E.component===b&&E.dedupeKey===d.dedupeKey);f&&(a=f.id)}let $=!(a in N.current.panels),r=a!==i,P=d?.focus!==!1,u=d?.props!==void 0?Tt(d.props):!0;C(f=>{let E=f.panels[a],W=S.get(b),A=d?.title||d?.title||W?.defaultOptions?.title||a,K=d?.initialTarget||W?.defaultOptions?.initialTarget||"docked",re=W?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350},V=P?a:f.activePanelId;if(E)if(E.state==="minimized"){let se=f.minimized.filter(le=>le.id!==a);if(K==="floating"||!f.gridRoot){Y.current+=1;let le=U(re,f.floating);return{...f,minimized:se,floating:[...f.floating,{...le,id:a,z:Y.current}],panels:{...f.panels,[a]:{...E,state:"floating"}},activePanelId:V}}else{let le=B(f.gridRoot)||"group-default";return{...f,minimized:se,gridRoot:X(f.gridRoot,le,a),panels:{...f.panels,[a]:{...E,state:"docked"}},activePanelId:V}}}else{if(E.state==="floating")return P&&me(a),f;{let se=le=>le.type==="leaf"?le.panels.includes(a)?{...le,activePanelId:a}:le:{...le,children:le.children.map(se)};return{...f,gridRoot:se(f.gridRoot),activePanelId:V}}}let ae={id:a,title:A,component:b,state:K==="tabbed"?"docked":K,props:d?.props,serializable:u,dedupeKey:d?.dedupeKey},ie={...f.panels,[a]:ae};if(K==="floating"){Y.current+=1;let se=U(re,f.floating),le=d?.anchor??W?.defaultOptions?.defaultAnchor??null;return{...f,floating:[...f.floating,{...se,id:a,z:Y.current,anchor:le}],panels:ie,activePanelId:V}}else{let se=B(f.gridRoot)||"group-default";return{...f,gridRoot:X(f.gridRoot,se,a),panels:ie,activePanelId:V}}}),$&&G.current.publish("panel:opened",{id:a,component:b}),($||r)&&G.current.publish("layout:changed",{})},[U,me]),H=te(i=>{let b=i in N.current.panels;C(d=>{let a=d.panels[i];if(!a||S.get(a.component)?.defaultOptions?.canClose===!1)return d;delete _.current[i],delete l.current[i];let r={...d.panels};delete r[i];let P=oe(d.gridRoot,i);return{...d,gridRoot:P||{type:"leaf",id:"group-default",panels:[],activePanelId:null},floating:d.floating.filter(c=>c.id!==i),minimized:d.minimized.filter(c=>c.id!==i),panels:r}}),b&&(G.current.publish("panel:closed",{id:i}),G.current.publish("layout:changed",{}))},[]),j=te((i,b)=>{_.current[i]=b},[]),fe=te(i=>{delete _.current[i]},[]),pe=te((i,b)=>{l.current[i]=b},[]),Z=te(i=>{delete l.current[i]},[]),ue=te((i,b,d)=>{C(a=>{let $=a.panels[i];return $?{...a,panels:{...a.panels,[i]:{...$,dirty:b,dirtyOptions:d}}}:a})},[]),Te=te((i,b)=>{C(d=>{let a=d.panels[i];return a?{...d,panels:{...d.panels,[i]:{...a,title:b}}}:d})},[]),Se=te(async(i,b)=>{if(b?.force){H(i);return}let d=_.current[i];if(d&&!await d())return;let a=N.current.panels[i];if(a?.dirty)if(b?.onConfirm){if(!await b.onConfirm(a.dirtyOptions))return}else return;H(i)},[H]),ke=te(i=>{let b=N.current.panels[i]?.state!=="minimized"&&i in N.current.panels;C(d=>{let a=d.panels[i];if(!a||a.state==="minimized"||S.get(a.component)?.defaultOptions?.canMinimize===!1)return d;let r,P;if(a.state==="floating"){let u=d.floating.find(f=>f.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=f=>{if(f.type==="leaf")return f.panels.includes(i)?f.id:null;for(let E of f.children){let W=u(E);if(W)return W}return null};P=u(d.gridRoot)??void 0}let c=oe(d.gridRoot,i);return{...d,gridRoot:c||{type:"leaf",id:"group-default",panels:[],activePanelId:null},floating:d.floating.filter(u=>u.id!==i),minimized:[...d.minimized,{id:i,title:a.title,component:a.component}],panels:{...d.panels,[i]:{...a,state:"minimized",previousState:a.state,lastFloatingRect:r,lastLeafId:P}}}}),b&&(G.current.publish("panel:minimized",{id:i}),G.current.publish("layout:changed",{}))},[]),Xe=te(i=>{let b=N.current.panels[i]?.state==="minimized";C(d=>{let a=d.panels[i];if(!a||a.state!=="minimized")return d;let $=d.minimized.filter(P=>P.id!==i);if((a.previousState||"docked")==="floating"){Y.current+=1;let P=S.get(a.component),c=a.lastFloatingRect||P?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350},u=U(c,d.floating);return{...d,minimized:$,floating:[...d.floating,{...u,id:i,z:Y.current,anchor:a.lastFloatingRect?.anchor??null}],panels:{...d.panels,[i]:{...a,state:"floating"}}}}else{let P=(E,W)=>E.type==="leaf"?E.id===W:E.children.some(A=>P(A,W)),c=a.lastLeafId&&P(d.gridRoot,a.lastLeafId),u=S.get(a.component),f=u?.defaultOptions?.canDrag!==!1;if(c)return{...d,minimized:$,gridRoot:X(d.gridRoot,a.lastLeafId,i),panels:{...d.panels,[i]:{...a,state:"docked"}}};if(f){Y.current+=1;let E=a.lastFloatingRect||u?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350},W=U(E,d.floating);return{...d,minimized:$,floating:[...d.floating,{...W,id:i,z:Y.current,anchor:a.lastFloatingRect?.anchor??null}],panels:{...d.panels,[i]:{...a,state:"floating"}}}}else{let E=B(d.gridRoot)||"group-default";return{...d,minimized:$,gridRoot:X(d.gridRoot,E,i),panels:{...d.panels,[i]:{...a,state:"docked"}}}}}}),b&&(G.current.publish("panel:restored",{id:i}),G.current.publish("layout:changed",{}))},[U]),Fe=te((i,b,d)=>{C(a=>{let $=a.panels[i];if(!$||S.get($.component)?.defaultOptions?.canDrag===!1)return a;let P=S.get($.component),c=b||P?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350},u=oe(a.gridRoot,i);Y.current+=1;let f=U(c,a.floating);return{...a,gridRoot:u||{type:"leaf",id:"group-default",panels:[],activePanelId:null},floating:[...a.floating,{...f,id:i,z:Y.current,anchor:d??null}],panels:{...a.panels,[i]:{...$,state:"floating"}}}})},[U]),_e=te((i,b)=>{C(d=>{let a=d.panels[i];if(!a)return d;let $=d.floating.filter(c=>c.id!==i),r=oe(d.gridRoot,i),P=b||B(r||d.gridRoot)||"group-default";return{...d,gridRoot:X(r||d.gridRoot,P,i),floating:$,panels:{...d.panels,[i]:{...a,state:"docked"}}}})},[]),Ve=(i,b,d,a,$)=>{if(i.type==="leaf"){if(i.id===b){let r={type:"leaf",id:`group-split-${Date.now()}-${Math.floor(Math.random()*1e3)}`,panels:[d],activePanelId:d},P=a==="left"||a==="right"?"horizontal":"vertical",c=a==="left"||a==="top"?[r,i]:[i,r],u=a==="left"||a==="top"?[$,1-$]:[1-$,$];return{type:"branch",orientation:P,sizes:u,children:c}}return i}else return{...i,children:i.children.map(r=>Ve(r,b,d,a,$))}},Ke=te(i=>{C(b=>({...b,draggedPanelId:i}))},[]),ye=te((i,b,d)=>{C(a=>{let $=a.panels[i];if(!$)return a;let r=a.floating.filter(u=>u.id!==i),P=oe(a.gridRoot,i),c;return d==="center"?c=X(P||a.gridRoot,b,i):c=Ve(P||a.gridRoot,b,i,d,a.splitRatio),{...a,gridRoot:c,floating:r,panels:{...a.panels,[i]:{...$,state:"docked"}},draggedPanelId:null}})},[]),ee=te((i,b)=>{C(d=>{let a=d.panels[i];if(!a)return d;let $=d.floating.filter(W=>W.id!==i),r=oe(d.gridRoot,i),P={type:"leaf",id:`group-edge-${Date.now()}-${Math.floor(Math.random()*1e3)}`,panels:[i],activePanelId:i},c=b==="left"||b==="right"?"horizontal":"vertical",u=b==="left"||b==="top"?[P,r||d.gridRoot]:[r||d.gridRoot,P],f=d.edgeSplitRatio,E={type:"branch",orientation:c,sizes:b==="left"||b==="top"?[f,1-f]:[1-f,f],children:u};return{...d,gridRoot:E,floating:$,panels:{...d.panels,[i]:{...a,state:"docked"}},draggedPanelId:null}})},[]),Re=te((i,b,d)=>{C(a=>{let $=a.panels[i];if(!$)return a;let r=oe(a.gridRoot,i),P=f=>{if(f.type==="leaf"){if(f.id===b){let E=f.panels.filter(K=>K!==i),W=Math.max(0,Math.min(d,E.length)),A=[...E];return A.splice(W,0,i),{...f,panels:A,activePanelId:i}}return f}else return{...f,children:f.children.map(P)}},c=P(r||a.gridRoot),u=a.floating.filter(f=>f.id!==i);return{...a,gridRoot:c,floating:u,panels:{...a.panels,[i]:{...$,state:"docked"}},draggedPanelId:null}})},[]),Ee=te(i=>{C(b=>{let d=$=>{if($.type==="leaf")return $.id===i&&$.canClose!==!1?null:$;{let r=$.children.map(u=>d(u)).filter(u=>u!==null);if(r.length===0)return null;if(r.length===1)return r[0];let P=$.sizes.slice(0,r.length),c=P.reduce((u,f)=>u+f,0);return{...$,children:r,sizes:P.map(u=>u/c)}}},a=d(b.gridRoot);return{...b,gridRoot:a||{type:"leaf",id:"group-default",panels:[],activePanelId:null}}})},[]),Me=te(i=>{C(b=>({...b,floating:b.floating.map(d=>d.id===i?{...d,maximized:!d.maximized}:d)}))},[]),Ue=te((i,b)=>{let d=(a,$)=>{if(a.type==="leaf")return a;if($===i.length)return{...a,sizes:b};let r=i[$],P=a.children.map((c,u)=>u===r?d(c,$+1):c);return{...a,children:P}};C(a=>({...a,gridRoot:d(a.gridRoot,0)}))},[]),Je=te((i,b)=>{C(d=>({...d,floating:d.floating.map(a=>a.id===i?{...a,...b}:a)}))},[]),He=te(()=>{let i=N.current.panels,b=[],d={};for(let[c,u]of Object.entries(i)){let f=l.current[c],E=f?.(),W=f!==void 0&&E!==void 0,A=W?E:u.props,K=W?Tt(E):u.serializable;K?d[c]=W?{...u,props:A,serializable:K}:u:b.push(c)}let a=N.current.gridRoot,$=N.current.floating,r=N.current.minimized;for(let c of b)a=oe(a,c)||{type:"leaf",id:"group-default",panels:[],activePanelId:null},$=$.filter(u=>u.id!==c),r=r.filter(u=>u.id!==c);return b.length>0&&G.current.publish("layout:panels-excluded",{panels:b.map(c=>({id:c,component:i[c].component}))}),JSON.stringify({version:2,gridRoot:a,floating:$,minimized:r,panels:d})},[]),qe=te(i=>{try{let b=oo(JSON.parse(i));if(!b)return!1;let d=Object.keys(b.panels)[0]||null;return C(a=>({...a,gridRoot:b.gridRoot,floating:b.floating,minimized:b.minimized,panels:b.panels,draggedPanelId:null,activePanelId:d})),!0}catch(b){return console.error("Failed to parse layout configuration:",b),!1}},[]),Zt=te(i=>{C(b=>b.activePanelId===i?b:{...b,activePanelId:i})},[]),Ut=te(i=>{C(b=>b.dir===i?b:{...b,dir:i,isRtl:i==="rtl"})},[]),Wt=te(i=>i in N.current.panels,[]),st=te(()=>Object.keys(N.current.panels),[]),at=te((i,b)=>Object.values(N.current.panels).find(a=>a.component===i&&a.dedupeKey===b)?.id??null,[]);St(()=>{F&&C(i=>i.dir===F?i:{...i,dir:F,isRtl:F==="rtl"})},[F]);let Be=De(new Map),Qe=De(null),Ot=te(i=>(Qe.current=i,()=>{Qe.current=null}),[]),Jt=te(i=>{Qe.current?.(i)},[]),At=te((i,b)=>(Be.current.set(i,b),()=>{Be.current.delete(i)}),[]),lt=te(i=>Be.current.get(i)?.()??[],[]),Pt=en(()=>({openPanel:D,closePanel:H,minimizePanel:ke,restorePanel:Xe,floatPanel:Fe,dockPanel:_e,maximizePanel:Me,updateSplitSizes:Ue,updateFloatingPosition:Je,focusPanel:me,isOpen:Wt,getOpenPanelIds:st,findPanelId:at,saveLayout:He,loadLayout:qe,publish:J,subscribe:q,setDraggedPanelId:Ke,dockPanelToGroup:ye,movePanelOrder:Re,closeLeafGroup:Ee,registerCloseGuard:j,unregisterCloseGuard:fe,registerStateProvider:pe,unregisterStateProvider:Z,setPanelDirty:ue,updatePanelTitle:Te,requestClosePanel:Se,dockPanelToWorkspaceEdge:ee,setActivePanel:Zt,setDirection:Ut,registerPanelContextMenu:At,getPanelContextMenuItems:lt,showContextMenu:Jt,registerContextMenuFn:Ot}),[D,H,ke,Xe,Fe,_e,Me,Ue,Je,me,Wt,st,at,He,qe,J,q,Ke,ye,Re,Ee,j,fe,pe,Z,ue,Te,Se,ee,Zt,Ut,At,lt,Jt,Ot]),dt=i=>{let b=i.defaultMessage||i.id;return i.values&&Object.entries(i.values).forEach(([d,a])=>{b=b.replace(`{${d}}`,String(a))}),b},fn=en(()=>({modalClass:s,modalBodyClass:I,sidePanelClass:h,sidePanelBodyClass:R,windowClass:v,windowBodyClass:x}),[s,I,h,R,v,x]);St(()=>{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 Nn,{useState as Ye,useRef as Ce,useEffect as ve,useCallback as Ln,useContext as xo}from"react";import{createPortal as Co}from"react-dom";import{createContext as gt,useContext as je,useState as sr,useRef as De,useMemo as en,useCallback as te,useEffect as St,useSyncExternalStore as ar}from"react";import{createContext as er,useContext as tr,useSyncExternalStore as nr}from"react";var or={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:()=>()=>{}},yn=er(or),ut=yn.Provider,Rt=()=>tr(yn),rr=()=>{let{onResize:e,getDimensions:t}=Rt();return nr(n=>e?e(()=>n()):()=>{},()=>t?t():null)};var Mt=class{registry=new Map;register(t,n,o){this.registry.set(t,{Component:n,defaultOptions:o})}get(t){return this.registry.get(t)}getRegisteredIds(){return Array.from(this.registry.keys())}},Qt=new Mt;var Ft={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 ir}from"react";function Tt(e){if(e===null)return!0;if(e===void 0)return!1;let t=typeof e;if(t==="string"||t==="number"||t==="boolean")return!0;if(t==="function"||t==="symbol"||t==="bigint")return!1;if(e instanceof Date)return!0;if(ir(e))return!1;if(Array.isArray(e))return e.every(Tt);let n=Object.getPrototypeOf(e);return n!==Object.prototype&&n!==null?!1:Object.values(e).every(Tt)}import{jsx as pt}from"react/jsx-runtime";var kt=gt(null),tn=gt(null),Qn=gt(null),eo=gt(null),to=gt(Ft),no=gt({}),Qe=()=>je(no),oo=gt(Qt),_t=()=>je(oo),Pn=class{listeners={};subscribe(t,n){return this.listeners[t]||(this.listeners[t]=[]),this.listeners[t].push(n),()=>{this.listeners[t]=this.listeners[t].filter(o=>o!==n)}}publish(t,n){this.listeners[t]&&this.listeners[t].forEach(o=>o(n))}},lr={type:"leaf",id:"group-default",panels:[],activePanelId:null};function ro(e,t){let n=t.panels[e];if(!n||n.state==="minimized")return!1;if(t.floating.some(l=>l.id===e))return!0;let o=l=>l.type==="leaf"?l.activePanelId===e:l.children.some(o);return t.gridRoot?o(t.gridRoot):!1}function xn(e){let t=s=>s!==null&&!!e.panels[s]&&e.panels[s].state!=="minimized",n=s=>{if(s.type==="leaf")return t(s.activePanelId)?s.activePanelId:null;for(let E of s.children){let h=n(E);if(h)return h}return null},o=e.gridRoot?n(e.gridRoot):null;if(o)return o;let l=null;for(let s of e.floating)t(s.id)&&(!l||s.z>l.z)&&(l=s);return l?.id??null}function io(e){if(!e||!e.gridRoot||!Array.isArray(e.floating)||!Array.isArray(e.minimized)||!e.panels)return null;let t=e.floating.map(s=>{if("stickyRight"in s||"stickyBottom"in s){let E=s.stickyRight&&s.stickyBottom?"bottom-right":s.stickyRight?"top-right":s.stickyBottom?"bottom-left":null,{stickyRight:h,stickyBottom:w,...b}=s;return{...b,anchor:E}}return s}),n={gridRoot:e.gridRoot,floating:t,panels:e.panels},o=typeof e.activePanelId=="string"?e.activePanelId:null,l=null;return o!==null&&(ro(o,n)?l=o:process.env.NODE_ENV==="development"&&console.warn(`[react-dockable-desktop] Ignoring the saved layout's activePanelId ("${o}") \u2014 it doesn't name a currently visible panel (it may have been closed, minimized, or excluded from the snapshot as non-serializable). Falling back to the selected tab of the first leaf in the grid.`)),l===null&&(l=xn(n)),{gridRoot:e.gridRoot,floating:t,minimized:e.minimized,panels:e.panels,activePanelId:l}}function dr(e){if(e)try{let t=io(JSON.parse(e));if(t)return t}catch{}return{gridRoot:lr,floating:[],minimized:[],panels:{},activePanelId:null}}var Cn=({children:e,client:t,formatMessage:n,predefinedMessages:o,dir:l,modalClass:s,modalBodyClass:E,sidePanelClass:h,sidePanelBodyClass:w,windowClass:b,windowBodyClass:x,zIndexBase:P})=>{let T=De(t?.registry??Qt).current,L=t?.config.formatMessage??n,N=t?.config.predefinedMessages??o,_=t?.config.dir??l,u=t?.config.zIndexBase??P??1e3,[M,C]=sr(()=>({...dr(t?.initialState??null),draggedPanelId:null,dir:_||"ltr",isRtl:_==="rtl",splitRatio:Math.min(.9,Math.max(.1,t?.config.defaultSplitRatio??.5)),edgeSplitRatio:Math.min(.9,Math.max(.1,t?.config.defaultEdgeSplitRatio??.2))})),A=De(M);A.current=M;let g=De(new Set);St(()=>{g.current.forEach(i=>i())},[M]);let R=te(()=>A.current,[]),F=te(i=>(g.current.add(i),()=>g.current.delete(i)),[]),H=De({}),c=De({}),I=en(()=>({...Ft,...N}),[N]),$=De(new Pn),Y=De(u);St(()=>(document.documentElement.style.setProperty("--rdd-z-base",String(u)),()=>{document.documentElement.style.removeProperty("--rdd-z-base")}),[u]);let j=te((i,v)=>$.current.subscribe(i,v),[]),Q=te((i,v)=>{$.current.publish(i,v)},[]),U=te((i,v)=>{let d=typeof i.x=="string"?parseFloat(i.x):i.x,a=typeof i.y=="string"?parseFloat(i.y):i.y,B=typeof i.width=="string"?parseFloat(i.width):i.width,r=typeof i.height=="string"?parseFloat(i.height):i.height;isNaN(d)&&(d=300),isNaN(a)&&(a=150),isNaN(B)&&(B=450),isNaN(r)&&(r=350);let y=k=>v.some(z=>{let D=typeof z.x=="string"?parseFloat(z.x):z.x,V=typeof z.y=="string"?parseFloat(z.y):z.y;return!z.maximized&&Math.abs(D-k.x)<20&&Math.abs(V-k.y)<20}),p=0;for(;y({x:d,y:a})&&p<10;)d+=30,a+=30,p++;let m=Math.max(100,window.innerWidth||1024),f=Math.max(100,window.innerHeight||768);return(d+B>m||a+r>f)&&(d=100+p%5*30,a=100+p%5*30),d=Math.max(0,Math.min(d,m-100)),a=Math.max(0,Math.min(a,f-40)),{x:d,y:a,width:B,height:r}},[]),fe=te(i=>{C(v=>{let d=v.panels[i];if(!d)return v;if(d.state==="floating"){let a=v.floating.find(r=>r.id===i);if(!a)return v;let B=!v.floating.some(r=>r.z>a.z);return B&&v.activePanelId===i?v:(B||(Y.current+=1),{...v,floating:v.floating.map(r=>r.id===i?{...r,z:B?a.z:Y.current}:r),activePanelId:i})}else if(d.state==="docked"){if(v.activePanelId===i)return v;let a=B=>B.type==="leaf"?B.panels.includes(i)?{...B,activePanelId:i}:B:{...B,children:B.children.map(a)};return{...v,gridRoot:a(v.gridRoot),activePanelId:i}}return v.activePanelId===i?v:{...v,activePanelId:i}})},[]),oe=(i,v)=>{if(i.type==="leaf"){let d=i.panels.indexOf(v);if(d===-1)return i;let a=i.panels.filter(y=>y!==v),B=i.activePanelId===v?a[d]||a[d-1]||a[0]||null:i.activePanelId,r={...i,panels:a,activePanelId:B};return a.length===0&&!i.keepOnEmpty?null:r}else{let d=i.children.map(r=>oe(r,v)).filter(r=>r!==null);if(d.length===0)return null;if(d.length===1)return d[0];let a=i.sizes.slice(0,d.length),B=a.reduce((r,y)=>r+y,0);return{...i,children:d,sizes:a.map(r=>r/B)}}},X=(i,v,d)=>{if(i.type==="leaf"){if(i.id===v){let a=i.panels.includes(d)?i.panels:[...i.panels,d];return{...i,panels:a,activePanelId:d}}return i}else return{...i,children:i.children.map(a=>X(a,v,d))}},K=i=>{if(i.type==="leaf")return i.id;for(let v of i.children){let d=K(v);if(d)return d}return null},W=te((i,v,d)=>{let a=i;if(d?.dedupeKey!==void 0){let f=Object.values(A.current.panels).find(k=>k.component===v&&k.dedupeKey===d.dedupeKey);f&&(a=f.id)}let B=!(a in A.current.panels),r=a!==i,y=d?.focus!==!1,m=d?.props!==void 0?Tt(d.props):!0;C(f=>{let k=f.panels[a],z=T.get(v),D=d?.title||d?.title||z?.defaultOptions?.title||a,V=d?.initialTarget||z?.defaultOptions?.initialTarget||"docked",J=z?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350},G=y?a:f.activePanelId;if(k)if(k.state==="minimized"){let se=f.minimized.filter(le=>le.id!==a);if(V==="floating"||!f.gridRoot){Y.current+=1;let le=U(J,f.floating);return{...f,minimized:se,floating:[...f.floating,{...le,id:a,z:Y.current}],panels:{...f.panels,[a]:{...k,state:"floating"}},activePanelId:G}}else{let le=K(f.gridRoot)||"group-default";return{...f,minimized:se,gridRoot:X(f.gridRoot,le,a),panels:{...f.panels,[a]:{...k,state:"docked"}},activePanelId:G}}}else{if(k.state==="floating")return y&&fe(a),f;{let se=le=>le.type==="leaf"?le.panels.includes(a)?{...le,activePanelId:a}:le:{...le,children:le.children.map(se)};return{...f,gridRoot:se(f.gridRoot),activePanelId:G}}}let ae={id:a,title:D,component:v,state:V==="tabbed"?"docked":V,props:d?.props,serializable:m,dedupeKey:d?.dedupeKey},re={...f.panels,[a]:ae};if(V==="floating"){Y.current+=1;let se=U(J,f.floating),le=d?.anchor??z?.defaultOptions?.defaultAnchor??null;return{...f,floating:[...f.floating,{...se,id:a,z:Y.current,anchor:le}],panels:re,activePanelId:G}}else{let se=K(f.gridRoot)||"group-default";return{...f,gridRoot:X(f.gridRoot,se,a),panels:re,activePanelId:G}}}),B&&$.current.publish("panel:opened",{id:a,component:v}),(B||r)&&$.current.publish("layout:changed",{})},[U,fe]),O=te(i=>{let v=i in A.current.panels;C(d=>{let a=d.panels[i];if(!a||T.get(a.component)?.defaultOptions?.canClose===!1)return d;delete H.current[i],delete c.current[i];let r={...d.panels};delete r[i];let y=oe(d.gridRoot,i)||{type:"leaf",id:"group-default",panels:[],activePanelId:null},p=d.floating.filter(f=>f.id!==i),m=d.activePanelId===i?xn({gridRoot:y,floating:p,panels:r}):d.activePanelId;return{...d,gridRoot:y,floating:p,minimized:d.minimized.filter(f=>f.id!==i),panels:r,activePanelId:m}}),v&&($.current.publish("panel:closed",{id:i}),$.current.publish("layout:changed",{}))},[]),q=te((i,v)=>{H.current[i]=v},[]),de=te(i=>{delete H.current[i]},[]),ye=te((i,v)=>{c.current[i]=v},[]),Z=te(i=>{delete c.current[i]},[]),pe=te((i,v,d)=>{C(a=>{let B=a.panels[i];return B?{...a,panels:{...a.panels,[i]:{...B,dirty:v,dirtyOptions:d}}}:a})},[]),me=te((i,v)=>{C(d=>{let a=d.panels[i];return a?{...d,panels:{...d.panels,[i]:{...a,title:v}}}:d})},[]),we=te(async(i,v)=>{if(v?.force){O(i);return}let d=H.current[i];if(d&&!await d())return;let a=A.current.panels[i];if(a?.dirty)if(v?.onConfirm){if(!await v.onConfirm(a.dirtyOptions))return}else return;O(i)},[O]),ke=te(i=>{let v=A.current.panels[i]?.state!=="minimized"&&i in A.current.panels;C(d=>{let a=d.panels[i];if(!a||a.state==="minimized"||T.get(a.component)?.defaultOptions?.canMinimize===!1)return d;let r,y;if(a.state==="floating"){let z=d.floating.find(D=>D.id===i);z&&(r={x:Number(z.x),y:Number(z.y),width:Number(z.width),height:Number(z.height),anchor:z.anchor??null})}else if(a.state==="docked"){let z=D=>{if(D.type==="leaf")return D.panels.includes(i)?D.id:null;for(let V of D.children){let J=z(V);if(J)return J}return null};y=z(d.gridRoot)??void 0}let p=oe(d.gridRoot,i)||{type:"leaf",id:"group-default",panels:[],activePanelId:null},m=d.floating.filter(z=>z.id!==i),f={...d.panels,[i]:{...a,state:"minimized",previousState:a.state,lastFloatingRect:r,lastLeafId:y}},k=d.activePanelId===i?xn({gridRoot:p,floating:m,panels:f}):d.activePanelId;return{...d,gridRoot:p,floating:m,minimized:[...d.minimized,{id:i,title:a.title,component:a.component}],panels:f,activePanelId:k}}),v&&($.current.publish("panel:minimized",{id:i}),$.current.publish("layout:changed",{}))},[]),Ve=te(i=>{let v=A.current.panels[i]?.state==="minimized";C(d=>{let a=d.panels[i];if(!a||a.state!=="minimized")return d;let B=d.minimized.filter(y=>y.id!==i);if((a.previousState||"docked")==="floating"){Y.current+=1;let y=T.get(a.component),p=a.lastFloatingRect||y?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350},m=U(p,d.floating);return{...d,minimized:B,floating:[...d.floating,{...m,id:i,z:Y.current,anchor:a.lastFloatingRect?.anchor??null}],panels:{...d.panels,[i]:{...a,state:"floating"}}}}else{let y=(k,z)=>k.type==="leaf"?k.id===z:k.children.some(D=>y(D,z)),p=a.lastLeafId&&y(d.gridRoot,a.lastLeafId),m=T.get(a.component),f=m?.defaultOptions?.canDrag!==!1;if(p)return{...d,minimized:B,gridRoot:X(d.gridRoot,a.lastLeafId,i),panels:{...d.panels,[i]:{...a,state:"docked"}}};if(f){Y.current+=1;let k=a.lastFloatingRect||m?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350},z=U(k,d.floating);return{...d,minimized:B,floating:[...d.floating,{...z,id:i,z:Y.current,anchor:a.lastFloatingRect?.anchor??null}],panels:{...d.panels,[i]:{...a,state:"floating"}}}}else{let k=K(d.gridRoot)||"group-default";return{...d,minimized:B,gridRoot:X(d.gridRoot,k,i),panels:{...d.panels,[i]:{...a,state:"docked"}}}}}}),v&&($.current.publish("panel:restored",{id:i}),$.current.publish("layout:changed",{}))},[U]),_e=te((i,v,d)=>{C(a=>{let B=a.panels[i];if(!B||T.get(B.component)?.defaultOptions?.canDrag===!1)return a;let y=T.get(B.component),p=v||y?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350},m=oe(a.gridRoot,i);Y.current+=1;let f=U(p,a.floating);return{...a,gridRoot:m||{type:"leaf",id:"group-default",panels:[],activePanelId:null},floating:[...a.floating,{...f,id:i,z:Y.current,anchor:d??null}],panels:{...a.panels,[i]:{...B,state:"floating"}}}})},[U]),He=te((i,v)=>{C(d=>{let a=d.panels[i];if(!a)return d;let B=d.floating.filter(p=>p.id!==i),r=oe(d.gridRoot,i),y=v||K(r||d.gridRoot)||"group-default";return{...d,gridRoot:X(r||d.gridRoot,y,i),floating:B,panels:{...d.panels,[i]:{...a,state:"docked"}}}})},[]),We=(i,v,d,a,B)=>{if(i.type==="leaf"){if(i.id===v){let r={type:"leaf",id:`group-split-${Date.now()}-${Math.floor(Math.random()*1e3)}`,panels:[d],activePanelId:d},y=a==="left"||a==="right"?"horizontal":"vertical",p=a==="left"||a==="top"?[r,i]:[i,r],m=a==="left"||a==="top"?[B,1-B]:[1-B,B];return{type:"branch",orientation:y,sizes:m,children:p}}return i}else return{...i,children:i.children.map(r=>We(r,v,d,a,B))}},Ke=te(i=>{C(v=>({...v,draggedPanelId:i}))},[]),Pe=te((i,v,d)=>{C(a=>{let B=a.panels[i];if(!B)return a;let r=a.floating.filter(m=>m.id!==i),y=oe(a.gridRoot,i),p;return d==="center"?p=X(y||a.gridRoot,v,i):p=We(y||a.gridRoot,v,i,d,a.splitRatio),{...a,gridRoot:p,floating:r,panels:{...a.panels,[i]:{...B,state:"docked"}},draggedPanelId:null}})},[]),ee=te((i,v)=>{C(d=>{let a=d.panels[i];if(!a)return d;let B=d.floating.filter(z=>z.id!==i),r=oe(d.gridRoot,i),y={type:"leaf",id:`group-edge-${Date.now()}-${Math.floor(Math.random()*1e3)}`,panels:[i],activePanelId:i},p=v==="left"||v==="right"?"horizontal":"vertical",m=v==="left"||v==="top"?[y,r||d.gridRoot]:[r||d.gridRoot,y],f=d.edgeSplitRatio,k={type:"branch",orientation:p,sizes:v==="left"||v==="top"?[f,1-f]:[1-f,f],children:m};return{...d,gridRoot:k,floating:B,panels:{...d.panels,[i]:{...a,state:"docked"}},draggedPanelId:null}})},[]),Te=te((i,v,d)=>{C(a=>{let B=a.panels[i];if(!B)return a;let r=oe(a.gridRoot,i),y=f=>{if(f.type==="leaf"){if(f.id===v){let k=f.panels.filter(V=>V!==i),z=Math.max(0,Math.min(d,k.length)),D=[...k];return D.splice(z,0,i),{...f,panels:D,activePanelId:i}}return f}else return{...f,children:f.children.map(y)}},p=y(r||a.gridRoot),m=a.floating.filter(f=>f.id!==i);return{...a,gridRoot:p,floating:m,panels:{...a.panels,[i]:{...B,state:"docked"}},draggedPanelId:null}})},[]),Ee=te(i=>{C(v=>{let d=B=>{if(B.type==="leaf")return B.id===i&&B.canClose!==!1?null:B;{let r=B.children.map(m=>d(m)).filter(m=>m!==null);if(r.length===0)return null;if(r.length===1)return r[0];let y=B.sizes.slice(0,r.length),p=y.reduce((m,f)=>m+f,0);return{...B,children:r,sizes:y.map(m=>m/p)}}},a=d(v.gridRoot);return{...v,gridRoot:a||{type:"leaf",id:"group-default",panels:[],activePanelId:null}}})},[]),Se=te(i=>{C(v=>({...v,floating:v.floating.map(d=>d.id===i?{...d,maximized:!d.maximized}:d)}))},[]),Ze=te((i,v)=>{let d=(a,B)=>{if(a.type==="leaf")return a;if(B===i.length)return{...a,sizes:v};let r=i[B],y=a.children.map((p,m)=>m===r?d(p,B+1):p);return{...a,children:y}};C(a=>({...a,gridRoot:d(a.gridRoot,0)}))},[]),Ue=te((i,v)=>{C(d=>({...d,floating:d.floating.map(a=>a.id===i?{...a,...v}:a)}))},[]),Be=te(()=>{let i=A.current.panels,v=[],d={};for(let[f,k]of Object.entries(i)){let z=c.current[f],D=z?.(),V=z!==void 0&&D!==void 0,J=V?D:k.props,G=V?Tt(D):k.serializable;G?d[f]=V?{...k,props:J,serializable:G}:k:v.push(f)}let a=A.current.gridRoot,B=A.current.floating,r=A.current.minimized;for(let f of v)a=oe(a,f)||{type:"leaf",id:"group-default",panels:[],activePanelId:null},B=B.filter(k=>k.id!==f),r=r.filter(k=>k.id!==f);v.length>0&&$.current.publish("layout:panels-excluded",{panels:v.map(f=>({id:f,component:i[f].component}))});let y=A.current.activePanelId,p=y!==null&&ro(y,{gridRoot:a,floating:B,panels:d})?y:null,m={version:2,...p!==null?{activePanelId:p}:{},gridRoot:a,floating:B,minimized:r,panels:d};return JSON.stringify(m)},[]),qe=te(i=>{try{let v=io(JSON.parse(i));return v?(C(d=>({...d,gridRoot:v.gridRoot,floating:v.floating,minimized:v.minimized,panels:v.panels,draggedPanelId:null,activePanelId:v.activePanelId})),!0):!1}catch(v){return console.error("Failed to parse layout configuration:",v),!1}},[]),Zt=te(i=>{C(v=>v.activePanelId===i?v:{...v,activePanelId:i})},[]),Ut=te(i=>{C(v=>v.dir===i?v:{...v,dir:i,isRtl:i==="rtl"})},[]),Dt=te(i=>i in A.current.panels,[]),st=te(()=>Object.keys(A.current.panels),[]),at=te((i,v)=>Object.values(A.current.panels).find(a=>a.component===i&&a.dedupeKey===v)?.id??null,[]);St(()=>{_&&C(i=>i.dir===_?i:{...i,dir:_,isRtl:_==="rtl"})},[_]);let $e=De(new Map),Je=De(null),Ot=te(i=>(Je.current=i,()=>{Je.current=null}),[]),Jt=te(i=>{Je.current?.(i)},[]),At=te((i,v)=>($e.current.set(i,v),()=>{$e.current.delete(i)}),[]),lt=te(i=>$e.current.get(i)?.()??[],[]),Pt=en(()=>({openPanel:W,closePanel:O,minimizePanel:ke,restorePanel:Ve,floatPanel:_e,dockPanel:He,maximizePanel:Se,updateSplitSizes:Ze,updateFloatingPosition:Ue,focusPanel:fe,isOpen:Dt,getOpenPanelIds:st,findPanelId:at,saveLayout:Be,loadLayout:qe,publish:Q,subscribe:j,setDraggedPanelId:Ke,dockPanelToGroup:Pe,movePanelOrder:Te,closeLeafGroup:Ee,registerCloseGuard:q,unregisterCloseGuard:de,registerStateProvider:ye,unregisterStateProvider:Z,setPanelDirty:pe,updatePanelTitle:me,requestClosePanel:we,dockPanelToWorkspaceEdge:ee,setActivePanel:Zt,setDirection:Ut,registerPanelContextMenu:At,getPanelContextMenuItems:lt,showContextMenu:Jt,registerContextMenuFn:Ot}),[W,O,ke,Ve,_e,He,Se,Ze,Ue,fe,Dt,st,at,Be,qe,Q,j,Ke,Pe,Te,Ee,q,de,ye,Z,pe,me,we,ee,Zt,Ut,At,lt,Jt,Ot]),dt=i=>{let v=i.defaultMessage||i.id;return i.values&&Object.entries(i.values).forEach(([d,a])=>{v=v.replace(`{${d}}`,String(a))}),v},mn=en(()=>({modalClass:s,modalBodyClass:E,sidePanelClass:h,sidePanelBodyClass:w,windowClass:b,windowBodyClass:x}),[s,E,h,w,b,x]);St(()=>{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{}},[]),St(()=>{if(t)return t._connect(Pt),()=>{t._disconnect()}},[t,Pt]);let hn=en(()=>({getSnapshot:w,subscribeToState:O}),[w,O]);return pt(to.Provider,{value:fn,children:pt(no.Provider,{value:S,children:pt(Qn.Provider,{value:hn,children:pt(kt.Provider,{value:M,children:pt(tn.Provider,{value:Pt,children:pt(Jn.Provider,{value:L||dt,children:pt(eo.Provider,{value:k,children:e})})})})})})})},Un=e=>()=>{};function ze(e){let t=je(kt),n=je(Qn),o=De(e);o.current=e;let p=ir(e?n?.subscribeToState??Un:Un,()=>{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?p:t}var Ht=()=>{let e=je(tn);if(!e)throw new Error("useWindowManagerActions must be used within WindowManagerProvider");return e},Cn=()=>{let e=je(tn);if(!e)throw new Error("useWindowManagerActionsInternal must be used within WindowManagerProvider");return e},We=()=>je(Jn)||(t=>{let n=t.defaultMessage||t.id;return t.values&&Object.entries(t.values).forEach(([o,p])=>{n=n.replace(`{${o}}`,String(p))}),n}),ce=(e,t)=>e?typeof e=="string"?e:t(e):"",lr=()=>{let{publish:e,subscribe:t}=Ht();return{publish:e,subscribe:t}},$e=()=>je(eo),nn=()=>Rt().instanceId;function dr(e){let t=je(tn),n=nn(),o=De(e);o.current=e,St(()=>{if(!(!t?.registerPanelContextMenu||!n))return t.registerPanelContextMenu(n,()=>o.current)},[n,t?.registerPanelContextMenu])}import $t,{forwardRef as ao,useImperativeHandle as cr,useState as ro,useRef as Bt,useEffect as io,useLayoutEffect as lo}from"react";import{createPortal as co}from"react-dom";import{Fragment as gr,jsx as he,jsxs as mt}from"react/jsx-runtime";function ur(e){return e?"touches"in e&&e.touches.length>0?{x:e.touches[0].clientX,y:e.touches[0].clientY}:{x:e.clientX,y:e.clientY}:{x:0,y:0}}function Et(e,t){return typeof e=="string"?e:t?t(e):e.defaultMessage??e.id}function wn(e){return"separator"in e}function on(e){return!wn(e)&&"items"in e}var uo=ao(({items:e,x:t,y:n,theme:o,fmt:p,onClose:s,onMouseEnter:I,onMouseLeave:h},R)=>(lo(()=>{let v=R?.current;if(!v)return;let x=v.getBoundingClientRect(),y=8;x.right>window.innerWidth-y&&(v.style.left=`${Math.max(y,window.innerWidth-x.width-y)}px`,v.style.right="auto"),x.bottom>window.innerHeight-y&&(v.style.top=`${Math.max(y,window.innerHeight-x.height-y)}px`),x.left<y&&(v.style.left=`${y}px`,v.style.right="auto"),x.top<y&&(v.style.top=`${y}px`)}),co(he("div",{ref:R,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((v,x)=>{if(wn(v))return he("hr",{className:"rdd-context-menu__separator",role:"separator"},x);let y=v,S=y.checkbox&&y.checkbox.active!==!1,L=S&&y.checkbox.value,z=y.disabled===!0||(S?y.checkbox.enabled===!1:!1);return mt("button",{type:"button",className:`rdd-context-menu__item${z?" rdd-context-menu__item--disabled":""}`,title:y.title?Et(y.title,p):void 0,disabled:z,"data-cy-action":y.cyAction,onClick:()=>{z||(y.action?.(),s())},role:"menuitem","aria-checked":S?L:void 0,children:[y.icon?he("span",{className:"rdd-context-menu__icon",children:y.icon}):he("span",{className:"rdd-context-menu__icon","aria-hidden":"true"}),he("span",{className:"rdd-context-menu__label",children:Et(y.label,p)}),S&&he("span",{className:`rdd-context-menu__checkbox${L?" rdd-context-menu__checkbox--checked":""}`,"aria-hidden":"true",children:mt("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[he("rect",{x:"0.75",y:"0.75",width:"10.5",height:"10.5",rx:"2",fill:"none",stroke:"currentColor",strokeWidth:"1.5"}),L&&he("path",{d:"M2.5 6 L4.5 8.5 L9.5 3.5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})]})})]},x)})}),document.body)));uo.displayName="ContextMenuSubMenuPanel";var so={visible:!1,x:0,y:0,items:[]},Rn=ao(({theme:e="dark",formatMessageProvider:t,onShow:n,onHide:o,onOpenChange:p,className:s,style:I},h)=>{let[R,v]=ro(so),[x,y]=ro(null),S=Bt(null),L=Bt(null),z=Bt(new Map),F=Bt({open:null,close:null}),g=$t.useCallback(()=>{v(so),y(null),F.current.open&&clearTimeout(F.current.open),F.current.close&&clearTimeout(F.current.close),F.current.open=null,F.current.close=null,o?.(),p?.(!1)},[o,p]);if(cr(h,()=>({show({event:l,x:k,y:G,items:Y}){let q=l?ur(l):{x:k??0,y:G??0};z.current.clear(),v({visible:!0,x:q.x,y:q.y,items:Y}),y(null),n?.(),p?.(!0)}}),[n,p]),io(()=>{if(!R.visible)return;let l=k=>{S.current?.contains(k.target)||L.current?.contains(k.target)||g()};return document.addEventListener("pointerdown",l,{capture:!0}),window.addEventListener("click",l),()=>{document.removeEventListener("pointerdown",l,{capture:!0}),window.removeEventListener("click",l)}},[R.visible,g]),io(()=>{if(!R.visible)return;let l=k=>{k.key==="Escape"&&g()};return document.addEventListener("keydown",l),()=>document.removeEventListener("keydown",l)},[R.visible,g]),lo(()=>{if(!R.visible||!S.current)return;let l=S.current,k=l.getBoundingClientRect(),G=8;k.right>window.innerWidth-G&&(l.style.left=`${Math.max(G,window.innerWidth-k.width-G)}px`),k.bottom>window.innerHeight-G&&(l.style.top=`${Math.max(G,window.innerHeight-k.height-G)}px`),k.left<G&&(l.style.left=`${G}px`),k.top<G&&(l.style.top=`${G}px`)},[R.visible]),!R.visible)return null;let M=t,C=0,N=0;if(x!==null){let l=z.current.get(x);if(l){let k=l.getBoundingClientRect();C=document.documentElement.dir==="rtl"?window.innerWidth-k.left+2:k.right+2,N=k.top}}function m(){F.current.open&&(clearTimeout(F.current.open),F.current.open=null)}function w(){F.current.close&&(clearTimeout(F.current.close),F.current.close=null)}function O(l,k){w(),x!==null&&x!==l&&(m(),y(null)),on(k)&&k.items?.length?(m(),F.current.open=setTimeout(()=>{y(l)},150)):on(k)||(m(),x!==null&&(F.current.close=setTimeout(()=>y(null),200)))}function _(l){m(),on(l)&&l.items?.length&&(F.current.close=setTimeout(()=>y(null),200))}return co(mt(gr,{children:[he("div",{ref:S,className:`rdd-context-menu rdd-context-menu--${e}${s?` ${s}`:""}`,style:{position:"fixed",left:R.x,top:R.y,zIndex:9500,...I},role:"menu","aria-orientation":"vertical",children:R.items.map((l,k)=>{if(wn(l))return he("hr",{className:"rdd-context-menu__separator",role:"separator"},k);if(on(l))return mt("button",{ref:U=>{z.current.set(k,U)},type:"button",className:`rdd-context-menu__item rdd-context-menu__item--has-submenu${x===k?" rdd-context-menu__item--submenu-open":""}`,title:l.title?Et(l.title,M):void 0,onMouseEnter:()=>O(k,l),onMouseLeave:()=>_(l),role:"menuitem","aria-haspopup":"true","aria-expanded":x===k,children:[he("span",{className:"rdd-context-menu__icon","aria-hidden":"true"}),he("span",{className:"rdd-context-menu__label",children:Et(l.label,M)}),he("span",{className:"rdd-context-menu__chevron","aria-hidden":"true",children:"\u203A"})]},k);let G=l,Y=G.checkbox&&G.checkbox.active!==!1,q=Y&&G.checkbox.value,J=G.disabled===!0||(Y?G.checkbox.enabled===!1:!1);return mt("button",{ref:U=>{z.current.set(k,U)},type:"button",className:`rdd-context-menu__item${J?" rdd-context-menu__item--disabled":""}`,title:G.title?Et(G.title,M):void 0,disabled:J,"data-cy-action":G.cyAction,onClick:()=>{J||(G.action?.(),g())},onMouseEnter:()=>O(k,l),onMouseLeave:()=>_(l),role:"menuitem","aria-checked":Y?q:void 0,children:[G.icon?he("span",{className:"rdd-context-menu__icon",children:G.icon}):he("span",{className:"rdd-context-menu__icon","aria-hidden":"true"}),he("span",{className:"rdd-context-menu__label",children:Et(G.label,M)}),Y&&he("span",{className:`rdd-context-menu__checkbox${q?" rdd-context-menu__checkbox--checked":""}`,"aria-hidden":"true",children:mt("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[he("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&&he("path",{d:"M2.5 6 L4.5 8.5 L9.5 3.5",stroke:"white",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})]})})]},k)})}),x!==null&&(()=>{let l=R.items[x];return he(uo,{ref:L,items:l.items??[],x:C,y:N,theme:e,fmt:M,onClose:g,onMouseEnter:()=>w(),onMouseLeave:()=>{F.current.close=setTimeout(()=>y(null),200)}})})()]}),document.body)});Rn.displayName="ContextMenu";var It={Component:Rn},Lt=$t.createContext(null),Mn=({adapter:e=It,children:t,...n})=>{let o=Bt(null),[p,s]=$t.useState(!1),I=$t.useCallback(h=>{o.current?.show(h)},[]);return mt(Lt.Provider,{value:{show:I,isOpen:p},children:[t,he(e.Component,{ref:o,...n,onShow:()=>{s(!0),n.onShow?.()},onHide:()=>{s(!1),n.onHide?.()}})]})};function pr(){let e=$t.useContext(Lt);if(!e)throw new Error("useShowContextMenu must be used within a ContextMenuProvider");return e.show}import{createContext as mo,useContext as fo,useState as mr,useCallback as Oe,useMemo as fr,useRef as hr}from"react";import{jsx as go}from"react/jsx-runtime";var br=0,Tn=()=>`panel-${++br}-${Date.now()}`,rn=new Map,po={leftPanel:null,rightPanel:null,modals:[]},ho=mo(null),bo=mo(null),Sn=({children:e})=>{let[t,n]=mr(po),o=hr(t);o.current=t;let p=Oe((g,M)=>{rn.set(g,M)},[]),s=Oe(g=>{rn.delete(g)},[]),I=Oe(async(g,M,C={})=>{let N=o.current.leftPanel;if(N){let O=rn.get(N.id);if(O&&!await O())return null}let m=Tn(),w={id:m,Component:g,props:M,containerType:"left-panel",options:C};return n(O=>({...O,leftPanel:w})),m},[]),h=Oe(async(g,M,C={})=>{let N=o.current.rightPanel;if(N){let O=rn.get(N.id);if(O&&!await O())return null}let m=Tn(),w={id:m,Component:g,props:M,containerType:"right-panel",options:C};return n(O=>({...O,rightPanel:w})),m},[]),R=Oe((g,M,C={})=>{let N=Tn(),m=M.title,w={...C,title:C.title||m||"Confirmation"},O={id:N,Component:g,props:M,containerType:"modal",options:w};return n(_=>({..._,modals:[..._.modals,O]})),N},[]),v=Oe(g=>{n(M=>({leftPanel:M.leftPanel?.id===g?null:M.leftPanel,rightPanel:M.rightPanel?.id===g?null:M.rightPanel,modals:M.modals.filter(C=>C.id!==g)}))},[]),x=Oe(()=>{n(po)},[]),y=Oe(()=>{n(g=>({...g,modals:[]}))},[]),S=Oe(g=>t.leftPanel?.id===g?t.leftPanel:t.rightPanel?.id===g?t.rightPanel:t.modals.find(M=>M.id===g),[t]),L=Oe((g,M)=>{n(C=>({leftPanel:C.leftPanel?.id===g?{...C.leftPanel,...M}:C.leftPanel,rightPanel:C.rightPanel?.id===g?{...C.rightPanel,...M}:C.rightPanel,modals:C.modals.map(N=>N.id===g?{...N,...M}:N)}))},[]),z=Oe((g,M,C)=>{L(g,{dirty:M,dirtyOptions:C})},[L]),F=fr(()=>({openLeftPanel:I,openRightPanel:h,openModal:R,close:v,closeAll:x,closeAllModals:y,getInstance:S,updateInstance:L,setDirty:z,registerCloseHandler:p,unregisterCloseHandler:s}),[I,h,R,v,x,y,S,L,z,p,s]);return go(ho.Provider,{value:t,children:go(bo.Provider,{value:F,children:e})})},tt=()=>{let e=fo(ho);if(!e)throw new Error("usePanelState must be used within PanelProvider");return e},ft=()=>{let e=fo(bo);if(!e)throw new Error("usePanelActions must be used within PanelProvider");return e};import{useEffect as vo,useRef as vr}from"react";import{jsx as ht,jsxs as kn}from"react/jsx-runtime";var yr=({title:e,message:t,alert:n,alertType:o="info",useYesNoTitles:p=!1,onOK:s,onCancel:I})=>{let{requestClose:h,setIcon:R,setTitle:v}=Rt(),x=We(),y=$e(),S=vr(null);vo(()=>{if(e){let C=typeof e=="string"?e:x(e);v(C)}R&&R(ht("span",{children:"\u2753"}))},[e,v,R,x]),vo(()=>{S.current?.focus({preventScroll:!0})},[]);let L=typeof t=="string"?t:x(t),z=x(p?y.no:y.cancel),F=x(p?y.yes:y.ok),g=C=>{C.preventDefault(),s?.(),h()},M=()=>{I?.(),h()};return kn("form",{onSubmit:g,className:"rdd-confirmation-form-body",children:[n&&kn("div",{className:`rdd-confirmation-alert confirmation-alert-${o}`,children:[ht("span",{children:"\u2139\uFE0F"}),ht("span",{children:n})]}),ht("div",{style:{fontSize:"0.9rem",color:"inherit",lineHeight:1.5},children:L}),ht("hr",{style:{marginTop:"0.5rem",marginBottom:"0.5rem",opacity:.1}}),kn("div",{className:"rdd-confirmation-actions",children:[ht("button",{type:"button",className:"rdd-btn rdd-btn-sm rdd-btn-outline",onClick:M,children:z}),ht("button",{type:"submit",className:"rdd-btn rdd-btn-sm rdd-btn-primary",ref:S,children:F})]})]})},bt=yr;function Gt(e){return e==="top-left"?"top-right":e==="top-right"?"top-left":e==="bottom-left"?"bottom-right":"bottom-left"}function nt(e){let{element:t,pointerId:n,startClientX:o,startClientY:p,captureStart:s,onMove:I,onEnd:h,activeClasses:R}=e;t.setPointerCapture(n),R?.forEach(({el:S,classes:L})=>S.classList.add(...L));let v=s(),x=S=>{I(S.clientX-o,S.clientY-p,v)},y=()=>{R?.forEach(({el:S,classes:L})=>S.classList.remove(...L)),t.removeEventListener("pointermove",x),t.removeEventListener("pointerup",y),t.removeEventListener("pointercancel",y),h?.(v)};t.addEventListener("pointermove",x),t.addEventListener("pointerup",y),t.addEventListener("pointercancel",y)}function Yt(e,t,n,o,p){let{minW:s,minH:I,maxW:h,maxH:R,minX:v,minY:x}=p,{x:y,y:S,w:L,h:z}=o;if(e.includes("e")&&(L=Math.max(s,Math.min(o.w+t,h??1/0))),e.includes("w")){let F=o.w-s,g=v!=null?-(o.x-v):-1/0,M=Math.max(g,Math.min(t,F));L=o.w-M,y=o.x+M}if(e.includes("s")&&(z=Math.max(I,Math.min(o.h+n,R??1/0))),e.includes("n")){let F=o.h-I,g=x!=null?-(o.y-x):-1/0,M=Math.max(g,Math.min(n,F));z=o.h-M,S=o.y+M}return{x:y,y:S,w:L,h:z}}import{useEffect as Pr,useState as xr}from"react";function En(){let[e,t]=xr(()=>document.documentElement.getAttribute("data-color-scheme")==="light"?"light":"dark");return Pr(()=>{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 xo,jsx as T,jsxs as de}from"react/jsx-runtime";var Co=(e,t)=>{if(!e)return null;if(e.type==="leaf")return e.id===t?e:null;for(let n of e.children){let o=Co(n,t);if(o)return o}return null},Xt=new Map,sn="preserved-dom-container",Ln=de("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{display:"block"},children:[T("rect",{x:"3",y:"3",width:"7",height:"9",rx:"1"}),T("rect",{x:"14",y:"3",width:"7",height:"5",rx:"1"}),T("rect",{x:"14",y:"12",width:"7",height:"9",rx:"1"}),T("rect",{x:"3",y:"16",width:"7",height:"5",rx:"1"})]}),zt={float:T("span",{className:"rdd-menu-icon",children:de("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{display:"block"},children:[T("rect",{x:"2",y:"8",width:"14",height:"14",rx:"1"}),T("rect",{x:"8",y:"2",width:"14",height:"14",rx:"1"})]})}),minimize:T("span",{className:"rdd-menu-icon",children:T("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",style:{display:"block"},children:T("line",{x1:"4",y1:"18",x2:"20",y2:"18"})})}),restore:T("span",{className:"rdd-menu-icon",children:T("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{display:"block"},children:T("rect",{x:"4",y:"4",width:"16",height:"16",rx:"1"})})}),maximize:T("span",{className:"rdd-menu-icon",children:T("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{display:"block"},children:T("rect",{x:"2",y:"2",width:"20",height:"20",rx:"1"})})}),close:T("span",{className:"rdd-menu-icon",children:T("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{display:"block"},children:T("path",{d:"M18 6L6 18M6 6l12 12"})})})},wo=e=>{let t=Xt.get(e);return t||(t=document.createElement("div"),t.style.width="100%",t.style.height="100%",Xt.set(e,t)),t},Cr=(e,t,n)=>{let o=t.component,p=n.get(o);if(!p)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 } } })`),de("div",{className:"rdd-unregistered-panel",style:{border:"2px dashed #dc3545"},children:[T("h6",{style:{fontWeight:700,marginBottom:"0.25rem"},children:"\u26A0\uFE0F Component Unregistered"}),de("span",{style:{fontSize:"0.875rem",color:"var(--rdd-text-secondary, #94a3b8)"},children:["Key: ",o]})]});let s=p.Component;return T(s,{...t.props??{},panelId:e})},Nn=new Map,ot=new Map,vt=e=>{let t=ot.get(e);return t||(t={onClose:new Set,onMinimize:new Set,onRestore:new Set,onResize:new Set,onActivate:new Set,onDeactivate:new Set,onContainerTypeChange:new Set},ot.set(e,t)),t},Ro=({panelId:e})=>{let t=xe(null);return ve(()=>{let n=t.current;if(!n)return;let o=wo(e);n.appendChild(o);let p=new ResizeObserver(s=>{for(let I of s){let{width:h,height:R}=I.contentRect;if(h>0&&R>0){Nn.set(e,{width:h,height:R});let v=ot.get(e);v&&v.onResize.forEach(x=>x(h,R))}}});return p.observe(n),()=>{p.disconnect();let s=document.getElementById(sn);s||(s=document.createElement("div"),s.id=sn,s.style.display="none",document.body.appendChild(s)),s.appendChild(o)}},[e]),T("div",{ref:t,style:{width:"100%",height:"100%"}})},wr=({panelId:e})=>{let t=ze(),n=_t(),o=We(),p=xe(null),s=t.panels[e],I=s?n.get(s.component):null,h=I?.defaultOptions?.disableLivePreview||!1,R=Nn.get(e)||{width:800,height:500},v=R.width,x=R.height,L=Math.min(220/v,140/x);if(ve(()=>{if(h)return;let z=p.current;if(!z)return;let F=Xt.get(e);if(F)return z.appendChild(F),()=>{let g=document.getElementById(sn);g||(g=document.createElement("div"),g.id=sn,g.style.display="none",document.body.appendChild(g)),g.appendChild(F)}},[e,h]),h){let z=v*L,F=x*L,g=s?.title||I?.defaultOptions?.title||"Panel",M=ce(g,o),C=(Array.from(M)[0]||"P").toUpperCase();return T("div",{className:"rdd-taskbar-item-preview-frame",style:{width:`${z}px`,height:`${F}px`,display:"flex",alignItems:"center",justifyContent:"center",background:"rgba(108, 117, 125, 0.15)",border:"1px dashed var(--rdd-taskbar-item-border, rgba(255, 255, 255, 0.15))"},children:T("div",{style:{fontSize:"2rem",fontWeight:600,color:"var(--rdd-panel-title-color, var(--rdd-panel-text, rgba(255, 255, 255, 0.85)))",userSelect:"none"},children:C})})}return T("div",{className:"rdd-taskbar-item-preview-frame",style:{width:`${v*L}px`,height:`${x*L}px`},children:T("div",{ref:p,className:"rdd-taskbar-item-preview-host",style:{width:`${v}px`,height:`${x}px`,transform:`scale(${L})`,transformOrigin:"top left",position:"absolute",top:0,left:0,"--rdd-preview-scale":L}})})},Rr=({panelId:e,children:t})=>{let n=ze(),{requestClosePanel:o,setPanelDirty:p,registerCloseGuard:s,unregisterCloseGuard:I,registerStateProvider:h,unregisterStateProvider:R,updatePanelTitle:v,minimizePanel:x}=Ht(),y=n.minimized.some(m=>m.id===e),S=xe(y);ve(()=>{let m=ot.get(e);m&&(y&&!S.current?m.onMinimize.forEach(w=>w()):!y&&S.current&&m.onRestore.forEach(w=>w()),S.current=y)},[y,e]);let L=n.activePanelId===e,z=xe(L);ve(()=>{let m=z.current;z.current=L;let w=ot.get(e);w&&(L&&!m?w.onActivate.forEach(O=>O()):!L&&m&&w.onDeactivate.forEach(O=>O()))},[L,e]);let F=n.panels[e]?.state,g=F==="floating"?"floating-window":"dockable-panel",M=xe(g);ve(()=>{if(F==="minimized")return;let m=M.current;M.current=g;let w=ot.get(e);w&&g!==m&&w.onContainerTypeChange.forEach(O=>O(g))},[g,F,e]),ve(()=>()=>{let m=ot.get(e);m&&(z.current&&m.onDeactivate.forEach(w=>w()),m.onClose.forEach(w=>w()),ot.delete(e))},[e]);let C=xe(g),N=zn.useMemo(()=>({requestClose:m=>o(e,m),setDirty:m=>p(e,m),onCloseRequested:m=>(s(e,m),()=>I(e)),registerStateProvider:m=>(h(e,m),()=>R(e)),setTitle:m=>v(e,m),instanceId:e,containerType:C.current,onClose:m=>{let w=vt(e);return w.onClose.add(m),()=>w.onClose.delete(m)},onMinimize:m=>{let w=vt(e);return w.onMinimize.add(m),()=>w.onMinimize.delete(m)},onRestore:m=>{let w=vt(e);return w.onRestore.add(m),()=>w.onRestore.delete(m)},onResize:m=>{let w=vt(e);return w.onResize.add(m),()=>w.onResize.delete(m)},requestMinimize:()=>x(e),getDimensions:()=>Nn.get(e)??null,onActivate:m=>{let w=vt(e);return w.onActivate.add(m),()=>w.onActivate.delete(m)},onDeactivate:m=>{let w=vt(e);return w.onDeactivate.add(m),()=>w.onDeactivate.delete(m)},onContainerTypeChange:m=>{let w=vt(e);return w.onContainerTypeChange.add(m),()=>w.onContainerTypeChange.delete(m)}}),[e,o,p,s,I,h,R,v,x]);return T(ut,{value:N,children:t})},Mo=({node:e,path:t,onTabRightClick:n,activeDropZone:o,onHoverDropZone:p,onTabDragStart:s,hoveredTab:I,onTabHover:h,defaultPanelIcon:R,onRequestClosePanel:v})=>{let{updateSplitSizes:x}=Ht();if(e.type==="leaf")return T(Mr,{leaf:e,onTabRightClick:n,activeDropZone:o,onHoverDropZone:p,onTabDragStart:s,hoveredTab:I,onTabHover:h,defaultPanelIcon:R,onRequestClosePanel:v});let y=e.orientation==="horizontal",S=(L,z)=>{z.preventDefault();let F=z.currentTarget,g=F.parentElement,M=g?y?g.clientWidth:g.clientHeight:y?1e3:800;nt({element:F,pointerId:z.pointerId,startClientX:z.clientX,startClientY:z.clientY,captureStart:()=>[...e.sizes],activeClasses:[{el:F,classes:["rdd-active"]},{el:document.body,classes:["rdd-resizing-active",y?"rdd-resizing-col-active":"rdd-resizing-row-active"]}],onMove:(C,N,m)=>{let w=(y?C:N)/M,O=[...m];O[L]+=w,O[L+1]-=w,O[L]>.1&&O[L+1]>.1&&x(t,O)}})};return T("div",{style:{display:"flex",flexDirection:y?"row":"column",width:"100%",height:"100%",overflow:"hidden",position:"relative"},children:e.children.map((L,z)=>{let F=e.sizes[z]*100;return de(zn.Fragment,{children:[T("div",{style:{flexGrow:e.sizes[z],flexBasis:`${F}%`,overflow:"hidden",position:"relative",minWidth:0,minHeight:0},children:T(Mo,{node:L,path:[...t,z],onTabRightClick:n,activeDropZone:o,onHoverDropZone:p,onTabDragStart:s,hoveredTab:I,onTabHover:h,defaultPanelIcon:R,onRequestClosePanel:v})}),z<e.children.length-1&&T("div",{onPointerDown:g=>S(z,g),style:{cursor:y?"col-resize":"row-resize",width:y?"1px":"100%",height:y?"100%":"1px",zIndex:20},className:"rdd-resizer-bar"})]},z)})})},Mr=({leaf:e,onTabRightClick:t,activeDropZone:n,onHoverDropZone:o,onTabDragStart:p,hoveredTab:s,onTabHover:I,defaultPanelIcon:h,onRequestClosePanel:R})=>{let v=ze(),x=_t(),{openPanel:y,closeLeafGroup:S,setActivePanel:L}=Cn(),z=We(),F=$e(),{windowClass:g,windowBodyClass:M}=et(),C=xe(null),[N,m]=Ge({left:!1,right:!1}),w=In(()=>{let l=C.current;l&&m({left:l.scrollLeft>0,right:l.scrollLeft<l.scrollWidth-l.clientWidth-1})},[]);ve(()=>{let l=C.current;if(!l)return;l.addEventListener("scroll",w,{passive:!0});let k=new ResizeObserver(w);return k.observe(l),w(),()=>{l.removeEventListener("scroll",w),k.disconnect()}},[w]);let O=l=>{C.current?.scrollBy({left:l==="left"?-120:120,behavior:"smooth"})},_=l=>{y(l,v.panels[l].component),L(l)};return de("div",{"data-active-panel-id":e.activePanelId||"",className:`rdd-workspace-panel ${g??""}`,style:{overflow:"hidden",position:"relative"},children:[de("div",{className:"rdd-workspace-tab-bar",style:{minHeight:"38px"},children:[N.left&&T("button",{className:"rdd-tab-scroll-btn rdd-tab-scroll-btn-left",onPointerDown:l=>l.stopPropagation(),onClick:()=>O("left"),tabIndex:-1,"aria-label":"Scroll tabs left",children:"\u2039"}),T("div",{ref:C,className:"rdd-tab-headers-container",style:{scrollbarWidth:"none"},onPointerMove:l=>{v.draggedPanelId&&l.target===l.currentTarget&&I(e.id,"EMPTY",e.panels.length,"right")},onPointerLeave:l=>{v.draggedPanelId&&l.target===l.currentTarget&&I(e.id,"",-1,null)},children:e.panels.map((l,k)=>{let G=v.panels[l];if(!G)return null;let Y=e.activePanelId===l,q=v.activePanelId===l,U=x.get(G.component)?.defaultOptions,me=s&&s.leafId===e.id&&s.panelId===l,oe=k===e.panels.length-1,X=s&&s.leafId===e.id&&s.panelId==="EMPTY"&&oe,B=me?s.side==="left"?"rdd-drag-hover-left":"rdd-drag-hover-right":X?"rdd-drag-hover-right":"",D=Y?q?"rdd-active rdd-workspace-tab-active-focused":"rdd-active rdd-workspace-tab-active-unfocused":"rdd-workspace-tab-inactive";return de("div",{"data-tab-id":l,"data-leaf-id":e.id,"data-tab-index":String(k),onClick:()=>_(l),onPointerDown:H=>{U?.canDrag!==!1&&p(l,H)},onContextMenu:H=>t(l,H),onPointerMove:H=>{if(v.draggedPanelId&&H.pointerType!=="touch"){let j=H.currentTarget.getBoundingClientRect(),pe=H.clientX-j.left<j.width/2?"left":"right";I(e.id,l,k,pe)}},onPointerLeave:()=>{v.draggedPanelId&&I(e.id,"",-1,null)},className:`rdd-workspace-tab ${D} ${B}`,style:{cursor:U?.canDrag===!1?"default":"pointer"},children:[de("span",{className:"rdd-text-truncate",style:{maxWidth:"120px",display:"flex",alignItems:"center"},children:[T("span",{className:"rdd-workspace-tab-icon",children:U?.icon||h||Ln}),de("span",{children:[ce(G.title,z),G.dirty?" *":""]})]}),U?.renderHeaderActions&&T("span",{className:"rdd-tab-header-actions",onClick:H=>H.stopPropagation(),onPointerDown:H=>H.stopPropagation(),children:U.renderHeaderActions(l)}),U?.canClose!==!1&&T("span",{onClick:H=>{H.stopPropagation(),R(l)},title:ce(F.closeTab,z),className:"rdd-close-tab-x",style:{width:"18px",height:"18px",...U?.renderHeaderActions?{}:{marginInlineStart:"auto"}},children:T("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:T("path",{d:"M18 6L6 18M6 6l12 12"})})})]},l)})}),N.right&&T("button",{className:"rdd-tab-scroll-btn rdd-tab-scroll-btn-right",onPointerDown:l=>l.stopPropagation(),onClick:()=>O("right"),tabIndex:-1,"aria-label":"Scroll tabs right",children:"\u203A"}),e.panels.length===0&&e.keepOnEmpty&&e.canClose!==!1&&T("span",{onClick:()=>S(e.id),className:"rdd-close-tab-x rdd-header-close-empty-group",style:{width:"18px",height:"18px",cursor:"pointer"},title:ce(F.closeEmptyGroup,z),children:T("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:T("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),de("div",{className:`rdd-panel-body ${M??""}`,style:{position:"relative",overflow:"hidden"},children:[e.activePanelId&&v.panels[e.activePanelId]?T(Ro,{panelId:e.activePanelId},e.activePanelId):T("div",{className:"rdd-empty-leaf-placeholder",children:T("span",{children:"Empty Workspace Section"})}),v.draggedPanelId!==null&&(()=>{let l=k=>n?.leafId===e.id&&n.position===k;return T("div",{className:"rdd-dock-drop-zone-overlay",children:de("div",{className:"rdd-dock-target-cross",children:[T("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"}),T("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"}),T("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"}),T("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"}),T("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"})]})})})(),v.draggedPanelId!==null&&n!==null&&n.leafId===e.id&&T("div",{className:"rdd-dock-preview-highlight",style:(()=>{let l=n.position,k=`${v.splitRatio*100}%`,G=`${(1-v.splitRatio)*100}%`;return{left:l==="right"?G:"0",top:l==="bottom"?G:"0",width:l==="left"||l==="right"?k:"100%",height:l==="top"||l==="bottom"?k:"100%"}})()})]})]})},Tr=({skin:e="vscode",defaultPanelIcon:t,taskbarVisibility:n="always",contextMenuAdapter:o=It,animations:p=!0})=>{let s=ze(),I=_t(),{restorePanel:h,minimizePanel:R,requestClosePanel:v,maximizePanel:x,updateFloatingPosition:y,focusPanel:S,floatPanel:L,setDraggedPanelId:z,dockPanelToGroup:F,movePanelOrder:g,dockPanelToWorkspaceEdge:M,setActivePanel:C,getPanelContextMenuItems:N,showContextMenu:m,registerContextMenuFn:w}=Cn(),{openModal:O}=ft(),_=We(),l=$e(),k=zn.useCallback(r=>{let P=s.panels[r];v(r,{onConfirm:c=>new Promise(u=>{let f=c||P?.dirtyOptions,E=P?ce(P.title,_):"Panel";O(bt,{title:f?.title||l.unsavedChangesTitle,message:f?.message||{id:l.unsavedChangesMessage.id,defaultMessage:l.unsavedChangesMessage.defaultMessage,values:{title:E}},alert:f?.alert,alertType:f?.alertType||"danger",useYesNoTitles:!0,onOK:()=>u(!0),onCancel:()=>u(!1)},{size:"small"})})})},[v,s.panels,_,O,l]),{windowClass:G,windowBodyClass:Y}=et(),q=yo(Lt),J=xe(null);ve(()=>w(q!==null?r=>q.show(r):r=>J.current?.show(r)),[q,w]);let U=xe(null),[me,oe]=Ge(!1),X=xe(null),B=xe(s.minimized.length),[D,H]=Ge(null),j=xe(null),fe=xe("mouse"),[pe,Z]=Ge(!1),ue=q!==null?q.isOpen:pe;ve(()=>()=>{j.current&&clearTimeout(j.current)},[]),ve(()=>{D&&(s.minimized.some(P=>P.id===D.id)||H(null))},[s.minimized,D]),ve(()=>{if(!D?.fromTouch)return;let r=P=>{P.pointerType!=="touch"||document.querySelector(".rdd-taskbar-item-tooltip")?.contains(P.target)||H(null)};return document.addEventListener("pointerdown",r,{capture:!0}),()=>document.removeEventListener("pointerdown",r,{capture:!0})},[D?.fromTouch]);let[Te,Se]=Ge(null),ke=xe(null),[Xe,Fe]=Ge({x:0,y:0}),[_e,Ve]=Ge(null),Ke=xe(null),ye=r=>{Ve(r),Ke.current=r},[ee,Re]=Ge(null),Ee=xe(null),Me=r=>{Re(r),Ee.current=r},Ue=yo(kt)?.isRtl??!1,[Je,He]=Ge(null),qe=xe(null),Zt=(r,P,c,u)=>{let f=u?{leafId:r,panelId:P,index:c,side:u}:null;He(f),qe.current=f},Ut=(r,P)=>{let c=P?{leafId:r,position:P}:null;Se(c),ke.current=c,c&&(ye(null),Me(null))},Wt=(r,P)=>{let c=document.elementsFromPoint(r,P),u=!1,f=!1,E=!1;for(let W of c)if(W instanceof HTMLElement){if(!u&&W.dataset.dropZone){let A=W.dataset.leafId;if(A){let K=W.dataset.dropZone;Se({leafId:A,position:K}),ke.current={leafId:A,position:K},u=!0}}if(!E&&W.dataset.tabId){let A=W.dataset.leafId,K=parseInt(W.dataset.tabIndex||"0",10);if(A){let re=W.getBoundingClientRect(),V=r-re.left<re.width/2?"left":"right";He({leafId:A,panelId:W.dataset.tabId,index:K,side:V}),qe.current={leafId:A,panelId:W.dataset.tabId,index:K,side:V},E=!0}}if(!f&&W.dataset.edgeTrigger&&(ye(W.dataset.edgeTrigger),f=!0),u&&f&&E)break}u||(Se(null),ke.current=null),f||ye(null),E||(He(null),qe.current=null)},st=300,at=8,Be=()=>{z(null),Se(null),ke.current=null,He(null),qe.current=null,ye(null)},Qe=r=>s.isRtl?r==="left"?"right":r==="right"?"left":r:r,Ot=(r,P)=>{let c=ke.current,u=qe.current,f=Ke.current,E=Ee.current;if(f)M(r,Qe(f));else if(u){let W=u.index;u.side==="right"&&(W+=1);let A=Co(s.gridRoot,u.leafId);if(A){let K=A.panels.indexOf(r);K!==-1&&K<W&&(W-=1)}g(r,u.leafId,W)}else c?F(r,c.leafId,Qe(c.position)):E?L(r,void 0,Ue?Gt(E):E):L(r,{x:P.clientX-150,y:P.clientY-15,width:450,height:350});Me(null),Be()},Jt=(r,P)=>{if(P.pointerType==="mouse"&&P.button!==0)return;P.preventDefault();let c=P.currentTarget,u=P.clientX,f=P.clientY;if(P.pointerType==="touch"){let E=P.pointerId,W=!1,A=()=>{W=!0,clearTimeout(re),c.removeEventListener("pointermove",K),c.removeEventListener("pointerup",A),c.removeEventListener("pointercancel",A)},K=V=>{Math.hypot(V.clientX-u,V.clientY-f)>at&&A()},re=setTimeout(()=>{if(W)return;c.removeEventListener("pointermove",K),c.removeEventListener("pointerup",A),c.removeEventListener("pointercancel",A);try{c.setPointerCapture(E)}catch{return}c.classList.add("rdd-long-press-active"),document.body.classList.add("rdd-dragging-active"),navigator.vibrate&&navigator.vibrate(10);let V=!1,ne=se=>{V||(V=!0,z(r)),Fe({x:se.clientX,y:se.clientY}),Wt(se.clientX,se.clientY)},ae=se=>{c.classList.remove("rdd-long-press-active"),document.body.classList.remove("rdd-dragging-active"),c.removeEventListener("pointermove",ne),c.removeEventListener("pointerup",ae),c.removeEventListener("pointercancel",ie),V?Ot(r,se):At(r,se)},ie=()=>{c.classList.remove("rdd-long-press-active"),document.body.classList.remove("rdd-dragging-active"),c.removeEventListener("pointermove",ne),c.removeEventListener("pointerup",ae),c.removeEventListener("pointercancel",ie),V&&Be()};c.addEventListener("pointermove",ne),c.addEventListener("pointerup",ae),c.addEventListener("pointercancel",ie)},st);c.addEventListener("pointermove",K),c.addEventListener("pointerup",A),c.addEventListener("pointercancel",A)}else{let E=!1,W=re=>{let V=re.clientX-u,ne=re.clientY-f;!E&&(Math.abs(V)>5||Math.abs(ne)>5)&&(E=!0,z(r)),E&&Fe({x:re.clientX,y:re.clientY})},A=re=>{document.body.classList.remove("rdd-dragging-active"),window.removeEventListener("pointermove",W),window.removeEventListener("pointerup",A),window.removeEventListener("pointercancel",K),E&&Ot(r,re)},K=()=>{document.body.classList.remove("rdd-dragging-active"),window.removeEventListener("pointermove",W),window.removeEventListener("pointerup",A),window.removeEventListener("pointercancel",K),E&&Be()};document.body.classList.add("rdd-dragging-active"),window.addEventListener("pointermove",W),window.addEventListener("pointerup",A),window.addEventListener("pointercancel",K)}},At=(r,P)=>{P.preventDefault();let c=s.panels[r];if(!c)return;let f=I.get(c.component)?.defaultOptions,E=[];if(f?.canDrag!==!1&&E.push({label:ce(l.floatWindow,_),icon:zt.float,action:()=>L(r)}),f?.canMinimize!==!1&&E.push({label:ce(l.minimizePanel,_),icon:zt.minimize,action:()=>R(r)}),E.length>0&&f?.canClose!==!1&&E.push({separator:!0}),f?.canClose!==!1&&E.push({label:ce(l.closeTab,_),icon:zt.close,action:()=>k(r)}),E.length===0)return;let W=N(r),A=W.length>0?[...E,{separator:!0},...W]:E;m({event:P,items:A})},lt=(r,P)=>{P.preventDefault(),H(null),m({event:P,items:[{label:ce(l.restorePanel,_),icon:zt.restore,action:()=>h(r)},{label:ce(l.maximizePanel,_),icon:zt.maximize,action:()=>x(r)},{separator:!0},{label:ce(l.closePanel,_),icon:zt.close,action:()=>k(r)}]})};ve(()=>{let r=Object.keys(s.panels);for(let P of Array.from(Xt.keys()))r.includes(P)||Xt.delete(P)},[s.panels]),ve(()=>{let r=()=>{s.draggedPanelId!==null&&(z(null),Se(null),He(null))};return window.addEventListener("blur",r),()=>{window.removeEventListener("blur",r)}},[s.draggedPanelId]);let Pt=xe(null),[dt,fn]=Ge({width:1024,height:768});ve(()=>{let r=Pt.current;if(!r)return;let P=!1,c=new ResizeObserver(u=>{if(!u||u.length===0)return;let f=u[0].contentRect;if(process.env.NODE_ENV==="development"&&f.height<10&&!P){P=!0;let E=r,W=r.parentElement;for(;W&&W!==document.documentElement&&W.getBoundingClientRect().height<10;){E=W;W=W.parentElement}let A=E.tagName.toLowerCase(),K=E.id?` id="${E.id}"`:"",re=E.className?` class="${E.className}"`:"",V=E===r?"the WindowManager container itself":`a wrapper element: <${A}${K}${re}>`;console.warn(`[react-dockable-desktop] Workspace height is 0px \u2014 the workspace will be invisible.
4
+ Without it the workspace renders as a black screen with no console errors.`)}catch{}},[]),St(()=>{if(t)return t._connect(Pt),()=>{t._disconnect()}},[t,Pt]);let hn=en(()=>({getSnapshot:R,subscribeToState:F}),[R,F]);return pt(no.Provider,{value:mn,children:pt(oo.Provider,{value:T,children:pt(eo.Provider,{value:hn,children:pt(kt.Provider,{value:M,children:pt(tn.Provider,{value:Pt,children:pt(Qn.Provider,{value:L||dt,children:pt(to.Provider,{value:I,children:e})})})})})})})},Jn=e=>()=>{};function ze(e){let t=je(kt),n=je(eo),o=De(e);o.current=e;let l=ar(e?n?.subscribeToState??Jn:Jn,()=>{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?l:t}var Ht=()=>{let e=je(tn);if(!e)throw new Error("useWindowManagerActions must be used within WindowManagerProvider");return e},wn=()=>{let e=je(tn);if(!e)throw new Error("useWindowManagerActionsInternal must be used within WindowManagerProvider");return e},Oe=()=>je(Qn)||(t=>{let n=t.defaultMessage||t.id;return t.values&&Object.entries(t.values).forEach(([o,l])=>{n=n.replace(`{${o}}`,String(l))}),n}),ue=(e,t)=>e?typeof e=="string"?e:t(e):"",cr=()=>{let{publish:e,subscribe:t}=Ht();return{publish:e,subscribe:t}},Ge=()=>je(to),nn=()=>Rt().instanceId;function ur(e){let t=je(tn),n=nn(),o=De(e);o.current=e,St(()=>{if(!(!t?.registerPanelContextMenu||!n))return t.registerPanelContextMenu(n,()=>o.current)},[n,t?.registerPanelContextMenu])}import $t,{forwardRef as co,useImperativeHandle as pr,useState as so,useRef as Bt,useEffect as ao,useLayoutEffect as uo}from"react";import{createPortal as po}from"react-dom";import{Fragment as mr,jsx as he,jsxs as ft}from"react/jsx-runtime";function gr(e){return e?"touches"in e&&e.touches.length>0?{x:e.touches[0].clientX,y:e.touches[0].clientY}:{x:e.clientX,y:e.clientY}:{x:0,y:0}}function Et(e,t){return typeof e=="string"?e:t?t(e):e.defaultMessage??e.id}function Rn(e){return"separator"in e}function on(e){return!Rn(e)&&"items"in e}var go=co(({items:e,x:t,y:n,theme:o,fmt:l,onClose:s,onMouseEnter:E,onMouseLeave:h},w)=>(uo(()=>{let b=w?.current;if(!b)return;let x=b.getBoundingClientRect(),P=8;x.right>window.innerWidth-P&&(b.style.left=`${Math.max(P,window.innerWidth-x.width-P)}px`,b.style.right="auto"),x.bottom>window.innerHeight-P&&(b.style.top=`${Math.max(P,window.innerHeight-x.height-P)}px`),x.left<P&&(b.style.left=`${P}px`,b.style.right="auto"),x.top<P&&(b.style.top=`${P}px`)}),po(he("div",{ref:w,className:`rdd-context-menu rdd-context-menu--${o} rdd-context-menu--submenu`,style:{position:"fixed",left:t,top:n},role:"menu",onMouseEnter:E,onMouseLeave:h,children:e.map((b,x)=>{if(Rn(b))return he("hr",{className:"rdd-context-menu__separator",role:"separator"},x);let P=b,T=P.checkbox&&P.checkbox.active!==!1,L=T&&P.checkbox.value,N=P.disabled===!0||(T?P.checkbox.enabled===!1:!1);return ft("button",{type:"button",className:`rdd-context-menu__item${N?" rdd-context-menu__item--disabled":""}`,title:P.title?Et(P.title,l):void 0,disabled:N,"data-cy-action":P.cyAction,onClick:()=>{N||(P.action?.(),s())},role:"menuitem","aria-checked":T?L:void 0,children:[P.icon?he("span",{className:"rdd-context-menu__icon",children:P.icon}):he("span",{className:"rdd-context-menu__icon","aria-hidden":"true"}),he("span",{className:"rdd-context-menu__label",children:Et(P.label,l)}),T&&he("span",{className:`rdd-context-menu__checkbox${L?" rdd-context-menu__checkbox--checked":""}`,"aria-hidden":"true",children:ft("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[he("rect",{x:"0.75",y:"0.75",width:"10.5",height:"10.5",rx:"2",fill:"none",stroke:"currentColor",strokeWidth:"1.5"}),L&&he("path",{d:"M2.5 6 L4.5 8.5 L9.5 3.5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})]})})]},x)})}),document.body)));go.displayName="ContextMenuSubMenuPanel";var lo={visible:!1,x:0,y:0,items:[]},Mn=co(({theme:e="dark",formatMessageProvider:t,onShow:n,onHide:o,onOpenChange:l,className:s,style:E},h)=>{let[w,b]=so(lo),[x,P]=so(null),T=Bt(null),L=Bt(null),N=Bt(new Map),_=Bt({open:null,close:null}),u=$t.useCallback(()=>{b(lo),P(null),_.current.open&&clearTimeout(_.current.open),_.current.close&&clearTimeout(_.current.close),_.current.open=null,_.current.close=null,o?.(),l?.(!1)},[o,l]);if(pr(h,()=>({show({event:c,x:I,y:$,items:Y}){let j=c?gr(c):{x:I??0,y:$??0};N.current.clear(),b({visible:!0,x:j.x,y:j.y,items:Y}),P(null),n?.(),l?.(!0)}}),[n,l]),ao(()=>{if(!w.visible)return;let c=I=>{T.current?.contains(I.target)||L.current?.contains(I.target)||u()};return document.addEventListener("pointerdown",c,{capture:!0}),window.addEventListener("click",c),()=>{document.removeEventListener("pointerdown",c,{capture:!0}),window.removeEventListener("click",c)}},[w.visible,u]),ao(()=>{if(!w.visible)return;let c=I=>{I.key==="Escape"&&u()};return document.addEventListener("keydown",c),()=>document.removeEventListener("keydown",c)},[w.visible,u]),uo(()=>{if(!w.visible||!T.current)return;let c=T.current,I=c.getBoundingClientRect(),$=8;I.right>window.innerWidth-$&&(c.style.left=`${Math.max($,window.innerWidth-I.width-$)}px`),I.bottom>window.innerHeight-$&&(c.style.top=`${Math.max($,window.innerHeight-I.height-$)}px`),I.left<$&&(c.style.left=`${$}px`),I.top<$&&(c.style.top=`${$}px`)},[w.visible]),!w.visible)return null;let M=t,C=0,A=0;if(x!==null){let c=N.current.get(x);if(c){let I=c.getBoundingClientRect();C=document.documentElement.dir==="rtl"?window.innerWidth-I.left+2:I.right+2,A=I.top}}function g(){_.current.open&&(clearTimeout(_.current.open),_.current.open=null)}function R(){_.current.close&&(clearTimeout(_.current.close),_.current.close=null)}function F(c,I){R(),x!==null&&x!==c&&(g(),P(null)),on(I)&&I.items?.length?(g(),_.current.open=setTimeout(()=>{P(c)},150)):on(I)||(g(),x!==null&&(_.current.close=setTimeout(()=>P(null),200)))}function H(c){g(),on(c)&&c.items?.length&&(_.current.close=setTimeout(()=>P(null),200))}return po(ft(mr,{children:[he("div",{ref:T,className:`rdd-context-menu rdd-context-menu--${e}${s?` ${s}`:""}`,style:{position:"fixed",left:w.x,top:w.y,...E},role:"menu","aria-orientation":"vertical",children:w.items.map((c,I)=>{if(Rn(c))return he("hr",{className:"rdd-context-menu__separator",role:"separator"},I);if(on(c))return ft("button",{ref:U=>{N.current.set(I,U)},type:"button",className:`rdd-context-menu__item rdd-context-menu__item--has-submenu${x===I?" rdd-context-menu__item--submenu-open":""}`,title:c.title?Et(c.title,M):void 0,onMouseEnter:()=>F(I,c),onMouseLeave:()=>H(c),role:"menuitem","aria-haspopup":"true","aria-expanded":x===I,children:[he("span",{className:"rdd-context-menu__icon","aria-hidden":"true"}),he("span",{className:"rdd-context-menu__label",children:Et(c.label,M)}),he("span",{className:"rdd-context-menu__chevron","aria-hidden":"true",children:"\u203A"})]},I);let $=c,Y=$.checkbox&&$.checkbox.active!==!1,j=Y&&$.checkbox.value,Q=$.disabled===!0||(Y?$.checkbox.enabled===!1:!1);return ft("button",{ref:U=>{N.current.set(I,U)},type:"button",className:`rdd-context-menu__item${Q?" rdd-context-menu__item--disabled":""}`,title:$.title?Et($.title,M):void 0,disabled:Q,"data-cy-action":$.cyAction,onClick:()=>{Q||($.action?.(),u())},onMouseEnter:()=>F(I,c),onMouseLeave:()=>H(c),role:"menuitem","aria-checked":Y?j:void 0,children:[$.icon?he("span",{className:"rdd-context-menu__icon",children:$.icon}):he("span",{className:"rdd-context-menu__icon","aria-hidden":"true"}),he("span",{className:"rdd-context-menu__label",children:Et($.label,M)}),Y&&he("span",{className:`rdd-context-menu__checkbox${j?" rdd-context-menu__checkbox--checked":""}`,"aria-hidden":"true",children:ft("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[he("rect",{x:"0.75",y:"0.75",width:"10.5",height:"10.5",rx:"2",fill:j?"currentColor":"none",stroke:"currentColor",strokeWidth:"1.5"}),j&&he("path",{d:"M2.5 6 L4.5 8.5 L9.5 3.5",stroke:"white",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})]})})]},I)})}),x!==null&&(()=>{let c=w.items[x];return he(go,{ref:L,items:c.items??[],x:C,y:A,theme:e,fmt:M,onClose:u,onMouseEnter:()=>R(),onMouseLeave:()=>{_.current.close=setTimeout(()=>P(null),200)}})})()]}),document.body)});Mn.displayName="ContextMenu";var It={Component:Mn},Lt=$t.createContext(null),Tn=({adapter:e=It,children:t,...n})=>{let o=Bt(null),[l,s]=$t.useState(!1),E=$t.useCallback(h=>{o.current?.show(h)},[]);return ft(Lt.Provider,{value:{show:E,isOpen:l},children:[t,he(e.Component,{ref:o,...n,onShow:()=>{s(!0),n.onShow?.()},onHide:()=>{s(!1),n.onHide?.()}})]})};function fr(){let e=$t.useContext(Lt);if(!e)throw new Error("useShowContextMenu must be used within a ContextMenuProvider");return e.show}import{createContext as ho,useContext as bo,useState as hr,useCallback as Ae,useMemo as br,useRef as vr}from"react";import{jsx as mo}from"react/jsx-runtime";var yr=0,Sn=()=>`panel-${++yr}-${Date.now()}`,rn=new Map,fo={leftPanel:null,rightPanel:null,modals:[]},vo=ho(null),yo=ho(null),kn=({children:e})=>{let[t,n]=hr(fo),o=vr(t);o.current=t;let l=Ae((u,M)=>{rn.set(u,M)},[]),s=Ae(u=>{rn.delete(u)},[]),E=Ae(async(u,M,C={})=>{let A=o.current.leftPanel;if(A){let F=rn.get(A.id);if(F&&!await F())return null}let g=Sn(),R={id:g,Component:u,props:M,containerType:"left-panel",options:C};return n(F=>({...F,leftPanel:R})),g},[]),h=Ae(async(u,M,C={})=>{let A=o.current.rightPanel;if(A){let F=rn.get(A.id);if(F&&!await F())return null}let g=Sn(),R={id:g,Component:u,props:M,containerType:"right-panel",options:C};return n(F=>({...F,rightPanel:R})),g},[]),w=Ae((u,M,C={})=>{let A=Sn(),g=M.title,R={...C,title:C.title||g||"Confirmation"},F={id:A,Component:u,props:M,containerType:"modal",options:R};return n(H=>({...H,modals:[...H.modals,F]})),A},[]),b=Ae(u=>{n(M=>({leftPanel:M.leftPanel?.id===u?null:M.leftPanel,rightPanel:M.rightPanel?.id===u?null:M.rightPanel,modals:M.modals.filter(C=>C.id!==u)}))},[]),x=Ae(()=>{n(fo)},[]),P=Ae(()=>{n(u=>({...u,modals:[]}))},[]),T=Ae(u=>t.leftPanel?.id===u?t.leftPanel:t.rightPanel?.id===u?t.rightPanel:t.modals.find(M=>M.id===u),[t]),L=Ae((u,M)=>{n(C=>({leftPanel:C.leftPanel?.id===u?{...C.leftPanel,...M}:C.leftPanel,rightPanel:C.rightPanel?.id===u?{...C.rightPanel,...M}:C.rightPanel,modals:C.modals.map(A=>A.id===u?{...A,...M}:A)}))},[]),N=Ae((u,M,C)=>{L(u,{dirty:M,dirtyOptions:C})},[L]),_=br(()=>({openLeftPanel:E,openRightPanel:h,openModal:w,close:b,closeAll:x,closeAllModals:P,getInstance:T,updateInstance:L,setDirty:N,registerCloseHandler:l,unregisterCloseHandler:s}),[E,h,w,b,x,P,T,L,N,l,s]);return mo(vo.Provider,{value:t,children:mo(yo.Provider,{value:_,children:e})})},et=()=>{let e=bo(vo);if(!e)throw new Error("usePanelState must be used within PanelProvider");return e},mt=()=>{let e=bo(yo);if(!e)throw new Error("usePanelActions must be used within PanelProvider");return e};import{useEffect as Po,useRef as Pr}from"react";import{jsx as ht,jsxs as En}from"react/jsx-runtime";var xr=({title:e,message:t,alert:n,alertType:o="info",useYesNoTitles:l=!1,onOK:s,onCancel:E})=>{let{requestClose:h,setIcon:w,setTitle:b}=Rt(),x=Oe(),P=Ge(),T=Pr(null);Po(()=>{if(e){let C=typeof e=="string"?e:x(e);b(C)}w&&w(ht("span",{children:"\u2753"}))},[e,b,w,x]),Po(()=>{T.current?.focus({preventScroll:!0})},[]);let L=typeof t=="string"?t:x(t),N=x(l?P.no:P.cancel),_=x(l?P.yes:P.ok),u=C=>{C.preventDefault(),s?.(),h()},M=()=>{E?.(),h()};return En("form",{onSubmit:u,className:"rdd-confirmation-form-body",children:[n&&En("div",{className:`rdd-confirmation-alert rdd-confirmation-alert-${o}`,children:[ht("span",{children:"\u2139\uFE0F"}),ht("span",{children:n})]}),ht("div",{style:{fontSize:"0.9rem",color:"inherit",lineHeight:1.5},children:L}),ht("hr",{style:{marginTop:"0.5rem",marginBottom:"0.5rem",opacity:.1}}),En("div",{className:"rdd-confirmation-actions",children:[ht("button",{type:"button",className:"rdd-btn rdd-btn-sm rdd-btn-outline",onClick:M,children:N}),ht("button",{type:"submit",className:"rdd-btn rdd-btn-sm rdd-btn-primary",ref:T,children:_})]})]})},bt=xr;function Gt(e){return e==="top-left"?"top-right":e==="top-right"?"top-left":e==="bottom-left"?"bottom-right":"bottom-left"}function tt(e){let{element:t,pointerId:n,startClientX:o,startClientY:l,captureStart:s,onMove:E,onEnd:h,activeClasses:w}=e;t.setPointerCapture(n),w?.forEach(({el:T,classes:L})=>T.classList.add(...L));let b=s(),x=T=>{E(T.clientX-o,T.clientY-l,b)},P=()=>{w?.forEach(({el:T,classes:L})=>T.classList.remove(...L)),t.removeEventListener("pointermove",x),t.removeEventListener("pointerup",P),t.removeEventListener("pointercancel",P),h?.(b)};t.addEventListener("pointermove",x),t.addEventListener("pointerup",P),t.addEventListener("pointercancel",P)}function Yt(e,t,n,o,l){let{minW:s,minH:E,maxW:h,maxH:w,minX:b,minY:x}=l,{x:P,y:T,w:L,h:N}=o;if(e.includes("e")&&(L=Math.max(s,Math.min(o.w+t,h??1/0))),e.includes("w")){let _=o.w-s,u=b!=null?-(o.x-b):-1/0,M=Math.max(u,Math.min(t,_));L=o.w-M,P=o.x+M}if(e.includes("s")&&(N=Math.max(E,Math.min(o.h+n,w??1/0))),e.includes("n")){let _=o.h-E,u=x!=null?-(o.y-x):-1/0,M=Math.max(u,Math.min(n,_));N=o.h-M,T=o.y+M}return{x:P,y:T,w:L,h:N}}import{useEffect as Cr,useState as wr}from"react";function In(){let[e,t]=wr(()=>document.documentElement.getAttribute("data-color-scheme")==="light"?"light":"dark");return Cr(()=>{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 wo,jsx as S,jsxs as ce}from"react/jsx-runtime";var Ro=(e,t)=>{if(!e)return null;if(e.type==="leaf")return e.id===t?e:null;for(let n of e.children){let o=Ro(n,t);if(o)return o}return null},Xt=new Map,sn="preserved-dom-container",zn=ce("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{display:"block"},children:[S("rect",{x:"3",y:"3",width:"7",height:"9",rx:"1"}),S("rect",{x:"14",y:"3",width:"7",height:"5",rx:"1"}),S("rect",{x:"14",y:"12",width:"7",height:"9",rx:"1"}),S("rect",{x:"3",y:"16",width:"7",height:"5",rx:"1"})]}),zt={float:S("span",{className:"rdd-menu-icon",children:ce("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{display:"block"},children:[S("rect",{x:"2",y:"8",width:"14",height:"14",rx:"1"}),S("rect",{x:"8",y:"2",width:"14",height:"14",rx:"1"})]})}),minimize:S("span",{className:"rdd-menu-icon",children:S("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",style:{display:"block"},children:S("line",{x1:"4",y1:"18",x2:"20",y2:"18"})})}),restore:S("span",{className:"rdd-menu-icon",children:S("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{display:"block"},children:S("rect",{x:"4",y:"4",width:"16",height:"16",rx:"1"})})}),maximize:S("span",{className:"rdd-menu-icon",children:S("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{display:"block"},children:S("rect",{x:"2",y:"2",width:"20",height:"20",rx:"1"})})}),close:S("span",{className:"rdd-menu-icon",children:S("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{display:"block"},children:S("path",{d:"M18 6L6 18M6 6l12 12"})})})},Mo=e=>{let t=Xt.get(e);return t||(t=document.createElement("div"),t.style.width="100%",t.style.height="100%",Xt.set(e,t)),t},Rr=(e,t,n)=>{let o=t.component,l=n.get(o);if(!l)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 } } })`),ce("div",{className:"rdd-unregistered-panel",style:{border:"2px dashed #dc3545"},children:[S("h6",{style:{fontWeight:700,marginBottom:"0.25rem"},children:"\u26A0\uFE0F Component Unregistered"}),ce("span",{style:{fontSize:"0.875rem",color:"var(--rdd-text-secondary, #94a3b8)"},children:["Key: ",o]})]});let s=l.Component;return S(s,{...t.props??{},panelId:e})},Wn=new Map,nt=new Map,vt=e=>{let t=nt.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},nt.set(e,t)),t},To=({panelId:e})=>{let t=Ce(null);return ve(()=>{let n=t.current;if(!n)return;let o=Mo(e);n.appendChild(o);let l=new ResizeObserver(s=>{for(let E of s){let{width:h,height:w}=E.contentRect;if(h>0&&w>0){Wn.set(e,{width:h,height:w});let b=nt.get(e);b&&b.onResize.forEach(x=>x(h,w))}}});return l.observe(n),()=>{l.disconnect();let s=document.getElementById(sn);s||(s=document.createElement("div"),s.id=sn,s.style.display="none",document.body.appendChild(s)),s.appendChild(o)}},[e]),S("div",{ref:t,style:{width:"100%",height:"100%"}})},Mr=({panelId:e})=>{let t=ze(),n=_t(),o=Oe(),l=Ce(null),s=t.panels[e],E=s?n.get(s.component):null,h=E?.defaultOptions?.disableLivePreview||!1,w=Wn.get(e)||{width:800,height:500},b=w.width,x=w.height,L=Math.min(220/b,140/x);if(ve(()=>{if(h)return;let N=l.current;if(!N)return;let _=Xt.get(e);if(_)return N.appendChild(_),()=>{let u=document.getElementById(sn);u||(u=document.createElement("div"),u.id=sn,u.style.display="none",document.body.appendChild(u)),u.appendChild(_)}},[e,h]),h){let N=b*L,_=x*L,u=s?.title||E?.defaultOptions?.title||"Panel",M=ue(u,o),C=(Array.from(M)[0]||"P").toUpperCase();return S("div",{className:"rdd-taskbar-item-preview-frame",style:{width:`${N}px`,height:`${_}px`,display:"flex",alignItems:"center",justifyContent:"center",background:"rgba(108, 117, 125, 0.15)",border:"1px dashed var(--rdd-taskbar-item-border, rgba(255, 255, 255, 0.15))"},children:S("div",{style:{fontSize:"2rem",fontWeight:600,color:"var(--rdd-panel-title-color, var(--rdd-panel-text, rgba(255, 255, 255, 0.85)))",userSelect:"none"},children:C})})}return S("div",{className:"rdd-taskbar-item-preview-frame",style:{width:`${b*L}px`,height:`${x*L}px`},children:S("div",{ref:l,className:"rdd-taskbar-item-preview-host",style:{width:`${b}px`,height:`${x}px`,transform:`scale(${L})`,transformOrigin:"top left",position:"absolute",top:0,left:0,"--rdd-preview-scale":L}})})},Tr=({panelId:e,children:t})=>{let n=ze(),{requestClosePanel:o,setPanelDirty:l,registerCloseGuard:s,unregisterCloseGuard:E,registerStateProvider:h,unregisterStateProvider:w,updatePanelTitle:b,minimizePanel:x}=Ht(),P=n.minimized.some(g=>g.id===e),T=Ce(P);ve(()=>{let g=nt.get(e);g&&(P&&!T.current?g.onMinimize.forEach(R=>R()):!P&&T.current&&g.onRestore.forEach(R=>R()),T.current=P)},[P,e]);let L=n.activePanelId===e,N=Ce(L);ve(()=>{let g=N.current;N.current=L;let R=nt.get(e);R&&(L&&!g?R.onActivate.forEach(F=>F()):!L&&g&&R.onDeactivate.forEach(F=>F()))},[L,e]);let _=n.panels[e]?.state,u=_==="floating"?"floating-window":"dockable-panel",M=Ce(u);ve(()=>{if(_==="minimized")return;let g=M.current;M.current=u;let R=nt.get(e);R&&u!==g&&R.onContainerTypeChange.forEach(F=>F(u))},[u,_,e]),ve(()=>()=>{let g=nt.get(e);g&&(N.current&&g.onDeactivate.forEach(R=>R()),g.onClose.forEach(R=>R()),nt.delete(e))},[e]);let C=Ce(u),A=Nn.useMemo(()=>({requestClose:g=>o(e,g),setDirty:g=>l(e,g),onCloseRequested:g=>(s(e,g),()=>E(e)),registerStateProvider:g=>(h(e,g),()=>w(e)),setTitle:g=>b(e,g),instanceId:e,containerType:C.current,onClose:g=>{let R=vt(e);return R.onClose.add(g),()=>R.onClose.delete(g)},onMinimize:g=>{let R=vt(e);return R.onMinimize.add(g),()=>R.onMinimize.delete(g)},onRestore:g=>{let R=vt(e);return R.onRestore.add(g),()=>R.onRestore.delete(g)},onResize:g=>{let R=vt(e);return R.onResize.add(g),()=>R.onResize.delete(g)},requestMinimize:()=>x(e),getDimensions:()=>Wn.get(e)??null,onActivate:g=>{let R=vt(e);return R.onActivate.add(g),()=>R.onActivate.delete(g)},onDeactivate:g=>{let R=vt(e);return R.onDeactivate.add(g),()=>R.onDeactivate.delete(g)},onContainerTypeChange:g=>{let R=vt(e);return R.onContainerTypeChange.add(g),()=>R.onContainerTypeChange.delete(g)}}),[e,o,l,s,E,h,w,b,x]);return S(ut,{value:A,children:t})},So=({node:e,path:t,onTabRightClick:n,activeDropZone:o,onHoverDropZone:l,onTabDragStart:s,hoveredTab:E,onTabHover:h,defaultPanelIcon:w,onRequestClosePanel:b})=>{let{updateSplitSizes:x}=Ht();if(e.type==="leaf")return S(Sr,{leaf:e,onTabRightClick:n,activeDropZone:o,onHoverDropZone:l,onTabDragStart:s,hoveredTab:E,onTabHover:h,defaultPanelIcon:w,onRequestClosePanel:b});let P=e.orientation==="horizontal",T=(L,N)=>{N.preventDefault();let _=N.currentTarget,u=_.parentElement,M=u?P?u.clientWidth:u.clientHeight:P?1e3:800;tt({element:_,pointerId:N.pointerId,startClientX:N.clientX,startClientY:N.clientY,captureStart:()=>[...e.sizes],activeClasses:[{el:_,classes:["rdd-active"]},{el:document.body,classes:["rdd-resizing-active",P?"rdd-resizing-col-active":"rdd-resizing-row-active"]}],onMove:(C,A,g)=>{let R=(P?C:A)/M,F=[...g];F[L]+=R,F[L+1]-=R,F[L]>.1&&F[L+1]>.1&&x(t,F)}})};return S("div",{style:{display:"flex",flexDirection:P?"row":"column",width:"100%",height:"100%",overflow:"hidden",position:"relative"},children:e.children.map((L,N)=>{let _=e.sizes[N]*100;return ce(Nn.Fragment,{children:[S("div",{style:{flexGrow:e.sizes[N],flexBasis:`${_}%`,overflow:"hidden",position:"relative",minWidth:0,minHeight:0},children:S(So,{node:L,path:[...t,N],onTabRightClick:n,activeDropZone:o,onHoverDropZone:l,onTabDragStart:s,hoveredTab:E,onTabHover:h,defaultPanelIcon:w,onRequestClosePanel:b})}),N<e.children.length-1&&S("div",{onPointerDown:u=>T(N,u),style:{cursor:P?"col-resize":"row-resize",width:P?"1px":"100%",height:P?"100%":"1px",zIndex:20},className:"rdd-resizer-bar"})]},N)})})},Sr=({leaf:e,onTabRightClick:t,activeDropZone:n,onHoverDropZone:o,onTabDragStart:l,hoveredTab:s,onTabHover:E,defaultPanelIcon:h,onRequestClosePanel:w})=>{let b=ze(),x=_t(),{openPanel:P,closeLeafGroup:T,setActivePanel:L}=wn(),N=Oe(),_=Ge(),{windowClass:u,windowBodyClass:M}=Qe(),C=Ce(null),[A,g]=Ye({left:!1,right:!1}),R=Ln(()=>{let c=C.current;c&&g({left:c.scrollLeft>0,right:c.scrollLeft<c.scrollWidth-c.clientWidth-1})},[]);ve(()=>{let c=C.current;if(!c)return;c.addEventListener("scroll",R,{passive:!0});let I=new ResizeObserver(R);return I.observe(c),R(),()=>{c.removeEventListener("scroll",R),I.disconnect()}},[R]);let F=c=>{C.current?.scrollBy({left:c==="left"?-120:120,behavior:"smooth"})},H=c=>{P(c,b.panels[c].component),L(c)};return ce("div",{"data-active-panel-id":e.activePanelId||"",className:`rdd-workspace-panel ${u??""}`,style:{overflow:"hidden",position:"relative"},children:[ce("div",{className:"rdd-workspace-tab-bar",style:{minHeight:"38px"},children:[A.left&&S("button",{className:"rdd-tab-scroll-btn rdd-tab-scroll-btn-left",onPointerDown:c=>c.stopPropagation(),onClick:()=>F("left"),tabIndex:-1,"aria-label":"Scroll tabs left",children:"\u2039"}),S("div",{ref:C,className:"rdd-tab-headers-container",style:{scrollbarWidth:"none"},onPointerMove:c=>{b.draggedPanelId&&c.target===c.currentTarget&&E(e.id,"EMPTY",e.panels.length,"right")},onPointerLeave:c=>{b.draggedPanelId&&c.target===c.currentTarget&&E(e.id,"",-1,null)},children:e.panels.map((c,I)=>{let $=b.panels[c];if(!$)return null;let Y=e.activePanelId===c,j=b.activePanelId===c,U=x.get($.component)?.defaultOptions,fe=s&&s.leafId===e.id&&s.panelId===c,oe=I===e.panels.length-1,X=s&&s.leafId===e.id&&s.panelId==="EMPTY"&&oe,K=fe?s.side==="left"?"rdd-drag-hover-left":"rdd-drag-hover-right":X?"rdd-drag-hover-right":"",W=Y?j?"rdd-active rdd-workspace-tab-active-focused":"rdd-active rdd-workspace-tab-active-unfocused":"rdd-workspace-tab-inactive";return ce("div",{"data-tab-id":c,"data-leaf-id":e.id,"data-tab-index":String(I),onClick:()=>H(c),onPointerDown:O=>{U?.canDrag!==!1&&l(c,O)},onContextMenu:O=>t(c,O),onPointerMove:O=>{if(b.draggedPanelId&&O.pointerType!=="touch"){let q=O.currentTarget.getBoundingClientRect(),ye=O.clientX-q.left<q.width/2?"left":"right";E(e.id,c,I,ye)}},onPointerLeave:()=>{b.draggedPanelId&&E(e.id,"",-1,null)},className:`rdd-workspace-tab ${W} ${K}`,style:{cursor:U?.canDrag===!1?"default":"pointer"},children:[ce("span",{className:"rdd-text-truncate",style:{maxWidth:"120px",display:"flex",alignItems:"center"},children:[S("span",{className:"rdd-workspace-tab-icon",children:U?.icon||h||zn}),ce("span",{children:[ue($.title,N),$.dirty?" *":""]})]}),U?.renderHeaderActions&&S("span",{className:"rdd-tab-header-actions",onClick:O=>O.stopPropagation(),onPointerDown:O=>O.stopPropagation(),children:U.renderHeaderActions(c)}),U?.canClose!==!1&&S("span",{onClick:O=>{O.stopPropagation(),w(c)},title:ue(_.closeTab,N),className:"rdd-close-tab-x",style:{width:"18px",height:"18px",...U?.renderHeaderActions?{}:{marginInlineStart:"auto"}},children:S("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:S("path",{d:"M18 6L6 18M6 6l12 12"})})})]},c)})}),A.right&&S("button",{className:"rdd-tab-scroll-btn rdd-tab-scroll-btn-right",onPointerDown:c=>c.stopPropagation(),onClick:()=>F("right"),tabIndex:-1,"aria-label":"Scroll tabs right",children:"\u203A"}),e.panels.length===0&&e.keepOnEmpty&&e.canClose!==!1&&S("span",{onClick:()=>T(e.id),className:"rdd-close-tab-x rdd-header-close-empty-group",style:{width:"18px",height:"18px",cursor:"pointer"},title:ue(_.closeEmptyGroup,N),children:S("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:S("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),ce("div",{className:`rdd-panel-body ${M??""}`,style:{position:"relative",overflow:"hidden"},children:[e.activePanelId&&b.panels[e.activePanelId]?S(To,{panelId:e.activePanelId},e.activePanelId):S("div",{className:"rdd-empty-leaf-placeholder",children:S("span",{children:"Empty Workspace Section"})}),b.draggedPanelId!==null&&(()=>{let c=I=>n?.leafId===e.id&&n.position===I;return S("div",{className:"rdd-dock-drop-zone-overlay",children:ce("div",{className:"rdd-dock-target-cross",children:[S("div",{"data-leaf-id":e.id,"data-drop-zone":"top",onPointerEnter:()=>o(e.id,"top"),onPointerLeave:()=>o(e.id,null),className:`rdd-dock-target-box rdd-dock-target-top${c("top")?" rdd-dock-target-box--active":""}`,children:"\u25B2"}),S("div",{"data-leaf-id":e.id,"data-drop-zone":"bottom",onPointerEnter:()=>o(e.id,"bottom"),onPointerLeave:()=>o(e.id,null),className:`rdd-dock-target-box rdd-dock-target-bottom${c("bottom")?" rdd-dock-target-box--active":""}`,children:"\u25BC"}),S("div",{"data-leaf-id":e.id,"data-drop-zone":"left",onPointerEnter:()=>o(e.id,"left"),onPointerLeave:()=>o(e.id,null),className:`rdd-dock-target-box rdd-dock-target-left${c("left")?" rdd-dock-target-box--active":""}`,children:"\u25C0"}),S("div",{"data-leaf-id":e.id,"data-drop-zone":"right",onPointerEnter:()=>o(e.id,"right"),onPointerLeave:()=>o(e.id,null),className:`rdd-dock-target-box rdd-dock-target-right${c("right")?" rdd-dock-target-box--active":""}`,children:"\u25B6"}),S("div",{"data-leaf-id":e.id,"data-drop-zone":"center",onPointerEnter:()=>o(e.id,"center"),onPointerLeave:()=>o(e.id,null),className:`rdd-dock-target-box rdd-dock-target-center${c("center")?" rdd-dock-target-box--active":""}`,children:"\u25A3"})]})})})(),b.draggedPanelId!==null&&n!==null&&n.leafId===e.id&&S("div",{className:"rdd-dock-preview-highlight",style:(()=>{let c=n.position,I=`${b.splitRatio*100}%`,$=`${(1-b.splitRatio)*100}%`;return{left:c==="right"?$:"0",top:c==="bottom"?$:"0",width:c==="left"||c==="right"?I:"100%",height:c==="top"||c==="bottom"?I:"100%"}})()})]})]})},kr=({skin:e="vscode",defaultPanelIcon:t,taskbarVisibility:n="always",contextMenuAdapter:o=It,animations:l=!0})=>{let s=ze(),E=_t(),{restorePanel:h,minimizePanel:w,requestClosePanel:b,maximizePanel:x,updateFloatingPosition:P,focusPanel:T,floatPanel:L,setDraggedPanelId:N,dockPanelToGroup:_,movePanelOrder:u,dockPanelToWorkspaceEdge:M,setActivePanel:C,getPanelContextMenuItems:A,showContextMenu:g,registerContextMenuFn:R}=wn(),{openModal:F}=mt(),H=Oe(),c=Ge(),I=Nn.useCallback(r=>{let y=s.panels[r];b(r,{onConfirm:p=>new Promise(m=>{let f=p||y?.dirtyOptions,k=y?ue(y.title,H):"Panel";F(bt,{title:f?.title||c.unsavedChangesTitle,message:f?.message||{id:c.unsavedChangesMessage.id,defaultMessage:c.unsavedChangesMessage.defaultMessage,values:{title:k}},alert:f?.alert,alertType:f?.alertType||"danger",useYesNoTitles:!0,onOK:()=>m(!0),onCancel:()=>m(!1)},{size:"small"})})})},[b,s.panels,H,F,c]),{windowClass:$,windowBodyClass:Y}=Qe(),j=xo(Lt),Q=Ce(null);ve(()=>R(j!==null?r=>j.show(r):r=>Q.current?.show(r)),[j,R]);let U=Ce(null),[fe,oe]=Ye(!1),X=Ce(null),K=Ce(s.minimized.length),[W,O]=Ye(null),q=Ce(null),de=Ce("mouse"),[ye,Z]=Ye(!1),pe=j!==null?j.isOpen:ye;ve(()=>()=>{q.current&&clearTimeout(q.current)},[]),ve(()=>{W&&(s.minimized.some(y=>y.id===W.id)||O(null))},[s.minimized,W]),ve(()=>{if(!W?.fromTouch)return;let r=y=>{y.pointerType!=="touch"||document.querySelector(".rdd-taskbar-item-tooltip")?.contains(y.target)||O(null)};return document.addEventListener("pointerdown",r,{capture:!0}),()=>document.removeEventListener("pointerdown",r,{capture:!0})},[W?.fromTouch]);let[me,we]=Ye(null),ke=Ce(null),[Ve,_e]=Ye({x:0,y:0}),[He,We]=Ye(null),Ke=Ce(null),Pe=r=>{We(r),Ke.current=r},[ee,Te]=Ye(null),Ee=Ce(null),Se=r=>{Te(r),Ee.current=r},Ze=xo(kt)?.isRtl??!1,[Ue,Be]=Ye(null),qe=Ce(null),Zt=(r,y,p,m)=>{let f=m?{leafId:r,panelId:y,index:p,side:m}:null;Be(f),qe.current=f},Ut=(r,y)=>{let p=y?{leafId:r,position:y}:null;we(p),ke.current=p,p&&(Pe(null),Se(null))},Dt=(r,y)=>{let p=document.elementsFromPoint(r,y),m=!1,f=!1,k=!1;for(let z of p)if(z instanceof HTMLElement){if(!m&&z.dataset.dropZone){let D=z.dataset.leafId;if(D){let V=z.dataset.dropZone;we({leafId:D,position:V}),ke.current={leafId:D,position:V},m=!0}}if(!k&&z.dataset.tabId){let D=z.dataset.leafId,V=parseInt(z.dataset.tabIndex||"0",10);if(D){let J=z.getBoundingClientRect(),G=r-J.left<J.width/2?"left":"right";Be({leafId:D,panelId:z.dataset.tabId,index:V,side:G}),qe.current={leafId:D,panelId:z.dataset.tabId,index:V,side:G},k=!0}}if(!f&&z.dataset.edgeTrigger&&(Pe(z.dataset.edgeTrigger),f=!0),m&&f&&k)break}m||(we(null),ke.current=null),f||Pe(null),k||(Be(null),qe.current=null)},st=300,at=8,$e=()=>{N(null),we(null),ke.current=null,Be(null),qe.current=null,Pe(null)},Je=r=>s.isRtl?r==="left"?"right":r==="right"?"left":r:r,Ot=(r,y)=>{let p=ke.current,m=qe.current,f=Ke.current,k=Ee.current;if(f)M(r,Je(f));else if(m){let z=m.index;m.side==="right"&&(z+=1);let D=Ro(s.gridRoot,m.leafId);if(D){let V=D.panels.indexOf(r);V!==-1&&V<z&&(z-=1)}u(r,m.leafId,z)}else p?_(r,p.leafId,Je(p.position)):k?L(r,void 0,Ze?Gt(k):k):L(r,{x:y.clientX-150,y:y.clientY-15,width:450,height:350});Se(null),$e()},Jt=(r,y)=>{if(y.pointerType==="mouse"&&y.button!==0)return;y.preventDefault();let p=y.currentTarget,m=y.clientX,f=y.clientY;if(y.pointerType==="touch"){let k=y.pointerId,z=!1,D=()=>{z=!0,clearTimeout(J),p.removeEventListener("pointermove",V),p.removeEventListener("pointerup",D),p.removeEventListener("pointercancel",D)},V=G=>{Math.hypot(G.clientX-m,G.clientY-f)>at&&D()},J=setTimeout(()=>{if(z)return;p.removeEventListener("pointermove",V),p.removeEventListener("pointerup",D),p.removeEventListener("pointercancel",D);try{p.setPointerCapture(k)}catch{return}p.classList.add("rdd-long-press-active"),document.body.classList.add("rdd-dragging-active"),navigator.vibrate&&navigator.vibrate(10);let G=!1,ne=se=>{G||(G=!0,N(r)),_e({x:se.clientX,y:se.clientY}),Dt(se.clientX,se.clientY)},ae=se=>{p.classList.remove("rdd-long-press-active"),document.body.classList.remove("rdd-dragging-active"),p.removeEventListener("pointermove",ne),p.removeEventListener("pointerup",ae),p.removeEventListener("pointercancel",re),G?Ot(r,se):At(r,se)},re=()=>{p.classList.remove("rdd-long-press-active"),document.body.classList.remove("rdd-dragging-active"),p.removeEventListener("pointermove",ne),p.removeEventListener("pointerup",ae),p.removeEventListener("pointercancel",re),G&&$e()};p.addEventListener("pointermove",ne),p.addEventListener("pointerup",ae),p.addEventListener("pointercancel",re)},st);p.addEventListener("pointermove",V),p.addEventListener("pointerup",D),p.addEventListener("pointercancel",D)}else{let k=!1,z=J=>{let G=J.clientX-m,ne=J.clientY-f;!k&&(Math.abs(G)>5||Math.abs(ne)>5)&&(k=!0,N(r)),k&&_e({x:J.clientX,y:J.clientY})},D=J=>{document.body.classList.remove("rdd-dragging-active"),window.removeEventListener("pointermove",z),window.removeEventListener("pointerup",D),window.removeEventListener("pointercancel",V),k&&Ot(r,J)},V=()=>{document.body.classList.remove("rdd-dragging-active"),window.removeEventListener("pointermove",z),window.removeEventListener("pointerup",D),window.removeEventListener("pointercancel",V),k&&$e()};document.body.classList.add("rdd-dragging-active"),window.addEventListener("pointermove",z),window.addEventListener("pointerup",D),window.addEventListener("pointercancel",V)}},At=(r,y)=>{y.preventDefault();let p=s.panels[r];if(!p)return;let f=E.get(p.component)?.defaultOptions,k=[];if(f?.canDrag!==!1&&k.push({label:ue(c.floatWindow,H),icon:zt.float,action:()=>L(r)}),f?.canMinimize!==!1&&k.push({label:ue(c.minimizePanel,H),icon:zt.minimize,action:()=>w(r)}),k.length>0&&f?.canClose!==!1&&k.push({separator:!0}),f?.canClose!==!1&&k.push({label:ue(c.closeTab,H),icon:zt.close,action:()=>I(r)}),k.length===0)return;let z=A(r),D=z.length>0?[...k,{separator:!0},...z]:k;g({event:y,items:D})},lt=(r,y)=>{y.preventDefault(),O(null),g({event:y,items:[{label:ue(c.restorePanel,H),icon:zt.restore,action:()=>h(r)},{label:ue(c.maximizePanel,H),icon:zt.maximize,action:()=>x(r)},{separator:!0},{label:ue(c.closePanel,H),icon:zt.close,action:()=>I(r)}]})};ve(()=>{let r=Object.keys(s.panels);for(let y of Array.from(Xt.keys()))r.includes(y)||Xt.delete(y)},[s.panels]),ve(()=>{let r=()=>{s.draggedPanelId!==null&&(N(null),we(null),Be(null))};return window.addEventListener("blur",r),()=>{window.removeEventListener("blur",r)}},[s.draggedPanelId]);let Pt=Ce(null),[dt,mn]=Ye({width:1024,height:768});ve(()=>{let r=Pt.current;if(!r)return;let y=!1,p=new ResizeObserver(m=>{if(!m||m.length===0)return;let f=m[0].contentRect;if(process.env.NODE_ENV==="development"&&f.height<10&&!y){y=!0;let k=r,z=r.parentElement;for(;z&&z!==document.documentElement&&z.getBoundingClientRect().height<10;){k=z;z=z.parentElement}let D=k.tagName.toLowerCase(),V=k.id?` id="${k.id}"`:"",J=k.className?` class="${k.className}"`:"",G=k===r?"the WindowManager container itself":`a wrapper element: <${D}${V}${J}>`;console.warn(`[react-dockable-desktop] Workspace height is 0px \u2014 the workspace will be invisible.
6
6
 
7
- Zero height found at: ${V}
7
+ Zero height found at: ${G}
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.`)}fn({width:Math.max(100,f.width),height:Math.max(100,f.height)})});return c.observe(r),()=>{c.disconnect()}},[]),ve(()=>{let r=dt.width,P=dt.height;s.floating.forEach(c=>{let u=typeof c.width=="string"?parseFloat(c.width):c.width,f=typeof c.height=="string"?parseFloat(c.height):c.height,E=typeof c.x=="string"?parseFloat(c.x):c.x,W=typeof c.y=="string"?parseFloat(c.y):c.y,A=u,K=f,re=E,V=W,ne=!1;if(A>r&&(A=Math.max(200,r-20),ne=!0),K>P&&(K=Math.max(150,P-40),ne=!0),!c.anchor){let ae=r-100;re>ae&&(re=Math.max(0,ae),ne=!0);let ie=P-40;V>ie&&(V=Math.max(0,ie),ne=!0)}ne&&y(c.id,{x:re,y:V,width:A,height:K})})},[dt,s.floating,y]),ve(()=>{let r=P=>{if(P.button!==0)return;let c=P.target;if(!c||typeof c.closest!="function")return;let u=c.closest(".rdd-floating-window");if(u){let E=u.getAttribute("data-window-id");E&&(C(E),S(E));return}let f=c.closest(".rdd-workspace-panel");if(f){let E=f.getAttribute("data-active-panel-id");E&&C(E)}};return document.addEventListener("pointerdown",r),()=>{document.removeEventListener("pointerdown",r)}},[S,C]);let hn=(r,P)=>{P.preventDefault();let c=s.floating.find(V=>V.id===r);if(!c||c.maximized)return;S(r);let u=P.currentTarget,f=u.closest(".rdd-floating-window"),E=P.clientX,W=P.clientY,A=f?f.offsetLeft:0,K=f?f.offsetTop:0,re=()=>{let V=ke.current,ne=qe.current,ae=Ke.current,ie=Ee.current;if(ie)y(r,{anchor:Ue?Gt(ie):ie});else if(ae)M(r,Qe(ae));else if(ne){let se=ne.index;ne.side==="right"&&(se+=1),g(r,ne.leafId,se)}else V&&F(r,V.leafId,Qe(V.position));Me(null),Be()};if(P.pointerType==="touch"){let V=P.pointerId,ne=!1,ae=()=>{ne=!0,clearTimeout(se),u.removeEventListener("pointermove",ie),u.removeEventListener("pointerup",ae),u.removeEventListener("pointercancel",ae)},ie=le=>{Math.hypot(le.clientX-E,le.clientY-W)>at&&ae()},se=setTimeout(()=>{if(ne)return;u.removeEventListener("pointermove",ie),u.removeEventListener("pointerup",ae),u.removeEventListener("pointercancel",ae);try{u.setPointerCapture(V)}catch{return}u.classList.add("rdd-long-press-active"),document.body.classList.add("rdd-dragging-active"),z(r);let le=xt=>{let Ct=xt.clientX-E,wt=xt.clientY-W;y(r,{x:A+Ct,y:K+wt,anchor:null}),Wt(xt.clientX,xt.clientY)},Pe=()=>{u.classList.remove("rdd-long-press-active"),document.body.classList.remove("rdd-dragging-active"),u.removeEventListener("pointermove",le),u.removeEventListener("pointerup",Pe),u.removeEventListener("pointercancel",ct),re()},ct=()=>{u.classList.remove("rdd-long-press-active"),document.body.classList.remove("rdd-dragging-active"),u.removeEventListener("pointermove",le),u.removeEventListener("pointerup",Pe),u.removeEventListener("pointercancel",ct),Be()};u.addEventListener("pointermove",le),u.addEventListener("pointerup",Pe),u.addEventListener("pointercancel",ct)},st);u.addEventListener("pointermove",ie),u.addEventListener("pointerup",ae),u.addEventListener("pointercancel",ae)}else{let V=!1,ne=se=>{let le=se.clientX-E,Pe=se.clientY-W;!V&&(Math.abs(le)>5||Math.abs(Pe)>5)&&(V=!0,z(r)),V&&y(r,{x:A+le,y:K+Pe,anchor:null})},ae=()=>{document.body.classList.remove("rdd-dragging-active"),window.removeEventListener("pointermove",ne),window.removeEventListener("pointerup",ae),window.removeEventListener("pointercancel",ie),V&&re()},ie=()=>{document.body.classList.remove("rdd-dragging-active"),window.removeEventListener("pointermove",ne),window.removeEventListener("pointerup",ae),window.removeEventListener("pointercancel",ie),V&&Be()};document.body.classList.add("rdd-dragging-active"),window.addEventListener("pointermove",ne),window.addEventListener("pointerup",ae),window.addEventListener("pointercancel",ie)}},i=(r,P,c)=>{c.preventDefault(),c.stopPropagation();let u=s.floating.find(le=>le.id===r);if(!u||u.maximized)return;S(r);let f=c.currentTarget,E=f.closest(".rdd-floating-window"),W={x:E?E.offsetLeft:0,y:E?E.offsetTop:0,w:E?E.offsetWidth:400,h:E?E.offsetHeight:300},A=dt.width,K=dt.height,re=typeof u.x=="string"?parseFloat(u.x):u.x,V=typeof u.y=="string"?parseFloat(u.y):u.y,ne=typeof u.width=="string"?parseFloat(u.width):u.width,ae=typeof u.height=="string"?parseFloat(u.height):u.height,ie=P==="se"&&Math.abs(re+ne-A)<4,se=P==="se"&&Math.abs(V+ae-K)<4;nt({element:f,pointerId:c.pointerId,startClientX:c.clientX,startClientY:c.clientY,captureStart:()=>W,activeClasses:[{el:document.body,classes:["rdd-resizing-active"]}],onMove:(le,Pe,ct)=>{let xt=Yt(P,le,Pe,ct,{minW:200,minH:150}),{x:Ct,y:wt,w:bn,h:vn}=xt;ie&&(Ct=A-bn,Ct<0&&(Ct=0,bn=A)),se&&(wt=K-vn,wt<0&&(wt=0,vn=K)),y(r,{x:Ct,y:wt,width:bn,height:vn})}})},b=r=>{if(U.current){let P=r==="left"?-150:150;U.current.scrollBy({left:P,behavior:"smooth"})}},d=In(()=>{X.current&&clearTimeout(X.current),oe(!0)},[]),a=In(()=>{X.current=setTimeout(()=>oe(!1),400)},[]);ve(()=>{n==="autohide"&&s.minimized.length>B.current&&(X.current&&clearTimeout(X.current),oe(!0),X.current=setTimeout(()=>oe(!1),2e3)),B.current=s.minimized.length},[s.minimized.length,n]);let $=En();return ve(()=>(e?document.documentElement.setAttribute("data-workspace-skin",e):document.documentElement.removeAttribute("data-workspace-skin"),()=>{document.documentElement.removeAttribute("data-workspace-skin")}),[e]),ve(()=>($==="light"?document.documentElement.setAttribute("data-color-scheme","light"):document.documentElement.removeAttribute("data-color-scheme"),()=>{document.documentElement.removeAttribute("data-color-scheme")}),[$]),ve(()=>(p?document.documentElement.classList.remove("rdd-no-animations"):document.documentElement.classList.add("rdd-no-animations"),()=>{document.documentElement.classList.remove("rdd-no-animations")}),[p]),de("div",{className:`rdd-workspace${p?"":" 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:[de("div",{ref:Pt,className:s.draggedPanelId?"rdd-dragging-active":void 0,style:{flexGrow:1,width:"100%",position:"relative",overflow:"hidden"},children:[s.draggedPanelId!==null&&de(xo,{children:[T("div",{"data-edge-trigger":"left",className:"rdd-workspace-edge-trigger rdd-edge-trigger-left",onPointerEnter:()=>ye("left"),onPointerLeave:()=>ye(null)}),T("div",{"data-edge-trigger":"right",className:"rdd-workspace-edge-trigger rdd-edge-trigger-right",onPointerEnter:()=>ye("right"),onPointerLeave:()=>ye(null)}),T("div",{"data-edge-trigger":"top",className:"rdd-workspace-edge-trigger rdd-edge-trigger-top",onPointerEnter:()=>ye("top"),onPointerLeave:()=>ye(null)}),T("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=>T("div",{className:`rdd-corner-zone rdd-corner-zone--${r}${ee===r?" rdd-corner-zone--hovered":""}`,onPointerEnter:()=>{Me(r),ye(null)},onPointerLeave:()=>Me(null),"aria-hidden":"true"},r)),s.draggedPanelId!==null&&_e!==null&&T("div",{className:"rdd-workspace-edge-preview",style:(()=>{let r=`${s.edgeSplitRatio*100}%`;switch(_e){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}}})()}),T("div",{style:{width:"100%",height:"100%",overflow:"hidden",position:"relative"},children:s.gridRoot?T(Mo,{node:s.gridRoot,path:[],onTabRightClick:At,activeDropZone:Te,onHoverDropZone:Ut,onTabDragStart:Jt,hoveredTab:Je,onTabHover:Zt,defaultPanelIcon:t,onRequestClosePanel:k}):T("div",{className:"rdd-empty-workspace-grid",children:"Grid Empty"})}),s.floating.map(r=>{let P=s.panels[r.id];if(!P)return null;let c=r.maximized,u=s.draggedPanelId===r.id,f=s.activePanelId===r.id,W=I.get(P.component)?.defaultOptions;return de("div",{"data-window-id":r.id,dir:s.dir,onPointerDownCapture:()=>{C(r.id),S(r.id)},className:`rdd-floating-window ${c?"rdd-maximized":""} ${f?"rdd-window-focused":""} ${G??""}`,style:(()=>{let re=typeof r.width=="number"?`${r.width}px`:r.width,V=typeof r.height=="number"?`${r.height}px`:r.height;if(c)return{position:"absolute",left:0,top:0,width:"100%",height:"100%",zIndex:r.z,pointerEvents:u?"none":"auto"};if(r.anchor){let ne=s.floating.filter(Pe=>Pe.anchor===r.anchor&&!Pe.maximized),ae=ne.findIndex(Pe=>Pe.id===r.id),ie=8;for(let Pe=0;Pe<ae;Pe++){let ct=typeof ne[Pe].height=="number"?ne[Pe].height:parseFloat(ne[Pe].height);ie+=ct+8}let se=r.anchor.startsWith("top");return{position:"absolute",[r.anchor.endsWith("-right")?"insetInlineEnd":"insetInlineStart"]:8,[se?"top":"bottom"]:ie,width:re,height:V,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:re,height:V,zIndex:r.z,pointerEvents:u?"none":"auto"}})(),children:[de("div",{onDoubleClick:()=>x(r.id),onPointerDown:A=>{W?.canDrag!==!1&&hn(r.id,A)},className:"rdd-floating-window-titlebar rdd-cursor-move",style:{cursor:c||W?.canDrag===!1?"default":"move"},children:[de("span",{className:"rdd-floating-window-title",children:[T("span",{className:"rdd-window-title-icon",children:W?.icon||t||Ln}),de("span",{children:[ce(P.title,_),P.dirty?" *":""]})]}),de("div",{className:"rdd-titlebar-actions",style:{gap:"var(--rdd-header-button-gap, 4px)"},onPointerDown:A=>A.stopPropagation(),children:[W?.renderHeaderActions&&T("div",{className:"rdd-window-header-actions",children:W.renderHeaderActions(r.id)}),N(r.id).length>0&&T("button",{type:"button",className:"rdd-custom-tab-btn rdd-btn-more-actions",title:"More actions",onClick:A=>{A.stopPropagation();let K=N(r.id);K.length!==0&&m({event:A,items:K})},children:de("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"currentColor",style:{display:"block"},children:[T("circle",{cx:"12",cy:"5",r:"2"}),T("circle",{cx:"12",cy:"12",r:"2"}),T("circle",{cx:"12",cy:"19",r:"2"})]})}),T("button",{type:"button",title:c?ce(l.restoreSize,_):ce(l.maximize,_),onClick:()=>x(r.id),className:"rdd-custom-tab-btn rdd-btn-maximize-tab",children:T("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:T("rect",{x:"4",y:"4",width:"16",height:"16",rx:"1.5"})})}),W?.canMinimize!==!1&&T("button",{type:"button",title:ce(l.minimize,_),onClick:()=>R(r.id),className:"rdd-custom-tab-btn rdd-btn-minimize-tab",children:T("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"3",children:T("path",{d:"M5 12h14"})})}),W?.canClose!==!1&&T("button",{type:"button",title:ce(l.close,_),onClick:()=>k(r.id),className:"rdd-custom-tab-btn rdd-btn-close-tab",children:T("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"3",children:T("path",{d:"M18 6L6 18M6 6l12 12"})})})]})]}),T("div",{className:Y??void 0,style:{flexGrow:1,width:"100%",overflow:"hidden",position:"relative",isolation:"isolate"},children:T(Ro,{panelId:r.id},r.id)}),!c&&de(xo,{children:[T("div",{onPointerDown:A=>i(r.id,"n",A),className:"rdd-resize-handle rdd-resize-n"}),T("div",{onPointerDown:A=>i(r.id,"ne",A),className:"rdd-resize-handle rdd-resize-ne"}),T("div",{onPointerDown:A=>i(r.id,"e",A),className:"rdd-resize-handle rdd-resize-e"}),T("div",{onPointerDown:A=>i(r.id,"se",A),className:"rdd-resize-handle rdd-resize-se"}),T("div",{onPointerDown:A=>i(r.id,"s",A),className:"rdd-resize-handle rdd-resize-s"}),T("div",{onPointerDown:A=>i(r.id,"sw",A),className:"rdd-resize-handle rdd-resize-sw"}),T("div",{onPointerDown:A=>i(r.id,"w",A),className:"rdd-resize-handle rdd-resize-w"}),T("div",{onPointerDown:A=>i(r.id,"nw",A),className:"rdd-resize-handle rdd-resize-nw"})]})]},r.id)})]}),(n==="always"||s.minimized.length>0)&&de("div",{className:["rdd-taskbar-footer-container",`taskbar-mode-${n}`,n==="autohide"&&me?"rdd-taskbar-expanded":""].filter(Boolean).join(" "),style:{height:"48px",zIndex:100},onPointerEnter:n==="autohide"?d:void 0,onPointerLeave:n==="autohide"?a:void 0,children:[n==="autohide"&&T("div",{className:"rdd-taskbar-peek-handle"}),T("button",{type:"button",onClick:()=>b("left"),className:"rdd-taskbar-nav-btn",style:{display:s.minimized.length>4?"block":"none"},children:"\u25C0"}),T("div",{ref:U,className:"rdd-taskbar-items-container",style:{scrollSnapType:"x mandatory"},children:s.minimized.map(r=>{let c=I.get(r.component)?.defaultOptions?.icon||t||Ln;return T("div",{onClick:()=>{fe.current!=="touch"&&(H(null),h(r.id))},onContextMenu:u=>lt(r.id,u),onPointerDown:u=>{if(fe.current=u.pointerType,u.pointerType!=="touch")return;let f=u.currentTarget,E=u.clientX,W=u.clientY,A=u.pointerId,K=!1,re=()=>{K=!0,clearTimeout(ae),f.removeEventListener("pointermove",ne),f.removeEventListener("pointerup",V),f.removeEventListener("pointercancel",re)},V=()=>{re();let ie=f.getBoundingClientRect();D?.id===r.id?(h(r.id),H(null)):H({id:r.id,rect:ie,title:r.title,component:r.component,fromTouch:!0})},ne=ie=>{Math.hypot(ie.clientX-E,ie.clientY-W)>at&&re()},ae=setTimeout(()=>{if(K)return;f.removeEventListener("pointermove",ne),f.removeEventListener("pointerup",V),f.removeEventListener("pointercancel",re);try{f.setPointerCapture(A)}catch{return}navigator.vibrate&&navigator.vibrate(10);let ie=se=>{f.removeEventListener("pointerup",ie),f.removeEventListener("pointercancel",ie),lt(r.id,se)};f.addEventListener("pointerup",ie),f.addEventListener("pointercancel",ie)},st);f.addEventListener("pointermove",ne),f.addEventListener("pointerup",V),f.addEventListener("pointercancel",re)},onPointerEnter:u=>{if(u.pointerType==="touch"||ue)return;j.current&&clearTimeout(j.current);let f=u.currentTarget.getBoundingClientRect();u.clientX>=f.left&&u.clientX<=f.right&&u.clientY>=f.top&&u.clientY<=f.bottom&&H({id:r.id,rect:f,title:r.title,component:r.component})},onPointerLeave:u=>{u.pointerType!=="touch"&&(j.current=setTimeout(()=>{H(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:T("span",{className:"rdd-taskbar-item-icon",children:c})},r.id)})}),D&&Po(de("div",{className:"rdd-taskbar-item-tooltip",dir:s.dir,style:{position:"fixed",left:`${D.rect.left+D.rect.width/2}px`,top:`${D.rect.top-8}px`,transform:"translateX(-50%) translateY(-100%)",opacity:1,pointerEvents:"auto",zIndex:999999},onPointerEnter:()=>{j.current&&clearTimeout(j.current)},onPointerLeave:r=>{r.pointerType!=="touch"&&H(null)},onClick:()=>{h(D.id),H(null)},onContextMenu:r=>lt(D.id,r),onPointerDown:r=>{if(r.pointerType!=="touch")return;let P=D.id,c=r.currentTarget,u=r.clientX,f=r.clientY,E=r.pointerId,W=!1,A=()=>{W=!0,clearTimeout(re),c.removeEventListener("pointermove",K),c.removeEventListener("pointerup",A),c.removeEventListener("pointercancel",A)},K=V=>{Math.hypot(V.clientX-u,V.clientY-f)>at&&A()},re=setTimeout(()=>{if(W)return;c.removeEventListener("pointermove",K),c.removeEventListener("pointerup",A),c.removeEventListener("pointercancel",A);try{c.setPointerCapture(E)}catch{return}navigator.vibrate&&navigator.vibrate(10);let V=ne=>{c.removeEventListener("pointerup",V),c.removeEventListener("pointercancel",V),lt(P,ne)};c.addEventListener("pointerup",V),c.addEventListener("pointercancel",V)},st);c.addEventListener("pointermove",K),c.addEventListener("pointerup",A),c.addEventListener("pointercancel",A)},children:[de("div",{className:"rdd-tooltip-header-row",children:[de("span",{className:"rdd-tooltip-title-text rdd-text-truncate",style:{maxWidth:"140px"},children:[ce(D.title,_),s.panels[D.id]?.dirty?" *":""]}),T("span",{onClick:r=>{r.stopPropagation(),k(D.id),H(null)},title:ce(l.closePanel,_),className:"rdd-tooltip-close-x",children:T("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:T("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),T(wr,{panelId:D.id})]}),document.body),T("button",{type:"button",onClick:()=>b("right"),className:"rdd-taskbar-nav-btn",style:{display:s.minimized.length>4?"block":"none"},children:"\u25B6"})]}),Object.keys(s.panels).map(r=>{let P=s.panels[r];if(!P)return null;let c=wo(r);return Po(T(Rr,{panelId:r,children:T("div",{style:{width:"100%",height:"100%"},dir:s.dir,children:Cr(r,P,I)})}),c,r)}),q===null&&T(o.Component,{ref:J,theme:"dark",formatMessageProvider:_,onShow:()=>Z(!0),onHide:()=>Z(!1)}),s.draggedPanelId!==null&&!s.floating.some(r=>r.id===s.draggedPanelId)&&de("div",{className:"rdd-drag-ghost-tab",style:{left:Xe.x+12,top:Xe.y+12,zIndex:1e5},children:["\u{1F4C4} ",ce(s.panels[s.draggedPanelId]?.title,_)||"Tab"]})]})},Sr=Tr;var Dn=class{registry;initialState;config;_actions=null;_initialized=!1;_pendingCalls=[];_pendingOpenPanelIds=new Set;_pendingSubscriptions=[];_disconnectedWarnTimer=null;constructor(t={}){if(this.registry=new Mt,this.initialState=t.initialState??null,this.config={formatMessage:t.formatMessage,predefinedMessages:t.predefinedMessages,dir:t.dir,defaultSplitRatio:t.defaultSplitRatio,defaultEdgeSplitRatio:t.defaultEdgeSplitRatio,zIndexBase:t.zIndexBase},t.panels)for(let[n,o]of Object.entries(t.panels))this.registry.register(n,o.component,o.defaultOptions)}_connect(t){this._actions=t,this._disconnectedWarnTimer!==null&&(clearTimeout(this._disconnectedWarnTimer),this._disconnectedWarnTimer=null),this._initialized||(this._initialized=!0);for(let o of this._pendingSubscriptions)o.unsub=t.subscribe(o.event,o.callback);let n=this._pendingCalls.splice(0);for(let o of n)o(t)}_disconnect(){this._actions=null;for(let t of this._pendingSubscriptions)t.unsub?.(),t.unsub=null}get isConnected(){return this._actions!==null}_startWarnTimer(){this._disconnectedWarnTimer===null&&(this._disconnectedWarnTimer=setTimeout(()=>{!this.isConnected&&this._pendingCalls.length>0&&console.error("[react-dockable-desktop] WorkspaceClient has "+this._pendingCalls.length+" queued call(s) but was never connected to a WindowManagerProvider. Did you forget client={workspace} on <WindowManagerProvider>?")},process.env.NODE_ENV==="production"?5e3:1e3))}_dispatch(t){this._actions?t(this._actions):(this._pendingCalls.push(t),this._startWarnTimer())}_subscribeRaw(t,n){if(this._actions)return this._actions.subscribe(t,n);let o={event:t,callback:n,unsub:null};return this._pendingSubscriptions.push(o),()=>{o.unsub?.(),o.unsub=null;let p=this._pendingSubscriptions.indexOf(o);p!==-1&&this._pendingSubscriptions.splice(p,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(p=>p.dockPanelToGroup(t,n,o))}movePanelOrder(t,n,o){this._dispatch(p=>p.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(p=>p.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 Gr}from"react";import{createContext as kr,useContext as Er,useMemo as Ir,useState as To}from"react";import{jsx as Lr}from"react/jsx-runtime";var So=kr(null),an=({children:e})=>{let[t,n]=To({}),[o,p]=To({}),s=Ir(()=>({getActiveInGroup:I=>t[I]??null,setActiveInGroup:(I,h)=>n(R=>({...R,[I]:h})),isModifierActive:I=>o[I]??!1,setModifierActive:(I,h)=>p(R=>({...R,[I]:h})),toggleModifier:I=>p(h=>({...h,[I]:!h[I]}))}),[t,o]);return Lr(So.Provider,{value:s,children:e})};function ln(){let e=Er(So);if(!e)throw new Error("useToolbar must be used within DockableDesktopProvider");return e}import{createContext as zr,useCallback as Nr,useContext as ko,useLayoutEffect as Dr,useMemo as Wr,useRef as Or,useSyncExternalStore as Ar}from"react";import{jsx as $r}from"react/jsx-runtime";function Fr(){let e=new Map,t=new Set,n=()=>t.forEach(o=>o());return{publish(o,p){return e.set(o,p),n(),()=>{e.get(o)===p&&(e.delete(o),n())}},get(o){return e.get(o)??null},subscribe(o){return t.add(o),()=>t.delete(o)}}}var Wn=zr(null),On=({children:e})=>{let t=Wr(()=>Fr(),[]);return $r(Wn.Provider,{value:t,children:e})};function _r(e){let t=nn(),n=ko(Wn),o=Or(null);if(!n)throw new Error("usePanelContribution must be used within PanelContributionProvider");Dr(()=>{if(n)return o.current?.(),o.current=n.publish(t,e),()=>{o.current?.(),o.current=null}},[n,t,e])}function An(){let e=ze(p=>p.activePanelId),t=ko(Wn);if(!t)throw new Error("useActivePanelContribution must be used within PanelContributionProvider");let n=Nr(p=>t?t.subscribe(p):()=>{},[t]),o=()=>t&&e?t.get(e):null;return Ar(n,o,o)}function Eo(e,t=null){return{id:e.id,label:e.label,icon:e.icon??t,renderContent:()=>e.content}}function Hr(e){let t=An();return t?.toolbarItems?.length?[...e,{type:"separator"},...t.toolbarItems]:e}function Br(e,t=null){let n=An();return n?.sidebarSections?.length?[...e,...n.sidebarSections.map(o=>Eo(o,t))]:e}import{jsx as Vt}from"react/jsx-runtime";var Yr=({contextMenuAdapter:e=It,...t})=>{let n=Gr(Lt),o=Vt(an,{children:Vt(xn,{...t,children:Vt(On,{children:Vt(Sn,{children:t.children})})})});return n!==null?o:Vt(Mn,{adapter:e,formatMessageProvider:t.formatMessage,children:o})};import{useCallback as Kt,useRef as Io,useEffect as Xr,useState as Vr,useMemo as Kr}from"react";import{Fragment as Ur,jsx as Ae,jsxs as Fn}from"react/jsx-runtime";var qr=({modal:e,index:t,isTopmost:n})=>{let{close:o,openModal:p,updateInstance:s,setDirty:I}=ft(),h=We(),R=$e(),{dir:v}=ze(),{modalClass:x,modalBodyClass:y}=et(),S=Io(null),{id:L,Component:z,props:F,options:g,dirty:M,dirtyOptions:C}=e,N=g,[m,w]=Vr(N.icon||null),O=Io(N);O.current=N;let _=ce(N.title,h),l=Kt(async H=>{if(H?.force){o(L);return}if(S.current){if(!await S.current())return;o(L);return}if(M){p(bt,{title:C?.title||R.unsavedChangesTitle,message:C?.message||{id:R.unsavedChangesMessage.id,defaultMessage:R.unsavedChangesMessage.defaultMessage,values:{title:_}},alert:C?.alert,alertType:C?.alertType||"danger",useYesNoTitles:!0,onOK:()=>o(L)},{size:"small"});return}o(L)},[o,p,L,M,C,_,R]),k=Kt((H,j)=>I(L,H,j),[I,L]),G=Kt(H=>s(L,{options:{...O.current,title:H}}),[s,L]),Y=Kt(H=>w(H),[]),q=Kt(H=>(S.current=H,()=>{S.current=null}),[]),J=Kr(()=>({requestClose:l,setDirty:k,setTitle:G,setIcon:Y,onCloseRequested:q,containerType:"modal",instanceId:L}),[l,k,G,Y,q,L]),U=M?`${_} *`:_,me=N.size?`rdd-modal-size-${N.size}`:"rdd-modal-size-auto",oe=N.closable!==!1,X=N.bodyPadding,B=X!=null?typeof X=="number"?`${X}px`:X:void 0;Xr(()=>{if(!n||!oe)return;let H=j=>{j.key==="Escape"&&(j.stopPropagation(),l())};return document.addEventListener("keydown",H),()=>document.removeEventListener("keydown",H)},[l,oe,n]);let D=`calc(var(--rdd-z-base, 1000) + 9000 + ${t*10})`;return Fn("div",{className:"rdd-modal-overlay",style:{zIndex:D},dir:v,children:[Ae("div",{className:"rdd-modal-curtain",onClick:oe?()=>l():void 0}),Fn("div",{className:`rdd-modal-window ${me} ${x??""}`,children:[Fn("div",{className:"rdd-modal-header",children:[m&&Ae("div",{className:"rdd-modal-icon",children:m}),Ae("h4",{className:"rdd-modal-title",children:U}),oe&&Ae("button",{className:"rdd-modal-close-button",onClick:()=>l(),title:h(R.closeTooltip),type:"button",children:Ae("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:Ae("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),Ae("div",{className:`rdd-modal-body ${y??""}`,style:B!=null?{padding:B}:void 0,children:Ae(ut,{value:J,children:Ae(z,{...F,panelId:L})})})]})]})},jr=()=>{let{modals:e}=tt();return e.length===0?null:Ae(Ur,{children:e.map((t,n)=>Ae(qr,{modal:t,index:n,isTopmost:n===e.length-1},t.id))})},Zr=jr;import{useCallback as Nt,useRef as _n,useEffect as zo,useState as ei,useMemo as ti}from"react";import{useLayoutEffect as Jr,useState as Qr}from"react";function Lo(e){let[t,n]=Qr(null);return Jr(()=>{let o=e.current?.parentElement;if(!o)return;let p=()=>{let I=o.getBoundingClientRect();n({top:I.top,left:I.left,right:window.innerWidth-I.right,height:I.height})};p();let s=new ResizeObserver(p);return s.observe(o),window.addEventListener("resize",p),()=>{s.disconnect(),window.removeEventListener("resize",p)}},[e]),t}import{Fragment as si,jsx as Ce,jsxs as Hn}from"react/jsx-runtime";var dn=({panel:e,position:t,defaultWidth:n,containerRect:o})=>{let{close:p,openModal:s,updateInstance:I,setDirty:h,registerCloseHandler:R,unregisterCloseHandler:v}=ft(),{modals:x}=tt(),y=We(),S=$e(),{dir:L}=ze(),{sidePanelClass:z,sidePanelBodyClass:F}=et(),g=_n(null),{id:M,Component:C,props:N,options:m,dirty:w,dirtyOptions:O}=e,_=m,[l,k]=ei(_.icon||null),G=_n(_);G.current=_;let Y=ce(_.title,y),q=Nt(async Z=>{if(Z?.force){p(M);return}if(g.current){if(!await g.current())return;p(M);return}if(w){s(bt,{title:O?.title||S.unsavedChangesTitle,message:O?.message||{id:S.unsavedChangesMessage.id,defaultMessage:S.unsavedChangesMessage.defaultMessage,values:{title:Y}},alert:O?.alert,alertType:O?.alertType||"danger",useYesNoTitles:!0,onOK:()=>p(M)},{size:"small"});return}p(M)},[p,s,M,w,O,Y,S]),J=Nt(async()=>g.current?await g.current():!w,[w]);zo(()=>(R(M,J),()=>v(M)),[M,J,R,v]);let U=Nt((Z,ue)=>h(M,Z,ue),[h,M]),me=Nt(Z=>I(M,{options:{...G.current,title:Z}}),[I,M]),oe=Nt(Z=>k(Z),[]),X=Nt(Z=>(g.current=Z,()=>{g.current=null}),[]),B=ti(()=>({requestClose:q,setDirty:U,setTitle:me,setIcon:oe,onCloseRequested:X,containerType:t==="left"?"left-panel":"right-panel",instanceId:M}),[q,U,me,oe,X,t,M]),D=w?`${Y} *`:Y;zo(()=>{let Z=ue=>{ue.key==="Escape"&&x.length===0&&q()};return document.addEventListener("keydown",Z),()=>document.removeEventListener("keydown",Z)},[q,x.length]);let H=_.width||n||400,j=typeof H=="number"?`${H}px`:H,fe=_.bodyPadding,pe=fe!=null?typeof fe=="number"?`${fe}px`:fe:void 0;return Ce("div",{className:`rdd-side-panel rdd-side-panel-${t} rdd-side-panel-visible ${z??""}`,style:{width:j,...o?{top:o.top,height:o.height,bottom:"auto",...t==="right"?{right:o.right}:{left:o.left}}:{}},dir:L,children:Hn("div",{className:"rdd-side-panel-window",children:[Hn("div",{className:"rdd-side-panel-header",children:[l&&Ce("div",{className:"rdd-side-panel-icon",children:l}),Ce("h4",{className:"rdd-side-panel-title",children:D}),Ce("button",{className:"rdd-side-panel-close-button",onClick:()=>q(),title:y(S.closeTooltip),type:"button",children:Ce("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:Ce("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),Ce("div",{className:`rdd-side-panel-body ${F??""}`,style:pe!=null?{padding:pe}:void 0,children:Ce(ut,{value:B,children:Ce(C,{...N,panelId:M})})})]})})},Bn=({children:e})=>{let t=_n(null),n=Lo(t);return Ce("div",{ref:t,style:{display:"contents"},children:e(n)})},ni=({defaultWidth:e})=>{let{leftPanel:t,rightPanel:n}=tt();return Ce(Bn,{children:o=>Hn(si,{children:[t&&Ce(dn,{panel:t,position:"left",defaultWidth:e,containerRect:o},t.id),n&&Ce(dn,{panel:n,position:"right",defaultWidth:e,containerRect:o},n.id)]})})},oi=({defaultWidth:e})=>{let{leftPanel:t}=tt();return Ce(Bn,{children:n=>t?Ce(dn,{panel:t,position:"left",defaultWidth:e,containerRect:n},t.id):null})},ri=({defaultWidth:e})=>{let{rightPanel:t}=tt();return Ce(Bn,{children:n=>t?Ce(dn,{panel:t,position:"right",defaultWidth:e,containerRect:n},t.id):null})},ii=ni;import ai,{useState as cn,useEffect as un,useRef as $n,useCallback as pn,useImperativeHandle as li,useContext as Yn,useMemo as rt,createContext as Oo,forwardRef as Ao,memo as di}from"react";import{jsx as ge,jsxs as gn}from"react/jsx-runtime";function Gn(e){return"renderContent"in e}function ci(e){return"render"in e}function No(e){return e==null?[]:Array.isArray(e)?e:[e]}var Xn=Oo(null),Fo=Oo(null);function ui({tabId:e,onClose:t,onOpen:n,setActiveTabId:o,children:p}){let s=rt(()=>({tabId:e,onClose:t,onOpen:n,openTab:I=>o(I)}),[e,t,n,o]);return ge(Fo.Provider,{value:s,children:p})}function Do(e,t,n,o){if(ci(e))return ge(ai.Fragment,{children:e.render()},e.id??t);if(Gn(e)){if(e.hidden)return null;let p=n===e.id;return ge("button",{type:"button",onClick:()=>o(e.id),className:`rdd-sidebar-tab-btn${p?" rdd-active":""}`,title:e.label,"aria-pressed":p,children:e.icon},e.id)}return ge("button",{type:"button",onClick:e.onClick,disabled:e.disabled,className:"rdd-sidebar-tab-btn rdd-sidebar-header-action-btn",title:e.label,"aria-label":e.label,children:e.icon},e.id??t)}var Wo=di(function({tabs:t,headerEntries:n,footerEntries:o,activeTabId:p,isVisible:s,position:I,onTabClick:h}){return ge("div",{style:{width:s?"56px":"0px",height:"100%",overflow:"hidden",transition:"width 0.25s cubic-bezier(0.4, 0, 0.2, 1)",flexShrink:0},children:gn("div",{className:`rdd-sidebar-tabs-strip rdd-${I}${n.length?" rdd-sidebar-tabs-strip--has-header-action":""}${o.length?" rdd-sidebar-tabs-strip--has-footer-action":""}`,style:{width:"56px",height:"100%"},children:[n.length>0&&ge("div",{className:"rdd-sidebar-header-area",children:n.map((R,v)=>Do(R,v,p,h))}),ge("div",{className:"rdd-sidebar-tabs-list",children:t.map(R=>{if(R.hidden)return null;let v=p===R.id;return ge("button",{type:"button",onClick:()=>h(R.id),className:`rdd-sidebar-tab-btn${v?" rdd-active":""}`,title:R.label,"aria-pressed":v,children:R.icon},R.id)})}),o.length>0&&ge("div",{className:"rdd-sidebar-footer-area",children:o.map((R,v)=>Do(R,v,p,h))})]})})});function pi({position:e,currentWidth:t,minWidth:n,maxWidth:o,onWidthChange:p,onResizeStart:s,onResizeEnd:I}){return ge("div",{className:"rdd-resizer-bar",style:{cursor:"col-resize",width:"1px",height:"100%",flexShrink:0,zIndex:20},onPointerDown:R=>{R.preventDefault();let v=R.currentTarget,x=[{el:v,classes:["rdd-active"]},{el:document.body,classes:["rdd-resizing-active","rdd-resizing-col-active"]}];s(),nt({element:v,pointerId:R.pointerId,startClientX:R.clientX,startClientY:R.clientY,captureStart:()=>t,activeClasses:x,onMove:(y,S,L)=>{let z=e==="right"?L-y:L+y;p(Math.max(n,Math.min(o,z)))},onEnd:()=>I()})}})}var _o=Ao(function({position:t="right",tabs:n,headerAction:o,footerAction:p,defaultWidth:s,minWidth:I=150,maxWidth:h=600,onWidthChange:R,activeTabId:v,onActiveTabChange:x,visible:y,onVisibilityChange:S,stripVisible:L,onStripVisibilityChange:z,showCloseButton:F=!1,hideDefaultHeader:g=!1,renderHeader:M,isSecondary:C=!1,children:N},m){let w=v!==void 0,[O,_]=cn(()=>s??280),l=pn(ee=>{_(ee),R?.(ee)},[R]),[k,G]=cn(!1),[Y,q]=cn(null),J=w?v:Y,U=rt(()=>No(o),[o]),me=rt(()=>No(p),[p]),oe=rt(()=>U.filter(Gn),[U]),X=rt(()=>me.filter(Gn),[me]),B=rt(()=>[...oe,...n,...X],[oe,n,X]),[D,H]=cn(()=>new Set),j=rt(()=>{let ee=new Set(D);J&&ee.add(J);for(let Re of B)Re.eagerMount&&ee.add(Re.id);return ee},[D,J,B]),fe=$n(J??null);un(()=>{fe.current=J??null},[J]);let pe=$n(O);un(()=>{pe.current=O},[O]);let Z=pn(ee=>{H(ee!==null?Re=>{if(Re.has(ee))return Re;let Ee=new Set(Re);return Ee.add(ee),Ee}:Re=>{let Ee=!1,Me=new Set(Re);for(let Ue of Re){let Je=B.find(He=>He.id===Ue);Je&&!Je.eagerMount&&!Je.preserveState&&(Me.delete(Ue),Ee=!0)}return Ee?Me:Re}),w||q(ee),x?.(ee)},[w,x,B]);un(()=>{J!=null&&!B.some(ee=>ee.id===J)&&Z(null)},[J,B,Z]),li(m,()=>({openTab:ee=>Z(ee),closeDrawer:()=>Z(null),getActiveTab:()=>fe.current,show:()=>S?.(!0),hide:()=>S?.(!1),toggle:()=>S?.(y===!1),showStrip:()=>z?.(!0),hideStrip:()=>z?.(!1),setWidth:ee=>l(Math.max(I,Math.min(h,ee))),getWidth:()=>pe.current}),[Z,y,S,z,l,I,h]);let ue=pn(ee=>{Z(J===ee?null:ee)},[J,Z]),Te=pn(()=>Z(null),[Z]),Se=g||M!=null,ke=$n(!1);un(()=>{process.env.NODE_ENV==="development"&&(!F||!Se||ke.current||(ke.current=!0,console.warn('[react-dockable-desktop] `showCloseButton` has no effect because the default header is suppressed (`hideDefaultHeader` is set, or `renderHeader` was passed). The "X" close button only renders as part of the library\'s own default header, which is skipped in this case. Add your own close control inside `renderHeader` (or `renderContent`), wired to its `onClose` parameter or `useSidebarTab().onClose`.')))},[F,Se]);let Xe=rt(()=>({openTab:ee=>Z(ee),closeDrawer:()=>Z(null),getActiveTab:()=>fe.current,position:t,isSecondary:C}),[Z,t,C]),Fe=y!==!1,_e=Fe&&L!==!1,Ve=Fe&&J!=null,Ke=ge("div",{className:`rdd-sidebar-content-drawer rdd-${t}`,style:{flexBasis:Ve?`${O}px`:"0px",flexShrink:1,flexGrow:0,minWidth:Ve?`${I}px`:"0px",maxWidth:Ve?`${h}px`:"0px",overflow:"hidden",transition:k?"none":"flex-basis 0.2s cubic-bezier(0.4, 0, 0.2, 1), min-width 0.2s cubic-bezier(0.4, 0, 0.2, 1), max-width 0.2s cubic-bezier(0.4, 0, 0.2, 1)"},children:B.map(ee=>{if(!j.has(ee.id))return null;let Ee=J===ee.id,Me=()=>Z(ee.id);return gn("div",{style:{display:Ee?"flex":"none",flexDirection:"column",height:"100%",width:"100%"},children:[Se?M?.(ee,Te,Me):gn("div",{className:"rdd-sidebar-drawer-header",children:[ge("span",{className:"rdd-sidebar-header-title",children:ee.label}),F&&ge("button",{type:"button",className:"rdd-sidebar-drawer-close-button",onClick:Te,title:"Close","aria-label":"Close",children:ge("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:ge("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),ge("div",{className:"rdd-sidebar-drawer-body",children:ge(ui,{tabId:ee.id,onClose:Te,onOpen:Me,setActiveTabId:Z,children:ee.renderContent(ee.id,Te,Me)})})]},ee.id)})}),ye=Ve?ge(pi,{position:t,currentWidth:O,minWidth:I,maxWidth:h,onWidthChange:l,onResizeStart:()=>G(!0),onResizeEnd:()=>G(!1)}):null;return ge(Xn.Provider,{value:Xe,children:gn("div",{style:{display:"flex",flexDirection:"row",width:"100%",height:"100%",overflow:"hidden"},children:[t==="left"&&ge(Wo,{tabs:n,headerEntries:U,footerEntries:me,activeTabId:J,isVisible:_e,position:t,onTabClick:ue}),t==="left"&&Ke,t==="left"&&ye,ge("div",{style:{flex:"1 1 0%",minWidth:0,overflow:"hidden"},children:N}),t==="right"&&ye,t==="right"&&Ke,t==="right"&&ge(Wo,{tabs:n,headerEntries:U,footerEntries:me,activeTabId:J,isVisible:_e,position:t,onTabClick:ue})]})})}),gi=Ao(function(t,n){let o=Yn(Xn);if(!o)throw new Error("SecondarySidebar must be rendered inside a primary Sidebar's children");if(o.isSecondary)throw new Error("SecondarySidebar cannot be nested inside another SecondarySidebar");let p=o.position==="left"?"right":"left";return ge(_o,{ref:n,...t,position:p,isSecondary:!0})});function mi(){let e=Yn(Xn);if(!e)throw new Error("useSidebar must be used within Sidebar");return e}function fi(){let e=Yn(Fo);if(!e)throw new Error("useSidebarTab must be used within a Sidebar tab renderContent tree");return e}import{forwardRef as hi,useImperativeHandle as bi,useState as Ho,useRef as Bo,useEffect as $o,useLayoutEffect as vi}from"react";import{createPortal as yi}from"react-dom";import{Fragment as Ri,jsx as Ne,jsxs as Go}from"react/jsx-runtime";function Pi(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 xi({item:e,position:t,toolbar:n}){let[o,p]=Ho(!1),[s,I]=Ho(null),h=Bo(null),R=Bo(null),v=e.activeItemId!==void 0,x=v?e.activeItemId:n.getActiveInGroup(e.id),y=e.items.find(g=>!("type"in g)&&g.id===x),S=x!==null,L=y?.icon??e.defaultIcon,z=y?.label??e.label,F=()=>{e.disabled||(!o&&h.current&&I(h.current.getBoundingClientRect()),p(g=>!g))};return vi(()=>{if(!o||!R.current)return;let g=R.current,M=g.getBoundingClientRect(),C=8;M.right>window.innerWidth-C&&(g.style.left=`${Math.max(C,window.innerWidth-M.width-C)}px`,g.style.right="auto"),M.left<C&&(g.style.left=`${C}px`,g.style.right="auto"),M.bottom>window.innerHeight-C&&(g.style.top=`${Math.max(C,window.innerHeight-M.height-C)}px`,g.style.bottom="auto"),M.top<C&&(g.style.top=`${C}px`,g.style.bottom="auto")},[o]),$o(()=>{if(!o)return;let g=M=>{let C=M.target;h.current?.contains(C)||R.current?.contains(C)||p(!1)};return document.addEventListener("mousedown",g),()=>document.removeEventListener("mousedown",g)},[o]),$o(()=>{if(!o)return;let g=M=>{M.key==="Escape"&&p(!1)};return document.addEventListener("keydown",g),()=>document.removeEventListener("keydown",g)},[o]),Go(Ri,{children:[Ne("button",{ref:h,type:"button",className:`rdd-toolbar-btn rdd-toolbar-btn-group${S?" rdd-active":""}`,title:z,"aria-label":z,"aria-expanded":o,"aria-haspopup":"menu",disabled:e.disabled,onClick:F,children:L}),o&&s&&yi(Ne("div",{ref:R,className:`rdd-toolbar-group-flyout rdd-${t}`,style:Pi(s,t,document.documentElement.dir==="rtl"),role:"menu",children:e.items.map((g,M)=>{if("type"in g)return Ne("div",{className:"rdd-toolbar-group-flyout-sep",role:"separator"},`sep-${M}`);let C=x===g.id;return Go("button",{type:"button",className:`rdd-toolbar-group-flyout-item${C?" rdd-active":""}`,disabled:g.disabled,role:"menuitem","aria-pressed":C,onClick:()=>{v?e.onActiveItemChange?.(g.id):n.setActiveInGroup(e.id,g.id),g.onActivate?.(g.id),p(!1)},children:[Ne("span",{className:"rdd-toolbar-group-flyout-icon",children:g.icon}),Ne("span",{className:"rdd-toolbar-group-flyout-label",children:g.label}),g.shortcut&&Ne("span",{className:"rdd-toolbar-group-flyout-shortcut",children:g.shortcut})]},g.id)})}),document.body)]})}function Ci(e,t,n,o){switch(e.type){case"separator":return Ne("div",{className:"rdd-toolbar-separator",role:"separator"},`sep-${t}`);case"action":return Ne("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 p=n.getActiveInGroup(e.group)===e.id;return Ne("button",{type:"button",className:`rdd-toolbar-btn rdd-toolbar-btn-radio${p?" rdd-active":""}`,title:e.label,"aria-label":e.label,"aria-pressed":p,disabled:e.disabled,onClick:()=>{n.setActiveInGroup(e.group,e.id),e.onActivate?.(e.id)},children:e.icon},e.id)}case"toggle":{let p=e.active!==void 0,s=p?e.active:n.isModifierActive(e.id);return Ne("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:()=>{p||n.toggleModifier(e.id),e.onToggle?.(!s)},children:e.icon},e.id)}case"group":return Ne(xi,{item:e,position:o,toolbar:n},e.id)}}var wi=hi(function({position:t="left",items:n,visible:o,onVisibilityChange:p,className:s,style:I},h){let R=ln(),v=t==="left"||t==="right";bi(h,()=>({show:()=>p?.(!0),hide:()=>p?.(!1),toggle:()=>p?.(o===!1)}),[o,p]);let x=o!==!1?{}:v?{width:"0px"}:{height:"0px"};return Ne("div",{className:`rdd-toolbar-strip rdd-${t}${s?` ${s}`:""}`,role:"toolbar","aria-orientation":v?"vertical":"horizontal",style:{...x,...I},children:n.map((y,S)=>Ci(y,S,R,t))})});import{useCallback as Kn,useEffect as qt,useLayoutEffect as Mi,useRef as yt,useState as qn}from"react";import{createPortal as Yo}from"react-dom";import{jsx as be,jsxs as jt}from"react/jsx-runtime";var jn=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))}},Ie=new jn,Ti=Object.assign((e,t)=>Ie.show(e,t),{info:(e,t)=>Ie.show(e,{...t,type:"info"}),success:(e,t)=>Ie.show(e,{...t,type:"success"}),warning:(e,t)=>Ie.show(e,{...t,type:"warning"}),error:(e,t)=>Ie.show(e,{...t,type:"error"}),dismiss:e=>Ie.dismiss(e),promise:(e,t,n)=>{let o=Ie.show(t.pending,{...n,type:"info",duration:0});return e.then(p=>{let s=typeof t.success=="function"?t.success(p):t.success;Ie.update(o,s,{type:"success",duration:n?.duration??5e3})},p=>{let s=typeof t.error=="function"?t.error(p):t.error;Ie.update(o,s,{type:"error",duration:n?.duration??5e3})}),e}}),Si=()=>jt("svg",{className:"rdd-toast__icon",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[be("circle",{cx:"8",cy:"8",r:"7",stroke:"currentColor",strokeWidth:"1.5"}),be("path",{d:"M8 5v.01M8 7.5v3.5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]}),ki=()=>jt("svg",{className:"rdd-toast__icon",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[be("circle",{cx:"8",cy:"8",r:"7",stroke:"currentColor",strokeWidth:"1.5"}),be("path",{d:"M5 8l2 2 4-4",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})]}),Ei=()=>jt("svg",{className:"rdd-toast__icon",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[be("path",{d:"M8 2.5L14 13.5H2L8 2.5z",stroke:"currentColor",strokeWidth:"1.5",strokeLinejoin:"round"}),be("path",{d:"M8 7v2.5M8 11.5v.01",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]}),Ii=()=>jt("svg",{className:"rdd-toast__icon",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[be("circle",{cx:"8",cy:"8",r:"7",stroke:"currentColor",strokeWidth:"1.5"}),be("path",{d:"M5.5 5.5l5 5M10.5 5.5l-5 5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]}),Li=()=>be("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:be("path",{d:"M4 4l8 8M12 4l-8 8",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})}),zi={info:be(Si,{}),success:be(ki,{}),warning:be(Ei,{}),error:be(Ii,{})};function Ni({id:e,message:t,options:n,exiting:o,isLeft:p,showProgress:s,pauseOnHover:I,animation:h,onDismiss:R,onExited:v}){let x=yt(null),y=yt(null),S=yt(null),L=yt(n.duration),z=yt(0),[F,g]=qn(!1),M=h==="none"?"rdd-toast--visible":h==="fade"?"rdd-toast--fade-entering":p?"rdd-toast--entering-left":"rdd-toast--entering",[C,N]=qn(M);Mi(()=>{let k=x.current,G=y.current;if(!k||!G||o)return;let Y=()=>{k.style.maxHeight=`${k.scrollHeight}px`};Y();let q=new ResizeObserver(Y);return q.observe(G),()=>q.disconnect()},[o]),qt(()=>{if(h==="none")return;let k=requestAnimationFrame(()=>N("rdd-toast--visible"));return()=>cancelAnimationFrame(k)},[]);let m=Kn(k=>{k<=0||(z.current=Date.now(),S.current=setTimeout(()=>R(e),k))},[e,R]);qt(()=>(S.current&&clearTimeout(S.current),L.current=n.duration,m(n.duration),()=>{S.current&&clearTimeout(S.current)}),[n.duration,m]),qt(()=>{if(!o)return;let k=x.current;if(!k||h==="none"){v(e);return}let G=q=>{q.propertyName==="max-height"&&v(e)};k.addEventListener("transitionend",G);let Y=setTimeout(()=>v(e),520);return()=>{k.removeEventListener("transitionend",G),clearTimeout(Y)}},[o,e,v,h]);let w=()=>{!I||n.duration===0||(S.current&&(clearTimeout(S.current),S.current=null,L.current=Math.max(0,L.current-(Date.now()-z.current))),g(!0))},O=()=>{!I||n.duration===0||(g(!1),m(L.current))},_=["rdd-toast",n.type&&`rdd-toast--${n.type}`,C,o&&"rdd-toast--exiting",F&&"rdd-toast--paused"].filter(Boolean).join(" "),l=n.icon!==void 0?n.icon:n.type?zi[n.type]:null;return jt("div",{ref:x,role:"status","aria-live":"polite",className:_,onMouseEnter:w,onMouseLeave:O,children:[l&&l,be("div",{ref:y,className:"rdd-toast__body",children:n.content!==void 0?n.content:t}),n.closable&&be("button",{type:"button",className:"rdd-toast__close",onClick:()=>R(e),"aria-label":"Close notification",children:be(Li,{})}),s&&n.duration>0&&be("div",{className:"rdd-toast__progress",style:{animationDuration:`${n.duration}ms`}})]})}function Vn(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 Di({position:e="top-right",maxVisible:t=3,defaultDuration:n=5e3,defaultClosable:o=!0,pauseOnHover:p=!0,animation:s="slide",newestOnTop:I=!1,progressBar:h=!1,width:R=320,adapter:v}){let[x,y]=qn([]),S=yt([]),L=yt(x);L.current=x;let z=Kn(N=>{y(m=>m.map(w=>w.id===N?{...w,exiting:!0}:w)),L.current.find(m=>m.id===N)?.options.onClose?.()},[]),F=Kn(N=>{let m=S.current.shift()??null;y(w=>{let O=w.filter(l=>l.id!==N);if(!m)return O;let _=Vn(m.rawOpts,n,o);return[...O,{id:m.id,message:m.message,options:_,exiting:!1}]})},[n,o]);if(qt(()=>{if(v)return;let N=m=>{if(m.kind==="show"){let w=Vn(m.rawOpts,n,o),O={id:m.id,message:m.message,options:w,exiting:!1},_={id:m.id,message:m.message,rawOpts:m.rawOpts};y(l=>l.find(Y=>Y.id===m.id)?l.map(Y=>Y.id===m.id?{...Y,message:m.message,options:w}:Y):l.filter(Y=>!Y.exiting).length<t?[...l,O]:(S.current.some(Y=>Y.id===_.id)||S.current.push(_),l))}else m.kind==="update"?(y(w=>w.map(O=>{if(O.id!==m.id)return O;let _={...O.options,...m.patch,id:O.id};return{...O,message:m.message,options:_}})),S.current=S.current.map(w=>w.id!==m.id?w:{...w,message:m.message,rawOpts:{...w.rawOpts,...m.patch}})):m.kind==="dismiss"&&(m.id===void 0?(y(w=>w.map(O=>({...O,exiting:!0}))),S.current=[]):L.current.some(O=>O.id===m.id)?z(m.id):S.current=S.current.filter(O=>O.id!==m.id))};return Ie.subscribe(N),()=>Ie.unsubscribe(N)},[v,t,n,o,z]),qt(()=>{if(!v)return;let N=m=>{if(m.kind==="show"){let w=Vn(m.rawOpts,n,o);v.show(m.id,m.message,w)}else m.kind==="update"?v.update(m.id,m.message,m.patch):m.kind==="dismiss"&&v.dismiss(m.id)};return Ie.subscribe(N),()=>Ie.unsubscribe(N)},[v,n,o]),v){if(!v.Container)return null;let N=v.Container;return Yo(be(N,{position:e}),document.body)}let g=e.endsWith("left"),M="";I===!0&&(M="rdd-toast-container--newest-top"),I===!1&&(M="rdd-toast-container--newest-bottom");let C=["rdd-toast-container",`rdd-toast-container--${e}`,M].filter(Boolean).join(" ");return Yo(be("div",{className:C,style:{width:R},"aria-label":"Notifications","aria-live":"polite",children:x.map(N=>be(Ni,{id:N.id,message:N.message,options:N.options,exiting:N.exiting,isLeft:g,showProgress:h,pauseOnHover:p,animation:s,onDismiss:z,onExited:F},N.id))}),document.body)}import Wi,{useState as we,useContext as mn,createContext as Zn,useRef as Le,useLayoutEffect as Vo,useCallback as Ye,useMemo as Dt,useEffect as Oi}from"react";import{createPortal as Ai}from"react-dom";import{Fragment as Uo,jsx as Q,jsxs as Ze}from"react/jsx-runtime";var Fi=["top-left","top-right","bottom-left","bottom-right"],Ko=Zn(null),qo=Zn(null),jo=Zn(null),it=80;function _i(e,t,n){let o=e.getBoundingClientRect(),p=t-o.left,s=n-o.top;return p<it&&s<it?"top-left":p>o.width-it&&s<it?"top-right":p<it&&s>o.height-it?"bottom-left":p>o.width-it&&s>o.height-it?"bottom-right":null}function Hi({children:e,className:t,style:n}){let[o,p]=we({}),[s,I]=we({}),[h,R]=we({"top-left":[],"top-right":[],"bottom-left":[],"bottom-right":[]}),[v,x]=we({}),[y,S]=we(null),[L,z]=we(null),[F,g]=we(null),[M,C]=we(()=>new Map),N=Le(100),m=Le(null),w=Ye((X,B)=>(p(D=>({...D,[X]:B})),()=>p(D=>{let H={...D};return delete H[X],H})),[]),O=Ye(X=>{N.current+=1;let B=N.current;I(D=>({...D,[X]:B})),g(X)},[]),_=Ye((X,B)=>{R(D=>{let H={"top-left":D["top-left"].filter(j=>j!==X),"top-right":D["top-right"].filter(j=>j!==X),"bottom-left":D["bottom-left"].filter(j=>j!==X),"bottom-right":D["bottom-right"].filter(j=>j!==X)};return H[B]=[...H[B],X],H})},[]),l=Ye(X=>{R(B=>({"top-left":B["top-left"].filter(D=>D!==X),"top-right":B["top-right"].filter(D=>D!==X),"bottom-left":B["bottom-left"].filter(D=>D!==X),"bottom-right":B["bottom-right"].filter(D=>D!==X)}))},[]),k=Ye((X,B)=>{x(D=>D[X]===B?D:{...D,[X]:B})},[]),G=Ye((X,B)=>{C(D=>{let H=new Map(D);return H.set(X,B),H})},[]),Y=Ye(X=>{C(B=>{let D=new Map(B);return D.delete(X),D})},[]),q=Ye(()=>{C(new Map)},[]),J=Dt(()=>Array.from(M.keys()),[M]),U=Dt(()=>({registerToolbar:w,insetTop:o.top??0,insetBottom:o.bottom??0}),[w,o]),me=Dt(()=>({managedWindowIds:J,openManaged:G,closeManaged:Y,closeAllManaged:q}),[J,G,Y,q]),oe=Dt(()=>({topId:F,zOrders:s,focusWindow:O,containerRef:m,stacks:h,dockedSizes:v,dockWindow:_,undockWindow:l,reportDockedSize:k,draggingId:y,setDraggingId:S,hoveredZone:L,setHoveredZone:z,insetTop:o.top??0,insetBottom:o.bottom??0}),[F,s,O,h,v,_,l,k,y,L,o]);return Q(Ko.Provider,{value:U,children:Q(qo.Provider,{value:me,children:Q(jo.Provider,{value:oe,children:Ze("div",{ref:m,className:`rdd-panel-overlay-root${y!==null?" rdd-dragging-active":""}${t?" "+t:""}`,style:n,children:[e,y!==null&&Q(Bi,{hoveredZone:L}),Array.from(M.entries()).map(([X,B])=>Q(Zo,{id:X,title:B.title,icon:B.icon,open:!0,onClose:()=>Y(X),defaultAnchor:B.anchor??"top-right",defaultWidth:B.width??320,defaultHeight:B.height??240,children:B.content},X))]})})})})}function Bi({hoveredZone:e}){return Q(Uo,{children:Fi.map(t=>Q("div",{className:`rdd-panel-float-dropzone rdd-panel-float-dropzone--${t}${e===t?" rdd-panel-float-dropzone--hovered":""}`,"aria-hidden":"true"},t))})}function $i({position:e,variant:t="transparent",buttonVariant:n="ghost",buttonSize:o,style:p,className:s,children:I}){let h=mn(Ko),R=Le(null),v=Le(null);Vo(()=>{let z=R.current;if(!z||!h)return;let F=()=>{let M=e==="top"||e==="bottom"?z.offsetHeight:z.offsetWidth;v.current?.(),v.current=h.registerToolbar(e,M)};F();let g=new ResizeObserver(F);return g.observe(z),()=>{g.disconnect(),v.current?.(),v.current=null}},[e,h?.registerToolbar]);let x={position:"absolute",zIndex:5,pointerEvents:"none",boxSizing:"border-box"};e==="top"?(x.top=0,x.left=0,x.right=0):e==="bottom"?(x.bottom=0,x.left=0,x.right=0):e==="left"?(x.insetInlineStart=0,x.top=h?.insetTop??0,x.bottom=h?.insetBottom??0):(x.insetInlineEnd=0,x.top=h?.insetTop??0,x.bottom=h?.insetBottom??0);let S=e==="left"||e==="right"?{...(h?.insetTop??0)>0?{paddingTop:0}:{},...(h?.insetBottom??0)>0?{paddingBottom:0}:{}}:{},L=o!=null?{"--rdd-panel-toolbar-btn-size":`${o}px`}:{};return Q("div",{ref:R,className:`rdd-panel-toolbar rdd-panel-toolbar--${e}${s?" "+s:""}`,"data-variant":t,"data-btn-variant":n,style:{...x,...S,...L,...p},children:I})}function Gi({icon:e,onClick:t,disabled:n,title:o,variant:p}){return Q("button",{type:"button",className:"rdd-panel-toolbar-btn",onClick:t,disabled:n,title:o,"aria-label":o,...p?{"data-variant":p}:{},children:e})}function Yi({icon:e,active:t,onToggle:n,disabled:o,title:p,variant:s}){return Q("button",{type:"button",className:`rdd-panel-toolbar-btn${t?" rdd-panel-toolbar-btn--active":""}`,onClick:n,disabled:o,title:p,"aria-label":p,"aria-pressed":t,...s?{"data-variant":s}:{},children:e})}function Xi(){return Q("span",{className:"rdd-panel-toolbar__sep","aria-hidden":"true"})}function Vi(){return Q("span",{className:"rdd-panel-toolbar__spacer","aria-hidden":"true"})}function Ki({children:e}){return Q("span",{className:"rdd-panel-toolbar__item",children:e})}function qi({children:e}){return Q("div",{className:"rdd-panel-toolbar__center",children:e})}function ji({placeholder:e="Search\u2026",onSearch:t,onSelect:n}){let[o,p]=we(!1),[s,I]=we(""),[h,R]=we([]),[v,x]=we(null),y=Le(null),S=Le(null),L=Le(null),z=Le(null),F=()=>{p(!0),setTimeout(()=>S.current?.focus({preventScroll:!0}),0)},g=()=>{p(!1),I(""),R([]),x(null),L.current?.abort(),z.current&&clearTimeout(z.current)},M=_=>{let l=_.target.value;if(I(l),L.current?.abort(),z.current&&clearTimeout(z.current),!l.trim()){R([]),x(null);return}z.current=setTimeout(async()=>{let k=new AbortController;L.current=k;try{let G=await t(l,k.signal);if(!k.signal.aborted){R(G);let Y=y.current;if(Y&&G.length>0){let q=Y.getBoundingClientRect(),J=Math.max(q.width,240),U=q.left;U+J>window.innerWidth-8&&(U=window.innerWidth-J-8),x({top:q.bottom+4,left:U,width:J})}else x(null)}}catch{}},300)},C=_=>{n(_),g()},N=_=>{y.current?.contains(_.relatedTarget)||g()},m=_=>{_.key==="Escape"&&g()},w=Dt(()=>{let _={};for(let l of h){let k=l.group??"";_[k]||(_[k]=[]),_[k].push(l)}return _},[h]),O=Ze("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[Q("circle",{cx:"6.5",cy:"6.5",r:"4.5"}),Q("line",{x1:"10",y1:"10",x2:"14",y2:"14"})]});return o?Ze("div",{ref:y,className:"rdd-panel-toolbar-search rdd-panel-toolbar-search--open",onBlur:N,children:[Q("button",{type:"button",className:"rdd-panel-toolbar-btn",onClick:g,"aria-label":"Close search",title:"Close search",children:O}),Q("input",{ref:S,className:"rdd-panel-toolbar-search__input",type:"text",value:s,onChange:M,onKeyDown:m,placeholder:e,autoComplete:"off"}),v&&h.length>0&&Ai(Q("div",{className:"rdd-panel-toolbar-search__dropdown",style:{position:"fixed",top:v.top,left:v.left,width:v.width,zIndex:9502},onMouseDown:_=>_.preventDefault(),children:Object.entries(w).map(([_,l])=>Ze(Wi.Fragment,{children:[_&&Q("div",{className:"rdd-panel-toolbar-search__group",children:_}),l.map(k=>Ze("button",{type:"button",className:"rdd-panel-toolbar-search__item",onClick:()=>C(k),children:[k.icon&&Q("span",{className:"rdd-panel-toolbar-search__item-icon",children:k.icon}),Q("span",{className:"rdd-panel-toolbar-search__item-label",children:k.label}),k.description&&Q("span",{className:"rdd-panel-toolbar-search__item-desc",children:k.description})]},k.id))]},_||"__default__"))}),document.body)]}):Q("div",{ref:y,className:"rdd-panel-toolbar-search",children:Q("button",{type:"button",className:"rdd-panel-toolbar-btn",onClick:F,title:"Search","aria-label":"Search",children:O})})}function Zo(e){let t=mn(jo);return e.open?Q(Qi,{ctx:t,...e},e.id):null}var Zi=120,Ui=60,Xo=8,Ji=8;function Qi({id:e,title:t,icon:n,defaultAnchor:o,defaultWidth:p,defaultHeight:s,children:I,ctx:h,onClose:R}){let v=mn(kt)?.isRtl??!1,[x,y]=we("docked"),[S,L]=we(o),[z,F]=we(null),[g,M]=we({w:p,h:s}),C=Le(null),N=Le(x);N.current=x;let m=Le(z);m.current=z;let w=Le(g);w.current=g;let O=Le(null);Vo(()=>(h?.dockWindow(e,o),()=>{h?.undockWindow(e)}),[]),Oi(()=>{h?.reportDockedSize(e,g.h)},[g.h]);let _=h?.zOrders[e]??101,l=!h||h.topId===e,k=()=>{let B=C.current?.offsetParent;return{cw:B?.clientWidth??9999,ch:B?.clientHeight??9999}},G=()=>{h?.focusWindow(e)},Y=B=>{if(B.button!==0)return;B.preventDefault();let D,H;if(N.current==="docked"){let j=C.current,fe=h?.containerRef?.current;if(j&&fe){let pe=j.getBoundingClientRect(),Z=fe.getBoundingClientRect();D=pe.left-Z.left,H=pe.top-Z.top}else D=Xo,H=h?.insetTop??0;h?.undockWindow(e),y("free"),F({x:D,y:H})}else D=m.current?.x??0,H=m.current?.y??0;O.current={mouseX:B.clientX,mouseY:B.clientY,posX:D,posY:H,hasDragged:!1},C.current?.setPointerCapture(B.pointerId),document.body.classList.add("rdd-dragging-active")},q=B=>D=>{if(D.button!==0)return;D.preventDefault(),D.stopPropagation();let H=0,j=0;if(N.current==="free")H=m.current?.x??0,j=m.current?.y??0;else{let pe=C.current,Z=pe?.offsetParent;if(pe&&Z){let ue=pe.getBoundingClientRect(),Te=Z.getBoundingClientRect();H=ue.left-Te.left,j=ue.top-Te.top}}let fe={x:H,y:j,w:w.current.w,h:w.current.h};nt({element:D.currentTarget,pointerId:D.pointerId,startClientX:D.clientX,startClientY:D.clientY,captureStart:()=>fe,activeClasses:[{el:document.body,classes:["rdd-resizing-active"]}],onMove:(pe,Z,ue)=>{let{cw:Te,ch:Se}=k(),{x:ke,y:Xe,w:Fe,h:_e}=Yt(B,pe,Z,ue,{minW:Zi,minH:Ui,maxW:Te-ue.x,maxH:Se-ue.y,minX:0,minY:0});M({w:Fe,h:_e}),N.current==="free"&&F({x:ke,y:Xe})}})},J=B=>{if(O.current){let D=O.current;if(!D.hasDragged){if(Math.abs(B.clientX-D.mouseX)+Math.abs(B.clientY-D.mouseY)<4)return;D.hasDragged=!0,h?.setDraggingId(e)}let{cw:H,ch:j}=k(),fe=Math.max(0,Math.min(D.posX+B.clientX-D.mouseX,H-w.current.w)),pe=Math.max(0,Math.min(D.posY+B.clientY-D.mouseY,j-w.current.h));F({x:fe,y:pe});let Z=h?.containerRef?.current;if(Z){let ue=_i(Z,B.clientX,B.clientY);h?.setHoveredZone(ue&&v?Gt(ue):ue)}}},U=()=>{if(O.current){let B=h?.hoveredZone;B&&(h?.dockWindow(e,B),L(B),y("docked"),F(null)),h?.setHoveredZone(null),h?.setDraggingId(null)}document.body.classList.remove("rdd-dragging-active"),O.current=null},me=()=>{O.current&&(h?.setHoveredZone(null),h?.setDraggingId(null)),document.body.classList.remove("rdd-dragging-active"),O.current=null},oe;if(x==="docked"&&h){let B=h.stacks[S]??[],D=B.indexOf(e),H=0;for(let j=0;j<D;j++)H+=(h.dockedSizes[B[j]]??s)+Ji;oe={width:g.w,height:g.h,zIndex:_,transition:"top 0.2s ease, bottom 0.2s ease",opacity:D===-1?0:void 0,pointerEvents:D===-1?"none":void 0},oe[S.endsWith("-right")?"insetInlineEnd":"insetInlineStart"]=Xo,S.startsWith("top-")?oe.top=h.insetTop+H:oe.bottom=h.insetBottom+H}else oe={left:z?.x??0,top:z?.y??0,width:g.w,height:g.h,zIndex:_};return Ze("div",{ref:C,dir:v?"rtl":"ltr",className:`rdd-panel-float${l?" rdd-panel-float--active":""}`,style:oe,onPointerDown:G,onPointerMove:J,onPointerUp:U,onPointerCancel:me,children:[Ze("div",{className:"rdd-panel-float__header",onPointerDown:Y,children:[n&&Q("span",{className:"rdd-panel-float__icon",children:n}),Q("span",{className:"rdd-panel-float__title",children:t}),Q("button",{type:"button",className:"rdd-panel-float__close",onClick:R,onPointerDown:B=>B.stopPropagation(),title:"Close","aria-label":"Close",children:Ze("svg",{width:"8",height:"8",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",children:[Q("line",{x1:"1",y1:"1",x2:"9",y2:"9"}),Q("line",{x1:"9",y1:"1",x2:"1",y2:"9"})]})})]}),Q("div",{className:"rdd-panel-float__body",children:I}),x==="free"&&Ze(Uo,{children:[Q("div",{className:"rdd-resize-handle rdd-resize-n",onPointerDown:q("n")}),Q("div",{className:"rdd-resize-handle rdd-resize-ne",onPointerDown:q("ne")}),Q("div",{className:"rdd-resize-handle rdd-resize-nw",onPointerDown:q("nw")})]}),Q("div",{className:"rdd-resize-handle rdd-resize-e",onPointerDown:q("e")}),Q("div",{className:"rdd-resize-handle rdd-resize-se",onPointerDown:q("se")}),Q("div",{className:"rdd-resize-handle rdd-resize-s",onPointerDown:q("s")}),Q("div",{className:"rdd-resize-handle rdd-resize-sw",onPointerDown:q("sw")}),Q("div",{className:"rdd-resize-handle rdd-resize-w",onPointerDown:q("w")})]})}function es(){let[e,t]=we(!1),n=Ye(()=>{t(!0)},[]),o=Ye(()=>{t(!1)},[]);return{isOpen:e,open:n,close:o}}var ts=[];function ns(){let e=mn(qo),t=e?.managedWindowIds??ts;return Dt(()=>({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{bt as ConfirmationForm,Rn as ContextMenu,Mn as ContextMenuProvider,It as DefaultContextMenuAdapter,Yr as DockableDesktopProvider,yn as FormContainerContext,ut as FormContainerProvider,oi as LeftPanelRenderer,Zr as ModalStackRenderer,On as PanelContributionProvider,Zo as PanelFloatingWindow,Hi as PanelOverlayRoot,Sn as PanelProvider,Qt as PanelRegistry,Mt as PanelRegistryClass,$i as PanelToolbar,Ki as PanelToolbarItem,Xi as PanelToolbarSeparator,ri as RightPanelRenderer,gi as SecondarySidebar,ii as SidePanelRenderer,_o as Sidebar,Di as ToastContainer,wi as Toolbar,Gi as ToolbarButton,qi as ToolbarCenter,an as ToolbarProvider,ji as ToolbarSearchInput,Vi as ToolbarSpacer,Yi as ToolbarToggle,Sr as WindowManager,xn as WindowManagerProvider,Dn as WorkspaceClient,Yt as computeResizedRect,Ft as defaultPredefinedMessages,ce as formatLabel,Tt as isSerializable,Eo as sidebarSectionToTab,nt as startPointerDrag,Ti as toast,An as useActivePanelContribution,En as useColorScheme,Rt as useFormContainer,We as useFormatMessage,Br as useMergedSidebarTabs,Hr as useMergedToolbarItems,ft as usePanelActions,lr as usePanelContext,dr as usePanelContextMenu,_r as usePanelContribution,es as usePanelFloatingWindow,ns as usePanelFloatingWindowManager,nn as usePanelId,nr as usePanelSize,tt as usePanelState,$e as usePredefinedMessages,_t as useRegistry,pr as useShowContextMenu,mi as useSidebar,fi as useSidebarTab,et as useStyleClasses,ln as useToolbar,Ht as useWindowManagerActions,ze as useWindowManagerState};
23
+ 3. Verify styles.css is imported \u2014 it anchors html, body, #root to 100% height.`)}mn({width:Math.max(100,f.width),height:Math.max(100,f.height)})});return p.observe(r),()=>{p.disconnect()}},[]),ve(()=>{let r=dt.width,y=dt.height;s.floating.forEach(p=>{let m=typeof p.width=="string"?parseFloat(p.width):p.width,f=typeof p.height=="string"?parseFloat(p.height):p.height,k=typeof p.x=="string"?parseFloat(p.x):p.x,z=typeof p.y=="string"?parseFloat(p.y):p.y,D=m,V=f,J=k,G=z,ne=!1;if(D>r&&(D=Math.max(200,r-20),ne=!0),V>y&&(V=Math.max(150,y-40),ne=!0),!p.anchor){let ae=r-100;J>ae&&(J=Math.max(0,ae),ne=!0);let re=y-40;G>re&&(G=Math.max(0,re),ne=!0)}ne&&P(p.id,{x:J,y:G,width:D,height:V})})},[dt,s.floating,P]),ve(()=>{let r=y=>{if(y.button!==0)return;let p=y.target;if(!p||typeof p.closest!="function")return;let m=p.closest(".rdd-floating-window");if(m){let k=m.getAttribute("data-window-id");k&&(C(k),T(k));return}let f=p.closest(".rdd-workspace-panel");if(f){let k=f.getAttribute("data-active-panel-id");k&&C(k)}};return document.addEventListener("pointerdown",r),()=>{document.removeEventListener("pointerdown",r)}},[T,C]);let hn=(r,y)=>{y.preventDefault();let p=s.floating.find(G=>G.id===r);if(!p||p.maximized)return;T(r);let m=y.currentTarget,f=m.closest(".rdd-floating-window"),k=y.clientX,z=y.clientY,D=f?f.offsetLeft:0,V=f?f.offsetTop:0,J=()=>{let G=ke.current,ne=qe.current,ae=Ke.current,re=Ee.current;if(re)P(r,{anchor:Ze?Gt(re):re});else if(ae)M(r,Je(ae));else if(ne){let se=ne.index;ne.side==="right"&&(se+=1),u(r,ne.leafId,se)}else G&&_(r,G.leafId,Je(G.position));Se(null),$e()};if(y.pointerType==="touch"){let G=y.pointerId,ne=!1,ae=()=>{ne=!0,clearTimeout(se),m.removeEventListener("pointermove",re),m.removeEventListener("pointerup",ae),m.removeEventListener("pointercancel",ae)},re=le=>{Math.hypot(le.clientX-k,le.clientY-z)>at&&ae()},se=setTimeout(()=>{if(ne)return;m.removeEventListener("pointermove",re),m.removeEventListener("pointerup",ae),m.removeEventListener("pointercancel",ae);try{m.setPointerCapture(G)}catch{return}m.classList.add("rdd-long-press-active"),document.body.classList.add("rdd-dragging-active"),N(r);let le=xt=>{let Ct=xt.clientX-k,wt=xt.clientY-z;P(r,{x:D+Ct,y:V+wt,anchor:null}),Dt(xt.clientX,xt.clientY)},xe=()=>{m.classList.remove("rdd-long-press-active"),document.body.classList.remove("rdd-dragging-active"),m.removeEventListener("pointermove",le),m.removeEventListener("pointerup",xe),m.removeEventListener("pointercancel",ct),J()},ct=()=>{m.classList.remove("rdd-long-press-active"),document.body.classList.remove("rdd-dragging-active"),m.removeEventListener("pointermove",le),m.removeEventListener("pointerup",xe),m.removeEventListener("pointercancel",ct),$e()};m.addEventListener("pointermove",le),m.addEventListener("pointerup",xe),m.addEventListener("pointercancel",ct)},st);m.addEventListener("pointermove",re),m.addEventListener("pointerup",ae),m.addEventListener("pointercancel",ae)}else{let G=!1,ne=se=>{let le=se.clientX-k,xe=se.clientY-z;!G&&(Math.abs(le)>5||Math.abs(xe)>5)&&(G=!0,N(r)),G&&P(r,{x:D+le,y:V+xe,anchor:null})},ae=()=>{document.body.classList.remove("rdd-dragging-active"),window.removeEventListener("pointermove",ne),window.removeEventListener("pointerup",ae),window.removeEventListener("pointercancel",re),G&&J()},re=()=>{document.body.classList.remove("rdd-dragging-active"),window.removeEventListener("pointermove",ne),window.removeEventListener("pointerup",ae),window.removeEventListener("pointercancel",re),G&&$e()};document.body.classList.add("rdd-dragging-active"),window.addEventListener("pointermove",ne),window.addEventListener("pointerup",ae),window.addEventListener("pointercancel",re)}},i=(r,y,p)=>{p.preventDefault(),p.stopPropagation();let m=s.floating.find(le=>le.id===r);if(!m||m.maximized)return;T(r);let f=p.currentTarget,k=f.closest(".rdd-floating-window"),z={x:k?k.offsetLeft:0,y:k?k.offsetTop:0,w:k?k.offsetWidth:400,h:k?k.offsetHeight:300},D=dt.width,V=dt.height,J=typeof m.x=="string"?parseFloat(m.x):m.x,G=typeof m.y=="string"?parseFloat(m.y):m.y,ne=typeof m.width=="string"?parseFloat(m.width):m.width,ae=typeof m.height=="string"?parseFloat(m.height):m.height,re=y==="se"&&Math.abs(J+ne-D)<4,se=y==="se"&&Math.abs(G+ae-V)<4;tt({element:f,pointerId:p.pointerId,startClientX:p.clientX,startClientY:p.clientY,captureStart:()=>z,activeClasses:[{el:document.body,classes:["rdd-resizing-active"]}],onMove:(le,xe,ct)=>{let xt=Yt(y,le,xe,ct,{minW:200,minH:150}),{x:Ct,y:wt,w:bn,h:vn}=xt;re&&(Ct=D-bn,Ct<0&&(Ct=0,bn=D)),se&&(wt=V-vn,wt<0&&(wt=0,vn=V)),P(r,{x:Ct,y:wt,width:bn,height:vn})}})},v=r=>{if(U.current){let y=r==="left"?-150:150;U.current.scrollBy({left:y,behavior:"smooth"})}},d=Ln(()=>{X.current&&clearTimeout(X.current),oe(!0)},[]),a=Ln(()=>{X.current=setTimeout(()=>oe(!1),400)},[]);ve(()=>{n==="autohide"&&s.minimized.length>K.current&&(X.current&&clearTimeout(X.current),oe(!0),X.current=setTimeout(()=>oe(!1),2e3)),K.current=s.minimized.length},[s.minimized.length,n]);let B=In();return ve(()=>(e?document.documentElement.setAttribute("data-workspace-skin",e):document.documentElement.removeAttribute("data-workspace-skin"),()=>{document.documentElement.removeAttribute("data-workspace-skin")}),[e]),ve(()=>(B==="light"?document.documentElement.setAttribute("data-color-scheme","light"):document.documentElement.removeAttribute("data-color-scheme"),()=>{document.documentElement.removeAttribute("data-color-scheme")}),[B]),ve(()=>(l?document.documentElement.classList.remove("rdd-no-animations"):document.documentElement.classList.add("rdd-no-animations"),()=>{document.documentElement.classList.remove("rdd-no-animations")}),[l]),ce("div",{className:`rdd-workspace${l?"":" rdd-no-animations"}`,"data-workspace-skin":e,"data-color-scheme":B,style:{display:"flex",flexDirection:"column",position:"relative",width:"100%",height:"100%",overflow:"hidden",userSelect:"none"},dir:s.dir,children:[ce("div",{ref:Pt,className:s.draggedPanelId?"rdd-dragging-active":void 0,style:{flexGrow:1,width:"100%",position:"relative",overflow:"hidden"},children:[s.draggedPanelId!==null&&ce(wo,{children:[S("div",{"data-edge-trigger":"left",className:"rdd-workspace-edge-trigger rdd-edge-trigger-left",onPointerEnter:()=>Pe("left"),onPointerLeave:()=>Pe(null)}),S("div",{"data-edge-trigger":"right",className:"rdd-workspace-edge-trigger rdd-edge-trigger-right",onPointerEnter:()=>Pe("right"),onPointerLeave:()=>Pe(null)}),S("div",{"data-edge-trigger":"top",className:"rdd-workspace-edge-trigger rdd-edge-trigger-top",onPointerEnter:()=>Pe("top"),onPointerLeave:()=>Pe(null)}),S("div",{"data-edge-trigger":"bottom",className:"rdd-workspace-edge-trigger rdd-edge-trigger-bottom",onPointerEnter:()=>Pe("bottom"),onPointerLeave:()=>Pe(null)})]}),s.draggedPanelId!==null&&["top-left","top-right","bottom-left","bottom-right"].map(r=>S("div",{className:`rdd-corner-zone rdd-corner-zone--${r}${ee===r?" rdd-corner-zone--hovered":""}`,onPointerEnter:()=>{Se(r),Pe(null)},onPointerLeave:()=>Se(null),"aria-hidden":"true"},r)),s.draggedPanelId!==null&&He!==null&&S("div",{className:"rdd-workspace-edge-preview",style:(()=>{let r=`${s.edgeSplitRatio*100}%`;switch(He){case"left":return{left:0,top:0,bottom:0,width:r};case"right":return{right:0,top:0,bottom:0,width:r};case"top":return{top:0,left:0,right:0,height:r};case"bottom":return{bottom:0,left:0,right:0,height:r}}})()}),S("div",{style:{width:"100%",height:"100%",overflow:"hidden",position:"relative"},children:s.gridRoot?S(So,{node:s.gridRoot,path:[],onTabRightClick:At,activeDropZone:me,onHoverDropZone:Ut,onTabDragStart:Jt,hoveredTab:Ue,onTabHover:Zt,defaultPanelIcon:t,onRequestClosePanel:I}):S("div",{className:"rdd-empty-workspace-grid",children:"Grid Empty"})}),s.floating.map(r=>{let y=s.panels[r.id];if(!y)return null;let p=r.maximized,m=s.draggedPanelId===r.id,f=s.activePanelId===r.id,z=E.get(y.component)?.defaultOptions;return ce("div",{"data-window-id":r.id,dir:s.dir,onPointerDownCapture:()=>{C(r.id),T(r.id)},className:`rdd-floating-window ${p?"rdd-maximized":""} ${f?"rdd-window-focused":""} ${$??""}`,style:(()=>{let J=typeof r.width=="number"?`${r.width}px`:r.width,G=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:m?"none":"auto"};if(r.anchor){let ne=s.floating.filter(xe=>xe.anchor===r.anchor&&!xe.maximized),ae=ne.findIndex(xe=>xe.id===r.id),re=8;for(let xe=0;xe<ae;xe++){let ct=typeof ne[xe].height=="number"?ne[xe].height:parseFloat(ne[xe].height);re+=ct+8}let se=r.anchor.startsWith("top");return{position:"absolute",[r.anchor.endsWith("-right")?"insetInlineEnd":"insetInlineStart"]:8,[se?"top":"bottom"]:re,width:J,height:G,zIndex:r.z,transition:m?"none":"top 0.2s ease, bottom 0.2s ease",pointerEvents:m?"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:J,height:G,zIndex:r.z,pointerEvents:m?"none":"auto"}})(),children:[ce("div",{onDoubleClick:()=>x(r.id),onPointerDown:D=>{z?.canDrag!==!1&&hn(r.id,D)},className:"rdd-floating-window-titlebar rdd-cursor-move",style:{cursor:p||z?.canDrag===!1?"default":"move"},children:[ce("span",{className:"rdd-floating-window-title",children:[S("span",{className:"rdd-window-title-icon",children:z?.icon||t||zn}),ce("span",{children:[ue(y.title,H),y.dirty?" *":""]})]}),ce("div",{className:"rdd-titlebar-actions",style:{gap:"var(--rdd-header-button-gap, 4px)"},onPointerDown:D=>D.stopPropagation(),children:[z?.renderHeaderActions&&S("div",{className:"rdd-window-header-actions",children:z.renderHeaderActions(r.id)}),A(r.id).length>0&&S("button",{type:"button",className:"rdd-custom-tab-btn rdd-btn-more-actions",title:"More actions",onClick:D=>{D.stopPropagation();let V=A(r.id);V.length!==0&&g({event:D,items:V})},children:ce("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"currentColor",style:{display:"block"},children:[S("circle",{cx:"12",cy:"5",r:"2"}),S("circle",{cx:"12",cy:"12",r:"2"}),S("circle",{cx:"12",cy:"19",r:"2"})]})}),S("button",{type:"button",title:p?ue(c.restoreSize,H):ue(c.maximize,H),onClick:()=>x(r.id),className:"rdd-custom-tab-btn rdd-btn-maximize-tab",children:S("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:S("rect",{x:"4",y:"4",width:"16",height:"16",rx:"1.5"})})}),z?.canMinimize!==!1&&S("button",{type:"button",title:ue(c.minimize,H),onClick:()=>w(r.id),className:"rdd-custom-tab-btn rdd-btn-minimize-tab",children:S("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"3",children:S("path",{d:"M5 12h14"})})}),z?.canClose!==!1&&S("button",{type:"button",title:ue(c.close,H),onClick:()=>I(r.id),className:"rdd-custom-tab-btn rdd-btn-close-tab",children:S("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"3",children:S("path",{d:"M18 6L6 18M6 6l12 12"})})})]})]}),S("div",{className:Y??void 0,style:{flexGrow:1,width:"100%",overflow:"hidden",position:"relative",isolation:"isolate"},children:S(To,{panelId:r.id},r.id)}),!p&&ce(wo,{children:[S("div",{onPointerDown:D=>i(r.id,"n",D),className:"rdd-resize-handle rdd-resize-n"}),S("div",{onPointerDown:D=>i(r.id,"ne",D),className:"rdd-resize-handle rdd-resize-ne"}),S("div",{onPointerDown:D=>i(r.id,"e",D),className:"rdd-resize-handle rdd-resize-e"}),S("div",{onPointerDown:D=>i(r.id,"se",D),className:"rdd-resize-handle rdd-resize-se"}),S("div",{onPointerDown:D=>i(r.id,"s",D),className:"rdd-resize-handle rdd-resize-s"}),S("div",{onPointerDown:D=>i(r.id,"sw",D),className:"rdd-resize-handle rdd-resize-sw"}),S("div",{onPointerDown:D=>i(r.id,"w",D),className:"rdd-resize-handle rdd-resize-w"}),S("div",{onPointerDown:D=>i(r.id,"nw",D),className:"rdd-resize-handle rdd-resize-nw"})]})]},r.id)})]}),(n==="always"||s.minimized.length>0)&&ce("div",{className:["rdd-taskbar-footer-container",`rdd-taskbar-mode-${n}`,n==="autohide"&&fe?"rdd-taskbar-expanded":""].filter(Boolean).join(" "),style:{height:"48px",zIndex:100},onPointerEnter:n==="autohide"?d:void 0,onPointerLeave:n==="autohide"?a:void 0,children:[n==="autohide"&&S("div",{className:"rdd-taskbar-peek-handle"}),S("button",{type:"button",onClick:()=>v("left"),className:"rdd-taskbar-nav-btn",style:{display:s.minimized.length>4?"block":"none"},children:"\u25C0"}),S("div",{ref:U,className:"rdd-taskbar-items-container",style:{scrollSnapType:"x mandatory"},children:s.minimized.map(r=>{let p=E.get(r.component)?.defaultOptions?.icon||t||zn;return S("div",{onClick:()=>{de.current!=="touch"&&(O(null),h(r.id))},onContextMenu:m=>lt(r.id,m),onPointerDown:m=>{if(de.current=m.pointerType,m.pointerType!=="touch")return;let f=m.currentTarget,k=m.clientX,z=m.clientY,D=m.pointerId,V=!1,J=()=>{V=!0,clearTimeout(ae),f.removeEventListener("pointermove",ne),f.removeEventListener("pointerup",G),f.removeEventListener("pointercancel",J)},G=()=>{J();let re=f.getBoundingClientRect();W?.id===r.id?(h(r.id),O(null)):O({id:r.id,rect:re,title:r.title,component:r.component,fromTouch:!0})},ne=re=>{Math.hypot(re.clientX-k,re.clientY-z)>at&&J()},ae=setTimeout(()=>{if(V)return;f.removeEventListener("pointermove",ne),f.removeEventListener("pointerup",G),f.removeEventListener("pointercancel",J);try{f.setPointerCapture(D)}catch{return}navigator.vibrate&&navigator.vibrate(10);let re=se=>{f.removeEventListener("pointerup",re),f.removeEventListener("pointercancel",re),lt(r.id,se)};f.addEventListener("pointerup",re),f.addEventListener("pointercancel",re)},st);f.addEventListener("pointermove",ne),f.addEventListener("pointerup",G),f.addEventListener("pointercancel",J)},onPointerEnter:m=>{if(m.pointerType==="touch"||pe)return;q.current&&clearTimeout(q.current);let f=m.currentTarget.getBoundingClientRect();m.clientX>=f.left&&m.clientX<=f.right&&m.clientY>=f.top&&m.clientY<=f.bottom&&O({id:r.id,rect:f,title:r.title,component:r.component})},onPointerLeave:m=>{m.pointerType!=="touch"&&(q.current=setTimeout(()=>{O(null)},150))},className:"rdd-taskbar-glassmorphic-item",style:{backdropFilter:"blur(6px)",transition:"all 0.2s",cursor:"pointer",scrollSnapAlign:"start",width:"38px",height:"38px",position:"relative",padding:0},children:S("span",{className:"rdd-taskbar-item-icon",children:p})},r.id)})}),W&&Co(ce("div",{className:"rdd-taskbar-item-tooltip",dir:s.dir,style:{position:"fixed",left:`${W.rect.left+W.rect.width/2}px`,top:`${W.rect.top-8}px`,transform:"translateX(-50%) translateY(-100%)",opacity:1,pointerEvents:"auto",zIndex:999999},onPointerEnter:()=>{q.current&&clearTimeout(q.current)},onPointerLeave:r=>{r.pointerType!=="touch"&&O(null)},onClick:()=>{h(W.id),O(null)},onContextMenu:r=>lt(W.id,r),onPointerDown:r=>{if(r.pointerType!=="touch")return;let y=W.id,p=r.currentTarget,m=r.clientX,f=r.clientY,k=r.pointerId,z=!1,D=()=>{z=!0,clearTimeout(J),p.removeEventListener("pointermove",V),p.removeEventListener("pointerup",D),p.removeEventListener("pointercancel",D)},V=G=>{Math.hypot(G.clientX-m,G.clientY-f)>at&&D()},J=setTimeout(()=>{if(z)return;p.removeEventListener("pointermove",V),p.removeEventListener("pointerup",D),p.removeEventListener("pointercancel",D);try{p.setPointerCapture(k)}catch{return}navigator.vibrate&&navigator.vibrate(10);let G=ne=>{p.removeEventListener("pointerup",G),p.removeEventListener("pointercancel",G),lt(y,ne)};p.addEventListener("pointerup",G),p.addEventListener("pointercancel",G)},st);p.addEventListener("pointermove",V),p.addEventListener("pointerup",D),p.addEventListener("pointercancel",D)},children:[ce("div",{className:"rdd-tooltip-header-row",children:[ce("span",{className:"rdd-tooltip-title-text rdd-text-truncate",style:{maxWidth:"140px"},children:[ue(W.title,H),s.panels[W.id]?.dirty?" *":""]}),S("span",{onClick:r=>{r.stopPropagation(),I(W.id),O(null)},title:ue(c.closePanel,H),className:"rdd-tooltip-close-x",children:S("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:S("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),S(Mr,{panelId:W.id})]}),document.body),S("button",{type:"button",onClick:()=>v("right"),className:"rdd-taskbar-nav-btn",style:{display:s.minimized.length>4?"block":"none"},children:"\u25B6"})]}),Object.keys(s.panels).map(r=>{let y=s.panels[r];if(!y)return null;let p=Mo(r);return Co(S(Tr,{panelId:r,children:S("div",{style:{width:"100%",height:"100%"},dir:s.dir,children:Rr(r,y,E)})}),p,r)}),j===null&&S(o.Component,{ref:Q,theme:"dark",formatMessageProvider:H,onShow:()=>Z(!0),onHide:()=>Z(!1)}),s.draggedPanelId!==null&&!s.floating.some(r=>r.id===s.draggedPanelId)&&ce("div",{className:"rdd-drag-ghost-tab",style:{left:Ve.x+12,top:Ve.y+12,zIndex:1e5},children:["\u{1F4C4} ",ue(s.panels[s.draggedPanelId]?.title,H)||"Tab"]})]})},Er=kr;var Dn=class{registry;initialState;config;_actions=null;_initialized=!1;_pendingCalls=[];_pendingOpenPanelIds=new Set;_pendingSubscriptions=[];_disconnectedWarnTimer=null;constructor(t={}){if(this.registry=new Mt,this.initialState=t.initialState??null,this.config={formatMessage:t.formatMessage,predefinedMessages:t.predefinedMessages,dir:t.dir,defaultSplitRatio:t.defaultSplitRatio,defaultEdgeSplitRatio:t.defaultEdgeSplitRatio,zIndexBase:t.zIndexBase},t.panels)for(let[n,o]of Object.entries(t.panels))this.registry.register(n,o.component,o.defaultOptions)}_connect(t){this._actions=t,this._disconnectedWarnTimer!==null&&(clearTimeout(this._disconnectedWarnTimer),this._disconnectedWarnTimer=null),this._initialized||(this._initialized=!0);for(let o of this._pendingSubscriptions)o.unsub=t.subscribe(o.event,o.callback);let n=this._pendingCalls.splice(0);for(let o of n)o(t)}_disconnect(){this._actions=null;for(let t of this._pendingSubscriptions)t.unsub?.(),t.unsub=null}get isConnected(){return this._actions!==null}_startWarnTimer(){this._disconnectedWarnTimer===null&&(this._disconnectedWarnTimer=setTimeout(()=>{!this.isConnected&&this._pendingCalls.length>0&&console.error("[react-dockable-desktop] WorkspaceClient has "+this._pendingCalls.length+" queued call(s) but was never connected to a WindowManagerProvider. Did you forget client={workspace} on <WindowManagerProvider>?")},process.env.NODE_ENV==="production"?5e3:1e3))}_dispatch(t){this._actions?t(this._actions):(this._pendingCalls.push(t),this._startWarnTimer())}_subscribeRaw(t,n){if(this._actions)return this._actions.subscribe(t,n);let o={event:t,callback:n,unsub:null};return this._pendingSubscriptions.push(o),()=>{o.unsub?.(),o.unsub=null;let l=this._pendingSubscriptions.indexOf(o);l!==-1&&this._pendingSubscriptions.splice(l,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(l=>l.dockPanelToGroup(t,n,o))}movePanelOrder(t,n,o){this._dispatch(l=>l.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(l=>l.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 Xr}from"react";import{createContext as Ir,useContext as Lr,useMemo as zr,useState as ko}from"react";import{jsx as Nr}from"react/jsx-runtime";var Eo=Ir(null),an=({children:e})=>{let[t,n]=ko({}),[o,l]=ko({}),s=zr(()=>({getActiveInGroup:E=>t[E]??null,setActiveInGroup:(E,h)=>n(w=>({...w,[E]:h})),isModifierActive:E=>o[E]??!1,setModifierActive:(E,h)=>l(w=>({...w,[E]:h})),toggleModifier:E=>l(h=>({...h,[E]:!h[E]}))}),[t,o]);return Nr(Eo.Provider,{value:s,children:e})};function ln(){let e=Lr(Eo);if(!e)throw new Error("useToolbar must be used within DockableDesktopProvider");return e}import{createContext as Wr,useCallback as Dr,useContext as Io,useLayoutEffect as Or,useMemo as Ar,useRef as Fr,useSyncExternalStore as _r}from"react";import{jsx as Yr}from"react/jsx-runtime";function Hr(){let e=new Map,t=new Set,n=()=>t.forEach(o=>o());return{publish(o,l){return e.set(o,l),n(),()=>{e.get(o)===l&&(e.delete(o),n())}},get(o){return e.get(o)??null},subscribe(o){return t.add(o),()=>t.delete(o)}}}var On=Wr(null),An=({children:e})=>{let t=Ar(()=>Hr(),[]);return Yr(On.Provider,{value:t,children:e})};function Br(e){let t=nn(),n=Io(On),o=Fr(null);if(!n)throw new Error("usePanelContribution must be used within PanelContributionProvider");Or(()=>{if(n)return o.current?.(),o.current=n.publish(t,e),()=>{o.current?.(),o.current=null}},[n,t,e])}function Fn(){let e=ze(l=>l.activePanelId),t=Io(On);if(!t)throw new Error("useActivePanelContribution must be used within PanelContributionProvider");let n=Dr(l=>t?t.subscribe(l):()=>{},[t]),o=()=>t&&e?t.get(e):null;return _r(n,o,o)}function Lo(e,t=null){return{id:e.id,label:e.label,icon:e.icon??t,renderContent:()=>e.content}}function $r(e){let t=Fn();return t?.toolbarItems?.length?[...e,{type:"separator"},...t.toolbarItems]:e}function Gr(e,t=null){let n=Fn();return n?.sidebarSections?.length?[...e,...n.sidebarSections.map(o=>Lo(o,t))]:e}import{jsx as Vt}from"react/jsx-runtime";var Vr=({contextMenuAdapter:e=It,...t})=>{let n=Xr(Lt),o=Vt(an,{children:Vt(Cn,{...t,children:Vt(An,{children:Vt(kn,{children:t.children})})})});return n!==null?o:Vt(Tn,{adapter:e,formatMessageProvider:t.formatMessage,children:o})};import{useCallback as Kt,useRef as zo,useEffect as Kr,useState as qr,useMemo as jr}from"react";import{Fragment as Qr,jsx as Fe,jsxs as _n}from"react/jsx-runtime";var Zr=({modal:e,index:t,isTopmost:n})=>{let{close:o,openModal:l,updateInstance:s,setDirty:E}=mt(),h=Oe(),w=Ge(),{dir:b}=ze(),{modalClass:x,modalBodyClass:P}=Qe(),T=zo(null),{id:L,Component:N,props:_,options:u,dirty:M,dirtyOptions:C}=e,A=u,[g,R]=qr(A.icon||null),F=zo(A);F.current=A;let H=ue(A.title,h),c=Kt(async O=>{if(O?.force){o(L);return}if(T.current){if(!await T.current())return;o(L);return}if(M){l(bt,{title:C?.title||w.unsavedChangesTitle,message:C?.message||{id:w.unsavedChangesMessage.id,defaultMessage:w.unsavedChangesMessage.defaultMessage,values:{title:H}},alert:C?.alert,alertType:C?.alertType||"danger",useYesNoTitles:!0,onOK:()=>o(L)},{size:"small"});return}o(L)},[o,l,L,M,C,H,w]),I=Kt((O,q)=>E(L,O,q),[E,L]),$=Kt(O=>s(L,{options:{...F.current,title:O}}),[s,L]),Y=Kt(O=>R(O),[]),j=Kt(O=>(T.current=O,()=>{T.current=null}),[]),Q=jr(()=>({requestClose:c,setDirty:I,setTitle:$,setIcon:Y,onCloseRequested:j,containerType:"modal",instanceId:L}),[c,I,$,Y,j,L]),U=M?`${H} *`:H,fe=A.size?`rdd-modal-size-${A.size}`:"rdd-modal-size-auto",oe=A.closable!==!1,X=A.bodyPadding,K=X!=null?typeof X=="number"?`${X}px`:X:void 0;Kr(()=>{if(!n||!oe)return;let O=q=>{q.key==="Escape"&&(q.stopPropagation(),c())};return document.addEventListener("keydown",O),()=>document.removeEventListener("keydown",O)},[c,oe,n]);let W=`calc(var(--rdd-z-base, 1000) + 9000 + ${t*10})`;return _n("div",{className:"rdd-modal-overlay",style:{zIndex:W},dir:b,children:[Fe("div",{className:"rdd-modal-curtain",onClick:oe?()=>c():void 0}),_n("div",{className:`rdd-modal-window ${fe} ${x??""}`,children:[_n("div",{className:"rdd-modal-header",children:[g&&Fe("div",{className:"rdd-modal-icon",children:g}),Fe("h4",{className:"rdd-modal-title",children:U}),oe&&Fe("button",{className:"rdd-modal-close-button",onClick:()=>c(),title:h(w.closeTooltip),type:"button",children:Fe("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:Fe("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),Fe("div",{className:`rdd-modal-body ${P??""}`,style:K!=null?{padding:K}:void 0,children:Fe(ut,{value:Q,children:Fe(N,{..._,panelId:L})})})]})]})},Ur=()=>{let{modals:e}=et();return e.length===0?null:Fe(Qr,{children:e.map((t,n)=>Fe(Zr,{modal:t,index:n,isTopmost:n===e.length-1},t.id))})},Jr=Ur;import{useCallback as Nt,useRef as Hn,useEffect as Wo,useState as ni,useMemo as oi}from"react";import{useLayoutEffect as ei,useState as ti}from"react";function No(e){let[t,n]=ti(null);return ei(()=>{let o=e.current?.parentElement;if(!o)return;let l=()=>{let E=o.getBoundingClientRect();n({top:E.top,left:E.left,right:window.innerWidth-E.right,height:E.height})};l();let s=new ResizeObserver(l);return s.observe(o),window.addEventListener("resize",l),()=>{s.disconnect(),window.removeEventListener("resize",l)}},[e]),t}import{Fragment as li,jsx as Re,jsxs as Bn}from"react/jsx-runtime";var dn=({panel:e,position:t,defaultWidth:n,containerRect:o})=>{let{close:l,openModal:s,updateInstance:E,setDirty:h,registerCloseHandler:w,unregisterCloseHandler:b}=mt(),{modals:x}=et(),P=Oe(),T=Ge(),{dir:L}=ze(),{sidePanelClass:N,sidePanelBodyClass:_}=Qe(),u=Hn(null),{id:M,Component:C,props:A,options:g,dirty:R,dirtyOptions:F}=e,H=g,[c,I]=ni(H.icon||null),$=Hn(H);$.current=H;let Y=ue(H.title,P),j=Nt(async Z=>{if(Z?.force){l(M);return}if(u.current){if(!await u.current())return;l(M);return}if(R){s(bt,{title:F?.title||T.unsavedChangesTitle,message:F?.message||{id:T.unsavedChangesMessage.id,defaultMessage:T.unsavedChangesMessage.defaultMessage,values:{title:Y}},alert:F?.alert,alertType:F?.alertType||"danger",useYesNoTitles:!0,onOK:()=>l(M)},{size:"small"});return}l(M)},[l,s,M,R,F,Y,T]),Q=Nt(async()=>u.current?await u.current():!R,[R]);Wo(()=>(w(M,Q),()=>b(M)),[M,Q,w,b]);let U=Nt((Z,pe)=>h(M,Z,pe),[h,M]),fe=Nt(Z=>E(M,{options:{...$.current,title:Z}}),[E,M]),oe=Nt(Z=>I(Z),[]),X=Nt(Z=>(u.current=Z,()=>{u.current=null}),[]),K=oi(()=>({requestClose:j,setDirty:U,setTitle:fe,setIcon:oe,onCloseRequested:X,containerType:t==="left"?"left-panel":"right-panel",instanceId:M}),[j,U,fe,oe,X,t,M]),W=R?`${Y} *`:Y;Wo(()=>{let Z=pe=>{pe.key==="Escape"&&x.length===0&&j()};return document.addEventListener("keydown",Z),()=>document.removeEventListener("keydown",Z)},[j,x.length]);let O=H.width||n||400,q=typeof O=="number"?`${O}px`:O,de=H.bodyPadding,ye=de!=null?typeof de=="number"?`${de}px`:de:void 0;return Re("div",{className:`rdd-side-panel rdd-side-panel-${t} rdd-side-panel-visible ${N??""}`,style:{width:q,...o?{top:o.top,height:o.height,bottom:"auto",...t==="right"?{right:o.right}:{left:o.left}}:{}},dir:L,children:Bn("div",{className:"rdd-side-panel-window",children:[Bn("div",{className:"rdd-side-panel-header",children:[c&&Re("div",{className:"rdd-side-panel-icon",children:c}),Re("h4",{className:"rdd-side-panel-title",children:W}),Re("button",{className:"rdd-side-panel-close-button",onClick:()=>j(),title:P(T.closeTooltip),type:"button",children:Re("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:Re("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),Re("div",{className:`rdd-side-panel-body ${_??""}`,style:ye!=null?{padding:ye}:void 0,children:Re(ut,{value:K,children:Re(C,{...A,panelId:M})})})]})})},$n=({children:e})=>{let t=Hn(null),n=No(t);return Re("div",{ref:t,style:{display:"contents"},children:e(n)})},ri=({defaultWidth:e})=>{let{leftPanel:t,rightPanel:n}=et();return Re($n,{children:o=>Bn(li,{children:[t&&Re(dn,{panel:t,position:"left",defaultWidth:e,containerRect:o},t.id),n&&Re(dn,{panel:n,position:"right",defaultWidth:e,containerRect:o},n.id)]})})},ii=({defaultWidth:e})=>{let{leftPanel:t}=et();return Re($n,{children:n=>t?Re(dn,{panel:t,position:"left",defaultWidth:e,containerRect:n},t.id):null})},si=({defaultWidth:e})=>{let{rightPanel:t}=et();return Re($n,{children:n=>t?Re(dn,{panel:t,position:"right",defaultWidth:e,containerRect:n},t.id):null})},ai=ri;import di,{useState as cn,useEffect as un,useRef as Gn,useCallback as pn,useImperativeHandle as ci,useContext as Xn,useMemo as ot,createContext as Fo,forwardRef as _o,memo as ui}from"react";import{jsx as ge,jsxs as gn}from"react/jsx-runtime";function Yn(e){return"renderContent"in e}function pi(e){return"render"in e}function Do(e){return e==null?[]:Array.isArray(e)?e:[e]}var Vn=Fo(null),Ho=Fo(null);function gi({tabId:e,onClose:t,onOpen:n,setActiveTabId:o,children:l}){let s=ot(()=>({tabId:e,onClose:t,onOpen:n,openTab:E=>o(E)}),[e,t,n,o]);return ge(Ho.Provider,{value:s,children:l})}function Oo(e,t,n,o){if(pi(e))return ge(di.Fragment,{children:e.render()},e.id??t);if(Yn(e)){if(e.hidden)return null;let l=n===e.id;return ge("button",{type:"button",onClick:()=>o(e.id),className:`rdd-sidebar-tab-btn${l?" rdd-active":""}`,title:e.label,"aria-pressed":l,children:e.icon},e.id)}return ge("button",{type:"button",onClick:e.onClick,disabled:e.disabled,className:"rdd-sidebar-tab-btn rdd-sidebar-header-action-btn",title:e.label,"aria-label":e.label,children:e.icon},e.id??t)}var Ao=ui(function({tabs:t,headerEntries:n,footerEntries:o,activeTabId:l,isVisible:s,position:E,onTabClick:h}){return ge("div",{style:{width:s?"56px":"0px",height:"100%",overflow:"hidden",transition:"width 0.25s cubic-bezier(0.4, 0, 0.2, 1)",flexShrink:0},children:gn("div",{className:`rdd-sidebar-tabs-strip rdd-${E}${n.length?" rdd-sidebar-tabs-strip--has-header-action":""}${o.length?" rdd-sidebar-tabs-strip--has-footer-action":""}`,style:{width:"56px",height:"100%"},children:[n.length>0&&ge("div",{className:"rdd-sidebar-header-area",children:n.map((w,b)=>Oo(w,b,l,h))}),ge("div",{className:"rdd-sidebar-tabs-list",children:t.map(w=>{if(w.hidden)return null;let b=l===w.id;return ge("button",{type:"button",onClick:()=>h(w.id),className:`rdd-sidebar-tab-btn${b?" rdd-active":""}`,title:w.label,"aria-pressed":b,children:w.icon},w.id)})}),o.length>0&&ge("div",{className:"rdd-sidebar-footer-area",children:o.map((w,b)=>Oo(w,b,l,h))})]})})});function fi({position:e,currentWidth:t,minWidth:n,maxWidth:o,onWidthChange:l,onResizeStart:s,onResizeEnd:E}){return ge("div",{className:"rdd-resizer-bar",style:{cursor:"col-resize",width:"1px",height:"100%",flexShrink:0,zIndex:20},onPointerDown:w=>{w.preventDefault();let b=w.currentTarget,x=[{el:b,classes:["rdd-active"]},{el:document.body,classes:["rdd-resizing-active","rdd-resizing-col-active"]}];s(),tt({element:b,pointerId:w.pointerId,startClientX:w.clientX,startClientY:w.clientY,captureStart:()=>t,activeClasses:x,onMove:(P,T,L)=>{let N=e==="right"?L-P:L+P;l(Math.max(n,Math.min(o,N)))},onEnd:()=>E()})}})}var Bo=_o(function({position:t="right",tabs:n,headerAction:o,footerAction:l,defaultWidth:s,minWidth:E=150,maxWidth:h=600,onWidthChange:w,activeTabId:b,onActiveTabChange:x,visible:P,onVisibilityChange:T,stripVisible:L,onStripVisibilityChange:N,showCloseButton:_=!1,hideDefaultHeader:u=!1,renderHeader:M,isSecondary:C=!1,children:A},g){let R=b!==void 0,[F,H]=cn(()=>s??280),c=pn(ee=>{H(ee),w?.(ee)},[w]),[I,$]=cn(!1),[Y,j]=cn(null),Q=R?b:Y,U=ot(()=>Do(o),[o]),fe=ot(()=>Do(l),[l]),oe=ot(()=>U.filter(Yn),[U]),X=ot(()=>fe.filter(Yn),[fe]),K=ot(()=>[...oe,...n,...X],[oe,n,X]),[W,O]=cn(()=>new Set),q=ot(()=>{let ee=new Set(W);Q&&ee.add(Q);for(let Te of K)Te.eagerMount&&ee.add(Te.id);return ee},[W,Q,K]),de=Gn(Q??null);un(()=>{de.current=Q??null},[Q]);let ye=Gn(F);un(()=>{ye.current=F},[F]);let Z=pn(ee=>{O(ee!==null?Te=>{if(Te.has(ee))return Te;let Ee=new Set(Te);return Ee.add(ee),Ee}:Te=>{let Ee=!1,Se=new Set(Te);for(let Ze of Te){let Ue=K.find(Be=>Be.id===Ze);Ue&&!Ue.eagerMount&&!Ue.preserveState&&(Se.delete(Ze),Ee=!0)}return Ee?Se:Te}),R||j(ee),x?.(ee)},[R,x,K]);un(()=>{Q!=null&&!K.some(ee=>ee.id===Q)&&Z(null)},[Q,K,Z]),ci(g,()=>({openTab:ee=>Z(ee),closeDrawer:()=>Z(null),getActiveTab:()=>de.current,show:()=>T?.(!0),hide:()=>T?.(!1),toggle:()=>T?.(P===!1),showStrip:()=>N?.(!0),hideStrip:()=>N?.(!1),setWidth:ee=>c(Math.max(E,Math.min(h,ee))),getWidth:()=>ye.current}),[Z,P,T,N,c,E,h]);let pe=pn(ee=>{Z(Q===ee?null:ee)},[Q,Z]),me=pn(()=>Z(null),[Z]),we=u||M!=null,ke=Gn(!1);un(()=>{process.env.NODE_ENV==="development"&&(!_||!we||ke.current||(ke.current=!0,console.warn('[react-dockable-desktop] `showCloseButton` has no effect because the default header is suppressed (`hideDefaultHeader` is set, or `renderHeader` was passed). The "X" close button only renders as part of the library\'s own default header, which is skipped in this case. Add your own close control inside `renderHeader` (or `renderContent`), wired to its `onClose` parameter or `useSidebarTab().onClose`.')))},[_,we]);let Ve=ot(()=>({openTab:ee=>Z(ee),closeDrawer:()=>Z(null),getActiveTab:()=>de.current,position:t,isSecondary:C}),[Z,t,C]),_e=P!==!1,He=_e&&L!==!1,We=_e&&Q!=null,Ke=ge("div",{className:`rdd-sidebar-content-drawer rdd-${t}`,style:{flexBasis:We?`${F}px`:"0px",flexShrink:1,flexGrow:0,minWidth:We?`${E}px`:"0px",maxWidth:We?`${h}px`:"0px",overflow:"hidden",transition:I?"none":"flex-basis 0.2s cubic-bezier(0.4, 0, 0.2, 1), min-width 0.2s cubic-bezier(0.4, 0, 0.2, 1), max-width 0.2s cubic-bezier(0.4, 0, 0.2, 1)"},children:K.map(ee=>{if(!q.has(ee.id))return null;let Ee=Q===ee.id,Se=()=>Z(ee.id);return gn("div",{style:{display:Ee?"flex":"none",flexDirection:"column",height:"100%",width:"100%"},children:[we?M?.(ee,me,Se):gn("div",{className:"rdd-sidebar-drawer-header",children:[ge("span",{className:"rdd-sidebar-header-title",children:ee.label}),_&&ge("button",{type:"button",className:"rdd-sidebar-drawer-close-button",onClick:me,title:"Close","aria-label":"Close",children:ge("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:ge("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),ge("div",{className:"rdd-sidebar-drawer-body",children:ge(gi,{tabId:ee.id,onClose:me,onOpen:Se,setActiveTabId:Z,children:ee.renderContent(ee.id,me,Se)})})]},ee.id)})}),Pe=We?ge(fi,{position:t,currentWidth:F,minWidth:E,maxWidth:h,onWidthChange:c,onResizeStart:()=>$(!0),onResizeEnd:()=>$(!1)}):null;return ge(Vn.Provider,{value:Ve,children:gn("div",{style:{display:"flex",flexDirection:"row",width:"100%",height:"100%",overflow:"hidden"},children:[t==="left"&&ge(Ao,{tabs:n,headerEntries:U,footerEntries:fe,activeTabId:Q,isVisible:He,position:t,onTabClick:pe}),t==="left"&&Ke,t==="left"&&Pe,ge("div",{style:{flex:"1 1 0%",minWidth:0,overflow:"hidden"},children:A}),t==="right"&&Pe,t==="right"&&Ke,t==="right"&&ge(Ao,{tabs:n,headerEntries:U,footerEntries:fe,activeTabId:Q,isVisible:He,position:t,onTabClick:pe})]})})}),mi=_o(function(t,n){let o=Xn(Vn);if(!o)throw new Error("SecondarySidebar must be rendered inside a primary Sidebar's children");if(o.isSecondary)throw new Error("SecondarySidebar cannot be nested inside another SecondarySidebar");let l=o.position==="left"?"right":"left";return ge(Bo,{ref:n,...t,position:l,isSecondary:!0})});function hi(){let e=Xn(Vn);if(!e)throw new Error("useSidebar must be used within Sidebar");return e}function bi(){let e=Xn(Ho);if(!e)throw new Error("useSidebarTab must be used within a Sidebar tab renderContent tree");return e}import{forwardRef as vi,useImperativeHandle as yi,useState as $o,useRef as Go,useEffect as Yo,useLayoutEffect as Pi}from"react";import{createPortal as xi}from"react-dom";import{Fragment as Ti,jsx as Ne,jsxs as Xo}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 wi({item:e,position:t,toolbar:n}){let[o,l]=$o(!1),[s,E]=$o(null),h=Go(null),w=Go(null),b=e.activeItemId!==void 0,x=b?e.activeItemId:n.getActiveInGroup(e.id),P=e.items.find(u=>!("type"in u)&&u.id===x),T=x!==null,L=P?.icon??e.defaultIcon,N=P?.label??e.label,_=()=>{e.disabled||(!o&&h.current&&E(h.current.getBoundingClientRect()),l(u=>!u))};return Pi(()=>{if(!o||!w.current)return;let u=w.current,M=u.getBoundingClientRect(),C=8;M.right>window.innerWidth-C&&(u.style.left=`${Math.max(C,window.innerWidth-M.width-C)}px`,u.style.right="auto"),M.left<C&&(u.style.left=`${C}px`,u.style.right="auto"),M.bottom>window.innerHeight-C&&(u.style.top=`${Math.max(C,window.innerHeight-M.height-C)}px`,u.style.bottom="auto"),M.top<C&&(u.style.top=`${C}px`,u.style.bottom="auto")},[o]),Yo(()=>{if(!o)return;let u=M=>{let C=M.target;h.current?.contains(C)||w.current?.contains(C)||l(!1)};return document.addEventListener("mousedown",u),()=>document.removeEventListener("mousedown",u)},[o]),Yo(()=>{if(!o)return;let u=M=>{M.key==="Escape"&&l(!1)};return document.addEventListener("keydown",u),()=>document.removeEventListener("keydown",u)},[o]),Xo(Ti,{children:[Ne("button",{ref:h,type:"button",className:`rdd-toolbar-btn rdd-toolbar-btn-group${T?" rdd-active":""}`,title:N,"aria-label":N,"aria-expanded":o,"aria-haspopup":"menu",disabled:e.disabled,onClick:_,children:L}),o&&s&&xi(Ne("div",{ref:w,className:`rdd-toolbar-group-flyout rdd-${t}`,style:Ci(s,t,document.documentElement.dir==="rtl"),role:"menu",children:e.items.map((u,M)=>{if("type"in u)return Ne("div",{className:"rdd-toolbar-group-flyout-sep",role:"separator"},`sep-${M}`);let C=x===u.id;return Xo("button",{type:"button",className:`rdd-toolbar-group-flyout-item${C?" rdd-active":""}`,disabled:u.disabled,role:"menuitem","aria-pressed":C,onClick:()=>{b?e.onActiveItemChange?.(u.id):n.setActiveInGroup(e.id,u.id),u.onActivate?.(u.id),l(!1)},children:[Ne("span",{className:"rdd-toolbar-group-flyout-icon",children:u.icon}),Ne("span",{className:"rdd-toolbar-group-flyout-label",children:u.label}),u.shortcut&&Ne("span",{className:"rdd-toolbar-group-flyout-shortcut",children:u.shortcut})]},u.id)})}),document.body)]})}function Ri(e,t,n,o){switch(e.type){case"separator":return Ne("div",{className:"rdd-toolbar-separator",role:"separator"},`sep-${t}`);case"action":return Ne("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 l=n.getActiveInGroup(e.group)===e.id;return Ne("button",{type:"button",className:`rdd-toolbar-btn rdd-toolbar-btn-radio${l?" rdd-active":""}`,title:e.label,"aria-label":e.label,"aria-pressed":l,disabled:e.disabled,onClick:()=>{n.setActiveInGroup(e.group,e.id),e.onActivate?.(e.id)},children:e.icon},e.id)}case"toggle":{let l=e.active!==void 0,s=l?e.active:n.isModifierActive(e.id);return Ne("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:()=>{l||n.toggleModifier(e.id),e.onToggle?.(!s)},children:e.icon},e.id)}case"group":return Ne(wi,{item:e,position:o,toolbar:n},e.id)}}var Mi=vi(function({position:t="left",items:n,visible:o,onVisibilityChange:l,className:s,style:E},h){let w=ln(),b=t==="left"||t==="right";yi(h,()=>({show:()=>l?.(!0),hide:()=>l?.(!1),toggle:()=>l?.(o===!1)}),[o,l]);let x=o!==!1?{}:b?{width:"0px"}:{height:"0px"};return Ne("div",{className:`rdd-toolbar-strip rdd-${t}${s?` ${s}`:""}`,role:"toolbar","aria-orientation":b?"vertical":"horizontal",style:{...x,...E},children:n.map((P,T)=>Ri(P,T,w,t))})});import{useCallback as qn,useEffect as qt,useLayoutEffect as Si,useRef as yt,useState as jn}from"react";import{createPortal as Vo}from"react-dom";import{jsx as be,jsxs as jt}from"react/jsx-runtime";var Zn=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))}},Ie=new Zn,ki=Object.assign((e,t)=>Ie.show(e,t),{info:(e,t)=>Ie.show(e,{...t,type:"info"}),success:(e,t)=>Ie.show(e,{...t,type:"success"}),warning:(e,t)=>Ie.show(e,{...t,type:"warning"}),error:(e,t)=>Ie.show(e,{...t,type:"error"}),dismiss:e=>Ie.dismiss(e),promise:(e,t,n)=>{let o=Ie.show(t.pending,{...n,type:"info",duration:0});return e.then(l=>{let s=typeof t.success=="function"?t.success(l):t.success;Ie.update(o,s,{type:"success",duration:n?.duration??5e3})},l=>{let s=typeof t.error=="function"?t.error(l):t.error;Ie.update(o,s,{type:"error",duration:n?.duration??5e3})}),e}}),Ei=()=>jt("svg",{className:"rdd-toast__icon",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[be("circle",{cx:"8",cy:"8",r:"7",stroke:"currentColor",strokeWidth:"1.5"}),be("path",{d:"M8 5v.01M8 7.5v3.5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]}),Ii=()=>jt("svg",{className:"rdd-toast__icon",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[be("circle",{cx:"8",cy:"8",r:"7",stroke:"currentColor",strokeWidth:"1.5"}),be("path",{d:"M5 8l2 2 4-4",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})]}),Li=()=>jt("svg",{className:"rdd-toast__icon",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[be("path",{d:"M8 2.5L14 13.5H2L8 2.5z",stroke:"currentColor",strokeWidth:"1.5",strokeLinejoin:"round"}),be("path",{d:"M8 7v2.5M8 11.5v.01",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]}),zi=()=>jt("svg",{className:"rdd-toast__icon",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[be("circle",{cx:"8",cy:"8",r:"7",stroke:"currentColor",strokeWidth:"1.5"}),be("path",{d:"M5.5 5.5l5 5M10.5 5.5l-5 5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]}),Ni=()=>be("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:be("path",{d:"M4 4l8 8M12 4l-8 8",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})}),Wi={info:be(Ei,{}),success:be(Ii,{}),warning:be(Li,{}),error:be(zi,{})};function Di({id:e,message:t,options:n,exiting:o,isLeft:l,showProgress:s,pauseOnHover:E,animation:h,onDismiss:w,onExited:b}){let x=yt(null),P=yt(null),T=yt(null),L=yt(n.duration),N=yt(0),[_,u]=jn(!1),M=h==="none"?"rdd-toast--visible":h==="fade"?"rdd-toast--fade-entering":l?"rdd-toast--entering-left":"rdd-toast--entering",[C,A]=jn(M);Si(()=>{let I=x.current,$=P.current;if(!I||!$||o)return;let Y=()=>{I.style.maxHeight=`${I.scrollHeight}px`};Y();let j=new ResizeObserver(Y);return j.observe($),()=>j.disconnect()},[o]),qt(()=>{if(h==="none")return;let I=requestAnimationFrame(()=>A("rdd-toast--visible"));return()=>cancelAnimationFrame(I)},[]);let g=qn(I=>{I<=0||(N.current=Date.now(),T.current=setTimeout(()=>w(e),I))},[e,w]);qt(()=>(T.current&&clearTimeout(T.current),L.current=n.duration,g(n.duration),()=>{T.current&&clearTimeout(T.current)}),[n.duration,g]),qt(()=>{if(!o)return;let I=x.current;if(!I||h==="none"){b(e);return}let $=j=>{j.propertyName==="max-height"&&b(e)};I.addEventListener("transitionend",$);let Y=setTimeout(()=>b(e),520);return()=>{I.removeEventListener("transitionend",$),clearTimeout(Y)}},[o,e,b,h]);let R=()=>{!E||n.duration===0||(T.current&&(clearTimeout(T.current),T.current=null,L.current=Math.max(0,L.current-(Date.now()-N.current))),u(!0))},F=()=>{!E||n.duration===0||(u(!1),g(L.current))},H=["rdd-toast",n.type&&`rdd-toast--${n.type}`,C,o&&"rdd-toast--exiting",_&&"rdd-toast--paused"].filter(Boolean).join(" "),c=n.icon!==void 0?n.icon:n.type?Wi[n.type]:null;return jt("div",{ref:x,role:"status","aria-live":"polite",className:H,onMouseEnter:R,onMouseLeave:F,children:[c&&c,be("div",{ref:P,className:"rdd-toast__body",children:n.content!==void 0?n.content:t}),n.closable&&be("button",{type:"button",className:"rdd-toast__close",onClick:()=>w(e),"aria-label":"Close notification",children:be(Ni,{})}),s&&n.duration>0&&be("div",{className:"rdd-toast__progress",style:{animationDuration:`${n.duration}ms`}})]})}function Kn(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 Oi({position:e="top-right",maxVisible:t=3,defaultDuration:n=5e3,defaultClosable:o=!0,pauseOnHover:l=!0,animation:s="slide",newestOnTop:E=!1,progressBar:h=!1,width:w=320,adapter:b}){let[x,P]=jn([]),T=yt([]),L=yt(x);L.current=x;let N=qn(A=>{P(g=>g.map(R=>R.id===A?{...R,exiting:!0}:R)),L.current.find(g=>g.id===A)?.options.onClose?.()},[]),_=qn(A=>{let g=T.current.shift()??null;P(R=>{let F=R.filter(c=>c.id!==A);if(!g)return F;let H=Kn(g.rawOpts,n,o);return[...F,{id:g.id,message:g.message,options:H,exiting:!1}]})},[n,o]);if(qt(()=>{if(b)return;let A=g=>{if(g.kind==="show"){let R=Kn(g.rawOpts,n,o),F={id:g.id,message:g.message,options:R,exiting:!1},H={id:g.id,message:g.message,rawOpts:g.rawOpts};P(c=>c.find(Y=>Y.id===g.id)?c.map(Y=>Y.id===g.id?{...Y,message:g.message,options:R}:Y):c.filter(Y=>!Y.exiting).length<t?[...c,F]:(T.current.some(Y=>Y.id===H.id)||T.current.push(H),c))}else g.kind==="update"?(P(R=>R.map(F=>{if(F.id!==g.id)return F;let H={...F.options,...g.patch,id:F.id};return{...F,message:g.message,options:H}})),T.current=T.current.map(R=>R.id!==g.id?R:{...R,message:g.message,rawOpts:{...R.rawOpts,...g.patch}})):g.kind==="dismiss"&&(g.id===void 0?(P(R=>R.map(F=>({...F,exiting:!0}))),T.current=[]):L.current.some(F=>F.id===g.id)?N(g.id):T.current=T.current.filter(F=>F.id!==g.id))};return Ie.subscribe(A),()=>Ie.unsubscribe(A)},[b,t,n,o,N]),qt(()=>{if(!b)return;let A=g=>{if(g.kind==="show"){let R=Kn(g.rawOpts,n,o);b.show(g.id,g.message,R)}else g.kind==="update"?b.update(g.id,g.message,g.patch):g.kind==="dismiss"&&b.dismiss(g.id)};return Ie.subscribe(A),()=>Ie.unsubscribe(A)},[b,n,o]),b){if(!b.Container)return null;let A=b.Container;return Vo(be(A,{position:e}),document.body)}let u=e.endsWith("left"),M="";E===!0&&(M="rdd-toast-container--newest-top"),E===!1&&(M="rdd-toast-container--newest-bottom");let C=["rdd-toast-container",`rdd-toast-container--${e}`,M].filter(Boolean).join(" ");return Vo(be("div",{className:C,style:{width:w},"aria-label":"Notifications","aria-live":"polite",children:x.map(A=>be(Di,{id:A.id,message:A.message,options:A.options,exiting:A.exiting,isLeft:u,showProgress:h,pauseOnHover:l,animation:s,onDismiss:N,onExited:_},A.id))}),document.body)}import qo,{useState as Me,useContext as fn,createContext as Un,useRef as Le,useLayoutEffect as jo,useCallback as Xe,useMemo as Wt,useEffect as Ai}from"react";import{createPortal as Fi}from"react-dom";import{Fragment as rs,jsx as ie,jsxs as it}from"react/jsx-runtime";var _i=["top-left","top-right","bottom-left","bottom-right"],Zo=Un(null),Uo=Un(null),Jo=Un(null),rt=80;function Hi(e,t,n){let o=e.getBoundingClientRect(),l=t-o.left,s=n-o.top;return l<rt&&s<rt?"top-left":l>o.width-rt&&s<rt?"top-right":l<rt&&s>o.height-rt?"bottom-left":l>o.width-rt&&s>o.height-rt?"bottom-right":null}function Bi({children:e,className:t,style:n}){let[o,l]=Me({}),[s,E]=Me({}),[h,w]=Me({"top-left":[],"top-right":[],"bottom-left":[],"bottom-right":[]}),[b,x]=Me({}),[P,T]=Me(null),[L,N]=Me(null),[_,u]=Me(null),[M,C]=Me(()=>new Map),A=Le(100),g=Le(null),R=Xe((X,K)=>(l(W=>({...W,[X]:K})),()=>l(W=>{let O={...W};return delete O[X],O})),[]),F=Xe(X=>{A.current+=1;let K=A.current;E(W=>({...W,[X]:K})),u(X)},[]),H=Xe((X,K)=>{w(W=>{let O={"top-left":W["top-left"].filter(q=>q!==X),"top-right":W["top-right"].filter(q=>q!==X),"bottom-left":W["bottom-left"].filter(q=>q!==X),"bottom-right":W["bottom-right"].filter(q=>q!==X)};return O[K]=[...O[K],X],O})},[]),c=Xe(X=>{w(K=>({"top-left":K["top-left"].filter(W=>W!==X),"top-right":K["top-right"].filter(W=>W!==X),"bottom-left":K["bottom-left"].filter(W=>W!==X),"bottom-right":K["bottom-right"].filter(W=>W!==X)}))},[]),I=Xe((X,K)=>{x(W=>W[X]===K?W:{...W,[X]:K})},[]),$=Xe((X,K)=>{C(W=>{let O=new Map(W);return O.set(X,K),O})},[]),Y=Xe(X=>{C(K=>{let W=new Map(K);return W.delete(X),W})},[]),j=Xe(()=>{C(new Map)},[]),Q=Wt(()=>Array.from(M.keys()),[M]),U=Wt(()=>({registerToolbar:R,insetTop:o.top??0,insetBottom:o.bottom??0}),[R,o]),fe=Wt(()=>({managedWindowIds:Q,openManaged:$,closeManaged:Y,closeAllManaged:j}),[Q,$,Y,j]),oe=Wt(()=>({topId:_,zOrders:s,focusWindow:F,containerRef:g,stacks:h,dockedSizes:b,dockWindow:H,undockWindow:c,reportDockedSize:I,draggingId:P,setDraggingId:T,hoveredZone:L,setHoveredZone:N,insetTop:o.top??0,insetBottom:o.bottom??0}),[_,s,F,h,b,H,c,I,P,L,o]);return ie(Zo.Provider,{value:U,children:ie(Uo.Provider,{value:fe,children:ie(Jo.Provider,{value:oe,children:it("div",{ref:g,className:`rdd-panel-overlay-root${P!==null?" rdd-dragging-active":""}${t?" "+t:""}`,style:n,children:[e,P!==null&&ie($i,{hoveredZone:L}),Array.from(M.entries()).map(([X,K])=>ie(Qo,{id:X,title:K.title,icon:K.icon,open:!0,onClose:()=>Y(X),defaultAnchor:K.anchor??"top-right",defaultWidth:K.width??320,defaultHeight:K.height??240,children:K.content},X))]})})})})}function $i({hoveredZone:e}){return ie(rs,{children:_i.map(t=>ie("div",{className:`rdd-panel-float-dropzone rdd-panel-float-dropzone--${t}${e===t?" rdd-panel-float-dropzone--hovered":""}`,"aria-hidden":"true"},t))})}function Gi({position:e,variant:t="transparent",buttonVariant:n="ghost",buttonSize:o,style:l,className:s,children:E}){let h=fn(Zo),w=Le(null),b=Le(null);jo(()=>{let N=w.current;if(!N||!h)return;let _=()=>{let M=e==="top"||e==="bottom"?N.offsetHeight:N.offsetWidth;b.current?.(),b.current=h.registerToolbar(e,M)};_();let u=new ResizeObserver(_);return u.observe(N),()=>{u.disconnect(),b.current?.(),b.current=null}},[e,h?.registerToolbar]);let x={position:"absolute",zIndex:5,pointerEvents:"none",boxSizing:"border-box"};e==="top"?(x.top=0,x.left=0,x.right=0):e==="bottom"?(x.bottom=0,x.left=0,x.right=0):e==="left"?(x.insetInlineStart=0,x.top=h?.insetTop??0,x.bottom=h?.insetBottom??0):(x.insetInlineEnd=0,x.top=h?.insetTop??0,x.bottom=h?.insetBottom??0);let T=e==="left"||e==="right"?{...(h?.insetTop??0)>0?{paddingTop:0}:{},...(h?.insetBottom??0)>0?{paddingBottom:0}:{}}:{},L=o!=null?{"--rdd-panel-toolbar-btn-size":`${o}px`}:{};return ie("div",{ref:w,className:`rdd-panel-toolbar rdd-panel-toolbar--${e}${s?" "+s:""}`,"data-variant":t,"data-btn-variant":n,style:{...x,...T,...L,...l},children:E})}function Yi({icon:e,onClick:t,disabled:n,title:o,variant:l}){return ie("button",{type:"button",className:"rdd-panel-toolbar-btn",onClick:t,disabled:n,title:o,"aria-label":o,...l?{"data-variant":l}:{},children:e})}function Xi({icon:e,active:t,onToggle:n,disabled:o,title:l,variant:s}){return ie("button",{type:"button",className:`rdd-panel-toolbar-btn${t?" rdd-panel-toolbar-btn--active":""}`,onClick:n,disabled:o,title:l,"aria-label":l,"aria-pressed":t,...s?{"data-variant":s}:{},children:e})}function Vi(){return ie("span",{className:"rdd-panel-toolbar__sep","aria-hidden":"true"})}function Ki(){return ie("span",{className:"rdd-panel-toolbar__spacer","aria-hidden":"true"})}function qi({children:e}){return ie("span",{className:"rdd-panel-toolbar__item",children:e})}function ji({children:e}){return ie("div",{className:"rdd-panel-toolbar__center",children:e})}function Zi({placeholder:e="Search\u2026",onSearch:t,onSelect:n}){let[o,l]=Me(!1),[s,E]=Me(""),[h,w]=Me([]),[b,x]=Me(null),P=Le(null),T=Le(null),L=Le(null),N=Le(null),_=()=>{l(!0),setTimeout(()=>T.current?.focus({preventScroll:!0}),0)},u=()=>{l(!1),E(""),w([]),x(null),L.current?.abort(),N.current&&clearTimeout(N.current)},M=H=>{let c=H.target.value;if(E(c),L.current?.abort(),N.current&&clearTimeout(N.current),!c.trim()){w([]),x(null);return}N.current=setTimeout(async()=>{let I=new AbortController;L.current=I;try{let $=await t(c,I.signal);if(!I.signal.aborted){w($);let Y=P.current;if(Y&&$.length>0){let j=Y.getBoundingClientRect(),Q=Math.max(j.width,240),U=j.left;U+Q>window.innerWidth-8&&(U=window.innerWidth-Q-8),x({top:j.bottom+4,left:U,width:Q})}else x(null)}}catch{}},300)},C=H=>{n(H),u()},A=H=>{P.current?.contains(H.relatedTarget)||u()},g=H=>{H.key==="Escape"&&u()},R=Wt(()=>{let H={};for(let c of h){let I=c.group??"";H[I]||(H[I]=[]),H[I].push(c)}return H},[h]),F=it("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[ie("circle",{cx:"6.5",cy:"6.5",r:"4.5"}),ie("line",{x1:"10",y1:"10",x2:"14",y2:"14"})]});return o?it("div",{ref:P,className:"rdd-panel-toolbar-search rdd-panel-toolbar-search--open",onBlur:A,children:[ie("button",{type:"button",className:"rdd-panel-toolbar-btn",onClick:u,"aria-label":"Close search",title:"Close search",children:F}),ie("input",{ref:T,className:"rdd-panel-toolbar-search__input",type:"text",value:s,onChange:M,onKeyDown:g,placeholder:e,autoComplete:"off"}),b&&h.length>0&&Fi(ie("div",{className:"rdd-panel-toolbar-search__dropdown",style:{position:"fixed",top:b.top,left:b.left,width:b.width},onMouseDown:H=>H.preventDefault(),children:Object.entries(R).map(([H,c])=>it(qo.Fragment,{children:[H&&ie("div",{className:"rdd-panel-toolbar-search__group",children:H}),c.map(I=>it("button",{type:"button",className:"rdd-panel-toolbar-search__item",onClick:()=>C(I),children:[I.icon&&ie("span",{className:"rdd-panel-toolbar-search__item-icon",children:I.icon}),ie("span",{className:"rdd-panel-toolbar-search__item-label",children:I.label}),I.description&&ie("span",{className:"rdd-panel-toolbar-search__item-desc",children:I.description})]},I.id))]},H||"__default__"))}),document.body)]}):ie("div",{ref:P,className:"rdd-panel-toolbar-search",children:ie("button",{type:"button",className:"rdd-panel-toolbar-btn",onClick:_,title:"Search","aria-label":"Search",children:F})})}function Qo(e){let t=fn(Jo);return e.open?ie(es,{ctx:t,...e},e.id):null}var Ui=120,Ji=60,Ko=8,Qi=8;function es({id:e,title:t,icon:n,defaultAnchor:o,defaultWidth:l,defaultHeight:s,children:E,ctx:h,onClose:w}){let b=fn(kt)?.isRtl??!1,[x,P]=Me("docked"),[T,L]=Me(o),[N,_]=Me(null),[u,M]=Me({w:l,h:s}),C=Le(null),A=Le(x);A.current=x;let g=Le(N);g.current=N;let R=Le(u);R.current=u;let F=Le(null);jo(()=>(h?.dockWindow(e,o),()=>{h?.undockWindow(e)}),[]),Ai(()=>{h?.reportDockedSize(e,u.h)},[u.h]);let H=h?.zOrders[e]??101,c=!h||h.topId===e,I=()=>{let W=C.current?.offsetParent;return{cw:W?.clientWidth??9999,ch:W?.clientHeight??9999}},$=()=>{h?.focusWindow(e)},Y=W=>{if(W.button!==0)return;W.preventDefault();let O,q;if(A.current==="docked"){let de=C.current,ye=h?.containerRef?.current;if(de&&ye){let Z=de.getBoundingClientRect(),pe=ye.getBoundingClientRect();O=Z.left-pe.left,q=Z.top-pe.top}else O=Ko,q=h?.insetTop??0;h?.undockWindow(e),P("free"),_({x:O,y:q})}else O=g.current?.x??0,q=g.current?.y??0;F.current={mouseX:W.clientX,mouseY:W.clientY,posX:O,posY:q,hasDragged:!1},C.current?.setPointerCapture(W.pointerId),document.body.classList.add("rdd-dragging-active")},j=W=>O=>{if(O.button!==0)return;O.preventDefault(),O.stopPropagation();let q=0,de=0;if(A.current==="free")q=g.current?.x??0,de=g.current?.y??0;else{let Z=C.current,pe=Z?.offsetParent;if(Z&&pe){let me=Z.getBoundingClientRect(),we=pe.getBoundingClientRect();q=me.left-we.left,de=me.top-we.top}}let ye={x:q,y:de,w:R.current.w,h:R.current.h};tt({element:O.currentTarget,pointerId:O.pointerId,startClientX:O.clientX,startClientY:O.clientY,captureStart:()=>ye,activeClasses:[{el:document.body,classes:["rdd-resizing-active"]}],onMove:(Z,pe,me)=>{let{cw:we,ch:ke}=I(),{x:Ve,y:_e,w:He,h:We}=Yt(W,Z,pe,me,{minW:Ui,minH:Ji,maxW:we-me.x,maxH:ke-me.y,minX:0,minY:0});M({w:He,h:We}),A.current==="free"&&_({x:Ve,y:_e})}})},Q=W=>{if(F.current){let O=F.current;if(!O.hasDragged){if(Math.abs(W.clientX-O.mouseX)+Math.abs(W.clientY-O.mouseY)<4)return;O.hasDragged=!0,h?.setDraggingId(e)}let{cw:q,ch:de}=I(),ye=Math.max(0,Math.min(O.posX+W.clientX-O.mouseX,q-R.current.w)),Z=Math.max(0,Math.min(O.posY+W.clientY-O.mouseY,de-R.current.h));_({x:ye,y:Z});let pe=h?.containerRef?.current;if(pe){let me=Hi(pe,W.clientX,W.clientY);h?.setHoveredZone(me&&b?Gt(me):me)}}},U=()=>{if(F.current){let W=h?.hoveredZone;W&&(h?.dockWindow(e,W),L(W),P("docked"),_(null)),h?.setHoveredZone(null),h?.setDraggingId(null)}document.body.classList.remove("rdd-dragging-active"),F.current=null},fe=()=>{F.current&&(h?.setHoveredZone(null),h?.setDraggingId(null)),document.body.classList.remove("rdd-dragging-active"),F.current=null},oe;if(x==="docked"&&h){let W=h.stacks[T]??[],O=W.indexOf(e),q=0;for(let de=0;de<O;de++)q+=(h.dockedSizes[W[de]]??s)+Qi;oe={width:u.w,height:u.h,zIndex:H,transition:"top 0.2s ease, bottom 0.2s ease",opacity:O===-1?0:void 0,pointerEvents:O===-1?"none":void 0},oe[T.endsWith("-right")?"insetInlineEnd":"insetInlineStart"]=Ko,T.startsWith("top-")?oe.top=h.insetTop+q:oe.bottom=h.insetBottom+q}else oe={left:N?.x??0,top:N?.y??0,width:u.w,height:u.h,zIndex:H};let X=qo.useMemo(()=>{if(x==="free")return["n","ne","e","se","s","sw","w","nw"];let W=T.startsWith("top-")?"s":"n",q=T.endsWith("-right")!==b?"w":"e";return[W,q,`${W}${q}`]},[x,T,b]);return it("div",{ref:C,dir:b?"rtl":"ltr",className:`rdd-panel-float${c?" rdd-panel-float--active":""}`,style:oe,onPointerDown:$,onPointerMove:Q,onPointerUp:U,onPointerCancel:fe,children:[it("div",{className:"rdd-panel-float__header",onPointerDown:Y,children:[n&&ie("span",{className:"rdd-panel-float__icon",children:n}),ie("span",{className:"rdd-panel-float__title",children:t}),ie("button",{type:"button",className:"rdd-panel-float__close",onClick:w,onPointerDown:W=>W.stopPropagation(),title:"Close","aria-label":"Close",children:it("svg",{width:"8",height:"8",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",children:[ie("line",{x1:"1",y1:"1",x2:"9",y2:"9"}),ie("line",{x1:"9",y1:"1",x2:"1",y2:"9"})]})})]}),ie("div",{className:"rdd-panel-float__body",children:E}),X.map(W=>ie("div",{className:`rdd-resize-handle rdd-resize-${W}`,onPointerDown:j(W)},W))]})}function ts(){let[e,t]=Me(!1),n=Xe(()=>{t(!0)},[]),o=Xe(()=>{t(!1)},[]);return{isOpen:e,open:n,close:o}}var ns=[];function os(){let e=fn(Uo),t=e?.managedWindowIds??ns;return Wt(()=>({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{bt as ConfirmationForm,Mn as ContextMenu,Tn as ContextMenuProvider,It as DefaultContextMenuAdapter,Vr as DockableDesktopProvider,yn as FormContainerContext,ut as FormContainerProvider,ii as LeftPanelRenderer,Jr as ModalStackRenderer,An as PanelContributionProvider,Qo as PanelFloatingWindow,Bi as PanelOverlayRoot,kn as PanelProvider,Qt as PanelRegistry,Mt as PanelRegistryClass,Gi as PanelToolbar,qi as PanelToolbarItem,Vi as PanelToolbarSeparator,si as RightPanelRenderer,mi as SecondarySidebar,ai as SidePanelRenderer,Bo as Sidebar,Oi as ToastContainer,Mi as Toolbar,Yi as ToolbarButton,ji as ToolbarCenter,an as ToolbarProvider,Zi as ToolbarSearchInput,Ki as ToolbarSpacer,Xi as ToolbarToggle,Er as WindowManager,Cn as WindowManagerProvider,Dn as WorkspaceClient,Yt as computeResizedRect,Ft as defaultPredefinedMessages,ue as formatLabel,Tt as isSerializable,Lo as sidebarSectionToTab,tt as startPointerDrag,ki as toast,Fn as useActivePanelContribution,In as useColorScheme,Rt as useFormContainer,Oe as useFormatMessage,Gr as useMergedSidebarTabs,$r as useMergedToolbarItems,mt as usePanelActions,cr as usePanelContext,ur as usePanelContextMenu,Br as usePanelContribution,ts as usePanelFloatingWindow,os as usePanelFloatingWindowManager,nn as usePanelId,rr as usePanelSize,et as usePanelState,Ge as usePredefinedMessages,_t as useRegistry,fr as useShowContextMenu,hi as useSidebar,bi as useSidebarTab,Qe as useStyleClasses,ln as useToolbar,Ht as useWindowManagerActions,ze as useWindowManagerState};
24
24
  //# sourceMappingURL=index.js.map