@aiquants/resize-panels 2.1.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-BplkuFjn.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-DlQDkOjq.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;
@@ -10,6 +11,7 @@ export declare const PANEL_INDICATOR_BAR_LENGTH_HORIZONTAL = 32;
10
11
  export declare const PANEL_INDICATOR_BAR_LENGTH_VERTICAL = 64;
11
12
  export declare const PANEL_VISIBLE_INDICATOR_SPACING = 8;
12
13
  export declare const PANEL_HANDLE_DRAG_THROTTLE_MS = 8;
14
+ export declare const PANEL_HANDLE_DRAG_THRESHOLD = 4;
13
15
  export declare const PANEL_KEYBOARD_RESIZE_STEP = 10;
14
16
  export declare const PANEL_COLLAPSE_THRESHOLD_RATIO = 0.05;
15
17
  export declare const PANEL_COLLAPSE_THRESHOLD_MAX = 10;
@@ -127,6 +129,7 @@ export interface PanelGroupProps extends Omit<HTMLAttributes<HTMLDivElement>, "i
127
129
  style?: CSSProperties;
128
130
  children?: ReactNode;
129
131
  showDebugInfo?: boolean;
132
+ labels?: PanelGroupLabels;
130
133
  onLayout?: (panelSizes: number[], change: PanelLayoutChange) => void;
131
134
  autoSaveId?: string;
132
135
  }
@@ -162,6 +165,7 @@ export interface PanelResizeHandleProps extends Omit<HTMLAttributes<HTMLButtonEl
162
165
  id?: string;
163
166
  disabled?: boolean;
164
167
  onDragging?: (isDragging: boolean) => void;
168
+ activationSizes?: readonly FlexibleSize[];
165
169
  className?: string;
166
170
  style?: CSSProperties;
167
171
  children?: ReactNode;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aiquants/resize-panels",
3
- "version": "2.1.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",
@@ -68,7 +68,9 @@
68
68
  "access": "public"
69
69
  },
