react-dockable-desktop 4.2.1 → 4.3.0

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