@deephaven/iris-grid 1.21.1 → 1.22.1-alpha-pivot-builder.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/README.md +284 -1
  2. package/dist/AdvancedFilterCreator.css +42 -0
  3. package/dist/AdvancedFilterCreator.css.map +1 -1
  4. package/dist/AdvancedFilterCreator.d.ts +2 -0
  5. package/dist/AdvancedFilterCreator.d.ts.map +1 -1
  6. package/dist/AdvancedFilterCreator.js +13 -3
  7. package/dist/AdvancedFilterCreator.js.map +1 -1
  8. package/dist/CommonTypes.d.ts +62 -2
  9. package/dist/CommonTypes.d.ts.map +1 -1
  10. package/dist/CommonTypes.js.map +1 -1
  11. package/dist/IrisGrid.d.ts +89 -3
  12. package/dist/IrisGrid.d.ts.map +1 -1
  13. package/dist/IrisGrid.js +294 -91
  14. package/dist/IrisGrid.js.map +1 -1
  15. package/dist/IrisGridModel.d.ts +30 -1
  16. package/dist/IrisGridModel.d.ts.map +1 -1
  17. package/dist/IrisGridModel.js +36 -1
  18. package/dist/IrisGridModel.js.map +1 -1
  19. package/dist/IrisGridModelWidgetProps.d.ts +26 -0
  20. package/dist/IrisGridModelWidgetProps.d.ts.map +1 -0
  21. package/dist/IrisGridModelWidgetProps.js +2 -0
  22. package/dist/IrisGridModelWidgetProps.js.map +1 -0
  23. package/dist/IrisGridProxyModel.d.ts.map +1 -1
  24. package/dist/IrisGridProxyModel.js +34 -2
  25. package/dist/IrisGridProxyModel.js.map +1 -1
  26. package/dist/IrisGridTextCellRenderer.d.ts.map +1 -1
  27. package/dist/IrisGridTextCellRenderer.js +1 -1
  28. package/dist/IrisGridTextCellRenderer.js.map +1 -1
  29. package/dist/IrisGridUtils.d.ts +25 -2
  30. package/dist/IrisGridUtils.d.ts.map +1 -1
  31. package/dist/IrisGridUtils.js +99 -42
  32. package/dist/IrisGridUtils.js.map +1 -1
  33. package/dist/LazyIrisGrid.d.ts +1 -1
  34. package/dist/RemoteComponentModules.d.ts +12 -0
  35. package/dist/RemoteComponentModules.d.ts.map +1 -0
  36. package/dist/RemoteComponentModules.js +16 -0
  37. package/dist/RemoteComponentModules.js.map +1 -0
  38. package/dist/index.d.ts +2 -0
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +2 -0
  41. package/dist/index.js.map +1 -1
  42. package/dist/sidebar/IrisGridTableOptionsWidgetProps.d.ts +22 -0
  43. package/dist/sidebar/IrisGridTableOptionsWidgetProps.d.ts.map +1 -0
  44. package/dist/sidebar/IrisGridTableOptionsWidgetProps.js +2 -0
  45. package/dist/sidebar/IrisGridTableOptionsWidgetProps.js.map +1 -0
  46. package/dist/sidebar/OptionType.d.ts +8 -0
  47. package/dist/sidebar/OptionType.d.ts.map +1 -1
  48. package/dist/sidebar/OptionType.js +7 -0
  49. package/dist/sidebar/OptionType.js.map +1 -1
  50. package/dist/sidebar/PluginTableOptionsErrorBoundary.d.ts +30 -0
  51. package/dist/sidebar/PluginTableOptionsErrorBoundary.d.ts.map +1 -0
  52. package/dist/sidebar/PluginTableOptionsErrorBoundary.js +60 -0
  53. package/dist/sidebar/PluginTableOptionsErrorBoundary.js.map +1 -0
  54. package/dist/sidebar/index.d.ts +3 -2
  55. package/dist/sidebar/index.d.ts.map +1 -1
  56. package/dist/sidebar/index.js.map +1 -1
  57. package/package.json +16 -16
