dockview-core
Version:
Zero dependency layout manager supporting tabs, groups, grids and splitviews for vanilla TypeScript
7 lines • 312 kB
JavaScript
/**
* dockview-core
* @version 6.6.1
* @link https://github.com/mathuo/dockview
* @license MIT
*/
"use strict";class e{}class t extends e{constructor(e,t,i,s){super(),this.viewId=e,this.groupId=t,this.panelId=i,this.tabGroupId=s}}class i extends e{constructor(e,t){super(),this.viewId=e,this.paneId=t}}class s{constructor(){}static getInstance(){return s.INSTANCE}hasData(e){return e&&e===this.proto}clearData(e){this.hasData(e)&&(this.proto=void 0,this.data=void 0)}getData(e){if(this.hasData(e))return this.data}setData(e,t){t&&(this.data=e,this.proto=t)}}function o(){const e=s.getInstance();if(e.hasData(t.prototype))return e.getData(t.prototype)[0]}function n(){const e=s.getInstance();if(e.hasData(i.prototype))return e.getData(i.prototype)[0]}var r;s.INSTANCE=new s,exports.DockviewDisposable=void 0,(r=exports.DockviewDisposable||(exports.DockviewDisposable={})).NONE={dispose:()=>{}},r.from=function(e){return{dispose:()=>{e()}}};class a{get isDisposed(){return this._isDisposed}constructor(...e){this._isDisposed=!1,this._disposables=new Set(e)}addDisposables(...e){e.forEach(e=>this._disposables.add(e))}removeDisposable(e){this._disposables.delete(e)}dispose(){this._isDisposed||(this._isDisposed=!0,this._disposables.forEach(e=>e.dispose()),this._disposables.clear())}}class l{constructor(){this._disposable=exports.DockviewDisposable.NONE}set value(e){this._disposable&&this._disposable.dispose(),this._disposable=e}dispose(){this._disposable&&(this._disposable.dispose(),this._disposable=exports.DockviewDisposable.NONE)}}exports.DockviewEvent=void 0,(exports.DockviewEvent||(exports.DockviewEvent={})).any=(...e)=>t=>{const i=e.map(e=>e(t));return{dispose:()=>{i.forEach(e=>{e.dispose()})}}};class h{constructor(){this._defaultPrevented=!1}get defaultPrevented(){return this._defaultPrevented}preventDefault(){this._defaultPrevented=!0}}class d{constructor(){this._isAccepted=!1}get isAccepted(){return this._isAccepted}accept(){this._isAccepted=!0}}class p{static create(){var e;return new p(null!==(e=(new Error).stack)&&void 0!==e?e:"")}constructor(e){this.value=e}print(){console.warn("dockview: stacktrace",this.value)}}class c{constructor(e,t){this.callback=e,this.stacktrace=t}}class u{static setLeakageMonitorEnabled(e){e!==u.ENABLE_TRACKING&&u.MEMORY_LEAK_WATCHER.clear(),u.ENABLE_TRACKING=e}get value(){return this._last}constructor(e){this.options=e,this._listeners=[],this._disposed=!1,this._pauseTokens=new Set}get event(){return this._event||(this._event=e=>{var t;(null===(t=this.options)||void 0===t?void 0:t.replay)&&void 0!==this._last&&e(this._last);const i=new c(e,u.ENABLE_TRACKING?p.create():void 0);return this._listeners.push(i),{dispose:()=>{const e=this._listeners.indexOf(i);e>-1?this._listeners.splice(e,1):u.ENABLE_TRACKING}}},u.ENABLE_TRACKING&&u.MEMORY_LEAK_WATCHER.add(this._event,p.create())),this._event}fire(e){var t;if(!(this._pauseTokens.size>0)){(null===(t=this.options)||void 0===t?void 0:t.replay)&&(this._last=e);for(const t of this._listeners)t.callback(e)}}pause(){const e={};return this._pauseTokens.add(e),exports.DockviewDisposable.from(()=>this._pauseTokens.delete(e))}dispose(){this._disposed||(this._disposed=!0,this._listeners.length>0&&(u.ENABLE_TRACKING&&queueMicrotask(()=>{var e;for(const t of this._listeners)console.warn("dockview: stacktrace",null===(e=t.stacktrace)||void 0===e?void 0:e.print())}),this._listeners=[]),u.ENABLE_TRACKING&&this._event&&u.MEMORY_LEAK_WATCHER.delete(this._event))}}function m(e,t,i,s){return e.addEventListener(t,i,s),{dispose:()=>{e.removeEventListener(t,i,s)}}}u.ENABLE_TRACKING=!1,u.MEMORY_LEAK_WATCHER=new class{constructor(){this.events=new Map}get size(){return this.events.size}add(e,t){this.events.set(e,t)}delete(e){this.events.delete(e)}clear(){this.events.clear()}};class v{constructor(){this._onFired=new u,this._currentFireCount=0,this._queued=!1,this.onEvent=e=>{const t=this._currentFireCount;return this._onFired.event(()=>{this._currentFireCount>t&&e()})}}fire(){this._currentFireCount++,this._queued||(this._queued=!0,queueMicrotask(()=>{this._queued=!1,this._onFired.fire()}))}dispose(){this._onFired.dispose()}}class g extends a{constructor(e){super(),this._onDidChange=new u,this.onDidChange=this._onDidChange.event,this._value=null,this.addDisposables(this._onDidChange,_(e,e=>{const t=e.target.scrollWidth>e.target.clientWidth,i=e.target.scrollHeight>e.target.clientHeight;this._value={hasScrollX:t,hasScrollY:i},this._onDidChange.fire(this._value)}))}}function _(e,t){const i=new ResizeObserver(e=>{requestAnimationFrame(()=>{const i=e[0];t(i)})});return i.observe(e),{dispose:()=>{i.unobserve(e),i.disconnect()}}}const f=(e,...t)=>{for(const i of t)e.classList.contains(i)&&e.classList.remove(i)},b=(e,...t)=>{for(const i of t)e.classList.contains(i)||e.classList.add(i)},w=(e,t,i)=>{const s=e.classList.contains(t);i&&!s&&e.classList.add(t),!i&&s&&e.classList.remove(t)};function D(e,t){for(;e;){if(e===t)return!0;e=e.parentNode}return!1}function C(e){return new y(e)}class y extends a{constructor(e){super(),this._onDidFocus=new u,this.onDidFocus=this._onDidFocus.event,this._onDidBlur=new u,this.onDidBlur=this._onDidBlur.event,this.addDisposables(this._onDidFocus,this._onDidBlur);let t=D(document.activeElement,e),i=!1;const s=()=>{i=!1,t||(t=!0,this._onDidFocus.fire())},o=()=>{t&&(i=!0,window.setTimeout(()=>{i&&(i=!1,t=!1,this._onDidBlur.fire())},0))};this._refreshStateHandler=()=>{D(document.activeElement,e)!==t&&(t?o():s())},this.addDisposables(m(e,"focus",s,!0)),this.addDisposables(m(e,"blur",o,!0))}refreshState(){this._refreshStateHandler()}}const x="dv-quasiPreventDefault";function S(e){return e[x]}function G(e){const{left:t,top:i,width:s,height:o}=e.getBoundingClientRect();return{left:t+window.scrollX,top:i+window.scrollY,width:s,height:o}}function P(e=document){const t=function(e,t){const i=[];return function t(s){if(s.nodeType===Node.ELEMENT_NODE){e.includes(s.tagName)&&i.push(s),s.shadowRoot&&t(s.shadowRoot);for(const e of s.children)t(e)}}(t instanceof Document?t.documentElement:t),i}(["IFRAME","WEBVIEW"],e),i=new WeakMap;for(const e of t)i.set(e,e.style.pointerEvents),e.style.pointerEvents="none";return{release:()=>{var e;for(const s of t)s.style.pointerEvents=null!==(e=i.get(s))&&void 0!==e?e:"auto";t.splice(0,t.length)}}}class T{constructor(e){this.element=e,this._classNames=[]}setClassNames(e){for(const e of this._classNames)w(this.element,e,!1);this._classNames=e.split(" ").filter(e=>e.trim().length>0);for(const e of this._classNames)w(this.element,e,!0)}}function I(e,t){const i=G(e),s=G(t);return!(i.left<s.left)&&(!(i.left+i.width>s.left+s.width)&&(!(i.top<s.top)&&!(i.top+i.height>s.top+s.height)))}function z(e){let t=e;for(;t&&("auto"===t.style.zIndex||""===t.style.zIndex);)t=t.parentElement;return t}function A(e){if(0===e.length)throw new Error("Invalid tail call");return[e.slice(0,e.length-1),e[e.length-1]]}function E(e,t){if(e.length!==t.length)return!1;for(let i=0;i<e.length;i++)if(e[i]!==t[i])return!1;return!0}function O(e,t){const i=e.indexOf(t);i>-1&&(e.splice(i,1),e.unshift(t))}function M(e,t){const i=e.indexOf(t);i>-1&&(e.splice(i,1),e.push(t))}function k(e,t){const i=e.findIndex(e=>e===t);return i>-1&&(e.splice(i,1),!0)}const V=(e,t,i)=>t>i?t:Math.min(i,Math.max(e,t)),L=()=>{let e=1;return{next:()=>(e++).toString()}},N=(e,t)=>{const i=[];if("number"!=typeof t&&(t=e,e=0),e<=t)for(let s=e;s<t;s++)i.push(s);else for(let s=e;s>t;s--)i.push(s);return i};class R{set size(e){this._size=e}get size(){return this._size}get cachedVisibleSize(){return this._cachedVisibleSize}get visible(){return void 0===this._cachedVisibleSize}get minimumSize(){return this.visible?this.view.minimumSize:0}get viewMinimumSize(){return this.view.minimumSize}get maximumSize(){return this.visible?this.view.maximumSize:0}get viewMaximumSize(){return this.view.maximumSize}get priority(){return this.view.priority}get snap(){return!!this.view.snap}set enabled(e){this.container.style.pointerEvents=e?"":"none"}constructor(e,t,i,s){this.container=e,this.view=t,this.disposable=s,this._cachedVisibleSize=void 0,"number"==typeof i?(this._size=i,this._cachedVisibleSize=void 0,e.classList.add("visible")):(this._size=0,this._cachedVisibleSize=i.cachedVisibleSize)}setVisible(e,t){var i;e!==this.visible&&(e?(this.size=V(null!==(i=this._cachedVisibleSize)&&void 0!==i?i:0,this.viewMinimumSize,this.viewMaximumSize),this._cachedVisibleSize=void 0):(this._cachedVisibleSize="number"==typeof t?t:this.size,this.size=0),this.container.classList.toggle("visible",e),this.view.setVisible&&this.view.setVisible(e))}dispose(){return this.disposable.dispose(),this.view}}var W,H,F,B;exports.Orientation=void 0,(W=exports.Orientation||(exports.Orientation={})).HORIZONTAL="HORIZONTAL",W.VERTICAL="VERTICAL",exports.SashState=void 0,(H=exports.SashState||(exports.SashState={}))[H.MAXIMUM=0]="MAXIMUM",H[H.MINIMUM=1]="MINIMUM",H[H.DISABLED=2]="DISABLED",H[H.ENABLED=3]="ENABLED",exports.LayoutPriority=void 0,(F=exports.LayoutPriority||(exports.LayoutPriority={})).Low="low",F.High="high",F.Normal="normal",exports.Sizing=void 0,(B=exports.Sizing||(exports.Sizing={})).Distribute={type:"distribute"},B.Split=function(e){return{type:"split",index:e}},B.Invisible=function(e){return{type:"invisible",cachedVisibleSize:e}};class ${get contentSize(){return this._contentSize}get size(){return this._size}set size(e){this._size=e}get orthogonalSize(){return this._orthogonalSize}set orthogonalSize(e){this._orthogonalSize=e}get length(){return this.viewItems.length}get proportions(){return this._proportions?[...this._proportions]:void 0}get orientation(){return this._orientation}set orientation(e){this._orientation=e;const t=this.size;this.size=this.orthogonalSize,this.orthogonalSize=t,f(this.element,"dv-horizontal","dv-vertical"),this.element.classList.add(this.orientation==exports.Orientation.HORIZONTAL?"dv-horizontal":"dv-vertical")}get minimumSize(){return this.viewItems.reduce((e,t)=>e+t.minimumSize,0)}get maximumSize(){return 0===this.length?Number.POSITIVE_INFINITY:this.viewItems.reduce((e,t)=>e+t.maximumSize,0)}get startSnappingEnabled(){return this._startSnappingEnabled}set startSnappingEnabled(e){this._startSnappingEnabled!==e&&(this._startSnappingEnabled=e,this.updateSashEnablement())}get endSnappingEnabled(){return this._endSnappingEnabled}set endSnappingEnabled(e){this._endSnappingEnabled!==e&&(this._endSnappingEnabled=e,this.updateSashEnablement())}get disabled(){return this._disabled}set disabled(e){this._disabled=e,w(this.element,"dv-splitview-disabled",e)}get margin(){return this._margin}set margin(e){this._margin=e,w(this.element,"dv-splitview-has-margin",0!==e)}constructor(e,t){var i,s;this.container=e,this.viewItems=[],this.sashes=[],this._size=0,this._orthogonalSize=0,this._contentSize=0,this._proportions=void 0,this._startSnappingEnabled=!0,this._endSnappingEnabled=!0,this._disabled=!1,this._margin=0,this._onDidSashEnd=new u,this.onDidSashEnd=this._onDidSashEnd.event,this._onDidAddView=new u,this.onDidAddView=this._onDidAddView.event,this._onDidRemoveView=new u,this.onDidRemoveView=this._onDidRemoveView.event,this.resize=(e,t,i=this.viewItems.map(e=>e.size),s,o,n=Number.NEGATIVE_INFINITY,r=Number.POSITIVE_INFINITY,a,l)=>{if(e<0||e>this.viewItems.length)return 0;const h=N(e,-1),d=N(e+1,this.viewItems.length);if(o)for(const e of o)O(h,e),O(d,e);if(s)for(const e of s)M(h,e),M(d,e);const p=h.map(e=>this.viewItems[e]),c=h.map(e=>i[e]),u=d.map(e=>this.viewItems[e]),m=d.map(e=>i[e]),v=h.reduce((e,t)=>e+this.viewItems[t].minimumSize-i[t],0),g=h.reduce((e,t)=>e+this.viewItems[t].maximumSize-i[t],0),_=0===d.length?Number.POSITIVE_INFINITY:d.reduce((e,t)=>e+i[t]-this.viewItems[t].minimumSize,0),f=0===d.length?Number.NEGATIVE_INFINITY:d.reduce((e,t)=>e+i[t]-this.viewItems[t].maximumSize,0),b=Math.max(v,f),w=Math.min(_,g);let D=!1;if(a){const e=this.viewItems[a.index],i=t>=a.limitDelta;D=i!==e.visible,e.setVisible(i,a.size)}if(!D&&l){const e=this.viewItems[l.index],i=t<l.limitDelta;D=i!==e.visible,e.setVisible(i,l.size)}if(D)return this.resize(e,t,i,s,o,n,r);let C=0,y=V(t,b,w);for(let e=0;e<p.length;e++){const t=p[e],i=V(c[e]+y,t.minimumSize,t.maximumSize),s=i-c[e];C+=s,y-=s,t.size=i}let x=C;for(let e=0;e<u.length;e++){const t=u[e],i=V(m[e]-x,t.minimumSize,t.maximumSize);x+=i-m[e],t.size=i}return t},this._orientation=null!==(i=t.orientation)&&void 0!==i?i:exports.Orientation.VERTICAL,this.element=this.createContainer(),this.margin=null!==(s=t.margin)&&void 0!==s?s:0,this.proportionalLayout=void 0===t.proportionalLayout||!!t.proportionalLayout,this.viewContainer=this.createViewContainer(),this.sashContainer=this.createSashContainer(),this.element.appendChild(this.sashContainer),this.element.appendChild(this.viewContainer),this.container.appendChild(this.element),this.style(t.styles),t.descriptor&&(this._size=t.descriptor.size,t.descriptor.views.forEach((e,t)=>{const i=void 0===e.visible||e.visible?e.size:{type:"invisible",cachedVisibleSize:e.size},s=e.view;this.addView(s,i,t,!0)}),this._contentSize=this.viewItems.reduce((e,t)=>e+t.size,0),this.saveProportions())}style(e){"transparent"===(null==e?void 0:e.separatorBorder)?(f(this.element,"dv-separator-border"),this.element.style.removeProperty("--dv-separator-border")):(b(this.element,"dv-separator-border"),(null==e?void 0:e.separatorBorder)&&this.element.style.setProperty("--dv-separator-border",e.separatorBorder))}isViewVisible(e){if(e<0||e>=this.viewItems.length)throw new Error("Index out of bounds");return this.viewItems[e].visible}setViewVisible(e,t){if(e<0||e>=this.viewItems.length)throw new Error("Index out of bounds");const i=this.viewItems[e];i.setVisible(t,i.size),this.distributeEmptySpace(e),this.layoutViews(),this.saveProportions()}getViewSize(e){return e<0||e>=this.viewItems.length?-1:this.viewItems[e].size}resizeView(e,t){if(e<0||e>=this.viewItems.length)return;const i=N(this.viewItems.length).filter(t=>t!==e),s=[...i.filter(e=>this.viewItems[e].priority===exports.LayoutPriority.Low),e],o=i.filter(e=>this.viewItems[e].priority===exports.LayoutPriority.High),n=this.viewItems[e];t=Math.round(t),t=V(t,n.minimumSize,Math.min(n.maximumSize,this._size)),n.size=t,this.relayout(s,o)}getViews(){return this.viewItems.map(e=>e.view)}onDidChange(e,t){const i=this.viewItems.indexOf(e);if(i<0||i>=this.viewItems.length)return;t="number"==typeof t?t:e.size,t=V(t,e.minimumSize,e.maximumSize),e.size=t;const s=N(this.viewItems.length).filter(e=>e!==i),o=[...s.filter(e=>this.viewItems[e].priority===exports.LayoutPriority.Low),i],n=s.filter(e=>this.viewItems[e].priority===exports.LayoutPriority.High);this.relayout([...o,i],n)}addView(e,t={type:"distribute"},i=this.viewItems.length,s){const o=document.createElement("div");let n;o.className="dv-view",o.appendChild(e.element),n="number"==typeof t?t:"split"===t.type?this.getViewSize(t.index)/2:"invisible"===t.type?{cachedVisibleSize:t.cachedVisibleSize}:e.minimumSize;const r=e.onDidChange(e=>this.onDidChange(a,e.size)),a=new R(o,e,n,{dispose:()=>{r.dispose(),this.viewContainer.removeChild(o)}});if(i===this.viewItems.length?this.viewContainer.appendChild(o):this.viewContainer.insertBefore(o,this.viewContainer.children.item(i)),this.viewItems.splice(i,0,a),this.viewItems.length>1){const e=document.createElement("div");e.className="dv-sash";const t=t=>{for(const e of this.viewItems)e.enabled=!1;const i=P(),s=this._orientation===exports.Orientation.HORIZONTAL?t.clientX:t.clientY,o=function(e,t){for(let i=0;i<e.length;i++)if(t(e[i]))return i;return-1}(this.sashes,t=>t.container===e),n=this.viewItems.map(e=>e.size);let r,a;const l=N(o,-1),h=N(o+1,this.viewItems.length),d=l.reduce((e,t)=>e+(this.viewItems[t].minimumSize-n[t]),0),p=l.reduce((e,t)=>e+(this.viewItems[t].viewMaximumSize-n[t]),0),c=0===h.length?Number.POSITIVE_INFINITY:h.reduce((e,t)=>e+(n[t]-this.viewItems[t].minimumSize),0),u=0===h.length?Number.NEGATIVE_INFINITY:h.reduce((e,t)=>e+(n[t]-this.viewItems[t].viewMaximumSize),0),m=Math.max(d,u),v=Math.min(c,p),g=this.findFirstSnapIndex(l),_=this.findFirstSnapIndex(h);if("number"==typeof g){const e=this.viewItems[g],t=Math.floor(e.viewMinimumSize/2);r={index:g,limitDelta:e.visible?m-t:m+t,size:e.size}}if("number"==typeof _){const e=this.viewItems[_],t=Math.floor(e.viewMinimumSize/2);a={index:_,limitDelta:e.visible?v+t:v-t,size:e.size}}const f=e=>{const t=(this._orientation===exports.Orientation.HORIZONTAL?e.clientX:e.clientY)-s;this.resize(o,t,n,void 0,void 0,m,v,r,a),this.distributeEmptySpace(),this.layoutViews()},b=()=>{for(const e of this.viewItems)e.enabled=!0;i.release(),this.saveProportions(),document.removeEventListener("pointermove",f),document.removeEventListener("pointerup",b),document.removeEventListener("pointercancel",b),document.removeEventListener("contextmenu",b),this._onDidSashEnd.fire(void 0)};document.addEventListener("pointermove",f),document.addEventListener("pointerup",b),document.addEventListener("pointercancel",b),document.addEventListener("contextmenu",b)};e.addEventListener("pointerdown",t);const i={container:e,disposable:()=>{e.removeEventListener("pointerdown",t),this.sashContainer.removeChild(e)}};this.sashContainer.appendChild(e),this.sashes.push(i)}s||this.relayout([i]),s||"number"==typeof t||"distribute"!==t.type||this.distributeViewSizes(),this._onDidAddView.fire(e)}distributeViewSizes(){const e=[];let t=0;for(const i of this.viewItems)i.maximumSize-i.minimumSize>0&&(e.push(i),t+=i.size);const i=Math.floor(t/e.length);for(const t of e)t.size=V(i,t.minimumSize,t.maximumSize);const s=N(this.viewItems.length),o=s.filter(e=>this.viewItems[e].priority===exports.LayoutPriority.Low),n=s.filter(e=>this.viewItems[e].priority===exports.LayoutPriority.High);this.relayout(o,n)}removeView(e,t,i=!1){const s=this.viewItems.splice(e,1)[0];if(s.dispose(),this.viewItems.length>=1){const t=Math.max(e-1,0);this.sashes.splice(t,1)[0].disposable()}return i||this.relayout(),t&&"distribute"===t.type&&this.distributeViewSizes(),this._onDidRemoveView.fire(s.view),s.view}getViewCachedVisibleSize(e){if(e<0||e>=this.viewItems.length)throw new Error("Index out of bounds");return this.viewItems[e].cachedVisibleSize}moveView(e,t){const i=this.getViewCachedVisibleSize(e),s=void 0===i?this.getViewSize(e):exports.Sizing.Invisible(i),o=this.removeView(e,void 0,!0);this.addView(o,s,t)}layout(e,t){const i=Math.max(this.size,this._contentSize);if(this.size=e,this.orthogonalSize=t,this.proportions){let t=0;for(let i=0;i<this.viewItems.length;i++){const s=this.viewItems[i],o=this.proportions[i];"number"==typeof o?t+=o:e-=s.size}for(let i=0;i<this.viewItems.length;i++){const s=this.viewItems[i],o=this.proportions[i];"number"==typeof o&&t>0&&(s.size=V(Math.round(o*e/t),s.minimumSize,s.maximumSize))}}else{const t=N(this.viewItems.length),s=t.filter(e=>this.viewItems[e].priority===exports.LayoutPriority.Low),o=t.filter(e=>this.viewItems[e].priority===exports.LayoutPriority.High);this.resize(this.viewItems.length-1,e-i,void 0,s,o)}this.distributeEmptySpace(),this.layoutViews()}relayout(e,t){const i=this.viewItems.reduce((e,t)=>e+t.size,0);this.resize(this.viewItems.length-1,this._size-i,void 0,e,t),this.distributeEmptySpace(),this.layoutViews(),this.saveProportions()}distributeEmptySpace(e){const t=this.viewItems.reduce((e,t)=>e+t.size,0);let i=this.size-t;const s=N(this.viewItems.length-1,-1),o=s.filter(e=>this.viewItems[e].priority===exports.LayoutPriority.Low),n=s.filter(e=>this.viewItems[e].priority===exports.LayoutPriority.High);for(const e of n)O(s,e);for(const e of o)M(s,e);"number"==typeof e&&M(s,e);for(let e=0;0!==i&&e<s.length;e++){const t=this.viewItems[s[e]],o=V(t.size+i,t.minimumSize,t.maximumSize);i-=o-t.size,t.size=o}}saveProportions(){this.proportionalLayout&&this._contentSize>0&&(this._proportions=this.viewItems.map(e=>e.visible?e.size/this._contentSize:void 0))}layoutViews(){if(this._contentSize=this.viewItems.reduce((e,t)=>e+t.size,0),this.updateSashEnablement(),0===this.viewItems.length)return;const e=this.viewItems.filter(e=>e.visible),t=Math.max(0,e.length-1),i=this.margin*t/Math.max(1,e.length);let s=0;const o=[],n=this.viewItems.reduce((e,t,i)=>{const s=t.visible?1:0;return 0===i?e.push(s):e.push(e[i-1]+s),e},[]);this.viewItems.forEach((e,r)=>{s+=this.viewItems[r].size,o.push(s);const a=e.visible?e.size-i:0,l=Math.max(0,n[r]-1),h=0===r||0===l?0:o[r-1]+l/t*i;if(r<this.viewItems.length-1){const t=e.visible?h+a-2+this.margin/2:h;this._orientation===exports.Orientation.HORIZONTAL&&(this.sashes[r].container.style.left=`${t}px`,this.sashes[r].container.style.top="0px"),this._orientation===exports.Orientation.VERTICAL&&(this.sashes[r].container.style.left="0px",this.sashes[r].container.style.top=`${t}px`)}this._orientation===exports.Orientation.HORIZONTAL&&(e.container.style.width=`${a}px`,e.container.style.left=`${h}px`,e.container.style.top="",e.container.style.height=""),this._orientation===exports.Orientation.VERTICAL&&(e.container.style.height=`${a}px`,e.container.style.top=`${h}px`,e.container.style.width="",e.container.style.left=""),e.view.layout(e.size-i,this._orthogonalSize)})}findFirstSnapIndex(e){for(const t of e){const e=this.viewItems[t];if(e.visible&&e.snap)return t}for(const t of e){const e=this.viewItems[t];if(e.visible&&e.maximumSize-e.minimumSize>0)return;if(!e.visible&&e.snap)return t}}updateSashEnablement(){let e=!1;const t=this.viewItems.map(t=>e=t.size-t.minimumSize>0||e);e=!1;const i=this.viewItems.map(t=>e=t.maximumSize-t.size>0||e),s=[...this.viewItems].reverse();e=!1;const o=s.map(t=>e=t.size-t.minimumSize>0||e).reverse();e=!1;const n=s.map(t=>e=t.maximumSize-t.size>0||e).reverse();let r=0;for(let e=0;e<this.sashes.length;e++){const s=this.sashes[e];r+=this.viewItems[e].size;const a=!(t[e]&&n[e+1]),l=!(i[e]&&o[e+1]);if(a&&l){const i=N(e,-1),n=N(e+1,this.viewItems.length),a=this.findFirstSnapIndex(i),l=this.findFirstSnapIndex(n),h="number"==typeof a&&!this.viewItems[a].visible,d="number"==typeof l&&!this.viewItems[l].visible;h&&o[e]&&(r>0||this.startSnappingEnabled)?this.updateSash(s,exports.SashState.MINIMUM):d&&t[e]&&(r<this._contentSize||this.endSnappingEnabled)?this.updateSash(s,exports.SashState.MAXIMUM):this.updateSash(s,exports.SashState.DISABLED)}else a&&!l?this.updateSash(s,exports.SashState.MINIMUM):!a&&l?this.updateSash(s,exports.SashState.MAXIMUM):this.updateSash(s,exports.SashState.ENABLED)}}updateSash(e,t){w(e.container,"dv-disabled",t===exports.SashState.DISABLED),w(e.container,"dv-enabled",t===exports.SashState.ENABLED),w(e.container,"dv-maximum",t===exports.SashState.MAXIMUM),w(e.container,"dv-minimum",t===exports.SashState.MINIMUM)}createViewContainer(){const e=document.createElement("div");return e.className="dv-view-container",e}createSashContainer(){const e=document.createElement("div");return e.className="dv-sash-container",e}createContainer(){const e=document.createElement("div"),t=this._orientation===exports.Orientation.HORIZONTAL?"dv-horizontal":"dv-vertical";return e.className=`dv-split-view-container ${t}`,e}dispose(){this._onDidSashEnd.dispose(),this._onDidAddView.dispose(),this._onDidRemoveView.dispose();for(let e=0;e<this.element.children.length;e++)if(this.element.children.item(e)===this.element){this.element.removeChild(this.element);break}for(const e of this.viewItems)e.dispose();this.element.remove()}}const U=(()=>{const e={orientation:void 0,descriptor:void 0,proportionalLayout:void 0,styles:void 0,margin:void 0,disableAutoResizing:void 0,className:void 0};return Object.keys(e)})();class Y extends a{get onDidAddView(){return this.splitview.onDidAddView}get onDidRemoveView(){return this.splitview.onDidRemoveView}get minimumSize(){return this.splitview.minimumSize}get maximumSize(){return this.splitview.maximumSize}get orientation(){return this.splitview.orientation}get size(){return this.splitview.size}get orthogonalSize(){return this.splitview.orthogonalSize}constructor(e,t){var i;super(),this.paneItems=[],this.skipAnimation=!1,this._onDidChange=new u,this.onDidChange=this._onDidChange.event,this._orientation=null!==(i=t.orientation)&&void 0!==i?i:exports.Orientation.VERTICAL,this.element=document.createElement("div"),this.element.className="dv-pane-container",e.appendChild(this.element),this.splitview=new $(this.element,{orientation:this._orientation,proportionalLayout:!1,descriptor:t.descriptor}),this.getPanes().forEach(e=>{const t=new a(e.onDidChangeExpansionState(()=>{this.setupAnimation(),this._onDidChange.fire(void 0)})),i={pane:e,disposable:{dispose:()=>{t.dispose()}}};this.paneItems.push(i),e.orthogonalSize=this.splitview.orthogonalSize}),this.addDisposables(this._onDidChange,this.splitview.onDidSashEnd(()=>{this._onDidChange.fire(void 0)}),this.splitview.onDidAddView(()=>{this._onDidChange.fire()}),this.splitview.onDidRemoveView(()=>{this._onDidChange.fire()}))}setViewVisible(e,t){this.splitview.setViewVisible(e,t)}addPane(e,t,i=this.splitview.length,s=!1){const o=e.onDidChangeExpansionState(()=>{this.setupAnimation(),this._onDidChange.fire(void 0)}),n={pane:e,disposable:{dispose:()=>{o.dispose()}}};this.paneItems.splice(i,0,n),e.orthogonalSize=this.splitview.orthogonalSize,this.splitview.addView(e,t,i,s)}getViewSize(e){return this.splitview.getViewSize(e)}getPanes(){return this.splitview.getViews()}removePane(e,t={skipDispose:!1}){const i=this.paneItems.splice(e,1)[0];return this.splitview.removeView(e),t.skipDispose||(i.disposable.dispose(),i.pane.dispose()),i}moveView(e,t){if(e===t)return;const i=this.removePane(e,{skipDispose:!0});this.skipAnimation=!0;try{this.addPane(i.pane,i.pane.size,t,!1)}finally{this.skipAnimation=!1}}layout(e,t){this.splitview.layout(e,t)}setupAnimation(){this.skipAnimation||(this.animationTimer&&(clearTimeout(this.animationTimer),this.animationTimer=void 0),b(this.element,"dv-animated"),this.animationTimer=setTimeout(()=>{this.animationTimer=void 0,f(this.element,"dv-animated")},200))}dispose(){super.dispose(),this.animationTimer&&(clearTimeout(this.animationTimer),this.animationTimer=void 0),this.paneItems.forEach(e=>{e.disposable.dispose(),e.pane.dispose()}),this.paneItems=[],this.splitview.dispose(),this.element.remove()}}class X{get minimumWidth(){return this.view.minimumWidth}get maximumWidth(){return this.view.maximumWidth}get minimumHeight(){return this.view.minimumHeight}get maximumHeight(){return this.view.maximumHeight}get priority(){return this.view.priority}get snap(){return this.view.snap}get minimumSize(){return this.orientation===exports.Orientation.HORIZONTAL?this.minimumHeight:this.minimumWidth}get maximumSize(){return this.orientation===exports.Orientation.HORIZONTAL?this.maximumHeight:this.maximumWidth}get minimumOrthogonalSize(){return this.orientation===exports.Orientation.HORIZONTAL?this.minimumWidth:this.minimumHeight}get maximumOrthogonalSize(){return this.orientation===exports.Orientation.HORIZONTAL?this.maximumWidth:this.maximumHeight}get orthogonalSize(){return this._orthogonalSize}get size(){return this._size}get element(){return this.view.element}get width(){return this.orientation===exports.Orientation.HORIZONTAL?this.orthogonalSize:this.size}get height(){return this.orientation===exports.Orientation.HORIZONTAL?this.size:this.orthogonalSize}constructor(e,t,i,s=0){this.view=e,this.orientation=t,this._onDidChange=new u,this.onDidChange=this._onDidChange.event,this._orthogonalSize=i,this._size=s,this._disposable=this.view.onDidChange(e=>{e?this._onDidChange.fire({size:this.orientation===exports.Orientation.VERTICAL?e.width:e.height,orthogonalSize:this.orientation===exports.Orientation.VERTICAL?e.height:e.width}):this._onDidChange.fire({})})}setVisible(e){this.view.setVisible&&this.view.setVisible(e)}layout(e,t){this._size=e,this._orthogonalSize=t,this.view.layout(this.width,this.height)}dispose(){this._onDidChange.dispose(),this._disposable.dispose()}}class J extends a{get width(){return this.orientation===exports.Orientation.HORIZONTAL?this.size:this.orthogonalSize}get height(){return this.orientation===exports.Orientation.HORIZONTAL?this.orthogonalSize:this.size}get minimumSize(){return 0===this.children.length?0:Math.max(...this.children.map((e,t)=>this.splitview.isViewVisible(t)?e.minimumOrthogonalSize:0))}get maximumSize(){return Math.min(...this.children.map((e,t)=>this.splitview.isViewVisible(t)?e.maximumOrthogonalSize:Number.POSITIVE_INFINITY))}get minimumOrthogonalSize(){return this.splitview.minimumSize}get maximumOrthogonalSize(){return this.splitview.maximumSize}get orthogonalSize(){return this._orthogonalSize}get size(){return this._size}get minimumWidth(){return this.orientation===exports.Orientation.HORIZONTAL?this.minimumOrthogonalSize:this.minimumSize}get minimumHeight(){return this.orientation===exports.Orientation.HORIZONTAL?this.minimumSize:this.minimumOrthogonalSize}get maximumWidth(){return this.orientation===exports.Orientation.HORIZONTAL?this.maximumOrthogonalSize:this.maximumSize}get maximumHeight(){return this.orientation===exports.Orientation.HORIZONTAL?this.maximumSize:this.maximumOrthogonalSize}get priority(){if(0===this.children.length)return exports.LayoutPriority.Normal;const e=this.children.map(e=>void 0===e.priority?exports.LayoutPriority.Normal:e.priority);return e.some(e=>e===exports.LayoutPriority.High)?exports.LayoutPriority.High:e.some(e=>e===exports.LayoutPriority.Low)?exports.LayoutPriority.Low:exports.LayoutPriority.Normal}get disabled(){return this.splitview.disabled}set disabled(e){this.splitview.disabled=e}get margin(){return this.splitview.margin}set margin(e){this.splitview.margin=e,this.children.forEach(t=>{t instanceof J&&(t.margin=e)})}constructor(e,t,i,s,o,n,r,a){if(super(),this.orientation=e,this.proportionalLayout=t,this.styles=i,this._childrenDisposable=exports.DockviewDisposable.NONE,this.children=[],this._onDidChange=new u,this.onDidChange=this._onDidChange.event,this._onDidVisibilityChange=new u,this.onDidVisibilityChange=this._onDidVisibilityChange.event,this._orthogonalSize=o,this._size=s,this.element=document.createElement("div"),this.element.className="dv-branch-node",a){const e={views:a.map(e=>({view:e.node,size:e.node.size,visible:!(e.node instanceof X&&void 0!==e.visible)||e.visible})),size:this.orthogonalSize};this.children=a.map(e=>e.node),this.splitview=new $(this.element,{orientation:this.orientation,descriptor:e,proportionalLayout:t,styles:i,margin:r})}else this.splitview=new $(this.element,{orientation:this.orientation,proportionalLayout:t,styles:i,margin:r}),this.splitview.layout(this.size,this.orthogonalSize);this.disabled=n,this.addDisposables(this._onDidChange,this._onDidVisibilityChange,this.splitview.onDidSashEnd(()=>{this._onDidChange.fire({})})),this.setupChildrenEvents()}setVisible(e){}isChildVisible(e){if(e<0||e>=this.children.length)throw new Error("Invalid index");return this.splitview.isViewVisible(e)}setChildVisible(e,t){if(e<0||e>=this.children.length)throw new Error("Invalid index");if(this.splitview.isViewVisible(e)===t)return;const i=0===this.splitview.contentSize;this.splitview.setViewVisible(e,t);const s=0===this.splitview.contentSize;(t&&i||!t&&s)&&this._onDidVisibilityChange.fire({visible:t})}moveChild(e,t){if(e===t)return;if(e<0||e>=this.children.length)throw new Error("Invalid from index");e<t&&t--,this.splitview.moveView(e,t);const i=this._removeChild(e);this._addChild(i,t)}getChildSize(e){if(e<0||e>=this.children.length)throw new Error("Invalid index");return this.splitview.getViewSize(e)}resizeChild(e,t){if(e<0||e>=this.children.length)throw new Error("Invalid index");this.splitview.resizeView(e,t)}layout(e,t){this._size=t,this._orthogonalSize=e,this.splitview.layout(t,e)}addChild(e,t,i,s){if(i<0||i>this.children.length)throw new Error("Invalid index");this.splitview.addView(e,t,i,s),this._addChild(e,i)}getChildCachedVisibleSize(e){if(e<0||e>=this.children.length)throw new Error("Invalid index");return this.splitview.getViewCachedVisibleSize(e)}removeChild(e,t){if(e<0||e>=this.children.length)throw new Error("Invalid index");return this.splitview.removeView(e,t),this._removeChild(e)}_addChild(e,t){this.children.splice(t,0,e),this.setupChildrenEvents()}_removeChild(e){const[t]=this.children.splice(e,1);return this.setupChildrenEvents(),t}setupChildrenEvents(){this._childrenDisposable.dispose(),this._childrenDisposable=new a(exports.DockviewEvent.any(...this.children.map(e=>e.onDidChange))(e=>{this._onDidChange.fire({size:e.orthogonalSize})}),...this.children.map((e,t)=>e instanceof J?e.onDidVisibilityChange(({visible:e})=>{this.setChildVisible(t,e)}):exports.DockviewDisposable.NONE))}dispose(){this._childrenDisposable.dispose(),this.splitview.dispose(),this.children.forEach(e=>e.dispose()),super.dispose()}}function j(e,t){if(e instanceof X)return e;if(e instanceof J)return j(e.children[t?e.children.length-1:0],t);throw new Error("invalid node")}function Z(e,t,i){if(e instanceof J){const s=new J(e.orientation,e.proportionalLayout,e.styles,t,i,e.disabled,e.margin);for(let t=e.children.length-1;t>=0;t--){const i=e.children[t];s.addChild(Z(i,i.size,i.orthogonalSize),i.size,0,!0)}return s}return new X(e.view,e.orientation,i)}function q(e,t,i){if(e instanceof J){const s=new J(se(e.orientation),e.proportionalLayout,e.styles,t,i,e.disabled,e.margin);let o=0;for(let n=e.children.length-1;n>=0;n--){const r=e.children[n],a=r instanceof J?r.orthogonalSize:r.size;let l=0===e.size?0:Math.round(t*a/e.size);o+=l,0===n&&(l+=t-o),s.addChild(q(r,i,l),l,0,!0)}return s}return new X(e.view,se(e.orientation),i)}function K(e){const t=e.parentElement;if(!t)throw new Error("Invalid grid element");let i=t.firstElementChild,s=0;for(;i!==e&&i!==t.lastElementChild&&i;)i=i.nextElementSibling,s++;return s}function Q(e){const t=e.parentElement;if(!t)throw new Error("Invalid grid element");if(/\bdv-grid-view\b/.test(t.className))return[];const i=K(t);return[...Q(t.parentElement.parentElement.parentElement),i]}function ee(e,t,i){if(ie(e,t)===te(i)){const[e,s]=A(t);let o=s;return"right"!==i&&"bottom"!==i||(o+=1),[...e,o]}{const e="right"===i||"bottom"===i?1:0;return[...t,e]}}function te(e){return"top"===e||"bottom"===e?exports.Orientation.VERTICAL:exports.Orientation.HORIZONTAL}function ie(e,t){return t.length%2==0?se(e):e}const se=e=>e===exports.Orientation.HORIZONTAL?exports.Orientation.VERTICAL:exports.Orientation.HORIZONTAL;function oe(e){return!!e.children}const ne=(e,t)=>{const i=t===exports.Orientation.VERTICAL?e.box.width:e.box.height;return oe(e)?{type:"branch",data:e.children.map(e=>ne(e,se(t))),size:i}:"number"==typeof e.cachedVisibleSize?{type:"leaf",data:e.view.toJSON(),size:e.cachedVisibleSize,visible:!1}:{type:"leaf",data:e.view.toJSON(),size:i}};class re{get length(){return this._root?this._root.children.length:0}get orientation(){return this.root.orientation}set orientation(e){if(this.root.orientation===e)return;const{size:t,orthogonalSize:i}=this.root;this.root=q(this.root,i,t),this.root.layout(t,i)}get width(){return this.root.width}get height(){return this.root.height}get minimumWidth(){return this.root.minimumWidth}get minimumHeight(){return this.root.minimumHeight}get maximumWidth(){return this.root.maximumHeight}get maximumHeight(){return this.root.maximumHeight}get locked(){return this._locked}set locked(e){this._locked=e;const t=[this.root];for(;t.length>0;){const i=t.pop();i instanceof J&&(i.disabled=e,t.push(...i.children))}}get margin(){return this._margin}set margin(e){this._margin=e,this.root.margin=e}maximizedView(){var e;return null===(e=this._maximizedNode)||void 0===e?void 0:e.leaf.view}hasMaximizedView(){return void 0!==this._maximizedNode}maximizeView(e){var t;const i=Q(e.element),[s,o]=this.getNode(i);if(!(o instanceof X))return;if((null===(t=this._maximizedNode)||void 0===t?void 0:t.leaf)===o)return;this.hasMaximizedView()&&this.exitMaximizedView(),ne(this.getView(),this.orientation);const n=[];!function e(t,i){for(let s=0;s<t.children.length;s++){const o=t.children[s];o instanceof X?o!==i&&(t.isChildVisible(s)?t.setChildVisible(s,!1):n.push(o)):e(o,i)}}(this.root,o),this._maximizedNode={leaf:o,hiddenOnMaximize:n},this._onDidMaximizedNodeChange.fire({view:o.view,isMaximized:!0})}exitMaximizedView(){if(!this._maximizedNode)return;const e=this._maximizedNode.hiddenOnMaximize;!function t(i){for(let s=i.children.length-1;s>=0;s--){const o=i.children[s];o instanceof X?e.includes(o)||i.setChildVisible(s,!0):t(o)}}(this.root);const t=this._maximizedNode.leaf;this._maximizedNode=void 0,this._onDidMaximizedNodeChange.fire({view:t.view,isMaximized:!1})}serialize(){const e=this.maximizedView();let t;e&&(t=Q(e.element));const i=this._onDidMaximizedNodeChange.pause();try{this.hasMaximizedView()&&this.exitMaximizedView();const i={root:ne(this.getView(),this.orientation),width:this.width,height:this.height,orientation:this.orientation};return t&&(i.maximizedNode={location:t}),e&&this.maximizeView(e),i}finally{i.dispose()}}dispose(){this.disposable.dispose(),this._onDidChange.dispose(),this._onDidMaximizedNodeChange.dispose(),this._onDidViewVisibilityChange.dispose(),this.root.dispose(),this._maximizedNode=void 0,this.element.remove()}clear(){const e=this.root.orientation;this.root=new J(e,this.proportionalLayout,this.styles,this.root.size,this.root.orthogonalSize,this.locked,this.margin)}deserialize(e,t){const i=e.orientation,s=i===exports.Orientation.VERTICAL?e.height:e.width;if(this._deserialize(e.root,i,t,s),this.layout(e.width,e.height),e.maximizedNode){const t=e.maximizedNode.location,[i,s]=this.getNode(t);if(!(s instanceof X))return;this.maximizeView(s.view)}}_deserialize(e,t,i,s){this.root=this._deserializeNode(e,t,i,s)}_deserializeNode(e,t,i,s){var o;let n;if("branch"===e.type){const o=e.data.map(s=>({node:this._deserializeNode(s,se(t),i,e.size),visible:s.visible}));n=new J(t,this.proportionalLayout,this.styles,e.size,s,this.locked,this.margin,o)}else{const r=i.fromJSON(e);"boolean"==typeof e.visible&&(null===(o=r.setVisible)||void 0===o||o.call(r,e.visible)),n=new X(r,t,s,e.size)}return n}get root(){return this._root}set root(e){const t=this._root;t&&(t.dispose(),this._maximizedNode=void 0,this.element.removeChild(t.element)),this._root=e,this.element.appendChild(this._root.element),this.disposable.value=this._root.onDidChange(e=>{this._onDidChange.fire(e)})}normalize(){if(!this._root)return;if(1!==this._root.children.length)return;const e=this.root,t=e.children[0];if(t instanceof X)return;e.element.remove();const i=e.removeChild(0);e.dispose(),i.dispose(),this._root=Z(t,t.size,t.orthogonalSize),this.element.appendChild(this._root.element),this.disposable.value=this._root.onDidChange(e=>{this._onDidChange.fire(e)})}insertOrthogonalSplitviewAtRoot(){if(!this._root)return;const e=this.root;if(e.element.remove(),this._root=new J(se(e.orientation),this.proportionalLayout,this.styles,this.root.orthogonalSize,this.root.size,this.locked,this.margin),0===e.children.length);else if(1===e.children.length){const t=e.children[0];e.removeChild(0).dispose(),e.dispose(),this._root.addChild(q(t,t.orthogonalSize,t.size),exports.Sizing.Distribute,0)}else this._root.addChild(e,exports.Sizing.Distribute,0);this.element.appendChild(this._root.element),this.disposable.value=this._root.onDidChange(e=>{this._onDidChange.fire(e)})}next(e){return this.progmaticSelect(e)}previous(e){return this.progmaticSelect(e,!0)}getView(e){const t=e?this.getNode(e)[1]:this.root;return this._getViews(t,this.orientation)}_getViews(e,t,i){const s={height:e.height,width:e.width};if(e instanceof X)return{box:s,view:e.view,cachedVisibleSize:i};const o=[];for(let i=0;i<e.children.length;i++){const s=e.children[i],n=e.getChildCachedVisibleSize(i);o.push(this._getViews(s,se(t),n))}return{box:s,children:o}}progmaticSelect(e,t=!1){const[i,s]=this.getNode(e);if(!(s instanceof X))throw new Error("invalid location");for(let s=i.length-1;s>-1;s--){const o=i[s],n=e[s]||0;if(t?n-1>-1:n+1<o.children.length)return j(o.children[t?n-1:n+1],t)}return j(this.root,t)}constructor(e,t,i,s,o){this.proportionalLayout=e,this.styles=t,this._locked=!1,this._margin=0,this._maximizedNode=void 0,this.disposable=new l,this._onDidChange=new u,this.onDidChange=this._onDidChange.event,this._onDidViewVisibilityChange=new u,this.onDidViewVisibilityChange=this._onDidViewVisibilityChange.event,this._onDidMaximizedNodeChange=new u,this.onDidMaximizedNodeChange=this._onDidMaximizedNodeChange.event,this.element=document.createElement("div"),this.element.className="dv-grid-view",this._locked=null!=s&&s,this._margin=null!=o?o:0,this.root=new J(i,e,t,0,0,this.locked,this.margin)}isViewVisible(e){const[t,i]=A(e),[,s]=this.getNode(t);if(!(s instanceof J))throw new Error("Invalid from location");return s.isChildVisible(i)}setViewVisible(e,t){this.hasMaximizedView()&&this.exitMaximizedView();const[i,s]=A(e),[,o]=this.getNode(i);if(!(o instanceof J))throw new Error("Invalid from location");this._onDidViewVisibilityChange.fire(),o.setChildVisible(s,t)}moveView(e,t,i){this.hasMaximizedView()&&this.exitMaximizedView();const[,s]=this.getNode(e);if(!(s instanceof J))throw new Error("Invalid location");s.moveChild(t,i)}addView(e,t,i){this.hasMaximizedView()&&this.exitMaximizedView();const[s,o]=A(i),[n,r]=this.getNode(s);if(r instanceof J){const i=new X(e,se(r.orientation),r.orthogonalSize);r.addChild(i,t,o)}else{const[i,...a]=[...n].reverse(),[l,...h]=[...s].reverse();let d=0;const p=i.getChildCachedVisibleSize(l);"number"==typeof p&&(d=exports.Sizing.Invisible(p));i.removeChild(l).dispose();const c=new J(r.orientation,this.proportionalLayout,this.styles,r.size,r.orthogonalSize,this.locked,this.margin);i.addChild(c,r.size,l);const u=new X(r.view,i.orientation,r.size);c.addChild(u,d,0),"number"!=typeof t&&"split"===t.type&&(t={type:"split",index:0});const m=new X(e,i.orientation,r.size);c.addChild(m,t,o)}}remove(e,t){const i=Q(e.element);return this.removeView(i,t)}removeView(e,t){this.hasMaximizedView()&&this.exitMaximizedView();const[i,s]=A(e),[o,n]=this.getNode(i);if(!(n instanceof J))throw new Error("Invalid location");const r=n.children[s];if(!(r instanceof X))throw new Error("Invalid location");if(n.removeChild(s,t),r.dispose(),1!==n.children.length)return r.view;const a=n.children[0];if(0===o.length)return a instanceof X||(n.removeChild(0,t),this.root=a),r.view;const[l,...h]=[...o].reverse(),[d,...p]=[...i].reverse(),c=n.isChildVisible(0);n.removeChild(0,t);const u=l.children.map((e,t)=>l.getChildSize(t));if(l.removeChild(d,t).dispose(),a instanceof J){u.splice(d,1,...a.children.map(e=>e.size));for(let e=0;e<a.children.length;e++){const t=a.children[e];l.addChild(t,t.size,d+e)}for(;a.children.length>0;)a.removeChild(0)}else{const e=new X(a.view,se(a.orientation),a.size),t=c?a.orthogonalSize:exports.Sizing.Invisible(a.orthogonalSize);l.addChild(e,t,d)}a.dispose();for(let e=0;e<u.length;e++)l.resizeChild(e,u[e]);return r.view}layout(e,t){const[i,s]=this.root.orientation===exports.Orientation.HORIZONTAL?[t,e]:[e,t];this.root.layout(i,s)}getNode(e,t=this.root,i=[]){if(0===e.length)return[i,t];if(!(t instanceof J))throw new Error("Invalid location");const[s,...o]=e;if(s<0||s>=t.children.length)throw new Error("Invalid location");const n=t.children[s];return i.push(t),this.getNode(o,n,i)}}const ae=(()=>{const e={disableAutoResizing:void 0,proportionalLayout:void 0,orientation:void 0,hideBorders:void 0,className:void 0};return Object.keys(e)})();class le extends a{get element(){return this._element}get disableResizing(){return this._disableResizing}set disableResizing(e){this._disableResizing=e}constructor(e,t=!1){super(),this._lastWidth=-1,this._lastHeight=-1,this._disableResizing=t,this._element=e,this.addDisposables(_(this._element,e=>{if(this.isDisposed)return;if(this.disableResizing)return;if(!this._element.offsetParent)return;if(!function(e){let t=e;for(;null==t?void 0:t.parentNode;){if(t.parentNode===document)return!0;t=t.parentNode instanceof DocumentFragment?t.parentNode.host:t.parentNode}return!1}(this._element))return;const t=Math.round(e.contentRect.width),i=Math.round(e.contentRect.height);t===this._lastWidth&&i===this._lastHeight||(this._lastWidth=t,this._lastHeight=i,this.layout(t,i))}))}}const he=L();function de(e){switch(e){case"left":return"left";case"right":return"right";case"above":return"top";case"below":return"bottom";default:return"center"}}class pe extends le{get id(){return this._id}get size(){return this._groups.size}get groups(){return Array.from(this._groups.values()).map(e=>e.value)}get width(){return this.gridview.width}get height(){return this.gridview.height}get minimumHeight(){return this.gridview.minimumHeight}get maximumHeight(){return this.gridview.maximumHeight}get minimumWidth(){return this.gridview.minimumWidth}get maximumWidth(){return this.gridview.maximumWidth}get activeGroup(){return this._activeGroup}get locked(){return this.gridview.locked}set locked(e){this.gridview.locked=e}constructor(e,t){var i;super(document.createElement("div"),t.disableAutoResizing),this._id=he.next(),this._groups=new Map,this._onDidRemove=new u,this.onDidRemove=this._onDidRemove.event,this._onDidAdd=new u,this.onDidAdd=this._onDidAdd.event,this._onDidMaximizedChange=new u,this.onDidMaximizedChange=this._onDidMaximizedChange.event,this._onDidActiveChange=new u,this.onDidActiveChange=this._onDidActiveChange.event,this._bufferOnDidLayoutChange=new v,this.onDidLayoutChange=this._bufferOnDidLayoutChange.onEvent,this._onDidViewVisibilityChangeMicroTaskQueue=new v,this.onDidViewVisibilityChangeMicroTaskQueue=this._onDidViewVisibilityChangeMicroTaskQueue.onEvent,this.element.style.height="100%",this.element.style.width="100%",this._classNames=new T(this.element),this._classNames.setClassNames(null!==(i=t.className)&&void 0!==i?i:""),e.appendChild(this.element),this.gridview=new re(!!t.proportionalLayout,t.styles,t.orientation,t.locked,t.margin),this.gridview.locked=!!t.locked,this.element.appendChild(this.gridview.element),this.layout(0,0,!0),this.addDisposables(this.gridview.onDidMaximizedNodeChange(e=>{this._onDidMaximizedChange.fire({panel:e.view,isMaximized:e.isMaximized})}),this.gridview.onDidViewVisibilityChange(()=>this._onDidViewVisibilityChangeMicroTaskQueue.fire()),this.onDidViewVisibilityChangeMicroTaskQueue(()=>{this.forceRelayout()}),exports.DockviewDisposable.from(()=>{var e;null===(e=this.element.parentElement)||void 0===e||e.removeChild(this.element)}),this.gridview.onDidChange(()=>{this._bufferOnDidLayoutChange.fire()}),exports.DockviewEvent.any(this.onDidAdd,this.onDidRemove,this.onDidActiveChange)(()=>{this._bufferOnDidLayoutChange.fire()}),this._onDidMaximizedChange,this._onDidViewVisibilityChangeMicroTaskQueue,this._bufferOnDidLayoutChange)}setVisible(e,t){this.gridview.setViewVisible(Q(e.element),t),this._bufferOnDidLayoutChange.fire()}isVisible(e){return this.gridview.isViewVisible(Q(e.element))}updateOptions(e){var t,i,s,o;e.proportionalLayout,e.orientation&&(this.gridview.orientation=e.orientation),"disableResizing"in e&&(this.disableResizing=null!==(t=e.disableAutoResizing)&&void 0!==t&&t),"locked"in e&&(this.locked=null!==(i=e.locked)&&void 0!==i&&i),"margin"in e&&(this.gridview.margin=null!==(s=e.margin)&&void 0!==s?s:0),"className"in e&&this._classNames.setClassNames(null!==(o=e.className)&&void 0!==o?o:"")}maximizeGroup(e){this.gridview.maximizeView(e),this.doSetGroupActive(e)}isMaximizedGroup(e){return this.gridview.maximizedView()===e}exitMaximizedGroup(){this.gridview.exitMaximizedView()}hasMaximizedGroup(){return this.gridview.hasMaximizedView()}doAddGroup(e,t=[0],i){this.gridview.addView(e,null!=i?i:exports.Sizing.Distribute,t),this._onDidAdd.fire(e)}doRemoveGroup(e,t){if(!this._groups.has(e.id))throw new Error("invalid operation");const i=this._groups.get(e.id),s=this.gridview.remove(e,exports.Sizing.Distribute);if(i&&!(null==t?void 0:t.skipDispose)&&(i.disposable.dispose(),i.value.dispose(),this._groups.delete(e.id),this._onDidRemove.fire(e)),!(null==t?void 0:t.skipActive)&&this._activeGroup===e){const e=Array.from(this._groups.values());this.doSetGroupActive(e.length>0?e[0].value:void 0)}return s}getPanel(e){var t;return null===(t=this._groups.get(e))||void 0===t?void 0:t.value}doSetGroupActive(e){this._activeGroup!==e&&(this._activeGroup&&this._activeGroup.setActive(!1),e&&e.setActive(!0),this._activeGroup=e,this._onDidActiveChange.fire(e))}removeGroup(e){this.doRemoveGroup(e)}moveToNext(e){var t;if(e||(e={}),!e.group){if(!this.activeGroup)return;e.group=this.activeGroup}const i=Q(e.group.element),s=null===(t=this.gridview.next(i))||void 0===t?void 0:t.view;this.doSetGroupActive(s)}moveToPrevious(e){var t;if(e||(e={}),!e.group){if(!this.activeGroup)return;e.group=this.activeGroup}const i=Q(e.group.element),s=null===(t=this.gridview.previous(i))||void 0===t?void 0:t.view;this.doSetGroupActive(s)}forceRelayout(){this.layout(this.width,this.height,!0)}layout(e,t,i){(i||e!==this.width||t!==this.height)&&(this.gridview.element.style.height=`${t}px`,this.gridview.element.style.width=`${e}px`,this.gridview.layout(e,t))}dispose(){this._onDidActiveChange.dispose(),this._onDidAdd.dispose(),this._onDidRemove.dispose();for(const e of this.groups)e.dispose();this.gridview.dispose(),super.dispose()}}class ce{get minimumSize(){return this.component.minimumSize}get maximumSize(){return this.component.maximumSize}get width(){return this.component.width}get height(){return this.component.height}get length(){return this.component.length}get orientation(){return this.component.orientation}get panels(){return this.component.panels}get onDidLayoutFromJSON(){return this.component.onDidLayoutFromJSON}get onDidLayoutChange(){return this.component.onDidLayoutChange}get onDidAddView(){return this.component.onDidAddView}get onDidRemoveView(){return this.component.onDidRemoveView}constructor(e){this.component=e}removePanel(e,t){this.component.removePanel(e,t)}focus(){this.component.focus()}getPanel(e){return this.component.getPanel(e)}layout(e,t){return this.component.layout(e,t)}addPanel(e){return this.component.addPanel(e)}movePanel(e,t){this.component.movePanel(e,t)}fromJSON(e){this.component.fromJSON(e)}t