react-dockable-desktop 1.2.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +157 -365
- package/dist/index.cjs +3 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +337 -34
- package/dist/index.d.ts +337 -34
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/styles.css +15 -15
- package/package.json +13 -6
package/dist/index.cjs
CHANGED
|
@@ -1,2 +1,4 @@
|
|
|
1
|
-
var Dt=Object.create;var Ye=Object.defineProperty;var At=Object.getOwnPropertyDescriptor;var Bt=Object.getOwnPropertyNames;var Ht=Object.getPrototypeOf,$t=Object.prototype.hasOwnProperty;var Gt=(n,l)=>{for(var r in l)Ye(n,r,{get:l[r],enumerable:!0})},dt=(n,l,r,h)=>{if(l&&typeof l=="object"||typeof l=="function")for(let T of Bt(l))!$t.call(n,T)&&T!==r&&Ye(n,T,{get:()=>l[T],enumerable:!(h=At(l,T))||h.enumerable});return n};var Yt=(n,l,r)=>(r=n!=null?Dt(Ht(n)):{},dt(l||!n||!n.__esModule?Ye(r,"default",{value:n,enumerable:!0}):r,n)),Xt=n=>dt(Ye({},"__esModule",{value:!0}),n);var an={};Gt(an,{ConfirmationForm:()=>Te,FormContainerContext:()=>qe,FormContainerProvider:()=>ke,LeftPanelRenderer:()=>St,ModalStackRenderer:()=>Tt,PanelProvider:()=>wt,PanelRegistry:()=>te,RightPanelRenderer:()=>zt,SidePanelRenderer:()=>Lt,Sidebar:()=>Et,WindowManager:()=>It,WindowManagerProvider:()=>mt,defaultPredefinedMessages:()=>Ne,formatLabel:()=>X,useFormContainer:()=>Ke,useFormatMessage:()=>de,usePanelActions:()=>Ie,usePanelContext:()=>ht,usePanelState:()=>xe,usePredefinedMessages:()=>ue,useStyleClasses:()=>Ce,useWindowManagerActions:()=>Re,useWindowManagerState:()=>fe});module.exports=Xt(an);var O=Yt(require("react"),1),st=require("react-dom");var P=require("react");var tt=class{registry=new Map;register(l,r,h){this.registry.set(l,{Component:r,defaultOptions:h})}get(l){return this.registry.get(l)}getRegisteredIds(){return Array.from(this.registry.keys())}},te=new tt;var Ne={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"},anchorToRightEdge:{id:"dockable-desktop-anchorToRightEdge",defaultMessage:"Anchor to Right Edge"},anchorToBottomEdge:{id:"dockable-desktop-anchorToBottomEdge",defaultMessage:"Anchor to Bottom Edge"},windowAnchoringOptions:{id:"dockable-desktop-windowAnchoringOptions",defaultMessage:"Window Anchoring Options"},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 Fe=require("react/jsx-runtime"),ct=(0,P.createContext)(null),ut=(0,P.createContext)(null),gt=(0,P.createContext)(null),pt=(0,P.createContext)(Ne),ft=(0,P.createContext)({}),Ce=()=>(0,P.useContext)(ft),nt=class{listeners={};subscribe(l,r){return this.listeners[l]||(this.listeners[l]=[]),this.listeners[l].push(r),()=>{this.listeners[l]=this.listeners[l].filter(h=>h!==r)}}publish(l,r){this.listeners[l]&&this.listeners[l].forEach(h=>h(r))}},qt={type:"branch",orientation:"vertical",sizes:[.75,.25],children:[{type:"leaf",id:"group-left-top",panels:["main-map","main-editor"],activePanelId:"main-map"},{type:"leaf",id:"group-left-bottom",panels:["system-console","help-docs"],activePanelId:"system-console"}]},Kt={"main-map":{id:"main-map",title:"Main Map",component:"mainMap",state:"docked"},"main-editor":{id:"main-editor",title:"Code Editor",component:"editor",state:"docked"},"system-console":{id:"system-console",title:"Console Output",component:"terminal",state:"docked"},"help-docs":{id:"help-docs",title:"Help Center",component:"help",state:"docked"},"live-preview":{id:"live-preview",title:"Live Preview Output",component:"preview",state:"floating"}},Ut=[{id:"live-preview",x:450,y:200,width:320,height:250,z:1e3}],mt=({children:n,formatMessage:l,predefinedMessages:r,dir:h,modalClass:T,modalBodyClass:M,sidePanelClass:A,sidePanelBodyClass:F,windowClass:x,windowBodyClass:R})=>{let[z,c]=(0,P.useState)({gridRoot:qt,floating:Ut,minimized:[],panels:Kt,draggedPanelId:null,activePanelId:"main-map",dir:h||"ltr",isRtl:h==="rtl"}),w=(0,P.useRef)(z);w.current=z;let b=(0,P.useRef)({}),L=(0,P.useMemo)(()=>({...Ne,...r}),[r]),W=(0,P.useRef)(new nt),p=(0,P.useRef)(1e3),y=(0,P.useCallback)((t,s)=>W.current.subscribe(t,s),[]),g=(0,P.useCallback)((t,s)=>{W.current.publish(t,s)},[]),k=(0,P.useCallback)((t,s)=>{let o=typeof t.x=="string"?parseFloat(t.x):t.x,e=typeof t.y=="string"?parseFloat(t.y):t.y,a=typeof t.width=="string"?parseFloat(t.width):t.width,i=typeof t.height=="string"?parseFloat(t.height):t.height;isNaN(o)&&(o=300),isNaN(e)&&(e=150),isNaN(a)&&(a=450),isNaN(i)&&(i=350);let m=D=>s.some(B=>{let I=typeof B.x=="string"?parseFloat(B.x):B.x,N=typeof B.y=="string"?parseFloat(B.y):B.y;return!B.maximized&&Math.abs(I-D.x)<20&&Math.abs(N-D.y)<20}),u=0;for(;m({x:o,y:e})&&u<10;)o+=30,e+=30,u++;let v=Math.max(100,window.innerWidth||1024),C=Math.max(100,window.innerHeight||768);return(o+a>v||e+i>C)&&(o=100+u%5*30,e=100+u%5*30),o=Math.max(0,Math.min(o,v-100)),e=Math.max(0,Math.min(e,C-40)),{x:o,y:e,width:a,height:i}},[]),H=(0,P.useCallback)(t=>{p.current+=1;let s=p.current;c(o=>{let e=o.panels[t];if(!e)return o;if(e.state==="floating")return{...o,floating:o.floating.map(a=>a.id===t?{...a,z:s}:a),activePanelId:t};if(e.state==="docked"){let a=i=>i.type==="leaf"?i.panels.includes(t)?{...i,activePanelId:t}:i:{...i,children:i.children.map(a)};return{...o,gridRoot:a(o.gridRoot),activePanelId:t}}return{...o,activePanelId:t}})},[]),$=(t,s)=>{if(t.type==="leaf"){let o=t.panels.indexOf(s);if(o===-1)return t;let e=t.panels.filter(m=>m!==s),a=t.activePanelId===s?e[o]||e[o-1]||e[0]||null:t.activePanelId,i={...t,panels:e,activePanelId:a};return e.length===0&&!t.keepOnEmpty?null:i}else{let o=t.children.map(i=>$(i,s)).filter(i=>i!==null);if(o.length===0)return null;if(o.length===1)return o[0];let e=t.sizes.slice(0,o.length),a=e.reduce((i,m)=>i+m,0);return{...t,children:o,sizes:e.map(i=>i/a)}}},f=(t,s,o)=>{if(t.type==="leaf"){if(t.id===s){let e=t.panels.includes(o)?t.panels:[...t.panels,o];return{...t,panels:e,activePanelId:o}}return t}else return{...t,children:t.children.map(e=>f(e,s,o))}},S=t=>{if(t.type==="leaf")return t.id;for(let s of t.children){let o=S(s);if(o)return o}return null},E=(0,P.useCallback)((t,s,o)=>{c(e=>{let a=e.panels[t],i=te.get(s),m=o?.title||o?.title||i?.defaultOptions?.title||t,u=o?.initialTarget||i?.defaultOptions?.initialTarget||"docked",v=i?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350};if(a)if(a.state==="minimized"){let I=e.minimized.filter(N=>N.id!==t);if(u==="floating"||!e.gridRoot){p.current+=1;let N=k(v,e.floating);return{...e,minimized:I,floating:[...e.floating,{...N,id:t,z:p.current}],panels:{...e.panels,[t]:{...a,state:"floating"}}}}else{let N=S(e.gridRoot)||"group-left-top";return{...e,minimized:I,gridRoot:f(e.gridRoot,N,t),panels:{...e.panels,[t]:{...a,state:"docked"}}}}}else{if(a.state==="floating")return H(t),e;{let I=N=>N.type==="leaf"?N.panels.includes(t)?{...N,activePanelId:t}:N:{...N,children:N.children.map(I)};return{...e,gridRoot:I(e.gridRoot)}}}let D={id:t,title:m,component:s,state:u==="tabbed"?"docked":u},B={...e.panels,[t]:D};if(u==="floating"){p.current+=1;let I=k(v,e.floating),N=o?.stickyRight??i?.defaultOptions?.defaultStickyRight??!1,U=o?.stickyBottom??i?.defaultOptions?.defaultStickyBottom??!1,Z=Math.max(100,window.innerWidth||1024),ee=Math.max(100,window.innerHeight||768),pe=typeof I.width=="string"?parseFloat(I.width):I.width,ye=typeof I.height=="string"?parseFloat(I.height):I.height,we=I.x,ze=I.y,Ee=10;return N&&(we=Z-pe-Ee),U&&(ze=ee-ye-Ee),{...e,floating:[...e.floating,{...I,id:t,z:p.current,x:we,y:ze,stickyRight:N,stickyBottom:U}],panels:B}}else{let I=S(e.gridRoot)||"group-left-top";return{...e,gridRoot:f(e.gridRoot,I,t),panels:B}}})},[k,H]),G=(0,P.useCallback)(t=>{c(s=>{let o=s.panels[t];if(!o||te.get(o.component)?.defaultOptions?.canClose===!1)return s;delete b.current[t];let a={...s.panels};delete a[t];let i=$(s.gridRoot,t);return{...s,gridRoot:i||{type:"leaf",id:"group-default",panels:[],activePanelId:null},floating:s.floating.filter(m=>m.id!==t),minimized:s.minimized.filter(m=>m.id!==t),panels:a}})},[]),Y=(0,P.useCallback)((t,s)=>{b.current[t]=s},[]),_=(0,P.useCallback)(t=>{delete b.current[t]},[]),ce=(0,P.useCallback)((t,s,o)=>{c(e=>{let a=e.panels[t];return a?{...e,panels:{...e.panels,[t]:{...a,dirty:s,dirtyOptions:o}}}:e})},[]),me=(0,P.useCallback)((t,s)=>{c(o=>{let e=o.panels[t];return e?{...o,panels:{...o.panels,[t]:{...e,title:s}}}:o})},[]),K=(0,P.useCallback)(async(t,s)=>{if(s?.force){G(t);return}let o=b.current[t];if(o&&!await o())return;let e=w.current.panels[t];if(e?.dirty)if(s?.onConfirm){if(!await s.onConfirm(e.dirtyOptions))return}else return;G(t)},[G]),ie=(0,P.useCallback)(t=>{c(s=>{let o=s.panels[t];if(!o||o.state==="minimized"||te.get(o.component)?.defaultOptions?.canMinimize===!1)return s;let a,i;if(o.state==="floating"){let u=s.floating.find(v=>v.id===t);u&&(a={x:u.x,y:u.y,width:u.width,height:u.height,stickyRight:u.stickyRight,stickyBottom:u.stickyBottom})}else if(o.state==="docked"){let u=v=>{if(v.type==="leaf")return v.panels.includes(t)?v.id:null;for(let C of v.children){let D=u(C);if(D)return D}return null};i=u(s.gridRoot)}let m=$(s.gridRoot,t);return{...s,gridRoot:m||{type:"leaf",id:"group-default",panels:[],activePanelId:null},floating:s.floating.filter(u=>u.id!==t),minimized:[...s.minimized,{id:t,title:o.title,component:o.component}],panels:{...s.panels,[t]:{...o,state:"minimized",previousState:o.state,lastFloatingRect:a,lastLeafId:i}}}})},[]),re=(0,P.useCallback)(t=>{c(s=>{let o=s.panels[t];if(!o||o.state!=="minimized")return s;let e=s.minimized.filter(i=>i.id!==t);if((o.previousState||"docked")==="floating"){p.current+=1;let i=te.get(o.component),m=o.lastFloatingRect||i?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350},u=k(m,s.floating);return{...s,minimized:e,floating:[...s.floating,{...u,id:t,z:p.current,stickyRight:!!o.lastFloatingRect?.stickyRight,stickyBottom:!!o.lastFloatingRect?.stickyBottom}],panels:{...s.panels,[t]:{...o,state:"floating"}}}}else{let i=(C,D)=>C.type==="leaf"?C.id===D:C.children.some(B=>i(B,D)),m=o.lastLeafId&&i(s.gridRoot,o.lastLeafId),u=te.get(o.component),v=u?.defaultOptions?.canDrag!==!1;if(m)return{...s,minimized:e,gridRoot:f(s.gridRoot,o.lastLeafId,t),panels:{...s.panels,[t]:{...o,state:"docked"}}};if(v){p.current+=1;let C=o.lastFloatingRect||u?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350},D=k(C,s.floating);return{...s,minimized:e,floating:[...s.floating,{...D,id:t,z:p.current,stickyRight:!!o.lastFloatingRect?.stickyRight,stickyBottom:!!o.lastFloatingRect?.stickyBottom}],panels:{...s.panels,[t]:{...o,state:"floating"}}}}else{let C=S(s.gridRoot)||"group-left-top";return{...s,minimized:e,gridRoot:f(s.gridRoot,C,t),panels:{...s.panels,[t]:{...o,state:"docked"}}}}}})},[k]),be=(0,P.useCallback)((t,s)=>{c(o=>{let e=o.panels[t];if(!e||te.get(e.component)?.defaultOptions?.canDrag===!1)return o;let i=te.get(e.component),m=s||i?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350},u=$(o.gridRoot,t);p.current+=1;let v=k(m,o.floating);return{...o,gridRoot:u||{type:"leaf",id:"group-default",panels:[],activePanelId:null},floating:[...o.floating,{...v,id:t,z:p.current}],panels:{...o.panels,[t]:{...e,state:"floating"}}}})},[k]),ve=(0,P.useCallback)((t,s)=>{c(o=>{let e=o.panels[t];if(!e)return o;let a=o.floating.filter(u=>u.id!==t),i=$(o.gridRoot,t),m=s||S(i||o.gridRoot)||"group-left-top";return{...o,gridRoot:f(i||o.gridRoot,m,t),floating:a,panels:{...o.panels,[t]:{...e,state:"docked"}}}})},[]),J=(t,s,o,e)=>{if(t.type==="leaf"){if(t.id===s){let a={type:"leaf",id:`group-split-${Date.now()}-${Math.floor(Math.random()*1e3)}`,panels:[o],activePanelId:o};return{type:"branch",orientation:e==="left"||e==="right"?"horizontal":"vertical",sizes:[.5,.5],children:e==="left"||e==="top"?[a,t]:[t,a]}}return t}else return{...t,children:t.children.map(a=>J(a,s,o,e))}},le=(0,P.useCallback)(t=>{c(s=>({...s,draggedPanelId:t}))},[]),q=(0,P.useCallback)((t,s,o)=>{c(e=>{let a=e.panels[t];if(!a)return e;let i=e.floating.filter(v=>v.id!==t),m=$(e.gridRoot,t),u;return o==="center"?u=f(m||e.gridRoot,s,t):u=J(m||e.gridRoot,s,t,o),{...e,gridRoot:u,floating:i,panels:{...e.panels,[t]:{...a,state:"docked"}},draggedPanelId:null}})},[]),Pe=(0,P.useCallback)((t,s)=>{c(o=>{let e=o.panels[t];if(!e)return o;let a=o.floating.filter(D=>D.id!==t),i=$(o.gridRoot,t),m={type:"leaf",id:`group-edge-${Date.now()}-${Math.floor(Math.random()*1e3)}`,panels:[t],activePanelId:t},u=s==="left"||s==="right"?"horizontal":"vertical",v=s==="left"||s==="top"?[m,i||o.gridRoot]:[i||o.gridRoot,m];return{...o,gridRoot:{type:"branch",orientation:u,sizes:s==="left"||s==="top"?[.3,.7]:[.7,.3],children:v},floating:a,panels:{...o.panels,[t]:{...e,state:"docked"}},draggedPanelId:null}})},[]),Se=(0,P.useCallback)((t,s,o)=>{c(e=>{let a=e.panels[t];if(!a)return e;let i=$(e.gridRoot,t),m=C=>{if(C.type==="leaf"){if(C.id===s){let D=C.panels.filter(N=>N!==t),B=Math.max(0,Math.min(o,D.length)),I=[...D];return I.splice(B,0,t),{...C,panels:I,activePanelId:t}}return C}else return{...C,children:C.children.map(m)}},u=m(i||e.gridRoot),v=e.floating.filter(C=>C.id!==t);return{...e,gridRoot:u,floating:v,panels:{...e.panels,[t]:{...a,state:"docked"}},draggedPanelId:null}})},[]),Me=(0,P.useCallback)(t=>{c(s=>{let o=a=>{if(a.type==="leaf")return a.id===t&&a.canClose!==!1?null:a;{let i=a.children.map(v=>o(v)).filter(v=>v!==null);if(i.length===0)return null;if(i.length===1)return i[0];let m=a.sizes.slice(0,i.length),u=m.reduce((v,C)=>v+C,0);return{...a,children:i,sizes:m.map(v=>v/u)}}},e=o(s.gridRoot);return{...s,gridRoot:e||{type:"leaf",id:"group-default",panels:[],activePanelId:null}}})},[]),Ae=(0,P.useCallback)(t=>{c(s=>({...s,floating:s.floating.map(o=>o.id===t?{...o,maximized:!o.maximized}:o)}))},[]),Be=(0,P.useCallback)((t,s)=>{let o=(e,a)=>{if(e.type==="leaf")return e;if(a===t.length)return{...e,sizes:s};let i=t[a],m=e.children.map((u,v)=>v===i?o(u,a+1):u);return{...e,children:m}};c(e=>({...e,gridRoot:o(e.gridRoot,0)}))},[]),He=(0,P.useCallback)((t,s)=>{c(o=>({...o,floating:o.floating.map(e=>e.id===t?{...e,...s}:e)}))},[]),$e=(0,P.useCallback)(()=>JSON.stringify({gridRoot:z.gridRoot,floating:z.floating,minimized:z.minimized,panels:z.panels}),[z]),Ge=(0,P.useCallback)(t=>{try{let s=JSON.parse(t);if(s.gridRoot&&s.floating&&s.minimized&&s.panels){let o=Object.keys(s.panels)[0]||null;c(e=>({...e,gridRoot:s.gridRoot,floating:s.floating,minimized:s.minimized,panels:s.panels,draggedPanelId:null,activePanelId:o}))}}catch(s){console.error("Failed to parse layout configuration:",s)}},[]),Le=(0,P.useCallback)(t=>{c(s=>s.activePanelId===t?s:{...s,activePanelId:t})},[]),he=(0,P.useCallback)(t=>{c(s=>s.dir===t?s:{...s,dir:t,isRtl:t==="rtl"})},[]);(0,P.useEffect)(()=>{h&&c(t=>t.dir===h?t:{...t,dir:h,isRtl:h==="rtl"})},[h]);let Qe=(0,P.useMemo)(()=>({openPanel:E,closePanel:G,minimizePanel:ie,restorePanel:re,floatPanel:be,dockPanel:ve,maximizePanel:Ae,updateSplitSizes:Be,updateFloatingPosition:He,bringToFront:H,saveLayout:$e,loadLayout:Ge,publish:g,subscribe:y,setDraggedPanelId:le,dockPanelToGroup:q,movePanelOrder:Se,closeLeafGroup:Me,registerCloseGuard:Y,unregisterCloseGuard:_,setPanelDirty:ce,updatePanelTitle:me,requestClosePanel:K,dockPanelToWorkspaceEdge:Pe,setActivePanel:Le,setDirection:he}),[E,G,ie,re,be,ve,Ae,Be,He,H,$e,Ge,g,y,le,q,Se,Me,Y,_,ce,me,K,Pe,Le,he]),Ve=t=>{let s=t.defaultMessage||t.id;return t.values&&Object.entries(t.values).forEach(([o,e])=>{s=s.replace(`{${o}}`,String(e))}),s},_e=(0,P.useMemo)(()=>({modalClass:T,modalBodyClass:M,sidePanelClass:A,sidePanelBodyClass:F,windowClass:x,windowBodyClass:R}),[T,M,A,F,x,R]);return(0,Fe.jsx)(ft.Provider,{value:_e,children:(0,Fe.jsx)(ct.Provider,{value:z,children:(0,Fe.jsx)(ut.Provider,{value:Qe,children:(0,Fe.jsx)(gt.Provider,{value:l||Ve,children:(0,Fe.jsx)(pt.Provider,{value:L,children:n})})})})})},fe=()=>{let n=(0,P.useContext)(ct);if(!n)throw new Error("useWindowManagerState must be used within WindowManagerProvider");return n},Re=()=>{let n=(0,P.useContext)(ut);if(!n)throw new Error("useWindowManagerActions must be used within WindowManagerProvider");return n},de=()=>(0,P.useContext)(gt)||(l=>{let r=l.defaultMessage||l.id;return l.values&&Object.entries(l.values).forEach(([h,T])=>{r=r.replace(`{${h}}`,String(T))}),r}),X=(n,l)=>n?typeof n=="string"?n:l(n):"",ht=()=>{let{publish:n,subscribe:l}=Re();return{publish:n,subscribe:l}},ue=()=>(0,P.useContext)(pt);function yt(n){if(!n)return typeof document<"u"?document.documentElement.dir?.toLowerCase()==="rtl"||document.body.dir?.toLowerCase()==="rtl":!1;let l=n.closest("[dir]");return l?l.getAttribute("dir")?.toLowerCase()==="rtl":document.documentElement.dir?.toLowerCase()==="rtl"||document.body.dir?.toLowerCase()==="rtl"}var Ct=require("replace-react-contexify"),kn=require("replace-react-contexify/styles.css");var Xe=require("react"),jt={requestClose:()=>{console.warn("FormContainerContract: requestClose called but no container is present")},setDirty:()=>{},onCloseRequested:()=>()=>{},setTitle:()=>{},setIcon:()=>{},containerType:"standalone",instanceId:"standalone",onClose:()=>()=>{},onMinimize:()=>()=>{},onRestore:()=>()=>{},onResize:()=>()=>{}},qe=(0,Xe.createContext)(jt),ke=qe.Provider,Ke=()=>(0,Xe.useContext)(qe);var j=require("react"),it=require("react/jsx-runtime"),Jt=0,ot=()=>`panel-${++Jt}-${Date.now()}`,Ue=new Map,bt={leftPanel:null,rightPanel:null,modals:[]},vt=(0,j.createContext)(null),Pt=(0,j.createContext)(null),wt=({children:n})=>{let[l,r]=(0,j.useState)(bt),h=(0,j.useRef)(l);h.current=l;let T=(0,j.useCallback)((p,y)=>{Ue.set(p,y)},[]),M=(0,j.useCallback)(p=>{Ue.delete(p)},[]),A=(0,j.useCallback)(async(p,y,g={})=>{let k=h.current.leftPanel;if(k){let f=Ue.get(k.id);if(f&&!await f())return null}let H=ot(),$={id:H,Component:p,props:y,containerType:"left-panel",options:g};return r(f=>({...f,leftPanel:$})),H},[]),F=(0,j.useCallback)(async(p,y,g={})=>{let k=h.current.rightPanel;if(k){let f=Ue.get(k.id);if(f&&!await f())return null}let H=ot(),$={id:H,Component:p,props:y,containerType:"right-panel",options:g};return r(f=>({...f,rightPanel:$})),H},[]),x=(0,j.useCallback)((p,y,g={})=>{let k=ot(),H=y.title,$={...g,title:g.title||H||"Confirmation"},f={id:k,Component:p,props:y,containerType:"modal",options:$};return r(S=>({...S,modals:[...S.modals,f]})),k},[]),R=(0,j.useCallback)(p=>{r(y=>({leftPanel:y.leftPanel?.id===p?null:y.leftPanel,rightPanel:y.rightPanel?.id===p?null:y.rightPanel,modals:y.modals.filter(g=>g.id!==p)}))},[]),z=(0,j.useCallback)(()=>{r(bt)},[]),c=(0,j.useCallback)(()=>{r(p=>({...p,modals:[]}))},[]),w=(0,j.useCallback)(p=>l.leftPanel?.id===p?l.leftPanel:l.rightPanel?.id===p?l.rightPanel:l.modals.find(y=>y.id===p),[l]),b=(0,j.useCallback)((p,y)=>{r(g=>({leftPanel:g.leftPanel?.id===p?{...g.leftPanel,...y}:g.leftPanel,rightPanel:g.rightPanel?.id===p?{...g.rightPanel,...y}:g.rightPanel,modals:g.modals.map(k=>k.id===p?{...k,...y}:k)}))},[]),L=(0,j.useCallback)((p,y,g)=>{b(p,{dirty:y,dirtyOptions:g})},[b]),W=(0,j.useMemo)(()=>({openLeftPanel:A,openRightPanel:F,openModal:x,close:R,closeAll:z,closeAllModals:c,getInstance:w,updateInstance:b,setDirty:L,registerCloseHandler:T,unregisterCloseHandler:M}),[A,F,x,R,z,c,w,b,L,T,M]);return(0,it.jsx)(vt.Provider,{value:l,children:(0,it.jsx)(Pt.Provider,{value:W,children:n})})},xe=()=>{let n=(0,j.useContext)(vt);if(!n)throw new Error("usePanelState must be used within PanelProvider");return n},Ie=()=>{let n=(0,j.useContext)(Pt);if(!n)throw new Error("usePanelActions must be used within PanelProvider");return n};var We=require("react");var ge=require("react/jsx-runtime"),Zt=({title:n,message:l,alert:r,alertType:h="info",useYesNoTitles:T=!1,onOK:M,onCancel:A})=>{let{requestClose:F,setIcon:x,setTitle:R}=Ke(),z=de(),c=ue(),w=(0,We.useRef)(null);(0,We.useEffect)(()=>{if(n){let g=typeof n=="string"?n:z(n);R(g)}x&&x((0,ge.jsx)("span",{children:"\u2753"}))},[n,R,x,z]),(0,We.useEffect)(()=>{w.current?.focus()},[]);let b=typeof l=="string"?l:z(l),L=z(T?c.no:c.cancel),W=z(T?c.yes:c.ok),p=g=>{g.preventDefault(),M?.(),F()},y=()=>{A?.(),F()};return(0,ge.jsxs)("form",{onSubmit:p,className:"confirmation-form-body",children:[r&&(0,ge.jsxs)("div",{className:`confirmation-alert confirmation-alert-${h}`,children:[(0,ge.jsx)("span",{children:"\u2139\uFE0F"}),(0,ge.jsx)("span",{children:r})]}),(0,ge.jsx)("div",{style:{fontSize:"0.9rem",color:"inherit",lineHeight:1.5},children:b}),(0,ge.jsx)("hr",{style:{marginTop:"0.5rem",marginBottom:"0.5rem",opacity:.1}}),(0,ge.jsxs)("div",{className:"confirmation-actions",children:[(0,ge.jsx)("button",{type:"button",className:"dw-btn dw-btn-sm dw-btn-outline",onClick:y,children:L}),(0,ge.jsx)("button",{type:"submit",className:"dw-btn dw-btn-sm dw-btn-primary",ref:w,children:W})]})]})},Te=Zt;var d=require("react/jsx-runtime"),De=new Map,Je="preserved-dom-container",at=(0,d.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,d.jsx)("rect",{x:"3",y:"3",width:"7",height:"9",rx:"1"}),(0,d.jsx)("rect",{x:"14",y:"3",width:"7",height:"5",rx:"1"}),(0,d.jsx)("rect",{x:"14",y:"12",width:"7",height:"9",rx:"1"}),(0,d.jsx)("rect",{x:"3",y:"16",width:"7",height:"5",rx:"1"})]}),xt=n=>{let l=De.get(n);return l||(l=document.createElement("div"),l.style.width="100%",l.style.height="100%",De.set(n,l)),l},Qt=(n,l)=>{let r=te.get(l);if(!r)return(0,d.jsxs)("div",{className:"dw-unregistered-panel",style:{border:"2px dashed #dc3545"},children:[(0,d.jsx)("h6",{style:{fontWeight:700,marginBottom:"0.25rem"},children:"\u26A0\uFE0F Component Unregistered"}),(0,d.jsxs)("span",{style:{fontSize:"0.875rem",color:"var(--text-secondary, #94a3b8)"},children:["Key: ",l]})]});let h=r.Component;return(0,d.jsx)(h,{panelId:n})},Mt=new Map,Oe=new Map,je=n=>{let l=Oe.get(n);return l||(l={onClose:new Set,onMinimize:new Set,onRestore:new Set,onResize:new Set},Oe.set(n,l)),l},Rt=({panelId:n})=>{let l=(0,O.useRef)(null);return(0,O.useEffect)(()=>{let r=l.current;if(!r)return;let h=xt(n);r.appendChild(h);let T=new ResizeObserver(M=>{for(let A of M){let{width:F,height:x}=A.contentRect;if(F>0&&x>0){Mt.set(n,{width:F,height:x});let R=Oe.get(n);R&&R.onResize.forEach(z=>z(F,x))}}});return T.observe(r),()=>{T.disconnect();let M=document.getElementById(Je);M||(M=document.createElement("div"),M.id=Je,M.style.display="none",document.body.appendChild(M)),M.appendChild(h)}},[n]),(0,d.jsx)("div",{ref:l,style:{width:"100%",height:"100%"}})},Vt=({panelId:n})=>{let l=fe(),r=de(),h=(0,O.useRef)(null),T=l.panels[n],M=T?te.get(T.component):null,A=M?.defaultOptions?.disableLivePreview||!1,F=Mt.get(n)||{width:800,height:500},x=F.width,R=F.height,w=Math.min(220/x,140/R);if((0,O.useEffect)(()=>{if(A)return;let b=h.current;if(!b)return;let L=De.get(n);if(L)return b.appendChild(L),()=>{let W=document.getElementById(Je);W||(W=document.createElement("div"),W.id=Je,W.style.display="none",document.body.appendChild(W)),W.appendChild(L)}},[n,A]),A){let b=x*w,L=R*w,W=T?.title||M?.defaultOptions?.title||"Panel",p=X(W,r),y=(Array.from(p)[0]||"P").toUpperCase();return(0,d.jsx)("div",{className:"taskbar-item-preview-frame",style:{width:`${b}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,d.jsx)("div",{style:{fontSize:"2rem",fontWeight:600,color:"var(--panel-title-color, var(--panel-text, rgba(255, 255, 255, 0.85)))",userSelect:"none"},children:y})})}return(0,d.jsx)("div",{className:"taskbar-item-preview-frame",style:{width:`${x*w}px`,height:`${R*w}px`},children:(0,d.jsx)("div",{ref:h,className:"taskbar-item-preview-host",style:{width:`${x}px`,height:`${R}px`,transform:`scale(${w})`,transformOrigin:"top left",position:"absolute",top:0,left:0,"--preview-scale":w}})})},_t=({panelId:n,children:l})=>{let r=fe(),{requestClosePanel:h,setPanelDirty:T,registerCloseGuard:M,unregisterCloseGuard:A,updatePanelTitle:F}=Re(),x=r.minimized.some(c=>c.id===n),R=(0,O.useRef)(x);(0,O.useEffect)(()=>{let c=Oe.get(n);c&&(x&&!R.current?c.onMinimize.forEach(w=>w()):!x&&R.current&&c.onRestore.forEach(w=>w()),R.current=x)},[x,n]),(0,O.useEffect)(()=>()=>{let c=Oe.get(n);c&&(c.onClose.forEach(w=>w()),Oe.delete(n))},[n]);let z=O.default.useMemo(()=>({requestClose:c=>h(n,c),setDirty:c=>T(n,c),onCloseRequested:c=>(M(n,c),()=>A(n)),setTitle:c=>F(n,c),instanceId:n,onClose:c=>{let w=je(n);return w.onClose.add(c),()=>w.onClose.delete(c)},onMinimize:c=>{let w=je(n);return w.onMinimize.add(c),()=>w.onMinimize.delete(c)},onRestore:c=>{let w=je(n);return w.onRestore.add(c),()=>w.onRestore.delete(c)},onResize:c=>{let w=je(n);return w.onResize.add(c),()=>w.onResize.delete(c)}}),[n,h,T,M,A,F]);return(0,d.jsx)(ke,{value:z,children:l})},kt=({node:n,path:l,onTabRightClick:r,activeDropZone:h,onHoverDropZone:T,onTabDragStart:M,hoveredTab:A,onTabHover:F,defaultPanelIcon:x,onRequestClosePanel:R})=>{let{updateSplitSizes:z}=Re();if(n.type==="leaf")return(0,d.jsx)(en,{leaf:n,onTabRightClick:r,activeDropZone:h,onHoverDropZone:T,onTabDragStart:M,hoveredTab:A,onTabHover:F,defaultPanelIcon:x,onRequestClosePanel:R});let c=n.orientation==="horizontal",w=(b,L)=>{L.preventDefault();let W=c?L.clientX:L.clientY,p=[...n.sizes],y=L.currentTarget;y.classList.add("active"),document.body.classList.add("resizing-active",c?"resizing-row-active":"resizing-col-active");let g=L.currentTarget.parentElement,k=g?c?g.clientWidth:g.clientHeight:c?1e3:800,H=f=>{let G=((c?f.clientX:f.clientY)-W)/k,Y=[...p];Y[b]+=G,Y[b+1]-=G,Y[b]>.1&&Y[b+1]>.1&&z(l,Y)},$=()=>{y.classList.remove("active"),document.body.classList.remove("resizing-active","resizing-row-active","resizing-col-active"),window.removeEventListener("mousemove",H),window.removeEventListener("mouseup",$)};window.addEventListener("mousemove",H),window.addEventListener("mouseup",$)};return(0,d.jsx)("div",{style:{display:"flex",flexDirection:c?"row":"column",width:"100%",height:"100%",overflow:"hidden",position:"relative"},children:n.children.map((b,L)=>{let W=n.sizes[L]*100;return(0,d.jsxs)(O.default.Fragment,{children:[(0,d.jsx)("div",{style:{flexGrow:n.sizes[L],flexBasis:`${W}%`,overflow:"hidden",position:"relative"},children:(0,d.jsx)(kt,{node:b,path:[...l,L],onTabRightClick:r,activeDropZone:h,onHoverDropZone:T,onTabDragStart:M,hoveredTab:A,onTabHover:F,defaultPanelIcon:x,onRequestClosePanel:R})}),L<n.children.length-1&&(0,d.jsx)("div",{onMouseDown:p=>w(L,p),style:{cursor:c?"col-resize":"row-resize",width:c?"1px":"100%",height:c?"100%":"1px",zIndex:20},className:"resizer-bar"})]},L)})})},en=({leaf:n,onTabRightClick:l,activeDropZone:r,onHoverDropZone:h,onTabDragStart:T,hoveredTab:M,onTabHover:A,defaultPanelIcon:F,onRequestClosePanel:x})=>{let R=fe(),{openPanel:z,closeLeafGroup:c,setActivePanel:w}=Re(),b=de(),L=ue(),{windowClass:W,windowBodyClass:p}=Ce(),y=g=>{z(g,R.panels[g].component),w(g)};return(0,d.jsxs)("div",{"data-active-panel-id":n.activePanelId||"",className:`workspace-panel ${W??""}`,style:{overflow:"hidden",position:"relative"},children:[(0,d.jsxs)("div",{className:"workspace-tab-bar",style:{minHeight:"38px"},children:[(0,d.jsx)("div",{className:"tab-headers-container",style:{scrollbarWidth:"none"},onMouseMove:g=>{R.draggedPanelId&&g.target===g.currentTarget&&A(n.id,"EMPTY",n.panels.length,"right")},onMouseLeave:g=>{R.draggedPanelId&&g.target===g.currentTarget&&A(n.id,"",-1,null)},children:n.panels.map((g,k)=>{let H=R.panels[g];if(!H)return null;let $=n.activePanelId===g,f=R.activePanelId===g,E=te.get(H.component)?.defaultOptions,G=M&&M.leafId===n.id&&M.panelId===g,Y=k===n.panels.length-1,_=M&&M.leafId===n.id&&M.panelId==="EMPTY"&&Y,ce=G?M.side==="left"?"drag-hover-left":"drag-hover-right":_?"drag-hover-right":"";return(0,d.jsxs)("div",{onClick:()=>y(g),onMouseDown:K=>{E?.canDrag!==!1&&T(g,K)},onContextMenu:K=>l(g,K),onMouseMove:K=>{if(R.draggedPanelId){let ie=K.currentTarget.getBoundingClientRect(),be=K.clientX-ie.left<ie.width/2?"left":"right";A(n.id,g,k,be)}},onMouseLeave:()=>{R.draggedPanelId&&A(n.id,"",-1,null)},className:`workspace-tab ${$?f?"active workspace-tab-active-focused":"active workspace-tab-active-unfocused":"workspace-tab-inactive"} ${ce}`,style:{cursor:E?.canDrag===!1?"default":"pointer"},children:[(0,d.jsxs)("span",{className:"text-truncate",style:{maxWidth:"120px",display:"flex",alignItems:"center"},children:[(0,d.jsx)("span",{className:"workspace-tab-icon",children:E?.icon||F||at}),(0,d.jsxs)("span",{children:[X(H.title,b),H.dirty?" *":""]})]}),E?.renderHeaderActions&&(0,d.jsx)("span",{className:"tab-header-actions",onClick:K=>K.stopPropagation(),onMouseDown:K=>K.stopPropagation(),children:E.renderHeaderActions(g)}),E?.canClose!==!1&&(0,d.jsx)("span",{onClick:K=>{K.stopPropagation(),x(g)},title:X(L.closeTab,b),className:"close-tab-x",style:{width:"18px",height:"18px",...E?.renderHeaderActions?{}:{marginInlineStart:"auto"}},children:(0,d.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,d.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]},g)})}),n.panels.length===0&&n.keepOnEmpty&&n.canClose!==!1&&(0,d.jsx)("span",{onClick:()=>c(n.id),className:"close-tab-x header-close-empty-group",style:{width:"18px",height:"18px",cursor:"pointer"},title:X(L.closeEmptyGroup,b),children:(0,d.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,d.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),(0,d.jsxs)("div",{className:`dw-panel-body ${p??""}`,style:{position:"relative",overflow:"hidden"},children:[n.activePanelId&&R.panels[n.activePanelId]?(0,d.jsx)(Rt,{panelId:n.activePanelId},n.activePanelId):(0,d.jsx)("div",{className:"empty-leaf-placeholder",children:(0,d.jsx)("span",{children:"Empty Workspace Section"})}),R.draggedPanelId!==null&&(0,d.jsx)("div",{className:"dock-drop-zone-overlay",children:(0,d.jsxs)("div",{className:"dock-target-cross",children:[(0,d.jsx)("div",{onMouseEnter:()=>h(n.id,"top"),onMouseLeave:()=>h(n.id,null),className:"dock-target-box dock-target-top",children:"\u25B2"}),(0,d.jsx)("div",{onMouseEnter:()=>h(n.id,"bottom"),onMouseLeave:()=>h(n.id,null),className:"dock-target-box dock-target-bottom",children:"\u25BC"}),(0,d.jsx)("div",{onMouseEnter:()=>h(n.id,"left"),onMouseLeave:()=>h(n.id,null),className:"dock-target-box dock-target-left",children:"\u25C0"}),(0,d.jsx)("div",{onMouseEnter:()=>h(n.id,"right"),onMouseLeave:()=>h(n.id,null),className:"dock-target-box dock-target-right",children:"\u25B6"}),(0,d.jsx)("div",{onMouseEnter:()=>h(n.id,"center"),onMouseLeave:()=>h(n.id,null),className:"dock-target-box dock-target-center",children:"\u25A3"})]})}),R.draggedPanelId!==null&&r!==null&&r.leafId===n.id&&(0,d.jsx)("div",{className:"dock-preview-highlight",style:{left:r.position==="right"?"50%":"0",top:r.position==="bottom"?"50%":"0",width:r.position==="left"||r.position==="right"?"50%":"100%",height:r.position==="top"||r.position==="bottom"?"50%":"100%"}})]})]})},tn=({skin:n="vscode",defaultPanelIcon:l})=>{let r=fe(),{restorePanel:h,minimizePanel:T,requestClosePanel:M,maximizePanel:A,updateFloatingPosition:F,bringToFront:x,floatPanel:R,setDraggedPanelId:z,dockPanelToGroup:c,movePanelOrder:w,dockPanelToWorkspaceEdge:b,setActivePanel:L,setDirection:W}=Re(),{openModal:p}=Ie(),y=de(),g=ue(),k=O.default.useCallback(e=>{let a=r.panels[e];M(e,{onConfirm:i=>new Promise(m=>{let u=i||a?.dirtyOptions,v=a?X(a.title,y):"Panel";p(Te,{title:u?.title||g.unsavedChangesTitle,message:u?.message||{id:g.unsavedChangesMessage.id,defaultMessage:g.unsavedChangesMessage.defaultMessage,values:{title:v}},alert:u?.alert,alertType:u?.alertType||"danger",useYesNoTitles:!0,onOK:()=>m(!0),onCancel:()=>m(!1)},{size:"small"})})})},[M,r.panels,y,p,g]),{windowClass:H,windowBodyClass:$}=Ce(),f=(0,O.useRef)(null),S=(0,O.useRef)(null),[E,G]=(0,O.useState)(null),Y=(0,O.useRef)(null),[_,ce]=(0,O.useState)(!1);(0,O.useEffect)(()=>()=>{Y.current&&clearTimeout(Y.current)},[]),(0,O.useEffect)(()=>{E&&(r.minimized.some(a=>a.id===E.id)||G(null))},[r.minimized,E]);let[me,K]=(0,O.useState)(null),ie=(0,O.useRef)(null),[re,be]=(0,O.useState)({x:0,y:0}),[ve,J]=(0,O.useState)(null),le=(0,O.useRef)(null),q=e=>{J(e),le.current=e},[Pe,Se]=(0,O.useState)(null),Me=(0,O.useRef)(null),Ae=(e,a,i,m)=>{let u=m?{leafId:e,panelId:a,index:i,side:m}:null;Se(u),Me.current=u},Be=(e,a)=>{let i=a?{leafId:e,position:a}:null;K(i),ie.current=i},He=(e,a)=>{if(a.button!==0)return;let i=a.clientX,m=a.clientY,u=!1,v=B=>{let I=B.clientX-i,N=B.clientY-m;!u&&(Math.abs(I)>5||Math.abs(N)>5)&&(u=!0,z(e)),u&&be({x:B.clientX,y:B.clientY})},C=B=>{if(window.removeEventListener("mousemove",v),window.removeEventListener("mouseup",D),u){let I=ie.current,N=Me.current,U=le.current;if(U)b(e,U);else if(N){let Z=N.index;N.side==="right"&&(Z+=1),w(e,N.leafId,Z)}else I?c(e,I.leafId,I.position):R(e,{x:B.clientX-150,y:B.clientY-15,width:450,height:350});z(null),K(null),ie.current=null,Se(null),Me.current=null,q(null)}},D=B=>{C(B)};window.addEventListener("mousemove",v),window.addEventListener("mouseup",D)},$e=(e,a)=>{a.preventDefault();let i=r.panels[e];if(!i)return;let u=te.get(i.component)?.defaultOptions,v=[];u?.canDrag!==!1&&v.push({label:X(g.floatWindow,y),action:()=>R(e)}),u?.canMinimize!==!1&&v.push({label:X(g.minimizePanel,y),action:()=>T(e)}),v.length>0&&u?.canClose!==!1&&v.push({separator:!0}),u?.canClose!==!1&&v.push({label:X(g.closeTab,y),action:()=>k(e)}),v.length!==0&&S.current?.show({event:a,contextMenu:{items:v}})},Ge=(e,a)=>{a.preventDefault(),G(null),S.current?.show({event:a,contextMenu:{items:[{label:X(g.restorePanel,y),action:()=>h(e)},{label:X(g.maximizePanel,y),action:()=>A(e)},{separator:!0},{label:X(g.closePanel,y),action:()=>k(e)}]}})};(0,O.useEffect)(()=>{let e=Object.keys(r.panels);for(let a of Array.from(De.keys()))e.includes(a)||De.delete(a)},[r.panels]),(0,O.useEffect)(()=>{let e=()=>{r.draggedPanelId!==null&&(z(null),K(null),Se(null))};return window.addEventListener("blur",e),()=>{window.removeEventListener("blur",e)}},[r.draggedPanelId]);let Le=(0,O.useRef)(null),[he,Qe]=(0,O.useState)({width:1024,height:768});(0,O.useEffect)(()=>{let e=Le.current;if(!e)return;let a=new ResizeObserver(i=>{if(!i||i.length===0)return;let m=i[0].contentRect;Qe({width:Math.max(100,m.width),height:Math.max(100,m.height)})});return a.observe(e),()=>{a.disconnect()}},[]),(0,O.useEffect)(()=>{let e=Le.current;if(!e)return;let a=()=>{let u=yt(e);W(u?"rtl":"ltr")};a();let i=new MutationObserver(a);i.observe(document.documentElement,{attributes:!0,attributeFilter:["dir"]}),i.observe(document.body,{attributes:!0,attributeFilter:["dir"]});let m=e.closest("[dir]");return m&&m!==document.documentElement&&m!==document.body&&i.observe(m,{attributes:!0,attributeFilter:["dir"]}),()=>{i.disconnect()}},[W]),(0,O.useEffect)(()=>{let e=he.width,a=he.height;r.floating.forEach(i=>{let m=typeof i.width=="string"?parseFloat(i.width):i.width,u=typeof i.height=="string"?parseFloat(i.height):i.height,v=typeof i.x=="string"?parseFloat(i.x):i.x,C=typeof i.y=="string"?parseFloat(i.y):i.y,D=m,B=u,I=v,N=C,U=!1;D>e&&(D=Math.max(200,e-20),U=!0),B>a&&(B=Math.max(150,a-40),U=!0);let Z=10;if(i.stickyRight)I=e-D-Z,U=!0;else{let ee=e-100;I>ee&&(I=Math.max(0,ee),U=!0)}if(i.stickyBottom)N=a-B-Z,U=!0;else{let ee=a-40;N>ee&&(N=Math.max(0,ee),U=!0)}U&&F(i.id,{x:I,y:N,width:D,height:B})})},[he,r.floating,F]),(0,O.useEffect)(()=>{let e=a=>{if(a.button!==0)return;let i=a.target;if(!i)return;let m=i.closest(".floating-window");if(m){let v=m.getAttribute("data-window-id");v&&(L(v),x(v));return}let u=i.closest(".workspace-panel");if(u){let v=u.getAttribute("data-active-panel-id");v&&L(v)}};return document.addEventListener("mousedown",e),()=>{document.removeEventListener("mousedown",e)}},[x,L]);let Ve=(e,a)=>{let i=r.floating.find(Z=>Z.id===e);if(!i||i.maximized)return;x(e);let m=a.clientX,u=a.clientY,C=a.currentTarget.closest(".floating-window"),D=C?C.offsetLeft:0,B=C?C.offsetTop:0,I=!1,N=Z=>{let ee=Z.clientX-m,pe=Z.clientY-u;if(!I&&(Math.abs(ee)>5||Math.abs(pe)>5)&&(I=!0,z(e)),I){let ye=D+ee,we=B+pe;F(e,{x:ye,y:we,stickyRight:!1,stickyBottom:!1})}},U=()=>{if(I){let Z=ie.current,ee=Me.current,pe=le.current;if(pe)b(e,pe);else if(ee){let ye=ee.index;ee.side==="right"&&(ye+=1),w(e,ee.leafId,ye)}else Z&&c(e,Z.leafId,Z.position);z(null),K(null),ie.current=null,Se(null),Me.current=null,q(null)}window.removeEventListener("mousemove",N),window.removeEventListener("mouseup",U)};window.addEventListener("mousemove",N),window.addEventListener("mouseup",U)},_e=(e,a)=>{a.stopPropagation();let i=r.floating.find(U=>U.id===e);if(!i||i.maximized)return;x(e);let m=a.clientX,u=a.clientY,C=a.currentTarget.closest(".floating-window"),D=C?C.offsetWidth:400,B=C?C.offsetHeight:300,I=U=>{let Z=U.clientX-m,ee=U.clientY-u,pe=Math.max(200,D+Z),ye=Math.max(150,B+ee),we=i.x,ze=i.y,Ee=he.width,et=he.height,Nt=typeof i.x=="string"?parseFloat(i.x):i.x,Ft=typeof i.y=="string"?parseFloat(i.y):i.y,Ot=typeof i.width=="string"?parseFloat(i.width):i.width,Wt=typeof i.height=="string"?parseFloat(i.height):i.height,rt=Math.abs(Nt+Ot-Ee)<4,lt=Math.abs(Ft+Wt-et)<4;rt&&(we=Ee-pe,we<0&&(we=0,pe=Ee)),lt&&(ze=et-ye,ze<0&&(ze=0,ye=et)),F(e,{x:we,y:ze,width:pe,height:ye,stickyRight:rt,stickyBottom:lt})},N=()=>{window.removeEventListener("mousemove",I),window.removeEventListener("mouseup",N)};window.addEventListener("mousemove",I),window.addEventListener("mouseup",N)},t=e=>{if(f.current){let a=e==="left"?-150:150;f.current.scrollBy({left:a,behavior:"smooth"})}},[s,o]=(0,O.useState)("dark");return(0,O.useEffect)(()=>{let e=()=>{let i=document.documentElement.getAttribute("data-bs-theme")==="light"?"light":"dark";o(i)};e();let a=new MutationObserver(e);return a.observe(document.documentElement,{attributes:!0,attributeFilter:["data-bs-theme"]}),()=>a.disconnect()},[]),(0,d.jsxs)("div",{"data-workspace-skin":n,"data-bs-theme":s,style:{display:"flex",flexDirection:"column",width:"100%",height:"100%",overflow:"hidden",userSelect:"none"},dir:r.dir,children:[(0,d.jsxs)("div",{ref:Le,className:r.draggedPanelId?"dragging-active":void 0,style:{flexGrow:1,width:"100%",position:"relative",overflow:"hidden"},children:[r.draggedPanelId!==null&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("div",{className:"workspace-edge-trigger edge-trigger-left",onMouseEnter:()=>q("left"),onMouseLeave:()=>q(null)}),(0,d.jsx)("div",{className:"workspace-edge-trigger edge-trigger-right",onMouseEnter:()=>q("right"),onMouseLeave:()=>q(null)}),(0,d.jsx)("div",{className:"workspace-edge-trigger edge-trigger-top",onMouseEnter:()=>q("top"),onMouseLeave:()=>q(null)}),(0,d.jsx)("div",{className:"workspace-edge-trigger edge-trigger-bottom",onMouseEnter:()=>q("bottom"),onMouseLeave:()=>q(null)})]}),r.draggedPanelId!==null&&ve!==null&&(0,d.jsx)("div",{className:`workspace-edge-preview edge-preview-${ve}`}),(0,d.jsx)("div",{style:{width:"100%",height:"100%",overflow:"hidden",position:"relative"},children:r.gridRoot?(0,d.jsx)(kt,{node:r.gridRoot,path:[],onTabRightClick:$e,activeDropZone:me,onHoverDropZone:Be,onTabDragStart:He,hoveredTab:Pe,onTabHover:Ae,defaultPanelIcon:l,onRequestClosePanel:k}):(0,d.jsx)("div",{className:"empty-workspace-grid",children:"Grid Empty"})}),r.floating.map(e=>{let a=r.panels[e.id];if(!a)return null;let i=e.maximized,m=r.draggedPanelId===e.id,u=r.activePanelId===e.id,C=te.get(a.component)?.defaultOptions;return(0,d.jsxs)("div",{"data-window-id":e.id,dir:r.dir,onMouseDownCapture:()=>{L(e.id),x(e.id)},className:`floating-window ${i?"maximized":""} ${u?"v2-window-focused":""} ${H??""}`,style:{position:"absolute",left:i?0:typeof e.x=="number"?`${e.x}px`:e.x,top:i?0:typeof e.y=="number"?`${e.y}px`:e.y,width:i?"100%":typeof e.width=="number"?`${e.width}px`:e.width,height:i?"100%":typeof e.height=="number"?`${e.height}px`:e.height,zIndex:e.z,pointerEvents:m?"none":"auto"},children:[(0,d.jsxs)("div",{onDoubleClick:()=>A(e.id),onMouseDown:D=>{C?.canDrag!==!1&&Ve(e.id,D)},className:"floating-window-titlebar cursor-move",style:{cursor:i||C?.canDrag===!1?"default":"move"},children:[(0,d.jsxs)("span",{className:"floating-window-title",children:[(0,d.jsx)("span",{className:"window-title-icon",children:C?.icon||l||at}),(0,d.jsxs)("span",{children:[X(a.title,y),a.dirty?" *":""]})]}),(0,d.jsxs)("div",{className:"fw-titlebar-actions",style:{gap:"var(--header-button-gap, 4px)"},onMouseDown:D=>D.stopPropagation(),children:[C?.renderHeaderActions&&(0,d.jsx)("div",{className:"window-header-actions",children:C.renderHeaderActions(e.id)}),C?.canDrag!==!1&&(0,d.jsx)("button",{type:"button",title:X(g.windowAnchoringOptions,y),onClick:D=>{let B=!!e.stickyRight,I=!!e.stickyBottom;S.current?.show({event:D,contextMenu:{items:[{label:X(g.anchorToRightEdge,y),checkbox:{active:!0,enabled:!0,value:B},action:()=>{let N=he.width,U=typeof e.width=="string"?parseFloat(e.width):e.width;B?F(e.id,{stickyRight:!1}):F(e.id,{x:N-U-10,stickyRight:!0})}},{label:X(g.anchorToBottomEdge,y),checkbox:{active:!0,enabled:!0,value:I},action:()=>{let N=he.height,U=typeof e.height=="string"?parseFloat(e.height):e.height;I?F(e.id,{stickyBottom:!1}):F(e.id,{y:N-U-10,stickyBottom:!0})}}]}})},className:"custom-tab-btn btn-anchor-tab",children:(0,d.jsxs)("svg",{className:`anchor-icon ${e.stickyRight&&e.stickyBottom?"anchor-sticky-both":e.stickyRight?"anchor-sticky-right":e.stickyBottom?"anchor-sticky-bottom":""}`,width:"11",height:"11",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:[(0,d.jsx)("circle",{cx:"12",cy:"5",r:"2"}),(0,d.jsx)("path",{d:"M12 7v7m0 0a4 4 0 0 1-4-4M12 14a4 4 0 0 0 4-4M5 18h14"})]})}),(0,d.jsx)("button",{type:"button",title:i?X(g.restoreSize,y):X(g.maximize,y),onClick:()=>A(e.id),className:"custom-tab-btn btn-maximize-tab",children:(0,d.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,d.jsx)("rect",{x:"4",y:"4",width:"16",height:"16",rx:"1.5"})})}),C?.canMinimize!==!1&&(0,d.jsx)("button",{type:"button",title:X(g.minimize,y),onClick:()=>T(e.id),className:"custom-tab-btn btn-minimize-tab",children:(0,d.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"3",children:(0,d.jsx)("path",{d:"M5 12h14"})})}),C?.canClose!==!1&&(0,d.jsx)("button",{type:"button",title:X(g.close,y),onClick:()=>k(e.id),className:"custom-tab-btn btn-close-tab",children:(0,d.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"3",children:(0,d.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]})]}),(0,d.jsx)("div",{className:$??void 0,style:{flexGrow:1,width:"100%",overflow:"hidden",position:"relative",isolation:"isolate"},children:(0,d.jsx)(Rt,{panelId:e.id},e.id)}),!i&&(0,d.jsx)("div",{onMouseDown:D=>_e(e.id,D),style:{position:"absolute",right:0,bottom:0,width:"14px",height:"14px",cursor:"se-resize",zIndex:30,background:"linear-gradient(135deg, transparent 50%, rgba(255,255,255,0.2) 50%)"}})]},e.id)})]}),r.minimized.length>0&&(0,d.jsxs)("div",{className:"taskbar-footer-container",style:{height:"48px",zIndex:100},children:[(0,d.jsx)("button",{type:"button",onClick:()=>t("left"),className:"taskbar-nav-btn",style:{display:r.minimized.length>4?"block":"none"},children:"\u25C0"}),(0,d.jsx)("div",{ref:f,className:"taskbar-items-container",style:{scrollSnapType:"x mandatory"},children:r.minimized.map(e=>{let i=te.get(e.component)?.defaultOptions?.icon||l||at;return(0,d.jsx)("div",{onClick:()=>{G(null),h(e.id)},onContextMenu:m=>Ge(e.id,m),onMouseEnter:m=>{if(_)return;Y.current&&clearTimeout(Y.current);let u=m.currentTarget.getBoundingClientRect();m.clientX>=u.left&&m.clientX<=u.right&&m.clientY>=u.top&&m.clientY<=u.bottom&&G({id:e.id,rect:u,title:e.title,component:e.component})},onMouseLeave:()=>{Y.current=setTimeout(()=>{G(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,d.jsx)("span",{className:"taskbar-item-icon",children:i})},e.id)})}),E&&(0,st.createPortal)((0,d.jsxs)("div",{className:"taskbar-item-tooltip",dir:r.dir,style:{position:"fixed",left:`${E.rect.left+E.rect.width/2}px`,top:`${E.rect.top-8}px`,transform:"translateX(-50%) translateY(-100%)",opacity:1,pointerEvents:"auto",zIndex:999999},onMouseEnter:()=>{Y.current&&clearTimeout(Y.current)},onMouseLeave:()=>{G(null)},onClick:()=>{h(E.id),G(null)},children:[(0,d.jsxs)("div",{className:"tooltip-header-row",children:[(0,d.jsxs)("span",{className:"tooltip-title-text text-truncate",style:{maxWidth:"140px"},children:[X(E.title,y),r.panels[E.id]?.dirty?" *":""]}),(0,d.jsx)("span",{onClick:e=>{e.stopPropagation(),k(E.id),G(null)},title:X(g.closePanel,y),className:"tooltip-close-x",children:(0,d.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,d.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),(0,d.jsx)(Vt,{panelId:E.id})]}),document.body),(0,d.jsx)("button",{type:"button",onClick:()=>t("right"),className:"taskbar-nav-btn",style:{display:r.minimized.length>4?"block":"none"},children:"\u25B6"})]}),Object.keys(r.panels).map(e=>{let a=r.panels[e];if(!a)return null;let i=xt(e);return(0,st.createPortal)((0,d.jsx)(_t,{panelId:e,children:(0,d.jsx)("div",{style:{width:"100%",height:"100%"},children:Qt(e,a.component)})}),i,e)}),(0,d.jsx)(Ct.JsonContextMenu,{ref:S,id:"workspace-context-menu",theme:"dark",onShow:()=>ce(!0),onHide:()=>ce(!1)}),r.draggedPanelId!==null&&!r.floating.some(e=>e.id===r.draggedPanelId)&&(0,d.jsxs)("div",{className:"drag-ghost-tab",style:{left:re.x+12,top:re.y+12,zIndex:1e5},children:["\u{1F4C4} ",X(r.panels[r.draggedPanelId]?.title,y)||"Tab"]})]})},It=tn;var ae=require("react");var V=require("react/jsx-runtime"),nn=({modal:n,index:l,isTopmost:r})=>{let{close:h,openModal:T,updateInstance:M,setDirty:A}=Ie(),F=de(),x=ue(),{dir:R}=fe(),{modalClass:z,modalBodyClass:c}=Ce(),w=(0,ae.useRef)(null),{id:b,Component:L,props:W,options:p,dirty:y,dirtyOptions:g}=n,k=p,[H,$]=(0,ae.useState)(k.icon||null),f=(0,ae.useRef)(k);f.current=k;let S=X(k.title,F),E=(0,ae.useCallback)(async J=>{if(J?.force){h(b);return}if(w.current){if(!await w.current())return;h(b);return}if(y){T(Te,{title:g?.title||x.unsavedChangesTitle,message:g?.message||{id:x.unsavedChangesMessage.id,defaultMessage:x.unsavedChangesMessage.defaultMessage,values:{title:S}},alert:g?.alert,alertType:g?.alertType||"danger",useYesNoTitles:!0,onOK:()=>h(b)},{size:"small"});return}h(b)},[h,T,b,y,g,S,x]),G=(0,ae.useCallback)((J,le)=>A(b,J,le),[A,b]),Y=(0,ae.useCallback)(J=>M(b,{options:{...f.current,title:J}}),[M,b]),_=(0,ae.useCallback)(J=>$(J),[]),ce=(0,ae.useCallback)(J=>(w.current=J,()=>{w.current=null}),[]),me=(0,ae.useMemo)(()=>({requestClose:E,setDirty:G,setTitle:Y,setIcon:_,onCloseRequested:ce,containerType:"modal",instanceId:b}),[E,G,Y,_,ce,b]),K=y?`${S} *`:S,ie=k.size?`v2-modal-size-${k.size}`:"v2-modal-size-auto",re=k.closable!==!1;(0,ae.useEffect)(()=>{if(!r||!re)return;let J=le=>{le.key==="Escape"&&(le.stopPropagation(),E())};return document.addEventListener("keydown",J),()=>document.removeEventListener("keydown",J)},[E,re,r]);let ve=1e4+l*10;return(0,V.jsxs)("div",{className:"v2-modal-overlay",style:{zIndex:ve},dir:R,children:[(0,V.jsx)("div",{className:"v2-modal-curtain",onClick:re?()=>E():void 0}),(0,V.jsxs)("div",{className:`v2-modal-window ${ie} ${z??""}`,children:[(0,V.jsxs)("div",{className:"v2-modal-header",children:[H&&(0,V.jsx)("div",{className:"v2-modal-icon",children:H}),(0,V.jsx)("h4",{className:"v2-modal-title",children:K}),re&&(0,V.jsx)("button",{className:"v2-modal-close-button",onClick:()=>E(),title:F(x.closeTooltip),type:"button",children:(0,V.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,V.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),(0,V.jsx)("div",{className:`v2-modal-body ${c??""}`,children:(0,V.jsx)(ke,{value:me,children:(0,V.jsx)(L,{...W,panelId:b})})})]})]})},on=()=>{let{modals:n}=xe();return n.length===0?null:(0,V.jsx)(V.Fragment,{children:n.map((l,r)=>(0,V.jsx)(nn,{modal:l,index:r,isTopmost:r===n.length-1},l.id))})},Tt=on;var ne=require("react");var Q=require("react/jsx-runtime"),Ze=({panel:n,position:l,defaultWidth:r})=>{let{close:h,openModal:T,updateInstance:M,setDirty:A,registerCloseHandler:F,unregisterCloseHandler:x}=Ie(),{modals:R}=xe(),z=de(),c=ue(),{dir:w}=fe(),{sidePanelClass:b,sidePanelBodyClass:L}=Ce(),W=(0,ne.useRef)(null),{id:p,Component:y,props:g,options:k,dirty:H,dirtyOptions:$}=n,f=k,[S,E]=(0,ne.useState)(f.icon||null),G=(0,ne.useRef)(f);G.current=f;let Y=X(f.title,z),_=(0,ne.useCallback)(async q=>{if(q?.force){h(p);return}if(W.current){if(!await W.current())return;h(p);return}if(H){T(Te,{title:$?.title||c.unsavedChangesTitle,message:$?.message||{id:c.unsavedChangesMessage.id,defaultMessage:c.unsavedChangesMessage.defaultMessage,values:{title:Y}},alert:$?.alert,alertType:$?.alertType||"danger",useYesNoTitles:!0,onOK:()=>h(p)},{size:"small"});return}h(p)},[h,T,p,H,$,Y,c]),ce=(0,ne.useCallback)(async()=>W.current?await W.current():!H,[H]);(0,ne.useEffect)(()=>(F(p,ce),()=>x(p)),[p,ce,F,x]);let me=(0,ne.useCallback)((q,Pe)=>A(p,q,Pe),[A,p]),K=(0,ne.useCallback)(q=>M(p,{options:{...G.current,title:q}}),[M,p]),ie=(0,ne.useCallback)(q=>E(q),[]),re=(0,ne.useCallback)(q=>(W.current=q,()=>{W.current=null}),[]),be=(0,ne.useMemo)(()=>({requestClose:_,setDirty:me,setTitle:K,setIcon:ie,onCloseRequested:re,containerType:l==="left"?"left-panel":"right-panel",instanceId:p}),[_,me,K,ie,re,l,p]),ve=H?`${Y} *`:Y;(0,ne.useEffect)(()=>{let q=Pe=>{Pe.key==="Escape"&&R.length===0&&_()};return document.addEventListener("keydown",q),()=>document.removeEventListener("keydown",q)},[_,R.length]);let J=f.width||r||400,le=typeof J=="number"?`${J}px`:J;return(0,Q.jsx)("div",{className:`v2-side-panel v2-side-panel-${l} v2-side-panel-visible ${b??""}`,style:{width:le},dir:w,children:(0,Q.jsxs)("div",{className:"v2-side-panel-window",children:[(0,Q.jsxs)("div",{className:"v2-side-panel-header",children:[S&&(0,Q.jsx)("div",{className:"v2-side-panel-icon",children:S}),(0,Q.jsx)("h4",{className:"v2-side-panel-title",children:ve}),(0,Q.jsx)("button",{className:"v2-side-panel-close-button",onClick:()=>_(),title:z(c.closeTooltip),type:"button",children:(0,Q.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,Q.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),(0,Q.jsx)("div",{className:`v2-side-panel-body ${L??""}`,children:(0,Q.jsx)(ke,{value:be,children:(0,Q.jsx)(y,{...g,panelId:p})})})]})})},sn=({defaultWidth:n})=>{let{leftPanel:l,rightPanel:r}=xe();return(0,Q.jsxs)(Q.Fragment,{children:[l&&(0,Q.jsx)(Ze,{panel:l,position:"left",defaultWidth:n},l.id),r&&(0,Q.jsx)(Ze,{panel:r,position:"right",defaultWidth:n},r.id)]})},St=({defaultWidth:n})=>{let{leftPanel:l}=xe();return l?(0,Q.jsx)(Ze,{panel:l,position:"left",defaultWidth:n},l.id):null},zt=({defaultWidth:n})=>{let{rightPanel:l}=xe();return l?(0,Q.jsx)(Ze,{panel:l,position:"right",defaultWidth:n},l.id):null},Lt=sn;var oe=require("react");var se=require("react/jsx-runtime"),Et=(0,oe.forwardRef)(function({position:l="right",tabs:r,drawerWidth:h="220px",activeTabId:T,onActiveTabChange:M,children:A},F){let x=T!==void 0,R=de(),z=ue(),[c,w]=(0,oe.useState)(null),b=x?T:c,[L,W]=(0,oe.useState)(()=>{let f=new Set;for(let S of r)S.eagerMount&&f.add(S.id);return f});(0,oe.useEffect)(()=>{let f=r.filter(S=>S.eagerMount&&!L.has(S.id));f.length>0&&W(S=>{let E=new Set(S);for(let G of f)E.add(G.id);return E})},[r]);let p=(0,oe.useRef)(b??null);(0,oe.useEffect)(()=>{p.current=b??null},[b]);let y=(0,oe.useCallback)(f=>{x||w(f),M?.(f)},[x,M]);(0,oe.useImperativeHandle)(F,()=>({openTab:f=>y(f),closeDrawer:()=>y(null),getActiveTab:()=>p.current}),[y]);let g=f=>{y(b===f?null:f)},k=(0,oe.useCallback)(()=>y(null),[y]);(0,oe.useEffect)(()=>{b&&!L.has(b)&&W(f=>{let S=new Set(f);return S.add(b),S})},[b,L]),(0,oe.useEffect)(()=>{b===null&&W(f=>{let S=!1,E=new Set(f);for(let G of f){let Y=r.find(_=>_.id===G);Y&&!Y.eagerMount&&!Y.preserveState&&(E.delete(G),S=!0)}return S?E:f})},[b,r]);let H=(0,se.jsx)("div",{className:`sidebar-tabs-strip ${l}`,style:{width:"56px",height:"100%"},children:r.map(f=>{let S=b===f.id;return(0,se.jsx)("button",{type:"button",onClick:()=>g(f.id),className:`sidebar-tab-btn ${S?"active":""}`,title:f.label,"aria-pressed":S,children:f.icon},f.id)})}),$=(0,se.jsx)("div",{className:`sidebar-content-drawer h-100 ${l}`,style:{width:b?h:"0px",minWidth:b?h:"0px",overflow:"hidden",flexShrink:0},children:r.map(f=>{if(!L.has(f.id))return null;let E=b===f.id,G=()=>y(f.id);return(0,se.jsxs)("div",{style:{display:E?"flex":"none",flexDirection:"column",height:"100%",width:"100%"},children:[(0,se.jsxs)("div",{className:"sidebar-drawer-header",children:[(0,se.jsx)("span",{className:"sidebar-header-title",children:f.label}),(0,se.jsx)("button",{type:"button",onClick:k,className:"sidebar-close-btn",title:R(z.closePanelTooltip),"aria-label":R(z.closePanelTooltip),children:(0,se.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[(0,se.jsx)("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),(0,se.jsx)("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})})]}),(0,se.jsx)("div",{className:"sidebar-drawer-body",children:f.renderContent(f.id,k,G)})]},f.id)})});return(0,se.jsxs)(se.Fragment,{children:[l==="left"&&H,l==="left"&&$,A,l==="right"&&$,l==="right"&&H]})});0&&(module.exports={ConfirmationForm,FormContainerContext,FormContainerProvider,LeftPanelRenderer,ModalStackRenderer,PanelProvider,PanelRegistry,RightPanelRenderer,SidePanelRenderer,Sidebar,WindowManager,WindowManagerProvider,defaultPredefinedMessages,formatLabel,useFormContainer,useFormatMessage,usePanelActions,usePanelContext,usePanelState,usePredefinedMessages,useStyleClasses,useWindowManagerActions,useWindowManagerState});
|
|
1
|
+
var _t=Object.create;var Qe=Object.defineProperty;var Gt=Object.getOwnPropertyDescriptor;var Yt=Object.getOwnPropertyNames;var Xt=Object.getPrototypeOf,qt=Object.prototype.hasOwnProperty;var Kt=(i,t)=>{for(var a in t)Qe(i,a,{get:t[a],enumerable:!0})},Pt=(i,t,a,f)=>{if(t&&typeof t=="object"||typeof t=="function")for(let z of Yt(t))!qt.call(i,z)&&z!==a&&Qe(i,z,{get:()=>t[z],enumerable:!(f=Gt(t,z))||f.enumerable});return i};var jt=(i,t,a)=>(a=i!=null?_t(Xt(i)):{},Pt(t||!i||!i.__esModule?Qe(a,"default",{value:i,enumerable:!0}):a,i)),Ut=i=>Pt(Qe({},"__esModule",{value:!0}),i);var cn={};Kt(cn,{ConfirmationForm:()=>xe,FormContainerContext:()=>tt,FormContainerProvider:()=>Ce,LeftPanelRenderer:()=>At,ModalStackRenderer:()=>Dt,PanelProvider:()=>zt,PanelRegistry:()=>De,PanelRegistryClass:()=>ke,RightPanelRenderer:()=>Bt,SidePanelRenderer:()=>Ht,Sidebar:()=>$t,WindowManager:()=>Ft,WindowManagerProvider:()=>Mt,WorkspaceClient:()=>at,defaultPredefinedMessages:()=>Te,formatLabel:()=>X,useFormContainer:()=>nt,useFormatMessage:()=>le,usePanelActions:()=>we,usePanelContext:()=>Rt,usePanelState:()=>ve,usePredefinedMessages:()=>ce,useRegistry:()=>ze,useStyleClasses:()=>Pe,useWindowManagerActions:()=>Ee,useWindowManagerState:()=>fe});module.exports=Ut(cn);var F=jt(require("react"),1),mt=require("react-dom");var b=require("react");var ke=class{registry=new Map;register(t,a,f){this.registry.set(t,{Component:a,defaultOptions:f})}get(t){return this.registry.get(t)}getRegisteredIds(){return Array.from(this.registry.keys())}},De=new ke;var Te={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"},anchorToRightEdge:{id:"dockable-desktop-anchorToRightEdge",defaultMessage:"Anchor to Right Edge"},anchorToBottomEdge:{id:"dockable-desktop-anchorToBottomEdge",defaultMessage:"Anchor to Bottom Edge"},windowAnchoringOptions:{id:"dockable-desktop-windowAnchoringOptions",defaultMessage:"Window Anchoring Options"},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 Ie=require("react/jsx-runtime"),vt=(0,b.createContext)(null),ut=(0,b.createContext)(null),bt=(0,b.createContext)(null),Ct=(0,b.createContext)(Te),wt=(0,b.createContext)({}),Pe=()=>(0,b.useContext)(wt),xt=(0,b.createContext)(De),ze=()=>(0,b.useContext)(xt),ct=class{listeners={};subscribe(t,a){return this.listeners[t]||(this.listeners[t]=[]),this.listeners[t].push(a),()=>{this.listeners[t]=this.listeners[t].filter(f=>f!==a)}}publish(t,a){this.listeners[t]&&this.listeners[t].forEach(f=>f(a))}},Jt={type:"leaf",id:"group-default",panels:[],activePanelId:null};function Vt(i){if(i)try{let t=JSON.parse(i);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:Jt,floating:[],minimized:[],panels:{},activePanelId:null}}var Mt=({children:i,client:t,formatMessage:a,predefinedMessages:f,dir:z,modalClass:I,modalBodyClass:H,sidePanelClass:B,sidePanelBodyClass:R,windowClass:k,windowBodyClass:D})=>{let p=(0,b.useRef)(t?.registry??De).current,E=t?.config.formatMessage??a,C=t?.config.predefinedMessages??f,S=t?.config.dir??z,[O,d]=(0,b.useState)(()=>({...Vt(t?.initialState??null),draggedPanelId:null,dir:S||"ltr",isRtl:S==="rtl"})),x=(0,b.useRef)(O);x.current=O;let y=(0,b.useRef)({}),m=(0,b.useMemo)(()=>({...Te,...C}),[C]),$=(0,b.useRef)(new ct),W=(0,b.useRef)(1e3),P=(0,b.useCallback)((e,n)=>$.current.subscribe(e,n),[]),N=(0,b.useCallback)((e,n)=>{$.current.publish(e,n)},[]),G=(0,b.useCallback)((e,n)=>{let o=typeof e.x=="string"?parseFloat(e.x):e.x,s=typeof e.y=="string"?parseFloat(e.y):e.y,u=typeof e.width=="string"?parseFloat(e.width):e.width,c=typeof e.height=="string"?parseFloat(e.height):e.height;isNaN(o)&&(o=300),isNaN(s)&&(s=150),isNaN(u)&&(u=450),isNaN(c)&&(c=350);let w=_=>n.some(U=>{let Y=typeof U.x=="string"?parseFloat(U.x):U.x,K=typeof U.y=="string"?parseFloat(U.y):U.y;return!U.maximized&&Math.abs(Y-_.x)<20&&Math.abs(K-_.y)<20}),h=0;for(;w({x:o,y:s})&&h<10;)o+=30,s+=30,h++;let M=Math.max(100,window.innerWidth||1024),T=Math.max(100,window.innerHeight||768);return(o+u>M||s+c>T)&&(o=100+h%5*30,s=100+h%5*30),o=Math.max(0,Math.min(o,M-100)),s=Math.max(0,Math.min(s,T-40)),{x:o,y:s,width:u,height:c}},[]),L=(0,b.useCallback)(e=>{W.current+=1;let n=W.current;d(o=>{let s=o.panels[e];if(!s)return o;if(s.state==="floating")return{...o,floating:o.floating.map(u=>u.id===e?{...u,z:n}:u),activePanelId:e};if(s.state==="docked"){let u=c=>c.type==="leaf"?c.panels.includes(e)?{...c,activePanelId:e}:c:{...c,children:c.children.map(u)};return{...o,gridRoot:u(o.gridRoot),activePanelId:e}}return{...o,activePanelId:e}})},[]),A=(e,n)=>{if(e.type==="leaf"){let o=e.panels.indexOf(n);if(o===-1)return e;let s=e.panels.filter(w=>w!==n),u=e.activePanelId===n?s[o]||s[o-1]||s[0]||null:e.activePanelId,c={...e,panels:s,activePanelId:u};return s.length===0&&!e.keepOnEmpty?null:c}else{let o=e.children.map(c=>A(c,n)).filter(c=>c!==null);if(o.length===0)return null;if(o.length===1)return o[0];let s=e.sizes.slice(0,o.length),u=s.reduce((c,w)=>c+w,0);return{...e,children:o,sizes:s.map(c=>c/u)}}},q=(e,n,o)=>{if(e.type==="leaf"){if(e.id===n){let s=e.panels.includes(o)?e.panels:[...e.panels,o];return{...e,panels:s,activePanelId:o}}return e}else return{...e,children:e.children.map(s=>q(s,n,o))}},ae=e=>{if(e.type==="leaf")return e.id;for(let n of e.children){let o=ae(n);if(o)return o}return null},ue=(0,b.useCallback)((e,n,o)=>{d(s=>{let u=s.panels[e],c=p.get(n),w=o?.title||o?.title||c?.defaultOptions?.title||e,h=o?.initialTarget||c?.defaultOptions?.initialTarget||"docked",M=c?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350};if(u)if(u.state==="minimized"){let Y=s.minimized.filter(K=>K.id!==e);if(h==="floating"||!s.gridRoot){W.current+=1;let K=G(M,s.floating);return{...s,minimized:Y,floating:[...s.floating,{...K,id:e,z:W.current}],panels:{...s.panels,[e]:{...u,state:"floating"}}}}else{let K=ae(s.gridRoot)||"group-default";return{...s,minimized:Y,gridRoot:q(s.gridRoot,K,e),panels:{...s.panels,[e]:{...u,state:"docked"}}}}}else{if(u.state==="floating")return L(e),s;{let Y=K=>K.type==="leaf"?K.panels.includes(e)?{...K,activePanelId:e}:K:{...K,children:K.children.map(Y)};return{...s,gridRoot:Y(s.gridRoot)}}}let _={id:e,title:w,component:n,state:h==="tabbed"?"docked":h},U={...s.panels,[e]:_};if(h==="floating"){W.current+=1;let Y=G(M,s.floating),K=o?.stickyRight??c?.defaultOptions?.defaultStickyRight??!1,Re=o?.stickyBottom??c?.defaultOptions?.defaultStickyBottom??!1,We=Math.max(100,window.innerWidth||1024),Oe=Math.max(100,window.innerHeight||768),lt=typeof Y.width=="string"?parseFloat(Y.width):Y.width,dt=typeof Y.height=="string"?parseFloat(Y.height):Y.height,Ve=Y.x,Ze=Y.y,Fe=10;return K&&(Ve=We-lt-Fe),Re&&(Ze=Oe-dt-Fe),{...s,floating:[...s.floating,{...Y,id:e,z:W.current,x:Ve,y:Ze,stickyRight:K,stickyBottom:Re}],panels:U}}else{let Y=ae(s.gridRoot)||"group-default";return{...s,gridRoot:q(s.gridRoot,Y,e),panels:U}}})},[G,L]),de=(0,b.useCallback)(e=>{d(n=>{let o=n.panels[e];if(!o||p.get(o.component)?.defaultOptions?.canClose===!1)return n;delete y.current[e];let u={...n.panels};delete u[e];let c=A(n.gridRoot,e);return{...n,gridRoot:c||{type:"leaf",id:"group-default",panels:[],activePanelId:null},floating:n.floating.filter(w=>w.id!==e),minimized:n.minimized.filter(w=>w.id!==e),panels:u}})},[]),j=(0,b.useCallback)((e,n)=>{y.current[e]=n},[]),Q=(0,b.useCallback)(e=>{delete y.current[e]},[]),ye=(0,b.useCallback)((e,n,o)=>{d(s=>{let u=s.panels[e];return u?{...s,panels:{...s.panels,[e]:{...u,dirty:n,dirtyOptions:o}}}:s})},[]),me=(0,b.useCallback)((e,n)=>{d(o=>{let s=o.panels[e];return s?{...o,panels:{...o.panels,[e]:{...s,title:n}}}:o})},[]),V=(0,b.useCallback)(async(e,n)=>{if(n?.force){de(e);return}let o=y.current[e];if(o&&!await o())return;let s=x.current.panels[e];if(s?.dirty)if(n?.onConfirm){if(!await n.onConfirm(s.dirtyOptions))return}else return;de(e)},[de]),ge=(0,b.useCallback)(e=>{d(n=>{let o=n.panels[e];if(!o||o.state==="minimized"||p.get(o.component)?.defaultOptions?.canMinimize===!1)return n;let u,c;if(o.state==="floating"){let h=n.floating.find(M=>M.id===e);h&&(u={x:h.x,y:h.y,width:h.width,height:h.height,stickyRight:h.stickyRight,stickyBottom:h.stickyBottom})}else if(o.state==="docked"){let h=M=>{if(M.type==="leaf")return M.panels.includes(e)?M.id:null;for(let T of M.children){let _=h(T);if(_)return _}return null};c=h(n.gridRoot)}let w=A(n.gridRoot,e);return{...n,gridRoot:w||{type:"leaf",id:"group-default",panels:[],activePanelId:null},floating:n.floating.filter(h=>h.id!==e),minimized:[...n.minimized,{id:e,title:o.title,component:o.component}],panels:{...n.panels,[e]:{...o,state:"minimized",previousState:o.state,lastFloatingRect:u,lastLeafId:c}}}})},[]),ee=(0,b.useCallback)(e=>{d(n=>{let o=n.panels[e];if(!o||o.state!=="minimized")return n;let s=n.minimized.filter(c=>c.id!==e);if((o.previousState||"docked")==="floating"){W.current+=1;let c=p.get(o.component),w=o.lastFloatingRect||c?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350},h=G(w,n.floating);return{...n,minimized:s,floating:[...n.floating,{...h,id:e,z:W.current,stickyRight:!!o.lastFloatingRect?.stickyRight,stickyBottom:!!o.lastFloatingRect?.stickyBottom}],panels:{...n.panels,[e]:{...o,state:"floating"}}}}else{let c=(T,_)=>T.type==="leaf"?T.id===_:T.children.some(U=>c(U,_)),w=o.lastLeafId&&c(n.gridRoot,o.lastLeafId),h=p.get(o.component),M=h?.defaultOptions?.canDrag!==!1;if(w)return{...n,minimized:s,gridRoot:q(n.gridRoot,o.lastLeafId,e),panels:{...n.panels,[e]:{...o,state:"docked"}}};if(M){W.current+=1;let T=o.lastFloatingRect||h?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350},_=G(T,n.floating);return{...n,minimized:s,floating:[...n.floating,{..._,id:e,z:W.current,stickyRight:!!o.lastFloatingRect?.stickyRight,stickyBottom:!!o.lastFloatingRect?.stickyBottom}],panels:{...n.panels,[e]:{...o,state:"floating"}}}}else{let T=ae(n.gridRoot)||"group-default";return{...n,minimized:s,gridRoot:q(n.gridRoot,T,e),panels:{...n.panels,[e]:{...o,state:"docked"}}}}}})},[G]),te=(0,b.useCallback)((e,n)=>{d(o=>{let s=o.panels[e];if(!s||p.get(s.component)?.defaultOptions?.canDrag===!1)return o;let c=p.get(s.component),w=n||c?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350},h=A(o.gridRoot,e);W.current+=1;let M=G(w,o.floating);return{...o,gridRoot:h||{type:"leaf",id:"group-default",panels:[],activePanelId:null},floating:[...o.floating,{...M,id:e,z:W.current}],panels:{...o.panels,[e]:{...s,state:"floating"}}}})},[G]),He=(0,b.useCallback)((e,n)=>{d(o=>{let s=o.panels[e];if(!s)return o;let u=o.floating.filter(h=>h.id!==e),c=A(o.gridRoot,e),w=n||ae(c||o.gridRoot)||"group-default";return{...o,gridRoot:q(c||o.gridRoot,w,e),floating:u,panels:{...o.panels,[e]:{...s,state:"docked"}}}})},[]),Me=(e,n,o,s)=>{if(e.type==="leaf"){if(e.id===n){let u={type:"leaf",id:`group-split-${Date.now()}-${Math.floor(Math.random()*1e3)}`,panels:[o],activePanelId:o};return{type:"branch",orientation:s==="left"||s==="right"?"horizontal":"vertical",sizes:[.5,.5],children:s==="left"||s==="top"?[u,e]:[e,u]}}return e}else return{...e,children:e.children.map(u=>Me(u,n,o,s))}},be=(0,b.useCallback)(e=>{d(n=>({...n,draggedPanelId:e}))},[]),$e=(0,b.useCallback)((e,n,o)=>{d(s=>{let u=s.panels[e];if(!u)return s;let c=s.floating.filter(M=>M.id!==e),w=A(s.gridRoot,e),h;return o==="center"?h=q(w||s.gridRoot,n,e):h=Me(w||s.gridRoot,n,e,o),{...s,gridRoot:h,floating:c,panels:{...s.panels,[e]:{...u,state:"docked"}},draggedPanelId:null}})},[]),_e=(0,b.useCallback)((e,n)=>{d(o=>{let s=o.panels[e];if(!s)return o;let u=o.floating.filter(_=>_.id!==e),c=A(o.gridRoot,e),w={type:"leaf",id:`group-edge-${Date.now()}-${Math.floor(Math.random()*1e3)}`,panels:[e],activePanelId:e},h=n==="left"||n==="right"?"horizontal":"vertical",M=n==="left"||n==="top"?[w,c||o.gridRoot]:[c||o.gridRoot,w];return{...o,gridRoot:{type:"branch",orientation:h,sizes:n==="left"||n==="top"?[.3,.7]:[.7,.3],children:M},floating:u,panels:{...o.panels,[e]:{...s,state:"docked"}},draggedPanelId:null}})},[]),Ge=(0,b.useCallback)((e,n,o)=>{d(s=>{let u=s.panels[e];if(!u)return s;let c=A(s.gridRoot,e),w=T=>{if(T.type==="leaf"){if(T.id===n){let _=T.panels.filter(K=>K!==e),U=Math.max(0,Math.min(o,_.length)),Y=[..._];return Y.splice(U,0,e),{...T,panels:Y,activePanelId:e}}return T}else return{...T,children:T.children.map(w)}},h=w(c||s.gridRoot),M=s.floating.filter(T=>T.id!==e);return{...s,gridRoot:h,floating:M,panels:{...s.panels,[e]:{...u,state:"docked"}},draggedPanelId:null}})},[]),Ye=(0,b.useCallback)(e=>{d(n=>{let o=u=>{if(u.type==="leaf")return u.id===e&&u.canClose!==!1?null:u;{let c=u.children.map(M=>o(M)).filter(M=>M!==null);if(c.length===0)return null;if(c.length===1)return c[0];let w=u.sizes.slice(0,c.length),h=w.reduce((M,T)=>M+T,0);return{...u,children:c,sizes:w.map(M=>M/h)}}},s=o(n.gridRoot);return{...n,gridRoot:s||{type:"leaf",id:"group-default",panels:[],activePanelId:null}}})},[]),Xe=(0,b.useCallback)(e=>{d(n=>({...n,floating:n.floating.map(o=>o.id===e?{...o,maximized:!o.maximized}:o)}))},[]),Se=(0,b.useCallback)((e,n)=>{let o=(s,u)=>{if(s.type==="leaf")return s;if(u===e.length)return{...s,sizes:n};let c=e[u],w=s.children.map((h,M)=>M===c?o(h,u+1):h);return{...s,children:w}};d(s=>({...s,gridRoot:o(s.gridRoot,0)}))},[]),he=(0,b.useCallback)((e,n)=>{d(o=>({...o,floating:o.floating.map(s=>s.id===e?{...s,...n}:s)}))},[]),qe=(0,b.useCallback)(()=>JSON.stringify({gridRoot:x.current.gridRoot,floating:x.current.floating,minimized:x.current.minimized,panels:x.current.panels}),[]),Ke=(0,b.useCallback)(e=>{try{let n=JSON.parse(e);if(n.gridRoot&&n.floating&&n.minimized&&n.panels){let o=Object.keys(n.panels)[0]||null;d(s=>({...s,gridRoot:n.gridRoot,floating:n.floating,minimized:n.minimized,panels:n.panels,draggedPanelId:null,activePanelId:o}))}}catch(n){console.error("Failed to parse layout configuration:",n)}},[]),je=(0,b.useCallback)(e=>{d(n=>n.activePanelId===e?n:{...n,activePanelId:e})},[]),Ne=(0,b.useCallback)(e=>{d(n=>n.dir===e?n:{...n,dir:e,isRtl:e==="rtl"})},[]),Ue=(0,b.useCallback)(e=>e in x.current.panels,[]),Je=(0,b.useCallback)(()=>Object.keys(x.current.panels),[]);(0,b.useEffect)(()=>{S&&d(e=>e.dir===S?e:{...e,dir:S,isRtl:S==="rtl"})},[S]);let r=(0,b.useMemo)(()=>({openPanel:ue,closePanel:de,minimizePanel:ge,restorePanel:ee,floatPanel:te,dockPanel:He,maximizePanel:Xe,updateSplitSizes:Se,updateFloatingPosition:he,focusPanel:L,isOpen:Ue,getOpenPanelIds:Je,saveLayout:qe,loadLayout:Ke,publish:N,subscribe:P,setDraggedPanelId:be,dockPanelToGroup:$e,movePanelOrder:Ge,closeLeafGroup:Ye,registerCloseGuard:j,unregisterCloseGuard:Q,setPanelDirty:ye,updatePanelTitle:me,requestClosePanel:V,dockPanelToWorkspaceEdge:_e,setActivePanel:je,setDirection:Ne}),[ue,de,ge,ee,te,He,Xe,Se,he,L,Ue,Je,qe,Ke,N,P,be,$e,Ge,Ye,j,Q,ye,me,V,_e,je,Ne]),v=e=>{let n=e.defaultMessage||e.id;return e.values&&Object.entries(e.values).forEach(([o,s])=>{n=n.replace(`{${o}}`,String(s))}),n},g=(0,b.useMemo)(()=>({modalClass:I,modalBodyClass:H,sidePanelClass:B,sidePanelBodyClass:R,windowClass:k,windowBodyClass:D}),[I,H,B,R,k,D]);return(0,b.useEffect)(()=>{if(process.env.NODE_ENV!=="development")return;let e=!1;try{for(let n of Array.from(document.styleSheets))try{if(Array.from(n.cssRules||[]).some(s=>s.cssText?.includes("react-contexify"))){e=!0;break}}catch{}}catch{}e||console.warn(`[react-dockable-desktop] replace-react-contexify CSS not detected. Context menus may not render correctly.
|
|
2
|
+
Add: import "replace-react-contexify/dist/ReactContexify.css"`)},[]),(0,b.useEffect)(()=>{if(t)return t._connect(r),()=>{t._disconnect()}},[t,r]),(0,Ie.jsx)(wt.Provider,{value:g,children:(0,Ie.jsx)(xt.Provider,{value:p,children:(0,Ie.jsx)(vt.Provider,{value:O,children:(0,Ie.jsx)(ut.Provider,{value:r,children:(0,Ie.jsx)(bt.Provider,{value:E||v,children:(0,Ie.jsx)(Ct.Provider,{value:m,children:i})})})})})})},fe=()=>{let i=(0,b.useContext)(vt);if(!i)throw new Error("useWindowManagerState must be used within WindowManagerProvider");return i},Ee=()=>{let i=(0,b.useContext)(ut);if(!i)throw new Error("useWindowManagerActions must be used within WindowManagerProvider");return i},gt=()=>{let i=(0,b.useContext)(ut);if(!i)throw new Error("useWindowManagerActionsInternal must be used within WindowManagerProvider");return i},le=()=>(0,b.useContext)(bt)||(t=>{let a=t.defaultMessage||t.id;return t.values&&Object.entries(t.values).forEach(([f,z])=>{a=a.replace(`{${f}}`,String(z))}),a}),X=(i,t)=>i?typeof i=="string"?i:t(i):"",Rt=()=>{let{publish:i,subscribe:t}=Ee();return{publish:i,subscribe:t}},ce=()=>(0,b.useContext)(Ct);function kt(i){if(!i)return typeof document<"u"?document.documentElement.dir?.toLowerCase()==="rtl"||document.body.dir?.toLowerCase()==="rtl":!1;let t=i.closest("[dir]");return t?t.getAttribute("dir")?.toLowerCase()==="rtl":document.documentElement.dir?.toLowerCase()==="rtl"||document.body.dir?.toLowerCase()==="rtl"}var Et=require("replace-react-contexify"),Tn=require("replace-react-contexify/styles.css");var et=require("react"),Zt={requestClose:()=>{console.warn("FormContainerContract: requestClose called but no container is present")},setDirty:()=>{},onCloseRequested:()=>()=>{},setTitle:()=>{},setIcon:()=>{},containerType:"standalone",instanceId:"standalone",onClose:()=>()=>{},onMinimize:()=>()=>{},onRestore:()=>()=>{},onResize:()=>()=>{}},tt=(0,et.createContext)(Zt),Ce=tt.Provider,nt=()=>(0,et.useContext)(tt);var J=require("react"),ft=require("react/jsx-runtime"),Qt=0,pt=()=>`panel-${++Qt}-${Date.now()}`,ot=new Map,It={leftPanel:null,rightPanel:null,modals:[]},St=(0,J.createContext)(null),Tt=(0,J.createContext)(null),zt=({children:i})=>{let[t,a]=(0,J.useState)(It),f=(0,J.useRef)(t);f.current=t;let z=(0,J.useCallback)((d,x)=>{ot.set(d,x)},[]),I=(0,J.useCallback)(d=>{ot.delete(d)},[]),H=(0,J.useCallback)(async(d,x,y={})=>{let m=f.current.leftPanel;if(m){let P=ot.get(m.id);if(P&&!await P())return null}let $=pt(),W={id:$,Component:d,props:x,containerType:"left-panel",options:y};return a(P=>({...P,leftPanel:W})),$},[]),B=(0,J.useCallback)(async(d,x,y={})=>{let m=f.current.rightPanel;if(m){let P=ot.get(m.id);if(P&&!await P())return null}let $=pt(),W={id:$,Component:d,props:x,containerType:"right-panel",options:y};return a(P=>({...P,rightPanel:W})),$},[]),R=(0,J.useCallback)((d,x,y={})=>{let m=pt(),$=x.title,W={...y,title:y.title||$||"Confirmation"},P={id:m,Component:d,props:x,containerType:"modal",options:W};return a(N=>({...N,modals:[...N.modals,P]})),m},[]),k=(0,J.useCallback)(d=>{a(x=>({leftPanel:x.leftPanel?.id===d?null:x.leftPanel,rightPanel:x.rightPanel?.id===d?null:x.rightPanel,modals:x.modals.filter(y=>y.id!==d)}))},[]),D=(0,J.useCallback)(()=>{a(It)},[]),p=(0,J.useCallback)(()=>{a(d=>({...d,modals:[]}))},[]),E=(0,J.useCallback)(d=>t.leftPanel?.id===d?t.leftPanel:t.rightPanel?.id===d?t.rightPanel:t.modals.find(x=>x.id===d),[t]),C=(0,J.useCallback)((d,x)=>{a(y=>({leftPanel:y.leftPanel?.id===d?{...y.leftPanel,...x}:y.leftPanel,rightPanel:y.rightPanel?.id===d?{...y.rightPanel,...x}:y.rightPanel,modals:y.modals.map(m=>m.id===d?{...m,...x}:m)}))},[]),S=(0,J.useCallback)((d,x,y)=>{C(d,{dirty:x,dirtyOptions:y})},[C]),O=(0,J.useMemo)(()=>({openLeftPanel:H,openRightPanel:B,openModal:R,close:k,closeAll:D,closeAllModals:p,getInstance:E,updateInstance:C,setDirty:S,registerCloseHandler:z,unregisterCloseHandler:I}),[H,B,R,k,D,p,E,C,S,z,I]);return(0,ft.jsx)(St.Provider,{value:t,children:(0,ft.jsx)(Tt.Provider,{value:O,children:i})})},ve=()=>{let i=(0,J.useContext)(St);if(!i)throw new Error("usePanelState must be used within PanelProvider");return i},we=()=>{let i=(0,J.useContext)(Tt);if(!i)throw new Error("usePanelActions must be used within PanelProvider");return i};var Ae=require("react");var pe=require("react/jsx-runtime"),en=({title:i,message:t,alert:a,alertType:f="info",useYesNoTitles:z=!1,onOK:I,onCancel:H})=>{let{requestClose:B,setIcon:R,setTitle:k}=nt(),D=le(),p=ce(),E=(0,Ae.useRef)(null);(0,Ae.useEffect)(()=>{if(i){let y=typeof i=="string"?i:D(i);k(y)}R&&R((0,pe.jsx)("span",{children:"\u2753"}))},[i,k,R,D]),(0,Ae.useEffect)(()=>{E.current?.focus()},[]);let C=typeof t=="string"?t:D(t),S=D(z?p.no:p.cancel),O=D(z?p.yes:p.ok),d=y=>{y.preventDefault(),I?.(),B()},x=()=>{H?.(),B()};return(0,pe.jsxs)("form",{onSubmit:d,className:"confirmation-form-body",children:[a&&(0,pe.jsxs)("div",{className:`confirmation-alert confirmation-alert-${f}`,children:[(0,pe.jsx)("span",{children:"\u2139\uFE0F"}),(0,pe.jsx)("span",{children:a})]}),(0,pe.jsx)("div",{style:{fontSize:"0.9rem",color:"inherit",lineHeight:1.5},children:C}),(0,pe.jsx)("hr",{style:{marginTop:"0.5rem",marginBottom:"0.5rem",opacity:.1}}),(0,pe.jsxs)("div",{className:"confirmation-actions",children:[(0,pe.jsx)("button",{type:"button",className:"dw-btn dw-btn-sm dw-btn-outline",onClick:x,children:S}),(0,pe.jsx)("button",{type:"submit",className:"dw-btn dw-btn-sm dw-btn-primary",ref:E,children:O})]})]})},xe=en;var l=require("react/jsx-runtime"),Be=new Map,st="preserved-dom-container",ht=(0,l.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,l.jsx)("rect",{x:"3",y:"3",width:"7",height:"9",rx:"1"}),(0,l.jsx)("rect",{x:"14",y:"3",width:"7",height:"5",rx:"1"}),(0,l.jsx)("rect",{x:"14",y:"12",width:"7",height:"9",rx:"1"}),(0,l.jsx)("rect",{x:"3",y:"16",width:"7",height:"5",rx:"1"})]}),Lt=i=>{let t=Be.get(i);return t||(t=document.createElement("div"),t.style.width="100%",t.style.height="100%",Be.set(i,t)),t},tn=(i,t,a)=>{let f=a.get(t);if(!f)return console.warn(`[react-dockable-desktop] Panel "${i}" references component key "${t}" which is not registered. Add it to the WorkspaceClient panels config:
|
|
3
|
+
new WorkspaceClient({ panels: { "${t}": { component: YourComponent } } })`),(0,l.jsxs)("div",{className:"dw-unregistered-panel",style:{border:"2px dashed #dc3545"},children:[(0,l.jsx)("h6",{style:{fontWeight:700,marginBottom:"0.25rem"},children:"\u26A0\uFE0F Component Unregistered"}),(0,l.jsxs)("span",{style:{fontSize:"0.875rem",color:"var(--text-secondary, #94a3b8)"},children:["Key: ",t]})]});let z=f.Component;return(0,l.jsx)(z,{panelId:i})},Nt=new Map,Le=new Map,it=i=>{let t=Le.get(i);return t||(t={onClose:new Set,onMinimize:new Set,onRestore:new Set,onResize:new Set},Le.set(i,t)),t},Wt=({panelId:i})=>{let t=(0,F.useRef)(null);return(0,F.useEffect)(()=>{let a=t.current;if(!a)return;let f=Lt(i);a.appendChild(f);let z=new ResizeObserver(I=>{for(let H of I){let{width:B,height:R}=H.contentRect;if(B>0&&R>0){Nt.set(i,{width:B,height:R});let k=Le.get(i);k&&k.onResize.forEach(D=>D(B,R))}}});return z.observe(a),()=>{z.disconnect();let I=document.getElementById(st);I||(I=document.createElement("div"),I.id=st,I.style.display="none",document.body.appendChild(I)),I.appendChild(f)}},[i]),(0,l.jsx)("div",{ref:t,style:{width:"100%",height:"100%"}})},nn=({panelId:i})=>{let t=fe(),a=ze(),f=le(),z=(0,F.useRef)(null),I=t.panels[i],H=I?a.get(I.component):null,B=H?.defaultOptions?.disableLivePreview||!1,R=Nt.get(i)||{width:800,height:500},k=R.width,D=R.height,C=Math.min(220/k,140/D);if((0,F.useEffect)(()=>{if(B)return;let S=z.current;if(!S)return;let O=Be.get(i);if(O)return S.appendChild(O),()=>{let d=document.getElementById(st);d||(d=document.createElement("div"),d.id=st,d.style.display="none",document.body.appendChild(d)),d.appendChild(O)}},[i,B]),B){let S=k*C,O=D*C,d=I?.title||H?.defaultOptions?.title||"Panel",x=X(d,f),y=(Array.from(x)[0]||"P").toUpperCase();return(0,l.jsx)("div",{className:"taskbar-item-preview-frame",style:{width:`${S}px`,height:`${O}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,l.jsx)("div",{style:{fontSize:"2rem",fontWeight:600,color:"var(--panel-title-color, var(--panel-text, rgba(255, 255, 255, 0.85)))",userSelect:"none"},children:y})})}return(0,l.jsx)("div",{className:"taskbar-item-preview-frame",style:{width:`${k*C}px`,height:`${D*C}px`},children:(0,l.jsx)("div",{ref:z,className:"taskbar-item-preview-host",style:{width:`${k}px`,height:`${D}px`,transform:`scale(${C})`,transformOrigin:"top left",position:"absolute",top:0,left:0,"--preview-scale":C}})})},on=({panelId:i,children:t})=>{let a=fe(),{requestClosePanel:f,setPanelDirty:z,registerCloseGuard:I,unregisterCloseGuard:H,updatePanelTitle:B}=Ee(),R=a.minimized.some(p=>p.id===i),k=(0,F.useRef)(R);(0,F.useEffect)(()=>{let p=Le.get(i);p&&(R&&!k.current?p.onMinimize.forEach(E=>E()):!R&&k.current&&p.onRestore.forEach(E=>E()),k.current=R)},[R,i]),(0,F.useEffect)(()=>()=>{let p=Le.get(i);p&&(p.onClose.forEach(E=>E()),Le.delete(i))},[i]);let D=F.default.useMemo(()=>({requestClose:p=>f(i,p),setDirty:p=>z(i,p),onCloseRequested:p=>(I(i,p),()=>H(i)),setTitle:p=>B(i,p),instanceId:i,onClose:p=>{let E=it(i);return E.onClose.add(p),()=>E.onClose.delete(p)},onMinimize:p=>{let E=it(i);return E.onMinimize.add(p),()=>E.onMinimize.delete(p)},onRestore:p=>{let E=it(i);return E.onRestore.add(p),()=>E.onRestore.delete(p)},onResize:p=>{let E=it(i);return E.onResize.add(p),()=>E.onResize.delete(p)}}),[i,f,z,I,H,B]);return(0,l.jsx)(Ce,{value:D,children:t})},Ot=({node:i,path:t,onTabRightClick:a,activeDropZone:f,onHoverDropZone:z,onTabDragStart:I,hoveredTab:H,onTabHover:B,defaultPanelIcon:R,onRequestClosePanel:k})=>{let{updateSplitSizes:D}=Ee();if(i.type==="leaf")return(0,l.jsx)(sn,{leaf:i,onTabRightClick:a,activeDropZone:f,onHoverDropZone:z,onTabDragStart:I,hoveredTab:H,onTabHover:B,defaultPanelIcon:R,onRequestClosePanel:k});let p=i.orientation==="horizontal",E=(C,S)=>{S.preventDefault();let O=p?S.clientX:S.clientY,d=[...i.sizes],x=S.currentTarget;x.classList.add("active"),document.body.classList.add("resizing-active",p?"resizing-row-active":"resizing-col-active");let y=S.currentTarget.parentElement,m=y?p?y.clientWidth:y.clientHeight:p?1e3:800,$=P=>{let L=((p?P.clientX:P.clientY)-O)/m,A=[...d];A[C]+=L,A[C+1]-=L,A[C]>.1&&A[C+1]>.1&&D(t,A)},W=()=>{x.classList.remove("active"),document.body.classList.remove("resizing-active","resizing-row-active","resizing-col-active"),window.removeEventListener("mousemove",$),window.removeEventListener("mouseup",W)};window.addEventListener("mousemove",$),window.addEventListener("mouseup",W)};return(0,l.jsx)("div",{style:{display:"flex",flexDirection:p?"row":"column",width:"100%",height:"100%",overflow:"hidden",position:"relative"},children:i.children.map((C,S)=>{let O=i.sizes[S]*100;return(0,l.jsxs)(F.default.Fragment,{children:[(0,l.jsx)("div",{style:{flexGrow:i.sizes[S],flexBasis:`${O}%`,overflow:"hidden",position:"relative"},children:(0,l.jsx)(Ot,{node:C,path:[...t,S],onTabRightClick:a,activeDropZone:f,onHoverDropZone:z,onTabDragStart:I,hoveredTab:H,onTabHover:B,defaultPanelIcon:R,onRequestClosePanel:k})}),S<i.children.length-1&&(0,l.jsx)("div",{onMouseDown:d=>E(S,d),style:{cursor:p?"col-resize":"row-resize",width:p?"1px":"100%",height:p?"100%":"1px",zIndex:20},className:"resizer-bar"})]},S)})})},sn=({leaf:i,onTabRightClick:t,activeDropZone:a,onHoverDropZone:f,onTabDragStart:z,hoveredTab:I,onTabHover:H,defaultPanelIcon:B,onRequestClosePanel:R})=>{let k=fe(),D=ze(),{openPanel:p,closeLeafGroup:E,setActivePanel:C}=gt(),S=le(),O=ce(),{windowClass:d,windowBodyClass:x}=Pe(),y=m=>{p(m,k.panels[m].component),C(m)};return(0,l.jsxs)("div",{"data-active-panel-id":i.activePanelId||"",className:`workspace-panel ${d??""}`,style:{overflow:"hidden",position:"relative"},children:[(0,l.jsxs)("div",{className:"workspace-tab-bar",style:{minHeight:"38px"},children:[(0,l.jsx)("div",{className:"tab-headers-container",style:{scrollbarWidth:"none"},onMouseMove:m=>{k.draggedPanelId&&m.target===m.currentTarget&&H(i.id,"EMPTY",i.panels.length,"right")},onMouseLeave:m=>{k.draggedPanelId&&m.target===m.currentTarget&&H(i.id,"",-1,null)},children:i.panels.map((m,$)=>{let W=k.panels[m];if(!W)return null;let P=i.activePanelId===m,N=k.activePanelId===m,L=D.get(W.component)?.defaultOptions,A=I&&I.leafId===i.id&&I.panelId===m,q=$===i.panels.length-1,ae=I&&I.leafId===i.id&&I.panelId==="EMPTY"&&q,ue=A?I.side==="left"?"drag-hover-left":"drag-hover-right":ae?"drag-hover-right":"";return(0,l.jsxs)("div",{onClick:()=>y(m),onMouseDown:j=>{L?.canDrag!==!1&&z(m,j)},onContextMenu:j=>t(m,j),onMouseMove:j=>{if(k.draggedPanelId){let Q=j.currentTarget.getBoundingClientRect(),me=j.clientX-Q.left<Q.width/2?"left":"right";H(i.id,m,$,me)}},onMouseLeave:()=>{k.draggedPanelId&&H(i.id,"",-1,null)},className:`workspace-tab ${P?N?"active workspace-tab-active-focused":"active workspace-tab-active-unfocused":"workspace-tab-inactive"} ${ue}`,style:{cursor:L?.canDrag===!1?"default":"pointer"},children:[(0,l.jsxs)("span",{className:"text-truncate",style:{maxWidth:"120px",display:"flex",alignItems:"center"},children:[(0,l.jsx)("span",{className:"workspace-tab-icon",children:L?.icon||B||ht}),(0,l.jsxs)("span",{children:[X(W.title,S),W.dirty?" *":""]})]}),L?.renderHeaderActions&&(0,l.jsx)("span",{className:"tab-header-actions",onClick:j=>j.stopPropagation(),onMouseDown:j=>j.stopPropagation(),children:L.renderHeaderActions(m)}),L?.canClose!==!1&&(0,l.jsx)("span",{onClick:j=>{j.stopPropagation(),R(m)},title:X(O.closeTab,S),className:"close-tab-x",style:{width:"18px",height:"18px",...L?.renderHeaderActions?{}:{marginInlineStart:"auto"}},children:(0,l.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,l.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]},m)})}),i.panels.length===0&&i.keepOnEmpty&&i.canClose!==!1&&(0,l.jsx)("span",{onClick:()=>E(i.id),className:"close-tab-x header-close-empty-group",style:{width:"18px",height:"18px",cursor:"pointer"},title:X(O.closeEmptyGroup,S),children:(0,l.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,l.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),(0,l.jsxs)("div",{className:`dw-panel-body ${x??""}`,style:{position:"relative",overflow:"hidden"},children:[i.activePanelId&&k.panels[i.activePanelId]?(0,l.jsx)(Wt,{panelId:i.activePanelId},i.activePanelId):(0,l.jsx)("div",{className:"empty-leaf-placeholder",children:(0,l.jsx)("span",{children:"Empty Workspace Section"})}),k.draggedPanelId!==null&&(0,l.jsx)("div",{className:"dock-drop-zone-overlay",children:(0,l.jsxs)("div",{className:"dock-target-cross",children:[(0,l.jsx)("div",{onMouseEnter:()=>f(i.id,"top"),onMouseLeave:()=>f(i.id,null),className:"dock-target-box dock-target-top",children:"\u25B2"}),(0,l.jsx)("div",{onMouseEnter:()=>f(i.id,"bottom"),onMouseLeave:()=>f(i.id,null),className:"dock-target-box dock-target-bottom",children:"\u25BC"}),(0,l.jsx)("div",{onMouseEnter:()=>f(i.id,"left"),onMouseLeave:()=>f(i.id,null),className:"dock-target-box dock-target-left",children:"\u25C0"}),(0,l.jsx)("div",{onMouseEnter:()=>f(i.id,"right"),onMouseLeave:()=>f(i.id,null),className:"dock-target-box dock-target-right",children:"\u25B6"}),(0,l.jsx)("div",{onMouseEnter:()=>f(i.id,"center"),onMouseLeave:()=>f(i.id,null),className:"dock-target-box dock-target-center",children:"\u25A3"})]})}),k.draggedPanelId!==null&&a!==null&&a.leafId===i.id&&(0,l.jsx)("div",{className:"dock-preview-highlight",style:{left:a.position==="right"?"50%":"0",top:a.position==="bottom"?"50%":"0",width:a.position==="left"||a.position==="right"?"50%":"100%",height:a.position==="top"||a.position==="bottom"?"50%":"100%"}})]})]})},an=({skin:i="vscode",defaultPanelIcon:t})=>{let a=fe(),f=ze(),{restorePanel:z,minimizePanel:I,requestClosePanel:H,maximizePanel:B,updateFloatingPosition:R,focusPanel:k,floatPanel:D,setDraggedPanelId:p,dockPanelToGroup:E,movePanelOrder:C,dockPanelToWorkspaceEdge:S,setActivePanel:O,setDirection:d}=gt(),{openModal:x}=we(),y=le(),m=ce(),$=F.default.useCallback(r=>{let v=a.panels[r];H(r,{onConfirm:g=>new Promise(e=>{let n=g||v?.dirtyOptions,o=v?X(v.title,y):"Panel";x(xe,{title:n?.title||m.unsavedChangesTitle,message:n?.message||{id:m.unsavedChangesMessage.id,defaultMessage:m.unsavedChangesMessage.defaultMessage,values:{title:o}},alert:n?.alert,alertType:n?.alertType||"danger",useYesNoTitles:!0,onOK:()=>e(!0),onCancel:()=>e(!1)},{size:"small"})})})},[H,a.panels,y,x,m]),{windowClass:W,windowBodyClass:P}=Pe(),N=(0,F.useRef)(null),G=(0,F.useRef)(null),[L,A]=(0,F.useState)(null),q=(0,F.useRef)(null),[ae,ue]=(0,F.useState)(!1);(0,F.useEffect)(()=>()=>{q.current&&clearTimeout(q.current)},[]),(0,F.useEffect)(()=>{L&&(a.minimized.some(v=>v.id===L.id)||A(null))},[a.minimized,L]);let[de,j]=(0,F.useState)(null),Q=(0,F.useRef)(null),[ye,me]=(0,F.useState)({x:0,y:0}),[V,ge]=(0,F.useState)(null),ee=(0,F.useRef)(null),te=r=>{ge(r),ee.current=r},[He,Me]=(0,F.useState)(null),be=(0,F.useRef)(null),$e=(r,v,g,e)=>{let n=e?{leafId:r,panelId:v,index:g,side:e}:null;Me(n),be.current=n},_e=(r,v)=>{let g=v?{leafId:r,position:v}:null;j(g),Q.current=g},Ge=(r,v)=>{if(v.button!==0)return;let g=v.clientX,e=v.clientY,n=!1,o=c=>{let w=c.clientX-g,h=c.clientY-e;!n&&(Math.abs(w)>5||Math.abs(h)>5)&&(n=!0,p(r)),n&&me({x:c.clientX,y:c.clientY})},s=c=>{if(window.removeEventListener("mousemove",o),window.removeEventListener("mouseup",u),n){let w=Q.current,h=be.current,M=ee.current;if(M)S(r,M);else if(h){let T=h.index;h.side==="right"&&(T+=1),C(r,h.leafId,T)}else w?E(r,w.leafId,w.position):D(r,{x:c.clientX-150,y:c.clientY-15,width:450,height:350});p(null),j(null),Q.current=null,Me(null),be.current=null,te(null)}},u=c=>{s(c)};window.addEventListener("mousemove",o),window.addEventListener("mouseup",u)},Ye=(r,v)=>{v.preventDefault();let g=a.panels[r];if(!g)return;let n=f.get(g.component)?.defaultOptions,o=[];n?.canDrag!==!1&&o.push({label:X(m.floatWindow,y),action:()=>D(r)}),n?.canMinimize!==!1&&o.push({label:X(m.minimizePanel,y),action:()=>I(r)}),o.length>0&&n?.canClose!==!1&&o.push({separator:!0}),n?.canClose!==!1&&o.push({label:X(m.closeTab,y),action:()=>$(r)}),o.length!==0&&G.current?.show({event:v,contextMenu:{items:o}})},Xe=(r,v)=>{v.preventDefault(),A(null),G.current?.show({event:v,contextMenu:{items:[{label:X(m.restorePanel,y),action:()=>z(r)},{label:X(m.maximizePanel,y),action:()=>B(r)},{separator:!0},{label:X(m.closePanel,y),action:()=>$(r)}]}})};(0,F.useEffect)(()=>{let r=Object.keys(a.panels);for(let v of Array.from(Be.keys()))r.includes(v)||Be.delete(v)},[a.panels]),(0,F.useEffect)(()=>{let r=()=>{a.draggedPanelId!==null&&(p(null),j(null),Me(null))};return window.addEventListener("blur",r),()=>{window.removeEventListener("blur",r)}},[a.draggedPanelId]);let Se=(0,F.useRef)(null),[he,qe]=(0,F.useState)({width:1024,height:768});(0,F.useEffect)(()=>{let r=Se.current;if(!r)return;let v=new ResizeObserver(g=>{if(!g||g.length===0)return;let e=g[0].contentRect;qe({width:Math.max(100,e.width),height:Math.max(100,e.height)})});return v.observe(r),()=>{v.disconnect()}},[]),(0,F.useEffect)(()=>{let r=Se.current;if(!r)return;let v=()=>{let n=kt(r);d(n?"rtl":"ltr")};v();let g=new MutationObserver(v);g.observe(document.documentElement,{attributes:!0,attributeFilter:["dir"]}),g.observe(document.body,{attributes:!0,attributeFilter:["dir"]});let e=r.closest("[dir]");return e&&e!==document.documentElement&&e!==document.body&&g.observe(e,{attributes:!0,attributeFilter:["dir"]}),()=>{g.disconnect()}},[d]),(0,F.useEffect)(()=>{let r=he.width,v=he.height;a.floating.forEach(g=>{let e=typeof g.width=="string"?parseFloat(g.width):g.width,n=typeof g.height=="string"?parseFloat(g.height):g.height,o=typeof g.x=="string"?parseFloat(g.x):g.x,s=typeof g.y=="string"?parseFloat(g.y):g.y,u=e,c=n,w=o,h=s,M=!1;u>r&&(u=Math.max(200,r-20),M=!0),c>v&&(c=Math.max(150,v-40),M=!0);let T=10;if(g.stickyRight)w=r-u-T,M=!0;else{let _=r-100;w>_&&(w=Math.max(0,_),M=!0)}if(g.stickyBottom)h=v-c-T,M=!0;else{let _=v-40;h>_&&(h=Math.max(0,_),M=!0)}M&&R(g.id,{x:w,y:h,width:u,height:c})})},[he,a.floating,R]),(0,F.useEffect)(()=>{let r=v=>{if(v.button!==0)return;let g=v.target;if(!g)return;let e=g.closest(".floating-window");if(e){let o=e.getAttribute("data-window-id");o&&(O(o),k(o));return}let n=g.closest(".workspace-panel");if(n){let o=n.getAttribute("data-active-panel-id");o&&O(o)}};return document.addEventListener("mousedown",r),()=>{document.removeEventListener("mousedown",r)}},[k,O]);let Ke=(r,v)=>{let g=a.floating.find(T=>T.id===r);if(!g||g.maximized)return;k(r);let e=v.clientX,n=v.clientY,s=v.currentTarget.closest(".floating-window"),u=s?s.offsetLeft:0,c=s?s.offsetTop:0,w=!1,h=T=>{let _=T.clientX-e,U=T.clientY-n;if(!w&&(Math.abs(_)>5||Math.abs(U)>5)&&(w=!0,p(r)),w){let Y=u+_,K=c+U;R(r,{x:Y,y:K,stickyRight:!1,stickyBottom:!1})}},M=()=>{if(w){let T=Q.current,_=be.current,U=ee.current;if(U)S(r,U);else if(_){let Y=_.index;_.side==="right"&&(Y+=1),C(r,_.leafId,Y)}else T&&E(r,T.leafId,T.position);p(null),j(null),Q.current=null,Me(null),be.current=null,te(null)}window.removeEventListener("mousemove",h),window.removeEventListener("mouseup",M)};window.addEventListener("mousemove",h),window.addEventListener("mouseup",M)},je=(r,v)=>{v.stopPropagation();let g=a.floating.find(M=>M.id===r);if(!g||g.maximized)return;k(r);let e=v.clientX,n=v.clientY,s=v.currentTarget.closest(".floating-window"),u=s?s.offsetWidth:400,c=s?s.offsetHeight:300,w=M=>{let T=M.clientX-e,_=M.clientY-n,U=Math.max(200,u+T),Y=Math.max(150,c+_),K=g.x,Re=g.y,We=he.width,Oe=he.height,lt=typeof g.x=="string"?parseFloat(g.x):g.x,dt=typeof g.y=="string"?parseFloat(g.y):g.y,Ve=typeof g.width=="string"?parseFloat(g.width):g.width,Ze=typeof g.height=="string"?parseFloat(g.height):g.height,Fe=Math.abs(lt+Ve-We)<4,yt=Math.abs(dt+Ze-Oe)<4;Fe&&(K=We-U,K<0&&(K=0,U=We)),yt&&(Re=Oe-Y,Re<0&&(Re=0,Y=Oe)),R(r,{x:K,y:Re,width:U,height:Y,stickyRight:Fe,stickyBottom:yt})},h=()=>{window.removeEventListener("mousemove",w),window.removeEventListener("mouseup",h)};window.addEventListener("mousemove",w),window.addEventListener("mouseup",h)},Ne=r=>{if(N.current){let v=r==="left"?-150:150;N.current.scrollBy({left:v,behavior:"smooth"})}},[Ue,Je]=(0,F.useState)("dark");return(0,F.useEffect)(()=>{let r=()=>{let g=document.documentElement.getAttribute("data-color-scheme")==="light"?"light":"dark";Je(g)};r();let v=new MutationObserver(r);return v.observe(document.documentElement,{attributes:!0,attributeFilter:["data-color-scheme"]}),()=>v.disconnect()},[]),(0,l.jsxs)("div",{"data-workspace-skin":i,"data-color-scheme":Ue,style:{display:"flex",flexDirection:"column",width:"100%",height:"100%",overflow:"hidden",userSelect:"none"},dir:a.dir,children:[(0,l.jsxs)("div",{ref:Se,className:a.draggedPanelId?"dragging-active":void 0,style:{flexGrow:1,width:"100%",position:"relative",overflow:"hidden"},children:[a.draggedPanelId!==null&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("div",{className:"workspace-edge-trigger edge-trigger-left",onMouseEnter:()=>te("left"),onMouseLeave:()=>te(null)}),(0,l.jsx)("div",{className:"workspace-edge-trigger edge-trigger-right",onMouseEnter:()=>te("right"),onMouseLeave:()=>te(null)}),(0,l.jsx)("div",{className:"workspace-edge-trigger edge-trigger-top",onMouseEnter:()=>te("top"),onMouseLeave:()=>te(null)}),(0,l.jsx)("div",{className:"workspace-edge-trigger edge-trigger-bottom",onMouseEnter:()=>te("bottom"),onMouseLeave:()=>te(null)})]}),a.draggedPanelId!==null&&V!==null&&(0,l.jsx)("div",{className:`workspace-edge-preview edge-preview-${V}`}),(0,l.jsx)("div",{style:{width:"100%",height:"100%",overflow:"hidden",position:"relative"},children:a.gridRoot?(0,l.jsx)(Ot,{node:a.gridRoot,path:[],onTabRightClick:Ye,activeDropZone:de,onHoverDropZone:_e,onTabDragStart:Ge,hoveredTab:He,onTabHover:$e,defaultPanelIcon:t,onRequestClosePanel:$}):(0,l.jsx)("div",{className:"empty-workspace-grid",children:"Grid Empty"})}),a.floating.map(r=>{let v=a.panels[r.id];if(!v)return null;let g=r.maximized,e=a.draggedPanelId===r.id,n=a.activePanelId===r.id,s=f.get(v.component)?.defaultOptions;return(0,l.jsxs)("div",{"data-window-id":r.id,dir:a.dir,onMouseDownCapture:()=>{O(r.id),k(r.id)},className:`floating-window ${g?"maximized":""} ${n?"v2-window-focused":""} ${W??""}`,style:{position:"absolute",left:g?0:typeof r.x=="number"?`${r.x}px`:r.x,top:g?0:typeof r.y=="number"?`${r.y}px`:r.y,width:g?"100%":typeof r.width=="number"?`${r.width}px`:r.width,height:g?"100%":typeof r.height=="number"?`${r.height}px`:r.height,zIndex:r.z,pointerEvents:e?"none":"auto"},children:[(0,l.jsxs)("div",{onDoubleClick:()=>B(r.id),onMouseDown:u=>{s?.canDrag!==!1&&Ke(r.id,u)},className:"floating-window-titlebar cursor-move",style:{cursor:g||s?.canDrag===!1?"default":"move"},children:[(0,l.jsxs)("span",{className:"floating-window-title",children:[(0,l.jsx)("span",{className:"window-title-icon",children:s?.icon||t||ht}),(0,l.jsxs)("span",{children:[X(v.title,y),v.dirty?" *":""]})]}),(0,l.jsxs)("div",{className:"fw-titlebar-actions",style:{gap:"var(--header-button-gap, 4px)"},onMouseDown:u=>u.stopPropagation(),children:[s?.renderHeaderActions&&(0,l.jsx)("div",{className:"window-header-actions",children:s.renderHeaderActions(r.id)}),s?.canDrag!==!1&&(0,l.jsx)("button",{type:"button",title:X(m.windowAnchoringOptions,y),onClick:u=>{let c=!!r.stickyRight,w=!!r.stickyBottom;G.current?.show({event:u,contextMenu:{items:[{label:X(m.anchorToRightEdge,y),checkbox:{active:!0,enabled:!0,value:c},action:()=>{let h=he.width,M=typeof r.width=="string"?parseFloat(r.width):r.width;c?R(r.id,{stickyRight:!1}):R(r.id,{x:h-M-10,stickyRight:!0})}},{label:X(m.anchorToBottomEdge,y),checkbox:{active:!0,enabled:!0,value:w},action:()=>{let h=he.height,M=typeof r.height=="string"?parseFloat(r.height):r.height;w?R(r.id,{stickyBottom:!1}):R(r.id,{y:h-M-10,stickyBottom:!0})}}]}})},className:"custom-tab-btn btn-anchor-tab",children:(0,l.jsxs)("svg",{className:`anchor-icon ${r.stickyRight&&r.stickyBottom?"anchor-sticky-both":r.stickyRight?"anchor-sticky-right":r.stickyBottom?"anchor-sticky-bottom":""}`,width:"11",height:"11",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:[(0,l.jsx)("circle",{cx:"12",cy:"5",r:"2"}),(0,l.jsx)("path",{d:"M12 7v7m0 0a4 4 0 0 1-4-4M12 14a4 4 0 0 0 4-4M5 18h14"})]})}),(0,l.jsx)("button",{type:"button",title:g?X(m.restoreSize,y):X(m.maximize,y),onClick:()=>B(r.id),className:"custom-tab-btn btn-maximize-tab",children:(0,l.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,l.jsx)("rect",{x:"4",y:"4",width:"16",height:"16",rx:"1.5"})})}),s?.canMinimize!==!1&&(0,l.jsx)("button",{type:"button",title:X(m.minimize,y),onClick:()=>I(r.id),className:"custom-tab-btn btn-minimize-tab",children:(0,l.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"3",children:(0,l.jsx)("path",{d:"M5 12h14"})})}),s?.canClose!==!1&&(0,l.jsx)("button",{type:"button",title:X(m.close,y),onClick:()=>$(r.id),className:"custom-tab-btn btn-close-tab",children:(0,l.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"3",children:(0,l.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]})]}),(0,l.jsx)("div",{className:P??void 0,style:{flexGrow:1,width:"100%",overflow:"hidden",position:"relative",isolation:"isolate"},children:(0,l.jsx)(Wt,{panelId:r.id},r.id)}),!g&&(0,l.jsx)("div",{onMouseDown:u=>je(r.id,u),style:{position:"absolute",right:0,bottom:0,width:"14px",height:"14px",cursor:"se-resize",zIndex:30,background:"linear-gradient(135deg, transparent 50%, rgba(255,255,255,0.2) 50%)"}})]},r.id)})]}),a.minimized.length>0&&(0,l.jsxs)("div",{className:"taskbar-footer-container",style:{height:"48px",zIndex:100},children:[(0,l.jsx)("button",{type:"button",onClick:()=>Ne("left"),className:"taskbar-nav-btn",style:{display:a.minimized.length>4?"block":"none"},children:"\u25C0"}),(0,l.jsx)("div",{ref:N,className:"taskbar-items-container",style:{scrollSnapType:"x mandatory"},children:a.minimized.map(r=>{let g=f.get(r.component)?.defaultOptions?.icon||t||ht;return(0,l.jsx)("div",{onClick:()=>{A(null),z(r.id)},onContextMenu:e=>Xe(r.id,e),onMouseEnter:e=>{if(ae)return;q.current&&clearTimeout(q.current);let n=e.currentTarget.getBoundingClientRect();e.clientX>=n.left&&e.clientX<=n.right&&e.clientY>=n.top&&e.clientY<=n.bottom&&A({id:r.id,rect:n,title:r.title,component:r.component})},onMouseLeave:()=>{q.current=setTimeout(()=>{A(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,l.jsx)("span",{className:"taskbar-item-icon",children:g})},r.id)})}),L&&(0,mt.createPortal)((0,l.jsxs)("div",{className:"taskbar-item-tooltip",dir:a.dir,style:{position:"fixed",left:`${L.rect.left+L.rect.width/2}px`,top:`${L.rect.top-8}px`,transform:"translateX(-50%) translateY(-100%)",opacity:1,pointerEvents:"auto",zIndex:999999},onMouseEnter:()=>{q.current&&clearTimeout(q.current)},onMouseLeave:()=>{A(null)},onClick:()=>{z(L.id),A(null)},children:[(0,l.jsxs)("div",{className:"tooltip-header-row",children:[(0,l.jsxs)("span",{className:"tooltip-title-text text-truncate",style:{maxWidth:"140px"},children:[X(L.title,y),a.panels[L.id]?.dirty?" *":""]}),(0,l.jsx)("span",{onClick:r=>{r.stopPropagation(),$(L.id),A(null)},title:X(m.closePanel,y),className:"tooltip-close-x",children:(0,l.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,l.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),(0,l.jsx)(nn,{panelId:L.id})]}),document.body),(0,l.jsx)("button",{type:"button",onClick:()=>Ne("right"),className:"taskbar-nav-btn",style:{display:a.minimized.length>4?"block":"none"},children:"\u25B6"})]}),Object.keys(a.panels).map(r=>{let v=a.panels[r];if(!v)return null;let g=Lt(r);return(0,mt.createPortal)((0,l.jsx)(on,{panelId:r,children:(0,l.jsx)("div",{style:{width:"100%",height:"100%"},children:tn(r,v.component,f)})}),g,r)}),(0,l.jsx)(Et.JsonContextMenu,{ref:G,id:"workspace-context-menu",theme:"dark",onShow:()=>ue(!0),onHide:()=>ue(!1)}),a.draggedPanelId!==null&&!a.floating.some(r=>r.id===a.draggedPanelId)&&(0,l.jsxs)("div",{className:"drag-ghost-tab",style:{left:ye.x+12,top:ye.y+12,zIndex:1e5},children:["\u{1F4C4} ",X(a.panels[a.draggedPanelId]?.title,y)||"Tab"]})]})},Ft=an;var at=class{registry;initialState;config;_actions=null;_pendingCalls=[];_disconnectedWarnTimer=null;constructor(t={}){if(this.registry=new ke,this.initialState=t.initialState??null,this.config={formatMessage:t.formatMessage,predefinedMessages:t.predefinedMessages,dir:t.dir},t.panels)for(let[a,f]of Object.entries(t.panels))this.registry.register(a,f.component,f.defaultOptions)}_connect(t){this._actions=t,this._disconnectedWarnTimer!==null&&(clearTimeout(this._disconnectedWarnTimer),this._disconnectedWarnTimer=null);let a=this._pendingCalls.splice(0);for(let f of a)f(t)}_disconnect(){this._actions=null}get isConnected(){return this._actions!==null}_dispatch(t){this._actions?t(this._actions):(this._pendingCalls.push(t),process.env.NODE_ENV!=="production"&&this._disconnectedWarnTimer===null&&(this._disconnectedWarnTimer=setTimeout(()=>{!this.isConnected&&this._pendingCalls.length>0&&console.warn("[react-dockable-desktop] WorkspaceClient has queued calls but was never connected to a provider. Did you forget client={workspace} on <WindowManagerProvider client={workspace}>?")},1e3)))}openPanel(...t){this._dispatch(a=>a.openPanel(...t))}closePanel(t){this._dispatch(a=>a.closePanel(t))}minimizePanel(t){this._dispatch(a=>a.minimizePanel(t))}restorePanel(t){this._dispatch(a=>a.restorePanel(t))}floatPanel(...t){this._dispatch(a=>a.floatPanel(...t))}dockPanel(...t){this._dispatch(a=>a.dockPanel(...t))}maximizePanel(t){this._dispatch(a=>a.maximizePanel(t))}focusPanel(t){this._dispatch(a=>a.focusPanel(t))}isOpen(t){return this._actions?.isOpen(t)??!1}getOpenPanelIds(){return this._actions?.getOpenPanelIds()??[]}saveLayout(){return this._actions?.saveLayout()??""}loadLayout(t){this._dispatch(a=>a.loadLayout(t))}setDirection(t){this._dispatch(a=>a.setDirection(t))}publish(t,a){this._dispatch(f=>f.publish(t,a))}subscribe(t,a){return this._actions?.subscribe(t,a)??(()=>{})}};var re=require("react");var ne=require("react/jsx-runtime"),rn=({modal:i,index:t,isTopmost:a})=>{let{close:f,openModal:z,updateInstance:I,setDirty:H}=we(),B=le(),R=ce(),{dir:k}=fe(),{modalClass:D,modalBodyClass:p}=Pe(),E=(0,re.useRef)(null),{id:C,Component:S,props:O,options:d,dirty:x,dirtyOptions:y}=i,m=d,[$,W]=(0,re.useState)(m.icon||null),P=(0,re.useRef)(m);P.current=m;let N=X(m.title,B),G=(0,re.useCallback)(async V=>{if(V?.force){f(C);return}if(E.current){if(!await E.current())return;f(C);return}if(x){z(xe,{title:y?.title||R.unsavedChangesTitle,message:y?.message||{id:R.unsavedChangesMessage.id,defaultMessage:R.unsavedChangesMessage.defaultMessage,values:{title:N}},alert:y?.alert,alertType:y?.alertType||"danger",useYesNoTitles:!0,onOK:()=>f(C)},{size:"small"});return}f(C)},[f,z,C,x,y,N,R]),L=(0,re.useCallback)((V,ge)=>H(C,V,ge),[H,C]),A=(0,re.useCallback)(V=>I(C,{options:{...P.current,title:V}}),[I,C]),q=(0,re.useCallback)(V=>W(V),[]),ae=(0,re.useCallback)(V=>(E.current=V,()=>{E.current=null}),[]),ue=(0,re.useMemo)(()=>({requestClose:G,setDirty:L,setTitle:A,setIcon:q,onCloseRequested:ae,containerType:"modal",instanceId:C}),[G,L,A,q,ae,C]),de=x?`${N} *`:N,j=m.size?`v2-modal-size-${m.size}`:"v2-modal-size-auto",Q=m.closable!==!1;(0,re.useEffect)(()=>{if(!a||!Q)return;let V=ge=>{ge.key==="Escape"&&(ge.stopPropagation(),G())};return document.addEventListener("keydown",V),()=>document.removeEventListener("keydown",V)},[G,Q,a]);let me=1e4+t*10;return(0,ne.jsxs)("div",{className:"v2-modal-overlay",style:{zIndex:me},dir:k,children:[(0,ne.jsx)("div",{className:"v2-modal-curtain",onClick:Q?()=>G():void 0}),(0,ne.jsxs)("div",{className:`v2-modal-window ${j} ${D??""}`,children:[(0,ne.jsxs)("div",{className:"v2-modal-header",children:[$&&(0,ne.jsx)("div",{className:"v2-modal-icon",children:$}),(0,ne.jsx)("h4",{className:"v2-modal-title",children:de}),Q&&(0,ne.jsx)("button",{className:"v2-modal-close-button",onClick:()=>G(),title:B(R.closeTooltip),type:"button",children:(0,ne.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,ne.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),(0,ne.jsx)("div",{className:`v2-modal-body ${p??""}`,children:(0,ne.jsx)(Ce,{value:ue,children:(0,ne.jsx)(S,{...O,panelId:C})})})]})]})},ln=()=>{let{modals:i}=ve();return i.length===0?null:(0,ne.jsx)(ne.Fragment,{children:i.map((t,a)=>(0,ne.jsx)(rn,{modal:t,index:a,isTopmost:a===i.length-1},t.id))})},Dt=ln;var oe=require("react");var Z=require("react/jsx-runtime"),rt=({panel:i,position:t,defaultWidth:a})=>{let{close:f,openModal:z,updateInstance:I,setDirty:H,registerCloseHandler:B,unregisterCloseHandler:R}=we(),{modals:k}=ve(),D=le(),p=ce(),{dir:E}=fe(),{sidePanelClass:C,sidePanelBodyClass:S}=Pe(),O=(0,oe.useRef)(null),{id:d,Component:x,props:y,options:m,dirty:$,dirtyOptions:W}=i,P=m,[N,G]=(0,oe.useState)(P.icon||null),L=(0,oe.useRef)(P);L.current=P;let A=X(P.title,D),q=(0,oe.useCallback)(async ee=>{if(ee?.force){f(d);return}if(O.current){if(!await O.current())return;f(d);return}if($){z(xe,{title:W?.title||p.unsavedChangesTitle,message:W?.message||{id:p.unsavedChangesMessage.id,defaultMessage:p.unsavedChangesMessage.defaultMessage,values:{title:A}},alert:W?.alert,alertType:W?.alertType||"danger",useYesNoTitles:!0,onOK:()=>f(d)},{size:"small"});return}f(d)},[f,z,d,$,W,A,p]),ae=(0,oe.useCallback)(async()=>O.current?await O.current():!$,[$]);(0,oe.useEffect)(()=>(B(d,ae),()=>R(d)),[d,ae,B,R]);let ue=(0,oe.useCallback)((ee,te)=>H(d,ee,te),[H,d]),de=(0,oe.useCallback)(ee=>I(d,{options:{...L.current,title:ee}}),[I,d]),j=(0,oe.useCallback)(ee=>G(ee),[]),Q=(0,oe.useCallback)(ee=>(O.current=ee,()=>{O.current=null}),[]),ye=(0,oe.useMemo)(()=>({requestClose:q,setDirty:ue,setTitle:de,setIcon:j,onCloseRequested:Q,containerType:t==="left"?"left-panel":"right-panel",instanceId:d}),[q,ue,de,j,Q,t,d]),me=$?`${A} *`:A;(0,oe.useEffect)(()=>{let ee=te=>{te.key==="Escape"&&k.length===0&&q()};return document.addEventListener("keydown",ee),()=>document.removeEventListener("keydown",ee)},[q,k.length]);let V=P.width||a||400,ge=typeof V=="number"?`${V}px`:V;return(0,Z.jsx)("div",{className:`v2-side-panel v2-side-panel-${t} v2-side-panel-visible ${C??""}`,style:{width:ge},dir:E,children:(0,Z.jsxs)("div",{className:"v2-side-panel-window",children:[(0,Z.jsxs)("div",{className:"v2-side-panel-header",children:[N&&(0,Z.jsx)("div",{className:"v2-side-panel-icon",children:N}),(0,Z.jsx)("h4",{className:"v2-side-panel-title",children:me}),(0,Z.jsx)("button",{className:"v2-side-panel-close-button",onClick:()=>q(),title:D(p.closeTooltip),type:"button",children:(0,Z.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:(0,Z.jsx)("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),(0,Z.jsx)("div",{className:`v2-side-panel-body ${S??""}`,children:(0,Z.jsx)(Ce,{value:ye,children:(0,Z.jsx)(x,{...y,panelId:d})})})]})})},dn=({defaultWidth:i})=>{let{leftPanel:t,rightPanel:a}=ve();return(0,Z.jsxs)(Z.Fragment,{children:[t&&(0,Z.jsx)(rt,{panel:t,position:"left",defaultWidth:i},t.id),a&&(0,Z.jsx)(rt,{panel:a,position:"right",defaultWidth:i},a.id)]})},At=({defaultWidth:i})=>{let{leftPanel:t}=ve();return t?(0,Z.jsx)(rt,{panel:t,position:"left",defaultWidth:i},t.id):null},Bt=({defaultWidth:i})=>{let{rightPanel:t}=ve();return t?(0,Z.jsx)(rt,{panel:t,position:"right",defaultWidth:i},t.id):null},Ht=dn;var ie=require("react");var se=require("react/jsx-runtime"),$t=(0,ie.forwardRef)(function({position:t="right",tabs:a,drawerWidth:f="220px",activeTabId:z,onActiveTabChange:I,children:H},B){let R=z!==void 0,k=le(),D=ce(),[p,E]=(0,ie.useState)(null),C=R?z:p,[S,O]=(0,ie.useState)(()=>{let P=new Set;for(let N of a)N.eagerMount&&P.add(N.id);return P});(0,ie.useEffect)(()=>{let P=a.filter(N=>N.eagerMount&&!S.has(N.id));P.length>0&&O(N=>{let G=new Set(N);for(let L of P)G.add(L.id);return G})},[a]);let d=(0,ie.useRef)(C??null);(0,ie.useEffect)(()=>{d.current=C??null},[C]);let x=(0,ie.useCallback)(P=>{R||E(P),I?.(P)},[R,I]);(0,ie.useImperativeHandle)(B,()=>({openTab:P=>x(P),closeDrawer:()=>x(null),getActiveTab:()=>d.current}),[x]);let y=P=>{x(C===P?null:P)},m=(0,ie.useCallback)(()=>x(null),[x]);(0,ie.useEffect)(()=>{C&&!S.has(C)&&O(P=>{let N=new Set(P);return N.add(C),N})},[C,S]),(0,ie.useEffect)(()=>{C===null&&O(P=>{let N=!1,G=new Set(P);for(let L of P){let A=a.find(q=>q.id===L);A&&!A.eagerMount&&!A.preserveState&&(G.delete(L),N=!0)}return N?G:P})},[C,a]);let $=(0,se.jsx)("div",{className:`sidebar-tabs-strip ${t}`,style:{width:"56px",height:"100%"},children:a.map(P=>{let N=C===P.id;return(0,se.jsx)("button",{type:"button",onClick:()=>y(P.id),className:`sidebar-tab-btn ${N?"active":""}`,title:P.label,"aria-pressed":N,children:P.icon},P.id)})}),W=(0,se.jsx)("div",{className:`sidebar-content-drawer h-100 ${t}`,style:{width:C?f:"0px",minWidth:C?f:"0px",overflow:"hidden",flexShrink:0},children:a.map(P=>{if(!S.has(P.id))return null;let G=C===P.id,L=()=>x(P.id);return(0,se.jsxs)("div",{style:{display:G?"flex":"none",flexDirection:"column",height:"100%",width:"100%"},children:[(0,se.jsxs)("div",{className:"sidebar-drawer-header",children:[(0,se.jsx)("span",{className:"sidebar-header-title",children:P.label}),(0,se.jsx)("button",{type:"button",onClick:m,className:"sidebar-close-btn",title:k(D.closePanelTooltip),"aria-label":k(D.closePanelTooltip),children:(0,se.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[(0,se.jsx)("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),(0,se.jsx)("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})})]}),(0,se.jsx)("div",{className:"sidebar-drawer-body",children:P.renderContent(P.id,m,L)})]},P.id)})});return(0,se.jsxs)(se.Fragment,{children:[t==="left"&&$,t==="left"&&W,H,t==="right"&&W,t==="right"&&$]})});0&&(module.exports={ConfirmationForm,FormContainerContext,FormContainerProvider,LeftPanelRenderer,ModalStackRenderer,PanelProvider,PanelRegistry,PanelRegistryClass,RightPanelRenderer,SidePanelRenderer,Sidebar,WindowManager,WindowManagerProvider,WorkspaceClient,defaultPredefinedMessages,formatLabel,useFormContainer,useFormatMessage,usePanelActions,usePanelContext,usePanelState,usePredefinedMessages,useRegistry,useStyleClasses,useWindowManagerActions,useWindowManagerState});
|
|
2
4
|
//# sourceMappingURL=index.cjs.map
|