dock-spawn-ts 3.7.0 → 3.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,14 @@
1
+ var x;(function(r){r.document="document",r.panel="panel"})(x||(x={}));var M;(function(r){r[r.TOP=0]="TOP",r[r.BOTTOM=1]="BOTTOM",r[r.LEFT=2]="LEFT",r[r.RIGHT=3]="RIGHT"})(M||(M={}));var p;(function(r){r.left="left",r.right="right",r.top="top",r.down="down",r.fill="fill",r["left-s"]="left-s",r["right-s"]="right-s",r["top-s"]="top-s",r["down-s"]="down-s"})(p||(p={}));var Z={CloseDialog:"Close dialog",CloseAll:"Close all documents",CloseAllButThis:"Close all documents but this",DefaultPanelName:"Panel",NewBrowserWindow:"Open in new window"};function ie(r,...e){return r.replace(/{(\d+)}/g,(t,i)=>{let n=Number.parseInt(i);return e[n].toString()})}var C=class r{static configure(e){r._getTemplateString=e}static getString(e,...t){return ie(r._getTemplateString?.(e)??Z[e],...t)}static _getTemplateString};function ee(r,e){let t=r.resolvedElementContent,i=t.getBoundingClientRect(),n={x:i.x+24,y:i.y+60,width:i.width,height:i.height},o=window.open("about:blank",void 0,`popup=yes,left=${n.x},top=${n.y},width=${n.width},height=${n.height}`);o.onfocus=m=>e.focused(m),o.onblur=m=>e.blured(m);let s=[...document.head.querySelectorAll("link")].map(m=>m.cloneNode());for(let m of s)o.document.head.appendChild(o.document.adoptNode(m));let l=o.document.createElement("style");l.innerText=`
2
+ html {
3
+ overflow: hidden;
4
+ position: fixed;
5
+ width: 100%;
6
+ height: 100%;
7
+ }
8
+ body {
9
+ height: 100%;
10
+ width: 100%;
11
+ margin: 0;
12
+ }
13
+ `,o.document.head.appendChild(l);let a=o.document.createElement("title");a.innerText=e.title,o.document.head.appendChild(a),o.onunload=()=>e.newWindowClosedCallback();let u=new Map,c=new Map;function f(m){if(m.shadowRoot){m.shadowRoot.adoptedStyleSheets.length>0&&c.set(m,[...m.shadowRoot.adoptedStyleSheets.map(k=>ne(o,k,u))]);for(let k of m.shadowRoot.querySelectorAll("*"))f(k)}}f(t);for(let m of t.querySelectorAll("*"))f(m);o.document.body.appendChild(o.document.adoptNode(t));for(let m of c)m[0].shadowRoot.adoptedStyleSheets=m[1];return e.closeCallback(),r.dockManager.notifyOnNewWindow(r,o),o}function ne(r,e,t){let i=t.get(e);if(i)return i;let n="",o=e.cssRules;for(var s=0;s<o.length;s++)n+=o[s].cssText+`
14
+ `;let l=new r.CSSStyleSheet;return t.set(e,l),l.replaceSync(n),l}var y;(function(r){r.horizontal="horizontal",r.vertical="vertical",r.fill="fill",r.panel="panel"})(y||(y={}));var g=class{x;y;constructor(e,t){this.x=e,this.y=t}};var h=class r{static _counter=0;static getPixels(e){return e===null?0:parseInt(e.replace("px",""))}static disableGlobalTextSelection(e){e.classList.add("disable-selection")}static enableGlobalTextSelection(e){e.classList.remove("disable-selection")}static isPointInsideNode(e,t,i){let o=i.container.containerElement.getBoundingClientRect();return e>=o.left&&e<=o.left+o.width&&t>=o.top&&t<=o.top+o.height}static getNextId(e){return e+r._counter++}static removeNode(e){return e.parentNode===null?!1:(e.parentNode.removeChild(e),!0)}static orderByIndexes(e,t){let i=[];for(let n=0;n<t.length;n++)i.push(e[t[n]]);return i}static arrayRemove(e,t){let i=e.indexOf(t);return i!==-1?e.splice(i,1):!1}static arrayContains(e,t){let i=e.length;for(;i--;)if(e[i]===t)return!0;return!1}static arrayEqual(e,t){if(e===t)return!0;if(e==null||t==null||e.length!=t.length)return!1;for(let i=0;i<e.length;++i)if(e[i]!==t[i])return!1;return!0}};var d=class{target;eventName;source;constructor(e,t,i,n){this.target=i,this.eventName=t,this.source=e,this.source.addEventListener(t,this.target,n)}cancel(){this.source.removeEventListener(this.eventName,this.target)}};var T=class{mouseUpHandler;touchUpHandler;mouseMoveHandler;touchMoveHandler;dragStartPosition;thresholdPixels;_enabled;mouseDownHandler;touchDownHandler;element;_undockededCallback;touchDownUndockedHandler;constructor(e,t,i){i||(i=7),this.element=e,this._undockededCallback=t,this.thresholdPixels=i,this._enabled=!1}get enabled(){return this._enabled}set enabled(e){this._enabled=e,this._enabled?(this.mouseDownHandler&&(this.mouseDownHandler.cancel(),delete this.mouseDownHandler),this.touchDownHandler&&(this.touchDownHandler.cancel(),delete this.touchDownHandler),this.mouseDownHandler=new d(this.element,"mousedown",this.onMouseDown.bind(this)),this.touchDownHandler=new d(this.element,"touchstart",this.onMouseDown.bind(this),{passive:!1})):(this.mouseDownHandler&&(this.mouseDownHandler.cancel(),delete this.mouseDownHandler),this.touchDownHandler&&(this.touchDownHandler.cancel(),delete this.touchDownHandler),this.mouseUpHandler&&(this.mouseUpHandler.cancel(),delete this.mouseUpHandler),this.touchUpHandler&&(this.touchUpHandler.cancel(),delete this.touchUpHandler),this.mouseMoveHandler&&(this.mouseMoveHandler.cancel(),delete this.mouseMoveHandler),this.touchMoveHandler&&(this.touchMoveHandler.cancel(),delete this.touchMoveHandler))}onMouseDown(e){if(e.preventDefault(),this.enabled){if(e.touches){if(e.touches.length>1)return;e=e.touches[0]}this.mouseUpHandler&&(this.mouseUpHandler.cancel(),delete this.mouseUpHandler),this.touchUpHandler&&(this.touchUpHandler.cancel(),delete this.touchUpHandler),this.mouseMoveHandler&&(this.mouseMoveHandler.cancel(),delete this.mouseMoveHandler),this.touchMoveHandler&&(this.touchMoveHandler.cancel(),delete this.touchMoveHandler),this.mouseUpHandler=new d(window,"mouseup",this.onMouseUp.bind(this)),this.touchUpHandler=new d(window,"touchend",this.onMouseUp.bind(this)),this.mouseMoveHandler=new d(window,"mousemove",this.onMouseMove.bind(this)),this.touchMoveHandler=new d(window,"touchmove",this.onMouseMove.bind(this)),this.dragStartPosition=new g(e.clientX,e.clientY)}}onMouseUp(){this.mouseUpHandler&&(this.mouseUpHandler.cancel(),delete this.mouseUpHandler),this.touchUpHandler&&(this.touchUpHandler.cancel(),delete this.touchUpHandler),this.mouseMoveHandler&&(this.mouseMoveHandler.cancel(),delete this.mouseMoveHandler),this.touchMoveHandler&&(this.touchMoveHandler.cancel(),delete this.touchMoveHandler)}onMouseMove(e){if(e.touches){if(e.touches.length>1)return;e=e.touches[0]}if(e.buttons==0){this.onMouseUp();return}let i=new g(e.clientX,e.clientY).y-this.dragStartPosition.y;(i>this.thresholdPixels||i<-this.thresholdPixels)&&(this.enabled=!1,this._requestUndock(e))}_requestUndock(e){let t=0,i=0,n=this.element;do t+=n.offsetTop||0,i+=n.offsetLeft||0,n=n.offsetParent;while(n);let o=this.dragStartPosition.x-i,s=this.dragStartPosition.y-t,l=new g(o,s);this._undockededCallback(e,l)}};var v=class r{closePanelContainerCallback;onTitleChanged;elementPanel;elementTitle;elementTitleText;elementContentHost;name;state;elementContent;_resolvedElementContent;elementContentContainer;elementContentWrapper;dockManager;title;containerType;icon;hasChanges;minimumAllowedChildNodes;isDialog;eventListeners;undockInitiator;elementButtonClose;closeButtonClickedHandler;closeButtonTouchedHandler;mouseDownHandler;touchDownHandler;panelType;tabPage;undockedToNewBrowserWindow=!1;contextMenuHandler;lastDialogSize;_floatingDialog;_canUndock;_cachedWidth;_cachedHeight;_hideCloseButton;_grayOut;_ctxMenu;constructor(e,t,i,n,o){i||(i=C.getString("DefaultPanelName")),n||(n=x.panel),this.panelType=n,e._dockSpawnPanelContainer=this,this.elementContent=e,e.style.position="absolute",e.style.width="100%",e.style.height="100%",e.style.top="0",e.style.bottom="0",this.elementContentContainer=document.createElement("div"),this.elementContentContainer.className="panel-element-content-container",this.elementContentContainer.style.position="absolute",this.elementContentContainer._panel=this,this.elementContentContainer.addEventListener("pointerdown",s=>{try{this.isDialog?this._floatingDialog.bringToFront():this.tabPage&&this.tabPage.setSelected(!0,!0),this.dockManager.activePanel=this}catch{}},{passive:!0}),this.elementContentContainer.appendChild(e),t.config.dialogRootElement.appendChild(this.elementContentContainer),this.dockManager=t,this.title=i,this.containerType=y.panel,this.icon=null,this.minimumAllowedChildNodes=0,this._floatingDialog=void 0,this.isDialog=!1,this._canUndock=t._undockEnabled,this.eventListeners=[],this._hideCloseButton=o,this.windowsContextMenuClose=this.windowsContextMenuClose.bind(this),this._initialize()}_initialize(){this.name=h.getNextId("panel_"),this.elementPanel=document.createElement("div"),this.elementPanel.tabIndex=0,this.elementTitle=document.createElement("div"),this.contextMenuHandler=new d(this.elementTitle,"contextmenu",this.oncontextMenuClicked.bind(this)),this.elementTitleText=document.createElement("div"),this.elementContentHost=document.createElement("div"),this.elementButtonClose=document.createElement("div"),this.elementPanel.appendChild(this.elementTitle),this.elementTitle.appendChild(this.elementTitleText),this.elementTitle.appendChild(this.elementButtonClose),this.elementButtonClose.classList.add("panel-titlebar-button-close"),this.elementButtonClose.style.display=this._hideCloseButton?"none":"block",this.elementPanel.appendChild(this.elementContentHost),this.elementPanel.classList.add("panel-base"),this.elementTitle.classList.add("panel-titlebar"),this.elementTitle.classList.add("disable-selection"),this.elementTitleText.classList.add("panel-titlebar-text"),this.elementContentHost.classList.add("panel-content");let e=this.elementContentContainer.clientWidth,t=this.elementContentContainer.clientHeight,i=this.elementTitle.clientHeight;this.elementContentWrapper=document.createElement("div"),this.elementContentWrapper.classList.add("panel-content-wrapper"),this._setPanelDimensions(e,t+i),this._hideCloseButton||(this.closeButtonClickedHandler=new d(this.elementButtonClose,"mousedown",this.onCloseButtonClicked.bind(this)),this.closeButtonTouchedHandler=new d(this.elementButtonClose,"touchstart",this.onCloseButtonClicked.bind(this))),h.removeNode(this.elementContentWrapper),this.elementContentHost.appendChild(this.elementContentWrapper);let n=this.elementContent.dataset.panelCaption,o=this.elementContent.dataset.panelIcon;n&&(this.title=n),o&&(this.icon=o),this._updateTitle(),this.undockInitiator=new T(this.elementTitle,this.performUndockToDialog.bind(this)),delete this.floatingDialog,this.mouseDownHandler=new d(this.elementPanel,"mousedown",this.onMouseDown.bind(this)),this.touchDownHandler=new d(this.elementPanel,"touchstart",this.onMouseDown.bind(this),{passive:!0}),this._resolvedElementContent=this.elementContent,this.elementContent instanceof HTMLSlotElement&&(this._resolvedElementContent=this.elementContent.assignedElements()?.[0])}static createContextMenuContentCallback=e=>{let t=[];if(e.dockManager.config.enableBrowserWindows){let i=document.createElement("div");i.innerText=C.getString("NewBrowserWindow"),t.push(i),i.onclick=()=>{e.undockToBrowserDialog(),e.closeContextMenu()}}return t};oncontextMenuClicked(e){if(e.preventDefault(),!this._ctxMenu&&r.createContextMenuContentCallback){let t=r.createContextMenuContentCallback(this);if(t.length==0)return;this._ctxMenu=document.createElement("div"),this._ctxMenu.className="dockspab-tab-handle-context-menu",this._ctxMenu.append(...t),this._ctxMenu.style.left=e.pageX+"px",this._ctxMenu.style.top=e.pageY+"px",document.body.appendChild(this._ctxMenu),window.addEventListener("mouseup",this.windowsContextMenuClose)}else this.closeContextMenu()}closeContextMenu(){this._ctxMenu&&(document.body.removeChild(this._ctxMenu),delete this._ctxMenu,window.removeEventListener("mouseup",this.windowsContextMenuClose))}windowsContextMenuClose(e){let t=e.composedPath();for(let i in t)if(t[i]==this._ctxMenu)return;this.closeContextMenu()}canUndock(e){this._canUndock=e,this.undockInitiator.enabled=e,this.eventListeners.forEach(t=>{t.onDockEnabled&&t.onDockEnabled({self:this,state:e})})}addListener(e){this.eventListeners.push(e)}removeListener(e){this.eventListeners.splice(this.eventListeners.indexOf(e),1)}get floatingDialog(){return this._floatingDialog}set floatingDialog(e){this._floatingDialog=e;let t=this._floatingDialog===void 0;this.undockInitiator.enabled=t}static async loadFromState(e,t){let i,n;if(t.getElementCallback){let s=await t.getElementCallback(e);i=s.element,n=s.title}else{let s=e.element;i=document.getElementById(s)}if(i===null)return null;let o=new r(i,t,n);return o.loadState(e),o}saveState(e){e.element=this.elementContent.id,e.width=this.width,e.height=this.height,e.canUndock=this._canUndock,e.hideCloseButton=this._hideCloseButton,e.panelType=this.panelType}loadState(e){this.width=e.width,this.height=e.height,this.state={width:e.width,height:e.height},this.canUndock(e.canUndock),this.hideCloseButton(e.hideCloseButton),this.panelType=e.panelType}setActiveChild(){}get containerElement(){return this.elementPanel}grayOut(e){!e&&this._grayOut?(this.elementContentWrapper.removeChild(this._grayOut),this.elementButtonClose.style.display=this._hideCloseButton?"none":"block",this._grayOut=null,this._hideCloseButton||this.eventListeners.forEach(t=>{t.onHideCloseButton&&t.onHideCloseButton({self:this,state:this._hideCloseButton})})):e&&!this._grayOut&&(this._grayOut=document.createElement("div"),this._grayOut.className="panel-grayout",this.elementButtonClose.style.display="none",this.elementContentWrapper.appendChild(this._grayOut),this.eventListeners.forEach(t=>{t.onHideCloseButton&&t.onHideCloseButton({self:this,state:!0})}))}onMouseDown(){this.dockManager.activePanel=this}hideCloseButton(e){this._hideCloseButton=e,this.elementButtonClose.style.display=e?"none":"block",this.eventListeners.forEach(t=>{t.onHideCloseButton&&t.onHideCloseButton({self:this,state:e})})}destroy(){this.mouseDownHandler&&(this.mouseDownHandler.cancel(),delete this.mouseDownHandler),this.touchDownHandler&&(this.touchDownHandler.cancel(),delete this.touchDownHandler),this.contextMenuHandler&&this.contextMenuHandler.cancel(),h.removeNode(this.elementPanel),this.closeButtonClickedHandler&&(this.closeButtonClickedHandler.cancel(),delete this.closeButtonClickedHandler),this.closeButtonTouchedHandler&&(this.closeButtonTouchedHandler.cancel(),delete this.closeButtonTouchedHandler)}performUndockToDialog(e,t){return this.isDialog=!0,this.undockInitiator.enabled=!1,this.elementContentWrapper.style.display="block",this.elementPanel.style.position="",this.dockManager.requestUndockToDialog(this,e,t)}performClose(){this.isDialog=!0,this.undockInitiator.enabled=!1,this.elementContentWrapper.style.display="block",this.elementContentContainer.style.display="none",this.elementPanel.style.position="",this.dockManager.requestClose(this)}performUndock(){this.undockInitiator.enabled=!1,this.dockManager.requestUndock(this)}prepareForDocking(){this.isDialog=!1,this.undockInitiator.enabled=this._canUndock,this.elementContentContainer.parentElement!=this.dockManager.config.dialogRootElement&&this.dockManager.config.dialogRootElement.appendChild(this.elementContentContainer)}get width(){return this._cachedWidth}set width(e){e!==this._cachedWidth&&(this._cachedWidth=e,this.elementPanel.style.width=e+"px")}get height(){return this._cachedHeight}set height(e){e!==this._cachedHeight&&(this._cachedHeight=e,this.elementPanel.style.height=e+"px")}get resolvedElementContent(){return this._resolvedElementContent?this._resolvedElementContent:(this._resolvedElementContent=this.elementContent,this.elementContent instanceof HTMLSlotElement&&(this._resolvedElementContent=this.elementContent.assignedElements()?.[0]),this._resolvedElementContent)}panelDocked(){this.elementContent.hidden&&(this.elementContent.hidden=!1),this.elementContentContainer.parentElement!==this.dockManager.config.dialogRootElement&&this.dockManager.config.dialogRootElement.appendChild(this.elementContentContainer)}resize(e,t){this.panelDocked(),this.setVisible(!0),this._setPanelDimensions(e,t),this._cachedWidth=e,this._cachedHeight=t;try{this.elementContent!=null&&typeof this.elementContent.resizeHandler=="function"&&this.elementContent.resizeHandler(e,t-this.elementTitle.clientHeight)}catch(i){console.log("error calling resizeHandler:",i," elt:",this.elementContent)}}_setPanelDimensions(e,t){this.elementTitle.style.width=e+"px",this.elementContentHost.style.width=e+"px",this.elementContentContainer.style.width=e+"px",this.elementPanel.style.width=e+"px";let i=this.elementTitle.clientHeight,n=t-i;this.elementContentHost.style.height=n+"px",this.elementContentContainer.style.height=n+"px",this.elementPanel.style.height=t+"px",requestAnimationFrame(()=>{let o=this.elementContentWrapper.getBoundingClientRect(),s=this.dockManager.config.dialogRootElement.getBoundingClientRect();this.elementContentContainer.style.left=o.x-s.x+"px",this.elementContentContainer.style.top=o.y-s.y+"px",this.elementContentContainer.style.width=o.width+"px",this.elementContentContainer.style.height=o.height+"px"})}setDialogPosition(e,t){this.elementContentContainer.style.left=e+"px",this.elementContentContainer.style.top=t+this.elementTitle.clientHeight+"px"}setVisible(e){this.elementContentContainer.style.display=e?"block":"none"}setTitle(e){this.title=e,this._updateTitle(),this.onTitleChanged&&this.onTitleChanged(this,e)}setTitleIcon(e){this.icon=e,this._updateTitle(),this.onTitleChanged&&this.onTitleChanged(this,this.title)}setHasChanges(e){this.hasChanges=e,this._updateTitle(),e?this.elementTitleText.classList.add("panel-has-changes"):this.elementTitleText.classList.remove("panel-has-changes"),this.onTitleChanged&&this.onTitleChanged(this,this.title)}setCloseIconTemplate(e){this.elementButtonClose.innerHTML=e}_updateTitle(){if(this.icon!==null){this.elementTitleText.innerHTML='<img class="panel-titlebar-icon" src="'+this.icon+'"><span>'+this.title+"</span>";return}this.elementTitleText.innerHTML=this.title}getRawTitle(){return this.elementTitleText.innerHTML}performLayout(e,t){}onCloseButtonClicked(e){e.preventDefault(),e.stopPropagation(),this.close()}undockToBrowserDialog(){ee(this,{title:this.elementTitleText.textContent,closeCallback:()=>{this.undockedToNewBrowserWindow=!0,this.closeInternal(!1)},newWindowClosedCallback:()=>{this.undockedToNewBrowserWindow=!1,this.dockManager.notifyOnClosePanel(this)},focused:e=>{this.dockManager.activePanel=this},blured:e=>{this.dockManager.activePanel=null}})}async close(){this.closeInternal(!0)}async closeInternal(e){let t=!0;if(this.elementContentContainer.parentElement===this.dockManager.config.dialogRootElement&&(e?this.closePanelContainerCallback?t=await this.closePanelContainerCallback(this):this.dockManager.closePanelContainerCallback&&(t=await this.dockManager.closePanelContainerCallback(this)):t=!0,t))if(this.dockManager.config.dialogRootElement.removeChild(this.elementContentContainer),this.isDialog)this.floatingDialog&&this.floatingDialog.close();else{try{this.dockManager.notifyOnClosePanel(this)}catch(i){console.error(i)}this.performClose()}}};var U=class{dialog;delegate;containerElement;dockManager;topLevelElement;containerType;mouseDownHandler;touchDownHandler;minimumAllowedChildNodes;previousMousePosition;mouseMoveHandler;mouseUpHandler;iframeEventHandlers;constructor(e,t,i,n){this.dialog=e,this.delegate=t,this.containerElement=t.containerElement,this.dockManager=t.dockManager,this.topLevelElement=i,this.containerType=t.containerType,this.mouseDownHandler=new d(n,"mousedown",this.onMouseDown.bind(this)),this.touchDownHandler=new d(n,"touchstart",this.onMouseDown.bind(this)),this.topLevelElement.style.left=i.offsetLeft+"px",this.topLevelElement.style.top=i.offsetTop+"px",this.minimumAllowedChildNodes=t.minimumAllowedChildNodes,this.iframeEventHandlers=[]}destroy(){this.removeDecorator(),this.delegate.destroy()}saveState(e){this.delegate.saveState(e)}loadState(e){this.delegate.loadState(e)}setActiveChild(){}get width(){return this.delegate.width}get height(){return this.delegate.height}get name(){return this.delegate.name}set name(e){e&&(this.delegate.name=e)}resize(e,t){this.delegate.resize(e,t)}performLayout(e){this.delegate.performLayout(e,!1)}removeDecorator(){this.mouseDownHandler&&(this.mouseDownHandler.cancel(),delete this.mouseDownHandler),this.touchDownHandler&&(this.touchDownHandler.cancel(),delete this.touchDownHandler)}onMouseDown(e){if(e.button!=2&&(e.preventDefault&&e.preventDefault(),this._startDragging(e),this.previousMousePosition={x:e.clientX,y:e.clientY},this.mouseMoveHandler&&(this.mouseMoveHandler.cancel(),delete this.mouseMoveHandler),this.mouseUpHandler&&(this.mouseUpHandler.cancel(),delete this.mouseUpHandler),this.mouseMoveHandler=new d(window,"pointermove",this.onMouseMove.bind(this)),this.mouseUpHandler=new d(window,"pointerup",this.onMouseUp.bind(this)),this.dockManager.iframes))for(let t of this.dockManager.iframes){let i=this.onMouseMovedIframe.bind(this);this.iframeEventHandlers.push(new d(t.contentWindow,"pointermove",n=>i(n,t))),this.iframeEventHandlers.push(new d(t.contentWindow,"pointerup",this.onMouseUp.bind(this)))}}onMouseUp(e){this._stopDragging(e),this.mouseMoveHandler.cancel(),delete this.mouseMoveHandler,this.mouseUpHandler.cancel(),delete this.mouseUpHandler;for(let t of this.iframeEventHandlers)t.cancel();this.iframeEventHandlers=[]}_startDragging(e){this.containerElement.classList.add("draggable-dragging-active"),this.delegate.elementContentContainer.classList.add("draggable-dragging-active"),this.dialog.eventListener&&this.dialog.eventListener._onDialogDragStarted(this.dialog,e),h.disableGlobalTextSelection(this.dockManager.config.dialogRootElement)}_stopDragging(e){this.containerElement.classList.remove("draggable-dragging-active"),this.delegate.elementContentContainer.classList.remove("draggable-dragging-active"),this.dialog.eventListener&&this.dialog.eventListener._onDialogDragEnded(this.dialog,e),h.enableGlobalTextSelection(this.dockManager.config.dialogRootElement)}onMouseMovedIframe(e,t){let i=t.getBoundingClientRect();this.onMouseMove(e,{x:i.x,y:i.y})}onMouseMove(e,t){e.preventDefault&&e.preventDefault();let i=new g(e.clientX,e.clientY);t&&(i=new g(e.clientX+t.x,e.clientY+t.y));let n=this.dockManager.checkXBounds(this.topLevelElement,i,this.previousMousePosition,!1,!1),o=this.dockManager.checkYBounds(this.topLevelElement,i,this.previousMousePosition,!1,!1);this._performDrag(n,o),this.previousMousePosition=i}_performDrag(e,t){let i=e+h.getPixels(this.topLevelElement.style.left),n=t+h.getPixels(this.topLevelElement.style.top);this.topLevelElement.style.left=i+"px",this.topLevelElement.style.top=n+"px",this.dialog.panel.setDialogPosition(i,n)}};var R=class{element;handleSize;cornerSize;east;west;north;south;corner;mouseDownHandler;touchDownHandler;constructor(){this.element=void 0,this.handleSize=6,this.cornerSize=12,this.east=!1,this.west=!1,this.north=!1,this.south=!1,this.corner=!1}adjustSize(e,t){this.corner?(this.west&&(this.element.style.left="0px"),this.east&&(this.element.style.left=e-this.cornerSize+"px"),this.north&&(this.element.style.top="0px"),this.south&&(this.element.style.top=t-this.cornerSize+"px")):(this.west&&(this.element.style.left="0px",this.element.style.top=this.cornerSize+"px"),this.east&&(this.element.style.left=e-this.handleSize+"px",this.element.style.top=this.cornerSize+"px"),this.north&&(this.element.style.left=this.cornerSize+"px",this.element.style.top="0px"),this.south&&(this.element.style.left=this.cornerSize+"px",this.element.style.top=t-this.handleSize+"px"),this.west||this.east?this.element.style.height=t-this.cornerSize*2+"px":this.element.style.width=e-this.cornerSize*2+"px")}};var I=class{topLevelElement;dialog;delegate;dockManager;containerElement;containerType;minimumAllowedChildNodes;readyToProcessNextResize;dockSpawnResizedEvent;resizeHandles;previousMousePosition;iframeEventHandlers;disableResize;constructor(e,t,i,n=!1){this.dialog=e,this.disableResize=n,this.delegate=t,this.containerElement=t.containerElement,this.dockManager=t.dockManager,this.topLevelElement=i,this.containerType=t.containerType,this.topLevelElement.style.left=this.topLevelElement.offsetLeft+"px",this.topLevelElement.style.top=this.topLevelElement.offsetTop+"px",this.minimumAllowedChildNodes=t.minimumAllowedChildNodes,this._buildResizeHandles(),this.readyToProcessNextResize=!0,this.dockSpawnResizedEvent=new CustomEvent("DockSpawnResizedEvent",{composed:!0,bubbles:!0}),this.iframeEventHandlers=[]}setActiveChild(){}_buildResizeHandles(){this.resizeHandles=[],this.disableResize||(this._buildResizeHandle(!1,!0,!0,!1),this._buildResizeHandle(!0,!1,!1,!0),this._buildResizeHandle(!1,!0,!1,!0),this._buildResizeHandle(!0,!1,!1,!1),this._buildResizeHandle(!1,!0,!1,!1),this._buildResizeHandle(!1,!1,!0,!1),this._buildResizeHandle(!1,!1,!1,!0))}_buildResizeHandle(e,t,i,n){let o=new R;o.east=e,o.west=t,o.north=i,o.south=n,o.element=document.createElement("div"),this.topLevelElement.appendChild(o.element);let s="",l="";i&&(s="n"),n&&(s="s"),e&&(l="e"),t&&(l="w");let a="resize-handle-"+s+l;s.length>0&&l.length>0&&(o.corner=!0),o.element.classList.add(o.corner?"resize-handle-corner":"resize-handle"),o.element.classList.add(a),this.resizeHandles.push(o),o.mouseDownHandler=new d(o.element,"mousedown",u=>{this.onMouseDown(o,u)}),o.touchDownHandler=new d(o.element,"touchstart",u=>{this.onMouseDown(o,u)})}saveState(e){this.delegate.saveState(e)}loadState(e){this.delegate.loadState(e)}get width(){return this.delegate.width}get height(){return this.delegate.height}get name(){return this.delegate.name}set name(e){e&&(this.delegate.name=e)}resize(e,t){this.delegate.resize(e,t),this._adjustResizeHandles(e,t),document.dispatchEvent(this.dockSpawnResizedEvent)}_adjustResizeHandles(e,t){this.resizeHandles.forEach(i=>{i.adjustSize(e,t)})}performLayout(e){this.delegate.performLayout(e,!1)}destroy(){this.removeDecorator(),this.delegate.destroy()}removeDecorator(){}onMouseMovedIframe(e,t,i){let n=i.getBoundingClientRect();this.onMouseMoved(e,t,{x:n.x,y:n.y})}onMouseMoved(e,t,i){let n=null;if(t.changedTouches){if(t.changedTouches.length>1)return;n=t.changedTouches[0]}else n=t;if(!this.readyToProcessNextResize)return;this.readyToProcessNextResize=!1,this.dialog.panel&&this.dockManager.suspendLayout(this.dialog.panel);let o=new g(n.clientX,n.clientY);i&&(o=new g(n.clientX+i.x,n.clientY+i.y));let s=this.dockManager.checkXBounds(this.topLevelElement,o,this.previousMousePosition,e.west,e.east),l=this.dockManager.checkYBounds(this.topLevelElement,o,this.previousMousePosition,e.north,e.south);this._performDrag(e,s,l),this.previousMousePosition=o,this.readyToProcessNextResize=!0,this.dialog.panel&&this.dockManager.resumeLayout(this.dialog.panel),this.dockManager.notifyOnContainerResized(this)}onMouseDown(e,t){let i=null;if(t.touches){if(t.touches.length>1)return;i=t.touches[0]}else i=t;this.previousMousePosition=new g(i.clientX,i.clientY),e.mouseMoveHandler&&(e.mouseMoveHandler.cancel(),delete e.mouseMoveHandler),e.touchMoveHandler&&(e.touchMoveHandler.cancel(),delete e.touchMoveHandler),e.mouseUpHandler&&(e.mouseUpHandler.cancel(),delete e.mouseUpHandler),e.touchUpHandler&&(e.touchUpHandler.cancel(),delete e.touchUpHandler);for(let n of this.iframeEventHandlers)n.cancel();if(this.iframeEventHandlers=[],e.mouseMoveHandler=new d(window,"mousemove",n=>{this.onMouseMoved(e,n)}),e.touchMoveHandler=new d(window,"touchmove",n=>{this.onMouseMoved(e,n)}),e.mouseUpHandler=new d(window,"mouseup",n=>{this.onMouseUp(e)}),e.touchUpHandler=new d(window,"touchend",n=>{this.onMouseUp(e)}),this.dockManager.iframes)for(let n of this.dockManager.iframes){let o=this.onMouseMovedIframe.bind(this);this.iframeEventHandlers.push(new d(n.contentWindow,"mousemove",s=>o(e,s,n))),this.iframeEventHandlers.push(new d(n.contentWindow,"mouseup",s=>this.onMouseUp(e))),this.iframeEventHandlers.push(new d(n.contentWindow,"touchmove",s=>o(e,s,n))),this.iframeEventHandlers.push(new d(n.contentWindow,"touchend",s=>this.onMouseUp(e)))}h.disableGlobalTextSelection(this.dockManager.config.dialogRootElement)}onMouseUp(e){e.mouseMoveHandler.cancel(),e.touchMoveHandler.cancel(),e.mouseUpHandler.cancel(),e.touchUpHandler.cancel(),delete e.mouseMoveHandler,delete e.touchMoveHandler,delete e.mouseUpHandler,delete e.touchUpHandler;for(let t of this.iframeEventHandlers)t.cancel();this.iframeEventHandlers=[],h.enableGlobalTextSelection(this.dockManager.config.dialogRootElement)}_performDrag(e,t,i){let n={};n.left=h.getPixels(this.topLevelElement.style.left),n.top=h.getPixels(this.topLevelElement.style.top),n.width=this.topLevelElement.clientWidth,n.height=this.topLevelElement.clientHeight,e.east&&this._resizeEast(t,n),e.west&&this._resizeWest(t,n),e.north&&this._resizeNorth(i,n),e.south&&this._resizeSouth(i,n)}_resizeWest(e,t){this._resizeContainer(e,0,-e,0,t)}_resizeEast(e,t){this._resizeContainer(0,0,e,0,t)}_resizeNorth(e,t){this._resizeContainer(0,e,0,-e,t)}_resizeSouth(e,t){this._resizeContainer(0,0,0,e,t)}_resizeContainer(e,t,i,n,o){o.left+=e,o.top+=t,o.width+=i,o.height+=n;let s=50,l=50;o.width=Math.max(o.width,s),o.height=Math.max(o.height,l),this.topLevelElement.style.left=o.left+"px",this.topLevelElement.style.top=o.top+"px",this.resize(o.width,o.height)}};var E=class r{elementDialog;draggable;panel;dockManager;eventListener;position;resizable;disableResize;mouseDownHandler;onKeyPressBound;noDocking;isHidden;keyPressHandler;focusHandler;grayoutParent;contextmenuHandler;_ctxMenu;_windowsContextMenuCloseBound;constructor(e,t,i,n){this.panel=e,this.dockManager=t,this.eventListener=t,this.grayoutParent=i,this.disableResize=n,this._initialize(),this.dockManager.context.model.dialogs.push(this),this.position=t.defaultDialogPosition,this.dockManager.notifyOnCreateDialog(this),e.isDialog=!0}saveState(e,t){this.position=new g(e,t),this.dockManager.notifyOnChangeDialogPosition(this,e,t)}static fromElement(e,t){return new r(new v(document.getElementById(e),t),t,null)}_initialize(){this.panel.floatingDialog=this,this.elementDialog=Object.assign(document.createElement("div"),{floatingDialog:this}),this.elementDialog.tabIndex=0,this.elementDialog.appendChild(this.panel.elementPanel),this.draggable=new U(this,this.panel,this.elementDialog,this.panel.elementTitle),this.resizable=new I(this,this.draggable,this.draggable.topLevelElement,this.disableResize),this.dockManager.config.dialogRootElement.appendChild(this.elementDialog),this.elementDialog.classList.add("dialog-floating"),this.focusHandler=new d(this.elementDialog,"focus",this.onFocus.bind(this),!0),this.mouseDownHandler=new d(this.elementDialog,"pointerdown",this.onMouseDown.bind(this),!0),this.keyPressHandler=new d(this.elementDialog,"keypress",this.dockManager.onKeyPressBound,!0),this.contextmenuHandler=new d(this.panel.elementTitle,"contextmenu",this.oncontextMenuClicked.bind(this)),this.resize(this.panel.elementPanel.clientWidth,this.panel.elementPanel.clientHeight),this.isHidden=!1,this.grayoutParent!=null&&this.grayoutParent.grayOut(!0),this.bringToFront()}setPosition(e,t){let i=this.dockManager.config.dialogRootElement.getBoundingClientRect();this.position=new g(e-i.left,t-i.top),this.elementDialog.style.left=e-i.left+"px",this.elementDialog.style.top=t-i.top+"px",this.panel.setDialogPosition(e,t),this.dockManager.notifyOnChangeDialogPosition(this,e,t)}getPosition(){return new g(this.position?this.position.x:0,this.position?this.position.y:0)}onFocus(){this.dockManager.activePanel!=this.panel&&(this.dockManager.activePanel=this.panel)}onMouseDown(e){e.button!=2&&this.bringToFront()}destroy(){this.panel.lastDialogSize={width:this.resizable.width,height:this.resizable.height},this.focusHandler&&(this.focusHandler.cancel(),delete this.focusHandler),this.mouseDownHandler&&(this.mouseDownHandler.cancel(),delete this.mouseDownHandler),this.keyPressHandler&&(this.keyPressHandler.cancel(),delete this.keyPressHandler),this.contextmenuHandler&&(this.contextmenuHandler.cancel(),delete this.contextmenuHandler),h.removeNode(this.elementDialog),this.draggable.removeDecorator(),h.removeNode(this.panel.elementPanel),h.arrayRemove(this.dockManager.context.model.dialogs,this),delete this.panel.floatingDialog,this.grayoutParent&&this.grayoutParent.grayOut(!1)}resize(e,t){this.resizable.resize(e,t)}setTitle(e){this.panel.setTitle(e)}setTitleIcon(e){this.panel.setTitleIcon(e)}bringToFront(){this.panel.elementContentContainer.style.zIndex=this.dockManager.zIndexDialogCounter++,this.elementDialog.style.zIndex=this.dockManager.zIndexDialogCounter++,this.dockManager.activePanel=this.panel}hide(){this.elementDialog.style.zIndex="0",this.panel.elementContentContainer.style.zIndex="",this.elementDialog.style.display="none",this.isHidden||(this.isHidden=!0,this.dockManager.notifyOnHideDialog(this)),this.grayoutParent&&this.grayoutParent.grayOut(!1)}close(){this.hide(),this.remove(),this.dockManager.notifyOnClosePanel(this.panel),this.destroy()}remove(){this.elementDialog.parentNode.removeChild(this.elementDialog)}show(){this.panel.elementContentContainer.style.zIndex=this.dockManager.zIndexDialogCounter++,this.elementDialog.style.zIndex=this.dockManager.zIndexDialogCounter++,this.elementDialog.style.display="block",this.isHidden&&(this.isHidden=!1,this.dockManager.notifyOnShowDialog(this))}static createContextMenuContentCallback=(e,t)=>{if(!e.panel._hideCloseButton)return[];let i=[],n=document.createElement("div");if(n.innerText=C.getString("CloseDialog"),i.push(n),n.onclick=()=>{e.panel.close(),e.closeContextMenu()},e.dockManager.config.enableBrowserWindows){let o=document.createElement("div");o.innerText=C.getString("NewBrowserWindow"),i.push(o),o.onclick=()=>{e.panel.undockToBrowserDialog(),e.closeContextMenu()}}return i};oncontextMenuClicked(e){if(e.preventDefault(),!this._ctxMenu&&r.createContextMenuContentCallback){let t=r.createContextMenuContentCallback(this,this.dockManager.context.model.documentManagerNode.children);if(t.length==0)return;this._ctxMenu=document.createElement("div"),this._ctxMenu.className="dockspab-tab-handle-context-menu",this._ctxMenu.append(...t),this._ctxMenu.style.left=e.pageX+"px",this._ctxMenu.style.top=e.pageY+"px",document.body.appendChild(this._ctxMenu),this._windowsContextMenuCloseBound=this.windowsContextMenuClose.bind(this),window.addEventListener("pointerup",this._windowsContextMenuCloseBound)}else this.closeContextMenu()}closeContextMenu(){this._ctxMenu&&(document.body.removeChild(this._ctxMenu),delete this._ctxMenu,window.removeEventListener("pointerup",this._windowsContextMenuCloseBound))}windowsContextMenuClose(e){let t=e.composedPath();for(let i in t)if(t[i]==this._ctxMenu)return;this.closeContextMenu()}};var O=class{constructor(){this.escClosesWindow=!0,this.escClosesDialog=!0,this.dialogRootElement=document.body,this.moveOnlyWithinDockConatiner=!1,this.enableBrowserWindows=!0}escClosesWindow;escClosesDialog;dialogRootElement;moveOnlyWithinDockConatiner;enableBrowserWindows};var L=class{rootNode;documentManagerNode;dialogs;constructor(){this.rootNode=this.documentManagerNode=void 0}};var w=class{parent;container;children;constructor(e){this.container=e,this.children=[]}detachFromParent(){this.parent&&(this.parent.removeChild(this),delete this.parent)}removeChild(e){let t=this.children.indexOf(e);t>=0&&this.children.splice(t,1)}addChild(e){e.detachFromParent(),e.parent=this,this.children.push(e)}addChildBefore(e,t){this._addChildWithDirection(e,t,!0)}addChildAfter(e,t){this._addChildWithDirection(e,t,!1)}_addChildWithDirection(e,t,i){t.detachFromParent(),t.parent=this;let n=this.children.indexOf(e),o=this.children.slice(0,n),s=this.children.slice(n+1,this.children.length);this.children=o.slice(0),i?(this.children.push(t),this.children.push(e)):(this.children.push(e),this.children.push(t)),Array.prototype.push.apply(this.children,s)}performLayout(e){let t=this.children.map(i=>i.container);this.container.performLayout(t,e)}debugDumpTree(e){e===void 0&&(e=0);let t=this.container.name;for(let n=0;n<e;n++)t=" "+t;let i=this.parent===void 0?"null":this.parent.container.containerType;console.log(">>"+t+" ["+i+"]"),this.children.forEach(n=>{n.debugDumpTree(e+1)})}};var A=class{previousContainer;nextContainer;stackedVertical;barElement;pointerDownHandler;minPanelSize;readyToProcessNextDrag;dockSpawnResizedEvent;previousMouseEvent;pointerMovedHandler;pointerUpHandler;iframeEventHandlers;constructor(e,t,i){this.previousContainer=e,this.nextContainer=t,this.stackedVertical=i,this.barElement=document.createElement("div"),this.barElement.classList.add(i?"splitbar-horizontal":"splitbar-vertical"),this.pointerDownHandler=new d(this.barElement,"pointerdown",this.onPointerDown.bind(this)),this.minPanelSize=50,this.readyToProcessNextDrag=!0,this.dockSpawnResizedEvent=new CustomEvent("DockSpawnResizedEvent",{composed:!0,bubbles:!0}),this.iframeEventHandlers=[]}onPointerDown(e){this.barElement.setPointerCapture(e.pointerId),this._startDragging(e)}onPointerUp(e){this.barElement.releasePointerCapture(e.pointerId),this._stopDragging()}onPointerMovedIframe(e,t){e.changedTouches!=null&&(e=e.changedTouches[0]);let i=t.getBoundingClientRect();this.handleMoveEvent({x:parseInt(""+e.clientX+i.x),y:parseInt(""+e.clientY+i.y)})}onPointerMoved(e){e.changedTouches!=null&&(e=e.changedTouches[0]),this.handleMoveEvent({x:parseInt(""+e.clientX),y:parseInt(""+e.clientY)})}handleMoveEvent(e){if(!this.readyToProcessNextDrag)return;this.readyToProcessNextDrag=!1;let t=this.previousContainer.dockManager;t.suspendLayout(this.previousContainer),t.suspendLayout(this.nextContainer);let i=e.x-this.previousMouseEvent.x,n=e.y-this.previousMouseEvent.y;this._performDrag(i,n),this.previousMouseEvent=e,this.readyToProcessNextDrag=!0,t.resumeLayout(this.previousContainer),t.resumeLayout(this.nextContainer)}_performDrag(e,t){let i=this.previousContainer.containerElement.clientWidth,n=this.previousContainer.containerElement.clientHeight,o=this.nextContainer.containerElement.clientWidth,s=this.nextContainer.containerElement.clientHeight,l=this.stackedVertical?n:i,a=this.stackedVertical?s:o,u=this.stackedVertical?t:e,c=l+u,f=a-u;(c<this.minPanelSize||f<this.minPanelSize)&&!(c<this.minPanelSize&&c>l||f<this.minPanelSize&&f>a)||(this.stackedVertical?(this.previousContainer.resize(i,c),this.nextContainer.resize(o,f)):u<0?(this.previousContainer.resize(c,n),this.nextContainer.resize(f,s)):(this.nextContainer.resize(f,s),this.previousContainer.resize(c,n),this.nextContainer.resize(f,s)),document.dispatchEvent(this.dockSpawnResizedEvent))}_startDragging(e){if(h.disableGlobalTextSelection(this.previousContainer.dockManager.config.dialogRootElement),this.pointerMovedHandler&&(this.pointerMovedHandler.cancel(),delete this.pointerMovedHandler),this.pointerUpHandler&&(this.pointerUpHandler.cancel(),delete this.pointerUpHandler),this.pointerMovedHandler=new d(window,"pointermove",this.onPointerMoved.bind(this)),this.pointerUpHandler=new d(window,"pointerup",this.onPointerUp.bind(this)),this.previousContainer.dockManager.iframes)for(let t of this.previousContainer.dockManager.iframes){let i=this.onPointerMovedIframe.bind(this);this.iframeEventHandlers.push(new d(t.contentWindow,"pointermove",n=>i(n,t))),this.iframeEventHandlers.push(new d(t.contentWindow,"pointerup",this.onPointerUp.bind(this)))}this.previousMouseEvent={x:e.clientX,y:e.clientY}}_stopDragging(){h.enableGlobalTextSelection(this.previousContainer.dockManager.config.dialogRootElement),this.pointerMovedHandler&&(this.pointerMovedHandler.cancel(),delete this.pointerMovedHandler),this.pointerUpHandler&&(this.pointerUpHandler.cancel(),delete this.pointerUpHandler);for(let e of this.iframeEventHandlers)e.cancel();this.iframeEventHandlers=[]}};var F=class{panelElement;spiltterBars;stackedVertical;childContainers;constructor(e,t){this.childContainers=e,this.stackedVertical=t,this.panelElement=document.createElement("div"),this.spiltterBars=[],this._buildSplitterDOMAndAddElements()}_buildSplitterDOMAndAddElements(){if(this.childContainers.length<=1)throw new Error("Splitter panel should contain atleast 2 panels");this.spiltterBars=[];let e=null;for(let i=0;i<this.childContainers.length-1;i++){let n=this.childContainers[i],o=this.childContainers[i+1],s=new A(n,o,this.stackedVertical);this.spiltterBars.push(s),Array.from(this.panelElement.children).includes(n.containerElement)||this._insertContainerIntoPanel(n,e),this.panelElement.insertBefore(s.barElement,n.containerElement.nextSibling),e=s.barElement}let t=this.childContainers.slice(-1)[0];Array.from(this.panelElement.children).includes(t.containerElement)||this._insertContainerIntoPanel(t,e)}performLayout(e,t){(!h.arrayEqual(this.childContainers,e)||t)&&(this.childContainers.forEach(n=>{e.some(o=>o==n)||n.containerElement&&(n.containerElement.classList.remove("splitter-container-vertical"),n.containerElement.classList.remove("splitter-container-horizontal"),h.removeNode(n.containerElement))}),this.spiltterBars.forEach(n=>{h.removeNode(n.barElement)}),this.childContainers=e,this._buildSplitterDOMAndAddElements())}removeFromDOM(){this.childContainers.forEach(e=>{e.containerElement&&(e.containerElement.classList.remove("splitter-container-vertical"),e.containerElement.classList.remove("splitter-container-horizontal"),h.removeNode(e.containerElement))}),this.spiltterBars.forEach(e=>{h.removeNode(e.barElement)})}destroy(){this.removeFromDOM(),this.panelElement.parentNode.removeChild(this.panelElement)}_insertContainerIntoPanel(e,t){if(!e){console.error("container is undefined");return}e.containerElement.parentNode!=this.panelElement&&(h.removeNode(e.containerElement),t?this.panelElement.insertBefore(e.containerElement,t.nextSibling):this.panelElement.children.length>0?this.panelElement.insertBefore(e.containerElement,this.panelElement.children[0]):this.panelElement.appendChild(e.containerElement)),e.containerElement.classList.add(this.stackedVertical?"splitter-container-vertical":"splitter-container-horizontal")}setContainerRatio(e,t){let i=this.stackedVertical?this.panelElement.clientHeight:this.panelElement.clientWidth,n=i*t,o=this.stackedVertical?this.spiltterBars[0].barElement.clientHeight:this.spiltterBars[0].barElement.clientWidth,l=(i-n-o*this.spiltterBars.length)/i;for(let a=0;a<this.childContainers.length;a++){let u=this.childContainers[a],c;u!==e?(c=this.stackedVertical?u.containerElement.parentElement.clientHeight:u.containerElement.parentElement.clientWidth,c*=l):c=n,this.stackedVertical?u.resize(u.width,Math.floor(c)):u.resize(Math.floor(c),u.height)}}getRatios(){let e=this.stackedVertical?this.spiltterBars[0].barElement.clientHeight:this.spiltterBars[0].barElement.clientWidth,t=(this.stackedVertical?this.panelElement.clientHeight:this.panelElement.clientWidth)-e*this.spiltterBars.length,i=[];for(let n=0;n<this.childContainers.length;n++){let o=this.childContainers[n],s=this.stackedVertical?o.containerElement.clientHeight:o.containerElement.clientWidth;i.push(s/t)}return i}setRatios(e){let t=this.stackedVertical?this.spiltterBars[0].barElement.clientHeight:this.spiltterBars[0].barElement.clientWidth,i=(this.stackedVertical?this.panelElement.clientHeight:this.panelElement.clientWidth)-t*this.spiltterBars.length;for(let n=0;n<this.childContainers.length;n++){let o=this.childContainers[n],s=i*e[n];this.stackedVertical?o.resize(o.width,Math.floor(s)):o.resize(Math.floor(s),o.height)}}resize(e,t){if(this.childContainers.length<=1)return;this.panelElement.style.width=e+"px",this.panelElement.style.height=t+"px";let i;for(i=0;i<this.childContainers.length;i++){let c=this.childContainers[i];if(this.stackedVertical?c.resize(e,c.height?c.height:t):c.resize(c.width?c.width:e,t),i<this.spiltterBars.length){let f=this.spiltterBars[i];this.stackedVertical?f.barElement.style.width=e+"px":f.barElement.style.height=t+"px"}}let n=0;this.childContainers.forEach(c=>{let f=this.stackedVertical?c.height:c.width;n+=f});let o=this.spiltterBars[0].barElement.getBoundingClientRect(),s=this.stackedVertical?o.height:o.width,l=this.stackedVertical?t:e;l-=s*this.spiltterBars.length,n=Math.max(n,1);let a=l/n,u=0;for(i=0;i<this.childContainers.length;i++){let c=this.childContainers[i];c.containerElement.style.display=="none"&&(c.containerElement.style.display="block");let f=this.stackedVertical?c.containerElement.clientHeight:c.containerElement.clientWidth,m=a>1?Math.floor(f*a):Math.ceil(f*a);u+=m,i===this.childContainers.length-1&&(m+=l-u),this.stackedVertical?c.resize(c.width,m):c.resize(m,c.height)}}};var B=class{name;dockManager;minimumAllowedChildNodes;splitterPanel;stackedVertical;containerElement;_cachedWidth;_cachedHeight;state;containerType;constructor(e,t,i,n){arguments.length!==0&&(this.name=e,this.dockManager=t,this.stackedVertical=n,this.splitterPanel=new F(i,this.stackedVertical),this.containerElement=this.splitterPanel.panelElement,this.minimumAllowedChildNodes=2)}resize(e,t){this.splitterPanel.resize(e,t),this._cachedWidth=e,this._cachedHeight=t}performLayout(e,t=!1){this.splitterPanel.performLayout(e,t)}setActiveChild(){}destroy(){this.splitterPanel.destroy()}setContainerRatio(e,t){this.splitterPanel.setContainerRatio(e,t),this.resize(this.width,this.height)}getRatios(){return this.splitterPanel.getRatios()}setRatios(e){this.splitterPanel.setRatios(e),this.resize(this.width,this.height)}saveState(e){e.width=this.width,e.height=this.height}loadState(e){this.state={width:e.width,height:e.height}}get width(){return this._cachedWidth===void 0&&(this._cachedWidth=this.splitterPanel.panelElement.clientWidth),this._cachedWidth}get height(){return this._cachedHeight===void 0&&(this._cachedHeight=this.splitterPanel.panelElement.clientHeight),this._cachedHeight}};var z=class extends B{constructor(e,t){super(h.getNextId("horizontal_splitter_"),e,t,!1),this.containerType=y.horizontal}};var S=class extends B{constructor(e,t){super(h.getNextId("vertical_splitter_"),e,t,!0),this.containerType=y.vertical}};var V=class r{parent;elementBase;elementText;elementCloseButton;undockInitiator;mouseDownHandler;touchDownHandler;closeButtonHandler;closeButtonTouchHandler;auxClickHandler;contextMenuHandler;mouseMoveHandler;touchMoveHandler;mouseUpHandler;touchUpHandler;stargDragPosition;dragged;eventListeners;undockListener;prev;current;direction;_ctxMenu;_windowsContextMenuCloseBound;constructor(e){this.parent=e;let t=this._performUndock.bind(this);this.elementBase=document.createElement("div"),this.elementText=document.createElement("div"),this.elementCloseButton=document.createElement("div"),this.elementBase.classList.add("dockspan-tab-handle"),this.elementBase.classList.add("disable-selection"),this.elementText.classList.add("dockspan-tab-handle-text"),this.elementCloseButton.classList.add("dockspan-tab-handle-close-button"),this.elementBase.appendChild(this.elementText),this.parent.host.displayCloseButton&&this.elementBase.appendChild(this.elementCloseButton),(this.parent.container._hideCloseButton||this.parent.container._grayOut)&&(this.elementCloseButton.style.display="none"),this.parent.host.tabListElement.appendChild(this.elementBase);let i=e.container,n=i.getRawTitle();this.undockListener={onDockEnabled:o=>{this.undockEnabled(o.state)},onHideCloseButton:o=>{this.hideCloseButton(o.state)}},this.eventListeners=[],i.addListener(this.undockListener),this.elementText.innerHTML=n,this.elementText.title=this.elementText.innerText,this.undockInitiator=new T(this.elementBase,t),this.undockInitiator.enabled=!0,this.mouseDownHandler=new d(this.elementBase,"mousedown",this.onMouseDown.bind(this)),this.touchDownHandler=new d(this.elementBase,"touchstart",this.onMouseDown.bind(this),{passive:!1}),this.closeButtonHandler=new d(this.elementCloseButton,"click",this.onCloseButtonClicked.bind(this)),this.closeButtonTouchHandler=new d(this.elementCloseButton,"touchstart",this.onCloseButtonClicked.bind(this)),this.auxClickHandler=new d(this.elementBase,"auxclick",this.onCloseButtonClicked.bind(this)),i.panelType==x.document&&(this.contextMenuHandler=new d(this.elementBase,"contextmenu",this.oncontextMenuClicked.bind(this))),this.windowsContextMenuClose=this.windowsContextMenuClose.bind(this)}addListener(e){this.eventListeners.push(e)}removeListener(e){this.eventListeners.splice(this.eventListeners.indexOf(e),1)}undockEnabled(e){this.undockInitiator.enabled=e}static createContextMenuContentCallback=(e,t)=>{let i=[],n=document.createElement("div");n.innerText=C.getString("CloseAll"),i.push(n),n.onclick=()=>{let s=t.length;for(let l=s-1;l>=0;l--){let a=t[l].container;a.panelType==x.document&&a.close()}e.closeContextMenu()};let o=document.createElement("div");if(o.innerText=C.getString("CloseAllButThis"),i.push(o),o.onclick=()=>{let s=t.length;for(let l=s-1;l>=0;l--){let a=t[l].container;e.parent.container!=a&&a.panelType==x.document&&a.close()}e.closeContextMenu()},e.parent.container.dockManager.config.enableBrowserWindows){let s=document.createElement("div");s.innerText=C.getString("NewBrowserWindow"),i.push(s),s.onclick=()=>{e.parent.container.undockToBrowserDialog(),e.closeContextMenu()}}return i};oncontextMenuClicked(e){if(e.preventDefault(),!this._ctxMenu&&r.createContextMenuContentCallback){let t=r.createContextMenuContentCallback(this,this.parent.container.dockManager.context.model.documentManagerNode.children);if(t.length==0)return;this._ctxMenu=document.createElement("div"),this._ctxMenu.className="dockspab-tab-handle-context-menu",this._ctxMenu.append(...t),this._ctxMenu.style.left=e.pageX+"px",this._ctxMenu.style.top=e.pageY+"px",document.body.appendChild(this._ctxMenu),window.addEventListener("mouseup",this.windowsContextMenuClose)}else this.closeContextMenu()}closeContextMenu(){this._ctxMenu&&(document.body.removeChild(this._ctxMenu),delete this._ctxMenu,window.removeEventListener("mouseup",this.windowsContextMenuClose))}windowsContextMenuClose(e){let t=e.composedPath();for(let i in t)if(t[i]==this._ctxMenu)return;this.closeContextMenu()}onMouseDown(e){e.preventDefault(),this.parent.onSelected(),this.mouseMoveHandler&&(this.mouseMoveHandler.cancel(),delete this.mouseMoveHandler),this.touchMoveHandler&&(this.touchMoveHandler.cancel(),delete this.touchMoveHandler),this.mouseUpHandler&&(this.mouseUpHandler.cancel(),delete this.mouseUpHandler),this.touchUpHandler&&(this.touchUpHandler.cancel(),delete this.touchUpHandler),this.stargDragPosition=e.clientX,this.mouseMoveHandler=new d(window,"mousemove",this.onMouseMove.bind(this)),this.touchMoveHandler=new d(window,"touchmove",this.onMouseMove.bind(this),{passive:!1}),this.mouseUpHandler=new d(window,"mouseup",this.onMouseUp.bind(this)),this.touchUpHandler=new d(window,"touchend",this.onMouseUp.bind(this))}onMouseUp(){this.elementBase&&this.elementBase.classList.remove("dockspan-tab-handle-dragged"),this.dragged=!1,this.mouseMoveHandler&&this.mouseMoveHandler.cancel(),this.touchMoveHandler&&this.touchMoveHandler.cancel(),this.mouseUpHandler&&this.mouseUpHandler.cancel(),this.touchUpHandler&&this.touchUpHandler.cancel(),delete this.mouseMoveHandler,delete this.touchMoveHandler,delete this.mouseUpHandler,delete this.touchUpHandler}moveTabEvent(e,t){e.eventListeners.forEach(i=>{i.onMoveTab&&i.onMoveTab({self:e,state:t})})}onMouseMove(e){if(e.preventDefault(),e.buttons==0){this.onMouseUp();return}if(!(Math.abs(this.stargDragPosition-e.clientX)<10)&&this.elementBase!=null){this.elementBase.classList.add("dockspan-tab-handle-dragged"),this.dragged=!0,this.prev=this.current,this.current=e.clientX,this.direction=this.current-this.prev;let t=this.elementBase.getBoundingClientRect(),i=this.direction<0?{state:"left",bound:t.left,rect:t}:{state:"right",bound:t.right,rect:t};(e.clientX<t.left&&this.direction<0||e.clientX>t.left+t.width&&this.direction>0)&&this.moveTabEvent(this,i.state)}}hideCloseButton(e){this.elementCloseButton.style.display=e?"none":"block"}updateTitle(){if(this.parent.container instanceof v){let t=this.parent.container.getRawTitle();this.elementText.innerHTML=t}}destroy(){this.parent.container.removeListener(this.undockListener),this.mouseDownHandler.cancel(),this.touchDownHandler.cancel(),this.closeButtonHandler.cancel(),this.closeButtonTouchHandler.cancel(),this.auxClickHandler.cancel(),this.mouseMoveHandler&&this.mouseMoveHandler.cancel(),this.touchMoveHandler&&this.touchMoveHandler.cancel(),this.mouseUpHandler&&this.mouseUpHandler.cancel(),this.touchUpHandler&&this.touchUpHandler.cancel(),this.contextMenuHandler&&this.contextMenuHandler.cancel(),this.elementBase&&(h.removeNode(this.elementBase),delete this.elementBase),this.elementCloseButton&&(h.removeNode(this.elementCloseButton),delete this.elementCloseButton)}_performUndock(e,t){return this.parent.container.containerType==="panel"?(this.undockInitiator.enabled=!1,this.parent.container.performUndockToDialog(e,t)):null}onCloseButtonClicked(e){this.elementCloseButton.style.display!=="none"&&e.button!==2&&this.parent.container.containerType==="panel"&&this.parent.container.close()}setSelected(e){e?this.elementBase.classList.add("dockspan-tab-handle-selected"):(this.elementBase.classList.remove("dockspan-tab-handle-selected"),this.elementBase.classList.remove("dockspan-tab-handle-active"))}setActive(e){this.elementBase&&(e?this.elementBase.classList.add("dockspan-tab-handle-active"):this.elementBase.classList.remove("dockspan-tab-handle-active"))}};var W=class{selected;host;container;panel;handle;containerElement;_initContent;constructor(e,t){arguments.length!==0&&(this.selected=!1,this.host=e,this.container=t,this.handle=new V(this),this.containerElement=t.containerElement,t instanceof v&&(this.panel=t,this.panel.onTitleChanged=this.onTitleChanged.bind(this),this.onTitleChanged()),t.tabPage=this)}onTitleChanged(){this.handle.updateTitle(),this.panel&&(this.panel.hasChanges?this.handle.elementText.classList.add("panel-has-changes"):this.handle.elementText.classList.remove("panel-has-changes"))}destroy(){if(this.handle.destroy(),this.container instanceof v){let e=this.container;delete e.onTitleChanged}this.host.dockManager.activePanel==this.panel&&(this.host.dockManager.activePanel=null),this.container.tabPage=null,h.removeNode(this.containerElement)}onSelected(){this.host.onTabPageSelected(this,!0),this.container instanceof v&&this.container.dockManager.notifyOnTabChange(this)}setSelected(e,t){if(this.selected=e,this.handle.setSelected(e),this._initContent||this.host.contentElement.appendChild(this.containerElement),this._initContent=!0,this.selected){this.containerElement.style.display="block",this.panel.setVisible(!0);let i=this.host.contentElement.clientWidth,n=this.host.contentElement.clientHeight;this.container.resize(i,n),t&&(this.host.dockManager.activePanel=this.container)}else this.containerElement.style.display="none",this.panel.setVisible(!1)}resize(e,t){this.container.resize(e,t)}};var q=class{displayCloseButton;dockManager;tabStripDirection;hostElement;tabListElement;separatorElement;contentElement;createTabPage;tabHandleListener;eventListeners;pages;activeTab;_resizeRequested;mouseDownHandler;focusHandler;constructor(e,t,i){if(t===void 0&&(t=M.BOTTOM),i===void 0&&(i=!1),this.dockManager=e,this.tabStripDirection=t,this.displayCloseButton=i,this.pages=[],this.eventListeners=[],this.tabHandleListener={onMoveTab:n=>{this.onMoveTab(n)}},this.hostElement=document.createElement("div"),this.tabListElement=document.createElement("div"),this.separatorElement=document.createElement("div"),this.contentElement=document.createElement("div"),this.contentElement.tabIndex=0,this.createTabPage=this._createDefaultTabPage,this.tabStripDirection===M.BOTTOM)this.hostElement.appendChild(this.contentElement),this.hostElement.appendChild(this.separatorElement),this.hostElement.appendChild(this.tabListElement);else if(this.tabStripDirection===M.TOP)this.hostElement.appendChild(this.tabListElement),this.hostElement.appendChild(this.separatorElement),this.hostElement.appendChild(this.contentElement);else throw new Error("Only top and bottom tab strip orientations are supported");this.hostElement.classList.add("dockspan-tab-host"),this.tabListElement.classList.add("dockspan-tab-handle-list-container"),this.separatorElement.classList.add("dockspan-tab-handle-content-seperator"),this.contentElement.classList.add("dockspan-tab-content"),this.contentElement.tabIndex=0,this.focusHandler=new d(this.contentElement,"focus",this.onFocus.bind(this),!0),this.mouseDownHandler=new d(this.contentElement,"mousedown",this.onMousedown.bind(this),!0)}onFocus(){this.activeTab&&this.dockManager.activePanel!=this.activeTab.panel&&(this.dockManager.activePanel=this.activeTab.panel)}setActive(e){e?this.separatorElement.classList.add("dockspan-tab-handle-content-seperator-active"):this.separatorElement.classList.remove("dockspan-tab-handle-content-seperator-active"),this.activeTab&&this.activeTab.handle.setActive(e)}onMousedown(){this.activeTab&&this.dockManager.activePanel!=this.activeTab.panel&&(this.dockManager.activePanel=this.activeTab.panel)}onMoveTab(e){let t=Array.prototype.slice.call(this.tabListElement.childNodes).indexOf(e.self.elementBase);this.change(this,e.self,e.state,t)}performTabsLayout(e){this.pages=h.orderByIndexes(this.pages,e);let t=this.tabListElement.childNodes,i=[];for(let n in t)t[n].nodeType===1&&i.push(t[n]);i=h.orderByIndexes(i,e);for(let n=0;n<i.length;++n)this.tabListElement.appendChild(i[n]);this.activeTab&&this.onTabPageSelected(this.activeTab,!1)}getActiveTab(){return this.activeTab}addListener(e){this.eventListeners.push(e)}removeListener(e){this.eventListeners.splice(this.eventListeners.indexOf(e),1)}change(e,t,i,n){this.eventListeners.forEach(o=>{o.onChange&&o.onChange({host:e,handle:t,state:i,index:n})})}_createDefaultTabPage(e,t){return new W(e,t)}setActiveTab(e){let t;this.pages.forEach(i=>{i.container===e&&(t=i)}),this.pages.length>0&&t&&(this.onTabPageSelected(t,!0),this.dockManager.activePanel=e)}resize(e,t){this.hostElement.style.width=e+"px",this.hostElement.style.height=t+"px";let i=this.tabListElement.clientHeight;this._resizeRequested||requestAnimationFrame(()=>this.resizeTabListElement(e,t)),this._resizeRequested=!0;let n=this.separatorElement.clientHeight,o=t-i-n;this.contentElement.style.height=o+"px",this.activeTab&&this.activeTab.resize(e,o)}resizeTabListElement(e,t){if(this._resizeRequested=!1,this.pages.length===0)return;let i=0;this.pages.forEach(o=>{let s=o.handle;s.elementBase!=null&&(s.elementBase.style.width="",i+=s.elementBase.clientWidth)});let n=e/i;n>1.2||this.pages.forEach((o,s)=>{let l=o.handle,a=n*l.elementBase.clientWidth;s===this.pages.length-1&&(a=a-5),l.elementBase.style.width=a+"px"})}performLayout(e){this.pages.forEach(n=>{if(!e.some(o=>o==n.container)){n.handle.removeListener(this.tabHandleListener),n.destroy();let o=this.pages.indexOf(n);o>-1&&this.pages.splice(o,1)}});let t=this.activeTab;delete this.activeTab;let i=e.filter(n=>n.containerType==="panel");i.length>0?(i.forEach(n=>{let o=null;this.pages.some(s=>s.container==n?(o=s,!0):!1)||(o=this.createTabPage(this,n),o.handle.addListener(this.tabHandleListener),this.pages.push(o)),t&&o.container===t.container&&(this.activeTab=o)}),this._setTabHandlesVisible(!0)):this._setTabHandlesVisible(!1),this.activeTab&&this.onTabPageSelected(this.activeTab,!1)}_setTabHandlesVisible(e){e?(this.tabListElement.classList.add("dockspan-tab-handle-list-container-visible"),this.separatorElement.classList.add("dockspan-tab-handle-content-seperator-visible")):(this.tabListElement.classList.remove("dockspan-tab-handle-list-container-visible"),this.separatorElement.classList.remove("dockspan-tab-handle-content-seperator-visible"))}onTabPageSelected(e,t){this.activeTab=e,this.pages.forEach(i=>{let n=i===e;i.setSelected(n,t)})}};var b=class{dockManager;tabOrientation;name;element;containerElement;containerType;minimumAllowedChildNodes;tabHost;tabHostListener;state;constructor(e,t){t===void 0&&(t=M.BOTTOM),this.dockManager=e,this.tabOrientation=t,this.name=h.getNextId("fill_"),this.element=document.createElement("div"),this.containerElement=this.element,this.containerType=y.fill,this.minimumAllowedChildNodes=2,this.element.classList.add("dock-container"),this.element.classList.add("dock-container-fill"),this.tabHost=new q(e,this.tabOrientation),this.tabHostListener={onChange:i=>{this.dockManager._requestTabReorder(this,i)}},this.tabHost.addListener(this.tabHostListener),this.element.appendChild(this.tabHost.hostElement)}setActiveChild(e){this.tabHost.setActiveTab(e)}resize(e,t){this.element.style.width=e+"px",this.element.style.height=t+"px",this.tabHost.resize(e,t)}performLayout(e){this.tabHost.performLayout(e)}destroy(){this.tabHost.pages.forEach(e=>e.destroy()),h.removeNode(this.element)&&delete this.element}saveState(e){e.width=this.width,e.height=this.height}loadState(e){this.state={width:e.width,height:e.height}}get width(){return this.element.clientWidth}set width(e){this.element.style.width=e+"px"}get height(){return this.element.clientHeight}set height(e){this.element.style.height=e+"px"}};var X=class extends W{constructor(e,t){super(e,t),this.container.containerType==="panel"&&(this.panel=t,this.containerElement=this.panel.elementContentWrapper,h.removeNode(this.containerElement))}destroy(){super.destroy(),this.panel.elementContentHost.appendChild(this.containerElement)}};var D=class extends b{constructor(e){super(e,M.TOP),this.minimumAllowedChildNodes=0,this.element.classList.add("document-manager"),this.tabHost.createTabPage=this._createDocumentTabPage,this.tabHost.displayCloseButton=!0}_createDocumentTabPage(e,t){return new X(e,t)}saveState(e){super.saveState(e),e.documentManager=!0}selectedTab(){return this.tabHost.activeTab}};var Y=class{dockManager;documentManagerNode;constructor(e){this.dockManager=e}async deserialize(e){let t=JSON.parse(e),i=new L;return i.rootNode=await this._buildGraph(t.graphInfo),i.dialogs=await this._buildDialogs(t.dialogsInfo),i.documentManagerNode=this.documentManagerNode,i}async _buildGraph(e){let t=e.children,i=[];for(let s of t){let l=await this._buildGraph(s);l!==null&&i.push(l)}let n=await this._createContainer(e,i);if(n===null)return null;let o=new w(n);n instanceof D&&(this.documentManagerNode=o),o.children=i;for(let s of o.children.reverse())s.parent=o;return o.children.reverse(),o}async _createContainer(e,t){let i=e.containerType,n=e.state,o,s=[];for(let l of t)s.push(l.container);if(i==="panel"){if(o=await v.loadFromState(n,this.dockManager),!o.prepareForDocking)return null;o.prepareForDocking(),h.removeNode(o.elementPanel)}else if(i==="horizontal")o=new z(this.dockManager,s);else if(i==="vertical")o=new S(this.dockManager,s);else if(i==="fill")n.documentManager?o=new D(this.dockManager):o=new b(this.dockManager);else throw new Error("Cannot create dock container of unknown type: "+i);return o.loadState(n),o}async _buildDialogs(e){let t=[];for(let i of e){let n=i.containerType,o=i.state,s;if(n==="panel"&&(s=await v.loadFromState(o,this.dockManager),s.prepareForDocking)){h.removeNode(s.elementPanel),s.isDialog=!0;let l=new E(s,this.dockManager);(i.position.x>document.body.clientWidth||i.position.y>document.body.clientHeight-70)&&(i.position.x=20,i.position.y=70),l.setPosition(i.position.x,i.position.y),l.isHidden=i.isHidden,l.isHidden&&l.hide(),t.push(l)}}return t}};var G=class{serialize(e){let t=this._buildGraphInfo(e.rootNode),i=this._buildDialogsInfo(e.dialogs.sort((n,o)=>n.elementDialog.style.zIndex-o.elementDialog.style.zIndex));return JSON.stringify({graphInfo:t,dialogsInfo:i})}_buildGraphInfo(e){let t={};e.container.saveState(t);let i=[];return e.children.forEach(o=>{i.push(this._buildGraphInfo(o))}),{containerType:e.container.containerType,state:t,children:i}}_buildDialogsInfo(e){let t=[];return e.forEach(i=>{let n={},o=i.panel;o.saveState(n);let s={containerType:o.containerType,state:n,position:i.getPosition(),isHidden:i.isHidden};t.push(s)}),t}};var K=class{dockManager;constructor(e){this.dockManager=e}dockLeft(e,t){this._performDock(e,t,"horizontal",!0)}dockRight(e,t){this._performDock(e,t,"horizontal",!1)}dockUp(e,t){this._performDock(e,t,"vertical",!0)}dockDown(e,t){this._performDock(e,t,"vertical",!1)}dockFill(e,t){this._performDock(e,t,"fill",!1)}undock(e){let t=e.parent;if(!t)throw new Error("Cannot undock. panel is not a leaf node");let i=t.children.indexOf(e);if(e.detachFromParent(),t.children.length<t.container.minimumAllowedChildNodes){let n=t.parent;for(let o=0;o<t.children.length;o++){let s=t.children[o];if(n){n.addChildAfter(t,s),t.detachFromParent();let l=t.container.containerElement.clientWidth,a=t.container.containerElement.clientHeight;t.container.destroy(),s.container.resize(l,a),n.performLayout(!1)}else t.detachFromParent(),t.container.destroy(),this.dockManager.setRootNode(s)}}else if(t.performLayout(!1),t.children.length>0){let n=t.children[Math.max(0,i-1)];t.container.setActiveChild(n.container)}this.dockManager.invalidate(),this.dockManager.notifyOnUnDock(e)}close(e){let t=e?.parent;if(!t)throw new Error("Cannot undock. panel is not a leaf node");let i=!1;t.children.length>0&&t.container.tabHost!=null&&(i=t.container.tabHost.getActiveTab().container==e.container);let n=t.children.indexOf(e);if(e.detachFromParent(),t.children.length<t.container.minimumAllowedChildNodes){let o=t.parent;for(let s=0;s<t.children.length;s++){let l=t.children[s];if(o){o.addChildAfter(t,l),t.detachFromParent();let a=t.container.containerElement.clientWidth,u=t.container.containerElement.clientHeight;l.container.resize(a,u),t.container.destroy(),o.performLayout(!1)}else t.detachFromParent(),t.container.destroy(),this.dockManager.setRootNode(l)}}else if(t.performLayout(!1),i){let o=t.children[Math.max(0,n-1)];o!=null&&t.container.setActiveChild(o.container)}this.dockManager.invalidate(),this.dockManager.notifyOnUnDock(e)}reorderTabs(e,t,i,n){let o=e.children.length,s=i==="left"?n:n+1;if(i=="right"&&s>=e.children.length||i=="left"&&s==0)return;let l=Array.apply(null,{length:o}).map(Number.call,Number),a=l.splice(s,1)[0];l.splice(i==="left"?n-1:n,0,a),e.children=h.orderByIndexes(e.children,l),e.container.tabHost.performTabsLayout(l),this.dockManager.notifyOnTabsReorder(e)}_performDock(e,t,i,n){if(e.parent&&e.parent.container.containerType==="fill"&&(e=e.parent),i==="fill"&&e.container.containerType==="fill"){e.addChild(t),e.performLayout(!1),e.container.setActiveChild(t.container),this.dockManager.invalidate(),this.dockManager.notifyOnDock(t);return}let o=this.dockManager.context.model,s,l,a;if(e===o.rootNode){n?(s=this._createDockContainer(i,t,e),l=new w(s),l.addChild(t),l.addChild(e)):(s=this._createDockContainer(i,e,t),l=new w(s),l.addChild(e),l.addChild(t)),this.dockManager.setRootNode(l),this.dockManager.rebuildLayout(this.dockManager.context.model.rootNode),l.container.setActiveChild(t.container),this.dockManager.invalidate(),this.dockManager.notifyOnDock(t);return}if(e.parent.container.containerType!==i){a=e.parent;let f=e.container.containerElement.clientWidth,m=e.container.containerElement.clientHeight,k=a.container.containerElement.clientWidth,_=a.container.containerElement.clientHeight;s=this._createDockContainer(i,t,e),l=new w(s),a.addChildAfter(e,l),e.detachFromParent(),h.removeNode(e.container.containerElement),n?(l.addChild(t),l.addChild(e)):(l.addChild(e),l.addChild(t)),a.performLayout(!1),l.performLayout(!0),l.container.setActiveChild(t.container),l.container.resize(f,m),a.container.resize(k,_)}else a=e.parent,n?a.addChildBefore(e,t):a.addChildAfter(e,t),a.performLayout(!1),a.container.setActiveChild(t.container);let u=t.container.containerElement.clientWidth,c=t.container.containerElement.clientHeight;t.container.resize(u,c),this.dockManager.invalidate(),this.dockManager.notifyOnDock(t)}_forceResizeCompositeContainer=e=>{let t=e.containerElement.clientWidth,i=e.containerElement.clientHeight;e.resize(t,i)};_createDockContainer(e,t,i){if(e==="horizontal")return new z(this.dockManager,[t.container,i.container]);if(e==="vertical")return new S(this.dockManager,[t.container,i.container]);if(e==="fill")return new b(this.dockManager);throw new Error("Failed to create dock container of type: "+e)}getDockBounds(e,t,i,n){let o,s,l,a;if(i==="fill"){let H=e.container.containerElement,N=this.dockManager.element.getBoundingClientRect(),P=H.getBoundingClientRect();return{x:P.left-N.left,y:P.top-N.top,width:H.clientWidth,height:H.clientHeight}}e.parent&&e.parent.container.containerType==="fill"&&(e=e.parent);let u=!1;e.parent&&e.parent.container.containerType===i?(o=e.parent,s=o.children.length,l=o.children.indexOf(e)+(n?0:1)):(o=e,s=1,l=n?0:1,u=!0);let c=5,f=0,m=0;if(i==="vertical"||i==="horizontal"){let H=this._getVaringDimension(o.container,i)-(s-1)*c,N=this._getVaringDimension(t,i),P=H/(H+N);if(f=N*P,u)m=n?0:H*P;else{for(let Q=0;Q<l;Q++)m+=this._getVaringDimension(o.children[Q].container,i);m*=P}}a={};let k=this.dockManager.element.getBoundingClientRect(),_=o.container.containerElement.getBoundingClientRect();return i==="vertical"?(a.x=_.left-k.left,a.y=_.top-k.top+m,a.width=o.container.width,a.height=f):i==="horizontal"&&(a.x=_.left-k.left+m,a.y=_.top-k.top,a.width=f,a.height=o.container.height),a}_getVaringDimension(e,t){return t==="vertical"?e.height:t==="horizontal"?e.width:0}};var j=class{wheel;id;element;hoverIconClass;mouseOverHandler;mouseOutHandler;active;constructor(e,t){this.wheel=e,this.id=t;let i=t.replace("-s","");this.element=document.createElement("div"),this.element.classList.add("dock-wheel-item"),this.element.classList.add("disable-selection"),this.element.classList.add("dock-wheel-"+i),this.element.classList.add("dock-wheel-"+i+"-icon"),this.hoverIconClass="dock-wheel-"+i+"-icon-hover",this.mouseOverHandler=new d(this.element,"pointerover",this.onMouseMoved.bind(this)),this.mouseOutHandler=new d(this.element,"pointerout",this.onMouseOut.bind(this)),this.active=!1}onMouseMoved(){this.active=!0,this.element.classList.add(this.hoverIconClass),this.wheel.onMouseOver(this)}onMouseOut(){this.active=!1,this.element.classList.remove(this.hoverIconClass),this.wheel.onMouseOut()}};var $=class{dockManager;elementMainWheel;elementSideWheel;wheelItems;elementPanelPreview;activeDialog;_activeNode;_visible;constructor(e){this.dockManager=e,this.elementMainWheel=document.createElement("div"),this.elementSideWheel=document.createElement("div"),this.wheelItems={};for(let i in p)this.wheelItems[i]=new j(this,i),i.substr(-2,2)==="-s"?this.elementSideWheel.appendChild(this.wheelItems[i].element):this.elementMainWheel.appendChild(this.wheelItems[i].element);let t=9e6;this.elementMainWheel.classList.add("dock-wheel-base"),this.elementSideWheel.classList.add("dock-wheel-base"),this.elementMainWheel.style.zIndex=String(t+1),this.elementSideWheel.style.zIndex=String(t),this.elementPanelPreview=document.createElement("div"),this.elementPanelPreview.classList.add("dock-wheel-panel-preview"),this.elementPanelPreview.style.zIndex=String(t-1),this.activeDialog=void 0,this._activeNode=void 0,this._visible=!1}get activeNode(){return this._activeNode}set activeNode(e){let t=this._activeNode;this._activeNode=e,t!==this._activeNode&&this._visible&&this.showWheel()}showWheel(){if(this._visible=!0,!this.activeNode){h.removeNode(this.elementMainWheel),h.removeNode(this.elementSideWheel);return}let e=this.activeNode.container.containerElement,t=e.clientWidth,i=e.clientHeight,n=Math.floor(t/2),o=Math.floor(i/2),s=e.getBoundingClientRect(),l=this.dockManager.element.getBoundingClientRect();this.elementMainWheel.style.left=s.left-l.left+n+"px",this.elementMainWheel.style.top=s.top-l.top+o+"px";let a=20,u=this.dockManager.element.clientWidth,c=this.dockManager.element.clientHeight;h.removeNode(this.elementMainWheel),h.removeNode(this.elementSideWheel),this.dockManager.element.appendChild(this.elementMainWheel),this.dockManager.element.appendChild(this.elementSideWheel),this._setWheelButtonPosition(p["left-s"],a,-c/2),this._setWheelButtonPosition(p["right-s"],u-a*2,-c/2),this._setWheelButtonPosition(p["top-s"],u/2,-c+a),this._setWheelButtonPosition(p["down-s"],u/2,-a)}_setWheelButtonPosition(e,t,i){let n=this.wheelItems[e],o=n.element.clientWidth/2,s=n.element.clientHeight/2,l=Math.floor(t-o),a=Math.floor(i-s);n.element.style.marginLeft=l+"px",n.element.style.marginTop=a+"px"}hideWheel(){this._visible=!1,this.activeNode=void 0,h.removeNode(this.elementMainWheel),h.removeNode(this.elementSideWheel),h.removeNode(this.elementPanelPreview);for(let e in this.wheelItems)this.wheelItems[e].active=!1}onMouseOver(e){if(!this.activeDialog)return;let t=this.dockManager.context.model.rootNode,i;e.id===p.top?i=this.dockManager.layoutEngine.getDockBounds(this.activeNode,this.activeDialog.panel,"vertical",!0):e.id===p.down?i=this.dockManager.layoutEngine.getDockBounds(this.activeNode,this.activeDialog.panel,"vertical",!1):e.id===p.left?i=this.dockManager.layoutEngine.getDockBounds(this.activeNode,this.activeDialog.panel,"horizontal",!0):e.id===p.right?i=this.dockManager.layoutEngine.getDockBounds(this.activeNode,this.activeDialog.panel,"horizontal",!1):e.id===p.fill?i=this.dockManager.layoutEngine.getDockBounds(this.activeNode,this.activeDialog.panel,"fill",!1):e.id===p["top-s"]?i=this.dockManager.layoutEngine.getDockBounds(t,this.activeDialog.panel,"vertical",!0):e.id===p["down-s"]?i=this.dockManager.layoutEngine.getDockBounds(t,this.activeDialog.panel,"vertical",!1):e.id===p["left-s"]?i=this.dockManager.layoutEngine.getDockBounds(t,this.activeDialog.panel,"horizontal",!0):e.id===p["right-s"]&&(i=this.dockManager.layoutEngine.getDockBounds(t,this.activeDialog.panel,"horizontal",!1)),i&&(this.dockManager.element.appendChild(this.elementPanelPreview),this.elementPanelPreview.style.left=Math.round(i.x)+"px",this.elementPanelPreview.style.top=Math.round(i.y)+"px",this.elementPanelPreview.style.width=Math.round(i.width)+"px",this.elementPanelPreview.style.height=Math.round(i.height)+"px")}onMouseOut(){h.removeNode(this.elementPanelPreview)}onDialogDropped(e){let t=this._getActiveWheelItem();t&&this._handleDockRequest(t,e)}_getActiveWheelItem(){for(let e in this.wheelItems){let t=this.wheelItems[e];if(t.active)return t}}_handleDockRequest(e,t){e.active=!1,e.element.classList.remove(e.hoverIconClass),this.activeNode&&(e.id===p.left?this.dockManager.dockDialogLeft(this.activeNode,t):e.id===p.right?this.dockManager.dockDialogRight(this.activeNode,t):e.id===p.top?this.dockManager.dockDialogUp(this.activeNode,t):e.id===p.down?this.dockManager.dockDialogDown(this.activeNode,t):e.id===p.fill?this.dockManager.dockDialogFill(this.activeNode,t):e.id===p["left-s"]?this.dockManager.dockDialogLeft(this.dockManager.context.model.rootNode,t):e.id===p["right-s"]?this.dockManager.dockDialogRight(this.dockManager.context.model.rootNode,t):e.id===p["top-s"]?this.dockManager.dockDialogUp(this.dockManager.context.model.rootNode,t):e.id===p["down-s"]&&this.dockManager.dockDialogDown(this.dockManager.context.model.rootNode,t))}};var J=class{dockManager;model;documentManagerView;constructor(e){this.dockManager=e,this.model=new L,this.documentManagerView=new D(this.dockManager)}};var te=class{element;context;dockWheel;layoutEngine;mouseMoveHandler;touchMoveHandler;layoutEventListeners;closePanelContainerCallback;defaultDialogPosition;backgroundContext;zIndexCounter;zIndexTabHost;zIndexTabHandle;zIndexDialogCounter;onKeyPressBound;iframes;_undockEnabled;getElementCallback;_config;_activePanel;_lastPanelNotADialog;_activeDocument;constructor(e,t){if(e===void 0)throw new Error("Invalid Dock Manager element provided");this._config=Object.assign(new O,t),this.element=e,this.context=this.dockWheel=this.layoutEngine=this.mouseMoveHandler=this.touchMoveHandler=void 0,this.layoutEventListeners=[],this.defaultDialogPosition=new g(0,0)}get config(){return this._config}initialize(){this.backgroundContext=this.element.children[0],this.context=new J(this);let e=new w(this.context.documentManagerView);this.context.model.rootNode=e,this.context.model.documentManagerNode=e,this.context.model.dialogs=[],this.setRootNode(this.context.model.rootNode),this.resize(this.element.clientWidth,this.element.clientHeight),this.dockWheel=new $(this),this.layoutEngine=new K(this),this._undockEnabled=!0,this.rebuildLayout(this.context.model.rootNode),this.zIndexCounter=1001,this.zIndexTabHost=1e3,this.zIndexTabHandle=100,this.zIndexDialogCounter=10001,this.backgroundContext!=null&&this.context.model.rootNode.container.tabHost.hostElement.insertBefore(this.backgroundContext,this.context.model.rootNode.container.tabHost.hostElement.firstChild),this.onKeyPressBound=this.onKeyPress.bind(this),this.element.addEventListener("keydown",this.onKeyPressBound)}onKeyPress(e){if(e.key=="Escape"&&this.activePanel&&!this.activePanel._hideCloseButton&&(this.activePanel.isDialog&&this._config.escClosesDialog||!this.activePanel.isDialog&&this._config.escClosesWindow)){let t=this.activePanel;this.activePanel=null,t.close()}}checkXBounds(e,t,i,n,o){if(this._config.moveOnlyWithinDockConatiner)return this.checkXBoundsWithinDockContainer(e,t,i,n,o);let s=this.element.getBoundingClientRect(),l=Math.floor(t.x-i.x),a=e.offsetLeft+e.offsetWidth+l+s.left<40,u=e.offsetLeft+l+s.left>window.innerWidth-40;if(a){i.x=t.x,l=0;let c=40-(e.offsetWidth+e.offsetLeft+s.left);c>0&&(l=c)}else if(u){i.x=t.x,l=0;let c=window.innerWidth-40-e.offsetLeft-s.left;c>0&&(l=c)}return l}checkXBoundsWithinDockContainer(e,t,i,n,o){let s=t.x-i.x,l=this.element.getBoundingClientRect(),a=e.getBoundingClientRect(),u=s<0&&a.left+s<l.left&&!o,c=s>0&&a.right+s>l.right&&!n;return u?(t.x-=s,s=l.left-a.left,t.x-=s):c&&(t.x-=s,s=l.right-a.right,t.x-=s),s}checkYBounds(e,t,i,n,o){if(this._config.moveOnlyWithinDockConatiner)return this.checkYBoundsWithinDockContainer(e,t,i,n,o);let s=this.element.getBoundingClientRect(),l=Math.floor(t.y-i.y),a=e.offsetTop+l<0,u=e.offsetTop+l+s.top>window.innerHeight-16;if(a)i.y=t.y,l=0;else if(u){i.y=t.y,l=0;let c=window.innerHeight-16-e.offsetTop-s.top;c>0&&(l=c)}return l}checkYBoundsWithinDockContainer(e,t,i,n,o){let s=t.y-i.y,l=this.element.getBoundingClientRect(),a=e.getBoundingClientRect(),u=s<0&&a.top+s<l.top&&!o,c=s>0&&a.bottom+s>l.bottom&&!n;return u?(t.y-=s,s=l.top-a.top,t.y-=s):c&&(t.y-=s,s=l.bottom-a.bottom,t.y-=s),s}rebuildLayout(e){e.children.forEach(t=>{this.rebuildLayout(t)}),e.performLayout(!1)}invalidate(){this.resize(this.element.clientWidth,this.element.clientHeight)}resize(e,t){this.element.style.width=e+"px",this.element.style.height=t+"px",this.context.model.rootNode.container.resize(e,t);let i=0,n=0;for(let o of this.context.model.dialogs)(o.position.x>this.element.clientWidth||o.position.y>this.element.clientHeight)&&((i>this.element.clientWidth||n>this.element.clientHeight)&&(i=0,n=0),o.setPosition(100+i,100+n),i+=100,n+=100)}setModel(e){h.removeNode(this.context.documentManagerView.containerElement),this.context.model=e,this.setRootNode(e.rootNode),this.rebuildLayout(e.rootNode),this.loadResize(e.rootNode)}loadResize(e){e.children.reverse().forEach(i=>{this.loadResize(i),e.container.setActiveChild(i.container)}),e.children.reverse();let t=e.container;e.container.resize(t.state.width,t.state.height)}setRootNode(e){e.detachFromParent(),this.context.model.rootNode=e,this.element.appendChild(e.container.containerElement)}_onDialogDragStarted(e,t){this.dockWheel.activeNode=this._findNodeOnPoint(t.clientX,t.clientY),this.dockWheel.activeDialog=e,(e.noDocking==null||e.noDocking!==!0)&&this.dockWheel.showWheel(),this.mouseMoveHandler&&(this.mouseMoveHandler.cancel(),delete this.mouseMoveHandler),this.touchMoveHandler&&(this.touchMoveHandler.cancel(),delete this.touchMoveHandler),this.mouseMoveHandler=new d(window,"mousemove",this._onMouseMoved.bind(this)),this.touchMoveHandler=new d(window,"touchmove",this._onMouseMoved.bind(this))}_onDialogDragEnded(e,t){this.mouseMoveHandler&&(this.mouseMoveHandler.cancel(),delete this.mouseMoveHandler),this.touchMoveHandler&&(this.touchMoveHandler.cancel(),delete this.touchMoveHandler),this.dockWheel.onDialogDropped(e),this.dockWheel.hideWheel(),delete this.dockWheel.activeDialog,e.saveState(e.elementDialog.offsetLeft,e.elementDialog.offsetTop)}_onMouseMoved(e){e.changedTouches!=null&&(e=e.changedTouches[0]),this.dockWheel.activeNode=this._findNodeOnPoint(e.clientX,e.clientY)}_findNodeOnPoint(e,t){let i=[];i.push(this.context.model.rootNode);let n;for(;i.length>0;){let o=i.pop();h.isPointInsideNode(e,t,o)&&(n=o,[].push.apply(i,o.children))}return n}dockDialogLeft(e,t){return this._requestDockDialog(e,t,this.layoutEngine.dockLeft.bind(this.layoutEngine))}dockDialogRight(e,t){return this._requestDockDialog(e,t,this.layoutEngine.dockRight.bind(this.layoutEngine))}dockDialogUp(e,t){return this._requestDockDialog(e,t,this.layoutEngine.dockUp.bind(this.layoutEngine))}dockDialogDown(e,t){return this._requestDockDialog(e,t,this.layoutEngine.dockDown.bind(this.layoutEngine))}dockDialogFill(e,t){return this._requestDockDialog(e,t,this.layoutEngine.dockFill.bind(this.layoutEngine))}dockLeft(e,t,i){return this._requestDockContainer(e,t,this.layoutEngine.dockLeft.bind(this.layoutEngine),!1,i)}dockRight(e,t,i){return this._requestDockContainer(e,t,this.layoutEngine.dockRight.bind(this.layoutEngine),!0,i)}dockUp(e,t,i){return this._requestDockContainer(e,t,this.layoutEngine.dockUp.bind(this.layoutEngine),!1,i)}dockDown(e,t,i){return this._requestDockContainer(e,t,this.layoutEngine.dockDown.bind(this.layoutEngine),!0,i)}dockFill(e,t){return this._requestDockContainer(e,t,this.layoutEngine.dockFill.bind(this.layoutEngine),!1)}floatDialog(e,t,i,n,o){let s;if(this.context.model.dialogs.forEach(u=>{e==u.panel&&(u.show(),u.setPosition(t,i),s=u)}),s)return s;try{let u=this._findNodeFromContainer(e);this.layoutEngine.undock(u)}catch{}let l=e;h.removeNode(l.elementPanel),l.isDialog=!0;let a=new E(l,this,n,o);return a.setPosition(t,i),a}_requestDockDialog(e,t,i){let n=t.panel,o=new w(n);return n.prepareForDocking(),n.elementContentContainer.style.zIndex="",t.destroy(),i(e,o),o}_checkShowBackgroundContext(){this.backgroundContext!=null&&(this.context.model.documentManagerNode.children.length>0?this.backgroundContext.style.display="none":this.backgroundContext.style.display="block")}_requestDockContainer(e,t,i,n,o){let s=new w(t);if(t.containerType==="panel"){let u=t;u.prepareForDocking(),h.removeNode(u.elementPanel)}let l=null,a;if(e.parent&&e.parent.container&&(a=e.parent.container,a.getRatios&&(l=a.getRatios())),i(e,s),o&&s.parent&&(s.parent.container.containerType==="vertical"||s.parent.container.containerType==="horizontal")){let u=s.parent.container;if(l&&a==u){if(n){for(let c=0;c<l.length;c++)l[c]=l[c]-l[c]*o;l.push(o)}else l[0]=l[0]-o,l.unshift(o);u.setRatios(l)}else u.setContainerRatio(t,o)}return this.rebuildLayout(this.context.model.rootNode),this.invalidate(),this._checkShowBackgroundContext(),s}_requestTabReorder(e,t){let i=this._findNodeFromContainer(e);this.layoutEngine.reorderTabs(i,t.handle,t.state,t.index)}requestUndockToDialog(e,t,i){let n=this._findNodeFromContainer(e);this.layoutEngine.undock(n);let o=n.container;o.elementPanel.style.display="block";let s=new E(o,this,null);if(o.lastDialogSize&&s.resize(o.lastDialogSize.width,o.lastDialogSize.height),t!==void 0){let l=s.elementDialog.clientWidth;i.x>l&&(i.x=.75*l),s.setPosition(t.clientX-i.x,t.clientY-i.y),s.draggable.onMouseDown(t)}return s}requestClose(e){let t=this._findNodeFromContainer(e);if(this.layoutEngine.close(t),this.activePanel==e&&(this.activePanel=null),this._activeDocument==e){let i=this._activeDocument;this._activeDocument=null,this.notifyOnActiveDocumentChange(null,i)}}openInDialog(e,t,i,n){let o=new E(e,this,null,n);if(t!=null){let s=o.elementDialog.clientWidth;i.x>s&&(i.x=.75*s),o.setPosition(t.clientX-i.x,t.clientY-i.y),o.draggable.onMouseDown(t)}return o}requestUndock(e){let t=this._findNodeFromContainer(e);this.layoutEngine.undock(t)}requestRemove(e){let t=this._findNodeFromContainer(e),i=t.parent;return t.detachFromParent(),i&&this.rebuildLayout(i),t}getNodeByElementId(e){let t=[];for(t.push(this.context.model.rootNode);t.length>0;){let i=t.pop();if(i.container instanceof v&&(i.container.elementContent.id===e||i.container.elementContent instanceof HTMLSlotElement&&i.container.elementContent.assignedElements()?.[0]?.id===e))return i;[].push.apply(t,i.children)}return null}getNodeByElement(e){let t=[];for(t.push(this.context.model.rootNode);t.length>0;){let i=t.pop();if(i.container instanceof v&&(i.container.elementContent===e||i.container.elementContent instanceof HTMLSlotElement&&i.container.elementContent.assignedElements()?.[0]===e))return i;[].push.apply(t,i.children)}return null}_findNodeFromContainer(e){let t=[];for(t.push(this.context.model.rootNode);t.length>0;){let i=t.pop();if(i.container===e)return i;[].push.apply(t,i.children)}return null}findNodeFromContainerElement(e){let t=[];for(t.push(this.context.model.rootNode);t.length>0;){let i=t.pop();if(i.container.containerElement===e)return i;[].push.apply(t,i.children)}return null}addLayoutListener(e){this.layoutEventListeners.push(e)}removeLayoutListener(e){this.layoutEventListeners.splice(this.layoutEventListeners.indexOf(e),1)}suspendLayout(e){this.layoutEventListeners.forEach(t=>{t.onSuspendLayout&&t.onSuspendLayout(this,e)})}resumeLayout(e){this.layoutEventListeners.forEach(t=>{t.onResumeLayout&&t.onResumeLayout(this,e)})}notifyOnDock(e){this._checkShowBackgroundContext(),this.layoutEventListeners.forEach(t=>{t.onDock&&(t.onDock(this,e),e.container.resize(e.container.width,e.container.height))})}notifyOnTabsReorder(e){this.layoutEventListeners.forEach(t=>{t.onTabsReorder&&t.onTabsReorder(this,e)})}notifyOnUnDock(e){this._checkShowBackgroundContext(),this.layoutEventListeners.forEach(t=>{t.onUndock&&t.onUndock(this,e)})}notifyOnClosePanel(e){if(this._checkShowBackgroundContext(),this.activePanel==e&&(this.activePanel=null),this._activeDocument==e){let t=this._activeDocument;this._activeDocument=null,this.notifyOnActiveDocumentChange(null,t)}this.layoutEventListeners.forEach(t=>{t.onClosePanel&&t.onClosePanel(this,e)})}notifyOnCreateDialog(e){this.layoutEventListeners.forEach(t=>{t.onCreateDialog&&t.onCreateDialog(this,e)})}notifyOnHideDialog(e){this.layoutEventListeners.forEach(t=>{t.onHideDialog&&t.onHideDialog(this,e)})}notifyOnShowDialog(e){this.layoutEventListeners.forEach(t=>{t.onShowDialog&&t.onShowDialog(this,e)})}notifyOnChangeDialogPosition(e,t,i){this.layoutEventListeners.forEach(n=>{n.onChangeDialogPosition&&n.onChangeDialogPosition(this,e,t,i)})}notifyOnContainerResized(e){this.layoutEventListeners.forEach(t=>{t.onContainerResized&&t.onContainerResized(this,e)})}notifyOnTabChange(e){this.layoutEventListeners.forEach(t=>{t.onTabChanged&&t.onTabChanged(this,e)})}notifyOnActivePanelChange(e,t){this.layoutEventListeners.forEach(i=>{i.onActivePanelChange&&i.onActivePanelChange(this,e,t)})}async notifyOnActiveDocumentChange(e,t){for(let i of this.layoutEventListeners)i.onActiveDocumentChange&&await i.onActiveDocumentChange(this,e,t)}notifyOnNewWindow(e,t){this._checkShowBackgroundContext(),this.layoutEventListeners.forEach(i=>{i.onNewWindow&&i.onNewWindow(this,e,t)})}saveState(){return new G().serialize(this.context.model)}async loadState(e){let t=new Y(this);this.context.model=await t.deserialize(e),this.setModel(this.context.model)}getPanels(){let e=[];return this._allPanels(this.context.model.rootNode,e),this.context.model.dialogs.forEach(t=>{e.push(t.panel)}),e}undockEnabled(e){this._undockEnabled=e,this.getPanels().forEach(t=>{t.canUndock(e)})}lockDockState(e){this.undockEnabled(!e),this.hideCloseButton(e)}hideCloseButton(e){this.getPanels().forEach(t=>{t.hideCloseButton(e)})}updatePanels(e){let t=[];return this._allPanels(this.context.model.rootNode,t),t.forEach(i=>{h.arrayContains(e,i.elementContent.id)||i.close()}),this.context.model.dialogs.forEach(i=>{h.arrayContains(e,i.panel.elementContent.id)?i.show():i.hide()}),t}getVisiblePanels(){let e=[];return this._allPanels(this.context.model.rootNode,e),this.context.model.dialogs.forEach(t=>{t.isHidden||e.push(t.panel)}),e}_allPanels(e,t){e.children.forEach(i=>{this._allPanels(i,t)}),e.container.containerType==="panel"&&t.push(e.container)}get activeDocument(){return this._activeDocument}get activePanel(){return this._activePanel}set activePanel(e){if(e!==this._activePanel){e&&!e.isDialog&&(this._lastPanelNotADialog=e),this._lastPanelNotADialog&&this.getPanels().indexOf(this._lastPanelNotADialog)<0&&(this._lastPanelNotADialog=null);let t=this.activePanel;this.activePanel&&(this.activePanel.elementTitle.classList.remove("dockspan-panel-active"),this.activePanel.elementTitleText.classList.remove("dockspan-panel-titlebar-text-active"),this.activePanel.tabPage&&this.activePanel.tabPage.host.setActive(!1)),this._activePanel=e;let i=this._activeDocument;e&&e.panelType==x.document&&(this._activeDocument=e),!e&&t&&t.isDialog&&e==null&&this._lastPanelNotADialog&&this.activePanel!=this._lastPanelNotADialog&&(e=this._lastPanelNotADialog,this._lastPanelNotADialog=void 0),this.notifyOnActivePanelChange(e,t),i!=this._activeDocument&&this.notifyOnActiveDocumentChange(this._activeDocument,i),e&&(e.elementTitle.classList.add("dockspan-panel-active"),e.elementTitleText.classList.add("dockspan-panel-titlebar-text-active"),e.tabPage&&e.tabPage.host.setActive(!0))}else e&&e.tabPage&&e.tabPage.host.setActive(!0)}};export{y as ContainerType,Z as Defaults,E as Dialog,O as DockConfig,Y as DockGraphDeserializer,G as DockGraphSerializer,K as DockLayoutEngine,te as DockManager,J as DockManagerContext,L as DockModel,w as DockNode,$ as DockWheel,j as DockWheelItem,D as DocumentManagerContainer,X as DocumentTabPage,U as DraggableContainer,d as EventHandler,b as FillDockContainer,z as HorizontalDockContainer,C as Localizer,v as PanelContainer,x as PanelType,g as Point,I as ResizableContainer,R as ResizeHandle,A as SplitterBar,B as SplitterDockContainer,F as SplitterPanel,V as TabHandle,q as TabHost,M as TabHostDirection,W as TabPage,T as UndockInitiator,h as Utils,S as VerticalDockContainer,p as WheelTypes,ee as moveElementToNewBrowserWindow};
@@ -0,0 +1,17 @@
1
+ var w;(function(r){r.document="document",r.panel="panel"})(w||(w={}));var y;(function(r){r[r.TOP=0]="TOP",r[r.BOTTOM=1]="BOTTOM",r[r.LEFT=2]="LEFT",r[r.RIGHT=3]="RIGHT"})(y||(y={}));var f;(function(r){r.left="left",r.right="right",r.top="top",r.down="down",r.fill="fill",r["left-s"]="left-s",r["right-s"]="right-s",r["top-s"]="top-s",r["down-s"]="down-s"})(f||(f={}));var te={CloseDialog:"Close dialog",CloseAll:"Close all documents",CloseAllButThis:"Close all documents but this",DefaultPanelName:"Panel",NewBrowserWindow:"Open in new window"};function ne(r,...e){return r.replace(/{(\d+)}/g,(t,i)=>{let n=Number.parseInt(i);return e[n].toString()})}var k=class r{static configure(e){r._getTemplateString=e}static getString(e,...t){return ne(r._getTemplateString?.(e)??te[e],...t)}static _getTemplateString};function ie(r,e){let t=r.resolvedElementContent,i=t.getBoundingClientRect(),n={x:i.x+24,y:i.y+60,width:i.width,height:i.height},o=window.open("about:blank",void 0,`popup=yes,left=${n.x},top=${n.y},width=${n.width},height=${n.height}`);o.onfocus=m=>e.focused(m),o.onblur=m=>e.blured(m);let s=[...document.head.querySelectorAll("link")].map(m=>m.cloneNode());for(let m of s)o.document.head.appendChild(o.document.adoptNode(m));let l=o.document.createElement("style");l.innerText=`
2
+ html {
3
+ overflow: hidden;
4
+ position: fixed;
5
+ width: 100%;
6
+ height: 100%;
7
+ }
8
+ body {
9
+ height: 100%;
10
+ width: 100%;
11
+ margin: 0;
12
+ }
13
+ `,o.document.head.appendChild(l);let a=o.document.createElement("title");a.innerText=e.title,o.document.head.appendChild(a),o.onunload=()=>e.newWindowClosedCallback();let u=new Map,d=new Map;function p(m){if(m.shadowRoot){m.shadowRoot.adoptedStyleSheets.length>0&&d.set(m,[...m.shadowRoot.adoptedStyleSheets.map(C=>oe(o,C,u))]);for(let C of m.shadowRoot.querySelectorAll("*"))p(C)}}p(t);for(let m of t.querySelectorAll("*"))p(m);o.document.body.appendChild(o.document.adoptNode(t));for(let m of d)m[0].shadowRoot.adoptedStyleSheets=m[1];return e.closeCallback(),r.dockManager.notifyOnNewWindow(r,o),o}function oe(r,e,t){let i=t.get(e);if(i)return i;let n="",o=e.cssRules;for(var s=0;s<o.length;s++)n+=o[s].cssText+`
14
+ `;let l=new r.CSSStyleSheet;return t.set(e,l),l.replaceSync(n),l}var x;(function(r){r.horizontal="horizontal",r.vertical="vertical",r.fill="fill",r.panel="panel"})(x||(x={}));var v=class{x;y;constructor(e,t){this.x=e,this.y=t}};var h=class r{static _counter=0;static getPixels(e){return e===null?0:parseInt(e.replace("px",""))}static disableGlobalTextSelection(e){e.classList.add("disable-selection")}static enableGlobalTextSelection(e){e.classList.remove("disable-selection")}static isPointInsideNode(e,t,i){let o=i.container.containerElement.getBoundingClientRect();return e>=o.left&&e<=o.left+o.width&&t>=o.top&&t<=o.top+o.height}static getNextId(e){return e+r._counter++}static removeNode(e){return e.parentNode===null?!1:(e.parentNode.removeChild(e),!0)}static orderByIndexes(e,t){let i=[];for(let n=0;n<t.length;n++)i.push(e[t[n]]);return i}static arrayRemove(e,t){let i=e.indexOf(t);return i!==-1?e.splice(i,1):!1}static arrayContains(e,t){let i=e.length;for(;i--;)if(e[i]===t)return!0;return!1}static arrayEqual(e,t){if(e===t)return!0;if(e==null||t==null||e.length!=t.length)return!1;for(let i=0;i<e.length;++i)if(e[i]!==t[i])return!1;return!0}};var c=class{target;eventName;source;constructor(e,t,i,n){this.target=i,this.eventName=t,this.source=e,this.source.addEventListener(t,this.target,n)}cancel(){this.source.removeEventListener(this.eventName,this.target)}};var _=class{mouseUpHandler;touchUpHandler;mouseMoveHandler;touchMoveHandler;dragStartPosition;thresholdPixels;_enabled;mouseDownHandler;touchDownHandler;element;_undockededCallback;touchDownUndockedHandler;constructor(e,t,i){i||(i=7),this.element=e,this._undockededCallback=t,this.thresholdPixels=i,this._enabled=!1}get enabled(){return this._enabled}set enabled(e){this._enabled=e,this._enabled?(this.mouseDownHandler&&(this.mouseDownHandler.cancel(),delete this.mouseDownHandler),this.touchDownHandler&&(this.touchDownHandler.cancel(),delete this.touchDownHandler),this.mouseDownHandler=new c(this.element,"mousedown",this.onMouseDown.bind(this)),this.touchDownHandler=new c(this.element,"touchstart",this.onMouseDown.bind(this),{passive:!1})):(this.mouseDownHandler&&(this.mouseDownHandler.cancel(),delete this.mouseDownHandler),this.touchDownHandler&&(this.touchDownHandler.cancel(),delete this.touchDownHandler),this.mouseUpHandler&&(this.mouseUpHandler.cancel(),delete this.mouseUpHandler),this.touchUpHandler&&(this.touchUpHandler.cancel(),delete this.touchUpHandler),this.mouseMoveHandler&&(this.mouseMoveHandler.cancel(),delete this.mouseMoveHandler),this.touchMoveHandler&&(this.touchMoveHandler.cancel(),delete this.touchMoveHandler))}onMouseDown(e){if(e.preventDefault(),this.enabled){if(e.touches){if(e.touches.length>1)return;e=e.touches[0]}this.mouseUpHandler&&(this.mouseUpHandler.cancel(),delete this.mouseUpHandler),this.touchUpHandler&&(this.touchUpHandler.cancel(),delete this.touchUpHandler),this.mouseMoveHandler&&(this.mouseMoveHandler.cancel(),delete this.mouseMoveHandler),this.touchMoveHandler&&(this.touchMoveHandler.cancel(),delete this.touchMoveHandler),this.mouseUpHandler=new c(window,"mouseup",this.onMouseUp.bind(this)),this.touchUpHandler=new c(window,"touchend",this.onMouseUp.bind(this)),this.mouseMoveHandler=new c(window,"mousemove",this.onMouseMove.bind(this)),this.touchMoveHandler=new c(window,"touchmove",this.onMouseMove.bind(this)),this.dragStartPosition=new v(e.clientX,e.clientY)}}onMouseUp(){this.mouseUpHandler&&(this.mouseUpHandler.cancel(),delete this.mouseUpHandler),this.touchUpHandler&&(this.touchUpHandler.cancel(),delete this.touchUpHandler),this.mouseMoveHandler&&(this.mouseMoveHandler.cancel(),delete this.mouseMoveHandler),this.touchMoveHandler&&(this.touchMoveHandler.cancel(),delete this.touchMoveHandler)}onMouseMove(e){if(e.touches){if(e.touches.length>1)return;e=e.touches[0]}if(e.buttons==0){this.onMouseUp();return}let i=new v(e.clientX,e.clientY).y-this.dragStartPosition.y;(i>this.thresholdPixels||i<-this.thresholdPixels)&&(this.enabled=!1,this._requestUndock(e))}_requestUndock(e){let t=0,i=0,n=this.element;do t+=n.offsetTop||0,i+=n.offsetLeft||0,n=n.offsetParent;while(n);let o=this.dragStartPosition.x-i,s=this.dragStartPosition.y-t,l=new v(o,s);this._undockededCallback(e,l)}};var g=class r{closePanelContainerCallback;onTitleChanged;elementPanel;elementTitle;elementTitleText;elementContentHost;name;state;elementContent;_resolvedElementContent;elementContentContainer;elementContentWrapper;dockManager;title;containerType;icon;hasChanges;minimumAllowedChildNodes;isDialog;eventListeners;undockInitiator;elementButtonClose;closeButtonClickedHandler;closeButtonTouchedHandler;mouseDownHandler;touchDownHandler;panelType;tabPage;undockedToNewBrowserWindow=!1;contextMenuHandler;lastDialogSize;_floatingDialog;_canUndock;_cachedWidth;_cachedHeight;_hideCloseButton;_grayOut;_ctxMenu;constructor(e,t,i,n,o){i||(i=k.getString("DefaultPanelName")),n||(n=w.panel),this.panelType=n,e._dockSpawnPanelContainer=this,this.elementContent=e,e.style.position="absolute",e.style.width="100%",e.style.height="100%",e.style.top="0",e.style.bottom="0",this.elementContentContainer=document.createElement("div"),this.elementContentContainer.className="panel-element-content-container",this.elementContentContainer.style.position="absolute",this.elementContentContainer._panel=this,this.elementContentContainer.addEventListener("pointerdown",s=>{try{this.isDialog?this._floatingDialog.bringToFront():this.tabPage&&this.tabPage.setSelected(!0,!0),this.dockManager.activePanel=this}catch{}},{passive:!0}),this.elementContentContainer.appendChild(e),t.config.dialogRootElement.appendChild(this.elementContentContainer),this.dockManager=t,this.title=i,this.containerType=x.panel,this.icon=null,this.minimumAllowedChildNodes=0,this._floatingDialog=void 0,this.isDialog=!1,this._canUndock=t._undockEnabled,this.eventListeners=[],this._hideCloseButton=o,this.windowsContextMenuClose=this.windowsContextMenuClose.bind(this),this._initialize()}_initialize(){this.name=h.getNextId("panel_"),this.elementPanel=document.createElement("div"),this.elementPanel.tabIndex=0,this.elementTitle=document.createElement("div"),this.contextMenuHandler=new c(this.elementTitle,"contextmenu",this.oncontextMenuClicked.bind(this)),this.elementTitleText=document.createElement("div"),this.elementContentHost=document.createElement("div"),this.elementButtonClose=document.createElement("div"),this.elementPanel.appendChild(this.elementTitle),this.elementTitle.appendChild(this.elementTitleText),this.elementTitle.appendChild(this.elementButtonClose),this.elementButtonClose.classList.add("panel-titlebar-button-close"),this.elementButtonClose.style.display=this._hideCloseButton?"none":"block",this.elementPanel.appendChild(this.elementContentHost),this.elementPanel.classList.add("panel-base"),this.elementTitle.classList.add("panel-titlebar"),this.elementTitle.classList.add("disable-selection"),this.elementTitleText.classList.add("panel-titlebar-text"),this.elementContentHost.classList.add("panel-content");let e=this.elementContentContainer.clientWidth,t=this.elementContentContainer.clientHeight,i=this.elementTitle.clientHeight;this.elementContentWrapper=document.createElement("div"),this.elementContentWrapper.classList.add("panel-content-wrapper"),this._setPanelDimensions(e,t+i),this._hideCloseButton||(this.closeButtonClickedHandler=new c(this.elementButtonClose,"mousedown",this.onCloseButtonClicked.bind(this)),this.closeButtonTouchedHandler=new c(this.elementButtonClose,"touchstart",this.onCloseButtonClicked.bind(this))),h.removeNode(this.elementContentWrapper),this.elementContentHost.appendChild(this.elementContentWrapper);let n=this.elementContent.dataset.panelCaption,o=this.elementContent.dataset.panelIcon;n&&(this.title=n),o&&(this.icon=o),this._updateTitle(),this.undockInitiator=new _(this.elementTitle,this.performUndockToDialog.bind(this)),delete this.floatingDialog,this.mouseDownHandler=new c(this.elementPanel,"mousedown",this.onMouseDown.bind(this)),this.touchDownHandler=new c(this.elementPanel,"touchstart",this.onMouseDown.bind(this),{passive:!0}),this._resolvedElementContent=this.elementContent,this.elementContent instanceof HTMLSlotElement&&(this._resolvedElementContent=this.elementContent.assignedElements()?.[0])}static createContextMenuContentCallback=e=>{let t=[];if(e.dockManager.config.enableBrowserWindows){let i=document.createElement("div");i.innerText=k.getString("NewBrowserWindow"),t.push(i),i.onclick=()=>{e.undockToBrowserDialog(),e.closeContextMenu()}}return t};oncontextMenuClicked(e){if(e.preventDefault(),!this._ctxMenu&&r.createContextMenuContentCallback){let t=r.createContextMenuContentCallback(this);if(t.length==0)return;this._ctxMenu=document.createElement("div"),this._ctxMenu.className="dockspab-tab-handle-context-menu",this._ctxMenu.append(...t),this._ctxMenu.style.left=e.pageX+"px",this._ctxMenu.style.top=e.pageY+"px",document.body.appendChild(this._ctxMenu),window.addEventListener("mouseup",this.windowsContextMenuClose)}else this.closeContextMenu()}closeContextMenu(){this._ctxMenu&&(document.body.removeChild(this._ctxMenu),delete this._ctxMenu,window.removeEventListener("mouseup",this.windowsContextMenuClose))}windowsContextMenuClose(e){let t=e.composedPath();for(let i in t)if(t[i]==this._ctxMenu)return;this.closeContextMenu()}canUndock(e){this._canUndock=e,this.undockInitiator.enabled=e,this.eventListeners.forEach(t=>{t.onDockEnabled&&t.onDockEnabled({self:this,state:e})})}addListener(e){this.eventListeners.push(e)}removeListener(e){this.eventListeners.splice(this.eventListeners.indexOf(e),1)}get floatingDialog(){return this._floatingDialog}set floatingDialog(e){this._floatingDialog=e;let t=this._floatingDialog===void 0;this.undockInitiator.enabled=t}static async loadFromState(e,t){let i,n;if(t.getElementCallback){let s=await t.getElementCallback(e);i=s.element,n=s.title}else{let s=e.element;i=document.getElementById(s)}if(i===null)return null;let o=new r(i,t,n);return o.loadState(e),o}saveState(e){e.element=this.elementContent.id,e.width=this.width,e.height=this.height,e.canUndock=this._canUndock,e.hideCloseButton=this._hideCloseButton,e.panelType=this.panelType}loadState(e){this.width=e.width,this.height=e.height,this.state={width:e.width,height:e.height},this.canUndock(e.canUndock),this.hideCloseButton(e.hideCloseButton),this.panelType=e.panelType}setActiveChild(){}get containerElement(){return this.elementPanel}grayOut(e){!e&&this._grayOut?(this.elementContentWrapper.removeChild(this._grayOut),this.elementButtonClose.style.display=this._hideCloseButton?"none":"block",this._grayOut=null,this._hideCloseButton||this.eventListeners.forEach(t=>{t.onHideCloseButton&&t.onHideCloseButton({self:this,state:this._hideCloseButton})})):e&&!this._grayOut&&(this._grayOut=document.createElement("div"),this._grayOut.className="panel-grayout",this.elementButtonClose.style.display="none",this.elementContentWrapper.appendChild(this._grayOut),this.eventListeners.forEach(t=>{t.onHideCloseButton&&t.onHideCloseButton({self:this,state:!0})}))}onMouseDown(){this.dockManager.activePanel=this}hideCloseButton(e){this._hideCloseButton=e,this.elementButtonClose.style.display=e?"none":"block",this.eventListeners.forEach(t=>{t.onHideCloseButton&&t.onHideCloseButton({self:this,state:e})})}destroy(){this.mouseDownHandler&&(this.mouseDownHandler.cancel(),delete this.mouseDownHandler),this.touchDownHandler&&(this.touchDownHandler.cancel(),delete this.touchDownHandler),this.contextMenuHandler&&this.contextMenuHandler.cancel(),h.removeNode(this.elementPanel),this.closeButtonClickedHandler&&(this.closeButtonClickedHandler.cancel(),delete this.closeButtonClickedHandler),this.closeButtonTouchedHandler&&(this.closeButtonTouchedHandler.cancel(),delete this.closeButtonTouchedHandler)}performUndockToDialog(e,t){return this.isDialog=!0,this.undockInitiator.enabled=!1,this.elementContentWrapper.style.display="block",this.elementPanel.style.position="",this.dockManager.requestUndockToDialog(this,e,t)}performClose(){this.isDialog=!0,this.undockInitiator.enabled=!1,this.elementContentWrapper.style.display="block",this.elementContentContainer.style.display="none",this.elementPanel.style.position="",this.dockManager.requestClose(this)}performUndock(){this.undockInitiator.enabled=!1,this.dockManager.requestUndock(this)}prepareForDocking(){this.isDialog=!1,this.undockInitiator.enabled=this._canUndock,this.elementContentContainer.parentElement!=this.dockManager.config.dialogRootElement&&this.dockManager.config.dialogRootElement.appendChild(this.elementContentContainer)}get width(){return this._cachedWidth}set width(e){e!==this._cachedWidth&&(this._cachedWidth=e,this.elementPanel.style.width=e+"px")}get height(){return this._cachedHeight}set height(e){e!==this._cachedHeight&&(this._cachedHeight=e,this.elementPanel.style.height=e+"px")}get resolvedElementContent(){return this._resolvedElementContent?this._resolvedElementContent:(this._resolvedElementContent=this.elementContent,this.elementContent instanceof HTMLSlotElement&&(this._resolvedElementContent=this.elementContent.assignedElements()?.[0]),this._resolvedElementContent)}panelDocked(){this.elementContent.hidden&&(this.elementContent.hidden=!1),this.elementContentContainer.parentElement!==this.dockManager.config.dialogRootElement&&this.dockManager.config.dialogRootElement.appendChild(this.elementContentContainer)}resize(e,t){this.panelDocked(),this.setVisible(!0),this._setPanelDimensions(e,t),this._cachedWidth=e,this._cachedHeight=t;try{this.elementContent!=null&&typeof this.elementContent.resizeHandler=="function"&&this.elementContent.resizeHandler(e,t-this.elementTitle.clientHeight)}catch(i){console.log("error calling resizeHandler:",i," elt:",this.elementContent)}}_setPanelDimensions(e,t){this.elementTitle.style.width=e+"px",this.elementContentHost.style.width=e+"px",this.elementContentContainer.style.width=e+"px",this.elementPanel.style.width=e+"px";let i=this.elementTitle.clientHeight,n=t-i;this.elementContentHost.style.height=n+"px",this.elementContentContainer.style.height=n+"px",this.elementPanel.style.height=t+"px",requestAnimationFrame(()=>{let o=this.elementContentWrapper.getBoundingClientRect(),s=this.dockManager.config.dialogRootElement.getBoundingClientRect();this.elementContentContainer.style.left=o.x-s.x+"px",this.elementContentContainer.style.top=o.y-s.y+"px",this.elementContentContainer.style.width=o.width+"px",this.elementContentContainer.style.height=o.height+"px"})}setDialogPosition(e,t){this.elementContentContainer.style.left=e+"px",this.elementContentContainer.style.top=t+this.elementTitle.clientHeight+"px"}setVisible(e){this.elementContentContainer.style.display=e?"block":"none"}setTitle(e){this.title=e,this._updateTitle(),this.onTitleChanged&&this.onTitleChanged(this,e)}setTitleIcon(e){this.icon=e,this._updateTitle(),this.onTitleChanged&&this.onTitleChanged(this,this.title)}setHasChanges(e){this.hasChanges=e,this._updateTitle(),e?this.elementTitleText.classList.add("panel-has-changes"):this.elementTitleText.classList.remove("panel-has-changes"),this.onTitleChanged&&this.onTitleChanged(this,this.title)}setCloseIconTemplate(e){this.elementButtonClose.innerHTML=e}_updateTitle(){if(this.icon!==null){this.elementTitleText.innerHTML='<img class="panel-titlebar-icon" src="'+this.icon+'"><span>'+this.title+"</span>";return}this.elementTitleText.innerHTML=this.title}getRawTitle(){return this.elementTitleText.innerHTML}performLayout(e,t){}onCloseButtonClicked(e){e.preventDefault(),e.stopPropagation(),this.close()}undockToBrowserDialog(){ie(this,{title:this.elementTitleText.textContent,closeCallback:()=>{this.undockedToNewBrowserWindow=!0,this.closeInternal(!1)},newWindowClosedCallback:()=>{this.undockedToNewBrowserWindow=!1,this.dockManager.notifyOnClosePanel(this)},focused:e=>{this.dockManager.activePanel=this},blured:e=>{this.dockManager.activePanel=null}})}async close(){this.closeInternal(!0)}async closeInternal(e){let t=!0;if(this.elementContentContainer.parentElement===this.dockManager.config.dialogRootElement&&(e?this.closePanelContainerCallback?t=await this.closePanelContainerCallback(this):this.dockManager.closePanelContainerCallback&&(t=await this.dockManager.closePanelContainerCallback(this)):t=!0,t))if(this.dockManager.config.dialogRootElement.removeChild(this.elementContentContainer),this.isDialog)this.floatingDialog&&this.floatingDialog.close();else{try{this.dockManager.notifyOnClosePanel(this)}catch(i){console.error(i)}this.performClose()}}};var R=class{dialog;delegate;containerElement;dockManager;topLevelElement;containerType;mouseDownHandler;touchDownHandler;minimumAllowedChildNodes;previousMousePosition;mouseMoveHandler;mouseUpHandler;iframeEventHandlers;constructor(e,t,i,n){this.dialog=e,this.delegate=t,this.containerElement=t.containerElement,this.dockManager=t.dockManager,this.topLevelElement=i,this.containerType=t.containerType,this.mouseDownHandler=new c(n,"mousedown",this.onMouseDown.bind(this)),this.touchDownHandler=new c(n,"touchstart",this.onMouseDown.bind(this)),this.topLevelElement.style.left=i.offsetLeft+"px",this.topLevelElement.style.top=i.offsetTop+"px",this.minimumAllowedChildNodes=t.minimumAllowedChildNodes,this.iframeEventHandlers=[]}destroy(){this.removeDecorator(),this.delegate.destroy()}saveState(e){this.delegate.saveState(e)}loadState(e){this.delegate.loadState(e)}setActiveChild(){}get width(){return this.delegate.width}get height(){return this.delegate.height}get name(){return this.delegate.name}set name(e){e&&(this.delegate.name=e)}resize(e,t){this.delegate.resize(e,t)}performLayout(e){this.delegate.performLayout(e,!1)}removeDecorator(){this.mouseDownHandler&&(this.mouseDownHandler.cancel(),delete this.mouseDownHandler),this.touchDownHandler&&(this.touchDownHandler.cancel(),delete this.touchDownHandler)}onMouseDown(e){if(e.button!=2&&(e.preventDefault&&e.preventDefault(),this._startDragging(e),this.previousMousePosition={x:e.clientX,y:e.clientY},this.mouseMoveHandler&&(this.mouseMoveHandler.cancel(),delete this.mouseMoveHandler),this.mouseUpHandler&&(this.mouseUpHandler.cancel(),delete this.mouseUpHandler),this.mouseMoveHandler=new c(window,"pointermove",this.onMouseMove.bind(this)),this.mouseUpHandler=new c(window,"pointerup",this.onMouseUp.bind(this)),this.dockManager.iframes))for(let t of this.dockManager.iframes){let i=this.onMouseMovedIframe.bind(this);this.iframeEventHandlers.push(new c(t.contentWindow,"pointermove",n=>i(n,t))),this.iframeEventHandlers.push(new c(t.contentWindow,"pointerup",this.onMouseUp.bind(this)))}}onMouseUp(e){this._stopDragging(e),this.mouseMoveHandler.cancel(),delete this.mouseMoveHandler,this.mouseUpHandler.cancel(),delete this.mouseUpHandler;for(let t of this.iframeEventHandlers)t.cancel();this.iframeEventHandlers=[]}_startDragging(e){this.containerElement.classList.add("draggable-dragging-active"),this.delegate.elementContentContainer.classList.add("draggable-dragging-active"),this.dialog.eventListener&&this.dialog.eventListener._onDialogDragStarted(this.dialog,e),h.disableGlobalTextSelection(this.dockManager.config.dialogRootElement)}_stopDragging(e){this.containerElement.classList.remove("draggable-dragging-active"),this.delegate.elementContentContainer.classList.remove("draggable-dragging-active"),this.dialog.eventListener&&this.dialog.eventListener._onDialogDragEnded(this.dialog,e),h.enableGlobalTextSelection(this.dockManager.config.dialogRootElement)}onMouseMovedIframe(e,t){let i=t.getBoundingClientRect();this.onMouseMove(e,{x:i.x,y:i.y})}onMouseMove(e,t){e.preventDefault&&e.preventDefault();let i=new v(e.clientX,e.clientY);t&&(i=new v(e.clientX+t.x,e.clientY+t.y));let n=this.dockManager.checkXBounds(this.topLevelElement,i,this.previousMousePosition,!1,!1),o=this.dockManager.checkYBounds(this.topLevelElement,i,this.previousMousePosition,!1,!1);this._performDrag(n,o),this.previousMousePosition=i}_performDrag(e,t){let i=e+h.getPixels(this.topLevelElement.style.left),n=t+h.getPixels(this.topLevelElement.style.top);this.topLevelElement.style.left=i+"px",this.topLevelElement.style.top=n+"px",this.dialog.panel.setDialogPosition(i,n)}};var U=class{element;handleSize;cornerSize;east;west;north;south;corner;mouseDownHandler;touchDownHandler;constructor(){this.element=void 0,this.handleSize=6,this.cornerSize=12,this.east=!1,this.west=!1,this.north=!1,this.south=!1,this.corner=!1}adjustSize(e,t){this.corner?(this.west&&(this.element.style.left="0px"),this.east&&(this.element.style.left=e-this.cornerSize+"px"),this.north&&(this.element.style.top="0px"),this.south&&(this.element.style.top=t-this.cornerSize+"px")):(this.west&&(this.element.style.left="0px",this.element.style.top=this.cornerSize+"px"),this.east&&(this.element.style.left=e-this.handleSize+"px",this.element.style.top=this.cornerSize+"px"),this.north&&(this.element.style.left=this.cornerSize+"px",this.element.style.top="0px"),this.south&&(this.element.style.left=this.cornerSize+"px",this.element.style.top=t-this.handleSize+"px"),this.west||this.east?this.element.style.height=t-this.cornerSize*2+"px":this.element.style.width=e-this.cornerSize*2+"px")}};var I=class{topLevelElement;dialog;delegate;dockManager;containerElement;containerType;minimumAllowedChildNodes;readyToProcessNextResize;dockSpawnResizedEvent;resizeHandles;previousMousePosition;iframeEventHandlers;disableResize;constructor(e,t,i,n=!1){this.dialog=e,this.disableResize=n,this.delegate=t,this.containerElement=t.containerElement,this.dockManager=t.dockManager,this.topLevelElement=i,this.containerType=t.containerType,this.topLevelElement.style.left=this.topLevelElement.offsetLeft+"px",this.topLevelElement.style.top=this.topLevelElement.offsetTop+"px",this.minimumAllowedChildNodes=t.minimumAllowedChildNodes,this._buildResizeHandles(),this.readyToProcessNextResize=!0,this.dockSpawnResizedEvent=new CustomEvent("DockSpawnResizedEvent",{composed:!0,bubbles:!0}),this.iframeEventHandlers=[]}setActiveChild(){}_buildResizeHandles(){this.resizeHandles=[],this.disableResize||(this._buildResizeHandle(!1,!0,!0,!1),this._buildResizeHandle(!0,!1,!1,!0),this._buildResizeHandle(!1,!0,!1,!0),this._buildResizeHandle(!0,!1,!1,!1),this._buildResizeHandle(!1,!0,!1,!1),this._buildResizeHandle(!1,!1,!0,!1),this._buildResizeHandle(!1,!1,!1,!0))}_buildResizeHandle(e,t,i,n){let o=new U;o.east=e,o.west=t,o.north=i,o.south=n,o.element=document.createElement("div"),this.topLevelElement.appendChild(o.element);let s="",l="";i&&(s="n"),n&&(s="s"),e&&(l="e"),t&&(l="w");let a="resize-handle-"+s+l;s.length>0&&l.length>0&&(o.corner=!0),o.element.classList.add(o.corner?"resize-handle-corner":"resize-handle"),o.element.classList.add(a),this.resizeHandles.push(o),o.mouseDownHandler=new c(o.element,"mousedown",u=>{this.onMouseDown(o,u)}),o.touchDownHandler=new c(o.element,"touchstart",u=>{this.onMouseDown(o,u)})}saveState(e){this.delegate.saveState(e)}loadState(e){this.delegate.loadState(e)}get width(){return this.delegate.width}get height(){return this.delegate.height}get name(){return this.delegate.name}set name(e){e&&(this.delegate.name=e)}resize(e,t){this.delegate.resize(e,t),this._adjustResizeHandles(e,t),document.dispatchEvent(this.dockSpawnResizedEvent)}_adjustResizeHandles(e,t){this.resizeHandles.forEach(i=>{i.adjustSize(e,t)})}performLayout(e){this.delegate.performLayout(e,!1)}destroy(){this.removeDecorator(),this.delegate.destroy()}removeDecorator(){}onMouseMovedIframe(e,t,i){let n=i.getBoundingClientRect();this.onMouseMoved(e,t,{x:n.x,y:n.y})}onMouseMoved(e,t,i){let n=null;if(t.changedTouches){if(t.changedTouches.length>1)return;n=t.changedTouches[0]}else n=t;if(!this.readyToProcessNextResize)return;this.readyToProcessNextResize=!1,this.dialog.panel&&this.dockManager.suspendLayout(this.dialog.panel);let o=new v(n.clientX,n.clientY);i&&(o=new v(n.clientX+i.x,n.clientY+i.y));let s=this.dockManager.checkXBounds(this.topLevelElement,o,this.previousMousePosition,e.west,e.east),l=this.dockManager.checkYBounds(this.topLevelElement,o,this.previousMousePosition,e.north,e.south);this._performDrag(e,s,l),this.previousMousePosition=o,this.readyToProcessNextResize=!0,this.dialog.panel&&this.dockManager.resumeLayout(this.dialog.panel),this.dockManager.notifyOnContainerResized(this)}onMouseDown(e,t){let i=null;if(t.touches){if(t.touches.length>1)return;i=t.touches[0]}else i=t;this.previousMousePosition=new v(i.clientX,i.clientY),e.mouseMoveHandler&&(e.mouseMoveHandler.cancel(),delete e.mouseMoveHandler),e.touchMoveHandler&&(e.touchMoveHandler.cancel(),delete e.touchMoveHandler),e.mouseUpHandler&&(e.mouseUpHandler.cancel(),delete e.mouseUpHandler),e.touchUpHandler&&(e.touchUpHandler.cancel(),delete e.touchUpHandler);for(let n of this.iframeEventHandlers)n.cancel();if(this.iframeEventHandlers=[],e.mouseMoveHandler=new c(window,"mousemove",n=>{this.onMouseMoved(e,n)}),e.touchMoveHandler=new c(window,"touchmove",n=>{this.onMouseMoved(e,n)}),e.mouseUpHandler=new c(window,"mouseup",n=>{this.onMouseUp(e)}),e.touchUpHandler=new c(window,"touchend",n=>{this.onMouseUp(e)}),this.dockManager.iframes)for(let n of this.dockManager.iframes){let o=this.onMouseMovedIframe.bind(this);this.iframeEventHandlers.push(new c(n.contentWindow,"mousemove",s=>o(e,s,n))),this.iframeEventHandlers.push(new c(n.contentWindow,"mouseup",s=>this.onMouseUp(e))),this.iframeEventHandlers.push(new c(n.contentWindow,"touchmove",s=>o(e,s,n))),this.iframeEventHandlers.push(new c(n.contentWindow,"touchend",s=>this.onMouseUp(e)))}h.disableGlobalTextSelection(this.dockManager.config.dialogRootElement)}onMouseUp(e){e.mouseMoveHandler.cancel(),e.touchMoveHandler.cancel(),e.mouseUpHandler.cancel(),e.touchUpHandler.cancel(),delete e.mouseMoveHandler,delete e.touchMoveHandler,delete e.mouseUpHandler,delete e.touchUpHandler;for(let t of this.iframeEventHandlers)t.cancel();this.iframeEventHandlers=[],h.enableGlobalTextSelection(this.dockManager.config.dialogRootElement)}_performDrag(e,t,i){let n={};n.left=h.getPixels(this.topLevelElement.style.left),n.top=h.getPixels(this.topLevelElement.style.top),n.width=this.topLevelElement.clientWidth,n.height=this.topLevelElement.clientHeight,e.east&&this._resizeEast(t,n),e.west&&this._resizeWest(t,n),e.north&&this._resizeNorth(i,n),e.south&&this._resizeSouth(i,n)}_resizeWest(e,t){this._resizeContainer(e,0,-e,0,t)}_resizeEast(e,t){this._resizeContainer(0,0,e,0,t)}_resizeNorth(e,t){this._resizeContainer(0,e,0,-e,t)}_resizeSouth(e,t){this._resizeContainer(0,0,0,e,t)}_resizeContainer(e,t,i,n,o){o.left+=e,o.top+=t,o.width+=i,o.height+=n;let s=50,l=50;o.width=Math.max(o.width,s),o.height=Math.max(o.height,l),this.topLevelElement.style.left=o.left+"px",this.topLevelElement.style.top=o.top+"px",this.resize(o.width,o.height)}};var b=class r{elementDialog;draggable;panel;dockManager;eventListener;position;resizable;disableResize;mouseDownHandler;onKeyPressBound;noDocking;isHidden;keyPressHandler;focusHandler;grayoutParent;contextmenuHandler;_ctxMenu;_windowsContextMenuCloseBound;constructor(e,t,i,n){this.panel=e,this.dockManager=t,this.eventListener=t,this.grayoutParent=i,this.disableResize=n,this._initialize(),this.dockManager.context.model.dialogs.push(this),this.position=t.defaultDialogPosition,this.dockManager.notifyOnCreateDialog(this),e.isDialog=!0}saveState(e,t){this.position=new v(e,t),this.dockManager.notifyOnChangeDialogPosition(this,e,t)}static fromElement(e,t){return new r(new g(document.getElementById(e),t),t,null)}_initialize(){this.panel.floatingDialog=this,this.elementDialog=Object.assign(document.createElement("div"),{floatingDialog:this}),this.elementDialog.tabIndex=0,this.elementDialog.appendChild(this.panel.elementPanel),this.draggable=new R(this,this.panel,this.elementDialog,this.panel.elementTitle),this.resizable=new I(this,this.draggable,this.draggable.topLevelElement,this.disableResize),this.dockManager.config.dialogRootElement.appendChild(this.elementDialog),this.elementDialog.classList.add("dialog-floating"),this.focusHandler=new c(this.elementDialog,"focus",this.onFocus.bind(this),!0),this.mouseDownHandler=new c(this.elementDialog,"pointerdown",this.onMouseDown.bind(this),!0),this.keyPressHandler=new c(this.elementDialog,"keypress",this.dockManager.onKeyPressBound,!0),this.contextmenuHandler=new c(this.panel.elementTitle,"contextmenu",this.oncontextMenuClicked.bind(this)),this.resize(this.panel.elementPanel.clientWidth,this.panel.elementPanel.clientHeight),this.isHidden=!1,this.grayoutParent!=null&&this.grayoutParent.grayOut(!0),this.bringToFront()}setPosition(e,t){let i=this.dockManager.config.dialogRootElement.getBoundingClientRect();this.position=new v(e-i.left,t-i.top),this.elementDialog.style.left=e-i.left+"px",this.elementDialog.style.top=t-i.top+"px",this.panel.setDialogPosition(e,t),this.dockManager.notifyOnChangeDialogPosition(this,e,t)}getPosition(){return new v(this.position?this.position.x:0,this.position?this.position.y:0)}onFocus(){this.dockManager.activePanel!=this.panel&&(this.dockManager.activePanel=this.panel)}onMouseDown(e){e.button!=2&&this.bringToFront()}destroy(){this.panel.lastDialogSize={width:this.resizable.width,height:this.resizable.height},this.focusHandler&&(this.focusHandler.cancel(),delete this.focusHandler),this.mouseDownHandler&&(this.mouseDownHandler.cancel(),delete this.mouseDownHandler),this.keyPressHandler&&(this.keyPressHandler.cancel(),delete this.keyPressHandler),this.contextmenuHandler&&(this.contextmenuHandler.cancel(),delete this.contextmenuHandler),h.removeNode(this.elementDialog),this.draggable.removeDecorator(),h.removeNode(this.panel.elementPanel),h.arrayRemove(this.dockManager.context.model.dialogs,this),delete this.panel.floatingDialog,this.grayoutParent&&this.grayoutParent.grayOut(!1)}resize(e,t){this.resizable.resize(e,t)}setTitle(e){this.panel.setTitle(e)}setTitleIcon(e){this.panel.setTitleIcon(e)}bringToFront(){this.panel.elementContentContainer.style.zIndex=this.dockManager.zIndexDialogCounter++,this.elementDialog.style.zIndex=this.dockManager.zIndexDialogCounter++,this.dockManager.activePanel=this.panel}hide(){this.elementDialog.style.zIndex="0",this.panel.elementContentContainer.style.zIndex="",this.elementDialog.style.display="none",this.isHidden||(this.isHidden=!0,this.dockManager.notifyOnHideDialog(this)),this.grayoutParent&&this.grayoutParent.grayOut(!1)}close(){this.hide(),this.remove(),this.dockManager.notifyOnClosePanel(this.panel),this.destroy()}remove(){this.elementDialog.parentNode.removeChild(this.elementDialog)}show(){this.panel.elementContentContainer.style.zIndex=this.dockManager.zIndexDialogCounter++,this.elementDialog.style.zIndex=this.dockManager.zIndexDialogCounter++,this.elementDialog.style.display="block",this.isHidden&&(this.isHidden=!1,this.dockManager.notifyOnShowDialog(this))}static createContextMenuContentCallback=(e,t)=>{if(!e.panel._hideCloseButton)return[];let i=[],n=document.createElement("div");if(n.innerText=k.getString("CloseDialog"),i.push(n),n.onclick=()=>{e.panel.close(),e.closeContextMenu()},e.dockManager.config.enableBrowserWindows){let o=document.createElement("div");o.innerText=k.getString("NewBrowserWindow"),i.push(o),o.onclick=()=>{e.panel.undockToBrowserDialog(),e.closeContextMenu()}}return i};oncontextMenuClicked(e){if(e.preventDefault(),!this._ctxMenu&&r.createContextMenuContentCallback){let t=r.createContextMenuContentCallback(this,this.dockManager.context.model.documentManagerNode.children);if(t.length==0)return;this._ctxMenu=document.createElement("div"),this._ctxMenu.className="dockspab-tab-handle-context-menu",this._ctxMenu.append(...t),this._ctxMenu.style.left=e.pageX+"px",this._ctxMenu.style.top=e.pageY+"px",document.body.appendChild(this._ctxMenu),this._windowsContextMenuCloseBound=this.windowsContextMenuClose.bind(this),window.addEventListener("pointerup",this._windowsContextMenuCloseBound)}else this.closeContextMenu()}closeContextMenu(){this._ctxMenu&&(document.body.removeChild(this._ctxMenu),delete this._ctxMenu,window.removeEventListener("pointerup",this._windowsContextMenuCloseBound))}windowsContextMenuClose(e){let t=e.composedPath();for(let i in t)if(t[i]==this._ctxMenu)return;this.closeContextMenu()}};var O=class{constructor(){this.escClosesWindow=!0,this.escClosesDialog=!0,this.dialogRootElement=document.body,this.moveOnlyWithinDockConatiner=!1,this.enableBrowserWindows=!0}escClosesWindow;escClosesDialog;dialogRootElement;moveOnlyWithinDockConatiner;enableBrowserWindows};var L=class{rootNode;documentManagerNode;dialogs;constructor(){this.rootNode=this.documentManagerNode=void 0}};var M=class{parent;container;children;constructor(e){this.container=e,this.children=[]}detachFromParent(){this.parent&&(this.parent.removeChild(this),delete this.parent)}removeChild(e){let t=this.children.indexOf(e);t>=0&&this.children.splice(t,1)}addChild(e){e.detachFromParent(),e.parent=this,this.children.push(e)}addChildBefore(e,t){this._addChildWithDirection(e,t,!0)}addChildAfter(e,t){this._addChildWithDirection(e,t,!1)}_addChildWithDirection(e,t,i){t.detachFromParent(),t.parent=this;let n=this.children.indexOf(e),o=this.children.slice(0,n),s=this.children.slice(n+1,this.children.length);this.children=o.slice(0),i?(this.children.push(t),this.children.push(e)):(this.children.push(e),this.children.push(t)),Array.prototype.push.apply(this.children,s)}performLayout(e){let t=this.children.map(i=>i.container);this.container.performLayout(t,e)}debugDumpTree(e){e===void 0&&(e=0);let t=this.container.name;for(let n=0;n<e;n++)t=" "+t;let i=this.parent===void 0?"null":this.parent.container.containerType;console.log(">>"+t+" ["+i+"]"),this.children.forEach(n=>{n.debugDumpTree(e+1)})}};var A=class{previousContainer;nextContainer;stackedVertical;barElement;pointerDownHandler;minPanelSize;readyToProcessNextDrag;dockSpawnResizedEvent;previousMouseEvent;pointerMovedHandler;pointerUpHandler;iframeEventHandlers;constructor(e,t,i){this.previousContainer=e,this.nextContainer=t,this.stackedVertical=i,this.barElement=document.createElement("div"),this.barElement.classList.add(i?"splitbar-horizontal":"splitbar-vertical"),this.pointerDownHandler=new c(this.barElement,"pointerdown",this.onPointerDown.bind(this)),this.minPanelSize=50,this.readyToProcessNextDrag=!0,this.dockSpawnResizedEvent=new CustomEvent("DockSpawnResizedEvent",{composed:!0,bubbles:!0}),this.iframeEventHandlers=[]}onPointerDown(e){this.barElement.setPointerCapture(e.pointerId),this._startDragging(e)}onPointerUp(e){this.barElement.releasePointerCapture(e.pointerId),this._stopDragging()}onPointerMovedIframe(e,t){e.changedTouches!=null&&(e=e.changedTouches[0]);let i=t.getBoundingClientRect();this.handleMoveEvent({x:parseInt(""+e.clientX+i.x),y:parseInt(""+e.clientY+i.y)})}onPointerMoved(e){e.changedTouches!=null&&(e=e.changedTouches[0]),this.handleMoveEvent({x:parseInt(""+e.clientX),y:parseInt(""+e.clientY)})}handleMoveEvent(e){if(!this.readyToProcessNextDrag)return;this.readyToProcessNextDrag=!1;let t=this.previousContainer.dockManager;t.suspendLayout(this.previousContainer),t.suspendLayout(this.nextContainer);let i=e.x-this.previousMouseEvent.x,n=e.y-this.previousMouseEvent.y;this._performDrag(i,n),this.previousMouseEvent=e,this.readyToProcessNextDrag=!0,t.resumeLayout(this.previousContainer),t.resumeLayout(this.nextContainer)}_performDrag(e,t){let i=this.previousContainer.containerElement.clientWidth,n=this.previousContainer.containerElement.clientHeight,o=this.nextContainer.containerElement.clientWidth,s=this.nextContainer.containerElement.clientHeight,l=this.stackedVertical?n:i,a=this.stackedVertical?s:o,u=this.stackedVertical?t:e,d=l+u,p=a-u;(d<this.minPanelSize||p<this.minPanelSize)&&!(d<this.minPanelSize&&d>l||p<this.minPanelSize&&p>a)||(this.stackedVertical?(this.previousContainer.resize(i,d),this.nextContainer.resize(o,p)):u<0?(this.previousContainer.resize(d,n),this.nextContainer.resize(p,s)):(this.nextContainer.resize(p,s),this.previousContainer.resize(d,n),this.nextContainer.resize(p,s)),document.dispatchEvent(this.dockSpawnResizedEvent))}_startDragging(e){if(h.disableGlobalTextSelection(this.previousContainer.dockManager.config.dialogRootElement),this.pointerMovedHandler&&(this.pointerMovedHandler.cancel(),delete this.pointerMovedHandler),this.pointerUpHandler&&(this.pointerUpHandler.cancel(),delete this.pointerUpHandler),this.pointerMovedHandler=new c(window,"pointermove",this.onPointerMoved.bind(this)),this.pointerUpHandler=new c(window,"pointerup",this.onPointerUp.bind(this)),this.previousContainer.dockManager.iframes)for(let t of this.previousContainer.dockManager.iframes){let i=this.onPointerMovedIframe.bind(this);this.iframeEventHandlers.push(new c(t.contentWindow,"pointermove",n=>i(n,t))),this.iframeEventHandlers.push(new c(t.contentWindow,"pointerup",this.onPointerUp.bind(this)))}this.previousMouseEvent={x:e.clientX,y:e.clientY}}_stopDragging(){h.enableGlobalTextSelection(this.previousContainer.dockManager.config.dialogRootElement),this.pointerMovedHandler&&(this.pointerMovedHandler.cancel(),delete this.pointerMovedHandler),this.pointerUpHandler&&(this.pointerUpHandler.cancel(),delete this.pointerUpHandler);for(let e of this.iframeEventHandlers)e.cancel();this.iframeEventHandlers=[]}};var F=class{panelElement;spiltterBars;stackedVertical;childContainers;constructor(e,t){this.childContainers=e,this.stackedVertical=t,this.panelElement=document.createElement("div"),this.spiltterBars=[],this._buildSplitterDOMAndAddElements()}_buildSplitterDOMAndAddElements(){if(this.childContainers.length<=1)throw new Error("Splitter panel should contain atleast 2 panels");this.spiltterBars=[];let e=null;for(let i=0;i<this.childContainers.length-1;i++){let n=this.childContainers[i],o=this.childContainers[i+1],s=new A(n,o,this.stackedVertical);this.spiltterBars.push(s),Array.from(this.panelElement.children).includes(n.containerElement)||this._insertContainerIntoPanel(n,e),this.panelElement.insertBefore(s.barElement,n.containerElement.nextSibling),e=s.barElement}let t=this.childContainers.slice(-1)[0];Array.from(this.panelElement.children).includes(t.containerElement)||this._insertContainerIntoPanel(t,e)}performLayout(e,t){(!h.arrayEqual(this.childContainers,e)||t)&&(this.childContainers.forEach(n=>{e.some(o=>o==n)||n.containerElement&&(n.containerElement.classList.remove("splitter-container-vertical"),n.containerElement.classList.remove("splitter-container-horizontal"),h.removeNode(n.containerElement))}),this.spiltterBars.forEach(n=>{h.removeNode(n.barElement)}),this.childContainers=e,this._buildSplitterDOMAndAddElements())}removeFromDOM(){this.childContainers.forEach(e=>{e.containerElement&&(e.containerElement.classList.remove("splitter-container-vertical"),e.containerElement.classList.remove("splitter-container-horizontal"),h.removeNode(e.containerElement))}),this.spiltterBars.forEach(e=>{h.removeNode(e.barElement)})}destroy(){this.removeFromDOM(),this.panelElement.parentNode.removeChild(this.panelElement)}_insertContainerIntoPanel(e,t){if(!e){console.error("container is undefined");return}e.containerElement.parentNode!=this.panelElement&&(h.removeNode(e.containerElement),t?this.panelElement.insertBefore(e.containerElement,t.nextSibling):this.panelElement.children.length>0?this.panelElement.insertBefore(e.containerElement,this.panelElement.children[0]):this.panelElement.appendChild(e.containerElement)),e.containerElement.classList.add(this.stackedVertical?"splitter-container-vertical":"splitter-container-horizontal")}setContainerRatio(e,t){let i=this.stackedVertical?this.panelElement.clientHeight:this.panelElement.clientWidth,n=i*t,o=this.stackedVertical?this.spiltterBars[0].barElement.clientHeight:this.spiltterBars[0].barElement.clientWidth,l=(i-n-o*this.spiltterBars.length)/i;for(let a=0;a<this.childContainers.length;a++){let u=this.childContainers[a],d;u!==e?(d=this.stackedVertical?u.containerElement.parentElement.clientHeight:u.containerElement.parentElement.clientWidth,d*=l):d=n,this.stackedVertical?u.resize(u.width,Math.floor(d)):u.resize(Math.floor(d),u.height)}}getRatios(){let e=this.stackedVertical?this.spiltterBars[0].barElement.clientHeight:this.spiltterBars[0].barElement.clientWidth,t=(this.stackedVertical?this.panelElement.clientHeight:this.panelElement.clientWidth)-e*this.spiltterBars.length,i=[];for(let n=0;n<this.childContainers.length;n++){let o=this.childContainers[n],s=this.stackedVertical?o.containerElement.clientHeight:o.containerElement.clientWidth;i.push(s/t)}return i}setRatios(e){let t=this.stackedVertical?this.spiltterBars[0].barElement.clientHeight:this.spiltterBars[0].barElement.clientWidth,i=(this.stackedVertical?this.panelElement.clientHeight:this.panelElement.clientWidth)-t*this.spiltterBars.length;for(let n=0;n<this.childContainers.length;n++){let o=this.childContainers[n],s=i*e[n];this.stackedVertical?o.resize(o.width,Math.floor(s)):o.resize(Math.floor(s),o.height)}}resize(e,t){if(this.childContainers.length<=1)return;this.panelElement.style.width=e+"px",this.panelElement.style.height=t+"px";let i;for(i=0;i<this.childContainers.length;i++){let d=this.childContainers[i];if(this.stackedVertical?d.resize(e,d.height?d.height:t):d.resize(d.width?d.width:e,t),i<this.spiltterBars.length){let p=this.spiltterBars[i];this.stackedVertical?p.barElement.style.width=e+"px":p.barElement.style.height=t+"px"}}let n=0;this.childContainers.forEach(d=>{let p=this.stackedVertical?d.height:d.width;n+=p});let o=this.spiltterBars[0].barElement.getBoundingClientRect(),s=this.stackedVertical?o.height:o.width,l=this.stackedVertical?t:e;l-=s*this.spiltterBars.length,n=Math.max(n,1);let a=l/n,u=0;for(i=0;i<this.childContainers.length;i++){let d=this.childContainers[i];d.containerElement.style.display=="none"&&(d.containerElement.style.display="block");let p=this.stackedVertical?d.containerElement.clientHeight:d.containerElement.clientWidth,m=a>1?Math.floor(p*a):Math.ceil(p*a);u+=m,i===this.childContainers.length-1&&(m+=l-u),this.stackedVertical?d.resize(d.width,m):d.resize(m,d.height)}}};var z=class{name;dockManager;minimumAllowedChildNodes;splitterPanel;stackedVertical;containerElement;_cachedWidth;_cachedHeight;state;containerType;constructor(e,t,i,n){arguments.length!==0&&(this.name=e,this.dockManager=t,this.stackedVertical=n,this.splitterPanel=new F(i,this.stackedVertical),this.containerElement=this.splitterPanel.panelElement,this.minimumAllowedChildNodes=2)}resize(e,t){this.splitterPanel.resize(e,t),this._cachedWidth=e,this._cachedHeight=t}performLayout(e,t=!1){this.splitterPanel.performLayout(e,t)}setActiveChild(){}destroy(){this.splitterPanel.destroy()}setContainerRatio(e,t){this.splitterPanel.setContainerRatio(e,t),this.resize(this.width,this.height)}getRatios(){return this.splitterPanel.getRatios()}setRatios(e){this.splitterPanel.setRatios(e),this.resize(this.width,this.height)}saveState(e){e.width=this.width,e.height=this.height}loadState(e){this.state={width:e.width,height:e.height}}get width(){return this._cachedWidth===void 0&&(this._cachedWidth=this.splitterPanel.panelElement.clientWidth),this._cachedWidth}get height(){return this._cachedHeight===void 0&&(this._cachedHeight=this.splitterPanel.panelElement.clientHeight),this._cachedHeight}};var B=class extends z{constructor(e,t){super(h.getNextId("horizontal_splitter_"),e,t,!1),this.containerType=x.horizontal}};var S=class extends z{constructor(e,t){super(h.getNextId("vertical_splitter_"),e,t,!0),this.containerType=x.vertical}};var V=class r{parent;elementBase;elementText;elementCloseButton;undockInitiator;mouseDownHandler;touchDownHandler;closeButtonHandler;closeButtonTouchHandler;auxClickHandler;contextMenuHandler;mouseMoveHandler;touchMoveHandler;mouseUpHandler;touchUpHandler;stargDragPosition;dragged;eventListeners;undockListener;prev;current;direction;_ctxMenu;_windowsContextMenuCloseBound;constructor(e){this.parent=e;let t=this._performUndock.bind(this);this.elementBase=document.createElement("div"),this.elementText=document.createElement("div"),this.elementCloseButton=document.createElement("div"),this.elementBase.classList.add("dockspan-tab-handle"),this.elementBase.classList.add("disable-selection"),this.elementText.classList.add("dockspan-tab-handle-text"),this.elementCloseButton.classList.add("dockspan-tab-handle-close-button"),this.elementBase.appendChild(this.elementText),this.parent.host.displayCloseButton&&this.elementBase.appendChild(this.elementCloseButton),(this.parent.container._hideCloseButton||this.parent.container._grayOut)&&(this.elementCloseButton.style.display="none"),this.parent.host.tabListElement.appendChild(this.elementBase);let i=e.container,n=i.getRawTitle();this.undockListener={onDockEnabled:o=>{this.undockEnabled(o.state)},onHideCloseButton:o=>{this.hideCloseButton(o.state)}},this.eventListeners=[],i.addListener(this.undockListener),this.elementText.innerHTML=n,this.elementText.title=this.elementText.innerText,this.undockInitiator=new _(this.elementBase,t),this.undockInitiator.enabled=!0,this.mouseDownHandler=new c(this.elementBase,"mousedown",this.onMouseDown.bind(this)),this.touchDownHandler=new c(this.elementBase,"touchstart",this.onMouseDown.bind(this),{passive:!1}),this.closeButtonHandler=new c(this.elementCloseButton,"click",this.onCloseButtonClicked.bind(this)),this.closeButtonTouchHandler=new c(this.elementCloseButton,"touchstart",this.onCloseButtonClicked.bind(this)),this.auxClickHandler=new c(this.elementBase,"auxclick",this.onCloseButtonClicked.bind(this)),i.panelType==w.document&&(this.contextMenuHandler=new c(this.elementBase,"contextmenu",this.oncontextMenuClicked.bind(this))),this.windowsContextMenuClose=this.windowsContextMenuClose.bind(this)}addListener(e){this.eventListeners.push(e)}removeListener(e){this.eventListeners.splice(this.eventListeners.indexOf(e),1)}undockEnabled(e){this.undockInitiator.enabled=e}static createContextMenuContentCallback=(e,t)=>{let i=[],n=document.createElement("div");n.innerText=k.getString("CloseAll"),i.push(n),n.onclick=()=>{let s=t.length;for(let l=s-1;l>=0;l--){let a=t[l].container;a.panelType==w.document&&a.close()}e.closeContextMenu()};let o=document.createElement("div");if(o.innerText=k.getString("CloseAllButThis"),i.push(o),o.onclick=()=>{let s=t.length;for(let l=s-1;l>=0;l--){let a=t[l].container;e.parent.container!=a&&a.panelType==w.document&&a.close()}e.closeContextMenu()},e.parent.container.dockManager.config.enableBrowserWindows){let s=document.createElement("div");s.innerText=k.getString("NewBrowserWindow"),i.push(s),s.onclick=()=>{e.parent.container.undockToBrowserDialog(),e.closeContextMenu()}}return i};oncontextMenuClicked(e){if(e.preventDefault(),!this._ctxMenu&&r.createContextMenuContentCallback){let t=r.createContextMenuContentCallback(this,this.parent.container.dockManager.context.model.documentManagerNode.children);if(t.length==0)return;this._ctxMenu=document.createElement("div"),this._ctxMenu.className="dockspab-tab-handle-context-menu",this._ctxMenu.append(...t),this._ctxMenu.style.left=e.pageX+"px",this._ctxMenu.style.top=e.pageY+"px",document.body.appendChild(this._ctxMenu),window.addEventListener("mouseup",this.windowsContextMenuClose)}else this.closeContextMenu()}closeContextMenu(){this._ctxMenu&&(document.body.removeChild(this._ctxMenu),delete this._ctxMenu,window.removeEventListener("mouseup",this.windowsContextMenuClose))}windowsContextMenuClose(e){let t=e.composedPath();for(let i in t)if(t[i]==this._ctxMenu)return;this.closeContextMenu()}onMouseDown(e){e.preventDefault(),this.parent.onSelected(),this.mouseMoveHandler&&(this.mouseMoveHandler.cancel(),delete this.mouseMoveHandler),this.touchMoveHandler&&(this.touchMoveHandler.cancel(),delete this.touchMoveHandler),this.mouseUpHandler&&(this.mouseUpHandler.cancel(),delete this.mouseUpHandler),this.touchUpHandler&&(this.touchUpHandler.cancel(),delete this.touchUpHandler),this.stargDragPosition=e.clientX,this.mouseMoveHandler=new c(window,"mousemove",this.onMouseMove.bind(this)),this.touchMoveHandler=new c(window,"touchmove",this.onMouseMove.bind(this),{passive:!1}),this.mouseUpHandler=new c(window,"mouseup",this.onMouseUp.bind(this)),this.touchUpHandler=new c(window,"touchend",this.onMouseUp.bind(this))}onMouseUp(){this.elementBase&&this.elementBase.classList.remove("dockspan-tab-handle-dragged"),this.dragged=!1,this.mouseMoveHandler&&this.mouseMoveHandler.cancel(),this.touchMoveHandler&&this.touchMoveHandler.cancel(),this.mouseUpHandler&&this.mouseUpHandler.cancel(),this.touchUpHandler&&this.touchUpHandler.cancel(),delete this.mouseMoveHandler,delete this.touchMoveHandler,delete this.mouseUpHandler,delete this.touchUpHandler}moveTabEvent(e,t){e.eventListeners.forEach(i=>{i.onMoveTab&&i.onMoveTab({self:e,state:t})})}onMouseMove(e){if(e.preventDefault(),e.buttons==0){this.onMouseUp();return}if(!(Math.abs(this.stargDragPosition-e.clientX)<10)&&this.elementBase!=null){this.elementBase.classList.add("dockspan-tab-handle-dragged"),this.dragged=!0,this.prev=this.current,this.current=e.clientX,this.direction=this.current-this.prev;let t=this.elementBase.getBoundingClientRect(),i=this.direction<0?{state:"left",bound:t.left,rect:t}:{state:"right",bound:t.right,rect:t};(e.clientX<t.left&&this.direction<0||e.clientX>t.left+t.width&&this.direction>0)&&this.moveTabEvent(this,i.state)}}hideCloseButton(e){this.elementCloseButton.style.display=e?"none":"block"}updateTitle(){if(this.parent.container instanceof g){let t=this.parent.container.getRawTitle();this.elementText.innerHTML=t}}destroy(){this.parent.container.removeListener(this.undockListener),this.mouseDownHandler.cancel(),this.touchDownHandler.cancel(),this.closeButtonHandler.cancel(),this.closeButtonTouchHandler.cancel(),this.auxClickHandler.cancel(),this.mouseMoveHandler&&this.mouseMoveHandler.cancel(),this.touchMoveHandler&&this.touchMoveHandler.cancel(),this.mouseUpHandler&&this.mouseUpHandler.cancel(),this.touchUpHandler&&this.touchUpHandler.cancel(),this.contextMenuHandler&&this.contextMenuHandler.cancel(),this.elementBase&&(h.removeNode(this.elementBase),delete this.elementBase),this.elementCloseButton&&(h.removeNode(this.elementCloseButton),delete this.elementCloseButton)}_performUndock(e,t){return this.parent.container.containerType==="panel"?(this.undockInitiator.enabled=!1,this.parent.container.performUndockToDialog(e,t)):null}onCloseButtonClicked(e){this.elementCloseButton.style.display!=="none"&&e.button!==2&&this.parent.container.containerType==="panel"&&this.parent.container.close()}setSelected(e){e?this.elementBase.classList.add("dockspan-tab-handle-selected"):(this.elementBase.classList.remove("dockspan-tab-handle-selected"),this.elementBase.classList.remove("dockspan-tab-handle-active"))}setActive(e){this.elementBase&&(e?this.elementBase.classList.add("dockspan-tab-handle-active"):this.elementBase.classList.remove("dockspan-tab-handle-active"))}};var N=class{selected;host;container;panel;handle;containerElement;_initContent;constructor(e,t){arguments.length!==0&&(this.selected=!1,this.host=e,this.container=t,this.handle=new V(this),this.containerElement=t.containerElement,t instanceof g&&(this.panel=t,this.panel.onTitleChanged=this.onTitleChanged.bind(this),this.onTitleChanged()),t.tabPage=this)}onTitleChanged(){this.handle.updateTitle(),this.panel&&(this.panel.hasChanges?this.handle.elementText.classList.add("panel-has-changes"):this.handle.elementText.classList.remove("panel-has-changes"))}destroy(){if(this.handle.destroy(),this.container instanceof g){let e=this.container;delete e.onTitleChanged}this.host.dockManager.activePanel==this.panel&&(this.host.dockManager.activePanel=null),this.container.tabPage=null,h.removeNode(this.containerElement)}onSelected(){this.host.onTabPageSelected(this,!0),this.container instanceof g&&this.container.dockManager.notifyOnTabChange(this)}setSelected(e,t){if(this.selected=e,this.handle.setSelected(e),this._initContent||this.host.contentElement.appendChild(this.containerElement),this._initContent=!0,this.selected){this.containerElement.style.display="block",this.panel.setVisible(!0);let i=this.host.contentElement.clientWidth,n=this.host.contentElement.clientHeight;this.container.resize(i,n),t&&(this.host.dockManager.activePanel=this.container)}else this.containerElement.style.display="none",this.panel.setVisible(!1)}resize(e,t){this.container.resize(e,t)}};var q=class{displayCloseButton;dockManager;tabStripDirection;hostElement;tabListElement;separatorElement;contentElement;createTabPage;tabHandleListener;eventListeners;pages;activeTab;_resizeRequested;mouseDownHandler;focusHandler;constructor(e,t,i){if(t===void 0&&(t=y.BOTTOM),i===void 0&&(i=!1),this.dockManager=e,this.tabStripDirection=t,this.displayCloseButton=i,this.pages=[],this.eventListeners=[],this.tabHandleListener={onMoveTab:n=>{this.onMoveTab(n)}},this.hostElement=document.createElement("div"),this.tabListElement=document.createElement("div"),this.separatorElement=document.createElement("div"),this.contentElement=document.createElement("div"),this.contentElement.tabIndex=0,this.createTabPage=this._createDefaultTabPage,this.tabStripDirection===y.BOTTOM)this.hostElement.appendChild(this.contentElement),this.hostElement.appendChild(this.separatorElement),this.hostElement.appendChild(this.tabListElement);else if(this.tabStripDirection===y.TOP)this.hostElement.appendChild(this.tabListElement),this.hostElement.appendChild(this.separatorElement),this.hostElement.appendChild(this.contentElement);else throw new Error("Only top and bottom tab strip orientations are supported");this.hostElement.classList.add("dockspan-tab-host"),this.tabListElement.classList.add("dockspan-tab-handle-list-container"),this.separatorElement.classList.add("dockspan-tab-handle-content-seperator"),this.contentElement.classList.add("dockspan-tab-content"),this.contentElement.tabIndex=0,this.focusHandler=new c(this.contentElement,"focus",this.onFocus.bind(this),!0),this.mouseDownHandler=new c(this.contentElement,"mousedown",this.onMousedown.bind(this),!0)}onFocus(){this.activeTab&&this.dockManager.activePanel!=this.activeTab.panel&&(this.dockManager.activePanel=this.activeTab.panel)}setActive(e){e?this.separatorElement.classList.add("dockspan-tab-handle-content-seperator-active"):this.separatorElement.classList.remove("dockspan-tab-handle-content-seperator-active"),this.activeTab&&this.activeTab.handle.setActive(e)}onMousedown(){this.activeTab&&this.dockManager.activePanel!=this.activeTab.panel&&(this.dockManager.activePanel=this.activeTab.panel)}onMoveTab(e){let t=Array.prototype.slice.call(this.tabListElement.childNodes).indexOf(e.self.elementBase);this.change(this,e.self,e.state,t)}performTabsLayout(e){this.pages=h.orderByIndexes(this.pages,e);let t=this.tabListElement.childNodes,i=[];for(let n in t)t[n].nodeType===1&&i.push(t[n]);i=h.orderByIndexes(i,e);for(let n=0;n<i.length;++n)this.tabListElement.appendChild(i[n]);this.activeTab&&this.onTabPageSelected(this.activeTab,!1)}getActiveTab(){return this.activeTab}addListener(e){this.eventListeners.push(e)}removeListener(e){this.eventListeners.splice(this.eventListeners.indexOf(e),1)}change(e,t,i,n){this.eventListeners.forEach(o=>{o.onChange&&o.onChange({host:e,handle:t,state:i,index:n})})}_createDefaultTabPage(e,t){return new N(e,t)}setActiveTab(e){let t;this.pages.forEach(i=>{i.container===e&&(t=i)}),this.pages.length>0&&t&&(this.onTabPageSelected(t,!0),this.dockManager.activePanel=e)}resize(e,t){this.hostElement.style.width=e+"px",this.hostElement.style.height=t+"px";let i=this.tabListElement.clientHeight;this._resizeRequested||requestAnimationFrame(()=>this.resizeTabListElement(e,t)),this._resizeRequested=!0;let n=this.separatorElement.clientHeight,o=t-i-n;this.contentElement.style.height=o+"px",this.activeTab&&this.activeTab.resize(e,o)}resizeTabListElement(e,t){if(this._resizeRequested=!1,this.pages.length===0)return;let i=0;this.pages.forEach(o=>{let s=o.handle;s.elementBase!=null&&(s.elementBase.style.width="",i+=s.elementBase.clientWidth)});let n=e/i;n>1.2||this.pages.forEach((o,s)=>{let l=o.handle,a=n*l.elementBase.clientWidth;s===this.pages.length-1&&(a=a-5),l.elementBase.style.width=a+"px"})}performLayout(e){this.pages.forEach(n=>{if(!e.some(o=>o==n.container)){n.handle.removeListener(this.tabHandleListener),n.destroy();let o=this.pages.indexOf(n);o>-1&&this.pages.splice(o,1)}});let t=this.activeTab;delete this.activeTab;let i=e.filter(n=>n.containerType==="panel");i.length>0?(i.forEach(n=>{let o=null;this.pages.some(s=>s.container==n?(o=s,!0):!1)||(o=this.createTabPage(this,n),o.handle.addListener(this.tabHandleListener),this.pages.push(o)),t&&o.container===t.container&&(this.activeTab=o)}),this._setTabHandlesVisible(!0)):this._setTabHandlesVisible(!1),this.activeTab&&this.onTabPageSelected(this.activeTab,!1)}_setTabHandlesVisible(e){e?(this.tabListElement.classList.add("dockspan-tab-handle-list-container-visible"),this.separatorElement.classList.add("dockspan-tab-handle-content-seperator-visible")):(this.tabListElement.classList.remove("dockspan-tab-handle-list-container-visible"),this.separatorElement.classList.remove("dockspan-tab-handle-content-seperator-visible"))}onTabPageSelected(e,t){this.activeTab=e,this.pages.forEach(i=>{let n=i===e;i.setSelected(n,t)})}};var H=class{dockManager;tabOrientation;name;element;containerElement;containerType;minimumAllowedChildNodes;tabHost;tabHostListener;state;constructor(e,t){t===void 0&&(t=y.BOTTOM),this.dockManager=e,this.tabOrientation=t,this.name=h.getNextId("fill_"),this.element=document.createElement("div"),this.containerElement=this.element,this.containerType=x.fill,this.minimumAllowedChildNodes=2,this.element.classList.add("dock-container"),this.element.classList.add("dock-container-fill"),this.tabHost=new q(e,this.tabOrientation),this.tabHostListener={onChange:i=>{this.dockManager._requestTabReorder(this,i)}},this.tabHost.addListener(this.tabHostListener),this.element.appendChild(this.tabHost.hostElement)}setActiveChild(e){this.tabHost.setActiveTab(e)}resize(e,t){this.element.style.width=e+"px",this.element.style.height=t+"px",this.tabHost.resize(e,t)}performLayout(e){this.tabHost.performLayout(e)}destroy(){this.tabHost.pages.forEach(e=>e.destroy()),h.removeNode(this.element)&&delete this.element}saveState(e){e.width=this.width,e.height=this.height}loadState(e){this.state={width:e.width,height:e.height}}get width(){return this.element.clientWidth}set width(e){this.element.style.width=e+"px"}get height(){return this.element.clientHeight}set height(e){this.element.style.height=e+"px"}};var X=class extends N{constructor(e,t){super(e,t),this.container.containerType==="panel"&&(this.panel=t,this.containerElement=this.panel.elementContentWrapper,h.removeNode(this.containerElement))}destroy(){super.destroy(),this.panel.elementContentHost.appendChild(this.containerElement)}};var T=class extends H{constructor(e){super(e,y.TOP),this.minimumAllowedChildNodes=0,this.element.classList.add("document-manager"),this.tabHost.createTabPage=this._createDocumentTabPage,this.tabHost.displayCloseButton=!0}_createDocumentTabPage(e,t){return new X(e,t)}saveState(e){super.saveState(e),e.documentManager=!0}selectedTab(){return this.tabHost.activeTab}};var Y=class{dockManager;documentManagerNode;constructor(e){this.dockManager=e}async deserialize(e){let t=JSON.parse(e),i=new L;return i.rootNode=await this._buildGraph(t.graphInfo),i.dialogs=await this._buildDialogs(t.dialogsInfo),i.documentManagerNode=this.documentManagerNode,i}async _buildGraph(e){let t=e.children,i=[];for(let s of t){let l=await this._buildGraph(s);l!==null&&i.push(l)}let n=await this._createContainer(e,i);if(n===null)return null;let o=new M(n);n instanceof T&&(this.documentManagerNode=o),o.children=i;for(let s of o.children.reverse())s.parent=o;return o.children.reverse(),o}async _createContainer(e,t){let i=e.containerType,n=e.state,o,s=[];for(let l of t)s.push(l.container);if(i==="panel"){if(o=await g.loadFromState(n,this.dockManager),!o.prepareForDocking)return null;o.prepareForDocking(),h.removeNode(o.elementPanel)}else if(i==="horizontal")o=new B(this.dockManager,s);else if(i==="vertical")o=new S(this.dockManager,s);else if(i==="fill")n.documentManager?o=new T(this.dockManager):o=new H(this.dockManager);else throw new Error("Cannot create dock container of unknown type: "+i);return o.loadState(n),o}async _buildDialogs(e){let t=[];for(let i of e){let n=i.containerType,o=i.state,s;if(n==="panel"&&(s=await g.loadFromState(o,this.dockManager),s.prepareForDocking)){h.removeNode(s.elementPanel),s.isDialog=!0;let l=new b(s,this.dockManager);(i.position.x>document.body.clientWidth||i.position.y>document.body.clientHeight-70)&&(i.position.x=20,i.position.y=70),l.setPosition(i.position.x,i.position.y),l.isHidden=i.isHidden,l.isHidden&&l.hide(),t.push(l)}}return t}};var G=class{serialize(e){let t=this._buildGraphInfo(e.rootNode),i=this._buildDialogsInfo(e.dialogs.sort((n,o)=>n.elementDialog.style.zIndex-o.elementDialog.style.zIndex));return JSON.stringify({graphInfo:t,dialogsInfo:i})}_buildGraphInfo(e){let t={};e.container.saveState(t);let i=[];return e.children.forEach(o=>{i.push(this._buildGraphInfo(o))}),{containerType:e.container.containerType,state:t,children:i}}_buildDialogsInfo(e){let t=[];return e.forEach(i=>{let n={},o=i.panel;o.saveState(n);let s={containerType:o.containerType,state:n,position:i.getPosition(),isHidden:i.isHidden};t.push(s)}),t}};var K=class{dockManager;constructor(e){this.dockManager=e}dockLeft(e,t){this._performDock(e,t,"horizontal",!0)}dockRight(e,t){this._performDock(e,t,"horizontal",!1)}dockUp(e,t){this._performDock(e,t,"vertical",!0)}dockDown(e,t){this._performDock(e,t,"vertical",!1)}dockFill(e,t){this._performDock(e,t,"fill",!1)}undock(e){let t=e.parent;if(!t)throw new Error("Cannot undock. panel is not a leaf node");let i=t.children.indexOf(e);if(e.detachFromParent(),t.children.length<t.container.minimumAllowedChildNodes){let n=t.parent;for(let o=0;o<t.children.length;o++){let s=t.children[o];if(n){n.addChildAfter(t,s),t.detachFromParent();let l=t.container.containerElement.clientWidth,a=t.container.containerElement.clientHeight;t.container.destroy(),s.container.resize(l,a),n.performLayout(!1)}else t.detachFromParent(),t.container.destroy(),this.dockManager.setRootNode(s)}}else if(t.performLayout(!1),t.children.length>0){let n=t.children[Math.max(0,i-1)];t.container.setActiveChild(n.container)}this.dockManager.invalidate(),this.dockManager.notifyOnUnDock(e)}close(e){let t=e?.parent;if(!t)throw new Error("Cannot undock. panel is not a leaf node");let i=!1;t.children.length>0&&t.container.tabHost!=null&&(i=t.container.tabHost.getActiveTab().container==e.container);let n=t.children.indexOf(e);if(e.detachFromParent(),t.children.length<t.container.minimumAllowedChildNodes){let o=t.parent;for(let s=0;s<t.children.length;s++){let l=t.children[s];if(o){o.addChildAfter(t,l),t.detachFromParent();let a=t.container.containerElement.clientWidth,u=t.container.containerElement.clientHeight;l.container.resize(a,u),t.container.destroy(),o.performLayout(!1)}else t.detachFromParent(),t.container.destroy(),this.dockManager.setRootNode(l)}}else if(t.performLayout(!1),i){let o=t.children[Math.max(0,n-1)];o!=null&&t.container.setActiveChild(o.container)}this.dockManager.invalidate(),this.dockManager.notifyOnUnDock(e)}reorderTabs(e,t,i,n){let o=e.children.length,s=i==="left"?n:n+1;if(i=="right"&&s>=e.children.length||i=="left"&&s==0)return;let l=Array.apply(null,{length:o}).map(Number.call,Number),a=l.splice(s,1)[0];l.splice(i==="left"?n-1:n,0,a),e.children=h.orderByIndexes(e.children,l),e.container.tabHost.performTabsLayout(l),this.dockManager.notifyOnTabsReorder(e)}_performDock(e,t,i,n){if(e.parent&&e.parent.container.containerType==="fill"&&(e=e.parent),i==="fill"&&e.container.containerType==="fill"){e.addChild(t),e.performLayout(!1),e.container.setActiveChild(t.container),this.dockManager.invalidate(),this.dockManager.notifyOnDock(t);return}let o=this.dockManager.context.model,s,l,a;if(e===o.rootNode){n?(s=this._createDockContainer(i,t,e),l=new M(s),l.addChild(t),l.addChild(e)):(s=this._createDockContainer(i,e,t),l=new M(s),l.addChild(e),l.addChild(t)),this.dockManager.setRootNode(l),this.dockManager.rebuildLayout(this.dockManager.context.model.rootNode),l.container.setActiveChild(t.container),this.dockManager.invalidate(),this.dockManager.notifyOnDock(t);return}if(e.parent.container.containerType!==i){a=e.parent;let p=e.container.containerElement.clientWidth,m=e.container.containerElement.clientHeight,C=a.container.containerElement.clientWidth,E=a.container.containerElement.clientHeight;s=this._createDockContainer(i,t,e),l=new M(s),a.addChildAfter(e,l),e.detachFromParent(),h.removeNode(e.container.containerElement),n?(l.addChild(t),l.addChild(e)):(l.addChild(e),l.addChild(t)),a.performLayout(!1),l.performLayout(!0),l.container.setActiveChild(t.container),l.container.resize(p,m),a.container.resize(C,E)}else a=e.parent,n?a.addChildBefore(e,t):a.addChildAfter(e,t),a.performLayout(!1),a.container.setActiveChild(t.container);let u=t.container.containerElement.clientWidth,d=t.container.containerElement.clientHeight;t.container.resize(u,d),this.dockManager.invalidate(),this.dockManager.notifyOnDock(t)}_forceResizeCompositeContainer=e=>{let t=e.containerElement.clientWidth,i=e.containerElement.clientHeight;e.resize(t,i)};_createDockContainer(e,t,i){if(e==="horizontal")return new B(this.dockManager,[t.container,i.container]);if(e==="vertical")return new S(this.dockManager,[t.container,i.container]);if(e==="fill")return new H(this.dockManager);throw new Error("Failed to create dock container of type: "+e)}getDockBounds(e,t,i,n){let o,s,l,a;if(i==="fill"){let D=e.container.containerElement,W=this.dockManager.element.getBoundingClientRect(),P=D.getBoundingClientRect();return{x:P.left-W.left,y:P.top-W.top,width:D.clientWidth,height:D.clientHeight}}e.parent&&e.parent.container.containerType==="fill"&&(e=e.parent);let u=!1;e.parent&&e.parent.container.containerType===i?(o=e.parent,s=o.children.length,l=o.children.indexOf(e)+(n?0:1)):(o=e,s=1,l=n?0:1,u=!0);let d=5,p=0,m=0;if(i==="vertical"||i==="horizontal"){let D=this._getVaringDimension(o.container,i)-(s-1)*d,W=this._getVaringDimension(t,i),P=D/(D+W);if(p=W*P,u)m=n?0:D*P;else{for(let Z=0;Z<l;Z++)m+=this._getVaringDimension(o.children[Z].container,i);m*=P}}a={};let C=this.dockManager.element.getBoundingClientRect(),E=o.container.containerElement.getBoundingClientRect();return i==="vertical"?(a.x=E.left-C.left,a.y=E.top-C.top+m,a.width=o.container.width,a.height=p):i==="horizontal"&&(a.x=E.left-C.left+m,a.y=E.top-C.top,a.width=p,a.height=o.container.height),a}_getVaringDimension(e,t){return t==="vertical"?e.height:t==="horizontal"?e.width:0}};var j=class{wheel;id;element;hoverIconClass;mouseOverHandler;mouseOutHandler;active;constructor(e,t){this.wheel=e,this.id=t;let i=t.replace("-s","");this.element=document.createElement("div"),this.element.classList.add("dock-wheel-item"),this.element.classList.add("disable-selection"),this.element.classList.add("dock-wheel-"+i),this.element.classList.add("dock-wheel-"+i+"-icon"),this.hoverIconClass="dock-wheel-"+i+"-icon-hover",this.mouseOverHandler=new c(this.element,"pointerover",this.onMouseMoved.bind(this)),this.mouseOutHandler=new c(this.element,"pointerout",this.onMouseOut.bind(this)),this.active=!1}onMouseMoved(){this.active=!0,this.element.classList.add(this.hoverIconClass),this.wheel.onMouseOver(this)}onMouseOut(){this.active=!1,this.element.classList.remove(this.hoverIconClass),this.wheel.onMouseOut()}};var $=class{dockManager;elementMainWheel;elementSideWheel;wheelItems;elementPanelPreview;activeDialog;_activeNode;_visible;constructor(e){this.dockManager=e,this.elementMainWheel=document.createElement("div"),this.elementSideWheel=document.createElement("div"),this.wheelItems={};for(let i in f)this.wheelItems[i]=new j(this,i),i.substr(-2,2)==="-s"?this.elementSideWheel.appendChild(this.wheelItems[i].element):this.elementMainWheel.appendChild(this.wheelItems[i].element);let t=9e6;this.elementMainWheel.classList.add("dock-wheel-base"),this.elementSideWheel.classList.add("dock-wheel-base"),this.elementMainWheel.style.zIndex=String(t+1),this.elementSideWheel.style.zIndex=String(t),this.elementPanelPreview=document.createElement("div"),this.elementPanelPreview.classList.add("dock-wheel-panel-preview"),this.elementPanelPreview.style.zIndex=String(t-1),this.activeDialog=void 0,this._activeNode=void 0,this._visible=!1}get activeNode(){return this._activeNode}set activeNode(e){let t=this._activeNode;this._activeNode=e,t!==this._activeNode&&this._visible&&this.showWheel()}showWheel(){if(this._visible=!0,!this.activeNode){h.removeNode(this.elementMainWheel),h.removeNode(this.elementSideWheel);return}let e=this.activeNode.container.containerElement,t=e.clientWidth,i=e.clientHeight,n=Math.floor(t/2),o=Math.floor(i/2),s=e.getBoundingClientRect(),l=this.dockManager.element.getBoundingClientRect();this.elementMainWheel.style.left=s.left-l.left+n+"px",this.elementMainWheel.style.top=s.top-l.top+o+"px";let a=20,u=this.dockManager.element.clientWidth,d=this.dockManager.element.clientHeight;h.removeNode(this.elementMainWheel),h.removeNode(this.elementSideWheel),this.dockManager.element.appendChild(this.elementMainWheel),this.dockManager.element.appendChild(this.elementSideWheel),this._setWheelButtonPosition(f["left-s"],a,-d/2),this._setWheelButtonPosition(f["right-s"],u-a*2,-d/2),this._setWheelButtonPosition(f["top-s"],u/2,-d+a),this._setWheelButtonPosition(f["down-s"],u/2,-a)}_setWheelButtonPosition(e,t,i){let n=this.wheelItems[e],o=n.element.clientWidth/2,s=n.element.clientHeight/2,l=Math.floor(t-o),a=Math.floor(i-s);n.element.style.marginLeft=l+"px",n.element.style.marginTop=a+"px"}hideWheel(){this._visible=!1,this.activeNode=void 0,h.removeNode(this.elementMainWheel),h.removeNode(this.elementSideWheel),h.removeNode(this.elementPanelPreview);for(let e in this.wheelItems)this.wheelItems[e].active=!1}onMouseOver(e){if(!this.activeDialog)return;let t=this.dockManager.context.model.rootNode,i;e.id===f.top?i=this.dockManager.layoutEngine.getDockBounds(this.activeNode,this.activeDialog.panel,"vertical",!0):e.id===f.down?i=this.dockManager.layoutEngine.getDockBounds(this.activeNode,this.activeDialog.panel,"vertical",!1):e.id===f.left?i=this.dockManager.layoutEngine.getDockBounds(this.activeNode,this.activeDialog.panel,"horizontal",!0):e.id===f.right?i=this.dockManager.layoutEngine.getDockBounds(this.activeNode,this.activeDialog.panel,"horizontal",!1):e.id===f.fill?i=this.dockManager.layoutEngine.getDockBounds(this.activeNode,this.activeDialog.panel,"fill",!1):e.id===f["top-s"]?i=this.dockManager.layoutEngine.getDockBounds(t,this.activeDialog.panel,"vertical",!0):e.id===f["down-s"]?i=this.dockManager.layoutEngine.getDockBounds(t,this.activeDialog.panel,"vertical",!1):e.id===f["left-s"]?i=this.dockManager.layoutEngine.getDockBounds(t,this.activeDialog.panel,"horizontal",!0):e.id===f["right-s"]&&(i=this.dockManager.layoutEngine.getDockBounds(t,this.activeDialog.panel,"horizontal",!1)),i&&(this.dockManager.element.appendChild(this.elementPanelPreview),this.elementPanelPreview.style.left=Math.round(i.x)+"px",this.elementPanelPreview.style.top=Math.round(i.y)+"px",this.elementPanelPreview.style.width=Math.round(i.width)+"px",this.elementPanelPreview.style.height=Math.round(i.height)+"px")}onMouseOut(){h.removeNode(this.elementPanelPreview)}onDialogDropped(e){let t=this._getActiveWheelItem();t&&this._handleDockRequest(t,e)}_getActiveWheelItem(){for(let e in this.wheelItems){let t=this.wheelItems[e];if(t.active)return t}}_handleDockRequest(e,t){e.active=!1,e.element.classList.remove(e.hoverIconClass),this.activeNode&&(e.id===f.left?this.dockManager.dockDialogLeft(this.activeNode,t):e.id===f.right?this.dockManager.dockDialogRight(this.activeNode,t):e.id===f.top?this.dockManager.dockDialogUp(this.activeNode,t):e.id===f.down?this.dockManager.dockDialogDown(this.activeNode,t):e.id===f.fill?this.dockManager.dockDialogFill(this.activeNode,t):e.id===f["left-s"]?this.dockManager.dockDialogLeft(this.dockManager.context.model.rootNode,t):e.id===f["right-s"]?this.dockManager.dockDialogRight(this.dockManager.context.model.rootNode,t):e.id===f["top-s"]?this.dockManager.dockDialogUp(this.dockManager.context.model.rootNode,t):e.id===f["down-s"]&&this.dockManager.dockDialogDown(this.dockManager.context.model.rootNode,t))}};var J=class{dockManager;model;documentManagerView;constructor(e){this.dockManager=e,this.model=new L,this.documentManagerView=new T(this.dockManager)}};var Q=class{element;context;dockWheel;layoutEngine;mouseMoveHandler;touchMoveHandler;layoutEventListeners;closePanelContainerCallback;defaultDialogPosition;backgroundContext;zIndexCounter;zIndexTabHost;zIndexTabHandle;zIndexDialogCounter;onKeyPressBound;iframes;_undockEnabled;getElementCallback;_config;_activePanel;_lastPanelNotADialog;_activeDocument;constructor(e,t){if(e===void 0)throw new Error("Invalid Dock Manager element provided");this._config=Object.assign(new O,t),this.element=e,this.context=this.dockWheel=this.layoutEngine=this.mouseMoveHandler=this.touchMoveHandler=void 0,this.layoutEventListeners=[],this.defaultDialogPosition=new v(0,0)}get config(){return this._config}initialize(){this.backgroundContext=this.element.children[0],this.context=new J(this);let e=new M(this.context.documentManagerView);this.context.model.rootNode=e,this.context.model.documentManagerNode=e,this.context.model.dialogs=[],this.setRootNode(this.context.model.rootNode),this.resize(this.element.clientWidth,this.element.clientHeight),this.dockWheel=new $(this),this.layoutEngine=new K(this),this._undockEnabled=!0,this.rebuildLayout(this.context.model.rootNode),this.zIndexCounter=1001,this.zIndexTabHost=1e3,this.zIndexTabHandle=100,this.zIndexDialogCounter=10001,this.backgroundContext!=null&&this.context.model.rootNode.container.tabHost.hostElement.insertBefore(this.backgroundContext,this.context.model.rootNode.container.tabHost.hostElement.firstChild),this.onKeyPressBound=this.onKeyPress.bind(this),this.element.addEventListener("keydown",this.onKeyPressBound)}onKeyPress(e){if(e.key=="Escape"&&this.activePanel&&!this.activePanel._hideCloseButton&&(this.activePanel.isDialog&&this._config.escClosesDialog||!this.activePanel.isDialog&&this._config.escClosesWindow)){let t=this.activePanel;this.activePanel=null,t.close()}}checkXBounds(e,t,i,n,o){if(this._config.moveOnlyWithinDockConatiner)return this.checkXBoundsWithinDockContainer(e,t,i,n,o);let s=this.element.getBoundingClientRect(),l=Math.floor(t.x-i.x),a=e.offsetLeft+e.offsetWidth+l+s.left<40,u=e.offsetLeft+l+s.left>window.innerWidth-40;if(a){i.x=t.x,l=0;let d=40-(e.offsetWidth+e.offsetLeft+s.left);d>0&&(l=d)}else if(u){i.x=t.x,l=0;let d=window.innerWidth-40-e.offsetLeft-s.left;d>0&&(l=d)}return l}checkXBoundsWithinDockContainer(e,t,i,n,o){let s=t.x-i.x,l=this.element.getBoundingClientRect(),a=e.getBoundingClientRect(),u=s<0&&a.left+s<l.left&&!o,d=s>0&&a.right+s>l.right&&!n;return u?(t.x-=s,s=l.left-a.left,t.x-=s):d&&(t.x-=s,s=l.right-a.right,t.x-=s),s}checkYBounds(e,t,i,n,o){if(this._config.moveOnlyWithinDockConatiner)return this.checkYBoundsWithinDockContainer(e,t,i,n,o);let s=this.element.getBoundingClientRect(),l=Math.floor(t.y-i.y),a=e.offsetTop+l<0,u=e.offsetTop+l+s.top>window.innerHeight-16;if(a)i.y=t.y,l=0;else if(u){i.y=t.y,l=0;let d=window.innerHeight-16-e.offsetTop-s.top;d>0&&(l=d)}return l}checkYBoundsWithinDockContainer(e,t,i,n,o){let s=t.y-i.y,l=this.element.getBoundingClientRect(),a=e.getBoundingClientRect(),u=s<0&&a.top+s<l.top&&!o,d=s>0&&a.bottom+s>l.bottom&&!n;return u?(t.y-=s,s=l.top-a.top,t.y-=s):d&&(t.y-=s,s=l.bottom-a.bottom,t.y-=s),s}rebuildLayout(e){e.children.forEach(t=>{this.rebuildLayout(t)}),e.performLayout(!1)}invalidate(){this.resize(this.element.clientWidth,this.element.clientHeight)}resize(e,t){this.element.style.width=e+"px",this.element.style.height=t+"px",this.context.model.rootNode.container.resize(e,t);let i=0,n=0;for(let o of this.context.model.dialogs)(o.position.x>this.element.clientWidth||o.position.y>this.element.clientHeight)&&((i>this.element.clientWidth||n>this.element.clientHeight)&&(i=0,n=0),o.setPosition(100+i,100+n),i+=100,n+=100)}setModel(e){h.removeNode(this.context.documentManagerView.containerElement),this.context.model=e,this.setRootNode(e.rootNode),this.rebuildLayout(e.rootNode),this.loadResize(e.rootNode)}loadResize(e){e.children.reverse().forEach(i=>{this.loadResize(i),e.container.setActiveChild(i.container)}),e.children.reverse();let t=e.container;e.container.resize(t.state.width,t.state.height)}setRootNode(e){e.detachFromParent(),this.context.model.rootNode=e,this.element.appendChild(e.container.containerElement)}_onDialogDragStarted(e,t){this.dockWheel.activeNode=this._findNodeOnPoint(t.clientX,t.clientY),this.dockWheel.activeDialog=e,(e.noDocking==null||e.noDocking!==!0)&&this.dockWheel.showWheel(),this.mouseMoveHandler&&(this.mouseMoveHandler.cancel(),delete this.mouseMoveHandler),this.touchMoveHandler&&(this.touchMoveHandler.cancel(),delete this.touchMoveHandler),this.mouseMoveHandler=new c(window,"mousemove",this._onMouseMoved.bind(this)),this.touchMoveHandler=new c(window,"touchmove",this._onMouseMoved.bind(this))}_onDialogDragEnded(e,t){this.mouseMoveHandler&&(this.mouseMoveHandler.cancel(),delete this.mouseMoveHandler),this.touchMoveHandler&&(this.touchMoveHandler.cancel(),delete this.touchMoveHandler),this.dockWheel.onDialogDropped(e),this.dockWheel.hideWheel(),delete this.dockWheel.activeDialog,e.saveState(e.elementDialog.offsetLeft,e.elementDialog.offsetTop)}_onMouseMoved(e){e.changedTouches!=null&&(e=e.changedTouches[0]),this.dockWheel.activeNode=this._findNodeOnPoint(e.clientX,e.clientY)}_findNodeOnPoint(e,t){let i=[];i.push(this.context.model.rootNode);let n;for(;i.length>0;){let o=i.pop();h.isPointInsideNode(e,t,o)&&(n=o,[].push.apply(i,o.children))}return n}dockDialogLeft(e,t){return this._requestDockDialog(e,t,this.layoutEngine.dockLeft.bind(this.layoutEngine))}dockDialogRight(e,t){return this._requestDockDialog(e,t,this.layoutEngine.dockRight.bind(this.layoutEngine))}dockDialogUp(e,t){return this._requestDockDialog(e,t,this.layoutEngine.dockUp.bind(this.layoutEngine))}dockDialogDown(e,t){return this._requestDockDialog(e,t,this.layoutEngine.dockDown.bind(this.layoutEngine))}dockDialogFill(e,t){return this._requestDockDialog(e,t,this.layoutEngine.dockFill.bind(this.layoutEngine))}dockLeft(e,t,i){return this._requestDockContainer(e,t,this.layoutEngine.dockLeft.bind(this.layoutEngine),!1,i)}dockRight(e,t,i){return this._requestDockContainer(e,t,this.layoutEngine.dockRight.bind(this.layoutEngine),!0,i)}dockUp(e,t,i){return this._requestDockContainer(e,t,this.layoutEngine.dockUp.bind(this.layoutEngine),!1,i)}dockDown(e,t,i){return this._requestDockContainer(e,t,this.layoutEngine.dockDown.bind(this.layoutEngine),!0,i)}dockFill(e,t){return this._requestDockContainer(e,t,this.layoutEngine.dockFill.bind(this.layoutEngine),!1)}floatDialog(e,t,i,n,o){let s;if(this.context.model.dialogs.forEach(u=>{e==u.panel&&(u.show(),u.setPosition(t,i),s=u)}),s)return s;try{let u=this._findNodeFromContainer(e);this.layoutEngine.undock(u)}catch{}let l=e;h.removeNode(l.elementPanel),l.isDialog=!0;let a=new b(l,this,n,o);return a.setPosition(t,i),a}_requestDockDialog(e,t,i){let n=t.panel,o=new M(n);return n.prepareForDocking(),n.elementContentContainer.style.zIndex="",t.destroy(),i(e,o),o}_checkShowBackgroundContext(){this.backgroundContext!=null&&(this.context.model.documentManagerNode.children.length>0?this.backgroundContext.style.display="none":this.backgroundContext.style.display="block")}_requestDockContainer(e,t,i,n,o){let s=new M(t);if(t.containerType==="panel"){let u=t;u.prepareForDocking(),h.removeNode(u.elementPanel)}let l=null,a;if(e.parent&&e.parent.container&&(a=e.parent.container,a.getRatios&&(l=a.getRatios())),i(e,s),o&&s.parent&&(s.parent.container.containerType==="vertical"||s.parent.container.containerType==="horizontal")){let u=s.parent.container;if(l&&a==u){if(n){for(let d=0;d<l.length;d++)l[d]=l[d]-l[d]*o;l.push(o)}else l[0]=l[0]-o,l.unshift(o);u.setRatios(l)}else u.setContainerRatio(t,o)}return this.rebuildLayout(this.context.model.rootNode),this.invalidate(),this._checkShowBackgroundContext(),s}_requestTabReorder(e,t){let i=this._findNodeFromContainer(e);this.layoutEngine.reorderTabs(i,t.handle,t.state,t.index)}requestUndockToDialog(e,t,i){let n=this._findNodeFromContainer(e);this.layoutEngine.undock(n);let o=n.container;o.elementPanel.style.display="block";let s=new b(o,this,null);if(o.lastDialogSize&&s.resize(o.lastDialogSize.width,o.lastDialogSize.height),t!==void 0){let l=s.elementDialog.clientWidth;i.x>l&&(i.x=.75*l),s.setPosition(t.clientX-i.x,t.clientY-i.y),s.draggable.onMouseDown(t)}return s}requestClose(e){let t=this._findNodeFromContainer(e);if(this.layoutEngine.close(t),this.activePanel==e&&(this.activePanel=null),this._activeDocument==e){let i=this._activeDocument;this._activeDocument=null,this.notifyOnActiveDocumentChange(null,i)}}openInDialog(e,t,i,n){let o=new b(e,this,null,n);if(t!=null){let s=o.elementDialog.clientWidth;i.x>s&&(i.x=.75*s),o.setPosition(t.clientX-i.x,t.clientY-i.y),o.draggable.onMouseDown(t)}return o}requestUndock(e){let t=this._findNodeFromContainer(e);this.layoutEngine.undock(t)}requestRemove(e){let t=this._findNodeFromContainer(e),i=t.parent;return t.detachFromParent(),i&&this.rebuildLayout(i),t}getNodeByElementId(e){let t=[];for(t.push(this.context.model.rootNode);t.length>0;){let i=t.pop();if(i.container instanceof g&&(i.container.elementContent.id===e||i.container.elementContent instanceof HTMLSlotElement&&i.container.elementContent.assignedElements()?.[0]?.id===e))return i;[].push.apply(t,i.children)}return null}getNodeByElement(e){let t=[];for(t.push(this.context.model.rootNode);t.length>0;){let i=t.pop();if(i.container instanceof g&&(i.container.elementContent===e||i.container.elementContent instanceof HTMLSlotElement&&i.container.elementContent.assignedElements()?.[0]===e))return i;[].push.apply(t,i.children)}return null}_findNodeFromContainer(e){let t=[];for(t.push(this.context.model.rootNode);t.length>0;){let i=t.pop();if(i.container===e)return i;[].push.apply(t,i.children)}return null}findNodeFromContainerElement(e){let t=[];for(t.push(this.context.model.rootNode);t.length>0;){let i=t.pop();if(i.container.containerElement===e)return i;[].push.apply(t,i.children)}return null}addLayoutListener(e){this.layoutEventListeners.push(e)}removeLayoutListener(e){this.layoutEventListeners.splice(this.layoutEventListeners.indexOf(e),1)}suspendLayout(e){this.layoutEventListeners.forEach(t=>{t.onSuspendLayout&&t.onSuspendLayout(this,e)})}resumeLayout(e){this.layoutEventListeners.forEach(t=>{t.onResumeLayout&&t.onResumeLayout(this,e)})}notifyOnDock(e){this._checkShowBackgroundContext(),this.layoutEventListeners.forEach(t=>{t.onDock&&(t.onDock(this,e),e.container.resize(e.container.width,e.container.height))})}notifyOnTabsReorder(e){this.layoutEventListeners.forEach(t=>{t.onTabsReorder&&t.onTabsReorder(this,e)})}notifyOnUnDock(e){this._checkShowBackgroundContext(),this.layoutEventListeners.forEach(t=>{t.onUndock&&t.onUndock(this,e)})}notifyOnClosePanel(e){if(this._checkShowBackgroundContext(),this.activePanel==e&&(this.activePanel=null),this._activeDocument==e){let t=this._activeDocument;this._activeDocument=null,this.notifyOnActiveDocumentChange(null,t)}this.layoutEventListeners.forEach(t=>{t.onClosePanel&&t.onClosePanel(this,e)})}notifyOnCreateDialog(e){this.layoutEventListeners.forEach(t=>{t.onCreateDialog&&t.onCreateDialog(this,e)})}notifyOnHideDialog(e){this.layoutEventListeners.forEach(t=>{t.onHideDialog&&t.onHideDialog(this,e)})}notifyOnShowDialog(e){this.layoutEventListeners.forEach(t=>{t.onShowDialog&&t.onShowDialog(this,e)})}notifyOnChangeDialogPosition(e,t,i){this.layoutEventListeners.forEach(n=>{n.onChangeDialogPosition&&n.onChangeDialogPosition(this,e,t,i)})}notifyOnContainerResized(e){this.layoutEventListeners.forEach(t=>{t.onContainerResized&&t.onContainerResized(this,e)})}notifyOnTabChange(e){this.layoutEventListeners.forEach(t=>{t.onTabChanged&&t.onTabChanged(this,e)})}notifyOnActivePanelChange(e,t){this.layoutEventListeners.forEach(i=>{i.onActivePanelChange&&i.onActivePanelChange(this,e,t)})}async notifyOnActiveDocumentChange(e,t){for(let i of this.layoutEventListeners)i.onActiveDocumentChange&&await i.onActiveDocumentChange(this,e,t)}notifyOnNewWindow(e,t){this._checkShowBackgroundContext(),this.layoutEventListeners.forEach(i=>{i.onNewWindow&&i.onNewWindow(this,e,t)})}saveState(){return new G().serialize(this.context.model)}async loadState(e){let t=new Y(this);this.context.model=await t.deserialize(e),this.setModel(this.context.model)}getPanels(){let e=[];return this._allPanels(this.context.model.rootNode,e),this.context.model.dialogs.forEach(t=>{e.push(t.panel)}),e}undockEnabled(e){this._undockEnabled=e,this.getPanels().forEach(t=>{t.canUndock(e)})}lockDockState(e){this.undockEnabled(!e),this.hideCloseButton(e)}hideCloseButton(e){this.getPanels().forEach(t=>{t.hideCloseButton(e)})}updatePanels(e){let t=[];return this._allPanels(this.context.model.rootNode,t),t.forEach(i=>{h.arrayContains(e,i.elementContent.id)||i.close()}),this.context.model.dialogs.forEach(i=>{h.arrayContains(e,i.panel.elementContent.id)?i.show():i.hide()}),t}getVisiblePanels(){let e=[];return this._allPanels(this.context.model.rootNode,e),this.context.model.dialogs.forEach(t=>{t.isHidden||e.push(t.panel)}),e}_allPanels(e,t){e.children.forEach(i=>{this._allPanels(i,t)}),e.container.containerType==="panel"&&t.push(e.container)}get activeDocument(){return this._activeDocument}get activePanel(){return this._activePanel}set activePanel(e){if(e!==this._activePanel){e&&!e.isDialog&&(this._lastPanelNotADialog=e),this._lastPanelNotADialog&&this.getPanels().indexOf(this._lastPanelNotADialog)<0&&(this._lastPanelNotADialog=null);let t=this.activePanel;this.activePanel&&(this.activePanel.elementTitle.classList.remove("dockspan-panel-active"),this.activePanel.elementTitleText.classList.remove("dockspan-panel-titlebar-text-active"),this.activePanel.tabPage&&this.activePanel.tabPage.host.setActive(!1)),this._activePanel=e;let i=this._activeDocument;e&&e.panelType==w.document&&(this._activeDocument=e),!e&&t&&t.isDialog&&e==null&&this._lastPanelNotADialog&&this.activePanel!=this._lastPanelNotADialog&&(e=this._lastPanelNotADialog,this._lastPanelNotADialog=void 0),this.notifyOnActivePanelChange(e,t),i!=this._activeDocument&&this.notifyOnActiveDocumentChange(this._activeDocument,i),e&&(e.elementTitle.classList.add("dockspan-panel-active"),e.elementTitleText.classList.add("dockspan-panel-titlebar-text-active"),e.tabPage&&e.tabPage.host.setActive(!0))}else e&&e.tabPage&&e.tabPage.host.setActive(!0)}};import se from"../../../lib/css/dock-manager-style.css"with{type:"css"};import le from"../../../lib/css/dock-manager.css"with{type:"css"};function ae(r,e){if(r.length===1)return r.raw[0];{let t="";for(let i=0;i<r.length;i++)t+=r[i]+(e[i]??"");return t}}var re=function(r,...e){let t=new CSSStyleSheet;return t.replaceSync(ae(r,e)),t},ee=class r extends HTMLElement{dockManager;slotId=0;windowResizedBound;slotElementMap;observer;initialized=!1;elementContainerMap=new Map;static style=re`
15
+ :host {
16
+ display: block;
17
+ }`;constructor(){super();let e=this.attachShadow({mode:"open"});e.adoptedStyleSheets=[r.style,se,le],this.windowResizedBound=this.windowResized.bind(this),this.slotElementMap=new WeakMap}initDockspawn(){let e=document.createElement("div");e.id="dockSpawnDiv",e.style.width="100%",e.style.height="100%",e.style.position="relative",this.shadowRoot.appendChild(e),this.dockManager=new Q(e),this.dockManager.config.dialogRootElement=e,setTimeout(()=>{this.dockManager.initialize(),this.dockManager.addLayoutListener({onClosePanel:(t,i)=>{let n=i.elementContent,o=this.slotElementMap.get(n);o&&this.removeChild(o)}}),this.dockManager.resize(this.clientWidth,this.clientHeight);for(let t of this.children)this.handleAddedChildNode(t);this.observer=new MutationObserver(t=>{t.forEach(i=>{i.removedNodes.forEach(n=>{this.handleRemovedChildNode(n)}),i.addedNodes.forEach(n=>{this.handleAddedChildNode(n)})})}),this.observer.observe(this,{childList:!0})},50)}getElementInSlot(e){return this.slotElementMap.get(e)}handleAddedChildNode(e){let t=document.createElement("slot"),i="slot_"+this.slotId++;t.name=i;let n=w.panel,o=e.getAttribute("dock-spawn-panel-type");o&&(n=o);let s=e.hasAttribute("dock-spawn-hide-close-button"),l=e.getAttribute("dock-spawn-title"),a=new g(t,this.dockManager,l??e.title,n,s);e.slot=i,this.slotElementMap.set(t,e),this.elementContainerMap.set(e,a);let u=.5,d=e.getAttribute("dock-spawn-dock-ratio");d&&(u=d);let p=e.getAttribute("dock-spawn-dock-type"),m=this.dockManager.context.model.documentManagerNode,C=e.getAttribute("dock-spawn-dock-to");if(C){let E=this.getRootNode().getElementById(C);m=this.dockManager.findNodeFromContainerElement(this.elementContainerMap.get(E).containerElement)}p=="left"?this.dockManager.dockLeft(m,a,u):p=="right"?this.dockManager.dockRight(m,a,u):p=="up"?this.dockManager.dockUp(m,a,u):p=="down"?this.dockManager.dockDown(m,a,u):this.dockManager.dockFill(m,a),e.style.display=="none"&&(e.style.display="block")}handleRemovedChildNode(e){let t=this.getDockNodeForElement(e);t&&t.container.close(),this.elementContainerMap.delete(e)}connectedCallback(){this.initialized||(this.initDockspawn(),this.initialized=!0),window.addEventListener("resize",this.windowResizedBound),window.addEventListener("orientationchange",this.windowResizedBound)}disconnectedCallback(){window.removeEventListener("resize",this.windowResizedBound),window.removeEventListener("orientationchange",this.windowResizedBound)}windowResized(){this.resize()}resize(){this.dockManager.resize(this.clientWidth,this.clientHeight)}getDockNodeForElement(e){let t=e;return t.containerElement&&(t=e.containerElement),this.dockManager.findNodeFromContainerElement(t)}dockFill(e,t,i,n,o){let s=new g(e,this.dockManager,n,t,o);this.dockManager.dockFill(i??this.dockManager.context.model.documentManagerNode,s)}dockLeft(e,t,i,n,o,s){let l=new g(e,this.dockManager,o,t,s);this.dockManager.dockLeft(i??this.dockManager.context.model.documentManagerNode,l,n)}dockRight(e,t,i,n,o,s){let l=new g(e,this.dockManager,o,t,s);this.dockManager.dockRight(i??this.dockManager.context.model.documentManagerNode,l,n)}dockUp(e,t,i,n,o,s){let l=new g(e,this.dockManager,o,t,s);this.dockManager.dockUp(i??this.dockManager.context.model.documentManagerNode,l,n)}dockDown(e,t,i,n,o,s){let l=new g(e,this.dockManager,o,t,s);this.dockManager.dockDown(i??this.dockManager.context.model.documentManagerNode,l,n)}floatDialog(e,t,i,n,o,s,l,a){let u=new g(e,this.dockManager,l,s,a);this.dockManager.floatDialog(u,t,i,null).resize(n,o)}};window.customElements.define("dock-spawn-ts",ee);export{x as ContainerType,te as Defaults,b as Dialog,O as DockConfig,Y as DockGraphDeserializer,G as DockGraphSerializer,K as DockLayoutEngine,Q as DockManager,J as DockManagerContext,L as DockModel,M as DockNode,ee as DockSpawnTsWebcomponent,$ as DockWheel,j as DockWheelItem,T as DocumentManagerContainer,X as DocumentTabPage,R as DraggableContainer,c as EventHandler,H as FillDockContainer,B as HorizontalDockContainer,k as Localizer,g as PanelContainer,w as PanelType,v as Point,I as ResizableContainer,U as ResizeHandle,A as SplitterBar,z as SplitterDockContainer,F as SplitterPanel,V as TabHandle,q as TabHost,y as TabHostDirection,N as TabPage,_ as UndockInitiator,h as Utils,S as VerticalDockContainer,f as WheelTypes,ie as moveElementToNewBrowserWindow};
@@ -0,0 +1,2 @@
1
+ export * from './index.js';
2
+ export * from './webcomponent/DockSpawnTsWebcomponent.js';
@@ -0,0 +1,3 @@
1
+ export * from './index.js';
2
+ export * from './webcomponent/DockSpawnTsWebcomponent.js';
3
+ //# sourceMappingURL=index-webcomponent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-webcomponent.js","sourceRoot":"","sources":["../../src/index-webcomponent.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,2CAA2C,CAAC"}
@@ -0,0 +1,47 @@
1
+ export * from './enums/PanelType.js';
2
+ export * from './enums/TabHostDirection.js';
3
+ export * from './enums/WheelTypes.js';
4
+ export * from './i18n/Defaults.js';
5
+ export * from './i18n/Localizer.js';
6
+ export * from './interfaces/IDockContainer.js';
7
+ export * from './interfaces/IDockContainerWithSize.js';
8
+ export * from './interfaces/ILayoutEventListener.js';
9
+ export * from './interfaces/IMouseOrTouchEvent.js';
10
+ export * from './interfaces/INodeInfo.js';
11
+ export * from './interfaces/IPanelInfo.js';
12
+ export * from './interfaces/IRectangle.js';
13
+ export * from './interfaces/ISize.js';
14
+ export * from './interfaces/IState.js';
15
+ export * from './interfaces/IThickness.js';
16
+ export * from './BrowserDialogHelper.js';
17
+ export * from './ContainerType.js';
18
+ export * from './Dialog.js';
19
+ export * from './DockConfig.js';
20
+ export * from './DockGraphDeserializer.js';
21
+ export * from './DockGraphSerializer.js';
22
+ export * from './DockLayoutEngine.js';
23
+ export * from './DockManager.js';
24
+ export * from './DockManagerContext.js';
25
+ export * from './DockModel.js';
26
+ export * from './DockNode.js';
27
+ export * from './DockWheel.js';
28
+ export * from './DockWheelItem.js';
29
+ export * from './DocumentManagerContainer.js';
30
+ export * from './DocumentTabPage.js';
31
+ export * from './DraggableContainer.js';
32
+ export * from './EventHandler.js';
33
+ export * from './FillDockContainer.js';
34
+ export * from './HorizontalDockContainer.js';
35
+ export * from './PanelContainer.js';
36
+ export * from './Point.js';
37
+ export * from './ResizableContainer.js';
38
+ export * from './ResizeHandle.js';
39
+ export * from './SplitterBar.js';
40
+ export * from './SplitterDockContainer.js';
41
+ export * from './SplitterPanel.js';
42
+ export * from './TabHandle.js';
43
+ export * from './TabHost.js';
44
+ export * from './TabPage.js';
45
+ export * from './UndockInitiator.js';
46
+ export * from './Utils.js';
47
+ export * from './VerticalDockContainer.js';
@@ -0,0 +1,48 @@
1
+ export * from './enums/PanelType.js';
2
+ export * from './enums/TabHostDirection.js';
3
+ export * from './enums/WheelTypes.js';
4
+ export * from './i18n/Defaults.js';
5
+ export * from './i18n/Localizer.js';
6
+ export * from './interfaces/IDockContainer.js';
7
+ export * from './interfaces/IDockContainerWithSize.js';
8
+ export * from './interfaces/ILayoutEventListener.js';
9
+ export * from './interfaces/IMouseOrTouchEvent.js';
10
+ export * from './interfaces/INodeInfo.js';
11
+ export * from './interfaces/IPanelInfo.js';
12
+ export * from './interfaces/IRectangle.js';
13
+ export * from './interfaces/ISize.js';
14
+ export * from './interfaces/IState.js';
15
+ export * from './interfaces/IThickness.js';
16
+ export * from './BrowserDialogHelper.js';
17
+ export * from './ContainerType.js';
18
+ export * from './Dialog.js';
19
+ export * from './DockConfig.js';
20
+ export * from './DockGraphDeserializer.js';
21
+ export * from './DockGraphSerializer.js';
22
+ export * from './DockLayoutEngine.js';
23
+ export * from './DockManager.js';
24
+ export * from './DockManagerContext.js';
25
+ export * from './DockModel.js';
26
+ export * from './DockNode.js';
27
+ export * from './DockWheel.js';
28
+ export * from './DockWheelItem.js';
29
+ export * from './DocumentManagerContainer.js';
30
+ export * from './DocumentTabPage.js';
31
+ export * from './DraggableContainer.js';
32
+ export * from './EventHandler.js';
33
+ export * from './FillDockContainer.js';
34
+ export * from './HorizontalDockContainer.js';
35
+ export * from './PanelContainer.js';
36
+ export * from './Point.js';
37
+ export * from './ResizableContainer.js';
38
+ export * from './ResizeHandle.js';
39
+ export * from './SplitterBar.js';
40
+ export * from './SplitterDockContainer.js';
41
+ export * from './SplitterPanel.js';
42
+ export * from './TabHandle.js';
43
+ export * from './TabHost.js';
44
+ export * from './TabPage.js';
45
+ export * from './UndockInitiator.js';
46
+ export * from './Utils.js';
47
+ export * from './VerticalDockContainer.js';
48
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,wCAAwC,CAAC;AACvD,cAAc,sCAAsC,CAAC;AACrD,cAAc,oCAAoC,CAAC;AACnD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,4BAA4B,CAAC"}
package/package.json CHANGED
@@ -1,19 +1,24 @@
1
1
  {
2
2
  "name": "dock-spawn-ts",
3
- "version": "3.7.0",
3
+ "version": "3.8.0",
4
4
  "description": "DockSpawn Typescript Version",
5
5
  "license": "MIT",
6
6
  "author": "jochen.kuehner@gmx.de",
7
7
  "scripts": {
8
8
  "test": "echo \"Error: no test specified\" && exit 1",
9
9
  "tsc": "tsc",
10
- "start": "http-server"
10
+ "start": "http-server",
11
+ "prepublishOnly": "npm run tsc && npm run bundle && npm run bundle2",
12
+ "bundle": "esbuild ./lib/js/index.js --format=esm --minify --platform=neutral --bundle --outfile=./lib/js/index-min.js",
13
+ "bundle2": "esbuild ./lib/js/index-webcomponent.js --format=esm --external:*.css --minify --platform=neutral --bundle --outfile=./lib/js/index-webcomponent-min.js"
14
+
11
15
  },
12
16
  "devDependencies": {
13
17
  "@babel/cli": "^7.27.0",
14
18
  "@babel/core": "^7.26.10",
15
19
  "@babel/preset-env": "^7.26.9",
16
20
  "@types/node": "^22.14.1",
21
+ "esbuild": "^0.25.10",
17
22
  "http-server": "^14.1.1",
18
23
  "typescript": "^5.8.3",
19
24
  "uglify-js": "^3.19.3",
@@ -0,0 +1,2 @@
1
+ export * from './index.js';
2
+ export * from './webcomponent/DockSpawnTsWebcomponent.js';
package/src/index.ts ADDED
@@ -0,0 +1,47 @@
1
+ export * from './enums/PanelType.js';
2
+ export * from './enums/TabHostDirection.js';
3
+ export * from './enums/WheelTypes.js';
4
+ export * from './i18n/Defaults.js';
5
+ export * from './i18n/Localizer.js';
6
+ export * from './interfaces/IDockContainer.js';
7
+ export * from './interfaces/IDockContainerWithSize.js';
8
+ export * from './interfaces/ILayoutEventListener.js';
9
+ export * from './interfaces/IMouseOrTouchEvent.js';
10
+ export * from './interfaces/INodeInfo.js';
11
+ export * from './interfaces/IPanelInfo.js';
12
+ export * from './interfaces/IRectangle.js';
13
+ export * from './interfaces/ISize.js';
14
+ export * from './interfaces/IState.js';
15
+ export * from './interfaces/IThickness.js';
16
+ export * from './BrowserDialogHelper.js';
17
+ export * from './ContainerType.js';
18
+ export * from './Dialog.js';
19
+ export * from './DockConfig.js';
20
+ export * from './DockGraphDeserializer.js';
21
+ export * from './DockGraphSerializer.js';
22
+ export * from './DockLayoutEngine.js';
23
+ export * from './DockManager.js';
24
+ export * from './DockManagerContext.js';
25
+ export * from './DockModel.js';
26
+ export * from './DockNode.js';
27
+ export * from './DockWheel.js';
28
+ export * from './DockWheelItem.js';
29
+ export * from './DocumentManagerContainer.js';
30
+ export * from './DocumentTabPage.js';
31
+ export * from './DraggableContainer.js';
32
+ export * from './EventHandler.js';
33
+ export * from './FillDockContainer.js';
34
+ export * from './HorizontalDockContainer.js';
35
+ export * from './PanelContainer.js';
36
+ export * from './Point.js';
37
+ export * from './ResizableContainer.js';
38
+ export * from './ResizeHandle.js';
39
+ export * from './SplitterBar.js';
40
+ export * from './SplitterDockContainer.js';
41
+ export * from './SplitterPanel.js';
42
+ export * from './TabHandle.js';
43
+ export * from './TabHost.js';
44
+ export * from './TabPage.js';
45
+ export * from './UndockInitiator.js';
46
+ export * from './Utils.js';
47
+ export * from './VerticalDockContainer.js';