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