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