@deephaven/golden-layout 1.7.2-beta.1 → 1.7.2-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/GoldenLayoutThemeExport.js.map +1 -1
- package/dist/LayoutManager.js +18 -20
- package/dist/LayoutManager.js.map +1 -1
- package/dist/base.js.map +1 -1
- package/dist/config/Config.js.map +1 -1
- package/dist/config/ItemConfig.js.map +1 -1
- package/dist/config/index.js.map +1 -1
- package/dist/container/ItemContainer.js +1 -2
- package/dist/container/ItemContainer.js.map +1 -1
- package/dist/container/index.js.map +1 -1
- package/dist/controls/BrowserPopout.js +6 -6
- package/dist/controls/BrowserPopout.js.map +1 -1
- package/dist/controls/DragProxy.js +1 -1
- package/dist/controls/DragProxy.js.map +1 -1
- package/dist/controls/DragSource.js.map +1 -1
- package/dist/controls/DragSourceFromEvent.js +1 -2
- package/dist/controls/DragSourceFromEvent.js.map +1 -1
- package/dist/controls/DropTargetIndicator.js.map +1 -1
- package/dist/controls/Header.js +13 -16
- package/dist/controls/Header.js.map +1 -1
- package/dist/controls/HeaderButton.js.map +1 -1
- package/dist/controls/Splitter.js +2 -2
- package/dist/controls/Splitter.js.map +1 -1
- package/dist/controls/Tab.js +4 -5
- package/dist/controls/Tab.js.map +1 -1
- package/dist/controls/index.js.map +1 -1
- package/dist/declaration.d.js.map +1 -1
- package/dist/errors/ConfigurationError.js.map +1 -1
- package/dist/errors/index.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/items/AbstractContentItem.js +9 -9
- package/dist/items/AbstractContentItem.js.map +1 -1
- package/dist/items/Component.js +1 -1
- package/dist/items/Component.js.map +1 -1
- package/dist/items/Root.js.map +1 -1
- package/dist/items/RowOrColumn.js +1 -1
- package/dist/items/RowOrColumn.js.map +1 -1
- package/dist/items/Stack.js +8 -8
- package/dist/items/Stack.js.map +1 -1
- package/dist/items/index.js.map +1 -1
- package/dist/utils/BubblingEvent.js.map +1 -1
- package/dist/utils/ConfigMinifier.js +0 -1
- package/dist/utils/ConfigMinifier.js.map +1 -1
- package/dist/utils/DragListener.js +22 -24
- package/dist/utils/DragListener.js.map +1 -1
- package/dist/utils/EventEmitter.js +15 -18
- package/dist/utils/EventEmitter.js.map +1 -1
- package/dist/utils/EventHub.js.map +1 -1
- package/dist/utils/EventUtils.js +2 -2
- package/dist/utils/EventUtils.js.map +1 -1
- package/dist/utils/ReactComponentHandler.js +1 -1
- package/dist/utils/ReactComponentHandler.js.map +1 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/utils.js.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"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 { StackItemHeaderConfig } from '../config';\nimport type { AbstractContentItem, Stack } from '../items';\nimport type LayoutManager from '../LayoutManager';\nimport { EventEmitter } from '../utils';\nimport HeaderButton from './HeaderButton';\nimport Tab from './Tab';\n\n/**\n * This class represents a header above a Stack ContentItem.\n *\n * @param layoutManager\n * @param parent\n */\nexport default class Header extends EventEmitter {\n private static _template = [\n '<div class=\"lm_header\">',\n '<ul class=\"lm_tabs\"></ul>',\n '<ul class=\"lm_controls\"></ul>',\n '<ul class=\"lm_tabdropdown_list\">',\n '<li class=\"lm_tabdropdown_search\"><input type=\"text\" placeholder=\"Find tab...\"></li>',\n '</ul>',\n '</div>',\n ].join('');\n\n private static _previousButtonTemplate = [\n '<ul class=\"lm_controls\">',\n '<li class=\"lm_tabpreviousbutton\"></li>',\n '</ul>',\n ].join('');\n\n private static _nextButtonTemplate = [\n '<li class=\"lm_tabnextbutton\"></li>',\n ].join('');\n\n layoutManager: LayoutManager;\n element = $(Header._template);\n\n tabsContainer: JQuery<HTMLElement>;\n tabDropdownContainer: JQuery<HTMLElement>;\n tabDropdownSearch: JQuery<HTMLElement>;\n tabDropdownList: JQuery<HTMLElement> | null = null;\n\n controlsContainer: JQuery<HTMLElement>;\n\n parent: Stack;\n\n tabs: Tab[] = [];\n activeContentItem: AbstractContentItem | null = null;\n closeButton: HeaderButton | null = null;\n\n tabDropdownButton: HeaderButton | null = null;\n tabNextButton = $(Header._nextButtonTemplate);\n tabPreviousButton = $(Header._previousButtonTemplate);\n\n // use for scroll repeat\n holdTimer: number | null = null;\n rAF: number | null = null;\n\n // mouse hold timeout to act as hold instead of click\n CLICK_TIMEOUT = 500;\n // mouse hold acceleration\n START_SPEED = 0.01;\n ACCELERATION = 0.0005;\n PADDING = 10 as const;\n SCROLL_LEFT = 'left' as const;\n SCROLL_RIGHT = 'right' as const;\n\n isDraggingTab = false;\n isOverflowing = false;\n isDropdownShown = false;\n dropdownKeyIndex = 0;\n\n private _lastVisibleTabIndex = -1;\n private _tabControlOffset?: number;\n\n constructor(layoutManager: LayoutManager, parent: Stack) {\n super();\n\n this.layoutManager = layoutManager;\n\n if (this.layoutManager.config.settings?.selectionEnabled) {\n this.element.addClass('lm_selectable');\n this.element.on('click', this._onHeaderClick.bind(this));\n }\n\n this.tabsContainer = this.element.find('.lm_tabs');\n\n this.tabDropdownContainer = this.element.find('.lm_tabdropdown_list');\n this.tabDropdownContainer.hide();\n this.tabDropdownSearch = this.element.find('.lm_tabdropdown_search input');\n\n this._handleFilterInput = this._handleFilterInput.bind(this);\n this._handleFilterKeydown = this._handleFilterKeydown.bind(this);\n this.tabDropdownSearch.on('input', this._handleFilterInput);\n this.tabDropdownSearch.on('keydown', this._handleFilterKeydown);\n\n this.controlsContainer = this.element.find('.lm_controls');\n this.parent = parent;\n this.parent.on('resize', this._updateTabSizes, this);\n\n this._handleItemPickedUp = this._handleItemPickedUp.bind(this);\n this._handleItemDropped = this._handleItemDropped.bind(this);\n\n this._handleNextMouseEnter = this._handleNextMouseEnter.bind(this);\n this._handleNextMouseLeave = this._handleNextMouseLeave.bind(this);\n this._handlePreviousMouseEnter = this._handlePreviousMouseEnter.bind(this);\n this._handlePreviousMouseLeave = this._handlePreviousMouseLeave.bind(this);\n this._handleScrollRepeat = this._handleScrollRepeat.bind(this);\n this._handleNextButtonMouseDown =\n this._handleNextButtonMouseDown.bind(this);\n this._handlePreviousButtonMouseDown =\n this._handlePreviousButtonMouseDown.bind(this);\n this._handleScrollButtonMouseDown =\n this._handleScrollButtonMouseDown.bind(this);\n this._handleScrollButtonMouseUp =\n this._handleScrollButtonMouseUp.bind(this);\n this._handleScrollEvent = this._handleScrollEvent.bind(this);\n\n this.tabNextButton.on('mousedown', this._handleNextButtonMouseDown);\n this.tabPreviousButton.on('mousedown', this._handlePreviousButtonMouseDown);\n this.tabsContainer.on('scroll', this._handleScrollEvent);\n\n this.layoutManager.on('itemPickedUp', this._handleItemPickedUp);\n this.layoutManager.on('itemDropped', this._handleItemDropped);\n\n // append previous button template\n this.tabsContainer.before(this.tabPreviousButton);\n // change reference to just the li, not the wrapping ul\n this.tabPreviousButton = this.tabPreviousButton.find('>:first-child');\n this.tabPreviousButton.hide();\n\n this._showAdditionalTabsDropdown =\n this._showAdditionalTabsDropdown.bind(this);\n this._hideAdditionalTabsDropdown =\n this._hideAdditionalTabsDropdown.bind(this);\n\n this._tabControlOffset =\n this.layoutManager.config.settings?.tabControlOffset;\n this._createControls();\n }\n\n /**\n * Creates a new tab and associates it with a contentItem\n *\n * @param contentItem\n * @param index The position of the tab\n */\n createTab(contentItem: AbstractContentItem, index?: number) {\n //If there's already a tab relating to the\n //content item, don't do anything\n for (let i = 0; i < this.tabs.length; i++) {\n if (this.tabs[i].contentItem === contentItem) {\n return;\n }\n }\n\n const tab = new Tab(this, contentItem);\n\n if (this.tabs.length === 0) {\n this.tabs.push(tab);\n this.tabsContainer.append(tab.element);\n return;\n }\n\n if (index === undefined) {\n index = this.tabs.length;\n }\n\n if (index > 0) {\n this.tabs[index - 1].element.after(tab.element);\n } else {\n this.tabs[0].element.before(tab.element);\n }\n\n this.tabs.splice(index, 0, tab);\n this._updateTabSizes();\n }\n\n /**\n * Finds a tab based on the contentItem its associated with and removes it.\n *\n * @param contentItem\n */\n removeTab(contentItem: AbstractContentItem) {\n for (var i = 0; i < this.tabs.length; i++) {\n if (this.tabs[i].contentItem === contentItem) {\n this.tabs[i]._$destroy();\n this.tabs.splice(i, 1);\n return;\n }\n }\n\n throw new Error('contentItem is not controlled by this header');\n }\n\n /**\n * The programmatical equivalent of clicking a Tab.\n *\n * @param contentItem\n */\n setActiveContentItem(contentItem: AbstractContentItem) {\n var isActive;\n\n for (var i = 0; i < this.tabs.length; i++) {\n isActive = this.tabs[i].contentItem === contentItem;\n this.tabs[i].setActive(isActive);\n if (isActive === true) {\n this.activeContentItem = contentItem;\n this.parent.config.activeItemIndex = i;\n }\n }\n\n // makes sure dropped tabs are scrollintoview, removed any re-ordering\n this.tabs[this.parent.config.activeItemIndex ?? 0].element\n .get(0)\n ?.scrollIntoView?.({\n // Optional chain scrollIntoView call so tests do not error\n inline: 'nearest',\n });\n\n this._hideAdditionalTabsDropdown();\n this._updateTabSizes();\n this.parent.emitBubblingEvent('stateChanged');\n }\n\n /**\n * Programmatically operate with header position.\n *\n * @param position one of ('top','left','right','bottom') to set or empty to get it.\n *\n * @returns previous header position\n */\n position(position?: 'top' | 'left' | 'right' | 'bottom') {\n let previous = this.parent._header.show;\n if (previous && !this.parent._side) previous = 'top';\n if (position !== undefined && this.parent._header.show !== position) {\n this.parent._header.show = position;\n this.parent._setupHeaderPosition();\n }\n return previous;\n }\n\n // Manually attaching so wheel can be passive instead of jquery .on\n // _attachWheelListener is called by parent init\n _attachWheelListener() {\n this.tabsContainer\n .get(0)\n ?.addEventListener('wheel', this._handleWheelEvent, { passive: true });\n }\n\n // detach called by this.destroy\n _detachWheelListener() {\n this.tabsContainer\n .get(0)\n ?.removeEventListener('wheel', this._handleWheelEvent);\n }\n\n _handleWheelEvent(event: WheelEvent) {\n const target = event.currentTarget;\n\n if (!(target instanceof HTMLElement)) {\n return;\n }\n\n // we only care about the larger of the two deltas\n let delta =\n Math.abs(event.deltaY) > Math.abs(event.deltaX)\n ? event.deltaY\n : event.deltaX;\n\n // jshint\n /* globals WheelEvent */\n if (event.deltaMode === WheelEvent.DOM_DELTA_PAGE) {\n // Users can set OS to be in deltaMode page\n // scrolly by page units as pixels\n delta *= this.tabsContainer.innerWidth() ?? 1;\n } else if (event.deltaMode === WheelEvent.DOM_DELTA_LINE) {\n // chrome goes 100px per 3 lines, and firefox would go 102 per 3 (17 lineheight * 3 lines * 2)\n delta *= 100 / 3;\n }\n target.scrollLeft += Math.round(delta);\n }\n\n // on scroll we need to check if side error might need to be disabled\n _handleScrollEvent() {\n this._checkScrollArrows();\n }\n\n // when and item is picked up, attach mouse enter listeners to next/previous buttons\n _handleItemPickedUp() {\n this.isDraggingTab = true;\n if (this.isDropdownShown) this._hideAdditionalTabsDropdown();\n this.controlsContainer.on('mouseenter', this._handleNextMouseEnter);\n this.tabPreviousButton.on('mouseenter', this._handlePreviousMouseEnter);\n }\n\n // when an item is dropped remove listeners and cancel animation\n _handleItemDropped() {\n this.isDraggingTab = false;\n window.cancelAnimationFrame(this.rAF ?? -1);\n this.rAF = null;\n this.controlsContainer.off('mouseenter', this._handleNextMouseEnter);\n this.controlsContainer.off('mouseleave', this._handleNextMouseLeave);\n this.tabPreviousButton.off('mouseenter', this._handlePreviousMouseEnter);\n this.tabPreviousButton.off('mouseleave', this._handlePreviousMouseLeave);\n }\n\n // on next/previous enter start scroll repeat animation loop\n // and attach a listener looking for mouseleave\n // cancel animation on mouse leave, and remove leave listener\n _handleNextMouseEnter() {\n this.controlsContainer.on('mouseleave', this._handleNextMouseLeave);\n this._handleScrollRepeat(\n this.SCROLL_RIGHT,\n this.tabsContainer.scrollLeft() ?? 0\n );\n }\n\n _handlePreviousMouseEnter() {\n this.tabPreviousButton.on('mouseleave', this._handlePreviousMouseLeave);\n this._handleScrollRepeat(\n this.SCROLL_LEFT,\n this.tabsContainer.scrollLeft() ?? 0\n );\n }\n\n _handleNextMouseLeave() {\n window.cancelAnimationFrame(this.rAF ?? -1);\n this.rAF = null;\n this.controlsContainer.off('mouseleave', this._handleNextMouseLeave);\n }\n\n _handlePreviousMouseLeave() {\n window.cancelAnimationFrame(this.rAF ?? -1);\n this.rAF = null;\n this.tabPreviousButton.off('mouseleave', this._handlePreviousMouseLeave);\n }\n\n // scroll one tab to the right on mouse down\n // start scrollRepeat if mouse is held down\n _handleNextButtonMouseDown() {\n var rightOffscreenChild;\n for (let i = 0; i < this.tabs.length; i += 1) {\n if (\n (this.tabs[i].element.get(0)?.offsetLeft ?? 0) >\n (this.tabsContainer.get(0)?.offsetWidth ?? 0) +\n (this.tabsContainer.scrollLeft() ?? 0)\n ) {\n rightOffscreenChild = this.tabs[i].element.get(0);\n break;\n }\n }\n\n if (rightOffscreenChild) {\n rightOffscreenChild.scrollIntoView({\n behavior: 'smooth',\n inline: 'nearest',\n });\n this._handleScrollButtonMouseDown(this.SCROLL_RIGHT);\n } else {\n const tabsContainer = this.tabsContainer.get(0);\n if (tabsContainer) {\n tabsContainer.scrollLeft = this.tabsContainer.get(0)?.scrollWidth ?? 0;\n }\n }\n }\n\n // scroll left by one tab\n // start scrollRepeat if mouse is held down\n _handlePreviousButtonMouseDown() {\n var leftOffscreenChild;\n for (var i = this.tabs.length - 1; i >= 0; i -= 1) {\n if (\n (this.tabs[i].element.get(0)?.offsetLeft ?? 0) <\n (this.tabsContainer.scrollLeft() ?? 0)\n ) {\n leftOffscreenChild = this.tabs[i].element.get(0);\n break;\n }\n }\n if (leftOffscreenChild) {\n leftOffscreenChild.scrollIntoView({\n behavior: 'smooth',\n inline: 'start',\n });\n this._handleScrollButtonMouseDown(this.SCROLL_LEFT);\n } else {\n const tabsContainer = this.tabsContainer.get(0);\n if (tabsContainer) {\n tabsContainer.scrollLeft = 0;\n }\n }\n }\n\n // when hold timer is reached start scroll repeat anim loop\n // cancel it when mouse up happens anywhere\n _handleScrollButtonMouseDown(direction: 'right' | 'left') {\n // closure so that scrollLeft is value at end of timer, and not start of timer\n this.holdTimer = window.setTimeout(() => {\n this._handleScrollRepeat(\n direction,\n this.tabsContainer.scrollLeft() ?? 0,\n 100\n ); // kickstart deltaX to be faster\n }, this.CLICK_TIMEOUT);\n window.addEventListener('mouseup', this._handleScrollButtonMouseUp);\n }\n\n // cancel scroll repeat\n _handleScrollButtonMouseUp() {\n clearTimeout(this.holdTimer ?? -1);\n this.holdTimer = null;\n cancelAnimationFrame(this.rAF ?? -1);\n this.rAF = null;\n window.removeEventListener('mouseup', this._handleScrollButtonMouseUp);\n }\n\n // disables scroll arrow if at edge of scroll area\n _checkScrollArrows() {\n if (this.tabsContainer.scrollLeft() === 0) {\n this.tabPreviousButton.first().prop('disabled', true);\n } else if (\n (this.tabsContainer.scrollLeft() ?? 0) +\n (this.tabsContainer.innerWidth() ?? 0) ===\n this.tabsContainer.get(0)?.scrollWidth\n ) {\n this.tabNextButton.prop('disabled', true);\n } else {\n this.tabNextButton.prop('disabled', false);\n this.tabPreviousButton.first().prop('disabled', false);\n }\n }\n\n // scrolls the tab header container on drag tab over control buttons\n // or on press and hold of scroll arrows at either end\n // called recurisevly in an animation loop until cancelled\n // or directional end is reached\n _handleScrollRepeat(\n direction: 'left' | 'right',\n startX: number,\n deltaX = 0,\n prevTimestamp?: number\n ) {\n const tabContainer = this.tabsContainer.get(0);\n if (!tabContainer) {\n return;\n }\n\n const tabContainerRect = tabContainer.getBoundingClientRect();\n if (direction === this.SCROLL_LEFT) {\n this.tabsContainer.scrollLeft(startX - deltaX);\n if (this.isDraggingTab) {\n // update drag placeholder\n this.parent._highlightHeaderDropZone(tabContainerRect.left - 1);\n }\n // stop loop at left edge\n if (this.tabsContainer.scrollLeft() === 0) {\n this._checkScrollArrows();\n return;\n }\n } else if (direction === this.SCROLL_RIGHT) {\n this.tabsContainer.scrollLeft(startX + deltaX);\n if (this.isDraggingTab) {\n // update drag placeholder\n this.parent._highlightHeaderDropZone(tabContainerRect.right + 1);\n }\n // stop loop at right edge\n if (\n (this.tabsContainer.scrollLeft() ?? 0) +\n (this.tabsContainer.innerWidth() ?? 0) ===\n tabContainer.scrollWidth\n ) {\n this._checkScrollArrows();\n return;\n }\n }\n\n // setup animation loop, scroll with acceleration\n window.cancelAnimationFrame(this.rAF ?? -1);\n this.rAF = window.requestAnimationFrame((timestamp: number) => {\n var startTime = prevTimestamp || timestamp;\n var deltaTime = timestamp - startTime;\n var newDeltaX =\n this.START_SPEED * deltaTime +\n 0.5 * this.ACCELERATION * (deltaTime * deltaTime);\n newDeltaX = Math.min(\n newDeltaX,\n this.tabsContainer.get(0)?.scrollWidth ?? Infinity\n );\n this._handleScrollRepeat(direction, startX, newDeltaX, startTime);\n });\n }\n\n /**\n * Programmatically set closability.\n * @param isClosable Whether to enable/disable closability.\n * @returns Whether the action was successful\n */\n _$setClosable(isClosable: boolean) {\n if (this.closeButton && this._isClosable()) {\n this.closeButton.element[isClosable ? 'show' : 'hide']();\n return true;\n }\n\n return false;\n }\n\n /**\n * Destroys the entire header\n */\n _$destroy() {\n this.emit('destroy', this);\n\n for (var i = 0; i < this.tabs.length; i++) {\n this.tabs[i]._$destroy();\n }\n\n this._detachWheelListener();\n this._handleItemDropped();\n\n $(document).off('mouseup', this._hideAdditionalTabsDropdown);\n this.tabDropdownSearch.off('input', this._handleFilterInput);\n this.tabDropdownSearch.off('keydown', this._handleFilterKeydown);\n\n this.element.remove();\n }\n\n /**\n * get settings from header\n *\n * @returns when exists\n */\n _getHeaderSetting<\n N extends 'show' | 'popout' | 'maximise' | 'close' | 'minimise',\n >(name: N): StackItemHeaderConfig[N] {\n if (name in this.parent._header) return this.parent._header[name];\n }\n\n /**\n * Creates the popout, maximise and close buttons in the header's top right corner\n */\n _createControls() {\n var closeStack,\n popout,\n label,\n maximise,\n tabDropdownLabel,\n tabOverflowNextLabel,\n tabOverflowPreviousLabel;\n\n /**\n * Dropdown to show additional tabs.\n */\n\n tabDropdownLabel = this.layoutManager.config.labels.tabDropdown;\n tabOverflowNextLabel = this.layoutManager.config.labels.tabNextLabel;\n tabOverflowPreviousLabel =\n this.layoutManager.config.labels.tabPreviousLabel;\n\n this.tabDropdownButton = new HeaderButton(\n this,\n tabDropdownLabel,\n 'lm_tabdropdown',\n this._showAdditionalTabsDropdown\n );\n this.tabDropdownButton.element.hide();\n\n this.controlsContainer.prepend(this.tabNextButton);\n this.tabNextButton.hide();\n\n /**\n * Popout control to launch component in new window.\n */\n if (this._getHeaderSetting('popout')) {\n popout = this._onPopoutClick.bind(this);\n label = this._getHeaderSetting('popout');\n new HeaderButton(this, label, 'lm_popout', popout);\n }\n\n /**\n * Maximise control - set the component to the full size of the layout\n */\n if (this._getHeaderSetting('maximise')) {\n maximise = this.parent.toggleMaximise.bind(this.parent);\n const maximiseLabel = this._getHeaderSetting('maximise');\n const minimiseLabel = this._getHeaderSetting('minimise');\n const maximiseButton = new HeaderButton(\n this,\n maximiseLabel,\n 'lm_maximise',\n maximise\n );\n\n this.parent.on('maximised', function () {\n maximiseButton.element.attr('title', minimiseLabel ?? '');\n });\n\n this.parent.on('minimised', function () {\n maximiseButton.element.attr('title', maximiseLabel ?? '');\n });\n }\n\n /**\n * Close button\n */\n if (this._isClosable()) {\n closeStack = this.parent.remove.bind(this.parent);\n label = this._getHeaderSetting('close');\n this.closeButton = new HeaderButton(this, label, 'lm_close', closeStack);\n }\n }\n\n /**\n * Shows drop down for additional tabs when there are too many to display.\n *\n * @returns {void}\n */\n _showAdditionalTabsDropdown() {\n if (this.isDropdownShown) {\n this._hideAdditionalTabsDropdown();\n return;\n }\n\n // clone tabs in the current list, with event listeners\n // and add them to the drop down\n this.tabDropdownList = this.tabsContainer\n .clone(true)\n .appendTo(this.tabDropdownContainer)\n .children()\n .removeClass('lm_active');\n\n // move it to be absolutely positioned in document root\n // as header has overflow hidden, and we need to escape that\n $(document.body).append(this.tabDropdownContainer);\n\n // show the dropdown\n this.tabDropdownContainer.show();\n this.isDropdownShown = true;\n\n // dropdown is a part of the header z-index context\n // add class to header when dropdown is open\n // so we can bump the z-index of the lists parent\n this.element.addClass('lm_dropdown_open');\n\n // focus the dropdown filter list input\n this.tabDropdownSearch.val('').focus();\n this.dropdownKeyIndex = 0;\n this.tabDropdownList\n .eq(this.dropdownKeyIndex)\n .addClass('lm_keyboard_active');\n\n $(document).on('mousedown', this._hideAdditionalTabsDropdown);\n this._updateAdditionalTabsDropdown();\n }\n\n // enables synthetic keyboard navigation of the list\n _handleFilterKeydown(e: JQuery.TriggeredEvent) {\n if (e.key === 'Escape') {\n this._hideAdditionalTabsDropdown();\n return;\n }\n\n // a negative dropdownKeyIndex means the list is filtered to an empty state\n if (this.dropdownKeyIndex === -1) return;\n\n if (e.key === 'Enter' || e.key === ' ') {\n // simulate \"click\"\n this._hideAdditionalTabsDropdown();\n this.tabs[this.dropdownKeyIndex]._onTabClick();\n return;\n }\n\n function getNextDropdownIndex(\n startIndex: number,\n delta: number,\n tabDropdownList: JQuery<HTMLElement> | null\n ) {\n if (tabDropdownList == null || tabDropdownList.length < 2) {\n return -1;\n }\n var i =\n (startIndex + delta + tabDropdownList.length) % tabDropdownList.length;\n while (i !== startIndex) {\n if (tabDropdownList.eq(i).css('display') !== 'none') {\n return i;\n }\n i = (i + delta + tabDropdownList.length) % tabDropdownList.length;\n }\n\n return startIndex;\n }\n\n // allow tab or arrow key navigation of list, prevent tabs default behaviour\n if (e.key === 'ArrowDown' || (e.key === 'Tab' && e.shiftKey === false)) {\n e.preventDefault();\n this.tabDropdownList\n ?.eq(this.dropdownKeyIndex)\n .removeClass('lm_keyboard_active');\n this.dropdownKeyIndex = getNextDropdownIndex(\n this.dropdownKeyIndex,\n 1,\n this.tabDropdownList\n );\n this.tabDropdownList\n ?.eq(this.dropdownKeyIndex)\n .addClass('lm_keyboard_active');\n } else if (e.key === 'ArrowUp' || e.key === 'Tab') {\n e.preventDefault();\n this.tabDropdownList\n ?.eq(this.dropdownKeyIndex)\n .removeClass('lm_keyboard_active');\n this.dropdownKeyIndex = getNextDropdownIndex(\n this.dropdownKeyIndex,\n -1,\n this.tabDropdownList\n );\n this.tabDropdownList\n ?.eq(this.dropdownKeyIndex)\n .addClass('lm_keyboard_active');\n }\n }\n\n // filters the list\n _handleFilterInput(event: JQuery.TriggeredEvent) {\n if (this.tabDropdownList == null) {\n return;\n }\n // reset keyboard index\n this.tabDropdownList\n .eq(this.dropdownKeyIndex)\n .removeClass('lm_keyboard_active');\n this.dropdownKeyIndex = -1;\n\n for (var i = 0; i < this.tabDropdownList.length; i++) {\n if (\n (this.tabs[i].contentItem.config.title\n ?.toLowerCase()\n .indexOf(event.target.value.toLowerCase()) ?? -1) !== -1\n ) {\n this.tabDropdownList.eq(i).css('display', '');\n if (this.dropdownKeyIndex === -1) this.dropdownKeyIndex = i;\n } else {\n this.tabDropdownList.eq(i).css('display', 'none');\n }\n }\n\n if (this.dropdownKeyIndex !== -1) {\n this.tabDropdownList\n .eq(this.dropdownKeyIndex)\n .addClass('lm_keyboard_active');\n }\n }\n\n /**\n * Hides drop down for additional tabs when needed. It is called via mousedown\n * event on document when list is open, or programmatically when drag starts,\n * or active tab changes etc.\n */\n _hideAdditionalTabsDropdown(event?: JQuery.UIEventBase) {\n // dropdown already closed, do nothing\n if (!this.isDropdownShown) return;\n\n if (event && this.tabDropdownContainer.get(0)?.contains(event.target)) {\n // prevent events occuring inside the list from causing a close\n return;\n } else if (\n event &&\n this.tabDropdownButton?.element.get(0) === event.target\n ) {\n // do nothing on the mouse down so that the click event can close, rather then re-open\n return;\n }\n\n this.element.removeClass('lm_dropdown_open');\n this.tabDropdownContainer.hide();\n this.isDropdownShown = false;\n\n // put it back in the header dom to keep the root tidy\n this.element.append(this.tabDropdownContainer);\n\n // remove the current tab list\n this.tabDropdownContainer.find('.lm_tabs').remove();\n\n $(document).off('mousedown', this._hideAdditionalTabsDropdown);\n }\n\n /**\n * Ensures additional tab drop down which is absolutely positioned in the root\n * doesn't overflow the screen, and instead becomes scrollable. Positions the\n * floating menu in the correct location relative to the dropdown button.\n */\n _updateAdditionalTabsDropdown() {\n if (!this.isDropdownShown) return;\n if (!this.tabDropdownList || this.tabDropdownList.length == 0) return;\n\n const scrollHeight = this.tabDropdownContainer.get(0)?.scrollHeight ?? 0;\n if (scrollHeight === 0) return; // height can be zero if called on a hidden or empty list\n\n const list_rect = this.tabDropdownContainer[0].getBoundingClientRect();\n const windowHeight = $(window).height() ?? 0;\n const windowWidth = $(window).width() ?? 0;\n\n // position relative to the dropdown button\n if (!this.tabDropdownButton) return;\n const button_rect =\n this.tabDropdownButton.element[0].getBoundingClientRect();\n\n // If it fits below button, put it there. If it doesn't and there is more\n // than 60% space above, then flip to displaying menu above button\n const hasSpaceBelow = scrollHeight < windowHeight - button_rect.bottom;\n const shouldFlip =\n !hasSpaceBelow && button_rect.bottom > windowHeight * 0.6; // 0.6 bias to not flipping rather than strictly 0.5\n\n // keep from going of right edge\n // when flipped offset to right edge of button\n const left = Math.min(\n button_rect.left + (shouldFlip ? button_rect.width : 0),\n windowWidth - list_rect.width - this.PADDING\n );\n // flip, with limit of top of screen\n const top = shouldFlip\n ? Math.max(button_rect.top - scrollHeight, this.PADDING)\n : button_rect.bottom;\n\n // if needs scroll to fit, apply a max-height\n const maxHeight = windowHeight - top - this.PADDING;\n\n this.tabDropdownContainer.css({\n 'max-height': maxHeight,\n top,\n left,\n });\n }\n\n /**\n * Checks whether the header is closable based on the parent config and\n * the global config.\n *\n * @returns Whether the header is closable.\n */\n _isClosable() {\n return Boolean(\n this.parent.config.isClosable &&\n this.layoutManager.config.settings.showCloseIcon\n );\n }\n\n _onPopoutClick() {\n if (this.layoutManager.config.settings.popoutWholeStack === true) {\n this.parent.popout();\n } else {\n this.activeContentItem?.popout();\n }\n }\n\n /**\n * Invoked when the header's background is clicked (not it's tabs or controls)\n *\n * @param event\n */\n _onHeaderClick(event: JQuery.UIEventBase) {\n if (event.target === this.element[0]) {\n this.parent.select();\n }\n }\n\n /**\n * Pushes the tabs to the tab dropdown if the available space is not sufficient\n */\n _updateTabSizes() {\n if (this.tabs.length === 0) {\n return;\n }\n\n const tabsContainer = this.tabsContainer.get(0);\n\n if (this.isDropdownShown) {\n // resize the dropdown list too as it is currently open\n this._updateAdditionalTabsDropdown();\n }\n\n if (!tabsContainer) {\n return;\n }\n\n if (\n !this.isOverflowing &&\n tabsContainer.scrollWidth > tabsContainer.clientWidth\n ) {\n this.tabDropdownButton?.element.show();\n this.tabNextButton.show();\n this.tabPreviousButton.show();\n this.isOverflowing = true;\n } else if (\n this.isOverflowing &&\n tabsContainer.scrollWidth <= tabsContainer.clientWidth\n ) {\n this.tabDropdownButton?.element.hide();\n this.tabNextButton.hide();\n this.tabPreviousButton.hide();\n this.isOverflowing = false;\n }\n\n if (this.isOverflowing) this._checkScrollArrows();\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HeaderButton.js","names":["$","HeaderButton","constructor","header","label","cssClass","action","_defineProperty","_header","element","on","_$destroy","_action","controlsContainer","append","off","remove"],"sources":["../../src/controls/HeaderButton.ts"],"sourcesContent":["import $ from 'jquery';\nimport type Header from './Header';\n\nexport default class HeaderButton {\n element: JQuery<HTMLLIElement>;\n\n private _header: Header;\n\n private _action: (e: Event) => void;\n\n constructor(\n header: Header,\n label: string | undefined,\n cssClass: string,\n action: (e: Event) => void\n ) {\n this._header = header;\n this.element = $(\n '<li class=\"' + cssClass + '\" title=\"' + label + '\"></li>'\n );\n this._header.on('destroy', this._$destroy, this);\n this._action = action;\n this.element.on('click', this._action);\n this._header.controlsContainer.append(this.element);\n }\n\n _$destroy() {\n this.element.off();\n this.element.remove();\n }\n}\n"],"mappings":";;;AAAA,OAAOA,CAAC,MAAM,QAAQ;AAGtB,eAAe,MAAMC,YAAY,CAAC;EAOhCC,WAAWA,CACTC,MAAc,EACdC,KAAyB,EACzBC,QAAgB,EAChBC,MAA0B,EAC1B;IAAAC,eAAA;IAAAA,eAAA;IAAAA,eAAA;IACA,IAAI,CAACC,OAAO,GAAGL,MAAM;IACrB,IAAI,CAACM,OAAO,GAAGT,CAAC,CACd,aAAa,GAAGK,QAAQ,GAAG,WAAW,GAAGD,KAAK,GAAG,SACnD,CAAC;IACD,IAAI,CAACI,OAAO,CAACE,EAAE,CAAC,SAAS,EAAE,IAAI,CAACC,SAAS,EAAE,IAAI,CAAC;IAChD,IAAI,CAACC,OAAO,GAAGN,MAAM;IACrB,IAAI,CAACG,OAAO,CAACC,EAAE,CAAC,OAAO,EAAE,IAAI,CAACE,OAAO,CAAC;IACtC,IAAI,CAACJ,OAAO,CAACK,iBAAiB,CAACC,MAAM,CAAC,IAAI,CAACL,OAAO,CAAC;EACrD;EAEAE,SAASA,CAAA,EAAG;IACV,IAAI,CAACF,OAAO,CAACM,GAAG,CAAC,CAAC;IAClB,IAAI,CAACN,OAAO,CAACO,MAAM,CAAC,CAAC;EACvB;AACF"}
|
|
1
|
+
{"version":3,"file":"HeaderButton.js","names":["$","HeaderButton","constructor","header","label","cssClass","action","_defineProperty","_header","element","on","_$destroy","_action","controlsContainer","append","off","remove"],"sources":["../../src/controls/HeaderButton.ts"],"sourcesContent":["import $ from 'jquery';\nimport type Header from './Header';\n\nexport default class HeaderButton {\n element: JQuery<HTMLLIElement>;\n\n private _header: Header;\n\n private _action: (e: Event) => void;\n\n constructor(\n header: Header,\n label: string | undefined,\n cssClass: string,\n action: (e: Event) => void\n ) {\n this._header = header;\n this.element = $(\n '<li class=\"' + cssClass + '\" title=\"' + label + '\"></li>'\n );\n this._header.on('destroy', this._$destroy, this);\n this._action = action;\n this.element.on('click', this._action);\n this._header.controlsContainer.append(this.element);\n }\n\n _$destroy() {\n this.element.off();\n this.element.remove();\n }\n}\n"],"mappings":";;;AAAA,OAAOA,CAAC,MAAM,QAAQ;AAGtB,eAAe,MAAMC,YAAY,CAAC;EAOhCC,WAAWA,CACTC,MAAc,EACdC,KAAyB,EACzBC,QAAgB,EAChBC,MAA0B,EAC1B;IAAAC,eAAA;IAAAA,eAAA;IAAAA,eAAA;IACA,IAAI,CAACC,OAAO,GAAGL,MAAM;IACrB,IAAI,CAACM,OAAO,GAAGT,CAAC,CACd,aAAa,GAAGK,QAAQ,GAAG,WAAW,GAAGD,KAAK,GAAG,SACnD,CAAC;IACD,IAAI,CAACI,OAAO,CAACE,EAAE,CAAC,SAAS,EAAE,IAAI,CAACC,SAAS,EAAE,IAAI,CAAC;IAChD,IAAI,CAACC,OAAO,GAAGN,MAAM;IACrB,IAAI,CAACG,OAAO,CAACC,EAAE,CAAC,OAAO,EAAE,IAAI,CAACE,OAAO,CAAC;IACtC,IAAI,CAACJ,OAAO,CAACK,iBAAiB,CAACC,MAAM,CAAC,IAAI,CAACL,OAAO,CAAC;EACrD;EAEAE,SAASA,CAAA,EAAG;IACV,IAAI,CAACF,OAAO,CAACM,GAAG,CAAC,CAAC;IAClB,IAAI,CAACN,OAAO,CAACO,MAAM,CAAC,CAAC;EACvB;AACF","ignoreList":[]}
|
|
@@ -18,11 +18,11 @@ export default class Splitter {
|
|
|
18
18
|
}
|
|
19
19
|
on(event, callback, context) {
|
|
20
20
|
var _this$_dragListener;
|
|
21
|
-
(_this$_dragListener = this._dragListener) === null || _this$_dragListener === void 0
|
|
21
|
+
(_this$_dragListener = this._dragListener) === null || _this$_dragListener === void 0 || _this$_dragListener.on(event, callback, context);
|
|
22
22
|
}
|
|
23
23
|
_$destroy() {
|
|
24
24
|
var _this$_dragListener2;
|
|
25
|
-
(_this$_dragListener2 = this._dragListener) === null || _this$_dragListener2 === void 0
|
|
25
|
+
(_this$_dragListener2 = this._dragListener) === null || _this$_dragListener2 === void 0 || _this$_dragListener2.destroy();
|
|
26
26
|
this._dragListener = null;
|
|
27
27
|
this.element.remove();
|
|
28
28
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Splitter.js","names":["$","DragListener","Splitter","constructor","isVertical","size","grabSize","_defineProperty","_isVertical","_size","_grabSize","element","_createElement","_dragListener","on","event","callback","context","_this$_dragListener","_$destroy","_this$_dragListener2","destroy","remove","dragHandle","append","handleExcessSize","handleExcessPos","css","addClass"],"sources":["../../src/controls/Splitter.ts"],"sourcesContent":["import $ from 'jquery';\nimport { DragListener } from '../utils';\n\nexport default class Splitter {\n private _isVertical: boolean;\n\n private _size: number;\n\n private _grabSize: number;\n\n private _dragListener: DragListener | null;\n\n element: JQuery<HTMLElement>;\n\n constructor(isVertical: boolean, size: number, grabSize: number) {\n this._isVertical = isVertical;\n this._size = size;\n this._grabSize = grabSize < size ? size : grabSize;\n\n this.element = this._createElement();\n this._dragListener = new DragListener(this.element);\n }\n\n on(event: string, callback: Function, context?: unknown) {\n this._dragListener?.on(event, callback, context);\n }\n\n _$destroy() {\n this._dragListener?.destroy();\n this._dragListener = null;\n this.element.remove();\n }\n\n _createElement() {\n var dragHandle = $('<div class=\"lm_drag_handle\"></div>');\n var element = $('<div class=\"lm_splitter\"></div>');\n element.append(dragHandle);\n\n var handleExcessSize = this._grabSize - this._size;\n var handleExcessPos = handleExcessSize / 2;\n\n if (this._isVertical) {\n dragHandle.css('top', -handleExcessPos);\n dragHandle.css('height', this._size + handleExcessSize);\n element.addClass('lm_vertical');\n element['height'](this._size);\n } else {\n dragHandle.css('left', -handleExcessPos);\n dragHandle.css('width', this._size + handleExcessSize);\n element.addClass('lm_horizontal');\n element['width'](this._size);\n }\n\n return element;\n }\n}\n"],"mappings":";;;AAAA,OAAOA,CAAC,MAAM,QAAQ;AAAC,SACdC,YAAY;AAErB,eAAe,MAAMC,QAAQ,CAAC;EAW5BC,WAAWA,CAACC,UAAmB,EAAEC,IAAY,EAAEC,QAAgB,EAAE;IAAAC,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAC/D,IAAI,CAACC,WAAW,GAAGJ,UAAU;IAC7B,IAAI,CAACK,KAAK,GAAGJ,IAAI;IACjB,IAAI,CAACK,SAAS,GAAGJ,QAAQ,GAAGD,IAAI,GAAGA,IAAI,GAAGC,QAAQ;IAElD,IAAI,CAACK,OAAO,GAAG,IAAI,CAACC,cAAc,CAAC,CAAC;IACpC,IAAI,CAACC,aAAa,GAAG,IAAIZ,YAAY,CAAC,IAAI,CAACU,OAAO,CAAC;EACrD;EAEAG,EAAEA,CAACC,KAAa,EAAEC,QAAkB,EAAEC,OAAiB,EAAE;IAAA,IAAAC,mBAAA;IACvD,CAAAA,mBAAA,OAAI,CAACL,aAAa,cAAAK,mBAAA,
|
|
1
|
+
{"version":3,"file":"Splitter.js","names":["$","DragListener","Splitter","constructor","isVertical","size","grabSize","_defineProperty","_isVertical","_size","_grabSize","element","_createElement","_dragListener","on","event","callback","context","_this$_dragListener","_$destroy","_this$_dragListener2","destroy","remove","dragHandle","append","handleExcessSize","handleExcessPos","css","addClass"],"sources":["../../src/controls/Splitter.ts"],"sourcesContent":["import $ from 'jquery';\nimport { DragListener } from '../utils';\n\nexport default class Splitter {\n private _isVertical: boolean;\n\n private _size: number;\n\n private _grabSize: number;\n\n private _dragListener: DragListener | null;\n\n element: JQuery<HTMLElement>;\n\n constructor(isVertical: boolean, size: number, grabSize: number) {\n this._isVertical = isVertical;\n this._size = size;\n this._grabSize = grabSize < size ? size : grabSize;\n\n this.element = this._createElement();\n this._dragListener = new DragListener(this.element);\n }\n\n on(event: string, callback: Function, context?: unknown) {\n this._dragListener?.on(event, callback, context);\n }\n\n _$destroy() {\n this._dragListener?.destroy();\n this._dragListener = null;\n this.element.remove();\n }\n\n _createElement() {\n var dragHandle = $('<div class=\"lm_drag_handle\"></div>');\n var element = $('<div class=\"lm_splitter\"></div>');\n element.append(dragHandle);\n\n var handleExcessSize = this._grabSize - this._size;\n var handleExcessPos = handleExcessSize / 2;\n\n if (this._isVertical) {\n dragHandle.css('top', -handleExcessPos);\n dragHandle.css('height', this._size + handleExcessSize);\n element.addClass('lm_vertical');\n element['height'](this._size);\n } else {\n dragHandle.css('left', -handleExcessPos);\n dragHandle.css('width', this._size + handleExcessSize);\n element.addClass('lm_horizontal');\n element['width'](this._size);\n }\n\n return element;\n }\n}\n"],"mappings":";;;AAAA,OAAOA,CAAC,MAAM,QAAQ;AAAC,SACdC,YAAY;AAErB,eAAe,MAAMC,QAAQ,CAAC;EAW5BC,WAAWA,CAACC,UAAmB,EAAEC,IAAY,EAAEC,QAAgB,EAAE;IAAAC,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAC/D,IAAI,CAACC,WAAW,GAAGJ,UAAU;IAC7B,IAAI,CAACK,KAAK,GAAGJ,IAAI;IACjB,IAAI,CAACK,SAAS,GAAGJ,QAAQ,GAAGD,IAAI,GAAGA,IAAI,GAAGC,QAAQ;IAElD,IAAI,CAACK,OAAO,GAAG,IAAI,CAACC,cAAc,CAAC,CAAC;IACpC,IAAI,CAACC,aAAa,GAAG,IAAIZ,YAAY,CAAC,IAAI,CAACU,OAAO,CAAC;EACrD;EAEAG,EAAEA,CAACC,KAAa,EAAEC,QAAkB,EAAEC,OAAiB,EAAE;IAAA,IAAAC,mBAAA;IACvD,CAAAA,mBAAA,OAAI,CAACL,aAAa,cAAAK,mBAAA,eAAlBA,mBAAA,CAAoBJ,EAAE,CAACC,KAAK,EAAEC,QAAQ,EAAEC,OAAO,CAAC;EAClD;EAEAE,SAASA,CAAA,EAAG;IAAA,IAAAC,oBAAA;IACV,CAAAA,oBAAA,OAAI,CAACP,aAAa,cAAAO,oBAAA,eAAlBA,oBAAA,CAAoBC,OAAO,CAAC,CAAC;IAC7B,IAAI,CAACR,aAAa,GAAG,IAAI;IACzB,IAAI,CAACF,OAAO,CAACW,MAAM,CAAC,CAAC;EACvB;EAEAV,cAAcA,CAAA,EAAG;IACf,IAAIW,UAAU,GAAGvB,CAAC,CAAC,oCAAoC,CAAC;IACxD,IAAIW,OAAO,GAAGX,CAAC,CAAC,iCAAiC,CAAC;IAClDW,OAAO,CAACa,MAAM,CAACD,UAAU,CAAC;IAE1B,IAAIE,gBAAgB,GAAG,IAAI,CAACf,SAAS,GAAG,IAAI,CAACD,KAAK;IAClD,IAAIiB,eAAe,GAAGD,gBAAgB,GAAG,CAAC;IAE1C,IAAI,IAAI,CAACjB,WAAW,EAAE;MACpBe,UAAU,CAACI,GAAG,CAAC,KAAK,EAAE,CAACD,eAAe,CAAC;MACvCH,UAAU,CAACI,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAClB,KAAK,GAAGgB,gBAAgB,CAAC;MACvDd,OAAO,CAACiB,QAAQ,CAAC,aAAa,CAAC;MAC/BjB,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAACF,KAAK,CAAC;IAC/B,CAAC,MAAM;MACLc,UAAU,CAACI,GAAG,CAAC,MAAM,EAAE,CAACD,eAAe,CAAC;MACxCH,UAAU,CAACI,GAAG,CAAC,OAAO,EAAE,IAAI,CAAClB,KAAK,GAAGgB,gBAAgB,CAAC;MACtDd,OAAO,CAACiB,QAAQ,CAAC,eAAe,CAAC;MACjCjB,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAACF,KAAK,CAAC;IAC9B;IAEA,OAAOE,OAAO;EAChB;AACF","ignoreList":[]}
|
package/dist/controls/Tab.js
CHANGED
|
@@ -12,10 +12,6 @@ import DragProxy from "./DragProxy.js";
|
|
|
12
12
|
* @param contentItem
|
|
13
13
|
*/
|
|
14
14
|
export default class Tab {
|
|
15
|
-
/**
|
|
16
|
-
* The tab's html template
|
|
17
|
-
*/
|
|
18
|
-
|
|
19
15
|
constructor(header, contentItem) {
|
|
20
16
|
var _this$_layoutManager$;
|
|
21
17
|
_defineProperty(this, "header", void 0);
|
|
@@ -186,7 +182,7 @@ export default class Tab {
|
|
|
186
182
|
this.header._hideAdditionalTabsDropdown();
|
|
187
183
|
|
|
188
184
|
// makes sure clicked tabs scrollintoview (either those partially offscreen or in dropdown)
|
|
189
|
-
(_this$element$get = this.element.get(0)) === null || _this$element$get === void 0
|
|
185
|
+
(_this$element$get = this.element.get(0)) === null || _this$element$get === void 0 || _this$element$get.scrollIntoView({
|
|
190
186
|
inline: 'nearest'
|
|
191
187
|
// behaviour smooth is not possible here, as when a tab becomes active it may attempt to take focus
|
|
192
188
|
// which interupts any scroll behaviour from completeting
|
|
@@ -235,5 +231,8 @@ export default class Tab {
|
|
|
235
231
|
event.stopPropagation();
|
|
236
232
|
}
|
|
237
233
|
}
|
|
234
|
+
/**
|
|
235
|
+
* The tab's html template
|
|
236
|
+
*/
|
|
238
237
|
_defineProperty(Tab, "_template", ['<li class="lm_tab">', '<span class="lm_title_before"></span>', '<span class="lm_title"></span>', '<div class="lm_close_tab" aria-label="Close tab"></div>', '</li>'].join(''));
|
|
239
238
|
//# sourceMappingURL=Tab.js.map
|
package/dist/controls/Tab.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tab.js","names":["$","isComponent","DragListener","DragProxy","Tab","constructor","header","contentItem","_this$_layoutManager$","_defineProperty","_template","titleElement","element","find","closeElement","config","isClosable","setTitle","title","on","_layoutManager","layoutManager","settings","reorderEnabled","_dragListener","_onDragStart","destroy","_onTabClick","bind","_onCloseClick","_onTabContentFocusIn","_onTabContentFocusOut","_onMouseUp","_onCloseMousedown","remove","tab","emit","container","_contentElement","arguments","length","undefined","text","setActive","isActive","addClass","removeClass","_$destroy","off","removeEventListener","x","y","_this$contentItem$par","parent","isMaximised","toggleMaximise","root","contains","document","activeElement","event","button","_this$element$get","activeContentItem","getActiveContentItem","setActiveContentItem","focus","_hideAdditionalTabsDropdown","get","scrollIntoView","inline","stopPropagation","close","removeChild","preventDefault","join"],"sources":["../../src/controls/Tab.ts"],"sourcesContent":["import $ from 'jquery';\nimport type { AbstractContentItem } from '../items';\nimport { isComponent } from '../items';\nimport type LayoutManager from '../LayoutManager';\nimport { DragListener } from '../utils';\nimport DragProxy from './DragProxy';\nimport type Header from './Header';\n\n/**\n * Represents an individual tab within a Stack's header\n *\n * @param header\n * @param contentItem\n */\nexport default class Tab {\n /**\n * The tab's html template\n */\n private static _template = [\n '<li class=\"lm_tab\">',\n '<span class=\"lm_title_before\"></span>',\n '<span class=\"lm_title\"></span>',\n '<div class=\"lm_close_tab\" aria-label=\"Close tab\"></div>',\n '</li>',\n ].join('');\n\n header: Header;\n contentItem: AbstractContentItem;\n element = $(Tab._template);\n titleElement: JQuery<HTMLElement>;\n closeElement: JQuery<HTMLElement>;\n isActive = false;\n\n private _layoutManager: LayoutManager;\n private _dragListener?: DragListener;\n\n constructor(header: Header, contentItem: AbstractContentItem) {\n this.header = header;\n this.contentItem = contentItem;\n this.titleElement = this.element.find('.lm_title');\n this.closeElement = this.element.find('.lm_close_tab');\n this.closeElement[contentItem.config.isClosable ? 'show' : 'hide']();\n\n this.setTitle(contentItem.config.title);\n this.contentItem.on('titleChanged', this.setTitle, this);\n\n this._layoutManager = this.contentItem.layoutManager;\n\n if (\n this._layoutManager.config.settings?.reorderEnabled &&\n contentItem.config.reorderEnabled\n ) {\n this._dragListener = new DragListener(this.element);\n this._dragListener.on('dragStart', this._onDragStart, this);\n this.contentItem.on(\n 'destroy',\n this._dragListener.destroy,\n this._dragListener\n );\n }\n\n this._onTabClick = this._onTabClick.bind(this);\n this._onCloseClick = this._onCloseClick.bind(this);\n this._onTabContentFocusIn = this._onTabContentFocusIn.bind(this);\n this._onTabContentFocusOut = this._onTabContentFocusOut.bind(this);\n\n this.element.on('click', this._onTabClick);\n this.element.on('auxclick', this._onTabClick);\n this.element.on('mouseup', this._onMouseUp);\n\n if (this.contentItem.config.isClosable) {\n this.closeElement.on('click', this._onCloseClick);\n this.closeElement.on('mousedown', this._onCloseMousedown);\n } else {\n this.closeElement.remove();\n }\n\n this.contentItem.tab = this;\n this.contentItem.emit('tab', this);\n this.contentItem.layoutManager.emit('tabCreated', this);\n\n if (isComponent(this.contentItem)) {\n // add focus class to tab when content\n this.contentItem.container._contentElement\n .on('focusin', this._onTabContentFocusIn)\n .on('focusout', this._onTabContentFocusOut);\n\n this.contentItem.container.tab = this;\n this.contentItem.container.emit('tab', this);\n }\n }\n\n /**\n * Sets the tab's title to the provided string and sets\n * its title attribute to a pure text representation (without\n * html tags) of the same string.\n * @param title can contain html\n */\n setTitle(title = '') {\n // Disabling for illumon project, we want to manage our own tooltips\n // this.element.attr( 'title', lm.utils.stripTags( title ) );\n this.titleElement.text(title);\n }\n\n /**\n * Sets this tab's active state. To programmatically\n * switch tabs, use header.setActiveContentItem( item ) instead.\n * @param isActive\n */\n setActive(isActive: boolean) {\n if (isActive === this.isActive) {\n return;\n }\n this.isActive = isActive;\n\n if (isActive) {\n this.element.addClass('lm_active');\n } else {\n this.element.removeClass('lm_active');\n }\n }\n\n /**\n * Destroys the tab\n *\n * @private\n * @returns {void}\n */\n _$destroy() {\n this.element.off('click', this._onTabClick);\n this.element.off('auxclick', this._onTabClick);\n this.element.off('mouseup', this._onMouseUp);\n this.closeElement.off('click', this._onCloseClick);\n if (isComponent(this.contentItem)) {\n this.contentItem.container._contentElement.off();\n this.contentItem.container._contentElement[0].removeEventListener(\n 'click',\n this._onTabContentFocusIn,\n true\n );\n }\n if (this._dragListener) {\n this.contentItem.off(\n 'destroy',\n this._dragListener.destroy,\n this._dragListener\n );\n this._dragListener.off('dragStart', this._onDragStart);\n this._dragListener = undefined;\n }\n this.element.remove();\n }\n\n /**\n * Callback for the DragListener\n *\n * @param x The tabs absolute x position\n * @param y The tabs absolute y position\n */\n _onDragStart(x: number, y: number) {\n if (this.contentItem.parent?.isMaximised) {\n this.contentItem.parent.toggleMaximise();\n }\n\n if (!this._dragListener) {\n return;\n }\n\n new DragProxy(\n x,\n y,\n this._dragListener,\n this._layoutManager,\n this.contentItem,\n this.header.parent\n );\n }\n\n /**\n * Callback when the contentItem is focused in\n */\n _onTabContentFocusIn() {\n // Ensure only one tab is marked as having focus at a time.\n // In Firefox, if the focused element is removed from the DOM,\n // the focusout event won't trigger. This can result in two tabs\n // being erroneously marked as focused if the user's DOM element\n // is removed and they click another tab. To prevent this, we\n // remove existing \"lm_focusin\" classes first.\n $('.lm_focusin', this._layoutManager.root.element).removeClass(\n 'lm_focusin'\n );\n\n this.element.addClass('lm_focusin');\n }\n\n /**\n * Callback when the contentItem is focused out\n *\n * @param {jQuery DOM event} event\n *\n * @private\n * @returns {void}\n */\n _onTabContentFocusOut() {\n if (\n isComponent(this.contentItem) &&\n !this.contentItem.container._contentElement[0].contains(\n document.activeElement\n )\n ) {\n this.element.removeClass('lm_focusin');\n }\n }\n\n /**\n * Callback when the tab is clicked\n *\n * @param event\n */\n _onTabClick(event?: JQuery.TriggeredEvent) {\n // left mouse button or tap\n if (!event || event.button === 0) {\n var activeContentItem = this.header.parent.getActiveContentItem();\n if (\n this.contentItem !== activeContentItem &&\n isComponent(this.contentItem)\n ) {\n this.header.parent.setActiveContentItem(this.contentItem);\n } else if (\n isComponent(this.contentItem) &&\n !this.contentItem.container._contentElement[0].contains(\n document.activeElement\n )\n ) {\n // if no focus inside put focus onto the container\n // so focusin always fires for tabclicks\n this.contentItem.container._contentElement.focus();\n }\n\n if (isComponent(this.contentItem)) {\n this.contentItem.container.emit('tabClicked', event);\n }\n\n // might have been called from the dropdown\n this.header._hideAdditionalTabsDropdown();\n\n // makes sure clicked tabs scrollintoview (either those partially offscreen or in dropdown)\n this.element.get(0)?.scrollIntoView({\n inline: 'nearest',\n // behaviour smooth is not possible here, as when a tab becomes active it may attempt to take focus\n // which interupts any scroll behaviour from completeting\n });\n\n // middle mouse button\n } else if (event.button === 1 && this.contentItem.config.isClosable) {\n this._onCloseClick(event);\n }\n }\n\n /**\n * Callback when the tab's close button is\n * clicked\n *\n * @param event\n */\n _onCloseClick(event: JQuery.TriggeredEvent) {\n event.stopPropagation();\n if (isComponent(this.contentItem)) {\n this.contentItem.container.close();\n } else {\n this.header.parent.removeChild(this.contentItem);\n }\n }\n\n /**\n * Callback to prevent paste into active input on Linux\n * when closing a tab via middle click.\n * @param event\n */\n _onMouseUp(event: JQuery.TriggeredEvent) {\n if (event.button === 1) {\n event.preventDefault(); // This seems to prevent the paste event from firing\n event.stopPropagation(); // Stop propagation just in case\n }\n }\n\n /**\n * Callback to capture tab close button mousedown\n * to prevent tab from activating.\n *\n * @param event\n */\n _onCloseMousedown(event: Event) {\n event.stopPropagation();\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Tab.js","names":["$","isComponent","DragListener","DragProxy","Tab","constructor","header","contentItem","_this$_layoutManager$","_defineProperty","_template","titleElement","element","find","closeElement","config","isClosable","setTitle","title","on","_layoutManager","layoutManager","settings","reorderEnabled","_dragListener","_onDragStart","destroy","_onTabClick","bind","_onCloseClick","_onTabContentFocusIn","_onTabContentFocusOut","_onMouseUp","_onCloseMousedown","remove","tab","emit","container","_contentElement","arguments","length","undefined","text","setActive","isActive","addClass","removeClass","_$destroy","off","removeEventListener","x","y","_this$contentItem$par","parent","isMaximised","toggleMaximise","root","contains","document","activeElement","event","button","_this$element$get","activeContentItem","getActiveContentItem","setActiveContentItem","focus","_hideAdditionalTabsDropdown","get","scrollIntoView","inline","stopPropagation","close","removeChild","preventDefault","join"],"sources":["../../src/controls/Tab.ts"],"sourcesContent":["import $ from 'jquery';\nimport type { AbstractContentItem } from '../items';\nimport { isComponent } from '../items';\nimport type LayoutManager from '../LayoutManager';\nimport { DragListener } from '../utils';\nimport DragProxy from './DragProxy';\nimport type Header from './Header';\n\n/**\n * Represents an individual tab within a Stack's header\n *\n * @param header\n * @param contentItem\n */\nexport default class Tab {\n /**\n * The tab's html template\n */\n private static _template = [\n '<li class=\"lm_tab\">',\n '<span class=\"lm_title_before\"></span>',\n '<span class=\"lm_title\"></span>',\n '<div class=\"lm_close_tab\" aria-label=\"Close tab\"></div>',\n '</li>',\n ].join('');\n\n header: Header;\n contentItem: AbstractContentItem;\n element = $(Tab._template);\n titleElement: JQuery<HTMLElement>;\n closeElement: JQuery<HTMLElement>;\n isActive = false;\n\n private _layoutManager: LayoutManager;\n private _dragListener?: DragListener;\n\n constructor(header: Header, contentItem: AbstractContentItem) {\n this.header = header;\n this.contentItem = contentItem;\n this.titleElement = this.element.find('.lm_title');\n this.closeElement = this.element.find('.lm_close_tab');\n this.closeElement[contentItem.config.isClosable ? 'show' : 'hide']();\n\n this.setTitle(contentItem.config.title);\n this.contentItem.on('titleChanged', this.setTitle, this);\n\n this._layoutManager = this.contentItem.layoutManager;\n\n if (\n this._layoutManager.config.settings?.reorderEnabled &&\n contentItem.config.reorderEnabled\n ) {\n this._dragListener = new DragListener(this.element);\n this._dragListener.on('dragStart', this._onDragStart, this);\n this.contentItem.on(\n 'destroy',\n this._dragListener.destroy,\n this._dragListener\n );\n }\n\n this._onTabClick = this._onTabClick.bind(this);\n this._onCloseClick = this._onCloseClick.bind(this);\n this._onTabContentFocusIn = this._onTabContentFocusIn.bind(this);\n this._onTabContentFocusOut = this._onTabContentFocusOut.bind(this);\n\n this.element.on('click', this._onTabClick);\n this.element.on('auxclick', this._onTabClick);\n this.element.on('mouseup', this._onMouseUp);\n\n if (this.contentItem.config.isClosable) {\n this.closeElement.on('click', this._onCloseClick);\n this.closeElement.on('mousedown', this._onCloseMousedown);\n } else {\n this.closeElement.remove();\n }\n\n this.contentItem.tab = this;\n this.contentItem.emit('tab', this);\n this.contentItem.layoutManager.emit('tabCreated', this);\n\n if (isComponent(this.contentItem)) {\n // add focus class to tab when content\n this.contentItem.container._contentElement\n .on('focusin', this._onTabContentFocusIn)\n .on('focusout', this._onTabContentFocusOut);\n\n this.contentItem.container.tab = this;\n this.contentItem.container.emit('tab', this);\n }\n }\n\n /**\n * Sets the tab's title to the provided string and sets\n * its title attribute to a pure text representation (without\n * html tags) of the same string.\n * @param title can contain html\n */\n setTitle(title = '') {\n // Disabling for illumon project, we want to manage our own tooltips\n // this.element.attr( 'title', lm.utils.stripTags( title ) );\n this.titleElement.text(title);\n }\n\n /**\n * Sets this tab's active state. To programmatically\n * switch tabs, use header.setActiveContentItem( item ) instead.\n * @param isActive\n */\n setActive(isActive: boolean) {\n if (isActive === this.isActive) {\n return;\n }\n this.isActive = isActive;\n\n if (isActive) {\n this.element.addClass('lm_active');\n } else {\n this.element.removeClass('lm_active');\n }\n }\n\n /**\n * Destroys the tab\n *\n * @private\n * @returns {void}\n */\n _$destroy() {\n this.element.off('click', this._onTabClick);\n this.element.off('auxclick', this._onTabClick);\n this.element.off('mouseup', this._onMouseUp);\n this.closeElement.off('click', this._onCloseClick);\n if (isComponent(this.contentItem)) {\n this.contentItem.container._contentElement.off();\n this.contentItem.container._contentElement[0].removeEventListener(\n 'click',\n this._onTabContentFocusIn,\n true\n );\n }\n if (this._dragListener) {\n this.contentItem.off(\n 'destroy',\n this._dragListener.destroy,\n this._dragListener\n );\n this._dragListener.off('dragStart', this._onDragStart);\n this._dragListener = undefined;\n }\n this.element.remove();\n }\n\n /**\n * Callback for the DragListener\n *\n * @param x The tabs absolute x position\n * @param y The tabs absolute y position\n */\n _onDragStart(x: number, y: number) {\n if (this.contentItem.parent?.isMaximised) {\n this.contentItem.parent.toggleMaximise();\n }\n\n if (!this._dragListener) {\n return;\n }\n\n new DragProxy(\n x,\n y,\n this._dragListener,\n this._layoutManager,\n this.contentItem,\n this.header.parent\n );\n }\n\n /**\n * Callback when the contentItem is focused in\n */\n _onTabContentFocusIn() {\n // Ensure only one tab is marked as having focus at a time.\n // In Firefox, if the focused element is removed from the DOM,\n // the focusout event won't trigger. This can result in two tabs\n // being erroneously marked as focused if the user's DOM element\n // is removed and they click another tab. To prevent this, we\n // remove existing \"lm_focusin\" classes first.\n $('.lm_focusin', this._layoutManager.root.element).removeClass(\n 'lm_focusin'\n );\n\n this.element.addClass('lm_focusin');\n }\n\n /**\n * Callback when the contentItem is focused out\n *\n * @param {jQuery DOM event} event\n *\n * @private\n * @returns {void}\n */\n _onTabContentFocusOut() {\n if (\n isComponent(this.contentItem) &&\n !this.contentItem.container._contentElement[0].contains(\n document.activeElement\n )\n ) {\n this.element.removeClass('lm_focusin');\n }\n }\n\n /**\n * Callback when the tab is clicked\n *\n * @param event\n */\n _onTabClick(event?: JQuery.TriggeredEvent) {\n // left mouse button or tap\n if (!event || event.button === 0) {\n var activeContentItem = this.header.parent.getActiveContentItem();\n if (\n this.contentItem !== activeContentItem &&\n isComponent(this.contentItem)\n ) {\n this.header.parent.setActiveContentItem(this.contentItem);\n } else if (\n isComponent(this.contentItem) &&\n !this.contentItem.container._contentElement[0].contains(\n document.activeElement\n )\n ) {\n // if no focus inside put focus onto the container\n // so focusin always fires for tabclicks\n this.contentItem.container._contentElement.focus();\n }\n\n if (isComponent(this.contentItem)) {\n this.contentItem.container.emit('tabClicked', event);\n }\n\n // might have been called from the dropdown\n this.header._hideAdditionalTabsDropdown();\n\n // makes sure clicked tabs scrollintoview (either those partially offscreen or in dropdown)\n this.element.get(0)?.scrollIntoView({\n inline: 'nearest',\n // behaviour smooth is not possible here, as when a tab becomes active it may attempt to take focus\n // which interupts any scroll behaviour from completeting\n });\n\n // middle mouse button\n } else if (event.button === 1 && this.contentItem.config.isClosable) {\n this._onCloseClick(event);\n }\n }\n\n /**\n * Callback when the tab's close button is\n * clicked\n *\n * @param event\n */\n _onCloseClick(event: JQuery.TriggeredEvent) {\n event.stopPropagation();\n if (isComponent(this.contentItem)) {\n this.contentItem.container.close();\n } else {\n this.header.parent.removeChild(this.contentItem);\n }\n }\n\n /**\n * Callback to prevent paste into active input on Linux\n * when closing a tab via middle click.\n * @param event\n */\n _onMouseUp(event: JQuery.TriggeredEvent) {\n if (event.button === 1) {\n event.preventDefault(); // This seems to prevent the paste event from firing\n event.stopPropagation(); // Stop propagation just in case\n }\n }\n\n /**\n * Callback to capture tab close button mousedown\n * to prevent tab from activating.\n *\n * @param event\n */\n _onCloseMousedown(event: Event) {\n event.stopPropagation();\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["default","BrowserPopout","DragProxy","DragSource","DragSourceFromEvent","DropTargetIndicator","Header","HeaderButton","Splitter","Tab"],"sources":["../../src/controls/index.ts"],"sourcesContent":["export { default as BrowserPopout } from './BrowserPopout';\nexport { default as DragProxy } from './DragProxy';\nexport { default as DragSource } from './DragSource';\nexport { default as DragSourceFromEvent } from './DragSourceFromEvent';\nexport { default as DropTargetIndicator } from './DropTargetIndicator';\nexport { default as Header } from './Header';\nexport { default as HeaderButton } from './HeaderButton';\nexport { default as Splitter } from './Splitter';\nexport { default as Tab } from './Tab';\n"],"mappings":"SAASA,OAAO,IAAIC,aAAa;AAAA,SACxBD,OAAO,IAAIE,SAAS;AAAA,SACpBF,OAAO,IAAIG,UAAU;AAAA,SACrBH,OAAO,IAAII,mBAAmB;AAAA,SAC9BJ,OAAO,IAAIK,mBAAmB;AAAA,SAC9BL,OAAO,IAAIM,MAAM;AAAA,SACjBN,OAAO,IAAIO,YAAY;AAAA,SACvBP,OAAO,IAAIQ,QAAQ;AAAA,SACnBR,OAAO,IAAIS,GAAG"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["default","BrowserPopout","DragProxy","DragSource","DragSourceFromEvent","DropTargetIndicator","Header","HeaderButton","Splitter","Tab"],"sources":["../../src/controls/index.ts"],"sourcesContent":["export { default as BrowserPopout } from './BrowserPopout';\nexport { default as DragProxy } from './DragProxy';\nexport { default as DragSource } from './DragSource';\nexport { default as DragSourceFromEvent } from './DragSourceFromEvent';\nexport { default as DropTargetIndicator } from './DropTargetIndicator';\nexport { default as Header } from './Header';\nexport { default as HeaderButton } from './HeaderButton';\nexport { default as Splitter } from './Splitter';\nexport { default as Tab } from './Tab';\n"],"mappings":"SAASA,OAAO,IAAIC,aAAa;AAAA,SACxBD,OAAO,IAAIE,SAAS;AAAA,SACpBF,OAAO,IAAIG,UAAU;AAAA,SACrBH,OAAO,IAAII,mBAAmB;AAAA,SAC9BJ,OAAO,IAAIK,mBAAmB;AAAA,SAC9BL,OAAO,IAAIM,MAAM;AAAA,SACjBN,OAAO,IAAIO,YAAY;AAAA,SACvBP,OAAO,IAAIQ,QAAQ;AAAA,SACnBR,OAAO,IAAIS,GAAG","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"declaration.d.js","names":[],"sources":["../src/declaration.d.ts"],"sourcesContent":["declare module '*.module.scss' {\n const content: Record<string, string>;\n export default content;\n}\n\ndeclare module '*.scss';\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"declaration.d.js","names":[],"sources":["../src/declaration.d.ts"],"sourcesContent":["declare module '*.module.scss' {\n const content: Record<string, string>;\n export default content;\n}\n\ndeclare module '*.scss';\n"],"mappings":"","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfigurationError.js","names":["ConfigurationError","Error","constructor","message","node","_defineProperty","name"],"sources":["../../src/errors/ConfigurationError.ts"],"sourcesContent":["class ConfigurationError extends Error {\n node: unknown;\n\n constructor(message: string, node?: unknown) {\n super();\n\n this.name = 'Configuration Error';\n this.message = message;\n this.node = node;\n }\n}\n\nexport default ConfigurationError;\n"],"mappings":";;;AAAA,MAAMA,kBAAkB,SAASC,KAAK,CAAC;EAGrCC,WAAWA,CAACC,OAAe,EAAEC,IAAc,EAAE;IAC3C,KAAK,CAAC,CAAC;IAACC,eAAA;IAER,IAAI,CAACC,IAAI,GAAG,qBAAqB;IACjC,IAAI,CAACH,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACC,IAAI,GAAGA,IAAI;EAClB;AACF;AAEA,eAAeJ,kBAAkB"}
|
|
1
|
+
{"version":3,"file":"ConfigurationError.js","names":["ConfigurationError","Error","constructor","message","node","_defineProperty","name"],"sources":["../../src/errors/ConfigurationError.ts"],"sourcesContent":["class ConfigurationError extends Error {\n node: unknown;\n\n constructor(message: string, node?: unknown) {\n super();\n\n this.name = 'Configuration Error';\n this.message = message;\n this.node = node;\n }\n}\n\nexport default ConfigurationError;\n"],"mappings":";;;AAAA,MAAMA,kBAAkB,SAASC,KAAK,CAAC;EAGrCC,WAAWA,CAACC,OAAe,EAAEC,IAAc,EAAE;IAC3C,KAAK,CAAC,CAAC;IAACC,eAAA;IAER,IAAI,CAACC,IAAI,GAAG,qBAAqB;IACjC,IAAI,CAACH,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACC,IAAI,GAAGA,IAAI;EAClB;AACF;AAEA,eAAeJ,kBAAkB","ignoreList":[]}
|
package/dist/errors/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["default","ConfigurationError"],"sources":["../../src/errors/index.ts"],"sourcesContent":["export { default as ConfigurationError } from './ConfigurationError';\n"],"mappings":"SAASA,OAAO,IAAIC,kBAAkB"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["default","ConfigurationError"],"sources":["../../src/errors/index.ts"],"sourcesContent":["export { default as ConfigurationError } from './ConfigurationError';\n"],"mappings":"SAASA,OAAO,IAAIC,kBAAkB","ignoreList":[]}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["LayoutManager","default","GoldenLayoutThemeExport"],"sources":["../src/index.ts"],"sourcesContent":["import LayoutManager from './LayoutManager';\n\nexport * from './config';\nexport * from './container';\nexport * from './controls';\nexport * from './errors';\nexport * from './items';\nexport * from './LayoutManager';\nexport * from './utils';\nexport { default as GoldenLayoutThemeExport } from './GoldenLayoutThemeExport';\n\nexport default LayoutManager;\n"],"mappings":"OAAOA,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SASXC,OAAO,IAAIC,uBAAuB;AAE3C,eAAeF,aAAa"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["LayoutManager","default","GoldenLayoutThemeExport"],"sources":["../src/index.ts"],"sourcesContent":["import LayoutManager from './LayoutManager';\n\nexport * from './config';\nexport * from './container';\nexport * from './controls';\nexport * from './errors';\nexport * from './items';\nexport * from './LayoutManager';\nexport * from './utils';\nexport { default as GoldenLayoutThemeExport } from './GoldenLayoutThemeExport';\n\nexport default LayoutManager;\n"],"mappings":"OAAOA,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SASXC,OAAO,IAAIC,uBAAuB;AAE3C,eAAeF,aAAa","ignoreList":[]}
|
|
@@ -135,7 +135,7 @@ export default class AbstractContentItem extends EventEmitter {
|
|
|
135
135
|
/**
|
|
136
136
|
* Remove the item from the configuration
|
|
137
137
|
*/
|
|
138
|
-
(_this$config$content = this.config.content) === null || _this$config$content === void 0
|
|
138
|
+
(_this$config$content = this.config.content) === null || _this$config$content === void 0 || _this$config$content.splice(index, 1);
|
|
139
139
|
|
|
140
140
|
/**
|
|
141
141
|
* If this node still contains other content items, adjust their size
|
|
@@ -148,7 +148,7 @@ export default class AbstractContentItem extends EventEmitter {
|
|
|
148
148
|
*/
|
|
149
149
|
} else if (this.type !== 'root' && this.config.isClosable) {
|
|
150
150
|
var _this$parent;
|
|
151
|
-
(_this$parent = this.parent) === null || _this$parent === void 0
|
|
151
|
+
(_this$parent = this.parent) === null || _this$parent === void 0 || _this$parent.removeChild(this);
|
|
152
152
|
}
|
|
153
153
|
}
|
|
154
154
|
|
|
@@ -191,7 +191,7 @@ export default class AbstractContentItem extends EventEmitter {
|
|
|
191
191
|
if (index === -1) {
|
|
192
192
|
throw new Error("Can't replace child. oldChild is not child of this");
|
|
193
193
|
}
|
|
194
|
-
parentNode === null || parentNode === void 0
|
|
194
|
+
parentNode === null || parentNode === void 0 || parentNode.replaceChild(newChild.element[0], oldChild.element[0]);
|
|
195
195
|
|
|
196
196
|
/*
|
|
197
197
|
* Optionally destroy the old content item
|
|
@@ -227,7 +227,7 @@ export default class AbstractContentItem extends EventEmitter {
|
|
|
227
227
|
*/
|
|
228
228
|
remove() {
|
|
229
229
|
var _this$parent2;
|
|
230
|
-
(_this$parent2 = this.parent) === null || _this$parent2 === void 0
|
|
230
|
+
(_this$parent2 = this.parent) === null || _this$parent2 === void 0 || _this$parent2.removeChild(this);
|
|
231
231
|
}
|
|
232
232
|
|
|
233
233
|
/**
|
|
@@ -339,15 +339,15 @@ export default class AbstractContentItem extends EventEmitter {
|
|
|
339
339
|
****************************************/
|
|
340
340
|
getItemsByFilter(filter) {
|
|
341
341
|
var result = [];
|
|
342
|
-
var
|
|
342
|
+
var _next = function next(contentItem) {
|
|
343
343
|
for (var i = 0; i < contentItem.contentItems.length; i++) {
|
|
344
344
|
if (filter(contentItem.contentItems[i]) === true) {
|
|
345
345
|
result.push(contentItem.contentItems[i]);
|
|
346
346
|
}
|
|
347
|
-
|
|
347
|
+
_next(contentItem.contentItems[i]);
|
|
348
348
|
}
|
|
349
349
|
};
|
|
350
|
-
|
|
350
|
+
_next(this);
|
|
351
351
|
return result;
|
|
352
352
|
}
|
|
353
353
|
getItemsById(id) {
|
|
@@ -384,7 +384,7 @@ export default class AbstractContentItem extends EventEmitter {
|
|
|
384
384
|
}
|
|
385
385
|
_$highlightDropZone(x, y, area) {
|
|
386
386
|
var _this$layoutManager$d;
|
|
387
|
-
(_this$layoutManager$d = this.layoutManager.dropTargetIndicator) === null || _this$layoutManager$d === void 0
|
|
387
|
+
(_this$layoutManager$d = this.layoutManager.dropTargetIndicator) === null || _this$layoutManager$d === void 0 || _this$layoutManager$d.highlightArea(area);
|
|
388
388
|
}
|
|
389
389
|
_$onDrop(contentItem, area) {
|
|
390
390
|
this.addChild(contentItem);
|
|
@@ -462,7 +462,7 @@ export default class AbstractContentItem extends EventEmitter {
|
|
|
462
462
|
this.setSize();
|
|
463
463
|
for (var i = 0; i < this.contentItems.length; i++) {
|
|
464
464
|
var _this$childElementCon;
|
|
465
|
-
(_this$childElementCon = this.childElementContainer) === null || _this$childElementCon === void 0
|
|
465
|
+
(_this$childElementCon = this.childElementContainer) === null || _this$childElementCon === void 0 || _this$childElementCon.append(this.contentItems[i].element);
|
|
466
466
|
}
|
|
467
467
|
this.isInitialised = true;
|
|
468
468
|
this.emitBubblingEvent('itemCreated');
|