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