@deephaven/code-studio 0.82.1-beta.5 → 0.82.1-beta.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/build/assets/{AppRoot-51525466.js → AppRoot-e0623c71.js} +3 -3
  2. package/build/assets/{AppRoot-51525466.js.map → AppRoot-e0623c71.js.map} +1 -1
  3. package/build/assets/{Chart-37481c88.js → Chart-e5224823.js} +2 -2
  4. package/build/assets/{Chart-37481c88.js.map → Chart-e5224823.js.map} +1 -1
  5. package/build/assets/{ControlType-2b4197fd.js → ControlType-ee9c672e.js} +13 -13
  6. package/build/assets/ControlType-ee9c672e.js.map +1 -0
  7. package/build/assets/{FontBootstrap-f8bc2b6d.js → FontBootstrap-4f906e56.js} +3 -3
  8. package/build/assets/{FontBootstrap-f8bc2b6d.js.map → FontBootstrap-4f906e56.js.map} +1 -1
  9. package/build/assets/{FormatterUtils-fe3b8652.js → FormatterUtils-aa7386ef.js} +2 -2
  10. package/build/assets/{FormatterUtils-fe3b8652.js.map → FormatterUtils-aa7386ef.js.map} +1 -1
  11. package/build/assets/{Grid-eff9aa93.js → Grid-4206eb66.js} +2 -2
  12. package/build/assets/{Grid-eff9aa93.js.map → Grid-4206eb66.js.map} +1 -1
  13. package/build/assets/{GridRenderer-cb63ac50.js → GridRenderer-bf66c0c9.js} +2 -2
  14. package/build/assets/{GridRenderer-cb63ac50.js.map → GridRenderer-bf66c0c9.js.map} +1 -1
  15. package/build/assets/{IrisGrid-d525e076.js → IrisGrid-c5f818f4.js} +2 -2
  16. package/build/assets/{IrisGrid-d525e076.js.map → IrisGrid-c5f818f4.js.map} +1 -1
  17. package/build/assets/{IrisGridModel-29b27b08.js → IrisGridModel-f63f94cc.js} +2 -2
  18. package/build/assets/{IrisGridModel-29b27b08.js.map → IrisGridModel-f63f94cc.js.map} +1 -1
  19. package/build/assets/{IrisGridShortcuts-e12bf0d8.js → IrisGridShortcuts-c8a512d6.js} +2 -2
  20. package/build/assets/{IrisGridShortcuts-e12bf0d8.js.map → IrisGridShortcuts-c8a512d6.js.map} +1 -1
  21. package/build/assets/{IrisGridThemeProvider-a72dea0c.js → IrisGridThemeProvider-ed895144.js} +2 -2
  22. package/build/assets/{IrisGridThemeProvider-a72dea0c.js.map → IrisGridThemeProvider-ed895144.js.map} +1 -1
  23. package/build/assets/{LocalWorkspaceStorage-79f086d0.js → LocalWorkspaceStorage-8e43291a.js} +2 -2
  24. package/build/assets/{LocalWorkspaceStorage-79f086d0.js.map → LocalWorkspaceStorage-8e43291a.js.map} +1 -1
  25. package/build/assets/{MarkdownEditor-bb0b1d96.js → MarkdownEditor-d90e4bef.js} +2 -2
  26. package/build/assets/{MarkdownEditor-bb0b1d96.js.map → MarkdownEditor-d90e4bef.js.map} +1 -1
  27. package/build/assets/{MarkdownNotebook-c6bd42d4.js → MarkdownNotebook-7c4e9125.js} +2 -2
  28. package/build/assets/{MarkdownNotebook-c6bd42d4.js.map → MarkdownNotebook-7c4e9125.js.map} +1 -1
  29. package/build/assets/{MissingPartitionError-aa20475a.js → MissingPartitionError-1e490bac.js} +2 -2
  30. package/build/assets/{MissingPartitionError-aa20475a.js.map → MissingPartitionError-1e490bac.js.map} +1 -1
  31. package/build/assets/{StyleGuideRoot-91a40d34.js → StyleGuideRoot-42855334.js} +2 -2
  32. package/build/assets/{StyleGuideRoot-91a40d34.js.map → StyleGuideRoot-42855334.js.map} +1 -1
  33. package/build/assets/index-0e1c1551.js +2 -0
  34. package/build/assets/index-0e1c1551.js.map +1 -0
  35. package/build/assets/{index-e2d3fd95.js → index-1f683a88.js} +3 -3
  36. package/build/assets/{index-e2d3fd95.js.map → index-1f683a88.js.map} +1 -1
  37. package/build/assets/{index-7a4a876f.js → index-2f2129be.js} +2 -2
  38. package/build/assets/{index-7a4a876f.js.map → index-2f2129be.js.map} +1 -1
  39. package/build/index.html +1 -1
  40. package/package.json +30 -30
  41. package/build/assets/ControlType-2b4197fd.js.map +0 -1
  42. package/build/assets/index-3f72c3f8.js +0 -2
  43. package/build/assets/index-3f72c3f8.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"MissingPartitionError-aa20475a.js","sources":["../../../filters/dist/Utils.js","../../../iris-grid/dist/sidebar/AdvancedSettingsType.js","../../../iris-grid/dist/sidebar/AdvancedSettings.js","../../../iris-grid/dist/sidebar/aggregations/AggregationOperation.js","../../../iris-grid/dist/sidebar/aggregations/AggregationUtils.js","../../../grid/dist/DeletableGridModel.js","../../../iris-grid/dist/ColumnHeaderGroup.js","../../../iris-grid/dist/PartitionedGridModel.js","../../../iris-grid/dist/IrisGridUtils.js","../../../iris-grid/dist/MissingPartitionError.js"],"sourcesContent":["import { Type } from \"./Type.js\";\nexport function getLabelForTextFilter(filterType) {\n switch (filterType) {\n case Type.eq:\n return 'is exactly';\n case Type.eqIgnoreCase:\n return 'is exactly (ignore case)';\n case Type.notEq:\n return 'is not exactly';\n case Type.notEqIgnoreCase:\n return 'is not exactly (ignore case)';\n case Type.contains:\n return 'contains';\n case Type.notContains:\n return 'does not contain';\n case Type.startsWith:\n return 'starts with';\n case Type.endsWith:\n return 'ends with';\n default:\n throw new Error(\"Unrecognized text filter type \".concat(filterType));\n }\n}\nexport function getLabelForNumberFilter(filterType) {\n switch (filterType) {\n case Type.eq:\n return 'is equal to';\n case Type.notEq:\n return 'is not equal to';\n case Type.greaterThan:\n return 'greater than';\n case Type.greaterThanOrEqualTo:\n return 'greater than or equal to';\n case Type.lessThan:\n return 'less than';\n case Type.lessThanOrEqualTo:\n return 'less than or equal to';\n default:\n throw new Error(\"Unrecognized number filter type \".concat(filterType));\n }\n}\nexport function getLabelForDateFilter(filterType) {\n switch (filterType) {\n case Type.eq:\n return 'date is';\n case Type.notEq:\n return 'date is not';\n case Type.notEqIgnoreCase:\n case Type.greaterThan:\n return 'date is after';\n case Type.greaterThanOrEqualTo:\n return 'date is after or equal';\n case Type.lessThan:\n return 'date is before';\n case Type.lessThanOrEqualTo:\n return 'date is before or equal';\n default:\n throw new Error(\"Unrecognized date filter type \".concat(filterType));\n }\n}\nexport function getLabelForBooleanFilter(filterType) {\n switch (filterType) {\n case Type.isTrue:\n return 'Is True';\n case Type.isFalse:\n return 'Is False';\n case Type.isNull:\n return 'Is Null';\n default:\n throw new Error(\"Unrecognized boolean filter type \".concat(filterType));\n }\n}\n//# sourceMappingURL=Utils.js.map","var AdvancedSettingsType;\n(function (AdvancedSettingsType) {\n AdvancedSettingsType[\"FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS\"] = \"filter-control-change-clears-all-filters\";\n AdvancedSettingsType[\"LINK_CHANGE_CLEARS_ALL_FILTERS\"] = \"link-change-clears-all-filters\";\n})(AdvancedSettingsType || (AdvancedSettingsType = {}));\nexport default AdvancedSettingsType;\n//# sourceMappingURL=AdvancedSettingsType.js.map","import AdvancedSettingsType from \"./AdvancedSettingsType.js\";\nvar DEFAULTS = Object.freeze([[AdvancedSettingsType.FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS, false], [AdvancedSettingsType.LINK_CHANGE_CLEARS_ALL_FILTERS, false]]);\nexport default {\n DEFAULTS\n};\n//# sourceMappingURL=AdvancedSettings.js.map","var AggregationOperation;\n(function (AggregationOperation) {\n AggregationOperation[\"COUNT\"] = \"Count\";\n AggregationOperation[\"MIN\"] = \"Min\";\n AggregationOperation[\"MAX\"] = \"Max\";\n AggregationOperation[\"SUM\"] = \"Sum\";\n AggregationOperation[\"ABS_SUM\"] = \"AbsSum\";\n AggregationOperation[\"VAR\"] = \"Var\";\n AggregationOperation[\"AVG\"] = \"Avg\";\n AggregationOperation[\"STD\"] = \"Std\";\n AggregationOperation[\"FIRST\"] = \"First\";\n AggregationOperation[\"LAST\"] = \"Last\";\n AggregationOperation[\"SKIP\"] = \"Skip\";\n AggregationOperation[\"COUNT_DISTINCT\"] = \"CountDistinct\";\n AggregationOperation[\"DISTINCT\"] = \"Distinct\";\n AggregationOperation[\"UNIQUE\"] = \"Unique\";\n})(AggregationOperation || (AggregationOperation = {}));\nexport default AggregationOperation;\n//# sourceMappingURL=AggregationOperation.js.map","import { TableUtils } from '@deephaven/jsapi-utils';\nimport AggregationOperation from \"./AggregationOperation.js\";\nexport var SELECTABLE_OPTIONS = [AggregationOperation.SUM, AggregationOperation.ABS_SUM, AggregationOperation.MIN, AggregationOperation.MAX, AggregationOperation.VAR, AggregationOperation.AVG, AggregationOperation.STD, AggregationOperation.FIRST, AggregationOperation.LAST, AggregationOperation.COUNT_DISTINCT, AggregationOperation.DISTINCT, AggregationOperation.COUNT, AggregationOperation.UNIQUE];\n\n/**\n * Check if an operation requires a rollup/table grouping\n * @param type The operation to check\n * @returns True if this operation applies to the whole table, false if applies to columns\n */\nexport var isRollupOperation = type => {\n switch (type) {\n // currently no rollup only operations, but there has been in the past\n default:\n return false;\n }\n};\n\n/**\n * Check if an operation is valid against the given column type\n * @param operationType The operation to check\n * @param columnType The column type to check against\n */\nexport var isValidOperation = (operationType, columnType) => {\n switch (operationType) {\n case AggregationOperation.COUNT:\n case AggregationOperation.FIRST:\n case AggregationOperation.LAST:\n case AggregationOperation.COUNT_DISTINCT:\n case AggregationOperation.DISTINCT:\n case AggregationOperation.UNIQUE:\n return true;\n case AggregationOperation.MIN:\n case AggregationOperation.MAX:\n return TableUtils.isNumberType(columnType) || TableUtils.isDateType(columnType) || TableUtils.isTextType(columnType);\n case AggregationOperation.SUM:\n case AggregationOperation.ABS_SUM:\n case AggregationOperation.VAR:\n case AggregationOperation.AVG:\n case AggregationOperation.STD:\n return TableUtils.isNumberType(columnType);\n case AggregationOperation.SKIP:\n return false;\n // No default case - if AggregationOperation is added, we'll get a compile time error\n }\n};\n\nexport var filterValidColumns = (columns, operationType) => columns.filter(c => c.isProxy !== true && isValidOperation(operationType, c.type));\nexport var getOperationColumnNames = (columns, operationType, selected, invert) => filterValidColumns(columns, operationType).map(_ref => {\n var {\n name\n } = _ref;\n return name;\n}).filter(name => selected.includes(name) ? !invert : invert);\nexport default {\n isRollupOperation,\n filterValidColumns,\n getOperationColumnNames\n};\n//# sourceMappingURL=AggregationUtils.js.map","import { AssertionError } from \"./errors/index.js\";\nexport function isDeletableGridModel(model) {\n return (model === null || model === void 0 ? void 0 : model.isDeletable) !== undefined;\n}\nexport function assertIsDeletableGridModel(model) {\n if (!isDeletableGridModel(model)) {\n throw new AssertionError(\"Expected 'model' to be deletable, but received \".concat(model));\n }\n}\n\n/**\n * Model for a deletable grid\n */\n//# sourceMappingURL=DeletableGridModel.js.map","function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport { GridUtils } from '@deephaven/grid';\nimport memoizeOne from 'memoize-one';\nimport Log from '@deephaven/log';\nvar log = Log.module('ColumnHeaderGroup');\nexport function isColumnHeaderGroup(x) {\n return x instanceof ColumnHeaderGroup;\n}\nexport default class ColumnHeaderGroup {\n constructor(_ref) {\n var {\n name,\n children,\n color,\n depth,\n childIndexes,\n parent\n } = _ref;\n _defineProperty(this, \"name\", void 0);\n _defineProperty(this, \"children\", void 0);\n _defineProperty(this, \"depth\", void 0);\n _defineProperty(this, \"parent\", void 0);\n _defineProperty(this, \"color\", void 0);\n _defineProperty(this, \"childIndexes\", void 0);\n _defineProperty(this, \"getVisibleRange\", memoizeOne(movedItems => {\n var flattenedIndexes = this.childIndexes.flat();\n var visibleIndexes = GridUtils.getVisibleIndexes(flattenedIndexes, movedItems);\n var start = Math.min(...visibleIndexes);\n var end = Math.max(...visibleIndexes);\n if (end - start !== flattenedIndexes.length - 1) {\n log.warn(\"Column header group \".concat(this.name, \" is not contiguous\"));\n }\n return [start, end];\n }));\n this.name = name;\n this.children = children;\n this.color = color !== null && color !== void 0 ? color : undefined;\n this.depth = depth;\n this.childIndexes = childIndexes;\n this.parent = parent;\n }\n setParent(parent) {\n this.parent = parent;\n }\n addChildren(children) {\n var newChildren = new Set(this.children.concat(children));\n this.children = [...newChildren];\n }\n removeChildren(children) {\n var newChildren = new Set(this.children);\n children.forEach(name => newChildren.delete(name));\n this.children = [...newChildren];\n }\n get isNew() {\n return this.name.startsWith(ColumnHeaderGroup.NEW_GROUP_PREFIX);\n }\n}\n_defineProperty(ColumnHeaderGroup, \"NEW_GROUP_PREFIX\", ':newGroup');\n//# sourceMappingURL=ColumnHeaderGroup.js.map","export function isPartitionedGridModelProvider(model) {\n return (model === null || model === void 0 ? void 0 : model.isPartitionRequired) !== undefined && (model === null || model === void 0 ? void 0 : model.partitionColumns) !== undefined && (model === null || model === void 0 ? void 0 : model.partitionKeysTable) !== undefined && (model === null || model === void 0 ? void 0 : model.partitionMergedTable) !== undefined && (model === null || model === void 0 ? void 0 : model.partitionTable) !== undefined;\n}\nexport function isPartitionedGridModel(model) {\n return isPartitionedGridModelProvider(model) && model.partitionConfig !== undefined;\n}\n\n/**\n * A grid model that provides key tables and partitions, cannot accept a `PartitionConfig` being set\n */\n\n/**\n * A grid model that can be partitioned on a column\n */\n//# sourceMappingURL=PartitionedGridModel.js.map","var _excluded = [\"selectedValues\"],\n _excluded2 = [\"selectedValues\"];\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport { GridUtils } from '@deephaven/grid';\nimport { DateUtils, TableUtils } from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport { assertNotNull, bindAllMethods, EMPTY_ARRAY, EMPTY_MAP } from '@deephaven/utils';\nimport AggregationUtils from \"./sidebar/aggregations/AggregationUtils.js\";\nimport AggregationOperation from \"./sidebar/aggregations/AggregationOperation.js\";\nimport AdvancedSettings from \"./sidebar/AdvancedSettings.js\";\nimport ColumnHeaderGroup from \"./ColumnHeaderGroup.js\";\nimport { isPartitionedGridModelProvider } from \"./PartitionedGridModel.js\";\nvar log = Log.module('IrisGridUtils');\n\n/** @deprecated Use `DehydratedSort` instead */\n\nexport function isPanelStateV1(state) {\n return state.partition !== undefined;\n}\nexport function isPanelStateV2(state) {\n return Array.isArray(state.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, array) {\n return x >= 0 && x < array.length;\n}\nfunction isDateWrapper(value) {\n return (value === null || value === void 0 ? void 0 : value.asDate) != null;\n}\nclass IrisGridUtils {\n /**\n * Exports the state from Grid component to a JSON stringifiable object\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(model, gridState) {\n var {\n isStuckToBottom,\n isStuckToRight,\n movedColumns,\n movedRows\n } = gridState;\n var {\n columns\n } = model;\n return {\n isStuckToBottom,\n isStuckToRight,\n movedColumns: [...movedColumns].filter(_ref => {\n var {\n to,\n from\n } = _ref;\n return isValidIndex(to, columns) && (typeof from === 'number' && isValidIndex(from, columns) || Array.isArray(from) && isValidIndex(from[0], columns) && isValidIndex(from[1], columns));\n }).map(_ref2 => {\n var {\n to,\n from\n } = _ref2;\n return {\n to: columns[to].name,\n from: Array.isArray(from) ? [columns[from[0]].name, columns[from[1]].name] : columns[from].name\n };\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(model, gridState) {\n var customColumns = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n var {\n isStuckToBottom,\n isStuckToRight,\n movedColumns,\n movedRows\n } = gridState;\n var {\n columns\n } = model;\n var customColumnNames = IrisGridUtils.parseCustomColumnNames(customColumns);\n var columnNames = columns.map(_ref3 => {\n var {\n name\n } = _ref3;\n return name;\n }).concat(customColumnNames);\n return {\n isStuckToBottom,\n isStuckToRight,\n movedColumns: [...movedColumns].map(_ref4 => {\n var {\n to,\n from\n } = _ref4;\n var getIndex = x => typeof x === 'string' ? columnNames.findIndex(name => name === x) : x;\n return {\n to: getIndex(to),\n from: Array.isArray(from) ? [getIndex(from[0]), getIndex(from[1])] : getIndex(from)\n };\n }).filter(_ref5 => {\n var {\n to,\n from\n } = _ref5;\n return isValidIndex(to, columnNames) && (typeof from === 'number' && isValidIndex(from, columnNames) || Array.isArray(from) && isValidIndex(from[0], columnNames) && 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(model, irisGridPanelState) {\n var {\n isSelectingPartition,\n partitions,\n 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(model, irisGridPanelState) {\n var {\n isSelectingPartition,\n advancedSettings\n } = irisGridPanelState;\n var partitions = [];\n if (isPanelStateV2(irisGridPanelState)) {\n partitions = irisGridPanelState.partitions;\n } else if (irisGridPanelState.partition != null) {\n partitions = [irisGridPanelState.partition];\n }\n return {\n isSelectingPartition,\n partitions,\n advancedSettings: new Map([...AdvancedSettings.DEFAULTS, ...advancedSettings])\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(quickFilters) {\n return [...quickFilters].map(_ref6 => {\n var [columnIndex, quickFilter] = _ref6;\n var {\n text\n } = quickFilter;\n return [columnIndex, {\n text\n }];\n });\n }\n static dehydrateLong(value) {\n return value != null ? \"\".concat(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) {\n return sorts.map(sort => {\n var {\n column,\n isAbs,\n direction\n } = 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(panelState) {\n var inputFilters = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var {\n irisGridPanelState,\n irisGridState\n } = panelState;\n var partitions = isPanelStateV2(irisGridPanelState) ? irisGridPanelState.partitions : [irisGridPanelState.partition];\n var {\n advancedFilters,\n quickFilters,\n sorts\n } = irisGridState;\n return {\n advancedFilters,\n inputFilters,\n partitions,\n quickFilters,\n sorts\n };\n }\n static getInputFiltersForColumns(columns) {\n var inputFilters = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n return inputFilters.filter(_ref7 => {\n var {\n name,\n type\n } = _ref7;\n return columns.find(_ref8 => {\n var {\n name: columnName,\n type: columnType\n } = _ref8;\n return columnName === name && columnType === type;\n });\n });\n }\n static getFiltersFromFilterMap(filterMap) {\n var filters = [];\n var keys = Array.from(filterMap.keys());\n for (var i = 0; i < keys.length; i += 1) {\n var key = keys[i];\n var item = filterMap.get(key);\n if ((item === null || item === void 0 ? void 0 : item.filter) != null) {\n filters.push(item.filter);\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) {\n return [...userColumnWidths.entries()].filter(_ref9 => {\n var [, value] = _ref9;\n return value === 0;\n }).map(_ref10 => {\n var [key] = _ref10;\n return key;\n });\n }\n static parseCustomColumnNames(customColumns) {\n return customColumns.map(customColumn => customColumn.split('=')[0]);\n }\n static getRemovedCustomColumnNames(oldCustomColumns, customColumns) {\n var oldCustomColumnsNames = IrisGridUtils.parseCustomColumnNames(oldCustomColumns);\n var customColumnNames = IrisGridUtils.parseCustomColumnNames(customColumns);\n return oldCustomColumnsNames.filter(oldCustomColumnName => !customColumnNames.includes(oldCustomColumnName));\n }\n static removeSortsInColumns(sorts, columnNames) {\n return sorts.filter(sort => !columnNames.includes(sort.column.name));\n }\n static removeFiltersInColumns(columns, filters, removedColumnNames) {\n var columnNames = columns.map(_ref11 => {\n var {\n name\n } = _ref11;\n return name;\n });\n var newFilter = new Map(filters);\n removedColumnNames.forEach(columnName => newFilter.delete(columnNames.indexOf(columnName)));\n return newFilter;\n }\n static removeColumnFromMovedColumns(columns, movedColumns, removedColumnNames) {\n var columnNames = columns.map(_ref12 => {\n var {\n name\n } = _ref12;\n return name;\n });\n var newMoves = [...movedColumns];\n var _loop = function _loop() {\n var removedColumnName = removedColumnNames[i];\n var removedColumnIndex = columnNames.findIndex(name => name === removedColumnName);\n var moves = [];\n for (var j = 0; j < newMoves.length; j += 1) {\n var move = newMoves[j];\n var newMove = _objectSpread({}, move);\n var [fromStart, fromEnd] = Array.isArray(move.from) ? move.from : [move.from, move.from];\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 if (removedColumnIndex <= fromEnd) {\n fromEnd -= 1;\n }\n if (fromStart <= fromEnd && fromStart !== newMove.to) {\n if (fromStart === fromEnd) {\n moves.push(_objectSpread(_objectSpread({}, newMove), {}, {\n from: fromStart\n }));\n } else {\n moves.push(_objectSpread(_objectSpread({}, newMove), {}, {\n from: [fromStart, fromEnd]\n }));\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(removedColumnIndex, removedColumnIndex, [move])[0][0];\n }\n newMoves = moves;\n columnNames.splice(columnNames.findIndex(name => name === removedColumnName), 1);\n };\n for (var i = 0; i < removedColumnNames.length; i += 1) {\n _loop();\n }\n return newMoves;\n }\n static removeColumnsFromSelectDistinctColumns(selectDistinctColumns, removedColumnNames) {\n return selectDistinctColumns.filter(columnName => !removedColumnNames.includes(columnName));\n }\n static getVisibleColumnsInRange(tableColumns, left, right, movedColumns, hiddenColumns) {\n var columns = [];\n for (var i = left; i <= right; i += 1) {\n var modelIndex = GridUtils.getModelIndex(i, movedColumns);\n if (modelIndex >= 0 && modelIndex < tableColumns.length && !hiddenColumns.includes(modelIndex)) {\n columns.push(tableColumns[modelIndex]);\n }\n }\n return columns;\n }\n static getPrevVisibleColumns(tableColumns, startIndex, count, movedColumns, hiddenColumns) {\n var columns = [];\n var i = startIndex;\n while (i >= 0 && columns.length < count) {\n var modelIndex = GridUtils.getModelIndex(i, movedColumns);\n if (modelIndex >= 0 && modelIndex < tableColumns.length && !hiddenColumns.includes(modelIndex)) {\n columns.unshift(tableColumns[modelIndex]);\n }\n i -= 1;\n }\n return columns;\n }\n static getNextVisibleColumns(tableColumns, startIndex, count, movedColumns, hiddenColumns) {\n var columns = [];\n var i = startIndex;\n while (i < tableColumns.length && columns.length < count) {\n var modelIndex = GridUtils.getModelIndex(i, movedColumns);\n if (modelIndex >= 0 && modelIndex < tableColumns.length && !hiddenColumns.includes(modelIndex)) {\n columns.push(tableColumns[modelIndex]);\n }\n i += 1;\n }\n return columns;\n }\n static getColumnsToFetch(tableColumns, viewportColumns, alwaysFetchColumnNames) {\n var columnsToFetch = [...viewportColumns];\n alwaysFetchColumnNames.forEach(columnName => {\n var column = tableColumns.find(_ref13 => {\n var {\n name\n } = _ref13;\n return name === columnName;\n });\n if (column != null && !viewportColumns.includes(column)) {\n columnsToFetch.push(column);\n }\n });\n return columnsToFetch;\n }\n static getModelViewportColumns(columns, left, right, movedColumns) {\n var hiddenColumns = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : [];\n var alwaysFetchColumnNames = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : [];\n var bufferPages = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : 0;\n if (left == null || right == null) {\n return undefined;\n }\n var columnsCenter = IrisGridUtils.getVisibleColumnsInRange(columns, left, right, movedColumns, hiddenColumns);\n var bufferWidth = columnsCenter.length * bufferPages;\n var columnsLeft = IrisGridUtils.getPrevVisibleColumns(columns, left - 1, bufferWidth, movedColumns, hiddenColumns);\n var columnsRight = IrisGridUtils.getNextVisibleColumns(columns, right + 1, bufferWidth, movedColumns, hiddenColumns);\n var bufferedColumns = [...columnsLeft, ...columnsCenter, ...columnsRight];\n return IrisGridUtils.getColumnsToFetch(columns, bufferedColumns, alwaysFetchColumnNames);\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) {\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 var rangeMap = new Map();\n for (var i = 0; i < ranges.length; i += 1) {\n var range = ranges[i];\n var rowMapIndex = \"\".concat(range.startRow, \":\").concat(range.endRow);\n var columnMapIndex = \"\".concat(range.startColumn, \":\").concat(range.endColumn);\n if (!rangeMap.has(rowMapIndex)) {\n rangeMap.set(rowMapIndex, []);\n }\n rangeMap.get(rowMapIndex).push(columnMapIndex);\n }\n var keys = [...rangeMap.keys()];\n var matchColumnRanges = rangeMap.get(keys[0]).sort().join(',');\n for (var _i = 1; _i < keys.length; _i += 1) {\n if (rangeMap.get(keys[_i]).sort().join(',') !== matchColumnRanges) {\n return false;\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) {\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(ranges, allColumns) {\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 var columnSet = new Set();\n for (var i = 0; i < ranges.length; i += 1) {\n var range = ranges[i];\n assertNotNull(range.startColumn);\n assertNotNull(range.endColumn);\n for (var c = (_range$startColumn = range.startColumn) !== null && _range$startColumn !== void 0 ? _range$startColumn : 0; c <= ((_range$endColumn = range.endColumn) !== null && _range$endColumn !== void 0 ? _range$endColumn : allColumns.length - 1); c += 1) {\n var _range$startColumn, _range$endColumn;\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) {\n var {\n columns,\n rows\n } = data;\n var result = [];\n for (var r = 0; r < rows.length; r += 1) {\n var row = rows[r];\n var rowData = [];\n for (var c = 0; c < columns.length; c += 1) {\n var column = columns[c];\n var 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(originalColumns, config, aggregationSettings) {\n var _config$columns$lengt, _config$columns;\n if (((_config$columns$lengt = config === null || config === void 0 ? void 0 : (_config$columns = config.columns) === null || _config$columns === void 0 ? void 0 : _config$columns.length) !== null && _config$columns$lengt !== void 0 ? _config$columns$lengt : 0) === 0) {\n return null;\n }\n var {\n columns: groupingColumns = [],\n showConstituents: includeConstituents = true,\n showNonAggregatedColumns = true,\n includeDescriptions = true\n } = config !== null && config !== void 0 ? config : {};\n var {\n aggregations = []\n } = aggregationSettings !== null && aggregationSettings !== void 0 ? aggregationSettings : {};\n var aggregationColumns = aggregations.map(_ref14 => {\n var {\n operation,\n selected,\n invert\n } = _ref14;\n return AggregationUtils.isRollupOperation(operation) ? [] : AggregationUtils.getOperationColumnNames(originalColumns, operation, selected, invert);\n });\n var aggregationMap = {};\n // Aggregation columns should show first, add them first\n for (var i = 0; i < aggregations.length; i += 1) {\n aggregationMap[aggregations[i].operation] = aggregationColumns[i];\n }\n if (showNonAggregatedColumns) {\n // Filter out any column that already has an aggregation or grouping\n var nonAggregatedColumnSet = new Set(originalColumns.map(c => c.name).filter(name => !groupingColumns.includes(name)));\n aggregationColumns.forEach(columns => {\n columns.forEach(name => nonAggregatedColumnSet.delete(name));\n });\n if (nonAggregatedColumnSet.size > 0) {\n var _aggregationMap$Aggre;\n var existingColumns = (_aggregationMap$Aggre = aggregationMap[AggregationOperation.FIRST]) !== null && _aggregationMap$Aggre !== void 0 ? _aggregationMap$Aggre : [];\n aggregationMap[AggregationOperation.FIRST] = [...existingColumns, ...nonAggregatedColumnSet];\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) {\n pendingDataMap.forEach((row, rowIndex) => {\n if (!IrisGridUtils.isValidIndex(rowIndex)) {\n throw new Error(\"Invalid rowIndex \".concat(rowIndex));\n }\n var {\n data\n } = row;\n data.forEach((value, columnIndex) => {\n if (!IrisGridUtils.isValidIndex(columnIndex)) {\n throw new Error(\"Invalid columnIndex \".concat(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(columns, columnIndex) {\n if (columnIndex < columns.length) {\n return columns[columnIndex];\n }\n log.error('Unable to retrieve column', columnIndex, '>=', columns.length);\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(columns, columnName) {\n var column = columns.find(_ref15 => {\n var {\n name\n } = _ref15;\n return name === columnName;\n });\n if (column == null) {\n log.error('Unable to retrieve column by name', columnName, columns.map(_ref16 => {\n var {\n name\n } = _ref16;\n return name;\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(columns, filters) {\n return filters.map(_ref17 => {\n var {\n name,\n filter\n } = _ref17;\n var index = columns.findIndex(column => column.name === name);\n return index < 0 ? null : [index, filter];\n }).filter(filterConfig => filterConfig != null);\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(columnType, filterList) {\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 var combinedText = '';\n for (var i = 0; i < filterList.length; i += 1) {\n var {\n text,\n value,\n operator\n } = filterList[i];\n if (value !== undefined) {\n var 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 var filterText = \"\".concat(symbol).concat(text);\n if (operator === 'startsWith') {\n filterText = \"\".concat(text).concat(symbol);\n }\n if (columnType != null && value !== null && TableUtils.isCharType(columnType)) {\n filterText = \"\".concat(symbol).concat(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(model, groupsParam) {\n var maxDepth = 1;\n var parentMap = new Map();\n var groupMap = new Map();\n\n // Remove any empty groups before parsing\n var groups = groupsParam === null || groupsParam === void 0 ? void 0 : groupsParam.filter(_ref18 => {\n var {\n children\n } = _ref18;\n return children != null && children.length > 0;\n });\n if (groups.length === 0) {\n return {\n groups: [],\n maxDepth,\n parentMap,\n groupMap\n };\n }\n var originalGroupMap = new Map(groups.map(group => [group.name, group]));\n var seenChildren = new Set();\n var addGroup = group => {\n var _group$children;\n var {\n name\n } = group;\n assertNotNull(name, 'Column header group has no name');\n if (model.getColumnIndexByName(name) != null) {\n throw new Error(\"Column header group has same name as column: \".concat(name));\n }\n var existingGroup = groupMap.get(name);\n if (existingGroup) {\n return existingGroup;\n }\n var childIndexes = [];\n var depth = 1;\n if (group.children == null) {\n throw new Error(\"Column header group \".concat(name, \" has no children\"));\n }\n group.children.forEach(childName => {\n if (seenChildren.has(childName)) {\n throw new Error(\"Column group child \".concat(childName, \" specified in multiple groups\"));\n }\n seenChildren.add(childName);\n var childGroup = originalGroupMap.get(childName);\n var childIndex = model.getColumnIndexByName(childName);\n if (childGroup) {\n // Adding another column header group\n var 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 \".concat(childName, \" in group \").concat(name));\n }\n });\n var columnHeaderGroup = new ColumnHeaderGroup(_objectSpread(_objectSpread({}, group), {}, {\n name,\n children: group.children,\n depth,\n childIndexes: childIndexes.flat()\n }));\n groupMap.set(name, columnHeaderGroup);\n (_group$children = group.children) === null || _group$children === void 0 ? void 0 : _group$children.forEach(childName => parentMap.set(childName, columnHeaderGroup));\n maxDepth = Math.max(maxDepth, columnHeaderGroup.depth + 1);\n return columnHeaderGroup;\n };\n var groupNames = new Set();\n groups.forEach(group => {\n var {\n name\n } = group;\n if (groupNames.has(name)) {\n throw new Error(\"Duplicate column group name: \".concat(name));\n }\n groupNames.add(name);\n addGroup(group);\n });\n groupMap.forEach(group => {\n var _parentMap$get;\n group.setParent((_parentMap$get = parentMap.get(group.name)) === null || _parentMap$get === void 0 ? void 0 : _parentMap$get.name);\n });\n return {\n groups: [...groupMap.values()],\n maxDepth,\n groupMap,\n parentMap\n };\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, columnType) {\n if (columnType != null && TableUtils.isCharType(columnType) && value != null && typeof value === 'number') {\n return String.fromCharCode(value);\n }\n if (TableUtils.isDateType(columnType) && isDateWrapper(value)) {\n var date = new Date(value.asDate());\n var offset = date.getTimezoneOffset();\n var offsetDate = new Date(date.getTime() - offset * 60 * 1000);\n var dateText = offsetDate.toISOString();\n var formattedText = dateText.replace('T', ' ').substring(0, 23);\n return formattedText;\n }\n if (value == null) {\n return '';\n }\n return \"\".concat(value);\n }\n constructor(dh) {\n _defineProperty(this, \"dh\", void 0);\n _defineProperty(this, \"tableUtils\", void 0);\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 * @param model The table model to export the state for\n * @param irisGridState The current state of the IrisGrid\n */\n dehydrateIrisGridState(model, irisGridState) {\n var {\n aggregationSettings = {\n aggregations: EMPTY_ARRAY,\n showOnTop: false\n },\n advancedFilters,\n customColumnFormatMap,\n isFilterBarShown,\n metrics,\n quickFilters,\n customColumns,\n conditionalFormats = EMPTY_ARRAY,\n reverseType,\n rollupConfig = undefined,\n showSearchBar,\n searchValue,\n selectDistinctColumns = EMPTY_ARRAY,\n selectedSearchColumns,\n sorts,\n invertSearchColumns,\n pendingDataMap = EMPTY_MAP,\n frozenColumns,\n columnHeaderGroups,\n partitionConfig = undefined\n } = irisGridState;\n assertNotNull(metrics);\n var {\n userColumnWidths,\n userRowHeights\n } = metrics;\n var {\n columns\n } = model;\n var partitionColumns = isPartitionedGridModelProvider(model) ? model.partitionColumns : [];\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].filter(_ref19 => {\n var [columnIndex] = _ref19;\n return columnIndex != null && columnIndex >= 0 && columnIndex < columns.length;\n }).map(_ref20 => {\n var [columnIndex, width] = _ref20;\n return [columns[columnIndex].name, width];\n }),\n userRowHeights: [...userRowHeights],\n customColumns: [...customColumns],\n conditionalFormats: [...conditionalFormats],\n reverseType,\n rollupConfig,\n showSearchBar,\n searchValue,\n selectDistinctColumns: [...selectDistinctColumns],\n selectedSearchColumns,\n invertSearchColumns,\n pendingDataMap: this.dehydratePendingDataMap(columns, pendingDataMap),\n frozenColumns,\n columnHeaderGroups: columnHeaderGroups === null || columnHeaderGroups === void 0 ? void 0 : columnHeaderGroups.map(item => {\n var _item$color;\n return {\n name: item.name,\n children: item.children,\n color: (_item$color = item.color) !== null && _item$color !== void 0 ? _item$color : null\n };\n }),\n partitionConfig: this.dehydratePartitionConfig(partitionColumns, partitionConfig)\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(model, irisGridState) {\n var _ref24, _model$layoutHints;\n var {\n advancedFilters,\n aggregationSettings = {\n aggregations: [],\n showOnTop: false\n },\n customColumnFormatMap,\n isFilterBarShown,\n quickFilters,\n sorts,\n customColumns,\n conditionalFormats,\n userColumnWidths,\n userRowHeights,\n reverseType,\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 var {\n columns,\n formatter\n } = model;\n var partitionColumns = isPartitionedGridModelProvider(model) ? model.partitionColumns : [];\n return {\n advancedFilters: this.hydrateAdvancedFilters(columns, advancedFilters, formatter.timeZone),\n aggregationSettings,\n customColumnFormatMap: new Map(customColumnFormatMap),\n isFilterBarShown,\n quickFilters: this.hydrateQuickFilters(columns, quickFilters, formatter.timeZone),\n sorts: this.hydrateSort(columns, sorts),\n userColumnWidths: new Map(userColumnWidths.map(_ref21 => {\n var [column, width] = _ref21;\n if (typeof column === 'string' || column instanceof String) {\n return [columns.findIndex(_ref22 => {\n var {\n name\n } = _ref22;\n return name === column;\n }), width];\n }\n return [column, width];\n }).filter(_ref23 => {\n var [column] = _ref23;\n return column != null && column >= 0 && column < columns.length;\n })),\n customColumns,\n conditionalFormats,\n userRowHeights: new Map(userRowHeights),\n reverseType,\n rollupConfig,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n invertSearchColumns,\n pendingDataMap: this.hydratePendingDataMap(columns, pendingDataMap),\n frozenColumns,\n columnHeaderGroups: IrisGridUtils.parseColumnHeaderGroups(model, (_ref24 = columnHeaderGroups !== null && columnHeaderGroups !== void 0 ? columnHeaderGroups : (_model$layoutHints = model.layoutHints) === null || _model$layoutHints === void 0 ? void 0 : _model$layoutHints.columnGroups) !== null && _ref24 !== void 0 ? _ref24 : []).groups,\n partitionConfig: this.hydratePartitionConfig(partitionColumns, partitionConfig)\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(columns, savedQuickFilters, timeZone) {\n var importedFilters = savedQuickFilters.map(_ref25 => {\n var [columnIndex, quickFilter] = _ref25;\n var {\n text\n } = quickFilter;\n var filter = null;\n try {\n var 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 return [columnIndex, {\n text,\n filter\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(columns, advancedFilters) {\n return [...advancedFilters].map(_ref26 => {\n var [columnIndex, advancedFilter] = _ref26;\n var column = IrisGridUtils.getColumn(columns, columnIndex);\n assertNotNull(column);\n var options = this.dehydrateAdvancedFilterOptions(column, advancedFilter.options);\n return [columnIndex, {\n options\n }];\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(columns, savedAdvancedFilters, timeZone) {\n var importedFilters = savedAdvancedFilters.map(_ref27 => {\n var [columnIndex, advancedFilter] = _ref27;\n var column = IrisGridUtils.getColumn(columns, columnIndex);\n assertNotNull(column);\n var options = this.hydrateAdvancedFilterOptions(column, advancedFilter.options);\n var filter = null;\n try {\n var columnRetrieved = IrisGridUtils.getColumn(columns, columnIndex);\n if (columnRetrieved != null) {\n filter = this.tableUtils.makeAdvancedFilter(column, options, timeZone);\n }\n } catch (error) {\n log.error('hydrateAdvancedFilters error with', options, error);\n }\n return [columnIndex, {\n options,\n filter\n }];\n });\n return new Map(importedFilters);\n }\n dehydrateAdvancedFilterOptions(column, options) {\n var {\n selectedValues\n } = options,\n otherOptions = _objectWithoutProperties(options, _excluded);\n return _objectSpread({\n selectedValues: selectedValues === null || selectedValues === void 0 ? void 0 : selectedValues.map(value => this.dehydrateValue(value, column === null || column === void 0 ? void 0 : column.type))\n }, otherOptions);\n }\n hydrateAdvancedFilterOptions(column, options) {\n var {\n selectedValues\n } = options,\n otherOptions = _objectWithoutProperties(options, _excluded2);\n return _objectSpread({\n selectedValues: selectedValues === null || selectedValues === void 0 ? void 0 : selectedValues.map(value => this.hydrateValue(value, column === null || column === void 0 ? void 0 : column.type))\n }, otherOptions);\n }\n dehydratePendingDataMap(columns, pendingDataMap) {\n return [...pendingDataMap].map(_ref28 => {\n var [rowIndex, {\n data\n }] = _ref28;\n return [rowIndex, {\n data: [...data].map(_ref29 => {\n var [c, value] = _ref29;\n return [columns[c].name, this.dehydrateValue(value, columns[c].type)];\n })\n }];\n });\n }\n hydratePendingDataMap(columns, pendingDataMap) {\n var columnMap = new Map();\n var getColumnIndex = columnName => {\n if (!columnMap.has(columnName)) {\n columnMap.set(columnName, columns.findIndex(_ref30 => {\n var {\n name\n } = _ref30;\n return name === columnName;\n }));\n }\n return columnMap.get(columnName);\n };\n return new Map(pendingDataMap.map(_ref31 => {\n var [rowIndex, {\n data\n }] = _ref31;\n return [rowIndex, {\n data: new Map(data.map(_ref32 => {\n var _getColumnIndex;\n var [columnName, value] = _ref32;\n var index = getColumnIndex(columnName);\n assertNotNull(index);\n return [(_getColumnIndex = getColumnIndex(columnName)) !== null && _getColumnIndex !== void 0 ? _getColumnIndex : null, this.hydrateValue(value, columns[index].type)];\n }))\n }];\n }));\n }\n dehydratePartitionConfig(partitionColumns, partitionConfig) {\n if (partitionConfig == null) {\n return partitionConfig;\n }\n return _objectSpread(_objectSpread({}, partitionConfig), {}, {\n partitions: partitionConfig.partitions.map((partition, index) => this.dehydrateValue(partition, partitionColumns[index].type))\n });\n }\n hydratePartitionConfig(partitionColumns, partitionConfig) {\n if (partitionConfig == null) {\n return partitionConfig;\n }\n return _objectSpread(_objectSpread({}, partitionConfig), {}, {\n partitions: partitionConfig.partitions.map((partition, index) => this.hydrateValue(partition, partitionColumns[index].type))\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(value, columnType) {\n if (TableUtils.isDateType(columnType)) {\n return this.dehydrateDateTime(value);\n }\n if (TableUtils.isLongType(columnType)) {\n return IrisGridUtils.dehydrateLong(value);\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(value, columnType) {\n if (TableUtils.isDateType(columnType)) {\n return this.hydrateDateTime(value);\n }\n if (TableUtils.isLongType(columnType)) {\n return this.hydrateLong(value);\n }\n return value;\n }\n dehydrateDateTime(value) {\n return value != null ? this.dh.i18n.DateTimeFormat.format(DateUtils.FULL_DATE_FORMAT, value) : null;\n }\n hydrateDateTime(value) {\n return value != null ? this.dh.i18n.DateTimeFormat.parse(DateUtils.FULL_DATE_FORMAT, value) : null;\n }\n hydrateLong(value) {\n return value != null ? this.dh.LongWrapper.ofString(value) : null;\n }\n\n /**\n * Import the saved sorts to apply to the table. Does not actually apply the sort.\n * @param columns The columns the sorts will be applied to\n * @param sorts Exported sort definitions\n * @returns The sorts to apply to the table\n */\n hydrateSort(columns, sorts) {\n var {\n dh\n } = this;\n return sorts.map(sort => {\n var {\n column: columnIndexOrName,\n isAbs,\n direction\n } = sort;\n if (direction === TableUtils.sortDirection.reverse) {\n return dh.Table.reverse();\n }\n var column = typeof columnIndexOrName === 'string' ? IrisGridUtils.getColumnByName(columns, columnIndexOrName) : IrisGridUtils.getColumn(columns, columnIndexOrName);\n if (column != null) {\n var 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 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, filter it out - it will get applied with the `reverseType` property\n // This should only happen when loading a legacy dashboard\n .filter(item => item != null && item.direction !== TableUtils.sortDirection.reverse);\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(table, tableSettings, timeZone) {\n var {\n columns\n } = table;\n var quickFilters = [];\n if (tableSettings.quickFilters) {\n quickFilters = IrisGridUtils.getFiltersFromFilterMap(this.hydrateQuickFilters(columns, tableSettings.quickFilters, timeZone));\n }\n var advancedFilters = [];\n if (tableSettings.advancedFilters) {\n advancedFilters = IrisGridUtils.getFiltersFromFilterMap(this.hydrateAdvancedFilters(columns, tableSettings.advancedFilters, timeZone));\n }\n var inputFilters = this.getFiltersFromInputFilters(columns, tableSettings.inputFilters, timeZone);\n var sorts = [];\n if (tableSettings.sorts) {\n sorts = this.hydrateSort(columns, tableSettings.sorts);\n }\n var filters = [...quickFilters, ...advancedFilters];\n var {\n partitions,\n partitionColumns: partitionColumnNames\n } = tableSettings;\n if (partitions && partitions.length && partitionColumnNames && partitionColumnNames !== null && partitionColumnNames !== void 0 && partitionColumnNames.length) {\n var partitionColumns = partitionColumnNames.map(partitionColumnName => IrisGridUtils.getColumnByName(columns, partitionColumnName));\n for (var 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 var partitionFilter = partitionColumns[i].filter().eq(this.dh.FilterValue.ofString(partitions[i]));\n filters = [partitionFilter, ...filters];\n }\n }\n }\n filters = [...inputFilters, ...filters];\n table.applyFilter(filters);\n table.applySort(sorts);\n }\n getFiltersFromInputFilters(columns) {\n var inputFilters = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var timeZone = arguments.length > 2 ? arguments[2] : undefined;\n return inputFilters.map(_ref33 => {\n var {\n name,\n type,\n value\n } = _ref33;\n var column = columns.find(_ref34 => {\n var {\n name: columnName,\n type: columnType\n } = _ref34;\n return 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 return null;\n }).filter(filter => filter != null);\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) {\n var {\n dh\n } = this;\n var rangeSets = ranges.slice().sort((a, b) => {\n assertNotNull(a.startRow);\n assertNotNull(b.startRow);\n return a.startRow - b.startRow;\n }).map(range => {\n var {\n startRow,\n endRow\n } = range;\n assertNotNull(startRow);\n assertNotNull(endRow);\n return dh.RangeSet.ofRange(startRow, endRow);\n });\n return dh.RangeSet.ofRanges(rangeSets);\n }\n}\nexport default IrisGridUtils;\n//# sourceMappingURL=IrisGridUtils.js.map","function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nclass MissingPartitionError extends Error {\n constructor() {\n super(...arguments);\n _defineProperty(this, \"isMissingPartitionError\", true);\n }\n}\nexport function isMissingPartitionError(err) {\n return (err === null || err === void 0 ? void 0 : err.isMissingPartitionError) === true;\n}\nexport default MissingPartitionError;\n//# sourceMappingURL=MissingPartitionError.js.map"],"names":["getLabelForTextFilter","filterType","Type","getLabelForNumberFilter","getLabelForDateFilter","getLabelForBooleanFilter","AdvancedSettingsType","AdvancedSettingsType$1","DEFAULTS","AdvancedSettings","AggregationOperation","AggregationOperation$1","SELECTABLE_OPTIONS","isRollupOperation","type","isValidOperation","operationType","columnType","TableUtils","filterValidColumns","columns","c","getOperationColumnNames","selected","invert","_ref","name","AggregationUtils","isDeletableGridModel","model","_defineProperty","obj","key","value","_toPropertyKey","arg","_toPrimitive","input","hint","prim","res","log","Log","isColumnHeaderGroup","x","ColumnHeaderGroup","children","color","depth","childIndexes","parent","memoizeOne","movedItems","flattenedIndexes","visibleIndexes","GridUtils","start","end","newChildren","isPartitionedGridModelProvider","isPartitionedGridModel","_excluded","_excluded2","_objectWithoutProperties","source","excluded","target","_objectWithoutPropertiesLoose","i","sourceSymbolKeys","sourceKeys","ownKeys","object","enumerableOnly","keys","symbols","sym","_objectSpread","isPanelStateV1","state","isPanelStateV2","isValidIndex","array","isDateWrapper","IrisGridUtils","gridState","isStuckToBottom","isStuckToRight","movedColumns","movedRows","to","from","_ref2","customColumns","customColumnNames","columnNames","_ref3","_ref4","getIndex","_ref5","irisGridPanelState","isSelectingPartition","partitions","advancedSettings","quickFilters","_ref6","columnIndex","quickFilter","text","sorts","sort","column","isAbs","direction","panelState","inputFilters","irisGridState","advancedFilters","_ref7","_ref8","columnName","filterMap","filters","item","userColumnWidths","_ref9","_ref10","customColumn","oldCustomColumns","oldCustomColumnsNames","oldCustomColumnName","removedColumnNames","_ref11","newFilter","_ref12","newMoves","_loop","removedColumnName","removedColumnIndex","moves","j","move","newMove","fromStart","fromEnd","selectDistinctColumns","tableColumns","left","right","hiddenColumns","modelIndex","startIndex","count","viewportColumns","alwaysFetchColumnNames","columnsToFetch","_ref13","bufferPages","columnsCenter","bufferWidth","columnsLeft","columnsRight","bufferedColumns","ranges","rangeMap","range","rowMapIndex","columnMapIndex","matchColumnRanges","_i","allColumns","columnSet","assertNotNull","_range$startColumn","_range$endColumn","data","rows","result","r","row","rowData","originalColumns","config","aggregationSettings","_config$columns$lengt","_config$columns","groupingColumns","includeConstituents","showNonAggregatedColumns","includeDescriptions","aggregations","aggregationColumns","_ref14","operation","aggregationMap","nonAggregatedColumnSet","_aggregationMap$Aggre","existingColumns","pendingDataMap","rowIndex","_ref15","_ref16","_ref17","filter","index","filterConfig","filterList","a","b","combinedText","operator","symbol","filterText","groupsParam","maxDepth","parentMap","groupMap","groups","_ref18","originalGroupMap","group","seenChildren","addGroup","_group$children","existingGroup","childName","childGroup","childIndex","addedGroup","columnHeaderGroup","groupNames","_parentMap$get","date","offset","offsetDate","dateText","formattedText","dh","bindAllMethods","EMPTY_ARRAY","customColumnFormatMap","isFilterBarShown","metrics","conditionalFormats","reverseType","rollupConfig","showSearchBar","searchValue","selectedSearchColumns","invertSearchColumns","EMPTY_MAP","frozenColumns","columnHeaderGroups","partitionConfig","userRowHeights","partitionColumns","_ref19","_ref20","width","_item$color","_ref24","_model$layoutHints","formatter","_ref21","_ref22","_ref23","savedQuickFilters","timeZone","importedFilters","_ref25","error","_ref26","advancedFilter","options","savedAdvancedFilters","_ref27","columnRetrieved","selectedValues","otherOptions","_ref28","_ref29","columnMap","getColumnIndex","_ref30","_ref31","_ref32","_getColumnIndex","partition","DateUtils","columnIndexOrName","columnSort","table","tableSettings","partitionColumnNames","partitionColumnName","partitionFilter","_ref33","_ref34","e","rangeSets","startRow","endRow","IrisGridUtils$1","MissingPartitionError","isMissingPartitionError","err","MissingPartitionError$1"],"mappings":"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"}
