import{$ as e,A as t,Ct as n,D as r,F as i,K as a,M as o,Mt as s,R as c,V as l,W as u,X as d,at as f,ct as p,en as m,g as h,m as g,v as _}from"./vendor/json-editor-vue-eojr4v24.js";var v={__name:`splitpanes`,props:{horizontal:{type:Boolean,default:!1},pushOtherPanes:{type:Boolean,default:!0},maximizePanes:{type:Boolean,default:!0},rtl:{type:Boolean,default:!1},firstSplitter:{type:Boolean,default:!1}},emits:[`ready`,`resize`,`resized`,`pane-click`,`pane-maximize`,`pane-add`,`pane-remove`,`splitter-click`,`splitter-dblclick`],setup(r,{emit:o}){let s=o,d=r,m=f(),_=n([]),v=g(()=>_.value.reduce((e,t)=>(e[~~t.id]=t)&&e,{})),y=g(()=>_.value.length),b=n(null),x=n(!1),S=n({mouseDown:!1,dragging:!1,activeSplitter:null,cursorOffset:0}),C=n({splitter:null,timeoutId:null}),w=g(()=>({[`splitpanes splitpanes--${d.horizontal?`horizontal`:`vertical`}`]:!0,"splitpanes--dragging":S.value.dragging})),T=()=>{document.addEventListener(`mousemove`,O,{passive:!1}),document.addEventListener(`mouseup`,k),`ontouchstart`in window&&(document.addEventListener(`touchmove`,O,{passive:!1}),document.addEventListener(`touchend`,k))},E=()=>{document.removeEventListener(`mousemove`,O,{passive:!1}),document.removeEventListener(`mouseup`,k),`ontouchstart`in window&&(document.removeEventListener(`touchmove`,O,{passive:!1}),document.removeEventListener(`touchend`,k))},D=(e,t)=>{let n=e.target.closest(`.splitpanes__splitter`);if(n){let{left:t,top:r}=n.getBoundingClientRect(),{clientX:i,clientY:a}=`ontouchstart`in window&&e.touches?e.touches[0]:e;S.value.cursorOffset=d.horizontal?a-r:i-t}T(),S.value.mouseDown=!0,S.value.activeSplitter=t},O=e=>{S.value.mouseDown&&(e.preventDefault(),S.value.dragging=!0,requestAnimationFrame(()=>{F(N(e)),$(`resize`,{event:e},!0)}))},k=e=>{S.value.dragging&&(window.getSelection().removeAllRanges(),$(`resized`,{event:e},!0)),S.value.mouseDown=!1,S.value.activeSplitter=null,setTimeout(()=>{S.value.dragging=!1,E()},100)},A=(e,t)=>{`ontouchstart`in window&&(e.preventDefault(),C.value.splitter===t?(clearTimeout(C.value.timeoutId),C.value.timeoutId=null,j(e,t),C.value.splitter=null):(C.value.splitter=t,C.value.timeoutId=setTimeout(()=>C.value.splitter=null,500))),S.value.dragging||$(`splitter-click`,{event:e,index:t},!0)},j=(e,t)=>{if($(`splitter-dblclick`,{event:e,index:t},!0),d.maximizePanes){let n=0;_.value=_.value.map((e,r)=>(e.size=r===t?e.max:e.min,r!==t&&(n+=e.min),e)),_.value[t].size-=n,$(`pane-maximize`,{event:e,index:t,pane:_.value[t]}),$(`resized`,{event:e,index:t},!0)}},M=(e,t)=>{$(`pane-click`,{event:e,index:v.value[t].index,pane:v.value[t]})},N=e=>{let t=b.value.getBoundingClientRect(),{clientX:n,clientY:r}=`ontouchstart`in window&&e.touches?e.touches[0]:e;return{x:n-(d.horizontal?0:S.value.cursorOffset)-t.left,y:r-(d.horizontal?S.value.cursorOffset:0)-t.top}},P=e=>{e=e[d.horizontal?`y`:`x`];let t=b.value[d.horizontal?`clientHeight`:`clientWidth`];return d.rtl&&!d.horizontal&&(e=t-e),e*100/t},F=e=>{let t=S.value.activeSplitter,n={prevPanesSize:L(t),nextPanesSize:R(t),prevReachedMinPanes:0,nextReachedMinPanes:0},r=0+(d.pushOtherPanes?0:n.prevPanesSize),i=100-(d.pushOtherPanes?0:n.nextPanesSize),a=Math.max(Math.min(P(e),i),r),o=[t,t+1],s=_.value[o[0]]||null,c=_.value[o[1]]||null,l=s.max<100&&a>=s.max+n.prevPanesSize,u=c.max<100&&a<=100-(c.max+R(t+1));if(l||u){l?(s.size=s.max,c.size=Math.max(100-s.max-n.prevPanesSize-n.nextPanesSize,0)):(s.size=Math.max(100-c.max-n.prevPanesSize-R(t+1),0),c.size=c.max);return}if(d.pushOtherPanes){let e=I(n,a);if(!e)return;({sums:n,panesToResize:o}=e),s=_.value[o[0]]||null,c=_.value[o[1]]||null}s!==null&&(s.size=Math.min(Math.max(a-n.prevPanesSize-n.prevReachedMinPanes,s.min),s.max)),c!==null&&(c.size=Math.min(Math.max(100-a-n.nextPanesSize-n.nextReachedMinPanes,c.min),c.max))},I=(e,t)=>{let n=S.value.activeSplitter,r=[n,n+1];return t{i>r[0]&&i<=n&&(t.size=t.min,e.prevReachedMinPanes+=t.min)}),e.prevPanesSize=L(r[0]),r[0]===void 0)?(e.prevReachedMinPanes=0,_.value[0].size=_.value[0].min,_.value.forEach((t,r)=>{r>0&&r<=n&&(t.size=t.min,e.prevReachedMinPanes+=t.min)}),_.value[r[1]].size=100-e.prevReachedMinPanes-_.value[0].min-e.prevPanesSize-e.nextPanesSize,null):t>100-e.nextPanesSize-_.value[r[1]].min&&(r[1]=B(n).index,e.nextReachedMinPanes=0,r[1]>n+1&&_.value.forEach((t,i)=>{i>n&&i{r=n+1&&(t.size=t.min,e.nextReachedMinPanes+=t.min)}),_.value[r[0]].size=100-e.prevPanesSize-R(r[0]-1),null):{sums:e,panesToResize:r}},L=e=>_.value.reduce((t,n,r)=>t+(r_.value.reduce((t,n,r)=>t+(r>e+1?n.size:0),0),z=e=>[..._.value].reverse().find(t=>t.indext.min)||{},B=e=>_.value.find(t=>t.index>e+1&&t.size>t.min)||{},V=()=>{let e=Array.from(b.value?.children||[]);for(let t of e){let e=t.classList.contains(`splitpanes__pane`),n=t.classList.contains(`splitpanes__splitter`);!e&&!n&&(t.remove(),console.warn(`Splitpanes: Only elements are allowed at the root of . One of your DOM nodes was removed.`))}},H=(e,t,n=!1)=>{let r=e-1,i=document.createElement(`div`);i.classList.add(`splitpanes__splitter`),n||(i.onmousedown=e=>D(e,r),typeof window<`u`&&`ontouchstart`in window&&(i.ontouchstart=e=>D(e,r)),i.onclick=e=>A(e,r+1)),i.ondblclick=e=>j(e,r+1),t.parentNode.insertBefore(i,t)},U=e=>{e.onmousedown=void 0,e.onclick=void 0,e.ondblclick=void 0,e.remove()},W=()=>{let e=Array.from(b.value?.children||[]);for(let t of e)t.className.includes(`splitpanes__splitter`)&&U(t);let t=0;for(let n of e)n.className.includes(`splitpanes__pane`)&&(!t&&d.firstSplitter?H(t,n,!0):t&&H(t,n),t++)},G=({uid:e,...t})=>{let n=v.value[e];for(let[e,r]of Object.entries(t))n[e]=r},K=e=>{let t=-1;Array.from(b.value?.children||[]).some(n=>(n.className.includes(`splitpanes__pane`)&&t++,n.isSameNode(e.el))),_.value.splice(t,0,{...e,index:t}),_.value.forEach((e,t)=>e.index=t),x.value&&i(()=>{W(),J({addedPane:_.value[t]}),$(`pane-add`,{pane:_.value[t]})})},q=e=>{let t=_.value.findIndex(t=>t.id===e);_.value[t].el=null;let n=_.value.splice(t,1)[0];_.value.forEach((e,t)=>e.index=t),i(()=>{W(),$(`pane-remove`,{pane:n}),J({removedPane:{...n}})})},J=(e={})=>{!e.addedPane&&!e.removedPane?X():_.value.some(e=>e.givenSize!==null||e.min||e.max<100)?Z(e):Y(),x.value&&$(`resized`)},Y=()=>{let e=100/y.value,t=0,n=[],r=[];for(let i of _.value)i.size=Math.max(Math.min(e,i.max),i.min),t-=i.size,i.size>=i.max&&n.push(i.id),i.size<=i.min&&r.push(i.id);t>.1&&Q(t,n,r)},X=()=>{let e=100,t=[],n=[],r=0;for(let i of _.value)e-=i.size,i.givenSize!==null&&r++,i.size>=i.max&&t.push(i.id),i.size<=i.min&&n.push(i.id);let i=100;if(e>.1){for(let t of _.value)t.givenSize===null&&(t.size=Math.max(Math.min(e/(y.value-r),t.max),t.min)),i-=t.size;i>.1&&Q(i,t,n)}},Z=({addedPane:e,removedPane:t}={})=>{let n=100/y.value,r=0,i=[],a=[];(e?.givenSize??null)!==null&&(n=(100-e.givenSize)/(y.value-1));for(let e of _.value)r-=e.size,e.size>=e.max&&i.push(e.id),e.size<=e.min&&a.push(e.id);if(!(Math.abs(r)<.1)){for(let t of _.value)e?.givenSize!==null&&e?.id===t.id||(t.size=Math.max(Math.min(n,t.max),t.min)),r-=t.size,t.size>=t.max&&i.push(t.id),t.size<=t.min&&a.push(t.id);r>.1&&Q(r,i,a)}},Q=(e,t,n)=>{let r;r=e>0?e/(y.value-t.length):e/(y.value-n.length),_.value.forEach((i,a)=>{if(e>0&&!t.includes(i.id)){let t=Math.max(Math.min(i.size+r,i.max),i.min),n=t-i.size;e-=n,i.size=t}else if(!n.includes(i.id)){let t=Math.max(Math.min(i.size+r,i.max),i.min),n=t-i.size;e-=n,i.size=t}}),Math.abs(e)>.1&&i(()=>{x.value&&console.warn(`Splitpanes: Could not resize panes correctly due to their constraints.`)})},$=(e,t=void 0,n=!1)=>{let r=t?.index??S.value.activeSplitter??null;s(e,{...t,...r!==null&&{index:r},...n&&r!==null&&{prevPane:_.value[r-(d.firstSplitter?1:0)],nextPane:_.value[r+(d.firstSplitter?0:1)]},panes:_.value.map(e=>({min:e.min,max:e.max,size:e.size}))})};p(()=>d.firstSplitter,()=>W()),l(()=>{V(),W(),J(),$(`ready`),x.value=!0}),c(()=>x.value=!1);let ee=()=>t(`div`,{ref:b,class:w.value},m.default?.call(m));return a(`panes`,_),a(`indexedPanes`,v),a(`horizontal`,g(()=>d.horizontal)),a(`requestUpdate`,G),a(`onPaneAdd`,K),a(`onPaneRemove`,q),a(`onPaneClick`,M),(t,n)=>(u(),h(e(ee)))}},y={__name:`pane`,props:{size:{type:[Number,String]},minSize:{type:[Number,String],default:0},maxSize:{type:[Number,String],default:100}},setup(e){let t=e,i=o(`requestUpdate`),a=o(`onPaneAdd`),f=o(`horizontal`),h=o(`onPaneRemove`),v=o(`onPaneClick`),y=r()?.uid,b=o(`indexedPanes`),x=g(()=>b.value[y]),S=n(null),C=g(()=>{let e=isNaN(t.size)||t.size===void 0?0:parseFloat(t.size);return Math.max(Math.min(e,T.value),w.value)}),w=g(()=>{let e=parseFloat(t.minSize);return isNaN(e)?0:e}),T=g(()=>{let e=parseFloat(t.maxSize);return isNaN(e)?100:e}),E=g(()=>`${f.value?`height`:`width`}: ${x.value?.size}%`);return p(()=>C.value,e=>i({uid:y,size:e})),p(()=>w.value,e=>i({uid:y,min:e})),p(()=>T.value,e=>i({uid:y,max:e})),l(()=>{a({id:y,el:S.value,min:w.value,max:T.value,givenSize:t.size===void 0?null:C.value,size:C.value})}),c(()=>h(y)),(e,t)=>(u(),_(`div`,{ref_key:`paneEl`,ref:S,class:`splitpanes__pane`,onClick:t[0]||=t=>s(v)(t,e._.uid),style:m(E.value)},[d(e.$slots,`default`)],4))}};export{y as n,v as t};