@deephaven/iris-grid 1.22.1-alpha-pivot-builder.0 → 1.22.2-alpha-pivot-builder.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 (160) hide show
  1. package/dist/AdvancedFilterCreator.js +65 -102
  2. package/dist/AdvancedFilterCreator.js.map +1 -1
  3. package/dist/AdvancedFilterCreatorFilterItem.js +22 -37
  4. package/dist/AdvancedFilterCreatorFilterItem.js.map +1 -1
  5. package/dist/AdvancedFilterCreatorSelectValue.js +37 -63
  6. package/dist/AdvancedFilterCreatorSelectValue.js.map +1 -1
  7. package/dist/AdvancedFilterCreatorSelectValueList.js +29 -59
  8. package/dist/AdvancedFilterCreatorSelectValueList.js.map +1 -1
  9. package/dist/ColumnHeaderGroup.js +6 -8
  10. package/dist/ColumnHeaderGroup.js.map +1 -1
  11. package/dist/ColumnStatistics.js +22 -28
  12. package/dist/ColumnStatistics.js.map +1 -1
  13. package/dist/CrossColumnSearch.js +20 -29
  14. package/dist/CrossColumnSearch.js.map +1 -1
  15. package/dist/FilterInputField.js +19 -46
  16. package/dist/FilterInputField.js.map +1 -1
  17. package/dist/GotoRow.js +32 -29
  18. package/dist/GotoRow.js.map +1 -1
  19. package/dist/IrisGrid.js +490 -822
  20. package/dist/IrisGrid.js.map +1 -1
  21. package/dist/IrisGridBottomBar.js +10 -11
  22. package/dist/IrisGridBottomBar.js.map +1 -1
  23. package/dist/IrisGridCacheUtils.js +28 -8
  24. package/dist/IrisGridCacheUtils.js.map +1 -1
  25. package/dist/IrisGridCellOverflowModal.js +30 -13
  26. package/dist/IrisGridCellOverflowModal.js.map +1 -1
  27. package/dist/IrisGridCellRendererUtils.js +6 -12
  28. package/dist/IrisGridCellRendererUtils.js.map +1 -1
  29. package/dist/IrisGridCopyHandler.js +28 -47
  30. package/dist/IrisGridCopyHandler.js.map +1 -1
  31. package/dist/IrisGridMetricCalculator.js +28 -51
  32. package/dist/IrisGridMetricCalculator.js.map +1 -1
  33. package/dist/IrisGridModelUpdater.js +32 -30
  34. package/dist/IrisGridModelUpdater.js.map +1 -1
  35. package/dist/IrisGridPartitionSelector.js +28 -62
  36. package/dist/IrisGridPartitionSelector.js.map +1 -1
  37. package/dist/IrisGridProxyModel.js +7 -12
  38. package/dist/IrisGridProxyModel.js.map +1 -1
  39. package/dist/IrisGridRenderer.js +162 -264
  40. package/dist/IrisGridRenderer.js.map +1 -1
  41. package/dist/IrisGridTableModel.js +23 -16
  42. package/dist/IrisGridTableModel.js.map +1 -1
  43. package/dist/IrisGridTableModelTemplate.js +49 -73
  44. package/dist/IrisGridTableModelTemplate.js.map +1 -1
  45. package/dist/IrisGridTestUtils.js +19 -19
  46. package/dist/IrisGridTestUtils.js.map +1 -1
  47. package/dist/IrisGridTextCellRenderer.js +35 -52
  48. package/dist/IrisGridTextCellRenderer.js.map +1 -1
  49. package/dist/IrisGridTheme.js +9 -1
  50. package/dist/IrisGridTheme.js.map +1 -1
  51. package/dist/IrisGridThemeProvider.js +5 -7
  52. package/dist/IrisGridThemeProvider.js.map +1 -1
  53. package/dist/IrisGridTreeTableModel.js +5 -9
  54. package/dist/IrisGridTreeTableModel.js.map +1 -1
  55. package/dist/IrisGridUtils.js +246 -300
  56. package/dist/IrisGridUtils.js.map +1 -1
  57. package/dist/NoPastePermissionModal.js +3 -5
  58. package/dist/NoPastePermissionModal.js.map +1 -1
  59. package/dist/PendingDataBottomBar.js +27 -16
  60. package/dist/PendingDataBottomBar.js.map +1 -1
  61. package/dist/ToastBottomBar.js +16 -8
  62. package/dist/ToastBottomBar.js.map +1 -1
  63. package/dist/format-context-menus/CustomFormatAction.js +11 -24
  64. package/dist/format-context-menus/CustomFormatAction.js.map +1 -1
  65. package/dist/key-handlers/CopyCellKeyHandler.js +3 -4
  66. package/dist/key-handlers/CopyCellKeyHandler.js.map +1 -1
  67. package/dist/key-handlers/CopyKeyHandler.js +1 -3
  68. package/dist/key-handlers/CopyKeyHandler.js.map +1 -1
  69. package/dist/key-handlers/ReverseKeyHandler.js +1 -3
  70. package/dist/key-handlers/ReverseKeyHandler.js.map +1 -1
  71. package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js +35 -59
  72. package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js.map +1 -1
  73. package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js +13 -29
  74. package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js.map +1 -1
  75. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js +8 -17
  76. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js.map +1 -1
  77. package/dist/mousehandlers/IrisGridContextMenuHandler.js +96 -199
  78. package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
  79. package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js +2 -4
  80. package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js.map +1 -1
  81. package/dist/mousehandlers/IrisGridFilterMouseHandler.js +16 -30
  82. package/dist/mousehandlers/IrisGridFilterMouseHandler.js.map +1 -1
  83. package/dist/mousehandlers/IrisGridPartitionedTableMouseHandler.js +5 -13
  84. package/dist/mousehandlers/IrisGridPartitionedTableMouseHandler.js.map +1 -1
  85. package/dist/mousehandlers/IrisGridRowTreeMouseHandler.js +20 -36
  86. package/dist/mousehandlers/IrisGridRowTreeMouseHandler.js.map +1 -1
  87. package/dist/mousehandlers/IrisGridSortMouseHandler.js +3 -5
  88. package/dist/mousehandlers/IrisGridSortMouseHandler.js.map +1 -1
  89. package/dist/mousehandlers/IrisGridTokenMouseHandler.js +9 -18
  90. package/dist/mousehandlers/IrisGridTokenMouseHandler.js.map +1 -1
  91. package/dist/mousehandlers/PendingMouseHandler.js +10 -18
  92. package/dist/mousehandlers/PendingMouseHandler.js.map +1 -1
  93. package/dist/sidebar/AdvancedSettingsMenu.js +12 -5
  94. package/dist/sidebar/AdvancedSettingsMenu.js.map +1 -1
  95. package/dist/sidebar/ChartBuilder.js +45 -102
  96. package/dist/sidebar/ChartBuilder.js.map +1 -1
  97. package/dist/sidebar/CustomColumnBuilder.js +35 -77
  98. package/dist/sidebar/CustomColumnBuilder.js.map +1 -1
  99. package/dist/sidebar/CustomColumnInput.js +9 -11
  100. package/dist/sidebar/CustomColumnInput.js.map +1 -1
  101. package/dist/sidebar/InputEditor.js +17 -24
  102. package/dist/sidebar/InputEditor.js.map +1 -1
  103. package/dist/sidebar/PluginTableOptionsErrorBoundary.js +6 -11
  104. package/dist/sidebar/PluginTableOptionsErrorBoundary.js.map +1 -1
  105. package/dist/sidebar/RollupRows.js +72 -113
  106. package/dist/sidebar/RollupRows.js.map +1 -1
  107. package/dist/sidebar/SelectDistinctBuilder.js +16 -33
  108. package/dist/sidebar/SelectDistinctBuilder.js.map +1 -1
  109. package/dist/sidebar/TableCsvExporter.js +50 -74
  110. package/dist/sidebar/TableCsvExporter.js.map +1 -1
  111. package/dist/sidebar/TableSaver.js +18 -42
  112. package/dist/sidebar/TableSaver.js.map +1 -1
  113. package/dist/sidebar/aggregations/AggregationEdit.js +25 -18
  114. package/dist/sidebar/aggregations/AggregationEdit.js.map +1 -1
  115. package/dist/sidebar/aggregations/AggregationUtils.d.ts.map +1 -1
  116. package/dist/sidebar/aggregations/AggregationUtils.js +3 -4
  117. package/dist/sidebar/aggregations/AggregationUtils.js.map +1 -1
  118. package/dist/sidebar/aggregations/Aggregations.js +45 -34
  119. package/dist/sidebar/aggregations/Aggregations.js.map +1 -1
  120. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js +35 -24
  121. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js.map +1 -1
  122. package/dist/sidebar/conditional-formatting/ConditionEditor.js +38 -21
  123. package/dist/sidebar/conditional-formatting/ConditionEditor.js.map +1 -1
  124. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js +27 -11
  125. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js.map +1 -1
  126. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js +9 -11
  127. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +1 -1
  128. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js +48 -57
  129. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js.map +1 -1
  130. package/dist/sidebar/conditional-formatting/RowFormatEditor.js +35 -24
  131. package/dist/sidebar/conditional-formatting/RowFormatEditor.js.map +1 -1
  132. package/dist/sidebar/conditional-formatting/StyleEditor.js +26 -11
  133. package/dist/sidebar/conditional-formatting/StyleEditor.js.map +1 -1
  134. package/dist/sidebar/visibility-ordering-builder/SearchItem.js +5 -7
  135. package/dist/sidebar/visibility-ordering-builder/SearchItem.js.map +1 -1
  136. package/dist/sidebar/visibility-ordering-builder/SearchWithModal.js +24 -18
  137. package/dist/sidebar/visibility-ordering-builder/SearchWithModal.js.map +1 -1
  138. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js +166 -256
  139. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js.map +1 -1
  140. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.js +4 -11
  141. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.js.map +1 -1
  142. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.js +28 -14
  143. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.js.map +1 -1
  144. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js +16 -19
  145. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js.map +1 -1
  146. package/dist/sidebar/visibility-ordering-builder/sortable-tree/PointerSensorWithInteraction.js +1 -3
  147. package/dist/sidebar/visibility-ordering-builder/sortable-tree/PointerSensorWithInteraction.js.map +1 -1
  148. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.js +19 -29
  149. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.js.map +1 -1
  150. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeDndContext.js +39 -52
  151. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeDndContext.js.map +1 -1
  152. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.js +18 -23
  153. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.js.map +1 -1
  154. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.js +19 -15
  155. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.js.map +1 -1
  156. package/dist/sidebar/visibility-ordering-builder/sortable-tree/keyboardCoordinates.js +16 -30
  157. package/dist/sidebar/visibility-ordering-builder/sortable-tree/keyboardCoordinates.js.map +1 -1
  158. package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js +30 -39
  159. package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js.map +1 -1
  160. package/package.json +16 -16
