@deephaven/iris-grid 1.4.1-beta.0 → 1.4.1-react19.43

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 (238) hide show
  1. package/dist/AdvancedFilterCreator.js +5 -7
  2. package/dist/AdvancedFilterCreator.js.map +1 -1
  3. package/dist/AdvancedFilterCreatorFilterItem.js +6 -7
  4. package/dist/AdvancedFilterCreatorFilterItem.js.map +1 -1
  5. package/dist/AdvancedFilterCreatorSelectValue.js +1 -2
  6. package/dist/AdvancedFilterCreatorSelectValue.js.map +1 -1
  7. package/dist/AdvancedFilterCreatorSelectValueList.js +2 -3
  8. package/dist/AdvancedFilterCreatorSelectValueList.js.map +1 -1
  9. package/dist/ColumnHeaderGroup.js.map +1 -1
  10. package/dist/ColumnStatistics.d.ts +2 -2
  11. package/dist/ColumnStatistics.d.ts.map +1 -1
  12. package/dist/ColumnStatistics.js +2 -5
  13. package/dist/ColumnStatistics.js.map +1 -1
  14. package/dist/CommonTypes.js.map +1 -1
  15. package/dist/CrossColumnSearch.js +2 -4
  16. package/dist/CrossColumnSearch.js.map +1 -1
  17. package/dist/EmptyIrisGridModel.d.ts +3 -0
  18. package/dist/EmptyIrisGridModel.d.ts.map +1 -1
  19. package/dist/EmptyIrisGridModel.js +8 -0
  20. package/dist/EmptyIrisGridModel.js.map +1 -1
  21. package/dist/FilterInputField.js +4 -5
  22. package/dist/FilterInputField.js.map +1 -1
  23. package/dist/GotoRow.js +4 -6
  24. package/dist/GotoRow.js.map +1 -1
  25. package/dist/IrisGrid.d.ts +38 -43
  26. package/dist/IrisGrid.d.ts.map +1 -1
  27. package/dist/IrisGrid.js +181 -168
  28. package/dist/IrisGrid.js.map +1 -1
  29. package/dist/IrisGridBottomBar.d.ts.map +1 -1
  30. package/dist/IrisGridBottomBar.js +4 -1
  31. package/dist/IrisGridBottomBar.js.map +1 -1
  32. package/dist/IrisGridCacheUtils.d.ts.map +1 -1
  33. package/dist/IrisGridCacheUtils.js +1 -1
  34. package/dist/IrisGridCacheUtils.js.map +1 -1
  35. package/dist/IrisGridCellOverflowModal.js +1 -2
  36. package/dist/IrisGridCellOverflowModal.js.map +1 -1
  37. package/dist/IrisGridCellRendererUtils.js.map +1 -1
  38. package/dist/IrisGridCopyHandler.js +4 -6
  39. package/dist/IrisGridCopyHandler.js.map +1 -1
  40. package/dist/IrisGridDataBarCellRenderer.js.map +1 -1
  41. package/dist/IrisGridIcons.js.map +1 -1
  42. package/dist/IrisGridMetricCalculator.d.ts +1 -2
  43. package/dist/IrisGridMetricCalculator.d.ts.map +1 -1
  44. package/dist/IrisGridMetricCalculator.js.map +1 -1
  45. package/dist/IrisGridModel.d.ts +8 -0
  46. package/dist/IrisGridModel.d.ts.map +1 -1
  47. package/dist/IrisGridModel.js +8 -0
  48. package/dist/IrisGridModel.js.map +1 -1
  49. package/dist/IrisGridModelFactory.js.map +1 -1
  50. package/dist/IrisGridModelUpdater.d.ts +2 -1
  51. package/dist/IrisGridModelUpdater.d.ts.map +1 -1
  52. package/dist/IrisGridModelUpdater.js +4 -0
  53. package/dist/IrisGridModelUpdater.js.map +1 -1
  54. package/dist/IrisGridPartitionSelector.d.ts.map +1 -1
  55. package/dist/IrisGridPartitionSelector.js +6 -8
  56. package/dist/IrisGridPartitionSelector.js.map +1 -1
  57. package/dist/IrisGridPartitionedTableModel.js.map +1 -1
  58. package/dist/IrisGridProxyModel.d.ts +2 -0
  59. package/dist/IrisGridProxyModel.d.ts.map +1 -1
  60. package/dist/IrisGridProxyModel.js +12 -7
  61. package/dist/IrisGridProxyModel.js.map +1 -1
  62. package/dist/IrisGridRenderer.js +0 -1
  63. package/dist/IrisGridRenderer.js.map +1 -1
  64. package/dist/IrisGridShortcuts.js.map +1 -1
  65. package/dist/IrisGridTableModel.js +1 -2
  66. package/dist/IrisGridTableModel.js.map +1 -1
  67. package/dist/IrisGridTableModelTemplate.d.ts +6 -2
  68. package/dist/IrisGridTableModelTemplate.d.ts.map +1 -1
  69. package/dist/IrisGridTableModelTemplate.js +71 -61
  70. package/dist/IrisGridTableModelTemplate.js.map +1 -1
  71. package/dist/IrisGridTestUtils.js.map +1 -1
  72. package/dist/IrisGridTextCellRenderer.js.map +1 -1
  73. package/dist/IrisGridTheme.js.map +1 -1
  74. package/dist/IrisGridThemeProvider.d.ts.map +1 -1
  75. package/dist/IrisGridThemeProvider.js +1 -0
  76. package/dist/IrisGridThemeProvider.js.map +1 -1
  77. package/dist/IrisGridTreeTableModel.d.ts +1 -1
  78. package/dist/IrisGridTreeTableModel.d.ts.map +1 -1
  79. package/dist/IrisGridTreeTableModel.js +19 -14
  80. package/dist/IrisGridTreeTableModel.js.map +1 -1
  81. package/dist/IrisGridUtils.d.ts +3 -1
  82. package/dist/IrisGridUtils.d.ts.map +1 -1
  83. package/dist/IrisGridUtils.js +60 -56
  84. package/dist/IrisGridUtils.js.map +1 -1
  85. package/dist/LazyIrisGrid.d.ts +55 -77
  86. package/dist/LazyIrisGrid.d.ts.map +1 -1
  87. package/dist/LazyIrisGrid.js +3 -1
  88. package/dist/LazyIrisGrid.js.map +1 -1
  89. package/dist/MissingKeyError.js.map +1 -1
  90. package/dist/MissingPartitionError.js.map +1 -1
  91. package/dist/NoPastePermissionModal.js +1 -2
  92. package/dist/NoPastePermissionModal.js.map +1 -1
  93. package/dist/PartitionedGridModel.js.map +1 -1
  94. package/dist/PendingDataBottomBar.js +1 -2
  95. package/dist/PendingDataBottomBar.js.map +1 -1
  96. package/dist/ToastBottomBar.js.map +1 -1
  97. package/dist/declaration.d.js.map +1 -1
  98. package/dist/format-context-menus/CustomFormatAction.js +1 -2
  99. package/dist/format-context-menus/CustomFormatAction.js.map +1 -1
  100. package/dist/format-context-menus/DateTimeFormatContextMenu.js.map +1 -1
  101. package/dist/format-context-menus/DecimalFormatContextMenu.js.map +1 -1
  102. package/dist/format-context-menus/FormatContextMenuUtils.js.map +1 -1
  103. package/dist/format-context-menus/IntegerFormatContextMenu.js.map +1 -1
  104. package/dist/format-context-menus/TextAlignmentFormatContextMenu.d.ts +21 -0
  105. package/dist/format-context-menus/TextAlignmentFormatContextMenu.d.ts.map +1 -0
  106. package/dist/format-context-menus/TextAlignmentFormatContextMenu.js +42 -0
  107. package/dist/format-context-menus/TextAlignmentFormatContextMenu.js.map +1 -0
  108. package/dist/format-context-menus/index.d.ts +1 -0
  109. package/dist/format-context-menus/index.d.ts.map +1 -1
  110. package/dist/format-context-menus/index.js +1 -0
  111. package/dist/format-context-menus/index.js.map +1 -1
  112. package/dist/index.js.map +1 -1
  113. package/dist/key-handlers/ClearFilterKeyHandler.js.map +1 -1
  114. package/dist/key-handlers/CopyCellKeyHandler.js.map +1 -1
  115. package/dist/key-handlers/CopyKeyHandler.js.map +1 -1
  116. package/dist/key-handlers/ReverseKeyHandler.js.map +1 -1
  117. package/dist/key-handlers/index.js.map +1 -1
  118. package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js.map +1 -1
  119. package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js.map +1 -1
  120. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.d.ts.map +1 -1
  121. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js +5 -2
  122. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js.map +1 -1
  123. package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts +1 -0
  124. package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts.map +1 -1
  125. package/dist/mousehandlers/IrisGridContextMenuHandler.js +27 -3
  126. package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
  127. package/dist/mousehandlers/IrisGridCopyCellMouseHandler.js.map +1 -1
  128. package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js.map +1 -1
  129. package/dist/mousehandlers/IrisGridFilterMouseHandler.js.map +1 -1
  130. package/dist/mousehandlers/IrisGridPartitionedTableMouseHandler.js.map +1 -1
  131. package/dist/mousehandlers/IrisGridRowTreeMouseHandler.js.map +1 -1
  132. package/dist/mousehandlers/IrisGridSortMouseHandler.js.map +1 -1
  133. package/dist/mousehandlers/IrisGridTokenMouseHandler.js +1 -3
  134. package/dist/mousehandlers/IrisGridTokenMouseHandler.js.map +1 -1
  135. package/dist/mousehandlers/PendingMouseHandler.js.map +1 -1
  136. package/dist/mousehandlers/index.js.map +1 -1
  137. package/dist/sidebar/AdvancedSettings.js.map +1 -1
  138. package/dist/sidebar/AdvancedSettingsMenu.d.ts +1 -1
  139. package/dist/sidebar/AdvancedSettingsMenu.d.ts.map +1 -1
  140. package/dist/sidebar/AdvancedSettingsMenu.js.map +1 -1
  141. package/dist/sidebar/AdvancedSettingsType.js +3 -3
  142. package/dist/sidebar/AdvancedSettingsType.js.map +1 -1
  143. package/dist/sidebar/ChartBuilder.d.ts +2 -2
  144. package/dist/sidebar/ChartBuilder.d.ts.map +1 -1
  145. package/dist/sidebar/ChartBuilder.js +1 -2
  146. package/dist/sidebar/ChartBuilder.js.map +1 -1
  147. package/dist/sidebar/CustomColumnBuilder.d.ts +1 -1
  148. package/dist/sidebar/CustomColumnBuilder.d.ts.map +1 -1
  149. package/dist/sidebar/CustomColumnBuilder.js +4 -6
  150. package/dist/sidebar/CustomColumnBuilder.js.map +1 -1
  151. package/dist/sidebar/CustomColumnInput.js +2 -3
  152. package/dist/sidebar/CustomColumnInput.js.map +1 -1
  153. package/dist/sidebar/DownloadServiceWorkerUtils.js +1 -1
  154. package/dist/sidebar/DownloadServiceWorkerUtils.js.map +1 -1
  155. package/dist/sidebar/InputEditor.js +8 -9
  156. package/dist/sidebar/InputEditor.js.map +1 -1
  157. package/dist/sidebar/OptionType.js +3 -3
  158. package/dist/sidebar/OptionType.js.map +1 -1
  159. package/dist/sidebar/RollupRows.d.ts +1 -1
  160. package/dist/sidebar/RollupRows.d.ts.map +1 -1
  161. package/dist/sidebar/RollupRows.js +9 -11
  162. package/dist/sidebar/RollupRows.js.map +1 -1
  163. package/dist/sidebar/SelectDistinctBuilder.js +1 -2
  164. package/dist/sidebar/SelectDistinctBuilder.js.map +1 -1
  165. package/dist/sidebar/TableCsvExporter.js +5 -7
  166. package/dist/sidebar/TableCsvExporter.js.map +1 -1
  167. package/dist/sidebar/TableSaver.js +9 -10
  168. package/dist/sidebar/TableSaver.js.map +1 -1
  169. package/dist/sidebar/aggregations/AggregationEdit.js +4 -5
  170. package/dist/sidebar/aggregations/AggregationEdit.js.map +1 -1
  171. package/dist/sidebar/aggregations/AggregationOperation.js +3 -3
  172. package/dist/sidebar/aggregations/AggregationOperation.js.map +1 -1
  173. package/dist/sidebar/aggregations/AggregationUtils.js +0 -1
  174. package/dist/sidebar/aggregations/AggregationUtils.js.map +1 -1
  175. package/dist/sidebar/aggregations/Aggregations.d.ts.map +1 -1
  176. package/dist/sidebar/aggregations/Aggregations.js +3 -5
  177. package/dist/sidebar/aggregations/Aggregations.js.map +1 -1
  178. package/dist/sidebar/aggregations/index.js.map +1 -1
  179. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.d.ts.map +1 -1
  180. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js +1 -3
  181. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js.map +1 -1
  182. package/dist/sidebar/conditional-formatting/ConditionEditor.d.ts.map +1 -1
  183. package/dist/sidebar/conditional-formatting/ConditionEditor.js +2 -3
  184. package/dist/sidebar/conditional-formatting/ConditionEditor.js.map +1 -1
  185. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js +1 -2
  186. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js.map +1 -1
  187. package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js.map +1 -1
  188. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js +2 -3
  189. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +1 -1
  190. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js +21 -21
  191. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js.map +1 -1
  192. package/dist/sidebar/conditional-formatting/RowFormatEditor.d.ts.map +1 -1
  193. package/dist/sidebar/conditional-formatting/RowFormatEditor.js +1 -3
  194. package/dist/sidebar/conditional-formatting/RowFormatEditor.js.map +1 -1
  195. package/dist/sidebar/conditional-formatting/StyleEditor.d.ts.map +1 -1
  196. package/dist/sidebar/conditional-formatting/StyleEditor.js +2 -3
  197. package/dist/sidebar/conditional-formatting/StyleEditor.js.map +1 -1
  198. package/dist/sidebar/icons/BarIcon.js +1 -2
  199. package/dist/sidebar/icons/BarIcon.js.map +1 -1
  200. package/dist/sidebar/icons/FormatColumnWhereIcon.js +1 -2
  201. package/dist/sidebar/icons/FormatColumnWhereIcon.js.map +1 -1
  202. package/dist/sidebar/icons/FormatRowWhereIcon.js +1 -2
  203. package/dist/sidebar/icons/FormatRowWhereIcon.js.map +1 -1
  204. package/dist/sidebar/icons/HistogramIcon.js +1 -2
  205. package/dist/sidebar/icons/HistogramIcon.js.map +1 -1
  206. package/dist/sidebar/icons/LineIcon.js +1 -2
  207. package/dist/sidebar/icons/LineIcon.js.map +1 -1
  208. package/dist/sidebar/icons/PieIcon.js +1 -2
  209. package/dist/sidebar/icons/PieIcon.js.map +1 -1
  210. package/dist/sidebar/icons/ScatterIcon.js +1 -2
  211. package/dist/sidebar/icons/ScatterIcon.js.map +1 -1
  212. package/dist/sidebar/icons/index.js.map +1 -1
  213. package/dist/sidebar/index.js.map +1 -1
  214. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.d.ts +2 -2
  215. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.d.ts.map +1 -1
  216. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js +34 -36
  217. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js.map +1 -1
  218. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.js +3 -3
  219. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.js.map +1 -1
  220. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.js +3 -5
  221. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.js.map +1 -1
  222. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.d.ts.map +1 -1
  223. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js +2 -4
  224. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js.map +1 -1
  225. package/dist/sidebar/visibility-ordering-builder/sortable-tree/PointerSensorWithInteraction.js.map +1 -1
  226. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.js +4 -4
  227. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.js.map +1 -1
  228. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeInner.js +3 -6
  229. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeInner.js.map +1 -1
  230. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.js.map +1 -1
  231. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.js +1 -2
  232. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.js.map +1 -1
  233. package/dist/sidebar/visibility-ordering-builder/sortable-tree/keyboardCoordinates.js.map +1 -1
  234. package/dist/sidebar/visibility-ordering-builder/sortable-tree/types.js.map +1 -1
  235. package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.d.ts +1 -2
  236. package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.d.ts.map +1 -1
  237. package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js.map +1 -1
  238. package/package.json +17 -18
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGrid.js","names":["React","Component","memoize","classNames","CSSTransition","PropTypes","deepEqual","Log","FontAwesomeIcon","ContextActions","Stack","Menu","Page","Popper","ThemeExport","Tooltip","Button","ContextActionUtils","SlideTransition","Grid","GridRange","GridUtils","isEditableGridModel","isExpandableGridModel","isDeletableGridModel","dhEye","dhFilterFilled","dhGraphLineUp","dhTriangleDownSquare","vsClose","vsCloudDownload","vsEdit","vsFilter","vsMenu","vsReply","vsRuby","vsSearch","vsSplitHorizontal","vsSymbolOperator","vsTools","DateUtils","Formatter","FormatterUtils","TableUtils","isSortDirection","assertNotNull","copyToClipboard","EMPTY_ARRAY","EMPTY_MAP","Pending","PromiseUtils","ValidationError","getOrThrow","Type","FilterType","throttle","debounce","clamp","getFormatColumns","PendingDataBottomBar","IrisGridCopyHandler","FilterInputField","CopyCellKeyHandler","ClearFilterKeyHandler","CopyKeyHandler","ReverseKeyHandler","IrisGridCellOverflowMouseHandler","IrisGridColumnSelectMouseHandler","IrisGridColumnTooltipMouseHandler","IrisGridContextMenuHandler","IrisGridCopyCellMouseHandler","IrisGridDataSelectMouseHandler","IrisGridPartitionedTableMouseHandler","IrisGridFilterMouseHandler","IrisGridRowTreeMouseHandler","IrisGridSortMouseHandler","IrisGridTokenMouseHandler","PendingMouseHandler","ToastBottomBar","IrisGridMetricCalculator","IrisGridModelUpdater","IrisGridRenderer","createDefaultIrisGridTheme","ColumnStatistics","AdvancedFilterCreator","Aggregations","AggregationEdit","AggregationUtils","ChartBuilder","CustomColumnBuilder","OptionType","RollupRows","TableCsvExporter","TableSaver","VisibilityOrderingBuilder","DownloadServiceWorkerUtils","IrisGridUtils","CrossColumnSearch","IrisGridModel","isPartitionedGridModel","IrisGridPartitionSelector","SelectDistinctBuilder","AdvancedSettingsType","AdvancedSettingsMenu","SHORTCUTS","ConditionalFormattingMenu","ConditionalFormatEditor","IrisGridCellOverflowModal","GotoRow","AggregationOperation","IrisGridThemeContext","isMissingPartitionError","NoPastePermissionModal","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","log","module","VIEWPORT_LOADING_DELAY","UPDATE_DOWNLOAD_THROTTLE","SET_FILTER_DEBOUNCE","SEEK_ROW_DEBOUNCE","SET_CONDITIONAL_FORMAT_DEBOUNCE","DEFAULT_AGGREGATION_SETTINGS","Object","freeze","aggregations","showOnTop","UNFORMATTED_DATE_PATTERN","isEmptyConfig","_ref","advancedFilters","aggregationSettings","customColumns","quickFilters","reverse","rollupConfig","searchFilter","selectDistinctColumns","sorts","size","length","IrisGrid","constructor","props","_model$layoutHints","_model$layoutHints$hi","_model$columns$0$name","_model$columns$","_defineProperty","column","handleAdvancedMenuOpened","bind","max","model","advancedFilterOptions","sortDirection","formatter","onFilterChange","handleAdvancedFilterChange","onSortChange","handleAdvancedFilterSortChange","onDone","handleAdvancedFilterDone","options","tableUtils","isChartBuilderAvailable","isCustomColumnsAvailable","isFormatColumnsAvailable","isOrganizeColumnsAvailable","isRollupAvailable","isTotalsAvailable","isSelectDistinctAvailable","isExportAvailable","toggleFilterBarAction","toggleSearchBarAction","toggleGotoRowAction","isFilterBarShown","showSearchBar","canDownloadCsv","canToggleSearch","showGotoRow","hasAdvancedSettings","optionItems","push","type","CHART_BUILDER","title","icon","VISIBILITY_ORDERING_BUILDER","CONDITIONAL_FORMATTING","CUSTOM_COLUMN_BUILDER","ROLLUP_ROWS","AGGREGATIONS","SELECT_DISTINCT","TABLE_EXPORTER","ADVANCED_SETTINGS","QUICK_FILTERS","subtitle","shortcut","getDisplayText","isOn","onChange","action","SEARCH_BAR","GOTO","metricCalculator","userColumnWidths","getHiddenColumns","Map","initialColumnWidths","columns","aggregationMap","forEach","_ref2","operation","selected","invert","getOperationColumnNames","operationMap","filter","a","isRollupOperation","_ref3","name","_operationMap$name","newOperations","map","o","dh","rules","rulesParam","preview","editIndex","debug","undefined","getCachedFormatColumns","originalColumns","config","getModelRollupConfig","_config$columns$lengt","_config$columns","agg","getOperationMap","operationOrder","getOperationOrder","defaultOperation","SKIP","hoverSelectColumn","isSelectingColumn","loadingScrimProgress","isMenuShown","customFilters","getFiltersFromFilterMap","contextTheme","theme","isEditable","floatingRowCount","density","_theme$rowFooterWidth","baseTheme","rowFooterWidth","state","resetCalculatedColumnWidths","resetCalculatedRowHeights","densityTheme","compact","spacious","_objectSpread","autoSelectRow","keyHandlers","sort","b","order","mouseHandlers","rendererProp","alwaysFetchColumns","movedColumns","floatingLeftColumnCount","floatingRightColumnCount","draggingRange","floatingColumns","i","getModelIndex","columnSet","Set","searchValue","selectedSearchColumns","invertSearchColumns","createSearchFilter","setState","loadingSpinnerShown","isViewportPending","startLoading","loadingCancelShown","loadingBlocksGrid","leading","trailing","conditionalFormatPreview","tableDownloadProgress","tableDownloadEstimatedTime","tableDownloadStatus","DOWNLOAD_STATUS","DOWNLOADING","overflowButtonTooltipProps","wrapperStyle","position","pointerEvents","popperOptions","placement","modifiers","flip","behavior","style","children","ref","handleTooltipRef","Date","now","expandCellTooltipProps","expandTooltipDisplayValue","isExpandAllAvailable","textAlign","isMacPlatform","hoverTooltipProps","hoverDisplayValue","className","input","gotoValue","gotoValueManuallyChanged","debouncedSeekRow","seekRow","handleGotoRowOpened","handleGotoRowClosed","handleAdvancedMenuClosed","handleAggregationChange","handleAggregationsChange","handleAggregationEdit","handleAnimationLoop","handleAnimationStart","handleAnimationEnd","handleChartChange","handleChartCreate","handleGridError","handleFilterBarChange","handleFilterBarDone","handleFilterBarTab","handleCancel","handleMenu","handleMenuClose","handleMenuSelect","handleMenuBack","handleRequestFailed","handleSelectionChanged","handleMovedColumnsChanged","handleHeaderGroupsChanged","handleUpdate","handleTableChanged","handleViewChanged","handleFormatSelection","handleConditionalFormatCreate","handleConditionalFormatEdit","handleConditionalFormatsChange","handleConditionalFormatEditorSave","handleConditionalFormatEditorCancel","handleUpdateCustomColumns","handleCustomColumnsChanged","handleSelectDistinctChanged","handlePendingDataUpdated","handleViewportUpdated","handlePendingCommitClicked","handlePendingDiscardClicked","handleGotoRowSelectedRowNumberSubmit","focusRowInGrid","handleDownloadTable","handleDownloadTableStart","handleCancelDownloadTable","handleDownloadCanceled","handleDownloadCompleted","handlePartitionChange","handleColumnVisibilityChanged","handleColumnVisibilityReset","handleCrossColumnSearch","handleRollupChange","handleOverflowClose","handleCloseNoPastePermissionModal","getColumnBoundingRect","handleGotoRowSelectedRowNumberChanged","handleGotoValueSelectedColumnNameChanged","handleGotoValueSelectedFilterChanged","handleGotoValueChanged","handleGotoValueSubmitted","makeQuickFilter","setFilterMap","grid","lastLoadedConfig","pending","globalColumnFormats","decimalFormatOptions","integerFormatOptions","truncateNumbersWithPound","showEmptyStrings","showNullStrings","showExtraGroupColumn","tableSaver","crossColumnRef","createRef","isAnimating","filterInputRef","gotoRowRef","isCopying","toggleFilterBar","TABLE","TOGGLE_QUICK_FILTER","toggleSearchBar","TOGGLE_SEARCH","toggleGotoRow","GOTO_ROW","discardAction","pendingDataMap","discardPending","catch","error","INPUT_TABLE","DISCARD","commitAction","pendingDataErrors","commitPending","COMMIT","contextActions","conditionalFormats","customColumnFormatMap","isSelectingPartition","partitions","partitionConfig","movedColumnsProp","movedRows","movedRowsProp","userRowHeights","canCopy","frozenColumns","columnHeaderGroups","initialMovedColumns","initialMovedRows","layoutHints","hiddenColumns","getColumnIndexByName","searchColumns","focusedFilterBarColumn","metrics","mode","shownAdvancedFilter","hoverAdvancedFilter","selectedRanges","copyOperation","loadingText","shownColumnTooltip","conditionalFormatEditIndex","isTableDownloading","isReady","rollupSelectedColumns","selectedAggregation","openOptions","pendingRowCount","pendingSavePromise","pendingSaveError","toastMessage","showOverflowModal","showNoPastePermissionModal","noPastePermissionError","overflowText","isGotoShown","gotoRow","gotoRowError","gotoValueError","gotoValueSelectedColumnName","gotoValueSelectedFilter","eqIgnoreCase","initialColumnHeaderGroups","componentDidMount","initState","startListening","componentDidUpdate","prevProps","prevState","inputFilters","settings","stopListening","changedInputFilters","inputFilter","includes","_advancedSettings$get","advancedSettings","replaceExistingFilters","get","FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS","clearGridInputField","clearCrossColumSearch","resetRanges","applyInputFilters","resetColumnSelection","updateFormatterSettings","updateSorts","loadingScrimStartTime","loadingScrimFinishTime","window","requestAnimationFrame","currentTime","totalTime","Math","min","debug2","isAggEditType","option","AGGREGATION_EDIT","some","removeEmptyAggregations","sendStateChange","componentWillUnmount","cancel","updateSearchFilter","loadingTimer","clearTimeout","handleDownloadProgressUpdate","animationFrame","cancelAnimationFrame","showViewportLoading","gridWrapper","_this$grid$canvasWrap","_this$grid","canvasWrapper","current","getKeyHandlers","getCachedKeyHandlers","renderer","getCachedRenderer","getMouseHandlers","getCachedMouseHandlers","getValueForCell","columnIndex","rowIndex","rawValue","arguments","modelColumn","getModelColumn","modelRow","getModelRow","value","valueForCell","isDateType","i18n","DateTimeFormat","format","TimeZone","getTimeZone","timeZone","textForCell","modelColumns","modelRows","getTheme","_ref4","contextDensity","context","getCachedTheme","floatingTopRowCount","floatingBottomRowCount","getVisibleColumn","modelIndex","getVisibleIndex","text","err","replaceExisting","newAdvancedFilters","newQuickFilters","isChanged","_ref5","findIndex","_ref6","columnName","columnType","delete","applyQuickFilter","concat","trim","quickFilter","set","setAdvancedFilterMap","setAdvancedFilter","_ref7","setQuickFilter","_ref8","filterMap","_advancedSettings$get2","clearFiltersOnLinkerFilterUpdate","LINK_CHANGE_CLEARS_ALL_FILTERS","clearAllFilters","_ref9","filterList","find","c","combinedText","combineFiltersFromList","removeQuickFilter","removeColumnFilter","modelRange","clearRange","Array","isArray","_ref10","_","_ref11","clearAllAggregations","setValue","rebuildFilters","key","makeAdvancedFilter","setFilters","_ref12","_settings$defaultDeci","_settings$defaultInte","_settings$truncateNum","_settings$showEmptySt","_settings$showNullStr","_settings$showExtraGr","forceUpdate","getColumnFormats","dateTimeFormatterOptions","getDateTimeFormatterOptions","defaultDecimalFormatOptions","defaultIntegerFormatOptions","isColumnFormatChanged","isDateFormattingChanged","isDecimalFormattingChanged","isIntegerFormattingChanged","isTruncateNumbersChanged","isShowEmptyStringsChanged","isShowNullStringsChanged","isShowExtraGroupColumnChanged","updateFormatter","updatedFormats","_this$globalColumnFor","update","mergedColumnFormats","values","initFormatter","isPartitionRequired","loadPartitionsTable","loadTableState","handleTableLoadError","applyInputFiltersOnInit","reverseType","inputFiltersWithValues","REVERSE_TYPE","POST_SORT","_this","_asyncToGenerator","initializePartitionConfig","isCanceled","_this2","keyTable","add","partitionKeysTable","resolved","close","desc","applySort","setViewport","addEventListener","Table","EVENT_UPDATED","event","detail","data","rows","stopLoading","row","newPartition","isPartitionAwareSourceTable","e","selectPartitionKeyFromTable","getRowDataMap","partitionColumnSet","partitionColumns","entries","_ref13","has","_ref14","columnData","copyCell","String","copyColumnHeader","columnDepth","copyRanges","ranges","includeHeaders","formatValues","getUserColumnWidths","boundedRanges","columnCount","rowCount","clearSelectedRanges","setViewState","top","_this$gridWrapper$get","_this$gridWrapper","minScrimTransitionTime","maxScrimTransitionTime","height","getBoundingClientRect","scrimTransitionTime","setTimeout","loadingSpinnerDelay","rollback","canRollback","EVENT","UPDATED","REQUEST_FAILED","COLUMNS_CHANGED","PENDING_DATA_UPDATED","VIEWPORT_UPDATED","TABLE_CHANGED","removeEventListener","focus","_this$grid2","focusFilterBar","isFilterable","left","rightVisible","lastLeft","_this$grid3","_this$grid4","_this$grid5","metricState","getMetricState","newLeft","getLastLeft","getVisibleWidth","leftOffset","lastFocusedFilterBarColumn","hideColumnByVisibleIndex","columnVisibleIndex","_this$grid6","setColumnWidth","freezeColumnByColumnName","allFrozenColumns","visibleIndex","newMovedColumns","moveItem","unFreezeColumnByColumnName","frontColumns","modelIndexes","isVisible","_this$grid7","defaultWidth","calculatedWidth","calculatedColumnWidths","resetColumnWidth","_model$layoutHints$fr","_model$layoutHints2","_this$grid8","updateCanvas","prevConfig","onError","loadingMessage","showAllColumns","_this$grid9","columnWidth","toggleSort","addToExisting","info","isColumnSortable","currentSorts","toggleSortForColumn","_this$grid10","sortColumn","_this$grid11","direction","none","isAbs","_this$grid12","isReversible","focusIndex","isTextType","_this$grid13","isTableSearchAvailable","_model$layoutHints3","_dh$SearchDisplayMode","_dh$SearchDisplayMode2","searchDisplayMode","SearchDisplayMode","SEARCH_DISPLAY_HIDE","SEARCH_DISPLAY_SHOW","_this$crossColumnRef","_this$crossColumnRef2","_this$grid14","_this$grid15","_this$grid16","_this$gotoRowRef$curr","cursorRow","cursorColumn","cellValue","convertValueToText","_this3","_document","_document$activeEleme","Error","containsGridCellInputField","document","activeElement","classList","contains","_this3$grid","newPendingSavePromise","then","_this4","selectColumn","onColumnSelected","selectData","dataMap","onDataSelected","_this5","groupedColumns","_loop","isExpandable","isRowExpandable","isGrouped","index","_this$grid17","oldSort","getSortForColumn","newSort","descending","asc","setSortForColumn","_this$grid18","_this$filterInputRef","_this$filterInputRef2","onCreateChart","warn","_ref15","setGridFocus","defocusInput","_this$grid19","backward","selectedFormat","prevCustomColumnFormatMap","normalizedType","getNormalizedType","columnFormattingRule","makeColumnFormattingRule","stopPropagation","_ref16","newOptions","pop","_ref17","_this$grid20","_this$grid$state","_this$grid21","selectionEndRow","bottomViewport","bottomNonFloating","_this$grid22","onSelectionChanged","onChangeApplied","parseColumnHeaderGroups","groups","_this$grid23","tooltip","startTimer","CONDITIONAL_FORMATTING_EDIT","oldCustomColumns","customColumn","removedColumnNames","getRemovedCustomColumnNames","newSorts","removeSortsInColumns","removeFiltersInColumns","removeColumnFromMovedColumns","newSelectDistinctColumns","removeColumnsFromSelectDistinctColumns","_this$grid24","_this$grid25","handleResizeColumn","_this$grid26","contentWidth","contentColumnWidths","userWidths","setCalculatedColumnWidth","handleResizeAllColumns","_this$grid27","allColumns","allColumnWidths","visibleColumns","_ref18","width","_ref19","contentWidths","manualColumns","_rollupConfig$columns","_rollupConfig$columns2","added","removed","isRollup","changes","shouldStartLoading","every","op","isRollupProhibited","join","aggregation","_rollupConfig$columns3","_rollupConfig$columns4","_ref20","_rollupConfig$columns5","_rollupConfig$columns6","resetGridViewState","columnNames","INITIATING","fileName","frozenTable","tableSubscription","snapshotRanges","modelRanges","includeColumnHeaders","useUnformattedValues","startDownload","_ref21","newAggregations","inputString","_arguments","_this6","_this6$grid","isBackwards","selectedColumnName","isSeekRowAvailable","selectedColumn","getColumnByName","searchFromRow","isContains","containsIgnoreCase","isIgnoreCase","_this6$grid2","columnDataType","dataType","CHAR","STRING","ValueType","DATETIME","startDate","parseDateRange","DECIMAL","INT","isBigDecimalType","isBigIntegerType","inputValue","parseInt","Number","NEGATIVE_INFINITY","POSITIVE_INFINITY","NUMBER","makeValue","setFocusRow","_this$tableSaver","cancelDownload","FINISHED","CANCELED","deleteRanges","isDeletable","columnAllowedCursor","cursor","topOffset","irisGridState","gridState","onStateChange","handleOpenNoPastePermissionModal","errorMessage","_this$gridWrapper2","gridRect","popperMargin","columnHeaderHeight","allColumnXs","columnHeaderMaxDepth","columnX","bottom","right","x","y","toJSON","rowNumber","rowInt","_this$grid28","_this$grid29","_this$grid30","target","getColumnTooltip","boundedLeft","boundedWidth","abs","virtualReference","clientWidth","clientHeight","timeout","interactive","referenceObject","onExited","onStatistics","_this$tooltip","_this$grid31","prevColumnName","prevColumn","render","_rollupConfig$columns7","_rollupConfig$columns8","_this7","_this$grid33","_this$grid33$state$dr","_openOptions","getDownloadWorker","isStuckToBottom","isStuckToRight","onlyFetchVisibleColumns","onAdvancedSettingsChange","singleColumnHeaderHeight","getCachedFilter","stateOverride","getCachedStateOverride","focusField","debounceMs","minDebounce","round","maxDebounce","gridX","gridY","_theme$filterBarHeigh","_theme$filterBarHeigh2","_this$grid32","filterBarHeight","fieldWidth","fieldHeight","minWidth","isValid","advancedFilter","isBarFiltered","active","isAdvancedFilterSet","onAdvancedFiltersTriggered","onTab","onContextMenu","handleContextMenu","loadingElement","loadingStatus","show","onClick","transform","columnTooltip","_this$tooltip2","filterBar","_loop2","isFilterSet","isFilterVisible","element","hidden","kind","_this7$grid","onMouseEnter","onMouseLeave","advancedFilterMenus","_loop3","xColumnHeader","xFilterBar","onEntered","getAdvancedMenuOpenedHandler","isShown","closeOnBlur","positionFixed","getCachedAdvancedFilterMenuActions","_ret","getCachedOptionItems","getCachedHiddenColumns","openOptionsStack","onSubmit","onColumnVisibilityChanged","onReset","onMovedColumnsChanged","onColumnHeaderGroupChanged","onCreate","onSelect","handleConditionalFormatEditorUpdate","rule","onUpdate","onSave","onCancel","availablePlacements","onEdit","isDownloading","onDownload","onDownloadStart","items","role","in","transitionSlowMs","onEnter","onExit","mountOnEnter","unmountOnExit","selectedColumns","invertSelection","isStickyBottom","onViewChanged","isOpen","onClose","getAlwaysFetchColumns","draggingColumn","range","formatColumns","getCachedPreviewFormatColumns","totalsConfig","getModelTotalsConfig","getOverflowButtonTooltip","getExpandCellTooltip","getHoverTooltip","onGotoRowSubmit","onGotoRowNumberChanged","onEntering","onExiting","gotoValueFilter","onGotoValueSelectedColumnNameChanged","onGotoValueSelectedFilterChanged","onGotoValueChanged","onGotoValueSubmit","isSaving","saveTooltip","discardTooltip","onDiscard","onDownloadCompleted","onDownloadCanceled","onDownloadProgressUpdate","onBack","actions","columnSelectionValidator","columnNotAllowedCursor","copyCursor","getServiceWorker","defaultDateTimeFormat","FULL_DATE_FORMAT","showTimeZone","showTSeparator","shape","defaultFormatString","string"],"sources":["../src/IrisGrid.tsx"],"sourcesContent":["import React, {\n type ChangeEvent,\n Component,\n type CSSProperties,\n type ReactElement,\n type ReactNode,\n} from 'react';\nimport memoize from 'memoizee';\nimport classNames from 'classnames';\nimport { CSSTransition } from 'react-transition-group';\nimport PropTypes from 'prop-types';\nimport deepEqual from 'fast-deep-equal';\nimport Log from '@deephaven/log';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n ContextActions,\n Stack,\n Menu,\n Page,\n Popper,\n ThemeExport,\n Tooltip,\n type ContextAction,\n type PopperOptions,\n type ReferenceObject,\n Button,\n ContextActionUtils,\n type ResolvableContextAction,\n SlideTransition,\n} from '@deephaven/components';\nimport {\n Grid,\n type GridMetrics,\n type GridMouseHandler,\n GridRange,\n type GridRangeIndex,\n type GridThemeType,\n GridUtils,\n type KeyHandler,\n type ModelIndex,\n type ModelSizeMap,\n type MoveOperation,\n type VisibleIndex,\n type GridState,\n isEditableGridModel,\n type BoundedAxisRange,\n isExpandableGridModel,\n isDeletableGridModel,\n} from '@deephaven/grid';\nimport {\n dhEye,\n dhFilterFilled,\n dhGraphLineUp,\n dhTriangleDownSquare,\n vsClose,\n vsCloudDownload,\n vsEdit,\n vsFilter,\n vsMenu,\n vsReply,\n vsRuby,\n vsSearch,\n vsSplitHorizontal,\n vsSymbolOperator,\n vsTools,\n} from '@deephaven/icons';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport {\n DateUtils,\n Formatter,\n FormatterUtils,\n TableUtils,\n type FormattingRule,\n type ReverseType,\n type RowDataMap,\n type SortDirection,\n type DateTimeColumnFormatterOptions,\n type TableColumnFormat,\n type Settings,\n isSortDirection,\n} from '@deephaven/jsapi-utils';\nimport {\n assertNotNull,\n copyToClipboard,\n EMPTY_ARRAY,\n EMPTY_MAP,\n Pending,\n PromiseUtils,\n ValidationError,\n getOrThrow,\n type EventT,\n} from '@deephaven/utils';\nimport {\n Type as FilterType,\n type TypeValue as FilterTypeValue,\n} from '@deephaven/filters';\nimport throttle from 'lodash.throttle';\nimport debounce from 'lodash.debounce';\nimport clamp from 'lodash.clamp';\nimport {\n type FormattingRule as SidebarFormattingRule,\n getFormatColumns,\n} from './sidebar/conditional-formatting/ConditionalFormattingUtils';\nimport PendingDataBottomBar from './PendingDataBottomBar';\nimport IrisGridCopyHandler, { type CopyOperation } from './IrisGridCopyHandler';\nimport FilterInputField from './FilterInputField';\nimport {\n CopyCellKeyHandler,\n ClearFilterKeyHandler,\n CopyKeyHandler,\n ReverseKeyHandler,\n} from './key-handlers';\nimport {\n IrisGridCellOverflowMouseHandler,\n IrisGridColumnSelectMouseHandler,\n IrisGridColumnTooltipMouseHandler,\n IrisGridContextMenuHandler,\n IrisGridCopyCellMouseHandler,\n IrisGridDataSelectMouseHandler,\n IrisGridPartitionedTableMouseHandler,\n IrisGridFilterMouseHandler,\n IrisGridRowTreeMouseHandler,\n IrisGridSortMouseHandler,\n IrisGridTokenMouseHandler,\n PendingMouseHandler,\n} from './mousehandlers';\nimport ToastBottomBar from './ToastBottomBar';\nimport IrisGridMetricCalculator from './IrisGridMetricCalculator';\nimport IrisGridModelUpdater from './IrisGridModelUpdater';\nimport IrisGridRenderer from './IrisGridRenderer';\nimport {\n createDefaultIrisGridTheme,\n type IrisGridThemeType,\n} from './IrisGridTheme';\nimport ColumnStatistics from './ColumnStatistics';\nimport './IrisGrid.scss';\nimport AdvancedFilterCreator from './AdvancedFilterCreator';\nimport {\n Aggregations,\n AggregationEdit,\n AggregationUtils,\n ChartBuilder,\n CustomColumnBuilder,\n OptionType,\n RollupRows,\n TableCsvExporter,\n TableSaver,\n VisibilityOrderingBuilder,\n DownloadServiceWorkerUtils,\n} from './sidebar';\nimport IrisGridUtils from './IrisGridUtils';\nimport CrossColumnSearch from './CrossColumnSearch';\nimport IrisGridModel from './IrisGridModel';\nimport {\n isPartitionedGridModel,\n type PartitionConfig,\n type PartitionedGridModel,\n} from './PartitionedGridModel';\nimport IrisGridPartitionSelector from './IrisGridPartitionSelector';\nimport SelectDistinctBuilder from './sidebar/SelectDistinctBuilder';\nimport AdvancedSettingsType from './sidebar/AdvancedSettingsType';\nimport AdvancedSettingsMenu, {\n type AdvancedSettingsMenuCallback,\n} from './sidebar/AdvancedSettingsMenu';\nimport SHORTCUTS from './IrisGridShortcuts';\nimport ConditionalFormattingMenu from './sidebar/conditional-formatting/ConditionalFormattingMenu';\n\nimport ConditionalFormatEditor from './sidebar/conditional-formatting/ConditionalFormatEditor';\nimport IrisGridCellOverflowModal from './IrisGridCellOverflowModal';\nimport GotoRow, { type GotoRowElement } from './GotoRow';\nimport {\n type Aggregation,\n type AggregationSettings,\n} from './sidebar/aggregations/Aggregations';\nimport { type ChartBuilderSettings } from './sidebar/ChartBuilder';\nimport AggregationOperation from './sidebar/aggregations/AggregationOperation';\nimport { type UIRollupConfig } from './sidebar/RollupRows';\nimport {\n type Action,\n type AdvancedFilterMap,\n type AdvancedFilterOptions,\n type ColumnName,\n type InputFilter,\n type OperationMap,\n type OptionItem,\n type PendingDataErrorMap,\n type PendingDataMap,\n type QuickFilterMap,\n type ReadonlyAdvancedFilterMap,\n type ReadonlyAggregationMap,\n type ReadonlyQuickFilterMap,\n type UITotalsTableConfig,\n} from './CommonTypes';\nimport type ColumnHeaderGroup from './ColumnHeaderGroup';\nimport { IrisGridThemeContext } from './IrisGridThemeProvider';\nimport { isMissingPartitionError } from './MissingPartitionError';\nimport { NoPastePermissionModal } from './NoPastePermissionModal';\n\nconst log = Log.module('IrisGrid');\n\nconst VIEWPORT_LOADING_DELAY = 500;\n\nconst UPDATE_DOWNLOAD_THROTTLE = 500;\n\nconst SET_FILTER_DEBOUNCE = 250;\n\nconst SEEK_ROW_DEBOUNCE = 250;\n\nconst SET_CONDITIONAL_FORMAT_DEBOUNCE = 250;\n\nconst DEFAULT_AGGREGATION_SETTINGS = Object.freeze({\n aggregations: EMPTY_ARRAY,\n showOnTop: false,\n});\n\nconst UNFORMATTED_DATE_PATTERN = `yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSS z`;\n\nfunction isEmptyConfig({\n advancedFilters,\n aggregationSettings,\n customColumns,\n quickFilters,\n reverse,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts,\n}: {\n advancedFilters: ReadonlyAdvancedFilterMap;\n aggregationSettings: AggregationSettings;\n customColumns: readonly ColumnName[];\n quickFilters: ReadonlyQuickFilterMap;\n reverse: boolean;\n rollupConfig?: UIRollupConfig;\n searchFilter?: DhType.FilterCondition;\n selectDistinctColumns: readonly ColumnName[];\n sorts: readonly DhType.Sort[];\n}): boolean {\n return (\n advancedFilters.size === 0 &&\n aggregationSettings.aggregations.length === 0 &&\n customColumns.length === 0 &&\n quickFilters.size === 0 &&\n !reverse &&\n rollupConfig == null &&\n searchFilter == null &&\n selectDistinctColumns.length === 0 &&\n sorts.length === 0\n );\n}\n\nexport type FilterData = {\n operator: FilterTypeValue;\n text: string;\n value: unknown;\n startColumnIndex: number;\n};\n\nexport type FilterMap = Map<\n ColumnName,\n {\n columnType: string | null;\n filterList: FilterData[];\n }\n>;\n\nexport interface IrisGridContextMenuData {\n model: IrisGridModel;\n value: unknown;\n valueText: string | null;\n column: DhType.Column;\n rowIndex: GridRangeIndex;\n columnIndex: GridRangeIndex;\n modelRow: GridRangeIndex;\n modelColumn: GridRangeIndex;\n}\n\nexport interface IrisGridProps {\n children: React.ReactNode;\n advancedFilters: ReadonlyAdvancedFilterMap;\n advancedSettings: Map<AdvancedSettingsType, boolean>;\n alwaysFetchColumns: readonly ColumnName[];\n isFilterBarShown: boolean;\n applyInputFiltersOnInit: boolean;\n conditionalFormats: readonly SidebarFormattingRule[];\n customColumnFormatMap: Map<ColumnName, FormattingRule>;\n movedColumns: readonly MoveOperation[];\n movedRows: readonly MoveOperation[];\n inputFilters: readonly InputFilter[];\n customFilters: readonly DhType.FilterCondition[];\n model: IrisGridModel;\n onCreateChart: (settings: ChartBuilderSettings, model: IrisGridModel) => void;\n onColumnSelected: (column: DhType.Column) => void;\n onError: (error: unknown) => void;\n onDataSelected: (index: ModelIndex, map: RowDataMap) => void;\n onStateChange: (irisGridState: IrisGridState, gridState: GridState) => void;\n onAdvancedSettingsChange: AdvancedSettingsMenuCallback;\n\n /** @deprecated use `partitionConfig` instead */\n partitions?: (string | null)[];\n partitionConfig?: PartitionConfig;\n sorts: readonly DhType.Sort[];\n\n /** @deprecated use `reverse` instead */\n reverseType?: ReverseType;\n reverse: boolean;\n quickFilters: ReadonlyQuickFilterMap | null;\n customColumns: readonly ColumnName[];\n selectDistinctColumns: readonly ColumnName[];\n settings?: Settings;\n userColumnWidths: ModelSizeMap;\n userRowHeights: ModelSizeMap;\n onSelectionChanged: (gridRanges: readonly GridRange[]) => void;\n rollupConfig?: UIRollupConfig;\n aggregationSettings: AggregationSettings;\n\n isSelectingColumn: boolean;\n isSelectingPartition: boolean;\n isStuckToBottom: boolean;\n isStuckToRight: boolean;\n\n // eslint-disable-next-line react/no-unused-prop-types\n columnSelectionValidator: (value: DhType.Column | null) => boolean;\n columnAllowedCursor: string;\n\n // eslint-disable-next-line react/no-unused-prop-types\n columnNotAllowedCursor: string;\n\n // eslint-disable-next-line react/no-unused-prop-types\n copyCursor: string;\n name: string;\n onlyFetchVisibleColumns: boolean;\n\n showSearchBar: boolean;\n searchValue: string;\n selectedSearchColumns: readonly ColumnName[];\n invertSearchColumns: boolean;\n\n // eslint-disable-next-line react/no-unused-prop-types\n onContextMenu: (\n data: IrisGridContextMenuData\n ) => readonly ResolvableContextAction[];\n\n pendingDataMap?: PendingDataMap;\n getDownloadWorker: () => Promise<ServiceWorker>;\n\n canCopy: boolean;\n canDownloadCsv: boolean;\n frozenColumns: readonly ColumnName[];\n\n // Theme override for IrisGridTheme\n theme: GridThemeType;\n\n canToggleSearch: boolean;\n\n columnHeaderGroups?: readonly ColumnHeaderGroup[];\n\n // Optional key and mouse handlers\n keyHandlers: readonly KeyHandler[];\n mouseHandlers: readonly GridMouseHandler[];\n\n // Pass in a custom renderer to the grid for advanced use cases\n renderer?: IrisGridRenderer;\n\n density?: 'compact' | 'regular' | 'spacious';\n}\n\nexport interface IrisGridState {\n isFilterBarShown: boolean;\n isSelectingPartition: boolean;\n focusedFilterBarColumn: number | null;\n metricCalculator: IrisGridMetricCalculator;\n metrics?: GridMetrics;\n\n partitionConfig?: PartitionConfig;\n\n // setAdvancedFilter and setQuickFilter mutate the arguments\n // so we want to always use map copies from the state instead of props\n quickFilters: ReadonlyQuickFilterMap;\n advancedFilters: ReadonlyAdvancedFilterMap;\n shownAdvancedFilter: number | null;\n hoverAdvancedFilter: number | null;\n\n sorts: readonly DhType.Sort[];\n reverse: boolean;\n customColumns: readonly ColumnName[];\n selectDistinctColumns: readonly ColumnName[];\n\n // selected range in table\n selectedRanges: readonly GridRange[];\n\n // Current ongoing copy operation\n copyOperation: CopyOperation | null;\n\n // The filter that is currently being applied. Reset after update is received\n loadingText: string | null;\n loadingScrimProgress: number | null;\n loadingSpinnerShown: boolean;\n loadingCancelShown: boolean;\n loadingBlocksGrid: boolean;\n\n movedColumns: readonly MoveOperation[];\n movedRows: readonly MoveOperation[];\n\n shownColumnTooltip: number | null;\n\n formatter: Formatter;\n isMenuShown: boolean;\n customColumnFormatMap: Map<ColumnName, FormattingRule>;\n\n conditionalFormats: readonly SidebarFormattingRule[];\n conditionalFormatEditIndex: number | null;\n conditionalFormatPreview?: SidebarFormattingRule;\n\n // Column user is hovering over for selection\n hoverSelectColumn: GridRangeIndex;\n\n isTableDownloading: boolean;\n isReady: boolean;\n tableDownloadStatus: string;\n tableDownloadProgress: number;\n tableDownloadEstimatedTime: number | null;\n\n showSearchBar: boolean;\n searchFilter?: DhType.FilterCondition;\n searchValue: string;\n selectedSearchColumns: readonly ColumnName[];\n invertSearchColumns: boolean;\n\n rollupConfig?: UIRollupConfig;\n rollupSelectedColumns: readonly ColumnName[];\n aggregationSettings: AggregationSettings;\n selectedAggregation: Aggregation | null;\n\n openOptions: readonly OptionItem[];\n\n pendingRowCount: number;\n pendingDataMap: PendingDataMap;\n pendingDataErrors: PendingDataErrorMap;\n pendingSavePromise: Promise<void> | null;\n pendingSaveError: string | null;\n\n toastMessage: JSX.Element | null;\n frozenColumns: readonly ColumnName[];\n showOverflowModal: boolean;\n showNoPastePermissionModal: boolean;\n noPastePermissionError: string;\n overflowText: string;\n overflowButtonTooltipProps: CSSProperties | null;\n expandCellTooltipProps: CSSProperties | null;\n expandTooltipDisplayValue: string;\n hoverTooltipProps: CSSProperties | null;\n hoverDisplayValue: ReactNode;\n\n gotoRow: string;\n gotoRowError: string;\n gotoValueError: string;\n isGotoShown: boolean;\n\n gotoValueSelectedColumnName: ColumnName;\n gotoValueSelectedFilter: FilterTypeValue;\n gotoValueManuallyChanged: boolean;\n gotoValue: string;\n\n columnHeaderGroups: readonly ColumnHeaderGroup[];\n}\n\nclass IrisGrid extends Component<IrisGridProps, IrisGridState> {\n static contextType = IrisGridThemeContext;\n\n // eslint-disable-next-line react/static-property-placement, react/sort-comp\n declare context: React.ContextType<typeof IrisGridThemeContext>;\n\n static minDebounce = 150;\n\n static maxDebounce = 500;\n\n static loadingSpinnerDelay = 800;\n\n static defaultProps = {\n children: null,\n advancedFilters: EMPTY_MAP,\n advancedSettings: EMPTY_MAP,\n alwaysFetchColumns: EMPTY_ARRAY,\n conditionalFormats: EMPTY_ARRAY,\n customColumnFormatMap: EMPTY_MAP,\n isFilterBarShown: false,\n applyInputFiltersOnInit: false,\n movedColumns: EMPTY_ARRAY,\n movedRows: EMPTY_ARRAY,\n inputFilters: EMPTY_ARRAY,\n customFilters: EMPTY_ARRAY,\n onCreateChart: undefined,\n onColumnSelected: (): void => undefined,\n onDataSelected: (): void => undefined,\n onError: (): void => undefined,\n onStateChange: (): void => undefined,\n onAdvancedSettingsChange: (): void => undefined,\n partitions: undefined,\n partitionConfig: undefined,\n quickFilters: EMPTY_MAP,\n selectDistinctColumns: EMPTY_ARRAY,\n sorts: EMPTY_ARRAY,\n reverse: false,\n customColumns: EMPTY_ARRAY,\n aggregationSettings: DEFAULT_AGGREGATION_SETTINGS,\n rollupConfig: undefined,\n userColumnWidths: EMPTY_MAP,\n userRowHeights: EMPTY_MAP,\n onSelectionChanged: (): void => undefined,\n isSelectingColumn: false,\n isSelectingPartition: false,\n isStuckToBottom: false,\n isStuckToRight: false,\n columnSelectionValidator: null,\n columnAllowedCursor: 'linker',\n columnNotAllowedCursor: 'linker-not-allowed',\n copyCursor: 'copy',\n name: 'table',\n onlyFetchVisibleColumns: true,\n showSearchBar: false,\n searchValue: '',\n selectedSearchColumns: null,\n invertSearchColumns: true,\n onContextMenu: (): readonly ResolvableContextAction[] => EMPTY_ARRAY,\n pendingDataMap: EMPTY_MAP,\n getDownloadWorker: DownloadServiceWorkerUtils.getServiceWorker,\n settings: {\n timeZone: 'America/New_York',\n defaultDateTimeFormat: DateUtils.FULL_DATE_FORMAT,\n showTimeZone: false,\n showTSeparator: true,\n truncateNumbersWithPound: false,\n showEmptyStrings: true,\n showNullStrings: true,\n showExtraGroupColumn: true,\n formatter: EMPTY_ARRAY,\n decimalFormatOptions: PropTypes.shape({\n defaultFormatString: PropTypes.string,\n }),\n integerFormatOptions: PropTypes.shape({\n defaultFormatString: PropTypes.string,\n }),\n },\n canCopy: true,\n canDownloadCsv: true,\n frozenColumns: null,\n theme: null,\n // Do not set a default density prop since we need to know if it overrides the global density setting\n density: undefined,\n canToggleSearch: true,\n mouseHandlers: EMPTY_ARRAY,\n keyHandlers: EMPTY_ARRAY,\n };\n\n constructor(props: IrisGridProps) {\n super(props);\n\n this.handleAdvancedFilterChange =\n this.handleAdvancedFilterChange.bind(this);\n this.handleAdvancedFilterSortChange =\n this.handleAdvancedFilterSortChange.bind(this);\n this.handleAdvancedFilterDone = this.handleAdvancedFilterDone.bind(this);\n this.handleAdvancedMenuOpened = this.handleAdvancedMenuOpened.bind(this);\n this.handleGotoRowOpened = this.handleGotoRowOpened.bind(this);\n this.handleGotoRowClosed = this.handleGotoRowClosed.bind(this);\n this.handleAdvancedMenuClosed = this.handleAdvancedMenuClosed.bind(this);\n this.handleAggregationChange = this.handleAggregationChange.bind(this);\n this.handleAggregationsChange = this.handleAggregationsChange.bind(this);\n this.handleAggregationEdit = this.handleAggregationEdit.bind(this);\n this.handleAnimationLoop = this.handleAnimationLoop.bind(this);\n this.handleAnimationStart = this.handleAnimationStart.bind(this);\n this.handleAnimationEnd = this.handleAnimationEnd.bind(this);\n this.handleChartChange = this.handleChartChange.bind(this);\n this.handleChartCreate = this.handleChartCreate.bind(this);\n this.handleGridError = this.handleGridError.bind(this);\n this.handleFilterBarChange = this.handleFilterBarChange.bind(this);\n this.handleFilterBarDone = this.handleFilterBarDone.bind(this);\n this.handleFilterBarTab = this.handleFilterBarTab.bind(this);\n this.handleCancel = this.handleCancel.bind(this);\n this.handleMenu = this.handleMenu.bind(this);\n this.handleMenuClose = this.handleMenuClose.bind(this);\n this.handleMenuSelect = this.handleMenuSelect.bind(this);\n this.handleMenuBack = this.handleMenuBack.bind(this);\n this.handleRequestFailed = this.handleRequestFailed.bind(this);\n this.handleSelectionChanged = this.handleSelectionChanged.bind(this);\n this.handleMovedColumnsChanged = this.handleMovedColumnsChanged.bind(this);\n this.handleHeaderGroupsChanged = this.handleHeaderGroupsChanged.bind(this);\n this.handleUpdate = this.handleUpdate.bind(this);\n this.handleTableChanged = this.handleTableChanged.bind(this);\n this.handleTooltipRef = this.handleTooltipRef.bind(this);\n this.handleViewChanged = this.handleViewChanged.bind(this);\n this.handleFormatSelection = this.handleFormatSelection.bind(this);\n this.handleConditionalFormatCreate =\n this.handleConditionalFormatCreate.bind(this);\n this.handleConditionalFormatEdit =\n this.handleConditionalFormatEdit.bind(this);\n this.handleConditionalFormatsChange =\n this.handleConditionalFormatsChange.bind(this);\n this.handleConditionalFormatEditorSave =\n this.handleConditionalFormatEditorSave.bind(this);\n this.handleConditionalFormatEditorCancel =\n this.handleConditionalFormatEditorCancel.bind(this);\n this.handleUpdateCustomColumns = this.handleUpdateCustomColumns.bind(this);\n this.handleCustomColumnsChanged =\n this.handleCustomColumnsChanged.bind(this);\n this.handleSelectDistinctChanged =\n this.handleSelectDistinctChanged.bind(this);\n this.handlePendingDataUpdated = this.handlePendingDataUpdated.bind(this);\n this.handleViewportUpdated = this.handleViewportUpdated.bind(this);\n this.handlePendingCommitClicked =\n this.handlePendingCommitClicked.bind(this);\n this.handlePendingDiscardClicked =\n this.handlePendingDiscardClicked.bind(this);\n this.handleGotoRowSelectedRowNumberSubmit =\n this.handleGotoRowSelectedRowNumberSubmit.bind(this);\n this.focusRowInGrid = this.focusRowInGrid.bind(this);\n this.handleDownloadTable = this.handleDownloadTable.bind(this);\n this.handleDownloadTableStart = this.handleDownloadTableStart.bind(this);\n this.handleCancelDownloadTable = this.handleCancelDownloadTable.bind(this);\n this.handleDownloadCanceled = this.handleDownloadCanceled.bind(this);\n this.handleDownloadCompleted = this.handleDownloadCompleted.bind(this);\n this.handlePartitionChange = this.handlePartitionChange.bind(this);\n this.handleColumnVisibilityChanged =\n this.handleColumnVisibilityChanged.bind(this);\n this.handleColumnVisibilityReset =\n this.handleColumnVisibilityReset.bind(this);\n this.handleCrossColumnSearch = this.handleCrossColumnSearch.bind(this);\n this.handleRollupChange = this.handleRollupChange.bind(this);\n this.handleOverflowClose = this.handleOverflowClose.bind(this);\n this.handleCloseNoPastePermissionModal =\n this.handleCloseNoPastePermissionModal.bind(this);\n this.getColumnBoundingRect = this.getColumnBoundingRect.bind(this);\n this.handleGotoRowSelectedRowNumberChanged =\n this.handleGotoRowSelectedRowNumberChanged.bind(this);\n this.handleGotoValueSelectedColumnNameChanged =\n this.handleGotoValueSelectedColumnNameChanged.bind(this);\n this.handleGotoValueSelectedFilterChanged =\n this.handleGotoValueSelectedFilterChanged.bind(this);\n this.handleGotoValueChanged = this.handleGotoValueChanged.bind(this);\n this.handleGotoValueSubmitted = this.handleGotoValueSubmitted.bind(this);\n this.handleViewportUpdated = this.handleViewportUpdated.bind(this);\n this.makeQuickFilter = this.makeQuickFilter.bind(this);\n this.setFilterMap = this.setFilterMap.bind(this);\n\n this.grid = null;\n this.lastLoadedConfig = null;\n this.pending = new Pending();\n this.globalColumnFormats = EMPTY_ARRAY;\n this.decimalFormatOptions = {};\n this.integerFormatOptions = {};\n this.truncateNumbersWithPound = false;\n this.showEmptyStrings = true;\n this.showNullStrings = true;\n this.showExtraGroupColumn = true;\n\n // When the loading scrim started/when it should extend to the end of the screen.\n this.tableSaver = null;\n this.crossColumnRef = React.createRef();\n this.isAnimating = false;\n this.filterInputRef = React.createRef();\n\n this.gotoRowRef = React.createRef();\n\n this.isCopying = false;\n\n this.toggleFilterBarAction = {\n action: () => this.toggleFilterBar(),\n shortcut: SHORTCUTS.TABLE.TOGGLE_QUICK_FILTER,\n };\n\n this.toggleSearchBarAction = {\n action: () => this.toggleSearchBar(),\n shortcut: SHORTCUTS.TABLE.TOGGLE_SEARCH,\n };\n\n this.toggleGotoRowAction = {\n action: () => this.toggleGotoRow(),\n shortcut: SHORTCUTS.TABLE.GOTO_ROW,\n };\n\n this.discardAction = {\n action: () => {\n const { model } = this.props;\n if (\n isEditableGridModel(model) &&\n model.isEditable &&\n model.pendingDataMap.size > 0\n ) {\n this.discardPending().catch(log.error);\n }\n },\n shortcut: SHORTCUTS.INPUT_TABLE.DISCARD,\n };\n this.commitAction = {\n action: () => {\n const { model } = this.props;\n if (\n isEditableGridModel(model) &&\n model.isEditable &&\n model.pendingDataMap.size > 0 &&\n model.pendingDataErrors.size === 0\n ) {\n this.commitPending().catch(log.error);\n }\n },\n shortcut: SHORTCUTS.INPUT_TABLE.COMMIT,\n };\n this.contextActions = [\n this.toggleFilterBarAction,\n this.toggleSearchBarAction,\n this.toggleGotoRowAction,\n this.discardAction,\n this.commitAction,\n ];\n\n const {\n aggregationSettings,\n conditionalFormats,\n customColumnFormatMap,\n isFilterBarShown,\n isSelectingPartition,\n partitions,\n partitionConfig,\n model,\n movedColumns: movedColumnsProp,\n movedRows: movedRowsProp,\n rollupConfig,\n userColumnWidths,\n userRowHeights,\n showSearchBar,\n searchValue,\n selectedSearchColumns,\n invertSearchColumns,\n advancedFilters,\n quickFilters,\n selectDistinctColumns,\n pendingDataMap,\n canCopy,\n frozenColumns,\n columnHeaderGroups,\n } = props;\n\n const { dh } = model;\n const keyHandlers: KeyHandler[] = [\n new CopyCellKeyHandler(this),\n new ReverseKeyHandler(this),\n new ClearFilterKeyHandler(this),\n ];\n const mouseHandlers: GridMouseHandler[] = [\n new IrisGridCellOverflowMouseHandler(this),\n new IrisGridRowTreeMouseHandler(this),\n new IrisGridTokenMouseHandler(this),\n new IrisGridColumnSelectMouseHandler(this),\n new IrisGridColumnTooltipMouseHandler(this),\n new IrisGridSortMouseHandler(this),\n new IrisGridFilterMouseHandler(this),\n new IrisGridContextMenuHandler(this, dh),\n new IrisGridDataSelectMouseHandler(this),\n new PendingMouseHandler(this),\n new IrisGridPartitionedTableMouseHandler(this),\n ];\n if (canCopy) {\n keyHandlers.push(new CopyKeyHandler(this));\n mouseHandlers.push(new IrisGridCopyCellMouseHandler(this));\n }\n const movedColumns =\n movedColumnsProp.length > 0\n ? movedColumnsProp\n : model.initialMovedColumns;\n const movedRows =\n movedRowsProp.length > 0 ? movedRowsProp : model.initialMovedRows;\n\n const metricCalculator = new IrisGridMetricCalculator({\n userColumnWidths: new Map(userColumnWidths),\n userRowHeights: new Map(userRowHeights),\n movedColumns,\n initialColumnWidths: new Map(\n model?.layoutHints?.hiddenColumns?.map(name => [\n model.getColumnIndexByName(name),\n 0,\n ])\n ),\n });\n const searchColumns = selectedSearchColumns ?? [];\n const searchFilter = CrossColumnSearch.createSearchFilter(\n dh,\n searchValue,\n searchColumns,\n model.columns,\n invertSearchColumns\n );\n\n this.tableUtils = new TableUtils(dh);\n\n this.mouseHandlers = mouseHandlers;\n this.keyHandlers = keyHandlers;\n\n this.state = {\n isFilterBarShown,\n isSelectingPartition,\n focusedFilterBarColumn: null,\n metricCalculator,\n metrics: undefined,\n\n partitionConfig:\n partitionConfig ??\n (partitions && partitions.length\n ? { partitions, mode: 'partition' }\n : undefined),\n\n // setAdvancedFilter and setQuickFilter mutate the arguments\n // so we want to always use map copies from the state instead of props\n quickFilters: quickFilters ? new Map(quickFilters) : new Map(),\n advancedFilters: new Map(advancedFilters),\n shownAdvancedFilter: null,\n hoverAdvancedFilter: null,\n sorts: [],\n reverse: false,\n customColumns: [],\n selectDistinctColumns,\n\n // selected range in table\n selectedRanges: [],\n\n // Current ongoing copy operation\n copyOperation: null,\n\n // The filter that is currently being applied. Reset after update is received\n loadingText: null,\n loadingScrimProgress: null,\n loadingSpinnerShown: false,\n loadingCancelShown: false,\n loadingBlocksGrid: false,\n\n movedColumns,\n movedRows,\n\n shownColumnTooltip: null,\n\n formatter: new Formatter(dh),\n isMenuShown: false,\n customColumnFormatMap: new Map(customColumnFormatMap),\n\n conditionalFormats,\n conditionalFormatEditIndex: null,\n conditionalFormatPreview: undefined,\n\n // Column user is hovering over for selection\n hoverSelectColumn: null,\n\n isTableDownloading: false,\n isReady: false,\n tableDownloadStatus: '',\n tableDownloadProgress: 0,\n tableDownloadEstimatedTime: 0,\n\n showSearchBar,\n searchFilter,\n searchValue,\n selectedSearchColumns: searchColumns,\n invertSearchColumns,\n\n rollupConfig,\n rollupSelectedColumns: [],\n aggregationSettings:\n // Pin aggregations to the top if the grid is editable, so that the bottom is reserved for pending rows\n isEditableGridModel(model) && model.isEditable\n ? { ...aggregationSettings, showOnTop: true }\n : aggregationSettings,\n selectedAggregation: null,\n\n openOptions: [],\n\n pendingRowCount: 0,\n pendingDataMap: pendingDataMap ?? new Map(),\n pendingDataErrors: new Map(),\n pendingSavePromise: null,\n pendingSaveError: null,\n\n toastMessage: null,\n frozenColumns,\n showOverflowModal: false,\n showNoPastePermissionModal: false,\n noPastePermissionError: '',\n overflowText: '',\n overflowButtonTooltipProps: null,\n expandCellTooltipProps: null,\n expandTooltipDisplayValue: 'expand',\n hoverTooltipProps: null,\n hoverDisplayValue: '',\n isGotoShown: false,\n gotoRow: '',\n gotoRowError: '',\n gotoValueError: '',\n\n gotoValueSelectedColumnName: model.columns[0]?.name ?? '',\n gotoValueSelectedFilter: FilterType.eqIgnoreCase,\n gotoValue: '',\n gotoValueManuallyChanged: false,\n columnHeaderGroups: columnHeaderGroups ?? model.initialColumnHeaderGroups,\n };\n }\n\n componentDidMount(): void {\n const { model } = this.props;\n this.initState();\n this.startListening(model);\n }\n\n componentDidUpdate(prevProps: IrisGridProps, prevState: IrisGridState): void {\n const {\n inputFilters,\n isSelectingColumn,\n settings,\n model,\n customFilters,\n sorts,\n } = this.props;\n\n if (model !== prevProps.model) {\n this.stopListening(prevProps.model);\n this.startListening(model);\n }\n\n const changedInputFilters =\n inputFilters !== prevProps.inputFilters\n ? inputFilters.filter(\n inputFilter => !prevProps.inputFilters.includes(inputFilter)\n )\n : [];\n if (changedInputFilters.length > 0) {\n const { advancedSettings } = this.props;\n const replaceExistingFilters =\n advancedSettings.get(\n AdvancedSettingsType.FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS\n ) ?? false;\n if (replaceExistingFilters) {\n this.clearGridInputField();\n this.clearCrossColumSearch();\n }\n this.startLoading('Filtering...', { resetRanges: true });\n this.applyInputFilters(changedInputFilters, replaceExistingFilters);\n }\n\n if (isSelectingColumn !== prevProps.isSelectingColumn) {\n this.resetColumnSelection();\n }\n if (settings !== prevProps.settings) {\n this.updateFormatterSettings(settings);\n }\n if (customFilters !== prevProps.customFilters) {\n this.startLoading('Filtering...', { resetRanges: true });\n }\n if (sorts !== prevProps.sorts) {\n this.updateSorts(sorts);\n }\n const { loadingScrimStartTime, loadingScrimFinishTime } = this;\n if (loadingScrimStartTime != null && loadingScrimFinishTime != null) {\n window.requestAnimationFrame(() => {\n const now = Date.now();\n const currentTime = now - loadingScrimStartTime;\n const totalTime = loadingScrimFinishTime - loadingScrimStartTime;\n const loadingScrimProgress = Math.min(currentTime / totalTime, 1);\n if (loadingScrimFinishTime < now) {\n this.loadingScrimStartTime = undefined;\n this.loadingScrimFinishTime = undefined;\n }\n\n this.setState(state => {\n if (state.loadingScrimProgress == null) {\n log.debug2('Ignoring scrim update because loading cancelled.');\n return null;\n }\n\n return { loadingScrimProgress };\n });\n });\n }\n\n const { openOptions } = this.state;\n if (openOptions !== prevState.openOptions) {\n const isAggEditType = (option: OptionItem): boolean =>\n option.type === OptionType.AGGREGATION_EDIT;\n if (\n !openOptions.some(isAggEditType) &&\n prevState.openOptions.some(isAggEditType)\n ) {\n this.removeEmptyAggregations();\n }\n }\n\n this.sendStateChange();\n }\n\n componentWillUnmount(): void {\n const { model } = this.props;\n this.stopListening(model);\n this.pending.cancel();\n this.updateSearchFilter.cancel();\n\n if (this.loadingTimer) {\n clearTimeout(this.loadingTimer);\n }\n this.handleDownloadProgressUpdate.cancel();\n if (this.animationFrame !== undefined) {\n cancelAnimationFrame(this.animationFrame);\n }\n\n this.showViewportLoading.cancel();\n }\n\n grid: Grid | null;\n\n lastFocusedFilterBarColumn?: number;\n\n lastLoadedConfig: Pick<\n IrisGridState,\n | 'advancedFilters'\n | 'aggregationSettings'\n | 'customColumns'\n | 'quickFilters'\n | 'reverse'\n | 'rollupConfig'\n | 'searchFilter'\n | 'selectDistinctColumns'\n | 'sorts'\n > | null;\n\n tooltip?: Tooltip;\n\n pending: Pending;\n\n globalColumnFormats?: readonly FormattingRule[];\n\n dateTimeFormatterOptions?: DateTimeColumnFormatterOptions;\n\n decimalFormatOptions: { defaultFormatString?: string };\n\n integerFormatOptions: { defaultFormatString?: string };\n\n truncateNumbersWithPound: boolean;\n\n showEmptyStrings: boolean;\n\n showNullStrings: boolean;\n\n showExtraGroupColumn: boolean;\n\n // When the loading scrim started/when it should extend to the end of the screen.\n loadingScrimStartTime?: number;\n\n loadingScrimFinishTime?: number;\n\n animationFrame?: number;\n\n loadingTimer?: ReturnType<typeof setTimeout>;\n\n tableSaver: TableSaver | null;\n\n crossColumnRef: React.RefObject<CrossColumnSearch>;\n\n isAnimating: boolean;\n\n filterInputRef: React.RefObject<FilterInputField>;\n\n gotoRowRef: React.RefObject<GotoRowElement>;\n\n isCopying: boolean;\n\n toggleFilterBarAction: Action;\n\n toggleSearchBarAction: Action;\n\n toggleGotoRowAction: Action;\n\n discardAction: Action;\n\n commitAction: Action;\n\n contextActions: ContextAction[];\n\n tableUtils: TableUtils;\n\n keyHandlers: readonly KeyHandler[];\n\n mouseHandlers: readonly GridMouseHandler[];\n\n get gridWrapper(): HTMLDivElement | null {\n return this.grid?.canvasWrapper.current ?? null;\n }\n\n getAdvancedMenuOpenedHandler = memoize(\n (column: ModelIndex) => this.handleAdvancedMenuOpened.bind(this, column),\n { max: 100 }\n );\n\n getCachedAdvancedFilterMenuActions = memoize(\n (\n model: IrisGridModel,\n column: DhType.Column,\n advancedFilterOptions: AdvancedFilterOptions | undefined,\n sortDirection: SortDirection | undefined,\n formatter: Formatter\n ) => (\n <AdvancedFilterCreator\n model={model}\n column={column}\n onFilterChange={this.handleAdvancedFilterChange}\n onSortChange={this.handleAdvancedFilterSortChange}\n onDone={this.handleAdvancedFilterDone}\n options={advancedFilterOptions}\n sortDirection={sortDirection}\n formatter={formatter}\n tableUtils={this.tableUtils}\n />\n ),\n { max: 50 }\n );\n\n getCachedOptionItems = memoize(\n (\n isChartBuilderAvailable: boolean,\n isCustomColumnsAvailable: boolean,\n isFormatColumnsAvailable: boolean,\n isOrganizeColumnsAvailable: boolean,\n isRollupAvailable: boolean,\n isTotalsAvailable: boolean,\n isSelectDistinctAvailable: boolean,\n isExportAvailable: boolean,\n toggleFilterBarAction: Action,\n toggleSearchBarAction: Action,\n toggleGotoRowAction: Action,\n isFilterBarShown: boolean,\n showSearchBar: boolean,\n canDownloadCsv: boolean,\n canToggleSearch: boolean,\n showGotoRow: boolean,\n hasAdvancedSettings: boolean\n ): readonly OptionItem[] => {\n const optionItems: OptionItem[] = [];\n if (isChartBuilderAvailable) {\n optionItems.push({\n type: OptionType.CHART_BUILDER,\n title: 'Chart Builder',\n icon: dhGraphLineUp,\n });\n }\n if (isOrganizeColumnsAvailable) {\n optionItems.push({\n type: OptionType.VISIBILITY_ORDERING_BUILDER,\n title: 'Organize Columns',\n icon: dhEye,\n });\n }\n if (isFormatColumnsAvailable) {\n optionItems.push({\n type: OptionType.CONDITIONAL_FORMATTING,\n title: 'Conditional Formatting',\n icon: vsEdit,\n });\n }\n if (isCustomColumnsAvailable) {\n optionItems.push({\n type: OptionType.CUSTOM_COLUMN_BUILDER,\n title: 'Custom Columns',\n icon: vsSplitHorizontal,\n });\n }\n if (isRollupAvailable) {\n optionItems.push({\n type: OptionType.ROLLUP_ROWS,\n title: 'Rollup Rows',\n icon: dhTriangleDownSquare,\n });\n }\n if (isTotalsAvailable) {\n optionItems.push({\n type: OptionType.AGGREGATIONS,\n title: 'Aggregate Columns',\n icon: vsSymbolOperator,\n });\n }\n if (isSelectDistinctAvailable) {\n optionItems.push({\n type: OptionType.SELECT_DISTINCT,\n title: 'Select Distinct Values',\n icon: vsRuby,\n });\n }\n if (isExportAvailable && canDownloadCsv) {\n optionItems.push({\n type: OptionType.TABLE_EXPORTER,\n title: 'Download CSV',\n icon: vsCloudDownload,\n });\n }\n if (hasAdvancedSettings) {\n optionItems.push({\n type: OptionType.ADVANCED_SETTINGS,\n title: 'Advanced Settings',\n icon: vsTools,\n });\n }\n optionItems.push({\n type: OptionType.QUICK_FILTERS,\n title: 'Quick Filters',\n subtitle: toggleFilterBarAction.shortcut.getDisplayText(),\n icon: vsFilter,\n isOn: isFilterBarShown,\n onChange: toggleFilterBarAction.action,\n });\n if (canToggleSearch) {\n optionItems.push({\n type: OptionType.SEARCH_BAR,\n title: 'Search Bar',\n subtitle: toggleSearchBarAction.shortcut.getDisplayText(),\n icon: vsSearch,\n isOn: showSearchBar,\n onChange: toggleSearchBarAction.action,\n });\n }\n optionItems.push({\n type: OptionType.GOTO,\n title: 'Go to',\n subtitle: toggleGotoRowAction.shortcut.getDisplayText(),\n icon: vsReply,\n isOn: showGotoRow,\n onChange: toggleGotoRowAction.action,\n });\n\n return Object.freeze(optionItems);\n },\n { max: 1 }\n );\n\n getCachedHiddenColumns = memoize(\n (\n metricCalculator: IrisGridMetricCalculator,\n userColumnWidths: ModelSizeMap\n ): readonly ModelIndex[] =>\n IrisGridUtils.getHiddenColumns(\n new Map([...metricCalculator.initialColumnWidths, ...userColumnWidths])\n ),\n { max: 1 }\n );\n\n getAggregationMap = memoize(\n (\n columns: readonly DhType.Column[],\n aggregations: readonly Aggregation[]\n ): ReadonlyAggregationMap => {\n const aggregationMap = {} as Record<AggregationOperation, string[]>;\n aggregations.forEach(({ operation, selected, invert }) => {\n aggregationMap[operation] = AggregationUtils.getOperationColumnNames(\n columns,\n operation,\n selected,\n invert\n );\n });\n return aggregationMap;\n },\n { max: 1 }\n );\n\n getOperationMap = memoize(\n (\n columns: readonly DhType.Column[],\n aggregations: readonly Aggregation[]\n ): OperationMap => {\n const operationMap: OperationMap = {};\n aggregations\n .filter(\n (a: Aggregation) => !AggregationUtils.isRollupOperation(a.operation)\n )\n .forEach(({ operation, selected, invert }) => {\n AggregationUtils.getOperationColumnNames(\n columns,\n operation,\n selected,\n invert\n ).forEach(name => {\n const newOperations = [...(operationMap[name] ?? []), operation];\n operationMap[name] = Object.freeze(newOperations);\n });\n });\n return operationMap;\n },\n { max: 1 }\n );\n\n getOperationOrder = memoize(\n (aggregations: readonly Aggregation[]): AggregationOperation[] =>\n aggregations\n .map((a: Aggregation) => a.operation)\n .filter(\n (o: AggregationOperation) => !AggregationUtils.isRollupOperation(o)\n ),\n { max: 1 }\n );\n\n getCachedFormatColumns = memoize(\n (\n dh: typeof DhType,\n columns: readonly DhType.Column[],\n rules: readonly SidebarFormattingRule[]\n ) => getFormatColumns(dh, columns, rules),\n { max: 1000 }\n );\n\n /**\n * Builds formatColumns array based on the provided formatting rules with optional preview\n * @param columns Array of columns\n * @param rulesParam Array of formatting rules\n * @param preview Optional temporary formatting rule for previewing live changes\n * @param editIndex Index in the rulesParam array to replace with the preview, null if preview not applicable\n * @returns Format columns array\n */\n getCachedPreviewFormatColumns = memoize(\n (\n dh: typeof DhType,\n columns: readonly DhType.Column[],\n rulesParam: readonly SidebarFormattingRule[],\n preview?: SidebarFormattingRule,\n editIndex?: number\n ): DhType.CustomColumn[] => {\n log.debug(\n 'getCachedPreviewFormatColumns',\n rulesParam,\n preview,\n editIndex\n );\n if (preview !== undefined && editIndex !== undefined) {\n const rules = [...rulesParam];\n rules[editIndex] = preview;\n return this.getCachedFormatColumns(dh, columns, rules);\n }\n\n return this.getCachedFormatColumns(dh, columns, rulesParam);\n },\n { max: 1 }\n );\n\n getModelRollupConfig = memoize(\n (\n originalColumns: readonly DhType.Column[],\n config: UIRollupConfig | undefined,\n aggregationSettings: AggregationSettings\n ) =>\n IrisGridUtils.getModelRollupConfig(\n originalColumns,\n config,\n aggregationSettings\n ),\n { max: 1 }\n );\n\n getModelTotalsConfig = memoize(\n (\n columns: readonly DhType.Column[],\n config: UIRollupConfig | undefined,\n aggregationSettings: AggregationSettings\n ): UITotalsTableConfig | null => {\n if ((config?.columns?.length ?? 0) > 0) {\n // If we've got rollups, then aggregations are applied as part of that...\n return null;\n }\n\n // Filter out aggregations without any columns actually selected\n const aggregations = aggregationSettings.aggregations.filter(\n agg => agg.selected.length > 0 || agg.invert\n );\n if (aggregations.length === 0) {\n // We don't actually have any aggregations set, don't bother\n return null;\n }\n\n const operationMap = this.getOperationMap(columns, aggregations);\n const operationOrder = this.getOperationOrder(aggregations);\n\n return {\n operationMap,\n operationOrder,\n showOnTop: aggregationSettings.showOnTop,\n defaultOperation: AggregationOperation.SKIP,\n } as UITotalsTableConfig;\n },\n { max: 1 }\n );\n\n getCachedStateOverride = memoize(\n (\n hoverSelectColumn: GridRangeIndex,\n isFilterBarShown: boolean,\n isSelectingColumn: boolean,\n loadingScrimProgress: number | null,\n quickFilters: ReadonlyQuickFilterMap,\n advancedFilters: ReadonlyAdvancedFilterMap,\n sorts: readonly DhType.Sort[],\n reverse: boolean,\n rollupConfig: UIRollupConfig | undefined,\n isMenuShown: boolean\n ): Partial<IrisGridState & IrisGridProps> => ({\n hoverSelectColumn,\n isFilterBarShown,\n isSelectingColumn,\n loadingScrimProgress,\n quickFilters,\n advancedFilters,\n sorts,\n reverse,\n rollupConfig,\n isMenuShown,\n }),\n { max: 1 }\n );\n\n getCachedFilter = memoize(\n (\n customFilters: readonly DhType.FilterCondition[],\n quickFilters: ReadonlyQuickFilterMap,\n advancedFilters: ReadonlyAdvancedFilterMap,\n searchFilter: DhType.FilterCondition | undefined\n ) => [\n ...(customFilters ?? []),\n ...IrisGridUtils.getFiltersFromFilterMap(quickFilters),\n ...IrisGridUtils.getFiltersFromFilterMap(advancedFilters),\n ...(searchFilter !== undefined ? [searchFilter] : []),\n ],\n { max: 1 }\n );\n\n getCachedTheme = memoize(\n (\n contextTheme: IrisGridThemeType | null,\n theme: Partial<IrisGridThemeType> | null,\n isEditable: boolean,\n floatingRowCount: number,\n density: 'compact' | 'regular' | 'spacious'\n ): IrisGridThemeType => {\n // If a theme is available via context, use that as the base theme.\n // If iris-grid is standalone without a context, use the default theme.\n const baseTheme = contextTheme ?? createDefaultIrisGridTheme();\n\n // We only show the row footers when we have floating rows for aggregations\n const rowFooterWidth =\n floatingRowCount > 0\n ? theme?.rowFooterWidth ?? baseTheme.rowFooterWidth\n : 0;\n\n const { metricCalculator } = this.state;\n if (metricCalculator != null) {\n metricCalculator.resetCalculatedColumnWidths();\n metricCalculator.resetCalculatedRowHeights();\n }\n\n let densityTheme = {};\n if (density === 'compact') {\n densityTheme = baseTheme.density.compact;\n } else if (density === 'spacious') {\n densityTheme = baseTheme.density.spacious;\n }\n\n return {\n ...baseTheme,\n ...densityTheme,\n ...theme,\n autoSelectRow: !isEditable,\n rowFooterWidth,\n };\n },\n { max: 1 }\n );\n\n getCachedKeyHandlers = memoize(\n (keyHandlers: readonly KeyHandler[]) =>\n [...keyHandlers, ...this.keyHandlers].sort((a, b) => a.order - b.order),\n { max: 1 }\n );\n\n getKeyHandlers(): readonly KeyHandler[] {\n const { keyHandlers } = this.props;\n return this.getCachedKeyHandlers(keyHandlers);\n }\n\n getCachedMouseHandlers = memoize(\n (\n mouseHandlers: readonly GridMouseHandler[]\n ): readonly GridMouseHandler[] => [...mouseHandlers, ...this.mouseHandlers],\n { max: 1 }\n );\n\n getCachedRenderer = memoize(\n (rendererProp?: IrisGridRenderer) => rendererProp ?? new IrisGridRenderer(),\n { max: 1 }\n );\n\n get renderer(): IrisGridRenderer {\n const { renderer } = this.props;\n return this.getCachedRenderer(renderer);\n }\n\n getMouseHandlers(): readonly GridMouseHandler[] {\n const { mouseHandlers } = this.props;\n return this.getCachedMouseHandlers(mouseHandlers);\n }\n\n getValueForCell(\n columnIndex: GridRangeIndex,\n rowIndex: GridRangeIndex,\n rawValue = false\n ): string | unknown {\n const { model } = this.props;\n const { dh } = model;\n const modelColumn = this.getModelColumn(columnIndex);\n const modelRow = this.getModelRow(rowIndex);\n if (rawValue && modelColumn != null && modelRow != null) {\n const value = model.valueForCell(modelColumn, modelRow);\n if (TableUtils.isDateType(model.columns[modelColumn].type)) {\n // The returned value is just a long value, we should return the value formatted as a full date string\n const { formatter } = model;\n return dh.i18n.DateTimeFormat.format(\n UNFORMATTED_DATE_PATTERN,\n value as number | Date | DhType.DateWrapper,\n dh.i18n.TimeZone.getTimeZone(formatter.timeZone)\n );\n }\n return value;\n }\n if (rawValue) {\n return null;\n }\n if (modelColumn != null && modelRow != null) {\n return model.textForCell(modelColumn, modelRow);\n }\n return '';\n }\n\n getModelColumn(columnIndex: GridRangeIndex): ModelIndex | null | undefined {\n const { metrics } = this.state;\n assertNotNull(metrics);\n const { modelColumns } = metrics;\n if (modelColumns == null) {\n return null;\n }\n\n return columnIndex != null ? modelColumns.get(columnIndex) : null;\n }\n\n getModelRow(rowIndex: GridRangeIndex): ModelIndex | null | undefined {\n const { metrics } = this.state;\n assertNotNull(metrics);\n const { modelRows } = metrics;\n if (modelRows == null) {\n return null;\n }\n\n return rowIndex != null ? modelRows.get(rowIndex) : null;\n }\n\n getTheme(): IrisGridThemeType {\n const { model, theme, density } = this.props;\n const { theme: contextTheme, density: contextDensity } = this.context;\n\n return this.getCachedTheme(\n contextTheme,\n theme,\n (isEditableGridModel(model) && model.isEditable) ?? false,\n model.floatingTopRowCount + model.floatingBottomRowCount,\n density ?? contextDensity\n );\n }\n\n getVisibleColumn(modelIndex: ModelIndex): VisibleIndex {\n const { movedColumns } = this.state;\n return GridUtils.getVisibleIndex(modelIndex, movedColumns);\n }\n\n makeQuickFilter(\n column: DhType.Column,\n text: string,\n timeZone: string\n ): DhType.FilterCondition | null {\n try {\n return this.tableUtils.makeQuickFilter(column, text, timeZone);\n } catch (err) {\n log.error('Error creating quick filter', err);\n }\n return null;\n }\n\n /**\n * Applies the provided input filters as quick filters,\n * and clears any existing quickFilters or advancedFilters on that column\n * @param inputFilters Array of input filters to apply\n * @param replaceExisting If true, new filters will replace the existing ones, instead of merging\n */\n applyInputFilters(\n inputFilters: InputFilter[],\n replaceExisting = false\n ): void {\n const { model } = this.props;\n const { advancedFilters, quickFilters } = this.state;\n const newAdvancedFilters = replaceExisting\n ? new Map()\n : new Map(advancedFilters);\n const newQuickFilters = replaceExisting ? new Map() : new Map(quickFilters);\n\n let isChanged = replaceExisting && advancedFilters.size > 0;\n inputFilters.forEach(({ name, type, value }) => {\n const modelIndex = model.columns.findIndex(\n ({ name: columnName, type: columnType }) =>\n columnName === name && columnType === type\n );\n if (modelIndex >= 0) {\n isChanged = newAdvancedFilters.delete(modelIndex) || isChanged;\n isChanged =\n this.applyQuickFilter(modelIndex, value, newQuickFilters) ||\n isChanged;\n } else {\n log.error('Unable to find column for inputFilter', name, type, value);\n }\n });\n if (isChanged) {\n this.setState({\n quickFilters: newQuickFilters,\n advancedFilters: newAdvancedFilters,\n });\n }\n }\n\n /**\n * Applies a quick filter\n * @param modelIndex The index in the model of the column to set\n * @param value The string value to set to the quick filter\n * @param quickFilters The quick filters map\n * @returns True if the filters have changed because this quick filter was applied\n */\n applyQuickFilter(\n modelIndex: ModelIndex,\n value: string | null,\n quickFilters: QuickFilterMap\n ): boolean {\n const { model } = this.props;\n const { formatter } = model;\n const column = model.columns[modelIndex];\n\n if (value != null && `${value}`.trim().length > 0) {\n const quickFilter = quickFilters.get(modelIndex);\n if (quickFilter != null) {\n const { text } = quickFilter;\n if (text === value) {\n log.debug2('Ignoring change to existing filter');\n return false;\n }\n }\n quickFilters.set(modelIndex, {\n text: value,\n filter: this.makeQuickFilter(column, value, formatter.timeZone),\n });\n return true;\n }\n return quickFilters.delete(modelIndex);\n }\n\n setAdvancedFilterMap(advancedFilters: ReadonlyAdvancedFilterMap): void {\n this.setState({ advancedFilters });\n }\n\n setAdvancedFilter(\n modelIndex: ModelIndex,\n filter: DhType.FilterCondition | null,\n options: AdvancedFilterOptions\n ): void {\n log.debug('Setting advanced filter', modelIndex, filter);\n\n this.startLoading('Filtering...', { resetRanges: true });\n\n this.setState(({ advancedFilters }) => {\n const newAdvancedFilters = new Map(advancedFilters);\n if (filter == null) {\n newAdvancedFilters.delete(modelIndex);\n } else {\n newAdvancedFilters.set(modelIndex, {\n filter,\n options,\n });\n }\n return { advancedFilters: newAdvancedFilters };\n });\n }\n\n /**\n * Sets a quick filter against the provided column\n * @param modelIndex The index in the model for the column this filter is applied to\n * @param filter A filter to apply to the column, or null if there was an error\n * @param text The original text the filter was created with\n */\n setQuickFilter(\n modelIndex: ModelIndex,\n filter: DhType.FilterCondition | null,\n text: string\n ): void {\n log.debug('Setting quick filter', modelIndex, filter, text);\n\n this.startLoading('Filtering...', { resetRanges: true });\n\n this.setState(({ quickFilters }) => {\n const newQuickFilters = new Map(quickFilters);\n newQuickFilters.set(modelIndex, { filter, text });\n return { quickFilters: newQuickFilters };\n });\n }\n\n /**\n * Set grid filters based on the filter map\n * @param filterMap Filter map\n */\n setFilterMap(filterMap: FilterMap): void {\n log.debug('setFilterMap', filterMap);\n\n const { advancedSettings } = this.props;\n const clearFiltersOnLinkerFilterUpdate =\n advancedSettings.get(\n AdvancedSettingsType.LINK_CHANGE_CLEARS_ALL_FILTERS\n ) ?? false;\n if (clearFiltersOnLinkerFilterUpdate) {\n this.clearAllFilters();\n }\n\n const { model } = this.props;\n filterMap.forEach(({ columnType, filterList }, columnName) => {\n const column = model.columns.find(\n c => c.name === columnName && c.type === columnType\n );\n if (column == null) {\n return;\n }\n const columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n const combinedText = IrisGridUtils.combineFiltersFromList(\n columnType,\n filterList\n );\n if (combinedText.length === 0) {\n this.removeQuickFilter(columnIndex);\n } else {\n const { formatter } = model;\n this.setQuickFilter(\n columnIndex,\n this.makeQuickFilter(column, combinedText, formatter.timeZone),\n `${combinedText}`\n );\n }\n });\n }\n\n removeColumnFilter(modelRange: ModelIndex | BoundedAxisRange): void {\n this.startLoading('Filtering...', { resetRanges: true });\n\n const clearRange: BoundedAxisRange = Array.isArray(modelRange)\n ? modelRange\n : [modelRange, modelRange];\n\n this.setState(\n ({ advancedFilters, quickFilters }: Partial<IrisGridState>) => {\n const newAdvancedFilters: AdvancedFilterMap = advancedFilters\n ? new Map(advancedFilters)\n : new Map();\n const newQuickFilters: QuickFilterMap = quickFilters\n ? new Map(quickFilters)\n : new Map();\n newAdvancedFilters.forEach((_, column) => {\n if (column >= clearRange[0] && column <= clearRange[1]) {\n newAdvancedFilters.delete(column);\n }\n });\n newQuickFilters.forEach((_, column) => {\n if (column >= clearRange[0] && column <= clearRange[1]) {\n newQuickFilters.delete(column);\n }\n });\n\n return {\n quickFilters: newQuickFilters,\n advancedFilters: newAdvancedFilters,\n };\n }\n );\n }\n\n removeQuickFilter(modelColumn: ModelIndex): void {\n this.startLoading('Clearing Filter...', { resetRanges: true });\n\n this.setState(({ quickFilters }) => {\n const newQuickFilters = new Map(quickFilters);\n newQuickFilters.delete(modelColumn);\n\n return { quickFilters: newQuickFilters };\n });\n }\n\n clearAllFilters(): void {\n log.debug('Clearing all filters');\n\n const { advancedFilters, quickFilters, searchFilter } = this.state;\n if (\n quickFilters.size === 0 &&\n advancedFilters.size === 0 &&\n searchFilter === null\n ) {\n return;\n }\n\n // if there is an active quick filter input field, reset it as well\n this.clearGridInputField();\n\n this.startLoading('Clearing Filters...', { resetRanges: true });\n this.setState({\n quickFilters: new Map(),\n advancedFilters: new Map(),\n searchValue: '',\n searchFilter: undefined,\n });\n }\n\n clearAllAggregations(): void {\n log.debug('Clearing all aggregations');\n\n this.setState({ aggregationSettings: DEFAULT_AGGREGATION_SETTINGS });\n }\n\n clearCrossColumSearch(): void {\n log.debug('Clearing cross-column search');\n\n this.setState({\n searchValue: '',\n searchFilter: undefined,\n });\n }\n\n clearGridInputField(): void {\n if (this.filterInputRef.current != null) {\n this.filterInputRef.current.setValue('');\n }\n }\n\n /**\n * Rebuilds all the current filters. Necessary if something like the time zone has changed.\n */\n rebuildFilters(): void {\n const { model } = this.props;\n const { advancedFilters, quickFilters } = this.state;\n const { columns, formatter } = model;\n\n log.debug('Rebuilding filters');\n\n const newAdvancedFilters = new Map();\n const newQuickFilters = new Map();\n\n advancedFilters.forEach((value, key) => {\n const { options } = value;\n const column = columns[key];\n const filter = this.tableUtils.makeAdvancedFilter(\n column,\n options,\n formatter.timeZone\n );\n newAdvancedFilters.set(key, {\n options,\n filter,\n });\n });\n\n quickFilters.forEach((value, key) => {\n const { text } = value;\n const column = columns[key];\n newQuickFilters.set(key, {\n text,\n filter: this.makeQuickFilter(column, text, formatter.timeZone),\n });\n });\n this.startLoading('Rebuilding filters...', { resetRanges: true });\n\n this.setState({\n quickFilters: newQuickFilters,\n advancedFilters: newAdvancedFilters,\n });\n }\n\n setFilters({\n quickFilters,\n advancedFilters,\n }: Pick<IrisGridState, 'quickFilters' | 'advancedFilters'>): void {\n this.setState({\n quickFilters,\n advancedFilters,\n });\n }\n\n updateFormatterSettings(settings?: Settings, forceUpdate = true): void {\n const globalColumnFormats = FormatterUtils.getColumnFormats(settings);\n const dateTimeFormatterOptions =\n FormatterUtils.getDateTimeFormatterOptions(settings);\n\n const defaultDecimalFormatOptions =\n settings?.defaultDecimalFormatOptions ?? {};\n const defaultIntegerFormatOptions =\n settings?.defaultIntegerFormatOptions ?? {};\n const truncateNumbersWithPound =\n settings?.truncateNumbersWithPound ?? false;\n\n const showEmptyStrings = settings?.showEmptyStrings ?? true;\n const showNullStrings = settings?.showNullStrings ?? true;\n const showExtraGroupColumn = settings?.showExtraGroupColumn ?? true;\n\n const isColumnFormatChanged = !deepEqual(\n this.globalColumnFormats,\n globalColumnFormats\n );\n const isDateFormattingChanged = !deepEqual(\n this.dateTimeFormatterOptions,\n dateTimeFormatterOptions\n );\n const isDecimalFormattingChanged = !deepEqual(\n this.decimalFormatOptions,\n settings?.defaultDecimalFormatOptions\n );\n const isIntegerFormattingChanged = !deepEqual(\n this.integerFormatOptions,\n defaultIntegerFormatOptions\n );\n const isTruncateNumbersChanged =\n this.truncateNumbersWithPound !== truncateNumbersWithPound;\n const isShowEmptyStringsChanged =\n this.showEmptyStrings !== showEmptyStrings;\n const isShowNullStringsChanged = this.showNullStrings !== showNullStrings;\n const isShowExtraGroupColumnChanged =\n this.showExtraGroupColumn !== showExtraGroupColumn;\n\n if (\n isColumnFormatChanged ||\n isDateFormattingChanged ||\n isDecimalFormattingChanged ||\n isIntegerFormattingChanged ||\n isTruncateNumbersChanged ||\n isShowEmptyStringsChanged ||\n isShowNullStringsChanged ||\n isShowExtraGroupColumnChanged\n ) {\n this.globalColumnFormats = globalColumnFormats;\n this.dateTimeFormatterOptions = dateTimeFormatterOptions;\n this.decimalFormatOptions = defaultDecimalFormatOptions;\n this.integerFormatOptions = defaultIntegerFormatOptions;\n this.truncateNumbersWithPound = truncateNumbersWithPound;\n this.showEmptyStrings = showEmptyStrings;\n this.showNullStrings = showNullStrings;\n this.showExtraGroupColumn = showExtraGroupColumn;\n this.updateFormatter({}, forceUpdate);\n\n if (isDateFormattingChanged && forceUpdate) {\n this.rebuildFilters();\n }\n }\n }\n\n getAlwaysFetchColumns = memoize(\n (\n alwaysFetchColumns: readonly ColumnName[],\n columns: readonly DhType.Column[],\n movedColumns: readonly MoveOperation[],\n floatingLeftColumnCount: number,\n floatingRightColumnCount: number,\n draggingRange?: BoundedAxisRange\n ): readonly ColumnName[] => {\n const floatingColumns: ColumnName[] = [];\n\n for (let i = 0; i < floatingLeftColumnCount; i += 1) {\n floatingColumns.push(\n columns[GridUtils.getModelIndex(i, movedColumns)].name\n );\n }\n\n for (let i = 0; i < floatingRightColumnCount; i += 1) {\n floatingColumns.push(\n columns[GridUtils.getModelIndex(columns.length - 1 - i, movedColumns)]\n .name\n );\n }\n\n if (draggingRange) {\n for (let i = draggingRange[0]; i <= draggingRange[1]; i += 1) {\n floatingColumns.push(\n columns[GridUtils.getModelIndex(i, movedColumns)].name\n );\n }\n }\n\n const columnSet = new Set([...alwaysFetchColumns, ...floatingColumns]);\n\n return Object.freeze([...columnSet]);\n },\n { max: 1 }\n );\n\n updateFormatter(\n updatedFormats: { customColumnFormatMap?: Map<ColumnName, FormattingRule> },\n forceUpdate = true\n ): void {\n const { customColumnFormatMap } = this.state;\n const { model } = this.props;\n const update = {\n customColumnFormatMap,\n ...updatedFormats,\n };\n const mergedColumnFormats = [\n ...(this.globalColumnFormats ?? []),\n ...update.customColumnFormatMap.values(),\n ];\n const formatter = new Formatter(\n model.dh,\n mergedColumnFormats,\n this.dateTimeFormatterOptions,\n this.decimalFormatOptions,\n this.integerFormatOptions,\n this.truncateNumbersWithPound,\n this.showEmptyStrings,\n this.showNullStrings\n );\n\n log.debug('updateFormatter', this.globalColumnFormats, mergedColumnFormats);\n\n this.setState({ ...update, formatter }, () => {\n if (forceUpdate && this.grid) {\n this.grid.forceUpdate();\n }\n });\n }\n\n initFormatter(): void {\n const { settings } = this.props;\n this.updateFormatterSettings(settings);\n }\n\n initState(): void {\n const { model } = this.props;\n try {\n if (isPartitionedGridModel(model) && model.isPartitionRequired) {\n this.loadPartitionsTable(model);\n } else {\n this.loadTableState();\n }\n } catch (error) {\n this.handleTableLoadError(error);\n }\n }\n\n loadTableState(): void {\n const {\n applyInputFiltersOnInit,\n inputFilters,\n sorts,\n model,\n reverse,\n reverseType,\n customColumns,\n searchValue,\n selectedSearchColumns,\n invertSearchColumns,\n } = this.props;\n\n const searchColumns = selectedSearchColumns ?? [];\n const searchFilter = CrossColumnSearch.createSearchFilter(\n model.dh,\n searchValue,\n searchColumns,\n model.columns,\n invertSearchColumns\n );\n\n if (applyInputFiltersOnInit) {\n // There may be more than one input filter on the same column with value === '' applied last\n // We don't want to skip it here, so only excluding the ones that were never applied (null)\n const inputFiltersWithValues = inputFilters.filter(\n inputFilter => inputFilter.value != null\n );\n this.applyInputFilters(inputFiltersWithValues);\n }\n\n this.setState({\n sorts,\n reverse: reverse || reverseType === TableUtils.REVERSE_TYPE.POST_SORT,\n customColumns,\n isReady: true,\n searchFilter,\n });\n this.initFormatter();\n }\n\n async loadPartitionsTable(model: PartitionedGridModel): Promise<void> {\n try {\n const { partitionConfig } = this.state;\n if (!partitionConfig) {\n this.startLoading('Loading partitions...', {\n loadingCancelShown: false,\n resetRanges: true,\n });\n this.initializePartitionConfig(model);\n }\n this.setState({ isSelectingPartition: true }, this.loadTableState);\n } catch (error) {\n if (!PromiseUtils.isCanceled(error)) {\n this.handleTableLoadError(error);\n }\n }\n }\n\n /**\n * Initialize the partition config to the default partition.\n */\n async initializePartitionConfig(model: PartitionedGridModel): Promise<void> {\n const keyTable = await this.pending.add(\n model.partitionKeysTable(),\n resolved => resolved.close()\n );\n const { dh } = model;\n\n const sorts = keyTable.columns.map(column => column.sort().desc());\n keyTable.applySort(sorts);\n keyTable.setViewport(0, 0);\n\n // We want to wait for the first UPDATED event instead of just getting viewport data here\n // It's possible that the key table does not have any rows of data yet, so just wait until it does have one\n keyTable.addEventListener(\n dh.Table.EVENT_UPDATED,\n (event: DhType.Event<DhType.ViewportData>) => {\n try {\n const { detail: data } = event;\n if (data.rows.length === 0) {\n // We received an update and the table is still empty. Stop showing the loading spinner so we know\n this.stopLoading();\n return;\n }\n const row = data.rows[0];\n const values = keyTable.columns.map(column => row.get(column));\n const newPartition: PartitionConfig = {\n partitions: values,\n mode: model.isPartitionAwareSourceTable ? 'partition' : 'keys',\n };\n keyTable.close();\n this.setState({\n loadingSpinnerShown: false,\n partitionConfig: newPartition,\n });\n } catch (e) {\n keyTable.close();\n log.error('Error getting initial partition config', e);\n }\n }\n );\n }\n\n /**\n * Selects a partition key from the table based on the provided row index.\n *\n * @param rowIndex The index of the row from which the partition will be selected.\n * @returns A promise that resolves when the partition key has been successfully selected.\n */\n selectPartitionKeyFromTable(rowIndex: GridRangeIndex): void {\n const { model } = this.props;\n assertNotNull(rowIndex);\n if (isPartitionedGridModel(model)) {\n const data = this.getRowDataMap(rowIndex);\n const partitionColumnSet = new Set(\n model.partitionColumns.map(column => column.name)\n );\n const values = Object.entries(data)\n .filter(([key, _]) => partitionColumnSet.has(key))\n .map(([key, columnData]) => columnData.value);\n const newPartition: PartitionConfig = {\n partitions: values,\n mode: 'partition',\n };\n this.setState({\n isSelectingPartition: true,\n partitionConfig: newPartition,\n });\n }\n }\n\n copyCell(\n columnIndex: GridRangeIndex,\n rowIndex: GridRangeIndex,\n rawValue = false\n ): void {\n const { canCopy } = this.props;\n if (canCopy) {\n const value = String(\n this.getValueForCell(columnIndex, rowIndex, rawValue)\n );\n copyToClipboard(value).catch(e => log.error('Unable to copy cell', e));\n } else {\n log.error('Attempted to copyCell for user without copy permission.');\n }\n }\n\n copyColumnHeader(columnIndex: GridRangeIndex, columnDepth = 0): void {\n if (columnIndex === null) {\n return;\n }\n const { canCopy } = this.props;\n const { movedColumns } = this.state;\n\n if (canCopy) {\n const copyOperation = {\n columnIndex,\n columnDepth,\n movedColumns,\n };\n this.setState({ copyOperation });\n } else {\n log.error('Attempted copyColumnHeader for user without copy permission.');\n }\n }\n\n /**\n * Copy the provided ranges to the clipboard\n * @paramranges The ranges to copy\n * @param includeHeaders Include the headers or not\n * @param formatValues Whether to format values or not\n * @param error Error message if one occurred\n */\n copyRanges(\n ranges: readonly GridRange[],\n includeHeaders = false,\n formatValues = true,\n error?: string\n ): void {\n const { model, canCopy } = this.props;\n const { metricCalculator, movedColumns } = this.state;\n const userColumnWidths = metricCalculator.getUserColumnWidths();\n\n if (canCopy) {\n const copyOperation = {\n ranges: GridRange.boundedRanges(\n ranges,\n model.columnCount,\n model.rowCount\n ),\n includeHeaders,\n formatValues,\n movedColumns,\n userColumnWidths,\n error,\n };\n\n this.setState({ copyOperation });\n } else {\n log.error('Attempted copyRanges for user without copy permission.');\n }\n }\n\n startLoading(\n loadingText: string,\n {\n resetRanges = false,\n loadingCancelShown = true,\n loadingBlocksGrid = true,\n } = {}\n ): void {\n this.setState({ loadingText, loadingCancelShown, loadingBlocksGrid });\n\n const theme = this.getTheme();\n\n if (resetRanges && this.grid) {\n this.grid.clearSelectedRanges();\n this.grid.setViewState({ top: 0 }, true);\n }\n\n if (this.loadingScrimStartTime == null) {\n const { minScrimTransitionTime, maxScrimTransitionTime } = theme;\n assertNotNull(minScrimTransitionTime);\n assertNotNull(maxScrimTransitionTime);\n const height = this.gridWrapper?.getBoundingClientRect().height ?? 0;\n const scrimTransitionTime = Math.max(\n minScrimTransitionTime,\n Math.min(height / 2, maxScrimTransitionTime)\n );\n this.loadingScrimStartTime = Date.now();\n this.loadingScrimFinishTime =\n this.loadingScrimStartTime + scrimTransitionTime;\n this.setState({\n loadingScrimProgress: 0,\n });\n this.loadingTimer = setTimeout(() => {\n this.setState({\n loadingSpinnerShown: true,\n });\n }, IrisGrid.loadingSpinnerDelay);\n }\n }\n\n stopLoading(): void {\n this.showViewportLoading.cancel();\n this.loadingScrimStartTime = undefined;\n this.loadingScrimFinishTime = undefined;\n this.setState({\n loadingText: null,\n loadingScrimProgress: null,\n loadingSpinnerShown: false,\n loadingCancelShown: false,\n });\n\n if (this.loadingTimer != null) {\n clearTimeout(this.loadingTimer);\n this.loadingTimer = undefined;\n }\n }\n\n /**\n * Rolls back the table state to the last known safe state, or if that's not available then clears all sorts/filters/custom columns.\n */\n rollback(): void {\n if (this.lastLoadedConfig) {\n log.debug('loading last loading config', this.lastLoadedConfig);\n const {\n advancedFilters,\n aggregationSettings,\n customColumns,\n quickFilters,\n reverse,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts,\n } = this.lastLoadedConfig;\n\n this.lastLoadedConfig = null;\n this.setState({\n advancedFilters,\n aggregationSettings,\n customColumns,\n quickFilters,\n reverse,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts,\n });\n } else {\n log.debug('remove all sorts, filters, and custom columns');\n this.setState({\n advancedFilters: new Map(),\n aggregationSettings: DEFAULT_AGGREGATION_SETTINGS,\n customColumns: [],\n quickFilters: new Map(),\n reverse: false,\n rollupConfig: undefined,\n selectDistinctColumns: [],\n sorts: [],\n });\n }\n }\n\n /**\n * Check if we can rollback the current state to a safe state.\n * @returns true if there's a previously known safe state or if some of the current state isn't empty.\n */\n canRollback(): boolean {\n return this.lastLoadedConfig != null || !isEmptyConfig(this.state);\n }\n\n startListening(model: IrisGridModel): void {\n model.addEventListener(IrisGridModel.EVENT.UPDATED, this.handleUpdate);\n model.addEventListener(\n IrisGridModel.EVENT.REQUEST_FAILED,\n this.handleRequestFailed\n );\n model.addEventListener(\n IrisGridModel.EVENT.COLUMNS_CHANGED,\n this.handleCustomColumnsChanged\n );\n model.addEventListener(\n IrisGridModel.EVENT.PENDING_DATA_UPDATED,\n this.handlePendingDataUpdated\n );\n model.addEventListener(\n IrisGridModel.EVENT.VIEWPORT_UPDATED,\n this.handleViewportUpdated\n );\n model.addEventListener(\n IrisGridModel.EVENT.TABLE_CHANGED,\n this.handleTableChanged\n );\n }\n\n stopListening(model: IrisGridModel): void {\n model.removeEventListener(IrisGridModel.EVENT.UPDATED, this.handleUpdate);\n model.removeEventListener(\n IrisGridModel.EVENT.REQUEST_FAILED,\n this.handleRequestFailed\n );\n model.removeEventListener(\n IrisGridModel.EVENT.COLUMNS_CHANGED,\n this.handleCustomColumnsChanged\n );\n model.removeEventListener(\n IrisGridModel.EVENT.PENDING_DATA_UPDATED,\n this.handlePendingDataUpdated\n );\n model.removeEventListener(\n IrisGridModel.EVENT.VIEWPORT_UPDATED,\n this.handleViewportUpdated\n );\n model.removeEventListener(\n IrisGridModel.EVENT.TABLE_CHANGED,\n this.handleTableChanged\n );\n }\n\n focus(): void {\n this.grid?.focus();\n }\n\n focusFilterBar(column: VisibleIndex): void {\n const { movedColumns } = this.state;\n const { model } = this.props;\n const { columnCount } = model;\n const modelColumn = GridUtils.getModelIndex(column, movedColumns);\n\n if (\n column == null ||\n column < 0 ||\n columnCount <= column ||\n !model.isFilterable(modelColumn)\n ) {\n this.setState({ focusedFilterBarColumn: null });\n return;\n }\n\n const { metricCalculator, metrics } = this.state;\n assertNotNull(metrics);\n const { left, rightVisible, lastLeft } = metrics;\n if (column < left) {\n this.grid?.setViewState({ left: column }, true);\n } else if (rightVisible < column) {\n const metricState = this.grid?.getMetricState();\n assertNotNull(metricState);\n const newLeft = metricCalculator.getLastLeft(\n metricState,\n column,\n metricCalculator.getVisibleWidth(metricState)\n );\n this.grid?.setViewState(\n { left: Math.min(newLeft, lastLeft), leftOffset: 0 },\n true\n );\n }\n this.lastFocusedFilterBarColumn = column;\n this.setState({ focusedFilterBarColumn: column, isFilterBarShown: true });\n }\n\n hideColumnByVisibleIndex(columnVisibleIndex: VisibleIndex): void {\n const { metricCalculator, movedColumns } = this.state;\n metricCalculator.setColumnWidth(\n GridUtils.getModelIndex(columnVisibleIndex, movedColumns),\n 0\n );\n\n this.grid?.forceUpdate();\n }\n\n freezeColumnByColumnName(columnName: ColumnName): void {\n const { frozenColumns, movedColumns } = this.state;\n const { model } = this.props;\n log.debug2('freezing column', columnName);\n\n const allFrozenColumns =\n frozenColumns == null\n ? new Set(model.frozenColumns)\n : new Set(frozenColumns);\n\n allFrozenColumns.add(columnName);\n\n const modelIndex = model.getColumnIndexByName(columnName);\n assertNotNull(modelIndex);\n const visibleIndex = GridUtils.getVisibleIndex(modelIndex, movedColumns);\n const newMovedColumns = GridUtils.moveItem(\n visibleIndex,\n allFrozenColumns.size - 1,\n movedColumns\n );\n\n this.setState({\n frozenColumns: [...allFrozenColumns],\n movedColumns: newMovedColumns,\n });\n }\n\n unFreezeColumnByColumnName(columnName: ColumnName): void {\n const { frozenColumns, movedColumns } = this.state;\n const { model } = this.props;\n log.debug2('unfreezing column', columnName);\n\n const allFrozenColumns =\n frozenColumns == null\n ? new Set(model.frozenColumns)\n : new Set(frozenColumns);\n\n allFrozenColumns.delete(columnName);\n\n const modelIndex = model.getColumnIndexByName(columnName);\n assertNotNull(modelIndex);\n const visibleIndex = GridUtils.getVisibleIndex(modelIndex, movedColumns);\n\n // Move to after remaining frozen columns and front columns\n const newMovedColumns = GridUtils.moveItem(\n visibleIndex,\n allFrozenColumns.size + model.frontColumns.length,\n movedColumns\n );\n\n this.setState({\n frozenColumns: [...allFrozenColumns],\n movedColumns: newMovedColumns,\n });\n }\n\n handleColumnVisibilityChanged(\n modelIndexes: readonly ModelIndex[],\n isVisible: boolean\n ): void {\n const { metricCalculator, metrics } = this.state;\n assertNotNull(metrics);\n if (isVisible) {\n modelIndexes.forEach(modelIndex => {\n const defaultWidth =\n metricCalculator.initialColumnWidths.get(modelIndex);\n const calculatedWidth = getOrThrow(\n metrics.calculatedColumnWidths,\n modelIndex\n );\n\n if (defaultWidth !== calculatedWidth) {\n metricCalculator.setColumnWidth(modelIndex, calculatedWidth);\n } else {\n metricCalculator.resetColumnWidth(modelIndex);\n }\n });\n } else {\n modelIndexes.forEach(modelIndex => {\n metricCalculator.setColumnWidth(modelIndex, 0);\n });\n }\n this.grid?.forceUpdate();\n }\n\n handleColumnVisibilityReset(): void {\n const { metricCalculator, metrics } = this.state;\n const { model } = this.props;\n assertNotNull(metrics);\n for (let i = 0; i < metrics.columnCount; i += 1) {\n metricCalculator.resetColumnWidth(i);\n }\n this.handleMovedColumnsChanged(model.initialMovedColumns);\n this.handleHeaderGroupsChanged(model.initialColumnHeaderGroups);\n this.setState({\n frozenColumns: model.layoutHints?.frozenColumns ?? [],\n });\n }\n\n handleCrossColumnSearch(\n searchValue: string,\n selectedSearchColumns: readonly ColumnName[],\n invertSearchColumns: boolean\n ): void {\n const { model } = this.props;\n this.startLoading('Searching...');\n\n this.updateSearchFilter(\n searchValue,\n selectedSearchColumns,\n model.columns,\n invertSearchColumns\n );\n\n this.setState({\n searchValue,\n selectedSearchColumns,\n invertSearchColumns,\n });\n }\n\n updateSearchFilter = debounce(\n (\n searchValue: string,\n selectedSearchColumns: readonly ColumnName[],\n columns: readonly DhType.Column[],\n invertSearchColumns: boolean\n ): void => {\n const { model } = this.props;\n const searchFilter = CrossColumnSearch.createSearchFilter(\n model.dh,\n searchValue,\n selectedSearchColumns,\n columns,\n invertSearchColumns\n );\n this.setState({ searchFilter });\n },\n SET_FILTER_DEBOUNCE\n );\n\n handleAnimationLoop(): void {\n this.grid?.updateCanvas();\n\n if (this.isAnimating) {\n this.animationFrame = requestAnimationFrame(this.handleAnimationLoop);\n }\n }\n\n handleAnimationStart(): void {\n log.debug2('handleAnimationStart');\n\n this.isAnimating = true;\n\n this.animationFrame = requestAnimationFrame(this.handleAnimationLoop);\n }\n\n handleAnimationEnd(): void {\n log.debug2('handleAnimationEnd');\n\n this.isAnimating = false;\n }\n\n handlePartitionChange(partitionConfig: PartitionConfig): void {\n this.startLoading('Partitioning...');\n const { partitionConfig: prevConfig } = this.state;\n if (prevConfig !== partitionConfig) {\n this.setState({ partitionConfig });\n }\n }\n\n handleTableLoadError(error: unknown): void {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n\n log.error(error);\n\n const { onError } = this.props;\n onError(error);\n }\n\n handleViewportUpdated(): void {\n const { model } = this.props;\n const { loadingText, loadingSpinnerShown } = this.state;\n const loadingMessage = 'Waiting for viewport...';\n\n // pending and no timer already exists\n if (model.isViewportPending && !loadingSpinnerShown) {\n this.showViewportLoading();\n } else if (loadingText === loadingMessage && !model.isViewportPending) {\n // extra conditions because timeout might get cleared by update\n this.stopLoading();\n }\n }\n\n showViewportLoading = throttle(\n (): void => {\n const { model } = this.props;\n const { loadingSpinnerShown } = this.state;\n if (model.isViewportPending && !loadingSpinnerShown) {\n // We only want to show the viewport loading if the viewport is still loading\n // and we're not already showing a loader for something else\n this.startLoading('Waiting for viewport...', {\n loadingCancelShown: false,\n loadingBlocksGrid: false,\n });\n }\n },\n VIEWPORT_LOADING_DELAY,\n { leading: false, trailing: true }\n );\n\n showAllColumns(): void {\n const { metricCalculator } = this.state;\n const userColumnWidths = metricCalculator.getUserColumnWidths();\n const entries = [...userColumnWidths.entries()];\n for (let i = 0; i < entries.length; i += 1) {\n const [modelIndex, columnWidth] = entries[i];\n if (columnWidth === 0) {\n metricCalculator.resetColumnWidth(modelIndex);\n }\n }\n this.grid?.forceUpdate();\n }\n\n toggleSort(columnIndex: VisibleIndex, addToExisting: boolean): void {\n log.info('Toggling sort for column', columnIndex);\n\n const { model } = this.props;\n const modelColumn = this.getModelColumn(columnIndex);\n assertNotNull(modelColumn);\n if (model.isColumnSortable(columnIndex)) {\n const { sorts: currentSorts } = this.state;\n const sorts = TableUtils.toggleSortForColumn(\n currentSorts,\n model.columns,\n modelColumn,\n addToExisting\n );\n\n this.updateSorts(sorts);\n } else {\n log.debug('Column type was not sortable', model.columns[columnIndex]);\n }\n }\n\n updateSorts(sorts: readonly DhType.Sort[]): void {\n this.startLoading('Sorting...');\n this.setState({ sorts });\n this.grid?.forceUpdate();\n }\n\n sortColumn(\n modelColumn: ModelIndex,\n direction: SortDirection = TableUtils.sortDirection.none,\n isAbs = false,\n addToExisting = false\n ): void {\n assertNotNull(modelColumn);\n const { model } = this.props;\n const sorts = TableUtils.sortColumn(\n model.sort,\n model.columns,\n modelColumn,\n direction,\n isAbs,\n addToExisting\n );\n this.startLoading('Sorting...');\n this.setState({ sorts });\n this.grid?.forceUpdate();\n }\n\n reverse(reverse: boolean): void {\n this.startLoading('Reversing...');\n this.setState({ reverse });\n this.grid?.forceUpdate();\n }\n\n isReversible(): boolean {\n const { model } = this.props;\n return model.isReversible;\n }\n\n toggleFilterBar(focusIndex = this.lastFocusedFilterBarColumn): void {\n let { isFilterBarShown } = this.state;\n isFilterBarShown = !isFilterBarShown;\n this.setState({ isFilterBarShown });\n\n if (isFilterBarShown) {\n if (focusIndex != null) {\n this.focusFilterBar(focusIndex);\n } else {\n let columnIndex = 0;\n const { model } = this.props;\n const { columnCount } = model;\n for (let i = 0; i < columnCount; i += 1) {\n const modelColumn = this.getModelColumn(i);\n if (modelColumn != null) {\n const column = model.columns[modelColumn];\n if (column != null && TableUtils.isTextType(column.type)) {\n columnIndex = i;\n break;\n }\n }\n }\n this.focusFilterBar(columnIndex);\n }\n } else {\n this.grid?.focus();\n }\n }\n\n isTableSearchAvailable(): boolean {\n const { model, canToggleSearch } = this.props;\n const { dh } = model;\n const searchDisplayMode = model?.layoutHints?.searchDisplayMode;\n\n if (searchDisplayMode === dh.SearchDisplayMode?.SEARCH_DISPLAY_HIDE) {\n return false;\n }\n if (searchDisplayMode === dh.SearchDisplayMode?.SEARCH_DISPLAY_SHOW) {\n return true;\n }\n\n return canToggleSearch;\n }\n\n toggleSearchBar(): void {\n const { showSearchBar } = this.state;\n if (!this.isTableSearchAvailable()) {\n return;\n }\n\n const update = !showSearchBar;\n this.setState(\n {\n showSearchBar: update,\n },\n () => {\n if (update && this.crossColumnRef?.current) {\n this.crossColumnRef?.current.focus();\n } else {\n this.grid?.focus();\n }\n }\n );\n }\n\n toggleGotoRow(row = '', value = '', columnName = ''): void {\n const { isGotoShown } = this.state;\n if (row || value) {\n // if invoked with a row, keep open instead of toggle\n this.setState({\n isGotoShown: true,\n gotoValue: value,\n gotoValueSelectedColumnName: columnName,\n gotoRowError: '',\n gotoValueError: '',\n gotoValueManuallyChanged: false,\n });\n this.focusRowInGrid(row);\n this.gotoRowRef.current?.focus();\n return;\n }\n\n const cursorRow = this.grid?.state.cursorRow;\n const cursorColumn = this.grid?.state.cursorColumn;\n\n if (cursorRow == null || cursorColumn == null) {\n // if a cell is not selected / grid is not rendered\n this.setState({\n isGotoShown: !isGotoShown,\n gotoRow: '',\n gotoValue: '',\n gotoRowError: '',\n gotoValueError: '',\n gotoValueManuallyChanged: false,\n });\n return;\n }\n // if a row is selected\n const { model } = this.props;\n const { name, type } = model.columns[cursorColumn];\n\n const cellValue = model.valueForCell(cursorColumn, cursorRow);\n const text = IrisGridUtils.convertValueToText(cellValue, type);\n this.setState({\n isGotoShown: !isGotoShown,\n gotoRow: `${cursorRow + 1}`,\n gotoValue: text,\n gotoValueSelectedColumnName: name,\n gotoRowError: '',\n gotoValueError: '',\n gotoValueManuallyChanged: false,\n });\n }\n\n async commitPending(): Promise<void> {\n const { model } = this.props;\n if (!isEditableGridModel(model) || !model.isEditable) {\n throw new Error('Cannot save, table is not editable');\n }\n\n const { pendingSavePromise } = this.state;\n if (pendingSavePromise != null) {\n throw new Error('Save already in progress');\n }\n\n const containsGridCellInputField =\n document?.activeElement?.classList.contains('grid-cell-input-field');\n if (containsGridCellInputField != null && containsGridCellInputField) {\n if (\n document.activeElement != null &&\n document.activeElement.classList.contains('error')\n ) {\n throw new ValidationError('Current input is invalid');\n }\n\n // Focus the grid again to commit any pending input changes\n this.grid?.focus();\n }\n\n const newPendingSavePromise = this.pending\n .add(model.commitPending())\n .then(() => {\n this.setState({ pendingSaveError: null, pendingSavePromise: null });\n })\n .catch(err => {\n if (!PromiseUtils.isCanceled(err)) {\n this.setState({ pendingSaveError: err, pendingSavePromise: null });\n }\n });\n this.setState({ pendingSavePromise: newPendingSavePromise });\n return newPendingSavePromise;\n }\n\n async discardPending(): Promise<void> {\n const { pendingSavePromise } = this.state;\n if (pendingSavePromise != null) {\n throw new Error('Cannot cancel a save in progress');\n }\n\n this.setState({\n pendingSavePromise: null,\n pendingSaveError: null,\n pendingDataMap: new Map(),\n pendingDataErrors: new Map(),\n });\n }\n\n /**\n * Select the passed in column and notify listener\n * @param column The column in this table to link\n */\n selectColumn(column: DhType.Column): void {\n const { onColumnSelected } = this.props;\n onColumnSelected(column);\n }\n\n /**\n * Get the row data map for a given row and notifies the listener\n */\n selectData(columnIndex: ModelIndex, rowIndex: ModelIndex): void {\n const dataMap = this.getRowDataMap(rowIndex);\n const { onDataSelected } = this.props;\n onDataSelected(rowIndex, dataMap);\n }\n\n /**\n * Get the data map for the given row\n * @param rowIndex Row to get the data map for\n * @returns Data map for the row\n */\n getRowDataMap(rowIndex: ModelIndex): RowDataMap {\n const { model } = this.props;\n const { columns, groupedColumns } = model;\n const dataMap: RowDataMap = {};\n for (let i = 0; i < columns.length; i += 1) {\n const column = columns[i];\n const { name, type } = column;\n const value = model.valueForCell(i, rowIndex);\n const text = model.textForCell(i, rowIndex);\n const visibleIndex = this.getVisibleColumn(i);\n const isExpandable =\n isExpandableGridModel(model) && model.isRowExpandable(rowIndex);\n const isGrouped = groupedColumns.find(c => c.name === name) != null;\n dataMap[name] = {\n value,\n text,\n type,\n isGrouped,\n isExpandable,\n visibleIndex,\n };\n }\n return dataMap;\n }\n\n handleAdvancedFilterChange(\n column: DhType.Column,\n filter: DhType.FilterCondition | null,\n options: AdvancedFilterOptions\n ): void {\n const { model } = this.props;\n const index = model.getColumnIndexByName(column.name);\n assertNotNull(index);\n this.setAdvancedFilter(index, filter, options);\n }\n\n handleAdvancedFilterSortChange(\n column: DhType.Column,\n direction: SortDirection,\n addToExisting = false\n ): void {\n const { model } = this.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n const columnName = model.columns[columnIndex].name;\n const oldSort = TableUtils.getSortForColumn(model.sort, columnName);\n let newSort = null;\n\n if (oldSort == null || oldSort.direction !== direction) {\n if (direction === TableUtils.sortDirection.descending) {\n newSort = column.sort().desc();\n } else {\n newSort = column.sort().asc();\n }\n }\n\n const sorts = TableUtils.setSortForColumn(\n model.sort,\n columnName,\n newSort,\n addToExisting\n );\n log.info('Setting table sorts', sorts);\n\n this.startLoading('Sorting...');\n this.setState({ sorts });\n\n this.grid?.forceUpdate();\n }\n\n handleAdvancedFilterDone(): void {\n this.grid?.focus();\n }\n\n handleAdvancedMenuOpened(column: GridRangeIndex): void {\n this.setState({ shownAdvancedFilter: column });\n }\n\n handleGotoRowOpened(): void {\n this.setState({ isGotoShown: true, gotoValueManuallyChanged: false });\n }\n\n handleGotoRowClosed(): void {\n this.setState({ isGotoShown: false, gotoValueManuallyChanged: false });\n }\n\n handleAdvancedMenuClosed(columnIndex: number): void {\n const { focusedFilterBarColumn, isFilterBarShown } = this.state;\n if (\n isFilterBarShown &&\n focusedFilterBarColumn === columnIndex &&\n this.filterInputRef?.current !== null\n ) {\n this.filterInputRef?.current.focus();\n this.setState({ shownAdvancedFilter: null });\n } else {\n this.setState({\n focusedFilterBarColumn: null,\n shownAdvancedFilter: null,\n });\n }\n }\n\n handleCancel(): void {\n this.rollback();\n }\n\n // eslint-disable-next-line class-methods-use-this\n handleChartChange(): void {\n // TODO: IDS-4242 Update Chart Preview\n }\n\n handleChartCreate(settings: ChartBuilderSettings): void {\n const { model, onCreateChart } = this.props;\n onCreateChart(settings, model);\n }\n\n handleGridError(error?: Error): void {\n log.warn('Grid Error', error);\n this.setState({\n toastMessage: <div className=\"error-message\">{`${error}`}</div>,\n });\n }\n\n handleFilterBarChange(value: string): void {\n this.startLoading('Filtering...', { resetRanges: true });\n\n this.setState(({ focusedFilterBarColumn, quickFilters }) => {\n const newQuickFilters = new Map(quickFilters);\n if (focusedFilterBarColumn != null) {\n const modelIndex = this.getModelColumn(focusedFilterBarColumn);\n assertNotNull(modelIndex);\n this.applyQuickFilter(modelIndex, value, newQuickFilters);\n }\n return { quickFilters: newQuickFilters };\n });\n }\n\n handleFilterBarDone(setGridFocus = true, defocusInput = true): void {\n if (setGridFocus) {\n this.grid?.focus();\n }\n if (defocusInput) {\n this.setState({ focusedFilterBarColumn: null });\n }\n }\n\n handleFilterBarTab(backward: boolean): void {\n const { focusedFilterBarColumn } = this.state;\n assertNotNull(focusedFilterBarColumn);\n if (backward) {\n this.focusFilterBar(focusedFilterBarColumn - 1);\n } else {\n this.focusFilterBar(focusedFilterBarColumn + 1);\n }\n }\n\n handleFormatSelection(\n modelIndex: ModelIndex,\n selectedFormat: TableColumnFormat | null\n ): void {\n const { model } = this.props;\n const column = model.columns[modelIndex];\n const { customColumnFormatMap: prevCustomColumnFormatMap } = this.state;\n const customColumnFormatMap = new Map(prevCustomColumnFormatMap);\n\n if (selectedFormat != null) {\n const normalizedType = TableUtils.getNormalizedType(column.type);\n assertNotNull(normalizedType);\n const columnFormattingRule = Formatter.makeColumnFormattingRule(\n normalizedType,\n column.name,\n selectedFormat\n );\n\n customColumnFormatMap.set(column.name, columnFormattingRule);\n } else {\n customColumnFormatMap.delete(column.name);\n }\n\n this.updateFormatter({ customColumnFormatMap });\n }\n\n handleMenu(e: React.MouseEvent<HTMLButtonElement>): void {\n e.stopPropagation();\n this.setState({ isMenuShown: true });\n }\n\n handleMenuClose(): void {\n this.setState({ isMenuShown: false, openOptions: [] });\n }\n\n handleMenuBack(): void {\n this.setState(({ openOptions }) => {\n const newOptions = [...openOptions];\n newOptions.pop();\n return { openOptions: newOptions };\n });\n }\n\n handleMenuSelect(option: OptionItem): void {\n this.setState(({ openOptions }) => ({\n openOptions: [...openOptions, option],\n }));\n }\n\n handleRequestFailed(event: EventT): void {\n const { detail: error } = event as CustomEvent;\n log.error('request failed:', error);\n this.stopLoading();\n const { partitionConfig } = this.state;\n if (isMissingPartitionError(error) && partitionConfig != null) {\n // We'll try loading the initial partition again\n this.startLoading('Reloading partition...', { resetRanges: true });\n this.setState({ partitionConfig: undefined }, () => {\n this.initState();\n });\n } else if (this.canRollback()) {\n this.startLoading('Rolling back changes...', { resetRanges: true });\n this.rollback();\n } else {\n log.error('Table failed and unable to rollback');\n const { onError } = this.props;\n onError(new Error(`Error displaying table: ${error}`));\n }\n }\n\n handleUpdate(): void {\n log.debug2('Received model update');\n\n const {\n advancedFilters,\n aggregationSettings,\n customColumns,\n quickFilters,\n reverse,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts,\n } = this.state;\n\n const config = {\n advancedFilters,\n aggregationSettings,\n customColumns,\n quickFilters,\n reverse,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts,\n };\n\n if (!isEmptyConfig(config)) {\n this.lastLoadedConfig = config;\n } else {\n this.lastLoadedConfig = null;\n }\n\n this.grid?.forceUpdate();\n this.stopLoading();\n }\n\n handleTableChanged(): void {\n const { model } = this.props;\n // movedColumns reset triggers metricCalculator update in the Grid component\n this.setState({ movedColumns: model.initialMovedColumns });\n }\n\n handleViewChanged(metrics?: GridMetrics): void {\n const { model } = this.props;\n const { selectionEndRow = 0 } = this.grid?.state ?? {};\n let pendingRowCount = 0;\n if (isEditableGridModel(model) && model.isEditable) {\n assertNotNull(metrics);\n const { bottomViewport } = metrics;\n\n // We have an editable table that we can add new rows to\n // Display empty rows beneath the table rows that user can fill in\n const bottomNonFloating = model.rowCount - model.floatingBottomRowCount;\n if (selectionEndRow === bottomNonFloating - 1) {\n // Selection is in the last row, add another blank row\n pendingRowCount = model.pendingRowCount + 1;\n } else if (selectionEndRow === bottomNonFloating - 2) {\n // We may have just added a row based on selection moving, so just leave it as is\n pendingRowCount = model.pendingRowCount;\n } else {\n // Otherwise fill up the viewport with empty cells\n pendingRowCount = Math.max(\n 0,\n bottomViewport -\n (model.rowCount - model.pendingRowCount) -\n model.floatingTopRowCount -\n model.floatingBottomRowCount -\n 1\n );\n }\n }\n\n this.setState({ metrics, pendingRowCount });\n }\n\n handleSelectionChanged(selectedRanges?: readonly GridRange[]): void {\n assertNotNull(selectedRanges);\n const { onSelectionChanged } = this.props;\n const { copyOperation } = this.state;\n this.setState({ selectedRanges });\n if (copyOperation != null) {\n this.setState({ copyOperation: null });\n }\n if (this.grid?.state.cursorRow != null) {\n this.setState({ gotoRow: `${this.grid.state.cursorRow + 1}` });\n }\n onSelectionChanged(selectedRanges);\n }\n\n handleMovedColumnsChanged(\n movedColumns: readonly MoveOperation[],\n onChangeApplied?: () => void\n ): void {\n this.setState({ movedColumns }, onChangeApplied);\n }\n\n handleHeaderGroupsChanged(\n columnHeaderGroups: readonly (DhType.ColumnGroup | ColumnHeaderGroup)[]\n ): void {\n const { model } = this.props;\n this.setState(\n {\n columnHeaderGroups: IrisGridUtils.parseColumnHeaderGroups(\n model,\n columnHeaderGroups\n ).groups,\n },\n () => this.grid?.forceUpdate()\n );\n }\n\n handleTooltipRef(tooltip: Tooltip): void {\n // Need to start the timer right away, since we're creating the tooltip when we want the timer to start\n if (tooltip != null) {\n tooltip.startTimer();\n }\n\n this.tooltip = tooltip;\n }\n\n handleConditionalFormatsChange(\n conditionalFormats: readonly SidebarFormattingRule[]\n ): void {\n log.debug('Updated conditional formats', conditionalFormats);\n this.setState({ conditionalFormats });\n }\n\n handleConditionalFormatCreate(): void {\n log.debug('Create new conditional format');\n const { openOptions, conditionalFormats } = this.state;\n this.setState({\n openOptions: [\n ...openOptions,\n {\n type: OptionType.CONDITIONAL_FORMATTING_EDIT,\n title: `Create Formatting Rule`,\n },\n ],\n conditionalFormatEditIndex: conditionalFormats.length,\n // Start with a blank rule\n conditionalFormatPreview: undefined,\n });\n }\n\n handleConditionalFormatEdit(index: number): void {\n log.debug('Edit conditional format', index);\n const { openOptions, conditionalFormats } = this.state;\n this.setState({\n openOptions: [\n ...openOptions,\n {\n type: OptionType.CONDITIONAL_FORMATTING_EDIT,\n title: `Edit Formatting Rule`,\n },\n ],\n conditionalFormatEditIndex: index,\n // Clone rule to preview temporary changes\n conditionalFormatPreview: { ...conditionalFormats[index] },\n });\n }\n\n // Apply live changes\n handleConditionalFormatEditorUpdate = debounce(\n (conditionalFormatPreview?: SidebarFormattingRule): void => {\n this.setState({ conditionalFormatPreview });\n },\n SET_CONDITIONAL_FORMAT_DEBOUNCE\n );\n\n handleConditionalFormatEditorSave(config: SidebarFormattingRule): void {\n log.debug('Save conditional format changes', config);\n this.setState(\n state => {\n if (state.conditionalFormatEditIndex === null) {\n log.debug('Invalid format index');\n return null;\n }\n const conditionalFormats = [...state.conditionalFormats];\n conditionalFormats[state.conditionalFormatEditIndex] = config;\n return { conditionalFormats };\n },\n () => {\n this.handleMenuBack();\n }\n );\n }\n\n handleConditionalFormatEditorCancel(): void {\n this.handleMenuBack();\n // Not resetting conditionalFormatPreview here\n // to prevent editor fields change during the menu transition\n this.setState({ conditionalFormatEditIndex: null });\n }\n\n handleUpdateCustomColumns(customColumns: readonly string[]): void {\n log.info(`handleUpdateCustomColumns:`, customColumns);\n\n const { model } = this.props;\n const {\n movedColumns,\n sorts,\n quickFilters,\n advancedFilters,\n selectDistinctColumns,\n } = this.state;\n\n const { columns } = model;\n const oldCustomColumns = model.customColumns.map(\n customColumn => `${customColumn}`\n );\n\n const removedColumnNames = IrisGridUtils.getRemovedCustomColumnNames(\n oldCustomColumns,\n customColumns\n );\n if (removedColumnNames.length > 0) {\n const newSorts = IrisGridUtils.removeSortsInColumns(\n sorts,\n removedColumnNames\n );\n const newQuickFilters = IrisGridUtils.removeFiltersInColumns(\n columns,\n quickFilters,\n removedColumnNames\n );\n const newAdvancedFilters = IrisGridUtils.removeFiltersInColumns(\n columns,\n advancedFilters,\n removedColumnNames\n );\n const newMovedColumns = IrisGridUtils.removeColumnFromMovedColumns(\n columns,\n movedColumns,\n removedColumnNames\n );\n const newSelectDistinctColumns =\n IrisGridUtils.removeColumnsFromSelectDistinctColumns(\n selectDistinctColumns,\n removedColumnNames\n );\n if (newSorts.length !== sorts.length) {\n log.debug('removing sorts from removed custom columns...');\n this.setState({ sorts: newSorts });\n }\n if (\n newQuickFilters.size !== quickFilters.size ||\n newAdvancedFilters.size !== advancedFilters.size\n ) {\n log.debug(`removing filters from removed custom columns...`);\n this.setState({\n quickFilters: newQuickFilters,\n advancedFilters: newAdvancedFilters,\n });\n }\n if (!deepEqual(movedColumns, newMovedColumns)) {\n log.debug(\n `change moved columns for removed custom columns`,\n newMovedColumns\n );\n this.setState({ movedColumns: newMovedColumns });\n }\n if (!deepEqual(selectDistinctColumns, newSelectDistinctColumns)) {\n log.debug(\n `change selectDistinct columns for removed custom columns`,\n newMovedColumns\n );\n this.setState({ selectDistinctColumns: newSelectDistinctColumns });\n }\n }\n\n this.setState({ customColumns });\n if (customColumns.length > 0) {\n // If there are no custom columns, the change handler never fires\n // This causes the loader to stay until canceled by the user\n this.startLoading('Applying custom columns...');\n }\n }\n\n handleCustomColumnsChanged(): void {\n log.debug('custom columns changed');\n const { isReady } = this.state;\n if (isReady) {\n this.stopLoading();\n this.grid?.forceUpdate();\n } else {\n this.loadTableState();\n }\n }\n\n handlePendingCommitClicked(): Promise<void> {\n return this.commitPending();\n }\n\n handlePendingDiscardClicked(): Promise<void> {\n return this.discardPending();\n }\n\n handlePendingDataUpdated(): void {\n log.debug('pending data updated');\n const { model } = this.props;\n const { pendingDataMap, pendingDataErrors } = model;\n this.setState({\n pendingDataMap,\n pendingDataErrors,\n pendingSaveError: null,\n });\n this.grid?.forceUpdate();\n }\n\n handleResizeColumn(modelIndex: number): void {\n const { metrics, metricCalculator } = this.state;\n if (!metrics) throw new Error('Metrics not set');\n\n const contentWidth = getOrThrow(metrics.contentColumnWidths, modelIndex);\n\n const userWidths = metricCalculator.getUserColumnWidths();\n if (userWidths.has(modelIndex)) {\n metricCalculator.resetColumnWidth(modelIndex);\n metricCalculator.setCalculatedColumnWidth(modelIndex, contentWidth);\n } else {\n metricCalculator.setColumnWidth(modelIndex, contentWidth);\n }\n\n this.grid?.forceUpdate();\n }\n\n handleResizeAllColumns(): void {\n const { metrics, metricCalculator } = this.state;\n if (!metrics) throw new Error('Metrics not set');\n\n const allColumns = [...metrics.allColumnWidths.entries()];\n const visibleColumns = allColumns\n .filter(([_, width]) => width !== 0)\n .map(([modelIndex]) => modelIndex);\n\n const contentWidths = metrics.contentColumnWidths;\n const userWidths = metricCalculator.getUserColumnWidths();\n\n const manualColumns = visibleColumns.filter(modelIndex =>\n userWidths.has(modelIndex)\n );\n\n if (visibleColumns.length === manualColumns.length) {\n // All columns are manually sized, flip all to auto resize\n for (let i = 0; i < visibleColumns.length; i += 1) {\n const modelIndex = visibleColumns[i];\n const contentWidth = getOrThrow(contentWidths, modelIndex);\n metricCalculator.resetColumnWidth(modelIndex);\n metricCalculator.setCalculatedColumnWidth(modelIndex, contentWidth);\n }\n } else {\n // Flip all to manual sized\n for (let i = 0; i < visibleColumns.length; i += 1) {\n const modelIndex = visibleColumns[i];\n const contentWidth = getOrThrow(contentWidths, modelIndex);\n metricCalculator.setColumnWidth(modelIndex, contentWidth);\n }\n }\n\n this.grid?.forceUpdate();\n }\n\n /**\n * User added, removed, or changed the order of aggregations, or position\n * @param aggregationSettings The new aggregation settings\n * @param added The aggregations that were added\n * @param removed The aggregations that were removed\n */\n handleAggregationsChange(\n aggregationSettings: AggregationSettings,\n added: AggregationOperation[] = [],\n removed: AggregationOperation[] = []\n ): void {\n log.debug('handleAggregationsChange', aggregationSettings, added, removed);\n const { rollupConfig } = this.state;\n const isRollup = (rollupConfig?.columns?.length ?? 0) > 0;\n // Do not start loading if this is rollup and added / removed aggregations are prohibited for rollups\n const changes = [...added, ...removed];\n const shouldStartLoading = !(\n isRollup &&\n changes.length > 0 &&\n changes.every(op => AggregationUtils.isRollupProhibited(op))\n );\n\n if (shouldStartLoading) {\n this.startLoading(\n `Aggregating ${aggregationSettings.aggregations\n .map(a => a.operation)\n .join(', ')}...`\n );\n }\n this.setState({ aggregationSettings });\n }\n\n /**\n * A specific aggregation has been modified\n * @param aggregation The new aggregation\n */\n handleAggregationChange(aggregation: Aggregation): void {\n log.debug('handleAggregationChange', aggregation);\n const { rollupConfig } = this.state;\n const isRollup = (rollupConfig?.columns?.length ?? 0) > 0;\n // Do not start loading if this is rollup and the aggregation is prohibited for rollups\n const shouldStartLoading = !(\n isRollup && AggregationUtils.isRollupProhibited(aggregation.operation)\n );\n\n if (shouldStartLoading) {\n this.startLoading(`Aggregating ${aggregation.operation}...`);\n }\n\n this.setState(({ aggregationSettings }) => ({\n selectedAggregation: aggregation,\n aggregationSettings: {\n ...aggregationSettings,\n aggregations: aggregationSettings.aggregations.map(a =>\n a.operation === aggregation.operation ? aggregation : a\n ),\n },\n }));\n }\n\n /**\n * An aggregations has been selected for editing\n * @param aggregation The aggregation to edit\n */\n handleAggregationEdit(aggregation: Aggregation): void {\n log.debug('handleAggregationEdit', aggregation);\n\n const { openOptions } = this.state;\n\n this.setState({\n openOptions: [\n ...openOptions,\n {\n type: OptionType.AGGREGATION_EDIT,\n title: `Edit Columns to ${aggregation.operation}`,\n },\n ],\n selectedAggregation: aggregation,\n });\n }\n\n handleRollupChange(rollupConfig: UIRollupConfig): void {\n log.info('Rollup change', rollupConfig);\n\n this.resetGridViewState();\n this.showAllColumns();\n this.clearAllFilters();\n\n this.startLoading(\n `Grouping by columns ${rollupConfig?.columns?.join(', ') ?? ''}...`\n );\n\n // Have to clear select distinct since rollup uses the original columns, not the current ones.\n // IrisGridProxyModel has a check to prevent model update\n // when selectDistinctModel is cleared and the rollupConfig is set on the model.\n this.setState({\n rollupConfig,\n movedColumns: [],\n frozenColumns: [],\n sorts: [],\n reverse: false,\n selectDistinctColumns: [],\n });\n }\n\n handleSelectDistinctChanged(columnNames: readonly ColumnName[]): void {\n log.debug('SelectDistinct change', columnNames);\n\n this.resetGridViewState();\n\n this.showAllColumns();\n this.clearAllFilters();\n this.clearAllAggregations();\n\n this.startLoading(\n `Selecting distinct values in ${\n columnNames.length > 0 ? columnNames.join(', ') : ''\n }...`\n );\n\n this.setState({\n selectDistinctColumns: columnNames,\n movedColumns: [],\n sorts: [],\n reverse: false,\n });\n }\n\n handleDownloadTableStart(): void {\n const { canDownloadCsv } = this.props;\n if (canDownloadCsv) {\n this.setState({\n isTableDownloading: true,\n tableDownloadProgress: 0,\n tableDownloadEstimatedTime: null,\n tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.INITIATING,\n });\n } else {\n log.error(\n 'Attempted to handleDownloadTableStart for user without download CSV permission.'\n );\n }\n }\n\n handleDownloadTable(\n fileName: string,\n frozenTable: DhType.Table,\n tableSubscription: DhType.TableViewportSubscription,\n snapshotRanges: readonly GridRange[],\n modelRanges: readonly GridRange[],\n includeColumnHeaders: boolean,\n useUnformattedValues: boolean\n ): void {\n const { canDownloadCsv } = this.props;\n if (canDownloadCsv) {\n log.info(\n 'start table downloading',\n fileName,\n frozenTable,\n tableSubscription,\n snapshotRanges,\n modelRanges,\n includeColumnHeaders,\n useUnformattedValues\n );\n this.setState(() => {\n if (this.tableSaver) {\n this.tableSaver.startDownload(\n fileName,\n frozenTable,\n tableSubscription,\n snapshotRanges,\n modelRanges,\n includeColumnHeaders,\n useUnformattedValues\n );\n }\n return {\n tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING,\n };\n });\n } else {\n log.error(\n 'Attempted to handleDownloadTable for user without download CSV permission.'\n );\n }\n }\n\n /**\n * Aggregation editing has completed. Need to filter out any aggregations that have no columns selected\n */\n removeEmptyAggregations(): void {\n log.debug('removeEmptyAggregations');\n\n this.setState(({ aggregationSettings }) => {\n const { aggregations } = aggregationSettings;\n const newAggregations = aggregations.filter(\n a => a.selected.length > 0 || a.invert\n );\n if (newAggregations.length !== aggregations.length) {\n return {\n selectedAggregation: null,\n aggregationSettings: {\n ...aggregationSettings,\n aggregations: newAggregations,\n },\n };\n }\n return { selectedAggregation: null, aggregationSettings };\n });\n }\n\n async seekRow(inputString: string, isBackwards = false): Promise<void> {\n const {\n gotoValueSelectedColumnName: selectedColumnName,\n gotoValueSelectedFilter,\n } = this.state;\n const { model } = this.props;\n const { dh } = model;\n if (!model.isSeekRowAvailable) {\n return;\n }\n\n if (inputString === '') {\n return;\n }\n const selectedColumn = IrisGridUtils.getColumnByName(\n model.columns,\n selectedColumnName\n );\n\n if (selectedColumn === undefined) {\n return;\n }\n\n let searchFromRow = this.grid?.state.cursorRow;\n\n if (searchFromRow == null) {\n searchFromRow = 0;\n }\n\n const isContains =\n gotoValueSelectedFilter === FilterType.contains ||\n gotoValueSelectedFilter === FilterType.containsIgnoreCase;\n const isIgnoreCase =\n gotoValueSelectedFilter === FilterType.eqIgnoreCase ||\n gotoValueSelectedFilter === FilterType.containsIgnoreCase;\n\n try {\n const { formatter } = model;\n const columnDataType = TableUtils.getNormalizedType(selectedColumn.type);\n\n let rowIndex;\n\n switch (columnDataType) {\n case TableUtils.dataType.CHAR:\n case TableUtils.dataType.STRING: {\n rowIndex = await model.seekRow(\n searchFromRow,\n selectedColumn,\n dh.ValueType.STRING,\n inputString,\n isIgnoreCase,\n isContains,\n isBackwards ?? false\n );\n break;\n }\n case TableUtils.dataType.DATETIME: {\n const [startDate] = DateUtils.parseDateRange(\n dh,\n inputString,\n formatter.timeZone\n );\n rowIndex = await model.seekRow(\n searchFromRow,\n selectedColumn,\n dh.ValueType.DATETIME,\n startDate,\n undefined,\n undefined,\n isBackwards ?? false\n );\n break;\n }\n case TableUtils.dataType.DECIMAL:\n case TableUtils.dataType.INT: {\n if (\n !TableUtils.isBigDecimalType(selectedColumn.type) &&\n !TableUtils.isBigIntegerType(selectedColumn.type)\n ) {\n let inputValue = parseInt(inputString, 10);\n if (inputString === '-Infinity') {\n inputValue = Number.NEGATIVE_INFINITY;\n } else if (inputString === 'Infinity') {\n inputValue = Number.POSITIVE_INFINITY;\n }\n\n rowIndex = await model.seekRow(\n searchFromRow,\n selectedColumn,\n dh.ValueType.NUMBER,\n inputValue,\n undefined,\n undefined,\n isBackwards ?? false\n );\n } else {\n rowIndex = await model.seekRow(\n searchFromRow,\n selectedColumn,\n dh.ValueType.STRING,\n inputString,\n undefined,\n undefined,\n isBackwards ?? false\n );\n }\n break;\n }\n default: {\n rowIndex = await model.seekRow(\n searchFromRow,\n selectedColumn,\n dh.ValueType.STRING,\n this.tableUtils.makeValue(\n selectedColumn.type,\n inputString,\n formatter.timeZone\n ),\n undefined,\n undefined,\n isBackwards ?? false\n );\n }\n }\n\n this.grid?.setFocusRow(rowIndex);\n this.setState({ gotoValueError: '' });\n } catch (e: unknown) {\n this.setState({ gotoValueError: 'invalid input' });\n }\n }\n\n handleCancelDownloadTable(): void {\n this.tableSaver?.cancelDownload();\n this.setState({ isTableDownloading: false });\n }\n\n handleDownloadProgressUpdate = throttle(\n (\n tableDownloadProgress: number,\n tableDownloadEstimatedTime: number | null\n ) => {\n const { tableDownloadStatus } = this.state;\n if (\n tableDownloadStatus === TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING\n ) {\n this.setState({\n tableDownloadProgress,\n tableDownloadEstimatedTime,\n });\n }\n },\n UPDATE_DOWNLOAD_THROTTLE\n );\n\n handleDownloadCompleted(): void {\n this.setState({\n isTableDownloading: false,\n tableDownloadProgress: 100,\n tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.FINISHED,\n });\n }\n\n handleDownloadCanceled(): void {\n this.setState({\n isTableDownloading: false,\n tableDownloadProgress: 0,\n tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.CANCELED,\n });\n }\n\n /**\n * Delete the specified ranges from the table.\n * @param ranges The ranges to delete\n */\n deleteRanges(ranges: readonly GridRange[]): void {\n const { model } = this.props;\n if (!isDeletableGridModel(model) || !model.isDeletable) {\n throw new Error('Model does not support deleting ranges');\n }\n\n this.pending.add(model.delete(ranges)).catch(e => {\n if (!PromiseUtils.isCanceled(e)) {\n log.error('Unable to delete ranges', ranges, e);\n }\n });\n }\n\n resetColumnSelection(): void {\n if (this.grid == null) {\n return;\n }\n const { isSelectingColumn } = this.props;\n if (isSelectingColumn) {\n const { columnAllowedCursor } = this.props;\n this.grid.setState({ cursor: columnAllowedCursor });\n } else {\n this.grid.setState({ cursor: null });\n this.setState({ hoverSelectColumn: null });\n }\n }\n\n resetGridViewState(forceUpdate = true): void {\n if (!this.grid) {\n return;\n }\n\n this.grid.clearSelectedRanges();\n this.grid.setViewState(\n { left: 0, top: 0, topOffset: 0, leftOffset: 0 },\n forceUpdate\n );\n }\n\n sendStateChange(): void {\n if (!this.grid) {\n return;\n }\n const { state: irisGridState } = this;\n const { state: gridState } = this.grid;\n const { onStateChange } = this.props;\n\n onStateChange(irisGridState, gridState);\n }\n\n handleOverflowClose(): void {\n this.setState({\n showOverflowModal: false,\n });\n }\n\n handleOpenNoPastePermissionModal(errorMessage: string): void {\n this.setState({\n showNoPastePermissionModal: true,\n noPastePermissionError: errorMessage,\n });\n }\n\n handleCloseNoPastePermissionModal(): void {\n this.setState({\n showNoPastePermissionModal: false,\n });\n }\n\n getColumnBoundingRect(): DOMRect {\n const { metrics, shownColumnTooltip } = this.state;\n assertNotNull(metrics);\n assertNotNull(shownColumnTooltip);\n const gridRect = this.gridWrapper?.getBoundingClientRect();\n const popperMargin = 20;\n assertNotNull(gridRect);\n const {\n columnHeaderHeight,\n allColumnXs,\n allColumnWidths,\n width,\n columnHeaderMaxDepth,\n } = metrics;\n const columnX = allColumnXs.get(shownColumnTooltip);\n const columnWidth = allColumnWidths.get(shownColumnTooltip);\n\n assertNotNull(columnX);\n assertNotNull(columnWidth);\n\n const left =\n gridRect.left +\n clamp(columnX + columnWidth / 2, popperMargin, width - popperMargin);\n\n return {\n top: gridRect.top + (columnHeaderMaxDepth - 1) * columnHeaderHeight,\n left:\n gridRect.left +\n clamp(columnX + columnWidth / 2, popperMargin, width - popperMargin),\n bottom: gridRect.top + columnHeaderMaxDepth * columnHeaderHeight,\n right:\n gridRect.left +\n clamp(columnX + columnWidth / 2, popperMargin, width - popperMargin) +\n 1,\n width: 1,\n height: columnHeaderHeight,\n x: left,\n y: gridRect.top,\n toJSON: () => {\n throw new Error('not implemented');\n },\n };\n }\n\n getOverflowButtonTooltip = memoize(\n (overflowButtonTooltipProps: CSSProperties): ReactNode => {\n if (overflowButtonTooltipProps == null) {\n return null;\n }\n\n const wrapperStyle: CSSProperties = {\n position: 'absolute',\n ...overflowButtonTooltipProps,\n pointerEvents: 'none',\n };\n\n const popperOptions: PopperOptions = {\n placement: 'left',\n modifiers: {\n flip: {\n behavior: ['left', 'right'],\n },\n },\n };\n\n return (\n <div style={wrapperStyle}>\n <Tooltip\n key={Date.now()}\n options={popperOptions}\n ref={this.handleTooltipRef}\n >\n View full contents\n </Tooltip>\n </div>\n );\n },\n { max: 1 }\n );\n\n getExpandCellTooltip = memoize(\n (expandCellTooltipProps: CSSProperties): ReactNode => {\n if (expandCellTooltipProps == null) {\n return null;\n }\n\n const { expandTooltipDisplayValue } = this.state;\n const { model } = this.props;\n const isExpandAllAvailable =\n isExpandableGridModel(model) && model.isExpandAllAvailable;\n\n const wrapperStyle: CSSProperties = {\n position: 'absolute',\n ...expandCellTooltipProps,\n pointerEvents: 'none',\n };\n\n const popperOptions: PopperOptions = {\n placement: 'bottom-start',\n };\n\n return (\n <div style={wrapperStyle}>\n <Tooltip\n key={Date.now()}\n options={popperOptions}\n ref={this.handleTooltipRef}\n >\n <div style={{ textAlign: 'left' }}>\n Click to {expandTooltipDisplayValue} row\n {isExpandAllAvailable && (\n <>\n <br />\n {ContextActionUtils.isMacPlatform() ? '⌘' : 'Ctrl+'}Click to\n expand row and all children\n </>\n )}\n </div>\n </Tooltip>\n </div>\n );\n },\n { max: 1 }\n );\n\n getHoverTooltip = memoize(\n (hoverTooltipProps: CSSProperties): ReactNode => {\n if (hoverTooltipProps == null) {\n return null;\n }\n\n const { hoverDisplayValue } = this.state;\n\n const wrapperStyle: CSSProperties = {\n position: 'absolute',\n ...hoverTooltipProps,\n pointerEvents: 'none',\n };\n\n const popperOptions: PopperOptions = {\n placement: 'bottom',\n };\n\n return (\n <div style={wrapperStyle}>\n <Tooltip options={popperOptions} ref={this.handleTooltipRef}>\n <div className=\"link-hover-tooltip\">{hoverDisplayValue}</div>\n </Tooltip>\n </div>\n );\n },\n { max: 1 }\n );\n\n handleGotoRowSelectedRowNumberSubmit(): void {\n const { gotoRow: rowNumber } = this.state;\n this.focusRowInGrid(rowNumber);\n }\n\n focusRowInGrid(rowNumber: string): void {\n const { model } = this.props;\n const { rowCount } = model;\n this.setState({ gotoRow: rowNumber });\n if (rowNumber === '') {\n this.setState({ gotoRowError: '', gotoValueError: '' });\n return;\n }\n const rowInt = parseInt(rowNumber, 10);\n if (rowInt > rowCount || rowInt < -rowCount) {\n this.setState({ gotoRowError: 'Invalid row index' });\n } else if (rowInt === 0) {\n this.setState({ gotoRowError: '', gotoValueError: '' });\n this.grid?.setFocusRow(0);\n } else if (rowInt < 0) {\n this.setState({ gotoRowError: '', gotoValueError: '' });\n this.grid?.setFocusRow(rowInt + rowCount);\n } else {\n this.grid?.setFocusRow(rowInt - 1);\n this.setState({ gotoRowError: '', gotoValueError: '' });\n }\n }\n\n handleGotoRowSelectedRowNumberChanged(\n event: ChangeEvent<HTMLInputElement>\n ): void {\n const rowNumber = event.target.value;\n this.focusRowInGrid(rowNumber);\n }\n\n getColumnTooltip(\n visibleIndex: VisibleIndex,\n metrics: GridMetrics,\n model: IrisGridModel\n ): ReactNode {\n const {\n columnHeaderHeight,\n columnHeaderMaxDepth,\n allColumnXs,\n allColumnWidths,\n width,\n } = metrics;\n const columnX = allColumnXs.get(visibleIndex);\n const columnWidth = allColumnWidths.get(visibleIndex);\n\n if (columnX == null || columnWidth == null) {\n return null;\n }\n\n /**\n * Create a wrapper dom element, the size of the column header.\n * The wrapper acts as tooltip parent, the tooltip component\n * will trigger hide on mouseleave of wrapper or tooltip.\n * The wrapper should be bound to within the grid dimensions,\n * so popper only remains triggered while mouse is inside the panel.\n */\n const boundedLeft = Math.max(0, columnX);\n let boundedWidth = columnWidth;\n if (columnX + columnWidth > width) {\n // column is extending past right edge\n boundedWidth = width - columnX;\n } else if (columnX < 0) {\n // column is extending past left edge\n boundedWidth = columnWidth - Math.abs(columnX);\n }\n\n const wrapperStyle: CSSProperties = {\n position: 'absolute',\n top: (columnHeaderMaxDepth - 1) * columnHeaderHeight,\n left: boundedLeft,\n width: boundedWidth,\n height: columnHeaderHeight,\n pointerEvents: 'none',\n };\n\n /**\n * Because the popper parent wrapper center is no longer the same as\n * the column label center, we create a popper virtual ref, to handle\n * positioning and keep the popper centered on the label. Creates a\n * 1px x headerHeight virtual object, placed centered on the column\n * label, clamped to 0 + margin to width - margin. We add a margin,\n * otherwise the arrow wants to escape the boundary.\n */\n const virtualReference: ReferenceObject = {\n clientWidth: 1,\n clientHeight: columnHeaderHeight,\n getBoundingClientRect: this.getColumnBoundingRect,\n };\n\n const popperOptions: PopperOptions = {\n placement: 'bottom',\n modifiers: {\n flip: {\n behavior: ['bottom', 'top'],\n },\n },\n };\n\n const modelColumn = this.getModelColumn(visibleIndex);\n if (modelColumn == null) return null;\n\n const column = model.columns[modelColumn];\n if (column == null) return null;\n\n return (\n <div style={wrapperStyle}>\n <Tooltip\n key={column.name}\n timeout={400}\n interactive\n options={popperOptions}\n ref={this.handleTooltipRef}\n referenceObject={virtualReference}\n onExited={() => {\n this.setState({ shownColumnTooltip: null });\n }}\n >\n <ColumnStatistics\n model={model}\n column={column}\n onStatistics={() => {\n this.tooltip?.update();\n }}\n />\n </Tooltip>\n </div>\n );\n }\n\n handleGotoValueSelectedColumnNameChanged(columnName: ColumnName): void {\n const { model } = this.props;\n const cursorRow = this.grid?.state.cursorRow;\n const {\n gotoValueSelectedColumnName: prevColumnName,\n gotoValueManuallyChanged,\n } = this.state;\n\n if (cursorRow != null) {\n const index = model.getColumnIndexByName(columnName);\n const column = IrisGridUtils.getColumnByName(model.columns, columnName);\n const prevColumn = IrisGridUtils.getColumnByName(\n model.columns,\n prevColumnName\n );\n if (index == null || column == null) {\n return;\n }\n const value = model.valueForCell(index, cursorRow);\n const text = IrisGridUtils.convertValueToText(value, column.type);\n\n // do NOT update value if user manually changed value AND column type remains the same\n if (gotoValueManuallyChanged && column.type === prevColumn?.type) {\n this.setState({\n gotoValueSelectedColumnName: columnName,\n gotoValueError: '',\n });\n } else {\n // do update, and set goToValueManuallyChanged to false because value was automatically changed\n this.setState({\n gotoValueSelectedColumnName: columnName,\n gotoValue: text,\n gotoValueError: '',\n gotoValueManuallyChanged: false,\n });\n }\n }\n this.setState({\n gotoValueSelectedColumnName: columnName,\n gotoValueError: '',\n });\n }\n\n handleGotoValueSelectedFilterChanged(value: FilterTypeValue): void {\n this.setState({ gotoValueSelectedFilter: value, gotoValueError: '' });\n }\n\n handleGotoValueChanged = (input: string): void => {\n this.setState({ gotoValue: input, gotoValueManuallyChanged: true });\n this.debouncedSeekRow(input);\n };\n\n debouncedSeekRow = debounce((input: string): void => {\n this.seekRow(input);\n }, SEEK_ROW_DEBOUNCE);\n\n handleGotoValueSubmitted(isBackwards?: boolean): void {\n const { gotoValue } = this.state;\n this.seekRow(gotoValue, isBackwards);\n }\n\n render(): ReactElement | null {\n const {\n children,\n customFilters,\n getDownloadWorker,\n isSelectingColumn,\n isStuckToBottom,\n isStuckToRight,\n model,\n name,\n onlyFetchVisibleColumns,\n alwaysFetchColumns,\n advancedSettings,\n onAdvancedSettingsChange,\n canDownloadCsv,\n onCreateChart,\n } = this.props;\n const {\n metricCalculator,\n metrics,\n isFilterBarShown,\n isSelectingPartition,\n isMenuShown,\n isReady,\n copyOperation,\n focusedFilterBarColumn,\n loadingText,\n loadingScrimProgress,\n loadingSpinnerShown,\n loadingCancelShown,\n loadingBlocksGrid,\n shownColumnTooltip,\n hoverAdvancedFilter,\n shownAdvancedFilter,\n hoverSelectColumn,\n quickFilters,\n advancedFilters,\n searchFilter,\n selectDistinctColumns,\n\n movedColumns,\n movedRows,\n\n formatter,\n conditionalFormats,\n conditionalFormatPreview,\n conditionalFormatEditIndex,\n\n sorts,\n reverse,\n customColumns,\n\n selectedRanges,\n isTableDownloading,\n tableDownloadStatus,\n tableDownloadProgress,\n tableDownloadEstimatedTime,\n\n showSearchBar,\n searchValue,\n selectedSearchColumns,\n invertSearchColumns,\n\n aggregationSettings,\n selectedAggregation,\n rollupConfig,\n openOptions,\n pendingSavePromise,\n pendingSaveError,\n pendingRowCount,\n pendingDataErrors,\n pendingDataMap,\n toastMessage,\n frozenColumns,\n columnHeaderGroups,\n showOverflowModal,\n showNoPastePermissionModal,\n noPastePermissionError,\n overflowText,\n overflowButtonTooltipProps,\n expandCellTooltipProps,\n hoverTooltipProps,\n isGotoShown,\n gotoRow,\n gotoRowError,\n gotoValueError,\n gotoValueSelectedColumnName,\n gotoValue,\n gotoValueSelectedFilter,\n partitionConfig,\n } = this.state;\n if (!isReady) {\n return null;\n }\n\n const theme = this.getTheme();\n const { columnHeaderHeight: singleColumnHeaderHeight } = theme;\n\n const filter = this.getCachedFilter(\n customFilters,\n quickFilters,\n advancedFilters,\n searchFilter\n );\n\n const userColumnWidths = metricCalculator.getUserColumnWidths();\n const stateOverride = this.getCachedStateOverride(\n hoverSelectColumn,\n isFilterBarShown,\n isSelectingColumn,\n loadingScrimProgress,\n quickFilters,\n advancedFilters,\n sorts,\n reverse,\n rollupConfig,\n isMenuShown\n );\n const top = metrics ? metrics.top : 0;\n const bottom = metrics ? metrics.bottomViewport : 0;\n let left = null;\n let right = null;\n if (onlyFetchVisibleColumns) {\n left = metrics ? metrics.left : 0;\n right = metrics ? metrics.right : 0;\n }\n const isVisible =\n metrics != null && metrics.width > 0 && metrics.height > 0;\n const isRollup = (rollupConfig?.columns?.length ?? 0) > 0;\n\n let focusField = null;\n\n const debounceMs = metrics\n ? Math.min(\n Math.max(IrisGrid.minDebounce, Math.round(metrics.rowCount / 200)),\n IrisGrid.maxDebounce\n )\n : IrisGrid.maxDebounce;\n\n if (isFilterBarShown && focusedFilterBarColumn != null && metrics != null) {\n const { gridX, gridY, allColumnXs, allColumnWidths, width } = metrics;\n const columnX = allColumnXs.get(focusedFilterBarColumn);\n const columnWidth = allColumnWidths.get(focusedFilterBarColumn);\n if (columnX != null && columnWidth != null) {\n const x = gridX + columnX;\n const y = gridY - (theme.filterBarHeight ?? 0);\n const fieldWidth = columnWidth + 1; // cover right border\n const fieldHeight = (theme.filterBarHeight ?? 0) - 1; // remove bottom border\n const style = {\n top: y,\n left: x,\n minWidth: Math.min(fieldWidth, width - x), // Don't cause overflow\n height: fieldHeight,\n };\n let value = '';\n let isValid = true;\n const modelColumn = this.getModelColumn(focusedFilterBarColumn);\n assertNotNull(modelColumn);\n const quickFilter = quickFilters.get(modelColumn);\n const advancedFilter = advancedFilters.get(modelColumn);\n if (quickFilter != null) {\n value = quickFilter.text;\n isValid = quickFilter.filter != null;\n }\n const isBarFiltered =\n quickFilters.size !== 0 || advancedFilters.size !== 0;\n focusField = (\n <FilterInputField\n ref={this.filterInputRef}\n style={style}\n className={classNames({\n error: !isValid,\n active: value !== '' || advancedFilter != null,\n 'iris-grid-has-filter': isBarFiltered,\n })}\n isAdvancedFilterSet={advancedFilter != null}\n onAdvancedFiltersTriggered={() => {\n this.setState({ shownAdvancedFilter: focusedFilterBarColumn });\n }}\n key={focusedFilterBarColumn}\n onChange={this.handleFilterBarChange}\n onDone={this.handleFilterBarDone}\n onTab={this.handleFilterBarTab}\n onContextMenu={this.grid?.handleContextMenu}\n debounceMs={debounceMs}\n value={value}\n />\n );\n }\n }\n\n let loadingElement = null;\n if (loadingText != null) {\n const loadingStatus = (\n <div className=\"iris-grid-loading-status\">\n <div\n className={classNames('iris-grid-loading-status-bar', {\n show: loadingSpinnerShown,\n })}\n >\n {loadingText}\n </div>\n <button\n type=\"button\"\n onClick={this.handleCancel}\n className={classNames('iris-grid-btn-cancel', {\n show: loadingCancelShown,\n })}\n >\n <FontAwesomeIcon icon={vsClose} transform=\"down-1\" />\n Cancel\n </button>\n </div>\n );\n const gridY = metrics ? metrics.gridY : 0;\n loadingElement = (\n <div\n className=\"iris-grid-loading\"\n style={loadingBlocksGrid ? { top: gridY } : {}}\n >\n {loadingStatus}\n </div>\n );\n }\n\n let columnTooltip: React.ReactNode = null;\n if (shownColumnTooltip != null && metrics) {\n columnTooltip = this.getColumnTooltip(shownColumnTooltip, metrics, model);\n // #510 We may need to update the position of the tooltip if it's already opened and columns are resized\n this.tooltip?.update();\n }\n\n const filterBar = [];\n if (metrics && isFilterBarShown) {\n const { gridX, gridY, visibleColumns, allColumnXs, allColumnWidths } =\n metrics;\n const { filterBarHeight } = theme;\n\n for (let i = 0; i < visibleColumns.length; i += 1) {\n const columnIndex = visibleColumns[i];\n\n const columnX = allColumnXs.get(columnIndex);\n const columnWidth = allColumnWidths.get(columnIndex);\n const modelColumn = this.getModelColumn(columnIndex);\n if (modelColumn != null) {\n const isFilterable = model.isFilterable(modelColumn);\n if (\n isFilterable &&\n columnX != null &&\n columnWidth != null &&\n columnWidth > 0\n ) {\n const x = gridX + columnX + columnWidth - 24;\n const y = gridY - (filterBarHeight ?? 0) + 2; // 2 acts as top margin for the button\n const style: CSSProperties = {\n position: 'absolute',\n top: y,\n left: x,\n };\n const advancedFilter = advancedFilters.get(modelColumn);\n const isFilterSet = advancedFilter != null;\n const isFilterVisible =\n columnIndex === hoverAdvancedFilter ||\n columnIndex === focusedFilterBarColumn ||\n isFilterSet;\n const element = (\n <div\n className={classNames('advanced-filter-button-container', {\n hidden: !isFilterVisible,\n })}\n key={columnIndex}\n style={style}\n >\n {isFilterVisible && (\n <Button\n kind=\"ghost\"\n className={classNames(\n 'btn-link-icon advanced-filter-button',\n {\n 'filter-set': isFilterSet,\n }\n )}\n onClick={() => {\n this.setState({ shownAdvancedFilter: columnIndex });\n }}\n onContextMenu={event => {\n this.grid?.handleContextMenu(event);\n }}\n onMouseEnter={() => {\n this.setState({ hoverAdvancedFilter: columnIndex });\n }}\n onMouseLeave={() => {\n this.setState({ hoverAdvancedFilter: null });\n }}\n >\n <div className=\"fa-layers\">\n <FontAwesomeIcon\n icon={dhFilterFilled}\n className=\"filter-solid\"\n />\n <FontAwesomeIcon\n icon={vsFilter}\n className=\"filter-light\"\n />\n </div>\n </Button>\n )}\n </div>\n );\n filterBar.push(element);\n }\n }\n }\n }\n const advancedFilterMenus = [];\n if (metrics) {\n const {\n gridX,\n visibleColumns,\n allColumnXs,\n allColumnWidths,\n columnHeaderHeight,\n } = metrics;\n for (let i = 0; i < visibleColumns.length; i += 1) {\n const columnIndex = visibleColumns[i];\n const columnX = allColumnXs.get(columnIndex);\n const columnWidth = allColumnWidths.get(columnIndex);\n if (columnX != null && columnWidth != null && columnWidth > 0) {\n const xColumnHeader = gridX + columnX;\n const xFilterBar = gridX + columnX + columnWidth - 20;\n const style: CSSProperties = isFilterBarShown\n ? {\n position: 'absolute',\n top: columnHeaderHeight,\n left: xFilterBar,\n width: 20,\n height: theme.filterBarHeight,\n }\n : {\n position: 'absolute',\n top: 0,\n left: xColumnHeader,\n width: columnWidth,\n height: columnHeaderHeight,\n };\n const modelColumn = this.getModelColumn(columnIndex);\n if (modelColumn != null) {\n const column = model.columns[modelColumn];\n if (column == null) {\n // Grid metrics is likely out of sync with model\n log.warn(\n `Column does not exist at index ${modelColumn} for column array of length ${model.columns.length}`\n );\n // eslint-disable-next-line no-continue\n continue;\n }\n const advancedFilter = advancedFilters.get(modelColumn);\n const { options: advancedFilterOptions } = advancedFilter || {};\n const sort = TableUtils.getSortForColumn(model.sort, column.name);\n\n const sortDirection = sort ? sort.direction : null;\n if (!isSortDirection(sortDirection)) {\n throw new Error(`Invalid sort direction: ${sortDirection}`);\n }\n\n const element = (\n <div\n key={columnIndex}\n className=\"advanced-filter-menu-container\"\n style={style}\n >\n <Popper\n className=\"advanced-filter-menu-popper\"\n onEntered={this.getAdvancedMenuOpenedHandler(columnIndex)}\n onExited={() => {\n this.handleAdvancedMenuClosed(columnIndex);\n }}\n isShown={shownAdvancedFilter === columnIndex}\n interactive\n closeOnBlur\n options={{\n positionFixed: true,\n }}\n >\n {this.getCachedAdvancedFilterMenuActions(\n model,\n column,\n advancedFilterOptions,\n sortDirection,\n formatter\n )}\n </Popper>\n </div>\n );\n advancedFilterMenus.push(element);\n }\n }\n }\n }\n\n const optionItems = this.getCachedOptionItems(\n onCreateChart !== undefined && model.isChartBuilderAvailable,\n model.isCustomColumnsAvailable,\n model.isFormatColumnsAvailable,\n model.isOrganizeColumnsAvailable,\n model.isRollupAvailable,\n model.isTotalsAvailable || isRollup,\n model.isSelectDistinctAvailable,\n model.isExportAvailable,\n this.toggleFilterBarAction,\n this.toggleSearchBarAction,\n this.toggleGotoRowAction,\n isFilterBarShown,\n showSearchBar,\n canDownloadCsv,\n this.isTableSearchAvailable(),\n isGotoShown,\n advancedSettings.size > 0\n );\n\n const hiddenColumns = this.getCachedHiddenColumns(\n metricCalculator,\n userColumnWidths\n );\n\n const openOptionsStack = openOptions.map(option => {\n switch (option.type) {\n case OptionType.CHART_BUILDER:\n return (\n <ChartBuilder\n model={model}\n onChange={this.handleChartChange}\n onSubmit={this.handleChartCreate}\n key={OptionType.CHART_BUILDER}\n />\n );\n case OptionType.VISIBILITY_ORDERING_BUILDER:\n return (\n <VisibilityOrderingBuilder\n model={model}\n movedColumns={movedColumns}\n hiddenColumns={hiddenColumns}\n columnHeaderGroups={columnHeaderGroups}\n onColumnVisibilityChanged={this.handleColumnVisibilityChanged}\n onReset={this.handleColumnVisibilityReset}\n onMovedColumnsChanged={this.handleMovedColumnsChanged}\n onColumnHeaderGroupChanged={this.handleHeaderGroupsChanged}\n key={OptionType.VISIBILITY_ORDERING_BUILDER}\n />\n );\n case OptionType.CONDITIONAL_FORMATTING:\n return (\n <ConditionalFormattingMenu\n rules={conditionalFormats}\n onChange={this.handleConditionalFormatsChange}\n onCreate={this.handleConditionalFormatCreate}\n onSelect={this.handleConditionalFormatEdit}\n />\n );\n case OptionType.CONDITIONAL_FORMATTING_EDIT:\n assertNotNull(model.columns);\n assertNotNull(this.handleConditionalFormatEditorUpdate);\n return (\n <ConditionalFormatEditor\n dh={model.dh}\n columns={model.columns}\n rule={conditionalFormatPreview}\n onUpdate={this.handleConditionalFormatEditorUpdate}\n onSave={this.handleConditionalFormatEditorSave}\n onCancel={this.handleConditionalFormatEditorCancel}\n />\n );\n case OptionType.CUSTOM_COLUMN_BUILDER:\n return (\n <CustomColumnBuilder\n model={model}\n customColumns={customColumns}\n onSave={this.handleUpdateCustomColumns}\n onCancel={this.handleMenuBack}\n key={OptionType.CUSTOM_COLUMN_BUILDER}\n />\n );\n case OptionType.ROLLUP_ROWS:\n return (\n <RollupRows\n model={model}\n onChange={this.handleRollupChange}\n config={rollupConfig}\n key={OptionType.ROLLUP_ROWS}\n />\n );\n case OptionType.AGGREGATIONS:\n return (\n <Aggregations\n settings={aggregationSettings}\n isRollup={isRollup}\n availablePlacements={\n isEditableGridModel(model) && model.isEditable\n ? ['top']\n : ['top', 'bottom']\n }\n onChange={this.handleAggregationsChange}\n onEdit={this.handleAggregationEdit}\n dh={model.dh}\n />\n );\n case OptionType.AGGREGATION_EDIT:\n return (\n selectedAggregation && (\n <AggregationEdit\n aggregation={selectedAggregation}\n columns={model.originalColumns}\n onChange={this.handleAggregationChange}\n />\n )\n );\n case OptionType.TABLE_EXPORTER:\n return (\n <TableCsvExporter\n model={model}\n name={name}\n userColumnWidths={userColumnWidths}\n movedColumns={movedColumns}\n isDownloading={isTableDownloading}\n tableDownloadStatus={tableDownloadStatus}\n tableDownloadProgress={tableDownloadProgress}\n tableDownloadEstimatedTime={\n tableDownloadEstimatedTime ?? undefined\n }\n onDownload={this.handleDownloadTable}\n onDownloadStart={this.handleDownloadTableStart}\n onCancel={this.handleCancelDownloadTable}\n selectedRanges={selectedRanges}\n key={OptionType.TABLE_EXPORTER}\n />\n );\n case OptionType.SELECT_DISTINCT:\n return (\n <SelectDistinctBuilder\n model={model}\n selectDistinctColumns={selectDistinctColumns}\n onChange={this.handleSelectDistinctChanged}\n />\n );\n case OptionType.ADVANCED_SETTINGS:\n return (\n <AdvancedSettingsMenu\n items={advancedSettings}\n onChange={onAdvancedSettingsChange}\n />\n );\n\n default:\n throw Error(`Unexpected option type ${option.type}`);\n }\n });\n\n return (\n <div className=\"iris-grid\" role=\"presentation\">\n <div className=\"iris-grid-column\">\n {children != null && <div className=\"iris-grid-bar\">{children}</div>}\n <CSSTransition\n in={isSelectingPartition}\n timeout={ThemeExport.transitionSlowMs}\n classNames=\"iris-grid-bar-horizontal\"\n onEnter={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExit={this.handleAnimationStart}\n onExited={this.handleAnimationEnd}\n mountOnEnter\n unmountOnExit\n >\n <div className=\"iris-grid-partition-selector-wrapper iris-grid-bar iris-grid-bar-primary\">\n {isPartitionedGridModel(model) && model.isPartitionRequired && (\n <IrisGridPartitionSelector\n model={model}\n partitionConfig={partitionConfig}\n onChange={this.handlePartitionChange}\n />\n )}\n </div>\n </CSSTransition>\n <CSSTransition\n in={showSearchBar}\n timeout={ThemeExport.transitionSlowMs}\n classNames=\"iris-grid-bar-horizontal\"\n onEnter={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExit={this.handleAnimationStart}\n onExited={this.handleAnimationEnd}\n mountOnEnter\n unmountOnExit\n >\n <div className=\"iris-grid-bar\">\n <CrossColumnSearch\n value={searchValue}\n selectedColumns={selectedSearchColumns}\n invertSelection={invertSearchColumns}\n onChange={this.handleCrossColumnSearch}\n columns={model.columns}\n ref={this.crossColumnRef}\n />\n </div>\n </CSSTransition>\n <Grid\n ref={grid => {\n this.grid = grid;\n }}\n isStickyBottom={!isEditableGridModel(model) || !model.isEditable}\n isStuckToBottom={isStuckToBottom}\n isStuckToRight={isStuckToRight}\n metricCalculator={metricCalculator}\n model={model}\n keyHandlers={this.getKeyHandlers()}\n mouseHandlers={this.getMouseHandlers()}\n movedColumns={movedColumns}\n movedRows={movedRows}\n onError={this.handleGridError}\n onViewChanged={this.handleViewChanged}\n onSelectionChanged={this.handleSelectionChanged}\n onMovedColumnsChanged={this.handleMovedColumnsChanged}\n renderer={this.renderer}\n stateOverride={stateOverride}\n theme={theme}\n >\n <IrisGridCellOverflowModal\n isOpen={showOverflowModal}\n text={overflowText}\n onClose={this.handleOverflowClose}\n />\n {isVisible && (\n <IrisGridModelUpdater\n model={model}\n top={top}\n bottom={bottom}\n left={left}\n right={right}\n filter={filter}\n formatter={formatter}\n sorts={sorts}\n reverse={reverse}\n movedColumns={movedColumns}\n customColumns={customColumns}\n hiddenColumns={hiddenColumns}\n alwaysFetchColumns={this.getAlwaysFetchColumns(\n alwaysFetchColumns,\n model.columns,\n movedColumns,\n model.floatingLeftColumnCount,\n model.floatingRightColumnCount,\n this.grid?.state.draggingColumn?.range\n )}\n formatColumns={this.getCachedPreviewFormatColumns(\n model.dh,\n model.columns,\n conditionalFormats,\n conditionalFormatPreview,\n // Disable the preview format when we press Back on the format edit page\n openOptions[openOptions.length - 1]?.type ===\n OptionType.CONDITIONAL_FORMATTING_EDIT\n ? conditionalFormatEditIndex ?? undefined\n : undefined\n )}\n rollupConfig={this.getModelRollupConfig(\n model.originalColumns,\n rollupConfig,\n aggregationSettings\n )}\n totalsConfig={this.getModelTotalsConfig(\n model.columns,\n rollupConfig,\n aggregationSettings\n )}\n selectDistinctColumns={selectDistinctColumns}\n pendingRowCount={pendingRowCount}\n pendingDataMap={pendingDataMap}\n frozenColumns={frozenColumns}\n columnHeaderGroups={columnHeaderGroups}\n partitionConfig={partitionConfig}\n showExtraGroupColumn={this.showExtraGroupColumn}\n />\n )}\n {!isMenuShown && (\n <div\n className=\"grid-settings-button\"\n style={{\n height: `${singleColumnHeaderHeight}px`,\n width: `${singleColumnHeaderHeight}px`,\n }}\n >\n <Button\n kind=\"ghost\"\n data-testid={`btn-iris-grid-settings-button-${name}`}\n onClick={this.handleMenu}\n icon={<FontAwesomeIcon icon={vsMenu} transform=\"up-1\" />}\n tooltip=\"Table Options\"\n />\n </div>\n )}\n {focusField}\n {loadingElement}\n {filterBar}\n {columnTooltip}\n {advancedFilterMenus}\n {overflowButtonTooltipProps &&\n this.getOverflowButtonTooltip(overflowButtonTooltipProps)}\n {expandCellTooltipProps &&\n this.getExpandCellTooltip(expandCellTooltipProps)}\n {hoverTooltipProps && this.getHoverTooltip(hoverTooltipProps)}\n </Grid>\n <GotoRow\n ref={this.gotoRowRef}\n model={model}\n isShown={isGotoShown}\n gotoRow={gotoRow}\n gotoRowError={gotoRowError}\n gotoValueError={gotoValueError}\n onGotoRowSubmit={this.handleGotoRowSelectedRowNumberSubmit}\n onGotoRowNumberChanged={this.handleGotoRowSelectedRowNumberChanged}\n onClose={this.handleGotoRowClosed}\n onEntering={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExiting={() => {\n this.handleAnimationStart();\n this.focus();\n }}\n onExited={this.handleAnimationEnd}\n gotoValueSelectedColumnName={gotoValueSelectedColumnName}\n gotoValue={gotoValue}\n gotoValueFilter={gotoValueSelectedFilter}\n onGotoValueSelectedColumnNameChanged={\n this.handleGotoValueSelectedColumnNameChanged\n }\n onGotoValueSelectedFilterChanged={\n this.handleGotoValueSelectedFilterChanged\n }\n onGotoValueChanged={this.handleGotoValueChanged}\n onGotoValueSubmit={this.handleGotoValueSubmitted}\n />\n\n <PendingDataBottomBar\n error={pendingSaveError}\n isSaving={pendingSavePromise != null}\n saveTooltip={`Commit (${this.commitAction.shortcut.getDisplayText()})`}\n discardTooltip={`Discard (${this.discardAction.shortcut.getDisplayText()})`}\n pendingDataErrors={pendingDataErrors}\n pendingDataMap={pendingDataMap}\n onEntering={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExiting={this.handleAnimationStart}\n onExited={this.handleAnimationEnd}\n onSave={this.handlePendingCommitClicked}\n onDiscard={this.handlePendingDiscardClicked}\n />\n <ToastBottomBar>{toastMessage}</ToastBottomBar>\n <IrisGridCopyHandler\n model={model}\n copyOperation={copyOperation ?? undefined}\n onEntering={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExiting={this.handleAnimationStart}\n onExited={this.handleAnimationEnd}\n />\n <TableSaver\n dh={model.dh}\n ref={tableSaver => {\n this.tableSaver = tableSaver;\n }}\n getDownloadWorker={getDownloadWorker}\n onDownloadCompleted={this.handleDownloadCompleted}\n onDownloadCanceled={this.handleDownloadCanceled}\n onDownloadProgressUpdate={this.handleDownloadProgressUpdate}\n isDownloading={\n tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING\n }\n formatter={formatter}\n />\n </div>\n <SlideTransition\n in={isMenuShown}\n onEntering={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExiting={this.handleAnimationStart}\n onExited={this.handleAnimationEnd}\n mountOnEnter\n unmountOnExit\n >\n <div className=\"table-sidebar\">\n <Stack>\n <Page title=\"Table Options\" onClose={this.handleMenuClose}>\n <Menu\n onSelect={i => this.handleMenuSelect(optionItems[i])}\n items={optionItems}\n />\n </Page>\n {openOptionsStack.map((option, i) => (\n <Page\n title={openOptions[i].title}\n onBack={this.handleMenuBack}\n onClose={this.handleMenuClose}\n key={openOptions[i].type}\n >\n {option}\n </Page>\n ))}\n </Stack>\n </div>\n </SlideTransition>\n <ContextActions actions={this.contextActions} />\n <NoPastePermissionModal\n isOpen={showNoPastePermissionModal}\n onClose={this.handleCloseNoPastePermissionModal}\n errorMessage={noPastePermissionError}\n />\n </div>\n );\n }\n}\n\nexport default IrisGrid;\n"],"mappings":"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"}
1
+ {"version":3,"file":"IrisGrid.js","names":["React","Component","memoize","classNames","CSSTransition","deepEqual","Log","FontAwesomeIcon","ContextActions","Stack","Menu","Page","Popper","ThemeExport","Tooltip","Button","ContextActionUtils","SlideTransition","Grid","GridRange","GridUtils","isEditableGridModel","isExpandableGridModel","isDeletableGridModel","dhEye","dhFilterFilled","dhGraphLineUp","dhTriangleDownSquare","vsClose","vsCloudDownload","vsEdit","vsFilter","vsMenu","vsReply","vsRuby","vsSearch","vsSplitHorizontal","vsSymbolOperator","vsTools","DateUtils","Formatter","FormatterUtils","TableUtils","isSortDirection","assertNotNull","copyToClipboard","EMPTY_ARRAY","EMPTY_MAP","Pending","PromiseUtils","ValidationError","getOrThrow","Type","FilterType","throttle","debounce","clamp","getFormatColumns","PendingDataBottomBar","IrisGridCopyHandler","FilterInputField","CopyCellKeyHandler","ClearFilterKeyHandler","CopyKeyHandler","ReverseKeyHandler","IrisGridCellOverflowMouseHandler","IrisGridColumnSelectMouseHandler","IrisGridColumnTooltipMouseHandler","IrisGridContextMenuHandler","IrisGridCopyCellMouseHandler","IrisGridDataSelectMouseHandler","IrisGridPartitionedTableMouseHandler","IrisGridFilterMouseHandler","IrisGridRowTreeMouseHandler","IrisGridSortMouseHandler","IrisGridTokenMouseHandler","PendingMouseHandler","ToastBottomBar","IrisGridMetricCalculator","IrisGridModelUpdater","IrisGridRenderer","createDefaultIrisGridTheme","ColumnStatistics","AdvancedFilterCreator","Aggregations","AggregationEdit","AggregationUtils","ChartBuilder","CustomColumnBuilder","OptionType","RollupRows","TableCsvExporter","TableSaver","VisibilityOrderingBuilder","DownloadServiceWorkerUtils","IrisGridUtils","CrossColumnSearch","IrisGridModel","isPartitionedGridModel","IrisGridPartitionSelector","SelectDistinctBuilder","AdvancedSettingsType","AdvancedSettingsMenu","SHORTCUTS","ConditionalFormattingMenu","ConditionalFormatEditor","IrisGridCellOverflowModal","GotoRow","AggregationOperation","IrisGridThemeContext","isMissingPartitionError","NoPastePermissionModal","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","log","module","VIEWPORT_LOADING_DELAY","UPDATE_DOWNLOAD_THROTTLE","SET_FILTER_DEBOUNCE","SEEK_ROW_DEBOUNCE","SET_CONDITIONAL_FORMAT_DEBOUNCE","DEFAULT_AGGREGATION_SETTINGS","Object","freeze","aggregations","showOnTop","UNFORMATTED_DATE_PATTERN","isEmptyConfig","_ref","advancedFilters","aggregationSettings","customColumns","quickFilters","reverse","rollupConfig","searchFilter","selectDistinctColumns","sorts","size","length","IrisGrid","constructor","props","_model$layoutHints","_model$columns$0$name","_model$columns$","_defineProperty","createRef","column","handleAdvancedMenuOpened","bind","max","model","advancedFilterOptions","sortDirection","formatter","onFilterChange","handleAdvancedFilterChange","onSortChange","handleAdvancedFilterSortChange","onDone","handleAdvancedFilterDone","options","tableUtils","isChartBuilderAvailable","isCustomColumnsAvailable","isFormatColumnsAvailable","isOrganizeColumnsAvailable","isRollupAvailable","isTotalsAvailable","isSelectDistinctAvailable","isExportAvailable","toggleFilterBarAction","toggleSearchBarAction","toggleGotoRowAction","isFilterBarShown","showSearchBar","canDownloadCsv","canToggleSearch","showGotoRow","hasAdvancedSettings","optionItems","push","type","CHART_BUILDER","title","icon","VISIBILITY_ORDERING_BUILDER","CONDITIONAL_FORMATTING","CUSTOM_COLUMN_BUILDER","ROLLUP_ROWS","AGGREGATIONS","SELECT_DISTINCT","TABLE_EXPORTER","ADVANCED_SETTINGS","QUICK_FILTERS","subtitle","shortcut","getDisplayText","isOn","onChange","action","SEARCH_BAR","GOTO","metricCalculator","userColumnWidths","getHiddenColumns","Map","initialColumnWidths","columns","aggregationMap","forEach","_ref2","operation","selected","invert","getOperationColumnNames","operationMap","filter","a","isRollupOperation","_ref3","name","_operationMap$name","newOperations","map","o","dh","rules","rulesParam","preview","editIndex","debug","undefined","getCachedFormatColumns","originalColumns","config","getModelRollupConfig","_config$columns$lengt","_config$columns","agg","getOperationMap","operationOrder","getOperationOrder","defaultOperation","SKIP","hoverSelectColumn","isSelectingColumn","loadingScrimProgress","isMenuShown","customFilters","getFiltersFromFilterMap","contextTheme","theme","isEditable","floatingRowCount","density","_theme$rowFooterWidth","baseTheme","rowFooterWidth","state","resetCalculatedColumnWidths","resetCalculatedRowHeights","densityTheme","compact","spacious","_objectSpread","autoSelectRow","keyHandlers","sort","b","order","mouseHandlers","rendererProp","alwaysFetchColumns","movedColumns","floatingLeftColumnCount","floatingRightColumnCount","draggingRange","floatingColumns","i","getModelIndex","columnSet","Set","searchValue","selectedSearchColumns","invertSearchColumns","createSearchFilter","setState","loadingSpinnerShown","isViewportPending","startLoading","loadingCancelShown","loadingBlocksGrid","leading","trailing","conditionalFormatPreview","tableDownloadProgress","tableDownloadEstimatedTime","tableDownloadStatus","DOWNLOAD_STATUS","DOWNLOADING","overflowButtonTooltipProps","wrapperStyle","position","pointerEvents","popperOptions","placement","modifiers","flip","behavior","style","children","ref","handleTooltipRef","Date","now","expandCellTooltipProps","expandTooltipDisplayValue","isExpandAllAvailable","textAlign","isMacPlatform","hoverTooltipProps","hoverDisplayValue","className","input","gotoValue","gotoValueManuallyChanged","debouncedSeekRow","seekRow","handleGotoRowOpened","handleGotoRowClosed","handleAdvancedMenuClosed","handleAggregationChange","handleAggregationsChange","handleAggregationEdit","handleAnimationLoop","handleAnimationStart","handleAnimationEnd","handleChartChange","handleChartCreate","handleGridError","handleFilterBarChange","handleFilterBarDone","handleFilterBarTab","handleCancel","handleMenu","handleMenuClose","handleMenuSelect","handleMenuBack","handleRequestFailed","handleSelectionChanged","handleMovedColumnsChanged","handleHeaderGroupsChanged","handleUpdate","handleTableChanged","handleViewChanged","handleFormatSelection","handleColumnAlignmentChange","handleConditionalFormatCreate","handleConditionalFormatEdit","handleConditionalFormatsChange","handleConditionalFormatEditorSave","handleConditionalFormatEditorCancel","handleUpdateCustomColumns","handleCustomColumnsChanged","handleSelectDistinctChanged","handlePendingDataUpdated","handleViewportUpdated","handlePendingCommitClicked","handlePendingDiscardClicked","handleGotoRowSelectedRowNumberSubmit","focusRowInGrid","handleDownloadTable","handleDownloadTableStart","handleCancelDownloadTable","handleDownloadCanceled","handleDownloadCompleted","handlePartitionChange","handleColumnVisibilityChanged","handleColumnVisibilityReset","handleCrossColumnSearch","handleRollupChange","handleOverflowClose","handleCloseNoPastePermissionModal","getColumnBoundingRect","handleGotoRowSelectedRowNumberChanged","handleGotoValueSelectedColumnNameChanged","handleGotoValueSelectedFilterChanged","handleGotoValueChanged","handleGotoValueSubmitted","makeQuickFilter","setFilterMap","grid","lastLoadedConfig","pending","globalColumnFormats","decimalFormatOptions","integerFormatOptions","truncateNumbersWithPound","showEmptyStrings","showNullStrings","showExtraGroupColumn","tableSaver","crossColumnRef","isAnimating","filterInputRef","gotoRowRef","isCopying","toggleFilterBar","TABLE","TOGGLE_QUICK_FILTER","toggleSearchBar","TOGGLE_SEARCH","toggleGotoRow","GOTO_ROW","discardAction","pendingDataMap","discardPending","catch","error","INPUT_TABLE","DISCARD","commitAction","pendingDataErrors","commitPending","COMMIT","contextActions","conditionalFormats","customColumnFormatMap","columnAlignmentMap","isSelectingPartition","partitions","partitionConfig","movedColumnsProp","movedRows","movedRowsProp","userRowHeights","canCopy","frozenColumns","columnHeaderGroups","initialMovedColumns","initialMovedRows","layoutHints","hiddenColumns","getColumnIndexByName","searchColumns","focusedFilterBarColumn","metrics","mode","shownAdvancedFilter","hoverAdvancedFilter","selectedRanges","copyOperation","loadingText","shownColumnTooltip","conditionalFormatEditIndex","isTableDownloading","isReady","rollupSelectedColumns","selectedAggregation","openOptions","pendingRowCount","pendingSavePromise","pendingSaveError","toastMessage","showOverflowModal","showNoPastePermissionModal","noPastePermissionError","overflowText","isGotoShown","gotoRow","gotoRowError","gotoValueError","gotoValueSelectedColumnName","gotoValueSelectedFilter","eqIgnoreCase","initialColumnHeaderGroups","componentDidMount","initState","startListening","componentDidUpdate","prevProps","prevState","inputFilters","settings","stopListening","changedInputFilters","inputFilter","includes","_advancedSettings$get","advancedSettings","replaceExistingFilters","get","FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS","clearGridInputField","clearCrossColumSearch","resetRanges","applyInputFilters","resetColumnSelection","updateFormatterSettings","updateSorts","loadingScrimStartTime","loadingScrimFinishTime","window","requestAnimationFrame","currentTime","totalTime","Math","min","debug2","isAggEditType","option","AGGREGATION_EDIT","some","removeEmptyAggregations","sendStateChange","componentWillUnmount","cancel","updateSearchFilter","loadingTimer","clearTimeout","handleDownloadProgressUpdate","animationFrame","cancelAnimationFrame","showViewportLoading","gridWrapper","_this$grid$canvasWrap","_this$grid","canvasWrapper","current","getKeyHandlers","getCachedKeyHandlers","renderer","getCachedRenderer","getMouseHandlers","getCachedMouseHandlers","getValueForCell","columnIndex","rowIndex","rawValue","arguments","modelColumn","getModelColumn","modelRow","getModelRow","value","valueForCell","isDateType","i18n","DateTimeFormat","format","TimeZone","getTimeZone","timeZone","textForCell","modelColumns","modelRows","getTheme","_ref4","contextDensity","context","getCachedTheme","floatingTopRowCount","floatingBottomRowCount","getVisibleColumn","modelIndex","getVisibleIndex","text","err","replaceExisting","newAdvancedFilters","newQuickFilters","isChanged","_ref5","findIndex","_ref6","columnName","columnType","delete","applyQuickFilter","concat","trim","quickFilter","set","setAdvancedFilterMap","setAdvancedFilter","_ref7","setQuickFilter","_ref8","filterMap","_advancedSettings$get2","clearFiltersOnLinkerFilterUpdate","LINK_CHANGE_CLEARS_ALL_FILTERS","clearAllFilters","_ref9","filterList","find","c","combinedText","combineFiltersFromList","removeQuickFilter","removeColumnFilter","modelRange","clearRange","Array","isArray","_ref0","_","_ref1","clearAllAggregations","setValue","rebuildFilters","key","makeAdvancedFilter","setFilters","_ref10","_settings$defaultDeci","_settings$defaultInte","_settings$truncateNum","_settings$showEmptySt","_settings$showNullStr","_settings$showExtraGr","forceUpdate","getColumnFormats","dateTimeFormatterOptions","getDateTimeFormatterOptions","defaultDecimalFormatOptions","defaultIntegerFormatOptions","isColumnFormatChanged","isDateFormattingChanged","isDecimalFormattingChanged","isIntegerFormattingChanged","isTruncateNumbersChanged","isShowEmptyStringsChanged","isShowNullStringsChanged","isShowExtraGroupColumnChanged","updateFormatter","updatedFormats","_this$globalColumnFor","update","mergedColumnFormats","values","initFormatter","isPartitionRequired","loadPartitionsTable","loadTableState","handleTableLoadError","applyInputFiltersOnInit","reverseType","inputFiltersWithValues","REVERSE_TYPE","POST_SORT","_this","_asyncToGenerator","initializePartitionConfig","isCanceled","_this2","keyTable","add","partitionKeysTable","resolved","close","desc","applySort","setViewport","addEventListener","Table","EVENT_UPDATED","event","detail","data","rows","stopLoading","row","newPartition","isPartitionAwareSourceTable","e","selectPartitionKeyFromTable","getRowDataMap","partitionColumnSet","partitionColumns","entries","_ref11","has","_ref12","columnData","copyCell","String","copyColumnHeader","columnDepth","copyRanges","ranges","includeHeaders","formatValues","getUserColumnWidths","boundedRanges","columnCount","rowCount","clearSelectedRanges","setViewState","top","_this$gridWrapper$get","_this$gridWrapper","minScrimTransitionTime","maxScrimTransitionTime","height","getBoundingClientRect","scrimTransitionTime","setTimeout","loadingSpinnerDelay","rollback","canRollback","EVENT","UPDATED","REQUEST_FAILED","COLUMNS_CHANGED","PENDING_DATA_UPDATED","VIEWPORT_UPDATED","TABLE_CHANGED","removeEventListener","focus","_this$grid2","focusFilterBar","isFilterable","left","rightVisible","lastLeft","_this$grid3","_this$grid4","_this$grid5","metricState","getMetricState","newLeft","getLastLeft","getVisibleWidth","leftOffset","lastFocusedFilterBarColumn","hideColumnByVisibleIndex","columnVisibleIndex","_this$grid6","setColumnWidth","freezeColumnByColumnName","allFrozenColumns","visibleIndex","newMovedColumns","moveItem","unFreezeColumnByColumnName","frontColumns","modelIndexes","isVisible","_this$grid7","defaultWidth","calculatedWidth","calculatedColumnWidths","resetColumnWidth","_model$layoutHints$fr","_model$layoutHints2","_this$grid8","updateCanvas","prevConfig","onError","loadingMessage","showAllColumns","_this$grid9","columnWidth","toggleSort","addToExisting","info","isColumnSortable","currentSorts","toggleSortForColumn","_this$grid0","sortColumn","_this$grid1","direction","none","isAbs","_this$grid10","isReversible","focusIndex","isTextType","_this$grid11","isTableSearchAvailable","_model$layoutHints3","_dh$SearchDisplayMode","_dh$SearchDisplayMode2","searchDisplayMode","SearchDisplayMode","SEARCH_DISPLAY_HIDE","SEARCH_DISPLAY_SHOW","_this$crossColumnRef","_this$crossColumnRef2","_this$grid12","_this$grid13","_this$grid14","_this$gotoRowRef$curr","cursorRow","cursorColumn","cellValue","convertValueToText","_this3","_document","Error","containsGridCellInputField","document","activeElement","classList","contains","_this3$grid","newPendingSavePromise","then","_this4","selectColumn","onColumnSelected","selectData","dataMap","onDataSelected","_this5","groupedColumns","_loop","isExpandable","isRowExpandable","isGrouped","index","_this$grid15","oldSort","getSortForColumn","newSort","descending","asc","setSortForColumn","_this$grid16","_this$filterInputRef","_this$filterInputRef2","onCreateChart","warn","_ref13","setGridFocus","defocusInput","_this$grid17","backward","selectedFormat","prevCustomColumnFormatMap","normalizedType","getNormalizedType","columnFormattingRule","makeColumnFormattingRule","alignment","_ref14","newColumnAlignmentMap","stopPropagation","_ref15","newOptions","pop","_ref16","_this$grid18","_this$grid$state","_this$grid19","selectionEndRow","bottomViewport","bottomNonFloating","onSelectionChanged","consolidate","startRow","onChangeApplied","parseColumnHeaderGroups","groups","_this$grid20","tooltip","startTimer","CONDITIONAL_FORMATTING_EDIT","oldCustomColumns","customColumn","removedColumnNames","getRemovedCustomColumnNames","newSorts","removeSortsInColumns","removeFiltersInColumns","removeColumnFromMovedColumns","newSelectDistinctColumns","removeColumnsFromSelectDistinctColumns","_this$grid21","_this$grid22","handleResizeColumn","_this$grid23","contentWidth","contentColumnWidths","userWidths","setCalculatedColumnWidth","handleResizeAllColumns","_this$grid24","allColumns","allColumnWidths","visibleColumns","_ref17","width","_ref18","contentWidths","manualColumns","_rollupConfig$columns","_rollupConfig$columns2","added","removed","isRollup","changes","shouldStartLoading","every","op","isRollupProhibited","join","aggregation","_rollupConfig$columns3","_rollupConfig$columns4","_ref19","_rollupConfig$columns5","_rollupConfig$columns6","resetGridViewState","columnNames","INITIATING","fileName","frozenTable","tableSubscription","snapshotRanges","modelRanges","includeColumnHeaders","useUnformattedValues","startDownload","_ref20","newAggregations","inputString","_arguments","_this6","_this6$grid","isBackwards","selectedColumnName","isSeekRowAvailable","selectedColumn","getColumnByName","searchFromRow","isContains","containsIgnoreCase","isIgnoreCase","_this6$grid2","columnDataType","dataType","CHAR","STRING","ValueType","DATETIME","startDate","parseDateRange","DECIMAL","INT","isBigDecimalType","isBigIntegerType","inputValue","parseInt","Number","NEGATIVE_INFINITY","POSITIVE_INFINITY","NUMBER","makeValue","setFocusRow","_this$tableSaver","cancelDownload","FINISHED","CANCELED","deleteRanges","isDeletable","columnAllowedCursor","cursor","topOffset","irisGridState","gridState","onStateChange","handleOpenNoPastePermissionModal","errorMessage","_this$gridWrapper2","gridRect","popperMargin","columnHeaderHeight","allColumnXs","columnHeaderMaxDepth","columnX","bottom","right","x","y","toJSON","rowNumber","rowInt","_this$grid25","_this$grid26","_this$grid27","target","getColumnTooltip","boundedLeft","boundedWidth","abs","virtualReference","clientWidth","clientHeight","timeout","interactive","referenceObject","onExited","onStatistics","_this$tooltip","_this$grid28","prevColumnName","prevColumn","render","_rollupConfig$columns7","_rollupConfig$columns8","_this7","_this$grid30","_openOptions","getDownloadWorker","isStuckToBottom","isStuckToRight","onlyFetchVisibleColumns","onAdvancedSettingsChange","singleColumnHeaderHeight","getCachedFilter","stateOverride","getCachedStateOverride","focusField","debounceMs","minDebounce","round","maxDebounce","gridX","gridY","_theme$filterBarHeigh","_theme$filterBarHeigh2","_this$grid29","filterBarHeight","fieldWidth","fieldHeight","minWidth","isValid","advancedFilter","isBarFiltered","active","isAdvancedFilterSet","onAdvancedFiltersTriggered","onTab","onContextMenu","handleContextMenu","loadingElement","loadingStatus","show","onClick","transform","columnTooltip","_this$tooltip2","filterBar","_loop2","isFilterSet","isFilterVisible","element","hidden","kind","_this7$grid","onMouseEnter","onMouseLeave","advancedFilterMenus","_loop3","xColumnHeader","xFilterBar","onEntered","getAdvancedMenuOpenedHandler","isShown","closeOnBlur","positionFixed","getCachedAdvancedFilterMenuActions","getCachedOptionItems","getCachedHiddenColumns","openOptionsStack","onSubmit","onColumnVisibilityChanged","onReset","onMovedColumnsChanged","onColumnHeaderGroupChanged","onCreate","onSelect","handleConditionalFormatEditorUpdate","rule","onUpdate","onSave","onCancel","availablePlacements","onEdit","isDownloading","onDownload","onDownloadStart","items","role","in","transitionSlowMs","onEnter","onExit","mountOnEnter","unmountOnExit","nodeRef","slideTransitionRef","bottomTransitionRef","selectedColumns","invertSelection","isStickyBottom","onViewChanged","isOpen","onClose","getAlwaysFetchColumns","draggingColumn","range","formatColumns","getCachedPreviewFormatColumns","totalsConfig","getModelTotalsConfig","getOverflowButtonTooltip","getExpandCellTooltip","getHoverTooltip","onGotoRowSubmit","onGotoRowNumberChanged","onEntering","onExiting","gotoValueFilter","onGotoValueSelectedColumnNameChanged","onGotoValueSelectedFilterChanged","onGotoValueChanged","onGotoValueSubmit","isSaving","saveTooltip","discardTooltip","onDiscard","onDownloadCompleted","onDownloadCanceled","onDownloadProgressUpdate","onBack","actions","columnNotAllowedCursor","copyCursor","getServiceWorker","defaultDateTimeFormat","FULL_DATE_FORMAT","showTimeZone","showTSeparator"],"sources":["../src/IrisGrid.tsx"],"sourcesContent":["import React, {\n type ChangeEvent,\n Component,\n type CSSProperties,\n type ReactElement,\n type ReactNode,\n} from 'react';\nimport memoize from 'memoizee';\nimport classNames from 'classnames';\nimport { CSSTransition } from 'react-transition-group';\nimport deepEqual from 'fast-deep-equal';\nimport Log from '@deephaven/log';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n ContextActions,\n Stack,\n Menu,\n Page,\n Popper,\n ThemeExport,\n Tooltip,\n type ContextAction,\n type PopperOptions,\n type ReferenceObject,\n Button,\n ContextActionUtils,\n type ResolvableContextAction,\n SlideTransition,\n} from '@deephaven/components';\nimport {\n Grid,\n type GridMetrics,\n type GridMouseHandler,\n GridRange,\n type GridRangeIndex,\n type GridThemeType,\n GridUtils,\n type KeyHandler,\n type ModelIndex,\n type ModelSizeMap,\n type MoveOperation,\n type VisibleIndex,\n type GridState,\n isEditableGridModel,\n type BoundedAxisRange,\n isExpandableGridModel,\n isDeletableGridModel,\n} from '@deephaven/grid';\nimport {\n dhEye,\n dhFilterFilled,\n dhGraphLineUp,\n dhTriangleDownSquare,\n vsClose,\n vsCloudDownload,\n vsEdit,\n vsFilter,\n vsMenu,\n vsReply,\n vsRuby,\n vsSearch,\n vsSplitHorizontal,\n vsSymbolOperator,\n vsTools,\n} from '@deephaven/icons';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport {\n DateUtils,\n Formatter,\n FormatterUtils,\n TableUtils,\n type FormattingRule,\n type ReverseType,\n type RowDataMap,\n type SortDirection,\n type DateTimeColumnFormatterOptions,\n type TableColumnFormat,\n type Settings,\n isSortDirection,\n} from '@deephaven/jsapi-utils';\nimport {\n assertNotNull,\n copyToClipboard,\n EMPTY_ARRAY,\n EMPTY_MAP,\n Pending,\n PromiseUtils,\n ValidationError,\n getOrThrow,\n type EventT,\n} from '@deephaven/utils';\nimport {\n Type as FilterType,\n type TypeValue as FilterTypeValue,\n} from '@deephaven/filters';\nimport throttle from 'lodash.throttle';\nimport debounce from 'lodash.debounce';\nimport clamp from 'lodash.clamp';\nimport {\n type FormattingRule as SidebarFormattingRule,\n getFormatColumns,\n} from './sidebar/conditional-formatting/ConditionalFormattingUtils';\nimport PendingDataBottomBar from './PendingDataBottomBar';\nimport IrisGridCopyHandler, { type CopyOperation } from './IrisGridCopyHandler';\nimport FilterInputField from './FilterInputField';\nimport {\n CopyCellKeyHandler,\n ClearFilterKeyHandler,\n CopyKeyHandler,\n ReverseKeyHandler,\n} from './key-handlers';\nimport {\n IrisGridCellOverflowMouseHandler,\n IrisGridColumnSelectMouseHandler,\n IrisGridColumnTooltipMouseHandler,\n IrisGridContextMenuHandler,\n IrisGridCopyCellMouseHandler,\n IrisGridDataSelectMouseHandler,\n IrisGridPartitionedTableMouseHandler,\n IrisGridFilterMouseHandler,\n IrisGridRowTreeMouseHandler,\n IrisGridSortMouseHandler,\n IrisGridTokenMouseHandler,\n PendingMouseHandler,\n} from './mousehandlers';\nimport ToastBottomBar from './ToastBottomBar';\nimport IrisGridMetricCalculator from './IrisGridMetricCalculator';\nimport IrisGridModelUpdater from './IrisGridModelUpdater';\nimport IrisGridRenderer from './IrisGridRenderer';\nimport {\n createDefaultIrisGridTheme,\n type IrisGridThemeType,\n} from './IrisGridTheme';\nimport ColumnStatistics from './ColumnStatistics';\nimport './IrisGrid.scss';\nimport AdvancedFilterCreator from './AdvancedFilterCreator';\nimport {\n Aggregations,\n AggregationEdit,\n AggregationUtils,\n ChartBuilder,\n CustomColumnBuilder,\n OptionType,\n RollupRows,\n TableCsvExporter,\n TableSaver,\n VisibilityOrderingBuilder,\n DownloadServiceWorkerUtils,\n} from './sidebar';\nimport IrisGridUtils from './IrisGridUtils';\nimport CrossColumnSearch from './CrossColumnSearch';\nimport IrisGridModel from './IrisGridModel';\nimport {\n isPartitionedGridModel,\n type PartitionConfig,\n type PartitionedGridModel,\n} from './PartitionedGridModel';\nimport IrisGridPartitionSelector from './IrisGridPartitionSelector';\nimport SelectDistinctBuilder from './sidebar/SelectDistinctBuilder';\nimport AdvancedSettingsType from './sidebar/AdvancedSettingsType';\nimport AdvancedSettingsMenu, {\n type AdvancedSettingsMenuCallback,\n} from './sidebar/AdvancedSettingsMenu';\nimport SHORTCUTS from './IrisGridShortcuts';\nimport ConditionalFormattingMenu from './sidebar/conditional-formatting/ConditionalFormattingMenu';\n\nimport ConditionalFormatEditor from './sidebar/conditional-formatting/ConditionalFormatEditor';\nimport IrisGridCellOverflowModal from './IrisGridCellOverflowModal';\nimport GotoRow, { type GotoRowElement } from './GotoRow';\nimport {\n type Aggregation,\n type AggregationSettings,\n} from './sidebar/aggregations/Aggregations';\nimport { type ChartBuilderSettings } from './sidebar/ChartBuilder';\nimport AggregationOperation from './sidebar/aggregations/AggregationOperation';\nimport { type UIRollupConfig } from './sidebar/RollupRows';\nimport {\n type Action,\n type AdvancedFilterMap,\n type AdvancedFilterOptions,\n type ColumnName,\n type InputFilter,\n type OperationMap,\n type OptionItem,\n type PendingDataErrorMap,\n type PendingDataMap,\n type QuickFilterMap,\n type ReadonlyAdvancedFilterMap,\n type ReadonlyAggregationMap,\n type ReadonlyQuickFilterMap,\n type UITotalsTableConfig,\n} from './CommonTypes';\nimport type ColumnHeaderGroup from './ColumnHeaderGroup';\nimport { IrisGridThemeContext } from './IrisGridThemeProvider';\nimport { isMissingPartitionError } from './MissingPartitionError';\nimport { NoPastePermissionModal } from './NoPastePermissionModal';\n\nconst log = Log.module('IrisGrid');\n\nconst VIEWPORT_LOADING_DELAY = 500;\n\nconst UPDATE_DOWNLOAD_THROTTLE = 500;\n\nconst SET_FILTER_DEBOUNCE = 250;\n\nconst SEEK_ROW_DEBOUNCE = 250;\n\nconst SET_CONDITIONAL_FORMAT_DEBOUNCE = 250;\n\nconst DEFAULT_AGGREGATION_SETTINGS = Object.freeze({\n aggregations: EMPTY_ARRAY,\n showOnTop: false,\n});\n\nconst UNFORMATTED_DATE_PATTERN = `yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSS z`;\n\nfunction isEmptyConfig({\n advancedFilters,\n aggregationSettings,\n customColumns,\n quickFilters,\n reverse,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts,\n}: {\n advancedFilters: ReadonlyAdvancedFilterMap;\n aggregationSettings: AggregationSettings;\n customColumns: readonly ColumnName[];\n quickFilters: ReadonlyQuickFilterMap;\n reverse: boolean;\n rollupConfig?: UIRollupConfig;\n searchFilter?: DhType.FilterCondition;\n selectDistinctColumns: readonly ColumnName[];\n sorts: readonly DhType.Sort[];\n}): boolean {\n return (\n advancedFilters.size === 0 &&\n aggregationSettings.aggregations.length === 0 &&\n customColumns.length === 0 &&\n quickFilters.size === 0 &&\n !reverse &&\n rollupConfig == null &&\n searchFilter == null &&\n selectDistinctColumns.length === 0 &&\n sorts.length === 0\n );\n}\n\nexport type FilterData = {\n operator: FilterTypeValue;\n text: string;\n value: unknown;\n startColumnIndex: number;\n};\n\nexport type FilterMap = Map<\n ColumnName,\n {\n columnType: string | null;\n filterList: FilterData[];\n }\n>;\n\nexport interface IrisGridContextMenuData {\n model: IrisGridModel;\n value: unknown;\n valueText: string | null;\n column: DhType.Column;\n rowIndex: GridRangeIndex;\n columnIndex: GridRangeIndex;\n modelRow: GridRangeIndex;\n modelColumn: GridRangeIndex;\n}\n\nexport interface IrisGridProps {\n children?: React.ReactNode;\n advancedFilters: ReadonlyAdvancedFilterMap;\n advancedSettings: ReadonlyMap<AdvancedSettingsType, boolean>;\n alwaysFetchColumns: readonly ColumnName[];\n isFilterBarShown: boolean;\n applyInputFiltersOnInit: boolean;\n conditionalFormats: readonly SidebarFormattingRule[];\n customColumnFormatMap: ReadonlyMap<ColumnName, FormattingRule>;\n columnAlignmentMap: ReadonlyMap<string, CanvasTextAlign>;\n model: IrisGridModel;\n movedColumns: readonly MoveOperation[];\n movedRows: readonly MoveOperation[];\n inputFilters: readonly InputFilter[];\n customFilters: readonly DhType.FilterCondition[];\n onCreateChart: (settings: ChartBuilderSettings, model: IrisGridModel) => void;\n onColumnSelected: (column: DhType.Column) => void;\n onError: (error: unknown) => void;\n onDataSelected: (index: ModelIndex, map: RowDataMap) => void;\n onStateChange: (irisGridState: IrisGridState, gridState: GridState) => void;\n onAdvancedSettingsChange: AdvancedSettingsMenuCallback;\n\n /** @deprecated use `partitionConfig` instead */\n partitions?: (string | null)[];\n partitionConfig?: PartitionConfig;\n sorts: readonly DhType.Sort[];\n\n /** @deprecated use `reverse` instead */\n reverseType?: ReverseType;\n reverse: boolean;\n quickFilters: ReadonlyQuickFilterMap | null;\n customColumns: readonly ColumnName[];\n selectDistinctColumns: readonly ColumnName[];\n settings?: Settings;\n userColumnWidths: ReadonlyMap<ModelIndex, number>;\n userRowHeights: ReadonlyMap<ModelIndex, number>;\n onSelectionChanged: (gridRanges: readonly GridRange[]) => void;\n rollupConfig?: UIRollupConfig;\n aggregationSettings: AggregationSettings;\n\n isSelectingColumn: boolean;\n isSelectingPartition: boolean;\n isStuckToBottom: boolean;\n isStuckToRight: boolean;\n\n // eslint-disable-next-line react/no-unused-prop-types\n columnSelectionValidator?: (value: DhType.Column | null) => boolean;\n columnAllowedCursor: string;\n\n // eslint-disable-next-line react/no-unused-prop-types\n columnNotAllowedCursor: string;\n\n // eslint-disable-next-line react/no-unused-prop-types\n copyCursor: string;\n name: string;\n onlyFetchVisibleColumns: boolean;\n\n showSearchBar: boolean;\n searchValue: string;\n selectedSearchColumns?: readonly ColumnName[];\n invertSearchColumns: boolean;\n\n // eslint-disable-next-line react/no-unused-prop-types\n onContextMenu: (\n data: IrisGridContextMenuData\n ) => readonly ResolvableContextAction[];\n\n pendingDataMap?: PendingDataMap;\n getDownloadWorker: () => Promise<ServiceWorker>;\n\n canCopy: boolean;\n canDownloadCsv: boolean;\n frozenColumns: readonly ColumnName[];\n\n // Theme override for IrisGridTheme\n theme?: GridThemeType;\n\n canToggleSearch: boolean;\n\n columnHeaderGroups?: readonly ColumnHeaderGroup[];\n\n // Optional key and mouse handlers\n keyHandlers: readonly KeyHandler[];\n mouseHandlers: readonly GridMouseHandler[];\n\n // Pass in a custom renderer to the grid for advanced use cases\n renderer?: IrisGridRenderer;\n\n density?: 'compact' | 'regular' | 'spacious';\n}\n\nexport interface IrisGridState {\n isFilterBarShown: boolean;\n isSelectingPartition: boolean;\n focusedFilterBarColumn: number | null;\n metricCalculator: IrisGridMetricCalculator;\n metrics?: GridMetrics;\n\n partitionConfig?: PartitionConfig;\n\n // setAdvancedFilter and setQuickFilter mutate the arguments\n // so we want to always use map copies from the state instead of props\n quickFilters: ReadonlyQuickFilterMap;\n advancedFilters: ReadonlyAdvancedFilterMap;\n shownAdvancedFilter: number | null;\n hoverAdvancedFilter: number | null;\n\n sorts: readonly DhType.Sort[];\n reverse: boolean;\n customColumns: readonly ColumnName[];\n selectDistinctColumns: readonly ColumnName[];\n\n // selected range in table\n selectedRanges: readonly GridRange[];\n\n // Current ongoing copy operation\n copyOperation: CopyOperation | null;\n\n // The filter that is currently being applied. Reset after update is received\n loadingText: string | null;\n loadingScrimProgress: number | null;\n loadingSpinnerShown: boolean;\n loadingCancelShown: boolean;\n loadingBlocksGrid: boolean;\n\n movedColumns: readonly MoveOperation[];\n movedRows: readonly MoveOperation[];\n\n shownColumnTooltip: number | null;\n\n formatter: Formatter;\n isMenuShown: boolean;\n customColumnFormatMap: Map<ColumnName, FormattingRule>;\n\n columnAlignmentMap: Map<string, CanvasTextAlign>;\n\n conditionalFormats: readonly SidebarFormattingRule[];\n conditionalFormatEditIndex: number | null;\n conditionalFormatPreview?: SidebarFormattingRule;\n\n // Column user is hovering over for selection\n hoverSelectColumn: GridRangeIndex;\n\n isTableDownloading: boolean;\n isReady: boolean;\n tableDownloadStatus: string;\n tableDownloadProgress: number;\n tableDownloadEstimatedTime: number | null;\n\n showSearchBar: boolean;\n searchFilter?: DhType.FilterCondition;\n searchValue: string;\n selectedSearchColumns: readonly ColumnName[];\n invertSearchColumns: boolean;\n\n rollupConfig?: UIRollupConfig;\n rollupSelectedColumns: readonly ColumnName[];\n aggregationSettings: AggregationSettings;\n selectedAggregation: Aggregation | null;\n\n openOptions: readonly OptionItem[];\n\n pendingRowCount: number;\n pendingDataMap: PendingDataMap;\n pendingDataErrors: PendingDataErrorMap;\n pendingSavePromise: Promise<void> | null;\n pendingSaveError: string | null;\n\n toastMessage: JSX.Element | null;\n frozenColumns: readonly ColumnName[];\n showOverflowModal: boolean;\n showNoPastePermissionModal: boolean;\n noPastePermissionError: string;\n overflowText: string;\n overflowButtonTooltipProps: CSSProperties | null;\n expandCellTooltipProps: CSSProperties | null;\n expandTooltipDisplayValue: string;\n hoverTooltipProps: CSSProperties | null;\n hoverDisplayValue: ReactNode;\n\n gotoRow: string;\n gotoRowError: string;\n gotoValueError: string;\n isGotoShown: boolean;\n\n gotoValueSelectedColumnName: ColumnName;\n gotoValueSelectedFilter: FilterTypeValue;\n gotoValueManuallyChanged: boolean;\n gotoValue: string;\n\n columnHeaderGroups: readonly ColumnHeaderGroup[];\n}\n\nclass IrisGrid extends Component<IrisGridProps, IrisGridState> {\n static contextType = IrisGridThemeContext;\n\n // eslint-disable-next-line react/static-property-placement, react/sort-comp\n declare context: React.ContextType<typeof IrisGridThemeContext>;\n\n static minDebounce = 150;\n\n static maxDebounce = 500;\n\n static loadingSpinnerDelay = 800;\n\n static defaultProps = {\n advancedFilters: EMPTY_MAP,\n advancedSettings: EMPTY_MAP,\n alwaysFetchColumns: EMPTY_ARRAY,\n conditionalFormats: EMPTY_ARRAY,\n customColumnFormatMap: EMPTY_MAP,\n columnAlignmentMap: EMPTY_MAP,\n isFilterBarShown: false,\n applyInputFiltersOnInit: false,\n movedColumns: EMPTY_ARRAY,\n movedRows: EMPTY_ARRAY,\n inputFilters: EMPTY_ARRAY,\n customFilters: EMPTY_ARRAY,\n onCreateChart: undefined,\n onColumnSelected: (): void => undefined,\n onDataSelected: (): void => undefined,\n onError: (): void => undefined,\n onStateChange: (): void => undefined,\n onAdvancedSettingsChange: (): void => undefined,\n partitions: undefined,\n partitionConfig: undefined,\n quickFilters: EMPTY_MAP,\n selectDistinctColumns: EMPTY_ARRAY,\n sorts: EMPTY_ARRAY,\n reverse: false,\n customColumns: EMPTY_ARRAY,\n aggregationSettings: DEFAULT_AGGREGATION_SETTINGS,\n rollupConfig: undefined,\n userColumnWidths: EMPTY_MAP,\n userRowHeights: EMPTY_MAP,\n onSelectionChanged: (): void => undefined,\n isSelectingColumn: false,\n isSelectingPartition: false,\n isStuckToBottom: false,\n isStuckToRight: false,\n columnAllowedCursor: 'linker',\n columnNotAllowedCursor: 'linker-not-allowed',\n copyCursor: 'copy',\n name: 'table',\n onlyFetchVisibleColumns: true,\n showSearchBar: false,\n searchValue: '',\n invertSearchColumns: true,\n onContextMenu: (): readonly ResolvableContextAction[] => EMPTY_ARRAY,\n pendingDataMap: EMPTY_MAP,\n getDownloadWorker: DownloadServiceWorkerUtils.getServiceWorker,\n settings: {\n timeZone: 'America/New_York',\n defaultDateTimeFormat: DateUtils.FULL_DATE_FORMAT,\n showTimeZone: false,\n showTSeparator: true,\n truncateNumbersWithPound: false,\n showEmptyStrings: true,\n showNullStrings: true,\n showExtraGroupColumn: true,\n formatter: EMPTY_ARRAY,\n },\n canCopy: true,\n canDownloadCsv: true,\n frozenColumns: EMPTY_ARRAY,\n // Do not set a default density prop since we need to know if it overrides the global density setting\n density: undefined,\n canToggleSearch: true,\n mouseHandlers: EMPTY_ARRAY,\n keyHandlers: EMPTY_ARRAY,\n } satisfies Partial<IrisGridProps>;\n\n constructor(props: IrisGridProps) {\n super(props);\n\n this.handleAdvancedFilterChange =\n this.handleAdvancedFilterChange.bind(this);\n this.handleAdvancedFilterSortChange =\n this.handleAdvancedFilterSortChange.bind(this);\n this.handleAdvancedFilterDone = this.handleAdvancedFilterDone.bind(this);\n this.handleAdvancedMenuOpened = this.handleAdvancedMenuOpened.bind(this);\n this.handleGotoRowOpened = this.handleGotoRowOpened.bind(this);\n this.handleGotoRowClosed = this.handleGotoRowClosed.bind(this);\n this.handleAdvancedMenuClosed = this.handleAdvancedMenuClosed.bind(this);\n this.handleAggregationChange = this.handleAggregationChange.bind(this);\n this.handleAggregationsChange = this.handleAggregationsChange.bind(this);\n this.handleAggregationEdit = this.handleAggregationEdit.bind(this);\n this.handleAnimationLoop = this.handleAnimationLoop.bind(this);\n this.handleAnimationStart = this.handleAnimationStart.bind(this);\n this.handleAnimationEnd = this.handleAnimationEnd.bind(this);\n this.handleChartChange = this.handleChartChange.bind(this);\n this.handleChartCreate = this.handleChartCreate.bind(this);\n this.handleGridError = this.handleGridError.bind(this);\n this.handleFilterBarChange = this.handleFilterBarChange.bind(this);\n this.handleFilterBarDone = this.handleFilterBarDone.bind(this);\n this.handleFilterBarTab = this.handleFilterBarTab.bind(this);\n this.handleCancel = this.handleCancel.bind(this);\n this.handleMenu = this.handleMenu.bind(this);\n this.handleMenuClose = this.handleMenuClose.bind(this);\n this.handleMenuSelect = this.handleMenuSelect.bind(this);\n this.handleMenuBack = this.handleMenuBack.bind(this);\n this.handleRequestFailed = this.handleRequestFailed.bind(this);\n this.handleSelectionChanged = this.handleSelectionChanged.bind(this);\n this.handleMovedColumnsChanged = this.handleMovedColumnsChanged.bind(this);\n this.handleHeaderGroupsChanged = this.handleHeaderGroupsChanged.bind(this);\n this.handleUpdate = this.handleUpdate.bind(this);\n this.handleTableChanged = this.handleTableChanged.bind(this);\n this.handleTooltipRef = this.handleTooltipRef.bind(this);\n this.handleViewChanged = this.handleViewChanged.bind(this);\n this.handleFormatSelection = this.handleFormatSelection.bind(this);\n this.handleColumnAlignmentChange =\n this.handleColumnAlignmentChange.bind(this);\n this.handleConditionalFormatCreate =\n this.handleConditionalFormatCreate.bind(this);\n this.handleConditionalFormatEdit =\n this.handleConditionalFormatEdit.bind(this);\n this.handleConditionalFormatsChange =\n this.handleConditionalFormatsChange.bind(this);\n this.handleConditionalFormatEditorSave =\n this.handleConditionalFormatEditorSave.bind(this);\n this.handleConditionalFormatEditorCancel =\n this.handleConditionalFormatEditorCancel.bind(this);\n this.handleUpdateCustomColumns = this.handleUpdateCustomColumns.bind(this);\n this.handleCustomColumnsChanged =\n this.handleCustomColumnsChanged.bind(this);\n this.handleSelectDistinctChanged =\n this.handleSelectDistinctChanged.bind(this);\n this.handlePendingDataUpdated = this.handlePendingDataUpdated.bind(this);\n this.handleViewportUpdated = this.handleViewportUpdated.bind(this);\n this.handlePendingCommitClicked =\n this.handlePendingCommitClicked.bind(this);\n this.handlePendingDiscardClicked =\n this.handlePendingDiscardClicked.bind(this);\n this.handleGotoRowSelectedRowNumberSubmit =\n this.handleGotoRowSelectedRowNumberSubmit.bind(this);\n this.focusRowInGrid = this.focusRowInGrid.bind(this);\n this.handleDownloadTable = this.handleDownloadTable.bind(this);\n this.handleDownloadTableStart = this.handleDownloadTableStart.bind(this);\n this.handleCancelDownloadTable = this.handleCancelDownloadTable.bind(this);\n this.handleDownloadCanceled = this.handleDownloadCanceled.bind(this);\n this.handleDownloadCompleted = this.handleDownloadCompleted.bind(this);\n this.handlePartitionChange = this.handlePartitionChange.bind(this);\n this.handleColumnVisibilityChanged =\n this.handleColumnVisibilityChanged.bind(this);\n this.handleColumnVisibilityReset =\n this.handleColumnVisibilityReset.bind(this);\n this.handleCrossColumnSearch = this.handleCrossColumnSearch.bind(this);\n this.handleRollupChange = this.handleRollupChange.bind(this);\n this.handleOverflowClose = this.handleOverflowClose.bind(this);\n this.handleCloseNoPastePermissionModal =\n this.handleCloseNoPastePermissionModal.bind(this);\n this.getColumnBoundingRect = this.getColumnBoundingRect.bind(this);\n this.handleGotoRowSelectedRowNumberChanged =\n this.handleGotoRowSelectedRowNumberChanged.bind(this);\n this.handleGotoValueSelectedColumnNameChanged =\n this.handleGotoValueSelectedColumnNameChanged.bind(this);\n this.handleGotoValueSelectedFilterChanged =\n this.handleGotoValueSelectedFilterChanged.bind(this);\n this.handleGotoValueChanged = this.handleGotoValueChanged.bind(this);\n this.handleGotoValueSubmitted = this.handleGotoValueSubmitted.bind(this);\n this.handleViewportUpdated = this.handleViewportUpdated.bind(this);\n this.makeQuickFilter = this.makeQuickFilter.bind(this);\n this.setFilterMap = this.setFilterMap.bind(this);\n\n this.grid = null;\n this.lastLoadedConfig = null;\n this.pending = new Pending();\n this.globalColumnFormats = EMPTY_ARRAY;\n this.decimalFormatOptions = {};\n this.integerFormatOptions = {};\n this.truncateNumbersWithPound = false;\n this.showEmptyStrings = true;\n this.showNullStrings = true;\n this.showExtraGroupColumn = true;\n\n // When the loading scrim started/when it should extend to the end of the screen.\n this.tableSaver = null;\n this.crossColumnRef = React.createRef();\n this.isAnimating = false;\n this.filterInputRef = React.createRef();\n\n this.gotoRowRef = React.createRef();\n\n this.isCopying = false;\n\n this.toggleFilterBarAction = {\n action: () => this.toggleFilterBar(),\n shortcut: SHORTCUTS.TABLE.TOGGLE_QUICK_FILTER,\n };\n\n this.toggleSearchBarAction = {\n action: () => this.toggleSearchBar(),\n shortcut: SHORTCUTS.TABLE.TOGGLE_SEARCH,\n };\n\n this.toggleGotoRowAction = {\n action: () => this.toggleGotoRow(),\n shortcut: SHORTCUTS.TABLE.GOTO_ROW,\n };\n\n this.discardAction = {\n action: () => {\n const { model } = this.props;\n if (\n isEditableGridModel(model) &&\n model.isEditable &&\n model.pendingDataMap.size > 0\n ) {\n this.discardPending().catch(log.error);\n }\n },\n shortcut: SHORTCUTS.INPUT_TABLE.DISCARD,\n };\n this.commitAction = {\n action: () => {\n const { model } = this.props;\n if (\n isEditableGridModel(model) &&\n model.isEditable &&\n model.pendingDataMap.size > 0 &&\n model.pendingDataErrors.size === 0\n ) {\n this.commitPending().catch(log.error);\n }\n },\n shortcut: SHORTCUTS.INPUT_TABLE.COMMIT,\n };\n this.contextActions = [\n this.toggleFilterBarAction,\n this.toggleSearchBarAction,\n this.toggleGotoRowAction,\n this.discardAction,\n this.commitAction,\n ];\n\n const {\n aggregationSettings,\n conditionalFormats,\n customColumnFormatMap,\n columnAlignmentMap,\n isFilterBarShown,\n isSelectingPartition,\n partitions,\n partitionConfig,\n model,\n movedColumns: movedColumnsProp,\n movedRows: movedRowsProp,\n rollupConfig,\n userColumnWidths,\n userRowHeights,\n showSearchBar,\n searchValue,\n selectedSearchColumns,\n invertSearchColumns,\n advancedFilters,\n quickFilters,\n selectDistinctColumns,\n pendingDataMap,\n canCopy,\n frozenColumns,\n columnHeaderGroups,\n } = props;\n\n const { dh } = model;\n const keyHandlers: KeyHandler[] = [\n new CopyCellKeyHandler(this),\n new ReverseKeyHandler(this),\n new ClearFilterKeyHandler(this),\n ];\n const mouseHandlers: GridMouseHandler[] = [\n new IrisGridCellOverflowMouseHandler(this),\n new IrisGridRowTreeMouseHandler(this),\n new IrisGridTokenMouseHandler(this),\n new IrisGridColumnSelectMouseHandler(this),\n new IrisGridColumnTooltipMouseHandler(this),\n new IrisGridSortMouseHandler(this),\n new IrisGridFilterMouseHandler(this),\n new IrisGridContextMenuHandler(this, dh),\n new IrisGridDataSelectMouseHandler(this),\n new PendingMouseHandler(this),\n new IrisGridPartitionedTableMouseHandler(this),\n ];\n if (canCopy) {\n keyHandlers.push(new CopyKeyHandler(this));\n mouseHandlers.push(new IrisGridCopyCellMouseHandler(this));\n }\n const movedColumns =\n movedColumnsProp.length > 0\n ? movedColumnsProp\n : model.initialMovedColumns;\n const movedRows =\n movedRowsProp.length > 0 ? movedRowsProp : model.initialMovedRows;\n\n const metricCalculator = new IrisGridMetricCalculator({\n userColumnWidths: new Map(userColumnWidths),\n userRowHeights: new Map(userRowHeights),\n movedColumns,\n initialColumnWidths: new Map(\n model?.layoutHints?.hiddenColumns?.map(name => [\n model.getColumnIndexByName(name),\n 0,\n ])\n ),\n });\n const searchColumns = selectedSearchColumns ?? [];\n const searchFilter = CrossColumnSearch.createSearchFilter(\n dh,\n searchValue,\n searchColumns,\n model.columns,\n invertSearchColumns\n );\n\n this.tableUtils = new TableUtils(dh);\n\n this.mouseHandlers = mouseHandlers;\n this.keyHandlers = keyHandlers;\n\n this.state = {\n isFilterBarShown,\n isSelectingPartition,\n focusedFilterBarColumn: null,\n metricCalculator,\n metrics: undefined,\n\n partitionConfig:\n partitionConfig ??\n (partitions && partitions.length\n ? { partitions, mode: 'partition' }\n : undefined),\n\n // setAdvancedFilter and setQuickFilter mutate the arguments\n // so we want to always use map copies from the state instead of props\n quickFilters: quickFilters ? new Map(quickFilters) : new Map(),\n advancedFilters: new Map(advancedFilters),\n shownAdvancedFilter: null,\n hoverAdvancedFilter: null,\n sorts: [],\n reverse: false,\n customColumns: [],\n selectDistinctColumns,\n\n // selected range in table\n selectedRanges: [],\n\n // Current ongoing copy operation\n copyOperation: null,\n\n // The filter that is currently being applied. Reset after update is received\n loadingText: null,\n loadingScrimProgress: null,\n loadingSpinnerShown: false,\n loadingCancelShown: false,\n loadingBlocksGrid: false,\n\n movedColumns,\n movedRows,\n\n shownColumnTooltip: null,\n\n formatter: new Formatter(dh),\n isMenuShown: false,\n customColumnFormatMap: new Map(customColumnFormatMap),\n columnAlignmentMap: new Map(columnAlignmentMap),\n\n conditionalFormats,\n conditionalFormatEditIndex: null,\n conditionalFormatPreview: undefined,\n\n // Column user is hovering over for selection\n hoverSelectColumn: null,\n\n isTableDownloading: false,\n isReady: false,\n tableDownloadStatus: '',\n tableDownloadProgress: 0,\n tableDownloadEstimatedTime: 0,\n\n showSearchBar,\n searchFilter,\n searchValue,\n selectedSearchColumns: searchColumns,\n invertSearchColumns,\n\n rollupConfig,\n rollupSelectedColumns: [],\n aggregationSettings:\n // Pin aggregations to the top if the grid is editable, so that the bottom is reserved for pending rows\n isEditableGridModel(model) && model.isEditable\n ? { ...aggregationSettings, showOnTop: true }\n : aggregationSettings,\n selectedAggregation: null,\n\n openOptions: [],\n\n pendingRowCount: 0,\n pendingDataMap: pendingDataMap ?? new Map(),\n pendingDataErrors: new Map(),\n pendingSavePromise: null,\n pendingSaveError: null,\n\n toastMessage: null,\n frozenColumns,\n showOverflowModal: false,\n showNoPastePermissionModal: false,\n noPastePermissionError: '',\n overflowText: '',\n overflowButtonTooltipProps: null,\n expandCellTooltipProps: null,\n expandTooltipDisplayValue: 'expand',\n hoverTooltipProps: null,\n hoverDisplayValue: '',\n isGotoShown: false,\n gotoRow: '',\n gotoRowError: '',\n gotoValueError: '',\n\n gotoValueSelectedColumnName: model.columns[0]?.name ?? '',\n gotoValueSelectedFilter: FilterType.eqIgnoreCase,\n gotoValue: '',\n gotoValueManuallyChanged: false,\n columnHeaderGroups: columnHeaderGroups ?? model.initialColumnHeaderGroups,\n };\n }\n\n componentDidMount(): void {\n const { model } = this.props;\n this.initState();\n this.startListening(model);\n }\n\n componentDidUpdate(prevProps: IrisGridProps, prevState: IrisGridState): void {\n const {\n inputFilters,\n isSelectingColumn,\n settings,\n model,\n customFilters,\n sorts,\n } = this.props;\n\n if (model !== prevProps.model) {\n this.stopListening(prevProps.model);\n this.startListening(model);\n }\n\n const changedInputFilters =\n inputFilters !== prevProps.inputFilters\n ? inputFilters.filter(\n inputFilter => !prevProps.inputFilters.includes(inputFilter)\n )\n : [];\n if (changedInputFilters.length > 0) {\n const { advancedSettings } = this.props;\n const replaceExistingFilters =\n advancedSettings.get(\n AdvancedSettingsType.FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS\n ) ?? false;\n if (replaceExistingFilters) {\n this.clearGridInputField();\n this.clearCrossColumSearch();\n }\n this.startLoading('Filtering...', { resetRanges: true });\n this.applyInputFilters(changedInputFilters, replaceExistingFilters);\n }\n\n if (isSelectingColumn !== prevProps.isSelectingColumn) {\n this.resetColumnSelection();\n }\n if (settings !== prevProps.settings) {\n this.updateFormatterSettings(settings);\n }\n if (customFilters !== prevProps.customFilters) {\n this.startLoading('Filtering...', { resetRanges: true });\n }\n if (sorts !== prevProps.sorts) {\n this.updateSorts(sorts);\n }\n const { loadingScrimStartTime, loadingScrimFinishTime } = this;\n if (loadingScrimStartTime != null && loadingScrimFinishTime != null) {\n window.requestAnimationFrame(() => {\n const now = Date.now();\n const currentTime = now - loadingScrimStartTime;\n const totalTime = loadingScrimFinishTime - loadingScrimStartTime;\n const loadingScrimProgress = Math.min(currentTime / totalTime, 1);\n if (loadingScrimFinishTime < now) {\n this.loadingScrimStartTime = undefined;\n this.loadingScrimFinishTime = undefined;\n }\n\n this.setState(state => {\n if (state.loadingScrimProgress == null) {\n log.debug2('Ignoring scrim update because loading cancelled.');\n return null;\n }\n\n return { loadingScrimProgress };\n });\n });\n }\n\n const { openOptions } = this.state;\n if (openOptions !== prevState.openOptions) {\n const isAggEditType = (option: OptionItem): boolean =>\n option.type === OptionType.AGGREGATION_EDIT;\n if (\n !openOptions.some(isAggEditType) &&\n prevState.openOptions.some(isAggEditType)\n ) {\n this.removeEmptyAggregations();\n }\n }\n\n this.sendStateChange();\n }\n\n componentWillUnmount(): void {\n const { model } = this.props;\n this.stopListening(model);\n this.pending.cancel();\n this.updateSearchFilter.cancel();\n\n if (this.loadingTimer) {\n clearTimeout(this.loadingTimer);\n }\n this.handleDownloadProgressUpdate.cancel();\n if (this.animationFrame !== undefined) {\n cancelAnimationFrame(this.animationFrame);\n }\n\n this.showViewportLoading.cancel();\n }\n\n grid: Grid | null;\n\n lastFocusedFilterBarColumn?: number;\n\n lastLoadedConfig: Pick<\n IrisGridState,\n | 'advancedFilters'\n | 'aggregationSettings'\n | 'customColumns'\n | 'quickFilters'\n | 'reverse'\n | 'rollupConfig'\n | 'searchFilter'\n | 'selectDistinctColumns'\n | 'sorts'\n > | null;\n\n tooltip?: Tooltip;\n\n pending: Pending;\n\n globalColumnFormats?: readonly FormattingRule[];\n\n dateTimeFormatterOptions?: DateTimeColumnFormatterOptions;\n\n decimalFormatOptions: { defaultFormatString?: string };\n\n integerFormatOptions: { defaultFormatString?: string };\n\n truncateNumbersWithPound: boolean;\n\n showEmptyStrings: boolean;\n\n showNullStrings: boolean;\n\n showExtraGroupColumn: boolean;\n\n // When the loading scrim started/when it should extend to the end of the screen.\n loadingScrimStartTime?: number;\n\n loadingScrimFinishTime?: number;\n\n animationFrame?: number;\n\n loadingTimer?: ReturnType<typeof setTimeout>;\n\n tableSaver: TableSaver | null;\n\n crossColumnRef: React.RefObject<CrossColumnSearch>;\n\n isAnimating: boolean;\n\n filterInputRef: React.RefObject<FilterInputField>;\n\n gotoRowRef: React.RefObject<GotoRowElement>;\n\n isCopying: boolean;\n\n toggleFilterBarAction: Action;\n\n toggleSearchBarAction: Action;\n\n toggleGotoRowAction: Action;\n\n discardAction: Action;\n\n commitAction: Action;\n\n contextActions: ContextAction[];\n\n tableUtils: TableUtils;\n\n keyHandlers: readonly KeyHandler[];\n\n mouseHandlers: readonly GridMouseHandler[];\n\n slideTransitionRef: React.RefObject<HTMLDivElement> = React.createRef();\n\n bottomTransitionRef: React.RefObject<HTMLDivElement> = React.createRef();\n\n get gridWrapper(): HTMLDivElement | null {\n return this.grid?.canvasWrapper.current ?? null;\n }\n\n getAdvancedMenuOpenedHandler = memoize(\n (column: ModelIndex) => this.handleAdvancedMenuOpened.bind(this, column),\n { max: 100 }\n );\n\n getCachedAdvancedFilterMenuActions = memoize(\n (\n model: IrisGridModel,\n column: DhType.Column,\n advancedFilterOptions: AdvancedFilterOptions | undefined,\n sortDirection: SortDirection | undefined,\n formatter: Formatter\n ) => (\n <AdvancedFilterCreator\n model={model}\n column={column}\n onFilterChange={this.handleAdvancedFilterChange}\n onSortChange={this.handleAdvancedFilterSortChange}\n onDone={this.handleAdvancedFilterDone}\n options={advancedFilterOptions}\n sortDirection={sortDirection}\n formatter={formatter}\n tableUtils={this.tableUtils}\n />\n ),\n { max: 50 }\n );\n\n getCachedOptionItems = memoize(\n (\n isChartBuilderAvailable: boolean,\n isCustomColumnsAvailable: boolean,\n isFormatColumnsAvailable: boolean,\n isOrganizeColumnsAvailable: boolean,\n isRollupAvailable: boolean,\n isTotalsAvailable: boolean,\n isSelectDistinctAvailable: boolean,\n isExportAvailable: boolean,\n toggleFilterBarAction: Action,\n toggleSearchBarAction: Action,\n toggleGotoRowAction: Action,\n isFilterBarShown: boolean,\n showSearchBar: boolean,\n canDownloadCsv: boolean,\n canToggleSearch: boolean,\n showGotoRow: boolean,\n hasAdvancedSettings: boolean\n ): readonly OptionItem[] => {\n const optionItems: OptionItem[] = [];\n if (isChartBuilderAvailable) {\n optionItems.push({\n type: OptionType.CHART_BUILDER,\n title: 'Chart Builder',\n icon: dhGraphLineUp,\n });\n }\n if (isOrganizeColumnsAvailable) {\n optionItems.push({\n type: OptionType.VISIBILITY_ORDERING_BUILDER,\n title: 'Organize Columns',\n icon: dhEye,\n });\n }\n if (isFormatColumnsAvailable) {\n optionItems.push({\n type: OptionType.CONDITIONAL_FORMATTING,\n title: 'Conditional Formatting',\n icon: vsEdit,\n });\n }\n if (isCustomColumnsAvailable) {\n optionItems.push({\n type: OptionType.CUSTOM_COLUMN_BUILDER,\n title: 'Custom Columns',\n icon: vsSplitHorizontal,\n });\n }\n if (isRollupAvailable) {\n optionItems.push({\n type: OptionType.ROLLUP_ROWS,\n title: 'Rollup Rows',\n icon: dhTriangleDownSquare,\n });\n }\n if (isTotalsAvailable) {\n optionItems.push({\n type: OptionType.AGGREGATIONS,\n title: 'Aggregate Columns',\n icon: vsSymbolOperator,\n });\n }\n if (isSelectDistinctAvailable) {\n optionItems.push({\n type: OptionType.SELECT_DISTINCT,\n title: 'Select Distinct Values',\n icon: vsRuby,\n });\n }\n if (isExportAvailable && canDownloadCsv) {\n optionItems.push({\n type: OptionType.TABLE_EXPORTER,\n title: 'Download CSV',\n icon: vsCloudDownload,\n });\n }\n if (hasAdvancedSettings) {\n optionItems.push({\n type: OptionType.ADVANCED_SETTINGS,\n title: 'Advanced Settings',\n icon: vsTools,\n });\n }\n optionItems.push({\n type: OptionType.QUICK_FILTERS,\n title: 'Quick Filters',\n subtitle: toggleFilterBarAction.shortcut.getDisplayText(),\n icon: vsFilter,\n isOn: isFilterBarShown,\n onChange: toggleFilterBarAction.action,\n });\n if (canToggleSearch) {\n optionItems.push({\n type: OptionType.SEARCH_BAR,\n title: 'Search Bar',\n subtitle: toggleSearchBarAction.shortcut.getDisplayText(),\n icon: vsSearch,\n isOn: showSearchBar,\n onChange: toggleSearchBarAction.action,\n });\n }\n optionItems.push({\n type: OptionType.GOTO,\n title: 'Go to',\n subtitle: toggleGotoRowAction.shortcut.getDisplayText(),\n icon: vsReply,\n isOn: showGotoRow,\n onChange: toggleGotoRowAction.action,\n });\n\n return Object.freeze(optionItems);\n },\n { max: 1 }\n );\n\n getCachedHiddenColumns = memoize(\n (\n metricCalculator: IrisGridMetricCalculator,\n userColumnWidths: ModelSizeMap\n ): readonly ModelIndex[] =>\n IrisGridUtils.getHiddenColumns(\n new Map([...metricCalculator.initialColumnWidths, ...userColumnWidths])\n ),\n { max: 1 }\n );\n\n getAggregationMap = memoize(\n (\n columns: readonly DhType.Column[],\n aggregations: readonly Aggregation[]\n ): ReadonlyAggregationMap => {\n const aggregationMap = {} as Record<AggregationOperation, string[]>;\n aggregations.forEach(({ operation, selected, invert }) => {\n aggregationMap[operation] = AggregationUtils.getOperationColumnNames(\n columns,\n operation,\n selected,\n invert\n );\n });\n return aggregationMap;\n },\n { max: 1 }\n );\n\n getOperationMap = memoize(\n (\n columns: readonly DhType.Column[],\n aggregations: readonly Aggregation[]\n ): OperationMap => {\n const operationMap: OperationMap = {};\n aggregations\n .filter(\n (a: Aggregation) => !AggregationUtils.isRollupOperation(a.operation)\n )\n .forEach(({ operation, selected, invert }) => {\n AggregationUtils.getOperationColumnNames(\n columns,\n operation,\n selected,\n invert\n ).forEach(name => {\n const newOperations = [...(operationMap[name] ?? []), operation];\n operationMap[name] = Object.freeze(newOperations);\n });\n });\n return operationMap;\n },\n { max: 1 }\n );\n\n getOperationOrder = memoize(\n (aggregations: readonly Aggregation[]): AggregationOperation[] =>\n aggregations\n .map((a: Aggregation) => a.operation)\n .filter(\n (o: AggregationOperation) => !AggregationUtils.isRollupOperation(o)\n ),\n { max: 1 }\n );\n\n getCachedFormatColumns = memoize(\n (\n dh: typeof DhType,\n columns: readonly DhType.Column[],\n rules: readonly SidebarFormattingRule[]\n ) => getFormatColumns(dh, columns, rules),\n { max: 1000 }\n );\n\n /**\n * Builds formatColumns array based on the provided formatting rules with optional preview\n * @param columns Array of columns\n * @param rulesParam Array of formatting rules\n * @param preview Optional temporary formatting rule for previewing live changes\n * @param editIndex Index in the rulesParam array to replace with the preview, null if preview not applicable\n * @returns Format columns array\n */\n getCachedPreviewFormatColumns = memoize(\n (\n dh: typeof DhType,\n columns: readonly DhType.Column[],\n rulesParam: readonly SidebarFormattingRule[],\n preview?: SidebarFormattingRule,\n editIndex?: number\n ): DhType.CustomColumn[] => {\n log.debug(\n 'getCachedPreviewFormatColumns',\n rulesParam,\n preview,\n editIndex\n );\n if (preview !== undefined && editIndex !== undefined) {\n const rules = [...rulesParam];\n rules[editIndex] = preview;\n return this.getCachedFormatColumns(dh, columns, rules);\n }\n\n return this.getCachedFormatColumns(dh, columns, rulesParam);\n },\n { max: 1 }\n );\n\n getModelRollupConfig = memoize(\n (\n originalColumns: readonly DhType.Column[],\n config: UIRollupConfig | undefined,\n aggregationSettings: AggregationSettings\n ) =>\n IrisGridUtils.getModelRollupConfig(\n originalColumns,\n config,\n aggregationSettings\n ),\n { max: 1 }\n );\n\n getModelTotalsConfig = memoize(\n (\n columns: readonly DhType.Column[],\n config: UIRollupConfig | undefined,\n aggregationSettings: AggregationSettings\n ): UITotalsTableConfig | null => {\n if ((config?.columns?.length ?? 0) > 0) {\n // If we've got rollups, then aggregations are applied as part of that...\n return null;\n }\n\n // Filter out aggregations without any columns actually selected\n const aggregations = aggregationSettings.aggregations.filter(\n agg => agg.selected.length > 0 || agg.invert\n );\n if (aggregations.length === 0) {\n // We don't actually have any aggregations set, don't bother\n return null;\n }\n\n const operationMap = this.getOperationMap(columns, aggregations);\n const operationOrder = this.getOperationOrder(aggregations);\n\n return {\n operationMap,\n operationOrder,\n showOnTop: aggregationSettings.showOnTop,\n defaultOperation: AggregationOperation.SKIP,\n } as UITotalsTableConfig;\n },\n { max: 1 }\n );\n\n getCachedStateOverride = memoize(\n (\n hoverSelectColumn: GridRangeIndex,\n isFilterBarShown: boolean,\n isSelectingColumn: boolean,\n loadingScrimProgress: number | null,\n quickFilters: ReadonlyQuickFilterMap,\n advancedFilters: ReadonlyAdvancedFilterMap,\n sorts: readonly DhType.Sort[],\n reverse: boolean,\n rollupConfig: UIRollupConfig | undefined,\n isMenuShown: boolean\n ): Partial<IrisGridState & IrisGridProps> => ({\n hoverSelectColumn,\n isFilterBarShown,\n isSelectingColumn,\n loadingScrimProgress,\n quickFilters,\n advancedFilters,\n sorts,\n reverse,\n rollupConfig,\n isMenuShown,\n }),\n { max: 1 }\n );\n\n getCachedFilter = memoize(\n (\n customFilters: readonly DhType.FilterCondition[],\n quickFilters: ReadonlyQuickFilterMap,\n advancedFilters: ReadonlyAdvancedFilterMap,\n searchFilter: DhType.FilterCondition | undefined\n ) => [\n ...(customFilters ?? []),\n ...IrisGridUtils.getFiltersFromFilterMap(quickFilters),\n ...IrisGridUtils.getFiltersFromFilterMap(advancedFilters),\n ...(searchFilter !== undefined ? [searchFilter] : []),\n ],\n { max: 1 }\n );\n\n getCachedTheme = memoize(\n (\n contextTheme: IrisGridThemeType | null,\n theme: Partial<IrisGridThemeType> | undefined,\n isEditable: boolean,\n floatingRowCount: number,\n density: 'compact' | 'regular' | 'spacious'\n ): IrisGridThemeType => {\n // If a theme is available via context, use that as the base theme.\n // If iris-grid is standalone without a context, use the default theme.\n const baseTheme = contextTheme ?? createDefaultIrisGridTheme();\n\n // We only show the row footers when we have floating rows for aggregations\n const rowFooterWidth =\n floatingRowCount > 0\n ? theme?.rowFooterWidth ?? baseTheme.rowFooterWidth\n : 0;\n\n const { metricCalculator } = this.state;\n if (metricCalculator != null) {\n metricCalculator.resetCalculatedColumnWidths();\n metricCalculator.resetCalculatedRowHeights();\n }\n\n let densityTheme = {};\n if (density === 'compact') {\n densityTheme = baseTheme.density.compact;\n } else if (density === 'spacious') {\n densityTheme = baseTheme.density.spacious;\n }\n\n return {\n ...baseTheme,\n ...densityTheme,\n ...theme,\n autoSelectRow: !isEditable,\n rowFooterWidth,\n };\n },\n { max: 1 }\n );\n\n getCachedKeyHandlers = memoize(\n (keyHandlers: readonly KeyHandler[]) =>\n [...keyHandlers, ...this.keyHandlers].sort((a, b) => a.order - b.order),\n { max: 1 }\n );\n\n getKeyHandlers(): readonly KeyHandler[] {\n const { keyHandlers } = this.props;\n return this.getCachedKeyHandlers(keyHandlers);\n }\n\n getCachedMouseHandlers = memoize(\n (\n mouseHandlers: readonly GridMouseHandler[]\n ): readonly GridMouseHandler[] => [...mouseHandlers, ...this.mouseHandlers],\n { max: 1 }\n );\n\n getCachedRenderer = memoize(\n (rendererProp?: IrisGridRenderer) => rendererProp ?? new IrisGridRenderer(),\n { max: 1 }\n );\n\n get renderer(): IrisGridRenderer {\n const { renderer } = this.props;\n return this.getCachedRenderer(renderer);\n }\n\n getMouseHandlers(): readonly GridMouseHandler[] {\n const { mouseHandlers } = this.props;\n return this.getCachedMouseHandlers(mouseHandlers);\n }\n\n getValueForCell(\n columnIndex: GridRangeIndex,\n rowIndex: GridRangeIndex,\n rawValue = false\n ): string | unknown {\n const { model } = this.props;\n const { dh } = model;\n const modelColumn = this.getModelColumn(columnIndex);\n const modelRow = this.getModelRow(rowIndex);\n if (rawValue && modelColumn != null && modelRow != null) {\n const value = model.valueForCell(modelColumn, modelRow);\n if (TableUtils.isDateType(model.columns[modelColumn].type)) {\n // The returned value is just a long value, we should return the value formatted as a full date string\n const { formatter } = model;\n return dh.i18n.DateTimeFormat.format(\n UNFORMATTED_DATE_PATTERN,\n value as number | Date | DhType.DateWrapper,\n dh.i18n.TimeZone.getTimeZone(formatter.timeZone)\n );\n }\n return value;\n }\n if (rawValue) {\n return null;\n }\n if (modelColumn != null && modelRow != null) {\n return model.textForCell(modelColumn, modelRow);\n }\n return '';\n }\n\n getModelColumn(columnIndex: GridRangeIndex): ModelIndex | null | undefined {\n const { metrics } = this.state;\n assertNotNull(metrics);\n const { modelColumns } = metrics;\n if (modelColumns == null) {\n return null;\n }\n\n return columnIndex != null ? modelColumns.get(columnIndex) : null;\n }\n\n getModelRow(rowIndex: GridRangeIndex): ModelIndex | null | undefined {\n const { metrics } = this.state;\n assertNotNull(metrics);\n const { modelRows } = metrics;\n if (modelRows == null) {\n return null;\n }\n\n return rowIndex != null ? modelRows.get(rowIndex) : null;\n }\n\n getTheme(): IrisGridThemeType {\n const { model, theme, density } = this.props;\n const { theme: contextTheme, density: contextDensity } = this.context;\n\n return this.getCachedTheme(\n contextTheme,\n theme,\n (isEditableGridModel(model) && model.isEditable) ?? false,\n model.floatingTopRowCount + model.floatingBottomRowCount,\n density ?? contextDensity\n );\n }\n\n getVisibleColumn(modelIndex: ModelIndex): VisibleIndex {\n const { movedColumns } = this.state;\n return GridUtils.getVisibleIndex(modelIndex, movedColumns);\n }\n\n makeQuickFilter(\n column: DhType.Column,\n text: string,\n timeZone: string\n ): DhType.FilterCondition | null {\n try {\n return this.tableUtils.makeQuickFilter(column, text, timeZone);\n } catch (err) {\n log.error('Error creating quick filter', err);\n }\n return null;\n }\n\n /**\n * Applies the provided input filters as quick filters,\n * and clears any existing quickFilters or advancedFilters on that column\n * @param inputFilters Array of input filters to apply\n * @param replaceExisting If true, new filters will replace the existing ones, instead of merging\n */\n applyInputFilters(\n inputFilters: InputFilter[],\n replaceExisting = false\n ): void {\n const { model } = this.props;\n const { advancedFilters, quickFilters } = this.state;\n const newAdvancedFilters = replaceExisting\n ? new Map()\n : new Map(advancedFilters);\n const newQuickFilters = replaceExisting ? new Map() : new Map(quickFilters);\n\n let isChanged = replaceExisting && advancedFilters.size > 0;\n inputFilters.forEach(({ name, type, value }) => {\n const modelIndex = model.columns.findIndex(\n ({ name: columnName, type: columnType }) =>\n columnName === name && columnType === type\n );\n if (modelIndex >= 0) {\n isChanged = newAdvancedFilters.delete(modelIndex) || isChanged;\n isChanged =\n this.applyQuickFilter(modelIndex, value, newQuickFilters) ||\n isChanged;\n } else {\n log.error('Unable to find column for inputFilter', name, type, value);\n }\n });\n if (isChanged) {\n this.setState({\n quickFilters: newQuickFilters,\n advancedFilters: newAdvancedFilters,\n });\n }\n }\n\n /**\n * Applies a quick filter\n * @param modelIndex The index in the model of the column to set\n * @param value The string value to set to the quick filter\n * @param quickFilters The quick filters map\n * @returns True if the filters have changed because this quick filter was applied\n */\n applyQuickFilter(\n modelIndex: ModelIndex,\n value: string | null,\n quickFilters: QuickFilterMap\n ): boolean {\n const { model } = this.props;\n const { formatter } = model;\n const column = model.columns[modelIndex];\n\n if (value != null && `${value}`.trim().length > 0) {\n const quickFilter = quickFilters.get(modelIndex);\n if (quickFilter != null) {\n const { text } = quickFilter;\n if (text === value) {\n log.debug2('Ignoring change to existing filter');\n return false;\n }\n }\n quickFilters.set(modelIndex, {\n text: value,\n filter: this.makeQuickFilter(column, value, formatter.timeZone),\n });\n return true;\n }\n return quickFilters.delete(modelIndex);\n }\n\n setAdvancedFilterMap(advancedFilters: ReadonlyAdvancedFilterMap): void {\n this.setState({ advancedFilters });\n }\n\n setAdvancedFilter(\n modelIndex: ModelIndex,\n filter: DhType.FilterCondition | null,\n options: AdvancedFilterOptions\n ): void {\n log.debug('Setting advanced filter', modelIndex, filter);\n\n this.startLoading('Filtering...', { resetRanges: true });\n\n this.setState(({ advancedFilters }) => {\n const newAdvancedFilters = new Map(advancedFilters);\n if (filter == null) {\n newAdvancedFilters.delete(modelIndex);\n } else {\n newAdvancedFilters.set(modelIndex, {\n filter,\n options,\n });\n }\n return { advancedFilters: newAdvancedFilters };\n });\n }\n\n /**\n * Sets a quick filter against the provided column\n * @param modelIndex The index in the model for the column this filter is applied to\n * @param filter A filter to apply to the column, or null if there was an error\n * @param text The original text the filter was created with\n */\n setQuickFilter(\n modelIndex: ModelIndex,\n filter: DhType.FilterCondition | null,\n text: string\n ): void {\n log.debug('Setting quick filter', modelIndex, filter, text);\n\n this.startLoading('Filtering...', { resetRanges: true });\n\n this.setState(({ quickFilters }) => {\n const newQuickFilters = new Map(quickFilters);\n newQuickFilters.set(modelIndex, { filter, text });\n return { quickFilters: newQuickFilters };\n });\n }\n\n /**\n * Set grid filters based on the filter map\n * @param filterMap Filter map\n */\n setFilterMap(filterMap: FilterMap): void {\n log.debug('setFilterMap', filterMap);\n\n const { advancedSettings } = this.props;\n const clearFiltersOnLinkerFilterUpdate =\n advancedSettings.get(\n AdvancedSettingsType.LINK_CHANGE_CLEARS_ALL_FILTERS\n ) ?? false;\n if (clearFiltersOnLinkerFilterUpdate) {\n this.clearAllFilters();\n }\n\n const { model } = this.props;\n filterMap.forEach(({ columnType, filterList }, columnName) => {\n const column = model.columns.find(\n c => c.name === columnName && c.type === columnType\n );\n if (column == null) {\n return;\n }\n const columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n const combinedText = IrisGridUtils.combineFiltersFromList(\n columnType,\n filterList\n );\n if (combinedText.length === 0) {\n this.removeQuickFilter(columnIndex);\n } else {\n const { formatter } = model;\n this.setQuickFilter(\n columnIndex,\n this.makeQuickFilter(column, combinedText, formatter.timeZone),\n `${combinedText}`\n );\n }\n });\n }\n\n removeColumnFilter(modelRange: ModelIndex | BoundedAxisRange): void {\n this.startLoading('Filtering...', { resetRanges: true });\n\n const clearRange: BoundedAxisRange = Array.isArray(modelRange)\n ? modelRange\n : [modelRange, modelRange];\n\n this.setState(\n ({ advancedFilters, quickFilters }: Partial<IrisGridState>) => {\n const newAdvancedFilters: AdvancedFilterMap = advancedFilters\n ? new Map(advancedFilters)\n : new Map();\n const newQuickFilters: QuickFilterMap = quickFilters\n ? new Map(quickFilters)\n : new Map();\n newAdvancedFilters.forEach((_, column) => {\n if (column >= clearRange[0] && column <= clearRange[1]) {\n newAdvancedFilters.delete(column);\n }\n });\n newQuickFilters.forEach((_, column) => {\n if (column >= clearRange[0] && column <= clearRange[1]) {\n newQuickFilters.delete(column);\n }\n });\n\n return {\n quickFilters: newQuickFilters,\n advancedFilters: newAdvancedFilters,\n };\n }\n );\n }\n\n removeQuickFilter(modelColumn: ModelIndex): void {\n this.startLoading('Clearing Filter...', { resetRanges: true });\n\n this.setState(({ quickFilters }) => {\n const newQuickFilters = new Map(quickFilters);\n newQuickFilters.delete(modelColumn);\n\n return { quickFilters: newQuickFilters };\n });\n }\n\n clearAllFilters(): void {\n log.debug('Clearing all filters');\n\n const { advancedFilters, quickFilters, searchFilter } = this.state;\n if (\n quickFilters.size === 0 &&\n advancedFilters.size === 0 &&\n searchFilter === null\n ) {\n return;\n }\n\n // if there is an active quick filter input field, reset it as well\n this.clearGridInputField();\n\n this.startLoading('Clearing Filters...', { resetRanges: true });\n this.setState({\n quickFilters: new Map(),\n advancedFilters: new Map(),\n searchValue: '',\n searchFilter: undefined,\n });\n }\n\n clearAllAggregations(): void {\n log.debug('Clearing all aggregations');\n\n this.setState({ aggregationSettings: DEFAULT_AGGREGATION_SETTINGS });\n }\n\n clearCrossColumSearch(): void {\n log.debug('Clearing cross-column search');\n\n this.setState({\n searchValue: '',\n searchFilter: undefined,\n });\n }\n\n clearGridInputField(): void {\n if (this.filterInputRef.current != null) {\n this.filterInputRef.current.setValue('');\n }\n }\n\n /**\n * Rebuilds all the current filters. Necessary if something like the time zone has changed.\n */\n rebuildFilters(): void {\n const { model } = this.props;\n const { advancedFilters, quickFilters } = this.state;\n const { columns, formatter } = model;\n\n log.debug('Rebuilding filters');\n\n const newAdvancedFilters = new Map();\n const newQuickFilters = new Map();\n\n advancedFilters.forEach((value, key) => {\n const { options } = value;\n const column = columns[key];\n const filter = this.tableUtils.makeAdvancedFilter(\n column,\n options,\n formatter.timeZone\n );\n newAdvancedFilters.set(key, {\n options,\n filter,\n });\n });\n\n quickFilters.forEach((value, key) => {\n const { text } = value;\n const column = columns[key];\n newQuickFilters.set(key, {\n text,\n filter: this.makeQuickFilter(column, text, formatter.timeZone),\n });\n });\n this.startLoading('Rebuilding filters...', { resetRanges: true });\n\n this.setState({\n quickFilters: newQuickFilters,\n advancedFilters: newAdvancedFilters,\n });\n }\n\n setFilters({\n quickFilters,\n advancedFilters,\n }: Pick<IrisGridState, 'quickFilters' | 'advancedFilters'>): void {\n this.setState({\n quickFilters,\n advancedFilters,\n });\n }\n\n updateFormatterSettings(settings?: Settings, forceUpdate = true): void {\n const globalColumnFormats = FormatterUtils.getColumnFormats(settings);\n const dateTimeFormatterOptions =\n FormatterUtils.getDateTimeFormatterOptions(settings);\n\n const defaultDecimalFormatOptions =\n settings?.defaultDecimalFormatOptions ?? {};\n const defaultIntegerFormatOptions =\n settings?.defaultIntegerFormatOptions ?? {};\n const truncateNumbersWithPound =\n settings?.truncateNumbersWithPound ?? false;\n\n const showEmptyStrings = settings?.showEmptyStrings ?? true;\n const showNullStrings = settings?.showNullStrings ?? true;\n const showExtraGroupColumn = settings?.showExtraGroupColumn ?? true;\n\n const isColumnFormatChanged = !deepEqual(\n this.globalColumnFormats,\n globalColumnFormats\n );\n const isDateFormattingChanged = !deepEqual(\n this.dateTimeFormatterOptions,\n dateTimeFormatterOptions\n );\n const isDecimalFormattingChanged = !deepEqual(\n this.decimalFormatOptions,\n settings?.defaultDecimalFormatOptions\n );\n const isIntegerFormattingChanged = !deepEqual(\n this.integerFormatOptions,\n defaultIntegerFormatOptions\n );\n const isTruncateNumbersChanged =\n this.truncateNumbersWithPound !== truncateNumbersWithPound;\n const isShowEmptyStringsChanged =\n this.showEmptyStrings !== showEmptyStrings;\n const isShowNullStringsChanged = this.showNullStrings !== showNullStrings;\n const isShowExtraGroupColumnChanged =\n this.showExtraGroupColumn !== showExtraGroupColumn;\n\n if (\n isColumnFormatChanged ||\n isDateFormattingChanged ||\n isDecimalFormattingChanged ||\n isIntegerFormattingChanged ||\n isTruncateNumbersChanged ||\n isShowEmptyStringsChanged ||\n isShowNullStringsChanged ||\n isShowExtraGroupColumnChanged\n ) {\n this.globalColumnFormats = globalColumnFormats;\n this.dateTimeFormatterOptions = dateTimeFormatterOptions;\n this.decimalFormatOptions = defaultDecimalFormatOptions;\n this.integerFormatOptions = defaultIntegerFormatOptions;\n this.truncateNumbersWithPound = truncateNumbersWithPound;\n this.showEmptyStrings = showEmptyStrings;\n this.showNullStrings = showNullStrings;\n this.showExtraGroupColumn = showExtraGroupColumn;\n this.updateFormatter({}, forceUpdate);\n\n if (isDateFormattingChanged && forceUpdate) {\n this.rebuildFilters();\n }\n }\n }\n\n getAlwaysFetchColumns = memoize(\n (\n alwaysFetchColumns: readonly ColumnName[],\n columns: readonly DhType.Column[],\n movedColumns: readonly MoveOperation[],\n floatingLeftColumnCount: number,\n floatingRightColumnCount: number,\n draggingRange?: BoundedAxisRange\n ): readonly ColumnName[] => {\n const floatingColumns: ColumnName[] = [];\n\n for (let i = 0; i < floatingLeftColumnCount; i += 1) {\n floatingColumns.push(\n columns[GridUtils.getModelIndex(i, movedColumns)].name\n );\n }\n\n for (let i = 0; i < floatingRightColumnCount; i += 1) {\n floatingColumns.push(\n columns[GridUtils.getModelIndex(columns.length - 1 - i, movedColumns)]\n .name\n );\n }\n\n if (draggingRange) {\n for (let i = draggingRange[0]; i <= draggingRange[1]; i += 1) {\n floatingColumns.push(\n columns[GridUtils.getModelIndex(i, movedColumns)].name\n );\n }\n }\n\n const columnSet = new Set([...alwaysFetchColumns, ...floatingColumns]);\n\n return Object.freeze([...columnSet]);\n },\n { max: 1 }\n );\n\n updateFormatter(\n updatedFormats: { customColumnFormatMap?: Map<ColumnName, FormattingRule> },\n forceUpdate = true\n ): void {\n const { customColumnFormatMap } = this.state;\n const { model } = this.props;\n const update = {\n customColumnFormatMap,\n ...updatedFormats,\n };\n const mergedColumnFormats = [\n ...(this.globalColumnFormats ?? []),\n ...update.customColumnFormatMap.values(),\n ];\n const formatter = new Formatter(\n model.dh,\n mergedColumnFormats,\n this.dateTimeFormatterOptions,\n this.decimalFormatOptions,\n this.integerFormatOptions,\n this.truncateNumbersWithPound,\n this.showEmptyStrings,\n this.showNullStrings\n );\n\n log.debug('updateFormatter', this.globalColumnFormats, mergedColumnFormats);\n\n this.setState({ ...update, formatter }, () => {\n if (forceUpdate && this.grid) {\n this.grid.forceUpdate();\n }\n });\n }\n\n initFormatter(): void {\n const { settings } = this.props;\n this.updateFormatterSettings(settings);\n }\n\n initState(): void {\n const { model } = this.props;\n try {\n if (isPartitionedGridModel(model) && model.isPartitionRequired) {\n this.loadPartitionsTable(model);\n } else {\n this.loadTableState();\n }\n } catch (error) {\n this.handleTableLoadError(error);\n }\n }\n\n loadTableState(): void {\n const {\n applyInputFiltersOnInit,\n inputFilters,\n sorts,\n model,\n reverse,\n reverseType,\n customColumns,\n searchValue,\n selectedSearchColumns,\n invertSearchColumns,\n } = this.props;\n\n const searchColumns = selectedSearchColumns ?? [];\n const searchFilter = CrossColumnSearch.createSearchFilter(\n model.dh,\n searchValue,\n searchColumns,\n model.columns,\n invertSearchColumns\n );\n\n if (applyInputFiltersOnInit) {\n // There may be more than one input filter on the same column with value === '' applied last\n // We don't want to skip it here, so only excluding the ones that were never applied (null)\n const inputFiltersWithValues = inputFilters.filter(\n inputFilter => inputFilter.value != null\n );\n this.applyInputFilters(inputFiltersWithValues);\n }\n\n this.setState({\n sorts,\n reverse: reverse || reverseType === TableUtils.REVERSE_TYPE.POST_SORT,\n customColumns,\n isReady: true,\n searchFilter,\n });\n this.initFormatter();\n }\n\n async loadPartitionsTable(model: PartitionedGridModel): Promise<void> {\n try {\n const { partitionConfig } = this.state;\n if (!partitionConfig) {\n this.startLoading('Loading partitions...', {\n loadingCancelShown: false,\n resetRanges: true,\n });\n this.initializePartitionConfig(model);\n }\n this.setState({ isSelectingPartition: true }, this.loadTableState);\n } catch (error) {\n if (!PromiseUtils.isCanceled(error)) {\n this.handleTableLoadError(error);\n }\n }\n }\n\n /**\n * Initialize the partition config to the default partition.\n */\n async initializePartitionConfig(model: PartitionedGridModel): Promise<void> {\n const keyTable = await this.pending.add(\n model.partitionKeysTable(),\n resolved => resolved.close()\n );\n const { dh } = model;\n\n const sorts = keyTable.columns.map(column => column.sort().desc());\n keyTable.applySort(sorts);\n keyTable.setViewport(0, 0);\n\n // We want to wait for the first UPDATED event instead of just getting viewport data here\n // It's possible that the key table does not have any rows of data yet, so just wait until it does have one\n keyTable.addEventListener(\n dh.Table.EVENT_UPDATED,\n (event: DhType.Event<DhType.ViewportData>) => {\n try {\n const { detail: data } = event;\n if (data.rows.length === 0) {\n // We received an update and the table is still empty. Stop showing the loading spinner so we know\n this.stopLoading();\n return;\n }\n const row = data.rows[0];\n const values = keyTable.columns.map(column => row.get(column));\n const newPartition: PartitionConfig = {\n partitions: values,\n mode: model.isPartitionAwareSourceTable ? 'partition' : 'keys',\n };\n keyTable.close();\n this.setState({\n loadingSpinnerShown: false,\n partitionConfig: newPartition,\n });\n } catch (e) {\n keyTable.close();\n log.error('Error getting initial partition config', e);\n }\n }\n );\n }\n\n /**\n * Selects a partition key from the table based on the provided row index.\n *\n * @param rowIndex The index of the row from which the partition will be selected.\n * @returns A promise that resolves when the partition key has been successfully selected.\n */\n selectPartitionKeyFromTable(rowIndex: GridRangeIndex): void {\n const { model } = this.props;\n assertNotNull(rowIndex);\n if (isPartitionedGridModel(model)) {\n const data = this.getRowDataMap(rowIndex);\n const partitionColumnSet = new Set(\n model.partitionColumns.map(column => column.name)\n );\n const values = Object.entries(data)\n .filter(([key, _]) => partitionColumnSet.has(key))\n .map(([key, columnData]) => columnData.value);\n const newPartition: PartitionConfig = {\n partitions: values,\n mode: 'partition',\n };\n this.setState({\n isSelectingPartition: true,\n partitionConfig: newPartition,\n });\n }\n }\n\n copyCell(\n columnIndex: GridRangeIndex,\n rowIndex: GridRangeIndex,\n rawValue = false\n ): void {\n const { canCopy } = this.props;\n if (canCopy) {\n const value = String(\n this.getValueForCell(columnIndex, rowIndex, rawValue)\n );\n copyToClipboard(value).catch(e => log.error('Unable to copy cell', e));\n } else {\n log.error('Attempted to copyCell for user without copy permission.');\n }\n }\n\n copyColumnHeader(columnIndex: GridRangeIndex, columnDepth = 0): void {\n if (columnIndex === null) {\n return;\n }\n const { canCopy } = this.props;\n const { movedColumns } = this.state;\n\n if (canCopy) {\n const copyOperation = {\n columnIndex,\n columnDepth,\n movedColumns,\n };\n this.setState({ copyOperation });\n } else {\n log.error('Attempted copyColumnHeader for user without copy permission.');\n }\n }\n\n /**\n * Copy the provided ranges to the clipboard\n * @paramranges The ranges to copy\n * @param includeHeaders Include the headers or not\n * @param formatValues Whether to format values or not\n * @param error Error message if one occurred\n */\n copyRanges(\n ranges: readonly GridRange[],\n includeHeaders = false,\n formatValues = true,\n error?: string\n ): void {\n const { model, canCopy } = this.props;\n const { metricCalculator, movedColumns } = this.state;\n const userColumnWidths = metricCalculator.getUserColumnWidths();\n\n if (canCopy) {\n const copyOperation = {\n ranges: GridRange.boundedRanges(\n ranges,\n model.columnCount,\n model.rowCount\n ),\n includeHeaders,\n formatValues,\n movedColumns,\n userColumnWidths,\n error,\n };\n\n this.setState({ copyOperation });\n } else {\n log.error('Attempted copyRanges for user without copy permission.');\n }\n }\n\n startLoading(\n loadingText: string,\n {\n resetRanges = false,\n loadingCancelShown = true,\n loadingBlocksGrid = true,\n } = {}\n ): void {\n this.setState({ loadingText, loadingCancelShown, loadingBlocksGrid });\n\n const theme = this.getTheme();\n\n if (resetRanges && this.grid) {\n this.grid.clearSelectedRanges();\n this.grid.setViewState({ top: 0 }, true);\n }\n\n if (this.loadingScrimStartTime == null) {\n const { minScrimTransitionTime, maxScrimTransitionTime } = theme;\n assertNotNull(minScrimTransitionTime);\n assertNotNull(maxScrimTransitionTime);\n const height = this.gridWrapper?.getBoundingClientRect().height ?? 0;\n const scrimTransitionTime = Math.max(\n minScrimTransitionTime,\n Math.min(height / 2, maxScrimTransitionTime)\n );\n this.loadingScrimStartTime = Date.now();\n this.loadingScrimFinishTime =\n this.loadingScrimStartTime + scrimTransitionTime;\n this.setState({\n loadingScrimProgress: 0,\n });\n this.loadingTimer = setTimeout(() => {\n this.setState({\n loadingSpinnerShown: true,\n });\n }, IrisGrid.loadingSpinnerDelay);\n }\n }\n\n stopLoading(): void {\n this.showViewportLoading.cancel();\n this.loadingScrimStartTime = undefined;\n this.loadingScrimFinishTime = undefined;\n this.setState({\n loadingText: null,\n loadingScrimProgress: null,\n loadingSpinnerShown: false,\n loadingCancelShown: false,\n });\n\n if (this.loadingTimer != null) {\n clearTimeout(this.loadingTimer);\n this.loadingTimer = undefined;\n }\n }\n\n /**\n * Rolls back the table state to the last known safe state, or if that's not available then clears all sorts/filters/custom columns.\n */\n rollback(): void {\n if (this.lastLoadedConfig) {\n log.debug('loading last loading config', this.lastLoadedConfig);\n const {\n advancedFilters,\n aggregationSettings,\n customColumns,\n quickFilters,\n reverse,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts,\n } = this.lastLoadedConfig;\n\n this.lastLoadedConfig = null;\n this.setState({\n advancedFilters,\n aggregationSettings,\n customColumns,\n quickFilters,\n reverse,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts,\n });\n } else {\n log.debug('remove all sorts, filters, and custom columns');\n this.setState({\n advancedFilters: new Map(),\n aggregationSettings: DEFAULT_AGGREGATION_SETTINGS,\n customColumns: [],\n quickFilters: new Map(),\n reverse: false,\n rollupConfig: undefined,\n selectDistinctColumns: [],\n sorts: [],\n });\n }\n }\n\n /**\n * Check if we can rollback the current state to a safe state.\n * @returns true if there's a previously known safe state or if some of the current state isn't empty.\n */\n canRollback(): boolean {\n return this.lastLoadedConfig != null || !isEmptyConfig(this.state);\n }\n\n startListening(model: IrisGridModel): void {\n model.addEventListener(IrisGridModel.EVENT.UPDATED, this.handleUpdate);\n model.addEventListener(\n IrisGridModel.EVENT.REQUEST_FAILED,\n this.handleRequestFailed\n );\n model.addEventListener(\n IrisGridModel.EVENT.COLUMNS_CHANGED,\n this.handleCustomColumnsChanged\n );\n model.addEventListener(\n IrisGridModel.EVENT.PENDING_DATA_UPDATED,\n this.handlePendingDataUpdated\n );\n model.addEventListener(\n IrisGridModel.EVENT.VIEWPORT_UPDATED,\n this.handleViewportUpdated\n );\n model.addEventListener(\n IrisGridModel.EVENT.TABLE_CHANGED,\n this.handleTableChanged\n );\n }\n\n stopListening(model: IrisGridModel): void {\n model.removeEventListener(IrisGridModel.EVENT.UPDATED, this.handleUpdate);\n model.removeEventListener(\n IrisGridModel.EVENT.REQUEST_FAILED,\n this.handleRequestFailed\n );\n model.removeEventListener(\n IrisGridModel.EVENT.COLUMNS_CHANGED,\n this.handleCustomColumnsChanged\n );\n model.removeEventListener(\n IrisGridModel.EVENT.PENDING_DATA_UPDATED,\n this.handlePendingDataUpdated\n );\n model.removeEventListener(\n IrisGridModel.EVENT.VIEWPORT_UPDATED,\n this.handleViewportUpdated\n );\n model.removeEventListener(\n IrisGridModel.EVENT.TABLE_CHANGED,\n this.handleTableChanged\n );\n }\n\n focus(): void {\n this.grid?.focus();\n }\n\n focusFilterBar(column: VisibleIndex): void {\n const { movedColumns } = this.state;\n const { model } = this.props;\n const { columnCount } = model;\n const modelColumn = GridUtils.getModelIndex(column, movedColumns);\n\n if (\n column == null ||\n column < 0 ||\n columnCount <= column ||\n !model.isFilterable(modelColumn)\n ) {\n this.setState({ focusedFilterBarColumn: null });\n return;\n }\n\n const { metricCalculator, metrics } = this.state;\n assertNotNull(metrics);\n const { left, rightVisible, lastLeft } = metrics;\n if (column < left) {\n this.grid?.setViewState({ left: column }, true);\n } else if (rightVisible < column) {\n const metricState = this.grid?.getMetricState();\n assertNotNull(metricState);\n const newLeft = metricCalculator.getLastLeft(\n metricState,\n column,\n metricCalculator.getVisibleWidth(metricState)\n );\n this.grid?.setViewState(\n { left: Math.min(newLeft, lastLeft), leftOffset: 0 },\n true\n );\n }\n this.lastFocusedFilterBarColumn = column;\n this.setState({ focusedFilterBarColumn: column, isFilterBarShown: true });\n }\n\n hideColumnByVisibleIndex(columnVisibleIndex: VisibleIndex): void {\n const { metricCalculator, movedColumns } = this.state;\n metricCalculator.setColumnWidth(\n GridUtils.getModelIndex(columnVisibleIndex, movedColumns),\n 0\n );\n\n this.grid?.forceUpdate();\n }\n\n freezeColumnByColumnName(columnName: ColumnName): void {\n const { frozenColumns, movedColumns } = this.state;\n const { model } = this.props;\n log.debug2('freezing column', columnName);\n\n const allFrozenColumns =\n frozenColumns == null\n ? new Set(model.frozenColumns)\n : new Set(frozenColumns);\n\n allFrozenColumns.add(columnName);\n\n const modelIndex = model.getColumnIndexByName(columnName);\n assertNotNull(modelIndex);\n const visibleIndex = GridUtils.getVisibleIndex(modelIndex, movedColumns);\n const newMovedColumns = GridUtils.moveItem(\n visibleIndex,\n allFrozenColumns.size - 1,\n movedColumns\n );\n\n this.setState({\n frozenColumns: [...allFrozenColumns],\n movedColumns: newMovedColumns,\n });\n }\n\n unFreezeColumnByColumnName(columnName: ColumnName): void {\n const { frozenColumns, movedColumns } = this.state;\n const { model } = this.props;\n log.debug2('unfreezing column', columnName);\n\n const allFrozenColumns =\n frozenColumns == null\n ? new Set(model.frozenColumns)\n : new Set(frozenColumns);\n\n allFrozenColumns.delete(columnName);\n\n const modelIndex = model.getColumnIndexByName(columnName);\n assertNotNull(modelIndex);\n const visibleIndex = GridUtils.getVisibleIndex(modelIndex, movedColumns);\n\n // Move to after remaining frozen columns and front columns\n const newMovedColumns = GridUtils.moveItem(\n visibleIndex,\n allFrozenColumns.size + model.frontColumns.length,\n movedColumns\n );\n\n this.setState({\n frozenColumns: [...allFrozenColumns],\n movedColumns: newMovedColumns,\n });\n }\n\n handleColumnVisibilityChanged(\n modelIndexes: readonly ModelIndex[],\n isVisible: boolean\n ): void {\n const { metricCalculator, metrics } = this.state;\n assertNotNull(metrics);\n if (isVisible) {\n modelIndexes.forEach(modelIndex => {\n const defaultWidth =\n metricCalculator.initialColumnWidths.get(modelIndex);\n const calculatedWidth = getOrThrow(\n metrics.calculatedColumnWidths,\n modelIndex\n );\n\n if (defaultWidth !== calculatedWidth) {\n metricCalculator.setColumnWidth(modelIndex, calculatedWidth);\n } else {\n metricCalculator.resetColumnWidth(modelIndex);\n }\n });\n } else {\n modelIndexes.forEach(modelIndex => {\n metricCalculator.setColumnWidth(modelIndex, 0);\n });\n }\n this.grid?.forceUpdate();\n }\n\n handleColumnVisibilityReset(): void {\n const { metricCalculator, metrics } = this.state;\n const { model } = this.props;\n assertNotNull(metrics);\n for (let i = 0; i < metrics.columnCount; i += 1) {\n metricCalculator.resetColumnWidth(i);\n }\n this.handleMovedColumnsChanged(model.initialMovedColumns);\n this.handleHeaderGroupsChanged(model.initialColumnHeaderGroups);\n this.setState({\n frozenColumns: model.layoutHints?.frozenColumns ?? EMPTY_ARRAY,\n });\n }\n\n handleCrossColumnSearch(\n searchValue: string,\n selectedSearchColumns: readonly ColumnName[],\n invertSearchColumns: boolean\n ): void {\n const { model } = this.props;\n this.startLoading('Searching...');\n\n this.updateSearchFilter(\n searchValue,\n selectedSearchColumns,\n model.columns,\n invertSearchColumns\n );\n\n this.setState({\n searchValue,\n selectedSearchColumns,\n invertSearchColumns,\n });\n }\n\n updateSearchFilter = debounce(\n (\n searchValue: string,\n selectedSearchColumns: readonly ColumnName[],\n columns: readonly DhType.Column[],\n invertSearchColumns: boolean\n ): void => {\n const { model } = this.props;\n const searchFilter = CrossColumnSearch.createSearchFilter(\n model.dh,\n searchValue,\n selectedSearchColumns,\n columns,\n invertSearchColumns\n );\n this.setState({ searchFilter });\n },\n SET_FILTER_DEBOUNCE\n );\n\n handleAnimationLoop(): void {\n this.grid?.updateCanvas();\n\n if (this.isAnimating) {\n this.animationFrame = requestAnimationFrame(this.handleAnimationLoop);\n }\n }\n\n handleAnimationStart(): void {\n log.debug2('handleAnimationStart');\n\n this.isAnimating = true;\n\n this.animationFrame = requestAnimationFrame(this.handleAnimationLoop);\n }\n\n handleAnimationEnd(): void {\n log.debug2('handleAnimationEnd');\n\n this.isAnimating = false;\n }\n\n handlePartitionChange(partitionConfig: PartitionConfig): void {\n this.startLoading('Partitioning...');\n const { partitionConfig: prevConfig } = this.state;\n if (prevConfig !== partitionConfig) {\n this.setState({ partitionConfig });\n }\n }\n\n handleTableLoadError(error: unknown): void {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n\n log.error(error);\n\n const { onError } = this.props;\n onError(error);\n }\n\n handleViewportUpdated(): void {\n const { model } = this.props;\n const { loadingText, loadingSpinnerShown } = this.state;\n const loadingMessage = 'Waiting for viewport...';\n\n // pending and no timer already exists\n if (model.isViewportPending && !loadingSpinnerShown) {\n this.showViewportLoading();\n } else if (loadingText === loadingMessage && !model.isViewportPending) {\n // extra conditions because timeout might get cleared by update\n this.stopLoading();\n }\n }\n\n showViewportLoading = throttle(\n (): void => {\n const { model } = this.props;\n const { loadingSpinnerShown } = this.state;\n if (model.isViewportPending && !loadingSpinnerShown) {\n // We only want to show the viewport loading if the viewport is still loading\n // and we're not already showing a loader for something else\n this.startLoading('Waiting for viewport...', {\n loadingCancelShown: false,\n loadingBlocksGrid: false,\n });\n }\n },\n VIEWPORT_LOADING_DELAY,\n { leading: false, trailing: true }\n );\n\n showAllColumns(): void {\n const { metricCalculator } = this.state;\n const userColumnWidths = metricCalculator.getUserColumnWidths();\n const entries = [...userColumnWidths.entries()];\n for (let i = 0; i < entries.length; i += 1) {\n const [modelIndex, columnWidth] = entries[i];\n if (columnWidth === 0) {\n metricCalculator.resetColumnWidth(modelIndex);\n }\n }\n this.grid?.forceUpdate();\n }\n\n toggleSort(columnIndex: VisibleIndex, addToExisting: boolean): void {\n log.info('Toggling sort for column', columnIndex);\n\n const { model } = this.props;\n const modelColumn = this.getModelColumn(columnIndex);\n assertNotNull(modelColumn);\n if (model.isColumnSortable(columnIndex)) {\n const { sorts: currentSorts } = this.state;\n const sorts = TableUtils.toggleSortForColumn(\n currentSorts,\n model.columns,\n modelColumn,\n addToExisting\n );\n\n this.updateSorts(sorts);\n } else {\n log.debug('Column type was not sortable', model.columns[columnIndex]);\n }\n }\n\n updateSorts(sorts: readonly DhType.Sort[]): void {\n this.startLoading('Sorting...');\n this.setState({ sorts });\n this.grid?.forceUpdate();\n }\n\n sortColumn(\n modelColumn: ModelIndex,\n direction: SortDirection = TableUtils.sortDirection.none,\n isAbs = false,\n addToExisting = false\n ): void {\n assertNotNull(modelColumn);\n const { model } = this.props;\n const sorts = TableUtils.sortColumn(\n model.sort,\n model.columns,\n modelColumn,\n direction,\n isAbs,\n addToExisting\n );\n this.startLoading('Sorting...');\n this.setState({ sorts });\n this.grid?.forceUpdate();\n }\n\n reverse(reverse: boolean): void {\n this.startLoading('Reversing...');\n this.setState({ reverse });\n this.grid?.forceUpdate();\n }\n\n isReversible(): boolean {\n const { model } = this.props;\n return model.isReversible;\n }\n\n toggleFilterBar(focusIndex = this.lastFocusedFilterBarColumn): void {\n let { isFilterBarShown } = this.state;\n isFilterBarShown = !isFilterBarShown;\n this.setState({ isFilterBarShown });\n\n if (isFilterBarShown) {\n if (focusIndex != null) {\n this.focusFilterBar(focusIndex);\n } else {\n let columnIndex = 0;\n const { model } = this.props;\n const { columnCount } = model;\n for (let i = 0; i < columnCount; i += 1) {\n const modelColumn = this.getModelColumn(i);\n if (modelColumn != null) {\n const column = model.columns[modelColumn];\n if (column != null && TableUtils.isTextType(column.type)) {\n columnIndex = i;\n break;\n }\n }\n }\n this.focusFilterBar(columnIndex);\n }\n } else {\n this.grid?.focus();\n }\n }\n\n isTableSearchAvailable(): boolean {\n const { model, canToggleSearch } = this.props;\n const { dh } = model;\n const searchDisplayMode = model?.layoutHints?.searchDisplayMode;\n\n if (searchDisplayMode === dh.SearchDisplayMode?.SEARCH_DISPLAY_HIDE) {\n return false;\n }\n if (searchDisplayMode === dh.SearchDisplayMode?.SEARCH_DISPLAY_SHOW) {\n return true;\n }\n\n return canToggleSearch;\n }\n\n toggleSearchBar(): void {\n const { showSearchBar } = this.state;\n if (!this.isTableSearchAvailable()) {\n return;\n }\n\n const update = !showSearchBar;\n this.setState(\n {\n showSearchBar: update,\n },\n () => {\n if (update && this.crossColumnRef?.current) {\n this.crossColumnRef?.current.focus();\n } else {\n this.grid?.focus();\n }\n }\n );\n }\n\n toggleGotoRow(row = '', value = '', columnName = ''): void {\n const { isGotoShown } = this.state;\n if (row || value) {\n // if invoked with a row, keep open instead of toggle\n this.setState({\n isGotoShown: true,\n gotoValue: value,\n gotoValueSelectedColumnName: columnName,\n gotoRowError: '',\n gotoValueError: '',\n gotoValueManuallyChanged: false,\n });\n this.focusRowInGrid(row);\n this.gotoRowRef.current?.focus();\n return;\n }\n\n const cursorRow = this.grid?.state.cursorRow;\n const cursorColumn = this.grid?.state.cursorColumn;\n\n if (cursorRow == null || cursorColumn == null) {\n // if a cell is not selected / grid is not rendered\n this.setState({\n isGotoShown: !isGotoShown,\n gotoRow: '',\n gotoValue: '',\n gotoRowError: '',\n gotoValueError: '',\n gotoValueManuallyChanged: false,\n });\n return;\n }\n // if a row is selected\n const { model } = this.props;\n const { name, type } = model.columns[cursorColumn];\n\n const cellValue = model.valueForCell(cursorColumn, cursorRow);\n const text = IrisGridUtils.convertValueToText(cellValue, type);\n this.setState({\n isGotoShown: !isGotoShown,\n gotoRow: `${cursorRow + 1}`,\n gotoValue: text,\n gotoValueSelectedColumnName: name,\n gotoRowError: '',\n gotoValueError: '',\n gotoValueManuallyChanged: false,\n });\n }\n\n async commitPending(): Promise<void> {\n const { model } = this.props;\n if (!isEditableGridModel(model) || !model.isEditable) {\n throw new Error('Cannot save, table is not editable');\n }\n\n const { pendingSavePromise } = this.state;\n if (pendingSavePromise != null) {\n throw new Error('Save already in progress');\n }\n\n const containsGridCellInputField =\n document?.activeElement?.classList.contains('grid-cell-input-field');\n if (containsGridCellInputField != null && containsGridCellInputField) {\n if (\n document.activeElement != null &&\n document.activeElement.classList.contains('error')\n ) {\n throw new ValidationError('Current input is invalid');\n }\n\n // Focus the grid again to commit any pending input changes\n this.grid?.focus();\n }\n\n const newPendingSavePromise = this.pending\n .add(model.commitPending())\n .then(() => {\n this.setState({ pendingSaveError: null, pendingSavePromise: null });\n })\n .catch(err => {\n if (!PromiseUtils.isCanceled(err)) {\n this.setState({ pendingSaveError: err, pendingSavePromise: null });\n }\n });\n this.setState({ pendingSavePromise: newPendingSavePromise });\n return newPendingSavePromise;\n }\n\n async discardPending(): Promise<void> {\n const { pendingSavePromise } = this.state;\n if (pendingSavePromise != null) {\n throw new Error('Cannot cancel a save in progress');\n }\n\n this.setState({\n pendingSavePromise: null,\n pendingSaveError: null,\n pendingDataMap: new Map(),\n pendingDataErrors: new Map(),\n });\n }\n\n /**\n * Select the passed in column and notify listener\n * @param column The column in this table to link\n */\n selectColumn(column: DhType.Column): void {\n const { onColumnSelected } = this.props;\n onColumnSelected(column);\n }\n\n /**\n * Get the row data map for a given row and notifies the listener\n */\n selectData(columnIndex: ModelIndex, rowIndex: ModelIndex): void {\n const dataMap = this.getRowDataMap(rowIndex);\n const { onDataSelected } = this.props;\n onDataSelected(rowIndex, dataMap);\n }\n\n /**\n * Get the data map for the given row\n * @param rowIndex Row to get the data map for\n * @returns Data map for the row\n */\n getRowDataMap(rowIndex: ModelIndex): RowDataMap {\n const { model } = this.props;\n const { columns, groupedColumns } = model;\n const dataMap: RowDataMap = {};\n for (let i = 0; i < columns.length; i += 1) {\n const column = columns[i];\n const { name, type } = column;\n const value = model.valueForCell(i, rowIndex);\n const text = model.textForCell(i, rowIndex);\n const visibleIndex = this.getVisibleColumn(i);\n const isExpandable =\n isExpandableGridModel(model) && model.isRowExpandable(rowIndex);\n const isGrouped = groupedColumns.find(c => c.name === name) != null;\n dataMap[name] = {\n value,\n text,\n type,\n isGrouped,\n isExpandable,\n visibleIndex,\n };\n }\n return dataMap;\n }\n\n handleAdvancedFilterChange(\n column: DhType.Column,\n filter: DhType.FilterCondition | null,\n options: AdvancedFilterOptions\n ): void {\n const { model } = this.props;\n const index = model.getColumnIndexByName(column.name);\n assertNotNull(index);\n this.setAdvancedFilter(index, filter, options);\n }\n\n handleAdvancedFilterSortChange(\n column: DhType.Column,\n direction: SortDirection,\n addToExisting = false\n ): void {\n const { model } = this.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n const columnName = model.columns[columnIndex].name;\n const oldSort = TableUtils.getSortForColumn(model.sort, columnName);\n let newSort = null;\n\n if (oldSort == null || oldSort.direction !== direction) {\n if (direction === TableUtils.sortDirection.descending) {\n newSort = column.sort().desc();\n } else {\n newSort = column.sort().asc();\n }\n }\n\n const sorts = TableUtils.setSortForColumn(\n model.sort,\n columnName,\n newSort,\n addToExisting\n );\n log.info('Setting table sorts', sorts);\n\n this.startLoading('Sorting...');\n this.setState({ sorts });\n\n this.grid?.forceUpdate();\n }\n\n handleAdvancedFilterDone(): void {\n this.grid?.focus();\n }\n\n handleAdvancedMenuOpened(column: GridRangeIndex): void {\n this.setState({ shownAdvancedFilter: column });\n }\n\n handleGotoRowOpened(): void {\n this.setState({ isGotoShown: true, gotoValueManuallyChanged: false });\n }\n\n handleGotoRowClosed(): void {\n this.setState({ isGotoShown: false, gotoValueManuallyChanged: false });\n }\n\n handleAdvancedMenuClosed(columnIndex: number): void {\n const { focusedFilterBarColumn, isFilterBarShown } = this.state;\n if (\n isFilterBarShown &&\n focusedFilterBarColumn === columnIndex &&\n this.filterInputRef?.current !== null\n ) {\n this.filterInputRef?.current.focus();\n this.setState({ shownAdvancedFilter: null });\n } else {\n this.setState({\n focusedFilterBarColumn: null,\n shownAdvancedFilter: null,\n });\n }\n }\n\n handleCancel(): void {\n this.rollback();\n }\n\n // eslint-disable-next-line class-methods-use-this\n handleChartChange(): void {\n // TODO: IDS-4242 Update Chart Preview\n }\n\n handleChartCreate(settings: ChartBuilderSettings): void {\n const { model, onCreateChart } = this.props;\n onCreateChart(settings, model);\n }\n\n handleGridError(error?: Error): void {\n log.warn('Grid Error', error);\n this.setState({\n toastMessage: <div className=\"error-message\">{`${error}`}</div>,\n });\n }\n\n handleFilterBarChange(value: string): void {\n this.startLoading('Filtering...', { resetRanges: true });\n\n this.setState(({ focusedFilterBarColumn, quickFilters }) => {\n const newQuickFilters = new Map(quickFilters);\n if (focusedFilterBarColumn != null) {\n const modelIndex = this.getModelColumn(focusedFilterBarColumn);\n assertNotNull(modelIndex);\n this.applyQuickFilter(modelIndex, value, newQuickFilters);\n }\n return { quickFilters: newQuickFilters };\n });\n }\n\n handleFilterBarDone(setGridFocus = true, defocusInput = true): void {\n if (setGridFocus) {\n this.grid?.focus();\n }\n if (defocusInput) {\n this.setState({ focusedFilterBarColumn: null });\n }\n }\n\n handleFilterBarTab(backward: boolean): void {\n const { focusedFilterBarColumn } = this.state;\n assertNotNull(focusedFilterBarColumn);\n if (backward) {\n this.focusFilterBar(focusedFilterBarColumn - 1);\n } else {\n this.focusFilterBar(focusedFilterBarColumn + 1);\n }\n }\n\n handleFormatSelection(\n modelIndex: ModelIndex,\n selectedFormat: TableColumnFormat | null\n ): void {\n const { model } = this.props;\n const column = model.columns[modelIndex];\n const { customColumnFormatMap: prevCustomColumnFormatMap } = this.state;\n const customColumnFormatMap = new Map(prevCustomColumnFormatMap);\n\n if (selectedFormat != null) {\n const normalizedType = TableUtils.getNormalizedType(column.type);\n assertNotNull(normalizedType);\n const columnFormattingRule = Formatter.makeColumnFormattingRule(\n normalizedType,\n column.name,\n selectedFormat\n );\n\n customColumnFormatMap.set(column.name, columnFormattingRule);\n } else {\n customColumnFormatMap.delete(column.name);\n }\n\n this.updateFormatter({ customColumnFormatMap });\n }\n\n handleColumnAlignmentChange(\n modelIndex: ModelIndex,\n alignment: CanvasTextAlign | null\n ): void {\n const { model } = this.props;\n const column = model.columns[modelIndex];\n\n this.setState(({ columnAlignmentMap = EMPTY_MAP }) => {\n const newColumnAlignmentMap = new Map(columnAlignmentMap);\n if (alignment != null) {\n newColumnAlignmentMap.set(column.name, alignment);\n } else {\n newColumnAlignmentMap.delete(column.name);\n }\n return { columnAlignmentMap: newColumnAlignmentMap };\n });\n }\n\n handleMenu(e: React.MouseEvent<HTMLButtonElement>): void {\n e.stopPropagation();\n this.setState({ isMenuShown: true });\n }\n\n handleMenuClose(): void {\n this.setState({ isMenuShown: false, openOptions: [] });\n }\n\n handleMenuBack(): void {\n this.setState(({ openOptions }) => {\n const newOptions = [...openOptions];\n newOptions.pop();\n return { openOptions: newOptions };\n });\n }\n\n handleMenuSelect(option: OptionItem): void {\n this.setState(({ openOptions }) => ({\n openOptions: [...openOptions, option],\n }));\n }\n\n handleRequestFailed(event: EventT): void {\n const { detail: error } = event as CustomEvent;\n log.error('request failed:', error);\n this.stopLoading();\n const { partitionConfig } = this.state;\n if (isMissingPartitionError(error) && partitionConfig != null) {\n // We'll try loading the initial partition again\n this.startLoading('Reloading partition...', { resetRanges: true });\n this.setState({ partitionConfig: undefined }, () => {\n this.initState();\n });\n } else if (this.canRollback()) {\n this.startLoading('Rolling back changes...', { resetRanges: true });\n this.rollback();\n } else {\n log.error('Table failed and unable to rollback');\n const { onError } = this.props;\n onError(new Error(`Error displaying table: ${error}`));\n }\n }\n\n handleUpdate(): void {\n log.debug2('Received model update');\n\n const {\n advancedFilters,\n aggregationSettings,\n customColumns,\n quickFilters,\n reverse,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts,\n } = this.state;\n\n const config = {\n advancedFilters,\n aggregationSettings,\n customColumns,\n quickFilters,\n reverse,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts,\n };\n\n if (!isEmptyConfig(config)) {\n this.lastLoadedConfig = config;\n } else {\n this.lastLoadedConfig = null;\n }\n\n this.grid?.forceUpdate();\n this.stopLoading();\n }\n\n handleTableChanged(): void {\n const { model } = this.props;\n // movedColumns reset triggers metricCalculator update in the Grid component\n this.setState({ movedColumns: model.initialMovedColumns });\n }\n\n handleViewChanged(metrics?: GridMetrics): void {\n const { model } = this.props;\n const { selectionEndRow = 0 } = this.grid?.state ?? {};\n let pendingRowCount = 0;\n if (isEditableGridModel(model) && model.isEditable) {\n assertNotNull(metrics);\n const { bottomViewport } = metrics;\n\n // We have an editable table that we can add new rows to\n // Display empty rows beneath the table rows that user can fill in\n const bottomNonFloating = model.rowCount - model.floatingBottomRowCount;\n if (selectionEndRow === bottomNonFloating - 1) {\n // Selection is in the last row, add another blank row\n pendingRowCount = model.pendingRowCount + 1;\n } else if (selectionEndRow === bottomNonFloating - 2) {\n // We may have just added a row based on selection moving, so just leave it as is\n pendingRowCount = model.pendingRowCount;\n } else {\n // Otherwise fill up the viewport with empty cells\n pendingRowCount = Math.max(\n 0,\n bottomViewport -\n (model.rowCount - model.pendingRowCount) -\n model.floatingTopRowCount -\n model.floatingBottomRowCount -\n 1\n );\n }\n }\n\n this.setState({ metrics, pendingRowCount });\n }\n\n handleSelectionChanged(selectedRanges?: readonly GridRange[]): void {\n assertNotNull(selectedRanges);\n const { onSelectionChanged } = this.props;\n const { copyOperation } = this.state;\n this.setState({ selectedRanges });\n if (copyOperation != null) {\n this.setState({ copyOperation: null });\n }\n\n // We get 2 identical ranges here,\n // but consolidating in `Grid#moveSelection` causes\n // deselection to break, so just consolidate here.\n // This will only update the goto row input for row index\n if (\n GridRange.rowCount(GridRange.consolidate(selectedRanges)) === 1 &&\n selectedRanges[0].startRow != null\n ) {\n this.setState({ gotoRow: `${selectedRanges[0].startRow + 1}` });\n }\n onSelectionChanged(selectedRanges);\n }\n\n handleMovedColumnsChanged(\n movedColumns: readonly MoveOperation[],\n onChangeApplied?: () => void\n ): void {\n this.setState({ movedColumns }, onChangeApplied);\n }\n\n handleHeaderGroupsChanged(\n columnHeaderGroups: readonly (DhType.ColumnGroup | ColumnHeaderGroup)[]\n ): void {\n const { model } = this.props;\n this.setState(\n {\n columnHeaderGroups: IrisGridUtils.parseColumnHeaderGroups(\n model,\n columnHeaderGroups\n ).groups,\n },\n () => this.grid?.forceUpdate()\n );\n }\n\n handleTooltipRef(tooltip: Tooltip): void {\n // Need to start the timer right away, since we're creating the tooltip when we want the timer to start\n if (tooltip != null) {\n tooltip.startTimer();\n }\n\n this.tooltip = tooltip;\n }\n\n handleConditionalFormatsChange(\n conditionalFormats: readonly SidebarFormattingRule[]\n ): void {\n log.debug('Updated conditional formats', conditionalFormats);\n this.setState({ conditionalFormats });\n }\n\n handleConditionalFormatCreate(): void {\n log.debug('Create new conditional format');\n const { openOptions, conditionalFormats } = this.state;\n this.setState({\n openOptions: [\n ...openOptions,\n {\n type: OptionType.CONDITIONAL_FORMATTING_EDIT,\n title: `Create Formatting Rule`,\n },\n ],\n conditionalFormatEditIndex: conditionalFormats.length,\n // Start with a blank rule\n conditionalFormatPreview: undefined,\n });\n }\n\n handleConditionalFormatEdit(index: number): void {\n log.debug('Edit conditional format', index);\n const { openOptions, conditionalFormats } = this.state;\n this.setState({\n openOptions: [\n ...openOptions,\n {\n type: OptionType.CONDITIONAL_FORMATTING_EDIT,\n title: `Edit Formatting Rule`,\n },\n ],\n conditionalFormatEditIndex: index,\n // Clone rule to preview temporary changes\n conditionalFormatPreview: { ...conditionalFormats[index] },\n });\n }\n\n // Apply live changes\n handleConditionalFormatEditorUpdate = debounce(\n (conditionalFormatPreview?: SidebarFormattingRule): void => {\n this.setState({ conditionalFormatPreview });\n },\n SET_CONDITIONAL_FORMAT_DEBOUNCE\n );\n\n handleConditionalFormatEditorSave(config: SidebarFormattingRule): void {\n log.debug('Save conditional format changes', config);\n this.setState(\n state => {\n if (state.conditionalFormatEditIndex === null) {\n log.debug('Invalid format index');\n return null;\n }\n const conditionalFormats = [...state.conditionalFormats];\n conditionalFormats[state.conditionalFormatEditIndex] = config;\n return { conditionalFormats };\n },\n () => {\n this.handleMenuBack();\n }\n );\n }\n\n handleConditionalFormatEditorCancel(): void {\n this.handleMenuBack();\n // Not resetting conditionalFormatPreview here\n // to prevent editor fields change during the menu transition\n this.setState({ conditionalFormatEditIndex: null });\n }\n\n handleUpdateCustomColumns(customColumns: readonly string[]): void {\n log.info(`handleUpdateCustomColumns:`, customColumns);\n\n const { model } = this.props;\n const {\n movedColumns,\n sorts,\n quickFilters,\n advancedFilters,\n selectDistinctColumns,\n } = this.state;\n\n const { columns } = model;\n const oldCustomColumns = model.customColumns.map(\n customColumn => `${customColumn}`\n );\n\n const removedColumnNames = IrisGridUtils.getRemovedCustomColumnNames(\n oldCustomColumns,\n customColumns\n );\n if (removedColumnNames.length > 0) {\n const newSorts = IrisGridUtils.removeSortsInColumns(\n sorts,\n removedColumnNames\n );\n const newQuickFilters = IrisGridUtils.removeFiltersInColumns(\n columns,\n quickFilters,\n removedColumnNames\n );\n const newAdvancedFilters = IrisGridUtils.removeFiltersInColumns(\n columns,\n advancedFilters,\n removedColumnNames\n );\n const newMovedColumns = IrisGridUtils.removeColumnFromMovedColumns(\n columns,\n movedColumns,\n removedColumnNames\n );\n const newSelectDistinctColumns =\n IrisGridUtils.removeColumnsFromSelectDistinctColumns(\n selectDistinctColumns,\n removedColumnNames\n );\n if (newSorts.length !== sorts.length) {\n log.debug('removing sorts from removed custom columns...');\n this.setState({ sorts: newSorts });\n }\n if (\n newQuickFilters.size !== quickFilters.size ||\n newAdvancedFilters.size !== advancedFilters.size\n ) {\n log.debug(`removing filters from removed custom columns...`);\n this.setState({\n quickFilters: newQuickFilters,\n advancedFilters: newAdvancedFilters,\n });\n }\n if (!deepEqual(movedColumns, newMovedColumns)) {\n log.debug(\n `change moved columns for removed custom columns`,\n newMovedColumns\n );\n this.setState({ movedColumns: newMovedColumns });\n }\n if (!deepEqual(selectDistinctColumns, newSelectDistinctColumns)) {\n log.debug(\n `change selectDistinct columns for removed custom columns`,\n newMovedColumns\n );\n this.setState({ selectDistinctColumns: newSelectDistinctColumns });\n }\n }\n\n this.setState({ customColumns });\n if (customColumns.length > 0) {\n // If there are no custom columns, the change handler never fires\n // This causes the loader to stay until canceled by the user\n this.startLoading('Applying custom columns...');\n }\n }\n\n handleCustomColumnsChanged(): void {\n log.debug('custom columns changed');\n const { isReady } = this.state;\n if (isReady) {\n this.stopLoading();\n this.grid?.forceUpdate();\n } else {\n this.loadTableState();\n }\n }\n\n handlePendingCommitClicked(): Promise<void> {\n return this.commitPending();\n }\n\n handlePendingDiscardClicked(): Promise<void> {\n return this.discardPending();\n }\n\n handlePendingDataUpdated(): void {\n log.debug('pending data updated');\n const { model } = this.props;\n const { pendingDataMap, pendingDataErrors } = model;\n this.setState({\n pendingDataMap,\n pendingDataErrors,\n pendingSaveError: null,\n });\n this.grid?.forceUpdate();\n }\n\n handleResizeColumn(modelIndex: number): void {\n const { metrics, metricCalculator } = this.state;\n if (!metrics) throw new Error('Metrics not set');\n\n const contentWidth = getOrThrow(metrics.contentColumnWidths, modelIndex);\n\n const userWidths = metricCalculator.getUserColumnWidths();\n if (userWidths.has(modelIndex)) {\n metricCalculator.resetColumnWidth(modelIndex);\n metricCalculator.setCalculatedColumnWidth(modelIndex, contentWidth);\n } else {\n metricCalculator.setColumnWidth(modelIndex, contentWidth);\n }\n\n this.grid?.forceUpdate();\n }\n\n handleResizeAllColumns(): void {\n const { metrics, metricCalculator } = this.state;\n if (!metrics) throw new Error('Metrics not set');\n\n const allColumns = [...metrics.allColumnWidths.entries()];\n const visibleColumns = allColumns\n .filter(([_, width]) => width !== 0)\n .map(([modelIndex]) => modelIndex);\n\n const contentWidths = metrics.contentColumnWidths;\n const userWidths = metricCalculator.getUserColumnWidths();\n\n const manualColumns = visibleColumns.filter(modelIndex =>\n userWidths.has(modelIndex)\n );\n\n if (visibleColumns.length === manualColumns.length) {\n // All columns are manually sized, flip all to auto resize\n for (let i = 0; i < visibleColumns.length; i += 1) {\n const modelIndex = visibleColumns[i];\n const contentWidth = getOrThrow(contentWidths, modelIndex);\n metricCalculator.resetColumnWidth(modelIndex);\n metricCalculator.setCalculatedColumnWidth(modelIndex, contentWidth);\n }\n } else {\n // Flip all to manual sized\n for (let i = 0; i < visibleColumns.length; i += 1) {\n const modelIndex = visibleColumns[i];\n const contentWidth = getOrThrow(contentWidths, modelIndex);\n metricCalculator.setColumnWidth(modelIndex, contentWidth);\n }\n }\n\n this.grid?.forceUpdate();\n }\n\n /**\n * User added, removed, or changed the order of aggregations, or position\n * @param aggregationSettings The new aggregation settings\n * @param added The aggregations that were added\n * @param removed The aggregations that were removed\n */\n handleAggregationsChange(\n aggregationSettings: AggregationSettings,\n added: AggregationOperation[] = [],\n removed: AggregationOperation[] = []\n ): void {\n log.debug('handleAggregationsChange', aggregationSettings, added, removed);\n const { rollupConfig } = this.state;\n const isRollup = (rollupConfig?.columns?.length ?? 0) > 0;\n // Do not start loading if this is rollup and added / removed aggregations are prohibited for rollups\n const changes = [...added, ...removed];\n const shouldStartLoading = !(\n isRollup &&\n changes.length > 0 &&\n changes.every(op => AggregationUtils.isRollupProhibited(op))\n );\n\n if (shouldStartLoading) {\n this.startLoading(\n `Aggregating ${aggregationSettings.aggregations\n .map(a => a.operation)\n .join(', ')}...`\n );\n }\n this.setState({ aggregationSettings });\n }\n\n /**\n * A specific aggregation has been modified\n * @param aggregation The new aggregation\n */\n handleAggregationChange(aggregation: Aggregation): void {\n log.debug('handleAggregationChange', aggregation);\n const { rollupConfig } = this.state;\n const isRollup = (rollupConfig?.columns?.length ?? 0) > 0;\n // Do not start loading if this is rollup and the aggregation is prohibited for rollups\n const shouldStartLoading = !(\n isRollup && AggregationUtils.isRollupProhibited(aggregation.operation)\n );\n\n if (shouldStartLoading) {\n this.startLoading(`Aggregating ${aggregation.operation}...`);\n }\n\n this.setState(({ aggregationSettings }) => ({\n selectedAggregation: aggregation,\n aggregationSettings: {\n ...aggregationSettings,\n aggregations: aggregationSettings.aggregations.map(a =>\n a.operation === aggregation.operation ? aggregation : a\n ),\n },\n }));\n }\n\n /**\n * An aggregations has been selected for editing\n * @param aggregation The aggregation to edit\n */\n handleAggregationEdit(aggregation: Aggregation): void {\n log.debug('handleAggregationEdit', aggregation);\n\n const { openOptions } = this.state;\n\n this.setState({\n openOptions: [\n ...openOptions,\n {\n type: OptionType.AGGREGATION_EDIT,\n title: `Edit Columns to ${aggregation.operation}`,\n },\n ],\n selectedAggregation: aggregation,\n });\n }\n\n handleRollupChange(rollupConfig: UIRollupConfig): void {\n log.info('Rollup change', rollupConfig);\n\n this.resetGridViewState();\n this.showAllColumns();\n this.clearAllFilters();\n\n this.startLoading(\n `Grouping by columns ${rollupConfig?.columns?.join(', ') ?? ''}...`\n );\n\n // Have to clear select distinct since rollup uses the original columns, not the current ones.\n // IrisGridProxyModel has a check to prevent model update\n // when selectDistinctModel is cleared and the rollupConfig is set on the model.\n this.setState({\n rollupConfig,\n movedColumns: EMPTY_ARRAY,\n frozenColumns: EMPTY_ARRAY,\n sorts: EMPTY_ARRAY,\n reverse: false,\n selectDistinctColumns: EMPTY_ARRAY,\n });\n }\n\n handleSelectDistinctChanged(columnNames: readonly ColumnName[]): void {\n log.debug('SelectDistinct change', columnNames);\n\n this.resetGridViewState();\n\n this.showAllColumns();\n this.clearAllFilters();\n this.clearAllAggregations();\n\n this.startLoading(\n `Selecting distinct values in ${\n columnNames.length > 0 ? columnNames.join(', ') : ''\n }...`\n );\n\n this.setState({\n selectDistinctColumns: columnNames,\n movedColumns: [],\n sorts: [],\n reverse: false,\n });\n }\n\n handleDownloadTableStart(): void {\n const { canDownloadCsv } = this.props;\n if (canDownloadCsv) {\n this.setState({\n isTableDownloading: true,\n tableDownloadProgress: 0,\n tableDownloadEstimatedTime: null,\n tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.INITIATING,\n });\n } else {\n log.error(\n 'Attempted to handleDownloadTableStart for user without download CSV permission.'\n );\n }\n }\n\n handleDownloadTable(\n fileName: string,\n frozenTable: DhType.Table,\n tableSubscription: DhType.TableViewportSubscription,\n snapshotRanges: readonly GridRange[],\n modelRanges: readonly GridRange[],\n includeColumnHeaders: boolean,\n useUnformattedValues: boolean\n ): void {\n const { canDownloadCsv } = this.props;\n if (canDownloadCsv) {\n log.info(\n 'start table downloading',\n fileName,\n frozenTable,\n tableSubscription,\n snapshotRanges,\n modelRanges,\n includeColumnHeaders,\n useUnformattedValues\n );\n this.setState(() => {\n if (this.tableSaver) {\n this.tableSaver.startDownload(\n fileName,\n frozenTable,\n tableSubscription,\n snapshotRanges,\n modelRanges,\n includeColumnHeaders,\n useUnformattedValues\n );\n }\n return {\n tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING,\n };\n });\n } else {\n log.error(\n 'Attempted to handleDownloadTable for user without download CSV permission.'\n );\n }\n }\n\n /**\n * Aggregation editing has completed. Need to filter out any aggregations that have no columns selected\n */\n removeEmptyAggregations(): void {\n log.debug('removeEmptyAggregations');\n\n this.setState(({ aggregationSettings }) => {\n const { aggregations } = aggregationSettings;\n const newAggregations = aggregations.filter(\n a => a.selected.length > 0 || a.invert\n );\n if (newAggregations.length !== aggregations.length) {\n return {\n selectedAggregation: null,\n aggregationSettings: {\n ...aggregationSettings,\n aggregations: newAggregations,\n },\n };\n }\n return { selectedAggregation: null, aggregationSettings };\n });\n }\n\n async seekRow(inputString: string, isBackwards = false): Promise<void> {\n const {\n gotoValueSelectedColumnName: selectedColumnName,\n gotoValueSelectedFilter,\n } = this.state;\n const { model } = this.props;\n const { dh } = model;\n if (!model.isSeekRowAvailable) {\n return;\n }\n\n if (inputString === '') {\n return;\n }\n const selectedColumn = IrisGridUtils.getColumnByName(\n model.columns,\n selectedColumnName\n );\n\n if (selectedColumn === undefined) {\n return;\n }\n\n let searchFromRow = this.grid?.state.cursorRow;\n\n if (searchFromRow == null) {\n searchFromRow = 0;\n }\n\n const isContains =\n gotoValueSelectedFilter === FilterType.contains ||\n gotoValueSelectedFilter === FilterType.containsIgnoreCase;\n const isIgnoreCase =\n gotoValueSelectedFilter === FilterType.eqIgnoreCase ||\n gotoValueSelectedFilter === FilterType.containsIgnoreCase;\n\n try {\n const { formatter } = model;\n const columnDataType = TableUtils.getNormalizedType(selectedColumn.type);\n\n let rowIndex;\n\n switch (columnDataType) {\n case TableUtils.dataType.CHAR:\n case TableUtils.dataType.STRING: {\n rowIndex = await model.seekRow(\n searchFromRow,\n selectedColumn,\n dh.ValueType.STRING,\n inputString,\n isIgnoreCase,\n isContains,\n isBackwards ?? false\n );\n break;\n }\n case TableUtils.dataType.DATETIME: {\n const [startDate] = DateUtils.parseDateRange(\n dh,\n inputString,\n formatter.timeZone\n );\n rowIndex = await model.seekRow(\n searchFromRow,\n selectedColumn,\n dh.ValueType.DATETIME,\n startDate,\n undefined,\n undefined,\n isBackwards ?? false\n );\n break;\n }\n case TableUtils.dataType.DECIMAL:\n case TableUtils.dataType.INT: {\n if (\n !TableUtils.isBigDecimalType(selectedColumn.type) &&\n !TableUtils.isBigIntegerType(selectedColumn.type)\n ) {\n let inputValue = parseInt(inputString, 10);\n if (inputString === '-Infinity') {\n inputValue = Number.NEGATIVE_INFINITY;\n } else if (inputString === 'Infinity') {\n inputValue = Number.POSITIVE_INFINITY;\n }\n\n rowIndex = await model.seekRow(\n searchFromRow,\n selectedColumn,\n dh.ValueType.NUMBER,\n inputValue,\n undefined,\n undefined,\n isBackwards ?? false\n );\n } else {\n rowIndex = await model.seekRow(\n searchFromRow,\n selectedColumn,\n dh.ValueType.STRING,\n inputString,\n undefined,\n undefined,\n isBackwards ?? false\n );\n }\n break;\n }\n default: {\n rowIndex = await model.seekRow(\n searchFromRow,\n selectedColumn,\n dh.ValueType.STRING,\n this.tableUtils.makeValue(\n selectedColumn.type,\n inputString,\n formatter.timeZone\n ),\n undefined,\n undefined,\n isBackwards ?? false\n );\n }\n }\n\n this.grid?.setFocusRow(rowIndex);\n this.setState({ gotoValueError: '' });\n } catch (e: unknown) {\n this.setState({ gotoValueError: 'invalid input' });\n }\n }\n\n handleCancelDownloadTable(): void {\n this.tableSaver?.cancelDownload();\n this.setState({ isTableDownloading: false });\n }\n\n handleDownloadProgressUpdate = throttle(\n (\n tableDownloadProgress: number,\n tableDownloadEstimatedTime: number | null\n ) => {\n const { tableDownloadStatus } = this.state;\n if (\n tableDownloadStatus === TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING\n ) {\n this.setState({\n tableDownloadProgress,\n tableDownloadEstimatedTime,\n });\n }\n },\n UPDATE_DOWNLOAD_THROTTLE\n );\n\n handleDownloadCompleted(): void {\n this.setState({\n isTableDownloading: false,\n tableDownloadProgress: 100,\n tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.FINISHED,\n });\n }\n\n handleDownloadCanceled(): void {\n this.setState({\n isTableDownloading: false,\n tableDownloadProgress: 0,\n tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.CANCELED,\n });\n }\n\n /**\n * Delete the specified ranges from the table.\n * @param ranges The ranges to delete\n */\n deleteRanges(ranges: readonly GridRange[]): void {\n const { model } = this.props;\n if (!isDeletableGridModel(model) || !model.isDeletable) {\n throw new Error('Model does not support deleting ranges');\n }\n\n this.pending.add(model.delete(ranges)).catch(e => {\n if (!PromiseUtils.isCanceled(e)) {\n log.error('Unable to delete ranges', ranges, e);\n }\n });\n }\n\n resetColumnSelection(): void {\n if (this.grid == null) {\n return;\n }\n const { isSelectingColumn } = this.props;\n if (isSelectingColumn) {\n const { columnAllowedCursor } = this.props;\n this.grid.setState({ cursor: columnAllowedCursor });\n } else {\n this.grid.setState({ cursor: null });\n this.setState({ hoverSelectColumn: null });\n }\n }\n\n resetGridViewState(forceUpdate = true): void {\n if (!this.grid) {\n return;\n }\n\n this.grid.clearSelectedRanges();\n this.grid.setViewState(\n { left: 0, top: 0, topOffset: 0, leftOffset: 0 },\n forceUpdate\n );\n }\n\n sendStateChange(): void {\n if (!this.grid) {\n return;\n }\n const { state: irisGridState } = this;\n const { state: gridState } = this.grid;\n const { onStateChange } = this.props;\n\n onStateChange(irisGridState, gridState);\n }\n\n handleOverflowClose(): void {\n this.setState({\n showOverflowModal: false,\n });\n }\n\n handleOpenNoPastePermissionModal(errorMessage: string): void {\n this.setState({\n showNoPastePermissionModal: true,\n noPastePermissionError: errorMessage,\n });\n }\n\n handleCloseNoPastePermissionModal(): void {\n this.setState({\n showNoPastePermissionModal: false,\n });\n }\n\n getColumnBoundingRect(): DOMRect {\n const { metrics, shownColumnTooltip } = this.state;\n assertNotNull(metrics);\n assertNotNull(shownColumnTooltip);\n const gridRect = this.gridWrapper?.getBoundingClientRect();\n const popperMargin = 20;\n assertNotNull(gridRect);\n const {\n columnHeaderHeight,\n allColumnXs,\n allColumnWidths,\n width,\n columnHeaderMaxDepth,\n } = metrics;\n const columnX = allColumnXs.get(shownColumnTooltip);\n const columnWidth = allColumnWidths.get(shownColumnTooltip);\n\n assertNotNull(columnX);\n assertNotNull(columnWidth);\n\n const left =\n gridRect.left +\n clamp(columnX + columnWidth / 2, popperMargin, width - popperMargin);\n\n return {\n top: gridRect.top + (columnHeaderMaxDepth - 1) * columnHeaderHeight,\n left:\n gridRect.left +\n clamp(columnX + columnWidth / 2, popperMargin, width - popperMargin),\n bottom: gridRect.top + columnHeaderMaxDepth * columnHeaderHeight,\n right:\n gridRect.left +\n clamp(columnX + columnWidth / 2, popperMargin, width - popperMargin) +\n 1,\n width: 1,\n height: columnHeaderHeight,\n x: left,\n y: gridRect.top,\n toJSON: () => {\n throw new Error('not implemented');\n },\n };\n }\n\n getOverflowButtonTooltip = memoize(\n (overflowButtonTooltipProps: CSSProperties): ReactNode => {\n if (overflowButtonTooltipProps == null) {\n return null;\n }\n\n const wrapperStyle: CSSProperties = {\n position: 'absolute',\n ...overflowButtonTooltipProps,\n pointerEvents: 'none',\n };\n\n const popperOptions: PopperOptions = {\n placement: 'left',\n modifiers: {\n flip: {\n behavior: ['left', 'right'],\n },\n },\n };\n\n return (\n <div style={wrapperStyle}>\n <Tooltip\n key={Date.now()}\n options={popperOptions}\n ref={this.handleTooltipRef}\n >\n View full contents\n </Tooltip>\n </div>\n );\n },\n { max: 1 }\n );\n\n getExpandCellTooltip = memoize(\n (expandCellTooltipProps: CSSProperties): ReactNode => {\n if (expandCellTooltipProps == null) {\n return null;\n }\n\n const { expandTooltipDisplayValue } = this.state;\n const { model } = this.props;\n const isExpandAllAvailable =\n isExpandableGridModel(model) && model.isExpandAllAvailable;\n\n const wrapperStyle: CSSProperties = {\n position: 'absolute',\n ...expandCellTooltipProps,\n pointerEvents: 'none',\n };\n\n const popperOptions: PopperOptions = {\n placement: 'bottom-start',\n };\n\n return (\n <div style={wrapperStyle}>\n <Tooltip\n key={Date.now()}\n options={popperOptions}\n ref={this.handleTooltipRef}\n >\n <div style={{ textAlign: 'left' }}>\n Click to {expandTooltipDisplayValue} row\n {isExpandAllAvailable && (\n <>\n <br />\n {ContextActionUtils.isMacPlatform() ? '⌘' : 'Ctrl+'}Click to\n expand row and all children\n </>\n )}\n </div>\n </Tooltip>\n </div>\n );\n },\n { max: 1 }\n );\n\n getHoverTooltip = memoize(\n (hoverTooltipProps: CSSProperties): ReactNode => {\n if (hoverTooltipProps == null) {\n return null;\n }\n\n const { hoverDisplayValue } = this.state;\n\n const wrapperStyle: CSSProperties = {\n position: 'absolute',\n ...hoverTooltipProps,\n pointerEvents: 'none',\n };\n\n const popperOptions: PopperOptions = {\n placement: 'bottom',\n };\n\n return (\n <div style={wrapperStyle}>\n <Tooltip options={popperOptions} ref={this.handleTooltipRef}>\n <div className=\"link-hover-tooltip\">{hoverDisplayValue}</div>\n </Tooltip>\n </div>\n );\n },\n { max: 1 }\n );\n\n handleGotoRowSelectedRowNumberSubmit(): void {\n const { gotoRow: rowNumber } = this.state;\n this.focusRowInGrid(rowNumber);\n }\n\n focusRowInGrid(rowNumber: string): void {\n const { model } = this.props;\n const { rowCount } = model;\n this.setState({ gotoRow: rowNumber });\n if (rowNumber === '') {\n this.setState({ gotoRowError: '', gotoValueError: '' });\n return;\n }\n const rowInt = parseInt(rowNumber, 10);\n if (rowInt > rowCount || rowInt < -rowCount) {\n this.setState({ gotoRowError: 'Invalid row index' });\n } else if (rowInt === 0) {\n this.setState({ gotoRowError: '', gotoValueError: '' });\n this.grid?.setFocusRow(0);\n } else if (rowInt < 0) {\n this.setState({ gotoRowError: '', gotoValueError: '' });\n this.grid?.setFocusRow(rowInt + rowCount);\n } else {\n this.grid?.setFocusRow(rowInt - 1);\n this.setState({ gotoRowError: '', gotoValueError: '' });\n }\n }\n\n handleGotoRowSelectedRowNumberChanged(\n event: ChangeEvent<HTMLInputElement>\n ): void {\n const rowNumber = event.target.value;\n this.focusRowInGrid(rowNumber);\n }\n\n getColumnTooltip(\n visibleIndex: VisibleIndex,\n metrics: GridMetrics,\n model: IrisGridModel\n ): ReactNode {\n const {\n columnHeaderHeight,\n columnHeaderMaxDepth,\n allColumnXs,\n allColumnWidths,\n width,\n } = metrics;\n const columnX = allColumnXs.get(visibleIndex);\n const columnWidth = allColumnWidths.get(visibleIndex);\n\n if (columnX == null || columnWidth == null) {\n return null;\n }\n\n /**\n * Create a wrapper dom element, the size of the column header.\n * The wrapper acts as tooltip parent, the tooltip component\n * will trigger hide on mouseleave of wrapper or tooltip.\n * The wrapper should be bound to within the grid dimensions,\n * so popper only remains triggered while mouse is inside the panel.\n */\n const boundedLeft = Math.max(0, columnX);\n let boundedWidth = columnWidth;\n if (columnX + columnWidth > width) {\n // column is extending past right edge\n boundedWidth = width - columnX;\n } else if (columnX < 0) {\n // column is extending past left edge\n boundedWidth = columnWidth - Math.abs(columnX);\n }\n\n const wrapperStyle: CSSProperties = {\n position: 'absolute',\n top: (columnHeaderMaxDepth - 1) * columnHeaderHeight,\n left: boundedLeft,\n width: boundedWidth,\n height: columnHeaderHeight,\n pointerEvents: 'none',\n };\n\n /**\n * Because the popper parent wrapper center is no longer the same as\n * the column label center, we create a popper virtual ref, to handle\n * positioning and keep the popper centered on the label. Creates a\n * 1px x headerHeight virtual object, placed centered on the column\n * label, clamped to 0 + margin to width - margin. We add a margin,\n * otherwise the arrow wants to escape the boundary.\n */\n const virtualReference: ReferenceObject = {\n clientWidth: 1,\n clientHeight: columnHeaderHeight,\n getBoundingClientRect: this.getColumnBoundingRect,\n };\n\n const popperOptions: PopperOptions = {\n placement: 'bottom',\n modifiers: {\n flip: {\n behavior: ['bottom', 'top'],\n },\n },\n };\n\n const modelColumn = this.getModelColumn(visibleIndex);\n if (modelColumn == null) return null;\n\n const column = model.columns[modelColumn];\n if (column == null) return null;\n\n return (\n <div style={wrapperStyle}>\n <Tooltip\n key={column.name}\n timeout={400}\n interactive\n options={popperOptions}\n ref={this.handleTooltipRef}\n referenceObject={virtualReference}\n onExited={() => {\n this.setState({ shownColumnTooltip: null });\n }}\n >\n <ColumnStatistics\n model={model}\n column={column}\n onStatistics={() => {\n this.tooltip?.update();\n }}\n />\n </Tooltip>\n </div>\n );\n }\n\n handleGotoValueSelectedColumnNameChanged(columnName: ColumnName): void {\n const { model } = this.props;\n const cursorRow = this.grid?.state.cursorRow;\n const {\n gotoValueSelectedColumnName: prevColumnName,\n gotoValueManuallyChanged,\n } = this.state;\n\n if (cursorRow != null) {\n const index = model.getColumnIndexByName(columnName);\n const column = IrisGridUtils.getColumnByName(model.columns, columnName);\n const prevColumn = IrisGridUtils.getColumnByName(\n model.columns,\n prevColumnName\n );\n if (index == null || column == null) {\n return;\n }\n const value = model.valueForCell(index, cursorRow);\n const text = IrisGridUtils.convertValueToText(value, column.type);\n\n // do NOT update value if user manually changed value AND column type remains the same\n if (gotoValueManuallyChanged && column.type === prevColumn?.type) {\n this.setState({\n gotoValueSelectedColumnName: columnName,\n gotoValueError: '',\n });\n } else {\n // do update, and set goToValueManuallyChanged to false because value was automatically changed\n this.setState({\n gotoValueSelectedColumnName: columnName,\n gotoValue: text,\n gotoValueError: '',\n gotoValueManuallyChanged: false,\n });\n }\n }\n this.setState({\n gotoValueSelectedColumnName: columnName,\n gotoValueError: '',\n });\n }\n\n handleGotoValueSelectedFilterChanged(value: FilterTypeValue): void {\n this.setState({ gotoValueSelectedFilter: value, gotoValueError: '' });\n }\n\n handleGotoValueChanged = (input: string): void => {\n this.setState({ gotoValue: input, gotoValueManuallyChanged: true });\n this.debouncedSeekRow(input);\n };\n\n debouncedSeekRow = debounce((input: string): void => {\n this.seekRow(input);\n }, SEEK_ROW_DEBOUNCE);\n\n handleGotoValueSubmitted(isBackwards?: boolean): void {\n const { gotoValue } = this.state;\n this.seekRow(gotoValue, isBackwards);\n }\n\n render(): ReactElement | null {\n const {\n children,\n customFilters,\n getDownloadWorker,\n isSelectingColumn,\n isStuckToBottom,\n isStuckToRight,\n model,\n name,\n onlyFetchVisibleColumns,\n alwaysFetchColumns,\n advancedSettings,\n onAdvancedSettingsChange,\n canDownloadCsv,\n onCreateChart,\n } = this.props;\n const {\n metricCalculator,\n metrics,\n isFilterBarShown,\n isSelectingPartition,\n isMenuShown,\n isReady,\n copyOperation,\n focusedFilterBarColumn,\n loadingText,\n loadingScrimProgress,\n loadingSpinnerShown,\n loadingCancelShown,\n loadingBlocksGrid,\n shownColumnTooltip,\n hoverAdvancedFilter,\n shownAdvancedFilter,\n hoverSelectColumn,\n quickFilters,\n advancedFilters,\n searchFilter,\n selectDistinctColumns,\n\n movedColumns,\n movedRows,\n\n formatter,\n conditionalFormats,\n conditionalFormatPreview,\n conditionalFormatEditIndex,\n\n columnAlignmentMap,\n\n sorts,\n reverse,\n customColumns,\n\n selectedRanges,\n isTableDownloading,\n tableDownloadStatus,\n tableDownloadProgress,\n tableDownloadEstimatedTime,\n\n showSearchBar,\n searchValue,\n selectedSearchColumns,\n invertSearchColumns,\n\n aggregationSettings,\n selectedAggregation,\n rollupConfig,\n openOptions,\n pendingSavePromise,\n pendingSaveError,\n pendingRowCount,\n pendingDataErrors,\n pendingDataMap,\n toastMessage,\n frozenColumns,\n columnHeaderGroups,\n showOverflowModal,\n showNoPastePermissionModal,\n noPastePermissionError,\n overflowText,\n overflowButtonTooltipProps,\n expandCellTooltipProps,\n hoverTooltipProps,\n isGotoShown,\n gotoRow,\n gotoRowError,\n gotoValueError,\n gotoValueSelectedColumnName,\n gotoValue,\n gotoValueSelectedFilter,\n partitionConfig,\n } = this.state;\n if (!isReady) {\n return null;\n }\n\n const theme = this.getTheme();\n const { columnHeaderHeight: singleColumnHeaderHeight } = theme;\n\n const filter = this.getCachedFilter(\n customFilters,\n quickFilters,\n advancedFilters,\n searchFilter\n );\n\n const userColumnWidths = metricCalculator.getUserColumnWidths();\n const stateOverride = this.getCachedStateOverride(\n hoverSelectColumn,\n isFilterBarShown,\n isSelectingColumn,\n loadingScrimProgress,\n quickFilters,\n advancedFilters,\n sorts,\n reverse,\n rollupConfig,\n isMenuShown\n );\n const top = metrics ? metrics.top : 0;\n const bottom = metrics ? metrics.bottomViewport : 0;\n let left = null;\n let right = null;\n if (onlyFetchVisibleColumns) {\n left = metrics ? metrics.left : 0;\n right = metrics ? metrics.right : 0;\n }\n const isVisible =\n metrics != null && metrics.width > 0 && metrics.height > 0;\n const isRollup = (rollupConfig?.columns?.length ?? 0) > 0;\n\n let focusField = null;\n\n const debounceMs = metrics\n ? Math.min(\n Math.max(IrisGrid.minDebounce, Math.round(metrics.rowCount / 200)),\n IrisGrid.maxDebounce\n )\n : IrisGrid.maxDebounce;\n\n if (isFilterBarShown && focusedFilterBarColumn != null && metrics != null) {\n const { gridX, gridY, allColumnXs, allColumnWidths, width } = metrics;\n const columnX = allColumnXs.get(focusedFilterBarColumn);\n const columnWidth = allColumnWidths.get(focusedFilterBarColumn);\n if (columnX != null && columnWidth != null) {\n const x = gridX + columnX;\n const y = gridY - (theme.filterBarHeight ?? 0);\n const fieldWidth = columnWidth + 1; // cover right border\n const fieldHeight = (theme.filterBarHeight ?? 0) - 1; // remove bottom border\n const style = {\n top: y,\n left: x,\n minWidth: Math.min(fieldWidth, width - x), // Don't cause overflow\n height: fieldHeight,\n };\n let value = '';\n let isValid = true;\n const modelColumn = this.getModelColumn(focusedFilterBarColumn);\n assertNotNull(modelColumn);\n const quickFilter = quickFilters.get(modelColumn);\n const advancedFilter = advancedFilters.get(modelColumn);\n if (quickFilter != null) {\n value = quickFilter.text;\n isValid = quickFilter.filter != null;\n }\n const isBarFiltered =\n quickFilters.size !== 0 || advancedFilters.size !== 0;\n focusField = (\n <FilterInputField\n ref={this.filterInputRef}\n style={style}\n className={classNames({\n error: !isValid,\n active: value !== '' || advancedFilter != null,\n 'iris-grid-has-filter': isBarFiltered,\n })}\n isAdvancedFilterSet={advancedFilter != null}\n onAdvancedFiltersTriggered={() => {\n this.setState({ shownAdvancedFilter: focusedFilterBarColumn });\n }}\n key={focusedFilterBarColumn}\n onChange={this.handleFilterBarChange}\n onDone={this.handleFilterBarDone}\n onTab={this.handleFilterBarTab}\n onContextMenu={this.grid?.handleContextMenu}\n debounceMs={debounceMs}\n value={value}\n />\n );\n }\n }\n\n let loadingElement = null;\n if (loadingText != null) {\n const loadingStatus = (\n <div className=\"iris-grid-loading-status\">\n <div\n className={classNames('iris-grid-loading-status-bar', {\n show: loadingSpinnerShown,\n })}\n >\n {loadingText}\n </div>\n <button\n type=\"button\"\n onClick={this.handleCancel}\n className={classNames('iris-grid-btn-cancel', {\n show: loadingCancelShown,\n })}\n >\n <FontAwesomeIcon icon={vsClose} transform=\"down-1\" />\n Cancel\n </button>\n </div>\n );\n const gridY = metrics ? metrics.gridY : 0;\n loadingElement = (\n <div\n className=\"iris-grid-loading\"\n style={loadingBlocksGrid ? { top: gridY } : {}}\n >\n {loadingStatus}\n </div>\n );\n }\n\n let columnTooltip: React.ReactNode = null;\n if (shownColumnTooltip != null && metrics) {\n columnTooltip = this.getColumnTooltip(shownColumnTooltip, metrics, model);\n // #510 We may need to update the position of the tooltip if it's already opened and columns are resized\n this.tooltip?.update();\n }\n\n const filterBar = [];\n if (metrics && isFilterBarShown) {\n const { gridX, gridY, visibleColumns, allColumnXs, allColumnWidths } =\n metrics;\n const { filterBarHeight } = theme;\n\n for (let i = 0; i < visibleColumns.length; i += 1) {\n const columnIndex = visibleColumns[i];\n\n const columnX = allColumnXs.get(columnIndex);\n const columnWidth = allColumnWidths.get(columnIndex);\n const modelColumn = this.getModelColumn(columnIndex);\n if (modelColumn != null) {\n const isFilterable = model.isFilterable(modelColumn);\n if (\n isFilterable &&\n columnX != null &&\n columnWidth != null &&\n columnWidth > 0\n ) {\n const x = gridX + columnX + columnWidth - 24;\n const y = gridY - (filterBarHeight ?? 0) + 2; // 2 acts as top margin for the button\n const style: CSSProperties = {\n position: 'absolute',\n top: y,\n left: x,\n };\n const advancedFilter = advancedFilters.get(modelColumn);\n const isFilterSet = advancedFilter != null;\n const isFilterVisible =\n columnIndex === hoverAdvancedFilter ||\n columnIndex === focusedFilterBarColumn ||\n isFilterSet;\n const element = (\n <div\n className={classNames('advanced-filter-button-container', {\n hidden: !isFilterVisible,\n })}\n key={columnIndex}\n style={style}\n >\n {isFilterVisible && (\n <Button\n kind=\"ghost\"\n className={classNames(\n 'btn-link-icon advanced-filter-button',\n {\n 'filter-set': isFilterSet,\n }\n )}\n onClick={() => {\n this.setState({ shownAdvancedFilter: columnIndex });\n }}\n onContextMenu={event => {\n this.grid?.handleContextMenu(event);\n }}\n onMouseEnter={() => {\n this.setState({ hoverAdvancedFilter: columnIndex });\n }}\n onMouseLeave={() => {\n this.setState({ hoverAdvancedFilter: null });\n }}\n >\n <div className=\"fa-layers\">\n <FontAwesomeIcon\n icon={dhFilterFilled}\n className=\"filter-solid\"\n />\n <FontAwesomeIcon\n icon={vsFilter}\n className=\"filter-light\"\n />\n </div>\n </Button>\n )}\n </div>\n );\n filterBar.push(element);\n }\n }\n }\n }\n const advancedFilterMenus = [];\n if (metrics) {\n const {\n gridX,\n visibleColumns,\n allColumnXs,\n allColumnWidths,\n columnHeaderHeight,\n } = metrics;\n for (let i = 0; i < visibleColumns.length; i += 1) {\n const columnIndex = visibleColumns[i];\n const columnX = allColumnXs.get(columnIndex);\n const columnWidth = allColumnWidths.get(columnIndex);\n if (columnX != null && columnWidth != null && columnWidth > 0) {\n const xColumnHeader = gridX + columnX;\n const xFilterBar = gridX + columnX + columnWidth - 20;\n const style: CSSProperties = isFilterBarShown\n ? {\n position: 'absolute',\n top: columnHeaderHeight,\n left: xFilterBar,\n width: 20,\n height: theme.filterBarHeight,\n }\n : {\n position: 'absolute',\n top: 0,\n left: xColumnHeader,\n width: columnWidth,\n height: columnHeaderHeight,\n };\n const modelColumn = this.getModelColumn(columnIndex);\n if (modelColumn != null) {\n const column = model.columns[modelColumn];\n if (column == null) {\n // Grid metrics is likely out of sync with model\n log.warn(\n `Column does not exist at index ${modelColumn} for column array of length ${model.columns.length}`\n );\n // eslint-disable-next-line no-continue\n continue;\n }\n const advancedFilter = advancedFilters.get(modelColumn);\n const { options: advancedFilterOptions } = advancedFilter || {};\n const sort = TableUtils.getSortForColumn(model.sort, column.name);\n\n const sortDirection = sort ? sort.direction : null;\n if (!isSortDirection(sortDirection)) {\n throw new Error(`Invalid sort direction: ${sortDirection}`);\n }\n\n const element = (\n <div\n key={columnIndex}\n className=\"advanced-filter-menu-container\"\n style={style}\n >\n <Popper\n className=\"advanced-filter-menu-popper\"\n onEntered={this.getAdvancedMenuOpenedHandler(columnIndex)}\n onExited={() => {\n this.handleAdvancedMenuClosed(columnIndex);\n }}\n isShown={shownAdvancedFilter === columnIndex}\n interactive\n closeOnBlur\n options={{\n positionFixed: true,\n }}\n >\n {this.getCachedAdvancedFilterMenuActions(\n model,\n column,\n advancedFilterOptions,\n sortDirection,\n formatter\n )}\n </Popper>\n </div>\n );\n advancedFilterMenus.push(element);\n }\n }\n }\n }\n\n const optionItems = this.getCachedOptionItems(\n onCreateChart !== undefined && model.isChartBuilderAvailable,\n model.isCustomColumnsAvailable,\n model.isFormatColumnsAvailable,\n model.isOrganizeColumnsAvailable,\n model.isRollupAvailable,\n model.isTotalsAvailable || isRollup,\n model.isSelectDistinctAvailable,\n model.isExportAvailable,\n this.toggleFilterBarAction,\n this.toggleSearchBarAction,\n this.toggleGotoRowAction,\n isFilterBarShown,\n showSearchBar,\n canDownloadCsv,\n this.isTableSearchAvailable(),\n isGotoShown,\n advancedSettings.size > 0\n );\n\n const hiddenColumns = this.getCachedHiddenColumns(\n metricCalculator,\n userColumnWidths\n );\n\n const openOptionsStack = openOptions.map(option => {\n switch (option.type) {\n case OptionType.CHART_BUILDER:\n return (\n <ChartBuilder\n model={model}\n onChange={this.handleChartChange}\n onSubmit={this.handleChartCreate}\n key={OptionType.CHART_BUILDER}\n />\n );\n case OptionType.VISIBILITY_ORDERING_BUILDER:\n return (\n <VisibilityOrderingBuilder\n model={model}\n movedColumns={movedColumns}\n hiddenColumns={hiddenColumns}\n columnHeaderGroups={columnHeaderGroups}\n onColumnVisibilityChanged={this.handleColumnVisibilityChanged}\n onReset={this.handleColumnVisibilityReset}\n onMovedColumnsChanged={this.handleMovedColumnsChanged}\n onColumnHeaderGroupChanged={this.handleHeaderGroupsChanged}\n key={OptionType.VISIBILITY_ORDERING_BUILDER}\n />\n );\n case OptionType.CONDITIONAL_FORMATTING:\n return (\n <ConditionalFormattingMenu\n rules={conditionalFormats}\n onChange={this.handleConditionalFormatsChange}\n onCreate={this.handleConditionalFormatCreate}\n onSelect={this.handleConditionalFormatEdit}\n />\n );\n case OptionType.CONDITIONAL_FORMATTING_EDIT:\n assertNotNull(model.columns);\n assertNotNull(this.handleConditionalFormatEditorUpdate);\n return (\n <ConditionalFormatEditor\n dh={model.dh}\n columns={model.columns}\n rule={conditionalFormatPreview}\n onUpdate={this.handleConditionalFormatEditorUpdate}\n onSave={this.handleConditionalFormatEditorSave}\n onCancel={this.handleConditionalFormatEditorCancel}\n />\n );\n case OptionType.CUSTOM_COLUMN_BUILDER:\n return (\n <CustomColumnBuilder\n model={model}\n customColumns={customColumns}\n onSave={this.handleUpdateCustomColumns}\n onCancel={this.handleMenuBack}\n key={OptionType.CUSTOM_COLUMN_BUILDER}\n />\n );\n case OptionType.ROLLUP_ROWS:\n return (\n <RollupRows\n model={model}\n onChange={this.handleRollupChange}\n config={rollupConfig}\n key={OptionType.ROLLUP_ROWS}\n />\n );\n case OptionType.AGGREGATIONS:\n return (\n <Aggregations\n settings={aggregationSettings}\n isRollup={isRollup}\n availablePlacements={\n isEditableGridModel(model) && model.isEditable\n ? ['top']\n : ['top', 'bottom']\n }\n onChange={this.handleAggregationsChange}\n onEdit={this.handleAggregationEdit}\n dh={model.dh}\n />\n );\n case OptionType.AGGREGATION_EDIT:\n return (\n selectedAggregation && (\n <AggregationEdit\n aggregation={selectedAggregation}\n columns={model.originalColumns}\n onChange={this.handleAggregationChange}\n />\n )\n );\n case OptionType.TABLE_EXPORTER:\n return (\n <TableCsvExporter\n model={model}\n name={name}\n userColumnWidths={userColumnWidths}\n movedColumns={movedColumns}\n isDownloading={isTableDownloading}\n tableDownloadStatus={tableDownloadStatus}\n tableDownloadProgress={tableDownloadProgress}\n tableDownloadEstimatedTime={\n tableDownloadEstimatedTime ?? undefined\n }\n onDownload={this.handleDownloadTable}\n onDownloadStart={this.handleDownloadTableStart}\n onCancel={this.handleCancelDownloadTable}\n selectedRanges={selectedRanges}\n key={OptionType.TABLE_EXPORTER}\n />\n );\n case OptionType.SELECT_DISTINCT:\n return (\n <SelectDistinctBuilder\n model={model}\n selectDistinctColumns={selectDistinctColumns}\n onChange={this.handleSelectDistinctChanged}\n />\n );\n case OptionType.ADVANCED_SETTINGS:\n return (\n <AdvancedSettingsMenu\n items={advancedSettings}\n onChange={onAdvancedSettingsChange}\n />\n );\n\n default:\n throw Error(`Unexpected option type ${option.type}`);\n }\n });\n\n return (\n <div className=\"iris-grid\" role=\"presentation\">\n <div className=\"iris-grid-column\">\n {children != null && <div className=\"iris-grid-bar\">{children}</div>}\n <CSSTransition\n in={isSelectingPartition}\n timeout={ThemeExport.transitionSlowMs}\n classNames=\"iris-grid-bar-horizontal\"\n onEnter={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExit={this.handleAnimationStart}\n onExited={this.handleAnimationEnd}\n mountOnEnter\n unmountOnExit\n nodeRef={this.slideTransitionRef}\n >\n <div\n ref={this.slideTransitionRef}\n className=\"iris-grid-partition-selector-wrapper iris-grid-bar iris-grid-bar-primary\"\n >\n {isPartitionedGridModel(model) && model.isPartitionRequired && (\n <IrisGridPartitionSelector\n model={model}\n partitionConfig={partitionConfig}\n onChange={this.handlePartitionChange}\n />\n )}\n </div>\n </CSSTransition>\n <CSSTransition\n in={showSearchBar}\n timeout={ThemeExport.transitionSlowMs}\n classNames=\"iris-grid-bar-horizontal\"\n onEnter={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExit={this.handleAnimationStart}\n onExited={this.handleAnimationEnd}\n mountOnEnter\n unmountOnExit\n nodeRef={this.bottomTransitionRef}\n >\n <div ref={this.bottomTransitionRef} className=\"iris-grid-bar\">\n <CrossColumnSearch\n value={searchValue}\n selectedColumns={selectedSearchColumns}\n invertSelection={invertSearchColumns}\n onChange={this.handleCrossColumnSearch}\n columns={model.columns}\n ref={this.crossColumnRef}\n />\n </div>\n </CSSTransition>\n <Grid\n ref={grid => {\n this.grid = grid;\n }}\n isStickyBottom={!isEditableGridModel(model) || !model.isEditable}\n isStuckToBottom={isStuckToBottom}\n isStuckToRight={isStuckToRight}\n metricCalculator={metricCalculator}\n model={model}\n keyHandlers={this.getKeyHandlers()}\n mouseHandlers={this.getMouseHandlers()}\n movedColumns={movedColumns}\n movedRows={movedRows}\n onError={this.handleGridError}\n onViewChanged={this.handleViewChanged}\n onSelectionChanged={this.handleSelectionChanged}\n onMovedColumnsChanged={this.handleMovedColumnsChanged}\n renderer={this.renderer}\n stateOverride={stateOverride}\n theme={theme}\n >\n <IrisGridCellOverflowModal\n isOpen={showOverflowModal}\n text={overflowText}\n onClose={this.handleOverflowClose}\n />\n {isVisible && (\n <IrisGridModelUpdater\n model={model}\n top={top}\n bottom={bottom}\n left={left}\n right={right}\n filter={filter}\n formatter={formatter}\n columnAlignmentMap={columnAlignmentMap}\n sorts={sorts}\n reverse={reverse}\n movedColumns={movedColumns}\n customColumns={customColumns}\n hiddenColumns={hiddenColumns}\n alwaysFetchColumns={this.getAlwaysFetchColumns(\n alwaysFetchColumns,\n model.columns,\n movedColumns,\n model.floatingLeftColumnCount,\n model.floatingRightColumnCount,\n this.grid?.state.draggingColumn?.range\n )}\n formatColumns={this.getCachedPreviewFormatColumns(\n model.dh,\n model.columns,\n conditionalFormats,\n conditionalFormatPreview,\n // Disable the preview format when we press Back on the format edit page\n openOptions[openOptions.length - 1]?.type ===\n OptionType.CONDITIONAL_FORMATTING_EDIT\n ? conditionalFormatEditIndex ?? undefined\n : undefined\n )}\n rollupConfig={this.getModelRollupConfig(\n model.originalColumns,\n rollupConfig,\n aggregationSettings\n )}\n totalsConfig={this.getModelTotalsConfig(\n model.columns,\n rollupConfig,\n aggregationSettings\n )}\n selectDistinctColumns={selectDistinctColumns}\n pendingRowCount={pendingRowCount}\n pendingDataMap={pendingDataMap}\n frozenColumns={frozenColumns}\n columnHeaderGroups={columnHeaderGroups}\n partitionConfig={partitionConfig}\n showExtraGroupColumn={this.showExtraGroupColumn}\n />\n )}\n {!isMenuShown && (\n <div\n className=\"grid-settings-button\"\n style={{\n height: `${singleColumnHeaderHeight}px`,\n width: `${singleColumnHeaderHeight}px`,\n }}\n >\n <Button\n kind=\"ghost\"\n data-testid={`btn-iris-grid-settings-button-${name}`}\n onClick={this.handleMenu}\n icon={<FontAwesomeIcon icon={vsMenu} transform=\"up-1\" />}\n tooltip=\"Table Options\"\n />\n </div>\n )}\n {focusField}\n {loadingElement}\n {filterBar}\n {columnTooltip}\n {advancedFilterMenus}\n {overflowButtonTooltipProps &&\n this.getOverflowButtonTooltip(overflowButtonTooltipProps)}\n {expandCellTooltipProps &&\n this.getExpandCellTooltip(expandCellTooltipProps)}\n {hoverTooltipProps && this.getHoverTooltip(hoverTooltipProps)}\n </Grid>\n <GotoRow\n ref={this.gotoRowRef}\n model={model}\n isShown={isGotoShown}\n gotoRow={gotoRow}\n gotoRowError={gotoRowError}\n gotoValueError={gotoValueError}\n onGotoRowSubmit={this.handleGotoRowSelectedRowNumberSubmit}\n onGotoRowNumberChanged={this.handleGotoRowSelectedRowNumberChanged}\n onClose={this.handleGotoRowClosed}\n onEntering={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExiting={() => {\n this.handleAnimationStart();\n this.focus();\n }}\n onExited={this.handleAnimationEnd}\n gotoValueSelectedColumnName={gotoValueSelectedColumnName}\n gotoValue={gotoValue}\n gotoValueFilter={gotoValueSelectedFilter}\n onGotoValueSelectedColumnNameChanged={\n this.handleGotoValueSelectedColumnNameChanged\n }\n onGotoValueSelectedFilterChanged={\n this.handleGotoValueSelectedFilterChanged\n }\n onGotoValueChanged={this.handleGotoValueChanged}\n onGotoValueSubmit={this.handleGotoValueSubmitted}\n />\n\n <PendingDataBottomBar\n error={pendingSaveError}\n isSaving={pendingSavePromise != null}\n saveTooltip={`Commit (${this.commitAction.shortcut.getDisplayText()})`}\n discardTooltip={`Discard (${this.discardAction.shortcut.getDisplayText()})`}\n pendingDataErrors={pendingDataErrors}\n pendingDataMap={pendingDataMap}\n onEntering={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExiting={this.handleAnimationStart}\n onExited={this.handleAnimationEnd}\n onSave={this.handlePendingCommitClicked}\n onDiscard={this.handlePendingDiscardClicked}\n />\n <ToastBottomBar>{toastMessage}</ToastBottomBar>\n <IrisGridCopyHandler\n model={model}\n copyOperation={copyOperation ?? undefined}\n onEntering={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExiting={this.handleAnimationStart}\n onExited={this.handleAnimationEnd}\n />\n <TableSaver\n dh={model.dh}\n ref={tableSaver => {\n this.tableSaver = tableSaver;\n }}\n getDownloadWorker={getDownloadWorker}\n onDownloadCompleted={this.handleDownloadCompleted}\n onDownloadCanceled={this.handleDownloadCanceled}\n onDownloadProgressUpdate={this.handleDownloadProgressUpdate}\n isDownloading={\n tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING\n }\n formatter={formatter}\n />\n </div>\n <SlideTransition\n in={isMenuShown}\n onEntering={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExiting={this.handleAnimationStart}\n onExited={this.handleAnimationEnd}\n mountOnEnter\n unmountOnExit\n >\n <div className=\"table-sidebar\">\n <Stack>\n <Page title=\"Table Options\" onClose={this.handleMenuClose}>\n <Menu\n onSelect={i => this.handleMenuSelect(optionItems[i])}\n items={optionItems}\n />\n </Page>\n {openOptionsStack.map((option, i) => (\n <Page\n title={openOptions[i].title}\n onBack={this.handleMenuBack}\n onClose={this.handleMenuClose}\n key={openOptions[i].type}\n >\n {option}\n </Page>\n ))}\n </Stack>\n </div>\n </SlideTransition>\n <ContextActions actions={this.contextActions} />\n <NoPastePermissionModal\n isOpen={showNoPastePermissionModal}\n onClose={this.handleCloseNoPastePermissionModal}\n errorMessage={noPastePermissionError}\n />\n </div>\n );\n }\n}\n\nexport default IrisGrid;\n"],"mappings":"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","ignoreList":[]}