@aiquants/resize-panels 1.6.0 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/Panel.d.ts.map +1 -1
- package/dist/hooks.d.ts.map +1 -1
- package/dist/index.cjs +2 -2
- package/dist/index.js +1068 -1047
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -165,9 +165,9 @@ export const Example = () => (
|
|
|
165
165
|
|
|
166
166
|
`PanelGroup` の `showDebugInfo` を有効にすると、各 `Panel` に `PanelDebugInfo` が表示され、折りたたみ状態・計測サイズ・保持中の割合が即座に確認できます。同時にグローバルオーバーレイが開き、コンテナの実測サイズ、制約違反の有無、ハンドル厚み(`PANEL_HANDLE_THICKNESS` で定義された 8px)なども一覧できます。
|
|
167
167
|
|
|
168
|
-
##
|
|
168
|
+
## スナップとノイズ対策・最終整合の挙動
|
|
169
169
|
|
|
170
|
-
`PanelResizeHandle` と `Panel` の両方で `calculateSnapThreshold` を利用し、コンテナサイズに応じたゼロスナップ閾値を共有しています。`Panel`
|
|
170
|
+
`PanelResizeHandle` と `Panel` の両方で `calculateSnapThreshold` を利用し、コンテナサイズに応じたゼロスナップ閾値を共有しています。`Panel` および `PanelGroup` では、サブピクセル単位の微小なノイズ(0.5px 未満の揺れ)を無視するフィルタリングと、動作停止後に正確な真値を反映する **最終整合メカニズム(デバウンス同期)** を導入しています。これにより、スクロールやリサイズ中のチラつきを抑えつつ、最終的な表示状態と内部状態の完全な一致を保証します。
|
|
171
171
|
|
|
172
172
|
## スタイル
|
|
173
173
|
|
package/dist/Panel.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Panel.d.ts","sourceRoot":"","sources":["../src/Panel.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,KAAK,EAA6C,UAAU,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"Panel.d.ts","sourceRoot":"","sources":["../src/Panel.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,KAAK,EAA6C,UAAU,EAAE,MAAM,SAAS,CAAA;AA6FpF;;;GAGG;AACH,eAAO,MAAM,KAAK,mOACwO,UAAU,iCA8dnQ,CAAA"}
|
package/dist/hooks.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,KAAK,aAAa,EAAkF,MAAM,OAAO,CAAA;AAG1H,OAAO,KAAK,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,eAAe,EAAE,eAAe,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAA;AAM5J;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAAI,2DAAmE,eAAe;;;;;;;;;;;+
|
|
1
|
+
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,KAAK,aAAa,EAAkF,MAAM,OAAO,CAAA;AAG1H,OAAO,KAAK,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,eAAe,EAAE,eAAe,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAA;AAM5J;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAAI,2DAAmE,eAAe;;;;;;;;;;;+BA0gBvE,eAAe;8BA8ChB,MAAM;+BA6BlC,MAAM,WAAW,MAAM,YAAY,MAAM,aAAa,MAAM;4BAoFhE,MAAM,QAAQ,sBAAsB;0BAapC,MAAM,QAAQ,sBAAsB,eAAe,MAAM;uBAazD,MAAM;0CAWsC,MAAM,eAAe,gBAAgB,GAAG,IAAI;;4CAsD1C,MAAM,eAAe,sBAAsB,GAAG,IAAI;;;;;CA2E5G,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,GAAI,SAAS,MAAM;;;;;qBAKjC,sBAAsB;mBAOtB,sBAAsB,eAAe,MAAM;mBAO3C,sBAAsB,eAAe,MAAM;CAsBzD,CAAA"}
|
package/dist/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
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 f=require("react"),M=require("react/jsx-runtime"),je=require("tailwind-merge"),mt=require("react-dom"),Je=f.createContext(null),$e=()=>{const t=f.useContext(Je);if(!t)throw new Error("usePanelGroup must be used within a PanelGroup");return t},lt=(t,e=0)=>{if(!Number.isFinite(t))return t;const n=10**e,d=t*n,r=Math.floor(d),c=d-r,i=Number.EPSILON*Math.max(1,Math.abs(d));return c<.5-i?r/n:c>.5+i?(r+1)/n:(r%2===0?r:r+1)/n},ct=12,Ke=8,St=8,Pt=8,dt=.05,ut=10,bt=.05,Ct=20,yt=.05,Qe=0,ft=6,me=(t,e)=>e<=0?0:lt(t/e*100,ft),_e=(t,e)=>!t||e<=0?0:t/100*e,We=(t,e="percentage")=>{if(t!==void 0)return typeof t=="number"?{value:t,unit:e}:t},et=(t,e)=>t?t.unit==="percentage"?t.value/100*e:t.value:0,Q=(t,e,n)=>t?typeof t=="number"?t/100*n:t.unit==="pixels"?t.value:t.value/100*n:e,fe=(t,e,n)=>Math.min(Math.max(t,e),n),Ze=t=>{if(!Number.isFinite(t)||t<=0)return Qe;const e=t*dt,n=Math.min(ct,ut,e);return Math.max(Qe,n)},pt=(t,e,n,d={})=>{if(Math.abs(e)<=0)return e;const r=d.enforceAutoMinSize??!1,c=t.map((o,a)=>({panel:o,index:a})).filter(({panel:o})=>!o.collapsed&&(o.sizeUnit==="pixels"||o.originalPixelSize!==void 0));if(c.length===0)return e;const i=e>0,z=[...c].sort((o,a)=>{const s=o.panel.pixelAdjustPriority??o.index+1,g=a.panel.pixelAdjustPriority??a.index+1;return s===g?i?a.index-o.index:o.index-a.index:i?g-s:s-g});let u=e;const x=o=>{for(const{index:a}of z){if(Math.abs(u)<=0)break;const s=t[a];if(!s||s.collapsed)continue;const g=We(s.minSize,"pixels"),C=We(s.maxSize,"pixels"),P=g?et(g,n):0,E=C?et(C,n):n,m=r?Q(s.autoMinSize,0,n):0,y=Math.max(P,m),S=s.preferredPixelSize!==void 0?fe(s.preferredPixelSize,y,E):s.size,O=s.collapseFromStart||s.collapseFromEnd;if(u>0){if(Math.abs(s.size)<=0&&(s.percentageSize??0)<=0)continue;const re=Math.max(s.size,S),le=o?Math.min(E,re):E,Y=Math.max(0,le-s.size);if(Y<=0)continue;const j=Math.min(Y,u);if(j<=0)continue;const B=s.size+j,se=me(B,n),U=O?B:s.sizeBeforeCollapse,q=O?s.measuredPixelSizeBeforeCollapse??s.measuredPixelSize??B:s.measuredPixelSizeBeforeCollapse;t[a]={...s,size:B,percentageSize:se,sizeBeforeCollapse:U,measuredPixelSizeBeforeCollapse:q,measuredPixelSize:void 0,measuredPercentageSize:void 0},u-=j}else{const X=o?S:y,re=Math.max(0,s.size-X);if(re<=0)continue;const le=Math.min(re,Math.abs(u));if(le<=0)continue;const Y=s.size-le,j=me(Y,n),B=O?Y:s.sizeBeforeCollapse,se=O?s.measuredPixelSizeBeforeCollapse??s.measuredPixelSize??Y:s.measuredPixelSizeBeforeCollapse;t[a]={...s,size:Y,percentageSize:j,sizeBeforeCollapse:B,measuredPixelSizeBeforeCollapse:se,measuredPixelSize:void 0,measuredPercentageSize:void 0},u+=le}}};return x(!0),(i&&u>0||!i&&u<0)&&x(!1),u},Ge=t=>{if(!t)return 0;const e=parseFloat(t);return Number.isFinite(e)?e:0},Be=(t,e)=>{const n=t.getBoundingClientRect(),d=typeof window<"u"?window.getComputedStyle(t):null,r=d?Ge(d.borderLeftWidth)+Ge(d.borderRightWidth):0,c=d?Ge(d.borderTopWidth)+Ge(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,z=n.height>0?Math.max(0,n.height-c):t.clientHeight,u=t.offsetHeight>0?t.offsetHeight:t.clientHeight+c;return{inner:z>0?z:Math.max(0,t.clientHeight),outer:i>0?i:Math.max(0,u)}},zt=(t,e)=>{try{localStorage.setItem(`panel-layout-${t}`,JSON.stringify(e))}catch(n){console.warn("Failed to save panel layout:",n)}},xt=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 Ve=(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))(Ve||{});const Ce=class Ce{constructor(e=2,n="[resize-panels]",d=console){this.level=e,this.prefix=n,this.impl=d}static setLevel(e){Ce.instance.setLevel(e)}setLevel(e){this.level=e}static setImplementation(e){Ce.instance.setImplementation(e)}setImplementation(e){this.impl=e}static setPrefix(e){Ce.instance.setPrefix(e)}setPrefix(e){this.prefix=e}formatMessage(e){return typeof e=="string"?[`${this.prefix} ${e}`]:[this.prefix,e]}static debug(e,...n){Ce.instance.debug(e,...n)}debug(e,...n){this.level<=0&&this.impl.debug(...this.formatMessage(e),...n)}static info(e,...n){Ce.instance.info(e,...n)}info(e,...n){this.level<=1&&this.impl.info(...this.formatMessage(e),...n)}static warn(e,...n){Ce.instance.warn(e,...n)}warn(e,...n){this.level<=2&&this.impl.warn(...this.formatMessage(e),...n)}static error(e,...n){Ce.instance.error(e,...n)}error(e,...n){this.level<=3&&this.impl.error(...this.formatMessage(e),...n)}};Ce.instance=new Ce(2,"[resize-panels]");let ke=Ce;const ue=new ke(Ve.INFO,"[resize-panels]"),Pe=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})),He=t=>t?Pe([t])[0]:null,Fe=t=>t?!!(t.collapseFromStart||t.collapseFromEnd):!1,qe=(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,Q(x.minSize,0,e)),a=Math.max(0,Q(x.autoMinSize,0,e)),s=Math.max(o,a),g=Math.max(.001,s),C=Q(x.maxSize,e,e),P=Math.max(s,C),E=x.sizeUnit==="pixels"||x.originalPixelSize!==void 0,m=Math.max(0,x.size);let y=s;if(E){const O=x.preferredPixelSize??x.size??x.originalPixelSize??s;y=fe(O,s,P)}else{const O=x.preferredPercentageSize??x.percentageSize??me(x.size,e),X=_e(O,e);y=fe(X,s,P)}const S=!E&&(x.excludeFromAutoGrowth??!1)&&m<=g;d.push({index:u,isPixelPanel:E,minSize:s,maxSize:P,preferredSize:y,priority:x.pixelAdjustPriority??u+1,flexPriority:E?void 0:x.flexAdjustPriority,excludeFromGrowth:S})}if(d.length===0)return n;const r=new Map;let c=0;for(const u of d)r.set(u.index,u.minSize),c+=u.minSize;let i=e-c;const z=(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 g=[];for(const E of o){if(!E.isPixelPanel&&E.excludeFromGrowth)continue;const m=r.get(E.index)??E.minSize,y=Math.min(E.preferredSize,E.maxSize),S=Math.max(0,y-m);S>1e-6&&(s+=S,g.push({descriptor:E,capacity:S}))}if(g.length===0||s<=1e-6)break;let C=0;const P=i;for(const E of g){if(i<=1e-6)break;if(!E.descriptor.isPixelPanel&&E.descriptor.excludeFromGrowth)continue;const m=P*E.capacity/s,y=Math.min(E.capacity,m);if(y<=0)continue;const S=z(E.descriptor,y);S>0&&(i-=S,C+=S)}if(C<=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),g=Math.max(0,s-a);if(g<=0)continue;const C=z(o,Math.min(g,i));C>0&&(i-=C)}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,g)=>(g.flexPriority??0)-(s.flexPriority??0));for(const s of a){if(i<=0)break;if(s.excludeFromGrowth)continue;const g=r.get(s.index)??s.minSize,C=Math.min(s.preferredSize,s.maxSize),P=Math.max(0,C-g);if(P<=0)continue;const E=z(s,Math.min(P,i));E>0&&(i-=E)}}if(i>0){const s=a.length>0?o.filter(g=>g.flexPriority===void 0&&!g.excludeFromGrowth):o.filter(g=>!g.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 g=r.get(s.index)??s.minSize,C=s.isPixelPanel?Math.min(s.maxSize,s.preferredSize):s.maxSize,P=Math.max(0,C-g);P>0&&(o.push(s),x+=P)}if(x<=0)break;const a=i;for(const s of o){if(i<=0)break;if(!s.isPixelPanel&&s.excludeFromGrowth)continue;const g=r.get(s.index)??s.minSize,C=s.isPixelPanel?Math.min(s.maxSize,s.preferredSize):s.maxSize,P=Math.max(0,C-g);if(P<=0)continue;const E=a*P/x,m=z(s,Math.min(P,E));m>0&&(i-=m)}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,g=fe(a.preferredSize,a.minSize,a.maxSize),C=Math.max(0,s-g);if(C>0&&i<0){const E=Math.min(C,Math.abs(i));r.set(a.index,s-E),i+=E,o=!0;continue}const P=Math.max(0,s-a.minSize);if(P>0&&i<0){const E=Math.min(P,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=Fe(o),s=a?x:o.sizeBeforeCollapse,g=a?o.measuredPixelSizeBeforeCollapse??o.measuredPixelSize??x:o.measuredPixelSizeBeforeCollapse,C=e>0?me(x,e):0;n[u.index]={...o,size:x,percentageSize:C,preferredPercentageSize:o.preferredPercentageSize,preferredPixelSize:u.isPixelPanel?o.preferredPixelSize??x:o.preferredPixelSize,sizeBeforeCollapse:s,measuredPixelSizeBeforeCollapse:g,measuredPixelSize:void 0,measuredPercentageSize:void 0}}return Ie(n)},Ie=t=>{let e=0;for(const r of t)r.collapsed||(e+=Math.max(r.size,0));if(e<=0){let r=!1;const c=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?c: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 c=me(r.size,e),i=r.measuredPercentageSize,x=(i!==void 0?Math.abs(i-c):1/0)<1e-4&&i!==void 0?i:c,o=lt(x,ft),s=Math.abs((r.percentageSize??0)-o)>0||r.percentageSize===void 0,g=r.sizeBeforeCollapse===void 0||r.sizeBeforeCollapse!==r.size,C=Fe(r),P=C&&g,E=r.measuredPixelSize??r.size,m=C&&(r.measuredPixelSizeBeforeCollapse===void 0||r.measuredPixelSizeBeforeCollapse!==E);if(!(s||P||m))return r;n=!0;const y=P?r.size:r.sizeBeforeCollapse,S=m?E:r.measuredPixelSizeBeforeCollapse;return{...r,percentageSize:o,sizeBeforeCollapse:y,measuredPixelSizeBeforeCollapse:S,collapsedByDirection:r.collapsed?r.collapsedByDirection??null:null}});return n?d:t},Ue=(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 c=!1;const i=o=>{const a=t[o],s=Q(a.minSize,0,e),g=Q(a.autoMinSize,0,e),C=Math.max(s,g),P=Q(a.maxSize,e,e),E=a.sizeUnit==="percentage"&&a.originalPixelSize===void 0;return{index:o,minSize:C,maxSize:P,isFlexible:E}},z=(o,a)=>{if(!Number.isFinite(a)||Math.abs(a)<=0)return;const s=t[o];if(!s)return;const g=Math.max(0,s.size+a);if(Math.abs(g-s.size)<=0)return;const C=me(g,e),P=Fe(s),E=P?g:s.sizeBeforeCollapse,m=P?s.measuredPixelSizeBeforeCollapse??s.measuredPixelSize??g:s.measuredPixelSizeBeforeCollapse;t[o]={...s,size:g,percentageSize:C,sizeBeforeCollapse:E,measuredPixelSizeBeforeCollapse:m,measuredPixelSize:void 0,measuredPercentageSize:void 0},r-=a,c=!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 g=s.size;if(r>0){const C=Math.max(0,a.maxSize-g);if(C<=0)continue;const P=Math.min(C,r);if(P<=0)continue;z(a.index,P)}else{const C=Math.max(0,g-a.minSize);if(C<=0)continue;const P=Math.min(C,Math.abs(r));if(P<=0)continue;z(a.index,-P)}}},x=n.map(o=>i(o)).filter(o=>o.isFlexible);if(x.length>0&&u(x),Math.abs(r)>0){const o=r;r=pt(t,r,e,{enforceAutoMinSize:!0}),Math.abs(r-o)>0&&(c=!0)}return c},tt=(t,e,n)=>{if(!(t.sizeUnit==="pixels"||t.originalPixelSize!==void 0)||t.pixelAdjustPriority!==void 0)return t;const r=e.filter((i,z)=>z!==n&&(i.sizeUnit==="pixels"||i.originalPixelSize!==void 0)).map(i=>i.pixelAdjustPriority).filter(i=>i!==void 0),c=r.length>0?Math.max(...r)+1:1;return{...t,pixelAdjustPriority:c}},vt=(t,e)=>{switch(e.type){case"REGISTER_PANEL":{ue.debug("REGISTER_PANEL",e.panel);const n=t.findIndex(c=>c.id===e.panel.id);if(n>=0){const c=[...t],i=t[n],z={...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=tt(z,t,n);return ue.debug("register panel (update)",{panelId:u.id,incoming:He(e.panel),previous:He(i),next:He(u)}),c[n]=u,c}const d={...e.panel},r=tt(d,t);return ue.debug("register panel (insert)",{panelId:r.id,incoming:He(r),previousLength:t.length}),[...t,r]}case"UNREGISTER_PANEL":{ue.debug("UNREGISTER_PANEL",e.id);const n=t.filter(r=>r.id!==e.id),d=Ie(n);return ue.debug("unregister panel",{panelId:e.id,previous:Pe(t),filtered:Pe(n),next:Pe(d)}),d}case"RESIZE_PANELS":{ue.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],c=r[n],i=r[d];if(c.collapsed||i.collapsed||e.leftSize===c.size&&e.rightSize===i.size)return t;const z=e.containerSize??t.reduce((G,oe)=>G+oe.size,0),u=Q(c.minSize,0,z),x=Q(c.maxSize,z,z),o=Q(i.minSize,0,z),a=Q(i.maxSize,z,z),s=c.size+i.size,g=t.reduce((G,oe)=>oe.collapsed?G:G+oe.size,0),C=g-s,P=u+o,E=x+a,m=fe(e.leftSize+e.rightSize,P,E);let y=z>0?z-C:m;Number.isFinite(y)||(y=m);const S=fe(Math.max(m,y),P,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)}),re=Math.abs(e.leftSize-c.size),le=Math.abs(e.rightSize-i.size),Y=re>=le;let j=c.size,B=i.size;if(Y){const G=O(S);if(G.min>G.max)return t;const oe=fe(e.leftSize,G.min,G.max),b=S-oe;if(b<o||b>a)return t;j=oe,B=b}else{const G=X(S);if(G.min>G.max)return t;const oe=fe(e.rightSize,G.min,G.max),b=S-oe;if(b<u||b>x)return t;B=oe,j=b}const se=j+B;if(S!==se)return t;const U=g-c.size-i.size+se,q=z>0?z:U,T=q>0?me(j,q):0,$=q>0?me(B,q):0,v=c.sizeUnit==="pixels"||c.originalPixelSize!==void 0?j:c.preferredPixelSize,A=i.sizeUnit==="pixels"||i.originalPixelSize!==void 0?B:i.preferredPixelSize,he=Q(c.autoMinSize,0,z),ae=Q(i.autoMinSize,0,z),ge=Math.max(.001,he),pe=Math.max(.001,ae),ce=c.sizeUnit==="percentage"&&c.originalPixelSize===void 0,de=i.sizeUnit==="percentage"&&i.originalPixelSize===void 0;let ze=c.excludeFromAutoGrowth,Se=i.excludeFromAutoGrowth;ce&&(j<=ge?ze=!0:j>ge&&(ze=!1)),de&&(B<=pe?Se=!0:B>pe&&(Se=!1));const ye=Fe(c),ve=Fe(i);return r[n]={...c,size:j,percentageSize:T,preferredPercentageSize:T>0?T:c.preferredPercentageSize,preferredPixelSize:v,sizeBeforeCollapse:ye?j:c.sizeBeforeCollapse,measuredPixelSize:void 0,measuredPercentageSize:void 0,excludeFromAutoGrowth:ze},r[d]={...i,size:B,percentageSize:$,preferredPercentageSize:$>0?$:i.preferredPercentageSize,preferredPixelSize:A,sizeBeforeCollapse:ve?B:i.sizeBeforeCollapse,measuredPixelSize:void 0,measuredPercentageSize:void 0,excludeFromAutoGrowth:Se},z>0&&Ue(r,z)?Ie(r):r}case"SET_PANELS":{ue.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=Pe(t),r=Pe(n),c=Ie(n),i=Pe(c);let z=d.length===i.length;if(z)for(let u=0;u<i.length;u+=1){const x=i[u],o=d[u];if(!o){z=!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)){z=!1;break}}return z?(ue.debug("set panels skipped (no diff)",{previous:d,incoming:r,next:i,previousLength:d.length,incomingLength:r.length}),t):(ue.debug("set panels",{previous:d,incoming:r,next:i,previousLength:d.length,incomingLength:r.length}),c)}case"CONTAINER_RESIZED":{if(ue.debug("CONTAINER_RESIZED",e.containerSize),e.containerSize<=0)return ue.debug("container resized skipped (non-positive size)",{containerSize:e.containerSize,panels:Pe(t)}),t;ue.debug("container resized (before)",{containerSize:e.containerSize,panels:Pe(t)});const n=qe(t,e.containerSize);if(ue.debug("container resized (after recalc)",{containerSize:e.containerSize,panels:Pe(n)}),e.containerSize>0&&Ue(n,e.containerSize)){const d=Ie(n);return ue.debug("container resized (after reconcile)",{containerSize:e.containerSize,panels:Pe(d)}),d}return ue.debug("container resized (final)",{containerSize:e.containerSize,panels:Pe(n)}),n}case"COLLAPSE_PANEL":{ue.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(!(Fe(d)&&r)||d.collapsed)return t;const i=d.size,z=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:z,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=qe(o,e.containerSize);return e.containerSize>0&&Ue(a,e.containerSize)?Ie(a):a}case"EXPAND_PANEL":{ue.debug("EXPAND_PANEL",e.id,e.targetSize);const n=t.findIndex(S=>S.id===e.id);if(n===-1)return t;const d=e.containerSize,r=t[n],c=e.from==="start"?r.collapseFromStart:r.collapseFromEnd;if(!(Fe(r)&&c&&r.collapsed)||r.collapsedByDirection&&r.collapsedByDirection!==e.from)return t;const z=[e.targetSize,r.sizeBeforeCollapse,r.measuredPixelSizeBeforeCollapse,r.preferredPixelSizeBeforeCollapse,r.originalPixelSize].find(S=>S!==void 0)??0,u=Q(r.minSize,0,d),x=Q(r.maxSize,d,d),o=fe(z,u,x),a=me(o,d),s=r.measuredPixelSizeBeforeCollapse??o,g=me(s,d),C=r.preferredPercentageSizeBeforeCollapse??r.percentageSizeBeforeCollapse??a,P=r.preferredPixelSizeBeforeCollapse??r.preferredPixelSize??o,E={...r,collapsed:!1,collapsedByDirection:null,size:o,percentageSize:a,preferredPercentageSize:C,preferredPixelSize:P,sizeBeforeCollapse:o,percentageSizeBeforeCollapse:void 0,preferredPercentageSizeBeforeCollapse:void 0,preferredPixelSizeBeforeCollapse:void 0,measuredPixelSize:o,measuredPixelSizeBeforeCollapse:s,measuredPercentageSize:g},m=[...t];m[n]=E;const y=qe(m,d);return d>0&&Ue(y,d)?Ie(y):y}default:return t}},Te=new ke(Ve.INFO,"[resize-panels]"),gt=({direction:t,style:e,onLayout:n,autoSaveId:d,showDebugInfo:r=!1})=>{const[c,i]=f.useReducer(vt,[]),[z,u]=f.useState({width:0,height:0}),[x,o]=f.useState(!1),[a,s]=f.useState(!1),[g,C]=f.useState(null),[P,E]=f.useState({}),[m,y]=f.useState({}),S=f.useRef(null),O=f.useRef(n),X=f.useRef(!1),re=f.useRef(0),le=f.useRef(z),Y=f.useRef(z),j=f.useRef(x),B=f.useRef(g?.reason??null),se=f.useRef({}),U=f.useRef(null),q=f.useRef(null),T=f.useRef(null),$=f.useRef({width:0,height:0}),v=f.useRef({width:0,height:0}),A=f.useRef({}),he=f.useRef({}),ae=f.useCallback(l=>l.map(h=>({...h})),[]);f.useEffect(()=>{Y.current=z},[z]),f.useEffect(()=>{j.current=x},[x]),f.useEffect(()=>{B.current=g?.reason??null},[g?.reason]),f.useEffect(()=>{if(g)return;const l=t==="horizontal"?z.width:z.height;!Number.isFinite(l)||l<=4||c.length!==0&&(U.current=ae(c))},[g,c,t,z.width,z.height,ae]),f.useEffect(()=>{const l=q.current;if(g){q.current=g;return}if(l&&!g&&U.current){q.current=null;const h=ae(U.current);i({type:"SET_PANELS",panels:h});return}q.current=g},[g,ae]),f.useLayoutEffect(()=>{if(!S.current)return;const l=new ResizeObserver(h=>{for(const R of h){const w=R.target,L=w?Be(w,"horizontal"):null,I=w?Be(w,"vertical"):null,H=L?L.inner:0,Z=I?I.inner:0,_=R.contentRect.width,F=R.contentRect.height,N=H>0?H:_,k=Z>0?Z:F;$.current={width:N,height:k};const ee=v.current,ne=Math.abs(ee.width-N)>=.5,K=Math.abs(ee.height-k)>=.5;ne||K?(T.current&&(clearTimeout(T.current),T.current=null),!x&&N>0&&k>0&&o(!0),u({width:N,height:k}),v.current={width:N,height:k}):(T.current&&clearTimeout(T.current),T.current=setTimeout(()=>{const W=$.current;u(W),v.current=W,T.current=null},150))}});return l.observe(S.current),()=>{l.disconnect(),T.current&&clearTimeout(T.current)}},[x]),f.useEffect(()=>()=>{Object.values(A.current).forEach(clearTimeout)},[]),f.useLayoutEffect(()=>{const l=le.current,h=z,R=t==="horizontal"?Math.abs(l.width-h.width)>=.5:Math.abs(l.height-h.height)>=.5;if(a&&R){const w=t==="horizontal"?h.width:h.height;i({type:"CONTAINER_RESIZED",containerSize:w,direction:t})}le.current=h},[z,a,t]);const ge=f.useCallback(()=>{Te.debug("panels[0]?.id",c[0]?.id);const l=c.some(p=>{if(p.collapsed||p.sizeUnit!=="percentage")return!1;const te=p.collapseFromStart||p.collapseFromEnd?p.sizeBeforeCollapse??p.measuredPixelSizeBeforeCollapse??p.originalPixelSize??p.measuredPixelSize??0:p.measuredPixelSize??p.originalPixelSize??p.size,ie=p.percentageSize!==void 0&&p.percentageSize>0;return p.size<=0&&(te>0||ie)}),h=t==="horizontal"?z.width:z.height,R=h>0;if(g||!R||!(c.length>0&&(c.length!==re.current||!a||l)))return;const I=c.filter(p=>!p.collapsed&&(p.originalPixelSize!==void 0||p.sizeUnit==="pixels")).reduce((p,D)=>{const te=D.preferredPixelSize??D.originalPixelSize??D.size;return p+Math.max(0,te??0)},0),H=c.filter(p=>p.sizeUnit==="percentage"&&!p.collapsed),Z=H.map(p=>p.id),_=H.map(p=>{const D=p.preferredPercentageSize??p.percentageSize;return D!==void 0&&D>0?_e(D,h):p.size>0?p.size:0}),F=_.reduce((p,D)=>p+D,0),N=h-I,k=Math.max(0,N),ee=k>0,ne=c.map(p=>{if(p.collapsed){const D=p.sizeBeforeCollapse??p.measuredPixelSizeBeforeCollapse??p.originalPixelSize??(p.sizeUnit==="pixels"?p.size:void 0),te=p.sizeUnit==="percentage"&&p.percentageSize!==void 0?_e(p.percentageSize,h):void 0,ie=D??te??0,xe=p.measuredPixelSizeBeforeCollapse??p.measuredPixelSize??ie;return{...p,size:0,percentageSize:0,preferredPercentageSize:p.preferredPercentageSize,sizeBeforeCollapse:ie,percentageSizeBeforeCollapse:p.percentageSizeBeforeCollapse??p.percentageSize??p.preferredPercentageSize??0,preferredPercentageSizeBeforeCollapse:p.preferredPercentageSizeBeforeCollapse??p.preferredPercentageSize??p.percentageSize??void 0,preferredPixelSizeBeforeCollapse:p.preferredPixelSizeBeforeCollapse??p.preferredPixelSize??ie,measuredPixelSizeBeforeCollapse:xe}}if(p.sizeUnit==="pixels"||p.originalPixelSize!==void 0){const D=p.size,te=h>0?me(D,h):0,ie={...p,size:D,percentageSize:te,preferredPixelSize:p.preferredPixelSize??p.originalPixelSize??D,preferredPercentageSize:p.preferredPercentageSize!==void 0?p.preferredPercentageSize:te>0?te:void 0};if(p.collapseFromStart||p.collapseFromEnd){const xe=p.sizeBeforeCollapse??D,we=p.measuredPixelSizeBeforeCollapse??p.measuredPixelSize??xe;ie.sizeBeforeCollapse=xe,ie.measuredPixelSizeBeforeCollapse=we,ie.preferredPixelSizeBeforeCollapse=p.preferredPixelSizeBeforeCollapse??p.preferredPixelSize??xe}return ie}if(p.sizeUnit==="percentage"){const D=Z.indexOf(p.id),te=D!==-1?_[D]:0,ie=Q(p.minSize,0,h),xe=Q(p.maxSize,h,h),we=Math.max(ie,p.sizeBeforeCollapse??0,p.measuredPixelSizeBeforeCollapse??0,p.measuredPixelSize??0,p.originalPixelSize??0,p.size>0?p.size:0,p.percentageSize!==void 0?_e(p.percentageSize,h):0,1),Le=te>0?te:we;let Re;if(!ee)Re=ie;else if(D!==-1&&F>0){const be=Le/F,Me=k*be;Re=fe(Me,ie,xe)}else{const be=p.percentageSize!==void 0?_e(p.percentageSize,h):p.size,Me=be>0?be:Le;Re=fe(Me,ie,xe)}const De=h>0?me(Re,h):0,Ne={...p,size:Re,percentageSize:De,preferredPercentageSize:p.preferredPercentageSize!==void 0?p.preferredPercentageSize:De>0?De:void 0};if(p.collapseFromStart||p.collapseFromEnd){const be=p.sizeBeforeCollapse??Re,Me=p.measuredPixelSizeBeforeCollapse??p.measuredPixelSize??be;Ne.sizeBeforeCollapse=be,Ne.measuredPixelSizeBeforeCollapse=Me,Ne.preferredPixelSizeBeforeCollapse=p.preferredPixelSizeBeforeCollapse??p.preferredPixelSize??be}return Ne}return p}),K=[];for(let p=0;p<ne.length;p+=1){const D=ne[p];D.sizeUnit==="percentage"&&!D.collapsed&&K.push(p)}const W=K.reduce((p,D)=>p+ne[D].size,0),J=N-W;Math.abs(J)>0&&pt(ne,J,h,{enforceAutoMinSize:!0}),i({type:"SET_PANELS",panels:ne}),re.current=c.length,s(!0)},[c,t,z.width,z.height,a,g]);f.useEffect(()=>{const l=t==="horizontal"?z.width:z.height,h=l>0,R=h&&c.length>0,w=R?c.reduce((F,N)=>{if(N.collapsed)return F;const k=Q(N.minSize,0,l);return F+Math.max(0,k)},0):null,L=R?c.reduce((F,N)=>{if(N.collapsed)return F;const k=Q(N.maxSize,l,l);return F+Math.max(0,k)},0):null,I=w??g?.totalMinimumSize??null,H=L??g?.totalMaximumSize??null;if(!h){g&&C(F=>!F||F.availableContainerSize===l?F:{reason:F.reason,totalMinimumSize:null,totalMaximumSize:null,availableContainerSize:l});return}const Z=I!==null&&I-l>Number.EPSILON,_=H!==null&&l-H>Number.EPSILON;if(Z||_){const N={reason:Z?"minimum-exceeded":"maximum-insufficient",totalMinimumSize:I,totalMaximumSize:H,availableContainerSize:l};C(k=>k&&k.reason===N.reason&&Math.abs((k.totalMinimumSize??0)-(N.totalMinimumSize??0))<=Number.EPSILON&&Math.abs((k.totalMaximumSize??0)-(N.totalMaximumSize??0))<=Number.EPSILON&&Math.abs(k.availableContainerSize-N.availableContainerSize)<=Number.EPSILON?k:N);return}if(g){const F=g.reason==="minimum-exceeded",N=g.reason==="maximum-insufficient";(!F||I!==null)&&(!N||H!==null)&&!Z&&!_&&C(W=>W&&null)}},[c,t,z.width,z.height,g]),f.useEffect(()=>{ge()},[ge]),f.useEffect(()=>{O.current=n},[n]);const pe=f.useMemo(()=>c.map(l=>l.size),[c]);f.useLayoutEffect(()=>{pe.length>0&&O.current&&O.current(pe)},[pe]),f.useEffect(()=>{if(d&&pe.length>0){const l=setTimeout(()=>{zt(d,pe)},200);return()=>clearTimeout(l)}},[d,pe]),f.useEffect(()=>{if(!d||c.length===0||X.current)return;const l=t==="horizontal"?z.width:z.height;if(l<=0)return;const h=xt(d);if(h&&h.length===c.length){const R=c.map((w,L)=>{const I=Q(w.minSize,0,l),H=Q(w.maxSize,l,l),Z=fe(h[L],I,H),_=me(Z,l),F=w.sizeUnit==="pixels"||w.originalPixelSize!==void 0?Z:w.preferredPixelSize;return{...w,size:Z,percentageSize:_,preferredPercentageSize:_>0?_:w.preferredPercentageSize,preferredPixelSize:F}});i({type:"SET_PANELS",panels:R}),X.current=!0}},[d,c,z.width,z.height,t]);const ce=f.useCallback(l=>{const h=Y.current,R=se.current,w=JSON.stringify({id:l.id,size:l.size??null,percentageSize:l.percentageSize??null,preferredPercentageSize:l.preferredPercentageSize??null,preferredPixelSize:l.preferredPixelSize??null,sizeUnit:l.sizeUnit,originalPixelSize:l.originalPixelSize??null,minSize:l.minSize??null,maxSize:l.maxSize??null,collapseFromStart:l.collapseFromStart,collapseFromEnd:l.collapseFromEnd,collapsed:l.collapsed??!1,collapsedByDirection:l.collapsedByDirection??null,sizeBeforeCollapse:l.sizeBeforeCollapse??null,percentageSizeBeforeCollapse:l.percentageSizeBeforeCollapse??null,preferredPercentageSizeBeforeCollapse:l.preferredPercentageSizeBeforeCollapse??null,preferredPixelSizeBeforeCollapse:l.preferredPixelSizeBeforeCollapse??null,pixelAdjustPriority:l.pixelAdjustPriority??null});if(R[l.id]===w){Te.debug("useResizablePanels.registerPanel skipped",{panelId:l.id,reason:"duplicate-registration"});return}R[l.id]=w,Te.debug("useResizablePanels.registerPanel",{panelId:l.id,containerReady:j.current,violationReason:B.current,containerSize:{width:h.width,height:h.height}}),i({type:"REGISTER_PANEL",panel:l})},[]),de=f.useCallback(l=>{const h=Y.current;Te.debug("useResizablePanels.unregisterPanel",{panelId:l,containerReady:j.current,violationReason:B.current,containerSize:{width:h.width,height:h.height}}),i({type:"UNREGISTER_PANEL",id:l}),delete se.current[l],E(R=>{if(!(l in R))return R;const w={...R};return delete w[l],w})},[]),ze=f.useCallback((l,h,R,w)=>{const L=t==="horizontal"?z.width:z.height,I=c.find(W=>W.id===l),H=c.find(W=>W.id===h);if(!(I&&H)){i({type:"RESIZE_PANELS",leftId:l,rightId:h,leftSize:R,rightSize:w,containerSize:L});return}if(I.collapsed||H.collapsed)return;const Z=Q(I.minSize,0,L),_=Q(I.maxSize,L,L),F=Q(H.minSize,0,L),N=Q(H.maxSize,L,L);let k=fe(R,Z,_),ee=fe(w,F,N);const ne=k+ee,K=R+w;if(Math.abs(ne-K)>1e-9){const W=K-ne;if(W>0){const J=_-k,p=N-ee,D=J+p;if(D>0){const te=Math.min(W*(J/D),J),ie=Math.min(W-te,p);k+=te,ee+=ie}}else if(W<0){const J=Math.abs(W),p=k-Z,D=ee-F,te=p+D;if(te>0){const ie=Math.min(J*(p/te),p),xe=Math.min(J-ie,D);k-=ie,ee-=xe}}}k=fe(k,Z,_),ee=fe(ee,F,N),Math.abs(k+ee-K)>1e-9&&Te.error("Total size after constraints should be close to the original total size.",{constrainedLeftSize:k,constrainedRightSize:ee,originalTotalSize:K}),i({type:"RESIZE_PANELS",leftId:l,rightId:h,leftSize:k,rightSize:ee,containerSize:L})},[t,z.width,z.height,c]),Se=f.useCallback((l,h)=>{const R=t==="horizontal"?z.width:z.height;i({type:"COLLAPSE_PANEL",id:l,from:h,containerSize:R})},[t,z.width,z.height]),ye=f.useCallback((l,h,R)=>{const w=t==="horizontal"?z.width:z.height;i({type:"EXPAND_PANEL",id:l,from:h,containerSize:w,targetSize:R})},[t,z.width,z.height]),ve=f.useCallback(l=>c.find(h=>h.id===l),[c]),G=f.useCallback((l,h)=>{E(R=>{if(h===null){if(!(l in R))return R;const H={...R};return delete H[l],H}const w=R[l],L=w&&Math.abs(w.pixelSize-h.pixelSize)<.1,I=w&&Math.abs(w.percentageSize-h.percentageSize)<.01;return L&&I?(A.current[l]&&clearTimeout(A.current[l]),he.current[l]=h,A.current[l]=setTimeout(()=>{const H=he.current[l];H&&E(Z=>({...Z,[l]:H})),delete A.current[l]},200),R):(A.current[l]&&(clearTimeout(A.current[l]),delete A.current[l]),{...R,[l]:h})})},[]),oe=f.useCallback((l,h)=>{y(R=>{if(h===null){if(!(l in R))return R;const L={...R};return delete L[l],L}const w=R[l];return w&&Math.abs(w.thickness-h.thickness)<=.25&&w.visible===h.visible&&w.direction===h.direction&&w.startPanelId===h.startPanelId&&w.endPanelId===h.endPanelId?R:{...R,[l]:h}})},[]),b=f.useMemo(()=>({direction:t,panels:c,containerSize:z,isContainerReady:x,showDebugInfo:r,registerPanel:ce,unregisterPanel:de,resizePanels:ze,collapsePanel:Se,expandPanel:ye,getPanel:ve,reportPanelMeasurement:G,panelMeasurements:P,reportHandleMeasurement:oe,handleMeasurements:m,layoutConstraintViolation:g}),[t,c,z,x,r,ce,de,ze,Se,ye,ve,G,P,oe,m,g]),V=f.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:S,contextValue:b,groupStyle:V}},Mt=t=>{const{getPanel:e,collapsePanel:n,expandPanel:d}=$e(),r=e(t),c=f.useCallback(u=>{n(t,u)},[n,t]),i=f.useCallback((u,x)=>{d(t,u,x)},[d,t]),z=f.useCallback((u,x)=>{r?.collapsed?i(u,x):c(u)},[r?.collapsed,c,i]);return f.useMemo(()=>({panel:r,isCollapsed:r?.collapsed??!1,canCollapseFromStart:r?.collapseFromStart??!1,canCollapseFromEnd:r?.collapseFromEnd??!1,collapse:c,expand:i,toggle:z}),[r,c,i,z])},Et=({panel:t,measuredPixelSize:e,measuredPercentageSize:n,containerAxisSize:d,containerLabel:r})=>{const c=t?.size,i=typeof c=="number"&&Number.isFinite(c)?`${c.toFixed(3)}px`:"-",z=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} / ${z}`,s=`${u} / ${x}`,g=t?.sizeUnit==="pixels"?"Fixed":"Flexible",C=[g,`${r}: ${o}`,`size (state): ${a}`,`size (measured): ${s}`];return{stateValueDisplay:a,measuredValueDisplay:s,containerDisplay:o,headlineLabel:g,titleText:C.join(`
|
|
2
|
+
`)}},wt=f.memo(({panel:t,measuredPixelSize:e,measuredPercentageSize:n,containerAxisSize:d,direction:r})=>{const c=r==="horizontal"?"container width":"container height",{stateValueDisplay:i,measuredValueDisplay:z,containerDisplay:u,headlineLabel:x,titleText:o}=f.useMemo(()=>Et({panel:t,measuredPixelSize:e,measuredPercentageSize:n,containerAxisSize:d,containerLabel:c}),[t,e,n,d,c]),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%"},g={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%"},P={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:g,children:M.jsx("span",{children:x})}),M.jsxs("div",{style:C,children:[M.jsx("span",{children:c}),M.jsx("span",{style:P,children:u})]}),M.jsxs("div",{style:C,children:[M.jsx("span",{children:"size (state)"}),M.jsx("span",{style:P,children:i})]}),M.jsxs("div",{style:C,children:[M.jsx("span",{children:"size (measured)"}),M.jsx("span",{style:P,children:z})]})]})})}),Xe=new ke(Ve.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},it=({ref:t,setState:e,panelIdRef:n,label:d,timerRef:r})=>c=>{if(!Number.isFinite(c))return;const i=c<0?0:c,z=d==="pixel"?.1:.01;if(Math.abs(t.current-i)<z){r&&(r.current&&clearTimeout(r.current),r.current=setTimeout(()=>{t.current=i,e(i),r.current=null},200));return}r?.current&&(clearTimeout(r.current),r.current=null),t.current=i,Xe.debug(`commit ${d}`,{panelId:n.current,[d]:i}),e(i)},It=f.memo(({id:t,defaultSize:e={value:50,unit:"percentage"},minSize:n,maxSize:d,autoMinSize:r,className:c,style:i,children:z,order:u=0,collapsible:x,defaultCollapsed:o=!1,pixelAdjustPriority:a,flexAdjustPriority:s,contentOverflow:g="auto"})=>{const{direction:C,registerPanel:P,unregisterPanel:E,getPanel:m,showDebugInfo:y,isContainerReady:S,reportPanelMeasurement:O,containerSize:X}=$e(),re=f.useRef(null),le=f.useId(),Y=f.useRef(t||`panel-${le}`),j=f.useMemo(()=>Bt(x),[x]),B=j.collapseFromStart||j.collapseFromEnd,se=f.useMemo(()=>B?j.collapseFromStart?"start":j.collapseFromEnd?"end":null:null,[B,j.collapseFromStart,j.collapseFromEnd]),U=B&&o,q=f.useMemo(()=>We(e),[e]),T=q?.unit==="pixels",$=T?void 0:q?.value,v=m(Y.current),A=!!v?.collapsed,he=(v?.size??0)<=0,ae=A||he,[ge,pe]=f.useState(()=>T&&q?q.value:v?.size!==void 0?v.size:0),[ce,de]=f.useState(()=>!T&&q?q.value:v?.percentageSize!==void 0?v.percentageSize:0),ze=f.useRef(ge),Se=f.useRef(ce),ye=f.useRef(null),ve=f.useRef(null);f.useEffect(()=>()=>{ye.current&&clearTimeout(ye.current),ve.current&&clearTimeout(ve.current)},[]);const G=f.useMemo(()=>it({ref:ze,setState:pe,panelIdRef:Y,label:"pixel",timerRef:ye}),[]),oe=f.useMemo(()=>it({ref:Se,setState:de,panelIdRef:Y,label:"percentage",timerRef:ve}),[]),b=f.useCallback(()=>{ze.current!==0&&(ze.current=0,pe(0)),Se.current!==0&&(Se.current=0,de(0))},[]);f.useEffect(()=>{if(!S)return;let _=0;if(T&&q){let J=q.value;n&&typeof n=="object"&&n.unit==="pixels"&&(J=Math.max(J,n.value)),d&&typeof d=="object"&&d.unit==="pixels"&&(J=Math.min(J,d.value)),_=J}const F=U,N=F?se:null;o&&!B&&Xe.warn("Panel defaultCollapsed is ignored because collapsible configuration is not provided.");const k=B&&F&&T?_:void 0,ee=B?$:void 0,ne=T?_:void 0,K={id:Y.current,size:F?0:_,percentageSize:F?0:$,preferredPercentageSize:$,preferredPixelSize:ne,sizeUnit:q?.unit||"percentage",originalPixelSize:T?_:void 0,minSize:n,maxSize:d,collapseFromStart:j.collapseFromStart,collapseFromEnd:j.collapseFromEnd,collapsedByDirection:N,collapsed:F,sizeBeforeCollapse:k,percentageSizeBeforeCollapse:ee,preferredPercentageSizeBeforeCollapse:B?$:void 0,preferredPixelSizeBeforeCollapse:B?ne:void 0,pixelAdjustPriority:a,flexAdjustPriority:s,autoMinSize:r};P(K)},[r,j.collapseFromEnd,j.collapseFromStart,o,q,s,B,S,T,d,n,a,se,$,P,U]),f.useEffect(()=>()=>{E(Y.current),O(Y.current,null)},[E,O]);const V=v?.size??0;f.useEffect(()=>{const _=re.current;if(!_)return;const F=()=>{if(!v)return;const K=_.parentElement;if(!K)return;const W=_.getBoundingClientRect(),J=Be(K,"horizontal"),p=Be(K,"vertical"),D=C==="horizontal"?W.width:W.height,te=C==="horizontal"?J.inner:p.inner,ie=Ze(te);if(ae){b();return}const xe=v.size??0,we=Math.max(2,ie*.5);if(xe>ie&&D<we){Xe.debug("skip noisy measurement",{panelId:Y.current,expectedPanelSize:xe,measured:D,noiseThreshold:we});return}if(D>0){G(D),te>0&&oe(D/te*100);return}v.size!==void 0&&G(v.size),v.percentageSize!==void 0?oe(v.percentageSize):v.sizeUnit==="pixels"&&v.size!==void 0&&te>0&&oe(v.size/te*100)},N=new ResizeObserver(()=>{F()});N.observe(_),F();const k=[],ee=new MutationObserver(()=>{(()=>{if(!re.current)return!1;const W=re.current.getBoundingClientRect();return(C==="horizontal"?W.width:W.height)!==ze.current})()&&setTimeout(F,0)}),ne=_.parentElement;return ne&&ee.observe(ne,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["style","class"]}),()=>{N.disconnect(),ee.disconnect();for(const K of k)clearTimeout(K)}},[oe,G,v,C,ae,b]);const l=v?.size,h=v?.percentageSize,R=v?.sizeUnit;f.useEffect(()=>{if(v){if(ae){b();return}if(l!==void 0&&G(l),h!==void 0)oe(h);else if(R==="pixels"&&l!==void 0){const _=re.current,F=_?.parentElement;if(_&&F){const{width:N,height:k}=_.getBoundingClientRect(),ee=F.clientWidth,ne=F.clientHeight,K=C==="horizontal"?N:k,W=C==="horizontal"?ee:ne;if(K>0&&W>0){const J=K/W*100;oe(J)}}}}},[oe,G,v,h,l,R,C,ae,b]),f.useEffect(()=>{O(Y.current,{pixelSize:ge,percentageSize:ce})},[O,ge,ce]);const w=()=>ae?"0px":v?.originalPixelSize!==void 0?`${V}px`:v?.percentageSize!==void 0?`${v.percentageSize}%`:`${V}px`,L=v?.sizeUnit==="percentage"&&!v?.collapsed?1:0,I={flexBasis:w(),flexGrow:0,flexShrink:L,overflow:"hidden",position:"relative",boxSizing:"border-box",minHeight:"0px",minWidth:"0px",...i};C==="horizontal"?(I.height="100%",I.minWidth=0):(I.width="100%",I.minHeight=0),ae&&(C==="horizontal"?(I.width="0px",I.minWidth="0px"):(I.height="0px",I.minHeight="0px"),I.flexGrow=0,I.flexShrink=0,I.pointerEvents="none",I.visibility="hidden",A&&(I.display="none"));const H=C==="horizontal"?X.width:X.height,Z=f.useMemo(()=>({position:"absolute",inset:"0px",overflow:g,display:"flex",flexDirection:"column",width:"100%",height:"100%",minWidth:"0px",minHeight:"0px"}),[g]);return M.jsxs("div",{ref:re,className:je.twMerge("panel",c),style:I,"data-panel-id":Y.current,"data-panel-size":V,"data-panel-size-unit":v?.sizeUnit||"percentage","data-panel-pixel-size":v?.sizeUnit==="pixels"?v?.originalPixelSize:null,"data-panel-order":u,"data-panel-collapsible":B,"data-panel-collapse-start":j.collapseFromStart,"data-panel-collapse-end":j.collapseFromEnd,"data-panel-collapsed":v?.collapsed,"aria-hidden":ae,children:[M.jsx("div",{style:Z,children:z}),y&&M.jsx(wt,{panel:v,measuredPixelSize:ge,measuredPercentageSize:ce,containerAxisSize:H,direction:C})]})}),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,c=!0,i=[],z={ownerId:null,groups:i};const u=()=>{for(const m of t)m()},x=()=>{c=!0,u()},o=()=>{const m=d;if(m&&n.has(m))return!1;d=null;const y=n.values().next();return y.done||(d=y.value),m!==d};return{subscribe:m=>(t.add(m),()=>{t.delete(m)}),getSnapshot:()=>(o()&&(c=!0),c&&(i=Array.from(e.values()).sort((y,S)=>y.index-S.index).map(({serializedPanels:y,serializedHandles:S,...O})=>O),z={ownerId:d,groups:i},c=!1),z),getOwnerId:()=>(o()&&(c=!0),d),enableGroup:m=>{const y=n.size;n.add(m),n.size!==y&&o()&&x()},disableGroup:m=>{n.delete(m)&&o()&&x()},updateGroup:(m,y)=>{const S=e.get(m),O=S?.index??r++,X=Ft(y.panels),re=Nt(y.handles),le=S?.displayName!==y.displayName,Y=S?.direction!==y.direction,j=S?S.containerSize.width!==y.containerSize.width||S.containerSize.height!==y.containerSize.height:!0;let B=S?.serializedPanels!==X;if(!B&&S)if(S.panels.length!==y.panels.length)B=!0;else for(let $=0;$<y.panels.length;$+=1){const v=S.panels[$],A=y.panels[$];if(!(v&&A)){B=!0;break}if(v.id!==A.id||v.size!==A.size||v.percentageSize!==A.percentageSize||v.collapsed!==A.collapsed||v.measuredPixelSize!==A.measuredPixelSize||v.measuredPercentageSize!==A.measuredPercentageSize){B=!0;break}}let se=S?.serializedHandles!==re;if(!se&&S)if(S.handles.length!==y.handles.length)se=!0;else for(let $=0;$<y.handles.length;$+=1){const v=S.handles[$],A=y.handles[$];if(!(v&&A)){se=!0;break}if(v.id!==A.id||v.thickness!==A.thickness||v.visible!==A.visible||v.direction!==A.direction||v.startPanelId!==A.startPanelId||v.endPanelId!==A.endPanelId){se=!0;break}}if(!S&&y.panels.length===0&&y.handles.length===0||S&&!le&&!Y&&!j&&!B&&!se)return;const U=y.panels.map($=>({...$})),q=y.handles.map($=>({...$})),T={...y.containerSize};e.set(m,{groupId:m,displayName:y.displayName,direction:y.direction,containerSize:T,panels:U,handles:q,index:O,serializedPanels:X,serializedHandles:re}),x()},removeGroup:m=>{const y=e.delete(m),S=n.delete(m),O=o();(y||S||O)&&x()}}},Ee=At(),Lt=()=>f.useSyncExternalStore(Ee.subscribe,Ee.getOwnerId,Ee.getOwnerId),Dt=()=>f.useSyncExternalStore(Ee.subscribe,Ee.getSnapshot,Ee.getSnapshot),Ot=t=>{Ee.enableGroup(t)},rt=t=>{Ee.disableGroup(t)},Tt=(t,e)=>{Ee.updateGroup(t,e)},nt=t=>{Ee.removeGroup(t)};let st=0;const _t=()=>(st+=1,`panel-group-${st}`),Ae=(t,e)=>typeof t!="number"||!Number.isFinite(t)?"—":`${(t<0?0:t).toFixed(8)}${e}`,jt={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"},kt={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"},ot={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 c=e[r.id];return!c||r.measuredPixelSize===c.pixelSize&&r.measuredPercentageSize===c.percentageSize?r:(n=!0,{...r,measuredPixelSize:c.pixelSize,measuredPercentageSize:c.percentageSize})});return n?d:t},at=(t,e,n)=>{const d=Be(t,"horizontal"),r=Be(t,"vertical"),c=t.getBoundingClientRect(),i=d.inner>0?d.inner:e??c.width,z=r.inner>0?r.inner:n??c.height;return{width:i,height:z}},Zt=t=>{const{id:e,className:n,style:d,children:r,direction:c}=t,{groupRef:i,contextValue:z,groupStyle:u}=gt(t),[x,o]=f.useState({width:0,height:0}),a=z.layoutConstraintViolation,s=!!a,g=f.useMemo(()=>{if(!a)return null;const{summary:U,detail:q}=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:U}),M.jsx("span",{className:"text-slate-500 text-xs dark:text-slate-400",children:q})]})},[a]),P=f.useRef(e??_t()).current,E=e??P,m=z.showDebugInfo&&z.panels.length>0,y=m?z.panels:[],S=m?z.panelMeasurements:{},O=f.useMemo(()=>{if(!m)return[];const U=Object.values(z.handleMeasurements);return U.length<=1?U:U.slice().sort((q,T)=>q.id.localeCompare(T.id))},[z.handleMeasurements,m]),X=z.containerSize,re=x.width>0?x.width:X.width,le=x.height>0?x.height:X.height,Y=Lt(),j=m&&Y===P;f.useLayoutEffect(()=>{if(!m){o({width:0,height:0});return}if(typeof window>"u"||typeof ResizeObserver>"u")return;const U=i.current;if(!U)return;const q=$=>{o(v=>v.width===$.width&&v.height===$.height?v:$)},T=new ResizeObserver($=>{for(const v of $){if(v.target!==U)continue;const A=at(U,v.contentRect.width,v.contentRect.height);q(A)}});return T.observe(U),q(at(U)),()=>{T.disconnect()}},[i,m]);const B=f.useMemo(()=>qt(y,S),[y,S]);f.useEffect(()=>{if(!m){rt(P),nt(P);return}return Ot(P),()=>{rt(P),nt(P)}},[m,P]),f.useEffect(()=>{m&&Tt(P,{displayName:E,direction:c,containerSize:{width:re,height:le},panels:B,handles:O})},[m,P,E,c,re,le,B,O]);const se=f.useMemo(()=>{const U={...u,...d};return U.position||(U.position="relative"),U},[u,d]);return M.jsxs(Je.Provider,{value:z,children:[M.jsxs("div",{ref:i,className:je.twMerge("panel-group",c==="horizontal"?"flex-row":"flex-col",n),style:se,"data-panel-group-id":e,"data-panel-group-direction":c,children:[r,s&&g?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:g}):null]}),j&&M.jsx(Xt,{})]})},Xt=()=>{const e=Dt().groups,[n,d]=f.useState(!0);if(e.length===0||typeof document>"u")return null;const r=e.reduce((u,x)=>u+x.panels.length,0),c=e.reduce((u,x)=>u+(x.handles?.length??0),0),i=()=>d(u=>!u),z=M.jsxs("div",{style:{...jt,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:{...kt,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: ",c]})]}),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:{...ot,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: ",Ae(u.containerSize.width,"px")," × ",Ae(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 g=a.measuredPixelSize??a.size,C=a.size,P=Ae(C,"px"),E=a.percentageSize??(o>0?a.size/o*100:void 0),m=a.measuredPercentageSize!==void 0?a.measuredPercentageSize:o>0?g/o*100:void 0,y=a.collapsed||g<=ct,S=a.collapsed?"collapsed":y?"hidden":"visible",O=Ae(E,"%"),X=Ae(m,"%"),re=Ae(g,"px");return M.jsxs("div",{style:Wt,children:[M.jsxs("div",{style:ot,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)":y?"rgba(250, 204, 21, 0.25)":"rgba(74, 222, 128, 0.25)",color:a.collapsed?"#fecdd3":y?"#fef08a":"#bbf7d0"},children:S})]}),M.jsxs("div",{style:$t,children:[M.jsx("span",{children:"size (state):"}),M.jsx("span",{children:P}),M.jsx("span",{children:"size (measured):"}),M.jsx("span",{children:re}),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(z,document.body)},Jt=f.memo(({id:t,disabled:e=!1,className:n,style:d,children:r,onDragging:c})=>{const{direction:i,resizePanels:z,getPanel:u,collapsePanel:x,expandPanel:o,panels:a,reportHandleMeasurement:s,containerSize:g,layoutConstraintViolation:C}=$e(),[P,E]=f.useState(!1),m=f.useRef(null),y=f.useRef(null),S=f.useRef(""),O=f.useRef(""),[X,re]=f.useState({left:null,right:null}),le=f.useId(),Y=f.useRef(t??`resize-handle-${le}`),j=f.useRef(null),B=t??Y.current,se=!!C,U=e||se;f.useEffect(()=>{if(m.current){const b=m.current.parentElement;if(b){y.current=b;const V=Array.from(b.children),l=m.current,h=V.indexOf(l);if(h>0&&h<V.length-1){let R=null,w=null;for(let L=h-1;L>=0;L-=1){const I=V[L];if(I.dataset.panelId){R=I;break}}for(let L=h+1;L<V.length;L+=1){const I=V[L];if(I.dataset.panelId){w=I;break}}S.current=R?.dataset.panelId||"",O.current=w?.dataset.panelId||"",re({left:S.current||null,right:O.current||null})}}}},[]),f.useEffect(()=>{if(B===Y.current)return;const b=Y.current;Y.current=B,j.current=null,b!==B&&s(b,null)},[s,B]),f.useEffect(()=>{const b=Y.current;return()=>{s(b,null)}},[s]);const q=f.useCallback(b=>{if(U||!y.current)return;b.preventDefault(),b.stopPropagation();const V=y.current,{inner:l}=Be(V,i),h={x:b.clientX,y:b.clientY},R=u(S.current),w=u(O.current);if(!(R&&w))return;const L=R.size,I=w.size;let H=0;const Z=Pt;E(!0),c?.(!0),b.currentTarget.setPointerCapture(b.pointerId);const _=N=>{if(!m.current)return;N.preventDefault(),N.stopPropagation();const k=performance.now();if(k-H<Z)return;H=k;const ee=i==="horizontal"?N.clientX-h.x:N.clientY-h.y;if(ee===0)return;const ne=L+ee,K=I-ee,W=u(S.current),J=u(O.current);if(W&&J&&S.current&&O.current){const p=Q(W.minSize,0,l),D=Q(J.minSize,0,l),te=p,ie=D,xe=Math.min(l*dt,ut),we=Math.min(l*bt,Ct),Le=J.collapseFromStart,Re=J.collapsedByDirection??"start";if(Le&&!J.collapsed&&K<=Math.max(D*.3,xe)){x(O.current,"start");return}const De=W.collapseFromEnd,Ne=W.collapsedByDirection??"end";if(De&&!W.collapsed&&ne<=Math.max(p*.3,xe)){x(S.current,"end");return}if(J.collapsed&&K>Math.max(D*.3,we)){o(O.current,Re,K);return}if(W.collapsed&&ne>Math.max(p*.3,we)){o(S.current,Ne,ne);return}if(l>0){const be=W.size+J.size,Me=Ze(l);let Ye=!1;if(te<=Me&&ne<=Me&&L!==0){const Oe=Math.max(0,be-0);Oe>=ie&&(z(S.current,O.current,0,Oe),Ye=!0)}else if(ie<=Me&&K<=Me&&I!==0){const Oe=Math.max(0,be-0);Oe>=te&&(z(S.current,O.current,Oe,0),Ye=!0)}if(Ye)return}if(W.collapsed||J.collapsed)return;z(S.current,O.current,ne,K)}},F=()=>{E(!1),c?.(!1),document.removeEventListener("pointermove",_),document.removeEventListener("pointerup",F)};document.addEventListener("pointermove",_),document.addEventListener("pointerup",F)},[U,i,z,u,x,o,c]),T=i==="horizontal",$=T?"cursor-col-resize":"cursor-row-resize",v=je.twMerge("group absolute z-20 flex select-none items-center justify-center border-none bg-transparent transition-colors duration-150 overflow-visible",$,T?"h-full":"w-full",!U&&"hover:bg-gray-200/70 dark:hover:bg-gray-700/70",!U&&"active:bg-blue-300/60 dark:active:bg-blue-700/60",P&&"bg-blue-200/80 dark:bg-blue-800/60",U&&"cursor-not-allowed opacity-50","focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-opacity-50",n),A=f.useMemo(()=>{const b=V=>{if(!V)return-1;for(let l=0;l<a.length;l+=1)if(a[l].id===V)return l;return-1};return{left:b(X.left),right:b(X.right)}},[X.left,X.right,a]),he=T?g.width:g.height,ae=f.useMemo(()=>{const b=(V,l)=>{if(V>l)return 0;let h=0;for(let R=V;R<=l;R+=1){const w=a[R];if(!w)continue;const L=w.size??0,I=Math.max(0,L);h+=w.collapsed?0:I}return h};return A.left>=0?b(0,A.left):A.right>0?b(0,A.right-1):0},[A.left,A.right,a]),ge=f.useMemo(()=>!Number.isFinite(ae)||ae<0?0:he>0&&ae>he?he:ae,[ae,he]),pe=f.useMemo(()=>{const b={position:"absolute",zIndex:20,touchAction:"none"};return T?(b.top=0,b.left=`${ge}px`,b.transform="translateX(-50%)",b.width=`${Ke}px`,b.height="100%"):(b.left=0,b.top=`${ge}px`,b.transform="translateY(-50%)",b.height=`${Ke}px`,b.width="100%"),b},[ge,T]),ce=f.useMemo(()=>{const b=Ze(he),V=Z=>{if(Z<0||Z>=a.length)return!1;const _=a[Z];return _?_.collapsed?!0:_.size<=b:!1},l=(Z,_)=>{if(!V(Z))return 0;let F=0;for(let N=Z;N>=0&&N<a.length&&V(N);N+=_)F+=1;return F},h=A.left,R=A.right,w=h>=0?l(h,-1):0,L=R>=0?l(R,1):0;return{groupSize:w+L+1,overlapIndex:w}},[A.left,A.right,a,he]),de=f.useMemo(()=>{if(se)return!0;if(ce.groupSize<=1)return!1;const b=ce.groupSize-1;return ce.overlapIndex>0&&ce.overlapIndex<b},[ce,se]),ze=f.useMemo(()=>{if(ce.groupSize<=1||de)return 0;const b=ce.groupSize>1?2:1;if(b===1)return 0;const V=ce.overlapIndex===0?0:b-1,l=(b-1)/2;return(V-l)*St},[ce,de]),Se=f.useMemo(()=>{if(de)return{display:"none"};if(ze!==0)return T?{transform:`translateX(${ze}px)`}:{transform:`translateY(${ze}px)`}},[ze,T,de]),ye=je.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)]",T?"h-12 w-[6px] px-[2px]":"h-[6px] w-20 py-[2px]",P&&"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)]"),ve=je.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)]",T?"h-8 w-[2px]":"h-[2px] w-16",P&&"bg-blue-500 dark:bg-blue-300",!U&&"group-hover:bg-slate-700 dark:group-hover:bg-slate-100"),G=f.useCallback(()=>{const b=m.current;if(!b)return;let V=0;if(!de){const R=i==="horizontal"?b.offsetWidth:b.offsetHeight;let w=0,L=0;if(typeof window<"u"){const H=window.getComputedStyle(b);i==="horizontal"?(w=Number.parseFloat(H.marginLeft||"0"),L=Number.parseFloat(H.marginRight||"0")):(w=Number.parseFloat(H.marginTop||"0"),L=Number.parseFloat(H.marginBottom||"0"))}V=[R,w,L].reduce((H,Z)=>Number.isFinite(Z)?H+Z:H,0)}(!Number.isFinite(V)||V<0)&&(V=0);const l={id:B,thickness:V,direction:i,visible:!de&&V>yt,startPanelId:X.left,endPanelId:X.right},h=j.current;h&&Math.abs(h.thickness-l.thickness)<=.25&&h.visible===l.visible&&h.direction===l.direction&&h.startPanelId===l.startPanelId&&h.endPanelId===l.endPanelId||(j.current=l,s(B,l))},[i,X.left,X.right,s,B,de]);f.useEffect(()=>{G()},[G]),f.useEffect(()=>{const b=m.current;if(!b)return;if(typeof ResizeObserver>"u"){G();return}const V=new ResizeObserver(()=>{G()});return V.observe(b),()=>{V.disconnect()}},[G]);const oe=f.useMemo(()=>{const b=d?{...pe,...d}:pe;return de?{...b,display:"none",pointerEvents:"none",visibility:"hidden"}:b},[pe,de,d]);return M.jsx("button",{type:"button",ref:m,className:v,style:oe,onPointerDown:q,disabled:U,"aria-hidden":de||void 0,"aria-label":`Resize ${T?"columns":"rows"} - Drag to collapse/expand panels`,"data-resize-handle-id":B,title:`ドラッグして${T?"列":"行"}をリサイズ、端まで移動して折りたたみ/展開`,children:r||M.jsx("div",{className:ye,style:Se,children:M.jsx("span",{className:ve})})})}),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=Je;exports.PanelResizeHandle=Jt;exports.clamp=fe;exports.getConstraintInPixels=Q;exports.getContainerSize=Be;exports.getPanelElement=Kt;exports.getPanelGroupElement=Qt;exports.getResizeHandleElement=ei;exports.loadLayout=xt;exports.normalizeSizeConfig=We;exports.saveLayout=zt;exports.usePanelControls=Mt;exports.usePanelGroup=$e;exports.useResizablePanels=gt;
|