70
70
  "scripts": {
71
- "build": "pnpm run clean && vite build && pnpm run build:css && node ../../.config/scripts/strip-dts-comments.mjs dist",
71
+ "build": "pnpm -w run workspace:build \"$PNPM_SCRIPT_SRC_DIR\"",
72
+ "prebuild:self": "pnpm -w run workspace:sync \"$PNPM_SCRIPT_SRC_DIR\"",
73
+ "build:self": "pnpm run clean && vite build && pnpm run build:css && node ../../.config/scripts/strip-dts-comments.mjs dist",
72
74
  "build:css": "tailwindcss -i src/styles/components.entry.css -o dist/styles/resize-panels.css --minify && tailwindcss -i src/styles/standalone.entry.css -o dist/styles/resize-panels.standalone.css --minify",
73
75
  "dev": "vite build --watch",
74
76
  "watch": "vite build --watch",
@@ -1,2 +0,0 @@
1
- "use strict";const s=require("react"),L=require("react/jsx-runtime"),we=require("tailwind-merge"),Kn=require("react-dom"),zn=12,C=1e-6,Yn=8,Xn=6,Zn=48,Jn=80,Qn=2,et=32,nt=64,tt=8,rt=8,mn=10,Rn=.05,wn=10,ot=.05,it=20,st=.05,lt=(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},at=6,Ye=(e,n)=>n<=0?0:lt(e/n*100,at),ct=(e,n)=>n<=0?0:e/100*n,In=(e,n="percentage")=>{if(e!==void 0)return typeof e=="number"?{value:e,unit:n}:e},je=(e,n,t)=>e===void 0?n:typeof e=="number"?e/100*t:e.unit==="pixels"?e.value:e.value/100*t,Ne=(e,n,t)=>Math.min(Math.max(e,n),t),Xe=e=>!Number.isFinite(e)||e<=0?0:Math.max(0,Math.min(zn,wn,e*Rn)),pe=e=>{if(!e)return 0;const n=Number.parseFloat(e);return Number.isFinite(n)?n:0},Se=(e,n,t)=>{const r=n==="horizontal",o=typeof window<"u"?window.getComputedStyle(e):null,i=o?r?pe(o.paddingLeft)+pe(o.paddingRight):pe(o.paddingTop)+pe(o.paddingBottom):0,l=o?r?pe(o.borderLeftWidth)+pe(o.borderRightWidth):pe(o.borderTopWidth)+pe(o.borderBottomWidth):0,a=t?.contentBoxSize?.[0],p=a?r?a.inlineSize:a.blockSize:void 0,d=r?e.clientWidth:e.clientHeight,g=d>0?Math.max(0,d-i):Math.max(0,(r?e.offsetWidth:e.offsetHeight)-i-l),u=p??g;return{content:Math.max(0,u),border:Math.max(0,u+i+l)}},ut="[data-panel-group-direction]",Ue="[data-panel-id], [data-resize-handle-anchor]",dt="[data-panel-id]",Ie=e=>e?.closest(ut)??null,Ze=e=>Array.from(e.querySelectorAll(Ue)).filter(n=>{if(Ie(n)!==e)return!1;const t=n.parentElement?.closest(dt);return!(t&&e.contains(t))}),pt=e=>{const n=t=>{for(const r of Array.from(t))if(r instanceof Element&&(r.matches(Ue)||r.querySelector(Ue)!==null))return!0;return!1};return e.some(t=>n(t.addedNodes)||n(t.removedNodes))},ft=(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},We=(e,n)=>{try{localStorage.setItem(`panel-layout-${e}`,JSON.stringify(n))}catch(t){console.warn("Failed to save panel layout:",t)}},Nn=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}},qe=0,Mn=1,_e=e=>Number.isFinite(e)&&e>0?e:0,Z=e=>e.sizeUnit==="pixels",fe=(e,n)=>{const t=Math.max(0,_e(je(e.minSize,0,n))),r=Math.max(t,_e(je(e.maxSize,n,n)));return{min:t,max:r}},ht=(e,n)=>{const t=e.map(o=>o.min),r=e.map(()=>!1);for(;;){let o=0,i=0,l=0;for(let u=0;u<e.length;u+=1){if(r[u]){i+=t[u];continue}l+=1,o+=e[u].weight}if(l===0)return t;const a=n-i;if(o<=0){for(let u=0;u<e.length;u+=1)r[u]||(t[u]=e[u].min);return t}const p=Math.max(0,a/o);let d=0;for(let u=0;u<e.length;u+=1){if(r[u])continue;const I=p*e[u].weight,h=Ne(I,e[u].min,e[u].max);t[u]=h,d+=h-I}let g=!1;for(let u=0;u<e.length;u+=1){if(r[u])continue;const I=p*e[u].weight;d>C&&t[u]>I+C?(r[u]=!0,t[u]=e[u].min,g=!0):d<-C&&t[u]<I-C&&(r[u]=!0,t[u]=e[u].max,g=!0)}if(!g)return t}},mt=(e,n,t)=>{const{min:r,max:o}=fe(e,t);if(Z(e))return{index:n,weight:0,target:Ne(_e(e.preferredPixelSize),r,o),priority:e.pixelAdjustPriority??0,tier:qe,min:r,max:o};const i=_e(e.preferredPercentageSize),l=e.flexAdjustPriority!==void 0;return{index:n,weight:i,target:l?Ne(i/100*t,r,o):null,priority:e.flexAdjustPriority??0,tier:Mn,min:r,max:o}},gn=(e,n,t,r)=>{let o=r;for(const i of e){if(o<=C)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},Ve=(e,n,t)=>{if(e.length===0||t<=C)return t;const r=e.map(l=>({...l,min:n[l.index]})),o=ht(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},gt=(e,n,t)=>Ve(e.map(r=>({...r,weight:1})),n,t),xt=(e,n)=>e.tier!==n.tier?e.tier-n.tier:e.priority!==n.priority?n.priority-e.priority:e.index-n.index,Cn=(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 F=e[h];F.collapsed||r.push(mt(F,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=St(o,i,n);let a=n-o;if(a<=C)return{sizes:t,violation:l};const p=r.filter(h=>h.target!==null).sort(xt),d=r.filter(h=>h.target===null&&h.weight>0),g=r.filter(h=>h.tier!==qe&&h.weight<=0),u=p.filter(h=>h.tier===Mn),I=p.filter(h=>h.tier===qe);return a=gn(p,t,h=>h.target??h.min,a),a=Ve(d,t,a),a=Ve(u,t,a),a=gn(I,t,h=>h.max,a),a=gt(g,t,a),{sizes:t,violation:l}},St=(e,n,t)=>e-t>C?{reason:"minimum-exceeded",totalMinimumSize:e,totalMaximumSize:n,availableContainerSize:t}:t-n>C?{reason:"maximum-insufficient",totalMinimumSize:e,totalMaximumSize:n,availableContainerSize:t}:null,Je=s.createContext(null),Ae=()=>{const e=s.useContext(Je);if(!e)throw new Error("usePanelGroup must be used within a PanelGroup");return e};var De=(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))(De||{});const X=class X{constructor(n=2,t="[resize-panels]",r=console){this.level=n,this.prefix=t,this.impl=r,X.instances.add(this)}static setLevel(n){for(const t of X.instances)t.setLevel(n)}setLevel(n){this.level=n}static setImplementation(n){for(const t of X.instances)t.setImplementation(n)}setImplementation(n){this.impl=n}static setPrefix(n){for(const t of X.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){X.instance.debug(n,...t)}debug(n,...t){this.level<=0&&this.impl.debug(...this.formatMessage(n),...t)}static info(n,...t){X.instance.info(n,...t)}info(n,...t){this.level<=1&&this.impl.info(...this.formatMessage(n),...t)}static warn(n,...t){X.instance.warn(n,...t)}warn(n,...t){this.level<=2&&this.impl.warn(...this.formatMessage(n),...t)}static error(n,...t){X.instance.error(n,...t)}error(n,...t){this.level<=3&&this.impl.error(...this.formatMessage(n),...t)}};X.instances=new Set,X.instance=new X(2,"[resize-panels]");let Me=X;const vn=new Me(De.INFO,"[resize-panels]"),Ln={containerSize:0,panels:[],violation:null},xn=(e,n)=>e===null||n===null?e===n:e.reason===n.reason&&Math.abs(e.totalMinimumSize-n.totalMinimumSize)<=C&&Math.abs(e.totalMaximumSize-n.totalMaximumSize)<=C&&Math.abs(e.availableContainerSize-n.availableContainerSize)<=C,le=(e,n)=>{const{sizes:t,violation:r}=Cn(e,n);let o=!1;const i=e.map((a,p)=>{const d=a.collapsed?0:t[p];return Math.abs(a.size-d)<=C?a:(o=!0,{...a,size:d})}),l={containerSize:n,panels:o?i:e,violation:r};return bt(l),l},_n=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=C*Math.max(1,e.containerSize);return!Number.isFinite(n)||Math.abs(n-e.containerSize)>r?{allocatedTotal:n,containerSize:e.containerSize}:null},bt=e=>{const n=_n(e);n&&vn.error("Allocated sizes do not fill the container.",{...n,panels:e.panels.map(t=>({id:t.id,size:t.size,collapsed:t.collapsed}))})},ae=(e,n)=>e.panels===n.panels&&e.containerSize===n.containerSize&&xn(e.violation,n.violation)?e:{containerSize:n.containerSize,panels:n.panels,violation:xn(e.violation,n.violation)?e.violation:n.violation},yt=(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}},Ge=e=>e.collapseFromStart?"start":e.collapseFromEnd?"end":null,Pt=(e,n)=>{if(n<=0)return e;const t=Xe(n);return e.map(r=>{if(r.collapsed)return r;const o=Z(r)?r.size:r.size/n*100,i=Z(r)?r.preferredPixelSize:r.preferredPercentageSize,l=r.size>t?o:r.preferenceBeforeCollapse;return i===o&&l===r.preferenceBeforeCollapse?r:Z(r)?{...r,preferredPixelSize:o,preferenceBeforeCollapse:l}:{...r,preferredPercentageSize:o,preferenceBeforeCollapse:l}})},Ke=(e,n,t)=>{if(Z(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}},An=(e,n)=>{const t=e.collapsed?e.preferenceBeforeCollapse:Z(e)?e.preferredPixelSize:e.preferredPercentageSize;return Z(e)?t:t/100*n},Et=(e,n,t,r)=>{const o=Math.max(0,Math.min(t,r)),i=e.filter(d=>d.id!==n&&!d.collapsed&&!Z(d)),l=e.reduce((d,g)=>g.id!==n&&!g.collapsed&&Z(g)?d+g.size:d,0),a=i.reduce((d,g)=>d+g.size,0),p=Math.max(0,r-o-l);return e.map(d=>{if(d.id===n)return Ke(d,o,r);if(d.collapsed||Z(d)||i.length===0)return d;const g=a>0?d.size/a*p:p/i.length;return Ke(d,g,r)})},Dn=(e,n)=>{switch(n.type){case"SET_CONTAINER_SIZE":return!Number.isFinite(n.containerSize)||n.containerSize<0||n.containerSize===e.containerSize?e:ae(e,le(e.panels,n.containerSize));case"REGISTER_PANEL":{const t=e.panels.findIndex(u=>u.id===n.panel.id);if(t===-1){const u=[...e.panels,yt(n.panel,Ge(n.panel))];return ae(e,le(u,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,d={...r,...n.panel,collapsed:p,collapsedByDirection:p?l?r.collapsedByDirection:Ge(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]=d,ae(e,le(g,e.containerSize))}case"UNREGISTER_PANEL":{const t=e.panels.filter(r=>r.id!==n.id);return t.length===e.panels.length?e:ae(e,le(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:ae(e,le(r,e.containerSize))}case"RESIZE_PANELS":{const t=e.panels.findIndex(F=>F.id===n.startId),r=e.panels.findIndex(F=>F.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=fe(o,e.containerSize),p=fe(i,e.containerSize),d=Math.max(a.min,l-p.max),g=Math.min(a.max,l-p.min);if(d-g>C)return e;const u=Ne(n.startSize,d,Math.max(d,g)),I=l-u;if(Math.abs(u-o.size)<=C)return e;const h=[...e.panels];return h[t]={...o,size:u},h[r]={...i,size:I},ae(e,le(Pt(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},ae(e,le(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:Z(r)?r.preferenceBeforeCollapse:r.preferredPixelSize,preferredPercentageSize:Z(r)?r.preferredPercentageSize:r.preferenceBeforeCollapse},l=[...e.panels];l[t]=i;const a=n.targetSize===void 0?l:Et(l,n.id,n.targetSize,e.containerSize);return ae(e,le(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=Ke(o,i.size,e.containerSize),a=o.collapseFromStart||o.collapseFromEnd;return i.collapsed&&a?{...l,collapsed:!0,collapsedByDirection:o.collapsedByDirection??Ge(o)}:l.collapsed?{...l,collapsed:!1,collapsedByDirection:null}:l});return vn.debug("restore layout",{containerSize:e.containerSize,entries:n.entries}),ae(e,le(r,e.containerSize))}default:return e}},zt={layout:Ln,source:null},Rt=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}},wt=(e,n)=>{const t=Dn(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?Rt(n):e.source}},It=new Me(De.INFO,"[resize-panels]"),Nt={pointer:!0,keyboard:!0,api:!0},Mt=e=>typeof e=="string"&&Object.hasOwn(Nt,e),$e=e=>{if(!Mt(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},Ct=200,vt="\0handle",On=({direction:e,style:n,onLayout:t,autoSaveId:r,showDebugInfo:o=!1})=>{const[{layout:i,source:l},a]=s.useReducer(wt,zt),[p,d]=s.useState({}),[g,u]=s.useState({}),I=s.useRef(null),[h,F]=s.useState(""),W=s.useRef({}),oe=s.useRef(t);oe.current=t,s.useLayoutEffect(()=>{const c=I.current;if(!c||typeof ResizeObserver>"u")return;let f=Number.NaN;const x=v=>{v!==f&&(f=v,a({type:"SET_CONTAINER_SIZE",containerSize:v}))},P=new ResizeObserver(v=>{x(Se(c,e,v[0]).content)});return P.observe(c),x(Se(c,e).content),()=>{P.disconnect(),a({type:"SET_CONTAINER_SIZE",containerSize:0})}},[e]);const y=i.panels,$=s.useRef(y);$.current=y;const b=s.useCallback(()=>{const c=I.current,f=$.current;if(!c)return;const x=Ze(c);if(F(v=>{const K=x.map(ie=>ie.dataset.panelId??vt).join("\0");return v===K?v:K}),f.length===0)return;const P=[];for(const v of x){const K=v.dataset.panelId;K!==void 0&&P.push(K)}if(new Set(P).size!==P.length){It.error("Duplicate panel id in one group.",{ids:P});return}P.length!==f.length||P.every((v,K)=>v===f[K].id)||a({type:"REORDER_PANELS",ids:P})},[]);s.useLayoutEffect(()=>{const c=I.current;if(!c||(b(),typeof MutationObserver>"u"))return;const f=new MutationObserver(x=>{pt(x)&&b()});return f.observe(c,{childList:!0,subtree:!0}),()=>{f.disconnect()}},[b]),s.useLayoutEffect(()=>{b()},[b,y]);const B=s.useMemo(()=>y.map(c=>c.size),[y]),E=i.containerSize>0;s.useLayoutEffect(()=>{!E||B.length===0||l===null||oe.current?.(B,{source:l})},[B,E,l]);const q=s.useRef(null);s.useEffect(()=>{if(!r||q.current===r||!E||y.length===0)return;q.current=r;const c=Nn(r);c&&a({type:"RESTORE_LAYOUT",entries:c})},[r,E,y.length]);const R=s.useRef(null);s.useEffect(()=>{if(!(r&&q.current===r&&E)||y.length===0)return;const c=y.map(x=>({id:x.id,size:An(x,i.containerSize),collapsed:x.collapsed}));R.current={id:r,entries:c};const f=setTimeout(()=>{R.current=null,We(r,c)},Ct);return()=>{clearTimeout(f)}},[r,y,i.containerSize,E]),s.useEffect(()=>()=>{const c=R.current;c&&(R.current=null,We(c.id,c.entries))},[]);const _=s.useCallback(c=>{const f=JSON.stringify(c);W.current[c.id]!==f&&(W.current[c.id]=f,a({type:"REGISTER_PANEL",panel:c}))},[]),M=s.useCallback(c=>{delete W.current[c],a({type:"UNREGISTER_PANEL",id:c}),d(f=>{if(!(c in f))return f;const x={...f};return delete x[c],x})},[]),J=s.useCallback((c,f,x,P="api")=>{a({type:"RESIZE_PANELS",startId:c,endId:f,startSize:x,source:$e(P)})},[]),A=s.useCallback((c,f,x="api")=>{a({type:"COLLAPSE_PANEL",id:c,from:f,source:$e(x)})},[]),z=s.useCallback((c,f,x,P="api")=>{a({type:"EXPAND_PANEL",id:c,from:f,targetSize:x,source:$e(P)})},[]),S=s.useCallback(c=>y.find(f=>f.id===c),[y]),j=s.useCallback((c,f)=>{d(x=>{if(f===null){if(!(c in x))return x;const v={...x};return delete v[c],v}const P=x[c];return P&&P.pixelSize===f.pixelSize&&P.percentageSize===f.percentageSize?x:{...x,[c]:f}})},[]),T=s.useCallback((c,f)=>{u(x=>{if(f===null){if(!(c in x))return x;const v={...x};return delete v[c],v}const P=x[c];return P&&P.thickness===f.thickness&&P.visible===f.visible&&P.direction===f.direction&&P.startPanelId===f.startPanelId&&P.endPanelId===f.endPanelId?x:{...x,[c]:f}})},[]),V=s.useMemo(()=>({direction:e,panels:y,containerSize:i.containerSize,layoutOrderKey:h,showDebugInfo:o,registerPanel:_,unregisterPanel:M,resizePanels:J,collapsePanel:A,expandPanel:z,getPanel:S,reportPanelMeasurement:j,panelMeasurements:p,reportHandleMeasurement:T,handleMeasurements:g,layoutConstraintViolation:i.violation}),[e,y,i.containerSize,h,i.violation,o,_,M,J,A,z,S,j,p,T,g]),ce=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:I,contextValue:V,groupStyle:ce}},Lt=e=>{const{getPanel:n,collapsePanel:t,expandPanel:r}=Ae(),o=n(e),i=s.useCallback(p=>{t(e,p,"api")},[t,e]),l=s.useCallback((p,d)=>{r(e,p,d,"api")},[r,e]),a=s.useCallback((p,d)=>{o?.collapsed?l(p,d):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])},_t=({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 / ${Ye(e.size,n).toFixed(3)}%`,i=r?`${e.preferredPixelSize.toFixed(3)}px`:`${e.preferredPercentageSize.toFixed(3)}%`,l=fe(e,n),a=`${l.min.toFixed(1)} - ${l.max.toFixed(1)}px`,p=Number.isFinite(n)?`${n.toFixed(3)}px`:"-",d=r?"Fixed":"Flexible",g=[d,`${t}: ${p}`,`size: ${o}`,`preference: ${i}`,`bounds: ${a}`].join(`
2
- `);return{sizeDisplay:o,preferenceDisplay:i,boundsDisplay:a,containerDisplay:p,headlineLabel:d,titleText:g}},At=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:d}=s.useMemo(()=>_t({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 L.jsxs("div",{style:g,title:d,"data-panel-debug-info":"",children:[L.jsxs("div",{children:[p," · ",r,": ",a]}),L.jsxs("div",{children:["size: ",o]}),L.jsxs("div",{children:["preference: ",i]}),L.jsxs("div",{children:["bounds: ",l]})]})}),Sn=new Me(De.INFO,"[resize-panels]"),Dt={both:{collapseFromStart:!0,collapseFromEnd:!0},start:{collapseFromStart:!0,collapseFromEnd:!1},end:{collapseFromStart:!1,collapseFromEnd:!0}},Ot=e=>{if(!e)return{collapseFromStart:!1,collapseFromEnd:!1};const n=Dt[e.from];if(!n)throw new Error("Invalid collapsible configuration: unsupported 'from' value");return n},Tt=e=>{const n=Math.max(0,e.value);return e.unit==="pixels"?{sizeUnit:"pixels",preferredPixelSize:n,preferredPercentageSize:0}:{sizeUnit:"percentage",preferredPercentageSize:n,preferredPixelSize:0}},kt=({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=fe(n,r),l=e<i.max-C,a=l&&e>i.min+C;return{flexBasis:`${e}px`,flexGrow:l?n.preferredPercentageSize:0,flexShrink:a?1:0}},Ft=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:d,flexAdjustPriority:g,contentOverflow:u="auto",...I})=>{const{direction:h,registerPanel:F,unregisterPanel:W,getPanel:oe,containerSize:y,showDebugInfo:$,reportPanelMeasurement:b}=Ae(),B=s.useRef(null),E=s.useId(),R=s.useRef(e||`panel-${E}`).current;s.useEffect(()=>{e&&e!==R&&Sn.warn("Panel id prop change after mount is ignored.",{currentId:R,attemptedId:e})},[e,R]);const _=s.useMemo(()=>Ot(a),[a]),M=_.collapseFromStart||_.collapseFromEnd;s.useEffect(()=>{p&&!M&&Sn.warn("Panel defaultCollapsed is ignored because collapsible configuration is not provided.",{panelId:R})},[p,M,R]);const J=s.useMemo(()=>{const c=In(n)??{value:50,unit:"percentage"};return{id:R,...Tt(c),minSize:t,maxSize:r,..._,collapsed:M&&p,pixelAdjustPriority:d,flexAdjustPriority:g}},[R,n,t,r,_,M,p,d,g]);s.useLayoutEffect(()=>{F(J)},[F,J]),s.useLayoutEffect(()=>()=>{W(R)},[W,R]);const A=oe(R),z=A?.size??0,S=A?.collapsed??!1,j=s.useRef(y);j.current=y;const T=s.useCallback(()=>{const c=B.current;if(!c)return;const f=Se(c,h).border;b(R,{pixelSize:f,percentageSize:Ye(f,j.current)})},[h,R,b]);s.useEffect(()=>{if(!$){b(R,null);return}const c=B.current;if(!c||typeof ResizeObserver>"u"){T();return}const f=new ResizeObserver(T);return f.observe(c),T(),()=>{f.disconnect(),b(R,null)}},[$,T,R,b]);const V=s.useMemo(()=>{const c={overflow:"hidden",isolation:"isolate"},f=S?{...h==="horizontal"?{width:"0px"}:{height:"0px"},pointerEvents:"none",visibility:"hidden",display:"none"}:{};return{...c,...i,...kt({size:z,panel:A,registration:J,containerSize:y,isCollapsed:S}),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}},[z,h,S,A,J,y,i]),ce=s.useMemo(()=>({flex:"1 1 auto",position:"relative",overflow:u,display:"flex",flexDirection:"column",minWidth:"0px",minHeight:"0px"}),[u]);return L.jsxs("div",{...I,ref:B,className:we.twMerge("panel",o),style:V,"data-panel-id":R,"data-panel-size":z,"data-panel-size-unit":A?.sizeUnit??"percentage","data-panel-collapsible":M,"data-panel-collapse-start":_.collapseFromStart,"data-panel-collapse-end":_.collapseFromEnd,"data-panel-collapsed":S,"aria-hidden":S,children:[L.jsx("div",{style:ce,children:l}),$&&L.jsx(At,{panel:A,containerAxisSize:y,direction:h})]})}),Bt=s.lazy(()=>Promise.resolve().then(()=>require("./GlobalDebugOverlay-DA1__b7e.cjs")).then(e=>({default:e.GlobalDebugOverlayGate}))),Ht=[],Gt={};let bn=0;const $t=()=>(bn+=1,`panel-group-${bn}`),jt=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}},Ut=(e,n)=>e.map(t=>{const r=n[t.id];return r?{...t,measuredPixelSize:r.pixelSize,measuredPercentageSize:r.percentageSize}:t}),yn=(e,n,t)=>{const r=Se(e,"horizontal"),o=Se(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}},Wt=e=>{const{id:n,className:t,style:r,children:o,direction:i,onLayout:l,autoSaveId:a,showDebugInfo:p,...d}=e,{groupRef:g,contextValue:u,groupStyle:I}=On(e),[h,F]=s.useState({width:0,height:0}),W=u.layoutConstraintViolation,oe=!!W,y=s.useMemo(()=>{if(!W)return null;const{summary:z,detail:S}=jt(W);return L.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:[L.jsx("span",{children:z}),L.jsx("span",{className:"text-slate-500 text-xs dark:text-slate-400",children:S})]})},[W]),$=s.useRef(null);$.current===null&&($.current=n??$t());const b=$.current,B=n??b,E=u.showDebugInfo&&u.panels.length>0,q=E?u.panels:Ht,R=E?u.panelMeasurements:Gt,_=s.useMemo(()=>{if(!E)return[];const z=Object.values(u.handleMeasurements);return z.length<=1?z:z.slice().sort((S,j)=>S.id.localeCompare(j.id))},[u.handleMeasurements,E]),M=h.width,J=h.height;s.useLayoutEffect(()=>{if(!E){F({width:0,height:0});return}if(typeof window>"u"||typeof ResizeObserver>"u")return;const z=g.current;if(!z)return;const S=T=>{F(V=>V.width===T.width&&V.height===T.height?V:T)},j=new ResizeObserver(T=>{for(const V of T){if(V.target!==z)continue;const ce=yn(z,V.contentRect.width,V.contentRect.height);S(ce)}});return j.observe(z),S(yn(z)),()=>{j.disconnect()}},[g,E]);const A=s.useMemo(()=>Ut(q,R),[q,R]);return s.useEffect(()=>{if(!E)return;let z=!1,S=null;return Promise.resolve().then(()=>require("./debugOverlayStore-DY09saU8.cjs")).then(j=>{z||(S=j,j.enableDebugOverlayGroup(b))}),()=>{z=!0,S&&(S.disableDebugOverlayGroup(b),S.removeDebugOverlayGroup(b))}},[E,b]),s.useEffect(()=>{if(!E)return;let z=!1;return Promise.resolve().then(()=>require("./debugOverlayStore-DY09saU8.cjs")).then(S=>{z||S.updateDebugOverlayGroup(b,{displayName:B,direction:i,containerSize:{width:M,height:J},panels:A,handles:_})}),()=>{z=!0}},[E,b,B,i,M,J,A,_]),L.jsxs(Je.Provider,{value:u,children:[L.jsxs("div",{...d,ref:g,className:we.twMerge("panel-group",i==="horizontal"?"flex-row":"flex-col",t),style:I,"data-panel-group-id":n,"data-panel-group-direction":i,children:[o,oe&&y?L.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:y}):null]}),E&&L.jsx(s.Suspense,{fallback:null,children:L.jsx(Bt,{groupId:b})})]})},qt={display:"none",pointerEvents:"none",visibility:"hidden"},Vt={display:"none"},Re=(e,n)=>typeof e!="number"||!Number.isFinite(e)||e<=0?n:e,Kt=e=>{const n=Math.round(e);return n%2===0?n:n+1},Pn=e=>!e||typeof window>"u"?!1:window.getComputedStyle(e).direction==="rtl",En=(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=fe(e,t),a=fe(n,t),p=Math.max(l.min,i-a.max),d=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,d):0,resizeLower:p,resizeUpper:d};if(n.collapsed){const I=n.collapsedByDirection==="start";return{position:i,lower:I?Math.min(i,p):i,upper:i,resizeLower:p,resizeUpper:d}}const g=Math.min(r,e.collapseFromEnd?0:p),u=Math.max(r,g,n.collapseFromStart?i:d);return{position:r,lower:g,upper:u,resizeLower:p,resizeUpper:d}},Yt=s.memo(e=>{const{id:n,disabled:t=!1,className:r,style:o,children:i,onDragging:l,thickness:a,indicator:p=!0,indicatorThickness:d,indicatorLength:g,indicatorBarThickness:u,indicatorBarLength:I,title:h,onPointerDown:F,onKeyDown:W,...oe}=e,{direction:y,resizePanels:$,getPanel:b,collapsePanel:B,expandPanel:E,panels:q,layoutOrderKey:R,reportHandleMeasurement:_,containerSize:M,layoutConstraintViolation:J}=Ae(),[A,z]=s.useState(!1),[S,j]=s.useState({start:null,end:null}),T=s.useRef(null),V=s.useRef(null),ce=s.useRef({getPanel:b,containerSize:M});ce.current={getPanel:b,containerSize:M};const c=s.useRef(""),f=s.useRef(""),x=s.useRef(null),P=s.useRef(null),v=s.useId(),K=s.useRef(n??`resize-handle-${v}`),ie=n??K.current,w=y==="horizontal",Oe=!!J,Q=t||Oe,en=s.useCallback(()=>{const m=T.current,Y=Ie(m);if(!(m&&Y))return;const k=Ze(Y),D=k.indexOf(m);let O="",U="";for(let H=D-1;H>=0;H-=1){const N=k[H].dataset.panelId;if(N!==void 0){O=N;break}}for(let H=D+1;H<k.length;H+=1){const N=k[H].dataset.panelId;if(N!==void 0){U=N;break}}O===c.current&&U===f.current||(c.current=O,f.current=U,j({start:O||null,end:U||null}))},[]);s.useEffect(()=>{en()},[en,R]),s.useEffect(()=>()=>{x.current?.()},[]);const nn=s.useCallback(m=>{if(Q||x.current||m.button!==0)return;const Y=b(c.current),k=b(f.current);if(!(Y&&k))return;m.preventDefault(),m.stopPropagation();const D=c.current,O=f.current,U=Y.size,H=Y.size+k.size,N=w?m.clientX:m.clientY,ee=Ie(T.current),ge=w&&Pn(ee)?-1:1,ne=ee?ft(ee,y):1,he=m.pointerId,Pe=m.currentTarget;Pe.setPointerCapture?.(he),z(!0),l?.(!0);let sn=0,Ee=null;const Vn=G=>{const xe=((w?G.clientX:G.clientY)-N)*ge/ne,ze=U+xe,Fe=H-ze,Le=ce.current,Be=Le.getPanel(D),He=Le.getPanel(O);if(!(Be&&He))return;const fn=Math.min(Le.containerSize*Rn,wn),hn=Math.min(Le.containerSize*ot,it);if(He.collapsed){Fe>hn&&E(O,"start",Fe,"pointer");return}if(Be.collapsed){ze>hn&&E(D,"end",ze,"pointer");return}if(He.collapseFromStart&&Fe<=fn){B(O,"start","pointer");return}if(Be.collapseFromEnd&&ze<=fn){B(D,"end","pointer");return}$(D,O,ze,"pointer")},ln=G=>{Kn.flushSync(()=>{Vn(G)})},an=G=>{if(G.pointerId!==he)return;G.preventDefault(),G.stopPropagation();const xe=performance.now();if(xe-sn<rt){Ee=G;return}sn=xe,Ee=null,ln(G)};let cn=!0;const ve=()=>{cn&&(cn=!1,x.current=null,z(!1),l?.(!1),document.removeEventListener("pointermove",an),document.removeEventListener("pointerup",un),document.removeEventListener("pointercancel",dn),Pe.removeEventListener("lostpointercapture",pn),Pe.hasPointerCapture?.(he)&&Pe.releasePointerCapture(he))},un=G=>{if(G.pointerId===he){if(Ee){const xe=Ee;Ee=null,ln(xe)}ve()}},dn=G=>{G.pointerId===he&&ve()},pn=G=>{G.pointerId===he&&ve()};document.addEventListener("pointermove",an),document.addEventListener("pointerup",un),document.addEventListener("pointercancel",dn),Pe.addEventListener("lostpointercapture",pn),x.current=ve},[Q,w,y,b,$,B,E,l]),tn=s.useCallback(m=>{if(Q)return;const Y=w?"ArrowLeft":"ArrowUp",k=w?"ArrowRight":"ArrowDown";if(m.key!==Y&&m.key!==k)return;const D=c.current,O=f.current,U=b(D),H=b(O);if(!(U&&H))return;const N=En(U,H,M);if(!N||N.upper-N.lower<=C)return;m.preventDefault(),m.stopPropagation();const ee=m.shiftKey?mn*5:mn,ge=w&&Pn(Ie(T.current))?-1:1,ne=(m.key===k?ee:-ee)*ge;if(U.collapsed){ne>0&&E(D,"end",void 0,"keyboard");return}if(H.collapsed){ne<0&&E(O,"start",void 0,"keyboard");return}if(ne<0&&U.collapseFromEnd&&N.position<=N.resizeLower+C){B(D,"end","keyboard");return}if(ne>0&&H.collapseFromStart&&N.position>=N.resizeUpper-C){B(O,"start","keyboard");return}$(D,O,U.size+ne,"keyboard")},[Q,w,b,$,B,E,M]),se=typeof p=="object"&&p!==null?p:void 0,Te=p===!1||se?.visible===!1,te=Math.max(1,Re(a,Yn)),Tn=w?Zn:Jn,kn=w?et:nt,ue=Math.min(te,Math.max(1,Re(d??se?.thickness,Xn))),me=Math.max(1,Re(g??se?.length,Tn)),be=Math.min(ue,Math.max(1,Re(u??se?.barThickness,Qn))),ye=Math.min(me,Math.max(1,Re(I??se?.barLength,kn))),de=s.useMemo(()=>{const m=Xe(M),Y=N=>{const ee=q[N];return ee?ee.collapsed||ee.size<=m:!1},k=(N,ee)=>{let ge=0;for(let ne=N;ne>=0&&ne<q.length&&Y(ne);ne+=ee)ge+=1;return ge},D=q.findIndex(N=>N.id===S.start),O=q.findIndex(N=>N.id===S.end),U=D>=0?k(D,-1):0,H=O>=0?k(O,1):0;return{groupSize:U+H+1,overlapIndex:U}},[S.start,S.end,q,M]),re=s.useMemo(()=>Oe?!0:de.groupSize<=1?!1:de.overlapIndex>0&&de.overlapIndex<de.groupSize-1,[de,Oe]),Ce=s.useMemo(()=>{if(de.groupSize<=1||re)return 0;const m=Kt(Math.max(tt,ue+4));return(de.overlapIndex===0?-.5:.5)*m},[de,re,ue]),Fn=s.useMemo(()=>{const m={position:"relative",flex:"0 0 0px",alignSelf:"stretch",order:0,margin:0,overflow:"visible",...w?{width:0,minWidth:0}:{height:0,minHeight:0}};return re?{...m,...qt}:m},[w,re]),rn=s.useMemo(()=>({"--rp-handle-thickness":`${te}px`,"--rp-indicator-thickness":`${ue}px`,"--rp-indicator-length":`${me}px`,"--rp-indicator-bar-thickness":`${be}px`,"--rp-indicator-bar-length":`${ye}px`}),[te,ue,me,be,ye]),Bn=s.useMemo(()=>({...rn,...o,position:"absolute",zIndex:20,touchAction:"none",...w?{insetBlockStart:0,insetInlineStart:`${-te/2}px`,width:`${te}px`,height:"100%"}:{insetInlineStart:0,insetBlockStart:`${-te/2}px`,height:`${te}px`,width:"100%"}}),[w,te,rn,o]),Hn=s.useMemo(()=>{if(re||Te)return Vt;const m={width:`${w?ue:me}px`,height:`${w?me:ue}px`,flexShrink:0};return Ce!==0&&(m.position="relative",w?m.insetInlineStart=`${Ce}px`:m.insetBlockStart=`${Ce}px`),m},[re,Te,w,ue,me,Ce]),Gn=s.useMemo(()=>({width:`${w?be:ye}px`,height:`${w?ye:be}px`,flexShrink:0}),[w,be,ye]),$n=s.useMemo(()=>we.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",!Q&&"hover:bg-gray-200/70 dark:hover:bg-gray-700/70",!Q&&"active:bg-blue-300/60 dark:active:bg-blue-700/60",A&&"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),[w,Q,A,r]),jn=s.useMemo(()=>we.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)]",A&&"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)]",se?.className),[A,se?.className]),Un=s.useMemo(()=>we.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)]",A&&"bg-blue-500 dark:bg-blue-300",!Q&&"group-hover:bg-slate-700 dark:group-hover:bg-slate-100",se?.barClassName),[A,Q,se?.barClassName]);s.useEffect(()=>{if(ie===K.current)return;const m=K.current;K.current=ie,P.current=null,_(m,null)},[_,ie]),s.useEffect(()=>{const m={id:ie,thickness:re?0:te,direction:y,visible:!re&&te>st,startPanelId:S.start,endPanelId:S.end};P.current=m,_(ie,m)},[ie,te,re,y,S.start,S.end,_]),s.useEffect(()=>()=>{_(K.current,null)},[_]);const Wn=s.useCallback(m=>{F?.(m),m.defaultPrevented||nn(m)},[F,nn]),qn=s.useCallback(m=>{W?.(m),m.defaultPrevented||tn(m)},[W,tn]),on=`Resize ${w?"columns":"rows"} - Drag or use arrow keys to resize, drag to the edge to collapse/expand panels`,ke=s.useMemo(()=>{const m=S.start===null?void 0:b(S.start),Y=S.end===null?void 0:b(S.end);if(!(m&&Y)||M<=0)return;const k=En(m,Y,M);if(!k)return;const D=O=>Math.round(O/M*100);return{now:D(k.position),min:D(k.lower),max:D(k.upper)}},[S.start,S.end,b,M]);return L.jsx("div",{ref:T,style:Fn,"data-resize-handle-anchor":"",children:L.jsx("button",{...oe,type:"button",ref:V,className:$n,style:Bn,onPointerDown:Wn,onKeyDown:qn,disabled:Q,role:"separator","aria-orientation":w?"vertical":"horizontal","aria-valuenow":ke?.now,"aria-valuemin":ke?.min,"aria-valuemax":ke?.max,"aria-disabled":Q||void 0,"aria-hidden":re||void 0,"aria-label":oe["aria-label"]??on,"data-resize-handle-id":ie,title:h??on,children:i||!Te&&L.jsx("div",{className:jn,style:Hn,"data-resize-handle-indicator":"","aria-hidden":"true",children:L.jsx("span",{className:Un,style:Gn,"data-resize-handle-indicator-bar":"","aria-hidden":"true"})})})})}),Qe=e=>typeof CSS<"u"&&typeof CSS.escape=="function"?CSS.escape(e):e.replace(/["\\]/g,"\\$&"),Xt=e=>typeof document>"u"?null:document.querySelector(`[data-panel-id="${Qe(e)}"]`),Zt=e=>typeof document>"u"?null:document.querySelector(`[data-panel-group-id="${Qe(e)}"]`),Jt=e=>typeof document>"u"?null:document.querySelector(`[data-resize-handle-id="${Qe(e)}"]`);exports.PANEL_SNAP_THRESHOLD=zn;exports.Panel=Ft;exports.PanelGroup=Wt;exports.PanelGroupContext=Je;exports.PanelResizeHandle=Yt;exports.allocatePanelSizes=Cn;exports.calculateSnapThreshold=Xe;exports.clamp=Ne;exports.findLayoutInvariantBreach=_n;exports.findOwningGroup=Ie;exports.getConstraintInPixels=je;exports.getContainerSize=Se;exports.getGroupLayoutElements=Ze;exports.getPanelElement=Xt;exports.getPanelGroupElement=Zt;exports.getPanelPreferenceInPixels=An;exports.getResizeHandleElement=Jt;exports.initialPanelGroupLayoutState=Ln;exports.isPixelPanel=Z;exports.loadLayout=Nn;exports.normalizeSizeConfig=In;exports.panelReducer=Dn;exports.percentageToPixels=ct;exports.resolvePanelBounds=fe;exports.saveLayout=We;exports.toRoundedPercentage=Ye;exports.usePanelControls=Lt;exports.usePanelGroup=Ae;exports.useResizablePanels=On;