@deephaven/iris-grid 0.85.41 → 0.85.42

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.
@@ -51,6 +51,8 @@ export declare class IrisGridMetricCalculator extends GridMetricCalculator {
51
51
  * @param model The current IrisGridModel
52
52
  */
53
53
  private updateColumnWidthsIfNecessary;
54
+ resetCalculatedHeaderGroupWidths(): void;
55
+ resetCalculatedColumnWidths(): void;
54
56
  getGridY(state: IrisGridMetricState): number;
55
57
  /**
56
58
  * Gets the metrics for the current state. This method has to be called before setColumnSize or resetColumnSize.
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGridMetricCalculator.d.ts","sourceRoot":"","sources":["../src/IrisGridMetricCalculator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IrisGridMetricCalculator.d.ts","sourceRoot":"","sources":["../src/IrisGridMetricCalculator.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,oBAAoB,EACpB,WAAW,EACX,UAAU,EACV,YAAY,EAGZ,KAAK,YAAY,EAClB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,OAAO,KAAK,aAAa,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EACL,UAAU,EACV,yBAAyB,EACzB,sBAAsB,EACvB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,iBAAiB,MAAM,qBAAqB,CAAC;AAGzD,MAAM,WAAW,mBAAoB,SAAQ,eAAe;IAC1D,KAAK,EAAE,aAAa,CAAC;IACrB,KAAK,EAAE,iBAAiB,CAAC;IACzB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,eAAe,EAAE,yBAAyB,CAAC;IAC3C,YAAY,EAAE,sBAAsB,CAAC;IACrC,KAAK,EAAE,SAAS,cAAc,EAAE,CAAC;IACjC,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,qBAAa,wBAAyB,SAAQ,oBAAoB;IAEhE,sBAAsB,EAAE,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAa;IAG5D,OAAO,CAAC,sBAAsB,CAAoC;IAElE,OAAO,CAAC,sBAAsB,CAAgC;IAG9D,OAAO,CAAC,iBAAiB,CAA+C;IAExE,MAAM,CAAC,kBAAkB,CACvB,KAAK,EAAE,aAAa,EACpB,WAAW,EAAE,UAAU,GACtB,iBAAiB,GAAG,SAAS;IAchC;;;;;;;OAOG;IACH,OAAO,CAAC,MAAM,CAAC,SAAS;IAoCxB;;;;;;;OAOG;IACH,OAAO,CAAC,gBAAgB;IA6CxB,OAAO,CAAC,gCAAgC,CAEtC;IAEF,OAAO,CAAC,gCAAgC,CAGtC;IAEF,OAAO,CAAC,4BAA4B;IAmBpC;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAU9B;;;OAGG;IACH,OAAO,CAAC,6BAA6B;IA+BrC,gCAAgC,IAAI,IAAI;IAIxC,2BAA2B,IAAI,IAAI;IAKnC,QAAQ,CAAC,KAAK,EAAE,mBAAmB,GAAG,MAAM;IA2B5C;;;;OAIG;IACH,UAAU,CAAC,KAAK,EAAE,mBAAmB,GAAG,WAAW;IAQnD;;;;OAIG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAalD;;;OAGG;IACH,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAYtC;;OAEG;IACH,oBAAoB,IAAI,IAAI;IAK5B;;;OAGG;IACH,mBAAmB,IAAI,YAAY;IAKnC,yBAAyB,IAAI,YAAY;IAIzC;;;;;;OAMG;IACH,0BAA0B,CACxB,WAAW,EAAE,UAAU,EACvB,KAAK,EAAE,mBAAmB,EAC1B,cAAc,EAAE,MAAM,GACrB,MAAM;IA2BT,yBAAyB,CACvB,WAAW,EAAE,UAAU,EACvB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,mBAAmB,EAC1B,cAAc,EAAE,MAAM,GACrB,MAAM;IAgCT;;;;;;OAMG;IAEH,yBAAyB,CACvB,KAAK,EAAE,YAAY,EACnB,KAAK,EAAE,mBAAmB,EAC1B,OAAO,EAAE,WAAW,GACnB;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAgCjE;;;;;;OAMG;IACH,sBAAsB,CACpB,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,mBAAmB,EAC1B,OAAO,EAAE,WAAW,GACnB,YAAY,GAAG,IAAI;IA0BtB;;;;;;OAMG;IACH,kCAAkC,CAChC,KAAK,EAAE,YAAY,EACnB,KAAK,EAAE,mBAAmB,EAC1B,OAAO,EAAE,WAAW,GACnB;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;CAkBnC;AAED,eAAe,wBAAwB,CAAC"}
@@ -147,10 +147,16 @@ export class IrisGridMetricCalculator extends GridMetricCalculator {
147
147
  var headerGroupNames = this.getCachedCurrentHeaderGroupNames(model.columnHeaderGroups);
148
148
  if (this.cachedHeaderGroupNames != null && this.cachedHeaderGroupNames !== headerGroupNames && !deepEqual(headerGroupNames, this.cachedHeaderGroupNames)) {
149
149
  this.resetCalculatedColumnWidths();
150
- this.cachedPaddingMaps.clear();
151
150
  }
152
151
  this.cachedHeaderGroupNames = headerGroupNames;
153
152
  }
153
+ resetCalculatedHeaderGroupWidths() {
154
+ this.cachedPaddingMaps.clear();
155
+ }
156
+ resetCalculatedColumnWidths() {
157
+ super.resetCalculatedColumnWidths();
158
+ this.resetCalculatedHeaderGroupWidths();
159
+ }
154
160
  getGridY(state) {
155
161
  // The state here seems to be a GridMetricState with stateOverrides passed from IrisGrid in the props,
156
162
  // not guaranteed to be IrisGridMetricState
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGridMetricCalculator.js","names":["deepEqual","memoizeOne","GridMetricCalculator","trimMap","isExpandableColumnGridModel","assertNotNull","rebalanceTree","IrisGridMetricCalculator","constructor","arguments","_defineProperty","Map","columns","map","col","name","columnHeaderGroups","group","getModelColumnRoot","model","modelColumn","depth","current","getColumnHeaderParentGroup","root","buildNode","getLeafValue","getGroupValue","_getLeafValue","headerGroup","columnHeaderGroupMap","get","value","children","childName","getHeaderPadding","state","maxColumnWidth","_paddingMap$get","cachedMap","cachedPaddingMaps","_cachedMap$get","groupTree","columnIndex","getColumnIndexByName","concat","calculateColumnHeaderWidth","getColumnHeaderGroupWidth","childIndexes","paddingMap","set","updateCalculatedColumnWidths","cachedModelColumnNames","calculatedColumnWidthsByName","forEach","index","prevColumnWidth","calculatedColumnWidths","resetCalculatedColumnWidths","width","updateUserColumnWidths","userColumnWidths","userColumnWidthsByName","modelIndex","setColumnWidth","updateColumnWidthsIfNecessary","modelColumnNames","getCachedCurrentModelColumnNames","clear","headerGroupNames","getCachedCurrentHeaderGroupNames","cachedHeaderGroupNames","getGridY","gridY","isFilterBarShown","theme","advancedFilters","quickFilters","sorts","reverse","filterBarHeight","size","filterBarCollapsedHeight","length","reverseHeaderBarHeight","getMetrics","column","resetColumnWidth","delete","resetAllColumnWidths","getUserColumnWidths","getCalculatedColumnWidths","parent","baseHeaderWidth","headerPadding","context","headerHorizontalPadding","headerFont","calculateLowerFontWidth","calculateUpperFontWidth","padding","headerText","textForColumnHeader","isColumnExpandable","expandCollapseIconWidth","iconSize","undefined","calculateTextWidth","getFilterInputCoordinates","metrics","gridX","allColumnXs","allColumnWidths","columnX","columnWidth","x","y","height","getScrollLeftForColumn","left","rightVisible","lastLeft","newLeft","getLastLeft","getVisibleWidth","Math","min","getAdvancedFilterButtonCoordinates","filterBoxCoordinates"],"sources":["../src/IrisGridMetricCalculator.ts"],"sourcesContent":["import deepEqual from 'fast-deep-equal';\nimport memoizeOne from 'memoize-one';\nimport {\n GridMetricCalculator,\n GridMetrics,\n ModelIndex,\n ModelSizeMap,\n trimMap,\n isExpandableColumnGridModel,\n type VisibleIndex,\n} from '@deephaven/grid';\nimport type { GridMetricState } from '@deephaven/grid';\nimport type { dh } from '@deephaven/jsapi-types';\nimport { SortDescriptor } from '@deephaven/jsapi-utils';\nimport { assertNotNull } from '@deephaven/utils';\nimport type IrisGridModel from './IrisGridModel';\nimport { IrisGridThemeType } from './IrisGridTheme';\nimport {\n ColumnName,\n ReadonlyAdvancedFilterMap,\n ReadonlyQuickFilterMap,\n} from './CommonTypes';\nimport type ColumnHeaderGroup from './ColumnHeaderGroup';\nimport { rebalanceTree, type TreeNode } from './TreeRebalanceUtil';\n\nexport interface IrisGridMetricState extends GridMetricState {\n model: IrisGridModel;\n theme: IrisGridThemeType;\n isFilterBarShown: boolean;\n advancedFilters: ReadonlyAdvancedFilterMap;\n quickFilters: ReadonlyQuickFilterMap;\n sorts: readonly SortDescriptor[];\n reverse: boolean;\n}\n\nexport class IrisGridMetricCalculator extends GridMetricCalculator {\n // Column widths by name to keep track of columns going in and out of viewport\n userColumnWidthsByName: Map<ColumnName, number> = new Map();\n\n // Cached model column names to detect when the column width map update is necessary\n private cachedModelColumnNames: readonly ColumnName[] | undefined;\n\n private cachedHeaderGroupNames: readonly string[] | undefined;\n\n // Cached padding maps for column header groups\n private cachedPaddingMaps: Map<string, Map<string, number>> = new Map();\n\n static getModelColumnRoot(\n model: IrisGridModel,\n modelColumn: ModelIndex\n ): ColumnHeaderGroup | undefined {\n let depth = 0;\n let current = model.getColumnHeaderParentGroup(modelColumn, depth);\n let root = current;\n\n while (current != null) {\n root = current;\n depth += 1;\n current = model.getColumnHeaderParentGroup(modelColumn, depth);\n }\n\n return root;\n }\n\n /**\n * Builds a TreeNode from the model header groups and columns for padding calculation\n * @param name The name of the root node to build the tree for\n * @param model The IrisGridModel containing columns and header groups\n * @param getLeafValue Function to get the value for leaf nodes (columns)\n * @param getGroupValue Function to get the value for group nodes (header groups)\n * @returns The TreeNode structure\n */\n private static buildNode(\n name: string,\n model: IrisGridModel,\n getLeafValue: (name: string) => number,\n getGroupValue: (name: string) => number\n ): TreeNode {\n const headerGroup = model.columnHeaderGroupMap.get(name);\n\n if (headerGroup) {\n const value = getGroupValue(name);\n\n const children = headerGroup.children.map(childName =>\n IrisGridMetricCalculator.buildNode(\n childName,\n model,\n getLeafValue,\n getGroupValue\n )\n );\n\n // Group node\n return {\n name,\n children,\n value,\n };\n }\n\n // Leaf node\n return {\n name,\n children: [],\n value: getLeafValue(name) ?? 0,\n };\n }\n\n /**\n * Gets the header padding for a specific column based on the widths of its group tree nodes.\n * We only adjust paddings on the column, because the group widths are automatically sized to fit their children.\n * @param state The current IrisGridMetricState\n * @param modelColumn The column index to get the padding for\n * @param maxColumnWidth Maximum allowed column width, applies only to leaf nodes\n * @returns The calculated header padding for the column\n */\n private getHeaderPadding(\n state: IrisGridMetricState,\n modelColumn: ModelIndex,\n maxColumnWidth: number\n ): number {\n const { model } = state;\n const root = IrisGridMetricCalculator.getModelColumnRoot(\n model,\n modelColumn\n );\n if (root == null) {\n return 0;\n }\n const cachedMap = this.cachedPaddingMaps.get(root.name);\n if (cachedMap != null) {\n return cachedMap.get(model.columns[modelColumn].name) ?? 0;\n }\n const groupTree = IrisGridMetricCalculator.buildNode(\n root.name,\n model,\n name => {\n const columnIndex = model.getColumnIndexByName(name);\n assertNotNull(columnIndex, `${name} not found in model columns`);\n return super.calculateColumnHeaderWidth(\n columnIndex,\n state,\n maxColumnWidth\n );\n },\n name => {\n const group = model.columnHeaderGroupMap.get(name);\n assertNotNull(group, `${name} not found in columnHeaderGroupMap`);\n return this.getColumnHeaderGroupWidth(\n group.childIndexes[0],\n group.depth,\n state,\n maxColumnWidth\n );\n }\n );\n const paddingMap = rebalanceTree(groupTree);\n this.cachedPaddingMaps.set(root.name, paddingMap);\n return paddingMap.get(model.columns[modelColumn].name) ?? 0;\n }\n\n private getCachedCurrentModelColumnNames = memoizeOne(\n (columns: readonly dh.Column[]) => columns.map(col => col.name)\n );\n\n private getCachedCurrentHeaderGroupNames = memoizeOne(\n (columnHeaderGroups: readonly ColumnHeaderGroup[]) =>\n columnHeaderGroups.map(group => group.name)\n );\n\n private updateCalculatedColumnWidths(model: IrisGridModel): void {\n assertNotNull(this.cachedModelColumnNames);\n const calculatedColumnWidthsByName = new Map<ColumnName, number>();\n this.cachedModelColumnNames.forEach((name, index) => {\n const prevColumnWidth = this.calculatedColumnWidths.get(index);\n if (prevColumnWidth != null) {\n calculatedColumnWidthsByName.set(name, prevColumnWidth);\n }\n });\n this.resetCalculatedColumnWidths();\n calculatedColumnWidthsByName.forEach((width, name) => {\n const index = model.getColumnIndexByName(name);\n if (index != null) {\n this.calculatedColumnWidths.set(index, width);\n }\n });\n trimMap(this.calculatedColumnWidths);\n }\n\n /**\n * Updates the user column widths based on the current model state\n * @param model The current IrisGridModel\n */\n private updateUserColumnWidths(model: IrisGridModel): void {\n this.userColumnWidths = new Map<ModelIndex, number>();\n this.userColumnWidthsByName.forEach((width, name) => {\n const modelIndex = model.getColumnIndexByName(name);\n if (modelIndex != null) {\n super.setColumnWidth(modelIndex, width);\n }\n });\n }\n\n /**\n * Updates the user and calculated column widths if the model columns have changed\n * @param model The current IrisGridModel\n */\n private updateColumnWidthsIfNecessary(model: IrisGridModel): void {\n // Comparing model.columns references wouldn't work here because\n // the reference can change in the model without the actual column definitions changing\n const modelColumnNames = this.getCachedCurrentModelColumnNames(\n model.columns\n );\n if (\n this.cachedModelColumnNames != null &&\n this.cachedModelColumnNames !== modelColumnNames &&\n !deepEqual(modelColumnNames, this.cachedModelColumnNames)\n ) {\n // Preserve column widths when possible to minimize visual shifts in the grid layout\n this.updateCalculatedColumnWidths(model);\n this.updateUserColumnWidths(model);\n this.cachedPaddingMaps.clear();\n }\n this.cachedModelColumnNames = modelColumnNames;\n\n const headerGroupNames = this.getCachedCurrentHeaderGroupNames(\n model.columnHeaderGroups\n );\n if (\n this.cachedHeaderGroupNames != null &&\n this.cachedHeaderGroupNames !== headerGroupNames &&\n !deepEqual(headerGroupNames, this.cachedHeaderGroupNames)\n ) {\n this.resetCalculatedColumnWidths();\n this.cachedPaddingMaps.clear();\n }\n this.cachedHeaderGroupNames = headerGroupNames;\n }\n\n getGridY(state: IrisGridMetricState): number {\n // The state here seems to be a GridMetricState with stateOverrides passed from IrisGrid in the props,\n // not guaranteed to be IrisGridMetricState\n let gridY = super.getGridY(state);\n const {\n isFilterBarShown,\n theme,\n advancedFilters,\n quickFilters,\n sorts,\n reverse,\n } = state;\n if (isFilterBarShown) {\n gridY += theme.filterBarHeight;\n } else if (\n (quickFilters != null && quickFilters.size > 0) ||\n (advancedFilters != null && advancedFilters.size > 0)\n ) {\n gridY += theme.filterBarCollapsedHeight;\n }\n if (reverse && sorts != null && sorts.length > 0) {\n gridY += theme.reverseHeaderBarHeight;\n }\n\n return gridY;\n }\n\n /**\n * Gets the metrics for the current state. This method has to be called before setColumnSize or resetColumnSize.\n * @param state The current IrisGridMetricState\n * @returns The metrics for the current state\n */\n getMetrics(state: IrisGridMetricState): GridMetrics {\n const { model } = state;\n // Update column widths if columns in the cached model don't match the current model passed in the state\n this.updateColumnWidthsIfNecessary(model);\n\n return super.getMetrics(state);\n }\n\n /**\n * Sets the width for a specific column by index\n * @param column The index of the column to set\n * @param size The new width for the column\n */\n setColumnWidth(column: number, size: number): void {\n super.setColumnWidth(column, size);\n assertNotNull(\n this.cachedModelColumnNames,\n 'setColumnWidth should be called after getMetrics'\n );\n const name = this.cachedModelColumnNames[column];\n if (name != null) {\n this.userColumnWidthsByName.set(name, size);\n trimMap(this.userColumnWidthsByName);\n }\n }\n\n /**\n * Resets the width for a specific column by index\n * @param column The index of the column to reset\n */\n resetColumnWidth(column: number): void {\n super.resetColumnWidth(column);\n assertNotNull(\n this.cachedModelColumnNames,\n 'resetColumnWidth should be called after getMetrics'\n );\n const name = this.cachedModelColumnNames[column];\n if (name != null) {\n this.userColumnWidthsByName.delete(name);\n }\n }\n\n /**\n * Resets all user column widths\n */\n resetAllColumnWidths(): void {\n this.userColumnWidths = new Map<ModelIndex, number>();\n this.userColumnWidthsByName = new Map<ColumnName, number>();\n }\n\n /**\n * Gets the user column widths\n * @returns A map of user column widths\n */\n getUserColumnWidths(): ModelSizeMap {\n // This might return stale data if getMetrics hasn't been called\n return this.userColumnWidths;\n }\n\n getCalculatedColumnWidths(): ModelSizeMap {\n return this.calculatedColumnWidths;\n }\n\n /**\n * Calculate the width of the specified column's header\n * @param modelColumn ModelIndex of the column to get the header width for\n * @param state The grid metric state\n * @param maxColumnWidth Maximum allowed column width, applies only to leaf nodes\n * @returns The calculated width of the column header\n */\n calculateColumnHeaderWidth(\n modelColumn: ModelIndex,\n state: IrisGridMetricState,\n maxColumnWidth: number\n ): number {\n const { model } = state;\n\n const parent = model.getColumnHeaderParentGroup(modelColumn, 0);\n\n const baseHeaderWidth = super.calculateColumnHeaderWidth(\n modelColumn,\n state,\n maxColumnWidth\n );\n\n // Column header with no grouping, use base implementation\n if (parent == null) {\n return baseHeaderWidth;\n }\n\n const headerPadding = this.getHeaderPadding(\n state,\n modelColumn,\n maxColumnWidth\n );\n\n return baseHeaderWidth + headerPadding;\n }\n\n // Original width of column header group content, including title, padding, icons, etc.\n // Does not include any rebalancing adjustments\n getColumnHeaderGroupWidth(\n modelColumn: ModelIndex,\n depth: number,\n state: IrisGridMetricState,\n maxColumnWidth: number\n ): number {\n const { model, theme, context } = state;\n const { headerHorizontalPadding, headerFont } = theme;\n this.calculateLowerFontWidth(headerFont, context);\n this.calculateUpperFontWidth(headerFont, context);\n\n const padding = headerHorizontalPadding * 2;\n\n const headerText = model.textForColumnHeader(modelColumn, depth);\n\n const isColumnExpandable =\n isExpandableColumnGridModel(model) &&\n model.isColumnExpandable(modelColumn);\n\n const expandCollapseIconWidth = isColumnExpandable ? theme.iconSize : 0;\n\n if (headerText !== undefined && headerText !== '') {\n return (\n this.calculateTextWidth(\n context,\n headerFont,\n headerText,\n maxColumnWidth - padding\n ) +\n padding +\n expandCollapseIconWidth\n );\n }\n\n return padding + expandCollapseIconWidth;\n }\n\n /**\n * Get metrics for positioning the filter bar input field.\n * @param index The visible index of the column to get the filter box coordinates for\n * @param state The current IrisGridMetricState\n * @param metrics The grid metrics\n * @returns Coordinates for the filter input field, or null if positioning cannot be calculated\n */\n // eslint-disable-next-line class-methods-use-this\n getFilterInputCoordinates(\n index: VisibleIndex,\n state: IrisGridMetricState,\n metrics: GridMetrics\n ): { x: number; y: number; width: number; height: number } | null {\n // Only handle standard columns (>= 0) in the base implementation\n // Plugins can override to handle special columns (e.g., negative indices)\n if (index < 0) {\n return null;\n }\n\n const { theme } = state;\n const { filterBarHeight = 0 } = theme;\n const { gridX, gridY, allColumnXs, allColumnWidths } = metrics;\n\n const columnX = allColumnXs.get(index);\n const columnWidth = allColumnWidths.get(index);\n\n if (\n columnX == null ||\n columnWidth == null ||\n // Don't show the filter box for invisible columns\n columnWidth === 0 ||\n filterBarHeight === 0\n ) {\n return null;\n }\n\n return {\n x: gridX + columnX,\n y: gridY - filterBarHeight,\n width: columnWidth + 1, // cover right border\n height: filterBarHeight - 1, // remove bottom border\n };\n }\n\n /**\n * Calculate the new left index to bring the given column into view.\n * @param column The column that should be scrolled into view\n * @param state The current IrisGridMetricState\n * @param metrics The grid metrics\n * @returns The left column index to scroll to, or null if no scroll is needed\n */\n getScrollLeftForColumn(\n column: VisibleIndex,\n state: IrisGridMetricState,\n metrics: GridMetrics\n ): VisibleIndex | null {\n const { left, rightVisible, lastLeft } = metrics;\n\n if (column < 0) {\n return null;\n }\n\n if (column < left) {\n // Column is to the left of visible area\n return column;\n }\n\n if (rightVisible < column) {\n // Column is to the right of visible area\n const newLeft = this.getLastLeft(\n state,\n column,\n this.getVisibleWidth(state)\n );\n return Math.min(newLeft, lastLeft);\n }\n\n // Column is already visible, no scroll needed\n return null;\n }\n\n /**\n * Get the coordinates for the advanced filter button positioned in the filter bar.\n * @param index The column index\n * @param state The current IrisGridMetricState\n * @param metrics The grid metrics\n * @returns Coordinates for the advanced filter button, or null if it should not be shown\n */\n getAdvancedFilterButtonCoordinates(\n index: VisibleIndex,\n state: IrisGridMetricState,\n metrics: GridMetrics\n ): { x: number; y: number } | null {\n const filterBoxCoordinates = this.getFilterInputCoordinates(\n index,\n state,\n metrics\n );\n\n if (filterBoxCoordinates == null) {\n return null;\n }\n\n const { x, y, width } = filterBoxCoordinates;\n\n return {\n x: x + width - 25, // Right edge of filter box (24px button + 1px for border)\n y: y + 2, // 2px top margin for the button\n };\n }\n}\n\nexport default IrisGridMetricCalculator;\n"],"mappings":"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"}
1
+ {"version":3,"file":"IrisGridMetricCalculator.js","names":["deepEqual","memoizeOne","GridMetricCalculator","trimMap","isExpandableColumnGridModel","assertNotNull","rebalanceTree","IrisGridMetricCalculator","constructor","arguments","_defineProperty","Map","columns","map","col","name","columnHeaderGroups","group","getModelColumnRoot","model","modelColumn","depth","current","getColumnHeaderParentGroup","root","buildNode","getLeafValue","getGroupValue","_getLeafValue","headerGroup","columnHeaderGroupMap","get","value","children","childName","getHeaderPadding","state","maxColumnWidth","_paddingMap$get","cachedMap","cachedPaddingMaps","_cachedMap$get","groupTree","columnIndex","getColumnIndexByName","concat","calculateColumnHeaderWidth","getColumnHeaderGroupWidth","childIndexes","paddingMap","set","updateCalculatedColumnWidths","cachedModelColumnNames","calculatedColumnWidthsByName","forEach","index","prevColumnWidth","calculatedColumnWidths","resetCalculatedColumnWidths","width","updateUserColumnWidths","userColumnWidths","userColumnWidthsByName","modelIndex","setColumnWidth","updateColumnWidthsIfNecessary","modelColumnNames","getCachedCurrentModelColumnNames","clear","headerGroupNames","getCachedCurrentHeaderGroupNames","cachedHeaderGroupNames","resetCalculatedHeaderGroupWidths","getGridY","gridY","isFilterBarShown","theme","advancedFilters","quickFilters","sorts","reverse","filterBarHeight","size","filterBarCollapsedHeight","length","reverseHeaderBarHeight","getMetrics","column","resetColumnWidth","delete","resetAllColumnWidths","getUserColumnWidths","getCalculatedColumnWidths","parent","baseHeaderWidth","headerPadding","context","headerHorizontalPadding","headerFont","calculateLowerFontWidth","calculateUpperFontWidth","padding","headerText","textForColumnHeader","isColumnExpandable","expandCollapseIconWidth","iconSize","undefined","calculateTextWidth","getFilterInputCoordinates","metrics","gridX","allColumnXs","allColumnWidths","columnX","columnWidth","x","y","height","getScrollLeftForColumn","left","rightVisible","lastLeft","newLeft","getLastLeft","getVisibleWidth","Math","min","getAdvancedFilterButtonCoordinates","filterBoxCoordinates"],"sources":["../src/IrisGridMetricCalculator.ts"],"sourcesContent":["import deepEqual from 'fast-deep-equal';\nimport memoizeOne from 'memoize-one';\nimport {\n GridMetricCalculator,\n GridMetrics,\n ModelIndex,\n ModelSizeMap,\n trimMap,\n isExpandableColumnGridModel,\n type VisibleIndex,\n} from '@deephaven/grid';\nimport type { GridMetricState } from '@deephaven/grid';\nimport type { dh } from '@deephaven/jsapi-types';\nimport { SortDescriptor } from '@deephaven/jsapi-utils';\nimport { assertNotNull } from '@deephaven/utils';\nimport type IrisGridModel from './IrisGridModel';\nimport { IrisGridThemeType } from './IrisGridTheme';\nimport {\n ColumnName,\n ReadonlyAdvancedFilterMap,\n ReadonlyQuickFilterMap,\n} from './CommonTypes';\nimport type ColumnHeaderGroup from './ColumnHeaderGroup';\nimport { rebalanceTree, type TreeNode } from './TreeRebalanceUtil';\n\nexport interface IrisGridMetricState extends GridMetricState {\n model: IrisGridModel;\n theme: IrisGridThemeType;\n isFilterBarShown: boolean;\n advancedFilters: ReadonlyAdvancedFilterMap;\n quickFilters: ReadonlyQuickFilterMap;\n sorts: readonly SortDescriptor[];\n reverse: boolean;\n}\n\nexport class IrisGridMetricCalculator extends GridMetricCalculator {\n // Column widths by name to keep track of columns going in and out of viewport\n userColumnWidthsByName: Map<ColumnName, number> = new Map();\n\n // Cached model column names to detect when the column width map update is necessary\n private cachedModelColumnNames: readonly ColumnName[] | undefined;\n\n private cachedHeaderGroupNames: readonly string[] | undefined;\n\n // Cached padding maps for column header groups\n private cachedPaddingMaps: Map<string, Map<string, number>> = new Map();\n\n static getModelColumnRoot(\n model: IrisGridModel,\n modelColumn: ModelIndex\n ): ColumnHeaderGroup | undefined {\n let depth = 0;\n let current = model.getColumnHeaderParentGroup(modelColumn, depth);\n let root = current;\n\n while (current != null) {\n root = current;\n depth += 1;\n current = model.getColumnHeaderParentGroup(modelColumn, depth);\n }\n\n return root;\n }\n\n /**\n * Builds a TreeNode from the model header groups and columns for padding calculation\n * @param name The name of the root node to build the tree for\n * @param model The IrisGridModel containing columns and header groups\n * @param getLeafValue Function to get the value for leaf nodes (columns)\n * @param getGroupValue Function to get the value for group nodes (header groups)\n * @returns The TreeNode structure\n */\n private static buildNode(\n name: string,\n model: IrisGridModel,\n getLeafValue: (name: string) => number,\n getGroupValue: (name: string) => number\n ): TreeNode {\n const headerGroup = model.columnHeaderGroupMap.get(name);\n\n if (headerGroup) {\n const value = getGroupValue(name);\n\n const children = headerGroup.children.map(childName =>\n IrisGridMetricCalculator.buildNode(\n childName,\n model,\n getLeafValue,\n getGroupValue\n )\n );\n\n // Group node\n return {\n name,\n children,\n value,\n };\n }\n\n // Leaf node\n return {\n name,\n children: [],\n value: getLeafValue(name) ?? 0,\n };\n }\n\n /**\n * Gets the header padding for a specific column based on the widths of its group tree nodes.\n * We only adjust paddings on the column, because the group widths are automatically sized to fit their children.\n * @param state The current IrisGridMetricState\n * @param modelColumn The column index to get the padding for\n * @param maxColumnWidth Maximum allowed column width, applies only to leaf nodes\n * @returns The calculated header padding for the column\n */\n private getHeaderPadding(\n state: IrisGridMetricState,\n modelColumn: ModelIndex,\n maxColumnWidth: number\n ): number {\n const { model } = state;\n const root = IrisGridMetricCalculator.getModelColumnRoot(\n model,\n modelColumn\n );\n if (root == null) {\n return 0;\n }\n const cachedMap = this.cachedPaddingMaps.get(root.name);\n if (cachedMap != null) {\n return cachedMap.get(model.columns[modelColumn].name) ?? 0;\n }\n const groupTree = IrisGridMetricCalculator.buildNode(\n root.name,\n model,\n name => {\n const columnIndex = model.getColumnIndexByName(name);\n assertNotNull(columnIndex, `${name} not found in model columns`);\n return super.calculateColumnHeaderWidth(\n columnIndex,\n state,\n maxColumnWidth\n );\n },\n name => {\n const group = model.columnHeaderGroupMap.get(name);\n assertNotNull(group, `${name} not found in columnHeaderGroupMap`);\n return this.getColumnHeaderGroupWidth(\n group.childIndexes[0],\n group.depth,\n state,\n maxColumnWidth\n );\n }\n );\n const paddingMap = rebalanceTree(groupTree);\n this.cachedPaddingMaps.set(root.name, paddingMap);\n return paddingMap.get(model.columns[modelColumn].name) ?? 0;\n }\n\n private getCachedCurrentModelColumnNames = memoizeOne(\n (columns: readonly dh.Column[]) => columns.map(col => col.name)\n );\n\n private getCachedCurrentHeaderGroupNames = memoizeOne(\n (columnHeaderGroups: readonly ColumnHeaderGroup[]) =>\n columnHeaderGroups.map(group => group.name)\n );\n\n private updateCalculatedColumnWidths(model: IrisGridModel): void {\n assertNotNull(this.cachedModelColumnNames);\n const calculatedColumnWidthsByName = new Map<ColumnName, number>();\n this.cachedModelColumnNames.forEach((name, index) => {\n const prevColumnWidth = this.calculatedColumnWidths.get(index);\n if (prevColumnWidth != null) {\n calculatedColumnWidthsByName.set(name, prevColumnWidth);\n }\n });\n this.resetCalculatedColumnWidths();\n calculatedColumnWidthsByName.forEach((width, name) => {\n const index = model.getColumnIndexByName(name);\n if (index != null) {\n this.calculatedColumnWidths.set(index, width);\n }\n });\n trimMap(this.calculatedColumnWidths);\n }\n\n /**\n * Updates the user column widths based on the current model state\n * @param model The current IrisGridModel\n */\n private updateUserColumnWidths(model: IrisGridModel): void {\n this.userColumnWidths = new Map<ModelIndex, number>();\n this.userColumnWidthsByName.forEach((width, name) => {\n const modelIndex = model.getColumnIndexByName(name);\n if (modelIndex != null) {\n super.setColumnWidth(modelIndex, width);\n }\n });\n }\n\n /**\n * Updates the user and calculated column widths if the model columns have changed\n * @param model The current IrisGridModel\n */\n private updateColumnWidthsIfNecessary(model: IrisGridModel): void {\n // Comparing model.columns references wouldn't work here because\n // the reference can change in the model without the actual column definitions changing\n const modelColumnNames = this.getCachedCurrentModelColumnNames(\n model.columns\n );\n if (\n this.cachedModelColumnNames != null &&\n this.cachedModelColumnNames !== modelColumnNames &&\n !deepEqual(modelColumnNames, this.cachedModelColumnNames)\n ) {\n // Preserve column widths when possible to minimize visual shifts in the grid layout\n this.updateCalculatedColumnWidths(model);\n this.updateUserColumnWidths(model);\n this.cachedPaddingMaps.clear();\n }\n this.cachedModelColumnNames = modelColumnNames;\n\n const headerGroupNames = this.getCachedCurrentHeaderGroupNames(\n model.columnHeaderGroups\n );\n if (\n this.cachedHeaderGroupNames != null &&\n this.cachedHeaderGroupNames !== headerGroupNames &&\n !deepEqual(headerGroupNames, this.cachedHeaderGroupNames)\n ) {\n this.resetCalculatedColumnWidths();\n }\n this.cachedHeaderGroupNames = headerGroupNames;\n }\n\n resetCalculatedHeaderGroupWidths(): void {\n this.cachedPaddingMaps.clear();\n }\n\n resetCalculatedColumnWidths(): void {\n super.resetCalculatedColumnWidths();\n this.resetCalculatedHeaderGroupWidths();\n }\n\n getGridY(state: IrisGridMetricState): number {\n // The state here seems to be a GridMetricState with stateOverrides passed from IrisGrid in the props,\n // not guaranteed to be IrisGridMetricState\n let gridY = super.getGridY(state);\n const {\n isFilterBarShown,\n theme,\n advancedFilters,\n quickFilters,\n sorts,\n reverse,\n } = state;\n if (isFilterBarShown) {\n gridY += theme.filterBarHeight;\n } else if (\n (quickFilters != null && quickFilters.size > 0) ||\n (advancedFilters != null && advancedFilters.size > 0)\n ) {\n gridY += theme.filterBarCollapsedHeight;\n }\n if (reverse && sorts != null && sorts.length > 0) {\n gridY += theme.reverseHeaderBarHeight;\n }\n\n return gridY;\n }\n\n /**\n * Gets the metrics for the current state. This method has to be called before setColumnSize or resetColumnSize.\n * @param state The current IrisGridMetricState\n * @returns The metrics for the current state\n */\n getMetrics(state: IrisGridMetricState): GridMetrics {\n const { model } = state;\n // Update column widths if columns in the cached model don't match the current model passed in the state\n this.updateColumnWidthsIfNecessary(model);\n\n return super.getMetrics(state);\n }\n\n /**\n * Sets the width for a specific column by index\n * @param column The index of the column to set\n * @param size The new width for the column\n */\n setColumnWidth(column: number, size: number): void {\n super.setColumnWidth(column, size);\n assertNotNull(\n this.cachedModelColumnNames,\n 'setColumnWidth should be called after getMetrics'\n );\n const name = this.cachedModelColumnNames[column];\n if (name != null) {\n this.userColumnWidthsByName.set(name, size);\n trimMap(this.userColumnWidthsByName);\n }\n }\n\n /**\n * Resets the width for a specific column by index\n * @param column The index of the column to reset\n */\n resetColumnWidth(column: number): void {\n super.resetColumnWidth(column);\n assertNotNull(\n this.cachedModelColumnNames,\n 'resetColumnWidth should be called after getMetrics'\n );\n const name = this.cachedModelColumnNames[column];\n if (name != null) {\n this.userColumnWidthsByName.delete(name);\n }\n }\n\n /**\n * Resets all user column widths\n */\n resetAllColumnWidths(): void {\n this.userColumnWidths = new Map<ModelIndex, number>();\n this.userColumnWidthsByName = new Map<ColumnName, number>();\n }\n\n /**\n * Gets the user column widths\n * @returns A map of user column widths\n */\n getUserColumnWidths(): ModelSizeMap {\n // This might return stale data if getMetrics hasn't been called\n return this.userColumnWidths;\n }\n\n getCalculatedColumnWidths(): ModelSizeMap {\n return this.calculatedColumnWidths;\n }\n\n /**\n * Calculate the width of the specified column's header\n * @param modelColumn ModelIndex of the column to get the header width for\n * @param state The grid metric state\n * @param maxColumnWidth Maximum allowed column width, applies only to leaf nodes\n * @returns The calculated width of the column header\n */\n calculateColumnHeaderWidth(\n modelColumn: ModelIndex,\n state: IrisGridMetricState,\n maxColumnWidth: number\n ): number {\n const { model } = state;\n\n const parent = model.getColumnHeaderParentGroup(modelColumn, 0);\n\n const baseHeaderWidth = super.calculateColumnHeaderWidth(\n modelColumn,\n state,\n maxColumnWidth\n );\n\n // Column header with no grouping, use base implementation\n if (parent == null) {\n return baseHeaderWidth;\n }\n\n const headerPadding = this.getHeaderPadding(\n state,\n modelColumn,\n maxColumnWidth\n );\n\n return baseHeaderWidth + headerPadding;\n }\n\n // Original width of column header group content, including title, padding, icons, etc.\n // Does not include any rebalancing adjustments\n getColumnHeaderGroupWidth(\n modelColumn: ModelIndex,\n depth: number,\n state: IrisGridMetricState,\n maxColumnWidth: number\n ): number {\n const { model, theme, context } = state;\n const { headerHorizontalPadding, headerFont } = theme;\n this.calculateLowerFontWidth(headerFont, context);\n this.calculateUpperFontWidth(headerFont, context);\n\n const padding = headerHorizontalPadding * 2;\n\n const headerText = model.textForColumnHeader(modelColumn, depth);\n\n const isColumnExpandable =\n isExpandableColumnGridModel(model) &&\n model.isColumnExpandable(modelColumn);\n\n const expandCollapseIconWidth = isColumnExpandable ? theme.iconSize : 0;\n\n if (headerText !== undefined && headerText !== '') {\n return (\n this.calculateTextWidth(\n context,\n headerFont,\n headerText,\n maxColumnWidth - padding\n ) +\n padding +\n expandCollapseIconWidth\n );\n }\n\n return padding + expandCollapseIconWidth;\n }\n\n /**\n * Get metrics for positioning the filter bar input field.\n * @param index The visible index of the column to get the filter box coordinates for\n * @param state The current IrisGridMetricState\n * @param metrics The grid metrics\n * @returns Coordinates for the filter input field, or null if positioning cannot be calculated\n */\n // eslint-disable-next-line class-methods-use-this\n getFilterInputCoordinates(\n index: VisibleIndex,\n state: IrisGridMetricState,\n metrics: GridMetrics\n ): { x: number; y: number; width: number; height: number } | null {\n // Only handle standard columns (>= 0) in the base implementation\n // Plugins can override to handle special columns (e.g., negative indices)\n if (index < 0) {\n return null;\n }\n\n const { theme } = state;\n const { filterBarHeight = 0 } = theme;\n const { gridX, gridY, allColumnXs, allColumnWidths } = metrics;\n\n const columnX = allColumnXs.get(index);\n const columnWidth = allColumnWidths.get(index);\n\n if (\n columnX == null ||\n columnWidth == null ||\n // Don't show the filter box for invisible columns\n columnWidth === 0 ||\n filterBarHeight === 0\n ) {\n return null;\n }\n\n return {\n x: gridX + columnX,\n y: gridY - filterBarHeight,\n width: columnWidth + 1, // cover right border\n height: filterBarHeight - 1, // remove bottom border\n };\n }\n\n /**\n * Calculate the new left index to bring the given column into view.\n * @param column The column that should be scrolled into view\n * @param state The current IrisGridMetricState\n * @param metrics The grid metrics\n * @returns The left column index to scroll to, or null if no scroll is needed\n */\n getScrollLeftForColumn(\n column: VisibleIndex,\n state: IrisGridMetricState,\n metrics: GridMetrics\n ): VisibleIndex | null {\n const { left, rightVisible, lastLeft } = metrics;\n\n if (column < 0) {\n return null;\n }\n\n if (column < left) {\n // Column is to the left of visible area\n return column;\n }\n\n if (rightVisible < column) {\n // Column is to the right of visible area\n const newLeft = this.getLastLeft(\n state,\n column,\n this.getVisibleWidth(state)\n );\n return Math.min(newLeft, lastLeft);\n }\n\n // Column is already visible, no scroll needed\n return null;\n }\n\n /**\n * Get the coordinates for the advanced filter button positioned in the filter bar.\n * @param index The column index\n * @param state The current IrisGridMetricState\n * @param metrics The grid metrics\n * @returns Coordinates for the advanced filter button, or null if it should not be shown\n */\n getAdvancedFilterButtonCoordinates(\n index: VisibleIndex,\n state: IrisGridMetricState,\n metrics: GridMetrics\n ): { x: number; y: number } | null {\n const filterBoxCoordinates = this.getFilterInputCoordinates(\n index,\n state,\n metrics\n );\n\n if (filterBoxCoordinates == null) {\n return null;\n }\n\n const { x, y, width } = filterBoxCoordinates;\n\n return {\n x: x + width - 25, // Right edge of filter box (24px button + 1px for border)\n y: y + 2, // 2px top margin for the button\n };\n }\n}\n\nexport default IrisGridMetricCalculator;\n"],"mappings":"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"}
@@ -2,7 +2,7 @@ import { type GridRange, type GridState, ModelIndex, ModelSizeMap, MoveOperation
2
2
  import type { dh as DhType } from '@deephaven/jsapi-types';
3
3
  import { type ReverseType, type SortDirection, type FormattingRule, type SortDescriptor } from '@deephaven/jsapi-utils';
4
4
  import { type FilterData, type IrisGridState } from './IrisGrid';
5
- import { type ColumnName, type ReadonlyAdvancedFilterMap, type ReadonlyQuickFilterMap, type InputFilter, type CellData, type UIRow, type AdvancedFilterOptions } from './CommonTypes';
5
+ import { type ColumnName, type ReadonlyAdvancedFilterMap, type ReadonlyQuickFilterMap, type InputFilter, type CellData, type PendingDataMap, type UIRow, type AdvancedFilterOptions } from './CommonTypes';
6
6
  import { UIRollupConfig } from './sidebar/RollupRows';
7
7
  import { AggregationSettings } from './sidebar/aggregations/Aggregations';
8
8
  import { FormattingRule as SidebarFormattingRule } from './sidebar/conditional-formatting/ConditionalFormattingUtils';
@@ -70,7 +70,7 @@ export interface DehydratedIrisGridState {
70
70
  selectDistinctColumns: readonly ColumnName[];
71
71
  selectedSearchColumns: readonly ColumnName[];
72
72
  invertSearchColumns: boolean;
73
- pendingDataMap: DehydratedPendingDataMap<string | CellData | null>;
73
+ pendingDataMap: DehydratedPendingDataMap<unknown>;
74
74
  frozenColumns: readonly ColumnName[];
75
75
  columnHeaderGroups?: readonly DhType.ColumnGroup[];
76
76
  partitionConfig?: DehydratedPartitionConfig;
@@ -320,11 +320,9 @@ declare class IrisGridUtils {
320
320
  hydrateAdvancedFilters(columns: readonly DhType.Column[], savedAdvancedFilters: readonly DehydratedAdvancedFilter[], timeZone: string): ReadonlyAdvancedFilterMap;
321
321
  dehydrateAdvancedFilterOptions(column: DhType.Column, options: AdvancedFilterOptions): AdvancedFilterOptions;
322
322
  hydrateAdvancedFilterOptions(column: DhType.Column, options: AdvancedFilterOptions): AdvancedFilterOptions;
323
- dehydratePendingDataMap(columns: readonly DhType.Column[], pendingDataMap: ReadonlyMap<ModelIndex, {
324
- data: Map<ModelIndex | ColumnName, CellData | string>;
325
- }>): DehydratedPendingDataMap<CellData | string | null>;
326
- hydratePendingDataMap(columns: readonly DhType.Column[], pendingDataMap: DehydratedPendingDataMap<CellData | string | null>): Map<number, {
327
- data: Map<ModelIndex | null, string | CellData | DhType.LongWrapper | null>;
323
+ dehydratePendingDataMap(columns: readonly DhType.Column[], pendingDataMap: PendingDataMap): DehydratedPendingDataMap<unknown>;
324
+ hydratePendingDataMap(columns: readonly DhType.Column[], pendingDataMap: DehydratedPendingDataMap<unknown>): Map<number, {
325
+ data: Map<ModelIndex | null, CellData>;
328
326
  }>;
329
327
  dehydratePartitionConfig(partitionColumns: readonly DhType.Column[], partitionConfig: PartitionConfig | undefined): PartitionConfig | undefined;
330
328
  hydratePartitionConfig(partitionColumns: readonly DhType.Column[], partitionConfig: PartitionConfig | undefined): PartitionConfig | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGridUtils.d.ts","sourceRoot":"","sources":["../src/IrisGridUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IrisGridUtils.d.ts","sourceRoot":"","sources":["../src/IrisGridUtils.ts"],"names":[],"mappings":"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"}
@@ -1108,8 +1108,8 @@ class IrisGridUtils {
1108
1108
  var [c] = _ref30;
1109
1109
  return typeof c === 'number';
1110
1110
  }).map(_ref31 => {
1111
- var [c, value] = _ref31;
1112
- return [columns[c].name, this.dehydrateValue(value, columns[c].type)];
1111
+ var [c, cellData] = _ref31;
1112
+ return [columns[c].name, this.dehydrateValue(cellData.value, columns[c].type)];
1113
1113
  })
1114
1114
  }];
1115
1115
  });
@@ -1137,7 +1137,9 @@ class IrisGridUtils {
1137
1137
  var [columnName, value] = _ref34;
1138
1138
  var index = getColumnIndex(columnName);
1139
1139
  assertNotNull(index);
1140
- return [(_getColumnIndex = getColumnIndex(columnName)) !== null && _getColumnIndex !== void 0 ? _getColumnIndex : null, this.hydrateValue(value, columns[index].type)];
1140
+ return [(_getColumnIndex = getColumnIndex(columnName)) !== null && _getColumnIndex !== void 0 ? _getColumnIndex : null, {
1141
+ value: this.hydrateValue(value, columns[index].type)
1142
+ }];
1141
1143
  }))
