@aiquants/resize-panels 2.2.0 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,2 @@
1
+ "use strict";const l=require("react"),k=require("react/jsx-runtime"),Ie=require("tailwind-merge"),Ln=require("react-dom"),kn=12,I=1e-6,mt=8,gt=6,bt=48,xt=80,St=2,yt=32,Et=64,zt=8,Pt=8,wt=4,Nn=10,Fn=.05,Bn=10,Rt=.05,vt=20,Lt=.05,Nt=(e,n=0)=>{if(!Number.isFinite(e))return e;const t=10**n,r=e*t,o=Math.floor(r),i=r-o,s=Number.EPSILON*Math.max(1,Math.abs(r));return i<.5-s?o/t:i>.5+s?(o+1)/t:(o%2===0?o:o+1)/t},It=6,an=(e,n)=>n<=0?0:Nt(e/n*100,It),_t=(e,n)=>n<=0?0:e/100*n,$n=(e,n="percentage")=>{if(e!==void 0)return typeof e=="number"?{value:e,unit:n}:e},Ce=(e,n,t)=>e===void 0?n:typeof e=="number"?e/100*t:e.unit==="pixels"?e.value:e.value/100*t,Ee=(e,n,t)=>Math.min(Math.max(e,n),t),cn=e=>!Number.isFinite(e)||e<=0?0:Math.max(0,Math.min(kn,Bn,e*Fn)),he=e=>{if(!e)return 0;const n=Number.parseFloat(e);return Number.isFinite(n)?n:0},ze=(e,n,t)=>{const r=n==="horizontal",o=typeof window<"u"?window.getComputedStyle(e):null,i=o?r?he(o.paddingLeft)+he(o.paddingRight):he(o.paddingTop)+he(o.paddingBottom):0,s=o?r?he(o.borderLeftWidth)+he(o.borderRightWidth):he(o.borderTopWidth)+he(o.borderBottomWidth):0,a=t?.contentBoxSize?.[0],u=a?r?a.inlineSize:a.blockSize:void 0,c=r?e.clientWidth:e.clientHeight,b=c>0?Math.max(0,c-i):Math.max(0,(r?e.offsetWidth:e.offsetHeight)-i-s),f=u??b;return{content:Math.max(0,f),border:Math.max(0,f+i+s)}},At="[data-panel-group-direction]",Qe="[data-panel-id], [data-resize-handle-anchor]",Ot="[data-panel-id]",_e=e=>e?.closest(At)??null,un=e=>Array.from(e.querySelectorAll(Qe)).filter(n=>{if(_e(n)!==e)return!1;const t=n.parentElement?.closest(Ot);return!(t&&e.contains(t))}),Mt=e=>{const n=t=>{for(const r of Array.from(t))if(r instanceof Element&&(r.matches(Qe)||r.querySelector(Qe)!==null))return!0;return!1};return e.some(t=>n(t.addedNodes)||n(t.removedNodes))},Ct=(e,n)=>{if(typeof window>"u")return 1;const t=n==="horizontal",r=e.getBoundingClientRect(),o=t?r.width:r.height,i=window.getComputedStyle(e),s=t?i.width:i.height;if(!s.endsWith("px"))return 1;const a=Number.parseFloat(s);return o>0&&Number.isFinite(a)&&a>0?o/a:1},en=(e,n)=>{try{localStorage.setItem(`panel-layout-${e}`,JSON.stringify(n))}catch(t){console.warn("Failed to save panel layout:",t)}},Hn=e=>{try{const n=localStorage.getItem(`panel-layout-${e}`);if(!n)return null;const t=JSON.parse(n);if(!Array.isArray(t))return null;const r=o=>typeof o=="object"&&o!==null&&typeof o.id=="string"&&Number.isFinite(o.size);return t.every(r)?t:null}catch(n){return console.warn("Failed to load panel layout:",n),null}},nn=0,jn=1,Te=e=>Number.isFinite(e)&&e>0?e:0,J=e=>e.sizeUnit==="pixels",me=(e,n)=>{const t=Math.max(0,Te(Ce(e.minSize,0,n))),r=Math.max(t,Te(Ce(e.maxSize,n,n)));return{min:t,max:r}},Tt=(e,n)=>{const t=e.map(o=>o.min),r=e.map(()=>!1);for(;;){let o=0,i=0,s=0;for(let f=0;f<e.length;f+=1){if(r[f]){i+=t[f];continue}s+=1,o+=e[f].weight}if(s===0)return t;const a=n-i;if(o<=0){for(let f=0;f<e.length;f+=1)r[f]||(t[f]=e[f].min);return t}const u=Math.max(0,a/o);let c=0;for(let f=0;f<e.length;f+=1){if(r[f])continue;const S=u*e[f].weight,m=Ee(S,e[f].min,e[f].max);t[f]=m,c+=m-S}let b=!1;for(let f=0;f<e.length;f+=1){if(r[f])continue;const S=u*e[f].weight;c>I&&t[f]>S+I?(r[f]=!0,t[f]=e[f].min,b=!0):c<-I&&t[f]<S-I&&(r[f]=!0,t[f]=e[f].max,b=!0)}if(!b)return t}},Dt=(e,n,t)=>{const{min:r,max:o}=me(e,t);if(J(e))return{index:n,weight:0,target:Ee(Te(e.preferredPixelSize),r,o),priority:e.pixelAdjustPriority??0,tier:nn,min:r,max:o};const i=Te(e.preferredPercentageSize),s=e.flexAdjustPriority!==void 0;return{index:n,weight:i,target:s?Ee(i/100*t,r,o):null,priority:e.flexAdjustPriority??0,tier:jn,min:r,max:o}},In=(e,n,t,r)=>{let o=r;for(const i of e){if(o<=I)break;const s=t(i)-n[i.index];if(s<=0)continue;const a=Math.min(s,o);n[i.index]+=a,o-=a}return o},tn=(e,n,t)=>{if(e.length===0||t<=I)return t;const r=e.map(s=>({...s,min:n[s.index]})),o=Tt(r,t+r.reduce((s,a)=>s+a.min,0));let i=0;for(let s=0;s<e.length;s+=1)i+=o[s]-n[e[s].index],n[e[s].index]=o[s];return t-i},kt=(e,n,t)=>tn(e.map(r=>({...r,weight:1})),n,t),Ft=(e,n)=>e.tier!==n.tier?e.tier-n.tier:e.priority!==n.priority?n.priority-e.priority:e.index-n.index,Gn=(e,n)=>{const t=e.map(()=>0);if(!Number.isFinite(n)||n<=0||e.length===0)return{sizes:t,violation:null};const r=[];for(let m=0;m<e.length;m+=1){const G=e[m];G.collapsed||r.push(Dt(G,m,n))}if(r.length===0)return{sizes:t,violation:null};let o=0,i=0;for(const m of r)t[m.index]=m.min,o+=m.min,i+=m.max;const s=Bt(o,i,n);let a=n-o;if(a<=I)return{sizes:t,violation:s};const u=r.filter(m=>m.target!==null).sort(Ft),c=r.filter(m=>m.target===null&&m.weight>0),b=r.filter(m=>m.tier!==nn&&m.weight<=0),f=u.filter(m=>m.tier===jn),S=u.filter(m=>m.tier===nn);return a=In(u,t,m=>m.target??m.min,a),a=tn(c,t,a),a=tn(f,t,a),a=In(S,t,m=>m.max,a),a=kt(b,t,a),{sizes:t,violation:s}},Bt=(e,n,t)=>e-t>I?{reason:"minimum-exceeded",totalMinimumSize:e,totalMaximumSize:n,availableContainerSize:t}:t-n>I?{reason:"maximum-insufficient",totalMinimumSize:e,totalMaximumSize:n,availableContainerSize:t}:null,dn=l.createContext(null),Be=()=>{const e=l.useContext(dn);if(!e)throw new Error("usePanelGroup must be used within a PanelGroup");return e};var $e=(e=>(e[e.DEBUG=0]="DEBUG",e[e.INFO=1]="INFO",e[e.WARN=2]="WARN",e[e.ERROR=3]="ERROR",e[e.NONE=4]="NONE",e))($e||{});const Z=class Z{constructor(n=2,t="[resize-panels]",r=console){this.level=n,this.prefix=t,this.impl=r,Z.instances.add(this)}static setLevel(n){for(const t of Z.instances)t.setLevel(n)}setLevel(n){this.level=n}static setImplementation(n){for(const t of Z.instances)t.setImplementation(n)}setImplementation(n){this.impl=n}static setPrefix(n){for(const t of Z.instances)t.setPrefix(n)}setPrefix(n){this.prefix=n}enabledFor(n){return this.level<=n}formatMessage(n){return typeof n=="string"?[`${this.prefix} ${n}`]:[this.prefix,n]}static debug(n,...t){Z.instance.debug(n,...t)}debug(n,...t){this.level<=0&&this.impl.debug(...this.formatMessage(n),...t)}static info(n,...t){Z.instance.info(n,...t)}info(n,...t){this.level<=1&&this.impl.info(...this.formatMessage(n),...t)}static warn(n,...t){Z.instance.warn(n,...t)}warn(n,...t){this.level<=2&&this.impl.warn(...this.formatMessage(n),...t)}static error(n,...t){Z.instance.error(n,...t)}error(n,...t){this.level<=3&&this.impl.error(...this.formatMessage(n),...t)}};Z.instances=new Set,Z.instance=new Z(2,"[resize-panels]");let Ae=Z;const Un=new Ae($e.INFO,"[resize-panels]"),Wn={containerSize:0,panels:[],violation:null},_n=(e,n)=>e===null||n===null?e===n:e.reason===n.reason&&Math.abs(e.totalMinimumSize-n.totalMinimumSize)<=I&&Math.abs(e.totalMaximumSize-n.totalMaximumSize)<=I&&Math.abs(e.availableContainerSize-n.availableContainerSize)<=I,ce=(e,n)=>{const{sizes:t,violation:r}=Gn(e,n);let o=!1;const i=e.map((a,u)=>{const c=a.collapsed?0:t[u];return Math.abs(a.size-c)<=I?a:(o=!0,{...a,size:c})}),s={containerSize:n,panels:o?i:e,violation:r};return $t(s),s},qn=e=>{if(e.containerSize<=0||e.violation!==null)return null;let n=0,t=0;for(const o of e.panels)o.collapsed||(n+=o.size,t+=1);if(t===0)return null;const r=I*Math.max(1,e.containerSize);return!Number.isFinite(n)||Math.abs(n-e.containerSize)>r?{allocatedTotal:n,containerSize:e.containerSize}:null},$t=e=>{const n=qn(e);n&&Un.error("Allocated sizes do not fill the container.",{...n,panels:e.panels.map(t=>({id:t.id,size:t.size,collapsed:t.collapsed}))})},ue=(e,n)=>e.panels===n.panels&&e.containerSize===n.containerSize&&_n(e.violation,n.violation)?e:{containerSize:n.containerSize,panels:n.panels,violation:_n(e.violation,n.violation)?e.violation:n.violation},Ht=(e,n)=>{const t=e.sizeUnit==="pixels"?e.preferredPixelSize:e.preferredPercentageSize;return{...e,size:0,collapsed:e.collapsed,collapsedByDirection:e.collapsed?n:null,preferenceBeforeCollapse:t,authoredPreference:t}},Ke=e=>e.collapseFromStart?"start":e.collapseFromEnd?"end":null,jt=(e,n)=>{if(n<=0)return e;const t=cn(n);return e.map(r=>{if(r.collapsed)return r;const o=J(r)?r.size:r.size/n*100,i=J(r)?r.preferredPixelSize:r.preferredPercentageSize,s=r.size>t?o:r.preferenceBeforeCollapse;return i===o&&s===r.preferenceBeforeCollapse?r:J(r)?{...r,preferredPixelSize:o,preferenceBeforeCollapse:s}:{...r,preferredPercentageSize:o,preferenceBeforeCollapse:s}})},rn=(e,n,t)=>{if(J(e)){const o=Math.max(0,n);return{...e,preferredPixelSize:o,preferenceBeforeCollapse:o}}if(t<=0)return e;const r=Math.max(0,n/t*100);return{...e,preferredPercentageSize:r,preferenceBeforeCollapse:r}},Vn=(e,n)=>{const t=e.collapsed?e.preferenceBeforeCollapse:J(e)?e.preferredPixelSize:e.preferredPercentageSize;return J(e)?t:t/100*n},Gt=(e,n,t,r)=>{const o=Math.max(0,Math.min(t,r)),i=e.filter(c=>c.id!==n&&!c.collapsed&&!J(c)),s=e.reduce((c,b)=>b.id!==n&&!b.collapsed&&J(b)?c+b.size:c,0),a=i.reduce((c,b)=>c+b.size,0),u=Math.max(0,r-o-s);return e.map(c=>{if(c.id===n)return rn(c,o,r);if(c.collapsed||J(c)||i.length===0)return c;const b=a>0?c.size/a*u:u/i.length;return rn(c,b,r)})},Yn=(e,n)=>{switch(n.type){case"SET_CONTAINER_SIZE":return!Number.isFinite(n.containerSize)||n.containerSize<0||n.containerSize===e.containerSize?e:ue(e,ce(e.panels,n.containerSize));case"REGISTER_PANEL":{const t=e.panels.findIndex(f=>f.id===n.panel.id);if(t===-1){const f=[...e.panels,Ht(n.panel,Ke(n.panel))];return ue(e,ce(f,e.containerSize))}const r=e.panels[t],o=n.panel.sizeUnit==="pixels"?n.panel.preferredPixelSize:n.panel.preferredPercentageSize,i=o!==r.authoredPreference||n.panel.sizeUnit!==r.sizeUnit,s=r.collapsedByDirection==="start"?n.panel.collapseFromStart:r.collapsedByDirection==="end"?n.panel.collapseFromEnd:!1,a=n.panel.collapseFromStart||n.panel.collapseFromEnd,u=r.collapsed&&a,c={...r,...n.panel,collapsed:u,collapsedByDirection:u?s?r.collapsedByDirection:Ke(n.panel):null,preferredPercentageSize:i?n.panel.preferredPercentageSize:r.preferredPercentageSize,preferredPixelSize:i?n.panel.preferredPixelSize:r.preferredPixelSize,preferenceBeforeCollapse:i?o:r.preferenceBeforeCollapse,authoredPreference:o},b=[...e.panels];return b[t]=c,ue(e,ce(b,e.containerSize))}case"UNREGISTER_PANEL":{const t=e.panels.filter(r=>r.id!==n.id);return t.length===e.panels.length?e:ue(e,ce(t,e.containerSize))}case"REORDER_PANELS":{if(n.ids.length!==e.panels.length||new Set(n.ids).size!==n.ids.length)return e;const t=new Map(e.panels.map(o=>[o.id,o])),r=[];for(const o of n.ids){const i=t.get(o);if(!i)return e;r.push(i)}return r.every((o,i)=>o===e.panels[i])?e:ue(e,ce(r,e.containerSize))}case"RESIZE_PANELS":{const t=e.panels.findIndex(G=>G.id===n.startId),r=e.panels.findIndex(G=>G.id===n.endId);if(t===-1||r===-1)return e;const o=e.panels[t],i=e.panels[r];if(o.collapsed||i.collapsed||e.containerSize<=0||!Number.isFinite(n.startSize))return e;const s=o.size+i.size,a=me(o,e.containerSize),u=me(i,e.containerSize),c=Math.max(a.min,s-u.max),b=Math.min(a.max,s-u.min);if(c-b>I)return e;const f=Ee(n.startSize,c,Math.max(c,b)),S=s-f;if(Math.abs(f-o.size)<=I)return e;const m=[...e.panels];return m[t]={...o,size:f},m[r]={...i,size:S},ue(e,ce(jt(m,e.containerSize),e.containerSize))}case"COLLAPSE_PANEL":{const t=e.panels.findIndex(s=>s.id===n.id);if(t===-1)return e;const r=e.panels[t];if(!(n.from==="start"?r.collapseFromStart:r.collapseFromEnd)||r.collapsed)return e;const i=[...e.panels];return i[t]={...r,collapsed:!0,collapsedByDirection:n.from},ue(e,ce(i,e.containerSize))}case"EXPAND_PANEL":{const t=e.panels.findIndex(u=>u.id===n.id);if(t===-1||n.targetSize!==void 0&&e.containerSize<=0)return e;const r=e.panels[t];if(!((n.from==="start"?r.collapseFromStart:r.collapseFromEnd)&&r.collapsed)||r.collapsedByDirection!==null&&r.collapsedByDirection!==n.from)return e;const i={...r,collapsed:!1,collapsedByDirection:null,preferredPixelSize:J(r)?r.preferenceBeforeCollapse:r.preferredPixelSize,preferredPercentageSize:J(r)?r.preferredPercentageSize:r.preferenceBeforeCollapse},s=[...e.panels];s[t]=i;const a=n.targetSize===void 0?s:Gt(s,n.id,n.targetSize,e.containerSize);return ue(e,ce(a,e.containerSize))}case"RESTORE_LAYOUT":{if(n.entries.length!==e.panels.length||e.containerSize<=0)return e;const t=new Map(n.entries.map(o=>[o.id,o]));if(e.panels.some(o=>!t.has(o.id)))return e;const r=e.panels.map(o=>{const i=t.get(o.id);if(!i)return o;const s=rn(o,i.size,e.containerSize),a=o.collapseFromStart||o.collapseFromEnd;return i.collapsed&&a?{...s,collapsed:!0,collapsedByDirection:o.collapsedByDirection??Ke(o)}:s.collapsed?{...s,collapsed:!1,collapsedByDirection:null}:s});return Un.debug("restore layout",{containerSize:e.containerSize,entries:n.entries}),ue(e,ce(r,e.containerSize))}default:return e}},Ut={layout:Wn,source:null},Wt=e=>{switch(e.type){case"SET_CONTAINER_SIZE":return"container";case"REGISTER_PANEL":case"UNREGISTER_PANEL":case"REORDER_PANELS":return"panels";case"RESTORE_LAYOUT":return"restore";case"RESIZE_PANELS":case"COLLAPSE_PANEL":case"EXPAND_PANEL":return e.source}},qt=(e,n)=>{const t=Yn(e.layout,n);if(t===e.layout)return e;const r=t.panels!==e.layout.panels||t.containerSize>0!=e.layout.containerSize>0;return{layout:t,source:r?Wt(n):e.source}},Vt=new Ae($e.INFO,"[resize-panels]"),Yt={pointer:!0,keyboard:!0,api:!0},Kt=e=>typeof e=="string"&&Object.hasOwn(Yt,e),Xe=e=>{if(!Kt(e))throw new RangeError(`[resize-panels] A request source must be "pointer", "keyboard" or "api"; received ${typeof e=="string"?JSON.stringify(e):String(e)}.`);return e},Xt=200,Zt="\0handle",Kn=({direction:e,style:n,onLayout:t,autoSaveId:r,showDebugInfo:o=!1})=>{const[{layout:i,source:s},a]=l.useReducer(qt,Ut),[u,c]=l.useState({}),[b,f]=l.useState({}),S=l.useRef(null),[m,G]=l.useState(""),K=l.useRef({}),re=l.useRef(t);re.current=t,l.useLayoutEffect(()=>{const d=S.current;if(!d||typeof ResizeObserver>"u")return;let p=Number.NaN;const h=N=>{N!==p&&(p=N,a({type:"SET_CONTAINER_SIZE",containerSize:N}))},x=new ResizeObserver(N=>{h(ze(d,e,N[0]).content)});return x.observe(d),h(ze(d,e).content),()=>{x.disconnect(),a({type:"SET_CONTAINER_SIZE",containerSize:0})}},[e]);const z=i.panels,H=l.useRef(z);H.current=z;const F=l.useCallback(()=>{const d=S.current,p=H.current;if(!d)return;const h=un(d);if(G(N=>{const oe=h.map(He=>He.dataset.panelId??Zt).join("\0");return N===oe?N:oe}),p.length===0)return;const x=[];for(const N of h){const oe=N.dataset.panelId;oe!==void 0&&x.push(oe)}if(new Set(x).size!==x.length){Vt.error("Duplicate panel id in one group.",{ids:x});return}x.length!==p.length||x.every((N,oe)=>N===p[oe].id)||a({type:"REORDER_PANELS",ids:x})},[]);l.useLayoutEffect(()=>{const d=S.current;if(!d||(F(),typeof MutationObserver>"u"))return;const p=new MutationObserver(h=>{Mt(h)&&F()});return p.observe(d,{childList:!0,subtree:!0}),()=>{p.disconnect()}},[F]),l.useLayoutEffect(()=>{F()},[F,z]);const C=l.useMemo(()=>z.map(d=>d.size),[z]),T=i.containerSize>0;l.useLayoutEffect(()=>{!T||C.length===0||s===null||re.current?.(C,{source:s})},[C,T,s]);const B=l.useRef(null);l.useEffect(()=>{if(!r||B.current===r||!T||z.length===0)return;B.current=r;const d=Hn(r);d&&a({type:"RESTORE_LAYOUT",entries:d})},[r,T,z.length]);const D=l.useRef(null);l.useEffect(()=>{if(!(r&&B.current===r&&T)||z.length===0)return;const d=z.map(h=>({id:h.id,size:Vn(h,i.containerSize),collapsed:h.collapsed}));D.current={id:r,entries:d};const p=setTimeout(()=>{D.current=null,en(r,d)},Xt);return()=>{clearTimeout(p)}},[r,z,i.containerSize,T]),l.useEffect(()=>()=>{const d=D.current;d&&(D.current=null,en(d.id,d.entries))},[]);const R=l.useCallback(d=>{const p=JSON.stringify(d);K.current[d.id]!==p&&(K.current[d.id]=p,a({type:"REGISTER_PANEL",panel:d}))},[]),y=l.useCallback(d=>{delete K.current[d],a({type:"UNREGISTER_PANEL",id:d}),c(p=>{if(!(d in p))return p;const h={...p};return delete h[d],h})},[]),_=l.useCallback((d,p,h,x="api")=>{a({type:"RESIZE_PANELS",startId:d,endId:p,startSize:h,source:Xe(x)})},[]),Q=l.useCallback((d,p,h="api")=>{a({type:"COLLAPSE_PANEL",id:d,from:p,source:Xe(h)})},[]),j=l.useCallback((d,p,h,x="api")=>{a({type:"EXPAND_PANEL",id:d,from:p,targetSize:h,source:Xe(x)})},[]),U=l.useCallback(d=>z.find(p=>p.id===d),[z]),V=l.useCallback((d,p)=>{c(h=>{if(p===null){if(!(d in h))return h;const N={...h};return delete N[d],N}const x=h[d];return x&&x.pixelSize===p.pixelSize&&x.percentageSize===p.percentageSize?h:{...h,[d]:p}})},[]),L=l.useCallback((d,p)=>{f(h=>{if(p===null){if(!(d in h))return h;const N={...h};return delete N[d],N}const x=h[d];return x&&x.thickness===p.thickness&&x.visible===p.visible&&x.direction===p.direction&&x.startPanelId===p.startPanelId&&x.endPanelId===p.endPanelId?h:{...h,[d]:p}})},[]),P=l.useMemo(()=>({direction:e,panels:z,containerSize:i.containerSize,layoutOrderKey:m,showDebugInfo:o,registerPanel:R,unregisterPanel:y,resizePanels:_,collapsePanel:Q,expandPanel:j,getPanel:U,reportPanelMeasurement:V,panelMeasurements:u,reportHandleMeasurement:L,handleMeasurements:b,layoutConstraintViolation:i.violation}),[e,z,i.containerSize,m,i.violation,o,R,y,_,Q,j,U,V,u,L,b]),A=l.useMemo(()=>({width:"100%",height:"100%",minWidth:"0px",minHeight:"0px",overflow:"hidden",...n,display:"flex",flexDirection:e==="horizontal"?"row":"column",alignItems:"stretch",gap:"0px",position:"relative",boxSizing:"border-box",writingMode:"horizontal-tb"}),[e,n]);return{groupRef:S,contextValue:P,groupStyle:A}},Jt=e=>{const{getPanel:n,collapsePanel:t,expandPanel:r}=Be(),o=n(e),i=l.useCallback(u=>{t(e,u,"api")},[t,e]),s=l.useCallback((u,c)=>{r(e,u,c,"api")},[r,e]),a=l.useCallback((u,c)=>{o?.collapsed?s(u,c):i(u)},[o?.collapsed,i,s]);return l.useMemo(()=>({panel:o,isCollapsed:o?.collapsed??!1,canCollapseFromStart:o?.collapseFromStart??!1,canCollapseFromEnd:o?.collapseFromEnd??!1,collapse:i,expand:s,toggle:a}),[o,i,s,a])},Qt="en",De=Object.freeze({minimumExceededSummary:"Layout unavailable: minimum panel sizes exceed the container.",minimumExceededDetail:"Min required: {required}px | Available: {available}px",maximumInsufficientSummary:"Layout unavailable: panels cannot fill the container with their maximum sizes.",maximumInsufficientDetail:"Max total: {total}px | Needed: {needed}px"}),Xn=Object.freeze({minimumExceededDetail:Object.freeze(["required","available"]),maximumInsufficientDetail:Object.freeze(["total","needed"])}),Ze=Object.freeze(Object.keys(De)),An=Object.freeze({"minimum-exceeded":Object.freeze({summary:"minimumExceededSummary",detail:"minimumExceededDetail"}),"maximum-insufficient":Object.freeze({summary:"maximumInsufficientSummary",detail:"maximumInsufficientDetail"})}),er=/\{(\w+)\}/g,nr=/\{(\w+)\}|[{}]/g,tr=e=>{if(e!==void 0){const o=e,i=o!==null&&typeof o=="object"?Object.getPrototypeOf(o):void 0;if(i!==Object.prototype&&i!==null)throw new TypeError(`[resize-panels] Labels must be a plain object; received ${On(o)}.`);for(const s of Object.keys(o))if(!Ze.includes(s))throw new RangeError(`[resize-panels] Labels hold the unknown key ${JSON.stringify(s)}; the labels are ${Ze.join(", ")}.`)}const n=e??{},t={};for(const o of Ze){const i=n[o];if(i===void 0)continue;if(typeof i!="string")throw new TypeError(`[resize-panels] The label "${o}" must be a string; received ${On(i)}.`);if(i.trim()==="")throw new RangeError(`[resize-panels] The label "${o}" must not be blank.`);const s=Xn[o];if(s!==void 0){const a=s.map(u=>`{${u}}`).join(", ");for(const u of i.matchAll(nr)){const c=u[1];if(c===void 0)throw new RangeError(`[resize-panels] The label "${o}" holds a brace outside a placeholder at index ${u.index}; it accepts ${a}, and no other braces.`);if(!s.includes(c))throw new RangeError(`[resize-panels] The label "${o}" uses the unknown placeholder {${c}}; it accepts ${a}.`)}}t[o]=i}const r={};for(const o of Object.keys(An))r[o]=rr(t,An[o]);return Object.freeze(r)},rr=(e,n)=>{const t=e[n.summary],r=e[n.detail];if(t===void 0&&r===void 0)return Object.freeze({summary:De[n.summary],detail:De[n.detail],lang:Qt});if(t===void 0||r===void 0){const[o,i]=t===void 0?[n.detail,n.summary]:[n.summary,n.detail];throw new RangeError(`[resize-panels] The labels "${n.summary}" and "${n.detail}" go together: pass both or neither; received "${o}" without "${i}".`)}return Object.freeze({summary:t,detail:r,lang:void 0})},or=(e,n)=>e.replace(er,(t,r)=>{if(!Object.hasOwn(n,r))throw new RangeError(`[resize-panels] No value for the placeholder {${r}} of ${JSON.stringify(e)}.`);return String(n[r])}),ir=(e,n)=>{const t=e[n.reason],r=n.reason==="minimum-exceeded"?{required:Math.ceil(n.totalMinimumSize),available:Math.floor(n.availableContainerSize)}:{total:Math.floor(n.totalMaximumSize),needed:Math.ceil(n.availableContainerSize)};return Object.freeze({summary:t.summary,detail:or(t.detail,r),lang:t.lang})},On=e=>e===null?"null":Array.isArray(e)?"an array":typeof e,sr=({panel:e,containerAxisSize:n,containerLabel:t})=>{if(!e)return{sizeDisplay:"-",preferenceDisplay:"-",boundsDisplay:"-",containerDisplay:"-",headlineLabel:"Unregistered",titleText:"Unregistered"};const r=e.sizeUnit==="pixels",o=`${e.size.toFixed(3)}px / ${an(e.size,n).toFixed(3)}%`,i=r?`${e.preferredPixelSize.toFixed(3)}px`:`${e.preferredPercentageSize.toFixed(3)}%`,s=me(e,n),a=`${s.min.toFixed(1)} - ${s.max.toFixed(1)}px`,u=Number.isFinite(n)?`${n.toFixed(3)}px`:"-",c=r?"Fixed":"Flexible",b=[c,`${t}: ${u}`,`size: ${o}`,`preference: ${i}`,`bounds: ${a}`].join(`
2
+ `);return{sizeDisplay:o,preferenceDisplay:i,boundsDisplay:a,containerDisplay:u,headlineLabel:c,titleText:b}},lr=l.memo(({panel:e,containerAxisSize:n,direction:t})=>{const r=t==="horizontal"?"container width":"container height",{sizeDisplay:o,preferenceDisplay:i,boundsDisplay:s,containerDisplay:a,headlineLabel:u,titleText:c}=l.useMemo(()=>sr({panel:e,containerAxisSize:n,containerLabel:r}),[e,n,r]),b={position:"absolute",top:2,left:2,zIndex:30,pointerEvents:"none",maxWidth:"calc(100% - 4px)",padding:"2px 4px",borderRadius:4,border:"1px solid rgba(255,255,255,0.1)",backgroundColor:"rgba(15, 23, 42, 0.78)",color:"#e2e8f0",fontFamily:"ui-monospace, SFMono-Regular, Menlo, monospace",fontSize:10,lineHeight:1.35,whiteSpace:"pre",overflow:"hidden",textOverflow:"ellipsis"};return k.jsxs("div",{style:b,title:c,"data-panel-debug-info":"",children:[k.jsxs("div",{children:[u," · ",r,": ",a]}),k.jsxs("div",{children:["size: ",o]}),k.jsxs("div",{children:["preference: ",i]}),k.jsxs("div",{children:["bounds: ",s]})]})}),Mn=new Ae($e.INFO,"[resize-panels]"),ar={both:{collapseFromStart:!0,collapseFromEnd:!0},start:{collapseFromStart:!0,collapseFromEnd:!1},end:{collapseFromStart:!1,collapseFromEnd:!0}},cr=e=>{if(!e)return{collapseFromStart:!1,collapseFromEnd:!1};const n=ar[e.from];if(!n)throw new Error("Invalid collapsible configuration: unsupported 'from' value");return n},ur=e=>{const n=Math.max(0,e.value);return e.unit==="pixels"?{sizeUnit:"pixels",preferredPixelSize:n,preferredPercentageSize:0}:{sizeUnit:"percentage",preferredPercentageSize:n,preferredPixelSize:0}},dr=({size:e,panel:n,registration:t,containerSize:r,isCollapsed:o})=>{if(o)return{flexBasis:"0px",flexGrow:0,flexShrink:0};if(!n||r<=0){const u=t.sizeUnit==="pixels";return{flexBasis:u?`${t.preferredPixelSize}px`:`${t.preferredPercentageSize}%`,flexGrow:u?0:t.preferredPercentageSize,flexShrink:u?0:1}}if(n.sizeUnit==="pixels")return{flexBasis:`${e}px`,flexGrow:0,flexShrink:0};const i=me(n,r),s=e<i.max-I,a=s&&e>i.min+I;return{flexBasis:`${e}px`,flexGrow:s?n.preferredPercentageSize:0,flexShrink:a?1:0}},fr=l.memo(({id:e,defaultSize:n={value:50,unit:"percentage"},minSize:t,maxSize:r,className:o,style:i,children:s,collapsible:a,defaultCollapsed:u=!1,pixelAdjustPriority:c,flexAdjustPriority:b,contentOverflow:f="auto",...S})=>{const{direction:m,registerPanel:G,unregisterPanel:K,getPanel:re,containerSize:z,showDebugInfo:H,reportPanelMeasurement:F,layoutConstraintViolation:C}=Be(),T=l.useRef(null),B=l.useId(),R=l.useRef(e||`panel-${B}`).current;l.useEffect(()=>{e&&e!==R&&Mn.warn("Panel id prop change after mount is ignored.",{currentId:R,attemptedId:e})},[e,R]);const y=l.useMemo(()=>cr(a),[a]),_=y.collapseFromStart||y.collapseFromEnd;l.useEffect(()=>{u&&!_&&Mn.warn("Panel defaultCollapsed is ignored because collapsible configuration is not provided.",{panelId:R})},[u,_,R]);const Q=l.useMemo(()=>{const p=$n(n)??{value:50,unit:"percentage"};return{id:R,...ur(p),minSize:t,maxSize:r,...y,collapsed:_&&u,pixelAdjustPriority:c,flexAdjustPriority:b}},[R,n,t,r,y,_,u,c,b]);l.useLayoutEffect(()=>{G(Q)},[G,Q]),l.useLayoutEffect(()=>()=>{K(R)},[K,R]);const j=re(R),U=j?.size??0,V=j?.collapsed??!1,L=l.useRef(z);L.current=z;const P=l.useCallback(()=>{const p=T.current;if(!p)return;const h=ze(p,m).border;F(R,{pixelSize:h,percentageSize:an(h,L.current)})},[m,R,F]);l.useEffect(()=>{if(!H){F(R,null);return}const p=T.current;if(!p||typeof ResizeObserver>"u"){P();return}const h=new ResizeObserver(P);return h.observe(p),P(),()=>{h.disconnect(),F(R,null)}},[H,P,R,F]);const A=l.useMemo(()=>{const p={overflow:"hidden",isolation:"isolate"},h=V?{...m==="horizontal"?{width:"0px"}:{height:"0px"},pointerEvents:"none",visibility:"hidden",display:"none"}:{};return{...p,...i,...dr({size:U,panel:j,registration:Q,containerSize:z,isCollapsed:V}),order:0,margin:0,display:"flex",flexDirection:"column",position:"relative",boxSizing:"border-box",minWidth:0,minHeight:0,maxWidth:"none",maxHeight:"none",...m==="horizontal"?{height:"100%"}:{width:"100%"},...h}},[U,m,V,j,Q,z,i]),d=l.useMemo(()=>({flex:"1 1 auto",position:"relative",overflow:f,display:"flex",flexDirection:"column",minWidth:"0px",minHeight:"0px"}),[f]);return k.jsxs("div",{...S,ref:T,className:Ie.twMerge("panel",o),style:A,"data-panel-id":R,"data-panel-size":U,"data-panel-size-unit":j?.sizeUnit??"percentage","data-panel-collapsible":_,"data-panel-collapse-start":y.collapseFromStart,"data-panel-collapse-end":y.collapseFromEnd,"data-panel-collapsed":V,"aria-hidden":V,inert:C!==null?!0:S.inert,children:[k.jsx("div",{style:d,children:s}),H&&k.jsx(lr,{panel:j,containerAxisSize:z,direction:m})]})}),ke=new WeakMap,on=new WeakMap,pr=e=>typeof e.focus=="function",Zn=e=>"activeElement"in e,hr=e=>e.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&"host"in e,sn=e=>e.parentNode!==null?e.parentNode:hr(e)?e.host:null,mr=(e,n)=>{for(let t=e;t!==null;t=sn(t))if(t===n)return!0;return!1},gr=e=>{if(!Zn(e))return null;let n=e.activeElement;for(;n!==null&&n.shadowRoot!==null&&n.shadowRoot.activeElement!==null;)n=n.shadowRoot.activeElement;return n},Jn=e=>{const n=e.getRootNode();return Zn(n)&&n.activeElement===e},br=e=>{const n=e.activeElement;return n===null||n===e.body||n===e.documentElement},ln=e=>(e.focus({preventScroll:!0}),Jn(e)),xr=e=>{const n=ke.get(e);return n===void 0?e:n},Sr=e=>{if(!ln(e))for(let n=sn(e);n!==null;n=sn(n)){const t=on.get(n);if(t!==void 0&&ln(t)){ke.set(t,e);return}}},yr=(e,n)=>{const t=l.useRef(null),r=l.useRef(!1),o=l.useCallback(i=>(t.current=i,r.current=!1,()=>{r.current=Jn(i),t.current=null}),[]);return l.useLayoutEffect(()=>{if(!n)return;const i=e.current,s=t.current;if(i===null||s===null)return;on.set(i,s);const a=gr(i.getRootNode());if(a!==null&&pr(a)&&mr(a,i)){const u=xr(a);ln(s)&&ke.set(s,u)}return()=>{if(on.delete(i),s.isConnected)return;const u=ke.get(s);u===void 0||!r.current||!br(i.ownerDocument)||Sr(u)}},[n,e]),o},Er=l.lazy(()=>Promise.resolve().then(()=>require("./GlobalDebugOverlay-R4lLTee4.cjs")).then(e=>({default:e.GlobalDebugOverlayGate}))),zr=[],Pr={};let Cn=0;const wr=()=>(Cn+=1,`panel-group-${Cn}`),Rr=Object.freeze({position:"absolute",inset:0,zIndex:60,display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",backdropFilter:"blur(2px)"}),vr=Object.freeze({display:"flex",flexDirection:"column",flex:"1 1 0%",width:"100%",minHeight:0,overflow:"auto",alignItems:"safe center",justifyContent:"safe center",overflowWrap:"anywhere"}),Lr=(e,n)=>e.map(t=>{const r=n[t.id];return r?{...t,measuredPixelSize:r.pixelSize,measuredPercentageSize:r.percentageSize}:t}),Tn=(e,n,t)=>{const r=ze(e,"horizontal"),o=ze(e,"vertical"),i=e.getBoundingClientRect(),s=r.content>0?r.content:n??i.width,a=o.content>0?o.content:t??i.height;return{width:s,height:a}},Nr=e=>{const{id:n,className:t,style:r,children:o,direction:i,onLayout:s,autoSaveId:a,showDebugInfo:u,labels:c,...b}=e,{groupRef:f,contextValue:S,groupStyle:m}=Kn(e),G=l.useMemo(()=>tr(c),[c]),K=l.useId(),[re,z]=l.useState({width:0,height:0}),H=S.layoutConstraintViolation,C=yr(f,H!==null),T=l.useMemo(()=>{if(H===null)return null;const{summary:P,detail:A,lang:d}=ir(G,H);return k.jsxs("section",{ref:C,"aria-labelledby":K,lang:d,tabIndex:0,className:"gap-2 rounded-lg border border-slate-300 border-dashed bg-slate-100 px-6 py-8 text-center text-slate-800 text-sm focus-visible:outline-2 focus-visible:outline-slate-900 focus-visible:-outline-offset-2 dark:border-slate-600 dark:bg-slate-800 dark:text-slate-200 dark:focus-visible:outline-slate-100",style:vr,"data-panel-group-placeholder":"constraint-violation",children:[k.jsx("span",{id:K,className:"max-w-[40ic] leading-normal",children:P}),k.jsx("span",{className:"max-w-[40ic] text-slate-700 text-xs leading-normal dark:text-slate-300",children:A})]})},[H,G,K,C]),B=l.useRef(null);B.current===null&&(B.current=n??wr());const D=B.current,R=n??D,y=S.showDebugInfo&&S.panels.length>0,_=y?S.panels:zr,Q=y?S.panelMeasurements:Pr,j=l.useMemo(()=>{if(!y)return[];const P=Object.values(S.handleMeasurements);return P.length<=1?P:P.slice().sort((A,d)=>A.id.localeCompare(d.id))},[S.handleMeasurements,y]),U=re.width,V=re.height;l.useLayoutEffect(()=>{if(!y){z({width:0,height:0});return}if(typeof window>"u"||typeof ResizeObserver>"u")return;const P=f.current;if(!P)return;const A=p=>{z(h=>h.width===p.width&&h.height===p.height?h:p)},d=new ResizeObserver(p=>{for(const h of p){if(h.target!==P)continue;const x=Tn(P,h.contentRect.width,h.contentRect.height);A(x)}});return d.observe(P),A(Tn(P)),()=>{d.disconnect()}},[f,y]);const L=l.useMemo(()=>Lr(_,Q),[_,Q]);return l.useEffect(()=>{if(!y)return;let P=!1,A=null;return Promise.resolve().then(()=>require("./debugOverlayStore-DY09saU8.cjs")).then(d=>{P||(A=d,d.enableDebugOverlayGroup(D))}),()=>{P=!0,A&&(A.disableDebugOverlayGroup(D),A.removeDebugOverlayGroup(D))}},[y,D]),l.useEffect(()=>{if(!y)return;let P=!1;return Promise.resolve().then(()=>require("./debugOverlayStore-DY09saU8.cjs")).then(A=>{P||A.updateDebugOverlayGroup(D,{displayName:R,direction:i,containerSize:{width:U,height:V},panels:L,handles:j})}),()=>{P=!0}},[y,D,R,i,U,V,L,j]),k.jsxs(dn.Provider,{value:S,children:[k.jsxs("div",{...b,ref:f,className:Ie.twMerge("panel-group",i==="horizontal"?"flex-row":"flex-col",t),style:m,"data-panel-group-id":n,"data-panel-group-direction":i,children:[o,T!==null?k.jsx("div",{className:"pointer-events-auto bg-slate-50/82 dark:bg-slate-950/82",style:Rr,children:T}):null]}),y&&k.jsx(l.Suspense,{fallback:null,children:k.jsx(Er,{groupId:D})})]})},Ir={display:"none",pointerEvents:"none",visibility:"hidden"},_r={display:"none"},Ne=(e,n)=>typeof e!="number"||!Number.isFinite(e)||e<=0?n:e,Ar=e=>{const n=Math.round(e);return n%2===0?n:n+1},Dn=e=>!e||typeof window>"u"?!1:window.getComputedStyle(e).direction==="rtl",Je=(e,n,t)=>{const r=e.collapsed?0:e.size,o=n.collapsed?0:n.size,i=r+o;if(i<=0)return;const s=me(e,t),a=me(n,t),u=Math.max(s.min,i-a.max),c=Math.max(u,Math.min(s.max,i-a.min));if(e.collapsed)return{position:0,lower:0,upper:e.collapsedByDirection==="end"?Math.max(0,c):0,resizeLower:u,resizeUpper:c};if(n.collapsed){const S=n.collapsedByDirection==="start";return{position:i,lower:S?Math.min(i,u):i,upper:i,resizeLower:u,resizeUpper:c}}const b=Math.min(r,e.collapseFromEnd?0:u),f=Math.max(r,b,n.collapseFromStart?i:c);return{position:r,lower:b,upper:f,resizeLower:u,resizeUpper:c}},Or=Object.freeze([]),Mr=e=>{if(typeof e=="number")return Number.isFinite(e)&&e>=0;if(typeof e!="object"||e===null)return!1;const{value:n,unit:t}=e;return(t==="pixels"||t==="percentage")&&typeof n=="number"&&Number.isFinite(n)&&n>=0},Fe=e=>{if(typeof e=="string")return JSON.stringify(e);if(typeof e!="object"||e===null||Array.isArray(e))return String(e);const{value:n,unit:t}=e;return`{ value: ${Fe(n)}, unit: ${Fe(t)} }`},Cr=e=>{if(e===void 0)return Or;if(!Array.isArray(e))throw new RangeError(`[resize-panels] activationSizes must be an array of sizes; received ${Fe(e)}.`);for(const[n,t]of e.entries())if(!Mr(t))throw new RangeError(`[resize-panels] activationSizes[${n}] must be a non-negative finite percentage or { value, unit: "pixels" | "percentage" } with a non-negative finite value; received ${Fe(t)}.`);return e},Tr=(e,n,t)=>{let r,o;for(const i of e){const s=Ee(Ce(i,0,t),n.resizeLower,n.resizeUpper);Math.abs(s-n.position)<=I||((o===void 0||s<o)&&(o=s),s>n.position&&(r===void 0||s<r)&&(r=s))}return r===void 0?o:r},Dr=l.memo(e=>{const{id:n,disabled:t=!1,className:r,style:o,children:i,onDragging:s,activationSizes:a,thickness:u,indicator:c=!0,indicatorThickness:b,indicatorLength:f,indicatorBarThickness:S,indicatorBarLength:m,title:G,onPointerDown:K,onKeyDown:re,...z}=e,{direction:H,resizePanels:F,getPanel:C,collapsePanel:T,expandPanel:B,panels:D,layoutOrderKey:R,reportHandleMeasurement:y,containerSize:_,layoutConstraintViolation:Q}=Be(),j=l.useMemo(()=>Cr(a),[a]),[U,V]=l.useState(!1),[L,P]=l.useState({start:null,end:null}),A=l.useRef(null),d=l.useRef(null),p=l.useRef({getPanel:C,containerSize:_});p.current={getPanel:C,containerSize:_};const h=l.useRef(""),x=l.useRef(""),N=l.useRef(null),oe=l.useRef(null),He=l.useId(),Pe=l.useRef(n??`resize-handle-${He}`),ge=n??Pe.current,w=H==="horizontal",je=!!Q,ee=t||je,pn=l.useCallback(()=>{const g=A.current,X=_e(g);if(!(g&&X))return;const $=un(X),O=$.indexOf(g);let M="",q="";for(let W=O-1;W>=0;W-=1){const v=$[W].dataset.panelId;if(v!==void 0){M=v;break}}for(let W=O+1;W<$.length;W+=1){const v=$[W].dataset.panelId;if(v!==void 0){q=v;break}}M===h.current&&q===x.current||(h.current=M,x.current=q,P({start:M||null,end:q||null}))},[]);l.useEffect(()=>{pn()},[pn,R]),l.useEffect(()=>()=>{N.current?.()},[]);const hn=l.useCallback(g=>{if(ee||N.current||g.button!==0)return;const X=C(h.current),$=C(x.current);if(!(X&&$))return;g.preventDefault(),g.stopPropagation();const O=h.current,M=x.current,q=X.size,W=X.size+$.size,v=g.clientX,te=g.clientY,ye=w?v:te,Y=_e(A.current),dt=w&&Dn(Y)?-1:1,ft=Y?Ct(Y,H):1,be=g.pointerId,ve=g.currentTarget;ve.setPointerCapture?.(be),V(!0),s?.(!0);let xn=0,Le=null,We=j.length>0;const Sn=E=>Math.hypot(E.clientX-v,E.clientY-te)>=wt,pt=E=>{const se=((w?E.clientX:E.clientY)-ye)*dt/ft,ae=q+se,pe=W-ae,xe=p.current,Ve=xe.getPanel(O),Ye=xe.getPanel(M);if(!(Ve&&Ye))return;const Rn=Math.min(xe.containerSize*Fn,Bn),vn=Math.min(xe.containerSize*Rt,vt);if(Ye.collapsed){pe>vn&&B(M,"start",pe,"pointer");return}if(Ve.collapsed){ae>vn&&B(O,"end",ae,"pointer");return}if(Ye.collapseFromStart&&pe<=Rn){T(M,"start","pointer");return}if(Ve.collapseFromEnd&&ae<=Rn){T(O,"end","pointer");return}F(O,M,ae,"pointer")},qe=E=>{Ln.flushSync(()=>{pt(E)})},ht=()=>{const E=p.current,se=E.getPanel(O),ae=E.getPanel(M);if(!(se&&ae))return;const pe=Je(se,ae,E.containerSize);if(!pe||pe.upper-pe.lower<=I)return;const xe=Tr(j,pe,E.containerSize);xe!==void 0&&Ln.flushSync(()=>{se.collapsed?B(O,"end",void 0,"pointer"):ae.collapsed&&B(M,"start",void 0,"pointer"),F(O,M,xe,"pointer")})},yn=E=>{if(E.pointerId!==be)return;if(E.preventDefault(),E.stopPropagation(),We){if(!Sn(E))return;We=!1}const se=performance.now();if(se-xn<Pt){Le=E;return}xn=se,Le=null,qe(E)};let En=!0;const Me=()=>{En&&(En=!1,N.current=null,V(!1),s?.(!1),document.removeEventListener("pointermove",yn),document.removeEventListener("pointerup",zn),document.removeEventListener("pointercancel",Pn),ve.removeEventListener("lostpointercapture",wn),ve.hasPointerCapture?.(be)&&ve.releasePointerCapture(be))},zn=E=>{if(E.pointerId===be){if(We)Sn(E)?qe(E):ht();else if(Le){const se=Le;Le=null,qe(se)}Me()}},Pn=E=>{E.pointerId===be&&Me()},wn=E=>{E.pointerId===be&&Me()};document.addEventListener("pointermove",yn),document.addEventListener("pointerup",zn),document.addEventListener("pointercancel",Pn),ve.addEventListener("lostpointercapture",wn),N.current=Me},[ee,w,H,C,F,T,B,s,j]),mn=l.useCallback(g=>{if(ee)return;const X=w?"ArrowLeft":"ArrowUp",$=w?"ArrowRight":"ArrowDown";if(g.key!==X&&g.key!==$)return;const O=h.current,M=x.current,q=C(O),W=C(M);if(!(q&&W))return;const v=Je(q,W,_);if(!v||v.upper-v.lower<=I)return;g.preventDefault(),g.stopPropagation();const te=g.shiftKey?Nn*5:Nn,ye=w&&Dn(_e(A.current))?-1:1,Y=(g.key===$?te:-te)*ye;if(q.collapsed){Y>0&&B(O,"end",void 0,"keyboard");return}if(W.collapsed){Y<0&&B(M,"start",void 0,"keyboard");return}if(Y<0&&q.collapseFromEnd&&v.position<=v.resizeLower+I){T(O,"end","keyboard");return}if(Y>0&&W.collapseFromStart&&v.position>=v.resizeUpper-I){T(M,"start","keyboard");return}F(O,M,q.size+Y,"keyboard")},[ee,w,C,F,T,B,_]),le=typeof c=="object"&&c!==null?c:void 0,Ge=c===!1||le?.visible===!1,ne=Math.max(1,Ne(u,mt)),Qn=w?bt:xt,et=w?yt:Et,de=Math.min(ne,Math.max(1,Ne(b??le?.thickness,gt))),Se=Math.max(1,Ne(f??le?.length,Qn)),we=Math.min(de,Math.max(1,Ne(S??le?.barThickness,St))),Re=Math.min(Se,Math.max(1,Ne(m??le?.barLength,et))),fe=l.useMemo(()=>{const g=cn(_),X=v=>{const te=D[v];return te?te.collapsed||te.size<=g:!1},$=(v,te)=>{let ye=0;for(let Y=v;Y>=0&&Y<D.length&&X(Y);Y+=te)ye+=1;return ye},O=D.findIndex(v=>v.id===L.start),M=D.findIndex(v=>v.id===L.end),q=O>=0?$(O,-1):0,W=M>=0?$(M,1):0;return{groupSize:q+W+1,overlapIndex:q}},[L.start,L.end,D,_]),ie=l.useMemo(()=>je?!0:fe.groupSize<=1?!1:fe.overlapIndex>0&&fe.overlapIndex<fe.groupSize-1,[fe,je]),Oe=l.useMemo(()=>{if(fe.groupSize<=1||ie)return 0;const g=Ar(Math.max(zt,de+4));return(fe.overlapIndex===0?-.5:.5)*g},[fe,ie,de]),nt=l.useMemo(()=>{const g={position:"relative",flex:"0 0 0px",alignSelf:"stretch",order:0,margin:0,overflow:"visible",...w?{width:0,minWidth:0}:{height:0,minHeight:0}};return ie?{...g,...Ir}:g},[w,ie]),gn=l.useMemo(()=>({"--rp-handle-thickness":`${ne}px`,"--rp-indicator-thickness":`${de}px`,"--rp-indicator-length":`${Se}px`,"--rp-indicator-bar-thickness":`${we}px`,"--rp-indicator-bar-length":`${Re}px`}),[ne,de,Se,we,Re]),tt=l.useMemo(()=>({...gn,...o,position:"absolute",zIndex:20,touchAction:"none",...w?{insetBlockStart:0,insetInlineStart:`${-ne/2}px`,width:`${ne}px`,height:"100%"}:{insetInlineStart:0,insetBlockStart:`${-ne/2}px`,height:`${ne}px`,width:"100%"}}),[w,ne,gn,o]),rt=l.useMemo(()=>{if(ie||Ge)return _r;const g={width:`${w?de:Se}px`,height:`${w?Se:de}px`,flexShrink:0};return Oe!==0&&(g.position="relative",w?g.insetInlineStart=`${Oe}px`:g.insetBlockStart=`${Oe}px`),g},[ie,Ge,w,de,Se,Oe]),ot=l.useMemo(()=>({width:`${w?we:Re}px`,height:`${w?Re:we}px`,flexShrink:0}),[w,we,Re]),it=l.useMemo(()=>Ie.twMerge("group absolute z-20 flex select-none items-center justify-center border-none bg-transparent transition-colors duration-150 overflow-visible",w?"cursor-col-resize h-full":"cursor-row-resize w-full",!ee&&"hover:bg-gray-200/70 dark:hover:bg-gray-700/70",!ee&&"active:bg-blue-300/60 dark:active:bg-blue-700/60",U&&"bg-blue-200/80 dark:bg-blue-800/60",ee&&"cursor-not-allowed opacity-50","focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-opacity-50",r),[w,ee,U,r]),st=l.useMemo(()=>Ie.twMerge("pointer-events-none flex items-center justify-center rounded-full bg-white text-slate-700 ring-1 ring-inset ring-white/80 backdrop-blur-sm transition-colors duration-150 shadow-[0_0_0_1px_rgba(255,255,255,0.85),0_1px_3px_rgba(15,23,42,0.18)]","dark:bg-slate-800/95 dark:text-slate-200 dark:ring-slate-500/60 dark:shadow-[0_0_0_1px_rgba(148,163,184,0.45),0_1px_3px_rgba(2,6,23,0.55)]",U&&"bg-blue-200/80 ring-blue-300 shadow-[0_0_0_1px_rgba(191,219,254,0.65),0_1px_4px_rgba(59,130,246,0.45)] dark:bg-blue-900/70 dark:ring-blue-400 dark:shadow-[0_0_0_1px_rgba(147,197,253,0.5),0_1px_4px_rgba(59,130,246,0.55)]",le?.className),[U,le?.className]),lt=l.useMemo(()=>Ie.twMerge("pointer-events-none rounded-full bg-slate-600 transition-colors duration-150 shadow-[0_0_0_1px_rgba(255,255,255,0.9)] dark:bg-slate-200 dark:shadow-[0_0_0_1px_rgba(15,23,42,0.55)]",U&&"bg-blue-500 dark:bg-blue-300",!ee&&"group-hover:bg-slate-700 dark:group-hover:bg-slate-100",le?.barClassName),[U,ee,le?.barClassName]);l.useEffect(()=>{if(ge===Pe.current)return;const g=Pe.current;Pe.current=ge,oe.current=null,y(g,null)},[y,ge]),l.useEffect(()=>{const g={id:ge,thickness:ie?0:ne,direction:H,visible:!ie&&ne>Lt,startPanelId:L.start,endPanelId:L.end};oe.current=g,y(ge,g)},[ge,ne,ie,H,L.start,L.end,y]),l.useEffect(()=>()=>{y(Pe.current,null)},[y]);const at=l.useCallback(g=>{K?.(g),g.defaultPrevented||hn(g)},[K,hn]),ct=l.useCallback(g=>{re?.(g),g.defaultPrevented||mn(g)},[re,mn]),ut=j.length>0?"click to cycle through preset sizes, ":"",bn=`Resize ${w?"columns":"rows"} - Drag or use arrow keys to resize, ${ut}drag to the edge to collapse/expand panels`,Ue=l.useMemo(()=>{const g=L.start===null?void 0:C(L.start),X=L.end===null?void 0:C(L.end);if(!(g&&X)||_<=0)return;const $=Je(g,X,_);if(!$)return;const O=M=>Math.round(M/_*100);return{now:O($.position),min:O($.lower),max:O($.upper)}},[L.start,L.end,C,_]);return k.jsx("div",{ref:A,style:nt,"data-resize-handle-anchor":"",children:k.jsx("button",{...z,type:"button",ref:d,className:it,style:tt,onPointerDown:at,onKeyDown:ct,disabled:ee,role:"separator","aria-orientation":w?"vertical":"horizontal","aria-valuenow":Ue?.now,"aria-valuemin":Ue?.min,"aria-valuemax":Ue?.max,"aria-disabled":ee||void 0,"aria-hidden":ie||void 0,"aria-label":z["aria-label"]??bn,"data-resize-handle-id":ge,title:G??bn,children:i||!Ge&&k.jsx("div",{className:st,style:rt,"data-resize-handle-indicator":"","aria-hidden":"true",children:k.jsx("span",{className:lt,style:ot,"data-resize-handle-indicator-bar":"","aria-hidden":"true"})})})})}),fn=e=>typeof CSS<"u"&&typeof CSS.escape=="function"?CSS.escape(e):e.replace(/["\\]/g,"\\$&"),kr=e=>typeof document>"u"?null:document.querySelector(`[data-panel-id="${fn(e)}"]`),Fr=e=>typeof document>"u"?null:document.querySelector(`[data-panel-group-id="${fn(e)}"]`),Br=e=>typeof document>"u"?null:document.querySelector(`[data-resize-handle-id="${fn(e)}"]`);exports.DEFAULT_PANEL_GROUP_LABELS=De;exports.PANEL_GROUP_LABEL_PLACEHOLDERS=Xn;exports.PANEL_SNAP_THRESHOLD=kn;exports.Panel=fr;exports.PanelGroup=Nr;exports.PanelGroupContext=dn;exports.PanelResizeHandle=Dr;exports.allocatePanelSizes=Gn;exports.calculateSnapThreshold=cn;exports.clamp=Ee;exports.findLayoutInvariantBreach=qn;exports.findOwningGroup=_e;exports.getConstraintInPixels=Ce;exports.getContainerSize=ze;exports.getGroupLayoutElements=un;exports.getPanelElement=kr;exports.getPanelGroupElement=Fr;exports.getPanelPreferenceInPixels=Vn;exports.getResizeHandleElement=Br;exports.initialPanelGroupLayoutState=Wn;exports.isPixelPanel=J;exports.loadLayout=Hn;exports.normalizeSizeConfig=$n;exports.panelReducer=Yn;exports.percentageToPixels=_t;exports.resolvePanelBounds=me;exports.saveLayout=en;exports.toRoundedPercentage=an;exports.usePanelControls=Jt;exports.usePanelGroup=Be;exports.useResizablePanels=Kn;
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./index-D8YnyaiG.cjs");exports.Panel=e.Panel;exports.PanelGroup=e.PanelGroup;exports.PanelGroupContext=e.PanelGroupContext;exports.PanelResizeHandle=e.PanelResizeHandle;exports.allocatePanelSizes=e.allocatePanelSizes;exports.calculateSnapThreshold=e.calculateSnapThreshold;exports.clamp=e.clamp;exports.findLayoutInvariantBreach=e.findLayoutInvariantBreach;exports.findOwningGroup=e.findOwningGroup;exports.getConstraintInPixels=e.getConstraintInPixels;exports.getContainerSize=e.getContainerSize;exports.getGroupLayoutElements=e.getGroupLayoutElements;exports.getPanelElement=e.getPanelElement;exports.getPanelGroupElement=e.getPanelGroupElement;exports.getPanelPreferenceInPixels=e.getPanelPreferenceInPixels;exports.getResizeHandleElement=e.getResizeHandleElement;exports.initialPanelGroupLayoutState=e.initialPanelGroupLayoutState;exports.isPixelPanel=e.isPixelPanel;exports.loadLayout=e.loadLayout;exports.normalizeSizeConfig=e.normalizeSizeConfig;exports.panelReducer=e.panelReducer;exports.percentageToPixels=e.percentageToPixels;exports.resolvePanelBounds=e.resolvePanelBounds;exports.saveLayout=e.saveLayout;exports.toRoundedPercentage=e.toRoundedPercentage;exports.usePanelControls=e.usePanelControls;exports.usePanelGroup=e.usePanelGroup;exports.useResizablePanels=e.useResizablePanels;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./index-DMDH6fMm.cjs");exports.DEFAULT_PANEL_GROUP_LABELS=e.DEFAULT_PANEL_GROUP_LABELS;exports.PANEL_GROUP_LABEL_PLACEHOLDERS=e.PANEL_GROUP_LABEL_PLACEHOLDERS;exports.Panel=e.Panel;exports.PanelGroup=e.PanelGroup;exports.PanelGroupContext=e.PanelGroupContext;exports.PanelResizeHandle=e.PanelResizeHandle;exports.allocatePanelSizes=e.allocatePanelSizes;exports.calculateSnapThreshold=e.calculateSnapThreshold;exports.clamp=e.clamp;exports.findLayoutInvariantBreach=e.findLayoutInvariantBreach;exports.findOwningGroup=e.findOwningGroup;exports.getConstraintInPixels=e.getConstraintInPixels;exports.getContainerSize=e.getContainerSize;exports.getGroupLayoutElements=e.getGroupLayoutElements;exports.getPanelElement=e.getPanelElement;exports.getPanelGroupElement=e.getPanelGroupElement;exports.getPanelPreferenceInPixels=e.getPanelPreferenceInPixels;exports.getResizeHandleElement=e.getResizeHandleElement;exports.initialPanelGroupLayoutState=e.initialPanelGroupLayoutState;exports.isPixelPanel=e.isPixelPanel;exports.loadLayout=e.loadLayout;exports.normalizeSizeConfig=e.normalizeSizeConfig;exports.panelReducer=e.panelReducer;exports.percentageToPixels=e.percentageToPixels;exports.resolvePanelBounds=e.resolvePanelBounds;exports.saveLayout=e.saveLayout;exports.toRoundedPercentage=e.toRoundedPercentage;exports.usePanelControls=e.usePanelControls;exports.usePanelGroup=e.usePanelGroup;exports.useResizablePanels=e.useResizablePanels;
package/dist/index.d.ts CHANGED
@@ -2,6 +2,8 @@ export type { LayoutAllocation, PanelBounds } from "./allocateLayout";
2
2
  export { allocatePanelSizes, isPixelPanel, resolvePanelBounds } from "./allocateLayout";
