@deephaven/iris-grid 1.23.1-alpha-pivot-builder.5e6a5fd.0 → 1.25.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.
- package/dist/CellDropdownField.css +117 -0
- package/dist/CellDropdownField.css.map +1 -0
- package/dist/CellDropdownField.d.ts +15 -0
- package/dist/CellDropdownField.d.ts.map +1 -0
- package/dist/CellDropdownField.js +147 -0
- package/dist/CellDropdownField.js.map +1 -0
- package/dist/FilterInputField.css.map +1 -1
- package/dist/IrisGrid.css.map +1 -1
- package/dist/IrisGrid.d.ts +5 -4
- package/dist/IrisGrid.d.ts.map +1 -1
- package/dist/IrisGrid.js +5 -3
- package/dist/IrisGrid.js.map +1 -1
- package/dist/IrisGridContextProvider.d.ts +32 -0
- package/dist/IrisGridContextProvider.d.ts.map +1 -0
- package/dist/IrisGridContextProvider.js +68 -0
- package/dist/IrisGridContextProvider.js.map +1 -0
- package/dist/IrisGridModel.d.ts +10 -1
- package/dist/IrisGridModel.d.ts.map +1 -1
- package/dist/IrisGridModel.js +11 -0
- package/dist/IrisGridModel.js.map +1 -1
- package/dist/IrisGridTableModel.d.ts.map +1 -1
- package/dist/IrisGridTableModel.js +8 -8
- package/dist/IrisGridTableModel.js.map +1 -1
- package/dist/IrisGridTheme.module.css.map +1 -1
- package/dist/index.d.ts +8 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -1
- package/dist/index.js.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.js +3 -3
- package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/SearchWithModal.css.map +1 -1
- package/package.json +16 -16
- package/dist/IrisGridThemeProvider.d.ts +0 -18
- package/dist/IrisGridThemeProvider.d.ts.map +0 -1
- package/dist/IrisGridThemeProvider.js +0 -34
- package/dist/IrisGridThemeProvider.js.map +0 -1
package/dist/IrisGrid.js.map
CHANGED
|
@@ -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","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","byType","Map","forEach","item","set","String","sortedItems","values","map","index","sort","a","b","_a$item$order","_b$item$order","Infinity","_ref2","metricCalculator","userColumnWidths","getHiddenColumns","initialColumnWidths","hiddenColumns","columns","idx","_columns$idx","name","filter","n","aggregationMap","_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","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","handlePending","handlePendingCleared","handleSelectionChanged","handleMovedColumnsChanged","handleHeaderGroupsChanged","handleUpdate","handleTableChanged","handleSchemaChanged","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","movedRowsProp","movedRows","userColumnWidthsByName","userRowHeights","canCopy","frozenColumns","columnHeaderGroups","getMetricCalculator","initialMovedColumns","initialMovedRows","layoutHints","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","_this$props","inputFilters","settings","stopListening","maybeRebuildMetricCalculator","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","_this$state","_this$props2","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","_this$props3","_this$context","context","contextDensity","getCachedTheme","floatingTopRowCount","floatingBottomRowCount","getVisibleColumn","modelIndex","getVisibleIndex","text","replaceExisting","_this$state2","newAdvancedFilters","newQuickFilters","_ref5","findIndex","_ref6","columnName","columnType","delete","applyQuickFilter","concat","trim","quickFilter","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","_this$state3","clearAllAggregations","setValue","rebuildFilters","_this$state4","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","initFormatter","isPartitionRequired","loadPartitionsTable","loadTableState","handleTableLoadError","_this$props4","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","data","detail","rows","stopLoading","row","newPartition","isPartitionAwareSourceTable","e","selectPartitionKeyFromTable","getRowDataMap","partitionColumnSet","partitionColumns","entries","_ref11","_ref12","_slicedToArray","has","_ref13","_ref14","columnData","copyCell","copyColumnHeader","columnDepth","copyRanges","ranges","includeHeaders","formatValues","_this$props5","_this$state5","getUserColumnWidths","boundedRanges","columnCount","rowCount","_ref15","_ref15$resetRanges","_ref15$loadingCancelS","_ref15$loadingBlocksG","clearSelectedRanges","setViewState","top","_this$gridWrapper$get","_this$gridWrapper","minScrimTransitionTime","maxScrimTransitionTime","height","getBoundingClientRect","scrimTransitionTime","setTimeout","loadingSpinnerDelay","rollback","_this$lastLoadedConfi","canRollback","EVENT","UPDATED","REQUEST_FAILED","PENDING","PENDING_CLEARED","COLUMNS_CHANGED","PENDING_DATA_UPDATED","VIEWPORT_UPDATED","TABLE_CHANGED","SCHEMA_CHANGED","removeEventListener","focus","_this$grid3","focusFilterBar","isFilterable","_this$state6","metricState","scrollColumn","getScrollLeftForColumn","_this$grid4","left","leftOffset","lastFocusedFilterBarColumn","hideColumnByVisibleIndex","columnVisibleIndex","_this$grid5","_this$state7","setColumnWidth","freezeColumnByColumnName","_this$state8","allFrozenColumns","visibleIndex","newMovedColumns","moveItem","unFreezeColumnByColumnName","_this$state9","frontColumns","toggleExpandColumn","expandDescendants","hasExpandableColumns","setColumnExpanded","isColumnExpanded","expandAllColumns","isExpandAllColumnsAvailable","collapseAllColumns","modelIndexes","isVisible","_this$grid6","_this$state0","defaultWidth","calculatedWidth","calculatedColumnWidths","resetColumnWidth","_model$layoutHints$fr","_model$layoutHints2","resetAllColumnWidths","_this$grid7","updateCanvas","prevConfig","onError","_this$state1","loadingMessage","showAllColumns","_this$grid8","_entries$i","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","_this$props6","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","_ref16","_this$filterInputRef","_this$state10","_this$filterInputRef2","_this$props7","onCreateChart","warn","_ref17","setGridFocus","defocusInput","_this$grid17","backward","selectedFormat","prevCustomColumnFormatMap","normalizedType","getNormalizedType","columnFormattingRule","makeColumnFormattingRule","alignment","_ref18","_ref18$columnAlignmen","newColumnAlignmentMap","stopPropagation","_ref19","newOptions","pop","_ref20","_ref21","_ref22","_ref23","_this$grid18","_this$state11","_this$grid$state","_this$grid19","_ref24","_ref24$selectionEndRo","selectionEndRow","bottomViewport","bottomNonFloating","onSelectionChanged","consolidate","startRow","onChangeApplied","prevColumnHeaderGroups","every","group","isValid","parseColumnHeaderGroups","groups","_this$grid20","tooltip","startTimer","_this$state12","CONDITIONAL_FORMATTING_EDIT","_this$state13","_this$state14","oldCustomColumns","customColumn","removedColumnNames","getRemovedCustomColumnNames","newSorts","removeSortsInColumns","removeFiltersInColumns","removeColumnFromMovedColumns","newSelectDistinctColumns","removeColumnsFromSelectDistinctColumns","_model$layoutHints4","next","_this$grid21","handleResizeColumn","_this$grid22","_this$state15","contentWidth","contentColumnWidths","userWidths","setCalculatedColumnWidth","handleResizeAllColumns","_this$grid23","_this$state16","allColumns","allColumnWidths","visibleColumns","_ref25","_ref26","width","_ref27","_ref28","contentWidths","manualColumns","_rollupConfig$columns","_rollupConfig$columns2","added","removed","isRollup","changes","shouldStartLoading","op","isRollupProhibited","join","aggregation","_rollupConfig$columns3","_rollupConfig$columns4","_ref29","_rollupConfig$columns5","_rollupConfig$columns6","getUserColumnWidthsByName","resetColumnWidthByName","resetGridViewState","columnNames","INITIATING","fileName","frozenTable","tableSubscription","snapshotRanges","modelRanges","includeColumnHeaders","useUnformattedValues","startDownload","_ref30","newAggregations","inputString","_arguments","_this6","_this6$grid","isBackwards","_this6$state","selectedColumnName","isSeekRowAvailable","selectedColumn","getColumnByName","searchFromRow","isContains","containsIgnoreCase","isIgnoreCase","_this6$grid2","columnDataType","dataType","CHAR","STRING","ValueType","DATETIME","_DateUtils$parseDateR","parseDateRange","_DateUtils$parseDateR2","startDate","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","_this$state17","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","_this$state18","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","_this$props8","getDownloadWorker","isStuckToBottom","isStuckToRight","onlyFetchVisibleColumns","onAdvancedSettingsChange","_this$state19","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","_ref31","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","viewState","getCachedViewState","getCachedHiddenColumnNames","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 type TableOptionsTransform,\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 IrisGridViewState,\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?: TableOptionsTransform;\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.handleSchemaChanged = this.handleSchemaChanged.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 // Remember the factory we used so `maybeRebuildMetricCalculator` (called\n // from `componentDidUpdate` when the `getMetricCalculator` prop changes)\n // can detect a model-driven swap, e.g. pivot-builder's proxy swapping its\n // inner model.\n this.lastMetricCalculatorFactory = getMetricCalculator;\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 `handleSchemaChanged`.\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, and collapses\n * duplicate `type` entries (last writer wins) before sorting by `order`.\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 // Collapse duplicate `type` entries before sorting. A duplicate `type`\n // would otherwise collide on the `<Menu>` / `<Page>` React key and cause\n // incorrect page reuse. Per the documented composition rule (see the\n // package README), the last writer wins: a later entry — e.g. from a\n // downstream middleware — overrides an earlier one with the same type.\n // `Map.set` keeps the most recent value while preserving the original\n // insertion slot, so an override stays in place unless it changes\n // `order`.\n const byType = new Map<string, OptionItem>();\n transformedItems.forEach(item => {\n byType.set(String(item.type), item);\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 = [...byType.values()]\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 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 getCachedHiddenColumnNames = memoize(\n (\n hiddenColumns: readonly ModelIndex[],\n columns: readonly DhType.Column[]\n ): readonly ColumnName[] =>\n Object.freeze(\n hiddenColumns\n .map(idx => columns[idx]?.name)\n .filter((n): n is ColumnName => n != null)\n ),\n { max: 1 }\n );\n\n getCachedViewState = memoize(\n (hiddenColumns: readonly ColumnName[]): IrisGridViewState =>\n Object.freeze({ hiddenColumns }),\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.SCHEMA_CHANGED,\n this.handleSchemaChanged\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.SCHEMA_CHANGED,\n this.handleSchemaChanged\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 * The current contract assumes a single outstanding model-driven operation:\n * `handlePending` collapses concurrent `PENDING` events into one scrim, so\n * this clears unconditionally. That is consistent with the existing scrim,\n * which any model stop signal already clears regardless of what else is in\n * flight. Ref-counting overlapping operations is intentionally deferred to\n * the planned migration that routes the built-in `startLoading` calls\n * through `PENDING`/`PENDING_CLEARED`; only once every raise/clear goes\n * through this pair can a depth counter stay balanced (a counter added now\n * would desync against the direct `startLoading` callers).\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 (`SCHEMA_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 handleSchemaChanged(): 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 `handleSchemaChanged`\n * (the `SCHEMA_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 if (getMetricCalculator === this.lastMetricCalculatorFactory) return;\n\n const { model } = this.props;\n const { movedColumns } = this.state;\n const next = getMetricCalculator({\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 = getMetricCalculator;\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 >\n <PluginPage\n model={model}\n viewState={this.getCachedViewState(\n this.getCachedHiddenColumnNames(hiddenColumns, model.columns)\n )}\n onBack={this.handleMenuBack}\n />\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":[]}
|
|
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","DEFAULT_REGISTRY","IrisGridContext","IrisGridModel","IrisGridUtils","CrossColumnSearch","isPartitionedGridModel","IrisGridPartitionSelector","SelectDistinctBuilder","PluginTableOptionsErrorBoundary","AdvancedSettingsType","AdvancedSettingsMenu","SHORTCUTS","ConditionalFormattingMenu","ConditionalFormatEditor","IrisGridCellOverflowModal","GotoRow","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","byType","Map","forEach","item","set","String","sortedItems","values","map","index","sort","a","b","_a$item$order","_b$item$order","Infinity","_ref2","metricCalculator","userColumnWidths","getHiddenColumns","initialColumnWidths","hiddenColumns","columns","idx","_columns$idx","name","filter","n","aggregationMap","_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","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","handlePending","handlePendingCleared","handleSelectionChanged","handleMovedColumnsChanged","handleHeaderGroupsChanged","handleUpdate","handleTableChanged","handleSchemaChanged","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","movedRowsProp","movedRows","userColumnWidthsByName","userRowHeights","canCopy","frozenColumns","columnHeaderGroups","getMetricCalculator","initialMovedColumns","initialMovedRows","layoutHints","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","_this$props","inputFilters","settings","stopListening","maybeRebuildMetricCalculator","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","_this$state","_this$props2","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","_this$props3","_this$context","context","contextDensity","getCachedTheme","floatingTopRowCount","floatingBottomRowCount","getVisibleColumn","modelIndex","getVisibleIndex","text","replaceExisting","_this$state2","newAdvancedFilters","newQuickFilters","_ref5","findIndex","_ref6","columnName","columnType","delete","applyQuickFilter","concat","trim","quickFilter","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","_this$state3","clearAllAggregations","setValue","rebuildFilters","_this$state4","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","initFormatter","isPartitionRequired","loadPartitionsTable","loadTableState","handleTableLoadError","_this$props4","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","data","detail","rows","stopLoading","row","newPartition","isPartitionAwareSourceTable","e","selectPartitionKeyFromTable","getRowDataMap","partitionColumnSet","partitionColumns","entries","_ref11","_ref12","_slicedToArray","has","_ref13","_ref14","columnData","copyCell","copyColumnHeader","columnDepth","copyRanges","ranges","includeHeaders","formatValues","_this$props5","_this$state5","getUserColumnWidths","boundedRanges","columnCount","rowCount","_ref15","_ref15$resetRanges","_ref15$loadingCancelS","_ref15$loadingBlocksG","clearSelectedRanges","setViewState","top","_this$gridWrapper$get","_this$gridWrapper","minScrimTransitionTime","maxScrimTransitionTime","height","getBoundingClientRect","scrimTransitionTime","setTimeout","loadingSpinnerDelay","rollback","_this$lastLoadedConfi","canRollback","EVENT","UPDATED","REQUEST_FAILED","PENDING","PENDING_CLEARED","COLUMNS_CHANGED","PENDING_DATA_UPDATED","VIEWPORT_UPDATED","TABLE_CHANGED","SCHEMA_CHANGED","removeEventListener","focus","_this$grid3","focusFilterBar","isFilterable","_this$state6","metricState","scrollColumn","getScrollLeftForColumn","_this$grid4","left","leftOffset","lastFocusedFilterBarColumn","hideColumnByVisibleIndex","columnVisibleIndex","_this$grid5","_this$state7","setColumnWidth","freezeColumnByColumnName","_this$state8","allFrozenColumns","visibleIndex","newMovedColumns","moveItem","unFreezeColumnByColumnName","_this$state9","frontColumns","toggleExpandColumn","expandDescendants","hasExpandableColumns","setColumnExpanded","isColumnExpanded","expandAllColumns","isExpandAllColumnsAvailable","collapseAllColumns","modelIndexes","isVisible","_this$grid6","_this$state0","defaultWidth","calculatedWidth","calculatedColumnWidths","resetColumnWidth","_model$layoutHints$fr","_model$layoutHints2","resetAllColumnWidths","_this$grid7","updateCanvas","prevConfig","onError","_this$state1","loadingMessage","showAllColumns","_this$grid8","_entries$i","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","_this$props6","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","_ref16","_this$filterInputRef","_this$state10","_this$filterInputRef2","_this$props7","onCreateChart","warn","_ref17","setGridFocus","defocusInput","_this$grid17","backward","selectedFormat","prevCustomColumnFormatMap","normalizedType","getNormalizedType","columnFormattingRule","makeColumnFormattingRule","alignment","_ref18","_ref18$columnAlignmen","newColumnAlignmentMap","stopPropagation","_ref19","newOptions","pop","_ref20","_ref21","_ref22","_ref23","_this$grid18","_this$state11","_this$grid$state","_this$grid19","_ref24","_ref24$selectionEndRo","selectionEndRow","bottomViewport","bottomNonFloating","onSelectionChanged","consolidate","startRow","onChangeApplied","prevColumnHeaderGroups","every","group","isValid","parseColumnHeaderGroups","groups","_this$grid20","tooltip","startTimer","_this$state12","CONDITIONAL_FORMATTING_EDIT","_this$state13","_this$state14","oldCustomColumns","customColumn","removedColumnNames","getRemovedCustomColumnNames","newSorts","removeSortsInColumns","removeFiltersInColumns","removeColumnFromMovedColumns","newSelectDistinctColumns","removeColumnsFromSelectDistinctColumns","_model$layoutHints4","next","_this$grid21","handleResizeColumn","_this$grid22","_this$state15","contentWidth","contentColumnWidths","userWidths","setCalculatedColumnWidth","handleResizeAllColumns","_this$grid23","_this$state16","allColumns","allColumnWidths","visibleColumns","_ref25","_ref26","width","_ref27","_ref28","contentWidths","manualColumns","_rollupConfig$columns","_rollupConfig$columns2","added","removed","isRollup","changes","shouldStartLoading","op","isRollupProhibited","join","aggregation","_rollupConfig$columns3","_rollupConfig$columns4","_ref29","_rollupConfig$columns5","_rollupConfig$columns6","getUserColumnWidthsByName","resetColumnWidthByName","resetGridViewState","columnNames","INITIATING","fileName","frozenTable","tableSubscription","snapshotRanges","modelRanges","includeColumnHeaders","useUnformattedValues","startDownload","_ref30","newAggregations","inputString","_arguments","_this6","_this6$grid","isBackwards","_this6$state","selectedColumnName","isSeekRowAvailable","selectedColumn","getColumnByName","searchFromRow","isContains","containsIgnoreCase","isIgnoreCase","_this6$grid2","columnDataType","dataType","CHAR","STRING","ValueType","DATETIME","_DateUtils$parseDateR","parseDateRange","_DateUtils$parseDateR2","startDate","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","_this$state17","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","_this$state18","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","_this$props8","getDownloadWorker","isStuckToBottom","isStuckToRight","onlyFetchVisibleColumns","onAdvancedSettingsChange","cellInputRendererRegistry","_this$state19","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","_ref31","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","viewState","getCachedViewState","getCachedHiddenColumnNames","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 type TableOptionsTransform,\n} from './sidebar';\nimport { DEFAULT_REGISTRY, IrisGridContext } from './IrisGridContextProvider';\nimport IrisGridModel from './IrisGridModel';\nimport IrisGridUtils from './IrisGridUtils';\nimport CrossColumnSearch from './CrossColumnSearch';\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 IrisGridViewState,\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 { 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?: TableOptionsTransform;\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 = IrisGridContext;\n\n // eslint-disable-next-line react/static-property-placement, react/sort-comp\n declare context: React.ContextType<typeof IrisGridContext>;\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.handleSchemaChanged = this.handleSchemaChanged.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 // Remember the factory we used so `maybeRebuildMetricCalculator` (called\n // from `componentDidUpdate` when the `getMetricCalculator` prop changes)\n // can detect a model-driven swap, e.g. pivot-builder's proxy swapping its\n // inner model.\n this.lastMetricCalculatorFactory = getMetricCalculator;\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 `handleSchemaChanged`.\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, and collapses\n * duplicate `type` entries (last writer wins) before sorting by `order`.\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 // Collapse duplicate `type` entries before sorting. A duplicate `type`\n // would otherwise collide on the `<Menu>` / `<Page>` React key and cause\n // incorrect page reuse. Per the documented composition rule (see the\n // package README), the last writer wins: a later entry — e.g. from a\n // downstream middleware — overrides an earlier one with the same type.\n // `Map.set` keeps the most recent value while preserving the original\n // insertion slot, so an override stays in place unless it changes\n // `order`.\n const byType = new Map<string, OptionItem>();\n transformedItems.forEach(item => {\n byType.set(String(item.type), item);\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 = [...byType.values()]\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 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 getCachedHiddenColumnNames = memoize(\n (\n hiddenColumns: readonly ModelIndex[],\n columns: readonly DhType.Column[]\n ): readonly ColumnName[] =>\n Object.freeze(\n hiddenColumns\n .map(idx => columns[idx]?.name)\n .filter((n): n is ColumnName => n != null)\n ),\n { max: 1 }\n );\n\n getCachedViewState = memoize(\n (hiddenColumns: readonly ColumnName[]): IrisGridViewState =>\n Object.freeze({ hiddenColumns }),\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.SCHEMA_CHANGED,\n this.handleSchemaChanged\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.SCHEMA_CHANGED,\n this.handleSchemaChanged\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 * The current contract assumes a single outstanding model-driven operation:\n * `handlePending` collapses concurrent `PENDING` events into one scrim, so\n * this clears unconditionally. That is consistent with the existing scrim,\n * which any model stop signal already clears regardless of what else is in\n * flight. Ref-counting overlapping operations is intentionally deferred to\n * the planned migration that routes the built-in `startLoading` calls\n * through `PENDING`/`PENDING_CLEARED`; only once every raise/clear goes\n * through this pair can a depth counter stay balanced (a counter added now\n * would desync against the direct `startLoading` callers).\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 (`SCHEMA_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 handleSchemaChanged(): 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 `handleSchemaChanged`\n * (the `SCHEMA_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 if (getMetricCalculator === this.lastMetricCalculatorFactory) return;\n\n const { model } = this.props;\n const { movedColumns } = this.state;\n const next = getMetricCalculator({\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 = getMetricCalculator;\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 { cellInputRendererRegistry } = this.context;\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 >\n <PluginPage\n model={model}\n viewState={this.getCachedViewState(\n this.getCachedHiddenColumnNames(hiddenColumns, model.columns)\n )}\n onBack={this.handleMenuBack}\n />\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 cellInputRendererRegistry={\n cellInputRendererRegistry ?? DEFAULT_REGISTRY\n }\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":[]}
|