@deephaven/iris-grid 0.24.1-hierarchical-table.0 → 0.25.1-beta.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 (106) hide show
  1. package/dist/ColumnHeaderGroup.d.ts +10 -3
  2. package/dist/ColumnHeaderGroup.d.ts.map +1 -1
  3. package/dist/ColumnHeaderGroup.js +20 -1
  4. package/dist/ColumnHeaderGroup.js.map +1 -1
  5. package/dist/IrisGrid.css.map +1 -1
  6. package/dist/IrisGrid.d.ts +6 -3
  7. package/dist/IrisGrid.d.ts.map +1 -1
  8. package/dist/IrisGrid.js +42 -25
  9. package/dist/IrisGrid.js.map +1 -1
  10. package/dist/IrisGridModel.d.ts +9 -2
  11. package/dist/IrisGridModel.d.ts.map +1 -1
  12. package/dist/IrisGridModel.js +0 -13
  13. package/dist/IrisGridModel.js.map +1 -1
  14. package/dist/IrisGridModelUpdater.d.ts +3 -1
  15. package/dist/IrisGridModelUpdater.d.ts.map +1 -1
  16. package/dist/IrisGridModelUpdater.js +5 -1
  17. package/dist/IrisGridModelUpdater.js.map +1 -1
  18. package/dist/IrisGridProxyModel.d.ts +7 -2
  19. package/dist/IrisGridProxyModel.d.ts.map +1 -1
  20. package/dist/IrisGridProxyModel.js +16 -4
  21. package/dist/IrisGridProxyModel.js.map +1 -1
  22. package/dist/IrisGridTableModel.d.ts +1 -1
  23. package/dist/IrisGridTableModel.d.ts.map +1 -1
  24. package/dist/IrisGridTableModel.js.map +1 -1
  25. package/dist/IrisGridTableModelTemplate.d.ts +18 -9
  26. package/dist/IrisGridTableModelTemplate.d.ts.map +1 -1
  27. package/dist/IrisGridTableModelTemplate.js +143 -165
  28. package/dist/IrisGridTableModelTemplate.js.map +1 -1
  29. package/dist/IrisGridTestUtils.d.ts +8 -2
  30. package/dist/IrisGridTestUtils.d.ts.map +1 -1
  31. package/dist/IrisGridTestUtils.js +9 -4
  32. package/dist/IrisGridTestUtils.js.map +1 -1
  33. package/dist/IrisGridTheme.module.css.map +1 -1
  34. package/dist/IrisGridUtils.d.ts +16 -2
  35. package/dist/IrisGridUtils.d.ts.map +1 -1
  36. package/dist/IrisGridUtils.js +151 -48
  37. package/dist/IrisGridUtils.js.map +1 -1
  38. package/dist/index.d.ts +1 -0
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +1 -0
  41. package/dist/index.js.map +1 -1
  42. package/dist/sidebar/index.d.ts +1 -1
  43. package/dist/sidebar/index.d.ts.map +1 -1
  44. package/dist/sidebar/index.js +1 -1
  45. package/dist/sidebar/index.js.map +1 -1
  46. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.css +68 -0
  47. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.css.map +1 -0
  48. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.d.ts +156 -0
  49. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.d.ts.map +1 -0
  50. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js +962 -0
  51. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js.map +1 -0
  52. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.d.ts +26 -0
  53. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.d.ts.map +1 -0
  54. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.js +130 -0
  55. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.js.map +1 -0
  56. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.css +29 -0
  57. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.css.map +1 -0
  58. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.d.ts +13 -0
  59. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.d.ts.map +1 -0
  60. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.js +160 -0
  61. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.js.map +1 -0
  62. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.d.ts +19 -0
  63. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.d.ts.map +1 -0
  64. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js +81 -0
  65. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js.map +1 -0
  66. package/dist/sidebar/visibility-ordering-builder/sortable-tree/PointerSensorWithInteraction.d.ts +13 -0
  67. package/dist/sidebar/visibility-ordering-builder/sortable-tree/PointerSensorWithInteraction.d.ts.map +1 -0
  68. package/dist/sidebar/visibility-ordering-builder/sortable-tree/PointerSensorWithInteraction.js +28 -0
  69. package/dist/sidebar/visibility-ordering-builder/sortable-tree/PointerSensorWithInteraction.js.map +1 -0
  70. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.d.ts +18 -0
  71. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.d.ts.map +1 -0
  72. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.js +156 -0
  73. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.js.map +1 -0
  74. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeInner.d.ts +19 -0
  75. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeInner.d.ts.map +1 -0
  76. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeInner.js +144 -0
  77. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeInner.js.map +1 -0
  78. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.d.ts +7 -0
  79. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.d.ts.map +1 -0
  80. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.js +57 -0
  81. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.js.map +1 -0
  82. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.css +139 -0
  83. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.css.map +1 -0
  84. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.d.ts +36 -0
  85. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.d.ts.map +1 -0
  86. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.js +44 -0
  87. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.js.map +1 -0
  88. package/dist/sidebar/visibility-ordering-builder/sortable-tree/keyboardCoordinates.d.ts +4 -0
  89. package/dist/sidebar/visibility-ordering-builder/sortable-tree/keyboardCoordinates.d.ts.map +1 -0
  90. package/dist/sidebar/visibility-ordering-builder/sortable-tree/keyboardCoordinates.js +127 -0
  91. package/dist/sidebar/visibility-ordering-builder/sortable-tree/keyboardCoordinates.js.map +1 -0
  92. package/dist/sidebar/visibility-ordering-builder/sortable-tree/types.d.ts +20 -0
  93. package/dist/sidebar/visibility-ordering-builder/sortable-tree/types.d.ts.map +1 -0
  94. package/dist/sidebar/visibility-ordering-builder/sortable-tree/types.js +4 -0
  95. package/dist/sidebar/visibility-ordering-builder/sortable-tree/types.js.map +1 -0
  96. package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.d.ts +55 -0
  97. package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.d.ts.map +1 -0
  98. package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js +265 -0
  99. package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js.map +1 -0
  100. package/package.json +20 -16
  101. package/dist/sidebar/VisibilityOrderingBuilder.css +0 -156
  102. package/dist/sidebar/VisibilityOrderingBuilder.css.map +0 -1
  103. package/dist/sidebar/VisibilityOrderingBuilder.d.ts +0 -79
  104. package/dist/sidebar/VisibilityOrderingBuilder.d.ts.map +0 -1
  105. package/dist/sidebar/VisibilityOrderingBuilder.js +0 -753
  106. package/dist/sidebar/VisibilityOrderingBuilder.js.map +0 -1