3
3
  export { PanelGroupContext, usePanelGroup } from "./context";
4
4
  export { usePanelControls, useResizablePanels } from "./hooks";
5
+ export type { PanelGroupLabelKey, PanelGroupLabels } from "./labels";
6
+ export { DEFAULT_PANEL_GROUP_LABELS, PANEL_GROUP_LABEL_PLACEHOLDERS } from "./labels";
5
7
  export { Panel } from "./Panel";
6
8
  export { PanelGroup } from "./PanelGroup";
7
9
  export { PanelResizeHandle } from "./PanelResizeHandle";
package/dist/index.js CHANGED
@@ -1,31 +1,33 @@
1
- import { a as s, b as n, c as l, d as t, e as o, f as i, g as r, h as u, i as P, j as p, k as g, l as d, m as c, n as m, o as z, p as x, q as G, r as f, s as y, t as C, u as L, v as R, w as S, x as h, y as v, z as E, A as B, B as I } from "./index-bJcXe02J.js";
1
+ import { D as s, a as n, b as l, c as t, d as o, e as P, f as i, g as r, h as u, i as L, j as p, k as g, l as d, m as E, n as c, o as G, p as m, q as z, r as R, s as x, t as A, u as C, v as S, w as f, x as y, y as _, z as B, A as h, B as v, C as O } from "./index-BLe_thse.js";
2
2
  export {
3
- s as Panel,
4
- n as PanelGroup,
5
- l as PanelGroupContext,
6
- t as PanelResizeHandle,
7
- o as allocatePanelSizes,
8
- i as calculateSnapThreshold,
9
- r as clamp,
10
- u as findLayoutInvariantBreach,
11
- P as findOwningGroup,
12
- p as getConstraintInPixels,
13
- g as getContainerSize,
14
- d as getGroupLayoutElements,
3
+ s as DEFAULT_PANEL_GROUP_LABELS,
4
+ n as PANEL_GROUP_LABEL_PLACEHOLDERS,
5
+ l as Panel,
6
+ t as PanelGroup,
7
+ o as PanelGroupContext,
8
+ P as PanelResizeHandle,
9
+ i as allocatePanelSizes,
10
+ r as calculateSnapThreshold,
11
+ u as clamp,
12
+ L as findLayoutInvariantBreach,
13
+ p as findOwningGroup,
14
+ g as getConstraintInPixels,
15
+ d as getContainerSize,
16
+ E as getGroupLayoutElements,
15
17
  c as getPanelElement,
16
- m as getPanelGroupElement,
17
- z as getPanelPreferenceInPixels,
18
- x as getResizeHandleElement,
19
- G as initialPanelGroupLayoutState,
20
- f as isPixelPanel,
21
- y as loadLayout,
18
+ G as getPanelGroupElement,
19
+ m as getPanelPreferenceInPixels,
20
+ z as getResizeHandleElement,
21
+ R as initialPanelGroupLayoutState,
22
+ x as isPixelPanel,
23
+ A as loadLayout,
22
24
  C as normalizeSizeConfig,
23
- L as panelReducer,
24
- R as percentageToPixels,
25
- S as resolvePanelBounds,
26
- h as saveLayout,
27
- v as toRoundedPercentage,
28
- E as usePanelControls,
29
- B as usePanelGroup,
30
- I as useResizablePanels
25
+ S as panelReducer,
26
+ f as percentageToPixels,
27
+ y as resolvePanelBounds,
28
+ _ as saveLayout,
29
+ B as toRoundedPercentage,
30
+ h as usePanelControls,
31
+ v as usePanelGroup,
32
+ O as useResizablePanels
31
33
  };
