@deephaven/iris-grid 0.43.0 → 0.44.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (282) hide show
  1. package/dist/AdvancedFilterCreator.css +106 -0
  2. package/dist/AdvancedFilterCreator.css.map +1 -0
  3. package/dist/AdvancedFilterCreator.js +541 -0
  4. package/dist/AdvancedFilterCreator.js.map +1 -0
  5. package/dist/AdvancedFilterCreatorFilterItem.css +9 -0
  6. package/dist/AdvancedFilterCreatorFilterItem.css.map +1 -0
  7. package/dist/AdvancedFilterCreatorFilterItem.js +184 -0
  8. package/dist/AdvancedFilterCreatorFilterItem.js.map +1 -0
  9. package/dist/AdvancedFilterCreatorSelectValue.css +50 -0
  10. package/dist/AdvancedFilterCreatorSelectValue.css.map +1 -0
  11. package/dist/AdvancedFilterCreatorSelectValue.js +301 -0
  12. package/dist/AdvancedFilterCreatorSelectValue.js.map +1 -0
  13. package/dist/AdvancedFilterCreatorSelectValueList.js +272 -0
  14. package/dist/AdvancedFilterCreatorSelectValueList.js.map +1 -0
  15. package/dist/ColumnHeaderGroup.js +61 -0
  16. package/dist/ColumnHeaderGroup.js.map +1 -0
  17. package/dist/ColumnStatistics.css +76 -0
  18. package/dist/ColumnStatistics.css.map +1 -0
  19. package/dist/ColumnStatistics.js +202 -0
  20. package/dist/ColumnStatistics.js.map +1 -0
  21. package/dist/CommonTypes.js +2 -0
  22. package/dist/CommonTypes.js.map +1 -0
  23. package/dist/CrossColumnSearch.css +35 -0
  24. package/dist/CrossColumnSearch.css.map +1 -0
  25. package/dist/CrossColumnSearch.js +199 -0
  26. package/dist/CrossColumnSearch.js.map +1 -0
  27. package/dist/FilterInputField.css +56 -0
  28. package/dist/FilterInputField.css.map +1 -0
  29. package/dist/FilterInputField.js +232 -0
  30. package/dist/FilterInputField.js.map +1 -0
  31. package/dist/GotoRow.css +45 -0
  32. package/dist/GotoRow.css.map +1 -0
  33. package/dist/GotoRow.js +298 -0
  34. package/dist/GotoRow.js.map +1 -0
  35. package/dist/IrisGrid.css +359 -0
  36. package/dist/IrisGrid.css.map +1 -0
  37. package/dist/IrisGrid.js +3651 -0
  38. package/dist/IrisGrid.js.map +1 -0
  39. package/dist/IrisGridBottomBar.css +85 -0
  40. package/dist/IrisGridBottomBar.css.map +1 -0
  41. package/dist/IrisGridBottomBar.js +36 -0
  42. package/dist/IrisGridBottomBar.js.map +1 -0
  43. package/dist/IrisGridCellOverflowModal.css +17 -0
  44. package/dist/IrisGridCellOverflowModal.css.map +1 -0
  45. package/dist/IrisGridCellOverflowModal.js +157 -0
  46. package/dist/IrisGridCellOverflowModal.js.map +1 -0
  47. package/dist/IrisGridCellRendererUtils.js +20 -0
  48. package/dist/IrisGridCellRendererUtils.js.map +1 -0
  49. package/dist/IrisGridCopyHandler.css +64 -0
  50. package/dist/IrisGridCopyHandler.css.map +1 -0
  51. package/dist/IrisGridCopyHandler.js +331 -0
  52. package/dist/IrisGridCopyHandler.js.map +1 -0
  53. package/dist/IrisGridDataBarCellRenderer.js +10 -0
  54. package/dist/IrisGridDataBarCellRenderer.js.map +1 -0
  55. package/dist/IrisGridIcons.js +25 -0
  56. package/dist/IrisGridIcons.js.map +1 -0
  57. package/dist/IrisGridMetricCalculator.js +33 -0
  58. package/dist/IrisGridMetricCalculator.js.map +1 -0
  59. package/dist/IrisGridModel.js +263 -0
  60. package/dist/IrisGridModel.js.map +1 -0
  61. package/dist/IrisGridModelFactory.js +27 -0
  62. package/dist/IrisGridModelFactory.js.map +1 -0
  63. package/dist/IrisGridModelUpdater.js +96 -0
  64. package/dist/IrisGridModelUpdater.js.map +1 -0
  65. package/dist/IrisGridPartitionSelector.css +48 -0
  66. package/dist/IrisGridPartitionSelector.css.map +1 -0
  67. package/dist/IrisGridPartitionSelector.js +198 -0
  68. package/dist/IrisGridPartitionSelector.js.map +1 -0
  69. package/dist/IrisGridProxyModel.js +530 -0
  70. package/dist/IrisGridProxyModel.js.map +1 -0
  71. package/dist/IrisGridRenderer.js +779 -0
  72. package/dist/IrisGridRenderer.js.map +1 -0
  73. package/dist/IrisGridShortcuts.js +59 -0
  74. package/dist/IrisGridShortcuts.js.map +1 -0
  75. package/dist/IrisGridTableModel.js +273 -0
  76. package/dist/IrisGridTableModel.js.map +1 -0
  77. package/dist/IrisGridTableModelTemplate.js +1589 -0
  78. package/dist/IrisGridTableModelTemplate.js.map +1 -0
  79. package/dist/IrisGridTestUtils.js +121 -0
  80. package/dist/IrisGridTestUtils.js.map +1 -0
  81. package/dist/IrisGridTextCellRenderer.js +139 -0
  82. package/dist/IrisGridTextCellRenderer.js.map +1 -0
  83. package/dist/IrisGridTheme.js +96 -0
  84. package/dist/IrisGridTheme.js.map +1 -0
  85. package/dist/IrisGridTheme.module.css +69 -0
  86. package/dist/IrisGridTheme.module.css.map +1 -0
  87. package/dist/IrisGridTreeTableModel.js +145 -0
  88. package/dist/IrisGridTreeTableModel.js.map +1 -0
  89. package/dist/IrisGridUtils.js +1279 -0
  90. package/dist/IrisGridUtils.js.map +1 -0
  91. package/dist/MissingKeyError.js +15 -0
  92. package/dist/MissingKeyError.js.map +1 -0
  93. package/dist/PartitionSelectorSearch.css +22 -0
  94. package/dist/PartitionSelectorSearch.css.map +1 -0
  95. package/dist/PartitionSelectorSearch.js +317 -0
  96. package/dist/PartitionSelectorSearch.js.map +1 -0
  97. package/dist/PendingDataBottomBar.css +13 -0
  98. package/dist/PendingDataBottomBar.css.map +1 -0
  99. package/dist/PendingDataBottomBar.js +98 -0
  100. package/dist/PendingDataBottomBar.js.map +1 -0
  101. package/dist/TableViewportUpdater.js +156 -0
  102. package/dist/TableViewportUpdater.js.map +1 -0
  103. package/dist/ToastBottomBar.js +42 -0
  104. package/dist/ToastBottomBar.js.map +1 -0
  105. package/dist/TreeTableViewportUpdater.js +96 -0
  106. package/dist/TreeTableViewportUpdater.js.map +1 -0
  107. package/dist/declaration.d.js +2 -0
  108. package/dist/declaration.d.js.map +1 -0
  109. package/dist/format-context-menus/CustomFormatAction.css +25 -0
  110. package/dist/format-context-menus/CustomFormatAction.css.map +1 -0
  111. package/dist/format-context-menus/CustomFormatAction.js +132 -0
  112. package/dist/format-context-menus/CustomFormatAction.js.map +1 -0
  113. package/dist/format-context-menus/DateTimeFormatContextMenu.js +53 -0
  114. package/dist/format-context-menus/DateTimeFormatContextMenu.js.map +1 -0
  115. package/dist/format-context-menus/DecimalFormatContextMenu.js +59 -0
  116. package/dist/format-context-menus/DecimalFormatContextMenu.js.map +1 -0
  117. package/dist/format-context-menus/FormatContextMenuUtils.js +63 -0
  118. package/dist/format-context-menus/FormatContextMenuUtils.js.map +1 -0
  119. package/dist/format-context-menus/IntegerFormatContextMenu.js +43 -0
  120. package/dist/format-context-menus/IntegerFormatContextMenu.js.map +1 -0
  121. package/dist/format-context-menus/index.js +4 -0
  122. package/dist/format-context-menus/index.js.map +1 -0
  123. package/dist/index.js +24 -0
  124. package/dist/index.js.map +1 -0
  125. package/dist/key-handlers/ClearFilterKeyHandler.js +21 -0
  126. package/dist/key-handlers/ClearFilterKeyHandler.js.map +1 -0
  127. package/dist/key-handlers/CopyKeyHandler.js +31 -0
  128. package/dist/key-handlers/CopyKeyHandler.js.map +1 -0
  129. package/dist/key-handlers/ReverseKeyHandler.js +32 -0
  130. package/dist/key-handlers/ReverseKeyHandler.js.map +1 -0
  131. package/dist/key-handlers/index.js +4 -0
  132. package/dist/key-handlers/index.js.map +1 -0
  133. package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js +175 -0
  134. package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js.map +1 -0
  135. package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js +139 -0
  136. package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js.map +1 -0
  137. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js +83 -0
  138. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js.map +1 -0
  139. package/dist/mousehandlers/IrisGridContextMenuHandler.css +19 -0
  140. package/dist/mousehandlers/IrisGridContextMenuHandler.css.map +1 -0
  141. package/dist/mousehandlers/IrisGridContextMenuHandler.js +1220 -0
  142. package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -0
  143. package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js +28 -0
  144. package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js.map +1 -0
  145. package/dist/mousehandlers/IrisGridFilterMouseHandler.js +80 -0
  146. package/dist/mousehandlers/IrisGridFilterMouseHandler.js.map +1 -0
  147. package/dist/mousehandlers/IrisGridRowTreeMouseHandler.js +126 -0
  148. package/dist/mousehandlers/IrisGridRowTreeMouseHandler.js.map +1 -0
  149. package/dist/mousehandlers/IrisGridSortMouseHandler.js +46 -0
  150. package/dist/mousehandlers/IrisGridSortMouseHandler.js.map +1 -0
  151. package/dist/mousehandlers/IrisGridTokenMouseHandler.js +151 -0
  152. package/dist/mousehandlers/IrisGridTokenMouseHandler.js.map +1 -0
  153. package/dist/mousehandlers/PendingMouseHandler.js +39 -0
  154. package/dist/mousehandlers/PendingMouseHandler.js.map +1 -0
  155. package/dist/mousehandlers/index.js +11 -0
  156. package/dist/mousehandlers/index.js.map +1 -0
  157. package/dist/sidebar/AdvancedSettings.js +6 -0
  158. package/dist/sidebar/AdvancedSettings.js.map +1 -0
  159. package/dist/sidebar/AdvancedSettingsMenu.js +29 -0
  160. package/dist/sidebar/AdvancedSettingsMenu.js.map +1 -0
  161. package/dist/sidebar/AdvancedSettingsType.js +7 -0
  162. package/dist/sidebar/AdvancedSettingsType.js.map +1 -0
  163. package/dist/sidebar/ChartBuilder.css +56 -0
  164. package/dist/sidebar/ChartBuilder.css.map +1 -0
  165. package/dist/sidebar/ChartBuilder.js +443 -0
  166. package/dist/sidebar/ChartBuilder.js.map +1 -0
  167. package/dist/sidebar/CustomColumnBuilder.css +58 -0
  168. package/dist/sidebar/CustomColumnBuilder.css.map +1 -0
  169. package/dist/sidebar/CustomColumnBuilder.js +384 -0
  170. package/dist/sidebar/CustomColumnBuilder.js.map +1 -0
  171. package/dist/sidebar/CustomColumnInput.d.ts.map +1 -1
  172. package/dist/sidebar/CustomColumnInput.js +91 -0
  173. package/dist/sidebar/CustomColumnInput.js.map +1 -0
  174. package/dist/sidebar/InputEditor.css +35 -0
  175. package/dist/sidebar/InputEditor.css.map +1 -0
  176. package/dist/sidebar/InputEditor.d.ts +4 -2
  177. package/dist/sidebar/InputEditor.d.ts.map +1 -1
  178. package/dist/sidebar/InputEditor.js +180 -0
  179. package/dist/sidebar/InputEditor.js.map +1 -0
  180. package/dist/sidebar/OptionType.js +19 -0
  181. package/dist/sidebar/OptionType.js.map +1 -0
  182. package/dist/sidebar/RollupRows.css +120 -0
  183. package/dist/sidebar/RollupRows.css.map +1 -0
  184. package/dist/sidebar/RollupRows.js +519 -0
  185. package/dist/sidebar/RollupRows.js.map +1 -0
  186. package/dist/sidebar/SelectDistinctBuilder.css +41 -0
  187. package/dist/sidebar/SelectDistinctBuilder.css.map +1 -0
  188. package/dist/sidebar/SelectDistinctBuilder.js +155 -0
  189. package/dist/sidebar/SelectDistinctBuilder.js.map +1 -0
  190. package/dist/sidebar/TableCsvExporter.css +32 -0
  191. package/dist/sidebar/TableCsvExporter.css.map +1 -0
  192. package/dist/sidebar/TableCsvExporter.js +399 -0
  193. package/dist/sidebar/TableCsvExporter.js.map +1 -0
  194. package/dist/sidebar/TableSaver.js +487 -0
  195. package/dist/sidebar/TableSaver.js.map +1 -0
  196. package/dist/sidebar/aggregations/AggregationEdit.css +61 -0
  197. package/dist/sidebar/aggregations/AggregationEdit.css.map +1 -0
  198. package/dist/sidebar/aggregations/AggregationEdit.js +155 -0
  199. package/dist/sidebar/aggregations/AggregationEdit.js.map +1 -0
  200. package/dist/sidebar/aggregations/AggregationOperation.js +19 -0
  201. package/dist/sidebar/aggregations/AggregationOperation.js.map +1 -0
  202. package/dist/sidebar/aggregations/AggregationUtils.js +59 -0
  203. package/dist/sidebar/aggregations/AggregationUtils.js.map +1 -0
  204. package/dist/sidebar/aggregations/Aggregations.css +43 -0
  205. package/dist/sidebar/aggregations/Aggregations.css.map +1 -0
  206. package/dist/sidebar/aggregations/Aggregations.js +178 -0
  207. package/dist/sidebar/aggregations/Aggregations.js.map +1 -0
  208. package/dist/sidebar/aggregations/index.js +2 -0
  209. package/dist/sidebar/aggregations/index.js.map +1 -0
  210. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js +123 -0
  211. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js.map +1 -0
  212. package/dist/sidebar/conditional-formatting/ConditionEditor.js +243 -0
  213. package/dist/sidebar/conditional-formatting/ConditionEditor.js.map +1 -0
  214. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.css +22 -0
  215. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.css.map +1 -0
  216. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js +109 -0
  217. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js.map +1 -0
  218. package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js +18 -0
  219. package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js.map +1 -0
  220. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.css +57 -0
  221. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.css.map +1 -0
  222. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js +150 -0
  223. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +1 -0
  224. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js +635 -0
  225. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js.map +1 -0
  226. package/dist/sidebar/conditional-formatting/RowFormatEditor.js +122 -0
  227. package/dist/sidebar/conditional-formatting/RowFormatEditor.js.map +1 -0
  228. package/dist/sidebar/conditional-formatting/StyleEditor.css +55 -0
  229. package/dist/sidebar/conditional-formatting/StyleEditor.css.map +1 -0
  230. package/dist/sidebar/conditional-formatting/StyleEditor.js +150 -0
  231. package/dist/sidebar/conditional-formatting/StyleEditor.js.map +1 -0
  232. package/dist/sidebar/icons/BarIcon.js +24 -0
  233. package/dist/sidebar/icons/BarIcon.js.map +1 -0
  234. package/dist/sidebar/icons/FormatColumnWhereIcon.js +42 -0
  235. package/dist/sidebar/icons/FormatColumnWhereIcon.js.map +1 -0
  236. package/dist/sidebar/icons/FormatRowWhereIcon.js +36 -0
  237. package/dist/sidebar/icons/FormatRowWhereIcon.js.map +1 -0
  238. package/dist/sidebar/icons/HistogramIcon.js +24 -0
  239. package/dist/sidebar/icons/HistogramIcon.js.map +1 -0
  240. package/dist/sidebar/icons/LineIcon.js +27 -0
  241. package/dist/sidebar/icons/LineIcon.js.map +1 -0
  242. package/dist/sidebar/icons/PieIcon.js +24 -0
  243. package/dist/sidebar/icons/PieIcon.js.map +1 -0
  244. package/dist/sidebar/icons/ScatterIcon.js +74 -0
  245. package/dist/sidebar/icons/ScatterIcon.js.map +1 -0
  246. package/dist/sidebar/icons/index.js +8 -0
  247. package/dist/sidebar/icons/index.js.map +1 -0
  248. package/dist/sidebar/index.d.ts +1 -0
  249. package/dist/sidebar/index.d.ts.map +1 -1
  250. package/dist/sidebar/index.js +19 -0
  251. package/dist/sidebar/index.js.map +1 -0
  252. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.css +68 -0
  253. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.css.map +1 -0
  254. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js +964 -0
  255. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js.map +1 -0
  256. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.js +132 -0
  257. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.js.map +1 -0
  258. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.css +29 -0
  259. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.css.map +1 -0
  260. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.js +188 -0
  261. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.js.map +1 -0
  262. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js +81 -0
  263. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js.map +1 -0
  264. package/dist/sidebar/visibility-ordering-builder/sortable-tree/PointerSensorWithInteraction.js +30 -0
  265. package/dist/sidebar/visibility-ordering-builder/sortable-tree/PointerSensorWithInteraction.js.map +1 -0
  266. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.js +158 -0
  267. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.js.map +1 -0
  268. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeInner.js +146 -0
  269. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeInner.js.map +1 -0
  270. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.js +59 -0
  271. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.js.map +1 -0
  272. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.css +139 -0
  273. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.css.map +1 -0
  274. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.js +44 -0
  275. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.js.map +1 -0
  276. package/dist/sidebar/visibility-ordering-builder/sortable-tree/keyboardCoordinates.js +129 -0
  277. package/dist/sidebar/visibility-ordering-builder/sortable-tree/keyboardCoordinates.js.map +1 -0
  278. package/dist/sidebar/visibility-ordering-builder/sortable-tree/types.js +4 -0
  279. package/dist/sidebar/visibility-ordering-builder/sortable-tree/types.js.map +1 -0
  280. package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js +261 -0
  281. package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js.map +1 -0
  282. package/package.json +15 -15
