@aiquants/resize-panels 1.6.0 → 1.7.2

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 s=require("react"),X=require("react/jsx-runtime"),Ge=require("tailwind-merge"),et=s.createContext(null),Xe=()=>{const e=s.useContext(et);if(!e)throw new Error("usePanelGroup must be used within a PanelGroup");return e},pt=(e,t=0)=>{if(!Number.isFinite(e))return e;const n=10**t,f=e*n,r=Math.floor(f),a=f-r,i=Number.EPSILON*Math.max(1,Math.abs(f));return a<.5-i?r/n:a>.5+i?(r+1)/n:(r%2===0?r:r+1)/n},zt=12,ot=8,Rt=8,Bt=8,at=10,ht=.05,gt=10,Ft=.05,It=20,Nt=.05,lt=0,mt=6,Pe=(e,t)=>t<=0?0:pt(e/t*100,mt),je=(e,t)=>!e||t<=0?0:e/100*t,St=(e,t="percentage")=>{if(e!==void 0)return typeof e=="number"?{value:e,unit:t}:e},$=(e,t,n)=>e?typeof e=="number"?e/100*n:e.unit==="pixels"?e.value:e.value/100*n:t,de=(e,t,n)=>Math.min(Math.max(e,t),n),Qe=e=>{if(!Number.isFinite(e)||e<=0)return lt;const t=e*ht,n=Math.min(zt,gt,t);return Math.max(lt,n)},xt=(e,t,n,f={})=>{if(Math.abs(t)<=0)return t;const r=f.enforceAutoMinSize??!1,a=e.map((l,u)=>({panel:l,index:u})).filter(({panel:l})=>!l.collapsed&&(l.sizeUnit==="pixels"||l.originalPixelSize!==void 0));if(a.length===0)return t;const i=t>0,z=[...a].sort((l,u)=>{const o=l.panel.pixelAdjustPriority??l.index+1,S=u.panel.pixelAdjustPriority??u.index+1;return o===S?i?u.index-l.index:l.index-u.index:i?S-o:o-S});let g=t;const h=l=>{for(const{index:u}of z){if(Math.abs(g)<=0)break;const o=e[u];if(!o||o.collapsed)continue;const S=$(o.minSize,0,n),C=$(o.maxSize,n,n),M=r?$(o.autoMinSize,0,n):0,E=Math.max(S,M),R=o.preferredPixelSize!==void 0?de(o.preferredPixelSize,E,C):o.size,T=o.collapseFromStart||o.collapseFromEnd;if(g>0){if(Math.abs(o.size)<=0&&(o.percentageSize??0)<=0)continue;const O=Math.max(o.size,R),re=l?Math.min(C,O):C,Q=Math.max(0,re-o.size);if(Q<=0)continue;const fe=Math.min(Q,g);if(fe<=0)continue;const k=o.size+fe,H=Pe(k,n),w=T?k:o.sizeBeforeCollapse,V=T?o.measuredPixelSizeBeforeCollapse??o.measuredPixelSize??k:o.measuredPixelSizeBeforeCollapse;e[u]={...o,size:k,percentageSize:H,sizeBeforeCollapse:w,measuredPixelSizeBeforeCollapse:V,measuredPixelSize:void 0,measuredPercentageSize:void 0},g-=fe}else{const B=l?R:E,O=Math.max(0,o.size-B);if(O<=0)continue;const re=Math.min(O,Math.abs(g));if(re<=0)continue;const Q=o.size-re,fe=Pe(Q,n),k=T?Q:o.sizeBeforeCollapse,H=T?o.measuredPixelSizeBeforeCollapse??o.measuredPixelSize??Q:o.measuredPixelSizeBeforeCollapse;e[u]={...o,size:Q,percentageSize:fe,sizeBeforeCollapse:k,measuredPixelSizeBeforeCollapse:H,measuredPixelSize:void 0,measuredPercentageSize:void 0},g+=re}}};return h(!0),(i&&g>0||!i&&g<0)&&h(!1),g},$e=e=>{if(!e)return 0;const t=parseFloat(e);return Number.isFinite(t)?t:0},Ie=(e,t)=>{const n=e.getBoundingClientRect(),f=typeof window<"u"?window.getComputedStyle(e):null,r=f?$e(f.borderLeftWidth)+$e(f.borderRightWidth):0,a=f?$e(f.borderTopWidth)+$e(f.borderBottomWidth):0;if(t==="horizontal"){const h=n.width>0?n.width:e.offsetWidth,l=n.width>0?Math.max(0,n.width-r):e.clientWidth,u=e.offsetWidth>0?e.offsetWidth:e.clientWidth+r;return{inner:l>0?l:Math.max(0,e.clientWidth),outer:h>0?h:Math.max(0,u)}}const i=n.height>0?n.height:e.offsetHeight,z=n.height>0?Math.max(0,n.height-a):e.clientHeight,g=e.offsetHeight>0?e.offsetHeight:e.clientHeight+a;return{inner:z>0?z:Math.max(0,e.clientHeight),outer:i>0?i:Math.max(0,g)}},Pt=(e,t)=>{try{localStorage.setItem(`panel-layout-${e}`,JSON.stringify(t))}catch(n){console.warn("Failed to save panel layout:",n)}},bt=e=>{try{const t=localStorage.getItem(`panel-layout-${e}`);return t?JSON.parse(t):null}catch(t){return console.warn("Failed to load panel layout:",t),null}};var Le=(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))(Le||{});const xe=class xe{constructor(t=2,n="[resize-panels]",f=console){this.level=t,this.prefix=n,this.impl=f,xe.instances.add(this)}static setLevel(t){for(const n of xe.instances)n.setLevel(t)}setLevel(t){this.level=t}static setImplementation(t){for(const n of xe.instances)n.setImplementation(t)}setImplementation(t){this.impl=t}static setPrefix(t){for(const n of xe.instances)n.setPrefix(t)}setPrefix(t){this.prefix=t}enabledFor(t){return this.level<=t}formatMessage(t){return typeof t=="string"?[`${this.prefix} ${t}`]:[this.prefix,t]}static debug(t,...n){xe.instance.debug(t,...n)}debug(t,...n){this.level<=0&&this.impl.debug(...this.formatMessage(t),...n)}static info(t,...n){xe.instance.info(t,...n)}info(t,...n){this.level<=1&&this.impl.info(...this.formatMessage(t),...n)}static warn(t,...n){xe.instance.warn(t,...n)}warn(t,...n){this.level<=2&&this.impl.warn(...this.formatMessage(t),...n)}static error(t,...n){xe.instance.error(t,...n)}error(t,...n){this.level<=3&&this.impl.error(...this.formatMessage(t),...n)}};xe.instances=new Set,xe.instance=new xe(2,"[resize-panels]");let He=xe;const ue=new He(Le.INFO,"[resize-panels]"),Be=1e-9,Me=e=>e.map(t=>({id:t.id,size:t.size,percentageSize:t.percentageSize,preferredPercentageSize:t.preferredPercentageSize,sizeBeforeCollapse:t.sizeBeforeCollapse,percentageSizeBeforeCollapse:t.percentageSizeBeforeCollapse,preferredPercentageSizeBeforeCollapse:t.preferredPercentageSizeBeforeCollapse,measuredPercentageSize:t.measuredPercentageSize,excludeFromAutoGrowth:t.excludeFromAutoGrowth??!1,collapsed:t.collapsed??!1,collapseFromStart:t.collapseFromStart,collapseFromEnd:t.collapseFromEnd,collapsedByDirection:t.collapsedByDirection??null})),We=e=>e?Me([e])[0]:null,De=e=>e?!!(e.collapseFromStart||e.collapseFromEnd):!1,Ve=(e,t)=>{if(!Number.isFinite(t)||t<=0)return e;const n=e.map(g=>({...g})),f=[];for(let g=0;g<n.length;g+=1){const h=n[g];if(h.collapsed){n[g]={...h,size:0,percentageSize:0};continue}const l=Math.max(0,$(h.minSize,0,t)),u=Math.max(0,$(h.autoMinSize,0,t)),o=Math.max(l,u),S=Math.max(.001,o),C=$(h.maxSize,t,t),M=Math.max(o,C),E=h.sizeUnit==="pixels"||h.originalPixelSize!==void 0,R=Math.max(0,h.size);let T=o;if(E){const O=h.preferredPixelSize??h.size??h.originalPixelSize??o;T=de(O,o,M)}else{const O=h.preferredPercentageSize??h.percentageSize??Pe(h.size,t),re=je(O,t);T=de(re,o,M)}const B=!E&&(h.excludeFromAutoGrowth??!1)&&R<=S;f.push({index:g,isPixelPanel:E,minSize:o,maxSize:M,preferredSize:T,priority:h.pixelAdjustPriority??g+1,flexPriority:E?void 0:h.flexAdjustPriority,excludeFromGrowth:B})}if(f.length===0)return n;const r=new Map;let a=0;for(const g of f)r.set(g.index,g.minSize),a+=g.minSize;let i=t-a;const z=(g,h)=>{if(h<=0)return 0;const l=r.get(g.index)??g.minSize,u=Math.max(0,g.maxSize-l);if(u<=0)return 0;const o=Math.min(h,u);return r.set(g.index,l+o),o};if(i>0){const g=l=>{for(;i>1e-6;){let o=0;const S=[];for(const E of l){if(!E.isPixelPanel&&E.excludeFromGrowth)continue;const R=r.get(E.index)??E.minSize,T=Math.min(E.preferredSize,E.maxSize),B=Math.max(0,T-R);B>1e-6&&(o+=B,S.push({descriptor:E,capacity:B}))}if(S.length===0||o<=1e-6)break;let C=0;const M=i;for(const E of S){if(i<=1e-6)break;if(!E.descriptor.isPixelPanel&&E.descriptor.excludeFromGrowth)continue;const R=M*E.capacity/o,T=Math.min(E.capacity,R);if(T<=0)continue;const B=z(E.descriptor,T);B>0&&(i-=B,C+=B)}if(C<=1e-6)break}},h=f.filter(l=>l.isPixelPanel);h.sort((l,u)=>u.priority-l.priority);for(const l of h){if(i<=0)break;const u=r.get(l.index)??l.minSize,o=Math.min(l.preferredSize,l.maxSize),S=Math.max(0,o-u);if(S<=0)continue;const C=z(l,Math.min(S,i));C>0&&(i-=C)}if(i>0){const l=f.filter(u=>!u.isPixelPanel);if(l.length>0){const u=l.filter(o=>o.flexPriority!==void 0&&!o.excludeFromGrowth);if(u.length>0){u.sort((o,S)=>(S.flexPriority??0)-(o.flexPriority??0));for(const o of u){if(i<=0)break;if(o.excludeFromGrowth)continue;const S=r.get(o.index)??o.minSize,C=Math.min(o.preferredSize,o.maxSize),M=Math.max(0,C-S);if(M<=0)continue;const E=z(o,Math.min(M,i));E>0&&(i-=E)}}if(i>0){const o=u.length>0?l.filter(S=>S.flexPriority===void 0&&!S.excludeFromGrowth):l.filter(S=>!S.excludeFromGrowth);o.length>0&&g(o)}}}}if(i>0){let g=i;for(;;){let h=0;const l=[];for(const o of f){if(!o.isPixelPanel&&o.excludeFromGrowth)continue;const S=r.get(o.index)??o.minSize,C=o.isPixelPanel?Math.min(o.maxSize,o.preferredSize):o.maxSize,M=Math.max(0,C-S);M>0&&(l.push(o),h+=M)}if(h<=0)break;const u=i;for(const o of l){if(i<=0)break;if(!o.isPixelPanel&&o.excludeFromGrowth)continue;const S=r.get(o.index)??o.minSize,C=o.isPixelPanel?Math.min(o.maxSize,o.preferredSize):o.maxSize,M=Math.max(0,C-S);if(M<=0)continue;const E=u*M/h,R=z(o,Math.min(M,E));R>0&&(i-=R)}if(i<=1e-6||Math.abs(g-i)<=1e-6)break;g=i}i=Math.max(0,i)}for(const g of f){const h=r.get(g.index)??g.minSize,l=n[g.index],u=De(l),o=u?h:l.sizeBeforeCollapse,S=u?l.measuredPixelSizeBeforeCollapse??l.measuredPixelSize??h:l.measuredPixelSizeBeforeCollapse,C=t>0?Pe(h,t):0;n[g.index]={...l,size:h,percentageSize:C,preferredPercentageSize:l.preferredPercentageSize,preferredPixelSize:g.isPixelPanel?l.preferredPixelSize??h:l.preferredPixelSize,sizeBeforeCollapse:o,measuredPixelSizeBeforeCollapse:S,measuredPixelSize:void 0,measuredPercentageSize:void 0}}return Ae(n)},Ae=e=>{let t=0;for(const r of e)r.collapsed||(t+=Math.max(r.size,0));if(t<=0){let r=!1;const a=e.map(i=>(i.percentageSize??0)!==0?(r=!0,{...i,percentageSize:0,measuredPercentageSize:i.measuredPercentageSize!==void 0?0:i.measuredPercentageSize}):!i.collapsed&&i.sizeBeforeCollapse!==i.size?(r=!0,{...i,sizeBeforeCollapse:i.size}):i);return r?a:e}let n=!1;const f=e.map(r=>{if(r.collapsed)return(r.percentageSize??0)!==0?(n=!0,{...r,percentageSize:0,measuredPercentageSize:r.measuredPercentageSize!==void 0?0:r.measuredPercentageSize}):r;const a=Pe(r.size,t),i=r.measuredPercentageSize,h=(i!==void 0?Math.abs(i-a):1/0)<1e-4&&i!==void 0?i:a,l=pt(h,mt),o=Math.abs((r.percentageSize??0)-l)>0||r.percentageSize===void 0,S=r.sizeBeforeCollapse===void 0||r.sizeBeforeCollapse!==r.size,C=De(r),M=C&&S,E=r.measuredPixelSize??r.size,R=C&&(r.measuredPixelSizeBeforeCollapse===void 0||r.measuredPixelSizeBeforeCollapse!==E);if(!(o||M||R))return r;n=!0;const T=M?r.size:r.sizeBeforeCollapse,B=R?E:r.measuredPixelSizeBeforeCollapse;return{...r,percentageSize:l,sizeBeforeCollapse:T,measuredPixelSizeBeforeCollapse:B,collapsedByDirection:r.collapsed?r.collapsedByDirection??null:null}});return n?f:e},qe=(e,t)=>{if(t<=0)return!1;const n=[];let f=0;for(let l=0;l<e.length;l+=1){const u=e[l];!u||u.collapsed||(n.push(l),f+=u.size)}if(n.length===0)return!1;let r=t-f;if(Math.abs(r)<=0)return!1;let a=!1;const i=l=>{const u=e[l],o=$(u.minSize,0,t),S=$(u.autoMinSize,0,t),C=Math.max(o,S),M=$(u.maxSize,t,t),E=u.sizeUnit==="percentage"&&u.originalPixelSize===void 0;return{index:l,minSize:C,maxSize:M,isFlexible:E}},z=(l,u)=>{if(!Number.isFinite(u)||Math.abs(u)<=0)return;const o=e[l];if(!o)return;const S=Math.max(0,o.size+u);if(Math.abs(S-o.size)<=0)return;const C=Pe(S,t),M=De(o),E=M?S:o.sizeBeforeCollapse,R=M?o.measuredPixelSizeBeforeCollapse??o.measuredPixelSize??S:o.measuredPixelSizeBeforeCollapse;e[l]={...o,size:S,percentageSize:C,sizeBeforeCollapse:E,measuredPixelSizeBeforeCollapse:R,measuredPixelSize:void 0,measuredPercentageSize:void 0},r-=u,a=!0},g=l=>{for(const u of l){if(Math.abs(r)<=0)break;const o=e[u.index];if(!o||o.collapsed)continue;const S=o.size;if(r>0){const C=Math.max(0,u.maxSize-S);if(C<=0)continue;const M=Math.min(C,r);if(M<=0)continue;z(u.index,M)}else{const C=Math.max(0,S-u.minSize);if(C<=0)continue;const M=Math.min(C,Math.abs(r));if(M<=0)continue;z(u.index,-M)}}},h=n.map(l=>i(l)).filter(l=>l.isFlexible);if(h.length>0&&g(h),Math.abs(r)>0){const l=r;r=xt(e,r,t,{enforceAutoMinSize:!0}),Math.abs(r-l)>0&&(a=!0)}return a},ct=(e,t,n)=>{if(!(e.sizeUnit==="pixels"||e.originalPixelSize!==void 0)||e.pixelAdjustPriority!==void 0)return e;const r=t.filter((i,z)=>z!==n&&(i.sizeUnit==="pixels"||i.originalPixelSize!==void 0)).map(i=>i.pixelAdjustPriority).filter(i=>i!==void 0),a=r.length>0?Math.max(...r)+1:1;return{...e,pixelAdjustPriority:a}},At=(e,t)=>{switch(t.type){case"REGISTER_PANEL":{ue.debug("REGISTER_PANEL",t.panel);const n=e.findIndex(a=>a.id===t.panel.id);if(n>=0){const a=[...e],i=e[n],z={...i,minSize:t.panel.minSize,maxSize:t.panel.maxSize,collapseFromStart:t.panel.collapseFromStart,collapseFromEnd:t.panel.collapseFromEnd,collapsedByDirection:t.panel.collapsedByDirection!==void 0?t.panel.collapsedByDirection:i.collapsedByDirection,sizeUnit:t.panel.sizeUnit,originalPixelSize:t.panel.originalPixelSize,preferredPercentageSize:t.panel.preferredPercentageSize!==void 0?t.panel.preferredPercentageSize:i.preferredPercentageSize,preferredPercentageSizeBeforeCollapse:t.panel.preferredPercentageSizeBeforeCollapse!==void 0?t.panel.preferredPercentageSizeBeforeCollapse:i.preferredPercentageSizeBeforeCollapse,percentageSizeBeforeCollapse:t.panel.percentageSizeBeforeCollapse!==void 0?t.panel.percentageSizeBeforeCollapse:i.percentageSizeBeforeCollapse,pixelAdjustPriority:t.panel.pixelAdjustPriority!==void 0?t.panel.pixelAdjustPriority:i.pixelAdjustPriority,flexAdjustPriority:t.panel.flexAdjustPriority!==void 0?t.panel.flexAdjustPriority:i.flexAdjustPriority,autoMinSize:t.panel.autoMinSize!==void 0?t.panel.autoMinSize:i.autoMinSize,excludeFromAutoGrowth:t.panel.excludeFromAutoGrowth!==void 0?t.panel.excludeFromAutoGrowth:i.excludeFromAutoGrowth},g=ct(z,e,n);if(ue.debug("register panel (update)",{panelId:g.id,incoming:We(t.panel),previous:We(i),next:We(g)}),a[n]=g,!g.collapsed){const h=a.reduce((l,u)=>u.collapsed?l:l+u.size,0);if(h>0){const l=$(g.minSize,0,h),u=Math.max(l,$(g.maxSize,h,h));if(g.size<l-Be||g.size>u+Be)return Ve(a,h)}}return a}const f={...t.panel},r=ct(f,e);return ue.debug("register panel (insert)",{panelId:r.id,incoming:We(r),previousLength:e.length}),[...e,r]}case"UNREGISTER_PANEL":{ue.debug("UNREGISTER_PANEL",t.id);const n=e.filter(r=>r.id!==t.id),f=Ae(n);return ue.enabledFor(Le.DEBUG)&&ue.debug("unregister panel",{panelId:t.id,previous:Me(e),filtered:Me(n),next:Me(f)}),f}case"RESIZE_PANELS":{ue.debug("RESIZE_PANELS",t.leftId,t.rightId,t.leftSize,t.rightSize);const n=e.findIndex(I=>I.id===t.leftId),f=e.findIndex(I=>I.id===t.rightId);if(n===-1||f===-1)return e;const r=[...e],a=r[n],i=r[f];if(a.collapsed||i.collapsed||t.leftSize===a.size&&t.rightSize===i.size)return e;const z=t.containerSize??e.reduce((I,W)=>I+W.size,0),g=$(a.minSize,0,z),h=$(a.maxSize,z,z),l=$(i.minSize,0,z),u=$(i.maxSize,z,z),o=a.size+i.size,S=e.reduce((I,W)=>W.collapsed?I:I+W.size,0),C=S-o,M=g+l,E=h+u,R=de(t.leftSize+t.rightSize,M,E);let T=z>0?z-C:R;Number.isFinite(T)||(T=R);const B=de(Math.max(R,T),M,E),O=I=>({min:Math.max(g,I-u),max:Math.min(h,I-l)}),re=I=>({min:Math.max(l,I-h),max:Math.min(u,I-g)}),Q=Math.abs(t.leftSize-a.size),fe=Math.abs(t.rightSize-i.size),k=Q>=fe;let H=a.size,w=i.size;if(k){const I=O(B);if(I.min>I.max+Be)return e;const W=de(t.leftSize,I.min,I.max),ae=B-W;if(ae<l-Be||ae>u+Be)return e;H=W,w=de(ae,l,u)}else{const I=re(B);if(I.min>I.max+Be)return e;const W=de(t.rightSize,I.min,I.max),ae=B-W;if(ae<g-Be||ae>h+Be)return e;w=W,H=de(ae,g,h)}const V=H+w;if(Math.abs(B-V)>Be)return e;const le=S-a.size-i.size+V,j=z>0?z:le,U=j>0?Pe(H,j):0,ee=j>0?Pe(w,j):0,G=a.sizeUnit==="pixels"||a.originalPixelSize!==void 0?H:a.preferredPixelSize,ne=i.sizeUnit==="pixels"||i.originalPixelSize!==void 0?w:i.preferredPixelSize,ye=$(a.autoMinSize,0,z),ze=$(i.autoMinSize,0,z),ce=Math.max(.001,ye),Ee=Math.max(.001,ze),ge=a.sizeUnit==="percentage"&&a.originalPixelSize===void 0,se=i.sizeUnit==="percentage"&&i.originalPixelSize===void 0;let oe=a.excludeFromAutoGrowth,he=i.excludeFromAutoGrowth;ge&&(H<=ce?oe=!0:H>ce&&(oe=!1)),se&&(w<=Ee?he=!0:w>Ee&&(he=!1));const me=De(a),be=De(i);return r[n]={...a,size:H,percentageSize:U,preferredPercentageSize:U>0?U:a.preferredPercentageSize,preferredPixelSize:G,sizeBeforeCollapse:me?H:a.sizeBeforeCollapse,measuredPixelSize:void 0,measuredPercentageSize:void 0,excludeFromAutoGrowth:oe},r[f]={...i,size:w,percentageSize:ee,preferredPercentageSize:ee>0?ee:i.preferredPercentageSize,preferredPixelSize:ne,sizeBeforeCollapse:be?w:i.sizeBeforeCollapse,measuredPixelSize:void 0,measuredPercentageSize:void 0,excludeFromAutoGrowth:he},z>0&&qe(r,z)?Ae(r):r}case"SET_PANELS":{ue.debug("SET_PANELS",t.panels);const n=ue.enabledFor(Le.DEBUG),f=t.panels.map(h=>{const l=h.sizeUnit==="pixels"||h.originalPixelSize!==void 0,u=h.preferredPercentageSize!==void 0?h.preferredPercentageSize:h.percentageSize,o=h.preferredPixelSize!==void 0?h.preferredPixelSize:l?h.size:h.preferredPixelSize;return{...h,preferredPercentageSize:u,preferredPixelSize:o}}),r=Me(e),a=n?Me(f):null,i=Ae(f),z=Me(i);let g=r.length===z.length;if(g)for(let h=0;h<z.length;h+=1){const l=z[h],u=r[h];if(!u){g=!1;break}if(!(u.id===l.id&&u.size===l.size&&u.percentageSize===l.percentageSize&&u.preferredPercentageSize===l.preferredPercentageSize&&u.sizeBeforeCollapse===l.sizeBeforeCollapse&&u.percentageSizeBeforeCollapse===l.percentageSizeBeforeCollapse&&u.preferredPercentageSizeBeforeCollapse===l.preferredPercentageSizeBeforeCollapse&&u.measuredPercentageSize===l.measuredPercentageSize&&u.excludeFromAutoGrowth===l.excludeFromAutoGrowth&&u.collapsed===l.collapsed&&u.collapseFromStart===l.collapseFromStart&&u.collapseFromEnd===l.collapseFromEnd&&u.collapsedByDirection===l.collapsedByDirection)){g=!1;break}}return g?(n&&ue.debug("set panels skipped (no diff)",{previous:r,incoming:a,next:z,previousLength:r.length,incomingLength:a?.length??f.length}),e):(n&&ue.debug("set panels",{previous:r,incoming:a,next:z,previousLength:r.length,incomingLength:a?.length??f.length}),i)}case"CONTAINER_RESIZED":{ue.debug("CONTAINER_RESIZED",t.containerSize);const n=ue.enabledFor(Le.DEBUG);if(t.containerSize<=0)return n&&ue.debug("container resized skipped (non-positive size)",{containerSize:t.containerSize,panels:Me(e)}),e;n&&ue.debug("container resized (before)",{containerSize:t.containerSize,panels:Me(e)});const f=Ve(e,t.containerSize);if(n&&ue.debug("container resized (after recalc)",{containerSize:t.containerSize,panels:Me(f)}),t.containerSize>0&&qe(f,t.containerSize)){const r=Ae(f);return n&&ue.debug("container resized (after reconcile)",{containerSize:t.containerSize,panels:Me(r)}),r}return n&&ue.debug("container resized (final)",{containerSize:t.containerSize,panels:Me(f)}),f}case"COLLAPSE_PANEL":{ue.debug("COLLAPSE_PANEL",t.id);const n=e.findIndex(o=>o.id===t.id);if(n===-1)return e;const f=e[n],r=t.from==="start"?f.collapseFromStart:f.collapseFromEnd;if(!(De(f)&&r)||f.collapsed)return e;const i=f.size,z=f.measuredPixelSize??i,g=f.percentageSize??f.preferredPercentageSize??0,h={...f,collapsed:!0,collapsedByDirection:t.from,sizeBeforeCollapse:i,percentageSizeBeforeCollapse:g,preferredPercentageSizeBeforeCollapse:f.preferredPercentageSize??g,preferredPixelSizeBeforeCollapse:f.preferredPixelSize??i,measuredPixelSizeBeforeCollapse:z,size:0,percentageSize:0,preferredPercentageSize:f.preferredPercentageSize,measuredPixelSize:f.measuredPixelSize!==void 0?0:f.measuredPixelSize,measuredPercentageSize:f.measuredPercentageSize!==void 0?0:f.measuredPercentageSize},l=[...e];l[n]=h;const u=Ve(l,t.containerSize);return t.containerSize>0&&qe(u,t.containerSize)?Ae(u):u}case"EXPAND_PANEL":{ue.debug("EXPAND_PANEL",t.id,t.targetSize);const n=e.findIndex(B=>B.id===t.id);if(n===-1)return e;const f=t.containerSize,r=e[n],a=t.from==="start"?r.collapseFromStart:r.collapseFromEnd;if(!(De(r)&&a&&r.collapsed)||r.collapsedByDirection&&r.collapsedByDirection!==t.from)return e;const z=[t.targetSize,r.sizeBeforeCollapse,r.measuredPixelSizeBeforeCollapse,r.preferredPixelSizeBeforeCollapse,r.originalPixelSize].find(B=>B!==void 0)??0,g=$(r.minSize,0,f),h=$(r.maxSize,f,f),l=de(z,g,h),u=Pe(l,f),o=r.measuredPixelSizeBeforeCollapse??l,S=Pe(o,f),C=r.preferredPercentageSizeBeforeCollapse??r.percentageSizeBeforeCollapse??u,M=r.preferredPixelSizeBeforeCollapse??r.preferredPixelSize??l,E={...r,collapsed:!1,collapsedByDirection:null,size:l,percentageSize:u,preferredPercentageSize:C,preferredPixelSize:M,sizeBeforeCollapse:l,percentageSizeBeforeCollapse:void 0,preferredPercentageSizeBeforeCollapse:void 0,preferredPixelSizeBeforeCollapse:void 0,measuredPixelSize:l,measuredPixelSizeBeforeCollapse:o,measuredPercentageSize:S},R=[...e];R[n]=E;const T=Ve(R,f);return f>0&&qe(T,f)?Ae(T):T}default:return e}},Oe=new He(Le.INFO,"[resize-panels]"),Ct=({direction:e,style:t,onLayout:n,autoSaveId:f,showDebugInfo:r=!1})=>{const[a,i]=s.useReducer(At,[]),[z,g]=s.useState({width:0,height:0}),[h,l]=s.useState(!1),[u,o]=s.useState(!1),[S,C]=s.useState(null),[M,E]=s.useState({}),[R,T]=s.useState({}),B=s.useRef(null),O=s.useRef(n),re=s.useRef(!1),Q=s.useRef(0),fe=s.useRef(z),k=s.useRef(z),H=s.useRef(h),w=s.useRef(S?.reason??null),V=s.useRef({}),le=s.useRef(null),j=s.useRef(null),U=s.useRef(null),ee=s.useRef({width:0,height:0}),G=s.useRef({width:0,height:0}),ne=s.useRef({}),ye=s.useRef({}),ze=s.useCallback(d=>d.map(P=>({...P})),[]);s.useEffect(()=>{k.current=z},[z]),s.useEffect(()=>{H.current=h},[h]),s.useEffect(()=>{w.current=S?.reason??null},[S?.reason]),s.useEffect(()=>{if(S)return;const d=e==="horizontal"?z.width:z.height;!Number.isFinite(d)||d<=4||a.length!==0&&(le.current=ze(a))},[S,a,e,z.width,z.height,ze]);const ce=s.useRef(a);s.useEffect(()=>{ce.current=a},[a]),s.useEffect(()=>{const d=j.current;if(S){j.current=S;return}if(d&&!S&&le.current){j.current=null;const P=new Set(ce.current.map(m=>m.id)),p=ze(le.current).filter(m=>P.has(m.id));p.length>0&&i({type:"SET_PANELS",panels:p});return}j.current=S},[S,ze]),s.useLayoutEffect(()=>{if(!B.current)return;const d=new ResizeObserver(P=>{for(const p of P){const m=p.target,y=m?Ie(m,"horizontal"):null,N=m?Ie(m,"vertical"):null,A=y?y.inner:0,v=N?N.inner:0,_=p.contentRect.width,D=p.contentRect.height,b=A>0?A:_,x=v>0?v:D;ee.current={width:b,height:x};const L=G.current,q=Math.abs(L.width-b)>=.5,K=Math.abs(L.height-x)>=.5;q||K?(U.current&&(clearTimeout(U.current),U.current=null),!h&&b>0&&x>0&&l(!0),g({width:b,height:x}),G.current={width:b,height:x}):(U.current&&clearTimeout(U.current),U.current=setTimeout(()=>{const Z=ee.current;g(Z),G.current=Z,U.current=null},150))}});return d.observe(B.current),()=>{d.disconnect(),U.current&&clearTimeout(U.current)}},[h]),s.useEffect(()=>()=>{for(const d of Object.values(ne.current))clearTimeout(d)},[]),s.useLayoutEffect(()=>{const d=fe.current,P=z,p=e==="horizontal"?Math.abs(d.width-P.width)>=.5:Math.abs(d.height-P.height)>=.5;if(u&&p){const m=e==="horizontal"?P.width:P.height;i({type:"CONTAINER_RESIZED",containerSize:m,direction:e})}fe.current=P},[z,u,e]);const Ee=s.useCallback(()=>{Oe.debug("panels[0]?.id",a[0]?.id);const d=a.some(c=>{if(c.collapsed||c.sizeUnit!=="percentage")return!1;const te=c.collapseFromStart||c.collapseFromEnd?c.sizeBeforeCollapse??c.measuredPixelSizeBeforeCollapse??c.originalPixelSize??c.measuredPixelSize??0:c.measuredPixelSize??c.originalPixelSize??c.size,J=c.percentageSize!==void 0&&c.percentageSize>0;return c.size<=0&&(te>0||J)}),P=e==="horizontal"?z.width:z.height,p=P>0;if(S||!p||!(a.length>0&&(a.length!==Q.current||!u||d)))return;const N=a.filter(c=>!c.collapsed&&(c.originalPixelSize!==void 0||c.sizeUnit==="pixels")).reduce((c,F)=>{const te=F.preferredPixelSize??F.originalPixelSize??F.size;return c+Math.max(0,te??0)},0),A=a.filter(c=>c.sizeUnit==="percentage"&&!c.collapsed),v=A.map(c=>c.id),_=A.map(c=>{const F=c.preferredPercentageSize??c.percentageSize;return F!==void 0&&F>0?je(F,P):c.size>0?c.size:0}),D=_.reduce((c,F)=>c+F,0),b=P-N,x=Math.max(0,b),L=x>0,q=a.map(c=>{if(c.collapsed){const F=c.sizeBeforeCollapse??c.measuredPixelSizeBeforeCollapse??c.originalPixelSize??(c.sizeUnit==="pixels"?c.size:void 0),te=c.sizeUnit==="percentage"&&c.percentageSize!==void 0?je(c.percentageSize,P):void 0,J=F??te??0,ie=c.measuredPixelSizeBeforeCollapse??c.measuredPixelSize??J;return{...c,size:0,percentageSize:0,preferredPercentageSize:c.preferredPercentageSize,sizeBeforeCollapse:J,percentageSizeBeforeCollapse:c.percentageSizeBeforeCollapse??c.percentageSize??c.preferredPercentageSize??0,preferredPercentageSizeBeforeCollapse:c.preferredPercentageSizeBeforeCollapse??c.preferredPercentageSize??c.percentageSize??void 0,preferredPixelSizeBeforeCollapse:c.preferredPixelSizeBeforeCollapse??c.preferredPixelSize??J,measuredPixelSizeBeforeCollapse:ie}}if(c.sizeUnit==="pixels"||c.originalPixelSize!==void 0){const F=c.size,te=P>0?Pe(F,P):0,J={...c,size:F,percentageSize:te,preferredPixelSize:c.preferredPixelSize??c.originalPixelSize??F,preferredPercentageSize:c.preferredPercentageSize!==void 0?c.preferredPercentageSize:te>0?te:void 0};if(c.collapseFromStart||c.collapseFromEnd){const ie=c.sizeBeforeCollapse??F,Te=c.measuredPixelSizeBeforeCollapse??c.measuredPixelSize??ie;J.sizeBeforeCollapse=ie,J.measuredPixelSizeBeforeCollapse=Te,J.preferredPixelSizeBeforeCollapse=c.preferredPixelSizeBeforeCollapse??c.preferredPixelSize??ie}return J}if(c.sizeUnit==="percentage"){const F=v.indexOf(c.id),te=F!==-1?_[F]:0,J=$(c.minSize,0,P),ie=$(c.maxSize,P,P),Te=Math.max(J,c.sizeBeforeCollapse??0,c.measuredPixelSizeBeforeCollapse??0,c.measuredPixelSize??0,c.originalPixelSize??0,c.size>0?c.size:0,c.percentageSize!==void 0?je(c.percentageSize,P):0,1),ke=te>0?te:Te;let ve;if(!L)ve=J;else if(F!==-1&&D>0){const pe=ke/D,Se=x*pe;ve=de(Se,J,ie)}else{const pe=c.percentageSize!==void 0?je(c.percentageSize,P):c.size,Se=pe>0?pe:ke;ve=de(Se,J,ie)}const Re=P>0?Pe(ve,P):0,we={...c,size:ve,percentageSize:Re,preferredPercentageSize:c.preferredPercentageSize!==void 0?c.preferredPercentageSize:Re>0?Re:void 0};if(c.collapseFromStart||c.collapseFromEnd){const pe=c.sizeBeforeCollapse??ve,Se=c.measuredPixelSizeBeforeCollapse??c.measuredPixelSize??pe;we.sizeBeforeCollapse=pe,we.measuredPixelSizeBeforeCollapse=Se,we.preferredPixelSizeBeforeCollapse=c.preferredPixelSizeBeforeCollapse??c.preferredPixelSize??pe}return we}return c}),K=[];for(let c=0;c<q.length;c+=1){const F=q[c];F.sizeUnit==="percentage"&&!F.collapsed&&K.push(c)}const Z=K.reduce((c,F)=>c+q[F].size,0),Y=b-Z;Math.abs(Y)>0&&xt(q,Y,P,{enforceAutoMinSize:!0}),i({type:"SET_PANELS",panels:q}),Q.current=a.length,o(!0)},[a,e,z.width,z.height,u,S]);s.useEffect(()=>{const d=e==="horizontal"?z.width:z.height,P=d>0,p=P&&a.length>0;if(P&&a.length===0){S&&C(null);return}const m=p?a.reduce((D,b)=>{if(b.collapsed)return D;const x=$(b.minSize,0,d);return D+Math.max(0,x)},0):null,y=p?a.reduce((D,b)=>{if(b.collapsed)return D;const x=$(b.maxSize,d,d);return D+Math.max(0,x)},0):null,N=m??S?.totalMinimumSize??null,A=y??S?.totalMaximumSize??null;if(!P){S&&C(D=>!D||D.availableContainerSize===d?D:{reason:D.reason,totalMinimumSize:null,totalMaximumSize:null,availableContainerSize:d});return}const v=N!==null&&N-d>Number.EPSILON,_=A!==null&&d-A>Number.EPSILON;if(v||_){const b={reason:v?"minimum-exceeded":"maximum-insufficient",totalMinimumSize:N,totalMaximumSize:A,availableContainerSize:d};C(x=>x&&x.reason===b.reason&&Math.abs((x.totalMinimumSize??0)-(b.totalMinimumSize??0))<=Number.EPSILON&&Math.abs((x.totalMaximumSize??0)-(b.totalMaximumSize??0))<=Number.EPSILON&&Math.abs(x.availableContainerSize-b.availableContainerSize)<=Number.EPSILON?x:b);return}if(S){const D=S.reason==="minimum-exceeded",b=S.reason==="maximum-insufficient";(!D||N!==null)&&(!b||A!==null)&&!v&&!_&&C(Z=>Z&&null)}},[a,e,z.width,z.height,S]),s.useEffect(()=>{Ee()},[Ee]),s.useEffect(()=>{O.current=n},[n]);const ge=s.useMemo(()=>a.map(d=>d.size),[a]),se=s.useRef(!1);s.useLayoutEffect(()=>{if(a.length===0){se.current=!1;return}!se.current&&(u||a.every(d=>d.collapsed||d.size>0))&&(se.current=!0),se.current&&O.current&&O.current(ge)},[ge,a,u]),s.useEffect(()=>{if(f&&ge.length>0&&se.current){const d=setTimeout(()=>{Pt(f,ge)},200);return()=>clearTimeout(d)}},[f,ge]),s.useEffect(()=>{if(!f||a.length===0||re.current)return;const d=e==="horizontal"?z.width:z.height;if(d<=0)return;const P=bt(f);if(P&&P.length===a.length){const p=a.map((m,y)=>{const N=$(m.minSize,0,d),A=$(m.maxSize,d,d),v=de(P[y],N,A),_=Pe(v,d),D=m.sizeUnit==="pixels"||m.originalPixelSize!==void 0?v:m.preferredPixelSize;return{...m,size:v,percentageSize:_,preferredPercentageSize:_>0?_:m.preferredPercentageSize,preferredPixelSize:D}});i({type:"SET_PANELS",panels:p}),re.current=!0}},[f,a,z.width,z.height,e]);const oe=s.useCallback(d=>{const P=k.current,p=V.current,m=JSON.stringify({id:d.id,size:d.size??null,percentageSize:d.percentageSize??null,preferredPercentageSize:d.preferredPercentageSize??null,preferredPixelSize:d.preferredPixelSize??null,sizeUnit:d.sizeUnit,originalPixelSize:d.originalPixelSize??null,minSize:d.minSize??null,maxSize:d.maxSize??null,collapseFromStart:d.collapseFromStart,collapseFromEnd:d.collapseFromEnd,collapsed:d.collapsed??!1,collapsedByDirection:d.collapsedByDirection??null,sizeBeforeCollapse:d.sizeBeforeCollapse??null,percentageSizeBeforeCollapse:d.percentageSizeBeforeCollapse??null,preferredPercentageSizeBeforeCollapse:d.preferredPercentageSizeBeforeCollapse??null,preferredPixelSizeBeforeCollapse:d.preferredPixelSizeBeforeCollapse??null,pixelAdjustPriority:d.pixelAdjustPriority??null,flexAdjustPriority:d.flexAdjustPriority??null,autoMinSize:d.autoMinSize??null});if(p[d.id]===m){Oe.debug("useResizablePanels.registerPanel skipped",{panelId:d.id,reason:"duplicate-registration"});return}p[d.id]=m,Oe.debug("useResizablePanels.registerPanel",{panelId:d.id,containerReady:H.current,violationReason:w.current,containerSize:{width:P.width,height:P.height}}),i({type:"REGISTER_PANEL",panel:d})},[]),he=s.useCallback(d=>{const P=k.current;Oe.debug("useResizablePanels.unregisterPanel",{panelId:d,containerReady:H.current,violationReason:w.current,containerSize:{width:P.width,height:P.height}}),i({type:"UNREGISTER_PANEL",id:d}),delete V.current[d],ne.current[d]&&(clearTimeout(ne.current[d]),delete ne.current[d]),delete ye.current[d],E(p=>{if(!(d in p))return p;const m={...p};return delete m[d],m})},[]),me=s.useCallback((d,P,p,m)=>{const y=e==="horizontal"?z.width:z.height,N=a.find(Z=>Z.id===d),A=a.find(Z=>Z.id===P);if(!(N&&A)){i({type:"RESIZE_PANELS",leftId:d,rightId:P,leftSize:p,rightSize:m,containerSize:y});return}if(N.collapsed||A.collapsed)return;const v=$(N.minSize,0,y),_=$(N.maxSize,y,y),D=$(A.minSize,0,y),b=$(A.maxSize,y,y);let x=de(p,v,_),L=de(m,D,b);const q=x+L,K=p+m;if(Math.abs(q-K)>1e-9){const Z=K-q;if(Z>0){const Y=_-x,c=b-L,F=Y+c;if(F>0){const te=Math.min(Z*(Y/F),Y),J=Math.min(Z-te,c);x+=te,L+=J}}else if(Z<0){const Y=Math.abs(Z),c=x-v,F=L-D,te=c+F;if(te>0){const J=Math.min(Y*(c/te),c),ie=Math.min(Y-J,F);x-=J,L-=ie}}}x=de(x,v,_),L=de(L,D,b),Math.abs(x+L-K)>1e-9&&Oe.error("Total size after constraints should be close to the original total size.",{constrainedLeftSize:x,constrainedRightSize:L,originalTotalSize:K}),i({type:"RESIZE_PANELS",leftId:d,rightId:P,leftSize:x,rightSize:L,containerSize:y})},[e,z.width,z.height,a]),be=s.useCallback((d,P)=>{const p=e==="horizontal"?z.width:z.height;i({type:"COLLAPSE_PANEL",id:d,from:P,containerSize:p})},[e,z.width,z.height]),I=s.useCallback((d,P,p)=>{const m=e==="horizontal"?z.width:z.height;i({type:"EXPAND_PANEL",id:d,from:P,containerSize:m,targetSize:p})},[e,z.width,z.height]),W=s.useCallback(d=>a.find(P=>P.id===d),[a]),ae=s.useCallback((d,P)=>{if(P===null){ne.current[d]&&(clearTimeout(ne.current[d]),delete ne.current[d]),delete ye.current[d],E(p=>{if(!(d in p))return p;const m={...p};return delete m[d],m});return}E(p=>{const m=p[d],y=m&&Math.abs(m.pixelSize-P.pixelSize)<.1,N=m&&Math.abs(m.percentageSize-P.percentageSize)<.01;return y&&N?(ne.current[d]&&clearTimeout(ne.current[d]),ye.current[d]=P,ne.current[d]=setTimeout(()=>{const A=ye.current[d];A&&E(v=>({...v,[d]:A})),delete ne.current[d]},200),p):(ne.current[d]&&(clearTimeout(ne.current[d]),delete ne.current[d]),{...p,[d]:P})})},[]),Ce=s.useCallback((d,P)=>{T(p=>{if(P===null){if(!(d in p))return p;const y={...p};return delete y[d],y}const m=p[d];return m&&Math.abs(m.thickness-P.thickness)<=.25&&m.visible===P.visible&&m.direction===P.direction&&m.startPanelId===P.startPanelId&&m.endPanelId===P.endPanelId?p:{...p,[d]:P}})},[]),Fe=s.useMemo(()=>({direction:e,panels:a,containerSize:z,isContainerReady:h,showDebugInfo:r,registerPanel:oe,unregisterPanel:he,resizePanels:me,collapsePanel:be,expandPanel:I,getPanel:W,reportPanelMeasurement:ae,panelMeasurements:M,reportHandleMeasurement:Ce,handleMeasurements:R,layoutConstraintViolation:S}),[e,a,z,h,r,oe,he,me,be,I,W,ae,M,Ce,R,S]),Ne=s.useMemo(()=>({display:"flex",flexDirection:e==="horizontal"?"row":"column",alignItems:"stretch",width:"100%",height:"100%",minWidth:"0px",minHeight:"0px",position:"relative",overflow:"hidden",...t}),[e,t]);return{groupRef:B,contextValue:Fe,groupStyle:Ne}},Dt=e=>{const{getPanel:t,collapsePanel:n,expandPanel:f}=Xe(),r=t(e),a=s.useCallback(g=>{n(e,g)},[n,e]),i=s.useCallback((g,h)=>{f(e,g,h)},[f,e]),z=s.useCallback((g,h)=>{r?.collapsed?i(g,h):a(g)},[r?.collapsed,a,i]);return s.useMemo(()=>({panel:r,isCollapsed:r?.collapsed??!1,canCollapseFromStart:r?.collapseFromStart??!1,canCollapseFromEnd:r?.collapseFromEnd??!1,collapse:a,expand:i,toggle:z}),[r,a,i,z])},Lt=({panel:e,measuredPixelSize:t,measuredPercentageSize:n,containerAxisSize:f,containerLabel:r})=>{const a=e?.size,i=typeof a=="number"&&Number.isFinite(a)?`${a.toFixed(3)}px`:"-",z=e?.percentageSize!==void 0?`${e.percentageSize.toFixed(3)}%`:"-",g=Number.isFinite(t)?`${t.toFixed(3)}px`:"-",h=Number.isFinite(n)?`${n.toFixed(3)}%`:"-",l=Number.isFinite(f)?`${f.toFixed(3)}px`:"-",u=`${i} / ${z}`,o=`${g} / ${h}`,S=e?.sizeUnit==="pixels"?"Fixed":"Flexible",C=[S,`${r}: ${l}`,`size (state): ${u}`,`size (measured): ${o}`];return{stateValueDisplay:u,measuredValueDisplay:o,containerDisplay:l,headlineLabel:S,titleText:C.join(`
2
+ `)}},Tt=s.memo(({panel:e,measuredPixelSize:t,measuredPercentageSize:n,containerAxisSize:f,direction:r})=>{const a=r==="horizontal"?"container width":"container height",{stateValueDisplay:i,measuredValueDisplay:z,containerDisplay:g,headlineLabel:h,titleText:l}=s.useMemo(()=>Lt({panel:e,measuredPixelSize:t,measuredPercentageSize:n,containerAxisSize:f,containerLabel:a}),[e,t,n,f,a]),u={position:"absolute",top:"2px",right:"4px",backgroundColor:"rgba(30, 41, 59, 0.6)",color:"#fff",padding:"4px 8px",borderRadius:"6px",fontSize:"11px",fontFamily:"monospace",pointerEvents:"auto",zIndex:10,boxShadow:"0 2px 4px rgba(0,0,0,0.3)",border:"1px solid rgba(255,255,255,0.1)",maxWidth:"calc(100% - 12px)",minWidth:"60px",width:"fit-content",overflow:"hidden"},o={display:"flex",flexDirection:"column",gap:"1px",minWidth:"0",width:"100%"},S={display:"flex",justifyContent:"flex-start",alignItems:"center",gap:"6px",fontSize:"10px",color:"#ccc",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",minWidth:"0",width:"100%"},C={display:"flex",justifyContent:"space-between",alignItems:"center",gap:"6px",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",minWidth:"0",width:"100%"},M={marginLeft:"auto",fontVariantNumeric:"tabular-nums",whiteSpace:"nowrap"};return X.jsx("div",{style:u,title:l,children:X.jsxs("div",{style:o,children:[X.jsx("div",{style:S,children:X.jsx("span",{children:h})}),X.jsxs("div",{style:C,children:[X.jsx("span",{children:a}),X.jsx("span",{style:M,children:g})]}),X.jsxs("div",{style:C,children:[X.jsx("span",{children:"size (state)"}),X.jsx("span",{style:M,children:i})]}),X.jsxs("div",{style:C,children:[X.jsx("span",{children:"size (measured)"}),X.jsx("span",{style:M,children:z})]})]})})}),Ze=new He(Le.INFO,"[resize-panels]"),kt={both:{collapseFromStart:!0,collapseFromEnd:!0},start:{collapseFromStart:!0,collapseFromEnd:!1},end:{collapseFromStart:!1,collapseFromEnd:!0}},_t=e=>{if(!e)return{collapseFromStart:!1,collapseFromEnd:!1};const t=kt[e.from];if(!t)throw new Error("Invalid collapsible configuration: unsupported 'from' value");return t},ut=({ref:e,setState:t,panelIdRef:n,label:f,timerRef:r})=>a=>{if(!Number.isFinite(a))return;const i=a<0?0:a,z=f==="pixel"?.1:.01;if(Math.abs(e.current-i)<z){r&&(r.current&&clearTimeout(r.current),r.current=setTimeout(()=>{e.current=i,t(i),r.current=null},200));return}r?.current&&(clearTimeout(r.current),r.current=null),e.current=i,Ze.debug(`commit ${f}`,{panelId:n.current,[f]:i}),t(i)},Ot=s.memo(({id:e,defaultSize:t={value:50,unit:"percentage"},minSize:n,maxSize:f,autoMinSize:r,className:a,style:i,children:z,order:g=0,collapsible:h,defaultCollapsed:l=!1,pixelAdjustPriority:u,flexAdjustPriority:o,contentOverflow:S="auto"})=>{const{direction:C,registerPanel:M,unregisterPanel:E,getPanel:R,showDebugInfo:T,isContainerReady:B,reportPanelMeasurement:O,containerSize:re}=Xe(),Q=s.useRef(null),fe=s.useId(),k=s.useRef(e||`panel-${fe}`);s.useEffect(()=>{e&&e!==k.current&&Ze.warn("Panel id prop change after mount is ignored.",{currentId:k.current,attemptedId:e})},[e]);const H=s.useMemo(()=>_t(h),[h]),w=H.collapseFromStart||H.collapseFromEnd,V=s.useMemo(()=>w?H.collapseFromStart?"start":H.collapseFromEnd?"end":null:null,[w,H.collapseFromStart,H.collapseFromEnd]),le=w&&l,j=s.useMemo(()=>St(t),[t]),U=j?.unit==="pixels",ee=U?void 0:j?.value,G=R(k.current),ne=!!G?.collapsed,ye=(G?.size??0)<=0,ze=ne||ye,ce=s.useRef(G);ce.current=G;const Ee=s.useRef(ze);Ee.current=ze;const[ge,se]=s.useState(()=>U&&j?j.value:G?.size!==void 0?G.size:0),[oe,he]=s.useState(()=>!U&&j?j.value:G?.percentageSize!==void 0?G.percentageSize:0),me=s.useRef(ge),be=s.useRef(oe),I=s.useRef(null),W=s.useRef(null);s.useEffect(()=>()=>{I.current&&clearTimeout(I.current),W.current&&clearTimeout(W.current)},[]);const ae=s.useMemo(()=>ut({ref:me,setState:se,panelIdRef:k,label:"pixel",timerRef:I}),[]),Ce=s.useMemo(()=>ut({ref:be,setState:he,panelIdRef:k,label:"percentage",timerRef:W}),[]),Fe=s.useCallback(()=>{I.current&&(clearTimeout(I.current),I.current=null),W.current&&(clearTimeout(W.current),W.current=null),me.current!==0&&(me.current=0,se(0)),be.current!==0&&(be.current=0,he(0))},[]);s.useEffect(()=>{if(!B)return;let b=0;if(U&&j){let F=j.value;n&&typeof n=="object"&&n.unit==="pixels"&&(F=Math.max(F,n.value)),f&&typeof f=="object"&&f.unit==="pixels"&&(F=Math.min(F,f.value)),b=F}const x=le,L=x?V:null;l&&!w&&Ze.warn("Panel defaultCollapsed is ignored because collapsible configuration is not provided.");const q=w&&x&&U?b:void 0,K=w?ee:void 0,Z=U?b:void 0,Y={id:k.current,size:x?0:b,percentageSize:x?0:ee,preferredPercentageSize:ee,preferredPixelSize:Z,sizeUnit:j?.unit||"percentage",originalPixelSize:U?b:void 0,minSize:n,maxSize:f,collapseFromStart:H.collapseFromStart,collapseFromEnd:H.collapseFromEnd,collapsedByDirection:L,collapsed:x,sizeBeforeCollapse:q,percentageSizeBeforeCollapse:K,preferredPercentageSizeBeforeCollapse:w?ee:void 0,preferredPixelSizeBeforeCollapse:w?Z:void 0,pixelAdjustPriority:u,flexAdjustPriority:o,autoMinSize:r};M(Y)},[r,H.collapseFromEnd,H.collapseFromStart,l,j,o,w,B,U,f,n,u,V,ee,M,le]),s.useEffect(()=>()=>{E(k.current),O(k.current,null)},[E,O]);const Ne=G?.size??0,d=s.useCallback(()=>{const b=Q.current;if(!b)return;const x=ce.current;if(!x)return;const L=b.parentElement;if(!L)return;const q=b.getBoundingClientRect(),K=Ie(L,"horizontal"),Z=Ie(L,"vertical"),Y=C==="horizontal"?q.width:q.height,c=C==="horizontal"?K.inner:Z.inner,F=Qe(c);if(Ee.current){Fe();return}const te=x.size??0,J=Math.max(2,F*.5);if(te>F&&Y<J){Ze.debug("skip noisy measurement",{panelId:k.current,expectedPanelSize:te,measured:Y,noiseThreshold:J});return}if(Y>0){ae(Y),c>0&&Ce(Y/c*100);return}x.size!==void 0&&ae(x.size),x.percentageSize!==void 0?Ce(x.percentageSize):x.sizeUnit==="pixels"&&x.size!==void 0&&c>0&&Ce(x.size/c*100)},[Ce,ae,C,Fe]),P=s.useRef(!1);s.useEffect(()=>{!P.current&&G&&(P.current=!0,d())},[G,d]),s.useEffect(()=>{const b=Q.current;if(!b)return;const x=new ResizeObserver(()=>{d()});x.observe(b),d();const L=[],q=new MutationObserver(()=>{(()=>{if(!Q.current)return!1;const Y=Q.current.getBoundingClientRect();return(C==="horizontal"?Y.width:Y.height)!==me.current})()&&setTimeout(d,0)}),K=b.parentElement;return K&&q.observe(K,{childList:!0,attributes:!0,attributeFilter:["style","class"]}),()=>{x.disconnect(),q.disconnect();for(const Z of L)clearTimeout(Z)}},[C,d]);const p=G?.size,m=G?.percentageSize,y=G?.sizeUnit;s.useEffect(()=>{if(G){if(ze){Fe();return}if(p!==void 0&&ae(p),m!==void 0)Ce(m);else if(y==="pixels"&&p!==void 0){const b=Q.current,x=b?.parentElement;if(b&&x){const{width:L,height:q}=b.getBoundingClientRect(),K=x.clientWidth,Z=x.clientHeight,Y=C==="horizontal"?L:q,c=C==="horizontal"?K:Z;if(Y>0&&c>0){const F=Y/c*100;Ce(F)}}}}},[Ce,ae,G,m,p,y,C,ze,Fe]),s.useEffect(()=>{O(k.current,{pixelSize:ge,percentageSize:oe})},[O,ge,oe]);const N=()=>ze?"0px":G?.originalPixelSize!==void 0?`${Ne}px`:G?.percentageSize!==void 0?`${G.percentageSize}%`:`${Ne}px`,A=G?.sizeUnit==="percentage"&&!G?.collapsed?1:0,v={flexBasis:N(),flexGrow:0,flexShrink:A,overflow:"hidden",position:"relative",boxSizing:"border-box",minHeight:"0px",minWidth:"0px",...i};C==="horizontal"?(v.height="100%",v.minWidth=0):(v.width="100%",v.minHeight=0),ze&&(C==="horizontal"?(v.width="0px",v.minWidth="0px"):(v.height="0px",v.minHeight="0px"),v.flexGrow=0,v.flexShrink=0,v.pointerEvents="none",v.visibility="hidden",ne&&(v.display="none"));const _=C==="horizontal"?re.width:re.height,D=s.useMemo(()=>({position:"absolute",inset:"0px",overflow:S,display:"flex",flexDirection:"column",width:"100%",height:"100%",minWidth:"0px",minHeight:"0px"}),[S]);return X.jsxs("div",{ref:Q,className:Ge.twMerge("panel",a),style:v,"data-panel-id":k.current,"data-panel-size":Ne,"data-panel-size-unit":G?.sizeUnit||"percentage","data-panel-pixel-size":G?.sizeUnit==="pixels"?G?.originalPixelSize:null,"data-panel-order":g,"data-panel-collapsible":w,"data-panel-collapse-start":H.collapseFromStart,"data-panel-collapse-end":H.collapseFromEnd,"data-panel-collapsed":G?.collapsed,"aria-hidden":ze,children:[X.jsx("div",{style:D,children:z}),T&&X.jsx(Tt,{panel:G,measuredPixelSize:ge,measuredPercentageSize:oe,containerAxisSize:_,direction:C})]})}),jt=s.lazy(()=>Promise.resolve().then(()=>require("./GlobalDebugOverlay-afs0vF-Q.cjs")).then(e=>({default:e.GlobalDebugOverlayGate})));let dt=0;const Gt=()=>(dt+=1,`panel-group-${dt}`),Ht=e=>{const t=e.reason==="minimum-exceeded",n=t?"Layout unavailable: minimum panel sizes exceed the container.":"Layout unavailable: panels cannot fill the container with their maximum sizes.",f=t?`Min required: ${Math.ceil(e.totalMinimumSize??0)}px | Available: ${Math.floor(e.availableContainerSize)}px`:`Max total: ${Math.floor(e.totalMaximumSize??0)}px | Needed: ${Math.floor(e.availableContainerSize)}px`;return{summary:n,detail:f}},Ut=(e,t)=>{let n=!1;const f=e.map(r=>{const a=t[r.id];return!a||r.measuredPixelSize===a.pixelSize&&r.measuredPercentageSize===a.percentageSize?r:(n=!0,{...r,measuredPixelSize:a.pixelSize,measuredPercentageSize:a.percentageSize})});return n?f:e},ft=(e,t,n)=>{const f=Ie(e,"horizontal"),r=Ie(e,"vertical"),a=e.getBoundingClientRect(),i=f.inner>0?f.inner:t??a.width,z=r.inner>0?r.inner:n??a.height;return{width:i,height:z}},$t=e=>{const{id:t,className:n,style:f,children:r,direction:a}=e,{groupRef:i,contextValue:z,groupStyle:g}=Ct(e),[h,l]=s.useState({width:0,height:0}),u=z.layoutConstraintViolation,o=!!u,S=s.useMemo(()=>{if(!u)return null;const{summary:w,detail:V}=Ht(u);return X.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:[X.jsx("span",{children:w}),X.jsx("span",{className:"text-slate-500 text-xs dark:text-slate-400",children:V})]})},[u]),M=s.useRef(t??Gt()).current,E=t??M,R=z.showDebugInfo&&z.panels.length>0,T=R?z.panels:[],B=R?z.panelMeasurements:{},O=s.useMemo(()=>{if(!R)return[];const w=Object.values(z.handleMeasurements);return w.length<=1?w:w.slice().sort((V,le)=>V.id.localeCompare(le.id))},[z.handleMeasurements,R]),re=z.containerSize,Q=h.width>0?h.width:re.width,fe=h.height>0?h.height:re.height;s.useLayoutEffect(()=>{if(!R){l({width:0,height:0});return}if(typeof window>"u"||typeof ResizeObserver>"u")return;const w=i.current;if(!w)return;const V=j=>{l(U=>U.width===j.width&&U.height===j.height?U:j)},le=new ResizeObserver(j=>{for(const U of j){if(U.target!==w)continue;const ee=ft(w,U.contentRect.width,U.contentRect.height);V(ee)}});return le.observe(w),V(ft(w)),()=>{le.disconnect()}},[i,R]);const k=s.useMemo(()=>Ut(T,B),[T,B]);s.useEffect(()=>{if(!R)return;let w=!1,V=null;return Promise.resolve().then(()=>require("./debugOverlayStore-Dkl-fHoa.cjs")).then(le=>{w||(V=le,le.enableDebugOverlayGroup(M))}),()=>{w=!0,V&&(V.disableDebugOverlayGroup(M),V.removeDebugOverlayGroup(M))}},[R,M]),s.useEffect(()=>{if(!R)return;let w=!1;return Promise.resolve().then(()=>require("./debugOverlayStore-Dkl-fHoa.cjs")).then(V=>{w||V.updateDebugOverlayGroup(M,{displayName:E,direction:a,containerSize:{width:Q,height:fe},panels:k,handles:O})}),()=>{w=!0}},[R,M,E,a,Q,fe,k,O]);const H=s.useMemo(()=>{const w={...g,...f};return w.position||(w.position="relative"),w},[g,f]);return X.jsxs(et.Provider,{value:z,children:[X.jsxs("div",{ref:i,className:Ge.twMerge("panel-group",a==="horizontal"?"flex-row":"flex-col",n),style:H,"data-panel-group-id":t,"data-panel-group-direction":a,children:[r,o&&S?X.jsx("div",{className:"pointer-events-auto",style:{position:"absolute",inset:0,zIndex:40,display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",backgroundColor:"rgba(248, 250, 252, 0.82)",backdropFilter:"blur(2px)"},children:S}):null]}),R&&X.jsx(s.Suspense,{fallback:null,children:X.jsx(jt,{groupId:M})})]})},Wt=s.memo(({id:e,disabled:t=!1,className:n,style:f,children:r,onDragging:a})=>{const{direction:i,resizePanels:z,getPanel:g,collapsePanel:h,expandPanel:l,panels:u,reportHandleMeasurement:o,containerSize:S,layoutConstraintViolation:C}=Xe(),[M,E]=s.useState(!1),R=s.useRef(null),T=s.useRef(null),B=s.useRef(""),O=s.useRef(""),re=s.useRef(null),[Q,fe]=s.useState(!1),[k,H]=s.useState({left:null,right:null}),w=s.useId(),V=s.useRef(e??`resize-handle-${w}`),le=s.useRef(null),j=e??V.current,U=!!C,ee=t||U,G=s.useCallback(()=>{const p=R.current;if(!p)return;const m=p.parentElement;if(!m)return;T.current=m,typeof window<"u"&&fe(window.getComputedStyle(m).direction==="rtl");const y=Array.from(m.children),N=y.indexOf(p);let A=null,v=null;for(let b=N-1;b>=0;b-=1){const x=y[b];if(x.dataset.panelId){A=x;break}}for(let b=N+1;b<y.length;b+=1){const x=y[b];if(x.dataset.panelId){v=x;break}}const _=A?.dataset.panelId||"",D=v?.dataset.panelId||"";_===B.current&&D===O.current||(B.current=_,O.current=D,H({left:_||null,right:D||null}))},[]),ne=s.useMemo(()=>u.map(p=>p.id).join("|"),[u]);s.useEffect(()=>{G()},[G,ne]),s.useEffect(()=>{if(j===V.current)return;const p=V.current;V.current=j,le.current=null,p!==j&&o(p,null)},[o,j]),s.useEffect(()=>{const p=V.current;return()=>{o(p,null)}},[o]),s.useEffect(()=>()=>{re.current?.()},[]);const ye=s.useCallback(p=>{if(ee||!T.current||re.current)return;p.preventDefault(),p.stopPropagation();const m=T.current,{inner:y}=Ie(m,i),N={x:p.clientX,y:p.clientY},A=g(B.current),v=g(O.current);if(!(A&&v))return;const _=A.size,D=v.size;let b=0;const x=Bt;E(!0),a?.(!0);const L=p.pointerId,q=p.currentTarget,K=i==="horizontal"&&typeof window<"u"&&window.getComputedStyle(m).direction==="rtl";q.setPointerCapture(L);const Z=ie=>{if(ie.pointerId!==L||!R.current)return;ie.preventDefault(),ie.stopPropagation();const Te=performance.now();if(Te-b<x)return;b=Te;const ke=i==="horizontal"?ie.clientX-N.x:ie.clientY-N.y,ve=K?-ke:ke;if(ve===0)return;const Re=_+ve,we=D-ve,pe=g(B.current),Se=g(O.current);if(pe&&Se&&B.current&&O.current){const Ke=$(pe.minSize,0,y),Ye=$(Se.minSize,0,y),tt=Ke,rt=Ye,it=Math.min(y*ht,gt),nt=Math.min(y*Ft,It),Mt=Se.collapseFromStart,yt=Se.collapsedByDirection??"start";if(Mt&&!Se.collapsed&&we<=Math.max(Ye*.3,it)){h(O.current,"start");return}const Et=pe.collapseFromEnd,vt=pe.collapsedByDirection??"end";if(Et&&!pe.collapsed&&Re<=Math.max(Ke*.3,it)){h(B.current,"end");return}if(Se.collapsed&&we>Math.max(Ye*.3,nt)){l(O.current,yt,we);return}if(pe.collapsed&&Re>Math.max(Ke*.3,nt)){l(B.current,vt,Re);return}if(y>0){const st=pe.size+Se.size,Ue=Qe(y);let Je=!1;if(tt<=Ue&&Re<=Ue&&_!==0){const _e=Math.max(0,st-0);_e>=rt&&(z(B.current,O.current,0,_e),Je=!0)}else if(rt<=Ue&&we<=Ue&&D!==0){const _e=Math.max(0,st-0);_e>=tt&&(z(B.current,O.current,_e,0),Je=!0)}if(Je)return}if(pe.collapsed||Se.collapsed)return;z(B.current,O.current,Re,we)}};let Y=!0;const c=()=>{Y&&(Y=!1,re.current=null,E(!1),a?.(!1),document.removeEventListener("pointermove",Z),document.removeEventListener("pointerup",F),document.removeEventListener("pointercancel",te),q.removeEventListener("lostpointercapture",J),q.hasPointerCapture?.(L)&&q.releasePointerCapture(L))},F=ie=>{ie.pointerId===L&&c()},te=ie=>{ie.pointerId===L&&c()},J=ie=>{ie.pointerId===L&&c()};document.addEventListener("pointermove",Z),document.addEventListener("pointerup",F),document.addEventListener("pointercancel",te),q.addEventListener("lostpointercapture",J),re.current=c},[ee,i,z,g,h,l,a]),ze=s.useCallback(p=>{if(ee)return;const m=i==="horizontal",y=m?"ArrowLeft":"ArrowUp",N=m?"ArrowRight":"ArrowDown";if(p.key!==y&&p.key!==N)return;p.preventDefault(),p.stopPropagation();let A=(p.key===N?1:-1)*(p.shiftKey?at*5:at);m&&typeof window<"u"&&T.current!==null&&window.getComputedStyle(T.current).direction==="rtl"&&(A=-A);const _=g(B.current),D=g(O.current);!(_&&D)||_.collapsed||D.collapsed||z(B.current,O.current,_.size+A,D.size-A)},[ee,i,g,z]),ce=i==="horizontal",Ee=ce?"cursor-col-resize":"cursor-row-resize",ge=Ge.twMerge("group absolute z-20 flex select-none items-center justify-center border-none bg-transparent transition-colors duration-150 overflow-visible",Ee,ce?"h-full":"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",M&&"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",n),se=s.useMemo(()=>{const p=m=>{if(!m)return-1;for(let y=0;y<u.length;y+=1)if(u[y].id===m)return y;return-1};return{left:p(k.left),right:p(k.right)}},[k.left,k.right,u]),oe=ce?S.width:S.height,he=s.useMemo(()=>{const p=(m,y)=>{if(m>y)return 0;let N=0;for(let A=m;A<=y;A+=1){const v=u[A];if(!v)continue;const _=v.size??0,D=Math.max(0,_);N+=v.collapsed?0:D}return N};return se.left>=0?p(0,se.left):se.right>0?p(0,se.right-1):0},[se.left,se.right,u]),me=s.useMemo(()=>!Number.isFinite(he)||he<0?0:oe>0&&he>oe?oe:he,[he,oe]),be=s.useMemo(()=>{const p={position:"absolute",zIndex:20,touchAction:"none"};return ce?(p.top=0,p.left=Q&&oe>0?`${oe-me}px`:`${me}px`,p.transform="translateX(-50%)",p.width=`${ot}px`,p.height="100%"):(p.left=0,p.top=`${me}px`,p.transform="translateY(-50%)",p.height=`${ot}px`,p.width="100%"),p},[me,ce,Q,oe]),I=s.useMemo(()=>{const p=Qe(oe),m=x=>{if(x<0||x>=u.length)return!1;const L=u[x];return L?L.collapsed?!0:L.size<=p:!1},y=(x,L)=>{if(!m(x))return 0;let q=0;for(let K=x;K>=0&&K<u.length&&m(K);K+=L)q+=1;return q},N=se.left,A=se.right,v=N>=0?y(N,-1):0,_=A>=0?y(A,1):0;return{groupSize:v+_+1,overlapIndex:v}},[se.left,se.right,u,oe]),W=s.useMemo(()=>{if(U)return!0;if(I.groupSize<=1)return!1;const p=I.groupSize-1;return I.overlapIndex>0&&I.overlapIndex<p},[I,U]),ae=s.useMemo(()=>{if(I.groupSize<=1||W)return 0;const p=I.groupSize>1?2:1;if(p===1)return 0;const m=I.overlapIndex===0?0:p-1,y=(p-1)/2;return(m-y)*Rt},[I,W]),Ce=s.useMemo(()=>{if(W)return{display:"none"};if(ae!==0)return ce?{transform:`translateX(${ae}px)`}:{transform:`translateY(${ae}px)`}},[ae,ce,W]),Fe=Ge.twMerge("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)]",ce?"h-12 w-[6px] px-[2px]":"h-[6px] w-20 py-[2px]",M&&"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)]"),Ne=Ge.twMerge("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)]",ce?"h-8 w-[2px]":"h-[2px] w-16",M&&"bg-blue-500 dark:bg-blue-300",!ee&&"group-hover:bg-slate-700 dark:group-hover:bg-slate-100"),d=s.useCallback(()=>{const p=R.current;if(!p)return;let m=0;if(!W){const A=i==="horizontal"?p.offsetWidth:p.offsetHeight;let v=0,_=0;if(typeof window<"u"){const b=window.getComputedStyle(p);i==="horizontal"?(v=Number.parseFloat(b.marginLeft||"0"),_=Number.parseFloat(b.marginRight||"0")):(v=Number.parseFloat(b.marginTop||"0"),_=Number.parseFloat(b.marginBottom||"0"))}m=[A,v,_].reduce((b,x)=>Number.isFinite(x)?b+x:b,0)}(!Number.isFinite(m)||m<0)&&(m=0);const y={id:j,thickness:m,direction:i,visible:!W&&m>Nt,startPanelId:k.left,endPanelId:k.right},N=le.current;N&&Math.abs(N.thickness-y.thickness)<=.25&&N.visible===y.visible&&N.direction===y.direction&&N.startPanelId===y.startPanelId&&N.endPanelId===y.endPanelId||(le.current=y,o(j,y))},[i,k.left,k.right,o,j,W]);s.useEffect(()=>{d()},[d]),s.useEffect(()=>{const p=R.current;if(!p)return;if(typeof ResizeObserver>"u"){d();return}const m=new ResizeObserver(()=>{d()});return m.observe(p),()=>{m.disconnect()}},[d]);const P=s.useMemo(()=>{const p=f?{...be,...f}:be;return W?{...p,display:"none",pointerEvents:"none",visibility:"hidden"}:p},[be,W,f]);return X.jsx("button",{type:"button",ref:R,className:ge,style:P,onPointerDown:ye,onKeyDown:ze,disabled:ee,"aria-hidden":W||void 0,"aria-label":`Resize ${ce?"columns":"rows"} - Drag or use arrow keys to resize, drag to the edge to collapse/expand panels`,"data-resize-handle-id":j,title:`ドラッグして${ce?"列":"行"}をリサイズ、端まで移動して折りたたみ/展開`,children:r||X.jsx("div",{className:Fe,style:Ce,children:X.jsx("span",{className:Ne})})})}),Vt=e=>document.querySelector(`[data-panel-id="${e}"]`),qt=e=>document.querySelector(`[data-panel-group-id="${e}"]`),Zt=e=>document.querySelector(`[data-resize-handle-id="${e}"]`);exports.PANEL_SNAP_THRESHOLD=zt;exports.Panel=Ot;exports.PanelGroup=$t;exports.PanelGroupContext=et;exports.PanelResizeHandle=Wt;exports.clamp=de;exports.getConstraintInPixels=$;exports.getContainerSize=Ie;exports.getPanelElement=Vt;exports.getPanelGroupElement=qt;exports.getResizeHandleElement=Zt;exports.loadLayout=bt;exports.normalizeSizeConfig=St;exports.saveLayout=Pt;exports.usePanelControls=Dt;exports.usePanelGroup=Xe;exports.useResizablePanels=Ct;
package/dist/index.cjs CHANGED
@@ -1,2 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const p=require("react"),M=require("react/jsx-runtime"),Le=require("tailwind-merge"),mt=require("react-dom"),Ye=p.createContext(null),Ge=()=>{const t=p.useContext(Ye);if(!t)throw new Error("usePanelGroup must be used within a PanelGroup");return t},st=(t,e=0)=>{if(!Number.isFinite(t))return t;const n=10**e,d=t*n,r=Math.floor(d),l=d-r,i=Number.EPSILON*Math.max(1,Math.abs(d));return l<.5-i?r/n:l>.5+i?(r+1)/n:(r%2===0?r:r+1)/n},ot=12,Ze=8,St=8,Pt=8,at=.05,lt=10,bt=.05,Ct=20,yt=.05,Xe=0,ct=6,xe=(t,e)=>e<=0?0:st(t/e*100,ct),Ae=(t,e)=>!t||e<=0?0:t/100*e,Te=(t,e="percentage")=>{if(t!==void 0)return typeof t=="number"?{value:t,unit:e}:t},Je=(t,e)=>t?t.unit==="percentage"?t.value/100*e:t.value:0,J=(t,e,n)=>t?typeof t=="number"?t/100*n:t.unit==="pixels"?t.value:t.value/100*n:e,ce=(t,e,n)=>Math.min(Math.max(t,e),n),$e=t=>{if(!Number.isFinite(t)||t<=0)return Xe;const e=t*at,n=Math.min(ot,lt,e);return Math.max(Xe,n)},dt=(t,e,n,d={})=>{if(Math.abs(e)<=0)return e;const r=d.enforceAutoMinSize??!1,l=t.map((o,a)=>({panel:o,index:a})).filter(({panel:o})=>!o.collapsed&&(o.sizeUnit==="pixels"||o.originalPixelSize!==void 0));if(l.length===0)return e;const i=e>0,f=[...l].sort((o,a)=>{const s=o.panel.pixelAdjustPriority??o.index+1,m=a.panel.pixelAdjustPriority??a.index+1;return s===m?i?a.index-o.index:o.index-a.index:i?m-s:s-m});let u=e;const x=o=>{for(const{index:a}of f){if(Math.abs(u)<=0)break;const s=t[a];if(!s||s.collapsed)continue;const m=Te(s.minSize,"pixels"),y=Te(s.maxSize,"pixels"),b=m?Je(m,n):0,E=y?Je(y,n):n,S=r?J(s.autoMinSize,0,n):0,v=Math.max(b,S),P=s.preferredPixelSize!==void 0?ce(s.preferredPixelSize,v,E):s.size,O=s.collapseFromStart||s.collapseFromEnd;if(u>0){if(Math.abs(s.size)<=0&&(s.percentageSize??0)<=0)continue;const K=Math.max(s.size,P),se=o?Math.min(E,K):E,$=Math.max(0,se-s.size);if($<=0)continue;const _=Math.min($,u);if(_<=0)continue;const I=s.size+_,te=xe(I,n),T=O?I:s.sizeBeforeCollapse,V=O?s.measuredPixelSizeBeforeCollapse??s.measuredPixelSize??I:s.measuredPixelSizeBeforeCollapse;t[a]={...s,size:I,percentageSize:te,sizeBeforeCollapse:T,measuredPixelSizeBeforeCollapse:V,measuredPixelSize:void 0,measuredPercentageSize:void 0},u-=_}else{const X=o?P:v,K=Math.max(0,s.size-X);if(K<=0)continue;const se=Math.min(K,Math.abs(u));if(se<=0)continue;const $=s.size-se,_=xe($,n),I=O?$:s.sizeBeforeCollapse,te=O?s.measuredPixelSizeBeforeCollapse??s.measuredPixelSize??$:s.measuredPixelSizeBeforeCollapse;t[a]={...s,size:$,percentageSize:_,sizeBeforeCollapse:I,measuredPixelSizeBeforeCollapse:te,measuredPixelSize:void 0,measuredPercentageSize:void 0},u+=se}}};return x(!0),(i&&u>0||!i&&u<0)&&x(!1),u},_e=t=>{if(!t)return 0;const e=parseFloat(t);return Number.isFinite(e)?e:0},Ee=(t,e)=>{const n=t.getBoundingClientRect(),d=typeof window<"u"?window.getComputedStyle(t):null,r=d?_e(d.borderLeftWidth)+_e(d.borderRightWidth):0,l=d?_e(d.borderTopWidth)+_e(d.borderBottomWidth):0;if(e==="horizontal"){const x=n.width>0?n.width:t.offsetWidth,o=n.width>0?Math.max(0,n.width-r):t.clientWidth,a=t.offsetWidth>0?t.offsetWidth:t.clientWidth+r;return{inner:o>0?o:Math.max(0,t.clientWidth),outer:x>0?x:Math.max(0,a)}}const i=n.height>0?n.height:t.offsetHeight,f=n.height>0?Math.max(0,n.height-l):t.clientHeight,u=t.offsetHeight>0?t.offsetHeight:t.clientHeight+l;return{inner:f>0?f:Math.max(0,t.clientHeight),outer:i>0?i:Math.max(0,u)}},ut=(t,e)=>{try{localStorage.setItem(`panel-layout-${t}`,JSON.stringify(e))}catch(n){console.warn("Failed to save panel layout:",n)}},ft=t=>{try{const e=localStorage.getItem(`panel-layout-${t}`);return e?JSON.parse(e):null}catch(e){return console.warn("Failed to load panel layout:",e),null}};var He=(t=>(t[t.DEBUG=0]="DEBUG",t[t.INFO=1]="INFO",t[t.WARN=2]="WARN",t[t.ERROR=3]="ERROR",t[t.NONE=4]="NONE",t))(He||{});const be=class be{constructor(e=2,n="[resize-panels]",d=console){this.level=e,this.prefix=n,this.impl=d}static setLevel(e){be.instance.setLevel(e)}setLevel(e){this.level=e}static setImplementation(e){be.instance.setImplementation(e)}setImplementation(e){this.impl=e}static setPrefix(e){be.instance.setPrefix(e)}setPrefix(e){this.prefix=e}formatMessage(e){return typeof e=="string"?[`${this.prefix} ${e}`]:[this.prefix,e]}static debug(e,...n){be.instance.debug(e,...n)}debug(e,...n){this.level<=0&&this.impl.debug(...this.formatMessage(e),...n)}static info(e,...n){be.instance.info(e,...n)}info(e,...n){this.level<=1&&this.impl.info(...this.formatMessage(e),...n)}static warn(e,...n){be.instance.warn(e,...n)}warn(e,...n){this.level<=2&&this.impl.warn(...this.formatMessage(e),...n)}static error(e,...n){be.instance.error(e,...n)}error(e,...n){this.level<=3&&this.impl.error(...this.formatMessage(e),...n)}};be.instance=new be(2,"[resize-panels]");let De=be;const le=new De(He.INFO,"[resize-panels]"),me=t=>t.map(e=>({id:e.id,size:e.size,percentageSize:e.percentageSize,preferredPercentageSize:e.preferredPercentageSize,sizeBeforeCollapse:e.sizeBeforeCollapse,percentageSizeBeforeCollapse:e.percentageSizeBeforeCollapse,preferredPercentageSizeBeforeCollapse:e.preferredPercentageSizeBeforeCollapse,measuredPercentageSize:e.measuredPercentageSize,excludeFromAutoGrowth:e.excludeFromAutoGrowth??!1,collapsed:e.collapsed??!1,collapseFromStart:e.collapseFromStart,collapseFromEnd:e.collapseFromEnd,collapsedByDirection:e.collapsedByDirection??null})),je=t=>t?me([t])[0]:null,Be=t=>t?!!(t.collapseFromStart||t.collapseFromEnd):!1,We=(t,e)=>{if(!Number.isFinite(e)||e<=0)return t;const n=t.map(u=>({...u})),d=[];for(let u=0;u<n.length;u+=1){const x=n[u];if(x.collapsed){n[u]={...x,size:0,percentageSize:0};continue}const o=Math.max(0,J(x.minSize,0,e)),a=Math.max(0,J(x.autoMinSize,0,e)),s=Math.max(o,a),m=Math.max(.001,s),y=J(x.maxSize,e,e),b=Math.max(s,y),E=x.sizeUnit==="pixels"||x.originalPixelSize!==void 0,S=Math.max(0,x.size);let v=s;if(E){const O=x.preferredPixelSize??x.size??x.originalPixelSize??s;v=ce(O,s,b)}else{const O=x.preferredPercentageSize??x.percentageSize??xe(x.size,e),X=Ae(O,e);v=ce(X,s,b)}const P=!E&&(x.excludeFromAutoGrowth??!1)&&S<=m;d.push({index:u,isPixelPanel:E,minSize:s,maxSize:b,preferredSize:v,priority:x.pixelAdjustPriority??u+1,flexPriority:E?void 0:x.flexAdjustPriority,excludeFromGrowth:P})}if(d.length===0)return n;const r=new Map;let l=0;for(const u of d)r.set(u.index,u.minSize),l+=u.minSize;let i=e-l;const f=(u,x)=>{if(x<=0)return 0;const o=r.get(u.index)??u.minSize,a=Math.max(0,u.maxSize-o);if(a<=0)return 0;const s=Math.min(x,a);return r.set(u.index,o+s),s};if(i>0){const u=o=>{for(;i>1e-6;){let s=0;const m=[];for(const E of o){if(!E.isPixelPanel&&E.excludeFromGrowth)continue;const S=r.get(E.index)??E.minSize,v=Math.min(E.preferredSize,E.maxSize),P=Math.max(0,v-S);P>1e-6&&(s+=P,m.push({descriptor:E,capacity:P}))}if(m.length===0||s<=1e-6)break;let y=0;const b=i;for(const E of m){if(i<=1e-6)break;if(!E.descriptor.isPixelPanel&&E.descriptor.excludeFromGrowth)continue;const S=b*E.capacity/s,v=Math.min(E.capacity,S);if(v<=0)continue;const P=f(E.descriptor,v);P>0&&(i-=P,y+=P)}if(y<=1e-6)break}},x=d.filter(o=>o.isPixelPanel);x.sort((o,a)=>a.priority-o.priority);for(const o of x){if(i<=0)break;const a=r.get(o.index)??o.minSize,s=Math.min(o.preferredSize,o.maxSize),m=Math.max(0,s-a);if(m<=0)continue;const y=f(o,Math.min(m,i));y>0&&(i-=y)}if(i>0){const o=d.filter(a=>!a.isPixelPanel);if(o.length>0){const a=o.filter(s=>s.flexPriority!==void 0&&!s.excludeFromGrowth);if(a.length>0){a.sort((s,m)=>(m.flexPriority??0)-(s.flexPriority??0));for(const s of a){if(i<=0)break;if(s.excludeFromGrowth)continue;const m=r.get(s.index)??s.minSize,y=Math.min(s.preferredSize,s.maxSize),b=Math.max(0,y-m);if(b<=0)continue;const E=f(s,Math.min(b,i));E>0&&(i-=E)}}if(i>0){const s=a.length>0?o.filter(m=>m.flexPriority===void 0&&!m.excludeFromGrowth):o.filter(m=>!m.excludeFromGrowth);s.length>0&&u(s)}}}}if(i>0){let u=i;for(;;){let x=0;const o=[];for(const s of d){if(!s.isPixelPanel&&s.excludeFromGrowth)continue;const m=r.get(s.index)??s.minSize,y=s.isPixelPanel?Math.min(s.maxSize,s.preferredSize):s.maxSize,b=Math.max(0,y-m);b>0&&(o.push(s),x+=b)}if(x<=0)break;const a=i;for(const s of o){if(i<=0)break;if(!s.isPixelPanel&&s.excludeFromGrowth)continue;const m=r.get(s.index)??s.minSize,y=s.isPixelPanel?Math.min(s.maxSize,s.preferredSize):s.maxSize,b=Math.max(0,y-m);if(b<=0)continue;const E=a*b/x,S=f(s,Math.min(b,E));S>0&&(i-=S)}if(i<=1e-6||Math.abs(u-i)<=1e-6)break;u=i}i=Math.max(0,i)}if(i<0){let u=i;const x=d.filter(o=>o.isPixelPanel);for(x.sort((o,a)=>o.priority-a.priority);!(i>=0);){let o=!1;for(const a of x){if(i>=0)break;const s=r.get(a.index)??a.minSize,m=ce(a.preferredSize,a.minSize,a.maxSize),y=Math.max(0,s-m);if(y>0&&i<0){const E=Math.min(y,Math.abs(i));r.set(a.index,s-E),i+=E,o=!0;continue}const b=Math.max(0,s-a.minSize);if(b>0&&i<0){const E=Math.min(b,Math.abs(i));r.set(a.index,s-E),i+=E,o=!0}}if(!o||Math.abs(u-i)<=1e-6)break;u=i}}for(const u of d){const x=r.get(u.index)??u.minSize,o=n[u.index],a=Be(o),s=a?x:o.sizeBeforeCollapse,m=a?o.measuredPixelSizeBeforeCollapse??o.measuredPixelSize??x:o.measuredPixelSizeBeforeCollapse,y=e>0?xe(x,e):0;n[u.index]={...o,size:x,percentageSize:y,preferredPercentageSize:o.preferredPercentageSize,preferredPixelSize:u.isPixelPanel?o.preferredPixelSize??x:o.preferredPixelSize,sizeBeforeCollapse:s,measuredPixelSizeBeforeCollapse:m,measuredPixelSize:void 0,measuredPercentageSize:void 0}}return Re(n)},Re=t=>{let e=0;for(const r of t)r.collapsed||(e+=Math.max(r.size,0));if(e<=0){let r=!1;const l=t.map(i=>(i.percentageSize??0)!==0?(r=!0,{...i,percentageSize:0,measuredPercentageSize:i.measuredPercentageSize!==void 0?0:i.measuredPercentageSize}):!i.collapsed&&i.sizeBeforeCollapse!==i.size?(r=!0,{...i,sizeBeforeCollapse:i.size}):i);return r?l:t}let n=!1;const d=t.map(r=>{if(r.collapsed)return(r.percentageSize??0)!==0?(n=!0,{...r,percentageSize:0,measuredPercentageSize:r.measuredPercentageSize!==void 0?0:r.measuredPercentageSize}):r;const l=xe(r.size,e),i=r.measuredPercentageSize,x=(i!==void 0?Math.abs(i-l):1/0)<1e-4&&i!==void 0?i:l,o=st(x,ct),s=Math.abs((r.percentageSize??0)-o)>0||r.percentageSize===void 0,m=r.sizeBeforeCollapse===void 0||r.sizeBeforeCollapse!==r.size,y=Be(r),b=y&&m,E=r.measuredPixelSize??r.size,S=y&&(r.measuredPixelSizeBeforeCollapse===void 0||r.measuredPixelSizeBeforeCollapse!==E);if(!(s||b||S))return r;n=!0;const v=b?r.size:r.sizeBeforeCollapse,P=S?E:r.measuredPixelSizeBeforeCollapse;return{...r,percentageSize:o,sizeBeforeCollapse:v,measuredPixelSizeBeforeCollapse:P,collapsedByDirection:r.collapsed?r.collapsedByDirection??null:null}});return n?d:t},ke=(t,e)=>{if(e<=0)return!1;const n=[];let d=0;for(let o=0;o<t.length;o+=1){const a=t[o];!a||a.collapsed||(n.push(o),d+=a.size)}if(n.length===0)return!1;let r=e-d;if(Math.abs(r)<=0)return!1;let l=!1;const i=o=>{const a=t[o],s=J(a.minSize,0,e),m=J(a.autoMinSize,0,e),y=Math.max(s,m),b=J(a.maxSize,e,e),E=a.sizeUnit==="percentage"&&a.originalPixelSize===void 0;return{index:o,minSize:y,maxSize:b,isFlexible:E}},f=(o,a)=>{if(!Number.isFinite(a)||Math.abs(a)<=0)return;const s=t[o];if(!s)return;const m=Math.max(0,s.size+a);if(Math.abs(m-s.size)<=0)return;const y=xe(m,e),b=Be(s),E=b?m:s.sizeBeforeCollapse,S=b?s.measuredPixelSizeBeforeCollapse??s.measuredPixelSize??m:s.measuredPixelSizeBeforeCollapse;t[o]={...s,size:m,percentageSize:y,sizeBeforeCollapse:E,measuredPixelSizeBeforeCollapse:S,measuredPixelSize:void 0,measuredPercentageSize:void 0},r-=a,l=!0},u=o=>{for(const a of o){if(Math.abs(r)<=0)break;const s=t[a.index];if(!s||s.collapsed)continue;const m=s.size;if(r>0){const y=Math.max(0,a.maxSize-m);if(y<=0)continue;const b=Math.min(y,r);if(b<=0)continue;f(a.index,b)}else{const y=Math.max(0,m-a.minSize);if(y<=0)continue;const b=Math.min(y,Math.abs(r));if(b<=0)continue;f(a.index,-b)}}},x=n.map(o=>i(o)).filter(o=>o.isFlexible);if(x.length>0&&u(x),Math.abs(r)>0){const o=r;r=dt(t,r,e,{enforceAutoMinSize:!0}),Math.abs(r-o)>0&&(l=!0)}return l},Ke=(t,e,n)=>{if(!(t.sizeUnit==="pixels"||t.originalPixelSize!==void 0)||t.pixelAdjustPriority!==void 0)return t;const r=e.filter((i,f)=>f!==n&&(i.sizeUnit==="pixels"||i.originalPixelSize!==void 0)).map(i=>i.pixelAdjustPriority).filter(i=>i!==void 0),l=r.length>0?Math.max(...r)+1:1;return{...t,pixelAdjustPriority:l}},vt=(t,e)=>{switch(e.type){case"REGISTER_PANEL":{le.debug("REGISTER_PANEL",e.panel);const n=t.findIndex(l=>l.id===e.panel.id);if(n>=0){const l=[...t],i=t[n],f={...i,minSize:e.panel.minSize,maxSize:e.panel.maxSize,collapseFromStart:e.panel.collapseFromStart,collapseFromEnd:e.panel.collapseFromEnd,collapsedByDirection:e.panel.collapsedByDirection!==void 0?e.panel.collapsedByDirection:i.collapsedByDirection,sizeUnit:e.panel.sizeUnit,originalPixelSize:e.panel.originalPixelSize,preferredPercentageSize:e.panel.preferredPercentageSize!==void 0?e.panel.preferredPercentageSize:i.preferredPercentageSize,preferredPercentageSizeBeforeCollapse:e.panel.preferredPercentageSizeBeforeCollapse!==void 0?e.panel.preferredPercentageSizeBeforeCollapse:i.preferredPercentageSizeBeforeCollapse,percentageSizeBeforeCollapse:e.panel.percentageSizeBeforeCollapse!==void 0?e.panel.percentageSizeBeforeCollapse:i.percentageSizeBeforeCollapse,pixelAdjustPriority:e.panel.pixelAdjustPriority!==void 0?e.panel.pixelAdjustPriority:i.pixelAdjustPriority,autoMinSize:e.panel.autoMinSize!==void 0?e.panel.autoMinSize:i.autoMinSize,excludeFromAutoGrowth:e.panel.excludeFromAutoGrowth!==void 0?e.panel.excludeFromAutoGrowth:i.excludeFromAutoGrowth},u=Ke(f,t,n);return le.debug("register panel (update)",{panelId:u.id,incoming:je(e.panel),previous:je(i),next:je(u)}),l[n]=u,l}const d={...e.panel},r=Ke(d,t);return le.debug("register panel (insert)",{panelId:r.id,incoming:je(r),previousLength:t.length}),[...t,r]}case"UNREGISTER_PANEL":{le.debug("UNREGISTER_PANEL",e.id);const n=t.filter(r=>r.id!==e.id),d=Re(n);return le.debug("unregister panel",{panelId:e.id,previous:me(t),filtered:me(n),next:me(d)}),d}case"RESIZE_PANELS":{le.debug("RESIZE_PANELS",e.leftId,e.rightId,e.leftSize,e.rightSize);const n=t.findIndex(g=>g.id===e.leftId),d=t.findIndex(g=>g.id===e.rightId);if(n===-1||d===-1)return t;const r=[...t],l=r[n],i=r[d];if(l.collapsed||i.collapsed||e.leftSize===l.size&&e.rightSize===i.size)return t;const f=e.containerSize??t.reduce((g,w)=>g+w.size,0),u=J(l.minSize,0,f),x=J(l.maxSize,f,f),o=J(i.minSize,0,f),a=J(i.maxSize,f,f),s=l.size+i.size,m=t.reduce((g,w)=>w.collapsed?g:g+w.size,0),y=m-s,b=u+o,E=x+a,S=ce(e.leftSize+e.rightSize,b,E);let v=f>0?f-y:S;Number.isFinite(v)||(v=S);const P=ce(Math.max(S,v),b,E),O=g=>({min:Math.max(u,g-a),max:Math.min(x,g-o)}),X=g=>({min:Math.max(o,g-x),max:Math.min(a,g-u)}),K=Math.abs(e.leftSize-l.size),se=Math.abs(e.rightSize-i.size),$=K>=se;let _=l.size,I=i.size;if($){const g=O(P);if(g.min>g.max)return t;const w=ce(e.leftSize,g.min,g.max),z=P-w;if(z<o||z>a)return t;_=w,I=z}else{const g=X(P);if(g.min>g.max)return t;const w=ce(e.rightSize,g.min,g.max),z=P-w;if(z<u||z>x)return t;I=w,_=z}const te=_+I;if(P!==te)return t;const T=m-l.size-i.size+te,V=f>0?f:T,G=V>0?xe(_,V):0,W=V>0?xe(I,V):0,C=l.sizeUnit==="pixels"||l.originalPixelSize!==void 0?_:l.preferredPixelSize,H=i.sizeUnit==="pixels"||i.originalPixelSize!==void 0?I:i.preferredPixelSize,fe=J(l.autoMinSize,0,f),oe=J(i.autoMinSize,0,f),ue=Math.max(.001,fe),ge=Math.max(.001,oe),ie=l.sizeUnit==="percentage"&&l.originalPixelSize===void 0,ae=i.sizeUnit==="percentage"&&i.originalPixelSize===void 0;let de=l.excludeFromAutoGrowth,pe=i.excludeFromAutoGrowth;ie&&(_<=ue?de=!0:_>ue&&(de=!1)),ae&&(I<=ge?pe=!0:I>ge&&(pe=!1));const Se=Be(l),h=Be(i);return r[n]={...l,size:_,percentageSize:G,preferredPercentageSize:G>0?G:l.preferredPercentageSize,preferredPixelSize:C,sizeBeforeCollapse:Se?_:l.sizeBeforeCollapse,measuredPixelSize:void 0,measuredPercentageSize:void 0,excludeFromAutoGrowth:de},r[d]={...i,size:I,percentageSize:W,preferredPercentageSize:W>0?W:i.preferredPercentageSize,preferredPixelSize:H,sizeBeforeCollapse:h?I:i.sizeBeforeCollapse,measuredPixelSize:void 0,measuredPercentageSize:void 0,excludeFromAutoGrowth:pe},f>0&&ke(r,f)?Re(r):r}case"SET_PANELS":{le.debug("SET_PANELS",e.panels);const n=e.panels.map(u=>{const x=u.sizeUnit==="pixels"||u.originalPixelSize!==void 0,o=u.preferredPercentageSize!==void 0?u.preferredPercentageSize:u.percentageSize,a=u.preferredPixelSize!==void 0?u.preferredPixelSize:x?u.size:u.preferredPixelSize;return{...u,preferredPercentageSize:o,preferredPixelSize:a}}),d=me(t),r=me(n),l=Re(n),i=me(l);let f=d.length===i.length;if(f)for(let u=0;u<i.length;u+=1){const x=i[u],o=d[u];if(!o){f=!1;break}if(!(o.id===x.id&&o.size===x.size&&o.percentageSize===x.percentageSize&&o.sizeBeforeCollapse===x.sizeBeforeCollapse&&o.measuredPercentageSize===x.measuredPercentageSize&&o.collapsed===x.collapsed)){f=!1;break}}return f?(le.debug("set panels skipped (no diff)",{previous:d,incoming:r,next:i,previousLength:d.length,incomingLength:r.length}),t):(le.debug("set panels",{previous:d,incoming:r,next:i,previousLength:d.length,incomingLength:r.length}),l)}case"CONTAINER_RESIZED":{if(le.debug("CONTAINER_RESIZED",e.containerSize),e.containerSize<=0)return le.debug("container resized skipped (non-positive size)",{containerSize:e.containerSize,panels:me(t)}),t;le.debug("container resized (before)",{containerSize:e.containerSize,panels:me(t)});const n=We(t,e.containerSize);if(le.debug("container resized (after recalc)",{containerSize:e.containerSize,panels:me(n)}),e.containerSize>0&&ke(n,e.containerSize)){const d=Re(n);return le.debug("container resized (after reconcile)",{containerSize:e.containerSize,panels:me(d)}),d}return le.debug("container resized (final)",{containerSize:e.containerSize,panels:me(n)}),n}case"COLLAPSE_PANEL":{le.debug("COLLAPSE_PANEL",e.id);const n=t.findIndex(s=>s.id===e.id);if(n===-1)return t;const d=t[n],r=e.from==="start"?d.collapseFromStart:d.collapseFromEnd;if(!(Be(d)&&r)||d.collapsed)return t;const i=d.size,f=d.measuredPixelSize??i,u=d.percentageSize??d.preferredPercentageSize??0,x={...d,collapsed:!0,collapsedByDirection:e.from,sizeBeforeCollapse:i,percentageSizeBeforeCollapse:u,preferredPercentageSizeBeforeCollapse:d.preferredPercentageSize??u,preferredPixelSizeBeforeCollapse:d.preferredPixelSize??i,measuredPixelSizeBeforeCollapse:f,size:0,percentageSize:0,preferredPercentageSize:d.preferredPercentageSize,measuredPixelSize:d.measuredPixelSize!==void 0?0:d.measuredPixelSize,measuredPercentageSize:d.measuredPercentageSize!==void 0?0:d.measuredPercentageSize},o=[...t];o[n]=x;const a=We(o,e.containerSize);return e.containerSize>0&&ke(a,e.containerSize)?Re(a):a}case"EXPAND_PANEL":{le.debug("EXPAND_PANEL",e.id,e.targetSize);const n=t.findIndex(P=>P.id===e.id);if(n===-1)return t;const d=e.containerSize,r=t[n],l=e.from==="start"?r.collapseFromStart:r.collapseFromEnd;if(!(Be(r)&&l&&r.collapsed)||r.collapsedByDirection&&r.collapsedByDirection!==e.from)return t;const f=[e.targetSize,r.sizeBeforeCollapse,r.measuredPixelSizeBeforeCollapse,r.preferredPixelSizeBeforeCollapse,r.originalPixelSize].find(P=>P!==void 0)??0,u=J(r.minSize,0,d),x=J(r.maxSize,d,d),o=ce(f,u,x),a=xe(o,d),s=r.measuredPixelSizeBeforeCollapse??o,m=xe(s,d),y=r.preferredPercentageSizeBeforeCollapse??r.percentageSizeBeforeCollapse??a,b=r.preferredPixelSizeBeforeCollapse??r.preferredPixelSize??o,E={...r,collapsed:!1,collapsedByDirection:null,size:o,percentageSize:a,preferredPercentageSize:y,preferredPixelSize:b,sizeBeforeCollapse:o,percentageSizeBeforeCollapse:void 0,preferredPercentageSizeBeforeCollapse:void 0,preferredPixelSizeBeforeCollapse:void 0,measuredPixelSize:o,measuredPixelSizeBeforeCollapse:s,measuredPercentageSize:m},S=[...t];S[n]=E;const v=We(S,d);return d>0&&ke(v,d)?Re(v):v}default:return t}},Ne=new De(He.INFO,"[resize-panels]"),pt=({direction:t,style:e,onLayout:n,autoSaveId:d,showDebugInfo:r=!1})=>{const[l,i]=p.useReducer(vt,[]),[f,u]=p.useState({width:0,height:0}),[x,o]=p.useState(!1),[a,s]=p.useState(!1),[m,y]=p.useState(null),[b,E]=p.useState({}),[S,v]=p.useState({}),P=p.useRef(null),O=p.useRef(n),X=p.useRef(!1),K=p.useRef(0),se=p.useRef(f),$=p.useRef(f),_=p.useRef(x),I=p.useRef(m?.reason??null),te=p.useRef({}),T=p.useRef(null),V=p.useRef(null),G=p.useCallback(h=>h.map(g=>({...g})),[]);p.useEffect(()=>{$.current=f},[f]),p.useEffect(()=>{_.current=x},[x]),p.useEffect(()=>{I.current=m?.reason??null},[m?.reason]),p.useEffect(()=>{if(m)return;const h=t==="horizontal"?f.width:f.height;!Number.isFinite(h)||h<=4||l.length!==0&&(T.current=G(l))},[m,l,t,f.width,f.height,G]),p.useEffect(()=>{const h=V.current;if(m){V.current=m;return}if(h&&!m&&T.current){V.current=null;const g=G(T.current);i({type:"SET_PANELS",panels:g});return}V.current=m},[m,G]),p.useLayoutEffect(()=>{if(!P.current)return;const h=new ResizeObserver(g=>{for(const w of g){const z=w.target,B=z?Ee(z,"horizontal"):null,F=z?Ee(z,"vertical"):null,j=B?B.inner:0,Y=F?F.inner:0,A=w.contentRect.width,L=w.contentRect.height,k=j>0?j:A,R=Y>0?Y:L;u(D=>(!x&&k>0&&R>0&&o(!0),D.width===k&&D.height===R?D:{width:k,height:R}))}});return h.observe(P.current),()=>h.disconnect()},[x]),p.useLayoutEffect(()=>{const h=se.current,g=f,w=t==="horizontal"?Math.abs(h.width-g.width)>0:Math.abs(h.height-g.height)>0;if(a&&w){const z=t==="horizontal"?g.width:g.height;i({type:"CONTAINER_RESIZED",containerSize:z,direction:t})}se.current=g},[f,a,t]);const W=p.useCallback(()=>{Ne.debug("panels[0]?.id",l[0]?.id);const h=l.some(c=>{if(c.collapsed||c.sizeUnit!=="percentage")return!1;const U=c.collapseFromStart||c.collapseFromEnd?c.sizeBeforeCollapse??c.measuredPixelSizeBeforeCollapse??c.originalPixelSize??c.measuredPixelSize??0:c.measuredPixelSize??c.originalPixelSize??c.size,Z=c.percentageSize!==void 0&&c.percentageSize>0;return c.size<=0&&(U>0||Z)}),g=t==="horizontal"?f.width:f.height,w=g>0;if(m||!w||!(l.length>0&&(l.length!==K.current||!a||h)))return;const F=l.filter(c=>!c.collapsed&&(c.originalPixelSize!==void 0||c.sizeUnit==="pixels")).reduce((c,N)=>{const U=N.preferredPixelSize??N.originalPixelSize??N.size;return c+Math.max(0,U??0)},0),j=l.filter(c=>c.sizeUnit==="percentage"&&!c.collapsed),Y=j.map(c=>c.id),A=j.map(c=>{const N=c.preferredPercentageSize??c.percentageSize;return N!==void 0&&N>0?Ae(N,g):c.size>0?c.size:0}),L=A.reduce((c,N)=>c+N,0),k=g-F,R=Math.max(0,k),D=R>0,Q=l.map(c=>{if(c.collapsed){const N=c.sizeBeforeCollapse??c.measuredPixelSizeBeforeCollapse??c.originalPixelSize??(c.sizeUnit==="pixels"?c.size:void 0),U=c.sizeUnit==="percentage"&&c.percentageSize!==void 0?Ae(c.percentageSize,g):void 0,Z=N??U??0,ee=c.measuredPixelSizeBeforeCollapse??c.measuredPixelSize??Z;return{...c,size:0,percentageSize:0,preferredPercentageSize:c.preferredPercentageSize,sizeBeforeCollapse:Z,percentageSizeBeforeCollapse:c.percentageSizeBeforeCollapse??c.percentageSize??c.preferredPercentageSize??0,preferredPercentageSizeBeforeCollapse:c.preferredPercentageSizeBeforeCollapse??c.preferredPercentageSize??c.percentageSize??void 0,preferredPixelSizeBeforeCollapse:c.preferredPixelSizeBeforeCollapse??c.preferredPixelSize??Z,measuredPixelSizeBeforeCollapse:ee}}if(c.sizeUnit==="pixels"||c.originalPixelSize!==void 0){const N=c.size,U=g>0?xe(N,g):0,Z={...c,size:N,percentageSize:U,preferredPixelSize:c.preferredPixelSize??c.originalPixelSize??N,preferredPercentageSize:c.preferredPercentageSize!==void 0?c.preferredPercentageSize:U>0?U:void 0};if(c.collapseFromStart||c.collapseFromEnd){const ee=c.sizeBeforeCollapse??N,ze=c.measuredPixelSizeBeforeCollapse??c.measuredPixelSize??ee;Z.sizeBeforeCollapse=ee,Z.measuredPixelSizeBeforeCollapse=ze,Z.preferredPixelSizeBeforeCollapse=c.preferredPixelSizeBeforeCollapse??c.preferredPixelSize??ee}return Z}if(c.sizeUnit==="percentage"){const N=Y.indexOf(c.id),U=N!==-1?A[N]:0,Z=J(c.minSize,0,g),ee=J(c.maxSize,g,g),ze=Math.max(Z,c.sizeBeforeCollapse??0,c.measuredPixelSizeBeforeCollapse??0,c.measuredPixelSize??0,c.originalPixelSize??0,c.size>0?c.size:0,c.percentageSize!==void 0?Ae(c.percentageSize,g):0,1),ye=U>0?U:ze;let he;if(!D)he=Z;else if(N!==-1&&L>0){const Pe=ye/L,we=R*Pe;he=ce(we,Z,ee)}else{const Pe=c.percentageSize!==void 0?Ae(c.percentageSize,g):c.size,we=Pe>0?Pe:ye;he=ce(we,Z,ee)}const ve=g>0?xe(he,g):0,Me={...c,size:he,percentageSize:ve,preferredPercentageSize:c.preferredPercentageSize!==void 0?c.preferredPercentageSize:ve>0?ve:void 0};if(c.collapseFromStart||c.collapseFromEnd){const Pe=c.sizeBeforeCollapse??he,we=c.measuredPixelSizeBeforeCollapse??c.measuredPixelSize??Pe;Me.sizeBeforeCollapse=Pe,Me.measuredPixelSizeBeforeCollapse=we,Me.preferredPixelSizeBeforeCollapse=c.preferredPixelSizeBeforeCollapse??c.preferredPixelSize??Pe}return Me}return c}),re=[];for(let c=0;c<Q.length;c+=1){const N=Q[c];N.sizeUnit==="percentage"&&!N.collapsed&&re.push(c)}const q=re.reduce((c,N)=>c+Q[N].size,0),ne=k-q;Math.abs(ne)>0&&dt(Q,ne,g,{enforceAutoMinSize:!0}),i({type:"SET_PANELS",panels:Q}),K.current=l.length,s(!0)},[l,t,f.width,f.height,a,m]);p.useEffect(()=>{const h=t==="horizontal"?f.width:f.height,g=h>0,w=g&&l.length>0,z=w?l.reduce((L,k)=>{if(k.collapsed)return L;const R=J(k.minSize,0,h);return L+Math.max(0,R)},0):null,B=w?l.reduce((L,k)=>{if(k.collapsed)return L;const R=J(k.maxSize,h,h);return L+Math.max(0,R)},0):null,F=z??m?.totalMinimumSize??null,j=B??m?.totalMaximumSize??null;if(!g){m&&y(L=>!L||L.availableContainerSize===h?L:{reason:L.reason,totalMinimumSize:null,totalMaximumSize:null,availableContainerSize:h});return}const Y=F!==null&&F-h>Number.EPSILON,A=j!==null&&h-j>Number.EPSILON;if(Y||A){const k={reason:Y?"minimum-exceeded":"maximum-insufficient",totalMinimumSize:F,totalMaximumSize:j,availableContainerSize:h};y(R=>R&&R.reason===k.reason&&Math.abs((R.totalMinimumSize??0)-(k.totalMinimumSize??0))<=Number.EPSILON&&Math.abs((R.totalMaximumSize??0)-(k.totalMaximumSize??0))<=Number.EPSILON&&Math.abs(R.availableContainerSize-k.availableContainerSize)<=Number.EPSILON?R:k);return}if(m){const L=m.reason==="minimum-exceeded",k=m.reason==="maximum-insufficient";(!L||F!==null)&&(!k||j!==null)&&!Y&&!A&&y(q=>q&&null)}},[l,t,f.width,f.height,m]),p.useEffect(()=>{W()},[W]),p.useEffect(()=>{O.current=n},[n]);const C=p.useMemo(()=>l.map(h=>h.size),[l]);p.useLayoutEffect(()=>{C.length>0&&O.current&&O.current(C)},[C]),p.useEffect(()=>{if(d&&C.length>0){const h=setTimeout(()=>{ut(d,C)},200);return()=>clearTimeout(h)}},[d,C]),p.useEffect(()=>{if(!d||l.length===0||X.current)return;const h=t==="horizontal"?f.width:f.height;if(h<=0)return;const g=ft(d);if(g&&g.length===l.length){const w=l.map((z,B)=>{const F=J(z.minSize,0,h),j=J(z.maxSize,h,h),Y=ce(g[B],F,j),A=xe(Y,h),L=z.sizeUnit==="pixels"||z.originalPixelSize!==void 0?Y:z.preferredPixelSize;return{...z,size:Y,percentageSize:A,preferredPercentageSize:A>0?A:z.preferredPercentageSize,preferredPixelSize:L}});i({type:"SET_PANELS",panels:w}),X.current=!0}},[d,l,f.width,f.height,t]);const H=p.useCallback(h=>{const g=$.current,w=te.current,z=JSON.stringify({id:h.id,size:h.size??null,percentageSize:h.percentageSize??null,preferredPercentageSize:h.preferredPercentageSize??null,preferredPixelSize:h.preferredPixelSize??null,sizeUnit:h.sizeUnit,originalPixelSize:h.originalPixelSize??null,minSize:h.minSize??null,maxSize:h.maxSize??null,collapseFromStart:h.collapseFromStart,collapseFromEnd:h.collapseFromEnd,collapsed:h.collapsed??!1,collapsedByDirection:h.collapsedByDirection??null,sizeBeforeCollapse:h.sizeBeforeCollapse??null,percentageSizeBeforeCollapse:h.percentageSizeBeforeCollapse??null,preferredPercentageSizeBeforeCollapse:h.preferredPercentageSizeBeforeCollapse??null,preferredPixelSizeBeforeCollapse:h.preferredPixelSizeBeforeCollapse??null,pixelAdjustPriority:h.pixelAdjustPriority??null});if(w[h.id]===z){Ne.debug("useResizablePanels.registerPanel skipped",{panelId:h.id,reason:"duplicate-registration"});return}w[h.id]=z,Ne.debug("useResizablePanels.registerPanel",{panelId:h.id,containerReady:_.current,violationReason:I.current,containerSize:{width:g.width,height:g.height}}),i({type:"REGISTER_PANEL",panel:h})},[]),fe=p.useCallback(h=>{const g=$.current;Ne.debug("useResizablePanels.unregisterPanel",{panelId:h,containerReady:_.current,violationReason:I.current,containerSize:{width:g.width,height:g.height}}),i({type:"UNREGISTER_PANEL",id:h}),delete te.current[h],E(w=>{if(!(h in w))return w;const z={...w};return delete z[h],z})},[]),oe=p.useCallback((h,g,w,z)=>{const B=t==="horizontal"?f.width:f.height,F=l.find(q=>q.id===h),j=l.find(q=>q.id===g);if(!(F&&j)){i({type:"RESIZE_PANELS",leftId:h,rightId:g,leftSize:w,rightSize:z,containerSize:B});return}if(F.collapsed||j.collapsed)return;const Y=J(F.minSize,0,B),A=J(F.maxSize,B,B),L=J(j.minSize,0,B),k=J(j.maxSize,B,B);let R=ce(w,Y,A),D=ce(z,L,k);const Q=R+D,re=w+z;if(Q!==re){const q=re-Q;if(q>0){const ne=A-R,c=k-D,N=ne+c;if(N>0){const U=Math.min(q*(ne/N),ne),Z=Math.min(q-U,c);R+=U,D+=Z}}else if(q<0){const ne=Math.abs(q),c=R-Y,N=D-L,U=c+N;if(U>0){const Z=Math.min(ne*(c/U),c),ee=Math.min(ne-Z,N);R-=Z,D-=ee}}}R=ce(R,Y,A),D=ce(D,L,k),R+D!==re&&Ne.error("Total size after constraints should be close to the original total size.",{constrainedLeftSize:R,constrainedRightSize:D,originalTotalSize:re}),i({type:"RESIZE_PANELS",leftId:h,rightId:g,leftSize:R,rightSize:D,containerSize:B})},[t,f.width,f.height,l]),ue=p.useCallback((h,g)=>{const w=t==="horizontal"?f.width:f.height;i({type:"COLLAPSE_PANEL",id:h,from:g,containerSize:w})},[t,f.width,f.height]),ge=p.useCallback((h,g,w)=>{const z=t==="horizontal"?f.width:f.height;i({type:"EXPAND_PANEL",id:h,from:g,containerSize:z,targetSize:w})},[t,f.width,f.height]),ie=p.useCallback(h=>l.find(g=>g.id===h),[l]),ae=p.useCallback((h,g)=>{E(w=>{if(g===null){if(!(h in w))return w;const B={...w};return delete B[h],B}const z=w[h];return z&&z.pixelSize===g.pixelSize&&z.percentageSize===g.percentageSize?w:{...w,[h]:g}})},[]),de=p.useCallback((h,g)=>{v(w=>{if(g===null){if(!(h in w))return w;const B={...w};return delete B[h],B}const z=w[h];return z&&Math.abs(z.thickness-g.thickness)<=.25&&z.visible===g.visible&&z.direction===g.direction&&z.startPanelId===g.startPanelId&&z.endPanelId===g.endPanelId?w:{...w,[h]:g}})},[]),pe=p.useMemo(()=>({direction:t,panels:l,containerSize:f,isContainerReady:x,showDebugInfo:r,registerPanel:H,unregisterPanel:fe,resizePanels:oe,collapsePanel:ue,expandPanel:ge,getPanel:ie,reportPanelMeasurement:ae,panelMeasurements:b,reportHandleMeasurement:de,handleMeasurements:S,layoutConstraintViolation:m}),[t,l,f,x,r,H,fe,oe,ue,ge,ie,ae,b,de,S,m]),Se=p.useMemo(()=>({display:"flex",flexDirection:t==="horizontal"?"row":"column",alignItems:"stretch",width:"100%",height:"100%",minWidth:"0px",minHeight:"0px",position:"relative",overflow:"hidden",...e}),[t,e]);return{groupRef:P,contextValue:pe,groupStyle:Se}},Mt=t=>{const{getPanel:e,collapsePanel:n,expandPanel:d}=Ge(),r=e(t),l=p.useCallback(u=>{n(t,u)},[n,t]),i=p.useCallback((u,x)=>{d(t,u,x)},[d,t]),f=p.useCallback((u,x)=>{r?.collapsed?i(u,x):l(u)},[r?.collapsed,l,i]);return p.useMemo(()=>({panel:r,isCollapsed:r?.collapsed??!1,canCollapseFromStart:r?.collapseFromStart??!1,canCollapseFromEnd:r?.collapseFromEnd??!1,collapse:l,expand:i,toggle:f}),[r,l,i,f])},Et=({panel:t,measuredPixelSize:e,measuredPercentageSize:n,containerAxisSize:d,containerLabel:r})=>{const l=t?.size,i=typeof l=="number"&&Number.isFinite(l)?`${l.toFixed(3)}px`:"-",f=t?.percentageSize!==void 0?`${t.percentageSize.toFixed(3)}%`:"-",u=Number.isFinite(e)?`${e.toFixed(3)}px`:"-",x=Number.isFinite(n)?`${n.toFixed(3)}%`:"-",o=Number.isFinite(d)?`${d.toFixed(3)}px`:"-",a=`${i} / ${f}`,s=`${u} / ${x}`,m=t?.sizeUnit==="pixels"?"Fixed":"Flexible",y=[m,`${r}: ${o}`,`size (state): ${a}`,`size (measured): ${s}`];return{stateValueDisplay:a,measuredValueDisplay:s,containerDisplay:o,headlineLabel:m,titleText:y.join(`
2
- `)}},wt=p.memo(({panel:t,measuredPixelSize:e,measuredPercentageSize:n,containerAxisSize:d,direction:r})=>{const l=r==="horizontal"?"container width":"container height",{stateValueDisplay:i,measuredValueDisplay:f,containerDisplay:u,headlineLabel:x,titleText:o}=p.useMemo(()=>Et({panel:t,measuredPixelSize:e,measuredPercentageSize:n,containerAxisSize:d,containerLabel:l}),[t,e,n,d,l]),a={position:"absolute",top:"2px",right:"4px",backgroundColor:"rgba(30, 41, 59, 0.6)",color:"#fff",padding:"4px 8px",borderRadius:"6px",fontSize:"11px",fontFamily:"monospace",pointerEvents:"auto",zIndex:10,boxShadow:"0 2px 4px rgba(0,0,0,0.3)",border:"1px solid rgba(255,255,255,0.1)",maxWidth:"calc(100% - 12px)",minWidth:"60px",width:"fit-content",overflow:"hidden"},s={display:"flex",flexDirection:"column",gap:"1px",minWidth:"0",width:"100%"},m={display:"flex",justifyContent:"flex-start",alignItems:"center",gap:"6px",fontSize:"10px",color:"#ccc",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",minWidth:"0",width:"100%"},y={display:"flex",justifyContent:"space-between",alignItems:"center",gap:"6px",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",minWidth:"0",width:"100%"},b={marginLeft:"auto",fontVariantNumeric:"tabular-nums",whiteSpace:"nowrap"};return M.jsx("div",{style:a,title:o,children:M.jsxs("div",{style:s,children:[M.jsx("div",{style:m,children:M.jsx("span",{children:x})}),M.jsxs("div",{style:y,children:[M.jsx("span",{children:l}),M.jsx("span",{style:b,children:u})]}),M.jsxs("div",{style:y,children:[M.jsx("span",{children:"size (state)"}),M.jsx("span",{style:b,children:i})]}),M.jsxs("div",{style:y,children:[M.jsx("span",{children:"size (measured)"}),M.jsx("span",{style:b,children:f})]})]})})}),Ve=new De(He.INFO,"[resize-panels]"),Rt={both:{collapseFromStart:!0,collapseFromEnd:!0},start:{collapseFromStart:!0,collapseFromEnd:!1},end:{collapseFromStart:!1,collapseFromEnd:!0}},Bt=t=>{if(!t)return{collapseFromStart:!1,collapseFromEnd:!1};const e=Rt[t.from];if(!e)throw new Error("Invalid collapsible configuration: unsupported 'from' value");return e},Qe=({ref:t,setState:e,panelIdRef:n,label:d})=>r=>{if(!Number.isFinite(r))return;const l=r<0?0:r;t.current!==l&&(t.current=l,Ve.debug(`commit ${d}`,{panelId:n.current,[d]:l}),e(l))},It=p.memo(({id:t,defaultSize:e={value:50,unit:"percentage"},minSize:n,maxSize:d,autoMinSize:r,className:l,style:i,children:f,order:u=0,collapsible:x,defaultCollapsed:o=!1,pixelAdjustPriority:a,flexAdjustPriority:s,contentOverflow:m="auto"})=>{const{direction:y,registerPanel:b,unregisterPanel:E,getPanel:S,showDebugInfo:v,isContainerReady:P,reportPanelMeasurement:O,containerSize:X}=Ge(),K=p.useRef(null),se=p.useId(),$=p.useRef(t||`panel-${se}`),_=p.useMemo(()=>Bt(x),[x]),I=_.collapseFromStart||_.collapseFromEnd,te=p.useMemo(()=>I?_.collapseFromStart?"start":_.collapseFromEnd?"end":null:null,[I,_.collapseFromStart,_.collapseFromEnd]),T=I&&o,V=p.useMemo(()=>Te(e),[e]),G=V?.unit==="pixels",W=G?void 0:V?.value,C=S($.current),H=!!C?.collapsed,fe=(C?.size??0)<=0,oe=H||fe,[ue,ge]=p.useState(()=>G&&V?V.value:C?.size!==void 0?C.size:0),[ie,ae]=p.useState(()=>!G&&V?V.value:C?.percentageSize!==void 0?C.percentageSize:0),de=p.useRef(ie);de.current=ie;const pe=p.useRef(ue);pe.current=ue;const Se=p.useMemo(()=>Qe({ref:pe,setState:ge,panelIdRef:$,label:"pixel"}),[]),h=p.useMemo(()=>Qe({ref:de,setState:ae,panelIdRef:$,label:"percentage"}),[]),g=p.useCallback(()=>{pe.current!==0&&(pe.current=0,ge(0)),de.current!==0&&(de.current=0,ae(0))},[]);p.useEffect(()=>{if(!P)return;let R=0;if(G&&V){let U=V.value;n&&typeof n=="object"&&n.unit==="pixels"&&(U=Math.max(U,n.value)),d&&typeof d=="object"&&d.unit==="pixels"&&(U=Math.min(U,d.value)),R=U}const D=T,Q=D?te:null;o&&!I&&Ve.warn("Panel defaultCollapsed is ignored because collapsible configuration is not provided.");const re=I&&D&&G?R:void 0,q=I?W:void 0,ne=G?R:void 0,c={id:$.current,size:D?0:R,percentageSize:D?0:W,preferredPercentageSize:W,preferredPixelSize:ne,sizeUnit:V?.unit||"percentage",originalPixelSize:G?R:void 0,minSize:n,maxSize:d,collapseFromStart:_.collapseFromStart,collapseFromEnd:_.collapseFromEnd,collapsedByDirection:Q,collapsed:D,sizeBeforeCollapse:re,percentageSizeBeforeCollapse:q,preferredPercentageSizeBeforeCollapse:I?W:void 0,preferredPixelSizeBeforeCollapse:I?ne:void 0,pixelAdjustPriority:a,flexAdjustPriority:s,autoMinSize:r};return b(c),()=>{E($.current),O($.current,null)}},[r,_.collapseFromEnd,_.collapseFromStart,o,V,s,I,P,G,d,n,a,te,W,b,O,T,E]);const w=C?.size??0;p.useEffect(()=>{const R=K.current;if(!R)return;const D=()=>{if(!C)return;const c=R.parentElement;if(!c)return;const N=R.getBoundingClientRect(),U=Ee(c,"horizontal"),Z=Ee(c,"vertical"),ee=y==="horizontal"?N.width:N.height,ze=y==="horizontal"?U.inner:Z.inner,ye=$e(ze);if(oe){g();return}const he=C.size??0,ve=Math.max(2,ye*.5);if(he>ye&&ee<ve){Ve.debug("skip noisy measurement",{panelId:$.current,expectedPanelSize:he,measured:ee,noiseThreshold:ve});return}if(ee>0){Se(ee),ze>0&&h(ee/ze*100);return}C.size!==void 0&&Se(C.size),C.percentageSize!==void 0?h(C.percentageSize):C.sizeUnit==="pixels"&&C.size!==void 0&&ze>0&&h(C.size/ze*100)},Q=new ResizeObserver(()=>{D()});Q.observe(R),D();const re=[],q=new MutationObserver(()=>{(()=>{if(!K.current)return!1;const N=K.current.getBoundingClientRect();return(y==="horizontal"?N.width:N.height)!==pe.current})()&&setTimeout(D,0)}),ne=R.parentElement;return ne&&q.observe(ne,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["style","class"]}),()=>{Q.disconnect(),q.disconnect();for(const c of re)clearTimeout(c)}},[h,Se,C,y,oe,g]);const z=C?.size,B=C?.percentageSize,F=C?.sizeUnit;p.useEffect(()=>{if(C){if(oe){g();return}if(z!==void 0&&Se(z),B!==void 0)h(B);else if(F==="pixels"&&z!==void 0){const R=K.current,D=R?.parentElement;if(R&&D){const{width:Q,height:re}=R.getBoundingClientRect(),q=D.clientWidth,ne=D.clientHeight,c=y==="horizontal"?Q:re,N=y==="horizontal"?q:ne;if(c>0&&N>0){const U=c/N*100;h(U)}}}}},[h,Se,C,B,z,F,y,oe,g]),p.useEffect(()=>{O($.current,{pixelSize:ue,percentageSize:ie})},[O,ue,ie]);const j=()=>oe?"0px":C?.originalPixelSize!==void 0?`${w}px`:C?.percentageSize!==void 0?`${C.percentageSize}%`:`${w}px`,Y=C?.sizeUnit==="percentage"&&!C?.collapsed?1:0,A={flexBasis:j(),flexGrow:0,flexShrink:Y,overflow:"hidden",position:"relative",boxSizing:"border-box",minHeight:"0px",minWidth:"0px",...i};y==="horizontal"?(A.height="100%",A.minWidth=0):(A.width="100%",A.minHeight=0),oe&&(y==="horizontal"?(A.width="0px",A.minWidth="0px"):(A.height="0px",A.minHeight="0px"),A.flexGrow=0,A.flexShrink=0,A.pointerEvents="none",A.visibility="hidden",H&&(A.display="none"));const L=y==="horizontal"?X.width:X.height,k=p.useMemo(()=>({position:"absolute",inset:"0px",overflow:m,display:"flex",flexDirection:"column",width:"100%",height:"100%",minWidth:"0px",minHeight:"0px"}),[m]);return M.jsxs("div",{ref:K,className:Le.twMerge("panel",l),style:A,"data-panel-id":$.current,"data-panel-size":w,"data-panel-size-unit":C?.sizeUnit||"percentage","data-panel-pixel-size":C?.sizeUnit==="pixels"?C?.originalPixelSize:null,"data-panel-order":u,"data-panel-collapsible":I,"data-panel-collapse-start":_.collapseFromStart,"data-panel-collapse-end":_.collapseFromEnd,"data-panel-collapsed":C?.collapsed,"aria-hidden":oe,children:[M.jsx("div",{style:k,children:f}),v&&M.jsx(wt,{panel:C,measuredPixelSize:ue,measuredPercentageSize:ie,containerAxisSize:L,direction:y})]})}),Ft=t=>JSON.stringify(t.map(e=>({id:e.id,size:e.size,percentageSize:e.percentageSize??null,preferredPercentageSize:e.preferredPercentageSize??null,preferredPixelSize:e.preferredPixelSize??null,sizeUnit:e.sizeUnit,originalPixelSize:e.originalPixelSize??null,minSize:e.minSize??null,maxSize:e.maxSize??null,autoMinSize:e.autoMinSize??null,collapseFromStart:e.collapseFromStart,collapseFromEnd:e.collapseFromEnd,collapsedByDirection:e.collapsedByDirection??null,collapsed:e.collapsed??!1,sizeBeforeCollapse:e.sizeBeforeCollapse??null,preferredPercentageSizeBeforeCollapse:e.preferredPercentageSizeBeforeCollapse??null,preferredPixelSizeBeforeCollapse:e.preferredPixelSizeBeforeCollapse??null,measuredPixelSizeBeforeCollapse:e.measuredPixelSizeBeforeCollapse??null,pixelAdjustPriority:e.pixelAdjustPriority??null,flexAdjustPriority:e.flexAdjustPriority??null,measuredPixelSize:e.measuredPixelSize??null,measuredPercentageSize:e.measuredPercentageSize??null}))),Nt=t=>JSON.stringify(t.map(e=>({id:e.id,thickness:e.thickness,visible:e.visible,direction:e.direction,startPanelId:e.startPanelId??null,endPanelId:e.endPanelId??null}))),At=()=>{const t=new Set,e=new Map,n=new Set;let d=null,r=0,l=!0,i=[],f={ownerId:null,groups:i};const u=()=>{for(const S of t)S()},x=()=>{l=!0,u()},o=()=>{const S=d;if(S&&n.has(S))return!1;d=null;const v=n.values().next();return v.done||(d=v.value),S!==d};return{subscribe:S=>(t.add(S),()=>{t.delete(S)}),getSnapshot:()=>(o()&&(l=!0),l&&(i=Array.from(e.values()).sort((v,P)=>v.index-P.index).map(({serializedPanels:v,serializedHandles:P,...O})=>O),f={ownerId:d,groups:i},l=!1),f),getOwnerId:()=>(o()&&(l=!0),d),enableGroup:S=>{const v=n.size;n.add(S),n.size!==v&&o()&&x()},disableGroup:S=>{n.delete(S)&&o()&&x()},updateGroup:(S,v)=>{const P=e.get(S),O=P?.index??r++,X=Ft(v.panels),K=Nt(v.handles),se=P?.displayName!==v.displayName,$=P?.direction!==v.direction,_=P?P.containerSize.width!==v.containerSize.width||P.containerSize.height!==v.containerSize.height:!0;let I=P?.serializedPanels!==X;if(!I&&P)if(P.panels.length!==v.panels.length)I=!0;else for(let W=0;W<v.panels.length;W+=1){const C=P.panels[W],H=v.panels[W];if(!(C&&H)){I=!0;break}if(C.id!==H.id||C.size!==H.size||C.percentageSize!==H.percentageSize||C.collapsed!==H.collapsed||C.measuredPixelSize!==H.measuredPixelSize||C.measuredPercentageSize!==H.measuredPercentageSize){I=!0;break}}let te=P?.serializedHandles!==K;if(!te&&P)if(P.handles.length!==v.handles.length)te=!0;else for(let W=0;W<v.handles.length;W+=1){const C=P.handles[W],H=v.handles[W];if(!(C&&H)){te=!0;break}if(C.id!==H.id||C.thickness!==H.thickness||C.visible!==H.visible||C.direction!==H.direction||C.startPanelId!==H.startPanelId||C.endPanelId!==H.endPanelId){te=!0;break}}if(!P&&v.panels.length===0&&v.handles.length===0||P&&!se&&!$&&!_&&!I&&!te)return;const T=v.panels.map(W=>({...W})),V=v.handles.map(W=>({...W})),G={...v.containerSize};e.set(S,{groupId:S,displayName:v.displayName,direction:v.direction,containerSize:G,panels:T,handles:V,index:O,serializedPanels:X,serializedHandles:K}),x()},removeGroup:S=>{const v=e.delete(S),P=n.delete(S),O=o();(v||P||O)&&x()}}},Ce=At(),Lt=()=>p.useSyncExternalStore(Ce.subscribe,Ce.getOwnerId,Ce.getOwnerId),Dt=()=>p.useSyncExternalStore(Ce.subscribe,Ce.getSnapshot,Ce.getSnapshot),Ot=t=>{Ce.enableGroup(t)},et=t=>{Ce.disableGroup(t)},_t=(t,e)=>{Ce.updateGroup(t,e)},tt=t=>{Ce.removeGroup(t)};let it=0;const jt=()=>(it+=1,`panel-group-${it}`),Ie=(t,e)=>typeof t!="number"||!Number.isFinite(t)?"—":`${(t<0?0:t).toFixed(8)}${e}`,kt={position:"fixed",left:"50%",bottom:"20px",transform:"translate(-50%, 0)",zIndex:100,maxWidth:"min(90vw, 1120px)",width:"100%",borderRadius:"14px",backgroundColor:"rgba(15, 23, 42, 0.72)",color:"#e2e8f0",fontFamily:"monospace",fontSize:"11px",lineHeight:1.6,boxShadow:"0 22px 45px rgba(15,23,42,0.45)",border:"1px solid rgba(148, 163, 184, 0.22)",backdropFilter:"blur(10px)",WebkitBackdropFilter:"blur(10px)",pointerEvents:"auto",overflow:"auto"},Tt={display:"flex",justifyContent:"space-between",alignItems:"center",flexWrap:"wrap",gap:"12px"},Gt={display:"flex",flexDirection:"column",gap:"4px"},Ht={padding:"6px 10px",borderRadius:"9999px",border:"1px solid rgba(148, 163, 184, 0.35)",color:"#e2e8f0",fontWeight:600,fontSize:"10px",letterSpacing:"0.03em",textTransform:"uppercase",cursor:"pointer",transition:"background-color 0.18s ease, border-color 0.18s ease"},Ut={padding:"10px 12px",borderRadius:"10px",backgroundColor:"rgba(30, 41, 59, 0.55)",border:"1px solid rgba(148, 163, 184, 0.18)",display:"flex",flexDirection:"column",gap:"10px"},Wt={padding:"8px 10px",borderRadius:"8px",backgroundColor:"rgba(15, 23, 42, 0.55)",border:"1px solid rgba(148, 163, 184, 0.16)",display:"flex",flexDirection:"column",gap:"4px"},rt={display:"flex",justifyContent:"space-between",alignItems:"center",gap:"6px"},$t={display:"grid",gridTemplateColumns:"auto 1fr",gap:"2px 10px",color:"#e2e8f0"},Vt={padding:"2px 6px",borderRadius:"9999px",fontSize:"10px",textTransform:"uppercase"},Yt=t=>{const e=t.reason==="minimum-exceeded",n=e?"Layout unavailable: minimum panel sizes exceed the container.":"Layout unavailable: panels cannot fill the container with their maximum sizes.",d=e?`Min required: ${Math.ceil(t.totalMinimumSize??0)}px | Available: ${Math.floor(t.availableContainerSize)}px`:`Max total: ${Math.floor(t.totalMaximumSize??0)}px | Needed: ${Math.floor(t.availableContainerSize)}px`;return{summary:n,detail:d}},qt=(t,e)=>{let n=!1;const d=t.map(r=>{const l=e[r.id];return!l||r.measuredPixelSize===l.pixelSize&&r.measuredPercentageSize===l.percentageSize?r:(n=!0,{...r,measuredPixelSize:l.pixelSize,measuredPercentageSize:l.percentageSize})});return n?d:t},nt=(t,e,n)=>{const d=Ee(t,"horizontal"),r=Ee(t,"vertical"),l=t.getBoundingClientRect(),i=d.inner>0?d.inner:e??l.width,f=r.inner>0?r.inner:n??l.height;return{width:i,height:f}},Zt=t=>{const{id:e,className:n,style:d,children:r,direction:l}=t,{groupRef:i,contextValue:f,groupStyle:u}=pt(t),[x,o]=p.useState({width:0,height:0}),a=f.layoutConstraintViolation,s=!!a,m=p.useMemo(()=>{if(!a)return null;const{summary:T,detail:V}=Yt(a);return M.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:[M.jsx("span",{children:T}),M.jsx("span",{className:"text-slate-500 text-xs dark:text-slate-400",children:V})]})},[a]),b=p.useRef(e??jt()).current,E=e??b,S=f.showDebugInfo&&f.panels.length>0,v=S?f.panels:[],P=S?f.panelMeasurements:{},O=p.useMemo(()=>{if(!S)return[];const T=Object.values(f.handleMeasurements);return T.length<=1?T:T.slice().sort((V,G)=>V.id.localeCompare(G.id))},[f.handleMeasurements,S]),X=f.containerSize,K=x.width>0?x.width:X.width,se=x.height>0?x.height:X.height,$=Lt(),_=S&&$===b;p.useLayoutEffect(()=>{if(!S){o({width:0,height:0});return}if(typeof window>"u"||typeof ResizeObserver>"u")return;const T=i.current;if(!T)return;const V=W=>{o(C=>C.width===W.width&&C.height===W.height?C:W)},G=new ResizeObserver(W=>{for(const C of W){if(C.target!==T)continue;const H=nt(T,C.contentRect.width,C.contentRect.height);V(H)}});return G.observe(T),V(nt(T)),()=>{G.disconnect()}},[i,S]);const I=p.useMemo(()=>qt(v,P),[v,P]);p.useEffect(()=>{if(!S){et(b),tt(b);return}return Ot(b),()=>{et(b),tt(b)}},[S,b]),p.useEffect(()=>{S&&_t(b,{displayName:E,direction:l,containerSize:{width:K,height:se},panels:I,handles:O})},[S,b,E,l,K,se,I,O]);const te=p.useMemo(()=>{const T={...u,...d};return T.position||(T.position="relative"),T},[u,d]);return M.jsxs(Ye.Provider,{value:f,children:[M.jsxs("div",{ref:i,className:Le.twMerge("panel-group",l==="horizontal"?"flex-row":"flex-col",n),style:te,"data-panel-group-id":e,"data-panel-group-direction":l,children:[r,s&&m?M.jsx("div",{className:"pointer-events-auto",style:{position:"absolute",inset:0,zIndex:40,display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",backgroundColor:"rgba(248, 250, 252, 0.82)",backdropFilter:"blur(2px)"},children:m}):null]}),_&&M.jsx(Xt,{})]})},Xt=()=>{const e=Dt().groups,[n,d]=p.useState(!0);if(e.length===0||typeof document>"u")return null;const r=e.reduce((u,x)=>u+x.panels.length,0),l=e.reduce((u,x)=>u+(x.handles?.length??0),0),i=()=>d(u=>!u),f=M.jsxs("div",{style:{...kt,padding:n?"10px 18px":"14px 18px",maxHeight:n?"52px":"min(65vh, 520px)",transition:"max-height 0.24s ease, padding 0.24s ease"},children:[M.jsxs("div",{style:{...Tt,marginBottom:n?0:"12px"},children:[M.jsxs("div",{style:Gt,children:[M.jsx("span",{style:{fontWeight:700,fontSize:"12px",letterSpacing:"0.03em"},children:"Panel Overview"}),M.jsxs("span",{style:{color:"#cbd5f5"},children:["groups: ",e.length," / panels: ",r," / resizers: ",l]})]}),M.jsx("button",{type:"button",onClick:i,style:{...Ht,backgroundColor:n?"rgba(59, 130, 246, 0.2)":"rgba(71, 85, 105, 0.45)"},title:n?"Panel Overview を開く":"Panel Overview を閉じる",children:n?"開く":"閉じる"})]}),!n&&M.jsx("div",{style:{display:"flex",flexDirection:"column",gap:"12px",maxHeight:"45vh",overflowY:"auto",paddingRight:"6px"},children:e.map((u,x)=>{const o=u.direction==="horizontal"?u.containerSize.width:u.containerSize.height;return M.jsxs("div",{style:Ut,children:[M.jsxs("div",{style:{...rt,flexWrap:"wrap",gap:"10px",color:"#dbeafe"},children:[M.jsxs("span",{style:{fontWeight:600,fontSize:"11px",letterSpacing:"0.02em",textTransform:"uppercase"},children:["group ",x+1,": ",u.displayName]}),M.jsxs("span",{children:["direction: ",u.direction," / container: ",Ie(u.containerSize.width,"px")," × ",Ie(u.containerSize.height,"px")]})]}),M.jsx("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(220px, 1fr))",gap:"10px"},children:u.panels.map((a,s)=>{const m=a.measuredPixelSize??a.size,y=a.size,b=Ie(y,"px"),E=a.percentageSize??(o>0?a.size/o*100:void 0),S=a.measuredPercentageSize!==void 0?a.measuredPercentageSize:o>0?m/o*100:void 0,v=a.collapsed||m<=ot,P=a.collapsed?"collapsed":v?"hidden":"visible",O=Ie(E,"%"),X=Ie(S,"%"),K=Ie(m,"px");return M.jsxs("div",{style:Wt,children:[M.jsxs("div",{style:rt,children:[M.jsx("span",{style:{flex:1,minWidth:0,overflow:"hidden",textOverflow:"ellipsis"},children:a.id}),M.jsx("span",{style:{...Vt,backgroundColor:a.collapsed?"rgba(251, 113, 133, 0.25)":v?"rgba(250, 204, 21, 0.25)":"rgba(74, 222, 128, 0.25)",color:a.collapsed?"#fecdd3":v?"#fef08a":"#bbf7d0"},children:P})]}),M.jsxs("div",{style:$t,children:[M.jsx("span",{children:"size (state):"}),M.jsx("span",{children:b}),M.jsx("span",{children:"size (measured):"}),M.jsx("span",{children:K}),M.jsx("span",{children:"percentage (state):"}),M.jsx("span",{children:O}),M.jsx("span",{children:"percentage (measured):"}),M.jsx("span",{children:X}),M.jsx("span",{children:"unit:"}),M.jsx("span",{children:a.sizeUnit}),M.jsx("span",{children:"min:"}),M.jsx("span",{children:a.minSize!==void 0?JSON.stringify(a.minSize):"—"}),M.jsx("span",{children:"auto min:"}),M.jsx("span",{children:a.autoMinSize!==void 0?JSON.stringify(a.autoMinSize):"—"}),M.jsx("span",{children:"max:"}),M.jsx("span",{children:a.maxSize!==void 0?JSON.stringify(a.maxSize):"—"}),M.jsx("span",{children:"priority:"}),M.jsx("span",{children:a.pixelAdjustPriority??"—"}),M.jsx("span",{children:"flex priority:"}),M.jsx("span",{children:a.flexAdjustPriority??"—"})]})]},a.id||s)})})]},u.groupId)})})]});return mt.createPortal(f,document.body)},Jt=p.memo(({id:t,disabled:e=!1,className:n,style:d,children:r,onDragging:l})=>{const{direction:i,resizePanels:f,getPanel:u,collapsePanel:x,expandPanel:o,panels:a,reportHandleMeasurement:s,containerSize:m,layoutConstraintViolation:y}=Ge(),[b,E]=p.useState(!1),S=p.useRef(null),v=p.useRef(null),P=p.useRef(""),O=p.useRef(""),[X,K]=p.useState({left:null,right:null}),se=p.useId(),$=p.useRef(t??`resize-handle-${se}`),_=p.useRef(null),I=t??$.current,te=!!y,T=e||te;p.useEffect(()=>{if(S.current){const z=S.current.parentElement;if(z){v.current=z;const B=Array.from(z.children),F=S.current,j=B.indexOf(F);if(j>0&&j<B.length-1){let Y=null,A=null;for(let L=j-1;L>=0;L-=1){const k=B[L];if(k.dataset.panelId){Y=k;break}}for(let L=j+1;L<B.length;L+=1){const k=B[L];if(k.dataset.panelId){A=k;break}}P.current=Y?.dataset.panelId||"",O.current=A?.dataset.panelId||"",K({left:P.current||null,right:O.current||null})}}}},[]),p.useEffect(()=>{if(I===$.current)return;const z=$.current;$.current=I,_.current=null,z!==I&&s(z,null)},[s,I]),p.useEffect(()=>{const z=$.current;return()=>{s(z,null)}},[s]);const V=p.useCallback(z=>{if(T||!v.current)return;z.preventDefault(),z.stopPropagation();const B=v.current,{inner:F}=Ee(B,i),j={x:z.clientX,y:z.clientY},Y=u(P.current),A=u(O.current);if(!(Y&&A))return;const L=Y.size,k=A.size;let R=0;const D=Pt;E(!0),l?.(!0),z.currentTarget.setPointerCapture(z.pointerId);const Q=q=>{if(!S.current)return;q.preventDefault(),q.stopPropagation();const ne=performance.now();if(ne-R<D)return;R=ne;const c=i==="horizontal"?q.clientX-j.x:q.clientY-j.y;if(c===0)return;const N=L+c,U=k-c,Z=u(P.current),ee=u(O.current);if(Z&&ee&&P.current&&O.current){const ze=J(Z.minSize,0,F),ye=J(ee.minSize,0,F),he=ze,ve=ye,Me=Math.min(F*at,lt),Pe=Math.min(F*bt,Ct),we=ee.collapseFromStart,zt=ee.collapsedByDirection??"start";if(we&&!ee.collapsed&&U<=Math.max(ye*.3,Me)){x(O.current,"start");return}const xt=Z.collapseFromEnd,gt=Z.collapsedByDirection??"end";if(xt&&!Z.collapsed&&N<=Math.max(ze*.3,Me)){x(P.current,"end");return}if(ee.collapsed&&U>Math.max(ye*.3,Pe)){o(O.current,zt,U);return}if(Z.collapsed&&N>Math.max(ze*.3,Pe)){o(P.current,gt,N);return}if(F>0){const qe=Z.size+ee.size,Oe=$e(F);let Ue=!1;if(he<=Oe&&N<=Oe&&L!==0){const Fe=Math.max(0,qe-0);Fe>=ve&&(f(P.current,O.current,0,Fe),Ue=!0)}else if(ve<=Oe&&U<=Oe&&k!==0){const Fe=Math.max(0,qe-0);Fe>=he&&(f(P.current,O.current,Fe,0),Ue=!0)}if(Ue)return}if(Z.collapsed||ee.collapsed)return;f(P.current,O.current,N,U)}},re=()=>{E(!1),l?.(!1),document.removeEventListener("pointermove",Q),document.removeEventListener("pointerup",re)};document.addEventListener("pointermove",Q),document.addEventListener("pointerup",re)},[T,i,f,u,x,o,l]),G=i==="horizontal",W=G?"cursor-col-resize":"cursor-row-resize",C=Le.twMerge("group absolute z-20 flex select-none items-center justify-center border-none bg-transparent transition-colors duration-150 overflow-visible",W,G?"h-full":"w-full",!T&&"hover:bg-gray-200/70 dark:hover:bg-gray-700/70",!T&&"active:bg-blue-300/60 dark:active:bg-blue-700/60",b&&"bg-blue-200/80 dark:bg-blue-800/60",T&&"cursor-not-allowed opacity-50","focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-opacity-50",n),H=p.useMemo(()=>{const z=B=>{if(!B)return-1;for(let F=0;F<a.length;F+=1)if(a[F].id===B)return F;return-1};return{left:z(X.left),right:z(X.right)}},[X.left,X.right,a]),fe=G?m.width:m.height,oe=p.useMemo(()=>{const z=(B,F)=>{if(B>F)return 0;let j=0;for(let Y=B;Y<=F;Y+=1){const A=a[Y];if(!A)continue;const L=A.size??0,k=Math.max(0,L);j+=A.collapsed?0:k}return j};return H.left>=0?z(0,H.left):H.right>0?z(0,H.right-1):0},[H.left,H.right,a]),ue=p.useMemo(()=>!Number.isFinite(oe)||oe<0?0:fe>0&&oe>fe?fe:oe,[oe,fe]),ge=p.useMemo(()=>{const z={position:"absolute",zIndex:20,touchAction:"none"};return G?(z.top=0,z.left=`${ue}px`,z.transform="translateX(-50%)",z.width=`${Ze}px`,z.height="100%"):(z.left=0,z.top=`${ue}px`,z.transform="translateY(-50%)",z.height=`${Ze}px`,z.width="100%"),z},[ue,G]),ie=p.useMemo(()=>{const z=$e(fe),B=D=>{if(D<0||D>=a.length)return!1;const Q=a[D];return Q?Q.collapsed?!0:Q.size<=z:!1},F=(D,Q)=>{if(!B(D))return 0;let re=0;for(let q=D;q>=0&&q<a.length&&B(q);q+=Q)re+=1;return re},j=H.left,Y=H.right,A=j>=0?F(j,-1):0,L=Y>=0?F(Y,1):0;return{groupSize:A+L+1,overlapIndex:A}},[H.left,H.right,a,fe]),ae=p.useMemo(()=>{if(te)return!0;if(ie.groupSize<=1)return!1;const z=ie.groupSize-1;return ie.overlapIndex>0&&ie.overlapIndex<z},[ie,te]),de=p.useMemo(()=>{if(ie.groupSize<=1||ae)return 0;const z=ie.groupSize>1?2:1;if(z===1)return 0;const B=ie.overlapIndex===0?0:z-1,F=(z-1)/2;return(B-F)*St},[ie,ae]),pe=p.useMemo(()=>{if(ae)return{display:"none"};if(de!==0)return G?{transform:`translateX(${de}px)`}:{transform:`translateY(${de}px)`}},[de,G,ae]),Se=Le.twMerge("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)]",G?"h-12 w-[6px] px-[2px]":"h-[6px] w-20 py-[2px]",b&&"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)]"),h=Le.twMerge("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)]",G?"h-8 w-[2px]":"h-[2px] w-16",b&&"bg-blue-500 dark:bg-blue-300",!T&&"group-hover:bg-slate-700 dark:group-hover:bg-slate-100"),g=p.useCallback(()=>{const z=S.current;if(!z)return;let B=0;if(!ae){const Y=i==="horizontal"?z.offsetWidth:z.offsetHeight;let A=0,L=0;if(typeof window<"u"){const R=window.getComputedStyle(z);i==="horizontal"?(A=Number.parseFloat(R.marginLeft||"0"),L=Number.parseFloat(R.marginRight||"0")):(A=Number.parseFloat(R.marginTop||"0"),L=Number.parseFloat(R.marginBottom||"0"))}B=[Y,A,L].reduce((R,D)=>Number.isFinite(D)?R+D:R,0)}(!Number.isFinite(B)||B<0)&&(B=0);const F={id:I,thickness:B,direction:i,visible:!ae&&B>yt,startPanelId:X.left,endPanelId:X.right},j=_.current;j&&Math.abs(j.thickness-F.thickness)<=.25&&j.visible===F.visible&&j.direction===F.direction&&j.startPanelId===F.startPanelId&&j.endPanelId===F.endPanelId||(_.current=F,s(I,F))},[i,X.left,X.right,s,I,ae]);p.useEffect(()=>{g()},[g]),p.useEffect(()=>{const z=S.current;if(!z)return;if(typeof ResizeObserver>"u"){g();return}const B=new ResizeObserver(()=>{g()});return B.observe(z),()=>{B.disconnect()}},[g]);const w=p.useMemo(()=>{const z=d?{...ge,...d}:ge;return ae?{...z,display:"none",pointerEvents:"none",visibility:"hidden"}:z},[ge,ae,d]);return M.jsx("button",{type:"button",ref:S,className:C,style:w,onPointerDown:V,disabled:T,"aria-hidden":ae||void 0,"aria-label":`Resize ${G?"columns":"rows"} - Drag to collapse/expand panels`,"data-resize-handle-id":I,title:`ドラッグして${G?"列":"行"}をリサイズ、端まで移動して折りたたみ/展開`,children:r||M.jsx("div",{className:Se,style:pe,children:M.jsx("span",{className:h})})})}),Kt=t=>document.querySelector(`[data-panel-id="${t}"]`),Qt=t=>document.querySelector(`[data-panel-group-id="${t}"]`),ei=t=>document.querySelector(`[data-resize-handle-id="${t}"]`);exports.Panel=It;exports.PanelGroup=Zt;exports.PanelGroupContext=Ye;exports.PanelResizeHandle=Jt;exports.clamp=ce;exports.getConstraintInPixels=J;exports.getContainerSize=Ee;exports.getPanelElement=Kt;exports.getPanelGroupElement=Qt;exports.getResizeHandleElement=ei;exports.loadLayout=ft;exports.normalizeSizeConfig=Te;exports.saveLayout=ut;exports.usePanelControls=Mt;exports.usePanelGroup=Ge;exports.useResizablePanels=pt;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./index-xTV-c0PN.cjs");exports.Panel=e.Panel;exports.PanelGroup=e.PanelGroup;exports.PanelGroupContext=e.PanelGroupContext;exports.PanelResizeHandle=e.PanelResizeHandle;exports.clamp=e.clamp;exports.getConstraintInPixels=e.getConstraintInPixels;exports.getContainerSize=e.getContainerSize;exports.getPanelElement=e.getPanelElement;exports.getPanelGroupElement=e.getPanelGroupElement;exports.getResizeHandleElement=e.getResizeHandleElement;exports.loadLayout=e.loadLayout;exports.normalizeSizeConfig=e.normalizeSizeConfig;exports.saveLayout=e.saveLayout;exports.usePanelControls=e.usePanelControls;exports.usePanelGroup=e.usePanelGroup;exports.useResizablePanels=e.useResizablePanels;