@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.
- package/dist/AdvancedFilterCreator.js +65 -102
- package/dist/AdvancedFilterCreator.js.map +1 -1
- package/dist/AdvancedFilterCreatorFilterItem.js +22 -37
- package/dist/AdvancedFilterCreatorFilterItem.js.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValue.js +37 -63
- package/dist/AdvancedFilterCreatorSelectValue.js.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValueList.js +29 -59
- package/dist/AdvancedFilterCreatorSelectValueList.js.map +1 -1
- package/dist/ColumnHeaderGroup.js +6 -8
- package/dist/ColumnHeaderGroup.js.map +1 -1
- package/dist/ColumnStatistics.js +22 -28
- package/dist/ColumnStatistics.js.map +1 -1
- package/dist/CrossColumnSearch.js +20 -29
- package/dist/CrossColumnSearch.js.map +1 -1
- package/dist/FilterInputField.js +19 -46
- package/dist/FilterInputField.js.map +1 -1
- package/dist/GotoRow.js +32 -29
- package/dist/GotoRow.js.map +1 -1
- package/dist/IrisGrid.js +490 -822
- package/dist/IrisGrid.js.map +1 -1
- package/dist/IrisGridBottomBar.js +10 -11
- package/dist/IrisGridBottomBar.js.map +1 -1
- package/dist/IrisGridCacheUtils.js +28 -8
- package/dist/IrisGridCacheUtils.js.map +1 -1
- package/dist/IrisGridCellOverflowModal.js +30 -13
- package/dist/IrisGridCellOverflowModal.js.map +1 -1
- package/dist/IrisGridCellRendererUtils.js +6 -12
- package/dist/IrisGridCellRendererUtils.js.map +1 -1
- package/dist/IrisGridCopyHandler.js +28 -47
- package/dist/IrisGridCopyHandler.js.map +1 -1
- package/dist/IrisGridMetricCalculator.js +28 -51
- package/dist/IrisGridMetricCalculator.js.map +1 -1
- package/dist/IrisGridModelUpdater.js +32 -30
- package/dist/IrisGridModelUpdater.js.map +1 -1
- package/dist/IrisGridPartitionSelector.js +28 -62
- package/dist/IrisGridPartitionSelector.js.map +1 -1
- package/dist/IrisGridProxyModel.js +7 -12
- package/dist/IrisGridProxyModel.js.map +1 -1
- package/dist/IrisGridRenderer.js +162 -264
- package/dist/IrisGridRenderer.js.map +1 -1
- package/dist/IrisGridTableModel.js +23 -16
- package/dist/IrisGridTableModel.js.map +1 -1
- package/dist/IrisGridTableModelTemplate.js +49 -73
- package/dist/IrisGridTableModelTemplate.js.map +1 -1
- package/dist/IrisGridTestUtils.js +19 -19
- package/dist/IrisGridTestUtils.js.map +1 -1
- package/dist/IrisGridTextCellRenderer.js +35 -52
- package/dist/IrisGridTextCellRenderer.js.map +1 -1
- package/dist/IrisGridTheme.js +9 -1
- package/dist/IrisGridTheme.js.map +1 -1
- package/dist/IrisGridThemeProvider.js +5 -7
- package/dist/IrisGridThemeProvider.js.map +1 -1
- package/dist/IrisGridTreeTableModel.js +5 -9
- package/dist/IrisGridTreeTableModel.js.map +1 -1
- package/dist/IrisGridUtils.js +246 -300
- package/dist/IrisGridUtils.js.map +1 -1
- package/dist/NoPastePermissionModal.js +3 -5
- package/dist/NoPastePermissionModal.js.map +1 -1
- package/dist/PendingDataBottomBar.js +27 -16
- package/dist/PendingDataBottomBar.js.map +1 -1
- package/dist/ToastBottomBar.js +16 -8
- package/dist/ToastBottomBar.js.map +1 -1
- package/dist/format-context-menus/CustomFormatAction.js +11 -24
- package/dist/format-context-menus/CustomFormatAction.js.map +1 -1
- package/dist/key-handlers/CopyCellKeyHandler.js +3 -4
- package/dist/key-handlers/CopyCellKeyHandler.js.map +1 -1
- package/dist/key-handlers/CopyKeyHandler.js +1 -3
- package/dist/key-handlers/CopyKeyHandler.js.map +1 -1
- package/dist/key-handlers/ReverseKeyHandler.js +1 -3
- package/dist/key-handlers/ReverseKeyHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js +35 -59
- package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js +13 -29
- package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js +8 -17
- package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.js +96 -199
- package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js +2 -4
- package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridFilterMouseHandler.js +16 -30
- package/dist/mousehandlers/IrisGridFilterMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridPartitionedTableMouseHandler.js +5 -13
- package/dist/mousehandlers/IrisGridPartitionedTableMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridRowTreeMouseHandler.js +20 -36
- package/dist/mousehandlers/IrisGridRowTreeMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridSortMouseHandler.js +3 -5
- package/dist/mousehandlers/IrisGridSortMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridTokenMouseHandler.js +9 -18
- package/dist/mousehandlers/IrisGridTokenMouseHandler.js.map +1 -1
- package/dist/mousehandlers/PendingMouseHandler.js +10 -18
- package/dist/mousehandlers/PendingMouseHandler.js.map +1 -1
- package/dist/sidebar/AdvancedSettingsMenu.js +12 -5
- package/dist/sidebar/AdvancedSettingsMenu.js.map +1 -1
- package/dist/sidebar/ChartBuilder.js +45 -102
- package/dist/sidebar/ChartBuilder.js.map +1 -1
- package/dist/sidebar/CustomColumnBuilder.js +35 -77
- package/dist/sidebar/CustomColumnBuilder.js.map +1 -1
- package/dist/sidebar/CustomColumnInput.js +9 -11
- package/dist/sidebar/CustomColumnInput.js.map +1 -1
- package/dist/sidebar/InputEditor.js +17 -24
- package/dist/sidebar/InputEditor.js.map +1 -1
- package/dist/sidebar/PluginTableOptionsErrorBoundary.js +6 -11
- package/dist/sidebar/PluginTableOptionsErrorBoundary.js.map +1 -1
- package/dist/sidebar/RollupRows.js +72 -113
- package/dist/sidebar/RollupRows.js.map +1 -1
- package/dist/sidebar/SelectDistinctBuilder.js +16 -33
- package/dist/sidebar/SelectDistinctBuilder.js.map +1 -1
- package/dist/sidebar/TableCsvExporter.js +50 -74
- package/dist/sidebar/TableCsvExporter.js.map +1 -1
- package/dist/sidebar/TableSaver.js +18 -42
- package/dist/sidebar/TableSaver.js.map +1 -1
- package/dist/sidebar/aggregations/AggregationEdit.js +25 -18
- package/dist/sidebar/aggregations/AggregationEdit.js.map +1 -1
- package/dist/sidebar/aggregations/AggregationUtils.d.ts.map +1 -1
- package/dist/sidebar/aggregations/AggregationUtils.js +3 -4
- package/dist/sidebar/aggregations/AggregationUtils.js.map +1 -1
- package/dist/sidebar/aggregations/Aggregations.js +45 -34
- package/dist/sidebar/aggregations/Aggregations.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js +35 -24
- package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionEditor.js +38 -21
- package/dist/sidebar/conditional-formatting/ConditionEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js +27 -11
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js +9 -11
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js +48 -57
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js.map +1 -1
- package/dist/sidebar/conditional-formatting/RowFormatEditor.js +35 -24
- package/dist/sidebar/conditional-formatting/RowFormatEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/StyleEditor.js +26 -11
- package/dist/sidebar/conditional-formatting/StyleEditor.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/SearchItem.js +5 -7
- package/dist/sidebar/visibility-ordering-builder/SearchItem.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/SearchWithModal.js +24 -18
- package/dist/sidebar/visibility-ordering-builder/SearchWithModal.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js +166 -256
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.js +4 -11
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.js +28 -14
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js +16 -19
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/PointerSensorWithInteraction.js +1 -3
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/PointerSensorWithInteraction.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.js +19 -29
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeDndContext.js +39 -52
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeDndContext.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.js +18 -23
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.js +19 -15
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/keyboardCoordinates.js +16 -30
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/keyboardCoordinates.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js +30 -39
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js.map +1 -1
- package/package.json +16 -16
|
@@ -48,23 +48,17 @@ class AdvancedFilterCreator extends PureComponent {
|
|
|
48
48
|
this.handleFocusTrapEnd = this.handleFocusTrapEnd.bind(this);
|
|
49
49
|
this.handleUpdateTimeout = this.handleUpdateTimeout.bind(this);
|
|
50
50
|
this.focusTrapContainer = /*#__PURE__*/React.createRef();
|
|
51
|
-
var
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
filterOperators,
|
|
58
|
-
invertSelection,
|
|
59
|
-
selectedValues
|
|
60
|
-
} = options;
|
|
51
|
+
var model = props.model,
|
|
52
|
+
column = props.column,
|
|
53
|
+
options = props.options;
|
|
54
|
+
var filterOperators = options.filterOperators,
|
|
55
|
+
invertSelection = options.invertSelection,
|
|
56
|
+
selectedValues = options.selectedValues;
|
|
61
57
|
|
|
62
58
|
// can be null or an empty array
|
|
63
59
|
var filterItems = (_options$filterItems$ = (_options$filterItems = options.filterItems) === null || _options$filterItems === void 0 ? void 0 : _options$filterItems.map(_ref => {
|
|
64
|
-
var
|
|
65
|
-
|
|
66
|
-
value
|
|
67
|
-
} = _ref;
|
|
60
|
+
var selectedType = _ref.selectedType,
|
|
61
|
+
value = _ref.value;
|
|
68
62
|
return {
|
|
69
63
|
selectedType,
|
|
70
64
|
value,
|
|
@@ -117,10 +111,9 @@ class AdvancedFilterCreator extends PureComponent {
|
|
|
117
111
|
return this.handleFilterDelete.bind(this, index);
|
|
118
112
|
}
|
|
119
113
|
initValuesTable() {
|
|
120
|
-
var
|
|
121
|
-
model,
|
|
122
|
-
column
|
|
123
|
-
} = this.props;
|
|
114
|
+
var _this$props = this.props,
|
|
115
|
+
model = _this$props.model,
|
|
116
|
+
column = _this$props.column;
|
|
124
117
|
if (!model.isValuesTableAvailable) {
|
|
125
118
|
log.debug('No values table for this model, just ignore');
|
|
126
119
|
return;
|
|
@@ -158,10 +151,9 @@ class AdvancedFilterCreator extends PureComponent {
|
|
|
158
151
|
}
|
|
159
152
|
}
|
|
160
153
|
handleAddAnd() {
|
|
161
|
-
var
|
|
162
|
-
filterItems,
|
|
163
|
-
filterOperators
|
|
164
|
-
} = this.state;
|
|
154
|
+
var _this$state = this.state,
|
|
155
|
+
filterItems = _this$state.filterItems,
|
|
156
|
+
filterOperators = _this$state.filterOperators;
|
|
165
157
|
filterItems = filterItems.concat(AdvancedFilterCreator.makeFilterItem());
|
|
166
158
|
filterOperators = filterOperators.concat(FilterOperator.and);
|
|
167
159
|
this.setState({
|
|
@@ -170,10 +162,9 @@ class AdvancedFilterCreator extends PureComponent {
|
|
|
170
162
|
});
|
|
171
163
|
}
|
|
172
164
|
handleAddOr() {
|
|
173
|
-
var
|
|
174
|
-
filterItems,
|
|
175
|
-
filterOperators
|
|
176
|
-
} = this.state;
|
|
165
|
+
var _this$state2 = this.state,
|
|
166
|
+
filterItems = _this$state2.filterItems,
|
|
167
|
+
filterOperators = _this$state2.filterOperators;
|
|
177
168
|
filterItems = filterItems.concat(AdvancedFilterCreator.makeFilterItem());
|
|
178
169
|
filterOperators = filterOperators.concat(FilterOperator.or);
|
|
179
170
|
this.setState({
|
|
@@ -182,9 +173,7 @@ class AdvancedFilterCreator extends PureComponent {
|
|
|
182
173
|
});
|
|
183
174
|
}
|
|
184
175
|
handleChangeFilterOperator(index, operator) {
|
|
185
|
-
var
|
|
186
|
-
filterOperators
|
|
187
|
-
} = this.state;
|
|
176
|
+
var filterOperators = this.state.filterOperators;
|
|
188
177
|
filterOperators = [...filterOperators];
|
|
189
178
|
assertFilterOperatorValue(operator);
|
|
190
179
|
filterOperators[index] = operator;
|
|
@@ -194,13 +183,9 @@ class AdvancedFilterCreator extends PureComponent {
|
|
|
194
183
|
this.startUpdateTimer();
|
|
195
184
|
}
|
|
196
185
|
handleFilterChange(filterIndex, selectedType, value) {
|
|
197
|
-
var
|
|
198
|
-
filterItems
|
|
199
|
-
} = this.state;
|
|
186
|
+
var filterItems = this.state.filterItems;
|
|
200
187
|
filterItems = [...filterItems];
|
|
201
|
-
var
|
|
202
|
-
key
|
|
203
|
-
} = filterItems[filterIndex];
|
|
188
|
+
var key = filterItems[filterIndex].key;
|
|
204
189
|
filterItems[filterIndex] = {
|
|
205
190
|
key,
|
|
206
191
|
selectedType,
|
|
@@ -212,10 +197,9 @@ class AdvancedFilterCreator extends PureComponent {
|
|
|
212
197
|
this.startUpdateTimer();
|
|
213
198
|
}
|
|
214
199
|
handleFilterDelete(filterIndex) {
|
|
215
|
-
var
|
|
216
|
-
filterItems,
|
|
217
|
-
filterOperators
|
|
218
|
-
} = this.state;
|
|
200
|
+
var _this$state3 = this.state,
|
|
201
|
+
filterItems = _this$state3.filterItems,
|
|
202
|
+
filterOperators = _this$state3.filterOperators;
|
|
219
203
|
filterItems = [...filterItems];
|
|
220
204
|
filterOperators = [...filterOperators];
|
|
221
205
|
if (filterIndex < filterItems.length) {
|
|
@@ -271,9 +255,7 @@ class AdvancedFilterCreator extends PureComponent {
|
|
|
271
255
|
log.debug('Submitting and Closing Advanced Filter');
|
|
272
256
|
this.stopUpdateTimer();
|
|
273
257
|
this.sendUpdate();
|
|
274
|
-
var
|
|
275
|
-
onDone
|
|
276
|
-
} = this.props;
|
|
258
|
+
var onDone = this.props.onDone;
|
|
277
259
|
onDone();
|
|
278
260
|
event.preventDefault();
|
|
279
261
|
}
|
|
@@ -288,17 +270,13 @@ class AdvancedFilterCreator extends PureComponent {
|
|
|
288
270
|
* @returns true If the add filter buttons should be shown, false otherwise
|
|
289
271
|
*/
|
|
290
272
|
shouldShowAddFilter() {
|
|
291
|
-
var
|
|
292
|
-
filterItems
|
|
293
|
-
} = this.state;
|
|
273
|
+
var filterItems = this.state.filterItems;
|
|
294
274
|
if (filterItems.length === 0) {
|
|
295
275
|
return false;
|
|
296
276
|
}
|
|
297
277
|
var filterItem = filterItems[filterItems.length - 1];
|
|
298
|
-
var
|
|
299
|
-
|
|
300
|
-
value
|
|
301
|
-
} = filterItem;
|
|
278
|
+
var selectedType = filterItem.selectedType,
|
|
279
|
+
value = filterItem.value;
|
|
302
280
|
return selectedType != null && selectedType.length > 0 && value != null && value.length > 0;
|
|
303
281
|
}
|
|
304
282
|
|
|
@@ -309,13 +287,10 @@ class AdvancedFilterCreator extends PureComponent {
|
|
|
309
287
|
*/
|
|
310
288
|
sortTable(direction) {
|
|
311
289
|
var addToExisting = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
312
|
-
var
|
|
313
|
-
column,
|
|
314
|
-
onSortChange
|
|
315
|
-
|
|
316
|
-
var {
|
|
317
|
-
isSortable
|
|
318
|
-
} = this.state;
|
|
290
|
+
var _this$props2 = this.props,
|
|
291
|
+
column = _this$props2.column,
|
|
292
|
+
onSortChange = _this$props2.onSortChange;
|
|
293
|
+
var isSortable = this.state.isSortable;
|
|
319
294
|
if (isSortable) {
|
|
320
295
|
onSortChange(column, direction, addToExisting);
|
|
321
296
|
}
|
|
@@ -331,26 +306,20 @@ class AdvancedFilterCreator extends PureComponent {
|
|
|
331
306
|
}
|
|
332
307
|
}
|
|
333
308
|
sendUpdate() {
|
|
334
|
-
var
|
|
335
|
-
filterItems,
|
|
336
|
-
filterOperators,
|
|
337
|
-
invertSelection,
|
|
338
|
-
selectedValues
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
} = this.props;
|
|
346
|
-
var {
|
|
347
|
-
formatter
|
|
348
|
-
} = model;
|
|
309
|
+
var _this$state4 = this.state,
|
|
310
|
+
filterItems = _this$state4.filterItems,
|
|
311
|
+
filterOperators = _this$state4.filterOperators,
|
|
312
|
+
invertSelection = _this$state4.invertSelection,
|
|
313
|
+
selectedValues = _this$state4.selectedValues;
|
|
314
|
+
var _this$props3 = this.props,
|
|
315
|
+
column = _this$props3.column,
|
|
316
|
+
onFilterChange = _this$props3.onFilterChange,
|
|
317
|
+
model = _this$props3.model,
|
|
318
|
+
tableUtils = _this$props3.tableUtils;
|
|
319
|
+
var formatter = model.formatter;
|
|
349
320
|
var items = filterItems.filter(_ref2 => {
|
|
350
|
-
var
|
|
351
|
-
|
|
352
|
-
value
|
|
353
|
-
} = _ref2;
|
|
321
|
+
var selectedType = _ref2.selectedType,
|
|
322
|
+
value = _ref2.value;
|
|
354
323
|
return selectedType != null && value != null && value !== '';
|
|
355
324
|
});
|
|
356
325
|
var operators = filterOperators.filter((operator, i) => operator != null && filterItems[i].selectedType != null && filterItems[i].value != null && filterItems[i].value !== '').slice(0, items.length - 1);
|
|
@@ -367,28 +336,24 @@ class AdvancedFilterCreator extends PureComponent {
|
|
|
367
336
|
}
|
|
368
337
|
render() {
|
|
369
338
|
var _this = this;
|
|
370
|
-
var
|
|
371
|
-
column,
|
|
372
|
-
model,
|
|
373
|
-
sortDirection,
|
|
374
|
-
formatter,
|
|
375
|
-
tableUtils,
|
|
376
|
-
isMaximized,
|
|
377
|
-
onToggleMaximize
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
var {
|
|
389
|
-
dh,
|
|
390
|
-
isValuesTableAvailable
|
|
391
|
-
} = model;
|
|
339
|
+
var _this$props4 = this.props,
|
|
340
|
+
column = _this$props4.column,
|
|
341
|
+
model = _this$props4.model,
|
|
342
|
+
sortDirection = _this$props4.sortDirection,
|
|
343
|
+
formatter = _this$props4.formatter,
|
|
344
|
+
tableUtils = _this$props4.tableUtils,
|
|
345
|
+
isMaximized = _this$props4.isMaximized,
|
|
346
|
+
onToggleMaximize = _this$props4.onToggleMaximize;
|
|
347
|
+
var _this$state5 = this.state,
|
|
348
|
+
filterItems = _this$state5.filterItems,
|
|
349
|
+
filterOperators = _this$state5.filterOperators,
|
|
350
|
+
invertSelection = _this$state5.invertSelection,
|
|
351
|
+
selectedValues = _this$state5.selectedValues,
|
|
352
|
+
valuesTable = _this$state5.valuesTable,
|
|
353
|
+
valuesTableError = _this$state5.valuesTableError,
|
|
354
|
+
isSortable = _this$state5.isSortable;
|
|
355
|
+
var dh = model.dh,
|
|
356
|
+
isValuesTableAvailable = model.isValuesTableAvailable;
|
|
392
357
|
var isBoolean = TableUtils.isBooleanType(column.type);
|
|
393
358
|
var isDateType = TableUtils.isDateType(column.type);
|
|
394
359
|
var filterTypes = this.getFilterTypes(column.type);
|
|
@@ -397,11 +362,9 @@ class AdvancedFilterCreator extends PureComponent {
|
|
|
397
362
|
if (!isBoolean && filterTypes.length) {
|
|
398
363
|
var _loop = function _loop(i) {
|
|
399
364
|
var filterItem = filterItems[i];
|
|
400
|
-
var
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
value
|
|
404
|
-
} = filterItem;
|
|
365
|
+
var key = filterItem.key,
|
|
366
|
+
selectedType = filterItem.selectedType,
|
|
367
|
+
value = filterItem.value;
|
|
405
368
|
var element = /*#__PURE__*/_jsx(AdvancedFilterCreatorFilterItem, {
|
|
406
369
|
column: column,
|
|
407
370
|
filterTypes: filterTypes,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdvancedFilterCreator.js","names":["React","PureComponent","classNames","FontAwesomeIcon","memoize","Operator","FilterOperator","assertOperatorValue","assertFilterOperatorValue","dhSortAmountDown","dhNewCircleLargeFilled","vsScreenFull","vsScreenNormal","TableUtils","Button","ContextActionUtils","Log","assertNotNull","PromiseUtils","nanoid","AdvancedFilterCreatorFilterItem","AdvancedFilterCreatorSelectValue","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","log","module","AdvancedFilterCreator","makeFilterItem","key","constructor","props","_options$filterItems$","_options$filterItems","_defineProperty","columnType","getFilterTypes","handleAddAnd","bind","handleAddOr","handleChangeFilterOperator","handleDone","handleFilterChange","handleFilterDelete","handleSelectValueChange","handleReset","handleSortDown","handleSortUp","handleSubmit","handleFocusTrapStart","handleFocusTrapEnd","handleUpdateTimeout","focusTrapContainer","createRef","model","column","options","filterOperators","invertSelection","selectedValues","filterItems","map","_ref","selectedType","value","length","push","columnIndex","getColumnIndexByName","name","isSortable","isColumnSortable","state","valuesTableError","valuesTable","undefined","componentDidMount","initValuesTable","componentWillUnmount","debounceTimeout","clearTimeout","sendUpdate","valuesTablePromise","cancel","getFilterChangeHandler","index","getFilterDeleteHandler","isValuesTableAvailable","debug","makeCancelableTablePromise","then","_valuesTable$columns$","columns","sort","asc","applySort","setState","catch","error","isCanceled","_this$focusTrapContai","current","querySelector","focus","_this$focusTrapContai2","inputs","querySelectorAll","element","concat","and","or","operator","startUpdateTimer","filterIndex","splice","event","addToExisting","isModifierKeyDown","sortTable","sortDirection","descending","ascending","stopUpdateTimer","preventDefault","onDone","shouldShowAddFilter","filterItem","direction","arguments","onSortChange","setTimeout","debounceFilterUpdate","onFilterChange","tableUtils","formatter","items","filter","_ref2","operators","i","slice","makeAdvancedFilter","timeZone","render","_this","isMaximized","onToggleMaximize","dh","isBoolean","isBooleanType","type","isDateType","filterTypes","substring","lastIndexOf","filterItemElements","_loop","onChange","onDelete","filterOperator","isAndFilter","operatorElement","className","children","kind","active","onClick","showAddFilterItem","addFilterItem","hidden","icon","disabled","tooltip","role","tabIndex","onFocus","onSubmit","ref","rotation","table","showSearch"],"sources":["../src/AdvancedFilterCreator.tsx"],"sourcesContent":["/* eslint-disable jsx-a11y/no-noninteractive-tabindex */\n// disabled for tab-index on focus traps, which are intentionally non-interactive\n\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport memoize from 'memoize-one';\nimport {\n Operator as FilterOperator,\n type OperatorValue as FilterOperatorValue,\n type TypeValue as FilterTypeValue,\n assertOperatorValue as assertFilterOperatorValue,\n} from '@deephaven/filters';\nimport {\n dhSortAmountDown,\n dhNewCircleLargeFilled,\n vsScreenFull,\n vsScreenNormal,\n} from '@deephaven/icons';\nimport {\n type Formatter,\n TableUtils,\n type SortDirection,\n type FilterItem,\n} from '@deephaven/jsapi-utils';\nimport { Button, ContextActionUtils } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport {\n assertNotNull,\n type CancelablePromise,\n PromiseUtils,\n} from '@deephaven/utils';\nimport type { dh } from '@deephaven/jsapi-types';\nimport { nanoid } from 'nanoid';\nimport AdvancedFilterCreatorFilterItem from './AdvancedFilterCreatorFilterItem';\nimport AdvancedFilterCreatorSelectValue from './AdvancedFilterCreatorSelectValue';\nimport './AdvancedFilterCreator.scss';\nimport type IrisGridModel from './IrisGridModel';\nimport { type AdvancedFilterOptions } from './CommonTypes';\n\nconst log = Log.module('AdvancedFilterCreator');\n\ntype FilterChangeHandler = (\n selectedType: FilterTypeValue,\n value: string\n) => void;\n\ninterface AdvancedFilterCreatorProps {\n model: IrisGridModel;\n column: dh.Column;\n onFilterChange: (\n column: dh.Column,\n filter: dh.FilterCondition | null,\n options: AdvancedFilterOptions\n ) => void;\n onSortChange: (\n column: dh.Column,\n direction: SortDirection,\n addToExisting?: boolean\n ) => void;\n onDone: () => void;\n options: AdvancedFilterOptions;\n sortDirection: SortDirection;\n formatter: Formatter;\n tableUtils: TableUtils;\n isMaximized: boolean;\n onToggleMaximize: () => void;\n}\n\ninterface AdvancedFilterItem {\n selectedType?: FilterTypeValue;\n value?: string;\n key: string;\n}\n\ninterface AdvancedFilterCreatorState {\n // Filter items\n filterItems: AdvancedFilterItem[];\n\n // And/Or between the filter items\n filterOperators: FilterOperatorValue[];\n\n invertSelection: boolean;\n\n selectedValues: unknown[];\n\n valuesTableError: null;\n valuesTable?: dh.Table;\n\n isSortable: boolean;\n}\n\nclass AdvancedFilterCreator extends PureComponent<\n AdvancedFilterCreatorProps,\n AdvancedFilterCreatorState\n> {\n static debounceFilterUpdate = 250;\n\n static defaultProps = {\n options: {\n filterItems: null,\n filterOperators: null,\n invertSelection: true,\n selectedValues: [],\n },\n sortDirection: null,\n };\n\n static makeFilterItem(): AdvancedFilterItem {\n return { key: nanoid() };\n }\n\n constructor(props: AdvancedFilterCreatorProps) {\n super(props);\n\n this.handleAddAnd = this.handleAddAnd.bind(this);\n this.handleAddOr = this.handleAddOr.bind(this);\n this.handleChangeFilterOperator =\n this.handleChangeFilterOperator.bind(this);\n this.handleDone = this.handleDone.bind(this);\n this.handleFilterChange = this.handleFilterChange.bind(this);\n this.handleFilterDelete = this.handleFilterDelete.bind(this);\n this.handleSelectValueChange = this.handleSelectValueChange.bind(this);\n this.handleReset = this.handleReset.bind(this);\n this.handleSortDown = this.handleSortDown.bind(this);\n this.handleSortUp = this.handleSortUp.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n this.handleFocusTrapStart = this.handleFocusTrapStart.bind(this);\n this.handleFocusTrapEnd = this.handleFocusTrapEnd.bind(this);\n this.handleUpdateTimeout = this.handleUpdateTimeout.bind(this);\n\n this.focusTrapContainer = React.createRef();\n\n const { model, column, options } = props;\n let { filterOperators, invertSelection, selectedValues } = options;\n\n // can be null or an empty array\n const filterItems: AdvancedFilterItem[] =\n options.filterItems?.map(({ selectedType, value }) => ({\n selectedType,\n value,\n key: nanoid(),\n })) ?? [];\n if (filterItems.length === 0) {\n filterItems.push(AdvancedFilterCreator.makeFilterItem());\n }\n if (filterOperators == null) {\n filterOperators = [];\n }\n if (invertSelection == null) {\n invertSelection = true;\n }\n if (selectedValues == null) {\n selectedValues = [];\n }\n\n const columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n const isSortable = model.isColumnSortable(columnIndex);\n\n this.state = {\n // Filter items\n filterItems,\n\n // And/Or between the filter items\n filterOperators,\n\n invertSelection,\n\n selectedValues,\n\n valuesTableError: null,\n valuesTable: undefined,\n\n isSortable,\n };\n }\n\n componentDidMount(): void {\n this.initValuesTable();\n }\n\n componentWillUnmount(): void {\n if (this.debounceTimeout != null) {\n clearTimeout(this.debounceTimeout);\n this.sendUpdate();\n }\n if (this.valuesTablePromise != null) {\n this.valuesTablePromise.cancel();\n }\n }\n\n focusTrapContainer: React.RefObject<HTMLFormElement>;\n\n debounceTimeout?: ReturnType<typeof setTimeout>;\n\n valuesTablePromise?: CancelablePromise<dh.Table>;\n\n getFilterChangeHandler(index: number): FilterChangeHandler {\n return this.handleFilterChange.bind(this, index);\n }\n\n getFilterDeleteHandler(index: number): () => void {\n return this.handleFilterDelete.bind(this, index);\n }\n\n getFilterTypes = memoize((columnType: string): FilterTypeValue[] =>\n TableUtils.getFilterTypes(columnType)\n );\n\n initValuesTable(): void {\n const { model, column } = this.props;\n if (!model.isValuesTableAvailable) {\n log.debug('No values table for this model, just ignore');\n return;\n }\n\n this.valuesTablePromise = TableUtils.makeCancelableTablePromise(\n model.valuesTable(column)\n );\n this.valuesTablePromise\n .then(valuesTable => {\n if (valuesTable.columns[0].isSortable ?? true) {\n const sort = valuesTable.columns[0].sort().asc();\n valuesTable.applySort([sort]);\n }\n this.setState({ valuesTable });\n })\n .catch(error => {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n\n log.error('Unable to open values table', error);\n this.setState({ valuesTableError: error });\n });\n }\n\n handleFocusTrapEnd(): void {\n (\n this.focusTrapContainer?.current?.querySelector(\n 'button,select,input,textarea'\n ) as HTMLElement\n ).focus();\n }\n\n handleFocusTrapStart(): void {\n const inputs = this.focusTrapContainer?.current?.querySelectorAll(\n 'button,select,input,textarea'\n );\n if (inputs && inputs.length > 0) {\n const element = inputs[inputs.length - 1] as HTMLElement;\n element.focus();\n }\n }\n\n handleAddAnd(): void {\n let { filterItems, filterOperators } = this.state;\n filterItems = filterItems.concat(AdvancedFilterCreator.makeFilterItem());\n filterOperators = filterOperators.concat(FilterOperator.and);\n this.setState({ filterItems, filterOperators });\n }\n\n handleAddOr(): void {\n let { filterItems, filterOperators } = this.state;\n filterItems = filterItems.concat(AdvancedFilterCreator.makeFilterItem());\n filterOperators = filterOperators.concat(FilterOperator.or);\n this.setState({ filterItems, filterOperators });\n }\n\n handleChangeFilterOperator(index: number, operator: string): void {\n let { filterOperators } = this.state;\n filterOperators = [...filterOperators];\n\n assertFilterOperatorValue(operator);\n\n filterOperators[index] = operator;\n\n this.setState({ filterOperators });\n\n this.startUpdateTimer();\n }\n\n handleFilterChange(\n filterIndex: number,\n selectedType: FilterTypeValue,\n value: string\n ): void {\n let { filterItems } = this.state;\n filterItems = [...filterItems];\n const { key } = filterItems[filterIndex];\n filterItems[filterIndex] = { key, selectedType, value };\n\n this.setState({ filterItems });\n\n this.startUpdateTimer();\n }\n\n handleFilterDelete(filterIndex: number): void {\n let { filterItems, filterOperators } = this.state;\n filterItems = [...filterItems];\n filterOperators = [...filterOperators];\n if (filterIndex < filterItems.length) {\n filterItems.splice(filterIndex, 1);\n }\n\n if (filterIndex < filterOperators.length) {\n filterOperators.splice(filterIndex, 1);\n } else if (filterIndex === filterOperators.length) {\n // When deleting the last filter item, we also need to remove the last filter operator\n filterOperators.splice(filterOperators.length - 1, 1);\n }\n\n if (filterItems.length === 0) {\n filterItems.push(AdvancedFilterCreator.makeFilterItem());\n }\n\n this.setState({ filterItems, filterOperators });\n\n this.startUpdateTimer();\n }\n\n handleSelectValueChange(\n selectedValues: unknown[],\n invertSelection: boolean\n ): void {\n this.setState({ selectedValues, invertSelection });\n\n this.startUpdateTimer();\n }\n\n handleReset(): void {\n log.debug('Resetting Advanced Filter');\n\n this.setState({\n filterItems: [AdvancedFilterCreator.makeFilterItem()],\n filterOperators: [],\n selectedValues: [],\n invertSelection: true,\n });\n\n this.startUpdateTimer();\n }\n\n handleSortDown(event: React.MouseEvent<HTMLButtonElement>): void {\n const addToExisting = ContextActionUtils.isModifierKeyDown(event);\n this.sortTable(TableUtils.sortDirection.descending, addToExisting);\n }\n\n handleSortUp(event: React.MouseEvent<HTMLButtonElement>): void {\n const addToExisting = ContextActionUtils.isModifierKeyDown(event);\n this.sortTable(TableUtils.sortDirection.ascending, addToExisting);\n }\n\n handleSubmit(event: React.FormEvent<HTMLFormElement>): void {\n log.debug('Submitting Advanced Filter');\n this.stopUpdateTimer();\n this.sendUpdate();\n\n event.preventDefault();\n }\n\n handleDone(event: React.MouseEvent<HTMLButtonElement>): void {\n log.debug('Submitting and Closing Advanced Filter');\n this.stopUpdateTimer();\n this.sendUpdate();\n\n const { onDone } = this.props;\n onDone();\n\n event.preventDefault();\n }\n\n handleUpdateTimeout(): void {\n this.debounceTimeout = undefined;\n this.sendUpdate();\n }\n\n /**\n * Convenience function to check if the previous filter has been inputted, and\n * we should show the add filter buttons (+ AND OR)\n * @returns true If the add filter buttons should be shown, false otherwise\n */\n shouldShowAddFilter(): boolean {\n const { filterItems } = this.state;\n if (filterItems.length === 0) {\n return false;\n }\n\n const filterItem = filterItems[filterItems.length - 1];\n const { selectedType, value } = filterItem;\n\n return (\n selectedType != null &&\n selectedType.length > 0 &&\n value != null &&\n value.length > 0\n );\n }\n\n /**\n * Sorts the table in the specified direction. If already sorted in that direction, remove it.\n * @param direction The sort direction, ASC or DESC\n * @param addToExisting Add to the existing sort, or replace the existing table sort\n */\n sortTable(direction: SortDirection, addToExisting = false): void {\n const { column, onSortChange } = this.props;\n const { isSortable } = this.state;\n if (isSortable) {\n onSortChange(column, direction, addToExisting);\n }\n }\n\n startUpdateTimer(): void {\n this.stopUpdateTimer();\n\n this.debounceTimeout = setTimeout(\n this.handleUpdateTimeout,\n AdvancedFilterCreator.debounceFilterUpdate\n );\n }\n\n stopUpdateTimer(): void {\n if (this.debounceTimeout !== undefined) {\n clearTimeout(this.debounceTimeout);\n this.debounceTimeout = undefined;\n }\n }\n\n sendUpdate(): void {\n const { filterItems, filterOperators, invertSelection, selectedValues } =\n this.state;\n const { column, onFilterChange, model, tableUtils } = this.props;\n const { formatter } = model;\n\n const items = filterItems.filter(\n ({ selectedType, value }) =>\n selectedType != null && value != null && value !== ''\n ) as FilterItem[];\n\n const operators = filterOperators\n .filter(\n (operator, i) =>\n operator != null &&\n filterItems[i].selectedType != null &&\n filterItems[i].value != null &&\n filterItems[i].value !== ''\n )\n .slice(0, items.length - 1);\n // slice last operator, user may have set an operator but not a value\n\n const options = {\n filterItems: items,\n filterOperators: operators,\n invertSelection,\n selectedValues,\n };\n\n const filter = tableUtils.makeAdvancedFilter(\n column,\n options,\n formatter.timeZone\n );\n\n onFilterChange(column, filter, options);\n }\n\n render(): JSX.Element {\n const {\n column,\n model,\n sortDirection,\n formatter,\n tableUtils,\n isMaximized,\n onToggleMaximize,\n } = this.props;\n const {\n filterItems,\n filterOperators,\n invertSelection,\n selectedValues,\n valuesTable,\n valuesTableError,\n isSortable,\n } = this.state;\n const { dh, isValuesTableAvailable } = model;\n const isBoolean = TableUtils.isBooleanType(column.type);\n const isDateType = TableUtils.isDateType(column.type);\n const filterTypes = this.getFilterTypes(column.type);\n const columnType = column.type.substring(column.type.lastIndexOf('.') + 1);\n const filterItemElements = [];\n if (!isBoolean && filterTypes.length) {\n for (let i = 0; i < filterItems.length; i += 1) {\n const filterItem = filterItems[i];\n const { key, selectedType, value } = filterItem;\n\n const element = (\n <AdvancedFilterCreatorFilterItem\n key={key}\n column={column}\n filterTypes={filterTypes}\n onChange={this.getFilterChangeHandler(i)}\n onDelete={this.getFilterDeleteHandler(i)}\n selectedType={selectedType}\n value={value}\n formatter={formatter}\n tableUtils={tableUtils}\n />\n );\n filterItemElements.push(element);\n\n if (i < filterOperators.length) {\n const filterOperator = filterOperators[i];\n const isAndFilter = filterOperator === FilterOperator.and;\n const operatorElement = (\n <div\n key={`filterOperator${key}`}\n className=\"form-row justify-content-end advanced-filter-creator-filter-operator\"\n >\n <Button\n kind=\"ghost\"\n className={classNames('filter-operator', {\n active: isAndFilter,\n })}\n onClick={() =>\n this.handleChangeFilterOperator(i, FilterOperator.and)\n }\n >\n AND\n </Button>\n <Button\n kind=\"ghost\"\n className={classNames('filter-operator', {\n active: !isAndFilter,\n })}\n onClick={() =>\n this.handleChangeFilterOperator(i, FilterOperator.or)\n }\n >\n OR\n </Button>\n </div>\n );\n filterItemElements.push(operatorElement);\n }\n }\n }\n const showAddFilterItem = this.shouldShowAddFilter();\n const addFilterItem = (\n <div\n key=\"addFilterItem\"\n className={classNames('form-row justify-content-end add-filter-item', {\n hidden: !showAddFilterItem,\n })}\n >\n <span className=\"text-muted\">\n <FontAwesomeIcon icon={dhNewCircleLargeFilled} />\n </span>\n <Button\n kind=\"ghost\"\n className=\"btn-filter-item\"\n onClick={this.handleAddAnd}\n disabled={!showAddFilterItem}\n tooltip=\"Add filter with AND\"\n >\n AND\n </Button>\n <Button\n kind=\"ghost\"\n className=\"btn-filter-item\"\n onClick={this.handleAddOr}\n disabled={!showAddFilterItem}\n tooltip=\"Add filter with OR\"\n >\n OR\n </Button>\n </div>\n );\n filterItemElements.push(addFilterItem);\n\n return (\n <div className=\"advanced-filter-creator\" role=\"presentation\">\n <div tabIndex={0} onFocus={this.handleFocusTrapStart} />\n <form onSubmit={this.handleSubmit} ref={this.focusTrapContainer}>\n <div className=\"title-bar\">\n <h6 className=\"advanced-filter-title\">Advanced Filters</h6>\n <div className=\"advanced-filter-menu-buttons\">\n <Button\n kind=\"ghost\"\n className={classNames('sort-operator', {\n active: sortDirection === TableUtils.sortDirection.descending,\n })}\n onClick={this.handleSortDown}\n icon={dhSortAmountDown}\n tooltip={\n isSortable ? `Sort ${column.name} Descending` : 'Not sortable'\n }\n disabled={!isSortable}\n />\n <Button\n kind=\"ghost\"\n className={classNames('sort-operator', {\n active: sortDirection === TableUtils.sortDirection.ascending,\n })}\n onClick={this.handleSortUp}\n icon={\n <FontAwesomeIcon icon={dhSortAmountDown} rotation={180} />\n }\n tooltip={\n isSortable ? `Sort ${column.name} Ascending` : 'Not sortable'\n }\n disabled={!isSortable}\n />\n <Button\n kind=\"ghost\"\n className={classNames('sort-operator', {\n active: isMaximized,\n })}\n onClick={onToggleMaximize}\n icon={isMaximized ? vsScreenNormal : vsScreenFull}\n tooltip={\n isMaximized ? 'Restore dialog size' : 'Maximize dialog'\n }\n />\n </div>\n </div>\n <hr />\n <div className=\"advanced-filter-column-name\">\n {column.name} \n <span className=\"column-type\">({columnType})</span>\n </div>\n {filterItemElements}\n {isValuesTableAvailable && valuesTableError == null && (\n <>\n {!isBoolean && <hr />}\n <div className=\"form-group advanced-filter-values-group\">\n <AdvancedFilterCreatorSelectValue\n dh={dh}\n table={valuesTable}\n onChange={this.handleSelectValueChange}\n invertSelection={invertSelection}\n selectedValues={selectedValues}\n formatter={formatter}\n showSearch={!isDateType}\n timeZone={formatter.timeZone}\n />\n </div>\n </>\n )}\n <div className=\"form-row justify-content-end\">\n <Button\n kind=\"secondary\"\n className=\"mr-2\"\n onClick={this.handleReset}\n >\n Reset\n </Button>\n <Button kind=\"primary\" onClick={this.handleDone}>\n Done\n </Button>\n </div>\n </form>\n <div tabIndex={0} onFocus={this.handleFocusTrapEnd} />\n </div>\n );\n }\n}\n\nexport default AdvancedFilterCreator;\n"],"mappings":";;;AAAA;AACA;;AAEA,OAAOA,KAAK,IAAIC,aAAa,QAAQ,OAAO;AAC5C,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,eAAe,QAAQ,gCAAgC;AAChE,OAAOC,OAAO,MAAM,aAAa;AACjC,SACEC,QAAQ,IAAIC,cAAc,EAG1BC,mBAAmB,IAAIC,yBAAyB,QAC3C,oBAAoB;AAC3B,SACEC,gBAAgB,EAChBC,sBAAsB,EACtBC,YAAY,EACZC,cAAc,QACT,kBAAkB;AACzB,SAEEC,UAAU,QAGL,wBAAwB;AAC/B,SAASC,MAAM,EAAEC,kBAAkB,QAAQ,uBAAuB;AAClE,OAAOC,GAAG,MAAM,gBAAgB;AAChC,SACEC,aAAa,EAEbC,YAAY,QACP,kBAAkB;AAEzB,SAASC,MAAM,QAAQ,QAAQ;AAAC,OACzBC,+BAA+B;AAAA,OAC/BC,gCAAgC;AAAA;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA,EAAAC,QAAA,IAAAC,SAAA;AAKvC,IAAMC,GAAG,GAAGZ,GAAG,CAACa,MAAM,CAAC,uBAAuB,CAAC;AAoD/C,MAAMC,qBAAqB,SAAS7B,aAAa,CAG/C;EAaA,OAAO8B,cAAcA,CAAA,EAAuB;IAC1C,OAAO;MAAEC,GAAG,EAAEb,MAAM,CAAC;IAAE,CAAC;EAC1B;EAEAc,WAAWA,CAACC,KAAiC,EAAE;IAAA,IAAAC,qBAAA,EAAAC,oBAAA;IAC7C,KAAK,CAACF,KAAK,CAAC;IAACG,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA,yBA6FEjC,OAAO,CAAEkC,UAAkB,IAC1CzB,UAAU,CAAC0B,cAAc,CAACD,UAAU,CACtC,CAAC;IA7FC,IAAI,CAACE,YAAY,GAAG,IAAI,CAACA,YAAY,CAACC,IAAI,CAAC,IAAI,CAAC;IAChD,IAAI,CAACC,WAAW,GAAG,IAAI,CAACA,WAAW,CAACD,IAAI,CAAC,IAAI,CAAC;IAC9C,IAAI,CAACE,0BAA0B,GAC7B,IAAI,CAACA,0BAA0B,CAACF,IAAI,CAAC,IAAI,CAAC;IAC5C,IAAI,CAACG,UAAU,GAAG,IAAI,CAACA,UAAU,CAACH,IAAI,CAAC,IAAI,CAAC;IAC5C,IAAI,CAACI,kBAAkB,GAAG,IAAI,CAACA,kBAAkB,CAACJ,IAAI,CAAC,IAAI,CAAC;IAC5D,IAAI,CAACK,kBAAkB,GAAG,IAAI,CAACA,kBAAkB,CAACL,IAAI,CAAC,IAAI,CAAC;IAC5D,IAAI,CAACM,uBAAuB,GAAG,IAAI,CAACA,uBAAuB,CAACN,IAAI,CAAC,IAAI,CAAC;IACtE,IAAI,CAACO,WAAW,GAAG,IAAI,CAACA,WAAW,CAACP,IAAI,CAAC,IAAI,CAAC;IAC9C,IAAI,CAACQ,cAAc,GAAG,IAAI,CAACA,cAAc,CAACR,IAAI,CAAC,IAAI,CAAC;IACpD,IAAI,CAACS,YAAY,GAAG,IAAI,CAACA,YAAY,CAACT,IAAI,CAAC,IAAI,CAAC;IAChD,IAAI,CAACU,YAAY,GAAG,IAAI,CAACA,YAAY,CAACV,IAAI,CAAC,IAAI,CAAC;IAChD,IAAI,CAACW,oBAAoB,GAAG,IAAI,CAACA,oBAAoB,CAACX,IAAI,CAAC,IAAI,CAAC;IAChE,IAAI,CAACY,kBAAkB,GAAG,IAAI,CAACA,kBAAkB,CAACZ,IAAI,CAAC,IAAI,CAAC;IAC5D,IAAI,CAACa,mBAAmB,GAAG,IAAI,CAACA,mBAAmB,CAACb,IAAI,CAAC,IAAI,CAAC;IAE9D,IAAI,CAACc,kBAAkB,gBAAGvD,KAAK,CAACwD,SAAS,CAAC,CAAC;IAE3C,IAAM;MAAEC,KAAK;MAAEC,MAAM;MAAEC;IAAQ,CAAC,GAAGzB,KAAK;IACxC,IAAI;MAAE0B,eAAe;MAAEC,eAAe;MAAEC;IAAe,CAAC,GAAGH,OAAO;;IAElE;IACA,IAAMI,WAAiC,IAAA5B,qBAAA,IAAAC,oBAAA,GACrCuB,OAAO,CAACI,WAAW,cAAA3B,oBAAA,uBAAnBA,oBAAA,CAAqB4B,GAAG,CAACC,IAAA;MAAA,IAAC;QAAEC,YAAY;QAAEC;MAAM,CAAC,GAAAF,IAAA;MAAA,OAAM;QACrDC,YAAY;QACZC,KAAK;QACLnC,GAAG,EAAEb,MAAM,CAAC;MACd,CAAC;IAAA,CAAC,CAAC,cAAAgB,qBAAA,cAAAA,qBAAA,GAAI,EAAE;IACX,IAAI4B,WAAW,CAACK,MAAM,KAAK,CAAC,EAAE;MAC5BL,WAAW,CAACM,IAAI,CAACvC,qBAAqB,CAACC,cAAc,CAAC,CAAC,CAAC;IAC1D;IACA,IAAI6B,eAAe,IAAI,IAAI,EAAE;MAC3BA,eAAe,GAAG,EAAE;IACtB;IACA,IAAIC,eAAe,IAAI,IAAI,EAAE;MAC3BA,eAAe,GAAG,IAAI;IACxB;IACA,IAAIC,cAAc,IAAI,IAAI,EAAE;MAC1BA,cAAc,GAAG,EAAE;IACrB;IAEA,IAAMQ,WAAW,GAAGb,KAAK,CAACc,oBAAoB,CAACb,MAAM,CAACc,IAAI,CAAC;IAC3DvD,aAAa,CAACqD,WAAW,CAAC;IAC1B,IAAMG,UAAU,GAAGhB,KAAK,CAACiB,gBAAgB,CAACJ,WAAW,CAAC;IAEtD,IAAI,CAACK,KAAK,GAAG;MACX;MACAZ,WAAW;MAEX;MACAH,eAAe;MAEfC,eAAe;MAEfC,cAAc;MAEdc,gBAAgB,EAAE,IAAI;MACtBC,WAAW,EAAEC,SAAS;MAEtBL;IACF,CAAC;EACH;EAEAM,iBAAiBA,CAAA,EAAS;IACxB,IAAI,CAACC,eAAe,CAAC,CAAC;EACxB;EAEAC,oBAAoBA,CAAA,EAAS;IAC3B,IAAI,IAAI,CAACC,eAAe,IAAI,IAAI,EAAE;MAChCC,YAAY,CAAC,IAAI,CAACD,eAAe,CAAC;MAClC,IAAI,CAACE,UAAU,CAAC,CAAC;IACnB;IACA,IAAI,IAAI,CAACC,kBAAkB,IAAI,IAAI,EAAE;MACnC,IAAI,CAACA,kBAAkB,CAACC,MAAM,CAAC,CAAC;IAClC;EACF;EAQAC,sBAAsBA,CAACC,KAAa,EAAuB;IACzD,OAAO,IAAI,CAAC3C,kBAAkB,CAACJ,IAAI,CAAC,IAAI,EAAE+C,KAAK,CAAC;EAClD;EAEAC,sBAAsBA,CAACD,KAAa,EAAc;IAChD,OAAO,IAAI,CAAC1C,kBAAkB,CAACL,IAAI,CAAC,IAAI,EAAE+C,KAAK,CAAC;EAClD;EAMAR,eAAeA,CAAA,EAAS;IACtB,IAAM;MAAEvB,KAAK;MAAEC;IAAO,CAAC,GAAG,IAAI,CAACxB,KAAK;IACpC,IAAI,CAACuB,KAAK,CAACiC,sBAAsB,EAAE;MACjC9D,GAAG,CAAC+D,KAAK,CAAC,6CAA6C,CAAC;MACxD;IACF;IAEA,IAAI,CAACN,kBAAkB,GAAGxE,UAAU,CAAC+E,0BAA0B,CAC7DnC,KAAK,CAACoB,WAAW,CAACnB,MAAM,CAC1B,CAAC;IACD,IAAI,CAAC2B,kBAAkB,CACpBQ,IAAI,CAAChB,WAAW,IAAI;MAAA,IAAAiB,qBAAA;MACnB,KAAAA,qBAAA,GAAIjB,WAAW,CAACkB,OAAO,CAAC,CAAC,CAAC,CAACtB,UAAU,cAAAqB,qBAAA,cAAAA,qBAAA,GAAI,IAAI,EAAE;QAC7C,IAAME,IAAI,GAAGnB,WAAW,CAACkB,OAAO,CAAC,CAAC,CAAC,CAACC,IAAI,CAAC,CAAC,CAACC,GAAG,CAAC,CAAC;QAChDpB,WAAW,CAACqB,SAAS,CAAC,CAACF,IAAI,CAAC,CAAC;MAC/B;MACA,IAAI,CAACG,QAAQ,CAAC;QAAEtB;MAAY,CAAC,CAAC;IAChC,CAAC,CAAC,CACDuB,KAAK,CAACC,KAAK,IAAI;MACd,IAAInF,YAAY,CAACoF,UAAU,CAACD,KAAK,CAAC,EAAE;QAClC;MACF;MAEAzE,GAAG,CAACyE,KAAK,CAAC,6BAA6B,EAAEA,KAAK,CAAC;MAC/C,IAAI,CAACF,QAAQ,CAAC;QAAEvB,gBAAgB,EAAEyB;MAAM,CAAC,CAAC;IAC5C,CAAC,CAAC;EACN;EAEAhD,kBAAkBA,CAAA,EAAS;IAAA,IAAAkD,qBAAA;IACzB,EAAAA,qBAAA,GACE,IAAI,CAAChD,kBAAkB,cAAAgD,qBAAA,gBAAAA,qBAAA,GAAvBA,qBAAA,CAAyBC,OAAO,cAAAD,qBAAA,uBAAhCA,qBAAA,CAAkCE,aAAa,CAC7C,8BACF,CAAC,EACDC,KAAK,CAAC,CAAC;EACX;EAEAtD,oBAAoBA,CAAA,EAAS;IAAA,IAAAuD,sBAAA;IAC3B,IAAMC,MAAM,IAAAD,sBAAA,GAAG,IAAI,CAACpD,kBAAkB,cAAAoD,sBAAA,gBAAAA,sBAAA,GAAvBA,sBAAA,CAAyBH,OAAO,cAAAG,sBAAA,uBAAhCA,sBAAA,CAAkCE,gBAAgB,CAC/D,8BACF,CAAC;IACD,IAAID,MAAM,IAAIA,MAAM,CAACxC,MAAM,GAAG,CAAC,EAAE;MAC/B,IAAM0C,OAAO,GAAGF,MAAM,CAACA,MAAM,CAACxC,MAAM,GAAG,CAAC,CAAgB;MACxD0C,OAAO,CAACJ,KAAK,CAAC,CAAC;IACjB;EACF;EAEAlE,YAAYA,CAAA,EAAS;IACnB,IAAI;MAAEuB,WAAW;MAAEH;IAAgB,CAAC,GAAG,IAAI,CAACe,KAAK;IACjDZ,WAAW,GAAGA,WAAW,CAACgD,MAAM,CAACjF,qBAAqB,CAACC,cAAc,CAAC,CAAC,CAAC;IACxE6B,eAAe,GAAGA,eAAe,CAACmD,MAAM,CAACzG,cAAc,CAAC0G,GAAG,CAAC;IAC5D,IAAI,CAACb,QAAQ,CAAC;MAAEpC,WAAW;MAAEH;IAAgB,CAAC,CAAC;EACjD;EAEAlB,WAAWA,CAAA,EAAS;IAClB,IAAI;MAAEqB,WAAW;MAAEH;IAAgB,CAAC,GAAG,IAAI,CAACe,KAAK;IACjDZ,WAAW,GAAGA,WAAW,CAACgD,MAAM,CAACjF,qBAAqB,CAACC,cAAc,CAAC,CAAC,CAAC;IACxE6B,eAAe,GAAGA,eAAe,CAACmD,MAAM,CAACzG,cAAc,CAAC2G,EAAE,CAAC;IAC3D,IAAI,CAACd,QAAQ,CAAC;MAAEpC,WAAW;MAAEH;IAAgB,CAAC,CAAC;EACjD;EAEAjB,0BAA0BA,CAAC6C,KAAa,EAAE0B,QAAgB,EAAQ;IAChE,IAAI;MAAEtD;IAAgB,CAAC,GAAG,IAAI,CAACe,KAAK;IACpCf,eAAe,GAAG,CAAC,GAAGA,eAAe,CAAC;IAEtCpD,yBAAyB,CAAC0G,QAAQ,CAAC;IAEnCtD,eAAe,CAAC4B,KAAK,CAAC,GAAG0B,QAAQ;IAEjC,IAAI,CAACf,QAAQ,CAAC;MAAEvC;IAAgB,CAAC,CAAC;IAElC,IAAI,CAACuD,gBAAgB,CAAC,CAAC;EACzB;EAEAtE,kBAAkBA,CAChBuE,WAAmB,EACnBlD,YAA6B,EAC7BC,KAAa,EACP;IACN,IAAI;MAAEJ;IAAY,CAAC,GAAG,IAAI,CAACY,KAAK;IAChCZ,WAAW,GAAG,CAAC,GAAGA,WAAW,CAAC;IAC9B,IAAM;MAAE/B;IAAI,CAAC,GAAG+B,WAAW,CAACqD,WAAW,CAAC;IACxCrD,WAAW,CAACqD,WAAW,CAAC,GAAG;MAAEpF,GAAG;MAAEkC,YAAY;MAAEC;IAAM,CAAC;IAEvD,IAAI,CAACgC,QAAQ,CAAC;MAAEpC;IAAY,CAAC,CAAC;IAE9B,IAAI,CAACoD,gBAAgB,CAAC,CAAC;EACzB;EAEArE,kBAAkBA,CAACsE,WAAmB,EAAQ;IAC5C,IAAI;MAAErD,WAAW;MAAEH;IAAgB,CAAC,GAAG,IAAI,CAACe,KAAK;IACjDZ,WAAW,GAAG,CAAC,GAAGA,WAAW,CAAC;IAC9BH,eAAe,GAAG,CAAC,GAAGA,eAAe,CAAC;IACtC,IAAIwD,WAAW,GAAGrD,WAAW,CAACK,MAAM,EAAE;MACpCL,WAAW,CAACsD,MAAM,CAACD,WAAW,EAAE,CAAC,CAAC;IACpC;IAEA,IAAIA,WAAW,GAAGxD,eAAe,CAACQ,MAAM,EAAE;MACxCR,eAAe,CAACyD,MAAM,CAACD,WAAW,EAAE,CAAC,CAAC;IACxC,CAAC,MAAM,IAAIA,WAAW,KAAKxD,eAAe,CAACQ,MAAM,EAAE;MACjD;MACAR,eAAe,CAACyD,MAAM,CAACzD,eAAe,CAACQ,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC;IACvD;IAEA,IAAIL,WAAW,CAACK,MAAM,KAAK,CAAC,EAAE;MAC5BL,WAAW,CAACM,IAAI,CAACvC,qBAAqB,CAACC,cAAc,CAAC,CAAC,CAAC;IAC1D;IAEA,IAAI,CAACoE,QAAQ,CAAC;MAAEpC,WAAW;MAAEH;IAAgB,CAAC,CAAC;IAE/C,IAAI,CAACuD,gBAAgB,CAAC,CAAC;EACzB;EAEApE,uBAAuBA,CACrBe,cAAyB,EACzBD,eAAwB,EAClB;IACN,IAAI,CAACsC,QAAQ,CAAC;MAAErC,cAAc;MAAED;IAAgB,CAAC,CAAC;IAElD,IAAI,CAACsD,gBAAgB,CAAC,CAAC;EACzB;EAEAnE,WAAWA,CAAA,EAAS;IAClBpB,GAAG,CAAC+D,KAAK,CAAC,2BAA2B,CAAC;IAEtC,IAAI,CAACQ,QAAQ,CAAC;MACZpC,WAAW,EAAE,CAACjC,qBAAqB,CAACC,cAAc,CAAC,CAAC,CAAC;MACrD6B,eAAe,EAAE,EAAE;MACnBE,cAAc,EAAE,EAAE;MAClBD,eAAe,EAAE;IACnB,CAAC,CAAC;IAEF,IAAI,CAACsD,gBAAgB,CAAC,CAAC;EACzB;EAEAlE,cAAcA,CAACqE,KAA0C,EAAQ;IAC/D,IAAMC,aAAa,GAAGxG,kBAAkB,CAACyG,iBAAiB,CAACF,KAAK,CAAC;IACjE,IAAI,CAACG,SAAS,CAAC5G,UAAU,CAAC6G,aAAa,CAACC,UAAU,EAAEJ,aAAa,CAAC;EACpE;EAEArE,YAAYA,CAACoE,KAA0C,EAAQ;IAC7D,IAAMC,aAAa,GAAGxG,kBAAkB,CAACyG,iBAAiB,CAACF,KAAK,CAAC;IACjE,IAAI,CAACG,SAAS,CAAC5G,UAAU,CAAC6G,aAAa,CAACE,SAAS,EAAEL,aAAa,CAAC;EACnE;EAEApE,YAAYA,CAACmE,KAAuC,EAAQ;IAC1D1F,GAAG,CAAC+D,KAAK,CAAC,4BAA4B,CAAC;IACvC,IAAI,CAACkC,eAAe,CAAC,CAAC;IACtB,IAAI,CAACzC,UAAU,CAAC,CAAC;IAEjBkC,KAAK,CAACQ,cAAc,CAAC,CAAC;EACxB;EAEAlF,UAAUA,CAAC0E,KAA0C,EAAQ;IAC3D1F,GAAG,CAAC+D,KAAK,CAAC,wCAAwC,CAAC;IACnD,IAAI,CAACkC,eAAe,CAAC,CAAC;IACtB,IAAI,CAACzC,UAAU,CAAC,CAAC;IAEjB,IAAM;MAAE2C;IAAO,CAAC,GAAG,IAAI,CAAC7F,KAAK;IAC7B6F,MAAM,CAAC,CAAC;IAERT,KAAK,CAACQ,cAAc,CAAC,CAAC;EACxB;EAEAxE,mBAAmBA,CAAA,EAAS;IAC1B,IAAI,CAAC4B,eAAe,GAAGJ,SAAS;IAChC,IAAI,CAACM,UAAU,CAAC,CAAC;EACnB;;EAEA;AACF;AACA;AACA;AACA;EACE4C,mBAAmBA,CAAA,EAAY;IAC7B,IAAM;MAAEjE;IAAY,CAAC,GAAG,IAAI,CAACY,KAAK;IAClC,IAAIZ,WAAW,CAACK,MAAM,KAAK,CAAC,EAAE;MAC5B,OAAO,KAAK;IACd;IAEA,IAAM6D,UAAU,GAAGlE,WAAW,CAACA,WAAW,CAACK,MAAM,GAAG,CAAC,CAAC;IACtD,IAAM;MAAEF,YAAY;MAAEC;IAAM,CAAC,GAAG8D,UAAU;IAE1C,OACE/D,YAAY,IAAI,IAAI,IACpBA,YAAY,CAACE,MAAM,GAAG,CAAC,IACvBD,KAAK,IAAI,IAAI,IACbA,KAAK,CAACC,MAAM,GAAG,CAAC;EAEpB;;EAEA;AACF;AACA;AACA;AACA;EACEqD,SAASA,CAACS,SAAwB,EAA+B;IAAA,IAA7BX,aAAa,GAAAY,SAAA,CAAA/D,MAAA,QAAA+D,SAAA,QAAArD,SAAA,GAAAqD,SAAA,MAAG,KAAK;IACvD,IAAM;MAAEzE,MAAM;MAAE0E;IAAa,CAAC,GAAG,IAAI,CAAClG,KAAK;IAC3C,IAAM;MAAEuC;IAAW,CAAC,GAAG,IAAI,CAACE,KAAK;IACjC,IAAIF,UAAU,EAAE;MACd2D,YAAY,CAAC1E,MAAM,EAAEwE,SAAS,EAAEX,aAAa,CAAC;IAChD;EACF;EAEAJ,gBAAgBA,CAAA,EAAS;IACvB,IAAI,CAACU,eAAe,CAAC,CAAC;IAEtB,IAAI,CAAC3C,eAAe,GAAGmD,UAAU,CAC/B,IAAI,CAAC/E,mBAAmB,EACxBxB,qBAAqB,CAACwG,oBACxB,CAAC;EACH;EAEAT,eAAeA,CAAA,EAAS;IACtB,IAAI,IAAI,CAAC3C,eAAe,KAAKJ,SAAS,EAAE;MACtCK,YAAY,CAAC,IAAI,CAACD,eAAe,CAAC;MAClC,IAAI,CAACA,eAAe,GAAGJ,SAAS;IAClC;EACF;EAEAM,UAAUA,CAAA,EAAS;IACjB,IAAM;MAAErB,WAAW;MAAEH,eAAe;MAAEC,eAAe;MAAEC;IAAe,CAAC,GACrE,IAAI,CAACa,KAAK;IACZ,IAAM;MAAEjB,MAAM;MAAE6E,cAAc;MAAE9E,KAAK;MAAE+E;IAAW,CAAC,GAAG,IAAI,CAACtG,KAAK;IAChE,IAAM;MAAEuG;IAAU,CAAC,GAAGhF,KAAK;IAE3B,IAAMiF,KAAK,GAAG3E,WAAW,CAAC4E,MAAM,CAC9BC,KAAA;MAAA,IAAC;QAAE1E,YAAY;QAAEC;MAAM,CAAC,GAAAyE,KAAA;MAAA,OACtB1E,YAAY,IAAI,IAAI,IAAIC,KAAK,IAAI,IAAI,IAAIA,KAAK,KAAK,EAAE;IAAA,CACzD,CAAiB;IAEjB,IAAM0E,SAAS,GAAGjF,eAAe,CAC9B+E,MAAM,CACL,CAACzB,QAAQ,EAAE4B,CAAC,KACV5B,QAAQ,IAAI,IAAI,IAChBnD,WAAW,CAAC+E,CAAC,CAAC,CAAC5E,YAAY,IAAI,IAAI,IACnCH,WAAW,CAAC+E,CAAC,CAAC,CAAC3E,KAAK,IAAI,IAAI,IAC5BJ,WAAW,CAAC+E,CAAC,CAAC,CAAC3E,KAAK,KAAK,EAC7B,CAAC,CACA4E,KAAK,CAAC,CAAC,EAAEL,KAAK,CAACtE,MAAM,GAAG,CAAC,CAAC;IAC7B;;IAEA,IAAMT,OAAO,GAAG;MACdI,WAAW,EAAE2E,KAAK;MAClB9E,eAAe,EAAEiF,SAAS;MAC1BhF,eAAe;MACfC;IACF,CAAC;IAED,IAAM6E,MAAM,GAAGH,UAAU,CAACQ,kBAAkB,CAC1CtF,MAAM,EACNC,OAAO,EACP8E,SAAS,CAACQ,QACZ,CAAC;IAEDV,cAAc,CAAC7E,MAAM,EAAEiF,MAAM,EAAEhF,OAAO,CAAC;EACzC;EAEAuF,MAAMA,CAAA,EAAgB;IAAA,IAAAC,KAAA;IACpB,IAAM;MACJzF,MAAM;MACND,KAAK;MACLiE,aAAa;MACbe,SAAS;MACTD,UAAU;MACVY,WAAW;MACXC;IACF,CAAC,GAAG,IAAI,CAACnH,KAAK;IACd,IAAM;MACJ6B,WAAW;MACXH,eAAe;MACfC,eAAe;MACfC,cAAc;MACde,WAAW;MACXD,gBAAgB;MAChBH;IACF,CAAC,GAAG,IAAI,CAACE,KAAK;IACd,IAAM;MAAE2E,EAAE;MAAE5D;IAAuB,CAAC,GAAGjC,KAAK;IAC5C,IAAM8F,SAAS,GAAG1I,UAAU,CAAC2I,aAAa,CAAC9F,MAAM,CAAC+F,IAAI,CAAC;IACvD,IAAMC,UAAU,GAAG7I,UAAU,CAAC6I,UAAU,CAAChG,MAAM,CAAC+F,IAAI,CAAC;IACrD,IAAME,WAAW,GAAG,IAAI,CAACpH,cAAc,CAACmB,MAAM,CAAC+F,IAAI,CAAC;IACpD,IAAMnH,UAAU,GAAGoB,MAAM,CAAC+F,IAAI,CAACG,SAAS,CAAClG,MAAM,CAAC+F,IAAI,CAACI,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1E,IAAMC,kBAAkB,GAAG,EAAE;IAC7B,IAAI,CAACP,SAAS,IAAII,WAAW,CAACvF,MAAM,EAAE;MAAA,IAAA2F,KAAA,YAAAA,MAAAjB,CAAA,EACY;QAC9C,IAAMb,UAAU,GAAGlE,WAAW,CAAC+E,CAAC,CAAC;QACjC,IAAM;UAAE9G,GAAG;UAAEkC,YAAY;UAAEC;QAAM,CAAC,GAAG8D,UAAU;QAE/C,IAAMnB,OAAO,gBACXvF,IAAA,CAACH,+BAA+B;UAE9BsC,MAAM,EAAEA,MAAO;UACfiG,WAAW,EAAEA,WAAY;UACzBK,QAAQ,EAAEb,KAAI,CAAC5D,sBAAsB,CAACuD,CAAC,CAAE;UACzCmB,QAAQ,EAAEd,KAAI,CAAC1D,sBAAsB,CAACqD,CAAC,CAAE;UACzC5E,YAAY,EAAEA,YAAa;UAC3BC,KAAK,EAAEA,KAAM;UACbsE,SAAS,EAAEA,SAAU;UACrBD,UAAU,EAAEA;QAAW,GARlBxG,GASN,CACF;QACD8H,kBAAkB,CAACzF,IAAI,CAACyC,OAAO,CAAC;QAEhC,IAAIgC,CAAC,GAAGlF,eAAe,CAACQ,MAAM,EAAE;UAC9B,IAAM8F,cAAc,GAAGtG,eAAe,CAACkF,CAAC,CAAC;UACzC,IAAMqB,WAAW,GAAGD,cAAc,KAAK5J,cAAc,CAAC0G,GAAG;UACzD,IAAMoD,eAAe,gBACnB3I,KAAA;YAEE4I,SAAS,EAAC,sEAAsE;YAAAC,QAAA,gBAEhF/I,IAAA,CAACT,MAAM;cACLyJ,IAAI,EAAC,OAAO;cACZF,SAAS,EAAEnK,UAAU,CAAC,iBAAiB,EAAE;gBACvCsK,MAAM,EAAEL;cACV,CAAC,CAAE;cACHM,OAAO,EAAEA,CAAA,KACPtB,KAAI,CAACxG,0BAA0B,CAACmG,CAAC,EAAExI,cAAc,CAAC0G,GAAG,CACtD;cAAAsD,QAAA,EACF;YAED,CAAQ,CAAC,eACT/I,IAAA,CAACT,MAAM;cACLyJ,IAAI,EAAC,OAAO;cACZF,SAAS,EAAEnK,UAAU,CAAC,iBAAiB,EAAE;gBACvCsK,MAAM,EAAE,CAACL;cACX,CAAC,CAAE;cACHM,OAAO,EAAEA,CAAA,KACPtB,KAAI,CAACxG,0BAA0B,CAACmG,CAAC,EAAExI,cAAc,CAAC2G,EAAE,CACrD;cAAAqD,QAAA,EACF;YAED,CAAQ,CAAC;UAAA,oBAAAvD,MAAA,CAxBa/E,GAAG,CAyBtB,CACN;UACD8H,kBAAkB,CAACzF,IAAI,CAAC+F,eAAe,CAAC;QAC1C;MACF,CAAC;MArDD,KAAK,IAAItB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG/E,WAAW,CAACK,MAAM,EAAE0E,CAAC,IAAI,CAAC;QAAAiB,KAAA,CAAAjB,CAAA;MAAA;IAsDhD;IACA,IAAM4B,iBAAiB,GAAG,IAAI,CAAC1C,mBAAmB,CAAC,CAAC;IACpD,IAAM2C,aAAa,gBACjBlJ,KAAA;MAEE4I,SAAS,EAAEnK,UAAU,CAAC,8CAA8C,EAAE;QACpE0K,MAAM,EAAE,CAACF;MACX,CAAC,CAAE;MAAAJ,QAAA,gBAEH/I,IAAA;QAAM8I,SAAS,EAAC,YAAY;QAAAC,QAAA,eAC1B/I,IAAA,CAACpB,eAAe;UAAC0K,IAAI,EAAEnK;QAAuB,CAAE;MAAC,CAC7C,CAAC,eACPa,IAAA,CAACT,MAAM;QACLyJ,IAAI,EAAC,OAAO;QACZF,SAAS,EAAC,iBAAiB;QAC3BI,OAAO,EAAE,IAAI,CAACjI,YAAa;QAC3BsI,QAAQ,EAAE,CAACJ,iBAAkB;QAC7BK,OAAO,EAAC,qBAAqB;QAAAT,QAAA,EAC9B;MAED,CAAQ,CAAC,eACT/I,IAAA,CAACT,MAAM;QACLyJ,IAAI,EAAC,OAAO;QACZF,SAAS,EAAC,iBAAiB;QAC3BI,OAAO,EAAE,IAAI,CAAC/H,WAAY;QAC1BoI,QAAQ,EAAE,CAACJ,iBAAkB;QAC7BK,OAAO,EAAC,oBAAoB;QAAAT,QAAA,EAC7B;MAED,CAAQ,CAAC;IAAA,GAzBL,eA0BD,CACN;IACDR,kBAAkB,CAACzF,IAAI,CAACsG,aAAa,CAAC;IAEtC,oBACElJ,KAAA;MAAK4I,SAAS,EAAC,yBAAyB;MAACW,IAAI,EAAC,cAAc;MAAAV,QAAA,gBAC1D/I,IAAA;QAAK0J,QAAQ,EAAE,CAAE;QAACC,OAAO,EAAE,IAAI,CAAC9H;MAAqB,CAAE,CAAC,eACxD3B,KAAA;QAAM0J,QAAQ,EAAE,IAAI,CAAChI,YAAa;QAACiI,GAAG,EAAE,IAAI,CAAC7H,kBAAmB;QAAA+G,QAAA,gBAC9D7I,KAAA;UAAK4I,SAAS,EAAC,WAAW;UAAAC,QAAA,gBACxB/I,IAAA;YAAI8I,SAAS,EAAC,uBAAuB;YAAAC,QAAA,EAAC;UAAgB,CAAI,CAAC,eAC3D7I,KAAA;YAAK4I,SAAS,EAAC,8BAA8B;YAAAC,QAAA,gBAC3C/I,IAAA,CAACT,MAAM;cACLyJ,IAAI,EAAC,OAAO;cACZF,SAAS,EAAEnK,UAAU,CAAC,eAAe,EAAE;gBACrCsK,MAAM,EAAE9C,aAAa,KAAK7G,UAAU,CAAC6G,aAAa,CAACC;cACrD,CAAC,CAAE;cACH8C,OAAO,EAAE,IAAI,CAACxH,cAAe;cAC7B4H,IAAI,EAAEpK,gBAAiB;cACvBsK,OAAO,EACLtG,UAAU,WAAAsC,MAAA,CAAWrD,MAAM,CAACc,IAAI,mBAAgB,cACjD;cACDsG,QAAQ,EAAE,CAACrG;YAAW,CACvB,CAAC,eACFlD,IAAA,CAACT,MAAM;cACLyJ,IAAI,EAAC,OAAO;cACZF,SAAS,EAAEnK,UAAU,CAAC,eAAe,EAAE;gBACrCsK,MAAM,EAAE9C,aAAa,KAAK7G,UAAU,CAAC6G,aAAa,CAACE;cACrD,CAAC,CAAE;cACH6C,OAAO,EAAE,IAAI,CAACvH,YAAa;cAC3B2H,IAAI,eACFtJ,IAAA,CAACpB,eAAe;gBAAC0K,IAAI,EAAEpK,gBAAiB;gBAAC4K,QAAQ,EAAE;cAAI,CAAE,CAC1D;cACDN,OAAO,EACLtG,UAAU,WAAAsC,MAAA,CAAWrD,MAAM,CAACc,IAAI,kBAAe,cAChD;cACDsG,QAAQ,EAAE,CAACrG;YAAW,CACvB,CAAC,eACFlD,IAAA,CAACT,MAAM;cACLyJ,IAAI,EAAC,OAAO;cACZF,SAAS,EAAEnK,UAAU,CAAC,eAAe,EAAE;gBACrCsK,MAAM,EAAEpB;cACV,CAAC,CAAE;cACHqB,OAAO,EAAEpB,gBAAiB;cAC1BwB,IAAI,EAAEzB,WAAW,GAAGxI,cAAc,GAAGD,YAAa;cAClDoK,OAAO,EACL3B,WAAW,GAAG,qBAAqB,GAAG;YACvC,CACF,CAAC;UAAA,CACC,CAAC;QAAA,CACH,CAAC,eACN7H,IAAA,SAAK,CAAC,eACNE,KAAA;UAAK4I,SAAS,EAAC,6BAA6B;UAAAC,QAAA,GACzC5G,MAAM,CAACc,IAAI,EAAC,MACb,eAAA/C,KAAA;YAAM4I,SAAS,EAAC,aAAa;YAAAC,QAAA,GAAC,GAAC,EAAChI,UAAU,EAAC,GAAC;UAAA,CAAM,CAAC;QAAA,CAChD,CAAC,EACLwH,kBAAkB,EAClBpE,sBAAsB,IAAId,gBAAgB,IAAI,IAAI,iBACjDnD,KAAA,CAAAE,SAAA;UAAA2I,QAAA,GACG,CAACf,SAAS,iBAAIhI,IAAA,SAAK,CAAC,eACrBA,IAAA;YAAK8I,SAAS,EAAC,yCAAyC;YAAAC,QAAA,eACtD/I,IAAA,CAACF,gCAAgC;cAC/BiI,EAAE,EAAEA,EAAG;cACPgC,KAAK,EAAEzG,WAAY;cACnBmF,QAAQ,EAAE,IAAI,CAACjH,uBAAwB;cACvCc,eAAe,EAAEA,eAAgB;cACjCC,cAAc,EAAEA,cAAe;cAC/B2E,SAAS,EAAEA,SAAU;cACrB8C,UAAU,EAAE,CAAC7B,UAAW;cACxBT,QAAQ,EAAER,SAAS,CAACQ;YAAS,CAC9B;UAAC,CACC,CAAC;QAAA,CACN,CACH,eACDxH,KAAA;UAAK4I,SAAS,EAAC,8BAA8B;UAAAC,QAAA,gBAC3C/I,IAAA,CAACT,MAAM;YACLyJ,IAAI,EAAC,WAAW;YAChBF,SAAS,EAAC,MAAM;YAChBI,OAAO,EAAE,IAAI,CAACzH,WAAY;YAAAsH,QAAA,EAC3B;UAED,CAAQ,CAAC,eACT/I,IAAA,CAACT,MAAM;YAACyJ,IAAI,EAAC,SAAS;YAACE,OAAO,EAAE,IAAI,CAAC7H,UAAW;YAAA0H,QAAA,EAAC;UAEjD,CAAQ,CAAC;QAAA,CACN,CAAC;MAAA,CACF,CAAC,eACP/I,IAAA;QAAK0J,QAAQ,EAAE,CAAE;QAACC,OAAO,EAAE,IAAI,CAAC7H;MAAmB,CAAE,CAAC;IAAA,CACnD,CAAC;EAEV;AACF;AAAChB,eAAA,CA/jBKP,qBAAqB,0BAIK,GAAG;AAAAO,eAAA,CAJ7BP,qBAAqB,kBAMH;EACpB6B,OAAO,EAAE;IACPI,WAAW,EAAE,IAAI;IACjBH,eAAe,EAAE,IAAI;IACrBC,eAAe,EAAE,IAAI;IACrBC,cAAc,EAAE;EAClB,CAAC;EACD4D,aAAa,EAAE;AACjB,CAAC;AAmjBH,eAAe5F,qBAAqB","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"AdvancedFilterCreator.js","names":["React","PureComponent","classNames","FontAwesomeIcon","memoize","Operator","FilterOperator","assertOperatorValue","assertFilterOperatorValue","dhSortAmountDown","dhNewCircleLargeFilled","vsScreenFull","vsScreenNormal","TableUtils","Button","ContextActionUtils","Log","assertNotNull","PromiseUtils","nanoid","AdvancedFilterCreatorFilterItem","AdvancedFilterCreatorSelectValue","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","log","module","AdvancedFilterCreator","makeFilterItem","key","constructor","props","_options$filterItems$","_options$filterItems","_defineProperty","columnType","getFilterTypes","handleAddAnd","bind","handleAddOr","handleChangeFilterOperator","handleDone","handleFilterChange","handleFilterDelete","handleSelectValueChange","handleReset","handleSortDown","handleSortUp","handleSubmit","handleFocusTrapStart","handleFocusTrapEnd","handleUpdateTimeout","focusTrapContainer","createRef","model","column","options","filterOperators","invertSelection","selectedValues","filterItems","map","_ref","selectedType","value","length","push","columnIndex","getColumnIndexByName","name","isSortable","isColumnSortable","state","valuesTableError","valuesTable","undefined","componentDidMount","initValuesTable","componentWillUnmount","debounceTimeout","clearTimeout","sendUpdate","valuesTablePromise","cancel","getFilterChangeHandler","index","getFilterDeleteHandler","_this$props","isValuesTableAvailable","debug","makeCancelableTablePromise","then","_valuesTable$columns$","columns","sort","asc","applySort","setState","catch","error","isCanceled","_this$focusTrapContai","current","querySelector","focus","_this$focusTrapContai2","inputs","querySelectorAll","element","_this$state","concat","and","_this$state2","or","operator","startUpdateTimer","filterIndex","_this$state3","splice","event","addToExisting","isModifierKeyDown","sortTable","sortDirection","descending","ascending","stopUpdateTimer","preventDefault","onDone","shouldShowAddFilter","filterItem","direction","arguments","_this$props2","onSortChange","setTimeout","debounceFilterUpdate","_this$state4","_this$props3","onFilterChange","tableUtils","formatter","items","filter","_ref2","operators","i","slice","makeAdvancedFilter","timeZone","render","_this","_this$props4","isMaximized","onToggleMaximize","_this$state5","dh","isBoolean","isBooleanType","type","isDateType","filterTypes","substring","lastIndexOf","filterItemElements","_loop","onChange","onDelete","filterOperator","isAndFilter","operatorElement","className","children","kind","active","onClick","showAddFilterItem","addFilterItem","hidden","icon","disabled","tooltip","role","tabIndex","onFocus","onSubmit","ref","rotation","table","showSearch"],"sources":["../src/AdvancedFilterCreator.tsx"],"sourcesContent":["/* eslint-disable jsx-a11y/no-noninteractive-tabindex */\n// disabled for tab-index on focus traps, which are intentionally non-interactive\n\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport memoize from 'memoize-one';\nimport {\n Operator as FilterOperator,\n type OperatorValue as FilterOperatorValue,\n type TypeValue as FilterTypeValue,\n assertOperatorValue as assertFilterOperatorValue,\n} from '@deephaven/filters';\nimport {\n dhSortAmountDown,\n dhNewCircleLargeFilled,\n vsScreenFull,\n vsScreenNormal,\n} from '@deephaven/icons';\nimport {\n type Formatter,\n TableUtils,\n type SortDirection,\n type FilterItem,\n} from '@deephaven/jsapi-utils';\nimport { Button, ContextActionUtils } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport {\n assertNotNull,\n type CancelablePromise,\n PromiseUtils,\n} from '@deephaven/utils';\nimport type { dh } from '@deephaven/jsapi-types';\nimport { nanoid } from 'nanoid';\nimport AdvancedFilterCreatorFilterItem from './AdvancedFilterCreatorFilterItem';\nimport AdvancedFilterCreatorSelectValue from './AdvancedFilterCreatorSelectValue';\nimport './AdvancedFilterCreator.scss';\nimport type IrisGridModel from './IrisGridModel';\nimport { type AdvancedFilterOptions } from './CommonTypes';\n\nconst log = Log.module('AdvancedFilterCreator');\n\ntype FilterChangeHandler = (\n selectedType: FilterTypeValue,\n value: string\n) => void;\n\ninterface AdvancedFilterCreatorProps {\n model: IrisGridModel;\n column: dh.Column;\n onFilterChange: (\n column: dh.Column,\n filter: dh.FilterCondition | null,\n options: AdvancedFilterOptions\n ) => void;\n onSortChange: (\n column: dh.Column,\n direction: SortDirection,\n addToExisting?: boolean\n ) => void;\n onDone: () => void;\n options: AdvancedFilterOptions;\n sortDirection: SortDirection;\n formatter: Formatter;\n tableUtils: TableUtils;\n isMaximized: boolean;\n onToggleMaximize: () => void;\n}\n\ninterface AdvancedFilterItem {\n selectedType?: FilterTypeValue;\n value?: string;\n key: string;\n}\n\ninterface AdvancedFilterCreatorState {\n // Filter items\n filterItems: AdvancedFilterItem[];\n\n // And/Or between the filter items\n filterOperators: FilterOperatorValue[];\n\n invertSelection: boolean;\n\n selectedValues: unknown[];\n\n valuesTableError: null;\n valuesTable?: dh.Table;\n\n isSortable: boolean;\n}\n\nclass AdvancedFilterCreator extends PureComponent<\n AdvancedFilterCreatorProps,\n AdvancedFilterCreatorState\n> {\n static debounceFilterUpdate = 250;\n\n static defaultProps = {\n options: {\n filterItems: null,\n filterOperators: null,\n invertSelection: true,\n selectedValues: [],\n },\n sortDirection: null,\n };\n\n static makeFilterItem(): AdvancedFilterItem {\n return { key: nanoid() };\n }\n\n constructor(props: AdvancedFilterCreatorProps) {\n super(props);\n\n this.handleAddAnd = this.handleAddAnd.bind(this);\n this.handleAddOr = this.handleAddOr.bind(this);\n this.handleChangeFilterOperator =\n this.handleChangeFilterOperator.bind(this);\n this.handleDone = this.handleDone.bind(this);\n this.handleFilterChange = this.handleFilterChange.bind(this);\n this.handleFilterDelete = this.handleFilterDelete.bind(this);\n this.handleSelectValueChange = this.handleSelectValueChange.bind(this);\n this.handleReset = this.handleReset.bind(this);\n this.handleSortDown = this.handleSortDown.bind(this);\n this.handleSortUp = this.handleSortUp.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n this.handleFocusTrapStart = this.handleFocusTrapStart.bind(this);\n this.handleFocusTrapEnd = this.handleFocusTrapEnd.bind(this);\n this.handleUpdateTimeout = this.handleUpdateTimeout.bind(this);\n\n this.focusTrapContainer = React.createRef();\n\n const { model, column, options } = props;\n let { filterOperators, invertSelection, selectedValues } = options;\n\n // can be null or an empty array\n const filterItems: AdvancedFilterItem[] =\n options.filterItems?.map(({ selectedType, value }) => ({\n selectedType,\n value,\n key: nanoid(),\n })) ?? [];\n if (filterItems.length === 0) {\n filterItems.push(AdvancedFilterCreator.makeFilterItem());\n }\n if (filterOperators == null) {\n filterOperators = [];\n }\n if (invertSelection == null) {\n invertSelection = true;\n }\n if (selectedValues == null) {\n selectedValues = [];\n }\n\n const columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n const isSortable = model.isColumnSortable(columnIndex);\n\n this.state = {\n // Filter items\n filterItems,\n\n // And/Or between the filter items\n filterOperators,\n\n invertSelection,\n\n selectedValues,\n\n valuesTableError: null,\n valuesTable: undefined,\n\n isSortable,\n };\n }\n\n componentDidMount(): void {\n this.initValuesTable();\n }\n\n componentWillUnmount(): void {\n if (this.debounceTimeout != null) {\n clearTimeout(this.debounceTimeout);\n this.sendUpdate();\n }\n if (this.valuesTablePromise != null) {\n this.valuesTablePromise.cancel();\n }\n }\n\n focusTrapContainer: React.RefObject<HTMLFormElement>;\n\n debounceTimeout?: ReturnType<typeof setTimeout>;\n\n valuesTablePromise?: CancelablePromise<dh.Table>;\n\n getFilterChangeHandler(index: number): FilterChangeHandler {\n return this.handleFilterChange.bind(this, index);\n }\n\n getFilterDeleteHandler(index: number): () => void {\n return this.handleFilterDelete.bind(this, index);\n }\n\n getFilterTypes = memoize((columnType: string): FilterTypeValue[] =>\n TableUtils.getFilterTypes(columnType)\n );\n\n initValuesTable(): void {\n const { model, column } = this.props;\n if (!model.isValuesTableAvailable) {\n log.debug('No values table for this model, just ignore');\n return;\n }\n\n this.valuesTablePromise = TableUtils.makeCancelableTablePromise(\n model.valuesTable(column)\n );\n this.valuesTablePromise\n .then(valuesTable => {\n if (valuesTable.columns[0].isSortable ?? true) {\n const sort = valuesTable.columns[0].sort().asc();\n valuesTable.applySort([sort]);\n }\n this.setState({ valuesTable });\n })\n .catch(error => {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n\n log.error('Unable to open values table', error);\n this.setState({ valuesTableError: error });\n });\n }\n\n handleFocusTrapEnd(): void {\n (\n this.focusTrapContainer?.current?.querySelector(\n 'button,select,input,textarea'\n ) as HTMLElement\n ).focus();\n }\n\n handleFocusTrapStart(): void {\n const inputs = this.focusTrapContainer?.current?.querySelectorAll(\n 'button,select,input,textarea'\n );\n if (inputs && inputs.length > 0) {\n const element = inputs[inputs.length - 1] as HTMLElement;\n element.focus();\n }\n }\n\n handleAddAnd(): void {\n let { filterItems, filterOperators } = this.state;\n filterItems = filterItems.concat(AdvancedFilterCreator.makeFilterItem());\n filterOperators = filterOperators.concat(FilterOperator.and);\n this.setState({ filterItems, filterOperators });\n }\n\n handleAddOr(): void {\n let { filterItems, filterOperators } = this.state;\n filterItems = filterItems.concat(AdvancedFilterCreator.makeFilterItem());\n filterOperators = filterOperators.concat(FilterOperator.or);\n this.setState({ filterItems, filterOperators });\n }\n\n handleChangeFilterOperator(index: number, operator: string): void {\n let { filterOperators } = this.state;\n filterOperators = [...filterOperators];\n\n assertFilterOperatorValue(operator);\n\n filterOperators[index] = operator;\n\n this.setState({ filterOperators });\n\n this.startUpdateTimer();\n }\n\n handleFilterChange(\n filterIndex: number,\n selectedType: FilterTypeValue,\n value: string\n ): void {\n let { filterItems } = this.state;\n filterItems = [...filterItems];\n const { key } = filterItems[filterIndex];\n filterItems[filterIndex] = { key, selectedType, value };\n\n this.setState({ filterItems });\n\n this.startUpdateTimer();\n }\n\n handleFilterDelete(filterIndex: number): void {\n let { filterItems, filterOperators } = this.state;\n filterItems = [...filterItems];\n filterOperators = [...filterOperators];\n if (filterIndex < filterItems.length) {\n filterItems.splice(filterIndex, 1);\n }\n\n if (filterIndex < filterOperators.length) {\n filterOperators.splice(filterIndex, 1);\n } else if (filterIndex === filterOperators.length) {\n // When deleting the last filter item, we also need to remove the last filter operator\n filterOperators.splice(filterOperators.length - 1, 1);\n }\n\n if (filterItems.length === 0) {\n filterItems.push(AdvancedFilterCreator.makeFilterItem());\n }\n\n this.setState({ filterItems, filterOperators });\n\n this.startUpdateTimer();\n }\n\n handleSelectValueChange(\n selectedValues: unknown[],\n invertSelection: boolean\n ): void {\n this.setState({ selectedValues, invertSelection });\n\n this.startUpdateTimer();\n }\n\n handleReset(): void {\n log.debug('Resetting Advanced Filter');\n\n this.setState({\n filterItems: [AdvancedFilterCreator.makeFilterItem()],\n filterOperators: [],\n selectedValues: [],\n invertSelection: true,\n });\n\n this.startUpdateTimer();\n }\n\n handleSortDown(event: React.MouseEvent<HTMLButtonElement>): void {\n const addToExisting = ContextActionUtils.isModifierKeyDown(event);\n this.sortTable(TableUtils.sortDirection.descending, addToExisting);\n }\n\n handleSortUp(event: React.MouseEvent<HTMLButtonElement>): void {\n const addToExisting = ContextActionUtils.isModifierKeyDown(event);\n this.sortTable(TableUtils.sortDirection.ascending, addToExisting);\n }\n\n handleSubmit(event: React.FormEvent<HTMLFormElement>): void {\n log.debug('Submitting Advanced Filter');\n this.stopUpdateTimer();\n this.sendUpdate();\n\n event.preventDefault();\n }\n\n handleDone(event: React.MouseEvent<HTMLButtonElement>): void {\n log.debug('Submitting and Closing Advanced Filter');\n this.stopUpdateTimer();\n this.sendUpdate();\n\n const { onDone } = this.props;\n onDone();\n\n event.preventDefault();\n }\n\n handleUpdateTimeout(): void {\n this.debounceTimeout = undefined;\n this.sendUpdate();\n }\n\n /**\n * Convenience function to check if the previous filter has been inputted, and\n * we should show the add filter buttons (+ AND OR)\n * @returns true If the add filter buttons should be shown, false otherwise\n */\n shouldShowAddFilter(): boolean {\n const { filterItems } = this.state;\n if (filterItems.length === 0) {\n return false;\n }\n\n const filterItem = filterItems[filterItems.length - 1];\n const { selectedType, value } = filterItem;\n\n return (\n selectedType != null &&\n selectedType.length > 0 &&\n value != null &&\n value.length > 0\n );\n }\n\n /**\n * Sorts the table in the specified direction. If already sorted in that direction, remove it.\n * @param direction The sort direction, ASC or DESC\n * @param addToExisting Add to the existing sort, or replace the existing table sort\n */\n sortTable(direction: SortDirection, addToExisting = false): void {\n const { column, onSortChange } = this.props;\n const { isSortable } = this.state;\n if (isSortable) {\n onSortChange(column, direction, addToExisting);\n }\n }\n\n startUpdateTimer(): void {\n this.stopUpdateTimer();\n\n this.debounceTimeout = setTimeout(\n this.handleUpdateTimeout,\n AdvancedFilterCreator.debounceFilterUpdate\n );\n }\n\n stopUpdateTimer(): void {\n if (this.debounceTimeout !== undefined) {\n clearTimeout(this.debounceTimeout);\n this.debounceTimeout = undefined;\n }\n }\n\n sendUpdate(): void {\n const { filterItems, filterOperators, invertSelection, selectedValues } =\n this.state;\n const { column, onFilterChange, model, tableUtils } = this.props;\n const { formatter } = model;\n\n const items = filterItems.filter(\n ({ selectedType, value }) =>\n selectedType != null && value != null && value !== ''\n ) as FilterItem[];\n\n const operators = filterOperators\n .filter(\n (operator, i) =>\n operator != null &&\n filterItems[i].selectedType != null &&\n filterItems[i].value != null &&\n filterItems[i].value !== ''\n )\n .slice(0, items.length - 1);\n // slice last operator, user may have set an operator but not a value\n\n const options = {\n filterItems: items,\n filterOperators: operators,\n invertSelection,\n selectedValues,\n };\n\n const filter = tableUtils.makeAdvancedFilter(\n column,\n options,\n formatter.timeZone\n );\n\n onFilterChange(column, filter, options);\n }\n\n render(): JSX.Element {\n const {\n column,\n model,\n sortDirection,\n formatter,\n tableUtils,\n isMaximized,\n onToggleMaximize,\n } = this.props;\n const {\n filterItems,\n filterOperators,\n invertSelection,\n selectedValues,\n valuesTable,\n valuesTableError,\n isSortable,\n } = this.state;\n const { dh, isValuesTableAvailable } = model;\n const isBoolean = TableUtils.isBooleanType(column.type);\n const isDateType = TableUtils.isDateType(column.type);\n const filterTypes = this.getFilterTypes(column.type);\n const columnType = column.type.substring(column.type.lastIndexOf('.') + 1);\n const filterItemElements = [];\n if (!isBoolean && filterTypes.length) {\n for (let i = 0; i < filterItems.length; i += 1) {\n const filterItem = filterItems[i];\n const { key, selectedType, value } = filterItem;\n\n const element = (\n <AdvancedFilterCreatorFilterItem\n key={key}\n column={column}\n filterTypes={filterTypes}\n onChange={this.getFilterChangeHandler(i)}\n onDelete={this.getFilterDeleteHandler(i)}\n selectedType={selectedType}\n value={value}\n formatter={formatter}\n tableUtils={tableUtils}\n />\n );\n filterItemElements.push(element);\n\n if (i < filterOperators.length) {\n const filterOperator = filterOperators[i];\n const isAndFilter = filterOperator === FilterOperator.and;\n const operatorElement = (\n <div\n key={`filterOperator${key}`}\n className=\"form-row justify-content-end advanced-filter-creator-filter-operator\"\n >\n <Button\n kind=\"ghost\"\n className={classNames('filter-operator', {\n active: isAndFilter,\n })}\n onClick={() =>\n this.handleChangeFilterOperator(i, FilterOperator.and)\n }\n >\n AND\n </Button>\n <Button\n kind=\"ghost\"\n className={classNames('filter-operator', {\n active: !isAndFilter,\n })}\n onClick={() =>\n this.handleChangeFilterOperator(i, FilterOperator.or)\n }\n >\n OR\n </Button>\n </div>\n );\n filterItemElements.push(operatorElement);\n }\n }\n }\n const showAddFilterItem = this.shouldShowAddFilter();\n const addFilterItem = (\n <div\n key=\"addFilterItem\"\n className={classNames('form-row justify-content-end add-filter-item', {\n hidden: !showAddFilterItem,\n })}\n >\n <span className=\"text-muted\">\n <FontAwesomeIcon icon={dhNewCircleLargeFilled} />\n </span>\n <Button\n kind=\"ghost\"\n className=\"btn-filter-item\"\n onClick={this.handleAddAnd}\n disabled={!showAddFilterItem}\n tooltip=\"Add filter with AND\"\n >\n AND\n </Button>\n <Button\n kind=\"ghost\"\n className=\"btn-filter-item\"\n onClick={this.handleAddOr}\n disabled={!showAddFilterItem}\n tooltip=\"Add filter with OR\"\n >\n OR\n </Button>\n </div>\n );\n filterItemElements.push(addFilterItem);\n\n return (\n <div className=\"advanced-filter-creator\" role=\"presentation\">\n <div tabIndex={0} onFocus={this.handleFocusTrapStart} />\n <form onSubmit={this.handleSubmit} ref={this.focusTrapContainer}>\n <div className=\"title-bar\">\n <h6 className=\"advanced-filter-title\">Advanced Filters</h6>\n <div className=\"advanced-filter-menu-buttons\">\n <Button\n kind=\"ghost\"\n className={classNames('sort-operator', {\n active: sortDirection === TableUtils.sortDirection.descending,\n })}\n onClick={this.handleSortDown}\n icon={dhSortAmountDown}\n tooltip={\n isSortable ? `Sort ${column.name} Descending` : 'Not sortable'\n }\n disabled={!isSortable}\n />\n <Button\n kind=\"ghost\"\n className={classNames('sort-operator', {\n active: sortDirection === TableUtils.sortDirection.ascending,\n })}\n onClick={this.handleSortUp}\n icon={\n <FontAwesomeIcon icon={dhSortAmountDown} rotation={180} />\n }\n tooltip={\n isSortable ? `Sort ${column.name} Ascending` : 'Not sortable'\n }\n disabled={!isSortable}\n />\n <Button\n kind=\"ghost\"\n className={classNames('sort-operator', {\n active: isMaximized,\n })}\n onClick={onToggleMaximize}\n icon={isMaximized ? vsScreenNormal : vsScreenFull}\n tooltip={\n isMaximized ? 'Restore dialog size' : 'Maximize dialog'\n }\n />\n </div>\n </div>\n <hr />\n <div className=\"advanced-filter-column-name\">\n {column.name} \n <span className=\"column-type\">({columnType})</span>\n </div>\n {filterItemElements}\n {isValuesTableAvailable && valuesTableError == null && (\n <>\n {!isBoolean && <hr />}\n <div className=\"form-group advanced-filter-values-group\">\n <AdvancedFilterCreatorSelectValue\n dh={dh}\n table={valuesTable}\n onChange={this.handleSelectValueChange}\n invertSelection={invertSelection}\n selectedValues={selectedValues}\n formatter={formatter}\n showSearch={!isDateType}\n timeZone={formatter.timeZone}\n />\n </div>\n </>\n )}\n <div className=\"form-row justify-content-end\">\n <Button\n kind=\"secondary\"\n className=\"mr-2\"\n onClick={this.handleReset}\n >\n Reset\n </Button>\n <Button kind=\"primary\" onClick={this.handleDone}>\n Done\n </Button>\n </div>\n </form>\n <div tabIndex={0} onFocus={this.handleFocusTrapEnd} />\n </div>\n );\n }\n}\n\nexport default AdvancedFilterCreator;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -49,11 +49,11 @@ export class AdvancedFilterCreatorFilterItem extends PureComponent {
|
|
|
49
49
|
this.handleTypeChange = this.handleTypeChange.bind(this);
|
|
50
50
|
this.handleValueChange = this.handleValueChange.bind(this);
|
|
51
51
|
this.typeDropdown = null;
|
|
52
|
-
var
|
|
53
|
-
|
|
54
|
-
filterTypes,
|
|
55
|
-
selectedType =
|
|
56
|
-
|
|
52
|
+
var _props$value = props.value,
|
|
53
|
+
_value = _props$value === void 0 ? '' : _props$value,
|
|
54
|
+
filterTypes = props.filterTypes,
|
|
55
|
+
_props$selectedType = props.selectedType,
|
|
56
|
+
selectedType = _props$selectedType === void 0 ? filterTypes[0] : _props$selectedType;
|
|
57
57
|
this.state = {
|
|
58
58
|
selectedType,
|
|
59
59
|
value: _value
|
|
@@ -64,10 +64,9 @@ export class AdvancedFilterCreatorFilterItem extends PureComponent {
|
|
|
64
64
|
(_this$typeDropdown = this.typeDropdown) === null || _this$typeDropdown === void 0 || _this$typeDropdown.focus();
|
|
65
65
|
}
|
|
66
66
|
componentDidUpdate(prevProps) {
|
|
67
|
-
var
|
|
68
|
-
value,
|
|
69
|
-
selectedType
|
|
70
|
-
} = this.props;
|
|
67
|
+
var _this$props = this.props,
|
|
68
|
+
value = _this$props.value,
|
|
69
|
+
selectedType = _this$props.selectedType;
|
|
71
70
|
if (selectedType !== undefined && prevProps.selectedType !== selectedType) {
|
|
72
71
|
this.setState({
|
|
73
72
|
selectedType
|
|
@@ -85,12 +84,8 @@ export class AdvancedFilterCreatorFilterItem extends PureComponent {
|
|
|
85
84
|
this.setState({
|
|
86
85
|
selectedType
|
|
87
86
|
});
|
|
88
|
-
var
|
|
89
|
-
|
|
90
|
-
} = this.props;
|
|
91
|
-
var {
|
|
92
|
-
value
|
|
93
|
-
} = this.state;
|
|
87
|
+
var onChange = this.props.onChange;
|
|
88
|
+
var value = this.state.value;
|
|
94
89
|
if (value != null && value.length > 0) {
|
|
95
90
|
// Don't send an update unless there's already a value entered
|
|
96
91
|
onChange(selectedType, value);
|
|
@@ -98,18 +93,12 @@ export class AdvancedFilterCreatorFilterItem extends PureComponent {
|
|
|
98
93
|
}
|
|
99
94
|
handleValueChange(event) {
|
|
100
95
|
log.debug2('valueChange');
|
|
101
|
-
var
|
|
102
|
-
value
|
|
103
|
-
} = event.target;
|
|
96
|
+
var value = event.target.value;
|
|
104
97
|
this.setState({
|
|
105
98
|
value
|
|
106
99
|
});
|
|
107
|
-
var
|
|
108
|
-
|
|
109
|
-
} = this.props;
|
|
110
|
-
var {
|
|
111
|
-
selectedType
|
|
112
|
-
} = this.state;
|
|
100
|
+
var onChange = this.props.onChange;
|
|
101
|
+
var selectedType = this.state.selectedType;
|
|
113
102
|
if (selectedType != null) {
|
|
114
103
|
// Don't send an update unless they've already selected a type
|
|
115
104
|
onChange(selectedType, value);
|
|
@@ -117,22 +106,18 @@ export class AdvancedFilterCreatorFilterItem extends PureComponent {
|
|
|
117
106
|
}
|
|
118
107
|
handleDelete() {
|
|
119
108
|
log.debug('delete');
|
|
120
|
-
var
|
|
121
|
-
onDelete
|
|
122
|
-
} = this.props;
|
|
109
|
+
var onDelete = this.props.onDelete;
|
|
123
110
|
onDelete();
|
|
124
111
|
}
|
|
125
112
|
render() {
|
|
126
|
-
var
|
|
127
|
-
column,
|
|
128
|
-
filterTypes,
|
|
129
|
-
formatter,
|
|
130
|
-
tableUtils
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
value
|
|
135
|
-
} = this.state;
|
|
113
|
+
var _this$props2 = this.props,
|
|
114
|
+
column = _this$props2.column,
|
|
115
|
+
filterTypes = _this$props2.filterTypes,
|
|
116
|
+
formatter = _this$props2.formatter,
|
|
117
|
+
tableUtils = _this$props2.tableUtils;
|
|
118
|
+
var _this$state = this.state,
|
|
119
|
+
selectedType = _this$state.selectedType,
|
|
120
|
+
value = _this$state.value;
|
|
136
121
|
var showValueInput = !TableUtils.isBooleanType(column.type);
|
|
137
122
|
var typeOptionElements = [];
|
|
138
123
|
var isValid = this.getCachedIsValid(column, selectedType, value, formatter.timeZone, tableUtils);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdvancedFilterCreatorFilterItem.js","names":["React","PureComponent","Button","Select","getLabelForBooleanFilter","getLabelForDateFilter","getLabelForNumberFilter","getLabelForTextFilter","vsTrash","TableUtils","Log","classNames","memoizeOne","jsx","_jsx","jsxs","_jsxs","log","module","AdvancedFilterCreatorFilterItem","getLabelForFilter","columnType","filterType","isNumberType","isCharType","isTextType","isDateType","isBooleanType","Error","concat","e","warn","constructor","props","_defineProperty","column","operation","value","timeZone","tableUtils","makeAdvancedValueFilter","handleDelete","bind","handleTypeChange","handleValueChange","typeDropdown","filterTypes","selectedType","state","componentDidMount","_this$typeDropdown","focus","componentDidUpdate","prevProps","undefined","setState","eventTargetValue","debug2","onChange","length","event","target","debug","onDelete","render","formatter","showValueInput","type","typeOptionElements","isValid","getCachedIsValid","i","label","element","children","push","className","ref","error","placeholder","kind","onClick","icon","tooltip"],"sources":["../src/AdvancedFilterCreatorFilterItem.tsx"],"sourcesContent":["/* eslint react/no-did-update-set-state: \"off\" */\nimport React, { PureComponent } from 'react';\nimport { Button, Select } from '@deephaven/components';\nimport {\n getLabelForBooleanFilter,\n getLabelForDateFilter,\n getLabelForNumberFilter,\n getLabelForTextFilter,\n type TypeValue as FilterTypeValue,\n} from '@deephaven/filters';\nimport { vsTrash } from '@deephaven/icons';\nimport type { dh } from '@deephaven/jsapi-types';\nimport {\n type AdvancedFilterItemType,\n type Formatter,\n TableUtils,\n} from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport classNames from 'classnames';\nimport memoizeOne from 'memoize-one';\nimport './AdvancedFilterCreatorFilterItem.scss';\n\nconst log = Log.module('AdvancedFilterCreatorFilterItem');\n\nexport interface AdvancedFilterCreatorFilterItemProps {\n column: dh.Column;\n filterTypes: FilterTypeValue[];\n onChange: (type: FilterTypeValue, value: string) => void;\n onDelete: () => void;\n selectedType?: FilterTypeValue;\n value?: string;\n formatter: Formatter;\n tableUtils: TableUtils;\n}\n\nexport type AdvancedFilterCreatorFilterItemState = AdvancedFilterItemType;\n\nexport class AdvancedFilterCreatorFilterItem extends PureComponent<\n AdvancedFilterCreatorFilterItemProps,\n AdvancedFilterCreatorFilterItemState\n> {\n static getLabelForFilter(\n columnType: string,\n filterType: FilterTypeValue\n ): string {\n try {\n if (\n TableUtils.isNumberType(columnType) ||\n TableUtils.isCharType(columnType)\n ) {\n return getLabelForNumberFilter(filterType);\n }\n if (TableUtils.isTextType(columnType)) {\n return getLabelForTextFilter(filterType);\n }\n if (TableUtils.isDateType(columnType)) {\n return getLabelForDateFilter(filterType);\n }\n if (TableUtils.isBooleanType(columnType)) {\n return getLabelForBooleanFilter(filterType);\n }\n throw new Error(`Unrecognized column type: ${columnType}`);\n } catch (e) {\n log.warn(e);\n return '';\n }\n }\n\n constructor(props: AdvancedFilterCreatorFilterItemProps) {\n super(props);\n\n this.handleDelete = this.handleDelete.bind(this);\n this.handleTypeChange = this.handleTypeChange.bind(this);\n this.handleValueChange = this.handleValueChange.bind(this);\n this.typeDropdown = null;\n\n const { value = '', filterTypes, selectedType = filterTypes[0] } = props;\n\n this.state = {\n selectedType,\n value,\n };\n }\n\n componentDidMount(): void {\n this.typeDropdown?.focus();\n }\n\n componentDidUpdate(prevProps: AdvancedFilterCreatorFilterItemProps): void {\n const { value, selectedType } = this.props;\n if (selectedType !== undefined && prevProps.selectedType !== selectedType) {\n this.setState({ selectedType });\n }\n if (value !== undefined && prevProps.value !== value) {\n this.setState({ value });\n }\n }\n\n typeDropdown: HTMLSelectElement | null;\n\n handleTypeChange(eventTargetValue: string): void {\n const selectedType = eventTargetValue as FilterTypeValue;\n log.debug2('typeChange', selectedType);\n this.setState({ selectedType });\n\n const { onChange } = this.props;\n const { value } = this.state;\n if (value != null && value.length > 0) {\n // Don't send an update unless there's already a value entered\n onChange(selectedType, value);\n }\n }\n\n handleValueChange(event: React.ChangeEvent<HTMLInputElement>): void {\n log.debug2('valueChange');\n const { value } = event.target;\n this.setState({ value });\n\n const { onChange } = this.props;\n const { selectedType } = this.state;\n if (selectedType != null) {\n // Don't send an update unless they've already selected a type\n onChange(selectedType, value);\n }\n }\n\n handleDelete(): void {\n log.debug('delete');\n\n const { onDelete } = this.props;\n onDelete();\n }\n\n getCachedIsValid = memoizeOne(\n (\n column: dh.Column,\n operation: FilterTypeValue,\n value: string,\n timeZone: string,\n tableUtils: TableUtils\n ): boolean => {\n try {\n // We don't want to show an error for an empty value\n return (\n !value ||\n tableUtils.makeAdvancedValueFilter(\n column,\n operation,\n value,\n timeZone\n ) != null\n );\n } catch (e) {\n return false;\n }\n }\n );\n\n render(): JSX.Element {\n const { column, filterTypes, formatter, tableUtils } = this.props;\n const { selectedType, value } = this.state;\n const showValueInput = !TableUtils.isBooleanType(column.type);\n const typeOptionElements = [];\n const isValid = this.getCachedIsValid(\n column,\n selectedType,\n value,\n formatter.timeZone,\n tableUtils\n );\n for (let i = 0; i < filterTypes.length; i += 1) {\n const type = filterTypes[i];\n const label = AdvancedFilterCreatorFilterItem.getLabelForFilter(\n column.type,\n type\n );\n const element = (\n <option key={type} value={type}>\n {label}\n </option>\n );\n typeOptionElements.push(element);\n }\n\n return (\n <div className=\"advanced-filter-creator-filter-item\">\n <div className=\"form-row\">\n <div className=\"form-group col\">\n <Select\n className=\"form-control\"\n value={selectedType}\n onChange={this.handleTypeChange}\n ref={typeDropdown => {\n this.typeDropdown = typeDropdown;\n }}\n >\n {typeOptionElements}\n </Select>\n </div>\n {showValueInput && (\n <div className=\"form-group col\">\n <div className=\"input-group\">\n <input\n type=\"text\"\n className={classNames('form-control', { error: !isValid })}\n placeholder=\"Enter value\"\n value={value}\n onChange={this.handleValueChange}\n />\n </div>\n </div>\n )}\n <div className=\"form-group col-1 px-0\">\n <Button\n kind=\"ghost\"\n className=\"w-100 h-100 p-0 m-0\"\n onClick={this.handleDelete}\n icon={vsTrash}\n tooltip=\"Remove Filter\"\n />\n </div>\n </div>\n </div>\n );\n }\n}\n\nexport default AdvancedFilterCreatorFilterItem;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"AdvancedFilterCreatorFilterItem.js","names":["React","PureComponent","Button","Select","getLabelForBooleanFilter","getLabelForDateFilter","getLabelForNumberFilter","getLabelForTextFilter","vsTrash","TableUtils","Log","classNames","memoizeOne","jsx","_jsx","jsxs","_jsxs","log","module","AdvancedFilterCreatorFilterItem","getLabelForFilter","columnType","filterType","isNumberType","isCharType","isTextType","isDateType","isBooleanType","Error","concat","e","warn","constructor","props","_defineProperty","column","operation","value","timeZone","tableUtils","makeAdvancedValueFilter","handleDelete","bind","handleTypeChange","handleValueChange","typeDropdown","_props$value","filterTypes","_props$selectedType","selectedType","state","componentDidMount","_this$typeDropdown","focus","componentDidUpdate","prevProps","_this$props","undefined","setState","eventTargetValue","debug2","onChange","length","event","target","debug","onDelete","render","_this$props2","formatter","_this$state","showValueInput","type","typeOptionElements","isValid","getCachedIsValid","i","label","element","children","push","className","ref","error","placeholder","kind","onClick","icon","tooltip"],"sources":["../src/AdvancedFilterCreatorFilterItem.tsx"],"sourcesContent":["/* eslint react/no-did-update-set-state: \"off\" */\nimport React, { PureComponent } from 'react';\nimport { Button, Select } from '@deephaven/components';\nimport {\n getLabelForBooleanFilter,\n getLabelForDateFilter,\n getLabelForNumberFilter,\n getLabelForTextFilter,\n type TypeValue as FilterTypeValue,\n} from '@deephaven/filters';\nimport { vsTrash } from '@deephaven/icons';\nimport type { dh } from '@deephaven/jsapi-types';\nimport {\n type AdvancedFilterItemType,\n type Formatter,\n TableUtils,\n} from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport classNames from 'classnames';\nimport memoizeOne from 'memoize-one';\nimport './AdvancedFilterCreatorFilterItem.scss';\n\nconst log = Log.module('AdvancedFilterCreatorFilterItem');\n\nexport interface AdvancedFilterCreatorFilterItemProps {\n column: dh.Column;\n filterTypes: FilterTypeValue[];\n onChange: (type: FilterTypeValue, value: string) => void;\n onDelete: () => void;\n selectedType?: FilterTypeValue;\n value?: string;\n formatter: Formatter;\n tableUtils: TableUtils;\n}\n\nexport type AdvancedFilterCreatorFilterItemState = AdvancedFilterItemType;\n\nexport class AdvancedFilterCreatorFilterItem extends PureComponent<\n AdvancedFilterCreatorFilterItemProps,\n AdvancedFilterCreatorFilterItemState\n> {\n static getLabelForFilter(\n columnType: string,\n filterType: FilterTypeValue\n ): string {\n try {\n if (\n TableUtils.isNumberType(columnType) ||\n TableUtils.isCharType(columnType)\n ) {\n return getLabelForNumberFilter(filterType);\n }\n if (TableUtils.isTextType(columnType)) {\n return getLabelForTextFilter(filterType);\n }\n if (TableUtils.isDateType(columnType)) {\n return getLabelForDateFilter(filterType);\n }\n if (TableUtils.isBooleanType(columnType)) {\n return getLabelForBooleanFilter(filterType);\n }\n throw new Error(`Unrecognized column type: ${columnType}`);\n } catch (e) {\n log.warn(e);\n return '';\n }\n }\n\n constructor(props: AdvancedFilterCreatorFilterItemProps) {\n super(props);\n\n this.handleDelete = this.handleDelete.bind(this);\n this.handleTypeChange = this.handleTypeChange.bind(this);\n this.handleValueChange = this.handleValueChange.bind(this);\n this.typeDropdown = null;\n\n const { value = '', filterTypes, selectedType = filterTypes[0] } = props;\n\n this.state = {\n selectedType,\n value,\n };\n }\n\n componentDidMount(): void {\n this.typeDropdown?.focus();\n }\n\n componentDidUpdate(prevProps: AdvancedFilterCreatorFilterItemProps): void {\n const { value, selectedType } = this.props;\n if (selectedType !== undefined && prevProps.selectedType !== selectedType) {\n this.setState({ selectedType });\n }\n if (value !== undefined && prevProps.value !== value) {\n this.setState({ value });\n }\n }\n\n typeDropdown: HTMLSelectElement | null;\n\n handleTypeChange(eventTargetValue: string): void {\n const selectedType = eventTargetValue as FilterTypeValue;\n log.debug2('typeChange', selectedType);\n this.setState({ selectedType });\n\n const { onChange } = this.props;\n const { value } = this.state;\n if (value != null && value.length > 0) {\n // Don't send an update unless there's already a value entered\n onChange(selectedType, value);\n }\n }\n\n handleValueChange(event: React.ChangeEvent<HTMLInputElement>): void {\n log.debug2('valueChange');\n const { value } = event.target;\n this.setState({ value });\n\n const { onChange } = this.props;\n const { selectedType } = this.state;\n if (selectedType != null) {\n // Don't send an update unless they've already selected a type\n onChange(selectedType, value);\n }\n }\n\n handleDelete(): void {\n log.debug('delete');\n\n const { onDelete } = this.props;\n onDelete();\n }\n\n getCachedIsValid = memoizeOne(\n (\n column: dh.Column,\n operation: FilterTypeValue,\n value: string,\n timeZone: string,\n tableUtils: TableUtils\n ): boolean => {\n try {\n // We don't want to show an error for an empty value\n return (\n !value ||\n tableUtils.makeAdvancedValueFilter(\n column,\n operation,\n value,\n timeZone\n ) != null\n );\n } catch (e) {\n return false;\n }\n }\n );\n\n render(): JSX.Element {\n const { column, filterTypes, formatter, tableUtils } = this.props;\n const { selectedType, value } = this.state;\n const showValueInput = !TableUtils.isBooleanType(column.type);\n const typeOptionElements = [];\n const isValid = this.getCachedIsValid(\n column,\n selectedType,\n value,\n formatter.timeZone,\n tableUtils\n );\n for (let i = 0; i < filterTypes.length; i += 1) {\n const type = filterTypes[i];\n const label = AdvancedFilterCreatorFilterItem.getLabelForFilter(\n column.type,\n type\n );\n const element = (\n <option key={type} value={type}>\n {label}\n </option>\n );\n typeOptionElements.push(element);\n }\n\n return (\n <div className=\"advanced-filter-creator-filter-item\">\n <div className=\"form-row\">\n <div className=\"form-group col\">\n <Select\n className=\"form-control\"\n value={selectedType}\n onChange={this.handleTypeChange}\n ref={typeDropdown => {\n this.typeDropdown = typeDropdown;\n }}\n >\n {typeOptionElements}\n </Select>\n </div>\n {showValueInput && (\n <div className=\"form-group col\">\n <div className=\"input-group\">\n <input\n type=\"text\"\n className={classNames('form-control', { error: !isValid })}\n placeholder=\"Enter value\"\n value={value}\n onChange={this.handleValueChange}\n />\n </div>\n </div>\n )}\n <div className=\"form-group col-1 px-0\">\n <Button\n kind=\"ghost\"\n className=\"w-100 h-100 p-0 m-0\"\n onClick={this.handleDelete}\n icon={vsTrash}\n tooltip=\"Remove Filter\"\n />\n </div>\n </div>\n </div>\n );\n }\n}\n\nexport default AdvancedFilterCreatorFilterItem;\n"],"mappings":"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","ignoreList":[]}
|