@@ -0,0 +1,1279 @@
1
+ var _excluded = ["selectedValues"],
2
+ _excluded2 = ["selectedValues"];
3
+ function _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; }
4
+ function _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; }
5
+ function 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; }
6
+ function _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; }
7
+ 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; }
8
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
9
+ function _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); }
10
+ import { GridUtils } from '@deephaven/grid';
11
+ import { DateUtils, TableUtils } from '@deephaven/jsapi-utils';
12
+ import Log from '@deephaven/log';
13
+ import { assertNotNull, EMPTY_ARRAY, EMPTY_MAP } from '@deephaven/utils';
14
+ import AggregationUtils from "./sidebar/aggregations/AggregationUtils.js";
15
+ import AggregationOperation from "./sidebar/aggregations/AggregationOperation.js";
16
+ import AdvancedSettings from "./sidebar/AdvancedSettings.js";
17
+ import ColumnHeaderGroup from "./ColumnHeaderGroup.js";
18
+ var log = Log.module('IrisGridUtils');
19
+ /**
20
+ * Checks if an index is valid for the given array
21
+ * @param x The index to check
22
+ * @param array The array
23
+ * @returns True if the index if valid within the array
24
+ */
25
+ function isValidIndex(x, array) {
26
+ return x >= 0 && x < array.length;
27
+ }
28
+ function isDateWrapper(value) {
29
+ return value.asDate != null;
30
+ }
31
+ class IrisGridUtils {
32
+ /**
33
+ * Exports the state from Grid component to a JSON stringifiable object
34
+ * @param model The table model to export the Grid state for
35
+ * @param gridState The state of the Grid to export
36
+ * @returns An object that can be stringified and imported with {{@link hydrateGridState}}
37
+ */
38
+ static dehydrateGridState(model, gridState) {
39
+ var {
40
+ isStuckToBottom,
41
+ isStuckToRight,
42
+ movedColumns,
43
+ movedRows
44
+ } = gridState;
45
+ var {
46
+ columns
47
+ } = model;
48
+ return {
49
+ isStuckToBottom,
50
+ isStuckToRight,
51
+ movedColumns: [...movedColumns].filter(_ref => {
52
+ var {
53
+ to,
54
+ from
55
+ } = _ref;
56
+ return isValidIndex(to, columns) && (typeof from === 'number' && isValidIndex(from, columns) || Array.isArray(from) && isValidIndex(from[0], columns) && isValidIndex(from[1], columns));
57
+ }).map(_ref2 => {
58
+ var {
59
+ to,
60
+ from
61
+ } = _ref2;
62
+ return {
63
+ to: columns[to].name,
64
+ from: Array.isArray(from) ? [columns[from[0]].name, columns[from[1]].name] : columns[from].name
65
+ };
66
+ }),
67
+ movedRows: [...movedRows]
68
+ };
69
+ }
70
+
71
+ /**
72
+ * Import a state for Grid that was exported with {{@link dehydrateGridState}}
73
+ * @param model The table model to import the state for
74
+ * @param gridState The state of the panel that was saved
75
+ * @returns The gridState props to set on the Grid
76
+ */
77
+ static hydrateGridState(model, gridState) {
78
+ var customColumns = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
79
+ var {
80
+ isStuckToBottom,
81
+ isStuckToRight,
82
+ movedColumns,
83
+ movedRows
84
+ } = gridState;
85
+ var {
86
+ columns
87
+ } = model;
88
+ var customColumnNames = IrisGridUtils.parseCustomColumnNames(customColumns);
89
+ var columnNames = columns.map(_ref3 => {
90
+ var {
91
+ name
92
+ } = _ref3;
93
+ return name;
94
+ }).concat(customColumnNames);
95
+ return {
96
+ isStuckToBottom,
97
+ isStuckToRight,
98
+ movedColumns: [...movedColumns].map(_ref4 => {
99
+ var {
100
+ to,
101
+ from
102
+ } = _ref4;
103
+ var getIndex = x => typeof x === 'string' ? columnNames.findIndex(name => name === x) : x;
104
+ return {
105
+ to: getIndex(to),
106
+ from: Array.isArray(from) ? [getIndex(from[0]), getIndex(from[1])] : getIndex(from)
107
+ };
108
+ }).filter(_ref5 => {
109
+ var {
110
+ to,
111
+ from
112
+ } = _ref5;
113
+ return isValidIndex(to, columnNames) && (typeof from === 'number' && isValidIndex(from, columnNames) || Array.isArray(from) && isValidIndex(from[0], columnNames) && isValidIndex(from[1], columnNames));
114
+ }),
115
+ movedRows: [...movedRows]
116
+ };
117
+ }
118
+
119
+ /**
120
+ * Export the IrisGridPanel state.
121
+ * @param model The table model the state is being dehydrated with
122
+ * @param irisGridPanelState The current IrisGridPanel state
123
+ * @returns The dehydrated IrisGridPanel state
124
+ */
125
+ static dehydrateIrisGridPanelState(model, irisGridPanelState) {
126
+ var {
127
+ isSelectingPartition,
128
+ partition,
129
+ partitionColumn,
130
+ advancedSettings
131
+ } = irisGridPanelState;
132
+
133
+ // Return value will be serialized, should not contain undefined
134
+ return {
135
+ isSelectingPartition,
136
+ partition,
137
+ partitionColumn: partitionColumn != null ? partitionColumn.name : null,
138
+ advancedSettings: [...advancedSettings]
139
+ };
140
+ }
141
+
142
+ /**
143
+ * Import the saved IrisGridPanel state.
144
+ * @param model The model the state is being hydrated with
145
+ * @param irisGridPanelState Exported IrisGridPanel state
146
+ * @returns The state to apply to the IrisGridPanel
147
+ */
148
+ static hydrateIrisGridPanelState(model, irisGridPanelState) {
149
+ var _IrisGridUtils$getCol;
150
+ var {
151
+ isSelectingPartition,
152
+ partition,
153
+ partitionColumn,
154
+ advancedSettings
155
+ } = irisGridPanelState;
156
+ var {
157
+ columns
158
+ } = model;
159
+ return {
160
+ isSelectingPartition,
161
+ partition: partition !== null && partition !== void 0 ? partition : null,
162
+ partitionColumn: partitionColumn != null ? (_IrisGridUtils$getCol = IrisGridUtils.getColumnByName(columns, partitionColumn)) !== null && _IrisGridUtils$getCol !== void 0 ? _IrisGridUtils$getCol : null : null,
163
+ advancedSettings: new Map([...AdvancedSettings.DEFAULTS, ...advancedSettings])
164
+ };
165
+ }
166
+
167
+ /**
168
+ * Export the quick filters to JSON striginfiable object
169
+ * @param quickFilters The quick filters to dehydrate
170
+ * @returns The dehydrated quick filters
171
+ */
172
+ static dehydrateQuickFilters(quickFilters) {
173
+ return [...quickFilters].map(_ref6 => {
174
+ var [columnIndex, quickFilter] = _ref6;
175
+ var {
176
+ text
177
+ } = quickFilter;
178
+ return [columnIndex, {
179
+ text
180
+ }];
181
+ });
182
+ }
183
+ static dehydrateLong(value) {
184
+ return value != null ? "".concat(value) : null;
185
+ }
186
+
187
+ /**
188
+ * Export the sorts from the provided table sorts to JSON stringifiable object
189
+ * @param sorts The table sorts
190
+ * @returns The dehydrated sorts
191
+ */
192
+ static dehydrateSort(sorts) {
193
+ return sorts.map(sort => {
194
+ var {
195
+ column,
196
+ isAbs,
197
+ direction
198
+ } = sort;
199
+ return {
200
+ column: column.name,
201
+ isAbs,
202
+ direction
203
+ };
204
+ });
205
+ }
206
+
207
+ /**
208
+ * Pulls just the table settings from the panel state, eg. filters/sorts
209
+ * @param panelState The dehydrated panel state
210
+ * @returns A dehydrated table settings object, { partition, partitionColumn, advancedFilters, quickFilters, sorts }
211
+ */
212
+ static extractTableSettings(panelState) {
213
+ var inputFilters = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
214
+ var {
215
+ irisGridPanelState,
216
+ irisGridState
217
+ } = panelState;
218
+ var {
219
+ partitionColumn,
220
+ partition
221
+ } = irisGridPanelState;
222
+ var {
223
+ advancedFilters,
224
+ quickFilters,
225
+ sorts
226
+ } = irisGridState;
227
+ return {
228
+ advancedFilters,
229
+ inputFilters,
230
+ partition,
231
+ partitionColumn,
232
+ quickFilters,
233
+ sorts
234
+ };
235
+ }
236
+ static getInputFiltersForColumns(columns) {
237
+ var inputFilters = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
238
+ return inputFilters.filter(_ref7 => {
239
+ var {
240
+ name,
241
+ type
242
+ } = _ref7;
243
+ return columns.find(_ref8 => {
244
+ var {
245
+ name: columnName,
246
+ type: columnType
247
+ } = _ref8;
248
+ return columnName === name && columnType === type;
249
+ });
250
+ });
251
+ }
252
+ static getFiltersFromFilterMap(filterMap) {
253
+ var filters = [];
254
+ var keys = Array.from(filterMap.keys());
255
+ for (var i = 0; i < keys.length; i += 1) {
256
+ var key = keys[i];
257
+ var item = filterMap.get(key);
258
+ if ((item === null || item === void 0 ? void 0 : item.filter) != null) {
259
+ filters.push(item.filter);
260
+ }
261
+ }
262
+ return filters;
263
+ }
264
+
265
+ /**
266
+ * Get array of hidden column indexes
267
+ * @param userColumnWidths Map of user column widths
268
+ * @returns Array of hidden column indexes
269
+ */
270
+ static getHiddenColumns(userColumnWidths) {
271
+ return [...userColumnWidths.entries()].filter(_ref9 => {
272
+ var [, value] = _ref9;
273
+ return value === 0;
274
+ }).map(_ref10 => {
275
+ var [key] = _ref10;
276
+ return key;
277
+ });
278
+ }
279
+ static parseCustomColumnNames(customColumns) {
280
+ return customColumns.map(customColumn => customColumn.split('=')[0]);
281
+ }
282
+ static getRemovedCustomColumnNames(oldCustomColumns, customColumns) {
283
+ var oldCustomColumnsNames = IrisGridUtils.parseCustomColumnNames(oldCustomColumns);
284
+ var customColumnNames = IrisGridUtils.parseCustomColumnNames(customColumns);
285
+ return oldCustomColumnsNames.filter(oldCustomColumnName => !customColumnNames.includes(oldCustomColumnName));
286
+ }
287
+ static removeSortsInColumns(sorts, columnNames) {
288
+ return sorts.filter(sort => !columnNames.includes(sort.column.name));
289
+ }
290
+ static removeFiltersInColumns(columns, filters, removedColumnNames) {
291
+ var columnNames = columns.map(_ref11 => {
292
+ var {
293
+ name
294
+ } = _ref11;
295
+ return name;
296
+ });
297
+ var newFilter = new Map(filters);
298
+ removedColumnNames.forEach(columnName => newFilter.delete(columnNames.indexOf(columnName)));
299
+ return newFilter;
300
+ }
301
+ static removeColumnFromMovedColumns(columns, movedColumns, removedColumnNames) {
302
+ var columnNames = columns.map(_ref12 => {
303
+ var {
304
+ name
305
+ } = _ref12;
306
+ return name;
307
+ });
308
+ var newMoves = [...movedColumns];
309
+ var _loop = function _loop() {
310
+ var removedColumnName = removedColumnNames[i];
311
+ var removedColumnIndex = columnNames.findIndex(name => name === removedColumnName);
312
+ var moves = [];
313
+ for (var j = 0; j < newMoves.length; j += 1) {
314
+ var move = newMoves[j];
315
+ var newMove = _objectSpread({}, move);
316
+ var [fromStart, fromEnd] = Array.isArray(move.from) ? move.from : [move.from, move.from];
317
+ if (removedColumnIndex <= move.to) {
318
+ newMove.to -= 1;
319
+ }
320
+
321
+ // If equal to fromStart, the new fromStart would stay the same
322
+ // It's just the next element in the range which will have the same index after deletion
323
+ if (removedColumnIndex < fromStart) {
324
+ fromStart -= 1;
325
+ }
326
+ if (removedColumnIndex <= fromEnd) {
327
+ fromEnd -= 1;
328
+ }
329
+ if (fromStart <= fromEnd && fromStart !== newMove.to) {
330
+ if (fromStart === fromEnd) {
331
+ moves.push(_objectSpread(_objectSpread({}, newMove), {}, {
332
+ from: fromStart
333
+ }));
334
+ } else {
335
+ moves.push(_objectSpread(_objectSpread({}, newMove), {}, {
336
+ from: [fromStart, fromEnd]
337
+ }));
338
+ }
339
+ }
340
+
341
+ // get the next index of the removed column after the move is applied
342
+ // eslint-disable-next-line prefer-destructuring
343
+ removedColumnIndex = GridUtils.applyItemMoves(removedColumnIndex, removedColumnIndex, [move])[0][0];
344
+ }
345
+ newMoves = moves;
346
+ columnNames.splice(columnNames.findIndex(name => name === removedColumnName), 1);
347
+ };
348
+ for (var i = 0; i < removedColumnNames.length; i += 1) {
349
+ _loop();
350
+ }
351
+ return newMoves;
352
+ }
353
+ static removeColumnsFromSelectDistinctColumns(selectDistinctColumns, removedColumnNames) {
354
+ return selectDistinctColumns.filter(columnName => !removedColumnNames.includes(columnName));
355
+ }
356
+ static getVisibleColumnsInRange(tableColumns, left, right, movedColumns, hiddenColumns) {
357
+ var columns = [];
358
+ for (var i = left; i <= right; i += 1) {
359
+ var modelIndex = GridUtils.getModelIndex(i, movedColumns);
360
+ if (modelIndex >= 0 && modelIndex < tableColumns.length && !hiddenColumns.includes(modelIndex)) {
361
+ columns.push(tableColumns[modelIndex]);
362
+ }
363
+ }
364
+ return columns;
365
+ }
366
+ static getPrevVisibleColumns(tableColumns, startIndex, count, movedColumns, hiddenColumns) {
367
+ var columns = [];
368
+ var i = startIndex;
369
+ while (i >= 0 && columns.length < count) {
370
+ var modelIndex = GridUtils.getModelIndex(i, movedColumns);
371
+ if (modelIndex >= 0 && modelIndex < tableColumns.length && !hiddenColumns.includes(modelIndex)) {
372
+ columns.unshift(tableColumns[modelIndex]);
373
+ }
374
+ i -= 1;
375
+ }
376
+ return columns;
377
+ }
378
+ static getNextVisibleColumns(tableColumns, startIndex, count, movedColumns, hiddenColumns) {
379
+ var columns = [];
380
+ var i = startIndex;
381
+ while (i < tableColumns.length && columns.length < count) {
382
+ var modelIndex = GridUtils.getModelIndex(i, movedColumns);
383
+ if (modelIndex >= 0 && modelIndex < tableColumns.length && !hiddenColumns.includes(modelIndex)) {
384
+ columns.push(tableColumns[modelIndex]);
385
+ }
386
+ i += 1;
387
+ }
388
+ return columns;
389
+ }
390
+ static getColumnsToFetch(tableColumns, viewportColumns, alwaysFetchColumnNames) {
391
+ var columnsToFetch = [...viewportColumns];
392
+ alwaysFetchColumnNames.forEach(columnName => {
393
+ var column = tableColumns.find(_ref13 => {
394
+ var {
395
+ name
396
+ } = _ref13;
397
+ return name === columnName;
398
+ });
399
+ if (column != null && !viewportColumns.includes(column)) {
400
+ columnsToFetch.push(column);
401
+ }
402
+ });
403
+ return columnsToFetch;
404
+ }
405
+ static getModelViewportColumns(columns, left, right, movedColumns) {
406
+ var hiddenColumns = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : [];
407
+ var alwaysFetchColumnNames = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : [];
408
+ var bufferPages = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : 0;
409
+ if (left == null || right == null) {
410
+ return null;
411
+ }
412
+ var columnsCenter = IrisGridUtils.getVisibleColumnsInRange(columns, left, right, movedColumns, hiddenColumns);
413
+ var bufferWidth = columnsCenter.length * bufferPages;
414
+ var columnsLeft = IrisGridUtils.getPrevVisibleColumns(columns, left - 1, bufferWidth, movedColumns, hiddenColumns);
415
+ var columnsRight = IrisGridUtils.getNextVisibleColumns(columns, right + 1, bufferWidth, movedColumns, hiddenColumns);
416
+ var bufferedColumns = [...columnsLeft, ...columnsCenter, ...columnsRight];
417
+ return IrisGridUtils.getColumnsToFetch(columns, bufferedColumns, alwaysFetchColumnNames);
418
+ }
419
+
420
+ /**
421
+ * Validate whether the ranges passed in are valid to take a snapshot from.
422
+ * Multiple selections are valid if all of the selected rows have the same columns selected.
423
+ *
424
+ * @param ranges The ranges to validate
425
+ * @returns True if the ranges are valid, false otherwise
426
+ */
427
+ static isValidSnapshotRanges(ranges) {
428
+ if (ranges == null || ranges.length === 0) {
429
+ return false;
430
+ }
431
+
432
+ // To verify all the rows selected have the same set of columns selected, build a map with string representations
433
+ // of each range.
434
+ var rangeMap = new Map();
435
+ for (var i = 0; i < ranges.length; i += 1) {
436
+ var range = ranges[i];
437
+ var rowMapIndex = "".concat(range.startRow, ":").concat(range.endRow);
438
+ var columnMapIndex = "".concat(range.startColumn, ":").concat(range.endColumn);
439
+ if (!rangeMap.has(rowMapIndex)) {
440
+ rangeMap.set(rowMapIndex, []);
441
+ }
442
+ rangeMap.get(rowMapIndex).push(columnMapIndex);
443
+ }
444
+ var keys = [...rangeMap.keys()];
445
+ var matchColumnRanges = rangeMap.get(keys[0]).sort().join(',');
446
+ for (var _i = 1; _i < keys.length; _i += 1) {
447
+ if (rangeMap.get(keys[_i]).sort().join(',') !== matchColumnRanges) {
448
+ return false;
449
+ }
450
+ }
451
+ return true;
452
+ }
453
+
454
+ /**
455
+ * Check if the provided value is a valid table index
456
+ * @param value A value to check if it's a valid table index
457
+ */
458
+ static isValidIndex(value) {
459
+ if (!Number.isInteger(value)) {
460
+ return false;
461
+ }
462
+ if (!(typeof value === 'number')) {
463
+ return false;
464
+ }
465
+ return value >= 0;
466
+ }
467
+
468
+ /**
469
+ * Returns all columns used in any of the ranges provided
470
+ * @param ranges The model ranges to get columns for
471
+ * @param allColumns All the columns to pull from
472
+ * @returns The columns selected in the range
473
+ */
474
+ static columnsFromRanges(ranges, allColumns) {
475
+ if (ranges == null || ranges.length === 0) {
476
+ return [];
477
+ }
478
+ if (ranges[0].startColumn === null && ranges[0].endColumn === null) {
479
+ // Snapshot of all the columns
480
+ return [...allColumns];
481
+ }
482
+ var columnSet = new Set();
483
+ for (var i = 0; i < ranges.length; i += 1) {
484
+ var range = ranges[i];
485
+ assertNotNull(range.startColumn);
486
+ assertNotNull(range.endColumn);
487
+ 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) {
488
+ var _range$startColumn, _range$endColumn;
489
+ columnSet.add(c);
490
+ }
491
+ }
492
+ return [...columnSet].map(c => allColumns[c]);
493
+ }
494
+
495
+ /**
496
+ * Transforms an iris data snapshot into a simple data matrix
497
+ * @param data The Iris formatted table data
498
+ * @returns A matrix of the values of the data
499
+ */
500
+ static snapshotDataToMatrix(data) {
501
+ var {
502
+ columns,
503
+ rows
504
+ } = data;
505
+ var result = [];
506
+ for (var r = 0; r < rows.length; r += 1) {
507
+ var row = rows[r];
508
+ var rowData = [];
509
+ for (var c = 0; c < columns.length; c += 1) {
510
+ var column = columns[c];
511
+ var value = row.get(column);
512
+ rowData.push(value);
513
+ }
514
+ result.push(rowData);
515
+ }
516
+ return result;
517
+ }
518
+
519
+ /**
520
+ * Hydrate model rollup config
521
+ * @param originalColumns Original model columns
522
+ * @param config Dehydrated rollup config
523
+ * @param aggregationSettings Aggregation settings
524
+ * @returns Rollup config for the model
525
+ */
526
+ static getModelRollupConfig(originalColumns, config, aggregationSettings) {
527
+ var _config$columns$lengt, _config$columns;
528
+ 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) {
529
+ return null;
530
+ }
531
+ var {
532
+ columns: groupingColumns = [],
533
+ showConstituents: includeConstituents = true,
534
+ showNonAggregatedColumns = true,
535
+ includeDescriptions = true
536
+ } = config !== null && config !== void 0 ? config : {};
537
+ var {
538
+ aggregations = []
539
+ } = aggregationSettings !== null && aggregationSettings !== void 0 ? aggregationSettings : {};
540
+ var aggregationColumns = aggregations.map(_ref14 => {
541
+ var {
542
+ operation,
543
+ selected,
544
+ invert
545
+ } = _ref14;
546
+ return AggregationUtils.isRollupOperation(operation) ? [] : AggregationUtils.getOperationColumnNames(originalColumns, operation, selected, invert);
547
+ });
548
+ var aggregationMap = {};
549
+ // Aggregation columns should show first, add them first
550
+ for (var i = 0; i < aggregations.length; i += 1) {
551
+ aggregationMap[aggregations[i].operation] = aggregationColumns[i];
552
+ }
553
+ if (showNonAggregatedColumns) {
554
+ // Filter out any column that already has an aggregation or grouping
555
+ var nonAggregatedColumnSet = new Set(originalColumns.map(c => c.name).filter(name => !groupingColumns.includes(name)));
556
+ aggregationColumns.forEach(columns => {
557
+ columns.forEach(name => nonAggregatedColumnSet.delete(name));
558
+ });
559
+ if (nonAggregatedColumnSet.size > 0) {
560
+ var _aggregationMap$Aggre;
561
+ var existingColumns = (_aggregationMap$Aggre = aggregationMap[AggregationOperation.FIRST]) !== null && _aggregationMap$Aggre !== void 0 ? _aggregationMap$Aggre : [];
562
+ aggregationMap[AggregationOperation.FIRST] = [...existingColumns, ...nonAggregatedColumnSet];
563
+ }
564
+ }
565
+ return {
566
+ groupingColumns,
567
+ includeConstituents,
568
+ includeDescriptions,
569
+ aggregations: aggregationMap
570
+ };
571
+ }
572
+
573
+ /**
574
+ * @param pendingDataMap Map of pending data
575
+ * @returns A map with the errors in the pending data
576
+ */
577
+ static getPendingErrors(pendingDataMap) {
578
+ pendingDataMap.forEach((row, rowIndex) => {
579
+ if (!IrisGridUtils.isValidIndex(rowIndex)) {
580
+ throw new Error("Invalid rowIndex ".concat(rowIndex));
581
+ }
582
+ var {
583
+ data
584
+ } = row;
585
+ data.forEach((value, columnIndex) => {
586
+ if (!IrisGridUtils.isValidIndex(columnIndex)) {
587
+ throw new Error("Invalid columnIndex ".concat(columnIndex));
588
+ }
589
+ });
590
+ });
591
+ }
592
+
593
+ /**
594
+ * Retrieves a column from the provided array at the index, or `null` and logs an error if it's invalid
595
+ *
596
+ * @param columns The columns to get the column from
597
+ * @param columnIndex The column index to get
598
+ */
599
+ static getColumn(columns, columnIndex) {
600
+ if (columnIndex < columns.length) {
601
+ return columns[columnIndex];
602
+ }
603
+ log.error('Unable to retrieve column', columnIndex, '>=', columns.length);
604
+ return null;
605
+ }
606
+
607
+ /**
608
+ * Retrieves a column from the provided array matching the name, or `null` and logs an error if not found
609
+ * @param columns The columns to get the column from
610
+ * @param columnName The column name to retrieve
611
+ */
612
+ static getColumnByName(columns, columnName) {
613
+ var column = columns.find(_ref15 => {
614
+ var {
615
+ name
616
+ } = _ref15;
617
+ return name === columnName;
618
+ });
619
+ if (column == null) {
620
+ log.error('Unable to retrieve column by name', columnName, columns.map(_ref16 => {
621
+ var {
622
+ name
623
+ } = _ref16;
624
+ return name;
625
+ }));
626
+ }
627
+ return column;
628
+ }
629
+
630
+ /**
631
+ * Get filter configs with column names changed to indexes, exclude missing columns
632
+ * @param columns The columns to get column indexes from
633
+ * @param filters Filter configs
634
+ * @returns Updated filter configs with column names changed to indexes
635
+ */
636
+ static changeFilterColumnNamesToIndexes(columns, filters) {
637
+ return filters.map(_ref17 => {
638
+ var {
639
+ name,
640
+ filter
641
+ } = _ref17;
642
+ var index = columns.findIndex(column => column.name === name);
643
+ return index < 0 ? null : [index, filter];
644
+ }).filter(filterConfig => filterConfig != null);
645
+ }
646
+
647
+ /**
648
+ * @param columnType The column type that the filters will be applied to.
649
+ * @param filterList The list of filters to be combined.
650
+ * @returns The combination of the filters in filterList as text.
651
+ */
652
+ static combineFiltersFromList(columnType, filterList) {
653
+ filterList.sort((a, b) => {
654
+ // move all 'equals' comparisons to end of list
655
+ if (a.operator === 'eq' && b.operator !== 'eq') {
656
+ return 1;
657
+ }
658
+ if (a.operator !== 'eq' && b.operator === 'eq') {
659
+ return -1;
660
+ }
661
+ return a.startColumnIndex - b.startColumnIndex;
662
+ });
663
+ var combinedText = '';
664
+ for (var i = 0; i < filterList.length; i += 1) {
665
+ var {
666
+ text,
667
+ value,
668
+ operator
669
+ } = filterList[i];
670
+ if (value !== undefined) {
671
+ var symbol = '';
672
+ if (operator !== undefined) {
673
+ if (value == null && operator === 'eq') {
674
+ symbol = '=';
675
+ } else if (operator !== 'eq') {
676
+ if (operator === 'startsWith' || operator === 'endsWith') {
677
+ symbol = '*';
678
+ } else {
679
+ symbol = TableUtils.getFilterOperatorString(operator);
680
+ }
681
+ }
682
+ }
683
+ var filterText = "".concat(symbol).concat(text);
684
+ if (operator === 'startsWith') {
685
+ filterText = "".concat(text).concat(symbol);
686
+ }
687
+ if (columnType != null && value !== null && TableUtils.isCharType(columnType)) {
688
+ filterText = "".concat(symbol).concat(String.fromCharCode(parseInt(text, 10)));
689
+ }
690
+ if (i !== 0) {
691
+ combinedText += operator === 'eq' ? ' || ' : ' && ';
692
+ }
693
+ combinedText += filterText;
694
+ }
695
+ }
696
+ return combinedText;
697
+ }
698
+
699
+ /**
700
+ * Parses the column header groups provided.
701
+ * If undefined, should provide default groups such as from layoutHints
702
+ *
703
+ * @returns Object containing groups array, max depth, map of name to parent group, and map of name to group
704
+ */
705
+ static parseColumnHeaderGroups(model, groupsParam) {
706
+ var maxDepth = 1;
707
+ var parentMap = new Map();
708
+ var groupMap = new Map();
709
+
710
+ // Remove any empty groups before parsing
711
+ var groups = groupsParam === null || groupsParam === void 0 ? void 0 : groupsParam.filter(_ref18 => {
712
+ var {
713
+ children
714
+ } = _ref18;
715
+ return children.length > 0;
716
+ });
717
+ if (groups.length === 0) {
718
+ return {
719
+ groups: [],
720
+ maxDepth,
721
+ parentMap,
722
+ groupMap
723
+ };
724
+ }
725
+ var originalGroupMap = new Map(groups.map(group => [group.name, group]));
726
+ var seenChildren = new Set();
727
+ var addGroup = group => {
728
+ var {
729
+ name
730
+ } = group;
731
+ if (model.getColumnIndexByName(name) != null) {
732
+ throw new Error("Column header group has same name as column: ".concat(name));
733
+ }
734
+ var existingGroup = groupMap.get(name);
735
+ if (existingGroup) {
736
+ return existingGroup;
737
+ }
738
+ var childIndexes = [];
739
+ var depth = 1;
740
+ group.children.forEach(childName => {
741
+ if (seenChildren.has(childName)) {
742
+ throw new Error("Column group child ".concat(childName, " specified in multiple groups"));
743
+ }
744
+ seenChildren.add(childName);
745
+ var childGroup = originalGroupMap.get(childName);
746
+ var childIndex = model.getColumnIndexByName(childName);
747
+ if (childGroup) {
748
+ // Adding another column header group
749
+ var addedGroup = addGroup(childGroup);
750
+ childIndexes.push(...addedGroup.childIndexes);
751
+ depth = Math.max(depth, addedGroup.depth + 1);
752
+ } else if (childIndex != null) {
753
+ // Adding a base column
754
+ childIndexes.push(childIndex);
755
+ depth = Math.max(depth, 1);
756
+ } else {
757
+ throw new Error("Unknown child ".concat(childName, " in group ").concat(name));
758
+ }
759
+ });
760
+ var columnHeaderGroup = new ColumnHeaderGroup(_objectSpread(_objectSpread({}, group), {}, {
761
+ depth,
762
+ childIndexes: childIndexes.flat()
763
+ }));
764
+ groupMap.set(name, columnHeaderGroup);
765
+ group.children.forEach(childName => parentMap.set(childName, columnHeaderGroup));
766
+ maxDepth = Math.max(maxDepth, columnHeaderGroup.depth + 1);
767
+ return columnHeaderGroup;
768
+ };
769
+ var groupNames = new Set();
770
+ groups.forEach(group => {
771
+ var {
772
+ name
773
+ } = group;
774
+ if (groupNames.has(name)) {
775
+ throw new Error("Duplicate column group name: ".concat(name));
776
+ }
777
+ groupNames.add(name);
778
+ addGroup(group);
779
+ });
780
+ groupMap.forEach(group => {
781
+ var _parentMap$get;
782
+ group.setParent((_parentMap$get = parentMap.get(group.name)) === null || _parentMap$get === void 0 ? void 0 : _parentMap$get.name);
783
+ });
784
+ return {
785
+ groups: [...groupMap.values()],
786
+ maxDepth,
787
+ groupMap,
788
+ parentMap
789
+ };
790
+ }
791
+
792
+ /**
793
+ * @param value The value of the cell in a column
794
+ * @param columnType The type of the column
795
+ * @returns The value of the cell converted to text
796
+ */
797
+ static convertValueToText(value, columnType) {
798
+ if (columnType != null && TableUtils.isCharType(columnType) && value != null && typeof value === 'number') {
799
+ return String.fromCharCode(value);
800
+ }
801
+ if (TableUtils.isDateType(columnType) && isDateWrapper(value)) {
802
+ var date = new Date(value.asDate());
803
+ var offset = date.getTimezoneOffset();
804
+ var offsetDate = new Date(date.getTime() - offset * 60 * 1000);
805
+ var dateText = offsetDate.toISOString();
806
+ var formattedText = dateText.replace('T', ' ').substring(0, 23);
807
+ return formattedText;
808
+ }
809
+ if (value == null) {
810
+ return '';
811
+ }
812
+ return "".concat(value);
813
+ }
814
+ constructor(dh) {
815
+ _defineProperty(this, "dh", void 0);
816
+ _defineProperty(this, "tableUtils", void 0);
817
+ this.dh = dh;
818
+ this.tableUtils = new TableUtils(dh);
819
+ }
820
+
821
+ /**
822
+ * Exports the state from IrisGrid to a JSON stringifiable object
823
+ * @param model The table model to export the state for
824
+ * @param irisGridState The current state of the IrisGrid
825
+ */
826
+ dehydrateIrisGridState(model, irisGridState) {
827
+ var {
828
+ aggregationSettings = {
829
+ aggregations: EMPTY_ARRAY,
830
+ showOnTop: false
831
+ },
832
+ advancedFilters,
833
+ customColumnFormatMap,
834
+ isFilterBarShown,
835
+ metrics,
836
+ quickFilters,
837
+ customColumns,
838
+ conditionalFormats = EMPTY_ARRAY,
839
+ reverseType,
840
+ rollupConfig = undefined,
841
+ showSearchBar,
842
+ searchValue,
843
+ selectDistinctColumns = EMPTY_ARRAY,
844
+ selectedSearchColumns,
845
+ sorts,
846
+ invertSearchColumns,
847
+ pendingDataMap = EMPTY_MAP,
848
+ frozenColumns,
849
+ columnHeaderGroups
850
+ } = irisGridState;
851
+ assertNotNull(metrics);
852
+ var {
853
+ userColumnWidths,
854
+ userRowHeights
855
+ } = metrics;
856
+ var {
857
+ columns
858
+ } = model;
859
+ // Return value will be serialized, should not contain undefined
860
+ return {
861
+ advancedFilters: this.dehydrateAdvancedFilters(columns, advancedFilters),
862
+ aggregationSettings,
863
+ customColumnFormatMap: [...customColumnFormatMap],
864
+ isFilterBarShown,
865
+ quickFilters: IrisGridUtils.dehydrateQuickFilters(quickFilters),
866
+ sorts: IrisGridUtils.dehydrateSort(sorts),
867
+ userColumnWidths: [...userColumnWidths].filter(_ref19 => {
868
+ var [columnIndex] = _ref19;
869
+ return columnIndex != null && columnIndex >= 0 && columnIndex < columns.length;
870
+ }).map(_ref20 => {
871
+ var [columnIndex, width] = _ref20;
872
+ return [columns[columnIndex].name, width];
873
+ }),
874
+ userRowHeights: [...userRowHeights],
875
+ customColumns: [...customColumns],
876
+ conditionalFormats: [...conditionalFormats],
877
+ reverseType,
878
+ rollupConfig,
879
+ showSearchBar,
880
+ searchValue,
881
+ selectDistinctColumns: [...selectDistinctColumns],
882
+ selectedSearchColumns,
883
+ invertSearchColumns,
884
+ pendingDataMap: this.dehydratePendingDataMap(columns, pendingDataMap),
885
+ frozenColumns,
886
+ columnHeaderGroups: columnHeaderGroups === null || columnHeaderGroups === void 0 ? void 0 : columnHeaderGroups.map(item => ({
887
+ name: item.name,
888
+ children: item.children,
889
+ color: item.color
890
+ }))
891
+ };
892
+ }
893
+
894
+ /**
895
+ * Import a state for IrisGrid that was exported with {{@link dehydrateIrisGridState}}
896
+ * @param model The table model to import the state with
897
+ * @param irisGridState The saved IrisGrid state
898
+ */
899
+ hydrateIrisGridState(model, irisGridState) {
900
+ var _ref24, _model$layoutHints;
901
+ var {
902
+ advancedFilters,
903
+ aggregationSettings = {
904
+ aggregations: [],
905
+ showOnTop: false
906
+ },
907
+ customColumnFormatMap,
908
+ isFilterBarShown,
909
+ quickFilters,
910
+ sorts,
911
+ customColumns,
912
+ conditionalFormats,
913
+ userColumnWidths,
914
+ userRowHeights,
915
+ reverseType,
916
+ rollupConfig = undefined,
917
+ showSearchBar,
918
+ searchValue,
919
+ selectDistinctColumns,
920
+ selectedSearchColumns,
921
+ invertSearchColumns = true,
922
+ pendingDataMap = [],
923
+ frozenColumns,
924
+ columnHeaderGroups
925
+ } = irisGridState;
926
+ var {
927
+ columns,
928
+ formatter
929
+ } = model;
930
+ return {
931
+ advancedFilters: this.hydrateAdvancedFilters(columns, advancedFilters, formatter.timeZone),
932
+ aggregationSettings,
933
+ customColumnFormatMap: new Map(customColumnFormatMap),
934
+ isFilterBarShown,
935
+ quickFilters: this.hydrateQuickFilters(columns, quickFilters, formatter.timeZone),
936
+ sorts: this.hydrateSort(columns, sorts),
937
+ userColumnWidths: new Map(userColumnWidths.map(_ref21 => {
938
+ var [column, width] = _ref21;
939
+ if (typeof column === 'string' || column instanceof String) {
940
+ return [columns.findIndex(_ref22 => {
941
+ var {
942
+ name
943
+ } = _ref22;
944
+ return name === column;
945
+ }), width];
946
+ }
947
+ return [column, width];
948
+ }).filter(_ref23 => {
949
+ var [column] = _ref23;
950
+ return column != null && column >= 0 && column < columns.length;
951
+ })),
952
+ customColumns,
953
+ conditionalFormats,
954
+ userRowHeights: new Map(userRowHeights),
955
+ reverseType,
956
+ rollupConfig,
957
+ showSearchBar,
958
+ searchValue,
959
+ selectDistinctColumns,
960
+ selectedSearchColumns,
961
+ invertSearchColumns,
962
+ pendingDataMap: this.hydratePendingDataMap(columns, pendingDataMap),
963
+ frozenColumns,
964
+ 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
965
+ };
966
+ }
967
+
968
+ /**
969
+ * Import the saved quick filters to apply to the columns. Does not actually apply the filters.
970
+ * @param columns The columns the filters will be applied to
971
+ * @param savedQuickFilters Exported quick filters definitions
972
+ * @param timeZone The time zone to make this value in if it is a date type. E.g. America/New_York
973
+ * @returns The quick filters to apply to the columns
974
+ */
975
+ hydrateQuickFilters(columns, savedQuickFilters, timeZone) {
976
+ var importedFilters = savedQuickFilters.map(_ref25 => {
977
+ var [columnIndex, quickFilter] = _ref25;
978
+ var {
979
+ text
980
+ } = quickFilter;
981
+ var filter = null;
982
+ try {
983
+ var column = IrisGridUtils.getColumn(columns, columnIndex);
984
+ if (column != null) {
985
+ filter = this.tableUtils.makeQuickFilter(column, text, timeZone);
986
+ }
987
+ } catch (error) {
988
+ log.error('hydrateQuickFilters error with', text, error);
989
+ }
990
+ return [columnIndex, {
991
+ text,
992
+ filter
993
+ }];
994
+ });
995
+ return new Map(importedFilters);
996
+ }
997
+
998
+ /**
999
+ * Export the advanced filters from the provided columns to JSON striginfiable object
1000
+ * @param columns The columns for the filters
1001
+ * @param advancedFilters The advanced filters to dehydrate
1002
+ * @returns The dehydrated advanced filters
1003
+ */
1004
+ dehydrateAdvancedFilters(columns, advancedFilters) {
1005
+ return [...advancedFilters].map(_ref26 => {
1006
+ var [columnIndex, advancedFilter] = _ref26;
1007
+ var column = IrisGridUtils.getColumn(columns, columnIndex);
1008
+ assertNotNull(column);
1009
+ var options = this.dehydrateAdvancedFilterOptions(column, advancedFilter.options);
1010
+ return [columnIndex, {
1011
+ options
1012
+ }];
1013
+ });
1014
+ }
1015
+
1016
+ /**
1017
+ * Import the saved advanced filters to apply to the columns. Does not actually apply the filters.
1018
+ * @param columns The columns the filters will be applied to
1019
+ * @param savedAdvancedFilters Exported advanced filters definitions
1020
+ * @param timeZone The time zone to make this filter in if it is a date type. E.g. America/New_York
1021
+ * @returns The advanced filters to apply to the columns
1022
+ */
1023
+ hydrateAdvancedFilters(columns, savedAdvancedFilters, timeZone) {
1024
+ var importedFilters = savedAdvancedFilters.map(_ref27 => {
1025
+ var [columnIndex, advancedFilter] = _ref27;
1026
+ var column = IrisGridUtils.getColumn(columns, columnIndex);
1027
+ assertNotNull(column);
1028
+ var options = this.hydrateAdvancedFilterOptions(column, advancedFilter.options);
1029
+ var filter = null;
1030
+ try {
1031
+ var columnRetrieved = IrisGridUtils.getColumn(columns, columnIndex);
1032
+ if (columnRetrieved != null) {
1033
+ filter = this.tableUtils.makeAdvancedFilter(column, options, timeZone);
1034
+ }
1035
+ } catch (error) {
1036
+ log.error('hydrateAdvancedFilters error with', options, error);
1037
+ }
1038
+ return [columnIndex, {
1039
+ options,
1040
+ filter
1041
+ }];
1042
+ });
1043
+ return new Map(importedFilters);
1044
+ }
1045
+ dehydrateAdvancedFilterOptions(column, options) {
1046
+ var {
1047
+ selectedValues
1048
+ } = options,
1049
+ otherOptions = _objectWithoutProperties(options, _excluded);
1050
+ return _objectSpread({
1051
+ selectedValues: selectedValues === null || selectedValues === void 0 ? void 0 : selectedValues.map(value => this.dehydrateValue(value, column === null || column === void 0 ? void 0 : column.type))
1052
+ }, otherOptions);
1053
+ }
1054
+ hydrateAdvancedFilterOptions(column, options) {
1055
+ var {
1056
+ selectedValues
1057
+ } = options,
1058
+ otherOptions = _objectWithoutProperties(options, _excluded2);
1059
+ return _objectSpread({
1060
+ selectedValues: selectedValues === null || selectedValues === void 0 ? void 0 : selectedValues.map(value => this.hydrateValue(value, column === null || column === void 0 ? void 0 : column.type))
1061
+ }, otherOptions);
1062
+ }
1063
+ dehydratePendingDataMap(columns, pendingDataMap) {
1064
+ return [...pendingDataMap].map(_ref28 => {
1065
+ var [rowIndex, {
1066
+ data
1067
+ }] = _ref28;
1068
+ return [rowIndex, {
1069
+ data: [...data].map(_ref29 => {
1070
+ var [c, value] = _ref29;
1071
+ return [columns[c].name, this.dehydrateValue(value, columns[c].type)];
1072
+ })
1073
+ }];
1074
+ });
1075
+ }
1076
+ hydratePendingDataMap(columns, pendingDataMap) {
1077
+ var columnMap = new Map();
1078
+ var getColumnIndex = columnName => {
1079
+ if (!columnMap.has(columnName)) {
1080
+ columnMap.set(columnName, columns.findIndex(_ref30 => {
1081
+ var {
1082
+ name
1083
+ } = _ref30;
1084
+ return name === columnName;
1085
+ }));
1086
+ }
1087
+ return columnMap.get(columnName);
1088
+ };
1089
+ return new Map(pendingDataMap.map(_ref31 => {
1090
+ var [rowIndex, {
1091
+ data
1092
+ }] = _ref31;
1093
+ return [rowIndex, {
1094
+ data: new Map(data.map(_ref32 => {
1095
+ var _getColumnIndex;
1096
+ var [columnName, value] = _ref32;
1097
+ var index = getColumnIndex(columnName);
1098
+ assertNotNull(index);
1099
+ return [(_getColumnIndex = getColumnIndex(columnName)) !== null && _getColumnIndex !== void 0 ? _getColumnIndex : null, this.hydrateValue(value, columns[index].type)];
1100
+ }))
1101
+ }];
1102
+ }));
1103
+ }
1104
+
1105
+ /**
1106
+ * Dehydrates/serializes a value for storage.
1107
+ * @param value The value to dehydrate
1108
+ * @param columnType The column type
1109
+ */
1110
+ dehydrateValue(value, columnType) {
1111
+ if (TableUtils.isDateType(columnType)) {
1112
+ return this.dehydrateDateTime(value);
1113
+ }
1114
+ if (TableUtils.isLongType(columnType)) {
1115
+ return IrisGridUtils.dehydrateLong(value);
1116
+ }
1117
+ return value;
1118
+ }
1119
+
1120
+ /**
1121
+ * Hydrate a value from it's serialized state
1122
+ * @param value The dehydrated value that needs to be hydrated
1123
+ * @param columnType The type of column
1124
+ */
1125
+ hydrateValue(value, columnType) {
1126
+ if (TableUtils.isDateType(columnType)) {
1127
+ return this.hydrateDateTime(value);
1128
+ }
1129
+ if (TableUtils.isLongType(columnType)) {
1130
+ return this.hydrateLong(value);
1131
+ }
1132
+ return value;
1133
+ }
1134
+ dehydrateDateTime(value) {
1135
+ return value != null ? this.dh.i18n.DateTimeFormat.format(DateUtils.FULL_DATE_FORMAT, value) : null;
1136
+ }
1137
+ hydrateDateTime(value) {
1138
+ return value != null ? this.dh.i18n.DateTimeFormat.parse(DateUtils.FULL_DATE_FORMAT, value) : null;
1139
+ }
1140
+ hydrateLong(value) {
1141
+ return value != null ? this.dh.LongWrapper.ofString(value) : null;
1142
+ }
1143
+
1144
+ /**
1145
+ * Import the saved sorts to apply to the table. Does not actually apply the sort.
1146
+ * @param columns The columns the sorts will be applied to
1147
+ * @param sorts Exported sort definitions
1148
+ * @returns The sorts to apply to the table
1149
+ */
1150
+ hydrateSort(columns, sorts) {
1151
+ var {
1152
+ dh
1153
+ } = this;
1154
+ return sorts.map(sort => {
1155
+ var {
1156
+ column: columnIndexOrName,
1157
+ isAbs,
1158
+ direction
1159
+ } = sort;
1160
+ if (direction === TableUtils.sortDirection.reverse) {
1161
+ return dh.Table.reverse();
1162
+ }
1163
+ var column = typeof columnIndexOrName === 'string' ? IrisGridUtils.getColumnByName(columns, columnIndexOrName) : IrisGridUtils.getColumn(columns, columnIndexOrName);
1164
+ if (column != null) {
1165
+ var columnSort = column.sort();
1166
+ if (isAbs) {
1167
+ columnSort = columnSort.abs();
1168
+ }
1169
+ if (direction === TableUtils.sortDirection.descending) {
1170
+ columnSort = columnSort.desc();
1171
+ } else {
1172
+ columnSort = columnSort.asc();
1173
+ }
1174
+ return columnSort;
1175
+ }
1176
+ return null;
1177
+ })
1178
+ // If we can't find the column any more, it's null, filter it out
1179
+ // If the item is a reverse sort item, filter it out - it will get applied with the `reverseType` property
1180
+ // This should only happen when loading a legacy dashboard
1181
+ .filter(item => item != null && item.direction !== TableUtils.sortDirection.reverse);
1182
+ }
1183
+
1184
+ /**
1185
+ * Applies the passed in table settings directly to the provided table
1186
+ * @param table The table to apply the settings to
1187
+ * @param tableSettings Dehydrated table settings extracted with `extractTableSettings`
1188
+ * @param timeZone The time zone to make this value in if it is a date type. E.g. America/New_York
1189
+ */
1190
+ applyTableSettings(table, tableSettings, timeZone) {
1191
+ var {
1192
+ columns
1193
+ } = table;
1194
+ var quickFilters = [];
1195
+ if (tableSettings.quickFilters) {
1196
+ quickFilters = IrisGridUtils.getFiltersFromFilterMap(this.hydrateQuickFilters(columns, tableSettings.quickFilters, timeZone));
1197
+ }
1198
+ var advancedFilters = [];
1199
+ if (tableSettings.advancedFilters) {
1200
+ advancedFilters = IrisGridUtils.getFiltersFromFilterMap(this.hydrateAdvancedFilters(columns, tableSettings.advancedFilters, timeZone));
1201
+ }
1202
+ var inputFilters = this.getFiltersFromInputFilters(columns, tableSettings.inputFilters, timeZone);
1203
+ var sorts = [];
1204
+ if (tableSettings.sorts) {
1205
+ sorts = this.hydrateSort(columns, tableSettings.sorts);
1206
+ }
1207
+ var filters = [...quickFilters, ...advancedFilters];
1208
+ var {
1209
+ partition,
1210
+ partitionColumn: partitionColumnName
1211
+ } = tableSettings;
1212
+ if (partition != null && partitionColumnName != null) {
1213
+ var partitionColumn = IrisGridUtils.getColumnByName(columns, partitionColumnName);
1214
+ if (partitionColumn) {
1215
+ var partitionFilter = partitionColumn.filter().eq(this.dh.FilterValue.ofString(partition));
1216
+ filters = [partitionFilter, ...filters];
1217
+ }
1218
+ }
1219
+ filters = [...inputFilters, ...filters];
1220
+ table.applyFilter(filters);
1221
+ table.applySort(sorts);
1222
+ }
1223
+ getFiltersFromInputFilters(columns) {
1224
+ var inputFilters = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
1225
+ var timeZone = arguments.length > 2 ? arguments[2] : undefined;
1226
+ return inputFilters.map(_ref33 => {
1227
+ var {
1228
+ name,
1229
+ type,
1230
+ value
1231
+ } = _ref33;
1232
+ var column = columns.find(_ref34 => {
1233
+ var {
1234
+ name: columnName,
1235
+ type: columnType
1236
+ } = _ref34;
1237
+ return columnName === name && columnType === type;
1238
+ });
1239
+ if (column) {
1240
+ try {
1241
+ return this.tableUtils.makeQuickFilter(column, value, timeZone);
1242
+ } catch (e) {
1243
+ // It may be unable to create it because user hasn't completed their input
1244
+ log.debug('Unable to create input filter', e);
1245
+ }
1246
+ }
1247
+ return null;
1248
+ }).filter(filter => filter != null);
1249
+ }
1250
+
1251
+ /**
1252
+ * Get the dh.RangeSet representation of the provided ranges.
1253
+ * Ranges are sorted prior to creating the RangeSet. Only the rows are taken into account,
1254
+ * RangeSet does not have an option for columns.
1255
+ * @param ranges The ranges to get the range set for
1256
+ * @returns The rangeset for the provided ranges
1257
+ */
1258
+ rangeSetFromRanges(ranges) {
1259
+ var {
1260
+ dh
1261
+ } = this;
1262
+ var rangeSets = ranges.slice().sort((a, b) => {
1263
+ assertNotNull(a.startRow);
1264
+ assertNotNull(b.startRow);
1265
+ return a.startRow - b.startRow;
1266
+ }).map(range => {
1267
+ var {
1268
+ startRow,
1269
+ endRow
1270
+ } = range;
1271
+ assertNotNull(startRow);
1272
+ assertNotNull(endRow);
1273
+ return dh.RangeSet.ofRange(startRow, endRow);
1274
+ });
1275
+ return dh.RangeSet.ofRanges(rangeSets);
1276
+ }
1277
+ }
1278
+ export default IrisGridUtils;
1279
+ //# sourceMappingURL=IrisGridUtils.js.map