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