@deephaven/dashboard-core-plugins 1.22.1 → 1.22.2-alpha-pivot-builder.0730ba6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/dist/ChartBuilderPlugin.js +8 -15
  2. package/dist/ChartBuilderPlugin.js.map +1 -1
  3. package/dist/ChartPanelPlugin.js +13 -6
  4. package/dist/ChartPanelPlugin.js.map +1 -1
  5. package/dist/ChartWidgetPlugin.js +11 -4
  6. package/dist/ChartWidgetPlugin.js.map +1 -1
  7. package/dist/ConsolePlugin.js +38 -46
  8. package/dist/ConsolePlugin.js.map +1 -1
  9. package/dist/FilterPlugin.js +63 -44
  10. package/dist/FilterPlugin.js.map +1 -1
  11. package/dist/GridPanelPlugin.js +3 -5
  12. package/dist/GridPanelPlugin.js.map +1 -1
  13. package/dist/GridWidgetPlugin.d.ts +18 -1
  14. package/dist/GridWidgetPlugin.d.ts.map +1 -1
  15. package/dist/GridWidgetPlugin.js +54 -30
  16. package/dist/GridWidgetPlugin.js.map +1 -1
  17. package/dist/LinkerPlugin.js +3 -5
  18. package/dist/LinkerPlugin.js.map +1 -1
  19. package/dist/MarkdownPlugin.js +18 -17
  20. package/dist/MarkdownPlugin.js.map +1 -1
  21. package/dist/PandasPanelPlugin.js +3 -5
  22. package/dist/PandasPanelPlugin.js.map +1 -1
  23. package/dist/PandasWidgetPlugin.js +3 -7
  24. package/dist/PandasWidgetPlugin.js.map +1 -1
  25. package/dist/TablePluginWrapper.js +8 -10
  26. package/dist/TablePluginWrapper.js.map +1 -1
  27. package/dist/WidgetLoaderPlugin.js +24 -29
  28. package/dist/WidgetLoaderPlugin.js.map +1 -1
  29. package/dist/controls/dropdown-filter/DropdownFilter.js +63 -79
  30. package/dist/controls/dropdown-filter/DropdownFilter.js.map +1 -1
  31. package/dist/controls/input-filter/InputFilter.js +32 -58
  32. package/dist/controls/input-filter/InputFilter.js.map +1 -1
  33. package/dist/controls/markdown/MarkdownContainer.js +4 -5
  34. package/dist/controls/markdown/MarkdownContainer.js.map +1 -1
  35. package/dist/controls/markdown/MarkdownEditor.js +7 -10
  36. package/dist/controls/markdown/MarkdownEditor.js.map +1 -1
  37. package/dist/controls/markdown/MarkdownStartPage.js +8 -12
  38. package/dist/controls/markdown/MarkdownStartPage.js.map +1 -1
  39. package/dist/linker/Linker.js +100 -192
  40. package/dist/linker/Linker.js.map +1 -1
  41. package/dist/linker/LinkerLink.js +23 -31
  42. package/dist/linker/LinkerLink.js.map +1 -1
  43. package/dist/linker/LinkerOverlayContent.js +65 -66
  44. package/dist/linker/LinkerOverlayContent.js.map +1 -1
  45. package/dist/linker/LinkerUtils.js +6 -14
  46. package/dist/linker/LinkerUtils.js.map +1 -1
  47. package/dist/panels/ChartColumnSelectorOverlay.js +4 -6
  48. package/dist/panels/ChartColumnSelectorOverlay.js.map +1 -1
  49. package/dist/panels/ChartFilterOverlay.js +7 -9
  50. package/dist/panels/ChartFilterOverlay.js.map +1 -1
  51. package/dist/panels/ChartPanel.js +136 -220
  52. package/dist/panels/ChartPanel.js.map +1 -1
  53. package/dist/panels/ChartPanelUtils.js +3 -4
  54. package/dist/panels/ChartPanelUtils.js.map +1 -1
  55. package/dist/panels/CommandHistoryPanel.js +33 -52
  56. package/dist/panels/CommandHistoryPanel.js.map +1 -1
  57. package/dist/panels/ConsolePanel.js +68 -130
  58. package/dist/panels/ConsolePanel.js.map +1 -1
  59. package/dist/panels/CorePanel.js +6 -18
  60. package/dist/panels/CorePanel.js.map +1 -1
  61. package/dist/panels/DropdownFilterPanel.js +109 -165
  62. package/dist/panels/DropdownFilterPanel.js.map +1 -1
  63. package/dist/panels/FileExplorerPanel.js +30 -55
  64. package/dist/panels/FileExplorerPanel.js.map +1 -1
  65. package/dist/panels/FilterSetManager.js +81 -141
  66. package/dist/panels/FilterSetManager.js.map +1 -1
  67. package/dist/panels/FilterSetManagerPanel.js +68 -87
  68. package/dist/panels/FilterSetManagerPanel.js.map +1 -1
  69. package/dist/panels/InputFilterPanel.js +45 -68
  70. package/dist/panels/InputFilterPanel.js.map +1 -1
  71. package/dist/panels/IrisGridPanel.d.ts +28 -6
  72. package/dist/panels/IrisGridPanel.d.ts.map +1 -1
  73. package/dist/panels/IrisGridPanel.js +224 -280
  74. package/dist/panels/IrisGridPanel.js.map +1 -1
  75. package/dist/panels/IrisGridPanelTooltip.js +1 -3
  76. package/dist/panels/IrisGridPanelTooltip.js.map +1 -1
  77. package/dist/panels/LogPanel.js +6 -13
  78. package/dist/panels/LogPanel.js.map +1 -1
  79. package/dist/panels/MarkdownNotebook.js +28 -50
  80. package/dist/panels/MarkdownNotebook.js.map +1 -1
  81. package/dist/panels/MarkdownPanel.js +19 -38
  82. package/dist/panels/MarkdownPanel.js.map +1 -1
  83. package/dist/panels/NotebookPanel.js +157 -292
  84. package/dist/panels/NotebookPanel.js.map +1 -1
  85. package/dist/panels/PandasPanel.js +5 -15
  86. package/dist/panels/PandasPanel.js.map +1 -1
  87. package/dist/panels/PandasReloadButton.js +1 -3
  88. package/dist/panels/PandasReloadButton.js.map +1 -1
  89. package/dist/panels/WidgetPanel.js +42 -51
  90. package/dist/panels/WidgetPanel.js.map +1 -1
  91. package/dist/panels/WidgetPanelTooltip.js +6 -10
  92. package/dist/panels/WidgetPanelTooltip.js.map +1 -1
  93. package/dist/useConfigureRuff.js +8 -9
  94. package/dist/useConfigureRuff.js.map +1 -1
  95. package/dist/useDashboardColumnFilters.js +4 -7
  96. package/dist/useDashboardColumnFilters.js.map +1 -1
  97. package/dist/useGridLinker.js +9 -16
  98. package/dist/useGridLinker.js.map +1 -1
  99. package/dist/useIrisGridModel.d.ts +2 -2
  100. package/dist/useIrisGridModel.d.ts.map +1 -1
  101. package/dist/useIrisGridModel.js +34 -6
  102. package/dist/useIrisGridModel.js.map +1 -1
  103. package/dist/useTablePlugin.js +27 -14
  104. package/dist/useTablePlugin.js.map +1 -1
  105. package/package.json +24 -24
