@deephaven/dashboard-core-plugins 0.85.35 → 0.85.37
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/linker/Linker.js +1 -1
- package/dist/linker/Linker.js.map +1 -1
- package/dist/linker/LinkerOverlayContent.d.ts +1 -1
- package/dist/linker/LinkerOverlayContent.d.ts.map +1 -1
- package/dist/linker/LinkerOverlayContent.js +2 -1
- package/dist/linker/LinkerOverlayContent.js.map +1 -1
- package/dist/linker/LinkerUtils.d.ts +1 -1
- package/dist/linker/LinkerUtils.d.ts.map +1 -1
- package/dist/linker/LinkerUtils.js.map +1 -1
- package/dist/panels/IrisGridPanel.d.ts +3 -2
- package/dist/panels/IrisGridPanel.d.ts.map +1 -1
- package/dist/panels/IrisGridPanel.js +2 -0
- package/dist/panels/IrisGridPanel.js.map +1 -1
- package/package.json +7 -7
package/dist/linker/Linker.js
CHANGED
|
@@ -526,7 +526,7 @@ export class Linker extends Component {
|
|
|
526
526
|
end,
|
|
527
527
|
operator
|
|
528
528
|
} = links[i];
|
|
529
|
-
if (start.panelId === sourceId && end != null
|
|
529
|
+
if (start.panelId === sourceId && end != null) {
|
|
530
530
|
var _filterMap$get$filter, _filterMap$get;
|
|
531
531
|
var {
|
|
532
532
|
panelId: endPanelId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Linker.js","names":["React","Component","connect","nanoid","memoize","FadeTransition","LayoutUtils","PanelEvent","DateTimeColumnFormatter","DateUtils","TableUtils","Log","Type","FilterType","getActiveTool","getApi","getTimeZone","setActiveTool","setActiveToolAction","assertNotNull","getIsolatedLinkerPanelIdForDashboard","getLinksForDashboard","setDashboardLinks","setDashboardLinksAction","addDashboardLinks","addDashboardLinksAction","deleteDashboardLinks","deleteDashboardLinksAction","setDashboardIsolatedLinkerPanelId","setDashboardIsolatedLinkerPanelIdAction","setDashboardColumnSelectionValidator","setDashboardColumnSelectionValidatorAction","ToolType","ChartEvent","IrisGridEvent","LinkerOverlayContent","LinkerUtils","isLinkablePanel","isLinkableColumn","listenForFilterColumnsChanged","listenForLinkPointSelected","listenForLinkSourceDataSelected","listenForRegisterLinkTarget","jsx","_jsx","log","module","mapState","state","ownProps","activeTool","dh","isolatedLinkerPanelId","localDashboardId","links","timeZone","connector","Linker","constructor","props","_defineProperty","Map","linkInProgress","isolateForPanelId","combinedLinks","start","push","undefined","filter","link","_link$start","_link$end","panelId","end","handleCancel","bind","handleDone","handlePanelCloned","handleColumnsChanged","handlePanelClosed","handleLayoutStateChanged","handleAllLinksDeleted","handleLinkDeleted","handleLinksUpdated","handleChartColumnSelect","handleGridColumnSelect","handleUpdateValues","handleStateChange","handleExited","handleLinkPointSelected","handleTargetRegistered","handleLinkSelected","handlePanelDragging","handlePanelDropped","isColumnSelectionValid","selectedIds","Set","isDraggingPanel","componentDidMount","layout","startListening","updateSelectionValidators","componentDidUpdate","prevProps","stopListening","DEFAULT","reset","componentDidCatch","error","info","componentWillUnmount","on","eventHub","COLUMN_SELECTED","DATA_SELECTED","STATE_CHANGED","CLONED","removerFns","CLOSE","CLOSED","DRAGGING","DROPPED","off","forEach","remove","setState","panel","column","getIdFromPanel","columnSelected","sourceId","columns","debug","deleteLinksForPanelId","linksToDelete","_ref","findColumn","deleteLinks","debug2","options","type","isIsolatedLinker","isAlwaysEnd","isOverlayShown","panelLinks","_link$start2","_link$end2","LINKER","length","isAlwaysEndPoint","arguments","overrideIsolatedLinkerPanelId","name","columnName","columnType","newLink","id","isReversed","endType","_linkInProgress$endTy","isValid","isLinkValid","finalType","existingLinkPanelId","_ref2","panelLinkEnd","existingLinkEnd","existingLinkStart","_ref3","panelLinkStart","operator","eq","addLinks","unsetFilterValueForLink","panelManager","_linkTargetPropMap$ge","linkTargetPropMap","unsetFilterValue","get","endPanel","getOpenedPanelById","setPanelFilterMap","filterMap","_linkTargetPropMap$ge2","setFilterValues","setFilterMap","clearAll","map","_ref4","isolatedLinks","_link$start3","_link$end3","linkId","find","l","handlers","delete","set","dataMap","panelFilterMap","i","_filterMap$get$filter","_filterMap$get","endPanelId","existingFilterMap","filterList","visibleIndex","startColumnIndex","isExpandable","isGrouped","value","text","concat","isDateType","dateFilterFormatter","showTimeZone","showTSeparator","defaultDateTimeFormatString","FULL_DATE_FORMAT","format","cloneConfig","cloneId","linksToAdd","cloneLinksForPanel","componentId","newLinks","forceUpdate","updateLinkInProgressType","_ref5","_objectSpread","panelOrId","tableColumn","_linkInProgress$endTy2","getComponentNameFromPanel","description","render","isLinkOverlayShown","disabled","linkerOverlayMessage","in","mountOnEnter","unmountOnExit","onExited","children","getCachedLinks","messageText","onLinkSelected","onLinkDeleted","onAllLinksDeleted","onLinksUpdated","onDone","onCancel","ConnectedLinker"],"sources":["../../src/linker/Linker.tsx"],"sourcesContent":["import React, { Component, ErrorInfo } from 'react';\nimport { connect, ConnectedProps } from 'react-redux';\nimport { nanoid } from 'nanoid';\nimport memoize from 'memoize-one';\nimport { FadeTransition } from '@deephaven/components';\nimport {\n LayoutUtils,\n PanelComponent,\n PanelEvent,\n PanelManager,\n} from '@deephaven/dashboard';\nimport type GoldenLayout from '@deephaven/golden-layout';\nimport {\n DateTimeColumnFormatter,\n DateUtils,\n RowDataMap,\n TableUtils,\n} from '@deephaven/jsapi-utils';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport Log from '@deephaven/log';\nimport { Type as FilterType } from '@deephaven/filters';\nimport {\n getActiveTool,\n getApi,\n getTimeZone,\n setActiveTool as setActiveToolAction,\n RootState,\n} from '@deephaven/redux';\nimport { assertNotNull } from '@deephaven/utils';\nimport {\n getIsolatedLinkerPanelIdForDashboard,\n getLinksForDashboard,\n setDashboardLinks as setDashboardLinksAction,\n addDashboardLinks as addDashboardLinksAction,\n deleteDashboardLinks as deleteDashboardLinksAction,\n setDashboardIsolatedLinkerPanelId as setDashboardIsolatedLinkerPanelIdAction,\n setDashboardColumnSelectionValidator as setDashboardColumnSelectionValidatorAction,\n} from '../redux';\nimport ToolType from './ToolType';\nimport { ChartEvent, IrisGridEvent } from '../events';\nimport LinkerOverlayContent from './LinkerOverlayContent';\nimport LinkerUtils, {\n isLinkablePanel,\n Link,\n LinkColumn,\n LinkFilterMap,\n LinkType,\n isLinkableColumn,\n type LinkPointOptions,\n} from './LinkerUtils';\nimport {\n type FilterColumnSourceId,\n listenForFilterColumnsChanged,\n} from '../FilterEvents';\nimport {\n type LinkTargetProps,\n listenForLinkPointSelected,\n listenForLinkSourceDataSelected,\n listenForRegisterLinkTarget,\n} from './LinkerEvent';\n\nconst log = Log.module('Linker');\n\ninterface StateProps {\n activeTool: string;\n dh: typeof DhType;\n isolatedLinkerPanelId?: string;\n links: Link[];\n timeZone: string;\n}\n\ninterface OwnProps {\n layout: GoldenLayout;\n panelManager: PanelManager;\n localDashboardId: string;\n}\n\nconst mapState = (state: RootState, ownProps: OwnProps): StateProps => ({\n activeTool: getActiveTool(state),\n dh: getApi(state),\n isolatedLinkerPanelId: getIsolatedLinkerPanelIdForDashboard(\n state,\n ownProps.localDashboardId\n ),\n links: getLinksForDashboard(state, ownProps.localDashboardId),\n timeZone: getTimeZone(state),\n});\n\nconst connector = connect(mapState, {\n setActiveTool: setActiveToolAction,\n setDashboardLinks: setDashboardLinksAction,\n addDashboardLinks: addDashboardLinksAction,\n deleteDashboardLinks: deleteDashboardLinksAction,\n setDashboardIsolatedLinkerPanelId: setDashboardIsolatedLinkerPanelIdAction,\n setDashboardColumnSelectionValidator:\n setDashboardColumnSelectionValidatorAction,\n});\n\nexport type LinkerProps = OwnProps &\n StateProps &\n ConnectedProps<typeof connector>;\n\nexport type LinkerState = {\n linkInProgress?: Link & { endType?: LinkType };\n selectedIds: Set<string>;\n isDraggingPanel: boolean;\n};\n\nexport class Linker extends Component<LinkerProps, LinkerState> {\n constructor(props: LinkerProps) {\n super(props);\n\n this.handleCancel = this.handleCancel.bind(this);\n this.handleDone = this.handleDone.bind(this);\n this.handlePanelCloned = this.handlePanelCloned.bind(this);\n this.handleColumnsChanged = this.handleColumnsChanged.bind(this);\n this.handlePanelClosed = this.handlePanelClosed.bind(this);\n this.handleLayoutStateChanged = this.handleLayoutStateChanged.bind(this);\n this.handleAllLinksDeleted = this.handleAllLinksDeleted.bind(this);\n this.handleLinkDeleted = this.handleLinkDeleted.bind(this);\n this.handleLinksUpdated = this.handleLinksUpdated.bind(this);\n this.handleChartColumnSelect = this.handleChartColumnSelect.bind(this);\n this.handleGridColumnSelect = this.handleGridColumnSelect.bind(this);\n this.handleUpdateValues = this.handleUpdateValues.bind(this);\n this.handleStateChange = this.handleStateChange.bind(this);\n this.handleExited = this.handleExited.bind(this);\n this.handleLinkPointSelected = this.handleLinkPointSelected.bind(this);\n this.handleTargetRegistered = this.handleTargetRegistered.bind(this);\n this.handleLinkSelected = this.handleLinkSelected.bind(this);\n this.handlePanelDragging = this.handlePanelDragging.bind(this);\n this.handlePanelDropped = this.handlePanelDropped.bind(this);\n this.isColumnSelectionValid = this.isColumnSelectionValid.bind(this);\n\n this.state = {\n linkInProgress: undefined,\n selectedIds: new Set<string>(),\n isDraggingPanel: false,\n };\n }\n\n componentDidMount(): void {\n const { layout } = this.props;\n this.startListening(layout);\n this.updateSelectionValidators();\n }\n\n componentDidUpdate(prevProps: LinkerProps): void {\n const { activeTool, layout } = this.props;\n if (layout !== prevProps.layout) {\n this.stopListening(prevProps.layout);\n this.startListening(layout);\n }\n if (activeTool !== prevProps.activeTool) {\n this.updateSelectionValidators();\n if (activeTool === ToolType.DEFAULT) {\n this.reset();\n }\n }\n }\n\n componentDidCatch(error: Error, info: ErrorInfo): void {\n log.error('componentDidCatch', error, info);\n }\n\n componentWillUnmount(): void {\n const { layout } = this.props;\n this.stopListening(layout);\n }\n\n private linkTargetPropMap: Map<string, LinkTargetProps> = new Map();\n\n private removerFns: (() => void)[] = [];\n\n startListening(layout: GoldenLayout): void {\n layout.on('stateChanged', this.handleLayoutStateChanged);\n\n const { eventHub } = layout;\n eventHub.on(IrisGridEvent.COLUMN_SELECTED, this.handleGridColumnSelect);\n eventHub.on(IrisGridEvent.DATA_SELECTED, this.handleUpdateValues);\n eventHub.on(IrisGridEvent.STATE_CHANGED, this.handleStateChange);\n eventHub.on(ChartEvent.COLUMN_SELECTED, this.handleChartColumnSelect);\n eventHub.on(PanelEvent.CLONED, this.handlePanelCloned);\n this.removerFns = [\n listenForFilterColumnsChanged(eventHub, this.handleColumnsChanged),\n listenForLinkPointSelected(eventHub, this.handleLinkPointSelected),\n listenForLinkSourceDataSelected(eventHub, this.handleUpdateValues),\n listenForRegisterLinkTarget(eventHub, this.handleTargetRegistered),\n ];\n eventHub.on(PanelEvent.CLOSE, this.handlePanelClosed);\n eventHub.on(PanelEvent.CLOSED, this.handlePanelClosed);\n eventHub.on(PanelEvent.DRAGGING, this.handlePanelDragging);\n eventHub.on(PanelEvent.DROPPED, this.handlePanelDropped);\n }\n\n stopListening(layout: GoldenLayout): void {\n layout.off('stateChanged', this.handleLayoutStateChanged);\n\n const { eventHub } = layout;\n eventHub.off(IrisGridEvent.COLUMN_SELECTED, this.handleGridColumnSelect);\n eventHub.off(IrisGridEvent.DATA_SELECTED, this.handleUpdateValues);\n eventHub.off(IrisGridEvent.STATE_CHANGED, this.handleStateChange);\n eventHub.off(ChartEvent.COLUMN_SELECTED, this.handleChartColumnSelect);\n eventHub.off(PanelEvent.CLONED, this.handlePanelCloned);\n eventHub.off(PanelEvent.CLOSE, this.handlePanelClosed);\n eventHub.off(PanelEvent.CLOSED, this.handlePanelClosed);\n eventHub.off(PanelEvent.DRAGGING, this.handlePanelDragging);\n eventHub.off(PanelEvent.DROPPED, this.handlePanelDropped);\n this.removerFns.forEach(remove => remove());\n this.removerFns = [];\n }\n\n reset(): void {\n this.setState({\n linkInProgress: undefined,\n selectedIds: new Set<string>(),\n });\n }\n\n handleCancel(): void {\n const { linkInProgress } = this.state;\n if (linkInProgress == null) {\n const { setActiveTool } = this.props;\n setActiveTool(ToolType.DEFAULT);\n }\n this.setState({ linkInProgress: undefined });\n }\n\n handleDone(): void {\n const { setActiveTool } = this.props;\n setActiveTool(ToolType.DEFAULT);\n }\n\n handleChartColumnSelect(panel: PanelComponent, column: LinkColumn): void {\n const panelId = LayoutUtils.getIdFromPanel(panel);\n assertNotNull(panelId);\n this.columnSelected(panelId, column, 'chartLink', true);\n }\n\n handleColumnsChanged(\n sourceId: FilterColumnSourceId,\n columns: readonly LinkColumn[] | null\n ): void {\n log.debug('handleColumnsChanged', sourceId, columns);\n const { links } = this.props;\n if (sourceId == null) {\n log.error('Invalid filter columns source id', sourceId);\n return;\n }\n\n // Columns is null when dh.ui widgets with linker capability are closed\n if (columns == null) {\n this.deleteLinksForPanelId(sourceId);\n return;\n }\n // NOTE: links need to be updated to use sourceId instead of panelId. This will be done when we implement linker for dh.ui widgets DH-18840\n // Delete links that start or end on non-existent column in the updated panel\n const linksToDelete = links.filter(\n ({ start, end }) =>\n (start.panelId === sourceId &&\n LinkerUtils.findColumn(columns, start) == null) ||\n (end != null &&\n end.panelId === sourceId &&\n LinkerUtils.findColumn(columns, end) == null)\n );\n this.deleteLinks(linksToDelete);\n }\n\n handleGridColumnSelect(panel: PanelComponent, column: LinkColumn): void {\n if (!isLinkableColumn(column)) {\n log.debug2('Column is not filterable');\n return;\n }\n const panelId = LayoutUtils.getIdFromPanel(panel);\n assertNotNull(panelId);\n this.columnSelected(panelId, column, 'tableLink');\n }\n\n handleLinkPointSelected(\n sourceId: string,\n column: LinkColumn,\n options: LinkPointOptions\n ): void {\n const { type } = options;\n const isIsolatedLinker = type === 'filterSource';\n const isAlwaysEnd = type === 'chartLink' || type === 'filterSource';\n\n // filterSource type should open in isolated linker mode\n if (!this.isOverlayShown() && sourceId != null && isIsolatedLinker) {\n const {\n links,\n localDashboardId,\n setActiveTool,\n setDashboardIsolatedLinkerPanelId,\n } = this.props;\n\n const panelLinks = links.filter(\n link =>\n link.start?.panelId === sourceId || link.end?.panelId === sourceId\n );\n\n // Initial click on the filter source button with linker inactive\n // Show linker in isolated mode for panel\n setActiveTool(ToolType.LINKER);\n setDashboardIsolatedLinkerPanelId(localDashboardId, sourceId);\n\n if (panelLinks.length === 0) {\n // Source not linked - start new link in isolated linker mode\n // Need to pass panelId for overrideIsolatedLinkerPanelId\n // as redux prop update at this point not yet propagated\n this.columnSelected(sourceId, column, type, isAlwaysEnd, sourceId);\n }\n return;\n }\n\n this.columnSelected(sourceId, column, type, isAlwaysEnd);\n }\n\n /**\n * Track a column selection and build the link from it.\n * @param sourceId The ID of the source for the column selection\n * @param column The column that was selected\n * @param type The type of the link point\n * @param isAlwaysEndPoint True if the selection is always the end point, even if it's the first column selected. Defaults to false.\n * @param overrideIsolatedLinkerPanelId isolatedLinkerPanelId to use when method is called before prop changes propagate\n */\n columnSelected(\n sourceId: string,\n column: LinkColumn,\n type: LinkType,\n isAlwaysEndPoint = false,\n overrideIsolatedLinkerPanelId?: string | string[]\n ): void {\n if (overrideIsolatedLinkerPanelId === undefined && !this.isOverlayShown()) {\n return;\n }\n const { isolatedLinkerPanelId } = this.props;\n const { linkInProgress } = this.state;\n const { name: columnName, type: columnType } = column;\n if (linkInProgress == null || linkInProgress.start == null) {\n const newLink: Link & { endType?: LinkType } = {\n id: nanoid(),\n start: {\n panelId: sourceId,\n columnName,\n columnType,\n },\n type: 'invalid',\n isReversed: isAlwaysEndPoint,\n };\n\n if (isAlwaysEndPoint) {\n newLink.endType = type;\n }\n\n log.debug('starting link', newLink);\n\n this.setState({ linkInProgress: newLink });\n } else {\n const { links } = this.props;\n const { start, id, isReversed = false } = linkInProgress;\n const end = {\n panelId: sourceId,\n columnName,\n columnType,\n };\n\n const isValid =\n !(isReversed && isAlwaysEndPoint) && // Cannot add a point which is only an end when we already have an end\n LinkerUtils.isLinkValid(\n isReversed ? end : start,\n isReversed ? start : end,\n overrideIsolatedLinkerPanelId ?? isolatedLinkerPanelId\n );\n\n if (!isValid) {\n log.debug('Ignore invalid link connection', linkInProgress, end);\n return;\n }\n\n // The end point is what determines the type\n // If the link is reversed, we already set the type on the linkInProgress\n const finalType = linkInProgress.endType ?? type;\n\n switch (finalType) {\n case 'invalid':\n log.debug('Ignore invalid link connection', linkInProgress, end);\n return;\n case 'filterSource': {\n // filterSource links have a limit of 1 link per target\n // New link validation passed, delete existing links before adding the new one\n const existingLinkPanelId =\n isReversed !== undefined && isReversed\n ? start.panelId\n : end.panelId;\n // In cases with multiple targets per panel (i.e. chart filters)\n // links would have to be filtered by panelId and columnName and columnType\n const linksToDelete = links.filter(\n ({ end: panelLinkEnd }) =>\n panelLinkEnd?.panelId === existingLinkPanelId\n );\n this.deleteLinks(linksToDelete);\n break;\n }\n case 'chartLink': {\n const existingLinkEnd = isReversed === true ? start : end;\n const existingLinkStart = isReversed === true ? end : start;\n log.debug('creating chartlink', { existingLinkEnd, start, end });\n // Don't allow linking more than one column per source to each chart column\n const linksToDelete = links.filter(\n ({ end: panelLinkEnd, start: panelLinkStart }) =>\n panelLinkStart?.panelId === existingLinkStart.panelId &&\n panelLinkEnd?.panelId === existingLinkEnd.panelId &&\n panelLinkEnd?.columnName === existingLinkEnd.columnName &&\n panelLinkEnd?.columnType === existingLinkEnd.columnType\n );\n this.deleteLinks(linksToDelete);\n break;\n }\n case 'tableLink':\n // No-op\n break;\n }\n\n // Create a completed link from link in progress\n const newLink: Link = {\n start: isReversed ? end : start,\n end: isReversed ? start : end,\n id,\n type: finalType,\n operator: FilterType.eq,\n };\n log.info('creating link', newLink);\n\n this.setState(\n { linkInProgress: undefined, selectedIds: new Set<string>([id]) },\n () => {\n // Adding link after updating state\n // otherwise both new link and linkInProgress could be rendered at the same time\n // resulting in \"multiple children with same key\" error\n this.addLinks([newLink]);\n }\n );\n }\n }\n\n unsetFilterValueForLink(link: Link): void {\n const { panelManager } = this.props;\n if (link.end) {\n const { end } = link;\n const { panelId, columnName, columnType } = end;\n const { linkTargetPropMap } = this;\n const unsetFilterValue = linkTargetPropMap.get(panelId)?.unsetFilterValue;\n if (unsetFilterValue) {\n unsetFilterValue(columnName, columnType);\n return;\n }\n\n const endPanel = panelManager.getOpenedPanelById(panelId);\n if (!endPanel) {\n log.debug(\n 'endPanel no longer exists or target is not a panel. Ignoring unsetFilterValue',\n panelId\n );\n } else if (isLinkablePanel(endPanel)) {\n endPanel.unsetFilterValue(columnName, columnType);\n } else {\n log.debug('endPanel.unsetFilterValue not implemented', endPanel);\n }\n }\n }\n\n /**\n * Set filters for a given panel ID\n * @param panelId ID of panel to set filters on\n * @param filterMap Map of column name to column type, text, and value\n */\n setPanelFilterMap(panelId: string, filterMap: LinkFilterMap): void {\n log.debug('Set filter data for panel:', panelId, filterMap);\n const { panelManager } = this.props;\n const { linkTargetPropMap } = this;\n const setFilterValues = linkTargetPropMap.get(panelId)?.setFilterValues;\n if (setFilterValues) {\n setFilterValues(filterMap);\n return;\n }\n\n const panel = panelManager.getOpenedPanelById(panelId);\n if (!panel) {\n log.debug(\n 'panel no longer exists or target is not a panel. Ignoring setFilterMap',\n panelId\n );\n } else if (isLinkablePanel(panel)) {\n panel.setFilterMap(filterMap);\n } else {\n log.debug('panel.setFilterMap not implemented', panelId, panel);\n }\n }\n\n addLinks(links: Link[]): void {\n const { addDashboardLinks, localDashboardId } = this.props;\n addDashboardLinks(localDashboardId, links);\n }\n\n deleteLinks(links: Link[], clearAll = false): void {\n const { localDashboardId } = this.props;\n links.forEach(link => this.unsetFilterValueForLink(link));\n if (clearAll) {\n const { setDashboardLinks } = this.props;\n setDashboardLinks(localDashboardId, []);\n } else if (links.length > 0) {\n const { deleteDashboardLinks } = this.props;\n deleteDashboardLinks(\n localDashboardId,\n links.map(({ id }) => id)\n );\n }\n }\n\n handleAllLinksDeleted(): void {\n const { links, isolatedLinkerPanelId } = this.props;\n if (isolatedLinkerPanelId === undefined) {\n this.deleteLinks(links, true);\n } else {\n const isolatedLinks = links.filter(\n link =>\n link?.start?.panelId === isolatedLinkerPanelId ||\n link?.end?.panelId === isolatedLinkerPanelId\n );\n this.deleteLinks(isolatedLinks);\n }\n this.reset();\n }\n\n handleLinkDeleted(linkId: string): void {\n const { links } = this.props;\n const link = links.find(l => l.id === linkId);\n if (link) {\n this.deleteLinks([link]);\n } else {\n log.error('Unable to find link to delete', linkId);\n }\n }\n\n handleTargetRegistered(\n sourceId: string,\n handlers: LinkTargetProps | null\n ): void {\n const { linkTargetPropMap } = this;\n if (handlers == null) {\n linkTargetPropMap.delete(sourceId);\n } else {\n linkTargetPropMap.set(sourceId, handlers);\n }\n }\n\n handleUpdateValues(sourceId: string, dataMap: RowDataMap): void {\n const { dh, links, timeZone } = this.props;\n // Map of panel ID to filterMap\n const panelFilterMap: Map<string, LinkFilterMap> = new Map();\n // Instead of setting filters one by one for each link,\n // combine them so they could be set in a single call per target panel\n for (let i = 0; i < links.length; i += 1) {\n const { start, end, operator } = links[i];\n if (start.panelId === sourceId && end != null && operator != null) {\n const { panelId: endPanelId, columnName, columnType } = end;\n // Map of column name to column type and filter value\n const existingFilterMap = panelFilterMap.get(endPanelId);\n const filterMap: LinkFilterMap = existingFilterMap ?? new Map();\n const filterList = filterMap.get(columnName)?.filterList ?? [];\n const {\n visibleIndex: startColumnIndex,\n isExpandable,\n isGrouped,\n } = dataMap[start.columnName];\n let { value } = dataMap[start.columnName];\n let text = `${value}`;\n if (value === null && isExpandable && isGrouped) {\n // Clear filter on empty rollup grouping columns\n value = undefined;\n }\n if (columnType != null && TableUtils.isDateType(columnType)) {\n const dateFilterFormatter = new DateTimeColumnFormatter(dh, {\n timeZone,\n showTimeZone: false,\n showTSeparator: true,\n defaultDateTimeFormatString: DateUtils.FULL_DATE_FORMAT,\n });\n // The values are Dates for dateType values, not string like everything else\n text = dateFilterFormatter.format(value as Date);\n }\n filterList.push({ operator, text, value, startColumnIndex });\n filterMap.set(columnName, {\n columnType,\n filterList,\n });\n panelFilterMap.set(endPanelId, filterMap);\n }\n }\n\n // Apply combined filters to all target panels\n panelFilterMap.forEach((filterMap, endPanelId) => {\n this.setPanelFilterMap(endPanelId, filterMap);\n });\n }\n\n handlePanelCloned(panel: PanelComponent, cloneConfig: { id: string }): void {\n const { links } = this.props;\n const panelId = LayoutUtils.getIdFromPanel(panel);\n const cloneId = cloneConfig.id;\n if (panelId != null) {\n const linksToAdd = LinkerUtils.cloneLinksForPanel(\n links,\n panelId,\n cloneId\n );\n this.addLinks(linksToAdd);\n }\n }\n\n handlePanelDragging(componentId: string): void {\n const { links } = this.props;\n for (let i = 0; i < links.length; i += 1) {\n const link = links[i];\n const { start, end } = link;\n if (start.panelId === componentId || end?.panelId === componentId) {\n this.setState({ isDraggingPanel: true });\n return;\n }\n }\n }\n\n handlePanelDropped(): void {\n this.setState({ isDraggingPanel: false });\n }\n\n handlePanelClosed(panelId: string): void {\n // Delete links on PanelEvent.CLOSE and PanelEvent.CLOSED instead of UNMOUNT\n // because the panels can get unmounted on errors and we want to keep the links if that happens\n log.debug(`Panel ${panelId} closed, deleting links.`);\n this.deleteLinksForPanelId(panelId);\n }\n\n handleLinkSelected(linkId: string): void {\n this.setState({ selectedIds: new Set<string>([linkId]) });\n }\n\n handleLinksUpdated(newLinks: Link[]): void {\n const { localDashboardId, setDashboardLinks } = this.props;\n setDashboardLinks(localDashboardId, newLinks);\n }\n\n handleLayoutStateChanged(): void {\n this.forceUpdate();\n }\n\n handleStateChange(): void {\n this.forceUpdate();\n }\n\n handleExited(): void {\n // Has to be done after linker exit animation to avoid flashing non-isolated links\n const { localDashboardId, setDashboardIsolatedLinkerPanelId } = this.props;\n setDashboardIsolatedLinkerPanelId(localDashboardId, undefined);\n }\n\n /**\n * Delete all links for a provided panel ID. Needs to be done whenever a panel is closed or unmounted.\n * @param panelId The panel ID to delete links for\n */\n deleteLinksForPanelId(panelId: string): void {\n const { links } = this.props;\n for (let i = 0; i < links.length; i += 1) {\n const link = links[i];\n const { start, end, id } = link;\n if (start.panelId === panelId || end?.panelId === panelId) {\n this.handleLinkDeleted(id);\n }\n }\n }\n\n getCachedLinks = memoize(\n (\n links: Link[],\n linkInProgress: Link | undefined,\n isolateForPanelId: string | undefined\n ) => {\n const combinedLinks = [...links];\n\n if (linkInProgress != null && linkInProgress.start != null) {\n combinedLinks.push(linkInProgress);\n }\n\n if (isolateForPanelId !== undefined) {\n return combinedLinks.filter(\n link =>\n link?.start?.panelId === isolateForPanelId ||\n link?.end?.panelId === isolateForPanelId ||\n link?.end == null\n );\n }\n // Show all links in regular linker mode -- both isolated and not\n return combinedLinks;\n }\n );\n\n isOverlayShown(): boolean {\n const { activeTool } = this.props;\n return activeTool === ToolType.LINKER;\n }\n\n updateSelectionValidators(): void {\n const {\n activeTool,\n setDashboardColumnSelectionValidator,\n localDashboardId,\n } = this.props;\n switch (activeTool) {\n case ToolType.LINKER:\n setDashboardColumnSelectionValidator(\n localDashboardId,\n this.isColumnSelectionValid\n );\n break;\n default:\n setDashboardColumnSelectionValidator(localDashboardId, undefined);\n break;\n }\n }\n\n updateLinkInProgressType(type: LinkType = 'invalid'): void {\n this.setState(({ linkInProgress }) => {\n if (linkInProgress !== undefined) {\n return {\n linkInProgress: {\n ...linkInProgress,\n type,\n },\n };\n }\n return null;\n });\n }\n\n isColumnSelectionValid(\n panelOrId: PanelComponent | string,\n tableColumn: LinkColumn | undefined,\n options: LinkPointOptions\n ): boolean {\n const { linkInProgress } = this.state;\n const { isolatedLinkerPanelId } = this.props;\n // This is backwards compatibility for Grizzly Enterprise panels\n // IrisGridPanel is the only allowed start point for a link\n // The enterprise panels will not call this method with options\n // They are also JS and removed in sanluis, so figure this is best for now\n const isAlwaysEnd =\n typeof panelOrId === 'string'\n ? options.type === 'filterSource' || options.type === 'chartLink'\n : LayoutUtils.getComponentNameFromPanel(panelOrId) !== 'IrisGridPanel';\n\n if (tableColumn == null) {\n if (linkInProgress?.start != null) {\n // Link started, end point is not a valid target\n this.updateLinkInProgressType('invalid');\n }\n return false;\n }\n\n // TODO: Use preview/original type property when core/#3358 is completed\n if (!isLinkableColumn(tableColumn)) {\n log.debug2('Column is not filterable', tableColumn.description);\n if (linkInProgress?.start != null) {\n this.updateLinkInProgressType('invalid');\n }\n return false;\n }\n\n // Link not started yet - no need to update type\n if (linkInProgress?.start == null) {\n return true;\n }\n\n const { isReversed = false, start } = linkInProgress;\n const panelId =\n typeof panelOrId === 'string'\n ? panelOrId\n : LayoutUtils.getIdFromPanel(panelOrId);\n if (panelId == null) {\n return false;\n }\n\n // We've already selected an end point, so we can't select another one\n if (isReversed && isAlwaysEnd) {\n this.updateLinkInProgressType('invalid');\n return false;\n }\n\n const end = {\n panelId,\n columnName: tableColumn.name,\n columnType: tableColumn.type,\n };\n\n const isValid = isReversed\n ? LinkerUtils.isLinkValid(end, start, isolatedLinkerPanelId)\n : LinkerUtils.isLinkValid(start, end, isolatedLinkerPanelId);\n\n this.updateLinkInProgressType(\n isValid ? linkInProgress.endType ?? options.type : 'invalid'\n );\n\n return isValid;\n }\n\n render(): JSX.Element | null {\n const { links, isolatedLinkerPanelId, panelManager } = this.props;\n const { linkInProgress, selectedIds, isDraggingPanel } = this.state;\n\n const isLinkOverlayShown = this.isOverlayShown();\n const disabled = linkInProgress != null && linkInProgress.start != null;\n const linkerOverlayMessage =\n isolatedLinkerPanelId === undefined\n ? 'Click a column source, then click a column target to create a filter link. The filter comparison operator used by a selected link can be changed. Delete a filter link by clicking the delete button or with alt+click. Click done when finished.'\n : 'Create a link between the source column button and a table column by clicking on one, then the other. Delete a filter link by clicking the delete button or with alt+click. Click done when finished.';\n\n return !isDraggingPanel ? (\n <FadeTransition\n in={isLinkOverlayShown}\n mountOnEnter\n unmountOnExit\n onExited={this.handleExited}\n >\n <LinkerOverlayContent\n disabled={disabled}\n panelManager={panelManager}\n links={this.getCachedLinks(\n links,\n linkInProgress,\n isolatedLinkerPanelId\n )}\n selectedIds={selectedIds}\n messageText={linkerOverlayMessage}\n onLinkSelected={this.handleLinkSelected}\n onLinkDeleted={this.handleLinkDeleted}\n onAllLinksDeleted={this.handleAllLinksDeleted}\n onLinksUpdated={this.handleLinksUpdated}\n onDone={this.handleDone}\n onCancel={this.handleCancel}\n linkTargetPropMap={this.linkTargetPropMap}\n />\n </FadeTransition>\n ) : null;\n }\n}\n\nconst ConnectedLinker = connector(Linker);\n\nexport default ConnectedLinker;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Linker.js","names":["React","Component","connect","nanoid","memoize","FadeTransition","LayoutUtils","PanelEvent","DateTimeColumnFormatter","DateUtils","TableUtils","Log","Type","FilterType","getActiveTool","getApi","getTimeZone","setActiveTool","setActiveToolAction","assertNotNull","getIsolatedLinkerPanelIdForDashboard","getLinksForDashboard","setDashboardLinks","setDashboardLinksAction","addDashboardLinks","addDashboardLinksAction","deleteDashboardLinks","deleteDashboardLinksAction","setDashboardIsolatedLinkerPanelId","setDashboardIsolatedLinkerPanelIdAction","setDashboardColumnSelectionValidator","setDashboardColumnSelectionValidatorAction","ToolType","ChartEvent","IrisGridEvent","LinkerOverlayContent","LinkerUtils","isLinkablePanel","isLinkableColumn","listenForFilterColumnsChanged","listenForLinkPointSelected","listenForLinkSourceDataSelected","listenForRegisterLinkTarget","jsx","_jsx","log","module","mapState","state","ownProps","activeTool","dh","isolatedLinkerPanelId","localDashboardId","links","timeZone","connector","Linker","constructor","props","_defineProperty","Map","linkInProgress","isolateForPanelId","combinedLinks","start","push","undefined","filter","link","_link$start","_link$end","panelId","end","handleCancel","bind","handleDone","handlePanelCloned","handleColumnsChanged","handlePanelClosed","handleLayoutStateChanged","handleAllLinksDeleted","handleLinkDeleted","handleLinksUpdated","handleChartColumnSelect","handleGridColumnSelect","handleUpdateValues","handleStateChange","handleExited","handleLinkPointSelected","handleTargetRegistered","handleLinkSelected","handlePanelDragging","handlePanelDropped","isColumnSelectionValid","selectedIds","Set","isDraggingPanel","componentDidMount","layout","startListening","updateSelectionValidators","componentDidUpdate","prevProps","stopListening","DEFAULT","reset","componentDidCatch","error","info","componentWillUnmount","on","eventHub","COLUMN_SELECTED","DATA_SELECTED","STATE_CHANGED","CLONED","removerFns","CLOSE","CLOSED","DRAGGING","DROPPED","off","forEach","remove","setState","panel","column","getIdFromPanel","columnSelected","sourceId","columns","debug","deleteLinksForPanelId","linksToDelete","_ref","findColumn","deleteLinks","debug2","options","type","isIsolatedLinker","isAlwaysEnd","isOverlayShown","panelLinks","_link$start2","_link$end2","LINKER","length","isAlwaysEndPoint","arguments","overrideIsolatedLinkerPanelId","name","columnName","columnType","newLink","id","isReversed","endType","_linkInProgress$endTy","isValid","isLinkValid","finalType","existingLinkPanelId","_ref2","panelLinkEnd","existingLinkEnd","existingLinkStart","_ref3","panelLinkStart","operator","eq","addLinks","unsetFilterValueForLink","panelManager","_linkTargetPropMap$ge","linkTargetPropMap","unsetFilterValue","get","endPanel","getOpenedPanelById","setPanelFilterMap","filterMap","_linkTargetPropMap$ge2","setFilterValues","setFilterMap","clearAll","map","_ref4","isolatedLinks","_link$start3","_link$end3","linkId","find","l","handlers","delete","set","dataMap","panelFilterMap","i","_filterMap$get$filter","_filterMap$get","endPanelId","existingFilterMap","filterList","visibleIndex","startColumnIndex","isExpandable","isGrouped","value","text","concat","isDateType","dateFilterFormatter","showTimeZone","showTSeparator","defaultDateTimeFormatString","FULL_DATE_FORMAT","format","cloneConfig","cloneId","linksToAdd","cloneLinksForPanel","componentId","newLinks","forceUpdate","updateLinkInProgressType","_ref5","_objectSpread","panelOrId","tableColumn","_linkInProgress$endTy2","getComponentNameFromPanel","description","render","isLinkOverlayShown","disabled","linkerOverlayMessage","in","mountOnEnter","unmountOnExit","onExited","children","getCachedLinks","messageText","onLinkSelected","onLinkDeleted","onAllLinksDeleted","onLinksUpdated","onDone","onCancel","ConnectedLinker"],"sources":["../../src/linker/Linker.tsx"],"sourcesContent":["import React, { Component, ErrorInfo } from 'react';\nimport { connect, ConnectedProps } from 'react-redux';\nimport { nanoid } from 'nanoid';\nimport memoize from 'memoize-one';\nimport { FadeTransition } from '@deephaven/components';\nimport {\n LayoutUtils,\n PanelComponent,\n PanelEvent,\n PanelManager,\n} from '@deephaven/dashboard';\nimport type GoldenLayout from '@deephaven/golden-layout';\nimport {\n DateTimeColumnFormatter,\n DateUtils,\n RowDataMap,\n TableUtils,\n} from '@deephaven/jsapi-utils';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport Log from '@deephaven/log';\nimport { Type as FilterType } from '@deephaven/filters';\nimport {\n getActiveTool,\n getApi,\n getTimeZone,\n setActiveTool as setActiveToolAction,\n RootState,\n} from '@deephaven/redux';\nimport { assertNotNull } from '@deephaven/utils';\nimport {\n getIsolatedLinkerPanelIdForDashboard,\n getLinksForDashboard,\n setDashboardLinks as setDashboardLinksAction,\n addDashboardLinks as addDashboardLinksAction,\n deleteDashboardLinks as deleteDashboardLinksAction,\n setDashboardIsolatedLinkerPanelId as setDashboardIsolatedLinkerPanelIdAction,\n setDashboardColumnSelectionValidator as setDashboardColumnSelectionValidatorAction,\n} from '../redux';\nimport ToolType from './ToolType';\nimport { ChartEvent, IrisGridEvent } from '../events';\nimport LinkerOverlayContent from './LinkerOverlayContent';\nimport LinkerUtils, {\n isLinkablePanel,\n Link,\n LinkColumn,\n LinkFilterMap,\n LinkType,\n isLinkableColumn,\n type LinkPointOptions,\n} from './LinkerUtils';\nimport {\n type FilterColumnSourceId,\n listenForFilterColumnsChanged,\n} from '../FilterEvents';\nimport {\n type LinkTargetProps,\n listenForLinkPointSelected,\n listenForLinkSourceDataSelected,\n listenForRegisterLinkTarget,\n} from './LinkerEvent';\n\nconst log = Log.module('Linker');\n\ninterface StateProps {\n activeTool: string;\n dh: typeof DhType;\n isolatedLinkerPanelId?: string;\n links: Link[];\n timeZone: string;\n}\n\ninterface OwnProps {\n layout: GoldenLayout;\n panelManager: PanelManager;\n localDashboardId: string;\n}\n\nconst mapState = (state: RootState, ownProps: OwnProps): StateProps => ({\n activeTool: getActiveTool(state),\n dh: getApi(state),\n isolatedLinkerPanelId: getIsolatedLinkerPanelIdForDashboard(\n state,\n ownProps.localDashboardId\n ),\n links: getLinksForDashboard(state, ownProps.localDashboardId),\n timeZone: getTimeZone(state),\n});\n\nconst connector = connect(mapState, {\n setActiveTool: setActiveToolAction,\n setDashboardLinks: setDashboardLinksAction,\n addDashboardLinks: addDashboardLinksAction,\n deleteDashboardLinks: deleteDashboardLinksAction,\n setDashboardIsolatedLinkerPanelId: setDashboardIsolatedLinkerPanelIdAction,\n setDashboardColumnSelectionValidator:\n setDashboardColumnSelectionValidatorAction,\n});\n\nexport type LinkerProps = OwnProps &\n StateProps &\n ConnectedProps<typeof connector>;\n\nexport type LinkerState = {\n linkInProgress?: Link & { endType?: LinkType };\n selectedIds: Set<string>;\n isDraggingPanel: boolean;\n};\n\nexport class Linker extends Component<LinkerProps, LinkerState> {\n constructor(props: LinkerProps) {\n super(props);\n\n this.handleCancel = this.handleCancel.bind(this);\n this.handleDone = this.handleDone.bind(this);\n this.handlePanelCloned = this.handlePanelCloned.bind(this);\n this.handleColumnsChanged = this.handleColumnsChanged.bind(this);\n this.handlePanelClosed = this.handlePanelClosed.bind(this);\n this.handleLayoutStateChanged = this.handleLayoutStateChanged.bind(this);\n this.handleAllLinksDeleted = this.handleAllLinksDeleted.bind(this);\n this.handleLinkDeleted = this.handleLinkDeleted.bind(this);\n this.handleLinksUpdated = this.handleLinksUpdated.bind(this);\n this.handleChartColumnSelect = this.handleChartColumnSelect.bind(this);\n this.handleGridColumnSelect = this.handleGridColumnSelect.bind(this);\n this.handleUpdateValues = this.handleUpdateValues.bind(this);\n this.handleStateChange = this.handleStateChange.bind(this);\n this.handleExited = this.handleExited.bind(this);\n this.handleLinkPointSelected = this.handleLinkPointSelected.bind(this);\n this.handleTargetRegistered = this.handleTargetRegistered.bind(this);\n this.handleLinkSelected = this.handleLinkSelected.bind(this);\n this.handlePanelDragging = this.handlePanelDragging.bind(this);\n this.handlePanelDropped = this.handlePanelDropped.bind(this);\n this.isColumnSelectionValid = this.isColumnSelectionValid.bind(this);\n\n this.state = {\n linkInProgress: undefined,\n selectedIds: new Set<string>(),\n isDraggingPanel: false,\n };\n }\n\n componentDidMount(): void {\n const { layout } = this.props;\n this.startListening(layout);\n this.updateSelectionValidators();\n }\n\n componentDidUpdate(prevProps: LinkerProps): void {\n const { activeTool, layout } = this.props;\n if (layout !== prevProps.layout) {\n this.stopListening(prevProps.layout);\n this.startListening(layout);\n }\n if (activeTool !== prevProps.activeTool) {\n this.updateSelectionValidators();\n if (activeTool === ToolType.DEFAULT) {\n this.reset();\n }\n }\n }\n\n componentDidCatch(error: Error, info: ErrorInfo): void {\n log.error('componentDidCatch', error, info);\n }\n\n componentWillUnmount(): void {\n const { layout } = this.props;\n this.stopListening(layout);\n }\n\n private linkTargetPropMap: Map<string, LinkTargetProps> = new Map();\n\n private removerFns: (() => void)[] = [];\n\n startListening(layout: GoldenLayout): void {\n layout.on('stateChanged', this.handleLayoutStateChanged);\n\n const { eventHub } = layout;\n eventHub.on(IrisGridEvent.COLUMN_SELECTED, this.handleGridColumnSelect);\n eventHub.on(IrisGridEvent.DATA_SELECTED, this.handleUpdateValues);\n eventHub.on(IrisGridEvent.STATE_CHANGED, this.handleStateChange);\n eventHub.on(ChartEvent.COLUMN_SELECTED, this.handleChartColumnSelect);\n eventHub.on(PanelEvent.CLONED, this.handlePanelCloned);\n this.removerFns = [\n listenForFilterColumnsChanged(eventHub, this.handleColumnsChanged),\n listenForLinkPointSelected(eventHub, this.handleLinkPointSelected),\n listenForLinkSourceDataSelected(eventHub, this.handleUpdateValues),\n listenForRegisterLinkTarget(eventHub, this.handleTargetRegistered),\n ];\n eventHub.on(PanelEvent.CLOSE, this.handlePanelClosed);\n eventHub.on(PanelEvent.CLOSED, this.handlePanelClosed);\n eventHub.on(PanelEvent.DRAGGING, this.handlePanelDragging);\n eventHub.on(PanelEvent.DROPPED, this.handlePanelDropped);\n }\n\n stopListening(layout: GoldenLayout): void {\n layout.off('stateChanged', this.handleLayoutStateChanged);\n\n const { eventHub } = layout;\n eventHub.off(IrisGridEvent.COLUMN_SELECTED, this.handleGridColumnSelect);\n eventHub.off(IrisGridEvent.DATA_SELECTED, this.handleUpdateValues);\n eventHub.off(IrisGridEvent.STATE_CHANGED, this.handleStateChange);\n eventHub.off(ChartEvent.COLUMN_SELECTED, this.handleChartColumnSelect);\n eventHub.off(PanelEvent.CLONED, this.handlePanelCloned);\n eventHub.off(PanelEvent.CLOSE, this.handlePanelClosed);\n eventHub.off(PanelEvent.CLOSED, this.handlePanelClosed);\n eventHub.off(PanelEvent.DRAGGING, this.handlePanelDragging);\n eventHub.off(PanelEvent.DROPPED, this.handlePanelDropped);\n this.removerFns.forEach(remove => remove());\n this.removerFns = [];\n }\n\n reset(): void {\n this.setState({\n linkInProgress: undefined,\n selectedIds: new Set<string>(),\n });\n }\n\n handleCancel(): void {\n const { linkInProgress } = this.state;\n if (linkInProgress == null) {\n const { setActiveTool } = this.props;\n setActiveTool(ToolType.DEFAULT);\n }\n this.setState({ linkInProgress: undefined });\n }\n\n handleDone(): void {\n const { setActiveTool } = this.props;\n setActiveTool(ToolType.DEFAULT);\n }\n\n handleChartColumnSelect(panel: PanelComponent, column: LinkColumn): void {\n const panelId = LayoutUtils.getIdFromPanel(panel);\n assertNotNull(panelId);\n this.columnSelected(panelId, column, 'chartLink', true);\n }\n\n handleColumnsChanged(\n sourceId: FilterColumnSourceId,\n columns: readonly LinkColumn[] | null\n ): void {\n log.debug('handleColumnsChanged', sourceId, columns);\n const { links } = this.props;\n if (sourceId == null) {\n log.error('Invalid filter columns source id', sourceId);\n return;\n }\n\n // Columns is null when dh.ui widgets with linker capability are closed\n if (columns == null) {\n this.deleteLinksForPanelId(sourceId);\n return;\n }\n // NOTE: links need to be updated to use sourceId instead of panelId. This will be done when we implement linker for dh.ui widgets DH-18840\n // Delete links that start or end on non-existent column in the updated panel\n const linksToDelete = links.filter(\n ({ start, end }) =>\n (start.panelId === sourceId &&\n LinkerUtils.findColumn(columns, start) == null) ||\n (end != null &&\n end.panelId === sourceId &&\n LinkerUtils.findColumn(columns, end) == null)\n );\n this.deleteLinks(linksToDelete);\n }\n\n handleGridColumnSelect(panel: PanelComponent, column: LinkColumn): void {\n if (!isLinkableColumn(column)) {\n log.debug2('Column is not filterable');\n return;\n }\n const panelId = LayoutUtils.getIdFromPanel(panel);\n assertNotNull(panelId);\n this.columnSelected(panelId, column, 'tableLink');\n }\n\n handleLinkPointSelected(\n sourceId: string,\n column: LinkColumn,\n options: LinkPointOptions\n ): void {\n const { type } = options;\n const isIsolatedLinker = type === 'filterSource';\n const isAlwaysEnd = type === 'chartLink' || type === 'filterSource';\n\n // filterSource type should open in isolated linker mode\n if (!this.isOverlayShown() && sourceId != null && isIsolatedLinker) {\n const {\n links,\n localDashboardId,\n setActiveTool,\n setDashboardIsolatedLinkerPanelId,\n } = this.props;\n\n const panelLinks = links.filter(\n link =>\n link.start?.panelId === sourceId || link.end?.panelId === sourceId\n );\n\n // Initial click on the filter source button with linker inactive\n // Show linker in isolated mode for panel\n setActiveTool(ToolType.LINKER);\n setDashboardIsolatedLinkerPanelId(localDashboardId, sourceId);\n\n if (panelLinks.length === 0) {\n // Source not linked - start new link in isolated linker mode\n // Need to pass panelId for overrideIsolatedLinkerPanelId\n // as redux prop update at this point not yet propagated\n this.columnSelected(sourceId, column, type, isAlwaysEnd, sourceId);\n }\n return;\n }\n\n this.columnSelected(sourceId, column, type, isAlwaysEnd);\n }\n\n /**\n * Track a column selection and build the link from it.\n * @param sourceId The ID of the source for the column selection\n * @param column The column that was selected\n * @param type The type of the link point\n * @param isAlwaysEndPoint True if the selection is always the end point, even if it's the first column selected. Defaults to false.\n * @param overrideIsolatedLinkerPanelId isolatedLinkerPanelId to use when method is called before prop changes propagate\n */\n columnSelected(\n sourceId: string,\n column: LinkColumn,\n type: LinkType,\n isAlwaysEndPoint = false,\n overrideIsolatedLinkerPanelId?: string | string[]\n ): void {\n if (overrideIsolatedLinkerPanelId === undefined && !this.isOverlayShown()) {\n return;\n }\n const { isolatedLinkerPanelId } = this.props;\n const { linkInProgress } = this.state;\n const { name: columnName, type: columnType } = column;\n if (linkInProgress == null || linkInProgress.start == null) {\n const newLink: Link & { endType?: LinkType } = {\n id: nanoid(),\n start: {\n panelId: sourceId,\n columnName,\n columnType,\n },\n type: 'invalid',\n isReversed: isAlwaysEndPoint,\n };\n\n if (isAlwaysEndPoint) {\n newLink.endType = type;\n }\n\n log.debug('starting link', newLink);\n\n this.setState({ linkInProgress: newLink });\n } else {\n const { links } = this.props;\n const { start, id, isReversed = false } = linkInProgress;\n const end = {\n panelId: sourceId,\n columnName,\n columnType,\n };\n\n const isValid =\n !(isReversed && isAlwaysEndPoint) && // Cannot add a point which is only an end when we already have an end\n LinkerUtils.isLinkValid(\n isReversed ? end : start,\n isReversed ? start : end,\n overrideIsolatedLinkerPanelId ?? isolatedLinkerPanelId\n );\n\n if (!isValid) {\n log.debug('Ignore invalid link connection', linkInProgress, end);\n return;\n }\n\n // The end point is what determines the type\n // If the link is reversed, we already set the type on the linkInProgress\n const finalType = linkInProgress.endType ?? type;\n\n switch (finalType) {\n case 'invalid':\n log.debug('Ignore invalid link connection', linkInProgress, end);\n return;\n case 'filterSource': {\n // filterSource links have a limit of 1 link per target\n // New link validation passed, delete existing links before adding the new one\n const existingLinkPanelId =\n isReversed !== undefined && isReversed\n ? start.panelId\n : end.panelId;\n // In cases with multiple targets per panel (i.e. chart filters)\n // links would have to be filtered by panelId and columnName and columnType\n const linksToDelete = links.filter(\n ({ end: panelLinkEnd }) =>\n panelLinkEnd?.panelId === existingLinkPanelId\n );\n this.deleteLinks(linksToDelete);\n break;\n }\n case 'chartLink': {\n const existingLinkEnd = isReversed === true ? start : end;\n const existingLinkStart = isReversed === true ? end : start;\n log.debug('creating chartlink', { existingLinkEnd, start, end });\n // Don't allow linking more than one column per source to each chart column\n const linksToDelete = links.filter(\n ({ end: panelLinkEnd, start: panelLinkStart }) =>\n panelLinkStart?.panelId === existingLinkStart.panelId &&\n panelLinkEnd?.panelId === existingLinkEnd.panelId &&\n panelLinkEnd?.columnName === existingLinkEnd.columnName &&\n panelLinkEnd?.columnType === existingLinkEnd.columnType\n );\n this.deleteLinks(linksToDelete);\n break;\n }\n case 'tableLink':\n // No-op\n break;\n }\n\n // Create a completed link from link in progress\n const newLink: Link = {\n start: isReversed ? end : start,\n end: isReversed ? start : end,\n id,\n type: finalType,\n operator: FilterType.eq,\n };\n log.info('creating link', newLink);\n\n this.setState(\n { linkInProgress: undefined, selectedIds: new Set<string>([id]) },\n () => {\n // Adding link after updating state\n // otherwise both new link and linkInProgress could be rendered at the same time\n // resulting in \"multiple children with same key\" error\n this.addLinks([newLink]);\n }\n );\n }\n }\n\n unsetFilterValueForLink(link: Link): void {\n const { panelManager } = this.props;\n if (link.end) {\n const { end } = link;\n const { panelId, columnName, columnType } = end;\n const { linkTargetPropMap } = this;\n const unsetFilterValue = linkTargetPropMap.get(panelId)?.unsetFilterValue;\n if (unsetFilterValue) {\n unsetFilterValue(columnName, columnType);\n return;\n }\n\n const endPanel = panelManager.getOpenedPanelById(panelId);\n if (!endPanel) {\n log.debug(\n 'endPanel no longer exists or target is not a panel. Ignoring unsetFilterValue',\n panelId\n );\n } else if (isLinkablePanel(endPanel)) {\n endPanel.unsetFilterValue(columnName, columnType);\n } else {\n log.debug('endPanel.unsetFilterValue not implemented', endPanel);\n }\n }\n }\n\n /**\n * Set filters for a given panel ID\n * @param panelId ID of panel to set filters on\n * @param filterMap Map of column name to column type, text, and value\n */\n setPanelFilterMap(panelId: string, filterMap: LinkFilterMap): void {\n log.debug('Set filter data for panel:', panelId, filterMap);\n const { panelManager } = this.props;\n const { linkTargetPropMap } = this;\n const setFilterValues = linkTargetPropMap.get(panelId)?.setFilterValues;\n if (setFilterValues) {\n setFilterValues(filterMap);\n return;\n }\n\n const panel = panelManager.getOpenedPanelById(panelId);\n if (!panel) {\n log.debug(\n 'panel no longer exists or target is not a panel. Ignoring setFilterMap',\n panelId\n );\n } else if (isLinkablePanel(panel)) {\n panel.setFilterMap(filterMap);\n } else {\n log.debug('panel.setFilterMap not implemented', panelId, panel);\n }\n }\n\n addLinks(links: Link[]): void {\n const { addDashboardLinks, localDashboardId } = this.props;\n addDashboardLinks(localDashboardId, links);\n }\n\n deleteLinks(links: Link[], clearAll = false): void {\n const { localDashboardId } = this.props;\n links.forEach(link => this.unsetFilterValueForLink(link));\n if (clearAll) {\n const { setDashboardLinks } = this.props;\n setDashboardLinks(localDashboardId, []);\n } else if (links.length > 0) {\n const { deleteDashboardLinks } = this.props;\n deleteDashboardLinks(\n localDashboardId,\n links.map(({ id }) => id)\n );\n }\n }\n\n handleAllLinksDeleted(): void {\n const { links, isolatedLinkerPanelId } = this.props;\n if (isolatedLinkerPanelId === undefined) {\n this.deleteLinks(links, true);\n } else {\n const isolatedLinks = links.filter(\n link =>\n link?.start?.panelId === isolatedLinkerPanelId ||\n link?.end?.panelId === isolatedLinkerPanelId\n );\n this.deleteLinks(isolatedLinks);\n }\n this.reset();\n }\n\n handleLinkDeleted(linkId: string): void {\n const { links } = this.props;\n const link = links.find(l => l.id === linkId);\n if (link) {\n this.deleteLinks([link]);\n } else {\n log.error('Unable to find link to delete', linkId);\n }\n }\n\n handleTargetRegistered(\n sourceId: string,\n handlers: LinkTargetProps | null\n ): void {\n const { linkTargetPropMap } = this;\n if (handlers == null) {\n linkTargetPropMap.delete(sourceId);\n } else {\n linkTargetPropMap.set(sourceId, handlers);\n }\n }\n\n handleUpdateValues(sourceId: string, dataMap: RowDataMap): void {\n const { dh, links, timeZone } = this.props;\n // Map of panel ID to filterMap\n const panelFilterMap: Map<string, LinkFilterMap> = new Map();\n // Instead of setting filters one by one for each link,\n // combine them so they could be set in a single call per target panel\n for (let i = 0; i < links.length; i += 1) {\n const { start, end, operator } = links[i];\n if (start.panelId === sourceId && end != null) {\n const { panelId: endPanelId, columnName, columnType } = end;\n // Map of column name to column type and filter value\n const existingFilterMap = panelFilterMap.get(endPanelId);\n const filterMap: LinkFilterMap = existingFilterMap ?? new Map();\n const filterList = filterMap.get(columnName)?.filterList ?? [];\n const {\n visibleIndex: startColumnIndex,\n isExpandable,\n isGrouped,\n } = dataMap[start.columnName];\n let { value } = dataMap[start.columnName];\n let text = `${value}`;\n if (value === null && isExpandable && isGrouped) {\n // Clear filter on empty rollup grouping columns\n value = undefined;\n }\n if (columnType != null && TableUtils.isDateType(columnType)) {\n const dateFilterFormatter = new DateTimeColumnFormatter(dh, {\n timeZone,\n showTimeZone: false,\n showTSeparator: true,\n defaultDateTimeFormatString: DateUtils.FULL_DATE_FORMAT,\n });\n // The values are Dates for dateType values, not string like everything else\n text = dateFilterFormatter.format(value as Date);\n }\n filterList.push({ operator, text, value, startColumnIndex });\n filterMap.set(columnName, {\n columnType,\n filterList,\n });\n panelFilterMap.set(endPanelId, filterMap);\n }\n }\n\n // Apply combined filters to all target panels\n panelFilterMap.forEach((filterMap, endPanelId) => {\n this.setPanelFilterMap(endPanelId, filterMap);\n });\n }\n\n handlePanelCloned(panel: PanelComponent, cloneConfig: { id: string }): void {\n const { links } = this.props;\n const panelId = LayoutUtils.getIdFromPanel(panel);\n const cloneId = cloneConfig.id;\n if (panelId != null) {\n const linksToAdd = LinkerUtils.cloneLinksForPanel(\n links,\n panelId,\n cloneId\n );\n this.addLinks(linksToAdd);\n }\n }\n\n handlePanelDragging(componentId: string): void {\n const { links } = this.props;\n for (let i = 0; i < links.length; i += 1) {\n const link = links[i];\n const { start, end } = link;\n if (start.panelId === componentId || end?.panelId === componentId) {\n this.setState({ isDraggingPanel: true });\n return;\n }\n }\n }\n\n handlePanelDropped(): void {\n this.setState({ isDraggingPanel: false });\n }\n\n handlePanelClosed(panelId: string): void {\n // Delete links on PanelEvent.CLOSE and PanelEvent.CLOSED instead of UNMOUNT\n // because the panels can get unmounted on errors and we want to keep the links if that happens\n log.debug(`Panel ${panelId} closed, deleting links.`);\n this.deleteLinksForPanelId(panelId);\n }\n\n handleLinkSelected(linkId: string): void {\n this.setState({ selectedIds: new Set<string>([linkId]) });\n }\n\n handleLinksUpdated(newLinks: Link[]): void {\n const { localDashboardId, setDashboardLinks } = this.props;\n setDashboardLinks(localDashboardId, newLinks);\n }\n\n handleLayoutStateChanged(): void {\n this.forceUpdate();\n }\n\n handleStateChange(): void {\n this.forceUpdate();\n }\n\n handleExited(): void {\n // Has to be done after linker exit animation to avoid flashing non-isolated links\n const { localDashboardId, setDashboardIsolatedLinkerPanelId } = this.props;\n setDashboardIsolatedLinkerPanelId(localDashboardId, undefined);\n }\n\n /**\n * Delete all links for a provided panel ID. Needs to be done whenever a panel is closed or unmounted.\n * @param panelId The panel ID to delete links for\n */\n deleteLinksForPanelId(panelId: string): void {\n const { links } = this.props;\n for (let i = 0; i < links.length; i += 1) {\n const link = links[i];\n const { start, end, id } = link;\n if (start.panelId === panelId || end?.panelId === panelId) {\n this.handleLinkDeleted(id);\n }\n }\n }\n\n getCachedLinks = memoize(\n (\n links: Link[],\n linkInProgress: Link | undefined,\n isolateForPanelId: string | undefined\n ) => {\n const combinedLinks = [...links];\n\n if (linkInProgress != null && linkInProgress.start != null) {\n combinedLinks.push(linkInProgress);\n }\n\n if (isolateForPanelId !== undefined) {\n return combinedLinks.filter(\n link =>\n link?.start?.panelId === isolateForPanelId ||\n link?.end?.panelId === isolateForPanelId ||\n link?.end == null\n );\n }\n // Show all links in regular linker mode -- both isolated and not\n return combinedLinks;\n }\n );\n\n isOverlayShown(): boolean {\n const { activeTool } = this.props;\n return activeTool === ToolType.LINKER;\n }\n\n updateSelectionValidators(): void {\n const {\n activeTool,\n setDashboardColumnSelectionValidator,\n localDashboardId,\n } = this.props;\n switch (activeTool) {\n case ToolType.LINKER:\n setDashboardColumnSelectionValidator(\n localDashboardId,\n this.isColumnSelectionValid\n );\n break;\n default:\n setDashboardColumnSelectionValidator(localDashboardId, undefined);\n break;\n }\n }\n\n updateLinkInProgressType(type: LinkType = 'invalid'): void {\n this.setState(({ linkInProgress }) => {\n if (linkInProgress !== undefined) {\n return {\n linkInProgress: {\n ...linkInProgress,\n type,\n },\n };\n }\n return null;\n });\n }\n\n isColumnSelectionValid(\n panelOrId: PanelComponent | string,\n tableColumn: LinkColumn | undefined,\n options: LinkPointOptions\n ): boolean {\n const { linkInProgress } = this.state;\n const { isolatedLinkerPanelId } = this.props;\n // This is backwards compatibility for Grizzly Enterprise panels\n // IrisGridPanel is the only allowed start point for a link\n // The enterprise panels will not call this method with options\n // They are also JS and removed in sanluis, so figure this is best for now\n const isAlwaysEnd =\n typeof panelOrId === 'string'\n ? options.type === 'filterSource' || options.type === 'chartLink'\n : LayoutUtils.getComponentNameFromPanel(panelOrId) !== 'IrisGridPanel';\n\n if (tableColumn == null) {\n if (linkInProgress?.start != null) {\n // Link started, end point is not a valid target\n this.updateLinkInProgressType('invalid');\n }\n return false;\n }\n\n // TODO: Use preview/original type property when core/#3358 is completed\n if (!isLinkableColumn(tableColumn)) {\n log.debug2('Column is not filterable', tableColumn.description);\n if (linkInProgress?.start != null) {\n this.updateLinkInProgressType('invalid');\n }\n return false;\n }\n\n // Link not started yet - no need to update type\n if (linkInProgress?.start == null) {\n return true;\n }\n\n const { isReversed = false, start } = linkInProgress;\n const panelId =\n typeof panelOrId === 'string'\n ? panelOrId\n : LayoutUtils.getIdFromPanel(panelOrId);\n if (panelId == null) {\n return false;\n }\n\n // We've already selected an end point, so we can't select another one\n if (isReversed && isAlwaysEnd) {\n this.updateLinkInProgressType('invalid');\n return false;\n }\n\n const end = {\n panelId,\n columnName: tableColumn.name,\n columnType: tableColumn.type,\n };\n\n const isValid = isReversed\n ? LinkerUtils.isLinkValid(end, start, isolatedLinkerPanelId)\n : LinkerUtils.isLinkValid(start, end, isolatedLinkerPanelId);\n\n this.updateLinkInProgressType(\n isValid ? linkInProgress.endType ?? options.type : 'invalid'\n );\n\n return isValid;\n }\n\n render(): JSX.Element | null {\n const { links, isolatedLinkerPanelId, panelManager } = this.props;\n const { linkInProgress, selectedIds, isDraggingPanel } = this.state;\n\n const isLinkOverlayShown = this.isOverlayShown();\n const disabled = linkInProgress != null && linkInProgress.start != null;\n const linkerOverlayMessage =\n isolatedLinkerPanelId === undefined\n ? 'Click a column source, then click a column target to create a filter link. The filter comparison operator used by a selected link can be changed. Delete a filter link by clicking the delete button or with alt+click. Click done when finished.'\n : 'Create a link between the source column button and a table column by clicking on one, then the other. Delete a filter link by clicking the delete button or with alt+click. Click done when finished.';\n\n return !isDraggingPanel ? (\n <FadeTransition\n in={isLinkOverlayShown}\n mountOnEnter\n unmountOnExit\n onExited={this.handleExited}\n >\n <LinkerOverlayContent\n disabled={disabled}\n panelManager={panelManager}\n links={this.getCachedLinks(\n links,\n linkInProgress,\n isolatedLinkerPanelId\n )}\n selectedIds={selectedIds}\n messageText={linkerOverlayMessage}\n onLinkSelected={this.handleLinkSelected}\n onLinkDeleted={this.handleLinkDeleted}\n onAllLinksDeleted={this.handleAllLinksDeleted}\n onLinksUpdated={this.handleLinksUpdated}\n onDone={this.handleDone}\n onCancel={this.handleCancel}\n linkTargetPropMap={this.linkTargetPropMap}\n />\n </FadeTransition>\n ) : null;\n }\n}\n\nconst ConnectedLinker = connector(Linker);\n\nexport default ConnectedLinker;\n"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React, { Component, ErrorInfo } from 'react';
|
|
2
2
|
import { PanelManager } from '@deephaven/dashboard';
|
|
3
|
-
import { TypeValue as FilterTypeValue } from '@deephaven/filters';
|
|
3
|
+
import { type TypeValue as FilterTypeValue } from '@deephaven/filters';
|
|
4
4
|
import { Link, LinkerCoordinate, LinkPoint, LinkType } from './LinkerUtils';
|
|
5
5
|
import './LinkerOverlayContent.scss';
|
|
6
6
|
import { type LinkTargetProps } from './LinkerEvent';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LinkerOverlayContent.d.ts","sourceRoot":"","sources":["../../src/linker/LinkerOverlayContent.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAQpD,OAAO,EAAe,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAIjE,OAAO,
|
|
1
|
+
{"version":3,"file":"LinkerOverlayContent.d.ts","sourceRoot":"","sources":["../../src/linker/LinkerOverlayContent.tsx"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,7 @@ import { Button, ContextActions, GLOBAL_SHORTCUTS, Tooltip } from '@deephaven/co
|
|
|
9
9
|
import { LayoutUtils } from '@deephaven/dashboard';
|
|
10
10
|
import Log from '@deephaven/log';
|
|
11
11
|
import { vsGripper } from '@deephaven/icons';
|
|
12
|
+
import { Type as FilterType } from '@deephaven/filters';
|
|
12
13
|
import clamp from 'lodash.clamp';
|
|
13
14
|
import { isLinkableFromPanel } from "./LinkerUtils.js";
|
|
14
15
|
import LinkerLink from "./LinkerLink.js";
|
|
@@ -305,7 +306,7 @@ export class LinkerOverlayContent extends Component {
|
|
|
305
306
|
onClick: onLinkSelected,
|
|
306
307
|
onDelete: onLinkDeleted,
|
|
307
308
|
isSelected: selectedIds.has(id),
|
|
308
|
-
operator: operator,
|
|
309
|
+
operator: operator !== null && operator !== void 0 ? operator : FilterType.eq,
|
|
309
310
|
startColumnType: startColumnType,
|
|
310
311
|
type: type,
|
|
311
312
|
onOperatorChanged: this.handleOperatorChanged
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LinkerOverlayContent.js","names":["React","Component","classNames","Button","ContextActions","GLOBAL_SHORTCUTS","Tooltip","LayoutUtils","Log","vsGripper","clamp","isLinkableFromPanel","LinkerLink","jsx","_jsx","jsxs","_jsxs","log","module","LinkerOverlayContent","constructor","props","_defineProperty","handleBlur","bind","handleResize","handleMouseMove","handleMouseDown","handleMouseUp","handleKeyDown","handleKeyUp","handleEscapePressed","handleOperatorChanged","dialogRef","createRef","state","mouse","undefined","dialog","offset","x","y","isDragging","mode","componentDidMount","window","addEventListener","componentDidCatch","error","info","componentWillUnmount","removeEventListener","getPointFromLinkPoint","linkPoint","panelManager","linkTargetPropMap","panelId","linkPointId","columnName","linkTargetHandlers","get","coordinates","getCoordinates","panel","getOpenedPanelById","Error","concat","coordinate","getCoordinateForColumn","e","glContainer","getContainerByPanelId","getTabPoint","linkId","type","links","onLinksUpdated","newLinks","map","link","id","_objectSpread","operator","setState","current","rect","getBoundingClientRect","dialogX","innerWidth","width","dialogY","innerHeight","height","event","clientX","clientY","preventDefault","right","bottom","key","selectedIds","onLinkDeleted","forEach","onCancel","render","disabled","messageText","onLinkSelected","onAllLinksDeleted","onDone","visibleLinks","_mouse$x","_mouse$y","isReversed","start","end","startColumnType","columnType","x1","y1","x2","y2","tmpX","tmpY","className","interactive","has","warn","filter","item","children","_ref","onClick","onDelete","isSelected","onOperatorChanged","dragging","ref","style","draggable","kind","icon","onMouseDown","actions","action","shortcut","LINKER_CLOSE","isGlobal"],"sources":["../../src/linker/LinkerOverlayContent.tsx"],"sourcesContent":["import React, { Component, ErrorInfo } from 'react';\nimport classNames from 'classnames';\nimport {\n Button,\n ContextActions,\n GLOBAL_SHORTCUTS,\n Tooltip,\n} from '@deephaven/components';\nimport { LayoutUtils, PanelManager } from '@deephaven/dashboard';\nimport Log from '@deephaven/log';\nimport type { Container } from '@deephaven/golden-layout';\nimport { vsGripper } from '@deephaven/icons';\nimport { TypeValue as FilterTypeValue } from '@deephaven/filters';\nimport clamp from 'lodash.clamp';\nimport {\n isLinkableFromPanel,\n Link,\n LinkerCoordinate,\n LinkPoint,\n LinkType,\n} from './LinkerUtils';\nimport LinkerLink from './LinkerLink';\nimport './LinkerOverlayContent.scss';\nimport { type LinkTargetProps } from './LinkerEvent';\n\nconst log = Log.module('LinkerOverlayContent');\n\nexport type VisibleLink = {\n x1: number;\n y1: number;\n x2: number;\n y2: number;\n id: string;\n className: string;\n type: LinkType;\n operator: FilterTypeValue;\n startColumnType: string | null;\n};\n\nexport type LinkerOverlayContentProps = {\n disabled?: boolean;\n links: Link[];\n selectedIds: Set<string>;\n messageText: string;\n onLinkSelected: (linkId: string) => void;\n onLinkDeleted: (linkId: string) => void;\n onAllLinksDeleted: () => void;\n onLinksUpdated: (newLinks: Link[]) => void;\n onCancel: () => void;\n onDone: () => void;\n panelManager: PanelManager;\n linkTargetPropMap: Map<string, LinkTargetProps>;\n};\n\ntype Point = { x: number; y: number };\n\nexport type LinkerOverlayContentState = {\n mouse?: Point;\n dialog?: Point;\n offset: Point;\n isDragging: boolean;\n mode: 'select' | 'delete';\n};\n\nexport class LinkerOverlayContent extends Component<\n LinkerOverlayContentProps,\n LinkerOverlayContentState\n> {\n static defaultProps = {\n disabled: 'false',\n };\n\n constructor(props: LinkerOverlayContentProps) {\n super(props);\n\n this.handleBlur = this.handleBlur.bind(this);\n this.handleResize = this.handleResize.bind(this);\n this.handleMouseMove = this.handleMouseMove.bind(this);\n this.handleMouseDown = this.handleMouseDown.bind(this);\n this.handleMouseUp = this.handleMouseUp.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.handleKeyUp = this.handleKeyUp.bind(this);\n this.handleEscapePressed = this.handleEscapePressed.bind(this);\n this.handleOperatorChanged = this.handleOperatorChanged.bind(this);\n\n this.dialogRef = React.createRef();\n\n this.state = {\n mouse: undefined,\n dialog: undefined,\n offset: { x: 0, y: 0 },\n isDragging: false,\n mode: 'select',\n };\n }\n\n componentDidMount(): void {\n window.addEventListener('blur', this.handleBlur, true);\n window.addEventListener('mousemove', this.handleMouseMove, true);\n window.addEventListener('mouseup', this.handleMouseUp, true);\n window.addEventListener('keydown', this.handleKeyDown, true);\n window.addEventListener('keyup', this.handleKeyUp, true);\n window.addEventListener('resize', this.handleResize, true);\n }\n\n // eslint-disable-next-line react/sort-comp\n componentDidCatch(error: Error, info: ErrorInfo): void {\n log.error('componentDidCatch', error, info);\n }\n\n componentWillUnmount(): void {\n window.removeEventListener('blur', this.handleBlur, true);\n window.removeEventListener('mousemove', this.handleMouseMove, true);\n window.removeEventListener('mouseup', this.handleMouseUp, true);\n window.removeEventListener('keydown', this.handleKeyDown, true);\n window.removeEventListener('keyup', this.handleKeyUp, true);\n window.removeEventListener('resize', this.handleResize, true);\n }\n\n dialogRef: React.RefObject<HTMLInputElement>;\n\n /** Gets the on screen points for a link start or end spec */\n getPointFromLinkPoint(linkPoint: LinkPoint): LinkerCoordinate {\n const { panelManager, linkTargetPropMap } = this.props;\n const { panelId: linkPointId, columnName } = linkPoint;\n\n let panelId = linkPointId;\n const linkTargetHandlers = linkTargetPropMap.get(linkPointId);\n\n if (linkTargetHandlers != null) {\n panelId = linkTargetHandlers.panelId;\n const coordinates = linkTargetHandlers.getCoordinates(columnName);\n if (coordinates != null) {\n return coordinates;\n }\n }\n\n const panel = panelManager.getOpenedPanelById(panelId);\n if (linkTargetHandlers == null && panel != null) {\n if (!isLinkableFromPanel(panel)) {\n throw new Error(\n `Panel does not have getCoordinateForColumn method: ${panelId}`\n );\n }\n try {\n // TODO: remove try/catch when IDS-7371 is fixed.\n // getCoordinateForColumn throws an exception when accessing\n // columns on a model while it reconnects\n const coordinate = panel.getCoordinateForColumn(columnName);\n if (coordinate != null) {\n return coordinate;\n }\n } catch (e) {\n log.error('Could not get coordinate for column', columnName, panel);\n }\n }\n // Fallback to panel container if the panel itself\n // crashed, unmounted, and removed from openedPanelMap.\n const glContainer = panelManager.getContainerByPanelId(panelId);\n if (glContainer == null) {\n throw new Error(`Unable to find panel container for id: ${panelId}`);\n }\n return LayoutUtils.getTabPoint(glContainer as unknown as Container);\n }\n\n handleOperatorChanged(linkId: string, type: FilterTypeValue): void {\n const { links, onLinksUpdated } = this.props;\n const newLinks: Link[] = links.map(link =>\n link.id === linkId ? { ...link, operator: type } : link\n );\n onLinksUpdated(newLinks);\n }\n\n handleBlur(): void {\n this.setState({ mode: 'select' });\n }\n\n handleResize(): void {\n const { dialog } = this.state;\n if (dialog && this.dialogRef.current) {\n const rect = this.dialogRef.current.getBoundingClientRect();\n const dialogX = clamp(dialog.x, 0, window.innerWidth - rect.width);\n const dialogY = clamp(dialog.y, 0, window.innerHeight - rect.height);\n this.setState({\n dialog: { x: dialogX, y: dialogY },\n });\n }\n }\n\n handleMouseMove(event: MouseEvent): void {\n const { offset, isDragging } = this.state;\n this.setState({\n mouse: { x: event.clientX, y: event.clientY },\n });\n\n if (isDragging && this.dialogRef.current) {\n const rect = this.dialogRef.current.getBoundingClientRect();\n const dialogX = clamp(\n window.innerWidth - (event.clientX + rect.width + offset.x),\n 0,\n window.innerWidth - rect.width\n );\n\n const dialogY = clamp(\n window.innerHeight - (event.clientY + rect.height + offset.y),\n 0,\n window.innerHeight - rect.height\n );\n\n this.setState({\n dialog: { x: dialogX, y: dialogY },\n });\n }\n }\n\n handleMouseDown(event: React.MouseEvent): void {\n event.preventDefault();\n const offset: Point = { x: 0, y: 0 };\n if (this.dialogRef.current) {\n const rect = this.dialogRef.current.getBoundingClientRect();\n offset.x = rect.right - (rect.width + event.clientX);\n offset.y = rect.bottom - (rect.height + event.clientY);\n }\n this.setState({\n isDragging: true,\n offset,\n });\n }\n\n handleMouseUp(): void {\n this.setState({\n isDragging: false,\n });\n }\n\n handleKeyDown(event: KeyboardEvent): void {\n if (event.key === 'Alt') {\n event.preventDefault();\n this.setState({\n mode: 'delete',\n });\n } else if (event.key === 'Delete' || event.key === 'Backspace') {\n const { selectedIds, onLinkDeleted } = this.props;\n event.preventDefault();\n selectedIds.forEach(id => onLinkDeleted(id));\n }\n }\n\n handleKeyUp(event: KeyboardEvent): void {\n if (event.key === 'Alt') {\n event.preventDefault();\n this.setState({\n mode: 'select',\n });\n }\n }\n\n handleEscapePressed(): void {\n const { onCancel } = this.props;\n onCancel();\n }\n\n render(): JSX.Element {\n const {\n disabled,\n links,\n selectedIds,\n messageText,\n onLinkSelected,\n onLinkDeleted,\n onAllLinksDeleted,\n onDone,\n } = this.props;\n\n const { mouse, dialog, isDragging, mode } = this.state;\n const visibleLinks = links\n .map(link => {\n try {\n const { id, type, isReversed, start, end, operator } = link;\n const startColumnType = start.columnType;\n let [x1, y1] = this.getPointFromLinkPoint(start);\n let x2 = mouse?.x ?? x1;\n let y2 = mouse?.y ?? y1;\n if (end != null) {\n [x2, y2] = this.getPointFromLinkPoint(end);\n }\n if (isReversed != null && isReversed) {\n const [tmpX, tmpY] = [x1, y1];\n [x1, y1] = [x2, y2];\n [x2, y2] = [tmpX, tmpY];\n }\n const className = classNames(\n 'linker-link',\n { disabled },\n { 'link-filter-source': type === 'filterSource' },\n { 'link-invalid': type === 'invalid' },\n { interactive: link.end == null },\n { 'link-is-selected': selectedIds.has(id) },\n { 'danger-delete': mode === 'delete' }\n );\n return {\n x1,\n y1,\n x2,\n y2,\n id,\n className,\n operator,\n startColumnType,\n type,\n };\n } catch (error) {\n log.warn('Unable to get point for link', link, error);\n return null;\n }\n })\n .filter(item => item != null) as VisibleLink[];\n\n return (\n <div\n className={classNames('linker-overlay', {\n 'danger-delete': mode === 'delete',\n })}\n >\n {visibleLinks.map(\n ({\n x1,\n y1,\n x2,\n y2,\n id,\n className,\n operator,\n startColumnType,\n type,\n }) => (\n <LinkerLink\n className={className}\n id={id}\n x1={x1}\n y1={y1}\n x2={x2}\n y2={y2}\n key={id}\n onClick={onLinkSelected}\n onDelete={onLinkDeleted}\n isSelected={selectedIds.has(id)}\n operator={operator}\n startColumnType={startColumnType}\n type={type}\n onOperatorChanged={this.handleOperatorChanged}\n />\n )\n )}\n <div\n className={classNames('linker-toast-dialog', {\n dragging: isDragging,\n })}\n ref={this.dialogRef}\n style={{ bottom: dialog?.y, right: dialog?.x }}\n data-testid=\"linker-toast-dialog\"\n >\n <Button\n draggable\n kind=\"inline\"\n className=\"btn-drag-handle\"\n icon={vsGripper}\n onClick={() => {\n // no-op\n }}\n onMouseDown={this.handleMouseDown}\n >\n {!isDragging && <Tooltip>Drag to reposition</Tooltip>}\n </Button>\n <div className=\"toast-body\">{messageText}</div>\n <div className=\"toast-footer\">\n <Button kind=\"secondary\" onClick={onAllLinksDeleted}>\n Clear All\n </Button>\n <Button kind=\"primary\" onClick={onDone}>\n Done\n </Button>\n </div>\n </div>\n <ContextActions\n actions={[\n {\n action: this.handleEscapePressed,\n shortcut: GLOBAL_SHORTCUTS.LINKER_CLOSE,\n isGlobal: true,\n },\n ]}\n />\n </div>\n );\n }\n}\n\nexport default LinkerOverlayContent;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"LinkerOverlayContent.js","names":["React","Component","classNames","Button","ContextActions","GLOBAL_SHORTCUTS","Tooltip","LayoutUtils","Log","vsGripper","Type","FilterType","clamp","isLinkableFromPanel","LinkerLink","jsx","_jsx","jsxs","_jsxs","log","module","LinkerOverlayContent","constructor","props","_defineProperty","handleBlur","bind","handleResize","handleMouseMove","handleMouseDown","handleMouseUp","handleKeyDown","handleKeyUp","handleEscapePressed","handleOperatorChanged","dialogRef","createRef","state","mouse","undefined","dialog","offset","x","y","isDragging","mode","componentDidMount","window","addEventListener","componentDidCatch","error","info","componentWillUnmount","removeEventListener","getPointFromLinkPoint","linkPoint","panelManager","linkTargetPropMap","panelId","linkPointId","columnName","linkTargetHandlers","get","coordinates","getCoordinates","panel","getOpenedPanelById","Error","concat","coordinate","getCoordinateForColumn","e","glContainer","getContainerByPanelId","getTabPoint","linkId","type","links","onLinksUpdated","newLinks","map","link","id","_objectSpread","operator","setState","current","rect","getBoundingClientRect","dialogX","innerWidth","width","dialogY","innerHeight","height","event","clientX","clientY","preventDefault","right","bottom","key","selectedIds","onLinkDeleted","forEach","onCancel","render","disabled","messageText","onLinkSelected","onAllLinksDeleted","onDone","visibleLinks","_mouse$x","_mouse$y","isReversed","start","end","startColumnType","columnType","x1","y1","x2","y2","tmpX","tmpY","className","interactive","has","warn","filter","item","children","_ref","onClick","onDelete","isSelected","eq","onOperatorChanged","dragging","ref","style","draggable","kind","icon","onMouseDown","actions","action","shortcut","LINKER_CLOSE","isGlobal"],"sources":["../../src/linker/LinkerOverlayContent.tsx"],"sourcesContent":["import React, { Component, ErrorInfo } from 'react';\nimport classNames from 'classnames';\nimport {\n Button,\n ContextActions,\n GLOBAL_SHORTCUTS,\n Tooltip,\n} from '@deephaven/components';\nimport { LayoutUtils, PanelManager } from '@deephaven/dashboard';\nimport Log from '@deephaven/log';\nimport type { Container } from '@deephaven/golden-layout';\nimport { vsGripper } from '@deephaven/icons';\nimport {\n type TypeValue as FilterTypeValue,\n Type as FilterType,\n} from '@deephaven/filters';\nimport clamp from 'lodash.clamp';\nimport {\n isLinkableFromPanel,\n Link,\n LinkerCoordinate,\n LinkPoint,\n LinkType,\n} from './LinkerUtils';\nimport LinkerLink from './LinkerLink';\nimport './LinkerOverlayContent.scss';\nimport { type LinkTargetProps } from './LinkerEvent';\n\nconst log = Log.module('LinkerOverlayContent');\n\nexport type VisibleLink = {\n x1: number;\n y1: number;\n x2: number;\n y2: number;\n id: string;\n className: string;\n type: LinkType;\n operator: FilterTypeValue;\n startColumnType: string | null;\n};\n\nexport type LinkerOverlayContentProps = {\n disabled?: boolean;\n links: Link[];\n selectedIds: Set<string>;\n messageText: string;\n onLinkSelected: (linkId: string) => void;\n onLinkDeleted: (linkId: string) => void;\n onAllLinksDeleted: () => void;\n onLinksUpdated: (newLinks: Link[]) => void;\n onCancel: () => void;\n onDone: () => void;\n panelManager: PanelManager;\n linkTargetPropMap: Map<string, LinkTargetProps>;\n};\n\ntype Point = { x: number; y: number };\n\nexport type LinkerOverlayContentState = {\n mouse?: Point;\n dialog?: Point;\n offset: Point;\n isDragging: boolean;\n mode: 'select' | 'delete';\n};\n\nexport class LinkerOverlayContent extends Component<\n LinkerOverlayContentProps,\n LinkerOverlayContentState\n> {\n static defaultProps = {\n disabled: 'false',\n };\n\n constructor(props: LinkerOverlayContentProps) {\n super(props);\n\n this.handleBlur = this.handleBlur.bind(this);\n this.handleResize = this.handleResize.bind(this);\n this.handleMouseMove = this.handleMouseMove.bind(this);\n this.handleMouseDown = this.handleMouseDown.bind(this);\n this.handleMouseUp = this.handleMouseUp.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.handleKeyUp = this.handleKeyUp.bind(this);\n this.handleEscapePressed = this.handleEscapePressed.bind(this);\n this.handleOperatorChanged = this.handleOperatorChanged.bind(this);\n\n this.dialogRef = React.createRef();\n\n this.state = {\n mouse: undefined,\n dialog: undefined,\n offset: { x: 0, y: 0 },\n isDragging: false,\n mode: 'select',\n };\n }\n\n componentDidMount(): void {\n window.addEventListener('blur', this.handleBlur, true);\n window.addEventListener('mousemove', this.handleMouseMove, true);\n window.addEventListener('mouseup', this.handleMouseUp, true);\n window.addEventListener('keydown', this.handleKeyDown, true);\n window.addEventListener('keyup', this.handleKeyUp, true);\n window.addEventListener('resize', this.handleResize, true);\n }\n\n // eslint-disable-next-line react/sort-comp\n componentDidCatch(error: Error, info: ErrorInfo): void {\n log.error('componentDidCatch', error, info);\n }\n\n componentWillUnmount(): void {\n window.removeEventListener('blur', this.handleBlur, true);\n window.removeEventListener('mousemove', this.handleMouseMove, true);\n window.removeEventListener('mouseup', this.handleMouseUp, true);\n window.removeEventListener('keydown', this.handleKeyDown, true);\n window.removeEventListener('keyup', this.handleKeyUp, true);\n window.removeEventListener('resize', this.handleResize, true);\n }\n\n dialogRef: React.RefObject<HTMLInputElement>;\n\n /** Gets the on screen points for a link start or end spec */\n getPointFromLinkPoint(linkPoint: LinkPoint): LinkerCoordinate {\n const { panelManager, linkTargetPropMap } = this.props;\n const { panelId: linkPointId, columnName } = linkPoint;\n\n let panelId = linkPointId;\n const linkTargetHandlers = linkTargetPropMap.get(linkPointId);\n\n if (linkTargetHandlers != null) {\n panelId = linkTargetHandlers.panelId;\n const coordinates = linkTargetHandlers.getCoordinates(columnName);\n if (coordinates != null) {\n return coordinates;\n }\n }\n\n const panel = panelManager.getOpenedPanelById(panelId);\n if (linkTargetHandlers == null && panel != null) {\n if (!isLinkableFromPanel(panel)) {\n throw new Error(\n `Panel does not have getCoordinateForColumn method: ${panelId}`\n );\n }\n try {\n // TODO: remove try/catch when IDS-7371 is fixed.\n // getCoordinateForColumn throws an exception when accessing\n // columns on a model while it reconnects\n const coordinate = panel.getCoordinateForColumn(columnName);\n if (coordinate != null) {\n return coordinate;\n }\n } catch (e) {\n log.error('Could not get coordinate for column', columnName, panel);\n }\n }\n // Fallback to panel container if the panel itself\n // crashed, unmounted, and removed from openedPanelMap.\n const glContainer = panelManager.getContainerByPanelId(panelId);\n if (glContainer == null) {\n throw new Error(`Unable to find panel container for id: ${panelId}`);\n }\n return LayoutUtils.getTabPoint(glContainer as unknown as Container);\n }\n\n handleOperatorChanged(linkId: string, type: FilterTypeValue): void {\n const { links, onLinksUpdated } = this.props;\n const newLinks: Link[] = links.map(link =>\n link.id === linkId ? { ...link, operator: type } : link\n );\n onLinksUpdated(newLinks);\n }\n\n handleBlur(): void {\n this.setState({ mode: 'select' });\n }\n\n handleResize(): void {\n const { dialog } = this.state;\n if (dialog && this.dialogRef.current) {\n const rect = this.dialogRef.current.getBoundingClientRect();\n const dialogX = clamp(dialog.x, 0, window.innerWidth - rect.width);\n const dialogY = clamp(dialog.y, 0, window.innerHeight - rect.height);\n this.setState({\n dialog: { x: dialogX, y: dialogY },\n });\n }\n }\n\n handleMouseMove(event: MouseEvent): void {\n const { offset, isDragging } = this.state;\n this.setState({\n mouse: { x: event.clientX, y: event.clientY },\n });\n\n if (isDragging && this.dialogRef.current) {\n const rect = this.dialogRef.current.getBoundingClientRect();\n const dialogX = clamp(\n window.innerWidth - (event.clientX + rect.width + offset.x),\n 0,\n window.innerWidth - rect.width\n );\n\n const dialogY = clamp(\n window.innerHeight - (event.clientY + rect.height + offset.y),\n 0,\n window.innerHeight - rect.height\n );\n\n this.setState({\n dialog: { x: dialogX, y: dialogY },\n });\n }\n }\n\n handleMouseDown(event: React.MouseEvent): void {\n event.preventDefault();\n const offset: Point = { x: 0, y: 0 };\n if (this.dialogRef.current) {\n const rect = this.dialogRef.current.getBoundingClientRect();\n offset.x = rect.right - (rect.width + event.clientX);\n offset.y = rect.bottom - (rect.height + event.clientY);\n }\n this.setState({\n isDragging: true,\n offset,\n });\n }\n\n handleMouseUp(): void {\n this.setState({\n isDragging: false,\n });\n }\n\n handleKeyDown(event: KeyboardEvent): void {\n if (event.key === 'Alt') {\n event.preventDefault();\n this.setState({\n mode: 'delete',\n });\n } else if (event.key === 'Delete' || event.key === 'Backspace') {\n const { selectedIds, onLinkDeleted } = this.props;\n event.preventDefault();\n selectedIds.forEach(id => onLinkDeleted(id));\n }\n }\n\n handleKeyUp(event: KeyboardEvent): void {\n if (event.key === 'Alt') {\n event.preventDefault();\n this.setState({\n mode: 'select',\n });\n }\n }\n\n handleEscapePressed(): void {\n const { onCancel } = this.props;\n onCancel();\n }\n\n render(): JSX.Element {\n const {\n disabled,\n links,\n selectedIds,\n messageText,\n onLinkSelected,\n onLinkDeleted,\n onAllLinksDeleted,\n onDone,\n } = this.props;\n\n const { mouse, dialog, isDragging, mode } = this.state;\n const visibleLinks = links\n .map(link => {\n try {\n const { id, type, isReversed, start, end, operator } = link;\n const startColumnType = start.columnType;\n let [x1, y1] = this.getPointFromLinkPoint(start);\n let x2 = mouse?.x ?? x1;\n let y2 = mouse?.y ?? y1;\n if (end != null) {\n [x2, y2] = this.getPointFromLinkPoint(end);\n }\n if (isReversed != null && isReversed) {\n const [tmpX, tmpY] = [x1, y1];\n [x1, y1] = [x2, y2];\n [x2, y2] = [tmpX, tmpY];\n }\n const className = classNames(\n 'linker-link',\n { disabled },\n { 'link-filter-source': type === 'filterSource' },\n { 'link-invalid': type === 'invalid' },\n { interactive: link.end == null },\n { 'link-is-selected': selectedIds.has(id) },\n { 'danger-delete': mode === 'delete' }\n );\n return {\n x1,\n y1,\n x2,\n y2,\n id,\n className,\n operator,\n startColumnType,\n type,\n } as const;\n } catch (error) {\n log.warn('Unable to get point for link', link, error);\n return null;\n }\n })\n .filter(item => item != null) as VisibleLink[];\n\n return (\n <div\n className={classNames('linker-overlay', {\n 'danger-delete': mode === 'delete',\n })}\n >\n {visibleLinks.map(\n ({\n x1,\n y1,\n x2,\n y2,\n id,\n className,\n operator,\n startColumnType,\n type,\n }) => (\n <LinkerLink\n className={className}\n id={id}\n x1={x1}\n y1={y1}\n x2={x2}\n y2={y2}\n key={id}\n onClick={onLinkSelected}\n onDelete={onLinkDeleted}\n isSelected={selectedIds.has(id)}\n operator={operator ?? FilterType.eq}\n startColumnType={startColumnType}\n type={type}\n onOperatorChanged={this.handleOperatorChanged}\n />\n )\n )}\n <div\n className={classNames('linker-toast-dialog', {\n dragging: isDragging,\n })}\n ref={this.dialogRef}\n style={{ bottom: dialog?.y, right: dialog?.x }}\n data-testid=\"linker-toast-dialog\"\n >\n <Button\n draggable\n kind=\"inline\"\n className=\"btn-drag-handle\"\n icon={vsGripper}\n onClick={() => {\n // no-op\n }}\n onMouseDown={this.handleMouseDown}\n >\n {!isDragging && <Tooltip>Drag to reposition</Tooltip>}\n </Button>\n <div className=\"toast-body\">{messageText}</div>\n <div className=\"toast-footer\">\n <Button kind=\"secondary\" onClick={onAllLinksDeleted}>\n Clear All\n </Button>\n <Button kind=\"primary\" onClick={onDone}>\n Done\n </Button>\n </div>\n </div>\n <ContextActions\n actions={[\n {\n action: this.handleEscapePressed,\n shortcut: GLOBAL_SHORTCUTS.LINKER_CLOSE,\n isGlobal: true,\n },\n ]}\n />\n </div>\n );\n }\n}\n\nexport default LinkerOverlayContent;\n"],"mappings":";;;;;AAAA,OAAOA,KAAK,IAAIC,SAAS,QAAmB,OAAO;AACnD,OAAOC,UAAU,MAAM,YAAY;AACnC,SACEC,MAAM,EACNC,cAAc,EACdC,gBAAgB,EAChBC,OAAO,QACF,uBAAuB;AAC9B,SAASC,WAAW,QAAsB,sBAAsB;AAChE,OAAOC,GAAG,MAAM,gBAAgB;AAEhC,SAASC,SAAS,QAAQ,kBAAkB;AAC5C,SAEEC,IAAI,IAAIC,UAAU,QACb,oBAAoB;AAC3B,OAAOC,KAAK,MAAM,cAAc;AAAC,SAE/BC,mBAAmB;AAAA,OAMdC,UAAU;AAAA;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAIjB,IAAMC,GAAG,GAAGX,GAAG,CAACY,MAAM,CAAC,sBAAsB,CAAC;AAuC9C,OAAO,MAAMC,oBAAoB,SAASpB,SAAS,CAGjD;EAKAqB,WAAWA,CAACC,KAAgC,EAAE;IAC5C,KAAK,CAACA,KAAK,CAAC;IAACC,eAAA;IAEb,IAAI,CAACC,UAAU,GAAG,IAAI,CAACA,UAAU,CAACC,IAAI,CAAC,IAAI,CAAC;IAC5C,IAAI,CAACC,YAAY,GAAG,IAAI,CAACA,YAAY,CAACD,IAAI,CAAC,IAAI,CAAC;IAChD,IAAI,CAACE,eAAe,GAAG,IAAI,CAACA,eAAe,CAACF,IAAI,CAAC,IAAI,CAAC;IACtD,IAAI,CAACG,eAAe,GAAG,IAAI,CAACA,eAAe,CAACH,IAAI,CAAC,IAAI,CAAC;IACtD,IAAI,CAACI,aAAa,GAAG,IAAI,CAACA,aAAa,CAACJ,IAAI,CAAC,IAAI,CAAC;IAClD,IAAI,CAACK,aAAa,GAAG,IAAI,CAACA,aAAa,CAACL,IAAI,CAAC,IAAI,CAAC;IAClD,IAAI,CAACM,WAAW,GAAG,IAAI,CAACA,WAAW,CAACN,IAAI,CAAC,IAAI,CAAC;IAC9C,IAAI,CAACO,mBAAmB,GAAG,IAAI,CAACA,mBAAmB,CAACP,IAAI,CAAC,IAAI,CAAC;IAC9D,IAAI,CAACQ,qBAAqB,GAAG,IAAI,CAACA,qBAAqB,CAACR,IAAI,CAAC,IAAI,CAAC;IAElE,IAAI,CAACS,SAAS,gBAAGnC,KAAK,CAACoC,SAAS,CAAC,CAAC;IAElC,IAAI,CAACC,KAAK,GAAG;MACXC,KAAK,EAAEC,SAAS;MAChBC,MAAM,EAAED,SAAS;MACjBE,MAAM,EAAE;QAAEC,CAAC,EAAE,CAAC;QAAEC,CAAC,EAAE;MAAE,CAAC;MACtBC,UAAU,EAAE,KAAK;MACjBC,IAAI,EAAE;IACR,CAAC;EACH;EAEAC,iBAAiBA,CAAA,EAAS;IACxBC,MAAM,CAACC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAACvB,UAAU,EAAE,IAAI,CAAC;IACtDsB,MAAM,CAACC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAACpB,eAAe,EAAE,IAAI,CAAC;IAChEmB,MAAM,CAACC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAClB,aAAa,EAAE,IAAI,CAAC;IAC5DiB,MAAM,CAACC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAACjB,aAAa,EAAE,IAAI,CAAC;IAC5DgB,MAAM,CAACC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAChB,WAAW,EAAE,IAAI,CAAC;IACxDe,MAAM,CAACC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAACrB,YAAY,EAAE,IAAI,CAAC;EAC5D;;EAEA;EACAsB,iBAAiBA,CAACC,KAAY,EAAEC,IAAe,EAAQ;IACrDhC,GAAG,CAAC+B,KAAK,CAAC,mBAAmB,EAAEA,KAAK,EAAEC,IAAI,CAAC;EAC7C;EAEAC,oBAAoBA,CAAA,EAAS;IAC3BL,MAAM,CAACM,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC5B,UAAU,EAAE,IAAI,CAAC;IACzDsB,MAAM,CAACM,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAACzB,eAAe,EAAE,IAAI,CAAC;IACnEmB,MAAM,CAACM,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAACvB,aAAa,EAAE,IAAI,CAAC;IAC/DiB,MAAM,CAACM,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAACtB,aAAa,EAAE,IAAI,CAAC;IAC/DgB,MAAM,CAACM,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAACrB,WAAW,EAAE,IAAI,CAAC;IAC3De,MAAM,CAACM,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC1B,YAAY,EAAE,IAAI,CAAC;EAC/D;EAIA;EACA2B,qBAAqBA,CAACC,SAAoB,EAAoB;IAC5D,IAAM;MAAEC,YAAY;MAAEC;IAAkB,CAAC,GAAG,IAAI,CAAClC,KAAK;IACtD,IAAM;MAAEmC,OAAO,EAAEC,WAAW;MAAEC;IAAW,CAAC,GAAGL,SAAS;IAEtD,IAAIG,OAAO,GAAGC,WAAW;IACzB,IAAME,kBAAkB,GAAGJ,iBAAiB,CAACK,GAAG,CAACH,WAAW,CAAC;IAE7D,IAAIE,kBAAkB,IAAI,IAAI,EAAE;MAC9BH,OAAO,GAAGG,kBAAkB,CAACH,OAAO;MACpC,IAAMK,WAAW,GAAGF,kBAAkB,CAACG,cAAc,CAACJ,UAAU,CAAC;MACjE,IAAIG,WAAW,IAAI,IAAI,EAAE;QACvB,OAAOA,WAAW;MACpB;IACF;IAEA,IAAME,KAAK,GAAGT,YAAY,CAACU,kBAAkB,CAACR,OAAO,CAAC;IACtD,IAAIG,kBAAkB,IAAI,IAAI,IAAII,KAAK,IAAI,IAAI,EAAE;MAC/C,IAAI,CAACpD,mBAAmB,CAACoD,KAAK,CAAC,EAAE;QAC/B,MAAM,IAAIE,KAAK,uDAAAC,MAAA,CACyCV,OAAO,CAC/D,CAAC;MACH;MACA,IAAI;QACF;QACA;QACA;QACA,IAAMW,UAAU,GAAGJ,KAAK,CAACK,sBAAsB,CAACV,UAAU,CAAC;QAC3D,IAAIS,UAAU,IAAI,IAAI,EAAE;UACtB,OAAOA,UAAU;QACnB;MACF,CAAC,CAAC,OAAOE,CAAC,EAAE;QACVpD,GAAG,CAAC+B,KAAK,CAAC,qCAAqC,EAAEU,UAAU,EAAEK,KAAK,CAAC;MACrE;IACF;IACA;IACA;IACA,IAAMO,WAAW,GAAGhB,YAAY,CAACiB,qBAAqB,CAACf,OAAO,CAAC;IAC/D,IAAIc,WAAW,IAAI,IAAI,EAAE;MACvB,MAAM,IAAIL,KAAK,2CAAAC,MAAA,CAA2CV,OAAO,CAAE,CAAC;IACtE;IACA,OAAOnD,WAAW,CAACmE,WAAW,CAACF,WAAmC,CAAC;EACrE;EAEAtC,qBAAqBA,CAACyC,MAAc,EAAEC,IAAqB,EAAQ;IACjE,IAAM;MAAEC,KAAK;MAAEC;IAAe,CAAC,GAAG,IAAI,CAACvD,KAAK;IAC5C,IAAMwD,QAAgB,GAAGF,KAAK,CAACG,GAAG,CAACC,IAAI,IACrCA,IAAI,CAACC,EAAE,KAAKP,MAAM,GAAAQ,aAAA,CAAAA,aAAA,KAAQF,IAAI;MAAEG,QAAQ,EAAER;IAAI,KAAKK,IACrD,CAAC;IACDH,cAAc,CAACC,QAAQ,CAAC;EAC1B;EAEAtD,UAAUA,CAAA,EAAS;IACjB,IAAI,CAAC4D,QAAQ,CAAC;MAAExC,IAAI,EAAE;IAAS,CAAC,CAAC;EACnC;EAEAlB,YAAYA,CAAA,EAAS;IACnB,IAAM;MAAEa;IAAO,CAAC,GAAG,IAAI,CAACH,KAAK;IAC7B,IAAIG,MAAM,IAAI,IAAI,CAACL,SAAS,CAACmD,OAAO,EAAE;MACpC,IAAMC,IAAI,GAAG,IAAI,CAACpD,SAAS,CAACmD,OAAO,CAACE,qBAAqB,CAAC,CAAC;MAC3D,IAAMC,OAAO,GAAG7E,KAAK,CAAC4B,MAAM,CAACE,CAAC,EAAE,CAAC,EAAEK,MAAM,CAAC2C,UAAU,GAAGH,IAAI,CAACI,KAAK,CAAC;MAClE,IAAMC,OAAO,GAAGhF,KAAK,CAAC4B,MAAM,CAACG,CAAC,EAAE,CAAC,EAAEI,MAAM,CAAC8C,WAAW,GAAGN,IAAI,CAACO,MAAM,CAAC;MACpE,IAAI,CAACT,QAAQ,CAAC;QACZ7C,MAAM,EAAE;UAAEE,CAAC,EAAE+C,OAAO;UAAE9C,CAAC,EAAEiD;QAAQ;MACnC,CAAC,CAAC;IACJ;EACF;EAEAhE,eAAeA,CAACmE,KAAiB,EAAQ;IACvC,IAAM;MAAEtD,MAAM;MAAEG;IAAW,CAAC,GAAG,IAAI,CAACP,KAAK;IACzC,IAAI,CAACgD,QAAQ,CAAC;MACZ/C,KAAK,EAAE;QAAEI,CAAC,EAAEqD,KAAK,CAACC,OAAO;QAAErD,CAAC,EAAEoD,KAAK,CAACE;MAAQ;IAC9C,CAAC,CAAC;IAEF,IAAIrD,UAAU,IAAI,IAAI,CAACT,SAAS,CAACmD,OAAO,EAAE;MACxC,IAAMC,IAAI,GAAG,IAAI,CAACpD,SAAS,CAACmD,OAAO,CAACE,qBAAqB,CAAC,CAAC;MAC3D,IAAMC,OAAO,GAAG7E,KAAK,CACnBmC,MAAM,CAAC2C,UAAU,IAAIK,KAAK,CAACC,OAAO,GAAGT,IAAI,CAACI,KAAK,GAAGlD,MAAM,CAACC,CAAC,CAAC,EAC3D,CAAC,EACDK,MAAM,CAAC2C,UAAU,GAAGH,IAAI,CAACI,KAC3B,CAAC;MAED,IAAMC,OAAO,GAAGhF,KAAK,CACnBmC,MAAM,CAAC8C,WAAW,IAAIE,KAAK,CAACE,OAAO,GAAGV,IAAI,CAACO,MAAM,GAAGrD,MAAM,CAACE,CAAC,CAAC,EAC7D,CAAC,EACDI,MAAM,CAAC8C,WAAW,GAAGN,IAAI,CAACO,MAC5B,CAAC;MAED,IAAI,CAACT,QAAQ,CAAC;QACZ7C,MAAM,EAAE;UAAEE,CAAC,EAAE+C,OAAO;UAAE9C,CAAC,EAAEiD;QAAQ;MACnC,CAAC,CAAC;IACJ;EACF;EAEA/D,eAAeA,CAACkE,KAAuB,EAAQ;IAC7CA,KAAK,CAACG,cAAc,CAAC,CAAC;IACtB,IAAMzD,MAAa,GAAG;MAAEC,CAAC,EAAE,CAAC;MAAEC,CAAC,EAAE;IAAE,CAAC;IACpC,IAAI,IAAI,CAACR,SAAS,CAACmD,OAAO,EAAE;MAC1B,IAAMC,IAAI,GAAG,IAAI,CAACpD,SAAS,CAACmD,OAAO,CAACE,qBAAqB,CAAC,CAAC;MAC3D/C,MAAM,CAACC,CAAC,GAAG6C,IAAI,CAACY,KAAK,IAAIZ,IAAI,CAACI,KAAK,GAAGI,KAAK,CAACC,OAAO,CAAC;MACpDvD,MAAM,CAACE,CAAC,GAAG4C,IAAI,CAACa,MAAM,IAAIb,IAAI,CAACO,MAAM,GAAGC,KAAK,CAACE,OAAO,CAAC;IACxD;IACA,IAAI,CAACZ,QAAQ,CAAC;MACZzC,UAAU,EAAE,IAAI;MAChBH;IACF,CAAC,CAAC;EACJ;EAEAX,aAAaA,CAAA,EAAS;IACpB,IAAI,CAACuD,QAAQ,CAAC;MACZzC,UAAU,EAAE;IACd,CAAC,CAAC;EACJ;EAEAb,aAAaA,CAACgE,KAAoB,EAAQ;IACxC,IAAIA,KAAK,CAACM,GAAG,KAAK,KAAK,EAAE;MACvBN,KAAK,CAACG,cAAc,CAAC,CAAC;MACtB,IAAI,CAACb,QAAQ,CAAC;QACZxC,IAAI,EAAE;MACR,CAAC,CAAC;IACJ,CAAC,MAAM,IAAIkD,KAAK,CAACM,GAAG,KAAK,QAAQ,IAAIN,KAAK,CAACM,GAAG,KAAK,WAAW,EAAE;MAC9D,IAAM;QAAEC,WAAW;QAAEC;MAAc,CAAC,GAAG,IAAI,CAAChF,KAAK;MACjDwE,KAAK,CAACG,cAAc,CAAC,CAAC;MACtBI,WAAW,CAACE,OAAO,CAACtB,EAAE,IAAIqB,aAAa,CAACrB,EAAE,CAAC,CAAC;IAC9C;EACF;EAEAlD,WAAWA,CAAC+D,KAAoB,EAAQ;IACtC,IAAIA,KAAK,CAACM,GAAG,KAAK,KAAK,EAAE;MACvBN,KAAK,CAACG,cAAc,CAAC,CAAC;MACtB,IAAI,CAACb,QAAQ,CAAC;QACZxC,IAAI,EAAE;MACR,CAAC,CAAC;IACJ;EACF;EAEAZ,mBAAmBA,CAAA,EAAS;IAC1B,IAAM;MAAEwE;IAAS,CAAC,GAAG,IAAI,CAAClF,KAAK;IAC/BkF,QAAQ,CAAC,CAAC;EACZ;EAEAC,MAAMA,CAAA,EAAgB;IACpB,IAAM;MACJC,QAAQ;MACR9B,KAAK;MACLyB,WAAW;MACXM,WAAW;MACXC,cAAc;MACdN,aAAa;MACbO,iBAAiB;MACjBC;IACF,CAAC,GAAG,IAAI,CAACxF,KAAK;IAEd,IAAM;MAAEe,KAAK;MAAEE,MAAM;MAAEI,UAAU;MAAEC;IAAK,CAAC,GAAG,IAAI,CAACR,KAAK;IACtD,IAAM2E,YAAY,GAAGnC,KAAK,CACvBG,GAAG,CAACC,IAAI,IAAI;MACX,IAAI;QAAA,IAAAgC,QAAA,EAAAC,QAAA;QACF,IAAM;UAAEhC,EAAE;UAAEN,IAAI;UAAEuC,UAAU;UAAEC,KAAK;UAAEC,GAAG;UAAEjC;QAAS,CAAC,GAAGH,IAAI;QAC3D,IAAMqC,eAAe,GAAGF,KAAK,CAACG,UAAU;QACxC,IAAI,CAACC,EAAE,EAAEC,EAAE,CAAC,GAAG,IAAI,CAACnE,qBAAqB,CAAC8D,KAAK,CAAC;QAChD,IAAIM,EAAE,IAAAT,QAAA,GAAG3E,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEI,CAAC,cAAAuE,QAAA,cAAAA,QAAA,GAAIO,EAAE;QACvB,IAAIG,EAAE,IAAAT,QAAA,GAAG5E,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEK,CAAC,cAAAuE,QAAA,cAAAA,QAAA,GAAIO,EAAE;QACvB,IAAIJ,GAAG,IAAI,IAAI,EAAE;UACf,CAACK,EAAE,EAAEC,EAAE,CAAC,GAAG,IAAI,CAACrE,qBAAqB,CAAC+D,GAAG,CAAC;QAC5C;QACA,IAAIF,UAAU,IAAI,IAAI,IAAIA,UAAU,EAAE;UACpC,IAAM,CAACS,IAAI,EAAEC,IAAI,CAAC,GAAG,CAACL,EAAE,EAAEC,EAAE,CAAC;UAC7B,CAACD,EAAE,EAAEC,EAAE,CAAC,GAAG,CAACC,EAAE,EAAEC,EAAE,CAAC;UACnB,CAACD,EAAE,EAAEC,EAAE,CAAC,GAAG,CAACC,IAAI,EAAEC,IAAI,CAAC;QACzB;QACA,IAAMC,SAAS,GAAG5H,UAAU,CAC1B,aAAa,EACb;UAAEyG;QAAS,CAAC,EACZ;UAAE,oBAAoB,EAAE/B,IAAI,KAAK;QAAe,CAAC,EACjD;UAAE,cAAc,EAAEA,IAAI,KAAK;QAAU,CAAC,EACtC;UAAEmD,WAAW,EAAE9C,IAAI,CAACoC,GAAG,IAAI;QAAK,CAAC,EACjC;UAAE,kBAAkB,EAAEf,WAAW,CAAC0B,GAAG,CAAC9C,EAAE;QAAE,CAAC,EAC3C;UAAE,eAAe,EAAErC,IAAI,KAAK;QAAS,CACvC,CAAC;QACD,OAAO;UACL2E,EAAE;UACFC,EAAE;UACFC,EAAE;UACFC,EAAE;UACFzC,EAAE;UACF4C,SAAS;UACT1C,QAAQ;UACRkC,eAAe;UACf1C;QACF,CAAC;MACH,CAAC,CAAC,OAAO1B,KAAK,EAAE;QACd/B,GAAG,CAAC8G,IAAI,CAAC,8BAA8B,EAAEhD,IAAI,EAAE/B,KAAK,CAAC;QACrD,OAAO,IAAI;MACb;IACF,CAAC,CAAC,CACDgF,MAAM,CAACC,IAAI,IAAIA,IAAI,IAAI,IAAI,CAAkB;IAEhD,oBACEjH,KAAA;MACE4G,SAAS,EAAE5H,UAAU,CAAC,gBAAgB,EAAE;QACtC,eAAe,EAAE2C,IAAI,KAAK;MAC5B,CAAC,CAAE;MAAAuF,QAAA,GAEFpB,YAAY,CAAChC,GAAG,CACfqD,IAAA;QAAA,IAAC;UACCb,EAAE;UACFC,EAAE;UACFC,EAAE;UACFC,EAAE;UACFzC,EAAE;UACF4C,SAAS;UACT1C,QAAQ;UACRkC,eAAe;UACf1C;QACF,CAAC,GAAAyD,IAAA;QAAA,oBACCrH,IAAA,CAACF,UAAU;UACTgH,SAAS,EAAEA,SAAU;UACrB5C,EAAE,EAAEA,EAAG;UACPsC,EAAE,EAAEA,EAAG;UACPC,EAAE,EAAEA,EAAG;UACPC,EAAE,EAAEA,EAAG;UACPC,EAAE,EAAEA,EAAG;UAEPW,OAAO,EAAEzB,cAAe;UACxB0B,QAAQ,EAAEhC,aAAc;UACxBiC,UAAU,EAAElC,WAAW,CAAC0B,GAAG,CAAC9C,EAAE,CAAE;UAChCE,QAAQ,EAAEA,QAAQ,aAARA,QAAQ,cAARA,QAAQ,GAAIzE,UAAU,CAAC8H,EAAG;UACpCnB,eAAe,EAAEA,eAAgB;UACjC1C,IAAI,EAAEA,IAAK;UACX8D,iBAAiB,EAAE,IAAI,CAACxG;QAAsB,GAPzCgD,EAQN,CAAC;MAAA,CAEN,CAAC,eACDhE,KAAA;QACE4G,SAAS,EAAE5H,UAAU,CAAC,qBAAqB,EAAE;UAC3CyI,QAAQ,EAAE/F;QACZ,CAAC,CAAE;QACHgG,GAAG,EAAE,IAAI,CAACzG,SAAU;QACpB0G,KAAK,EAAE;UAAEzC,MAAM,EAAE5D,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEG,CAAC;UAAEwD,KAAK,EAAE3D,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEE;QAAE,CAAE;QAC/C,eAAY,qBAAqB;QAAA0F,QAAA,gBAEjCpH,IAAA,CAACb,MAAM;UACL2I,SAAS;UACTC,IAAI,EAAC,QAAQ;UACbjB,SAAS,EAAC,iBAAiB;UAC3BkB,IAAI,EAAEvI,SAAU;UAChB6H,OAAO,EAAEA,CAAA,KAAM;YACb;UAAA,CACA;UACFW,WAAW,EAAE,IAAI,CAACpH,eAAgB;UAAAuG,QAAA,EAEjC,CAACxF,UAAU,iBAAI5B,IAAA,CAACV,OAAO;YAAA8H,QAAA,EAAC;UAAkB,CAAS;QAAC,CAC/C,CAAC,eACTpH,IAAA;UAAK8G,SAAS,EAAC,YAAY;UAAAM,QAAA,EAAExB;QAAW,CAAM,CAAC,eAC/C1F,KAAA;UAAK4G,SAAS,EAAC,cAAc;UAAAM,QAAA,gBAC3BpH,IAAA,CAACb,MAAM;YAAC4I,IAAI,EAAC,WAAW;YAACT,OAAO,EAAExB,iBAAkB;YAAAsB,QAAA,EAAC;UAErD,CAAQ,CAAC,eACTpH,IAAA,CAACb,MAAM;YAAC4I,IAAI,EAAC,SAAS;YAACT,OAAO,EAAEvB,MAAO;YAAAqB,QAAA,EAAC;UAExC,CAAQ,CAAC;QAAA,CACN,CAAC;MAAA,CACH,CAAC,eACNpH,IAAA,CAACZ,cAAc;QACb8I,OAAO,EAAE,CACP;UACEC,MAAM,EAAE,IAAI,CAAClH,mBAAmB;UAChCmH,QAAQ,EAAE/I,gBAAgB,CAACgJ,YAAY;UACvCC,QAAQ,EAAE;QACZ,CAAC;MACD,CACH,CAAC;IAAA,CACC,CAAC;EAEV;AACF;AAAC9H,eAAA,CA5UYH,oBAAoB,kBAIT;EACpBsF,QAAQ,EAAE;AACZ,CAAC;AAwUH,eAAetF,oBAAoB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LinkerUtils.d.ts","sourceRoot":"","sources":["../../src/linker/LinkerUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,EAAE,SAAS,IAAI,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGlE,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,cAAc,GAAG,WAAW,GAAG,WAAW,CAAC;AAE9E,MAAM,MAAM,SAAS,GAAG;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;;OAGG;IACH,IAAI,EAAE,QAAQ,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,IAAI,GAAG;IACjB,KAAK,EAAE,SAAS,CAAC;IACjB,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,aAAa,CAAC,CAAC,GAAG,OAAO,IAAI;IACvC,QAAQ,EAAE,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"LinkerUtils.d.ts","sourceRoot":"","sources":["../../src/linker/LinkerUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LinkerUtils.js","names":["nanoid","TableUtils","Log","isLinkableFromPanel","panel","p","getCoordinateForColumn","isLinkablePanel","setFilterMap","unsetFilterValue","isLinkableColumn","column","description","startsWith","log","module","LinkerUtils","isLinkValid","start","end","isolatedLinkerPanelId","panelId","debug2","columnType","startColumnType","endColumnType","isCompatibleType","findColumn","columns","_ref","columnName","find","_ref2","name","type","cloneLinksForPanel","links","cloneId","clonedLinks","forEach","link","_link$end","push","_objectSpread","id"],"sources":["../../src/linker/LinkerUtils.ts"],"sourcesContent":["import { nanoid } from 'nanoid';\nimport { type PanelComponent } from '@deephaven/dashboard';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport { TypeValue as FilterTypeValue } from '@deephaven/filters';\nimport Log from '@deephaven/log';\n\nexport type LinkType = 'invalid' | 'filterSource' | 'tableLink' | 'chartLink';\n\nexport type LinkPoint = {\n panelId: string;\n columnName: string;\n columnType: string | null;\n};\n\nexport type LinkPointOptions = {\n /**\n * The type of link this point is associated with.\n * If this point is the end point of a link, this will set the type of the link.\n */\n type: LinkType;\n};\n\nexport type Link = {\n start: LinkPoint;\n end?: LinkPoint;\n id: string;\n isReversed?: boolean;\n type: LinkType;\n operator?: FilterTypeValue;\n};\n\nexport type LinkColumn = {\n name: string;\n type: string | null;\n description?: string | null;\n};\n\nexport type LinkDataValue<T = unknown> = {\n operator
|
|
1
|
+
{"version":3,"file":"LinkerUtils.js","names":["nanoid","TableUtils","Log","isLinkableFromPanel","panel","p","getCoordinateForColumn","isLinkablePanel","setFilterMap","unsetFilterValue","isLinkableColumn","column","description","startsWith","log","module","LinkerUtils","isLinkValid","start","end","isolatedLinkerPanelId","panelId","debug2","columnType","startColumnType","endColumnType","isCompatibleType","findColumn","columns","_ref","columnName","find","_ref2","name","type","cloneLinksForPanel","links","cloneId","clonedLinks","forEach","link","_link$end","push","_objectSpread","id"],"sources":["../../src/linker/LinkerUtils.ts"],"sourcesContent":["import { nanoid } from 'nanoid';\nimport { type PanelComponent } from '@deephaven/dashboard';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport { TypeValue as FilterTypeValue } from '@deephaven/filters';\nimport Log from '@deephaven/log';\n\nexport type LinkType = 'invalid' | 'filterSource' | 'tableLink' | 'chartLink';\n\nexport type LinkPoint = {\n panelId: string;\n columnName: string;\n columnType: string | null;\n};\n\nexport type LinkPointOptions = {\n /**\n * The type of link this point is associated with.\n * If this point is the end point of a link, this will set the type of the link.\n */\n type: LinkType;\n};\n\nexport type Link = {\n start: LinkPoint;\n end?: LinkPoint;\n id: string;\n isReversed?: boolean;\n type: LinkType;\n operator?: FilterTypeValue;\n};\n\nexport type LinkColumn = {\n name: string;\n type: string | null;\n description?: string | null;\n};\n\nexport type LinkDataValue<T = unknown> = {\n operator?: FilterTypeValue; // Default behavior treats no operator as equals\n text: string;\n value: T;\n startColumnIndex: number;\n};\n\nexport type LinkFilterMapValue<T = unknown> = {\n columnType: string | null;\n filterList: LinkDataValue<T>[];\n};\n\nexport type LinkFilterMap<T = unknown> = Map<string, LinkFilterMapValue<T>>;\n\n// [x,y] screen coordinates used by the Linker\nexport type LinkerCoordinate = [number, number];\n\nexport type LinkableFromPanel = PanelComponent & {\n getCoordinateForColumn: (name: string) => LinkerCoordinate;\n};\n\nexport type LinkablePanel = LinkableFromPanel & {\n setFilterMap: (filterMap: LinkFilterMap) => void;\n unsetFilterValue: (name: string, type: string | null) => void;\n};\n\nexport function isLinkableFromPanel(\n panel: PanelComponent\n): panel is LinkableFromPanel {\n const p = panel as LinkableFromPanel;\n return typeof p.getCoordinateForColumn === 'function';\n}\n\nexport function isLinkablePanel(panel: PanelComponent): panel is LinkablePanel {\n const p = panel as LinkablePanel;\n return (\n isLinkableFromPanel(panel) &&\n typeof p.setFilterMap === 'function' &&\n typeof p.unsetFilterValue === 'function'\n );\n}\n\nexport function isLinkableColumn(column: LinkColumn): boolean {\n // TODO: core/#3358 Use preview/original type property instead of checking description\n return (\n column.description == null ||\n !column.description.startsWith('Preview of type: ')\n );\n}\n\nconst log = Log.module('LinkerUtils');\n\n/**\n * Collection of utility functions for use with the Linker\n */\nclass LinkerUtils {\n /**\n * Retrieve the type of link given parameters.\n * @param start The link start\n * @param end The link end\n * @param isolatedLinkerPanelId Whether there's an isolated linker\n * @returns The type of link, or invalid if there's an error\n */\n static isLinkValid(\n start: LinkPoint,\n end: LinkPoint,\n isolatedLinkerPanelId?: string | string[]\n ): boolean {\n // Panel compatibility checks:\n // Link ends should point to different non-null panelIds\n // For isolated linker one of the panels should match isolated panel id\n if (\n start.panelId == null ||\n end.panelId == null ||\n start.panelId === end.panelId ||\n (isolatedLinkerPanelId != null &&\n isolatedLinkerPanelId !== start.panelId &&\n isolatedLinkerPanelId !== end.panelId)\n ) {\n log.debug2('Incompatible panel ids', start, end, isolatedLinkerPanelId);\n return false;\n }\n\n // Check column type compatibility\n const { columnType: startColumnType } = start;\n const { columnType: endColumnType } = end;\n\n // Null columnType in ending link point allows linking to any type\n const isCompatibleType =\n endColumnType === null ||\n TableUtils.isCompatibleType(startColumnType, endColumnType);\n\n if (!isCompatibleType) {\n log.debug2('Incompatible type', startColumnType, endColumnType);\n return false;\n }\n\n return true;\n }\n\n /**\n * Find column matching the link point\n * @param columns Columns to search in\n * @param linkPoint Link point to find column for\n * @param linkPoint.columnName Column name to find\n * @param linkPoint.columnType Column type to find\n * @returns Column matching the link point, undefined if not found\n */\n static findColumn(\n columns: readonly LinkColumn[],\n { columnName, columnType }: LinkPoint\n ): LinkColumn | undefined {\n return columns.find(\n ({ name, type }) => name === columnName && type === columnType\n );\n }\n\n /**\n * Clone links for a given panel id\n * @param links Original links array\n * @param panelId Original panel id\n * @param cloneId Cloned panel id\n * @returns Cloned links array or empty array if no new links added\n */\n static cloneLinksForPanel(\n links: Link[],\n panelId: string | string[],\n cloneId: string\n ): Link[] {\n const clonedLinks: Link[] = [];\n links.forEach(link => {\n if (link.start.panelId === panelId && link.type !== 'filterSource') {\n clonedLinks.push({\n ...link,\n id: nanoid(),\n start: { ...link.start, panelId: cloneId },\n });\n } else if (link.end?.panelId === panelId) {\n clonedLinks.push({\n ...link,\n id: nanoid(),\n end: { ...link.end, panelId: cloneId },\n });\n }\n });\n return clonedLinks;\n }\n}\n\nexport default LinkerUtils;\n"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/// <reference types="lodash" />
|
|
2
2
|
import React, { PureComponent, ReactElement, ReactNode, RefObject } from 'react';
|
|
3
3
|
import { DashboardPanelProps, PanelComponent } from '@deephaven/dashboard';
|
|
4
|
-
import { type IrisGridType, IrisGridModel, ColumnName, PendingDataMap, InputFilter, IrisGridThemeType, ReadonlyAdvancedFilterMap, AggregationSettings, AdvancedSettingsType, UIRollupConfig, UIRow, ReadonlyQuickFilterMap, FilterMap, QuickFilter, AdvancedFilter, SidebarFormattingRule, IrisGridState, ChartBuilderSettings, DehydratedIrisGridState, DehydratedIrisGridPanelState, ColumnHeaderGroup, IrisGridContextMenuData, PartitionConfig, IrisGridRenderer, MouseHandlersProp } from '@deephaven/iris-grid';
|
|
4
|
+
import { type IrisGridType, IrisGridModel, ColumnName, PendingDataMap, InputFilter, IrisGridThemeType, ReadonlyAdvancedFilterMap, AggregationSettings, AdvancedSettingsType, UIRollupConfig, UIRow, ReadonlyQuickFilterMap, FilterMap, QuickFilter, AdvancedFilter, SidebarFormattingRule, IrisGridState, ChartBuilderSettings, DehydratedIrisGridState, DehydratedIrisGridPanelState, ColumnHeaderGroup, IrisGridContextMenuData, PartitionConfig, IrisGridRenderer, MouseHandlersProp, GetMetricCalculatorType } from '@deephaven/iris-grid';
|
|
5
5
|
import { type RowDataMap, type FormattingRule } from '@deephaven/jsapi-utils';
|
|
6
6
|
import { User, WorkspaceSettings } from '@deephaven/redux';
|
|
7
7
|
import { CancelablePromise } from '@deephaven/utils';
|
|
@@ -46,6 +46,7 @@ export interface OwnProps extends DashboardPanelProps {
|
|
|
46
46
|
theme?: Partial<IrisGridThemeType> & Record<string, unknown>;
|
|
47
47
|
mouseHandlers?: MouseHandlersProp;
|
|
48
48
|
renderer?: IrisGridRenderer;
|
|
49
|
+
getMetricCalculator?: GetMetricCalculatorType;
|
|
49
50
|
}
|
|
50
51
|
interface StateProps {
|
|
51
52
|
inputFilters: InputFilter[];
|
|
@@ -180,7 +181,7 @@ export declare class IrisGridPanel extends PureComponent<IrisGridPanelProps, Iri
|
|
|
180
181
|
updateGrid(): void;
|
|
181
182
|
render(): ReactElement;
|
|
182
183
|
}
|
|
183
|
-
declare const ConnectedIrisGridPanel: import("react-redux").ConnectedComponent<typeof IrisGridPanel, import("react-redux").Omit<Pick<React.ClassAttributes<IrisGridPanel> & OwnProps & StateProps, "glContainer" | "glEventHub" | "children" | "metadata" | "panelState" | "makeModel" | "localDashboardId" | "theme" | "getDownloadWorker" | "loadPlugin" | "mouseHandlers" | "renderer" | keyof StateProps | keyof React.ClassAttributes<IrisGridPanel>> & Partial<Pick<React.ClassAttributes<IrisGridPanel> & OwnProps & StateProps, "onStateChange" | "onPanelStateUpdate">> & Partial<Pick<{
|
|
184
|
+
declare const ConnectedIrisGridPanel: import("react-redux").ConnectedComponent<typeof IrisGridPanel, import("react-redux").Omit<Pick<React.ClassAttributes<IrisGridPanel> & OwnProps & StateProps, "glContainer" | "glEventHub" | "children" | "metadata" | "panelState" | "makeModel" | "localDashboardId" | "theme" | "getDownloadWorker" | "loadPlugin" | "mouseHandlers" | "renderer" | "getMetricCalculator" | keyof StateProps | keyof React.ClassAttributes<IrisGridPanel>> & Partial<Pick<React.ClassAttributes<IrisGridPanel> & OwnProps & StateProps, "onStateChange" | "onPanelStateUpdate">> & Partial<Pick<{
|
|
184
185
|
onStateChange: () => void;
|
|
185
186
|
onPanelStateUpdate: () => void;
|
|
186
187
|
}, never>>, "settings" | "links" | "user" | "inputFilters" | "columnSelectionValidator"> & OwnProps>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGridPanel.d.ts","sourceRoot":"","sources":["../../src/panels/IrisGridPanel.tsx"],"names":[],"mappings":";AAEA,OAAO,KAAK,EAAE,EACZ,aAAa,EACb,YAAY,EACZ,SAAS,EACT,SAAS,EACV,MAAM,OAAO,CAAC;AAIf,OAAO,EACL,mBAAmB,EAGnB,cAAc,EAEf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAGL,KAAK,YAAY,EACjB,aAAa,EAIb,UAAU,EACV,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,yBAAyB,EACzB,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EACd,KAAK,EACL,sBAAsB,EACtB,SAAS,EACT,WAAW,EACX,cAAc,EACd,qBAAqB,EACrB,aAAa,EACb,oBAAoB,EACpB,uBAAuB,EACvB,4BAA4B,EAC5B,iBAAiB,EACjB,uBAAuB,EACvB,eAAe,EACf,gBAAgB,EAChB,iBAAiB,
|
|
1
|
+
{"version":3,"file":"IrisGridPanel.d.ts","sourceRoot":"","sources":["../../src/panels/IrisGridPanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -811,6 +811,7 @@ export class IrisGridPanel extends PureComponent {
|
|
|
811
811
|
user,
|
|
812
812
|
renderer,
|
|
813
813
|
settings,
|
|
814
|
+
getMetricCalculator,
|
|
814
815
|
theme
|
|
815
816
|
} = this.props;
|
|
816
817
|
var {
|
|
@@ -940,6 +941,7 @@ export class IrisGridPanel extends PureComponent {
|
|
|
940
941
|
frozenColumns: frozenColumns,
|
|
941
942
|
theme: theme,
|
|
942
943
|
columnHeaderGroups: columnHeaderGroups,
|
|
944
|
+
getMetricCalculator: getMetricCalculator,
|
|
943
945
|
children: childrenContent
|
|
944
946
|
})
|
|
945
947
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGridPanel.js","names":["React","PureComponent","memoize","connect","debounce","DEFAULT_DASHBOARD_ID","LayoutUtils","AdvancedSettings","IrisGrid","IrisGridModel","IrisGridCacheUtils","IrisGridUtils","isIrisGridTableModelTemplate","Log","getSettings","getUser","assertNotNull","PromiseUtils","clamp","IrisGridEvent","getInputFiltersForDashboard","getLinksForDashboard","getColumnSelectionValidatorForDashboard","WidgetPanel","IrisGridPanelTooltip","isIrisGridPanelMetadata","isLegacyIrisGridPanelMetadata","emitFilterColumnsChanged","emitFilterTableChanged","emitLinkPointSelected","emitLinkSourceDataSelected","jsx","_jsx","log","module","DEBOUNCE_PANEL_STATE_UPDATE","getTableNameFromMetadata","metadata","Error","name","table","concat","JSON","stringify","IrisGridPanel","constructor","props","_defineProperty","makeMemoizedGridStateDehydrator","makeMemoizedIrisGridStateDehydrator","columns","inputFilters","getInputFiltersForColumns","filter","_ref","value","excludePanelIds","id","getIdFromPanel","includes","dashboardLinks","pluginFetchColumns","columnSet","Set","i","length","start","panelId","add","columnName","Plugin","model","pluginState","deprecatedProps","panel","className","children","_objectSpread","ref","pluginRef","handlePluginFilter","fetchColumns","handlePluginFetchColumns","onStateChange","handlePluginStateChange","isSelectingPartition","partitions","advancedSettings","dehydrateIrisGridPanelState","irisGridPanelState","irisGridState","gridState","onPanelStateUpdate","panelState","oldPanelState","state","irisGridUtils","getCachedPanelState","getDehydratedIrisGridPanelState","irisGridStateDehydrator","gridStateDehydrator","debug","setState","handleAdvancedSettingsChange","bind","handleColumnsChanged","handleTableChanged","handleColumnSelected","handleDataSelected","handleError","handleGridStateChange","handleCreateChart","handleShow","handleTabClicked","handleDisconnect","handleReconnect","handleLoadSuccess","handleLoadError","isColumnSelectionValid","handleContextMenu","handleClearAllFilters","irisGrid","createRef","error","isDisconnected","isLoaded","isLoading","isModelReady","undefined","advancedFilters","Map","aggregationSettings","aggregations","showOnTop","DEFAULTS","customColumns","customColumnFormatMap","isFilterBarShown","quickFilters","sorts","userColumnWidths","userRowHeights","reverse","movedColumns","movedRows","rollupConfig","showSearchBar","searchValue","selectedSearchColumns","invertSearchColumns","pluginFilters","modelQueue","pendingDataMap","frozenColumns","irisGridStateOverrides","gridStateOverrides","isStuckToBottom","isStuckToRight","conditionalFormats","selectDistinctColumns","componentDidMount","initModel","componentDidUpdate","prevProps","prevState","makeModel","stopModelListening","close","startModelListening","componentWillUnmount","savePanelState","cancel","modelPromise","getTableName","makeCancelable","resolved","then","catch","modelParam","dh","push","m","getModelRollupConfig","originalColumns","initModelQueue","modelInitialized","modelChange","shift","key","_ref2","get","set","filters","_this$irisGridUtils$g","_this$irisGridUtils","formatter","getFiltersFromInputFilters","timeZone","data","_this$pluginRef$curre","_this$pluginRef$curre2","_this$pluginRef$curre3","current","getMenu","call","tableColumn","columnSelectionValidator","type","glEventHub","emit","STATE_CHANGED","event","sendColumnsChange","detail","settings","flush","sourcePanelId","tableSettings","extractTableSettings","CREATE_CHART","column","row","dataMap","updateGrid","focus","isCanceled","loadPlugin","loadPanelState","pluginName","clearAllFilters","debug2","addEventListener","EVENT","DISCONNECT","RECONNECT","COLUMNS_CHANGED","TABLE_CHANGED","removeEventListener","getCoordinateForColumn","_gridWrapper$getBound","_allColumnXs$get","_allColumnWidths$get","gridWrapper","rect","getBoundingClientRect","width","height","metrics","columnHeaderHeight","allColumnXs","allColumnWidths","right","columnHeaderMaxDepth","columnIndex","getColumnIndexByName","visibleIndex","getVisibleColumn","columnX","columnWidth","x","left","y","top","setFilterMap","filterMap","setAdvancedFilterMap","setFilters","_ref3","indexedQuickFilters","changeFilterColumnNamesToIndexes","_ref4","isFilterable","indexedAdvancedFilters","_ref5","hydrateQuickFilters","hydrateAdvancedFilters","setStateOverrides","overrides","unsetFilterValue","originalIrisGridStateOverrides","savedQuickFilters","savedAdvancedFilters","hydrateIrisGridPanelState","columnHeaderGroups","partitionConfig","hydrateIrisGridState","hydrateGridState","_this$irisGrid$curren","_this$irisGrid$curren2","grid","handleResize","render","_model$description","_panelState$pluginSta","glContainer","getDownloadWorker","links","mouseHandlers","user","renderer","theme","errorMessage","description","childrenContent","getPluginContent","permissions","canCopy","canDownloadCsv","onClearAllFilters","onShow","onTabFocus","onTabClicked","widgetName","widgetType","componentPanel","renderTabTooltip","alwaysFetchColumns","getAlwaysFetchColumns","columnAllowedCursor","columnNotAllowedCursor","copyCursor","getGridInputFilters","applyInputFiltersOnInit","isSelectingColumn","onColumnSelected","onCreateChart","onDataSelected","onError","onContextMenu","onAdvancedSettingsChange","customFilters","mapStateToProps","_ref6","localDashboardId","ConnectedIrisGridPanel","forwardRef"],"sources":["../../src/panels/IrisGridPanel.tsx"],"sourcesContent":["// Wrapper for the IrisGrid for use in a golden layout container\n// Will probably need to handle window popping out from golden layout here.\nimport React, {\n PureComponent,\n ReactElement,\n ReactNode,\n RefObject,\n} from 'react';\nimport memoize from 'memoize-one';\nimport { connect } from 'react-redux';\nimport debounce from 'lodash.debounce';\nimport {\n DashboardPanelProps,\n DEFAULT_DASHBOARD_ID,\n LayoutUtils,\n PanelComponent,\n PanelMetadata,\n} from '@deephaven/dashboard';\nimport {\n AdvancedSettings,\n IrisGrid,\n type IrisGridType,\n IrisGridModel,\n IrisGridCacheUtils,\n IrisGridUtils,\n isIrisGridTableModelTemplate,\n ColumnName,\n PendingDataMap,\n InputFilter,\n IrisGridThemeType,\n ReadonlyAdvancedFilterMap,\n AggregationSettings,\n AdvancedSettingsType,\n UIRollupConfig,\n UIRow,\n ReadonlyQuickFilterMap,\n FilterMap,\n QuickFilter,\n AdvancedFilter,\n SidebarFormattingRule,\n IrisGridState,\n ChartBuilderSettings,\n DehydratedIrisGridState,\n DehydratedIrisGridPanelState,\n ColumnHeaderGroup,\n IrisGridContextMenuData,\n PartitionConfig,\n IrisGridRenderer,\n MouseHandlersProp,\n} from '@deephaven/iris-grid';\nimport {\n type RowDataMap,\n type AdvancedFilterOptions,\n type FormattingRule,\n} from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport {\n getSettings,\n getUser,\n RootState,\n User,\n WorkspaceSettings,\n} from '@deephaven/redux';\nimport {\n assertNotNull,\n CancelablePromise,\n PromiseUtils,\n} from '@deephaven/utils';\nimport { ResolvableContextAction } from '@deephaven/components';\nimport type { dh } from '@deephaven/jsapi-types';\nimport {\n GridState,\n ModelIndex,\n ModelSizeMap,\n MoveOperation,\n} from '@deephaven/grid';\nimport type {\n TablePluginComponent,\n TablePluginElement,\n} from '@deephaven/plugin';\nimport clamp from 'lodash.clamp';\nimport { IrisGridEvent } from '../events';\nimport {\n getInputFiltersForDashboard,\n getLinksForDashboard,\n getColumnSelectionValidatorForDashboard,\n} from '../redux';\nimport WidgetPanel from './WidgetPanel';\nimport './IrisGridPanel.scss';\nimport {\n type Link,\n type LinkColumn,\n type LinkPointOptions,\n} from '../linker/LinkerUtils';\nimport IrisGridPanelTooltip from './IrisGridPanelTooltip';\nimport {\n isIrisGridPanelMetadata,\n isLegacyIrisGridPanelMetadata,\n} from './IrisGridPanelTypes';\nimport {\n emitFilterColumnsChanged,\n emitFilterTableChanged,\n} from '../FilterEvents';\nimport {\n emitLinkPointSelected,\n emitLinkSourceDataSelected,\n} from '../linker/LinkerEvent';\n\nconst log = Log.module('IrisGridPanel');\n\nconst DEBOUNCE_PANEL_STATE_UPDATE = 500;\n\ntype ModelQueueFunction = (model: IrisGridModel) => void;\n\ntype ModelQueue = ModelQueueFunction[];\n\nexport interface PanelState {\n gridState: {\n isStuckToBottom: boolean;\n isStuckToRight: boolean;\n movedColumns: readonly {\n from: string | ModelIndex | [string, string] | [ModelIndex, ModelIndex];\n to: string | ModelIndex;\n }[];\n movedRows: readonly MoveOperation[];\n };\n irisGridState: DehydratedIrisGridState;\n irisGridPanelState: DehydratedIrisGridPanelState;\n pluginState: unknown;\n}\n\n// Some of the properties in the loaded panel state may be omitted\n// even though they can't be undefined in the dehydrated state.\n// This can happen when loading the state saved before the properties were added.\ntype LoadedPanelState = PanelState & {\n irisGridPanelState: PanelState['irisGridPanelState'] & {\n partitions?: (string | null)[];\n partition?: string | null;\n };\n};\n\nexport interface OwnProps extends DashboardPanelProps {\n children?: ReactNode;\n panelState?: LoadedPanelState | null;\n makeModel: () => IrisGridModel | Promise<IrisGridModel>;\n\n onStateChange?: (irisGridState: IrisGridState, gridState: GridState) => void;\n onPanelStateUpdate?: (panelState: PanelState) => void;\n\n /** Override the default worker used by IrisGrid to download CSVs. */\n getDownloadWorker?: () => Promise<ServiceWorker>;\n\n /** Load a plugin defined by the table */\n loadPlugin: (pluginName: string) => TablePluginComponent;\n\n theme?: Partial<IrisGridThemeType> & Record<string, unknown>;\n\n mouseHandlers?: MouseHandlersProp;\n renderer?: IrisGridRenderer;\n}\n\ninterface StateProps {\n inputFilters: InputFilter[];\n links: Link[];\n columnSelectionValidator?: (\n panel: PanelComponent,\n tableColumn: LinkColumn,\n options: LinkPointOptions\n ) => boolean;\n user: User;\n settings: WorkspaceSettings;\n}\n\ninterface IrisGridPanelState {\n error: unknown;\n isDisconnected: boolean;\n isLoaded: boolean;\n isLoading: boolean;\n isModelReady: boolean;\n model?: IrisGridModel;\n\n isStuckToBottom: boolean;\n isStuckToRight: boolean;\n\n // State is hydrated from panel state when table is loaded\n conditionalFormats: readonly SidebarFormattingRule[];\n selectDistinctColumns: readonly ColumnName[];\n advancedFilters: ReadonlyAdvancedFilterMap;\n aggregationSettings: AggregationSettings;\n advancedSettings: Map<AdvancedSettingsType, boolean>;\n customColumns: readonly ColumnName[];\n customColumnFormatMap: Map<string, FormattingRule>;\n isFilterBarShown: boolean;\n quickFilters: ReadonlyQuickFilterMap;\n sorts: readonly dh.Sort[];\n userColumnWidths: ModelSizeMap;\n userRowHeights: ModelSizeMap;\n reverse: boolean;\n movedColumns: readonly MoveOperation[];\n movedRows: readonly MoveOperation[];\n isSelectingPartition: boolean;\n partitions: (string | null)[];\n partitionConfig?: PartitionConfig;\n rollupConfig?: UIRollupConfig;\n showSearchBar: boolean;\n searchValue: string;\n selectedSearchColumns?: readonly string[];\n invertSearchColumns: boolean;\n Plugin?: TablePluginComponent;\n pluginFilters: readonly dh.FilterCondition[];\n pluginFetchColumns: readonly string[];\n modelQueue: ModelQueue;\n pendingDataMap?: PendingDataMap<UIRow>;\n frozenColumns?: readonly ColumnName[];\n columnHeaderGroups?: readonly ColumnHeaderGroup[];\n\n // eslint-disable-next-line react/no-unused-state\n panelState?: PanelState | null; // Dehydrated panel state that can load this panel\n irisGridStateOverrides: Partial<DehydratedIrisGridState>;\n gridStateOverrides: Partial<GridState>;\n}\n\nfunction getTableNameFromMetadata(\n metadata: PanelMetadata | null | undefined\n): string {\n if (metadata == null) {\n throw new Error('No metadata provided');\n }\n if (isIrisGridPanelMetadata(metadata)) {\n return metadata.name;\n }\n if (isLegacyIrisGridPanelMetadata(metadata)) {\n return metadata.table;\n }\n\n throw new Error(\n `Unable to determine table name from metadata: ${JSON.stringify(metadata)}`\n );\n}\n\nexport type IrisGridPanelProps = OwnProps & StateProps;\n\nexport class IrisGridPanel extends PureComponent<\n IrisGridPanelProps,\n IrisGridPanelState\n> {\n static defaultProps = {\n onStateChange: (): void => undefined,\n onPanelStateUpdate: (): void => undefined,\n };\n\n static displayName = 'IrisGridPanel';\n\n static COMPONENT = 'IrisGridPanel';\n\n constructor(props: IrisGridPanelProps) {\n super(props);\n\n this.handleAdvancedSettingsChange =\n this.handleAdvancedSettingsChange.bind(this);\n this.handleColumnsChanged = this.handleColumnsChanged.bind(this);\n this.handleTableChanged = this.handleTableChanged.bind(this);\n this.handleColumnSelected = this.handleColumnSelected.bind(this);\n this.handleDataSelected = this.handleDataSelected.bind(this);\n this.handleError = this.handleError.bind(this);\n this.handleGridStateChange = this.handleGridStateChange.bind(this);\n this.handlePluginStateChange = this.handlePluginStateChange.bind(this);\n this.handleCreateChart = this.handleCreateChart.bind(this);\n this.handleShow = this.handleShow.bind(this);\n this.handleTabClicked = this.handleTabClicked.bind(this);\n this.handleDisconnect = this.handleDisconnect.bind(this);\n this.handleReconnect = this.handleReconnect.bind(this);\n this.handleLoadSuccess = this.handleLoadSuccess.bind(this);\n this.handleLoadError = this.handleLoadError.bind(this);\n this.isColumnSelectionValid = this.isColumnSelectionValid.bind(this);\n this.handleContextMenu = this.handleContextMenu.bind(this);\n this.handlePluginFilter = this.handlePluginFilter.bind(this);\n this.handlePluginFetchColumns = this.handlePluginFetchColumns.bind(this);\n this.handleClearAllFilters = this.handleClearAllFilters.bind(this);\n\n this.irisGrid = React.createRef();\n this.pluginRef = React.createRef();\n\n const { panelState } = props;\n\n this.pluginState = null;\n this.irisGridUtils = null;\n\n this.state = {\n error: null,\n isDisconnected: false,\n isLoaded: false,\n isLoading: true,\n isModelReady: false,\n model: undefined,\n\n // State is hydrated from panel state when table is loaded\n advancedFilters: new Map(),\n aggregationSettings: { aggregations: [], showOnTop: false },\n advancedSettings: new Map(AdvancedSettings.DEFAULTS),\n customColumns: [],\n customColumnFormatMap: new Map(),\n isFilterBarShown: false,\n quickFilters: new Map(),\n sorts: [],\n userColumnWidths: new Map(),\n userRowHeights: new Map(),\n reverse: false,\n movedColumns: [],\n movedRows: [],\n isSelectingPartition: false,\n partitions: [],\n rollupConfig: undefined,\n showSearchBar: false,\n searchValue: '',\n selectedSearchColumns: undefined,\n invertSearchColumns: true,\n Plugin: undefined,\n pluginFilters: [],\n pluginFetchColumns: [],\n modelQueue: [],\n pendingDataMap: new Map(),\n frozenColumns: undefined,\n\n // eslint-disable-next-line react/no-unused-state\n panelState, // Dehydrated panel state that can load this panel\n irisGridStateOverrides: {},\n gridStateOverrides: {},\n isStuckToBottom: false,\n isStuckToRight: false,\n conditionalFormats: [],\n selectDistinctColumns: [],\n };\n }\n\n componentDidMount(): void {\n this.initModel();\n }\n\n componentDidUpdate(\n prevProps: IrisGridPanelProps,\n prevState: IrisGridPanelState\n ): void {\n const { model } = this.state;\n const { makeModel } = this.props;\n if (model !== prevState.model) {\n if (prevState.model != null) {\n this.stopModelListening(prevState.model);\n prevState.model.close();\n }\n if (model != null) {\n this.startModelListening(model);\n }\n }\n\n if (makeModel !== prevProps.makeModel) {\n this.initModel();\n }\n }\n\n componentWillUnmount(): void {\n this.savePanelState.cancel();\n\n if (this.modelPromise != null) {\n this.modelPromise.cancel();\n this.modelPromise = undefined;\n }\n\n const { model } = this.state;\n if (model) {\n this.stopModelListening(model);\n model.close();\n }\n }\n\n irisGrid: RefObject<IrisGridType>;\n\n pluginRef: RefObject<TablePluginElement>;\n\n modelPromise?: CancelablePromise<IrisGridModel>;\n\n irisGridState?: IrisGridState;\n\n gridState?: GridState;\n\n pluginState: unknown;\n\n private irisGridUtils: IrisGridUtils | null;\n\n private gridStateDehydrator =\n IrisGridCacheUtils.makeMemoizedGridStateDehydrator();\n\n private irisGridStateDehydrator =\n IrisGridCacheUtils.makeMemoizedIrisGridStateDehydrator();\n\n getTableName(): string {\n const { metadata } = this.props;\n return getTableNameFromMetadata(metadata);\n }\n\n getGridInputFilters = memoize(\n (columns: readonly dh.Column[], inputFilters: readonly InputFilter[]) =>\n IrisGridUtils.getInputFiltersForColumns(\n columns,\n // They may have picked a column, but not actually entered a value yet. In that case, don't need to update.\n inputFilters.filter(({ value, excludePanelIds }) => {\n const id = LayoutUtils.getIdFromPanel(this);\n return (\n value != null &&\n (excludePanelIds == null ||\n (id != null && !excludePanelIds.includes(id)))\n );\n })\n )\n );\n\n getAlwaysFetchColumns = memoize(\n (\n dashboardLinks: readonly Link[],\n pluginFetchColumns: readonly string[]\n ): string[] => {\n const id = LayoutUtils.getIdFromPanel(this);\n // Always fetch columns which are the start/source of a link or columns specified by a plugin\n const columnSet = new Set(pluginFetchColumns);\n for (let i = 0; i < dashboardLinks.length; i += 1) {\n const { start } = dashboardLinks[i];\n if (start != null && start.panelId === id) {\n columnSet.add(start.columnName);\n }\n }\n return [...columnSet];\n }\n );\n\n getPluginContent = memoize(\n (\n Plugin: TablePluginComponent | undefined,\n model: IrisGridModel | undefined,\n pluginState: unknown\n ) => {\n if (\n !model ||\n !isIrisGridTableModelTemplate(model) ||\n Plugin == null ||\n model.table == null\n ) {\n return null;\n }\n\n // TODO #2093: Find a better way to handle deprecated panel prop\n const deprecatedProps = {\n panel: this,\n };\n\n return (\n <div className=\"iris-grid-plugin\">\n <Plugin\n ref={this.pluginRef}\n filter={this.handlePluginFilter}\n fetchColumns={this.handlePluginFetchColumns}\n model={model}\n table={model.table}\n onStateChange={this.handlePluginStateChange}\n pluginState={pluginState}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...deprecatedProps}\n />\n </div>\n );\n }\n );\n\n getDehydratedIrisGridPanelState = memoize(\n (\n model: IrisGridModel,\n isSelectingPartition: boolean,\n partitions: (string | null)[],\n advancedSettings: Map<AdvancedSettingsType, boolean>\n ) =>\n IrisGridUtils.dehydrateIrisGridPanelState(model, {\n isSelectingPartition,\n partitions,\n advancedSettings,\n })\n );\n\n getCachedPanelState = memoize(\n (\n irisGridPanelState: PanelState['irisGridPanelState'],\n irisGridState: PanelState['irisGridState'],\n gridState: PanelState['gridState'],\n pluginState: PanelState['pluginState']\n ): PanelState => ({\n irisGridPanelState,\n irisGridState,\n gridState,\n pluginState,\n })\n );\n\n initModel(): void {\n this.setState({ isModelReady: false, isLoading: true, error: null });\n const { makeModel } = this.props;\n if (this.modelPromise != null) {\n this.modelPromise.cancel();\n }\n this.modelPromise = PromiseUtils.makeCancelable(makeModel(), resolved =>\n resolved.close()\n );\n this.modelPromise.then(this.handleLoadSuccess).catch(this.handleLoadError);\n }\n\n handleLoadSuccess(modelParam: IrisGridModel): void {\n const model = modelParam;\n const { panelState, irisGridStateOverrides } = this.state;\n const modelQueue: ((m: IrisGridModel) => void)[] = [];\n this.irisGridUtils = new IrisGridUtils(model.dh);\n if (panelState != null) {\n const { irisGridState } = panelState;\n const {\n aggregationSettings,\n customColumns,\n selectDistinctColumns = [],\n rollupConfig,\n } = { ...irisGridState, ...irisGridStateOverrides };\n\n if (customColumns.length > 0) {\n modelQueue.push(m => {\n // eslint-disable-next-line no-param-reassign\n m.customColumns = customColumns;\n });\n }\n\n if (rollupConfig != null && rollupConfig.columns.length > 0) {\n // originalColumns might change by the time this model queue item is applied.\n // Instead of pushing a static object, push the function\n // that calculates the config based on the updated model state.\n modelQueue.push(m => {\n // eslint-disable-next-line no-param-reassign\n m.rollupConfig = IrisGridUtils.getModelRollupConfig(\n m.originalColumns,\n rollupConfig,\n aggregationSettings\n );\n });\n }\n\n if (selectDistinctColumns.length > 0) {\n modelQueue.push(m => {\n // eslint-disable-next-line no-param-reassign\n m.selectDistinctColumns = selectDistinctColumns;\n });\n }\n }\n\n this.setState({ model, modelQueue });\n this.initModelQueue(model, modelQueue);\n }\n\n initModelQueue(modelParam: IrisGridModel, modelQueue: ModelQueue): void {\n const model = modelParam;\n if (modelQueue.length === 0) {\n this.modelInitialized(model);\n return;\n }\n const modelChange = modelQueue.shift();\n log.debug('initModelQueue', modelChange);\n // Apply next model change. Triggers columnschanged event.\n if (modelChange) {\n modelChange(model);\n }\n this.setState({ modelQueue });\n }\n\n handleAdvancedSettingsChange(\n key: AdvancedSettingsType,\n value: boolean\n ): void {\n log.debug('handleAdvancedSettingsChange', key, value);\n this.setState(({ advancedSettings }) =>\n advancedSettings.get(key) === value\n ? null\n : { advancedSettings: new Map(advancedSettings).set(key, value) }\n );\n }\n\n handlePluginFilter(filters: InputFilter[]): void {\n const { model } = this.state;\n assertNotNull(model);\n const { columns, formatter } = model;\n const pluginFilters =\n this.irisGridUtils?.getFiltersFromInputFilters(\n columns,\n filters,\n formatter.timeZone\n ) ?? [];\n this.setState({ pluginFilters });\n }\n\n handlePluginFetchColumns(pluginFetchColumns: string[]): void {\n this.setState({ pluginFetchColumns });\n }\n\n handleContextMenu(data: IrisGridContextMenuData): ResolvableContextAction[] {\n return this.pluginRef.current?.getMenu?.(data) ?? [];\n }\n\n isColumnSelectionValid(tableColumn: dh.Column | null): boolean {\n const { columnSelectionValidator } = this.props;\n if (columnSelectionValidator && tableColumn) {\n return columnSelectionValidator(this, tableColumn, {\n type: 'tableLink',\n });\n }\n return false;\n }\n\n handleGridStateChange(\n irisGridState: IrisGridState,\n gridState: GridState\n ): void {\n this.irisGridState = irisGridState;\n this.gridState = gridState;\n\n // Grid sends it's first state change after it's finished loading\n this.setState({ isLoaded: true, isLoading: false });\n\n this.savePanelState();\n\n const { glEventHub, onStateChange } = this.props;\n glEventHub.emit(IrisGridEvent.STATE_CHANGED, this);\n onStateChange?.(irisGridState, gridState);\n }\n\n handlePluginStateChange(pluginState: unknown): void {\n const { irisGridState, gridState } = this;\n this.pluginState = pluginState;\n // Do not save if there is null state\n // The save will happen when the grid loads\n if (irisGridState !== null && gridState !== null) {\n this.savePanelState();\n }\n }\n\n handleColumnsChanged(event: Event): void {\n const { isModelReady, model, modelQueue } = this.state;\n if (isModelReady) {\n this.sendColumnsChange((event as CustomEvent).detail);\n } else {\n assertNotNull(model);\n this.initModelQueue(model, modelQueue);\n }\n }\n\n handleTableChanged(event: Event): void {\n log.debug('handleTableChanged', event);\n const { glEventHub } = this.props;\n const { detail: table } = event as CustomEvent;\n const panelId = LayoutUtils.getIdFromPanel(this);\n assertNotNull(panelId);\n emitFilterTableChanged(glEventHub, panelId, table);\n }\n\n /**\n * Create a chart with the specified settings\n * @param settings The settings from the chart builder\n * @param settings.type The settings from the chart builder\n * @param settings.series The names of the series\n * @param model The IrisGridModel object\n */\n handleCreateChart(\n settings: ChartBuilderSettings,\n model: IrisGridModel\n ): void {\n // Panel state is stored with the created chart, so flush it first\n this.savePanelState.flush();\n\n this.setState(\n () => null,\n () => {\n const { glEventHub, inputFilters } = this.props;\n const table = this.getTableName();\n const { panelState } = this.state;\n const sourcePanelId = LayoutUtils.getIdFromPanel(this);\n let tableSettings;\n\n if (panelState) {\n tableSettings = IrisGridUtils.extractTableSettings(\n panelState,\n inputFilters\n );\n }\n glEventHub.emit(IrisGridEvent.CREATE_CHART, {\n metadata: {\n settings,\n sourcePanelId,\n table,\n tableSettings,\n },\n table: isIrisGridTableModelTemplate(model) ? model.table : undefined,\n });\n }\n );\n }\n\n handleColumnSelected(column: dh.Column): void {\n const { glEventHub } = this.props;\n const panelId = LayoutUtils.getIdFromPanel(this);\n assertNotNull(panelId);\n emitLinkPointSelected(glEventHub, panelId, column, { type: 'tableLink' });\n }\n\n handleDataSelected(row: ModelIndex, dataMap: RowDataMap): void {\n const { glEventHub } = this.props;\n const panelId = LayoutUtils.getIdFromPanel(this);\n assertNotNull(panelId);\n emitLinkSourceDataSelected(glEventHub, panelId, dataMap);\n }\n\n handleShow(): void {\n this.updateGrid();\n }\n\n handleTabClicked(): void {\n if (this.irisGrid.current) {\n this.irisGrid.current.focus();\n }\n }\n\n handleError(error: unknown): void {\n log.error(error);\n this.setState({ error, isLoading: false });\n }\n\n handleDisconnect(): void {\n this.setState({\n error: new Error('Table disconnected'),\n isDisconnected: true,\n isLoading: false,\n });\n }\n\n handleReconnect(): void {\n this.setState({ isDisconnected: false, error: null });\n }\n\n handleLoadError(error: unknown): void {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n\n this.handleError(error);\n }\n\n modelInitialized(model: IrisGridModel): void {\n const { glEventHub, loadPlugin } = this.props;\n\n this.modelPromise = undefined;\n\n // Custom columns at this point already initialized, can load state\n this.loadPanelState(model);\n\n this.setState({ isModelReady: true });\n\n if (isIrisGridTableModelTemplate(model)) {\n const { table } = model;\n const { pluginName } = table;\n\n if (pluginName !== '') {\n if (loadPlugin != null && pluginName != null) {\n const Plugin = loadPlugin(pluginName);\n this.setState({ Plugin });\n }\n }\n const panelId = LayoutUtils.getIdFromPanel(this);\n assertNotNull(panelId);\n emitFilterTableChanged(glEventHub, panelId, table);\n }\n\n this.sendColumnsChange(model.columns);\n }\n\n handleClearAllFilters(): void {\n const irisGrid = this.irisGrid.current;\n const { isDisconnected } = this.state;\n if (irisGrid != null && !isDisconnected) {\n irisGrid.clearAllFilters();\n }\n }\n\n sendColumnsChange(columns: readonly dh.Column[]): void {\n log.debug2('sendColumnsChange', columns);\n const { glEventHub } = this.props;\n const panelId = LayoutUtils.getIdFromPanel(this);\n assertNotNull(panelId);\n emitFilterColumnsChanged(glEventHub, panelId, columns);\n }\n\n startModelListening(model: IrisGridModel): void {\n model.addEventListener(\n IrisGridModel.EVENT.DISCONNECT,\n this.handleDisconnect\n );\n model.addEventListener(IrisGridModel.EVENT.RECONNECT, this.handleReconnect);\n model.addEventListener(\n IrisGridModel.EVENT.COLUMNS_CHANGED,\n this.handleColumnsChanged\n );\n model.addEventListener(\n IrisGridModel.EVENT.TABLE_CHANGED,\n this.handleTableChanged\n );\n }\n\n stopModelListening(model: IrisGridModel): void {\n model.removeEventListener(\n IrisGridModel.EVENT.DISCONNECT,\n this.handleDisconnect\n );\n model.removeEventListener(\n IrisGridModel.EVENT.RECONNECT,\n this.handleReconnect\n );\n model.removeEventListener(\n IrisGridModel.EVENT.COLUMNS_CHANGED,\n this.handleColumnsChanged\n );\n model.removeEventListener(\n IrisGridModel.EVENT.TABLE_CHANGED,\n this.handleTableChanged\n );\n }\n\n getCoordinateForColumn(columnName: ColumnName): [number, number] | null {\n const { model } = this.state;\n if (!model) {\n return null;\n }\n\n const irisGrid = this.irisGrid.current;\n const { gridWrapper } = irisGrid || {};\n const rect = gridWrapper?.getBoundingClientRect() ?? null;\n if (rect == null || rect.width <= 0 || rect.height <= 0) {\n return null;\n }\n assertNotNull(irisGrid);\n const { metrics } = irisGrid.state;\n assertNotNull(metrics);\n const {\n columnHeaderHeight,\n allColumnXs,\n allColumnWidths,\n right,\n columnHeaderMaxDepth,\n } = metrics;\n const columnIndex = model.getColumnIndexByName(columnName);\n assertNotNull(columnIndex);\n const visibleIndex = irisGrid.getVisibleColumn(columnIndex);\n const columnX = allColumnXs.get(visibleIndex) ?? 0;\n const columnWidth = allColumnWidths.get(visibleIndex) ?? 0;\n\n const x = clamp(\n visibleIndex > right\n ? rect.right\n : rect.left + columnX + columnWidth * 0.5,\n rect.left,\n rect.right\n );\n const y = rect.top + columnHeaderHeight * columnHeaderMaxDepth;\n\n return [x, y];\n }\n\n setFilterMap(filterMap: FilterMap): void {\n const irisGrid = this.irisGrid.current;\n if (irisGrid != null) {\n irisGrid.setFilterMap(filterMap);\n }\n }\n\n setAdvancedFilterMap(filterMap: ReadonlyAdvancedFilterMap): void {\n const irisGrid = this.irisGrid.current;\n if (irisGrid != null) {\n irisGrid.setAdvancedFilterMap(filterMap);\n }\n }\n\n setFilters({\n quickFilters,\n advancedFilters,\n }: {\n quickFilters: { name: ColumnName; filter: QuickFilter }[];\n advancedFilters: { name: ColumnName; filter: AdvancedFilter }[];\n }): void {\n log.debug('setFilters', quickFilters, advancedFilters);\n const { model, isDisconnected } = this.state;\n const irisGrid = this.irisGrid.current;\n if (irisGrid == null || isDisconnected) {\n log.debug('Ignore setFilters, model disconnected');\n return;\n }\n assertNotNull(model);\n const { columns, formatter } = model;\n const indexedQuickFilters = IrisGridUtils.changeFilterColumnNamesToIndexes(\n model.columns,\n quickFilters\n ).filter(([columnIndex]) => model.isFilterable(columnIndex));\n const indexedAdvancedFilters =\n IrisGridUtils.changeFilterColumnNamesToIndexes(\n model.columns,\n advancedFilters\n ).filter(([columnIndex]) => model.isFilterable(columnIndex));\n assertNotNull(this.irisGridUtils);\n irisGrid.clearAllFilters();\n irisGrid.setFilters({\n quickFilters: this.irisGridUtils.hydrateQuickFilters(\n columns,\n indexedQuickFilters,\n formatter.timeZone\n ),\n advancedFilters: this.irisGridUtils.hydrateAdvancedFilters(\n columns,\n indexedAdvancedFilters,\n formatter.timeZone\n ),\n });\n }\n\n setStateOverrides(overrides: {\n irisGridState: Partial<DehydratedIrisGridState>;\n gridState: Partial<GridState>;\n }): void {\n log.debug('setStateOverrides', overrides);\n const {\n irisGridState: irisGridStateOverrides,\n gridState: gridStateOverrides,\n } = overrides;\n this.setState({ irisGridStateOverrides, gridStateOverrides }, () => {\n this.initModel();\n });\n }\n\n // eslint-disable-next-line class-methods-use-this\n unsetFilterValue(): void {\n // IrisGridPanel retains the set value after the link is broken\n // We need to define this so LinkerUtils#isLinkablePanel passes the check\n }\n\n loadPanelState(model: IrisGridModel): void {\n const {\n panelState,\n irisGridStateOverrides: originalIrisGridStateOverrides,\n gridStateOverrides,\n } = this.state;\n if (panelState == null) {\n return;\n }\n\n try {\n const { gridState, irisGridState, irisGridPanelState } = panelState;\n const irisGridStateOverrides = { ...originalIrisGridStateOverrides };\n const {\n quickFilters: savedQuickFilters,\n advancedFilters: savedAdvancedFilters,\n } = irisGridStateOverrides;\n if (savedQuickFilters) {\n irisGridStateOverrides.quickFilters =\n IrisGridUtils.changeFilterColumnNamesToIndexes(\n model.columns,\n savedQuickFilters as unknown as {\n name: string;\n filter: {\n text: string;\n };\n }[]\n );\n }\n if (savedAdvancedFilters) {\n irisGridStateOverrides.advancedFilters =\n IrisGridUtils.changeFilterColumnNamesToIndexes(\n model.columns,\n savedAdvancedFilters as unknown as {\n name: string;\n filter: { options: AdvancedFilterOptions };\n }[]\n );\n }\n const { isSelectingPartition, partitions, advancedSettings } =\n IrisGridUtils.hydrateIrisGridPanelState(model, irisGridPanelState);\n assertNotNull(this.irisGridUtils);\n const {\n advancedFilters,\n customColumns,\n customColumnFormatMap,\n isFilterBarShown,\n quickFilters,\n reverse,\n rollupConfig,\n aggregationSettings,\n sorts,\n // TODO:\n // DH-20403: IrisGrid should persist user column widths when the model initializes with a partial column list\n userColumnWidths,\n userRowHeights,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n invertSearchColumns,\n pendingDataMap,\n frozenColumns,\n conditionalFormats,\n columnHeaderGroups,\n partitionConfig,\n } = this.irisGridUtils.hydrateIrisGridState(model, {\n ...irisGridState,\n ...irisGridStateOverrides,\n });\n const { isStuckToBottom, isStuckToRight, movedColumns, movedRows } =\n IrisGridUtils.hydrateGridState(\n model,\n { ...gridState, ...gridStateOverrides },\n irisGridState.customColumns\n );\n this.setState({\n advancedFilters,\n advancedSettings,\n conditionalFormats,\n customColumns,\n customColumnFormatMap,\n isFilterBarShown,\n isSelectingPartition,\n movedColumns,\n movedRows,\n partitions,\n quickFilters,\n reverse,\n rollupConfig,\n aggregationSettings,\n sorts,\n userColumnWidths,\n userRowHeights,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n invertSearchColumns,\n pendingDataMap,\n frozenColumns,\n isStuckToBottom,\n isStuckToRight,\n columnHeaderGroups,\n partitionConfig,\n });\n } catch (error) {\n log.error('loadPanelState failed to load panelState', panelState, error);\n }\n }\n\n savePanelState = debounce(() => {\n const { irisGridState, gridState, pluginState } = this;\n assertNotNull(irisGridState);\n const { onPanelStateUpdate } = this.props;\n const {\n model,\n panelState: oldPanelState,\n isSelectingPartition,\n partitions,\n advancedSettings,\n } = this.state;\n assertNotNull(this.irisGridUtils);\n assertNotNull(model);\n assertNotNull(gridState);\n\n const panelState = this.getCachedPanelState(\n this.getDehydratedIrisGridPanelState(\n model,\n isSelectingPartition,\n partitions,\n advancedSettings\n ),\n this.irisGridStateDehydrator(model, irisGridState),\n this.gridStateDehydrator(model, gridState),\n pluginState\n );\n\n if (panelState !== oldPanelState) {\n log.debug('Saving panel state', this, panelState);\n\n this.setState({ panelState });\n onPanelStateUpdate?.(panelState);\n }\n }, DEBOUNCE_PANEL_STATE_UPDATE);\n\n updateGrid(): void {\n const grid = this.irisGrid.current?.grid ?? null;\n if (!grid) return;\n\n // handle resize will verify state and draw and update\n grid.handleResize();\n }\n\n render(): ReactElement {\n const {\n children,\n glContainer,\n glEventHub,\n columnSelectionValidator,\n getDownloadWorker,\n inputFilters,\n links,\n metadata,\n mouseHandlers,\n panelState,\n user,\n renderer,\n settings,\n theme,\n } = this.props;\n const {\n advancedFilters,\n aggregationSettings,\n advancedSettings,\n conditionalFormats,\n customColumns,\n customColumnFormatMap,\n error,\n isDisconnected,\n isFilterBarShown,\n isSelectingPartition,\n isStuckToBottom,\n isStuckToRight,\n isLoaded,\n isLoading,\n isModelReady,\n model,\n movedColumns,\n movedRows,\n partitions,\n partitionConfig,\n quickFilters,\n reverse,\n rollupConfig,\n sorts,\n userColumnWidths,\n userRowHeights,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n invertSearchColumns,\n Plugin,\n pluginFilters,\n pluginFetchColumns,\n pendingDataMap,\n frozenColumns,\n columnHeaderGroups,\n } = this.state;\n const errorMessage =\n error != null ? `Unable to open table. ${error}` : undefined;\n const name = getTableNameFromMetadata(metadata);\n const description = model?.description ?? undefined;\n const pluginState = panelState?.pluginState ?? null;\n const childrenContent =\n children ?? this.getPluginContent(Plugin, model, pluginState);\n const { permissions } = user;\n const { canCopy, canDownloadCsv } = permissions;\n\n return (\n <WidgetPanel\n errorMessage={errorMessage}\n isDisconnected={isDisconnected}\n isLoading={isLoading}\n isLoaded={isLoaded}\n className=\"iris-grid-panel\"\n glContainer={glContainer}\n glEventHub={glEventHub}\n onClearAllFilters={this.handleClearAllFilters}\n onShow={this.handleShow}\n onTabFocus={this.handleShow}\n onTabClicked={this.handleTabClicked}\n widgetName={name}\n widgetType=\"Table\"\n description={description}\n componentPanel={this}\n renderTabTooltip={() => (\n <IrisGridPanelTooltip\n model={model}\n widgetName={name}\n glContainer={glContainer}\n description={description}\n />\n )}\n >\n {isModelReady && model && (\n <IrisGrid\n advancedFilters={advancedFilters}\n aggregationSettings={aggregationSettings}\n advancedSettings={advancedSettings}\n alwaysFetchColumns={this.getAlwaysFetchColumns(\n links,\n pluginFetchColumns\n )}\n columnAllowedCursor=\"linker\"\n columnNotAllowedCursor=\"linker-not-allowed\"\n copyCursor=\"copy\"\n customColumns={customColumns}\n customColumnFormatMap={customColumnFormatMap}\n columnSelectionValidator={this.isColumnSelectionValid}\n conditionalFormats={conditionalFormats}\n inputFilters={this.getGridInputFilters(model.columns, inputFilters)}\n applyInputFiltersOnInit={panelState == null}\n isFilterBarShown={isFilterBarShown}\n isSelectingColumn={columnSelectionValidator != null}\n isSelectingPartition={isSelectingPartition}\n isStuckToBottom={isStuckToBottom}\n isStuckToRight={isStuckToRight}\n mouseHandlers={mouseHandlers}\n movedColumns={movedColumns}\n movedRows={movedRows}\n partitions={partitions}\n partitionConfig={partitionConfig}\n quickFilters={quickFilters}\n renderer={renderer}\n reverse={reverse}\n rollupConfig={rollupConfig}\n settings={settings}\n sorts={sorts}\n userColumnWidths={userColumnWidths}\n userRowHeights={userRowHeights}\n model={model}\n showSearchBar={showSearchBar}\n searchValue={searchValue}\n selectedSearchColumns={selectedSearchColumns}\n selectDistinctColumns={selectDistinctColumns}\n invertSearchColumns={invertSearchColumns}\n onColumnSelected={this.handleColumnSelected}\n onCreateChart={this.handleCreateChart}\n onDataSelected={this.handleDataSelected}\n onError={this.handleError}\n onStateChange={this.handleGridStateChange}\n onContextMenu={this.handleContextMenu}\n onAdvancedSettingsChange={this.handleAdvancedSettingsChange}\n customFilters={pluginFilters}\n pendingDataMap={pendingDataMap}\n canCopy={canCopy}\n canDownloadCsv={canDownloadCsv}\n ref={this.irisGrid}\n getDownloadWorker={getDownloadWorker}\n frozenColumns={frozenColumns}\n theme={theme}\n columnHeaderGroups={columnHeaderGroups}\n >\n {childrenContent}\n </IrisGrid>\n )}\n </WidgetPanel>\n );\n }\n}\n\nconst mapStateToProps = (\n state: RootState,\n { localDashboardId = DEFAULT_DASHBOARD_ID, glContainer }: OwnProps\n): StateProps => ({\n inputFilters: getInputFiltersForDashboard(state, localDashboardId),\n links: getLinksForDashboard(state, localDashboardId),\n columnSelectionValidator: getColumnSelectionValidatorForDashboard(\n state,\n localDashboardId\n ),\n user: getUser(state),\n settings: getSettings(state),\n});\n\nconst ConnectedIrisGridPanel = connect(mapStateToProps, null, null, {\n forwardRef: true,\n})(IrisGridPanel);\n\nexport default ConnectedIrisGridPanel;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"IrisGridPanel.js","names":["React","PureComponent","memoize","connect","debounce","DEFAULT_DASHBOARD_ID","LayoutUtils","AdvancedSettings","IrisGrid","IrisGridModel","IrisGridCacheUtils","IrisGridUtils","isIrisGridTableModelTemplate","Log","getSettings","getUser","assertNotNull","PromiseUtils","clamp","IrisGridEvent","getInputFiltersForDashboard","getLinksForDashboard","getColumnSelectionValidatorForDashboard","WidgetPanel","IrisGridPanelTooltip","isIrisGridPanelMetadata","isLegacyIrisGridPanelMetadata","emitFilterColumnsChanged","emitFilterTableChanged","emitLinkPointSelected","emitLinkSourceDataSelected","jsx","_jsx","log","module","DEBOUNCE_PANEL_STATE_UPDATE","getTableNameFromMetadata","metadata","Error","name","table","concat","JSON","stringify","IrisGridPanel","constructor","props","_defineProperty","makeMemoizedGridStateDehydrator","makeMemoizedIrisGridStateDehydrator","columns","inputFilters","getInputFiltersForColumns","filter","_ref","value","excludePanelIds","id","getIdFromPanel","includes","dashboardLinks","pluginFetchColumns","columnSet","Set","i","length","start","panelId","add","columnName","Plugin","model","pluginState","deprecatedProps","panel","className","children","_objectSpread","ref","pluginRef","handlePluginFilter","fetchColumns","handlePluginFetchColumns","onStateChange","handlePluginStateChange","isSelectingPartition","partitions","advancedSettings","dehydrateIrisGridPanelState","irisGridPanelState","irisGridState","gridState","onPanelStateUpdate","panelState","oldPanelState","state","irisGridUtils","getCachedPanelState","getDehydratedIrisGridPanelState","irisGridStateDehydrator","gridStateDehydrator","debug","setState","handleAdvancedSettingsChange","bind","handleColumnsChanged","handleTableChanged","handleColumnSelected","handleDataSelected","handleError","handleGridStateChange","handleCreateChart","handleShow","handleTabClicked","handleDisconnect","handleReconnect","handleLoadSuccess","handleLoadError","isColumnSelectionValid","handleContextMenu","handleClearAllFilters","irisGrid","createRef","error","isDisconnected","isLoaded","isLoading","isModelReady","undefined","advancedFilters","Map","aggregationSettings","aggregations","showOnTop","DEFAULTS","customColumns","customColumnFormatMap","isFilterBarShown","quickFilters","sorts","userColumnWidths","userRowHeights","reverse","movedColumns","movedRows","rollupConfig","showSearchBar","searchValue","selectedSearchColumns","invertSearchColumns","pluginFilters","modelQueue","pendingDataMap","frozenColumns","irisGridStateOverrides","gridStateOverrides","isStuckToBottom","isStuckToRight","conditionalFormats","selectDistinctColumns","componentDidMount","initModel","componentDidUpdate","prevProps","prevState","makeModel","stopModelListening","close","startModelListening","componentWillUnmount","savePanelState","cancel","modelPromise","getTableName","makeCancelable","resolved","then","catch","modelParam","dh","push","m","getModelRollupConfig","originalColumns","initModelQueue","modelInitialized","modelChange","shift","key","_ref2","get","set","filters","_this$irisGridUtils$g","_this$irisGridUtils","formatter","getFiltersFromInputFilters","timeZone","data","_this$pluginRef$curre","_this$pluginRef$curre2","_this$pluginRef$curre3","current","getMenu","call","tableColumn","columnSelectionValidator","type","glEventHub","emit","STATE_CHANGED","event","sendColumnsChange","detail","settings","flush","sourcePanelId","tableSettings","extractTableSettings","CREATE_CHART","column","row","dataMap","updateGrid","focus","isCanceled","loadPlugin","loadPanelState","pluginName","clearAllFilters","debug2","addEventListener","EVENT","DISCONNECT","RECONNECT","COLUMNS_CHANGED","TABLE_CHANGED","removeEventListener","getCoordinateForColumn","_gridWrapper$getBound","_allColumnXs$get","_allColumnWidths$get","gridWrapper","rect","getBoundingClientRect","width","height","metrics","columnHeaderHeight","allColumnXs","allColumnWidths","right","columnHeaderMaxDepth","columnIndex","getColumnIndexByName","visibleIndex","getVisibleColumn","columnX","columnWidth","x","left","y","top","setFilterMap","filterMap","setAdvancedFilterMap","setFilters","_ref3","indexedQuickFilters","changeFilterColumnNamesToIndexes","_ref4","isFilterable","indexedAdvancedFilters","_ref5","hydrateQuickFilters","hydrateAdvancedFilters","setStateOverrides","overrides","unsetFilterValue","originalIrisGridStateOverrides","savedQuickFilters","savedAdvancedFilters","hydrateIrisGridPanelState","columnHeaderGroups","partitionConfig","hydrateIrisGridState","hydrateGridState","_this$irisGrid$curren","_this$irisGrid$curren2","grid","handleResize","render","_model$description","_panelState$pluginSta","glContainer","getDownloadWorker","links","mouseHandlers","user","renderer","getMetricCalculator","theme","errorMessage","description","childrenContent","getPluginContent","permissions","canCopy","canDownloadCsv","onClearAllFilters","onShow","onTabFocus","onTabClicked","widgetName","widgetType","componentPanel","renderTabTooltip","alwaysFetchColumns","getAlwaysFetchColumns","columnAllowedCursor","columnNotAllowedCursor","copyCursor","getGridInputFilters","applyInputFiltersOnInit","isSelectingColumn","onColumnSelected","onCreateChart","onDataSelected","onError","onContextMenu","onAdvancedSettingsChange","customFilters","mapStateToProps","_ref6","localDashboardId","ConnectedIrisGridPanel","forwardRef"],"sources":["../../src/panels/IrisGridPanel.tsx"],"sourcesContent":["// Wrapper for the IrisGrid for use in a golden layout container\n// Will probably need to handle window popping out from golden layout here.\nimport React, {\n PureComponent,\n ReactElement,\n ReactNode,\n RefObject,\n} from 'react';\nimport memoize from 'memoize-one';\nimport { connect } from 'react-redux';\nimport debounce from 'lodash.debounce';\nimport {\n DashboardPanelProps,\n DEFAULT_DASHBOARD_ID,\n LayoutUtils,\n PanelComponent,\n PanelMetadata,\n} from '@deephaven/dashboard';\nimport {\n AdvancedSettings,\n IrisGrid,\n type IrisGridType,\n IrisGridModel,\n IrisGridCacheUtils,\n IrisGridUtils,\n isIrisGridTableModelTemplate,\n ColumnName,\n PendingDataMap,\n InputFilter,\n IrisGridThemeType,\n ReadonlyAdvancedFilterMap,\n AggregationSettings,\n AdvancedSettingsType,\n UIRollupConfig,\n UIRow,\n ReadonlyQuickFilterMap,\n FilterMap,\n QuickFilter,\n AdvancedFilter,\n SidebarFormattingRule,\n IrisGridState,\n ChartBuilderSettings,\n DehydratedIrisGridState,\n DehydratedIrisGridPanelState,\n ColumnHeaderGroup,\n IrisGridContextMenuData,\n PartitionConfig,\n IrisGridRenderer,\n MouseHandlersProp,\n GetMetricCalculatorType,\n} from '@deephaven/iris-grid';\nimport {\n type RowDataMap,\n type AdvancedFilterOptions,\n type FormattingRule,\n} from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport {\n getSettings,\n getUser,\n RootState,\n User,\n WorkspaceSettings,\n} from '@deephaven/redux';\nimport {\n assertNotNull,\n CancelablePromise,\n PromiseUtils,\n} from '@deephaven/utils';\nimport { ResolvableContextAction } from '@deephaven/components';\nimport type { dh } from '@deephaven/jsapi-types';\nimport {\n GridState,\n ModelIndex,\n ModelSizeMap,\n MoveOperation,\n} from '@deephaven/grid';\nimport type {\n TablePluginComponent,\n TablePluginElement,\n} from '@deephaven/plugin';\nimport clamp from 'lodash.clamp';\nimport { IrisGridEvent } from '../events';\nimport {\n getInputFiltersForDashboard,\n getLinksForDashboard,\n getColumnSelectionValidatorForDashboard,\n} from '../redux';\nimport WidgetPanel from './WidgetPanel';\nimport './IrisGridPanel.scss';\nimport {\n type Link,\n type LinkColumn,\n type LinkPointOptions,\n} from '../linker/LinkerUtils';\nimport IrisGridPanelTooltip from './IrisGridPanelTooltip';\nimport {\n isIrisGridPanelMetadata,\n isLegacyIrisGridPanelMetadata,\n} from './IrisGridPanelTypes';\nimport {\n emitFilterColumnsChanged,\n emitFilterTableChanged,\n} from '../FilterEvents';\nimport {\n emitLinkPointSelected,\n emitLinkSourceDataSelected,\n} from '../linker/LinkerEvent';\n\nconst log = Log.module('IrisGridPanel');\n\nconst DEBOUNCE_PANEL_STATE_UPDATE = 500;\n\ntype ModelQueueFunction = (model: IrisGridModel) => void;\n\ntype ModelQueue = ModelQueueFunction[];\n\nexport interface PanelState {\n gridState: {\n isStuckToBottom: boolean;\n isStuckToRight: boolean;\n movedColumns: readonly {\n from: string | ModelIndex | [string, string] | [ModelIndex, ModelIndex];\n to: string | ModelIndex;\n }[];\n movedRows: readonly MoveOperation[];\n };\n irisGridState: DehydratedIrisGridState;\n irisGridPanelState: DehydratedIrisGridPanelState;\n pluginState: unknown;\n}\n\n// Some of the properties in the loaded panel state may be omitted\n// even though they can't be undefined in the dehydrated state.\n// This can happen when loading the state saved before the properties were added.\ntype LoadedPanelState = PanelState & {\n irisGridPanelState: PanelState['irisGridPanelState'] & {\n partitions?: (string | null)[];\n partition?: string | null;\n };\n};\n\nexport interface OwnProps extends DashboardPanelProps {\n children?: ReactNode;\n panelState?: LoadedPanelState | null;\n makeModel: () => IrisGridModel | Promise<IrisGridModel>;\n\n onStateChange?: (irisGridState: IrisGridState, gridState: GridState) => void;\n onPanelStateUpdate?: (panelState: PanelState) => void;\n\n /** Override the default worker used by IrisGrid to download CSVs. */\n getDownloadWorker?: () => Promise<ServiceWorker>;\n\n /** Load a plugin defined by the table */\n loadPlugin: (pluginName: string) => TablePluginComponent;\n\n theme?: Partial<IrisGridThemeType> & Record<string, unknown>;\n\n mouseHandlers?: MouseHandlersProp;\n\n renderer?: IrisGridRenderer;\n\n getMetricCalculator?: GetMetricCalculatorType;\n}\n\ninterface StateProps {\n inputFilters: InputFilter[];\n links: Link[];\n columnSelectionValidator?: (\n panel: PanelComponent,\n tableColumn: LinkColumn,\n options: LinkPointOptions\n ) => boolean;\n user: User;\n settings: WorkspaceSettings;\n}\n\ninterface IrisGridPanelState {\n error: unknown;\n isDisconnected: boolean;\n isLoaded: boolean;\n isLoading: boolean;\n isModelReady: boolean;\n model?: IrisGridModel;\n\n isStuckToBottom: boolean;\n isStuckToRight: boolean;\n\n // State is hydrated from panel state when table is loaded\n conditionalFormats: readonly SidebarFormattingRule[];\n selectDistinctColumns: readonly ColumnName[];\n advancedFilters: ReadonlyAdvancedFilterMap;\n aggregationSettings: AggregationSettings;\n advancedSettings: Map<AdvancedSettingsType, boolean>;\n customColumns: readonly ColumnName[];\n customColumnFormatMap: Map<string, FormattingRule>;\n isFilterBarShown: boolean;\n quickFilters: ReadonlyQuickFilterMap;\n sorts: readonly dh.Sort[];\n userColumnWidths: ModelSizeMap;\n userRowHeights: ModelSizeMap;\n reverse: boolean;\n movedColumns: readonly MoveOperation[];\n movedRows: readonly MoveOperation[];\n isSelectingPartition: boolean;\n partitions: (string | null)[];\n partitionConfig?: PartitionConfig;\n rollupConfig?: UIRollupConfig;\n showSearchBar: boolean;\n searchValue: string;\n selectedSearchColumns?: readonly string[];\n invertSearchColumns: boolean;\n Plugin?: TablePluginComponent;\n pluginFilters: readonly dh.FilterCondition[];\n pluginFetchColumns: readonly string[];\n modelQueue: ModelQueue;\n pendingDataMap?: PendingDataMap<UIRow>;\n frozenColumns?: readonly ColumnName[];\n columnHeaderGroups?: readonly ColumnHeaderGroup[];\n\n // eslint-disable-next-line react/no-unused-state\n panelState?: PanelState | null; // Dehydrated panel state that can load this panel\n irisGridStateOverrides: Partial<DehydratedIrisGridState>;\n gridStateOverrides: Partial<GridState>;\n}\n\nfunction getTableNameFromMetadata(\n metadata: PanelMetadata | null | undefined\n): string {\n if (metadata == null) {\n throw new Error('No metadata provided');\n }\n if (isIrisGridPanelMetadata(metadata)) {\n return metadata.name;\n }\n if (isLegacyIrisGridPanelMetadata(metadata)) {\n return metadata.table;\n }\n\n throw new Error(\n `Unable to determine table name from metadata: ${JSON.stringify(metadata)}`\n );\n}\n\nexport type IrisGridPanelProps = OwnProps & StateProps;\n\nexport class IrisGridPanel extends PureComponent<\n IrisGridPanelProps,\n IrisGridPanelState\n> {\n static defaultProps = {\n onStateChange: (): void => undefined,\n onPanelStateUpdate: (): void => undefined,\n };\n\n static displayName = 'IrisGridPanel';\n\n static COMPONENT = 'IrisGridPanel';\n\n constructor(props: IrisGridPanelProps) {\n super(props);\n\n this.handleAdvancedSettingsChange =\n this.handleAdvancedSettingsChange.bind(this);\n this.handleColumnsChanged = this.handleColumnsChanged.bind(this);\n this.handleTableChanged = this.handleTableChanged.bind(this);\n this.handleColumnSelected = this.handleColumnSelected.bind(this);\n this.handleDataSelected = this.handleDataSelected.bind(this);\n this.handleError = this.handleError.bind(this);\n this.handleGridStateChange = this.handleGridStateChange.bind(this);\n this.handlePluginStateChange = this.handlePluginStateChange.bind(this);\n this.handleCreateChart = this.handleCreateChart.bind(this);\n this.handleShow = this.handleShow.bind(this);\n this.handleTabClicked = this.handleTabClicked.bind(this);\n this.handleDisconnect = this.handleDisconnect.bind(this);\n this.handleReconnect = this.handleReconnect.bind(this);\n this.handleLoadSuccess = this.handleLoadSuccess.bind(this);\n this.handleLoadError = this.handleLoadError.bind(this);\n this.isColumnSelectionValid = this.isColumnSelectionValid.bind(this);\n this.handleContextMenu = this.handleContextMenu.bind(this);\n this.handlePluginFilter = this.handlePluginFilter.bind(this);\n this.handlePluginFetchColumns = this.handlePluginFetchColumns.bind(this);\n this.handleClearAllFilters = this.handleClearAllFilters.bind(this);\n\n this.irisGrid = React.createRef();\n this.pluginRef = React.createRef();\n\n const { panelState } = props;\n\n this.pluginState = null;\n this.irisGridUtils = null;\n\n this.state = {\n error: null,\n isDisconnected: false,\n isLoaded: false,\n isLoading: true,\n isModelReady: false,\n model: undefined,\n\n // State is hydrated from panel state when table is loaded\n advancedFilters: new Map(),\n aggregationSettings: { aggregations: [], showOnTop: false },\n advancedSettings: new Map(AdvancedSettings.DEFAULTS),\n customColumns: [],\n customColumnFormatMap: new Map(),\n isFilterBarShown: false,\n quickFilters: new Map(),\n sorts: [],\n userColumnWidths: new Map(),\n userRowHeights: new Map(),\n reverse: false,\n movedColumns: [],\n movedRows: [],\n isSelectingPartition: false,\n partitions: [],\n rollupConfig: undefined,\n showSearchBar: false,\n searchValue: '',\n selectedSearchColumns: undefined,\n invertSearchColumns: true,\n Plugin: undefined,\n pluginFilters: [],\n pluginFetchColumns: [],\n modelQueue: [],\n pendingDataMap: new Map(),\n frozenColumns: undefined,\n\n // eslint-disable-next-line react/no-unused-state\n panelState, // Dehydrated panel state that can load this panel\n irisGridStateOverrides: {},\n gridStateOverrides: {},\n isStuckToBottom: false,\n isStuckToRight: false,\n conditionalFormats: [],\n selectDistinctColumns: [],\n };\n }\n\n componentDidMount(): void {\n this.initModel();\n }\n\n componentDidUpdate(\n prevProps: IrisGridPanelProps,\n prevState: IrisGridPanelState\n ): void {\n const { model } = this.state;\n const { makeModel } = this.props;\n if (model !== prevState.model) {\n if (prevState.model != null) {\n this.stopModelListening(prevState.model);\n prevState.model.close();\n }\n if (model != null) {\n this.startModelListening(model);\n }\n }\n\n if (makeModel !== prevProps.makeModel) {\n this.initModel();\n }\n }\n\n componentWillUnmount(): void {\n this.savePanelState.cancel();\n\n if (this.modelPromise != null) {\n this.modelPromise.cancel();\n this.modelPromise = undefined;\n }\n\n const { model } = this.state;\n if (model) {\n this.stopModelListening(model);\n model.close();\n }\n }\n\n irisGrid: RefObject<IrisGridType>;\n\n pluginRef: RefObject<TablePluginElement>;\n\n modelPromise?: CancelablePromise<IrisGridModel>;\n\n irisGridState?: IrisGridState;\n\n gridState?: GridState;\n\n pluginState: unknown;\n\n private irisGridUtils: IrisGridUtils | null;\n\n private gridStateDehydrator =\n IrisGridCacheUtils.makeMemoizedGridStateDehydrator();\n\n private irisGridStateDehydrator =\n IrisGridCacheUtils.makeMemoizedIrisGridStateDehydrator();\n\n getTableName(): string {\n const { metadata } = this.props;\n return getTableNameFromMetadata(metadata);\n }\n\n getGridInputFilters = memoize(\n (columns: readonly dh.Column[], inputFilters: readonly InputFilter[]) =>\n IrisGridUtils.getInputFiltersForColumns(\n columns,\n // They may have picked a column, but not actually entered a value yet. In that case, don't need to update.\n inputFilters.filter(({ value, excludePanelIds }) => {\n const id = LayoutUtils.getIdFromPanel(this);\n return (\n value != null &&\n (excludePanelIds == null ||\n (id != null && !excludePanelIds.includes(id)))\n );\n })\n )\n );\n\n getAlwaysFetchColumns = memoize(\n (\n dashboardLinks: readonly Link[],\n pluginFetchColumns: readonly string[]\n ): string[] => {\n const id = LayoutUtils.getIdFromPanel(this);\n // Always fetch columns which are the start/source of a link or columns specified by a plugin\n const columnSet = new Set(pluginFetchColumns);\n for (let i = 0; i < dashboardLinks.length; i += 1) {\n const { start } = dashboardLinks[i];\n if (start != null && start.panelId === id) {\n columnSet.add(start.columnName);\n }\n }\n return [...columnSet];\n }\n );\n\n getPluginContent = memoize(\n (\n Plugin: TablePluginComponent | undefined,\n model: IrisGridModel | undefined,\n pluginState: unknown\n ) => {\n if (\n !model ||\n !isIrisGridTableModelTemplate(model) ||\n Plugin == null ||\n model.table == null\n ) {\n return null;\n }\n\n // TODO #2093: Find a better way to handle deprecated panel prop\n const deprecatedProps = {\n panel: this,\n };\n\n return (\n <div className=\"iris-grid-plugin\">\n <Plugin\n ref={this.pluginRef}\n filter={this.handlePluginFilter}\n fetchColumns={this.handlePluginFetchColumns}\n model={model}\n table={model.table}\n onStateChange={this.handlePluginStateChange}\n pluginState={pluginState}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...deprecatedProps}\n />\n </div>\n );\n }\n );\n\n getDehydratedIrisGridPanelState = memoize(\n (\n model: IrisGridModel,\n isSelectingPartition: boolean,\n partitions: (string | null)[],\n advancedSettings: Map<AdvancedSettingsType, boolean>\n ) =>\n IrisGridUtils.dehydrateIrisGridPanelState(model, {\n isSelectingPartition,\n partitions,\n advancedSettings,\n })\n );\n\n getCachedPanelState = memoize(\n (\n irisGridPanelState: PanelState['irisGridPanelState'],\n irisGridState: PanelState['irisGridState'],\n gridState: PanelState['gridState'],\n pluginState: PanelState['pluginState']\n ): PanelState => ({\n irisGridPanelState,\n irisGridState,\n gridState,\n pluginState,\n })\n );\n\n initModel(): void {\n this.setState({ isModelReady: false, isLoading: true, error: null });\n const { makeModel } = this.props;\n if (this.modelPromise != null) {\n this.modelPromise.cancel();\n }\n this.modelPromise = PromiseUtils.makeCancelable(makeModel(), resolved =>\n resolved.close()\n );\n this.modelPromise.then(this.handleLoadSuccess).catch(this.handleLoadError);\n }\n\n handleLoadSuccess(modelParam: IrisGridModel): void {\n const model = modelParam;\n const { panelState, irisGridStateOverrides } = this.state;\n const modelQueue: ((m: IrisGridModel) => void)[] = [];\n this.irisGridUtils = new IrisGridUtils(model.dh);\n if (panelState != null) {\n const { irisGridState } = panelState;\n const {\n aggregationSettings,\n customColumns,\n selectDistinctColumns = [],\n rollupConfig,\n } = { ...irisGridState, ...irisGridStateOverrides };\n\n if (customColumns.length > 0) {\n modelQueue.push(m => {\n // eslint-disable-next-line no-param-reassign\n m.customColumns = customColumns;\n });\n }\n\n if (rollupConfig != null && rollupConfig.columns.length > 0) {\n // originalColumns might change by the time this model queue item is applied.\n // Instead of pushing a static object, push the function\n // that calculates the config based on the updated model state.\n modelQueue.push(m => {\n // eslint-disable-next-line no-param-reassign\n m.rollupConfig = IrisGridUtils.getModelRollupConfig(\n m.originalColumns,\n rollupConfig,\n aggregationSettings\n );\n });\n }\n\n if (selectDistinctColumns.length > 0) {\n modelQueue.push(m => {\n // eslint-disable-next-line no-param-reassign\n m.selectDistinctColumns = selectDistinctColumns;\n });\n }\n }\n\n this.setState({ model, modelQueue });\n this.initModelQueue(model, modelQueue);\n }\n\n initModelQueue(modelParam: IrisGridModel, modelQueue: ModelQueue): void {\n const model = modelParam;\n if (modelQueue.length === 0) {\n this.modelInitialized(model);\n return;\n }\n const modelChange = modelQueue.shift();\n log.debug('initModelQueue', modelChange);\n // Apply next model change. Triggers columnschanged event.\n if (modelChange) {\n modelChange(model);\n }\n this.setState({ modelQueue });\n }\n\n handleAdvancedSettingsChange(\n key: AdvancedSettingsType,\n value: boolean\n ): void {\n log.debug('handleAdvancedSettingsChange', key, value);\n this.setState(({ advancedSettings }) =>\n advancedSettings.get(key) === value\n ? null\n : { advancedSettings: new Map(advancedSettings).set(key, value) }\n );\n }\n\n handlePluginFilter(filters: InputFilter[]): void {\n const { model } = this.state;\n assertNotNull(model);\n const { columns, formatter } = model;\n const pluginFilters =\n this.irisGridUtils?.getFiltersFromInputFilters(\n columns,\n filters,\n formatter.timeZone\n ) ?? [];\n this.setState({ pluginFilters });\n }\n\n handlePluginFetchColumns(pluginFetchColumns: string[]): void {\n this.setState({ pluginFetchColumns });\n }\n\n handleContextMenu(data: IrisGridContextMenuData): ResolvableContextAction[] {\n return this.pluginRef.current?.getMenu?.(data) ?? [];\n }\n\n isColumnSelectionValid(tableColumn: dh.Column | null): boolean {\n const { columnSelectionValidator } = this.props;\n if (columnSelectionValidator && tableColumn) {\n return columnSelectionValidator(this, tableColumn, {\n type: 'tableLink',\n });\n }\n return false;\n }\n\n handleGridStateChange(\n irisGridState: IrisGridState,\n gridState: GridState\n ): void {\n this.irisGridState = irisGridState;\n this.gridState = gridState;\n\n // Grid sends it's first state change after it's finished loading\n this.setState({ isLoaded: true, isLoading: false });\n\n this.savePanelState();\n\n const { glEventHub, onStateChange } = this.props;\n glEventHub.emit(IrisGridEvent.STATE_CHANGED, this);\n onStateChange?.(irisGridState, gridState);\n }\n\n handlePluginStateChange(pluginState: unknown): void {\n const { irisGridState, gridState } = this;\n this.pluginState = pluginState;\n // Do not save if there is null state\n // The save will happen when the grid loads\n if (irisGridState !== null && gridState !== null) {\n this.savePanelState();\n }\n }\n\n handleColumnsChanged(event: Event): void {\n const { isModelReady, model, modelQueue } = this.state;\n if (isModelReady) {\n this.sendColumnsChange((event as CustomEvent).detail);\n } else {\n assertNotNull(model);\n this.initModelQueue(model, modelQueue);\n }\n }\n\n handleTableChanged(event: Event): void {\n log.debug('handleTableChanged', event);\n const { glEventHub } = this.props;\n const { detail: table } = event as CustomEvent;\n const panelId = LayoutUtils.getIdFromPanel(this);\n assertNotNull(panelId);\n emitFilterTableChanged(glEventHub, panelId, table);\n }\n\n /**\n * Create a chart with the specified settings\n * @param settings The settings from the chart builder\n * @param settings.type The settings from the chart builder\n * @param settings.series The names of the series\n * @param model The IrisGridModel object\n */\n handleCreateChart(\n settings: ChartBuilderSettings,\n model: IrisGridModel\n ): void {\n // Panel state is stored with the created chart, so flush it first\n this.savePanelState.flush();\n\n this.setState(\n () => null,\n () => {\n const { glEventHub, inputFilters } = this.props;\n const table = this.getTableName();\n const { panelState } = this.state;\n const sourcePanelId = LayoutUtils.getIdFromPanel(this);\n let tableSettings;\n\n if (panelState) {\n tableSettings = IrisGridUtils.extractTableSettings(\n panelState,\n inputFilters\n );\n }\n glEventHub.emit(IrisGridEvent.CREATE_CHART, {\n metadata: {\n settings,\n sourcePanelId,\n table,\n tableSettings,\n },\n table: isIrisGridTableModelTemplate(model) ? model.table : undefined,\n });\n }\n );\n }\n\n handleColumnSelected(column: dh.Column): void {\n const { glEventHub } = this.props;\n const panelId = LayoutUtils.getIdFromPanel(this);\n assertNotNull(panelId);\n emitLinkPointSelected(glEventHub, panelId, column, { type: 'tableLink' });\n }\n\n handleDataSelected(row: ModelIndex, dataMap: RowDataMap): void {\n const { glEventHub } = this.props;\n const panelId = LayoutUtils.getIdFromPanel(this);\n assertNotNull(panelId);\n emitLinkSourceDataSelected(glEventHub, panelId, dataMap);\n }\n\n handleShow(): void {\n this.updateGrid();\n }\n\n handleTabClicked(): void {\n if (this.irisGrid.current) {\n this.irisGrid.current.focus();\n }\n }\n\n handleError(error: unknown): void {\n log.error(error);\n this.setState({ error, isLoading: false });\n }\n\n handleDisconnect(): void {\n this.setState({\n error: new Error('Table disconnected'),\n isDisconnected: true,\n isLoading: false,\n });\n }\n\n handleReconnect(): void {\n this.setState({ isDisconnected: false, error: null });\n }\n\n handleLoadError(error: unknown): void {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n\n this.handleError(error);\n }\n\n modelInitialized(model: IrisGridModel): void {\n const { glEventHub, loadPlugin } = this.props;\n\n this.modelPromise = undefined;\n\n // Custom columns at this point already initialized, can load state\n this.loadPanelState(model);\n\n this.setState({ isModelReady: true });\n\n if (isIrisGridTableModelTemplate(model)) {\n const { table } = model;\n const { pluginName } = table;\n\n if (pluginName !== '') {\n if (loadPlugin != null && pluginName != null) {\n const Plugin = loadPlugin(pluginName);\n this.setState({ Plugin });\n }\n }\n const panelId = LayoutUtils.getIdFromPanel(this);\n assertNotNull(panelId);\n emitFilterTableChanged(glEventHub, panelId, table);\n }\n\n this.sendColumnsChange(model.columns);\n }\n\n handleClearAllFilters(): void {\n const irisGrid = this.irisGrid.current;\n const { isDisconnected } = this.state;\n if (irisGrid != null && !isDisconnected) {\n irisGrid.clearAllFilters();\n }\n }\n\n sendColumnsChange(columns: readonly dh.Column[]): void {\n log.debug2('sendColumnsChange', columns);\n const { glEventHub } = this.props;\n const panelId = LayoutUtils.getIdFromPanel(this);\n assertNotNull(panelId);\n emitFilterColumnsChanged(glEventHub, panelId, columns);\n }\n\n startModelListening(model: IrisGridModel): void {\n model.addEventListener(\n IrisGridModel.EVENT.DISCONNECT,\n this.handleDisconnect\n );\n model.addEventListener(IrisGridModel.EVENT.RECONNECT, this.handleReconnect);\n model.addEventListener(\n IrisGridModel.EVENT.COLUMNS_CHANGED,\n this.handleColumnsChanged\n );\n model.addEventListener(\n IrisGridModel.EVENT.TABLE_CHANGED,\n this.handleTableChanged\n );\n }\n\n stopModelListening(model: IrisGridModel): void {\n model.removeEventListener(\n IrisGridModel.EVENT.DISCONNECT,\n this.handleDisconnect\n );\n model.removeEventListener(\n IrisGridModel.EVENT.RECONNECT,\n this.handleReconnect\n );\n model.removeEventListener(\n IrisGridModel.EVENT.COLUMNS_CHANGED,\n this.handleColumnsChanged\n );\n model.removeEventListener(\n IrisGridModel.EVENT.TABLE_CHANGED,\n this.handleTableChanged\n );\n }\n\n getCoordinateForColumn(columnName: ColumnName): [number, number] | null {\n const { model } = this.state;\n if (!model) {\n return null;\n }\n\n const irisGrid = this.irisGrid.current;\n const { gridWrapper } = irisGrid || {};\n const rect = gridWrapper?.getBoundingClientRect() ?? null;\n if (rect == null || rect.width <= 0 || rect.height <= 0) {\n return null;\n }\n assertNotNull(irisGrid);\n const { metrics } = irisGrid.state;\n assertNotNull(metrics);\n const {\n columnHeaderHeight,\n allColumnXs,\n allColumnWidths,\n right,\n columnHeaderMaxDepth,\n } = metrics;\n const columnIndex = model.getColumnIndexByName(columnName);\n assertNotNull(columnIndex);\n const visibleIndex = irisGrid.getVisibleColumn(columnIndex);\n const columnX = allColumnXs.get(visibleIndex) ?? 0;\n const columnWidth = allColumnWidths.get(visibleIndex) ?? 0;\n\n const x = clamp(\n visibleIndex > right\n ? rect.right\n : rect.left + columnX + columnWidth * 0.5,\n rect.left,\n rect.right\n );\n const y = rect.top + columnHeaderHeight * columnHeaderMaxDepth;\n\n return [x, y];\n }\n\n setFilterMap(filterMap: FilterMap): void {\n const irisGrid = this.irisGrid.current;\n if (irisGrid != null) {\n irisGrid.setFilterMap(filterMap);\n }\n }\n\n setAdvancedFilterMap(filterMap: ReadonlyAdvancedFilterMap): void {\n const irisGrid = this.irisGrid.current;\n if (irisGrid != null) {\n irisGrid.setAdvancedFilterMap(filterMap);\n }\n }\n\n setFilters({\n quickFilters,\n advancedFilters,\n }: {\n quickFilters: { name: ColumnName; filter: QuickFilter }[];\n advancedFilters: { name: ColumnName; filter: AdvancedFilter }[];\n }): void {\n log.debug('setFilters', quickFilters, advancedFilters);\n const { model, isDisconnected } = this.state;\n const irisGrid = this.irisGrid.current;\n if (irisGrid == null || isDisconnected) {\n log.debug('Ignore setFilters, model disconnected');\n return;\n }\n assertNotNull(model);\n const { columns, formatter } = model;\n const indexedQuickFilters = IrisGridUtils.changeFilterColumnNamesToIndexes(\n model.columns,\n quickFilters\n ).filter(([columnIndex]) => model.isFilterable(columnIndex));\n const indexedAdvancedFilters =\n IrisGridUtils.changeFilterColumnNamesToIndexes(\n model.columns,\n advancedFilters\n ).filter(([columnIndex]) => model.isFilterable(columnIndex));\n assertNotNull(this.irisGridUtils);\n irisGrid.clearAllFilters();\n irisGrid.setFilters({\n quickFilters: this.irisGridUtils.hydrateQuickFilters(\n columns,\n indexedQuickFilters,\n formatter.timeZone\n ),\n advancedFilters: this.irisGridUtils.hydrateAdvancedFilters(\n columns,\n indexedAdvancedFilters,\n formatter.timeZone\n ),\n });\n }\n\n setStateOverrides(overrides: {\n irisGridState: Partial<DehydratedIrisGridState>;\n gridState: Partial<GridState>;\n }): void {\n log.debug('setStateOverrides', overrides);\n const {\n irisGridState: irisGridStateOverrides,\n gridState: gridStateOverrides,\n } = overrides;\n this.setState({ irisGridStateOverrides, gridStateOverrides }, () => {\n this.initModel();\n });\n }\n\n // eslint-disable-next-line class-methods-use-this\n unsetFilterValue(): void {\n // IrisGridPanel retains the set value after the link is broken\n // We need to define this so LinkerUtils#isLinkablePanel passes the check\n }\n\n loadPanelState(model: IrisGridModel): void {\n const {\n panelState,\n irisGridStateOverrides: originalIrisGridStateOverrides,\n gridStateOverrides,\n } = this.state;\n if (panelState == null) {\n return;\n }\n\n try {\n const { gridState, irisGridState, irisGridPanelState } = panelState;\n const irisGridStateOverrides = { ...originalIrisGridStateOverrides };\n const {\n quickFilters: savedQuickFilters,\n advancedFilters: savedAdvancedFilters,\n } = irisGridStateOverrides;\n if (savedQuickFilters) {\n irisGridStateOverrides.quickFilters =\n IrisGridUtils.changeFilterColumnNamesToIndexes(\n model.columns,\n savedQuickFilters as unknown as {\n name: string;\n filter: {\n text: string;\n };\n }[]\n );\n }\n if (savedAdvancedFilters) {\n irisGridStateOverrides.advancedFilters =\n IrisGridUtils.changeFilterColumnNamesToIndexes(\n model.columns,\n savedAdvancedFilters as unknown as {\n name: string;\n filter: { options: AdvancedFilterOptions };\n }[]\n );\n }\n const { isSelectingPartition, partitions, advancedSettings } =\n IrisGridUtils.hydrateIrisGridPanelState(model, irisGridPanelState);\n assertNotNull(this.irisGridUtils);\n const {\n advancedFilters,\n customColumns,\n customColumnFormatMap,\n isFilterBarShown,\n quickFilters,\n reverse,\n rollupConfig,\n aggregationSettings,\n sorts,\n // TODO:\n // DH-20403: IrisGrid should persist user column widths when the model initializes with a partial column list\n userColumnWidths,\n userRowHeights,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n invertSearchColumns,\n pendingDataMap,\n frozenColumns,\n conditionalFormats,\n columnHeaderGroups,\n partitionConfig,\n } = this.irisGridUtils.hydrateIrisGridState(model, {\n ...irisGridState,\n ...irisGridStateOverrides,\n });\n const { isStuckToBottom, isStuckToRight, movedColumns, movedRows } =\n IrisGridUtils.hydrateGridState(\n model,\n { ...gridState, ...gridStateOverrides },\n irisGridState.customColumns\n );\n this.setState({\n advancedFilters,\n advancedSettings,\n conditionalFormats,\n customColumns,\n customColumnFormatMap,\n isFilterBarShown,\n isSelectingPartition,\n movedColumns,\n movedRows,\n partitions,\n quickFilters,\n reverse,\n rollupConfig,\n aggregationSettings,\n sorts,\n userColumnWidths,\n userRowHeights,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n invertSearchColumns,\n pendingDataMap,\n frozenColumns,\n isStuckToBottom,\n isStuckToRight,\n columnHeaderGroups,\n partitionConfig,\n });\n } catch (error) {\n log.error('loadPanelState failed to load panelState', panelState, error);\n }\n }\n\n savePanelState = debounce(() => {\n const { irisGridState, gridState, pluginState } = this;\n assertNotNull(irisGridState);\n const { onPanelStateUpdate } = this.props;\n const {\n model,\n panelState: oldPanelState,\n isSelectingPartition,\n partitions,\n advancedSettings,\n } = this.state;\n assertNotNull(this.irisGridUtils);\n assertNotNull(model);\n assertNotNull(gridState);\n\n const panelState = this.getCachedPanelState(\n this.getDehydratedIrisGridPanelState(\n model,\n isSelectingPartition,\n partitions,\n advancedSettings\n ),\n this.irisGridStateDehydrator(model, irisGridState),\n this.gridStateDehydrator(model, gridState),\n pluginState\n );\n\n if (panelState !== oldPanelState) {\n log.debug('Saving panel state', this, panelState);\n\n this.setState({ panelState });\n onPanelStateUpdate?.(panelState);\n }\n }, DEBOUNCE_PANEL_STATE_UPDATE);\n\n updateGrid(): void {\n const grid = this.irisGrid.current?.grid ?? null;\n if (!grid) return;\n\n // handle resize will verify state and draw and update\n grid.handleResize();\n }\n\n render(): ReactElement {\n const {\n children,\n glContainer,\n glEventHub,\n columnSelectionValidator,\n getDownloadWorker,\n inputFilters,\n links,\n metadata,\n mouseHandlers,\n panelState,\n user,\n renderer,\n settings,\n getMetricCalculator,\n theme,\n } = this.props;\n const {\n advancedFilters,\n aggregationSettings,\n advancedSettings,\n conditionalFormats,\n customColumns,\n customColumnFormatMap,\n error,\n isDisconnected,\n isFilterBarShown,\n isSelectingPartition,\n isStuckToBottom,\n isStuckToRight,\n isLoaded,\n isLoading,\n isModelReady,\n model,\n movedColumns,\n movedRows,\n partitions,\n partitionConfig,\n quickFilters,\n reverse,\n rollupConfig,\n sorts,\n userColumnWidths,\n userRowHeights,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n invertSearchColumns,\n Plugin,\n pluginFilters,\n pluginFetchColumns,\n pendingDataMap,\n frozenColumns,\n columnHeaderGroups,\n } = this.state;\n const errorMessage =\n error != null ? `Unable to open table. ${error}` : undefined;\n const name = getTableNameFromMetadata(metadata);\n const description = model?.description ?? undefined;\n const pluginState = panelState?.pluginState ?? null;\n const childrenContent =\n children ?? this.getPluginContent(Plugin, model, pluginState);\n const { permissions } = user;\n const { canCopy, canDownloadCsv } = permissions;\n\n return (\n <WidgetPanel\n errorMessage={errorMessage}\n isDisconnected={isDisconnected}\n isLoading={isLoading}\n isLoaded={isLoaded}\n className=\"iris-grid-panel\"\n glContainer={glContainer}\n glEventHub={glEventHub}\n onClearAllFilters={this.handleClearAllFilters}\n onShow={this.handleShow}\n onTabFocus={this.handleShow}\n onTabClicked={this.handleTabClicked}\n widgetName={name}\n widgetType=\"Table\"\n description={description}\n componentPanel={this}\n renderTabTooltip={() => (\n <IrisGridPanelTooltip\n model={model}\n widgetName={name}\n glContainer={glContainer}\n description={description}\n />\n )}\n >\n {isModelReady && model && (\n <IrisGrid\n advancedFilters={advancedFilters}\n aggregationSettings={aggregationSettings}\n advancedSettings={advancedSettings}\n alwaysFetchColumns={this.getAlwaysFetchColumns(\n links,\n pluginFetchColumns\n )}\n columnAllowedCursor=\"linker\"\n columnNotAllowedCursor=\"linker-not-allowed\"\n copyCursor=\"copy\"\n customColumns={customColumns}\n customColumnFormatMap={customColumnFormatMap}\n columnSelectionValidator={this.isColumnSelectionValid}\n conditionalFormats={conditionalFormats}\n inputFilters={this.getGridInputFilters(model.columns, inputFilters)}\n applyInputFiltersOnInit={panelState == null}\n isFilterBarShown={isFilterBarShown}\n isSelectingColumn={columnSelectionValidator != null}\n isSelectingPartition={isSelectingPartition}\n isStuckToBottom={isStuckToBottom}\n isStuckToRight={isStuckToRight}\n mouseHandlers={mouseHandlers}\n movedColumns={movedColumns}\n movedRows={movedRows}\n partitions={partitions}\n partitionConfig={partitionConfig}\n quickFilters={quickFilters}\n renderer={renderer}\n reverse={reverse}\n rollupConfig={rollupConfig}\n settings={settings}\n sorts={sorts}\n userColumnWidths={userColumnWidths}\n userRowHeights={userRowHeights}\n model={model}\n showSearchBar={showSearchBar}\n searchValue={searchValue}\n selectedSearchColumns={selectedSearchColumns}\n selectDistinctColumns={selectDistinctColumns}\n invertSearchColumns={invertSearchColumns}\n onColumnSelected={this.handleColumnSelected}\n onCreateChart={this.handleCreateChart}\n onDataSelected={this.handleDataSelected}\n onError={this.handleError}\n onStateChange={this.handleGridStateChange}\n onContextMenu={this.handleContextMenu}\n onAdvancedSettingsChange={this.handleAdvancedSettingsChange}\n customFilters={pluginFilters}\n pendingDataMap={pendingDataMap}\n canCopy={canCopy}\n canDownloadCsv={canDownloadCsv}\n ref={this.irisGrid}\n getDownloadWorker={getDownloadWorker}\n frozenColumns={frozenColumns}\n theme={theme}\n columnHeaderGroups={columnHeaderGroups}\n getMetricCalculator={getMetricCalculator}\n >\n {childrenContent}\n </IrisGrid>\n )}\n </WidgetPanel>\n );\n }\n}\n\nconst mapStateToProps = (\n state: RootState,\n { localDashboardId = DEFAULT_DASHBOARD_ID, glContainer }: OwnProps\n): StateProps => ({\n inputFilters: getInputFiltersForDashboard(state, localDashboardId),\n links: getLinksForDashboard(state, localDashboardId),\n columnSelectionValidator: getColumnSelectionValidatorForDashboard(\n state,\n localDashboardId\n ),\n user: getUser(state),\n settings: getSettings(state),\n});\n\nconst ConnectedIrisGridPanel = connect(mapStateToProps, null, null, {\n forwardRef: true,\n})(IrisGridPanel);\n\nexport default ConnectedIrisGridPanel;\n"],"mappings":";;;;;AAAA;AACA;AACA,OAAOA,KAAK,IACVC,aAAa,QAIR,OAAO;AACd,OAAOC,OAAO,MAAM,aAAa;AACjC,SAASC,OAAO,QAAQ,aAAa;AACrC,OAAOC,QAAQ,MAAM,iBAAiB;AACtC,SAEEC,oBAAoB,EACpBC,WAAW,QAGN,sBAAsB;AAC7B,SACEC,gBAAgB,EAChBC,QAAQ,EAERC,aAAa,EACbC,kBAAkB,EAClBC,aAAa,EACbC,4BAA4B,QAyBvB,sBAAsB;AAM7B,OAAOC,GAAG,MAAM,gBAAgB;AAChC,SACEC,WAAW,EACXC,OAAO,QAIF,kBAAkB;AACzB,SACEC,aAAa,EAEbC,YAAY,QACP,kBAAkB;AAazB,OAAOC,KAAK,MAAM,cAAc;AAAC,SACxBC,aAAa;AAAA,SAEpBC,2BAA2B,EAC3BC,oBAAoB,EACpBC,uCAAuC;AAAA,OAElCC,WAAW;AAAA;AAAA,OAOXC,oBAAoB;AAAA,SAEzBC,uBAAuB,EACvBC,6BAA6B;AAAA,SAG7BC,wBAAwB,EACxBC,sBAAsB;AAAA,SAGtBC,qBAAqB,EACrBC,0BAA0B;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAG5B,IAAMC,GAAG,GAAGpB,GAAG,CAACqB,MAAM,CAAC,eAAe,CAAC;AAEvC,IAAMC,2BAA2B,GAAG,GAAG;;AAqBvC;AACA;AACA;AA4FA,SAASC,wBAAwBA,CAC/BC,QAA0C,EAClC;EACR,IAAIA,QAAQ,IAAI,IAAI,EAAE;IACpB,MAAM,IAAIC,KAAK,CAAC,sBAAsB,CAAC;EACzC;EACA,IAAIb,uBAAuB,CAACY,QAAQ,CAAC,EAAE;IACrC,OAAOA,QAAQ,CAACE,IAAI;EACtB;EACA,IAAIb,6BAA6B,CAACW,QAAQ,CAAC,EAAE;IAC3C,OAAOA,QAAQ,CAACG,KAAK;EACvB;EAEA,MAAM,IAAIF,KAAK,kDAAAG,MAAA,CACoCC,IAAI,CAACC,SAAS,CAACN,QAAQ,CAAC,CAC3E,CAAC;AACH;AAIA,OAAO,MAAMO,aAAa,SAAS3C,aAAa,CAG9C;EAUA4C,WAAWA,CAACC,KAAyB,EAAE;IACrC,KAAK,CAACA,KAAK,CAAC;IAACC,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA,8BAsIbrC,kBAAkB,CAACsC,+BAA+B,CAAC,CAAC;IAAAD,eAAA,kCAGpDrC,kBAAkB,CAACuC,mCAAmC,CAAC,CAAC;IAAAF,eAAA,8BAOpC7C,OAAO,CAC3B,CAACgD,OAA6B,EAAEC,YAAoC,KAClExC,aAAa,CAACyC,yBAAyB,CACrCF,OAAO;IACP;IACAC,YAAY,CAACE,MAAM,CAACC,IAAA,IAAgC;MAAA,IAA/B;QAAEC,KAAK;QAAEC;MAAgB,CAAC,GAAAF,IAAA;MAC7C,IAAMG,EAAE,GAAGnD,WAAW,CAACoD,cAAc,CAAC,IAAI,CAAC;MAC3C,OACEH,KAAK,IAAI,IAAI,KACZC,eAAe,IAAI,IAAI,IACrBC,EAAE,IAAI,IAAI,IAAI,CAACD,eAAe,CAACG,QAAQ,CAACF,EAAE,CAAE,CAAC;IAEpD,CAAC,CACH,CACJ,CAAC;IAAAV,eAAA,gCAEuB7C,OAAO,CAC7B,CACE0D,cAA+B,EAC/BC,kBAAqC,KACxB;MACb,IAAMJ,EAAE,GAAGnD,WAAW,CAACoD,cAAc,CAAC,IAAI,CAAC;MAC3C;MACA,IAAMI,SAAS,GAAG,IAAIC,GAAG,CAACF,kBAAkB,CAAC;MAC7C,KAAK,IAAIG,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGJ,cAAc,CAACK,MAAM,EAAED,CAAC,IAAI,CAAC,EAAE;QACjD,IAAM;UAAEE;QAAM,CAAC,GAAGN,cAAc,CAACI,CAAC,CAAC;QACnC,IAAIE,KAAK,IAAI,IAAI,IAAIA,KAAK,CAACC,OAAO,KAAKV,EAAE,EAAE;UACzCK,SAAS,CAACM,GAAG,CAACF,KAAK,CAACG,UAAU,CAAC;QACjC;MACF;MACA,OAAO,CAAC,GAAGP,SAAS,CAAC;IACvB,CACF,CAAC;IAAAf,eAAA,2BAEkB7C,OAAO,CACxB,CACEoE,MAAwC,EACxCC,KAAgC,EAChCC,WAAoB,KACjB;MACH,IACE,CAACD,KAAK,IACN,CAAC3D,4BAA4B,CAAC2D,KAAK,CAAC,IACpCD,MAAM,IAAI,IAAI,IACdC,KAAK,CAAC/B,KAAK,IAAI,IAAI,EACnB;QACA,OAAO,IAAI;MACb;;MAEA;MACA,IAAMiC,eAAe,GAAG;QACtBC,KAAK,EAAE;MACT,CAAC;MAED,oBACE1C,IAAA;QAAK2C,SAAS,EAAC,kBAAkB;QAAAC,QAAA,eAC/B5C,IAAA,CAACsC,MAAM,EAAAO,aAAA;UACLC,GAAG,EAAE,IAAI,CAACC,SAAU;UACpB1B,MAAM,EAAE,IAAI,CAAC2B,kBAAmB;UAChCC,YAAY,EAAE,IAAI,CAACC,wBAAyB;UAC5CX,KAAK,EAAEA,KAAM;UACb/B,KAAK,EAAE+B,KAAK,CAAC/B,KAAM;UACnB2C,aAAa,EAAE,IAAI,CAACC,uBAAwB;UAC5CZ,WAAW,EAAEA;UACb;QAAA,GACIC,eAAe,CACpB;MAAC,CACC,CAAC;IAEV,CACF,CAAC;IAAA1B,eAAA,0CAEiC7C,OAAO,CACvC,CACEqE,KAAoB,EACpBc,oBAA6B,EAC7BC,UAA6B,EAC7BC,gBAAoD,KAEpD5E,aAAa,CAAC6E,2BAA2B,CAACjB,KAAK,EAAE;MAC/Cc,oBAAoB;MACpBC,UAAU;MACVC;IACF,CAAC,CACL,CAAC;IAAAxC,eAAA,8BAEqB7C,OAAO,CAC3B,CACEuF,kBAAoD,EACpDC,aAA0C,EAC1CC,SAAkC,EAClCnB,WAAsC,MACtB;MAChBiB,kBAAkB;MAClBC,aAAa;MACbC,SAAS;MACTnB;IACF,CAAC,CACH,CAAC;IAAAzB,eAAA,yBAijBgB3C,QAAQ,CAAC,MAAM;MAC9B,IAAM;QAAEsF,aAAa;QAAEC,SAAS;QAAEnB;MAAY,CAAC,GAAG,IAAI;MACtDxD,aAAa,CAAC0E,aAAa,CAAC;MAC5B,IAAM;QAAEE;MAAmB,CAAC,GAAG,IAAI,CAAC9C,KAAK;MACzC,IAAM;QACJyB,KAAK;QACLsB,UAAU,EAAEC,aAAa;QACzBT,oBAAoB;QACpBC,UAAU;QACVC;MACF,CAAC,GAAG,IAAI,CAACQ,KAAK;MACd/E,aAAa,CAAC,IAAI,CAACgF,aAAa,CAAC;MACjChF,aAAa,CAACuD,KAAK,CAAC;MACpBvD,aAAa,CAAC2E,SAAS,CAAC;MAExB,IAAME,UAAU,GAAG,IAAI,CAACI,mBAAmB,CACzC,IAAI,CAACC,+BAA+B,CAClC3B,KAAK,EACLc,oBAAoB,EACpBC,UAAU,EACVC,gBACF,CAAC,EACD,IAAI,CAACY,uBAAuB,CAAC5B,KAAK,EAAEmB,aAAa,CAAC,EAClD,IAAI,CAACU,mBAAmB,CAAC7B,KAAK,EAAEoB,SAAS,CAAC,EAC1CnB,WACF,CAAC;MAED,IAAIqB,UAAU,KAAKC,aAAa,EAAE;QAChC7D,GAAG,CAACoE,KAAK,CAAC,oBAAoB,EAAE,IAAI,EAAER,UAAU,CAAC;QAEjD,IAAI,CAACS,QAAQ,CAAC;UAAET;QAAW,CAAC,CAAC;QAC7BD,kBAAkB,aAAlBA,kBAAkB,uBAAlBA,kBAAkB,CAAGC,UAAU,CAAC;MAClC;IACF,CAAC,EAAE1D,2BAA2B,CAAC;IAl0B7B,IAAI,CAACoE,4BAA4B,GAC/B,IAAI,CAACA,4BAA4B,CAACC,IAAI,CAAC,IAAI,CAAC;IAC9C,IAAI,CAACC,oBAAoB,GAAG,IAAI,CAACA,oBAAoB,CAACD,IAAI,CAAC,IAAI,CAAC;IAChE,IAAI,CAACE,kBAAkB,GAAG,IAAI,CAACA,kBAAkB,CAACF,IAAI,CAAC,IAAI,CAAC;IAC5D,IAAI,CAACG,oBAAoB,GAAG,IAAI,CAACA,oBAAoB,CAACH,IAAI,CAAC,IAAI,CAAC;IAChE,IAAI,CAACI,kBAAkB,GAAG,IAAI,CAACA,kBAAkB,CAACJ,IAAI,CAAC,IAAI,CAAC;IAC5D,IAAI,CAACK,WAAW,GAAG,IAAI,CAACA,WAAW,CAACL,IAAI,CAAC,IAAI,CAAC;IAC9C,IAAI,CAACM,qBAAqB,GAAG,IAAI,CAACA,qBAAqB,CAACN,IAAI,CAAC,IAAI,CAAC;IAClE,IAAI,CAACpB,uBAAuB,GAAG,IAAI,CAACA,uBAAuB,CAACoB,IAAI,CAAC,IAAI,CAAC;IACtE,IAAI,CAACO,iBAAiB,GAAG,IAAI,CAACA,iBAAiB,CAACP,IAAI,CAAC,IAAI,CAAC;IAC1D,IAAI,CAACQ,UAAU,GAAG,IAAI,CAACA,UAAU,CAACR,IAAI,CAAC,IAAI,CAAC;IAC5C,IAAI,CAACS,gBAAgB,GAAG,IAAI,CAACA,gBAAgB,CAACT,IAAI,CAAC,IAAI,CAAC;IACxD,IAAI,CAACU,gBAAgB,GAAG,IAAI,CAACA,gBAAgB,CAACV,IAAI,CAAC,IAAI,CAAC;IACxD,IAAI,CAACW,eAAe,GAAG,IAAI,CAACA,eAAe,CAACX,IAAI,CAAC,IAAI,CAAC;IACtD,IAAI,CAACY,iBAAiB,GAAG,IAAI,CAACA,iBAAiB,CAACZ,IAAI,CAAC,IAAI,CAAC;IAC1D,IAAI,CAACa,eAAe,GAAG,IAAI,CAACA,eAAe,CAACb,IAAI,CAAC,IAAI,CAAC;IACtD,IAAI,CAACc,sBAAsB,GAAG,IAAI,CAACA,sBAAsB,CAACd,IAAI,CAAC,IAAI,CAAC;IACpE,IAAI,CAACe,iBAAiB,GAAG,IAAI,CAACA,iBAAiB,CAACf,IAAI,CAAC,IAAI,CAAC;IAC1D,IAAI,CAACxB,kBAAkB,GAAG,IAAI,CAACA,kBAAkB,CAACwB,IAAI,CAAC,IAAI,CAAC;IAC5D,IAAI,CAACtB,wBAAwB,GAAG,IAAI,CAACA,wBAAwB,CAACsB,IAAI,CAAC,IAAI,CAAC;IACxE,IAAI,CAACgB,qBAAqB,GAAG,IAAI,CAACA,qBAAqB,CAAChB,IAAI,CAAC,IAAI,CAAC;IAElE,IAAI,CAACiB,QAAQ,gBAAGzH,KAAK,CAAC0H,SAAS,CAAC,CAAC;IACjC,IAAI,CAAC3C,SAAS,gBAAG/E,KAAK,CAAC0H,SAAS,CAAC,CAAC;IAElC,IAAM;MAAE7B,UAAU,EAAVA;IAAW,CAAC,GAAG/C,KAAK;IAE5B,IAAI,CAAC0B,WAAW,GAAG,IAAI;IACvB,IAAI,CAACwB,aAAa,GAAG,IAAI;IAEzB,IAAI,CAACD,KAAK,GAAG;MACX4B,KAAK,EAAE,IAAI;MACXC,cAAc,EAAE,KAAK;MACrBC,QAAQ,EAAE,KAAK;MACfC,SAAS,EAAE,IAAI;MACfC,YAAY,EAAE,KAAK;MACnBxD,KAAK,EAAEyD,SAAS;MAEhB;MACAC,eAAe,EAAE,IAAIC,GAAG,CAAC,CAAC;MAC1BC,mBAAmB,EAAE;QAAEC,YAAY,EAAE,EAAE;QAAEC,SAAS,EAAE;MAAM,CAAC;MAC3D9C,gBAAgB,EAAE,IAAI2C,GAAG,CAAC3H,gBAAgB,CAAC+H,QAAQ,CAAC;MACpDC,aAAa,EAAE,EAAE;MACjBC,qBAAqB,EAAE,IAAIN,GAAG,CAAC,CAAC;MAChCO,gBAAgB,EAAE,KAAK;MACvBC,YAAY,EAAE,IAAIR,GAAG,CAAC,CAAC;MACvBS,KAAK,EAAE,EAAE;MACTC,gBAAgB,EAAE,IAAIV,GAAG,CAAC,CAAC;MAC3BW,cAAc,EAAE,IAAIX,GAAG,CAAC,CAAC;MACzBY,OAAO,EAAE,KAAK;MACdC,YAAY,EAAE,EAAE;MAChBC,SAAS,EAAE,EAAE;MACb3D,oBAAoB,EAAE,KAAK;MAC3BC,UAAU,EAAE,EAAE;MACd2D,YAAY,EAAEjB,SAAS;MACvBkB,aAAa,EAAE,KAAK;MACpBC,WAAW,EAAE,EAAE;MACfC,qBAAqB,EAAEpB,SAAS;MAChCqB,mBAAmB,EAAE,IAAI;MACzB/E,MAAM,EAAE0D,SAAS;MACjBsB,aAAa,EAAE,EAAE;MACjBzF,kBAAkB,EAAE,EAAE;MACtB0F,UAAU,EAAE,EAAE;MACdC,cAAc,EAAE,IAAItB,GAAG,CAAC,CAAC;MACzBuB,aAAa,EAAEzB,SAAS;MAExB;MACAnC,UAAU,EAAVA,WAAU;MAAE;MACZ6D,sBAAsB,EAAE,CAAC,CAAC;MAC1BC,kBAAkB,EAAE,CAAC,CAAC;MACtBC,eAAe,EAAE,KAAK;MACtBC,cAAc,EAAE,KAAK;MACrBC,kBAAkB,EAAE,EAAE;MACtBC,qBAAqB,EAAE;IACzB,CAAC;EACH;EAEAC,iBAAiBA,CAAA,EAAS;IACxB,IAAI,CAACC,SAAS,CAAC,CAAC;EAClB;EAEAC,kBAAkBA,CAChBC,SAA6B,EAC7BC,SAA6B,EACvB;IACN,IAAM;MAAE7F;IAAM,CAAC,GAAG,IAAI,CAACwB,KAAK;IAC5B,IAAM;MAAEsE;IAAU,CAAC,GAAG,IAAI,CAACvH,KAAK;IAChC,IAAIyB,KAAK,KAAK6F,SAAS,CAAC7F,KAAK,EAAE;MAC7B,IAAI6F,SAAS,CAAC7F,KAAK,IAAI,IAAI,EAAE;QAC3B,IAAI,CAAC+F,kBAAkB,CAACF,SAAS,CAAC7F,KAAK,CAAC;QACxC6F,SAAS,CAAC7F,KAAK,CAACgG,KAAK,CAAC,CAAC;MACzB;MACA,IAAIhG,KAAK,IAAI,IAAI,EAAE;QACjB,IAAI,CAACiG,mBAAmB,CAACjG,KAAK,CAAC;MACjC;IACF;IAEA,IAAI8F,SAAS,KAAKF,SAAS,CAACE,SAAS,EAAE;MACrC,IAAI,CAACJ,SAAS,CAAC,CAAC;IAClB;EACF;EAEAQ,oBAAoBA,CAAA,EAAS;IAC3B,IAAI,CAACC,cAAc,CAACC,MAAM,CAAC,CAAC;IAE5B,IAAI,IAAI,CAACC,YAAY,IAAI,IAAI,EAAE;MAC7B,IAAI,CAACA,YAAY,CAACD,MAAM,CAAC,CAAC;MAC1B,IAAI,CAACC,YAAY,GAAG5C,SAAS;IAC/B;IAEA,IAAM;MAAEzD;IAAM,CAAC,GAAG,IAAI,CAACwB,KAAK;IAC5B,IAAIxB,KAAK,EAAE;MACT,IAAI,CAAC+F,kBAAkB,CAAC/F,KAAK,CAAC;MAC9BA,KAAK,CAACgG,KAAK,CAAC,CAAC;IACf;EACF;EAsBAM,YAAYA,CAAA,EAAW;IACrB,IAAM;MAAExI;IAAS,CAAC,GAAG,IAAI,CAACS,KAAK;IAC/B,OAAOV,wBAAwB,CAACC,QAAQ,CAAC;EAC3C;EAsGA4H,SAASA,CAAA,EAAS;IAChB,IAAI,CAAC3D,QAAQ,CAAC;MAAEyB,YAAY,EAAE,KAAK;MAAED,SAAS,EAAE,IAAI;MAAEH,KAAK,EAAE;IAAK,CAAC,CAAC;IACpE,IAAM;MAAE0C;IAAU,CAAC,GAAG,IAAI,CAACvH,KAAK;IAChC,IAAI,IAAI,CAAC8H,YAAY,IAAI,IAAI,EAAE;MAC7B,IAAI,CAACA,YAAY,CAACD,MAAM,CAAC,CAAC;IAC5B;IACA,IAAI,CAACC,YAAY,GAAG3J,YAAY,CAAC6J,cAAc,CAACT,SAAS,CAAC,CAAC,EAAEU,QAAQ,IACnEA,QAAQ,CAACR,KAAK,CAAC,CACjB,CAAC;IACD,IAAI,CAACK,YAAY,CAACI,IAAI,CAAC,IAAI,CAAC5D,iBAAiB,CAAC,CAAC6D,KAAK,CAAC,IAAI,CAAC5D,eAAe,CAAC;EAC5E;EAEAD,iBAAiBA,CAAC8D,UAAyB,EAAQ;IACjD,IAAM3G,KAAK,GAAG2G,UAAU;IACxB,IAAM;MAAErF,UAAU;MAAE6D;IAAuB,CAAC,GAAG,IAAI,CAAC3D,KAAK;IACzD,IAAMwD,UAA0C,GAAG,EAAE;IACrD,IAAI,CAACvD,aAAa,GAAG,IAAIrF,aAAa,CAAC4D,KAAK,CAAC4G,EAAE,CAAC;IAChD,IAAItF,UAAU,IAAI,IAAI,EAAE;MACtB,IAAM;QAAEH,aAAa,EAAbA;MAAc,CAAC,GAAGG,UAAU;MACpC,IAAM;QACJsC,mBAAmB;QACnBI,aAAa;QACbwB,qBAAqB,GAAG,EAAE;QAC1Bd;MACF,CAAC,GAAApE,aAAA,CAAAA,aAAA,KAAQa,cAAa,GAAKgE,sBAAsB,CAAE;MAEnD,IAAInB,aAAa,CAACtE,MAAM,GAAG,CAAC,EAAE;QAC5BsF,UAAU,CAAC6B,IAAI,CAACC,CAAC,IAAI;UACnB;UACAA,CAAC,CAAC9C,aAAa,GAAGA,aAAa;QACjC,CAAC,CAAC;MACJ;MAEA,IAAIU,YAAY,IAAI,IAAI,IAAIA,YAAY,CAAC/F,OAAO,CAACe,MAAM,GAAG,CAAC,EAAE;QAC3D;QACA;QACA;QACAsF,UAAU,CAAC6B,IAAI,CAACC,CAAC,IAAI;UACnB;UACAA,CAAC,CAACpC,YAAY,GAAGtI,aAAa,CAAC2K,oBAAoB,CACjDD,CAAC,CAACE,eAAe,EACjBtC,YAAY,EACZd,mBACF,CAAC;QACH,CAAC,CAAC;MACJ;MAEA,IAAI4B,qBAAqB,CAAC9F,MAAM,GAAG,CAAC,EAAE;QACpCsF,UAAU,CAAC6B,IAAI,CAACC,CAAC,IAAI;UACnB;UACAA,CAAC,CAACtB,qBAAqB,GAAGA,qBAAqB;QACjD,CAAC,CAAC;MACJ;IACF;IAEA,IAAI,CAACzD,QAAQ,CAAC;MAAE/B,KAAK;MAAEgF;IAAW,CAAC,CAAC;IACpC,IAAI,CAACiC,cAAc,CAACjH,KAAK,EAAEgF,UAAU,CAAC;EACxC;EAEAiC,cAAcA,CAACN,UAAyB,EAAE3B,UAAsB,EAAQ;IACtE,IAAMhF,KAAK,GAAG2G,UAAU;IACxB,IAAI3B,UAAU,CAACtF,MAAM,KAAK,CAAC,EAAE;MAC3B,IAAI,CAACwH,gBAAgB,CAAClH,KAAK,CAAC;MAC5B;IACF;IACA,IAAMmH,WAAW,GAAGnC,UAAU,CAACoC,KAAK,CAAC,CAAC;IACtC1J,GAAG,CAACoE,KAAK,CAAC,gBAAgB,EAAEqF,WAAW,CAAC;IACxC;IACA,IAAIA,WAAW,EAAE;MACfA,WAAW,CAACnH,KAAK,CAAC;IACpB;IACA,IAAI,CAAC+B,QAAQ,CAAC;MAAEiD;IAAW,CAAC,CAAC;EAC/B;EAEAhD,4BAA4BA,CAC1BqF,GAAyB,EACzBrI,KAAc,EACR;IACNtB,GAAG,CAACoE,KAAK,CAAC,8BAA8B,EAAEuF,GAAG,EAAErI,KAAK,CAAC;IACrD,IAAI,CAAC+C,QAAQ,CAACuF,KAAA;MAAA,IAAC;QAAEtG;MAAiB,CAAC,GAAAsG,KAAA;MAAA,OACjCtG,gBAAgB,CAACuG,GAAG,CAACF,GAAG,CAAC,KAAKrI,KAAK,GAC/B,IAAI,GACJ;QAAEgC,gBAAgB,EAAE,IAAI2C,GAAG,CAAC3C,gBAAgB,CAAC,CAACwG,GAAG,CAACH,GAAG,EAAErI,KAAK;MAAE,CAAC;IAAA,CACrE,CAAC;EACH;EAEAyB,kBAAkBA,CAACgH,OAAsB,EAAQ;IAAA,IAAAC,qBAAA,EAAAC,mBAAA;IAC/C,IAAM;MAAE3H;IAAM,CAAC,GAAG,IAAI,CAACwB,KAAK;IAC5B/E,aAAa,CAACuD,KAAK,CAAC;IACpB,IAAM;MAAErB,OAAO;MAAEiJ;IAAU,CAAC,GAAG5H,KAAK;IACpC,IAAM+E,aAAa,IAAA2C,qBAAA,IAAAC,mBAAA,GACjB,IAAI,CAAClG,aAAa,cAAAkG,mBAAA,uBAAlBA,mBAAA,CAAoBE,0BAA0B,CAC5ClJ,OAAO,EACP8I,OAAO,EACPG,SAAS,CAACE,QACZ,CAAC,cAAAJ,qBAAA,cAAAA,qBAAA,GAAI,EAAE;IACT,IAAI,CAAC3F,QAAQ,CAAC;MAAEgD;IAAc,CAAC,CAAC;EAClC;EAEApE,wBAAwBA,CAACrB,kBAA4B,EAAQ;IAC3D,IAAI,CAACyC,QAAQ,CAAC;MAAEzC;IAAmB,CAAC,CAAC;EACvC;EAEA0D,iBAAiBA,CAAC+E,IAA6B,EAA6B;IAAA,IAAAC,qBAAA,EAAAC,sBAAA,EAAAC,sBAAA;IAC1E,QAAAF,qBAAA,IAAAC,sBAAA,GAAO,IAAI,CAACzH,SAAS,CAAC2H,OAAO,cAAAF,sBAAA,wBAAAC,sBAAA,GAAtBD,sBAAA,CAAwBG,OAAO,cAAAF,sBAAA,uBAA/BA,sBAAA,CAAAG,IAAA,CAAAJ,sBAAA,EAAkCF,IAAI,CAAC,cAAAC,qBAAA,cAAAA,qBAAA,GAAI,EAAE;EACtD;EAEAjF,sBAAsBA,CAACuF,WAA6B,EAAW;IAC7D,IAAM;MAAEC;IAAyB,CAAC,GAAG,IAAI,CAAChK,KAAK;IAC/C,IAAIgK,wBAAwB,IAAID,WAAW,EAAE;MAC3C,OAAOC,wBAAwB,CAAC,IAAI,EAAED,WAAW,EAAE;QACjDE,IAAI,EAAE;MACR,CAAC,CAAC;IACJ;IACA,OAAO,KAAK;EACd;EAEAjG,qBAAqBA,CACnBpB,aAA4B,EAC5BC,SAAoB,EACd;IACN,IAAI,CAACD,aAAa,GAAGA,aAAa;IAClC,IAAI,CAACC,SAAS,GAAGA,SAAS;;IAE1B;IACA,IAAI,CAACW,QAAQ,CAAC;MAAEuB,QAAQ,EAAE,IAAI;MAAEC,SAAS,EAAE;IAAM,CAAC,CAAC;IAEnD,IAAI,CAAC4C,cAAc,CAAC,CAAC;IAErB,IAAM;MAAEsC,UAAU;MAAE7H;IAAc,CAAC,GAAG,IAAI,CAACrC,KAAK;IAChDkK,UAAU,CAACC,IAAI,CAAC9L,aAAa,CAAC+L,aAAa,EAAE,IAAI,CAAC;IAClD/H,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAGO,aAAa,EAAEC,SAAS,CAAC;EAC3C;EAEAP,uBAAuBA,CAACZ,WAAoB,EAAQ;IAClD,IAAM;MAAEkB,aAAa;MAAEC;IAAU,CAAC,GAAG,IAAI;IACzC,IAAI,CAACnB,WAAW,GAAGA,WAAW;IAC9B;IACA;IACA,IAAIkB,aAAa,KAAK,IAAI,IAAIC,SAAS,KAAK,IAAI,EAAE;MAChD,IAAI,CAAC+E,cAAc,CAAC,CAAC;IACvB;EACF;EAEAjE,oBAAoBA,CAAC0G,KAAY,EAAQ;IACvC,IAAM;MAAEpF,YAAY;MAAExD,KAAK;MAAEgF;IAAW,CAAC,GAAG,IAAI,CAACxD,KAAK;IACtD,IAAIgC,YAAY,EAAE;MAChB,IAAI,CAACqF,iBAAiB,CAAED,KAAK,CAAiBE,MAAM,CAAC;IACvD,CAAC,MAAM;MACLrM,aAAa,CAACuD,KAAK,CAAC;MACpB,IAAI,CAACiH,cAAc,CAACjH,KAAK,EAAEgF,UAAU,CAAC;IACxC;EACF;EAEA7C,kBAAkBA,CAACyG,KAAY,EAAQ;IACrClL,GAAG,CAACoE,KAAK,CAAC,oBAAoB,EAAE8G,KAAK,CAAC;IACtC,IAAM;MAAEH;IAAW,CAAC,GAAG,IAAI,CAAClK,KAAK;IACjC,IAAM;MAAEuK,MAAM,EAAE7K;IAAM,CAAC,GAAG2K,KAAoB;IAC9C,IAAMhJ,OAAO,GAAG7D,WAAW,CAACoD,cAAc,CAAC,IAAI,CAAC;IAChD1C,aAAa,CAACmD,OAAO,CAAC;IACtBvC,sBAAsB,CAACoL,UAAU,EAAE7I,OAAO,EAAE3B,KAAK,CAAC;EACpD;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACEuE,iBAAiBA,CACfuG,QAA8B,EAC9B/I,KAAoB,EACd;IACN;IACA,IAAI,CAACmG,cAAc,CAAC6C,KAAK,CAAC,CAAC;IAE3B,IAAI,CAACjH,QAAQ,CACX,MAAM,IAAI,EACV,MAAM;MACJ,IAAM;QAAE0G,UAAU;QAAE7J;MAAa,CAAC,GAAG,IAAI,CAACL,KAAK;MAC/C,IAAMN,KAAK,GAAG,IAAI,CAACqI,YAAY,CAAC,CAAC;MACjC,IAAM;QAAEhF;MAAW,CAAC,GAAG,IAAI,CAACE,KAAK;MACjC,IAAMyH,aAAa,GAAGlN,WAAW,CAACoD,cAAc,CAAC,IAAI,CAAC;MACtD,IAAI+J,aAAa;MAEjB,IAAI5H,UAAU,EAAE;QACd4H,aAAa,GAAG9M,aAAa,CAAC+M,oBAAoB,CAChD7H,UAAU,EACV1C,YACF,CAAC;MACH;MACA6J,UAAU,CAACC,IAAI,CAAC9L,aAAa,CAACwM,YAAY,EAAE;QAC1CtL,QAAQ,EAAE;UACRiL,QAAQ;UACRE,aAAa;UACbhL,KAAK;UACLiL;QACF,CAAC;QACDjL,KAAK,EAAE5B,4BAA4B,CAAC2D,KAAK,CAAC,GAAGA,KAAK,CAAC/B,KAAK,GAAGwF;MAC7D,CAAC,CAAC;IACJ,CACF,CAAC;EACH;EAEArB,oBAAoBA,CAACiH,MAAiB,EAAQ;IAC5C,IAAM;MAAEZ;IAAW,CAAC,GAAG,IAAI,CAAClK,KAAK;IACjC,IAAMqB,OAAO,GAAG7D,WAAW,CAACoD,cAAc,CAAC,IAAI,CAAC;IAChD1C,aAAa,CAACmD,OAAO,CAAC;IACtBtC,qBAAqB,CAACmL,UAAU,EAAE7I,OAAO,EAAEyJ,MAAM,EAAE;MAAEb,IAAI,EAAE;IAAY,CAAC,CAAC;EAC3E;EAEAnG,kBAAkBA,CAACiH,GAAe,EAAEC,OAAmB,EAAQ;IAC7D,IAAM;MAAEd;IAAW,CAAC,GAAG,IAAI,CAAClK,KAAK;IACjC,IAAMqB,OAAO,GAAG7D,WAAW,CAACoD,cAAc,CAAC,IAAI,CAAC;IAChD1C,aAAa,CAACmD,OAAO,CAAC;IACtBrC,0BAA0B,CAACkL,UAAU,EAAE7I,OAAO,EAAE2J,OAAO,CAAC;EAC1D;EAEA9G,UAAUA,CAAA,EAAS;IACjB,IAAI,CAAC+G,UAAU,CAAC,CAAC;EACnB;EAEA9G,gBAAgBA,CAAA,EAAS;IACvB,IAAI,IAAI,CAACQ,QAAQ,CAACiF,OAAO,EAAE;MACzB,IAAI,CAACjF,QAAQ,CAACiF,OAAO,CAACsB,KAAK,CAAC,CAAC;IAC/B;EACF;EAEAnH,WAAWA,CAACc,KAAc,EAAQ;IAChC1F,GAAG,CAAC0F,KAAK,CAACA,KAAK,CAAC;IAChB,IAAI,CAACrB,QAAQ,CAAC;MAAEqB,KAAK;MAAEG,SAAS,EAAE;IAAM,CAAC,CAAC;EAC5C;EAEAZ,gBAAgBA,CAAA,EAAS;IACvB,IAAI,CAACZ,QAAQ,CAAC;MACZqB,KAAK,EAAE,IAAIrF,KAAK,CAAC,oBAAoB,CAAC;MACtCsF,cAAc,EAAE,IAAI;MACpBE,SAAS,EAAE;IACb,CAAC,CAAC;EACJ;EAEAX,eAAeA,CAAA,EAAS;IACtB,IAAI,CAACb,QAAQ,CAAC;MAAEsB,cAAc,EAAE,KAAK;MAAED,KAAK,EAAE;IAAK,CAAC,CAAC;EACvD;EAEAN,eAAeA,CAACM,KAAc,EAAQ;IACpC,IAAI1G,YAAY,CAACgN,UAAU,CAACtG,KAAK,CAAC,EAAE;MAClC;IACF;IAEA,IAAI,CAACd,WAAW,CAACc,KAAK,CAAC;EACzB;EAEA8D,gBAAgBA,CAAClH,KAAoB,EAAQ;IAC3C,IAAM;MAAEyI,UAAU;MAAEkB;IAAW,CAAC,GAAG,IAAI,CAACpL,KAAK;IAE7C,IAAI,CAAC8H,YAAY,GAAG5C,SAAS;;IAE7B;IACA,IAAI,CAACmG,cAAc,CAAC5J,KAAK,CAAC;IAE1B,IAAI,CAAC+B,QAAQ,CAAC;MAAEyB,YAAY,EAAE;IAAK,CAAC,CAAC;IAErC,IAAInH,4BAA4B,CAAC2D,KAAK,CAAC,EAAE;MACvC,IAAM;QAAE/B;MAAM,CAAC,GAAG+B,KAAK;MACvB,IAAM;QAAE6J,UAAU,EAAVA;MAAW,CAAC,GAAG5L,KAAK;MAE5B,IAAI4L,WAAU,KAAK,EAAE,EAAE;QACrB,IAAIF,UAAU,IAAI,IAAI,IAAIE,WAAU,IAAI,IAAI,EAAE;UAC5C,IAAM9J,MAAM,GAAG4J,UAAU,CAACE,WAAU,CAAC;UACrC,IAAI,CAAC9H,QAAQ,CAAC;YAAEhC;UAAO,CAAC,CAAC;QAC3B;MACF;MACA,IAAMH,OAAO,GAAG7D,WAAW,CAACoD,cAAc,CAAC,IAAI,CAAC;MAChD1C,aAAa,CAACmD,OAAO,CAAC;MACtBvC,sBAAsB,CAACoL,UAAU,EAAE7I,OAAO,EAAE3B,KAAK,CAAC;IACpD;IAEA,IAAI,CAAC4K,iBAAiB,CAAC7I,KAAK,CAACrB,OAAO,CAAC;EACvC;EAEAsE,qBAAqBA,CAAA,EAAS;IAC5B,IAAMC,QAAQ,GAAG,IAAI,CAACA,QAAQ,CAACiF,OAAO;IACtC,IAAM;MAAE9E;IAAe,CAAC,GAAG,IAAI,CAAC7B,KAAK;IACrC,IAAI0B,QAAQ,IAAI,IAAI,IAAI,CAACG,cAAc,EAAE;MACvCH,QAAQ,CAAC4G,eAAe,CAAC,CAAC;IAC5B;EACF;EAEAjB,iBAAiBA,CAAClK,OAA6B,EAAQ;IACrDjB,GAAG,CAACqM,MAAM,CAAC,mBAAmB,EAAEpL,OAAO,CAAC;IACxC,IAAM;MAAE8J;IAAW,CAAC,GAAG,IAAI,CAAClK,KAAK;IACjC,IAAMqB,OAAO,GAAG7D,WAAW,CAACoD,cAAc,CAAC,IAAI,CAAC;IAChD1C,aAAa,CAACmD,OAAO,CAAC;IACtBxC,wBAAwB,CAACqL,UAAU,EAAE7I,OAAO,EAAEjB,OAAO,CAAC;EACxD;EAEAsH,mBAAmBA,CAACjG,KAAoB,EAAQ;IAC9CA,KAAK,CAACgK,gBAAgB,CACpB9N,aAAa,CAAC+N,KAAK,CAACC,UAAU,EAC9B,IAAI,CAACvH,gBACP,CAAC;IACD3C,KAAK,CAACgK,gBAAgB,CAAC9N,aAAa,CAAC+N,KAAK,CAACE,SAAS,EAAE,IAAI,CAACvH,eAAe,CAAC;IAC3E5C,KAAK,CAACgK,gBAAgB,CACpB9N,aAAa,CAAC+N,KAAK,CAACG,eAAe,EACnC,IAAI,CAAClI,oBACP,CAAC;IACDlC,KAAK,CAACgK,gBAAgB,CACpB9N,aAAa,CAAC+N,KAAK,CAACI,aAAa,EACjC,IAAI,CAAClI,kBACP,CAAC;EACH;EAEA4D,kBAAkBA,CAAC/F,KAAoB,EAAQ;IAC7CA,KAAK,CAACsK,mBAAmB,CACvBpO,aAAa,CAAC+N,KAAK,CAACC,UAAU,EAC9B,IAAI,CAACvH,gBACP,CAAC;IACD3C,KAAK,CAACsK,mBAAmB,CACvBpO,aAAa,CAAC+N,KAAK,CAACE,SAAS,EAC7B,IAAI,CAACvH,eACP,CAAC;IACD5C,KAAK,CAACsK,mBAAmB,CACvBpO,aAAa,CAAC+N,KAAK,CAACG,eAAe,EACnC,IAAI,CAAClI,oBACP,CAAC;IACDlC,KAAK,CAACsK,mBAAmB,CACvBpO,aAAa,CAAC+N,KAAK,CAACI,aAAa,EACjC,IAAI,CAAClI,kBACP,CAAC;EACH;EAEAoI,sBAAsBA,CAACzK,UAAsB,EAA2B;IAAA,IAAA0K,qBAAA,EAAAC,gBAAA,EAAAC,oBAAA;IACtE,IAAM;MAAE1K;IAAM,CAAC,GAAG,IAAI,CAACwB,KAAK;IAC5B,IAAI,CAACxB,KAAK,EAAE;MACV,OAAO,IAAI;IACb;IAEA,IAAMkD,QAAQ,GAAG,IAAI,CAACA,QAAQ,CAACiF,OAAO;IACtC,IAAM;MAAEwC;IAAY,CAAC,GAAGzH,QAAQ,IAAI,CAAC,CAAC;IACtC,IAAM0H,IAAI,IAAAJ,qBAAA,GAAGG,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEE,qBAAqB,CAAC,CAAC,cAAAL,qBAAA,cAAAA,qBAAA,GAAI,IAAI;IACzD,IAAII,IAAI,IAAI,IAAI,IAAIA,IAAI,CAACE,KAAK,IAAI,CAAC,IAAIF,IAAI,CAACG,MAAM,IAAI,CAAC,EAAE;MACvD,OAAO,IAAI;IACb;IACAtO,aAAa,CAACyG,QAAQ,CAAC;IACvB,IAAM;MAAE8H;IAAQ,CAAC,GAAG9H,QAAQ,CAAC1B,KAAK;IAClC/E,aAAa,CAACuO,OAAO,CAAC;IACtB,IAAM;MACJC,kBAAkB;MAClBC,WAAW;MACXC,eAAe;MACfC,KAAK;MACLC;IACF,CAAC,GAAGL,OAAO;IACX,IAAMM,WAAW,GAAGtL,KAAK,CAACuL,oBAAoB,CAACzL,UAAU,CAAC;IAC1DrD,aAAa,CAAC6O,WAAW,CAAC;IAC1B,IAAME,YAAY,GAAGtI,QAAQ,CAACuI,gBAAgB,CAACH,WAAW,CAAC;IAC3D,IAAMI,OAAO,IAAAjB,gBAAA,GAAGS,WAAW,CAAC3D,GAAG,CAACiE,YAAY,CAAC,cAAAf,gBAAA,cAAAA,gBAAA,GAAI,CAAC;IAClD,IAAMkB,WAAW,IAAAjB,oBAAA,GAAGS,eAAe,CAAC5D,GAAG,CAACiE,YAAY,CAAC,cAAAd,oBAAA,cAAAA,oBAAA,GAAI,CAAC;IAE1D,IAAMkB,CAAC,GAAGjP,KAAK,CACb6O,YAAY,GAAGJ,KAAK,GAChBR,IAAI,CAACQ,KAAK,GACVR,IAAI,CAACiB,IAAI,GAAGH,OAAO,GAAGC,WAAW,GAAG,GAAG,EAC3Cf,IAAI,CAACiB,IAAI,EACTjB,IAAI,CAACQ,KACP,CAAC;IACD,IAAMU,CAAC,GAAGlB,IAAI,CAACmB,GAAG,GAAGd,kBAAkB,GAAGI,oBAAoB;IAE9D,OAAO,CAACO,CAAC,EAAEE,CAAC,CAAC;EACf;EAEAE,YAAYA,CAACC,SAAoB,EAAQ;IACvC,IAAM/I,QAAQ,GAAG,IAAI,CAACA,QAAQ,CAACiF,OAAO;IACtC,IAAIjF,QAAQ,IAAI,IAAI,EAAE;MACpBA,QAAQ,CAAC8I,YAAY,CAACC,SAAS,CAAC;IAClC;EACF;EAEAC,oBAAoBA,CAACD,SAAoC,EAAQ;IAC/D,IAAM/I,QAAQ,GAAG,IAAI,CAACA,QAAQ,CAACiF,OAAO;IACtC,IAAIjF,QAAQ,IAAI,IAAI,EAAE;MACpBA,QAAQ,CAACgJ,oBAAoB,CAACD,SAAS,CAAC;IAC1C;EACF;EAEAE,UAAUA,CAAAC,KAAA,EAMD;IAAA,IANE;MACTjI,YAAY;MACZT;IAIF,CAAC,GAAA0I,KAAA;IACC1O,GAAG,CAACoE,KAAK,CAAC,YAAY,EAAEqC,YAAY,EAAET,eAAe,CAAC;IACtD,IAAM;MAAE1D,KAAK;MAAEqD;IAAe,CAAC,GAAG,IAAI,CAAC7B,KAAK;IAC5C,IAAM0B,QAAQ,GAAG,IAAI,CAACA,QAAQ,CAACiF,OAAO;IACtC,IAAIjF,QAAQ,IAAI,IAAI,IAAIG,cAAc,EAAE;MACtC3F,GAAG,CAACoE,KAAK,CAAC,uCAAuC,CAAC;MAClD;IACF;IACArF,aAAa,CAACuD,KAAK,CAAC;IACpB,IAAM;MAAErB,OAAO;MAAEiJ;IAAU,CAAC,GAAG5H,KAAK;IACpC,IAAMqM,mBAAmB,GAAGjQ,aAAa,CAACkQ,gCAAgC,CACxEtM,KAAK,CAACrB,OAAO,EACbwF,YACF,CAAC,CAACrF,MAAM,CAACyN,KAAA;MAAA,IAAC,CAACjB,WAAW,CAAC,GAAAiB,KAAA;MAAA,OAAKvM,KAAK,CAACwM,YAAY,CAAClB,WAAW,CAAC;IAAA,EAAC;IAC5D,IAAMmB,sBAAsB,GAC1BrQ,aAAa,CAACkQ,gCAAgC,CAC5CtM,KAAK,CAACrB,OAAO,EACb+E,eACF,CAAC,CAAC5E,MAAM,CAAC4N,KAAA;MAAA,IAAC,CAACpB,WAAW,CAAC,GAAAoB,KAAA;MAAA,OAAK1M,KAAK,CAACwM,YAAY,CAAClB,WAAW,CAAC;IAAA,EAAC;IAC9D7O,aAAa,CAAC,IAAI,CAACgF,aAAa,CAAC;IACjCyB,QAAQ,CAAC4G,eAAe,CAAC,CAAC;IAC1B5G,QAAQ,CAACiJ,UAAU,CAAC;MAClBhI,YAAY,EAAE,IAAI,CAAC1C,aAAa,CAACkL,mBAAmB,CAClDhO,OAAO,EACP0N,mBAAmB,EACnBzE,SAAS,CAACE,QACZ,CAAC;MACDpE,eAAe,EAAE,IAAI,CAACjC,aAAa,CAACmL,sBAAsB,CACxDjO,OAAO,EACP8N,sBAAsB,EACtB7E,SAAS,CAACE,QACZ;IACF,CAAC,CAAC;EACJ;EAEA+E,iBAAiBA,CAACC,SAGjB,EAAQ;IACPpP,GAAG,CAACoE,KAAK,CAAC,mBAAmB,EAAEgL,SAAS,CAAC;IACzC,IAAM;MACJ3L,aAAa,EAAEgE,sBAAsB;MACrC/D,SAAS,EAAEgE;IACb,CAAC,GAAG0H,SAAS;IACb,IAAI,CAAC/K,QAAQ,CAAC;MAAEoD,sBAAsB;MAAEC;IAAmB,CAAC,EAAE,MAAM;MAClE,IAAI,CAACM,SAAS,CAAC,CAAC;IAClB,CAAC,CAAC;EACJ;;EAEA;EACAqH,gBAAgBA,CAAA,EAAS;IACvB;IACA;EAAA;EAGFnD,cAAcA,CAAC5J,KAAoB,EAAQ;IACzC,IAAM;MACJsB,UAAU;MACV6D,sBAAsB,EAAE6H,8BAA8B;MACtD5H;IACF,CAAC,GAAG,IAAI,CAAC5D,KAAK;IACd,IAAIF,UAAU,IAAI,IAAI,EAAE;MACtB;IACF;IAEA,IAAI;MACF,IAAM;QAAEF,SAAS,EAATA,UAAS;QAAED,aAAa,EAAbA,eAAa;QAAED;MAAmB,CAAC,GAAGI,UAAU;MACnE,IAAM6D,sBAAsB,GAAA7E,aAAA,KAAQ0M,8BAA8B,CAAE;MACpE,IAAM;QACJ7I,YAAY,EAAE8I,iBAAiB;QAC/BvJ,eAAe,EAAEwJ;MACnB,CAAC,GAAG/H,sBAAsB;MAC1B,IAAI8H,iBAAiB,EAAE;QACrB9H,sBAAsB,CAAChB,YAAY,GACjC/H,aAAa,CAACkQ,gCAAgC,CAC5CtM,KAAK,CAACrB,OAAO,EACbsO,iBAMF,CAAC;MACL;MACA,IAAIC,oBAAoB,EAAE;QACxB/H,sBAAsB,CAACzB,eAAe,GACpCtH,aAAa,CAACkQ,gCAAgC,CAC5CtM,KAAK,CAACrB,OAAO,EACbuO,oBAIF,CAAC;MACL;MACA,IAAM;QAAEpM,oBAAoB;QAAEC,UAAU;QAAEC;MAAiB,CAAC,GAC1D5E,aAAa,CAAC+Q,yBAAyB,CAACnN,KAAK,EAAEkB,kBAAkB,CAAC;MACpEzE,aAAa,CAAC,IAAI,CAACgF,aAAa,CAAC;MACjC,IAAM;QACJiC,eAAe;QACfM,aAAa;QACbC,qBAAqB;QACrBC,gBAAgB;QAChBC,YAAY;QACZI,OAAO;QACPG,YAAY;QACZd,mBAAmB;QACnBQ,KAAK;QACL;QACA;QACAC,gBAAgB;QAChBC,cAAc;QACdK,aAAa;QACbC,WAAW;QACXY,qBAAqB;QACrBX,qBAAqB;QACrBC,mBAAmB;QACnBG,cAAc;QACdC,aAAa;QACbK,kBAAkB;QAClB6H,kBAAkB;QAClBC;MACF,CAAC,GAAG,IAAI,CAAC5L,aAAa,CAAC6L,oBAAoB,CAACtN,KAAK,EAAAM,aAAA,CAAAA,aAAA,KAC5Ca,eAAa,GACbgE,sBAAsB,CAC1B,CAAC;MACF,IAAM;QAAEE,eAAe;QAAEC,cAAc;QAAEd,YAAY;QAAEC;MAAU,CAAC,GAChErI,aAAa,CAACmR,gBAAgB,CAC5BvN,KAAK,EAAAM,aAAA,CAAAA,aAAA,KACAc,UAAS,GAAKgE,kBAAkB,GACrCjE,eAAa,CAAC6C,aAChB,CAAC;MACH,IAAI,CAACjC,QAAQ,CAAC;QACZ2B,eAAe;QACf1C,gBAAgB;QAChBuE,kBAAkB;QAClBvB,aAAa;QACbC,qBAAqB;QACrBC,gBAAgB;QAChBpD,oBAAoB;QACpB0D,YAAY;QACZC,SAAS;QACT1D,UAAU;QACVoD,YAAY;QACZI,OAAO;QACPG,YAAY;QACZd,mBAAmB;QACnBQ,KAAK;QACLC,gBAAgB;QAChBC,cAAc;QACdK,aAAa;QACbC,WAAW;QACXY,qBAAqB;QACrBX,qBAAqB;QACrBC,mBAAmB;QACnBG,cAAc;QACdC,aAAa;QACbG,eAAe;QACfC,cAAc;QACd8H,kBAAkB;QAClBC;MACF,CAAC,CAAC;IACJ,CAAC,CAAC,OAAOjK,KAAK,EAAE;MACd1F,GAAG,CAAC0F,KAAK,CAAC,0CAA0C,EAAE9B,UAAU,EAAE8B,KAAK,CAAC;IAC1E;EACF;EAqCAoG,UAAUA,CAAA,EAAS;IAAA,IAAAgE,qBAAA,EAAAC,sBAAA;IACjB,IAAMC,IAAI,IAAAF,qBAAA,IAAAC,sBAAA,GAAG,IAAI,CAACvK,QAAQ,CAACiF,OAAO,cAAAsF,sBAAA,uBAArBA,sBAAA,CAAuBC,IAAI,cAAAF,qBAAA,cAAAA,qBAAA,GAAI,IAAI;IAChD,IAAI,CAACE,IAAI,EAAE;;IAEX;IACAA,IAAI,CAACC,YAAY,CAAC,CAAC;EACrB;EAEAC,MAAMA,CAAA,EAAiB;IAAA,IAAAC,kBAAA,EAAAC,qBAAA;IACrB,IAAM;MACJzN,QAAQ;MACR0N,WAAW;MACXtF,UAAU;MACVF,wBAAwB;MACxByF,iBAAiB;MACjBpP,YAAY;MACZqP,KAAK;MACLnQ,QAAQ;MACRoQ,aAAa;MACb5M,UAAU;MACV6M,IAAI;MACJC,QAAQ;MACRrF,QAAQ;MACRsF,mBAAmB;MACnBC;IACF,CAAC,GAAG,IAAI,CAAC/P,KAAK;IACd,IAAM;MACJmF,eAAe;MACfE,mBAAmB;MACnB5C,gBAAgB;MAChBuE,kBAAkB;MAClBvB,aAAa;MACbC,qBAAqB;MACrBb,KAAK;MACLC,cAAc;MACda,gBAAgB;MAChBpD,oBAAoB;MACpBuE,eAAe;MACfC,cAAc;MACdhC,QAAQ;MACRC,SAAS;MACTC,YAAY;MACZxD,KAAK;MACLwE,YAAY;MACZC,SAAS;MACT1D,UAAU;MACVsM,eAAe;MACflJ,YAAY;MACZI,OAAO;MACPG,YAAY;MACZN,KAAK;MACLC,gBAAgB;MAChBC,cAAc;MACdK,aAAa;MACbC,WAAW;MACXY,qBAAqB;MACrBX,qBAAqB;MACrBC,mBAAmB;MACnB/E,MAAM;MACNgF,aAAa;MACbzF,kBAAkB;MAClB2F,cAAc;MACdC,aAAa;MACbkI;IACF,CAAC,GAAG,IAAI,CAAC5L,KAAK;IACd,IAAM+M,YAAY,GAChBnL,KAAK,IAAI,IAAI,4BAAAlF,MAAA,CAA4BkF,KAAK,IAAKK,SAAS;IAC9D,IAAMzF,IAAI,GAAGH,wBAAwB,CAACC,QAAQ,CAAC;IAC/C,IAAM0Q,WAAW,IAAAX,kBAAA,GAAG7N,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEwO,WAAW,cAAAX,kBAAA,cAAAA,kBAAA,GAAIpK,SAAS;IACnD,IAAMxD,WAAW,IAAA6N,qBAAA,GAAGxM,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAErB,WAAW,cAAA6N,qBAAA,cAAAA,qBAAA,GAAI,IAAI;IACnD,IAAMW,eAAe,GACnBpO,QAAQ,aAARA,QAAQ,cAARA,QAAQ,GAAI,IAAI,CAACqO,gBAAgB,CAAC3O,MAAM,EAAEC,KAAK,EAAEC,WAAW,CAAC;IAC/D,IAAM;MAAE0O;IAAY,CAAC,GAAGR,IAAI;IAC5B,IAAM;MAAES,OAAO;MAAEC;IAAe,CAAC,GAAGF,WAAW;IAE/C,oBACElR,IAAA,CAACT,WAAW;MACVuR,YAAY,EAAEA,YAAa;MAC3BlL,cAAc,EAAEA,cAAe;MAC/BE,SAAS,EAAEA,SAAU;MACrBD,QAAQ,EAAEA,QAAS;MACnBlD,SAAS,EAAC,iBAAiB;MAC3B2N,WAAW,EAAEA,WAAY;MACzBtF,UAAU,EAAEA,UAAW;MACvBqG,iBAAiB,EAAE,IAAI,CAAC7L,qBAAsB;MAC9C8L,MAAM,EAAE,IAAI,CAACtM,UAAW;MACxBuM,UAAU,EAAE,IAAI,CAACvM,UAAW;MAC5BwM,YAAY,EAAE,IAAI,CAACvM,gBAAiB;MACpCwM,UAAU,EAAElR,IAAK;MACjBmR,UAAU,EAAC,OAAO;MAClBX,WAAW,EAAEA,WAAY;MACzBY,cAAc,EAAE,IAAK;MACrBC,gBAAgB,EAAEA,CAAA,kBAChB5R,IAAA,CAACR,oBAAoB;QACnB+C,KAAK,EAAEA,KAAM;QACbkP,UAAU,EAAElR,IAAK;QACjB+P,WAAW,EAAEA,WAAY;QACzBS,WAAW,EAAEA;MAAY,CAC1B,CACD;MAAAnO,QAAA,EAEDmD,YAAY,IAAIxD,KAAK,iBACpBvC,IAAA,CAACxB,QAAQ;QACPyH,eAAe,EAAEA,eAAgB;QACjCE,mBAAmB,EAAEA,mBAAoB;QACzC5C,gBAAgB,EAAEA,gBAAiB;QACnCsO,kBAAkB,EAAE,IAAI,CAACC,qBAAqB,CAC5CtB,KAAK,EACL3O,kBACF,CAAE;QACFkQ,mBAAmB,EAAC,QAAQ;QAC5BC,sBAAsB,EAAC,oBAAoB;QAC3CC,UAAU,EAAC,MAAM;QACjB1L,aAAa,EAAEA,aAAc;QAC7BC,qBAAqB,EAAEA,qBAAsB;QAC7CsE,wBAAwB,EAAE,IAAI,CAACxF,sBAAuB;QACtDwC,kBAAkB,EAAEA,kBAAmB;QACvC3G,YAAY,EAAE,IAAI,CAAC+Q,mBAAmB,CAAC3P,KAAK,CAACrB,OAAO,EAAEC,YAAY,CAAE;QACpEgR,uBAAuB,EAAEtO,UAAU,IAAI,IAAK;QAC5C4C,gBAAgB,EAAEA,gBAAiB;QACnC2L,iBAAiB,EAAEtH,wBAAwB,IAAI,IAAK;QACpDzH,oBAAoB,EAAEA,oBAAqB;QAC3CuE,eAAe,EAAEA,eAAgB;QACjCC,cAAc,EAAEA,cAAe;QAC/B4I,aAAa,EAAEA,aAAc;QAC7B1J,YAAY,EAAEA,YAAa;QAC3BC,SAAS,EAAEA,SAAU;QACrB1D,UAAU,EAAEA,UAAW;QACvBsM,eAAe,EAAEA,eAAgB;QACjClJ,YAAY,EAAEA,YAAa;QAC3BiK,QAAQ,EAAEA,QAAS;QACnB7J,OAAO,EAAEA,OAAQ;QACjBG,YAAY,EAAEA,YAAa;QAC3BqE,QAAQ,EAAEA,QAAS;QACnB3E,KAAK,EAAEA,KAAM;QACbC,gBAAgB,EAAEA,gBAAiB;QACnCC,cAAc,EAAEA,cAAe;QAC/BtE,KAAK,EAAEA,KAAM;QACb2E,aAAa,EAAEA,aAAc;QAC7BC,WAAW,EAAEA,WAAY;QACzBC,qBAAqB,EAAEA,qBAAsB;QAC7CW,qBAAqB,EAAEA,qBAAsB;QAC7CV,mBAAmB,EAAEA,mBAAoB;QACzCgL,gBAAgB,EAAE,IAAI,CAAC1N,oBAAqB;QAC5C2N,aAAa,EAAE,IAAI,CAACvN,iBAAkB;QACtCwN,cAAc,EAAE,IAAI,CAAC3N,kBAAmB;QACxC4N,OAAO,EAAE,IAAI,CAAC3N,WAAY;QAC1B1B,aAAa,EAAE,IAAI,CAAC2B,qBAAsB;QAC1C2N,aAAa,EAAE,IAAI,CAAClN,iBAAkB;QACtCmN,wBAAwB,EAAE,IAAI,CAACnO,4BAA6B;QAC5DoO,aAAa,EAAErL,aAAc;QAC7BE,cAAc,EAAEA,cAAe;QAC/B2J,OAAO,EAAEA,OAAQ;QACjBC,cAAc,EAAEA,cAAe;QAC/BtO,GAAG,EAAE,IAAI,CAAC2C,QAAS;QACnB8K,iBAAiB,EAAEA,iBAAkB;QACrC9I,aAAa,EAAEA,aAAc;QAC7BoJ,KAAK,EAAEA,KAAM;QACblB,kBAAkB,EAAEA,kBAAmB;QACvCiB,mBAAmB,EAAEA,mBAAoB;QAAAhO,QAAA,EAExCoO;MAAe,CACR;IACX,CACU,CAAC;EAElB;AACF;AAACjQ,eAAA,CA3/BYH,aAAa,kBAIF;EACpBuC,aAAa,EAAEA,CAAA,KAAY6C,SAAS;EACpCpC,kBAAkB,EAAEA,CAAA,KAAYoC;AAClC,CAAC;AAAAjF,eAAA,CAPUH,aAAa,iBASH,eAAe;AAAAG,eAAA,CATzBH,aAAa,eAWL,eAAe;AAk/BpC,IAAMgS,eAAe,GAAGA,CACtB7O,KAAgB,EAAA8O,KAAA;EAAA,IAChB;IAAEC,gBAAgB,GAAGzU,oBAAoB;IAAEiS;EAAsB,CAAC,GAAAuC,KAAA;EAAA,OAClD;IAChB1R,YAAY,EAAE/B,2BAA2B,CAAC2E,KAAK,EAAE+O,gBAAgB,CAAC;IAClEtC,KAAK,EAAEnR,oBAAoB,CAAC0E,KAAK,EAAE+O,gBAAgB,CAAC;IACpDhI,wBAAwB,EAAExL,uCAAuC,CAC/DyE,KAAK,EACL+O,gBACF,CAAC;IACDpC,IAAI,EAAE3R,OAAO,CAACgF,KAAK,CAAC;IACpBuH,QAAQ,EAAExM,WAAW,CAACiF,KAAK;EAC7B,CAAC;AAAA,CAAC;AAEF,IAAMgP,sBAAsB,GAAG5U,OAAO,CAACyU,eAAe,EAAE,IAAI,EAAE,IAAI,EAAE;EAClEI,UAAU,EAAE;AACd,CAAC,CAAC,CAACpS,aAAa,CAAC;AAEjB,eAAemS,sBAAsB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deephaven/dashboard-core-plugins",
|
|
3
|
-
"version": "0.85.
|
|
3
|
+
"version": "0.85.37",
|
|
4
4
|
"description": "Deephaven Dashboard Core Plugins",
|
|
5
5
|
"author": "Deephaven Data Labs LLC",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -25,21 +25,21 @@
|
|
|
25
25
|
"@deephaven/chart": "^0.85.35",
|
|
26
26
|
"@deephaven/components": "^0.85.35",
|
|
27
27
|
"@deephaven/console": "^0.85.35",
|
|
28
|
-
"@deephaven/dashboard": "^0.85.
|
|
28
|
+
"@deephaven/dashboard": "^0.85.37",
|
|
29
29
|
"@deephaven/file-explorer": "^0.85.35",
|
|
30
30
|
"@deephaven/filters": "^0.85.0",
|
|
31
31
|
"@deephaven/golden-layout": "^0.85.35",
|
|
32
|
-
"@deephaven/grid": "^0.85.
|
|
32
|
+
"@deephaven/grid": "^0.85.37",
|
|
33
33
|
"@deephaven/icons": "^0.85.0",
|
|
34
|
-
"@deephaven/iris-grid": "^0.85.
|
|
34
|
+
"@deephaven/iris-grid": "^0.85.37",
|
|
35
35
|
"@deephaven/jsapi-bootstrap": "^0.85.35",
|
|
36
36
|
"@deephaven/jsapi-components": "^0.85.35",
|
|
37
37
|
"@deephaven/jsapi-types": "^1.0.0-dev0.39.4",
|
|
38
38
|
"@deephaven/jsapi-utils": "^0.85.35",
|
|
39
39
|
"@deephaven/log": "^0.85.19",
|
|
40
|
-
"@deephaven/plugin": "^0.85.
|
|
40
|
+
"@deephaven/plugin": "^0.85.37",
|
|
41
41
|
"@deephaven/react-hooks": "^0.85.35",
|
|
42
|
-
"@deephaven/redux": "^0.85.
|
|
42
|
+
"@deephaven/redux": "^0.85.37",
|
|
43
43
|
"@deephaven/storage": "^0.85.19",
|
|
44
44
|
"@deephaven/utils": "^0.85.35",
|
|
45
45
|
"@fortawesome/react-fontawesome": "^0.2.0",
|
|
@@ -78,5 +78,5 @@
|
|
|
78
78
|
"publishConfig": {
|
|
79
79
|
"access": "public"
|
|
80
80
|
},
|
|
81
|
-
"gitHead": "
|
|
81
|
+
"gitHead": "af19156370497a40cb9aa4853d0bf539195d64e3"
|
|
82
82
|
}
|