@@ -0,0 +1,33 @@
1
+ import { LayoutConstraintViolation } from "./types";
2
+ type BuiltInLabelLanguage = "en";
3
+ type ViolationReason = LayoutConstraintViolation["reason"];
4
+ interface MinimumExceededLabels {
5
+ minimumExceededSummary: string;
6
+ minimumExceededDetail: string;
7
+ }
8
+ interface MaximumInsufficientLabels {
9
+ maximumInsufficientSummary: string;
10
+ maximumInsufficientDetail: string;
11
+ }
12
+ type WholePair<Pair> = Pair | {
13
+ [Key in keyof Pair]?: undefined;
14
+ };
15
+ export type PanelGroupLabels = WholePair<MinimumExceededLabels> & WholePair<MaximumInsufficientLabels>;
16
+ export type PanelGroupLabelKey = keyof MinimumExceededLabels | keyof MaximumInsufficientLabels;
17
+ export declare const DEFAULT_PANEL_GROUP_LABELS: Readonly<MinimumExceededLabels & MaximumInsufficientLabels>;
18
+ export declare const PANEL_GROUP_LABEL_PLACEHOLDERS: Readonly<Partial<Record<PanelGroupLabelKey, readonly string[]>>>;
19
+ export interface ResolvedPanelGroupLabelPair {
20
+ readonly summary: string;
21
+ readonly detail: string;
22
+ readonly lang: BuiltInLabelLanguage | undefined;
23
+ }
24
+ export type ResolvedPanelGroupLabels = Readonly<Record<ViolationReason, ResolvedPanelGroupLabelPair>>;
25
+ export interface LayoutConstraintViolationCopy {
26
+ readonly summary: string;
27
+ readonly detail: string;
28
+ readonly lang: BuiltInLabelLanguage | undefined;
29
+ }
30
+ export declare const resolvePanelGroupLabels: (labels: PanelGroupLabels | undefined) => ResolvedPanelGroupLabels;
31
+ export declare const formatPanelGroupLabel: (template: string, values: Readonly<Record<string, number>>) => string;
32
+ export declare const describeLayoutConstraintViolation: (labels: ResolvedPanelGroupLabels, violation: LayoutConstraintViolation) => LayoutConstraintViolationCopy;
33
+ export {};
@@ -0,0 +1,6 @@
1
+ import { RefCallback, RefObject } from "react";
2
+ export type FocusTarget = Element & HTMLOrSVGElement;
3
+ export declare const isFocusTarget: (element: Element) => element is FocusTarget;
4
+ export declare const isShadowIncludingInclusiveDescendant: (node: Node, ancestor: Node) => boolean;
5
+ export declare const focusedElementWithin: (root: Node) => Element | null;
6
+ export declare const usePlaceholderFocusHandoff: (groupRef: RefObject<HTMLElement | null>, isBoxShown: boolean) => RefCallback<HTMLElement>;
@@ -1,3 +1,3 @@
1
1
  /*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */
2
2
  /*! @aiquants/resize-panels standalone CSS — 非 Tailwind ホスト専用。ホストの Tailwind ビルドと混在させないこと */
3
- @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-blue-200:oklch(88.2% .059 254.128);--color-blue-300:oklch(80.9% .105 251.813);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-700:oklch(48.8% .243 264.376);--color-blue-800:oklch(42.4% .199 265.638);--color-blue-900:oklch(37.9% .146 265.522);--color-slate-100:oklch(96.8% .007 247.896);--color-slate-200:oklch(92.9% .013 255.508);--color-slate-300:oklch(86.9% .022 252.894);--color-slate-400:oklch(70.4% .04 256.788);--color-slate-500:oklch(55.4% .046 257.417);--color-slate-600:oklch(44.6% .043 257.281);--color-slate-700:oklch(37.2% .044 257.287);--color-slate-800:oklch(27.9% .041 260.031);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-700:oklch(37.3% .034 259.733);--color-white:#fff;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--radius-lg:.5rem;--blur-sm:8px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.isolate{isolation:isolate}.z-20{z-index:20}.z-50{z-index:50}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.table{display:table}.h-full{height:100%}.w-full{width:100%}.flex-1{flex:1}.flex-shrink,.shrink{flex-shrink:1}.flex-grow,.grow{flex-grow:1}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.cursor-col-resize{cursor:col-resize}.cursor-not-allowed{cursor:not-allowed}.cursor-row-resize{cursor:row-resize}.resize{resize:both}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.items-center{align-items:center}.justify-center{justify-content:center}.gap-2{gap:calc(var(--spacing) * 2)}.overflow-visible{overflow:visible}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.border{border-style:var(--tw-border-style);border-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-none{--tw-border-style:none;border-style:none}.border-slate-300{border-color:var(--color-slate-300)}.bg-blue-200\/80{background-color:#bedbffcc}@supports (color:color-mix(in lab, red, red)){.bg-blue-200\/80{background-color:color-mix(in oklab, var(--color-blue-200) 80%, transparent)}}.bg-blue-500{background-color:var(--color-blue-500)}.bg-slate-100\/70{background-color:#f1f5f9b3}@supports (color:color-mix(in lab, red, red)){.bg-slate-100\/70{background-color:color-mix(in oklab, var(--color-slate-100) 70%, transparent)}}.bg-slate-600{background-color:var(--color-slate-600)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-8{padding-block:calc(var(--spacing) * 8)}.text-center{text-align:center}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-slate-500{color:var(--color-slate-500)}.text-slate-600{color:var(--color-slate-600)}.text-slate-700{color:var(--color-slate-700)}.uppercase{text-transform:uppercase}.opacity-50{opacity:.5}.shadow-\[0_0_0_1px_rgba\(191\,219\,254\,0\.65\)\,0_1px_4px_rgba\(59\,130\,246\,0\.45\)\]{--tw-shadow:0 0 0 1px var(--tw-shadow-color,#bfdbfea6), 0 1px 4px var(--tw-shadow-color,#3b82f673);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_0_0_1px_rgba\(255\,255\,255\,0\.9\)\]{--tw-shadow:0 0 0 1px var(--tw-shadow-color,#ffffffe6);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_0_0_1px_rgba\(255\,255\,255\,0\.85\)\,0_1px_3px_rgba\(15\,23\,42\,0\.18\)\]{--tw-shadow:0 0 0 1px var(--tw-shadow-color,#ffffffd9), 0 1px 3px var(--tw-shadow-color,#0f172a2e);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-blue-300{--tw-ring-color:var(--color-blue-300)}.ring-white\/80{--tw-ring-color:#fffc}@supports (color:color-mix(in lab, red, red)){.ring-white\/80{--tw-ring-color:color-mix(in oklab, var(--color-white) 80%, transparent)}}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.select-none{-webkit-user-select:none;user-select:none}.ring-inset{--tw-ring-inset:inset}@media (hover:hover){.group-hover\:bg-slate-700:is(:where(.group):hover *){background-color:var(--color-slate-700)}.hover\:bg-gray-200\/70:hover{background-color:#e5e7ebb3}@supports (color:color-mix(in lab, red, red)){.hover\:bg-gray-200\/70:hover{background-color:color-mix(in oklab, var(--color-gray-200) 70%, transparent)}}}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-blue-500:focus{--tw-ring-color:var(--color-blue-500)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.active\:bg-blue-300\/60:active{background-color:#90c5ff99}@supports (color:color-mix(in lab, red, red)){.active\:bg-blue-300\/60:active{background-color:color-mix(in oklab, var(--color-blue-300) 60%, transparent)}}.dark\:border-slate-600:where(.dark,.dark *){border-color:var(--color-slate-600)}.dark\:bg-blue-300:where(.dark,.dark *){background-color:var(--color-blue-300)}.dark\:bg-blue-800\/60:where(.dark,.dark *){background-color:#193cb899}@supports (color:color-mix(in lab, red, red)){.dark\:bg-blue-800\/60:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-blue-800) 60%, transparent)}}.dark\:bg-blue-900\/70:where(.dark,.dark *){background-color:#1c398eb3}@supports (color:color-mix(in lab, red, red)){.dark\:bg-blue-900\/70:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-blue-900) 70%, transparent)}}.dark\:bg-slate-200:where(.dark,.dark *){background-color:var(--color-slate-200)}.dark\:bg-slate-800\/50:where(.dark,.dark *){background-color:#1d293d80}@supports (color:color-mix(in lab, red, red)){.dark\:bg-slate-800\/50:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-slate-800) 50%, transparent)}}.dark\:bg-slate-800\/95:where(.dark,.dark *){background-color:#1d293df2}@supports (color:color-mix(in lab, red, red)){.dark\:bg-slate-800\/95:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-slate-800) 95%, transparent)}}.dark\:text-slate-200:where(.dark,.dark *){color:var(--color-slate-200)}.dark\:text-slate-400:where(.dark,.dark *){color:var(--color-slate-400)}.dark\:shadow-\[0_0_0_1px_rgba\(15\,23\,42\,0\.55\)\]:where(.dark,.dark *){--tw-shadow:0 0 0 1px var(--tw-shadow-color,#0f172a8c);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.dark\:shadow-\[0_0_0_1px_rgba\(147\,197\,253\,0\.5\)\,0_1px_4px_rgba\(59\,130\,246\,0\.55\)\]:where(.dark,.dark *){--tw-shadow:0 0 0 1px var(--tw-shadow-color,#93c5fd80), 0 1px 4px var(--tw-shadow-color,#3b82f68c);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.dark\:shadow-\[0_0_0_1px_rgba\(148\,163\,184\,0\.45\)\,0_1px_3px_rgba\(2\,6\,23\,0\.55\)\]:where(.dark,.dark *){--tw-shadow:0 0 0 1px var(--tw-shadow-color,#94a3b873), 0 1px 3px var(--tw-shadow-color,#0206178c);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.dark\:ring-blue-400:where(.dark,.dark *){--tw-ring-color:var(--color-blue-400)}.dark\:ring-slate-500\/60:where(.dark,.dark *){--tw-ring-color:#62748e99}@supports (color:color-mix(in lab, red, red)){.dark\:ring-slate-500\/60:where(.dark,.dark *){--tw-ring-color:color-mix(in oklab, var(--color-slate-500) 60%, transparent)}}@media (hover:hover){.dark\:group-hover\:bg-slate-100:where(.dark,.dark *):is(:where(.group):hover *){background-color:var(--color-slate-100)}.dark\:hover\:bg-gray-700\/70:where(.dark,.dark *):hover{background-color:#364153b3}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-gray-700\/70:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-gray-700) 70%, transparent)}}}.dark\:active\:bg-blue-700\/60:where(.dark,.dark *):active{background-color:#1447e699}@supports (color:color-mix(in lab, red, red)){.dark\:active\:bg-blue-700\/60:where(.dark,.dark *):active{background-color:color-mix(in oklab, var(--color-blue-700) 60%, transparent)}}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}
3
+ @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-leading:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-outline-style:solid}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-blue-200:oklch(88.2% .059 254.128);--color-blue-300:oklch(80.9% .105 251.813);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-700:oklch(48.8% .243 264.376);--color-blue-800:oklch(42.4% .199 265.638);--color-blue-900:oklch(37.9% .146 265.522);--color-slate-50:oklch(98.4% .003 247.858);--color-slate-100:oklch(96.8% .007 247.896);--color-slate-200:oklch(92.9% .013 255.508);--color-slate-300:oklch(86.9% .022 252.894);--color-slate-500:oklch(55.4% .046 257.417);--color-slate-600:oklch(44.6% .043 257.281);--color-slate-700:oklch(37.2% .044 257.287);--color-slate-800:oklch(27.9% .041 260.031);--color-slate-900:oklch(20.8% .042 265.755);--color-slate-950:oklch(12.9% .042 264.695);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-700:oklch(37.3% .034 259.733);--color-white:#fff;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--leading-normal:1.5;--radius-lg:.5rem;--blur-sm:8px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.isolate{isolation:isolate}.z-20{z-index:20}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.table{display:table}.h-full{height:100%}.w-full{width:100%}.max-w-\[40ic\]{max-width:40ic}.flex-shrink,.shrink{flex-shrink:1}.flex-grow,.grow{flex-grow:1}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.cursor-col-resize{cursor:col-resize}.cursor-not-allowed{cursor:not-allowed}.cursor-row-resize{cursor:row-resize}.resize{resize:both}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.items-center{align-items:center}.justify-center{justify-content:center}.gap-2{gap:calc(var(--spacing) * 2)}.overflow-visible{overflow:visible}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.border{border-style:var(--tw-border-style);border-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-none{--tw-border-style:none;border-style:none}.border-slate-300{border-color:var(--color-slate-300)}.bg-blue-200\/80{background-color:#bedbffcc}@supports (color:color-mix(in lab, red, red)){.bg-blue-200\/80{background-color:color-mix(in oklab, var(--color-blue-200) 80%, transparent)}}.bg-blue-500{background-color:var(--color-blue-500)}.bg-slate-50\/82{background-color:#f8fafcd1}@supports (color:color-mix(in lab, red, red)){.bg-slate-50\/82{background-color:color-mix(in oklab, var(--color-slate-50) 82%, transparent)}}.bg-slate-100{background-color:var(--color-slate-100)}.bg-slate-600{background-color:var(--color-slate-600)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-8{padding-block:calc(var(--spacing) * 8)}.text-center{text-align:center}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-normal{--tw-leading:var(--leading-normal);line-height:var(--leading-normal)}.text-slate-700{color:var(--color-slate-700)}.text-slate-800{color:var(--color-slate-800)}.uppercase{text-transform:uppercase}.opacity-50{opacity:.5}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_0_0_1px_rgba\(191\,219\,254\,0\.65\)\,0_1px_4px_rgba\(59\,130\,246\,0\.45\)\]{--tw-shadow:0 0 0 1px var(--tw-shadow-color,#bfdbfea6), 0 1px 4px var(--tw-shadow-color,#3b82f673);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_0_0_1px_rgba\(255\,255\,255\,0\.9\)\]{--tw-shadow:0 0 0 1px var(--tw-shadow-color,#ffffffe6);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_0_0_1px_rgba\(255\,255\,255\,0\.85\)\,0_1px_3px_rgba\(15\,23\,42\,0\.18\)\]{--tw-shadow:0 0 0 1px var(--tw-shadow-color,#ffffffd9), 0 1px 3px var(--tw-shadow-color,#0f172a2e);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-blue-300{--tw-ring-color:var(--color-blue-300)}.ring-white\/80{--tw-ring-color:#fffc}@supports (color:color-mix(in lab, red, red)){.ring-white\/80{--tw-ring-color:color-mix(in oklab, var(--color-white) 80%, transparent)}}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.select-none{-webkit-user-select:none;user-select:none}.ring-inset{--tw-ring-inset:inset}@media (hover:hover){.group-hover\:bg-slate-700:is(:where(.group):hover *){background-color:var(--color-slate-700)}.hover\:bg-gray-200\/70:hover{background-color:#e5e7ebb3}@supports (color:color-mix(in lab, red, red)){.hover\:bg-gray-200\/70:hover{background-color:color-mix(in oklab, var(--color-gray-200) 70%, transparent)}}}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-blue-500:focus{--tw-ring-color:var(--color-blue-500)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:outline-2:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.focus-visible\:-outline-offset-2:focus-visible{outline-offset:calc(2px * -1)}.focus-visible\:outline-slate-900:focus-visible{outline-color:var(--color-slate-900)}.active\:bg-blue-300\/60:active{background-color:#90c5ff99}@supports (color:color-mix(in lab, red, red)){.active\:bg-blue-300\/60:active{background-color:color-mix(in oklab, var(--color-blue-300) 60%, transparent)}}.dark\:border-slate-600:where(.dark,.dark *){border-color:var(--color-slate-600)}.dark\:bg-blue-300:where(.dark,.dark *){background-color:var(--color-blue-300)}.dark\:bg-blue-800\/60:where(.dark,.dark *){background-color:#193cb899}@supports (color:color-mix(in lab, red, red)){.dark\:bg-blue-800\/60:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-blue-800) 60%, transparent)}}.dark\:bg-blue-900\/70:where(.dark,.dark *){background-color:#1c398eb3}@supports (color:color-mix(in lab, red, red)){.dark\:bg-blue-900\/70:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-blue-900) 70%, transparent)}}.dark\:bg-slate-200:where(.dark,.dark *){background-color:var(--color-slate-200)}.dark\:bg-slate-800:where(.dark,.dark *){background-color:var(--color-slate-800)}.dark\:bg-slate-800\/95:where(.dark,.dark *){background-color:#1d293df2}@supports (color:color-mix(in lab, red, red)){.dark\:bg-slate-800\/95:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-slate-800) 95%, transparent)}}.dark\:bg-slate-950\/82:where(.dark,.dark *){background-color:#020618d1}@supports (color:color-mix(in lab, red, red)){.dark\:bg-slate-950\/82:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-slate-950) 82%, transparent)}}.dark\:text-slate-200:where(.dark,.dark *){color:var(--color-slate-200)}.dark\:text-slate-300:where(.dark,.dark *){color:var(--color-slate-300)}.dark\:shadow-\[0_0_0_1px_rgba\(15\,23\,42\,0\.55\)\]:where(.dark,.dark *){--tw-shadow:0 0 0 1px var(--tw-shadow-color,#0f172a8c);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.dark\:shadow-\[0_0_0_1px_rgba\(147\,197\,253\,0\.5\)\,0_1px_4px_rgba\(59\,130\,246\,0\.55\)\]:where(.dark,.dark *){--tw-shadow:0 0 0 1px var(--tw-shadow-color,#93c5fd80), 0 1px 4px var(--tw-shadow-color,#3b82f68c);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.dark\:shadow-\[0_0_0_1px_rgba\(148\,163\,184\,0\.45\)\,0_1px_3px_rgba\(2\,6\,23\,0\.55\)\]:where(.dark,.dark *){--tw-shadow:0 0 0 1px var(--tw-shadow-color,#94a3b873), 0 1px 3px var(--tw-shadow-color,#0206178c);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.dark\:ring-blue-400:where(.dark,.dark *){--tw-ring-color:var(--color-blue-400)}.dark\:ring-slate-500\/60:where(.dark,.dark *){--tw-ring-color:#62748e99}@supports (color:color-mix(in lab, red, red)){.dark\:ring-slate-500\/60:where(.dark,.dark *){--tw-ring-color:color-mix(in oklab, var(--color-slate-500) 60%, transparent)}}@media (hover:hover){.dark\:group-hover\:bg-slate-100:where(.dark,.dark *):is(:where(.group):hover *){background-color:var(--color-slate-100)}.dark\:hover\:bg-gray-700\/70:where(.dark,.dark *):hover{background-color:#364153b3}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-gray-700\/70:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-gray-700) 70%, transparent)}}}.dark\:focus-visible\:outline-slate-100:where(.dark,.dark *):focus-visible{outline-color:var(--color-slate-100)}.dark\:active\:bg-blue-700\/60:where(.dark,.dark *):active{background-color:#1447e699}@supports (color:color-mix(in lab, red, red)){.dark\:active\:bg-blue-700\/60:where(.dark,.dark *):active{background-color:color-mix(in oklab, var(--color-blue-700) 60%, transparent)}}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}
package/dist/types.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { CSSProperties, HTMLAttributes, ReactNode } from "react";
2
+ import { PanelGroupLabels } from "./labels";
2
3
  export declare const PANEL_SNAP_THRESHOLD = 12;