@@ -20,11 +20,9 @@ class AdvancedFilterCreatorSelectValue extends PureComponent {
20
20
  this.handleListChange = this.handleListChange.bind(this);
21
21
  this.handleSearchChange = this.handleSearchChange.bind(this);
22
22
  this.handleUpdateFilterTimeout = this.handleUpdateFilterTimeout.bind(this);
23
- var {
24
- dh,
25
- invertSelection,
26
- selectedValues
27
- } = props;
23
+ var dh = props.dh,
24
+ invertSelection = props.invertSelection,
25
+ selectedValues = props.selectedValues;
28
26
  this.tableUtils = new TableUtils(dh);
29
27
  this.state = {
30
28
  filters: [],
@@ -37,11 +35,10 @@ class AdvancedFilterCreatorSelectValue extends PureComponent {
37
35
  this.initSearchTable();
38
36
  }
39
37
  componentDidUpdate(prevProps, prevState) {
40
- var {
41
- invertSelection,
42
- selectedValues,
43
- table
44
- } = this.props;
38
+ var _this$props = this.props,
39
+ invertSelection = _this$props.invertSelection,
40
+ selectedValues = _this$props.selectedValues,
41
+ table = _this$props.table;
45
42
  if (prevProps.table !== table) {
46
43
  this.initSearchTable();
47
44
  }
@@ -55,10 +52,9 @@ class AdvancedFilterCreatorSelectValue extends PureComponent {
55
52
  selectedValues
56
53
  });
57
54
  }
58
- var {
59
- table: searchTable,
60
- searchText
61
- } = this.state;
55
+ var _this$state = this.state,
56
+ searchTable = _this$state.table,
57
+ searchText = _this$state.searchText;
62
58
  if (searchTable !== prevState.table) {
63
59
  if (prevState.table != null) {
64
60
  prevState.table.close();
@@ -72,9 +68,7 @@ class AdvancedFilterCreatorSelectValue extends PureComponent {
72
68
  }
73
69
  }
74
70
  componentWillUnmount() {
75
- var {
76
- table
77
- } = this.state;
71
+ var table = this.state.table;
78
72
  if (table != null) {
79
73
  table.close();
80
74
  }
@@ -82,20 +76,17 @@ class AdvancedFilterCreatorSelectValue extends PureComponent {
82
76
  this.stopUpdateFilterTimer();
83
77
  }
84
78
  getColumnName() {
85
- var {
86
- table
87
- } = this.props;
79
+ var table = this.props.table;
88
80
  if (table != null) {
89
81
  return table.columns[0].name;
90
82
  }
91
83
  return '';
92
84
  }
93
85
  getDisplayedValuesCount() {
94
- var {
95
- invertSelection,
96
- selectedValues,
97
- table
98
- } = this.state;
86
+ var _this$state2 = this.state,
87
+ invertSelection = _this$state2.invertSelection,
88
+ selectedValues = _this$state2.selectedValues,
89
+ table = _this$state2.table;
99
90
  if (table == null) {
100
91
  return null;
101
92
  }
@@ -106,12 +97,8 @@ class AdvancedFilterCreatorSelectValue extends PureComponent {
106
97
  }
107
98
  getDisplayedValueText() {
108
99
  var count = this.getDisplayedValuesCount();
109
- var {
110
- table
111
- } = this.state;
112
- var {
113
- formatter
114
- } = this.props;
100
+ var table = this.state.table;
101
+ var formatter = this.props.formatter;
115
102
  if (count != null && table != null) {
116
103
  var formattedCount = formatter.getFormattedString(count, 'long');
117
104
  var formattedTableSize = formatter.getFormattedString(table.totalSize, 'long');
@@ -124,9 +111,7 @@ class AdvancedFilterCreatorSelectValue extends PureComponent {
124
111
  return null;
125
112
  }
126
113
  initSearchTable() {
127
- var {
128
- table
129
- } = this.props;
114
+ var table = this.props.table;
130
115
  if (table == null) {
131
116
  return;
132
117
  }
@@ -148,9 +133,7 @@ class AdvancedFilterCreatorSelectValue extends PureComponent {
148
133
  selectedValues,
149
134
  invertSelection
150
135
  });
151
- var {
152
- onChange
153
- } = this.props;
136
+ var onChange = this.props.onChange;
154
137
  onChange(selectedValues, invertSelection);
155
138
  }
156
139
  handleSearchChange(event) {
@@ -175,9 +158,7 @@ class AdvancedFilterCreatorSelectValue extends PureComponent {
175
158
  invertSelection,
176
159
  selectedValues
177
160
  });
178
- var {
179
- onChange
180
- } = this.props;
161
+ var onChange = this.props.onChange;
181
162
  onChange(selectedValues, invertSelection);
182
163
  }
183
164
  startUpdateFilterTimer() {
@@ -191,16 +172,11 @@ class AdvancedFilterCreatorSelectValue extends PureComponent {
191
172
  }
192
173
  }
193
174
  updateTableFilter() {
194
- var {
195
- table,
196
- searchText
197
- } = this.state;
198
- var {
199
- timeZone
200
- } = this.props;
201
- var {
202
- tableUtils
203
- } = this;
175
+ var _this$state3 = this.state,
176
+ table = _this$state3.table,
177
+ searchText = _this$state3.searchText;
178
+ var timeZone = this.props.timeZone;
179
+ var tableUtils = this.tableUtils;
204
180
  var column = table === null || table === void 0 ? void 0 : table.columns[0];
205
181
  var filters = [];
206
182
  if (column == null) {
@@ -232,19 +208,17 @@ class AdvancedFilterCreatorSelectValue extends PureComponent {
232
208
  });
233
209
  }
234
210
  render() {
235
- var {
236
- error,
237
- filters,
238
- invertSelection,
239
- selectedValues,
240
- searchText,
241
- table
242
- } = this.state;
243
- var {
244
- dh,
245
- formatter,
246
- showSearch
247
- } = this.props;
211
+ var _this$state4 = this.state,
212
+ error = _this$state4.error,
213
+ filters = _this$state4.filters,
214
+ invertSelection = _this$state4.invertSelection,
215
+ selectedValues = _this$state4.selectedValues,
216
+ searchText = _this$state4.searchText,
217
+ table = _this$state4.table;
218
+ var _this$props2 = this.props,
219
+ dh = _this$props2.dh,
220
+ formatter = _this$props2.formatter,
221
+ showSearch = _this$props2.showSearch;
248
222
  var columnName = this.getColumnName();
249
223
  var displayedValuesText = this.getDisplayedValueText();
250
224
  var placeholderText = columnName ? "Find ".concat(columnName, "...") : '';
@@ -1 +1 @@
1
- {"version":3,"file":"AdvancedFilterCreatorSelectValue.js","names":["React","PureComponent","classNames","TableUtils","Button","FadeTransition","AdvancedFilterCreatorSelectValueList","jsx","_jsx","jsxs","_jsxs","AdvancedFilterCreatorSelectValue","constructor","props","_defineProperty","handleSelectAllClick","bind","handleClearAllClick","handleListChange","handleSearchChange","handleUpdateFilterTimeout","dh","invertSelection","selectedValues","tableUtils","state","filters","searchText","componentDidMount","initSearchTable","componentDidUpdate","prevProps","prevState","table","setState","searchTable","close","startUpdateFilterTimer","componentWillUnmount","searchTablePromise","undefined","stopUpdateFilterTimer","getColumnName","columns","name","getDisplayedValuesCount","totalSize","length","getDisplayedValueText","count","formatter","formattedCount","getFormattedString","formattedTableSize","prefix","concat","copy","then","onChange","event","target","value","resetSelection","updateFilterTimer","updateTableFilter","setTimeout","searchDebounceTime","clearTimeout","timeZone","column","error","filter","isCharType","type","makeQuickFilter","isTextType","push","render","showSearch","columnName","displayedValuesText","placeholderText","className","children","htmlFor","id","placeholder","kind","onClick","in","mountOnEnter","unmountOnExit"],"sources":["../src/AdvancedFilterCreatorSelectValue.tsx"],"sourcesContent":["/* eslint react/no-did-update-set-state: \"off\" */\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport { type Formatter, TableUtils } from '@deephaven/jsapi-utils';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport { Button, FadeTransition } from '@deephaven/components';\nimport AdvancedFilterCreatorSelectValueList from './AdvancedFilterCreatorSelectValueList';\nimport './AdvancedFilterCreatorSelectValue.scss';\nimport { type ColumnName } from './CommonTypes';\n\ninterface AdvancedFilterCreatorSelectValueProps<T> {\n dh: typeof DhType;\n invertSelection: boolean;\n selectedValues: (T | null)[];\n table?: DhType.Table;\n formatter: Formatter;\n onChange: (selectedValues: (T | null)[], invertSelection: boolean) => void;\n showSearch: boolean;\n timeZone: string;\n}\n\ninterface AdvancedFilterCreatorSelectValueState<T> {\n error?: string;\n filters: DhType.FilterCondition[];\n invertSelection: boolean;\n selectedValues: (T | null)[];\n searchText: string;\n table?: DhType.Table;\n}\n\nclass AdvancedFilterCreatorSelectValue<T = unknown> extends PureComponent<\n AdvancedFilterCreatorSelectValueProps<T>,\n AdvancedFilterCreatorSelectValueState<T>\n> {\n static searchDebounceTime = 250;\n\n static defaultProps = {\n invertSelection: true,\n selectedValues: [],\n onChange: (): void => undefined,\n showSearch: true,\n };\n\n constructor(props: AdvancedFilterCreatorSelectValueProps<T>) {\n super(props);\n\n this.handleSelectAllClick = this.handleSelectAllClick.bind(this);\n this.handleClearAllClick = this.handleClearAllClick.bind(this);\n this.handleListChange = this.handleListChange.bind(this);\n this.handleSearchChange = this.handleSearchChange.bind(this);\n this.handleUpdateFilterTimeout = this.handleUpdateFilterTimeout.bind(this);\n\n const { dh, invertSelection, selectedValues } = props;\n\n this.tableUtils = new TableUtils(dh);\n\n this.state = {\n filters: [],\n invertSelection,\n selectedValues,\n searchText: '',\n };\n }\n\n componentDidMount(): void {\n this.initSearchTable();\n }\n\n componentDidUpdate(\n prevProps: AdvancedFilterCreatorSelectValueProps<T>,\n prevState: AdvancedFilterCreatorSelectValueState<T>\n ): void {\n const { invertSelection, selectedValues, table } = this.props;\n if (prevProps.table !== table) {\n this.initSearchTable();\n }\n\n if (prevProps.invertSelection !== invertSelection) {\n this.setState({ invertSelection });\n }\n\n if (prevProps.selectedValues !== selectedValues) {\n this.setState({ selectedValues });\n }\n\n const { table: searchTable, searchText } = this.state;\n\n if (searchTable !== prevState.table) {\n if (prevState.table != null) {\n prevState.table.close();\n }\n if (searchTable != null) {\n this.startUpdateFilterTimer();\n }\n }\n\n if (searchText !== prevState.searchText) {\n this.startUpdateFilterTimer();\n }\n }\n\n componentWillUnmount(): void {\n const { table } = this.state;\n if (table != null) {\n table.close();\n }\n this.searchTablePromise = undefined;\n\n this.stopUpdateFilterTimer();\n }\n\n searchTablePromise?: Promise<DhType.Table>;\n\n tableUtils: TableUtils;\n\n updateFilterTimer?: ReturnType<typeof setTimeout>;\n\n getColumnName(): ColumnName {\n const { table } = this.props;\n if (table != null) {\n return table.columns[0].name;\n }\n return '';\n }\n\n getDisplayedValuesCount(): number | null {\n const { invertSelection, selectedValues, table } = this.state;\n if (table == null) {\n return null;\n }\n\n if (invertSelection) {\n return table.totalSize - selectedValues.length;\n }\n return selectedValues.length;\n }\n\n getDisplayedValueText(): string | null {\n const count = this.getDisplayedValuesCount();\n const { table } = this.state;\n\n const { formatter } = this.props;\n\n if (count != null && table != null) {\n const formattedCount = formatter.getFormattedString(count, 'long');\n const formattedTableSize = formatter.getFormattedString(\n table.totalSize,\n 'long'\n );\n let prefix = '';\n if (count < 1000000) {\n prefix = 'Displaying ';\n }\n return `${prefix}${formattedCount} of ${formattedTableSize}`;\n }\n return null;\n }\n\n initSearchTable(): void {\n const { table } = this.props;\n if (table == null) {\n return;\n }\n\n const searchTablePromise = table.copy();\n this.searchTablePromise = searchTablePromise;\n this.searchTablePromise.then(searchTable => {\n if (this.searchTablePromise === searchTablePromise) {\n this.setState({ table: searchTable });\n this.searchTablePromise = undefined;\n } else {\n searchTable.close();\n }\n });\n }\n\n handleListChange(\n selectedValues: (T | null)[],\n invertSelection: boolean\n ): void {\n this.setState({ selectedValues, invertSelection });\n\n const { onChange } = this.props;\n onChange(selectedValues, invertSelection);\n }\n\n handleSearchChange(event: React.ChangeEvent<HTMLInputElement>): void {\n const searchText = event.target.value;\n this.setState({ searchText });\n }\n\n handleSelectAllClick(): void {\n this.resetSelection(true);\n }\n\n handleClearAllClick(): void {\n this.resetSelection(false);\n }\n\n handleUpdateFilterTimeout(): void {\n this.updateFilterTimer = undefined;\n this.updateTableFilter();\n }\n\n resetSelection(invertSelection: boolean): void {\n const selectedValues: T[] = [];\n\n this.setState({ invertSelection, selectedValues });\n\n const { onChange } = this.props;\n onChange(selectedValues, invertSelection);\n }\n\n startUpdateFilterTimer(): void {\n this.stopUpdateFilterTimer();\n\n this.updateFilterTimer = setTimeout(\n this.handleUpdateFilterTimeout,\n AdvancedFilterCreatorSelectValue.searchDebounceTime\n );\n }\n\n stopUpdateFilterTimer(): void {\n if (this.updateFilterTimer != null) {\n clearTimeout(this.updateFilterTimer);\n this.updateFilterTimer = undefined;\n }\n }\n\n updateTableFilter(): void {\n const { table, searchText } = this.state;\n const { timeZone } = this.props;\n const { tableUtils } = this;\n const column = table?.columns[0];\n const filters = [];\n if (column == null) {\n return;\n }\n let error;\n if (searchText.length > 0) {\n let filter = null;\n if (TableUtils.isCharType(column.type)) {\n // Just exact match for char\n filter = tableUtils.makeQuickFilter(column, searchText);\n } else if (TableUtils.isTextType(column.type)) {\n // case insensitive & contains search text\n filter = tableUtils.makeQuickFilter(column, `~${searchText}`, timeZone);\n } else {\n // greater than or equal search for everything else\n // we may want to be smarter with some other types (like dates)\n filter = tableUtils.makeQuickFilter(\n column,\n `>=${searchText}`,\n timeZone\n );\n }\n\n if (filter != null) {\n filters.push(filter);\n } else {\n error = 'Invalid search text';\n }\n }\n\n this.setState({ filters, error });\n }\n\n render(): React.ReactElement {\n const {\n error,\n filters,\n invertSelection,\n selectedValues,\n searchText,\n table,\n } = this.state;\n const { dh, formatter, showSearch } = this.props;\n const columnName = this.getColumnName();\n const displayedValuesText = this.getDisplayedValueText();\n const placeholderText = columnName ? `Find ${columnName}...` : '';\n\n return (\n <div className=\"advanced-filter-creator-select-value\">\n <div className={showSearch ? 'form-group' : ''}>\n <label htmlFor=\"advanced-filter-creator-select-value-input\">\n Select Values\n </label>\n {showSearch && (\n <input\n type=\"text\"\n className={classNames('form-control', {\n 'is-invalid': error != null,\n })}\n id=\"advanced-filter-creator-select-value-input\"\n placeholder={placeholderText}\n value={searchText}\n onChange={this.handleSearchChange}\n />\n )}\n </div>\n <AdvancedFilterCreatorSelectValueList\n dh={dh}\n table={table}\n filters={filters}\n invertSelection={invertSelection}\n selectedValues={selectedValues}\n formatter={formatter}\n onChange={this.handleListChange}\n />\n <div className=\"advanced-filter-creator-select-meta-row\">\n <div>\n <Button kind=\"ghost\" onClick={this.handleSelectAllClick}>\n Select All\n </Button>\n <Button kind=\"ghost\" onClick={this.handleClearAllClick}>\n Clear\n </Button>\n </div>\n <FadeTransition\n in={displayedValuesText != null}\n mountOnEnter\n unmountOnExit\n >\n <div className=\"row-count-info\">{displayedValuesText}</div>\n </FadeTransition>\n </div>\n </div>\n );\n }\n}\n\nexport default AdvancedFilterCreatorSelectValue;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"AdvancedFilterCreatorSelectValue.js","names":["React","PureComponent","classNames","TableUtils","Button","FadeTransition","AdvancedFilterCreatorSelectValueList","jsx","_jsx","jsxs","_jsxs","AdvancedFilterCreatorSelectValue","constructor","props","_defineProperty","handleSelectAllClick","bind","handleClearAllClick","handleListChange","handleSearchChange","handleUpdateFilterTimeout","dh","invertSelection","selectedValues","tableUtils","state","filters","searchText","componentDidMount","initSearchTable","componentDidUpdate","prevProps","prevState","_this$props","table","setState","_this$state","searchTable","close","startUpdateFilterTimer","componentWillUnmount","searchTablePromise","undefined","stopUpdateFilterTimer","getColumnName","columns","name","getDisplayedValuesCount","_this$state2","totalSize","length","getDisplayedValueText","count","formatter","formattedCount","getFormattedString","formattedTableSize","prefix","concat","copy","then","onChange","event","target","value","resetSelection","updateFilterTimer","updateTableFilter","setTimeout","searchDebounceTime","clearTimeout","_this$state3","timeZone","column","error","filter","isCharType","type","makeQuickFilter","isTextType","push","render","_this$state4","_this$props2","showSearch","columnName","displayedValuesText","placeholderText","className","children","htmlFor","id","placeholder","kind","onClick","in","mountOnEnter","unmountOnExit"],"sources":["../src/AdvancedFilterCreatorSelectValue.tsx"],"sourcesContent":["/* eslint react/no-did-update-set-state: \"off\" */\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport { type Formatter, TableUtils } from '@deephaven/jsapi-utils';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport { Button, FadeTransition } from '@deephaven/components';\nimport AdvancedFilterCreatorSelectValueList from './AdvancedFilterCreatorSelectValueList';\nimport './AdvancedFilterCreatorSelectValue.scss';\nimport { type ColumnName } from './CommonTypes';\n\ninterface AdvancedFilterCreatorSelectValueProps<T> {\n dh: typeof DhType;\n invertSelection: boolean;\n selectedValues: (T | null)[];\n table?: DhType.Table;\n formatter: Formatter;\n onChange: (selectedValues: (T | null)[], invertSelection: boolean) => void;\n showSearch: boolean;\n timeZone: string;\n}\n\ninterface AdvancedFilterCreatorSelectValueState<T> {\n error?: string;\n filters: DhType.FilterCondition[];\n invertSelection: boolean;\n selectedValues: (T | null)[];\n searchText: string;\n table?: DhType.Table;\n}\n\nclass AdvancedFilterCreatorSelectValue<T = unknown> extends PureComponent<\n AdvancedFilterCreatorSelectValueProps<T>,\n AdvancedFilterCreatorSelectValueState<T>\n> {\n static searchDebounceTime = 250;\n\n static defaultProps = {\n invertSelection: true,\n selectedValues: [],\n onChange: (): void => undefined,\n showSearch: true,\n };\n\n constructor(props: AdvancedFilterCreatorSelectValueProps<T>) {\n super(props);\n\n this.handleSelectAllClick = this.handleSelectAllClick.bind(this);\n this.handleClearAllClick = this.handleClearAllClick.bind(this);\n this.handleListChange = this.handleListChange.bind(this);\n this.handleSearchChange = this.handleSearchChange.bind(this);\n this.handleUpdateFilterTimeout = this.handleUpdateFilterTimeout.bind(this);\n\n const { dh, invertSelection, selectedValues } = props;\n\n this.tableUtils = new TableUtils(dh);\n\n this.state = {\n filters: [],\n invertSelection,\n selectedValues,\n searchText: '',\n };\n }\n\n componentDidMount(): void {\n this.initSearchTable();\n }\n\n componentDidUpdate(\n prevProps: AdvancedFilterCreatorSelectValueProps<T>,\n prevState: AdvancedFilterCreatorSelectValueState<T>\n ): void {\n const { invertSelection, selectedValues, table } = this.props;\n if (prevProps.table !== table) {\n this.initSearchTable();\n }\n\n if (prevProps.invertSelection !== invertSelection) {\n this.setState({ invertSelection });\n }\n\n if (prevProps.selectedValues !== selectedValues) {\n this.setState({ selectedValues });\n }\n\n const { table: searchTable, searchText } = this.state;\n\n if (searchTable !== prevState.table) {\n if (prevState.table != null) {\n prevState.table.close();\n }\n if (searchTable != null) {\n this.startUpdateFilterTimer();\n }\n }\n\n if (searchText !== prevState.searchText) {\n this.startUpdateFilterTimer();\n }\n }\n\n componentWillUnmount(): void {\n const { table } = this.state;\n if (table != null) {\n table.close();\n }\n this.searchTablePromise = undefined;\n\n this.stopUpdateFilterTimer();\n }\n\n searchTablePromise?: Promise<DhType.Table>;\n\n tableUtils: TableUtils;\n\n updateFilterTimer?: ReturnType<typeof setTimeout>;\n\n getColumnName(): ColumnName {\n const { table } = this.props;\n if (table != null) {\n return table.columns[0].name;\n }\n return '';\n }\n\n getDisplayedValuesCount(): number | null {\n const { invertSelection, selectedValues, table } = this.state;\n if (table == null) {\n return null;\n }\n\n if (invertSelection) {\n return table.totalSize - selectedValues.length;\n }\n return selectedValues.length;\n }\n\n getDisplayedValueText(): string | null {\n const count = this.getDisplayedValuesCount();\n const { table } = this.state;\n\n const { formatter } = this.props;\n\n if (count != null && table != null) {\n const formattedCount = formatter.getFormattedString(count, 'long');\n const formattedTableSize = formatter.getFormattedString(\n table.totalSize,\n 'long'\n );\n let prefix = '';\n if (count < 1000000) {\n prefix = 'Displaying ';\n }\n return `${prefix}${formattedCount} of ${formattedTableSize}`;\n }\n return null;\n }\n\n initSearchTable(): void {\n const { table } = this.props;\n if (table == null) {\n return;\n }\n\n const searchTablePromise = table.copy();\n this.searchTablePromise = searchTablePromise;\n this.searchTablePromise.then(searchTable => {\n if (this.searchTablePromise === searchTablePromise) {\n this.setState({ table: searchTable });\n this.searchTablePromise = undefined;\n } else {\n searchTable.close();\n }\n });\n }\n\n handleListChange(\n selectedValues: (T | null)[],\n invertSelection: boolean\n ): void {\n this.setState({ selectedValues, invertSelection });\n\n const { onChange } = this.props;\n onChange(selectedValues, invertSelection);\n }\n\n handleSearchChange(event: React.ChangeEvent<HTMLInputElement>): void {\n const searchText = event.target.value;\n this.setState({ searchText });\n }\n\n handleSelectAllClick(): void {\n this.resetSelection(true);\n }\n\n handleClearAllClick(): void {\n this.resetSelection(false);\n }\n\n handleUpdateFilterTimeout(): void {\n this.updateFilterTimer = undefined;\n this.updateTableFilter();\n }\n\n resetSelection(invertSelection: boolean): void {\n const selectedValues: T[] = [];\n\n this.setState({ invertSelection, selectedValues });\n\n const { onChange } = this.props;\n onChange(selectedValues, invertSelection);\n }\n\n startUpdateFilterTimer(): void {\n this.stopUpdateFilterTimer();\n\n this.updateFilterTimer = setTimeout(\n this.handleUpdateFilterTimeout,\n AdvancedFilterCreatorSelectValue.searchDebounceTime\n );\n }\n\n stopUpdateFilterTimer(): void {\n if (this.updateFilterTimer != null) {\n clearTimeout(this.updateFilterTimer);\n this.updateFilterTimer = undefined;\n }\n }\n\n updateTableFilter(): void {\n const { table, searchText } = this.state;\n const { timeZone } = this.props;\n const { tableUtils } = this;\n const column = table?.columns[0];\n const filters = [];\n if (column == null) {\n return;\n }\n let error;\n if (searchText.length > 0) {\n let filter = null;\n if (TableUtils.isCharType(column.type)) {\n // Just exact match for char\n filter = tableUtils.makeQuickFilter(column, searchText);\n } else if (TableUtils.isTextType(column.type)) {\n // case insensitive & contains search text\n filter = tableUtils.makeQuickFilter(column, `~${searchText}`, timeZone);\n } else {\n // greater than or equal search for everything else\n // we may want to be smarter with some other types (like dates)\n filter = tableUtils.makeQuickFilter(\n column,\n `>=${searchText}`,\n timeZone\n );\n }\n\n if (filter != null) {\n filters.push(filter);\n } else {\n error = 'Invalid search text';\n }\n }\n\n this.setState({ filters, error });\n }\n\n render(): React.ReactElement {\n const {\n error,\n filters,\n invertSelection,\n selectedValues,\n searchText,\n table,\n } = this.state;\n const { dh, formatter, showSearch } = this.props;\n const columnName = this.getColumnName();\n const displayedValuesText = this.getDisplayedValueText();\n const placeholderText = columnName ? `Find ${columnName}...` : '';\n\n return (\n <div className=\"advanced-filter-creator-select-value\">\n <div className={showSearch ? 'form-group' : ''}>\n <label htmlFor=\"advanced-filter-creator-select-value-input\">\n Select Values\n </label>\n {showSearch && (\n <input\n type=\"text\"\n className={classNames('form-control', {\n 'is-invalid': error != null,\n })}\n id=\"advanced-filter-creator-select-value-input\"\n placeholder={placeholderText}\n value={searchText}\n onChange={this.handleSearchChange}\n />\n )}\n </div>\n <AdvancedFilterCreatorSelectValueList\n dh={dh}\n table={table}\n filters={filters}\n invertSelection={invertSelection}\n selectedValues={selectedValues}\n formatter={formatter}\n onChange={this.handleListChange}\n />\n <div className=\"advanced-filter-creator-select-meta-row\">\n <div>\n <Button kind=\"ghost\" onClick={this.handleSelectAllClick}>\n Select All\n </Button>\n <Button kind=\"ghost\" onClick={this.handleClearAllClick}>\n Clear\n </Button>\n </div>\n <FadeTransition\n in={displayedValuesText != null}\n mountOnEnter\n unmountOnExit\n >\n <div className=\"row-count-info\">{displayedValuesText}</div>\n </FadeTransition>\n </div>\n </div>\n );\n }\n}\n\nexport default AdvancedFilterCreatorSelectValue;\n"],"mappings":"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","ignoreList":[]}
@@ -34,10 +34,9 @@ class AdvancedFilterCreatorSelectValueList extends PureComponent {
34
34
  this.handleViewportChange = this.handleViewportChange.bind(this);
35
35
  this.handleSelectionUpdate = this.handleSelectionUpdate.bind(this);
36
36
  this.handleTableUpdate = this.handleTableUpdate.bind(this);
37
- var {
38
- selectedValues,
39
- dh
40
- } = this.props;
37
+ var _this$props = this.props,
38
+ selectedValues = _this$props.selectedValues,
39
+ dh = _this$props.dh;
41
40
  this.dh = dh;
42
41
  this.list = null;
43
42
  this.state = {
@@ -49,18 +48,15 @@ class AdvancedFilterCreatorSelectValueList extends PureComponent {
49
48
  };
50
49
  }
51
50
  componentDidMount() {
52
- var {
53
- table
54
- } = this.props;
51
+ var table = this.props.table;
55
52
  if (table) this.startListening(table);
56
53
  }
57
54
  componentDidUpdate(prevProps) {
58
- var {
59
- filters,
60
- invertSelection,
61
- selectedValues,
62
- table
63
- } = this.props;
55
+ var _this$props2 = this.props,
56
+ filters = _this$props2.filters,
57
+ invertSelection = _this$props2.invertSelection,
58
+ selectedValues = _this$props2.selectedValues,
59
+ table = _this$props2.table;
64
60
  if (prevProps.table !== table) {
65
61
  if (prevProps.table) this.stopListening(prevProps.table);
66
62
  if (table) this.startListening(table);
@@ -82,18 +78,12 @@ class AdvancedFilterCreatorSelectValueList extends PureComponent {
82
78
  }
83
79
  }
84
80
  componentWillUnmount() {
85
- var {
86
- table
87
- } = this.props;
81
+ var table = this.props.table;
88
82
  if (table) this.stopListening(table);
89
83
  }
90
84
  handleSelect(itemIndex, value) {
91
- var {
92
- invertSelection
93
- } = this.props;
94
- var {
95
- selectedValues
96
- } = this.state;
85
+ var invertSelection = this.props.invertSelection;
86
+ var selectedValues = this.state.selectedValues;
97
87
  selectedValues = [...selectedValues];
98
88
  var selectedIndex = AdvancedFilterCreatorSelectValueList.indexOf(value, selectedValues);
99
89
  if (selectedIndex >= 0) {
@@ -105,12 +95,8 @@ class AdvancedFilterCreatorSelectValueList extends PureComponent {
105
95
  if (invertSelection) {
106
96
  isSelected = !isSelected;
107
97
  }
108
- var {
109
- offset
110
- } = this.state;
111
- var {
112
- items
113
- } = this.state;
98
+ var offset = this.state.offset;
99
+ var items = this.state.items;
114
100
  items = [...items];
115
101
  var visibleItemIndex = itemIndex - offset;
116
102
  if (visibleItemIndex >= 0 && visibleItemIndex < items.length) {
@@ -120,9 +106,7 @@ class AdvancedFilterCreatorSelectValueList extends PureComponent {
120
106
  items,
121
107
  selectedValues
122
108
  });
123
- var {
124
- onChange
125
- } = this.props;
109
+ var onChange = this.props.onChange;
126
110
  onChange(selectedValues, invertSelection);
127
111
  }
128
112
  handleViewportChange(top, bottom) {
@@ -132,15 +116,12 @@ class AdvancedFilterCreatorSelectValueList extends PureComponent {
132
116
  this.updateItemSelection();
133
117
  }
134
118
  handleTableUpdate(event) {
135
- var {
136
- table,
137
- formatter
138
- } = this.props;
119
+ var _this$props3 = this.props,
120
+ table = _this$props3.table,
121
+ formatter = _this$props3.formatter;
139
122
  if (!table) return;
140
123
  var data = event.detail;
141
- var {
142
- offset
143
- } = data;
124
+ var offset = data.offset;
144
125
  var items = [];
145
126
  var column = table.columns[0];
146
127
  for (var r = 0; r < data.rows.length; r += 1) {
@@ -177,12 +158,8 @@ class AdvancedFilterCreatorSelectValueList extends PureComponent {
177
158
  });
178
159
  }
179
160
  isValueSelected(value) {
180
- var {
181
- invertSelection
182
- } = this.props;
183
- var {
184
- selectedValues
185
- } = this.state;
161
+ var invertSelection = this.props.invertSelection;
162
+ var selectedValues = this.state.selectedValues;
186
163
 
187
164
  // Need to check if any of the valueOf matches, timestamp value that is equal
188
165
  var selectedIndex = AdvancedFilterCreatorSelectValueList.indexOf(value, selectedValues);
@@ -200,15 +177,11 @@ class AdvancedFilterCreatorSelectValueList extends PureComponent {
200
177
  }
201
178
  }
202
179
  updateItemSelection() {
203
- var {
204
- items
205
- } = this.state;
180
+ var items = this.state.items;
206
181
  items = [...items];
207
182
  for (var i = 0; i < items.length; i += 1) {
208
183
  var item = items[i];
209
- var {
210
- value
211
- } = item;
184
+ var value = item.value;
212
185
  item.isSelected = this.isValueSelected(value);
213
186
  }
214
187
  this.setState({
@@ -217,9 +190,7 @@ class AdvancedFilterCreatorSelectValueList extends PureComponent {
217
190
  }
218
191
  updateViewport(top, bottom) {
219
192
  var isLoading = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
220
- var {
221
- table
222
- } = this.props;
193
+ var table = this.props.table;
223
194
  if (table == null) {
224
195
  return;
225
196
  }
@@ -235,12 +206,11 @@ class AdvancedFilterCreatorSelectValueList extends PureComponent {
235
206
  table.setViewport(topRow, bottomRow);
236
207
  }
237
208
  render() {
238
- var {
239
- offset,
240
- isLoading,
241
- items,
242
- itemCount
243
- } = this.state;
209
+ var _this$state = this.state,
210
+ offset = _this$state.offset,
211
+ isLoading = _this$state.isLoading,
212
+ items = _this$state.items,
213
+ itemCount = _this$state.itemCount;
244
214
  return /*#__PURE__*/_jsxs("div", {
245
215
  className: "select-value-list-wrapper",
246
216
  children: [/*#__PURE__*/_jsx(SelectValueList, {
@@ -1 +1 @@
1
- {"version":3,"file":"AdvancedFilterCreatorSelectValueList.js","names":["React","PureComponent","LoadingSpinner","SelectValueList","FadeTransition","Log","jsx","_jsx","jsxs","_jsxs","log","module","AdvancedFilterCreatorSelectValueList","indexOf","value","values","i","length","v","valueOf","constructor","props","_defineProperty","handleSelect","bind","handleViewportChange","handleSelectionUpdate","handleTableUpdate","selectedValues","dh","list","state","itemCount","items","offset","isLoading","componentDidMount","table","startListening","componentDidUpdate","prevProps","filters","invertSelection","stopListening","resetViewport","setState","applyFilter","componentWillUnmount","itemIndex","selectedIndex","splice","push","isSelected","visibleItemIndex","onChange","top","bottom","updateViewport","updateItemSelection","event","formatter","data","detail","column","columns","r","rows","row","get","displayValue","className","children","getFormattedString","type","name","isValueSelected","debug2","size","addEventListener","Table","EVENT_UPDATED","removeEventListener","topRow","bottomRow","item","arguments","undefined","viewportSize","Math","max","setViewport","render","onSelect","onViewportChange","ref","in","mountOnEnter","unmountOnExit"],"sources":["../src/AdvancedFilterCreatorSelectValueList.tsx"],"sourcesContent":["/* eslint react/no-did-update-set-state: \"off\" */\nimport React, { PureComponent, type ReactElement } from 'react';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport { type Formatter } from '@deephaven/jsapi-utils';\nimport {\n LoadingSpinner,\n SelectValueList,\n type SelectItem,\n FadeTransition,\n} from '@deephaven/components';\nimport Log from '@deephaven/log';\n\nconst log = Log.module('AdvancedFilterCreatorSelectValueList');\n\ninterface AdvancedFilterCreatorSelectValueListProps<T> {\n dh: typeof DhType;\n selectedValues: (T | null)[];\n table?: DhType.Table;\n filters: DhType.FilterCondition[];\n invertSelection: boolean;\n onChange: (selectedValues: (T | null)[], invertSelection: boolean) => void;\n formatter: Formatter;\n}\n\ninterface AdvancedFilterCreatorSelectValueListState<T> {\n itemCount: number;\n items: SelectItem<T>[];\n offset: number;\n selectedValues: (T | null)[];\n isLoading: boolean;\n}\n/**\n * Select values from a long scrollable list.\n * Swaps items in and out for infinite scrolling\n */\nclass AdvancedFilterCreatorSelectValueList<T = unknown> extends PureComponent<\n AdvancedFilterCreatorSelectValueListProps<T>,\n AdvancedFilterCreatorSelectValueListState<T>\n> {\n static defaultProps = {\n invertSelection: true,\n selectedValues: [],\n onChange: (): void => undefined,\n };\n\n /**\n * Get the index of a value in an array. Has some special handling for some types, like DateTimes and Longs.\n * @param value The value to search for\n * @param values The array of values to search within\n */\n static indexOf(value: unknown, values: unknown[]): number {\n for (let i = 0; i < values.length; i += 1) {\n const v = values[i];\n if (\n v === value ||\n (v != null &&\n v.valueOf != null &&\n value != null &&\n value.valueOf != null &&\n v.valueOf() === value.valueOf())\n ) {\n return i;\n }\n }\n\n return -1;\n }\n\n constructor(props: AdvancedFilterCreatorSelectValueListProps<T>) {\n super(props);\n\n this.handleSelect = this.handleSelect.bind(this);\n this.handleViewportChange = this.handleViewportChange.bind(this);\n this.handleSelectionUpdate = this.handleSelectionUpdate.bind(this);\n this.handleTableUpdate = this.handleTableUpdate.bind(this);\n\n const { selectedValues, dh } = this.props;\n\n this.dh = dh;\n this.list = null;\n\n this.state = {\n itemCount: 0,\n items: [],\n offset: 0,\n selectedValues,\n isLoading: true,\n };\n }\n\n componentDidMount(): void {\n const { table } = this.props;\n if (table) this.startListening(table);\n }\n\n componentDidUpdate(\n prevProps: AdvancedFilterCreatorSelectValueListProps<T>\n ): void {\n const { filters, invertSelection, selectedValues, table } = this.props;\n if (prevProps.table !== table) {\n if (prevProps.table) this.stopListening(prevProps.table);\n if (table) this.startListening(table);\n this.resetViewport();\n }\n\n if (prevProps.invertSelection !== invertSelection) {\n this.setState({ selectedValues: [] }, this.handleSelectionUpdate);\n }\n\n if (prevProps.selectedValues !== selectedValues) {\n this.setState({ selectedValues }, this.handleSelectionUpdate);\n }\n\n if (prevProps.filters !== filters) {\n table?.applyFilter(filters);\n this.resetViewport();\n }\n }\n\n componentWillUnmount(): void {\n const { table } = this.props;\n if (table) this.stopListening(table);\n }\n\n dh: typeof DhType;\n\n list: SelectValueList<T> | null;\n\n handleSelect(itemIndex: number, value: T | null): void {\n const { invertSelection } = this.props;\n let { selectedValues } = this.state;\n selectedValues = [...selectedValues];\n const selectedIndex = AdvancedFilterCreatorSelectValueList.indexOf(\n value,\n selectedValues\n );\n if (selectedIndex >= 0) {\n selectedValues.splice(selectedIndex, 1);\n } else {\n selectedValues.push(value);\n }\n\n let isSelected = selectedIndex < 0;\n if (invertSelection) {\n isSelected = !isSelected;\n }\n\n const { offset } = this.state;\n let { items } = this.state;\n items = [...items];\n const visibleItemIndex = itemIndex - offset;\n if (visibleItemIndex >= 0 && visibleItemIndex < items.length) {\n items[visibleItemIndex].isSelected = isSelected;\n }\n\n this.setState({ items, selectedValues });\n\n const { onChange } = this.props;\n onChange(selectedValues, invertSelection);\n }\n\n handleViewportChange(top: number, bottom: number): void {\n this.updateViewport(top, bottom);\n }\n\n handleSelectionUpdate(): void {\n this.updateItemSelection();\n }\n\n handleTableUpdate(event: DhType.Event<DhType.ViewportData>): void {\n const { table, formatter } = this.props;\n if (!table) return;\n\n const data = event.detail;\n const { offset } = data;\n const items = [];\n const column = table.columns[0];\n for (let r = 0; r < data.rows.length; r += 1) {\n const row = data.rows[r];\n const value = row.get(column);\n let displayValue: string | JSX.Element;\n if (value == null) {\n displayValue = <i className=\"text-muted\">null</i>;\n } else if (value === '') {\n displayValue = <i className=\"text-muted\">empty</i>;\n } else {\n displayValue = formatter.getFormattedString(\n value,\n column.type,\n column.name\n );\n }\n const isSelected = this.isValueSelected(value);\n items.push({\n displayValue,\n value,\n isSelected,\n });\n }\n\n log.debug2('Received table update:', offset, items.length);\n\n const itemCount = table.size;\n this.setState({ itemCount, items, offset, isLoading: false });\n }\n\n isValueSelected(value: T): boolean {\n const { invertSelection } = this.props;\n const { selectedValues } = this.state;\n\n // Need to check if any of the valueOf matches, timestamp value that is equal\n const selectedIndex = AdvancedFilterCreatorSelectValueList.indexOf(\n value,\n selectedValues\n );\n\n return invertSelection ? selectedIndex < 0 : selectedIndex >= 0;\n }\n\n startListening(table: DhType.Table): void {\n table.addEventListener(this.dh.Table.EVENT_UPDATED, this.handleTableUpdate);\n }\n\n stopListening(table: DhType.Table): void {\n table.removeEventListener(\n this.dh.Table.EVENT_UPDATED,\n this.handleTableUpdate\n );\n }\n\n resetViewport(): void {\n if (this.list && this.list.topRow != null && this.list.bottomRow != null) {\n this.updateViewport(this.list.topRow, this.list.bottomRow, true);\n }\n }\n\n updateItemSelection(): void {\n let { items } = this.state;\n\n items = [...items];\n\n for (let i = 0; i < items.length; i += 1) {\n const item = items[i];\n const { value } = item;\n item.isSelected = this.isValueSelected(value);\n }\n\n this.setState({ items });\n }\n\n updateViewport(top: number, bottom: number, isLoading = false): void {\n const { table } = this.props;\n if (table == null) {\n return;\n }\n\n if (isLoading) {\n this.setState({ isLoading: true });\n }\n\n const viewportSize = bottom - top + 1;\n const topRow = Math.max(0, top - viewportSize * 3);\n const bottomRow = Math.max(topRow, bottom + viewportSize * 3);\n\n log.debug2('Setting viewport', topRow, ',', bottomRow);\n table.setViewport(topRow, bottomRow);\n }\n\n render(): ReactElement {\n const { offset, isLoading, items, itemCount } = this.state;\n\n return (\n <div className=\"select-value-list-wrapper\">\n <SelectValueList\n itemCount={itemCount}\n items={items}\n offset={offset}\n onSelect={this.handleSelect}\n onViewportChange={this.handleViewportChange}\n ref={list => {\n this.list = list;\n }}\n />\n <FadeTransition in={isLoading} mountOnEnter unmountOnExit>\n <div className=\"loading-list\">\n <LoadingSpinner className=\"loading-spinner-large\" />\n </div>\n </FadeTransition>\n </div>\n );\n }\n}\n\nexport default AdvancedFilterCreatorSelectValueList;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"AdvancedFilterCreatorSelectValueList.js","names":["React","PureComponent","LoadingSpinner","SelectValueList","FadeTransition","Log","jsx","_jsx","jsxs","_jsxs","log","module","AdvancedFilterCreatorSelectValueList","indexOf","value","values","i","length","v","valueOf","constructor","props","_defineProperty","handleSelect","bind","handleViewportChange","handleSelectionUpdate","handleTableUpdate","_this$props","selectedValues","dh","list","state","itemCount","items","offset","isLoading","componentDidMount","table","startListening","componentDidUpdate","prevProps","_this$props2","filters","invertSelection","stopListening","resetViewport","setState","applyFilter","componentWillUnmount","itemIndex","selectedIndex","splice","push","isSelected","visibleItemIndex","onChange","top","bottom","updateViewport","updateItemSelection","event","_this$props3","formatter","data","detail","column","columns","r","rows","row","get","displayValue","className","children","getFormattedString","type","name","isValueSelected","debug2","size","addEventListener","Table","EVENT_UPDATED","removeEventListener","topRow","bottomRow","item","arguments","undefined","viewportSize","Math","max","setViewport","render","_this$state","onSelect","onViewportChange","ref","in","mountOnEnter","unmountOnExit"],"sources":["../src/AdvancedFilterCreatorSelectValueList.tsx"],"sourcesContent":["/* eslint react/no-did-update-set-state: \"off\" */\nimport React, { PureComponent, type ReactElement } from 'react';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport { type Formatter } from '@deephaven/jsapi-utils';\nimport {\n LoadingSpinner,\n SelectValueList,\n type SelectItem,\n FadeTransition,\n} from '@deephaven/components';\nimport Log from '@deephaven/log';\n\nconst log = Log.module('AdvancedFilterCreatorSelectValueList');\n\ninterface AdvancedFilterCreatorSelectValueListProps<T> {\n dh: typeof DhType;\n selectedValues: (T | null)[];\n table?: DhType.Table;\n filters: DhType.FilterCondition[];\n invertSelection: boolean;\n onChange: (selectedValues: (T | null)[], invertSelection: boolean) => void;\n formatter: Formatter;\n}\n\ninterface AdvancedFilterCreatorSelectValueListState<T> {\n itemCount: number;\n items: SelectItem<T>[];\n offset: number;\n selectedValues: (T | null)[];\n isLoading: boolean;\n}\n/**\n * Select values from a long scrollable list.\n * Swaps items in and out for infinite scrolling\n */\nclass AdvancedFilterCreatorSelectValueList<T = unknown> extends PureComponent<\n AdvancedFilterCreatorSelectValueListProps<T>,\n AdvancedFilterCreatorSelectValueListState<T>\n> {\n static defaultProps = {\n invertSelection: true,\n selectedValues: [],\n onChange: (): void => undefined,\n };\n\n /**\n * Get the index of a value in an array. Has some special handling for some types, like DateTimes and Longs.\n * @param value The value to search for\n * @param values The array of values to search within\n */\n static indexOf(value: unknown, values: unknown[]): number {\n for (let i = 0; i < values.length; i += 1) {\n const v = values[i];\n if (\n v === value ||\n (v != null &&\n v.valueOf != null &&\n value != null &&\n value.valueOf != null &&\n v.valueOf() === value.valueOf())\n ) {\n return i;\n }\n }\n\n return -1;\n }\n\n constructor(props: AdvancedFilterCreatorSelectValueListProps<T>) {\n super(props);\n\n this.handleSelect = this.handleSelect.bind(this);\n this.handleViewportChange = this.handleViewportChange.bind(this);\n this.handleSelectionUpdate = this.handleSelectionUpdate.bind(this);\n this.handleTableUpdate = this.handleTableUpdate.bind(this);\n\n const { selectedValues, dh } = this.props;\n\n this.dh = dh;\n this.list = null;\n\n this.state = {\n itemCount: 0,\n items: [],\n offset: 0,\n selectedValues,\n isLoading: true,\n };\n }\n\n componentDidMount(): void {\n const { table } = this.props;\n if (table) this.startListening(table);\n }\n\n componentDidUpdate(\n prevProps: AdvancedFilterCreatorSelectValueListProps<T>\n ): void {\n const { filters, invertSelection, selectedValues, table } = this.props;\n if (prevProps.table !== table) {\n if (prevProps.table) this.stopListening(prevProps.table);\n if (table) this.startListening(table);\n this.resetViewport();\n }\n\n if (prevProps.invertSelection !== invertSelection) {\n this.setState({ selectedValues: [] }, this.handleSelectionUpdate);\n }\n\n if (prevProps.selectedValues !== selectedValues) {\n this.setState({ selectedValues }, this.handleSelectionUpdate);\n }\n\n if (prevProps.filters !== filters) {\n table?.applyFilter(filters);\n this.resetViewport();\n }\n }\n\n componentWillUnmount(): void {\n const { table } = this.props;\n if (table) this.stopListening(table);\n }\n\n dh: typeof DhType;\n\n list: SelectValueList<T> | null;\n\n handleSelect(itemIndex: number, value: T | null): void {\n const { invertSelection } = this.props;\n let { selectedValues } = this.state;\n selectedValues = [...selectedValues];\n const selectedIndex = AdvancedFilterCreatorSelectValueList.indexOf(\n value,\n selectedValues\n );\n if (selectedIndex >= 0) {\n selectedValues.splice(selectedIndex, 1);\n } else {\n selectedValues.push(value);\n }\n\n let isSelected = selectedIndex < 0;\n if (invertSelection) {\n isSelected = !isSelected;\n }\n\n const { offset } = this.state;\n let { items } = this.state;\n items = [...items];\n const visibleItemIndex = itemIndex - offset;\n if (visibleItemIndex >= 0 && visibleItemIndex < items.length) {\n items[visibleItemIndex].isSelected = isSelected;\n }\n\n this.setState({ items, selectedValues });\n\n const { onChange } = this.props;\n onChange(selectedValues, invertSelection);\n }\n\n handleViewportChange(top: number, bottom: number): void {\n this.updateViewport(top, bottom);\n }\n\n handleSelectionUpdate(): void {\n this.updateItemSelection();\n }\n\n handleTableUpdate(event: DhType.Event<DhType.ViewportData>): void {\n const { table, formatter } = this.props;\n if (!table) return;\n\n const data = event.detail;\n const { offset } = data;\n const items = [];\n const column = table.columns[0];\n for (let r = 0; r < data.rows.length; r += 1) {\n const row = data.rows[r];\n const value = row.get(column);\n let displayValue: string | JSX.Element;\n if (value == null) {\n displayValue = <i className=\"text-muted\">null</i>;\n } else if (value === '') {\n displayValue = <i className=\"text-muted\">empty</i>;\n } else {\n displayValue = formatter.getFormattedString(\n value,\n column.type,\n column.name\n );\n }\n const isSelected = this.isValueSelected(value);\n items.push({\n displayValue,\n value,\n isSelected,\n });\n }\n\n log.debug2('Received table update:', offset, items.length);\n\n const itemCount = table.size;\n this.setState({ itemCount, items, offset, isLoading: false });\n }\n\n isValueSelected(value: T): boolean {\n const { invertSelection } = this.props;\n const { selectedValues } = this.state;\n\n // Need to check if any of the valueOf matches, timestamp value that is equal\n const selectedIndex = AdvancedFilterCreatorSelectValueList.indexOf(\n value,\n selectedValues\n );\n\n return invertSelection ? selectedIndex < 0 : selectedIndex >= 0;\n }\n\n startListening(table: DhType.Table): void {\n table.addEventListener(this.dh.Table.EVENT_UPDATED, this.handleTableUpdate);\n }\n\n stopListening(table: DhType.Table): void {\n table.removeEventListener(\n this.dh.Table.EVENT_UPDATED,\n this.handleTableUpdate\n );\n }\n\n resetViewport(): void {\n if (this.list && this.list.topRow != null && this.list.bottomRow != null) {\n this.updateViewport(this.list.topRow, this.list.bottomRow, true);\n }\n }\n\n updateItemSelection(): void {\n let { items } = this.state;\n\n items = [...items];\n\n for (let i = 0; i < items.length; i += 1) {\n const item = items[i];\n const { value } = item;\n item.isSelected = this.isValueSelected(value);\n }\n\n this.setState({ items });\n }\n\n updateViewport(top: number, bottom: number, isLoading = false): void {\n const { table } = this.props;\n if (table == null) {\n return;\n }\n\n if (isLoading) {\n this.setState({ isLoading: true });\n }\n\n const viewportSize = bottom - top + 1;\n const topRow = Math.max(0, top - viewportSize * 3);\n const bottomRow = Math.max(topRow, bottom + viewportSize * 3);\n\n log.debug2('Setting viewport', topRow, ',', bottomRow);\n table.setViewport(topRow, bottomRow);\n }\n\n render(): ReactElement {\n const { offset, isLoading, items, itemCount } = this.state;\n\n return (\n <div className=\"select-value-list-wrapper\">\n <SelectValueList\n itemCount={itemCount}\n items={items}\n offset={offset}\n onSelect={this.handleSelect}\n onViewportChange={this.handleViewportChange}\n ref={list => {\n this.list = list;\n }}\n />\n <FadeTransition in={isLoading} mountOnEnter unmountOnExit>\n <div className=\"loading-list\">\n <LoadingSpinner className=\"loading-spinner-large\" />\n </div>\n </FadeTransition>\n </div>\n );\n }\n}\n\nexport default AdvancedFilterCreatorSelectValueList;\n"],"mappings":"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","ignoreList":[]}
@@ -10,14 +10,12 @@ export function isColumnHeaderGroup(x) {
10
10
  }
11
11
  export default class ColumnHeaderGroup {
12
12
  constructor(_ref) {
13
- var {
14
- name,
15
- children,
16
- color,
17
- depth,
18
- childIndexes,
19
- parent
20
- } = _ref;
13
+ var name = _ref.name,
14
+ children = _ref.children,
15
+ color = _ref.color,
16
+ depth = _ref.depth,
17
+ childIndexes = _ref.childIndexes,
18
+ parent = _ref.parent;
21
19
  _defineProperty(this, "name", void 0);
22
20
  _defineProperty(this, "children", void 0);
23
21
  _defineProperty(this, "depth", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"ColumnHeaderGroup.js","names":["GridUtils","memoizeOne","Log","log","module","isColumnHeaderGroup","x","ColumnHeaderGroup","constructor","_ref","name","children","color","depth","childIndexes","parent","_defineProperty","movedItems","flattenedIndexes","flat","visibleIndexes","getVisibleIndexes","start","Math","min","end","max","length","warn","concat","undefined","setParent","addChildren","newChildren","Set","removeChildren","forEach","delete","isNew","startsWith","NEW_GROUP_PREFIX","isValid"],"sources":["../src/ColumnHeaderGroup.ts"],"sourcesContent":["import {\n type MoveOperation,\n GridUtils,\n type ModelIndex,\n type BoundedAxisRange,\n type IColumnHeaderGroup,\n} from '@deephaven/grid';\nimport memoizeOne from 'memoize-one';\nimport Log from '@deephaven/log';\n\nconst log = Log.module('ColumnHeaderGroup');\n\nexport function isColumnHeaderGroup(x: unknown): x is ColumnHeaderGroup {\n return x instanceof ColumnHeaderGroup;\n}\n\nexport type ColumnHeaderGroupConfig = {\n name: string;\n children: string[];\n color?: string | null;\n depth: number;\n childIndexes: ModelIndex[];\n parent?: string;\n};\n\nexport default class ColumnHeaderGroup implements IColumnHeaderGroup {\n static NEW_GROUP_PREFIX = ':newGroup';\n\n name: string;\n\n children: string[];\n\n depth: number;\n\n parent?: string;\n\n color?: string;\n\n childIndexes: ModelIndex[];\n\n constructor({\n name,\n children,\n color,\n depth,\n childIndexes,\n parent,\n }: ColumnHeaderGroupConfig) {\n this.name = name;\n this.children = children;\n this.color = color ?? undefined;\n this.depth = depth;\n this.childIndexes = childIndexes;\n this.parent = parent;\n }\n\n getVisibleRange = memoizeOne(\n (movedItems: readonly MoveOperation[]): BoundedAxisRange => {\n const flattenedIndexes = this.childIndexes.flat();\n const visibleIndexes = GridUtils.getVisibleIndexes(\n flattenedIndexes,\n movedItems\n );\n\n const start = Math.min(...visibleIndexes);\n const end = Math.max(...visibleIndexes);\n\n if (end - start !== flattenedIndexes.length - 1) {\n log.warn(`Column header group ${this.name} is not contiguous`);\n }\n\n return [start, end];\n }\n );\n\n setParent(parent: string | undefined): void {\n this.parent = parent;\n }\n\n addChildren(children: string[]): void {\n const newChildren = new Set(this.children.concat(children));\n this.children = [...newChildren];\n }\n\n removeChildren(children: string[]): void {\n const newChildren = new Set(this.children);\n children.forEach(name => newChildren.delete(name));\n this.children = [...newChildren];\n }\n\n get isNew(): boolean {\n return this.name.startsWith(ColumnHeaderGroup.NEW_GROUP_PREFIX);\n }\n\n /**\n * Checks if a group is valid.\n * An invalid group needs to be re-parsed with the corresponding model.\n * @returns true if the group is valid (all children have indexes)\n */\n isValid(): boolean {\n return this.children.length === this.childIndexes.length;\n }\n}\n"],"mappings":";;;AAAA,SAEEA,SAAS,QAIJ,iBAAiB;AACxB,OAAOC,UAAU,MAAM,aAAa;AACpC,OAAOC,GAAG,MAAM,gBAAgB;AAEhC,IAAMC,GAAG,GAAGD,GAAG,CAACE,MAAM,CAAC,mBAAmB,CAAC;AAE3C,OAAO,SAASC,mBAAmBA,CAACC,CAAU,EAA0B;EACtE,OAAOA,CAAC,YAAYC,iBAAiB;AACvC;AAWA,eAAe,MAAMA,iBAAiB,CAA+B;EAenEC,WAAWA,CAAAC,IAAA,EAOiB;IAAA,IAPhB;MACVC,IAAI;MACJC,QAAQ;MACRC,KAAK;MACLC,KAAK;MACLC,YAAY;MACZC;IACuB,CAAC,GAAAN,IAAA;IAAAO,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA,0BASRf,UAAU,CACzBgB,UAAoC,IAAuB;MAC1D,IAAMC,gBAAgB,GAAG,IAAI,CAACJ,YAAY,CAACK,IAAI,CAAC,CAAC;MACjD,IAAMC,cAAc,GAAGpB,SAAS,CAACqB,iBAAiB,CAChDH,gBAAgB,EAChBD,UACF,CAAC;MAED,IAAMK,KAAK,GAAGC,IAAI,CAACC,GAAG,CAAC,GAAGJ,cAAc,CAAC;MACzC,IAAMK,GAAG,GAAGF,IAAI,CAACG,GAAG,CAAC,GAAGN,cAAc,CAAC;MAEvC,IAAIK,GAAG,GAAGH,KAAK,KAAKJ,gBAAgB,CAACS,MAAM,GAAG,CAAC,EAAE;QAC/CxB,GAAG,CAACyB,IAAI,wBAAAC,MAAA,CAAwB,IAAI,CAACnB,IAAI,uBAAoB,CAAC;MAChE;MAEA,OAAO,CAACY,KAAK,EAAEG,GAAG,CAAC;IACrB,CACF,CAAC;IAzBC,IAAI,CAACf,IAAI,GAAGA,IAAI;IAChB,IAAI,CAACC,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAACC,KAAK,GAAGA,KAAK,aAALA,KAAK,cAALA,KAAK,GAAIkB,SAAS;IAC/B,IAAI,CAACjB,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACC,YAAY,GAAGA,YAAY;IAChC,IAAI,CAACC,MAAM,GAAGA,MAAM;EACtB;EAqBAgB,SAASA,CAAChB,MAA0B,EAAQ;IAC1C,IAAI,CAACA,MAAM,GAAGA,MAAM;EACtB;EAEAiB,WAAWA,CAACrB,QAAkB,EAAQ;IACpC,IAAMsB,WAAW,GAAG,IAAIC,GAAG,CAAC,IAAI,CAACvB,QAAQ,CAACkB,MAAM,CAAClB,QAAQ,CAAC,CAAC;IAC3D,IAAI,CAACA,QAAQ,GAAG,CAAC,GAAGsB,WAAW,CAAC;EAClC;EAEAE,cAAcA,CAACxB,QAAkB,EAAQ;IACvC,IAAMsB,WAAW,GAAG,IAAIC,GAAG,CAAC,IAAI,CAACvB,QAAQ,CAAC;IAC1CA,QAAQ,CAACyB,OAAO,CAAC1B,IAAI,IAAIuB,WAAW,CAACI,MAAM,CAAC3B,IAAI,CAAC,CAAC;IAClD,IAAI,CAACC,QAAQ,GAAG,CAAC,GAAGsB,WAAW,CAAC;EAClC;EAEA,IAAIK,KAAKA,CAAA,EAAY;IACnB,OAAO,IAAI,CAAC5B,IAAI,CAAC6B,UAAU,CAAChC,iBAAiB,CAACiC,gBAAgB,CAAC;EACjE;;EAEA;AACF;AACA;AACA;AACA;EACEC,OAAOA,CAAA,EAAY;IACjB,OAAO,IAAI,CAAC9B,QAAQ,CAACgB,MAAM,KAAK,IAAI,CAACb,YAAY,CAACa,MAAM;EAC1D;AACF;AAACX,eAAA,CA7EoBT,iBAAiB,sBACV,WAAW","ignoreList":[]}
1
+ {"version":3,"file":"ColumnHeaderGroup.js","names":["GridUtils","memoizeOne","Log","log","module","isColumnHeaderGroup","x","ColumnHeaderGroup","constructor","_ref","name","children","color","depth","childIndexes","parent","_defineProperty","movedItems","flattenedIndexes","flat","visibleIndexes","getVisibleIndexes","start","Math","min","end","max","length","warn","concat","undefined","setParent","addChildren","newChildren","Set","removeChildren","forEach","delete","isNew","startsWith","NEW_GROUP_PREFIX","isValid"],"sources":["../src/ColumnHeaderGroup.ts"],"sourcesContent":["import {\n type MoveOperation,\n GridUtils,\n type ModelIndex,\n type BoundedAxisRange,\n type IColumnHeaderGroup,\n} from '@deephaven/grid';\nimport memoizeOne from 'memoize-one';\nimport Log from '@deephaven/log';\n\nconst log = Log.module('ColumnHeaderGroup');\n\nexport function isColumnHeaderGroup(x: unknown): x is ColumnHeaderGroup {\n return x instanceof ColumnHeaderGroup;\n}\n\nexport type ColumnHeaderGroupConfig = {\n name: string;\n children: string[];\n color?: string | null;\n depth: number;\n childIndexes: ModelIndex[];\n parent?: string;\n};\n\nexport default class ColumnHeaderGroup implements IColumnHeaderGroup {\n static NEW_GROUP_PREFIX = ':newGroup';\n\n name: string;\n\n children: string[];\n\n depth: number;\n\n parent?: string;\n\n color?: string;\n\n childIndexes: ModelIndex[];\n\n constructor({\n name,\n children,\n color,\n depth,\n childIndexes,\n parent,\n }: ColumnHeaderGroupConfig) {\n this.name = name;\n this.children = children;\n this.color = color ?? undefined;\n this.depth = depth;\n this.childIndexes = childIndexes;\n this.parent = parent;\n }\n\n getVisibleRange = memoizeOne(\n (movedItems: readonly MoveOperation[]): BoundedAxisRange => {\n const flattenedIndexes = this.childIndexes.flat();\n const visibleIndexes = GridUtils.getVisibleIndexes(\n flattenedIndexes,\n movedItems\n );\n\n const start = Math.min(...visibleIndexes);\n const end = Math.max(...visibleIndexes);\n\n if (end - start !== flattenedIndexes.length - 1) {\n log.warn(`Column header group ${this.name} is not contiguous`);\n }\n\n return [start, end];\n }\n );\n\n setParent(parent: string | undefined): void {\n this.parent = parent;\n }\n\n addChildren(children: string[]): void {\n const newChildren = new Set(this.children.concat(children));\n this.children = [...newChildren];\n }\n\n removeChildren(children: string[]): void {\n const newChildren = new Set(this.children);\n children.forEach(name => newChildren.delete(name));\n this.children = [...newChildren];\n }\n\n get isNew(): boolean {\n return this.name.startsWith(ColumnHeaderGroup.NEW_GROUP_PREFIX);\n }\n\n /**\n * Checks if a group is valid.\n * An invalid group needs to be re-parsed with the corresponding model.\n * @returns true if the group is valid (all children have indexes)\n */\n isValid(): boolean {\n return this.children.length === this.childIndexes.length;\n }\n}\n"],"mappings":"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","ignoreList":[]}