react-dockable-desktop 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import Rt,{useState as pe,useRef as me,useEffect as de}from"react";import{createPortal as Mt}from"react-dom";import{createContext as De,useContext as Oe,useState as Ut,useRef as Xe,useMemo as at,useCallback as Y}from"react";var st=class{registry=new Map;register(d,r,h){this.registry.set(d,{Component:r,defaultOptions:h})}get(d){return this.registry.get(d)}getRegisteredIds(){return Array.from(this.registry.keys())}},_=new st;var We={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"}};import{jsx as Fe}from"react/jsx-runtime";var vt=De(null),Pt=De(null),xt=De(null),wt=De(We),Ct=De({}),xe=()=>Oe(Ct),rt=class{listeners={};subscribe(d,r){return this.listeners[d]||(this.listeners[d]=[]),this.listeners[d].push(r),()=>{this.listeners[d]=this.listeners[d].filter(h=>h!==r)}}publish(d,r){this.listeners[d]&&this.listeners[d].forEach(h=>h(r))}},Jt={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"}]},Zt={"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"}},Qt=[{id:"live-preview",x:450,y:200,width:320,height:250,z:1e3}],Vt=({children:i,formatMessage:d,predefinedMessages:r,modalClass:h,modalBodyClass:T,sidePanelClass:w,sidePanelBodyClass:L,windowClass:W,windowBodyClass:b})=>{let[C,y]=Ut({gridRoot:Jt,floating:Qt,minimized:[],panels:Zt,draggedPanelId:null,pendingClose:null}),f=Xe(C);f.current=C;let m=Xe({}),M=at(()=>({...We,...r}),[r]),H=Xe(new rt),v=Xe(1e3),c=Y((e,s)=>H.current.subscribe(e,s),[]),x=Y((e,s)=>{H.current.publish(e,s)},[]),k=Y((e,s)=>{let n=typeof e.x=="string"?parseFloat(e.x):e.x,a=typeof e.y=="string"?parseFloat(e.y):e.y,o=typeof e.width=="string"?parseFloat(e.width):e.width,t=typeof e.height=="string"?parseFloat(e.height):e.height;isNaN(n)&&(n=300),isNaN(a)&&(a=150),isNaN(o)&&(o=450),isNaN(t)&&(t=350);let l=O=>s.some(F=>{let R=typeof F.x=="string"?parseFloat(F.x):F.x,z=typeof F.y=="string"?parseFloat(F.y):F.y;return!F.maximized&&Math.abs(R-O.x)<20&&Math.abs(z-O.y)<20}),g=0;for(;l({x:n,y:a})&&g<10;)n+=30,a+=30,g++;let P=Math.max(100,window.innerWidth||1024),N=Math.max(100,window.innerHeight||768);return(n+o>P||a+t>N)&&(n=100+g%5*30,a=100+g%5*30),n=Math.max(0,Math.min(n,P-100)),a=Math.max(0,Math.min(a,N-40)),{x:n,y:a,width:o,height:t}},[]),E=Y(e=>{v.current+=1;let s=v.current;y(n=>{let a=n.panels[e];if(!a)return n;if(a.state==="floating")return{...n,floating:n.floating.map(o=>o.id===e?{...o,z:s}:o)};if(a.state==="docked"){let o=t=>t.type==="leaf"?t.panels.includes(e)?{...t,activePanelId:e}:t:{...t,children:t.children.map(o)};return{...n,gridRoot:o(n.gridRoot)}}return n})},[]),p=(e,s)=>{if(e.type==="leaf"){let n=e.panels.indexOf(s);if(n===-1)return e;let a=e.panels.filter(l=>l!==s),o=e.activePanelId===s?a[n]||a[n-1]||a[0]||null:e.activePanelId,t={...e,panels:a,activePanelId:o};return a.length===0&&!e.keepOnEmpty?null:t}else{let n=e.children.map(t=>p(t,s)).filter(t=>t!==null);if(n.length===0)return null;if(n.length===1)return n[0];let a=e.sizes.slice(0,n.length),o=a.reduce((t,l)=>t+l,0);return{...e,children:n,sizes:a.map(t=>t/o)}}},I=(e,s,n)=>{if(e.type==="leaf"){if(e.id===s){let a=e.panels.includes(n)?e.panels:[...e.panels,n];return{...e,panels:a,activePanelId:n}}return e}else return{...e,children:e.children.map(a=>I(a,s,n))}},S=e=>{if(e.type==="leaf")return e.id;for(let s of e.children){let n=S(s);if(n)return n}return null},D=Y((e,s,n)=>{y(a=>{let o=a.panels[e],t=_.get(s),l=n?.title||n?.title||t?.defaultOptions?.title||e,g=n?.initialTarget||t?.defaultOptions?.initialTarget||"docked",P=t?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350};if(o)if(o.state==="minimized"){let R=a.minimized.filter(z=>z.id!==e);if(g==="floating"||!a.gridRoot){v.current+=1;let z=k(P,a.floating);return{...a,minimized:R,floating:[...a.floating,{...z,id:e,z:v.current}],panels:{...a.panels,[e]:{...o,state:"floating"}}}}else{let z=S(a.gridRoot)||"group-left-top";return{...a,minimized:R,gridRoot:I(a.gridRoot,z,e),panels:{...a.panels,[e]:{...o,state:"docked"}}}}}else{if(o.state==="floating")return E(e),a;{let R=z=>z.type==="leaf"?z.panels.includes(e)?{...z,activePanelId:e}:z:{...z,children:z.children.map(R)};return{...a,gridRoot:R(a.gridRoot)}}}let O={id:e,title:l,component:s,state:g==="tabbed"?"docked":g},F={...a.panels,[e]:O};if(g==="floating"){v.current+=1;let R=k(P,a.floating),z=n?.stickyRight??t?.defaultOptions?.defaultStickyRight??!1,K=n?.stickyBottom??t?.defaultOptions?.defaultStickyBottom??!1,j=Math.max(100,window.innerWidth||1024),U=Math.max(100,window.innerHeight||768),Z=typeof R.width=="string"?parseFloat(R.width):R.width,re=typeof R.height=="string"?parseFloat(R.height):R.height,le=R.x,be=R.y,ke=10;return z&&(le=j-Z-ke),K&&(be=U-re-ke),{...a,floating:[...a.floating,{...R,id:e,z:v.current,x:le,y:be,stickyRight:z,stickyBottom:K}],panels:F}}else{let R=S(a.gridRoot)||"group-left-top";return{...a,gridRoot:I(a.gridRoot,R,e),panels:F}}})},[k,E]),A=Y(e=>{y(s=>{let n=s.panels[e];if(!n||_.get(n.component)?.defaultOptions?.canClose===!1)return s;delete m.current[e];let o={...s.panels};delete o[e];let t=p(s.gridRoot,e);return{...s,gridRoot:t||{type:"leaf",id:"group-default",panels:[],activePanelId:null},floating:s.floating.filter(l=>l.id!==e),minimized:s.minimized.filter(l=>l.id!==e),panels:o}})},[]),X=Y((e,s)=>{m.current[e]=s},[]),ie=Y(e=>{delete m.current[e]},[]),J=Y((e,s)=>{y(n=>{let a=n.panels[e];return a?{...n,panels:{...n.panels,[e]:{...a,dirty:s}}}:n})},[]),V=Y((e,s)=>{y(n=>{let a=n.panels[e];return a?{...n,panels:{...n.panels,[e]:{...a,title:s}}}:n})},[]),te=Y(e=>{y(s=>s.pendingClose?(s.pendingClose.resolve(e),{...s,pendingClose:null}):s)},[]),ee=Y(async(e,s)=>{if(s?.force){A(e);return}let n=m.current[e];n&&!await n()||f.current.panels[e]?.dirty&&!await new Promise(t=>{y(l=>({...l,pendingClose:{id:e,resolve:t}}))})||A(e)},[A]),se=Y(e=>{y(s=>{let n=s.panels[e];if(!n||n.state==="minimized"||_.get(n.component)?.defaultOptions?.canMinimize===!1)return s;let o,t;if(n.state==="floating"){let g=s.floating.find(P=>P.id===e);g&&(o={x:g.x,y:g.y,width:g.width,height:g.height,stickyRight:g.stickyRight,stickyBottom:g.stickyBottom})}else if(n.state==="docked"){let g=P=>{if(P.type==="leaf")return P.panels.includes(e)?P.id:null;for(let N of P.children){let O=g(N);if(O)return O}return null};t=g(s.gridRoot)}let l=p(s.gridRoot,e);return{...s,gridRoot:l||{type:"leaf",id:"group-default",panels:[],activePanelId:null},floating:s.floating.filter(g=>g.id!==e),minimized:[...s.minimized,{id:e,title:n.title,component:n.component}],panels:{...s.panels,[e]:{...n,state:"minimized",previousState:n.state,lastFloatingRect:o,lastLeafId:t}}}})},[]),he=Y(e=>{y(s=>{let n=s.panels[e];if(!n||n.state!=="minimized")return s;let a=s.minimized.filter(t=>t.id!==e);if((n.previousState||"docked")==="floating"){v.current+=1;let t=_.get(n.component),l=n.lastFloatingRect||t?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350},g=k(l,s.floating);return{...s,minimized:a,floating:[...s.floating,{...g,id:e,z:v.current,stickyRight:!!n.lastFloatingRect?.stickyRight,stickyBottom:!!n.lastFloatingRect?.stickyBottom}],panels:{...s.panels,[e]:{...n,state:"floating"}}}}else{let t=(N,O)=>N.type==="leaf"?N.id===O:N.children.some(F=>t(F,O)),l=n.lastLeafId&&t(s.gridRoot,n.lastLeafId),g=_.get(n.component),P=g?.defaultOptions?.canDrag!==!1;if(l)return{...s,minimized:a,gridRoot:I(s.gridRoot,n.lastLeafId,e),panels:{...s.panels,[e]:{...n,state:"docked"}}};if(P){v.current+=1;let N=n.lastFloatingRect||g?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350},O=k(N,s.floating);return{...s,minimized:a,floating:[...s.floating,{...O,id:e,z:v.current,stickyRight:!!n.lastFloatingRect?.stickyRight,stickyBottom:!!n.lastFloatingRect?.stickyBottom}],panels:{...s.panels,[e]:{...n,state:"floating"}}}}else{let N=S(s.gridRoot)||"group-left-top";return{...s,minimized:a,gridRoot:I(s.gridRoot,N,e),panels:{...s.panels,[e]:{...n,state:"docked"}}}}}})},[k]),ue=Y((e,s)=>{y(n=>{let a=n.panels[e];if(!a||_.get(a.component)?.defaultOptions?.canDrag===!1)return n;let t=_.get(a.component),l=s||t?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350},g=p(n.gridRoot,e);v.current+=1;let P=k(l,n.floating);return{...n,gridRoot:g||{type:"leaf",id:"group-default",panels:[],activePanelId:null},floating:[...n.floating,{...P,id:e,z:v.current}],panels:{...n.panels,[e]:{...a,state:"floating"}}}})},[k]),ae=Y((e,s)=>{y(n=>{let a=n.panels[e];if(!a)return n;let o=n.floating.filter(g=>g.id!==e),t=p(n.gridRoot,e),l=s||S(t||n.gridRoot)||"group-left-top";return{...n,gridRoot:I(t||n.gridRoot,l,e),floating:o,panels:{...n.panels,[e]:{...a,state:"docked"}}}})},[]),ge=(e,s,n,a)=>{if(e.type==="leaf"){if(e.id===s){let o={type:"leaf",id:`group-split-${Date.now()}-${Math.floor(Math.random()*1e3)}`,panels:[n],activePanelId:n};return{type:"branch",orientation:a==="left"||a==="right"?"horizontal":"vertical",sizes:[.5,.5],children:a==="left"||a==="top"?[o,e]:[e,o]}}return e}else return{...e,children:e.children.map(o=>ge(o,s,n,a))}},Q=Y(e=>{y(s=>({...s,draggedPanelId:e}))},[]),fe=Y((e,s,n)=>{y(a=>{let o=a.panels[e];if(!o)return a;let t=a.floating.filter(P=>P.id!==e),l=p(a.gridRoot,e),g;return n==="center"?g=I(l||a.gridRoot,s,e):g=ge(l||a.gridRoot,s,e,n),{...a,gridRoot:g,floating:t,panels:{...a.panels,[e]:{...o,state:"docked"}},draggedPanelId:null}})},[]),q=Y((e,s)=>{y(n=>{let a=n.panels[e];if(!a)return n;let o=n.floating.filter(O=>O.id!==e),t=p(n.gridRoot,e),l={type:"leaf",id:`group-edge-${Date.now()}-${Math.floor(Math.random()*1e3)}`,panels:[e],activePanelId:e},g=s==="left"||s==="right"?"horizontal":"vertical",P=s==="left"||s==="top"?[l,t||n.gridRoot]:[t||n.gridRoot,l];return{...n,gridRoot:{type:"branch",orientation:g,sizes:s==="left"||s==="top"?[.3,.7]:[.7,.3],children:P},floating:o,panels:{...n.panels,[e]:{...a,state:"docked"}},draggedPanelId:null}})},[]),$=Y((e,s,n)=>{y(a=>{let o=a.panels[e];if(!o)return a;let t=p(a.gridRoot,e),l=N=>{if(N.type==="leaf"){if(N.id===s){let O=N.panels.filter(z=>z!==e),F=Math.max(0,Math.min(n,O.length)),R=[...O];return R.splice(F,0,e),{...N,panels:R,activePanelId:e}}return N}else return{...N,children:N.children.map(l)}},g=l(t||a.gridRoot),P=a.floating.filter(N=>N.id!==e);return{...a,gridRoot:g,floating:P,panels:{...a.panels,[e]:{...o,state:"docked"}},draggedPanelId:null}})},[]),Pe=Y(e=>{y(s=>{let n=o=>{if(o.type==="leaf")return o.id===e&&o.canClose!==!1?null:o;{let t=o.children.map(P=>n(P)).filter(P=>P!==null);if(t.length===0)return null;if(t.length===1)return t[0];let l=o.sizes.slice(0,t.length),g=l.reduce((P,N)=>P+N,0);return{...o,children:t,sizes:l.map(P=>P/g)}}},a=n(s.gridRoot);return{...s,gridRoot:a||{type:"leaf",id:"group-default",panels:[],activePanelId:null}}})},[]),Ae=Y(e=>{y(s=>({...s,floating:s.floating.map(n=>n.id===e?{...n,maximized:!n.maximized}:n)}))},[]),$e=Y((e,s)=>{let n=(a,o)=>{if(a.type==="leaf")return a;if(o===e.length)return{...a,sizes:s};let t=e[o],l=a.children.map((g,P)=>P===t?n(g,o+1):g);return{...a,children:l}};y(a=>({...a,gridRoot:n(a.gridRoot,0)}))},[]),Ge=Y((e,s)=>{y(n=>({...n,floating:n.floating.map(a=>a.id===e?{...a,...s}:a)}))},[]),Ye=Y(()=>JSON.stringify({gridRoot:C.gridRoot,floating:C.floating,minimized:C.minimized,panels:C.panels}),[C]),Ee=Y(e=>{try{let s=JSON.parse(e);s.gridRoot&&s.floating&&s.minimized&&s.panels&&y({gridRoot:s.gridRoot,floating:s.floating,minimized:s.minimized,panels:s.panels,draggedPanelId:null,pendingClose:null})}catch(s){console.error("Failed to parse layout configuration:",s)}},[]),ye=at(()=>({openPanel:D,closePanel:A,minimizePanel:se,restorePanel:he,floatPanel:ue,dockPanel:ae,maximizePanel:Ae,updateSplitSizes:$e,updateFloatingPosition:Ge,bringToFront:E,saveLayout:Ye,loadLayout:Ee,publish:x,subscribe:c,setDraggedPanelId:Q,dockPanelToGroup:fe,movePanelOrder:$,closeLeafGroup:Pe,registerCloseGuard:X,unregisterCloseGuard:ie,setPanelDirty:J,updatePanelTitle:V,requestClosePanel:ee,resolvePendingClose:te,dockPanelToWorkspaceEdge:q}),[D,A,se,he,ue,ae,Ae,$e,Ge,E,Ye,Ee,x,c,Q,fe,$,Pe,X,ie,J,V,ee,te,q]),tt=e=>{let s=e.defaultMessage||e.id;return e.values&&Object.entries(e.values).forEach(([n,a])=>{s=s.replace(`{${n}}`,String(a))}),s},nt=at(()=>({modalClass:h,modalBodyClass:T,sidePanelClass:w,sidePanelBodyClass:L,windowClass:W,windowBodyClass:b}),[h,T,w,L,W,b]);return Fe(Ct.Provider,{value:nt,children:Fe(vt.Provider,{value:C,children:Fe(Pt.Provider,{value:ye,children:Fe(xt.Provider,{value:d||tt,children:Fe(wt.Provider,{value:M,children:i})})})})})},Le=()=>{let i=Oe(vt);if(!i)throw new Error("useWindowManagerState must be used within WindowManagerProvider");return i},Ie=()=>{let i=Oe(Pt);if(!i)throw new Error("useWindowManagerActions must be used within WindowManagerProvider");return i},we=()=>Oe(xt)||(d=>{let r=d.defaultMessage||d.id;return d.values&&Object.entries(d.values).forEach(([h,T])=>{r=r.replace(`{${h}}`,String(T))}),r}),G=(i,d)=>i?typeof i=="string"?i:d(i):"",_t=()=>{let{publish:i,subscribe:d}=Ie();return{publish:i,subscribe:d}},qe=()=>Oe(wt);import{JsonContextMenu as on}from"replace-react-contexify";import"replace-react-contexify/styles.css";import{createContext as en,useContext as tn}from"react";var nn={requestClose:()=>{console.warn("FormContainerContract: requestClose called but no container is present")},setDirty:()=>{},onCloseRequested:()=>()=>{},setTitle:()=>{},setIcon:()=>{},containerType:"standalone",instanceId:"standalone",onClose:()=>()=>{},onMinimize:()=>()=>{},onRestore:()=>()=>{},onResize:()=>()=>{}},lt=en(nn),Ne=lt.Provider,dt=()=>tn(lt);import{Fragment as un,jsx as u,jsxs as B}from"react/jsx-runtime";var Be=new Map,Ke="preserved-dom-container",ct=B("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{display:"block"},children:[u("rect",{x:"3",y:"3",width:"7",height:"9",rx:"1"}),u("rect",{x:"14",y:"3",width:"7",height:"5",rx:"1"}),u("rect",{x:"14",y:"12",width:"7",height:"9",rx:"1"}),u("rect",{x:"3",y:"16",width:"7",height:"5",rx:"1"})]}),kt=i=>{let d=Be.get(i);return d||(d=document.createElement("div"),d.style.width="100%",d.style.height="100%",Be.set(i,d)),d},sn=(i,d)=>{let r=_.get(d);if(!r)return B("div",{className:"w-100 h-100 d-flex flex-column align-items-center justify-content-center bg-transparent text-danger font-monospace p-3 text-center",style:{border:"2px dashed var(--bs-danger, #dc3545)"},children:[u("h6",{className:"fw-bold mb-1",children:"\u26A0\uFE0F Component Unregistered"}),B("span",{className:"small text-muted",children:["Key: ",d]})]});let h=r.Component;return u(h,{panelId:i})},ut=new Map,Te=new Map,je=i=>{let d=Te.get(i);return d||(d={onClose:new Set,onMinimize:new Set,onRestore:new Set,onResize:new Set},Te.set(i,d)),d},It=({panelId:i})=>{let d=me(null);return de(()=>{let r=d.current;if(!r)return;let h=kt(i);r.appendChild(h);let T=new ResizeObserver(w=>{for(let L of w){let{width:W,height:b}=L.contentRect;if(W>0&&b>0){ut.set(i,{width:W,height:b});let C=Te.get(i);C&&C.onResize.forEach(y=>y(W,b))}}});return T.observe(r),()=>{T.disconnect();let w=document.getElementById(Ke);w||(w=document.createElement("div"),w.id=Ke,w.style.display="none",document.body.appendChild(w)),w.appendChild(h)}},[i]),u("div",{ref:d,className:"w-100 h-100"})},an=({panelId:i})=>{let d=Le(),r=me(null),h=d.panels[i],T=h?_.get(h.component):null,w=T?.defaultOptions?.disableLivePreview||!1,[L,W]=pe({width:800,height:500,scale:.25});if(de(()=>{if(w)return;let b=r.current;if(!b)return;let C=Be.get(i);if(!C)return;let y=ut.get(i)||{width:800,height:500},f=y.width,m=y.height,v=Math.min(220/f,140/m);return W({width:f,height:m,scale:v}),b.appendChild(C),()=>{let c=document.getElementById(Ke);c||(c=document.createElement("div"),c.id=Ke,c.style.display="none",document.body.appendChild(c)),c.appendChild(C)}},[i,w]),w){let b=ut.get(i)||{width:800,height:500},f=Math.min(220/b.width,140/b.height),m=b.width*f,M=b.height*f,H=T?.defaultOptions?.icon||u("span",{children:"\u{1F533}"});return B("div",{className:"taskbar-item-preview-frame d-flex flex-column align-items-center justify-content-center text-muted",style:{width:`${m}px`,height:`${M}px`,background:"linear-gradient(135deg, rgba(30, 41, 59, 0.9) 0%, rgba(15, 23, 42, 0.95) 100%)",border:"1px dashed var(--taskbar-item-border, rgba(255, 255, 255, 0.15))"},children:[u("div",{className:"taskbar-preview-placeholder-icon mb-1.5",style:{transform:"scale(1.2)",filter:"drop-shadow(0 0 8px rgba(56, 189, 248, 0.4))"},children:H}),u("div",{style:{fontSize:"9px",fontWeight:500,letterSpacing:"0.5px",opacity:.7,textTransform:"uppercase"},children:"Active Session"})]})}return u("div",{className:"taskbar-item-preview-frame",style:{width:`${L.width*L.scale}px`,height:`${L.height*L.scale}px`},children:u("div",{ref:r,className:"taskbar-item-preview-host",style:{width:`${L.width}px`,height:`${L.height}px`,transform:`scale(${L.scale})`,transformOrigin:"top left",position:"absolute",top:0,left:0}})})},rn=({panelId:i,children:d})=>{let r=Le(),{requestClosePanel:h,setPanelDirty:T,registerCloseGuard:w,unregisterCloseGuard:L,updatePanelTitle:W}=Ie(),b=r.minimized.some(f=>f.id===i),C=me(b);de(()=>{let f=Te.get(i);f&&(b&&!C.current?f.onMinimize.forEach(m=>m()):!b&&C.current&&f.onRestore.forEach(m=>m()),C.current=b)},[b,i]),de(()=>()=>{let f=Te.get(i);f&&(f.onClose.forEach(m=>m()),Te.delete(i))},[i]);let y=Rt.useMemo(()=>({requestClose:f=>h(i,f),setDirty:f=>T(i,f),onCloseRequested:f=>(w(i,f),()=>L(i)),setTitle:f=>W(i,f),instanceId:i,onClose:f=>{let m=je(i);return m.onClose.add(f),()=>m.onClose.delete(f)},onMinimize:f=>{let m=je(i);return m.onMinimize.add(f),()=>m.onMinimize.delete(f)},onRestore:f=>{let m=je(i);return m.onRestore.add(f),()=>m.onRestore.delete(f)},onResize:f=>{let m=je(i);return m.onResize.add(f),()=>m.onResize.delete(f)}}),[i,h,T,w,L,W]);return u(Ne,{value:y,children:d})},Nt=({node:i,path:d,onTabRightClick:r,activeDropZone:h,onHoverDropZone:T,onTabDragStart:w,hoveredTab:L,onTabHover:W,defaultPanelIcon:b})=>{let{updateSplitSizes:C}=Ie();if(i.type==="leaf")return u(ln,{leaf:i,onTabRightClick:r,activeDropZone:h,onHoverDropZone:T,onTabDragStart:w,hoveredTab:L,onTabHover:W,defaultPanelIcon:b});let y=i.orientation==="horizontal",f=(m,M)=>{M.preventDefault();let H=y?M.clientX:M.clientY,v=[...i.sizes],c=M.currentTarget.parentElement,x=c?y?c.clientWidth:c.clientHeight:y?1e3:800,k=p=>{let D=((y?p.clientX:p.clientY)-H)/x,A=[...v];A[m]+=D,A[m+1]-=D,A[m]>.1&&A[m+1]>.1&&C(d,A)},E=()=>{window.removeEventListener("mousemove",k),window.removeEventListener("mouseup",E)};window.addEventListener("mousemove",k),window.addEventListener("mouseup",E)};return u("div",{className:`d-flex w-100 h-100 ${y?"flex-row":"flex-column"}`,style:{overflow:"hidden",position:"relative"},children:i.children.map((m,M)=>{let H=i.sizes[M]*100;return B(Rt.Fragment,{children:[u("div",{style:{flexGrow:i.sizes[M],flexBasis:`${H}%`,overflow:"hidden",position:"relative"},children:u(Nt,{node:m,path:[...d,M],onTabRightClick:r,activeDropZone:h,onHoverDropZone:T,onTabDragStart:w,hoveredTab:L,onTabHover:W,defaultPanelIcon:b})}),M<i.children.length-1&&u("div",{onMouseDown:v=>f(M,v),style:{cursor:y?"col-resize":"row-resize",width:y?"6px":"100%",height:y?"100%":"6px",backgroundColor:"var(--resizer-bg)",zIndex:20,transition:"background-color 0.2s"},className:"resizer-bar hover-highlight"})]},M)})})},ln=({leaf:i,onTabRightClick:d,activeDropZone:r,onHoverDropZone:h,onTabDragStart:T,hoveredTab:w,onTabHover:L,defaultPanelIcon:W})=>{let b=Le(),{requestClosePanel:C,openPanel:y,closeLeafGroup:f}=Ie(),m=we(),M=qe(),{windowClass:H,windowBodyClass:v}=xe(),c=x=>{y(x,b.panels[x].component)};return B("div",{className:`workspace-panel w-100 h-100 d-flex flex-column ${H??""}`,style:{overflow:"hidden",position:"relative"},children:[B("div",{className:"workspace-tab-bar d-flex flex-row justify-content-between align-items-center",style:{minHeight:"38px"},children:[u("div",{className:"d-flex flex-row overflow-x-auto flex-grow-1 tab-headers-container",style:{scrollbarWidth:"none"},onMouseMove:x=>{b.draggedPanelId&&x.target===x.currentTarget&&L(i.id,"EMPTY",i.panels.length,"right")},onMouseLeave:x=>{b.draggedPanelId&&x.target===x.currentTarget&&L(i.id,"",-1,null)},children:i.panels.map((x,k)=>{let E=b.panels[x];if(!E)return null;let p=i.activePanelId===x,S=_.get(E.component)?.defaultOptions,D=w&&w.leafId===i.id&&w.panelId===x,A=k===i.panels.length-1,X=w&&w.leafId===i.id&&w.panelId==="EMPTY"&&A,ie=D?w.side==="left"?"drag-hover-left":"drag-hover-right":X?"drag-hover-right":"";return B("div",{onClick:()=>c(x),onMouseDown:J=>{S?.canDrag!==!1&&T(x,J)},onContextMenu:J=>d(x,J),onMouseMove:J=>{if(b.draggedPanelId){let V=J.currentTarget.getBoundingClientRect(),ee=J.clientX-V.left<V.width/2?"left":"right";L(i.id,x,k,ee)}},onMouseLeave:()=>{b.draggedPanelId&&L(i.id,"",-1,null)},className:`workspace-tab ${p?"active workspace-tab-active":"workspace-tab-inactive"} ${ie}`,style:{cursor:S?.canDrag===!1?"default":"pointer"},children:[B("span",{className:"text-truncate d-flex align-items-center",style:{maxWidth:"120px"},children:[u("span",{className:"workspace-tab-icon",children:S?.icon||W||ct}),B("span",{children:[G(E.title,m),E.dirty?" *":""]})]}),S?.canClose!==!1&&u("span",{onClick:J=>{J.stopPropagation(),C(x)},title:G(M.closeTab,m),className:"close-tab-x ms-auto d-flex align-items-center justify-content-center",style:{width:"18px",height:"18px"},children:u("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:u("path",{d:"M18 6L6 18M6 6l12 12"})})})]},x)})}),i.panels.length===0&&i.keepOnEmpty&&i.canClose!==!1&&u("span",{onClick:()=>f(i.id),className:"close-tab-x d-flex align-items-center justify-content-center me-2 header-close-empty-group",style:{width:"18px",height:"18px",cursor:"pointer"},title:G(M.closeEmptyGroup,m),children:u("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:u("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),B("div",{className:`flex-grow-1 w-100 h-100 bg-transparent ${v??""}`,style:{position:"relative",overflow:"hidden"},children:[i.activePanelId&&b.panels[i.activePanelId]?u(It,{panelId:i.activePanelId},i.activePanelId):u("div",{className:"w-100 h-100 d-flex align-items-center justify-content-center font-monospace text-muted small empty-leaf-placeholder",children:u("span",{children:"Empty Workspace Section"})}),b.draggedPanelId!==null&&u("div",{className:"dock-drop-zone-overlay",children:B("div",{className:"dock-target-cross",children:[u("div",{onMouseEnter:()=>h(i.id,"top"),onMouseLeave:()=>h(i.id,null),className:"dock-target-box dock-target-top",children:"\u25B2"}),u("div",{onMouseEnter:()=>h(i.id,"bottom"),onMouseLeave:()=>h(i.id,null),className:"dock-target-box dock-target-bottom",children:"\u25BC"}),u("div",{onMouseEnter:()=>h(i.id,"left"),onMouseLeave:()=>h(i.id,null),className:"dock-target-box dock-target-left",children:"\u25C0"}),u("div",{onMouseEnter:()=>h(i.id,"right"),onMouseLeave:()=>h(i.id,null),className:"dock-target-box dock-target-right",children:"\u25B6"}),u("div",{onMouseEnter:()=>h(i.id,"center"),onMouseLeave:()=>h(i.id,null),className:"dock-target-box dock-target-center",children:"\u25A3"})]})}),b.draggedPanelId!==null&&r!==null&&r.leafId===i.id&&u("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%"}})]})]})},dn=({skin:i="vscode",defaultPanelIcon:d})=>{let r=Le(),{restorePanel:h,minimizePanel:T,requestClosePanel:w,resolvePendingClose:L,maximizePanel:W,updateFloatingPosition:b,bringToFront:C,floatPanel:y,setDraggedPanelId:f,dockPanelToGroup:m,movePanelOrder:M,dockPanelToWorkspaceEdge:H}=Ie(),v=we(),c=qe(),{windowClass:x,windowBodyClass:k}=xe(),[E,p]=pe([]),I=me(null),S=me(null),[D,A]=pe(null),X=me(null),[ie,J]=pe(!1);de(()=>()=>{X.current&&clearTimeout(X.current)},[]);let[V,te]=pe(null),ee=me(null),[se,he]=pe({x:0,y:0}),[ue,ae]=pe(null),ge=me(null),Q=o=>{ae(o),ge.current=o},[fe,q]=pe(null),$=me(null),Pe=(o,t,l,g)=>{let P=g?{leafId:o,panelId:t,index:l,side:g}:null;q(P),$.current=P},Ae=(o,t)=>{let l=t?{leafId:o,position:t}:null;te(l),ee.current=l},$e=(o,t)=>{if(t.button!==0)return;let l=t.clientX,g=t.clientY,P=!1,N=R=>{let z=R.clientX-l,K=R.clientY-g;!P&&(Math.abs(z)>5||Math.abs(K)>5)&&(P=!0,f(o)),P&&he({x:R.clientX,y:R.clientY})},O=R=>{if(window.removeEventListener("mousemove",N),window.removeEventListener("mouseup",F),P){let z=ee.current,K=$.current,j=ge.current;if(j)H(o,j);else if(K){let U=K.index;K.side==="right"&&(U+=1),M(o,K.leafId,U)}else z?m(o,z.leafId,z.position):y(o,{x:R.clientX-150,y:R.clientY-15,width:450,height:350});f(null),te(null),ee.current=null,q(null),$.current=null,Q(null)}},F=R=>{O(R)};window.addEventListener("mousemove",N),window.addEventListener("mouseup",F)},Ge=(o,t)=>{t.preventDefault();let l=r.panels[o];if(!l)return;let P=_.get(l.component)?.defaultOptions,N=[];P?.canDrag!==!1&&N.push({label:G(c.floatWindow,v),action:()=>y(o)}),P?.canMinimize!==!1&&N.push({label:G(c.minimizePanel,v),action:()=>T(o)}),N.length>0&&P?.canClose!==!1&&N.push({separator:!0}),P?.canClose!==!1&&N.push({label:G(c.closeTab,v),action:()=>w(o)}),N.length!==0&&S.current?.show({event:t,contextMenu:{items:N}})},Ye=(o,t)=>{t.preventDefault(),A(null),S.current?.show({event:t,contextMenu:{items:[{label:G(c.restorePanel,v),action:()=>h(o)},{label:G(c.maximizePanel,v),action:()=>W(o)},{separator:!0},{label:G(c.closePanel,v),action:()=>w(o)}]}})};de(()=>{let o=Object.keys(r.panels);p(o);for(let t of Array.from(Be.keys()))o.includes(t)||Be.delete(t)},[r.panels]),de(()=>{let o=()=>{r.draggedPanelId!==null&&(f(null),te(null),q(null))};return window.addEventListener("blur",o),()=>{window.removeEventListener("blur",o)}},[r.draggedPanelId]);let Ee=me(null),[ye,tt]=pe({width:1024,height:768});de(()=>{let o=Ee.current;if(!o)return;let t=new ResizeObserver(l=>{if(!l||l.length===0)return;let g=l[0].contentRect;tt({width:Math.max(100,g.width),height:Math.max(100,g.height)})});return t.observe(o),()=>{t.disconnect()}},[]),de(()=>{let o=ye.width,t=ye.height;r.floating.forEach(l=>{let g=typeof l.width=="string"?parseFloat(l.width):l.width,P=typeof l.height=="string"?parseFloat(l.height):l.height,N=typeof l.x=="string"?parseFloat(l.x):l.x,O=typeof l.y=="string"?parseFloat(l.y):l.y,F=g,R=P,z=N,K=O,j=!1;F>o&&(F=Math.max(200,o-20),j=!0),R>t&&(R=Math.max(150,t-40),j=!0);let U=10;if(l.stickyRight)z=o-F-U,j=!0;else{let Z=o-100;z>Z&&(z=Math.max(0,Z),j=!0)}if(l.stickyBottom)K=t-R-U,j=!0;else{let Z=t-40;K>Z&&(K=Math.max(0,Z),j=!0)}j&&b(l.id,{x:z,y:K,width:F,height:R})})},[ye,r.floating,b]),de(()=>{let o=t=>{if(t.button!==0)return;let l=t.target;if(!l)return;let g=l.closest(".floating-window");if(!g)return;let P=g.getAttribute("data-window-id");P&&C(P)};return document.addEventListener("mousedown",o),()=>{document.removeEventListener("mousedown",o)}},[C]);let nt=(o,t)=>{let l=r.floating.find(U=>U.id===o);if(!l||l.maximized)return;C(o);let g=t.clientX,P=t.clientY,O=t.currentTarget.closest(".floating-window"),F=O?O.offsetLeft:0,R=O?O.offsetTop:0,z=!1,K=U=>{let Z=U.clientX-g,re=U.clientY-P;if(!z&&(Math.abs(Z)>5||Math.abs(re)>5)&&(z=!0,f(o)),z){let le=F+Z,be=R+re;b(o,{x:le,y:be,stickyRight:!1,stickyBottom:!1})}},j=()=>{if(z){let U=ee.current,Z=$.current,re=ge.current;if(re)H(o,re);else if(Z){let le=Z.index;Z.side==="right"&&(le+=1),M(o,Z.leafId,le)}else U&&m(o,U.leafId,U.position);f(null),te(null),ee.current=null,q(null),$.current=null,Q(null)}window.removeEventListener("mousemove",K),window.removeEventListener("mouseup",j)};window.addEventListener("mousemove",K),window.addEventListener("mouseup",j)},e=(o,t)=>{t.stopPropagation();let l=r.floating.find(j=>j.id===o);if(!l||l.maximized)return;C(o);let g=t.clientX,P=t.clientY,O=t.currentTarget.closest(".floating-window"),F=O?O.offsetWidth:400,R=O?O.offsetHeight:300,z=j=>{let U=j.clientX-g,Z=j.clientY-P,re=Math.max(200,F+U),le=Math.max(150,R+Z),be=l.x,ke=l.y,ot=ye.width,it=ye.height,Xt=typeof l.x=="string"?parseFloat(l.x):l.x,qt=typeof l.y=="string"?parseFloat(l.y):l.y,jt=typeof l.width=="string"?parseFloat(l.width):l.width,Kt=typeof l.height=="string"?parseFloat(l.height):l.height,yt=Math.abs(Xt+jt-ot)<4,bt=Math.abs(qt+Kt-it)<4;yt&&(be=ot-re,be<0&&(be=0,re=ot)),bt&&(ke=it-le,ke<0&&(ke=0,le=it)),b(o,{x:be,y:ke,width:re,height:le,stickyRight:yt,stickyBottom:bt})},K=()=>{window.removeEventListener("mousemove",z),window.removeEventListener("mouseup",K)};window.addEventListener("mousemove",z),window.addEventListener("mouseup",K)},s=o=>{if(I.current){let t=o==="left"?-150:150;I.current.scrollBy({left:t,behavior:"smooth"})}},[n,a]=pe("dark");return de(()=>{let o=()=>{let l=document.documentElement.getAttribute("data-bs-theme")==="light"?"light":"dark";a(l)};o();let t=new MutationObserver(o);return t.observe(document.documentElement,{attributes:!0,attributeFilter:["data-bs-theme"]}),()=>t.disconnect()},[]),B("div",{"data-workspace-skin":i,"data-bs-theme":n,className:"d-flex flex-column w-100 h-100 overflow-hidden",style:{userSelect:"none"},children:[B("div",{ref:Ee,className:`flex-grow-1 w-100 position-relative ${r.draggedPanelId?"dragging-active":""}`,style:{overflow:"hidden"},children:[r.draggedPanelId!==null&&B(un,{children:[u("div",{className:"workspace-edge-trigger edge-trigger-left",onMouseEnter:()=>Q("left"),onMouseLeave:()=>Q(null)}),u("div",{className:"workspace-edge-trigger edge-trigger-right",onMouseEnter:()=>Q("right"),onMouseLeave:()=>Q(null)}),u("div",{className:"workspace-edge-trigger edge-trigger-top",onMouseEnter:()=>Q("top"),onMouseLeave:()=>Q(null)}),u("div",{className:"workspace-edge-trigger edge-trigger-bottom",onMouseEnter:()=>Q("bottom"),onMouseLeave:()=>Q(null)})]}),r.draggedPanelId!==null&&ue!==null&&u("div",{className:`workspace-edge-preview edge-preview-${ue}`}),u("div",{className:"w-100 h-100",style:{overflow:"hidden",position:"relative"},children:r.gridRoot?u(Nt,{node:r.gridRoot,path:[],onTabRightClick:Ge,activeDropZone:V,onHoverDropZone:Ae,onTabDragStart:$e,hoveredTab:fe,onTabHover:Pe,defaultPanelIcon:d}):u("div",{className:"w-100 h-100 d-flex align-items-center justify-content-center text-muted font-monospace small",children:"Grid Empty"})}),(()=>{let o=r.floating.length>0?Math.max(...r.floating.map(t=>t.z)):0;return r.floating.map(t=>{let l=r.panels[t.id];if(!l)return null;let g=t.maximized,P=r.draggedPanelId===t.id,N=t.z===o&&r.floating.length>0,F=_.get(l.component)?.defaultOptions;return B("div",{"data-window-id":t.id,className:`floating-window ${g?"maximized":""} ${N?"v2-window-focused":""} ${x??""}`,style:{position:"absolute",left:g?0:typeof t.x=="number"?`${t.x}px`:t.x,top:g?0:typeof t.y=="number"?`${t.y}px`:t.y,width:g?"100%":typeof t.width=="number"?`${t.width}px`:t.width,height:g?"100%":typeof t.height=="number"?`${t.height}px`:t.height,zIndex:t.z,pointerEvents:P?"none":"auto"},children:[B("div",{onDoubleClick:()=>W(t.id),onMouseDown:R=>{F?.canDrag!==!1&&nt(t.id,R)},className:"floating-window-titlebar d-flex flex-row justify-content-between align-items-center cursor-move",style:{cursor:g||F?.canDrag===!1?"default":"move"},children:[B("span",{className:"floating-window-title text-truncate me-2 d-flex align-items-center",children:[u("span",{className:"window-title-icon",children:F?.icon||d||ct}),B("span",{children:[G(l.title,v),l.dirty?" *":""]})]}),B("div",{className:"d-flex align-items-center gap-1.5",onMouseDown:R=>R.stopPropagation(),children:[F?.canDrag!==!1&&u("button",{type:"button",title:G(c.windowAnchoringOptions,v),onClick:R=>{let z=!!t.stickyRight,K=!!t.stickyBottom;S.current?.show({event:R,contextMenu:{items:[{label:G(c.anchorToRightEdge,v),checkbox:{active:!0,enabled:!0,value:z},action:()=>{let j=ye.width,U=typeof t.width=="string"?parseFloat(t.width):t.width;z?b(t.id,{stickyRight:!1}):b(t.id,{x:j-U-10,stickyRight:!0})}},{label:G(c.anchorToBottomEdge,v),checkbox:{active:!0,enabled:!0,value:K},action:()=>{let j=ye.height,U=typeof t.height=="string"?parseFloat(t.height):t.height;K?b(t.id,{stickyBottom:!1}):b(t.id,{y:j-U-10,stickyBottom:!0})}}]}})},className:"custom-tab-btn btn-anchor-tab",children:B("svg",{className:`anchor-icon ${t.stickyRight&&t.stickyBottom?"anchor-sticky-both":t.stickyRight?"anchor-sticky-right":t.stickyBottom?"anchor-sticky-bottom":""}`,width:"11",height:"11",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:[u("circle",{cx:"12",cy:"5",r:"2"}),u("path",{d:"M12 7v7m0 0a4 4 0 0 1-4-4M12 14a4 4 0 0 0 4-4M5 18h14"})]})}),F?.canMinimize!==!1&&u("button",{type:"button",title:G(c.minimize,v),onClick:()=>T(t.id),className:"custom-tab-btn",children:u("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"3",children:u("path",{d:"M5 12h14"})})}),u("button",{type:"button",title:g?G(c.restoreSize,v):G(c.maximize,v),onClick:()=>W(t.id),className:"custom-tab-btn",children:u("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:u("rect",{x:"4",y:"4",width:"16",height:"16",rx:"1.5"})})}),F?.canClose!==!1&&u("button",{type:"button",title:G(c.close,v),onClick:()=>w(t.id),className:"custom-tab-btn btn-close-tab",children:u("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"3",children:u("path",{d:"M18 6L6 18M6 6l12 12"})})})]})]}),u("div",{className:`flex-grow-1 w-100 overflow-hidden ${k??""}`,style:{position:"relative"},children:u(It,{panelId:t.id},t.id)}),!g&&u("div",{onMouseDown:R=>e(t.id,R),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%)"}})]},t.id)})})()]}),r.minimized.length>0&&B("div",{className:"flex-shrink-0 w-100 d-flex flex-row align-items-center taskbar-footer-container px-3 py-1.5 justify-content-center",style:{height:"48px",zIndex:100},children:[u("button",{type:"button",onClick:()=>s("left"),className:"btn btn-sm btn-link taskbar-nav-btn text-decoration-none py-0 font-monospace",style:{display:r.minimized.length>4?"block":"none"},children:"\u25C0"}),u("div",{ref:I,className:"d-flex flex-row gap-2 overflow-x-auto align-items-center mx-2 px-1 py-0.5 scrollbar-hidden",style:{maxWidth:"800px",scrollbarWidth:"none",scrollSnapType:"x mandatory"},children:r.minimized.map(o=>{let l=_.get(o.component)?.defaultOptions?.icon||d||ct;return u("div",{onClick:()=>h(o.id),onContextMenu:g=>Ye(o.id,g),onMouseEnter:g=>{if(ie)return;X.current&&clearTimeout(X.current);let P=g.currentTarget.getBoundingClientRect();A({id:o.id,rect:P,title:o.title,component:o.component})},onMouseLeave:()=>{X.current=setTimeout(()=>{A(null)},150)},className:"taskbar-glassmorphic-item rounded d-flex align-items-center justify-content-center cursor-pointer hover-elevate",style:{backdropFilter:"blur(6px)",transition:"all 0.2s",cursor:"pointer",scrollSnapAlign:"start",width:"38px",height:"38px",position:"relative",padding:0},children:u("span",{className:"taskbar-item-icon d-flex align-items-center justify-content-center",children:l})},o.id)})}),D&&Mt(B("div",{className:"taskbar-item-tooltip d-flex flex-column gap-1",style:{position:"fixed",left:`${D.rect.left+D.rect.width/2}px`,top:`${D.rect.top-8}px`,transform:"translateX(-50%) translateY(-100%)",opacity:1,pointerEvents:"auto",zIndex:999999},onMouseEnter:()=>{X.current&&clearTimeout(X.current)},onMouseLeave:()=>{A(null)},children:[B("div",{className:"d-flex flex-row align-items-center justify-content-between w-100 gap-3 px-1 py-0.5",children:[B("span",{className:"tooltip-title-text text-truncate",style:{maxWidth:"140px"},children:[G(D.title,v),r.panels[D.id]?.dirty?" *":""]}),u("span",{onClick:o=>{o.stopPropagation(),w(D.id),A(null)},title:G(c.closePanel,v),className:"tooltip-close-x d-flex align-items-center justify-content-center",children:u("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:u("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),u(an,{panelId:D.id})]}),document.body),u("button",{type:"button",onClick:()=>s("right"),className:"btn btn-sm btn-link taskbar-nav-btn text-decoration-none py-0 font-monospace",style:{display:r.minimized.length>4?"block":"none"},children:"\u25B6"})]}),E.map(o=>{let t=r.panels[o];if(!t)return null;let l=kt(o);return Mt(u(rn,{panelId:o,children:u("div",{style:{width:"100%",height:"100%"},children:sn(o,t.component)})}),l,o)}),u(on,{ref:S,id:"workspace-context-menu",theme:"dark",onShow:()=>J(!0),onHide:()=>J(!1)}),r.draggedPanelId!==null&&!r.floating.some(o=>o.id===r.draggedPanelId)&&B("div",{className:"position-fixed bg-black bg-opacity-80 border border-info rounded text-info font-monospace px-3 py-1.5 shadow-lg d-flex align-items-center gap-2",style:{left:se.x+12,top:se.y+12,zIndex:1e5,pointerEvents:"none",fontSize:"0.75rem",boxShadow:"0 8px 24px rgba(0,0,0,0.5)",borderLeft:"3px solid var(--accent-color)",whiteSpace:"nowrap"},children:["\u{1F4C4} ",G(r.panels[r.draggedPanelId]?.title,v)||"Tab"]}),r.pendingClose&&(()=>{let o=r.panels[r.pendingClose.id],t=o?G(o.title,v):"Panel";return u("div",{className:"close-warning-overlay",children:B("div",{className:"close-warning-modal",children:[B("div",{className:"close-warning-header",children:[u("div",{className:"close-warning-icon",children:"\u26A0\uFE0F"}),u("h5",{className:"close-warning-title",children:"Unsaved Changes"})]}),B("p",{className:"close-warning-message",children:['"',t,'" has unsaved changes. Do you want to discard your changes and close the panel?']}),B("div",{className:"close-warning-footer",children:[u("button",{type:"button",className:"btn-warning-action btn-warning-cancel",onClick:()=>L(!1),children:"Cancel"}),u("button",{type:"button",className:"btn-warning-action btn-warning-discard",onClick:()=>L(!0),children:"Discard Changes"})]})]})})})()]})},cn=dn;import{createContext as Lt,useContext as Tt,useState as gn,useCallback as ce,useMemo as fn,useRef as pn}from"react";import{jsx as zt}from"react/jsx-runtime";var mn=0,gt=()=>`panel-${++mn}-${Date.now()}`,Ue=new Map,St={leftPanel:null,rightPanel:null,modals:[]},Et=Lt(null),Wt=Lt(null),hn=({children:i})=>{let[d,r]=gn(St),h=pn(d);h.current=d;let T=ce((c,x)=>{Ue.set(c,x)},[]),w=ce(c=>{Ue.delete(c)},[]),L=ce(async(c,x,k={})=>{let E=h.current.leftPanel;if(E){let S=Ue.get(E.id);if(S&&!await S())return null}let p=gt(),I={id:p,Component:c,props:x,containerType:"left-panel",options:k};return r(S=>({...S,leftPanel:I})),p},[]),W=ce(async(c,x,k={})=>{let E=h.current.rightPanel;if(E){let S=Ue.get(E.id);if(S&&!await S())return null}let p=gt(),I={id:p,Component:c,props:x,containerType:"right-panel",options:k};return r(S=>({...S,rightPanel:I})),p},[]),b=ce((c,x,k={})=>{let E=gt(),p=x.title,I={...k,title:k.title||p||"Confirmation"},S={id:E,Component:c,props:x,containerType:"modal",options:I};return r(D=>({...D,modals:[...D.modals,S]})),E},[]),C=ce(c=>{r(x=>({leftPanel:x.leftPanel?.id===c?null:x.leftPanel,rightPanel:x.rightPanel?.id===c?null:x.rightPanel,modals:x.modals.filter(k=>k.id!==c)}))},[]),y=ce(()=>{r(St)},[]),f=ce(()=>{r(c=>({...c,modals:[]}))},[]),m=ce(c=>d.leftPanel?.id===c?d.leftPanel:d.rightPanel?.id===c?d.rightPanel:d.modals.find(x=>x.id===c),[d]),M=ce((c,x)=>{r(k=>({leftPanel:k.leftPanel?.id===c?{...k.leftPanel,...x}:k.leftPanel,rightPanel:k.rightPanel?.id===c?{...k.rightPanel,...x}:k.rightPanel,modals:k.modals.map(E=>E.id===c?{...E,...x}:E)}))},[]),H=ce((c,x)=>{M(c,{dirty:x})},[M]),v=fn(()=>({openLeftPanel:L,openRightPanel:W,openModal:b,close:C,closeAll:y,closeAllModals:f,getInstance:m,updateInstance:M,setDirty:H,registerCloseHandler:T,unregisterCloseHandler:w}),[L,W,b,C,y,f,m,M,H,T,w]);return zt(Et.Provider,{value:d,children:zt(Wt.Provider,{value:v,children:i})})},Ce=()=>{let i=Tt(Et);if(!i)throw new Error("usePanelState must be used within PanelProvider");return i},He=()=>{let i=Tt(Wt);if(!i)throw new Error("usePanelActions must be used within PanelProvider");return i};import{useCallback as Me,useRef as pt,useEffect as bn,useState as Dt,useMemo as vn}from"react";import{useEffect as Ft,useRef as yn}from"react";import{jsx as Se,jsxs as ft}from"react/jsx-runtime";var Je=({zIndex:i,onDiscard:d,onCancel:r,message:h,title:T})=>{let w=yn(null);return Ft(()=>{let C=setTimeout(()=>{w.current?.focus()},50);return()=>clearTimeout(C)},[]),Ft(()=>{let C=y=>{y.key==="Escape"&&(y.stopPropagation(),y.preventDefault(),r())};return document.addEventListener("keydown",C,!0),()=>document.removeEventListener("keydown",C,!0)},[r]),Se("div",{className:"close-warning-overlay",style:{zIndex:i},children:ft("div",{className:"close-warning-modal",children:[ft("div",{className:"close-warning-header",children:[Se("div",{className:"close-warning-icon",children:"\u26A0\uFE0F"}),Se("h5",{className:"close-warning-title",children:T||"Unsaved Changes"})]}),Se("p",{className:"close-warning-message",children:h||"You have unsaved changes that will be lost."}),Se("p",{className:"close-warning-message",style:{fontWeight:500,margin:0},children:"Do you want to discard your changes and close?"}),ft("div",{className:"close-warning-footer",children:[Se("button",{type:"button",className:"btn-warning-action btn-warning-cancel",onClick:r,ref:w,children:"Cancel"}),Se("button",{type:"button",className:"btn-warning-action btn-warning-discard",onClick:d,children:"Discard Changes"})]})]})})};import{Fragment as Ot,jsx as oe,jsxs as Ze}from"react/jsx-runtime";var Pn=({modal:i,index:d,isTopmost:r})=>{let{close:h,updateInstance:T,setDirty:w}=He(),L=we(),{modalClass:W,modalBodyClass:b}=xe(),C=pt(null),[y,f]=Dt(!1),m=pt(null),{id:M,Component:H,props:v,options:c,dirty:x}=i,k=c,[E,p]=Dt(k.icon||null),I=pt(k);I.current=k;let S=Me(()=>new Promise(q=>{m.current=q,f(!0)}),[]),D=Me(()=>{m.current?.(!0),m.current=null,f(!1)},[]),A=Me(()=>{m.current?.(!1),m.current=null,f(!1)},[]),X=Me(async q=>{if(q?.force){h(M);return}if(C.current){if(!await C.current())return;h(M);return}x&&!await S()||h(M)},[h,M,x,S]),ie=Me(q=>w(M,q),[w,M]),J=Me(q=>T(M,{options:{...I.current,title:q}}),[T,M]),V=Me(q=>p(q),[]),te=Me(q=>(C.current=q,()=>{C.current=null}),[]),ee=vn(()=>({requestClose:X,setDirty:ie,setTitle:J,setIcon:V,onCloseRequested:te,containerType:"modal",instanceId:M}),[X,ie,J,V,te,M]),se=G(k.title,L),he=x?`${se} *`:se,ue=k.size?`v2-modal-size-${k.size}`:"v2-modal-size-auto",ae=k.closable!==!1;bn(()=>{if(!r||!ae||y)return;let q=$=>{$.key==="Escape"&&($.stopPropagation(),X())};return document.addEventListener("keydown",q),()=>document.removeEventListener("keydown",q)},[X,ae,r,y]);let Q=1e4+d*10,fe=Q+5;return Ze(Ot,{children:[Ze("div",{className:"v2-modal-overlay",style:{zIndex:Q},children:[oe("div",{className:"v2-modal-curtain",onClick:ae?()=>X():void 0}),Ze("div",{className:`v2-modal-window ${ue} ${W??""}`,children:[Ze("div",{className:"v2-modal-header",children:[E&&oe("div",{className:"v2-modal-icon",children:E}),oe("h4",{className:"v2-modal-title",children:he}),ae&&oe("button",{className:"v2-modal-close-button",onClick:()=>X(),title:"Close",type:"button",children:oe("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:oe("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),oe("div",{className:`v2-modal-body ${b??""}`,children:oe(Ne,{value:ee,children:oe(H,{...v,panelId:M})})})]})]}),y&&oe(Je,{zIndex:fe,onDiscard:D,onCancel:A})]})},xn=()=>{let{modals:i}=Ce();return i.length===0?null:oe(Ot,{children:i.map((d,r)=>oe(Pn,{modal:d,index:r,isTopmost:r===i.length-1},d.id))})},wn=xn;import{useCallback as ve,useRef as mt,useEffect as Bt,useState as Ht,useMemo as Cn}from"react";import{Fragment as At,jsx as ne,jsxs as Qe}from"react/jsx-runtime";var Ve=({panel:i,position:d,defaultWidth:r})=>{let{close:h,updateInstance:T,setDirty:w,registerCloseHandler:L,unregisterCloseHandler:W}=He(),{modals:b}=Ce(),C=we(),{sidePanelClass:y,sidePanelBodyClass:f}=xe(),m=mt(null),[M,H]=Ht(!1),v=mt(null),{id:c,Component:x,props:k,options:E,dirty:p}=i,I=E,[S,D]=Ht(I.icon||null),A=mt(I);A.current=I;let X=ve(()=>new Promise($=>{v.current=$,H(!0)}),[]),ie=ve(()=>{v.current?.(!0),v.current=null,H(!1)},[]),J=ve(()=>{v.current?.(!1),v.current=null,H(!1)},[]),V=ve(async $=>{if($?.force){h(c);return}if(m.current){if(!await m.current())return;h(c);return}p&&!await X()||h(c)},[h,c,p,X]),te=ve(async()=>m.current?await m.current():!p,[p]);Bt(()=>(L(c,te),()=>W(c)),[c,te,L,W]);let ee=ve($=>w(c,$),[w,c]),se=ve($=>T(c,{options:{...A.current,title:$}}),[T,c]),he=ve($=>D($),[]),ue=ve($=>(m.current=$,()=>{m.current=null}),[]),ae=Cn(()=>({requestClose:V,setDirty:ee,setTitle:se,setIcon:he,onCloseRequested:ue,containerType:d==="left"?"left-panel":"right-panel",instanceId:c}),[V,ee,se,he,ue,d,c]),ge=G(I.title,C),Q=p?`${ge} *`:ge;Bt(()=>{let $=Pe=>{Pe.key==="Escape"&&b.length===0&&!M&&V()};return document.addEventListener("keydown",$),()=>document.removeEventListener("keydown",$)},[V,b.length,M]);let fe=I.width||r||400,q=typeof fe=="number"?`${fe}px`:fe;return Qe(At,{children:[ne("div",{className:`v2-side-panel v2-side-panel-${d} v2-side-panel-visible ${y??""}`,style:{width:q},children:Qe("div",{className:"v2-side-panel-window",children:[Qe("div",{className:"v2-side-panel-header",children:[S&&ne("div",{className:"v2-side-panel-icon",children:S}),ne("h4",{className:"v2-side-panel-title",children:Q}),ne("button",{className:"v2-side-panel-close-button",onClick:()=>V(),title:"Close",type:"button",children:ne("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:ne("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),ne("div",{className:`v2-side-panel-body ${f??""}`,children:ne(Ne,{value:ae,children:ne(x,{...k,panelId:c})})})]})}),M&&ne(Je,{zIndex:2e4,onDiscard:ie,onCancel:J})]})},Mn=({defaultWidth:i})=>{let{leftPanel:d,rightPanel:r}=Ce();return Qe(At,{children:[d&&ne(Ve,{panel:d,position:"left",defaultWidth:i},d.id),r&&ne(Ve,{panel:r,position:"right",defaultWidth:i},r.id)]})},Rn=({defaultWidth:i})=>{let{leftPanel:d}=Ce();return d?ne(Ve,{panel:d,position:"left",defaultWidth:i},d.id):null},kn=({defaultWidth:i})=>{let{rightPanel:d}=Ce();return d?ne(Ve,{panel:d,position:"right",defaultWidth:i},d.id):null},In=Mn;import{useEffect as $t,useRef as Nn}from"react";import{jsx as ze,jsxs as ht}from"react/jsx-runtime";var Sn=({title:i,message:d,alert:r,alertType:h="info",useYesNoTitles:T=!1,onOK:w,onCancel:L})=>{let{requestClose:W,setIcon:b,setTitle:C}=dt(),y=Nn(null);$t(()=>{if(i){let c=typeof i=="string"?i:i.defaultMessage||i.id;C(c)}b&&b(ze("span",{children:"\u2753"}))},[i,C,b]),$t(()=>{y.current?.focus()},[]);let f=typeof d=="string"?d:d.defaultMessage||d.id,m=T?"No":"Cancel",M=T?"Yes":"OK",H=c=>{c.preventDefault(),w?.(),W()},v=()=>{L?.(),W()};return ht("form",{onSubmit:H,className:"p-3 d-flex flex-column gap-3",children:[r&&ht("div",{className:`alert alert-${h==="danger"?"danger":h} d-flex align-items-center gap-2 m-0 p-2.5 small`,children:[ze("span",{children:"\u2139\uFE0F"}),ze("span",{children:r})]}),ze("div",{style:{fontSize:"0.9rem",color:"inherit",lineHeight:1.5},children:f}),ze("hr",{className:"my-2 opacity-10"}),ht("div",{className:"d-flex justify-content-end gap-2",children:[ze("button",{type:"button",className:"btn btn-sm btn-outline-secondary font-monospace",onClick:v,children:m}),ze("button",{type:"submit",className:"btn btn-sm btn-primary font-monospace",ref:y,children:M})]})]})},zn=Sn;import{useState as Gt,useEffect as _e,useRef as Ln,useCallback as Yt,useImperativeHandle as Tn,forwardRef as En}from"react";import{Fragment as Fn,jsx as Re,jsxs as et}from"react/jsx-runtime";var Wn=En(function({position:d="right",tabs:r,drawerWidth:h="220px",activeTabId:T,onActiveTabChange:w,children:L},W){let b=T!==void 0,[C,y]=Gt(null),f=b?T:C,[m,M]=Gt(()=>{let p=new Set;for(let I of r)I.eagerMount&&p.add(I.id);return p});_e(()=>{let p=r.filter(I=>I.eagerMount&&!m.has(I.id));p.length>0&&M(I=>{let S=new Set(I);for(let D of p)S.add(D.id);return S})},[r]);let H=Ln(f??null);_e(()=>{H.current=f??null},[f]);let v=Yt(p=>{b||y(p),w?.(p)},[b,w]);Tn(W,()=>({openTab:p=>v(p),closeDrawer:()=>v(null),getActiveTab:()=>H.current}),[v]);let c=p=>{v(f===p?null:p)},x=Yt(()=>v(null),[v]);_e(()=>{f&&!m.has(f)&&M(p=>{let I=new Set(p);return I.add(f),I})},[f,m]),_e(()=>{f===null&&M(p=>{let I=!1,S=new Set(p);for(let D of p){let A=r.find(X=>X.id===D);A&&!A.eagerMount&&!A.preserveState&&(S.delete(D),I=!0)}return I?S:p})},[f,r]);let k=Re("div",{className:`sidebar-tabs-strip ${d}`,style:{width:"56px",height:"100%"},children:r.map(p=>{let I=f===p.id;return Re("button",{type:"button",onClick:()=>c(p.id),className:`sidebar-tab-btn ${I?"active":""}`,title:p.label,"aria-pressed":I,children:p.icon},p.id)})}),E=Re("div",{className:`sidebar-content-drawer h-100 ${d}`,style:{width:f?h:"0px",minWidth:f?h:"0px",overflow:"hidden",flexShrink:0},children:r.map(p=>{if(!m.has(p.id))return null;let S=f===p.id,D=()=>v(p.id);return et("div",{style:{display:S?"flex":"none",flexDirection:"column",height:"100%",width:"100%"},children:[et("div",{className:"d-flex align-items-center justify-content-between border-bottom border-secondary-subtle px-3 py-2 flex-shrink-0",style:{background:"rgba(0,0,0,0.08)",minHeight:"38px"},children:[Re("span",{className:"sidebar-header-title",children:p.label}),Re("button",{type:"button",onClick:x,className:"btn btn-link p-0 text-secondary d-flex align-items-center",style:{textDecoration:"none"},title:"Close panel","aria-label":"Close panel",children:et("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[Re("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),Re("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})})]}),Re("div",{className:"flex-grow-1 overflow-auto",children:p.renderContent(p.id,x,D)})]},p.id)})});return et(Fn,{children:[d==="left"&&k,d==="left"&&E,L,d==="right"&&E,d==="right"&&k]})});export{zn as ConfirmationForm,lt as FormContainerContext,Ne as FormContainerProvider,Rn as LeftPanelRenderer,wn as ModalStackRenderer,hn as PanelProvider,_ as PanelRegistry,kn as RightPanelRenderer,In as SidePanelRenderer,Wn as Sidebar,cn as WindowManager,Vt as WindowManagerProvider,We as defaultPredefinedMessages,G as formatLabel,dt as useFormContainer,we as useFormatMessage,He as usePanelActions,_t as usePanelContext,Ce as usePanelState,qe as usePredefinedMessages,xe as useStyleClasses,Ie as useWindowManagerActions,Le as useWindowManagerState};
1
+ import ut,{useState as we,useRef as fe,useEffect as ie}from"react";import{createPortal as Tt}from"react-dom";import{createContext as De,useContext as Ae,useState as Yt,useRef as je,useMemo as it,useCallback as Y,useEffect as Xt}from"react";var ot=class{registry=new Map;register(l,r,y){this.registry.set(l,{Component:r,defaultOptions:y})}get(l){return this.registry.get(l)}getRegisteredIds(){return Array.from(this.registry.keys())}},_=new ot;var Oe={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"}};import{jsx as We}from"react/jsx-runtime";var ht=De(null),yt=De(null),bt=De(null),vt=De(Oe),Pt=De({}),Pe=()=>Ae(Pt),st=class{listeners={};subscribe(l,r){return this.listeners[l]||(this.listeners[l]=[]),this.listeners[l].push(r),()=>{this.listeners[l]=this.listeners[l].filter(y=>y!==r)}}publish(l,r){this.listeners[l]&&this.listeners[l].forEach(y=>y(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"}]},jt={"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"}},Kt=[{id:"live-preview",x:450,y:200,width:320,height:250,z:1e3}],Ut=({children:i,formatMessage:l,predefinedMessages:r,dir:y,modalClass:N,modalBodyClass:C,sidePanelClass:W,sidePanelBodyClass:E,windowClass:w,windowBodyClass:M})=>{let[S,d]=Yt({gridRoot:qt,floating:Kt,minimized:[],panels:jt,draggedPanelId:null,activePanelId:"main-map",dir:y||"ltr",isRtl:y==="rtl"}),P=je(S);P.current=S;let b=je({}),T=it(()=>({...Oe,...r}),[r]),F=je(new st),p=je(1e3),h=Y((t,s)=>F.current.subscribe(t,s),[]),u=Y((t,s)=>{F.current.publish(t,s)},[]),R=Y((t,s)=>{let n=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,o=typeof t.height=="string"?parseFloat(t.height):t.height;isNaN(n)&&(n=300),isNaN(e)&&(e=150),isNaN(a)&&(a=450),isNaN(o)&&(o=350);let m=O=>s.some(D=>{let k=typeof D.x=="string"?parseFloat(D.x):D.x,L=typeof D.y=="string"?parseFloat(D.y):D.y;return!D.maximized&&Math.abs(k-O.x)<20&&Math.abs(L-O.y)<20}),c=0;for(;m({x:n,y:e})&&c<10;)n+=30,e+=30,c++;let v=Math.max(100,window.innerWidth||1024),x=Math.max(100,window.innerHeight||768);return(n+a>v||e+o>x)&&(n=100+c%5*30,e=100+c%5*30),n=Math.max(0,Math.min(n,v-100)),e=Math.max(0,Math.min(e,x-40)),{x:n,y:e,width:a,height:o}},[]),A=Y(t=>{p.current+=1;let s=p.current;d(n=>{let e=n.panels[t];if(!e)return n;if(e.state==="floating")return{...n,floating:n.floating.map(a=>a.id===t?{...a,z:s}:a),activePanelId:t};if(e.state==="docked"){let a=o=>o.type==="leaf"?o.panels.includes(t)?{...o,activePanelId:t}:o:{...o,children:o.children.map(a)};return{...n,gridRoot:a(n.gridRoot),activePanelId:t}}return{...n,activePanelId:t}})},[]),H=(t,s)=>{if(t.type==="leaf"){let n=t.panels.indexOf(s);if(n===-1)return t;let e=t.panels.filter(m=>m!==s),a=t.activePanelId===s?e[n]||e[n-1]||e[0]||null:t.activePanelId,o={...t,panels:e,activePanelId:a};return e.length===0&&!t.keepOnEmpty?null:o}else{let n=t.children.map(o=>H(o,s)).filter(o=>o!==null);if(n.length===0)return null;if(n.length===1)return n[0];let e=t.sizes.slice(0,n.length),a=e.reduce((o,m)=>o+m,0);return{...t,children:n,sizes:e.map(o=>o/a)}}},f=(t,s,n)=>{if(t.type==="leaf"){if(t.id===s){let e=t.panels.includes(n)?t.panels:[...t.panels,n];return{...t,panels:e,activePanelId:n}}return t}else return{...t,children:t.children.map(e=>f(e,s,n))}},I=t=>{if(t.type==="leaf")return t.id;for(let s of t.children){let n=I(s);if(n)return n}return null},z=Y((t,s,n)=>{d(e=>{let a=e.panels[t],o=_.get(s),m=n?.title||n?.title||o?.defaultOptions?.title||t,c=n?.initialTarget||o?.defaultOptions?.initialTarget||"docked",v=o?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350};if(a)if(a.state==="minimized"){let k=e.minimized.filter(L=>L.id!==t);if(c==="floating"||!e.gridRoot){p.current+=1;let L=R(v,e.floating);return{...e,minimized:k,floating:[...e.floating,{...L,id:t,z:p.current}],panels:{...e.panels,[t]:{...a,state:"floating"}}}}else{let L=I(e.gridRoot)||"group-left-top";return{...e,minimized:k,gridRoot:f(e.gridRoot,L,t),panels:{...e.panels,[t]:{...a,state:"docked"}}}}}else{if(a.state==="floating")return A(t),e;{let k=L=>L.type==="leaf"?L.panels.includes(t)?{...L,activePanelId:t}:L:{...L,children:L.children.map(k)};return{...e,gridRoot:k(e.gridRoot)}}}let O={id:t,title:m,component:s,state:c==="tabbed"?"docked":c},D={...e.panels,[t]:O};if(c==="floating"){p.current+=1;let k=R(v,e.floating),L=n?.stickyRight??o?.defaultOptions?.defaultStickyRight??!1,j=n?.stickyBottom??o?.defaultOptions?.defaultStickyBottom??!1,J=Math.max(100,window.innerWidth||1024),Q=Math.max(100,window.innerHeight||768),re=typeof k.width=="string"?parseFloat(k.width):k.width,ge=typeof k.height=="string"?parseFloat(k.height):k.height,be=k.x,Re=k.y,Ee=10;return L&&(be=J-re-Ee),j&&(Re=Q-ge-Ee),{...e,floating:[...e.floating,{...k,id:t,z:p.current,x:be,y:Re,stickyRight:L,stickyBottom:j}],panels:D}}else{let k=I(e.gridRoot)||"group-left-top";return{...e,gridRoot:f(e.gridRoot,k,t),panels:D}}})},[R,A]),B=Y(t=>{d(s=>{let n=s.panels[t];if(!n||_.get(n.component)?.defaultOptions?.canClose===!1)return s;delete b.current[t];let a={...s.panels};delete a[t];let o=H(s.gridRoot,t);return{...s,gridRoot:o||{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((t,s)=>{b.current[t]=s},[]),Z=Y(t=>{delete b.current[t]},[]),ne=Y((t,s,n)=>{d(e=>{let a=e.panels[t];return a?{...e,panels:{...e.panels,[t]:{...a,dirty:s,dirtyOptions:n}}}:e})},[]),ce=Y((t,s)=>{d(n=>{let e=n.panels[t];return e?{...n,panels:{...n.panels,[t]:{...e,title:s}}}:n})},[]),q=Y(async(t,s)=>{if(s?.force){B(t);return}let n=b.current[t];if(n&&!await n())return;let e=P.current.panels[t];if(e?.dirty)if(s?.onConfirm){if(!await s.onConfirm(e.dirtyOptions))return}else return;B(t)},[B]),V=Y(t=>{d(s=>{let n=s.panels[t];if(!n||n.state==="minimized"||_.get(n.component)?.defaultOptions?.canMinimize===!1)return s;let a,o;if(n.state==="floating"){let c=s.floating.find(v=>v.id===t);c&&(a={x:c.x,y:c.y,width:c.width,height:c.height,stickyRight:c.stickyRight,stickyBottom:c.stickyBottom})}else if(n.state==="docked"){let c=v=>{if(v.type==="leaf")return v.panels.includes(t)?v.id:null;for(let x of v.children){let O=c(x);if(O)return O}return null};o=c(s.gridRoot)}let m=H(s.gridRoot,t);return{...s,gridRoot:m||{type:"leaf",id:"group-default",panels:[],activePanelId:null},floating:s.floating.filter(c=>c.id!==t),minimized:[...s.minimized,{id:t,title:n.title,component:n.component}],panels:{...s.panels,[t]:{...n,state:"minimized",previousState:n.state,lastFloatingRect:a,lastLeafId:o}}}})},[]),ee=Y(t=>{d(s=>{let n=s.panels[t];if(!n||n.state!=="minimized")return s;let e=s.minimized.filter(o=>o.id!==t);if((n.previousState||"docked")==="floating"){p.current+=1;let o=_.get(n.component),m=n.lastFloatingRect||o?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350},c=R(m,s.floating);return{...s,minimized:e,floating:[...s.floating,{...c,id:t,z:p.current,stickyRight:!!n.lastFloatingRect?.stickyRight,stickyBottom:!!n.lastFloatingRect?.stickyBottom}],panels:{...s.panels,[t]:{...n,state:"floating"}}}}else{let o=(x,O)=>x.type==="leaf"?x.id===O:x.children.some(D=>o(D,O)),m=n.lastLeafId&&o(s.gridRoot,n.lastLeafId),c=_.get(n.component),v=c?.defaultOptions?.canDrag!==!1;if(m)return{...s,minimized:e,gridRoot:f(s.gridRoot,n.lastLeafId,t),panels:{...s.panels,[t]:{...n,state:"docked"}}};if(v){p.current+=1;let x=n.lastFloatingRect||c?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350},O=R(x,s.floating);return{...s,minimized:e,floating:[...s.floating,{...O,id:t,z:p.current,stickyRight:!!n.lastFloatingRect?.stickyRight,stickyBottom:!!n.lastFloatingRect?.stickyBottom}],panels:{...s.panels,[t]:{...n,state:"floating"}}}}else{let x=I(s.gridRoot)||"group-left-top";return{...s,minimized:e,gridRoot:f(s.gridRoot,x,t),panels:{...s.panels,[t]:{...n,state:"docked"}}}}}})},[R]),me=Y((t,s)=>{d(n=>{let e=n.panels[t];if(!e||_.get(e.component)?.defaultOptions?.canDrag===!1)return n;let o=_.get(e.component),m=s||o?.defaultOptions?.favoritePosition||{x:300,y:150,width:450,height:350},c=H(n.gridRoot,t);p.current+=1;let v=R(m,n.floating);return{...n,gridRoot:c||{type:"leaf",id:"group-default",panels:[],activePanelId:null},floating:[...n.floating,{...v,id:t,z:p.current}],panels:{...n.panels,[t]:{...e,state:"floating"}}}})},[R]),he=Y((t,s)=>{d(n=>{let e=n.panels[t];if(!e)return n;let a=n.floating.filter(c=>c.id!==t),o=H(n.gridRoot,t),m=s||I(o||n.gridRoot)||"group-left-top";return{...n,gridRoot:f(o||n.gridRoot,m,t),floating:a,panels:{...n.panels,[t]:{...e,state:"docked"}}}})},[]),U=(t,s,n,e)=>{if(t.type==="leaf"){if(t.id===s){let a={type:"leaf",id:`group-split-${Date.now()}-${Math.floor(Math.random()*1e3)}`,panels:[n],activePanelId:n};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=>U(a,s,n,e))}},te=Y(t=>{d(s=>({...s,draggedPanelId:t}))},[]),X=Y((t,s,n)=>{d(e=>{let a=e.panels[t];if(!a)return e;let o=e.floating.filter(v=>v.id!==t),m=H(e.gridRoot,t),c;return n==="center"?c=f(m||e.gridRoot,s,t):c=U(m||e.gridRoot,s,t,n),{...e,gridRoot:c,floating:o,panels:{...e.panels,[t]:{...a,state:"docked"}},draggedPanelId:null}})},[]),ye=Y((t,s)=>{d(n=>{let e=n.panels[t];if(!e)return n;let a=n.floating.filter(O=>O.id!==t),o=H(n.gridRoot,t),m={type:"leaf",id:`group-edge-${Date.now()}-${Math.floor(Math.random()*1e3)}`,panels:[t],activePanelId:t},c=s==="left"||s==="right"?"horizontal":"vertical",v=s==="left"||s==="top"?[m,o||n.gridRoot]:[o||n.gridRoot,m];return{...n,gridRoot:{type:"branch",orientation:c,sizes:s==="left"||s==="top"?[.3,.7]:[.7,.3],children:v},floating:a,panels:{...n.panels,[t]:{...e,state:"docked"}},draggedPanelId:null}})},[]),Me=Y((t,s,n)=>{d(e=>{let a=e.panels[t];if(!a)return e;let o=H(e.gridRoot,t),m=x=>{if(x.type==="leaf"){if(x.id===s){let O=x.panels.filter(L=>L!==t),D=Math.max(0,Math.min(n,O.length)),k=[...O];return k.splice(D,0,t),{...x,panels:k,activePanelId:t}}return x}else return{...x,children:x.children.map(m)}},c=m(o||e.gridRoot),v=e.floating.filter(x=>x.id!==t);return{...e,gridRoot:c,floating:v,panels:{...e.panels,[t]:{...a,state:"docked"}},draggedPanelId:null}})},[]),ve=Y(t=>{d(s=>{let n=a=>{if(a.type==="leaf")return a.id===t&&a.canClose!==!1?null:a;{let o=a.children.map(v=>n(v)).filter(v=>v!==null);if(o.length===0)return null;if(o.length===1)return o[0];let m=a.sizes.slice(0,o.length),c=m.reduce((v,x)=>v+x,0);return{...a,children:o,sizes:m.map(v=>v/c)}}},e=n(s.gridRoot);return{...s,gridRoot:e||{type:"leaf",id:"group-default",panels:[],activePanelId:null}}})},[]),$e=Y(t=>{d(s=>({...s,floating:s.floating.map(n=>n.id===t?{...n,maximized:!n.maximized}:n)}))},[]),Ge=Y((t,s)=>{let n=(e,a)=>{if(e.type==="leaf")return e;if(a===t.length)return{...e,sizes:s};let o=t[a],m=e.children.map((c,v)=>v===o?n(c,a+1):c);return{...e,children:m}};d(e=>({...e,gridRoot:n(e.gridRoot,0)}))},[]),Ye=Y((t,s)=>{d(n=>({...n,floating:n.floating.map(e=>e.id===t?{...e,...s}:e)}))},[]),Xe=Y(()=>JSON.stringify({gridRoot:S.gridRoot,floating:S.floating,minimized:S.minimized,panels:S.panels}),[S]),qe=Y(t=>{try{let s=JSON.parse(t);if(s.gridRoot&&s.floating&&s.minimized&&s.panels){let n=Object.keys(s.panels)[0]||null;d(e=>({...e,gridRoot:s.gridRoot,floating:s.floating,minimized:s.minimized,panels:s.panels,draggedPanelId:null,activePanelId:n}))}}catch(s){console.error("Failed to parse layout configuration:",s)}},[]),Le=Y(t=>{d(s=>s.activePanelId===t?s:{...s,activePanelId:t})},[]),ue=Y(t=>{d(s=>s.dir===t?s:{...s,dir:t,isRtl:t==="rtl"})},[]);Xt(()=>{y&&d(t=>t.dir===y?t:{...t,dir:y,isRtl:y==="rtl"})},[y]);let _e=it(()=>({openPanel:z,closePanel:B,minimizePanel:V,restorePanel:ee,floatPanel:me,dockPanel:he,maximizePanel:$e,updateSplitSizes:Ge,updateFloatingPosition:Ye,bringToFront:A,saveLayout:Xe,loadLayout:qe,publish:u,subscribe:h,setDraggedPanelId:te,dockPanelToGroup:X,movePanelOrder:Me,closeLeafGroup:ve,registerCloseGuard:$,unregisterCloseGuard:Z,setPanelDirty:ne,updatePanelTitle:ce,requestClosePanel:q,dockPanelToWorkspaceEdge:ye,setActivePanel:Le,setDirection:ue}),[z,B,V,ee,me,he,$e,Ge,Ye,A,Xe,qe,u,h,te,X,Me,ve,$,Z,ne,ce,q,ye,Le,ue]),et=t=>{let s=t.defaultMessage||t.id;return t.values&&Object.entries(t.values).forEach(([n,e])=>{s=s.replace(`{${n}}`,String(e))}),s},tt=it(()=>({modalClass:N,modalBodyClass:C,sidePanelClass:W,sidePanelBodyClass:E,windowClass:w,windowBodyClass:M}),[N,C,W,E,w,M]);return We(Pt.Provider,{value:tt,children:We(ht.Provider,{value:S,children:We(yt.Provider,{value:_e,children:We(bt.Provider,{value:l||et,children:We(vt.Provider,{value:T,children:i})})})})})},pe=()=>{let i=Ae(ht);if(!i)throw new Error("useWindowManagerState must be used within WindowManagerProvider");return i},ke=()=>{let i=Ae(yt);if(!i)throw new Error("useWindowManagerActions must be used within WindowManagerProvider");return i},oe=()=>Ae(bt)||(l=>{let r=l.defaultMessage||l.id;return l.values&&Object.entries(l.values).forEach(([y,N])=>{r=r.replace(`{${y}}`,String(N))}),r}),G=(i,l)=>i?typeof i=="string"?i:l(i):"",Jt=()=>{let{publish:i,subscribe:l}=ke();return{publish:i,subscribe:l}},ae=()=>Ae(vt);function xt(i){if(!i)return typeof document<"u"?document.documentElement.dir?.toLowerCase()==="rtl"||document.body.dir?.toLowerCase()==="rtl":!1;let l=i.closest("[dir]");return l?l.getAttribute("dir")?.toLowerCase()==="rtl":document.documentElement.dir?.toLowerCase()==="rtl"||document.body.dir?.toLowerCase()==="rtl"}import{JsonContextMenu as rn}from"replace-react-contexify";import"replace-react-contexify/styles.css";import{createContext as Zt,useContext as Qt}from"react";var Vt={requestClose:()=>{console.warn("FormContainerContract: requestClose called but no container is present")},setDirty:()=>{},onCloseRequested:()=>()=>{},setTitle:()=>{},setIcon:()=>{},containerType:"standalone",instanceId:"standalone",onClose:()=>()=>{},onMinimize:()=>()=>{},onRestore:()=>()=>{},onResize:()=>()=>{}},at=Zt(Vt),Ie=at.Provider,rt=()=>Qt(at);import{createContext as Mt,useContext as Rt,useState as _t,useCallback as le,useMemo as en,useRef as tn}from"react";import{jsx as Ct}from"react/jsx-runtime";var nn=0,lt=()=>`panel-${++nn}-${Date.now()}`,Ke=new Map,wt={leftPanel:null,rightPanel:null,modals:[]},kt=Mt(null),It=Mt(null),on=({children:i})=>{let[l,r]=_t(wt),y=tn(l);y.current=l;let N=le((p,h)=>{Ke.set(p,h)},[]),C=le(p=>{Ke.delete(p)},[]),W=le(async(p,h,u={})=>{let R=y.current.leftPanel;if(R){let f=Ke.get(R.id);if(f&&!await f())return null}let A=lt(),H={id:A,Component:p,props:h,containerType:"left-panel",options:u};return r(f=>({...f,leftPanel:H})),A},[]),E=le(async(p,h,u={})=>{let R=y.current.rightPanel;if(R){let f=Ke.get(R.id);if(f&&!await f())return null}let A=lt(),H={id:A,Component:p,props:h,containerType:"right-panel",options:u};return r(f=>({...f,rightPanel:H})),A},[]),w=le((p,h,u={})=>{let R=lt(),A=h.title,H={...u,title:u.title||A||"Confirmation"},f={id:R,Component:p,props:h,containerType:"modal",options:H};return r(I=>({...I,modals:[...I.modals,f]})),R},[]),M=le(p=>{r(h=>({leftPanel:h.leftPanel?.id===p?null:h.leftPanel,rightPanel:h.rightPanel?.id===p?null:h.rightPanel,modals:h.modals.filter(u=>u.id!==p)}))},[]),S=le(()=>{r(wt)},[]),d=le(()=>{r(p=>({...p,modals:[]}))},[]),P=le(p=>l.leftPanel?.id===p?l.leftPanel:l.rightPanel?.id===p?l.rightPanel:l.modals.find(h=>h.id===p),[l]),b=le((p,h)=>{r(u=>({leftPanel:u.leftPanel?.id===p?{...u.leftPanel,...h}:u.leftPanel,rightPanel:u.rightPanel?.id===p?{...u.rightPanel,...h}:u.rightPanel,modals:u.modals.map(R=>R.id===p?{...R,...h}:R)}))},[]),T=le((p,h,u)=>{b(p,{dirty:h,dirtyOptions:u})},[b]),F=en(()=>({openLeftPanel:W,openRightPanel:E,openModal:w,close:M,closeAll:S,closeAllModals:d,getInstance:P,updateInstance:b,setDirty:T,registerCloseHandler:N,unregisterCloseHandler:C}),[W,E,w,M,S,d,P,b,T,N,C]);return Ct(kt.Provider,{value:l,children:Ct(It.Provider,{value:F,children:i})})},xe=()=>{let i=Rt(kt);if(!i)throw new Error("usePanelState must be used within PanelProvider");return i},Se=()=>{let i=Rt(It);if(!i)throw new Error("usePanelActions must be used within PanelProvider");return i};import{useEffect as St,useRef as sn}from"react";import{jsx as Te,jsxs as dt}from"react/jsx-runtime";var an=({title:i,message:l,alert:r,alertType:y="info",useYesNoTitles:N=!1,onOK:C,onCancel:W})=>{let{requestClose:E,setIcon:w,setTitle:M}=rt(),S=oe(),d=ae(),P=sn(null);St(()=>{if(i){let u=typeof i=="string"?i:S(i);M(u)}w&&w(Te("span",{children:"\u2753"}))},[i,M,w,S]),St(()=>{P.current?.focus()},[]);let b=typeof l=="string"?l:S(l),T=S(N?d.no:d.cancel),F=S(N?d.yes:d.ok),p=u=>{u.preventDefault(),C?.(),E()},h=()=>{W?.(),E()};return dt("form",{onSubmit:p,className:"p-3 d-flex flex-column gap-3",children:[r&&dt("div",{className:`alert alert-${y==="danger"?"danger":y} d-flex align-items-center gap-2 m-0 p-2.5 small`,children:[Te("span",{children:"\u2139\uFE0F"}),Te("span",{children:r})]}),Te("div",{style:{fontSize:"0.9rem",color:"inherit",lineHeight:1.5},children:b}),Te("hr",{className:"my-2 opacity-10"}),dt("div",{className:"d-flex justify-content-end gap-2",children:[Te("button",{type:"button",className:"btn btn-sm btn-outline-secondary font-monospace",onClick:h,children:T}),Te("button",{type:"submit",className:"btn btn-sm btn-primary font-monospace",ref:P,children:F})]})]})},ze=an;import{Fragment as fn,jsx as g,jsxs as K}from"react/jsx-runtime";var He=new Map,Je="preserved-dom-container",ct=K("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{display:"block"},children:[g("rect",{x:"3",y:"3",width:"7",height:"9",rx:"1"}),g("rect",{x:"14",y:"3",width:"7",height:"5",rx:"1"}),g("rect",{x:"14",y:"12",width:"7",height:"9",rx:"1"}),g("rect",{x:"3",y:"16",width:"7",height:"5",rx:"1"})]}),zt=i=>{let l=He.get(i);return l||(l=document.createElement("div"),l.style.width="100%",l.style.height="100%",He.set(i,l)),l},ln=(i,l)=>{let r=_.get(l);if(!r)return K("div",{className:"w-100 h-100 d-flex flex-column align-items-center justify-content-center bg-transparent text-danger font-monospace p-3 text-center",style:{border:"2px dashed var(--bs-danger, #dc3545)"},children:[g("h6",{className:"fw-bold mb-1",children:"\u26A0\uFE0F Component Unregistered"}),K("span",{className:"small text-muted",children:["Key: ",l]})]});let y=r.Component;return g(y,{panelId:i})},Lt=new Map,Ne=new Map,Ue=i=>{let l=Ne.get(i);return l||(l={onClose:new Set,onMinimize:new Set,onRestore:new Set,onResize:new Set},Ne.set(i,l)),l},Et=({panelId:i})=>{let l=fe(null);return ie(()=>{let r=l.current;if(!r)return;let y=zt(i);r.appendChild(y);let N=new ResizeObserver(C=>{for(let W of C){let{width:E,height:w}=W.contentRect;if(E>0&&w>0){Lt.set(i,{width:E,height:w});let M=Ne.get(i);M&&M.onResize.forEach(S=>S(E,w))}}});return N.observe(r),()=>{N.disconnect();let C=document.getElementById(Je);C||(C=document.createElement("div"),C.id=Je,C.style.display="none",document.body.appendChild(C)),C.appendChild(y)}},[i]),g("div",{ref:l,className:"w-100 h-100"})},dn=({panelId:i})=>{let l=pe(),r=oe(),y=fe(null),N=l.panels[i],C=N?_.get(N.component):null,W=C?.defaultOptions?.disableLivePreview||!1,E=Lt.get(i)||{width:800,height:500},w=E.width,M=E.height,P=Math.min(220/w,140/M);if(ie(()=>{if(W)return;let b=y.current;if(!b)return;let T=He.get(i);if(T)return b.appendChild(T),()=>{let F=document.getElementById(Je);F||(F=document.createElement("div"),F.id=Je,F.style.display="none",document.body.appendChild(F)),F.appendChild(T)}},[i,W]),W){let b=w*P,T=M*P,F=N?.title||C?.defaultOptions?.title||"Panel",p=G(F,r),h=(Array.from(p)[0]||"P").toUpperCase();return g("div",{className:"taskbar-item-preview-frame d-flex align-items-center justify-content-center",style:{width:`${b}px`,height:`${T}px`,background:"rgba(108, 117, 125, 0.15)",border:"1px dashed var(--taskbar-item-border, rgba(255, 255, 255, 0.15))"},children:g("div",{style:{fontSize:"2rem",fontWeight:600,color:"var(--panel-title-color, var(--panel-text, rgba(255, 255, 255, 0.85)))",userSelect:"none"},children:h})})}return g("div",{className:"taskbar-item-preview-frame",style:{width:`${w*P}px`,height:`${M*P}px`},children:g("div",{ref:y,className:"taskbar-item-preview-host",style:{width:`${w}px`,height:`${M}px`,transform:`scale(${P})`,transformOrigin:"top left",position:"absolute",top:0,left:0,"--preview-scale":P}})})},cn=({panelId:i,children:l})=>{let r=pe(),{requestClosePanel:y,setPanelDirty:N,registerCloseGuard:C,unregisterCloseGuard:W,updatePanelTitle:E}=ke(),w=r.minimized.some(d=>d.id===i),M=fe(w);ie(()=>{let d=Ne.get(i);d&&(w&&!M.current?d.onMinimize.forEach(P=>P()):!w&&M.current&&d.onRestore.forEach(P=>P()),M.current=w)},[w,i]),ie(()=>()=>{let d=Ne.get(i);d&&(d.onClose.forEach(P=>P()),Ne.delete(i))},[i]);let S=ut.useMemo(()=>({requestClose:d=>y(i,d),setDirty:d=>N(i,d),onCloseRequested:d=>(C(i,d),()=>W(i)),setTitle:d=>E(i,d),instanceId:i,onClose:d=>{let P=Ue(i);return P.onClose.add(d),()=>P.onClose.delete(d)},onMinimize:d=>{let P=Ue(i);return P.onMinimize.add(d),()=>P.onMinimize.delete(d)},onRestore:d=>{let P=Ue(i);return P.onRestore.add(d),()=>P.onRestore.delete(d)},onResize:d=>{let P=Ue(i);return P.onResize.add(d),()=>P.onResize.delete(d)}}),[i,y,N,C,W,E]);return g(Ie,{value:S,children:l})},Nt=({node:i,path:l,onTabRightClick:r,activeDropZone:y,onHoverDropZone:N,onTabDragStart:C,hoveredTab:W,onTabHover:E,defaultPanelIcon:w,onRequestClosePanel:M})=>{let{updateSplitSizes:S}=ke();if(i.type==="leaf")return g(un,{leaf:i,onTabRightClick:r,activeDropZone:y,onHoverDropZone:N,onTabDragStart:C,hoveredTab:W,onTabHover:E,defaultPanelIcon:w,onRequestClosePanel:M});let d=i.orientation==="horizontal",P=(b,T)=>{T.preventDefault();let F=d?T.clientX:T.clientY,p=[...i.sizes],h=T.currentTarget;h.classList.add("active"),document.body.classList.add("resizing-active",d?"resizing-row-active":"resizing-col-active");let u=T.currentTarget.parentElement,R=u?d?u.clientWidth:u.clientHeight:d?1e3:800,A=f=>{let B=((d?f.clientX:f.clientY)-F)/R,$=[...p];$[b]+=B,$[b+1]-=B,$[b]>.1&&$[b+1]>.1&&S(l,$)},H=()=>{h.classList.remove("active"),document.body.classList.remove("resizing-active","resizing-row-active","resizing-col-active"),window.removeEventListener("mousemove",A),window.removeEventListener("mouseup",H)};window.addEventListener("mousemove",A),window.addEventListener("mouseup",H)};return g("div",{className:`d-flex w-100 h-100 ${d?"flex-row":"flex-column"}`,style:{overflow:"hidden",position:"relative"},children:i.children.map((b,T)=>{let F=i.sizes[T]*100;return K(ut.Fragment,{children:[g("div",{style:{flexGrow:i.sizes[T],flexBasis:`${F}%`,overflow:"hidden",position:"relative"},children:g(Nt,{node:b,path:[...l,T],onTabRightClick:r,activeDropZone:y,onHoverDropZone:N,onTabDragStart:C,hoveredTab:W,onTabHover:E,defaultPanelIcon:w,onRequestClosePanel:M})}),T<i.children.length-1&&g("div",{onMouseDown:p=>P(T,p),style:{cursor:d?"col-resize":"row-resize",width:d?"1px":"100%",height:d?"100%":"1px",zIndex:20},className:"resizer-bar"})]},T)})})},un=({leaf:i,onTabRightClick:l,activeDropZone:r,onHoverDropZone:y,onTabDragStart:N,hoveredTab:C,onTabHover:W,defaultPanelIcon:E,onRequestClosePanel:w})=>{let M=pe(),{openPanel:S,closeLeafGroup:d,setActivePanel:P}=ke(),b=oe(),T=ae(),{windowClass:F,windowBodyClass:p}=Pe(),h=u=>{S(u,M.panels[u].component),P(u)};return K("div",{"data-active-panel-id":i.activePanelId||"",className:`workspace-panel w-100 h-100 d-flex flex-column ${F??""}`,style:{overflow:"hidden",position:"relative"},children:[K("div",{className:"workspace-tab-bar d-flex flex-row justify-content-between align-items-center",style:{minHeight:"38px"},children:[g("div",{className:"d-flex flex-row overflow-x-auto flex-grow-1 tab-headers-container",style:{scrollbarWidth:"none"},onMouseMove:u=>{M.draggedPanelId&&u.target===u.currentTarget&&W(i.id,"EMPTY",i.panels.length,"right")},onMouseLeave:u=>{M.draggedPanelId&&u.target===u.currentTarget&&W(i.id,"",-1,null)},children:i.panels.map((u,R)=>{let A=M.panels[u];if(!A)return null;let H=i.activePanelId===u,f=M.activePanelId===u,z=_.get(A.component)?.defaultOptions,B=C&&C.leafId===i.id&&C.panelId===u,$=R===i.panels.length-1,Z=C&&C.leafId===i.id&&C.panelId==="EMPTY"&&$,ne=B?C.side==="left"?"drag-hover-left":"drag-hover-right":Z?"drag-hover-right":"";return K("div",{onClick:()=>h(u),onMouseDown:q=>{z?.canDrag!==!1&&N(u,q)},onContextMenu:q=>l(u,q),onMouseMove:q=>{if(M.draggedPanelId){let V=q.currentTarget.getBoundingClientRect(),me=q.clientX-V.left<V.width/2?"left":"right";W(i.id,u,R,me)}},onMouseLeave:()=>{M.draggedPanelId&&W(i.id,"",-1,null)},className:`workspace-tab ${H?f?"active workspace-tab-active-focused":"active workspace-tab-active-unfocused":"workspace-tab-inactive"} ${ne}`,style:{cursor:z?.canDrag===!1?"default":"pointer"},children:[K("span",{className:"text-truncate d-flex align-items-center",style:{maxWidth:"120px"},children:[g("span",{className:"workspace-tab-icon",children:z?.icon||E||ct}),K("span",{children:[G(A.title,b),A.dirty?" *":""]})]}),z?.renderHeaderActions&&g("span",{className:"tab-header-actions ms-auto d-flex align-items-center me-1",style:{gap:"var(--header-button-gap, 4px)"},onClick:q=>q.stopPropagation(),onMouseDown:q=>q.stopPropagation(),children:z.renderHeaderActions(u)}),z?.canClose!==!1&&g("span",{onClick:q=>{q.stopPropagation(),w(u)},title:G(T.closeTab,b),className:`close-tab-x ${z?.renderHeaderActions?"":"ms-auto"} d-flex align-items-center justify-content-center`,style:{width:"18px",height:"18px"},children:g("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:g("path",{d:"M18 6L6 18M6 6l12 12"})})})]},u)})}),i.panels.length===0&&i.keepOnEmpty&&i.canClose!==!1&&g("span",{onClick:()=>d(i.id),className:"close-tab-x d-flex align-items-center justify-content-center me-2 header-close-empty-group",style:{width:"18px",height:"18px",cursor:"pointer"},title:G(T.closeEmptyGroup,b),children:g("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:g("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),K("div",{className:`flex-grow-1 w-100 h-100 bg-transparent ${p??""}`,style:{position:"relative",overflow:"hidden"},children:[i.activePanelId&&M.panels[i.activePanelId]?g(Et,{panelId:i.activePanelId},i.activePanelId):g("div",{className:"w-100 h-100 d-flex align-items-center justify-content-center font-monospace text-muted small empty-leaf-placeholder",children:g("span",{children:"Empty Workspace Section"})}),M.draggedPanelId!==null&&g("div",{className:"dock-drop-zone-overlay",children:K("div",{className:"dock-target-cross",children:[g("div",{onMouseEnter:()=>y(i.id,"top"),onMouseLeave:()=>y(i.id,null),className:"dock-target-box dock-target-top",children:"\u25B2"}),g("div",{onMouseEnter:()=>y(i.id,"bottom"),onMouseLeave:()=>y(i.id,null),className:"dock-target-box dock-target-bottom",children:"\u25BC"}),g("div",{onMouseEnter:()=>y(i.id,"left"),onMouseLeave:()=>y(i.id,null),className:"dock-target-box dock-target-left",children:"\u25C0"}),g("div",{onMouseEnter:()=>y(i.id,"right"),onMouseLeave:()=>y(i.id,null),className:"dock-target-box dock-target-right",children:"\u25B6"}),g("div",{onMouseEnter:()=>y(i.id,"center"),onMouseLeave:()=>y(i.id,null),className:"dock-target-box dock-target-center",children:"\u25A3"})]})}),M.draggedPanelId!==null&&r!==null&&r.leafId===i.id&&g("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%"}})]})]})},gn=({skin:i="vscode",defaultPanelIcon:l})=>{let r=pe(),{restorePanel:y,minimizePanel:N,requestClosePanel:C,maximizePanel:W,updateFloatingPosition:E,bringToFront:w,floatPanel:M,setDraggedPanelId:S,dockPanelToGroup:d,movePanelOrder:P,dockPanelToWorkspaceEdge:b,setActivePanel:T,setDirection:F}=ke(),{openModal:p}=Se(),h=oe(),u=ae(),R=ut.useCallback(e=>{let a=r.panels[e];C(e,{onConfirm:o=>new Promise(m=>{let c=o||a?.dirtyOptions,v=a?G(a.title,h):"Panel";p(ze,{title:c?.title||u.unsavedChangesTitle,message:c?.message||{id:u.unsavedChangesMessage.id,defaultMessage:u.unsavedChangesMessage.defaultMessage,values:{title:v}},alert:c?.alert,alertType:c?.alertType||"danger",useYesNoTitles:!0,onOK:()=>m(!0),onCancel:()=>m(!1)},{size:"small"})})})},[C,r.panels,h,p,u]),{windowClass:A,windowBodyClass:H}=Pe(),f=fe(null),I=fe(null),[z,B]=we(null),$=fe(null),[Z,ne]=we(!1);ie(()=>()=>{$.current&&clearTimeout($.current)},[]),ie(()=>{z&&(r.minimized.some(a=>a.id===z.id)||B(null))},[r.minimized,z]);let[ce,q]=we(null),V=fe(null),[ee,me]=we({x:0,y:0}),[he,U]=we(null),te=fe(null),X=e=>{U(e),te.current=e},[ye,Me]=we(null),ve=fe(null),$e=(e,a,o,m)=>{let c=m?{leafId:e,panelId:a,index:o,side:m}:null;Me(c),ve.current=c},Ge=(e,a)=>{let o=a?{leafId:e,position:a}:null;q(o),V.current=o},Ye=(e,a)=>{if(a.button!==0)return;let o=a.clientX,m=a.clientY,c=!1,v=D=>{let k=D.clientX-o,L=D.clientY-m;!c&&(Math.abs(k)>5||Math.abs(L)>5)&&(c=!0,S(e)),c&&me({x:D.clientX,y:D.clientY})},x=D=>{if(window.removeEventListener("mousemove",v),window.removeEventListener("mouseup",O),c){let k=V.current,L=ve.current,j=te.current;if(j)b(e,j);else if(L){let J=L.index;L.side==="right"&&(J+=1),P(e,L.leafId,J)}else k?d(e,k.leafId,k.position):M(e,{x:D.clientX-150,y:D.clientY-15,width:450,height:350});S(null),q(null),V.current=null,Me(null),ve.current=null,X(null)}},O=D=>{x(D)};window.addEventListener("mousemove",v),window.addEventListener("mouseup",O)},Xe=(e,a)=>{a.preventDefault();let o=r.panels[e];if(!o)return;let c=_.get(o.component)?.defaultOptions,v=[];c?.canDrag!==!1&&v.push({label:G(u.floatWindow,h),action:()=>M(e)}),c?.canMinimize!==!1&&v.push({label:G(u.minimizePanel,h),action:()=>N(e)}),v.length>0&&c?.canClose!==!1&&v.push({separator:!0}),c?.canClose!==!1&&v.push({label:G(u.closeTab,h),action:()=>R(e)}),v.length!==0&&I.current?.show({event:a,contextMenu:{items:v}})},qe=(e,a)=>{a.preventDefault(),B(null),I.current?.show({event:a,contextMenu:{items:[{label:G(u.restorePanel,h),action:()=>y(e)},{label:G(u.maximizePanel,h),action:()=>W(e)},{separator:!0},{label:G(u.closePanel,h),action:()=>R(e)}]}})};ie(()=>{let e=Object.keys(r.panels);for(let a of Array.from(He.keys()))e.includes(a)||He.delete(a)},[r.panels]),ie(()=>{let e=()=>{r.draggedPanelId!==null&&(S(null),q(null),Me(null))};return window.addEventListener("blur",e),()=>{window.removeEventListener("blur",e)}},[r.draggedPanelId]);let Le=fe(null),[ue,_e]=we({width:1024,height:768});ie(()=>{let e=Le.current;if(!e)return;let a=new ResizeObserver(o=>{if(!o||o.length===0)return;let m=o[0].contentRect;_e({width:Math.max(100,m.width),height:Math.max(100,m.height)})});return a.observe(e),()=>{a.disconnect()}},[]),ie(()=>{let e=Le.current;if(!e)return;let a=()=>{let c=xt(e);F(c?"rtl":"ltr")};a();let o=new MutationObserver(a);o.observe(document.documentElement,{attributes:!0,attributeFilter:["dir"]}),o.observe(document.body,{attributes:!0,attributeFilter:["dir"]});let m=e.closest("[dir]");return m&&m!==document.documentElement&&m!==document.body&&o.observe(m,{attributes:!0,attributeFilter:["dir"]}),()=>{o.disconnect()}},[F]),ie(()=>{let e=ue.width,a=ue.height;r.floating.forEach(o=>{let m=typeof o.width=="string"?parseFloat(o.width):o.width,c=typeof o.height=="string"?parseFloat(o.height):o.height,v=typeof o.x=="string"?parseFloat(o.x):o.x,x=typeof o.y=="string"?parseFloat(o.y):o.y,O=m,D=c,k=v,L=x,j=!1;O>e&&(O=Math.max(200,e-20),j=!0),D>a&&(D=Math.max(150,a-40),j=!0);let J=10;if(o.stickyRight)k=e-O-J,j=!0;else{let Q=e-100;k>Q&&(k=Math.max(0,Q),j=!0)}if(o.stickyBottom)L=a-D-J,j=!0;else{let Q=a-40;L>Q&&(L=Math.max(0,Q),j=!0)}j&&E(o.id,{x:k,y:L,width:O,height:D})})},[ue,r.floating,E]),ie(()=>{let e=a=>{if(a.button!==0)return;let o=a.target;if(!o)return;let m=o.closest(".floating-window");if(m){let v=m.getAttribute("data-window-id");v&&(T(v),w(v));return}let c=o.closest(".workspace-panel");if(c){let v=c.getAttribute("data-active-panel-id");v&&T(v)}};return document.addEventListener("mousedown",e),()=>{document.removeEventListener("mousedown",e)}},[w,T]);let et=(e,a)=>{let o=r.floating.find(J=>J.id===e);if(!o||o.maximized)return;w(e);let m=a.clientX,c=a.clientY,x=a.currentTarget.closest(".floating-window"),O=x?x.offsetLeft:0,D=x?x.offsetTop:0,k=!1,L=J=>{let Q=J.clientX-m,re=J.clientY-c;if(!k&&(Math.abs(Q)>5||Math.abs(re)>5)&&(k=!0,S(e)),k){let ge=O+Q,be=D+re;E(e,{x:ge,y:be,stickyRight:!1,stickyBottom:!1})}},j=()=>{if(k){let J=V.current,Q=ve.current,re=te.current;if(re)b(e,re);else if(Q){let ge=Q.index;Q.side==="right"&&(ge+=1),P(e,Q.leafId,ge)}else J&&d(e,J.leafId,J.position);S(null),q(null),V.current=null,Me(null),ve.current=null,X(null)}window.removeEventListener("mousemove",L),window.removeEventListener("mouseup",j)};window.addEventListener("mousemove",L),window.addEventListener("mouseup",j)},tt=(e,a)=>{a.stopPropagation();let o=r.floating.find(j=>j.id===e);if(!o||o.maximized)return;w(e);let m=a.clientX,c=a.clientY,x=a.currentTarget.closest(".floating-window"),O=x?x.offsetWidth:400,D=x?x.offsetHeight:300,k=j=>{let J=j.clientX-m,Q=j.clientY-c,re=Math.max(200,O+J),ge=Math.max(150,D+Q),be=o.x,Re=o.y,Ee=ue.width,nt=ue.height,Ht=typeof o.x=="string"?parseFloat(o.x):o.x,Bt=typeof o.y=="string"?parseFloat(o.y):o.y,$t=typeof o.width=="string"?parseFloat(o.width):o.width,Gt=typeof o.height=="string"?parseFloat(o.height):o.height,ft=Math.abs(Ht+$t-Ee)<4,mt=Math.abs(Bt+Gt-nt)<4;ft&&(be=Ee-re,be<0&&(be=0,re=Ee)),mt&&(Re=nt-ge,Re<0&&(Re=0,ge=nt)),E(e,{x:be,y:Re,width:re,height:ge,stickyRight:ft,stickyBottom:mt})},L=()=>{window.removeEventListener("mousemove",k),window.removeEventListener("mouseup",L)};window.addEventListener("mousemove",k),window.addEventListener("mouseup",L)},t=e=>{if(f.current){let a=e==="left"?-150:150;f.current.scrollBy({left:a,behavior:"smooth"})}},[s,n]=we("dark");return ie(()=>{let e=()=>{let o=document.documentElement.getAttribute("data-bs-theme")==="light"?"light":"dark";n(o)};e();let a=new MutationObserver(e);return a.observe(document.documentElement,{attributes:!0,attributeFilter:["data-bs-theme"]}),()=>a.disconnect()},[]),K("div",{"data-workspace-skin":i,"data-bs-theme":s,className:"d-flex flex-column w-100 h-100 overflow-hidden",style:{userSelect:"none"},dir:r.dir,children:[K("div",{ref:Le,className:`flex-grow-1 w-100 position-relative ${r.draggedPanelId?"dragging-active":""}`,style:{overflow:"hidden"},children:[r.draggedPanelId!==null&&K(fn,{children:[g("div",{className:"workspace-edge-trigger edge-trigger-left",onMouseEnter:()=>X("left"),onMouseLeave:()=>X(null)}),g("div",{className:"workspace-edge-trigger edge-trigger-right",onMouseEnter:()=>X("right"),onMouseLeave:()=>X(null)}),g("div",{className:"workspace-edge-trigger edge-trigger-top",onMouseEnter:()=>X("top"),onMouseLeave:()=>X(null)}),g("div",{className:"workspace-edge-trigger edge-trigger-bottom",onMouseEnter:()=>X("bottom"),onMouseLeave:()=>X(null)})]}),r.draggedPanelId!==null&&he!==null&&g("div",{className:`workspace-edge-preview edge-preview-${he}`}),g("div",{className:"w-100 h-100",style:{overflow:"hidden",position:"relative"},children:r.gridRoot?g(Nt,{node:r.gridRoot,path:[],onTabRightClick:Xe,activeDropZone:ce,onHoverDropZone:Ge,onTabDragStart:Ye,hoveredTab:ye,onTabHover:$e,defaultPanelIcon:l,onRequestClosePanel:R}):g("div",{className:"w-100 h-100 d-flex align-items-center justify-content-center text-muted font-monospace small",children:"Grid Empty"})}),r.floating.map(e=>{let a=r.panels[e.id];if(!a)return null;let o=e.maximized,m=r.draggedPanelId===e.id,c=r.activePanelId===e.id,x=_.get(a.component)?.defaultOptions;return K("div",{"data-window-id":e.id,dir:r.dir,onMouseDownCapture:()=>{T(e.id),w(e.id)},className:`floating-window ${o?"maximized":""} ${c?"v2-window-focused":""} ${A??""}`,style:{position:"absolute",left:o?0:typeof e.x=="number"?`${e.x}px`:e.x,top:o?0:typeof e.y=="number"?`${e.y}px`:e.y,width:o?"100%":typeof e.width=="number"?`${e.width}px`:e.width,height:o?"100%":typeof e.height=="number"?`${e.height}px`:e.height,zIndex:e.z,pointerEvents:m?"none":"auto"},children:[K("div",{onDoubleClick:()=>W(e.id),onMouseDown:O=>{x?.canDrag!==!1&&et(e.id,O)},className:"floating-window-titlebar d-flex flex-row justify-content-between align-items-center cursor-move",style:{cursor:o||x?.canDrag===!1?"default":"move"},children:[K("span",{className:"floating-window-title text-truncate me-2 d-flex align-items-center",children:[g("span",{className:"window-title-icon",children:x?.icon||l||ct}),K("span",{children:[G(a.title,h),a.dirty?" *":""]})]}),K("div",{className:"d-flex align-items-center",style:{gap:"var(--header-button-gap, 4px)"},onMouseDown:O=>O.stopPropagation(),children:[x?.renderHeaderActions&&g("div",{className:"window-header-actions d-flex align-items-center me-1",style:{gap:"var(--header-button-gap, 4px)"},children:x.renderHeaderActions(e.id)}),x?.canDrag!==!1&&g("button",{type:"button",title:G(u.windowAnchoringOptions,h),onClick:O=>{let D=!!e.stickyRight,k=!!e.stickyBottom;I.current?.show({event:O,contextMenu:{items:[{label:G(u.anchorToRightEdge,h),checkbox:{active:!0,enabled:!0,value:D},action:()=>{let L=ue.width,j=typeof e.width=="string"?parseFloat(e.width):e.width;D?E(e.id,{stickyRight:!1}):E(e.id,{x:L-j-10,stickyRight:!0})}},{label:G(u.anchorToBottomEdge,h),checkbox:{active:!0,enabled:!0,value:k},action:()=>{let L=ue.height,j=typeof e.height=="string"?parseFloat(e.height):e.height;k?E(e.id,{stickyBottom:!1}):E(e.id,{y:L-j-10,stickyBottom:!0})}}]}})},className:"custom-tab-btn btn-anchor-tab",children:K("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:[g("circle",{cx:"12",cy:"5",r:"2"}),g("path",{d:"M12 7v7m0 0a4 4 0 0 1-4-4M12 14a4 4 0 0 0 4-4M5 18h14"})]})}),g("button",{type:"button",title:o?G(u.restoreSize,h):G(u.maximize,h),onClick:()=>W(e.id),className:"custom-tab-btn btn-maximize-tab",children:g("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:g("rect",{x:"4",y:"4",width:"16",height:"16",rx:"1.5"})})}),x?.canMinimize!==!1&&g("button",{type:"button",title:G(u.minimize,h),onClick:()=>N(e.id),className:"custom-tab-btn btn-minimize-tab",children:g("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"3",children:g("path",{d:"M5 12h14"})})}),x?.canClose!==!1&&g("button",{type:"button",title:G(u.close,h),onClick:()=>R(e.id),className:"custom-tab-btn btn-close-tab",children:g("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"3",children:g("path",{d:"M18 6L6 18M6 6l12 12"})})})]})]}),g("div",{className:`flex-grow-1 w-100 overflow-hidden ${H??""}`,style:{position:"relative"},children:g(Et,{panelId:e.id},e.id)}),!o&&g("div",{onMouseDown:O=>tt(e.id,O),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&&K("div",{className:"flex-shrink-0 w-100 d-flex flex-row align-items-center taskbar-footer-container px-3 py-1.5 justify-content-center",style:{height:"48px",zIndex:100},children:[g("button",{type:"button",onClick:()=>t("left"),className:"btn btn-sm btn-link taskbar-nav-btn text-decoration-none py-0 font-monospace",style:{display:r.minimized.length>4?"block":"none"},children:"\u25C0"}),g("div",{ref:f,className:"d-flex flex-row gap-2 overflow-x-auto align-items-center mx-2 px-1 py-0.5 scrollbar-hidden",style:{maxWidth:"800px",scrollbarWidth:"none",scrollSnapType:"x mandatory"},children:r.minimized.map(e=>{let o=_.get(e.component)?.defaultOptions?.icon||l||ct;return g("div",{onClick:()=>{B(null),y(e.id)},onContextMenu:m=>qe(e.id,m),onMouseEnter:m=>{if(Z)return;$.current&&clearTimeout($.current);let c=m.currentTarget.getBoundingClientRect();m.clientX>=c.left&&m.clientX<=c.right&&m.clientY>=c.top&&m.clientY<=c.bottom&&B({id:e.id,rect:c,title:e.title,component:e.component})},onMouseLeave:()=>{$.current=setTimeout(()=>{B(null)},150)},className:"taskbar-glassmorphic-item rounded d-flex align-items-center justify-content-center cursor-pointer hover-elevate",style:{backdropFilter:"blur(6px)",transition:"all 0.2s",cursor:"pointer",scrollSnapAlign:"start",width:"38px",height:"38px",position:"relative",padding:0},children:g("span",{className:"taskbar-item-icon d-flex align-items-center justify-content-center",children:o})},e.id)})}),z&&Tt(K("div",{className:"taskbar-item-tooltip d-flex flex-column gap-1",dir:r.dir,style:{position:"fixed",left:`${z.rect.left+z.rect.width/2}px`,top:`${z.rect.top-8}px`,transform:"translateX(-50%) translateY(-100%)",opacity:1,pointerEvents:"auto",zIndex:999999},onMouseEnter:()=>{$.current&&clearTimeout($.current)},onMouseLeave:()=>{B(null)},onClick:()=>{y(z.id),B(null)},children:[K("div",{className:"d-flex flex-row align-items-center justify-content-between w-100 gap-3 px-1 py-0.5",children:[K("span",{className:"tooltip-title-text text-truncate",style:{maxWidth:"140px"},children:[G(z.title,h),r.panels[z.id]?.dirty?" *":""]}),g("span",{onClick:e=>{e.stopPropagation(),R(z.id),B(null)},title:G(u.closePanel,h),className:"tooltip-close-x d-flex align-items-center justify-content-center",children:g("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:g("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),g(dn,{panelId:z.id})]}),document.body),g("button",{type:"button",onClick:()=>t("right"),className:"btn btn-sm btn-link taskbar-nav-btn text-decoration-none py-0 font-monospace",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 o=zt(e);return Tt(g(cn,{panelId:e,children:g("div",{style:{width:"100%",height:"100%"},children:ln(e,a.component)})}),o,e)}),g(rn,{ref:I,id:"workspace-context-menu",theme:"dark",onShow:()=>ne(!0),onHide:()=>ne(!1)}),r.draggedPanelId!==null&&!r.floating.some(e=>e.id===r.draggedPanelId)&&K("div",{className:"position-fixed bg-black bg-opacity-80 border border-info rounded text-info font-monospace px-3 py-1.5 shadow-lg d-flex align-items-center gap-2",style:{left:ee.x+12,top:ee.y+12,zIndex:1e5,pointerEvents:"none",fontSize:"0.75rem",boxShadow:"0 8px 24px rgba(0,0,0,0.5)",borderLeft:"3px solid var(--accent-color)",whiteSpace:"nowrap"},children:["\u{1F4C4} ",G(r.panels[r.draggedPanelId]?.title,h)||"Tab"]})]})},pn=gn;import{useCallback as Be,useRef as Ft,useEffect as mn,useState as hn,useMemo as yn}from"react";import{Fragment as xn,jsx as de,jsxs as gt}from"react/jsx-runtime";var bn=({modal:i,index:l,isTopmost:r})=>{let{close:y,openModal:N,updateInstance:C,setDirty:W}=Se(),E=oe(),w=ae(),{dir:M}=pe(),{modalClass:S,modalBodyClass:d}=Pe(),P=Ft(null),{id:b,Component:T,props:F,options:p,dirty:h,dirtyOptions:u}=i,R=p,[A,H]=hn(R.icon||null),f=Ft(R);f.current=R;let I=G(R.title,E),z=Be(async U=>{if(U?.force){y(b);return}if(P.current){if(!await P.current())return;y(b);return}if(h){N(ze,{title:u?.title||w.unsavedChangesTitle,message:u?.message||{id:w.unsavedChangesMessage.id,defaultMessage:w.unsavedChangesMessage.defaultMessage,values:{title:I}},alert:u?.alert,alertType:u?.alertType||"danger",useYesNoTitles:!0,onOK:()=>y(b)},{size:"small"});return}y(b)},[y,N,b,h,u,I,w]),B=Be((U,te)=>W(b,U,te),[W,b]),$=Be(U=>C(b,{options:{...f.current,title:U}}),[C,b]),Z=Be(U=>H(U),[]),ne=Be(U=>(P.current=U,()=>{P.current=null}),[]),ce=yn(()=>({requestClose:z,setDirty:B,setTitle:$,setIcon:Z,onCloseRequested:ne,containerType:"modal",instanceId:b}),[z,B,$,Z,ne,b]),q=h?`${I} *`:I,V=R.size?`v2-modal-size-${R.size}`:"v2-modal-size-auto",ee=R.closable!==!1;mn(()=>{if(!r||!ee)return;let U=te=>{te.key==="Escape"&&(te.stopPropagation(),z())};return document.addEventListener("keydown",U),()=>document.removeEventListener("keydown",U)},[z,ee,r]);let he=1e4+l*10;return gt("div",{className:"v2-modal-overlay",style:{zIndex:he},dir:M,children:[de("div",{className:"v2-modal-curtain",onClick:ee?()=>z():void 0}),gt("div",{className:`v2-modal-window ${V} ${S??""}`,children:[gt("div",{className:"v2-modal-header",children:[A&&de("div",{className:"v2-modal-icon",children:A}),de("h4",{className:"v2-modal-title",children:q}),ee&&de("button",{className:"v2-modal-close-button",onClick:()=>z(),title:E(w.closeTooltip),type:"button",children:de("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:de("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),de("div",{className:`v2-modal-body ${d??""}`,children:de(Ie,{value:ce,children:de(T,{...F,panelId:b})})})]})]})},vn=()=>{let{modals:i}=xe();return i.length===0?null:de(xn,{children:i.map((l,r)=>de(bn,{modal:l,index:r,isTopmost:r===i.length-1},l.id))})},Pn=vn;import{useCallback as Fe,useRef as Ot,useEffect as Wt,useState as wn,useMemo as Cn}from"react";import{Fragment as Sn,jsx as se,jsxs as pt}from"react/jsx-runtime";var Ze=({panel:i,position:l,defaultWidth:r})=>{let{close:y,openModal:N,updateInstance:C,setDirty:W,registerCloseHandler:E,unregisterCloseHandler:w}=Se(),{modals:M}=xe(),S=oe(),d=ae(),{dir:P}=pe(),{sidePanelClass:b,sidePanelBodyClass:T}=Pe(),F=Ot(null),{id:p,Component:h,props:u,options:R,dirty:A,dirtyOptions:H}=i,f=R,[I,z]=wn(f.icon||null),B=Ot(f);B.current=f;let $=G(f.title,S),Z=Fe(async X=>{if(X?.force){y(p);return}if(F.current){if(!await F.current())return;y(p);return}if(A){N(ze,{title:H?.title||d.unsavedChangesTitle,message:H?.message||{id:d.unsavedChangesMessage.id,defaultMessage:d.unsavedChangesMessage.defaultMessage,values:{title:$}},alert:H?.alert,alertType:H?.alertType||"danger",useYesNoTitles:!0,onOK:()=>y(p)},{size:"small"});return}y(p)},[y,N,p,A,H,$,d]),ne=Fe(async()=>F.current?await F.current():!A,[A]);Wt(()=>(E(p,ne),()=>w(p)),[p,ne,E,w]);let ce=Fe((X,ye)=>W(p,X,ye),[W,p]),q=Fe(X=>C(p,{options:{...B.current,title:X}}),[C,p]),V=Fe(X=>z(X),[]),ee=Fe(X=>(F.current=X,()=>{F.current=null}),[]),me=Cn(()=>({requestClose:Z,setDirty:ce,setTitle:q,setIcon:V,onCloseRequested:ee,containerType:l==="left"?"left-panel":"right-panel",instanceId:p}),[Z,ce,q,V,ee,l,p]),he=A?`${$} *`:$;Wt(()=>{let X=ye=>{ye.key==="Escape"&&M.length===0&&Z()};return document.addEventListener("keydown",X),()=>document.removeEventListener("keydown",X)},[Z,M.length]);let U=f.width||r||400,te=typeof U=="number"?`${U}px`:U;return se("div",{className:`v2-side-panel v2-side-panel-${l} v2-side-panel-visible ${b??""}`,style:{width:te},dir:P,children:pt("div",{className:"v2-side-panel-window",children:[pt("div",{className:"v2-side-panel-header",children:[I&&se("div",{className:"v2-side-panel-icon",children:I}),se("h4",{className:"v2-side-panel-title",children:he}),se("button",{className:"v2-side-panel-close-button",onClick:()=>Z(),title:S(d.closeTooltip),type:"button",children:se("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:se("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),se("div",{className:`v2-side-panel-body ${T??""}`,children:se(Ie,{value:me,children:se(h,{...u,panelId:p})})})]})})},Mn=({defaultWidth:i})=>{let{leftPanel:l,rightPanel:r}=xe();return pt(Sn,{children:[l&&se(Ze,{panel:l,position:"left",defaultWidth:i},l.id),r&&se(Ze,{panel:r,position:"right",defaultWidth:i},r.id)]})},Rn=({defaultWidth:i})=>{let{leftPanel:l}=xe();return l?se(Ze,{panel:l,position:"left",defaultWidth:i},l.id):null},kn=({defaultWidth:i})=>{let{rightPanel:l}=xe();return l?se(Ze,{panel:l,position:"right",defaultWidth:i},l.id):null},In=Mn;import{useState as Dt,useEffect as Qe,useRef as Tn,useCallback as At,useImperativeHandle as zn,forwardRef as Ln}from"react";import{Fragment as Nn,jsx as Ce,jsxs as Ve}from"react/jsx-runtime";var En=Ln(function({position:l="right",tabs:r,drawerWidth:y="220px",activeTabId:N,onActiveTabChange:C,children:W},E){let w=N!==void 0,M=oe(),S=ae(),[d,P]=Dt(null),b=w?N:d,[T,F]=Dt(()=>{let f=new Set;for(let I of r)I.eagerMount&&f.add(I.id);return f});Qe(()=>{let f=r.filter(I=>I.eagerMount&&!T.has(I.id));f.length>0&&F(I=>{let z=new Set(I);for(let B of f)z.add(B.id);return z})},[r]);let p=Tn(b??null);Qe(()=>{p.current=b??null},[b]);let h=At(f=>{w||P(f),C?.(f)},[w,C]);zn(E,()=>({openTab:f=>h(f),closeDrawer:()=>h(null),getActiveTab:()=>p.current}),[h]);let u=f=>{h(b===f?null:f)},R=At(()=>h(null),[h]);Qe(()=>{b&&!T.has(b)&&F(f=>{let I=new Set(f);return I.add(b),I})},[b,T]),Qe(()=>{b===null&&F(f=>{let I=!1,z=new Set(f);for(let B of f){let $=r.find(Z=>Z.id===B);$&&!$.eagerMount&&!$.preserveState&&(z.delete(B),I=!0)}return I?z:f})},[b,r]);let A=Ce("div",{className:`sidebar-tabs-strip ${l}`,style:{width:"56px",height:"100%"},children:r.map(f=>{let I=b===f.id;return Ce("button",{type:"button",onClick:()=>u(f.id),className:`sidebar-tab-btn ${I?"active":""}`,title:f.label,"aria-pressed":I,children:f.icon},f.id)})}),H=Ce("div",{className:`sidebar-content-drawer h-100 ${l}`,style:{width:b?y:"0px",minWidth:b?y:"0px",overflow:"hidden",flexShrink:0},children:r.map(f=>{if(!T.has(f.id))return null;let z=b===f.id,B=()=>h(f.id);return Ve("div",{style:{display:z?"flex":"none",flexDirection:"column",height:"100%",width:"100%"},children:[Ve("div",{className:"d-flex align-items-center justify-content-between border-bottom border-secondary-subtle px-3 py-2 flex-shrink-0",style:{background:"rgba(0,0,0,0.08)",minHeight:"38px"},children:[Ce("span",{className:"sidebar-header-title",children:f.label}),Ce("button",{type:"button",onClick:R,className:"btn btn-link p-0 text-secondary d-flex align-items-center",style:{textDecoration:"none"},title:M(S.closePanelTooltip),"aria-label":M(S.closePanelTooltip),children:Ve("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[Ce("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),Ce("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})})]}),Ce("div",{className:"flex-grow-1 overflow-auto",children:f.renderContent(f.id,R,B)})]},f.id)})});return Ve(Nn,{children:[l==="left"&&A,l==="left"&&H,W,l==="right"&&H,l==="right"&&A]})});export{ze as ConfirmationForm,at as FormContainerContext,Ie as FormContainerProvider,Rn as LeftPanelRenderer,Pn as ModalStackRenderer,on as PanelProvider,_ as PanelRegistry,kn as RightPanelRenderer,In as SidePanelRenderer,En as Sidebar,pn as WindowManager,Ut as WindowManagerProvider,Oe as defaultPredefinedMessages,G as formatLabel,rt as useFormContainer,oe as useFormatMessage,Se as usePanelActions,Jt as usePanelContext,xe as usePanelState,ae as usePredefinedMessages,Pe as useStyleClasses,ke as useWindowManagerActions,pe as useWindowManagerState};
2
2
  //# sourceMappingURL=index.js.map