@deephaven/golden-layout 0.85.3-core-plugins.6 → 0.85.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/LayoutManager.d.ts +11 -23
- package/dist/LayoutManager.d.ts.map +1 -1
- package/dist/LayoutManager.js +21 -49
- package/dist/LayoutManager.js.map +1 -1
- package/dist/config/Config.d.ts +2 -2
- package/dist/config/Config.d.ts.map +1 -1
- package/dist/config/Config.js.map +1 -1
- package/dist/config/ItemConfig.d.ts +14 -38
- package/dist/config/ItemConfig.d.ts.map +1 -1
- package/dist/config/ItemConfig.js +0 -2
- package/dist/config/ItemConfig.js.map +1 -1
- package/dist/controls/BrowserPopout.d.ts +2 -2
- package/dist/controls/BrowserPopout.d.ts.map +1 -1
- package/dist/controls/BrowserPopout.js.map +1 -1
- package/dist/controls/DragSource.d.ts +3 -3
- package/dist/controls/DragSource.d.ts.map +1 -1
- package/dist/controls/DragSource.js.map +1 -1
- package/dist/controls/Header.d.ts +3 -3
- package/dist/controls/Header.d.ts.map +1 -1
- package/dist/controls/Header.js.map +1 -1
- package/dist/items/AbstractContentItem.d.ts +12 -5
- package/dist/items/AbstractContentItem.d.ts.map +1 -1
- package/dist/items/AbstractContentItem.js.map +1 -1
- package/dist/items/Component.d.ts +2 -2
- package/dist/items/Component.d.ts.map +1 -1
- package/dist/items/Component.js +1 -2
- package/dist/items/Component.js.map +1 -1
- package/dist/items/Root.d.ts +5 -3
- package/dist/items/Root.d.ts.map +1 -1
- package/dist/items/Root.js.map +1 -1
- package/dist/items/RowOrColumn.d.ts +6 -5
- package/dist/items/RowOrColumn.d.ts.map +1 -1
- package/dist/items/RowOrColumn.js +1 -2
- package/dist/items/RowOrColumn.js.map +1 -1
- package/dist/items/Stack.d.ts +21 -7
- package/dist/items/Stack.d.ts.map +1 -1
- package/dist/items/Stack.js +4 -7
- package/dist/items/Stack.js.map +1 -1
- package/dist/utils/index.d.ts +0 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +0 -1
- package/dist/utils/index.js.map +1 -1
- package/package.json +3 -3
- package/dist/utils/EventUtils.d.ts +0 -27
- package/dist/utils/EventUtils.d.ts.map +0 -1
- package/dist/utils/EventUtils.js +0 -41
- package/dist/utils/EventUtils.js.map +0 -1
- package/dist/utils/EventUtils.test.d.ts +0 -2
- package/dist/utils/EventUtils.test.d.ts.map +0 -1
|
@@ -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":"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"}
|
|
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 type { AbstractContentItem, Stack } from '../items';\nimport type { StackHeaderConfig } from '../items/Stack';\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): StackHeaderConfig[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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"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/// <reference types="jquery" />
|
|
3
3
|
/// <reference types="bootstrap" />
|
|
4
4
|
import { BubblingEvent, EventEmitter } from '../utils';
|
|
5
|
-
import type { ItemConfig } from '../config';
|
|
5
|
+
import type { ItemConfig, ItemConfigType } from '../config';
|
|
6
6
|
import type LayoutManager from '../LayoutManager';
|
|
7
7
|
import type Tab from '../controls/Tab';
|
|
8
8
|
import type Stack from './Stack';
|
|
@@ -20,6 +20,10 @@ export type ItemArea<C = AbstractContentItem> = {
|
|
|
20
20
|
side: 'left' | 'right' | 'top' | 'bottom' | '';
|
|
21
21
|
contentItem: C;
|
|
22
22
|
};
|
|
23
|
+
type AbstractItemConfig = ItemConfig | {
|
|
24
|
+
type: ItemConfig['type'];
|
|
25
|
+
content: ItemConfigType[];
|
|
26
|
+
};
|
|
23
27
|
/**
|
|
24
28
|
* This is the baseclass that all content items inherit from.
|
|
25
29
|
* Most methods provide a subset of what the sub-classes do.
|
|
@@ -60,7 +64,7 @@ export default abstract class AbstractContentItem extends EventEmitter {
|
|
|
60
64
|
tab?: Tab;
|
|
61
65
|
private _pendingEventPropagations;
|
|
62
66
|
private _throttledEvents;
|
|
63
|
-
constructor(layoutManager: LayoutManager, config:
|
|
67
|
+
constructor(layoutManager: LayoutManager, config: AbstractItemConfig, parent: AbstractContentItem | null, element: JQuery<HTMLElement>);
|
|
64
68
|
/**
|
|
65
69
|
* Set the size of the component and its children, called recursively
|
|
66
70
|
*
|
|
@@ -90,7 +94,9 @@ export default abstract class AbstractContentItem extends EventEmitter {
|
|
|
90
94
|
* @param contentItem
|
|
91
95
|
* @param index If omitted item will be appended
|
|
92
96
|
*/
|
|
93
|
-
addChild(contentItem: AbstractContentItem |
|
|
97
|
+
addChild(contentItem: AbstractContentItem | ItemConfigType | {
|
|
98
|
+
type: ItemConfig['type'];
|
|
99
|
+
}, index?: number): void;
|
|
94
100
|
/**
|
|
95
101
|
* Replaces oldChild with newChild. This used to use jQuery.replaceWith... which for
|
|
96
102
|
* some reason removes all event listeners, so isn't really an option.
|
|
@@ -196,13 +202,13 @@ export default abstract class AbstractContentItem extends EventEmitter {
|
|
|
196
202
|
* PLEASE NOTE, please see addChild for adding contentItems add runtime
|
|
197
203
|
* @param {configuration item node} config
|
|
198
204
|
*/
|
|
199
|
-
_createContentItems(config:
|
|
205
|
+
_createContentItems(config: AbstractItemConfig): void;
|
|
200
206
|
/**
|
|
201
207
|
* Extends an item configuration node with default settings
|
|
202
208
|
* @param config
|
|
203
209
|
* @returns extended config
|
|
204
210
|
*/
|
|
205
|
-
_extendItemNode
|
|
211
|
+
_extendItemNode(config: AbstractItemConfig): AbstractItemConfig;
|
|
206
212
|
/**
|
|
207
213
|
* Called for every event on the item tree. Decides whether the event is a bubbling
|
|
208
214
|
* event and propagates it to its parent
|
|
@@ -226,4 +232,5 @@ export default abstract class AbstractContentItem extends EventEmitter {
|
|
|
226
232
|
*/
|
|
227
233
|
_propagateEventToLayoutManager(name: string, event: BubblingEvent): void;
|
|
228
234
|
}
|
|
235
|
+
export {};
|
|
229
236
|
//# sourceMappingURL=AbstractContentItem.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractContentItem.d.ts","sourceRoot":"","sources":["../../src/items/AbstractContentItem.ts"],"names":[],"mappings":";;;AAAA,OAAO,EAAa,aAAa,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAGlE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"AbstractContentItem.d.ts","sourceRoot":"","sources":["../../src/items/AbstractContentItem.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractContentItem.js","names":["animFrame","BubblingEvent","EventEmitter","ConfigurationError","itemDefaultConfig","isStack","item","isComponent","isRoot","AbstractContentItem","constructor","layoutManager","config","parent","element","_defineProperty","_extendItemNode","type","contentItems","_pendingEventPropagations","_throttledEvents","on","ALL_EVENT","_propagateEvent","content","_createContentItems","callDownwards","functionName","functionArguments","arguments","length","undefined","bottomUp","skipSelf","apply","i","removeChild","contentItem","_this$config$content","keepChild","index","indexOf","Error","_$destroy","splice","isClosable","_this$parent","addChild","_$normalizeContentItem","isInitialised","_$init","replaceChild","oldChild","newChild","_$destroyOldChild","parentNode","header","tabs","remove","_this$parent2","popout","browserPopout","createPopout","emitBubblingEvent","toggleMaximise","e","preventDefault","isMaximised","_$minimiseItem","_$maximiseItem","select","selectedItem","selectItem","addClass","deselect","removeClass","setTitle","title","emit","hasId","id","Array","addId","push","removeId","getItemsByFilter","filter","result","next","getItemsById","getItemsByType","_$getItemsByProperty","getComponentsByName","componentName","components","instances","instance","key","value","_$setParent","_$highlightDropZone","x","y","area","_this$layoutManager$d","dropTargetIndicator","highlightArea","_$onDrop","_$hide","_callOnActiveComponents","hide","updateSize","_$show","show","methodName","stacks","activeContentItem","getActiveContentItem","container","_$getArea","_element$offset","_element$width","_element$height","offset","left","top","width","height","x1","y1","x2","y2","surface","side","setSize","_this$childElementCon","childElementContainer","append","name","event","oContentItem","createContentItem","Object","entries","k","isPropagationStopped","_scheduleEventPropagationToLayoutManager","origin","_propagateEventToLayoutManager","bind"],"sources":["../../src/items/AbstractContentItem.ts"],"sourcesContent":["import { animFrame, BubblingEvent, EventEmitter } from '../utils';\nimport { ConfigurationError } from '../errors';\nimport { itemDefaultConfig } from '../config';\nimport type { ItemConfig } from '../config';\nimport type LayoutManager from '../LayoutManager';\nimport type Tab from '../controls/Tab';\nimport type Stack from './Stack';\nimport type Component from './Component';\nimport type Root from './Root';\n\nexport function isStack(item: AbstractContentItem): item is Stack {\n return item.isStack;\n}\n\nexport function isComponent(item: AbstractContentItem): item is Component {\n return item.isComponent;\n}\n\nexport function isRoot(item: AbstractContentItem): item is Root {\n return item.isRoot;\n}\n\nexport type ItemArea<C = AbstractContentItem> = {\n x1: number;\n x2: number;\n y1: number;\n y2: number;\n surface: number;\n side: 'left' | 'right' | 'top' | 'bottom' | '';\n contentItem: C;\n};\n\n/**\n * This is the baseclass that all content items inherit from.\n * Most methods provide a subset of what the sub-classes do.\n *\n * It also provides a number of functions for tree traversal\n *\n * @param {lm.LayoutManager} layoutManager\n * @param {item node configuration} config\n * @param {lm.item} parent\n *\n * @event stateChanged\n * @event beforeItemDestroyed\n * @event itemDestroyed\n * @event itemCreated\n * @event componentCreated\n * @event rowCreated\n * @event columnCreated\n * @event stackCreated\n *\n * @constructor\n */\nexport default abstract class AbstractContentItem extends EventEmitter {\n config: ItemConfig;\n type: string;\n contentItems: AbstractContentItem[];\n parent: AbstractContentItem | null;\n layoutManager: LayoutManager;\n element: JQuery<HTMLElement>;\n childElementContainer?: JQuery<HTMLElement>;\n componentName?: string;\n\n isInitialised = false;\n isMaximised = false;\n isRoot = false;\n isRow = false;\n isColumn = false;\n isStack = false;\n isComponent = false;\n\n tab?: Tab;\n\n private _pendingEventPropagations: Record<string, boolean>;\n private _throttledEvents: string[];\n\n constructor(\n layoutManager: LayoutManager,\n config: ItemConfig,\n parent: AbstractContentItem | null,\n element: JQuery<HTMLElement>\n ) {\n super();\n this.element = element;\n\n // Some GL things expect this config to not change\n this.config = this._extendItemNode(config);\n this.type = config.type;\n this.contentItems = [];\n this.parent = parent;\n\n this.layoutManager = layoutManager;\n this._pendingEventPropagations = {};\n this._throttledEvents = ['stateChanged'];\n\n this.on(EventEmitter.ALL_EVENT, this._propagateEvent, this);\n\n if (config.content) {\n this._createContentItems(config);\n }\n }\n\n /**\n * Set the size of the component and its children, called recursively\n *\n * @abstract\n */\n abstract setSize(width?: number, height?: number): void;\n\n /**\n * Calls a method recursively downwards on the tree\n *\n * @param functionName the name of the function to be called\n * @param functionArguments optional arguments that are passed to every function\n * @param bottomUp Call methods from bottom to top, defaults to false\n * @param skipSelf Don't invoke the method on the class that calls it, defaults to false\n */\n callDownwards<N extends 'setSize' | '_$destroy' | '_$init' | '_$show'>(\n functionName: N,\n functionArguments = [] as Parameters<AbstractContentItem[N]>,\n bottomUp = false,\n skipSelf = false\n ) {\n if (bottomUp !== true && skipSelf !== true) {\n this[functionName].apply(this, functionArguments);\n }\n for (let i = 0; i < this.contentItems.length; i++) {\n this.contentItems[i].callDownwards(\n functionName,\n functionArguments,\n bottomUp\n );\n }\n if (bottomUp === true && skipSelf !== true) {\n this[functionName].apply(this, functionArguments);\n }\n }\n\n /**\n * Removes a child node (and its children) from the tree\n *\n * @param contentItem\n */\n removeChild(contentItem: AbstractContentItem, keepChild = false) {\n /*\n * Get the position of the item that's to be removed within all content items this node contains\n */\n const index = this.contentItems.indexOf(contentItem);\n\n /*\n * Make sure the content item to be removed is actually a child of this item\n */\n if (index === -1) {\n throw new Error(\"Can't remove child item. Unknown content item\");\n }\n\n /**\n * Call ._$destroy on the content item. This also calls ._$destroy on all its children\n */\n if (keepChild !== true) {\n this.contentItems[index]._$destroy();\n }\n\n /**\n * Remove the content item from this nodes array of children\n */\n this.contentItems.splice(index, 1);\n\n /**\n * Remove the item from the configuration\n */\n this.config.content?.splice(index, 1);\n\n /**\n * If this node still contains other content items, adjust their size\n */\n if (this.contentItems.length > 0) {\n this.callDownwards('setSize');\n\n /**\n * If this was the last content item, remove this node as well\n */\n } else if (this.type !== 'root' && this.config.isClosable) {\n this.parent?.removeChild(this);\n }\n }\n\n /**\n * Sets up the tree structure for the newly added child\n * The responsibility for the actual DOM manipulations lies\n * with the concrete item\n *\n * @param contentItem\n * @param index If omitted item will be appended\n */\n addChild(contentItem: AbstractContentItem | ItemConfig, index?: number) {\n contentItem = this.layoutManager._$normalizeContentItem(contentItem, this);\n if (index === undefined) {\n index = this.contentItems.length;\n }\n\n this.contentItems.splice(index, 0, contentItem);\n\n if (this.config.content === undefined) {\n this.config.content = [];\n }\n\n this.config.content.splice(index, 0, contentItem.config);\n contentItem.parent = this;\n\n if (\n contentItem.parent.isInitialised === true &&\n contentItem.isInitialised === false\n ) {\n contentItem._$init();\n }\n }\n\n /**\n * Replaces oldChild with newChild. This used to use jQuery.replaceWith... which for\n * some reason removes all event listeners, so isn't really an option.\n *\n * @param oldChild\n * @param newChild\n */\n replaceChild(\n oldChild: AbstractContentItem,\n newChild: AbstractContentItem,\n _$destroyOldChild = false\n ) {\n newChild = this.layoutManager._$normalizeContentItem(newChild);\n\n const index = this.contentItems.indexOf(oldChild);\n const parentNode = oldChild.element[0].parentNode;\n\n if (index === -1) {\n throw new Error(\"Can't replace child. oldChild is not child of this\");\n }\n\n parentNode?.replaceChild(newChild.element[0], oldChild.element[0]);\n\n /*\n * Optionally destroy the old content item\n */\n if (_$destroyOldChild === true) {\n oldChild.parent = null;\n oldChild._$destroy();\n }\n\n /*\n * Wire the new contentItem into the tree\n */\n this.contentItems[index] = newChild;\n newChild.parent = this;\n\n /*\n * Update tab reference\n */\n if (isStack(this)) {\n this.header.tabs[index].contentItem = newChild;\n }\n\n //TODO This doesn't update the config... refactor to leave item nodes untouched after creation\n if (\n newChild.parent.isInitialised === true &&\n newChild.isInitialised === false\n ) {\n newChild._$init();\n }\n\n this.callDownwards('setSize');\n }\n\n /**\n * Convenience method.\n * Shorthand for this.parent.removeChild( this )\n */\n remove() {\n this.parent?.removeChild(this);\n }\n\n /**\n * Removes the component from the layout and creates a new\n * browser window with the component and its children inside\n */\n popout() {\n var browserPopout = this.layoutManager.createPopout(this);\n this.emitBubblingEvent('stateChanged');\n return browserPopout;\n }\n\n /**\n * Maximises the Item or minimises it if it is already maximised\n */\n toggleMaximise(e?: Event) {\n e && e.preventDefault();\n if (this.isMaximised === true) {\n this.layoutManager._$minimiseItem(this);\n } else {\n this.layoutManager._$maximiseItem(this);\n }\n\n this.isMaximised = !this.isMaximised;\n this.emitBubblingEvent('stateChanged');\n }\n\n /**\n * Selects the item if it is not already selected\n */\n select() {\n if (this.layoutManager.selectedItem !== this) {\n this.layoutManager.selectItem(this, true);\n this.element.addClass('lm_selected');\n }\n }\n\n /**\n * De-selects the item if it is selected\n */\n deselect() {\n if (this.layoutManager.selectedItem === this) {\n this.layoutManager.selectedItem = null;\n this.element.removeClass('lm_selected');\n }\n }\n\n /**\n * Set this component's title\n * @param title\n */\n setTitle(title: string) {\n this.config.title = title;\n this.emit('titleChanged', title);\n this.emitBubblingEvent('stateChanged');\n }\n\n /**\n * Checks whether a provided id is present\n * @param id\n * @returns isPresent\n */\n hasId(id: string) {\n if (!this.config.id) {\n return false;\n } else if (typeof this.config.id === 'string') {\n return this.config.id === id;\n } else if (this.config.id instanceof Array) {\n return this.config.id.indexOf(id) !== -1;\n }\n }\n\n /**\n * Adds an id. Adds it as a string if the component doesn't\n * have an id yet or creates/uses an array\n * @param id\n */\n addId(id: string) {\n if (this.hasId(id)) {\n return;\n }\n\n if (!this.config.id) {\n this.config.id = id;\n } else if (typeof this.config.id === 'string') {\n this.config.id = [this.config.id, id];\n } else if (this.config.id instanceof Array) {\n this.config.id.push(id);\n }\n }\n\n /**\n * Removes an existing id. Throws an error\n * if the id is not present\n * @param id\n */\n removeId(id: string) {\n if (!this.hasId(id)) {\n throw new Error('Id not found');\n }\n\n if (typeof this.config.id === 'string') {\n delete this.config.id;\n } else if (this.config.id instanceof Array) {\n var index = this.config.id.indexOf(id);\n this.config.id.splice(index, 1);\n }\n }\n\n /****************************************\n * SELECTOR\n ****************************************/\n getItemsByFilter(filter: (item: AbstractContentItem) => boolean) {\n const result: AbstractContentItem[] = [];\n const next = function (contentItem: AbstractContentItem) {\n for (let i = 0; i < contentItem.contentItems.length; i++) {\n if (filter(contentItem.contentItems[i]) === true) {\n result.push(contentItem.contentItems[i]);\n }\n\n next(contentItem.contentItems[i]);\n }\n };\n\n next(this);\n return result;\n }\n\n getItemsById(id: string) {\n return this.getItemsByFilter(function (item) {\n if (item.config.id instanceof Array) {\n return item.config.id.indexOf(id) !== -1;\n } else {\n return item.config.id === id;\n }\n });\n }\n\n getItemsByType(type: string) {\n return this._$getItemsByProperty('type', type);\n }\n\n getComponentsByName(componentName: string) {\n const components = this._$getItemsByProperty(\n 'componentName',\n componentName\n ) as Component[];\n const instances: unknown[] = [];\n\n for (let i = 0; i < components.length; i++) {\n instances.push(components[i].instance);\n }\n\n return instances;\n }\n\n /****************************************\n * PACKAGE PRIVATE\n ****************************************/\n _$getItemsByProperty(key: keyof AbstractContentItem, value: string) {\n return this.getItemsByFilter(function (item) {\n return item[key] === value;\n });\n }\n\n _$setParent(parent: AbstractContentItem | null) {\n this.parent = parent;\n }\n\n _$highlightDropZone(x: number, y: number, area: ItemArea) {\n this.layoutManager.dropTargetIndicator?.highlightArea(area);\n }\n\n _$onDrop(contentItem: AbstractContentItem, area: ItemArea) {\n this.addChild(contentItem);\n }\n\n _$hide() {\n this._callOnActiveComponents('hide');\n this.element.hide();\n this.layoutManager.updateSize();\n }\n\n _$show() {\n this._callOnActiveComponents('show');\n this.element.show();\n this.layoutManager.updateSize();\n }\n\n _callOnActiveComponents(methodName: 'hide' | 'show') {\n const stacks = this.getItemsByType('stack') as unknown as Stack[];\n let activeContentItem: AbstractContentItem | null = null;\n\n for (let i = 0; i < stacks.length; i++) {\n activeContentItem = stacks[i].getActiveContentItem();\n\n if (activeContentItem && isComponent(activeContentItem)) {\n activeContentItem.container[methodName]();\n }\n }\n }\n\n /**\n * Destroys this item ands its children\n */\n _$destroy() {\n this.emitBubblingEvent('beforeItemDestroyed');\n this.callDownwards('_$destroy', [], true, true);\n this.element.remove();\n this.emitBubblingEvent('itemDestroyed');\n }\n\n /**\n * Returns the area the component currently occupies in the format\n *\n * {\n *\t\tx1: int\n *\t\tx2: int\n *\t\ty1: int\n *\t\ty2: int\n *\t\tcontentItem: contentItem\n * }\n */\n _$getArea(element?: JQuery<HTMLElement>): ItemArea<this> | null {\n element = element || this.element;\n\n const offset = element.offset() ?? { left: 0, top: 0 };\n const width = element.width() ?? 0;\n const height = element.height() ?? 0;\n\n return {\n x1: offset.left,\n y1: offset.top,\n x2: offset.left + width,\n y2: offset.top + height,\n surface: width * height,\n contentItem: this,\n side: '',\n };\n }\n\n /**\n * The tree of content items is created in two steps: First all content items are instantiated,\n * then init is called recursively from top to bottem. This is the basic init function,\n * it can be used, extended or overwritten by the content items\n *\n * Its behaviour depends on the content item\n */\n _$init() {\n this.setSize();\n\n for (let i = 0; i < this.contentItems.length; i++) {\n this.childElementContainer?.append(this.contentItems[i].element);\n }\n\n this.isInitialised = true;\n this.emitBubblingEvent('itemCreated');\n this.emitBubblingEvent(this.type + 'Created');\n }\n\n /**\n * Emit an event that bubbles up the item tree.\n *\n * @param name The name of the event\n */\n emitBubblingEvent(name: string) {\n var event = new BubblingEvent(name, this);\n this.emit(name, event);\n }\n\n /**\n * Private method, creates all content items for this node at initialisation time\n * PLEASE NOTE, please see addChild for adding contentItems add runtime\n * @param {configuration item node} config\n */\n _createContentItems(config: ItemConfig) {\n var oContentItem;\n\n if (!(config.content instanceof Array)) {\n throw new ConfigurationError('content must be an Array', config);\n }\n\n for (let i = 0; i < config.content.length; i++) {\n oContentItem = this.layoutManager.createContentItem(\n config.content[i],\n this\n );\n this.contentItems.push(oContentItem);\n }\n }\n\n /**\n * Extends an item configuration node with default settings\n * @param config\n * @returns extended config\n */\n _extendItemNode<TConfig extends ItemConfig>(config: TConfig) {\n for (let [key, value] of Object.entries(itemDefaultConfig)) {\n // This just appeases TS\n const k = key as keyof TConfig;\n if (config[k] === undefined) {\n config[k] = value;\n }\n }\n\n return config;\n }\n\n /**\n * Called for every event on the item tree. Decides whether the event is a bubbling\n * event and propagates it to its parent\n *\n * @param name the name of the event\n * @param event\n */\n _propagateEvent(name: string, event: BubblingEvent) {\n if (\n event instanceof BubblingEvent &&\n event.isPropagationStopped === false &&\n this.isInitialised === true\n ) {\n /**\n * In some cases (e.g. if an element is created from a DragSource) it\n * doesn't have a parent and is not below root. If that's the case\n * propagate the bubbling event from the top level of the substree directly\n * to the layoutManager\n */\n if (this.isRoot === false && this.parent) {\n this.parent.emit.apply(this.parent, [name, event]);\n } else {\n this._scheduleEventPropagationToLayoutManager(name, event);\n }\n }\n }\n\n /**\n * All raw events bubble up to the root element. Some events that\n * are propagated to - and emitted by - the layoutManager however are\n * only string-based, batched and sanitized to make them more usable\n *\n * @param name the name of the event\n */\n _scheduleEventPropagationToLayoutManager(name: string, event: BubblingEvent) {\n if (this._throttledEvents.indexOf(name) === -1) {\n this.layoutManager.emit(name, event.origin);\n } else {\n if (this._pendingEventPropagations[name] !== true) {\n this._pendingEventPropagations[name] = true;\n animFrame(this._propagateEventToLayoutManager.bind(this, name, event));\n }\n }\n }\n\n /**\n * Callback for events scheduled by _scheduleEventPropagationToLayoutManager\n *\n * @param name the name of the event\n */\n _propagateEventToLayoutManager(name: string, event: BubblingEvent) {\n this._pendingEventPropagations[name] = false;\n this.layoutManager.emit(name, event);\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AbstractContentItem.js","names":["animFrame","BubblingEvent","EventEmitter","ConfigurationError","itemDefaultConfig","isStack","item","isComponent","isRoot","AbstractContentItem","constructor","layoutManager","config","parent","element","_defineProperty","_extendItemNode","type","contentItems","_pendingEventPropagations","_throttledEvents","on","ALL_EVENT","_propagateEvent","content","_createContentItems","callDownwards","functionName","functionArguments","arguments","length","undefined","bottomUp","skipSelf","apply","i","removeChild","contentItem","_this$config$content","keepChild","index","indexOf","Error","_$destroy","splice","isClosable","_this$parent","addChild","_$normalizeContentItem","isInitialised","_$init","replaceChild","oldChild","newChild","_$destroyOldChild","parentNode","header","tabs","remove","_this$parent2","popout","browserPopout","createPopout","emitBubblingEvent","toggleMaximise","e","preventDefault","isMaximised","_$minimiseItem","_$maximiseItem","select","selectedItem","selectItem","addClass","deselect","removeClass","setTitle","title","emit","hasId","id","Array","addId","push","removeId","getItemsByFilter","filter","result","next","getItemsById","getItemsByType","_$getItemsByProperty","getComponentsByName","componentName","components","instances","instance","key","value","_$setParent","_$highlightDropZone","x","y","area","_this$layoutManager$d","dropTargetIndicator","highlightArea","_$onDrop","_$hide","_callOnActiveComponents","hide","updateSize","_$show","show","methodName","stacks","activeContentItem","getActiveContentItem","container","_$getArea","_element$offset","_element$width","_element$height","offset","left","top","width","height","x1","y1","x2","y2","surface","side","setSize","_this$childElementCon","childElementContainer","append","name","event","oContentItem","createContentItem","Object","entries","k","isPropagationStopped","_scheduleEventPropagationToLayoutManager","origin","_propagateEventToLayoutManager","bind"],"sources":["../../src/items/AbstractContentItem.ts"],"sourcesContent":["import { animFrame, BubblingEvent, EventEmitter } from '../utils';\nimport { ConfigurationError } from '../errors';\nimport { itemDefaultConfig } from '../config';\nimport type { ItemConfig, ItemConfigType } from '../config';\nimport type LayoutManager from '../LayoutManager';\nimport type Tab from '../controls/Tab';\nimport type Stack from './Stack';\nimport type Component from './Component';\nimport type Root from './Root';\n\nexport function isStack(item: AbstractContentItem): item is Stack {\n return item.isStack;\n}\n\nexport function isComponent(item: AbstractContentItem): item is Component {\n return item.isComponent;\n}\n\nexport function isRoot(item: AbstractContentItem): item is Root {\n return item.isRoot;\n}\n\nexport type ItemArea<C = AbstractContentItem> = {\n x1: number;\n x2: number;\n y1: number;\n y2: number;\n surface: number;\n side: 'left' | 'right' | 'top' | 'bottom' | '';\n contentItem: C;\n};\n\ntype AbstractItemConfig =\n | ItemConfig\n | {\n type: ItemConfig['type'];\n content: ItemConfigType[];\n };\n\n/**\n * This is the baseclass that all content items inherit from.\n * Most methods provide a subset of what the sub-classes do.\n *\n * It also provides a number of functions for tree traversal\n *\n * @param {lm.LayoutManager} layoutManager\n * @param {item node configuration} config\n * @param {lm.item} parent\n *\n * @event stateChanged\n * @event beforeItemDestroyed\n * @event itemDestroyed\n * @event itemCreated\n * @event componentCreated\n * @event rowCreated\n * @event columnCreated\n * @event stackCreated\n *\n * @constructor\n */\nexport default abstract class AbstractContentItem extends EventEmitter {\n config: ItemConfig;\n type: string;\n contentItems: AbstractContentItem[];\n parent: AbstractContentItem | null;\n layoutManager: LayoutManager;\n element: JQuery<HTMLElement>;\n childElementContainer?: JQuery<HTMLElement>;\n componentName?: string;\n\n isInitialised = false;\n isMaximised = false;\n isRoot = false;\n isRow = false;\n isColumn = false;\n isStack = false;\n isComponent = false;\n\n tab?: Tab;\n\n private _pendingEventPropagations: Record<string, boolean>;\n private _throttledEvents: string[];\n\n constructor(\n layoutManager: LayoutManager,\n config: AbstractItemConfig,\n parent: AbstractContentItem | null,\n element: JQuery<HTMLElement>\n ) {\n super();\n this.element = element;\n\n // Some GL things expect this config to not change\n this.config = this._extendItemNode(config);\n this.type = config.type;\n this.contentItems = [];\n this.parent = parent;\n\n this.layoutManager = layoutManager;\n this._pendingEventPropagations = {};\n this._throttledEvents = ['stateChanged'];\n\n this.on(EventEmitter.ALL_EVENT, this._propagateEvent, this);\n\n if (config.content) {\n this._createContentItems(config);\n }\n }\n\n /**\n * Set the size of the component and its children, called recursively\n *\n * @abstract\n */\n abstract setSize(width?: number, height?: number): void;\n\n /**\n * Calls a method recursively downwards on the tree\n *\n * @param functionName the name of the function to be called\n * @param functionArguments optional arguments that are passed to every function\n * @param bottomUp Call methods from bottom to top, defaults to false\n * @param skipSelf Don't invoke the method on the class that calls it, defaults to false\n */\n callDownwards<N extends 'setSize' | '_$destroy' | '_$init' | '_$show'>(\n functionName: N,\n functionArguments = [] as Parameters<AbstractContentItem[N]>,\n bottomUp = false,\n skipSelf = false\n ) {\n if (bottomUp !== true && skipSelf !== true) {\n this[functionName].apply(this, functionArguments);\n }\n for (let i = 0; i < this.contentItems.length; i++) {\n this.contentItems[i].callDownwards(\n functionName,\n functionArguments,\n bottomUp\n );\n }\n if (bottomUp === true && skipSelf !== true) {\n this[functionName].apply(this, functionArguments);\n }\n }\n\n /**\n * Removes a child node (and its children) from the tree\n *\n * @param contentItem\n */\n removeChild(contentItem: AbstractContentItem, keepChild = false) {\n /*\n * Get the position of the item that's to be removed within all content items this node contains\n */\n const index = this.contentItems.indexOf(contentItem);\n\n /*\n * Make sure the content item to be removed is actually a child of this item\n */\n if (index === -1) {\n throw new Error(\"Can't remove child item. Unknown content item\");\n }\n\n /**\n * Call ._$destroy on the content item. This also calls ._$destroy on all its children\n */\n if (keepChild !== true) {\n this.contentItems[index]._$destroy();\n }\n\n /**\n * Remove the content item from this nodes array of children\n */\n this.contentItems.splice(index, 1);\n\n /**\n * Remove the item from the configuration\n */\n this.config.content?.splice(index, 1);\n\n /**\n * If this node still contains other content items, adjust their size\n */\n if (this.contentItems.length > 0) {\n this.callDownwards('setSize');\n\n /**\n * If this was the last content item, remove this node as well\n */\n } else if (this.type !== 'root' && this.config.isClosable) {\n this.parent?.removeChild(this);\n }\n }\n\n /**\n * Sets up the tree structure for the newly added child\n * The responsibility for the actual DOM manipulations lies\n * with the concrete item\n *\n * @param contentItem\n * @param index If omitted item will be appended\n */\n addChild(\n contentItem:\n | AbstractContentItem\n | ItemConfigType\n | { type: ItemConfig['type'] },\n index?: number\n ) {\n contentItem = this.layoutManager._$normalizeContentItem(contentItem, this);\n if (index === undefined) {\n index = this.contentItems.length;\n }\n\n this.contentItems.splice(index, 0, contentItem);\n\n if (this.config.content === undefined) {\n this.config.content = [];\n }\n\n this.config.content.splice(index, 0, contentItem.config);\n contentItem.parent = this;\n\n if (\n contentItem.parent.isInitialised === true &&\n contentItem.isInitialised === false\n ) {\n contentItem._$init();\n }\n }\n\n /**\n * Replaces oldChild with newChild. This used to use jQuery.replaceWith... which for\n * some reason removes all event listeners, so isn't really an option.\n *\n * @param oldChild\n * @param newChild\n */\n replaceChild(\n oldChild: AbstractContentItem,\n newChild: AbstractContentItem,\n _$destroyOldChild = false\n ) {\n newChild = this.layoutManager._$normalizeContentItem(newChild);\n\n const index = this.contentItems.indexOf(oldChild);\n const parentNode = oldChild.element[0].parentNode;\n\n if (index === -1) {\n throw new Error(\"Can't replace child. oldChild is not child of this\");\n }\n\n parentNode?.replaceChild(newChild.element[0], oldChild.element[0]);\n\n /*\n * Optionally destroy the old content item\n */\n if (_$destroyOldChild === true) {\n oldChild.parent = null;\n oldChild._$destroy();\n }\n\n /*\n * Wire the new contentItem into the tree\n */\n this.contentItems[index] = newChild;\n newChild.parent = this;\n\n /*\n * Update tab reference\n */\n if (isStack(this)) {\n this.header.tabs[index].contentItem = newChild;\n }\n\n //TODO This doesn't update the config... refactor to leave item nodes untouched after creation\n if (\n newChild.parent.isInitialised === true &&\n newChild.isInitialised === false\n ) {\n newChild._$init();\n }\n\n this.callDownwards('setSize');\n }\n\n /**\n * Convenience method.\n * Shorthand for this.parent.removeChild( this )\n */\n remove() {\n this.parent?.removeChild(this);\n }\n\n /**\n * Removes the component from the layout and creates a new\n * browser window with the component and its children inside\n */\n popout() {\n var browserPopout = this.layoutManager.createPopout(this);\n this.emitBubblingEvent('stateChanged');\n return browserPopout;\n }\n\n /**\n * Maximises the Item or minimises it if it is already maximised\n */\n toggleMaximise(e?: Event) {\n e && e.preventDefault();\n if (this.isMaximised === true) {\n this.layoutManager._$minimiseItem(this);\n } else {\n this.layoutManager._$maximiseItem(this);\n }\n\n this.isMaximised = !this.isMaximised;\n this.emitBubblingEvent('stateChanged');\n }\n\n /**\n * Selects the item if it is not already selected\n */\n select() {\n if (this.layoutManager.selectedItem !== this) {\n this.layoutManager.selectItem(this, true);\n this.element.addClass('lm_selected');\n }\n }\n\n /**\n * De-selects the item if it is selected\n */\n deselect() {\n if (this.layoutManager.selectedItem === this) {\n this.layoutManager.selectedItem = null;\n this.element.removeClass('lm_selected');\n }\n }\n\n /**\n * Set this component's title\n * @param title\n */\n setTitle(title: string) {\n this.config.title = title;\n this.emit('titleChanged', title);\n this.emitBubblingEvent('stateChanged');\n }\n\n /**\n * Checks whether a provided id is present\n * @param id\n * @returns isPresent\n */\n hasId(id: string) {\n if (!this.config.id) {\n return false;\n } else if (typeof this.config.id === 'string') {\n return this.config.id === id;\n } else if (this.config.id instanceof Array) {\n return this.config.id.indexOf(id) !== -1;\n }\n }\n\n /**\n * Adds an id. Adds it as a string if the component doesn't\n * have an id yet or creates/uses an array\n * @param id\n */\n addId(id: string) {\n if (this.hasId(id)) {\n return;\n }\n\n if (!this.config.id) {\n this.config.id = id;\n } else if (typeof this.config.id === 'string') {\n this.config.id = [this.config.id, id];\n } else if (this.config.id instanceof Array) {\n this.config.id.push(id);\n }\n }\n\n /**\n * Removes an existing id. Throws an error\n * if the id is not present\n * @param id\n */\n removeId(id: string) {\n if (!this.hasId(id)) {\n throw new Error('Id not found');\n }\n\n if (typeof this.config.id === 'string') {\n delete this.config.id;\n } else if (this.config.id instanceof Array) {\n var index = this.config.id.indexOf(id);\n this.config.id.splice(index, 1);\n }\n }\n\n /****************************************\n * SELECTOR\n ****************************************/\n getItemsByFilter(filter: (item: AbstractContentItem) => boolean) {\n const result: AbstractContentItem[] = [];\n const next = function (contentItem: AbstractContentItem) {\n for (let i = 0; i < contentItem.contentItems.length; i++) {\n if (filter(contentItem.contentItems[i]) === true) {\n result.push(contentItem.contentItems[i]);\n }\n\n next(contentItem.contentItems[i]);\n }\n };\n\n next(this);\n return result;\n }\n\n getItemsById(id: string) {\n return this.getItemsByFilter(function (item) {\n if (item.config.id instanceof Array) {\n return item.config.id.indexOf(id) !== -1;\n } else {\n return item.config.id === id;\n }\n });\n }\n\n getItemsByType(type: string) {\n return this._$getItemsByProperty('type', type);\n }\n\n getComponentsByName(componentName: string) {\n const components = this._$getItemsByProperty(\n 'componentName',\n componentName\n ) as Component[];\n const instances: unknown[] = [];\n\n for (let i = 0; i < components.length; i++) {\n instances.push(components[i].instance);\n }\n\n return instances;\n }\n\n /****************************************\n * PACKAGE PRIVATE\n ****************************************/\n _$getItemsByProperty(key: keyof AbstractContentItem, value: string) {\n return this.getItemsByFilter(function (item) {\n return item[key] === value;\n });\n }\n\n _$setParent(parent: AbstractContentItem | null) {\n this.parent = parent;\n }\n\n _$highlightDropZone(x: number, y: number, area: ItemArea) {\n this.layoutManager.dropTargetIndicator?.highlightArea(area);\n }\n\n _$onDrop(contentItem: AbstractContentItem, area: ItemArea) {\n this.addChild(contentItem);\n }\n\n _$hide() {\n this._callOnActiveComponents('hide');\n this.element.hide();\n this.layoutManager.updateSize();\n }\n\n _$show() {\n this._callOnActiveComponents('show');\n this.element.show();\n this.layoutManager.updateSize();\n }\n\n _callOnActiveComponents(methodName: 'hide' | 'show') {\n const stacks = this.getItemsByType('stack') as unknown as Stack[];\n let activeContentItem: AbstractContentItem | null = null;\n\n for (let i = 0; i < stacks.length; i++) {\n activeContentItem = stacks[i].getActiveContentItem();\n\n if (activeContentItem && isComponent(activeContentItem)) {\n activeContentItem.container[methodName]();\n }\n }\n }\n\n /**\n * Destroys this item ands its children\n */\n _$destroy() {\n this.emitBubblingEvent('beforeItemDestroyed');\n this.callDownwards('_$destroy', [], true, true);\n this.element.remove();\n this.emitBubblingEvent('itemDestroyed');\n }\n\n /**\n * Returns the area the component currently occupies in the format\n *\n * {\n *\t\tx1: int\n *\t\tx2: int\n *\t\ty1: int\n *\t\ty2: int\n *\t\tcontentItem: contentItem\n * }\n */\n _$getArea(element?: JQuery<HTMLElement>): ItemArea<this> | null {\n element = element || this.element;\n\n const offset = element.offset() ?? { left: 0, top: 0 };\n const width = element.width() ?? 0;\n const height = element.height() ?? 0;\n\n return {\n x1: offset.left,\n y1: offset.top,\n x2: offset.left + width,\n y2: offset.top + height,\n surface: width * height,\n contentItem: this,\n side: '',\n };\n }\n\n /**\n * The tree of content items is created in two steps: First all content items are instantiated,\n * then init is called recursively from top to bottem. This is the basic init function,\n * it can be used, extended or overwritten by the content items\n *\n * Its behaviour depends on the content item\n */\n _$init() {\n this.setSize();\n\n for (let i = 0; i < this.contentItems.length; i++) {\n this.childElementContainer?.append(this.contentItems[i].element);\n }\n\n this.isInitialised = true;\n this.emitBubblingEvent('itemCreated');\n this.emitBubblingEvent(this.type + 'Created');\n }\n\n /**\n * Emit an event that bubbles up the item tree.\n *\n * @param name The name of the event\n */\n emitBubblingEvent(name: string) {\n var event = new BubblingEvent(name, this);\n this.emit(name, event);\n }\n\n /**\n * Private method, creates all content items for this node at initialisation time\n * PLEASE NOTE, please see addChild for adding contentItems add runtime\n * @param {configuration item node} config\n */\n _createContentItems(config: AbstractItemConfig) {\n var oContentItem;\n\n if (!(config.content instanceof Array)) {\n throw new ConfigurationError('content must be an Array', config);\n }\n\n for (let i = 0; i < config.content.length; i++) {\n oContentItem = this.layoutManager.createContentItem(\n config.content[i],\n this\n );\n this.contentItems.push(oContentItem);\n }\n }\n\n /**\n * Extends an item configuration node with default settings\n * @param config\n * @returns extended config\n */\n _extendItemNode(config: AbstractItemConfig) {\n for (let [key, value] of Object.entries(itemDefaultConfig)) {\n // This just appeases TS\n const k = key as keyof AbstractItemConfig;\n if (config[k] === undefined) {\n config[k] = value;\n }\n }\n\n return config;\n }\n\n /**\n * Called for every event on the item tree. Decides whether the event is a bubbling\n * event and propagates it to its parent\n *\n * @param name the name of the event\n * @param event\n */\n _propagateEvent(name: string, event: BubblingEvent) {\n if (\n event instanceof BubblingEvent &&\n event.isPropagationStopped === false &&\n this.isInitialised === true\n ) {\n /**\n * In some cases (e.g. if an element is created from a DragSource) it\n * doesn't have a parent and is not below root. If that's the case\n * propagate the bubbling event from the top level of the substree directly\n * to the layoutManager\n */\n if (this.isRoot === false && this.parent) {\n this.parent.emit.apply(this.parent, [name, event]);\n } else {\n this._scheduleEventPropagationToLayoutManager(name, event);\n }\n }\n }\n\n /**\n * All raw events bubble up to the root element. Some events that\n * are propagated to - and emitted by - the layoutManager however are\n * only string-based, batched and sanitized to make them more usable\n *\n * @param name the name of the event\n */\n _scheduleEventPropagationToLayoutManager(name: string, event: BubblingEvent) {\n if (this._throttledEvents.indexOf(name) === -1) {\n this.layoutManager.emit(name, event.origin);\n } else {\n if (this._pendingEventPropagations[name] !== true) {\n this._pendingEventPropagations[name] = true;\n animFrame(this._propagateEventToLayoutManager.bind(this, name, event));\n }\n }\n }\n\n /**\n * Callback for events scheduled by _scheduleEventPropagationToLayoutManager\n *\n * @param name the name of the event\n */\n _propagateEventToLayoutManager(name: string, event: BubblingEvent) {\n this._pendingEventPropagations[name] = false;\n this.layoutManager.emit(name, event);\n }\n}\n"],"mappings":";;;SAASA,SAAS,EAAEC,aAAa,EAAEC,YAAY;AAAA,SACtCC,kBAAkB;AAAA,SAClBC,iBAAiB;AAQ1B,OAAO,SAASC,OAAOA,CAACC,IAAyB,EAAiB;EAChE,OAAOA,IAAI,CAACD,OAAO;AACrB;AAEA,OAAO,SAASE,WAAWA,CAACD,IAAyB,EAAqB;EACxE,OAAOA,IAAI,CAACC,WAAW;AACzB;AAEA,OAAO,SAASC,MAAMA,CAACF,IAAyB,EAAgB;EAC9D,OAAOA,IAAI,CAACE,MAAM;AACpB;AAmBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAeC,mBAAmB,SAASP,YAAY,CAAC;EAuBrEQ,WAAWA,CACTC,aAA4B,EAC5BC,MAA0B,EAC1BC,MAAkC,EAClCC,OAA4B,EAC5B;IACA,KAAK,CAAC,CAAC;IAACC,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA,wBAnBM,KAAK;IAAAA,eAAA,sBACP,KAAK;IAAAA,eAAA,iBACV,KAAK;IAAAA,eAAA,gBACN,KAAK;IAAAA,eAAA,mBACF,KAAK;IAAAA,eAAA,kBACN,KAAK;IAAAA,eAAA,sBACD,KAAK;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAcjB,IAAI,CAACD,OAAO,GAAGA,OAAO;;IAEtB;IACA,IAAI,CAACF,MAAM,GAAG,IAAI,CAACI,eAAe,CAACJ,MAAM,CAAC;IAC1C,IAAI,CAACK,IAAI,GAAGL,MAAM,CAACK,IAAI;IACvB,IAAI,CAACC,YAAY,GAAG,EAAE;IACtB,IAAI,CAACL,MAAM,GAAGA,MAAM;IAEpB,IAAI,CAACF,aAAa,GAAGA,aAAa;IAClC,IAAI,CAACQ,yBAAyB,GAAG,CAAC,CAAC;IACnC,IAAI,CAACC,gBAAgB,GAAG,CAAC,cAAc,CAAC;IAExC,IAAI,CAACC,EAAE,CAACnB,YAAY,CAACoB,SAAS,EAAE,IAAI,CAACC,eAAe,EAAE,IAAI,CAAC;IAE3D,IAAIX,MAAM,CAACY,OAAO,EAAE;MAClB,IAAI,CAACC,mBAAmB,CAACb,MAAM,CAAC;IAClC;EACF;;EAEA;AACF;AACA;AACA;AACA;;EAGE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACEc,aAAaA,CACXC,YAAe,EAIf;IAAA,IAHAC,iBAAiB,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,EAAE;IAAA,IACtBG,QAAQ,GAAAH,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,KAAK;IAAA,IAChBI,QAAQ,GAAAJ,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,KAAK;IAEhB,IAAIG,QAAQ,KAAK,IAAI,IAAIC,QAAQ,KAAK,IAAI,EAAE;MAC1C,IAAI,CAACN,YAAY,CAAC,CAACO,KAAK,CAAC,IAAI,EAAEN,iBAAiB,CAAC;IACnD;IACA,KAAK,IAAIO,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,IAAI,CAACjB,YAAY,CAACY,MAAM,EAAEK,CAAC,EAAE,EAAE;MACjD,IAAI,CAACjB,YAAY,CAACiB,CAAC,CAAC,CAACT,aAAa,CAChCC,YAAY,EACZC,iBAAiB,EACjBI,QACF,CAAC;IACH;IACA,IAAIA,QAAQ,KAAK,IAAI,IAAIC,QAAQ,KAAK,IAAI,EAAE;MAC1C,IAAI,CAACN,YAAY,CAAC,CAACO,KAAK,CAAC,IAAI,EAAEN,iBAAiB,CAAC;IACnD;EACF;;EAEA;AACF;AACA;AACA;AACA;EACEQ,WAAWA,CAACC,WAAgC,EAAqB;IAAA,IAAAC,oBAAA;IAAA,IAAnBC,SAAS,GAAAV,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,KAAK;IAC7D;AACJ;AACA;IACI,IAAMW,KAAK,GAAG,IAAI,CAACtB,YAAY,CAACuB,OAAO,CAACJ,WAAW,CAAC;;IAEpD;AACJ;AACA;IACI,IAAIG,KAAK,KAAK,CAAC,CAAC,EAAE;MAChB,MAAM,IAAIE,KAAK,CAAC,+CAA+C,CAAC;IAClE;;IAEA;AACJ;AACA;IACI,IAAIH,SAAS,KAAK,IAAI,EAAE;MACtB,IAAI,CAACrB,YAAY,CAACsB,KAAK,CAAC,CAACG,SAAS,CAAC,CAAC;IACtC;;IAEA;AACJ;AACA;IACI,IAAI,CAACzB,YAAY,CAAC0B,MAAM,CAACJ,KAAK,EAAE,CAAC,CAAC;;IAElC;AACJ;AACA;IACI,CAAAF,oBAAA,OAAI,CAAC1B,MAAM,CAACY,OAAO,cAAAc,oBAAA,uBAAnBA,oBAAA,CAAqBM,MAAM,CAACJ,KAAK,EAAE,CAAC,CAAC;;IAErC;AACJ;AACA;IACI,IAAI,IAAI,CAACtB,YAAY,CAACY,MAAM,GAAG,CAAC,EAAE;MAChC,IAAI,CAACJ,aAAa,CAAC,SAAS,CAAC;;MAE7B;AACN;AACA;IACI,CAAC,MAAM,IAAI,IAAI,CAACT,IAAI,KAAK,MAAM,IAAI,IAAI,CAACL,MAAM,CAACiC,UAAU,EAAE;MAAA,IAAAC,YAAA;MACzD,CAAAA,YAAA,OAAI,CAACjC,MAAM,cAAAiC,YAAA,uBAAXA,YAAA,CAAaV,WAAW,CAAC,IAAI,CAAC;IAChC;EACF;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACEW,QAAQA,CACNV,WAGgC,EAChCG,KAAc,EACd;IACAH,WAAW,GAAG,IAAI,CAAC1B,aAAa,CAACqC,sBAAsB,CAACX,WAAW,EAAE,IAAI,CAAC;IAC1E,IAAIG,KAAK,KAAKT,SAAS,EAAE;MACvBS,KAAK,GAAG,IAAI,CAACtB,YAAY,CAACY,MAAM;IAClC;IAEA,IAAI,CAACZ,YAAY,CAAC0B,MAAM,CAACJ,KAAK,EAAE,CAAC,EAAEH,WAAW,CAAC;IAE/C,IAAI,IAAI,CAACzB,MAAM,CAACY,OAAO,KAAKO,SAAS,EAAE;MACrC,IAAI,CAACnB,MAAM,CAACY,OAAO,GAAG,EAAE;IAC1B;IAEA,IAAI,CAACZ,MAAM,CAACY,OAAO,CAACoB,MAAM,CAACJ,KAAK,EAAE,CAAC,EAAEH,WAAW,CAACzB,MAAM,CAAC;IACxDyB,WAAW,CAACxB,MAAM,GAAG,IAAI;IAEzB,IACEwB,WAAW,CAACxB,MAAM,CAACoC,aAAa,KAAK,IAAI,IACzCZ,WAAW,CAACY,aAAa,KAAK,KAAK,EACnC;MACAZ,WAAW,CAACa,MAAM,CAAC,CAAC;IACtB;EACF;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACEC,YAAYA,CACVC,QAA6B,EAC7BC,QAA6B,EAE7B;IAAA,IADAC,iBAAiB,GAAAzB,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,KAAK;IAEzBwB,QAAQ,GAAG,IAAI,CAAC1C,aAAa,CAACqC,sBAAsB,CAACK,QAAQ,CAAC;IAE9D,IAAMb,KAAK,GAAG,IAAI,CAACtB,YAAY,CAACuB,OAAO,CAACW,QAAQ,CAAC;IACjD,IAAMG,UAAU,GAAGH,QAAQ,CAACtC,OAAO,CAAC,CAAC,CAAC,CAACyC,UAAU;IAEjD,IAAIf,KAAK,KAAK,CAAC,CAAC,EAAE;MAChB,MAAM,IAAIE,KAAK,CAAC,oDAAoD,CAAC;IACvE;IAEAa,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAEJ,YAAY,CAACE,QAAQ,CAACvC,OAAO,CAAC,CAAC,CAAC,EAAEsC,QAAQ,CAACtC,OAAO,CAAC,CAAC,CAAC,CAAC;;IAElE;AACJ;AACA;IACI,IAAIwC,iBAAiB,KAAK,IAAI,EAAE;MAC9BF,QAAQ,CAACvC,MAAM,GAAG,IAAI;MACtBuC,QAAQ,CAACT,SAAS,CAAC,CAAC;IACtB;;IAEA;AACJ;AACA;IACI,IAAI,CAACzB,YAAY,CAACsB,KAAK,CAAC,GAAGa,QAAQ;IACnCA,QAAQ,CAACxC,MAAM,GAAG,IAAI;;IAEtB;AACJ;AACA;IACI,IAAIR,OAAO,CAAC,IAAI,CAAC,EAAE;MACjB,IAAI,CAACmD,MAAM,CAACC,IAAI,CAACjB,KAAK,CAAC,CAACH,WAAW,GAAGgB,QAAQ;IAChD;;IAEA;IACA,IACEA,QAAQ,CAACxC,MAAM,CAACoC,aAAa,KAAK,IAAI,IACtCI,QAAQ,CAACJ,aAAa,KAAK,KAAK,EAChC;MACAI,QAAQ,CAACH,MAAM,CAAC,CAAC;IACnB;IAEA,IAAI,CAACxB,aAAa,CAAC,SAAS,CAAC;EAC/B;;EAEA;AACF;AACA;AACA;EACEgC,MAAMA,CAAA,EAAG;IAAA,IAAAC,aAAA;IACP,CAAAA,aAAA,OAAI,CAAC9C,MAAM,cAAA8C,aAAA,uBAAXA,aAAA,CAAavB,WAAW,CAAC,IAAI,CAAC;EAChC;;EAEA;AACF;AACA;AACA;EACEwB,MAAMA,CAAA,EAAG;IACP,IAAIC,aAAa,GAAG,IAAI,CAAClD,aAAa,CAACmD,YAAY,CAAC,IAAI,CAAC;IACzD,IAAI,CAACC,iBAAiB,CAAC,cAAc,CAAC;IACtC,OAAOF,aAAa;EACtB;;EAEA;AACF;AACA;EACEG,cAAcA,CAACC,CAAS,EAAE;IACxBA,CAAC,IAAIA,CAAC,CAACC,cAAc,CAAC,CAAC;IACvB,IAAI,IAAI,CAACC,WAAW,KAAK,IAAI,EAAE;MAC7B,IAAI,CAACxD,aAAa,CAACyD,cAAc,CAAC,IAAI,CAAC;IACzC,CAAC,MAAM;MACL,IAAI,CAACzD,aAAa,CAAC0D,cAAc,CAAC,IAAI,CAAC;IACzC;IAEA,IAAI,CAACF,WAAW,GAAG,CAAC,IAAI,CAACA,WAAW;IACpC,IAAI,CAACJ,iBAAiB,CAAC,cAAc,CAAC;EACxC;;EAEA;AACF;AACA;EACEO,MAAMA,CAAA,EAAG;IACP,IAAI,IAAI,CAAC3D,aAAa,CAAC4D,YAAY,KAAK,IAAI,EAAE;MAC5C,IAAI,CAAC5D,aAAa,CAAC6D,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC;MACzC,IAAI,CAAC1D,OAAO,CAAC2D,QAAQ,CAAC,aAAa,CAAC;IACtC;EACF;;EAEA;AACF;AACA;EACEC,QAAQA,CAAA,EAAG;IACT,IAAI,IAAI,CAAC/D,aAAa,CAAC4D,YAAY,KAAK,IAAI,EAAE;MAC5C,IAAI,CAAC5D,aAAa,CAAC4D,YAAY,GAAG,IAAI;MACtC,IAAI,CAACzD,OAAO,CAAC6D,WAAW,CAAC,aAAa,CAAC;IACzC;EACF;;EAEA;AACF;AACA;AACA;EACEC,QAAQA,CAACC,KAAa,EAAE;IACtB,IAAI,CAACjE,MAAM,CAACiE,KAAK,GAAGA,KAAK;IACzB,IAAI,CAACC,IAAI,CAAC,cAAc,EAAED,KAAK,CAAC;IAChC,IAAI,CAACd,iBAAiB,CAAC,cAAc,CAAC;EACxC;;EAEA;AACF;AACA;AACA;AACA;EACEgB,KAAKA,CAACC,EAAU,EAAE;IAChB,IAAI,CAAC,IAAI,CAACpE,MAAM,CAACoE,EAAE,EAAE;MACnB,OAAO,KAAK;IACd,CAAC,MAAM,IAAI,OAAO,IAAI,CAACpE,MAAM,CAACoE,EAAE,KAAK,QAAQ,EAAE;MAC7C,OAAO,IAAI,CAACpE,MAAM,CAACoE,EAAE,KAAKA,EAAE;IAC9B,CAAC,MAAM,IAAI,IAAI,CAACpE,MAAM,CAACoE,EAAE,YAAYC,KAAK,EAAE;MAC1C,OAAO,IAAI,CAACrE,MAAM,CAACoE,EAAE,CAACvC,OAAO,CAACuC,EAAE,CAAC,KAAK,CAAC,CAAC;IAC1C;EACF;;EAEA;AACF;AACA;AACA;AACA;EACEE,KAAKA,CAACF,EAAU,EAAE;IAChB,IAAI,IAAI,CAACD,KAAK,CAACC,EAAE,CAAC,EAAE;MAClB;IACF;IAEA,IAAI,CAAC,IAAI,CAACpE,MAAM,CAACoE,EAAE,EAAE;MACnB,IAAI,CAACpE,MAAM,CAACoE,EAAE,GAAGA,EAAE;IACrB,CAAC,MAAM,IAAI,OAAO,IAAI,CAACpE,MAAM,CAACoE,EAAE,KAAK,QAAQ,EAAE;MAC7C,IAAI,CAACpE,MAAM,CAACoE,EAAE,GAAG,CAAC,IAAI,CAACpE,MAAM,CAACoE,EAAE,EAAEA,EAAE,CAAC;IACvC,CAAC,MAAM,IAAI,IAAI,CAACpE,MAAM,CAACoE,EAAE,YAAYC,KAAK,EAAE;MAC1C,IAAI,CAACrE,MAAM,CAACoE,EAAE,CAACG,IAAI,CAACH,EAAE,CAAC;IACzB;EACF;;EAEA;AACF;AACA;AACA;AACA;EACEI,QAAQA,CAACJ,EAAU,EAAE;IACnB,IAAI,CAAC,IAAI,CAACD,KAAK,CAACC,EAAE,CAAC,EAAE;MACnB,MAAM,IAAItC,KAAK,CAAC,cAAc,CAAC;IACjC;IAEA,IAAI,OAAO,IAAI,CAAC9B,MAAM,CAACoE,EAAE,KAAK,QAAQ,EAAE;MACtC,OAAO,IAAI,CAACpE,MAAM,CAACoE,EAAE;IACvB,CAAC,MAAM,IAAI,IAAI,CAACpE,MAAM,CAACoE,EAAE,YAAYC,KAAK,EAAE;MAC1C,IAAIzC,KAAK,GAAG,IAAI,CAAC5B,MAAM,CAACoE,EAAE,CAACvC,OAAO,CAACuC,EAAE,CAAC;MACtC,IAAI,CAACpE,MAAM,CAACoE,EAAE,CAACpC,MAAM,CAACJ,KAAK,EAAE,CAAC,CAAC;IACjC;EACF;;EAEA;AACF;AACA;EACE6C,gBAAgBA,CAACC,MAA8C,EAAE;IAC/D,IAAMC,MAA6B,GAAG,EAAE;IACxC,IAAMC,IAAI,GAAG,SAAPA,IAAIA,CAAanD,WAAgC,EAAE;MACvD,KAAK,IAAIF,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGE,WAAW,CAACnB,YAAY,CAACY,MAAM,EAAEK,CAAC,EAAE,EAAE;QACxD,IAAImD,MAAM,CAACjD,WAAW,CAACnB,YAAY,CAACiB,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;UAChDoD,MAAM,CAACJ,IAAI,CAAC9C,WAAW,CAACnB,YAAY,CAACiB,CAAC,CAAC,CAAC;QAC1C;QAEAqD,IAAI,CAACnD,WAAW,CAACnB,YAAY,CAACiB,CAAC,CAAC,CAAC;MACnC;IACF,CAAC;IAEDqD,IAAI,CAAC,IAAI,CAAC;IACV,OAAOD,MAAM;EACf;EAEAE,YAAYA,CAACT,EAAU,EAAE;IACvB,OAAO,IAAI,CAACK,gBAAgB,CAAC,UAAU/E,IAAI,EAAE;MAC3C,IAAIA,IAAI,CAACM,MAAM,CAACoE,EAAE,YAAYC,KAAK,EAAE;QACnC,OAAO3E,IAAI,CAACM,MAAM,CAACoE,EAAE,CAACvC,OAAO,CAACuC,EAAE,CAAC,KAAK,CAAC,CAAC;MAC1C,CAAC,MAAM;QACL,OAAO1E,IAAI,CAACM,MAAM,CAACoE,EAAE,KAAKA,EAAE;MAC9B;IACF,CAAC,CAAC;EACJ;EAEAU,cAAcA,CAACzE,IAAY,EAAE;IAC3B,OAAO,IAAI,CAAC0E,oBAAoB,CAAC,MAAM,EAAE1E,IAAI,CAAC;EAChD;EAEA2E,mBAAmBA,CAACC,aAAqB,EAAE;IACzC,IAAMC,UAAU,GAAG,IAAI,CAACH,oBAAoB,CAC1C,eAAe,EACfE,aACF,CAAgB;IAChB,IAAME,SAAoB,GAAG,EAAE;IAE/B,KAAK,IAAI5D,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG2D,UAAU,CAAChE,MAAM,EAAEK,CAAC,EAAE,EAAE;MAC1C4D,SAAS,CAACZ,IAAI,CAACW,UAAU,CAAC3D,CAAC,CAAC,CAAC6D,QAAQ,CAAC;IACxC;IAEA,OAAOD,SAAS;EAClB;;EAEA;AACF;AACA;EACEJ,oBAAoBA,CAACM,GAA8B,EAAEC,KAAa,EAAE;IAClE,OAAO,IAAI,CAACb,gBAAgB,CAAC,UAAU/E,IAAI,EAAE;MAC3C,OAAOA,IAAI,CAAC2F,GAAG,CAAC,KAAKC,KAAK;IAC5B,CAAC,CAAC;EACJ;EAEAC,WAAWA,CAACtF,MAAkC,EAAE;IAC9C,IAAI,CAACA,MAAM,GAAGA,MAAM;EACtB;EAEAuF,mBAAmBA,CAACC,CAAS,EAAEC,CAAS,EAAEC,IAAc,EAAE;IAAA,IAAAC,qBAAA;IACxD,CAAAA,qBAAA,OAAI,CAAC7F,aAAa,CAAC8F,mBAAmB,cAAAD,qBAAA,uBAAtCA,qBAAA,CAAwCE,aAAa,CAACH,IAAI,CAAC;EAC7D;EAEAI,QAAQA,CAACtE,WAAgC,EAAEkE,IAAc,EAAE;IACzD,IAAI,CAACxD,QAAQ,CAACV,WAAW,CAAC;EAC5B;EAEAuE,MAAMA,CAAA,EAAG;IACP,IAAI,CAACC,uBAAuB,CAAC,MAAM,CAAC;IACpC,IAAI,CAAC/F,OAAO,CAACgG,IAAI,CAAC,CAAC;IACnB,IAAI,CAACnG,aAAa,CAACoG,UAAU,CAAC,CAAC;EACjC;EAEAC,MAAMA,CAAA,EAAG;IACP,IAAI,CAACH,uBAAuB,CAAC,MAAM,CAAC;IACpC,IAAI,CAAC/F,OAAO,CAACmG,IAAI,CAAC,CAAC;IACnB,IAAI,CAACtG,aAAa,CAACoG,UAAU,CAAC,CAAC;EACjC;EAEAF,uBAAuBA,CAACK,UAA2B,EAAE;IACnD,IAAMC,MAAM,GAAG,IAAI,CAACzB,cAAc,CAAC,OAAO,CAAuB;IACjE,IAAI0B,iBAA6C,GAAG,IAAI;IAExD,KAAK,IAAIjF,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGgF,MAAM,CAACrF,MAAM,EAAEK,CAAC,EAAE,EAAE;MACtCiF,iBAAiB,GAAGD,MAAM,CAAChF,CAAC,CAAC,CAACkF,oBAAoB,CAAC,CAAC;MAEpD,IAAID,iBAAiB,IAAI7G,WAAW,CAAC6G,iBAAiB,CAAC,EAAE;QACvDA,iBAAiB,CAACE,SAAS,CAACJ,UAAU,CAAC,CAAC,CAAC;MAC3C;IACF;EACF;;EAEA;AACF;AACA;EACEvE,SAASA,CAAA,EAAG;IACV,IAAI,CAACoB,iBAAiB,CAAC,qBAAqB,CAAC;IAC7C,IAAI,CAACrC,aAAa,CAAC,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC;IAC/C,IAAI,CAACZ,OAAO,CAAC4C,MAAM,CAAC,CAAC;IACrB,IAAI,CAACK,iBAAiB,CAAC,eAAe,CAAC;EACzC;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEwD,SAASA,CAACzG,OAA6B,EAAyB;IAAA,IAAA0G,eAAA,EAAAC,cAAA,EAAAC,eAAA;IAC9D5G,OAAO,GAAGA,OAAO,IAAI,IAAI,CAACA,OAAO;IAEjC,IAAM6G,MAAM,IAAAH,eAAA,GAAG1G,OAAO,CAAC6G,MAAM,CAAC,CAAC,cAAAH,eAAA,cAAAA,eAAA,GAAI;MAAEI,IAAI,EAAE,CAAC;MAAEC,GAAG,EAAE;IAAE,CAAC;IACtD,IAAMC,KAAK,IAAAL,cAAA,GAAG3G,OAAO,CAACgH,KAAK,CAAC,CAAC,cAAAL,cAAA,cAAAA,cAAA,GAAI,CAAC;IAClC,IAAMM,MAAM,IAAAL,eAAA,GAAG5G,OAAO,CAACiH,MAAM,CAAC,CAAC,cAAAL,eAAA,cAAAA,eAAA,GAAI,CAAC;IAEpC,OAAO;MACLM,EAAE,EAAEL,MAAM,CAACC,IAAI;MACfK,EAAE,EAAEN,MAAM,CAACE,GAAG;MACdK,EAAE,EAAEP,MAAM,CAACC,IAAI,GAAGE,KAAK;MACvBK,EAAE,EAAER,MAAM,CAACE,GAAG,GAAGE,MAAM;MACvBK,OAAO,EAAEN,KAAK,GAAGC,MAAM;MACvB1F,WAAW,EAAE,IAAI;MACjBgG,IAAI,EAAE;IACR,CAAC;EACH;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACEnF,MAAMA,CAAA,EAAG;IACP,IAAI,CAACoF,OAAO,CAAC,CAAC;IAEd,KAAK,IAAInG,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,IAAI,CAACjB,YAAY,CAACY,MAAM,EAAEK,CAAC,EAAE,EAAE;MAAA,IAAAoG,qBAAA;MACjD,CAAAA,qBAAA,OAAI,CAACC,qBAAqB,cAAAD,qBAAA,uBAA1BA,qBAAA,CAA4BE,MAAM,CAAC,IAAI,CAACvH,YAAY,CAACiB,CAAC,CAAC,CAACrB,OAAO,CAAC;IAClE;IAEA,IAAI,CAACmC,aAAa,GAAG,IAAI;IACzB,IAAI,CAACc,iBAAiB,CAAC,aAAa,CAAC;IACrC,IAAI,CAACA,iBAAiB,CAAC,IAAI,CAAC9C,IAAI,GAAG,SAAS,CAAC;EAC/C;;EAEA;AACF;AACA;AACA;AACA;EACE8C,iBAAiBA,CAAC2E,IAAY,EAAE;IAC9B,IAAIC,KAAK,GAAG,IAAI1I,aAAa,CAACyI,IAAI,EAAE,IAAI,CAAC;IACzC,IAAI,CAAC5D,IAAI,CAAC4D,IAAI,EAAEC,KAAK,CAAC;EACxB;;EAEA;AACF;AACA;AACA;AACA;EACElH,mBAAmBA,CAACb,MAA0B,EAAE;IAC9C,IAAIgI,YAAY;IAEhB,IAAI,EAAEhI,MAAM,CAACY,OAAO,YAAYyD,KAAK,CAAC,EAAE;MACtC,MAAM,IAAI9E,kBAAkB,CAAC,0BAA0B,EAAES,MAAM,CAAC;IAClE;IAEA,KAAK,IAAIuB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGvB,MAAM,CAACY,OAAO,CAACM,MAAM,EAAEK,CAAC,EAAE,EAAE;MAC9CyG,YAAY,GAAG,IAAI,CAACjI,aAAa,CAACkI,iBAAiB,CACjDjI,MAAM,CAACY,OAAO,CAACW,CAAC,CAAC,EACjB,IACF,CAAC;MACD,IAAI,CAACjB,YAAY,CAACiE,IAAI,CAACyD,YAAY,CAAC;IACtC;EACF;;EAEA;AACF;AACA;AACA;AACA;EACE5H,eAAeA,CAACJ,MAA0B,EAAE;IAC1C,KAAK,IAAI,CAACqF,GAAG,EAAEC,KAAK,CAAC,IAAI4C,MAAM,CAACC,OAAO,CAAC3I,iBAAiB,CAAC,EAAE;MAC1D;MACA,IAAM4I,CAAC,GAAG/C,GAA+B;MACzC,IAAIrF,MAAM,CAACoI,CAAC,CAAC,KAAKjH,SAAS,EAAE;QAC3BnB,MAAM,CAACoI,CAAC,CAAC,GAAG9C,KAAK;MACnB;IACF;IAEA,OAAOtF,MAAM;EACf;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACEW,eAAeA,CAACmH,IAAY,EAAEC,KAAoB,EAAE;IAClD,IACEA,KAAK,YAAY1I,aAAa,IAC9B0I,KAAK,CAACM,oBAAoB,KAAK,KAAK,IACpC,IAAI,CAAChG,aAAa,KAAK,IAAI,EAC3B;MACA;AACN;AACA;AACA;AACA;AACA;MACM,IAAI,IAAI,CAACzC,MAAM,KAAK,KAAK,IAAI,IAAI,CAACK,MAAM,EAAE;QACxC,IAAI,CAACA,MAAM,CAACiE,IAAI,CAAC5C,KAAK,CAAC,IAAI,CAACrB,MAAM,EAAE,CAAC6H,IAAI,EAAEC,KAAK,CAAC,CAAC;MACpD,CAAC,MAAM;QACL,IAAI,CAACO,wCAAwC,CAACR,IAAI,EAAEC,KAAK,CAAC;MAC5D;IACF;EACF;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACEO,wCAAwCA,CAACR,IAAY,EAAEC,KAAoB,EAAE;IAC3E,IAAI,IAAI,CAACvH,gBAAgB,CAACqB,OAAO,CAACiG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;MAC9C,IAAI,CAAC/H,aAAa,CAACmE,IAAI,CAAC4D,IAAI,EAAEC,KAAK,CAACQ,MAAM,CAAC;IAC7C,CAAC,MAAM;MACL,IAAI,IAAI,CAAChI,yBAAyB,CAACuH,IAAI,CAAC,KAAK,IAAI,EAAE;QACjD,IAAI,CAACvH,yBAAyB,CAACuH,IAAI,CAAC,GAAG,IAAI;QAC3C1I,SAAS,CAAC,IAAI,CAACoJ,8BAA8B,CAACC,IAAI,CAAC,IAAI,EAAEX,IAAI,EAAEC,KAAK,CAAC,CAAC;MACxE;IACF;EACF;;EAEA;AACF;AACA;AACA;AACA;EACES,8BAA8BA,CAACV,IAAY,EAAEC,KAAoB,EAAE;IACjE,IAAI,CAACxH,yBAAyB,CAACuH,IAAI,CAAC,GAAG,KAAK;IAC5C,IAAI,CAAC/H,aAAa,CAACmE,IAAI,CAAC4D,IAAI,EAAEC,KAAK,CAAC;EACtC;AACF"}
|
|
@@ -11,9 +11,9 @@ export default class Component extends AbstractContentItem {
|
|
|
11
11
|
config: ComponentConfig;
|
|
12
12
|
componentName: string;
|
|
13
13
|
container: ItemContainer;
|
|
14
|
-
parent: AbstractContentItem
|
|
14
|
+
parent: AbstractContentItem;
|
|
15
15
|
instance: unknown;
|
|
16
|
-
constructor(layoutManager: LayoutManager, config: ComponentConfig, parent: AbstractContentItem
|
|
16
|
+
constructor(layoutManager: LayoutManager, config: ComponentConfig, parent: AbstractContentItem);
|
|
17
17
|
close(): void;
|
|
18
18
|
setSize(): void;
|
|
19
19
|
_$init(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Component.d.ts","sourceRoot":"","sources":["../../src/items/Component.ts"],"names":[],"mappings":"AACA,OAAO,mBAAmB,MAAM,uBAAuB,CAAC;AAExD,OAAO,KAAK,aAAa,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,aAAa,MAAM,4BAA4B,CAAC;AAGvD;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,mBAAmB;IACxD,MAAM,EAAE,eAAe,CAAC;IAExB,aAAa,EAAE,MAAM,CAAC;IAEtB,SAAS,EAAE,aAAa,CAAC;IAEzB,MAAM,EAAE,mBAAmB,
|
|
1
|
+
{"version":3,"file":"Component.d.ts","sourceRoot":"","sources":["../../src/items/Component.ts"],"names":[],"mappings":"AACA,OAAO,mBAAmB,MAAM,uBAAuB,CAAC;AAExD,OAAO,KAAK,aAAa,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,aAAa,MAAM,4BAA4B,CAAC;AAGvD;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,mBAAmB;IACxD,MAAM,EAAE,eAAe,CAAC;IAExB,aAAa,EAAE,MAAM,CAAC;IAEtB,SAAS,EAAE,aAAa,CAAC;IAEzB,MAAM,EAAE,mBAAmB,CAAC;IAE5B,QAAQ,EAAE,OAAO,CAAC;gBAGhB,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,mBAAmB;IAwC7B,KAAK;IAIL,OAAO;IAOP,MAAM;IAKN,MAAM;IAKN,MAAM;IAUN,SAAS;IAKT;;;;OAIG;IACH,SAAS;CAGV"}
|
package/dist/items/Component.js
CHANGED
|
@@ -46,8 +46,7 @@ export default class Component extends AbstractContentItem {
|
|
|
46
46
|
this.element = this.container._element;
|
|
47
47
|
}
|
|
48
48
|
close() {
|
|
49
|
-
|
|
50
|
-
(_this$parent = this.parent) === null || _this$parent === void 0 ? void 0 : _this$parent.removeChild(this);
|
|
49
|
+
this.parent.removeChild(this);
|
|
51
50
|
}
|
|
52
51
|
setSize() {
|
|
53
52
|
if (this.element.is(':visible')) {
|