@@ -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","_this$irisGrid$curren","deprecatedProps","panel","className","children","_objectSpread","ref","pluginRef","handlePluginFilter","fetchColumns","handlePluginFetchColumns","tableName","getTableName","selectedRanges","irisGrid","current","state","onStateChange","handlePluginStateChange","isSelectingPartition","partitions","advancedSettings","dehydrateIrisGridPanelState","irisGridPanelState","irisGridState","gridState","description","type","displayType","onPanelStateUpdate","panelState","oldPanelState","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","createRef","error","isDisconnected","isLoaded","isLoading","isModelReady","undefined","advancedFilters","Map","aggregationSettings","aggregations","showOnTop","DEFAULTS","customColumns","customColumnFormatMap","columnAlignmentMap","isFilterBarShown","quickFilters","sorts","userColumnWidths","userColumnWidthsByName","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","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","getMenu","call","tableColumn","columnSelectionValidator","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$curren2","_this$irisGrid$curren3","grid","handleResize","render","_model$description","_panelState$pluginSta","glContainer","getDownloadWorker","links","mouseHandlers","user","renderer","getMetricCalculator","theme","errorMessage","childrenContent","getPluginContent","permissions","canCopy","canDownloadCsv","widgetPanelDescriptor","getWidgetPanelDescriptor","onClearAllFilters","onShow","onTabFocus","onTabClicked","componentPanel","descriptor","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 type ReactElement,\n type ReactNode,\n type RefObject,\n} from 'react';\nimport memoize from 'memoize-one';\nimport { connect } from 'react-redux';\nimport debounce from 'lodash.debounce';\nimport {\n type DashboardPanelProps,\n DEFAULT_DASHBOARD_ID,\n LayoutUtils,\n type PanelComponent,\n type PanelMetadata,\n} from '@deephaven/dashboard';\nimport {\n AdvancedSettings,\n IrisGrid,\n type IrisGridType,\n IrisGridModel,\n IrisGridCacheUtils,\n IrisGridUtils,\n isIrisGridTableModelTemplate,\n type ColumnName,\n type PendingDataMap,\n type InputFilter,\n type IrisGridThemeType,\n type ReadonlyAdvancedFilterMap,\n type AggregationSettings,\n type AdvancedSettingsType,\n type UIRollupConfig,\n type UIRow,\n type ReadonlyQuickFilterMap,\n type FilterMap,\n type QuickFilter,\n type AdvancedFilter,\n type SidebarFormattingRule,\n type IrisGridState,\n type ChartBuilderSettings,\n type DehydratedIrisGridState,\n type DehydratedIrisGridPanelState,\n type ColumnHeaderGroup,\n type IrisGridContextMenuData,\n type PartitionConfig,\n type IrisGridRenderer,\n type MouseHandlersProp,\n type GetMetricCalculatorType,\n} from '@deephaven/iris-grid';\nimport {\n type RowDataMap,\n type AdvancedFilterOptions,\n type FormattingRule,\n type SortDescriptor,\n} from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport {\n getSettings,\n getUser,\n type RootState,\n type User,\n type WorkspaceSettings,\n} from '@deephaven/redux';\nimport {\n assertNotNull,\n type CancelablePromise,\n type EventT,\n PromiseUtils,\n} from '@deephaven/utils';\nimport { type ResolvableContextAction } from '@deephaven/components';\nimport type { dh } from '@deephaven/jsapi-types';\nimport {\n type GridState,\n type ModelIndex,\n type ModelSizeMap,\n type 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 { type WidgetPanelDescriptor } from './WidgetPanelTypes';\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 columnAlignmentMap: Map<string, CanvasTextAlign>;\n isFilterBarShown: boolean;\n quickFilters: ReadonlyQuickFilterMap;\n sorts: readonly SortDescriptor[];\n userColumnWidths: ModelSizeMap;\n userColumnWidthsByName: ReadonlyMap<ColumnName, number>;\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 columnAlignmentMap: new Map(),\n isFilterBarShown: false,\n quickFilters: new Map(),\n sorts: [],\n userColumnWidths: new Map(),\n userColumnWidthsByName: 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 tableName={this.getTableName()}\n selectedRanges={this.irisGrid.current?.state.selectedRanges}\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 getWidgetPanelDescriptor = memoize(\n (\n metadata: IrisGridPanelProps['metadata'],\n description?: string\n ): WidgetPanelDescriptor => {\n const name = getTableNameFromMetadata(metadata);\n return {\n type: 'Table',\n displayType: 'Table',\n ...metadata,\n name,\n description,\n };\n }\n );\n\n initModel(): void {\n this.setState({\n isModelReady: false,\n isLoading: true,\n error: null,\n isDisconnected: false,\n });\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: EventT): 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: EventT): 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, metadata } = 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 ...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 columnAlignmentMap,\n isFilterBarShown,\n quickFilters,\n reverse,\n rollupConfig,\n aggregationSettings,\n sorts,\n userColumnWidths,\n userColumnWidthsByName,\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 columnAlignmentMap,\n isFilterBarShown,\n isSelectingPartition,\n movedColumns,\n movedRows,\n partitions,\n quickFilters,\n reverse,\n rollupConfig,\n aggregationSettings,\n sorts,\n userColumnWidths,\n userColumnWidthsByName,\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 columnAlignmentMap,\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 userColumnWidthsByName,\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 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 const widgetPanelDescriptor = this.getWidgetPanelDescriptor(\n metadata,\n description\n );\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 componentPanel={this}\n descriptor={widgetPanelDescriptor}\n renderTabTooltip={() => (\n <IrisGridPanelTooltip\n descriptor={widgetPanelDescriptor}\n model={model}\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 columnAlignmentMap={columnAlignmentMap}\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 userColumnWidthsByName={userColumnWidthsByName}\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":"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","ignoreList":[]}
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","_this$irisGrid$curren","deprecatedProps","panel","className","children","_objectSpread","ref","pluginRef","handlePluginFilter","fetchColumns","handlePluginFetchColumns","tableName","getTableName","selectedRanges","irisGrid","current","state","onStateChange","handlePluginStateChange","isSelectingPartition","partitions","advancedSettings","dehydrateIrisGridPanelState","irisGridPanelState","irisGridState","gridState","description","type","displayType","onPanelStateUpdate","_this$state","oldPanelState","panelState","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","createRef","error","isDisconnected","isLoaded","isLoading","isModelReady","undefined","advancedFilters","Map","aggregationSettings","aggregations","showOnTop","DEFAULTS","customColumns","customColumnFormatMap","columnAlignmentMap","isFilterBarShown","quickFilters","sorts","userColumnWidths","userColumnWidthsByName","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","_this$props","transformModel","Promise","resolve","then","_ref2","_asyncToGenerator","transformedModel","e","_x","apply","arguments","makeCancelable","resolved","catch","modelParam","_this$state2","dh","_irisGridState$irisGr","_irisGridState$irisGr2","push","m","getModelRollupConfig","originalColumns","initModelQueue","modelInitialized","modelChange","shift","key","_ref3","get","set","filters","_this$irisGridUtils$g","_this$irisGridUtils","formatter","getFiltersFromInputFilters","timeZone","data","_this$pluginRef$curre","_this$pluginRef$curre2","_this$pluginRef$curre3","getMenu","call","tableColumn","columnSelectionValidator","_this$props2","glEventHub","emit","STATE_CHANGED","event","_this$state3","sendColumnsChange","detail","_ref4","settings","flush","_this$props3","sourcePanelId","tableSettings","extractTableSettings","CREATE_CHART","column","row","dataMap","updateGrid","focus","isCanceled","_this$props4","loadPlugin","onModelChanged","loadPanelState","pluginName","clearAllFilters","debug2","addEventListener","EVENT","DISCONNECT","RECONNECT","COLUMNS_CHANGED","TABLE_CHANGED","removeEventListener","getCoordinateForColumn","_gridWrapper$getBound","_allColumnXs$get","_allColumnWidths$get","_ref5","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","_ref6","_this$state4","indexedQuickFilters","changeFilterColumnNamesToIndexes","_ref7","_ref8","_slicedToArray","isFilterable","indexedAdvancedFilters","_ref9","_ref0","hydrateQuickFilters","hydrateAdvancedFilters","setStateOverrides","overrides","unsetFilterValue","_this$state5","originalIrisGridStateOverrides","savedQuickFilters","savedAdvancedFilters","_IrisGridUtils$hydrat","hydrateIrisGridPanelState","_this$irisGridUtils$h","hydrateIrisGridState","columnHeaderGroups","partitionConfig","_IrisGridUtils$hydrat2","hydrateGridState","_this$irisGrid$curren2","_this$irisGrid$curren3","grid","handleResize","render","_model$description","_panelState$pluginSta","_this$props5","glContainer","getDownloadWorker","links","user","irisGridProps","transformTableOptions","_this$state6","errorMessage","childrenContent","getPluginContent","permissions","canCopy","canDownloadCsv","widgetPanelDescriptor","getWidgetPanelDescriptor","onClearAllFilters","onShow","onTabFocus","onTabClicked","componentPanel","descriptor","renderTabTooltip","alwaysFetchColumns","getAlwaysFetchColumns","columnAllowedCursor","columnNotAllowedCursor","copyCursor","getGridInputFilters","applyInputFiltersOnInit","isSelectingColumn","onColumnSelected","onCreateChart","onDataSelected","onError","onContextMenu","onAdvancedSettingsChange","customFilters","mapStateToProps","_ref1","_ref1$localDashboardI","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 type ReactElement,\n type ReactNode,\n type RefObject,\n} from 'react';\nimport memoize from 'memoize-one';\nimport { connect } from 'react-redux';\nimport debounce from 'lodash.debounce';\nimport {\n type DashboardPanelProps,\n DEFAULT_DASHBOARD_ID,\n LayoutUtils,\n type PanelComponent,\n type PanelMetadata,\n} from '@deephaven/dashboard';\nimport {\n AdvancedSettings,\n IrisGrid,\n type IrisGridType,\n IrisGridModel,\n IrisGridCacheUtils,\n IrisGridUtils,\n isIrisGridTableModelTemplate,\n type ColumnName,\n type PendingDataMap,\n type InputFilter,\n type ReadonlyAdvancedFilterMap,\n type AggregationSettings,\n type AdvancedSettingsType,\n type UIRollupConfig,\n type UIRow,\n type ReadonlyQuickFilterMap,\n type FilterMap,\n type QuickFilter,\n type AdvancedFilter,\n type SidebarFormattingRule,\n type IrisGridState,\n type ChartBuilderSettings,\n type DehydratedIrisGridState,\n type DehydratedIrisGridPanelState,\n type ColumnHeaderGroup,\n type IrisGridContextMenuData,\n type PartitionConfig,\n type IrisGridViewProps,\n type TableOptionsTransform,\n type IrisGridModelTransform,\n} from '@deephaven/iris-grid';\nimport {\n type RowDataMap,\n type AdvancedFilterOptions,\n type FormattingRule,\n type SortDescriptor,\n} from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport {\n getSettings,\n getUser,\n type RootState,\n type User,\n type WorkspaceSettings,\n} from '@deephaven/redux';\nimport {\n assertNotNull,\n type CancelablePromise,\n type EventT,\n PromiseUtils,\n} from '@deephaven/utils';\nimport { type ResolvableContextAction } from '@deephaven/components';\nimport type { dh } from '@deephaven/jsapi-types';\nimport {\n type GridState,\n type ModelIndex,\n type ModelSizeMap,\n type 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 { type WidgetPanelDescriptor } from './WidgetPanelTypes';\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 /**\n * View-concern overrides (theme, renderer, mouse handlers, metric\n * calculator) forwarded as a single bag to `IrisGrid`. Lets IrisGrid-aware\n * middleware contribute presentation without this panel knowing each\n * concern by name. Threaded down the middleware chain.\n */\n irisGridProps?: Partial<IrisGridViewProps>;\n\n /**\n * Transform applied to the built-in Table Options items before they are\n * rendered. Forwarded to `IrisGrid#transformTableOptions`. Threaded down\n * the middleware chain by IrisGrid-aware plugins.\n */\n transformTableOptions?: TableOptionsTransform;\n\n /**\n * Called with the resolved `IrisGridModel` once it is initialized, so\n * middleware can subscribe to model events (e.g. to recompute a\n * `transformTableOptions` snapshot).\n */\n onModelChanged?: (model: IrisGridModel) => void;\n\n /**\n * Transform applied to the model built by `makeModel` before it is handed\n * to `IrisGrid`. Lets IrisGrid-aware middleware wrap the host-built model\n * (e.g. in a proxy) without taking over model construction. Applied when\n * the model is (re)built, so it must be referentially stable.\n */\n transformModel?: IrisGridModelTransform;\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 columnAlignmentMap: Map<string, CanvasTextAlign>;\n isFilterBarShown: boolean;\n quickFilters: ReadonlyQuickFilterMap;\n sorts: readonly SortDescriptor[];\n userColumnWidths: ModelSizeMap;\n userColumnWidthsByName: ReadonlyMap<ColumnName, number>;\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 columnAlignmentMap: new Map(),\n isFilterBarShown: false,\n quickFilters: new Map(),\n sorts: [],\n userColumnWidths: new Map(),\n userColumnWidthsByName: 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 tableName={this.getTableName()}\n selectedRanges={this.irisGrid.current?.state.selectedRanges}\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 getWidgetPanelDescriptor = memoize(\n (\n metadata: IrisGridPanelProps['metadata'],\n description?: string\n ): WidgetPanelDescriptor => {\n const name = getTableNameFromMetadata(metadata);\n return {\n type: 'Table',\n displayType: 'Table',\n ...metadata,\n name,\n description,\n };\n }\n );\n\n initModel(): void {\n this.setState({\n isModelReady: false,\n isLoading: true,\n error: null,\n isDisconnected: false,\n });\n const { makeModel, transformModel } = this.props;\n if (this.modelPromise != null) {\n this.modelPromise.cancel();\n }\n const modelPromise =\n transformModel != null\n ? Promise.resolve(makeModel()).then(async model => {\n try {\n const transformedModel = await transformModel(model);\n return transformedModel;\n } catch (e) {\n // The host owns the base model's lifecycle; if the transform\n // rejects it never returns a model for us to close, so close\n // the base model here to avoid leaking it.\n model.close();\n throw e;\n }\n })\n : Promise.resolve(makeModel());\n this.modelPromise = PromiseUtils.makeCancelable(modelPromise, 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: EventT): 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: EventT): 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, metadata } = 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 ...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, onModelChanged } = 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 onModelChanged?.(model);\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 columnAlignmentMap,\n isFilterBarShown,\n quickFilters,\n reverse,\n rollupConfig,\n aggregationSettings,\n sorts,\n userColumnWidths,\n userColumnWidthsByName,\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 columnAlignmentMap,\n isFilterBarShown,\n isSelectingPartition,\n movedColumns,\n movedRows,\n partitions,\n quickFilters,\n reverse,\n rollupConfig,\n aggregationSettings,\n sorts,\n userColumnWidths,\n userColumnWidthsByName,\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 panelState,\n user,\n settings,\n irisGridProps,\n transformTableOptions,\n } = this.props;\n const {\n advancedFilters,\n aggregationSettings,\n advancedSettings,\n conditionalFormats,\n customColumns,\n customColumnFormatMap,\n columnAlignmentMap,\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 userColumnWidthsByName,\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 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 const widgetPanelDescriptor = this.getWidgetPanelDescriptor(\n metadata,\n description\n );\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 componentPanel={this}\n descriptor={widgetPanelDescriptor}\n renderTabTooltip={() => (\n <IrisGridPanelTooltip\n descriptor={widgetPanelDescriptor}\n model={model}\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 columnAlignmentMap={columnAlignmentMap}\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 movedColumns={movedColumns}\n movedRows={movedRows}\n partitions={partitions}\n partitionConfig={partitionConfig}\n quickFilters={quickFilters}\n reverse={reverse}\n rollupConfig={rollupConfig}\n settings={settings}\n sorts={sorts}\n userColumnWidths={userColumnWidths}\n userColumnWidthsByName={userColumnWidthsByName}\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 columnHeaderGroups={columnHeaderGroups}\n transformTableOptions={transformTableOptions}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...irisGridProps}\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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","ignoreList":[]}
@@ -8,9 +8,7 @@ import WidgetPanelTooltip from "./WidgetPanelTooltip.js";
8
8
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
9
  function IrisGridPanelTooltip(props) {
10
10
  var _model$rowCount, _model$pendingRowCoun, _model$floatingBottom, _model$floatingTopRow, _model$columnCount;
11
- var {
12
- model
13
- } = props;
11
+ var model = props.model;
14
12
  var rowCount = ((_model$rowCount = model === null || model === void 0 ? void 0 : model.rowCount) !== null && _model$rowCount !== void 0 ? _model$rowCount : 0) - ((_model$pendingRowCoun = model === null || model === void 0 ? void 0 : model.pendingRowCount) !== null && _model$pendingRowCoun !== void 0 ? _model$pendingRowCoun : 0) - ((_model$floatingBottom = model === null || model === void 0 ? void 0 : model.floatingBottomRowCount) !== null && _model$floatingBottom !== void 0 ? _model$floatingBottom : 0) - ((_model$floatingTopRow = model === null || model === void 0 ? void 0 : model.floatingTopRowCount) !== null && _model$floatingTopRow !== void 0 ? _model$floatingTopRow : 0);
15
13
  var formattedRowCount = model === null || model === void 0 ? void 0 : model.displayString(rowCount, 'long');
16
14
  var columnCount = (_model$columnCount = model === null || model === void 0 ? void 0 : model.columnCount) !== null && _model$columnCount !== void 0 ? _model$columnCount : 0;
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGridPanelTooltip.js","names":["React","WidgetPanelTooltip","jsx","_jsx","jsxs","_jsxs","IrisGridPanelTooltip","props","_model$rowCount","_model$pendingRowCoun","_model$floatingBottom","_model$floatingTopRow","_model$columnCount","model","rowCount","pendingRowCount","floatingBottomRowCount","floatingTopRowCount","formattedRowCount","displayString","columnCount","formattedcolumnCount","_objectSpread","children","className"],"sources":["../../src/panels/IrisGridPanelTooltip.tsx"],"sourcesContent":["import React, { type ReactElement } from 'react';\nimport { type IrisGridModel } from '@deephaven/iris-grid';\nimport WidgetPanelTooltip from './WidgetPanelTooltip';\nimport { type WidgetPanelTooltipProps } from './WidgetPanelTypes';\n\ntype IrisGridPanelTooltipProps = WidgetPanelTooltipProps & {\n model?: IrisGridModel;\n};\n\nfunction IrisGridPanelTooltip(props: IrisGridPanelTooltipProps): ReactElement {\n const { model } = props;\n\n const rowCount =\n (model?.rowCount ?? 0) -\n (model?.pendingRowCount ?? 0) -\n (model?.floatingBottomRowCount ?? 0) -\n (model?.floatingTopRowCount ?? 0);\n const formattedRowCount = model?.displayString(rowCount, 'long');\n\n const columnCount = model?.columnCount ?? 0;\n const formattedcolumnCount = model?.displayString(columnCount, 'long');\n\n return (\n // eslint-disable-next-line react/jsx-props-no-spreading\n <WidgetPanelTooltip {...props}>\n <hr className=\"tab-tooltip-divider\" />\n <span>Number of Columns</span>\n <span className=\"tab-tooltip-statistic-value\">\n {formattedcolumnCount}\n </span>\n <span>Number of Rows</span>\n <span className=\"tab-tooltip-statistic-value\">{formattedRowCount}</span>\n </WidgetPanelTooltip>\n );\n}\n\nexport default IrisGridPanelTooltip;\n"],"mappings":";;;;;AAAA,OAAOA,KAAK,MAA6B,OAAO;AAAC,OAE1CC,kBAAkB;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAOzB,SAASC,oBAAoBA,CAACC,KAAgC,EAAgB;EAAA,IAAAC,eAAA,EAAAC,qBAAA,EAAAC,qBAAA,EAAAC,qBAAA,EAAAC,kBAAA;EAC5E,IAAM;IAAEC;EAAM,CAAC,GAAGN,KAAK;EAEvB,IAAMO,QAAQ,GACZ,EAAAN,eAAA,GAACK,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEC,QAAQ,cAAAN,eAAA,cAAAA,eAAA,GAAI,CAAC,MAAAC,qBAAA,GACpBI,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEE,eAAe,cAAAN,qBAAA,cAAAA,qBAAA,GAAI,CAAC,CAAC,KAAAC,qBAAA,GAC5BG,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEG,sBAAsB,cAAAN,qBAAA,cAAAA,qBAAA,GAAI,CAAC,CAAC,KAAAC,qBAAA,GACnCE,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEI,mBAAmB,cAAAN,qBAAA,cAAAA,qBAAA,GAAI,CAAC,CAAC;EACnC,IAAMO,iBAAiB,GAAGL,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEM,aAAa,CAACL,QAAQ,EAAE,MAAM,CAAC;EAEhE,IAAMM,WAAW,IAAAR,kBAAA,GAAGC,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEO,WAAW,cAAAR,kBAAA,cAAAA,kBAAA,GAAI,CAAC;EAC3C,IAAMS,oBAAoB,GAAGR,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEM,aAAa,CAACC,WAAW,EAAE,MAAM,CAAC;EAEtE;IAAA;IACE;IACAf,KAAA,CAACJ,kBAAkB,EAAAqB,aAAA,CAAAA,aAAA,KAAKf,KAAK;MAAAgB,QAAA,gBAC3BpB,IAAA;QAAIqB,SAAS,EAAC;MAAqB,CAAE,CAAC,eACtCrB,IAAA;QAAAoB,QAAA,EAAM;MAAiB,CAAM,CAAC,eAC9BpB,IAAA;QAAMqB,SAAS,EAAC,6BAA6B;QAAAD,QAAA,EAC1CF;MAAoB,CACjB,CAAC,eACPlB,IAAA;QAAAoB,QAAA,EAAM;MAAc,CAAM,CAAC,eAC3BpB,IAAA;QAAMqB,SAAS,EAAC,6BAA6B;QAAAD,QAAA,EAAEL;MAAiB,CAAO,CAAC;IAAA,EACtD;EAAC;AAEzB;AAEA,eAAeZ,oBAAoB","ignoreList":[]}
1
+ {"version":3,"file":"IrisGridPanelTooltip.js","names":["React","WidgetPanelTooltip","jsx","_jsx","jsxs","_jsxs","IrisGridPanelTooltip","props","_model$rowCount","_model$pendingRowCoun","_model$floatingBottom","_model$floatingTopRow","_model$columnCount","model","rowCount","pendingRowCount","floatingBottomRowCount","floatingTopRowCount","formattedRowCount","displayString","columnCount","formattedcolumnCount","_objectSpread","children","className"],"sources":["../../src/panels/IrisGridPanelTooltip.tsx"],"sourcesContent":["import React, { type ReactElement } from 'react';\nimport { type IrisGridModel } from '@deephaven/iris-grid';\nimport WidgetPanelTooltip from './WidgetPanelTooltip';\nimport { type WidgetPanelTooltipProps } from './WidgetPanelTypes';\n\ntype IrisGridPanelTooltipProps = WidgetPanelTooltipProps & {\n model?: IrisGridModel;\n};\n\nfunction IrisGridPanelTooltip(props: IrisGridPanelTooltipProps): ReactElement {\n const { model } = props;\n\n const rowCount =\n (model?.rowCount ?? 0) -\n (model?.pendingRowCount ?? 0) -\n (model?.floatingBottomRowCount ?? 0) -\n (model?.floatingTopRowCount ?? 0);\n const formattedRowCount = model?.displayString(rowCount, 'long');\n\n const columnCount = model?.columnCount ?? 0;\n const formattedcolumnCount = model?.displayString(columnCount, 'long');\n\n return (\n // eslint-disable-next-line react/jsx-props-no-spreading\n <WidgetPanelTooltip {...props}>\n <hr className=\"tab-tooltip-divider\" />\n <span>Number of Columns</span>\n <span className=\"tab-tooltip-statistic-value\">\n {formattedcolumnCount}\n </span>\n <span>Number of Rows</span>\n <span className=\"tab-tooltip-statistic-value\">{formattedRowCount}</span>\n </WidgetPanelTooltip>\n );\n}\n\nexport default IrisGridPanelTooltip;\n"],"mappings":";;;;;AAAA,OAAOA,KAAK,MAA6B,OAAO;AAAC,OAE1CC,kBAAkB;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAOzB,SAASC,oBAAoBA,CAACC,KAAgC,EAAgB;EAAA,IAAAC,eAAA,EAAAC,qBAAA,EAAAC,qBAAA,EAAAC,qBAAA,EAAAC,kBAAA;EAC5E,IAAQC,KAAK,GAAKN,KAAK,CAAfM,KAAK;EAEb,IAAMC,QAAQ,GACZ,EAAAN,eAAA,GAACK,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEC,QAAQ,cAAAN,eAAA,cAAAA,eAAA,GAAI,CAAC,MAAAC,qBAAA,GACpBI,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEE,eAAe,cAAAN,qBAAA,cAAAA,qBAAA,GAAI,CAAC,CAAC,KAAAC,qBAAA,GAC5BG,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEG,sBAAsB,cAAAN,qBAAA,cAAAA,qBAAA,GAAI,CAAC,CAAC,KAAAC,qBAAA,GACnCE,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEI,mBAAmB,cAAAN,qBAAA,cAAAA,qBAAA,GAAI,CAAC,CAAC;EACnC,IAAMO,iBAAiB,GAAGL,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEM,aAAa,CAACL,QAAQ,EAAE,MAAM,CAAC;EAEhE,IAAMM,WAAW,IAAAR,kBAAA,GAAGC,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEO,WAAW,cAAAR,kBAAA,cAAAA,kBAAA,GAAI,CAAC;EAC3C,IAAMS,oBAAoB,GAAGR,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEM,aAAa,CAACC,WAAW,EAAE,MAAM,CAAC;EAEtE;IAAA;IACE;IACAf,KAAA,CAACJ,kBAAkB,EAAAqB,aAAA,CAAAA,aAAA,KAAKf,KAAK;MAAAgB,QAAA,gBAC3BpB,IAAA;QAAIqB,SAAS,EAAC;MAAqB,CAAE,CAAC,eACtCrB,IAAA;QAAAoB,QAAA,EAAM;MAAiB,CAAM,CAAC,eAC9BpB,IAAA;QAAMqB,SAAS,EAAC,6BAA6B;QAAAD,QAAA,EAC1CF;MAAoB,CACjB,CAAC,eACPlB,IAAA;QAAAoB,QAAA,EAAM;MAAc,CAAM,CAAC,eAC3BpB,IAAA;QAAMqB,SAAS,EAAC,6BAA6B;QAAAD,QAAA,EAAEL;MAAiB,CAAO,CAAC;IAAA,EACtD;EAAC;AAEzB;AAEA,eAAeZ,oBAAoB","ignoreList":[]}
@@ -24,9 +24,7 @@ class LogPanel extends PureComponent {
24
24
  this.handleSessionClosed = this.handleSessionClosed.bind(this);
25
25
  this.isBottomVisible = true;
26
26
  this.logView = null;
27
- var {
28
- session
29
- } = this.props;
27
+ var session = this.props.session;
30
28
  this.state = {
31
29
  session
32
30
  };
@@ -49,9 +47,7 @@ class LogPanel extends PureComponent {
49
47
  }
50
48
  }
51
49
  handleSessionOpened(_ref) {
52
- var {
53
- session
54
- } = _ref;
50
+ var session = _ref.session;
55
51
  log.debug('Session opened', [session]);
56
52
  this.setState({
57
53
  session
@@ -69,13 +65,10 @@ class LogPanel extends PureComponent {
69
65
  }
70
66
  }
71
67
  render() {
72
- var {
73
- glContainer,
74
- glEventHub
75
- } = this.props;
76
- var {
77
- session
78
- } = this.state;
68
+ var _this$props = this.props,
69
+ glContainer = _this$props.glContainer,
70
+ glEventHub = _this$props.glEventHub;
71
+ var session = this.state.session;
79
72
  return /*#__PURE__*/_jsxs(Panel, {
80
73
  componentPanel: this,
81
74
  glContainer: glContainer,
@@ -1 +1 @@
1
- {"version":3,"file":"LogPanel.js","names":["React","PureComponent","connect","LogView","Log","Panel","getDashboardSessionWrapper","jsx","_jsx","jsxs","_jsxs","log","module","LogPanel","constructor","props","_defineProperty","handleResize","bind","handleShow","handleHide","handleSessionOpened","handleSessionClosed","isBottomVisible","logView","session","state","updateDimensions","triggerFindWidget","scrollToBottom","_ref","debug","setState","render","glContainer","glEventHub","componentPanel","onResize","onHide","onShow","onSessionOpen","onSessionClose","children","className","ref","mapStateToProps","ownProps","_getDashboardSessionW","localDashboardId","ConnectedLogPanel","forwardRef"],"sources":["../../src/panels/LogPanel.tsx"],"sourcesContent":["// Wrapper for the Console for use in a golden layout container\n// Will probably need to handle window popping out from golden layout here.\nimport React, { PureComponent } from 'react';\nimport { connect } from 'react-redux';\nimport { LogView } from '@deephaven/console';\nimport type { dh } from '@deephaven/jsapi-types';\nimport { type DashboardPanelProps } from '@deephaven/dashboard';\nimport Log from '@deephaven/log';\nimport { type RootState } from '@deephaven/redux';\nimport './LogPanel.scss';\nimport Panel from './CorePanel';\nimport { type CoreConsoleSession } from '../ConsoleEvents';\nimport { getDashboardSessionWrapper } from '../redux';\n\nconst log = Log.module('LogPanel');\n\ninterface LogPanelProps extends DashboardPanelProps {\n session?: dh.IdeSession;\n}\n\ninterface LogPanelState {\n session?: dh.IdeSession;\n}\n\nclass LogPanel extends PureComponent<LogPanelProps, LogPanelState> {\n static defaultProps = {\n session: null,\n };\n\n static COMPONENT = 'LogPanel';\n\n static TITLE = 'Log';\n\n constructor(props: LogPanelProps) {\n super(props);\n\n this.handleResize = this.handleResize.bind(this);\n this.handleShow = this.handleShow.bind(this);\n this.handleHide = this.handleHide.bind(this);\n this.handleSessionOpened = this.handleSessionOpened.bind(this);\n this.handleSessionClosed = this.handleSessionClosed.bind(this);\n\n this.isBottomVisible = true;\n this.logView = null;\n\n const { session } = this.props;\n\n this.state = { session };\n }\n\n isBottomVisible: boolean;\n\n logView: LogView | null;\n\n handleResize(): void {\n this.updateDimensions();\n }\n\n handleShow(): void {\n this.updateDimensions();\n if (this.logView) {\n this.logView.triggerFindWidget();\n\n if (this.isBottomVisible) {\n this.logView.scrollToBottom();\n }\n }\n }\n\n handleHide(): void {\n if (this.logView) {\n this.isBottomVisible = this.logView.isBottomVisible();\n }\n }\n\n handleSessionOpened({ session }: CoreConsoleSession): void {\n log.debug('Session opened', [session]);\n this.setState({ session });\n }\n\n // eslint-disable-next-line class-methods-use-this\n handleSessionClosed(session: dh.IdeSession): void {\n log.debug('Session closed', session);\n // Keep the session reference in state unchanged until the session is re-connected\n }\n\n updateDimensions(): void {\n if (this.logView) {\n this.logView.updateDimensions();\n }\n }\n\n render(): JSX.Element {\n const { glContainer, glEventHub } = this.props;\n const { session } = this.state;\n return (\n <Panel\n componentPanel={this}\n glContainer={glContainer}\n glEventHub={glEventHub}\n onResize={this.handleResize}\n onHide={this.handleHide}\n onShow={this.handleShow}\n onSessionOpen={this.handleSessionOpened}\n onSessionClose={this.handleSessionClosed}\n >\n {session == null && (\n <div className=\"log-panel-disconnected-message\">\n Waiting for session connection\n </div>\n )}\n {session != null && (\n <LogView\n session={session}\n ref={logView => {\n this.logView = logView;\n }}\n />\n )}\n </Panel>\n );\n }\n}\n\nconst mapStateToProps = (\n state: RootState,\n ownProps: { localDashboardId: string }\n): Pick<LogPanelProps, 'session'> => ({\n session: getDashboardSessionWrapper(state, ownProps.localDashboardId)\n ?.session,\n});\n\nconst ConnectedLogPanel = connect(mapStateToProps, null, null, {\n forwardRef: true,\n})(LogPanel);\n\nexport default ConnectedLogPanel;\n"],"mappings":";;;AAAA;AACA;AACA,OAAOA,KAAK,IAAIC,aAAa,QAAQ,OAAO;AAC5C,SAASC,OAAO,QAAQ,aAAa;AACrC,SAASC,OAAO,QAAQ,oBAAoB;AAG5C,OAAOC,GAAG,MAAM,gBAAgB;AAAC;AAAA,OAG1BC,KAAK;AAAA,SAEHC,0BAA0B;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAEnC,IAAMC,GAAG,GAAGP,GAAG,CAACQ,MAAM,CAAC,UAAU,CAAC;AAUlC,MAAMC,QAAQ,SAASZ,aAAa,CAA+B;EASjEa,WAAWA,CAACC,KAAoB,EAAE;IAChC,KAAK,CAACA,KAAK,CAAC;IAACC,eAAA;IAAAA,eAAA;IAEb,IAAI,CAACC,YAAY,GAAG,IAAI,CAACA,YAAY,CAACC,IAAI,CAAC,IAAI,CAAC;IAChD,IAAI,CAACC,UAAU,GAAG,IAAI,CAACA,UAAU,CAACD,IAAI,CAAC,IAAI,CAAC;IAC5C,IAAI,CAACE,UAAU,GAAG,IAAI,CAACA,UAAU,CAACF,IAAI,CAAC,IAAI,CAAC;IAC5C,IAAI,CAACG,mBAAmB,GAAG,IAAI,CAACA,mBAAmB,CAACH,IAAI,CAAC,IAAI,CAAC;IAC9D,IAAI,CAACI,mBAAmB,GAAG,IAAI,CAACA,mBAAmB,CAACJ,IAAI,CAAC,IAAI,CAAC;IAE9D,IAAI,CAACK,eAAe,GAAG,IAAI;IAC3B,IAAI,CAACC,OAAO,GAAG,IAAI;IAEnB,IAAM;MAAEC;IAAQ,CAAC,GAAG,IAAI,CAACV,KAAK;IAE9B,IAAI,CAACW,KAAK,GAAG;MAAED;IAAQ,CAAC;EAC1B;EAMAR,YAAYA,CAAA,EAAS;IACnB,IAAI,CAACU,gBAAgB,CAAC,CAAC;EACzB;EAEAR,UAAUA,CAAA,EAAS;IACjB,IAAI,CAACQ,gBAAgB,CAAC,CAAC;IACvB,IAAI,IAAI,CAACH,OAAO,EAAE;MAChB,IAAI,CAACA,OAAO,CAACI,iBAAiB,CAAC,CAAC;MAEhC,IAAI,IAAI,CAACL,eAAe,EAAE;QACxB,IAAI,CAACC,OAAO,CAACK,cAAc,CAAC,CAAC;MAC/B;IACF;EACF;EAEAT,UAAUA,CAAA,EAAS;IACjB,IAAI,IAAI,CAACI,OAAO,EAAE;MAChB,IAAI,CAACD,eAAe,GAAG,IAAI,CAACC,OAAO,CAACD,eAAe,CAAC,CAAC;IACvD;EACF;EAEAF,mBAAmBA,CAAAS,IAAA,EAAwC;IAAA,IAAvC;MAAEL;IAA4B,CAAC,GAAAK,IAAA;IACjDnB,GAAG,CAACoB,KAAK,CAAC,gBAAgB,EAAE,CAACN,OAAO,CAAC,CAAC;IACtC,IAAI,CAACO,QAAQ,CAAC;MAAEP;IAAQ,CAAC,CAAC;EAC5B;;EAEA;EACAH,mBAAmBA,CAACG,OAAsB,EAAQ;IAChDd,GAAG,CAACoB,KAAK,CAAC,gBAAgB,EAAEN,OAAO,CAAC;IACpC;EACF;EAEAE,gBAAgBA,CAAA,EAAS;IACvB,IAAI,IAAI,CAACH,OAAO,EAAE;MAChB,IAAI,CAACA,OAAO,CAACG,gBAAgB,CAAC,CAAC;IACjC;EACF;EAEAM,MAAMA,CAAA,EAAgB;IACpB,IAAM;MAAEC,WAAW;MAAEC;IAAW,CAAC,GAAG,IAAI,CAACpB,KAAK;IAC9C,IAAM;MAAEU;IAAQ,CAAC,GAAG,IAAI,CAACC,KAAK;IAC9B,oBACEhB,KAAA,CAACL,KAAK;MACJ+B,cAAc,EAAE,IAAK;MACrBF,WAAW,EAAEA,WAAY;MACzBC,UAAU,EAAEA,UAAW;MACvBE,QAAQ,EAAE,IAAI,CAACpB,YAAa;MAC5BqB,MAAM,EAAE,IAAI,CAAClB,UAAW;MACxBmB,MAAM,EAAE,IAAI,CAACpB,UAAW;MACxBqB,aAAa,EAAE,IAAI,CAACnB,mBAAoB;MACxCoB,cAAc,EAAE,IAAI,CAACnB,mBAAoB;MAAAoB,QAAA,GAExCjB,OAAO,IAAI,IAAI,iBACdjB,IAAA;QAAKmC,SAAS,EAAC,gCAAgC;QAAAD,QAAA,EAAC;MAEhD,CAAK,CACN,EACAjB,OAAO,IAAI,IAAI,iBACdjB,IAAA,CAACL,OAAO;QACNsB,OAAO,EAAEA,OAAQ;QACjBmB,GAAG,EAAEpB,OAAO,IAAI;UACd,IAAI,CAACA,OAAO,GAAGA,OAAO;QACxB;MAAE,CACH,CACF;IAAA,CACI,CAAC;EAEZ;AACF;AAACR,eAAA,CAlGKH,QAAQ,kBACU;EACpBY,OAAO,EAAE;AACX,CAAC;AAAAT,eAAA,CAHGH,QAAQ,eAKO,UAAU;AAAAG,eAAA,CALzBH,QAAQ,WAOG,KAAK;AA6FtB,IAAMgC,eAAe,GAAGA,CACtBnB,KAAgB,EAChBoB,QAAsC;EAAA,IAAAC,qBAAA;EAAA,OACF;IACpCtB,OAAO,GAAAsB,qBAAA,GAAEzC,0BAA0B,CAACoB,KAAK,EAAEoB,QAAQ,CAACE,gBAAgB,CAAC,cAAAD,qBAAA,uBAA5DA,qBAAA,CACLtB;EACN,CAAC;AAAA,CAAC;AAEF,IAAMwB,iBAAiB,GAAG/C,OAAO,CAAC2C,eAAe,EAAE,IAAI,EAAE,IAAI,EAAE;EAC7DK,UAAU,EAAE;AACd,CAAC,CAAC,CAACrC,QAAQ,CAAC;AAEZ,eAAeoC,iBAAiB","ignoreList":[]}
1
+ {"version":3,"file":"LogPanel.js","names":["React","PureComponent","connect","LogView","Log","Panel","getDashboardSessionWrapper","jsx","_jsx","jsxs","_jsxs","log","module","LogPanel","constructor","props","_defineProperty","handleResize","bind","handleShow","handleHide","handleSessionOpened","handleSessionClosed","isBottomVisible","logView","session","state","updateDimensions","triggerFindWidget","scrollToBottom","_ref","debug","setState","render","_this$props","glContainer","glEventHub","componentPanel","onResize","onHide","onShow","onSessionOpen","onSessionClose","children","className","ref","mapStateToProps","ownProps","_getDashboardSessionW","localDashboardId","ConnectedLogPanel","forwardRef"],"sources":["../../src/panels/LogPanel.tsx"],"sourcesContent":["// Wrapper for the Console for use in a golden layout container\n// Will probably need to handle window popping out from golden layout here.\nimport React, { PureComponent } from 'react';\nimport { connect } from 'react-redux';\nimport { LogView } from '@deephaven/console';\nimport type { dh } from '@deephaven/jsapi-types';\nimport { type DashboardPanelProps } from '@deephaven/dashboard';\nimport Log from '@deephaven/log';\nimport { type RootState } from '@deephaven/redux';\nimport './LogPanel.scss';\nimport Panel from './CorePanel';\nimport { type CoreConsoleSession } from '../ConsoleEvents';\nimport { getDashboardSessionWrapper } from '../redux';\n\nconst log = Log.module('LogPanel');\n\ninterface LogPanelProps extends DashboardPanelProps {\n session?: dh.IdeSession;\n}\n\ninterface LogPanelState {\n session?: dh.IdeSession;\n}\n\nclass LogPanel extends PureComponent<LogPanelProps, LogPanelState> {\n static defaultProps = {\n session: null,\n };\n\n static COMPONENT = 'LogPanel';\n\n static TITLE = 'Log';\n\n constructor(props: LogPanelProps) {\n super(props);\n\n this.handleResize = this.handleResize.bind(this);\n this.handleShow = this.handleShow.bind(this);\n this.handleHide = this.handleHide.bind(this);\n this.handleSessionOpened = this.handleSessionOpened.bind(this);\n this.handleSessionClosed = this.handleSessionClosed.bind(this);\n\n this.isBottomVisible = true;\n this.logView = null;\n\n const { session } = this.props;\n\n this.state = { session };\n }\n\n isBottomVisible: boolean;\n\n logView: LogView | null;\n\n handleResize(): void {\n this.updateDimensions();\n }\n\n handleShow(): void {\n this.updateDimensions();\n if (this.logView) {\n this.logView.triggerFindWidget();\n\n if (this.isBottomVisible) {\n this.logView.scrollToBottom();\n }\n }\n }\n\n handleHide(): void {\n if (this.logView) {\n this.isBottomVisible = this.logView.isBottomVisible();\n }\n }\n\n handleSessionOpened({ session }: CoreConsoleSession): void {\n log.debug('Session opened', [session]);\n this.setState({ session });\n }\n\n // eslint-disable-next-line class-methods-use-this\n handleSessionClosed(session: dh.IdeSession): void {\n log.debug('Session closed', session);\n // Keep the session reference in state unchanged until the session is re-connected\n }\n\n updateDimensions(): void {\n if (this.logView) {\n this.logView.updateDimensions();\n }\n }\n\n render(): JSX.Element {\n const { glContainer, glEventHub } = this.props;\n const { session } = this.state;\n return (\n <Panel\n componentPanel={this}\n glContainer={glContainer}\n glEventHub={glEventHub}\n onResize={this.handleResize}\n onHide={this.handleHide}\n onShow={this.handleShow}\n onSessionOpen={this.handleSessionOpened}\n onSessionClose={this.handleSessionClosed}\n >\n {session == null && (\n <div className=\"log-panel-disconnected-message\">\n Waiting for session connection\n </div>\n )}\n {session != null && (\n <LogView\n session={session}\n ref={logView => {\n this.logView = logView;\n }}\n />\n )}\n </Panel>\n );\n }\n}\n\nconst mapStateToProps = (\n state: RootState,\n ownProps: { localDashboardId: string }\n): Pick<LogPanelProps, 'session'> => ({\n session: getDashboardSessionWrapper(state, ownProps.localDashboardId)\n ?.session,\n});\n\nconst ConnectedLogPanel = connect(mapStateToProps, null, null, {\n forwardRef: true,\n})(LogPanel);\n\nexport default ConnectedLogPanel;\n"],"mappings":"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","ignoreList":[]}