dockview-react
Version:
Zero dependency layout manager supporting tabs, grids and splitviews
7 lines • 206 kB
JavaScript
/**
* dockview-react
* @version 4.2.3
* @link https://github.com/mathuo/dockview
* @license MIT
*/
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react"),require("react-dom")):"function"==typeof define&&define.amd?define(["exports","react","react-dom"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["dockview-react"]={},e.React,e.ReactDOM)}(this,(function(e,t,i){"use strict";class n{}class s extends n{constructor(e,t,i){super(),this.viewId=e,this.groupId=t,this.panelId=i}}class o extends n{constructor(e,t){super(),this.viewId=e,this.paneId=t}}class r{constructor(){}static getInstance(){return r.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 a(){const e=r.getInstance();if(e.hasData(s.prototype))return e.getData(s.prototype)[0]}function h(){const e=r.getInstance();if(e.hasData(o.prototype))return e.getData(o.prototype)[0]}var d;r.INSTANCE=new r,e.DockviewEvent=void 0,(e.DockviewEvent||(e.DockviewEvent={})).any=(...e)=>t=>{const i=e.map((e=>e(t)));return{dispose:()=>{i.forEach((e=>{e.dispose()}))}}};class l{constructor(){this._defaultPrevented=!1}get defaultPrevented(){return this._defaultPrevented}preventDefault(){this._defaultPrevented=!0}}class p{constructor(){this._isAccepted=!1}get isAccepted(){return this._isAccepted}accept(){this._isAccepted=!0}}class u{static create(){var e;return new u(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 m{static setLeakageMonitorEnabled(e){e!==m.ENABLE_TRACKING&&m.MEMORY_LEAK_WATCHER.clear(),m.ENABLE_TRACKING=e}get value(){return this._last}constructor(e){this.options=e,this._listeners=[],this._disposed=!1}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,m.ENABLE_TRACKING?u.create():void 0);return this._listeners.push(i),{dispose:()=>{const e=this._listeners.indexOf(i);e>-1?this._listeners.splice(e,1):m.ENABLE_TRACKING}}},m.ENABLE_TRACKING&&m.MEMORY_LEAK_WATCHER.add(this._event,u.create())),this._event}fire(e){this._last=e;for(const t of this._listeners)t.callback(e)}dispose(){this._disposed||(this._disposed=!0,this._listeners.length>0&&(m.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=[]),m.ENABLE_TRACKING&&this._event&&m.MEMORY_LEAK_WATCHER.delete(this._event))}}function v(e,t,i,n){return e.addEventListener(t,i,n),{dispose:()=>{e.removeEventListener(t,i,n)}}}m.ENABLE_TRACKING=!1,m.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 g{constructor(){this._onFired=new m,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()}}e.DockviewDisposable=void 0,(d=e.DockviewDisposable||(e.DockviewDisposable={})).NONE={dispose:()=>{}},d.from=function(e){return{dispose:()=>{e()}}};class w{get isDisposed(){return this._isDisposed}constructor(...e){this._isDisposed=!1,this._disposables=e}addDisposables(...e){e.forEach((e=>this._disposables.push(e)))}dispose(){this._isDisposed||(this._isDisposed=!0,this._disposables.forEach((e=>e.dispose())),this._disposables=[])}}class _{constructor(){this._disposable=e.DockviewDisposable.NONE}set value(e){this._disposable&&this._disposable.dispose(),this._disposable=e}dispose(){this._disposable&&(this._disposable.dispose(),this._disposable=e.DockviewDisposable.NONE)}}class f extends w{constructor(e){super(),this._onDidChange=new m,this.onDidChange=this._onDidChange.event,this._value=null,this.addDisposables(this._onDidChange,D(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 D(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 b=(e,...t)=>{for(const i of t)e.classList.contains(i)&&e.classList.remove(i)},C=(e,...t)=>{for(const i of t)e.classList.contains(i)||e.classList.add(i)},y=(e,t,i)=>{const n=e.classList.contains(t);i&&!n&&e.classList.add(t),!i&&n&&e.classList.remove(t)};function S(e,t){for(;e;){if(e===t)return!0;e=e.parentNode}return!1}function A(e){return new x(e)}class x extends w{constructor(e){super(),this._onDidFocus=new m,this.onDidFocus=this._onDidFocus.event,this._onDidBlur=new m,this.onDidBlur=this._onDidBlur.event,this.addDisposables(this._onDidFocus,this._onDidBlur);let t=S(document.activeElement,e),i=!1;const n=()=>{i=!1,t||(t=!0,this._onDidFocus.fire())},s=()=>{t&&(i=!0,window.setTimeout((()=>{i&&(i=!1,t=!1,this._onDidBlur.fire())}),0))};this._refreshStateHandler=()=>{S(document.activeElement,e)!==t&&(t?s():n())},this.addDisposables(v(e,"focus",n,!0)),this.addDisposables(v(e,"blur",s,!0))}refreshState(){this._refreshStateHandler()}}const z="dv-quasiPreventDefault";function P(e){return e[z]}function E(e){const{left:t,top:i,width:n,height:s}=e.getBoundingClientRect();return{left:t+window.scrollX,top:i+window.scrollY,width:n,height:s}}function O(e=document){const t=function(e){const t=[];return function i(n){if(n.nodeType===Node.ELEMENT_NODE){e.includes(n.tagName)&&t.push(n),n.shadowRoot&&i(n.shadowRoot);for(const e of n.children)i(e)}}(document.documentElement),t}(["IFRAME","WEBVIEW"]),i=new WeakMap;for(const e of t)i.set(e,e.style.pointerEvents),e.style.pointerEvents="none";return{release:()=>{var e;for(const n of t)n.style.pointerEvents=null!==(e=i.get(n))&&void 0!==e?e:"auto";t.splice(0,t.length)}}}class G{constructor(e){this.element=e,this._classNames=[]}setClassNames(e){for(const e of this._classNames)y(this.element,e,!1);this._classNames=e.split(" ").filter((e=>e.trim().length>0));for(const e of this._classNames)y(this.element,e,!0)}}function I(e){if(0===e.length)throw new Error("Invalid tail call");return[e.slice(0,e.length-1),e[e.length-1]]}function V(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 N(e,t){const i=e.indexOf(t);i>-1&&(e.splice(i,1),e.unshift(t))}function L(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 T=(e,t,i)=>t>i?t:Math.min(i,Math.max(e,t)),R=()=>{let e=1;return{next:()=>(e++).toString()}},M=(e,t)=>{const i=[];if("number"!=typeof t&&(t=e,e=0),e<=t)for(let n=e;n<t;n++)i.push(n);else for(let n=e;n>t;n--)i.push(n);return i};class W{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,n){this.container=e,this.view=t,this.disposable=n,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=T(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 H,B,F,U;e.Orientation=void 0,(H=e.Orientation||(e.Orientation={})).HORIZONTAL="HORIZONTAL",H.VERTICAL="VERTICAL",e.SashState=void 0,(B=e.SashState||(e.SashState={}))[B.MAXIMUM=0]="MAXIMUM",B[B.MINIMUM=1]="MINIMUM",B[B.DISABLED=2]="DISABLED",B[B.ENABLED=3]="ENABLED",e.LayoutPriority=void 0,(F=e.LayoutPriority||(e.LayoutPriority={})).Low="low",F.High="high",F.Normal="normal",e.Sizing=void 0,(U=e.Sizing||(e.Sizing={})).Distribute={type:"distribute"},U.Split=function(e){return{type:"split",index:e}},U.Invisible=function(e){return{type:"invisible",cachedVisibleSize:e}};class J{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(t){this._orientation=t;const i=this.size;this.size=this.orthogonalSize,this.orthogonalSize=i,b(this.element,"dv-horizontal","dv-vertical"),this.element.classList.add(this.orientation==e.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,y(this.element,"dv-splitview-disabled",e)}get margin(){return this._margin}set margin(e){this._margin=e,y(this.element,"dv-splitview-has-margin",0!==e)}constructor(t,i){var n,s;this.container=t,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 m,this.onDidSashEnd=this._onDidSashEnd.event,this._onDidAddView=new m,this.onDidAddView=this._onDidAddView.event,this._onDidRemoveView=new m,this.onDidRemoveView=this._onDidRemoveView.event,this.resize=(e,t,i=this.viewItems.map((e=>e.size)),n,s,o=Number.NEGATIVE_INFINITY,r=Number.POSITIVE_INFINITY,a,h)=>{if(e<0||e>this.viewItems.length)return 0;const d=M(e,-1),l=M(e+1,this.viewItems.length);if(s)for(const e of s)N(d,e),N(l,e);if(n)for(const e of n)L(d,e),L(l,e);const p=d.map((e=>this.viewItems[e])),u=d.map((e=>i[e])),c=l.map((e=>this.viewItems[e])),m=l.map((e=>i[e])),v=d.reduce(((e,t)=>e+this.viewItems[t].minimumSize-i[t]),0),g=d.reduce(((e,t)=>e+this.viewItems[t].maximumSize-i[t]),0),w=0===l.length?Number.POSITIVE_INFINITY:l.reduce(((e,t)=>e+i[t]-this.viewItems[t].minimumSize),0),_=0===l.length?Number.NEGATIVE_INFINITY:l.reduce(((e,t)=>e+i[t]-this.viewItems[t].maximumSize),0),f=Math.max(v,_),D=Math.min(w,g);let b=!1;if(a){const e=this.viewItems[a.index],i=t>=a.limitDelta;b=i!==e.visible,e.setVisible(i,a.size)}if(!b&&h){const e=this.viewItems[h.index],i=t<h.limitDelta;b=i!==e.visible,e.setVisible(i,h.size)}if(b)return this.resize(e,t,i,n,s,o,r);let C=0,y=T(t,f,D);for(let e=0;e<p.length;e++){const t=p[e],i=T(u[e]+y,t.minimumSize,t.maximumSize),n=i-u[e];C+=n,y-=n,t.size=i}let S=C;for(let e=0;e<c.length;e++){const t=c[e],i=T(m[e]-S,t.minimumSize,t.maximumSize);S+=i-m[e],t.size=i}return t},this._orientation=null!==(n=i.orientation)&&void 0!==n?n:e.Orientation.VERTICAL,this.element=this.createContainer(),this.margin=null!==(s=i.margin)&&void 0!==s?s:0,this.proportionalLayout=void 0===i.proportionalLayout||!!i.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(i.styles),i.descriptor&&(this._size=i.descriptor.size,i.descriptor.views.forEach(((e,t)=>{const i=void 0===e.visible||e.visible?e.size:{type:"invisible",cachedVisibleSize:e.size},n=e.view;this.addView(n,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)?(b(this.element,"dv-separator-border"),this.element.style.removeProperty("--dv-separator-border")):(C(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(t,i){if(t<0||t>=this.viewItems.length)return;const n=M(this.viewItems.length).filter((e=>e!==t)),s=[...n.filter((t=>this.viewItems[t].priority===e.LayoutPriority.Low)),t],o=n.filter((t=>this.viewItems[t].priority===e.LayoutPriority.High)),r=this.viewItems[t];i=Math.round(i),i=T(i,r.minimumSize,Math.min(r.maximumSize,this._size)),r.size=i,this.relayout(s,o)}getViews(){return this.viewItems.map((e=>e.view))}onDidChange(t,i){const n=this.viewItems.indexOf(t);if(n<0||n>=this.viewItems.length)return;i="number"==typeof i?i:t.size,i=T(i,t.minimumSize,t.maximumSize),t.size=i;const s=M(this.viewItems.length).filter((e=>e!==n)),o=[...s.filter((t=>this.viewItems[t].priority===e.LayoutPriority.Low)),n],r=s.filter((t=>this.viewItems[t].priority===e.LayoutPriority.High));this.relayout([...o,n],r)}addView(t,i={type:"distribute"},n=this.viewItems.length,s){const o=document.createElement("div");let r;o.className="dv-view",o.appendChild(t.element),r="number"==typeof i?i:"split"===i.type?this.getViewSize(i.index)/2:"invisible"===i.type?{cachedVisibleSize:i.cachedVisibleSize}:t.minimumSize;const a=t.onDidChange((e=>this.onDidChange(h,e.size))),h=new W(o,t,r,{dispose:()=>{a.dispose(),this.viewContainer.removeChild(o)}});if(n===this.viewItems.length?this.viewContainer.appendChild(o):this.viewContainer.insertBefore(o,this.viewContainer.children.item(n)),this.viewItems.splice(n,0,h),this.viewItems.length>1){const t=document.createElement("div");t.className="dv-sash";const i=i=>{for(const e of this.viewItems)e.enabled=!1;const n=O(),s=this._orientation===e.Orientation.HORIZONTAL?i.clientX:i.clientY,o=function(e,t){for(let i=0;i<e.length;i++)if(t(e[i]))return i;return-1}(this.sashes,(e=>e.container===t)),r=this.viewItems.map((e=>e.size));let a,h;const d=M(o,-1),l=M(o+1,this.viewItems.length),p=d.reduce(((e,t)=>e+(this.viewItems[t].minimumSize-r[t])),0),u=d.reduce(((e,t)=>e+(this.viewItems[t].viewMaximumSize-r[t])),0),c=0===l.length?Number.POSITIVE_INFINITY:l.reduce(((e,t)=>e+(r[t]-this.viewItems[t].minimumSize)),0),m=0===l.length?Number.NEGATIVE_INFINITY:l.reduce(((e,t)=>e+(r[t]-this.viewItems[t].viewMaximumSize)),0),v=Math.max(p,m),g=Math.min(c,u),w=this.findFirstSnapIndex(d),_=this.findFirstSnapIndex(l);if("number"==typeof w){const e=this.viewItems[w],t=Math.floor(e.viewMinimumSize/2);a={index:w,limitDelta:e.visible?v-t:v+t,size:e.size}}if("number"==typeof _){const e=this.viewItems[_],t=Math.floor(e.viewMinimumSize/2);h={index:_,limitDelta:e.visible?g+t:g-t,size:e.size}}const f=t=>{const i=(this._orientation===e.Orientation.HORIZONTAL?t.clientX:t.clientY)-s;this.resize(o,i,r,void 0,void 0,v,g,a,h),this.distributeEmptySpace(),this.layoutViews()},D=()=>{for(const e of this.viewItems)e.enabled=!0;n.release(),this.saveProportions(),document.removeEventListener("pointermove",f),document.removeEventListener("pointerup",D),document.removeEventListener("pointercancel",D),this._onDidSashEnd.fire(void 0)};document.addEventListener("pointermove",f),document.addEventListener("pointerup",D),document.addEventListener("pointercancel",D)};t.addEventListener("pointerdown",i);const n={container:t,disposable:()=>{t.removeEventListener("pointerdown",i),this.sashContainer.removeChild(t)}};this.sashContainer.appendChild(t),this.sashes.push(n)}s||this.relayout([n]),s||"number"==typeof i||"distribute"!==i.type||this.distributeViewSizes(),this._onDidAddView.fire(t)}distributeViewSizes(){const t=[];let i=0;for(const e of this.viewItems)e.maximumSize-e.minimumSize>0&&(t.push(e),i+=e.size);const n=Math.floor(i/t.length);for(const e of t)e.size=T(n,e.minimumSize,e.maximumSize);const s=M(this.viewItems.length),o=s.filter((t=>this.viewItems[t].priority===e.LayoutPriority.Low)),r=s.filter((t=>this.viewItems[t].priority===e.LayoutPriority.High));this.relayout(o,r)}removeView(e,t,i=!1){const n=this.viewItems.splice(e,1)[0];if(n.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(n.view),n.view}getViewCachedVisibleSize(e){if(e<0||e>=this.viewItems.length)throw new Error("Index out of bounds");return this.viewItems[e].cachedVisibleSize}moveView(t,i){const n=this.getViewCachedVisibleSize(t),s=void 0===n?this.getViewSize(t):e.Sizing.Invisible(n),o=this.removeView(t,void 0,!0);this.addView(o,s,i)}layout(t,i){const n=Math.max(this.size,this._contentSize);if(this.size=t,this.orthogonalSize=i,this.proportions){let e=0;for(let i=0;i<this.viewItems.length;i++){const n=this.viewItems[i],s=this.proportions[i];"number"==typeof s?e+=s:t-=n.size}for(let i=0;i<this.viewItems.length;i++){const n=this.viewItems[i],s=this.proportions[i];"number"==typeof s&&e>0&&(n.size=T(Math.round(s*t/e),n.minimumSize,n.maximumSize))}}else{const i=M(this.viewItems.length),s=i.filter((t=>this.viewItems[t].priority===e.LayoutPriority.Low)),o=i.filter((t=>this.viewItems[t].priority===e.LayoutPriority.High));this.resize(this.viewItems.length-1,t-n,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(t){const i=this.viewItems.reduce(((e,t)=>e+t.size),0);let n=this.size-i;const s=M(this.viewItems.length-1,-1),o=s.filter((t=>this.viewItems[t].priority===e.LayoutPriority.Low)),r=s.filter((t=>this.viewItems[t].priority===e.LayoutPriority.High));for(const e of r)N(s,e);for(const e of o)L(s,e);"number"==typeof t&&L(s,t);for(let e=0;0!==n&&e<s.length;e++){const t=this.viewItems[s[e]],i=T(t.size+n,t.minimumSize,t.maximumSize);n-=i-t.size,t.size=i}}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 t=this.viewItems.filter((e=>e.visible)),i=Math.max(0,t.length-1),n=this.margin*i/Math.max(1,t.length);let s=0;const o=[],r=this.viewItems.reduce(((e,t,i)=>{const n=t.visible?1:0;return 0===i?e.push(n):e.push(e[i-1]+n),e}),[]);this.viewItems.forEach(((t,a)=>{s+=this.viewItems[a].size,o.push(s);const h=t.visible?t.size-n:0,d=Math.max(0,r[a]-1),l=0===a||0===d?0:o[a-1]+d/i*n;if(a<this.viewItems.length-1){const i=t.visible?l+h-2+this.margin/2:l;this._orientation===e.Orientation.HORIZONTAL&&(this.sashes[a].container.style.left=`${i}px`,this.sashes[a].container.style.top="0px"),this._orientation===e.Orientation.VERTICAL&&(this.sashes[a].container.style.left="0px",this.sashes[a].container.style.top=`${i}px`)}this._orientation===e.Orientation.HORIZONTAL&&(t.container.style.width=`${h}px`,t.container.style.left=`${l}px`,t.container.style.top="",t.container.style.height=""),this._orientation===e.Orientation.VERTICAL&&(t.container.style.height=`${h}px`,t.container.style.top=`${l}px`,t.container.style.width="",t.container.style.left=""),t.view.layout(t.size-n,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 t=!1;const i=this.viewItems.map((e=>t=e.size-e.minimumSize>0||t));t=!1;const n=this.viewItems.map((e=>t=e.maximumSize-e.size>0||t)),s=[...this.viewItems].reverse();t=!1;const o=s.map((e=>t=e.size-e.minimumSize>0||t)).reverse();t=!1;const r=s.map((e=>t=e.maximumSize-e.size>0||t)).reverse();let a=0;for(let t=0;t<this.sashes.length;t++){const s=this.sashes[t];a+=this.viewItems[t].size;const h=!(i[t]&&r[t+1]),d=!(n[t]&&o[t+1]);if(h&&d){const n=M(t,-1),r=M(t+1,this.viewItems.length),h=this.findFirstSnapIndex(n),d=this.findFirstSnapIndex(r),l="number"==typeof h&&!this.viewItems[h].visible,p="number"==typeof d&&!this.viewItems[d].visible;l&&o[t]&&(a>0||this.startSnappingEnabled)?this.updateSash(s,e.SashState.MINIMUM):p&&i[t]&&(a<this._contentSize||this.endSnappingEnabled)?this.updateSash(s,e.SashState.MAXIMUM):this.updateSash(s,e.SashState.DISABLED)}else h&&!d?this.updateSash(s,e.SashState.MINIMUM):!h&&d?this.updateSash(s,e.SashState.MAXIMUM):this.updateSash(s,e.SashState.ENABLED)}}updateSash(t,i){y(t.container,"dv-disabled",i===e.SashState.DISABLED),y(t.container,"dv-enabled",i===e.SashState.ENABLED),y(t.container,"dv-maximum",i===e.SashState.MAXIMUM),y(t.container,"dv-minimum",i===e.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 t=document.createElement("div"),i=this._orientation===e.Orientation.HORIZONTAL?"dv-horizontal":"dv-vertical";return t.className=`dv-split-view-container ${i}`,t}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 j=(()=>{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 $ extends w{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(t,i){var n;super(),this.paneItems=[],this.skipAnimation=!1,this._onDidChange=new m,this.onDidChange=this._onDidChange.event,this._orientation=null!==(n=i.orientation)&&void 0!==n?n:e.Orientation.VERTICAL,this.element=document.createElement("div"),this.element.className="dv-pane-container",t.appendChild(this.element),this.splitview=new J(this.element,{orientation:this._orientation,proportionalLayout:!1,descriptor:i.descriptor}),this.getPanes().forEach((e=>{const t=new w(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,n=!1){const s=e.onDidChangeExpansionState((()=>{this.setupAnimation(),this._onDidChange.fire(void 0)})),o={pane:e,disposable:{dispose:()=>{s.dispose()}}};this.paneItems.splice(i,0,o),e.orthogonalSize=this.splitview.orthogonalSize,this.splitview.addView(e,t,i,n)}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),C(this.element,"dv-animated"),this.animationTimer=setTimeout((()=>{this.animationTimer=void 0,b(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 Z{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===e.Orientation.HORIZONTAL?this.minimumHeight:this.minimumWidth}get maximumSize(){return this.orientation===e.Orientation.HORIZONTAL?this.maximumHeight:this.maximumWidth}get minimumOrthogonalSize(){return this.orientation===e.Orientation.HORIZONTAL?this.minimumWidth:this.minimumHeight}get maximumOrthogonalSize(){return this.orientation===e.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===e.Orientation.HORIZONTAL?this.orthogonalSize:this.size}get height(){return this.orientation===e.Orientation.HORIZONTAL?this.size:this.orthogonalSize}constructor(t,i,n,s=0){this.view=t,this.orientation=i,this._onDidChange=new m,this.onDidChange=this._onDidChange.event,this._orthogonalSize=n,this._size=s,this._disposable=this.view.onDidChange((t=>{t?this._onDidChange.fire({size:this.orientation===e.Orientation.VERTICAL?t.width:t.height,orthogonalSize:this.orientation===e.Orientation.VERTICAL?t.height:t.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 Y extends w{get width(){return this.orientation===e.Orientation.HORIZONTAL?this.size:this.orthogonalSize}get height(){return this.orientation===e.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===e.Orientation.HORIZONTAL?this.minimumOrthogonalSize:this.minimumSize}get minimumHeight(){return this.orientation===e.Orientation.HORIZONTAL?this.minimumSize:this.minimumOrthogonalSize}get maximumWidth(){return this.orientation===e.Orientation.HORIZONTAL?this.maximumOrthogonalSize:this.maximumSize}get maximumHeight(){return this.orientation===e.Orientation.HORIZONTAL?this.maximumSize:this.maximumOrthogonalSize}get priority(){if(0===this.children.length)return e.LayoutPriority.Normal;const t=this.children.map((t=>void 0===t.priority?e.LayoutPriority.Normal:t.priority));return t.some((t=>t===e.LayoutPriority.High))?e.LayoutPriority.High:t.some((t=>t===e.LayoutPriority.Low))?e.LayoutPriority.Low:e.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 Y&&(t.margin=e)}))}constructor(t,i,n,s,o,r,a,h){if(super(),this.orientation=t,this.proportionalLayout=i,this.styles=n,this._childrenDisposable=e.DockviewDisposable.NONE,this.children=[],this._onDidChange=new m,this.onDidChange=this._onDidChange.event,this._onDidVisibilityChange=new m,this.onDidVisibilityChange=this._onDidVisibilityChange.event,this._orthogonalSize=o,this._size=s,this.element=document.createElement("div"),this.element.className="dv-branch-node",h){const e={views:h.map((e=>({view:e.node,size:e.node.size,visible:!(e.node instanceof Z&&void 0!==e.visible)||e.visible}))),size:this.orthogonalSize};this.children=h.map((e=>e.node)),this.splitview=new J(this.element,{orientation:this.orientation,descriptor:e,proportionalLayout:i,styles:n,margin:a})}else this.splitview=new J(this.element,{orientation:this.orientation,proportionalLayout:i,styles:n,margin:a}),this.splitview.layout(this.size,this.orthogonalSize);this.disabled=r,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 n=0===this.splitview.contentSize;(t&&i||!t&&n)&&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,n){if(i<0||i>this.children.length)throw new Error("Invalid index");this.splitview.addView(e,t,i,n),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 w(e.DockviewEvent.any(...this.children.map((e=>e.onDidChange)))((e=>{this._onDidChange.fire({size:e.orthogonalSize})})),...this.children.map(((t,i)=>t instanceof Y?t.onDidVisibilityChange((({visible:e})=>{this.setChildVisible(i,e)})):e.DockviewDisposable.NONE)))}dispose(){this._childrenDisposable.dispose(),this.splitview.dispose(),this.children.forEach((e=>e.dispose())),super.dispose()}}function X(e,t){if(e instanceof Z)return e;if(e instanceof Y)return X(e.children[t?e.children.length-1:0],t);throw new Error("invalid node")}function K(e,t,i){if(e instanceof Y){const n=new Y(ne(e.orientation),e.proportionalLayout,e.styles,t,i,e.disabled,e.margin);let s=0;for(let o=e.children.length-1;o>=0;o--){const r=e.children[o],a=r instanceof Y?r.orthogonalSize:r.size;let h=0===e.size?0:Math.round(t*a/e.size);s+=h,0===o&&(h+=t-s),n.addChild(K(r,i,h),h,0,!0)}return n}return new Z(e.view,ne(e.orientation),i)}function q(e){const t=e.parentElement;if(!t)throw new Error("Invalid grid element");let i=t.firstElementChild,n=0;for(;i!==e&&i!==t.lastElementChild&&i;)i=i.nextElementSibling,n++;return n}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=q(t);return[...Q(t.parentElement.parentElement.parentElement),i]}function ee(e,t,i){if(ie(e,t)===te(i)){const[e,n]=I(t);let s=n;return"right"!==i&&"bottom"!==i||(s+=1),[...e,s]}{const e="right"===i||"bottom"===i?1:0;return[...t,e]}}function te(t){return"top"===t||"bottom"===t?e.Orientation.VERTICAL:e.Orientation.HORIZONTAL}function ie(e,t){return t.length%2==0?ne(e):e}const ne=t=>t===e.Orientation.HORIZONTAL?e.Orientation.VERTICAL:e.Orientation.HORIZONTAL;function se(e){return!!e.children}const oe=(t,i)=>{const n=i===e.Orientation.VERTICAL?t.box.width:t.box.height;return se(t)?{type:"branch",data:t.children.map((e=>oe(e,ne(i)))),size:n}:"number"==typeof t.cachedVisibleSize?{type:"leaf",data:t.view.toJSON(),size:t.cachedVisibleSize,visible:!1}:{type:"leaf",data:t.view.toJSON(),size:n}};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=K(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 Y&&(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),[n,s]=this.getNode(i);if(!(s instanceof Z))return;if((null===(t=this._maximizedNode)||void 0===t?void 0:t.leaf)===s)return;this.hasMaximizedView()&&this.exitMaximizedView(),oe(this.getView(),this.orientation);const o=[];!function e(t,i){for(let n=0;n<t.children.length;n++){const s=t.children[n];s instanceof Z?s!==i&&(t.isChildVisible(n)?t.setChildVisible(n,!1):o.push(s)):e(s,i)}}(this.root,s),this._maximizedNode={leaf:s,hiddenOnMaximize:o},this._onDidMaximizedNodeChange.fire({view:s.view,isMaximized:!0})}exitMaximizedView(){if(!this._maximizedNode)return;const e=this._maximizedNode.hiddenOnMaximize;!function t(i){for(let n=i.children.length-1;n>=0;n--){const s=i.children[n];s instanceof Z?e.includes(s)||i.setChildVisible(n,!0):t(s)}}(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)),this.hasMaximizedView()&&this.exitMaximizedView();const i={root:oe(this.getView(),this.orientation),width:this.width,height:this.height,orientation:this.orientation};return t&&(i.maximizedNode={location:t}),e&&this.maximizeView(e),i}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 Y(e,this.proportionalLayout,this.styles,this.root.size,this.root.orthogonalSize,this.locked,this.margin)}deserialize(t,i){const n=t.orientation,s=n===e.Orientation.VERTICAL?t.height:t.width;if(this._deserialize(t.root,n,i,s),this.layout(t.width,t.height),t.maximizedNode){const e=t.maximizedNode.location,[i,n]=this.getNode(e);if(!(n instanceof Z))return;this.maximizeView(n.view)}}_deserialize(e,t,i,n){this.root=this._deserializeNode(e,t,i,n)}_deserializeNode(e,t,i,n){var s;let o;if("branch"===e.type){const s=e.data.map((n=>({node:this._deserializeNode(n,ne(t),i,e.size),visible:n.visible})));o=new Y(t,this.proportionalLayout,this.styles,e.size,n,this.locked,this.margin,s)}else{const r=i.fromJSON(e);"boolean"==typeof e.visible&&(null===(s=r.setVisible)||void 0===s||s.call(r,e.visible)),o=new Z(r,t,n,e.size)}return o}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)}))}insertOrthogonalSplitviewAtRoot(){if(!this._root)return;const t=this.root;if(t.element.remove(),this._root=new Y(ne(t.orientation),this.proportionalLayout,this.styles,this.root.orthogonalSize,this.root.size,this.locked,this.margin),0===t.children.length);else if(1===t.children.length){const i=t.children[0];t.removeChild(0).dispose(),t.dispose(),this._root.addChild(K(i,i.orthogonalSize,i.size),e.Sizing.Distribute,0)}else this._root.addChild(t,e.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 n={height:e.height,width:e.width};if(e instanceof Z)return{box:n,view:e.view,cachedVisibleSize:i};const s=[];for(let i=0;i<e.children.length;i++){const n=e.children[i],o=e.getChildCachedVisibleSize(i);s.push(this._getViews(n,ne(t),o))}return{box:n,children:s}}progmaticSelect(e,t=!1){const[i,n]=this.getNode(e);if(!(n instanceof Z))throw new Error("invalid location");for(let n=i.length-1;n>-1;n--){const s=i[n],o=e[n]||0;if(t?o-1>-1:o+1<s.children.length)return X(s.children[t?o-1:o+1],t)}return X(this.root,t)}constructor(e,t,i,n,s){this.proportionalLayout=e,this.styles=t,this._locked=!1,this._margin=0,this._maximizedNode=void 0,this.disposable=new _,this._onDidChange=new m,this.onDidChange=this._onDidChange.event,this._onDidViewVisibilityChange=new m,this.onDidViewVisibilityChange=this._onDidViewVisibilityChange.event,this._onDidMaximizedNodeChange=new m,this.onDidMaximizedNodeChange=this._onDidMaximizedNodeChange.event,this.element=document.createElement("div"),this.element.className="dv-grid-view",this._locked=null!=n&&n,this._margin=null!=s?s:0,this.root=new Y(i,e,t,0,0,this.locked,this.margin)}isViewVisible(e){const[t,i]=I(e),[,n]=this.getNode(t);if(!(n instanceof Y))throw new Error("Invalid from location");return n.isChildVisible(i)}setViewVisible(e,t){this.hasMaximizedView()&&this.exitMaximizedView();const[i,n]=I(e),[,s]=this.getNode(i);if(!(s instanceof Y))throw new Error("Invalid from location");this._onDidViewVisibilityChange.fire(),s.setChildVisible(n,t)}moveView(e,t,i){this.hasMaximizedView()&&this.exitMaximizedView();const[,n]=this.getNode(e);if(!(n instanceof Y))throw new Error("Invalid location");n.moveChild(t,i)}addView(t,i,n){this.hasMaximizedView()&&this.exitMaximizedView();const[s,o]=I(n),[r,a]=this.getNode(s);if(a instanceof Y){const e=new Z(t,ne(a.orientation),a.orthogonalSize);a.addChild(e,i,o)}else{const[n,...h]=[...r].reverse(),[d,...l]=[...s].reverse();let p=0;const u=n.getChildCachedVisibleSize(d);"number"==typeof u&&(p=e.Sizing.Invisible(u));n.removeChild(d).dispose();const c=new Y(a.orientation,this.proportionalLayout,this.styles,a.size,a.orthogonalSize,this.locked,this.margin);n.addChild(c,a.size,d);const m=new Z(a.view,n.orientation,a.size);c.addChild(m,p,0),"number"!=typeof i&&"split"===i.type&&(i={type:"split",index:0});const v=new Z(t,n.orientation,a.size);c.addChild(v,i,o)}}remove(e,t){const i=Q(e.element);return this.removeView(i,t)}removeView(t,i){this.hasMaximizedView()&&this.exitMaximizedView();const[n,s]=I(t),[o,r]=this.getNode(n);if(!(r instanceof Y))throw new Error("Invalid location");const a=r.children[s];if(!(a instanceof Z))throw new Error("Invalid location");if(r.removeChild(s,i),a.dispose(),1!==r.children.length)return a.view;const h=r.children[0];if(0===o.length)return h instanceof Z||(r.removeChild(0,i),this.root=h),a.view;const[d,...l]=[...o].reverse(),[p,...u]=[...n].reverse(),c=r.isChildVisible(0);r.removeChild(0,i);const m=d.children.map(((e,t)=>d.getChildSize(t)));if(d.removeChild(p,i).dispose(),h instanceof Y){m.splice(p,1,...h.children.map((e=>e.size)));for(let e=0;e<h.children.length;e++){const t=h.children[e];d.addChild(t,t.size,p+e)}for(;h.children.length>0;)h.removeChild(0)}else{const t=new Z(h.view,ne(h.orientation),h.size),i=c?h.orthogonalSize:e.Sizing.Invisible(h.orthogonalSize);d.addChild(t,i,p)}h.dispose();for(let e=0;e<m.length;e++)d.resizeChild(e,m[e]);return a.view}layout(t,i){const[n,s]=this.root.orientation===e.Orientation.HORIZONTAL?[i,t]:[t,i];this.root.layout(n,s)}getNode(e,t=this.root,i=[]){if(0===e.length)return[i,t];if(!(t instanceof Y))throw new Error("Invalid location");const[n,...s]=e;if(n<0||n>=t.children.length)throw new Error("Invalid location");const o=t.children[n];return i.push(t),this.getNode(s,o,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 he extends w{get element(){return this._element}get disableResizing(){return this._disableResizing}set disableResizing(e){this._disableResizing=e}constructor(e,t=!1){super(),this._disableResizing=t,this._element=e,this.addDisposables(D(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{width:t,height:i}=e.contentRect;this.layout(t,i)})))}}const de=R();function le(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 he{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(t,i){var n;super(document.createElement("div"),i.disableAutoResizing),this._id=de.next(),this._groups=new Map,this._onDidRemove=new m,this.onDidRemove=this._onDidRemove.event,this._onDidAdd=new m,this.onDidAdd=this._onDidAdd.event,this._onDidMaximizedChange=new m,this.onDidMaximizedChange=this._onDidMaximizedChange.event,this._onDidActiveChange=new m,this.onDidActiveChange=this._onDidActiveChange.event,this._bufferOnDidLayoutChange=new g,this.onDidLayoutChange=this._bufferOnDidLayoutChange.onEvent,this._onDidViewVisibilityChangeMicroTaskQueue=new g,this.onDidViewVisibilityChangeMicroTaskQueue=this._onDidViewVisibilityChangeMicroTaskQueue.onEvent,this.element.style.height="100%",this.element.style.width="100%",this._classNames=new G(this.element),this._classNames.setClassNames(null!==(n=i.className)&&void 0!==n?n:""),t.appendChild(this.element),this.gridview=new re(!!i.proportionalLayout,i.styles,i.orientation,i.locked,i.margin),this.gridview.locked=!!i.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.layout(this.width,this.height,!0)})),e.DockviewDisposable.from((()=>{var e;null===(e=this.element.parentElement)||void 0===e||e.removeChild(this.element)})),this.gridview.onDidChange((()=>{this._bufferOnDidLayoutChange.fire()})),e.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,n,s;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!==(n=e.margin)&&void 0!==n?n:0),"className"in e&&this._classNames.setClassNames(null!==(s=e.className)&&void 0!==s?s:"")}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(t,i=[0],n){this.gridview.addView(t,null!=n?n:e.Sizing.Distribute,i),this._onDidAdd.fire(t)}doRemoveGroup(t,i){if(!this._groups.has(t.id))throw new Error("invalid operation");const n=this._groups.get(t.id),s=this.gridview.remove(t,e.Sizing.Distribute);if(n&&!(null==i?void 0:i.skipDispose)&&(n.disposable.dispose(),n.value.dispose(),this._groups.delete(t.id),this._onDidRemove.fire(t)),!(null==i?void 0:i.skipActive)&&this._activeGroup===t){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),n=null===(t=this.gridview.next(i))||void 0===t?void 0:t.view;this.doSetGroupActive(n)}moveToPrevious(e){var t;if(e||(e={}),!e.group){if(!this.activeGroup)return;e.group=this.activeGroup}const i=Q(e.group.element),n=null===(t=this.gridview.previous(i))||void 0===t?void 0:t.view;this.doSetGroupActive(n)}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 ue{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)}toJSON(){return this.component.toJSON()}clear(){this.component.clear()}updateOptions(e){this.component.updateOptions(e)}dispose(){this.component.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 panels(){return this.component.panels}get onDidLayoutChange(){return this.component.onDidLayoutChange}get onDidLayoutFromJSON(){return this.component.onDidLayoutFromJSON}get onDidAddView(){return this.component.onDidAddView}get onDidRemoveView(){return this.component.onDidRemoveView}get onDidDrop(){return this.component.onDidDrop}get onUnhandledDragOverEvent(){return this.component.onUnhandledDragOverEvent}constructor(e){this.component=e}removePanel(e){this.component.removePanel(e)}getPanel(e){return this.component.getPanel(e)}movePanel(e,t){this.component.movePanel(e,t)}focus(){this.component.focus()}layout(e,t){this.component.layout(e,t)}addPanel(e){return this.component.addPanel(e)}fromJSON(e){this.component.fromJSON(e)}toJSON(){return this.component.toJSON()}clear(){this.component.clear()}updateOptions(e){this.component.updateOptions(e)}dispose(){this.component.dispose()}}class me{get width(){return this.component.width}get height(){return this.component.height}get minimumHeight(){return this.component.minimumHeight}get maximumHeight(){return this.component.maximumHeight}get minimumWidth(){return this.component.minimumWidth}get maximumWidth(){return this.component.maximumWidth}get onDidLayoutChange(){return this.component.onDidLayoutChange}get onDidAddPan