1142
1144
  }];
1143
1145
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGridUtils.js","names":["GridUtils","DateUtils","TableUtils","Log","assertNotNull","bindAllMethods","EMPTY_ARRAY","EMPTY_MAP","isNotNullOrUndefined","AggregationUtils","AggregationOperation","AdvancedSettings","ColumnHeaderGroup","isPartitionedGridModelProvider","log","module","isPanelStateV1","state","partition","undefined","isPanelStateV2","Array","isArray","partitions","isValidIndex","x","array","length","isDateWrapper","value","asDate","IrisGridUtils","dehydrateGridState","model","gridState","isStuckToBottom","isStuckToRight","movedColumns","movedRows","columns","filter","_ref","to","from","map","_ref2","name","hydrateGridState","customColumns","arguments","customColumnNames","parseCustomColumnNames","columnNames","_ref3","concat","_ref4","getIndex","findIndex","_ref5","dehydrateIrisGridPanelState","irisGridPanelState","isSelectingPartition","advancedSettings","hydrateIrisGridPanelState","Map","DEFAULTS","dehydrateQuickFilters","quickFilters","_ref6","columnIndex","quickFilter","text","dehydrateLong","dehydrateSort","sorts","sort","column","isAbs","direction","extractTableSettings","panelState","inputFilters","irisGridState","advancedFilters","getInputFiltersForColumns","_ref7","type","find","_ref8","columnName","columnType","getFiltersFromFilterMap","filterMap","filters","keys","i","key","item","get","push","getHiddenColumns","userColumnWidths","entries","_ref9","_ref10","customColumn","split","getRemovedCustomColumnNames","oldCustomColumns","oldCustomColumnsNames","oldCustomColumnName","includes","removeSortsInColumns","removeFiltersInColumns","removedColumnNames","_ref11","newFilter","forEach","delete","indexOf","removeColumnFromMovedColumns","_ref12","newMoves","_loop","removedColumnName","removedColumnIndex","moves","j","move","newMove","_objectSpread","fromStart","fromEnd","applyItemMoves","splice","removeColumnsFromSelectDistinctColumns","selectDistinctColumns","getVisibleColumnsInRange","tableColumns","left","right","hiddenColumns","modelIndex","getModelIndex","getPrevVisibleColumns","startIndex","count","unshift","getNextVisibleColumns","getColumnsToFetch","viewportColumns","alwaysFetchColumnNames","columnsToFetch","_ref13","getModelViewportColumns","bufferPages","columnsCenter","bufferWidth","columnsLeft","columnsRight","bufferedColumns","isValidSnapshotRanges","ranges","rangeMap","range","rowMapIndex","startRow","endRow","columnMapIndex","startColumn","endColumn","has","set","matchColumnRanges","join","Number","isInteger","columnsFromRanges","allColumns","columnSet","Set","c","_range$startColumn","_range$endColumn","add","snapshotDataToMatrix","data","rows","result","r","row","rowData","getModelRollupConfig","originalColumns","config","aggregationSettings","_config$columns$lengt","_config$columns","groupingColumns","showConstituents","includeConstituents","showNonAggregatedColumns","includeDescriptions","aggregations","filteredAggregations","_ref14","operation","isRollupProhibited","aggregationColumns","_ref15","selected","invert","isRollupOperation","getOperationColumnNames","aggregationMap","nonAggregatedColumnSet","size","_aggregationMap$Aggre","existingColumns","FIRST","getPendingErrors","pendingDataMap","rowIndex","Error","getColumn","error","getColumnByName","Object","values","_ref16","_ref17","changeFilterColumnNamesToIndexes","_ref18","index","filterConfig","combineFiltersFromList","filterList","a","b","operator","startColumnIndex","combinedText","symbol","getFilterOperatorString","filterText","isCharType","String","fromCharCode","parseInt","parseColumnHeaderGroups","groupsParam","makeColumnHeaderGroup","args","maxDepth","parentMap","groupMap","groups","_ref19","children","originalGroupMap","group","seenChildren","addGroup","_group$children","getColumnIndexByName","existingGroup","childIndexes","depth","childName","childGroup","childIndex","addedGroup","Math","max","headerGroupConfig","flat","columnHeaderGroup","groupNames","_parentMap$get","setParent","convertValueToText","isDateType","date","Date","offset","getTimezoneOffset","offsetDate","getTime","dateText","toISOString","formattedText","replace","substring","constructor","dh","_defineProperty","tableUtils","dehydrateIrisGridState","showOnTop","customColumnFormatMap","isFilterBarShown","metrics","userRowHeights","conditionalFormats","reverse","rollupConfig","showSearchBar","searchValue","selectedSearchColumns","invertSearchColumns","frozenColumns","columnHeaderGroups","partitionConfig","partitionColumns","dehydrateAdvancedFilters","_ref20","_ref21","width","dehydratePendingDataMap","_item$color","color","dehydratePartitionConfig","hydrateIrisGridState","_ref25","_model$layoutHints","reverseType","formatter","hydrateAdvancedFilters","timeZone","hydrateQuickFilters","hydrateSort","_ref22","_ref23","_ref24","REVERSE_TYPE","POST_SORT","hydratePendingDataMap","layoutHints","columnGroups","hydratePartitionConfig","savedQuickFilters","importedFilters","_ref26","makeQuickFilter","_ref27","advancedFilter","options","dehydrateAdvancedFilterOptions","savedAdvancedFilters","_ref28","hydrateAdvancedFilterOptions","columnRetrieved","makeAdvancedFilter","selectedValues","otherOptions","_objectWithoutProperties","_excluded","dehydrateValue","_excluded2","hydrateValue","_ref29","_ref30","_ref31","columnMap","getColumnIndex","_ref32","_ref33","_ref34","_getColumnIndex","dehydrateDateTime","isLongType","hydrateDateTime","hydrateLong","i18n","DateTimeFormat","format","FULL_DATE_FORMAT","parse","LongWrapper","ofString","dropReverse","columnIndexOrName","sortDirection","Table","hydrateDhSort","sortDescriptor","columnSort","abs","descending","desc","asc","applyTableSettings","table","tableSettings","getFiltersFromInputFilters","partitionColumnNames","partitionColumnName","partitionFilter","eq","FilterValue","applyFilter","applySort","_ref35","_ref36","e","debug","rangeSetFromRanges","rangeSets","slice","RangeSet","ofRange","ofRanges","colorForValue","theme","dateColor","isNumberType","positiveNumberColor","negativeNumberColor","zeroNumberColor","textColor","textAlignForValue"],"sources":["../src/IrisGridUtils.ts"],"sourcesContent":["import {\n type GridRange,\n type GridState,\n GridUtils,\n ModelIndex,\n ModelSizeMap,\n MoveOperation,\n VisibleIndex,\n} from '@deephaven/grid';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport {\n DateUtils,\n TableUtils,\n type ReverseType,\n type SortDirection,\n type FormattingRule,\n type SortDescriptor,\n} from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport {\n assertNotNull,\n bindAllMethods,\n EMPTY_ARRAY,\n EMPTY_MAP,\n isNotNullOrUndefined,\n} from '@deephaven/utils';\nimport AggregationUtils from './sidebar/aggregations/AggregationUtils';\nimport AggregationOperation from './sidebar/aggregations/AggregationOperation';\nimport { type FilterData, type IrisGridState } from './IrisGrid';\nimport {\n type ColumnName,\n type ReadonlyAdvancedFilterMap,\n type ReadonlyQuickFilterMap,\n type InputFilter,\n type CellData,\n type PendingDataMap,\n type UIRow,\n type AdvancedFilterOptions,\n} from './CommonTypes';\nimport { UIRollupConfig } from './sidebar/RollupRows';\nimport { AggregationSettings } from './sidebar/aggregations/Aggregations';\nimport { FormattingRule as SidebarFormattingRule } from './sidebar/conditional-formatting/ConditionalFormattingUtils';\nimport IrisGridModel from './IrisGridModel';\nimport type AdvancedSettingsType from './sidebar/AdvancedSettingsType';\nimport AdvancedSettings from './sidebar/AdvancedSettings';\nimport ColumnHeaderGroup, {\n ColumnHeaderGroupConfig,\n} from './ColumnHeaderGroup';\nimport {\n isPartitionedGridModelProvider,\n PartitionConfig,\n} from './PartitionedGridModel';\nimport { type IrisGridThemeType } from './IrisGridTheme';\n\nconst log = Log.module('IrisGridUtils');\n\nexport type HydratedIrisGridState = Pick<\n IrisGridState,\n | 'advancedFilters'\n | 'aggregationSettings'\n | 'customColumnFormatMap'\n | 'isFilterBarShown'\n | 'quickFilters'\n | 'customColumns'\n | 'reverse'\n | 'rollupConfig'\n | 'showSearchBar'\n | 'searchValue'\n | 'selectDistinctColumns'\n | 'selectedSearchColumns'\n | 'sorts'\n | 'invertSearchColumns'\n | 'pendingDataMap'\n | 'frozenColumns'\n | 'conditionalFormats'\n | 'columnHeaderGroups'\n | 'partitionConfig'\n | 'metrics'\n>;\n\nexport type DehydratedPendingDataMap<T> = [number, { data: [string, T][] }][];\n\nexport type DehydratedAdvancedFilter = [\n number,\n {\n options: AdvancedFilterOptions;\n },\n];\n\nexport type DehydratedQuickFilter = [\n number,\n {\n text: string;\n },\n];\n\nexport type DehydratedCustomColumnFormat = [string, FormattingRule];\n\nexport type DehydratedUserColumnWidth = [ColumnName, number];\n\nexport type DehydratedUserRowHeight = [number, number];\n\nexport type DehydratedPartitionConfig = PartitionConfig;\n\n/** @deprecated Use `DehydratedSort` instead */\nexport interface LegacyDehydratedSort {\n column: ModelIndex;\n isAbs: boolean;\n direction: SortDirection;\n}\n\nexport interface DehydratedSort {\n column: ColumnName;\n isAbs: boolean;\n direction: string;\n}\n\nexport interface TableSettings {\n quickFilters?: readonly DehydratedQuickFilter[];\n advancedFilters?: readonly DehydratedAdvancedFilter[];\n inputFilters?: readonly InputFilter[];\n sorts?: readonly (DehydratedSort | LegacyDehydratedSort)[];\n partitions?: unknown[];\n partitionColumns?: ColumnName[];\n}\n\nexport interface DehydratedIrisGridState {\n advancedFilters: readonly DehydratedAdvancedFilter[];\n aggregationSettings: AggregationSettings;\n customColumnFormatMap: readonly DehydratedCustomColumnFormat[];\n isFilterBarShown: boolean;\n quickFilters: readonly DehydratedQuickFilter[];\n sorts: readonly DehydratedSort[];\n userColumnWidths: readonly DehydratedUserColumnWidth[];\n userRowHeights: readonly DehydratedUserRowHeight[];\n customColumns: readonly ColumnName[];\n conditionalFormats: readonly SidebarFormattingRule[];\n /** @deprecated use `reverse` instead. Can be removed after DHE sanluis release */\n reverseType?: ReverseType;\n reverse: boolean;\n rollupConfig?: UIRollupConfig;\n showSearchBar: boolean;\n searchValue: string;\n selectDistinctColumns: readonly ColumnName[];\n selectedSearchColumns: readonly ColumnName[];\n invertSearchColumns: boolean;\n pendingDataMap: DehydratedPendingDataMap<string | CellData | null>;\n frozenColumns: readonly ColumnName[];\n columnHeaderGroups?: readonly DhType.ColumnGroup[];\n partitionConfig?: DehydratedPartitionConfig;\n}\n\nexport interface DehydratedIrisGridPanelStateV1 {\n isSelectingPartition: boolean;\n partition: string | null;\n advancedSettings: [AdvancedSettingsType, boolean][];\n}\n\nexport interface DehydratedIrisGridPanelStateV2 {\n isSelectingPartition: boolean;\n partitions: (string | null)[];\n advancedSettings: [AdvancedSettingsType, boolean][];\n}\n\nexport type DehydratedIrisGridPanelState =\n | DehydratedIrisGridPanelStateV1\n | DehydratedIrisGridPanelStateV2;\n\nexport function isPanelStateV1(\n state: DehydratedIrisGridPanelState\n): state is DehydratedIrisGridPanelStateV1 {\n return (state as DehydratedIrisGridPanelStateV1).partition !== undefined;\n}\n\nexport function isPanelStateV2(\n state: DehydratedIrisGridPanelState\n): state is DehydratedIrisGridPanelStateV2 {\n return Array.isArray((state as DehydratedIrisGridPanelStateV2).partitions);\n}\n\n/**\n * Checks if an index is valid for the given array\n * @param x The index to check\n * @param array The array\n * @returns True if the index if valid within the array\n */\nfunction isValidIndex(x: number, array: readonly unknown[]): boolean {\n return x >= 0 && x < array.length;\n}\n\nfunction isDateWrapper(value: unknown): value is DhType.DateWrapper {\n return (value as DhType.DateWrapper)?.asDate != null;\n}\n\nexport type HydratedGridState = Pick<\n GridState,\n 'isStuckToBottom' | 'isStuckToRight' | 'movedColumns' | 'movedRows'\n>;\n\nexport type DehydratedGridState = {\n isStuckToBottom: boolean;\n isStuckToRight: boolean;\n movedColumns: readonly {\n from: string | [string, string] | ModelIndex | [ModelIndex, ModelIndex];\n to: string | ModelIndex;\n }[];\n movedRows: readonly MoveOperation[];\n};\n\nclass IrisGridUtils {\n /**\n * Exports the state from Grid component to a JSON stringifiable object.\n * See IrisGridCacheUtil for memoization and comparing dehydrated states.\n * @param model The table model to export the Grid state for\n * @param gridState The state of the Grid to export\n * @returns An object that can be stringified and imported with {{@link hydrateGridState}}\n */\n static dehydrateGridState(\n model: IrisGridModel,\n gridState: HydratedGridState\n ): DehydratedGridState {\n const { isStuckToBottom, isStuckToRight, movedColumns, movedRows } =\n gridState;\n\n const { columns } = model;\n\n return {\n isStuckToBottom,\n isStuckToRight,\n movedColumns: [...movedColumns]\n .filter(\n ({ to, from }) =>\n isValidIndex(to, columns) &&\n ((typeof from === 'number' && isValidIndex(from, columns)) ||\n (Array.isArray(from) &&\n isValidIndex(from[0], columns) &&\n isValidIndex(from[1], columns)))\n )\n .map(({ to, from }) => ({\n to: columns[to].name,\n from: Array.isArray(from)\n ? [columns[from[0]].name, columns[from[1]].name]\n : columns[from].name,\n })),\n movedRows: [...movedRows],\n };\n }\n\n /**\n * Import a state for Grid that was exported with {{@link dehydrateGridState}}\n * @param model The table model to import the state for\n * @param gridState The state of the panel that was saved\n * @returns The gridState props to set on the Grid\n */\n static hydrateGridState(\n model: IrisGridModel,\n gridState: DehydratedGridState,\n customColumns: readonly string[] = []\n ): HydratedGridState {\n const { isStuckToBottom, isStuckToRight, movedColumns, movedRows } =\n gridState;\n\n const { columns } = model;\n const customColumnNames =\n IrisGridUtils.parseCustomColumnNames(customColumns);\n const columnNames = columns\n .map(({ name }) => name)\n .concat(customColumnNames);\n\n return {\n isStuckToBottom,\n isStuckToRight,\n movedColumns: [...movedColumns]\n .map(({ to, from }) => {\n const getIndex = (x: string | number): number =>\n typeof x === 'string'\n ? columnNames.findIndex(name => name === x)\n : x;\n\n return {\n to: getIndex(to),\n from: Array.isArray(from)\n ? ([getIndex(from[0]), getIndex(from[1])] as [number, number])\n : getIndex(from),\n };\n })\n .filter(\n ({ to, from }) =>\n isValidIndex(to, columnNames) &&\n ((typeof from === 'number' && isValidIndex(from, columnNames)) ||\n (Array.isArray(from) &&\n isValidIndex(from[0], columnNames) &&\n isValidIndex(from[1], columnNames)))\n ),\n movedRows: [...movedRows],\n };\n }\n\n /**\n * Export the IrisGridPanel state.\n * @param model The table model the state is being dehydrated with\n * @param irisGridPanelState The current IrisGridPanel state\n * @returns The dehydrated IrisGridPanel state\n */\n static dehydrateIrisGridPanelState(\n model: IrisGridModel,\n irisGridPanelState: {\n // This needs to be changed after IrisGridPanel is done\n isSelectingPartition: boolean;\n partitions: (string | null)[];\n advancedSettings: Map<AdvancedSettingsType, boolean>;\n }\n ): DehydratedIrisGridPanelState {\n const { isSelectingPartition, partitions, advancedSettings } =\n irisGridPanelState;\n\n // Return value will be serialized, should not contain undefined\n return {\n isSelectingPartition,\n partitions,\n advancedSettings: [...advancedSettings],\n };\n }\n\n /**\n * Import the saved IrisGridPanel state.\n * @param model The model the state is being hydrated with\n * @param irisGridPanelState Exported IrisGridPanel state\n * @returns The state to apply to the IrisGridPanel\n */\n static hydrateIrisGridPanelState(\n model: IrisGridModel,\n irisGridPanelState: DehydratedIrisGridPanelState\n ): {\n isSelectingPartition: boolean;\n partitions: (string | null)[];\n advancedSettings: Map<AdvancedSettingsType, boolean>;\n } {\n const { isSelectingPartition, advancedSettings } = irisGridPanelState;\n\n let partitions: (string | null)[] = [];\n if (isPanelStateV2(irisGridPanelState)) {\n partitions = irisGridPanelState.partitions;\n } else if (irisGridPanelState.partition != null) {\n partitions = [irisGridPanelState.partition];\n }\n\n return {\n isSelectingPartition,\n partitions,\n advancedSettings: new Map([\n ...AdvancedSettings.DEFAULTS,\n ...advancedSettings,\n ]),\n };\n }\n\n /**\n * Export the quick filters to JSON striginfiable object\n * @param quickFilters The quick filters to dehydrate\n * @returns The dehydrated quick filters\n */\n static dehydrateQuickFilters(\n quickFilters: ReadonlyQuickFilterMap\n ): DehydratedQuickFilter[] {\n return [...quickFilters].map(([columnIndex, quickFilter]) => {\n const { text } = quickFilter;\n return [columnIndex, { text }];\n });\n }\n\n static dehydrateLong<T>(value: T): string | null {\n return value != null ? `${value}` : null;\n }\n\n /**\n * Export the sorts from the provided table sorts to JSON stringifiable object\n * @param sorts The table sorts\n * @returns The dehydrated sorts\n */\n static dehydrateSort(sorts: readonly SortDescriptor[]): DehydratedSort[] {\n return sorts.map(sort => {\n const { column, isAbs, direction } = sort;\n return {\n column: column.name,\n isAbs,\n direction,\n };\n });\n }\n\n /**\n * Pulls just the table settings from the panel state, eg. filters/sorts\n * @param panelState The dehydrated panel state\n * @returns A dehydrated table settings object, { partition, partitionColumn, advancedFilters, quickFilters, sorts }\n */\n static extractTableSettings<AF, QF, S>(\n panelState: {\n irisGridState: { advancedFilters: AF; quickFilters: QF; sorts: S };\n irisGridPanelState: DehydratedIrisGridPanelState;\n },\n inputFilters: InputFilter[] = []\n ): {\n partitions: unknown[];\n advancedFilters: AF;\n inputFilters: InputFilter[];\n quickFilters: QF;\n sorts: S;\n } {\n const { irisGridPanelState, irisGridState } = panelState;\n const partitions = isPanelStateV2(irisGridPanelState)\n ? irisGridPanelState.partitions\n : [irisGridPanelState.partition];\n const { advancedFilters, quickFilters, sorts } = irisGridState;\n\n return {\n advancedFilters,\n inputFilters,\n partitions,\n quickFilters,\n sorts,\n };\n }\n\n static getInputFiltersForColumns(\n columns: readonly { name: string; type: string }[],\n inputFilters: readonly InputFilter[] = []\n ): InputFilter[] {\n return inputFilters.filter(({ name, type }) =>\n columns.find(\n ({ name: columnName, type: columnType }) =>\n columnName === name && columnType === type\n )\n );\n }\n\n static getFiltersFromFilterMap(\n filterMap: ReadonlyAdvancedFilterMap | ReadonlyQuickFilterMap\n ): DhType.FilterCondition[] {\n const filters = [];\n\n const keys = Array.from(filterMap.keys());\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i];\n const item = filterMap.get(key);\n if (item?.filter != null) {\n filters.push(item.filter);\n }\n }\n\n return filters;\n }\n\n /**\n * Get array of hidden column indexes\n * @param userColumnWidths Map of user column widths\n * @returns Array of hidden column indexes\n */\n static getHiddenColumns(userColumnWidths: ModelSizeMap): ModelIndex[] {\n return [...userColumnWidths.entries()]\n .filter(([, value]) => value === 0)\n .map(([key]) => key);\n }\n\n static parseCustomColumnNames(\n customColumns: readonly ColumnName[]\n ): ColumnName[] {\n return customColumns.map(customColumn => customColumn.split('=')[0]);\n }\n\n static getRemovedCustomColumnNames(\n oldCustomColumns: readonly ColumnName[],\n customColumns: readonly ColumnName[]\n ): ColumnName[] {\n const oldCustomColumnsNames =\n IrisGridUtils.parseCustomColumnNames(oldCustomColumns);\n const customColumnNames =\n IrisGridUtils.parseCustomColumnNames(customColumns);\n return oldCustomColumnsNames.filter(\n oldCustomColumnName => !customColumnNames.includes(oldCustomColumnName)\n );\n }\n\n static removeSortsInColumns(\n sorts: readonly SortDescriptor[],\n columnNames: readonly string[]\n ): readonly SortDescriptor[] {\n return sorts.filter(sort => !columnNames.includes(sort.column.name));\n }\n\n static removeFiltersInColumns<T>(\n columns: readonly DhType.Column[],\n filters: ReadonlyMap<number, T>,\n removedColumnNames: readonly ColumnName[]\n ): Map<number, T> {\n const columnNames = columns.map(({ name }) => name);\n const newFilter = new Map(filters);\n removedColumnNames.forEach(columnName =>\n newFilter.delete(columnNames.indexOf(columnName))\n );\n return newFilter;\n }\n\n static removeColumnFromMovedColumns(\n columns: readonly DhType.Column[],\n movedColumns: readonly MoveOperation[],\n removedColumnNames: readonly ColumnName[]\n ): MoveOperation[] {\n const columnNames = columns.map(({ name }) => name);\n let newMoves = [...movedColumns];\n for (let i = 0; i < removedColumnNames.length; i += 1) {\n const removedColumnName = removedColumnNames[i];\n let removedColumnIndex = columnNames.findIndex(\n name => name === removedColumnName\n );\n const moves: MoveOperation[] = [];\n for (let j = 0; j < newMoves.length; j += 1) {\n const move = newMoves[j];\n const newMove = { ...move };\n let [fromStart, fromEnd] = Array.isArray(move.from)\n ? move.from\n : [move.from, move.from];\n\n if (removedColumnIndex <= move.to) {\n newMove.to -= 1;\n }\n\n // If equal to fromStart, the new fromStart would stay the same\n // It's just the next element in the range which will have the same index after deletion\n if (removedColumnIndex < fromStart) {\n fromStart -= 1;\n }\n\n if (removedColumnIndex <= fromEnd) {\n fromEnd -= 1;\n }\n\n if (fromStart <= fromEnd && fromStart !== newMove.to) {\n if (fromStart === fromEnd) {\n moves.push({ ...newMove, from: fromStart });\n } else {\n moves.push({ ...newMove, from: [fromStart, fromEnd] });\n }\n }\n\n // get the next index of the removed column after the move is applied\n // eslint-disable-next-line prefer-destructuring\n removedColumnIndex = GridUtils.applyItemMoves(\n removedColumnIndex,\n removedColumnIndex,\n [move]\n )[0][0];\n }\n\n newMoves = moves;\n columnNames.splice(\n columnNames.findIndex(name => name === removedColumnName),\n 1\n );\n }\n return newMoves;\n }\n\n static removeColumnsFromSelectDistinctColumns(\n selectDistinctColumns: readonly ColumnName[],\n removedColumnNames: readonly ColumnName[]\n ): ColumnName[] {\n return selectDistinctColumns.filter(\n columnName => !removedColumnNames.includes(columnName)\n );\n }\n\n static getVisibleColumnsInRange(\n tableColumns: readonly DhType.Column[],\n left: number,\n right: number,\n movedColumns: readonly MoveOperation[],\n hiddenColumns: readonly number[]\n ): DhType.Column[] {\n const columns: DhType.Column[] = [];\n for (let i = left; i <= right; i += 1) {\n const modelIndex = GridUtils.getModelIndex(i, movedColumns);\n if (\n modelIndex >= 0 &&\n modelIndex < tableColumns.length &&\n !hiddenColumns.includes(modelIndex)\n ) {\n columns.push(tableColumns[modelIndex]);\n }\n }\n return columns;\n }\n\n static getPrevVisibleColumns(\n tableColumns: readonly DhType.Column[],\n startIndex: VisibleIndex,\n count: number,\n movedColumns: readonly MoveOperation[],\n hiddenColumns: readonly VisibleIndex[]\n ): DhType.Column[] {\n const columns = [];\n let i = startIndex;\n while (i >= 0 && columns.length < count) {\n const modelIndex = GridUtils.getModelIndex(i, movedColumns);\n if (\n modelIndex >= 0 &&\n modelIndex < tableColumns.length &&\n !hiddenColumns.includes(modelIndex)\n ) {\n columns.unshift(tableColumns[modelIndex]);\n }\n i -= 1;\n }\n return columns;\n }\n\n static getNextVisibleColumns(\n tableColumns: readonly DhType.Column[],\n startIndex: VisibleIndex,\n count: number,\n movedColumns: readonly MoveOperation[],\n hiddenColumns: readonly VisibleIndex[]\n ): DhType.Column[] {\n const columns = [];\n let i = startIndex;\n while (i < tableColumns.length && columns.length < count) {\n const modelIndex = GridUtils.getModelIndex(i, movedColumns);\n if (\n modelIndex >= 0 &&\n modelIndex < tableColumns.length &&\n !hiddenColumns.includes(modelIndex)\n ) {\n columns.push(tableColumns[modelIndex]);\n }\n i += 1;\n }\n return columns;\n }\n\n static getColumnsToFetch(\n tableColumns: readonly DhType.Column[],\n viewportColumns: readonly DhType.Column[],\n alwaysFetchColumnNames: readonly ColumnName[]\n ): DhType.Column[] {\n const columnsToFetch = [...viewportColumns];\n alwaysFetchColumnNames.forEach(columnName => {\n const column = tableColumns.find(({ name }) => name === columnName);\n if (column != null && !viewportColumns.includes(column)) {\n columnsToFetch.push(column);\n }\n });\n return columnsToFetch;\n }\n\n static getModelViewportColumns(\n columns: readonly DhType.Column[],\n left: number | null,\n right: number | null,\n movedColumns: readonly MoveOperation[],\n hiddenColumns: readonly VisibleIndex[] = [],\n alwaysFetchColumnNames: readonly ColumnName[] = [],\n bufferPages = 0\n ): DhType.Column[] | undefined {\n if (left == null || right == null) {\n return undefined;\n }\n\n const columnsCenter = IrisGridUtils.getVisibleColumnsInRange(\n columns,\n left,\n right,\n movedColumns,\n hiddenColumns\n );\n const bufferWidth = columnsCenter.length * bufferPages;\n const columnsLeft = IrisGridUtils.getPrevVisibleColumns(\n columns,\n left - 1,\n bufferWidth,\n movedColumns,\n hiddenColumns\n );\n const columnsRight = IrisGridUtils.getNextVisibleColumns(\n columns,\n right + 1,\n bufferWidth,\n movedColumns,\n hiddenColumns\n );\n\n const bufferedColumns = [...columnsLeft, ...columnsCenter, ...columnsRight];\n\n return IrisGridUtils.getColumnsToFetch(\n columns,\n bufferedColumns,\n alwaysFetchColumnNames\n );\n }\n\n /**\n * Validate whether the ranges passed in are valid to take a snapshot from.\n * Multiple selections are valid if all of the selected rows have the same columns selected.\n *\n * @param ranges The ranges to validate\n * @returns True if the ranges are valid, false otherwise\n */\n static isValidSnapshotRanges(ranges: readonly GridRange[]): boolean {\n if (ranges == null || ranges.length === 0) {\n return false;\n }\n\n // To verify all the rows selected have the same set of columns selected, build a map with string representations\n // of each range.\n const rangeMap = new Map();\n for (let i = 0; i < ranges.length; i += 1) {\n const range = ranges[i];\n const rowMapIndex = `${range.startRow}:${range.endRow}`;\n const columnMapIndex = `${range.startColumn}:${range.endColumn}`;\n if (!rangeMap.has(rowMapIndex)) {\n rangeMap.set(rowMapIndex, []);\n }\n rangeMap.get(rowMapIndex).push(columnMapIndex);\n }\n\n const keys = [...rangeMap.keys()];\n const matchColumnRanges = rangeMap.get(keys[0]).sort().join(',');\n for (let i = 1; i < keys.length; i += 1) {\n if (rangeMap.get(keys[i]).sort().join(',') !== matchColumnRanges) {\n return false;\n }\n }\n\n return true;\n }\n\n /**\n * Check if the provided value is a valid table index\n * @param value A value to check if it's a valid table index\n */\n static isValidIndex(value: unknown): boolean {\n if (!Number.isInteger(value)) {\n return false;\n }\n if (!(typeof value === 'number')) {\n return false;\n }\n return value >= 0;\n }\n\n /**\n * Returns all columns used in any of the ranges provided\n * @param ranges The model ranges to get columns for\n * @param allColumns All the columns to pull from\n * @returns The columns selected in the range\n */\n static columnsFromRanges(\n ranges: readonly GridRange[],\n allColumns: readonly DhType.Column[]\n ): DhType.Column[] {\n if (ranges == null || ranges.length === 0) {\n return [];\n }\n if (ranges[0].startColumn === null && ranges[0].endColumn === null) {\n // Snapshot of all the columns\n return [...allColumns];\n }\n\n const columnSet = new Set<ModelIndex>();\n for (let i = 0; i < ranges.length; i += 1) {\n const range = ranges[i];\n assertNotNull(range.startColumn);\n assertNotNull(range.endColumn);\n for (\n let c = range.startColumn ?? 0;\n c <= (range.endColumn ?? allColumns.length - 1);\n c += 1\n ) {\n columnSet.add(c);\n }\n }\n return [...columnSet].map(c => allColumns[c]);\n }\n\n /**\n * Transforms an iris data snapshot into a simple data matrix\n * @param data The Iris formatted table data\n * @returns A matrix of the values of the data\n */\n static snapshotDataToMatrix(data: DhType.TableData): unknown[][] {\n const { columns, rows } = data;\n const result = [];\n for (let r = 0; r < rows.length; r += 1) {\n const row = rows[r];\n const rowData = [];\n for (let c = 0; c < columns.length; c += 1) {\n const column = columns[c];\n const value = row.get(column);\n rowData.push(value);\n }\n result.push(rowData);\n }\n return result;\n }\n\n /**\n * Hydrate model rollup config\n * @param originalColumns Original model columns\n * @param config Dehydrated rollup config\n * @param aggregationSettings Aggregation settings\n * @returns Rollup config for the model\n */\n static getModelRollupConfig(\n originalColumns: readonly DhType.Column[],\n config: UIRollupConfig | undefined,\n aggregationSettings: AggregationSettings\n ): DhType.RollupConfig | null {\n if ((config?.columns?.length ?? 0) === 0) {\n return null;\n }\n\n const {\n columns: groupingColumns = [],\n showConstituents: includeConstituents = true,\n showNonAggregatedColumns = true,\n includeDescriptions = true,\n } = config ?? {};\n const { aggregations = [] } = aggregationSettings ?? {};\n const filteredAggregations = aggregations.filter(\n ({ operation }) => !AggregationUtils.isRollupProhibited(operation)\n );\n const aggregationColumns = filteredAggregations.map(\n ({ operation, selected, invert }) =>\n AggregationUtils.isRollupOperation(operation)\n ? []\n : AggregationUtils.getOperationColumnNames(\n originalColumns,\n operation,\n selected,\n invert\n )\n );\n\n const aggregationMap = {} as Record<AggregationOperation, string[]>;\n // Aggregation columns should show first, add them first\n for (let i = 0; i < filteredAggregations.length; i += 1) {\n aggregationMap[filteredAggregations[i].operation] = aggregationColumns[i];\n }\n\n if (showNonAggregatedColumns) {\n // Filter out any column that already has an aggregation or grouping\n const nonAggregatedColumnSet = new Set(\n originalColumns\n .map(c => c.name)\n .filter(name => !groupingColumns.includes(name))\n );\n aggregationColumns.forEach(columns => {\n columns.forEach(name => nonAggregatedColumnSet.delete(name));\n });\n\n if (nonAggregatedColumnSet.size > 0) {\n const existingColumns =\n aggregationMap[AggregationOperation.FIRST] ?? [];\n aggregationMap[AggregationOperation.FIRST] = [\n ...existingColumns,\n ...nonAggregatedColumnSet,\n ];\n }\n }\n\n return {\n groupingColumns,\n includeConstituents,\n includeDescriptions,\n aggregations: aggregationMap,\n };\n }\n\n /**\n * @param pendingDataMap Map of pending data\n * @returns A map with the errors in the pending data\n */\n static getPendingErrors(pendingDataMap: Map<number, UIRow>): void {\n pendingDataMap.forEach((row, rowIndex) => {\n if (!IrisGridUtils.isValidIndex(rowIndex)) {\n throw new Error(`Invalid rowIndex ${rowIndex}`);\n }\n\n const { data } = row;\n data.forEach((value, columnIndex) => {\n if (!IrisGridUtils.isValidIndex(columnIndex)) {\n throw new Error(`Invalid columnIndex ${columnIndex}`);\n }\n });\n });\n }\n\n /**\n * Retrieves a column from the provided array at the index, or `null` and logs an error if it's invalid\n *\n * @param columns The columns to get the column from\n * @param columnIndex The column index to get\n */\n static getColumn(\n columns: readonly DhType.Column[],\n columnIndex: ModelIndex\n ): DhType.Column | null {\n if (columnIndex < columns.length) {\n return columns[columnIndex];\n }\n\n log.error('Unable to retrieve column', columnIndex, '>=', columns.length);\n\n return null;\n }\n\n /**\n * Retrieves a column from the provided array matching the name, or `null` and logs an error if not found\n * @param columns The columns to get the column from\n * @param columnName The column name to retrieve\n */\n static getColumnByName(\n columns: readonly DhType.Column[],\n columnName: ColumnName\n ): DhType.Column | undefined {\n // Columns can contain ColumnBy sources with negative indexes\n const column = Object.values(columns).find(\n ({ name }) => name === columnName\n );\n if (column == null) {\n log.error(\n 'Unable to retrieve column by name',\n columnName,\n columns.map(({ name }) => name)\n );\n }\n\n return column;\n }\n\n /**\n * Get filter configs with column names changed to indexes, exclude missing columns\n * @param columns The columns to get column indexes from\n * @param filters Filter configs\n * @returns Updated filter configs with column names changed to indexes\n */\n static changeFilterColumnNamesToIndexes<T>(\n columns: readonly DhType.Column[],\n filters: { name: ColumnName; filter: T }[]\n ): [number, T][] {\n return filters\n .map(({ name, filter }): null | [number, T] => {\n const index = columns.findIndex(column => column.name === name);\n return index < 0 ? null : [index, filter];\n })\n .filter(filterConfig => filterConfig != null) as [number, T][];\n }\n\n /**\n * @param columnType The column type that the filters will be applied to.\n * @param filterList The list of filters to be combined.\n * @returns The combination of the filters in filterList as text.\n */\n static combineFiltersFromList(\n columnType: string | null,\n filterList: FilterData[]\n ): string {\n filterList.sort((a, b) => {\n // move all 'equals' comparisons to end of list\n if (a.operator === 'eq' && b.operator !== 'eq') {\n return 1;\n }\n if (a.operator !== 'eq' && b.operator === 'eq') {\n return -1;\n }\n return a.startColumnIndex - b.startColumnIndex;\n });\n\n let combinedText = '';\n for (let i = 0; i < filterList.length; i += 1) {\n const { text, value, operator } = filterList[i];\n if (value !== undefined) {\n let symbol = '';\n if (operator !== undefined) {\n if (value == null && operator === 'eq') {\n symbol = '=';\n } else if (operator !== 'eq') {\n if (operator === 'startsWith' || operator === 'endsWith') {\n symbol = '*';\n } else {\n symbol = TableUtils.getFilterOperatorString(operator);\n }\n }\n }\n\n let filterText = `${symbol}${text}`;\n if (operator === 'startsWith') {\n filterText = `${text}${symbol}`;\n }\n if (\n columnType != null &&\n value !== null &&\n TableUtils.isCharType(columnType)\n ) {\n filterText = `${symbol}${String.fromCharCode(parseInt(text, 10))}`;\n }\n if (i !== 0) {\n combinedText += operator === 'eq' ? ' || ' : ' && ';\n }\n combinedText += filterText;\n }\n }\n return combinedText;\n }\n\n /**\n * Parses the column header groups provided.\n * If undefined, should provide default groups such as from layoutHints\n *\n * @returns Object containing groups array, max depth, map of name to parent group, and map of name to group\n */\n static parseColumnHeaderGroups<\n T extends ColumnHeaderGroup,\n C extends ColumnHeaderGroupConfig,\n >(\n model: IrisGridModel,\n groupsParam: readonly (DhType.ColumnGroup | T)[],\n makeColumnHeaderGroup: (args: C) => T = (args: C) =>\n new ColumnHeaderGroup(args) as T\n ): {\n groups: T[];\n maxDepth: number;\n parentMap: Map<string, T>;\n groupMap: Map<string, T>;\n } {\n let maxDepth = 1;\n const parentMap: Map<string, T> = new Map();\n const groupMap: Map<string, T> = new Map();\n\n // Remove any empty groups before parsing\n const groups = groupsParam?.filter(\n ({ children }) => children != null && children.length > 0\n );\n\n if (groups.length === 0) {\n return { groups: [], maxDepth, parentMap, groupMap };\n }\n\n const originalGroupMap = new Map(groups.map(group => [group.name, group]));\n const seenChildren = new Set<string>();\n\n const addGroup = (group: DhType.ColumnGroup | T): T => {\n const { name } = group;\n\n assertNotNull(name, 'Column header group has no name');\n\n const columnIndex = model.getColumnIndexByName(name);\n // Groups cannot have names matching columns to avoid parent-child collision\n // unless they refer to ColumnBy sources with negative indexes\n if (columnIndex != null && columnIndex >= 0) {\n throw new Error(`Column header group has same name as column: ${name}`);\n }\n\n const existingGroup = groupMap.get(name);\n\n if (existingGroup) {\n return existingGroup;\n }\n\n const childIndexes: T['childIndexes'] = [];\n let depth = 1;\n\n if (group.children == null) {\n throw new Error(`Column header group ${name} has no children`);\n }\n\n group.children.forEach(childName => {\n if (seenChildren.has(childName)) {\n throw new Error(\n `Column group child ${childName} specified in multiple groups`\n );\n }\n seenChildren.add(childName);\n\n const childGroup = originalGroupMap.get(childName);\n const childIndex = model.getColumnIndexByName(childName);\n if (childGroup) {\n // Adding another column header group\n const addedGroup = addGroup(childGroup);\n childIndexes.push(...addedGroup.childIndexes);\n depth = Math.max(depth, addedGroup.depth + 1);\n } else if (childIndex != null) {\n // Adding a base column\n childIndexes.push(childIndex);\n depth = Math.max(depth, 1);\n } else {\n throw new Error(`Unknown child ${childName} in group ${name}`);\n }\n });\n\n const headerGroupConfig = {\n ...(group as C),\n name,\n children: group.children,\n depth,\n childIndexes: childIndexes.flat(),\n };\n\n const columnHeaderGroup = makeColumnHeaderGroup(headerGroupConfig);\n\n groupMap.set(name, columnHeaderGroup);\n group.children?.forEach(childName =>\n parentMap.set(childName, columnHeaderGroup)\n );\n\n maxDepth = Math.max(maxDepth, columnHeaderGroup.depth + 1);\n return columnHeaderGroup;\n };\n\n const groupNames = new Set();\n\n groups.forEach(group => {\n const { name } = group;\n if (groupNames.has(name)) {\n throw new Error(`Duplicate column group name: ${name}`);\n }\n groupNames.add(name);\n addGroup(group);\n });\n\n groupMap.forEach(group => {\n group.setParent(parentMap.get(group.name)?.name);\n });\n\n return { groups: [...groupMap.values()], maxDepth, groupMap, parentMap };\n }\n\n /**\n * @param value The value of the cell in a column\n * @param columnType The type of the column\n * @returns The value of the cell converted to text\n */\n static convertValueToText(value: unknown, columnType: string): string {\n if (\n columnType != null &&\n TableUtils.isCharType(columnType) &&\n value != null &&\n typeof value === 'number'\n ) {\n return String.fromCharCode(value);\n }\n if (TableUtils.isDateType(columnType) && isDateWrapper(value)) {\n const date = new Date(value.asDate());\n const offset = date.getTimezoneOffset();\n const offsetDate = new Date(date.getTime() - offset * 60 * 1000);\n const dateText = offsetDate.toISOString();\n const formattedText = dateText.replace('T', ' ').substring(0, 23);\n return formattedText;\n }\n if (value == null) {\n return '';\n }\n return `${value}`;\n }\n\n private dh: typeof DhType;\n\n private tableUtils: TableUtils;\n\n constructor(dh: typeof DhType) {\n this.dh = dh;\n this.tableUtils = new TableUtils(dh);\n bindAllMethods(this);\n }\n\n /**\n * Exports the state from IrisGrid to a JSON stringifiable object.\n * See IrisGridCacheUtil for memoization and comparing dehydrated states.\n * @param model The table model to export the state for\n * @param irisGridState The current state of the IrisGrid\n */\n dehydrateIrisGridState(\n model: IrisGridModel,\n irisGridState: HydratedIrisGridState\n ): DehydratedIrisGridState {\n const {\n aggregationSettings = { aggregations: EMPTY_ARRAY, showOnTop: false },\n advancedFilters,\n customColumnFormatMap,\n isFilterBarShown,\n metrics: { userColumnWidths, userRowHeights } = {\n userColumnWidths: EMPTY_MAP,\n userRowHeights: EMPTY_MAP,\n },\n quickFilters,\n customColumns,\n conditionalFormats = EMPTY_ARRAY,\n reverse,\n rollupConfig,\n showSearchBar,\n searchValue,\n selectDistinctColumns = EMPTY_ARRAY,\n selectedSearchColumns,\n sorts,\n invertSearchColumns,\n pendingDataMap = EMPTY_MAP,\n frozenColumns,\n columnHeaderGroups,\n partitionConfig,\n } = irisGridState;\n const { columns } = model;\n const partitionColumns = isPartitionedGridModelProvider(model)\n ? model.partitionColumns\n : [];\n\n // Return value will be serialized, should not contain undefined\n return {\n advancedFilters: this.dehydrateAdvancedFilters(columns, advancedFilters),\n aggregationSettings,\n customColumnFormatMap: [...customColumnFormatMap],\n isFilterBarShown,\n quickFilters: IrisGridUtils.dehydrateQuickFilters(quickFilters),\n sorts: IrisGridUtils.dehydrateSort(sorts),\n userColumnWidths: [...userColumnWidths]\n .filter(\n ([columnIndex]) =>\n columnIndex != null &&\n columnIndex >= 0 &&\n columnIndex < columns.length\n )\n .map(([columnIndex, width]) => [columns[columnIndex].name, width]),\n userRowHeights: [...userRowHeights],\n customColumns: [...customColumns],\n conditionalFormats: [...conditionalFormats],\n reverse,\n rollupConfig,\n showSearchBar,\n searchValue,\n selectDistinctColumns: [...selectDistinctColumns],\n selectedSearchColumns,\n invertSearchColumns,\n pendingDataMap: this.dehydratePendingDataMap(columns, pendingDataMap),\n frozenColumns,\n columnHeaderGroups: columnHeaderGroups?.map(item => ({\n name: item.name,\n children: item.children,\n color: item.color ?? null,\n })),\n partitionConfig: this.dehydratePartitionConfig(\n partitionColumns,\n partitionConfig\n ),\n };\n }\n\n /**\n * Import a state for IrisGrid that was exported with {{@link dehydrateIrisGridState}}\n * @param model The table model to import the state with\n * @param irisGridState The saved IrisGrid state\n */\n hydrateIrisGridState(\n model: IrisGridModel,\n irisGridState: DehydratedIrisGridState\n ): Omit<HydratedIrisGridState, 'metrics'> & {\n userColumnWidths: ModelSizeMap;\n userRowHeights: ModelSizeMap;\n } {\n const {\n advancedFilters,\n aggregationSettings = { aggregations: [], showOnTop: false },\n customColumnFormatMap,\n isFilterBarShown,\n quickFilters,\n sorts,\n customColumns,\n conditionalFormats,\n userColumnWidths,\n userRowHeights,\n reverseType,\n reverse,\n rollupConfig = undefined,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n invertSearchColumns = true,\n pendingDataMap = [],\n frozenColumns,\n columnHeaderGroups,\n partitionConfig,\n } = irisGridState;\n const { columns, formatter } = model;\n const partitionColumns = isPartitionedGridModelProvider(model)\n ? model.partitionColumns\n : [];\n return {\n advancedFilters: this.hydrateAdvancedFilters(\n columns,\n advancedFilters,\n formatter.timeZone\n ),\n aggregationSettings,\n customColumnFormatMap: new Map(customColumnFormatMap),\n isFilterBarShown,\n quickFilters: this.hydrateQuickFilters(\n columns,\n quickFilters,\n formatter.timeZone\n ),\n sorts: this.hydrateSort(columns, sorts, true),\n userColumnWidths: new Map(\n userColumnWidths\n .map(\n ([column, width]: [string | number, number]): [number, number] => {\n if (\n typeof column === 'string' ||\n (column as unknown) instanceof String\n ) {\n return [\n columns.findIndex(({ name }) => name === column),\n width,\n ];\n }\n return [column, width];\n }\n )\n .filter(\n ([column]) =>\n column != null && column >= 0 && column < columns.length\n )\n ),\n customColumns,\n conditionalFormats,\n userRowHeights: new Map(userRowHeights),\n reverse: reverseType === TableUtils.REVERSE_TYPE.POST_SORT || reverse,\n rollupConfig,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n invertSearchColumns,\n pendingDataMap: this.hydratePendingDataMap(\n columns,\n pendingDataMap\n ) as PendingDataMap<UIRow>,\n frozenColumns,\n columnHeaderGroups: IrisGridUtils.parseColumnHeaderGroups(\n model,\n columnHeaderGroups ?? model.layoutHints?.columnGroups ?? []\n ).groups,\n partitionConfig: this.hydratePartitionConfig(\n partitionColumns,\n partitionConfig\n ),\n };\n }\n\n /**\n * Import the saved quick filters to apply to the columns. Does not actually apply the filters.\n * @param columns The columns the filters will be applied to\n * @param savedQuickFilters Exported quick filters definitions\n * @param timeZone The time zone to make this value in if it is a date type. E.g. America/New_York\n * @returns The quick filters to apply to the columns\n */\n hydrateQuickFilters(\n columns: readonly DhType.Column[],\n savedQuickFilters: readonly DehydratedQuickFilter[],\n timeZone?: string\n ): ReadonlyQuickFilterMap {\n const importedFilters = savedQuickFilters.map(\n ([columnIndex, quickFilter]: DehydratedQuickFilter): [\n number,\n { text: string; filter: DhType.FilterCondition | null },\n ] => {\n const { text } = quickFilter;\n\n let filter = null;\n try {\n const column = IrisGridUtils.getColumn(columns, columnIndex);\n if (column != null) {\n filter = this.tableUtils.makeQuickFilter(column, text, timeZone);\n }\n } catch (error) {\n log.error('hydrateQuickFilters error with', text, error);\n }\n\n return [columnIndex, { text, filter }];\n }\n );\n\n return new Map(importedFilters);\n }\n\n /**\n * Export the advanced filters from the provided columns to JSON striginfiable object\n * @param columns The columns for the filters\n * @param advancedFilters The advanced filters to dehydrate\n * @returns The dehydrated advanced filters\n */\n dehydrateAdvancedFilters(\n columns: readonly DhType.Column[],\n advancedFilters: ReadonlyAdvancedFilterMap\n ): DehydratedAdvancedFilter[] {\n return [...advancedFilters].map(([columnIndex, advancedFilter]) => {\n const column = IrisGridUtils.getColumn(columns, columnIndex);\n assertNotNull(column);\n const options = this.dehydrateAdvancedFilterOptions(\n column,\n advancedFilter.options\n );\n return [columnIndex, { options }];\n });\n }\n\n /**\n * Import the saved advanced filters to apply to the columns. Does not actually apply the filters.\n * @param columns The columns the filters will be applied to\n * @param savedAdvancedFilters Exported advanced filters definitions\n * @param timeZone The time zone to make this filter in if it is a date type. E.g. America/New_York\n * @returns The advanced filters to apply to the columns\n */\n hydrateAdvancedFilters(\n columns: readonly DhType.Column[],\n savedAdvancedFilters: readonly DehydratedAdvancedFilter[],\n timeZone: string\n ): ReadonlyAdvancedFilterMap {\n const importedFilters = savedAdvancedFilters.map(\n ([columnIndex, advancedFilter]: DehydratedAdvancedFilter): [\n number,\n {\n options: AdvancedFilterOptions;\n filter: DhType.FilterCondition | null;\n },\n ] => {\n const column = IrisGridUtils.getColumn(columns, columnIndex);\n assertNotNull(column);\n const options = this.hydrateAdvancedFilterOptions(\n column,\n advancedFilter.options\n );\n let filter = null;\n\n try {\n const columnRetrieved = IrisGridUtils.getColumn(columns, columnIndex);\n if (columnRetrieved != null) {\n filter = this.tableUtils.makeAdvancedFilter(\n column,\n options,\n timeZone\n );\n }\n } catch (error) {\n log.error('hydrateAdvancedFilters error with', options, error);\n }\n\n return [columnIndex, { options, filter }];\n }\n );\n\n return new Map(importedFilters);\n }\n\n dehydrateAdvancedFilterOptions(\n column: DhType.Column,\n options: AdvancedFilterOptions\n ): AdvancedFilterOptions {\n const { selectedValues, ...otherOptions } = options;\n return {\n selectedValues: selectedValues?.map((value: unknown) =>\n this.dehydrateValue(value, column?.type)\n ),\n ...otherOptions,\n };\n }\n\n hydrateAdvancedFilterOptions(\n column: DhType.Column,\n options: AdvancedFilterOptions\n ): AdvancedFilterOptions {\n const { selectedValues, ...otherOptions } = options;\n return {\n selectedValues: selectedValues?.map(value =>\n this.hydrateValue(value, column?.type)\n ),\n ...otherOptions,\n };\n }\n\n dehydratePendingDataMap(\n columns: readonly DhType.Column[],\n pendingDataMap: ReadonlyMap<\n ModelIndex,\n {\n data: Map<ModelIndex | ColumnName, CellData | string>;\n }\n >\n ): DehydratedPendingDataMap<CellData | string | null> {\n return [...pendingDataMap].map(([rowIndex, { data }]) => [\n rowIndex,\n {\n data: [...data]\n .filter(([c]) => typeof c === 'number')\n .map(([c, value]) => [\n columns[c as number].name,\n this.dehydrateValue(value, columns[c as number].type),\n ]),\n },\n ]);\n }\n\n hydratePendingDataMap(\n columns: readonly DhType.Column[],\n pendingDataMap: DehydratedPendingDataMap<CellData | string | null>\n ): Map<\n number,\n {\n data: Map<\n ModelIndex | null,\n string | CellData | DhType.LongWrapper | null\n >;\n }\n > {\n const columnMap = new Map<ColumnName, number>();\n const getColumnIndex = (columnName: ColumnName): number | undefined => {\n if (!columnMap.has(columnName)) {\n columnMap.set(\n columnName,\n columns.findIndex(({ name }) => name === columnName)\n );\n }\n return columnMap.get(columnName);\n };\n\n return new Map(\n pendingDataMap.map(\n ([rowIndex, { data }]: [\n number,\n { data: [string, CellData | string | null][] },\n ]) => [\n rowIndex,\n {\n data: new Map(\n data.map(([columnName, value]) => {\n const index = getColumnIndex(columnName);\n assertNotNull(index);\n return [\n getColumnIndex(columnName) ?? null,\n this.hydrateValue(value, columns[index].type),\n ];\n })\n ),\n },\n ]\n )\n );\n }\n\n dehydratePartitionConfig(\n partitionColumns: readonly DhType.Column[],\n partitionConfig: PartitionConfig | undefined\n ): PartitionConfig | undefined {\n if (partitionConfig == null) {\n return partitionConfig;\n }\n\n return {\n ...partitionConfig,\n partitions: partitionConfig.partitions.map((partition, index) =>\n this.dehydrateValue(partition, partitionColumns[index].type)\n ),\n };\n }\n\n hydratePartitionConfig(\n partitionColumns: readonly DhType.Column[],\n partitionConfig: PartitionConfig | undefined\n ): PartitionConfig | undefined {\n if (partitionConfig == null) {\n return partitionConfig;\n }\n\n return {\n ...partitionConfig,\n partitions: partitionConfig.partitions.map((partition, index) =>\n this.hydrateValue(partition, partitionColumns[index].type)\n ),\n };\n }\n\n /**\n * Dehydrates/serializes a value for storage.\n * @param value The value to dehydrate\n * @param columnType The column type\n */\n dehydrateValue<T>(value: T, columnType: string): string | T | null {\n if (TableUtils.isDateType(columnType)) {\n return this.dehydrateDateTime(\n value as unknown as number | DhType.DateWrapper | Date\n );\n }\n\n if (TableUtils.isLongType(columnType)) {\n return IrisGridUtils.dehydrateLong(value);\n }\n\n return value;\n }\n\n /**\n * Hydrate a value from it's serialized state\n * @param value The dehydrated value that needs to be hydrated\n * @param columnType The type of column\n */\n hydrateValue<T>(\n value: T,\n columnType: string\n ): DhType.DateWrapper | DhType.LongWrapper | T | null {\n if (TableUtils.isDateType(columnType)) {\n return this.hydrateDateTime(value as unknown as string);\n }\n\n if (TableUtils.isLongType(columnType)) {\n return this.hydrateLong(value as unknown as string);\n }\n\n return value;\n }\n\n dehydrateDateTime(value: number | DhType.DateWrapper | Date): string | null {\n return value != null\n ? this.dh.i18n.DateTimeFormat.format(DateUtils.FULL_DATE_FORMAT, value)\n : null;\n }\n\n hydrateDateTime(value: string): DhType.DateWrapper | null {\n return value != null\n ? this.dh.i18n.DateTimeFormat.parse(DateUtils.FULL_DATE_FORMAT, value)\n : null;\n }\n\n hydrateLong(value: string): DhType.LongWrapper | null {\n return value != null ? this.dh.LongWrapper.ofString(value) : null;\n }\n\n /**\n * Import the saved sorts to apply to the model. Does not actually apply the sort.\n * @param columns The columns the sorts will be applied to\n * @param sorts Exported sort definitions\n * @param dropReverse If true, drop reverse sort descriptors from the result\n * @returns The sort descriptors to apply to the model\n */\n hydrateSort(\n columns: readonly DhType.Column[],\n sorts: readonly (DehydratedSort | LegacyDehydratedSort)[],\n dropReverse = false\n ): readonly SortDescriptor[] {\n const { dh } = this;\n return (\n sorts\n .map(sort => {\n const { column: columnIndexOrName, isAbs, direction } = sort;\n if (direction === TableUtils.sortDirection.reverse) {\n return dh.Table.reverse();\n }\n\n const column =\n typeof columnIndexOrName === 'string'\n ? IrisGridUtils.getColumnByName(columns, columnIndexOrName)\n : IrisGridUtils.getColumn(columns, columnIndexOrName);\n\n if (column != null) {\n return {\n column: {\n name: column.name,\n type: column.type,\n },\n isAbs,\n direction,\n };\n }\n return null;\n })\n // If we can't find the column any more, it's null, filter it out\n // If the item is a reverse sort item, and dropReverse is true, filter it out\n // - it will get applied with the `reverse` property\n // This should only happen when loading a legacy dashboard\n .filter(\n item =>\n item != null &&\n (item.direction !== TableUtils.sortDirection.reverse ||\n !dropReverse)\n ) as SortDescriptor[]\n );\n }\n\n hydrateDhSort(\n columns: readonly DhType.Column[],\n sorts: readonly SortDescriptor[]\n ): DhType.Sort[] {\n const { dh } = this;\n return (\n sorts\n .map(sortDescriptor => {\n const {\n column: { name },\n isAbs,\n direction,\n } = sortDescriptor;\n\n if (direction === TableUtils.sortDirection.reverse) {\n return dh.Table.reverse();\n }\n\n const column = IrisGridUtils.getColumnByName(columns, name);\n\n if (column != null) {\n let columnSort = column.sort();\n if (isAbs) {\n columnSort = columnSort.abs();\n }\n if (direction === TableUtils.sortDirection.descending) {\n columnSort = columnSort.desc();\n } else {\n columnSort = columnSort.asc();\n }\n return columnSort;\n }\n\n return null;\n })\n // If we can't find the column any more, it's null, filter it out\n .filter(isNotNullOrUndefined) as DhType.Sort[]\n );\n }\n\n /**\n * Applies the passed in table settings directly to the provided table\n * @param table The table to apply the settings to\n * @param tableSettings Dehydrated table settings extracted with `extractTableSettings`\n * @param timeZone The time zone to make this value in if it is a date type. E.g. America/New_York\n */\n applyTableSettings(\n table: DhType.Table,\n tableSettings: TableSettings,\n timeZone: string\n ): void {\n const { columns } = table;\n\n let quickFilters: DhType.FilterCondition[] = [];\n if (tableSettings.quickFilters) {\n quickFilters = IrisGridUtils.getFiltersFromFilterMap(\n this.hydrateQuickFilters(columns, tableSettings.quickFilters, timeZone)\n );\n }\n\n let advancedFilters: DhType.FilterCondition[] = [];\n if (tableSettings.advancedFilters) {\n advancedFilters = IrisGridUtils.getFiltersFromFilterMap(\n this.hydrateAdvancedFilters(\n columns,\n tableSettings.advancedFilters,\n timeZone\n )\n );\n }\n const inputFilters = this.getFiltersFromInputFilters(\n columns,\n tableSettings.inputFilters,\n timeZone\n );\n\n let sorts: DhType.Sort[] = [];\n if (tableSettings.sorts) {\n sorts = this.hydrateDhSort(\n columns,\n this.hydrateSort(columns, tableSettings.sorts)\n );\n }\n\n let filters = [...quickFilters, ...advancedFilters];\n const { partitions, partitionColumns: partitionColumnNames } =\n tableSettings;\n if (\n partitions &&\n partitions.length &&\n partitionColumnNames &&\n partitionColumnNames?.length\n ) {\n const partitionColumns = partitionColumnNames.map(partitionColumnName =>\n IrisGridUtils.getColumnByName(columns, partitionColumnName)\n );\n for (let i = 0; i < partitionColumns.length; i += 1) {\n if (partitionColumns[i] !== undefined && partitions[i] != null) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const partitionFilter = partitionColumns[i]!.filter().eq(\n this.dh.FilterValue.ofString(partitions[i])\n );\n filters = [partitionFilter, ...filters];\n }\n }\n }\n filters = [...inputFilters, ...filters];\n\n table.applyFilter(filters);\n table.applySort(sorts);\n }\n\n getFiltersFromInputFilters(\n columns: readonly DhType.Column[],\n inputFilters: readonly InputFilter[] = [],\n timeZone?: string\n ): DhType.FilterCondition[] {\n return inputFilters\n .map(({ name, type, value }) => {\n const column = columns.find(\n ({ name: columnName, type: columnType }) =>\n columnName === name && columnType === type\n );\n if (column) {\n try {\n return this.tableUtils.makeQuickFilter(column, value, timeZone);\n } catch (e) {\n // It may be unable to create it because user hasn't completed their input\n log.debug('Unable to create input filter', e);\n }\n }\n\n return null;\n })\n .filter(filter => filter != null) as DhType.FilterCondition[];\n }\n\n /**\n * Get the dh.RangeSet representation of the provided ranges.\n * Ranges are sorted prior to creating the RangeSet. Only the rows are taken into account,\n * RangeSet does not have an option for columns.\n * @param ranges The ranges to get the range set for\n * @returns The rangeset for the provided ranges\n */\n rangeSetFromRanges(ranges: readonly GridRange[]): DhType.RangeSet {\n const { dh } = this;\n const rangeSets = ranges\n .slice()\n .sort((a, b): number => {\n assertNotNull(a.startRow);\n assertNotNull(b.startRow);\n return a.startRow - b.startRow;\n })\n .map(range => {\n const { startRow, endRow } = range;\n assertNotNull(startRow);\n assertNotNull(endRow);\n return dh.RangeSet.ofRange(startRow, endRow);\n });\n return dh.RangeSet.ofRanges(rangeSets);\n }\n\n /**\n * Get the color for a cell value\n * @param theme The IrisGrid theme\n * @param columnType The type of the column\n * @param columnName The name of the column\n * @param value The value of the cell\n * @returns The color for the cell value\n */\n static colorForValue(\n theme: IrisGridThemeType,\n columnType: string,\n columnName: string,\n value: unknown\n ): string {\n if (TableUtils.isDateType(columnType) || columnName === 'Date') {\n assertNotNull(theme.dateColor);\n return theme.dateColor;\n }\n if (TableUtils.isNumberType(columnType)) {\n if ((value as number) > 0) {\n assertNotNull(theme.positiveNumberColor);\n return theme.positiveNumberColor;\n }\n if ((value as number) < 0) {\n assertNotNull(theme.negativeNumberColor);\n return theme.negativeNumberColor;\n }\n assertNotNull(theme.zeroNumberColor);\n return theme.zeroNumberColor;\n }\n return theme.textColor;\n }\n\n /**\n * Determines the text alignment for a cell value\n * @param columnType The type of the column\n * @param columnName The name of the column\n * @returns The text alignment for the cell value\n */\n static textAlignForValue(\n columnType: string,\n columnName: string\n ): CanvasTextAlign {\n if (TableUtils.isDateType(columnType) || columnName === 'Date') {\n return 'center';\n }\n\n if (TableUtils.isNumberType(columnType)) {\n return 'right';\n }\n\n return 'left';\n }\n}\n\nexport default IrisGridUtils;\n"],"mappings":"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"}
1
+ {"version":3,"file":"IrisGridUtils.js","names":["GridUtils","DateUtils","TableUtils","Log","assertNotNull","bindAllMethods","EMPTY_ARRAY","EMPTY_MAP","isNotNullOrUndefined","AggregationUtils","AggregationOperation","AdvancedSettings","ColumnHeaderGroup","isPartitionedGridModelProvider","log","module","isPanelStateV1","state","partition","undefined","isPanelStateV2","Array","isArray","partitions","isValidIndex","x","array","length","isDateWrapper","value","asDate","IrisGridUtils","dehydrateGridState","model","gridState","isStuckToBottom","isStuckToRight","movedColumns","movedRows","columns","filter","_ref","to","from","map","_ref2","name","hydrateGridState","customColumns","arguments","customColumnNames","parseCustomColumnNames","columnNames","_ref3","concat","_ref4","getIndex","findIndex","_ref5","dehydrateIrisGridPanelState","irisGridPanelState","isSelectingPartition","advancedSettings","hydrateIrisGridPanelState","Map","DEFAULTS","dehydrateQuickFilters","quickFilters","_ref6","columnIndex","quickFilter","text","dehydrateLong","dehydrateSort","sorts","sort","column","isAbs","direction","extractTableSettings","panelState","inputFilters","irisGridState","advancedFilters","getInputFiltersForColumns","_ref7","type","find","_ref8","columnName","columnType","getFiltersFromFilterMap","filterMap","filters","keys","i","key","item","get","push","getHiddenColumns","userColumnWidths","entries","_ref9","_ref10","customColumn","split","getRemovedCustomColumnNames","oldCustomColumns","oldCustomColumnsNames","oldCustomColumnName","includes","removeSortsInColumns","removeFiltersInColumns","removedColumnNames","_ref11","newFilter","forEach","delete","indexOf","removeColumnFromMovedColumns","_ref12","newMoves","_loop","removedColumnName","removedColumnIndex","moves","j","move","newMove","_objectSpread","fromStart","fromEnd","applyItemMoves","splice","removeColumnsFromSelectDistinctColumns","selectDistinctColumns","getVisibleColumnsInRange","tableColumns","left","right","hiddenColumns","modelIndex","getModelIndex","getPrevVisibleColumns","startIndex","count","unshift","getNextVisibleColumns","getColumnsToFetch","viewportColumns","alwaysFetchColumnNames","columnsToFetch","_ref13","getModelViewportColumns","bufferPages","columnsCenter","bufferWidth","columnsLeft","columnsRight","bufferedColumns","isValidSnapshotRanges","ranges","rangeMap","range","rowMapIndex","startRow","endRow","columnMapIndex","startColumn","endColumn","has","set","matchColumnRanges","join","Number","isInteger","columnsFromRanges","allColumns","columnSet","Set","c","_range$startColumn","_range$endColumn","add","snapshotDataToMatrix","data","rows","result","r","row","rowData","getModelRollupConfig","originalColumns","config","aggregationSettings","_config$columns$lengt","_config$columns","groupingColumns","showConstituents","includeConstituents","showNonAggregatedColumns","includeDescriptions","aggregations","filteredAggregations","_ref14","operation","isRollupProhibited","aggregationColumns","_ref15","selected","invert","isRollupOperation","getOperationColumnNames","aggregationMap","nonAggregatedColumnSet","size","_aggregationMap$Aggre","existingColumns","FIRST","getPendingErrors","pendingDataMap","rowIndex","Error","getColumn","error","getColumnByName","Object","values","_ref16","_ref17","changeFilterColumnNamesToIndexes","_ref18","index","filterConfig","combineFiltersFromList","filterList","a","b","operator","startColumnIndex","combinedText","symbol","getFilterOperatorString","filterText","isCharType","String","fromCharCode","parseInt","parseColumnHeaderGroups","groupsParam","makeColumnHeaderGroup","args","maxDepth","parentMap","groupMap","groups","_ref19","children","originalGroupMap","group","seenChildren","addGroup","_group$children","getColumnIndexByName","existingGroup","childIndexes","depth","childName","childGroup","childIndex","addedGroup","Math","max","headerGroupConfig","flat","columnHeaderGroup","groupNames","_parentMap$get","setParent","convertValueToText","isDateType","date","Date","offset","getTimezoneOffset","offsetDate","getTime","dateText","toISOString","formattedText","replace","substring","constructor","dh","_defineProperty","tableUtils","dehydrateIrisGridState","showOnTop","customColumnFormatMap","isFilterBarShown","metrics","userRowHeights","conditionalFormats","reverse","rollupConfig","showSearchBar","searchValue","selectedSearchColumns","invertSearchColumns","frozenColumns","columnHeaderGroups","partitionConfig","partitionColumns","dehydrateAdvancedFilters","_ref20","_ref21","width","dehydratePendingDataMap","_item$color","color","dehydratePartitionConfig","hydrateIrisGridState","_ref25","_model$layoutHints","reverseType","formatter","hydrateAdvancedFilters","timeZone","hydrateQuickFilters","hydrateSort","_ref22","_ref23","_ref24","REVERSE_TYPE","POST_SORT","hydratePendingDataMap","layoutHints","columnGroups","hydratePartitionConfig","savedQuickFilters","importedFilters","_ref26","makeQuickFilter","_ref27","advancedFilter","options","dehydrateAdvancedFilterOptions","savedAdvancedFilters","_ref28","hydrateAdvancedFilterOptions","columnRetrieved","makeAdvancedFilter","selectedValues","otherOptions","_objectWithoutProperties","_excluded","dehydrateValue","_excluded2","hydrateValue","_ref29","_ref30","_ref31","cellData","columnMap","getColumnIndex","_ref32","_ref33","_ref34","_getColumnIndex","dehydrateDateTime","isLongType","hydrateDateTime","hydrateLong","i18n","DateTimeFormat","format","FULL_DATE_FORMAT","parse","LongWrapper","ofString","dropReverse","columnIndexOrName","sortDirection","Table","hydrateDhSort","sortDescriptor","columnSort","abs","descending","desc","asc","applyTableSettings","table","tableSettings","getFiltersFromInputFilters","partitionColumnNames","partitionColumnName","partitionFilter","eq","FilterValue","applyFilter","applySort","_ref35","_ref36","e","debug","rangeSetFromRanges","rangeSets","slice","RangeSet","ofRange","ofRanges","colorForValue","theme","dateColor","isNumberType","positiveNumberColor","negativeNumberColor","zeroNumberColor","textColor","textAlignForValue"],"sources":["../src/IrisGridUtils.ts"],"sourcesContent":["import {\n type GridRange,\n type GridState,\n GridUtils,\n ModelIndex,\n ModelSizeMap,\n MoveOperation,\n VisibleIndex,\n} from '@deephaven/grid';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport {\n DateUtils,\n TableUtils,\n type ReverseType,\n type SortDirection,\n type FormattingRule,\n type SortDescriptor,\n} from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport {\n assertNotNull,\n bindAllMethods,\n EMPTY_ARRAY,\n EMPTY_MAP,\n isNotNullOrUndefined,\n} from '@deephaven/utils';\nimport AggregationUtils from './sidebar/aggregations/AggregationUtils';\nimport AggregationOperation from './sidebar/aggregations/AggregationOperation';\nimport { type FilterData, type IrisGridState } from './IrisGrid';\nimport {\n type ColumnName,\n type ReadonlyAdvancedFilterMap,\n type ReadonlyQuickFilterMap,\n type InputFilter,\n type CellData,\n type PendingDataMap,\n type UIRow,\n type AdvancedFilterOptions,\n} from './CommonTypes';\nimport { UIRollupConfig } from './sidebar/RollupRows';\nimport { AggregationSettings } from './sidebar/aggregations/Aggregations';\nimport { FormattingRule as SidebarFormattingRule } from './sidebar/conditional-formatting/ConditionalFormattingUtils';\nimport IrisGridModel from './IrisGridModel';\nimport type AdvancedSettingsType from './sidebar/AdvancedSettingsType';\nimport AdvancedSettings from './sidebar/AdvancedSettings';\nimport ColumnHeaderGroup, {\n ColumnHeaderGroupConfig,\n} from './ColumnHeaderGroup';\nimport {\n isPartitionedGridModelProvider,\n PartitionConfig,\n} from './PartitionedGridModel';\nimport { type IrisGridThemeType } from './IrisGridTheme';\n\nconst log = Log.module('IrisGridUtils');\n\nexport type HydratedIrisGridState = Pick<\n IrisGridState,\n | 'advancedFilters'\n | 'aggregationSettings'\n | 'customColumnFormatMap'\n | 'isFilterBarShown'\n | 'quickFilters'\n | 'customColumns'\n | 'reverse'\n | 'rollupConfig'\n | 'showSearchBar'\n | 'searchValue'\n | 'selectDistinctColumns'\n | 'selectedSearchColumns'\n | 'sorts'\n | 'invertSearchColumns'\n | 'pendingDataMap'\n | 'frozenColumns'\n | 'conditionalFormats'\n | 'columnHeaderGroups'\n | 'partitionConfig'\n | 'metrics'\n>;\n\nexport type DehydratedPendingDataMap<T> = [number, { data: [string, T][] }][];\n\nexport type DehydratedAdvancedFilter = [\n number,\n {\n options: AdvancedFilterOptions;\n },\n];\n\nexport type DehydratedQuickFilter = [\n number,\n {\n text: string;\n },\n];\n\nexport type DehydratedCustomColumnFormat = [string, FormattingRule];\n\nexport type DehydratedUserColumnWidth = [ColumnName, number];\n\nexport type DehydratedUserRowHeight = [number, number];\n\nexport type DehydratedPartitionConfig = PartitionConfig;\n\n/** @deprecated Use `DehydratedSort` instead */\nexport interface LegacyDehydratedSort {\n column: ModelIndex;\n isAbs: boolean;\n direction: SortDirection;\n}\n\nexport interface DehydratedSort {\n column: ColumnName;\n isAbs: boolean;\n direction: string;\n}\n\nexport interface TableSettings {\n quickFilters?: readonly DehydratedQuickFilter[];\n advancedFilters?: readonly DehydratedAdvancedFilter[];\n inputFilters?: readonly InputFilter[];\n sorts?: readonly (DehydratedSort | LegacyDehydratedSort)[];\n partitions?: unknown[];\n partitionColumns?: ColumnName[];\n}\n\nexport interface DehydratedIrisGridState {\n advancedFilters: readonly DehydratedAdvancedFilter[];\n aggregationSettings: AggregationSettings;\n customColumnFormatMap: readonly DehydratedCustomColumnFormat[];\n isFilterBarShown: boolean;\n quickFilters: readonly DehydratedQuickFilter[];\n sorts: readonly DehydratedSort[];\n userColumnWidths: readonly DehydratedUserColumnWidth[];\n userRowHeights: readonly DehydratedUserRowHeight[];\n customColumns: readonly ColumnName[];\n conditionalFormats: readonly SidebarFormattingRule[];\n /** @deprecated use `reverse` instead. Can be removed after DHE sanluis release */\n reverseType?: ReverseType;\n reverse: boolean;\n rollupConfig?: UIRollupConfig;\n showSearchBar: boolean;\n searchValue: string;\n selectDistinctColumns: readonly ColumnName[];\n selectedSearchColumns: readonly ColumnName[];\n invertSearchColumns: boolean;\n pendingDataMap: DehydratedPendingDataMap<unknown>;\n frozenColumns: readonly ColumnName[];\n columnHeaderGroups?: readonly DhType.ColumnGroup[];\n partitionConfig?: DehydratedPartitionConfig;\n}\n\nexport interface DehydratedIrisGridPanelStateV1 {\n isSelectingPartition: boolean;\n partition: string | null;\n advancedSettings: [AdvancedSettingsType, boolean][];\n}\n\nexport interface DehydratedIrisGridPanelStateV2 {\n isSelectingPartition: boolean;\n partitions: (string | null)[];\n advancedSettings: [AdvancedSettingsType, boolean][];\n}\n\nexport type DehydratedIrisGridPanelState =\n | DehydratedIrisGridPanelStateV1\n | DehydratedIrisGridPanelStateV2;\n\nexport function isPanelStateV1(\n state: DehydratedIrisGridPanelState\n): state is DehydratedIrisGridPanelStateV1 {\n return (state as DehydratedIrisGridPanelStateV1).partition !== undefined;\n}\n\nexport function isPanelStateV2(\n state: DehydratedIrisGridPanelState\n): state is DehydratedIrisGridPanelStateV2 {\n return Array.isArray((state as DehydratedIrisGridPanelStateV2).partitions);\n}\n\n/**\n * Checks if an index is valid for the given array\n * @param x The index to check\n * @param array The array\n * @returns True if the index if valid within the array\n */\nfunction isValidIndex(x: number, array: readonly unknown[]): boolean {\n return x >= 0 && x < array.length;\n}\n\nfunction isDateWrapper(value: unknown): value is DhType.DateWrapper {\n return (value as DhType.DateWrapper)?.asDate != null;\n}\n\nexport type HydratedGridState = Pick<\n GridState,\n 'isStuckToBottom' | 'isStuckToRight' | 'movedColumns' | 'movedRows'\n>;\n\nexport type DehydratedGridState = {\n isStuckToBottom: boolean;\n isStuckToRight: boolean;\n movedColumns: readonly {\n from: string | [string, string] | ModelIndex | [ModelIndex, ModelIndex];\n to: string | ModelIndex;\n }[];\n movedRows: readonly MoveOperation[];\n};\n\nclass IrisGridUtils {\n /**\n * Exports the state from Grid component to a JSON stringifiable object.\n * See IrisGridCacheUtil for memoization and comparing dehydrated states.\n * @param model The table model to export the Grid state for\n * @param gridState The state of the Grid to export\n * @returns An object that can be stringified and imported with {{@link hydrateGridState}}\n */\n static dehydrateGridState(\n model: IrisGridModel,\n gridState: HydratedGridState\n ): DehydratedGridState {\n const { isStuckToBottom, isStuckToRight, movedColumns, movedRows } =\n gridState;\n\n const { columns } = model;\n\n return {\n isStuckToBottom,\n isStuckToRight,\n movedColumns: [...movedColumns]\n .filter(\n ({ to, from }) =>\n isValidIndex(to, columns) &&\n ((typeof from === 'number' && isValidIndex(from, columns)) ||\n (Array.isArray(from) &&\n isValidIndex(from[0], columns) &&\n isValidIndex(from[1], columns)))\n )\n .map(({ to, from }) => ({\n to: columns[to].name,\n from: Array.isArray(from)\n ? [columns[from[0]].name, columns[from[1]].name]\n : columns[from].name,\n })),\n movedRows: [...movedRows],\n };\n }\n\n /**\n * Import a state for Grid that was exported with {{@link dehydrateGridState}}\n * @param model The table model to import the state for\n * @param gridState The state of the panel that was saved\n * @returns The gridState props to set on the Grid\n */\n static hydrateGridState(\n model: IrisGridModel,\n gridState: DehydratedGridState,\n customColumns: readonly string[] = []\n ): HydratedGridState {\n const { isStuckToBottom, isStuckToRight, movedColumns, movedRows } =\n gridState;\n\n const { columns } = model;\n const customColumnNames =\n IrisGridUtils.parseCustomColumnNames(customColumns);\n const columnNames = columns\n .map(({ name }) => name)\n .concat(customColumnNames);\n\n return {\n isStuckToBottom,\n isStuckToRight,\n movedColumns: [...movedColumns]\n .map(({ to, from }) => {\n const getIndex = (x: string | number): number =>\n typeof x === 'string'\n ? columnNames.findIndex(name => name === x)\n : x;\n\n return {\n to: getIndex(to),\n from: Array.isArray(from)\n ? ([getIndex(from[0]), getIndex(from[1])] as [number, number])\n : getIndex(from),\n };\n })\n .filter(\n ({ to, from }) =>\n isValidIndex(to, columnNames) &&\n ((typeof from === 'number' && isValidIndex(from, columnNames)) ||\n (Array.isArray(from) &&\n isValidIndex(from[0], columnNames) &&\n isValidIndex(from[1], columnNames)))\n ),\n movedRows: [...movedRows],\n };\n }\n\n /**\n * Export the IrisGridPanel state.\n * @param model The table model the state is being dehydrated with\n * @param irisGridPanelState The current IrisGridPanel state\n * @returns The dehydrated IrisGridPanel state\n */\n static dehydrateIrisGridPanelState(\n model: IrisGridModel,\n irisGridPanelState: {\n // This needs to be changed after IrisGridPanel is done\n isSelectingPartition: boolean;\n partitions: (string | null)[];\n advancedSettings: Map<AdvancedSettingsType, boolean>;\n }\n ): DehydratedIrisGridPanelState {\n const { isSelectingPartition, partitions, advancedSettings } =\n irisGridPanelState;\n\n // Return value will be serialized, should not contain undefined\n return {\n isSelectingPartition,\n partitions,\n advancedSettings: [...advancedSettings],\n };\n }\n\n /**\n * Import the saved IrisGridPanel state.\n * @param model The model the state is being hydrated with\n * @param irisGridPanelState Exported IrisGridPanel state\n * @returns The state to apply to the IrisGridPanel\n */\n static hydrateIrisGridPanelState(\n model: IrisGridModel,\n irisGridPanelState: DehydratedIrisGridPanelState\n ): {\n isSelectingPartition: boolean;\n partitions: (string | null)[];\n advancedSettings: Map<AdvancedSettingsType, boolean>;\n } {\n const { isSelectingPartition, advancedSettings } = irisGridPanelState;\n\n let partitions: (string | null)[] = [];\n if (isPanelStateV2(irisGridPanelState)) {\n partitions = irisGridPanelState.partitions;\n } else if (irisGridPanelState.partition != null) {\n partitions = [irisGridPanelState.partition];\n }\n\n return {\n isSelectingPartition,\n partitions,\n advancedSettings: new Map([\n ...AdvancedSettings.DEFAULTS,\n ...advancedSettings,\n ]),\n };\n }\n\n /**\n * Export the quick filters to JSON striginfiable object\n * @param quickFilters The quick filters to dehydrate\n * @returns The dehydrated quick filters\n */\n static dehydrateQuickFilters(\n quickFilters: ReadonlyQuickFilterMap\n ): DehydratedQuickFilter[] {\n return [...quickFilters].map(([columnIndex, quickFilter]) => {\n const { text } = quickFilter;\n return [columnIndex, { text }];\n });\n }\n\n static dehydrateLong<T>(value: T): string | null {\n return value != null ? `${value}` : null;\n }\n\n /**\n * Export the sorts from the provided table sorts to JSON stringifiable object\n * @param sorts The table sorts\n * @returns The dehydrated sorts\n */\n static dehydrateSort(sorts: readonly SortDescriptor[]): DehydratedSort[] {\n return sorts.map(sort => {\n const { column, isAbs, direction } = sort;\n return {\n column: column.name,\n isAbs,\n direction,\n };\n });\n }\n\n /**\n * Pulls just the table settings from the panel state, eg. filters/sorts\n * @param panelState The dehydrated panel state\n * @returns A dehydrated table settings object, { partition, partitionColumn, advancedFilters, quickFilters, sorts }\n */\n static extractTableSettings<AF, QF, S>(\n panelState: {\n irisGridState: { advancedFilters: AF; quickFilters: QF; sorts: S };\n irisGridPanelState: DehydratedIrisGridPanelState;\n },\n inputFilters: InputFilter[] = []\n ): {\n partitions: unknown[];\n advancedFilters: AF;\n inputFilters: InputFilter[];\n quickFilters: QF;\n sorts: S;\n } {\n const { irisGridPanelState, irisGridState } = panelState;\n const partitions = isPanelStateV2(irisGridPanelState)\n ? irisGridPanelState.partitions\n : [irisGridPanelState.partition];\n const { advancedFilters, quickFilters, sorts } = irisGridState;\n\n return {\n advancedFilters,\n inputFilters,\n partitions,\n quickFilters,\n sorts,\n };\n }\n\n static getInputFiltersForColumns(\n columns: readonly { name: string; type: string }[],\n inputFilters: readonly InputFilter[] = []\n ): InputFilter[] {\n return inputFilters.filter(({ name, type }) =>\n columns.find(\n ({ name: columnName, type: columnType }) =>\n columnName === name && columnType === type\n )\n );\n }\n\n static getFiltersFromFilterMap(\n filterMap: ReadonlyAdvancedFilterMap | ReadonlyQuickFilterMap\n ): DhType.FilterCondition[] {\n const filters = [];\n\n const keys = Array.from(filterMap.keys());\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i];\n const item = filterMap.get(key);\n if (item?.filter != null) {\n filters.push(item.filter);\n }\n }\n\n return filters;\n }\n\n /**\n * Get array of hidden column indexes\n * @param userColumnWidths Map of user column widths\n * @returns Array of hidden column indexes\n */\n static getHiddenColumns(userColumnWidths: ModelSizeMap): ModelIndex[] {\n return [...userColumnWidths.entries()]\n .filter(([, value]) => value === 0)\n .map(([key]) => key);\n }\n\n static parseCustomColumnNames(\n customColumns: readonly ColumnName[]\n ): ColumnName[] {\n return customColumns.map(customColumn => customColumn.split('=')[0]);\n }\n\n static getRemovedCustomColumnNames(\n oldCustomColumns: readonly ColumnName[],\n customColumns: readonly ColumnName[]\n ): ColumnName[] {\n const oldCustomColumnsNames =\n IrisGridUtils.parseCustomColumnNames(oldCustomColumns);\n const customColumnNames =\n IrisGridUtils.parseCustomColumnNames(customColumns);\n return oldCustomColumnsNames.filter(\n oldCustomColumnName => !customColumnNames.includes(oldCustomColumnName)\n );\n }\n\n static removeSortsInColumns(\n sorts: readonly SortDescriptor[],\n columnNames: readonly string[]\n ): readonly SortDescriptor[] {\n return sorts.filter(sort => !columnNames.includes(sort.column.name));\n }\n\n static removeFiltersInColumns<T>(\n columns: readonly DhType.Column[],\n filters: ReadonlyMap<number, T>,\n removedColumnNames: readonly ColumnName[]\n ): Map<number, T> {\n const columnNames = columns.map(({ name }) => name);\n const newFilter = new Map(filters);\n removedColumnNames.forEach(columnName =>\n newFilter.delete(columnNames.indexOf(columnName))\n );\n return newFilter;\n }\n\n static removeColumnFromMovedColumns(\n columns: readonly DhType.Column[],\n movedColumns: readonly MoveOperation[],\n removedColumnNames: readonly ColumnName[]\n ): MoveOperation[] {\n const columnNames = columns.map(({ name }) => name);\n let newMoves = [...movedColumns];\n for (let i = 0; i < removedColumnNames.length; i += 1) {\n const removedColumnName = removedColumnNames[i];\n let removedColumnIndex = columnNames.findIndex(\n name => name === removedColumnName\n );\n const moves: MoveOperation[] = [];\n for (let j = 0; j < newMoves.length; j += 1) {\n const move = newMoves[j];\n const newMove = { ...move };\n let [fromStart, fromEnd] = Array.isArray(move.from)\n ? move.from\n : [move.from, move.from];\n\n if (removedColumnIndex <= move.to) {\n newMove.to -= 1;\n }\n\n // If equal to fromStart, the new fromStart would stay the same\n // It's just the next element in the range which will have the same index after deletion\n if (removedColumnIndex < fromStart) {\n fromStart -= 1;\n }\n\n if (removedColumnIndex <= fromEnd) {\n fromEnd -= 1;\n }\n\n if (fromStart <= fromEnd && fromStart !== newMove.to) {\n if (fromStart === fromEnd) {\n moves.push({ ...newMove, from: fromStart });\n } else {\n moves.push({ ...newMove, from: [fromStart, fromEnd] });\n }\n }\n\n // get the next index of the removed column after the move is applied\n // eslint-disable-next-line prefer-destructuring\n removedColumnIndex = GridUtils.applyItemMoves(\n removedColumnIndex,\n removedColumnIndex,\n [move]\n )[0][0];\n }\n\n newMoves = moves;\n columnNames.splice(\n columnNames.findIndex(name => name === removedColumnName),\n 1\n );\n }\n return newMoves;\n }\n\n static removeColumnsFromSelectDistinctColumns(\n selectDistinctColumns: readonly ColumnName[],\n removedColumnNames: readonly ColumnName[]\n ): ColumnName[] {\n return selectDistinctColumns.filter(\n columnName => !removedColumnNames.includes(columnName)\n );\n }\n\n static getVisibleColumnsInRange(\n tableColumns: readonly DhType.Column[],\n left: number,\n right: number,\n movedColumns: readonly MoveOperation[],\n hiddenColumns: readonly number[]\n ): DhType.Column[] {\n const columns: DhType.Column[] = [];\n for (let i = left; i <= right; i += 1) {\n const modelIndex = GridUtils.getModelIndex(i, movedColumns);\n if (\n modelIndex >= 0 &&\n modelIndex < tableColumns.length &&\n !hiddenColumns.includes(modelIndex)\n ) {\n columns.push(tableColumns[modelIndex]);\n }\n }\n return columns;\n }\n\n static getPrevVisibleColumns(\n tableColumns: readonly DhType.Column[],\n startIndex: VisibleIndex,\n count: number,\n movedColumns: readonly MoveOperation[],\n hiddenColumns: readonly VisibleIndex[]\n ): DhType.Column[] {\n const columns = [];\n let i = startIndex;\n while (i >= 0 && columns.length < count) {\n const modelIndex = GridUtils.getModelIndex(i, movedColumns);\n if (\n modelIndex >= 0 &&\n modelIndex < tableColumns.length &&\n !hiddenColumns.includes(modelIndex)\n ) {\n columns.unshift(tableColumns[modelIndex]);\n }\n i -= 1;\n }\n return columns;\n }\n\n static getNextVisibleColumns(\n tableColumns: readonly DhType.Column[],\n startIndex: VisibleIndex,\n count: number,\n movedColumns: readonly MoveOperation[],\n hiddenColumns: readonly VisibleIndex[]\n ): DhType.Column[] {\n const columns = [];\n let i = startIndex;\n while (i < tableColumns.length && columns.length < count) {\n const modelIndex = GridUtils.getModelIndex(i, movedColumns);\n if (\n modelIndex >= 0 &&\n modelIndex < tableColumns.length &&\n !hiddenColumns.includes(modelIndex)\n ) {\n columns.push(tableColumns[modelIndex]);\n }\n i += 1;\n }\n return columns;\n }\n\n static getColumnsToFetch(\n tableColumns: readonly DhType.Column[],\n viewportColumns: readonly DhType.Column[],\n alwaysFetchColumnNames: readonly ColumnName[]\n ): DhType.Column[] {\n const columnsToFetch = [...viewportColumns];\n alwaysFetchColumnNames.forEach(columnName => {\n const column = tableColumns.find(({ name }) => name === columnName);\n if (column != null && !viewportColumns.includes(column)) {\n columnsToFetch.push(column);\n }\n });\n return columnsToFetch;\n }\n\n static getModelViewportColumns(\n columns: readonly DhType.Column[],\n left: number | null,\n right: number | null,\n movedColumns: readonly MoveOperation[],\n hiddenColumns: readonly VisibleIndex[] = [],\n alwaysFetchColumnNames: readonly ColumnName[] = [],\n bufferPages = 0\n ): DhType.Column[] | undefined {\n if (left == null || right == null) {\n return undefined;\n }\n\n const columnsCenter = IrisGridUtils.getVisibleColumnsInRange(\n columns,\n left,\n right,\n movedColumns,\n hiddenColumns\n );\n const bufferWidth = columnsCenter.length * bufferPages;\n const columnsLeft = IrisGridUtils.getPrevVisibleColumns(\n columns,\n left - 1,\n bufferWidth,\n movedColumns,\n hiddenColumns\n );\n const columnsRight = IrisGridUtils.getNextVisibleColumns(\n columns,\n right + 1,\n bufferWidth,\n movedColumns,\n hiddenColumns\n );\n\n const bufferedColumns = [...columnsLeft, ...columnsCenter, ...columnsRight];\n\n return IrisGridUtils.getColumnsToFetch(\n columns,\n bufferedColumns,\n alwaysFetchColumnNames\n );\n }\n\n /**\n * Validate whether the ranges passed in are valid to take a snapshot from.\n * Multiple selections are valid if all of the selected rows have the same columns selected.\n *\n * @param ranges The ranges to validate\n * @returns True if the ranges are valid, false otherwise\n */\n static isValidSnapshotRanges(ranges: readonly GridRange[]): boolean {\n if (ranges == null || ranges.length === 0) {\n return false;\n }\n\n // To verify all the rows selected have the same set of columns selected, build a map with string representations\n // of each range.\n const rangeMap = new Map();\n for (let i = 0; i < ranges.length; i += 1) {\n const range = ranges[i];\n const rowMapIndex = `${range.startRow}:${range.endRow}`;\n const columnMapIndex = `${range.startColumn}:${range.endColumn}`;\n if (!rangeMap.has(rowMapIndex)) {\n rangeMap.set(rowMapIndex, []);\n }\n rangeMap.get(rowMapIndex).push(columnMapIndex);\n }\n\n const keys = [...rangeMap.keys()];\n const matchColumnRanges = rangeMap.get(keys[0]).sort().join(',');\n for (let i = 1; i < keys.length; i += 1) {\n if (rangeMap.get(keys[i]).sort().join(',') !== matchColumnRanges) {\n return false;\n }\n }\n\n return true;\n }\n\n /**\n * Check if the provided value is a valid table index\n * @param value A value to check if it's a valid table index\n */\n static isValidIndex(value: unknown): boolean {\n if (!Number.isInteger(value)) {\n return false;\n }\n if (!(typeof value === 'number')) {\n return false;\n }\n return value >= 0;\n }\n\n /**\n * Returns all columns used in any of the ranges provided\n * @param ranges The model ranges to get columns for\n * @param allColumns All the columns to pull from\n * @returns The columns selected in the range\n */\n static columnsFromRanges(\n ranges: readonly GridRange[],\n allColumns: readonly DhType.Column[]\n ): DhType.Column[] {\n if (ranges == null || ranges.length === 0) {\n return [];\n }\n if (ranges[0].startColumn === null && ranges[0].endColumn === null) {\n // Snapshot of all the columns\n return [...allColumns];\n }\n\n const columnSet = new Set<ModelIndex>();\n for (let i = 0; i < ranges.length; i += 1) {\n const range = ranges[i];\n assertNotNull(range.startColumn);\n assertNotNull(range.endColumn);\n for (\n let c = range.startColumn ?? 0;\n c <= (range.endColumn ?? allColumns.length - 1);\n c += 1\n ) {\n columnSet.add(c);\n }\n }\n return [...columnSet].map(c => allColumns[c]);\n }\n\n /**\n * Transforms an iris data snapshot into a simple data matrix\n * @param data The Iris formatted table data\n * @returns A matrix of the values of the data\n */\n static snapshotDataToMatrix(data: DhType.TableData): unknown[][] {\n const { columns, rows } = data;\n const result = [];\n for (let r = 0; r < rows.length; r += 1) {\n const row = rows[r];\n const rowData = [];\n for (let c = 0; c < columns.length; c += 1) {\n const column = columns[c];\n const value = row.get(column);\n rowData.push(value);\n }\n result.push(rowData);\n }\n return result;\n }\n\n /**\n * Hydrate model rollup config\n * @param originalColumns Original model columns\n * @param config Dehydrated rollup config\n * @param aggregationSettings Aggregation settings\n * @returns Rollup config for the model\n */\n static getModelRollupConfig(\n originalColumns: readonly DhType.Column[],\n config: UIRollupConfig | undefined,\n aggregationSettings: AggregationSettings\n ): DhType.RollupConfig | null {\n if ((config?.columns?.length ?? 0) === 0) {\n return null;\n }\n\n const {\n columns: groupingColumns = [],\n showConstituents: includeConstituents = true,\n showNonAggregatedColumns = true,\n includeDescriptions = true,\n } = config ?? {};\n const { aggregations = [] } = aggregationSettings ?? {};\n const filteredAggregations = aggregations.filter(\n ({ operation }) => !AggregationUtils.isRollupProhibited(operation)\n );\n const aggregationColumns = filteredAggregations.map(\n ({ operation, selected, invert }) =>\n AggregationUtils.isRollupOperation(operation)\n ? []\n : AggregationUtils.getOperationColumnNames(\n originalColumns,\n operation,\n selected,\n invert\n )\n );\n\n const aggregationMap = {} as Record<AggregationOperation, string[]>;\n // Aggregation columns should show first, add them first\n for (let i = 0; i < filteredAggregations.length; i += 1) {\n aggregationMap[filteredAggregations[i].operation] = aggregationColumns[i];\n }\n\n if (showNonAggregatedColumns) {\n // Filter out any column that already has an aggregation or grouping\n const nonAggregatedColumnSet = new Set(\n originalColumns\n .map(c => c.name)\n .filter(name => !groupingColumns.includes(name))\n );\n aggregationColumns.forEach(columns => {\n columns.forEach(name => nonAggregatedColumnSet.delete(name));\n });\n\n if (nonAggregatedColumnSet.size > 0) {\n const existingColumns =\n aggregationMap[AggregationOperation.FIRST] ?? [];\n aggregationMap[AggregationOperation.FIRST] = [\n ...existingColumns,\n ...nonAggregatedColumnSet,\n ];\n }\n }\n\n return {\n groupingColumns,\n includeConstituents,\n includeDescriptions,\n aggregations: aggregationMap,\n };\n }\n\n /**\n * @param pendingDataMap Map of pending data\n * @returns A map with the errors in the pending data\n */\n static getPendingErrors(pendingDataMap: Map<number, UIRow>): void {\n pendingDataMap.forEach((row, rowIndex) => {\n if (!IrisGridUtils.isValidIndex(rowIndex)) {\n throw new Error(`Invalid rowIndex ${rowIndex}`);\n }\n\n const { data } = row;\n data.forEach((value, columnIndex) => {\n if (!IrisGridUtils.isValidIndex(columnIndex)) {\n throw new Error(`Invalid columnIndex ${columnIndex}`);\n }\n });\n });\n }\n\n /**\n * Retrieves a column from the provided array at the index, or `null` and logs an error if it's invalid\n *\n * @param columns The columns to get the column from\n * @param columnIndex The column index to get\n */\n static getColumn(\n columns: readonly DhType.Column[],\n columnIndex: ModelIndex\n ): DhType.Column | null {\n if (columnIndex < columns.length) {\n return columns[columnIndex];\n }\n\n log.error('Unable to retrieve column', columnIndex, '>=', columns.length);\n\n return null;\n }\n\n /**\n * Retrieves a column from the provided array matching the name, or `null` and logs an error if not found\n * @param columns The columns to get the column from\n * @param columnName The column name to retrieve\n */\n static getColumnByName(\n columns: readonly DhType.Column[],\n columnName: ColumnName\n ): DhType.Column | undefined {\n // Columns can contain ColumnBy sources with negative indexes\n const column = Object.values(columns).find(\n ({ name }) => name === columnName\n );\n if (column == null) {\n log.error(\n 'Unable to retrieve column by name',\n columnName,\n columns.map(({ name }) => name)\n );\n }\n\n return column;\n }\n\n /**\n * Get filter configs with column names changed to indexes, exclude missing columns\n * @param columns The columns to get column indexes from\n * @param filters Filter configs\n * @returns Updated filter configs with column names changed to indexes\n */\n static changeFilterColumnNamesToIndexes<T>(\n columns: readonly DhType.Column[],\n filters: { name: ColumnName; filter: T }[]\n ): [number, T][] {\n return filters\n .map(({ name, filter }): null | [number, T] => {\n const index = columns.findIndex(column => column.name === name);\n return index < 0 ? null : [index, filter];\n })\n .filter(filterConfig => filterConfig != null) as [number, T][];\n }\n\n /**\n * @param columnType The column type that the filters will be applied to.\n * @param filterList The list of filters to be combined.\n * @returns The combination of the filters in filterList as text.\n */\n static combineFiltersFromList(\n columnType: string | null,\n filterList: FilterData[]\n ): string {\n filterList.sort((a, b) => {\n // move all 'equals' comparisons to end of list\n if (a.operator === 'eq' && b.operator !== 'eq') {\n return 1;\n }\n if (a.operator !== 'eq' && b.operator === 'eq') {\n return -1;\n }\n return a.startColumnIndex - b.startColumnIndex;\n });\n\n let combinedText = '';\n for (let i = 0; i < filterList.length; i += 1) {\n const { text, value, operator } = filterList[i];\n if (value !== undefined) {\n let symbol = '';\n if (operator !== undefined) {\n if (value == null && operator === 'eq') {\n symbol = '=';\n } else if (operator !== 'eq') {\n if (operator === 'startsWith' || operator === 'endsWith') {\n symbol = '*';\n } else {\n symbol = TableUtils.getFilterOperatorString(operator);\n }\n }\n }\n\n let filterText = `${symbol}${text}`;\n if (operator === 'startsWith') {\n filterText = `${text}${symbol}`;\n }\n if (\n columnType != null &&\n value !== null &&\n TableUtils.isCharType(columnType)\n ) {\n filterText = `${symbol}${String.fromCharCode(parseInt(text, 10))}`;\n }\n if (i !== 0) {\n combinedText += operator === 'eq' ? ' || ' : ' && ';\n }\n combinedText += filterText;\n }\n }\n return combinedText;\n }\n\n /**\n * Parses the column header groups provided.\n * If undefined, should provide default groups such as from layoutHints\n *\n * @returns Object containing groups array, max depth, map of name to parent group, and map of name to group\n */\n static parseColumnHeaderGroups<\n T extends ColumnHeaderGroup,\n C extends ColumnHeaderGroupConfig,\n >(\n model: IrisGridModel,\n groupsParam: readonly (DhType.ColumnGroup | T)[],\n makeColumnHeaderGroup: (args: C) => T = (args: C) =>\n new ColumnHeaderGroup(args) as T\n ): {\n groups: T[];\n maxDepth: number;\n parentMap: Map<string, T>;\n groupMap: Map<string, T>;\n } {\n let maxDepth = 1;\n const parentMap: Map<string, T> = new Map();\n const groupMap: Map<string, T> = new Map();\n\n // Remove any empty groups before parsing\n const groups = groupsParam?.filter(\n ({ children }) => children != null && children.length > 0\n );\n\n if (groups.length === 0) {\n return { groups: [], maxDepth, parentMap, groupMap };\n }\n\n const originalGroupMap = new Map(groups.map(group => [group.name, group]));\n const seenChildren = new Set<string>();\n\n const addGroup = (group: DhType.ColumnGroup | T): T => {\n const { name } = group;\n\n assertNotNull(name, 'Column header group has no name');\n\n const columnIndex = model.getColumnIndexByName(name);\n // Groups cannot have names matching columns to avoid parent-child collision\n // unless they refer to ColumnBy sources with negative indexes\n if (columnIndex != null && columnIndex >= 0) {\n throw new Error(`Column header group has same name as column: ${name}`);\n }\n\n const existingGroup = groupMap.get(name);\n\n if (existingGroup) {\n return existingGroup;\n }\n\n const childIndexes: T['childIndexes'] = [];\n let depth = 1;\n\n if (group.children == null) {\n throw new Error(`Column header group ${name} has no children`);\n }\n\n group.children.forEach(childName => {\n if (seenChildren.has(childName)) {\n throw new Error(\n `Column group child ${childName} specified in multiple groups`\n );\n }\n seenChildren.add(childName);\n\n const childGroup = originalGroupMap.get(childName);\n const childIndex = model.getColumnIndexByName(childName);\n if (childGroup) {\n // Adding another column header group\n const addedGroup = addGroup(childGroup);\n childIndexes.push(...addedGroup.childIndexes);\n depth = Math.max(depth, addedGroup.depth + 1);\n } else if (childIndex != null) {\n // Adding a base column\n childIndexes.push(childIndex);\n depth = Math.max(depth, 1);\n } else {\n throw new Error(`Unknown child ${childName} in group ${name}`);\n }\n });\n\n const headerGroupConfig = {\n ...(group as C),\n name,\n children: group.children,\n depth,\n childIndexes: childIndexes.flat(),\n };\n\n const columnHeaderGroup = makeColumnHeaderGroup(headerGroupConfig);\n\n groupMap.set(name, columnHeaderGroup);\n group.children?.forEach(childName =>\n parentMap.set(childName, columnHeaderGroup)\n );\n\n maxDepth = Math.max(maxDepth, columnHeaderGroup.depth + 1);\n return columnHeaderGroup;\n };\n\n const groupNames = new Set();\n\n groups.forEach(group => {\n const { name } = group;\n if (groupNames.has(name)) {\n throw new Error(`Duplicate column group name: ${name}`);\n }\n groupNames.add(name);\n addGroup(group);\n });\n\n groupMap.forEach(group => {\n group.setParent(parentMap.get(group.name)?.name);\n });\n\n return { groups: [...groupMap.values()], maxDepth, groupMap, parentMap };\n }\n\n /**\n * @param value The value of the cell in a column\n * @param columnType The type of the column\n * @returns The value of the cell converted to text\n */\n static convertValueToText(value: unknown, columnType: string): string {\n if (\n columnType != null &&\n TableUtils.isCharType(columnType) &&\n value != null &&\n typeof value === 'number'\n ) {\n return String.fromCharCode(value);\n }\n if (TableUtils.isDateType(columnType) && isDateWrapper(value)) {\n const date = new Date(value.asDate());\n const offset = date.getTimezoneOffset();\n const offsetDate = new Date(date.getTime() - offset * 60 * 1000);\n const dateText = offsetDate.toISOString();\n const formattedText = dateText.replace('T', ' ').substring(0, 23);\n return formattedText;\n }\n if (value == null) {\n return '';\n }\n return `${value}`;\n }\n\n private dh: typeof DhType;\n\n private tableUtils: TableUtils;\n\n constructor(dh: typeof DhType) {\n this.dh = dh;\n this.tableUtils = new TableUtils(dh);\n bindAllMethods(this);\n }\n\n /**\n * Exports the state from IrisGrid to a JSON stringifiable object.\n * See IrisGridCacheUtil for memoization and comparing dehydrated states.\n * @param model The table model to export the state for\n * @param irisGridState The current state of the IrisGrid\n */\n dehydrateIrisGridState(\n model: IrisGridModel,\n irisGridState: HydratedIrisGridState\n ): DehydratedIrisGridState {\n const {\n aggregationSettings = { aggregations: EMPTY_ARRAY, showOnTop: false },\n advancedFilters,\n customColumnFormatMap,\n isFilterBarShown,\n metrics: { userColumnWidths, userRowHeights } = {\n userColumnWidths: EMPTY_MAP,\n userRowHeights: EMPTY_MAP,\n },\n quickFilters,\n customColumns,\n conditionalFormats = EMPTY_ARRAY,\n reverse,\n rollupConfig,\n showSearchBar,\n searchValue,\n selectDistinctColumns = EMPTY_ARRAY,\n selectedSearchColumns,\n sorts,\n invertSearchColumns,\n pendingDataMap = EMPTY_MAP,\n frozenColumns,\n columnHeaderGroups,\n partitionConfig,\n } = irisGridState;\n const { columns } = model;\n const partitionColumns = isPartitionedGridModelProvider(model)\n ? model.partitionColumns\n : [];\n\n // Return value will be serialized, should not contain undefined\n return {\n advancedFilters: this.dehydrateAdvancedFilters(columns, advancedFilters),\n aggregationSettings,\n customColumnFormatMap: [...customColumnFormatMap],\n isFilterBarShown,\n quickFilters: IrisGridUtils.dehydrateQuickFilters(quickFilters),\n sorts: IrisGridUtils.dehydrateSort(sorts),\n userColumnWidths: [...userColumnWidths]\n .filter(\n ([columnIndex]) =>\n columnIndex != null &&\n columnIndex >= 0 &&\n columnIndex < columns.length\n )\n .map(([columnIndex, width]) => [columns[columnIndex].name, width]),\n userRowHeights: [...userRowHeights],\n customColumns: [...customColumns],\n conditionalFormats: [...conditionalFormats],\n reverse,\n rollupConfig,\n showSearchBar,\n searchValue,\n selectDistinctColumns: [...selectDistinctColumns],\n selectedSearchColumns,\n invertSearchColumns,\n pendingDataMap: this.dehydratePendingDataMap(columns, pendingDataMap),\n frozenColumns,\n columnHeaderGroups: columnHeaderGroups?.map(item => ({\n name: item.name,\n children: item.children,\n color: item.color ?? null,\n })),\n partitionConfig: this.dehydratePartitionConfig(\n partitionColumns,\n partitionConfig\n ),\n };\n }\n\n /**\n * Import a state for IrisGrid that was exported with {{@link dehydrateIrisGridState}}\n * @param model The table model to import the state with\n * @param irisGridState The saved IrisGrid state\n */\n hydrateIrisGridState(\n model: IrisGridModel,\n irisGridState: DehydratedIrisGridState\n ): Omit<HydratedIrisGridState, 'metrics'> & {\n userColumnWidths: ModelSizeMap;\n userRowHeights: ModelSizeMap;\n } {\n const {\n advancedFilters,\n aggregationSettings = { aggregations: [], showOnTop: false },\n customColumnFormatMap,\n isFilterBarShown,\n quickFilters,\n sorts,\n customColumns,\n conditionalFormats,\n userColumnWidths,\n userRowHeights,\n reverseType,\n reverse,\n rollupConfig = undefined,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n invertSearchColumns = true,\n pendingDataMap = [],\n frozenColumns,\n columnHeaderGroups,\n partitionConfig,\n } = irisGridState;\n const { columns, formatter } = model;\n const partitionColumns = isPartitionedGridModelProvider(model)\n ? model.partitionColumns\n : [];\n return {\n advancedFilters: this.hydrateAdvancedFilters(\n columns,\n advancedFilters,\n formatter.timeZone\n ),\n aggregationSettings,\n customColumnFormatMap: new Map(customColumnFormatMap),\n isFilterBarShown,\n quickFilters: this.hydrateQuickFilters(\n columns,\n quickFilters,\n formatter.timeZone\n ),\n sorts: this.hydrateSort(columns, sorts, true),\n userColumnWidths: new Map(\n userColumnWidths\n .map(\n ([column, width]: [string | number, number]): [number, number] => {\n if (\n typeof column === 'string' ||\n (column as unknown) instanceof String\n ) {\n return [\n columns.findIndex(({ name }) => name === column),\n width,\n ];\n }\n return [column, width];\n }\n )\n .filter(\n ([column]) =>\n column != null && column >= 0 && column < columns.length\n )\n ),\n customColumns,\n conditionalFormats,\n userRowHeights: new Map(userRowHeights),\n reverse: reverseType === TableUtils.REVERSE_TYPE.POST_SORT || reverse,\n rollupConfig,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n invertSearchColumns,\n pendingDataMap: this.hydratePendingDataMap(\n columns,\n pendingDataMap\n ) as PendingDataMap<UIRow>,\n frozenColumns,\n columnHeaderGroups: IrisGridUtils.parseColumnHeaderGroups(\n model,\n columnHeaderGroups ?? model.layoutHints?.columnGroups ?? []\n ).groups,\n partitionConfig: this.hydratePartitionConfig(\n partitionColumns,\n partitionConfig\n ),\n };\n }\n\n /**\n * Import the saved quick filters to apply to the columns. Does not actually apply the filters.\n * @param columns The columns the filters will be applied to\n * @param savedQuickFilters Exported quick filters definitions\n * @param timeZone The time zone to make this value in if it is a date type. E.g. America/New_York\n * @returns The quick filters to apply to the columns\n */\n hydrateQuickFilters(\n columns: readonly DhType.Column[],\n savedQuickFilters: readonly DehydratedQuickFilter[],\n timeZone?: string\n ): ReadonlyQuickFilterMap {\n const importedFilters = savedQuickFilters.map(\n ([columnIndex, quickFilter]: DehydratedQuickFilter): [\n number,\n { text: string; filter: DhType.FilterCondition | null },\n ] => {\n const { text } = quickFilter;\n\n let filter = null;\n try {\n const column = IrisGridUtils.getColumn(columns, columnIndex);\n if (column != null) {\n filter = this.tableUtils.makeQuickFilter(column, text, timeZone);\n }\n } catch (error) {\n log.error('hydrateQuickFilters error with', text, error);\n }\n\n return [columnIndex, { text, filter }];\n }\n );\n\n return new Map(importedFilters);\n }\n\n /**\n * Export the advanced filters from the provided columns to JSON striginfiable object\n * @param columns The columns for the filters\n * @param advancedFilters The advanced filters to dehydrate\n * @returns The dehydrated advanced filters\n */\n dehydrateAdvancedFilters(\n columns: readonly DhType.Column[],\n advancedFilters: ReadonlyAdvancedFilterMap\n ): DehydratedAdvancedFilter[] {\n return [...advancedFilters].map(([columnIndex, advancedFilter]) => {\n const column = IrisGridUtils.getColumn(columns, columnIndex);\n assertNotNull(column);\n const options = this.dehydrateAdvancedFilterOptions(\n column,\n advancedFilter.options\n );\n return [columnIndex, { options }];\n });\n }\n\n /**\n * Import the saved advanced filters to apply to the columns. Does not actually apply the filters.\n * @param columns The columns the filters will be applied to\n * @param savedAdvancedFilters Exported advanced filters definitions\n * @param timeZone The time zone to make this filter in if it is a date type. E.g. America/New_York\n * @returns The advanced filters to apply to the columns\n */\n hydrateAdvancedFilters(\n columns: readonly DhType.Column[],\n savedAdvancedFilters: readonly DehydratedAdvancedFilter[],\n timeZone: string\n ): ReadonlyAdvancedFilterMap {\n const importedFilters = savedAdvancedFilters.map(\n ([columnIndex, advancedFilter]: DehydratedAdvancedFilter): [\n number,\n {\n options: AdvancedFilterOptions;\n filter: DhType.FilterCondition | null;\n },\n ] => {\n const column = IrisGridUtils.getColumn(columns, columnIndex);\n assertNotNull(column);\n const options = this.hydrateAdvancedFilterOptions(\n column,\n advancedFilter.options\n );\n let filter = null;\n\n try {\n const columnRetrieved = IrisGridUtils.getColumn(columns, columnIndex);\n if (columnRetrieved != null) {\n filter = this.tableUtils.makeAdvancedFilter(\n column,\n options,\n timeZone\n );\n }\n } catch (error) {\n log.error('hydrateAdvancedFilters error with', options, error);\n }\n\n return [columnIndex, { options, filter }];\n }\n );\n\n return new Map(importedFilters);\n }\n\n dehydrateAdvancedFilterOptions(\n column: DhType.Column,\n options: AdvancedFilterOptions\n ): AdvancedFilterOptions {\n const { selectedValues, ...otherOptions } = options;\n return {\n selectedValues: selectedValues?.map((value: unknown) =>\n this.dehydrateValue(value, column?.type)\n ),\n ...otherOptions,\n };\n }\n\n hydrateAdvancedFilterOptions(\n column: DhType.Column,\n options: AdvancedFilterOptions\n ): AdvancedFilterOptions {\n const { selectedValues, ...otherOptions } = options;\n return {\n selectedValues: selectedValues?.map(value =>\n this.hydrateValue(value, column?.type)\n ),\n ...otherOptions,\n };\n }\n\n dehydratePendingDataMap(\n columns: readonly DhType.Column[],\n pendingDataMap: PendingDataMap\n ): DehydratedPendingDataMap<unknown> {\n return [...pendingDataMap].map(([rowIndex, { data }]) => [\n rowIndex,\n {\n data: [...data]\n .filter(([c]) => typeof c === 'number')\n .map(([c, cellData]) => [\n columns[c as number].name,\n this.dehydrateValue(cellData.value, columns[c as number].type),\n ]),\n },\n ]);\n }\n\n hydratePendingDataMap(\n columns: readonly DhType.Column[],\n pendingDataMap: DehydratedPendingDataMap<unknown>\n ): Map<\n number,\n {\n data: Map<ModelIndex | null, CellData>;\n }\n > {\n const columnMap = new Map<ColumnName, number>();\n const getColumnIndex = (columnName: ColumnName): number | undefined => {\n if (!columnMap.has(columnName)) {\n columnMap.set(\n columnName,\n columns.findIndex(({ name }) => name === columnName)\n );\n }\n return columnMap.get(columnName);\n };\n\n return new Map(\n pendingDataMap.map(\n ([rowIndex, { data }]: [number, { data: [string, unknown][] }]) => [\n rowIndex,\n {\n data: new Map(\n data.map(([columnName, value]) => {\n const index = getColumnIndex(columnName);\n assertNotNull(index);\n return [\n getColumnIndex(columnName) ?? null,\n { value: this.hydrateValue(value, columns[index].type) },\n ];\n })\n ),\n },\n ]\n )\n );\n }\n\n dehydratePartitionConfig(\n partitionColumns: readonly DhType.Column[],\n partitionConfig: PartitionConfig | undefined\n ): PartitionConfig | undefined {\n if (partitionConfig == null) {\n return partitionConfig;\n }\n\n return {\n ...partitionConfig,\n partitions: partitionConfig.partitions.map((partition, index) =>\n this.dehydrateValue(partition, partitionColumns[index].type)\n ),\n };\n }\n\n hydratePartitionConfig(\n partitionColumns: readonly DhType.Column[],\n partitionConfig: PartitionConfig | undefined\n ): PartitionConfig | undefined {\n if (partitionConfig == null) {\n return partitionConfig;\n }\n\n return {\n ...partitionConfig,\n partitions: partitionConfig.partitions.map((partition, index) =>\n this.hydrateValue(partition, partitionColumns[index].type)\n ),\n };\n }\n\n /**\n * Dehydrates/serializes a value for storage.\n * @param value The value to dehydrate\n * @param columnType The column type\n */\n dehydrateValue<T>(value: T, columnType: string): string | T | null {\n if (TableUtils.isDateType(columnType)) {\n return this.dehydrateDateTime(\n value as unknown as number | DhType.DateWrapper | Date\n );\n }\n\n if (TableUtils.isLongType(columnType)) {\n return IrisGridUtils.dehydrateLong(value);\n }\n\n return value;\n }\n\n /**\n * Hydrate a value from it's serialized state\n * @param value The dehydrated value that needs to be hydrated\n * @param columnType The type of column\n */\n hydrateValue<T>(\n value: T,\n columnType: string\n ): DhType.DateWrapper | DhType.LongWrapper | T | null {\n if (TableUtils.isDateType(columnType)) {\n return this.hydrateDateTime(value as unknown as string);\n }\n\n if (TableUtils.isLongType(columnType)) {\n return this.hydrateLong(value as unknown as string);\n }\n\n return value;\n }\n\n dehydrateDateTime(value: number | DhType.DateWrapper | Date): string | null {\n return value != null\n ? this.dh.i18n.DateTimeFormat.format(DateUtils.FULL_DATE_FORMAT, value)\n : null;\n }\n\n hydrateDateTime(value: string): DhType.DateWrapper | null {\n return value != null\n ? this.dh.i18n.DateTimeFormat.parse(DateUtils.FULL_DATE_FORMAT, value)\n : null;\n }\n\n hydrateLong(value: string): DhType.LongWrapper | null {\n return value != null ? this.dh.LongWrapper.ofString(value) : null;\n }\n\n /**\n * Import the saved sorts to apply to the model. Does not actually apply the sort.\n * @param columns The columns the sorts will be applied to\n * @param sorts Exported sort definitions\n * @param dropReverse If true, drop reverse sort descriptors from the result\n * @returns The sort descriptors to apply to the model\n */\n hydrateSort(\n columns: readonly DhType.Column[],\n sorts: readonly (DehydratedSort | LegacyDehydratedSort)[],\n dropReverse = false\n ): readonly SortDescriptor[] {\n const { dh } = this;\n return (\n sorts\n .map(sort => {\n const { column: columnIndexOrName, isAbs, direction } = sort;\n if (direction === TableUtils.sortDirection.reverse) {\n return dh.Table.reverse();\n }\n\n const column =\n typeof columnIndexOrName === 'string'\n ? IrisGridUtils.getColumnByName(columns, columnIndexOrName)\n : IrisGridUtils.getColumn(columns, columnIndexOrName);\n\n if (column != null) {\n return {\n column: {\n name: column.name,\n type: column.type,\n },\n isAbs,\n direction,\n };\n }\n return null;\n })\n // If we can't find the column any more, it's null, filter it out\n // If the item is a reverse sort item, and dropReverse is true, filter it out\n // - it will get applied with the `reverse` property\n // This should only happen when loading a legacy dashboard\n .filter(\n item =>\n item != null &&\n (item.direction !== TableUtils.sortDirection.reverse ||\n !dropReverse)\n ) as SortDescriptor[]\n );\n }\n\n hydrateDhSort(\n columns: readonly DhType.Column[],\n sorts: readonly SortDescriptor[]\n ): DhType.Sort[] {\n const { dh } = this;\n return (\n sorts\n .map(sortDescriptor => {\n const {\n column: { name },\n isAbs,\n direction,\n } = sortDescriptor;\n\n if (direction === TableUtils.sortDirection.reverse) {\n return dh.Table.reverse();\n }\n\n const column = IrisGridUtils.getColumnByName(columns, name);\n\n if (column != null) {\n let columnSort = column.sort();\n if (isAbs) {\n columnSort = columnSort.abs();\n }\n if (direction === TableUtils.sortDirection.descending) {\n columnSort = columnSort.desc();\n } else {\n columnSort = columnSort.asc();\n }\n return columnSort;\n }\n\n return null;\n })\n // If we can't find the column any more, it's null, filter it out\n .filter(isNotNullOrUndefined) as DhType.Sort[]\n );\n }\n\n /**\n * Applies the passed in table settings directly to the provided table\n * @param table The table to apply the settings to\n * @param tableSettings Dehydrated table settings extracted with `extractTableSettings`\n * @param timeZone The time zone to make this value in if it is a date type. E.g. America/New_York\n */\n applyTableSettings(\n table: DhType.Table,\n tableSettings: TableSettings,\n timeZone: string\n ): void {\n const { columns } = table;\n\n let quickFilters: DhType.FilterCondition[] = [];\n if (tableSettings.quickFilters) {\n quickFilters = IrisGridUtils.getFiltersFromFilterMap(\n this.hydrateQuickFilters(columns, tableSettings.quickFilters, timeZone)\n );\n }\n\n let advancedFilters: DhType.FilterCondition[] = [];\n if (tableSettings.advancedFilters) {\n advancedFilters = IrisGridUtils.getFiltersFromFilterMap(\n this.hydrateAdvancedFilters(\n columns,\n tableSettings.advancedFilters,\n timeZone\n )\n );\n }\n const inputFilters = this.getFiltersFromInputFilters(\n columns,\n tableSettings.inputFilters,\n timeZone\n );\n\n let sorts: DhType.Sort[] = [];\n if (tableSettings.sorts) {\n sorts = this.hydrateDhSort(\n columns,\n this.hydrateSort(columns, tableSettings.sorts)\n );\n }\n\n let filters = [...quickFilters, ...advancedFilters];\n const { partitions, partitionColumns: partitionColumnNames } =\n tableSettings;\n if (\n partitions &&\n partitions.length &&\n partitionColumnNames &&\n partitionColumnNames?.length\n ) {\n const partitionColumns = partitionColumnNames.map(partitionColumnName =>\n IrisGridUtils.getColumnByName(columns, partitionColumnName)\n );\n for (let i = 0; i < partitionColumns.length; i += 1) {\n if (partitionColumns[i] !== undefined && partitions[i] != null) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const partitionFilter = partitionColumns[i]!.filter().eq(\n this.dh.FilterValue.ofString(partitions[i])\n );\n filters = [partitionFilter, ...filters];\n }\n }\n }\n filters = [...inputFilters, ...filters];\n\n table.applyFilter(filters);\n table.applySort(sorts);\n }\n\n getFiltersFromInputFilters(\n columns: readonly DhType.Column[],\n inputFilters: readonly InputFilter[] = [],\n timeZone?: string\n ): DhType.FilterCondition[] {\n return inputFilters\n .map(({ name, type, value }) => {\n const column = columns.find(\n ({ name: columnName, type: columnType }) =>\n columnName === name && columnType === type\n );\n if (column) {\n try {\n return this.tableUtils.makeQuickFilter(column, value, timeZone);\n } catch (e) {\n // It may be unable to create it because user hasn't completed their input\n log.debug('Unable to create input filter', e);\n }\n }\n\n return null;\n })\n .filter(filter => filter != null) as DhType.FilterCondition[];\n }\n\n /**\n * Get the dh.RangeSet representation of the provided ranges.\n * Ranges are sorted prior to creating the RangeSet. Only the rows are taken into account,\n * RangeSet does not have an option for columns.\n * @param ranges The ranges to get the range set for\n * @returns The rangeset for the provided ranges\n */\n rangeSetFromRanges(ranges: readonly GridRange[]): DhType.RangeSet {\n const { dh } = this;\n const rangeSets = ranges\n .slice()\n .sort((a, b): number => {\n assertNotNull(a.startRow);\n assertNotNull(b.startRow);\n return a.startRow - b.startRow;\n })\n .map(range => {\n const { startRow, endRow } = range;\n assertNotNull(startRow);\n assertNotNull(endRow);\n return dh.RangeSet.ofRange(startRow, endRow);\n });\n return dh.RangeSet.ofRanges(rangeSets);\n }\n\n /**\n * Get the color for a cell value\n * @param theme The IrisGrid theme\n * @param columnType The type of the column\n * @param columnName The name of the column\n * @param value The value of the cell\n * @returns The color for the cell value\n */\n static colorForValue(\n theme: IrisGridThemeType,\n columnType: string,\n columnName: string,\n value: unknown\n ): string {\n if (TableUtils.isDateType(columnType) || columnName === 'Date') {\n assertNotNull(theme.dateColor);\n return theme.dateColor;\n }\n if (TableUtils.isNumberType(columnType)) {\n if ((value as number) > 0) {\n assertNotNull(theme.positiveNumberColor);\n return theme.positiveNumberColor;\n }\n if ((value as number) < 0) {\n assertNotNull(theme.negativeNumberColor);\n return theme.negativeNumberColor;\n }\n assertNotNull(theme.zeroNumberColor);\n return theme.zeroNumberColor;\n }\n return theme.textColor;\n }\n\n /**\n * Determines the text alignment for a cell value\n * @param columnType The type of the column\n * @param columnName The name of the column\n * @returns The text alignment for the cell value\n */\n static textAlignForValue(\n columnType: string,\n columnName: string\n ): CanvasTextAlign {\n if (TableUtils.isDateType(columnType) || columnName === 'Date') {\n return 'center';\n }\n\n if (TableUtils.isNumberType(columnType)) {\n return 'right';\n }\n\n return 'left';\n }\n}\n\nexport default IrisGridUtils;\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deephaven/iris-grid",
3
- "version": "0.85.41",
3
+ "version": "0.85.42",
4
4
  "description": "Deephaven Iris Grid",
5
5
  "author": "Deephaven Data Labs LLC",
6
6
  "license": "Apache-2.0",
@@ -79,5 +79,5 @@
79
79
  "publishConfig": {
80
80
  "access": "public"
81
81
  },
82
- "gitHead": "6437126ac262b89d41d2a3474f87157e2e76c859"
82
+ "gitHead": "4e2a7d01ea3e45127886c51f66be7a34e463495a"
83
83
  }