@@ -13,6 +13,7 @@ import { assertNotNull } from '@deephaven/utils';
13
13
  import AggregationUtils from "./sidebar/aggregations/AggregationUtils.js";
14
14
  import AggregationOperation from "./sidebar/aggregations/AggregationOperation.js";
15
15
  import AdvancedSettings from "./sidebar/AdvancedSettings.js";
16
+ import ColumnHeaderGroup from "./ColumnHeaderGroup.js";
16
17
  var log = Log.module('IrisGridUtils');
17
18
  /**
18
19
  * Checks if an index is valid for the given array
@@ -138,7 +139,8 @@ class IrisGridUtils {
138
139
  sorts,
139
140
  invertSearchColumns,
140
141
  pendingDataMap = new Map(),
141
- frozenColumns
142
+ frozenColumns,
143
+ columnHeaderGroups
142
144
  } = irisGridState;
143
145
  assertNotNull(metrics);
144
146
  var {
@@ -173,7 +175,12 @@ class IrisGridUtils {
173
175
  selectedSearchColumns,
174
176
  invertSearchColumns,
175
177
  pendingDataMap: IrisGridUtils.dehydratePendingDataMap(columns, pendingDataMap),
176
- frozenColumns
178
+ frozenColumns,
179
+ columnHeaderGroups: columnHeaderGroups === null || columnHeaderGroups === void 0 ? void 0 : columnHeaderGroups.map(item => ({
180
+ name: item.name,
181
+ children: item.children,
182
+ color: item.color
183
+ }))
177
184
  };
178
185
  }
179
186
 
@@ -183,6 +190,7 @@ class IrisGridUtils {
183
190
  * @param irisGridState The saved IrisGrid state
184
191
  */
