@deephaven/golden-layout 1.2.1-plotly-rc.3 → 1.2.1-plotly-rc3.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.
Files changed (38) hide show
  1. package/dist/GoldenLayoutThemeExport.js.map +1 -1
  2. package/dist/LayoutManager.js.map +1 -1
  3. package/dist/base.js.map +1 -1
  4. package/dist/config/Config.js.map +1 -1
  5. package/dist/config/ItemConfig.js.map +1 -1
  6. package/dist/config/index.js.map +1 -1
  7. package/dist/container/ItemContainer.js.map +1 -1
  8. package/dist/container/index.js.map +1 -1
  9. package/dist/controls/BrowserPopout.js.map +1 -1
  10. package/dist/controls/DragProxy.js.map +1 -1
  11. package/dist/controls/DragSource.js.map +1 -1
  12. package/dist/controls/DragSourceFromEvent.js.map +1 -1
  13. package/dist/controls/DropTargetIndicator.js.map +1 -1
  14. package/dist/controls/Header.js.map +1 -1
  15. package/dist/controls/HeaderButton.js.map +1 -1
  16. package/dist/controls/Splitter.js.map +1 -1
  17. package/dist/controls/Tab.js.map +1 -1
  18. package/dist/controls/index.js.map +1 -1
  19. package/dist/declaration.d.js.map +1 -1
  20. package/dist/errors/ConfigurationError.js.map +1 -1
  21. package/dist/errors/index.js.map +1 -1
  22. package/dist/index.js.map +1 -1
  23. package/dist/items/AbstractContentItem.js.map +1 -1
  24. package/dist/items/Component.js.map +1 -1
  25. package/dist/items/Root.js.map +1 -1
  26. package/dist/items/RowOrColumn.js.map +1 -1
  27. package/dist/items/Stack.js.map +1 -1
  28. package/dist/items/index.js.map +1 -1
  29. package/dist/utils/BubblingEvent.js.map +1 -1
  30. package/dist/utils/ConfigMinifier.js.map +1 -1
  31. package/dist/utils/DragListener.js.map +1 -1
  32. package/dist/utils/EventEmitter.js.map +1 -1
  33. package/dist/utils/EventHub.js.map +1 -1
  34. package/dist/utils/EventUtils.js.map +1 -1
  35. package/dist/utils/ReactComponentHandler.js.map +1 -1
  36. package/dist/utils/index.js.map +1 -1
  37. package/dist/utils/utils.js.map +1 -1
  38. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"Stack.js","names":["$","AbstractContentItem","isComponent","Header","RowOrColumn","Stack","constructor","layoutManager","config","parent","_cfg$settings","_cfg$settings2","_cfg$labels","_cfg$settings3","_cfg$labels2","_cfg$settings4","_cfg$labels3","_cfg$labels$minimise","_cfg$labels4","_defineProperty","cfg","_side","_header","show","settings","hasHeaders","popout","showPopoutIcon","labels","undefined","maximise","showMaximiseIcon","close","showCloseIcon","minimise","header","_objectSpread","content","element","append","childElementContainer","_setupHeaderPosition","_$validateClosability","setSize","_this$layoutManager$c","_this$layoutManager$c2","_this$element$width","_this$element$height","i","headerSize","dimensions","headerHeight","contentWidth","width","_sided","contentHeight","height","contentItems","length","emit","emitBubblingEvent","_$init","isInitialised","_attachWheelListener","createTab","_$hide","initialItem","activeItemIndex","Error","setActiveContentItem","contentItem","forceFocus","indexOf","_activeContentItem","_$show","getActiveContentItem","activeContentItem","addChild","index","_$normalizeContentItem","callDownwards","removeChild","keepChild","arguments","removeTab","Math","max","isClosable","_isClosable","len","_this$contentItems$i$","_$setClosable","_$destroy","prototype","call","_$onDrop","_dropSegment","_resetHeaderDropZone","_dropIndex","isVertical","isHorizontal","insertBefore","hasCorrectParent","isColumn","isRow","type","dimension","stack","createContentItem","_this$config$dimensio","_this$parent","rowOrColumn","replaceChild","_$highlightDropZone","x","y","_contentAreaDimensions","segment","Object","entries","area","hoverArea","x1","x2","y1","y2","_highlightHeaderDropZone","_highlightBodyDropZone","_$getArea","is","headerArea","contentArea","highlightArea","body","left","top","right","bottom","_tabsContainer$get","_this$layoutManager$t","_this$layoutManager$t2","_this$layoutManager$t3","_this$header$tabsCont","_this$header$tabsCont2","_this$layoutManager$t4","_this$header$tabsCont3","_this$header$tabsCont4","_this$header$tabsCont5","_this$layoutManager$d2","_this$header$element$6","_this$header$element$7","_this$header$element$8","_this$header$element$9","_this$header$element$10","tabsLength","tabs","_this$layoutManager$d","_headerOffset$left","_headerOffset$left2","_this$header$element$","_this$header$element$2","_this$header$element$3","_this$header$element$4","_this$header$element$5","headerOffset","offset","dropTargetIndicator","innerHeight","tabsContainer","tabsContainerRect","get","getBoundingClientRect","placeholderRect","tabDropPlaceholder","tabElement","tabRect","_tabElement$get","before","_this$_dropIndex","min","after","placeHolderLeft","placeHolderRight","innerWidth","remove","side","some","elem","toggle","toString","removeClass","addClass","find","headerPosition","_this$_contentAreaDim","_this$_contentAreaDim2","_this$layoutManager$d3"],"sources":["../../src/items/Stack.ts"],"sourcesContent":["import $ from 'jquery';\nimport AbstractContentItem, { isComponent } from './AbstractContentItem';\nimport type LayoutManager from '../LayoutManager';\nimport type {\n ItemConfig,\n StackItemConfig,\n StackItemHeaderConfig,\n} from '../config';\nimport { Header } from '../controls';\nimport RowOrColumn from './RowOrColumn';\n\ninterface HoverDimensions {\n hoverArea: {\n x1: number;\n y1: number;\n x2: number;\n y2: number;\n };\n highlightArea: {\n x1: number;\n y1: number;\n x2: number;\n y2: number;\n };\n}\n\ntype ContentAreaDimensions = {\n header: HoverDimensions;\n body?: HoverDimensions;\n top?: HoverDimensions;\n bottom?: HoverDimensions;\n left?: HoverDimensions;\n right?: HoverDimensions;\n};\n\ntype BodySegment = keyof ContentAreaDimensions;\n\nexport default class Stack extends AbstractContentItem {\n private _activeContentItem: AbstractContentItem | null = null;\n\n _header: StackItemHeaderConfig;\n\n childElementContainer = $('<div class=\"lm_items\"></div>');\n header: Header;\n parent: AbstractContentItem | null;\n\n isStack = true;\n\n private _dropSegment: string | null = null;\n _contentAreaDimensions: ContentAreaDimensions | null = null;\n private _dropIndex: number | undefined;\n _side: boolean | 'top' | 'left' | 'right' | 'bottom';\n _sided: boolean = false;\n\n config: StackItemConfig;\n\n constructor(\n layoutManager: LayoutManager & {\n config: LayoutManager['config'] & {\n header?: StackItemHeaderConfig;\n };\n },\n config: StackItemConfig,\n parent: AbstractContentItem | null\n ) {\n super(\n layoutManager,\n config,\n parent,\n $('<div class=\"lm_item lm_stack\"></div>')\n );\n this.parent = parent;\n this.config = config;\n\n const cfg = layoutManager.config;\n this._side = false;\n this._header = {\n // defaults' reconstruction from old configuration style\n show: cfg.settings?.hasHeaders && config.hasHeaders !== false,\n popout: cfg.settings?.showPopoutIcon ? cfg.labels?.popout : undefined,\n maximise: cfg.settings?.showMaximiseIcon\n ? cfg.labels?.maximise\n : undefined,\n close: cfg.settings?.showCloseIcon ? cfg.labels?.close : undefined,\n minimise: cfg.labels?.minimise ?? undefined,\n };\n\n // load simplified version of header configuration (https://github.com/deepstreamIO/golden-layout/pull/245)\n if (cfg.header) this._header = { ...this._header, ...cfg.header };\n if (config.header)\n // load from stack\n this._header = { ...this._header, ...config.header };\n if (config.content && config.content[0] && config.content[0].header)\n // load from component if stack omitted\n this._header = { ...this._header, ...config.content[0].header };\n\n this.header = new Header(layoutManager, this);\n\n this.element.append(this.header.element);\n this.element.append(this.childElementContainer);\n this._setupHeaderPosition();\n this._$validateClosability();\n }\n\n setSize() {\n var i,\n headerSize = this._header.show\n ? this.layoutManager.config.dimensions?.headerHeight ?? 0\n : 0,\n contentWidth =\n (this.element.width() ?? 0) - (this._sided ? headerSize : 0),\n contentHeight =\n (this.element.height() ?? 0) - (!this._sided ? headerSize : 0);\n\n this.childElementContainer.width(contentWidth);\n this.childElementContainer.height(contentHeight);\n\n for (i = 0; i < this.contentItems.length; i++) {\n this.contentItems[i].element.width(contentWidth).height(contentHeight);\n }\n this.emit('resize');\n this.emitBubblingEvent('stateChanged');\n }\n\n _$init() {\n if (this.isInitialised === true) return;\n\n this.header._attachWheelListener();\n\n super._$init();\n\n for (let i = 0; i < this.contentItems.length; i++) {\n this.header.createTab(this.contentItems[i]);\n this.contentItems[i]._$hide();\n }\n\n if (this.contentItems.length > 0) {\n const initialItem = this.contentItems[this.config.activeItemIndex || 0];\n\n if (!initialItem) {\n throw new Error('Configured activeItemIndex out of bounds');\n }\n\n this.setActiveContentItem(initialItem);\n }\n }\n\n setActiveContentItem(contentItem: AbstractContentItem, forceFocus?: boolean) {\n if (this.contentItems.indexOf(contentItem) === -1) {\n throw new Error('contentItem is not a child of this stack');\n }\n\n if (this._activeContentItem !== null) {\n this._activeContentItem._$hide();\n }\n\n this._activeContentItem = contentItem;\n this.header.setActiveContentItem(contentItem);\n if (isComponent(contentItem)) {\n contentItem._$show(forceFocus);\n } else {\n contentItem._$show();\n }\n this.emit('activeContentItemChanged', contentItem);\n this.layoutManager.emit('activeContentItemChanged', contentItem);\n this.emitBubblingEvent('stateChanged');\n }\n\n getActiveContentItem() {\n return this.header.activeContentItem;\n }\n\n addChild(contentItem: AbstractContentItem | ItemConfig, index?: number) {\n contentItem = this.layoutManager._$normalizeContentItem(contentItem, this);\n super.addChild(contentItem, index);\n this.childElementContainer.append(contentItem.element);\n this.header.createTab(contentItem, index);\n this.setActiveContentItem(contentItem);\n this.callDownwards('setSize');\n this._$validateClosability();\n this.emitBubblingEvent('stateChanged');\n }\n\n removeChild(contentItem: AbstractContentItem, keepChild = false) {\n var index = this.contentItems.indexOf(contentItem);\n super.removeChild(contentItem, keepChild);\n this.header.removeTab(contentItem);\n if (this.header.activeContentItem === contentItem) {\n if (this.contentItems.length > 0) {\n this.setActiveContentItem(this.contentItems[Math.max(index - 1, 0)]);\n } else {\n this._activeContentItem = null;\n }\n }\n\n this._$validateClosability();\n this.emitBubblingEvent('stateChanged');\n }\n\n /**\n * Validates that the stack is still closable or not. If a stack is able\n * to close, but has a non closable component added to it, the stack is no\n * longer closable until all components are closable.\n */\n _$validateClosability() {\n let isClosable = this.header._isClosable();\n\n for (let i = 0, len = this.contentItems.length; i < len; i++) {\n if (!isClosable) {\n break;\n }\n\n isClosable = this.contentItems[i].config.isClosable ?? false;\n }\n\n this.header._$setClosable(isClosable);\n }\n\n _$destroy() {\n AbstractContentItem.prototype._$destroy.call(this);\n this.header._$destroy();\n }\n\n /**\n * Ok, this one is going to be the tricky one: The user has dropped {contentItem} onto this stack.\n *\n * It was dropped on either the stacks header or the top, right, bottom or left bit of the content area\n * (which one of those is stored in this._dropSegment). Now, if the user has dropped on the header the case\n * is relatively clear: We add the item to the existing stack... job done (might be good to have\n * tab reordering at some point, but lets not sweat it right now)\n *\n * If the item was dropped on the content part things are a bit more complicated. If it was dropped on either the\n * top or bottom region we need to create a new column and place the items accordingly.\n * Unless, of course if the stack is already within a column... in which case we want\n * to add the newly created item to the existing column...\n * either prepend or append it, depending on wether its top or bottom.\n *\n * Same thing for rows and left / right drop segments... so in total there are 9 things that can potentially happen\n * (left, top, right, bottom) * is child of the right parent (row, column) + header drop\n *\n * @param contentItem\n */\n _$onDrop(contentItem: AbstractContentItem) {\n /*\n * The item was dropped on the header area. Just add it as a child of this stack and\n * get the hell out of this logic\n */\n if (this._dropSegment === 'header') {\n this._resetHeaderDropZone();\n this.addChild(contentItem, this._dropIndex);\n return;\n }\n\n /*\n * The stack is empty. Let's just add the element.\n */\n if (this._dropSegment === 'body') {\n this.addChild(contentItem);\n return;\n }\n\n /*\n * The item was dropped on the top-, left-, bottom- or right- part of the content. Let's\n * aggregate some conditions to make the if statements later on more readable\n */\n const isVertical =\n this._dropSegment === 'top' || this._dropSegment === 'bottom';\n const isHorizontal =\n this._dropSegment === 'left' || this._dropSegment === 'right';\n const insertBefore =\n this._dropSegment === 'top' || this._dropSegment === 'left';\n const hasCorrectParent =\n this.parent instanceof RowOrColumn &&\n ((isVertical && this.parent.isColumn) ||\n (isHorizontal && this.parent.isRow));\n const type = isVertical ? 'column' : 'row';\n const dimension = isVertical ? 'height' : 'width';\n\n /*\n * The content item can be either a component or a stack. If it is a component, wrap it into a stack\n */\n if (isComponent(contentItem)) {\n const stack = this.layoutManager.createContentItem(\n {\n type: 'stack',\n header: contentItem.config.header || {},\n },\n this\n );\n stack._$init();\n stack.addChild(contentItem);\n contentItem = stack;\n }\n\n /*\n * If the item is dropped on top or bottom of a column or left and right of a row, it's already\n * layd out in the correct way. Just add it as a child\n */\n if (hasCorrectParent) {\n const index = this.parent!.contentItems.indexOf(this);\n\n // Should be a `RowOrColumn` if `hasCorrectParent` is true\n (this.parent as RowOrColumn).addChild(\n contentItem,\n insertBefore ? index : index + 1,\n true\n );\n this.config[dimension] = (this.config[dimension] ?? 0) * 0.5;\n contentItem.config[dimension] = this.config[dimension];\n this.parent!.callDownwards('setSize');\n /*\n * This handles items that are dropped on top or bottom of a row or left / right of a column. We need\n * to create the appropriate contentItem for them to live in\n */\n } else {\n const rowOrColumn = this.layoutManager.createContentItem({ type }, this);\n this.parent?.replaceChild(this, rowOrColumn);\n\n rowOrColumn.addChild(contentItem, insertBefore ? 0 : undefined, true);\n rowOrColumn.addChild(this, insertBefore ? undefined : 0, true);\n\n this.config[dimension] = 50;\n contentItem.config[dimension] = 50;\n rowOrColumn.callDownwards('setSize');\n }\n }\n\n /**\n * If the user hovers above the header part of the stack, indicate drop positions for tabs.\n * otherwise indicate which segment of the body the dragged item would be dropped on\n *\n * @param x Absolute Screen X\n * @param y Absolute Screen Y\n */\n _$highlightDropZone(x: number, y: number) {\n if (!this._contentAreaDimensions) {\n return;\n }\n\n for (let [segment, dimensions] of Object.entries(\n this._contentAreaDimensions\n ) as [BodySegment, HoverDimensions][]) {\n const area = dimensions.hoverArea;\n\n if (area.x1 < x && area.x2 > x && area.y1 < y && area.y2 > y) {\n if (segment === 'header') {\n this._dropSegment = 'header';\n this._highlightHeaderDropZone(x);\n } else {\n this._resetHeaderDropZone();\n this._highlightBodyDropZone(segment);\n }\n\n return;\n }\n }\n }\n\n _$getArea() {\n if (this.element.is(':visible') === false) {\n return null;\n }\n\n const headerArea = super._$getArea(this.header.element);\n const contentArea = super._$getArea(this.childElementContainer);\n if (headerArea == null || contentArea == null) {\n return null;\n }\n\n const contentWidth = contentArea.x2 - contentArea.x1;\n const contentHeight = contentArea.y2 - contentArea.y1;\n\n this._contentAreaDimensions = {\n header: {\n hoverArea: {\n x1: headerArea.x1,\n y1: headerArea.y1,\n x2: headerArea.x2,\n y2: headerArea.y2,\n },\n highlightArea: {\n x1: headerArea.x1,\n y1: headerArea.y1,\n x2: headerArea.x2,\n y2: headerArea.y2,\n },\n },\n };\n\n /**\n * If this Stack is a parent to rows, columns or other stacks only its\n * header is a valid dropzone.\n */\n if (\n this._activeContentItem &&\n this._activeContentItem.isComponent === false\n ) {\n return headerArea;\n }\n\n /**\n * Highlight the entire body if the stack is empty\n */\n if (this.contentItems.length === 0) {\n this._contentAreaDimensions.body = {\n hoverArea: {\n x1: contentArea.x1,\n y1: contentArea.y1,\n x2: contentArea.x2,\n y2: contentArea.y2,\n },\n highlightArea: {\n x1: contentArea.x1,\n y1: contentArea.y1,\n x2: contentArea.x2,\n y2: contentArea.y2,\n },\n };\n\n return super._$getArea(this.element);\n }\n\n this._contentAreaDimensions.left = {\n hoverArea: {\n x1: contentArea.x1,\n y1: contentArea.y1,\n x2: contentArea.x1 + contentWidth * 0.25,\n y2: contentArea.y2,\n },\n highlightArea: {\n x1: contentArea.x1,\n y1: contentArea.y1,\n x2: contentArea.x1 + contentWidth * 0.5,\n y2: contentArea.y2,\n },\n };\n\n this._contentAreaDimensions.top = {\n hoverArea: {\n x1: contentArea.x1 + contentWidth * 0.25,\n y1: contentArea.y1,\n x2: contentArea.x1 + contentWidth * 0.75,\n y2: contentArea.y1 + contentHeight * 0.5,\n },\n highlightArea: {\n x1: contentArea.x1,\n y1: contentArea.y1,\n x2: contentArea.x2,\n y2: contentArea.y1 + contentHeight * 0.5,\n },\n };\n\n this._contentAreaDimensions.right = {\n hoverArea: {\n x1: contentArea.x1 + contentWidth * 0.75,\n y1: contentArea.y1,\n x2: contentArea.x2,\n y2: contentArea.y2,\n },\n highlightArea: {\n x1: contentArea.x1 + contentWidth * 0.5,\n y1: contentArea.y1,\n x2: contentArea.x2,\n y2: contentArea.y2,\n },\n };\n\n this._contentAreaDimensions.bottom = {\n hoverArea: {\n x1: contentArea.x1 + contentWidth * 0.25,\n y1: contentArea.y1 + contentHeight * 0.5,\n x2: contentArea.x1 + contentWidth * 0.75,\n y2: contentArea.y2,\n },\n highlightArea: {\n x1: contentArea.x1,\n y1: contentArea.y1 + contentHeight * 0.5,\n x2: contentArea.x2,\n y2: contentArea.y2,\n },\n };\n\n return super._$getArea(this.element);\n }\n\n _highlightHeaderDropZone(x: number) {\n const tabsLength = this.header.tabs.length;\n\n // I've omitted code for side edge tabs here\n // illumon doesn't need it, will slowly pull that code out elsewhere too\n\n // Empty stack\n if (tabsLength === 0) {\n const headerOffset = this.header.element.offset();\n\n // we don't have a placeholder to measure in the dom, lets just cheat and make it 100px.\n this.layoutManager.dropTargetIndicator?.highlightArea({\n x1: headerOffset?.left ?? 0,\n x2: (headerOffset?.left ?? 0) + 100,\n y1: this.header.element.offset()?.top ?? 0,\n y2:\n (this.header.element.offset()?.top ?? 0) +\n (this.header.element.innerHeight() ?? 0),\n });\n\n return;\n }\n\n const tabsContainer = this.header.tabsContainer;\n const tabsContainerRect = tabsContainer.get(0)?.getBoundingClientRect();\n const placeholderRect = this.layoutManager.tabDropPlaceholder\n .get(0)\n ?.getBoundingClientRect();\n\n if (!tabsContainerRect || !placeholderRect) {\n return;\n }\n\n if (x < tabsContainerRect.left) {\n // is over left tab controls button\n // move x to a new point to inside left edge of container\n x = tabsContainerRect.left + 1;\n } else if (x > tabsContainerRect.right) {\n // is over right tab controls button\n // move x to a new point to inside right edge of container\n x = tabsContainerRect.right - 1;\n }\n\n let tabElement: JQuery<HTMLElement> | undefined;\n let tabRect: DOMRect | undefined;\n\n // if its not inide a placeholder,\n if (!(placeholderRect.left < x && x < placeholderRect.right)) {\n // which tab is it over ...\n for (var i = 0; i < tabsLength; i++) {\n tabElement = this.header.tabs[i].element;\n tabRect = tabElement.get(0)?.getBoundingClientRect();\n if (tabRect && tabRect.left < x && x < tabRect.right) {\n this._dropIndex = i;\n break;\n }\n }\n\n // we have tabRect at this x,y from the loop above\n if (tabElement && tabRect && x < tabRect.left + tabRect.width * 0.5) {\n // mostly before an element, insert placeholder before\n tabElement.before(this.layoutManager.tabDropPlaceholder);\n } else if (tabElement) {\n // x is likely after the lhe last item, position after and increase drop index\n this._dropIndex = Math.min((this._dropIndex ?? 0) + 1, tabsLength);\n tabElement.after(this.layoutManager.tabDropPlaceholder);\n }\n }\n\n let placeHolderLeft =\n this.layoutManager.tabDropPlaceholder.offset()?.left ?? 0;\n placeHolderLeft = Math.max(\n placeHolderLeft,\n this.header.tabsContainer.offset()?.left ?? 0\n );\n var placeHolderRight =\n placeHolderLeft + (this.layoutManager.tabDropPlaceholder.width() ?? 0);\n placeHolderRight = Math.min(\n placeHolderRight,\n (this.header.tabsContainer.offset()?.left ?? 0) +\n (this.header.tabsContainer.innerWidth() ?? 0)\n );\n this.layoutManager.dropTargetIndicator?.highlightArea({\n x1: placeHolderLeft,\n x2: placeHolderRight,\n y1: this.header.element.offset()?.top ?? 0,\n y2:\n (this.header.element.offset()?.top ?? 0) +\n (this.header.element.innerHeight() ?? 0),\n });\n }\n\n _resetHeaderDropZone() {\n this.layoutManager.tabDropPlaceholder.remove();\n }\n\n _setupHeaderPosition() {\n const side = ['right', 'left', 'bottom'].some(\n elem => elem === this._header.show\n )\n ? this._header.show\n : undefined;\n\n this.header.element.toggle(!!this._header.show);\n\n if (!side) {\n return;\n }\n\n this._side = side;\n this._sided = ['right', 'left'].indexOf(this._side.toString()) >= 0;\n this.element.removeClass('lm_left lm_right lm_bottom');\n if (this._side) this.element.addClass('lm_' + this._side);\n if (this.element.find('.lm_header').length && this.childElementContainer) {\n const headerPosition =\n ['right', 'bottom'].indexOf(this._side.toString()) >= 0\n ? 'before'\n : 'after';\n this.header.element[headerPosition](this.childElementContainer);\n this.callDownwards('setSize');\n }\n }\n\n _highlightBodyDropZone(segment: BodySegment) {\n const highlightArea = this._contentAreaDimensions?.[segment]?.highlightArea;\n if (highlightArea) {\n this.layoutManager.dropTargetIndicator?.highlightArea(highlightArea);\n }\n this._dropSegment = segment;\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Stack.js","names":["$","AbstractContentItem","isComponent","Header","RowOrColumn","Stack","constructor","layoutManager","config","parent","_cfg$settings","_cfg$settings2","_cfg$labels","_cfg$settings3","_cfg$labels2","_cfg$settings4","_cfg$labels3","_cfg$labels$minimise","_cfg$labels4","_defineProperty","cfg","_side","_header","show","settings","hasHeaders","popout","showPopoutIcon","labels","undefined","maximise","showMaximiseIcon","close","showCloseIcon","minimise","header","_objectSpread","content","element","append","childElementContainer","_setupHeaderPosition","_$validateClosability","setSize","_this$layoutManager$c","_this$layoutManager$c2","_this$element$width","_this$element$height","i","headerSize","dimensions","headerHeight","contentWidth","width","_sided","contentHeight","height","contentItems","length","emit","emitBubblingEvent","_$init","isInitialised","_attachWheelListener","createTab","_$hide","initialItem","activeItemIndex","Error","setActiveContentItem","contentItem","forceFocus","indexOf","_activeContentItem","_$show","getActiveContentItem","activeContentItem","addChild","index","_$normalizeContentItem","callDownwards","removeChild","keepChild","arguments","removeTab","Math","max","isClosable","_isClosable","len","_this$contentItems$i$","_$setClosable","_$destroy","prototype","call","_$onDrop","_dropSegment","_resetHeaderDropZone","_dropIndex","isVertical","isHorizontal","insertBefore","hasCorrectParent","isColumn","isRow","type","dimension","stack","createContentItem","_this$config$dimensio","_this$parent","rowOrColumn","replaceChild","_$highlightDropZone","x","y","_contentAreaDimensions","segment","Object","entries","area","hoverArea","x1","x2","y1","y2","_highlightHeaderDropZone","_highlightBodyDropZone","_$getArea","is","headerArea","contentArea","highlightArea","body","left","top","right","bottom","_tabsContainer$get","_this$layoutManager$t","_this$layoutManager$t2","_this$layoutManager$t3","_this$header$tabsCont","_this$header$tabsCont2","_this$layoutManager$t4","_this$header$tabsCont3","_this$header$tabsCont4","_this$header$tabsCont5","_this$layoutManager$d2","_this$header$element$6","_this$header$element$7","_this$header$element$8","_this$header$element$9","_this$header$element$10","tabsLength","tabs","_this$layoutManager$d","_headerOffset$left","_headerOffset$left2","_this$header$element$","_this$header$element$2","_this$header$element$3","_this$header$element$4","_this$header$element$5","headerOffset","offset","dropTargetIndicator","innerHeight","tabsContainer","tabsContainerRect","get","getBoundingClientRect","placeholderRect","tabDropPlaceholder","tabElement","tabRect","_tabElement$get","before","_this$_dropIndex","min","after","placeHolderLeft","placeHolderRight","innerWidth","remove","side","some","elem","toggle","toString","removeClass","addClass","find","headerPosition","_this$_contentAreaDim","_this$_contentAreaDim2","_this$layoutManager$d3"],"sources":["../../src/items/Stack.ts"],"sourcesContent":["import $ from 'jquery';\nimport AbstractContentItem, { isComponent } from './AbstractContentItem';\nimport type LayoutManager from '../LayoutManager';\nimport type {\n ItemConfig,\n StackItemConfig,\n StackItemHeaderConfig,\n} from '../config';\nimport { Header } from '../controls';\nimport RowOrColumn from './RowOrColumn';\n\ninterface HoverDimensions {\n hoverArea: {\n x1: number;\n y1: number;\n x2: number;\n y2: number;\n };\n highlightArea: {\n x1: number;\n y1: number;\n x2: number;\n y2: number;\n };\n}\n\ntype ContentAreaDimensions = {\n header: HoverDimensions;\n body?: HoverDimensions;\n top?: HoverDimensions;\n bottom?: HoverDimensions;\n left?: HoverDimensions;\n right?: HoverDimensions;\n};\n\ntype BodySegment = keyof ContentAreaDimensions;\n\nexport default class Stack extends AbstractContentItem {\n private _activeContentItem: AbstractContentItem | null = null;\n\n _header: StackItemHeaderConfig;\n\n childElementContainer = $('<div class=\"lm_items\"></div>');\n header: Header;\n parent: AbstractContentItem | null;\n\n isStack = true;\n\n private _dropSegment: string | null = null;\n _contentAreaDimensions: ContentAreaDimensions | null = null;\n private _dropIndex: number | undefined;\n _side: boolean | 'top' | 'left' | 'right' | 'bottom';\n _sided: boolean = false;\n\n config: StackItemConfig;\n\n constructor(\n layoutManager: LayoutManager & {\n config: LayoutManager['config'] & {\n header?: StackItemHeaderConfig;\n };\n },\n config: StackItemConfig,\n parent: AbstractContentItem | null\n ) {\n super(\n layoutManager,\n config,\n parent,\n $('<div class=\"lm_item lm_stack\"></div>')\n );\n this.parent = parent;\n this.config = config;\n\n const cfg = layoutManager.config;\n this._side = false;\n this._header = {\n // defaults' reconstruction from old configuration style\n show: cfg.settings?.hasHeaders && config.hasHeaders !== false,\n popout: cfg.settings?.showPopoutIcon ? cfg.labels?.popout : undefined,\n maximise: cfg.settings?.showMaximiseIcon\n ? cfg.labels?.maximise\n : undefined,\n close: cfg.settings?.showCloseIcon ? cfg.labels?.close : undefined,\n minimise: cfg.labels?.minimise ?? undefined,\n };\n\n // load simplified version of header configuration (https://github.com/deepstreamIO/golden-layout/pull/245)\n if (cfg.header) this._header = { ...this._header, ...cfg.header };\n if (config.header)\n // load from stack\n this._header = { ...this._header, ...config.header };\n if (config.content && config.content[0] && config.content[0].header)\n // load from component if stack omitted\n this._header = { ...this._header, ...config.content[0].header };\n\n this.header = new Header(layoutManager, this);\n\n this.element.append(this.header.element);\n this.element.append(this.childElementContainer);\n this._setupHeaderPosition();\n this._$validateClosability();\n }\n\n setSize() {\n var i,\n headerSize = this._header.show\n ? this.layoutManager.config.dimensions?.headerHeight ?? 0\n : 0,\n contentWidth =\n (this.element.width() ?? 0) - (this._sided ? headerSize : 0),\n contentHeight =\n (this.element.height() ?? 0) - (!this._sided ? headerSize : 0);\n\n this.childElementContainer.width(contentWidth);\n this.childElementContainer.height(contentHeight);\n\n for (i = 0; i < this.contentItems.length; i++) {\n this.contentItems[i].element.width(contentWidth).height(contentHeight);\n }\n this.emit('resize');\n this.emitBubblingEvent('stateChanged');\n }\n\n _$init() {\n if (this.isInitialised === true) return;\n\n this.header._attachWheelListener();\n\n super._$init();\n\n for (let i = 0; i < this.contentItems.length; i++) {\n this.header.createTab(this.contentItems[i]);\n this.contentItems[i]._$hide();\n }\n\n if (this.contentItems.length > 0) {\n const initialItem = this.contentItems[this.config.activeItemIndex || 0];\n\n if (!initialItem) {\n throw new Error('Configured activeItemIndex out of bounds');\n }\n\n this.setActiveContentItem(initialItem);\n }\n }\n\n setActiveContentItem(contentItem: AbstractContentItem, forceFocus?: boolean) {\n if (this.contentItems.indexOf(contentItem) === -1) {\n throw new Error('contentItem is not a child of this stack');\n }\n\n if (this._activeContentItem !== null) {\n this._activeContentItem._$hide();\n }\n\n this._activeContentItem = contentItem;\n this.header.setActiveContentItem(contentItem);\n if (isComponent(contentItem)) {\n contentItem._$show(forceFocus);\n } else {\n contentItem._$show();\n }\n this.emit('activeContentItemChanged', contentItem);\n this.layoutManager.emit('activeContentItemChanged', contentItem);\n this.emitBubblingEvent('stateChanged');\n }\n\n getActiveContentItem() {\n return this.header.activeContentItem;\n }\n\n addChild(contentItem: AbstractContentItem | ItemConfig, index?: number) {\n contentItem = this.layoutManager._$normalizeContentItem(contentItem, this);\n super.addChild(contentItem, index);\n this.childElementContainer.append(contentItem.element);\n this.header.createTab(contentItem, index);\n this.setActiveContentItem(contentItem);\n this.callDownwards('setSize');\n this._$validateClosability();\n this.emitBubblingEvent('stateChanged');\n }\n\n removeChild(contentItem: AbstractContentItem, keepChild = false) {\n var index = this.contentItems.indexOf(contentItem);\n super.removeChild(contentItem, keepChild);\n this.header.removeTab(contentItem);\n if (this.header.activeContentItem === contentItem) {\n if (this.contentItems.length > 0) {\n this.setActiveContentItem(this.contentItems[Math.max(index - 1, 0)]);\n } else {\n this._activeContentItem = null;\n }\n }\n\n this._$validateClosability();\n this.emitBubblingEvent('stateChanged');\n }\n\n /**\n * Validates that the stack is still closable or not. If a stack is able\n * to close, but has a non closable component added to it, the stack is no\n * longer closable until all components are closable.\n */\n _$validateClosability() {\n let isClosable = this.header._isClosable();\n\n for (let i = 0, len = this.contentItems.length; i < len; i++) {\n if (!isClosable) {\n break;\n }\n\n isClosable = this.contentItems[i].config.isClosable ?? false;\n }\n\n this.header._$setClosable(isClosable);\n }\n\n _$destroy() {\n AbstractContentItem.prototype._$destroy.call(this);\n this.header._$destroy();\n }\n\n /**\n * Ok, this one is going to be the tricky one: The user has dropped {contentItem} onto this stack.\n *\n * It was dropped on either the stacks header or the top, right, bottom or left bit of the content area\n * (which one of those is stored in this._dropSegment). Now, if the user has dropped on the header the case\n * is relatively clear: We add the item to the existing stack... job done (might be good to have\n * tab reordering at some point, but lets not sweat it right now)\n *\n * If the item was dropped on the content part things are a bit more complicated. If it was dropped on either the\n * top or bottom region we need to create a new column and place the items accordingly.\n * Unless, of course if the stack is already within a column... in which case we want\n * to add the newly created item to the existing column...\n * either prepend or append it, depending on wether its top or bottom.\n *\n * Same thing for rows and left / right drop segments... so in total there are 9 things that can potentially happen\n * (left, top, right, bottom) * is child of the right parent (row, column) + header drop\n *\n * @param contentItem\n */\n _$onDrop(contentItem: AbstractContentItem) {\n /*\n * The item was dropped on the header area. Just add it as a child of this stack and\n * get the hell out of this logic\n */\n if (this._dropSegment === 'header') {\n this._resetHeaderDropZone();\n this.addChild(contentItem, this._dropIndex);\n return;\n }\n\n /*\n * The stack is empty. Let's just add the element.\n */\n if (this._dropSegment === 'body') {\n this.addChild(contentItem);\n return;\n }\n\n /*\n * The item was dropped on the top-, left-, bottom- or right- part of the content. Let's\n * aggregate some conditions to make the if statements later on more readable\n */\n const isVertical =\n this._dropSegment === 'top' || this._dropSegment === 'bottom';\n const isHorizontal =\n this._dropSegment === 'left' || this._dropSegment === 'right';\n const insertBefore =\n this._dropSegment === 'top' || this._dropSegment === 'left';\n const hasCorrectParent =\n this.parent instanceof RowOrColumn &&\n ((isVertical && this.parent.isColumn) ||\n (isHorizontal && this.parent.isRow));\n const type = isVertical ? 'column' : 'row';\n const dimension = isVertical ? 'height' : 'width';\n\n /*\n * The content item can be either a component or a stack. If it is a component, wrap it into a stack\n */\n if (isComponent(contentItem)) {\n const stack = this.layoutManager.createContentItem(\n {\n type: 'stack',\n header: contentItem.config.header || {},\n },\n this\n );\n stack._$init();\n stack.addChild(contentItem);\n contentItem = stack;\n }\n\n /*\n * If the item is dropped on top or bottom of a column or left and right of a row, it's already\n * layd out in the correct way. Just add it as a child\n */\n if (hasCorrectParent) {\n const index = this.parent!.contentItems.indexOf(this);\n\n // Should be a `RowOrColumn` if `hasCorrectParent` is true\n (this.parent as RowOrColumn).addChild(\n contentItem,\n insertBefore ? index : index + 1,\n true\n );\n this.config[dimension] = (this.config[dimension] ?? 0) * 0.5;\n contentItem.config[dimension] = this.config[dimension];\n this.parent!.callDownwards('setSize');\n /*\n * This handles items that are dropped on top or bottom of a row or left / right of a column. We need\n * to create the appropriate contentItem for them to live in\n */\n } else {\n const rowOrColumn = this.layoutManager.createContentItem({ type }, this);\n this.parent?.replaceChild(this, rowOrColumn);\n\n rowOrColumn.addChild(contentItem, insertBefore ? 0 : undefined, true);\n rowOrColumn.addChild(this, insertBefore ? undefined : 0, true);\n\n this.config[dimension] = 50;\n contentItem.config[dimension] = 50;\n rowOrColumn.callDownwards('setSize');\n }\n }\n\n /**\n * If the user hovers above the header part of the stack, indicate drop positions for tabs.\n * otherwise indicate which segment of the body the dragged item would be dropped on\n *\n * @param x Absolute Screen X\n * @param y Absolute Screen Y\n */\n _$highlightDropZone(x: number, y: number) {\n if (!this._contentAreaDimensions) {\n return;\n }\n\n for (let [segment, dimensions] of Object.entries(\n this._contentAreaDimensions\n ) as [BodySegment, HoverDimensions][]) {\n const area = dimensions.hoverArea;\n\n if (area.x1 < x && area.x2 > x && area.y1 < y && area.y2 > y) {\n if (segment === 'header') {\n this._dropSegment = 'header';\n this._highlightHeaderDropZone(x);\n } else {\n this._resetHeaderDropZone();\n this._highlightBodyDropZone(segment);\n }\n\n return;\n }\n }\n }\n\n _$getArea() {\n if (this.element.is(':visible') === false) {\n return null;\n }\n\n const headerArea = super._$getArea(this.header.element);\n const contentArea = super._$getArea(this.childElementContainer);\n if (headerArea == null || contentArea == null) {\n return null;\n }\n\n const contentWidth = contentArea.x2 - contentArea.x1;\n const contentHeight = contentArea.y2 - contentArea.y1;\n\n this._contentAreaDimensions = {\n header: {\n hoverArea: {\n x1: headerArea.x1,\n y1: headerArea.y1,\n x2: headerArea.x2,\n y2: headerArea.y2,\n },\n highlightArea: {\n x1: headerArea.x1,\n y1: headerArea.y1,\n x2: headerArea.x2,\n y2: headerArea.y2,\n },\n },\n };\n\n /**\n * If this Stack is a parent to rows, columns or other stacks only its\n * header is a valid dropzone.\n */\n if (\n this._activeContentItem &&\n this._activeContentItem.isComponent === false\n ) {\n return headerArea;\n }\n\n /**\n * Highlight the entire body if the stack is empty\n */\n if (this.contentItems.length === 0) {\n this._contentAreaDimensions.body = {\n hoverArea: {\n x1: contentArea.x1,\n y1: contentArea.y1,\n x2: contentArea.x2,\n y2: contentArea.y2,\n },\n highlightArea: {\n x1: contentArea.x1,\n y1: contentArea.y1,\n x2: contentArea.x2,\n y2: contentArea.y2,\n },\n };\n\n return super._$getArea(this.element);\n }\n\n this._contentAreaDimensions.left = {\n hoverArea: {\n x1: contentArea.x1,\n y1: contentArea.y1,\n x2: contentArea.x1 + contentWidth * 0.25,\n y2: contentArea.y2,\n },\n highlightArea: {\n x1: contentArea.x1,\n y1: contentArea.y1,\n x2: contentArea.x1 + contentWidth * 0.5,\n y2: contentArea.y2,\n },\n };\n\n this._contentAreaDimensions.top = {\n hoverArea: {\n x1: contentArea.x1 + contentWidth * 0.25,\n y1: contentArea.y1,\n x2: contentArea.x1 + contentWidth * 0.75,\n y2: contentArea.y1 + contentHeight * 0.5,\n },\n highlightArea: {\n x1: contentArea.x1,\n y1: contentArea.y1,\n x2: contentArea.x2,\n y2: contentArea.y1 + contentHeight * 0.5,\n },\n };\n\n this._contentAreaDimensions.right = {\n hoverArea: {\n x1: contentArea.x1 + contentWidth * 0.75,\n y1: contentArea.y1,\n x2: contentArea.x2,\n y2: contentArea.y2,\n },\n highlightArea: {\n x1: contentArea.x1 + contentWidth * 0.5,\n y1: contentArea.y1,\n x2: contentArea.x2,\n y2: contentArea.y2,\n },\n };\n\n this._contentAreaDimensions.bottom = {\n hoverArea: {\n x1: contentArea.x1 + contentWidth * 0.25,\n y1: contentArea.y1 + contentHeight * 0.5,\n x2: contentArea.x1 + contentWidth * 0.75,\n y2: contentArea.y2,\n },\n highlightArea: {\n x1: contentArea.x1,\n y1: contentArea.y1 + contentHeight * 0.5,\n x2: contentArea.x2,\n y2: contentArea.y2,\n },\n };\n\n return super._$getArea(this.element);\n }\n\n _highlightHeaderDropZone(x: number) {\n const tabsLength = this.header.tabs.length;\n\n // I've omitted code for side edge tabs here\n // illumon doesn't need it, will slowly pull that code out elsewhere too\n\n // Empty stack\n if (tabsLength === 0) {\n const headerOffset = this.header.element.offset();\n\n // we don't have a placeholder to measure in the dom, lets just cheat and make it 100px.\n this.layoutManager.dropTargetIndicator?.highlightArea({\n x1: headerOffset?.left ?? 0,\n x2: (headerOffset?.left ?? 0) + 100,\n y1: this.header.element.offset()?.top ?? 0,\n y2:\n (this.header.element.offset()?.top ?? 0) +\n (this.header.element.innerHeight() ?? 0),\n });\n\n return;\n }\n\n const tabsContainer = this.header.tabsContainer;\n const tabsContainerRect = tabsContainer.get(0)?.getBoundingClientRect();\n const placeholderRect = this.layoutManager.tabDropPlaceholder\n .get(0)\n ?.getBoundingClientRect();\n\n if (!tabsContainerRect || !placeholderRect) {\n return;\n }\n\n if (x < tabsContainerRect.left) {\n // is over left tab controls button\n // move x to a new point to inside left edge of container\n x = tabsContainerRect.left + 1;\n } else if (x > tabsContainerRect.right) {\n // is over right tab controls button\n // move x to a new point to inside right edge of container\n x = tabsContainerRect.right - 1;\n }\n\n let tabElement: JQuery<HTMLElement> | undefined;\n let tabRect: DOMRect | undefined;\n\n // if its not inide a placeholder,\n if (!(placeholderRect.left < x && x < placeholderRect.right)) {\n // which tab is it over ...\n for (var i = 0; i < tabsLength; i++) {\n tabElement = this.header.tabs[i].element;\n tabRect = tabElement.get(0)?.getBoundingClientRect();\n if (tabRect && tabRect.left < x && x < tabRect.right) {\n this._dropIndex = i;\n break;\n }\n }\n\n // we have tabRect at this x,y from the loop above\n if (tabElement && tabRect && x < tabRect.left + tabRect.width * 0.5) {\n // mostly before an element, insert placeholder before\n tabElement.before(this.layoutManager.tabDropPlaceholder);\n } else if (tabElement) {\n // x is likely after the lhe last item, position after and increase drop index\n this._dropIndex = Math.min((this._dropIndex ?? 0) + 1, tabsLength);\n tabElement.after(this.layoutManager.tabDropPlaceholder);\n }\n }\n\n let placeHolderLeft =\n this.layoutManager.tabDropPlaceholder.offset()?.left ?? 0;\n placeHolderLeft = Math.max(\n placeHolderLeft,\n this.header.tabsContainer.offset()?.left ?? 0\n );\n var placeHolderRight =\n placeHolderLeft + (this.layoutManager.tabDropPlaceholder.width() ?? 0);\n placeHolderRight = Math.min(\n placeHolderRight,\n (this.header.tabsContainer.offset()?.left ?? 0) +\n (this.header.tabsContainer.innerWidth() ?? 0)\n );\n this.layoutManager.dropTargetIndicator?.highlightArea({\n x1: placeHolderLeft,\n x2: placeHolderRight,\n y1: this.header.element.offset()?.top ?? 0,\n y2:\n (this.header.element.offset()?.top ?? 0) +\n (this.header.element.innerHeight() ?? 0),\n });\n }\n\n _resetHeaderDropZone() {\n this.layoutManager.tabDropPlaceholder.remove();\n }\n\n _setupHeaderPosition() {\n const side = ['right', 'left', 'bottom'].some(\n elem => elem === this._header.show\n )\n ? this._header.show\n : undefined;\n\n this.header.element.toggle(!!this._header.show);\n\n if (!side) {\n return;\n }\n\n this._side = side;\n this._sided = ['right', 'left'].indexOf(this._side.toString()) >= 0;\n this.element.removeClass('lm_left lm_right lm_bottom');\n if (this._side) this.element.addClass('lm_' + this._side);\n if (this.element.find('.lm_header').length && this.childElementContainer) {\n const headerPosition =\n ['right', 'bottom'].indexOf(this._side.toString()) >= 0\n ? 'before'\n : 'after';\n this.header.element[headerPosition](this.childElementContainer);\n this.callDownwards('setSize');\n }\n }\n\n _highlightBodyDropZone(segment: BodySegment) {\n const highlightArea = this._contentAreaDimensions?.[segment]?.highlightArea;\n if (highlightArea) {\n this.layoutManager.dropTargetIndicator?.highlightArea(highlightArea);\n }\n this._dropSegment = segment;\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["default","AbstractContentItem","ContentItem","Component","Root","RowOrColumn","Stack"],"sources":["../../src/items/index.ts"],"sourcesContent":["export * from './AbstractContentItem';\nexport { default as AbstractContentItem } from './AbstractContentItem';\nexport { default as ContentItem } from './AbstractContentItem';\nexport { default as Component } from './Component';\nexport { default as Root } from './Root';\nexport { default as RowOrColumn } from './RowOrColumn';\nexport { default as Stack } from './Stack';\n"],"mappings":";SACSA,OAAO,IAAIC,mBAAmB;AAAA,SAC9BD,OAAO,IAAIE,WAAW;AAAA,SACtBF,OAAO,IAAIG,SAAS;AAAA,SACpBH,OAAO,IAAII,IAAI;AAAA,SACfJ,OAAO,IAAIK,WAAW;AAAA,SACtBL,OAAO,IAAIM,KAAK","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["default","AbstractContentItem","ContentItem","Component","Root","RowOrColumn","Stack"],"sources":["../../src/items/index.ts"],"sourcesContent":["export * from './AbstractContentItem';\nexport { default as AbstractContentItem } from './AbstractContentItem';\nexport { default as ContentItem } from './AbstractContentItem';\nexport { default as Component } from './Component';\nexport { default as Root } from './Root';\nexport { default as RowOrColumn } from './RowOrColumn';\nexport { default as Stack } from './Stack';\n"],"mappings":";SACSA,OAAO,IAAIC,mBAAmB;AAAA,SAC9BD,OAAO,IAAIE,WAAW;AAAA,SACtBF,OAAO,IAAIG,SAAS;AAAA,SACpBH,OAAO,IAAII,IAAI;AAAA,SACfJ,OAAO,IAAIK,WAAW;AAAA,SACtBL,OAAO,IAAIM,KAAK"}
@@ -1 +1 @@
1
- {"version":3,"file":"BubblingEvent.js","names":["BubblingEvent","constructor","name","origin","_defineProperty","isPropagationStopped","stopPropagation"],"sources":["../../src/utils/BubblingEvent.ts"],"sourcesContent":["export default class BubblingEvent {\n name: string;\n\n origin: unknown;\n\n isPropagationStopped: boolean;\n\n constructor(name: string, origin: unknown) {\n this.name = name;\n this.origin = origin;\n this.isPropagationStopped = false;\n }\n\n stopPropagation() {\n this.isPropagationStopped = true;\n }\n}\n"],"mappings":";;;AAAA,eAAe,MAAMA,aAAa,CAAC;EAOjCC,WAAWA,CAACC,IAAY,EAAEC,MAAe,EAAE;IAAAC,eAAA;IAAAA,eAAA;IAAAA,eAAA;IACzC,IAAI,CAACF,IAAI,GAAGA,IAAI;IAChB,IAAI,CAACC,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACE,oBAAoB,GAAG,KAAK;EACnC;EAEAC,eAAeA,CAAA,EAAG;IAChB,IAAI,CAACD,oBAAoB,GAAG,IAAI;EAClC;AACF","ignoreList":[]}
1
+ {"version":3,"file":"BubblingEvent.js","names":["BubblingEvent","constructor","name","origin","_defineProperty","isPropagationStopped","stopPropagation"],"sources":["../../src/utils/BubblingEvent.ts"],"sourcesContent":["export default class BubblingEvent {\n name: string;\n\n origin: unknown;\n\n isPropagationStopped: boolean;\n\n constructor(name: string, origin: unknown) {\n this.name = name;\n this.origin = origin;\n this.isPropagationStopped = false;\n }\n\n stopPropagation() {\n this.isPropagationStopped = true;\n }\n}\n"],"mappings":";;;AAAA,eAAe,MAAMA,aAAa,CAAC;EAOjCC,WAAWA,CAACC,IAAY,EAAEC,MAAe,EAAE;IAAAC,eAAA;IAAAA,eAAA;IAAAA,eAAA;IACzC,IAAI,CAACF,IAAI,GAAGA,IAAI;IAChB,IAAI,CAACC,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACE,oBAAoB,GAAG,KAAK;EACnC;EAEAC,eAAeA,CAAA,EAAG;IAChB,IAAI,CAACD,oBAAoB,GAAG,IAAI;EAClC;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"ConfigMinifier.js","names":["_keys","_values","minifyConfig","config","length","Error","min","_nextLevel","unminifyConfig","minifiedConfig","orig","from","to","translationFnName","translationFn","_min","_max","key","hasOwnProperty","fromItem","Array","isArray","Number","parseInt","toItem","minKey","value","dictionary","index","indexOf","toString","substr"],"sources":["../../src/utils/ConfigMinifier.ts"],"sourcesContent":["import type { Config } from '../config';\n\n/**\n * Minifies and unminifies configs by replacing frequent keys\n * and values with one letter substitutes. Config options must\n * retain array position/index, add new options at the end.\n */\n\nconst _keys = [\n 'settings',\n 'hasHeaders',\n 'constrainDragToContainer',\n 'selectionEnabled',\n 'dimensions',\n 'borderWidth',\n 'minItemHeight',\n 'minItemWidth',\n 'headerHeight',\n 'dragProxyWidth',\n 'dragProxyHeight',\n 'labels',\n 'close',\n 'maximise',\n 'minimise',\n 'popout',\n 'content',\n 'componentName',\n 'componentState',\n 'id',\n 'width',\n 'type',\n 'height',\n 'isClosable',\n 'title',\n 'popoutWholeStack',\n 'openPopouts',\n 'parentId',\n 'activeItemIndex',\n 'reorderEnabled',\n 'borderGrabWidth',\n\n //Maximum 36 entries, do not cross this line!\n];\n\nconst _values = [\n true,\n false,\n 'row',\n 'column',\n 'stack',\n 'component',\n 'close',\n 'maximise',\n 'minimise',\n 'open in new window',\n];\n\n/**\n * Takes a GoldenLayout configuration object and\n * replaces its keys and values recursively with\n * one letter counterparts\n *\n * @param config A GoldenLayout config object\n *\n * @returns minified config\n */\nexport function minifyConfig(config: Partial<Config>) {\n if (_keys.length > 36) {\n throw new Error('Too many keys in config minifier map');\n }\n\n const min = {};\n _nextLevel(config, min, '_min');\n return min;\n}\n\n/**\n * Takes a configuration Object that was previously minified\n * using minifyConfig and returns its original version\n *\n * @param minifiedConfig\n *\n * @returns the original configuration\n */\nexport function unminifyConfig(\n minifiedConfig: Record<string, unknown>\n): Config {\n if (_keys.length > 36) {\n throw new Error('Too many keys in config minifier map');\n }\n\n const orig = {};\n _nextLevel(minifiedConfig, orig, '_max');\n return orig as Config;\n}\n\n/**\n * Recursive function, called for every level of the config structure\n *\n * @param orig\n * @param min\n * @param translationFnName\n */\nfunction _nextLevel(\n from: unknown[] | Record<string, unknown>,\n to: unknown[] | Record<string, unknown>,\n translationFnName: '_min' | '_max'\n) {\n const translationFn = translationFnName === '_min' ? _min : _max;\n for (let key in from) {\n /**\n * In case something has extended Object prototypes\n */\n if (!from.hasOwnProperty(key)) continue;\n\n const fromItem = Array.isArray(from)\n ? from[Number.parseInt(key, 10)]\n : from[key];\n /**\n * For Arrays and Objects, create a new Array/Object\n * on the minified object and recurse into it\n */\n if (typeof fromItem === 'object' && fromItem != null) {\n const toItem = fromItem instanceof Array ? [] : {};\n\n if (Array.isArray(to)) {\n to[Number.parseInt(key, 10)] = toItem;\n } else {\n const minKey = translationFn(key, _keys);\n to[minKey] = toItem;\n }\n\n _nextLevel(\n fromItem as Record<string, unknown>,\n toItem,\n translationFnName\n );\n\n /**\n * For primitive values (Strings, Numbers, Boolean etc.)\n * minify the value\n */\n } else {\n const toItem = translationFn(fromItem, _values);\n\n if (Array.isArray(to)) {\n to[Number.parseInt(key, 10)] = toItem;\n } else {\n const minKey = translationFn(key, _keys);\n to[minKey] = toItem;\n }\n }\n }\n}\n\n/**\n * Minifies value based on a dictionary\n *\n * @param value\n * @param dictionary\n *\n * @returns The minified version\n */\nfunction _min<T>(value: T, dictionary: T[]): T | string {\n /**\n * If a value actually is a single character, prefix it\n * with ___ to avoid mistaking it for a minification code\n */\n if (typeof value === 'string' && value.length === 1) {\n return '___' + value;\n }\n\n var index = dictionary.indexOf(value);\n\n /**\n * value not found in the dictionary, return it unmodified\n */\n if (index === -1) {\n return value;\n\n /**\n * value found in dictionary, return its base36 counterpart\n */\n } else {\n return index.toString(36);\n }\n}\n\nfunction _max<T>(value: T, dictionary: T[]): T | string {\n /**\n * value is a single character. Assume that it's a translation\n * and return the original value from the dictionary\n */\n if (typeof value === 'string' && value.length === 1) {\n return dictionary[parseInt(value, 36)];\n }\n\n /**\n * value originally was a single character and was prefixed with ___\n * to avoid mistaking it for a translation. Remove the prefix\n * and return the original character\n */\n if (typeof value === 'string' && value.substr(0, 3) === '___') {\n return value[3];\n }\n /**\n * value was not minified\n */\n return value;\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ConfigMinifier.js","names":["_keys","_values","minifyConfig","config","length","Error","min","_nextLevel","unminifyConfig","minifiedConfig","orig","from","to","translationFnName","translationFn","_min","_max","key","hasOwnProperty","fromItem","Array","isArray","Number","parseInt","toItem","minKey","value","dictionary","index","indexOf","toString","substr"],"sources":["../../src/utils/ConfigMinifier.ts"],"sourcesContent":["import type { Config } from '../config';\n\n/**\n * Minifies and unminifies configs by replacing frequent keys\n * and values with one letter substitutes. Config options must\n * retain array position/index, add new options at the end.\n */\n\nconst _keys = [\n 'settings',\n 'hasHeaders',\n 'constrainDragToContainer',\n 'selectionEnabled',\n 'dimensions',\n 'borderWidth',\n 'minItemHeight',\n 'minItemWidth',\n 'headerHeight',\n 'dragProxyWidth',\n 'dragProxyHeight',\n 'labels',\n 'close',\n 'maximise',\n 'minimise',\n 'popout',\n 'content',\n 'componentName',\n 'componentState',\n 'id',\n 'width',\n 'type',\n 'height',\n 'isClosable',\n 'title',\n 'popoutWholeStack',\n 'openPopouts',\n 'parentId',\n 'activeItemIndex',\n 'reorderEnabled',\n 'borderGrabWidth',\n\n //Maximum 36 entries, do not cross this line!\n];\n\nconst _values = [\n true,\n false,\n 'row',\n 'column',\n 'stack',\n 'component',\n 'close',\n 'maximise',\n 'minimise',\n 'open in new window',\n];\n\n/**\n * Takes a GoldenLayout configuration object and\n * replaces its keys and values recursively with\n * one letter counterparts\n *\n * @param config A GoldenLayout config object\n *\n * @returns minified config\n */\nexport function minifyConfig(config: Partial<Config>) {\n if (_keys.length > 36) {\n throw new Error('Too many keys in config minifier map');\n }\n\n const min = {};\n _nextLevel(config, min, '_min');\n return min;\n}\n\n/**\n * Takes a configuration Object that was previously minified\n * using minifyConfig and returns its original version\n *\n * @param minifiedConfig\n *\n * @returns the original configuration\n */\nexport function unminifyConfig(\n minifiedConfig: Record<string, unknown>\n): Config {\n if (_keys.length > 36) {\n throw new Error('Too many keys in config minifier map');\n }\n\n const orig = {};\n _nextLevel(minifiedConfig, orig, '_max');\n return orig as Config;\n}\n\n/**\n * Recursive function, called for every level of the config structure\n *\n * @param orig\n * @param min\n * @param translationFnName\n */\nfunction _nextLevel(\n from: unknown[] | Record<string, unknown>,\n to: unknown[] | Record<string, unknown>,\n translationFnName: '_min' | '_max'\n) {\n const translationFn = translationFnName === '_min' ? _min : _max;\n for (let key in from) {\n /**\n * In case something has extended Object prototypes\n */\n if (!from.hasOwnProperty(key)) continue;\n\n const fromItem = Array.isArray(from)\n ? from[Number.parseInt(key, 10)]\n : from[key];\n /**\n * For Arrays and Objects, create a new Array/Object\n * on the minified object and recurse into it\n */\n if (typeof fromItem === 'object' && fromItem != null) {\n const toItem = fromItem instanceof Array ? [] : {};\n\n if (Array.isArray(to)) {\n to[Number.parseInt(key, 10)] = toItem;\n } else {\n const minKey = translationFn(key, _keys);\n to[minKey] = toItem;\n }\n\n _nextLevel(\n fromItem as Record<string, unknown>,\n toItem,\n translationFnName\n );\n\n /**\n * For primitive values (Strings, Numbers, Boolean etc.)\n * minify the value\n */\n } else {\n const toItem = translationFn(fromItem, _values);\n\n if (Array.isArray(to)) {\n to[Number.parseInt(key, 10)] = toItem;\n } else {\n const minKey = translationFn(key, _keys);\n to[minKey] = toItem;\n }\n }\n }\n}\n\n/**\n * Minifies value based on a dictionary\n *\n * @param value\n * @param dictionary\n *\n * @returns The minified version\n */\nfunction _min<T>(value: T, dictionary: T[]): T | string {\n /**\n * If a value actually is a single character, prefix it\n * with ___ to avoid mistaking it for a minification code\n */\n if (typeof value === 'string' && value.length === 1) {\n return '___' + value;\n }\n\n var index = dictionary.indexOf(value);\n\n /**\n * value not found in the dictionary, return it unmodified\n */\n if (index === -1) {\n return value;\n\n /**\n * value found in dictionary, return its base36 counterpart\n */\n } else {\n return index.toString(36);\n }\n}\n\nfunction _max<T>(value: T, dictionary: T[]): T | string {\n /**\n * value is a single character. Assume that it's a translation\n * and return the original value from the dictionary\n */\n if (typeof value === 'string' && value.length === 1) {\n return dictionary[parseInt(value, 36)];\n }\n\n /**\n * value originally was a single character and was prefixed with ___\n * to avoid mistaking it for a translation. Remove the prefix\n * and return the original character\n */\n if (typeof value === 'string' && value.substr(0, 3) === '___') {\n return value[3];\n }\n /**\n * value was not minified\n */\n return value;\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"DragListener.js","names":["$","EventEmitter","DragListener","constructor","eElement","_this$_eElement","destroyAfterMouseUp","arguments","length","undefined","_defineProperty","_eElement","_oDocument","document","_eBody","body","_destroyAfterMouseUp","onMouseMove","bind","onMouseUp","onMouseDown","_startDrag","on","destroy","_this$_eElement2","_this$_oDocument","unbind","clearTimeout","_timeout","oEvent","preventDefault","button","_coordinates$x","_coordinates$y","_this$_oDocument2","_this$_oDocument3","coordinates","_getCoordinates","_nOriginalX","x","_nOriginalY","y","window","setTimeout","_nDelay","_coordinates$x2","_coordinates$y2","_nX","_nY","_bDragging","Math","abs","_nDistance","emit","_this$_oDocument4","_this$_oDocument5","_this$_oDocument6","_this$_oDocument6$fin","_this$_eBody","find","css","removeClass","Window","_this$_eElement3","_this$_eBody2","_this$_eElement4","_this$_oDocument7","_this$_oDocument7$fin","addClass","event","_event$pageX","_event$pageY","pageX","pageY"],"sources":["../../src/utils/DragListener.ts"],"sourcesContent":["import $ from 'jquery';\nimport EventEmitter from './EventEmitter';\n\nexport type DragListenerEvent = Pick<\n JQuery.TriggeredEvent,\n 'button' | 'pageX' | 'pageY' | 'preventDefault'\n>;\n\nclass DragListener extends EventEmitter {\n private _eElement: JQuery<HTMLElement> | undefined;\n private _oDocument: JQuery<Document> | undefined;\n private _eBody: JQuery<HTMLElement> | undefined;\n\n private _destroyAfterMouseUp: boolean;\n\n /**\n * The delay after which to start the drag in milliseconds\n */\n private _nDelay = 400;\n\n private _timeout: number | undefined;\n public timeout: number | undefined;\n\n /**\n * The distance the mouse needs to be moved to qualify as a drag\n */\n private _nDistance = 10; //TODO - works better with delay only\n\n private _nX = 0;\n private _nY = 0;\n\n private _nOriginalX = 0;\n private _nOriginalY = 0;\n\n private _bDragging = false;\n\n constructor(eElement: JQuery<HTMLElement>, destroyAfterMouseUp = false) {\n super();\n\n this._eElement = eElement;\n this._oDocument = $(document);\n this._eBody = $(document.body);\n // used by drag sources, to destroy listener at the right time\n this._destroyAfterMouseUp = destroyAfterMouseUp;\n\n this.onMouseMove = this.onMouseMove.bind(this);\n this.onMouseUp = this.onMouseUp.bind(this);\n this.onMouseDown = this.onMouseDown.bind(this);\n this._startDrag = this._startDrag.bind(this);\n\n // https://github.com/microsoft/TypeScript/issues/48546\n this._eElement?.on('mousedown', this.onMouseDown);\n }\n\n destroy() {\n this._eElement?.unbind('mousedown', this.onMouseDown);\n this._oDocument?.unbind('mouseup', this.onMouseUp);\n\n this._eElement = undefined;\n this._oDocument = undefined;\n this._eBody = undefined;\n\n clearTimeout(this._timeout);\n this._timeout = undefined;\n }\n\n onMouseDown(oEvent: DragListenerEvent) {\n oEvent.preventDefault();\n\n if (oEvent.button === 0) {\n var coordinates = this._getCoordinates(oEvent);\n\n this._nOriginalX = coordinates.x ?? 0;\n this._nOriginalY = coordinates.y ?? 0;\n\n this._oDocument?.on('mousemove', this.onMouseMove);\n this._oDocument?.on('mouseup', this.onMouseUp);\n\n this._timeout = window.setTimeout(this._startDrag, this._nDelay);\n }\n }\n\n onMouseMove(oEvent: DragListenerEvent) {\n if (this._timeout != null) {\n oEvent.preventDefault();\n\n var coordinates = this._getCoordinates(oEvent);\n\n this._nX = (coordinates.x ?? 0) - this._nOriginalX;\n this._nY = (coordinates.y ?? 0) - this._nOriginalY;\n\n if (this._bDragging === false) {\n if (\n Math.abs(this._nX) > this._nDistance ||\n Math.abs(this._nY) > this._nDistance\n ) {\n this._startDrag();\n }\n }\n\n if (this._bDragging) {\n this.emit('drag', this._nX, this._nY, oEvent);\n }\n }\n }\n\n onMouseUp(oEvent: DragListenerEvent) {\n if (this._timeout != null) {\n clearTimeout(this._timeout);\n this._oDocument?.unbind('mousemove', this.onMouseMove);\n this._oDocument?.unbind('mouseup', this.onMouseUp);\n this._oDocument?.find('iframe')?.css('pointer-events', '');\n\n if (this._bDragging === true) {\n this._bDragging = false;\n this.emit('dragStop', oEvent, this._nOriginalX + this._nX);\n }\n\n // after dragStop, so that .lm_dragging is removed after size is processed\n // and any overflow: hidden remains applied during the calculations\n this._eBody?.removeClass('lm_dragging');\n if (!(this._eElement instanceof Window)) {\n this._eElement?.removeClass('lm_dragging');\n }\n\n if (this._destroyAfterMouseUp) this.destroy();\n }\n }\n\n _startDrag() {\n window.clearTimeout(this._timeout);\n this._bDragging = true;\n this._eBody?.addClass('lm_dragging');\n this._eElement?.addClass('lm_dragging');\n this._oDocument?.find('iframe')?.css('pointer-events', 'none');\n this.emit('dragStart', this._nOriginalX, this._nOriginalY);\n }\n\n _getCoordinates(event: DragListenerEvent) {\n return {\n x: event.pageX ?? 0,\n y: event.pageY ?? 0,\n };\n }\n}\n\nexport default DragListener;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"DragListener.js","names":["$","EventEmitter","DragListener","constructor","eElement","_this$_eElement","destroyAfterMouseUp","arguments","length","undefined","_defineProperty","_eElement","_oDocument","document","_eBody","body","_destroyAfterMouseUp","onMouseMove","bind","onMouseUp","onMouseDown","_startDrag","on","destroy","_this$_eElement2","_this$_oDocument","unbind","clearTimeout","_timeout","oEvent","preventDefault","button","_coordinates$x","_coordinates$y","_this$_oDocument2","_this$_oDocument3","coordinates","_getCoordinates","_nOriginalX","x","_nOriginalY","y","window","setTimeout","_nDelay","_coordinates$x2","_coordinates$y2","_nX","_nY","_bDragging","Math","abs","_nDistance","emit","_this$_oDocument4","_this$_oDocument5","_this$_oDocument6","_this$_oDocument6$fin","_this$_eBody","find","css","removeClass","Window","_this$_eElement3","_this$_eBody2","_this$_eElement4","_this$_oDocument7","_this$_oDocument7$fin","addClass","event","_event$pageX","_event$pageY","pageX","pageY"],"sources":["../../src/utils/DragListener.ts"],"sourcesContent":["import $ from 'jquery';\nimport EventEmitter from './EventEmitter';\n\nexport type DragListenerEvent = Pick<\n JQuery.TriggeredEvent,\n 'button' | 'pageX' | 'pageY' | 'preventDefault'\n>;\n\nclass DragListener extends EventEmitter {\n private _eElement: JQuery<HTMLElement> | undefined;\n private _oDocument: JQuery<Document> | undefined;\n private _eBody: JQuery<HTMLElement> | undefined;\n\n private _destroyAfterMouseUp: boolean;\n\n /**\n * The delay after which to start the drag in milliseconds\n */\n private _nDelay = 400;\n\n private _timeout: number | undefined;\n public timeout: number | undefined;\n\n /**\n * The distance the mouse needs to be moved to qualify as a drag\n */\n private _nDistance = 10; //TODO - works better with delay only\n\n private _nX = 0;\n private _nY = 0;\n\n private _nOriginalX = 0;\n private _nOriginalY = 0;\n\n private _bDragging = false;\n\n constructor(eElement: JQuery<HTMLElement>, destroyAfterMouseUp = false) {\n super();\n\n this._eElement = eElement;\n this._oDocument = $(document);\n this._eBody = $(document.body);\n // used by drag sources, to destroy listener at the right time\n this._destroyAfterMouseUp = destroyAfterMouseUp;\n\n this.onMouseMove = this.onMouseMove.bind(this);\n this.onMouseUp = this.onMouseUp.bind(this);\n this.onMouseDown = this.onMouseDown.bind(this);\n this._startDrag = this._startDrag.bind(this);\n\n // https://github.com/microsoft/TypeScript/issues/48546\n this._eElement?.on('mousedown', this.onMouseDown);\n }\n\n destroy() {\n this._eElement?.unbind('mousedown', this.onMouseDown);\n this._oDocument?.unbind('mouseup', this.onMouseUp);\n\n this._eElement = undefined;\n this._oDocument = undefined;\n this._eBody = undefined;\n\n clearTimeout(this._timeout);\n this._timeout = undefined;\n }\n\n onMouseDown(oEvent: DragListenerEvent) {\n oEvent.preventDefault();\n\n if (oEvent.button === 0) {\n var coordinates = this._getCoordinates(oEvent);\n\n this._nOriginalX = coordinates.x ?? 0;\n this._nOriginalY = coordinates.y ?? 0;\n\n this._oDocument?.on('mousemove', this.onMouseMove);\n this._oDocument?.on('mouseup', this.onMouseUp);\n\n this._timeout = window.setTimeout(this._startDrag, this._nDelay);\n }\n }\n\n onMouseMove(oEvent: DragListenerEvent) {\n if (this._timeout != null) {\n oEvent.preventDefault();\n\n var coordinates = this._getCoordinates(oEvent);\n\n this._nX = (coordinates.x ?? 0) - this._nOriginalX;\n this._nY = (coordinates.y ?? 0) - this._nOriginalY;\n\n if (this._bDragging === false) {\n if (\n Math.abs(this._nX) > this._nDistance ||\n Math.abs(this._nY) > this._nDistance\n ) {\n this._startDrag();\n }\n }\n\n if (this._bDragging) {\n this.emit('drag', this._nX, this._nY, oEvent);\n }\n }\n }\n\n onMouseUp(oEvent: DragListenerEvent) {\n if (this._timeout != null) {\n clearTimeout(this._timeout);\n this._oDocument?.unbind('mousemove', this.onMouseMove);\n this._oDocument?.unbind('mouseup', this.onMouseUp);\n this._oDocument?.find('iframe')?.css('pointer-events', '');\n\n if (this._bDragging === true) {\n this._bDragging = false;\n this.emit('dragStop', oEvent, this._nOriginalX + this._nX);\n }\n\n // after dragStop, so that .lm_dragging is removed after size is processed\n // and any overflow: hidden remains applied during the calculations\n this._eBody?.removeClass('lm_dragging');\n if (!(this._eElement instanceof Window)) {\n this._eElement?.removeClass('lm_dragging');\n }\n\n if (this._destroyAfterMouseUp) this.destroy();\n }\n }\n\n _startDrag() {\n window.clearTimeout(this._timeout);\n this._bDragging = true;\n this._eBody?.addClass('lm_dragging');\n this._eElement?.addClass('lm_dragging');\n this._oDocument?.find('iframe')?.css('pointer-events', 'none');\n this.emit('dragStart', this._nOriginalX, this._nOriginalY);\n }\n\n _getCoordinates(event: DragListenerEvent) {\n return {\n x: event.pageX ?? 0,\n y: event.pageY ?? 0,\n };\n }\n}\n\nexport default DragListener;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"EventEmitter.js","names":["EventEmitter","constructor","_defineProperty","unbind","emit","_mSubscriptions","ALL_EVENT","on","eventName","callback","context","Error","push","fn","ctx","subs","_len","arguments","length","args","Array","_key","i","apply","e","console","error","unshift","allEventSubs","bUnbound","splice"],"sources":["../../src/utils/EventEmitter.ts"],"sourcesContent":["/**\n * A generic and very fast EventEmitter\n * implementation. On top of emitting the\n * actual event it emits an\n *\n * EventEmitter.ALL_EVENT\n *\n * event for every event triggered. This allows\n * to hook into it and proxy events forwards\n *\n * @constructor\n */\nclass EventEmitter {\n /**\n * The name of the event that's triggered for every other event\n *\n * usage\n *\n * myEmitter.on( EventEmitter.ALL_EVENT, function( eventName, argsArray ){\n * \t//do stuff\n * });\n */\n static ALL_EVENT = '__all';\n\n private _mSubscriptions: Record<string, { fn: Function; ctx?: unknown }[]>;\n\n constructor() {\n this._mSubscriptions = {};\n this._mSubscriptions[EventEmitter.ALL_EVENT] = [];\n }\n\n /**\n * Listen for events\n *\n * @param eventName The name of the event to listen to\n * @param callback The callback to execute when the event occurs\n * @param context The value of the this pointer within the callback function\n */\n on(eventName: string, callback: Function, context?: unknown): void {\n if (typeof callback !== 'function') {\n throw new Error(\n 'Tried to listen to event ' +\n eventName +\n ' with non-function callback ' +\n callback\n );\n }\n\n if (!this._mSubscriptions[eventName]) {\n this._mSubscriptions[eventName] = [];\n }\n\n this._mSubscriptions[eventName].push({ fn: callback, ctx: context });\n }\n\n /**\n * Emit an event and notify listeners\n *\n * @param eventName The name of the event\n * @param args additional arguments that will be passed to the listener\n */\n emit(eventName: string, ...args: unknown[]) {\n const subs = this._mSubscriptions[eventName];\n\n if (subs) {\n for (let i = 0; i < subs.length; i++) {\n const ctx = subs[i].ctx || {};\n try {\n subs[i].fn.apply(ctx, args);\n } catch (e) {\n console.error('Error while emitting event:', e);\n }\n }\n }\n\n args.unshift(eventName);\n\n const allEventSubs = this._mSubscriptions[EventEmitter.ALL_EVENT];\n\n for (let i = 0; i < allEventSubs.length; i++) {\n const ctx = allEventSubs[i].ctx || {};\n try {\n allEventSubs[i].fn.apply(ctx, args);\n } catch (e) {\n console.error('Error while emitting event to allEventSubs:', e);\n }\n }\n }\n\n /**\n * Removes a listener for an event, or all listeners if no callback and context is provided.\n *\n * @param eventName The name of the event\n * @param callback The previously registered callback method (optional)\n * @param context The previously registered context (optional)\n */\n unbind(eventName: string, callback?: Function, context?: unknown) {\n if (!this._mSubscriptions[eventName]) {\n throw new Error('No subscriptions to unsubscribe for event ' + eventName);\n }\n\n let bUnbound = false;\n\n for (let i = 0; i < this._mSubscriptions[eventName].length; i++) {\n if (\n (!callback || this._mSubscriptions[eventName][i].fn === callback) &&\n (!context || context === this._mSubscriptions[eventName][i].ctx)\n ) {\n this._mSubscriptions[eventName].splice(i, 1);\n bUnbound = true;\n }\n }\n\n if (bUnbound === false) {\n throw new Error('Nothing to unbind for ' + eventName);\n }\n }\n\n /**\n * Alias for unbind\n */\n off = this.unbind;\n\n /**\n * Alias for emit\n */\n trigger = this.emit;\n}\n\nexport default EventEmitter;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"EventEmitter.js","names":["EventEmitter","constructor","_defineProperty","unbind","emit","_mSubscriptions","ALL_EVENT","on","eventName","callback","context","Error","push","fn","ctx","subs","_len","arguments","length","args","Array","_key","i","apply","e","console","error","unshift","allEventSubs","bUnbound","splice"],"sources":["../../src/utils/EventEmitter.ts"],"sourcesContent":["/**\n * A generic and very fast EventEmitter\n * implementation. On top of emitting the\n * actual event it emits an\n *\n * EventEmitter.ALL_EVENT\n *\n * event for every event triggered. This allows\n * to hook into it and proxy events forwards\n *\n * @constructor\n */\nclass EventEmitter {\n /**\n * The name of the event that's triggered for every other event\n *\n * usage\n *\n * myEmitter.on( EventEmitter.ALL_EVENT, function( eventName, argsArray ){\n * \t//do stuff\n * });\n */\n static ALL_EVENT = '__all';\n\n private _mSubscriptions: Record<string, { fn: Function; ctx?: unknown }[]>;\n\n constructor() {\n this._mSubscriptions = {};\n this._mSubscriptions[EventEmitter.ALL_EVENT] = [];\n }\n\n /**\n * Listen for events\n *\n * @param eventName The name of the event to listen to\n * @param callback The callback to execute when the event occurs\n * @param context The value of the this pointer within the callback function\n */\n on(eventName: string, callback: Function, context?: unknown): void {\n if (typeof callback !== 'function') {\n throw new Error(\n 'Tried to listen to event ' +\n eventName +\n ' with non-function callback ' +\n callback\n );\n }\n\n if (!this._mSubscriptions[eventName]) {\n this._mSubscriptions[eventName] = [];\n }\n\n this._mSubscriptions[eventName].push({ fn: callback, ctx: context });\n }\n\n /**\n * Emit an event and notify listeners\n *\n * @param eventName The name of the event\n * @param args additional arguments that will be passed to the listener\n */\n emit(eventName: string, ...args: unknown[]) {\n const subs = this._mSubscriptions[eventName];\n\n if (subs) {\n for (let i = 0; i < subs.length; i++) {\n const ctx = subs[i].ctx || {};\n try {\n subs[i].fn.apply(ctx, args);\n } catch (e) {\n console.error('Error while emitting event:', e);\n }\n }\n }\n\n args.unshift(eventName);\n\n const allEventSubs = this._mSubscriptions[EventEmitter.ALL_EVENT];\n\n for (let i = 0; i < allEventSubs.length; i++) {\n const ctx = allEventSubs[i].ctx || {};\n try {\n allEventSubs[i].fn.apply(ctx, args);\n } catch (e) {\n console.error('Error while emitting event to allEventSubs:', e);\n }\n }\n }\n\n /**\n * Removes a listener for an event, or all listeners if no callback and context is provided.\n *\n * @param eventName The name of the event\n * @param callback The previously registered callback method (optional)\n * @param context The previously registered context (optional)\n */\n unbind(eventName: string, callback?: Function, context?: unknown) {\n if (!this._mSubscriptions[eventName]) {\n throw new Error('No subscriptions to unsubscribe for event ' + eventName);\n }\n\n let bUnbound = false;\n\n for (let i = 0; i < this._mSubscriptions[eventName].length; i++) {\n if (\n (!callback || this._mSubscriptions[eventName][i].fn === callback) &&\n (!context || context === this._mSubscriptions[eventName][i].ctx)\n ) {\n this._mSubscriptions[eventName].splice(i, 1);\n bUnbound = true;\n }\n }\n\n if (bUnbound === false) {\n throw new Error('Nothing to unbind for ' + eventName);\n }\n }\n\n /**\n * Alias for unbind\n */\n off = this.unbind;\n\n /**\n * Alias for emit\n */\n trigger = this.emit;\n}\n\nexport default EventEmitter;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"EventHub.js","names":["$","EventEmitter","EventHub","constructor","layoutManager","_defineProperty","_layoutManager","_dontPropagateToParent","_childEventSource","on","ALL_EVENT","_onEventFromThis","bind","_boundOnEventFromChild","_onEventFromChild","window","_len","arguments","length","args","Array","_key","isSubWindow","_propagateToParent","_propagateToChildren","_$onEventFromParent","emit","apply","event","originalEvent","__gl","__glArgs","_window$opener","eventName","opener","document","createEvent","initEvent","dispatchEvent","i","openPopouts","childGl","getGlInstance","eventHub","destroy","off"],"sources":["../../src/utils/EventHub.ts"],"sourcesContent":["import $ from 'jquery';\nimport type LayoutManager from '../LayoutManager';\nimport EventEmitter from './EventEmitter';\n\ninterface GoldenLayoutEvent extends Event {\n __glArgs: [string, ...unknown[]];\n __gl: LayoutManager;\n}\n\n/**\n * An EventEmitter singleton that propagates events\n * across multiple windows. This is a little bit trickier since\n * windows are allowed to open childWindows in their own right\n *\n * This means that we deal with a tree of windows. Hence the rules for event propagation are:\n *\n * - Propagate events from this layout to both parents and children\n * - Propagate events from parent to this and children\n * - Propagate events from children to the other children (but not the emitting one) and the parent\n */\nclass EventHub extends EventEmitter {\n private _layoutManager: LayoutManager;\n\n private _dontPropagateToParent: string | null;\n\n private _childEventSource: LayoutManager | null;\n\n private _boundOnEventFromChild: (event: JQuery.TriggeredEvent) => void;\n\n constructor(layoutManager: LayoutManager) {\n super();\n this._layoutManager = layoutManager;\n this._dontPropagateToParent = null;\n this._childEventSource = null;\n this.on(EventEmitter.ALL_EVENT, this._onEventFromThis.bind(this));\n this._boundOnEventFromChild = this._onEventFromChild.bind(this);\n $(window).on('gl_child_event', this._boundOnEventFromChild);\n }\n\n /**\n * Called on every event emitted on this eventHub, regardles of origin.\n */\n private _onEventFromThis(...args: [string, ...unknown[]]) {\n if (\n this._layoutManager.isSubWindow &&\n args[0] !== this._dontPropagateToParent\n ) {\n this._propagateToParent(args);\n }\n this._propagateToChildren(args);\n\n //Reset\n this._dontPropagateToParent = null;\n this._childEventSource = null;\n }\n\n /**\n * Called by the parent layout.\n *\n * @param args Event name + arguments\n */\n private _$onEventFromParent(args: [string, ...unknown[]]) {\n this._dontPropagateToParent = args[0];\n this.emit.apply(this, args);\n }\n\n /**\n * Callback for child events raised on the window\n *\n * @param event\n */\n private _onEventFromChild(event: JQuery.TriggeredEvent) {\n this._childEventSource = (event.originalEvent as GoldenLayoutEvent).__gl;\n this.emit.apply(this, (event.originalEvent as GoldenLayoutEvent).__glArgs);\n }\n\n /**\n * Propagates the event to the parent by emitting\n * it on the parent's DOM window\n *\n * @param args Event name + arguments\n */\n private _propagateToParent(args: [string, ...unknown[]]) {\n const eventName = 'gl_child_event';\n\n const event = window.opener?.document.createEvent('HTMLEvents');\n event.initEvent(eventName, true, true);\n\n event.eventName = eventName;\n event.__glArgs = args;\n event.__gl = this._layoutManager;\n\n window.opener.dispatchEvent(event);\n }\n\n /**\n * Propagate events to children\n *\n * @param args Event name + arguments\n */\n private _propagateToChildren(args: [string, ...unknown[]]) {\n for (let i = 0; i < this._layoutManager.openPopouts.length; i++) {\n const childGl = this._layoutManager.openPopouts[i].getGlInstance();\n\n if (childGl && childGl !== this._childEventSource) {\n childGl.eventHub._$onEventFromParent(args);\n }\n }\n }\n\n /**\n * Destroys the EventHub\n */\n destroy() {\n $(window).off('gl_child_event', this._boundOnEventFromChild);\n }\n}\n\nexport default EventHub;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"EventHub.js","names":["$","EventEmitter","EventHub","constructor","layoutManager","_defineProperty","_layoutManager","_dontPropagateToParent","_childEventSource","on","ALL_EVENT","_onEventFromThis","bind","_boundOnEventFromChild","_onEventFromChild","window","_len","arguments","length","args","Array","_key","isSubWindow","_propagateToParent","_propagateToChildren","_$onEventFromParent","emit","apply","event","originalEvent","__gl","__glArgs","_window$opener","eventName","opener","document","createEvent","initEvent","dispatchEvent","i","openPopouts","childGl","getGlInstance","eventHub","destroy","off"],"sources":["../../src/utils/EventHub.ts"],"sourcesContent":["import $ from 'jquery';\nimport type LayoutManager from '../LayoutManager';\nimport EventEmitter from './EventEmitter';\n\ninterface GoldenLayoutEvent extends Event {\n __glArgs: [string, ...unknown[]];\n __gl: LayoutManager;\n}\n\n/**\n * An EventEmitter singleton that propagates events\n * across multiple windows. This is a little bit trickier since\n * windows are allowed to open childWindows in their own right\n *\n * This means that we deal with a tree of windows. Hence the rules for event propagation are:\n *\n * - Propagate events from this layout to both parents and children\n * - Propagate events from parent to this and children\n * - Propagate events from children to the other children (but not the emitting one) and the parent\n */\nclass EventHub extends EventEmitter {\n private _layoutManager: LayoutManager;\n\n private _dontPropagateToParent: string | null;\n\n private _childEventSource: LayoutManager | null;\n\n private _boundOnEventFromChild: (event: JQuery.TriggeredEvent) => void;\n\n constructor(layoutManager: LayoutManager) {\n super();\n this._layoutManager = layoutManager;\n this._dontPropagateToParent = null;\n this._childEventSource = null;\n this.on(EventEmitter.ALL_EVENT, this._onEventFromThis.bind(this));\n this._boundOnEventFromChild = this._onEventFromChild.bind(this);\n $(window).on('gl_child_event', this._boundOnEventFromChild);\n }\n\n /**\n * Called on every event emitted on this eventHub, regardles of origin.\n */\n private _onEventFromThis(...args: [string, ...unknown[]]) {\n if (\n this._layoutManager.isSubWindow &&\n args[0] !== this._dontPropagateToParent\n ) {\n this._propagateToParent(args);\n }\n this._propagateToChildren(args);\n\n //Reset\n this._dontPropagateToParent = null;\n this._childEventSource = null;\n }\n\n /**\n * Called by the parent layout.\n *\n * @param args Event name + arguments\n */\n private _$onEventFromParent(args: [string, ...unknown[]]) {\n this._dontPropagateToParent = args[0];\n this.emit.apply(this, args);\n }\n\n /**\n * Callback for child events raised on the window\n *\n * @param event\n */\n private _onEventFromChild(event: JQuery.TriggeredEvent) {\n this._childEventSource = (event.originalEvent as GoldenLayoutEvent).__gl;\n this.emit.apply(this, (event.originalEvent as GoldenLayoutEvent).__glArgs);\n }\n\n /**\n * Propagates the event to the parent by emitting\n * it on the parent's DOM window\n *\n * @param args Event name + arguments\n */\n private _propagateToParent(args: [string, ...unknown[]]) {\n const eventName = 'gl_child_event';\n\n const event = window.opener?.document.createEvent('HTMLEvents');\n event.initEvent(eventName, true, true);\n\n event.eventName = eventName;\n event.__glArgs = args;\n event.__gl = this._layoutManager;\n\n window.opener.dispatchEvent(event);\n }\n\n /**\n * Propagate events to children\n *\n * @param args Event name + arguments\n */\n private _propagateToChildren(args: [string, ...unknown[]]) {\n for (let i = 0; i < this._layoutManager.openPopouts.length; i++) {\n const childGl = this._layoutManager.openPopouts[i].getGlInstance();\n\n if (childGl && childGl !== this._childEventSource) {\n childGl.eventHub._$onEventFromParent(args);\n }\n }\n }\n\n /**\n * Destroys the EventHub\n */\n destroy() {\n $(window).off('gl_child_event', this._boundOnEventFromChild);\n }\n}\n\nexport default EventHub;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"EventUtils.js","names":["useEffect","useRef","listenForEvent","eventEmitter","event","handler","on","off","makeListenFunction","makeEmitFunction","_len","arguments","length","parameters","Array","_key","emit","makeUseListenerFunction","eventEmitterRef","handlerRef","current","_eventEmitterRef$curr","_eventEmitterRef$curr2","makeEventFunctions","listen","useListener"],"sources":["../../src/utils/EventUtils.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\nimport EventEmitter from './EventEmitter';\n\ntype AsArray<P> = P extends unknown[] ? P : [P];\n\nexport type EventHandlerFunction<P = []> = (...parameters: AsArray<P>) => void;\nexport type EventListenerRemover = () => void;\nexport type EventListenFunction<TParameters = []> = (\n eventEmitter: EventEmitter,\n handler: EventHandlerFunction<TParameters>\n) => EventListenerRemover;\n\nexport type EventEmitFunction<TParameters = []> = (\n eventEmitter: EventEmitter,\n ...parameters: AsArray<TParameters>\n) => void;\n\nexport type EventListenerHook<TParameters = []> = (\n eventEmitter: EventEmitter | null | undefined,\n handler: EventHandlerFunction<TParameters>\n) => void;\n\n/**\n * Listen for an event\n * @param eventEmitter The event emitter to listen to\n * @param event The event to listen for\n * @param handler The handler to call when the event is emitted\n * @returns A function to stop listening for the event\n */\nexport function listenForEvent<TParameters = []>(\n eventEmitter: EventEmitter,\n event: string,\n handler: EventHandlerFunction<TParameters>\n): EventListenerRemover {\n eventEmitter.on(event, handler);\n return () => {\n eventEmitter.off(event, handler);\n };\n}\n\nexport function makeListenFunction<TParameters = []>(\n event: string\n): EventListenFunction<TParameters> {\n return (eventEmitter, handler) =>\n listenForEvent(eventEmitter, event, handler);\n}\n\nexport function makeEmitFunction<TParameters = []>(\n event: string\n): EventEmitFunction<TParameters> {\n return (eventEmitter, ...parameters) => {\n eventEmitter.emit(event, ...parameters);\n };\n}\n\nexport function makeUseListenerFunction<TParameters = []>(\n event: string\n): EventListenerHook<TParameters> {\n return (eventEmitter, handler) => {\n const eventEmitterRef = useRef<typeof eventEmitter>(null);\n const handlerRef = useRef<typeof handler>(() => false);\n\n if (\n eventEmitterRef.current != eventEmitter ||\n handlerRef.current != handler\n ) {\n eventEmitterRef.current?.off(event, handlerRef.current);\n eventEmitter?.on(event, handler);\n }\n\n eventEmitterRef.current = eventEmitter;\n handlerRef.current = handler;\n\n // Cleanup on unmount\n // Mounting the listener in useEffect causes a race condition with embed-widget\n // where the event is emitted during render before the useEffect runs after render.\n useEffect(\n () => () => eventEmitterRef.current?.off(event, handlerRef.current),\n []\n );\n };\n}\n\n/**\n * Create listener, emitter, and hook functions for an event\n * @param event Name of the event to create functions for\n * @returns Listener, Emitter, and Hook functions for the event\n */\nexport function makeEventFunctions<TParameters = []>(\n event: string\n): {\n listen: EventListenFunction<TParameters>;\n emit: EventEmitFunction<TParameters>;\n useListener: EventListenerHook<TParameters>;\n} {\n return {\n listen: makeListenFunction<TParameters>(event),\n emit: makeEmitFunction<TParameters>(event),\n useListener: makeUseListenerFunction<TParameters>(event),\n };\n}\n"],"mappings":"AAAA,SAASA,SAAS,EAAEC,MAAM,QAAQ,OAAO;AAsBzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,cAAcA,CAC5BC,YAA0B,EAC1BC,KAAa,EACbC,OAA0C,EACpB;EACtBF,YAAY,CAACG,EAAE,CAACF,KAAK,EAAEC,OAAO,CAAC;EAC/B,OAAO,MAAM;IACXF,YAAY,CAACI,GAAG,CAACH,KAAK,EAAEC,OAAO,CAAC;EAClC,CAAC;AACH;AAEA,OAAO,SAASG,kBAAkBA,CAChCJ,KAAa,EACqB;EAClC,OAAO,CAACD,YAAY,EAAEE,OAAO,KAC3BH,cAAc,CAACC,YAAY,EAAEC,KAAK,EAAEC,OAAO,CAAC;AAChD;AAEA,OAAO,SAASI,gBAAgBA,CAC9BL,KAAa,EACmB;EAChC,OAAO,UAACD,YAAY,EAAoB;IAAA,SAAAO,IAAA,GAAAC,SAAA,CAAAC,MAAA,EAAfC,UAAU,OAAAC,KAAA,CAAAJ,IAAA,OAAAA,IAAA,WAAAK,IAAA,MAAAA,IAAA,GAAAL,IAAA,EAAAK,IAAA;MAAVF,UAAU,CAAAE,IAAA,QAAAJ,SAAA,CAAAI,IAAA;IAAA;IACjCZ,YAAY,CAACa,IAAI,CAACZ,KAAK,EAAE,GAAGS,UAAU,CAAC;EACzC,CAAC;AACH;AAEA,OAAO,SAASI,uBAAuBA,CACrCb,KAAa,EACmB;EAChC,OAAO,CAACD,YAAY,EAAEE,OAAO,KAAK;IAChC,IAAMa,eAAe,GAAGjB,MAAM,CAAsB,IAAI,CAAC;IACzD,IAAMkB,UAAU,GAAGlB,MAAM,CAAiB,MAAM,KAAK,CAAC;IAEtD,IACEiB,eAAe,CAACE,OAAO,IAAIjB,YAAY,IACvCgB,UAAU,CAACC,OAAO,IAAIf,OAAO,EAC7B;MAAA,IAAAgB,qBAAA;MACA,CAAAA,qBAAA,GAAAH,eAAe,CAACE,OAAO,cAAAC,qBAAA,uBAAvBA,qBAAA,CAAyBd,GAAG,CAACH,KAAK,EAAEe,UAAU,CAACC,OAAO,CAAC;MACvDjB,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAEG,EAAE,CAACF,KAAK,EAAEC,OAAO,CAAC;IAClC;IAEAa,eAAe,CAACE,OAAO,GAAGjB,YAAY;IACtCgB,UAAU,CAACC,OAAO,GAAGf,OAAO;;IAE5B;IACA;IACA;IACAL,SAAS,CACP,MAAM;MAAA,IAAAsB,sBAAA;MAAA,QAAAA,sBAAA,GAAMJ,eAAe,CAACE,OAAO,cAAAE,sBAAA,uBAAvBA,sBAAA,CAAyBf,GAAG,CAACH,KAAK,EAAEe,UAAU,CAACC,OAAO,CAAC;IAAA,GACnE,EACF,CAAC;EACH,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASG,kBAAkBA,CAChCnB,KAAa,EAKb;EACA,OAAO;IACLoB,MAAM,EAAEhB,kBAAkB,CAAcJ,KAAK,CAAC;IAC9CY,IAAI,EAAEP,gBAAgB,CAAcL,KAAK,CAAC;IAC1CqB,WAAW,EAAER,uBAAuB,CAAcb,KAAK;EACzD,CAAC;AACH","ignoreList":[]}
1
+ {"version":3,"file":"EventUtils.js","names":["useEffect","useRef","listenForEvent","eventEmitter","event","handler","on","off","makeListenFunction","makeEmitFunction","_len","arguments","length","parameters","Array","_key","emit","makeUseListenerFunction","eventEmitterRef","handlerRef","current","_eventEmitterRef$curr","_eventEmitterRef$curr2","makeEventFunctions","listen","useListener"],"sources":["../../src/utils/EventUtils.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\nimport EventEmitter from './EventEmitter';\n\ntype AsArray<P> = P extends unknown[] ? P : [P];\n\nexport type EventHandlerFunction<P = []> = (...parameters: AsArray<P>) => void;\nexport type EventListenerRemover = () => void;\nexport type EventListenFunction<TParameters = []> = (\n eventEmitter: EventEmitter,\n handler: EventHandlerFunction<TParameters>\n) => EventListenerRemover;\n\nexport type EventEmitFunction<TParameters = []> = (\n eventEmitter: EventEmitter,\n ...parameters: AsArray<TParameters>\n) => void;\n\nexport type EventListenerHook<TParameters = []> = (\n eventEmitter: EventEmitter | null | undefined,\n handler: EventHandlerFunction<TParameters>\n) => void;\n\n/**\n * Listen for an event\n * @param eventEmitter The event emitter to listen to\n * @param event The event to listen for\n * @param handler The handler to call when the event is emitted\n * @returns A function to stop listening for the event\n */\nexport function listenForEvent<TParameters = []>(\n eventEmitter: EventEmitter,\n event: string,\n handler: EventHandlerFunction<TParameters>\n): EventListenerRemover {\n eventEmitter.on(event, handler);\n return () => {\n eventEmitter.off(event, handler);\n };\n}\n\nexport function makeListenFunction<TParameters = []>(\n event: string\n): EventListenFunction<TParameters> {\n return (eventEmitter, handler) =>\n listenForEvent(eventEmitter, event, handler);\n}\n\nexport function makeEmitFunction<TParameters = []>(\n event: string\n): EventEmitFunction<TParameters> {\n return (eventEmitter, ...parameters) => {\n eventEmitter.emit(event, ...parameters);\n };\n}\n\nexport function makeUseListenerFunction<TParameters = []>(\n event: string\n): EventListenerHook<TParameters> {\n return (eventEmitter, handler) => {\n const eventEmitterRef = useRef<typeof eventEmitter>(null);\n const handlerRef = useRef<typeof handler>(() => false);\n\n if (\n eventEmitterRef.current != eventEmitter ||\n handlerRef.current != handler\n ) {\n eventEmitterRef.current?.off(event, handlerRef.current);\n eventEmitter?.on(event, handler);\n }\n\n eventEmitterRef.current = eventEmitter;\n handlerRef.current = handler;\n\n // Cleanup on unmount\n // Mounting the listener in useEffect causes a race condition with embed-widget\n // where the event is emitted during render before the useEffect runs after render.\n useEffect(\n () => () => eventEmitterRef.current?.off(event, handlerRef.current),\n []\n );\n };\n}\n\n/**\n * Create listener, emitter, and hook functions for an event\n * @param event Name of the event to create functions for\n * @returns Listener, Emitter, and Hook functions for the event\n */\nexport function makeEventFunctions<TParameters = []>(\n event: string\n): {\n listen: EventListenFunction<TParameters>;\n emit: EventEmitFunction<TParameters>;\n useListener: EventListenerHook<TParameters>;\n} {\n return {\n listen: makeListenFunction<TParameters>(event),\n emit: makeEmitFunction<TParameters>(event),\n useListener: makeUseListenerFunction<TParameters>(event),\n };\n}\n"],"mappings":"AAAA,SAASA,SAAS,EAAEC,MAAM,QAAQ,OAAO;AAsBzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,cAAcA,CAC5BC,YAA0B,EAC1BC,KAAa,EACbC,OAA0C,EACpB;EACtBF,YAAY,CAACG,EAAE,CAACF,KAAK,EAAEC,OAAO,CAAC;EAC/B,OAAO,MAAM;IACXF,YAAY,CAACI,GAAG,CAACH,KAAK,EAAEC,OAAO,CAAC;EAClC,CAAC;AACH;AAEA,OAAO,SAASG,kBAAkBA,CAChCJ,KAAa,EACqB;EAClC,OAAO,CAACD,YAAY,EAAEE,OAAO,KAC3BH,cAAc,CAACC,YAAY,EAAEC,KAAK,EAAEC,OAAO,CAAC;AAChD;AAEA,OAAO,SAASI,gBAAgBA,CAC9BL,KAAa,EACmB;EAChC,OAAO,UAACD,YAAY,EAAoB;IAAA,SAAAO,IAAA,GAAAC,SAAA,CAAAC,MAAA,EAAfC,UAAU,OAAAC,KAAA,CAAAJ,IAAA,OAAAA,IAAA,WAAAK,IAAA,MAAAA,IAAA,GAAAL,IAAA,EAAAK,IAAA;MAAVF,UAAU,CAAAE,IAAA,QAAAJ,SAAA,CAAAI,IAAA;IAAA;IACjCZ,YAAY,CAACa,IAAI,CAACZ,KAAK,EAAE,GAAGS,UAAU,CAAC;EACzC,CAAC;AACH;AAEA,OAAO,SAASI,uBAAuBA,CACrCb,KAAa,EACmB;EAChC,OAAO,CAACD,YAAY,EAAEE,OAAO,KAAK;IAChC,IAAMa,eAAe,GAAGjB,MAAM,CAAsB,IAAI,CAAC;IACzD,IAAMkB,UAAU,GAAGlB,MAAM,CAAiB,MAAM,KAAK,CAAC;IAEtD,IACEiB,eAAe,CAACE,OAAO,IAAIjB,YAAY,IACvCgB,UAAU,CAACC,OAAO,IAAIf,OAAO,EAC7B;MAAA,IAAAgB,qBAAA;MACA,CAAAA,qBAAA,GAAAH,eAAe,CAACE,OAAO,cAAAC,qBAAA,uBAAvBA,qBAAA,CAAyBd,GAAG,CAACH,KAAK,EAAEe,UAAU,CAACC,OAAO,CAAC;MACvDjB,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAEG,EAAE,CAACF,KAAK,EAAEC,OAAO,CAAC;IAClC;IAEAa,eAAe,CAACE,OAAO,GAAGjB,YAAY;IACtCgB,UAAU,CAACC,OAAO,GAAGf,OAAO;;IAE5B;IACA;IACA;IACAL,SAAS,CACP,MAAM;MAAA,IAAAsB,sBAAA;MAAA,QAAAA,sBAAA,GAAMJ,eAAe,CAACE,OAAO,cAAAE,sBAAA,uBAAvBA,sBAAA,CAAyBf,GAAG,CAACH,KAAK,EAAEe,UAAU,CAACC,OAAO,CAAC;IAAA,GACnE,EACF,CAAC;EACH,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASG,kBAAkBA,CAChCnB,KAAa,EAKb;EACA,OAAO;IACLoB,MAAM,EAAEhB,kBAAkB,CAAcJ,KAAK,CAAC;IAC9CY,IAAI,EAAEP,gBAAgB,CAAcL,KAAK,CAAC;IAC1CqB,WAAW,EAAER,uBAAuB,CAAcb,KAAK;EACzD,CAAC;AACH"}
@@ -1 +1 @@
1
- {"version":3,"file":"ReactComponentHandler.js","names":["React","ReactDOM","$","ReactComponentHandler","constructor","container","state","_defineProperty","_reactComponent","_portalComponent","_originalComponentWillUpdate","_container","_initialState","_reactClass","_getReactClass","on","_render","_destroy","_key","id","_config","Error","Array","isArray","join","key","createPortal","_getReactComponent","getElement","layoutManager","addReactChild","_gotReactComponent","component","componentWillUpdate","_onUpdate","bind","getState","setState","removeReactChild","off","nextProps","nextState","_this$_originalCompon","call","componentName","reactClass","getComponent","getFallbackComponent","defaultProps","glEventHub","eventHub","glContainer","ref","props","extend","createElement"],"sources":["../../src/utils/ReactComponentHandler.tsx"],"sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport $ from 'jquery';\nimport type ItemContainer from '../container/ItemContainer';\nimport type { ReactComponentConfig } from '../config/ItemConfig';\nimport { Container } from '../container';\nimport EventEmitter from './EventEmitter';\n\nexport type GLPanelProps = {\n glContainer: Container;\n glEventHub: EventEmitter;\n};\n\n/**\n * A specialised GoldenLayout component that binds GoldenLayout container\n * lifecycle events to react components\n *\n * @param container\n * @param state state is not required for react components\n */\nexport default class ReactComponentHandler {\n private _container: ItemContainer<ReactComponentConfig>;\n\n private _reactComponent: React.Component | null = null;\n private _portalComponent: React.ReactPortal | null = null;\n private _originalComponentWillUpdate: Function | null = null;\n private _initialState: unknown;\n private _reactClass: React.ComponentClass;\n\n constructor(container: ItemContainer<ReactComponentConfig>, state?: unknown) {\n this._reactComponent = null;\n this._portalComponent = null;\n this._originalComponentWillUpdate = null;\n this._container = container;\n this._initialState = state;\n this._reactClass = this._getReactClass();\n this._container.on('open', this._render, this);\n this._container.on('destroy', this._destroy, this);\n }\n\n /**\n * Gets the unique key to use for the react component\n * @returns Unique key for the component\n */\n _key(): string {\n const id = this._container._config.id;\n if (!id) {\n throw new Error('Cannot mount panel without id');\n }\n\n // If addId is called multiple times, an element can have multiple IDs in golden-layout\n // We don't use it, but changing the type requires many changes and a separate PR\n if (Array.isArray(id)) {\n return id.join(',');\n }\n\n return id;\n }\n\n /**\n * Creates the react class and component and hydrates it with\n * the initial state - if one is present\n *\n * By default, react's getInitialState will be used\n *\n * Creates a portal so the non-react golden-layout code still works,\n * but also allows us to mount the React components in the app's tree\n * instead of separate sibling root trees\n */\n _render() {\n const key = this._key();\n this._portalComponent = ReactDOM.createPortal(\n this._getReactComponent(),\n this._container.getElement()[0],\n key\n );\n\n this._container.layoutManager.addReactChild(key, this._portalComponent);\n }\n\n /**\n * Fired by react when the component is created.\n * <p>\n * Note: This callback is used instead of the return from `ReactDOM.render` because\n *\t of https://github.com/facebook/react/issues/10309.\n * </p>\n *\n * @param component The component instance created by the `ReactDOM.render` call in the `_render` method.\n */\n _gotReactComponent(component: React.Component) {\n if (!component) {\n return;\n }\n\n this._reactComponent = component;\n this._originalComponentWillUpdate =\n this._reactComponent.componentWillUpdate || function () {};\n this._reactComponent.componentWillUpdate = this._onUpdate.bind(this);\n const state = this._container.getState();\n if (state) {\n this._reactComponent.setState(state);\n }\n }\n\n /**\n * Removes the component from the DOM and thus invokes React's unmount lifecycle\n */\n _destroy() {\n this._container.layoutManager.removeReactChild(\n this._key(),\n this._portalComponent\n );\n this._container.off('open', this._render, this);\n this._container.off('destroy', this._destroy, this);\n }\n\n /**\n * Hooks into React's state management and applies the componentstate\n * to GoldenLayout\n */\n _onUpdate(nextProps: unknown, nextState: Record<string, unknown>) {\n this._container.setState(nextState);\n this._originalComponentWillUpdate?.call(\n this._reactComponent,\n nextProps,\n nextState\n );\n }\n\n /**\n * Retrieves the react class from GoldenLayout's registry\n * @returns react class\n */\n _getReactClass() {\n var componentName = this._container._config.component;\n\n if (!componentName) {\n throw new Error(\n 'No react component name. type: react-component needs a field `component`'\n );\n }\n\n const reactClass = (this._container.layoutManager.getComponent(\n componentName\n ) ||\n this._container.layoutManager.getFallbackComponent()) as unknown as React.ComponentClass;\n\n if (!reactClass) {\n throw new Error(\n 'React component \"' +\n componentName +\n '\" not found. ' +\n 'Please register all components with GoldenLayout using `registerComponent(name, component)`'\n );\n }\n\n return reactClass;\n }\n\n /**\n * Copies and extends the properties array and returns the React element\n */\n _getReactComponent() {\n var defaultProps = {\n glEventHub: this._container.layoutManager.eventHub,\n glContainer: this._container,\n /**\n * This ref assignment makes use of callback refs which is a legacy ref style in React.\n * It uses the callback to inject GoldenLayout _onUpdate into the React componentWillUpdate lifecycle.\n * This allows GoldenLayout to track the internal state of class components.\n * We then emit this state change and somewhere furter up, serialize it.\n * Specifically we look for state.panelState changes.\n * We should not do this going forward as it's quite unclear where/why your component's state might be saved.\n * This ref cannot be removed unless we refactor all existing panels to not rely on the magic of panelState.\n * DashboardUtils#dehydrate is where the panelState gets read/saved.\n */\n ref: this._gotReactComponent.bind(this),\n };\n var props = $.extend(defaultProps, this._container._config.props);\n return React.createElement(this._reactClass, props);\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ReactComponentHandler.js","names":["React","ReactDOM","$","ReactComponentHandler","constructor","container","state","_defineProperty","_reactComponent","_portalComponent","_originalComponentWillUpdate","_container","_initialState","_reactClass","_getReactClass","on","_render","_destroy","_key","id","_config","Error","Array","isArray","join","key","createPortal","_getReactComponent","getElement","layoutManager","addReactChild","_gotReactComponent","component","componentWillUpdate","_onUpdate","bind","getState","setState","removeReactChild","off","nextProps","nextState","_this$_originalCompon","call","componentName","reactClass","getComponent","getFallbackComponent","defaultProps","glEventHub","eventHub","glContainer","ref","props","extend","createElement"],"sources":["../../src/utils/ReactComponentHandler.tsx"],"sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport $ from 'jquery';\nimport type ItemContainer from '../container/ItemContainer';\nimport type { ReactComponentConfig } from '../config/ItemConfig';\nimport { Container } from '../container';\nimport EventEmitter from './EventEmitter';\n\nexport type GLPanelProps = {\n glContainer: Container;\n glEventHub: EventEmitter;\n};\n\n/**\n * A specialised GoldenLayout component that binds GoldenLayout container\n * lifecycle events to react components\n *\n * @param container\n * @param state state is not required for react components\n */\nexport default class ReactComponentHandler {\n private _container: ItemContainer<ReactComponentConfig>;\n\n private _reactComponent: React.Component | null = null;\n private _portalComponent: React.ReactPortal | null = null;\n private _originalComponentWillUpdate: Function | null = null;\n private _initialState: unknown;\n private _reactClass: React.ComponentClass;\n\n constructor(container: ItemContainer<ReactComponentConfig>, state?: unknown) {\n this._reactComponent = null;\n this._portalComponent = null;\n this._originalComponentWillUpdate = null;\n this._container = container;\n this._initialState = state;\n this._reactClass = this._getReactClass();\n this._container.on('open', this._render, this);\n this._container.on('destroy', this._destroy, this);\n }\n\n /**\n * Gets the unique key to use for the react component\n * @returns Unique key for the component\n */\n _key(): string {\n const id = this._container._config.id;\n if (!id) {\n throw new Error('Cannot mount panel without id');\n }\n\n // If addId is called multiple times, an element can have multiple IDs in golden-layout\n // We don't use it, but changing the type requires many changes and a separate PR\n if (Array.isArray(id)) {\n return id.join(',');\n }\n\n return id;\n }\n\n /**\n * Creates the react class and component and hydrates it with\n * the initial state - if one is present\n *\n * By default, react's getInitialState will be used\n *\n * Creates a portal so the non-react golden-layout code still works,\n * but also allows us to mount the React components in the app's tree\n * instead of separate sibling root trees\n */\n _render() {\n const key = this._key();\n this._portalComponent = ReactDOM.createPortal(\n this._getReactComponent(),\n this._container.getElement()[0],\n key\n );\n\n this._container.layoutManager.addReactChild(key, this._portalComponent);\n }\n\n /**\n * Fired by react when the component is created.\n * <p>\n * Note: This callback is used instead of the return from `ReactDOM.render` because\n *\t of https://github.com/facebook/react/issues/10309.\n * </p>\n *\n * @param component The component instance created by the `ReactDOM.render` call in the `_render` method.\n */\n _gotReactComponent(component: React.Component) {\n if (!component) {\n return;\n }\n\n this._reactComponent = component;\n this._originalComponentWillUpdate =\n this._reactComponent.componentWillUpdate || function () {};\n this._reactComponent.componentWillUpdate = this._onUpdate.bind(this);\n const state = this._container.getState();\n if (state) {\n this._reactComponent.setState(state);\n }\n }\n\n /**\n * Removes the component from the DOM and thus invokes React's unmount lifecycle\n */\n _destroy() {\n this._container.layoutManager.removeReactChild(\n this._key(),\n this._portalComponent\n );\n this._container.off('open', this._render, this);\n this._container.off('destroy', this._destroy, this);\n }\n\n /**\n * Hooks into React's state management and applies the componentstate\n * to GoldenLayout\n */\n _onUpdate(nextProps: unknown, nextState: Record<string, unknown>) {\n this._container.setState(nextState);\n this._originalComponentWillUpdate?.call(\n this._reactComponent,\n nextProps,\n nextState\n );\n }\n\n /**\n * Retrieves the react class from GoldenLayout's registry\n * @returns react class\n */\n _getReactClass() {\n var componentName = this._container._config.component;\n\n if (!componentName) {\n throw new Error(\n 'No react component name. type: react-component needs a field `component`'\n );\n }\n\n const reactClass = (this._container.layoutManager.getComponent(\n componentName\n ) ||\n this._container.layoutManager.getFallbackComponent()) as unknown as React.ComponentClass;\n\n if (!reactClass) {\n throw new Error(\n 'React component \"' +\n componentName +\n '\" not found. ' +\n 'Please register all components with GoldenLayout using `registerComponent(name, component)`'\n );\n }\n\n return reactClass;\n }\n\n /**\n * Copies and extends the properties array and returns the React element\n */\n _getReactComponent() {\n var defaultProps = {\n glEventHub: this._container.layoutManager.eventHub,\n glContainer: this._container,\n /**\n * This ref assignment makes use of callback refs which is a legacy ref style in React.\n * It uses the callback to inject GoldenLayout _onUpdate into the React componentWillUpdate lifecycle.\n * This allows GoldenLayout to track the internal state of class components.\n * We then emit this state change and somewhere furter up, serialize it.\n * Specifically we look for state.panelState changes.\n * We should not do this going forward as it's quite unclear where/why your component's state might be saved.\n * This ref cannot be removed unless we refactor all existing panels to not rely on the magic of panelState.\n * DashboardUtils#dehydrate is where the panelState gets read/saved.\n */\n ref: this._gotReactComponent.bind(this),\n };\n var props = $.extend(defaultProps, this._container._config.props);\n return React.createElement(this._reactClass, props);\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["default","EventEmitter","DragListener","ReactComponentHandler","BubblingEvent","EventHub"],"sources":["../../src/utils/index.ts"],"sourcesContent":["export * from './utils';\nexport { default as EventEmitter } from './EventEmitter';\nexport { default as DragListener } from './DragListener';\nexport * from './ReactComponentHandler';\nexport { default as ReactComponentHandler } from './ReactComponentHandler';\nexport * from './ConfigMinifier';\nexport { default as BubblingEvent } from './BubblingEvent';\nexport { default as EventHub } from './EventHub';\nexport * from './EventUtils';\n"],"mappings":";SACSA,OAAO,IAAIC,YAAY;AAAA,SACvBD,OAAO,IAAIE,YAAY;AAAA;AAAA,SAEvBF,OAAO,IAAIG,qBAAqB;AAAA;AAAA,SAEhCH,OAAO,IAAII,aAAa;AAAA,SACxBJ,OAAO,IAAIK,QAAQ;AAAA","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["default","EventEmitter","DragListener","ReactComponentHandler","BubblingEvent","EventHub"],"sources":["../../src/utils/index.ts"],"sourcesContent":["export * from './utils';\nexport { default as EventEmitter } from './EventEmitter';\nexport { default as DragListener } from './DragListener';\nexport * from './ReactComponentHandler';\nexport { default as ReactComponentHandler } from './ReactComponentHandler';\nexport * from './ConfigMinifier';\nexport { default as BubblingEvent } from './BubblingEvent';\nexport { default as EventHub } from './EventHub';\nexport * from './EventUtils';\n"],"mappings":";SACSA,OAAO,IAAIC,YAAY;AAAA,SACvBD,OAAO,IAAIE,YAAY;AAAA;AAAA,SAEvBF,OAAO,IAAIG,qBAAqB;AAAA;AAAA,SAEhCH,OAAO,IAAII,aAAa;AAAA,SACxBJ,OAAO,IAAIK,QAAQ;AAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","names":["$","nanoid","getHashValue","key","matches","location","hash","match","RegExp","getQueryStringParam","param","window","search","keyValuePairs","substr","split","params","pair","i","length","animFrame","fn","requestAnimationFrame","removeFromArray","item","array","index","indexOf","Error","splice","getUniqueId","filterXss","input","keepTags","output","replace","stripTags","trim"],"sources":["../../src/utils/utils.ts"],"sourcesContent":["import $ from 'jquery';\nimport { nanoid } from 'nanoid';\n\nexport function getHashValue(key: string) {\n var matches = location.hash.match(new RegExp(key + '=([^&]*)'));\n return matches ? matches[1] : null;\n}\n\nexport function getQueryStringParam(param: string) {\n if (window.location.hash) {\n return getHashValue(param);\n } else if (!window.location.search) {\n return null;\n }\n\n var keyValuePairs = window.location.search.substr(1).split('&'),\n params: Record<string, string> = {},\n pair,\n i;\n\n for (i = 0; i < keyValuePairs.length; i++) {\n pair = keyValuePairs[i].split('=');\n params[pair[0]] = pair[1];\n }\n\n return params[param] || null;\n}\n\nexport function animFrame(fn: (time?: number) => void) {\n return window.requestAnimationFrame(fn);\n}\n\nexport function removeFromArray<T>(item: T, array: T[]) {\n var index = array.indexOf(item);\n\n if (index === -1) {\n throw new Error(\"Can't remove item from array. Item is not in the array\");\n }\n\n array.splice(index, 1);\n}\n\nexport function getUniqueId() {\n return nanoid();\n}\n\n/**\n * A basic XSS filter. It is ultimately up to the\n * implementing developer to make sure their particular\n * applications and usecases are save from cross site scripting attacks\n *\n * @param input\n * @param keepTags\n *\n * @returns filtered input\n */\nexport function filterXss(input: string, keepTags: boolean) {\n var output = input\n .replace(/javascript/gi, 'j&#97;vascript')\n .replace(/expression/gi, 'expr&#101;ssion')\n .replace(/onload/gi, 'onlo&#97;d')\n .replace(/script/gi, '&#115;cript')\n .replace(/onerror/gi, 'on&#101;rror');\n\n if (keepTags === true) {\n return output;\n } else {\n return output.replace(/>/g, '&gt;').replace(/</g, '&lt;');\n }\n}\n\n/**\n * Removes html tags from a string\n *\n * @param input\n *\n * @returns input without tags\n */\nexport function stripTags(input: string) {\n return $.trim(input.replace(/(<([^>]+)>)/gi, ''));\n}\n"],"mappings":"AAAA,OAAOA,CAAC,MAAM,QAAQ;AACtB,SAASC,MAAM,QAAQ,QAAQ;AAE/B,OAAO,SAASC,YAAYA,CAACC,GAAW,EAAE;EACxC,IAAIC,OAAO,GAAGC,QAAQ,CAACC,IAAI,CAACC,KAAK,CAAC,IAAIC,MAAM,CAACL,GAAG,GAAG,UAAU,CAAC,CAAC;EAC/D,OAAOC,OAAO,GAAGA,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI;AACpC;AAEA,OAAO,SAASK,mBAAmBA,CAACC,KAAa,EAAE;EACjD,IAAIC,MAAM,CAACN,QAAQ,CAACC,IAAI,EAAE;IACxB,OAAOJ,YAAY,CAACQ,KAAK,CAAC;EAC5B,CAAC,MAAM,IAAI,CAACC,MAAM,CAACN,QAAQ,CAACO,MAAM,EAAE;IAClC,OAAO,IAAI;EACb;EAEA,IAAIC,aAAa,GAAGF,MAAM,CAACN,QAAQ,CAACO,MAAM,CAACE,MAAM,CAAC,CAAC,CAAC,CAACC,KAAK,CAAC,GAAG,CAAC;IAC7DC,MAA8B,GAAG,CAAC,CAAC;IACnCC,IAAI;IACJC,CAAC;EAEH,KAAKA,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGL,aAAa,CAACM,MAAM,EAAED,CAAC,EAAE,EAAE;IACzCD,IAAI,GAAGJ,aAAa,CAACK,CAAC,CAAC,CAACH,KAAK,CAAC,GAAG,CAAC;IAClCC,MAAM,CAACC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAGA,IAAI,CAAC,CAAC,CAAC;EAC3B;EAEA,OAAOD,MAAM,CAACN,KAAK,CAAC,IAAI,IAAI;AAC9B;AAEA,OAAO,SAASU,SAASA,CAACC,EAA2B,EAAE;EACrD,OAAOV,MAAM,CAACW,qBAAqB,CAACD,EAAE,CAAC;AACzC;AAEA,OAAO,SAASE,eAAeA,CAAIC,IAAO,EAAEC,KAAU,EAAE;EACtD,IAAIC,KAAK,GAAGD,KAAK,CAACE,OAAO,CAACH,IAAI,CAAC;EAE/B,IAAIE,KAAK,KAAK,CAAC,CAAC,EAAE;IAChB,MAAM,IAAIE,KAAK,CAAC,wDAAwD,CAAC;EAC3E;EAEAH,KAAK,CAACI,MAAM,CAACH,KAAK,EAAE,CAAC,CAAC;AACxB;AAEA,OAAO,SAASI,WAAWA,CAAA,EAAG;EAC5B,OAAO7B,MAAM,CAAC,CAAC;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAAS8B,SAASA,CAACC,KAAa,EAAEC,QAAiB,EAAE;EAC1D,IAAIC,MAAM,GAAGF,KAAK,CACfG,OAAO,CAAC,cAAc,EAAE,gBAAgB,CAAC,CACzCA,OAAO,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAC1CA,OAAO,CAAC,UAAU,EAAE,YAAY,CAAC,CACjCA,OAAO,CAAC,UAAU,EAAE,aAAa,CAAC,CAClCA,OAAO,CAAC,WAAW,EAAE,cAAc,CAAC;EAEvC,IAAIF,QAAQ,KAAK,IAAI,EAAE;IACrB,OAAOC,MAAM;EACf,CAAC,MAAM;IACL,OAAOA,MAAM,CAACC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAACA,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;EAC3D;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,SAASA,CAACJ,KAAa,EAAE;EACvC,OAAOhC,CAAC,CAACqC,IAAI,CAACL,KAAK,CAACG,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;AACnD","ignoreList":[]}
1
+ {"version":3,"file":"utils.js","names":["$","nanoid","getHashValue","key","matches","location","hash","match","RegExp","getQueryStringParam","param","window","search","keyValuePairs","substr","split","params","pair","i","length","animFrame","fn","requestAnimationFrame","removeFromArray","item","array","index","indexOf","Error","splice","getUniqueId","filterXss","input","keepTags","output","replace","stripTags","trim"],"sources":["../../src/utils/utils.ts"],"sourcesContent":["import $ from 'jquery';\nimport { nanoid } from 'nanoid';\n\nexport function getHashValue(key: string) {\n var matches = location.hash.match(new RegExp(key + '=([^&]*)'));\n return matches ? matches[1] : null;\n}\n\nexport function getQueryStringParam(param: string) {\n if (window.location.hash) {\n return getHashValue(param);\n } else if (!window.location.search) {\n return null;\n }\n\n var keyValuePairs = window.location.search.substr(1).split('&'),\n params: Record<string, string> = {},\n pair,\n i;\n\n for (i = 0; i < keyValuePairs.length; i++) {\n pair = keyValuePairs[i].split('=');\n params[pair[0]] = pair[1];\n }\n\n return params[param] || null;\n}\n\nexport function animFrame(fn: (time?: number) => void) {\n return window.requestAnimationFrame(fn);\n}\n\nexport function removeFromArray<T>(item: T, array: T[]) {\n var index = array.indexOf(item);\n\n if (index === -1) {\n throw new Error(\"Can't remove item from array. Item is not in the array\");\n }\n\n array.splice(index, 1);\n}\n\nexport function getUniqueId() {\n return nanoid();\n}\n\n/**\n * A basic XSS filter. It is ultimately up to the\n * implementing developer to make sure their particular\n * applications and usecases are save from cross site scripting attacks\n *\n * @param input\n * @param keepTags\n *\n * @returns filtered input\n */\nexport function filterXss(input: string, keepTags: boolean) {\n var output = input\n .replace(/javascript/gi, 'j&#97;vascript')\n .replace(/expression/gi, 'expr&#101;ssion')\n .replace(/onload/gi, 'onlo&#97;d')\n .replace(/script/gi, '&#115;cript')\n .replace(/onerror/gi, 'on&#101;rror');\n\n if (keepTags === true) {\n return output;\n } else {\n return output.replace(/>/g, '&gt;').replace(/</g, '&lt;');\n }\n}\n\n/**\n * Removes html tags from a string\n *\n * @param input\n *\n * @returns input without tags\n */\nexport function stripTags(input: string) {\n return $.trim(input.replace(/(<([^>]+)>)/gi, ''));\n}\n"],"mappings":"AAAA,OAAOA,CAAC,MAAM,QAAQ;AACtB,SAASC,MAAM,QAAQ,QAAQ;AAE/B,OAAO,SAASC,YAAYA,CAACC,GAAW,EAAE;EACxC,IAAIC,OAAO,GAAGC,QAAQ,CAACC,IAAI,CAACC,KAAK,CAAC,IAAIC,MAAM,CAACL,GAAG,GAAG,UAAU,CAAC,CAAC;EAC/D,OAAOC,OAAO,GAAGA,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI;AACpC;AAEA,OAAO,SAASK,mBAAmBA,CAACC,KAAa,EAAE;EACjD,IAAIC,MAAM,CAACN,QAAQ,CAACC,IAAI,EAAE;IACxB,OAAOJ,YAAY,CAACQ,KAAK,CAAC;EAC5B,CAAC,MAAM,IAAI,CAACC,MAAM,CAACN,QAAQ,CAACO,MAAM,EAAE;IAClC,OAAO,IAAI;EACb;EAEA,IAAIC,aAAa,GAAGF,MAAM,CAACN,QAAQ,CAACO,MAAM,CAACE,MAAM,CAAC,CAAC,CAAC,CAACC,KAAK,CAAC,GAAG,CAAC;IAC7DC,MAA8B,GAAG,CAAC,CAAC;IACnCC,IAAI;IACJC,CAAC;EAEH,KAAKA,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGL,aAAa,CAACM,MAAM,EAAED,CAAC,EAAE,EAAE;IACzCD,IAAI,GAAGJ,aAAa,CAACK,CAAC,CAAC,CAACH,KAAK,CAAC,GAAG,CAAC;IAClCC,MAAM,CAACC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAGA,IAAI,CAAC,CAAC,CAAC;EAC3B;EAEA,OAAOD,MAAM,CAACN,KAAK,CAAC,IAAI,IAAI;AAC9B;AAEA,OAAO,SAASU,SAASA,CAACC,EAA2B,EAAE;EACrD,OAAOV,MAAM,CAACW,qBAAqB,CAACD,EAAE,CAAC;AACzC;AAEA,OAAO,SAASE,eAAeA,CAAIC,IAAO,EAAEC,KAAU,EAAE;EACtD,IAAIC,KAAK,GAAGD,KAAK,CAACE,OAAO,CAACH,IAAI,CAAC;EAE/B,IAAIE,KAAK,KAAK,CAAC,CAAC,EAAE;IAChB,MAAM,IAAIE,KAAK,CAAC,wDAAwD,CAAC;EAC3E;EAEAH,KAAK,CAACI,MAAM,CAACH,KAAK,EAAE,CAAC,CAAC;AACxB;AAEA,OAAO,SAASI,WAAWA,CAAA,EAAG;EAC5B,OAAO7B,MAAM,CAAC,CAAC;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAAS8B,SAASA,CAACC,KAAa,EAAEC,QAAiB,EAAE;EAC1D,IAAIC,MAAM,GAAGF,KAAK,CACfG,OAAO,CAAC,cAAc,EAAE,gBAAgB,CAAC,CACzCA,OAAO,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAC1CA,OAAO,CAAC,UAAU,EAAE,YAAY,CAAC,CACjCA,OAAO,CAAC,UAAU,EAAE,aAAa,CAAC,CAClCA,OAAO,CAAC,WAAW,EAAE,cAAc,CAAC;EAEvC,IAAIF,QAAQ,KAAK,IAAI,EAAE;IACrB,OAAOC,MAAM;EACf,CAAC,MAAM;IACL,OAAOA,MAAM,CAACC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAACA,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;EAC3D;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,SAASA,CAACJ,KAAa,EAAE;EACvC,OAAOhC,CAAC,CAACqC,IAAI,CAACL,KAAK,CAACG,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;AACnD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deephaven/golden-layout",
3
- "version": "1.2.1-plotly-rc.3+e5413268",
3
+ "version": "1.2.1-plotly-rc3.3+cfd3663b",
4
4
  "author": "Deephaven Data Labs LLC",
5
5
  "license": "Apache-2.0",
6
6
  "description": "A multi-screen javascript Layout manager",
@@ -10,7 +10,7 @@
10
10
  "source": "src/index.ts",
11
11
  "type": "module",
12
12
  "dependencies": {
13
- "@deephaven/components": "^1.2.1-plotly-rc.3+e5413268",
13
+ "@deephaven/components": "^1.2.1-plotly-rc3.3+cfd3663b",
14
14
  "jquery": "^3.6.0",
15
15
  "nanoid": "^5.0.7"
16
16
  },
@@ -56,5 +56,5 @@
56
56
  "karma-browserify": "^8.1.0",
57
57
  "watchify": "^4.0.0"
58
58
  },
59
- "gitHead": "e5413268aa9efb6ebfdd6044ae56cdd285fcb932"
59
+ "gitHead": "cfd3663b28e622750b245ee27dd1a3413a737956"
60
60
  }