@@ -1 +1 @@
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","isExpandableColumnGridModel","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","isColumnHeaderGroup","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","theme","hoverSelectColumn","isSelectingColumn","loadingScrimProgress","isMenuShown","customFilters","getFiltersFromFilterMap","contextTheme","isEditable","floatingRowCount","density","_theme$rowFooterWidth","baseTheme","rowFooterWidth","state","resetCalculatedColumnWidths","resetCalculatedRowHeights","densityTheme","compact","spacious","_objectSpread","autoSelectRow","keyHandlers","sort","b","order","mouseHandlers","handler","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","handleFrozenColumnsChanged","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","userColumnWidthsByName","userRowHeights","canCopy","frozenColumns","columnHeaderGroups","getMetricCalculator","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","isChanged","applyInputFilters","resetRanges","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","getMetricState","_this$grid2","gridMetricState","getCachedStateOverride","getTheme","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","_ref4","contextDensity","context","getCachedTheme","floatingTopRowCount","floatingBottomRowCount","getVisibleColumn","modelIndex","getVisibleIndex","text","err","replaceExisting","newAdvancedFilters","newQuickFilters","_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$grid3","focusFilterBar","isFilterable","metricState","scrollColumn","getScrollLeftForColumn","_this$grid4","left","leftOffset","lastFocusedFilterBarColumn","hideColumnByVisibleIndex","columnVisibleIndex","_this$grid5","setColumnWidth","freezeColumnByColumnName","allFrozenColumns","visibleIndex","newMovedColumns","moveItem","unFreezeColumnByColumnName","frontColumns","toggleExpandColumn","expandDescendants","hasExpandableColumns","setColumnExpanded","isColumnExpanded","expandAllColumns","isExpandAllColumnsAvailable","collapseAllColumns","modelIndexes","isVisible","_this$grid6","defaultWidth","calculatedWidth","calculatedColumnWidths","resetColumnWidth","_model$layoutHints$fr","_model$layoutHints2","resetAllColumnWidths","_this$grid7","updateCanvas","prevConfig","onError","loadingMessage","showAllColumns","_this$grid8","columnWidth","updateMetrics","_this$grid9","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","_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","prevColumnHeaderGroups","every","group","isValid","parseColumnHeaderGroups","groups","_this$grid20","tooltip","startTimer","CONDITIONAL_FORMATTING_EDIT","oldCustomColumns","customColumn","removedColumnNames","getRemovedCustomColumnNames","newSorts","removeSortsInColumns","removeFiltersInColumns","removeColumnFromMovedColumns","newSelectDistinctColumns","removeColumnsFromSelectDistinctColumns","_this$grid21","handleResizeColumn","_this$grid22","contentWidth","contentColumnWidths","userWidths","setCalculatedColumnWidth","handleResizeAllColumns","_this$grid23","allColumns","allColumnWidths","visibleColumns","_ref17","width","_ref18","contentWidths","manualColumns","_rollupConfig$columns","_rollupConfig$columns2","added","removed","isRollup","changes","shouldStartLoading","op","isRollupProhibited","join","aggregation","_rollupConfig$columns3","_rollupConfig$columns4","_ref19","_rollupConfig$columns5","_rollupConfig$columns6","getUserColumnWidthsByName","resetColumnWidthByName","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","_this$grid24","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","convertValueToText","getFilterBarInput","_this$grid29","filterBoxCoordinates","getFilterInputCoordinates","debounceMs","minDebounce","round","maxDebounce","fieldWidth","fieldHeight","minWidth","advancedFilter","isBarFiltered","showAdvancedFilterButton","getAdvancedFilterButtonCoordinates","active","isAdvancedFilterSet","onAdvancedFiltersTriggered","onTab","onContextMenu","handleContextMenu","render","_rollupConfig$columns7","_rollupConfig$columns8","_this7","_this$grid30","_openOptions","getDownloadWorker","isStuckToBottom","isStuckToRight","onlyFetchVisibleColumns","onAdvancedSettingsChange","singleColumnHeaderHeight","getCachedFilter","stateOverride","focusField","loadingElement","loadingStatus","show","onClick","transform","gridY","columnTooltip","_this$tooltip2","filterBar","_loop2","buttonCoordinates","isFilterSet","isFilterVisible","element","hidden","kind","_this7$grid","onMouseEnter","onMouseLeave","advancedFilterMenus","gridX","_loop3","xColumnHeader","xFilterBar","filterBarHeight","onEntered","getAdvancedMenuOpenedHandler","isShown","closeOnBlur","positionFixed","getCachedAdvancedFilterMenuActions","getCachedOptionItems","getCachedHiddenColumns","openOptionsStack","onSubmit","onColumnVisibilityChanged","onReset","onMovedColumnsChanged","onColumnHeaderGroupChanged","onFrozenColumnsChanged","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","_len","args","_key"],"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 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 isExpandableColumnGridModel,\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 type SortDescriptor,\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, {\n type IrisGridMetricState,\n} 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 IrisGridStateOverride,\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';\nimport { isColumnHeaderGroup } from './ColumnHeaderGroup';\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 SortDescriptor[];\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; // Default behavior treats no operator as equals\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 type MouseHandlersProp = readonly (\n | GridMouseHandler\n | ((irisGrid: IrisGrid) => GridMouseHandler)\n)[];\n\nexport type GetMetricCalculatorType = (\n ...args: ConstructorParameters<typeof IrisGridMetricCalculator>\n) => IrisGridMetricCalculator;\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 SortDescriptor[];\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 /**\n * @deprecated Pass `userColumnWidthsByName` instead. The by-index map is\n * lossy across model swaps because column indices change when the model\n * is replaced (e.g. when applying or removing a rollup). Kept for\n * back-compat with consumers that have not migrated.\n */\n userColumnWidths: ReadonlyMap<ModelIndex, number>;\n /**\n * Map of user-set column widths keyed by column name. Source of truth\n * for hidden/manually-sized columns across model swaps and persistence\n * boundaries. Takes precedence over `userColumnWidths` when both are\n * provided.\n */\n userColumnWidthsByName?: ReadonlyMap<ColumnName, 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?: Partial<IrisGridThemeType> & Record<string, unknown>;\n\n canToggleSearch: boolean;\n\n columnHeaderGroups?: readonly ColumnHeaderGroup[];\n\n // Optional key and mouse handlers\n keyHandlers: readonly KeyHandler[];\n mouseHandlers: MouseHandlersProp;\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 getMetricCalculator: GetMetricCalculatorType;\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 SortDescriptor[];\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 userColumnWidthsByName: undefined,\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: undefined,\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 getMetricCalculator: (\n ...args: ConstructorParameters<typeof IrisGridMetricCalculator>\n ): IrisGridMetricCalculator => new IrisGridMetricCalculator(...args),\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 this.handleFrozenColumnsChanged =\n this.handleFrozenColumnsChanged.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 userColumnWidthsByName,\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 getMetricCalculator,\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: MouseHandlersProp = [\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 ...(canCopy ? [new IrisGridCopyCellMouseHandler(this)] : []),\n ];\n if (canCopy) {\n keyHandlers.push(new CopyKeyHandler(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 = getMetricCalculator({\n userColumnWidths: new Map(userColumnWidths),\n userColumnWidthsByName:\n userColumnWidthsByName != null\n ? new Map(userColumnWidthsByName)\n : undefined,\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 const isChanged = this.applyInputFilters(\n changedInputFilters,\n replaceExistingFilters\n );\n if (isChanged) {\n this.startLoading('Filtering...', { resetRanges: true });\n }\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: MouseHandlersProp;\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 model: IrisGridModel,\n theme: IrisGridThemeType,\n hoverSelectColumn: GridRangeIndex,\n isFilterBarShown: boolean,\n isSelectingColumn: boolean,\n loadingScrimProgress: number | null,\n quickFilters: ReadonlyQuickFilterMap,\n advancedFilters: ReadonlyAdvancedFilterMap,\n sorts: readonly SortDescriptor[],\n reverse: boolean,\n rollupConfig: UIRollupConfig | undefined,\n isMenuShown: boolean\n ): IrisGridStateOverride => ({\n model,\n theme,\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 getMetricState(): IrisGridMetricState | undefined {\n const gridMetricState = this.grid?.getMetricState();\n if (gridMetricState == null) {\n return undefined;\n }\n const {\n advancedFilters,\n hoverSelectColumn,\n isFilterBarShown,\n isMenuShown,\n loadingScrimProgress,\n quickFilters,\n sorts,\n reverse,\n rollupConfig,\n } = this.state;\n\n const { model, isSelectingColumn } = this.props;\n\n return {\n ...gridMetricState,\n ...this.getCachedStateOverride(\n model,\n this.getTheme(),\n hoverSelectColumn,\n isFilterBarShown,\n isSelectingColumn,\n loadingScrimProgress,\n quickFilters,\n advancedFilters,\n sorts,\n reverse,\n rollupConfig,\n isMenuShown\n ),\n };\n }\n\n getCachedMouseHandlers = memoize(\n (mouseHandlers: MouseHandlersProp): readonly GridMouseHandler[] =>\n [...mouseHandlers, ...this.mouseHandlers].map(handler =>\n typeof handler === 'function' ? handler(this) : handler\n ),\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 /**\n * Get the model column index for the provided visible index\n * @param columnIndex Visible column index\n * @returns Model column index, or null if not found\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 if (columnIndex != null && columnIndex < 0) {\n // ColumnBy sources aren't movable, so just return the index directly\n return columnIndex;\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 * @returns True if any filters were changed as a result of this operation\n */\n applyInputFilters(\n inputFilters: InputFilter[],\n replaceExisting = false\n ): boolean {\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 return isChanged;\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\n if (advancedFilters.size === 0 && quickFilters.size === 0) {\n log.debug('No filters to rebuild');\n return;\n }\n\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 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 metricState = this.getMetricState();\n assertNotNull(metricState);\n\n const scrollColumn = metricCalculator.getScrollLeftForColumn(\n column,\n metricState,\n metrics\n );\n\n if (scrollColumn != null) {\n this.grid?.setViewState({ left: scrollColumn, leftOffset: 0 }, 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 /**\n * Updates the entire list of frozen columns.\n * Used by VisibilityOrderingBuilder.\n * @param frozenColumns The new list of frozen columns\n */\n handleFrozenColumnsChanged(frozenColumns: readonly ColumnName[]): void {\n this.setState({ frozenColumns });\n }\n\n toggleExpandColumn(\n modelIndex: ModelIndex,\n expandDescendants?: boolean\n ): void {\n log.debug2('Toggle expand column', modelIndex);\n const { model } = this.props;\n if (isExpandableColumnGridModel(model) && model.hasExpandableColumns) {\n model.setColumnExpanded(\n modelIndex,\n !model.isColumnExpanded(modelIndex),\n expandDescendants\n );\n }\n }\n\n expandAllColumns(): void {\n log.debug2('Expand all columns');\n const { model } = this.props;\n if (\n isExpandableColumnGridModel(model) &&\n model.isExpandAllColumnsAvailable\n ) {\n model.expandAllColumns();\n }\n }\n\n collapseAllColumns(): void {\n log.debug2('Collapse all columns');\n const { model } = this.props;\n if (\n isExpandableColumnGridModel(model) &&\n model.isExpandAllColumnsAvailable\n ) {\n model.collapseAllColumns();\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 = metrics.calculatedColumnWidths.get(modelIndex);\n\n // If we haven't scrolled to the column, the calculated width will be undefined.\n // This means the function was triggered by the visibility ordering menu,\n // so just reset the column width to default.\n if (defaultWidth !== calculatedWidth && calculatedWidth != null) {\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 } = this.state;\n const { model } = this.props;\n metricCalculator.resetAllColumnWidths();\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 /**\n * Updates grid metrics after model columns have changed\n * to keep Grid and IrisGrid metrics in sync since metrics are stored in both places.\n */\n updateMetrics(): void {\n this.setState({\n metrics: this.grid?.updateMetrics(),\n });\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 SortDescriptor[]): 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 } = model.columns[cursorColumn];\n\n // Use raw value (same as Copy Cell Unformatted) to preserve full precision and timezone\n const text = String(this.getValueForCell(cursorColumn, cursorRow, true));\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 // For partitioned tables, we want to rebuild filters on table change to ensure filters are applied to the new partition\n const { partitionConfig } = this.state;\n if (isPartitionedGridModel(model) && partitionConfig?.mode !== 'keys') {\n this.rebuildFilters();\n }\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 const { columnHeaderGroups: prevColumnHeaderGroups } = this.state;\n if (prevColumnHeaderGroups === columnHeaderGroups) {\n return;\n }\n\n this.setState(\n {\n // undo/redo will pass already parsed groups\n // Parsing them again causes a loop with undo/redo that makes it unusable\n columnHeaderGroups: columnHeaderGroups.every(\n (group): group is ColumnHeaderGroup =>\n isColumnHeaderGroup(group) && group.isValid()\n )\n ? columnHeaderGroups\n : IrisGridUtils.parseColumnHeaderGroups(model, 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('Model columns changed');\n const { isReady } = this.state;\n if (isReady) {\n this.updateMetrics();\n\n // Make sure stopLoading() is called after the updateMetrics call,\n // otherwise IrisGridModelUpdater queues an extra setViewport based on old metrics.\n this.stopLoading();\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 // Un-hide hidden group-by columns.\n if (rollupConfig?.columns != null && rollupConfig.columns.length > 0) {\n const { metricCalculator } = this.state;\n const userColumnWidthsByName =\n metricCalculator.getUserColumnWidthsByName();\n rollupConfig.columns.forEach(name => {\n if (userColumnWidthsByName.get(name) === 0) {\n metricCalculator.resetColumnWidthByName(name);\n }\n });\n }\n\n this.resetGridViewState();\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 this.grid?.focus(); // Focus on the grid after closing the overflow modal\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 /**\n * Render the input field for the focused filter\n * @param metrics Grid metrics\n * @param metricCalculator Metric calculator\n * @param focusedFilterBarColumn Column index for the focused filter\n * @param quickFilters Quick filters map\n * @param advancedFilters Advanced filters map\n * @returns The filter input field element or null if not applicable\n */\n getFilterBarInput(\n metrics: GridMetrics | undefined,\n metricCalculator: IrisGridMetricCalculator,\n focusedFilterBarColumn: VisibleIndex | null,\n quickFilters: ReadonlyQuickFilterMap,\n advancedFilters: ReadonlyAdvancedFilterMap\n ): ReactElement | null {\n if (metrics == null || focusedFilterBarColumn == null) {\n return null;\n }\n\n const metricState = this.getMetricState();\n if (metricState == null) {\n return null;\n }\n\n const filterBoxCoordinates = metricCalculator.getFilterInputCoordinates(\n focusedFilterBarColumn,\n metricState,\n metrics\n );\n if (filterBoxCoordinates == null) {\n return null;\n }\n\n const debounceMs = Math.min(\n Math.max(IrisGrid.minDebounce, Math.round(metrics.rowCount / 200)),\n IrisGrid.maxDebounce\n );\n const {\n x,\n y,\n width: fieldWidth,\n height: fieldHeight,\n } = filterBoxCoordinates;\n const { width } = metrics;\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 = quickFilters.size !== 0 || advancedFilters.size !== 0;\n const showAdvancedFilterButton =\n metricCalculator.getAdvancedFilterButtonCoordinates(\n focusedFilterBarColumn,\n metricState,\n metrics\n ) != null;\n return (\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 showAdvancedFilterButton={showAdvancedFilterButton}\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 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 model,\n theme,\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 const focusField = isFilterBarShown\n ? this.getFilterBarInput(\n metrics,\n metricCalculator,\n focusedFilterBarColumn,\n quickFilters,\n advancedFilters\n )\n : null;\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 metricState = this.getMetricState();\n\n // Advanced Filter buttons\n const { visibleColumns } = metrics;\n\n for (let i = 0; i < visibleColumns.length; i += 1) {\n const columnIndex = visibleColumns[i];\n const modelColumn = this.getModelColumn(columnIndex);\n\n if (modelColumn != null) {\n const isFilterable = model.isFilterable(modelColumn);\n const buttonCoordinates =\n isFilterable && metricState\n ? metricCalculator.getAdvancedFilterButtonCoordinates(\n columnIndex,\n metricState,\n metrics\n )\n : null;\n if (buttonCoordinates != null) {\n const { x, y } = buttonCoordinates;\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 onFrozenColumnsChanged={this.handleFrozenColumnsChanged}\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":[]}
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","isExpandableColumnGridModel","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","PluginTableOptionsErrorBoundary","AdvancedSettingsType","AdvancedSettingsMenu","SHORTCUTS","ConditionalFormattingMenu","ConditionalFormatEditor","IrisGridCellOverflowModal","GotoRow","IrisGridThemeContext","isMissingPartitionError","NoPastePermissionModal","isColumnHeaderGroup","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","handleAdvancedFilterToggleMaximize","model","advancedFilterOptions","sortDirection","formatter","isMaximized","onToggleMaximize","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","order","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","items","transformTableOptions","transformedItems","err","error","sortedItems","map","item","index","sort","a","b","_a$item$order","_b$item$order","Infinity","_ref2","keys","Set","i","key","String","has","warn","concat","add","metricCalculator","userColumnWidths","getHiddenColumns","Map","initialColumnWidths","columns","aggregationMap","forEach","_ref3","operation","selected","invert","getOperationColumnNames","getOperationMap","getOperationOrder","dh","rules","rulesParam","preview","editIndex","debug","undefined","getCachedFormatColumns","originalColumns","config","getModelRollupConfig","getModelTotalsConfig","theme","hoverSelectColumn","isSelectingColumn","loadingScrimProgress","isMenuShown","customFilters","getFiltersFromFilterMap","contextTheme","isEditable","floatingRowCount","density","_theme$rowFooterWidth","baseTheme","rowFooterWidth","state","resetCalculatedColumnWidths","resetCalculatedRowHeights","densityTheme","compact","spacious","_objectSpread","autoSelectRow","keyHandlers","mouseHandlersProp","mouseHandlers","handler","rendererProp","alwaysFetchColumns","movedColumns","floatingLeftColumnCount","floatingRightColumnCount","draggingRange","floatingColumns","getModelIndex","name","columnSet","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","handlePending","handlePendingCleared","handleSelectionChanged","handleMovedColumnsChanged","handleHeaderGroupsChanged","handleUpdate","handleTableChanged","handleModelChanged","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","handleFrozenColumnsChanged","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","INPUT_TABLE","DISCARD","commitAction","pendingDataErrors","commitPending","COMMIT","contextActions","conditionalFormats","customColumnFormatMap","columnAlignmentMap","isSelectingPartition","partitions","partitionConfig","movedColumnsProp","movedRows","movedRowsProp","userColumnWidthsByName","userRowHeights","canCopy","frozenColumns","columnHeaderGroups","getMetricCalculator","initialMovedColumns","initialMovedRows","metricCalculatorFactory","layoutHints","hiddenColumns","getColumnIndexByName","lastMetricCalculatorFactory","searchColumns","focusedFilterBarColumn","metrics","mode","shownAdvancedFilter","maximizedAdvancedFilter","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","maybeRebuildMetricCalculator","changedInputFilters","filter","inputFilter","includes","_advancedSettings$get","advancedSettings","replaceExistingFilters","get","FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS","clearGridInputField","clearCrossColumSearch","isChanged","applyInputFilters","resetRanges","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","getMetricState","_this$grid2","gridMetricState","getCachedStateOverride","getTheme","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","_ref4","contextDensity","context","getCachedTheme","floatingTopRowCount","floatingBottomRowCount","getVisibleColumn","modelIndex","getVisibleIndex","text","replaceExisting","newAdvancedFilters","newQuickFilters","_ref5","findIndex","_ref6","columnName","columnType","delete","applyQuickFilter","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","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","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","_ref12","columnData","copyCell","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","PENDING","PENDING_CLEARED","COLUMNS_CHANGED","PENDING_DATA_UPDATED","VIEWPORT_UPDATED","TABLE_CHANGED","MODEL_CHANGED","removeEventListener","focus","_this$grid3","focusFilterBar","isFilterable","metricState","scrollColumn","getScrollLeftForColumn","_this$grid4","left","leftOffset","lastFocusedFilterBarColumn","hideColumnByVisibleIndex","columnVisibleIndex","_this$grid5","setColumnWidth","freezeColumnByColumnName","allFrozenColumns","visibleIndex","newMovedColumns","moveItem","unFreezeColumnByColumnName","frontColumns","toggleExpandColumn","expandDescendants","hasExpandableColumns","setColumnExpanded","isColumnExpanded","expandAllColumns","isExpandAllColumnsAvailable","collapseAllColumns","modelIndexes","isVisible","_this$grid6","defaultWidth","calculatedWidth","calculatedColumnWidths","resetColumnWidth","_model$layoutHints$fr","_model$layoutHints2","resetAllColumnWidths","_this$grid7","updateCanvas","prevConfig","onError","loadingMessage","showAllColumns","_this$grid8","columnWidth","updateMetrics","_this$grid9","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","_this3","_document","Error","containsGridCellInputField","document","activeElement","classList","contains","_this3$grid","newPendingSavePromise","then","_this4","selectColumn","onColumnSelected","selectData","dataMap","onDataSelected","_this5","groupedColumns","_loop","isExpandable","isRowExpandable","isGrouped","_this$grid15","oldSort","getSortForColumn","newSort","descending","asc","setSortForColumn","_this$grid16","_ref13","_this$filterInputRef","_this$filterInputRef2","onCreateChart","_ref14","setGridFocus","defocusInput","_this$grid17","backward","selectedFormat","prevCustomColumnFormatMap","normalizedType","getNormalizedType","columnFormattingRule","makeColumnFormattingRule","alignment","_ref15","newColumnAlignmentMap","stopPropagation","_ref16","newOptions","pop","_ref17","_this$grid18","_this$grid$state","_this$grid19","selectionEndRow","bottomViewport","bottomNonFloating","onSelectionChanged","consolidate","startRow","onChangeApplied","prevColumnHeaderGroups","every","group","isValid","parseColumnHeaderGroups","groups","_this$grid20","tooltip","startTimer","CONDITIONAL_FORMATTING_EDIT","oldCustomColumns","customColumn","removedColumnNames","getRemovedCustomColumnNames","newSorts","removeSortsInColumns","removeFiltersInColumns","removeColumnFromMovedColumns","newSelectDistinctColumns","removeColumnsFromSelectDistinctColumns","_model$layoutHints4","factory","next","_this$grid21","handleResizeColumn","_this$grid22","contentWidth","contentColumnWidths","userWidths","setCalculatedColumnWidth","handleResizeAllColumns","_this$grid23","allColumns","allColumnWidths","visibleColumns","_ref18","width","_ref19","contentWidths","manualColumns","_rollupConfig$columns","_rollupConfig$columns2","added","removed","isRollup","changes","shouldStartLoading","op","isRollupProhibited","join","aggregation","_rollupConfig$columns3","_rollupConfig$columns4","_ref20","_rollupConfig$columns5","_rollupConfig$columns6","getUserColumnWidthsByName","resetColumnWidthByName","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","_this$grid24","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","convertValueToText","getFilterBarInput","_this$grid29","filterBoxCoordinates","getFilterInputCoordinates","debounceMs","minDebounce","round","maxDebounce","fieldWidth","fieldHeight","minWidth","advancedFilter","isBarFiltered","showAdvancedFilterButton","getAdvancedFilterButtonCoordinates","active","isAdvancedFilterSet","onAdvancedFiltersTriggered","onTab","onContextMenu","handleContextMenu","render","_rollupConfig$columns7","_rollupConfig$columns8","_this7","_this$grid30","_openOptions","getDownloadWorker","isStuckToBottom","isStuckToRight","onlyFetchVisibleColumns","onAdvancedSettingsChange","singleColumnHeaderHeight","getCachedFilter","stateOverride","focusField","loadingElement","loadingStatus","show","onClick","transform","gridY","columnTooltip","_this$tooltip2","filterBar","_loop2","buttonCoordinates","isFilterSet","isFilterVisible","element","hidden","kind","_this7$grid","onMouseEnter","onMouseLeave","advancedFilterMenus","gridX","_loop3","xColumnHeader","xFilterBar","filterBarHeight","onEntered","getAdvancedMenuOpenedHandler","isShown","closeOnBlur","positionFixed","getCachedAdvancedFilterMenuActions","getAdvancedMenuToggleMaximizeHandler","defaultOptionItems","getCachedOptionItems","getCachedTransformedOptionItems","getCachedHiddenColumns","openOptionsStack","onSubmit","onColumnVisibilityChanged","onReset","onMovedColumnsChanged","onColumnHeaderGroupChanged","onFrozenColumnsChanged","onCreate","onSelect","handleConditionalFormatEditorUpdate","rule","onUpdate","onSave","onCancel","availablePlacements","onEdit","isDownloading","onDownload","onDownloadStart","PluginPage","configPage","itemType","onBack","role","in","transitionSlowMs","onEnter","onExit","mountOnEnter","unmountOnExit","nodeRef","slideTransitionRef","bottomTransitionRef","selectedColumns","invertSelection","isStickyBottom","onViewChanged","isOpen","onClose","getAlwaysFetchColumns","draggingColumn","range","formatColumns","getCachedPreviewFormatColumns","totalsConfig","getOverflowButtonTooltip","getExpandCellTooltip","getHoverTooltip","onGotoRowSubmit","onGotoRowNumberChanged","onEntering","onExiting","gotoValueFilter","onGotoValueSelectedColumnNameChanged","onGotoValueSelectedFilterChanged","onGotoValueChanged","onGotoValueSubmit","isSaving","saveTooltip","discardTooltip","onDiscard","onDownloadCompleted","onDownloadCanceled","onDownloadProgressUpdate","actions","columnNotAllowedCursor","copyCursor","getServiceWorker","defaultDateTimeFormat","FULL_DATE_FORMAT","showTimeZone","showTSeparator","_len","args","_key"],"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 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 isExpandableColumnGridModel,\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 type SortDescriptor,\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, {\n type IrisGridMetricState,\n} 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 PluginTableOptionsErrorBoundary from './sidebar/PluginTableOptionsErrorBoundary';\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 type 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 IrisGridStateOverride,\n type OperationMap,\n type OptionItem,\n type PendingDataErrorMap,\n type PendingDataMap,\n type PendingOperationDetail,\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';\nimport { isColumnHeaderGroup } from './ColumnHeaderGroup';\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 SortDescriptor[];\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; // Default behavior treats no operator as equals\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 type MouseHandlersProp = readonly (\n | GridMouseHandler\n | ((irisGrid: IrisGrid) => GridMouseHandler)\n)[];\n\nexport type GetMetricCalculatorType = (\n ...args: ConstructorParameters<typeof IrisGridMetricCalculator>\n) => IrisGridMetricCalculator;\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 /**\n * Pure transform over the default Table Options menu list. Receives\n * the built-in items (already filtered by model availability) and\n * returns the items to actually render. Use it to add, hide,\n * relabel, reorder, or replace entries.\n *\n * Items returned with a `configPage` are rendered by the\n * `default` case of the page switch and isolated inside a small\n * error boundary; items without a `configPage` MUST have a `type`\n * matching an existing `OptionType` enum value, otherwise the\n * existing case arms can't render them.\n *\n * Called inside memoization; the function should be referentially\n * stable and side-effect-free. A throwing transform is logged once\n * and treated as identity for that render.\n */\n transformTableOptions?: (\n defaults: readonly OptionItem[]\n ) => readonly OptionItem[];\n\n /** @deprecated use `partitionConfig` instead */\n partitions?: (string | null)[];\n partitionConfig?: PartitionConfig;\n sorts: readonly SortDescriptor[];\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 /**\n * @deprecated Pass `userColumnWidthsByName` instead. The by-index map is\n * lossy across model swaps because column indices change when the model\n * is replaced (e.g. when applying or removing a rollup). Kept for\n * back-compat with consumers that have not migrated.\n */\n userColumnWidths: ReadonlyMap<ModelIndex, number>;\n /**\n * Map of user-set column widths keyed by column name. Source of truth\n * for hidden/manually-sized columns across model swaps and persistence\n * boundaries. Takes precedence over `userColumnWidths` when both are\n * provided.\n */\n userColumnWidthsByName?: ReadonlyMap<ColumnName, 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?: Partial<IrisGridThemeType> & Record<string, unknown>;\n\n canToggleSearch: boolean;\n\n columnHeaderGroups?: readonly ColumnHeaderGroup[];\n\n // Optional key and mouse handlers\n keyHandlers: readonly KeyHandler[];\n mouseHandlers: MouseHandlersProp;\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 getMetricCalculator: GetMetricCalculatorType;\n}\n\n/**\n * The subset of `IrisGridProps` that overrides how the grid presents its\n * model: theme, canvas renderer, extra mouse handlers, and the metric\n * calculator factory. Hosts that render `<IrisGrid>` on behalf of a plugin\n * (e.g. `GridWidgetPlugin`) accept this as a single passthrough bag so they\n * don't need to know each view concern by name, and plugins build it from\n * their own hooks. Kept as a `Pick` (not `Partial<IrisGridProps>`) so it can\n * never clobber structural props like `model` or `ref`.\n */\nexport type IrisGridViewProps = Pick<\n IrisGridProps,\n 'theme' | 'renderer' | 'mouseHandlers' | 'getMetricCalculator'\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 maximizedAdvancedFilter: number | null;\n hoverAdvancedFilter: number | null;\n\n sorts: readonly SortDescriptor[];\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 userColumnWidthsByName: undefined,\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: undefined,\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 getMetricCalculator: (\n ...args: ConstructorParameters<typeof IrisGridMetricCalculator>\n ): IrisGridMetricCalculator => new IrisGridMetricCalculator(...args),\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.handleAdvancedFilterToggleMaximize =\n this.handleAdvancedFilterToggleMaximize.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.handlePending = this.handlePending.bind(this);\n this.handlePendingCleared = this.handlePendingCleared.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.handleModelChanged = this.handleModelChanged.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 this.handleFrozenColumnsChanged =\n this.handleFrozenColumnsChanged.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 userColumnWidthsByName,\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 getMetricCalculator,\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: MouseHandlersProp = [\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 ...(canCopy ? [new IrisGridCopyCellMouseHandler(this)] : []),\n ];\n if (canCopy) {\n keyHandlers.push(new CopyKeyHandler(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 metricCalculatorFactory = getMetricCalculator;\n const metricCalculator = metricCalculatorFactory({\n userColumnWidths: new Map(userColumnWidths),\n userColumnWidthsByName:\n userColumnWidthsByName != null\n ? new Map(userColumnWidthsByName)\n : undefined,\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 // Remember the factory we used so we can detect a model-driven swap\n // (e.g. pivot-builder's proxy swapping its inner model) on COLUMNS_CHANGED.\n this.lastMetricCalculatorFactory = metricCalculatorFactory;\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 maximizedAdvancedFilter: 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 getMetricCalculator,\n } = this.props;\n\n if (model !== prevProps.model) {\n this.stopListening(prevProps.model);\n this.startListening(model);\n }\n\n // The renderer and mouse handlers flow through memoized getters in\n // render(), so a `renderer` / `mouseHandlers` prop change naturally\n // propagates on the next render. The metric calculator, however, lives in\n // component state, so mirror that path when the `getMetricCalculator` prop\n // changes (e.g. the pivot-builder middleware swapping the pivot factory in\n // or out) so the calculator stays in sync. Moved columns are not touched\n // here — a model swap resets them via `handleModelChanged`.\n if (getMetricCalculator !== prevProps.getMetricCalculator) {\n this.maybeRebuildMetricCalculator();\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 const isChanged = this.applyInputFilters(\n changedInputFilters,\n replaceExistingFilters\n );\n if (isChanged) {\n this.startLoading('Filtering...', { resetRanges: true });\n }\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: MouseHandlersProp;\n\n /**\n * The metric calculator factory most recently used to instantiate the\n * calculator currently stored in state. Used by `maybeRebuildMetricCalculator`\n * (called from `componentDidUpdate` when the `getMetricCalculator` prop\n * changes) to detect when a different factory is supplied and rebuild.\n */\n lastMetricCalculatorFactory?: GetMetricCalculatorType;\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 getAdvancedMenuToggleMaximizeHandler = memoize(\n (column: ModelIndex) =>\n this.handleAdvancedFilterToggleMaximize.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 isMaximized: boolean,\n onToggleMaximize: () => void\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 isMaximized={isMaximized}\n onToggleMaximize={onToggleMaximize}\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 order: 100,\n });\n }\n if (isOrganizeColumnsAvailable) {\n optionItems.push({\n type: OptionType.VISIBILITY_ORDERING_BUILDER,\n title: 'Organize Columns',\n icon: dhEye,\n order: 200,\n });\n }\n if (isFormatColumnsAvailable) {\n optionItems.push({\n type: OptionType.CONDITIONAL_FORMATTING,\n title: 'Conditional Formatting',\n icon: vsEdit,\n order: 300,\n });\n }\n if (isCustomColumnsAvailable) {\n optionItems.push({\n type: OptionType.CUSTOM_COLUMN_BUILDER,\n title: 'Custom Columns',\n icon: vsSplitHorizontal,\n order: 400,\n });\n }\n if (isRollupAvailable) {\n optionItems.push({\n type: OptionType.ROLLUP_ROWS,\n title: 'Rollup Rows',\n icon: dhTriangleDownSquare,\n order: 500,\n });\n }\n if (isTotalsAvailable) {\n optionItems.push({\n type: OptionType.AGGREGATIONS,\n title: 'Aggregate Columns',\n icon: vsSymbolOperator,\n order: 600,\n });\n }\n if (isSelectDistinctAvailable) {\n optionItems.push({\n type: OptionType.SELECT_DISTINCT,\n title: 'Select Distinct Values',\n icon: vsRuby,\n order: 700,\n });\n }\n if (isExportAvailable && canDownloadCsv) {\n optionItems.push({\n type: OptionType.TABLE_EXPORTER,\n title: 'Download CSV',\n icon: vsCloudDownload,\n order: 800,\n });\n }\n if (hasAdvancedSettings) {\n optionItems.push({\n type: OptionType.ADVANCED_SETTINGS,\n title: 'Advanced Settings',\n icon: vsTools,\n order: 900,\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 order: 1000,\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 order: 1100,\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 order: 1200,\n });\n\n return Object.freeze(optionItems);\n },\n { max: 1 }\n );\n\n /**\n * Apply the `transformTableOptions` transform (if any) to the\n * default option list.\n * Catches exceptions so a buggy plugin can't break the grid,\n * and warns about duplicate `type` collisions.\n */\n getCachedTransformedOptionItems = memoize(\n (\n items: readonly OptionItem[],\n transformTableOptions: IrisGridProps['transformTableOptions']\n ): readonly OptionItem[] => {\n if (transformTableOptions == null) {\n return items;\n }\n let transformedItems: readonly OptionItem[];\n try {\n transformedItems = transformTableOptions(items);\n } catch (err) {\n log.error(\n 'transformTableOptions threw an error; falling back to defaults.',\n err\n );\n return items;\n }\n // Stably sort by ascending `order`. Items without an `order` sink to\n // the end of the menu (default `Infinity`), while items with an `order`\n // are positioned by their weight. Decorate-sort-undecorate guarantees\n // stability regardless of the engine's sort implementation.\n const sortedItems = transformedItems\n .map((item, index) => ({ item, index }))\n .sort(\n (a, b) =>\n (a.item.order ?? Infinity) - (b.item.order ?? Infinity) ||\n a.index - b.index\n )\n .map(({ item }) => item);\n const keys = new Set<string>();\n for (let i = 0; i < sortedItems.length; i += 1) {\n const key = String(sortedItems[i].type);\n if (keys.has(key)) {\n log.warn(\n `transformTableOptions produced duplicate type \"${key}\"; ` +\n 'only the first entry will be accessible from the menu.'\n );\n break;\n }\n keys.add(key);\n }\n return Object.freeze(sortedItems);\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 => IrisGridUtils.getOperationMap(columns, aggregations),\n { max: 1 }\n );\n\n getOperationOrder = memoize(\n (aggregations: readonly Aggregation[]): AggregationOperation[] =>\n IrisGridUtils.getOperationOrder(aggregations),\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 IrisGridUtils.getModelTotalsConfig(columns, config, aggregationSettings),\n { max: 1 }\n );\n\n getCachedStateOverride = memoize(\n (\n model: IrisGridModel,\n theme: IrisGridThemeType,\n hoverSelectColumn: GridRangeIndex,\n isFilterBarShown: boolean,\n isSelectingColumn: boolean,\n loadingScrimProgress: number | null,\n quickFilters: ReadonlyQuickFilterMap,\n advancedFilters: ReadonlyAdvancedFilterMap,\n sorts: readonly SortDescriptor[],\n reverse: boolean,\n rollupConfig: UIRollupConfig | undefined,\n isMenuShown: boolean\n ): IrisGridStateOverride => ({\n model,\n theme,\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 getMetricState(): IrisGridMetricState | undefined {\n const gridMetricState = this.grid?.getMetricState();\n if (gridMetricState == null) {\n return undefined;\n }\n const {\n advancedFilters,\n hoverSelectColumn,\n isFilterBarShown,\n isMenuShown,\n loadingScrimProgress,\n quickFilters,\n sorts,\n reverse,\n rollupConfig,\n } = this.state;\n\n const { model, isSelectingColumn } = this.props;\n\n return {\n ...gridMetricState,\n ...this.getCachedStateOverride(\n model,\n this.getTheme(),\n hoverSelectColumn,\n isFilterBarShown,\n isSelectingColumn,\n loadingScrimProgress,\n quickFilters,\n advancedFilters,\n sorts,\n reverse,\n rollupConfig,\n isMenuShown\n ),\n };\n }\n\n getCachedMouseHandlers = memoize(\n (mouseHandlersProp: MouseHandlersProp): readonly GridMouseHandler[] =>\n [...mouseHandlersProp, ...this.mouseHandlers].map(handler =>\n typeof handler === 'function' ? handler(this) : handler\n ),\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 /**\n * Get the model column index for the provided visible index\n * @param columnIndex Visible column index\n * @returns Model column index, or null if not found\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 if (columnIndex != null && columnIndex < 0) {\n // ColumnBy sources aren't movable, so just return the index directly\n return columnIndex;\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 * @returns True if any filters were changed as a result of this operation\n */\n applyInputFilters(\n inputFilters: InputFilter[],\n replaceExisting = false\n ): boolean {\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 return isChanged;\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\n if (advancedFilters.size === 0 && quickFilters.size === 0) {\n log.debug('No filters to rebuild');\n return;\n }\n\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(IrisGridModel.EVENT.PENDING, this.handlePending);\n model.addEventListener(\n IrisGridModel.EVENT.PENDING_CLEARED,\n this.handlePendingCleared\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 model.addEventListener(\n IrisGridModel.EVENT.MODEL_CHANGED,\n this.handleModelChanged\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(IrisGridModel.EVENT.PENDING, this.handlePending);\n model.removeEventListener(\n IrisGridModel.EVENT.PENDING_CLEARED,\n this.handlePendingCleared\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 model.removeEventListener(\n IrisGridModel.EVENT.MODEL_CHANGED,\n this.handleModelChanged\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 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 metricState = this.getMetricState();\n assertNotNull(metricState);\n\n const scrollColumn = metricCalculator.getScrollLeftForColumn(\n column,\n metricState,\n metrics\n );\n\n if (scrollColumn != null) {\n this.grid?.setViewState({ left: scrollColumn, leftOffset: 0 }, 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 /**\n * Updates the entire list of frozen columns.\n * Used by VisibilityOrderingBuilder.\n * @param frozenColumns The new list of frozen columns\n */\n handleFrozenColumnsChanged(frozenColumns: readonly ColumnName[]): void {\n this.setState({ frozenColumns });\n }\n\n toggleExpandColumn(\n modelIndex: ModelIndex,\n expandDescendants?: boolean\n ): void {\n log.debug2('Toggle expand column', modelIndex);\n const { model } = this.props;\n if (isExpandableColumnGridModel(model) && model.hasExpandableColumns) {\n model.setColumnExpanded(\n modelIndex,\n !model.isColumnExpanded(modelIndex),\n expandDescendants\n );\n }\n }\n\n expandAllColumns(): void {\n log.debug2('Expand all columns');\n const { model } = this.props;\n if (\n isExpandableColumnGridModel(model) &&\n model.isExpandAllColumnsAvailable\n ) {\n model.expandAllColumns();\n }\n }\n\n collapseAllColumns(): void {\n log.debug2('Collapse all columns');\n const { model } = this.props;\n if (\n isExpandableColumnGridModel(model) &&\n model.isExpandAllColumnsAvailable\n ) {\n model.collapseAllColumns();\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 = metrics.calculatedColumnWidths.get(modelIndex);\n\n // If we haven't scrolled to the column, the calculated width will be undefined.\n // This means the function was triggered by the visibility ordering menu,\n // so just reset the column width to default.\n if (defaultWidth !== calculatedWidth && calculatedWidth != null) {\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 } = this.state;\n const { model } = this.props;\n metricCalculator.resetAllColumnWidths();\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 /**\n * Updates grid metrics after model columns have changed\n * to keep Grid and IrisGrid metrics in sync since metrics are stored in both places.\n */\n updateMetrics(): void {\n this.setState({\n metrics: this.grid?.updateMetrics(),\n });\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 SortDescriptor[]): 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 } = model.columns[cursorColumn];\n\n // Use raw value (same as Copy Cell Unformatted) to preserve full precision and timezone\n const text = String(this.getValueForCell(cursorColumn, cursorRow, true));\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 handleAdvancedFilterToggleMaximize(column: GridRangeIndex): void {\n this.setState(({ maximizedAdvancedFilter }) => ({\n maximizedAdvancedFilter:\n maximizedAdvancedFilter === column ? null : column,\n }));\n }\n\n handleAdvancedMenuOpened(column: GridRangeIndex): void {\n this.setState({\n shownAdvancedFilter: column,\n maximizedAdvancedFilter: null,\n });\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({\n shownAdvancedFilter: null,\n maximizedAdvancedFilter: null,\n });\n } else {\n this.setState({\n focusedFilterBarColumn: null,\n shownAdvancedFilter: null,\n maximizedAdvancedFilter: 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 /**\n * Raise the loading scrim in response to a model-driven `PENDING` event. The\n * model is the start signal, mirroring how `UPDATED`/`COLUMNS_CHANGED` are\n * already the model-driven stop signal. Idempotent: the first message within\n * a commit wins (the `loadingScrimStartTime == null` guard collapses multiple\n * pending operations into a single scrim).\n */\n handlePending(event: EventT): void {\n const { detail } = event as CustomEvent<PendingOperationDetail | undefined>;\n const { text, options } = detail ?? {};\n if (this.loadingScrimStartTime == null) {\n this.startLoading(text ?? 'Loading...', {\n loadingCancelShown: false,\n ...options,\n });\n }\n }\n\n /**\n * Clear the loading scrim in response to a model-driven `PENDING_CLEARED`\n * event. Only needed for operations that do not naturally end in\n * `UPDATED`/`COLUMNS_CHANGED`/`REQUEST_FAILED`.\n */\n handlePendingCleared(): void {\n this.stopLoading();\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 // For partitioned tables, we want to rebuild filters on table change to ensure filters are applied to the new partition\n const { partitionConfig } = this.state;\n if (isPartitionedGridModel(model) && partitionConfig?.mode !== 'keys') {\n this.rebuildFilters();\n }\n }\n\n /**\n * Handle an inner-model swap on a proxy model (`MODEL_CHANGED`). The previous\n * model's `movedColumns` reference indices that may not exist in the new\n * model (e.g. a pivot exposes a different column set), so reset them to the\n * new model's initial order. The metric calculator is rebuilt separately when\n * the `getMetricCalculator` prop changes (see `componentDidUpdate`); a calc\n * whose seed `movedColumns` are now stale self-heals because `getMetrics`\n * reconciles against the grid's current `movedColumns` at draw time.\n */\n handleModelChanged(): void {\n const { model } = this.props;\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 const { columnHeaderGroups: prevColumnHeaderGroups } = this.state;\n if (prevColumnHeaderGroups === columnHeaderGroups) {\n return;\n }\n\n this.setState(\n {\n // undo/redo will pass already parsed groups\n // Parsing them again causes a loop with undo/redo that makes it unusable\n columnHeaderGroups: columnHeaderGroups.every(\n (group): group is ColumnHeaderGroup =>\n isColumnHeaderGroup(group) && group.isValid()\n )\n ? columnHeaderGroups\n : IrisGridUtils.parseColumnHeaderGroups(model, 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('Model columns changed');\n const { isReady } = this.state;\n if (isReady) {\n this.updateMetrics();\n\n // Make sure stopLoading() is called after the updateMetrics call,\n // otherwise IrisGridModelUpdater queues an extra setViewport based on old metrics.\n this.stopLoading();\n } else {\n this.loadTableState();\n }\n }\n\n /**\n * Rebuild the metric calculator when the `getMetricCalculator` prop swaps for\n * a different factory (e.g. entering or leaving a pivot, where the\n * pivot-builder middleware flips the prop). The renderer and mouse handlers\n * are recomputed via their memoized getters on the next render and do not\n * need explicit handling here.\n *\n * User column-widths / row-heights from the previous calculator are not\n * carried over: a factory swap means the column set has effectively changed,\n * so the stored sizes wouldn't map to anything meaningful.\n *\n * Moved columns are NOT reset here — that is owned by `handleModelChanged`\n * (the `MODEL_CHANGED` event) so that a plain prop swap against the same\n * model preserves the user's layout. The new calculator is seeded with the\n * current moved columns; `getMetrics` reconciles against the grid's live\n * `movedColumns` at draw time, so a later reset stays consistent.\n */\n maybeRebuildMetricCalculator(): void {\n const { getMetricCalculator } = this.props;\n const factory = getMetricCalculator;\n if (factory === this.lastMetricCalculatorFactory) return;\n\n const { model } = this.props;\n const { movedColumns } = this.state;\n const next = factory({\n userColumnWidths: new Map(),\n userRowHeights: new Map(),\n movedColumns,\n initialColumnWidths: new Map(\n model?.layoutHints?.hiddenColumns?.map(name => [\n model.getColumnIndexByName(name),\n 0,\n ])\n ),\n });\n this.lastMetricCalculatorFactory = factory;\n log.debug('Swapping metric calculator', next);\n // Also push the new calculator onto the Grid synchronously so any\n // immediately-following read of `Grid.metricCalculator` (before React has\n // committed the setState below) uses the new instance against the new\n // model rather than invoking the old calculator and potentially throwing.\n if (this.grid != null) {\n this.grid.metricCalculator = next;\n }\n this.setState({ metricCalculator: next });\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 // Un-hide hidden group-by columns.\n if (rollupConfig?.columns != null && rollupConfig.columns.length > 0) {\n const { metricCalculator } = this.state;\n const userColumnWidthsByName =\n metricCalculator.getUserColumnWidthsByName();\n rollupConfig.columns.forEach(name => {\n if (userColumnWidthsByName.get(name) === 0) {\n metricCalculator.resetColumnWidthByName(name);\n }\n });\n }\n\n this.resetGridViewState();\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 this.grid?.focus(); // Focus on the grid after closing the overflow modal\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 /**\n * Render the input field for the focused filter\n * @param metrics Grid metrics\n * @param metricCalculator Metric calculator\n * @param focusedFilterBarColumn Column index for the focused filter\n * @param quickFilters Quick filters map\n * @param advancedFilters Advanced filters map\n * @returns The filter input field element or null if not applicable\n */\n getFilterBarInput(\n metrics: GridMetrics | undefined,\n metricCalculator: IrisGridMetricCalculator,\n focusedFilterBarColumn: VisibleIndex | null,\n quickFilters: ReadonlyQuickFilterMap,\n advancedFilters: ReadonlyAdvancedFilterMap\n ): ReactElement | null {\n if (metrics == null || focusedFilterBarColumn == null) {\n return null;\n }\n\n const metricState = this.getMetricState();\n if (metricState == null) {\n return null;\n }\n\n const filterBoxCoordinates = metricCalculator.getFilterInputCoordinates(\n focusedFilterBarColumn,\n metricState,\n metrics\n );\n if (filterBoxCoordinates == null) {\n return null;\n }\n\n const debounceMs = Math.min(\n Math.max(IrisGrid.minDebounce, Math.round(metrics.rowCount / 200)),\n IrisGrid.maxDebounce\n );\n const {\n x,\n y,\n width: fieldWidth,\n height: fieldHeight,\n } = filterBoxCoordinates;\n const { width } = metrics;\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 = quickFilters.size !== 0 || advancedFilters.size !== 0;\n const showAdvancedFilterButton =\n metricCalculator.getAdvancedFilterButtonCoordinates(\n focusedFilterBarColumn,\n metricState,\n metrics\n ) != null;\n return (\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 showAdvancedFilterButton={showAdvancedFilterButton}\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 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 transformTableOptions,\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 maximizedAdvancedFilter,\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 model,\n theme,\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 const focusField = isFilterBarShown\n ? this.getFilterBarInput(\n metrics,\n metricCalculator,\n focusedFilterBarColumn,\n quickFilters,\n advancedFilters\n )\n : null;\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 metricState = this.getMetricState();\n\n // Advanced Filter buttons\n const { visibleColumns } = metrics;\n\n for (let i = 0; i < visibleColumns.length; i += 1) {\n const columnIndex = visibleColumns[i];\n const modelColumn = this.getModelColumn(columnIndex);\n\n if (modelColumn != null) {\n const isFilterable = model.isFilterable(modelColumn);\n const buttonCoordinates =\n isFilterable && metricState\n ? metricCalculator.getAdvancedFilterButtonCoordinates(\n columnIndex,\n metricState,\n metrics\n )\n : null;\n if (buttonCoordinates != null) {\n const { x, y } = buttonCoordinates;\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({\n shownAdvancedFilter: columnIndex,\n maximizedAdvancedFilter: null,\n });\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 isMaximized={\n shownAdvancedFilter === columnIndex &&\n maximizedAdvancedFilter === columnIndex\n }\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 shownAdvancedFilter === columnIndex &&\n maximizedAdvancedFilter === columnIndex,\n this.getAdvancedMenuToggleMaximizeHandler(columnIndex)\n )}\n </Popper>\n </div>\n );\n advancedFilterMenus.push(element);\n }\n }\n }\n }\n\n const defaultOptionItems = 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 const optionItems = this.getCachedTransformedOptionItems(\n defaultOptionItems,\n transformTableOptions\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 onFrozenColumnsChanged={this.handleFrozenColumnsChanged}\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 // Plugin-contributed items render their own page via\n // `configPage`. The page is isolated inside an error\n // boundary so a throwing plugin doesn't tear down the\n // entire grid subtree. Built-in items that hit the default\n // case indicate a programmer error (unhandled enum case).\n const PluginPage = option.configPage;\n if (PluginPage == null) {\n throw Error(`Unexpected option type ${option.type}`);\n }\n return (\n <PluginTableOptionsErrorBoundary\n itemType={String(option.type)}\n key={String(option.type)}\n onBack={this.handleMenuBack}\n >\n <PluginPage model={model} onBack={this.handleMenuBack} />\n </PluginTableOptionsErrorBoundary>\n );\n }\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 {[\n <Page\n key=\"table-options\"\n title=\"Table Options\"\n onClose={this.handleMenuClose}\n >\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 ]}\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":[]}