react-resizable-panels 4.11.2 → 4.12.1
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
CHANGED
|
@@ -131,6 +131,10 @@ For most cases, it is recommended to use the <code>onLayoutChanged</code> callba
|
|
|
131
131
|
<td><p>Called after the Group's layout has been changed.</p>
|
|
132
132
|
<p>ℹ️ For layout changes caused by pointer events, this method is not called until the pointer has been released.
|
|
133
133
|
This method is recommended when saving layouts to some storage api.</p>
|
|
134
|
+
<p>ℹ️ The second argument contains meta information about the layout change.
|
|
135
|
+
The <code>isUserInteraction</code> attribute signals whether the resize was caused by direct user input.
|
|
136
|
+
It is true for resizes caused by pointer or keyboard input
|
|
137
|
+
and false for other triggers (e.g. imperative API calls, initial mount, etc.)</p>
|
|
134
138
|
</td>
|
|
135
139
|
</tr>
|
|
136
140
|
<tr>
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const re=require("react/jsx-runtime"),z=require("react");function ct(e,t){const n=getComputedStyle(e),o=parseFloat(n.fontSize);return t*o}function ft(e,t){const n=getComputedStyle(e.ownerDocument.documentElement),o=parseFloat(n.fontSize);return t*o}function dt(e){return e/100*window.innerHeight}function pt(e){return e/100*window.innerWidth}function ht(e){switch(typeof e){case"number":return[e,"px"];case"string":{const t=parseFloat(e);return e.endsWith("%")?[t,"%"]:e.endsWith("px")?[t,"px"]:e.endsWith("rem")?[t,"rem"]:e.endsWith("em")?[t,"em"]:e.endsWith("vh")?[t,"vh"]:e.endsWith("vw")?[t,"vw"]:[t,"%"]}}}function oe({groupSize:e,panelElement:t,styleProp:n}){let o;const[i,r]=ht(n);switch(r){case"%":{o=i/100*e;break}case"px":{o=i;break}case"rem":{o=ft(t,i);break}case"em":{o=ct(t,i);break}case"vh":{o=dt(i);break}case"vw":{o=pt(i);break}}return o}function T(e){return parseFloat(e.toFixed(3))}function te({group:e}){const{orientation:t,panels:n}=e;return n.reduce((o,i)=>(o+=t==="horizontal"?i.element.offsetWidth:i.element.offsetHeight,o),0)}function me(e){const{panels:t}=e,n=te({group:e});return n===0?t.map(o=>({groupResizeBehavior:o.panelConstraints.groupResizeBehavior,collapsedSize:0,collapsible:o.panelConstraints.collapsible===!0,defaultSize:void 0,disabled:o.panelConstraints.disabled,minSize:0,maxSize:100,panelId:o.id})):t.map(o=>{const{element:i,panelConstraints:r}=o;let f=0;if(r.collapsedSize!==void 0){const u=oe({groupSize:n,panelElement:i,styleProp:r.collapsedSize});f=T(u/n*100)}let a;if(r.defaultSize!==void 0){const u=oe({groupSize:n,panelElement:i,styleProp:r.defaultSize});a=T(u/n*100)}let s=0;if(r.minSize!==void 0){const u=oe({groupSize:n,panelElement:i,styleProp:r.minSize});s=T(u/n*100)}let l=100;if(r.maxSize!==void 0){const u=oe({groupSize:n,panelElement:i,styleProp:r.maxSize});l=T(u/n*100)}return{groupResizeBehavior:r.groupResizeBehavior,collapsedSize:f,collapsible:r.collapsible===!0,defaultSize:a,disabled:r.disabled,minSize:s,maxSize:l,panelId:o.id}})}function C(e,t="Assertion error"){if(!e)throw Error(t)}function ge(e,t){return Array.from(t).sort(e==="horizontal"?mt:gt)}function mt(e,t){const n=e.element.offsetLeft-t.element.offsetLeft;return n!==0?n:e.element.offsetWidth-t.element.offsetWidth}function gt(e,t){const n=e.element.offsetTop-t.element.offsetTop;return n!==0?n:e.element.offsetHeight-t.element.offsetHeight}function He(e){return e!==null&&typeof e=="object"&&"nodeType"in e&&e.nodeType===Node.ELEMENT_NODE}function Ve(e,t){return{x:e.x>=t.left&&e.x<=t.right?0:Math.min(Math.abs(e.x-t.left),Math.abs(e.x-t.right)),y:e.y>=t.top&&e.y<=t.bottom?0:Math.min(Math.abs(e.y-t.top),Math.abs(e.y-t.bottom))}}function yt({orientation:e,rects:t,targetRect:n}){const o={x:n.x+n.width/2,y:n.y+n.height/2};let i,r=Number.MAX_VALUE;for(const f of t){const{x:a,y:s}=Ve(o,f),l=e==="horizontal"?a:s;l<r&&(r=l,i=f)}return C(i,"No rect found"),i}let ue;function Be(){return ue===void 0&&(typeof matchMedia=="function"?ue=!!matchMedia("(pointer:coarse)").matches:ue=!1),ue}function We(e){const{element:t,orientation:n,panels:o,separators:i}=e,r=ge(n,Array.from(t.children).filter(He).map(x=>({element:x}))).map(({element:x})=>x),f=[];let a=!1,s=!1,l=-1,u=-1,h=0,d,S=[];{let x=-1;for(const c of r)c.hasAttribute("data-panel")&&(x++,c.hasAttribute("data-disabled")||(h++,l===-1&&(l=x),u=x))}if(h>1){let x=-1;for(const c of r)if(c.hasAttribute("data-panel")){x++;const p=o.find(m=>m.element===c);if(p){if(d){const m=d.element.getBoundingClientRect(),v=c.getBoundingClientRect();let b;if(s){const y=n==="horizontal"?new DOMRect(m.right,m.top,0,m.height):new DOMRect(m.left,m.bottom,m.width,0),g=n==="horizontal"?new DOMRect(v.left,v.top,0,v.height):new DOMRect(v.left,v.top,v.width,0);switch(S.length){case 0:{b=[y,g];break}case 1:{const w=S[0],M=yt({orientation:n,rects:[m,v],targetRect:w.element.getBoundingClientRect()});b=[w,M===m?g:y];break}default:{b=S;break}}}else S.length?b=S:b=[n==="horizontal"?new DOMRect(m.right,v.top,v.left-m.right,v.height):new DOMRect(v.left,m.bottom,v.width,v.top-m.bottom)];for(const y of b){let g="width"in y?y:y.element.getBoundingClientRect();const w=Be()?e.resizeTargetMinimumSize.coarse:e.resizeTargetMinimumSize.fine;if(g.width<w){const L=w-g.width;g=new DOMRect(g.x-L/2,g.y,g.width+L,g.height)}if(g.height<w){const L=w-g.height;g=new DOMRect(g.x,g.y-L/2,g.width,g.height+L)}const M=x<=l||x>u;!a&&!M&&f.push({group:e,groupSize:te({group:e}),panels:[d,p],separator:"width"in y?void 0:y,rect:g}),a=!1}}s=!1,d=p,S=[]}}else if(c.hasAttribute("data-separator")){c.ariaDisabled!==null&&(a=!0);const p=i.find(m=>m.element===c);p?S.push(p):(d=void 0,S=[])}else s=!0}return f}class Ue{#e={};addListener(t,n){const o=this.#e[t];return o===void 0?this.#e[t]=[n]:o.includes(n)||o.push(n),()=>{this.removeListener(t,n)}}emit(t,n){const o=this.#e[t];if(o!==void 0)if(o.length===1)o[0].call(null,n);else{let i=!1,r=null;const f=Array.from(o);for(let a=0;a<f.length;a++){const s=f[a];try{s.call(null,n)}catch(l){r===null&&(i=!0,r=l)}}if(i)throw r}}removeAllListeners(){this.#e={}}removeListener(t,n){const o=this.#e[t];if(o!==void 0){const i=o.indexOf(n);i>=0&&o.splice(i,1)}}}let F=new Map;const Ke=new Ue;function St(e){F=new Map(F),F.delete(e)}function Re(e,t){for(const[n]of F)if(n.id===e)return n}function H(e,t){for(const[n,o]of F)if(n.id===e)return o;if(t)throw Error(`Could not find data for Group with id ${e}`)}function q(){return F}function ye(e,t){return Ke.addListener("groupChange",n=>{n.group.id===e&&t(n)})}function j(e,t){const n=F.get(e);F=new Map(F),F.set(e,t),Ke.emit("groupChange",{group:e,prev:n,next:t})}function vt(e,t,n){let o,i={x:1/0,y:1/0};for(const r of t){const f=Ve(n,r.rect);switch(e){case"horizontal":{f.x<=i.x&&(o=r,i=f);break}case"vertical":{f.y<=i.y&&(o=r,i=f);break}}}return o?{distance:i,hitRegion:o}:void 0}function bt(e){return e!==null&&typeof e=="object"&&"nodeType"in e&&e.nodeType===Node.DOCUMENT_FRAGMENT_NODE}function zt(e,t){if(e===t)throw new Error("Cannot compare node with itself");const n={a:Me(e),b:Me(t)};let o;for(;n.a.at(-1)===n.b.at(-1);)o=n.a.pop(),n.b.pop();C(o,"Stacking order can only be calculated for elements with a common ancestor");const i={a:Ee(Ce(n.a)),b:Ee(Ce(n.b))};if(i.a===i.b){const r=o.childNodes,f={a:n.a.at(-1),b:n.b.at(-1)};let a=r.length;for(;a--;){const s=r[a];if(s===f.a)return 1;if(s===f.b)return-1}}return Math.sign(i.a-i.b)}const xt=/\b(?:position|zIndex|opacity|transform|webkitTransform|mixBlendMode|filter|webkitFilter|isolation)\b/;function Pt(e){const t=getComputedStyle(qe(e)??e).display;return t==="flex"||t==="inline-flex"}function wt(e){const t=getComputedStyle(e);return!!(t.position==="fixed"||t.zIndex!=="auto"&&(t.position!=="static"||Pt(e))||+t.opacity<1||"transform"in t&&t.transform!=="none"||"webkitTransform"in t&&t.webkitTransform!=="none"||"mixBlendMode"in t&&t.mixBlendMode!=="normal"||"filter"in t&&t.filter!=="none"||"webkitFilter"in t&&t.webkitFilter!=="none"||"isolation"in t&&t.isolation==="isolate"||xt.test(t.willChange)||t.webkitOverflowScrolling==="touch")}function Ce(e){let t=e.length;for(;t--;){const n=e[t];if(C(n,"Missing node"),wt(n))return n}return null}function Ee(e){return e&&Number(getComputedStyle(e).zIndex)||0}function Me(e){const t=[];for(;e;)t.push(e),e=qe(e);return t}function qe(e){const{parentNode:t}=e;return bt(t)?t.host:t}function Lt(e,t){return e.x<t.x+t.width&&e.x+e.width>t.x&&e.y<t.y+t.height&&e.y+e.height>t.y}function Rt({groupElement:e,hitRegion:t,pointerEventTarget:n}){if(!He(n)||n.contains(e)||e.contains(n))return!0;if(zt(n,e)>0){let o=n;for(;o;){if(o.contains(e))return!0;if(Lt(o.getBoundingClientRect(),t))return!1;o=o.parentElement}}return!0}function Se(e,t){const n=[];return t.forEach((o,i)=>{if(i.disabled)return;const r=We(i),f=vt(i.orientation,r,{x:e.clientX,y:e.clientY});f&&f.distance.x<=0&&f.distance.y<=0&&Rt({groupElement:i.element,hitRegion:f.hitRegion.rect,pointerEventTarget:e.target})&&n.push(f.hitRegion)}),n}function Ct(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!=t[n])return!1;return!0}function D(e,t,n=0){return Math.abs(T(e)-T(t))<=n}function A(e,t){return D(e,t)?0:e>t?1:-1}function Z({overrideDisabledPanels:e,panelConstraints:t,prevSize:n,size:o}){const{collapsedSize:i=0,collapsible:r,disabled:f,maxSize:a=100,minSize:s=0}=t;if(f&&!e)return n;if(A(o,s)<0)if(r){const l=(i+s)/2;A(o,l)<0?o=i:o=s}else o=s;return o=Math.min(a,o),o=T(o),o}function se({delta:e,initialLayout:t,panelConstraints:n,pivotIndices:o,prevLayout:i,trigger:r}){if(D(e,0))return t;const f=r==="imperative-api",a=Object.values(t),s=Object.values(i),l=[...a],[u,h]=o;C(u!=null,"Invalid first pivot index"),C(h!=null,"Invalid second pivot index");let d=0;switch(r){case"keyboard":{{const c=e<0?h:u,p=n[c];C(p,`Panel constraints not found for index ${c}`);const{collapsedSize:m=0,collapsible:v,minSize:b=0}=p;if(v){const y=a[c];if(C(y!=null,`Previous layout not found for panel index ${c}`),D(y,m)){const g=b-y;A(g,Math.abs(e))>0&&(e=e<0?0-g:g)}}}{const c=e<0?u:h,p=n[c];C(p,`No panel constraints found for index ${c}`);const{collapsedSize:m=0,collapsible:v,minSize:b=0}=p;if(v){const y=a[c];if(C(y!=null,`Previous layout not found for panel index ${c}`),D(y,b)){const g=y-m;A(g,Math.abs(e))>0&&(e=e<0?0-g:g)}}}break}default:{const c=e<0?h:u,p=n[c];C(p,`Panel constraints not found for index ${c}`);const m=a[c],{collapsible:v,collapsedSize:b,minSize:y}=p;if(v&&A(m,y)<0)if(e>0){const g=y-b,w=g/2,M=m+e;A(M,y)<0&&(e=A(e,w)<=0?0:g)}else{const g=y-b,w=100-g/2,M=m-e;A(M,y)<0&&(e=A(100+e,w)>0?0:-g)}break}}{const c=e<0?1:-1;let p=e<0?h:u,m=0;for(;;){const b=a[p];C(b!=null,`Previous layout not found for panel index ${p}`);const g=Z({overrideDisabledPanels:f,panelConstraints:n[p],prevSize:b,size:100})-b;if(m+=g,p+=c,p<0||p>=n.length)break}const v=Math.min(Math.abs(e),Math.abs(m));e=e<0?0-v:v}{let p=e<0?u:h;for(;p>=0&&p<n.length;){const m=Math.abs(e)-Math.abs(d),v=a[p];C(v!=null,`Previous layout not found for panel index ${p}`);const b=v-m,y=Z({overrideDisabledPanels:f,panelConstraints:n[p],prevSize:v,size:b});if(!D(v,y)&&(d+=v-y,l[p]=y,d.toFixed(3).localeCompare(Math.abs(e).toFixed(3),void 0,{numeric:!0})>=0))break;e<0?p--:p++}}if(Ct(s,l))return i;{const c=e<0?h:u,p=a[c];C(p!=null,`Previous layout not found for panel index ${c}`);const m=p+d,v=Z({overrideDisabledPanels:f,panelConstraints:n[c],prevSize:p,size:m});if(l[c]=v,!D(v,m)){let b=m-v,g=e<0?h:u;for(;g>=0&&g<n.length;){const w=l[g];C(w!=null,`Previous layout not found for panel index ${g}`);const M=w+b,L=Z({overrideDisabledPanels:f,panelConstraints:n[g],prevSize:w,size:M});if(D(w,L)||(b-=L-w,l[g]=L),D(b,0))break;e>0?g--:g++}}}const S=Object.values(l).reduce((c,p)=>p+c,0);if(!D(S,100,.1))return i;const x=Object.keys(i);return l.reduce((c,p,m)=>(c[x[m]]=p,c),{})}function W(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(t[n]===void 0||A(e[n],t[n])!==0)return!1;return!0}function U({layout:e,panelConstraints:t}){const n=Object.values(e),o=[...n],i=o.reduce((a,s)=>a+s,0);if(o.length!==t.length)throw Error(`Invalid ${t.length} panel layout: ${o.map(a=>`${a}%`).join(", ")}`);if(!D(i,100)&&o.length>0)for(let a=0;a<t.length;a++){const s=o[a];C(s!=null,`No layout data found for index ${a}`);const l=100/i*s;o[a]=l}let r=0;for(let a=0;a<t.length;a++){const s=n[a];C(s!=null,`No layout data found for index ${a}`);const l=o[a];C(l!=null,`No layout data found for index ${a}`);const u=Z({overrideDisabledPanels:!0,panelConstraints:t[a],prevSize:s,size:l});l!=u&&(r+=l-u,o[a]=u)}if(!D(r,0))for(let a=0;a<t.length;a++){const s=o[a];C(s!=null,`No layout data found for index ${a}`);const l=s+r,u=Z({overrideDisabledPanels:!0,panelConstraints:t[a],prevSize:s,size:l});if(s!==u&&(r-=u-s,o[a]=u,D(r,0)))break}const f=Object.keys(e);return o.reduce((a,s,l)=>(a[f[l]]=s,a),{})}function Xe({groupId:e,panelId:t}){const n=()=>{const s=q();for(const[l,{defaultLayoutDeferred:u,derivedPanelConstraints:h,layout:d,groupSize:S,separatorToPanels:x}]of s)if(l.id===e)return{defaultLayoutDeferred:u,derivedPanelConstraints:h,group:l,groupSize:S,layout:d,separatorToPanels:x};throw Error(`Group ${e} not found`)},o=()=>{const s=n().derivedPanelConstraints.find(l=>l.panelId===t);if(s!==void 0)return s;throw Error(`Panel constraints not found for Panel ${t}`)},i=()=>{const s=n().group.panels.find(l=>l.id===t);if(s!==void 0)return s;throw Error(`Layout not found for Panel ${t}`)},r=()=>{const s=n().layout[t];if(s!==void 0)return s;throw Error(`Layout not found for Panel ${t}`)},f=({nextSize:s,panels:l,prevLayout:u,derivedPanelConstraints:h})=>{const d=r(),S=l.findIndex(m=>m.id===t),x=S===0,c=S===l.length-1;if(c&&s<d&&(x||l.slice(0,S).every((m,v)=>{const b=h[v];return b?.collapsible&&D(b.collapsedSize,u[b.panelId])}))){const m=l.slice(0,S).reduce((v,b)=>v+u[b.id],0);return{...u,[t]:T(100-m)}}return se({delta:c?d-s:s-d,initialLayout:u,panelConstraints:h,pivotIndices:c?[S-1,S]:[S,S+1],prevLayout:u,trigger:"imperative-api"})},a=s=>{const l=r();if(s===l)return;const{defaultLayoutDeferred:u,derivedPanelConstraints:h,group:d,groupSize:S,layout:x,separatorToPanels:c}=n(),p=f({nextSize:s,panels:d.panels,prevLayout:x,derivedPanelConstraints:h}),m=U({layout:p,panelConstraints:h});W(x,m)||j(d,{defaultLayoutDeferred:u,derivedPanelConstraints:h,groupSize:S,layout:m,separatorToPanels:c})};return{collapse:()=>{const{collapsible:s,collapsedSize:l}=o(),{mutableValues:u}=i(),h=r();s&&h!==l&&(u.expandToSize=h,a(l))},expand:()=>{const{collapsible:s,collapsedSize:l,minSize:u}=o(),{mutableValues:h}=i(),d=r();if(s&&d===l){let S=h.expandToSize??u;S===0&&(S=1),a(S)}},getSize:()=>{const{group:s}=n(),l=r(),{element:u}=i(),h=s.orientation==="horizontal"?u.offsetWidth:u.offsetHeight;return{asPercentage:l,inPixels:h}},isCollapsed:()=>{const{collapsible:s,collapsedSize:l}=o(),u=r();return s&&D(l,u)},resize:s=>{const{group:l}=n(),{element:u}=i(),h=te({group:l}),d=oe({groupSize:h,panelElement:u,styleProp:s}),S=T(d/h*100);a(S)}}}function ke(e){if(e.defaultPrevented)return;const t=q();Se(e,t).forEach(o=>{if(o.separator&&!o.separator.disableDoubleClick){const i=o.panels.find(r=>r.panelConstraints.defaultSize!==void 0);if(i){const r=i.panelConstraints.defaultSize,f=Xe({groupId:o.group.id,panelId:i.id});f&&r!==void 0&&(f.resize(r),e.preventDefault())}}})}function fe(e){const t=q();for(const[n]of t)if(n.separators.some(o=>o.element===e))return n;throw Error("Could not find parent Group for separator element")}function Ye({groupId:e}){const t=()=>{const n=q();for(const[o,i]of n)if(o.id===e)return{group:o,...i};throw Error(`Could not find Group with id "${e}"`)};return{getLayout(){const{defaultLayoutDeferred:n,layout:o}=t();return n?{}:o},setLayout(n){const{defaultLayoutDeferred:o,derivedPanelConstraints:i,group:r,groupSize:f,layout:a,separatorToPanels:s}=t(),l=U({layout:n,panelConstraints:i});return o?a:(W(a,l)||j(r,{defaultLayoutDeferred:o,derivedPanelConstraints:i,groupSize:f,layout:l,separatorToPanels:s}),l)}}}function B(e,t){const n=fe(e),o=H(n.id,!0),i=n.separators.find(h=>h.element===e);C(i,"Matching separator not found");const r=o.separatorToPanels.get(i);C(r,"Matching panels not found");const f=r.map(h=>n.panels.indexOf(h)),s=Ye({groupId:n.id}).getLayout(),l=se({delta:t,initialLayout:s,panelConstraints:o.derivedPanelConstraints,pivotIndices:f,prevLayout:s,trigger:"keyboard"}),u=U({layout:l,panelConstraints:o.derivedPanelConstraints});W(s,u)||j(n,{defaultLayoutDeferred:o.defaultLayoutDeferred,derivedPanelConstraints:o.derivedPanelConstraints,groupSize:o.groupSize,layout:u,separatorToPanels:o.separatorToPanels})}function Ie(e){if(e.defaultPrevented)return;const t=e.currentTarget,n=fe(t);if(!n.disabled)switch(e.key){case"ArrowDown":{e.preventDefault(),n.orientation==="vertical"&&B(t,5);break}case"ArrowLeft":{e.preventDefault(),n.orientation==="horizontal"&&B(t,-5);break}case"ArrowRight":{e.preventDefault(),n.orientation==="horizontal"&&B(t,5);break}case"ArrowUp":{e.preventDefault(),n.orientation==="vertical"&&B(t,-5);break}case"End":{e.preventDefault(),B(t,100);break}case"Enter":{e.preventDefault();const o=fe(t),i=H(o.id,!0),{derivedPanelConstraints:r,layout:f,separatorToPanels:a}=i,s=o.separators.find(d=>d.element===t);C(s,"Matching separator not found");const l=a.get(s);C(l,"Matching panels not found");const u=l[0],h=r.find(d=>d.panelId===u.id);if(C(h,"Panel metadata not found"),h.collapsible){const d=f[u.id],S=h.collapsedSize===d?o.mutableState.expandedPanelSizes[u.id]??h.minSize:h.collapsedSize;B(t,S-d)}break}case"F6":{e.preventDefault();const i=fe(t).separators.map(s=>s.element),r=Array.from(i).findIndex(s=>s===e.currentTarget);C(r!==null,"Index not found");const f=e.shiftKey?r>0?r-1:i.length-1:r+1<i.length?r+1:0;i[f].focus({preventScroll:!0});break}case"Home":{e.preventDefault(),B(t,-100);break}}}let Q={cursorFlags:0,state:"inactive"};const ve=new Ue;function K(){return Q}function Et(e){return ve.addListener("change",e)}function Mt(e){const t=Q,n={...Q};n.cursorFlags=e,Q=n,ve.emit("change",{prev:t,next:n})}function ee(e){const t=Q;Q=e,ve.emit("change",{prev:t,next:e})}function De(e){if(e.defaultPrevented)return;if(e.pointerType==="mouse"&&e.button>0)return;const t=q(),n=Se(e,t),o=new Map;let i=!1;n.forEach(r=>{r.separator&&(i||(i=!0,r.separator.element.focus({focusVisible:!1,preventScroll:!0})));const f=t.get(r.group);f&&o.set(r.group,f.layout)}),ee({cursorFlags:0,hitRegions:n,initialLayoutMap:o,pointerDownAtPoint:{x:e.clientX,y:e.clientY},state:"active"}),n.length&&e.preventDefault()}const kt=e=>e,he=()=>{},Je=1,Ze=2,Qe=4,et=8,Oe=3,Te=12;let ce;function Ge(){return ce===void 0&&(ce=!1,typeof window<"u"&&(window.navigator.userAgent.includes("Chrome")||window.navigator.userAgent.includes("Firefox"))&&(ce=!0)),ce}function It({cursorFlags:e,groups:t,state:n}){let o=0,i=0;switch(n){case"active":case"hover":t.forEach(r=>{if(!r.mutableState.disableCursor)switch(r.orientation){case"horizontal":{o++;break}case"vertical":{i++;break}}})}if(!(o===0&&i===0)){switch(n){case"active":{if(e&&Ge()){const r=(e&Je)!==0,f=(e&Ze)!==0,a=(e&Qe)!==0,s=(e&et)!==0;if(r)return a?"se-resize":s?"ne-resize":"e-resize";if(f)return a?"sw-resize":s?"nw-resize":"w-resize";if(a)return"s-resize";if(s)return"n-resize"}break}}return Ge()?o>0&&i>0?"move":o>0?"ew-resize":"ns-resize":o>0&&i>0?"grab":o>0?"col-resize":"row-resize"}}const Ae=new WeakMap;function be(e){if(e.defaultView===null||e.defaultView===void 0)return;let{prevStyle:t,styleSheet:n}=Ae.get(e)??{};n===void 0&&(n=new e.defaultView.CSSStyleSheet,e.adoptedStyleSheets&&(Object.isExtensible(e.adoptedStyleSheets)?e.adoptedStyleSheets.push(n):e.adoptedStyleSheets=[...e.adoptedStyleSheets,n]));const o=K();switch(o.state){case"active":case"hover":{const i=It({cursorFlags:o.cursorFlags,groups:o.hitRegions.map(f=>f.group),state:o.state}),r=`*, *:hover {cursor: ${i} !important; }`;if(t===r)return;t=r,i?n.cssRules.length===0?n.insertRule(r):n.replaceSync(r):n.cssRules.length===1&&n.deleteRule(0);break}case"inactive":{t=void 0,n.cssRules.length===1&&n.deleteRule(0);break}}Ae.set(e,{prevStyle:t,styleSheet:n})}function tt({document:e,event:t,hitRegions:n,initialLayoutMap:o,mountedGroups:i,pointerDownAtPoint:r,prevCursorFlags:f}){let a=0;n.forEach(l=>{const{group:u,groupSize:h}=l,{orientation:d,panels:S}=u,{disableCursor:x}=u.mutableState;let c=0;r?d==="horizontal"?c=(t.clientX-r.x)/h*100:c=(t.clientY-r.y)/h*100:d==="horizontal"?c=t.clientX<0?-100:100:c=t.clientY<0?-100:100;const p=o.get(u),m=i.get(u);if(!p||!m)return;const{defaultLayoutDeferred:v,derivedPanelConstraints:b,groupSize:y,layout:g,separatorToPanels:w}=m;if(b&&g&&w){const M=se({delta:c,initialLayout:p,panelConstraints:b,pivotIndices:l.panels.map(L=>S.indexOf(L)),prevLayout:g,trigger:"mouse-or-touch"});if(W(M,g)){if(c!==0&&!x)switch(d){case"horizontal":{a|=c<0?Je:Ze;break}case"vertical":{a|=c<0?Qe:et;break}}}else j(l.group,{defaultLayoutDeferred:v,derivedPanelConstraints:b,groupSize:y,layout:M,separatorToPanels:w})}});let s=0;t.movementX===0?s|=f&Oe:s|=a&Oe,t.movementY===0?s|=f&Te:s|=a&Te,Mt(s),be(e)}function Fe(e){const t=q(),n=K();switch(n.state){case"active":tt({document:e.currentTarget,event:e,hitRegions:n.hitRegions,initialLayoutMap:n.initialLayoutMap,mountedGroups:t,prevCursorFlags:n.cursorFlags})}}function Ne(e){if(e.defaultPrevented)return;const t=K(),n=q();switch(t.state){case"active":{if(e.buttons===0){ee({cursorFlags:0,state:"inactive"}),t.hitRegions.forEach(o=>{const i=H(o.group.id,!0);j(o.group,i)});return}for(const o of t.hitRegions)if(o.separator){const{element:i}=o.separator;i.hasPointerCapture?.(e.pointerId)||i.setPointerCapture?.(e.pointerId)}tt({document:e.currentTarget,event:e,hitRegions:t.hitRegions,initialLayoutMap:t.initialLayoutMap,mountedGroups:n,pointerDownAtPoint:t.pointerDownAtPoint,prevCursorFlags:t.cursorFlags});break}default:{const o=Se(e,n);o.length===0?t.state!=="inactive"&&ee({cursorFlags:0,state:"inactive"}):ee({cursorFlags:0,hitRegions:o,state:"hover"}),be(e.currentTarget);break}}}function _e(e){if(e.relatedTarget instanceof HTMLIFrameElement)switch(K().state){case"hover":ee({cursorFlags:0,state:"inactive"})}}function je(e){if(e.defaultPrevented)return;if(e.pointerType==="mouse"&&e.button>0)return;const t=K();switch(t.state){case"active":ee({cursorFlags:0,state:"inactive"}),t.hitRegions.length>0&&(be(e.currentTarget),t.hitRegions.forEach(n=>{const o=H(n.group.id,!0);j(n.group,o)}),e.preventDefault())}}function $e(e){let t=0,n=0;const o={};for(const r of e)if(r.defaultSize!==void 0){t++;const f=T(r.defaultSize);n+=f,o[r.panelId]=f}else o[r.panelId]=void 0;const i=e.length-t;if(i!==0){const r=T((100-n)/i);for(const f of e)f.defaultSize===void 0&&(o[f.panelId]=r)}return o}function Dt(e,t,n){if(!n[0])return;const i=e.panels.find(l=>l.element===t);if(!i||!i.onResize)return;const r=te({group:e}),f=e.orientation==="horizontal"?i.element.offsetWidth:i.element.offsetHeight,a=i.mutableValues.prevSize,s={asPercentage:T(f/r*100),inPixels:f};i.mutableValues.prevSize=s,i.onResize(s,i.id,a)}function Ot(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const o in e)if(e[o]!==t[o])return!1;return!0}function Tt({group:e,nextGroupSize:t,prevGroupSize:n,prevLayout:o}){if(n<=0||t<=0||n===t)return o;let i=0,r=0,f=!1;const a=new Map,s=[];for(const h of e.panels){const d=o[h.id]??0;switch(h.panelConstraints.groupResizeBehavior){case"preserve-pixel-size":{f=!0;const S=d/100*n,x=T(S/t*100);a.set(h.id,x),i+=x;break}case"preserve-relative-size":default:{s.push(h.id),r+=d;break}}}if(!f||s.length===0)return o;const l=100-i,u={...o};if(a.forEach((h,d)=>{u[d]=h}),r>0)for(const h of s){const d=o[h]??0;u[h]=T(d/r*l)}else{const h=T(l/s.length);for(const d of s)u[d]=h}return u}function Gt(e,t){const n=e.map(i=>i.id),o=Object.keys(t);if(n.length!==o.length)return!1;for(const i of n)if(!o.includes(i))return!1;return!0}const J=new Map;function At(e){let t=!0;C(e.element.ownerDocument.defaultView,"Cannot register an unmounted Group");const n=e.element.ownerDocument.defaultView.ResizeObserver,o=new Set,i=new Set,r=new n(c=>{for(const p of c){const{borderBoxSize:m,target:v}=p;if(v===e.element){if(t){const b=te({group:e});if(b===0)return;const y=H(e.id);if(!y)return;const g=me(e),w=y.defaultLayoutDeferred?$e(g):y.layout,M=Tt({group:e,nextGroupSize:b,prevGroupSize:y.groupSize,prevLayout:w}),L=U({layout:M,panelConstraints:g});if(!y.defaultLayoutDeferred&&W(y.layout,L)&&Ot(y.derivedPanelConstraints,g)&&y.groupSize===b)return;j(e,{defaultLayoutDeferred:!1,derivedPanelConstraints:g,groupSize:b,layout:L,separatorToPanels:y.separatorToPanels})}}else Dt(e,v,m)}});r.observe(e.element),e.panels.forEach(c=>{C(!o.has(c.id),`Panel ids must be unique; id "${c.id}" was used more than once`),o.add(c.id),c.onResize&&r.observe(c.element)});const f=te({group:e}),a=me(e),s=e.panels.map(({id:c})=>c).join(",");let l=e.mutableState.defaultLayout;l&&(Gt(e.panels,l)||(l=void 0));const u=e.mutableState.layouts[s]??l??$e(a),h=U({layout:u,panelConstraints:a}),d=e.element.ownerDocument;J.set(d,(J.get(d)??0)+1);const S=new Map;return We(e).forEach(c=>{c.separator&&S.set(c.separator,c.panels)}),j(e,{defaultLayoutDeferred:f===0,derivedPanelConstraints:a,groupSize:f,layout:h,separatorToPanels:S}),e.separators.forEach(c=>{C(!i.has(c.id),`Separator ids must be unique; id "${c.id}" was used more than once`),i.add(c.id),c.element.addEventListener("keydown",Ie)}),J.get(d)===1&&(d.addEventListener("dblclick",ke,!0),d.addEventListener("pointerdown",De,!0),d.addEventListener("pointerleave",Fe),d.addEventListener("pointermove",Ne),d.addEventListener("pointerout",_e),d.addEventListener("pointerup",je,!0)),function(){t=!1,J.set(d,Math.max(0,(J.get(d)??0)-1)),St(e),e.separators.forEach(p=>{p.element.removeEventListener("keydown",Ie)}),J.get(d)||(d.removeEventListener("dblclick",ke,!0),d.removeEventListener("pointerdown",De,!0),d.removeEventListener("pointerleave",Fe),d.removeEventListener("pointermove",Ne),d.removeEventListener("pointerout",_e),d.removeEventListener("pointerup",je,!0)),r.disconnect()}}function Ft(){const[e,t]=z.useState({}),n=z.useCallback(()=>t({}),[]);return[e,n]}function ze(e){const t=z.useId();return`${e??t}`}const X=typeof window<"u"?z.useLayoutEffect:z.useEffect;function ie(e){const t=z.useRef(e);return X(()=>{t.current=e},[e]),z.useCallback((...n)=>t.current?.(...n),[t])}function xe(...e){return ie(t=>{e.forEach(n=>{if(n)switch(typeof n){case"function":{n(t);break}case"object":{n.current=t;break}}})})}function Pe(e){const t=z.useRef({...e});return X(()=>{for(const n in e)t.current[n]=e[n]},[e]),t.current}const nt=z.createContext(null);function Nt(e,t){const n=z.useRef({getLayout:()=>({}),setLayout:kt});z.useImperativeHandle(t,()=>n.current,[]),X(()=>{Object.assign(n.current,Ye({groupId:e}))})}function ot({children:e,className:t,defaultLayout:n,disableCursor:o,disabled:i,elementRef:r,groupRef:f,id:a,onLayoutChange:s,onLayoutChanged:l,orientation:u="horizontal",resizeTargetMinimumSize:h={coarse:20,fine:10},style:d,...S}){const x=z.useRef({onLayoutChange:{},onLayoutChanged:{}}),c=ie(P=>{W(x.current.onLayoutChange,P)||(x.current.onLayoutChange=P,s?.(P))}),p=ie(P=>{W(x.current.onLayoutChanged,P)||(x.current.onLayoutChanged=P,l?.(P))}),m=ze(a),v=z.useRef(null),[b,y]=Ft(),g=z.useRef({lastExpandedPanelSizes:{},layouts:{},panels:[],resizeTargetMinimumSize:h,separators:[]}),w=xe(v,r);Nt(m,f);const M=ie((P,R)=>{const I=K(),E=Re(P),k=H(P);if(k){let O=!1;switch(I.state){case"active":{O=I.hitRegions.some(V=>V.group===E);break}}return{flexGrow:k.layout[R]??1,pointerEvents:O?"none":void 0}}if(n?.[R])return{flexGrow:n?.[R]}}),L=Pe({defaultLayout:n,disableCursor:o}),G=z.useMemo(()=>({get disableCursor(){return!!L.disableCursor},getPanelStyles:M,id:m,orientation:u,registerPanel:P=>{const R=g.current;return R.panels=ge(u,[...R.panels,P]),y(),()=>{R.panels=R.panels.filter(I=>I!==P),y()}},registerSeparator:P=>{const R=g.current;return R.separators=ge(u,[...R.separators,P]),y(),()=>{R.separators=R.separators.filter(I=>I!==P),y()}},updatePanelProps:(P,{disabled:R})=>{const E=g.current.panels.find(V=>V.id===P);E&&(E.panelConstraints.disabled=R);const k=Re(m),O=H(m);k&&O&&j(k,{...O,derivedPanelConstraints:me(k)})},updateSeparatorProps:(P,{disabled:R,disableDoubleClick:I})=>{const k=g.current.separators.find(O=>O.id===P);k&&(k.disabled=R,k.disableDoubleClick=I)}}),[M,m,y,u,L]),N=z.useRef(null);return X(()=>{const P=v.current;if(P===null)return;const R=g.current;let I;if(L.defaultLayout!==void 0&&Object.keys(L.defaultLayout).length===R.panels.length){I={};for(const $ of R.panels){const Y=L.defaultLayout[$.id];Y!==void 0&&(I[$.id]=Y)}}const E={disabled:!!i,element:P,id:m,mutableState:{defaultLayout:I,disableCursor:!!L.disableCursor,expandedPanelSizes:g.current.lastExpandedPanelSizes,layouts:g.current.layouts},orientation:u,panels:R.panels,resizeTargetMinimumSize:R.resizeTargetMinimumSize,separators:R.separators};N.current=E;const k=At(E),{defaultLayoutDeferred:O,derivedPanelConstraints:V,layout:ae}=H(E.id,!0);!O&&V.length>0&&(c(ae),p(ae));const ne=ye(m,$=>{const{defaultLayoutDeferred:Y,derivedPanelConstraints:Le,layout:le}=$.next;if(Y||Le.length===0)return;const st=E.panels.map(({id:_})=>_).join(",");E.mutableState.layouts[st]=le,Le.forEach(_=>{if(_.collapsible){const{layout:pe}=$.prev??{};if(pe){const lt=D(_.collapsedSize,le[_.panelId]),ut=D(_.collapsedSize,pe[_.panelId]);lt&&!ut&&(E.mutableState.expandedPanelSizes[_.panelId]=pe[_.panelId])}}});const at=K().state!=="active";c(le),at&&p(le)});return()=>{N.current=null,k(),ne()}},[i,m,p,c,u,b,L]),z.useEffect(()=>{const P=N.current;P&&(P.mutableState.defaultLayout=n,P.mutableState.disableCursor=!!o)}),re.jsx(nt.Provider,{value:G,children:re.jsx("div",{...S,className:t,"data-group":!0,"data-testid":m,id:m,ref:w,style:{height:"100%",width:"100%",overflow:"hidden",...d,display:"flex",flexDirection:u==="horizontal"?"row":"column",flexWrap:"nowrap",touchAction:u==="horizontal"?"pan-y":"pan-x"},children:e})})}ot.displayName="Group";function de(e,t){return`react-resizable-panels:${[e,...t].join(":")}`}function _t({id:e,panelIds:t,storage:n}){const o=de(e,[]),i=n.getItem(o);if(i)try{const r=JSON.parse(i);if(t){const f=t.join(","),a=r[f];if(a&&Array.isArray(a.layout)&&t.length===a.layout.length){const s={};for(let l=0;l<t.length;l++)s[t[l]]=a.layout[l];return s}}else{const f=Object.keys(r);if(f.length===1){const a=r[f[0]];if(a&&Array.isArray(a.layout)){const s=f[0].split(",");if(s.length===a.layout.length){const l={};for(let u=0;u<s.length;u++)l[s[u]]=a.layout[u];return l}}}}}catch{}}function jt({debounceSaveMs:e=100,panelIds:t,storage:n=localStorage,...o}){const i=t!==void 0,r="id"in o?o.id:o.groupId,f=de(r,t??[]),a=z.useSyncExternalStore($t,()=>n.getItem(f),()=>n.getItem(f)),s=z.useMemo(()=>{if(a){const c=JSON.parse(a),p=Object.values(c);if(Array.from(p).every(m=>typeof m=="number"))return c}},[a]),l=z.useMemo(()=>{if(!s)return _t({id:r,panelIds:t,storage:n})},[s,r,t,n]),u=s??l,h=z.useRef(null),d=z.useCallback(()=>{const c=h.current;c&&(h.current=null,clearTimeout(c))},[]);z.useLayoutEffect(()=>()=>{d()},[d]);const S=z.useCallback(c=>{d();let p;i?p=de(r,Object.keys(c)):p=de(r,[]);try{n.setItem(p,JSON.stringify(c))}catch(m){console.error(m)}},[d,i,r,n]),x=z.useCallback(c=>{d(),e===0?S(c):h.current=setTimeout(()=>{S(c)},e)},[d,e,S]);return{defaultLayout:u,onLayoutChange:x,onLayoutChanged:S}}function $t(){return function(){}}function Ht(){return z.useState(null)}function Vt(){return z.useRef(null)}function we(){const e=z.useContext(nt);return C(e,"Group Context not found; did you render a Panel or Separator outside of a Group?"),e}function Bt(e,t){const{id:n}=we(),o=z.useRef({collapse:he,expand:he,getSize:()=>({asPercentage:0,inPixels:0}),isCollapsed:()=>!1,resize:he});z.useImperativeHandle(t,()=>o.current,[]),X(()=>{Object.assign(o.current,Xe({groupId:n,panelId:e}))})}function it({children:e,className:t,collapsedSize:n="0%",collapsible:o=!1,defaultSize:i,disabled:r,elementRef:f,groupResizeBehavior:a="preserve-relative-size",id:s,maxSize:l="100%",minSize:u="0%",onResize:h,panelRef:d,style:S,...x}){const c=!!s,p=ze(s),m=Pe({disabled:r}),v=z.useRef(null),b=xe(v,f),{getPanelStyles:y,id:g,orientation:w,registerPanel:M,updatePanelProps:L}=we(),G=h!==null,N=ie((E,k,O)=>{h?.(E,s,O)});X(()=>{const E=v.current;if(E!==null){const k={element:E,id:p,idIsStable:c,mutableValues:{expandToSize:void 0,prevSize:void 0},onResize:G?N:void 0,panelConstraints:{groupResizeBehavior:a,collapsedSize:n,collapsible:o,defaultSize:i,disabled:m.disabled,maxSize:l,minSize:u}};return M(k)}},[a,n,o,i,G,p,c,l,u,N,M,m]),z.useEffect(()=>{L(p,{disabled:r})},[r,p,L]),Bt(p,d);const P=()=>{const E=y(g,p);if(E)return JSON.stringify(E)},R=z.useSyncExternalStore(E=>ye(g,E),P,P);let I;return R?I=JSON.parse(R):i!==void 0?I={flexGrow:void 0,flexShrink:void 0,flexBasis:i}:I={flexGrow:1},re.jsx("div",{...x,"data-disabled":r||void 0,"data-panel":!0,"data-testid":p,id:p,ref:b,style:{...Wt,display:"flex",flexBasis:0,flexShrink:1,overflow:"visible",...I},children:re.jsx("div",{className:t,style:{maxHeight:"100%",maxWidth:"100%",flexGrow:1,overflow:"auto",...S,touchAction:w==="horizontal"?"pan-y":"pan-x"},children:e})})}it.displayName="Panel";const Wt={minHeight:0,maxHeight:"100%",height:"auto",minWidth:0,maxWidth:"100%",width:"auto",border:"none",borderWidth:0,padding:0,margin:0};function Ut(){return z.useState(null)}function Kt(){return z.useRef(null)}function qt({layout:e,panelConstraints:t,panelId:n,panelIndex:o}){let i,r;const f=e[n],a=t.find(s=>s.panelId===n);if(a){const s=a.maxSize,l=a.collapsible?a.collapsedSize:a.minSize,u=[o,o+1];r=U({layout:se({delta:l-f,initialLayout:e,panelConstraints:t,pivotIndices:u,prevLayout:e}),panelConstraints:t})[n],i=U({layout:se({delta:s-f,initialLayout:e,panelConstraints:t,pivotIndices:u,prevLayout:e}),panelConstraints:t})[n]}return{valueControls:n,valueMax:i,valueMin:r,valueNow:f}}function rt({children:e,className:t,disabled:n,disableDoubleClick:o,elementRef:i,id:r,style:f,...a}){const s=ze(r),l=Pe({disabled:n,disableDoubleClick:o}),[u,h]=z.useState({}),[d,S]=z.useState("inactive"),[x,c]=z.useState(!1),p=z.useRef(null),m=xe(p,i),{disableCursor:v,id:b,orientation:y,registerSeparator:g,updateSeparatorProps:w}=we(),M=y==="horizontal"?"vertical":"horizontal";X(()=>{const N=p.current;if(N!==null){const P={disabled:l.disabled,disableDoubleClick:l.disableDoubleClick,element:N,id:s},R=g(P),I=Et(k=>{S(k.next.state!=="inactive"&&k.next.hitRegions.some(O=>O.separator===P)?k.next.state:"inactive")}),E=ye(b,k=>{const{derivedPanelConstraints:O,layout:V,separatorToPanels:ae}=k.next,ne=ae.get(P);if(ne){const $=ne[0],Y=ne.indexOf($);h(qt({layout:V,panelConstraints:O,panelId:$.id,panelIndex:Y}))}});return()=>{I(),E(),R()}}},[b,s,g,l]),z.useEffect(()=>{w(s,{disabled:n,disableDoubleClick:o})},[n,o,s,w]);let L;n&&!v&&(L="not-allowed");let G;if(n)G="disabled";else switch(d){case"active":{G="active";break}default:x?G="focus":G=d}return re.jsx("div",{...a,"aria-controls":u.valueControls,"aria-disabled":n||void 0,"aria-orientation":M,"aria-valuemax":u.valueMax,"aria-valuemin":u.valueMin,"aria-valuenow":u.valueNow,children:e,className:t,"data-separator":G,"data-testid":s,id:s,onBlur:()=>c(!1),onFocus:()=>c(!0),ref:m,role:"separator",style:{flexBasis:"auto",cursor:L,...f,flexGrow:0,flexShrink:0,touchAction:"none"},tabIndex:n?void 0:0})}rt.displayName="Separator";exports.Group=ot;exports.Panel=it;exports.Separator=rt;exports.isCoarsePointer=Be;exports.useDefaultLayout=jt;exports.useGroupCallbackRef=Ht;exports.useGroupRef=Vt;exports.usePanelCallbackRef=Ut;exports.usePanelRef=Kt;
|
|
1
|
+
"use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const re=require("react/jsx-runtime"),z=require("react");function dt(e,t){const n=getComputedStyle(e),o=parseFloat(n.fontSize);return t*o}function pt(e,t){const n=getComputedStyle(e.ownerDocument.documentElement),o=parseFloat(n.fontSize);return t*o}function ht(e){return e/100*window.innerHeight}function mt(e){return e/100*window.innerWidth}function gt(e){switch(typeof e){case"number":return[e,"px"];case"string":{const t=parseFloat(e);return e.endsWith("%")?[t,"%"]:e.endsWith("px")?[t,"px"]:e.endsWith("rem")?[t,"rem"]:e.endsWith("em")?[t,"em"]:e.endsWith("vh")?[t,"vh"]:e.endsWith("vw")?[t,"vw"]:[t,"%"]}}}function oe({groupSize:e,panelElement:t,styleProp:n}){let o;const[i,s]=gt(n);switch(s){case"%":{o=i/100*e;break}case"px":{o=i;break}case"rem":{o=pt(t,i);break}case"em":{o=dt(t,i);break}case"vh":{o=ht(i);break}case"vw":{o=mt(i);break}}return o}function O(e){return parseFloat(e.toFixed(3))}function te({group:e}){const{orientation:t,panels:n}=e;return n.reduce((o,i)=>(o+=t==="horizontal"?i.element.offsetWidth:i.element.offsetHeight,o),0)}function me(e){const{panels:t}=e,n=te({group:e});return n===0?t.map(o=>({groupResizeBehavior:o.panelConstraints.groupResizeBehavior,collapsedSize:0,collapsible:o.panelConstraints.collapsible===!0,defaultSize:void 0,disabled:o.panelConstraints.disabled,minSize:0,maxSize:100,panelId:o.id})):t.map(o=>{const{element:i,panelConstraints:s}=o;let u=0;if(s.collapsedSize!==void 0){const c=oe({groupSize:n,panelElement:i,styleProp:s.collapsedSize});u=O(c/n*100)}let a;if(s.defaultSize!==void 0){const c=oe({groupSize:n,panelElement:i,styleProp:s.defaultSize});a=O(c/n*100)}let r=0;if(s.minSize!==void 0){const c=oe({groupSize:n,panelElement:i,styleProp:s.minSize});r=O(c/n*100)}let l=100;if(s.maxSize!==void 0){const c=oe({groupSize:n,panelElement:i,styleProp:s.maxSize});l=O(c/n*100)}return{groupResizeBehavior:s.groupResizeBehavior,collapsedSize:u,collapsible:s.collapsible===!0,defaultSize:a,disabled:s.disabled,minSize:r,maxSize:l,panelId:o.id}})}function C(e,t="Assertion error"){if(!e)throw Error(t)}function ge(e,t){return Array.from(t).sort(e==="horizontal"?yt:St)}function yt(e,t){const n=e.element.offsetLeft-t.element.offsetLeft;return n!==0?n:e.element.offsetWidth-t.element.offsetWidth}function St(e,t){const n=e.element.offsetTop-t.element.offsetTop;return n!==0?n:e.element.offsetHeight-t.element.offsetHeight}function Ve(e){return e!==null&&typeof e=="object"&&"nodeType"in e&&e.nodeType===Node.ELEMENT_NODE}function Ue(e,t){return{x:e.x>=t.left&&e.x<=t.right?0:Math.min(Math.abs(e.x-t.left),Math.abs(e.x-t.right)),y:e.y>=t.top&&e.y<=t.bottom?0:Math.min(Math.abs(e.y-t.top),Math.abs(e.y-t.bottom))}}function vt({orientation:e,rects:t,targetRect:n}){const o={x:n.x+n.width/2,y:n.y+n.height/2};let i,s=Number.MAX_VALUE;for(const u of t){const{x:a,y:r}=Ue(o,u),l=e==="horizontal"?a:r;l<s&&(s=l,i=u)}return C(i,"No rect found"),i}let ue;function Be(){return ue===void 0&&(typeof matchMedia=="function"?ue=!!matchMedia("(pointer:coarse)").matches:ue=!1),ue}function We(e){const{element:t,orientation:n,panels:o,separators:i}=e,s=ge(n,Array.from(t.children).filter(Ve).map(x=>({element:x}))).map(({element:x})=>x),u=[];let a=!1,r=!1,l=-1,c=-1,m=0,p,S=[];{let x=-1;for(const f of s)f.hasAttribute("data-panel")&&(x++,f.hasAttribute("data-disabled")||(m++,l===-1&&(l=x),c=x))}if(m>1){let x=-1;for(const f of s)if(f.hasAttribute("data-panel")){x++;const d=o.find(h=>h.element===f);if(d){if(p){const h=p.element.getBoundingClientRect(),y=f.getBoundingClientRect();let b;if(r){const v=n==="horizontal"?new DOMRect(h.right,h.top,0,h.height):new DOMRect(h.left,h.bottom,h.width,0),g=n==="horizontal"?new DOMRect(y.left,y.top,0,y.height):new DOMRect(y.left,y.top,y.width,0);switch(S.length){case 0:{b=[v,g];break}case 1:{const L=S[0],M=vt({orientation:n,rects:[h,y],targetRect:L.element.getBoundingClientRect()});b=[L,M===h?g:v];break}default:{b=S;break}}}else S.length?b=S:b=[n==="horizontal"?new DOMRect(h.right,y.top,y.left-h.right,y.height):new DOMRect(y.left,h.bottom,y.width,y.top-h.bottom)];for(const v of b){let g="width"in v?v:v.element.getBoundingClientRect();const L=Be()?e.resizeTargetMinimumSize.coarse:e.resizeTargetMinimumSize.fine;if(g.width<L){const R=L-g.width;g=new DOMRect(g.x-R/2,g.y,g.width+R,g.height)}if(g.height<L){const R=L-g.height;g=new DOMRect(g.x,g.y-R/2,g.width,g.height+R)}const M=x<=l||x>c;!a&&!M&&u.push({group:e,groupSize:te({group:e}),panels:[p,d],separator:"width"in v?void 0:v,rect:g}),a=!1}}r=!1,p=d,S=[]}}else if(f.hasAttribute("data-separator")){f.ariaDisabled!==null&&(a=!0);const d=i.find(h=>h.element===f);d?S.push(d):(p=void 0,S=[])}else r=!0}return u}class Ke{#e={};addListener(t,n){const o=this.#e[t];return o===void 0?this.#e[t]=[n]:o.includes(n)||o.push(n),()=>{this.removeListener(t,n)}}emit(t,n){const o=this.#e[t];if(o!==void 0)if(o.length===1)o[0].call(null,n);else{let i=!1,s=null;const u=Array.from(o);for(let a=0;a<u.length;a++){const r=u[a];try{r.call(null,n)}catch(l){s===null&&(i=!0,s=l)}}if(i)throw s}}removeAllListeners(){this.#e={}}removeListener(t,n){const o=this.#e[t];if(o!==void 0){const i=o.indexOf(n);i>=0&&o.splice(i,1)}}}let Q={cursorFlags:0,state:"inactive"};const ye=new Ke;function B(){return Q}function bt(e){return ye.addListener("change",e)}function xt(e){const t=Q,n={...Q};n.cursorFlags=e,Q=n,ye.emit("change",{prev:t,next:n})}function ee(e){const t=Q;Q=e,ye.emit("change",{prev:t,next:e})}const zt=e=>e,he=()=>{},qe=1,Xe=2,Ye=4,Je=8,Re=3,Ce=12;let ce;function Ee(){return ce===void 0&&(ce=!1,typeof window<"u"&&(window.navigator.userAgent.includes("Chrome")||window.navigator.userAgent.includes("Firefox"))&&(ce=!0)),ce}function Pt({cursorFlags:e,groups:t,state:n}){let o=0,i=0;switch(n){case"active":case"hover":t.forEach(s=>{if(!s.mutableState.disableCursor)switch(s.orientation){case"horizontal":{o++;break}case"vertical":{i++;break}}})}if(!(o===0&&i===0)){switch(n){case"active":{if(e&&Ee()){const s=(e&qe)!==0,u=(e&Xe)!==0,a=(e&Ye)!==0,r=(e&Je)!==0;if(s)return a?"se-resize":r?"ne-resize":"e-resize";if(u)return a?"sw-resize":r?"nw-resize":"w-resize";if(a)return"s-resize";if(r)return"n-resize"}break}}return Ee()?o>0&&i>0?"move":o>0?"ew-resize":"ns-resize":o>0&&i>0?"grab":o>0?"col-resize":"row-resize"}}const Me=new WeakMap;function Se(e){if(e.defaultView===null||e.defaultView===void 0)return;let{prevStyle:t,styleSheet:n}=Me.get(e)??{};n===void 0&&(n=new e.defaultView.CSSStyleSheet,e.adoptedStyleSheets&&(Object.isExtensible(e.adoptedStyleSheets)?e.adoptedStyleSheets.push(n):e.adoptedStyleSheets=[...e.adoptedStyleSheets,n]));const o=B();switch(o.state){case"active":case"hover":{const i=Pt({cursorFlags:o.cursorFlags,groups:o.hitRegions.map(u=>u.group),state:o.state}),s=`*, *:hover {cursor: ${i} !important; }`;if(t===s)return;t=s,i?n.cssRules.length===0?n.insertRule(s):n.replaceSync(s):n.cssRules.length===1&&n.deleteRule(0);break}case"inactive":{t=void 0,n.cssRules.length===1&&n.deleteRule(0);break}}Me.set(e,{prevStyle:t,styleSheet:n})}let F=new Map;const Ze=new Ke;function wt(e){F=new Map(F),F.delete(e)}function ke(e,t){for(const[n]of F)if(n.id===e)return n}function H(e,t){for(const[n,o]of F)if(n.id===e)return o;if(t)throw Error(`Could not find data for Group with id ${e}`)}function q(){return F}function ve(e,t){return Ze.addListener("groupChange",n=>{n.group.id===e&&t(n)})}function $(e,t,n){const o=F.get(e);F=new Map(F),F.set(e,t),Ze.emit("groupChange",{group:e,isUserInteraction:n?.isUserInteraction===!0,prev:o,next:t})}function Qe(e){const t=B();let n=!1;switch(t.state){case"active":ee({cursorFlags:0,state:"inactive"}),t.hitRegions.length>0&&(Se(e),n=!0,t.hitRegions.forEach(o=>{const i=H(o.group.id,!0);$(o.group,i,{isUserInteraction:!0})}))}return n}function Ie(e){e.defaultPrevented||Qe(e.currentTarget)}function Lt(e,t,n){let o,i={x:1/0,y:1/0};for(const s of t){const u=Ue(n,s.rect);switch(e){case"horizontal":{u.x<=i.x&&(o=s,i=u);break}case"vertical":{u.y<=i.y&&(o=s,i=u);break}}}return o?{distance:i,hitRegion:o}:void 0}function Rt(e){return e!==null&&typeof e=="object"&&"nodeType"in e&&e.nodeType===Node.DOCUMENT_FRAGMENT_NODE}function Ct(e,t){if(e===t)throw new Error("Cannot compare node with itself");const n={a:Oe(e),b:Oe(t)};let o;for(;n.a.at(-1)===n.b.at(-1);)o=n.a.pop(),n.b.pop();C(o,"Stacking order can only be calculated for elements with a common ancestor");const i={a:Te(De(n.a)),b:Te(De(n.b))};if(i.a===i.b){const s=o.childNodes,u={a:n.a.at(-1),b:n.b.at(-1)};let a=s.length;for(;a--;){const r=s[a];if(r===u.a)return 1;if(r===u.b)return-1}}return Math.sign(i.a-i.b)}const Et=/\b(?:position|zIndex|opacity|transform|webkitTransform|mixBlendMode|filter|webkitFilter|isolation)\b/;function Mt(e){const t=getComputedStyle(et(e)??e).display;return t==="flex"||t==="inline-flex"}function kt(e){const t=getComputedStyle(e);return!!(t.position==="fixed"||t.zIndex!=="auto"&&(t.position!=="static"||Mt(e))||+t.opacity<1||"transform"in t&&t.transform!=="none"||"webkitTransform"in t&&t.webkitTransform!=="none"||"mixBlendMode"in t&&t.mixBlendMode!=="normal"||"filter"in t&&t.filter!=="none"||"webkitFilter"in t&&t.webkitFilter!=="none"||"isolation"in t&&t.isolation==="isolate"||Et.test(t.willChange)||t.webkitOverflowScrolling==="touch")}function De(e){let t=e.length;for(;t--;){const n=e[t];if(C(n,"Missing node"),kt(n))return n}return null}function Te(e){return e&&Number(getComputedStyle(e).zIndex)||0}function Oe(e){const t=[];for(;e;)t.push(e),e=et(e);return t}function et(e){const{parentNode:t}=e;return Rt(t)?t.host:t}function It(e,t){return e.x<t.x+t.width&&e.x+e.width>t.x&&e.y<t.y+t.height&&e.y+e.height>t.y}function Dt({groupElement:e,hitRegion:t,pointerEventTarget:n}){if(!Ve(n)||n.contains(e)||e.contains(n))return!0;if(Ct(n,e)>0){let o=n;for(;o;){if(o.contains(e))return!0;if(It(o.getBoundingClientRect(),t))return!1;o=o.parentElement}}return!0}function be(e,t){const n=[];return t.forEach((o,i)=>{if(i.disabled)return;const s=We(i),u=Lt(i.orientation,s,{x:e.clientX,y:e.clientY});u&&u.distance.x<=0&&u.distance.y<=0&&Dt({groupElement:i.element,hitRegion:u.hitRegion.rect,pointerEventTarget:e.target})&&n.push(u.hitRegion)}),n}function Tt(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!=t[n])return!1;return!0}function D(e,t,n=0){return Math.abs(O(e)-O(t))<=n}function A(e,t){return D(e,t)?0:e>t?1:-1}function Z({overrideDisabledPanels:e,panelConstraints:t,prevSize:n,size:o}){const{collapsedSize:i=0,collapsible:s,disabled:u,maxSize:a=100,minSize:r=0}=t;if(u&&!e)return n;if(A(o,r)<0)if(s){const l=(i+r)/2;A(o,l)<0?o=i:o=r}else o=r;return o=Math.min(a,o),o=O(o),o}function se({delta:e,initialLayout:t,panelConstraints:n,pivotIndices:o,prevLayout:i,trigger:s}){if(D(e,0))return t;const u=s==="imperative-api",a=Object.values(t),r=Object.values(i),l=[...a],[c,m]=o;C(c!=null,"Invalid first pivot index"),C(m!=null,"Invalid second pivot index");let p=0;switch(s){case"keyboard":{{const f=e<0?m:c,d=n[f];C(d,`Panel constraints not found for index ${f}`);const{collapsedSize:h=0,collapsible:y,minSize:b=0}=d;if(y){const v=a[f];if(C(v!=null,`Previous layout not found for panel index ${f}`),D(v,h)){const g=b-v;A(g,Math.abs(e))>0&&(e=e<0?0-g:g)}}}{const f=e<0?c:m,d=n[f];C(d,`No panel constraints found for index ${f}`);const{collapsedSize:h=0,collapsible:y,minSize:b=0}=d;if(y){const v=a[f];if(C(v!=null,`Previous layout not found for panel index ${f}`),D(v,b)){const g=v-h;A(g,Math.abs(e))>0&&(e=e<0?0-g:g)}}}break}default:{const f=e<0?m:c,d=n[f];C(d,`Panel constraints not found for index ${f}`);const h=a[f],{collapsible:y,collapsedSize:b,minSize:v}=d;if(y&&A(h,v)<0)if(e>0){const g=v-b,L=g/2,M=h+e;A(M,v)<0&&(e=A(e,L)<=0?0:g)}else{const g=v-b,L=100-g/2,M=h-e;A(M,v)<0&&(e=A(100+e,L)>0?0:-g)}break}}{const f=e<0?1:-1;let d=e<0?m:c,h=0;for(;;){const b=a[d];C(b!=null,`Previous layout not found for panel index ${d}`);const g=Z({overrideDisabledPanels:u,panelConstraints:n[d],prevSize:b,size:100})-b;if(h+=g,d+=f,d<0||d>=n.length)break}const y=Math.min(Math.abs(e),Math.abs(h));e=e<0?0-y:y}{let d=e<0?c:m;for(;d>=0&&d<n.length;){const h=Math.abs(e)-Math.abs(p),y=a[d];C(y!=null,`Previous layout not found for panel index ${d}`);const b=y-h,v=Z({overrideDisabledPanels:u,panelConstraints:n[d],prevSize:y,size:b});if(!D(y,v)&&(p+=y-v,l[d]=v,p.toFixed(3).localeCompare(Math.abs(e).toFixed(3),void 0,{numeric:!0})>=0))break;e<0?d--:d++}}if(Tt(r,l))return i;{const f=e<0?m:c,d=a[f];C(d!=null,`Previous layout not found for panel index ${f}`);const h=d+p,y=Z({overrideDisabledPanels:u,panelConstraints:n[f],prevSize:d,size:h});if(l[f]=y,!D(y,h)){let b=h-y,g=e<0?m:c;for(;g>=0&&g<n.length;){const L=l[g];C(L!=null,`Previous layout not found for panel index ${g}`);const M=L+b,R=Z({overrideDisabledPanels:u,panelConstraints:n[g],prevSize:L,size:M});if(D(L,R)||(b-=R-L,l[g]=R),D(b,0))break;e>0?g--:g++}}}const S=Object.values(l).reduce((f,d)=>d+f,0);if(!D(S,100,.1))return i;const x=Object.keys(i);return l.reduce((f,d,h)=>(f[x[h]]=d,f),{})}function W(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(t[n]===void 0||A(e[n],t[n])!==0)return!1;return!0}function K({layout:e,panelConstraints:t}){const n=Object.values(e),o=[...n],i=o.reduce((a,r)=>a+r,0);if(o.length!==t.length)throw Error(`Invalid ${t.length} panel layout: ${o.map(a=>`${a}%`).join(", ")}`);if(!D(i,100)&&o.length>0)for(let a=0;a<t.length;a++){const r=o[a];C(r!=null,`No layout data found for index ${a}`);const l=100/i*r;o[a]=l}let s=0;for(let a=0;a<t.length;a++){const r=n[a];C(r!=null,`No layout data found for index ${a}`);const l=o[a];C(l!=null,`No layout data found for index ${a}`);const c=Z({overrideDisabledPanels:!0,panelConstraints:t[a],prevSize:r,size:l});l!=c&&(s+=l-c,o[a]=c)}if(!D(s,0))for(let a=0;a<t.length;a++){const r=o[a];C(r!=null,`No layout data found for index ${a}`);const l=r+s,c=Z({overrideDisabledPanels:!0,panelConstraints:t[a],prevSize:r,size:l});if(r!==c&&(s-=c-r,o[a]=c,D(s,0)))break}const u=Object.keys(e);return o.reduce((a,r,l)=>(a[u[l]]=r,a),{})}function tt({groupId:e,panelId:t}){const n=()=>{const r=q();for(const[l,{defaultLayoutDeferred:c,derivedPanelConstraints:m,layout:p,groupSize:S,separatorToPanels:x}]of r)if(l.id===e)return{defaultLayoutDeferred:c,derivedPanelConstraints:m,group:l,groupSize:S,layout:p,separatorToPanels:x};throw Error(`Group ${e} not found`)},o=()=>{const r=n().derivedPanelConstraints.find(l=>l.panelId===t);if(r!==void 0)return r;throw Error(`Panel constraints not found for Panel ${t}`)},i=()=>{const r=n().group.panels.find(l=>l.id===t);if(r!==void 0)return r;throw Error(`Layout not found for Panel ${t}`)},s=()=>{const r=n().layout[t];if(r!==void 0)return r;throw Error(`Layout not found for Panel ${t}`)},u=({nextSize:r,panels:l,prevLayout:c,derivedPanelConstraints:m})=>{const p=s(),S=l.findIndex(h=>h.id===t),x=S===0,f=S===l.length-1;if(f&&r<p&&(x||l.slice(0,S).every((h,y)=>{const b=m[y];return b?.collapsible&&D(b.collapsedSize,c[b.panelId])}))){const h=l.slice(0,S).reduce((y,b)=>y+c[b.id],0);return{...c,[t]:O(100-h)}}return se({delta:f?p-r:r-p,initialLayout:c,panelConstraints:m,pivotIndices:f?[S-1,S]:[S,S+1],prevLayout:c,trigger:"imperative-api"})},a=r=>{const l=s();if(r===l)return;const{defaultLayoutDeferred:c,derivedPanelConstraints:m,group:p,groupSize:S,layout:x,separatorToPanels:f}=n(),d=u({nextSize:r,panels:p.panels,prevLayout:x,derivedPanelConstraints:m}),h=K({layout:d,panelConstraints:m});W(x,h)||$(p,{defaultLayoutDeferred:c,derivedPanelConstraints:m,groupSize:S,layout:h,separatorToPanels:f})};return{collapse:()=>{const{collapsible:r,collapsedSize:l}=o(),{mutableValues:c}=i(),m=s();r&&m!==l&&(c.expandToSize=m,a(l))},expand:()=>{const{collapsible:r,collapsedSize:l,minSize:c}=o(),{mutableValues:m}=i(),p=s();if(r&&p===l){let S=m.expandToSize??c;S===0&&(S=1),a(S)}},getSize:()=>{const{group:r}=n(),l=s(),{element:c}=i(),m=r.orientation==="horizontal"?c.offsetWidth:c.offsetHeight;return{asPercentage:l,inPixels:m}},isCollapsed:()=>{const{collapsible:r,collapsedSize:l}=o(),c=s();return r&&D(l,c)},resize:r=>{const{group:l}=n(),{element:c}=i(),m=te({group:l}),p=oe({groupSize:m,panelElement:c,styleProp:r}),S=O(p/m*100);a(S)}}}function Ge(e){if(e.defaultPrevented)return;const t=q();be(e,t).forEach(o=>{if(o.separator&&!o.separator.disableDoubleClick){const i=o.panels.find(s=>s.panelConstraints.defaultSize!==void 0);if(i){const s=i.panelConstraints.defaultSize,u=tt({groupId:o.group.id,panelId:i.id});u&&s!==void 0&&(u.resize(s),e.preventDefault())}}})}function fe(e){const t=q();for(const[n]of t)if(n.separators.some(o=>o.element===e))return n;throw Error("Could not find parent Group for separator element")}function nt({groupId:e}){const t=()=>{const n=q();for(const[o,i]of n)if(o.id===e)return{group:o,...i};throw Error(`Could not find Group with id "${e}"`)};return{getLayout(){const{defaultLayoutDeferred:n,layout:o}=t();return n?{}:o},setLayout(n){const{defaultLayoutDeferred:o,derivedPanelConstraints:i,group:s,groupSize:u,layout:a,separatorToPanels:r}=t(),l=K({layout:n,panelConstraints:i});return o?a:(W(a,l)||$(s,{defaultLayoutDeferred:o,derivedPanelConstraints:i,groupSize:u,layout:l,separatorToPanels:r}),l)}}}function U(e,t){const n=fe(e),o=H(n.id,!0),i=n.separators.find(m=>m.element===e);C(i,"Matching separator not found");const s=o.separatorToPanels.get(i);C(s,"Matching panels not found");const u=s.map(m=>n.panels.indexOf(m)),r=nt({groupId:n.id}).getLayout(),l=se({delta:t,initialLayout:r,panelConstraints:o.derivedPanelConstraints,pivotIndices:u,prevLayout:r,trigger:"keyboard"}),c=K({layout:l,panelConstraints:o.derivedPanelConstraints});W(r,c)||$(n,{defaultLayoutDeferred:o.defaultLayoutDeferred,derivedPanelConstraints:o.derivedPanelConstraints,groupSize:o.groupSize,layout:c,separatorToPanels:o.separatorToPanels},{isUserInteraction:!0})}function Ae(e){if(e.defaultPrevented)return;const t=e.currentTarget,n=fe(t);if(!n.disabled)switch(e.key){case"ArrowDown":{e.preventDefault(),n.orientation==="vertical"&&U(t,5);break}case"ArrowLeft":{e.preventDefault(),n.orientation==="horizontal"&&U(t,-5);break}case"ArrowRight":{e.preventDefault(),n.orientation==="horizontal"&&U(t,5);break}case"ArrowUp":{e.preventDefault(),n.orientation==="vertical"&&U(t,-5);break}case"End":{e.preventDefault(),U(t,100);break}case"Enter":{e.preventDefault();const o=fe(t),i=H(o.id,!0),{derivedPanelConstraints:s,layout:u,separatorToPanels:a}=i,r=o.separators.find(p=>p.element===t);C(r,"Matching separator not found");const l=a.get(r);C(l,"Matching panels not found");const c=l[0],m=s.find(p=>p.panelId===c.id);if(C(m,"Panel metadata not found"),m.collapsible){const p=u[c.id],S=m.collapsedSize===p?o.mutableState.expandedPanelSizes[c.id]??m.minSize:m.collapsedSize;U(t,S-p)}break}case"F6":{e.preventDefault();const i=fe(t).separators.map(r=>r.element),s=Array.from(i).findIndex(r=>r===e.currentTarget);C(s!==null,"Index not found");const u=e.shiftKey?s>0?s-1:i.length-1:s+1<i.length?s+1:0;i[u].focus({preventScroll:!0});break}case"Home":{e.preventDefault(),U(t,-100);break}}}function Fe(e){if(e.defaultPrevented)return;if(e.pointerType==="mouse"&&e.button>0)return;const t=q(),n=be(e,t),o=new Map;let i=!1;n.forEach(s=>{s.separator&&(i||(i=!0,s.separator.element.focus({focusVisible:!1,preventScroll:!0})));const u=t.get(s.group);u&&o.set(s.group,u.layout)}),ee({cursorFlags:0,hitRegions:n,initialLayoutMap:o,pointerDownAtPoint:{x:e.clientX,y:e.clientY},state:"active"}),n.length&&e.preventDefault()}function ot({document:e,event:t,hitRegions:n,initialLayoutMap:o,mountedGroups:i,pointerDownAtPoint:s,prevCursorFlags:u}){let a=0;n.forEach(l=>{const{group:c,groupSize:m}=l,{orientation:p,panels:S}=c,{disableCursor:x}=c.mutableState;let f=0;s?p==="horizontal"?f=(t.clientX-s.x)/m*100:f=(t.clientY-s.y)/m*100:p==="horizontal"?f=t.clientX<0?-100:100:f=t.clientY<0?-100:100;const d=o.get(c),h=i.get(c);if(!d||!h)return;const{defaultLayoutDeferred:y,derivedPanelConstraints:b,groupSize:v,layout:g,separatorToPanels:L}=h;if(b&&g&&L){const M=se({delta:f,initialLayout:d,panelConstraints:b,pivotIndices:l.panels.map(R=>S.indexOf(R)),prevLayout:g,trigger:"mouse-or-touch"});if(W(M,g)){if(f!==0&&!x)switch(p){case"horizontal":{a|=f<0?qe:Xe;break}case"vertical":{a|=f<0?Ye:Je;break}}}else $(l.group,{defaultLayoutDeferred:y,derivedPanelConstraints:b,groupSize:v,layout:M,separatorToPanels:L})}});let r=0;t.movementX===0?r|=u&Re:r|=a&Re,t.movementY===0?r|=u&Ce:r|=a&Ce,xt(r),Se(e)}function Ne(e){const t=q(),n=B();switch(n.state){case"active":ot({document:e.currentTarget,event:e,hitRegions:n.hitRegions,initialLayoutMap:n.initialLayoutMap,mountedGroups:t,prevCursorFlags:n.cursorFlags})}}function _e(e){if(e.defaultPrevented)return;const t=B(),n=q();switch(t.state){case"active":{if(e.buttons===0){ee({cursorFlags:0,state:"inactive"}),t.hitRegions.forEach(o=>{const i=H(o.group.id,!0);$(o.group,i,{isUserInteraction:!0})});return}for(const o of t.hitRegions)if(o.separator){const{element:i}=o.separator;i.hasPointerCapture?.(e.pointerId)||i.setPointerCapture?.(e.pointerId)}ot({document:e.currentTarget,event:e,hitRegions:t.hitRegions,initialLayoutMap:t.initialLayoutMap,mountedGroups:n,pointerDownAtPoint:t.pointerDownAtPoint,prevCursorFlags:t.cursorFlags});break}default:{const o=be(e,n);o.length===0?t.state!=="inactive"&&ee({cursorFlags:0,state:"inactive"}):ee({cursorFlags:0,hitRegions:o,state:"hover"}),Se(e.currentTarget);break}}}function je(e){if(e.relatedTarget instanceof HTMLIFrameElement)switch(B().state){case"hover":ee({cursorFlags:0,state:"inactive"})}}function $e(e){if(e.defaultPrevented)return;if(e.pointerType==="mouse"&&e.button>0)return;Qe(e.currentTarget)&&e.preventDefault()}function He(e){let t=0,n=0;const o={};for(const s of e)if(s.defaultSize!==void 0){t++;const u=O(s.defaultSize);n+=u,o[s.panelId]=u}else o[s.panelId]=void 0;const i=e.length-t;if(i!==0){const s=O((100-n)/i);for(const u of e)u.defaultSize===void 0&&(o[u.panelId]=s)}return o}function Ot(e,t,n){if(!n[0])return;const i=e.panels.find(l=>l.element===t);if(!i||!i.onResize)return;const s=te({group:e}),u=e.orientation==="horizontal"?i.element.offsetWidth:i.element.offsetHeight,a=i.mutableValues.prevSize,r={asPercentage:O(u/s*100),inPixels:u};i.mutableValues.prevSize=r,i.onResize(r,i.id,a)}function Gt(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const o in e)if(e[o]!==t[o])return!1;return!0}function At({group:e,nextGroupSize:t,prevGroupSize:n,prevLayout:o}){if(n<=0||t<=0||n===t)return o;let i=0,s=0,u=!1;const a=new Map,r=[];for(const m of e.panels){const p=o[m.id]??0;switch(m.panelConstraints.groupResizeBehavior){case"preserve-pixel-size":{u=!0;const S=p/100*n,x=O(S/t*100);a.set(m.id,x),i+=x;break}case"preserve-relative-size":default:{r.push(m.id),s+=p;break}}}if(!u||r.length===0)return o;const l=100-i,c={...o};if(a.forEach((m,p)=>{c[p]=m}),s>0)for(const m of r){const p=o[m]??0;c[m]=O(p/s*l)}else{const m=O(l/r.length);for(const p of r)c[p]=m}return c}function Ft(e,t){const n=e.map(i=>i.id),o=Object.keys(t);if(n.length!==o.length)return!1;for(const i of n)if(!o.includes(i))return!1;return!0}const J=new Map;function Nt(e){let t=!0;C(e.element.ownerDocument.defaultView,"Cannot register an unmounted Group");const n=e.element.ownerDocument.defaultView.ResizeObserver,o=new Set,i=new Set,s=new n(f=>{for(const d of f){const{borderBoxSize:h,target:y}=d;if(y===e.element){if(t){const b=te({group:e});if(b===0)return;const v=H(e.id);if(!v)return;const g=me(e),L=v.defaultLayoutDeferred?He(g):v.layout,M=At({group:e,nextGroupSize:b,prevGroupSize:v.groupSize,prevLayout:L}),R=K({layout:M,panelConstraints:g});if(!v.defaultLayoutDeferred&&W(v.layout,R)&&Gt(v.derivedPanelConstraints,g)&&v.groupSize===b)return;$(e,{defaultLayoutDeferred:!1,derivedPanelConstraints:g,groupSize:b,layout:R,separatorToPanels:v.separatorToPanels})}}else Ot(e,y,h)}});s.observe(e.element),e.panels.forEach(f=>{C(!o.has(f.id),`Panel ids must be unique; id "${f.id}" was used more than once`),o.add(f.id),f.onResize&&s.observe(f.element)});const u=te({group:e}),a=me(e),r=e.panels.map(({id:f})=>f).join(",");let l=e.mutableState.defaultLayout;l&&(Ft(e.panels,l)||(l=void 0));const c=e.mutableState.layouts[r]??l??He(a),m=K({layout:c,panelConstraints:a}),p=e.element.ownerDocument;J.set(p,(J.get(p)??0)+1);const S=new Map;return We(e).forEach(f=>{f.separator&&S.set(f.separator,f.panels)}),$(e,{defaultLayoutDeferred:u===0,derivedPanelConstraints:a,groupSize:u,layout:m,separatorToPanels:S}),e.separators.forEach(f=>{C(!i.has(f.id),`Separator ids must be unique; id "${f.id}" was used more than once`),i.add(f.id),f.element.addEventListener("keydown",Ae)}),J.get(p)===1&&(p.addEventListener("contextmenu",Ie,!0),p.addEventListener("dblclick",Ge,!0),p.addEventListener("pointerdown",Fe,!0),p.addEventListener("pointerleave",Ne),p.addEventListener("pointermove",_e),p.addEventListener("pointerout",je),p.addEventListener("pointerup",$e,!0)),function(){t=!1,J.set(p,Math.max(0,(J.get(p)??0)-1)),wt(e),e.separators.forEach(d=>{d.element.removeEventListener("keydown",Ae)}),J.get(p)||(p.removeEventListener("contextmenu",Ie,!0),p.removeEventListener("dblclick",Ge,!0),p.removeEventListener("pointerdown",Fe,!0),p.removeEventListener("pointerleave",Ne),p.removeEventListener("pointermove",_e),p.removeEventListener("pointerout",je),p.removeEventListener("pointerup",$e,!0)),s.disconnect()}}function _t(){const[e,t]=z.useState({}),n=z.useCallback(()=>t({}),[]);return[e,n]}function xe(e){const t=z.useId();return`${e??t}`}const X=typeof window<"u"?z.useLayoutEffect:z.useEffect;function ie(e){const t=z.useRef(e);return X(()=>{t.current=e},[e]),z.useCallback((...n)=>t.current?.(...n),[t])}function ze(...e){return ie(t=>{e.forEach(n=>{if(n)switch(typeof n){case"function":{n(t);break}case"object":{n.current=t;break}}})})}function Pe(e){const t=z.useRef({...e});return X(()=>{for(const n in e)t.current[n]=e[n]},[e]),t.current}const it=z.createContext(null);function jt(e,t){const n=z.useRef({getLayout:()=>({}),setLayout:zt});z.useImperativeHandle(t,()=>n.current,[]),X(()=>{Object.assign(n.current,nt({groupId:e}))})}function rt({children:e,className:t,defaultLayout:n,disableCursor:o,disabled:i,elementRef:s,groupRef:u,id:a,onLayoutChange:r,onLayoutChanged:l,orientation:c="horizontal",resizeTargetMinimumSize:m={coarse:20,fine:10},style:p,...S}){const x=z.useRef({onLayoutChange:{},onLayoutChanged:{}}),f=ie(P=>{W(x.current.onLayoutChange,P)||(x.current.onLayoutChange=P,r?.(P))}),d=ie((P,w)=>{W(x.current.onLayoutChanged,P)||(x.current.onLayoutChanged=P,l?.(P,{isUserInteraction:w}))}),h=xe(a),y=z.useRef(null),[b,v]=_t(),g=z.useRef({lastExpandedPanelSizes:{},layouts:{},panels:[],resizeTargetMinimumSize:m,separators:[]}),L=ze(y,s);jt(h,u);const M=ie((P,w)=>{const I=B(),E=ke(P),k=H(P);if(k){let T=!1;switch(I.state){case"active":{T=I.hitRegions.some(V=>V.group===E);break}}return{flexGrow:k.layout[w]??1,pointerEvents:T?"none":void 0}}if(n?.[w])return{flexGrow:n?.[w]}}),R=Pe({defaultLayout:n,disableCursor:o}),G=z.useMemo(()=>({get disableCursor(){return!!R.disableCursor},getPanelStyles:M,id:h,orientation:c,registerPanel:P=>{const w=g.current;return w.panels=ge(c,[...w.panels,P]),v(),()=>{w.panels=w.panels.filter(I=>I!==P),v()}},registerSeparator:P=>{const w=g.current;return w.separators=ge(c,[...w.separators,P]),v(),()=>{w.separators=w.separators.filter(I=>I!==P),v()}},updatePanelProps:(P,{disabled:w})=>{const E=g.current.panels.find(V=>V.id===P);E&&(E.panelConstraints.disabled=w);const k=ke(h),T=H(h);k&&T&&$(k,{...T,derivedPanelConstraints:me(k)})},updateSeparatorProps:(P,{disabled:w,disableDoubleClick:I})=>{const k=g.current.separators.find(T=>T.id===P);k&&(k.disabled=w,k.disableDoubleClick=I)}}),[M,h,v,c,R]),N=z.useRef(null);return X(()=>{const P=y.current;if(P===null)return;const w=g.current;let I;if(R.defaultLayout!==void 0&&Object.keys(R.defaultLayout).length===w.panels.length){I={};for(const _ of w.panels){const Y=R.defaultLayout[_.id];Y!==void 0&&(I[_.id]=Y)}}const E={disabled:!!i,element:P,id:h,mutableState:{defaultLayout:I,disableCursor:!!R.disableCursor,expandedPanelSizes:g.current.lastExpandedPanelSizes,layouts:g.current.layouts},orientation:c,panels:w.panels,resizeTargetMinimumSize:w.resizeTargetMinimumSize,separators:w.separators};N.current=E;const k=Nt(E),{defaultLayoutDeferred:T,derivedPanelConstraints:V,layout:ae}=H(E.id,!0);!T&&V.length>0&&(f(ae),d(ae,!1));const ne=ve(h,_=>{const{defaultLayoutDeferred:Y,derivedPanelConstraints:Le,layout:le}=_.next;if(Y||Le.length===0)return;const lt=E.panels.map(({id:j})=>j).join(",");E.mutableState.layouts[lt]=le,Le.forEach(j=>{if(j.collapsible){const{layout:pe}=_.prev??{};if(pe){const ct=D(j.collapsedSize,le[j.panelId]),ft=D(j.collapsedSize,pe[j.panelId]);ct&&!ft&&(E.mutableState.expandedPanelSizes[j.panelId]=pe[j.panelId])}}});const ut=B().state!=="active";f(le),ut&&d(le,_.isUserInteraction)});return()=>{N.current=null,k(),ne()}},[i,h,d,f,c,b,R]),z.useEffect(()=>{const P=N.current;P&&(P.mutableState.defaultLayout=n,P.mutableState.disableCursor=!!o)}),re.jsx(it.Provider,{value:G,children:re.jsx("div",{...S,className:t,"data-group":!0,"data-testid":h,id:h,ref:L,style:{height:"100%",width:"100%",overflow:"hidden",...p,display:"flex",flexDirection:c==="horizontal"?"row":"column",flexWrap:"nowrap",touchAction:c==="horizontal"?"pan-y":"pan-x"},children:e})})}rt.displayName="Group";function de(e,t){return`react-resizable-panels:${[e,...t].join(":")}`}function $t({id:e,panelIds:t,storage:n}){const o=de(e,[]),i=n.getItem(o);if(i)try{const s=JSON.parse(i);if(t){const u=t.join(","),a=s[u];if(a&&Array.isArray(a.layout)&&t.length===a.layout.length){const r={};for(let l=0;l<t.length;l++)r[t[l]]=a.layout[l];return r}}else{const u=Object.keys(s);if(u.length===1){const a=s[u[0]];if(a&&Array.isArray(a.layout)){const r=u[0].split(",");if(r.length===a.layout.length){const l={};for(let c=0;c<r.length;c++)l[r[c]]=a.layout[c];return l}}}}}catch{}}function Ht({debounceSaveMs:e=100,onlySaveAfterUserInteractions:t,panelIds:n,storage:o=localStorage,...i}){const s=n!==void 0,u="id"in i?i.id:i.groupId,a=de(u,n??[]),r=z.useSyncExternalStore(Vt,()=>o.getItem(a),()=>o.getItem(a)),l=z.useMemo(()=>{if(r){const d=JSON.parse(r),h=Object.values(d);if(Array.from(h).every(y=>typeof y=="number"))return d}},[r]),c=z.useMemo(()=>{if(!l)return $t({id:u,panelIds:n,storage:o})},[l,u,n,o]),m=l??c,p=z.useRef(null),S=z.useCallback(()=>{const d=p.current;d&&(p.current=null,clearTimeout(d))},[]);z.useLayoutEffect(()=>()=>{S()},[S]);const x=z.useCallback((d,h)=>{if(t&&!h.isUserInteraction)return;S();let y;s?y=de(u,Object.keys(d)):y=de(u,[]);try{o.setItem(y,JSON.stringify(d))}catch(b){console.error(b)}},[S,s,u,t,o]),f=z.useCallback(d=>{S(),e===0?x(d,{isUserInteraction:!1}):p.current=setTimeout(()=>{x(d,{isUserInteraction:!1})},e)},[S,e,x]);return{defaultLayout:m,onLayoutChange:f,onLayoutChanged:x}}function Vt(){return function(){}}function Ut(){return z.useState(null)}function Bt(){return z.useRef(null)}function we(){const e=z.useContext(it);return C(e,"Group Context not found; did you render a Panel or Separator outside of a Group?"),e}function Wt(e,t){const{id:n}=we(),o=z.useRef({collapse:he,expand:he,getSize:()=>({asPercentage:0,inPixels:0}),isCollapsed:()=>!1,resize:he});z.useImperativeHandle(t,()=>o.current,[]),X(()=>{Object.assign(o.current,tt({groupId:n,panelId:e}))})}function st({children:e,className:t,collapsedSize:n="0%",collapsible:o=!1,defaultSize:i,disabled:s,elementRef:u,groupResizeBehavior:a="preserve-relative-size",id:r,maxSize:l="100%",minSize:c="0%",onResize:m,panelRef:p,style:S,...x}){const f=!!r,d=xe(r),h=Pe({disabled:s}),y=z.useRef(null),b=ze(y,u),{getPanelStyles:v,id:g,orientation:L,registerPanel:M,updatePanelProps:R}=we(),G=m!==null,N=ie((E,k,T)=>{m?.(E,r,T)});X(()=>{const E=y.current;if(E!==null){const k={element:E,id:d,idIsStable:f,mutableValues:{expandToSize:void 0,prevSize:void 0},onResize:G?N:void 0,panelConstraints:{groupResizeBehavior:a,collapsedSize:n,collapsible:o,defaultSize:i,disabled:h.disabled,maxSize:l,minSize:c}};return M(k)}},[a,n,o,i,G,d,f,l,c,N,M,h]),z.useEffect(()=>{R(d,{disabled:s})},[s,d,R]),Wt(d,p);const P=()=>{const E=v(g,d);if(E)return JSON.stringify(E)},w=z.useSyncExternalStore(E=>ve(g,E),P,P);let I;return w?I=JSON.parse(w):i!==void 0?I={flexGrow:void 0,flexShrink:void 0,flexBasis:i}:I={flexGrow:1},re.jsx("div",{...x,"data-disabled":s||void 0,"data-panel":!0,"data-testid":d,id:d,ref:b,style:{...Kt,display:"flex",flexBasis:0,flexShrink:1,overflow:"visible",...I},children:re.jsx("div",{className:t,style:{maxHeight:"100%",maxWidth:"100%",flexGrow:1,overflow:"auto",...S,touchAction:L==="horizontal"?"pan-y":"pan-x"},children:e})})}st.displayName="Panel";const Kt={minHeight:0,maxHeight:"100%",height:"auto",minWidth:0,maxWidth:"100%",width:"auto",border:"none",borderWidth:0,padding:0,margin:0};function qt(){return z.useState(null)}function Xt(){return z.useRef(null)}function Yt({layout:e,panelConstraints:t,panelId:n,panelIndex:o}){let i,s;const u=e[n],a=t.find(r=>r.panelId===n);if(a){const r=a.maxSize,l=a.collapsible?a.collapsedSize:a.minSize,c=[o,o+1];s=K({layout:se({delta:l-u,initialLayout:e,panelConstraints:t,pivotIndices:c,prevLayout:e}),panelConstraints:t})[n],i=K({layout:se({delta:r-u,initialLayout:e,panelConstraints:t,pivotIndices:c,prevLayout:e}),panelConstraints:t})[n]}return{valueControls:n,valueMax:i,valueMin:s,valueNow:u}}function at({children:e,className:t,disabled:n,disableDoubleClick:o,elementRef:i,id:s,style:u,...a}){const r=xe(s),l=Pe({disabled:n,disableDoubleClick:o}),[c,m]=z.useState({}),[p,S]=z.useState("inactive"),[x,f]=z.useState(!1),d=z.useRef(null),h=ze(d,i),{disableCursor:y,id:b,orientation:v,registerSeparator:g,updateSeparatorProps:L}=we(),M=v==="horizontal"?"vertical":"horizontal";X(()=>{const N=d.current;if(N!==null){const P={disabled:l.disabled,disableDoubleClick:l.disableDoubleClick,element:N,id:r},w=g(P),I=bt(k=>{S(k.next.state!=="inactive"&&k.next.hitRegions.some(T=>T.separator===P)?k.next.state:"inactive")}),E=ve(b,k=>{const{derivedPanelConstraints:T,layout:V,separatorToPanels:ae}=k.next,ne=ae.get(P);if(ne){const _=ne[0],Y=ne.indexOf(_);m(Yt({layout:V,panelConstraints:T,panelId:_.id,panelIndex:Y}))}});return()=>{I(),E(),w()}}},[b,r,g,l]),z.useEffect(()=>{L(r,{disabled:n,disableDoubleClick:o})},[n,o,r,L]);let R;n&&!y&&(R="not-allowed");let G;if(n)G="disabled";else switch(p){case"active":{G="active";break}default:x?G="focus":G=p}return re.jsx("div",{...a,"aria-controls":c.valueControls,"aria-disabled":n||void 0,"aria-orientation":M,"aria-valuemax":c.valueMax,"aria-valuemin":c.valueMin,"aria-valuenow":c.valueNow,children:e,className:t,"data-separator":G,"data-testid":r,id:r,onBlur:()=>f(!1),onFocus:()=>f(!0),ref:h,role:"separator",style:{flexBasis:"auto",cursor:R,...u,flexGrow:0,flexShrink:0,touchAction:"none"},tabIndex:n?void 0:0})}at.displayName="Separator";exports.Group=rt;exports.Panel=st;exports.Separator=at;exports.isCoarsePointer=Be;exports.useDefaultLayout=Ht;exports.useGroupCallbackRef=Ut;exports.useGroupRef=Bt;exports.usePanelCallbackRef=qt;exports.usePanelRef=Xt;
|
|
2
2
|
//# sourceMappingURL=react-resizable-panels.cjs.map
|