185
192
  static hydrateIrisGridState(model, irisGridState) {
193
+ var _ref11, _model$layoutHints;
186
194
  var {
187
195
  advancedFilters,
188
196
  aggregationSettings = {
@@ -205,7 +213,8 @@ class IrisGridUtils {
205
213
  selectedSearchColumns,
206
214
  invertSearchColumns = true,
207
215
  pendingDataMap = [],
208
- frozenColumns
216
+ frozenColumns,
217
+ columnHeaderGroups
209
218
  } = irisGridState;
210
219
  var {
211
220
  columns,
@@ -244,7 +253,8 @@ class IrisGridUtils {
244
253
  selectedSearchColumns,
245
254
  invertSearchColumns,
246
255
  pendingDataMap: IrisGridUtils.hydratePendingDataMap(columns, pendingDataMap),
247
- frozenColumns
256
+ frozenColumns,
257
+ columnHeaderGroups: IrisGridUtils.parseColumnHeaderGroups(model, (_ref11 = columnHeaderGroups !== null && columnHeaderGroups !== void 0 ? columnHeaderGroups : (_model$layoutHints = model.layoutHints) === null || _model$layoutHints === void 0 ? void 0 : _model$layoutHints.columnGroups) !== null && _ref11 !== void 0 ? _ref11 : []).groups
248
258
  };
249
259
  }
250
260
 
@@ -299,8 +309,8 @@ class IrisGridUtils {
299
309
  * @returns The dehydrated quick filters
300
310
  */
301
311
  static dehydrateQuickFilters(quickFilters) {
302
- return [...quickFilters].map(_ref11 => {
303
- var [columnIndex, quickFilter] = _ref11;
312
+ return [...quickFilters].map(_ref12 => {
313
+ var [columnIndex, quickFilter] = _ref12;
304
314
  var {
305
315
  text
306
316
  } = quickFilter;
@@ -318,8 +328,8 @@ class IrisGridUtils {
318
328
  * @returns The quick filters to apply to the columns
319
329
  */
320
330
  static hydrateQuickFilters(columns, savedQuickFilters, timeZone) {
321
- var importedFilters = savedQuickFilters.map(_ref12 => {
322
- var [columnIndex, quickFilter] = _ref12;
331
+ var importedFilters = savedQuickFilters.map(_ref13 => {
332
+ var [columnIndex, quickFilter] = _ref13;
323
333
  var {
324
334
  text
325
335
  } = quickFilter;
@@ -347,8 +357,8 @@ class IrisGridUtils {
347
357
  * @returns The dehydrated advanced filters
348
358
  */
349
359
  static dehydrateAdvancedFilters(columns, advancedFilters) {
350
- return [...advancedFilters].map(_ref13 => {
351
- var [columnIndex, advancedFilter] = _ref13;
360
+ return [...advancedFilters].map(_ref14 => {
361
+ var [columnIndex, advancedFilter] = _ref14;
352
362
  var column = IrisGridUtils.getColumn(columns, columnIndex);
353
363
  assertNotNull(column);
354
364
  var options = IrisGridUtils.dehydrateAdvancedFilterOptions(column, advancedFilter.options);
@@ -366,8 +376,8 @@ class IrisGridUtils {
366
376
  * @returns The advanced filters to apply to the columns
367
377
  */
368
378
  static hydrateAdvancedFilters(columns, savedAdvancedFilters, timeZone) {
369
- var importedFilters = savedAdvancedFilters.map(_ref14 => {
370
- var [columnIndex, advancedFilter] = _ref14;
379
+ var importedFilters = savedAdvancedFilters.map(_ref15 => {
380
+ var [columnIndex, advancedFilter] = _ref15;
371
381
  var column = IrisGridUtils.getColumn(columns, columnIndex);
372
382
  assertNotNull(column);
373
383
  var options = IrisGridUtils.hydrateAdvancedFilterOptions(column, advancedFilter.options);
@@ -406,13 +416,13 @@ class IrisGridUtils {
406
416
  }, otherOptions);
407
417
  }
408
418
  static dehydratePendingDataMap(columns, pendingDataMap) {
409
- return [...pendingDataMap].map(_ref15 => {
419
+ return [...pendingDataMap].map(_ref16 => {
410
420
  var [rowIndex, {
411
421
  data
412
- }] = _ref15;
422
+ }] = _ref16;
413
423
  return [rowIndex, {
414
- data: [...data].map(_ref16 => {
415
- var [c, value] = _ref16;
424
+ data: [...data].map(_ref17 => {
425
+ var [c, value] = _ref17;
416
426
  return [columns[c].name, IrisGridUtils.dehydrateValue(value, columns[c].type)];
417
427
  })
418
428
  }];
@@ -422,23 +432,23 @@ class IrisGridUtils {
422
432
  var columnMap = new Map();
423
433
  var getColumnIndex = columnName => {
424
434
  if (!columnMap.has(columnName)) {
425
- columnMap.set(columnName, columns.findIndex(_ref17 => {
435
+ columnMap.set(columnName, columns.findIndex(_ref18 => {
426
436
  var {
427
437
  name
428
- } = _ref17;
438
+ } = _ref18;
429
439
  return name === columnName;
430
440
  }));
431
441
  }
432
442
  return columnMap.get(columnName);
433
443
  };
434
- return new Map(pendingDataMap.map(_ref18 => {
444
+ return new Map(pendingDataMap.map(_ref19 => {
435
445
  var [rowIndex, {
436
446
  data
437
- }] = _ref18;
447
+ }] = _ref19;
438
448
  return [rowIndex, {
439
- data: new Map(data.map(_ref19 => {
449
+ data: new Map(data.map(_ref20 => {
440
450
  var _getColumnIndex;
441
- var [columnName, value] = _ref19;
451
+ var [columnName, value] = _ref20;
442
452
  var index = getColumnIndex(columnName);
443
453
  assertNotNull(index);
444
454
  return [(_getColumnIndex = getColumnIndex(columnName)) !== null && _getColumnIndex !== void 0 ? _getColumnIndex : null, IrisGridUtils.hydrateValue(value, columns[index].type)];
@@ -617,16 +627,16 @@ class IrisGridUtils {
617
627
  }
618
628
  static getInputFiltersForColumns(columns) {
619
629
  var inputFilters = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
620
- return inputFilters.filter(_ref20 => {
630
+ return inputFilters.filter(_ref21 => {
621
631
  var {
622
632
  name,
623
633
  type
624
- } = _ref20;
625
- return columns.find(_ref21 => {
634
+ } = _ref21;
635
+ return columns.find(_ref22 => {
626
636
  var {
627
637
  name: columnName,
628
638
  type: columnType
629
- } = _ref21;
639
+ } = _ref22;
630
640
  return columnName === name && columnType === type;
631
641
  });
632
642
  });
@@ -634,17 +644,17 @@ class IrisGridUtils {
634
644
  static getFiltersFromInputFilters(columns) {
635
645
  var inputFilters = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
636
646
  var timeZone = arguments.length > 2 ? arguments[2] : undefined;
637
- return inputFilters.map(_ref22 => {
647
+ return inputFilters.map(_ref23 => {
638
648
  var {
639
649
  name,
640
650
  type,
641
651
  value
642
- } = _ref22;
643
- var column = columns.find(_ref23 => {
652
+ } = _ref23;
653
+ var column = columns.find(_ref24 => {
644
654
  var {
645
655
  name: columnName,
646
656
  type: columnType
647
- } = _ref23;
657
+ } = _ref24;
648
658
  return columnName === name && columnType === type;
649
659
  });
650
660
  if (column) {
@@ -677,11 +687,11 @@ class IrisGridUtils {
677
687
  * @returns Array of hidden column indexes
678
688
  */
679
689
  static getHiddenColumns(userColumnWidths) {
680
- return [...userColumnWidths.entries()].filter(_ref24 => {
681
- var [, value] = _ref24;
690
+ return [...userColumnWidths.entries()].filter(_ref25 => {
691
+ var [, value] = _ref25;
682
692
  return value === 0;
683
- }).map(_ref25 => {
684
- var [key] = _ref25;
693
+ }).map(_ref26 => {
694
+ var [key] = _ref26;
685
695
  return key;
686
696
  });
687
697
  }
@@ -697,10 +707,10 @@ class IrisGridUtils {
697
707
  return sorts.filter(sort => !columnNames.includes(sort.column.name));
698
708
  }
699
709
  static removeFiltersInColumns(columns, filters, removedColumnNames) {
700
- var columnNames = columns.map(_ref26 => {
710
+ var columnNames = columns.map(_ref27 => {
701
711
  var {
702
712
  name
703
- } = _ref26;
713
+ } = _ref27;
704
714
  return name;
705
715
  });
706
716
  var newFilter = new Map(filters);
@@ -708,10 +718,10 @@ class IrisGridUtils {
708
718
  return newFilter;
709
719
  }
710
720
  static removeColumnFromMovedColumns(columns, movedColumns, removedColumnNames) {
711
- var columnNames = columns.map(_ref27 => {
721
+ var columnNames = columns.map(_ref28 => {
712
722
  var {
713
723
  name
714
- } = _ref27;
724
+ } = _ref28;
715
725
  return name;
716
726
  });
717
727
  var newMoves = [...movedColumns];
@@ -799,10 +809,10 @@ class IrisGridUtils {
799
809
  static getColumnsToFetch(tableColumns, viewportColumns, alwaysFetchColumnNames) {
800
810
  var columnsToFetch = [...viewportColumns];
801
811
  alwaysFetchColumnNames.forEach(columnName => {
802
- var column = tableColumns.find(_ref28 => {
812
+ var column = tableColumns.find(_ref29 => {
803
813
  var {
804
814
  name
805
- } = _ref28;
815
+ } = _ref29;
806
816
  return name === columnName;
807
817
  });
808
818
  if (column != null && !viewportColumns.includes(column)) {
@@ -970,12 +980,12 @@ class IrisGridUtils {
970
980
  var {
971
981
  aggregations = []
972
982
  } = aggregationSettings !== null && aggregationSettings !== void 0 ? aggregationSettings : {};
973
- var aggregationColumns = aggregations.map(_ref29 => {
983
+ var aggregationColumns = aggregations.map(_ref30 => {
974
984
  var {
975
985
  operation,
976
986
  selected,
977
987
  invert
978
- } = _ref29;
988
+ } = _ref30;
979
989
  return AggregationUtils.isRollupOperation(operation) ? [] : AggregationUtils.getOperationColumnNames(originalColumns, operation, selected, invert);
980
990
  });
981
991
  var aggregationMap = {};
@@ -1043,17 +1053,17 @@ class IrisGridUtils {
1043
1053
  * @param columnName The column name to retrieve
1044
1054
  */
1045
1055
  static getColumnByName(columns, columnName) {
1046
- var column = columns.find(_ref30 => {
1056
+ var column = columns.find(_ref31 => {
1047
1057
  var {
1048
1058
  name
1049
- } = _ref30;
1059
+ } = _ref31;
1050
1060
  return name === columnName;
1051
1061
  });
1052
1062
  if (column == null) {
1053
- log.error('Unable to retrieve column by name', columnName, columns.map(_ref31 => {
1063
+ log.error('Unable to retrieve column by name', columnName, columns.map(_ref32 => {
1054
1064
  var {
1055
1065
  name
1056
- } = _ref31;
1066
+ } = _ref32;
1057
1067
  return name;
1058
1068
  }));
1059
1069
  }
@@ -1067,11 +1077,11 @@ class IrisGridUtils {
1067
1077
  * @returns Updated filter configs with column names changed to indexes
1068
1078
  */
1069
1079
  static changeFilterColumnNamesToIndexes(columns, filters) {
1070
- return filters.map(_ref32 => {
1080
+ return filters.map(_ref33 => {
1071
1081
  var {
1072
1082
  name,
1073
1083
  filter
1074
- } = _ref32;
1084
+ } = _ref33;
1075
1085
  var index = columns.findIndex(column => column.name === name);
1076
1086
  return index < 0 ? null : [index, filter];
1077
1087
  }).filter(filterConfig => filterConfig != null);
@@ -1128,6 +1138,99 @@ class IrisGridUtils {
1128
1138
  }
1129
1139
  return combinedText;
1130
1140
  }
1141
+
1142
+ /**
1143
+ * Parses the column header groups provided.
1144
+ * If undefined, should provide default groups such as from layoutHints
1145
+ *
1146
+ * @returns Object containing groups array, max depth, map of name to parent group, and map of name to group
1147
+ */
1148
+ static parseColumnHeaderGroups(model, groupsParam) {
1149
+ var maxDepth = 1;
1150
+ var parentMap = new Map();
1151
+ var groupMap = new Map();
1152
+
1153
+ // Remove any empty groups before parsing
1154
+ var groups = groupsParam === null || groupsParam === void 0 ? void 0 : groupsParam.filter(_ref34 => {
1155
+ var {
1156
+ children
1157
+ } = _ref34;
1158
+ return children.length > 0;
1159
+ });
1160
+ if (groups.length === 0) {
1161
+ return {
1162
+ groups: [],
1163
+ maxDepth,
1164
+ parentMap,
1165
+ groupMap
1166
+ };
1167
+ }
1168
+ var originalGroupMap = new Map(groups.map(group => [group.name, group]));
1169
+ var seenChildren = new Set();
1170
+ var addGroup = group => {
1171
+ var {
1172
+ name
1173
+ } = group;
1174
+ if (model.getColumnIndexByName(name) != null) {
1175
+ throw new Error("Column header group has same name as column: ".concat(name));
1176
+ }
1177
+ var existingGroup = groupMap.get(name);
1178
+ if (existingGroup) {
1179
+ return existingGroup;
1180
+ }
1181
+ var childIndexes = [];
1182
+ var depth = 1;
1183
+ group.children.forEach(childName => {
1184
+ if (seenChildren.has(childName)) {
1185
+ throw new Error("Column group child ".concat(childName, " specified in multiple groups"));
1186
+ }
1187
+ seenChildren.add(childName);
1188
+ var childGroup = originalGroupMap.get(childName);
1189
+ var childIndex = model.getColumnIndexByName(childName);
1190
+ if (childGroup) {
1191
+ // Adding another column header group
1192
+ var addedGroup = addGroup(childGroup);
1193
+ childIndexes.push(...addedGroup.childIndexes);
1194
+ depth = Math.max(depth, addedGroup.depth + 1);
1195
+ } else if (childIndex != null) {
1196
+ // Adding a base column
1197
+ childIndexes.push(childIndex);
1198
+ depth = Math.max(depth, 1);
1199
+ } else {
1200
+ throw new Error("Unknown child ".concat(childName, " in group ").concat(name));
1201
+ }
1202
+ });
1203
+ var columnHeaderGroup = new ColumnHeaderGroup(_objectSpread(_objectSpread({}, group), {}, {
1204
+ depth,
1205
+ childIndexes: childIndexes.flat()
1206
+ }));
1207
+ groupMap.set(name, columnHeaderGroup);
1208
+ group.children.forEach(childName => parentMap.set(childName, columnHeaderGroup));
1209
+ maxDepth = Math.max(maxDepth, columnHeaderGroup.depth + 1);
1210
+ return columnHeaderGroup;
1211
+ };
1212
+ var groupNames = new Set();
1213
+ groups.forEach(group => {
1214
+ var {
1215
+ name
1216
+ } = group;
1217
+ if (groupNames.has(name)) {
1218
+ throw new Error("Duplicate column group name: ".concat(name));
1219
+ }
1220
+ groupNames.add(name);
1221
+ addGroup(group);
1222
+ });
1223
+ groupMap.forEach(group => {
1224
+ var _parentMap$get;
1225
+ group.setParent((_parentMap$get = parentMap.get(group.name)) === null || _parentMap$get === void 0 ? void 0 : _parentMap$get.name);
1226
+ });
1227
+ return {
1228
+ groups: [...groupMap.values()],
1229
+ maxDepth,
1230
+ groupMap,
1231
+ parentMap
1232
+ };
1233
+ }
1131
1234
  }
1132
1235
  export default IrisGridUtils;
1133
1236
  //# sourceMappingURL=IrisGridUtils.js.map