1
+ {"version":3,"file":"MissingPartitionError-1e490bac.js","sources":["../../../filters/dist/Utils.js","../../../iris-grid/dist/sidebar/AdvancedSettingsType.js","../../../iris-grid/dist/sidebar/AdvancedSettings.js","../../../iris-grid/dist/sidebar/aggregations/AggregationOperation.js","../../../iris-grid/dist/sidebar/aggregations/AggregationUtils.js","../../../grid/dist/DeletableGridModel.js","../../../iris-grid/dist/ColumnHeaderGroup.js","../../../iris-grid/dist/PartitionedGridModel.js","../../../iris-grid/dist/IrisGridUtils.js","../../../iris-grid/dist/MissingPartitionError.js"],"sourcesContent":["import { Type } from \"./Type.js\";\nexport function getLabelForTextFilter(filterType) {\n switch (filterType) {\n case Type.eq:\n return 'is exactly';\n case Type.eqIgnoreCase:\n return 'is exactly (ignore case)';\n case Type.notEq:\n return 'is not exactly';\n case Type.notEqIgnoreCase:\n return 'is not exactly (ignore case)';\n case Type.contains:\n return 'contains';\n case Type.notContains:\n return 'does not contain';\n case Type.startsWith:\n return 'starts with';\n case Type.endsWith:\n return 'ends with';\n default:\n throw new Error(\"Unrecognized text filter type \".concat(filterType));\n }\n}\nexport function getLabelForNumberFilter(filterType) {\n switch (filterType) {\n case Type.eq:\n return 'is equal to';\n case Type.notEq:\n return 'is not equal to';\n case Type.greaterThan:\n return 'greater than';\n case Type.greaterThanOrEqualTo:\n return 'greater than or equal to';\n case Type.lessThan:\n return 'less than';\n case Type.lessThanOrEqualTo:\n return 'less than or equal to';\n default:\n throw new Error(\"Unrecognized number filter type \".concat(filterType));\n }\n}\nexport function getLabelForDateFilter(filterType) {\n switch (filterType) {\n case Type.eq:\n return 'date is';\n case Type.notEq:\n return 'date is not';\n case Type.notEqIgnoreCase:\n case Type.greaterThan:\n return 'date is after';\n case Type.greaterThanOrEqualTo:\n return 'date is after or equal';\n case Type.lessThan:\n return 'date is before';\n case Type.lessThanOrEqualTo:\n return 'date is before or equal';\n default:\n throw new Error(\"Unrecognized date filter type \".concat(filterType));\n }\n}\nexport function getLabelForBooleanFilter(filterType) {\n switch (filterType) {\n case Type.isTrue:\n return 'Is True';\n case Type.isFalse:\n return 'Is False';\n case Type.isNull:\n return 'Is Null';\n default:\n throw new Error(\"Unrecognized boolean filter type \".concat(filterType));\n }\n}\n//# sourceMappingURL=Utils.js.map","var AdvancedSettingsType;\n(function (AdvancedSettingsType) {\n AdvancedSettingsType[\"FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS\"] = \"filter-control-change-clears-all-filters\";\n AdvancedSettingsType[\"LINK_CHANGE_CLEARS_ALL_FILTERS\"] = \"link-change-clears-all-filters\";\n})(AdvancedSettingsType || (AdvancedSettingsType = {}));\nexport default AdvancedSettingsType;\n//# sourceMappingURL=AdvancedSettingsType.js.map","import AdvancedSettingsType from \"./AdvancedSettingsType.js\";\nvar DEFAULTS = Object.freeze([[AdvancedSettingsType.FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS, false], [AdvancedSettingsType.LINK_CHANGE_CLEARS_ALL_FILTERS, false]]);\nexport default {\n DEFAULTS\n};\n//# sourceMappingURL=AdvancedSettings.js.map","var AggregationOperation;\n(function (AggregationOperation) {\n AggregationOperation[\"COUNT\"] = \"Count\";\n AggregationOperation[\"MIN\"] = \"Min\";\n AggregationOperation[\"MAX\"] = \"Max\";\n AggregationOperation[\"SUM\"] = \"Sum\";\n AggregationOperation[\"ABS_SUM\"] = \"AbsSum\";\n AggregationOperation[\"VAR\"] = \"Var\";\n AggregationOperation[\"AVG\"] = \"Avg\";\n AggregationOperation[\"STD\"] = \"Std\";\n AggregationOperation[\"FIRST\"] = \"First\";\n AggregationOperation[\"LAST\"] = \"Last\";\n AggregationOperation[\"SKIP\"] = \"Skip\";\n AggregationOperation[\"COUNT_DISTINCT\"] = \"CountDistinct\";\n AggregationOperation[\"DISTINCT\"] = \"Distinct\";\n AggregationOperation[\"UNIQUE\"] = \"Unique\";\n})(AggregationOperation || (AggregationOperation = {}));\nexport default AggregationOperation;\n//# sourceMappingURL=AggregationOperation.js.map","import { TableUtils } from '@deephaven/jsapi-utils';\nimport AggregationOperation from \"./AggregationOperation.js\";\nexport var SELECTABLE_OPTIONS = [AggregationOperation.SUM, AggregationOperation.ABS_SUM, AggregationOperation.MIN, AggregationOperation.MAX, AggregationOperation.VAR, AggregationOperation.AVG, AggregationOperation.STD, AggregationOperation.FIRST, AggregationOperation.LAST, AggregationOperation.COUNT_DISTINCT, AggregationOperation.DISTINCT, AggregationOperation.COUNT, AggregationOperation.UNIQUE];\n\n/**\n * Check if an operation requires a rollup/table grouping\n * @param type The operation to check\n * @returns True if this operation applies to the whole table, false if applies to columns\n */\nexport var isRollupOperation = type => {\n switch (type) {\n // currently no rollup only operations, but there has been in the past\n default:\n return false;\n }\n};\n\n/**\n * Check if an operation is valid against the given column type\n * @param operationType The operation to check\n * @param columnType The column type to check against\n */\nexport var isValidOperation = (operationType, columnType) => {\n switch (operationType) {\n case AggregationOperation.COUNT:\n case AggregationOperation.FIRST:\n case AggregationOperation.LAST:\n case AggregationOperation.COUNT_DISTINCT:\n case AggregationOperation.DISTINCT:\n case AggregationOperation.UNIQUE:\n return true;\n case AggregationOperation.MIN:\n case AggregationOperation.MAX:\n return TableUtils.isNumberType(columnType) || TableUtils.isDateType(columnType) || TableUtils.isTextType(columnType);\n case AggregationOperation.SUM:\n case AggregationOperation.ABS_SUM:\n case AggregationOperation.VAR:\n case AggregationOperation.AVG:\n case AggregationOperation.STD:\n return TableUtils.isNumberType(columnType);\n case AggregationOperation.SKIP:\n return false;\n // No default case - if AggregationOperation is added, we'll get a compile time error\n }\n};\n\nexport var filterValidColumns = (columns, operationType) => columns.filter(c => c.isProxy !== true && isValidOperation(operationType, c.type));\nexport var getOperationColumnNames = (columns, operationType, selected, invert) => filterValidColumns(columns, operationType).map(_ref => {\n var {\n name\n } = _ref;\n return name;\n}).filter(name => selected.includes(name) ? !invert : invert);\nexport default {\n isRollupOperation,\n filterValidColumns,\n getOperationColumnNames\n};\n//# sourceMappingURL=AggregationUtils.js.map","import { AssertionError } from \"./errors/index.js\";\nexport function isDeletableGridModel(model) {\n return (model === null || model === void 0 ? void 0 : model.isDeletable) !== undefined;\n}\nexport function assertIsDeletableGridModel(model) {\n if (!isDeletableGridModel(model)) {\n throw new AssertionError(\"Expected 'model' to be deletable, but received \".concat(model));\n }\n}\n\n/**\n * Model for a deletable grid\n */\n//# sourceMappingURL=DeletableGridModel.js.map","function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport { GridUtils } from '@deephaven/grid';\nimport memoizeOne from 'memoize-one';\nimport Log from '@deephaven/log';\nvar log = Log.module('ColumnHeaderGroup');\nexport function isColumnHeaderGroup(x) {\n return x instanceof ColumnHeaderGroup;\n}\nexport default class ColumnHeaderGroup {\n constructor(_ref) {\n var {\n name,\n children,\n color,\n depth,\n childIndexes,\n parent\n } = _ref;\n _defineProperty(this, \"name\", void 0);\n _defineProperty(this, \"children\", void 0);\n _defineProperty(this, \"depth\", void 0);\n _defineProperty(this, \"parent\", void 0);\n _defineProperty(this, \"color\", void 0);\n _defineProperty(this, \"childIndexes\", void 0);\n _defineProperty(this, \"getVisibleRange\", memoizeOne(movedItems => {\n var flattenedIndexes = this.childIndexes.flat();\n var visibleIndexes = GridUtils.getVisibleIndexes(flattenedIndexes, movedItems);\n var start = Math.min(...visibleIndexes);\n var end = Math.max(...visibleIndexes);\n if (end - start !== flattenedIndexes.length - 1) {\n log.warn(\"Column header group \".concat(this.name, \" is not contiguous\"));\n }\n return [start, end];\n }));\n this.name = name;\n this.children = children;\n this.color = color !== null && color !== void 0 ? color : undefined;\n this.depth = depth;\n this.childIndexes = childIndexes;\n this.parent = parent;\n }\n setParent(parent) {\n this.parent = parent;\n }\n addChildren(children) {\n var newChildren = new Set(this.children.concat(children));\n this.children = [...newChildren];\n }\n removeChildren(children) {\n var newChildren = new Set(this.children);\n children.forEach(name => newChildren.delete(name));\n this.children = [...newChildren];\n }\n get isNew() {\n return this.name.startsWith(ColumnHeaderGroup.NEW_GROUP_PREFIX);\n }\n}\n_defineProperty(ColumnHeaderGroup, \"NEW_GROUP_PREFIX\", ':newGroup');\n//# sourceMappingURL=ColumnHeaderGroup.js.map","export function isPartitionedGridModelProvider(model) {\n return (model === null || model === void 0 ? void 0 : model.isPartitionRequired) !== undefined && (model === null || model === void 0 ? void 0 : model.partitionColumns) !== undefined && (model === null || model === void 0 ? void 0 : model.partitionKeysTable) !== undefined && (model === null || model === void 0 ? void 0 : model.partitionMergedTable) !== undefined && (model === null || model === void 0 ? void 0 : model.partitionTable) !== undefined;\n}\nexport function isPartitionedGridModel(model) {\n return isPartitionedGridModelProvider(model) && model.partitionConfig !== undefined;\n}\n\n/**\n * A grid model that provides key tables and partitions, cannot accept a `PartitionConfig` being set\n */\n\n/**\n * A grid model that can be partitioned on a column\n */\n//# sourceMappingURL=PartitionedGridModel.js.map","var _excluded = [\"selectedValues\"],\n _excluded2 = [\"selectedValues\"];\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport { GridUtils } from '@deephaven/grid';\nimport { DateUtils, TableUtils } from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport { assertNotNull, bindAllMethods, EMPTY_ARRAY, EMPTY_MAP } from '@deephaven/utils';\nimport AggregationUtils from \"./sidebar/aggregations/AggregationUtils.js\";\nimport AggregationOperation from \"./sidebar/aggregations/AggregationOperation.js\";\nimport AdvancedSettings from \"./sidebar/AdvancedSettings.js\";\nimport ColumnHeaderGroup from \"./ColumnHeaderGroup.js\";\nimport { isPartitionedGridModelProvider } from \"./PartitionedGridModel.js\";\nvar log = Log.module('IrisGridUtils');\n\n/** @deprecated Use `DehydratedSort` instead */\n\nexport function isPanelStateV1(state) {\n return state.partition !== undefined;\n}\nexport function isPanelStateV2(state) {\n return Array.isArray(state.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, array) {\n return x >= 0 && x < array.length;\n}\nfunction isDateWrapper(value) {\n return (value === null || value === void 0 ? void 0 : value.asDate) != null;\n}\nclass IrisGridUtils {\n /**\n * Exports the state from Grid component to a JSON stringifiable object\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(model, gridState) {\n var {\n isStuckToBottom,\n isStuckToRight,\n movedColumns,\n movedRows\n } = gridState;\n var {\n columns\n } = model;\n return {\n isStuckToBottom,\n isStuckToRight,\n movedColumns: [...movedColumns].filter(_ref => {\n var {\n to,\n from\n } = _ref;\n return isValidIndex(to, columns) && (typeof from === 'number' && isValidIndex(from, columns) || Array.isArray(from) && isValidIndex(from[0], columns) && isValidIndex(from[1], columns));\n }).map(_ref2 => {\n var {\n to,\n from\n } = _ref2;\n return {\n to: columns[to].name,\n from: Array.isArray(from) ? [columns[from[0]].name, columns[from[1]].name] : columns[from].name\n };\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(model, gridState) {\n var customColumns = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n var {\n isStuckToBottom,\n isStuckToRight,\n movedColumns,\n movedRows\n } = gridState;\n var {\n columns\n } = model;\n var customColumnNames = IrisGridUtils.parseCustomColumnNames(customColumns);\n var columnNames = columns.map(_ref3 => {\n var {\n name\n } = _ref3;\n return name;\n }).concat(customColumnNames);\n return {\n isStuckToBottom,\n isStuckToRight,\n movedColumns: [...movedColumns].map(_ref4 => {\n var {\n to,\n from\n } = _ref4;\n var getIndex = x => typeof x === 'string' ? columnNames.findIndex(name => name === x) : x;\n return {\n to: getIndex(to),\n from: Array.isArray(from) ? [getIndex(from[0]), getIndex(from[1])] : getIndex(from)\n };\n }).filter(_ref5 => {\n var {\n to,\n from\n } = _ref5;\n return isValidIndex(to, columnNames) && (typeof from === 'number' && isValidIndex(from, columnNames) || Array.isArray(from) && isValidIndex(from[0], columnNames) && 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(model, irisGridPanelState) {\n var {\n isSelectingPartition,\n partitions,\n 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(model, irisGridPanelState) {\n var {\n isSelectingPartition,\n advancedSettings\n } = irisGridPanelState;\n var partitions = [];\n if (isPanelStateV2(irisGridPanelState)) {\n partitions = irisGridPanelState.partitions;\n } else if (irisGridPanelState.partition != null) {\n partitions = [irisGridPanelState.partition];\n }\n return {\n isSelectingPartition,\n partitions,\n advancedSettings: new Map([...AdvancedSettings.DEFAULTS, ...advancedSettings])\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(quickFilters) {\n return [...quickFilters].map(_ref6 => {\n var [columnIndex, quickFilter] = _ref6;\n var {\n text\n } = quickFilter;\n return [columnIndex, {\n text\n }];\n });\n }\n static dehydrateLong(value) {\n return value != null ? \"\".concat(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) {\n return sorts.map(sort => {\n var {\n column,\n isAbs,\n direction\n } = 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(panelState) {\n var inputFilters = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var {\n irisGridPanelState,\n irisGridState\n } = panelState;\n var partitions = isPanelStateV2(irisGridPanelState) ? irisGridPanelState.partitions : [irisGridPanelState.partition];\n var {\n advancedFilters,\n quickFilters,\n sorts\n } = irisGridState;\n return {\n advancedFilters,\n inputFilters,\n partitions,\n quickFilters,\n sorts\n };\n }\n static getInputFiltersForColumns(columns) {\n var inputFilters = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n return inputFilters.filter(_ref7 => {\n var {\n name,\n type\n } = _ref7;\n return columns.find(_ref8 => {\n var {\n name: columnName,\n type: columnType\n } = _ref8;\n return columnName === name && columnType === type;\n });\n });\n }\n static getFiltersFromFilterMap(filterMap) {\n var filters = [];\n var keys = Array.from(filterMap.keys());\n for (var i = 0; i < keys.length; i += 1) {\n var key = keys[i];\n var item = filterMap.get(key);\n if ((item === null || item === void 0 ? void 0 : item.filter) != null) {\n filters.push(item.filter);\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) {\n return [...userColumnWidths.entries()].filter(_ref9 => {\n var [, value] = _ref9;\n return value === 0;\n }).map(_ref10 => {\n var [key] = _ref10;\n return key;\n });\n }\n static parseCustomColumnNames(customColumns) {\n return customColumns.map(customColumn => customColumn.split('=')[0]);\n }\n static getRemovedCustomColumnNames(oldCustomColumns, customColumns) {\n var oldCustomColumnsNames = IrisGridUtils.parseCustomColumnNames(oldCustomColumns);\n var customColumnNames = IrisGridUtils.parseCustomColumnNames(customColumns);\n return oldCustomColumnsNames.filter(oldCustomColumnName => !customColumnNames.includes(oldCustomColumnName));\n }\n static removeSortsInColumns(sorts, columnNames) {\n return sorts.filter(sort => !columnNames.includes(sort.column.name));\n }\n static removeFiltersInColumns(columns, filters, removedColumnNames) {\n var columnNames = columns.map(_ref11 => {\n var {\n name\n } = _ref11;\n return name;\n });\n var newFilter = new Map(filters);\n removedColumnNames.forEach(columnName => newFilter.delete(columnNames.indexOf(columnName)));\n return newFilter;\n }\n static removeColumnFromMovedColumns(columns, movedColumns, removedColumnNames) {\n var columnNames = columns.map(_ref12 => {\n var {\n name\n } = _ref12;\n return name;\n });\n var newMoves = [...movedColumns];\n var _loop = function _loop() {\n var removedColumnName = removedColumnNames[i];\n var removedColumnIndex = columnNames.findIndex(name => name === removedColumnName);\n var moves = [];\n for (var j = 0; j < newMoves.length; j += 1) {\n var move = newMoves[j];\n var newMove = _objectSpread({}, move);\n var [fromStart, fromEnd] = Array.isArray(move.from) ? move.from : [move.from, move.from];\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 if (removedColumnIndex <= fromEnd) {\n fromEnd -= 1;\n }\n if (fromStart <= fromEnd && fromStart !== newMove.to) {\n if (fromStart === fromEnd) {\n moves.push(_objectSpread(_objectSpread({}, newMove), {}, {\n from: fromStart\n }));\n } else {\n moves.push(_objectSpread(_objectSpread({}, newMove), {}, {\n from: [fromStart, fromEnd]\n }));\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(removedColumnIndex, removedColumnIndex, [move])[0][0];\n }\n newMoves = moves;\n columnNames.splice(columnNames.findIndex(name => name === removedColumnName), 1);\n };\n for (var i = 0; i < removedColumnNames.length; i += 1) {\n _loop();\n }\n return newMoves;\n }\n static removeColumnsFromSelectDistinctColumns(selectDistinctColumns, removedColumnNames) {\n return selectDistinctColumns.filter(columnName => !removedColumnNames.includes(columnName));\n }\n static getVisibleColumnsInRange(tableColumns, left, right, movedColumns, hiddenColumns) {\n var columns = [];\n for (var i = left; i <= right; i += 1) {\n var modelIndex = GridUtils.getModelIndex(i, movedColumns);\n if (modelIndex >= 0 && modelIndex < tableColumns.length && !hiddenColumns.includes(modelIndex)) {\n columns.push(tableColumns[modelIndex]);\n }\n }\n return columns;\n }\n static getPrevVisibleColumns(tableColumns, startIndex, count, movedColumns, hiddenColumns) {\n var columns = [];\n var i = startIndex;\n while (i >= 0 && columns.length < count) {\n var modelIndex = GridUtils.getModelIndex(i, movedColumns);\n if (modelIndex >= 0 && modelIndex < tableColumns.length && !hiddenColumns.includes(modelIndex)) {\n columns.unshift(tableColumns[modelIndex]);\n }\n i -= 1;\n }\n return columns;\n }\n static getNextVisibleColumns(tableColumns, startIndex, count, movedColumns, hiddenColumns) {\n var columns = [];\n var i = startIndex;\n while (i < tableColumns.length && columns.length < count) {\n var modelIndex = GridUtils.getModelIndex(i, movedColumns);\n if (modelIndex >= 0 && modelIndex < tableColumns.length && !hiddenColumns.includes(modelIndex)) {\n columns.push(tableColumns[modelIndex]);\n }\n i += 1;\n }\n return columns;\n }\n static getColumnsToFetch(tableColumns, viewportColumns, alwaysFetchColumnNames) {\n var columnsToFetch = [...viewportColumns];\n alwaysFetchColumnNames.forEach(columnName => {\n var column = tableColumns.find(_ref13 => {\n var {\n name\n } = _ref13;\n return name === columnName;\n });\n if (column != null && !viewportColumns.includes(column)) {\n columnsToFetch.push(column);\n }\n });\n return columnsToFetch;\n }\n static getModelViewportColumns(columns, left, right, movedColumns) {\n var hiddenColumns = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : [];\n var alwaysFetchColumnNames = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : [];\n var bufferPages = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : 0;\n if (left == null || right == null) {\n return undefined;\n }\n var columnsCenter = IrisGridUtils.getVisibleColumnsInRange(columns, left, right, movedColumns, hiddenColumns);\n var bufferWidth = columnsCenter.length * bufferPages;\n var columnsLeft = IrisGridUtils.getPrevVisibleColumns(columns, left - 1, bufferWidth, movedColumns, hiddenColumns);\n var columnsRight = IrisGridUtils.getNextVisibleColumns(columns, right + 1, bufferWidth, movedColumns, hiddenColumns);\n var bufferedColumns = [...columnsLeft, ...columnsCenter, ...columnsRight];\n return IrisGridUtils.getColumnsToFetch(columns, bufferedColumns, alwaysFetchColumnNames);\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) {\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 var rangeMap = new Map();\n for (var i = 0; i < ranges.length; i += 1) {\n var range = ranges[i];\n var rowMapIndex = \"\".concat(range.startRow, \":\").concat(range.endRow);\n var columnMapIndex = \"\".concat(range.startColumn, \":\").concat(range.endColumn);\n if (!rangeMap.has(rowMapIndex)) {\n rangeMap.set(rowMapIndex, []);\n }\n rangeMap.get(rowMapIndex).push(columnMapIndex);\n }\n var keys = [...rangeMap.keys()];\n var matchColumnRanges = rangeMap.get(keys[0]).sort().join(',');\n for (var _i = 1; _i < keys.length; _i += 1) {\n if (rangeMap.get(keys[_i]).sort().join(',') !== matchColumnRanges) {\n return false;\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) {\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(ranges, allColumns) {\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 var columnSet = new Set();\n for (var i = 0; i < ranges.length; i += 1) {\n var range = ranges[i];\n assertNotNull(range.startColumn);\n assertNotNull(range.endColumn);\n for (var c = (_range$startColumn = range.startColumn) !== null && _range$startColumn !== void 0 ? _range$startColumn : 0; c <= ((_range$endColumn = range.endColumn) !== null && _range$endColumn !== void 0 ? _range$endColumn : allColumns.length - 1); c += 1) {\n var _range$startColumn, _range$endColumn;\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) {\n var {\n columns,\n rows\n } = data;\n var result = [];\n for (var r = 0; r < rows.length; r += 1) {\n var row = rows[r];\n var rowData = [];\n for (var c = 0; c < columns.length; c += 1) {\n var column = columns[c];\n var 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(originalColumns, config, aggregationSettings) {\n var _config$columns$lengt, _config$columns;\n if (((_config$columns$lengt = config === null || config === void 0 ? void 0 : (_config$columns = config.columns) === null || _config$columns === void 0 ? void 0 : _config$columns.length) !== null && _config$columns$lengt !== void 0 ? _config$columns$lengt : 0) === 0) {\n return null;\n }\n var {\n columns: groupingColumns = [],\n showConstituents: includeConstituents = true,\n showNonAggregatedColumns = true,\n includeDescriptions = true\n } = config !== null && config !== void 0 ? config : {};\n var {\n aggregations = []\n } = aggregationSettings !== null && aggregationSettings !== void 0 ? aggregationSettings : {};\n var aggregationColumns = aggregations.map(_ref14 => {\n var {\n operation,\n selected,\n invert\n } = _ref14;\n return AggregationUtils.isRollupOperation(operation) ? [] : AggregationUtils.getOperationColumnNames(originalColumns, operation, selected, invert);\n });\n var aggregationMap = {};\n // Aggregation columns should show first, add them first\n for (var i = 0; i < aggregations.length; i += 1) {\n aggregationMap[aggregations[i].operation] = aggregationColumns[i];\n }\n if (showNonAggregatedColumns) {\n // Filter out any column that already has an aggregation or grouping\n var nonAggregatedColumnSet = new Set(originalColumns.map(c => c.name).filter(name => !groupingColumns.includes(name)));\n aggregationColumns.forEach(columns => {\n columns.forEach(name => nonAggregatedColumnSet.delete(name));\n });\n if (nonAggregatedColumnSet.size > 0) {\n var _aggregationMap$Aggre;\n var existingColumns = (_aggregationMap$Aggre = aggregationMap[AggregationOperation.FIRST]) !== null && _aggregationMap$Aggre !== void 0 ? _aggregationMap$Aggre : [];\n aggregationMap[AggregationOperation.FIRST] = [...existingColumns, ...nonAggregatedColumnSet];\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) {\n pendingDataMap.forEach((row, rowIndex) => {\n if (!IrisGridUtils.isValidIndex(rowIndex)) {\n throw new Error(\"Invalid rowIndex \".concat(rowIndex));\n }\n var {\n data\n } = row;\n data.forEach((value, columnIndex) => {\n if (!IrisGridUtils.isValidIndex(columnIndex)) {\n throw new Error(\"Invalid columnIndex \".concat(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(columns, columnIndex) {\n if (columnIndex < columns.length) {\n return columns[columnIndex];\n }\n log.error('Unable to retrieve column', columnIndex, '>=', columns.length);\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(columns, columnName) {\n var column = columns.find(_ref15 => {\n var {\n name\n } = _ref15;\n return name === columnName;\n });\n if (column == null) {\n log.error('Unable to retrieve column by name', columnName, columns.map(_ref16 => {\n var {\n name\n } = _ref16;\n return name;\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(columns, filters) {\n return filters.map(_ref17 => {\n var {\n name,\n filter\n } = _ref17;\n var index = columns.findIndex(column => column.name === name);\n return index < 0 ? null : [index, filter];\n }).filter(filterConfig => filterConfig != null);\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(columnType, filterList) {\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 var combinedText = '';\n for (var i = 0; i < filterList.length; i += 1) {\n var {\n text,\n value,\n operator\n } = filterList[i];\n if (value !== undefined) {\n var 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 var filterText = \"\".concat(symbol).concat(text);\n if (operator === 'startsWith') {\n filterText = \"\".concat(text).concat(symbol);\n }\n if (columnType != null && value !== null && TableUtils.isCharType(columnType)) {\n filterText = \"\".concat(symbol).concat(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(model, groupsParam) {\n var maxDepth = 1;\n var parentMap = new Map();\n var groupMap = new Map();\n\n // Remove any empty groups before parsing\n var groups = groupsParam === null || groupsParam === void 0 ? void 0 : groupsParam.filter(_ref18 => {\n var {\n children\n } = _ref18;\n return children != null && children.length > 0;\n });\n if (groups.length === 0) {\n return {\n groups: [],\n maxDepth,\n parentMap,\n groupMap\n };\n }\n var originalGroupMap = new Map(groups.map(group => [group.name, group]));\n var seenChildren = new Set();\n var addGroup = group => {\n var _group$children;\n var {\n name\n } = group;\n assertNotNull(name, 'Column header group has no name');\n if (model.getColumnIndexByName(name) != null) {\n throw new Error(\"Column header group has same name as column: \".concat(name));\n }\n var existingGroup = groupMap.get(name);\n if (existingGroup) {\n return existingGroup;\n }\n var childIndexes = [];\n var depth = 1;\n if (group.children == null) {\n throw new Error(\"Column header group \".concat(name, \" has no children\"));\n }\n group.children.forEach(childName => {\n if (seenChildren.has(childName)) {\n throw new Error(\"Column group child \".concat(childName, \" specified in multiple groups\"));\n }\n seenChildren.add(childName);\n var childGroup = originalGroupMap.get(childName);\n var childIndex = model.getColumnIndexByName(childName);\n if (childGroup) {\n // Adding another column header group\n var 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 \".concat(childName, \" in group \").concat(name));\n }\n });\n var columnHeaderGroup = new ColumnHeaderGroup(_objectSpread(_objectSpread({}, group), {}, {\n name,\n children: group.children,\n depth,\n childIndexes: childIndexes.flat()\n }));\n groupMap.set(name, columnHeaderGroup);\n (_group$children = group.children) === null || _group$children === void 0 ? void 0 : _group$children.forEach(childName => parentMap.set(childName, columnHeaderGroup));\n maxDepth = Math.max(maxDepth, columnHeaderGroup.depth + 1);\n return columnHeaderGroup;\n };\n var groupNames = new Set();\n groups.forEach(group => {\n var {\n name\n } = group;\n if (groupNames.has(name)) {\n throw new Error(\"Duplicate column group name: \".concat(name));\n }\n groupNames.add(name);\n addGroup(group);\n });\n groupMap.forEach(group => {\n var _parentMap$get;\n group.setParent((_parentMap$get = parentMap.get(group.name)) === null || _parentMap$get === void 0 ? void 0 : _parentMap$get.name);\n });\n return {\n groups: [...groupMap.values()],\n maxDepth,\n groupMap,\n parentMap\n };\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, columnType) {\n if (columnType != null && TableUtils.isCharType(columnType) && value != null && typeof value === 'number') {\n return String.fromCharCode(value);\n }\n if (TableUtils.isDateType(columnType) && isDateWrapper(value)) {\n var date = new Date(value.asDate());\n var offset = date.getTimezoneOffset();\n var offsetDate = new Date(date.getTime() - offset * 60 * 1000);\n var dateText = offsetDate.toISOString();\n var formattedText = dateText.replace('T', ' ').substring(0, 23);\n return formattedText;\n }\n if (value == null) {\n return '';\n }\n return \"\".concat(value);\n }\n constructor(dh) {\n _defineProperty(this, \"dh\", void 0);\n _defineProperty(this, \"tableUtils\", void 0);\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 * @param model The table model to export the state for\n * @param irisGridState The current state of the IrisGrid\n */\n dehydrateIrisGridState(model, irisGridState) {\n var {\n aggregationSettings = {\n aggregations: EMPTY_ARRAY,\n showOnTop: false\n },\n advancedFilters,\n customColumnFormatMap,\n isFilterBarShown,\n metrics,\n quickFilters,\n customColumns,\n conditionalFormats = EMPTY_ARRAY,\n reverseType,\n rollupConfig = undefined,\n showSearchBar,\n searchValue,\n selectDistinctColumns = EMPTY_ARRAY,\n selectedSearchColumns,\n sorts,\n invertSearchColumns,\n pendingDataMap = EMPTY_MAP,\n frozenColumns,\n columnHeaderGroups,\n partitionConfig = undefined\n } = irisGridState;\n assertNotNull(metrics);\n var {\n userColumnWidths,\n userRowHeights\n } = metrics;\n var {\n columns\n } = model;\n var partitionColumns = isPartitionedGridModelProvider(model) ? model.partitionColumns : [];\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].filter(_ref19 => {\n var [columnIndex] = _ref19;\n return columnIndex != null && columnIndex >= 0 && columnIndex < columns.length;\n }).map(_ref20 => {\n var [columnIndex, width] = _ref20;\n return [columns[columnIndex].name, width];\n }),\n userRowHeights: [...userRowHeights],\n customColumns: [...customColumns],\n conditionalFormats: [...conditionalFormats],\n reverseType,\n rollupConfig,\n showSearchBar,\n searchValue,\n selectDistinctColumns: [...selectDistinctColumns],\n selectedSearchColumns,\n invertSearchColumns,\n pendingDataMap: this.dehydratePendingDataMap(columns, pendingDataMap),\n frozenColumns,\n columnHeaderGroups: columnHeaderGroups === null || columnHeaderGroups === void 0 ? void 0 : columnHeaderGroups.map(item => {\n var _item$color;\n return {\n name: item.name,\n children: item.children,\n color: (_item$color = item.color) !== null && _item$color !== void 0 ? _item$color : null\n };\n }),\n partitionConfig: this.dehydratePartitionConfig(partitionColumns, partitionConfig)\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(model, irisGridState) {\n var _ref24, _model$layoutHints;\n var {\n advancedFilters,\n aggregationSettings = {\n aggregations: [],\n showOnTop: false\n },\n customColumnFormatMap,\n isFilterBarShown,\n quickFilters,\n sorts,\n customColumns,\n conditionalFormats,\n userColumnWidths,\n userRowHeights,\n reverseType,\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 var {\n columns,\n formatter\n } = model;\n var partitionColumns = isPartitionedGridModelProvider(model) ? model.partitionColumns : [];\n return {\n advancedFilters: this.hydrateAdvancedFilters(columns, advancedFilters, formatter.timeZone),\n aggregationSettings,\n customColumnFormatMap: new Map(customColumnFormatMap),\n isFilterBarShown,\n quickFilters: this.hydrateQuickFilters(columns, quickFilters, formatter.timeZone),\n sorts: this.hydrateSort(columns, sorts),\n userColumnWidths: new Map(userColumnWidths.map(_ref21 => {\n var [column, width] = _ref21;\n if (typeof column === 'string' || column instanceof String) {\n return [columns.findIndex(_ref22 => {\n var {\n name\n } = _ref22;\n return name === column;\n }), width];\n }\n return [column, width];\n }).filter(_ref23 => {\n var [column] = _ref23;\n return column != null && column >= 0 && column < columns.length;\n })),\n customColumns,\n conditionalFormats,\n userRowHeights: new Map(userRowHeights),\n reverseType,\n rollupConfig,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n invertSearchColumns,\n pendingDataMap: this.hydratePendingDataMap(columns, pendingDataMap),\n frozenColumns,\n columnHeaderGroups: IrisGridUtils.parseColumnHeaderGroups(model, (_ref24 = columnHeaderGroups !== null && columnHeaderGroups !== void 0 ? columnHeaderGroups : (_model$layoutHints = model.layoutHints) === null || _model$layoutHints === void 0 ? void 0 : _model$layoutHints.columnGroups) !== null && _ref24 !== void 0 ? _ref24 : []).groups,\n partitionConfig: this.hydratePartitionConfig(partitionColumns, partitionConfig)\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(columns, savedQuickFilters, timeZone) {\n var importedFilters = savedQuickFilters.map(_ref25 => {\n var [columnIndex, quickFilter] = _ref25;\n var {\n text\n } = quickFilter;\n var filter = null;\n try {\n var 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 return [columnIndex, {\n text,\n filter\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(columns, advancedFilters) {\n return [...advancedFilters].map(_ref26 => {\n var [columnIndex, advancedFilter] = _ref26;\n var column = IrisGridUtils.getColumn(columns, columnIndex);\n assertNotNull(column);\n var options = this.dehydrateAdvancedFilterOptions(column, advancedFilter.options);\n return [columnIndex, {\n options\n }];\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(columns, savedAdvancedFilters, timeZone) {\n var importedFilters = savedAdvancedFilters.map(_ref27 => {\n var [columnIndex, advancedFilter] = _ref27;\n var column = IrisGridUtils.getColumn(columns, columnIndex);\n assertNotNull(column);\n var options = this.hydrateAdvancedFilterOptions(column, advancedFilter.options);\n var filter = null;\n try {\n var columnRetrieved = IrisGridUtils.getColumn(columns, columnIndex);\n if (columnRetrieved != null) {\n filter = this.tableUtils.makeAdvancedFilter(column, options, timeZone);\n }\n } catch (error) {\n log.error('hydrateAdvancedFilters error with', options, error);\n }\n return [columnIndex, {\n options,\n filter\n }];\n });\n return new Map(importedFilters);\n }\n dehydrateAdvancedFilterOptions(column, options) {\n var {\n selectedValues\n } = options,\n otherOptions = _objectWithoutProperties(options, _excluded);\n return _objectSpread({\n selectedValues: selectedValues === null || selectedValues === void 0 ? void 0 : selectedValues.map(value => this.dehydrateValue(value, column === null || column === void 0 ? void 0 : column.type))\n }, otherOptions);\n }\n hydrateAdvancedFilterOptions(column, options) {\n var {\n selectedValues\n } = options,\n otherOptions = _objectWithoutProperties(options, _excluded2);\n return _objectSpread({\n selectedValues: selectedValues === null || selectedValues === void 0 ? void 0 : selectedValues.map(value => this.hydrateValue(value, column === null || column === void 0 ? void 0 : column.type))\n }, otherOptions);\n }\n dehydratePendingDataMap(columns, pendingDataMap) {\n return [...pendingDataMap].map(_ref28 => {\n var [rowIndex, {\n data\n }] = _ref28;\n return [rowIndex, {\n data: [...data].map(_ref29 => {\n var [c, value] = _ref29;\n return [columns[c].name, this.dehydrateValue(value, columns[c].type)];\n })\n }];\n });\n }\n hydratePendingDataMap(columns, pendingDataMap) {\n var columnMap = new Map();\n var getColumnIndex = columnName => {\n if (!columnMap.has(columnName)) {\n columnMap.set(columnName, columns.findIndex(_ref30 => {\n var {\n name\n } = _ref30;\n return name === columnName;\n }));\n }\n return columnMap.get(columnName);\n };\n return new Map(pendingDataMap.map(_ref31 => {\n var [rowIndex, {\n data\n }] = _ref31;\n return [rowIndex, {\n data: new Map(data.map(_ref32 => {\n var _getColumnIndex;\n var [columnName, value] = _ref32;\n var index = getColumnIndex(columnName);\n assertNotNull(index);\n return [(_getColumnIndex = getColumnIndex(columnName)) !== null && _getColumnIndex !== void 0 ? _getColumnIndex : null, this.hydrateValue(value, columns[index].type)];\n }))\n }];\n }));\n }\n dehydratePartitionConfig(partitionColumns, partitionConfig) {\n if (partitionConfig == null) {\n return partitionConfig;\n }\n return _objectSpread(_objectSpread({}, partitionConfig), {}, {\n partitions: partitionConfig.partitions.map((partition, index) => this.dehydrateValue(partition, partitionColumns[index].type))\n });\n }\n hydratePartitionConfig(partitionColumns, partitionConfig) {\n if (partitionConfig == null) {\n return partitionConfig;\n }\n return _objectSpread(_objectSpread({}, partitionConfig), {}, {\n partitions: partitionConfig.partitions.map((partition, index) => this.hydrateValue(partition, partitionColumns[index].type))\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(value, columnType) {\n if (TableUtils.isDateType(columnType)) {\n return this.dehydrateDateTime(value);\n }\n if (TableUtils.isLongType(columnType)) {\n return IrisGridUtils.dehydrateLong(value);\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(value, columnType) {\n if (TableUtils.isDateType(columnType)) {\n return this.hydrateDateTime(value);\n }\n if (TableUtils.isLongType(columnType)) {\n return this.hydrateLong(value);\n }\n return value;\n }\n dehydrateDateTime(value) {\n return value != null ? this.dh.i18n.DateTimeFormat.format(DateUtils.FULL_DATE_FORMAT, value) : null;\n }\n hydrateDateTime(value) {\n return value != null ? this.dh.i18n.DateTimeFormat.parse(DateUtils.FULL_DATE_FORMAT, value) : null;\n }\n hydrateLong(value) {\n return value != null ? this.dh.LongWrapper.ofString(value) : null;\n }\n\n /**\n * Import the saved sorts to apply to the table. Does not actually apply the sort.\n * @param columns The columns the sorts will be applied to\n * @param sorts Exported sort definitions\n * @returns The sorts to apply to the table\n */\n hydrateSort(columns, sorts) {\n var {\n dh\n } = this;\n return sorts.map(sort => {\n var {\n column: columnIndexOrName,\n isAbs,\n direction\n } = sort;\n if (direction === TableUtils.sortDirection.reverse) {\n return dh.Table.reverse();\n }\n var column = typeof columnIndexOrName === 'string' ? IrisGridUtils.getColumnByName(columns, columnIndexOrName) : IrisGridUtils.getColumn(columns, columnIndexOrName);\n if (column != null) {\n var 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 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, filter it out - it will get applied with the `reverseType` property\n // This should only happen when loading a legacy dashboard\n .filter(item => item != null && item.direction !== TableUtils.sortDirection.reverse);\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(table, tableSettings, timeZone) {\n var {\n columns\n } = table;\n var quickFilters = [];\n if (tableSettings.quickFilters) {\n quickFilters = IrisGridUtils.getFiltersFromFilterMap(this.hydrateQuickFilters(columns, tableSettings.quickFilters, timeZone));\n }\n var advancedFilters = [];\n if (tableSettings.advancedFilters) {\n advancedFilters = IrisGridUtils.getFiltersFromFilterMap(this.hydrateAdvancedFilters(columns, tableSettings.advancedFilters, timeZone));\n }\n var inputFilters = this.getFiltersFromInputFilters(columns, tableSettings.inputFilters, timeZone);\n var sorts = [];\n if (tableSettings.sorts) {\n sorts = this.hydrateSort(columns, tableSettings.sorts);\n }\n var filters = [...quickFilters, ...advancedFilters];\n var {\n partitions,\n partitionColumns: partitionColumnNames\n } = tableSettings;\n if (partitions && partitions.length && partitionColumnNames && partitionColumnNames !== null && partitionColumnNames !== void 0 && partitionColumnNames.length) {\n var partitionColumns = partitionColumnNames.map(partitionColumnName => IrisGridUtils.getColumnByName(columns, partitionColumnName));\n for (var 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 var partitionFilter = partitionColumns[i].filter().eq(this.dh.FilterValue.ofString(partitions[i]));\n filters = [partitionFilter, ...filters];\n }\n }\n }\n filters = [...inputFilters, ...filters];\n table.applyFilter(filters);\n table.applySort(sorts);\n }\n getFiltersFromInputFilters(columns) {\n var inputFilters = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var timeZone = arguments.length > 2 ? arguments[2] : undefined;\n return inputFilters.map(_ref33 => {\n var {\n name,\n type,\n value\n } = _ref33;\n var column = columns.find(_ref34 => {\n var {\n name: columnName,\n type: columnType\n } = _ref34;\n return 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 return null;\n }).filter(filter => filter != null);\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) {\n var {\n dh\n } = this;\n var rangeSets = ranges.slice().sort((a, b) => {\n assertNotNull(a.startRow);\n assertNotNull(b.startRow);\n return a.startRow - b.startRow;\n }).map(range => {\n var {\n startRow,\n endRow\n } = range;\n assertNotNull(startRow);\n assertNotNull(endRow);\n return dh.RangeSet.ofRange(startRow, endRow);\n });\n return dh.RangeSet.ofRanges(rangeSets);\n }\n}\nexport default IrisGridUtils;\n//# sourceMappingURL=IrisGridUtils.js.map","function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nclass MissingPartitionError extends Error {\n constructor() {\n super(...arguments);\n _defineProperty(this, \"isMissingPartitionError\", true);\n }\n}\nexport function isMissingPartitionError(err) {\n return (err === null || err === void 0 ? void 0 : err.isMissingPartitionError) === true;\n}\nexport default MissingPartitionError;\n//# sourceMappingURL=MissingPartitionError.js.map"],"names":["getLabelForTextFilter","filterType","Type","getLabelForNumberFilter","getLabelForDateFilter","getLabelForBooleanFilter","AdvancedSettingsType","AdvancedSettingsType$1","DEFAULTS","AdvancedSettings","AggregationOperation","AggregationOperation$1","SELECTABLE_OPTIONS","isRollupOperation","type","isValidOperation","operationType","columnType","TableUtils","filterValidColumns","columns","c","getOperationColumnNames","selected","invert","_ref","name","AggregationUtils","isDeletableGridModel","model","_defineProperty","obj","key","value","_toPropertyKey","arg","_toPrimitive","input","hint","prim","res","log","Log","isColumnHeaderGroup","x","ColumnHeaderGroup","children","color","depth","childIndexes","parent","memoizeOne","movedItems","flattenedIndexes","visibleIndexes","GridUtils","start","end","newChildren","isPartitionedGridModelProvider","isPartitionedGridModel","_excluded","_excluded2","_objectWithoutProperties","source","excluded","target","_objectWithoutPropertiesLoose","i","sourceSymbolKeys","sourceKeys","ownKeys","object","enumerableOnly","keys","symbols","sym","_objectSpread","isPanelStateV1","state","isPanelStateV2","isValidIndex","array","isDateWrapper","IrisGridUtils","gridState","isStuckToBottom","isStuckToRight","movedColumns","movedRows","to","from","_ref2","customColumns","customColumnNames","columnNames","_ref3","_ref4","getIndex","_ref5","irisGridPanelState","isSelectingPartition","partitions","advancedSettings","quickFilters","_ref6","columnIndex","quickFilter","text","sorts","sort","column","isAbs","direction","panelState","inputFilters","irisGridState","advancedFilters","_ref7","_ref8","columnName","filterMap","filters","item","userColumnWidths","_ref9","_ref10","customColumn","oldCustomColumns","oldCustomColumnsNames","oldCustomColumnName","removedColumnNames","_ref11","newFilter","_ref12","newMoves","_loop","removedColumnName","removedColumnIndex","moves","j","move","newMove","fromStart","fromEnd","selectDistinctColumns","tableColumns","left","right","hiddenColumns","modelIndex","startIndex","count","viewportColumns","alwaysFetchColumnNames","columnsToFetch","_ref13","bufferPages","columnsCenter","bufferWidth","columnsLeft","columnsRight","bufferedColumns","ranges","rangeMap","range","rowMapIndex","columnMapIndex","matchColumnRanges","_i","allColumns","columnSet","assertNotNull","_range$startColumn","_range$endColumn","data","rows","result","r","row","rowData","originalColumns","config","aggregationSettings","_config$columns$lengt","_config$columns","groupingColumns","includeConstituents","showNonAggregatedColumns","includeDescriptions","aggregations","aggregationColumns","_ref14","operation","aggregationMap","nonAggregatedColumnSet","_aggregationMap$Aggre","existingColumns","pendingDataMap","rowIndex","_ref15","_ref16","_ref17","filter","index","filterConfig","filterList","a","b","combinedText","operator","symbol","filterText","groupsParam","maxDepth","parentMap","groupMap","groups","_ref18","originalGroupMap","group","seenChildren","addGroup","_group$children","existingGroup","childName","childGroup","childIndex","addedGroup","columnHeaderGroup","groupNames","_parentMap$get","date","offset","offsetDate","dateText","formattedText","dh","bindAllMethods","EMPTY_ARRAY","customColumnFormatMap","isFilterBarShown","metrics","conditionalFormats","reverseType","rollupConfig","showSearchBar","searchValue","selectedSearchColumns","invertSearchColumns","EMPTY_MAP","frozenColumns","columnHeaderGroups","partitionConfig","userRowHeights","partitionColumns","_ref19","_ref20","width","_item$color","_ref24","_model$layoutHints","formatter","_ref21","_ref22","_ref23","savedQuickFilters","timeZone","importedFilters","_ref25","error","_ref26","advancedFilter","options","savedAdvancedFilters","_ref27","columnRetrieved","selectedValues","otherOptions","_ref28","_ref29","columnMap","getColumnIndex","_ref30","_ref31","_ref32","_getColumnIndex","partition","DateUtils","columnIndexOrName","columnSort","table","tableSettings","partitionColumnNames","partitionColumnName","partitionFilter","_ref33","_ref34","e","rangeSets","startRow","endRow","IrisGridUtils$1","MissingPartitionError","isMissingPartitionError","err","MissingPartitionError$1"],"mappings":"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"}