react-dockable-desktop 4.2.2 → 4.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1,8 +1,8 @@
1
- "use strict";var Eo=Object.create;var qt=Object.defineProperty;var Io=Object.getOwnPropertyDescriptor;var Lo=Object.getOwnPropertyNames;var No=Object.getPrototypeOf,zo=Object.prototype.hasOwnProperty;var Wo=(e,t)=>{for(var n in t)qt(e,n,{get:t[n],enumerable:!0})},Tn=(e,t,n,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of Lo(t))!zo.call(e,s)&&s!==n&&qt(e,s,{get:()=>t[s],enumerable:!(i=Io(t,s))||i.enumerable});return e};var cn=(e,t,n)=>(n=e!=null?Eo(No(e)):{},Tn(t||!e||!e.__esModule?qt(n,"default",{value:e,enumerable:!0}):n,e)),Do=e=>Tn(qt({},"__esModule",{value:!0}),e);var fr={};Wo(fr,{ConfirmationForm:()=>Qe,ContextMenu:()=>Qt,ContextMenuProvider:()=>en,DefaultContextMenuAdapter:()=>lt,DockableDesktopProvider:()=>Kn,FormContainerContext:()=>Kt,FormContainerProvider:()=>je,LeftPanelRenderer:()=>Un,ModalStackRenderer:()=>jn,PanelFloatingWindow:()=>Cn,PanelOverlayRoot:()=>bo,PanelProvider:()=>nn,PanelRegistry:()=>Lt,PanelRegistryClass:()=>at,PanelToolbar:()=>yo,PanelToolbarItem:()=>Mo,PanelToolbarSeparator:()=>wo,RightPanelRenderer:()=>Jn,SidePanelRenderer:()=>Qn,Sidebar:()=>oo,ToastContainer:()=>co,Toolbar:()=>ao,ToolbarButton:()=>Po,ToolbarCenter:()=>Ro,ToolbarProvider:()=>Dt,ToolbarSearchInput:()=>To,ToolbarSpacer:()=>Co,ToolbarToggle:()=>xo,WindowManager:()=>Gn,WindowManagerProvider:()=>Ut,WorkspaceClient:()=>rn,defaultPredefinedMessages:()=>ht,formatLabel:()=>ve,toast:()=>lo,useFormContainer:()=>mt,useFormatMessage:()=>He,usePanelActions:()=>Je,usePanelContext:()=>zn,usePanelContextMenu:()=>Wn,usePanelFloatingWindow:()=>ko,usePanelFloatingWindowManager:()=>So,usePanelId:()=>pn,usePanelState:()=>Ve,usePredefinedMessages:()=>Ye,useRegistry:()=>bt,useShowContextMenu:()=>An,useSidebar:()=>ro,useSidebarTab:()=>io,useStyleClasses:()=>Ge,useToolbar:()=>Ot,useWindowManagerActions:()=>yt,useWindowManagerState:()=>$e});module.exports=Do(fr);var G=cn(require("react"),1),vn=require("react-dom");var O=require("react");var Zt=require("react"),Oo={requestClose:()=>{console.warn("FormContainerContract: requestClose called but no container is present")},setDirty:()=>{},onCloseRequested:()=>()=>{},setTitle:()=>{},setIcon:()=>{},containerType:"standalone",instanceId:"standalone",onClose:()=>()=>{},onMinimize:()=>()=>{},onRestore:()=>()=>{},onResize:()=>()=>{},requestMinimize:()=>{},getDimensions:()=>null,onActivate:()=>()=>{},onDeactivate:()=>()=>{},onContainerTypeChange:()=>()=>{}},Kt=(0,Zt.createContext)(Oo),je=Kt.Provider,mt=()=>(0,Zt.useContext)(Kt);var at=class{registry=new Map;register(t,n,i){this.registry.set(t,{Component:n,defaultOptions:i})}get(t){return this.registry.get(t)}getRegisteredIds(){return Array.from(this.registry.keys())}},Lt=new at;var ht={floatWindow:{id:"dockable-desktop-floatWindow",defaultMessage:"Float Window"},minimizePanel:{id:"dockable-desktop-minimizePanel",defaultMessage:"Minimize Panel"},closeTab:{id:"dockable-desktop-closeTab",defaultMessage:"Close Tab"},restorePanel:{id:"dockable-desktop-restorePanel",defaultMessage:"Restore Panel"},maximizePanel:{id:"dockable-desktop-maximizePanel",defaultMessage:"Maximize Panel"},closePanel:{id:"dockable-desktop-closePanel",defaultMessage:"Close Panel"},dockWindow:{id:"dockable-desktop-dockWindow",defaultMessage:"Dock Window"},minimize:{id:"dockable-desktop-minimize",defaultMessage:"Minimize"},maximize:{id:"dockable-desktop-maximize",defaultMessage:"Maximize"},restoreSize:{id:"dockable-desktop-restoreSize",defaultMessage:"Restore Size"},close:{id:"dockable-desktop-close",defaultMessage:"Close"},closeEmptyGroup:{id:"dockable-desktop-closeEmptyGroup",defaultMessage:"Close empty split group"},unsavedChangesTitle:{id:"dockable-desktop-unsavedChangesTitle",defaultMessage:"Unsaved Changes"},unsavedChangesMessage:{id:"dockable-desktop-unsavedChangesMessage",defaultMessage:'"{title}" has unsaved changes. Do you want to discard your changes and close?'},discardChanges:{id:"dockable-desktop-discardChanges",defaultMessage:"Discard Changes"},cancel:{id:"dockable-desktop-cancel",defaultMessage:"Cancel"},yes:{id:"dockable-desktop-yes",defaultMessage:"Yes"},no:{id:"dockable-desktop-no",defaultMessage:"No"},ok:{id:"dockable-desktop-ok",defaultMessage:"OK"},closePanelTooltip:{id:"dockable-desktop-closePanelTooltip",defaultMessage:"Close panel"},closeTooltip:{id:"dockable-desktop-closeTooltip",defaultMessage:"Close"}};var Ue=require("react/jsx-runtime"),vt=(0,O.createContext)(null),jt=(0,O.createContext)(null),Sn=(0,O.createContext)(null),En=(0,O.createContext)(null),In=(0,O.createContext)(ht),Ln=(0,O.createContext)({}),Ge=()=>(0,O.useContext)(Ln),Nn=(0,O.createContext)(Lt),bt=()=>(0,O.useContext)(Nn),dn=class{listeners={};subscribe(t,n){return this.listeners[t]||(this.listeners[t]=[]),this.listeners[t].push(n),()=>{this.listeners[t]=this.listeners[t].filter(i=>i!==n)}}publish(t,n){this.listeners[t]&&this.listeners[t].forEach(i=>i(n))}},Ao={type:"leaf",id:"group-default",panels:[],activePanelId:null};function Fo(e){if(e)try{let t=JSON.parse(e);if(t.gridRoot&&Array.isArray(t.floating)&&Array.isArray(t.minimized)&&t.panels)return{gridRoot:t.gridRoot,floating:t.floating,minimized:t.minimized,panels:t.panels,activePanelId:Object.keys(t.panels)[0]??null}}catch{}return{gridRoot:Ao,floating:[],minimized:[],panels:{},activePanelId:null}}var Ut=({children:e,client:t,formatMessage:n,predefinedMessages:i,dir:s,modalClass:x,modalBodyClass:W,sidePanelClass:m,sidePanelBodyClass:T,windowClass:w,windowBodyClass:y})=>{let g=(0,O.useRef)(t?.registry??Lt).current,F=t?.config.formatMessage??n,E=t?.config.predefinedMessages??i,S=t?.config.dir??s,[I,a]=(0,O.useState)(()=>({...Fo(t?.initialState??null),draggedPanelId:null,dir:S||"ltr",isRtl:S==="rtl",splitRatio:Math.min(.9,Math.max(.1,t?.config.defaultSplitRatio??.5)),edgeSplitRatio:Math.min(.9,Math.max(.1,t?.config.defaultEdgeSplitRatio??.2))})),M=(0,O.useRef)(I);M.current=I;let u=(0,O.useRef)(new Set);(0,O.useEffect)(()=>{u.current.forEach(o=>o())},[I]);let b=(0,O.useCallback)(()=>M.current,[]),R=(0,O.useCallback)(o=>(u.current.add(o),()=>u.current.delete(o)),[]),H=(0,O.useRef)({}),k=(0,O.useMemo)(()=>({...ht,...E}),[E]),D=(0,O.useRef)(new dn),l=(0,O.useRef)(1e3),L=(0,O.useCallback)((o,h)=>D.current.subscribe(o,h),[]),X=(0,O.useCallback)((o,h)=>{D.current.publish(o,h)},[]),V=(0,O.useCallback)((o,h)=>{let c=typeof o.x=="string"?parseFloat(o.x):o.x,d=typeof o.y=="string"?parseFloat(o.y):o.y,C=typeof o.width=="string"?parseFloat(o.width):o.width,B=typeof o.height=="string"?parseFloat(o.height):o.height;isNaN(c)&&(c=300),isNaN(d)&&(d=150),isNaN(C)&&(C=450),isNaN(B)&&(B=350);let te=Re=>h.some(r=>{let z=typeof r.x=="string"?parseFloat(r.x):r.x,v=typeof r.y=="string"?parseFloat(r.y):r.y;return!r.maximized&&Math.abs(z-Re.x)<20&&Math.abs(v-Re.y)<20}),re=0;for(;te({x:c,y:d})&&re<10;)c+=30,d+=30,re++;let ee=Math.max(100,window.innerWidth||1024),ae=Math.max(100,window.innerHeight||768);return(c+C>ee||d+B>ae)&&(c=100+re%5*30,d=100+re%5*30),c=Math.max(0,Math.min(c,ee-100)),d=Math.max(0,Math.min(d,ae-40)),{x:c,y:d,width:C,height:B}},[]),se=(0,O.useCallback)(o=>{a(h=>{let c=h.panels[o];if(!c)return h;if(c.state==="floating"){let d=h.floating.find(B=>B.id===o);if(!d)return h;let C=!h.floating.some(B=>B.z>d.z);return C&&h.activePanelId===o?h:(C||(l.current+=1),{...h,floating:h.floating.map(B=>B.id===o?{...B,z:C?d.z:l.current}:B),activePanelId:o})}else if(c.state==="docked"){if(h.activePanelId===o)return h;let d=C=>C.type==="leaf"?C.panels.includes(o)?{...C,activePanelId:o}:C:{...C,children:C.children.map(d)};return{...h,gridRoot:d(h.gridRoot),activePanelId:o}}return h.activePanelId===o?h:{...h,activePanelId:o}})},[]),U=(o,h)=>{if(o.type==="leaf"){let c=o.panels.indexOf(h);if(c===-1)return o;let d=o.panels.filter(te=>te!==h),C=o.activePanelId===h?d[c]||d[c-1]||d[0]||null:o.activePanelId,B={...o,panels:d,activePanelId:C};return d.length===0&&!o.keepOnEmpty?null:B}else{let c=o.children.map(B=>U(B,h)).filter(B=>B!==null);if(c.length===0)return null;if(c.length===1)return c[0];let d=o.sizes.slice(0,c.length),C=d.reduce((B,te)=>B+te,0);return{...o,children:c,sizes:d.map(B=>B/C)}}},ie=(o,h,c)=>{if(o.type==="leaf"){if(o.id===h){let d=o.panels.includes(c)?o.panels:[...o.panels,c];return{...o,panels:d,activePanelId:c}}return o}else return{...o,children:o.children.map(d=>ie(d,h,c))}},ye=o=>{if(o.type==="leaf")return o.id;for(let h of o.children){let c=ye(h);if(c)return c}return null},ge=(0,O.useCallback)((o,h,c)=>{let d=!(o in M.current.panels);a(C=>{let B=C.panels[o],te=g.get(h),re=c?.title||c?.title||te?.defaultOptions?.title||o,ee=c?.initialTarget||te?.defaultOptions?.initialTarget||"docked",ae=te?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350};if(B)if(B.state==="minimized"){let v=C.minimized.filter(P=>P.id!==o);if(ee==="floating"||!C.gridRoot){l.current+=1;let P=V(ae,C.floating);return{...C,minimized:v,floating:[...C.floating,{...P,id:o,z:l.current}],panels:{...C.panels,[o]:{...B,state:"floating"}}}}else{let P=ye(C.gridRoot)||"group-default";return{...C,minimized:v,gridRoot:ie(C.gridRoot,P,o),panels:{...C.panels,[o]:{...B,state:"docked"}}}}}else{if(B.state==="floating")return se(o),C;{let v=P=>P.type==="leaf"?P.panels.includes(o)?{...P,activePanelId:o}:P:{...P,children:P.children.map(v)};return{...C,gridRoot:v(C.gridRoot)}}}let r={id:o,title:re,component:h,state:ee==="tabbed"?"docked":ee},z={...C.panels,[o]:r};if(ee==="floating"){l.current+=1;let v=V(ae,C.floating),P=c?.anchor??te?.defaultOptions?.defaultAnchor??null;return{...C,floating:[...C.floating,{...v,id:o,z:l.current,anchor:P}],panels:z}}else{let v=ye(C.gridRoot)||"group-default";return{...C,gridRoot:ie(C.gridRoot,v,o),panels:z}}}),d&&D.current.publish("panel:opened",{id:o,component:h})},[V,se]),ne=(0,O.useCallback)(o=>{let h=o in M.current.panels;a(c=>{let d=c.panels[o];if(!d||g.get(d.component)?.defaultOptions?.canClose===!1)return c;delete H.current[o];let B={...c.panels};delete B[o];let te=U(c.gridRoot,o);return{...c,gridRoot:te||{type:"leaf",id:"group-default",panels:[],activePanelId:null},floating:c.floating.filter(re=>re.id!==o),minimized:c.minimized.filter(re=>re.id!==o),panels:B}}),h&&D.current.publish("panel:closed",{id:o})},[]),N=(0,O.useCallback)((o,h)=>{H.current[o]=h},[]),f=(0,O.useCallback)(o=>{delete H.current[o]},[]),Y=(0,O.useCallback)((o,h,c)=>{a(d=>{let C=d.panels[o];return C?{...d,panels:{...d.panels,[o]:{...C,dirty:h,dirtyOptions:c}}}:d})},[]),Q=(0,O.useCallback)((o,h)=>{a(c=>{let d=c.panels[o];return d?{...c,panels:{...c.panels,[o]:{...d,title:h}}}:c})},[]),j=(0,O.useCallback)(async(o,h)=>{if(h?.force){ne(o);return}let c=H.current[o];if(c&&!await c())return;let d=M.current.panels[o];if(d?.dirty)if(h?.onConfirm){if(!await h.onConfirm(d.dirtyOptions))return}else return;ne(o)},[ne]),fe=(0,O.useCallback)(o=>{let h=M.current.panels[o]?.state!=="minimized"&&o in M.current.panels;a(c=>{let d=c.panels[o];if(!d||d.state==="minimized"||g.get(d.component)?.defaultOptions?.canMinimize===!1)return c;let B,te;if(d.state==="floating"){let ee=c.floating.find(ae=>ae.id===o);ee&&(B={x:Number(ee.x),y:Number(ee.y),width:Number(ee.width),height:Number(ee.height),anchor:ee.anchor??null})}else if(d.state==="docked"){let ee=ae=>{if(ae.type==="leaf")return ae.panels.includes(o)?ae.id:null;for(let Re of ae.children){let r=ee(Re);if(r)return r}return null};te=ee(c.gridRoot)??void 0}let re=U(c.gridRoot,o);return{...c,gridRoot:re||{type:"leaf",id:"group-default",panels:[],activePanelId:null},floating:c.floating.filter(ee=>ee.id!==o),minimized:[...c.minimized,{id:o,title:d.title,component:d.component}],panels:{...c.panels,[o]:{...d,state:"minimized",previousState:d.state,lastFloatingRect:B,lastLeafId:te}}}}),h&&D.current.publish("panel:minimized",{id:o})},[]),Pe=(0,O.useCallback)(o=>{let h=M.current.panels[o]?.state==="minimized";a(c=>{let d=c.panels[o];if(!d||d.state!=="minimized")return c;let C=c.minimized.filter(te=>te.id!==o);if((d.previousState||"docked")==="floating"){l.current+=1;let te=g.get(d.component),re=d.lastFloatingRect||te?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350},ee=V(re,c.floating);return{...c,minimized:C,floating:[...c.floating,{...ee,id:o,z:l.current,anchor:d.lastFloatingRect?.anchor??null}],panels:{...c.panels,[o]:{...d,state:"floating"}}}}else{let te=(Re,r)=>Re.type==="leaf"?Re.id===r:Re.children.some(z=>te(z,r)),re=d.lastLeafId&&te(c.gridRoot,d.lastLeafId),ee=g.get(d.component),ae=ee?.defaultOptions?.canDrag!==!1;if(re)return{...c,minimized:C,gridRoot:ie(c.gridRoot,d.lastLeafId,o),panels:{...c.panels,[o]:{...d,state:"docked"}}};if(ae){l.current+=1;let Re=d.lastFloatingRect||ee?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350},r=V(Re,c.floating);return{...c,minimized:C,floating:[...c.floating,{...r,id:o,z:l.current,anchor:d.lastFloatingRect?.anchor??null}],panels:{...c.panels,[o]:{...d,state:"floating"}}}}else{let Re=ye(c.gridRoot)||"group-default";return{...c,minimized:C,gridRoot:ie(c.gridRoot,Re,o),panels:{...c.panels,[o]:{...d,state:"docked"}}}}}}),h&&D.current.publish("panel:restored",{id:o})},[V]),Ce=(0,O.useCallback)((o,h,c)=>{a(d=>{let C=d.panels[o];if(!C||g.get(C.component)?.defaultOptions?.canDrag===!1)return d;let te=g.get(C.component),re=h||te?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350},ee=U(d.gridRoot,o);l.current+=1;let ae=V(re,d.floating);return{...d,gridRoot:ee||{type:"leaf",id:"group-default",panels:[],activePanelId:null},floating:[...d.floating,{...ae,id:o,z:l.current,anchor:c??null}],panels:{...d.panels,[o]:{...C,state:"floating"}}}})},[V]),ze=(0,O.useCallback)((o,h)=>{a(c=>{let d=c.panels[o];if(!d)return c;let C=c.floating.filter(re=>re.id!==o),B=U(c.gridRoot,o),te=h||ye(B||c.gridRoot)||"group-default";return{...c,gridRoot:ie(B||c.gridRoot,te,o),floating:C,panels:{...c.panels,[o]:{...d,state:"docked"}}}})},[]),Ie=(o,h,c,d,C)=>{if(o.type==="leaf"){if(o.id===h){let B={type:"leaf",id:`group-split-${Date.now()}-${Math.floor(Math.random()*1e3)}`,panels:[c],activePanelId:c},te=d==="left"||d==="right"?"horizontal":"vertical",re=d==="left"||d==="top"?[B,o]:[o,B],ee=d==="left"||d==="top"?[C,1-C]:[1-C,C];return{type:"branch",orientation:te,sizes:ee,children:re}}return o}else return{...o,children:o.children.map(B=>Ie(B,h,c,d,C))}},Ae=(0,O.useCallback)(o=>{a(h=>({...h,draggedPanelId:o}))},[]),Ct=(0,O.useCallback)((o,h,c)=>{a(d=>{let C=d.panels[o];if(!C)return d;let B=d.floating.filter(ee=>ee.id!==o),te=U(d.gridRoot,o),re;return c==="center"?re=ie(te||d.gridRoot,h,o):re=Ie(te||d.gridRoot,h,o,c,d.splitRatio),{...d,gridRoot:re,floating:B,panels:{...d.panels,[o]:{...C,state:"docked"}},draggedPanelId:null}})},[]),Mt=(0,O.useCallback)((o,h)=>{a(c=>{let d=c.panels[o];if(!d)return c;let C=c.floating.filter(r=>r.id!==o),B=U(c.gridRoot,o),te={type:"leaf",id:`group-edge-${Date.now()}-${Math.floor(Math.random()*1e3)}`,panels:[o],activePanelId:o},re=h==="left"||h==="right"?"horizontal":"vertical",ee=h==="left"||h==="top"?[te,B||c.gridRoot]:[B||c.gridRoot,te],ae=c.edgeSplitRatio,Re={type:"branch",orientation:re,sizes:h==="left"||h==="top"?[ae,1-ae]:[1-ae,ae],children:ee};return{...c,gridRoot:Re,floating:C,panels:{...c.panels,[o]:{...d,state:"docked"}},draggedPanelId:null}})},[]),Ft=(0,O.useCallback)((o,h,c)=>{a(d=>{let C=d.panels[o];if(!C)return d;let B=U(d.gridRoot,o),te=ae=>{if(ae.type==="leaf"){if(ae.id===h){let Re=ae.panels.filter(v=>v!==o),r=Math.max(0,Math.min(c,Re.length)),z=[...Re];return z.splice(r,0,o),{...ae,panels:z,activePanelId:o}}return ae}else return{...ae,children:ae.children.map(te)}},re=te(B||d.gridRoot),ee=d.floating.filter(ae=>ae.id!==o);return{...d,gridRoot:re,floating:ee,panels:{...d.panels,[o]:{...C,state:"docked"}},draggedPanelId:null}})},[]),dt=(0,O.useCallback)(o=>{a(h=>{let c=C=>{if(C.type==="leaf")return C.id===o&&C.canClose!==!1?null:C;{let B=C.children.map(ee=>c(ee)).filter(ee=>ee!==null);if(B.length===0)return null;if(B.length===1)return B[0];let te=C.sizes.slice(0,B.length),re=te.reduce((ee,ae)=>ee+ae,0);return{...C,children:B,sizes:te.map(ee=>ee/re)}}},d=c(h.gridRoot);return{...h,gridRoot:d||{type:"leaf",id:"group-default",panels:[],activePanelId:null}}})},[]),We=(0,O.useCallback)(o=>{a(h=>({...h,floating:h.floating.map(c=>c.id===o?{...c,maximized:!c.maximized}:c)}))},[]),_t=(0,O.useCallback)((o,h)=>{let c=(d,C)=>{if(d.type==="leaf")return d;if(C===o.length)return{...d,sizes:h};let B=o[C],te=d.children.map((re,ee)=>ee===B?c(re,C+1):re);return{...d,children:te}};a(d=>({...d,gridRoot:c(d.gridRoot,0)}))},[]),Ht=(0,O.useCallback)((o,h)=>{a(c=>({...c,floating:c.floating.map(d=>d.id===o?{...d,...h}:d)}))},[]),ut=(0,O.useCallback)(()=>JSON.stringify({gridRoot:M.current.gridRoot,floating:M.current.floating,minimized:M.current.minimized,panels:M.current.panels}),[]),nt=(0,O.useCallback)(o=>{try{let h=JSON.parse(o);if(h.gridRoot&&h.floating&&h.minimized&&h.panels){let c=h.floating.map(C=>{if("stickyRight"in C||"stickyBottom"in C){let B=C.stickyRight&&C.stickyBottom?"bottom-right":C.stickyRight?"top-right":C.stickyBottom?"bottom-left":null,{stickyRight:te,stickyBottom:re,...ee}=C;return{...ee,anchor:B}}return C}),d=Object.keys(h.panels)[0]||null;return a(C=>({...C,gridRoot:h.gridRoot,floating:c,minimized:h.minimized,panels:h.panels,draggedPanelId:null,activePanelId:d})),!0}return!1}catch(h){return console.error("Failed to parse layout configuration:",h),!1}},[]),Rt=(0,O.useCallback)(o=>{a(h=>h.activePanelId===o?h:{...h,activePanelId:o})},[]),Bt=(0,O.useCallback)(o=>{a(h=>h.dir===o?h:{...h,dir:o,isRtl:o==="rtl"})},[]),Ze=(0,O.useCallback)(o=>o in M.current.panels,[]),Xe=(0,O.useCallback)(()=>Object.keys(M.current.panels),[]);(0,O.useEffect)(()=>{S&&a(o=>o.dir===S?o:{...o,dir:S,isRtl:S==="rtl"})},[S]);let Tt=(0,O.useRef)(new Map),kt=(0,O.useRef)(null),St=(0,O.useCallback)(o=>(kt.current=o,()=>{kt.current=null}),[]),ot=(0,O.useCallback)(o=>{kt.current?.(o)},[]),rt=(0,O.useCallback)((o,h)=>(Tt.current.set(o,h),()=>{Tt.current.delete(o)}),[]),it=(0,O.useCallback)(o=>Tt.current.get(o)?.()??[],[]),Ke=(0,O.useMemo)(()=>({openPanel:ge,closePanel:ne,minimizePanel:fe,restorePanel:Pe,floatPanel:Ce,dockPanel:ze,maximizePanel:We,updateSplitSizes:_t,updateFloatingPosition:Ht,focusPanel:se,isOpen:Ze,getOpenPanelIds:Xe,saveLayout:ut,loadLayout:nt,publish:X,subscribe:L,setDraggedPanelId:Ae,dockPanelToGroup:Ct,movePanelOrder:Ft,closeLeafGroup:dt,registerCloseGuard:N,unregisterCloseGuard:f,setPanelDirty:Y,updatePanelTitle:Q,requestClosePanel:j,dockPanelToWorkspaceEdge:Mt,setActivePanel:Rt,setDirection:Bt,registerPanelContextMenu:rt,getPanelContextMenuItems:it,showContextMenu:ot,registerContextMenuFn:St}),[ge,ne,fe,Pe,Ce,ze,We,_t,Ht,se,Ze,Xe,ut,nt,X,L,Ae,Ct,Ft,dt,N,f,Y,Q,j,Mt,Rt,Bt,rt,it,ot,St]),$t=o=>{let h=o.defaultMessage||o.id;return o.values&&Object.entries(o.values).forEach(([c,d])=>{h=h.replace(`{${c}}`,String(d))}),h},an=(0,O.useMemo)(()=>({modalClass:x,modalBodyClass:W,sidePanelClass:m,sidePanelBodyClass:T,windowClass:w,windowBodyClass:y}),[x,W,m,T,w,y]);(0,O.useEffect)(()=>{if(process.env.NODE_ENV==="development")try{getComputedStyle(document.documentElement).getPropertyValue("--rdd-styles-loaded").trim()!=="1"&&console.error(`[react-dockable-desktop] styles.css is not imported.
1
+ "use strict";var Fo=Object.create;var Kt=Object.defineProperty;var _o=Object.getOwnPropertyDescriptor;var Ho=Object.getOwnPropertyNames;var Bo=Object.getPrototypeOf,$o=Object.prototype.hasOwnProperty;var Yo=(e,t)=>{for(var n in t)Kt(e,n,{get:t[n],enumerable:!0})},Ln=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of Ho(t))!$o.call(e,s)&&s!==n&&Kt(e,s,{get:()=>t[s],enumerable:!(r=_o(t,s))||r.enumerable});return e};var gn=(e,t,n)=>(n=e!=null?Fo(Bo(e)):{},Ln(t||!e||!e.__esModule?Kt(n,"default",{value:e,enumerable:!0}):n,e)),Xo=e=>Ln(Kt({},"__esModule",{value:!0}),e);var Rr={};Yo(Rr,{ConfirmationForm:()=>et,ContextMenu:()=>tn,ContextMenuProvider:()=>nn,DefaultContextMenuAdapter:()=>ct,DockableDesktopProvider:()=>ro,FormContainerContext:()=>Ut,FormContainerProvider:()=>Ue,LeftPanelRenderer:()=>so,ModalStackRenderer:()=>io,PanelContributionProvider:()=>ln,PanelFloatingWindow:()=>Sn,PanelOverlayRoot:()=>ko,PanelProvider:()=>rn,PanelRegistry:()=>zt,PanelRegistryClass:()=>lt,PanelToolbar:()=>So,PanelToolbarItem:()=>zo,PanelToolbarSeparator:()=>Lo,RightPanelRenderer:()=>ao,SidePanelRenderer:()=>lo,Sidebar:()=>go,ToastContainer:()=>yo,Toolbar:()=>bo,ToolbarButton:()=>Io,ToolbarCenter:()=>Wo,ToolbarProvider:()=>Ft,ToolbarSearchInput:()=>Do,ToolbarSpacer:()=>No,ToolbarToggle:()=>Eo,WindowManager:()=>jn,WindowManagerProvider:()=>Qt,WorkspaceClient:()=>an,defaultPredefinedMessages:()=>bt,formatLabel:()=>be,sidebarSectionToTab:()=>Rn,toast:()=>vo,useActivePanelContribution:()=>cn,useFormContainer:()=>ht,useFormatMessage:()=>$e,useMergedSidebarTabs:()=>to,useMergedToolbarItems:()=>eo,usePanelActions:()=>Qe,usePanelContext:()=>Fn,usePanelContextMenu:()=>_n,usePanelContribution:()=>Qn,usePanelFloatingWindow:()=>Oo,usePanelFloatingWindowManager:()=>Ao,usePanelId:()=>Wt,usePanelState:()=>qe,usePredefinedMessages:()=>Xe,useRegistry:()=>yt,useShowContextMenu:()=>$n,useSidebar:()=>fo,useSidebarTab:()=>mo,useStyleClasses:()=>Ve,useToolbar:()=>_t,useWindowManagerActions:()=>Pt,useWindowManagerState:()=>_e});module.exports=Xo(Rr);var V=gn(require("react"),1),Pn=require("react-dom");var F=require("react");var jt=require("react"),Go={requestClose:()=>{console.warn("FormContainerContract: requestClose called but no container is present")},setDirty:()=>{},onCloseRequested:()=>()=>{},setTitle:()=>{},setIcon:()=>{},containerType:"standalone",instanceId:"standalone",onClose:()=>()=>{},onMinimize:()=>()=>{},onRestore:()=>()=>{},onResize:()=>()=>{},requestMinimize:()=>{},getDimensions:()=>null,onActivate:()=>()=>{},onDeactivate:()=>()=>{},onContainerTypeChange:()=>()=>{}},Ut=(0,jt.createContext)(Go),Ue=Ut.Provider,ht=()=>(0,jt.useContext)(Ut);var lt=class{registry=new Map;register(t,n,r){this.registry.set(t,{Component:n,defaultOptions:r})}get(t){return this.registry.get(t)}getRegisteredIds(){return Array.from(this.registry.keys())}},zt=new lt;var bt={floatWindow:{id:"dockable-desktop-floatWindow",defaultMessage:"Float Window"},minimizePanel:{id:"dockable-desktop-minimizePanel",defaultMessage:"Minimize Panel"},closeTab:{id:"dockable-desktop-closeTab",defaultMessage:"Close Tab"},restorePanel:{id:"dockable-desktop-restorePanel",defaultMessage:"Restore Panel"},maximizePanel:{id:"dockable-desktop-maximizePanel",defaultMessage:"Maximize Panel"},closePanel:{id:"dockable-desktop-closePanel",defaultMessage:"Close Panel"},dockWindow:{id:"dockable-desktop-dockWindow",defaultMessage:"Dock Window"},minimize:{id:"dockable-desktop-minimize",defaultMessage:"Minimize"},maximize:{id:"dockable-desktop-maximize",defaultMessage:"Maximize"},restoreSize:{id:"dockable-desktop-restoreSize",defaultMessage:"Restore Size"},close:{id:"dockable-desktop-close",defaultMessage:"Close"},closeEmptyGroup:{id:"dockable-desktop-closeEmptyGroup",defaultMessage:"Close empty split group"},unsavedChangesTitle:{id:"dockable-desktop-unsavedChangesTitle",defaultMessage:"Unsaved Changes"},unsavedChangesMessage:{id:"dockable-desktop-unsavedChangesMessage",defaultMessage:'"{title}" has unsaved changes. Do you want to discard your changes and close?'},discardChanges:{id:"dockable-desktop-discardChanges",defaultMessage:"Discard Changes"},cancel:{id:"dockable-desktop-cancel",defaultMessage:"Cancel"},yes:{id:"dockable-desktop-yes",defaultMessage:"Yes"},no:{id:"dockable-desktop-no",defaultMessage:"No"},ok:{id:"dockable-desktop-ok",defaultMessage:"OK"},closePanelTooltip:{id:"dockable-desktop-closePanelTooltip",defaultMessage:"Close panel"},closeTooltip:{id:"dockable-desktop-closeTooltip",defaultMessage:"Close"}};var Je=require("react/jsx-runtime"),vt=(0,F.createContext)(null),Jt=(0,F.createContext)(null),zn=(0,F.createContext)(null),Wn=(0,F.createContext)(null),Dn=(0,F.createContext)(bt),On=(0,F.createContext)({}),Ve=()=>(0,F.useContext)(On),An=(0,F.createContext)(zt),yt=()=>(0,F.useContext)(An),fn=class{listeners={};subscribe(t,n){return this.listeners[t]||(this.listeners[t]=[]),this.listeners[t].push(n),()=>{this.listeners[t]=this.listeners[t].filter(r=>r!==n)}}publish(t,n){this.listeners[t]&&this.listeners[t].forEach(r=>r(n))}},Vo={type:"leaf",id:"group-default",panels:[],activePanelId:null};function qo(e){if(e)try{let t=JSON.parse(e);if(t.gridRoot&&Array.isArray(t.floating)&&Array.isArray(t.minimized)&&t.panels)return{gridRoot:t.gridRoot,floating:t.floating,minimized:t.minimized,panels:t.panels,activePanelId:Object.keys(t.panels)[0]??null}}catch{}return{gridRoot:Vo,floating:[],minimized:[],panels:{},activePanelId:null}}var Qt=({children:e,client:t,formatMessage:n,predefinedMessages:r,dir:s,modalClass:b,modalBodyClass:z,sidePanelClass:m,sidePanelBodyClass:M,windowClass:P,windowBodyClass:y})=>{let g=(0,F.useRef)(t?.registry??zt).current,H=t?.config.formatMessage??n,I=t?.config.predefinedMessages??r,k=t?.config.dir??s,[E,a]=(0,F.useState)(()=>({...qo(t?.initialState??null),draggedPanelId:null,dir:k||"ltr",isRtl:k==="rtl",splitRatio:Math.min(.9,Math.max(.1,t?.config.defaultSplitRatio??.5)),edgeSplitRatio:Math.min(.9,Math.max(.1,t?.config.defaultEdgeSplitRatio??.2))})),w=(0,F.useRef)(E);w.current=E;let u=(0,F.useRef)(new Set);(0,F.useEffect)(()=>{u.current.forEach(o=>o())},[E]);let v=(0,F.useCallback)(()=>w.current,[]),C=(0,F.useCallback)(o=>(u.current.add(o),()=>u.current.delete(o)),[]),B=(0,F.useRef)({}),T=(0,F.useMemo)(()=>({...bt,...I}),[I]),O=(0,F.useRef)(new fn),l=(0,F.useRef)(1e3),L=(0,F.useCallback)((o,h)=>O.current.subscribe(o,h),[]),G=(0,F.useCallback)((o,h)=>{O.current.publish(o,h)},[]),q=(0,F.useCallback)((o,h)=>{let c=typeof o.x=="string"?parseFloat(o.x):o.x,d=typeof o.y=="string"?parseFloat(o.y):o.y,A=typeof o.width=="string"?parseFloat(o.width):o.width,S=typeof o.height=="string"?parseFloat(o.height):o.height;isNaN(c)&&(c=300),isNaN(d)&&(d=150),isNaN(A)&&(A=450),isNaN(S)&&(S=350);let ee=Ce=>h.some(i=>{let W=typeof i.x=="string"?parseFloat(i.x):i.x,x=typeof i.y=="string"?parseFloat(i.y):i.y;return!i.maximized&&Math.abs(W-Ce.x)<20&&Math.abs(x-Ce.y)<20}),re=0;for(;ee({x:c,y:d})&&re<10;)c+=30,d+=30,re++;let ne=Math.max(100,window.innerWidth||1024),se=Math.max(100,window.innerHeight||768);return(c+A>ne||d+S>se)&&(c=100+re%5*30,d=100+re%5*30),c=Math.max(0,Math.min(c,ne-100)),d=Math.max(0,Math.min(d,se-40)),{x:c,y:d,width:A,height:S}},[]),ae=(0,F.useCallback)(o=>{a(h=>{let c=h.panels[o];if(!c)return h;if(c.state==="floating"){let d=h.floating.find(S=>S.id===o);if(!d)return h;let A=!h.floating.some(S=>S.z>d.z);return A&&h.activePanelId===o?h:(A||(l.current+=1),{...h,floating:h.floating.map(S=>S.id===o?{...S,z:A?d.z:l.current}:S),activePanelId:o})}else if(c.state==="docked"){if(h.activePanelId===o)return h;let d=A=>A.type==="leaf"?A.panels.includes(o)?{...A,activePanelId:o}:A:{...A,children:A.children.map(d)};return{...h,gridRoot:d(h.gridRoot),activePanelId:o}}return h.activePanelId===o?h:{...h,activePanelId:o}})},[]),U=(o,h)=>{if(o.type==="leaf"){let c=o.panels.indexOf(h);if(c===-1)return o;let d=o.panels.filter(ee=>ee!==h),A=o.activePanelId===h?d[c]||d[c-1]||d[0]||null:o.activePanelId,S={...o,panels:d,activePanelId:A};return d.length===0&&!o.keepOnEmpty?null:S}else{let c=o.children.map(S=>U(S,h)).filter(S=>S!==null);if(c.length===0)return null;if(c.length===1)return c[0];let d=o.sizes.slice(0,c.length),A=d.reduce((S,ee)=>S+ee,0);return{...o,children:c,sizes:d.map(S=>S/A)}}},ie=(o,h,c)=>{if(o.type==="leaf"){if(o.id===h){let d=o.panels.includes(c)?o.panels:[...o.panels,c];return{...o,panels:d,activePanelId:c}}return o}else return{...o,children:o.children.map(d=>ie(d,h,c))}},ye=o=>{if(o.type==="leaf")return o.id;for(let h of o.children){let c=ye(h);if(c)return c}return null},ge=(0,F.useCallback)((o,h,c)=>{let d=!(o in w.current.panels),A=c?.focus!==!1;a(S=>{let ee=S.panels[o],re=g.get(h),ne=c?.title||c?.title||re?.defaultOptions?.title||o,se=c?.initialTarget||re?.defaultOptions?.initialTarget||"docked",Ce=re?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350},i=A?o:S.activePanelId;if(ee)if(ee.state==="minimized"){let D=S.minimized.filter($=>$.id!==o);if(se==="floating"||!S.gridRoot){l.current+=1;let $=q(Ce,S.floating);return{...S,minimized:D,floating:[...S.floating,{...$,id:o,z:l.current}],panels:{...S.panels,[o]:{...ee,state:"floating"}},activePanelId:i}}else{let $=ye(S.gridRoot)||"group-default";return{...S,minimized:D,gridRoot:ie(S.gridRoot,$,o),panels:{...S.panels,[o]:{...ee,state:"docked"}},activePanelId:i}}}else{if(ee.state==="floating")return A&&ae(o),S;{let D=$=>$.type==="leaf"?$.panels.includes(o)?{...$,activePanelId:o}:$:{...$,children:$.children.map(D)};return{...S,gridRoot:D(S.gridRoot),activePanelId:i}}}let x={id:o,title:ne,component:h,state:se==="tabbed"?"docked":se},R={...S.panels,[o]:x};if(se==="floating"){l.current+=1;let D=q(Ce,S.floating),$=c?.anchor??re?.defaultOptions?.defaultAnchor??null;return{...S,floating:[...S.floating,{...D,id:o,z:l.current,anchor:$}],panels:R,activePanelId:i}}else{let D=ye(S.gridRoot)||"group-default";return{...S,gridRoot:ie(S.gridRoot,D,o),panels:R,activePanelId:i}}}),d&&O.current.publish("panel:opened",{id:o,component:h})},[q,ae]),te=(0,F.useCallback)(o=>{let h=o in w.current.panels;a(c=>{let d=c.panels[o];if(!d||g.get(d.component)?.defaultOptions?.canClose===!1)return c;delete B.current[o];let S={...c.panels};delete S[o];let ee=U(c.gridRoot,o);return{...c,gridRoot:ee||{type:"leaf",id:"group-default",panels:[],activePanelId:null},floating:c.floating.filter(re=>re.id!==o),minimized:c.minimized.filter(re=>re.id!==o),panels:S}}),h&&O.current.publish("panel:closed",{id:o})},[]),N=(0,F.useCallback)((o,h)=>{B.current[o]=h},[]),f=(0,F.useCallback)(o=>{delete B.current[o]},[]),X=(0,F.useCallback)((o,h,c)=>{a(d=>{let A=d.panels[o];return A?{...d,panels:{...d.panels,[o]:{...A,dirty:h,dirtyOptions:c}}}:d})},[]),Q=(0,F.useCallback)((o,h)=>{a(c=>{let d=c.panels[o];return d?{...c,panels:{...c.panels,[o]:{...d,title:h}}}:c})},[]),j=(0,F.useCallback)(async(o,h)=>{if(h?.force){te(o);return}let c=B.current[o];if(c&&!await c())return;let d=w.current.panels[o];if(d?.dirty)if(h?.onConfirm){if(!await h.onConfirm(d.dirtyOptions))return}else return;te(o)},[te]),fe=(0,F.useCallback)(o=>{let h=w.current.panels[o]?.state!=="minimized"&&o in w.current.panels;a(c=>{let d=c.panels[o];if(!d||d.state==="minimized"||g.get(d.component)?.defaultOptions?.canMinimize===!1)return c;let S,ee;if(d.state==="floating"){let ne=c.floating.find(se=>se.id===o);ne&&(S={x:Number(ne.x),y:Number(ne.y),width:Number(ne.width),height:Number(ne.height),anchor:ne.anchor??null})}else if(d.state==="docked"){let ne=se=>{if(se.type==="leaf")return se.panels.includes(o)?se.id:null;for(let Ce of se.children){let i=ne(Ce);if(i)return i}return null};ee=ne(c.gridRoot)??void 0}let re=U(c.gridRoot,o);return{...c,gridRoot:re||{type:"leaf",id:"group-default",panels:[],activePanelId:null},floating:c.floating.filter(ne=>ne.id!==o),minimized:[...c.minimized,{id:o,title:d.title,component:d.component}],panels:{...c.panels,[o]:{...d,state:"minimized",previousState:d.state,lastFloatingRect:S,lastLeafId:ee}}}}),h&&O.current.publish("panel:minimized",{id:o})},[]),Pe=(0,F.useCallback)(o=>{let h=w.current.panels[o]?.state==="minimized";a(c=>{let d=c.panels[o];if(!d||d.state!=="minimized")return c;let A=c.minimized.filter(ee=>ee.id!==o);if((d.previousState||"docked")==="floating"){l.current+=1;let ee=g.get(d.component),re=d.lastFloatingRect||ee?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350},ne=q(re,c.floating);return{...c,minimized:A,floating:[...c.floating,{...ne,id:o,z:l.current,anchor:d.lastFloatingRect?.anchor??null}],panels:{...c.panels,[o]:{...d,state:"floating"}}}}else{let ee=(Ce,i)=>Ce.type==="leaf"?Ce.id===i:Ce.children.some(W=>ee(W,i)),re=d.lastLeafId&&ee(c.gridRoot,d.lastLeafId),ne=g.get(d.component),se=ne?.defaultOptions?.canDrag!==!1;if(re)return{...c,minimized:A,gridRoot:ie(c.gridRoot,d.lastLeafId,o),panels:{...c.panels,[o]:{...d,state:"docked"}}};if(se){l.current+=1;let Ce=d.lastFloatingRect||ne?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350},i=q(Ce,c.floating);return{...c,minimized:A,floating:[...c.floating,{...i,id:o,z:l.current,anchor:d.lastFloatingRect?.anchor??null}],panels:{...c.panels,[o]:{...d,state:"floating"}}}}else{let Ce=ye(c.gridRoot)||"group-default";return{...c,minimized:A,gridRoot:ie(c.gridRoot,Ce,o),panels:{...c.panels,[o]:{...d,state:"docked"}}}}}}),h&&O.current.publish("panel:restored",{id:o})},[q]),Re=(0,F.useCallback)((o,h,c)=>{a(d=>{let A=d.panels[o];if(!A||g.get(A.component)?.defaultOptions?.canDrag===!1)return d;let ee=g.get(A.component),re=h||ee?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350},ne=U(d.gridRoot,o);l.current+=1;let se=q(re,d.floating);return{...d,gridRoot:ne||{type:"leaf",id:"group-default",panels:[],activePanelId:null},floating:[...d.floating,{...se,id:o,z:l.current,anchor:c??null}],panels:{...d.panels,[o]:{...A,state:"floating"}}}})},[q]),ze=(0,F.useCallback)((o,h)=>{a(c=>{let d=c.panels[o];if(!d)return c;let A=c.floating.filter(re=>re.id!==o),S=U(c.gridRoot,o),ee=h||ye(S||c.gridRoot)||"group-default";return{...c,gridRoot:ie(S||c.gridRoot,ee,o),floating:A,panels:{...c.panels,[o]:{...d,state:"docked"}}}})},[]),Ee=(o,h,c,d,A)=>{if(o.type==="leaf"){if(o.id===h){let S={type:"leaf",id:`group-split-${Date.now()}-${Math.floor(Math.random()*1e3)}`,panels:[c],activePanelId:c},ee=d==="left"||d==="right"?"horizontal":"vertical",re=d==="left"||d==="top"?[S,o]:[o,S],ne=d==="left"||d==="top"?[A,1-A]:[1-A,A];return{type:"branch",orientation:ee,sizes:ne,children:re}}return o}else return{...o,children:o.children.map(S=>Ee(S,h,c,d,A))}},Fe=(0,F.useCallback)(o=>{a(h=>({...h,draggedPanelId:o}))},[]),Mt=(0,F.useCallback)((o,h,c)=>{a(d=>{let A=d.panels[o];if(!A)return d;let S=d.floating.filter(ne=>ne.id!==o),ee=U(d.gridRoot,o),re;return c==="center"?re=ie(ee||d.gridRoot,h,o):re=Ee(ee||d.gridRoot,h,o,c,d.splitRatio),{...d,gridRoot:re,floating:S,panels:{...d.panels,[o]:{...A,state:"docked"}},draggedPanelId:null}})},[]),Tt=(0,F.useCallback)((o,h)=>{a(c=>{let d=c.panels[o];if(!d)return c;let A=c.floating.filter(i=>i.id!==o),S=U(c.gridRoot,o),ee={type:"leaf",id:`group-edge-${Date.now()}-${Math.floor(Math.random()*1e3)}`,panels:[o],activePanelId:o},re=h==="left"||h==="right"?"horizontal":"vertical",ne=h==="left"||h==="top"?[ee,S||c.gridRoot]:[S||c.gridRoot,ee],se=c.edgeSplitRatio,Ce={type:"branch",orientation:re,sizes:h==="left"||h==="top"?[se,1-se]:[1-se,se],children:ne};return{...c,gridRoot:Ce,floating:A,panels:{...c.panels,[o]:{...d,state:"docked"}},draggedPanelId:null}})},[]),Ht=(0,F.useCallback)((o,h,c)=>{a(d=>{let A=d.panels[o];if(!A)return d;let S=U(d.gridRoot,o),ee=se=>{if(se.type==="leaf"){if(se.id===h){let Ce=se.panels.filter(x=>x!==o),i=Math.max(0,Math.min(c,Ce.length)),W=[...Ce];return W.splice(i,0,o),{...se,panels:W,activePanelId:o}}return se}else return{...se,children:se.children.map(ee)}},re=ee(S||d.gridRoot),ne=d.floating.filter(se=>se.id!==o);return{...d,gridRoot:re,floating:ne,panels:{...d.panels,[o]:{...A,state:"docked"}},draggedPanelId:null}})},[]),ut=(0,F.useCallback)(o=>{a(h=>{let c=A=>{if(A.type==="leaf")return A.id===o&&A.canClose!==!1?null:A;{let S=A.children.map(ne=>c(ne)).filter(ne=>ne!==null);if(S.length===0)return null;if(S.length===1)return S[0];let ee=A.sizes.slice(0,S.length),re=ee.reduce((ne,se)=>ne+se,0);return{...A,children:S,sizes:ee.map(ne=>ne/re)}}},d=c(h.gridRoot);return{...h,gridRoot:d||{type:"leaf",id:"group-default",panels:[],activePanelId:null}}})},[]),We=(0,F.useCallback)(o=>{a(h=>({...h,floating:h.floating.map(c=>c.id===o?{...c,maximized:!c.maximized}:c)}))},[]),Bt=(0,F.useCallback)((o,h)=>{let c=(d,A)=>{if(d.type==="leaf")return d;if(A===o.length)return{...d,sizes:h};let S=o[A],ee=d.children.map((re,ne)=>ne===S?c(re,A+1):re);return{...d,children:ee}};a(d=>({...d,gridRoot:c(d.gridRoot,0)}))},[]),$t=(0,F.useCallback)((o,h)=>{a(c=>({...c,floating:c.floating.map(d=>d.id===o?{...d,...h}:d)}))},[]),pt=(0,F.useCallback)(()=>JSON.stringify({gridRoot:w.current.gridRoot,floating:w.current.floating,minimized:w.current.minimized,panels:w.current.panels}),[]),ot=(0,F.useCallback)(o=>{try{let h=JSON.parse(o);if(h.gridRoot&&h.floating&&h.minimized&&h.panels){let c=h.floating.map(A=>{if("stickyRight"in A||"stickyBottom"in A){let S=A.stickyRight&&A.stickyBottom?"bottom-right":A.stickyRight?"top-right":A.stickyBottom?"bottom-left":null,{stickyRight:ee,stickyBottom:re,...ne}=A;return{...ne,anchor:S}}return A}),d=Object.keys(h.panels)[0]||null;return a(A=>({...A,gridRoot:h.gridRoot,floating:c,minimized:h.minimized,panels:h.panels,draggedPanelId:null,activePanelId:d})),!0}return!1}catch(h){return console.error("Failed to parse layout configuration:",h),!1}},[]),kt=(0,F.useCallback)(o=>{a(h=>h.activePanelId===o?h:{...h,activePanelId:o})},[]),Yt=(0,F.useCallback)(o=>{a(h=>h.dir===o?h:{...h,dir:o,isRtl:o==="rtl"})},[]),Ke=(0,F.useCallback)(o=>o in w.current.panels,[]),Ge=(0,F.useCallback)(()=>Object.keys(w.current.panels),[]);(0,F.useEffect)(()=>{k&&a(o=>o.dir===k?o:{...o,dir:k,isRtl:k==="rtl"})},[k]);let St=(0,F.useRef)(new Map),It=(0,F.useRef)(null),Et=(0,F.useCallback)(o=>(It.current=o,()=>{It.current=null}),[]),rt=(0,F.useCallback)(o=>{It.current?.(o)},[]),it=(0,F.useCallback)((o,h)=>(St.current.set(o,h),()=>{St.current.delete(o)}),[]),st=(0,F.useCallback)(o=>St.current.get(o)?.()??[],[]),je=(0,F.useMemo)(()=>({openPanel:ge,closePanel:te,minimizePanel:fe,restorePanel:Pe,floatPanel:Re,dockPanel:ze,maximizePanel:We,updateSplitSizes:Bt,updateFloatingPosition:$t,focusPanel:ae,isOpen:Ke,getOpenPanelIds:Ge,saveLayout:pt,loadLayout:ot,publish:G,subscribe:L,setDraggedPanelId:Fe,dockPanelToGroup:Mt,movePanelOrder:Ht,closeLeafGroup:ut,registerCloseGuard:N,unregisterCloseGuard:f,setPanelDirty:X,updatePanelTitle:Q,requestClosePanel:j,dockPanelToWorkspaceEdge:Tt,setActivePanel:kt,setDirection:Yt,registerPanelContextMenu:it,getPanelContextMenuItems:st,showContextMenu:rt,registerContextMenuFn:Et}),[ge,te,fe,Pe,Re,ze,We,Bt,$t,ae,Ke,Ge,pt,ot,G,L,Fe,Mt,Ht,ut,N,f,X,Q,j,Tt,kt,Yt,it,st,rt,Et]),Xt=o=>{let h=o.defaultMessage||o.id;return o.values&&Object.entries(o.values).forEach(([c,d])=>{h=h.replace(`{${c}}`,String(d))}),h},un=(0,F.useMemo)(()=>({modalClass:b,modalBodyClass:z,sidePanelClass:m,sidePanelBodyClass:M,windowClass:P,windowBodyClass:y}),[b,z,m,M,P,y]);(0,F.useEffect)(()=>{if(process.env.NODE_ENV==="development")try{getComputedStyle(document.documentElement).getPropertyValue("--rdd-styles-loaded").trim()!=="1"&&console.error(`[react-dockable-desktop] styles.css is not imported.
2
2
  Add this to your entry file (main.tsx / index.tsx):
3
3
  import 'react-dockable-desktop/styles.css'
4
- Without it the workspace renders as a black screen with no console errors.`)}catch{}},[]),(0,O.useEffect)(()=>{if(t)return t._connect(Ke),()=>{t._disconnect()}},[t,Ke]);let Yt=(0,O.useMemo)(()=>({getSnapshot:b,subscribeToState:R}),[b,R]);return(0,Ue.jsx)(Ln.Provider,{value:an,children:(0,Ue.jsx)(Nn.Provider,{value:g,children:(0,Ue.jsx)(En.Provider,{value:Yt,children:(0,Ue.jsx)(vt.Provider,{value:I,children:(0,Ue.jsx)(jt.Provider,{value:Ke,children:(0,Ue.jsx)(Sn.Provider,{value:F||$t,children:(0,Ue.jsx)(In.Provider,{value:k,children:e})})})})})})})},kn=e=>()=>{};function $e(e){let t=(0,O.useContext)(vt),n=(0,O.useContext)(En),i=(0,O.useRef)(e);i.current=e;let s=(0,O.useSyncExternalStore)(e?n?.subscribeToState??kn:kn,()=>{let x=n?.getSnapshot()??t;return i.current?i.current(x):x},()=>{let x=n?.getSnapshot()??t;return i.current?i.current(x):x});if(!t)throw new Error("useWindowManagerState must be used within WindowManagerProvider");return e?s:t}var yt=()=>{let e=(0,O.useContext)(jt);if(!e)throw new Error("useWindowManagerActions must be used within WindowManagerProvider");return e},un=()=>{let e=(0,O.useContext)(jt);if(!e)throw new Error("useWindowManagerActionsInternal must be used within WindowManagerProvider");return e},He=()=>(0,O.useContext)(Sn)||(t=>{let n=t.defaultMessage||t.id;return t.values&&Object.entries(t.values).forEach(([i,s])=>{n=n.replace(`{${i}}`,String(s))}),n}),ve=(e,t)=>e?typeof e=="string"?e:t(e):"",zn=()=>{let{publish:e,subscribe:t}=yt();return{publish:e,subscribe:t}},Ye=()=>(0,O.useContext)(In),pn=()=>mt().instanceId;function Wn(e){let t=(0,O.useContext)(jt),n=pn(),i=(0,O.useRef)(e);i.current=e,(0,O.useEffect)(()=>{if(!(!t?.registerPanelContextMenu||!n))return t.registerPanelContextMenu(n,()=>i.current)},[n,t?.registerPanelContextMenu])}var be=cn(require("react"),1),gn=require("react-dom"),de=require("react/jsx-runtime");function _o(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 Pt(e,t){return typeof e=="string"?e:t?t(e):e.defaultMessage??e.id}function fn(e){return"separator"in e}function Jt(e){return!fn(e)&&"items"in e}var On=(0,be.forwardRef)(({items:e,x:t,y:n,theme:i,fmt:s,onClose:x,onMouseEnter:W,onMouseLeave:m},T)=>((0,be.useLayoutEffect)(()=>{let w=T?.current;if(!w)return;let y=w.getBoundingClientRect(),g=8;y.right>window.innerWidth-g&&(w.style.left=`${Math.max(g,window.innerWidth-y.width-g)}px`,w.style.right="auto"),y.bottom>window.innerHeight-g&&(w.style.top=`${Math.max(g,window.innerHeight-y.height-g)}px`),y.left<g&&(w.style.left=`${g}px`,w.style.right="auto"),y.top<g&&(w.style.top=`${g}px`)}),(0,gn.createPortal)((0,de.jsx)("div",{ref:T,className:`dw-context-menu dw-context-menu--${i} dw-context-menu--submenu`,style:{position:"fixed",left:t,top:n,zIndex:9501},role:"menu",onMouseEnter:W,onMouseLeave:m,children:e.map((w,y)=>{if(fn(w))return(0,de.jsx)("hr",{className:"dw-context-menu__separator",role:"separator"},y);let g=w,F=g.checkbox&&g.checkbox.active!==!1,E=F&&g.checkbox.value,S=g.disabled===!0||(F?g.checkbox.enabled===!1:!1);return(0,de.jsxs)("button",{type:"button",className:`dw-context-menu__item${S?" dw-context-menu__item--disabled":""}`,title:g.title?Pt(g.title,s):void 0,disabled:S,"data-cy-action":g.cyAction,onClick:()=>{S||(g.action?.(),x())},role:"menuitem","aria-checked":F?E:void 0,children:[g.icon?(0,de.jsx)("span",{className:"dw-context-menu__icon",children:g.icon}):(0,de.jsx)("span",{className:"dw-context-menu__icon","aria-hidden":"true"}),(0,de.jsx)("span",{className:"dw-context-menu__label",children:Pt(g.label,s)}),F&&(0,de.jsx)("span",{className:`dw-context-menu__checkbox${E?" dw-context-menu__checkbox--checked":""}`,"aria-hidden":"true",children:(0,de.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,de.jsx)("rect",{x:"0.75",y:"0.75",width:"10.5",height:"10.5",rx:"2",fill:"none",stroke:"currentColor",strokeWidth:"1.5"}),E&&(0,de.jsx)("path",{d:"M2.5 6 L4.5 8.5 L9.5 3.5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})]})})]},y)})}),document.body)));On.displayName="ContextMenuSubMenuPanel";var Dn={visible:!1,x:0,y:0,items:[]},Qt=(0,be.forwardRef)(({theme:e="dark",formatMessageProvider:t,onShow:n,onHide:i,onOpenChange:s,className:x,style:W},m)=>{let[T,w]=(0,be.useState)(Dn),[y,g]=(0,be.useState)(null),F=(0,be.useRef)(null),E=(0,be.useRef)(null),S=(0,be.useRef)(new Map),I=(0,be.useRef)({open:null,close:null}),a=be.default.useCallback(()=>{w(Dn),g(null),I.current.open&&clearTimeout(I.current.open),I.current.close&&clearTimeout(I.current.close),I.current.open=null,I.current.close=null,i?.(),s?.(!1)},[i,s]);if((0,be.useImperativeHandle)(m,()=>({show({event:l,x:L,y:X,items:V}){let se=l?_o(l):{x:L??0,y:X??0};S.current.clear(),w({visible:!0,x:se.x,y:se.y,items:V}),g(null),n?.(),s?.(!0)}}),[n,s]),(0,be.useEffect)(()=>{if(!T.visible)return;let l=L=>{F.current?.contains(L.target)||E.current?.contains(L.target)||a()};return document.addEventListener("pointerdown",l,{capture:!0}),window.addEventListener("click",l),()=>{document.removeEventListener("pointerdown",l,{capture:!0}),window.removeEventListener("click",l)}},[T.visible,a]),(0,be.useEffect)(()=>{if(!T.visible)return;let l=L=>{L.key==="Escape"&&a()};return document.addEventListener("keydown",l),()=>document.removeEventListener("keydown",l)},[T.visible,a]),(0,be.useLayoutEffect)(()=>{if(!T.visible||!F.current)return;let l=F.current,L=l.getBoundingClientRect(),X=8;L.right>window.innerWidth-X&&(l.style.left=`${Math.max(X,window.innerWidth-L.width-X)}px`),L.bottom>window.innerHeight-X&&(l.style.top=`${Math.max(X,window.innerHeight-L.height-X)}px`),L.left<X&&(l.style.left=`${X}px`),L.top<X&&(l.style.top=`${X}px`)},[T.visible]),!T.visible)return null;let M=t,u=0,b=0;if(y!==null){let l=S.current.get(y);if(l){let L=l.getBoundingClientRect();u=document.documentElement.dir==="rtl"?window.innerWidth-L.left+2:L.right+2,b=L.top}}function R(){I.current.open&&(clearTimeout(I.current.open),I.current.open=null)}function H(){I.current.close&&(clearTimeout(I.current.close),I.current.close=null)}function k(l,L){H(),y!==null&&y!==l&&(R(),g(null)),Jt(L)&&L.items?.length?(R(),I.current.open=setTimeout(()=>{g(l)},150)):Jt(L)||(R(),y!==null&&(I.current.close=setTimeout(()=>g(null),200)))}function D(l){R(),Jt(l)&&l.items?.length&&(I.current.close=setTimeout(()=>g(null),200))}return(0,gn.createPortal)((0,de.jsxs)(de.Fragment,{children:[(0,de.jsx)("div",{ref:F,className:`dw-context-menu dw-context-menu--${e}${x?` ${x}`:""}`,style:{position:"fixed",left:T.x,top:T.y,zIndex:9500,...W},role:"menu","aria-orientation":"vertical",children:T.items.map((l,L)=>{if(fn(l))return(0,de.jsx)("hr",{className:"dw-context-menu__separator",role:"separator"},L);if(Jt(l))return(0,de.jsxs)("button",{ref:ie=>{S.current.set(L,ie)},type:"button",className:`dw-context-menu__item dw-context-menu__item--has-submenu${y===L?" dw-context-menu__item--submenu-open":""}`,title:l.title?Pt(l.title,M):void 0,onMouseEnter:()=>k(L,l),onMouseLeave:()=>D(l),role:"menuitem","aria-haspopup":"true","aria-expanded":y===L,children:[(0,de.jsx)("span",{className:"dw-context-menu__icon","aria-hidden":"true"}),(0,de.jsx)("span",{className:"dw-context-menu__label",children:Pt(l.label,M)}),(0,de.jsx)("span",{className:"dw-context-menu__chevron","aria-hidden":"true",children:"\u203A"})]},L);let X=l,V=X.checkbox&&X.checkbox.active!==!1,se=V&&X.checkbox.value,U=X.disabled===!0||(V?X.checkbox.enabled===!1:!1);return(0,de.jsxs)("button",{ref:ie=>{S.current.set(L,ie)},type:"button",className:`dw-context-menu__item${U?" dw-context-menu__item--disabled":""}`,title:X.title?Pt(X.title,M):void 0,disabled:U,"data-cy-action":X.cyAction,onClick:()=>{U||(X.action?.(),a())},onMouseEnter:()=>k(L,l),onMouseLeave:()=>D(l),role:"menuitem","aria-checked":V?se:void 0,children:[X.icon?(0,de.jsx)("span",{className:"dw-context-menu__icon",children:X.icon}):(0,de.jsx)("span",{className:"dw-context-menu__icon","aria-hidden":"true"}),(0,de.jsx)("span",{className:"dw-context-menu__label",children:Pt(X.label,M)}),V&&(0,de.jsx)("span",{className:`dw-context-menu__checkbox${se?" dw-context-menu__checkbox--checked":""}`,"aria-hidden":"true",children:(0,de.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,de.jsx)("rect",{x:"0.75",y:"0.75",width:"10.5",height:"10.5",rx:"2",fill:se?"currentColor":"none",stroke:"currentColor",strokeWidth:"1.5"}),se&&(0,de.jsx)("path",{d:"M2.5 6 L4.5 8.5 L9.5 3.5",stroke:"white",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})]})})]},L)})}),y!==null&&(()=>{let l=T.items[y];return(0,de.jsx)(On,{ref:E,items:l.items??[],x:u,y:b,theme:e,fmt:M,onClose:a,onMouseEnter:()=>H(),onMouseLeave:()=>{I.current.close=setTimeout(()=>g(null),200)}})})()]}),document.body)});Qt.displayName="ContextMenu";var lt={Component:Qt},xt=be.default.createContext(null),en=({adapter:e=lt,children:t,...n})=>{let i=(0,be.useRef)(null),[s,x]=be.default.useState(!1),W=be.default.useCallback(m=>{i.current?.show(m)},[]);return(0,de.jsxs)(xt.Provider,{value:{show:W,isOpen:s},children:[t,(0,de.jsx)(e.Component,{ref:i,...n,onShow:()=>{x(!0),n.onShow?.()},onHide:()=>{x(!1),n.onHide?.()}})]})};function An(){let e=be.default.useContext(xt);if(!e)throw new Error("useShowContextMenu must be used within a ContextMenuProvider");return e.show}var xe=require("react"),hn=require("react/jsx-runtime"),Ho=0,mn=()=>`panel-${++Ho}-${Date.now()}`,tn=new Map,Fn={leftPanel:null,rightPanel:null,modals:[]},_n=(0,xe.createContext)(null),Hn=(0,xe.createContext)(null),nn=({children:e})=>{let[t,n]=(0,xe.useState)(Fn),i=(0,xe.useRef)(t);i.current=t;let s=(0,xe.useCallback)((a,M)=>{tn.set(a,M)},[]),x=(0,xe.useCallback)(a=>{tn.delete(a)},[]),W=(0,xe.useCallback)(async(a,M,u={})=>{let b=i.current.leftPanel;if(b){let k=tn.get(b.id);if(k&&!await k())return null}let R=mn(),H={id:R,Component:a,props:M,containerType:"left-panel",options:u};return n(k=>({...k,leftPanel:H})),R},[]),m=(0,xe.useCallback)(async(a,M,u={})=>{let b=i.current.rightPanel;if(b){let k=tn.get(b.id);if(k&&!await k())return null}let R=mn(),H={id:R,Component:a,props:M,containerType:"right-panel",options:u};return n(k=>({...k,rightPanel:H})),R},[]),T=(0,xe.useCallback)((a,M,u={})=>{let b=mn(),R=M.title,H={...u,title:u.title||R||"Confirmation"},k={id:b,Component:a,props:M,containerType:"modal",options:H};return n(D=>({...D,modals:[...D.modals,k]})),b},[]),w=(0,xe.useCallback)(a=>{n(M=>({leftPanel:M.leftPanel?.id===a?null:M.leftPanel,rightPanel:M.rightPanel?.id===a?null:M.rightPanel,modals:M.modals.filter(u=>u.id!==a)}))},[]),y=(0,xe.useCallback)(()=>{n(Fn)},[]),g=(0,xe.useCallback)(()=>{n(a=>({...a,modals:[]}))},[]),F=(0,xe.useCallback)(a=>t.leftPanel?.id===a?t.leftPanel:t.rightPanel?.id===a?t.rightPanel:t.modals.find(M=>M.id===a),[t]),E=(0,xe.useCallback)((a,M)=>{n(u=>({leftPanel:u.leftPanel?.id===a?{...u.leftPanel,...M}:u.leftPanel,rightPanel:u.rightPanel?.id===a?{...u.rightPanel,...M}:u.rightPanel,modals:u.modals.map(b=>b.id===a?{...b,...M}:b)}))},[]),S=(0,xe.useCallback)((a,M,u)=>{E(a,{dirty:M,dirtyOptions:u})},[E]),I=(0,xe.useMemo)(()=>({openLeftPanel:W,openRightPanel:m,openModal:T,close:w,closeAll:y,closeAllModals:g,getInstance:F,updateInstance:E,setDirty:S,registerCloseHandler:s,unregisterCloseHandler:x}),[W,m,T,w,y,g,F,E,S,s,x]);return(0,hn.jsx)(_n.Provider,{value:t,children:(0,hn.jsx)(Hn.Provider,{value:I,children:e})})},Ve=()=>{let e=(0,xe.useContext)(_n);if(!e)throw new Error("usePanelState must be used within PanelProvider");return e},Je=()=>{let e=(0,xe.useContext)(Hn);if(!e)throw new Error("usePanelActions must be used within PanelProvider");return e};var Nt=require("react");var Be=require("react/jsx-runtime"),Bo=({title:e,message:t,alert:n,alertType:i="info",useYesNoTitles:s=!1,onOK:x,onCancel:W})=>{let{requestClose:m,setIcon:T,setTitle:w}=mt(),y=He(),g=Ye(),F=(0,Nt.useRef)(null);(0,Nt.useEffect)(()=>{if(e){let u=typeof e=="string"?e:y(e);w(u)}T&&T((0,Be.jsx)("span",{children:"\u2753"}))},[e,w,T,y]),(0,Nt.useEffect)(()=>{F.current?.focus()},[]);let E=typeof t=="string"?t:y(t),S=y(s?g.no:g.cancel),I=y(s?g.yes:g.ok),a=u=>{u.preventDefault(),x?.(),m()},M=()=>{W?.(),m()};return(0,Be.jsxs)("form",{onSubmit:a,className:"confirmation-form-body",children:[n&&(0,Be.jsxs)("div",{className:`confirmation-alert confirmation-alert-${i}`,children:[(0,Be.jsx)("span",{children:"\u2139\uFE0F"}),(0,Be.jsx)("span",{children:n})]}),(0,Be.jsx)("div",{style:{fontSize:"0.9rem",color:"inherit",lineHeight:1.5},children:E}),(0,Be.jsx)("hr",{style:{marginTop:"0.5rem",marginBottom:"0.5rem",opacity:.1}}),(0,Be.jsxs)("div",{className:"confirmation-actions",children:[(0,Be.jsx)("button",{type:"button",className:"dw-btn dw-btn-sm dw-btn-outline",onClick:M,children:S}),(0,Be.jsx)("button",{type:"submit",className:"dw-btn dw-btn-sm dw-btn-primary",ref:F,children:I})]})]})},Qe=Bo;function zt(e){return e==="top-left"?"top-right":e==="top-right"?"top-left":e==="bottom-left"?"bottom-right":"bottom-left"}var p=require("react/jsx-runtime"),Bn=(e,t)=>{if(!e)return null;if(e.type==="leaf")return e.id===t?e:null;for(let n of e.children){let i=Bn(n,t);if(i)return i}return null},Wt=new Map,on="preserved-dom-container",bn=(0,p.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{display:"block"},children:[(0,p.jsx)("rect",{x:"3",y:"3",width:"7",height:"9",rx:"1"}),(0,p.jsx)("rect",{x:"14",y:"3",width:"7",height:"5",rx:"1"}),(0,p.jsx)("rect",{x:"14",y:"12",width:"7",height:"9",rx:"1"}),(0,p.jsx)("rect",{x:"3",y:"16",width:"7",height:"5",rx:"1"})]}),wt={float:(0,p.jsx)("span",{className:"wm-menu-icon",children:(0,p.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{display:"block"},children:[(0,p.jsx)("rect",{x:"2",y:"8",width:"14",height:"14",rx:"1"}),(0,p.jsx)("rect",{x:"8",y:"2",width:"14",height:"14",rx:"1"})]})}),minimize:(0,p.jsx)("span",{className:"wm-menu-icon",children:(0,p.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",style:{display:"block"},children:(0,p.jsx)("line",{x1:"4",y1:"18",x2:"20",y2:"18"})})}),restore:(0,p.jsx)("span",{className:"wm-menu-icon",children:(0,p.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{display:"block"},children:(0,p.jsx)("rect",{x:"4",y:"4",width:"16",height:"16",rx:"1"})})}),maximize:(0,p.jsx)("span",{className:"wm-menu-icon",children:(0,p.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{display:"block"},children:(0,p.jsx)("rect",{x:"2",y:"2",width:"20",height:"20",rx:"1"})})}),close:(0,p.jsx)("span",{className:"wm-menu-icon",children:(0,p.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{display:"block"},children:(0,p.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})},$n=e=>{let t=Wt.get(e);return t||(t=document.createElement("div"),t.style.width="100%",t.style.height="100%",Wt.set(e,t)),t},$o=(e,t,n)=>{let i=n.get(t);if(!i)return console.warn(`[react-dockable-desktop] Panel "${e}" references component key "${t}" which is not registered. Add it to the WorkspaceClient panels config:
5
- new WorkspaceClient({ panels: { "${t}": { component: YourComponent } } })`),(0,p.jsxs)("div",{className:"dw-unregistered-panel",style:{border:"2px dashed #dc3545"},children:[(0,p.jsx)("h6",{style:{fontWeight:700,marginBottom:"0.25rem"},children:"\u26A0\uFE0F Component Unregistered"}),(0,p.jsxs)("span",{style:{fontSize:"0.875rem",color:"var(--text-secondary, #94a3b8)"},children:["Key: ",t]})]});let s=i.Component;return(0,p.jsx)(s,{panelId:e})},yn=new Map,et=new Map,ct=e=>{let t=et.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},et.set(e,t)),t},Yn=({panelId:e})=>{let t=(0,G.useRef)(null);return(0,G.useEffect)(()=>{let n=t.current;if(!n)return;let i=$n(e);n.appendChild(i);let s=new ResizeObserver(x=>{for(let W of x){let{width:m,height:T}=W.contentRect;if(m>0&&T>0){yn.set(e,{width:m,height:T});let w=et.get(e);w&&w.onResize.forEach(y=>y(m,T))}}});return s.observe(n),()=>{s.disconnect();let x=document.getElementById(on);x||(x=document.createElement("div"),x.id=on,x.style.display="none",document.body.appendChild(x)),x.appendChild(i)}},[e]),(0,p.jsx)("div",{ref:t,style:{width:"100%",height:"100%"}})},Yo=({panelId:e})=>{let t=$e(),n=bt(),i=He(),s=(0,G.useRef)(null),x=t.panels[e],W=x?n.get(x.component):null,m=W?.defaultOptions?.disableLivePreview||!1,T=yn.get(e)||{width:800,height:500},w=T.width,y=T.height,E=Math.min(220/w,140/y);if((0,G.useEffect)(()=>{if(m)return;let S=s.current;if(!S)return;let I=Wt.get(e);if(I)return S.appendChild(I),()=>{let a=document.getElementById(on);a||(a=document.createElement("div"),a.id=on,a.style.display="none",document.body.appendChild(a)),a.appendChild(I)}},[e,m]),m){let S=w*E,I=y*E,a=x?.title||W?.defaultOptions?.title||"Panel",M=ve(a,i),u=(Array.from(M)[0]||"P").toUpperCase();return(0,p.jsx)("div",{className:"taskbar-item-preview-frame",style:{width:`${S}px`,height:`${I}px`,display:"flex",alignItems:"center",justifyContent:"center",background:"rgba(108, 117, 125, 0.15)",border:"1px dashed var(--taskbar-item-border, rgba(255, 255, 255, 0.15))"},children:(0,p.jsx)("div",{style:{fontSize:"2rem",fontWeight:600,color:"var(--panel-title-color, var(--panel-text, rgba(255, 255, 255, 0.85)))",userSelect:"none"},children:u})})}return(0,p.jsx)("div",{className:"taskbar-item-preview-frame",style:{width:`${w*E}px`,height:`${y*E}px`},children:(0,p.jsx)("div",{ref:s,className:"taskbar-item-preview-host",style:{width:`${w}px`,height:`${y}px`,transform:`scale(${E})`,transformOrigin:"top left",position:"absolute",top:0,left:0,"--preview-scale":E}})})},Xo=({panelId:e,children:t})=>{let n=$e(),{requestClosePanel:i,setPanelDirty:s,registerCloseGuard:x,unregisterCloseGuard:W,updatePanelTitle:m,minimizePanel:T}=yt(),w=n.minimized.some(u=>u.id===e),y=(0,G.useRef)(w);(0,G.useEffect)(()=>{let u=et.get(e);u&&(w&&!y.current?u.onMinimize.forEach(b=>b()):!w&&y.current&&u.onRestore.forEach(b=>b()),y.current=w)},[w,e]);let g=n.activePanelId===e,F=(0,G.useRef)(g);(0,G.useEffect)(()=>{let u=F.current;F.current=g;let b=et.get(e);b&&(g&&!u?b.onActivate.forEach(R=>R()):!g&&u&&b.onDeactivate.forEach(R=>R()))},[g,e]);let E=n.panels[e]?.state,S=E==="floating"?"floating-window":"dockable-panel",I=(0,G.useRef)(S);(0,G.useEffect)(()=>{if(E==="minimized")return;let u=I.current;I.current=S;let b=et.get(e);b&&S!==u&&b.onContainerTypeChange.forEach(R=>R(S))},[S,E,e]),(0,G.useEffect)(()=>()=>{let u=et.get(e);u&&(F.current&&u.onDeactivate.forEach(b=>b()),u.onClose.forEach(b=>b()),et.delete(e))},[e]);let a=(0,G.useRef)(S),M=G.default.useMemo(()=>({requestClose:u=>i(e,u),setDirty:u=>s(e,u),onCloseRequested:u=>(x(e,u),()=>W(e)),setTitle:u=>m(e,u),instanceId:e,containerType:a.current,onClose:u=>{let b=ct(e);return b.onClose.add(u),()=>b.onClose.delete(u)},onMinimize:u=>{let b=ct(e);return b.onMinimize.add(u),()=>b.onMinimize.delete(u)},onRestore:u=>{let b=ct(e);return b.onRestore.add(u),()=>b.onRestore.delete(u)},onResize:u=>{let b=ct(e);return b.onResize.add(u),()=>b.onResize.delete(u)},requestMinimize:()=>T(e),getDimensions:()=>yn.get(e)??null,onActivate:u=>{let b=ct(e);return b.onActivate.add(u),()=>b.onActivate.delete(u)},onDeactivate:u=>{let b=ct(e);return b.onDeactivate.add(u),()=>b.onDeactivate.delete(u)},onContainerTypeChange:u=>{let b=ct(e);return b.onContainerTypeChange.add(u),()=>b.onContainerTypeChange.delete(u)}}),[e,i,s,x,W,m,T]);return(0,p.jsx)(je,{value:M,children:t})},Xn=({node:e,path:t,onTabRightClick:n,activeDropZone:i,onHoverDropZone:s,onTabDragStart:x,hoveredTab:W,onTabHover:m,defaultPanelIcon:T,onRequestClosePanel:w})=>{let{updateSplitSizes:y}=yt();if(e.type==="leaf")return(0,p.jsx)(Go,{leaf:e,onTabRightClick:n,activeDropZone:i,onHoverDropZone:s,onTabDragStart:x,hoveredTab:W,onTabHover:m,defaultPanelIcon:T,onRequestClosePanel:w});let g=e.orientation==="horizontal",F=(E,S)=>{S.preventDefault();let I=S.currentTarget;I.setPointerCapture(S.pointerId);let a=g?S.clientX:S.clientY,M=[...e.sizes];I.classList.add("active"),document.body.classList.add("resizing-active",g?"resizing-col-active":"resizing-row-active");let u=I.parentElement,b=u?g?u.clientWidth:u.clientHeight:g?1e3:800,R=k=>{let l=((g?k.clientX:k.clientY)-a)/b,L=[...M];L[E]+=l,L[E+1]-=l,L[E]>.1&&L[E+1]>.1&&y(t,L)},H=()=>{I.classList.remove("active"),document.body.classList.remove("resizing-active","resizing-row-active","resizing-col-active"),I.removeEventListener("pointermove",R),I.removeEventListener("pointerup",H),I.removeEventListener("pointercancel",H)};I.addEventListener("pointermove",R),I.addEventListener("pointerup",H),I.addEventListener("pointercancel",H)};return(0,p.jsx)("div",{style:{display:"flex",flexDirection:g?"row":"column",width:"100%",height:"100%",overflow:"hidden",position:"relative"},children:e.children.map((E,S)=>{let I=e.sizes[S]*100;return(0,p.jsxs)(G.default.Fragment,{children:[(0,p.jsx)("div",{style:{flexGrow:e.sizes[S],flexBasis:`${I}%`,overflow:"hidden",position:"relative"},children:(0,p.jsx)(Xn,{node:E,path:[...t,S],onTabRightClick:n,activeDropZone:i,onHoverDropZone:s,onTabDragStart:x,hoveredTab:W,onTabHover:m,defaultPanelIcon:T,onRequestClosePanel:w})}),S<e.children.length-1&&(0,p.jsx)("div",{onPointerDown:a=>F(S,a),style:{cursor:g?"col-resize":"row-resize",width:g?"1px":"100%",height:g?"100%":"1px",zIndex:20},className:"resizer-bar"})]},S)})})},Go=({leaf:e,onTabRightClick:t,activeDropZone:n,onHoverDropZone:i,onTabDragStart:s,hoveredTab:x,onTabHover:W,defaultPanelIcon:m,onRequestClosePanel:T})=>{let w=$e(),y=bt(),{openPanel:g,closeLeafGroup:F,setActivePanel:E}=un(),S=He(),I=Ye(),{windowClass:a,windowBodyClass:M}=Ge(),u=(0,G.useRef)(null),[b,R]=(0,G.useState)({left:!1,right:!1}),H=(0,G.useCallback)(()=>{let l=u.current;l&&R({left:l.scrollLeft>0,right:l.scrollLeft<l.scrollWidth-l.clientWidth-1})},[]);(0,G.useEffect)(()=>{let l=u.current;if(!l)return;l.addEventListener("scroll",H,{passive:!0});let L=new ResizeObserver(H);return L.observe(l),H(),()=>{l.removeEventListener("scroll",H),L.disconnect()}},[H]);let k=l=>{u.current?.scrollBy({left:l==="left"?-120:120,behavior:"smooth"})},D=l=>{g(l,w.panels[l].component),E(l)};return(0,p.jsxs)("div",{"data-active-panel-id":e.activePanelId||"",className:`workspace-panel ${a??""}`,style:{overflow:"hidden",position:"relative"},children:[(0,p.jsxs)("div",{className:"workspace-tab-bar",style:{minHeight:"38px"},children:[b.left&&(0,p.jsx)("button",{className:"tab-scroll-btn tab-scroll-btn-left",onPointerDown:l=>l.stopPropagation(),onClick:()=>k("left"),tabIndex:-1,"aria-label":"Scroll tabs left",children:"\u2039"}),(0,p.jsx)("div",{ref:u,className:"tab-headers-container",style:{scrollbarWidth:"none"},onPointerMove:l=>{w.draggedPanelId&&l.target===l.currentTarget&&W(e.id,"EMPTY",e.panels.length,"right")},onPointerLeave:l=>{w.draggedPanelId&&l.target===l.currentTarget&&W(e.id,"",-1,null)},children:e.panels.map((l,L)=>{let X=w.panels[l];if(!X)return null;let V=e.activePanelId===l,se=w.activePanelId===l,ie=y.get(X.component)?.defaultOptions,ye=x&&x.leafId===e.id&&x.panelId===l,ge=L===e.panels.length-1,ne=x&&x.leafId===e.id&&x.panelId==="EMPTY"&&ge,N=ye?x.side==="left"?"drag-hover-left":"drag-hover-right":ne?"drag-hover-right":"",f=V?se?"active workspace-tab-active-focused":"active workspace-tab-active-unfocused":"workspace-tab-inactive";return(0,p.jsxs)("div",{"data-tab-id":l,"data-leaf-id":e.id,"data-tab-index":String(L),onClick:()=>D(l),onPointerDown:Y=>{ie?.canDrag!==!1&&s(l,Y)},onContextMenu:Y=>t(l,Y),onPointerMove:Y=>{if(w.draggedPanelId&&Y.pointerType!=="touch"){let Q=Y.currentTarget.getBoundingClientRect(),fe=Y.clientX-Q.left<Q.width/2?"left":"right";W(e.id,l,L,fe)}},onPointerLeave:()=>{w.draggedPanelId&&W(e.id,"",-1,null)},className:`workspace-tab ${f} ${N}`,style:{cursor:ie?.canDrag===!1?"default":"pointer"},children:[(0,p.jsxs)("span",{className:"text-truncate",style:{maxWidth:"120px",display:"flex",alignItems:"center"},children:[(0,p.jsx)("span",{className:"workspace-tab-icon",children:ie?.icon||m||bn}),(0,p.jsxs)("span",{children:[ve(X.title,S),X.dirty?" *":""]})]}),ie?.renderHeaderActions&&(0,p.jsx)("span",{className:"tab-header-actions",onClick:Y=>Y.stopPropagation(),onPointerDown:Y=>Y.stopPropagation(),children:ie.renderHeaderActions(l)}),ie?.canClose!==!1&&(0,p.jsx)("span",{onClick:Y=>{Y.stopPropagation(),T(l)},title:ve(I.closeTab,S),className:"close-tab-x",style:{width:"18px",height:"18px",...ie?.renderHeaderActions?{}:{marginInlineStart:"auto"}},children:(0,p.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,p.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]},l)})}),b.right&&(0,p.jsx)("button",{className:"tab-scroll-btn tab-scroll-btn-right",onPointerDown:l=>l.stopPropagation(),onClick:()=>k("right"),tabIndex:-1,"aria-label":"Scroll tabs right",children:"\u203A"}),e.panels.length===0&&e.keepOnEmpty&&e.canClose!==!1&&(0,p.jsx)("span",{onClick:()=>F(e.id),className:"close-tab-x header-close-empty-group",style:{width:"18px",height:"18px",cursor:"pointer"},title:ve(I.closeEmptyGroup,S),children:(0,p.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,p.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),(0,p.jsxs)("div",{className:`dw-panel-body ${M??""}`,style:{position:"relative",overflow:"hidden"},children:[e.activePanelId&&w.panels[e.activePanelId]?(0,p.jsx)(Yn,{panelId:e.activePanelId},e.activePanelId):(0,p.jsx)("div",{className:"empty-leaf-placeholder",children:(0,p.jsx)("span",{children:"Empty Workspace Section"})}),w.draggedPanelId!==null&&(0,p.jsx)("div",{className:"dock-drop-zone-overlay",children:(0,p.jsxs)("div",{className:"dock-target-cross",children:[(0,p.jsx)("div",{"data-leaf-id":e.id,"data-drop-zone":"top",onPointerEnter:()=>i(e.id,"top"),onPointerLeave:()=>i(e.id,null),className:"dock-target-box dock-target-top",children:"\u25B2"}),(0,p.jsx)("div",{"data-leaf-id":e.id,"data-drop-zone":"bottom",onPointerEnter:()=>i(e.id,"bottom"),onPointerLeave:()=>i(e.id,null),className:"dock-target-box dock-target-bottom",children:"\u25BC"}),(0,p.jsx)("div",{"data-leaf-id":e.id,"data-drop-zone":"left",onPointerEnter:()=>i(e.id,"left"),onPointerLeave:()=>i(e.id,null),className:"dock-target-box dock-target-left",children:"\u25C0"}),(0,p.jsx)("div",{"data-leaf-id":e.id,"data-drop-zone":"right",onPointerEnter:()=>i(e.id,"right"),onPointerLeave:()=>i(e.id,null),className:"dock-target-box dock-target-right",children:"\u25B6"}),(0,p.jsx)("div",{"data-leaf-id":e.id,"data-drop-zone":"center",onPointerEnter:()=>i(e.id,"center"),onPointerLeave:()=>i(e.id,null),className:"dock-target-box dock-target-center",children:"\u25A3"})]})}),w.draggedPanelId!==null&&n!==null&&n.leafId===e.id&&(0,p.jsx)("div",{className:"dock-preview-highlight",style:(()=>{let l=n.position,L=`${w.splitRatio*100}%`,X=`${(1-w.splitRatio)*100}%`;return{left:l==="right"?X:"0",top:l==="bottom"?X:"0",width:l==="left"||l==="right"?L:"100%",height:l==="top"||l==="bottom"?L:"100%"}})()})]})]})},Vo=({skin:e="vscode",defaultPanelIcon:t,taskbarVisibility:n="always",contextMenuAdapter:i=lt})=>{let s=$e(),x=bt(),{restorePanel:W,minimizePanel:m,requestClosePanel:T,maximizePanel:w,updateFloatingPosition:y,focusPanel:g,floatPanel:F,setDraggedPanelId:E,dockPanelToGroup:S,movePanelOrder:I,dockPanelToWorkspaceEdge:a,setActivePanel:M,getPanelContextMenuItems:u,showContextMenu:b,registerContextMenuFn:R}=un(),{openModal:H}=Je(),k=He(),D=Ye(),l=G.default.useCallback(r=>{let z=s.panels[r];T(r,{onConfirm:v=>new Promise(P=>{let _=v||z?.dirtyOptions,q=z?ve(z.title,k):"Panel";H(Qe,{title:_?.title||D.unsavedChangesTitle,message:_?.message||{id:D.unsavedChangesMessage.id,defaultMessage:D.unsavedChangesMessage.defaultMessage,values:{title:q}},alert:_?.alert,alertType:_?.alertType||"danger",useYesNoTitles:!0,onOK:()=>P(!0),onCancel:()=>P(!1)},{size:"small"})})})},[T,s.panels,k,H,D]),{windowClass:L,windowBodyClass:X}=Ge(),V=(0,G.useContext)(xt),se=(0,G.useRef)(null);(0,G.useEffect)(()=>R(V!==null?r=>V.show(r):r=>se.current?.show(r)),[V,R]);let U=(0,G.useRef)(null),[ie,ye]=(0,G.useState)(!1),ge=(0,G.useRef)(null),ne=(0,G.useRef)(s.minimized.length),[N,f]=(0,G.useState)(null),Y=(0,G.useRef)(null),Q=(0,G.useRef)("mouse"),[j,fe]=(0,G.useState)(!1),Pe=V!==null?V.isOpen:j;(0,G.useEffect)(()=>()=>{Y.current&&clearTimeout(Y.current)},[]),(0,G.useEffect)(()=>{N&&(s.minimized.some(z=>z.id===N.id)||f(null))},[s.minimized,N]),(0,G.useEffect)(()=>{if(!N?.fromTouch)return;let r=z=>{z.pointerType!=="touch"||document.querySelector(".taskbar-item-tooltip")?.contains(z.target)||f(null)};return document.addEventListener("pointerdown",r,{capture:!0}),()=>document.removeEventListener("pointerdown",r,{capture:!0})},[N?.fromTouch]);let[Ce,ze]=(0,G.useState)(null),Ie=(0,G.useRef)(null),[Ae,Ct]=(0,G.useState)({x:0,y:0}),[Mt,Ft]=(0,G.useState)(null),dt=(0,G.useRef)(null),We=r=>{Ft(r),dt.current=r},[_t,Ht]=(0,G.useState)(null),ut=(0,G.useRef)(null),nt=r=>{Ht(r),ut.current=r},Rt=(0,G.useContext)(vt)?.isRtl??!1,[Bt,Ze]=(0,G.useState)(null),Xe=(0,G.useRef)(null),Tt=(r,z,v,P)=>{let _=P?{leafId:r,panelId:z,index:v,side:P}:null;Ze(_),Xe.current=_},kt=(r,z)=>{let v=z?{leafId:r,position:z}:null;ze(v),Ie.current=v},St=(r,z)=>{let v=document.elementsFromPoint(r,z),P=!1,_=!1,q=!1;for(let Z of v)if(Z instanceof HTMLElement){if(!P&&Z.dataset.dropZone){let A=Z.dataset.leafId;if(A){let oe=Z.dataset.dropZone;ze({leafId:A,position:oe}),Ie.current={leafId:A,position:oe},P=!0}}if(!q&&Z.dataset.tabId){let A=Z.dataset.leafId,oe=parseInt(Z.dataset.tabIndex||"0",10);if(A){let pe=Z.getBoundingClientRect(),J=r-pe.left<pe.width/2?"left":"right";Ze({leafId:A,panelId:Z.dataset.tabId,index:oe,side:J}),Xe.current={leafId:A,panelId:Z.dataset.tabId,index:oe,side:J},q=!0}}if(!_&&Z.dataset.edgeTrigger&&(We(Z.dataset.edgeTrigger),_=!0),P&&_&&q)break}P||(ze(null),Ie.current=null),_||We(null),q||(Ze(null),Xe.current=null)},ot=300,rt=8,it=()=>{E(null),ze(null),Ie.current=null,Ze(null),Xe.current=null,We(null)},Ke=r=>s.isRtl?r==="left"?"right":r==="right"?"left":r:r,$t=(r,z)=>{let v=Ie.current,P=Xe.current,_=dt.current,q=ut.current;if(_)a(r,Ke(_));else if(P){let Z=P.index;P.side==="right"&&(Z+=1);let A=Bn(s.gridRoot,P.leafId);if(A){let oe=A.panels.indexOf(r);oe!==-1&&oe<Z&&(Z-=1)}I(r,P.leafId,Z)}else v?S(r,v.leafId,Ke(v.position)):q?F(r,void 0,Rt?zt(q):q):F(r,{x:z.clientX-150,y:z.clientY-15,width:450,height:350});nt(null),it()},an=(r,z)=>{if(z.pointerType==="mouse"&&z.button!==0)return;let v=z.currentTarget,P=z.clientX,_=z.clientY;if(z.pointerType==="touch"){let q=z.pointerId,Z=!1,A=()=>{Z=!0,clearTimeout(pe),v.removeEventListener("pointermove",oe),v.removeEventListener("pointerup",A),v.removeEventListener("pointercancel",A)},oe=J=>{Math.hypot(J.clientX-P,J.clientY-_)>rt&&A()},pe=setTimeout(()=>{if(Z)return;v.removeEventListener("pointermove",oe),v.removeEventListener("pointerup",A),v.removeEventListener("pointercancel",A);try{v.setPointerCapture(q)}catch{return}v.classList.add("long-press-active"),navigator.vibrate&&navigator.vibrate(10);let J=!1,le=Me=>{J||(J=!0,E(r)),Ct({x:Me.clientX,y:Me.clientY}),St(Me.clientX,Me.clientY)},me=Me=>{v.classList.remove("long-press-active"),v.removeEventListener("pointermove",le),v.removeEventListener("pointerup",me),v.removeEventListener("pointercancel",ce),J?$t(r,Me):Yt(r,Me)},ce=()=>{v.classList.remove("long-press-active"),v.removeEventListener("pointermove",le),v.removeEventListener("pointerup",me),v.removeEventListener("pointercancel",ce),J&&it()};v.addEventListener("pointermove",le),v.addEventListener("pointerup",me),v.addEventListener("pointercancel",ce)},ot);v.addEventListener("pointermove",oe),v.addEventListener("pointerup",A),v.addEventListener("pointercancel",A)}else{let q=!1,Z=oe=>{let pe=oe.clientX-P,J=oe.clientY-_;!q&&(Math.abs(pe)>5||Math.abs(J)>5)&&(q=!0,E(r)),q&&Ct({x:oe.clientX,y:oe.clientY})},A=oe=>{window.removeEventListener("pointermove",Z),window.removeEventListener("pointerup",A),q&&$t(r,oe)};window.addEventListener("pointermove",Z),window.addEventListener("pointerup",A)}},Yt=(r,z)=>{z.preventDefault();let v=s.panels[r];if(!v)return;let _=x.get(v.component)?.defaultOptions,q=[];if(_?.canDrag!==!1&&q.push({label:ve(D.floatWindow,k),icon:wt.float,action:()=>F(r)}),_?.canMinimize!==!1&&q.push({label:ve(D.minimizePanel,k),icon:wt.minimize,action:()=>m(r)}),q.length>0&&_?.canClose!==!1&&q.push({separator:!0}),_?.canClose!==!1&&q.push({label:ve(D.closeTab,k),icon:wt.close,action:()=>l(r)}),q.length===0)return;let Z=u(r),A=Z.length>0?[...q,{separator:!0},...Z]:q;b({event:z,items:A})},o=(r,z)=>{z.preventDefault(),f(null),b({event:z,items:[{label:ve(D.restorePanel,k),icon:wt.restore,action:()=>W(r)},{label:ve(D.maximizePanel,k),icon:wt.maximize,action:()=>w(r)},{separator:!0},{label:ve(D.closePanel,k),icon:wt.close,action:()=>l(r)}]})};(0,G.useEffect)(()=>{let r=Object.keys(s.panels);for(let z of Array.from(Wt.keys()))r.includes(z)||Wt.delete(z)},[s.panels]),(0,G.useEffect)(()=>{let r=()=>{s.draggedPanelId!==null&&(E(null),ze(null),Ze(null))};return window.addEventListener("blur",r),()=>{window.removeEventListener("blur",r)}},[s.draggedPanelId]);let h=(0,G.useRef)(null),[c,d]=(0,G.useState)({width:1024,height:768});(0,G.useEffect)(()=>{let r=h.current;if(!r)return;let z=!1,v=new ResizeObserver(P=>{if(!P||P.length===0)return;let _=P[0].contentRect;if(process.env.NODE_ENV==="development"&&_.height<10&&!z){z=!0;let q=r,Z=r.parentElement;for(;Z&&Z!==document.documentElement&&Z.getBoundingClientRect().height<10;){q=Z;Z=Z.parentElement}let A=q.tagName.toLowerCase(),oe=q.id?` id="${q.id}"`:"",pe=q.className?` class="${q.className}"`:"",J=q===r?"the WindowManager container itself":`a wrapper element: <${A}${oe}${pe}>`;console.warn(`[react-dockable-desktop] Workspace height is 0px \u2014 the workspace will be invisible.
4
+ Without it the workspace renders as a black screen with no console errors.`)}catch{}},[]),(0,F.useEffect)(()=>{if(t)return t._connect(je),()=>{t._disconnect()}},[t,je]);let Gt=(0,F.useMemo)(()=>({getSnapshot:v,subscribeToState:C}),[v,C]);return(0,Je.jsx)(On.Provider,{value:un,children:(0,Je.jsx)(An.Provider,{value:g,children:(0,Je.jsx)(Wn.Provider,{value:Gt,children:(0,Je.jsx)(vt.Provider,{value:E,children:(0,Je.jsx)(Jt.Provider,{value:je,children:(0,Je.jsx)(zn.Provider,{value:H||Xt,children:(0,Je.jsx)(Dn.Provider,{value:T,children:e})})})})})})})},Nn=e=>()=>{};function _e(e){let t=(0,F.useContext)(vt),n=(0,F.useContext)(Wn),r=(0,F.useRef)(e);r.current=e;let s=(0,F.useSyncExternalStore)(e?n?.subscribeToState??Nn:Nn,()=>{let b=n?.getSnapshot()??t;return r.current?r.current(b):b},()=>{let b=n?.getSnapshot()??t;return r.current?r.current(b):b});if(!t)throw new Error("useWindowManagerState must be used within WindowManagerProvider");return e?s:t}var Pt=()=>{let e=(0,F.useContext)(Jt);if(!e)throw new Error("useWindowManagerActions must be used within WindowManagerProvider");return e},mn=()=>{let e=(0,F.useContext)(Jt);if(!e)throw new Error("useWindowManagerActionsInternal must be used within WindowManagerProvider");return e},$e=()=>(0,F.useContext)(zn)||(t=>{let n=t.defaultMessage||t.id;return t.values&&Object.entries(t.values).forEach(([r,s])=>{n=n.replace(`{${r}}`,String(s))}),n}),be=(e,t)=>e?typeof e=="string"?e:t(e):"",Fn=()=>{let{publish:e,subscribe:t}=Pt();return{publish:e,subscribe:t}},Xe=()=>(0,F.useContext)(Dn),Wt=()=>ht().instanceId;function _n(e){let t=(0,F.useContext)(Jt),n=Wt(),r=(0,F.useRef)(e);r.current=e,(0,F.useEffect)(()=>{if(!(!t?.registerPanelContextMenu||!n))return t.registerPanelContextMenu(n,()=>r.current)},[n,t?.registerPanelContextMenu])}var ve=gn(require("react"),1),hn=require("react-dom"),de=require("react/jsx-runtime");function Zo(e){return e?"touches"in e&&e.touches.length>0?{x:e.touches[0].clientX,y:e.touches[0].clientY}:{x:e.clientX,y:e.clientY}:{x:0,y:0}}function xt(e,t){return typeof e=="string"?e:t?t(e):e.defaultMessage??e.id}function bn(e){return"separator"in e}function en(e){return!bn(e)&&"items"in e}var Bn=(0,ve.forwardRef)(({items:e,x:t,y:n,theme:r,fmt:s,onClose:b,onMouseEnter:z,onMouseLeave:m},M)=>((0,ve.useLayoutEffect)(()=>{let P=M?.current;if(!P)return;let y=P.getBoundingClientRect(),g=8;y.right>window.innerWidth-g&&(P.style.left=`${Math.max(g,window.innerWidth-y.width-g)}px`,P.style.right="auto"),y.bottom>window.innerHeight-g&&(P.style.top=`${Math.max(g,window.innerHeight-y.height-g)}px`),y.left<g&&(P.style.left=`${g}px`,P.style.right="auto"),y.top<g&&(P.style.top=`${g}px`)}),(0,hn.createPortal)((0,de.jsx)("div",{ref:M,className:`dw-context-menu dw-context-menu--${r} dw-context-menu--submenu`,style:{position:"fixed",left:t,top:n,zIndex:9501},role:"menu",onMouseEnter:z,onMouseLeave:m,children:e.map((P,y)=>{if(bn(P))return(0,de.jsx)("hr",{className:"dw-context-menu__separator",role:"separator"},y);let g=P,H=g.checkbox&&g.checkbox.active!==!1,I=H&&g.checkbox.value,k=g.disabled===!0||(H?g.checkbox.enabled===!1:!1);return(0,de.jsxs)("button",{type:"button",className:`dw-context-menu__item${k?" dw-context-menu__item--disabled":""}`,title:g.title?xt(g.title,s):void 0,disabled:k,"data-cy-action":g.cyAction,onClick:()=>{k||(g.action?.(),b())},role:"menuitem","aria-checked":H?I:void 0,children:[g.icon?(0,de.jsx)("span",{className:"dw-context-menu__icon",children:g.icon}):(0,de.jsx)("span",{className:"dw-context-menu__icon","aria-hidden":"true"}),(0,de.jsx)("span",{className:"dw-context-menu__label",children:xt(g.label,s)}),H&&(0,de.jsx)("span",{className:`dw-context-menu__checkbox${I?" dw-context-menu__checkbox--checked":""}`,"aria-hidden":"true",children:(0,de.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,de.jsx)("rect",{x:"0.75",y:"0.75",width:"10.5",height:"10.5",rx:"2",fill:"none",stroke:"currentColor",strokeWidth:"1.5"}),I&&(0,de.jsx)("path",{d:"M2.5 6 L4.5 8.5 L9.5 3.5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})]})})]},y)})}),document.body)));Bn.displayName="ContextMenuSubMenuPanel";var Hn={visible:!1,x:0,y:0,items:[]},tn=(0,ve.forwardRef)(({theme:e="dark",formatMessageProvider:t,onShow:n,onHide:r,onOpenChange:s,className:b,style:z},m)=>{let[M,P]=(0,ve.useState)(Hn),[y,g]=(0,ve.useState)(null),H=(0,ve.useRef)(null),I=(0,ve.useRef)(null),k=(0,ve.useRef)(new Map),E=(0,ve.useRef)({open:null,close:null}),a=ve.default.useCallback(()=>{P(Hn),g(null),E.current.open&&clearTimeout(E.current.open),E.current.close&&clearTimeout(E.current.close),E.current.open=null,E.current.close=null,r?.(),s?.(!1)},[r,s]);if((0,ve.useImperativeHandle)(m,()=>({show({event:l,x:L,y:G,items:q}){let ae=l?Zo(l):{x:L??0,y:G??0};k.current.clear(),P({visible:!0,x:ae.x,y:ae.y,items:q}),g(null),n?.(),s?.(!0)}}),[n,s]),(0,ve.useEffect)(()=>{if(!M.visible)return;let l=L=>{H.current?.contains(L.target)||I.current?.contains(L.target)||a()};return document.addEventListener("pointerdown",l,{capture:!0}),window.addEventListener("click",l),()=>{document.removeEventListener("pointerdown",l,{capture:!0}),window.removeEventListener("click",l)}},[M.visible,a]),(0,ve.useEffect)(()=>{if(!M.visible)return;let l=L=>{L.key==="Escape"&&a()};return document.addEventListener("keydown",l),()=>document.removeEventListener("keydown",l)},[M.visible,a]),(0,ve.useLayoutEffect)(()=>{if(!M.visible||!H.current)return;let l=H.current,L=l.getBoundingClientRect(),G=8;L.right>window.innerWidth-G&&(l.style.left=`${Math.max(G,window.innerWidth-L.width-G)}px`),L.bottom>window.innerHeight-G&&(l.style.top=`${Math.max(G,window.innerHeight-L.height-G)}px`),L.left<G&&(l.style.left=`${G}px`),L.top<G&&(l.style.top=`${G}px`)},[M.visible]),!M.visible)return null;let w=t,u=0,v=0;if(y!==null){let l=k.current.get(y);if(l){let L=l.getBoundingClientRect();u=document.documentElement.dir==="rtl"?window.innerWidth-L.left+2:L.right+2,v=L.top}}function C(){E.current.open&&(clearTimeout(E.current.open),E.current.open=null)}function B(){E.current.close&&(clearTimeout(E.current.close),E.current.close=null)}function T(l,L){B(),y!==null&&y!==l&&(C(),g(null)),en(L)&&L.items?.length?(C(),E.current.open=setTimeout(()=>{g(l)},150)):en(L)||(C(),y!==null&&(E.current.close=setTimeout(()=>g(null),200)))}function O(l){C(),en(l)&&l.items?.length&&(E.current.close=setTimeout(()=>g(null),200))}return(0,hn.createPortal)((0,de.jsxs)(de.Fragment,{children:[(0,de.jsx)("div",{ref:H,className:`dw-context-menu dw-context-menu--${e}${b?` ${b}`:""}`,style:{position:"fixed",left:M.x,top:M.y,zIndex:9500,...z},role:"menu","aria-orientation":"vertical",children:M.items.map((l,L)=>{if(bn(l))return(0,de.jsx)("hr",{className:"dw-context-menu__separator",role:"separator"},L);if(en(l))return(0,de.jsxs)("button",{ref:ie=>{k.current.set(L,ie)},type:"button",className:`dw-context-menu__item dw-context-menu__item--has-submenu${y===L?" dw-context-menu__item--submenu-open":""}`,title:l.title?xt(l.title,w):void 0,onMouseEnter:()=>T(L,l),onMouseLeave:()=>O(l),role:"menuitem","aria-haspopup":"true","aria-expanded":y===L,children:[(0,de.jsx)("span",{className:"dw-context-menu__icon","aria-hidden":"true"}),(0,de.jsx)("span",{className:"dw-context-menu__label",children:xt(l.label,w)}),(0,de.jsx)("span",{className:"dw-context-menu__chevron","aria-hidden":"true",children:"\u203A"})]},L);let G=l,q=G.checkbox&&G.checkbox.active!==!1,ae=q&&G.checkbox.value,U=G.disabled===!0||(q?G.checkbox.enabled===!1:!1);return(0,de.jsxs)("button",{ref:ie=>{k.current.set(L,ie)},type:"button",className:`dw-context-menu__item${U?" dw-context-menu__item--disabled":""}`,title:G.title?xt(G.title,w):void 0,disabled:U,"data-cy-action":G.cyAction,onClick:()=>{U||(G.action?.(),a())},onMouseEnter:()=>T(L,l),onMouseLeave:()=>O(l),role:"menuitem","aria-checked":q?ae:void 0,children:[G.icon?(0,de.jsx)("span",{className:"dw-context-menu__icon",children:G.icon}):(0,de.jsx)("span",{className:"dw-context-menu__icon","aria-hidden":"true"}),(0,de.jsx)("span",{className:"dw-context-menu__label",children:xt(G.label,w)}),q&&(0,de.jsx)("span",{className:`dw-context-menu__checkbox${ae?" dw-context-menu__checkbox--checked":""}`,"aria-hidden":"true",children:(0,de.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,de.jsx)("rect",{x:"0.75",y:"0.75",width:"10.5",height:"10.5",rx:"2",fill:ae?"currentColor":"none",stroke:"currentColor",strokeWidth:"1.5"}),ae&&(0,de.jsx)("path",{d:"M2.5 6 L4.5 8.5 L9.5 3.5",stroke:"white",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})]})})]},L)})}),y!==null&&(()=>{let l=M.items[y];return(0,de.jsx)(Bn,{ref:I,items:l.items??[],x:u,y:v,theme:e,fmt:w,onClose:a,onMouseEnter:()=>B(),onMouseLeave:()=>{E.current.close=setTimeout(()=>g(null),200)}})})()]}),document.body)});tn.displayName="ContextMenu";var ct={Component:tn},wt=ve.default.createContext(null),nn=({adapter:e=ct,children:t,...n})=>{let r=(0,ve.useRef)(null),[s,b]=ve.default.useState(!1),z=ve.default.useCallback(m=>{r.current?.show(m)},[]);return(0,de.jsxs)(wt.Provider,{value:{show:z,isOpen:s},children:[t,(0,de.jsx)(e.Component,{ref:r,...n,onShow:()=>{b(!0),n.onShow?.()},onHide:()=>{b(!1),n.onHide?.()}})]})};function $n(){let e=ve.default.useContext(wt);if(!e)throw new Error("useShowContextMenu must be used within a ContextMenuProvider");return e.show}var xe=require("react"),yn=require("react/jsx-runtime"),Ko=0,vn=()=>`panel-${++Ko}-${Date.now()}`,on=new Map,Yn={leftPanel:null,rightPanel:null,modals:[]},Xn=(0,xe.createContext)(null),Gn=(0,xe.createContext)(null),rn=({children:e})=>{let[t,n]=(0,xe.useState)(Yn),r=(0,xe.useRef)(t);r.current=t;let s=(0,xe.useCallback)((a,w)=>{on.set(a,w)},[]),b=(0,xe.useCallback)(a=>{on.delete(a)},[]),z=(0,xe.useCallback)(async(a,w,u={})=>{let v=r.current.leftPanel;if(v){let T=on.get(v.id);if(T&&!await T())return null}let C=vn(),B={id:C,Component:a,props:w,containerType:"left-panel",options:u};return n(T=>({...T,leftPanel:B})),C},[]),m=(0,xe.useCallback)(async(a,w,u={})=>{let v=r.current.rightPanel;if(v){let T=on.get(v.id);if(T&&!await T())return null}let C=vn(),B={id:C,Component:a,props:w,containerType:"right-panel",options:u};return n(T=>({...T,rightPanel:B})),C},[]),M=(0,xe.useCallback)((a,w,u={})=>{let v=vn(),C=w.title,B={...u,title:u.title||C||"Confirmation"},T={id:v,Component:a,props:w,containerType:"modal",options:B};return n(O=>({...O,modals:[...O.modals,T]})),v},[]),P=(0,xe.useCallback)(a=>{n(w=>({leftPanel:w.leftPanel?.id===a?null:w.leftPanel,rightPanel:w.rightPanel?.id===a?null:w.rightPanel,modals:w.modals.filter(u=>u.id!==a)}))},[]),y=(0,xe.useCallback)(()=>{n(Yn)},[]),g=(0,xe.useCallback)(()=>{n(a=>({...a,modals:[]}))},[]),H=(0,xe.useCallback)(a=>t.leftPanel?.id===a?t.leftPanel:t.rightPanel?.id===a?t.rightPanel:t.modals.find(w=>w.id===a),[t]),I=(0,xe.useCallback)((a,w)=>{n(u=>({leftPanel:u.leftPanel?.id===a?{...u.leftPanel,...w}:u.leftPanel,rightPanel:u.rightPanel?.id===a?{...u.rightPanel,...w}:u.rightPanel,modals:u.modals.map(v=>v.id===a?{...v,...w}:v)}))},[]),k=(0,xe.useCallback)((a,w,u)=>{I(a,{dirty:w,dirtyOptions:u})},[I]),E=(0,xe.useMemo)(()=>({openLeftPanel:z,openRightPanel:m,openModal:M,close:P,closeAll:y,closeAllModals:g,getInstance:H,updateInstance:I,setDirty:k,registerCloseHandler:s,unregisterCloseHandler:b}),[z,m,M,P,y,g,H,I,k,s,b]);return(0,yn.jsx)(Xn.Provider,{value:t,children:(0,yn.jsx)(Gn.Provider,{value:E,children:e})})},qe=()=>{let e=(0,xe.useContext)(Xn);if(!e)throw new Error("usePanelState must be used within PanelProvider");return e},Qe=()=>{let e=(0,xe.useContext)(Gn);if(!e)throw new Error("usePanelActions must be used within PanelProvider");return e};var Dt=require("react");var Ye=require("react/jsx-runtime"),jo=({title:e,message:t,alert:n,alertType:r="info",useYesNoTitles:s=!1,onOK:b,onCancel:z})=>{let{requestClose:m,setIcon:M,setTitle:P}=ht(),y=$e(),g=Xe(),H=(0,Dt.useRef)(null);(0,Dt.useEffect)(()=>{if(e){let u=typeof e=="string"?e:y(e);P(u)}M&&M((0,Ye.jsx)("span",{children:"\u2753"}))},[e,P,M,y]),(0,Dt.useEffect)(()=>{H.current?.focus()},[]);let I=typeof t=="string"?t:y(t),k=y(s?g.no:g.cancel),E=y(s?g.yes:g.ok),a=u=>{u.preventDefault(),b?.(),m()},w=()=>{z?.(),m()};return(0,Ye.jsxs)("form",{onSubmit:a,className:"confirmation-form-body",children:[n&&(0,Ye.jsxs)("div",{className:`confirmation-alert confirmation-alert-${r}`,children:[(0,Ye.jsx)("span",{children:"\u2139\uFE0F"}),(0,Ye.jsx)("span",{children:n})]}),(0,Ye.jsx)("div",{style:{fontSize:"0.9rem",color:"inherit",lineHeight:1.5},children:I}),(0,Ye.jsx)("hr",{style:{marginTop:"0.5rem",marginBottom:"0.5rem",opacity:.1}}),(0,Ye.jsxs)("div",{className:"confirmation-actions",children:[(0,Ye.jsx)("button",{type:"button",className:"dw-btn dw-btn-sm dw-btn-outline",onClick:w,children:k}),(0,Ye.jsx)("button",{type:"submit",className:"dw-btn dw-btn-sm dw-btn-primary",ref:H,children:E})]})]})},et=jo;function Ot(e){return e==="top-left"?"top-right":e==="top-right"?"top-left":e==="bottom-left"?"bottom-right":"bottom-left"}var p=require("react/jsx-runtime"),Vn=(e,t)=>{if(!e)return null;if(e.type==="leaf")return e.id===t?e:null;for(let n of e.children){let r=Vn(n,t);if(r)return r}return null},At=new Map,sn="preserved-dom-container",xn=(0,p.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{display:"block"},children:[(0,p.jsx)("rect",{x:"3",y:"3",width:"7",height:"9",rx:"1"}),(0,p.jsx)("rect",{x:"14",y:"3",width:"7",height:"5",rx:"1"}),(0,p.jsx)("rect",{x:"14",y:"12",width:"7",height:"9",rx:"1"}),(0,p.jsx)("rect",{x:"3",y:"16",width:"7",height:"5",rx:"1"})]}),Ct={float:(0,p.jsx)("span",{className:"wm-menu-icon",children:(0,p.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{display:"block"},children:[(0,p.jsx)("rect",{x:"2",y:"8",width:"14",height:"14",rx:"1"}),(0,p.jsx)("rect",{x:"8",y:"2",width:"14",height:"14",rx:"1"})]})}),minimize:(0,p.jsx)("span",{className:"wm-menu-icon",children:(0,p.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",style:{display:"block"},children:(0,p.jsx)("line",{x1:"4",y1:"18",x2:"20",y2:"18"})})}),restore:(0,p.jsx)("span",{className:"wm-menu-icon",children:(0,p.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{display:"block"},children:(0,p.jsx)("rect",{x:"4",y:"4",width:"16",height:"16",rx:"1"})})}),maximize:(0,p.jsx)("span",{className:"wm-menu-icon",children:(0,p.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{display:"block"},children:(0,p.jsx)("rect",{x:"2",y:"2",width:"20",height:"20",rx:"1"})})}),close:(0,p.jsx)("span",{className:"wm-menu-icon",children:(0,p.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{display:"block"},children:(0,p.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})},qn=e=>{let t=At.get(e);return t||(t=document.createElement("div"),t.style.width="100%",t.style.height="100%",At.set(e,t)),t},Uo=(e,t,n)=>{let r=n.get(t);if(!r)return console.warn(`[react-dockable-desktop] Panel "${e}" references component key "${t}" which is not registered. Add it to the WorkspaceClient panels config:
5
+ new WorkspaceClient({ panels: { "${t}": { component: YourComponent } } })`),(0,p.jsxs)("div",{className:"dw-unregistered-panel",style:{border:"2px dashed #dc3545"},children:[(0,p.jsx)("h6",{style:{fontWeight:700,marginBottom:"0.25rem"},children:"\u26A0\uFE0F Component Unregistered"}),(0,p.jsxs)("span",{style:{fontSize:"0.875rem",color:"var(--text-secondary, #94a3b8)"},children:["Key: ",t]})]});let s=r.Component;return(0,p.jsx)(s,{panelId:e})},wn=new Map,tt=new Map,dt=e=>{let t=tt.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},tt.set(e,t)),t},Zn=({panelId:e})=>{let t=(0,V.useRef)(null);return(0,V.useEffect)(()=>{let n=t.current;if(!n)return;let r=qn(e);n.appendChild(r);let s=new ResizeObserver(b=>{for(let z of b){let{width:m,height:M}=z.contentRect;if(m>0&&M>0){wn.set(e,{width:m,height:M});let P=tt.get(e);P&&P.onResize.forEach(y=>y(m,M))}}});return s.observe(n),()=>{s.disconnect();let b=document.getElementById(sn);b||(b=document.createElement("div"),b.id=sn,b.style.display="none",document.body.appendChild(b)),b.appendChild(r)}},[e]),(0,p.jsx)("div",{ref:t,style:{width:"100%",height:"100%"}})},Jo=({panelId:e})=>{let t=_e(),n=yt(),r=$e(),s=(0,V.useRef)(null),b=t.panels[e],z=b?n.get(b.component):null,m=z?.defaultOptions?.disableLivePreview||!1,M=wn.get(e)||{width:800,height:500},P=M.width,y=M.height,I=Math.min(220/P,140/y);if((0,V.useEffect)(()=>{if(m)return;let k=s.current;if(!k)return;let E=At.get(e);if(E)return k.appendChild(E),()=>{let a=document.getElementById(sn);a||(a=document.createElement("div"),a.id=sn,a.style.display="none",document.body.appendChild(a)),a.appendChild(E)}},[e,m]),m){let k=P*I,E=y*I,a=b?.title||z?.defaultOptions?.title||"Panel",w=be(a,r),u=(Array.from(w)[0]||"P").toUpperCase();return(0,p.jsx)("div",{className:"taskbar-item-preview-frame",style:{width:`${k}px`,height:`${E}px`,display:"flex",alignItems:"center",justifyContent:"center",background:"rgba(108, 117, 125, 0.15)",border:"1px dashed var(--taskbar-item-border, rgba(255, 255, 255, 0.15))"},children:(0,p.jsx)("div",{style:{fontSize:"2rem",fontWeight:600,color:"var(--panel-title-color, var(--panel-text, rgba(255, 255, 255, 0.85)))",userSelect:"none"},children:u})})}return(0,p.jsx)("div",{className:"taskbar-item-preview-frame",style:{width:`${P*I}px`,height:`${y*I}px`},children:(0,p.jsx)("div",{ref:s,className:"taskbar-item-preview-host",style:{width:`${P}px`,height:`${y}px`,transform:`scale(${I})`,transformOrigin:"top left",position:"absolute",top:0,left:0,"--preview-scale":I}})})},Qo=({panelId:e,children:t})=>{let n=_e(),{requestClosePanel:r,setPanelDirty:s,registerCloseGuard:b,unregisterCloseGuard:z,updatePanelTitle:m,minimizePanel:M}=Pt(),P=n.minimized.some(u=>u.id===e),y=(0,V.useRef)(P);(0,V.useEffect)(()=>{let u=tt.get(e);u&&(P&&!y.current?u.onMinimize.forEach(v=>v()):!P&&y.current&&u.onRestore.forEach(v=>v()),y.current=P)},[P,e]);let g=n.activePanelId===e,H=(0,V.useRef)(g);(0,V.useEffect)(()=>{let u=H.current;H.current=g;let v=tt.get(e);v&&(g&&!u?v.onActivate.forEach(C=>C()):!g&&u&&v.onDeactivate.forEach(C=>C()))},[g,e]);let I=n.panels[e]?.state,k=I==="floating"?"floating-window":"dockable-panel",E=(0,V.useRef)(k);(0,V.useEffect)(()=>{if(I==="minimized")return;let u=E.current;E.current=k;let v=tt.get(e);v&&k!==u&&v.onContainerTypeChange.forEach(C=>C(k))},[k,I,e]),(0,V.useEffect)(()=>()=>{let u=tt.get(e);u&&(H.current&&u.onDeactivate.forEach(v=>v()),u.onClose.forEach(v=>v()),tt.delete(e))},[e]);let a=(0,V.useRef)(k),w=V.default.useMemo(()=>({requestClose:u=>r(e,u),setDirty:u=>s(e,u),onCloseRequested:u=>(b(e,u),()=>z(e)),setTitle:u=>m(e,u),instanceId:e,containerType:a.current,onClose:u=>{let v=dt(e);return v.onClose.add(u),()=>v.onClose.delete(u)},onMinimize:u=>{let v=dt(e);return v.onMinimize.add(u),()=>v.onMinimize.delete(u)},onRestore:u=>{let v=dt(e);return v.onRestore.add(u),()=>v.onRestore.delete(u)},onResize:u=>{let v=dt(e);return v.onResize.add(u),()=>v.onResize.delete(u)},requestMinimize:()=>M(e),getDimensions:()=>wn.get(e)??null,onActivate:u=>{let v=dt(e);return v.onActivate.add(u),()=>v.onActivate.delete(u)},onDeactivate:u=>{let v=dt(e);return v.onDeactivate.add(u),()=>v.onDeactivate.delete(u)},onContainerTypeChange:u=>{let v=dt(e);return v.onContainerTypeChange.add(u),()=>v.onContainerTypeChange.delete(u)}}),[e,r,s,b,z,m,M]);return(0,p.jsx)(Ue,{value:w,children:t})},Kn=({node:e,path:t,onTabRightClick:n,activeDropZone:r,onHoverDropZone:s,onTabDragStart:b,hoveredTab:z,onTabHover:m,defaultPanelIcon:M,onRequestClosePanel:P})=>{let{updateSplitSizes:y}=Pt();if(e.type==="leaf")return(0,p.jsx)(er,{leaf:e,onTabRightClick:n,activeDropZone:r,onHoverDropZone:s,onTabDragStart:b,hoveredTab:z,onTabHover:m,defaultPanelIcon:M,onRequestClosePanel:P});let g=e.orientation==="horizontal",H=(I,k)=>{k.preventDefault();let E=k.currentTarget;E.setPointerCapture(k.pointerId);let a=g?k.clientX:k.clientY,w=[...e.sizes];E.classList.add("active"),document.body.classList.add("resizing-active",g?"resizing-col-active":"resizing-row-active");let u=E.parentElement,v=u?g?u.clientWidth:u.clientHeight:g?1e3:800,C=T=>{let l=((g?T.clientX:T.clientY)-a)/v,L=[...w];L[I]+=l,L[I+1]-=l,L[I]>.1&&L[I+1]>.1&&y(t,L)},B=()=>{E.classList.remove("active"),document.body.classList.remove("resizing-active","resizing-row-active","resizing-col-active"),E.removeEventListener("pointermove",C),E.removeEventListener("pointerup",B),E.removeEventListener("pointercancel",B)};E.addEventListener("pointermove",C),E.addEventListener("pointerup",B),E.addEventListener("pointercancel",B)};return(0,p.jsx)("div",{style:{display:"flex",flexDirection:g?"row":"column",width:"100%",height:"100%",overflow:"hidden",position:"relative"},children:e.children.map((I,k)=>{let E=e.sizes[k]*100;return(0,p.jsxs)(V.default.Fragment,{children:[(0,p.jsx)("div",{style:{flexGrow:e.sizes[k],flexBasis:`${E}%`,overflow:"hidden",position:"relative",minWidth:0,minHeight:0},children:(0,p.jsx)(Kn,{node:I,path:[...t,k],onTabRightClick:n,activeDropZone:r,onHoverDropZone:s,onTabDragStart:b,hoveredTab:z,onTabHover:m,defaultPanelIcon:M,onRequestClosePanel:P})}),k<e.children.length-1&&(0,p.jsx)("div",{onPointerDown:a=>H(k,a),style:{cursor:g?"col-resize":"row-resize",width:g?"1px":"100%",height:g?"100%":"1px",zIndex:20},className:"resizer-bar"})]},k)})})},er=({leaf:e,onTabRightClick:t,activeDropZone:n,onHoverDropZone:r,onTabDragStart:s,hoveredTab:b,onTabHover:z,defaultPanelIcon:m,onRequestClosePanel:M})=>{let P=_e(),y=yt(),{openPanel:g,closeLeafGroup:H,setActivePanel:I}=mn(),k=$e(),E=Xe(),{windowClass:a,windowBodyClass:w}=Ve(),u=(0,V.useRef)(null),[v,C]=(0,V.useState)({left:!1,right:!1}),B=(0,V.useCallback)(()=>{let l=u.current;l&&C({left:l.scrollLeft>0,right:l.scrollLeft<l.scrollWidth-l.clientWidth-1})},[]);(0,V.useEffect)(()=>{let l=u.current;if(!l)return;l.addEventListener("scroll",B,{passive:!0});let L=new ResizeObserver(B);return L.observe(l),B(),()=>{l.removeEventListener("scroll",B),L.disconnect()}},[B]);let T=l=>{u.current?.scrollBy({left:l==="left"?-120:120,behavior:"smooth"})},O=l=>{g(l,P.panels[l].component),I(l)};return(0,p.jsxs)("div",{"data-active-panel-id":e.activePanelId||"",className:`workspace-panel ${a??""}`,style:{overflow:"hidden",position:"relative"},children:[(0,p.jsxs)("div",{className:"workspace-tab-bar",style:{minHeight:"38px"},children:[v.left&&(0,p.jsx)("button",{className:"tab-scroll-btn tab-scroll-btn-left",onPointerDown:l=>l.stopPropagation(),onClick:()=>T("left"),tabIndex:-1,"aria-label":"Scroll tabs left",children:"\u2039"}),(0,p.jsx)("div",{ref:u,className:"tab-headers-container",style:{scrollbarWidth:"none"},onPointerMove:l=>{P.draggedPanelId&&l.target===l.currentTarget&&z(e.id,"EMPTY",e.panels.length,"right")},onPointerLeave:l=>{P.draggedPanelId&&l.target===l.currentTarget&&z(e.id,"",-1,null)},children:e.panels.map((l,L)=>{let G=P.panels[l];if(!G)return null;let q=e.activePanelId===l,ae=P.activePanelId===l,ie=y.get(G.component)?.defaultOptions,ye=b&&b.leafId===e.id&&b.panelId===l,ge=L===e.panels.length-1,te=b&&b.leafId===e.id&&b.panelId==="EMPTY"&&ge,N=ye?b.side==="left"?"drag-hover-left":"drag-hover-right":te?"drag-hover-right":"",f=q?ae?"active workspace-tab-active-focused":"active workspace-tab-active-unfocused":"workspace-tab-inactive";return(0,p.jsxs)("div",{"data-tab-id":l,"data-leaf-id":e.id,"data-tab-index":String(L),onClick:()=>O(l),onPointerDown:X=>{ie?.canDrag!==!1&&s(l,X)},onContextMenu:X=>t(l,X),onPointerMove:X=>{if(P.draggedPanelId&&X.pointerType!=="touch"){let Q=X.currentTarget.getBoundingClientRect(),fe=X.clientX-Q.left<Q.width/2?"left":"right";z(e.id,l,L,fe)}},onPointerLeave:()=>{P.draggedPanelId&&z(e.id,"",-1,null)},className:`workspace-tab ${f} ${N}`,style:{cursor:ie?.canDrag===!1?"default":"pointer"},children:[(0,p.jsxs)("span",{className:"text-truncate",style:{maxWidth:"120px",display:"flex",alignItems:"center"},children:[(0,p.jsx)("span",{className:"workspace-tab-icon",children:ie?.icon||m||xn}),(0,p.jsxs)("span",{children:[be(G.title,k),G.dirty?" *":""]})]}),ie?.renderHeaderActions&&(0,p.jsx)("span",{className:"tab-header-actions",onClick:X=>X.stopPropagation(),onPointerDown:X=>X.stopPropagation(),children:ie.renderHeaderActions(l)}),ie?.canClose!==!1&&(0,p.jsx)("span",{onClick:X=>{X.stopPropagation(),M(l)},title:be(E.closeTab,k),className:"close-tab-x",style:{width:"18px",height:"18px",...ie?.renderHeaderActions?{}:{marginInlineStart:"auto"}},children:(0,p.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,p.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]},l)})}),v.right&&(0,p.jsx)("button",{className:"tab-scroll-btn tab-scroll-btn-right",onPointerDown:l=>l.stopPropagation(),onClick:()=>T("right"),tabIndex:-1,"aria-label":"Scroll tabs right",children:"\u203A"}),e.panels.length===0&&e.keepOnEmpty&&e.canClose!==!1&&(0,p.jsx)("span",{onClick:()=>H(e.id),className:"close-tab-x header-close-empty-group",style:{width:"18px",height:"18px",cursor:"pointer"},title:be(E.closeEmptyGroup,k),children:(0,p.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,p.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),(0,p.jsxs)("div",{className:`dw-panel-body ${w??""}`,style:{position:"relative",overflow:"hidden"},children:[e.activePanelId&&P.panels[e.activePanelId]?(0,p.jsx)(Zn,{panelId:e.activePanelId},e.activePanelId):(0,p.jsx)("div",{className:"empty-leaf-placeholder",children:(0,p.jsx)("span",{children:"Empty Workspace Section"})}),P.draggedPanelId!==null&&(0,p.jsx)("div",{className:"dock-drop-zone-overlay",children:(0,p.jsxs)("div",{className:"dock-target-cross",children:[(0,p.jsx)("div",{"data-leaf-id":e.id,"data-drop-zone":"top",onPointerEnter:()=>r(e.id,"top"),onPointerLeave:()=>r(e.id,null),className:"dock-target-box dock-target-top",children:"\u25B2"}),(0,p.jsx)("div",{"data-leaf-id":e.id,"data-drop-zone":"bottom",onPointerEnter:()=>r(e.id,"bottom"),onPointerLeave:()=>r(e.id,null),className:"dock-target-box dock-target-bottom",children:"\u25BC"}),(0,p.jsx)("div",{"data-leaf-id":e.id,"data-drop-zone":"left",onPointerEnter:()=>r(e.id,"left"),onPointerLeave:()=>r(e.id,null),className:"dock-target-box dock-target-left",children:"\u25C0"}),(0,p.jsx)("div",{"data-leaf-id":e.id,"data-drop-zone":"right",onPointerEnter:()=>r(e.id,"right"),onPointerLeave:()=>r(e.id,null),className:"dock-target-box dock-target-right",children:"\u25B6"}),(0,p.jsx)("div",{"data-leaf-id":e.id,"data-drop-zone":"center",onPointerEnter:()=>r(e.id,"center"),onPointerLeave:()=>r(e.id,null),className:"dock-target-box dock-target-center",children:"\u25A3"})]})}),P.draggedPanelId!==null&&n!==null&&n.leafId===e.id&&(0,p.jsx)("div",{className:"dock-preview-highlight",style:(()=>{let l=n.position,L=`${P.splitRatio*100}%`,G=`${(1-P.splitRatio)*100}%`;return{left:l==="right"?G:"0",top:l==="bottom"?G:"0",width:l==="left"||l==="right"?L:"100%",height:l==="top"||l==="bottom"?L:"100%"}})()})]})]})},tr=({skin:e="vscode",defaultPanelIcon:t,taskbarVisibility:n="always",contextMenuAdapter:r=ct})=>{let s=_e(),b=yt(),{restorePanel:z,minimizePanel:m,requestClosePanel:M,maximizePanel:P,updateFloatingPosition:y,focusPanel:g,floatPanel:H,setDraggedPanelId:I,dockPanelToGroup:k,movePanelOrder:E,dockPanelToWorkspaceEdge:a,setActivePanel:w,getPanelContextMenuItems:u,showContextMenu:v,registerContextMenuFn:C}=mn(),{openModal:B}=Qe(),T=$e(),O=Xe(),l=V.default.useCallback(i=>{let W=s.panels[i];M(i,{onConfirm:x=>new Promise(R=>{let D=x||W?.dirtyOptions,$=W?be(W.title,T):"Panel";B(et,{title:D?.title||O.unsavedChangesTitle,message:D?.message||{id:O.unsavedChangesMessage.id,defaultMessage:O.unsavedChangesMessage.defaultMessage,values:{title:$}},alert:D?.alert,alertType:D?.alertType||"danger",useYesNoTitles:!0,onOK:()=>R(!0),onCancel:()=>R(!1)},{size:"small"})})})},[M,s.panels,T,B,O]),{windowClass:L,windowBodyClass:G}=Ve(),q=(0,V.useContext)(wt),ae=(0,V.useRef)(null);(0,V.useEffect)(()=>C(q!==null?i=>q.show(i):i=>ae.current?.show(i)),[q,C]);let U=(0,V.useRef)(null),[ie,ye]=(0,V.useState)(!1),ge=(0,V.useRef)(null),te=(0,V.useRef)(s.minimized.length),[N,f]=(0,V.useState)(null),X=(0,V.useRef)(null),Q=(0,V.useRef)("mouse"),[j,fe]=(0,V.useState)(!1),Pe=q!==null?q.isOpen:j;(0,V.useEffect)(()=>()=>{X.current&&clearTimeout(X.current)},[]),(0,V.useEffect)(()=>{N&&(s.minimized.some(W=>W.id===N.id)||f(null))},[s.minimized,N]),(0,V.useEffect)(()=>{if(!N?.fromTouch)return;let i=W=>{W.pointerType!=="touch"||document.querySelector(".taskbar-item-tooltip")?.contains(W.target)||f(null)};return document.addEventListener("pointerdown",i,{capture:!0}),()=>document.removeEventListener("pointerdown",i,{capture:!0})},[N?.fromTouch]);let[Re,ze]=(0,V.useState)(null),Ee=(0,V.useRef)(null),[Fe,Mt]=(0,V.useState)({x:0,y:0}),[Tt,Ht]=(0,V.useState)(null),ut=(0,V.useRef)(null),We=i=>{Ht(i),ut.current=i},[Bt,$t]=(0,V.useState)(null),pt=(0,V.useRef)(null),ot=i=>{$t(i),pt.current=i},kt=(0,V.useContext)(vt)?.isRtl??!1,[Yt,Ke]=(0,V.useState)(null),Ge=(0,V.useRef)(null),St=(i,W,x,R)=>{let D=R?{leafId:i,panelId:W,index:x,side:R}:null;Ke(D),Ge.current=D},It=(i,W)=>{let x=W?{leafId:i,position:W}:null;ze(x),Ee.current=x},Et=(i,W)=>{let x=document.elementsFromPoint(i,W),R=!1,D=!1,$=!1;for(let Z of x)if(Z instanceof HTMLElement){if(!R&&Z.dataset.dropZone){let _=Z.dataset.leafId;if(_){let oe=Z.dataset.dropZone;ze({leafId:_,position:oe}),Ee.current={leafId:_,position:oe},R=!0}}if(!$&&Z.dataset.tabId){let _=Z.dataset.leafId,oe=parseInt(Z.dataset.tabIndex||"0",10);if(_){let pe=Z.getBoundingClientRect(),J=i-pe.left<pe.width/2?"left":"right";Ke({leafId:_,panelId:Z.dataset.tabId,index:oe,side:J}),Ge.current={leafId:_,panelId:Z.dataset.tabId,index:oe,side:J},$=!0}}if(!D&&Z.dataset.edgeTrigger&&(We(Z.dataset.edgeTrigger),D=!0),R&&D&&$)break}R||(ze(null),Ee.current=null),D||We(null),$||(Ke(null),Ge.current=null)},rt=300,it=8,st=()=>{I(null),ze(null),Ee.current=null,Ke(null),Ge.current=null,We(null)},je=i=>s.isRtl?i==="left"?"right":i==="right"?"left":i:i,Xt=(i,W)=>{let x=Ee.current,R=Ge.current,D=ut.current,$=pt.current;if(D)a(i,je(D));else if(R){let Z=R.index;R.side==="right"&&(Z+=1);let _=Vn(s.gridRoot,R.leafId);if(_){let oe=_.panels.indexOf(i);oe!==-1&&oe<Z&&(Z-=1)}E(i,R.leafId,Z)}else x?k(i,x.leafId,je(x.position)):$?H(i,void 0,kt?Ot($):$):H(i,{x:W.clientX-150,y:W.clientY-15,width:450,height:350});ot(null),st()},un=(i,W)=>{if(W.pointerType==="mouse"&&W.button!==0)return;let x=W.currentTarget,R=W.clientX,D=W.clientY;if(W.pointerType==="touch"){let $=W.pointerId,Z=!1,_=()=>{Z=!0,clearTimeout(pe),x.removeEventListener("pointermove",oe),x.removeEventListener("pointerup",_),x.removeEventListener("pointercancel",_)},oe=J=>{Math.hypot(J.clientX-R,J.clientY-D)>it&&_()},pe=setTimeout(()=>{if(Z)return;x.removeEventListener("pointermove",oe),x.removeEventListener("pointerup",_),x.removeEventListener("pointercancel",_);try{x.setPointerCapture($)}catch{return}x.classList.add("long-press-active"),navigator.vibrate&&navigator.vibrate(10);let J=!1,le=Me=>{J||(J=!0,I(i)),Mt({x:Me.clientX,y:Me.clientY}),Et(Me.clientX,Me.clientY)},me=Me=>{x.classList.remove("long-press-active"),x.removeEventListener("pointermove",le),x.removeEventListener("pointerup",me),x.removeEventListener("pointercancel",ce),J?Xt(i,Me):Gt(i,Me)},ce=()=>{x.classList.remove("long-press-active"),x.removeEventListener("pointermove",le),x.removeEventListener("pointerup",me),x.removeEventListener("pointercancel",ce),J&&st()};x.addEventListener("pointermove",le),x.addEventListener("pointerup",me),x.addEventListener("pointercancel",ce)},rt);x.addEventListener("pointermove",oe),x.addEventListener("pointerup",_),x.addEventListener("pointercancel",_)}else{let $=!1,Z=oe=>{let pe=oe.clientX-R,J=oe.clientY-D;!$&&(Math.abs(pe)>5||Math.abs(J)>5)&&($=!0,I(i)),$&&Mt({x:oe.clientX,y:oe.clientY})},_=oe=>{window.removeEventListener("pointermove",Z),window.removeEventListener("pointerup",_),$&&Xt(i,oe)};window.addEventListener("pointermove",Z),window.addEventListener("pointerup",_)}},Gt=(i,W)=>{W.preventDefault();let x=s.panels[i];if(!x)return;let D=b.get(x.component)?.defaultOptions,$=[];if(D?.canDrag!==!1&&$.push({label:be(O.floatWindow,T),icon:Ct.float,action:()=>H(i)}),D?.canMinimize!==!1&&$.push({label:be(O.minimizePanel,T),icon:Ct.minimize,action:()=>m(i)}),$.length>0&&D?.canClose!==!1&&$.push({separator:!0}),D?.canClose!==!1&&$.push({label:be(O.closeTab,T),icon:Ct.close,action:()=>l(i)}),$.length===0)return;let Z=u(i),_=Z.length>0?[...$,{separator:!0},...Z]:$;v({event:W,items:_})},o=(i,W)=>{W.preventDefault(),f(null),v({event:W,items:[{label:be(O.restorePanel,T),icon:Ct.restore,action:()=>z(i)},{label:be(O.maximizePanel,T),icon:Ct.maximize,action:()=>P(i)},{separator:!0},{label:be(O.closePanel,T),icon:Ct.close,action:()=>l(i)}]})};(0,V.useEffect)(()=>{let i=Object.keys(s.panels);for(let W of Array.from(At.keys()))i.includes(W)||At.delete(W)},[s.panels]),(0,V.useEffect)(()=>{let i=()=>{s.draggedPanelId!==null&&(I(null),ze(null),Ke(null))};return window.addEventListener("blur",i),()=>{window.removeEventListener("blur",i)}},[s.draggedPanelId]);let h=(0,V.useRef)(null),[c,d]=(0,V.useState)({width:1024,height:768});(0,V.useEffect)(()=>{let i=h.current;if(!i)return;let W=!1,x=new ResizeObserver(R=>{if(!R||R.length===0)return;let D=R[0].contentRect;if(process.env.NODE_ENV==="development"&&D.height<10&&!W){W=!0;let $=i,Z=i.parentElement;for(;Z&&Z!==document.documentElement&&Z.getBoundingClientRect().height<10;){$=Z;Z=Z.parentElement}let _=$.tagName.toLowerCase(),oe=$.id?` id="${$.id}"`:"",pe=$.className?` class="${$.className}"`:"",J=$===i?"the WindowManager container itself":`a wrapper element: <${_}${oe}${pe}>`;console.warn(`[react-dockable-desktop] Workspace height is 0px \u2014 the workspace will be invisible.
6
6
 
7
7
  Zero height found at: ${J}
8
8
 
@@ -20,5 +20,5 @@ Fix options:
20
20
  .layout { display: flex; flex-direction: column; height: 100vh; }
21
21
  .workspace { flex: 1; min-height: 0; }
22
22
 
23
- 3. Verify styles.css is imported \u2014 it anchors html, body, #root to 100% height.`)}d({width:Math.max(100,_.width),height:Math.max(100,_.height)})});return v.observe(r),()=>{v.disconnect()}},[]),(0,G.useEffect)(()=>{let r=c.width,z=c.height;s.floating.forEach(v=>{let P=typeof v.width=="string"?parseFloat(v.width):v.width,_=typeof v.height=="string"?parseFloat(v.height):v.height,q=typeof v.x=="string"?parseFloat(v.x):v.x,Z=typeof v.y=="string"?parseFloat(v.y):v.y,A=P,oe=_,pe=q,J=Z,le=!1;if(A>r&&(A=Math.max(200,r-20),le=!0),oe>z&&(oe=Math.max(150,z-40),le=!0),!v.anchor){let me=r-100;pe>me&&(pe=Math.max(0,me),le=!0);let ce=z-40;J>ce&&(J=Math.max(0,ce),le=!0)}le&&y(v.id,{x:pe,y:J,width:A,height:oe})})},[c,s.floating,y]),(0,G.useEffect)(()=>{let r=z=>{if(z.button!==0)return;let v=z.target;if(!v||typeof v.closest!="function")return;let P=v.closest(".floating-window");if(P){let q=P.getAttribute("data-window-id");q&&(M(q),g(q));return}let _=v.closest(".workspace-panel");if(_){let q=_.getAttribute("data-active-panel-id");q&&M(q)}};return document.addEventListener("pointerdown",r),()=>{document.removeEventListener("pointerdown",r)}},[g,M]);let C=(r,z)=>{let v=s.floating.find(J=>J.id===r);if(!v||v.maximized)return;g(r);let P=z.currentTarget,_=P.closest(".floating-window"),q=z.clientX,Z=z.clientY,A=_?_.offsetLeft:0,oe=_?_.offsetTop:0,pe=()=>{let J=Ie.current,le=Xe.current,me=dt.current,ce=ut.current;if(ce)y(r,{anchor:Rt?zt(ce):ce});else if(me)a(r,Ke(me));else if(le){let Me=le.index;le.side==="right"&&(Me+=1),I(r,le.leafId,Me)}else J&&S(r,J.leafId,Ke(J.position));nt(null),it()};if(z.pointerType==="touch"){let J=z.pointerId,le=!1,me=()=>{le=!0,clearTimeout(Me),P.removeEventListener("pointermove",ce),P.removeEventListener("pointerup",me),P.removeEventListener("pointercancel",me)},ce=_e=>{Math.hypot(_e.clientX-q,_e.clientY-Z)>rt&&me()},Me=setTimeout(()=>{if(le)return;P.removeEventListener("pointermove",ce),P.removeEventListener("pointerup",me),P.removeEventListener("pointercancel",me);try{P.setPointerCapture(J)}catch{return}P.classList.add("long-press-active"),E(r);let _e=pt=>{let ln=pt.clientX-q,Xt=pt.clientY-Z;y(r,{x:A+ln,y:oe+Xt,anchor:null}),St(pt.clientX,pt.clientY)},Ne=()=>{P.classList.remove("long-press-active"),P.removeEventListener("pointermove",_e),P.removeEventListener("pointerup",Ne),P.removeEventListener("pointercancel",st),pe()},st=()=>{P.classList.remove("long-press-active"),P.removeEventListener("pointermove",_e),P.removeEventListener("pointerup",Ne),P.removeEventListener("pointercancel",st),it()};P.addEventListener("pointermove",_e),P.addEventListener("pointerup",Ne),P.addEventListener("pointercancel",st)},ot);P.addEventListener("pointermove",ce),P.addEventListener("pointerup",me),P.addEventListener("pointercancel",me)}else{let J=!1,le=ce=>{let Me=ce.clientX-q,_e=ce.clientY-Z;!J&&(Math.abs(Me)>5||Math.abs(_e)>5)&&(J=!0,E(r)),J&&y(r,{x:A+Me,y:oe+_e,anchor:null})},me=()=>{window.removeEventListener("pointermove",le),window.removeEventListener("pointerup",me),J&&pe()};window.addEventListener("pointermove",le),window.addEventListener("pointerup",me)}},B=(r,z,v)=>{v.stopPropagation();let P=s.floating.find(Vt=>Vt.id===r);if(!P||P.maximized)return;g(r);let _=v.currentTarget;_.setPointerCapture(v.pointerId);let q=v.clientX,Z=v.clientY,A=_.closest(".floating-window"),oe=A?A.offsetWidth:400,pe=A?A.offsetHeight:300,J=A?A.offsetLeft:0,le=A?A.offsetTop:0,me=c.width,ce=c.height,Me=typeof P.x=="string"?parseFloat(P.x):P.x,_e=typeof P.y=="string"?parseFloat(P.y):P.y,Ne=typeof P.width=="string"?parseFloat(P.width):P.width,st=typeof P.height=="string"?parseFloat(P.height):P.height,pt=z==="se"&&Math.abs(Me+Ne-me)<4,ln=z==="se"&&Math.abs(_e+st-ce)<4,Xt=Vt=>{let Mn=Vt.clientX-q,Rn=Vt.clientY-Z,Et=J,It=le,gt=oe,ft=pe;z.includes("e")&&(gt=Math.max(200,oe+Mn)),z.includes("w")&&(gt=Math.max(200,oe-Mn),Et=J+oe-gt),z.includes("s")&&(ft=Math.max(150,pe+Rn)),z.includes("n")&&(ft=Math.max(150,pe-Rn),It=le+pe-ft),pt&&(Et=me-gt,Et<0&&(Et=0,gt=me)),ln&&(It=ce-ft,It<0&&(It=0,ft=ce)),y(r,{x:Et,y:It,width:gt,height:ft})},Gt=()=>{_.removeEventListener("pointermove",Xt),_.removeEventListener("pointerup",Gt),_.removeEventListener("pointercancel",Gt)};_.addEventListener("pointermove",Xt),_.addEventListener("pointerup",Gt),_.addEventListener("pointercancel",Gt)},te=r=>{if(U.current){let z=r==="left"?-150:150;U.current.scrollBy({left:z,behavior:"smooth"})}},re=(0,G.useCallback)(()=>{ge.current&&clearTimeout(ge.current),ye(!0)},[]),ee=(0,G.useCallback)(()=>{ge.current=setTimeout(()=>ye(!1),400)},[]);(0,G.useEffect)(()=>{n==="autohide"&&s.minimized.length>ne.current&&(ge.current&&clearTimeout(ge.current),ye(!0),ge.current=setTimeout(()=>ye(!1),2e3)),ne.current=s.minimized.length},[s.minimized.length,n]);let[ae,Re]=(0,G.useState)("dark");return(0,G.useEffect)(()=>{let r=()=>{let v=document.documentElement.getAttribute("data-color-scheme")==="light"?"light":"dark";Re(v)};r();let z=new MutationObserver(r);return z.observe(document.documentElement,{attributes:!0,attributeFilter:["data-color-scheme"]}),()=>z.disconnect()},[]),(0,G.useEffect)(()=>(e?document.documentElement.setAttribute("data-workspace-skin",e):document.documentElement.removeAttribute("data-workspace-skin"),()=>{document.documentElement.removeAttribute("data-workspace-skin")}),[e]),(0,p.jsxs)("div",{"data-workspace-skin":e,"data-color-scheme":ae,style:{display:"flex",flexDirection:"column",position:"relative",width:"100%",height:"100%",overflow:"hidden",userSelect:"none"},dir:s.dir,children:[(0,p.jsxs)("div",{ref:h,className:s.draggedPanelId?"dragging-active":void 0,style:{flexGrow:1,width:"100%",position:"relative",overflow:"hidden"},children:[s.draggedPanelId!==null&&(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)("div",{"data-edge-trigger":"left",className:"workspace-edge-trigger edge-trigger-left",onPointerEnter:()=>We("left"),onPointerLeave:()=>We(null)}),(0,p.jsx)("div",{"data-edge-trigger":"right",className:"workspace-edge-trigger edge-trigger-right",onPointerEnter:()=>We("right"),onPointerLeave:()=>We(null)}),(0,p.jsx)("div",{"data-edge-trigger":"top",className:"workspace-edge-trigger edge-trigger-top",onPointerEnter:()=>We("top"),onPointerLeave:()=>We(null)}),(0,p.jsx)("div",{"data-edge-trigger":"bottom",className:"workspace-edge-trigger edge-trigger-bottom",onPointerEnter:()=>We("bottom"),onPointerLeave:()=>We(null)})]}),s.draggedPanelId!==null&&["top-left","top-right","bottom-left","bottom-right"].map(r=>(0,p.jsx)("div",{className:`fw-corner-zone fw-corner-zone--${r}${_t===r?" fw-corner-zone--hovered":""}`,onPointerEnter:()=>{nt(r),We(null)},onPointerLeave:()=>nt(null),"aria-hidden":"true"},r)),s.draggedPanelId!==null&&Mt!==null&&(0,p.jsx)("div",{className:"workspace-edge-preview",style:(()=>{let r=`${s.edgeSplitRatio*100}%`;switch(Mt){case"left":return{left:0,top:0,bottom:0,width:r};case"right":return{right:0,top:0,bottom:0,width:r};case"top":return{top:0,left:0,right:0,height:r};case"bottom":return{bottom:0,left:0,right:0,height:r}}})()}),(0,p.jsx)("div",{style:{width:"100%",height:"100%",overflow:"hidden",position:"relative"},children:s.gridRoot?(0,p.jsx)(Xn,{node:s.gridRoot,path:[],onTabRightClick:Yt,activeDropZone:Ce,onHoverDropZone:kt,onTabDragStart:an,hoveredTab:Bt,onTabHover:Tt,defaultPanelIcon:t,onRequestClosePanel:l}):(0,p.jsx)("div",{className:"empty-workspace-grid",children:"Grid Empty"})}),s.floating.map(r=>{let z=s.panels[r.id];if(!z)return null;let v=r.maximized,P=s.draggedPanelId===r.id,_=s.activePanelId===r.id,Z=x.get(z.component)?.defaultOptions;return(0,p.jsxs)("div",{"data-window-id":r.id,dir:s.dir,onPointerDownCapture:()=>{M(r.id),g(r.id)},className:`floating-window ${v?"maximized":""} ${_?"v2-window-focused":""} ${L??""}`,style:(()=>{let pe=typeof r.width=="number"?`${r.width}px`:r.width,J=typeof r.height=="number"?`${r.height}px`:r.height;if(v)return{position:"absolute",left:0,top:0,width:"100%",height:"100%",zIndex:r.z,pointerEvents:P?"none":"auto"};if(r.anchor){let le=s.floating.filter(Ne=>Ne.anchor===r.anchor&&!Ne.maximized),me=le.findIndex(Ne=>Ne.id===r.id),ce=8;for(let Ne=0;Ne<me;Ne++){let st=typeof le[Ne].height=="number"?le[Ne].height:parseFloat(le[Ne].height);ce+=st+8}let Me=r.anchor.startsWith("top");return{position:"absolute",[r.anchor.endsWith("-right")?"insetInlineEnd":"insetInlineStart"]:8,[Me?"top":"bottom"]:ce,width:pe,height:J,zIndex:r.z,transition:P?"none":"top 0.2s ease, bottom 0.2s ease",pointerEvents:P?"none":"auto"}}return{position:"absolute",left:typeof r.x=="number"?`${r.x}px`:r.x,top:typeof r.y=="number"?`${r.y}px`:r.y,width:pe,height:J,zIndex:r.z,pointerEvents:P?"none":"auto"}})(),children:[(0,p.jsxs)("div",{onDoubleClick:()=>w(r.id),onPointerDown:A=>{Z?.canDrag!==!1&&C(r.id,A)},className:"floating-window-titlebar cursor-move",style:{cursor:v||Z?.canDrag===!1?"default":"move"},children:[(0,p.jsxs)("span",{className:"floating-window-title",children:[(0,p.jsx)("span",{className:"window-title-icon",children:Z?.icon||t||bn}),(0,p.jsxs)("span",{children:[ve(z.title,k),z.dirty?" *":""]})]}),(0,p.jsxs)("div",{className:"fw-titlebar-actions",style:{gap:"var(--header-button-gap, 4px)"},onPointerDown:A=>A.stopPropagation(),children:[Z?.renderHeaderActions&&(0,p.jsx)("div",{className:"window-header-actions",children:Z.renderHeaderActions(r.id)}),u(r.id).length>0&&(0,p.jsx)("button",{type:"button",className:"custom-tab-btn btn-more-actions",title:"More actions",onClick:A=>{A.stopPropagation();let oe=u(r.id);oe.length!==0&&b({event:A,items:oe})},children:(0,p.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"currentColor",style:{display:"block"},children:[(0,p.jsx)("circle",{cx:"12",cy:"5",r:"2"}),(0,p.jsx)("circle",{cx:"12",cy:"12",r:"2"}),(0,p.jsx)("circle",{cx:"12",cy:"19",r:"2"})]})}),(0,p.jsx)("button",{type:"button",title:v?ve(D.restoreSize,k):ve(D.maximize,k),onClick:()=>w(r.id),className:"custom-tab-btn btn-maximize-tab",children:(0,p.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,p.jsx)("rect",{x:"4",y:"4",width:"16",height:"16",rx:"1.5"})})}),Z?.canMinimize!==!1&&(0,p.jsx)("button",{type:"button",title:ve(D.minimize,k),onClick:()=>m(r.id),className:"custom-tab-btn btn-minimize-tab",children:(0,p.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"3",children:(0,p.jsx)("path",{d:"M5 12h14"})})}),Z?.canClose!==!1&&(0,p.jsx)("button",{type:"button",title:ve(D.close,k),onClick:()=>l(r.id),className:"custom-tab-btn btn-close-tab",children:(0,p.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"3",children:(0,p.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]})]}),(0,p.jsx)("div",{className:X??void 0,style:{flexGrow:1,width:"100%",overflow:"hidden",position:"relative",isolation:"isolate"},children:(0,p.jsx)(Yn,{panelId:r.id},r.id)}),!v&&(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)("div",{onPointerDown:A=>B(r.id,"n",A),className:"resize-handle resize-n"}),(0,p.jsx)("div",{onPointerDown:A=>B(r.id,"ne",A),className:"resize-handle resize-ne"}),(0,p.jsx)("div",{onPointerDown:A=>B(r.id,"e",A),className:"resize-handle resize-e"}),(0,p.jsx)("div",{onPointerDown:A=>B(r.id,"se",A),className:"resize-handle resize-se"}),(0,p.jsx)("div",{onPointerDown:A=>B(r.id,"s",A),className:"resize-handle resize-s"}),(0,p.jsx)("div",{onPointerDown:A=>B(r.id,"sw",A),className:"resize-handle resize-sw"}),(0,p.jsx)("div",{onPointerDown:A=>B(r.id,"w",A),className:"resize-handle resize-w"}),(0,p.jsx)("div",{onPointerDown:A=>B(r.id,"nw",A),className:"resize-handle resize-nw"})]})]},r.id)})]}),(n==="always"||s.minimized.length>0)&&(0,p.jsxs)("div",{className:["taskbar-footer-container",`taskbar-mode-${n}`,n==="autohide"&&ie?"taskbar-expanded":""].filter(Boolean).join(" "),style:{height:"48px",zIndex:100},onPointerEnter:n==="autohide"?re:void 0,onPointerLeave:n==="autohide"?ee:void 0,children:[n==="autohide"&&(0,p.jsx)("div",{className:"taskbar-peek-handle"}),(0,p.jsx)("button",{type:"button",onClick:()=>te("left"),className:"taskbar-nav-btn",style:{display:s.minimized.length>4?"block":"none"},children:"\u25C0"}),(0,p.jsx)("div",{ref:U,className:"taskbar-items-container",style:{scrollSnapType:"x mandatory"},children:s.minimized.map(r=>{let v=x.get(r.component)?.defaultOptions?.icon||t||bn;return(0,p.jsx)("div",{onClick:()=>{Q.current!=="touch"&&(f(null),W(r.id))},onContextMenu:P=>o(r.id,P),onPointerDown:P=>{if(Q.current=P.pointerType,P.pointerType!=="touch")return;let _=P.currentTarget,q=P.clientX,Z=P.clientY,A=P.pointerId,oe=!1,pe=()=>{oe=!0,clearTimeout(me),_.removeEventListener("pointermove",le),_.removeEventListener("pointerup",J),_.removeEventListener("pointercancel",pe)},J=()=>{pe();let ce=_.getBoundingClientRect();N?.id===r.id?(W(r.id),f(null)):f({id:r.id,rect:ce,title:r.title,component:r.component,fromTouch:!0})},le=ce=>{Math.hypot(ce.clientX-q,ce.clientY-Z)>rt&&pe()},me=setTimeout(()=>{if(oe)return;_.removeEventListener("pointermove",le),_.removeEventListener("pointerup",J),_.removeEventListener("pointercancel",pe);try{_.setPointerCapture(A)}catch{return}navigator.vibrate&&navigator.vibrate(10);let ce=Me=>{_.removeEventListener("pointerup",ce),_.removeEventListener("pointercancel",ce),o(r.id,Me)};_.addEventListener("pointerup",ce),_.addEventListener("pointercancel",ce)},ot);_.addEventListener("pointermove",le),_.addEventListener("pointerup",J),_.addEventListener("pointercancel",pe)},onPointerEnter:P=>{if(P.pointerType==="touch"||Pe)return;Y.current&&clearTimeout(Y.current);let _=P.currentTarget.getBoundingClientRect();P.clientX>=_.left&&P.clientX<=_.right&&P.clientY>=_.top&&P.clientY<=_.bottom&&f({id:r.id,rect:_,title:r.title,component:r.component})},onPointerLeave:P=>{P.pointerType!=="touch"&&(Y.current=setTimeout(()=>{f(null)},150))},className:"taskbar-glassmorphic-item",style:{backdropFilter:"blur(6px)",transition:"all 0.2s",cursor:"pointer",scrollSnapAlign:"start",width:"38px",height:"38px",position:"relative",padding:0},children:(0,p.jsx)("span",{className:"taskbar-item-icon",children:v})},r.id)})}),N&&(0,vn.createPortal)((0,p.jsxs)("div",{className:"taskbar-item-tooltip",dir:s.dir,style:{position:"fixed",left:`${N.rect.left+N.rect.width/2}px`,top:`${N.rect.top-8}px`,transform:"translateX(-50%) translateY(-100%)",opacity:1,pointerEvents:"auto",zIndex:999999},onPointerEnter:()=>{Y.current&&clearTimeout(Y.current)},onPointerLeave:r=>{r.pointerType!=="touch"&&f(null)},onClick:()=>{W(N.id),f(null)},onContextMenu:r=>o(N.id,r),onPointerDown:r=>{if(r.pointerType!=="touch")return;let z=N.id,v=r.currentTarget,P=r.clientX,_=r.clientY,q=r.pointerId,Z=!1,A=()=>{Z=!0,clearTimeout(pe),v.removeEventListener("pointermove",oe),v.removeEventListener("pointerup",A),v.removeEventListener("pointercancel",A)},oe=J=>{Math.hypot(J.clientX-P,J.clientY-_)>rt&&A()},pe=setTimeout(()=>{if(Z)return;v.removeEventListener("pointermove",oe),v.removeEventListener("pointerup",A),v.removeEventListener("pointercancel",A);try{v.setPointerCapture(q)}catch{return}navigator.vibrate&&navigator.vibrate(10);let J=le=>{v.removeEventListener("pointerup",J),v.removeEventListener("pointercancel",J),o(z,le)};v.addEventListener("pointerup",J),v.addEventListener("pointercancel",J)},ot);v.addEventListener("pointermove",oe),v.addEventListener("pointerup",A),v.addEventListener("pointercancel",A)},children:[(0,p.jsxs)("div",{className:"tooltip-header-row",children:[(0,p.jsxs)("span",{className:"tooltip-title-text text-truncate",style:{maxWidth:"140px"},children:[ve(N.title,k),s.panels[N.id]?.dirty?" *":""]}),(0,p.jsx)("span",{onClick:r=>{r.stopPropagation(),l(N.id),f(null)},title:ve(D.closePanel,k),className:"tooltip-close-x",children:(0,p.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,p.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),(0,p.jsx)(Yo,{panelId:N.id})]}),document.body),(0,p.jsx)("button",{type:"button",onClick:()=>te("right"),className:"taskbar-nav-btn",style:{display:s.minimized.length>4?"block":"none"},children:"\u25B6"})]}),Object.keys(s.panels).map(r=>{let z=s.panels[r];if(!z)return null;let v=$n(r);return(0,vn.createPortal)((0,p.jsx)(Xo,{panelId:r,children:(0,p.jsx)("div",{style:{width:"100%",height:"100%"},dir:s.dir,children:$o(r,z.component,x)})}),v,r)}),V===null&&(0,p.jsx)(i.Component,{ref:se,theme:"dark",formatMessageProvider:k,onShow:()=>fe(!0),onHide:()=>fe(!1)}),s.draggedPanelId!==null&&!s.floating.some(r=>r.id===s.draggedPanelId)&&(0,p.jsxs)("div",{className:"drag-ghost-tab",style:{left:Ae.x+12,top:Ae.y+12,zIndex:1e5},children:["\u{1F4C4} ",ve(s.panels[s.draggedPanelId]?.title,k)||"Tab"]})]})},Gn=Vo;var rn=class{registry;initialState;config;_actions=null;_initialized=!1;_pendingCalls=[];_pendingOpenPanelIds=new Set;_pendingSubscriptions=[];_disconnectedWarnTimer=null;constructor(t={}){if(this.registry=new at,this.initialState=t.initialState??null,this.config={formatMessage:t.formatMessage,predefinedMessages:t.predefinedMessages,dir:t.dir,defaultSplitRatio:t.defaultSplitRatio,defaultEdgeSplitRatio:t.defaultEdgeSplitRatio},t.panels)for(let[n,i]of Object.entries(t.panels))this.registry.register(n,i.component,i.defaultOptions)}_connect(t){this._actions=t,this._disconnectedWarnTimer!==null&&(clearTimeout(this._disconnectedWarnTimer),this._disconnectedWarnTimer=null),this._initialized||(this._initialized=!0);for(let i of this._pendingSubscriptions)i.unsub=t.subscribe(i.event,i.callback);let n=this._pendingCalls.splice(0);for(let i of n)i(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 i={event:t,callback:n,unsub:null};return this._pendingSubscriptions.push(i),()=>{i.unsub?.(),i.unsub=null;let s=this._pendingSubscriptions.indexOf(i);s!==-1&&this._pendingSubscriptions.splice(s,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(i=>{this._pendingOpenPanelIds.delete(n),i.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()??[]}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))}publish(t,n){this._dispatch(i=>i.publish(t,n))}subscribe(t,n){return this._subscribeRaw(t,n)}onPanelOpen(t){return this._subscribeRaw("panel:opened",n=>{let i=n;t(i.id,i.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)})}};var Zn=require("react");var qe=require("react"),qn=require("react/jsx-runtime"),Vn=(0,qe.createContext)(null),Dt=({children:e})=>{let[t,n]=(0,qe.useState)({}),[i,s]=(0,qe.useState)({}),x=(0,qe.useMemo)(()=>({getActiveInGroup:W=>t[W]??null,setActiveInGroup:(W,m)=>n(T=>({...T,[W]:m})),isModifierActive:W=>i[W]??!1,setModifierActive:(W,m)=>s(T=>({...T,[W]:m})),toggleModifier:W=>s(m=>({...m,[W]:!m[W]}))}),[t,i]);return(0,qn.jsx)(Vn.Provider,{value:x,children:e})};function Ot(){let e=(0,qe.useContext)(Vn);return e||(console.warn("useToolbar() called outside <DockableDesktopProvider>. Returning no-op."),{getActiveInGroup:()=>null,setActiveInGroup:()=>{},isModifierActive:()=>!1,setModifierActive:()=>{},toggleModifier:()=>{}})}var At=require("react/jsx-runtime"),Kn=({contextMenuAdapter:e=lt,...t})=>{let n=(0,Zn.useContext)(xt),i=(0,At.jsx)(Dt,{children:(0,At.jsx)(Ut,{...t,children:(0,At.jsx)(nn,{children:t.children})})});return n!==null?i:(0,At.jsx)(en,{adapter:e,formatMessageProvider:t.formatMessage,children:i})};var De=require("react");var Se=require("react/jsx-runtime"),qo=({modal:e,index:t,isTopmost:n})=>{let{close:i,openModal:s,updateInstance:x,setDirty:W}=Je(),m=He(),T=Ye(),{dir:w}=$e(),{modalClass:y,modalBodyClass:g}=Ge(),F=(0,De.useRef)(null),{id:E,Component:S,props:I,options:a,dirty:M,dirtyOptions:u}=e,b=a,[R,H]=(0,De.useState)(b.icon||null),k=(0,De.useRef)(b);k.current=b;let D=ve(b.title,m),l=(0,De.useCallback)(async f=>{if(f?.force){i(E);return}if(F.current){if(!await F.current())return;i(E);return}if(M){s(Qe,{title:u?.title||T.unsavedChangesTitle,message:u?.message||{id:T.unsavedChangesMessage.id,defaultMessage:T.unsavedChangesMessage.defaultMessage,values:{title:D}},alert:u?.alert,alertType:u?.alertType||"danger",useYesNoTitles:!0,onOK:()=>i(E)},{size:"small"});return}i(E)},[i,s,E,M,u,D,T]),L=(0,De.useCallback)((f,Y)=>W(E,f,Y),[W,E]),X=(0,De.useCallback)(f=>x(E,{options:{...k.current,title:f}}),[x,E]),V=(0,De.useCallback)(f=>H(f),[]),se=(0,De.useCallback)(f=>(F.current=f,()=>{F.current=null}),[]),U=(0,De.useMemo)(()=>({requestClose:l,setDirty:L,setTitle:X,setIcon:V,onCloseRequested:se,containerType:"modal",instanceId:E}),[l,L,X,V,se,E]),ie=M?`${D} *`:D,ye=b.size?`v2-modal-size-${b.size}`:"v2-modal-size-auto",ge=b.closable!==!1;(0,De.useEffect)(()=>{if(!n||!ge)return;let f=Y=>{Y.key==="Escape"&&(Y.stopPropagation(),l())};return document.addEventListener("keydown",f),()=>document.removeEventListener("keydown",f)},[l,ge,n]);let N=1e4+t*10;return(0,Se.jsxs)("div",{className:"v2-modal-overlay",style:{zIndex:N},dir:w,children:[(0,Se.jsx)("div",{className:"v2-modal-curtain",onClick:ge?()=>l():void 0}),(0,Se.jsxs)("div",{className:`v2-modal-window ${ye} ${y??""}`,children:[(0,Se.jsxs)("div",{className:"v2-modal-header",children:[R&&(0,Se.jsx)("div",{className:"v2-modal-icon",children:R}),(0,Se.jsx)("h4",{className:"v2-modal-title",children:ie}),ge&&(0,Se.jsx)("button",{className:"v2-modal-close-button",onClick:()=>l(),title:m(T.closeTooltip),type:"button",children:(0,Se.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,Se.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),(0,Se.jsx)("div",{className:`v2-modal-body ${g??""}`,children:(0,Se.jsx)(je,{value:U,children:(0,Se.jsx)(S,{...I,panelId:E})})})]})]})},Zo=()=>{let{modals:e}=Ve();return e.length===0?null:(0,Se.jsx)(Se.Fragment,{children:e.map((t,n)=>(0,Se.jsx)(qo,{modal:t,index:n,isTopmost:n===e.length-1},t.id))})},jn=Zo;var Le=require("react");var Te=require("react/jsx-runtime"),sn=({panel:e,position:t,defaultWidth:n})=>{let{close:i,openModal:s,updateInstance:x,setDirty:W,registerCloseHandler:m,unregisterCloseHandler:T}=Je(),{modals:w}=Ve(),y=He(),g=Ye(),{dir:F}=$e(),{sidePanelClass:E,sidePanelBodyClass:S}=Ge(),I=(0,Le.useRef)(null),{id:a,Component:M,props:u,options:b,dirty:R,dirtyOptions:H}=e,k=b,[D,l]=(0,Le.useState)(k.icon||null),L=(0,Le.useRef)(k);L.current=k;let X=ve(k.title,y),V=(0,Le.useCallback)(async Q=>{if(Q?.force){i(a);return}if(I.current){if(!await I.current())return;i(a);return}if(R){s(Qe,{title:H?.title||g.unsavedChangesTitle,message:H?.message||{id:g.unsavedChangesMessage.id,defaultMessage:g.unsavedChangesMessage.defaultMessage,values:{title:X}},alert:H?.alert,alertType:H?.alertType||"danger",useYesNoTitles:!0,onOK:()=>i(a)},{size:"small"});return}i(a)},[i,s,a,R,H,X,g]),se=(0,Le.useCallback)(async()=>I.current?await I.current():!R,[R]);(0,Le.useEffect)(()=>(m(a,se),()=>T(a)),[a,se,m,T]);let U=(0,Le.useCallback)((Q,j)=>W(a,Q,j),[W,a]),ie=(0,Le.useCallback)(Q=>x(a,{options:{...L.current,title:Q}}),[x,a]),ye=(0,Le.useCallback)(Q=>l(Q),[]),ge=(0,Le.useCallback)(Q=>(I.current=Q,()=>{I.current=null}),[]),ne=(0,Le.useMemo)(()=>({requestClose:V,setDirty:U,setTitle:ie,setIcon:ye,onCloseRequested:ge,containerType:t==="left"?"left-panel":"right-panel",instanceId:a}),[V,U,ie,ye,ge,t,a]),N=R?`${X} *`:X;(0,Le.useEffect)(()=>{let Q=j=>{j.key==="Escape"&&w.length===0&&V()};return document.addEventListener("keydown",Q),()=>document.removeEventListener("keydown",Q)},[V,w.length]);let f=k.width||n||400,Y=typeof f=="number"?`${f}px`:f;return(0,Te.jsx)("div",{className:`v2-side-panel v2-side-panel-${t} v2-side-panel-visible ${E??""}`,style:{width:Y},dir:F,children:(0,Te.jsxs)("div",{className:"v2-side-panel-window",children:[(0,Te.jsxs)("div",{className:"v2-side-panel-header",children:[D&&(0,Te.jsx)("div",{className:"v2-side-panel-icon",children:D}),(0,Te.jsx)("h4",{className:"v2-side-panel-title",children:N}),(0,Te.jsx)("button",{className:"v2-side-panel-close-button",onClick:()=>V(),title:y(g.closeTooltip),type:"button",children:(0,Te.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,Te.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),(0,Te.jsx)("div",{className:`v2-side-panel-body ${S??""}`,children:(0,Te.jsx)(je,{value:ne,children:(0,Te.jsx)(M,{...u,panelId:a})})})]})})},Ko=({defaultWidth:e})=>{let{leftPanel:t,rightPanel:n}=Ve();return(0,Te.jsxs)(Te.Fragment,{children:[t&&(0,Te.jsx)(sn,{panel:t,position:"left",defaultWidth:e},t.id),n&&(0,Te.jsx)(sn,{panel:n,position:"right",defaultWidth:e},n.id)]})},Un=({defaultWidth:e})=>{let{leftPanel:t}=Ve();return t?(0,Te.jsx)(sn,{panel:t,position:"left",defaultWidth:e},t.id):null},Jn=({defaultWidth:e})=>{let{rightPanel:t}=Ve();return t?(0,Te.jsx)(sn,{panel:t,position:"right",defaultWidth:e},t.id):null},Qn=Ko;var ue=require("react"),ke=require("react/jsx-runtime"),to=(0,ue.createContext)(null),no=(0,ue.createContext)(null);function jo({tabId:e,onClose:t,onOpen:n,setActiveTabId:i,children:s}){let x=(0,ue.useMemo)(()=>({tabId:e,onClose:t,onOpen:n,openTab:W=>i(W)}),[e,t,n,i]);return(0,ke.jsx)(no.Provider,{value:x,children:s})}var eo=(0,ue.memo)(function({tabs:t,activeTabId:n,isVisible:i,position:s,onTabClick:x}){return(0,ke.jsx)("div",{style:{width:i?"56px":"0px",height:"100%",overflow:"hidden",transition:"width 0.25s cubic-bezier(0.4, 0, 0.2, 1)",flexShrink:0},children:(0,ke.jsx)("div",{className:`sidebar-tabs-strip ${s}`,style:{width:"56px",height:"100%"},children:t.map(W=>{let m=n===W.id;return(0,ke.jsx)("button",{type:"button",onClick:()=>x(W.id),className:`sidebar-tab-btn${m?" active":""}`,title:W.label,"aria-pressed":m,children:W.icon},W.id)})})})});function Uo({position:e,currentWidth:t,minWidth:n,maxWidth:i,onWidthChange:s,rootRef:x}){return(0,ke.jsx)("div",{className:"resizer-bar",style:{cursor:"col-resize",width:"1px",height:"100%",flexShrink:0,zIndex:20},onPointerDown:m=>{m.preventDefault();let T=m.currentTarget;T.setPointerCapture(m.pointerId);let w=m.clientX,y=t;T.classList.add("active"),document.body.classList.add("resizing-active","resizing-col-active"),x.current?.classList.add("sidebar-resizing");let g=E=>{let S=E.clientX-w,I=e==="right"?y-S:y+S;s(Math.max(n,Math.min(i,I)))},F=()=>{T.classList.remove("active"),document.body.classList.remove("resizing-active","resizing-col-active"),x.current?.classList.remove("sidebar-resizing"),T.removeEventListener("pointermove",g),T.removeEventListener("pointerup",F),T.removeEventListener("pointercancel",F)};T.addEventListener("pointermove",g),T.addEventListener("pointerup",F),T.addEventListener("pointercancel",F)}})}var oo=(0,ue.forwardRef)(function({position:t="right",tabs:n,defaultWidth:i,minWidth:s=150,maxWidth:x=600,onWidthChange:W,drawerWidth:m,activeTabId:T,onActiveTabChange:w,visible:y,onVisibilityChange:g,stripVisible:F,onStripVisibilityChange:E,children:S},I){let a=T!==void 0,[M,u]=(0,ue.useState)(()=>i!==void 0?i:m!==void 0&&parseInt(m,10)||220),b=(0,ue.useCallback)(j=>{u(j),W?.(j)},[W]),[R,H]=(0,ue.useState)(null),k=a?T:R,[D,l]=(0,ue.useState)(()=>new Set),L=(0,ue.useMemo)(()=>{let j=new Set(D);k&&j.add(k);for(let fe of n)fe.eagerMount&&j.add(fe.id);return j},[D,k,n]),X=(0,ue.useRef)(k??null);(0,ue.useEffect)(()=>{X.current=k??null},[k]);let V=(0,ue.useRef)(M);(0,ue.useEffect)(()=>{V.current=M},[M]);let se=(0,ue.useRef)(null),U=(0,ue.useCallback)(j=>{l(j!==null?fe=>{if(fe.has(j))return fe;let Pe=new Set(fe);return Pe.add(j),Pe}:fe=>{let Pe=!1,Ce=new Set(fe);for(let ze of fe){let Ie=n.find(Ae=>Ae.id===ze);Ie&&!Ie.eagerMount&&!Ie.preserveState&&(Ce.delete(ze),Pe=!0)}return Pe?Ce:fe}),a||H(j),w?.(j)},[a,w,n]);(0,ue.useImperativeHandle)(I,()=>({openTab:j=>U(j),closeDrawer:()=>U(null),getActiveTab:()=>X.current,show:()=>g?.(!0),hide:()=>g?.(!1),toggle:()=>g?.(y===!1),showStrip:()=>E?.(!0),hideStrip:()=>E?.(!1),setWidth:j=>b(Math.max(s,Math.min(x,j))),getWidth:()=>V.current}),[U,y,g,E,b,s,x]);let ie=(0,ue.useCallback)(j=>{U(k===j?null:j)},[k,U]),ye=(0,ue.useCallback)(()=>U(null),[U]),ge=(0,ue.useMemo)(()=>({openTab:j=>U(j),closeDrawer:()=>U(null),getActiveTab:()=>X.current}),[U]),ne=y!==!1,N=ne&&F!==!1,f=ne&&k!=null,Y=(0,ke.jsx)("div",{className:`sidebar-content-drawer ${t}`,style:{flexBasis:f?`${M}px`:"0px",flexShrink:1,flexGrow:0,minWidth:f?`${s}px`:"0px",maxWidth:f?`${x}px`:"0px",overflow:"hidden",transition:"flex-basis 0.2s cubic-bezier(0.4, 0, 0.2, 1), min-width 0.2s cubic-bezier(0.4, 0, 0.2, 1), max-width 0.2s cubic-bezier(0.4, 0, 0.2, 1)"},children:n.map(j=>{if(!L.has(j.id))return null;let Pe=k===j.id,Ce=()=>U(j.id);return(0,ke.jsxs)("div",{style:{display:Pe?"flex":"none",flexDirection:"column",height:"100%",width:"100%"},children:[(0,ke.jsx)("div",{className:"sidebar-drawer-header",children:(0,ke.jsx)("span",{className:"sidebar-header-title",children:j.label})}),(0,ke.jsx)("div",{className:"sidebar-drawer-body",children:(0,ke.jsx)(jo,{tabId:j.id,onClose:ye,onOpen:Ce,setActiveTabId:U,children:j.renderContent(j.id,ye,Ce)})})]},j.id)})}),Q=f?(0,ke.jsx)(Uo,{position:t,currentWidth:M,minWidth:s,maxWidth:x,onWidthChange:b,rootRef:se}):null;return(0,ke.jsx)(to.Provider,{value:ge,children:(0,ke.jsxs)("div",{ref:se,style:{display:"flex",flexDirection:"row",width:"100%",height:"100%",overflow:"hidden"},children:[t==="left"&&(0,ke.jsx)(eo,{tabs:n,activeTabId:k,isVisible:N,position:t,onTabClick:ie}),t==="left"&&Y,t==="left"&&Q,(0,ke.jsx)("div",{style:{flex:"1 1 auto",minWidth:0,overflow:"hidden"},children:S}),t==="right"&&Q,t==="right"&&Y,t==="right"&&(0,ke.jsx)(eo,{tabs:n,activeTabId:k,isVisible:N,position:t,onTabClick:ie})]})})});function ro(){let e=(0,ue.useContext)(to);return e||(console.warn("useSidebar() called outside a <Sidebar> tree. Returning no-op."),{openTab:()=>{},closeDrawer:()=>{},getActiveTab:()=>null})}function io(){let e=(0,ue.useContext)(no);return e||(console.warn("useSidebarTab() called outside a <Sidebar> tab renderContent tree. Returning no-op."),{tabId:"",onOpen:()=>{},onClose:()=>{},openTab:()=>{}})}var Oe=require("react"),so=require("react-dom");var Ee=require("react/jsx-runtime");function Jo(e,t,n=!1,i=8){switch(t){case"left":return n?{right:window.innerWidth-e.left+i,top:e.top}:{left:e.right+i,top:e.top};case"right":return n?{left:e.right+i,top:e.top}:{right:window.innerWidth-e.left+i,top:e.top};case"top":return n?{top:e.bottom+i,right:window.innerWidth-e.right}:{top:e.bottom+i,left:e.left};case"bottom":return n?{bottom:window.innerHeight-e.top+i,right:window.innerWidth-e.right}:{bottom:window.innerHeight-e.top+i,left:e.left}}}function Qo({item:e,position:t,toolbar:n}){let[i,s]=(0,Oe.useState)(!1),[x,W]=(0,Oe.useState)(null),m=(0,Oe.useRef)(null),T=(0,Oe.useRef)(null),w=e.activeItemId!==void 0,y=w?e.activeItemId:n.getActiveInGroup(e.id),g=e.items.find(a=>!("type"in a)&&a.id===y),F=y!==null,E=g?.icon??e.defaultIcon,S=g?.label??e.label,I=()=>{e.disabled||(!i&&m.current&&W(m.current.getBoundingClientRect()),s(a=>!a))};return(0,Oe.useLayoutEffect)(()=>{if(!i||!T.current)return;let a=T.current,M=a.getBoundingClientRect(),u=8;M.right>window.innerWidth-u&&(a.style.left=`${Math.max(u,window.innerWidth-M.width-u)}px`,a.style.right="auto"),M.left<u&&(a.style.left=`${u}px`,a.style.right="auto"),M.bottom>window.innerHeight-u&&(a.style.top=`${Math.max(u,window.innerHeight-M.height-u)}px`,a.style.bottom="auto"),M.top<u&&(a.style.top=`${u}px`,a.style.bottom="auto")},[i]),(0,Oe.useEffect)(()=>{if(!i)return;let a=M=>{let u=M.target;m.current?.contains(u)||T.current?.contains(u)||s(!1)};return document.addEventListener("mousedown",a),()=>document.removeEventListener("mousedown",a)},[i]),(0,Oe.useEffect)(()=>{if(!i)return;let a=M=>{M.key==="Escape"&&s(!1)};return document.addEventListener("keydown",a),()=>document.removeEventListener("keydown",a)},[i]),(0,Ee.jsxs)(Ee.Fragment,{children:[(0,Ee.jsx)("button",{ref:m,type:"button",className:`toolbar-btn toolbar-btn-group${F?" active":""}`,title:S,"aria-label":S,"aria-expanded":i,"aria-haspopup":"menu",disabled:e.disabled,onClick:I,children:E}),i&&x&&(0,so.createPortal)((0,Ee.jsx)("div",{ref:T,className:`toolbar-group-flyout ${t}`,style:Jo(x,t,document.documentElement.dir==="rtl"),role:"menu",children:e.items.map((a,M)=>{if("type"in a)return(0,Ee.jsx)("div",{className:"toolbar-group-flyout-sep",role:"separator"},`sep-${M}`);let u=y===a.id;return(0,Ee.jsxs)("button",{type:"button",className:`toolbar-group-flyout-item${u?" active":""}`,disabled:a.disabled,role:"menuitem","aria-pressed":u,onClick:()=>{w?e.onActiveItemChange?.(a.id):n.setActiveInGroup(e.id,a.id),a.onActivate?.(a.id),s(!1)},children:[(0,Ee.jsx)("span",{className:"toolbar-group-flyout-icon",children:a.icon}),(0,Ee.jsx)("span",{className:"toolbar-group-flyout-label",children:a.label}),a.shortcut&&(0,Ee.jsx)("span",{className:"toolbar-group-flyout-shortcut",children:a.shortcut})]},a.id)})}),document.body)]})}function er(e,t,n,i){switch(e.type){case"separator":return(0,Ee.jsx)("div",{className:"toolbar-separator",role:"separator"},`sep-${t}`);case"action":return(0,Ee.jsx)("button",{type:"button",className:"toolbar-btn toolbar-btn-action",title:e.label,"aria-label":e.label,disabled:e.disabled,onClick:e.onClick,children:e.icon},e.id);case"radio":{let s=n.getActiveInGroup(e.group)===e.id;return(0,Ee.jsx)("button",{type:"button",className:`toolbar-btn toolbar-btn-radio${s?" active":""}`,title:e.label,"aria-label":e.label,"aria-pressed":s,disabled:e.disabled,onClick:()=>{n.setActiveInGroup(e.group,e.id),e.onActivate?.(e.id)},children:e.icon},e.id)}case"toggle":{let s=n.isModifierActive(e.id);return(0,Ee.jsx)("button",{type:"button",className:`toolbar-btn toolbar-btn-toggle${s?" active":""}`,title:e.label,"aria-label":e.label,"aria-pressed":s,disabled:e.disabled,onClick:()=>{n.toggleModifier(e.id),e.onToggle?.(!s)},children:e.icon},e.id)}case"group":return(0,Ee.jsx)(Qo,{item:e,position:i,toolbar:n},e.id)}}var ao=(0,Oe.forwardRef)(function({position:t="left",items:n,visible:i,onVisibilityChange:s,className:x,style:W},m){let T=Ot(),w=t==="left"||t==="right";(0,Oe.useImperativeHandle)(m,()=>({show:()=>s?.(!0),hide:()=>s?.(!1),toggle:()=>s?.(i===!1)}),[i,s]);let y=i!==!1?{}:w?{width:"0px"}:{height:"0px"};return(0,Ee.jsx)("div",{className:`toolbar-strip ${t}${x?` ${x}`:""}`,role:"toolbar","aria-orientation":w?"vertical":"horizontal",style:{...y,...W},children:n.map((g,F)=>er(g,F,T,t))})});var we=require("react"),xn=require("react-dom"),he=require("react/jsx-runtime"),wn=class{listeners=new Set;counter=0;subscribe(t){this.listeners.add(t)}unsubscribe(t){this.listeners.delete(t)}show(t,n={}){let i=n.id??`toast-${++this.counter}`;return this.emit({kind:"show",id:i,message:t,rawOpts:{...n,id:i}}),i}update(t,n,i){this.emit({kind:"update",id:t,message:n,patch:i})}dismiss(t){this.emit({kind:"dismiss",id:t})}emit(t){this.listeners.forEach(n=>n(t))}},Fe=new wn,lo=Object.assign((e,t)=>Fe.show(e,t),{info:(e,t)=>Fe.show(e,{...t,type:"info"}),success:(e,t)=>Fe.show(e,{...t,type:"success"}),warning:(e,t)=>Fe.show(e,{...t,type:"warning"}),error:(e,t)=>Fe.show(e,{...t,type:"error"}),dismiss:e=>Fe.dismiss(e),promise:(e,t,n)=>{let i=Fe.show(t.pending,{...n,type:"info",duration:0});return e.then(s=>{let x=typeof t.success=="function"?t.success(s):t.success;Fe.update(i,x,{type:"success",duration:n?.duration??5e3})},s=>{let x=typeof t.error=="function"?t.error(s):t.error;Fe.update(i,x,{type:"error",duration:n?.duration??5e3})}),e}}),tr=()=>(0,he.jsxs)("svg",{className:"dw-toast__icon",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[(0,he.jsx)("circle",{cx:"8",cy:"8",r:"7",stroke:"currentColor",strokeWidth:"1.5"}),(0,he.jsx)("path",{d:"M8 5v.01M8 7.5v3.5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]}),nr=()=>(0,he.jsxs)("svg",{className:"dw-toast__icon",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[(0,he.jsx)("circle",{cx:"8",cy:"8",r:"7",stroke:"currentColor",strokeWidth:"1.5"}),(0,he.jsx)("path",{d:"M5 8l2 2 4-4",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})]}),or=()=>(0,he.jsxs)("svg",{className:"dw-toast__icon",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[(0,he.jsx)("path",{d:"M8 2.5L14 13.5H2L8 2.5z",stroke:"currentColor",strokeWidth:"1.5",strokeLinejoin:"round"}),(0,he.jsx)("path",{d:"M8 7v2.5M8 11.5v.01",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]}),rr=()=>(0,he.jsxs)("svg",{className:"dw-toast__icon",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[(0,he.jsx)("circle",{cx:"8",cy:"8",r:"7",stroke:"currentColor",strokeWidth:"1.5"}),(0,he.jsx)("path",{d:"M5.5 5.5l5 5M10.5 5.5l-5 5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]}),ir=()=>(0,he.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:(0,he.jsx)("path",{d:"M4 4l8 8M12 4l-8 8",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})}),sr={info:(0,he.jsx)(tr,{}),success:(0,he.jsx)(nr,{}),warning:(0,he.jsx)(or,{}),error:(0,he.jsx)(rr,{})};function ar({id:e,message:t,options:n,exiting:i,isLeft:s,showProgress:x,pauseOnHover:W,animation:m,onDismiss:T,onExited:w}){let y=(0,we.useRef)(null),g=(0,we.useRef)(null),F=(0,we.useRef)(n.duration),E=(0,we.useRef)(0),[S,I]=(0,we.useState)(!1),a=m==="none"?"dw-toast--visible":m==="fade"?"dw-toast--fade-entering":s?"dw-toast--entering-left":"dw-toast--entering",[M,u]=(0,we.useState)(a);(0,we.useLayoutEffect)(()=>{y.current&&(y.current.style.maxHeight=`${y.current.offsetHeight}px`)},[]),(0,we.useEffect)(()=>{if(m==="none")return;let l=requestAnimationFrame(()=>u("dw-toast--visible"));return()=>cancelAnimationFrame(l)},[]);let b=(0,we.useCallback)(l=>{l<=0||(E.current=Date.now(),g.current=setTimeout(()=>T(e),l))},[e,T]);(0,we.useEffect)(()=>(g.current&&clearTimeout(g.current),F.current=n.duration,b(n.duration),()=>{g.current&&clearTimeout(g.current)}),[n.duration,b]),(0,we.useEffect)(()=>{if(!i)return;let l=y.current;if(!l||m==="none"){w(e);return}let L=V=>{V.propertyName==="max-height"&&w(e)};l.addEventListener("transitionend",L);let X=setTimeout(()=>w(e),520);return()=>{l.removeEventListener("transitionend",L),clearTimeout(X)}},[i,e,w,m]);let R=()=>{!W||n.duration===0||(g.current&&(clearTimeout(g.current),g.current=null,F.current=Math.max(0,F.current-(Date.now()-E.current))),I(!0))},H=()=>{!W||n.duration===0||(I(!1),b(F.current))},k=["dw-toast",n.type&&`dw-toast--${n.type}`,M,i&&"dw-toast--exiting",S&&"dw-toast--paused"].filter(Boolean).join(" "),D=n.icon!==void 0?n.icon:n.type?sr[n.type]:null;return(0,he.jsxs)("div",{ref:y,role:"status","aria-live":"polite",className:k,onMouseEnter:R,onMouseLeave:H,children:[D&&D,(0,he.jsx)("div",{className:"dw-toast__body",children:n.content!==void 0?n.content:t}),n.closable&&(0,he.jsx)("button",{type:"button",className:"dw-toast__close",onClick:()=>T(e),"aria-label":"Close notification",children:(0,he.jsx)(ir,{})}),x&&n.duration>0&&(0,he.jsx)("div",{className:"dw-toast__progress",style:{animationDuration:`${n.duration}ms`}})]})}function Pn(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 co({position:e="top-right",maxVisible:t=3,defaultDuration:n=5e3,defaultClosable:i=!0,pauseOnHover:s=!0,animation:x="slide",newestOnTop:W=!1,progressBar:m=!1,width:T=320,adapter:w}){let[y,g]=(0,we.useState)([]),F=(0,we.useRef)([]),E=(0,we.useRef)(y);E.current=y;let S=(0,we.useCallback)(b=>{g(R=>R.map(H=>H.id===b?{...H,exiting:!0}:H)),E.current.find(R=>R.id===b)?.options.onClose?.()},[]),I=(0,we.useCallback)(b=>{let R=F.current.shift()??null;g(H=>{let k=H.filter(l=>l.id!==b);if(!R)return k;let D=Pn(R.rawOpts,n,i);return[...k,{id:R.id,message:R.message,options:D,exiting:!1}]})},[n,i]);if((0,we.useEffect)(()=>{if(w)return;let b=R=>{if(R.kind==="show"){let H=Pn(R.rawOpts,n,i),k={id:R.id,message:R.message,options:H,exiting:!1},D={id:R.id,message:R.message,rawOpts:R.rawOpts};g(l=>l.find(V=>V.id===R.id)?l.map(V=>V.id===R.id?{...V,message:R.message,options:H}:V):l.filter(V=>!V.exiting).length<t?[...l,k]:(F.current.some(V=>V.id===D.id)||F.current.push(D),l))}else R.kind==="update"?(g(H=>H.map(k=>{if(k.id!==R.id)return k;let D={...k.options,...R.patch,id:k.id};return{...k,message:R.message,options:D}})),F.current=F.current.map(H=>H.id!==R.id?H:{...H,message:R.message,rawOpts:{...H.rawOpts,...R.patch}})):R.kind==="dismiss"&&(R.id===void 0?(g(H=>H.map(k=>({...k,exiting:!0}))),F.current=[]):E.current.some(k=>k.id===R.id)?S(R.id):F.current=F.current.filter(k=>k.id!==R.id))};return Fe.subscribe(b),()=>Fe.unsubscribe(b)},[w,t,n,i,S]),(0,we.useEffect)(()=>{if(!w)return;let b=R=>{if(R.kind==="show"){let H=Pn(R.rawOpts,n,i);w.show(R.id,R.message,H)}else R.kind==="update"?w.update(R.id,R.message,R.patch):R.kind==="dismiss"&&w.dismiss(R.id)};return Fe.subscribe(b),()=>Fe.unsubscribe(b)},[w,n,i]),w){if(!w.Container)return null;let b=w.Container;return(0,xn.createPortal)((0,he.jsx)(b,{position:e}),document.body)}let a=e.endsWith("left"),M="";W===!0&&(M="dw-toast-container--newest-top"),W===!1&&(M="dw-toast-container--newest-bottom");let u=["dw-toast-container",`dw-toast-container--${e}`,M].filter(Boolean).join(" ");return(0,xn.createPortal)((0,he.jsx)("div",{className:u,style:{width:T},"aria-label":"Notifications","aria-live":"polite",children:y.map(b=>(0,he.jsx)(ar,{id:b.id,message:b.message,options:b.options,exiting:b.exiting,isLeft:a,showProgress:m,pauseOnHover:s,animation:x,onDismiss:S,onExited:I},b.id))}),document.body)}var $=cn(require("react"),1),fo=require("react-dom");var K=require("react/jsx-runtime"),lr=["top-left","top-right","bottom-left","bottom-right"],mo=(0,$.createContext)(null),ho=(0,$.createContext)(null),vo=(0,$.createContext)(null),tt=80;function cr(e,t,n){let i=e.getBoundingClientRect(),s=t-i.left,x=n-i.top;return s<tt&&x<tt?"top-left":s>i.width-tt&&x<tt?"top-right":s<tt&&x>i.height-tt?"bottom-left":s>i.width-tt&&x>i.height-tt?"bottom-right":null}function bo({children:e,className:t,style:n}){let[i,s]=(0,$.useState)({}),[x,W]=(0,$.useState)({}),[m,T]=(0,$.useState)({"top-left":[],"top-right":[],"bottom-left":[],"bottom-right":[]}),[w,y]=(0,$.useState)({}),[g,F]=(0,$.useState)(null),[E,S]=(0,$.useState)(null),[I,a]=(0,$.useState)(null),[M,u]=(0,$.useState)(()=>new Map),b=(0,$.useRef)(100),R=(0,$.useRef)(null),H=(0,$.useCallback)((ne,N)=>(s(f=>({...f,[ne]:N})),()=>s(f=>{let Y={...f};return delete Y[ne],Y})),[]),k=(0,$.useCallback)(ne=>{b.current+=1;let N=b.current;W(f=>({...f,[ne]:N})),a(ne)},[]),D=(0,$.useCallback)((ne,N)=>{T(f=>{let Y={"top-left":f["top-left"].filter(Q=>Q!==ne),"top-right":f["top-right"].filter(Q=>Q!==ne),"bottom-left":f["bottom-left"].filter(Q=>Q!==ne),"bottom-right":f["bottom-right"].filter(Q=>Q!==ne)};return Y[N]=[...Y[N],ne],Y})},[]),l=(0,$.useCallback)(ne=>{T(N=>({"top-left":N["top-left"].filter(f=>f!==ne),"top-right":N["top-right"].filter(f=>f!==ne),"bottom-left":N["bottom-left"].filter(f=>f!==ne),"bottom-right":N["bottom-right"].filter(f=>f!==ne)}))},[]),L=(0,$.useCallback)((ne,N)=>{y(f=>f[ne]===N?f:{...f,[ne]:N})},[]),X=(0,$.useCallback)((ne,N)=>{u(f=>{let Y=new Map(f);return Y.set(ne,N),Y})},[]),V=(0,$.useCallback)(ne=>{u(N=>{let f=new Map(N);return f.delete(ne),f})},[]),se=(0,$.useCallback)(()=>{u(new Map)},[]),U=(0,$.useMemo)(()=>Array.from(M.keys()),[M]),ie=(0,$.useMemo)(()=>({registerToolbar:H,insetTop:i.top??0,insetBottom:i.bottom??0}),[H,i]),ye=(0,$.useMemo)(()=>({managedWindowIds:U,openManaged:X,closeManaged:V,closeAllManaged:se}),[U,X,V,se]),ge=(0,$.useMemo)(()=>({topId:I,zOrders:x,focusWindow:k,containerRef:R,stacks:m,dockedSizes:w,dockWindow:D,undockWindow:l,reportDockedSize:L,draggingId:g,setDraggingId:F,hoveredZone:E,setHoveredZone:S,insetTop:i.top??0,insetBottom:i.bottom??0}),[I,x,k,m,w,D,l,L,g,E,i]);return(0,K.jsx)(mo.Provider,{value:ie,children:(0,K.jsx)(ho.Provider,{value:ye,children:(0,K.jsx)(vo.Provider,{value:ge,children:(0,K.jsxs)("div",{ref:R,className:`dw-panel-overlay-root${g!==null?" dragging-active":""}${t?" "+t:""}`,style:n,children:[e,g!==null&&(0,K.jsx)(dr,{hoveredZone:E}),Array.from(M.entries()).map(([ne,N])=>(0,K.jsx)(Cn,{id:ne,title:N.title,icon:N.icon,open:!0,onClose:()=>V(ne),defaultAnchor:N.anchor??"top-right",defaultWidth:N.width??320,defaultHeight:N.height??240,children:N.content},ne))]})})})})}function dr({hoveredZone:e}){return(0,K.jsx)(K.Fragment,{children:lr.map(t=>(0,K.jsx)("div",{className:`dw-panel-float-dropzone dw-panel-float-dropzone--${t}${e===t?" dw-panel-float-dropzone--hovered":""}`,"aria-hidden":"true"},t))})}function yo({position:e,variant:t="transparent",buttonVariant:n="ghost",buttonSize:i,style:s,className:x,children:W}){let m=(0,$.useContext)(mo),T=(0,$.useRef)(null),w=(0,$.useRef)(null);(0,$.useLayoutEffect)(()=>{let S=T.current;if(!S||!m)return;let I=e==="top"||e==="bottom"?S.offsetHeight:S.offsetWidth;return w.current?.(),w.current=m.registerToolbar(e,I),()=>{w.current?.(),w.current=null}},[e,m?.registerToolbar]);let y={position:"absolute",zIndex:5,pointerEvents:"none",boxSizing:"border-box"};e==="top"?(y.top=0,y.left=0,y.right=0):e==="bottom"?(y.bottom=0,y.left=0,y.right=0):e==="left"?(y.insetInlineStart=0,y.top=m?.insetTop??0,y.bottom=m?.insetBottom??0):(y.insetInlineEnd=0,y.top=m?.insetTop??0,y.bottom=m?.insetBottom??0);let F=e==="left"||e==="right"?{...(m?.insetTop??0)>0?{paddingTop:0}:{},...(m?.insetBottom??0)>0?{paddingBottom:0}:{}}:{},E=i!=null?{"--panel-toolbar-btn-size":`${i}px`}:{};return(0,K.jsx)("div",{ref:T,className:`dw-panel-toolbar dw-panel-toolbar--${e}${x?" "+x:""}`,"data-variant":t,"data-btn-variant":n,style:{...y,...F,...E,...s},children:W})}function Po({icon:e,onClick:t,disabled:n,title:i,variant:s}){return(0,K.jsx)("button",{type:"button",className:"dw-panel-toolbar-btn",onClick:t,disabled:n,title:i,"aria-label":i,...s?{"data-variant":s}:{},children:e})}function xo({icon:e,active:t,onToggle:n,disabled:i,title:s,variant:x}){return(0,K.jsx)("button",{type:"button",className:`dw-panel-toolbar-btn${t?" dw-panel-toolbar-btn--active":""}`,onClick:n,disabled:i,title:s,"aria-label":s,"aria-pressed":t,...x?{"data-variant":x}:{},children:e})}function wo(){return(0,K.jsx)("span",{className:"dw-panel-toolbar__sep","aria-hidden":"true"})}function Co(){return(0,K.jsx)("span",{className:"dw-panel-toolbar__spacer","aria-hidden":"true"})}function Mo({children:e}){return(0,K.jsx)("span",{className:"dw-panel-toolbar__item",children:e})}function Ro({children:e}){return(0,K.jsx)("div",{className:"dw-panel-toolbar__center",children:e})}function To({placeholder:e="Search\u2026",onSearch:t,onSelect:n}){let[i,s]=(0,$.useState)(!1),[x,W]=(0,$.useState)(""),[m,T]=(0,$.useState)([]),[w,y]=(0,$.useState)(null),g=(0,$.useRef)(null),F=(0,$.useRef)(null),E=(0,$.useRef)(null),S=(0,$.useRef)(null),I=()=>{s(!0),setTimeout(()=>F.current?.focus(),0)},a=()=>{s(!1),W(""),T([]),y(null),E.current?.abort(),S.current&&clearTimeout(S.current)},M=D=>{let l=D.target.value;if(W(l),E.current?.abort(),S.current&&clearTimeout(S.current),!l.trim()){T([]),y(null);return}S.current=setTimeout(async()=>{let L=new AbortController;E.current=L;try{let X=await t(l,L.signal);if(!L.signal.aborted){T(X);let V=g.current;if(V&&X.length>0){let se=V.getBoundingClientRect(),U=Math.max(se.width,240),ie=se.left;ie+U>window.innerWidth-8&&(ie=window.innerWidth-U-8),y({top:se.bottom+4,left:ie,width:U})}else y(null)}}catch{}},300)},u=D=>{n(D),a()},b=D=>{g.current?.contains(D.relatedTarget)||a()},R=D=>{D.key==="Escape"&&a()},H=(0,$.useMemo)(()=>{let D={};for(let l of m){let L=l.group??"";D[L]||(D[L]=[]),D[L].push(l)}return D},[m]),k=(0,K.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,K.jsx)("circle",{cx:"6.5",cy:"6.5",r:"4.5"}),(0,K.jsx)("line",{x1:"10",y1:"10",x2:"14",y2:"14"})]});return i?(0,K.jsxs)("div",{ref:g,className:"dw-panel-toolbar-search dw-panel-toolbar-search--open",onBlur:b,children:[(0,K.jsx)("button",{type:"button",className:"dw-panel-toolbar-btn",onClick:a,"aria-label":"Close search",title:"Close search",children:k}),(0,K.jsx)("input",{ref:F,className:"dw-panel-toolbar-search__input",type:"text",value:x,onChange:M,onKeyDown:R,placeholder:e,autoComplete:"off"}),w&&m.length>0&&(0,fo.createPortal)((0,K.jsx)("div",{className:"dw-panel-toolbar-search__dropdown",style:{position:"fixed",top:w.top,left:w.left,width:w.width,zIndex:9502},onMouseDown:D=>D.preventDefault(),children:Object.entries(H).map(([D,l])=>(0,K.jsxs)($.default.Fragment,{children:[D&&(0,K.jsx)("div",{className:"dw-panel-toolbar-search__group",children:D}),l.map(L=>(0,K.jsxs)("button",{type:"button",className:"dw-panel-toolbar-search__item",onClick:()=>u(L),children:[L.icon&&(0,K.jsx)("span",{className:"dw-panel-toolbar-search__item-icon",children:L.icon}),(0,K.jsx)("span",{className:"dw-panel-toolbar-search__item-label",children:L.label}),L.description&&(0,K.jsx)("span",{className:"dw-panel-toolbar-search__item-desc",children:L.description})]},L.id))]},D||"__default__"))}),document.body)]}):(0,K.jsx)("div",{ref:g,className:"dw-panel-toolbar-search",children:(0,K.jsx)("button",{type:"button",className:"dw-panel-toolbar-btn",onClick:I,title:"Search","aria-label":"Search",children:k})})}function Cn(e){let t=(0,$.useContext)(vo);return e.open?(0,K.jsx)(pr,{ctx:t,...e},e.id):null}var uo=120,po=60,go=8,ur=8;function pr({id:e,title:t,icon:n,defaultAnchor:i,defaultWidth:s,defaultHeight:x,children:W,ctx:m,onClose:T}){let w=(0,$.useContext)(vt)?.isRtl??!1,[y,g]=(0,$.useState)("docked"),[F,E]=(0,$.useState)(i),[S,I]=(0,$.useState)(null),[a,M]=(0,$.useState)({w:s,h:x}),u=(0,$.useRef)(null),b=(0,$.useRef)(y);b.current=y;let R=(0,$.useRef)(S);R.current=S;let H=(0,$.useRef)(a);H.current=a;let k=(0,$.useRef)(null),D=(0,$.useRef)(null);(0,$.useLayoutEffect)(()=>(m?.dockWindow(e,i),()=>{m?.undockWindow(e)}),[]),(0,$.useEffect)(()=>{m?.reportDockedSize(e,a.h)},[a.h]);let l=m?.zOrders[e]??101,L=!m||m.topId===e,X=()=>{let N=u.current?.offsetParent;return{cw:N?.clientWidth??9999,ch:N?.clientHeight??9999}},V=()=>{m?.focusWindow(e)},se=N=>{if(N.button!==0)return;N.preventDefault();let f,Y;if(b.current==="docked"){let Q=u.current,j=m?.containerRef?.current;if(Q&&j){let fe=Q.getBoundingClientRect(),Pe=j.getBoundingClientRect();f=fe.left-Pe.left,Y=fe.top-Pe.top}else f=go,Y=m?.insetTop??0;m?.undockWindow(e),g("free"),I({x:f,y:Y})}else f=R.current?.x??0,Y=R.current?.y??0;k.current={mouseX:N.clientX,mouseY:N.clientY,posX:f,posY:Y,hasDragged:!1},u.current?.setPointerCapture(N.pointerId)},U=N=>f=>{if(f.button!==0)return;f.preventDefault(),f.stopPropagation();let Y=0,Q=0;if(b.current==="free")Y=R.current?.x??0,Q=R.current?.y??0;else{let j=u.current,fe=j?.offsetParent;if(j&&fe){let Pe=j.getBoundingClientRect(),Ce=fe.getBoundingClientRect();Y=Pe.left-Ce.left,Q=Pe.top-Ce.top}}D.current={dir:N,mouseX:f.clientX,mouseY:f.clientY,startX:Y,startY:Q,w:H.current.w,h:H.current.h},u.current?.setPointerCapture(f.pointerId)},ie=N=>{if(k.current){let f=k.current;if(!f.hasDragged){if(Math.abs(N.clientX-f.mouseX)+Math.abs(N.clientY-f.mouseY)<4)return;f.hasDragged=!0,m?.setDraggingId(e)}let{cw:Y,ch:Q}=X(),j=Math.max(0,Math.min(f.posX+N.clientX-f.mouseX,Y-H.current.w)),fe=Math.max(0,Math.min(f.posY+N.clientY-f.mouseY,Q-H.current.h));I({x:j,y:fe});let Pe=m?.containerRef?.current;if(Pe){let Ce=cr(Pe,N.clientX,N.clientY);m?.setHoveredZone(Ce&&w?zt(Ce):Ce)}}else if(D.current){let f=D.current,Y=N.clientX-f.mouseX,Q=N.clientY-f.mouseY,{cw:j,ch:fe}=X(),Pe=f.startX,Ce=f.startY,ze=f.w,Ie=f.h;if(f.dir.includes("e")&&(ze=Math.max(uo,Math.min(f.w+Y,j-f.startX))),f.dir.includes("s")&&(Ie=Math.max(po,Math.min(f.h+Q,fe-f.startY))),f.dir.includes("n")){let Ae=Math.max(-f.startY,Math.min(Q,f.h-po));Ie=f.h-Ae,Ce=f.startY+Ae}if(f.dir.includes("w")){let Ae=Math.max(-f.startX,Math.min(Y,f.w-uo));ze=f.w-Ae,Pe=f.startX+Ae}M({w:ze,h:Ie}),b.current==="free"&&I({x:Pe,y:Ce})}},ye=()=>{if(k.current){let N=m?.hoveredZone;N&&(m?.dockWindow(e,N),E(N),g("docked"),I(null)),m?.setHoveredZone(null),m?.setDraggingId(null)}k.current=null,D.current=null},ge;if(y==="docked"&&m){let N=m.stacks[F]??[],f=N.indexOf(e),Y=0;for(let Q=0;Q<f;Q++)Y+=(m.dockedSizes[N[Q]]??x)+ur;ge={width:a.w,height:a.h,zIndex:l,transition:"top 0.2s ease, bottom 0.2s ease",opacity:f===-1?0:void 0,pointerEvents:f===-1?"none":void 0},ge[F.endsWith("-right")?"insetInlineEnd":"insetInlineStart"]=go,F.startsWith("top-")?ge.top=m.insetTop+Y:ge.bottom=m.insetBottom+Y}else ge={left:S?.x??0,top:S?.y??0,width:a.w,height:a.h,zIndex:l};return(0,K.jsxs)("div",{ref:u,dir:w?"rtl":"ltr",className:`dw-panel-float${L?" dw-panel-float--active":""}`,style:ge,onPointerDown:V,onPointerMove:ie,onPointerUp:ye,children:[(0,K.jsxs)("div",{className:"dw-panel-float__header",onPointerDown:se,children:[n&&(0,K.jsx)("span",{className:"dw-panel-float__icon",children:n}),(0,K.jsx)("span",{className:"dw-panel-float__title",children:t}),(0,K.jsx)("button",{type:"button",className:"dw-panel-float__close",onClick:T,onPointerDown:N=>N.stopPropagation(),title:"Close","aria-label":"Close",children:(0,K.jsxs)("svg",{width:"8",height:"8",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",children:[(0,K.jsx)("line",{x1:"1",y1:"1",x2:"9",y2:"9"}),(0,K.jsx)("line",{x1:"9",y1:"1",x2:"1",y2:"9"})]})})]}),(0,K.jsx)("div",{className:"dw-panel-float__body",children:W}),y==="free"&&(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)("div",{className:"resize-handle resize-n",onPointerDown:U("n")}),(0,K.jsx)("div",{className:"resize-handle resize-ne",onPointerDown:U("ne")}),(0,K.jsx)("div",{className:"resize-handle resize-nw",onPointerDown:U("nw")})]}),(0,K.jsx)("div",{className:"resize-handle resize-e",onPointerDown:U("e")}),(0,K.jsx)("div",{className:"resize-handle resize-se",onPointerDown:U("se")}),(0,K.jsx)("div",{className:"resize-handle resize-s",onPointerDown:U("s")}),(0,K.jsx)("div",{className:"resize-handle resize-sw",onPointerDown:U("sw")}),(0,K.jsx)("div",{className:"resize-handle resize-w",onPointerDown:U("w")})]})}function ko(){let[e,t]=(0,$.useState)(!1),n=(0,$.useCallback)(()=>{t(!0)},[]),i=(0,$.useCallback)(()=>{t(!1)},[]);return{isOpen:e,open:n,close:i}}var gr=[];function So(){let e=(0,$.useContext)(ho),t=e?.managedWindowIds??gr;return(0,$.useMemo)(()=>({open:(n,i)=>e?.openManaged(n,i),close:n=>e?.closeManaged(n),closeAll:()=>e?.closeAllManaged(),isOpen:n=>t.includes(n),openIds:t}),[e,t])}0&&(module.exports={ConfirmationForm,ContextMenu,ContextMenuProvider,DefaultContextMenuAdapter,DockableDesktopProvider,FormContainerContext,FormContainerProvider,LeftPanelRenderer,ModalStackRenderer,PanelFloatingWindow,PanelOverlayRoot,PanelProvider,PanelRegistry,PanelRegistryClass,PanelToolbar,PanelToolbarItem,PanelToolbarSeparator,RightPanelRenderer,SidePanelRenderer,Sidebar,ToastContainer,Toolbar,ToolbarButton,ToolbarCenter,ToolbarProvider,ToolbarSearchInput,ToolbarSpacer,ToolbarToggle,WindowManager,WindowManagerProvider,WorkspaceClient,defaultPredefinedMessages,formatLabel,toast,useFormContainer,useFormatMessage,usePanelActions,usePanelContext,usePanelContextMenu,usePanelFloatingWindow,usePanelFloatingWindowManager,usePanelId,usePanelState,usePredefinedMessages,useRegistry,useShowContextMenu,useSidebar,useSidebarTab,useStyleClasses,useToolbar,useWindowManagerActions,useWindowManagerState});
23
+ 3. Verify styles.css is imported \u2014 it anchors html, body, #root to 100% height.`)}d({width:Math.max(100,D.width),height:Math.max(100,D.height)})});return x.observe(i),()=>{x.disconnect()}},[]),(0,V.useEffect)(()=>{let i=c.width,W=c.height;s.floating.forEach(x=>{let R=typeof x.width=="string"?parseFloat(x.width):x.width,D=typeof x.height=="string"?parseFloat(x.height):x.height,$=typeof x.x=="string"?parseFloat(x.x):x.x,Z=typeof x.y=="string"?parseFloat(x.y):x.y,_=R,oe=D,pe=$,J=Z,le=!1;if(_>i&&(_=Math.max(200,i-20),le=!0),oe>W&&(oe=Math.max(150,W-40),le=!0),!x.anchor){let me=i-100;pe>me&&(pe=Math.max(0,me),le=!0);let ce=W-40;J>ce&&(J=Math.max(0,ce),le=!0)}le&&y(x.id,{x:pe,y:J,width:_,height:oe})})},[c,s.floating,y]),(0,V.useEffect)(()=>{let i=W=>{if(W.button!==0)return;let x=W.target;if(!x||typeof x.closest!="function")return;let R=x.closest(".floating-window");if(R){let $=R.getAttribute("data-window-id");$&&(w($),g($));return}let D=x.closest(".workspace-panel");if(D){let $=D.getAttribute("data-active-panel-id");$&&w($)}};return document.addEventListener("pointerdown",i),()=>{document.removeEventListener("pointerdown",i)}},[g,w]);let A=(i,W)=>{let x=s.floating.find(J=>J.id===i);if(!x||x.maximized)return;g(i);let R=W.currentTarget,D=R.closest(".floating-window"),$=W.clientX,Z=W.clientY,_=D?D.offsetLeft:0,oe=D?D.offsetTop:0,pe=()=>{let J=Ee.current,le=Ge.current,me=ut.current,ce=pt.current;if(ce)y(i,{anchor:kt?Ot(ce):ce});else if(me)a(i,je(me));else if(le){let Me=le.index;le.side==="right"&&(Me+=1),E(i,le.leafId,Me)}else J&&k(i,J.leafId,je(J.position));ot(null),st()};if(W.pointerType==="touch"){let J=W.pointerId,le=!1,me=()=>{le=!0,clearTimeout(Me),R.removeEventListener("pointermove",ce),R.removeEventListener("pointerup",me),R.removeEventListener("pointercancel",me)},ce=Be=>{Math.hypot(Be.clientX-$,Be.clientY-Z)>it&&me()},Me=setTimeout(()=>{if(le)return;R.removeEventListener("pointermove",ce),R.removeEventListener("pointerup",me),R.removeEventListener("pointercancel",me);try{R.setPointerCapture(J)}catch{return}R.classList.add("long-press-active"),I(i);let Be=gt=>{let pn=gt.clientX-$,Vt=gt.clientY-Z;y(i,{x:_+pn,y:oe+Vt,anchor:null}),Et(gt.clientX,gt.clientY)},Ne=()=>{R.classList.remove("long-press-active"),R.removeEventListener("pointermove",Be),R.removeEventListener("pointerup",Ne),R.removeEventListener("pointercancel",at),pe()},at=()=>{R.classList.remove("long-press-active"),R.removeEventListener("pointermove",Be),R.removeEventListener("pointerup",Ne),R.removeEventListener("pointercancel",at),st()};R.addEventListener("pointermove",Be),R.addEventListener("pointerup",Ne),R.addEventListener("pointercancel",at)},rt);R.addEventListener("pointermove",ce),R.addEventListener("pointerup",me),R.addEventListener("pointercancel",me)}else{let J=!1,le=ce=>{let Me=ce.clientX-$,Be=ce.clientY-Z;!J&&(Math.abs(Me)>5||Math.abs(Be)>5)&&(J=!0,I(i)),J&&y(i,{x:_+Me,y:oe+Be,anchor:null})},me=()=>{window.removeEventListener("pointermove",le),window.removeEventListener("pointerup",me),J&&pe()};window.addEventListener("pointermove",le),window.addEventListener("pointerup",me)}},S=(i,W,x)=>{x.stopPropagation();let R=s.floating.find(Zt=>Zt.id===i);if(!R||R.maximized)return;g(i);let D=x.currentTarget;D.setPointerCapture(x.pointerId);let $=x.clientX,Z=x.clientY,_=D.closest(".floating-window"),oe=_?_.offsetWidth:400,pe=_?_.offsetHeight:300,J=_?_.offsetLeft:0,le=_?_.offsetTop:0,me=c.width,ce=c.height,Me=typeof R.x=="string"?parseFloat(R.x):R.x,Be=typeof R.y=="string"?parseFloat(R.y):R.y,Ne=typeof R.width=="string"?parseFloat(R.width):R.width,at=typeof R.height=="string"?parseFloat(R.height):R.height,gt=W==="se"&&Math.abs(Me+Ne-me)<4,pn=W==="se"&&Math.abs(Be+at-ce)<4,Vt=Zt=>{let In=Zt.clientX-$,En=Zt.clientY-Z,Lt=J,Nt=le,ft=oe,mt=pe;W.includes("e")&&(ft=Math.max(200,oe+In)),W.includes("w")&&(ft=Math.max(200,oe-In),Lt=J+oe-ft),W.includes("s")&&(mt=Math.max(150,pe+En)),W.includes("n")&&(mt=Math.max(150,pe-En),Nt=le+pe-mt),gt&&(Lt=me-ft,Lt<0&&(Lt=0,ft=me)),pn&&(Nt=ce-mt,Nt<0&&(Nt=0,mt=ce)),y(i,{x:Lt,y:Nt,width:ft,height:mt})},qt=()=>{D.removeEventListener("pointermove",Vt),D.removeEventListener("pointerup",qt),D.removeEventListener("pointercancel",qt)};D.addEventListener("pointermove",Vt),D.addEventListener("pointerup",qt),D.addEventListener("pointercancel",qt)},ee=i=>{if(U.current){let W=i==="left"?-150:150;U.current.scrollBy({left:W,behavior:"smooth"})}},re=(0,V.useCallback)(()=>{ge.current&&clearTimeout(ge.current),ye(!0)},[]),ne=(0,V.useCallback)(()=>{ge.current=setTimeout(()=>ye(!1),400)},[]);(0,V.useEffect)(()=>{n==="autohide"&&s.minimized.length>te.current&&(ge.current&&clearTimeout(ge.current),ye(!0),ge.current=setTimeout(()=>ye(!1),2e3)),te.current=s.minimized.length},[s.minimized.length,n]);let[se,Ce]=(0,V.useState)("dark");return(0,V.useEffect)(()=>{let i=()=>{let x=document.documentElement.getAttribute("data-color-scheme")==="light"?"light":"dark";Ce(x)};i();let W=new MutationObserver(i);return W.observe(document.documentElement,{attributes:!0,attributeFilter:["data-color-scheme"]}),()=>W.disconnect()},[]),(0,V.useEffect)(()=>(e?document.documentElement.setAttribute("data-workspace-skin",e):document.documentElement.removeAttribute("data-workspace-skin"),()=>{document.documentElement.removeAttribute("data-workspace-skin")}),[e]),(0,p.jsxs)("div",{"data-workspace-skin":e,"data-color-scheme":se,style:{display:"flex",flexDirection:"column",position:"relative",width:"100%",height:"100%",overflow:"hidden",userSelect:"none"},dir:s.dir,children:[(0,p.jsxs)("div",{ref:h,className:s.draggedPanelId?"dragging-active":void 0,style:{flexGrow:1,width:"100%",position:"relative",overflow:"hidden"},children:[s.draggedPanelId!==null&&(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)("div",{"data-edge-trigger":"left",className:"workspace-edge-trigger edge-trigger-left",onPointerEnter:()=>We("left"),onPointerLeave:()=>We(null)}),(0,p.jsx)("div",{"data-edge-trigger":"right",className:"workspace-edge-trigger edge-trigger-right",onPointerEnter:()=>We("right"),onPointerLeave:()=>We(null)}),(0,p.jsx)("div",{"data-edge-trigger":"top",className:"workspace-edge-trigger edge-trigger-top",onPointerEnter:()=>We("top"),onPointerLeave:()=>We(null)}),(0,p.jsx)("div",{"data-edge-trigger":"bottom",className:"workspace-edge-trigger edge-trigger-bottom",onPointerEnter:()=>We("bottom"),onPointerLeave:()=>We(null)})]}),s.draggedPanelId!==null&&["top-left","top-right","bottom-left","bottom-right"].map(i=>(0,p.jsx)("div",{className:`fw-corner-zone fw-corner-zone--${i}${Bt===i?" fw-corner-zone--hovered":""}`,onPointerEnter:()=>{ot(i),We(null)},onPointerLeave:()=>ot(null),"aria-hidden":"true"},i)),s.draggedPanelId!==null&&Tt!==null&&(0,p.jsx)("div",{className:"workspace-edge-preview",style:(()=>{let i=`${s.edgeSplitRatio*100}%`;switch(Tt){case"left":return{left:0,top:0,bottom:0,width:i};case"right":return{right:0,top:0,bottom:0,width:i};case"top":return{top:0,left:0,right:0,height:i};case"bottom":return{bottom:0,left:0,right:0,height:i}}})()}),(0,p.jsx)("div",{style:{width:"100%",height:"100%",overflow:"hidden",position:"relative"},children:s.gridRoot?(0,p.jsx)(Kn,{node:s.gridRoot,path:[],onTabRightClick:Gt,activeDropZone:Re,onHoverDropZone:It,onTabDragStart:un,hoveredTab:Yt,onTabHover:St,defaultPanelIcon:t,onRequestClosePanel:l}):(0,p.jsx)("div",{className:"empty-workspace-grid",children:"Grid Empty"})}),s.floating.map(i=>{let W=s.panels[i.id];if(!W)return null;let x=i.maximized,R=s.draggedPanelId===i.id,D=s.activePanelId===i.id,Z=b.get(W.component)?.defaultOptions;return(0,p.jsxs)("div",{"data-window-id":i.id,dir:s.dir,onPointerDownCapture:()=>{w(i.id),g(i.id)},className:`floating-window ${x?"maximized":""} ${D?"v2-window-focused":""} ${L??""}`,style:(()=>{let pe=typeof i.width=="number"?`${i.width}px`:i.width,J=typeof i.height=="number"?`${i.height}px`:i.height;if(x)return{position:"absolute",left:0,top:0,width:"100%",height:"100%",zIndex:i.z,pointerEvents:R?"none":"auto"};if(i.anchor){let le=s.floating.filter(Ne=>Ne.anchor===i.anchor&&!Ne.maximized),me=le.findIndex(Ne=>Ne.id===i.id),ce=8;for(let Ne=0;Ne<me;Ne++){let at=typeof le[Ne].height=="number"?le[Ne].height:parseFloat(le[Ne].height);ce+=at+8}let Me=i.anchor.startsWith("top");return{position:"absolute",[i.anchor.endsWith("-right")?"insetInlineEnd":"insetInlineStart"]:8,[Me?"top":"bottom"]:ce,width:pe,height:J,zIndex:i.z,transition:R?"none":"top 0.2s ease, bottom 0.2s ease",pointerEvents:R?"none":"auto"}}return{position:"absolute",left:typeof i.x=="number"?`${i.x}px`:i.x,top:typeof i.y=="number"?`${i.y}px`:i.y,width:pe,height:J,zIndex:i.z,pointerEvents:R?"none":"auto"}})(),children:[(0,p.jsxs)("div",{onDoubleClick:()=>P(i.id),onPointerDown:_=>{Z?.canDrag!==!1&&A(i.id,_)},className:"floating-window-titlebar cursor-move",style:{cursor:x||Z?.canDrag===!1?"default":"move"},children:[(0,p.jsxs)("span",{className:"floating-window-title",children:[(0,p.jsx)("span",{className:"window-title-icon",children:Z?.icon||t||xn}),(0,p.jsxs)("span",{children:[be(W.title,T),W.dirty?" *":""]})]}),(0,p.jsxs)("div",{className:"fw-titlebar-actions",style:{gap:"var(--header-button-gap, 4px)"},onPointerDown:_=>_.stopPropagation(),children:[Z?.renderHeaderActions&&(0,p.jsx)("div",{className:"window-header-actions",children:Z.renderHeaderActions(i.id)}),u(i.id).length>0&&(0,p.jsx)("button",{type:"button",className:"custom-tab-btn btn-more-actions",title:"More actions",onClick:_=>{_.stopPropagation();let oe=u(i.id);oe.length!==0&&v({event:_,items:oe})},children:(0,p.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"currentColor",style:{display:"block"},children:[(0,p.jsx)("circle",{cx:"12",cy:"5",r:"2"}),(0,p.jsx)("circle",{cx:"12",cy:"12",r:"2"}),(0,p.jsx)("circle",{cx:"12",cy:"19",r:"2"})]})}),(0,p.jsx)("button",{type:"button",title:x?be(O.restoreSize,T):be(O.maximize,T),onClick:()=>P(i.id),className:"custom-tab-btn btn-maximize-tab",children:(0,p.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,p.jsx)("rect",{x:"4",y:"4",width:"16",height:"16",rx:"1.5"})})}),Z?.canMinimize!==!1&&(0,p.jsx)("button",{type:"button",title:be(O.minimize,T),onClick:()=>m(i.id),className:"custom-tab-btn btn-minimize-tab",children:(0,p.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"3",children:(0,p.jsx)("path",{d:"M5 12h14"})})}),Z?.canClose!==!1&&(0,p.jsx)("button",{type:"button",title:be(O.close,T),onClick:()=>l(i.id),className:"custom-tab-btn btn-close-tab",children:(0,p.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"3",children:(0,p.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]})]}),(0,p.jsx)("div",{className:G??void 0,style:{flexGrow:1,width:"100%",overflow:"hidden",position:"relative",isolation:"isolate"},children:(0,p.jsx)(Zn,{panelId:i.id},i.id)}),!x&&(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)("div",{onPointerDown:_=>S(i.id,"n",_),className:"resize-handle resize-n"}),(0,p.jsx)("div",{onPointerDown:_=>S(i.id,"ne",_),className:"resize-handle resize-ne"}),(0,p.jsx)("div",{onPointerDown:_=>S(i.id,"e",_),className:"resize-handle resize-e"}),(0,p.jsx)("div",{onPointerDown:_=>S(i.id,"se",_),className:"resize-handle resize-se"}),(0,p.jsx)("div",{onPointerDown:_=>S(i.id,"s",_),className:"resize-handle resize-s"}),(0,p.jsx)("div",{onPointerDown:_=>S(i.id,"sw",_),className:"resize-handle resize-sw"}),(0,p.jsx)("div",{onPointerDown:_=>S(i.id,"w",_),className:"resize-handle resize-w"}),(0,p.jsx)("div",{onPointerDown:_=>S(i.id,"nw",_),className:"resize-handle resize-nw"})]})]},i.id)})]}),(n==="always"||s.minimized.length>0)&&(0,p.jsxs)("div",{className:["taskbar-footer-container",`taskbar-mode-${n}`,n==="autohide"&&ie?"taskbar-expanded":""].filter(Boolean).join(" "),style:{height:"48px",zIndex:100},onPointerEnter:n==="autohide"?re:void 0,onPointerLeave:n==="autohide"?ne:void 0,children:[n==="autohide"&&(0,p.jsx)("div",{className:"taskbar-peek-handle"}),(0,p.jsx)("button",{type:"button",onClick:()=>ee("left"),className:"taskbar-nav-btn",style:{display:s.minimized.length>4?"block":"none"},children:"\u25C0"}),(0,p.jsx)("div",{ref:U,className:"taskbar-items-container",style:{scrollSnapType:"x mandatory"},children:s.minimized.map(i=>{let x=b.get(i.component)?.defaultOptions?.icon||t||xn;return(0,p.jsx)("div",{onClick:()=>{Q.current!=="touch"&&(f(null),z(i.id))},onContextMenu:R=>o(i.id,R),onPointerDown:R=>{if(Q.current=R.pointerType,R.pointerType!=="touch")return;let D=R.currentTarget,$=R.clientX,Z=R.clientY,_=R.pointerId,oe=!1,pe=()=>{oe=!0,clearTimeout(me),D.removeEventListener("pointermove",le),D.removeEventListener("pointerup",J),D.removeEventListener("pointercancel",pe)},J=()=>{pe();let ce=D.getBoundingClientRect();N?.id===i.id?(z(i.id),f(null)):f({id:i.id,rect:ce,title:i.title,component:i.component,fromTouch:!0})},le=ce=>{Math.hypot(ce.clientX-$,ce.clientY-Z)>it&&pe()},me=setTimeout(()=>{if(oe)return;D.removeEventListener("pointermove",le),D.removeEventListener("pointerup",J),D.removeEventListener("pointercancel",pe);try{D.setPointerCapture(_)}catch{return}navigator.vibrate&&navigator.vibrate(10);let ce=Me=>{D.removeEventListener("pointerup",ce),D.removeEventListener("pointercancel",ce),o(i.id,Me)};D.addEventListener("pointerup",ce),D.addEventListener("pointercancel",ce)},rt);D.addEventListener("pointermove",le),D.addEventListener("pointerup",J),D.addEventListener("pointercancel",pe)},onPointerEnter:R=>{if(R.pointerType==="touch"||Pe)return;X.current&&clearTimeout(X.current);let D=R.currentTarget.getBoundingClientRect();R.clientX>=D.left&&R.clientX<=D.right&&R.clientY>=D.top&&R.clientY<=D.bottom&&f({id:i.id,rect:D,title:i.title,component:i.component})},onPointerLeave:R=>{R.pointerType!=="touch"&&(X.current=setTimeout(()=>{f(null)},150))},className:"taskbar-glassmorphic-item",style:{backdropFilter:"blur(6px)",transition:"all 0.2s",cursor:"pointer",scrollSnapAlign:"start",width:"38px",height:"38px",position:"relative",padding:0},children:(0,p.jsx)("span",{className:"taskbar-item-icon",children:x})},i.id)})}),N&&(0,Pn.createPortal)((0,p.jsxs)("div",{className:"taskbar-item-tooltip",dir:s.dir,style:{position:"fixed",left:`${N.rect.left+N.rect.width/2}px`,top:`${N.rect.top-8}px`,transform:"translateX(-50%) translateY(-100%)",opacity:1,pointerEvents:"auto",zIndex:999999},onPointerEnter:()=>{X.current&&clearTimeout(X.current)},onPointerLeave:i=>{i.pointerType!=="touch"&&f(null)},onClick:()=>{z(N.id),f(null)},onContextMenu:i=>o(N.id,i),onPointerDown:i=>{if(i.pointerType!=="touch")return;let W=N.id,x=i.currentTarget,R=i.clientX,D=i.clientY,$=i.pointerId,Z=!1,_=()=>{Z=!0,clearTimeout(pe),x.removeEventListener("pointermove",oe),x.removeEventListener("pointerup",_),x.removeEventListener("pointercancel",_)},oe=J=>{Math.hypot(J.clientX-R,J.clientY-D)>it&&_()},pe=setTimeout(()=>{if(Z)return;x.removeEventListener("pointermove",oe),x.removeEventListener("pointerup",_),x.removeEventListener("pointercancel",_);try{x.setPointerCapture($)}catch{return}navigator.vibrate&&navigator.vibrate(10);let J=le=>{x.removeEventListener("pointerup",J),x.removeEventListener("pointercancel",J),o(W,le)};x.addEventListener("pointerup",J),x.addEventListener("pointercancel",J)},rt);x.addEventListener("pointermove",oe),x.addEventListener("pointerup",_),x.addEventListener("pointercancel",_)},children:[(0,p.jsxs)("div",{className:"tooltip-header-row",children:[(0,p.jsxs)("span",{className:"tooltip-title-text text-truncate",style:{maxWidth:"140px"},children:[be(N.title,T),s.panels[N.id]?.dirty?" *":""]}),(0,p.jsx)("span",{onClick:i=>{i.stopPropagation(),l(N.id),f(null)},title:be(O.closePanel,T),className:"tooltip-close-x",children:(0,p.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,p.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),(0,p.jsx)(Jo,{panelId:N.id})]}),document.body),(0,p.jsx)("button",{type:"button",onClick:()=>ee("right"),className:"taskbar-nav-btn",style:{display:s.minimized.length>4?"block":"none"},children:"\u25B6"})]}),Object.keys(s.panels).map(i=>{let W=s.panels[i];if(!W)return null;let x=qn(i);return(0,Pn.createPortal)((0,p.jsx)(Qo,{panelId:i,children:(0,p.jsx)("div",{style:{width:"100%",height:"100%"},dir:s.dir,children:Uo(i,W.component,b)})}),x,i)}),q===null&&(0,p.jsx)(r.Component,{ref:ae,theme:"dark",formatMessageProvider:T,onShow:()=>fe(!0),onHide:()=>fe(!1)}),s.draggedPanelId!==null&&!s.floating.some(i=>i.id===s.draggedPanelId)&&(0,p.jsxs)("div",{className:"drag-ghost-tab",style:{left:Fe.x+12,top:Fe.y+12,zIndex:1e5},children:["\u{1F4C4} ",be(s.panels[s.draggedPanelId]?.title,T)||"Tab"]})]})},jn=tr;var an=class{registry;initialState;config;_actions=null;_initialized=!1;_pendingCalls=[];_pendingOpenPanelIds=new Set;_pendingSubscriptions=[];_disconnectedWarnTimer=null;constructor(t={}){if(this.registry=new lt,this.initialState=t.initialState??null,this.config={formatMessage:t.formatMessage,predefinedMessages:t.predefinedMessages,dir:t.dir,defaultSplitRatio:t.defaultSplitRatio,defaultEdgeSplitRatio:t.defaultEdgeSplitRatio},t.panels)for(let[n,r]of Object.entries(t.panels))this.registry.register(n,r.component,r.defaultOptions)}_connect(t){this._actions=t,this._disconnectedWarnTimer!==null&&(clearTimeout(this._disconnectedWarnTimer),this._disconnectedWarnTimer=null),this._initialized||(this._initialized=!0);for(let r of this._pendingSubscriptions)r.unsub=t.subscribe(r.event,r.callback);let n=this._pendingCalls.splice(0);for(let r of n)r(t)}_disconnect(){this._actions=null;for(let t of this._pendingSubscriptions)t.unsub?.(),t.unsub=null}get isConnected(){return this._actions!==null}_startWarnTimer(){this._disconnectedWarnTimer===null&&(this._disconnectedWarnTimer=setTimeout(()=>{!this.isConnected&&this._pendingCalls.length>0&&console.error("[react-dockable-desktop] WorkspaceClient has "+this._pendingCalls.length+" queued call(s) but was never connected to a WindowManagerProvider. Did you forget client={workspace} on <WindowManagerProvider>?")},process.env.NODE_ENV==="production"?5e3:1e3))}_dispatch(t){this._actions?t(this._actions):(this._pendingCalls.push(t),this._startWarnTimer())}_subscribeRaw(t,n){if(this._actions)return this._actions.subscribe(t,n);let r={event:t,callback:n,unsub:null};return this._pendingSubscriptions.push(r),()=>{r.unsub?.(),r.unsub=null;let s=this._pendingSubscriptions.indexOf(r);s!==-1&&this._pendingSubscriptions.splice(s,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(r=>{this._pendingOpenPanelIds.delete(n),r.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()??[]}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))}publish(t,n){this._dispatch(r=>r.publish(t,n))}subscribe(t,n){return this._subscribeRaw(t,n)}onPanelOpen(t){return this._subscribeRaw("panel:opened",n=>{let r=n;t(r.id,r.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)})}};var oo=require("react");var Ze=require("react"),Jn=require("react/jsx-runtime"),Un=(0,Ze.createContext)(null),Ft=({children:e})=>{let[t,n]=(0,Ze.useState)({}),[r,s]=(0,Ze.useState)({}),b=(0,Ze.useMemo)(()=>({getActiveInGroup:z=>t[z]??null,setActiveInGroup:(z,m)=>n(M=>({...M,[z]:m})),isModifierActive:z=>r[z]??!1,setModifierActive:(z,m)=>s(M=>({...M,[z]:m})),toggleModifier:z=>s(m=>({...m,[z]:!m[z]}))}),[t,r]);return(0,Jn.jsx)(Un.Provider,{value:b,children:e})};function _t(){let e=(0,Ze.useContext)(Un);return e||(console.warn("useToolbar() called outside <DockableDesktopProvider>. Returning no-op."),{getActiveInGroup:()=>null,setActiveInGroup:()=>{},isModifierActive:()=>!1,setModifierActive:()=>{},toggleModifier:()=>{}})}var De=require("react");var no=require("react/jsx-runtime");function nr(){let e=new Map,t=new Set,n=()=>t.forEach(r=>r());return{publish(r,s){return e.set(r,s),n(),()=>{e.get(r)===s&&(e.delete(r),n())}},get(r){return e.get(r)??null},subscribe(r){return t.add(r),()=>t.delete(r)}}}var Cn=(0,De.createContext)(null),ln=({children:e})=>{let t=(0,De.useMemo)(()=>nr(),[]);return(0,no.jsx)(Cn.Provider,{value:t,children:e})};function Qn(e){let t=Wt(),n=(0,De.useContext)(Cn),r=(0,De.useRef)(null);n||console.warn("usePanelContribution() called outside <PanelContributionProvider>. Returning no-op."),(0,De.useLayoutEffect)(()=>{if(n)return r.current?.(),r.current=n.publish(t,e),()=>{r.current?.(),r.current=null}},[n,t,e])}function cn(){let e=_e(s=>s.activePanelId),t=(0,De.useContext)(Cn);t||console.warn("useActivePanelContribution() called outside <PanelContributionProvider>. Returning null.");let n=(0,De.useCallback)(s=>t?t.subscribe(s):()=>{},[t]),r=()=>t&&e?t.get(e):null;return(0,De.useSyncExternalStore)(n,r,r)}function Rn(e,t=null){return{id:e.id,label:e.label,icon:e.icon??t,renderContent:()=>e.content}}function eo(e){let t=cn();return t?.toolbarItems?.length?[...e,{type:"separator"},...t.toolbarItems]:e}function to(e,t=null){let n=cn();return n?.sidebarSections?.length?[...e,...n.sidebarSections.map(r=>Rn(r,t))]:e}var Rt=require("react/jsx-runtime"),ro=({contextMenuAdapter:e=ct,...t})=>{let n=(0,oo.useContext)(wt),r=(0,Rt.jsx)(Ft,{children:(0,Rt.jsx)(Qt,{...t,children:(0,Rt.jsx)(ln,{children:(0,Rt.jsx)(rn,{children:t.children})})})});return n!==null?r:(0,Rt.jsx)(nn,{adapter:e,formatMessageProvider:t.formatMessage,children:r})};var Oe=require("react");var Se=require("react/jsx-runtime"),or=({modal:e,index:t,isTopmost:n})=>{let{close:r,openModal:s,updateInstance:b,setDirty:z}=Qe(),m=$e(),M=Xe(),{dir:P}=_e(),{modalClass:y,modalBodyClass:g}=Ve(),H=(0,Oe.useRef)(null),{id:I,Component:k,props:E,options:a,dirty:w,dirtyOptions:u}=e,v=a,[C,B]=(0,Oe.useState)(v.icon||null),T=(0,Oe.useRef)(v);T.current=v;let O=be(v.title,m),l=(0,Oe.useCallback)(async f=>{if(f?.force){r(I);return}if(H.current){if(!await H.current())return;r(I);return}if(w){s(et,{title:u?.title||M.unsavedChangesTitle,message:u?.message||{id:M.unsavedChangesMessage.id,defaultMessage:M.unsavedChangesMessage.defaultMessage,values:{title:O}},alert:u?.alert,alertType:u?.alertType||"danger",useYesNoTitles:!0,onOK:()=>r(I)},{size:"small"});return}r(I)},[r,s,I,w,u,O,M]),L=(0,Oe.useCallback)((f,X)=>z(I,f,X),[z,I]),G=(0,Oe.useCallback)(f=>b(I,{options:{...T.current,title:f}}),[b,I]),q=(0,Oe.useCallback)(f=>B(f),[]),ae=(0,Oe.useCallback)(f=>(H.current=f,()=>{H.current=null}),[]),U=(0,Oe.useMemo)(()=>({requestClose:l,setDirty:L,setTitle:G,setIcon:q,onCloseRequested:ae,containerType:"modal",instanceId:I}),[l,L,G,q,ae,I]),ie=w?`${O} *`:O,ye=v.size?`v2-modal-size-${v.size}`:"v2-modal-size-auto",ge=v.closable!==!1;(0,Oe.useEffect)(()=>{if(!n||!ge)return;let f=X=>{X.key==="Escape"&&(X.stopPropagation(),l())};return document.addEventListener("keydown",f),()=>document.removeEventListener("keydown",f)},[l,ge,n]);let N=1e4+t*10;return(0,Se.jsxs)("div",{className:"v2-modal-overlay",style:{zIndex:N},dir:P,children:[(0,Se.jsx)("div",{className:"v2-modal-curtain",onClick:ge?()=>l():void 0}),(0,Se.jsxs)("div",{className:`v2-modal-window ${ye} ${y??""}`,children:[(0,Se.jsxs)("div",{className:"v2-modal-header",children:[C&&(0,Se.jsx)("div",{className:"v2-modal-icon",children:C}),(0,Se.jsx)("h4",{className:"v2-modal-title",children:ie}),ge&&(0,Se.jsx)("button",{className:"v2-modal-close-button",onClick:()=>l(),title:m(M.closeTooltip),type:"button",children:(0,Se.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,Se.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),(0,Se.jsx)("div",{className:`v2-modal-body ${g??""}`,children:(0,Se.jsx)(Ue,{value:U,children:(0,Se.jsx)(k,{...E,panelId:I})})})]})]})},rr=()=>{let{modals:e}=qe();return e.length===0?null:(0,Se.jsx)(Se.Fragment,{children:e.map((t,n)=>(0,Se.jsx)(or,{modal:t,index:n,isTopmost:n===e.length-1},t.id))})},io=rr;var Le=require("react");var Te=require("react/jsx-runtime"),dn=({panel:e,position:t,defaultWidth:n})=>{let{close:r,openModal:s,updateInstance:b,setDirty:z,registerCloseHandler:m,unregisterCloseHandler:M}=Qe(),{modals:P}=qe(),y=$e(),g=Xe(),{dir:H}=_e(),{sidePanelClass:I,sidePanelBodyClass:k}=Ve(),E=(0,Le.useRef)(null),{id:a,Component:w,props:u,options:v,dirty:C,dirtyOptions:B}=e,T=v,[O,l]=(0,Le.useState)(T.icon||null),L=(0,Le.useRef)(T);L.current=T;let G=be(T.title,y),q=(0,Le.useCallback)(async Q=>{if(Q?.force){r(a);return}if(E.current){if(!await E.current())return;r(a);return}if(C){s(et,{title:B?.title||g.unsavedChangesTitle,message:B?.message||{id:g.unsavedChangesMessage.id,defaultMessage:g.unsavedChangesMessage.defaultMessage,values:{title:G}},alert:B?.alert,alertType:B?.alertType||"danger",useYesNoTitles:!0,onOK:()=>r(a)},{size:"small"});return}r(a)},[r,s,a,C,B,G,g]),ae=(0,Le.useCallback)(async()=>E.current?await E.current():!C,[C]);(0,Le.useEffect)(()=>(m(a,ae),()=>M(a)),[a,ae,m,M]);let U=(0,Le.useCallback)((Q,j)=>z(a,Q,j),[z,a]),ie=(0,Le.useCallback)(Q=>b(a,{options:{...L.current,title:Q}}),[b,a]),ye=(0,Le.useCallback)(Q=>l(Q),[]),ge=(0,Le.useCallback)(Q=>(E.current=Q,()=>{E.current=null}),[]),te=(0,Le.useMemo)(()=>({requestClose:q,setDirty:U,setTitle:ie,setIcon:ye,onCloseRequested:ge,containerType:t==="left"?"left-panel":"right-panel",instanceId:a}),[q,U,ie,ye,ge,t,a]),N=C?`${G} *`:G;(0,Le.useEffect)(()=>{let Q=j=>{j.key==="Escape"&&P.length===0&&q()};return document.addEventListener("keydown",Q),()=>document.removeEventListener("keydown",Q)},[q,P.length]);let f=T.width||n||400,X=typeof f=="number"?`${f}px`:f;return(0,Te.jsx)("div",{className:`v2-side-panel v2-side-panel-${t} v2-side-panel-visible ${I??""}`,style:{width:X},dir:H,children:(0,Te.jsxs)("div",{className:"v2-side-panel-window",children:[(0,Te.jsxs)("div",{className:"v2-side-panel-header",children:[O&&(0,Te.jsx)("div",{className:"v2-side-panel-icon",children:O}),(0,Te.jsx)("h4",{className:"v2-side-panel-title",children:N}),(0,Te.jsx)("button",{className:"v2-side-panel-close-button",onClick:()=>q(),title:y(g.closeTooltip),type:"button",children:(0,Te.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,Te.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),(0,Te.jsx)("div",{className:`v2-side-panel-body ${k??""}`,children:(0,Te.jsx)(Ue,{value:te,children:(0,Te.jsx)(w,{...u,panelId:a})})})]})})},ir=({defaultWidth:e})=>{let{leftPanel:t,rightPanel:n}=qe();return(0,Te.jsxs)(Te.Fragment,{children:[t&&(0,Te.jsx)(dn,{panel:t,position:"left",defaultWidth:e},t.id),n&&(0,Te.jsx)(dn,{panel:n,position:"right",defaultWidth:e},n.id)]})},so=({defaultWidth:e})=>{let{leftPanel:t}=qe();return t?(0,Te.jsx)(dn,{panel:t,position:"left",defaultWidth:e},t.id):null},ao=({defaultWidth:e})=>{let{rightPanel:t}=qe();return t?(0,Te.jsx)(dn,{panel:t,position:"right",defaultWidth:e},t.id):null},lo=ir;var ue=require("react"),ke=require("react/jsx-runtime"),uo=(0,ue.createContext)(null),po=(0,ue.createContext)(null);function sr({tabId:e,onClose:t,onOpen:n,setActiveTabId:r,children:s}){let b=(0,ue.useMemo)(()=>({tabId:e,onClose:t,onOpen:n,openTab:z=>r(z)}),[e,t,n,r]);return(0,ke.jsx)(po.Provider,{value:b,children:s})}var co=(0,ue.memo)(function({tabs:t,activeTabId:n,isVisible:r,position:s,onTabClick:b}){return(0,ke.jsx)("div",{style:{width:r?"56px":"0px",height:"100%",overflow:"hidden",transition:"width 0.25s cubic-bezier(0.4, 0, 0.2, 1)",flexShrink:0},children:(0,ke.jsx)("div",{className:`sidebar-tabs-strip ${s}`,style:{width:"56px",height:"100%"},children:t.map(z=>{let m=n===z.id;return(0,ke.jsx)("button",{type:"button",onClick:()=>b(z.id),className:`sidebar-tab-btn${m?" active":""}`,title:z.label,"aria-pressed":m,children:z.icon},z.id)})})})});function ar({position:e,currentWidth:t,minWidth:n,maxWidth:r,onWidthChange:s,rootRef:b}){return(0,ke.jsx)("div",{className:"resizer-bar",style:{cursor:"col-resize",width:"1px",height:"100%",flexShrink:0,zIndex:20},onPointerDown:m=>{m.preventDefault();let M=m.currentTarget;M.setPointerCapture(m.pointerId);let P=m.clientX,y=t;M.classList.add("active"),document.body.classList.add("resizing-active","resizing-col-active"),b.current?.classList.add("sidebar-resizing");let g=I=>{let k=I.clientX-P,E=e==="right"?y-k:y+k;s(Math.max(n,Math.min(r,E)))},H=()=>{M.classList.remove("active"),document.body.classList.remove("resizing-active","resizing-col-active"),b.current?.classList.remove("sidebar-resizing"),M.removeEventListener("pointermove",g),M.removeEventListener("pointerup",H),M.removeEventListener("pointercancel",H)};M.addEventListener("pointermove",g),M.addEventListener("pointerup",H),M.addEventListener("pointercancel",H)}})}var go=(0,ue.forwardRef)(function({position:t="right",tabs:n,defaultWidth:r,minWidth:s=150,maxWidth:b=600,onWidthChange:z,drawerWidth:m,activeTabId:M,onActiveTabChange:P,visible:y,onVisibilityChange:g,stripVisible:H,onStripVisibilityChange:I,children:k},E){let a=M!==void 0,[w,u]=(0,ue.useState)(()=>r!==void 0?r:m!==void 0&&parseInt(m,10)||220),v=(0,ue.useCallback)(j=>{u(j),z?.(j)},[z]),[C,B]=(0,ue.useState)(null),T=a?M:C,[O,l]=(0,ue.useState)(()=>new Set),L=(0,ue.useMemo)(()=>{let j=new Set(O);T&&j.add(T);for(let fe of n)fe.eagerMount&&j.add(fe.id);return j},[O,T,n]),G=(0,ue.useRef)(T??null);(0,ue.useEffect)(()=>{G.current=T??null},[T]);let q=(0,ue.useRef)(w);(0,ue.useEffect)(()=>{q.current=w},[w]);let ae=(0,ue.useRef)(null),U=(0,ue.useCallback)(j=>{l(j!==null?fe=>{if(fe.has(j))return fe;let Pe=new Set(fe);return Pe.add(j),Pe}:fe=>{let Pe=!1,Re=new Set(fe);for(let ze of fe){let Ee=n.find(Fe=>Fe.id===ze);Ee&&!Ee.eagerMount&&!Ee.preserveState&&(Re.delete(ze),Pe=!0)}return Pe?Re:fe}),a||B(j),P?.(j)},[a,P,n]);(0,ue.useImperativeHandle)(E,()=>({openTab:j=>U(j),closeDrawer:()=>U(null),getActiveTab:()=>G.current,show:()=>g?.(!0),hide:()=>g?.(!1),toggle:()=>g?.(y===!1),showStrip:()=>I?.(!0),hideStrip:()=>I?.(!1),setWidth:j=>v(Math.max(s,Math.min(b,j))),getWidth:()=>q.current}),[U,y,g,I,v,s,b]);let ie=(0,ue.useCallback)(j=>{U(T===j?null:j)},[T,U]),ye=(0,ue.useCallback)(()=>U(null),[U]),ge=(0,ue.useMemo)(()=>({openTab:j=>U(j),closeDrawer:()=>U(null),getActiveTab:()=>G.current}),[U]),te=y!==!1,N=te&&H!==!1,f=te&&T!=null,X=(0,ke.jsx)("div",{className:`sidebar-content-drawer ${t}`,style:{flexBasis:f?`${w}px`:"0px",flexShrink:1,flexGrow:0,minWidth:f?`${s}px`:"0px",maxWidth:f?`${b}px`:"0px",overflow:"hidden",transition:"flex-basis 0.2s cubic-bezier(0.4, 0, 0.2, 1), min-width 0.2s cubic-bezier(0.4, 0, 0.2, 1), max-width 0.2s cubic-bezier(0.4, 0, 0.2, 1)"},children:n.map(j=>{if(!L.has(j.id))return null;let Pe=T===j.id,Re=()=>U(j.id);return(0,ke.jsxs)("div",{style:{display:Pe?"flex":"none",flexDirection:"column",height:"100%",width:"100%"},children:[(0,ke.jsx)("div",{className:"sidebar-drawer-header",children:(0,ke.jsx)("span",{className:"sidebar-header-title",children:j.label})}),(0,ke.jsx)("div",{className:"sidebar-drawer-body",children:(0,ke.jsx)(sr,{tabId:j.id,onClose:ye,onOpen:Re,setActiveTabId:U,children:j.renderContent(j.id,ye,Re)})})]},j.id)})}),Q=f?(0,ke.jsx)(ar,{position:t,currentWidth:w,minWidth:s,maxWidth:b,onWidthChange:v,rootRef:ae}):null;return(0,ke.jsx)(uo.Provider,{value:ge,children:(0,ke.jsxs)("div",{ref:ae,style:{display:"flex",flexDirection:"row",width:"100%",height:"100%",overflow:"hidden"},children:[t==="left"&&(0,ke.jsx)(co,{tabs:n,activeTabId:T,isVisible:N,position:t,onTabClick:ie}),t==="left"&&X,t==="left"&&Q,(0,ke.jsx)("div",{style:{flex:"1 1 0%",minWidth:0,overflow:"hidden"},children:k}),t==="right"&&Q,t==="right"&&X,t==="right"&&(0,ke.jsx)(co,{tabs:n,activeTabId:T,isVisible:N,position:t,onTabClick:ie})]})})});function fo(){let e=(0,ue.useContext)(uo);return e||(console.warn("useSidebar() called outside a <Sidebar> tree. Returning no-op."),{openTab:()=>{},closeDrawer:()=>{},getActiveTab:()=>null})}function mo(){let e=(0,ue.useContext)(po);return e||(console.warn("useSidebarTab() called outside a <Sidebar> tab renderContent tree. Returning no-op."),{tabId:"",onOpen:()=>{},onClose:()=>{},openTab:()=>{}})}var Ae=require("react"),ho=require("react-dom");var Ie=require("react/jsx-runtime");function lr(e,t,n=!1,r=8){switch(t){case"left":return n?{right:window.innerWidth-e.left+r,top:e.top}:{left:e.right+r,top:e.top};case"right":return n?{left:e.right+r,top:e.top}:{right:window.innerWidth-e.left+r,top:e.top};case"top":return n?{top:e.bottom+r,right:window.innerWidth-e.right}:{top:e.bottom+r,left:e.left};case"bottom":return n?{bottom:window.innerHeight-e.top+r,right:window.innerWidth-e.right}:{bottom:window.innerHeight-e.top+r,left:e.left}}}function cr({item:e,position:t,toolbar:n}){let[r,s]=(0,Ae.useState)(!1),[b,z]=(0,Ae.useState)(null),m=(0,Ae.useRef)(null),M=(0,Ae.useRef)(null),P=e.activeItemId!==void 0,y=P?e.activeItemId:n.getActiveInGroup(e.id),g=e.items.find(a=>!("type"in a)&&a.id===y),H=y!==null,I=g?.icon??e.defaultIcon,k=g?.label??e.label,E=()=>{e.disabled||(!r&&m.current&&z(m.current.getBoundingClientRect()),s(a=>!a))};return(0,Ae.useLayoutEffect)(()=>{if(!r||!M.current)return;let a=M.current,w=a.getBoundingClientRect(),u=8;w.right>window.innerWidth-u&&(a.style.left=`${Math.max(u,window.innerWidth-w.width-u)}px`,a.style.right="auto"),w.left<u&&(a.style.left=`${u}px`,a.style.right="auto"),w.bottom>window.innerHeight-u&&(a.style.top=`${Math.max(u,window.innerHeight-w.height-u)}px`,a.style.bottom="auto"),w.top<u&&(a.style.top=`${u}px`,a.style.bottom="auto")},[r]),(0,Ae.useEffect)(()=>{if(!r)return;let a=w=>{let u=w.target;m.current?.contains(u)||M.current?.contains(u)||s(!1)};return document.addEventListener("mousedown",a),()=>document.removeEventListener("mousedown",a)},[r]),(0,Ae.useEffect)(()=>{if(!r)return;let a=w=>{w.key==="Escape"&&s(!1)};return document.addEventListener("keydown",a),()=>document.removeEventListener("keydown",a)},[r]),(0,Ie.jsxs)(Ie.Fragment,{children:[(0,Ie.jsx)("button",{ref:m,type:"button",className:`toolbar-btn toolbar-btn-group${H?" active":""}`,title:k,"aria-label":k,"aria-expanded":r,"aria-haspopup":"menu",disabled:e.disabled,onClick:E,children:I}),r&&b&&(0,ho.createPortal)((0,Ie.jsx)("div",{ref:M,className:`toolbar-group-flyout ${t}`,style:lr(b,t,document.documentElement.dir==="rtl"),role:"menu",children:e.items.map((a,w)=>{if("type"in a)return(0,Ie.jsx)("div",{className:"toolbar-group-flyout-sep",role:"separator"},`sep-${w}`);let u=y===a.id;return(0,Ie.jsxs)("button",{type:"button",className:`toolbar-group-flyout-item${u?" active":""}`,disabled:a.disabled,role:"menuitem","aria-pressed":u,onClick:()=>{P?e.onActiveItemChange?.(a.id):n.setActiveInGroup(e.id,a.id),a.onActivate?.(a.id),s(!1)},children:[(0,Ie.jsx)("span",{className:"toolbar-group-flyout-icon",children:a.icon}),(0,Ie.jsx)("span",{className:"toolbar-group-flyout-label",children:a.label}),a.shortcut&&(0,Ie.jsx)("span",{className:"toolbar-group-flyout-shortcut",children:a.shortcut})]},a.id)})}),document.body)]})}function dr(e,t,n,r){switch(e.type){case"separator":return(0,Ie.jsx)("div",{className:"toolbar-separator",role:"separator"},`sep-${t}`);case"action":return(0,Ie.jsx)("button",{type:"button",className:"toolbar-btn toolbar-btn-action",title:e.label,"aria-label":e.label,disabled:e.disabled,onClick:e.onClick,children:e.icon},e.id);case"radio":{let s=n.getActiveInGroup(e.group)===e.id;return(0,Ie.jsx)("button",{type:"button",className:`toolbar-btn toolbar-btn-radio${s?" active":""}`,title:e.label,"aria-label":e.label,"aria-pressed":s,disabled:e.disabled,onClick:()=>{n.setActiveInGroup(e.group,e.id),e.onActivate?.(e.id)},children:e.icon},e.id)}case"toggle":{let s=e.active!==void 0,b=s?e.active:n.isModifierActive(e.id);return(0,Ie.jsx)("button",{type:"button",className:`toolbar-btn toolbar-btn-toggle${b?" active":""}`,title:e.label,"aria-label":e.label,"aria-pressed":b,disabled:e.disabled,onClick:()=>{s||n.toggleModifier(e.id),e.onToggle?.(!b)},children:e.icon},e.id)}case"group":return(0,Ie.jsx)(cr,{item:e,position:r,toolbar:n},e.id)}}var bo=(0,Ae.forwardRef)(function({position:t="left",items:n,visible:r,onVisibilityChange:s,className:b,style:z},m){let M=_t(),P=t==="left"||t==="right";(0,Ae.useImperativeHandle)(m,()=>({show:()=>s?.(!0),hide:()=>s?.(!1),toggle:()=>s?.(r===!1)}),[r,s]);let y=r!==!1?{}:P?{width:"0px"}:{height:"0px"};return(0,Ie.jsx)("div",{className:`toolbar-strip ${t}${b?` ${b}`:""}`,role:"toolbar","aria-orientation":P?"vertical":"horizontal",style:{...y,...z},children:n.map((g,H)=>dr(g,H,M,t))})});var we=require("react"),Tn=require("react-dom"),he=require("react/jsx-runtime"),kn=class{listeners=new Set;counter=0;subscribe(t){this.listeners.add(t)}unsubscribe(t){this.listeners.delete(t)}show(t,n={}){let r=n.id??`toast-${++this.counter}`;return this.emit({kind:"show",id:r,message:t,rawOpts:{...n,id:r}}),r}update(t,n,r){this.emit({kind:"update",id:t,message:n,patch:r})}dismiss(t){this.emit({kind:"dismiss",id:t})}emit(t){this.listeners.forEach(n=>n(t))}},He=new kn,vo=Object.assign((e,t)=>He.show(e,t),{info:(e,t)=>He.show(e,{...t,type:"info"}),success:(e,t)=>He.show(e,{...t,type:"success"}),warning:(e,t)=>He.show(e,{...t,type:"warning"}),error:(e,t)=>He.show(e,{...t,type:"error"}),dismiss:e=>He.dismiss(e),promise:(e,t,n)=>{let r=He.show(t.pending,{...n,type:"info",duration:0});return e.then(s=>{let b=typeof t.success=="function"?t.success(s):t.success;He.update(r,b,{type:"success",duration:n?.duration??5e3})},s=>{let b=typeof t.error=="function"?t.error(s):t.error;He.update(r,b,{type:"error",duration:n?.duration??5e3})}),e}}),ur=()=>(0,he.jsxs)("svg",{className:"dw-toast__icon",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[(0,he.jsx)("circle",{cx:"8",cy:"8",r:"7",stroke:"currentColor",strokeWidth:"1.5"}),(0,he.jsx)("path",{d:"M8 5v.01M8 7.5v3.5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]}),pr=()=>(0,he.jsxs)("svg",{className:"dw-toast__icon",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[(0,he.jsx)("circle",{cx:"8",cy:"8",r:"7",stroke:"currentColor",strokeWidth:"1.5"}),(0,he.jsx)("path",{d:"M5 8l2 2 4-4",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})]}),gr=()=>(0,he.jsxs)("svg",{className:"dw-toast__icon",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[(0,he.jsx)("path",{d:"M8 2.5L14 13.5H2L8 2.5z",stroke:"currentColor",strokeWidth:"1.5",strokeLinejoin:"round"}),(0,he.jsx)("path",{d:"M8 7v2.5M8 11.5v.01",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]}),fr=()=>(0,he.jsxs)("svg",{className:"dw-toast__icon",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[(0,he.jsx)("circle",{cx:"8",cy:"8",r:"7",stroke:"currentColor",strokeWidth:"1.5"}),(0,he.jsx)("path",{d:"M5.5 5.5l5 5M10.5 5.5l-5 5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]}),mr=()=>(0,he.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:(0,he.jsx)("path",{d:"M4 4l8 8M12 4l-8 8",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})}),hr={info:(0,he.jsx)(ur,{}),success:(0,he.jsx)(pr,{}),warning:(0,he.jsx)(gr,{}),error:(0,he.jsx)(fr,{})};function br({id:e,message:t,options:n,exiting:r,isLeft:s,showProgress:b,pauseOnHover:z,animation:m,onDismiss:M,onExited:P}){let y=(0,we.useRef)(null),g=(0,we.useRef)(null),H=(0,we.useRef)(n.duration),I=(0,we.useRef)(0),[k,E]=(0,we.useState)(!1),a=m==="none"?"dw-toast--visible":m==="fade"?"dw-toast--fade-entering":s?"dw-toast--entering-left":"dw-toast--entering",[w,u]=(0,we.useState)(a);(0,we.useLayoutEffect)(()=>{y.current&&(y.current.style.maxHeight=`${y.current.offsetHeight}px`)},[]),(0,we.useEffect)(()=>{if(m==="none")return;let l=requestAnimationFrame(()=>u("dw-toast--visible"));return()=>cancelAnimationFrame(l)},[]);let v=(0,we.useCallback)(l=>{l<=0||(I.current=Date.now(),g.current=setTimeout(()=>M(e),l))},[e,M]);(0,we.useEffect)(()=>(g.current&&clearTimeout(g.current),H.current=n.duration,v(n.duration),()=>{g.current&&clearTimeout(g.current)}),[n.duration,v]),(0,we.useEffect)(()=>{if(!r)return;let l=y.current;if(!l||m==="none"){P(e);return}let L=q=>{q.propertyName==="max-height"&&P(e)};l.addEventListener("transitionend",L);let G=setTimeout(()=>P(e),520);return()=>{l.removeEventListener("transitionend",L),clearTimeout(G)}},[r,e,P,m]);let C=()=>{!z||n.duration===0||(g.current&&(clearTimeout(g.current),g.current=null,H.current=Math.max(0,H.current-(Date.now()-I.current))),E(!0))},B=()=>{!z||n.duration===0||(E(!1),v(H.current))},T=["dw-toast",n.type&&`dw-toast--${n.type}`,w,r&&"dw-toast--exiting",k&&"dw-toast--paused"].filter(Boolean).join(" "),O=n.icon!==void 0?n.icon:n.type?hr[n.type]:null;return(0,he.jsxs)("div",{ref:y,role:"status","aria-live":"polite",className:T,onMouseEnter:C,onMouseLeave:B,children:[O&&O,(0,he.jsx)("div",{className:"dw-toast__body",children:n.content!==void 0?n.content:t}),n.closable&&(0,he.jsx)("button",{type:"button",className:"dw-toast__close",onClick:()=>M(e),"aria-label":"Close notification",children:(0,he.jsx)(mr,{})}),b&&n.duration>0&&(0,he.jsx)("div",{className:"dw-toast__progress",style:{animationDuration:`${n.duration}ms`}})]})}function Mn(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 yo({position:e="top-right",maxVisible:t=3,defaultDuration:n=5e3,defaultClosable:r=!0,pauseOnHover:s=!0,animation:b="slide",newestOnTop:z=!1,progressBar:m=!1,width:M=320,adapter:P}){let[y,g]=(0,we.useState)([]),H=(0,we.useRef)([]),I=(0,we.useRef)(y);I.current=y;let k=(0,we.useCallback)(v=>{g(C=>C.map(B=>B.id===v?{...B,exiting:!0}:B)),I.current.find(C=>C.id===v)?.options.onClose?.()},[]),E=(0,we.useCallback)(v=>{let C=H.current.shift()??null;g(B=>{let T=B.filter(l=>l.id!==v);if(!C)return T;let O=Mn(C.rawOpts,n,r);return[...T,{id:C.id,message:C.message,options:O,exiting:!1}]})},[n,r]);if((0,we.useEffect)(()=>{if(P)return;let v=C=>{if(C.kind==="show"){let B=Mn(C.rawOpts,n,r),T={id:C.id,message:C.message,options:B,exiting:!1},O={id:C.id,message:C.message,rawOpts:C.rawOpts};g(l=>l.find(q=>q.id===C.id)?l.map(q=>q.id===C.id?{...q,message:C.message,options:B}:q):l.filter(q=>!q.exiting).length<t?[...l,T]:(H.current.some(q=>q.id===O.id)||H.current.push(O),l))}else C.kind==="update"?(g(B=>B.map(T=>{if(T.id!==C.id)return T;let O={...T.options,...C.patch,id:T.id};return{...T,message:C.message,options:O}})),H.current=H.current.map(B=>B.id!==C.id?B:{...B,message:C.message,rawOpts:{...B.rawOpts,...C.patch}})):C.kind==="dismiss"&&(C.id===void 0?(g(B=>B.map(T=>({...T,exiting:!0}))),H.current=[]):I.current.some(T=>T.id===C.id)?k(C.id):H.current=H.current.filter(T=>T.id!==C.id))};return He.subscribe(v),()=>He.unsubscribe(v)},[P,t,n,r,k]),(0,we.useEffect)(()=>{if(!P)return;let v=C=>{if(C.kind==="show"){let B=Mn(C.rawOpts,n,r);P.show(C.id,C.message,B)}else C.kind==="update"?P.update(C.id,C.message,C.patch):C.kind==="dismiss"&&P.dismiss(C.id)};return He.subscribe(v),()=>He.unsubscribe(v)},[P,n,r]),P){if(!P.Container)return null;let v=P.Container;return(0,Tn.createPortal)((0,he.jsx)(v,{position:e}),document.body)}let a=e.endsWith("left"),w="";z===!0&&(w="dw-toast-container--newest-top"),z===!1&&(w="dw-toast-container--newest-bottom");let u=["dw-toast-container",`dw-toast-container--${e}`,w].filter(Boolean).join(" ");return(0,Tn.createPortal)((0,he.jsx)("div",{className:u,style:{width:M},"aria-label":"Notifications","aria-live":"polite",children:y.map(v=>(0,he.jsx)(br,{id:v.id,message:v.message,options:v.options,exiting:v.exiting,isLeft:a,showProgress:m,pauseOnHover:s,animation:b,onDismiss:k,onExited:E},v.id))}),document.body)}var Y=gn(require("react"),1),Co=require("react-dom");var K=require("react/jsx-runtime"),vr=["top-left","top-right","bottom-left","bottom-right"],Ro=(0,Y.createContext)(null),Mo=(0,Y.createContext)(null),To=(0,Y.createContext)(null),nt=80;function yr(e,t,n){let r=e.getBoundingClientRect(),s=t-r.left,b=n-r.top;return s<nt&&b<nt?"top-left":s>r.width-nt&&b<nt?"top-right":s<nt&&b>r.height-nt?"bottom-left":s>r.width-nt&&b>r.height-nt?"bottom-right":null}function ko({children:e,className:t,style:n}){let[r,s]=(0,Y.useState)({}),[b,z]=(0,Y.useState)({}),[m,M]=(0,Y.useState)({"top-left":[],"top-right":[],"bottom-left":[],"bottom-right":[]}),[P,y]=(0,Y.useState)({}),[g,H]=(0,Y.useState)(null),[I,k]=(0,Y.useState)(null),[E,a]=(0,Y.useState)(null),[w,u]=(0,Y.useState)(()=>new Map),v=(0,Y.useRef)(100),C=(0,Y.useRef)(null),B=(0,Y.useCallback)((te,N)=>(s(f=>({...f,[te]:N})),()=>s(f=>{let X={...f};return delete X[te],X})),[]),T=(0,Y.useCallback)(te=>{v.current+=1;let N=v.current;z(f=>({...f,[te]:N})),a(te)},[]),O=(0,Y.useCallback)((te,N)=>{M(f=>{let X={"top-left":f["top-left"].filter(Q=>Q!==te),"top-right":f["top-right"].filter(Q=>Q!==te),"bottom-left":f["bottom-left"].filter(Q=>Q!==te),"bottom-right":f["bottom-right"].filter(Q=>Q!==te)};return X[N]=[...X[N],te],X})},[]),l=(0,Y.useCallback)(te=>{M(N=>({"top-left":N["top-left"].filter(f=>f!==te),"top-right":N["top-right"].filter(f=>f!==te),"bottom-left":N["bottom-left"].filter(f=>f!==te),"bottom-right":N["bottom-right"].filter(f=>f!==te)}))},[]),L=(0,Y.useCallback)((te,N)=>{y(f=>f[te]===N?f:{...f,[te]:N})},[]),G=(0,Y.useCallback)((te,N)=>{u(f=>{let X=new Map(f);return X.set(te,N),X})},[]),q=(0,Y.useCallback)(te=>{u(N=>{let f=new Map(N);return f.delete(te),f})},[]),ae=(0,Y.useCallback)(()=>{u(new Map)},[]),U=(0,Y.useMemo)(()=>Array.from(w.keys()),[w]),ie=(0,Y.useMemo)(()=>({registerToolbar:B,insetTop:r.top??0,insetBottom:r.bottom??0}),[B,r]),ye=(0,Y.useMemo)(()=>({managedWindowIds:U,openManaged:G,closeManaged:q,closeAllManaged:ae}),[U,G,q,ae]),ge=(0,Y.useMemo)(()=>({topId:E,zOrders:b,focusWindow:T,containerRef:C,stacks:m,dockedSizes:P,dockWindow:O,undockWindow:l,reportDockedSize:L,draggingId:g,setDraggingId:H,hoveredZone:I,setHoveredZone:k,insetTop:r.top??0,insetBottom:r.bottom??0}),[E,b,T,m,P,O,l,L,g,I,r]);return(0,K.jsx)(Ro.Provider,{value:ie,children:(0,K.jsx)(Mo.Provider,{value:ye,children:(0,K.jsx)(To.Provider,{value:ge,children:(0,K.jsxs)("div",{ref:C,className:`dw-panel-overlay-root${g!==null?" dragging-active":""}${t?" "+t:""}`,style:n,children:[e,g!==null&&(0,K.jsx)(Pr,{hoveredZone:I}),Array.from(w.entries()).map(([te,N])=>(0,K.jsx)(Sn,{id:te,title:N.title,icon:N.icon,open:!0,onClose:()=>q(te),defaultAnchor:N.anchor??"top-right",defaultWidth:N.width??320,defaultHeight:N.height??240,children:N.content},te))]})})})})}function Pr({hoveredZone:e}){return(0,K.jsx)(K.Fragment,{children:vr.map(t=>(0,K.jsx)("div",{className:`dw-panel-float-dropzone dw-panel-float-dropzone--${t}${e===t?" dw-panel-float-dropzone--hovered":""}`,"aria-hidden":"true"},t))})}function So({position:e,variant:t="transparent",buttonVariant:n="ghost",buttonSize:r,style:s,className:b,children:z}){let m=(0,Y.useContext)(Ro),M=(0,Y.useRef)(null),P=(0,Y.useRef)(null);(0,Y.useLayoutEffect)(()=>{let k=M.current;if(!k||!m)return;let E=e==="top"||e==="bottom"?k.offsetHeight:k.offsetWidth;return P.current?.(),P.current=m.registerToolbar(e,E),()=>{P.current?.(),P.current=null}},[e,m?.registerToolbar]);let y={position:"absolute",zIndex:5,pointerEvents:"none",boxSizing:"border-box"};e==="top"?(y.top=0,y.left=0,y.right=0):e==="bottom"?(y.bottom=0,y.left=0,y.right=0):e==="left"?(y.insetInlineStart=0,y.top=m?.insetTop??0,y.bottom=m?.insetBottom??0):(y.insetInlineEnd=0,y.top=m?.insetTop??0,y.bottom=m?.insetBottom??0);let H=e==="left"||e==="right"?{...(m?.insetTop??0)>0?{paddingTop:0}:{},...(m?.insetBottom??0)>0?{paddingBottom:0}:{}}:{},I=r!=null?{"--panel-toolbar-btn-size":`${r}px`}:{};return(0,K.jsx)("div",{ref:M,className:`dw-panel-toolbar dw-panel-toolbar--${e}${b?" "+b:""}`,"data-variant":t,"data-btn-variant":n,style:{...y,...H,...I,...s},children:z})}function Io({icon:e,onClick:t,disabled:n,title:r,variant:s}){return(0,K.jsx)("button",{type:"button",className:"dw-panel-toolbar-btn",onClick:t,disabled:n,title:r,"aria-label":r,...s?{"data-variant":s}:{},children:e})}function Eo({icon:e,active:t,onToggle:n,disabled:r,title:s,variant:b}){return(0,K.jsx)("button",{type:"button",className:`dw-panel-toolbar-btn${t?" dw-panel-toolbar-btn--active":""}`,onClick:n,disabled:r,title:s,"aria-label":s,"aria-pressed":t,...b?{"data-variant":b}:{},children:e})}function Lo(){return(0,K.jsx)("span",{className:"dw-panel-toolbar__sep","aria-hidden":"true"})}function No(){return(0,K.jsx)("span",{className:"dw-panel-toolbar__spacer","aria-hidden":"true"})}function zo({children:e}){return(0,K.jsx)("span",{className:"dw-panel-toolbar__item",children:e})}function Wo({children:e}){return(0,K.jsx)("div",{className:"dw-panel-toolbar__center",children:e})}function Do({placeholder:e="Search\u2026",onSearch:t,onSelect:n}){let[r,s]=(0,Y.useState)(!1),[b,z]=(0,Y.useState)(""),[m,M]=(0,Y.useState)([]),[P,y]=(0,Y.useState)(null),g=(0,Y.useRef)(null),H=(0,Y.useRef)(null),I=(0,Y.useRef)(null),k=(0,Y.useRef)(null),E=()=>{s(!0),setTimeout(()=>H.current?.focus(),0)},a=()=>{s(!1),z(""),M([]),y(null),I.current?.abort(),k.current&&clearTimeout(k.current)},w=O=>{let l=O.target.value;if(z(l),I.current?.abort(),k.current&&clearTimeout(k.current),!l.trim()){M([]),y(null);return}k.current=setTimeout(async()=>{let L=new AbortController;I.current=L;try{let G=await t(l,L.signal);if(!L.signal.aborted){M(G);let q=g.current;if(q&&G.length>0){let ae=q.getBoundingClientRect(),U=Math.max(ae.width,240),ie=ae.left;ie+U>window.innerWidth-8&&(ie=window.innerWidth-U-8),y({top:ae.bottom+4,left:ie,width:U})}else y(null)}}catch{}},300)},u=O=>{n(O),a()},v=O=>{g.current?.contains(O.relatedTarget)||a()},C=O=>{O.key==="Escape"&&a()},B=(0,Y.useMemo)(()=>{let O={};for(let l of m){let L=l.group??"";O[L]||(O[L]=[]),O[L].push(l)}return O},[m]),T=(0,K.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,K.jsx)("circle",{cx:"6.5",cy:"6.5",r:"4.5"}),(0,K.jsx)("line",{x1:"10",y1:"10",x2:"14",y2:"14"})]});return r?(0,K.jsxs)("div",{ref:g,className:"dw-panel-toolbar-search dw-panel-toolbar-search--open",onBlur:v,children:[(0,K.jsx)("button",{type:"button",className:"dw-panel-toolbar-btn",onClick:a,"aria-label":"Close search",title:"Close search",children:T}),(0,K.jsx)("input",{ref:H,className:"dw-panel-toolbar-search__input",type:"text",value:b,onChange:w,onKeyDown:C,placeholder:e,autoComplete:"off"}),P&&m.length>0&&(0,Co.createPortal)((0,K.jsx)("div",{className:"dw-panel-toolbar-search__dropdown",style:{position:"fixed",top:P.top,left:P.left,width:P.width,zIndex:9502},onMouseDown:O=>O.preventDefault(),children:Object.entries(B).map(([O,l])=>(0,K.jsxs)(Y.default.Fragment,{children:[O&&(0,K.jsx)("div",{className:"dw-panel-toolbar-search__group",children:O}),l.map(L=>(0,K.jsxs)("button",{type:"button",className:"dw-panel-toolbar-search__item",onClick:()=>u(L),children:[L.icon&&(0,K.jsx)("span",{className:"dw-panel-toolbar-search__item-icon",children:L.icon}),(0,K.jsx)("span",{className:"dw-panel-toolbar-search__item-label",children:L.label}),L.description&&(0,K.jsx)("span",{className:"dw-panel-toolbar-search__item-desc",children:L.description})]},L.id))]},O||"__default__"))}),document.body)]}):(0,K.jsx)("div",{ref:g,className:"dw-panel-toolbar-search",children:(0,K.jsx)("button",{type:"button",className:"dw-panel-toolbar-btn",onClick:E,title:"Search","aria-label":"Search",children:T})})}function Sn(e){let t=(0,Y.useContext)(To);return e.open?(0,K.jsx)(wr,{ctx:t,...e},e.id):null}var Po=120,xo=60,wo=8,xr=8;function wr({id:e,title:t,icon:n,defaultAnchor:r,defaultWidth:s,defaultHeight:b,children:z,ctx:m,onClose:M}){let P=(0,Y.useContext)(vt)?.isRtl??!1,[y,g]=(0,Y.useState)("docked"),[H,I]=(0,Y.useState)(r),[k,E]=(0,Y.useState)(null),[a,w]=(0,Y.useState)({w:s,h:b}),u=(0,Y.useRef)(null),v=(0,Y.useRef)(y);v.current=y;let C=(0,Y.useRef)(k);C.current=k;let B=(0,Y.useRef)(a);B.current=a;let T=(0,Y.useRef)(null),O=(0,Y.useRef)(null);(0,Y.useLayoutEffect)(()=>(m?.dockWindow(e,r),()=>{m?.undockWindow(e)}),[]),(0,Y.useEffect)(()=>{m?.reportDockedSize(e,a.h)},[a.h]);let l=m?.zOrders[e]??101,L=!m||m.topId===e,G=()=>{let N=u.current?.offsetParent;return{cw:N?.clientWidth??9999,ch:N?.clientHeight??9999}},q=()=>{m?.focusWindow(e)},ae=N=>{if(N.button!==0)return;N.preventDefault();let f,X;if(v.current==="docked"){let Q=u.current,j=m?.containerRef?.current;if(Q&&j){let fe=Q.getBoundingClientRect(),Pe=j.getBoundingClientRect();f=fe.left-Pe.left,X=fe.top-Pe.top}else f=wo,X=m?.insetTop??0;m?.undockWindow(e),g("free"),E({x:f,y:X})}else f=C.current?.x??0,X=C.current?.y??0;T.current={mouseX:N.clientX,mouseY:N.clientY,posX:f,posY:X,hasDragged:!1},u.current?.setPointerCapture(N.pointerId)},U=N=>f=>{if(f.button!==0)return;f.preventDefault(),f.stopPropagation();let X=0,Q=0;if(v.current==="free")X=C.current?.x??0,Q=C.current?.y??0;else{let j=u.current,fe=j?.offsetParent;if(j&&fe){let Pe=j.getBoundingClientRect(),Re=fe.getBoundingClientRect();X=Pe.left-Re.left,Q=Pe.top-Re.top}}O.current={dir:N,mouseX:f.clientX,mouseY:f.clientY,startX:X,startY:Q,w:B.current.w,h:B.current.h},u.current?.setPointerCapture(f.pointerId)},ie=N=>{if(T.current){let f=T.current;if(!f.hasDragged){if(Math.abs(N.clientX-f.mouseX)+Math.abs(N.clientY-f.mouseY)<4)return;f.hasDragged=!0,m?.setDraggingId(e)}let{cw:X,ch:Q}=G(),j=Math.max(0,Math.min(f.posX+N.clientX-f.mouseX,X-B.current.w)),fe=Math.max(0,Math.min(f.posY+N.clientY-f.mouseY,Q-B.current.h));E({x:j,y:fe});let Pe=m?.containerRef?.current;if(Pe){let Re=yr(Pe,N.clientX,N.clientY);m?.setHoveredZone(Re&&P?Ot(Re):Re)}}else if(O.current){let f=O.current,X=N.clientX-f.mouseX,Q=N.clientY-f.mouseY,{cw:j,ch:fe}=G(),Pe=f.startX,Re=f.startY,ze=f.w,Ee=f.h;if(f.dir.includes("e")&&(ze=Math.max(Po,Math.min(f.w+X,j-f.startX))),f.dir.includes("s")&&(Ee=Math.max(xo,Math.min(f.h+Q,fe-f.startY))),f.dir.includes("n")){let Fe=Math.max(-f.startY,Math.min(Q,f.h-xo));Ee=f.h-Fe,Re=f.startY+Fe}if(f.dir.includes("w")){let Fe=Math.max(-f.startX,Math.min(X,f.w-Po));ze=f.w-Fe,Pe=f.startX+Fe}w({w:ze,h:Ee}),v.current==="free"&&E({x:Pe,y:Re})}},ye=()=>{if(T.current){let N=m?.hoveredZone;N&&(m?.dockWindow(e,N),I(N),g("docked"),E(null)),m?.setHoveredZone(null),m?.setDraggingId(null)}T.current=null,O.current=null},ge;if(y==="docked"&&m){let N=m.stacks[H]??[],f=N.indexOf(e),X=0;for(let Q=0;Q<f;Q++)X+=(m.dockedSizes[N[Q]]??b)+xr;ge={width:a.w,height:a.h,zIndex:l,transition:"top 0.2s ease, bottom 0.2s ease",opacity:f===-1?0:void 0,pointerEvents:f===-1?"none":void 0},ge[H.endsWith("-right")?"insetInlineEnd":"insetInlineStart"]=wo,H.startsWith("top-")?ge.top=m.insetTop+X:ge.bottom=m.insetBottom+X}else ge={left:k?.x??0,top:k?.y??0,width:a.w,height:a.h,zIndex:l};return(0,K.jsxs)("div",{ref:u,dir:P?"rtl":"ltr",className:`dw-panel-float${L?" dw-panel-float--active":""}`,style:ge,onPointerDown:q,onPointerMove:ie,onPointerUp:ye,children:[(0,K.jsxs)("div",{className:"dw-panel-float__header",onPointerDown:ae,children:[n&&(0,K.jsx)("span",{className:"dw-panel-float__icon",children:n}),(0,K.jsx)("span",{className:"dw-panel-float__title",children:t}),(0,K.jsx)("button",{type:"button",className:"dw-panel-float__close",onClick:M,onPointerDown:N=>N.stopPropagation(),title:"Close","aria-label":"Close",children:(0,K.jsxs)("svg",{width:"8",height:"8",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",children:[(0,K.jsx)("line",{x1:"1",y1:"1",x2:"9",y2:"9"}),(0,K.jsx)("line",{x1:"9",y1:"1",x2:"1",y2:"9"})]})})]}),(0,K.jsx)("div",{className:"dw-panel-float__body",children:z}),y==="free"&&(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)("div",{className:"resize-handle resize-n",onPointerDown:U("n")}),(0,K.jsx)("div",{className:"resize-handle resize-ne",onPointerDown:U("ne")}),(0,K.jsx)("div",{className:"resize-handle resize-nw",onPointerDown:U("nw")})]}),(0,K.jsx)("div",{className:"resize-handle resize-e",onPointerDown:U("e")}),(0,K.jsx)("div",{className:"resize-handle resize-se",onPointerDown:U("se")}),(0,K.jsx)("div",{className:"resize-handle resize-s",onPointerDown:U("s")}),(0,K.jsx)("div",{className:"resize-handle resize-sw",onPointerDown:U("sw")}),(0,K.jsx)("div",{className:"resize-handle resize-w",onPointerDown:U("w")})]})}function Oo(){let[e,t]=(0,Y.useState)(!1),n=(0,Y.useCallback)(()=>{t(!0)},[]),r=(0,Y.useCallback)(()=>{t(!1)},[]);return{isOpen:e,open:n,close:r}}var Cr=[];function Ao(){let e=(0,Y.useContext)(Mo),t=e?.managedWindowIds??Cr;return(0,Y.useMemo)(()=>({open:(n,r)=>e?.openManaged(n,r),close:n=>e?.closeManaged(n),closeAll:()=>e?.closeAllManaged(),isOpen:n=>t.includes(n),openIds:t}),[e,t])}0&&(module.exports={ConfirmationForm,ContextMenu,ContextMenuProvider,DefaultContextMenuAdapter,DockableDesktopProvider,FormContainerContext,FormContainerProvider,LeftPanelRenderer,ModalStackRenderer,PanelContributionProvider,PanelFloatingWindow,PanelOverlayRoot,PanelProvider,PanelRegistry,PanelRegistryClass,PanelToolbar,PanelToolbarItem,PanelToolbarSeparator,RightPanelRenderer,SidePanelRenderer,Sidebar,ToastContainer,Toolbar,ToolbarButton,ToolbarCenter,ToolbarProvider,ToolbarSearchInput,ToolbarSpacer,ToolbarToggle,WindowManager,WindowManagerProvider,WorkspaceClient,defaultPredefinedMessages,formatLabel,sidebarSectionToTab,toast,useActivePanelContribution,useFormContainer,useFormatMessage,useMergedSidebarTabs,useMergedToolbarItems,usePanelActions,usePanelContext,usePanelContextMenu,usePanelContribution,usePanelFloatingWindow,usePanelFloatingWindowManager,usePanelId,usePanelState,usePredefinedMessages,useRegistry,useShowContextMenu,useSidebar,useSidebarTab,useStyleClasses,useToolbar,useWindowManagerActions,useWindowManagerState});
24
24
  //# sourceMappingURL=index.cjs.map