@deephaven/golden-layout 1.1.2-beta.0 → 1.1.2-grid-render-loop.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/GoldenLayoutThemeExport.js.map +1 -1
- package/dist/LayoutManager.js.map +1 -1
- package/dist/base.js.map +1 -1
- package/dist/config/Config.js.map +1 -1
- package/dist/config/ItemConfig.js.map +1 -1
- package/dist/config/index.js.map +1 -1
- package/dist/container/ItemContainer.js.map +1 -1
- package/dist/container/index.js.map +1 -1
- package/dist/controls/BrowserPopout.js.map +1 -1
- package/dist/controls/DragProxy.js.map +1 -1
- package/dist/controls/DragSource.js.map +1 -1
- package/dist/controls/DragSourceFromEvent.js.map +1 -1
- package/dist/controls/DropTargetIndicator.js.map +1 -1
- package/dist/controls/Header.js.map +1 -1
- package/dist/controls/HeaderButton.js.map +1 -1
- package/dist/controls/Splitter.js.map +1 -1
- package/dist/controls/Tab.js.map +1 -1
- package/dist/controls/index.js.map +1 -1
- package/dist/declaration.d.js.map +1 -1
- package/dist/errors/ConfigurationError.js.map +1 -1
- package/dist/errors/index.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/items/AbstractContentItem.js.map +1 -1
- package/dist/items/Component.js.map +1 -1
- package/dist/items/Root.js.map +1 -1
- package/dist/items/RowOrColumn.js.map +1 -1
- package/dist/items/Stack.js.map +1 -1
- package/dist/items/index.js.map +1 -1
- package/dist/utils/BubblingEvent.js.map +1 -1
- package/dist/utils/ConfigMinifier.js.map +1 -1
- package/dist/utils/DragListener.js.map +1 -1
- package/dist/utils/EventEmitter.js.map +1 -1
- package/dist/utils/EventHub.js.map +1 -1
- package/dist/utils/EventUtils.js.map +1 -1
- package/dist/utils/ReactComponentHandler.js.map +1 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/utils.js.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BrowserPopout.js","names":["$","getUniqueId","minifyConfig","EventEmitter","BrowserPopout","constructor","config","dimensions","parentId","indexInParent","layoutManager","_defineProperty","_config","_dimensions","_parentId","_indexInParent","_layoutManager","_createWindow","toConfig","_this$getGlInstance","_this$getGlInstance2","_ref","_this$_popoutWindow$s","_this$_popoutWindow","_this$_popoutWindow2","_ref2","_this$_popoutWindow$s2","_this$_popoutWindow3","_this$_popoutWindow4","_this$getGlInstance3","isInitialised","Error","width","getGlInstance","height","left","_popoutWindow","screenX","screenLeft","top","screenY","screenTop","content","_this$_popoutWindow5","__glInstance","getWindow","close","_this$getGlInstance4","_$closeWindow","_this$getWindow","e","popIn","_parentItem","index","childConfig","parentItem","_this$getGlInstance5","extend","root","getItemsById","_this$_layoutManager$","contentItems","length","addChild","url","_createUrl","title","Math","floor","random","toString","options","_serializeWindowOptions","innerWidth","innerHeight","menubar","toolbar","location","personalbar","resizable","scrollbars","status","window","open","settings","blockedPopoutsThrowError","error","type","on","_positionWindow","bind","_onClose","checkReadyInterval","setInterval","_this$_popoutWindow6","_onInitialised","clearInterval","windowOptions","windowOptionsString","key","push","join","storageKey","localStorage","setItem","JSON","stringify","urlParts","document","href","split","_this$_popoutWindow7","_this$_popoutWindow8","moveTo","focus","_this$getGlInstance6","emit","setTimeout"],"sources":["../../src/controls/BrowserPopout.ts"],"sourcesContent":["import $ from 'jquery';\nimport type { Config, PopoutConfig, ItemConfig } from '../config';\nimport type Root from '../items/Root';\nimport type LayoutManager from '../LayoutManager';\nimport { getUniqueId, minifyConfig, EventEmitter } from '../utils';\nimport { AbstractContentItem } from '..';\n\ntype BrowserDimensions = {\n width: number;\n height: number;\n top: number;\n left: number;\n};\n\n/**\n * Pops a content item out into a new browser window.\n * This is achieved by\n *\n * - Creating a new configuration with the content item as root element\n * - Serializing and minifying the configuration\n * - Opening the current window's URL with the configuration as a GET parameter\n * - GoldenLayout when opened in the new window will look for the GET parameter\n * and use it instead of the provided configuration\n *\n * @param config GoldenLayout item config\n * @param dimensions A map with width, height, top and left\n * @param parentId The id of the element the item will be appended to on popIn\n * @param indexInParent The position of this element within its parent\n * @param layoutManager\n */\nexport default class BrowserPopout extends EventEmitter {\n isInitialised = false;\n\n private _config: ItemConfig[];\n private _dimensions: BrowserDimensions;\n private _parentId: string;\n private _indexInParent: number;\n private _layoutManager: LayoutManager;\n private _popoutWindow: (Window & { __glInstance: LayoutManager }) | null =\n null;\n private _id = null;\n\n constructor(\n config: ItemConfig[],\n dimensions: BrowserDimensions,\n parentId: string,\n indexInParent: number,\n layoutManager: LayoutManager\n ) {\n super();\n\n this._config = config;\n this._dimensions = dimensions;\n this._parentId = parentId;\n this._indexInParent = indexInParent;\n this._layoutManager = layoutManager;\n this._createWindow();\n }\n\n toConfig() {\n if (this.isInitialised === false) {\n throw new Error(\"Can't create config, layout not yet initialised\");\n }\n return {\n dimensions: {\n width: this.getGlInstance()?.width,\n height: this.getGlInstance()?.height,\n left:\n this._popoutWindow?.screenX ?? this._popoutWindow?.screenLeft ?? 0,\n top: this._popoutWindow?.screenY ?? this._popoutWindow?.screenTop ?? 0,\n },\n content: this.getGlInstance()?.toConfig().content,\n parentId: this._parentId,\n indexInParent: this._indexInParent,\n } as unknown as PopoutConfig;\n }\n\n getGlInstance() {\n return this._popoutWindow?.__glInstance;\n }\n\n getWindow() {\n return this._popoutWindow;\n }\n\n close() {\n if (this.getGlInstance()) {\n this.getGlInstance()?._$closeWindow();\n } else {\n try {\n this.getWindow()?.close();\n } catch (e) {}\n }\n }\n\n /**\n * Returns the popped out item to its original position. If the original\n * parent isn't available anymore it falls back to the layout's topmost element\n */\n popIn() {\n let index = this._indexInParent;\n let childConfig: ItemConfig | null = null;\n let parentItem: AbstractContentItem | null = null;\n\n if (this._parentId) {\n /*\n * The $.extend call seems a bit pointless, but it's crucial to\n * copy the config returned by this.getGlInstance().toConfig()\n * onto a new object. Internet Explorer keeps the references\n * to objects on the child window, resulting in the following error\n * once the child window is closed:\n *\n * The callee (server [not server application]) is not available and disappeared\n */\n childConfig = $.extend(true, {}, this.getGlInstance()?.toConfig())\n .content[0];\n parentItem = this._layoutManager.root.getItemsById(\n this._parentId\n )[0] as Root;\n\n /*\n * Fallback if parentItem is not available. Either add it to the topmost\n * item or make it the topmost item if the layout is empty\n */\n if (!parentItem) {\n if ((this._layoutManager.root.contentItems.length ?? 0) > 0) {\n parentItem = this._layoutManager.root.contentItems[0];\n } else {\n parentItem = this._layoutManager.root;\n }\n index = 0;\n }\n }\n\n if (!childConfig) {\n return;\n }\n\n parentItem?.addChild(childConfig, this._indexInParent);\n this.close();\n }\n\n /**\n * Creates the URL and window parameter\n * and opens a new window\n */\n _createWindow() {\n const url = this._createUrl();\n /**\n * Bogus title to prevent re-usage of existing window with the\n * same title. The actual title will be set by the new window's\n * GoldenLayout instance if it detects that it is in subWindowMode\n */\n const title = Math.floor(Math.random() * 1000000).toString(36);\n /**\n * The options as used in the window.open string\n */\n const options = this._serializeWindowOptions({\n width: this._dimensions.width,\n height: this._dimensions.height,\n innerWidth: this._dimensions.width,\n innerHeight: this._dimensions.height,\n menubar: 'no',\n toolbar: 'no',\n location: 'no',\n personalbar: 'no',\n resizable: 'yes',\n scrollbars: 'no',\n status: 'no',\n });\n\n // I'm not entirely sure how __glInstance is mounted to the popout window\n this._popoutWindow = window.open(url, title, options) as Window & {\n __glInstance: LayoutManager;\n };\n\n if (!this._popoutWindow) {\n if (\n this._layoutManager.config.settings.blockedPopoutsThrowError === true\n ) {\n const error = new Error('Popout blocked') as Error & { type: string };\n error.type = 'popoutBlocked';\n throw error;\n } else {\n return;\n }\n }\n\n $(this._popoutWindow)\n .on('load', this._positionWindow.bind(this))\n .on('unload beforeunload', this._onClose.bind(this));\n\n /**\n * Polling the childwindow to find out if GoldenLayout has been initialised\n * doesn't seem optimal, but the alternatives - adding a callback to the parent\n * window or raising an event on the window object - both would introduce knowledge\n * about the parent to the child window which we'd rather avoid\n */\n let checkReadyInterval = window.setInterval(() => {\n if (\n this._popoutWindow?.__glInstance &&\n this._popoutWindow.__glInstance.isInitialised\n ) {\n this._onInitialised();\n window.clearInterval(checkReadyInterval);\n }\n }, 10);\n }\n\n /**\n * Serialises a map of key:values to a window options string\n *\n * @param windowOptions\n *\n * @returns serialised window options\n */\n _serializeWindowOptions(windowOptions: Record<string, unknown>) {\n var windowOptionsString = [],\n key;\n\n for (key in windowOptions) {\n windowOptionsString.push(key + '=' + windowOptions[key]);\n }\n\n return windowOptionsString.join(',');\n }\n\n /**\n * Creates the URL for the new window, including the\n * config GET parameter\n *\n * @returns URL\n */\n _createUrl() {\n var config: Partial<Config> = { content: this._config };\n const storageKey = 'gl-window-config-' + getUniqueId();\n\n config = minifyConfig(config);\n\n try {\n localStorage.setItem(storageKey, JSON.stringify(config));\n } catch (e: any) {\n throw new Error('Error while writing to localStorage ' + e.toString());\n }\n\n const urlParts = document.location.href.split('?');\n\n // URL doesn't contain GET-parameters\n if (urlParts.length === 1) {\n return urlParts[0] + '?gl-window=' + storageKey;\n\n // URL contains GET-parameters\n } else {\n return document.location.href + '&gl-window=' + storageKey;\n }\n }\n\n /**\n * Move the newly created window roughly to\n * where the component used to be.\n */\n _positionWindow() {\n this._popoutWindow?.moveTo(this._dimensions.left, this._dimensions.top);\n this._popoutWindow?.focus();\n }\n\n /**\n * Callback when the new window is opened and the GoldenLayout instance\n * within it is initialised\n */\n _onInitialised() {\n this.isInitialised = true;\n this.getGlInstance()?.on('popIn', this.popIn, this);\n this.emit('initialised');\n }\n\n /**\n * Invoked 50ms after the window unload event\n */\n _onClose() {\n setTimeout(this.emit.bind(this, 'closed'), 50);\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BrowserPopout.js","names":["$","getUniqueId","minifyConfig","EventEmitter","BrowserPopout","constructor","config","dimensions","parentId","indexInParent","layoutManager","_defineProperty","_config","_dimensions","_parentId","_indexInParent","_layoutManager","_createWindow","toConfig","_this$getGlInstance","_this$getGlInstance2","_ref","_this$_popoutWindow$s","_this$_popoutWindow","_this$_popoutWindow2","_ref2","_this$_popoutWindow$s2","_this$_popoutWindow3","_this$_popoutWindow4","_this$getGlInstance3","isInitialised","Error","width","getGlInstance","height","left","_popoutWindow","screenX","screenLeft","top","screenY","screenTop","content","_this$_popoutWindow5","__glInstance","getWindow","close","_this$getGlInstance4","_$closeWindow","_this$getWindow","e","popIn","_parentItem","index","childConfig","parentItem","_this$getGlInstance5","extend","root","getItemsById","_this$_layoutManager$","contentItems","length","addChild","url","_createUrl","title","Math","floor","random","toString","options","_serializeWindowOptions","innerWidth","innerHeight","menubar","toolbar","location","personalbar","resizable","scrollbars","status","window","open","settings","blockedPopoutsThrowError","error","type","on","_positionWindow","bind","_onClose","checkReadyInterval","setInterval","_this$_popoutWindow6","_onInitialised","clearInterval","windowOptions","windowOptionsString","key","push","join","storageKey","localStorage","setItem","JSON","stringify","urlParts","document","href","split","_this$_popoutWindow7","_this$_popoutWindow8","moveTo","focus","_this$getGlInstance6","emit","setTimeout"],"sources":["../../src/controls/BrowserPopout.ts"],"sourcesContent":["import $ from 'jquery';\nimport type { Config, PopoutConfig, ItemConfig } from '../config';\nimport type Root from '../items/Root';\nimport type LayoutManager from '../LayoutManager';\nimport { getUniqueId, minifyConfig, EventEmitter } from '../utils';\nimport { AbstractContentItem } from '..';\n\ntype BrowserDimensions = {\n width: number;\n height: number;\n top: number;\n left: number;\n};\n\n/**\n * Pops a content item out into a new browser window.\n * This is achieved by\n *\n * - Creating a new configuration with the content item as root element\n * - Serializing and minifying the configuration\n * - Opening the current window's URL with the configuration as a GET parameter\n * - GoldenLayout when opened in the new window will look for the GET parameter\n * and use it instead of the provided configuration\n *\n * @param config GoldenLayout item config\n * @param dimensions A map with width, height, top and left\n * @param parentId The id of the element the item will be appended to on popIn\n * @param indexInParent The position of this element within its parent\n * @param layoutManager\n */\nexport default class BrowserPopout extends EventEmitter {\n isInitialised = false;\n\n private _config: ItemConfig[];\n private _dimensions: BrowserDimensions;\n private _parentId: string;\n private _indexInParent: number;\n private _layoutManager: LayoutManager;\n private _popoutWindow: (Window & { __glInstance: LayoutManager }) | null =\n null;\n private _id = null;\n\n constructor(\n config: ItemConfig[],\n dimensions: BrowserDimensions,\n parentId: string,\n indexInParent: number,\n layoutManager: LayoutManager\n ) {\n super();\n\n this._config = config;\n this._dimensions = dimensions;\n this._parentId = parentId;\n this._indexInParent = indexInParent;\n this._layoutManager = layoutManager;\n this._createWindow();\n }\n\n toConfig() {\n if (this.isInitialised === false) {\n throw new Error(\"Can't create config, layout not yet initialised\");\n }\n return {\n dimensions: {\n width: this.getGlInstance()?.width,\n height: this.getGlInstance()?.height,\n left:\n this._popoutWindow?.screenX ?? this._popoutWindow?.screenLeft ?? 0,\n top: this._popoutWindow?.screenY ?? this._popoutWindow?.screenTop ?? 0,\n },\n content: this.getGlInstance()?.toConfig().content,\n parentId: this._parentId,\n indexInParent: this._indexInParent,\n } as unknown as PopoutConfig;\n }\n\n getGlInstance() {\n return this._popoutWindow?.__glInstance;\n }\n\n getWindow() {\n return this._popoutWindow;\n }\n\n close() {\n if (this.getGlInstance()) {\n this.getGlInstance()?._$closeWindow();\n } else {\n try {\n this.getWindow()?.close();\n } catch (e) {}\n }\n }\n\n /**\n * Returns the popped out item to its original position. If the original\n * parent isn't available anymore it falls back to the layout's topmost element\n */\n popIn() {\n let index = this._indexInParent;\n let childConfig: ItemConfig | null = null;\n let parentItem: AbstractContentItem | null = null;\n\n if (this._parentId) {\n /*\n * The $.extend call seems a bit pointless, but it's crucial to\n * copy the config returned by this.getGlInstance().toConfig()\n * onto a new object. Internet Explorer keeps the references\n * to objects on the child window, resulting in the following error\n * once the child window is closed:\n *\n * The callee (server [not server application]) is not available and disappeared\n */\n childConfig = $.extend(true, {}, this.getGlInstance()?.toConfig())\n .content[0];\n parentItem = this._layoutManager.root.getItemsById(\n this._parentId\n )[0] as Root;\n\n /*\n * Fallback if parentItem is not available. Either add it to the topmost\n * item or make it the topmost item if the layout is empty\n */\n if (!parentItem) {\n if ((this._layoutManager.root.contentItems.length ?? 0) > 0) {\n parentItem = this._layoutManager.root.contentItems[0];\n } else {\n parentItem = this._layoutManager.root;\n }\n index = 0;\n }\n }\n\n if (!childConfig) {\n return;\n }\n\n parentItem?.addChild(childConfig, this._indexInParent);\n this.close();\n }\n\n /**\n * Creates the URL and window parameter\n * and opens a new window\n */\n _createWindow() {\n const url = this._createUrl();\n /**\n * Bogus title to prevent re-usage of existing window with the\n * same title. The actual title will be set by the new window's\n * GoldenLayout instance if it detects that it is in subWindowMode\n */\n const title = Math.floor(Math.random() * 1000000).toString(36);\n /**\n * The options as used in the window.open string\n */\n const options = this._serializeWindowOptions({\n width: this._dimensions.width,\n height: this._dimensions.height,\n innerWidth: this._dimensions.width,\n innerHeight: this._dimensions.height,\n menubar: 'no',\n toolbar: 'no',\n location: 'no',\n personalbar: 'no',\n resizable: 'yes',\n scrollbars: 'no',\n status: 'no',\n });\n\n // I'm not entirely sure how __glInstance is mounted to the popout window\n this._popoutWindow = window.open(url, title, options) as Window & {\n __glInstance: LayoutManager;\n };\n\n if (!this._popoutWindow) {\n if (\n this._layoutManager.config.settings.blockedPopoutsThrowError === true\n ) {\n const error = new Error('Popout blocked') as Error & { type: string };\n error.type = 'popoutBlocked';\n throw error;\n } else {\n return;\n }\n }\n\n $(this._popoutWindow)\n .on('load', this._positionWindow.bind(this))\n .on('unload beforeunload', this._onClose.bind(this));\n\n /**\n * Polling the childwindow to find out if GoldenLayout has been initialised\n * doesn't seem optimal, but the alternatives - adding a callback to the parent\n * window or raising an event on the window object - both would introduce knowledge\n * about the parent to the child window which we'd rather avoid\n */\n let checkReadyInterval = window.setInterval(() => {\n if (\n this._popoutWindow?.__glInstance &&\n this._popoutWindow.__glInstance.isInitialised\n ) {\n this._onInitialised();\n window.clearInterval(checkReadyInterval);\n }\n }, 10);\n }\n\n /**\n * Serialises a map of key:values to a window options string\n *\n * @param windowOptions\n *\n * @returns serialised window options\n */\n _serializeWindowOptions(windowOptions: Record<string, unknown>) {\n var windowOptionsString = [],\n key;\n\n for (key in windowOptions) {\n windowOptionsString.push(key + '=' + windowOptions[key]);\n }\n\n return windowOptionsString.join(',');\n }\n\n /**\n * Creates the URL for the new window, including the\n * config GET parameter\n *\n * @returns URL\n */\n _createUrl() {\n var config: Partial<Config> = { content: this._config };\n const storageKey = 'gl-window-config-' + getUniqueId();\n\n config = minifyConfig(config);\n\n try {\n localStorage.setItem(storageKey, JSON.stringify(config));\n } catch (e: any) {\n throw new Error('Error while writing to localStorage ' + e.toString());\n }\n\n const urlParts = document.location.href.split('?');\n\n // URL doesn't contain GET-parameters\n if (urlParts.length === 1) {\n return urlParts[0] + '?gl-window=' + storageKey;\n\n // URL contains GET-parameters\n } else {\n return document.location.href + '&gl-window=' + storageKey;\n }\n }\n\n /**\n * Move the newly created window roughly to\n * where the component used to be.\n */\n _positionWindow() {\n this._popoutWindow?.moveTo(this._dimensions.left, this._dimensions.top);\n this._popoutWindow?.focus();\n }\n\n /**\n * Callback when the new window is opened and the GoldenLayout instance\n * within it is initialised\n */\n _onInitialised() {\n this.isInitialised = true;\n this.getGlInstance()?.on('popIn', this.popIn, this);\n this.emit('initialised');\n }\n\n /**\n * Invoked 50ms after the window unload event\n */\n _onClose() {\n setTimeout(this.emit.bind(this, 'closed'), 50);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DragProxy.js","names":["$","stripTags","EventEmitter","DragProxy","constructor","x","y","dragListener","layoutManager","contentItem","originalParent","_this$_contentItem$co","_this$_contentItem$co2","_offset$left","_offset$top","_this$_layoutManager$","_this$_layoutManager$2","_this$element$width","_this$element$height","_defineProperty","_dragListener","_layoutManager","_contentItem","_originalParent","on","_onDrag","_onDrop","tab","element","_this$_contentItem$ta","_this$_contentItem$ta2","tabDropPlaceholder","width","outerWidth","height","outerHeight","_template","_side","_sided","addClass","indexOf","toString","find","after","css","left","top","_proxyTab","attr","config","title","text","childElementContainer","append","_updateTree","_$calculateItemAreas","document","body","_setDimensions","length","_this$_proxyTab$outer","_this$_proxyTab$outer2","offset","container","_minX","_minY","_maxX","_maxY","_width","_height","_setDropPosition","emit","offsetX","offsetY","event","_event$pageX","_event$pageY","pageX","pageY","isWithinContainer","settings","constrainDragToContainer","_area","_$getArea","_lastValidArea","_$highlightDropZone","_this$_layoutManager$3","dropTargetIndicator","hide","_$onDrop","addChild","_$destroy","off","remove","parent","removeChild","_$setParent","dimensions","dragProxyWidth","dragProxyHeight","headerHeight","callDownwards"],"sources":["../../src/controls/DragProxy.ts"],"sourcesContent":["import $ from 'jquery';\nimport type { AbstractContentItem, ItemArea, Stack } from '../items';\nimport type LayoutManager from '../LayoutManager';\nimport type { DragListener } from '../utils';\nimport { stripTags, EventEmitter } from '../utils';\n\n/**\n * This class creates a temporary container\n * for the component whilst it is being dragged\n * and handles drag events\n *\n * @param x The initial x position\n * @param y The initial y position\n * @param dragListener\n * @param layoutManager\n * @param contentItem\n * @param originalParent\n */\nexport default class DragProxy extends EventEmitter {\n private static _template =\n '<div class=\"lm_dragProxy\">' +\n '<div class=\"lm_header\">' +\n '<ul class=\"lm_tabs\">' +\n '<li class=\"lm_tab lm_active\"><i class=\"lm_left\"></i>' +\n '<span class=\"lm_title\"></span>' +\n '<i class=\"lm_right\"></i></li>' +\n '</ul>' +\n '</div>' +\n '<div class=\"lm_content\"></div>' +\n '</div>';\n\n private _dragListener: DragListener;\n private _layoutManager: LayoutManager;\n private _contentItem: AbstractContentItem;\n private _originalParent: Stack | null;\n\n private _area: ItemArea | null = null;\n private _lastValidArea: ItemArea | null = null;\n\n private _minX: number;\n private _maxX: number;\n private _minY: number;\n private _maxY: number;\n private _width: number;\n private _height: number;\n private _sided?: boolean;\n\n element: JQuery<HTMLElement>;\n childElementContainer: JQuery<HTMLElement>;\n private _proxyTab: JQuery<HTMLElement>;\n\n constructor(\n x: number,\n y: number,\n dragListener: DragListener,\n layoutManager: LayoutManager,\n contentItem: AbstractContentItem,\n originalParent: Stack | null\n ) {\n super();\n\n this._dragListener = dragListener;\n this._layoutManager = layoutManager;\n this._contentItem = contentItem;\n this._originalParent = originalParent;\n\n this._dragListener.on('drag', this._onDrag, this);\n this._dragListener.on('dragStop', this._onDrop, this);\n\n // set the inserted drag placeholder to be the size of the tab removed, before its removed\n if (this._contentItem.tab && this._contentItem.tab.element) {\n this._layoutManager.tabDropPlaceholder.width(\n this._contentItem.tab.element.outerWidth(true) ?? 0\n );\n this._layoutManager.tabDropPlaceholder.height(\n this._contentItem.tab.element.outerHeight(true) ?? 0\n );\n }\n\n this.element = $(DragProxy._template);\n if (originalParent && originalParent._side) {\n this._sided = originalParent._sided;\n this.element.addClass('lm_' + originalParent._side);\n if (['right', 'bottom'].indexOf(originalParent._side.toString()) >= 0)\n this.element.find('.lm_content').after(this.element.find('.lm_header'));\n }\n this.element.css({ left: x, top: y });\n this._proxyTab = this.element.find('.lm_tab');\n this._proxyTab.attr(\n 'title',\n stripTags(this._contentItem.config.title ?? '')\n );\n this.element.find('.lm_title').text(this._contentItem.config.title ?? '');\n this.childElementContainer = this.element.find('.lm_content');\n this.childElementContainer.append(contentItem.element);\n\n this._updateTree();\n this._layoutManager._$calculateItemAreas();\n\n $(document.body).append(this.element);\n\n // Need to set dimensions after adding the element, or `Component.setSize()` will not pass the `.is('visible')` test and won't update\n this._setDimensions();\n\n // there's no content tab to use yet, use the proxy tab size for placeholder sizing, after it's created\n if (!this._contentItem.tab && this._proxyTab.length) {\n this._layoutManager.tabDropPlaceholder.width(\n this._proxyTab.outerWidth(true) ?? 0\n );\n this._layoutManager.tabDropPlaceholder.height(\n this._proxyTab.outerHeight(true) ?? 0\n );\n }\n\n var offset = this._layoutManager.container.offset();\n\n this._minX = offset?.left ?? 0;\n this._minY = offset?.top ?? 0;\n this._maxX = (this._layoutManager.container.width() ?? 0) + this._minX;\n this._maxY = (this._layoutManager.container.height() ?? 0) + this._minY;\n this._width = this.element.width() ?? 0;\n this._height = this.element.height() ?? 0;\n\n this._setDropPosition(x, y);\n\n this._layoutManager.emit('itemPickedUp', this._contentItem);\n }\n\n /**\n * Callback on every mouseMove event during a drag. Determines if the drag is\n * still within the valid drag area and calls the layoutManager to highlight the\n * current drop area\n *\n * @param offsetX The difference from the original x position in px\n * @param offsetY The difference from the original y position in px\n * @param event\n */\n _onDrag(offsetX: number, offsetY: number, event: JQuery.TriggeredEvent) {\n const x = event.pageX ?? 0;\n const y = event.pageY ?? 0;\n const isWithinContainer =\n x > this._minX && x < this._maxX && y > this._minY && y < this._maxY;\n\n if (\n !isWithinContainer &&\n this._layoutManager.config.settings.constrainDragToContainer === true\n ) {\n return;\n }\n\n this._setDropPosition(x, y);\n }\n\n /**\n * Sets the target position, highlighting the appropriate area\n *\n * @param x The x position in px\n * @param y The y position in px\n */\n _setDropPosition(x: number, y: number) {\n this.element.css({ left: x, top: y });\n this._area = this._layoutManager._$getArea(x, y);\n\n if (this._area !== null) {\n this._lastValidArea = this._area;\n this._area.contentItem._$highlightDropZone(x, y, this._area);\n }\n }\n\n /**\n * Callback when the drag has finished. Determines the drop area\n * and adds the child to it\n */\n _onDrop() {\n this._layoutManager.dropTargetIndicator?.hide();\n\n /*\n * Valid drop area found\n */\n if (this._area !== null) {\n this._area.contentItem._$onDrop(this._contentItem, this._area);\n\n /**\n * No valid drop area available at present, but one has been found before.\n * Use it\n */\n } else if (this._lastValidArea !== null) {\n this._lastValidArea.contentItem._$onDrop(\n this._contentItem,\n this._lastValidArea\n );\n\n /**\n * No valid drop area found during the duration of the drag. Return\n * content item to its original position if a original parent is provided.\n * (Which is not the case if the drag had been initiated by createDragSource)\n */\n } else if (this._originalParent) {\n this._originalParent.addChild(this._contentItem);\n\n /**\n * The drag didn't ultimately end up with adding the content item to\n * any container. In order to ensure clean up happens, destroy the\n * content item.\n */\n } else {\n this._contentItem._$destroy();\n }\n\n this._dragListener.off('drag', this._onDrag, this);\n this._dragListener.off('dragStop', this._onDrop, this);\n\n this.element.remove();\n\n this._layoutManager.emit('itemDropped', this._contentItem);\n }\n\n /**\n * Removes the item from its original position within the tree\n */\n _updateTree() {\n /**\n * parent is null if the drag had been initiated by a external drag source\n */\n if (this._contentItem.parent) {\n this._contentItem.parent.removeChild(this._contentItem, true);\n }\n\n this._contentItem._$setParent(null);\n }\n\n /**\n * Updates the DragProxy's dimensions\n */\n _setDimensions() {\n const dimensions = this._layoutManager.config.dimensions;\n let width = dimensions.dragProxyWidth;\n let height = dimensions.dragProxyHeight;\n\n this.element.width(width);\n this.element.height(height);\n width -= this._sided ? dimensions.headerHeight : 0;\n height -= !this._sided ? dimensions.headerHeight : 0;\n this.childElementContainer.width(width);\n this.childElementContainer.height(height);\n this._contentItem.element.width(width);\n this._contentItem.element.height(height);\n this._contentItem.callDownwards('_$show');\n this._contentItem.callDownwards('setSize');\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DragProxy.js","names":["$","stripTags","EventEmitter","DragProxy","constructor","x","y","dragListener","layoutManager","contentItem","originalParent","_this$_contentItem$co","_this$_contentItem$co2","_offset$left","_offset$top","_this$_layoutManager$","_this$_layoutManager$2","_this$element$width","_this$element$height","_defineProperty","_dragListener","_layoutManager","_contentItem","_originalParent","on","_onDrag","_onDrop","tab","element","_this$_contentItem$ta","_this$_contentItem$ta2","tabDropPlaceholder","width","outerWidth","height","outerHeight","_template","_side","_sided","addClass","indexOf","toString","find","after","css","left","top","_proxyTab","attr","config","title","text","childElementContainer","append","_updateTree","_$calculateItemAreas","document","body","_setDimensions","length","_this$_proxyTab$outer","_this$_proxyTab$outer2","offset","container","_minX","_minY","_maxX","_maxY","_width","_height","_setDropPosition","emit","offsetX","offsetY","event","_event$pageX","_event$pageY","pageX","pageY","isWithinContainer","settings","constrainDragToContainer","_area","_$getArea","_lastValidArea","_$highlightDropZone","_this$_layoutManager$3","dropTargetIndicator","hide","_$onDrop","addChild","_$destroy","off","remove","parent","removeChild","_$setParent","dimensions","dragProxyWidth","dragProxyHeight","headerHeight","callDownwards"],"sources":["../../src/controls/DragProxy.ts"],"sourcesContent":["import $ from 'jquery';\nimport type { AbstractContentItem, ItemArea, Stack } from '../items';\nimport type LayoutManager from '../LayoutManager';\nimport type { DragListener } from '../utils';\nimport { stripTags, EventEmitter } from '../utils';\n\n/**\n * This class creates a temporary container\n * for the component whilst it is being dragged\n * and handles drag events\n *\n * @param x The initial x position\n * @param y The initial y position\n * @param dragListener\n * @param layoutManager\n * @param contentItem\n * @param originalParent\n */\nexport default class DragProxy extends EventEmitter {\n private static _template =\n '<div class=\"lm_dragProxy\">' +\n '<div class=\"lm_header\">' +\n '<ul class=\"lm_tabs\">' +\n '<li class=\"lm_tab lm_active\"><i class=\"lm_left\"></i>' +\n '<span class=\"lm_title\"></span>' +\n '<i class=\"lm_right\"></i></li>' +\n '</ul>' +\n '</div>' +\n '<div class=\"lm_content\"></div>' +\n '</div>';\n\n private _dragListener: DragListener;\n private _layoutManager: LayoutManager;\n private _contentItem: AbstractContentItem;\n private _originalParent: Stack | null;\n\n private _area: ItemArea | null = null;\n private _lastValidArea: ItemArea | null = null;\n\n private _minX: number;\n private _maxX: number;\n private _minY: number;\n private _maxY: number;\n private _width: number;\n private _height: number;\n private _sided?: boolean;\n\n element: JQuery<HTMLElement>;\n childElementContainer: JQuery<HTMLElement>;\n private _proxyTab: JQuery<HTMLElement>;\n\n constructor(\n x: number,\n y: number,\n dragListener: DragListener,\n layoutManager: LayoutManager,\n contentItem: AbstractContentItem,\n originalParent: Stack | null\n ) {\n super();\n\n this._dragListener = dragListener;\n this._layoutManager = layoutManager;\n this._contentItem = contentItem;\n this._originalParent = originalParent;\n\n this._dragListener.on('drag', this._onDrag, this);\n this._dragListener.on('dragStop', this._onDrop, this);\n\n // set the inserted drag placeholder to be the size of the tab removed, before its removed\n if (this._contentItem.tab && this._contentItem.tab.element) {\n this._layoutManager.tabDropPlaceholder.width(\n this._contentItem.tab.element.outerWidth(true) ?? 0\n );\n this._layoutManager.tabDropPlaceholder.height(\n this._contentItem.tab.element.outerHeight(true) ?? 0\n );\n }\n\n this.element = $(DragProxy._template);\n if (originalParent && originalParent._side) {\n this._sided = originalParent._sided;\n this.element.addClass('lm_' + originalParent._side);\n if (['right', 'bottom'].indexOf(originalParent._side.toString()) >= 0)\n this.element.find('.lm_content').after(this.element.find('.lm_header'));\n }\n this.element.css({ left: x, top: y });\n this._proxyTab = this.element.find('.lm_tab');\n this._proxyTab.attr(\n 'title',\n stripTags(this._contentItem.config.title ?? '')\n );\n this.element.find('.lm_title').text(this._contentItem.config.title ?? '');\n this.childElementContainer = this.element.find('.lm_content');\n this.childElementContainer.append(contentItem.element);\n\n this._updateTree();\n this._layoutManager._$calculateItemAreas();\n\n $(document.body).append(this.element);\n\n // Need to set dimensions after adding the element, or `Component.setSize()` will not pass the `.is('visible')` test and won't update\n this._setDimensions();\n\n // there's no content tab to use yet, use the proxy tab size for placeholder sizing, after it's created\n if (!this._contentItem.tab && this._proxyTab.length) {\n this._layoutManager.tabDropPlaceholder.width(\n this._proxyTab.outerWidth(true) ?? 0\n );\n this._layoutManager.tabDropPlaceholder.height(\n this._proxyTab.outerHeight(true) ?? 0\n );\n }\n\n var offset = this._layoutManager.container.offset();\n\n this._minX = offset?.left ?? 0;\n this._minY = offset?.top ?? 0;\n this._maxX = (this._layoutManager.container.width() ?? 0) + this._minX;\n this._maxY = (this._layoutManager.container.height() ?? 0) + this._minY;\n this._width = this.element.width() ?? 0;\n this._height = this.element.height() ?? 0;\n\n this._setDropPosition(x, y);\n\n this._layoutManager.emit('itemPickedUp', this._contentItem);\n }\n\n /**\n * Callback on every mouseMove event during a drag. Determines if the drag is\n * still within the valid drag area and calls the layoutManager to highlight the\n * current drop area\n *\n * @param offsetX The difference from the original x position in px\n * @param offsetY The difference from the original y position in px\n * @param event\n */\n _onDrag(offsetX: number, offsetY: number, event: JQuery.TriggeredEvent) {\n const x = event.pageX ?? 0;\n const y = event.pageY ?? 0;\n const isWithinContainer =\n x > this._minX && x < this._maxX && y > this._minY && y < this._maxY;\n\n if (\n !isWithinContainer &&\n this._layoutManager.config.settings.constrainDragToContainer === true\n ) {\n return;\n }\n\n this._setDropPosition(x, y);\n }\n\n /**\n * Sets the target position, highlighting the appropriate area\n *\n * @param x The x position in px\n * @param y The y position in px\n */\n _setDropPosition(x: number, y: number) {\n this.element.css({ left: x, top: y });\n this._area = this._layoutManager._$getArea(x, y);\n\n if (this._area !== null) {\n this._lastValidArea = this._area;\n this._area.contentItem._$highlightDropZone(x, y, this._area);\n }\n }\n\n /**\n * Callback when the drag has finished. Determines the drop area\n * and adds the child to it\n */\n _onDrop() {\n this._layoutManager.dropTargetIndicator?.hide();\n\n /*\n * Valid drop area found\n */\n if (this._area !== null) {\n this._area.contentItem._$onDrop(this._contentItem, this._area);\n\n /**\n * No valid drop area available at present, but one has been found before.\n * Use it\n */\n } else if (this._lastValidArea !== null) {\n this._lastValidArea.contentItem._$onDrop(\n this._contentItem,\n this._lastValidArea\n );\n\n /**\n * No valid drop area found during the duration of the drag. Return\n * content item to its original position if a original parent is provided.\n * (Which is not the case if the drag had been initiated by createDragSource)\n */\n } else if (this._originalParent) {\n this._originalParent.addChild(this._contentItem);\n\n /**\n * The drag didn't ultimately end up with adding the content item to\n * any container. In order to ensure clean up happens, destroy the\n * content item.\n */\n } else {\n this._contentItem._$destroy();\n }\n\n this._dragListener.off('drag', this._onDrag, this);\n this._dragListener.off('dragStop', this._onDrop, this);\n\n this.element.remove();\n\n this._layoutManager.emit('itemDropped', this._contentItem);\n }\n\n /**\n * Removes the item from its original position within the tree\n */\n _updateTree() {\n /**\n * parent is null if the drag had been initiated by a external drag source\n */\n if (this._contentItem.parent) {\n this._contentItem.parent.removeChild(this._contentItem, true);\n }\n\n this._contentItem._$setParent(null);\n }\n\n /**\n * Updates the DragProxy's dimensions\n */\n _setDimensions() {\n const dimensions = this._layoutManager.config.dimensions;\n let width = dimensions.dragProxyWidth;\n let height = dimensions.dragProxyHeight;\n\n this.element.width(width);\n this.element.height(height);\n width -= this._sided ? dimensions.headerHeight : 0;\n height -= !this._sided ? dimensions.headerHeight : 0;\n this.childElementContainer.width(width);\n this.childElementContainer.height(height);\n this._contentItem.element.width(width);\n this._contentItem.element.height(height);\n this._contentItem.callDownwards('_$show');\n this._contentItem.callDownwards('setSize');\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DragSource.js","names":["$","DragListener","DragProxy","DragSource","constructor","element","itemConfig","layoutManager","_defineProperty","_element","_itemConfig","_layoutManager","_dragListener","_createDragListener","on","_onDragStart","x","y","contentItem","_$normalizeContentItem","extend","dragProxy"],"sources":["../../src/controls/DragSource.ts"],"sourcesContent":["import $ from 'jquery';\nimport type { ItemConfig } from '../config';\nimport type LayoutManager from '../LayoutManager';\nimport { DragListener } from '../utils';\nimport DragProxy from './DragProxy';\n\n/**\n * Allows for any DOM item to create a component on drag\n * start tobe dragged into the Layout\n *\n * @param element\n * @param itemConfig the configuration for the contentItem that will be created\n * @param layoutManager\n */\nexport default class DragSource {\n _element: JQuery<HTMLElement>;\n _itemConfig: ItemConfig | (() => ItemConfig);\n _layoutManager: LayoutManager;\n _dragListener: DragListener;\n\n constructor(\n element: JQuery<HTMLElement>,\n itemConfig: ItemConfig | (() => ItemConfig),\n layoutManager: LayoutManager\n ) {\n this._element = element;\n this._itemConfig = itemConfig;\n this._layoutManager = layoutManager;\n\n this._dragListener = this._createDragListener();\n }\n\n /**\n * Called initially and after every drag\n */\n _createDragListener() {\n this._dragListener = new DragListener(this._element, true);\n this._dragListener.on('dragStart', this._onDragStart, this);\n this._dragListener.on('dragStop', this._createDragListener, this);\n return this._dragListener;\n }\n\n /**\n * Callback for the DragListener's dragStart event\n *\n * @param x the x position of the mouse on dragStart\n * @param y the x position of the mouse on dragStart\n */\n _onDragStart(x: number, y: number) {\n let itemConfig = this._itemConfig;\n if (typeof itemConfig === 'function') {\n itemConfig = itemConfig();\n }\n const contentItem = this._layoutManager._$normalizeContentItem(\n $.extend(true, {}, itemConfig)\n ),\n dragProxy = new DragProxy(\n x,\n y,\n this._dragListener,\n this._layoutManager,\n contentItem,\n null\n );\n }\n}\n"],"mappings":";;;AAAA,OAAOA,CAAC,MAAM,QAAQ;AAAC,SAGdC,YAAY;AAAA,OACdC,SAAS;AAEhB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAMC,UAAU,CAAC;EAM9BC,WAAWA,CACTC,OAA4B,EAC5BC,UAA2C,EAC3CC,aAA4B,EAC5B;IAAAC,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IACA,IAAI,CAACC,QAAQ,GAAGJ,OAAO;IACvB,IAAI,CAACK,WAAW,GAAGJ,UAAU;IAC7B,IAAI,CAACK,cAAc,GAAGJ,aAAa;IAEnC,IAAI,CAACK,aAAa,GAAG,IAAI,CAACC,mBAAmB,CAAC,CAAC;EACjD;;EAEA;AACF;AACA;EACEA,mBAAmBA,CAAA,EAAG;IACpB,IAAI,CAACD,aAAa,GAAG,IAAIX,YAAY,CAAC,IAAI,CAACQ,QAAQ,EAAE,IAAI,CAAC;IAC1D,IAAI,CAACG,aAAa,CAACE,EAAE,CAAC,WAAW,EAAE,IAAI,CAACC,YAAY,EAAE,IAAI,CAAC;IAC3D,IAAI,CAACH,aAAa,CAACE,EAAE,CAAC,UAAU,EAAE,IAAI,CAACD,mBAAmB,EAAE,IAAI,CAAC;IACjE,OAAO,IAAI,CAACD,aAAa;EAC3B;;EAEA;AACF;AACA;AACA;AACA;AACA;EACEG,YAAYA,CAACC,CAAS,EAAEC,CAAS,EAAE;IACjC,IAAIX,UAAU,GAAG,IAAI,CAACI,WAAW;IACjC,IAAI,OAAOJ,UAAU,KAAK,UAAU,EAAE;MACpCA,UAAU,GAAGA,UAAU,CAAC,CAAC;IAC3B;IACA,IAAMY,WAAW,GAAG,IAAI,CAACP,cAAc,CAACQ,sBAAsB,CAC1DnB,CAAC,CAACoB,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,EAAEd,UAAU,CAC/B,CAAC;MACDe,SAAS,GAAG,IAAInB,SAAS,CACvBc,CAAC,EACDC,CAAC,EACD,IAAI,CAACL,aAAa,EAClB,IAAI,CAACD,cAAc,EACnBO,WAAW,EACX,IACF,CAAC;EACL;AACF"}
|
|
1
|
+
{"version":3,"file":"DragSource.js","names":["$","DragListener","DragProxy","DragSource","constructor","element","itemConfig","layoutManager","_defineProperty","_element","_itemConfig","_layoutManager","_dragListener","_createDragListener","on","_onDragStart","x","y","contentItem","_$normalizeContentItem","extend","dragProxy"],"sources":["../../src/controls/DragSource.ts"],"sourcesContent":["import $ from 'jquery';\nimport type { ItemConfig } from '../config';\nimport type LayoutManager from '../LayoutManager';\nimport { DragListener } from '../utils';\nimport DragProxy from './DragProxy';\n\n/**\n * Allows for any DOM item to create a component on drag\n * start tobe dragged into the Layout\n *\n * @param element\n * @param itemConfig the configuration for the contentItem that will be created\n * @param layoutManager\n */\nexport default class DragSource {\n _element: JQuery<HTMLElement>;\n _itemConfig: ItemConfig | (() => ItemConfig);\n _layoutManager: LayoutManager;\n _dragListener: DragListener;\n\n constructor(\n element: JQuery<HTMLElement>,\n itemConfig: ItemConfig | (() => ItemConfig),\n layoutManager: LayoutManager\n ) {\n this._element = element;\n this._itemConfig = itemConfig;\n this._layoutManager = layoutManager;\n\n this._dragListener = this._createDragListener();\n }\n\n /**\n * Called initially and after every drag\n */\n _createDragListener() {\n this._dragListener = new DragListener(this._element, true);\n this._dragListener.on('dragStart', this._onDragStart, this);\n this._dragListener.on('dragStop', this._createDragListener, this);\n return this._dragListener;\n }\n\n /**\n * Callback for the DragListener's dragStart event\n *\n * @param x the x position of the mouse on dragStart\n * @param y the x position of the mouse on dragStart\n */\n _onDragStart(x: number, y: number) {\n let itemConfig = this._itemConfig;\n if (typeof itemConfig === 'function') {\n itemConfig = itemConfig();\n }\n const contentItem = this._layoutManager._$normalizeContentItem(\n $.extend(true, {}, itemConfig)\n ),\n dragProxy = new DragProxy(\n x,\n y,\n this._dragListener,\n this._layoutManager,\n contentItem,\n null\n );\n }\n}\n"],"mappings":";;;AAAA,OAAOA,CAAC,MAAM,QAAQ;AAAC,SAGdC,YAAY;AAAA,OACdC,SAAS;AAEhB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAMC,UAAU,CAAC;EAM9BC,WAAWA,CACTC,OAA4B,EAC5BC,UAA2C,EAC3CC,aAA4B,EAC5B;IAAAC,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IACA,IAAI,CAACC,QAAQ,GAAGJ,OAAO;IACvB,IAAI,CAACK,WAAW,GAAGJ,UAAU;IAC7B,IAAI,CAACK,cAAc,GAAGJ,aAAa;IAEnC,IAAI,CAACK,aAAa,GAAG,IAAI,CAACC,mBAAmB,CAAC,CAAC;EACjD;;EAEA;AACF;AACA;EACEA,mBAAmBA,CAAA,EAAG;IACpB,IAAI,CAACD,aAAa,GAAG,IAAIX,YAAY,CAAC,IAAI,CAACQ,QAAQ,EAAE,IAAI,CAAC;IAC1D,IAAI,CAACG,aAAa,CAACE,EAAE,CAAC,WAAW,EAAE,IAAI,CAACC,YAAY,EAAE,IAAI,CAAC;IAC3D,IAAI,CAACH,aAAa,CAACE,EAAE,CAAC,UAAU,EAAE,IAAI,CAACD,mBAAmB,EAAE,IAAI,CAAC;IACjE,OAAO,IAAI,CAACD,aAAa;EAC3B;;EAEA;AACF;AACA;AACA;AACA;AACA;EACEG,YAAYA,CAACC,CAAS,EAAEC,CAAS,EAAE;IACjC,IAAIX,UAAU,GAAG,IAAI,CAACI,WAAW;IACjC,IAAI,OAAOJ,UAAU,KAAK,UAAU,EAAE;MACpCA,UAAU,GAAGA,UAAU,CAAC,CAAC;IAC3B;IACA,IAAMY,WAAW,GAAG,IAAI,CAACP,cAAc,CAACQ,sBAAsB,CAC1DnB,CAAC,CAACoB,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,EAAEd,UAAU,CAC/B,CAAC;MACDe,SAAS,GAAG,IAAInB,SAAS,CACvBc,CAAC,EACDC,CAAC,EACD,IAAI,CAACL,aAAa,EAClB,IAAI,CAACD,cAAc,EACnBO,WAAW,EACX,IACF,CAAC;EACL;AACF","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DragSourceFromEvent.js","names":["$","DragListener","DragProxy","DragSourceFromEvent","constructor","itemConfig","layoutManager","event","_defineProperty","window","_itemConfig","_layoutManager","_createDragListener","_dragListener","destroy","_element","on","_onDragStart","_destroy","onMouseDown","_startDrag","undefined","x","y","contentItem","_$normalizeContentItem","extend"],"sources":["../../src/controls/DragSourceFromEvent.ts"],"sourcesContent":["import $ from 'jquery';\nimport type { ItemConfig } from '../config';\nimport type LayoutManager from '../LayoutManager';\nimport { DragListener } from '../utils';\nimport { DragListenerEvent } from '../utils/DragListener';\nimport DragProxy from './DragProxy';\n\n/**\n * Creates a drag item given a starting mouseevent\n * that can then be dragged into the Layout\n *\n * @param itemConfig the configuration for the contentItem that will be created\n * @param layoutManager\n * @param event used to get the starting position\n */\nexport default class DragSourceFromEvent {\n private _element? = $(window) as unknown as JQuery<HTMLElement>; // we need something to listen for mousemoves against\n private _itemConfig?: ItemConfig | (() => ItemConfig);\n private _layoutManager?: LayoutManager;\n private _dragListener?: DragListener;\n\n constructor(\n itemConfig: ItemConfig | (() => ItemConfig),\n layoutManager: LayoutManager,\n event: DragListenerEvent\n ) {\n this._itemConfig = itemConfig;\n this._layoutManager = layoutManager;\n\n this._createDragListener(event);\n }\n\n /**\n * Called initially and after every drag\n */\n _createDragListener(event: DragListenerEvent) {\n if (this._dragListener) {\n this._dragListener.destroy();\n }\n\n if (!this._element) {\n return;\n }\n\n this._dragListener = new DragListener(this._element, true);\n this._dragListener.on('dragStart', this._onDragStart, this);\n this._dragListener.on('dragStop', this._destroy, this);\n\n // manaully pass in an event as mousedow, that already happened to start the dragListener\n this._dragListener.onMouseDown(event);\n this._dragListener._startDrag();\n }\n\n _destroy() {\n this._dragListener = undefined;\n this._element = undefined;\n this._itemConfig = undefined;\n this._layoutManager = undefined;\n }\n\n /**\n * Callback for the DragListener's dragStart event\n *\n * @param x the x position of the mouse on dragStart\n * @param y the x position of the mouse on dragStart\n */\n _onDragStart(x: number, y: number) {\n if (!this._dragListener || !this._layoutManager) {\n return;\n }\n\n var itemConfig = this._itemConfig;\n if (typeof itemConfig === 'function') {\n itemConfig = itemConfig();\n }\n var contentItem = this._layoutManager._$normalizeContentItem(\n $.extend(true, {}, itemConfig)\n );\n new DragProxy(\n x,\n y,\n this._dragListener,\n this._layoutManager,\n contentItem,\n null\n );\n }\n}\n"],"mappings":";;;AAAA,OAAOA,CAAC,MAAM,QAAQ;AAAC,SAGdC,YAAY;AAAA,OAEdC,SAAS;AAEhB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAMC,mBAAmB,CAAC;EAC0B;;EAKjEC,WAAWA,CACTC,UAA2C,EAC3CC,aAA4B,EAC5BC,KAAwB,EACxB;IAAAC,eAAA,mBATkBR,CAAC,CAACS,MAAM,CAAC;IAAAD,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAU3B,IAAI,CAACE,WAAW,GAAGL,UAAU;IAC7B,IAAI,CAACM,cAAc,GAAGL,aAAa;IAEnC,IAAI,CAACM,mBAAmB,CAACL,KAAK,CAAC;EACjC;;EAEA;AACF;AACA;EACEK,mBAAmBA,CAACL,KAAwB,EAAE;IAC5C,IAAI,IAAI,CAACM,aAAa,EAAE;MACtB,IAAI,CAACA,aAAa,CAACC,OAAO,CAAC,CAAC;IAC9B;IAEA,IAAI,CAAC,IAAI,CAACC,QAAQ,EAAE;MAClB;IACF;IAEA,IAAI,CAACF,aAAa,GAAG,IAAIZ,YAAY,CAAC,IAAI,CAACc,QAAQ,EAAE,IAAI,CAAC;IAC1D,IAAI,CAACF,aAAa,CAACG,EAAE,CAAC,WAAW,EAAE,IAAI,CAACC,YAAY,EAAE,IAAI,CAAC;IAC3D,IAAI,CAACJ,aAAa,CAACG,EAAE,CAAC,UAAU,EAAE,IAAI,CAACE,QAAQ,EAAE,IAAI,CAAC;;IAEtD;IACA,IAAI,CAACL,aAAa,CAACM,WAAW,CAACZ,KAAK,CAAC;IACrC,IAAI,CAACM,aAAa,CAACO,UAAU,CAAC,CAAC;EACjC;EAEAF,QAAQA,CAAA,EAAG;IACT,IAAI,CAACL,aAAa,GAAGQ,SAAS;IAC9B,IAAI,CAACN,QAAQ,GAAGM,SAAS;IACzB,IAAI,CAACX,WAAW,GAAGW,SAAS;IAC5B,IAAI,CAACV,cAAc,GAAGU,SAAS;EACjC;;EAEA;AACF;AACA;AACA;AACA;AACA;EACEJ,YAAYA,CAACK,CAAS,EAAEC,CAAS,EAAE;IACjC,IAAI,CAAC,IAAI,CAACV,aAAa,IAAI,CAAC,IAAI,CAACF,cAAc,EAAE;MAC/C;IACF;IAEA,IAAIN,UAAU,GAAG,IAAI,CAACK,WAAW;IACjC,IAAI,OAAOL,UAAU,KAAK,UAAU,EAAE;MACpCA,UAAU,GAAGA,UAAU,CAAC,CAAC;IAC3B;IACA,IAAImB,WAAW,GAAG,IAAI,CAACb,cAAc,CAACc,sBAAsB,CAC1DzB,CAAC,CAAC0B,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,EAAErB,UAAU,CAC/B,CAAC;IACD,IAAIH,SAAS,CACXoB,CAAC,EACDC,CAAC,EACD,IAAI,CAACV,aAAa,EAClB,IAAI,CAACF,cAAc,EACnBa,WAAW,EACX,IACF,CAAC;EACH;AACF"}
|
|
1
|
+
{"version":3,"file":"DragSourceFromEvent.js","names":["$","DragListener","DragProxy","DragSourceFromEvent","constructor","itemConfig","layoutManager","event","_defineProperty","window","_itemConfig","_layoutManager","_createDragListener","_dragListener","destroy","_element","on","_onDragStart","_destroy","onMouseDown","_startDrag","undefined","x","y","contentItem","_$normalizeContentItem","extend"],"sources":["../../src/controls/DragSourceFromEvent.ts"],"sourcesContent":["import $ from 'jquery';\nimport type { ItemConfig } from '../config';\nimport type LayoutManager from '../LayoutManager';\nimport { DragListener } from '../utils';\nimport { DragListenerEvent } from '../utils/DragListener';\nimport DragProxy from './DragProxy';\n\n/**\n * Creates a drag item given a starting mouseevent\n * that can then be dragged into the Layout\n *\n * @param itemConfig the configuration for the contentItem that will be created\n * @param layoutManager\n * @param event used to get the starting position\n */\nexport default class DragSourceFromEvent {\n private _element? = $(window) as unknown as JQuery<HTMLElement>; // we need something to listen for mousemoves against\n private _itemConfig?: ItemConfig | (() => ItemConfig);\n private _layoutManager?: LayoutManager;\n private _dragListener?: DragListener;\n\n constructor(\n itemConfig: ItemConfig | (() => ItemConfig),\n layoutManager: LayoutManager,\n event: DragListenerEvent\n ) {\n this._itemConfig = itemConfig;\n this._layoutManager = layoutManager;\n\n this._createDragListener(event);\n }\n\n /**\n * Called initially and after every drag\n */\n _createDragListener(event: DragListenerEvent) {\n if (this._dragListener) {\n this._dragListener.destroy();\n }\n\n if (!this._element) {\n return;\n }\n\n this._dragListener = new DragListener(this._element, true);\n this._dragListener.on('dragStart', this._onDragStart, this);\n this._dragListener.on('dragStop', this._destroy, this);\n\n // manaully pass in an event as mousedow, that already happened to start the dragListener\n this._dragListener.onMouseDown(event);\n this._dragListener._startDrag();\n }\n\n _destroy() {\n this._dragListener = undefined;\n this._element = undefined;\n this._itemConfig = undefined;\n this._layoutManager = undefined;\n }\n\n /**\n * Callback for the DragListener's dragStart event\n *\n * @param x the x position of the mouse on dragStart\n * @param y the x position of the mouse on dragStart\n */\n _onDragStart(x: number, y: number) {\n if (!this._dragListener || !this._layoutManager) {\n return;\n }\n\n var itemConfig = this._itemConfig;\n if (typeof itemConfig === 'function') {\n itemConfig = itemConfig();\n }\n var contentItem = this._layoutManager._$normalizeContentItem(\n $.extend(true, {}, itemConfig)\n );\n new DragProxy(\n x,\n y,\n this._dragListener,\n this._layoutManager,\n contentItem,\n null\n );\n }\n}\n"],"mappings":";;;AAAA,OAAOA,CAAC,MAAM,QAAQ;AAAC,SAGdC,YAAY;AAAA,OAEdC,SAAS;AAEhB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAMC,mBAAmB,CAAC;EAC0B;;EAKjEC,WAAWA,CACTC,UAA2C,EAC3CC,aAA4B,EAC5BC,KAAwB,EACxB;IAAAC,eAAA,mBATkBR,CAAC,CAACS,MAAM,CAAC;IAAAD,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAU3B,IAAI,CAACE,WAAW,GAAGL,UAAU;IAC7B,IAAI,CAACM,cAAc,GAAGL,aAAa;IAEnC,IAAI,CAACM,mBAAmB,CAACL,KAAK,CAAC;EACjC;;EAEA;AACF;AACA;EACEK,mBAAmBA,CAACL,KAAwB,EAAE;IAC5C,IAAI,IAAI,CAACM,aAAa,EAAE;MACtB,IAAI,CAACA,aAAa,CAACC,OAAO,CAAC,CAAC;IAC9B;IAEA,IAAI,CAAC,IAAI,CAACC,QAAQ,EAAE;MAClB;IACF;IAEA,IAAI,CAACF,aAAa,GAAG,IAAIZ,YAAY,CAAC,IAAI,CAACc,QAAQ,EAAE,IAAI,CAAC;IAC1D,IAAI,CAACF,aAAa,CAACG,EAAE,CAAC,WAAW,EAAE,IAAI,CAACC,YAAY,EAAE,IAAI,CAAC;IAC3D,IAAI,CAACJ,aAAa,CAACG,EAAE,CAAC,UAAU,EAAE,IAAI,CAACE,QAAQ,EAAE,IAAI,CAAC;;IAEtD;IACA,IAAI,CAACL,aAAa,CAACM,WAAW,CAACZ,KAAK,CAAC;IACrC,IAAI,CAACM,aAAa,CAACO,UAAU,CAAC,CAAC;EACjC;EAEAF,QAAQA,CAAA,EAAG;IACT,IAAI,CAACL,aAAa,GAAGQ,SAAS;IAC9B,IAAI,CAACN,QAAQ,GAAGM,SAAS;IACzB,IAAI,CAACX,WAAW,GAAGW,SAAS;IAC5B,IAAI,CAACV,cAAc,GAAGU,SAAS;EACjC;;EAEA;AACF;AACA;AACA;AACA;AACA;EACEJ,YAAYA,CAACK,CAAS,EAAEC,CAAS,EAAE;IACjC,IAAI,CAAC,IAAI,CAACV,aAAa,IAAI,CAAC,IAAI,CAACF,cAAc,EAAE;MAC/C;IACF;IAEA,IAAIN,UAAU,GAAG,IAAI,CAACK,WAAW;IACjC,IAAI,OAAOL,UAAU,KAAK,UAAU,EAAE;MACpCA,UAAU,GAAGA,UAAU,CAAC,CAAC;IAC3B;IACA,IAAImB,WAAW,GAAG,IAAI,CAACb,cAAc,CAACc,sBAAsB,CAC1DzB,CAAC,CAAC0B,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,EAAErB,UAAU,CAC/B,CAAC;IACD,IAAIH,SAAS,CACXoB,CAAC,EACDC,CAAC,EACD,IAAI,CAACV,aAAa,EAClB,IAAI,CAACF,cAAc,EACnBa,WAAW,EACX,IACF,CAAC;EACH;AACF","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DropTargetIndicator.js","names":["$","DropTargetIndicator","constructor","_defineProperty","_template","document","body","append","element","destroy","remove","highlightArea","area","css","left","x1","top","y1","width","Math","floor","x2","height","y2","show","hide"],"sources":["../../src/controls/DropTargetIndicator.ts"],"sourcesContent":["import $ from 'jquery';\n\nexport default class DropTargetIndicator {\n private static _template =\n '<div class=\"lm_dropTargetIndicator\"><div class=\"lm_inner\"></div></div>';\n\n element = $(DropTargetIndicator._template);\n\n constructor() {\n $(document.body).append(this.element);\n }\n\n destroy() {\n this.element.remove();\n }\n\n highlightArea(area: { x1: number; x2: number; y1: number; y2: number }) {\n this.element\n .css({\n left: area.x1,\n top: area.y1,\n // marching ants were causing rendering artifacts with fractional pixels\n width: Math.floor(area.x2 - area.x1),\n height: Math.floor(area.y2 - area.y1),\n })\n .show();\n }\n\n hide() {\n this.element.hide();\n }\n}\n"],"mappings":";;;AAAA,OAAOA,CAAC,MAAM,QAAQ;AAEtB,eAAe,MAAMC,mBAAmB,CAAC;EAMvCC,WAAWA,CAAA,EAAG;IAAAC,eAAA,kBAFJH,CAAC,CAACC,mBAAmB,CAACG,SAAS,CAAC;IAGxCJ,CAAC,CAACK,QAAQ,CAACC,IAAI,CAAC,CAACC,MAAM,CAAC,IAAI,CAACC,OAAO,CAAC;EACvC;EAEAC,OAAOA,CAAA,EAAG;IACR,IAAI,CAACD,OAAO,CAACE,MAAM,CAAC,CAAC;EACvB;EAEAC,aAAaA,CAACC,IAAwD,EAAE;IACtE,IAAI,CAACJ,OAAO,CACTK,GAAG,CAAC;MACHC,IAAI,EAAEF,IAAI,CAACG,EAAE;MACbC,GAAG,EAAEJ,IAAI,CAACK,EAAE;MACZ;MACAC,KAAK,EAAEC,IAAI,CAACC,KAAK,CAACR,IAAI,CAACS,EAAE,GAAGT,IAAI,CAACG,EAAE,CAAC;MACpCO,MAAM,EAAEH,IAAI,CAACC,KAAK,CAACR,IAAI,CAACW,EAAE,GAAGX,IAAI,CAACK,EAAE;IACtC,CAAC,CAAC,CACDO,IAAI,CAAC,CAAC;EACX;EAEAC,IAAIA,CAAA,EAAG;IACL,IAAI,CAACjB,OAAO,CAACiB,IAAI,CAAC,CAAC;EACrB;AACF;AAACtB,eAAA,CA7BoBF,mBAAmB,eAEpC,wEAAwE"}
|
|
1
|
+
{"version":3,"file":"DropTargetIndicator.js","names":["$","DropTargetIndicator","constructor","_defineProperty","_template","document","body","append","element","destroy","remove","highlightArea","area","css","left","x1","top","y1","width","Math","floor","x2","height","y2","show","hide"],"sources":["../../src/controls/DropTargetIndicator.ts"],"sourcesContent":["import $ from 'jquery';\n\nexport default class DropTargetIndicator {\n private static _template =\n '<div class=\"lm_dropTargetIndicator\"><div class=\"lm_inner\"></div></div>';\n\n element = $(DropTargetIndicator._template);\n\n constructor() {\n $(document.body).append(this.element);\n }\n\n destroy() {\n this.element.remove();\n }\n\n highlightArea(area: { x1: number; x2: number; y1: number; y2: number }) {\n this.element\n .css({\n left: area.x1,\n top: area.y1,\n // marching ants were causing rendering artifacts with fractional pixels\n width: Math.floor(area.x2 - area.x1),\n height: Math.floor(area.y2 - area.y1),\n })\n .show();\n }\n\n hide() {\n this.element.hide();\n }\n}\n"],"mappings":";;;AAAA,OAAOA,CAAC,MAAM,QAAQ;AAEtB,eAAe,MAAMC,mBAAmB,CAAC;EAMvCC,WAAWA,CAAA,EAAG;IAAAC,eAAA,kBAFJH,CAAC,CAACC,mBAAmB,CAACG,SAAS,CAAC;IAGxCJ,CAAC,CAACK,QAAQ,CAACC,IAAI,CAAC,CAACC,MAAM,CAAC,IAAI,CAACC,OAAO,CAAC;EACvC;EAEAC,OAAOA,CAAA,EAAG;IACR,IAAI,CAACD,OAAO,CAACE,MAAM,CAAC,CAAC;EACvB;EAEAC,aAAaA,CAACC,IAAwD,EAAE;IACtE,IAAI,CAACJ,OAAO,CACTK,GAAG,CAAC;MACHC,IAAI,EAAEF,IAAI,CAACG,EAAE;MACbC,GAAG,EAAEJ,IAAI,CAACK,EAAE;MACZ;MACAC,KAAK,EAAEC,IAAI,CAACC,KAAK,CAACR,IAAI,CAACS,EAAE,GAAGT,IAAI,CAACG,EAAE,CAAC;MACpCO,MAAM,EAAEH,IAAI,CAACC,KAAK,CAACR,IAAI,CAACW,EAAE,GAAGX,IAAI,CAACK,EAAE;IACtC,CAAC,CAAC,CACDO,IAAI,CAAC,CAAC;EACX;EAEAC,IAAIA,CAAA,EAAG;IACL,IAAI,CAACjB,OAAO,CAACiB,IAAI,CAAC,CAAC;EACrB;AACF;AAACtB,eAAA,CA7BoBF,mBAAmB,eAEpC,wEAAwE","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Header.js","names":["$","EventEmitter","HeaderButton","Tab","Header","constructor","layoutManager","parent","_this$layoutManager$c","_this$layoutManager$c2","_defineProperty","_template","_nextButtonTemplate","_previousButtonTemplate","config","settings","selectionEnabled","element","addClass","on","_onHeaderClick","bind","tabsContainer","find","tabDropdownContainer","hide","tabDropdownSearch","_handleFilterInput","_handleFilterKeydown","controlsContainer","_updateTabSizes","_handleItemPickedUp","_handleItemDropped","_handleNextMouseEnter","_handleNextMouseLeave","_handlePreviousMouseEnter","_handlePreviousMouseLeave","_handleScrollRepeat","_handleNextButtonMouseDown","_handlePreviousButtonMouseDown","_handleScrollButtonMouseDown","_handleScrollButtonMouseUp","_handleScrollEvent","tabNextButton","tabPreviousButton","before","_showAdditionalTabsDropdown","_hideAdditionalTabsDropdown","_tabControlOffset","tabControlOffset","_createControls","createTab","contentItem","index","i","tabs","length","tab","push","append","undefined","after","splice","removeTab","_$destroy","Error","setActiveContentItem","_this$tabs$element$ge","_this$tabs$element$ge2","_this$parent$config$a","isActive","setActive","activeContentItem","activeItemIndex","get","scrollIntoView","call","inline","emitBubblingEvent","position","previous","_header","show","_side","_setupHeaderPosition","_attachWheelListener","_this$tabsContainer$g","addEventListener","_handleWheelEvent","passive","_detachWheelListener","_this$tabsContainer$g2","removeEventListener","event","target","currentTarget","HTMLElement","delta","Math","abs","deltaY","deltaX","deltaMode","WheelEvent","DOM_DELTA_PAGE","_this$tabsContainer$i","innerWidth","DOM_DELTA_LINE","scrollLeft","round","_checkScrollArrows","isDraggingTab","isDropdownShown","_this$rAF","window","cancelAnimationFrame","rAF","off","_this$tabsContainer$s","SCROLL_RIGHT","_this$tabsContainer$s2","SCROLL_LEFT","_this$rAF2","_this$rAF3","rightOffscreenChild","_this$tabs$i$element$","_this$tabs$i$element$2","_this$tabsContainer$g3","_this$tabsContainer$g4","_this$tabsContainer$s3","offsetLeft","offsetWidth","behavior","_this$tabsContainer$g5","_this$tabsContainer$g6","scrollWidth","leftOffscreenChild","_this$tabs$i$element$3","_this$tabs$i$element$4","_this$tabsContainer$s4","direction","holdTimer","setTimeout","_this$tabsContainer$s5","CLICK_TIMEOUT","_this$holdTimer","_this$rAF4","clearTimeout","_this$tabsContainer$s6","_this$tabsContainer$i2","_this$tabsContainer$g7","first","prop","startX","_this$rAF5","arguments","prevTimestamp","tabContainer","tabContainerRect","getBoundingClientRect","_highlightHeaderDropZone","left","_this$tabsContainer$s7","_this$tabsContainer$i3","right","requestAnimationFrame","timestamp","_this$tabsContainer$g8","_this$tabsContainer$g9","startTime","deltaTime","newDeltaX","START_SPEED","ACCELERATION","min","Infinity","_$setClosable","isClosable","closeButton","_isClosable","emit","document","remove","_getHeaderSetting","name","closeStack","popout","label","maximise","tabDropdownLabel","tabOverflowNextLabel","tabOverflowPreviousLabel","labels","tabDropdown","tabNextLabel","tabPreviousLabel","tabDropdownButton","prepend","_onPopoutClick","toggleMaximise","maximiseLabel","minimiseLabel","maximiseButton","attr","tabDropdownList","clone","appendTo","children","removeClass","body","val","focus","dropdownKeyIndex","eq","_updateAdditionalTabsDropdown","e","key","_onTabClick","getNextDropdownIndex","startIndex","css","shiftKey","_this$tabDropdownList","_this$tabDropdownList2","preventDefault","_this$tabDropdownList3","_this$tabDropdownList4","_this$tabs$i$contentI","_this$tabs$i$contentI2","title","toLowerCase","indexOf","value","_this$tabDropdownCont","_this$tabDropdownButt","contains","_this$tabDropdownCont2","_this$tabDropdownCont3","_$$height","_$$width","scrollHeight","list_rect","windowHeight","height","windowWidth","width","button_rect","hasSpaceBelow","bottom","shouldFlip","PADDING","top","max","maxHeight","Boolean","showCloseIcon","popoutWholeStack","_this$activeContentIt","select","isOverflowing","clientWidth","_this$tabDropdownButt2","_this$tabDropdownButt3","join"],"sources":["../../src/controls/Header.ts"],"sourcesContent":["import $ from 'jquery';\nimport { StackItemHeaderConfig } from '../config';\nimport type { AbstractContentItem, Stack } from '../items';\nimport type LayoutManager from '../LayoutManager';\nimport { EventEmitter } from '../utils';\nimport HeaderButton from './HeaderButton';\nimport Tab from './Tab';\n\n/**\n * This class represents a header above a Stack ContentItem.\n *\n * @param layoutManager\n * @param parent\n */\nexport default class Header extends EventEmitter {\n private static _template = [\n '<div class=\"lm_header\">',\n '<ul class=\"lm_tabs\"></ul>',\n '<ul class=\"lm_controls\"></ul>',\n '<ul class=\"lm_tabdropdown_list\">',\n '<li class=\"lm_tabdropdown_search\"><input type=\"text\" placeholder=\"Find tab...\"></li>',\n '</ul>',\n '</div>',\n ].join('');\n\n private static _previousButtonTemplate = [\n '<ul class=\"lm_controls\">',\n '<li class=\"lm_tabpreviousbutton\"></li>',\n '</ul>',\n ].join('');\n\n private static _nextButtonTemplate = [\n '<li class=\"lm_tabnextbutton\"></li>',\n ].join('');\n\n layoutManager: LayoutManager;\n element = $(Header._template);\n\n tabsContainer: JQuery<HTMLElement>;\n tabDropdownContainer: JQuery<HTMLElement>;\n tabDropdownSearch: JQuery<HTMLElement>;\n tabDropdownList: JQuery<HTMLElement> | null = null;\n\n controlsContainer: JQuery<HTMLElement>;\n\n parent: Stack;\n\n tabs: Tab[] = [];\n activeContentItem: AbstractContentItem | null = null;\n closeButton: HeaderButton | null = null;\n\n tabDropdownButton: HeaderButton | null = null;\n tabNextButton = $(Header._nextButtonTemplate);\n tabPreviousButton = $(Header._previousButtonTemplate);\n\n // use for scroll repeat\n holdTimer: number | null = null;\n rAF: number | null = null;\n\n // mouse hold timeout to act as hold instead of click\n CLICK_TIMEOUT = 500;\n // mouse hold acceleration\n START_SPEED = 0.01;\n ACCELERATION = 0.0005;\n PADDING = 10 as const;\n SCROLL_LEFT = 'left' as const;\n SCROLL_RIGHT = 'right' as const;\n\n isDraggingTab = false;\n isOverflowing = false;\n isDropdownShown = false;\n dropdownKeyIndex = 0;\n\n private _lastVisibleTabIndex = -1;\n private _tabControlOffset?: number;\n\n constructor(layoutManager: LayoutManager, parent: Stack) {\n super();\n\n this.layoutManager = layoutManager;\n\n if (this.layoutManager.config.settings?.selectionEnabled) {\n this.element.addClass('lm_selectable');\n this.element.on('click', this._onHeaderClick.bind(this));\n }\n\n this.tabsContainer = this.element.find('.lm_tabs');\n\n this.tabDropdownContainer = this.element.find('.lm_tabdropdown_list');\n this.tabDropdownContainer.hide();\n this.tabDropdownSearch = this.element.find('.lm_tabdropdown_search input');\n\n this._handleFilterInput = this._handleFilterInput.bind(this);\n this._handleFilterKeydown = this._handleFilterKeydown.bind(this);\n this.tabDropdownSearch.on('input', this._handleFilterInput);\n this.tabDropdownSearch.on('keydown', this._handleFilterKeydown);\n\n this.controlsContainer = this.element.find('.lm_controls');\n this.parent = parent;\n this.parent.on('resize', this._updateTabSizes, this);\n\n this._handleItemPickedUp = this._handleItemPickedUp.bind(this);\n this._handleItemDropped = this._handleItemDropped.bind(this);\n\n this._handleNextMouseEnter = this._handleNextMouseEnter.bind(this);\n this._handleNextMouseLeave = this._handleNextMouseLeave.bind(this);\n this._handlePreviousMouseEnter = this._handlePreviousMouseEnter.bind(this);\n this._handlePreviousMouseLeave = this._handlePreviousMouseLeave.bind(this);\n this._handleScrollRepeat = this._handleScrollRepeat.bind(this);\n this._handleNextButtonMouseDown =\n this._handleNextButtonMouseDown.bind(this);\n this._handlePreviousButtonMouseDown =\n this._handlePreviousButtonMouseDown.bind(this);\n this._handleScrollButtonMouseDown =\n this._handleScrollButtonMouseDown.bind(this);\n this._handleScrollButtonMouseUp =\n this._handleScrollButtonMouseUp.bind(this);\n this._handleScrollEvent = this._handleScrollEvent.bind(this);\n\n this.tabNextButton.on('mousedown', this._handleNextButtonMouseDown);\n this.tabPreviousButton.on('mousedown', this._handlePreviousButtonMouseDown);\n this.tabsContainer.on('scroll', this._handleScrollEvent);\n\n this.layoutManager.on('itemPickedUp', this._handleItemPickedUp);\n this.layoutManager.on('itemDropped', this._handleItemDropped);\n\n // append previous button template\n this.tabsContainer.before(this.tabPreviousButton);\n // change reference to just the li, not the wrapping ul\n this.tabPreviousButton = this.tabPreviousButton.find('>:first-child');\n this.tabPreviousButton.hide();\n\n this._showAdditionalTabsDropdown =\n this._showAdditionalTabsDropdown.bind(this);\n this._hideAdditionalTabsDropdown =\n this._hideAdditionalTabsDropdown.bind(this);\n\n this._tabControlOffset =\n this.layoutManager.config.settings?.tabControlOffset;\n this._createControls();\n }\n\n /**\n * Creates a new tab and associates it with a contentItem\n *\n * @param contentItem\n * @param index The position of the tab\n */\n createTab(contentItem: AbstractContentItem, index?: number) {\n //If there's already a tab relating to the\n //content item, don't do anything\n for (let i = 0; i < this.tabs.length; i++) {\n if (this.tabs[i].contentItem === contentItem) {\n return;\n }\n }\n\n const tab = new Tab(this, contentItem);\n\n if (this.tabs.length === 0) {\n this.tabs.push(tab);\n this.tabsContainer.append(tab.element);\n return;\n }\n\n if (index === undefined) {\n index = this.tabs.length;\n }\n\n if (index > 0) {\n this.tabs[index - 1].element.after(tab.element);\n } else {\n this.tabs[0].element.before(tab.element);\n }\n\n this.tabs.splice(index, 0, tab);\n this._updateTabSizes();\n }\n\n /**\n * Finds a tab based on the contentItem its associated with and removes it.\n *\n * @param contentItem\n */\n removeTab(contentItem: AbstractContentItem) {\n for (var i = 0; i < this.tabs.length; i++) {\n if (this.tabs[i].contentItem === contentItem) {\n this.tabs[i]._$destroy();\n this.tabs.splice(i, 1);\n return;\n }\n }\n\n throw new Error('contentItem is not controlled by this header');\n }\n\n /**\n * The programmatical equivalent of clicking a Tab.\n *\n * @param contentItem\n */\n setActiveContentItem(contentItem: AbstractContentItem) {\n var isActive;\n\n for (var i = 0; i < this.tabs.length; i++) {\n isActive = this.tabs[i].contentItem === contentItem;\n this.tabs[i].setActive(isActive);\n if (isActive === true) {\n this.activeContentItem = contentItem;\n this.parent.config.activeItemIndex = i;\n }\n }\n\n // makes sure dropped tabs are scrollintoview, removed any re-ordering\n this.tabs[this.parent.config.activeItemIndex ?? 0].element\n .get(0)\n ?.scrollIntoView?.({\n // Optional chain scrollIntoView call so tests do not error\n inline: 'nearest',\n });\n\n this._hideAdditionalTabsDropdown();\n this._updateTabSizes();\n this.parent.emitBubblingEvent('stateChanged');\n }\n\n /**\n * Programmatically operate with header position.\n *\n * @param position one of ('top','left','right','bottom') to set or empty to get it.\n *\n * @returns previous header position\n */\n position(position?: 'top' | 'left' | 'right' | 'bottom') {\n let previous = this.parent._header.show;\n if (previous && !this.parent._side) previous = 'top';\n if (position !== undefined && this.parent._header.show !== position) {\n this.parent._header.show = position;\n this.parent._setupHeaderPosition();\n }\n return previous;\n }\n\n // Manually attaching so wheel can be passive instead of jquery .on\n // _attachWheelListener is called by parent init\n _attachWheelListener() {\n this.tabsContainer\n .get(0)\n ?.addEventListener('wheel', this._handleWheelEvent, { passive: true });\n }\n\n // detach called by this.destroy\n _detachWheelListener() {\n this.tabsContainer\n .get(0)\n ?.removeEventListener('wheel', this._handleWheelEvent);\n }\n\n _handleWheelEvent(event: WheelEvent) {\n const target = event.currentTarget;\n\n if (!(target instanceof HTMLElement)) {\n return;\n }\n\n // we only care about the larger of the two deltas\n let delta =\n Math.abs(event.deltaY) > Math.abs(event.deltaX)\n ? event.deltaY\n : event.deltaX;\n\n // jshint\n /* globals WheelEvent */\n if (event.deltaMode === WheelEvent.DOM_DELTA_PAGE) {\n // Users can set OS to be in deltaMode page\n // scrolly by page units as pixels\n delta *= this.tabsContainer.innerWidth() ?? 1;\n } else if (event.deltaMode === WheelEvent.DOM_DELTA_LINE) {\n // chrome goes 100px per 3 lines, and firefox would go 102 per 3 (17 lineheight * 3 lines * 2)\n delta *= 100 / 3;\n }\n target.scrollLeft += Math.round(delta);\n }\n\n // on scroll we need to check if side error might need to be disabled\n _handleScrollEvent() {\n this._checkScrollArrows();\n }\n\n // when and item is picked up, attach mouse enter listeners to next/previous buttons\n _handleItemPickedUp() {\n this.isDraggingTab = true;\n if (this.isDropdownShown) this._hideAdditionalTabsDropdown();\n this.controlsContainer.on('mouseenter', this._handleNextMouseEnter);\n this.tabPreviousButton.on('mouseenter', this._handlePreviousMouseEnter);\n }\n\n // when an item is dropped remove listeners and cancel animation\n _handleItemDropped() {\n this.isDraggingTab = false;\n window.cancelAnimationFrame(this.rAF ?? -1);\n this.rAF = null;\n this.controlsContainer.off('mouseenter', this._handleNextMouseEnter);\n this.controlsContainer.off('mouseleave', this._handleNextMouseLeave);\n this.tabPreviousButton.off('mouseenter', this._handlePreviousMouseEnter);\n this.tabPreviousButton.off('mouseleave', this._handlePreviousMouseLeave);\n }\n\n // on next/previous enter start scroll repeat animation loop\n // and attach a listener looking for mouseleave\n // cancel animation on mouse leave, and remove leave listener\n _handleNextMouseEnter() {\n this.controlsContainer.on('mouseleave', this._handleNextMouseLeave);\n this._handleScrollRepeat(\n this.SCROLL_RIGHT,\n this.tabsContainer.scrollLeft() ?? 0\n );\n }\n\n _handlePreviousMouseEnter() {\n this.tabPreviousButton.on('mouseleave', this._handlePreviousMouseLeave);\n this._handleScrollRepeat(\n this.SCROLL_LEFT,\n this.tabsContainer.scrollLeft() ?? 0\n );\n }\n\n _handleNextMouseLeave() {\n window.cancelAnimationFrame(this.rAF ?? -1);\n this.rAF = null;\n this.controlsContainer.off('mouseleave', this._handleNextMouseLeave);\n }\n\n _handlePreviousMouseLeave() {\n window.cancelAnimationFrame(this.rAF ?? -1);\n this.rAF = null;\n this.tabPreviousButton.off('mouseleave', this._handlePreviousMouseLeave);\n }\n\n // scroll one tab to the right on mouse down\n // start scrollRepeat if mouse is held down\n _handleNextButtonMouseDown() {\n var rightOffscreenChild;\n for (let i = 0; i < this.tabs.length; i += 1) {\n if (\n (this.tabs[i].element.get(0)?.offsetLeft ?? 0) >\n (this.tabsContainer.get(0)?.offsetWidth ?? 0) +\n (this.tabsContainer.scrollLeft() ?? 0)\n ) {\n rightOffscreenChild = this.tabs[i].element.get(0);\n break;\n }\n }\n\n if (rightOffscreenChild) {\n rightOffscreenChild.scrollIntoView({\n behavior: 'smooth',\n inline: 'nearest',\n });\n this._handleScrollButtonMouseDown(this.SCROLL_RIGHT);\n } else {\n const tabsContainer = this.tabsContainer.get(0);\n if (tabsContainer) {\n tabsContainer.scrollLeft = this.tabsContainer.get(0)?.scrollWidth ?? 0;\n }\n }\n }\n\n // scroll left by one tab\n // start scrollRepeat if mouse is held down\n _handlePreviousButtonMouseDown() {\n var leftOffscreenChild;\n for (var i = this.tabs.length - 1; i >= 0; i -= 1) {\n if (\n (this.tabs[i].element.get(0)?.offsetLeft ?? 0) <\n (this.tabsContainer.scrollLeft() ?? 0)\n ) {\n leftOffscreenChild = this.tabs[i].element.get(0);\n break;\n }\n }\n if (leftOffscreenChild) {\n leftOffscreenChild.scrollIntoView({\n behavior: 'smooth',\n inline: 'start',\n });\n this._handleScrollButtonMouseDown(this.SCROLL_LEFT);\n } else {\n const tabsContainer = this.tabsContainer.get(0);\n if (tabsContainer) {\n tabsContainer.scrollLeft = 0;\n }\n }\n }\n\n // when hold timer is reached start scroll repeat anim loop\n // cancel it when mouse up happens anywhere\n _handleScrollButtonMouseDown(direction: 'right' | 'left') {\n // closure so that scrollLeft is value at end of timer, and not start of timer\n this.holdTimer = window.setTimeout(() => {\n this._handleScrollRepeat(\n direction,\n this.tabsContainer.scrollLeft() ?? 0,\n 100\n ); // kickstart deltaX to be faster\n }, this.CLICK_TIMEOUT);\n window.addEventListener('mouseup', this._handleScrollButtonMouseUp);\n }\n\n // cancel scroll repeat\n _handleScrollButtonMouseUp() {\n clearTimeout(this.holdTimer ?? -1);\n this.holdTimer = null;\n cancelAnimationFrame(this.rAF ?? -1);\n this.rAF = null;\n window.removeEventListener('mouseup', this._handleScrollButtonMouseUp);\n }\n\n // disables scroll arrow if at edge of scroll area\n _checkScrollArrows() {\n if (this.tabsContainer.scrollLeft() === 0) {\n this.tabPreviousButton.first().prop('disabled', true);\n } else if (\n (this.tabsContainer.scrollLeft() ?? 0) +\n (this.tabsContainer.innerWidth() ?? 0) ===\n this.tabsContainer.get(0)?.scrollWidth\n ) {\n this.tabNextButton.prop('disabled', true);\n } else {\n this.tabNextButton.prop('disabled', false);\n this.tabPreviousButton.first().prop('disabled', false);\n }\n }\n\n // scrolls the tab header container on drag tab over control buttons\n // or on press and hold of scroll arrows at either end\n // called recurisevly in an animation loop until cancelled\n // or directional end is reached\n _handleScrollRepeat(\n direction: 'left' | 'right',\n startX: number,\n deltaX = 0,\n prevTimestamp?: number\n ) {\n const tabContainer = this.tabsContainer.get(0);\n if (!tabContainer) {\n return;\n }\n\n const tabContainerRect = tabContainer.getBoundingClientRect();\n if (direction === this.SCROLL_LEFT) {\n this.tabsContainer.scrollLeft(startX - deltaX);\n if (this.isDraggingTab) {\n // update drag placeholder\n this.parent._highlightHeaderDropZone(tabContainerRect.left - 1);\n }\n // stop loop at left edge\n if (this.tabsContainer.scrollLeft() === 0) {\n this._checkScrollArrows();\n return;\n }\n } else if (direction === this.SCROLL_RIGHT) {\n this.tabsContainer.scrollLeft(startX + deltaX);\n if (this.isDraggingTab) {\n // update drag placeholder\n this.parent._highlightHeaderDropZone(tabContainerRect.right + 1);\n }\n // stop loop at right edge\n if (\n (this.tabsContainer.scrollLeft() ?? 0) +\n (this.tabsContainer.innerWidth() ?? 0) ===\n tabContainer.scrollWidth\n ) {\n this._checkScrollArrows();\n return;\n }\n }\n\n // setup animation loop, scroll with acceleration\n window.cancelAnimationFrame(this.rAF ?? -1);\n this.rAF = window.requestAnimationFrame((timestamp: number) => {\n var startTime = prevTimestamp || timestamp;\n var deltaTime = timestamp - startTime;\n var newDeltaX =\n this.START_SPEED * deltaTime +\n 0.5 * this.ACCELERATION * (deltaTime * deltaTime);\n newDeltaX = Math.min(\n newDeltaX,\n this.tabsContainer.get(0)?.scrollWidth ?? Infinity\n );\n this._handleScrollRepeat(direction, startX, newDeltaX, startTime);\n });\n }\n\n /**\n * Programmatically set closability.\n * @param isClosable Whether to enable/disable closability.\n * @returns Whether the action was successful\n */\n _$setClosable(isClosable: boolean) {\n if (this.closeButton && this._isClosable()) {\n this.closeButton.element[isClosable ? 'show' : 'hide']();\n return true;\n }\n\n return false;\n }\n\n /**\n * Destroys the entire header\n */\n _$destroy() {\n this.emit('destroy', this);\n\n for (var i = 0; i < this.tabs.length; i++) {\n this.tabs[i]._$destroy();\n }\n\n this._detachWheelListener();\n this._handleItemDropped();\n\n $(document).off('mouseup', this._hideAdditionalTabsDropdown);\n this.tabDropdownSearch.off('input', this._handleFilterInput);\n this.tabDropdownSearch.off('keydown', this._handleFilterKeydown);\n\n this.element.remove();\n }\n\n /**\n * get settings from header\n *\n * @returns when exists\n */\n _getHeaderSetting<\n N extends 'show' | 'popout' | 'maximise' | 'close' | 'minimise',\n >(name: N): StackItemHeaderConfig[N] {\n if (name in this.parent._header) return this.parent._header[name];\n }\n\n /**\n * Creates the popout, maximise and close buttons in the header's top right corner\n */\n _createControls() {\n var closeStack,\n popout,\n label,\n maximise,\n tabDropdownLabel,\n tabOverflowNextLabel,\n tabOverflowPreviousLabel;\n\n /**\n * Dropdown to show additional tabs.\n */\n\n tabDropdownLabel = this.layoutManager.config.labels.tabDropdown;\n tabOverflowNextLabel = this.layoutManager.config.labels.tabNextLabel;\n tabOverflowPreviousLabel =\n this.layoutManager.config.labels.tabPreviousLabel;\n\n this.tabDropdownButton = new HeaderButton(\n this,\n tabDropdownLabel,\n 'lm_tabdropdown',\n this._showAdditionalTabsDropdown\n );\n this.tabDropdownButton.element.hide();\n\n this.controlsContainer.prepend(this.tabNextButton);\n this.tabNextButton.hide();\n\n /**\n * Popout control to launch component in new window.\n */\n if (this._getHeaderSetting('popout')) {\n popout = this._onPopoutClick.bind(this);\n label = this._getHeaderSetting('popout');\n new HeaderButton(this, label, 'lm_popout', popout);\n }\n\n /**\n * Maximise control - set the component to the full size of the layout\n */\n if (this._getHeaderSetting('maximise')) {\n maximise = this.parent.toggleMaximise.bind(this.parent);\n const maximiseLabel = this._getHeaderSetting('maximise');\n const minimiseLabel = this._getHeaderSetting('minimise');\n const maximiseButton = new HeaderButton(\n this,\n maximiseLabel,\n 'lm_maximise',\n maximise\n );\n\n this.parent.on('maximised', function () {\n maximiseButton.element.attr('title', minimiseLabel ?? '');\n });\n\n this.parent.on('minimised', function () {\n maximiseButton.element.attr('title', maximiseLabel ?? '');\n });\n }\n\n /**\n * Close button\n */\n if (this._isClosable()) {\n closeStack = this.parent.remove.bind(this.parent);\n label = this._getHeaderSetting('close');\n this.closeButton = new HeaderButton(this, label, 'lm_close', closeStack);\n }\n }\n\n /**\n * Shows drop down for additional tabs when there are too many to display.\n *\n * @returns {void}\n */\n _showAdditionalTabsDropdown() {\n if (this.isDropdownShown) {\n this._hideAdditionalTabsDropdown();\n return;\n }\n\n // clone tabs in the current list, with event listeners\n // and add them to the drop down\n this.tabDropdownList = this.tabsContainer\n .clone(true)\n .appendTo(this.tabDropdownContainer)\n .children()\n .removeClass('lm_active');\n\n // move it to be absolutely positioned in document root\n // as header has overflow hidden, and we need to escape that\n $(document.body).append(this.tabDropdownContainer);\n\n // show the dropdown\n this.tabDropdownContainer.show();\n this.isDropdownShown = true;\n\n // dropdown is a part of the header z-index context\n // add class to header when dropdown is open\n // so we can bump the z-index of the lists parent\n this.element.addClass('lm_dropdown_open');\n\n // focus the dropdown filter list input\n this.tabDropdownSearch.val('').focus();\n this.dropdownKeyIndex = 0;\n this.tabDropdownList\n .eq(this.dropdownKeyIndex)\n .addClass('lm_keyboard_active');\n\n $(document).on('mousedown', this._hideAdditionalTabsDropdown);\n this._updateAdditionalTabsDropdown();\n }\n\n // enables synthetic keyboard navigation of the list\n _handleFilterKeydown(e: JQuery.TriggeredEvent) {\n if (e.key === 'Escape') {\n this._hideAdditionalTabsDropdown();\n return;\n }\n\n // a negative dropdownKeyIndex means the list is filtered to an empty state\n if (this.dropdownKeyIndex === -1) return;\n\n if (e.key === 'Enter' || e.key === ' ') {\n // simulate \"click\"\n this._hideAdditionalTabsDropdown();\n this.tabs[this.dropdownKeyIndex]._onTabClick();\n return;\n }\n\n function getNextDropdownIndex(\n startIndex: number,\n delta: number,\n tabDropdownList: JQuery<HTMLElement> | null\n ) {\n if (tabDropdownList == null || tabDropdownList.length < 2) {\n return -1;\n }\n var i =\n (startIndex + delta + tabDropdownList.length) % tabDropdownList.length;\n while (i !== startIndex) {\n if (tabDropdownList.eq(i).css('display') !== 'none') {\n return i;\n }\n i = (i + delta + tabDropdownList.length) % tabDropdownList.length;\n }\n\n return startIndex;\n }\n\n // allow tab or arrow key navigation of list, prevent tabs default behaviour\n if (e.key === 'ArrowDown' || (e.key === 'Tab' && e.shiftKey === false)) {\n e.preventDefault();\n this.tabDropdownList\n ?.eq(this.dropdownKeyIndex)\n .removeClass('lm_keyboard_active');\n this.dropdownKeyIndex = getNextDropdownIndex(\n this.dropdownKeyIndex,\n 1,\n this.tabDropdownList\n );\n this.tabDropdownList\n ?.eq(this.dropdownKeyIndex)\n .addClass('lm_keyboard_active');\n } else if (e.key === 'ArrowUp' || e.key === 'Tab') {\n e.preventDefault();\n this.tabDropdownList\n ?.eq(this.dropdownKeyIndex)\n .removeClass('lm_keyboard_active');\n this.dropdownKeyIndex = getNextDropdownIndex(\n this.dropdownKeyIndex,\n -1,\n this.tabDropdownList\n );\n this.tabDropdownList\n ?.eq(this.dropdownKeyIndex)\n .addClass('lm_keyboard_active');\n }\n }\n\n // filters the list\n _handleFilterInput(event: JQuery.TriggeredEvent) {\n if (this.tabDropdownList == null) {\n return;\n }\n // reset keyboard index\n this.tabDropdownList\n .eq(this.dropdownKeyIndex)\n .removeClass('lm_keyboard_active');\n this.dropdownKeyIndex = -1;\n\n for (var i = 0; i < this.tabDropdownList.length; i++) {\n if (\n (this.tabs[i].contentItem.config.title\n ?.toLowerCase()\n .indexOf(event.target.value.toLowerCase()) ?? -1) !== -1\n ) {\n this.tabDropdownList.eq(i).css('display', '');\n if (this.dropdownKeyIndex === -1) this.dropdownKeyIndex = i;\n } else {\n this.tabDropdownList.eq(i).css('display', 'none');\n }\n }\n\n if (this.dropdownKeyIndex !== -1) {\n this.tabDropdownList\n .eq(this.dropdownKeyIndex)\n .addClass('lm_keyboard_active');\n }\n }\n\n /**\n * Hides drop down for additional tabs when needed. It is called via mousedown\n * event on document when list is open, or programmatically when drag starts,\n * or active tab changes etc.\n */\n _hideAdditionalTabsDropdown(event?: JQuery.UIEventBase) {\n // dropdown already closed, do nothing\n if (!this.isDropdownShown) return;\n\n if (event && this.tabDropdownContainer.get(0)?.contains(event.target)) {\n // prevent events occuring inside the list from causing a close\n return;\n } else if (\n event &&\n this.tabDropdownButton?.element.get(0) === event.target\n ) {\n // do nothing on the mouse down so that the click event can close, rather then re-open\n return;\n }\n\n this.element.removeClass('lm_dropdown_open');\n this.tabDropdownContainer.hide();\n this.isDropdownShown = false;\n\n // put it back in the header dom to keep the root tidy\n this.element.append(this.tabDropdownContainer);\n\n // remove the current tab list\n this.tabDropdownContainer.find('.lm_tabs').remove();\n\n $(document).off('mousedown', this._hideAdditionalTabsDropdown);\n }\n\n /**\n * Ensures additional tab drop down which is absolutely positioned in the root\n * doesn't overflow the screen, and instead becomes scrollable. Positions the\n * floating menu in the correct location relative to the dropdown button.\n */\n _updateAdditionalTabsDropdown() {\n if (!this.isDropdownShown) return;\n if (!this.tabDropdownList || this.tabDropdownList.length == 0) return;\n\n const scrollHeight = this.tabDropdownContainer.get(0)?.scrollHeight ?? 0;\n if (scrollHeight === 0) return; // height can be zero if called on a hidden or empty list\n\n const list_rect = this.tabDropdownContainer[0].getBoundingClientRect();\n const windowHeight = $(window).height() ?? 0;\n const windowWidth = $(window).width() ?? 0;\n\n // position relative to the dropdown button\n if (!this.tabDropdownButton) return;\n const button_rect =\n this.tabDropdownButton.element[0].getBoundingClientRect();\n\n // If it fits below button, put it there. If it doesn't and there is more\n // than 60% space above, then flip to displaying menu above button\n const hasSpaceBelow = scrollHeight < windowHeight - button_rect.bottom;\n const shouldFlip =\n !hasSpaceBelow && button_rect.bottom > windowHeight * 0.6; // 0.6 bias to not flipping rather than strictly 0.5\n\n // keep from going of right edge\n // when flipped offset to right edge of button\n const left = Math.min(\n button_rect.left + (shouldFlip ? button_rect.width : 0),\n windowWidth - list_rect.width - this.PADDING\n );\n // flip, with limit of top of screen\n const top = shouldFlip\n ? Math.max(button_rect.top - scrollHeight, this.PADDING)\n : button_rect.bottom;\n\n // if needs scroll to fit, apply a max-height\n const maxHeight = windowHeight - top - this.PADDING;\n\n this.tabDropdownContainer.css({\n 'max-height': maxHeight,\n top,\n left,\n });\n }\n\n /**\n * Checks whether the header is closable based on the parent config and\n * the global config.\n *\n * @returns Whether the header is closable.\n */\n _isClosable() {\n return Boolean(\n this.parent.config.isClosable &&\n this.layoutManager.config.settings.showCloseIcon\n );\n }\n\n _onPopoutClick() {\n if (this.layoutManager.config.settings.popoutWholeStack === true) {\n this.parent.popout();\n } else {\n this.activeContentItem?.popout();\n }\n }\n\n /**\n * Invoked when the header's background is clicked (not it's tabs or controls)\n *\n * @param event\n */\n _onHeaderClick(event: JQuery.UIEventBase) {\n if (event.target === this.element[0]) {\n this.parent.select();\n }\n }\n\n /**\n * Pushes the tabs to the tab dropdown if the available space is not sufficient\n */\n _updateTabSizes() {\n if (this.tabs.length === 0) {\n return;\n }\n\n const tabsContainer = this.tabsContainer.get(0);\n\n if (this.isDropdownShown) {\n // resize the dropdown list too as it is currently open\n this._updateAdditionalTabsDropdown();\n }\n\n if (!tabsContainer) {\n return;\n }\n\n if (\n !this.isOverflowing &&\n tabsContainer.scrollWidth > tabsContainer.clientWidth\n ) {\n this.tabDropdownButton?.element.show();\n this.tabNextButton.show();\n this.tabPreviousButton.show();\n this.isOverflowing = true;\n } else if (\n this.isOverflowing &&\n tabsContainer.scrollWidth <= tabsContainer.clientWidth\n ) {\n this.tabDropdownButton?.element.hide();\n this.tabNextButton.hide();\n this.tabPreviousButton.hide();\n this.isOverflowing = false;\n }\n\n if (this.isOverflowing) this._checkScrollArrows();\n }\n}\n"],"mappings":";;;AAAA,OAAOA,CAAC,MAAM,QAAQ;AAAC,SAIdC,YAAY;AAAA,OACdC,YAAY;AAAA,OACZC,GAAG;AAEV;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAMC,MAAM,SAASH,YAAY,CAAC;EAyC/C;;EAIA;;EAEA;;EAeAI,WAAWA,CAACC,aAA4B,EAAEC,MAAa,EAAE;IAAA,IAAAC,qBAAA,EAAAC,sBAAA;IACvD,KAAK,CAAC,CAAC;IAACC,eAAA;IAAAA,eAAA,kBAzCAV,CAAC,CAACI,MAAM,CAACO,SAAS,CAAC;IAAAD,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA,0BAKiB,IAAI;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA,eAMpC,EAAE;IAAAA,eAAA,4BACgC,IAAI;IAAAA,eAAA,sBACjB,IAAI;IAAAA,eAAA,4BAEE,IAAI;IAAAA,eAAA,wBAC7BV,CAAC,CAACI,MAAM,CAACQ,mBAAmB,CAAC;IAAAF,eAAA,4BACzBV,CAAC,CAACI,MAAM,CAACS,uBAAuB,CAAC;IAAAH,eAAA,oBAG1B,IAAI;IAAAA,eAAA,cACV,IAAI;IAAAA,eAAA,wBAGT,GAAG;IAAAA,eAAA,sBAEL,IAAI;IAAAA,eAAA,uBACH,MAAM;IAAAA,eAAA,kBACX,EAAE;IAAAA,eAAA,sBACE,MAAM;IAAAA,eAAA,uBACL,OAAO;IAAAA,eAAA,wBAEN,KAAK;IAAAA,eAAA,wBACL,KAAK;IAAAA,eAAA,0BACH,KAAK;IAAAA,eAAA,2BACJ,CAAC;IAAAA,eAAA,+BAEW,CAAC,CAAC;IAAAA,eAAA;IAM/B,IAAI,CAACJ,aAAa,GAAGA,aAAa;IAElC,KAAAE,qBAAA,GAAI,IAAI,CAACF,aAAa,CAACQ,MAAM,CAACC,QAAQ,cAAAP,qBAAA,eAAlCA,qBAAA,CAAoCQ,gBAAgB,EAAE;MACxD,IAAI,CAACC,OAAO,CAACC,QAAQ,CAAC,eAAe,CAAC;MACtC,IAAI,CAACD,OAAO,CAACE,EAAE,CAAC,OAAO,EAAE,IAAI,CAACC,cAAc,CAACC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1D;IAEA,IAAI,CAACC,aAAa,GAAG,IAAI,CAACL,OAAO,CAACM,IAAI,CAAC,UAAU,CAAC;IAElD,IAAI,CAACC,oBAAoB,GAAG,IAAI,CAACP,OAAO,CAACM,IAAI,CAAC,sBAAsB,CAAC;IACrE,IAAI,CAACC,oBAAoB,CAACC,IAAI,CAAC,CAAC;IAChC,IAAI,CAACC,iBAAiB,GAAG,IAAI,CAACT,OAAO,CAACM,IAAI,CAAC,8BAA8B,CAAC;IAE1E,IAAI,CAACI,kBAAkB,GAAG,IAAI,CAACA,kBAAkB,CAACN,IAAI,CAAC,IAAI,CAAC;IAC5D,IAAI,CAACO,oBAAoB,GAAG,IAAI,CAACA,oBAAoB,CAACP,IAAI,CAAC,IAAI,CAAC;IAChE,IAAI,CAACK,iBAAiB,CAACP,EAAE,CAAC,OAAO,EAAE,IAAI,CAACQ,kBAAkB,CAAC;IAC3D,IAAI,CAACD,iBAAiB,CAACP,EAAE,CAAC,SAAS,EAAE,IAAI,CAACS,oBAAoB,CAAC;IAE/D,IAAI,CAACC,iBAAiB,GAAG,IAAI,CAACZ,OAAO,CAACM,IAAI,CAAC,cAAc,CAAC;IAC1D,IAAI,CAAChB,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACA,MAAM,CAACY,EAAE,CAAC,QAAQ,EAAE,IAAI,CAACW,eAAe,EAAE,IAAI,CAAC;IAEpD,IAAI,CAACC,mBAAmB,GAAG,IAAI,CAACA,mBAAmB,CAACV,IAAI,CAAC,IAAI,CAAC;IAC9D,IAAI,CAACW,kBAAkB,GAAG,IAAI,CAACA,kBAAkB,CAACX,IAAI,CAAC,IAAI,CAAC;IAE5D,IAAI,CAACY,qBAAqB,GAAG,IAAI,CAACA,qBAAqB,CAACZ,IAAI,CAAC,IAAI,CAAC;IAClE,IAAI,CAACa,qBAAqB,GAAG,IAAI,CAACA,qBAAqB,CAACb,IAAI,CAAC,IAAI,CAAC;IAClE,IAAI,CAACc,yBAAyB,GAAG,IAAI,CAACA,yBAAyB,CAACd,IAAI,CAAC,IAAI,CAAC;IAC1E,IAAI,CAACe,yBAAyB,GAAG,IAAI,CAACA,yBAAyB,CAACf,IAAI,CAAC,IAAI,CAAC;IAC1E,IAAI,CAACgB,mBAAmB,GAAG,IAAI,CAACA,mBAAmB,CAAChB,IAAI,CAAC,IAAI,CAAC;IAC9D,IAAI,CAACiB,0BAA0B,GAC7B,IAAI,CAACA,0BAA0B,CAACjB,IAAI,CAAC,IAAI,CAAC;IAC5C,IAAI,CAACkB,8BAA8B,GACjC,IAAI,CAACA,8BAA8B,CAAClB,IAAI,CAAC,IAAI,CAAC;IAChD,IAAI,CAACmB,4BAA4B,GAC/B,IAAI,CAACA,4BAA4B,CAACnB,IAAI,CAAC,IAAI,CAAC;IAC9C,IAAI,CAACoB,0BAA0B,GAC7B,IAAI,CAACA,0BAA0B,CAACpB,IAAI,CAAC,IAAI,CAAC;IAC5C,IAAI,CAACqB,kBAAkB,GAAG,IAAI,CAACA,kBAAkB,CAACrB,IAAI,CAAC,IAAI,CAAC;IAE5D,IAAI,CAACsB,aAAa,CAACxB,EAAE,CAAC,WAAW,EAAE,IAAI,CAACmB,0BAA0B,CAAC;IACnE,IAAI,CAACM,iBAAiB,CAACzB,EAAE,CAAC,WAAW,EAAE,IAAI,CAACoB,8BAA8B,CAAC;IAC3E,IAAI,CAACjB,aAAa,CAACH,EAAE,CAAC,QAAQ,EAAE,IAAI,CAACuB,kBAAkB,CAAC;IAExD,IAAI,CAACpC,aAAa,CAACa,EAAE,CAAC,cAAc,EAAE,IAAI,CAACY,mBAAmB,CAAC;IAC/D,IAAI,CAACzB,aAAa,CAACa,EAAE,CAAC,aAAa,EAAE,IAAI,CAACa,kBAAkB,CAAC;;IAE7D;IACA,IAAI,CAACV,aAAa,CAACuB,MAAM,CAAC,IAAI,CAACD,iBAAiB,CAAC;IACjD;IACA,IAAI,CAACA,iBAAiB,GAAG,IAAI,CAACA,iBAAiB,CAACrB,IAAI,CAAC,eAAe,CAAC;IACrE,IAAI,CAACqB,iBAAiB,CAACnB,IAAI,CAAC,CAAC;IAE7B,IAAI,CAACqB,2BAA2B,GAC9B,IAAI,CAACA,2BAA2B,CAACzB,IAAI,CAAC,IAAI,CAAC;IAC7C,IAAI,CAAC0B,2BAA2B,GAC9B,IAAI,CAACA,2BAA2B,CAAC1B,IAAI,CAAC,IAAI,CAAC;IAE7C,IAAI,CAAC2B,iBAAiB,IAAAvC,sBAAA,GACpB,IAAI,CAACH,aAAa,CAACQ,MAAM,CAACC,QAAQ,cAAAN,sBAAA,uBAAlCA,sBAAA,CAAoCwC,gBAAgB;IACtD,IAAI,CAACC,eAAe,CAAC,CAAC;EACxB;;EAEA;AACF;AACA;AACA;AACA;AACA;EACEC,SAASA,CAACC,WAAgC,EAAEC,KAAc,EAAE;IAC1D;IACA;IACA,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,IAAI,CAACC,IAAI,CAACC,MAAM,EAAEF,CAAC,EAAE,EAAE;MACzC,IAAI,IAAI,CAACC,IAAI,CAACD,CAAC,CAAC,CAACF,WAAW,KAAKA,WAAW,EAAE;QAC5C;MACF;IACF;IAEA,IAAMK,GAAG,GAAG,IAAItD,GAAG,CAAC,IAAI,EAAEiD,WAAW,CAAC;IAEtC,IAAI,IAAI,CAACG,IAAI,CAACC,MAAM,KAAK,CAAC,EAAE;MAC1B,IAAI,CAACD,IAAI,CAACG,IAAI,CAACD,GAAG,CAAC;MACnB,IAAI,CAACnC,aAAa,CAACqC,MAAM,CAACF,GAAG,CAACxC,OAAO,CAAC;MACtC;IACF;IAEA,IAAIoC,KAAK,KAAKO,SAAS,EAAE;MACvBP,KAAK,GAAG,IAAI,CAACE,IAAI,CAACC,MAAM;IAC1B;IAEA,IAAIH,KAAK,GAAG,CAAC,EAAE;MACb,IAAI,CAACE,IAAI,CAACF,KAAK,GAAG,CAAC,CAAC,CAACpC,OAAO,CAAC4C,KAAK,CAACJ,GAAG,CAACxC,OAAO,CAAC;IACjD,CAAC,MAAM;MACL,IAAI,CAACsC,IAAI,CAAC,CAAC,CAAC,CAACtC,OAAO,CAAC4B,MAAM,CAACY,GAAG,CAACxC,OAAO,CAAC;IAC1C;IAEA,IAAI,CAACsC,IAAI,CAACO,MAAM,CAACT,KAAK,EAAE,CAAC,EAAEI,GAAG,CAAC;IAC/B,IAAI,CAAC3B,eAAe,CAAC,CAAC;EACxB;;EAEA;AACF;AACA;AACA;AACA;EACEiC,SAASA,CAACX,WAAgC,EAAE;IAC1C,KAAK,IAAIE,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,IAAI,CAACC,IAAI,CAACC,MAAM,EAAEF,CAAC,EAAE,EAAE;MACzC,IAAI,IAAI,CAACC,IAAI,CAACD,CAAC,CAAC,CAACF,WAAW,KAAKA,WAAW,EAAE;QAC5C,IAAI,CAACG,IAAI,CAACD,CAAC,CAAC,CAACU,SAAS,CAAC,CAAC;QACxB,IAAI,CAACT,IAAI,CAACO,MAAM,CAACR,CAAC,EAAE,CAAC,CAAC;QACtB;MACF;IACF;IAEA,MAAM,IAAIW,KAAK,CAAC,8CAA8C,CAAC;EACjE;;EAEA;AACF;AACA;AACA;AACA;EACEC,oBAAoBA,CAACd,WAAgC,EAAE;IAAA,IAAAe,qBAAA,EAAAC,sBAAA,EAAAC,qBAAA;IACrD,IAAIC,QAAQ;IAEZ,KAAK,IAAIhB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,IAAI,CAACC,IAAI,CAACC,MAAM,EAAEF,CAAC,EAAE,EAAE;MACzCgB,QAAQ,GAAG,IAAI,CAACf,IAAI,CAACD,CAAC,CAAC,CAACF,WAAW,KAAKA,WAAW;MACnD,IAAI,CAACG,IAAI,CAACD,CAAC,CAAC,CAACiB,SAAS,CAACD,QAAQ,CAAC;MAChC,IAAIA,QAAQ,KAAK,IAAI,EAAE;QACrB,IAAI,CAACE,iBAAiB,GAAGpB,WAAW;QACpC,IAAI,CAAC7C,MAAM,CAACO,MAAM,CAAC2D,eAAe,GAAGnB,CAAC;MACxC;IACF;;IAEA;IACA,CAAAa,qBAAA,OAAI,CAACZ,IAAI,EAAAc,qBAAA,GAAC,IAAI,CAAC9D,MAAM,CAACO,MAAM,CAAC2D,eAAe,cAAAJ,qBAAA,cAAAA,qBAAA,GAAI,CAAC,CAAC,CAACpD,OAAO,CACvDyD,GAAG,CAAC,CAAC,CAAC,cAAAP,qBAAA,wBAAAC,sBAAA,GADTD,qBAAA,CAEIQ,cAAc,cAAAP,sBAAA,uBAFlBA,sBAAA,CAAAQ,IAAA,CAAAT,qBAAA,EAEqB;MACjB;MACAU,MAAM,EAAE;IACV,CAAC,CAAC;IAEJ,IAAI,CAAC9B,2BAA2B,CAAC,CAAC;IAClC,IAAI,CAACjB,eAAe,CAAC,CAAC;IACtB,IAAI,CAACvB,MAAM,CAACuE,iBAAiB,CAAC,cAAc,CAAC;EAC/C;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACEC,QAAQA,CAACA,QAA8C,EAAE;IACvD,IAAIC,QAAQ,GAAG,IAAI,CAACzE,MAAM,CAAC0E,OAAO,CAACC,IAAI;IACvC,IAAIF,QAAQ,IAAI,CAAC,IAAI,CAACzE,MAAM,CAAC4E,KAAK,EAAEH,QAAQ,GAAG,KAAK;IACpD,IAAID,QAAQ,KAAKnB,SAAS,IAAI,IAAI,CAACrD,MAAM,CAAC0E,OAAO,CAACC,IAAI,KAAKH,QAAQ,EAAE;MACnE,IAAI,CAACxE,MAAM,CAAC0E,OAAO,CAACC,IAAI,GAAGH,QAAQ;MACnC,IAAI,CAACxE,MAAM,CAAC6E,oBAAoB,CAAC,CAAC;IACpC;IACA,OAAOJ,QAAQ;EACjB;;EAEA;EACA;EACAK,oBAAoBA,CAAA,EAAG;IAAA,IAAAC,qBAAA;IACrB,CAAAA,qBAAA,OAAI,CAAChE,aAAa,CACfoD,GAAG,CAAC,CAAC,CAAC,cAAAY,qBAAA,uBADTA,qBAAA,CAEIC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAACC,iBAAiB,EAAE;MAAEC,OAAO,EAAE;IAAK,CAAC,CAAC;EAC1E;;EAEA;EACAC,oBAAoBA,CAAA,EAAG;IAAA,IAAAC,sBAAA;IACrB,CAAAA,sBAAA,OAAI,CAACrE,aAAa,CACfoD,GAAG,CAAC,CAAC,CAAC,cAAAiB,sBAAA,uBADTA,sBAAA,CAEIC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAACJ,iBAAiB,CAAC;EAC1D;EAEAA,iBAAiBA,CAACK,KAAiB,EAAE;IACnC,IAAMC,MAAM,GAAGD,KAAK,CAACE,aAAa;IAElC,IAAI,EAAED,MAAM,YAAYE,WAAW,CAAC,EAAE;MACpC;IACF;;IAEA;IACA,IAAIC,KAAK,GACPC,IAAI,CAACC,GAAG,CAACN,KAAK,CAACO,MAAM,CAAC,GAAGF,IAAI,CAACC,GAAG,CAACN,KAAK,CAACQ,MAAM,CAAC,GAC3CR,KAAK,CAACO,MAAM,GACZP,KAAK,CAACQ,MAAM;;IAElB;IACA;IACA,IAAIR,KAAK,CAACS,SAAS,KAAKC,UAAU,CAACC,cAAc,EAAE;MAAA,IAAAC,qBAAA;MACjD;MACA;MACAR,KAAK,KAAAQ,qBAAA,GAAI,IAAI,CAACnF,aAAa,CAACoF,UAAU,CAAC,CAAC,cAAAD,qBAAA,cAAAA,qBAAA,GAAI,CAAC;IAC/C,CAAC,MAAM,IAAIZ,KAAK,CAACS,SAAS,KAAKC,UAAU,CAACI,cAAc,EAAE;MACxD;MACAV,KAAK,IAAI,GAAG,GAAG,CAAC;IAClB;IACAH,MAAM,CAACc,UAAU,IAAIV,IAAI,CAACW,KAAK,CAACZ,KAAK,CAAC;EACxC;;EAEA;EACAvD,kBAAkBA,CAAA,EAAG;IACnB,IAAI,CAACoE,kBAAkB,CAAC,CAAC;EAC3B;;EAEA;EACA/E,mBAAmBA,CAAA,EAAG;IACpB,IAAI,CAACgF,aAAa,GAAG,IAAI;IACzB,IAAI,IAAI,CAACC,eAAe,EAAE,IAAI,CAACjE,2BAA2B,CAAC,CAAC;IAC5D,IAAI,CAAClB,iBAAiB,CAACV,EAAE,CAAC,YAAY,EAAE,IAAI,CAACc,qBAAqB,CAAC;IACnE,IAAI,CAACW,iBAAiB,CAACzB,EAAE,CAAC,YAAY,EAAE,IAAI,CAACgB,yBAAyB,CAAC;EACzE;;EAEA;EACAH,kBAAkBA,CAAA,EAAG;IAAA,IAAAiF,SAAA;IACnB,IAAI,CAACF,aAAa,GAAG,KAAK;IAC1BG,MAAM,CAACC,oBAAoB,EAAAF,SAAA,GAAC,IAAI,CAACG,GAAG,cAAAH,SAAA,cAAAA,SAAA,GAAI,CAAC,CAAC,CAAC;IAC3C,IAAI,CAACG,GAAG,GAAG,IAAI;IACf,IAAI,CAACvF,iBAAiB,CAACwF,GAAG,CAAC,YAAY,EAAE,IAAI,CAACpF,qBAAqB,CAAC;IACpE,IAAI,CAACJ,iBAAiB,CAACwF,GAAG,CAAC,YAAY,EAAE,IAAI,CAACnF,qBAAqB,CAAC;IACpE,IAAI,CAACU,iBAAiB,CAACyE,GAAG,CAAC,YAAY,EAAE,IAAI,CAAClF,yBAAyB,CAAC;IACxE,IAAI,CAACS,iBAAiB,CAACyE,GAAG,CAAC,YAAY,EAAE,IAAI,CAACjF,yBAAyB,CAAC;EAC1E;;EAEA;EACA;EACA;EACAH,qBAAqBA,CAAA,EAAG;IAAA,IAAAqF,qBAAA;IACtB,IAAI,CAACzF,iBAAiB,CAACV,EAAE,CAAC,YAAY,EAAE,IAAI,CAACe,qBAAqB,CAAC;IACnE,IAAI,CAACG,mBAAmB,CACtB,IAAI,CAACkF,YAAY,GAAAD,qBAAA,GACjB,IAAI,CAAChG,aAAa,CAACsF,UAAU,CAAC,CAAC,cAAAU,qBAAA,cAAAA,qBAAA,GAAI,CACrC,CAAC;EACH;EAEAnF,yBAAyBA,CAAA,EAAG;IAAA,IAAAqF,sBAAA;IAC1B,IAAI,CAAC5E,iBAAiB,CAACzB,EAAE,CAAC,YAAY,EAAE,IAAI,CAACiB,yBAAyB,CAAC;IACvE,IAAI,CAACC,mBAAmB,CACtB,IAAI,CAACoF,WAAW,GAAAD,sBAAA,GAChB,IAAI,CAAClG,aAAa,CAACsF,UAAU,CAAC,CAAC,cAAAY,sBAAA,cAAAA,sBAAA,GAAI,CACrC,CAAC;EACH;EAEAtF,qBAAqBA,CAAA,EAAG;IAAA,IAAAwF,UAAA;IACtBR,MAAM,CAACC,oBAAoB,EAAAO,UAAA,GAAC,IAAI,CAACN,GAAG,cAAAM,UAAA,cAAAA,UAAA,GAAI,CAAC,CAAC,CAAC;IAC3C,IAAI,CAACN,GAAG,GAAG,IAAI;IACf,IAAI,CAACvF,iBAAiB,CAACwF,GAAG,CAAC,YAAY,EAAE,IAAI,CAACnF,qBAAqB,CAAC;EACtE;EAEAE,yBAAyBA,CAAA,EAAG;IAAA,IAAAuF,UAAA;IAC1BT,MAAM,CAACC,oBAAoB,EAAAQ,UAAA,GAAC,IAAI,CAACP,GAAG,cAAAO,UAAA,cAAAA,UAAA,GAAI,CAAC,CAAC,CAAC;IAC3C,IAAI,CAACP,GAAG,GAAG,IAAI;IACf,IAAI,CAACxE,iBAAiB,CAACyE,GAAG,CAAC,YAAY,EAAE,IAAI,CAACjF,yBAAyB,CAAC;EAC1E;;EAEA;EACA;EACAE,0BAA0BA,CAAA,EAAG;IAC3B,IAAIsF,mBAAmB;IACvB,KAAK,IAAItE,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,IAAI,CAACC,IAAI,CAACC,MAAM,EAAEF,CAAC,IAAI,CAAC,EAAE;MAAA,IAAAuE,qBAAA,EAAAC,sBAAA,EAAAC,sBAAA,EAAAC,sBAAA,EAAAC,sBAAA;MAC5C,IACE,EAAAJ,qBAAA,IAAAC,sBAAA,GAAC,IAAI,CAACvE,IAAI,CAACD,CAAC,CAAC,CAACrC,OAAO,CAACyD,GAAG,CAAC,CAAC,CAAC,cAAAoD,sBAAA,uBAA3BA,sBAAA,CAA6BI,UAAU,cAAAL,qBAAA,cAAAA,qBAAA,GAAI,CAAC,IAC7C,EAAAE,sBAAA,IAAAC,sBAAA,GAAC,IAAI,CAAC1G,aAAa,CAACoD,GAAG,CAAC,CAAC,CAAC,cAAAsD,sBAAA,uBAAzBA,sBAAA,CAA2BG,WAAW,cAAAJ,sBAAA,cAAAA,sBAAA,GAAI,CAAC,MAAAE,sBAAA,GACzC,IAAI,CAAC3G,aAAa,CAACsF,UAAU,CAAC,CAAC,cAAAqB,sBAAA,cAAAA,sBAAA,GAAI,CAAC,CAAC,EACxC;QACAL,mBAAmB,GAAG,IAAI,CAACrE,IAAI,CAACD,CAAC,CAAC,CAACrC,OAAO,CAACyD,GAAG,CAAC,CAAC,CAAC;QACjD;MACF;IACF;IAEA,IAAIkD,mBAAmB,EAAE;MACvBA,mBAAmB,CAACjD,cAAc,CAAC;QACjCyD,QAAQ,EAAE,QAAQ;QAClBvD,MAAM,EAAE;MACV,CAAC,CAAC;MACF,IAAI,CAACrC,4BAA4B,CAAC,IAAI,CAAC+E,YAAY,CAAC;IACtD,CAAC,MAAM;MACL,IAAMjG,aAAa,GAAG,IAAI,CAACA,aAAa,CAACoD,GAAG,CAAC,CAAC,CAAC;MAC/C,IAAIpD,aAAa,EAAE;QAAA,IAAA+G,sBAAA,EAAAC,sBAAA;QACjBhH,aAAa,CAACsF,UAAU,IAAAyB,sBAAA,IAAAC,sBAAA,GAAG,IAAI,CAAChH,aAAa,CAACoD,GAAG,CAAC,CAAC,CAAC,cAAA4D,sBAAA,uBAAzBA,sBAAA,CAA2BC,WAAW,cAAAF,sBAAA,cAAAA,sBAAA,GAAI,CAAC;MACxE;IACF;EACF;;EAEA;EACA;EACA9F,8BAA8BA,CAAA,EAAG;IAC/B,IAAIiG,kBAAkB;IACtB,KAAK,IAAIlF,CAAC,GAAG,IAAI,CAACC,IAAI,CAACC,MAAM,GAAG,CAAC,EAAEF,CAAC,IAAI,CAAC,EAAEA,CAAC,IAAI,CAAC,EAAE;MAAA,IAAAmF,sBAAA,EAAAC,sBAAA,EAAAC,sBAAA;MACjD,IACE,EAAAF,sBAAA,IAAAC,sBAAA,GAAC,IAAI,CAACnF,IAAI,CAACD,CAAC,CAAC,CAACrC,OAAO,CAACyD,GAAG,CAAC,CAAC,CAAC,cAAAgE,sBAAA,uBAA3BA,sBAAA,CAA6BR,UAAU,cAAAO,sBAAA,cAAAA,sBAAA,GAAI,CAAC,MAAAE,sBAAA,GAC5C,IAAI,CAACrH,aAAa,CAACsF,UAAU,CAAC,CAAC,cAAA+B,sBAAA,cAAAA,sBAAA,GAAI,CAAC,CAAC,EACtC;QACAH,kBAAkB,GAAG,IAAI,CAACjF,IAAI,CAACD,CAAC,CAAC,CAACrC,OAAO,CAACyD,GAAG,CAAC,CAAC,CAAC;QAChD;MACF;IACF;IACA,IAAI8D,kBAAkB,EAAE;MACtBA,kBAAkB,CAAC7D,cAAc,CAAC;QAChCyD,QAAQ,EAAE,QAAQ;QAClBvD,MAAM,EAAE;MACV,CAAC,CAAC;MACF,IAAI,CAACrC,4BAA4B,CAAC,IAAI,CAACiF,WAAW,CAAC;IACrD,CAAC,MAAM;MACL,IAAMnG,aAAa,GAAG,IAAI,CAACA,aAAa,CAACoD,GAAG,CAAC,CAAC,CAAC;MAC/C,IAAIpD,aAAa,EAAE;QACjBA,aAAa,CAACsF,UAAU,GAAG,CAAC;MAC9B;IACF;EACF;;EAEA;EACA;EACApE,4BAA4BA,CAACoG,SAA2B,EAAE;IACxD;IACA,IAAI,CAACC,SAAS,GAAG3B,MAAM,CAAC4B,UAAU,CAAC,MAAM;MAAA,IAAAC,sBAAA;MACvC,IAAI,CAAC1G,mBAAmB,CACtBuG,SAAS,GAAAG,sBAAA,GACT,IAAI,CAACzH,aAAa,CAACsF,UAAU,CAAC,CAAC,cAAAmC,sBAAA,cAAAA,sBAAA,GAAI,CAAC,EACpC,GACF,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,IAAI,CAACC,aAAa,CAAC;IACtB9B,MAAM,CAAC3B,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC9C,0BAA0B,CAAC;EACrE;;EAEA;EACAA,0BAA0BA,CAAA,EAAG;IAAA,IAAAwG,eAAA,EAAAC,UAAA;IAC3BC,YAAY,EAAAF,eAAA,GAAC,IAAI,CAACJ,SAAS,cAAAI,eAAA,cAAAA,eAAA,GAAI,CAAC,CAAC,CAAC;IAClC,IAAI,CAACJ,SAAS,GAAG,IAAI;IACrB1B,oBAAoB,EAAA+B,UAAA,GAAC,IAAI,CAAC9B,GAAG,cAAA8B,UAAA,cAAAA,UAAA,GAAI,CAAC,CAAC,CAAC;IACpC,IAAI,CAAC9B,GAAG,GAAG,IAAI;IACfF,MAAM,CAACtB,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAACnD,0BAA0B,CAAC;EACxE;;EAEA;EACAqE,kBAAkBA,CAAA,EAAG;IAAA,IAAAsC,sBAAA,EAAAC,sBAAA,EAAAC,sBAAA;IACnB,IAAI,IAAI,CAAChI,aAAa,CAACsF,UAAU,CAAC,CAAC,KAAK,CAAC,EAAE;MACzC,IAAI,CAAChE,iBAAiB,CAAC2G,KAAK,CAAC,CAAC,CAACC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC;IACvD,CAAC,MAAM,IACL,EAAAJ,sBAAA,GAAC,IAAI,CAAC9H,aAAa,CAACsF,UAAU,CAAC,CAAC,cAAAwC,sBAAA,cAAAA,sBAAA,GAAI,CAAC,MAAAC,sBAAA,GAClC,IAAI,CAAC/H,aAAa,CAACoF,UAAU,CAAC,CAAC,cAAA2C,sBAAA,cAAAA,sBAAA,GAAI,CAAC,CAAC,OAAAC,sBAAA,GACxC,IAAI,CAAChI,aAAa,CAACoD,GAAG,CAAC,CAAC,CAAC,cAAA4E,sBAAA,uBAAzBA,sBAAA,CAA2Bf,WAAW,GACtC;MACA,IAAI,CAAC5F,aAAa,CAAC6G,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC;IAC3C,CAAC,MAAM;MACL,IAAI,CAAC7G,aAAa,CAAC6G,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC;MAC1C,IAAI,CAAC5G,iBAAiB,CAAC2G,KAAK,CAAC,CAAC,CAACC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC;IACxD;EACF;;EAEA;EACA;EACA;EACA;EACAnH,mBAAmBA,CACjBuG,SAA2B,EAC3Ba,MAAc,EAGd;IAAA,IAAAC,UAAA;IAAA,IAFArD,MAAM,GAAAsD,SAAA,CAAAnG,MAAA,QAAAmG,SAAA,QAAA/F,SAAA,GAAA+F,SAAA,MAAG,CAAC;IAAA,IACVC,aAAsB,GAAAD,SAAA,CAAAnG,MAAA,OAAAmG,SAAA,MAAA/F,SAAA;IAEtB,IAAMiG,YAAY,GAAG,IAAI,CAACvI,aAAa,CAACoD,GAAG,CAAC,CAAC,CAAC;IAC9C,IAAI,CAACmF,YAAY,EAAE;MACjB;IACF;IAEA,IAAMC,gBAAgB,GAAGD,YAAY,CAACE,qBAAqB,CAAC,CAAC;IAC7D,IAAInB,SAAS,KAAK,IAAI,CAACnB,WAAW,EAAE;MAClC,IAAI,CAACnG,aAAa,CAACsF,UAAU,CAAC6C,MAAM,GAAGpD,MAAM,CAAC;MAC9C,IAAI,IAAI,CAACU,aAAa,EAAE;QACtB;QACA,IAAI,CAACxG,MAAM,CAACyJ,wBAAwB,CAACF,gBAAgB,CAACG,IAAI,GAAG,CAAC,CAAC;MACjE;MACA;MACA,IAAI,IAAI,CAAC3I,aAAa,CAACsF,UAAU,CAAC,CAAC,KAAK,CAAC,EAAE;QACzC,IAAI,CAACE,kBAAkB,CAAC,CAAC;QACzB;MACF;IACF,CAAC,MAAM,IAAI8B,SAAS,KAAK,IAAI,CAACrB,YAAY,EAAE;MAAA,IAAA2C,sBAAA,EAAAC,sBAAA;MAC1C,IAAI,CAAC7I,aAAa,CAACsF,UAAU,CAAC6C,MAAM,GAAGpD,MAAM,CAAC;MAC9C,IAAI,IAAI,CAACU,aAAa,EAAE;QACtB;QACA,IAAI,CAACxG,MAAM,CAACyJ,wBAAwB,CAACF,gBAAgB,CAACM,KAAK,GAAG,CAAC,CAAC;MAClE;MACA;MACA,IACE,EAAAF,sBAAA,GAAC,IAAI,CAAC5I,aAAa,CAACsF,UAAU,CAAC,CAAC,cAAAsD,sBAAA,cAAAA,sBAAA,GAAI,CAAC,MAAAC,sBAAA,GAClC,IAAI,CAAC7I,aAAa,CAACoF,UAAU,CAAC,CAAC,cAAAyD,sBAAA,cAAAA,sBAAA,GAAI,CAAC,CAAC,KACxCN,YAAY,CAACtB,WAAW,EACxB;QACA,IAAI,CAACzB,kBAAkB,CAAC,CAAC;QACzB;MACF;IACF;;IAEA;IACAI,MAAM,CAACC,oBAAoB,EAAAuC,UAAA,GAAC,IAAI,CAACtC,GAAG,cAAAsC,UAAA,cAAAA,UAAA,GAAI,CAAC,CAAC,CAAC;IAC3C,IAAI,CAACtC,GAAG,GAAGF,MAAM,CAACmD,qBAAqB,CAAEC,SAAiB,IAAK;MAAA,IAAAC,sBAAA,EAAAC,sBAAA;MAC7D,IAAIC,SAAS,GAAGb,aAAa,IAAIU,SAAS;MAC1C,IAAII,SAAS,GAAGJ,SAAS,GAAGG,SAAS;MACrC,IAAIE,SAAS,GACX,IAAI,CAACC,WAAW,GAAGF,SAAS,GAC5B,GAAG,GAAG,IAAI,CAACG,YAAY,IAAIH,SAAS,GAAGA,SAAS,CAAC;MACnDC,SAAS,GAAGzE,IAAI,CAAC4E,GAAG,CAClBH,SAAS,GAAAJ,sBAAA,IAAAC,sBAAA,GACT,IAAI,CAAClJ,aAAa,CAACoD,GAAG,CAAC,CAAC,CAAC,cAAA8F,sBAAA,uBAAzBA,sBAAA,CAA2BjC,WAAW,cAAAgC,sBAAA,cAAAA,sBAAA,GAAIQ,QAC5C,CAAC;MACD,IAAI,CAAC1I,mBAAmB,CAACuG,SAAS,EAAEa,MAAM,EAAEkB,SAAS,EAAEF,SAAS,CAAC;IACnE,CAAC,CAAC;EACJ;;EAEA;AACF;AACA;AACA;AACA;EACEO,aAAaA,CAACC,UAAmB,EAAE;IACjC,IAAI,IAAI,CAACC,WAAW,IAAI,IAAI,CAACC,WAAW,CAAC,CAAC,EAAE;MAC1C,IAAI,CAACD,WAAW,CAACjK,OAAO,CAACgK,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;MACxD,OAAO,IAAI;IACb;IAEA,OAAO,KAAK;EACd;;EAEA;AACF;AACA;EACEjH,SAASA,CAAA,EAAG;IACV,IAAI,CAACoH,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC;IAE1B,KAAK,IAAI9H,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,IAAI,CAACC,IAAI,CAACC,MAAM,EAAEF,CAAC,EAAE,EAAE;MACzC,IAAI,CAACC,IAAI,CAACD,CAAC,CAAC,CAACU,SAAS,CAAC,CAAC;IAC1B;IAEA,IAAI,CAAC0B,oBAAoB,CAAC,CAAC;IAC3B,IAAI,CAAC1D,kBAAkB,CAAC,CAAC;IAEzBhC,CAAC,CAACqL,QAAQ,CAAC,CAAChE,GAAG,CAAC,SAAS,EAAE,IAAI,CAACtE,2BAA2B,CAAC;IAC5D,IAAI,CAACrB,iBAAiB,CAAC2F,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC1F,kBAAkB,CAAC;IAC5D,IAAI,CAACD,iBAAiB,CAAC2F,GAAG,CAAC,SAAS,EAAE,IAAI,CAACzF,oBAAoB,CAAC;IAEhE,IAAI,CAACX,OAAO,CAACqK,MAAM,CAAC,CAAC;EACvB;;EAEA;AACF;AACA;AACA;AACA;EACEC,iBAAiBA,CAEfC,IAAO,EAA4B;IACnC,IAAIA,IAAI,IAAI,IAAI,CAACjL,MAAM,CAAC0E,OAAO,EAAE,OAAO,IAAI,CAAC1E,MAAM,CAAC0E,OAAO,CAACuG,IAAI,CAAC;EACnE;;EAEA;AACF;AACA;EACEtI,eAAeA,CAAA,EAAG;IAChB,IAAIuI,UAAU,EACZC,MAAM,EACNC,KAAK,EACLC,QAAQ,EACRC,gBAAgB,EAChBC,oBAAoB,EACpBC,wBAAwB;;IAE1B;AACJ;AACA;;IAEIF,gBAAgB,GAAG,IAAI,CAACvL,aAAa,CAACQ,MAAM,CAACkL,MAAM,CAACC,WAAW;IAC/DH,oBAAoB,GAAG,IAAI,CAACxL,aAAa,CAACQ,MAAM,CAACkL,MAAM,CAACE,YAAY;IACpEH,wBAAwB,GACtB,IAAI,CAACzL,aAAa,CAACQ,MAAM,CAACkL,MAAM,CAACG,gBAAgB;IAEnD,IAAI,CAACC,iBAAiB,GAAG,IAAIlM,YAAY,CACvC,IAAI,EACJ2L,gBAAgB,EAChB,gBAAgB,EAChB,IAAI,CAAC/I,2BACP,CAAC;IACD,IAAI,CAACsJ,iBAAiB,CAACnL,OAAO,CAACQ,IAAI,CAAC,CAAC;IAErC,IAAI,CAACI,iBAAiB,CAACwK,OAAO,CAAC,IAAI,CAAC1J,aAAa,CAAC;IAClD,IAAI,CAACA,aAAa,CAAClB,IAAI,CAAC,CAAC;;IAEzB;AACJ;AACA;IACI,IAAI,IAAI,CAAC8J,iBAAiB,CAAC,QAAQ,CAAC,EAAE;MACpCG,MAAM,GAAG,IAAI,CAACY,cAAc,CAACjL,IAAI,CAAC,IAAI,CAAC;MACvCsK,KAAK,GAAG,IAAI,CAACJ,iBAAiB,CAAC,QAAQ,CAAC;MACxC,IAAIrL,YAAY,CAAC,IAAI,EAAEyL,KAAK,EAAE,WAAW,EAAED,MAAM,CAAC;IACpD;;IAEA;AACJ;AACA;IACI,IAAI,IAAI,CAACH,iBAAiB,CAAC,UAAU,CAAC,EAAE;MACtCK,QAAQ,GAAG,IAAI,CAACrL,MAAM,CAACgM,cAAc,CAAClL,IAAI,CAAC,IAAI,CAACd,MAAM,CAAC;MACvD,IAAMiM,aAAa,GAAG,IAAI,CAACjB,iBAAiB,CAAC,UAAU,CAAC;MACxD,IAAMkB,aAAa,GAAG,IAAI,CAAClB,iBAAiB,CAAC,UAAU,CAAC;MACxD,IAAMmB,cAAc,GAAG,IAAIxM,YAAY,CACrC,IAAI,EACJsM,aAAa,EACb,aAAa,EACbZ,QACF,CAAC;MAED,IAAI,CAACrL,MAAM,CAACY,EAAE,CAAC,WAAW,EAAE,YAAY;QACtCuL,cAAc,CAACzL,OAAO,CAAC0L,IAAI,CAAC,OAAO,EAAEF,aAAa,aAAbA,aAAa,cAAbA,aAAa,GAAI,EAAE,CAAC;MAC3D,CAAC,CAAC;MAEF,IAAI,CAAClM,MAAM,CAACY,EAAE,CAAC,WAAW,EAAE,YAAY;QACtCuL,cAAc,CAACzL,OAAO,CAAC0L,IAAI,CAAC,OAAO,EAAEH,aAAa,aAAbA,aAAa,cAAbA,aAAa,GAAI,EAAE,CAAC;MAC3D,CAAC,CAAC;IACJ;;IAEA;AACJ;AACA;IACI,IAAI,IAAI,CAACrB,WAAW,CAAC,CAAC,EAAE;MACtBM,UAAU,GAAG,IAAI,CAAClL,MAAM,CAAC+K,MAAM,CAACjK,IAAI,CAAC,IAAI,CAACd,MAAM,CAAC;MACjDoL,KAAK,GAAG,IAAI,CAACJ,iBAAiB,CAAC,OAAO,CAAC;MACvC,IAAI,CAACL,WAAW,GAAG,IAAIhL,YAAY,CAAC,IAAI,EAAEyL,KAAK,EAAE,UAAU,EAAEF,UAAU,CAAC;IAC1E;EACF;;EAEA;AACF;AACA;AACA;AACA;EACE3I,2BAA2BA,CAAA,EAAG;IAC5B,IAAI,IAAI,CAACkE,eAAe,EAAE;MACxB,IAAI,CAACjE,2BAA2B,CAAC,CAAC;MAClC;IACF;;IAEA;IACA;IACA,IAAI,CAAC6J,eAAe,GAAG,IAAI,CAACtL,aAAa,CACtCuL,KAAK,CAAC,IAAI,CAAC,CACXC,QAAQ,CAAC,IAAI,CAACtL,oBAAoB,CAAC,CACnCuL,QAAQ,CAAC,CAAC,CACVC,WAAW,CAAC,WAAW,CAAC;;IAE3B;IACA;IACAhN,CAAC,CAACqL,QAAQ,CAAC4B,IAAI,CAAC,CAACtJ,MAAM,CAAC,IAAI,CAACnC,oBAAoB,CAAC;;IAElD;IACA,IAAI,CAACA,oBAAoB,CAAC0D,IAAI,CAAC,CAAC;IAChC,IAAI,CAAC8B,eAAe,GAAG,IAAI;;IAE3B;IACA;IACA;IACA,IAAI,CAAC/F,OAAO,CAACC,QAAQ,CAAC,kBAAkB,CAAC;;IAEzC;IACA,IAAI,CAACQ,iBAAiB,CAACwL,GAAG,CAAC,EAAE,CAAC,CAACC,KAAK,CAAC,CAAC;IACtC,IAAI,CAACC,gBAAgB,GAAG,CAAC;IACzB,IAAI,CAACR,eAAe,CACjBS,EAAE,CAAC,IAAI,CAACD,gBAAgB,CAAC,CACzBlM,QAAQ,CAAC,oBAAoB,CAAC;IAEjClB,CAAC,CAACqL,QAAQ,CAAC,CAAClK,EAAE,CAAC,WAAW,EAAE,IAAI,CAAC4B,2BAA2B,CAAC;IAC7D,IAAI,CAACuK,6BAA6B,CAAC,CAAC;EACtC;;EAEA;EACA1L,oBAAoBA,CAAC2L,CAAwB,EAAE;IAC7C,IAAIA,CAAC,CAACC,GAAG,KAAK,QAAQ,EAAE;MACtB,IAAI,CAACzK,2BAA2B,CAAC,CAAC;MAClC;IACF;;IAEA;IACA,IAAI,IAAI,CAACqK,gBAAgB,KAAK,CAAC,CAAC,EAAE;IAElC,IAAIG,CAAC,CAACC,GAAG,KAAK,OAAO,IAAID,CAAC,CAACC,GAAG,KAAK,GAAG,EAAE;MACtC;MACA,IAAI,CAACzK,2BAA2B,CAAC,CAAC;MAClC,IAAI,CAACQ,IAAI,CAAC,IAAI,CAAC6J,gBAAgB,CAAC,CAACK,WAAW,CAAC,CAAC;MAC9C;IACF;IAEA,SAASC,oBAAoBA,CAC3BC,UAAkB,EAClB1H,KAAa,EACb2G,eAA2C,EAC3C;MACA,IAAIA,eAAe,IAAI,IAAI,IAAIA,eAAe,CAACpJ,MAAM,GAAG,CAAC,EAAE;QACzD,OAAO,CAAC,CAAC;MACX;MACA,IAAIF,CAAC,GACH,CAACqK,UAAU,GAAG1H,KAAK,GAAG2G,eAAe,CAACpJ,MAAM,IAAIoJ,eAAe,CAACpJ,MAAM;MACxE,OAAOF,CAAC,KAAKqK,UAAU,EAAE;QACvB,IAAIf,eAAe,CAACS,EAAE,CAAC/J,CAAC,CAAC,CAACsK,GAAG,CAAC,SAAS,CAAC,KAAK,MAAM,EAAE;UACnD,OAAOtK,CAAC;QACV;QACAA,CAAC,GAAG,CAACA,CAAC,GAAG2C,KAAK,GAAG2G,eAAe,CAACpJ,MAAM,IAAIoJ,eAAe,CAACpJ,MAAM;MACnE;MAEA,OAAOmK,UAAU;IACnB;;IAEA;IACA,IAAIJ,CAAC,CAACC,GAAG,KAAK,WAAW,IAAKD,CAAC,CAACC,GAAG,KAAK,KAAK,IAAID,CAAC,CAACM,QAAQ,KAAK,KAAM,EAAE;MAAA,IAAAC,qBAAA,EAAAC,sBAAA;MACtER,CAAC,CAACS,cAAc,CAAC,CAAC;MAClB,CAAAF,qBAAA,OAAI,CAAClB,eAAe,cAAAkB,qBAAA,uBAApBA,qBAAA,CACIT,EAAE,CAAC,IAAI,CAACD,gBAAgB,CAAC,CAC1BJ,WAAW,CAAC,oBAAoB,CAAC;MACpC,IAAI,CAACI,gBAAgB,GAAGM,oBAAoB,CAC1C,IAAI,CAACN,gBAAgB,EACrB,CAAC,EACD,IAAI,CAACR,eACP,CAAC;MACD,CAAAmB,sBAAA,OAAI,CAACnB,eAAe,cAAAmB,sBAAA,uBAApBA,sBAAA,CACIV,EAAE,CAAC,IAAI,CAACD,gBAAgB,CAAC,CAC1BlM,QAAQ,CAAC,oBAAoB,CAAC;IACnC,CAAC,MAAM,IAAIqM,CAAC,CAACC,GAAG,KAAK,SAAS,IAAID,CAAC,CAACC,GAAG,KAAK,KAAK,EAAE;MAAA,IAAAS,sBAAA,EAAAC,sBAAA;MACjDX,CAAC,CAACS,cAAc,CAAC,CAAC;MAClB,CAAAC,sBAAA,OAAI,CAACrB,eAAe,cAAAqB,sBAAA,uBAApBA,sBAAA,CACIZ,EAAE,CAAC,IAAI,CAACD,gBAAgB,CAAC,CAC1BJ,WAAW,CAAC,oBAAoB,CAAC;MACpC,IAAI,CAACI,gBAAgB,GAAGM,oBAAoB,CAC1C,IAAI,CAACN,gBAAgB,EACrB,CAAC,CAAC,EACF,IAAI,CAACR,eACP,CAAC;MACD,CAAAsB,sBAAA,OAAI,CAACtB,eAAe,cAAAsB,sBAAA,uBAApBA,sBAAA,CACIb,EAAE,CAAC,IAAI,CAACD,gBAAgB,CAAC,CAC1BlM,QAAQ,CAAC,oBAAoB,CAAC;IACnC;EACF;;EAEA;EACAS,kBAAkBA,CAACkE,KAA4B,EAAE;IAC/C,IAAI,IAAI,CAAC+G,eAAe,IAAI,IAAI,EAAE;MAChC;IACF;IACA;IACA,IAAI,CAACA,eAAe,CACjBS,EAAE,CAAC,IAAI,CAACD,gBAAgB,CAAC,CACzBJ,WAAW,CAAC,oBAAoB,CAAC;IACpC,IAAI,CAACI,gBAAgB,GAAG,CAAC,CAAC;IAE1B,KAAK,IAAI9J,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,IAAI,CAACsJ,eAAe,CAACpJ,MAAM,EAAEF,CAAC,EAAE,EAAE;MAAA,IAAA6K,qBAAA,EAAAC,sBAAA;MACpD,IACE,EAAAD,qBAAA,IAAAC,sBAAA,GAAC,IAAI,CAAC7K,IAAI,CAACD,CAAC,CAAC,CAACF,WAAW,CAACtC,MAAM,CAACuN,KAAK,cAAAD,sBAAA,uBAArCA,sBAAA,CACGE,WAAW,CAAC,CAAC,CACdC,OAAO,CAAC1I,KAAK,CAACC,MAAM,CAAC0I,KAAK,CAACF,WAAW,CAAC,CAAC,CAAC,cAAAH,qBAAA,cAAAA,qBAAA,GAAI,CAAC,CAAC,MAAM,CAAC,CAAC,EAC1D;QACA,IAAI,CAACvB,eAAe,CAACS,EAAE,CAAC/J,CAAC,CAAC,CAACsK,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC;QAC7C,IAAI,IAAI,CAACR,gBAAgB,KAAK,CAAC,CAAC,EAAE,IAAI,CAACA,gBAAgB,GAAG9J,CAAC;MAC7D,CAAC,MAAM;QACL,IAAI,CAACsJ,eAAe,CAACS,EAAE,CAAC/J,CAAC,CAAC,CAACsK,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC;MACnD;IACF;IAEA,IAAI,IAAI,CAACR,gBAAgB,KAAK,CAAC,CAAC,EAAE;MAChC,IAAI,CAACR,eAAe,CACjBS,EAAE,CAAC,IAAI,CAACD,gBAAgB,CAAC,CACzBlM,QAAQ,CAAC,oBAAoB,CAAC;IACnC;EACF;;EAEA;AACF;AACA;AACA;AACA;EACE6B,2BAA2BA,CAAC8C,KAA0B,EAAE;IAAA,IAAA4I,qBAAA,EAAAC,qBAAA;IACtD;IACA,IAAI,CAAC,IAAI,CAAC1H,eAAe,EAAE;IAE3B,IAAInB,KAAK,KAAA4I,qBAAA,GAAI,IAAI,CAACjN,oBAAoB,CAACkD,GAAG,CAAC,CAAC,CAAC,cAAA+J,qBAAA,eAAhCA,qBAAA,CAAkCE,QAAQ,CAAC9I,KAAK,CAACC,MAAM,CAAC,EAAE;MACrE;MACA;IACF,CAAC,MAAM,IACLD,KAAK,IACL,EAAA6I,qBAAA,OAAI,CAACtC,iBAAiB,cAAAsC,qBAAA,uBAAtBA,qBAAA,CAAwBzN,OAAO,CAACyD,GAAG,CAAC,CAAC,CAAC,MAAKmB,KAAK,CAACC,MAAM,EACvD;MACA;MACA;IACF;IAEA,IAAI,CAAC7E,OAAO,CAAC+L,WAAW,CAAC,kBAAkB,CAAC;IAC5C,IAAI,CAACxL,oBAAoB,CAACC,IAAI,CAAC,CAAC;IAChC,IAAI,CAACuF,eAAe,GAAG,KAAK;;IAE5B;IACA,IAAI,CAAC/F,OAAO,CAAC0C,MAAM,CAAC,IAAI,CAACnC,oBAAoB,CAAC;;IAE9C;IACA,IAAI,CAACA,oBAAoB,CAACD,IAAI,CAAC,UAAU,CAAC,CAAC+J,MAAM,CAAC,CAAC;IAEnDtL,CAAC,CAACqL,QAAQ,CAAC,CAAChE,GAAG,CAAC,WAAW,EAAE,IAAI,CAACtE,2BAA2B,CAAC;EAChE;;EAEA;AACF;AACA;AACA;AACA;EACEuK,6BAA6BA,CAAA,EAAG;IAAA,IAAAsB,sBAAA,EAAAC,sBAAA,EAAAC,SAAA,EAAAC,QAAA;IAC9B,IAAI,CAAC,IAAI,CAAC/H,eAAe,EAAE;IAC3B,IAAI,CAAC,IAAI,CAAC4F,eAAe,IAAI,IAAI,CAACA,eAAe,CAACpJ,MAAM,IAAI,CAAC,EAAE;IAE/D,IAAMwL,YAAY,IAAAJ,sBAAA,IAAAC,sBAAA,GAAG,IAAI,CAACrN,oBAAoB,CAACkD,GAAG,CAAC,CAAC,CAAC,cAAAmK,sBAAA,uBAAhCA,sBAAA,CAAkCG,YAAY,cAAAJ,sBAAA,cAAAA,sBAAA,GAAI,CAAC;IACxE,IAAII,YAAY,KAAK,CAAC,EAAE,OAAO,CAAC;;IAEhC,IAAMC,SAAS,GAAG,IAAI,CAACzN,oBAAoB,CAAC,CAAC,CAAC,CAACuI,qBAAqB,CAAC,CAAC;IACtE,IAAMmF,YAAY,IAAAJ,SAAA,GAAG9O,CAAC,CAACkH,MAAM,CAAC,CAACiI,MAAM,CAAC,CAAC,cAAAL,SAAA,cAAAA,SAAA,GAAI,CAAC;IAC5C,IAAMM,WAAW,IAAAL,QAAA,GAAG/O,CAAC,CAACkH,MAAM,CAAC,CAACmI,KAAK,CAAC,CAAC,cAAAN,QAAA,cAAAA,QAAA,GAAI,CAAC;;IAE1C;IACA,IAAI,CAAC,IAAI,CAAC3C,iBAAiB,EAAE;IAC7B,IAAMkD,WAAW,GACf,IAAI,CAAClD,iBAAiB,CAACnL,OAAO,CAAC,CAAC,CAAC,CAAC8I,qBAAqB,CAAC,CAAC;;IAE3D;IACA;IACA,IAAMwF,aAAa,GAAGP,YAAY,GAAGE,YAAY,GAAGI,WAAW,CAACE,MAAM;IACtE,IAAMC,UAAU,GACd,CAACF,aAAa,IAAID,WAAW,CAACE,MAAM,GAAGN,YAAY,GAAG,GAAG,CAAC,CAAC;;IAE7D;IACA;IACA,IAAMjF,IAAI,GAAG/D,IAAI,CAAC4E,GAAG,CACnBwE,WAAW,CAACrF,IAAI,IAAIwF,UAAU,GAAGH,WAAW,CAACD,KAAK,GAAG,CAAC,CAAC,EACvDD,WAAW,GAAGH,SAAS,CAACI,KAAK,GAAG,IAAI,CAACK,OACvC,CAAC;IACD;IACA,IAAMC,GAAG,GAAGF,UAAU,GAClBvJ,IAAI,CAAC0J,GAAG,CAACN,WAAW,CAACK,GAAG,GAAGX,YAAY,EAAE,IAAI,CAACU,OAAO,CAAC,GACtDJ,WAAW,CAACE,MAAM;;IAEtB;IACA,IAAMK,SAAS,GAAGX,YAAY,GAAGS,GAAG,GAAG,IAAI,CAACD,OAAO;IAEnD,IAAI,CAAClO,oBAAoB,CAACoM,GAAG,CAAC;MAC5B,YAAY,EAAEiC,SAAS;MACvBF,GAAG;MACH1F;IACF,CAAC,CAAC;EACJ;;EAEA;AACF;AACA;AACA;AACA;AACA;EACEkB,WAAWA,CAAA,EAAG;IACZ,OAAO2E,OAAO,CACZ,IAAI,CAACvP,MAAM,CAACO,MAAM,CAACmK,UAAU,IAC3B,IAAI,CAAC3K,aAAa,CAACQ,MAAM,CAACC,QAAQ,CAACgP,aACvC,CAAC;EACH;EAEAzD,cAAcA,CAAA,EAAG;IACf,IAAI,IAAI,CAAChM,aAAa,CAACQ,MAAM,CAACC,QAAQ,CAACiP,gBAAgB,KAAK,IAAI,EAAE;MAChE,IAAI,CAACzP,MAAM,CAACmL,MAAM,CAAC,CAAC;IACtB,CAAC,MAAM;MAAA,IAAAuE,qBAAA;MACL,CAAAA,qBAAA,OAAI,CAACzL,iBAAiB,cAAAyL,qBAAA,uBAAtBA,qBAAA,CAAwBvE,MAAM,CAAC,CAAC;IAClC;EACF;;EAEA;AACF;AACA;AACA;AACA;EACEtK,cAAcA,CAACyE,KAAyB,EAAE;IACxC,IAAIA,KAAK,CAACC,MAAM,KAAK,IAAI,CAAC7E,OAAO,CAAC,CAAC,CAAC,EAAE;MACpC,IAAI,CAACV,MAAM,CAAC2P,MAAM,CAAC,CAAC;IACtB;EACF;;EAEA;AACF;AACA;EACEpO,eAAeA,CAAA,EAAG;IAChB,IAAI,IAAI,CAACyB,IAAI,CAACC,MAAM,KAAK,CAAC,EAAE;MAC1B;IACF;IAEA,IAAMlC,aAAa,GAAG,IAAI,CAACA,aAAa,CAACoD,GAAG,CAAC,CAAC,CAAC;IAE/C,IAAI,IAAI,CAACsC,eAAe,EAAE;MACxB;MACA,IAAI,CAACsG,6BAA6B,CAAC,CAAC;IACtC;IAEA,IAAI,CAAChM,aAAa,EAAE;MAClB;IACF;IAEA,IACE,CAAC,IAAI,CAAC6O,aAAa,IACnB7O,aAAa,CAACiH,WAAW,GAAGjH,aAAa,CAAC8O,WAAW,EACrD;MAAA,IAAAC,sBAAA;MACA,CAAAA,sBAAA,OAAI,CAACjE,iBAAiB,cAAAiE,sBAAA,uBAAtBA,sBAAA,CAAwBpP,OAAO,CAACiE,IAAI,CAAC,CAAC;MACtC,IAAI,CAACvC,aAAa,CAACuC,IAAI,CAAC,CAAC;MACzB,IAAI,CAACtC,iBAAiB,CAACsC,IAAI,CAAC,CAAC;MAC7B,IAAI,CAACiL,aAAa,GAAG,IAAI;IAC3B,CAAC,MAAM,IACL,IAAI,CAACA,aAAa,IAClB7O,aAAa,CAACiH,WAAW,IAAIjH,aAAa,CAAC8O,WAAW,EACtD;MAAA,IAAAE,sBAAA;MACA,CAAAA,sBAAA,OAAI,CAAClE,iBAAiB,cAAAkE,sBAAA,uBAAtBA,sBAAA,CAAwBrP,OAAO,CAACQ,IAAI,CAAC,CAAC;MACtC,IAAI,CAACkB,aAAa,CAAClB,IAAI,CAAC,CAAC;MACzB,IAAI,CAACmB,iBAAiB,CAACnB,IAAI,CAAC,CAAC;MAC7B,IAAI,CAAC0O,aAAa,GAAG,KAAK;IAC5B;IAEA,IAAI,IAAI,CAACA,aAAa,EAAE,IAAI,CAACrJ,kBAAkB,CAAC,CAAC;EACnD;AACF;AAACpG,eAAA,CA53BoBN,MAAM,eACE,CACzB,yBAAyB,EACzB,2BAA2B,EAC3B,+BAA+B,EAC/B,kCAAkC,EAClC,sFAAsF,EACtF,OAAO,EACP,QAAQ,CACT,CAACmQ,IAAI,CAAC,EAAE,CAAC;AAAA7P,eAAA,CATSN,MAAM,6BAWgB,CACvC,0BAA0B,EAC1B,wCAAwC,EACxC,OAAO,CACR,CAACmQ,IAAI,CAAC,EAAE,CAAC;AAAA7P,eAAA,CAfSN,MAAM,yBAiBY,CACnC,oCAAoC,CACrC,CAACmQ,IAAI,CAAC,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"Header.js","names":["$","EventEmitter","HeaderButton","Tab","Header","constructor","layoutManager","parent","_this$layoutManager$c","_this$layoutManager$c2","_defineProperty","_template","_nextButtonTemplate","_previousButtonTemplate","config","settings","selectionEnabled","element","addClass","on","_onHeaderClick","bind","tabsContainer","find","tabDropdownContainer","hide","tabDropdownSearch","_handleFilterInput","_handleFilterKeydown","controlsContainer","_updateTabSizes","_handleItemPickedUp","_handleItemDropped","_handleNextMouseEnter","_handleNextMouseLeave","_handlePreviousMouseEnter","_handlePreviousMouseLeave","_handleScrollRepeat","_handleNextButtonMouseDown","_handlePreviousButtonMouseDown","_handleScrollButtonMouseDown","_handleScrollButtonMouseUp","_handleScrollEvent","tabNextButton","tabPreviousButton","before","_showAdditionalTabsDropdown","_hideAdditionalTabsDropdown","_tabControlOffset","tabControlOffset","_createControls","createTab","contentItem","index","i","tabs","length","tab","push","append","undefined","after","splice","removeTab","_$destroy","Error","setActiveContentItem","_this$tabs$element$ge","_this$tabs$element$ge2","_this$parent$config$a","isActive","setActive","activeContentItem","activeItemIndex","get","scrollIntoView","call","inline","emitBubblingEvent","position","previous","_header","show","_side","_setupHeaderPosition","_attachWheelListener","_this$tabsContainer$g","addEventListener","_handleWheelEvent","passive","_detachWheelListener","_this$tabsContainer$g2","removeEventListener","event","target","currentTarget","HTMLElement","delta","Math","abs","deltaY","deltaX","deltaMode","WheelEvent","DOM_DELTA_PAGE","_this$tabsContainer$i","innerWidth","DOM_DELTA_LINE","scrollLeft","round","_checkScrollArrows","isDraggingTab","isDropdownShown","_this$rAF","window","cancelAnimationFrame","rAF","off","_this$tabsContainer$s","SCROLL_RIGHT","_this$tabsContainer$s2","SCROLL_LEFT","_this$rAF2","_this$rAF3","rightOffscreenChild","_this$tabs$i$element$","_this$tabs$i$element$2","_this$tabsContainer$g3","_this$tabsContainer$g4","_this$tabsContainer$s3","offsetLeft","offsetWidth","behavior","_this$tabsContainer$g5","_this$tabsContainer$g6","scrollWidth","leftOffscreenChild","_this$tabs$i$element$3","_this$tabs$i$element$4","_this$tabsContainer$s4","direction","holdTimer","setTimeout","_this$tabsContainer$s5","CLICK_TIMEOUT","_this$holdTimer","_this$rAF4","clearTimeout","_this$tabsContainer$s6","_this$tabsContainer$i2","_this$tabsContainer$g7","first","prop","startX","_this$rAF5","arguments","prevTimestamp","tabContainer","tabContainerRect","getBoundingClientRect","_highlightHeaderDropZone","left","_this$tabsContainer$s7","_this$tabsContainer$i3","right","requestAnimationFrame","timestamp","_this$tabsContainer$g8","_this$tabsContainer$g9","startTime","deltaTime","newDeltaX","START_SPEED","ACCELERATION","min","Infinity","_$setClosable","isClosable","closeButton","_isClosable","emit","document","remove","_getHeaderSetting","name","closeStack","popout","label","maximise","tabDropdownLabel","tabOverflowNextLabel","tabOverflowPreviousLabel","labels","tabDropdown","tabNextLabel","tabPreviousLabel","tabDropdownButton","prepend","_onPopoutClick","toggleMaximise","maximiseLabel","minimiseLabel","maximiseButton","attr","tabDropdownList","clone","appendTo","children","removeClass","body","val","focus","dropdownKeyIndex","eq","_updateAdditionalTabsDropdown","e","key","_onTabClick","getNextDropdownIndex","startIndex","css","shiftKey","_this$tabDropdownList","_this$tabDropdownList2","preventDefault","_this$tabDropdownList3","_this$tabDropdownList4","_this$tabs$i$contentI","_this$tabs$i$contentI2","title","toLowerCase","indexOf","value","_this$tabDropdownCont","_this$tabDropdownButt","contains","_this$tabDropdownCont2","_this$tabDropdownCont3","_$$height","_$$width","scrollHeight","list_rect","windowHeight","height","windowWidth","width","button_rect","hasSpaceBelow","bottom","shouldFlip","PADDING","top","max","maxHeight","Boolean","showCloseIcon","popoutWholeStack","_this$activeContentIt","select","isOverflowing","clientWidth","_this$tabDropdownButt2","_this$tabDropdownButt3","join"],"sources":["../../src/controls/Header.ts"],"sourcesContent":["import $ from 'jquery';\nimport { StackItemHeaderConfig } from '../config';\nimport type { AbstractContentItem, Stack } from '../items';\nimport type LayoutManager from '../LayoutManager';\nimport { EventEmitter } from '../utils';\nimport HeaderButton from './HeaderButton';\nimport Tab from './Tab';\n\n/**\n * This class represents a header above a Stack ContentItem.\n *\n * @param layoutManager\n * @param parent\n */\nexport default class Header extends EventEmitter {\n private static _template = [\n '<div class=\"lm_header\">',\n '<ul class=\"lm_tabs\"></ul>',\n '<ul class=\"lm_controls\"></ul>',\n '<ul class=\"lm_tabdropdown_list\">',\n '<li class=\"lm_tabdropdown_search\"><input type=\"text\" placeholder=\"Find tab...\"></li>',\n '</ul>',\n '</div>',\n ].join('');\n\n private static _previousButtonTemplate = [\n '<ul class=\"lm_controls\">',\n '<li class=\"lm_tabpreviousbutton\"></li>',\n '</ul>',\n ].join('');\n\n private static _nextButtonTemplate = [\n '<li class=\"lm_tabnextbutton\"></li>',\n ].join('');\n\n layoutManager: LayoutManager;\n element = $(Header._template);\n\n tabsContainer: JQuery<HTMLElement>;\n tabDropdownContainer: JQuery<HTMLElement>;\n tabDropdownSearch: JQuery<HTMLElement>;\n tabDropdownList: JQuery<HTMLElement> | null = null;\n\n controlsContainer: JQuery<HTMLElement>;\n\n parent: Stack;\n\n tabs: Tab[] = [];\n activeContentItem: AbstractContentItem | null = null;\n closeButton: HeaderButton | null = null;\n\n tabDropdownButton: HeaderButton | null = null;\n tabNextButton = $(Header._nextButtonTemplate);\n tabPreviousButton = $(Header._previousButtonTemplate);\n\n // use for scroll repeat\n holdTimer: number | null = null;\n rAF: number | null = null;\n\n // mouse hold timeout to act as hold instead of click\n CLICK_TIMEOUT = 500;\n // mouse hold acceleration\n START_SPEED = 0.01;\n ACCELERATION = 0.0005;\n PADDING = 10 as const;\n SCROLL_LEFT = 'left' as const;\n SCROLL_RIGHT = 'right' as const;\n\n isDraggingTab = false;\n isOverflowing = false;\n isDropdownShown = false;\n dropdownKeyIndex = 0;\n\n private _lastVisibleTabIndex = -1;\n private _tabControlOffset?: number;\n\n constructor(layoutManager: LayoutManager, parent: Stack) {\n super();\n\n this.layoutManager = layoutManager;\n\n if (this.layoutManager.config.settings?.selectionEnabled) {\n this.element.addClass('lm_selectable');\n this.element.on('click', this._onHeaderClick.bind(this));\n }\n\n this.tabsContainer = this.element.find('.lm_tabs');\n\n this.tabDropdownContainer = this.element.find('.lm_tabdropdown_list');\n this.tabDropdownContainer.hide();\n this.tabDropdownSearch = this.element.find('.lm_tabdropdown_search input');\n\n this._handleFilterInput = this._handleFilterInput.bind(this);\n this._handleFilterKeydown = this._handleFilterKeydown.bind(this);\n this.tabDropdownSearch.on('input', this._handleFilterInput);\n this.tabDropdownSearch.on('keydown', this._handleFilterKeydown);\n\n this.controlsContainer = this.element.find('.lm_controls');\n this.parent = parent;\n this.parent.on('resize', this._updateTabSizes, this);\n\n this._handleItemPickedUp = this._handleItemPickedUp.bind(this);\n this._handleItemDropped = this._handleItemDropped.bind(this);\n\n this._handleNextMouseEnter = this._handleNextMouseEnter.bind(this);\n this._handleNextMouseLeave = this._handleNextMouseLeave.bind(this);\n this._handlePreviousMouseEnter = this._handlePreviousMouseEnter.bind(this);\n this._handlePreviousMouseLeave = this._handlePreviousMouseLeave.bind(this);\n this._handleScrollRepeat = this._handleScrollRepeat.bind(this);\n this._handleNextButtonMouseDown =\n this._handleNextButtonMouseDown.bind(this);\n this._handlePreviousButtonMouseDown =\n this._handlePreviousButtonMouseDown.bind(this);\n this._handleScrollButtonMouseDown =\n this._handleScrollButtonMouseDown.bind(this);\n this._handleScrollButtonMouseUp =\n this._handleScrollButtonMouseUp.bind(this);\n this._handleScrollEvent = this._handleScrollEvent.bind(this);\n\n this.tabNextButton.on('mousedown', this._handleNextButtonMouseDown);\n this.tabPreviousButton.on('mousedown', this._handlePreviousButtonMouseDown);\n this.tabsContainer.on('scroll', this._handleScrollEvent);\n\n this.layoutManager.on('itemPickedUp', this._handleItemPickedUp);\n this.layoutManager.on('itemDropped', this._handleItemDropped);\n\n // append previous button template\n this.tabsContainer.before(this.tabPreviousButton);\n // change reference to just the li, not the wrapping ul\n this.tabPreviousButton = this.tabPreviousButton.find('>:first-child');\n this.tabPreviousButton.hide();\n\n this._showAdditionalTabsDropdown =\n this._showAdditionalTabsDropdown.bind(this);\n this._hideAdditionalTabsDropdown =\n this._hideAdditionalTabsDropdown.bind(this);\n\n this._tabControlOffset =\n this.layoutManager.config.settings?.tabControlOffset;\n this._createControls();\n }\n\n /**\n * Creates a new tab and associates it with a contentItem\n *\n * @param contentItem\n * @param index The position of the tab\n */\n createTab(contentItem: AbstractContentItem, index?: number) {\n //If there's already a tab relating to the\n //content item, don't do anything\n for (let i = 0; i < this.tabs.length; i++) {\n if (this.tabs[i].contentItem === contentItem) {\n return;\n }\n }\n\n const tab = new Tab(this, contentItem);\n\n if (this.tabs.length === 0) {\n this.tabs.push(tab);\n this.tabsContainer.append(tab.element);\n return;\n }\n\n if (index === undefined) {\n index = this.tabs.length;\n }\n\n if (index > 0) {\n this.tabs[index - 1].element.after(tab.element);\n } else {\n this.tabs[0].element.before(tab.element);\n }\n\n this.tabs.splice(index, 0, tab);\n this._updateTabSizes();\n }\n\n /**\n * Finds a tab based on the contentItem its associated with and removes it.\n *\n * @param contentItem\n */\n removeTab(contentItem: AbstractContentItem) {\n for (var i = 0; i < this.tabs.length; i++) {\n if (this.tabs[i].contentItem === contentItem) {\n this.tabs[i]._$destroy();\n this.tabs.splice(i, 1);\n return;\n }\n }\n\n throw new Error('contentItem is not controlled by this header');\n }\n\n /**\n * The programmatical equivalent of clicking a Tab.\n *\n * @param contentItem\n */\n setActiveContentItem(contentItem: AbstractContentItem) {\n var isActive;\n\n for (var i = 0; i < this.tabs.length; i++) {\n isActive = this.tabs[i].contentItem === contentItem;\n this.tabs[i].setActive(isActive);\n if (isActive === true) {\n this.activeContentItem = contentItem;\n this.parent.config.activeItemIndex = i;\n }\n }\n\n // makes sure dropped tabs are scrollintoview, removed any re-ordering\n this.tabs[this.parent.config.activeItemIndex ?? 0].element\n .get(0)\n ?.scrollIntoView?.({\n // Optional chain scrollIntoView call so tests do not error\n inline: 'nearest',\n });\n\n this._hideAdditionalTabsDropdown();\n this._updateTabSizes();\n this.parent.emitBubblingEvent('stateChanged');\n }\n\n /**\n * Programmatically operate with header position.\n *\n * @param position one of ('top','left','right','bottom') to set or empty to get it.\n *\n * @returns previous header position\n */\n position(position?: 'top' | 'left' | 'right' | 'bottom') {\n let previous = this.parent._header.show;\n if (previous && !this.parent._side) previous = 'top';\n if (position !== undefined && this.parent._header.show !== position) {\n this.parent._header.show = position;\n this.parent._setupHeaderPosition();\n }\n return previous;\n }\n\n // Manually attaching so wheel can be passive instead of jquery .on\n // _attachWheelListener is called by parent init\n _attachWheelListener() {\n this.tabsContainer\n .get(0)\n ?.addEventListener('wheel', this._handleWheelEvent, { passive: true });\n }\n\n // detach called by this.destroy\n _detachWheelListener() {\n this.tabsContainer\n .get(0)\n ?.removeEventListener('wheel', this._handleWheelEvent);\n }\n\n _handleWheelEvent(event: WheelEvent) {\n const target = event.currentTarget;\n\n if (!(target instanceof HTMLElement)) {\n return;\n }\n\n // we only care about the larger of the two deltas\n let delta =\n Math.abs(event.deltaY) > Math.abs(event.deltaX)\n ? event.deltaY\n : event.deltaX;\n\n // jshint\n /* globals WheelEvent */\n if (event.deltaMode === WheelEvent.DOM_DELTA_PAGE) {\n // Users can set OS to be in deltaMode page\n // scrolly by page units as pixels\n delta *= this.tabsContainer.innerWidth() ?? 1;\n } else if (event.deltaMode === WheelEvent.DOM_DELTA_LINE) {\n // chrome goes 100px per 3 lines, and firefox would go 102 per 3 (17 lineheight * 3 lines * 2)\n delta *= 100 / 3;\n }\n target.scrollLeft += Math.round(delta);\n }\n\n // on scroll we need to check if side error might need to be disabled\n _handleScrollEvent() {\n this._checkScrollArrows();\n }\n\n // when and item is picked up, attach mouse enter listeners to next/previous buttons\n _handleItemPickedUp() {\n this.isDraggingTab = true;\n if (this.isDropdownShown) this._hideAdditionalTabsDropdown();\n this.controlsContainer.on('mouseenter', this._handleNextMouseEnter);\n this.tabPreviousButton.on('mouseenter', this._handlePreviousMouseEnter);\n }\n\n // when an item is dropped remove listeners and cancel animation\n _handleItemDropped() {\n this.isDraggingTab = false;\n window.cancelAnimationFrame(this.rAF ?? -1);\n this.rAF = null;\n this.controlsContainer.off('mouseenter', this._handleNextMouseEnter);\n this.controlsContainer.off('mouseleave', this._handleNextMouseLeave);\n this.tabPreviousButton.off('mouseenter', this._handlePreviousMouseEnter);\n this.tabPreviousButton.off('mouseleave', this._handlePreviousMouseLeave);\n }\n\n // on next/previous enter start scroll repeat animation loop\n // and attach a listener looking for mouseleave\n // cancel animation on mouse leave, and remove leave listener\n _handleNextMouseEnter() {\n this.controlsContainer.on('mouseleave', this._handleNextMouseLeave);\n this._handleScrollRepeat(\n this.SCROLL_RIGHT,\n this.tabsContainer.scrollLeft() ?? 0\n );\n }\n\n _handlePreviousMouseEnter() {\n this.tabPreviousButton.on('mouseleave', this._handlePreviousMouseLeave);\n this._handleScrollRepeat(\n this.SCROLL_LEFT,\n this.tabsContainer.scrollLeft() ?? 0\n );\n }\n\n _handleNextMouseLeave() {\n window.cancelAnimationFrame(this.rAF ?? -1);\n this.rAF = null;\n this.controlsContainer.off('mouseleave', this._handleNextMouseLeave);\n }\n\n _handlePreviousMouseLeave() {\n window.cancelAnimationFrame(this.rAF ?? -1);\n this.rAF = null;\n this.tabPreviousButton.off('mouseleave', this._handlePreviousMouseLeave);\n }\n\n // scroll one tab to the right on mouse down\n // start scrollRepeat if mouse is held down\n _handleNextButtonMouseDown() {\n var rightOffscreenChild;\n for (let i = 0; i < this.tabs.length; i += 1) {\n if (\n (this.tabs[i].element.get(0)?.offsetLeft ?? 0) >\n (this.tabsContainer.get(0)?.offsetWidth ?? 0) +\n (this.tabsContainer.scrollLeft() ?? 0)\n ) {\n rightOffscreenChild = this.tabs[i].element.get(0);\n break;\n }\n }\n\n if (rightOffscreenChild) {\n rightOffscreenChild.scrollIntoView({\n behavior: 'smooth',\n inline: 'nearest',\n });\n this._handleScrollButtonMouseDown(this.SCROLL_RIGHT);\n } else {\n const tabsContainer = this.tabsContainer.get(0);\n if (tabsContainer) {\n tabsContainer.scrollLeft = this.tabsContainer.get(0)?.scrollWidth ?? 0;\n }\n }\n }\n\n // scroll left by one tab\n // start scrollRepeat if mouse is held down\n _handlePreviousButtonMouseDown() {\n var leftOffscreenChild;\n for (var i = this.tabs.length - 1; i >= 0; i -= 1) {\n if (\n (this.tabs[i].element.get(0)?.offsetLeft ?? 0) <\n (this.tabsContainer.scrollLeft() ?? 0)\n ) {\n leftOffscreenChild = this.tabs[i].element.get(0);\n break;\n }\n }\n if (leftOffscreenChild) {\n leftOffscreenChild.scrollIntoView({\n behavior: 'smooth',\n inline: 'start',\n });\n this._handleScrollButtonMouseDown(this.SCROLL_LEFT);\n } else {\n const tabsContainer = this.tabsContainer.get(0);\n if (tabsContainer) {\n tabsContainer.scrollLeft = 0;\n }\n }\n }\n\n // when hold timer is reached start scroll repeat anim loop\n // cancel it when mouse up happens anywhere\n _handleScrollButtonMouseDown(direction: 'right' | 'left') {\n // closure so that scrollLeft is value at end of timer, and not start of timer\n this.holdTimer = window.setTimeout(() => {\n this._handleScrollRepeat(\n direction,\n this.tabsContainer.scrollLeft() ?? 0,\n 100\n ); // kickstart deltaX to be faster\n }, this.CLICK_TIMEOUT);\n window.addEventListener('mouseup', this._handleScrollButtonMouseUp);\n }\n\n // cancel scroll repeat\n _handleScrollButtonMouseUp() {\n clearTimeout(this.holdTimer ?? -1);\n this.holdTimer = null;\n cancelAnimationFrame(this.rAF ?? -1);\n this.rAF = null;\n window.removeEventListener('mouseup', this._handleScrollButtonMouseUp);\n }\n\n // disables scroll arrow if at edge of scroll area\n _checkScrollArrows() {\n if (this.tabsContainer.scrollLeft() === 0) {\n this.tabPreviousButton.first().prop('disabled', true);\n } else if (\n (this.tabsContainer.scrollLeft() ?? 0) +\n (this.tabsContainer.innerWidth() ?? 0) ===\n this.tabsContainer.get(0)?.scrollWidth\n ) {\n this.tabNextButton.prop('disabled', true);\n } else {\n this.tabNextButton.prop('disabled', false);\n this.tabPreviousButton.first().prop('disabled', false);\n }\n }\n\n // scrolls the tab header container on drag tab over control buttons\n // or on press and hold of scroll arrows at either end\n // called recurisevly in an animation loop until cancelled\n // or directional end is reached\n _handleScrollRepeat(\n direction: 'left' | 'right',\n startX: number,\n deltaX = 0,\n prevTimestamp?: number\n ) {\n const tabContainer = this.tabsContainer.get(0);\n if (!tabContainer) {\n return;\n }\n\n const tabContainerRect = tabContainer.getBoundingClientRect();\n if (direction === this.SCROLL_LEFT) {\n this.tabsContainer.scrollLeft(startX - deltaX);\n if (this.isDraggingTab) {\n // update drag placeholder\n this.parent._highlightHeaderDropZone(tabContainerRect.left - 1);\n }\n // stop loop at left edge\n if (this.tabsContainer.scrollLeft() === 0) {\n this._checkScrollArrows();\n return;\n }\n } else if (direction === this.SCROLL_RIGHT) {\n this.tabsContainer.scrollLeft(startX + deltaX);\n if (this.isDraggingTab) {\n // update drag placeholder\n this.parent._highlightHeaderDropZone(tabContainerRect.right + 1);\n }\n // stop loop at right edge\n if (\n (this.tabsContainer.scrollLeft() ?? 0) +\n (this.tabsContainer.innerWidth() ?? 0) ===\n tabContainer.scrollWidth\n ) {\n this._checkScrollArrows();\n return;\n }\n }\n\n // setup animation loop, scroll with acceleration\n window.cancelAnimationFrame(this.rAF ?? -1);\n this.rAF = window.requestAnimationFrame((timestamp: number) => {\n var startTime = prevTimestamp || timestamp;\n var deltaTime = timestamp - startTime;\n var newDeltaX =\n this.START_SPEED * deltaTime +\n 0.5 * this.ACCELERATION * (deltaTime * deltaTime);\n newDeltaX = Math.min(\n newDeltaX,\n this.tabsContainer.get(0)?.scrollWidth ?? Infinity\n );\n this._handleScrollRepeat(direction, startX, newDeltaX, startTime);\n });\n }\n\n /**\n * Programmatically set closability.\n * @param isClosable Whether to enable/disable closability.\n * @returns Whether the action was successful\n */\n _$setClosable(isClosable: boolean) {\n if (this.closeButton && this._isClosable()) {\n this.closeButton.element[isClosable ? 'show' : 'hide']();\n return true;\n }\n\n return false;\n }\n\n /**\n * Destroys the entire header\n */\n _$destroy() {\n this.emit('destroy', this);\n\n for (var i = 0; i < this.tabs.length; i++) {\n this.tabs[i]._$destroy();\n }\n\n this._detachWheelListener();\n this._handleItemDropped();\n\n $(document).off('mouseup', this._hideAdditionalTabsDropdown);\n this.tabDropdownSearch.off('input', this._handleFilterInput);\n this.tabDropdownSearch.off('keydown', this._handleFilterKeydown);\n\n this.element.remove();\n }\n\n /**\n * get settings from header\n *\n * @returns when exists\n */\n _getHeaderSetting<\n N extends 'show' | 'popout' | 'maximise' | 'close' | 'minimise',\n >(name: N): StackItemHeaderConfig[N] {\n if (name in this.parent._header) return this.parent._header[name];\n }\n\n /**\n * Creates the popout, maximise and close buttons in the header's top right corner\n */\n _createControls() {\n var closeStack,\n popout,\n label,\n maximise,\n tabDropdownLabel,\n tabOverflowNextLabel,\n tabOverflowPreviousLabel;\n\n /**\n * Dropdown to show additional tabs.\n */\n\n tabDropdownLabel = this.layoutManager.config.labels.tabDropdown;\n tabOverflowNextLabel = this.layoutManager.config.labels.tabNextLabel;\n tabOverflowPreviousLabel =\n this.layoutManager.config.labels.tabPreviousLabel;\n\n this.tabDropdownButton = new HeaderButton(\n this,\n tabDropdownLabel,\n 'lm_tabdropdown',\n this._showAdditionalTabsDropdown\n );\n this.tabDropdownButton.element.hide();\n\n this.controlsContainer.prepend(this.tabNextButton);\n this.tabNextButton.hide();\n\n /**\n * Popout control to launch component in new window.\n */\n if (this._getHeaderSetting('popout')) {\n popout = this._onPopoutClick.bind(this);\n label = this._getHeaderSetting('popout');\n new HeaderButton(this, label, 'lm_popout', popout);\n }\n\n /**\n * Maximise control - set the component to the full size of the layout\n */\n if (this._getHeaderSetting('maximise')) {\n maximise = this.parent.toggleMaximise.bind(this.parent);\n const maximiseLabel = this._getHeaderSetting('maximise');\n const minimiseLabel = this._getHeaderSetting('minimise');\n const maximiseButton = new HeaderButton(\n this,\n maximiseLabel,\n 'lm_maximise',\n maximise\n );\n\n this.parent.on('maximised', function () {\n maximiseButton.element.attr('title', minimiseLabel ?? '');\n });\n\n this.parent.on('minimised', function () {\n maximiseButton.element.attr('title', maximiseLabel ?? '');\n });\n }\n\n /**\n * Close button\n */\n if (this._isClosable()) {\n closeStack = this.parent.remove.bind(this.parent);\n label = this._getHeaderSetting('close');\n this.closeButton = new HeaderButton(this, label, 'lm_close', closeStack);\n }\n }\n\n /**\n * Shows drop down for additional tabs when there are too many to display.\n *\n * @returns {void}\n */\n _showAdditionalTabsDropdown() {\n if (this.isDropdownShown) {\n this._hideAdditionalTabsDropdown();\n return;\n }\n\n // clone tabs in the current list, with event listeners\n // and add them to the drop down\n this.tabDropdownList = this.tabsContainer\n .clone(true)\n .appendTo(this.tabDropdownContainer)\n .children()\n .removeClass('lm_active');\n\n // move it to be absolutely positioned in document root\n // as header has overflow hidden, and we need to escape that\n $(document.body).append(this.tabDropdownContainer);\n\n // show the dropdown\n this.tabDropdownContainer.show();\n this.isDropdownShown = true;\n\n // dropdown is a part of the header z-index context\n // add class to header when dropdown is open\n // so we can bump the z-index of the lists parent\n this.element.addClass('lm_dropdown_open');\n\n // focus the dropdown filter list input\n this.tabDropdownSearch.val('').focus();\n this.dropdownKeyIndex = 0;\n this.tabDropdownList\n .eq(this.dropdownKeyIndex)\n .addClass('lm_keyboard_active');\n\n $(document).on('mousedown', this._hideAdditionalTabsDropdown);\n this._updateAdditionalTabsDropdown();\n }\n\n // enables synthetic keyboard navigation of the list\n _handleFilterKeydown(e: JQuery.TriggeredEvent) {\n if (e.key === 'Escape') {\n this._hideAdditionalTabsDropdown();\n return;\n }\n\n // a negative dropdownKeyIndex means the list is filtered to an empty state\n if (this.dropdownKeyIndex === -1) return;\n\n if (e.key === 'Enter' || e.key === ' ') {\n // simulate \"click\"\n this._hideAdditionalTabsDropdown();\n this.tabs[this.dropdownKeyIndex]._onTabClick();\n return;\n }\n\n function getNextDropdownIndex(\n startIndex: number,\n delta: number,\n tabDropdownList: JQuery<HTMLElement> | null\n ) {\n if (tabDropdownList == null || tabDropdownList.length < 2) {\n return -1;\n }\n var i =\n (startIndex + delta + tabDropdownList.length) % tabDropdownList.length;\n while (i !== startIndex) {\n if (tabDropdownList.eq(i).css('display') !== 'none') {\n return i;\n }\n i = (i + delta + tabDropdownList.length) % tabDropdownList.length;\n }\n\n return startIndex;\n }\n\n // allow tab or arrow key navigation of list, prevent tabs default behaviour\n if (e.key === 'ArrowDown' || (e.key === 'Tab' && e.shiftKey === false)) {\n e.preventDefault();\n this.tabDropdownList\n ?.eq(this.dropdownKeyIndex)\n .removeClass('lm_keyboard_active');\n this.dropdownKeyIndex = getNextDropdownIndex(\n this.dropdownKeyIndex,\n 1,\n this.tabDropdownList\n );\n this.tabDropdownList\n ?.eq(this.dropdownKeyIndex)\n .addClass('lm_keyboard_active');\n } else if (e.key === 'ArrowUp' || e.key === 'Tab') {\n e.preventDefault();\n this.tabDropdownList\n ?.eq(this.dropdownKeyIndex)\n .removeClass('lm_keyboard_active');\n this.dropdownKeyIndex = getNextDropdownIndex(\n this.dropdownKeyIndex,\n -1,\n this.tabDropdownList\n );\n this.tabDropdownList\n ?.eq(this.dropdownKeyIndex)\n .addClass('lm_keyboard_active');\n }\n }\n\n // filters the list\n _handleFilterInput(event: JQuery.TriggeredEvent) {\n if (this.tabDropdownList == null) {\n return;\n }\n // reset keyboard index\n this.tabDropdownList\n .eq(this.dropdownKeyIndex)\n .removeClass('lm_keyboard_active');\n this.dropdownKeyIndex = -1;\n\n for (var i = 0; i < this.tabDropdownList.length; i++) {\n if (\n (this.tabs[i].contentItem.config.title\n ?.toLowerCase()\n .indexOf(event.target.value.toLowerCase()) ?? -1) !== -1\n ) {\n this.tabDropdownList.eq(i).css('display', '');\n if (this.dropdownKeyIndex === -1) this.dropdownKeyIndex = i;\n } else {\n this.tabDropdownList.eq(i).css('display', 'none');\n }\n }\n\n if (this.dropdownKeyIndex !== -1) {\n this.tabDropdownList\n .eq(this.dropdownKeyIndex)\n .addClass('lm_keyboard_active');\n }\n }\n\n /**\n * Hides drop down for additional tabs when needed. It is called via mousedown\n * event on document when list is open, or programmatically when drag starts,\n * or active tab changes etc.\n */\n _hideAdditionalTabsDropdown(event?: JQuery.UIEventBase) {\n // dropdown already closed, do nothing\n if (!this.isDropdownShown) return;\n\n if (event && this.tabDropdownContainer.get(0)?.contains(event.target)) {\n // prevent events occuring inside the list from causing a close\n return;\n } else if (\n event &&\n this.tabDropdownButton?.element.get(0) === event.target\n ) {\n // do nothing on the mouse down so that the click event can close, rather then re-open\n return;\n }\n\n this.element.removeClass('lm_dropdown_open');\n this.tabDropdownContainer.hide();\n this.isDropdownShown = false;\n\n // put it back in the header dom to keep the root tidy\n this.element.append(this.tabDropdownContainer);\n\n // remove the current tab list\n this.tabDropdownContainer.find('.lm_tabs').remove();\n\n $(document).off('mousedown', this._hideAdditionalTabsDropdown);\n }\n\n /**\n * Ensures additional tab drop down which is absolutely positioned in the root\n * doesn't overflow the screen, and instead becomes scrollable. Positions the\n * floating menu in the correct location relative to the dropdown button.\n */\n _updateAdditionalTabsDropdown() {\n if (!this.isDropdownShown) return;\n if (!this.tabDropdownList || this.tabDropdownList.length == 0) return;\n\n const scrollHeight = this.tabDropdownContainer.get(0)?.scrollHeight ?? 0;\n if (scrollHeight === 0) return; // height can be zero if called on a hidden or empty list\n\n const list_rect = this.tabDropdownContainer[0].getBoundingClientRect();\n const windowHeight = $(window).height() ?? 0;\n const windowWidth = $(window).width() ?? 0;\n\n // position relative to the dropdown button\n if (!this.tabDropdownButton) return;\n const button_rect =\n this.tabDropdownButton.element[0].getBoundingClientRect();\n\n // If it fits below button, put it there. If it doesn't and there is more\n // than 60% space above, then flip to displaying menu above button\n const hasSpaceBelow = scrollHeight < windowHeight - button_rect.bottom;\n const shouldFlip =\n !hasSpaceBelow && button_rect.bottom > windowHeight * 0.6; // 0.6 bias to not flipping rather than strictly 0.5\n\n // keep from going of right edge\n // when flipped offset to right edge of button\n const left = Math.min(\n button_rect.left + (shouldFlip ? button_rect.width : 0),\n windowWidth - list_rect.width - this.PADDING\n );\n // flip, with limit of top of screen\n const top = shouldFlip\n ? Math.max(button_rect.top - scrollHeight, this.PADDING)\n : button_rect.bottom;\n\n // if needs scroll to fit, apply a max-height\n const maxHeight = windowHeight - top - this.PADDING;\n\n this.tabDropdownContainer.css({\n 'max-height': maxHeight,\n top,\n left,\n });\n }\n\n /**\n * Checks whether the header is closable based on the parent config and\n * the global config.\n *\n * @returns Whether the header is closable.\n */\n _isClosable() {\n return Boolean(\n this.parent.config.isClosable &&\n this.layoutManager.config.settings.showCloseIcon\n );\n }\n\n _onPopoutClick() {\n if (this.layoutManager.config.settings.popoutWholeStack === true) {\n this.parent.popout();\n } else {\n this.activeContentItem?.popout();\n }\n }\n\n /**\n * Invoked when the header's background is clicked (not it's tabs or controls)\n *\n * @param event\n */\n _onHeaderClick(event: JQuery.UIEventBase) {\n if (event.target === this.element[0]) {\n this.parent.select();\n }\n }\n\n /**\n * Pushes the tabs to the tab dropdown if the available space is not sufficient\n */\n _updateTabSizes() {\n if (this.tabs.length === 0) {\n return;\n }\n\n const tabsContainer = this.tabsContainer.get(0);\n\n if (this.isDropdownShown) {\n // resize the dropdown list too as it is currently open\n this._updateAdditionalTabsDropdown();\n }\n\n if (!tabsContainer) {\n return;\n }\n\n if (\n !this.isOverflowing &&\n tabsContainer.scrollWidth > tabsContainer.clientWidth\n ) {\n this.tabDropdownButton?.element.show();\n this.tabNextButton.show();\n this.tabPreviousButton.show();\n this.isOverflowing = true;\n } else if (\n this.isOverflowing &&\n tabsContainer.scrollWidth <= tabsContainer.clientWidth\n ) {\n this.tabDropdownButton?.element.hide();\n this.tabNextButton.hide();\n this.tabPreviousButton.hide();\n this.isOverflowing = false;\n }\n\n if (this.isOverflowing) this._checkScrollArrows();\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HeaderButton.js","names":["$","HeaderButton","constructor","header","label","cssClass","action","_defineProperty","_header","element","on","_$destroy","_action","controlsContainer","append","off","remove"],"sources":["../../src/controls/HeaderButton.ts"],"sourcesContent":["import $ from 'jquery';\nimport type Header from './Header';\n\nexport default class HeaderButton {\n element: JQuery<HTMLLIElement>;\n\n private _header: Header;\n\n private _action: (e: Event) => void;\n\n constructor(\n header: Header,\n label: string | undefined,\n cssClass: string,\n action: (e: Event) => void\n ) {\n this._header = header;\n this.element = $(\n '<li class=\"' + cssClass + '\" title=\"' + label + '\"></li>'\n );\n this._header.on('destroy', this._$destroy, this);\n this._action = action;\n this.element.on('click', this._action);\n this._header.controlsContainer.append(this.element);\n }\n\n _$destroy() {\n this.element.off();\n this.element.remove();\n }\n}\n"],"mappings":";;;AAAA,OAAOA,CAAC,MAAM,QAAQ;AAGtB,eAAe,MAAMC,YAAY,CAAC;EAOhCC,WAAWA,CACTC,MAAc,EACdC,KAAyB,EACzBC,QAAgB,EAChBC,MAA0B,EAC1B;IAAAC,eAAA;IAAAA,eAAA;IAAAA,eAAA;IACA,IAAI,CAACC,OAAO,GAAGL,MAAM;IACrB,IAAI,CAACM,OAAO,GAAGT,CAAC,CACd,aAAa,GAAGK,QAAQ,GAAG,WAAW,GAAGD,KAAK,GAAG,SACnD,CAAC;IACD,IAAI,CAACI,OAAO,CAACE,EAAE,CAAC,SAAS,EAAE,IAAI,CAACC,SAAS,EAAE,IAAI,CAAC;IAChD,IAAI,CAACC,OAAO,GAAGN,MAAM;IACrB,IAAI,CAACG,OAAO,CAACC,EAAE,CAAC,OAAO,EAAE,IAAI,CAACE,OAAO,CAAC;IACtC,IAAI,CAACJ,OAAO,CAACK,iBAAiB,CAACC,MAAM,CAAC,IAAI,CAACL,OAAO,CAAC;EACrD;EAEAE,SAASA,CAAA,EAAG;IACV,IAAI,CAACF,OAAO,CAACM,GAAG,CAAC,CAAC;IAClB,IAAI,CAACN,OAAO,CAACO,MAAM,CAAC,CAAC;EACvB;AACF"}
|
|
1
|
+
{"version":3,"file":"HeaderButton.js","names":["$","HeaderButton","constructor","header","label","cssClass","action","_defineProperty","_header","element","on","_$destroy","_action","controlsContainer","append","off","remove"],"sources":["../../src/controls/HeaderButton.ts"],"sourcesContent":["import $ from 'jquery';\nimport type Header from './Header';\n\nexport default class HeaderButton {\n element: JQuery<HTMLLIElement>;\n\n private _header: Header;\n\n private _action: (e: Event) => void;\n\n constructor(\n header: Header,\n label: string | undefined,\n cssClass: string,\n action: (e: Event) => void\n ) {\n this._header = header;\n this.element = $(\n '<li class=\"' + cssClass + '\" title=\"' + label + '\"></li>'\n );\n this._header.on('destroy', this._$destroy, this);\n this._action = action;\n this.element.on('click', this._action);\n this._header.controlsContainer.append(this.element);\n }\n\n _$destroy() {\n this.element.off();\n this.element.remove();\n }\n}\n"],"mappings":";;;AAAA,OAAOA,CAAC,MAAM,QAAQ;AAGtB,eAAe,MAAMC,YAAY,CAAC;EAOhCC,WAAWA,CACTC,MAAc,EACdC,KAAyB,EACzBC,QAAgB,EAChBC,MAA0B,EAC1B;IAAAC,eAAA;IAAAA,eAAA;IAAAA,eAAA;IACA,IAAI,CAACC,OAAO,GAAGL,MAAM;IACrB,IAAI,CAACM,OAAO,GAAGT,CAAC,CACd,aAAa,GAAGK,QAAQ,GAAG,WAAW,GAAGD,KAAK,GAAG,SACnD,CAAC;IACD,IAAI,CAACI,OAAO,CAACE,EAAE,CAAC,SAAS,EAAE,IAAI,CAACC,SAAS,EAAE,IAAI,CAAC;IAChD,IAAI,CAACC,OAAO,GAAGN,MAAM;IACrB,IAAI,CAACG,OAAO,CAACC,EAAE,CAAC,OAAO,EAAE,IAAI,CAACE,OAAO,CAAC;IACtC,IAAI,CAACJ,OAAO,CAACK,iBAAiB,CAACC,MAAM,CAAC,IAAI,CAACL,OAAO,CAAC;EACrD;EAEAE,SAASA,CAAA,EAAG;IACV,IAAI,CAACF,OAAO,CAACM,GAAG,CAAC,CAAC;IAClB,IAAI,CAACN,OAAO,CAACO,MAAM,CAAC,CAAC;EACvB;AACF","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Splitter.js","names":["$","DragListener","Splitter","constructor","isVertical","size","grabSize","_defineProperty","_isVertical","_size","_grabSize","element","_createElement","_dragListener","on","event","callback","context","_this$_dragListener","_$destroy","_this$_dragListener2","destroy","remove","dragHandle","append","handleExcessSize","handleExcessPos","css","addClass"],"sources":["../../src/controls/Splitter.ts"],"sourcesContent":["import $ from 'jquery';\nimport { DragListener } from '../utils';\n\nexport default class Splitter {\n private _isVertical: boolean;\n\n private _size: number;\n\n private _grabSize: number;\n\n private _dragListener: DragListener | null;\n\n element: JQuery<HTMLElement>;\n\n constructor(isVertical: boolean, size: number, grabSize: number) {\n this._isVertical = isVertical;\n this._size = size;\n this._grabSize = grabSize < size ? size : grabSize;\n\n this.element = this._createElement();\n this._dragListener = new DragListener(this.element);\n }\n\n on(event: string, callback: Function, context?: unknown) {\n this._dragListener?.on(event, callback, context);\n }\n\n _$destroy() {\n this._dragListener?.destroy();\n this._dragListener = null;\n this.element.remove();\n }\n\n _createElement() {\n var dragHandle = $('<div class=\"lm_drag_handle\"></div>');\n var element = $('<div class=\"lm_splitter\"></div>');\n element.append(dragHandle);\n\n var handleExcessSize = this._grabSize - this._size;\n var handleExcessPos = handleExcessSize / 2;\n\n if (this._isVertical) {\n dragHandle.css('top', -handleExcessPos);\n dragHandle.css('height', this._size + handleExcessSize);\n element.addClass('lm_vertical');\n element['height'](this._size);\n } else {\n dragHandle.css('left', -handleExcessPos);\n dragHandle.css('width', this._size + handleExcessSize);\n element.addClass('lm_horizontal');\n element['width'](this._size);\n }\n\n return element;\n }\n}\n"],"mappings":";;;AAAA,OAAOA,CAAC,MAAM,QAAQ;AAAC,SACdC,YAAY;AAErB,eAAe,MAAMC,QAAQ,CAAC;EAW5BC,WAAWA,CAACC,UAAmB,EAAEC,IAAY,EAAEC,QAAgB,EAAE;IAAAC,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAC/D,IAAI,CAACC,WAAW,GAAGJ,UAAU;IAC7B,IAAI,CAACK,KAAK,GAAGJ,IAAI;IACjB,IAAI,CAACK,SAAS,GAAGJ,QAAQ,GAAGD,IAAI,GAAGA,IAAI,GAAGC,QAAQ;IAElD,IAAI,CAACK,OAAO,GAAG,IAAI,CAACC,cAAc,CAAC,CAAC;IACpC,IAAI,CAACC,aAAa,GAAG,IAAIZ,YAAY,CAAC,IAAI,CAACU,OAAO,CAAC;EACrD;EAEAG,EAAEA,CAACC,KAAa,EAAEC,QAAkB,EAAEC,OAAiB,EAAE;IAAA,IAAAC,mBAAA;IACvD,CAAAA,mBAAA,OAAI,CAACL,aAAa,cAAAK,mBAAA,uBAAlBA,mBAAA,CAAoBJ,EAAE,CAACC,KAAK,EAAEC,QAAQ,EAAEC,OAAO,CAAC;EAClD;EAEAE,SAASA,CAAA,EAAG;IAAA,IAAAC,oBAAA;IACV,CAAAA,oBAAA,OAAI,CAACP,aAAa,cAAAO,oBAAA,uBAAlBA,oBAAA,CAAoBC,OAAO,CAAC,CAAC;IAC7B,IAAI,CAACR,aAAa,GAAG,IAAI;IACzB,IAAI,CAACF,OAAO,CAACW,MAAM,CAAC,CAAC;EACvB;EAEAV,cAAcA,CAAA,EAAG;IACf,IAAIW,UAAU,GAAGvB,CAAC,CAAC,oCAAoC,CAAC;IACxD,IAAIW,OAAO,GAAGX,CAAC,CAAC,iCAAiC,CAAC;IAClDW,OAAO,CAACa,MAAM,CAACD,UAAU,CAAC;IAE1B,IAAIE,gBAAgB,GAAG,IAAI,CAACf,SAAS,GAAG,IAAI,CAACD,KAAK;IAClD,IAAIiB,eAAe,GAAGD,gBAAgB,GAAG,CAAC;IAE1C,IAAI,IAAI,CAACjB,WAAW,EAAE;MACpBe,UAAU,CAACI,GAAG,CAAC,KAAK,EAAE,CAACD,eAAe,CAAC;MACvCH,UAAU,CAACI,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAClB,KAAK,GAAGgB,gBAAgB,CAAC;MACvDd,OAAO,CAACiB,QAAQ,CAAC,aAAa,CAAC;MAC/BjB,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAACF,KAAK,CAAC;IAC/B,CAAC,MAAM;MACLc,UAAU,CAACI,GAAG,CAAC,MAAM,EAAE,CAACD,eAAe,CAAC;MACxCH,UAAU,CAACI,GAAG,CAAC,OAAO,EAAE,IAAI,CAAClB,KAAK,GAAGgB,gBAAgB,CAAC;MACtDd,OAAO,CAACiB,QAAQ,CAAC,eAAe,CAAC;MACjCjB,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAACF,KAAK,CAAC;IAC9B;IAEA,OAAOE,OAAO;EAChB;AACF"}
|
|
1
|
+
{"version":3,"file":"Splitter.js","names":["$","DragListener","Splitter","constructor","isVertical","size","grabSize","_defineProperty","_isVertical","_size","_grabSize","element","_createElement","_dragListener","on","event","callback","context","_this$_dragListener","_$destroy","_this$_dragListener2","destroy","remove","dragHandle","append","handleExcessSize","handleExcessPos","css","addClass"],"sources":["../../src/controls/Splitter.ts"],"sourcesContent":["import $ from 'jquery';\nimport { DragListener } from '../utils';\n\nexport default class Splitter {\n private _isVertical: boolean;\n\n private _size: number;\n\n private _grabSize: number;\n\n private _dragListener: DragListener | null;\n\n element: JQuery<HTMLElement>;\n\n constructor(isVertical: boolean, size: number, grabSize: number) {\n this._isVertical = isVertical;\n this._size = size;\n this._grabSize = grabSize < size ? size : grabSize;\n\n this.element = this._createElement();\n this._dragListener = new DragListener(this.element);\n }\n\n on(event: string, callback: Function, context?: unknown) {\n this._dragListener?.on(event, callback, context);\n }\n\n _$destroy() {\n this._dragListener?.destroy();\n this._dragListener = null;\n this.element.remove();\n }\n\n _createElement() {\n var dragHandle = $('<div class=\"lm_drag_handle\"></div>');\n var element = $('<div class=\"lm_splitter\"></div>');\n element.append(dragHandle);\n\n var handleExcessSize = this._grabSize - this._size;\n var handleExcessPos = handleExcessSize / 2;\n\n if (this._isVertical) {\n dragHandle.css('top', -handleExcessPos);\n dragHandle.css('height', this._size + handleExcessSize);\n element.addClass('lm_vertical');\n element['height'](this._size);\n } else {\n dragHandle.css('left', -handleExcessPos);\n dragHandle.css('width', this._size + handleExcessSize);\n element.addClass('lm_horizontal');\n element['width'](this._size);\n }\n\n return element;\n }\n}\n"],"mappings":";;;AAAA,OAAOA,CAAC,MAAM,QAAQ;AAAC,SACdC,YAAY;AAErB,eAAe,MAAMC,QAAQ,CAAC;EAW5BC,WAAWA,CAACC,UAAmB,EAAEC,IAAY,EAAEC,QAAgB,EAAE;IAAAC,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAC/D,IAAI,CAACC,WAAW,GAAGJ,UAAU;IAC7B,IAAI,CAACK,KAAK,GAAGJ,IAAI;IACjB,IAAI,CAACK,SAAS,GAAGJ,QAAQ,GAAGD,IAAI,GAAGA,IAAI,GAAGC,QAAQ;IAElD,IAAI,CAACK,OAAO,GAAG,IAAI,CAACC,cAAc,CAAC,CAAC;IACpC,IAAI,CAACC,aAAa,GAAG,IAAIZ,YAAY,CAAC,IAAI,CAACU,OAAO,CAAC;EACrD;EAEAG,EAAEA,CAACC,KAAa,EAAEC,QAAkB,EAAEC,OAAiB,EAAE;IAAA,IAAAC,mBAAA;IACvD,CAAAA,mBAAA,OAAI,CAACL,aAAa,cAAAK,mBAAA,uBAAlBA,mBAAA,CAAoBJ,EAAE,CAACC,KAAK,EAAEC,QAAQ,EAAEC,OAAO,CAAC;EAClD;EAEAE,SAASA,CAAA,EAAG;IAAA,IAAAC,oBAAA;IACV,CAAAA,oBAAA,OAAI,CAACP,aAAa,cAAAO,oBAAA,uBAAlBA,oBAAA,CAAoBC,OAAO,CAAC,CAAC;IAC7B,IAAI,CAACR,aAAa,GAAG,IAAI;IACzB,IAAI,CAACF,OAAO,CAACW,MAAM,CAAC,CAAC;EACvB;EAEAV,cAAcA,CAAA,EAAG;IACf,IAAIW,UAAU,GAAGvB,CAAC,CAAC,oCAAoC,CAAC;IACxD,IAAIW,OAAO,GAAGX,CAAC,CAAC,iCAAiC,CAAC;IAClDW,OAAO,CAACa,MAAM,CAACD,UAAU,CAAC;IAE1B,IAAIE,gBAAgB,GAAG,IAAI,CAACf,SAAS,GAAG,IAAI,CAACD,KAAK;IAClD,IAAIiB,eAAe,GAAGD,gBAAgB,GAAG,CAAC;IAE1C,IAAI,IAAI,CAACjB,WAAW,EAAE;MACpBe,UAAU,CAACI,GAAG,CAAC,KAAK,EAAE,CAACD,eAAe,CAAC;MACvCH,UAAU,CAACI,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAClB,KAAK,GAAGgB,gBAAgB,CAAC;MACvDd,OAAO,CAACiB,QAAQ,CAAC,aAAa,CAAC;MAC/BjB,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAACF,KAAK,CAAC;IAC/B,CAAC,MAAM;MACLc,UAAU,CAACI,GAAG,CAAC,MAAM,EAAE,CAACD,eAAe,CAAC;MACxCH,UAAU,CAACI,GAAG,CAAC,OAAO,EAAE,IAAI,CAAClB,KAAK,GAAGgB,gBAAgB,CAAC;MACtDd,OAAO,CAACiB,QAAQ,CAAC,eAAe,CAAC;MACjCjB,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAACF,KAAK,CAAC;IAC9B;IAEA,OAAOE,OAAO;EAChB;AACF","ignoreList":[]}
|