3
4
  export declare const PANEL_ALLOCATION_EPSILON = 0.000001;
4
5
  export declare const PANEL_HANDLE_THICKNESS = 8;
@@ -128,6 +129,7 @@ export interface PanelGroupProps extends Omit<HTMLAttributes<HTMLDivElement>, "i
128
129
  style?: CSSProperties;
129
130
  children?: ReactNode;
130
131
  showDebugInfo?: boolean;
132
+ labels?: PanelGroupLabels;
131
133
  onLayout?: (panelSizes: number[], change: PanelLayoutChange) => void;
132
134
  autoSaveId?: string;
133
135
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aiquants/resize-panels",
3
- "version": "2.2.0",
3
+ "version": "2.3.0",
4
4
  "description": "Reusable resizable panel components and utilities for React",
5
5
  "sideEffects": [
6
6
  "**/*.css"
@@ -39,7 +39,7 @@
39
39
  ],
40
40
  "engines": {
41
41
  "node": ">=18.0.0",
42
- "npm": ">=8.0.0"
42
+ "pnpm": ">=8.0.0"
43
43
  },
44
44
  "peerDependencies": {
45
45
  "react": "^19.2.7",
@@ -1,2 +0,0 @@
1
- "use strict";const s=require("react"),T=require("react/jsx-runtime"),Me=require("tailwind-merge"),zn=require("react-dom"),Mn=12,L=1e-6,ot=8,it=6,st=48,lt=80,at=2,ct=32,ut=64,dt=8,pt=8,ft=4,Pn=10,Cn=.05,Ln=10,ht=.05,mt=20,gt=.05,xt=(e,n=0)=>{if(!Number.isFinite(e))return e;const t=10**n,r=e*t,o=Math.floor(r),i=r-o,l=Number.EPSILON*Math.max(1,Math.abs(r));return i<.5-l?o/t:i>.5+l?(o+1)/t:(o%2===0?o:o+1)/t},St=6,nn=(e,n)=>n<=0?0:xt(e/n*100,St),bt=(e,n)=>n<=0?0:e/100*n,_n=(e,n="percentage")=>{if(e!==void 0)return typeof e=="number"?{value:e,unit:n}:e},De=(e,n,t)=>e===void 0?n:typeof e=="number"?e/100*t:e.unit==="pixels"?e.value:e.value/100*t,ze=(e,n,t)=>Math.min(Math.max(e,n),t),tn=e=>!Number.isFinite(e)||e<=0?0:Math.max(0,Math.min(Mn,Ln,e*Cn)),he=e=>{if(!e)return 0;const n=Number.parseFloat(e);return Number.isFinite(n)?n:0},Pe=(e,n,t)=>{const r=n==="horizontal",o=typeof window<"u"?window.getComputedStyle(e):null,i=o?r?he(o.paddingLeft)+he(o.paddingRight):he(o.paddingTop)+he(o.paddingBottom):0,l=o?r?he(o.borderLeftWidth)+he(o.borderRightWidth):he(o.borderTopWidth)+he(o.borderBottomWidth):0,a=t?.contentBoxSize?.[0],p=a?r?a.inlineSize:a.blockSize:void 0,u=r?e.clientWidth:e.clientHeight,g=u>0?Math.max(0,u-i):Math.max(0,(r?e.offsetWidth:e.offsetHeight)-i-l),c=p??g;return{content:Math.max(0,c),border:Math.max(0,c+i+l)}},yt="[data-panel-group-direction]",Xe="[data-panel-id], [data-resize-handle-anchor]",zt="[data-panel-id]",Ce=e=>e?.closest(yt)??null,rn=e=>Array.from(e.querySelectorAll(Xe)).filter(n=>{if(Ce(n)!==e)return!1;const t=n.parentElement?.closest(zt);return!(t&&e.contains(t))}),Pt=e=>{const n=t=>{for(const r of Array.from(t))if(r instanceof Element&&(r.matches(Xe)||r.querySelector(Xe)!==null))return!0;return!1};return e.some(t=>n(t.addedNodes)||n(t.removedNodes))},Et=(e,n)=>{if(typeof window>"u")return 1;const t=n==="horizontal",r=e.getBoundingClientRect(),o=t?r.width:r.height,i=window.getComputedStyle(e),l=t?i.width:i.height;if(!l.endsWith("px"))return 1;const a=Number.parseFloat(l);return o>0&&Number.isFinite(a)&&a>0?o/a:1},Ze=(e,n)=>{try{localStorage.setItem(`panel-layout-${e}`,JSON.stringify(n))}catch(t){console.warn("Failed to save panel layout:",t)}},An=e=>{try{const n=localStorage.getItem(`panel-layout-${e}`);if(!n)return null;const t=JSON.parse(n);if(!Array.isArray(t))return null;const r=o=>typeof o=="object"&&o!==null&&typeof o.id=="string"&&Number.isFinite(o.size);return t.every(r)?t:null}catch(n){return console.warn("Failed to load panel layout:",n),null}},Je=0,Dn=1,Oe=e=>Number.isFinite(e)&&e>0?e:0,J=e=>e.sizeUnit==="pixels",me=(e,n)=>{const t=Math.max(0,Oe(De(e.minSize,0,n))),r=Math.max(t,Oe(De(e.maxSize,n,n)));return{min:t,max:r}},Rt=(e,n)=>{const t=e.map(o=>o.min),r=e.map(()=>!1);for(;;){let o=0,i=0,l=0;for(let c=0;c<e.length;c+=1){if(r[c]){i+=t[c];continue}l+=1,o+=e[c].weight}if(l===0)return t;const a=n-i;if(o<=0){for(let c=0;c<e.length;c+=1)r[c]||(t[c]=e[c].min);return t}const p=Math.max(0,a/o);let u=0;for(let c=0;c<e.length;c+=1){if(r[c])continue;const M=p*e[c].weight,h=ze(M,e[c].min,e[c].max);t[c]=h,u+=h-M}let g=!1;for(let c=0;c<e.length;c+=1){if(r[c])continue;const M=p*e[c].weight;u>L&&t[c]>M+L?(r[c]=!0,t[c]=e[c].min,g=!0):u<-L&&t[c]<M-L&&(r[c]=!0,t[c]=e[c].max,g=!0)}if(!g)return t}},wt=(e,n,t)=>{const{min:r,max:o}=me(e,t);if(J(e))return{index:n,weight:0,target:ze(Oe(e.preferredPixelSize),r,o),priority:e.pixelAdjustPriority??0,tier:Je,min:r,max:o};const i=Oe(e.preferredPercentageSize),l=e.flexAdjustPriority!==void 0;return{index:n,weight:i,target:l?ze(i/100*t,r,o):null,priority:e.flexAdjustPriority??0,tier:Dn,min:r,max:o}},En=(e,n,t,r)=>{let o=r;for(const i of e){if(o<=L)break;const l=t(i)-n[i.index];if(l<=0)continue;const a=Math.min(l,o);n[i.index]+=a,o-=a}return o},Qe=(e,n,t)=>{if(e.length===0||t<=L)return t;const r=e.map(l=>({...l,min:n[l.index]})),o=Rt(r,t+r.reduce((l,a)=>l+a.min,0));let i=0;for(let l=0;l<e.length;l+=1)i+=o[l]-n[e[l].index],n[e[l].index]=o[l];return t-i},vt=(e,n,t)=>Qe(e.map(r=>({...r,weight:1})),n,t),Nt=(e,n)=>e.tier!==n.tier?e.tier-n.tier:e.priority!==n.priority?n.priority-e.priority:e.index-n.index,On=(e,n)=>{const t=e.map(()=>0);if(!Number.isFinite(n)||n<=0||e.length===0)return{sizes:t,violation:null};const r=[];for(let h=0;h<e.length;h+=1){const B=e[h];B.collapsed||r.push(wt(B,h,n))}if(r.length===0)return{sizes:t,violation:null};let o=0,i=0;for(const h of r)t[h.index]=h.min,o+=h.min,i+=h.max;const l=It(o,i,n);let a=n-o;if(a<=L)return{sizes:t,violation:l};const p=r.filter(h=>h.target!==null).sort(Nt),u=r.filter(h=>h.target===null&&h.weight>0),g=r.filter(h=>h.tier!==Je&&h.weight<=0),c=p.filter(h=>h.tier===Dn),M=p.filter(h=>h.tier===Je);return a=En(p,t,h=>h.target??h.min,a),a=Qe(u,t,a),a=Qe(c,t,a),a=En(M,t,h=>h.max,a),a=vt(g,t,a),{sizes:t,violation:l}},It=(e,n,t)=>e-t>L?{reason:"minimum-exceeded",totalMinimumSize:e,totalMaximumSize:n,availableContainerSize:t}:t-n>L?{reason:"maximum-insufficient",totalMinimumSize:e,totalMaximumSize:n,availableContainerSize:t}:null,on=s.createContext(null),ke=()=>{const e=s.useContext(on);if(!e)throw new Error("usePanelGroup must be used within a PanelGroup");return e};var Fe=(e=>(e[e.DEBUG=0]="DEBUG",e[e.INFO=1]="INFO",e[e.WARN=2]="WARN",e[e.ERROR=3]="ERROR",e[e.NONE=4]="NONE",e))(Fe||{});const Z=class Z{constructor(n=2,t="[resize-panels]",r=console){this.level=n,this.prefix=t,this.impl=r,Z.instances.add(this)}static setLevel(n){for(const t of Z.instances)t.setLevel(n)}setLevel(n){this.level=n}static setImplementation(n){for(const t of Z.instances)t.setImplementation(n)}setImplementation(n){this.impl=n}static setPrefix(n){for(const t of Z.instances)t.setPrefix(n)}setPrefix(n){this.prefix=n}enabledFor(n){return this.level<=n}formatMessage(n){return typeof n=="string"?[`${this.prefix} ${n}`]:[this.prefix,n]}static debug(n,...t){Z.instance.debug(n,...t)}debug(n,...t){this.level<=0&&this.impl.debug(...this.formatMessage(n),...t)}static info(n,...t){Z.instance.info(n,...t)}info(n,...t){this.level<=1&&this.impl.info(...this.formatMessage(n),...t)}static warn(n,...t){Z.instance.warn(n,...t)}warn(n,...t){this.level<=2&&this.impl.warn(...this.formatMessage(n),...t)}static error(n,...t){Z.instance.error(n,...t)}error(n,...t){this.level<=3&&this.impl.error(...this.formatMessage(n),...t)}};Z.instances=new Set,Z.instance=new Z(2,"[resize-panels]");let Le=Z;const Tn=new Le(Fe.INFO,"[resize-panels]"),kn={containerSize:0,panels:[],violation:null},Rn=(e,n)=>e===null||n===null?e===n:e.reason===n.reason&&Math.abs(e.totalMinimumSize-n.totalMinimumSize)<=L&&Math.abs(e.totalMaximumSize-n.totalMaximumSize)<=L&&Math.abs(e.availableContainerSize-n.availableContainerSize)<=L,ce=(e,n)=>{const{sizes:t,violation:r}=On(e,n);let o=!1;const i=e.map((a,p)=>{const u=a.collapsed?0:t[p];return Math.abs(a.size-u)<=L?a:(o=!0,{...a,size:u})}),l={containerSize:n,panels:o?i:e,violation:r};return Mt(l),l},Fn=e=>{if(e.containerSize<=0||e.violation!==null)return null;let n=0,t=0;for(const o of e.panels)o.collapsed||(n+=o.size,t+=1);if(t===0)return null;const r=L*Math.max(1,e.containerSize);return!Number.isFinite(n)||Math.abs(n-e.containerSize)>r?{allocatedTotal:n,containerSize:e.containerSize}:null},Mt=e=>{const n=Fn(e);n&&Tn.error("Allocated sizes do not fill the container.",{...n,panels:e.panels.map(t=>({id:t.id,size:t.size,collapsed:t.collapsed}))})},ue=(e,n)=>e.panels===n.panels&&e.containerSize===n.containerSize&&Rn(e.violation,n.violation)?e:{containerSize:n.containerSize,panels:n.panels,violation:Rn(e.violation,n.violation)?e.violation:n.violation},Ct=(e,n)=>{const t=e.sizeUnit==="pixels"?e.preferredPixelSize:e.preferredPercentageSize;return{...e,size:0,collapsed:e.collapsed,collapsedByDirection:e.collapsed?n:null,preferenceBeforeCollapse:t,authoredPreference:t}},Ve=e=>e.collapseFromStart?"start":e.collapseFromEnd?"end":null,Lt=(e,n)=>{if(n<=0)return e;const t=tn(n);return e.map(r=>{if(r.collapsed)return r;const o=J(r)?r.size:r.size/n*100,i=J(r)?r.preferredPixelSize:r.preferredPercentageSize,l=r.size>t?o:r.preferenceBeforeCollapse;return i===o&&l===r.preferenceBeforeCollapse?r:J(r)?{...r,preferredPixelSize:o,preferenceBeforeCollapse:l}:{...r,preferredPercentageSize:o,preferenceBeforeCollapse:l}})},en=(e,n,t)=>{if(J(e)){const o=Math.max(0,n);return{...e,preferredPixelSize:o,preferenceBeforeCollapse:o}}if(t<=0)return e;const r=Math.max(0,n/t*100);return{...e,preferredPercentageSize:r,preferenceBeforeCollapse:r}},Bn=(e,n)=>{const t=e.collapsed?e.preferenceBeforeCollapse:J(e)?e.preferredPixelSize:e.preferredPercentageSize;return J(e)?t:t/100*n},_t=(e,n,t,r)=>{const o=Math.max(0,Math.min(t,r)),i=e.filter(u=>u.id!==n&&!u.collapsed&&!J(u)),l=e.reduce((u,g)=>g.id!==n&&!g.collapsed&&J(g)?u+g.size:u,0),a=i.reduce((u,g)=>u+g.size,0),p=Math.max(0,r-o-l);return e.map(u=>{if(u.id===n)return en(u,o,r);if(u.collapsed||J(u)||i.length===0)return u;const g=a>0?u.size/a*p:p/i.length;return en(u,g,r)})},Hn=(e,n)=>{switch(n.type){case"SET_CONTAINER_SIZE":return!Number.isFinite(n.containerSize)||n.containerSize<0||n.containerSize===e.containerSize?e:ue(e,ce(e.panels,n.containerSize));case"REGISTER_PANEL":{const t=e.panels.findIndex(c=>c.id===n.panel.id);if(t===-1){const c=[...e.panels,Ct(n.panel,Ve(n.panel))];return ue(e,ce(c,e.containerSize))}const r=e.panels[t],o=n.panel.sizeUnit==="pixels"?n.panel.preferredPixelSize:n.panel.preferredPercentageSize,i=o!==r.authoredPreference||n.panel.sizeUnit!==r.sizeUnit,l=r.collapsedByDirection==="start"?n.panel.collapseFromStart:r.collapsedByDirection==="end"?n.panel.collapseFromEnd:!1,a=n.panel.collapseFromStart||n.panel.collapseFromEnd,p=r.collapsed&&a,u={...r,...n.panel,collapsed:p,collapsedByDirection:p?l?r.collapsedByDirection:Ve(n.panel):null,preferredPercentageSize:i?n.panel.preferredPercentageSize:r.preferredPercentageSize,preferredPixelSize:i?n.panel.preferredPixelSize:r.preferredPixelSize,preferenceBeforeCollapse:i?o:r.preferenceBeforeCollapse,authoredPreference:o},g=[...e.panels];return g[t]=u,ue(e,ce(g,e.containerSize))}case"UNREGISTER_PANEL":{const t=e.panels.filter(r=>r.id!==n.id);return t.length===e.panels.length?e:ue(e,ce(t,e.containerSize))}case"REORDER_PANELS":{if(n.ids.length!==e.panels.length||new Set(n.ids).size!==n.ids.length)return e;const t=new Map(e.panels.map(o=>[o.id,o])),r=[];for(const o of n.ids){const i=t.get(o);if(!i)return e;r.push(i)}return r.every((o,i)=>o===e.panels[i])?e:ue(e,ce(r,e.containerSize))}case"RESIZE_PANELS":{const t=e.panels.findIndex(B=>B.id===n.startId),r=e.panels.findIndex(B=>B.id===n.endId);if(t===-1||r===-1)return e;const o=e.panels[t],i=e.panels[r];if(o.collapsed||i.collapsed||e.containerSize<=0||!Number.isFinite(n.startSize))return e;const l=o.size+i.size,a=me(o,e.containerSize),p=me(i,e.containerSize),u=Math.max(a.min,l-p.max),g=Math.min(a.max,l-p.min);if(u-g>L)return e;const c=ze(n.startSize,u,Math.max(u,g)),M=l-c;if(Math.abs(c-o.size)<=L)return e;const h=[...e.panels];return h[t]={...o,size:c},h[r]={...i,size:M},ue(e,ce(Lt(h,e.containerSize),e.containerSize))}case"COLLAPSE_PANEL":{const t=e.panels.findIndex(l=>l.id===n.id);if(t===-1)return e;const r=e.panels[t];if(!(n.from==="start"?r.collapseFromStart:r.collapseFromEnd)||r.collapsed)return e;const i=[...e.panels];return i[t]={...r,collapsed:!0,collapsedByDirection:n.from},ue(e,ce(i,e.containerSize))}case"EXPAND_PANEL":{const t=e.panels.findIndex(p=>p.id===n.id);if(t===-1||n.targetSize!==void 0&&e.containerSize<=0)return e;const r=e.panels[t];if(!((n.from==="start"?r.collapseFromStart:r.collapseFromEnd)&&r.collapsed)||r.collapsedByDirection!==null&&r.collapsedByDirection!==n.from)return e;const i={...r,collapsed:!1,collapsedByDirection:null,preferredPixelSize:J(r)?r.preferenceBeforeCollapse:r.preferredPixelSize,preferredPercentageSize:J(r)?r.preferredPercentageSize:r.preferenceBeforeCollapse},l=[...e.panels];l[t]=i;const a=n.targetSize===void 0?l:_t(l,n.id,n.targetSize,e.containerSize);return ue(e,ce(a,e.containerSize))}case"RESTORE_LAYOUT":{if(n.entries.length!==e.panels.length||e.containerSize<=0)return e;const t=new Map(n.entries.map(o=>[o.id,o]));if(e.panels.some(o=>!t.has(o.id)))return e;const r=e.panels.map(o=>{const i=t.get(o.id);if(!i)return o;const l=en(o,i.size,e.containerSize),a=o.collapseFromStart||o.collapseFromEnd;return i.collapsed&&a?{...l,collapsed:!0,collapsedByDirection:o.collapsedByDirection??Ve(o)}:l.collapsed?{...l,collapsed:!1,collapsedByDirection:null}:l});return Tn.debug("restore layout",{containerSize:e.containerSize,entries:n.entries}),ue(e,ce(r,e.containerSize))}default:return e}},At={layout:kn,source:null},Dt=e=>{switch(e.type){case"SET_CONTAINER_SIZE":return"container";case"REGISTER_PANEL":case"UNREGISTER_PANEL":case"REORDER_PANELS":return"panels";case"RESTORE_LAYOUT":return"restore";case"RESIZE_PANELS":case"COLLAPSE_PANEL":case"EXPAND_PANEL":return e.source}},Ot=(e,n)=>{const t=Hn(e.layout,n);if(t===e.layout)return e;const r=t.panels!==e.layout.panels||t.containerSize>0!=e.layout.containerSize>0;return{layout:t,source:r?Dt(n):e.source}},Tt=new Le(Fe.INFO,"[resize-panels]"),kt={pointer:!0,keyboard:!0,api:!0},Ft=e=>typeof e=="string"&&Object.hasOwn(kt,e),Ke=e=>{if(!Ft(e))throw new RangeError(`[resize-panels] A request source must be "pointer", "keyboard" or "api"; received ${typeof e=="string"?JSON.stringify(e):String(e)}.`);return e},Bt=200,Ht="\0handle",$n=({direction:e,style:n,onLayout:t,autoSaveId:r,showDebugInfo:o=!1})=>{const[{layout:i,source:l},a]=s.useReducer(Ot,At),[p,u]=s.useState({}),[g,c]=s.useState({}),M=s.useRef(null),[h,B]=s.useState(""),W=s.useRef({}),se=s.useRef(t);se.current=t,s.useLayoutEffect(()=>{const d=M.current;if(!d||typeof ResizeObserver>"u")return;let f=Number.NaN;const x=C=>{C!==f&&(f=C,a({type:"SET_CONTAINER_SIZE",containerSize:C}))},S=new ResizeObserver(C=>{x(Pe(d,e,C[0]).content)});return S.observe(d),x(Pe(d,e).content),()=>{S.disconnect(),a({type:"SET_CONTAINER_SIZE",containerSize:0})}},[e]);const w=i.panels,H=s.useRef(w);H.current=w;const v=s.useCallback(()=>{const d=M.current,f=H.current;if(!d)return;const x=rn(d);if(B(C=>{const re=x.map(Be=>Be.dataset.panelId??Ht).join("\0");return C===re?C:re}),f.length===0)return;const S=[];for(const C of x){const re=C.dataset.panelId;re!==void 0&&S.push(re)}if(new Set(S).size!==S.length){Tt.error("Duplicate panel id in one group.",{ids:S});return}S.length!==f.length||S.every((C,re)=>C===f[re].id)||a({type:"REORDER_PANELS",ids:S})},[]);s.useLayoutEffect(()=>{const d=M.current;if(!d||(v(),typeof MutationObserver>"u"))return;const f=new MutationObserver(x=>{Pt(x)&&v()});return f.observe(d,{childList:!0,subtree:!0}),()=>{f.disconnect()}},[v]),s.useLayoutEffect(()=>{v()},[v,w]);const _=s.useMemo(()=>w.map(d=>d.size),[w]),E=i.containerSize>0;s.useLayoutEffect(()=>{!E||_.length===0||l===null||se.current?.(_,{source:l})},[_,E,l]);const $=s.useRef(null);s.useEffect(()=>{if(!r||$.current===r||!E||w.length===0)return;$.current=r;const d=An(r);d&&a({type:"RESTORE_LAYOUT",entries:d})},[r,E,w.length]);const b=s.useRef(null);s.useEffect(()=>{if(!(r&&$.current===r&&E)||w.length===0)return;const d=w.map(x=>({id:x.id,size:Bn(x,i.containerSize),collapsed:x.collapsed}));b.current={id:r,entries:d};const f=setTimeout(()=>{b.current=null,Ze(r,d)},Bt);return()=>{clearTimeout(f)}},[r,w,i.containerSize,E]),s.useEffect(()=>()=>{const d=b.current;d&&(b.current=null,Ze(d.id,d.entries))},[]);const q=s.useCallback(d=>{const f=JSON.stringify(d);W.current[d.id]!==f&&(W.current[d.id]=f,a({type:"REGISTER_PANEL",panel:d}))},[]),k=s.useCallback(d=>{delete W.current[d],a({type:"UNREGISTER_PANEL",id:d}),u(f=>{if(!(d in f))return f;const x={...f};return delete x[d],x})},[]),O=s.useCallback((d,f,x,S="api")=>{a({type:"RESIZE_PANELS",startId:d,endId:f,startSize:x,source:Ke(S)})},[]),V=s.useCallback((d,f,x="api")=>{a({type:"COLLAPSE_PANEL",id:d,from:f,source:Ke(x)})},[]),y=s.useCallback((d,f,x,S="api")=>{a({type:"EXPAND_PANEL",id:d,from:f,targetSize:x,source:Ke(S)})},[]),z=s.useCallback(d=>w.find(f=>f.id===d),[w]),G=s.useCallback((d,f)=>{u(x=>{if(f===null){if(!(d in x))return x;const C={...x};return delete C[d],C}const S=x[d];return S&&S.pixelSize===f.pixelSize&&S.percentageSize===f.percentageSize?x:{...x,[d]:f}})},[]),P=s.useCallback((d,f)=>{c(x=>{if(f===null){if(!(d in x))return x;const C={...x};return delete C[d],C}const S=x[d];return S&&S.thickness===f.thickness&&S.visible===f.visible&&S.direction===f.direction&&S.startPanelId===f.startPanelId&&S.endPanelId===f.endPanelId?x:{...x,[d]:f}})},[]),Y=s.useMemo(()=>({direction:e,panels:w,containerSize:i.containerSize,layoutOrderKey:h,showDebugInfo:o,registerPanel:q,unregisterPanel:k,resizePanels:O,collapsePanel:V,expandPanel:y,getPanel:z,reportPanelMeasurement:G,panelMeasurements:p,reportHandleMeasurement:P,handleMeasurements:g,layoutConstraintViolation:i.violation}),[e,w,i.containerSize,h,i.violation,o,q,k,O,V,y,z,G,p,P,g]),te=s.useMemo(()=>({width:"100%",height:"100%",minWidth:"0px",minHeight:"0px",overflow:"hidden",...n,display:"flex",flexDirection:e==="horizontal"?"row":"column",alignItems:"stretch",gap:"0px",position:"relative",boxSizing:"border-box",writingMode:"horizontal-tb"}),[e,n]);return{groupRef:M,contextValue:Y,groupStyle:te}},$t=e=>{const{getPanel:n,collapsePanel:t,expandPanel:r}=ke(),o=n(e),i=s.useCallback(p=>{t(e,p,"api")},[t,e]),l=s.useCallback((p,u)=>{r(e,p,u,"api")},[r,e]),a=s.useCallback((p,u)=>{o?.collapsed?l(p,u):i(p)},[o?.collapsed,i,l]);return s.useMemo(()=>({panel:o,isCollapsed:o?.collapsed??!1,canCollapseFromStart:o?.collapseFromStart??!1,canCollapseFromEnd:o?.collapseFromEnd??!1,collapse:i,expand:l,toggle:a}),[o,i,l,a])},Gt=({panel:e,containerAxisSize:n,containerLabel:t})=>{if(!e)return{sizeDisplay:"-",preferenceDisplay:"-",boundsDisplay:"-",containerDisplay:"-",headlineLabel:"Unregistered",titleText:"Unregistered"};const r=e.sizeUnit==="pixels",o=`${e.size.toFixed(3)}px / ${nn(e.size,n).toFixed(3)}%`,i=r?`${e.preferredPixelSize.toFixed(3)}px`:`${e.preferredPercentageSize.toFixed(3)}%`,l=me(e,n),a=`${l.min.toFixed(1)} - ${l.max.toFixed(1)}px`,p=Number.isFinite(n)?`${n.toFixed(3)}px`:"-",u=r?"Fixed":"Flexible",g=[u,`${t}: ${p}`,`size: ${o}`,`preference: ${i}`,`bounds: ${a}`].join(`
2
- `);return{sizeDisplay:o,preferenceDisplay:i,boundsDisplay:a,containerDisplay:p,headlineLabel:u,titleText:g}},jt=s.memo(({panel:e,containerAxisSize:n,direction:t})=>{const r=t==="horizontal"?"container width":"container height",{sizeDisplay:o,preferenceDisplay:i,boundsDisplay:l,containerDisplay:a,headlineLabel:p,titleText:u}=s.useMemo(()=>Gt({panel:e,containerAxisSize:n,containerLabel:r}),[e,n,r]),g={position:"absolute",top:2,left:2,zIndex:30,pointerEvents:"none",maxWidth:"calc(100% - 4px)",padding:"2px 4px",borderRadius:4,border:"1px solid rgba(255,255,255,0.1)",backgroundColor:"rgba(15, 23, 42, 0.78)",color:"#e2e8f0",fontFamily:"ui-monospace, SFMono-Regular, Menlo, monospace",fontSize:10,lineHeight:1.35,whiteSpace:"pre",overflow:"hidden",textOverflow:"ellipsis"};return T.jsxs("div",{style:g,title:u,"data-panel-debug-info":"",children:[T.jsxs("div",{children:[p," · ",r,": ",a]}),T.jsxs("div",{children:["size: ",o]}),T.jsxs("div",{children:["preference: ",i]}),T.jsxs("div",{children:["bounds: ",l]})]})}),wn=new Le(Fe.INFO,"[resize-panels]"),Ut={both:{collapseFromStart:!0,collapseFromEnd:!0},start:{collapseFromStart:!0,collapseFromEnd:!1},end:{collapseFromStart:!1,collapseFromEnd:!0}},Wt=e=>{if(!e)return{collapseFromStart:!1,collapseFromEnd:!1};const n=Ut[e.from];if(!n)throw new Error("Invalid collapsible configuration: unsupported 'from' value");return n},qt=e=>{const n=Math.max(0,e.value);return e.unit==="pixels"?{sizeUnit:"pixels",preferredPixelSize:n,preferredPercentageSize:0}:{sizeUnit:"percentage",preferredPercentageSize:n,preferredPixelSize:0}},Vt=({size:e,panel:n,registration:t,containerSize:r,isCollapsed:o})=>{if(o)return{flexBasis:"0px",flexGrow:0,flexShrink:0};if(!n||r<=0){const p=t.sizeUnit==="pixels";return{flexBasis:p?`${t.preferredPixelSize}px`:`${t.preferredPercentageSize}%`,flexGrow:p?0:t.preferredPercentageSize,flexShrink:p?0:1}}if(n.sizeUnit==="pixels")return{flexBasis:`${e}px`,flexGrow:0,flexShrink:0};const i=me(n,r),l=e<i.max-L,a=l&&e>i.min+L;return{flexBasis:`${e}px`,flexGrow:l?n.preferredPercentageSize:0,flexShrink:a?1:0}},Kt=s.memo(({id:e,defaultSize:n={value:50,unit:"percentage"},minSize:t,maxSize:r,className:o,style:i,children:l,collapsible:a,defaultCollapsed:p=!1,pixelAdjustPriority:u,flexAdjustPriority:g,contentOverflow:c="auto",...M})=>{const{direction:h,registerPanel:B,unregisterPanel:W,getPanel:se,containerSize:w,showDebugInfo:H,reportPanelMeasurement:v}=ke(),_=s.useRef(null),E=s.useId(),b=s.useRef(e||`panel-${E}`).current;s.useEffect(()=>{e&&e!==b&&wn.warn("Panel id prop change after mount is ignored.",{currentId:b,attemptedId:e})},[e,b]);const q=s.useMemo(()=>Wt(a),[a]),k=q.collapseFromStart||q.collapseFromEnd;s.useEffect(()=>{p&&!k&&wn.warn("Panel defaultCollapsed is ignored because collapsible configuration is not provided.",{panelId:b})},[p,k,b]);const O=s.useMemo(()=>{const d=_n(n)??{value:50,unit:"percentage"};return{id:b,...qt(d),minSize:t,maxSize:r,...q,collapsed:k&&p,pixelAdjustPriority:u,flexAdjustPriority:g}},[b,n,t,r,q,k,p,u,g]);s.useLayoutEffect(()=>{B(O)},[B,O]),s.useLayoutEffect(()=>()=>{W(b)},[W,b]);const V=se(b),y=V?.size??0,z=V?.collapsed??!1,G=s.useRef(w);G.current=w;const P=s.useCallback(()=>{const d=_.current;if(!d)return;const f=Pe(d,h).border;v(b,{pixelSize:f,percentageSize:nn(f,G.current)})},[h,b,v]);s.useEffect(()=>{if(!H){v(b,null);return}const d=_.current;if(!d||typeof ResizeObserver>"u"){P();return}const f=new ResizeObserver(P);return f.observe(d),P(),()=>{f.disconnect(),v(b,null)}},[H,P,b,v]);const Y=s.useMemo(()=>{const d={overflow:"hidden",isolation:"isolate"},f=z?{...h==="horizontal"?{width:"0px"}:{height:"0px"},pointerEvents:"none",visibility:"hidden",display:"none"}:{};return{...d,...i,...Vt({size:y,panel:V,registration:O,containerSize:w,isCollapsed:z}),order:0,margin:0,display:"flex",flexDirection:"column",position:"relative",boxSizing:"border-box",minWidth:0,minHeight:0,maxWidth:"none",maxHeight:"none",...h==="horizontal"?{height:"100%"}:{width:"100%"},...f}},[y,h,z,V,O,w,i]),te=s.useMemo(()=>({flex:"1 1 auto",position:"relative",overflow:c,display:"flex",flexDirection:"column",minWidth:"0px",minHeight:"0px"}),[c]);return T.jsxs("div",{...M,ref:_,className:Me.twMerge("panel",o),style:Y,"data-panel-id":b,"data-panel-size":y,"data-panel-size-unit":V?.sizeUnit??"percentage","data-panel-collapsible":k,"data-panel-collapse-start":q.collapseFromStart,"data-panel-collapse-end":q.collapseFromEnd,"data-panel-collapsed":z,"aria-hidden":z,children:[T.jsx("div",{style:te,children:l}),H&&T.jsx(jt,{panel:V,containerAxisSize:w,direction:h})]})}),Yt=s.lazy(()=>Promise.resolve().then(()=>require("./GlobalDebugOverlay-Dp6IcAX8.cjs")).then(e=>({default:e.GlobalDebugOverlayGate}))),Xt=[],Zt={};let vn=0;const Jt=()=>(vn+=1,`panel-group-${vn}`),Qt=e=>{const n=e.reason==="minimum-exceeded",t=n?"Layout unavailable: minimum panel sizes exceed the container.":"Layout unavailable: panels cannot fill the container with their maximum sizes.",r=n?`Min required: ${Math.ceil(e.totalMinimumSize)}px | Available: ${Math.floor(e.availableContainerSize)}px`:`Max total: ${Math.floor(e.totalMaximumSize)}px | Needed: ${Math.floor(e.availableContainerSize)}px`;return{summary:t,detail:r}},er=(e,n)=>e.map(t=>{const r=n[t.id];return r?{...t,measuredPixelSize:r.pixelSize,measuredPercentageSize:r.percentageSize}:t}),Nn=(e,n,t)=>{const r=Pe(e,"horizontal"),o=Pe(e,"vertical"),i=e.getBoundingClientRect(),l=r.content>0?r.content:n??i.width,a=o.content>0?o.content:t??i.height;return{width:l,height:a}},nr=e=>{const{id:n,className:t,style:r,children:o,direction:i,onLayout:l,autoSaveId:a,showDebugInfo:p,...u}=e,{groupRef:g,contextValue:c,groupStyle:M}=$n(e),[h,B]=s.useState({width:0,height:0}),W=c.layoutConstraintViolation,se=!!W,w=s.useMemo(()=>{if(!W)return null;const{summary:y,detail:z}=Qt(W);return T.jsxs("div",{className:"flex w-full flex-1 flex-col items-center justify-center gap-2 rounded-lg border border-slate-300 border-dashed bg-slate-100/70 px-6 py-8 text-center text-slate-600 text-sm dark:border-slate-600 dark:bg-slate-800/50 dark:text-slate-200","data-panel-group-placeholder":"constraint-violation",children:[T.jsx("span",{children:y}),T.jsx("span",{className:"text-slate-500 text-xs dark:text-slate-400",children:z})]})},[W]),H=s.useRef(null);H.current===null&&(H.current=n??Jt());const v=H.current,_=n??v,E=c.showDebugInfo&&c.panels.length>0,$=E?c.panels:Xt,b=E?c.panelMeasurements:Zt,q=s.useMemo(()=>{if(!E)return[];const y=Object.values(c.handleMeasurements);return y.length<=1?y:y.slice().sort((z,G)=>z.id.localeCompare(G.id))},[c.handleMeasurements,E]),k=h.width,O=h.height;s.useLayoutEffect(()=>{if(!E){B({width:0,height:0});return}if(typeof window>"u"||typeof ResizeObserver>"u")return;const y=g.current;if(!y)return;const z=P=>{B(Y=>Y.width===P.width&&Y.height===P.height?Y:P)},G=new ResizeObserver(P=>{for(const Y of P){if(Y.target!==y)continue;const te=Nn(y,Y.contentRect.width,Y.contentRect.height);z(te)}});return G.observe(y),z(Nn(y)),()=>{G.disconnect()}},[g,E]);const V=s.useMemo(()=>er($,b),[$,b]);return s.useEffect(()=>{if(!E)return;let y=!1,z=null;return Promise.resolve().then(()=>require("./debugOverlayStore-DY09saU8.cjs")).then(G=>{y||(z=G,G.enableDebugOverlayGroup(v))}),()=>{y=!0,z&&(z.disableDebugOverlayGroup(v),z.removeDebugOverlayGroup(v))}},[E,v]),s.useEffect(()=>{if(!E)return;let y=!1;return Promise.resolve().then(()=>require("./debugOverlayStore-DY09saU8.cjs")).then(z=>{y||z.updateDebugOverlayGroup(v,{displayName:_,direction:i,containerSize:{width:k,height:O},panels:V,handles:q})}),()=>{y=!0}},[E,v,_,i,k,O,V,q]),T.jsxs(on.Provider,{value:c,children:[T.jsxs("div",{...u,ref:g,className:Me.twMerge("panel-group",i==="horizontal"?"flex-row":"flex-col",t),style:M,"data-panel-group-id":n,"data-panel-group-direction":i,children:[o,se&&w?T.jsx("div",{className:"pointer-events-auto",style:{position:"absolute",inset:0,zIndex:60,display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",backgroundColor:"rgba(248, 250, 252, 0.82)",backdropFilter:"blur(2px)"},children:w}):null]}),E&&T.jsx(s.Suspense,{fallback:null,children:T.jsx(Yt,{groupId:v})})]})},tr={display:"none",pointerEvents:"none",visibility:"hidden"},rr={display:"none"},Ie=(e,n)=>typeof e!="number"||!Number.isFinite(e)||e<=0?n:e,or=e=>{const n=Math.round(e);return n%2===0?n:n+1},In=e=>!e||typeof window>"u"?!1:window.getComputedStyle(e).direction==="rtl",Ye=(e,n,t)=>{const r=e.collapsed?0:e.size,o=n.collapsed?0:n.size,i=r+o;if(i<=0)return;const l=me(e,t),a=me(n,t),p=Math.max(l.min,i-a.max),u=Math.max(p,Math.min(l.max,i-a.min));if(e.collapsed)return{position:0,lower:0,upper:e.collapsedByDirection==="end"?Math.max(0,u):0,resizeLower:p,resizeUpper:u};if(n.collapsed){const M=n.collapsedByDirection==="start";return{position:i,lower:M?Math.min(i,p):i,upper:i,resizeLower:p,resizeUpper:u}}const g=Math.min(r,e.collapseFromEnd?0:p),c=Math.max(r,g,n.collapseFromStart?i:u);return{position:r,lower:g,upper:c,resizeLower:p,resizeUpper:u}},ir=Object.freeze([]),sr=e=>{if(typeof e=="number")return Number.isFinite(e)&&e>=0;if(typeof e!="object"||e===null)return!1;const{value:n,unit:t}=e;return(t==="pixels"||t==="percentage")&&typeof n=="number"&&Number.isFinite(n)&&n>=0},Te=e=>{if(typeof e=="string")return JSON.stringify(e);if(typeof e!="object"||e===null||Array.isArray(e))return String(e);const{value:n,unit:t}=e;return`{ value: ${Te(n)}, unit: ${Te(t)} }`},lr=e=>{if(e===void 0)return ir;if(!Array.isArray(e))throw new RangeError(`[resize-panels] activationSizes must be an array of sizes; received ${Te(e)}.`);for(const[n,t]of e.entries())if(!sr(t))throw new RangeError(`[resize-panels] activationSizes[${n}] must be a non-negative finite percentage or { value, unit: "pixels" | "percentage" } with a non-negative finite value; received ${Te(t)}.`);return e},ar=(e,n,t)=>{let r,o;for(const i of e){const l=ze(De(i,0,t),n.resizeLower,n.resizeUpper);Math.abs(l-n.position)<=L||((o===void 0||l<o)&&(o=l),l>n.position&&(r===void 0||l<r)&&(r=l))}return r===void 0?o:r},cr=s.memo(e=>{const{id:n,disabled:t=!1,className:r,style:o,children:i,onDragging:l,activationSizes:a,thickness:p,indicator:u=!0,indicatorThickness:g,indicatorLength:c,indicatorBarThickness:M,indicatorBarLength:h,title:B,onPointerDown:W,onKeyDown:se,...w}=e,{direction:H,resizePanels:v,getPanel:_,collapsePanel:E,expandPanel:$,panels:b,layoutOrderKey:q,reportHandleMeasurement:k,containerSize:O,layoutConstraintViolation:V}=ke(),y=s.useMemo(()=>lr(a),[a]),[z,G]=s.useState(!1),[P,Y]=s.useState({start:null,end:null}),te=s.useRef(null),d=s.useRef(null),f=s.useRef({getPanel:_,containerSize:O});f.current={getPanel:_,containerSize:O};const x=s.useRef(""),S=s.useRef(""),C=s.useRef(null),re=s.useRef(null),Be=s.useId(),Ee=s.useRef(n??`resize-handle-${Be}`),ge=n??Ee.current,N=H==="horizontal",He=!!V,Q=t||He,ln=s.useCallback(()=>{const m=te.current,X=Ce(m);if(!(m&&X))return;const F=rn(X),A=F.indexOf(m);let D="",U="";for(let j=A-1;j>=0;j-=1){const I=F[j].dataset.panelId;if(I!==void 0){D=I;break}}for(let j=A+1;j<F.length;j+=1){const I=F[j].dataset.panelId;if(I!==void 0){U=I;break}}D===x.current&&U===S.current||(x.current=D,S.current=U,Y({start:D||null,end:U||null}))},[]);s.useEffect(()=>{ln()},[ln,q]),s.useEffect(()=>()=>{C.current?.()},[]);const an=s.useCallback(m=>{if(Q||C.current||m.button!==0)return;const X=_(x.current),F=_(S.current);if(!(X&&F))return;m.preventDefault(),m.stopPropagation();const A=x.current,D=S.current,U=X.size,j=X.size+F.size,I=m.clientX,ne=m.clientY,ye=N?I:ne,K=Ce(te.current),et=N&&In(K)?-1:1,nt=K?Et(K,H):1,xe=m.pointerId,ve=m.currentTarget;ve.setPointerCapture?.(xe),G(!0),l?.(!0);let pn=0,Ne=null,je=y.length>0;const fn=R=>Math.hypot(R.clientX-I,R.clientY-ne)>=ft,tt=R=>{const ie=((N?R.clientX:R.clientY)-ye)*et/nt,ae=U+ie,fe=j-ae,Se=f.current,We=Se.getPanel(A),qe=Se.getPanel(D);if(!(We&&qe))return;const bn=Math.min(Se.containerSize*Cn,Ln),yn=Math.min(Se.containerSize*ht,mt);if(qe.collapsed){fe>yn&&$(D,"start",fe,"pointer");return}if(We.collapsed){ae>yn&&$(A,"end",ae,"pointer");return}if(qe.collapseFromStart&&fe<=bn){E(D,"start","pointer");return}if(We.collapseFromEnd&&ae<=bn){E(A,"end","pointer");return}v(A,D,ae,"pointer")},Ue=R=>{zn.flushSync(()=>{tt(R)})},rt=()=>{const R=f.current,ie=R.getPanel(A),ae=R.getPanel(D);if(!(ie&&ae))return;const fe=Ye(ie,ae,R.containerSize);if(!fe||fe.upper-fe.lower<=L)return;const Se=ar(y,fe,R.containerSize);Se!==void 0&&zn.flushSync(()=>{ie.collapsed?$(A,"end",void 0,"pointer"):ae.collapsed&&$(D,"start",void 0,"pointer"),v(A,D,Se,"pointer")})},hn=R=>{if(R.pointerId!==xe)return;if(R.preventDefault(),R.stopPropagation(),je){if(!fn(R))return;je=!1}const ie=performance.now();if(ie-pn<pt){Ne=R;return}pn=ie,Ne=null,Ue(R)};let mn=!0;const Ae=()=>{mn&&(mn=!1,C.current=null,G(!1),l?.(!1),document.removeEventListener("pointermove",hn),document.removeEventListener("pointerup",gn),document.removeEventListener("pointercancel",xn),ve.removeEventListener("lostpointercapture",Sn),ve.hasPointerCapture?.(xe)&&ve.releasePointerCapture(xe))},gn=R=>{if(R.pointerId===xe){if(je)fn(R)?Ue(R):rt();else if(Ne){const ie=Ne;Ne=null,Ue(ie)}Ae()}},xn=R=>{R.pointerId===xe&&Ae()},Sn=R=>{R.pointerId===xe&&Ae()};document.addEventListener("pointermove",hn),document.addEventListener("pointerup",gn),document.addEventListener("pointercancel",xn),ve.addEventListener("lostpointercapture",Sn),C.current=Ae},[Q,N,H,_,v,E,$,l,y]),cn=s.useCallback(m=>{if(Q)return;const X=N?"ArrowLeft":"ArrowUp",F=N?"ArrowRight":"ArrowDown";if(m.key!==X&&m.key!==F)return;const A=x.current,D=S.current,U=_(A),j=_(D);if(!(U&&j))return;const I=Ye(U,j,O);if(!I||I.upper-I.lower<=L)return;m.preventDefault(),m.stopPropagation();const ne=m.shiftKey?Pn*5:Pn,ye=N&&In(Ce(te.current))?-1:1,K=(m.key===F?ne:-ne)*ye;if(U.collapsed){K>0&&$(A,"end",void 0,"keyboard");return}if(j.collapsed){K<0&&$(D,"start",void 0,"keyboard");return}if(K<0&&U.collapseFromEnd&&I.position<=I.resizeLower+L){E(A,"end","keyboard");return}if(K>0&&j.collapseFromStart&&I.position>=I.resizeUpper-L){E(D,"start","keyboard");return}v(A,D,U.size+K,"keyboard")},[Q,N,_,v,E,$,O]),le=typeof u=="object"&&u!==null?u:void 0,$e=u===!1||le?.visible===!1,ee=Math.max(1,Ie(p,ot)),Gn=N?st:lt,jn=N?ct:ut,de=Math.min(ee,Math.max(1,Ie(g??le?.thickness,it))),be=Math.max(1,Ie(c??le?.length,Gn)),Re=Math.min(de,Math.max(1,Ie(M??le?.barThickness,at))),we=Math.min(be,Math.max(1,Ie(h??le?.barLength,jn))),pe=s.useMemo(()=>{const m=tn(O),X=I=>{const ne=b[I];return ne?ne.collapsed||ne.size<=m:!1},F=(I,ne)=>{let ye=0;for(let K=I;K>=0&&K<b.length&&X(K);K+=ne)ye+=1;return ye},A=b.findIndex(I=>I.id===P.start),D=b.findIndex(I=>I.id===P.end),U=A>=0?F(A,-1):0,j=D>=0?F(D,1):0;return{groupSize:U+j+1,overlapIndex:U}},[P.start,P.end,b,O]),oe=s.useMemo(()=>He?!0:pe.groupSize<=1?!1:pe.overlapIndex>0&&pe.overlapIndex<pe.groupSize-1,[pe,He]),_e=s.useMemo(()=>{if(pe.groupSize<=1||oe)return 0;const m=or(Math.max(dt,de+4));return(pe.overlapIndex===0?-.5:.5)*m},[pe,oe,de]),Un=s.useMemo(()=>{const m={position:"relative",flex:"0 0 0px",alignSelf:"stretch",order:0,margin:0,overflow:"visible",...N?{width:0,minWidth:0}:{height:0,minHeight:0}};return oe?{...m,...tr}:m},[N,oe]),un=s.useMemo(()=>({"--rp-handle-thickness":`${ee}px`,"--rp-indicator-thickness":`${de}px`,"--rp-indicator-length":`${be}px`,"--rp-indicator-bar-thickness":`${Re}px`,"--rp-indicator-bar-length":`${we}px`}),[ee,de,be,Re,we]),Wn=s.useMemo(()=>({...un,...o,position:"absolute",zIndex:20,touchAction:"none",...N?{insetBlockStart:0,insetInlineStart:`${-ee/2}px`,width:`${ee}px`,height:"100%"}:{insetInlineStart:0,insetBlockStart:`${-ee/2}px`,height:`${ee}px`,width:"100%"}}),[N,ee,un,o]),qn=s.useMemo(()=>{if(oe||$e)return rr;const m={width:`${N?de:be}px`,height:`${N?be:de}px`,flexShrink:0};return _e!==0&&(m.position="relative",N?m.insetInlineStart=`${_e}px`:m.insetBlockStart=`${_e}px`),m},[oe,$e,N,de,be,_e]),Vn=s.useMemo(()=>({width:`${N?Re:we}px`,height:`${N?we:Re}px`,flexShrink:0}),[N,Re,we]),Kn=s.useMemo(()=>Me.twMerge("group absolute z-20 flex select-none items-center justify-center border-none bg-transparent transition-colors duration-150 overflow-visible",N?"cursor-col-resize h-full":"cursor-row-resize w-full",!Q&&"hover:bg-gray-200/70 dark:hover:bg-gray-700/70",!Q&&"active:bg-blue-300/60 dark:active:bg-blue-700/60",z&&"bg-blue-200/80 dark:bg-blue-800/60",Q&&"cursor-not-allowed opacity-50","focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-opacity-50",r),[N,Q,z,r]),Yn=s.useMemo(()=>Me.twMerge("pointer-events-none flex items-center justify-center rounded-full bg-white text-slate-700 ring-1 ring-inset ring-white/80 backdrop-blur-sm transition-colors duration-150 shadow-[0_0_0_1px_rgba(255,255,255,0.85),0_1px_3px_rgba(15,23,42,0.18)]","dark:bg-slate-800/95 dark:text-slate-200 dark:ring-slate-500/60 dark:shadow-[0_0_0_1px_rgba(148,163,184,0.45),0_1px_3px_rgba(2,6,23,0.55)]",z&&"bg-blue-200/80 ring-blue-300 shadow-[0_0_0_1px_rgba(191,219,254,0.65),0_1px_4px_rgba(59,130,246,0.45)] dark:bg-blue-900/70 dark:ring-blue-400 dark:shadow-[0_0_0_1px_rgba(147,197,253,0.5),0_1px_4px_rgba(59,130,246,0.55)]",le?.className),[z,le?.className]),Xn=s.useMemo(()=>Me.twMerge("pointer-events-none rounded-full bg-slate-600 transition-colors duration-150 shadow-[0_0_0_1px_rgba(255,255,255,0.9)] dark:bg-slate-200 dark:shadow-[0_0_0_1px_rgba(15,23,42,0.55)]",z&&"bg-blue-500 dark:bg-blue-300",!Q&&"group-hover:bg-slate-700 dark:group-hover:bg-slate-100",le?.barClassName),[z,Q,le?.barClassName]);s.useEffect(()=>{if(ge===Ee.current)return;const m=Ee.current;Ee.current=ge,re.current=null,k(m,null)},[k,ge]),s.useEffect(()=>{const m={id:ge,thickness:oe?0:ee,direction:H,visible:!oe&&ee>gt,startPanelId:P.start,endPanelId:P.end};re.current=m,k(ge,m)},[ge,ee,oe,H,P.start,P.end,k]),s.useEffect(()=>()=>{k(Ee.current,null)},[k]);const Zn=s.useCallback(m=>{W?.(m),m.defaultPrevented||an(m)},[W,an]),Jn=s.useCallback(m=>{se?.(m),m.defaultPrevented||cn(m)},[se,cn]),Qn=y.length>0?"click to cycle through preset sizes, ":"",dn=`Resize ${N?"columns":"rows"} - Drag or use arrow keys to resize, ${Qn}drag to the edge to collapse/expand panels`,Ge=s.useMemo(()=>{const m=P.start===null?void 0:_(P.start),X=P.end===null?void 0:_(P.end);if(!(m&&X)||O<=0)return;const F=Ye(m,X,O);if(!F)return;const A=D=>Math.round(D/O*100);return{now:A(F.position),min:A(F.lower),max:A(F.upper)}},[P.start,P.end,_,O]);return T.jsx("div",{ref:te,style:Un,"data-resize-handle-anchor":"",children:T.jsx("button",{...w,type:"button",ref:d,className:Kn,style:Wn,onPointerDown:Zn,onKeyDown:Jn,disabled:Q,role:"separator","aria-orientation":N?"vertical":"horizontal","aria-valuenow":Ge?.now,"aria-valuemin":Ge?.min,"aria-valuemax":Ge?.max,"aria-disabled":Q||void 0,"aria-hidden":oe||void 0,"aria-label":w["aria-label"]??dn,"data-resize-handle-id":ge,title:B??dn,children:i||!$e&&T.jsx("div",{className:Yn,style:qn,"data-resize-handle-indicator":"","aria-hidden":"true",children:T.jsx("span",{className:Xn,style:Vn,"data-resize-handle-indicator-bar":"","aria-hidden":"true"})})})})}),sn=e=>typeof CSS<"u"&&typeof CSS.escape=="function"?CSS.escape(e):e.replace(/["\\]/g,"\\$&"),ur=e=>typeof document>"u"?null:document.querySelector(`[data-panel-id="${sn(e)}"]`),dr=e=>typeof document>"u"?null:document.querySelector(`[data-panel-group-id="${sn(e)}"]`),pr=e=>typeof document>"u"?null:document.querySelector(`[data-resize-handle-id="${sn(e)}"]`);exports.PANEL_SNAP_THRESHOLD=Mn;exports.Panel=Kt;exports.PanelGroup=nr;exports.PanelGroupContext=on;exports.PanelResizeHandle=cr;exports.allocatePanelSizes=On;exports.calculateSnapThreshold=tn;exports.clamp=ze;exports.findLayoutInvariantBreach=Fn;exports.findOwningGroup=Ce;exports.getConstraintInPixels=De;exports.getContainerSize=Pe;exports.getGroupLayoutElements=rn;exports.getPanelElement=ur;exports.getPanelGroupElement=dr;exports.getPanelPreferenceInPixels=Bn;exports.getResizeHandleElement=pr;exports.initialPanelGroupLayoutState=kn;exports.isPixelPanel=J;exports.loadLayout=An;exports.normalizeSizeConfig=_n;exports.panelReducer=Hn;exports.percentageToPixels=bt;exports.resolvePanelBounds=me;exports.saveLayout=Ze;exports.toRoundedPercentage=nn;exports.usePanelControls=$t;exports.usePanelGroup=ke;exports.useResizablePanels=$n;