@deephaven/iris-grid 1.7.2-beta.1 → 1.7.2-beta.4
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 +5 -7
- package/dist/AdvancedFilterCreator.js.map +1 -1
- package/dist/AdvancedFilterCreatorFilterItem.js +6 -7
- package/dist/AdvancedFilterCreatorFilterItem.js.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValue.js +1 -2
- package/dist/AdvancedFilterCreatorSelectValue.js.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValueList.js +2 -3
- package/dist/AdvancedFilterCreatorSelectValueList.js.map +1 -1
- package/dist/ColumnHeaderGroup.js.map +1 -1
- package/dist/ColumnStatistics.d.ts +2 -2
- package/dist/ColumnStatistics.d.ts.map +1 -1
- package/dist/ColumnStatistics.js +2 -5
- package/dist/ColumnStatistics.js.map +1 -1
- package/dist/CommonTypes.js.map +1 -1
- package/dist/CrossColumnSearch.js +2 -4
- package/dist/CrossColumnSearch.js.map +1 -1
- package/dist/EmptyIrisGridModel.js.map +1 -1
- package/dist/FilterInputField.js +4 -5
- package/dist/FilterInputField.js.map +1 -1
- package/dist/GotoRow.js +4 -6
- package/dist/GotoRow.js.map +1 -1
- package/dist/IrisGrid.d.ts +35 -44
- package/dist/IrisGrid.d.ts.map +1 -1
- package/dist/IrisGrid.js +157 -170
- package/dist/IrisGrid.js.map +1 -1
- package/dist/IrisGridBottomBar.d.ts.map +1 -1
- package/dist/IrisGridBottomBar.js +4 -1
- package/dist/IrisGridBottomBar.js.map +1 -1
- package/dist/IrisGridCacheUtils.js.map +1 -1
- package/dist/IrisGridCellOverflowModal.js +1 -2
- package/dist/IrisGridCellOverflowModal.js.map +1 -1
- package/dist/IrisGridCellRendererUtils.js.map +1 -1
- package/dist/IrisGridCopyHandler.js +4 -6
- package/dist/IrisGridCopyHandler.js.map +1 -1
- package/dist/IrisGridDataBarCellRenderer.js.map +1 -1
- package/dist/IrisGridIcons.js.map +1 -1
- package/dist/IrisGridMetricCalculator.d.ts +1 -2
- package/dist/IrisGridMetricCalculator.d.ts.map +1 -1
- package/dist/IrisGridMetricCalculator.js +3 -2
- package/dist/IrisGridMetricCalculator.js.map +1 -1
- package/dist/IrisGridModel.js.map +1 -1
- package/dist/IrisGridModelFactory.js.map +1 -1
- package/dist/IrisGridModelUpdater.js.map +1 -1
- package/dist/IrisGridPartitionSelector.d.ts.map +1 -1
- package/dist/IrisGridPartitionSelector.js +6 -8
- package/dist/IrisGridPartitionSelector.js.map +1 -1
- package/dist/IrisGridPartitionedTableModel.js.map +1 -1
- package/dist/IrisGridProxyModel.js +6 -7
- package/dist/IrisGridProxyModel.js.map +1 -1
- package/dist/IrisGridRenderer.js +0 -1
- package/dist/IrisGridRenderer.js.map +1 -1
- package/dist/IrisGridShortcuts.js.map +1 -1
- package/dist/IrisGridTableModel.js +1 -2
- package/dist/IrisGridTableModel.js.map +1 -1
- package/dist/IrisGridTableModelTemplate.d.ts +1 -1
- package/dist/IrisGridTableModelTemplate.d.ts.map +1 -1
- package/dist/IrisGridTableModelTemplate.js +57 -61
- package/dist/IrisGridTableModelTemplate.js.map +1 -1
- package/dist/IrisGridTestUtils.js.map +1 -1
- package/dist/IrisGridTextCellRenderer.js.map +1 -1
- package/dist/IrisGridTheme.js.map +1 -1
- package/dist/IrisGridThemeProvider.js.map +1 -1
- package/dist/IrisGridTreeTableModel.js +12 -13
- package/dist/IrisGridTreeTableModel.js.map +1 -1
- package/dist/IrisGridUtils.js +56 -56
- package/dist/IrisGridUtils.js.map +1 -1
- package/dist/LazyIrisGrid.d.ts +55 -78
- package/dist/LazyIrisGrid.d.ts.map +1 -1
- package/dist/LazyIrisGrid.js.map +1 -1
- package/dist/MissingKeyError.js.map +1 -1
- package/dist/MissingPartitionError.js.map +1 -1
- package/dist/NoPastePermissionModal.js +1 -2
- package/dist/NoPastePermissionModal.js.map +1 -1
- package/dist/PartitionedGridModel.js.map +1 -1
- package/dist/PendingDataBottomBar.js +1 -2
- package/dist/PendingDataBottomBar.js.map +1 -1
- package/dist/ToastBottomBar.js.map +1 -1
- package/dist/declaration.d.js.map +1 -1
- package/dist/format-context-menus/CustomFormatAction.js +1 -2
- package/dist/format-context-menus/CustomFormatAction.js.map +1 -1
- package/dist/format-context-menus/DateTimeFormatContextMenu.js.map +1 -1
- package/dist/format-context-menus/DecimalFormatContextMenu.js.map +1 -1
- package/dist/format-context-menus/FormatContextMenuUtils.js.map +1 -1
- package/dist/format-context-menus/IntegerFormatContextMenu.js.map +1 -1
- package/dist/format-context-menus/TextAlignmentFormatContextMenu.js +6 -4
- package/dist/format-context-menus/TextAlignmentFormatContextMenu.js.map +1 -1
- package/dist/format-context-menus/index.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/key-handlers/ClearFilterKeyHandler.js.map +1 -1
- package/dist/key-handlers/CopyCellKeyHandler.js.map +1 -1
- package/dist/key-handlers/CopyKeyHandler.js.map +1 -1
- package/dist/key-handlers/ReverseKeyHandler.js.map +1 -1
- package/dist/key-handlers/index.js.map +1 -1
- package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.d.ts.map +1 -1
- package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js +5 -2
- package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.js +1 -2
- package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridCopyCellMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridFilterMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridPartitionedTableMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridRowTreeMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridSortMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridTokenMouseHandler.js +1 -3
- package/dist/mousehandlers/IrisGridTokenMouseHandler.js.map +1 -1
- package/dist/mousehandlers/PendingMouseHandler.js.map +1 -1
- package/dist/mousehandlers/index.js.map +1 -1
- package/dist/sidebar/AdvancedSettings.js.map +1 -1
- package/dist/sidebar/AdvancedSettingsMenu.d.ts +1 -1
- package/dist/sidebar/AdvancedSettingsMenu.d.ts.map +1 -1
- package/dist/sidebar/AdvancedSettingsMenu.js.map +1 -1
- package/dist/sidebar/AdvancedSettingsType.js +3 -3
- package/dist/sidebar/AdvancedSettingsType.js.map +1 -1
- package/dist/sidebar/ChartBuilder.d.ts +2 -2
- package/dist/sidebar/ChartBuilder.d.ts.map +1 -1
- package/dist/sidebar/ChartBuilder.js +1 -2
- package/dist/sidebar/ChartBuilder.js.map +1 -1
- package/dist/sidebar/CustomColumnBuilder.js +3 -5
- package/dist/sidebar/CustomColumnBuilder.js.map +1 -1
- package/dist/sidebar/CustomColumnInput.js +1 -2
- package/dist/sidebar/CustomColumnInput.js.map +1 -1
- package/dist/sidebar/DownloadServiceWorkerUtils.js +1 -1
- package/dist/sidebar/DownloadServiceWorkerUtils.js.map +1 -1
- package/dist/sidebar/InputEditor.js +8 -9
- package/dist/sidebar/InputEditor.js.map +1 -1
- package/dist/sidebar/OptionType.js +3 -3
- package/dist/sidebar/OptionType.js.map +1 -1
- package/dist/sidebar/RollupRows.js +7 -9
- package/dist/sidebar/RollupRows.js.map +1 -1
- package/dist/sidebar/SelectDistinctBuilder.js +1 -2
- package/dist/sidebar/SelectDistinctBuilder.js.map +1 -1
- package/dist/sidebar/TableCsvExporter.js +5 -7
- package/dist/sidebar/TableCsvExporter.js.map +1 -1
- package/dist/sidebar/TableSaver.js +9 -10
- package/dist/sidebar/TableSaver.js.map +1 -1
- package/dist/sidebar/aggregations/AggregationEdit.js +4 -5
- package/dist/sidebar/aggregations/AggregationEdit.js.map +1 -1
- package/dist/sidebar/aggregations/AggregationOperation.js +3 -3
- package/dist/sidebar/aggregations/AggregationOperation.js.map +1 -1
- package/dist/sidebar/aggregations/AggregationUtils.js +0 -1
- package/dist/sidebar/aggregations/AggregationUtils.js.map +1 -1
- package/dist/sidebar/aggregations/Aggregations.d.ts.map +1 -1
- package/dist/sidebar/aggregations/Aggregations.js +2 -4
- package/dist/sidebar/aggregations/Aggregations.js.map +1 -1
- package/dist/sidebar/aggregations/index.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ColumnFormatEditor.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js +1 -3
- package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionEditor.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionEditor.js +2 -3
- package/dist/sidebar/conditional-formatting/ConditionEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js +1 -2
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js +1 -2
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js +21 -21
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js.map +1 -1
- package/dist/sidebar/conditional-formatting/RowFormatEditor.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/RowFormatEditor.js +1 -3
- package/dist/sidebar/conditional-formatting/RowFormatEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/StyleEditor.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/StyleEditor.js +2 -3
- package/dist/sidebar/conditional-formatting/StyleEditor.js.map +1 -1
- package/dist/sidebar/icons/BarIcon.js +1 -2
- package/dist/sidebar/icons/BarIcon.js.map +1 -1
- package/dist/sidebar/icons/FormatColumnWhereIcon.js +1 -2
- package/dist/sidebar/icons/FormatColumnWhereIcon.js.map +1 -1
- package/dist/sidebar/icons/FormatRowWhereIcon.js +1 -2
- package/dist/sidebar/icons/FormatRowWhereIcon.js.map +1 -1
- package/dist/sidebar/icons/HistogramIcon.js +1 -2
- package/dist/sidebar/icons/HistogramIcon.js.map +1 -1
- package/dist/sidebar/icons/LineIcon.js +1 -2
- package/dist/sidebar/icons/LineIcon.js.map +1 -1
- package/dist/sidebar/icons/PieIcon.js +1 -2
- package/dist/sidebar/icons/PieIcon.js.map +1 -1
- package/dist/sidebar/icons/ScatterIcon.js +1 -2
- package/dist/sidebar/icons/ScatterIcon.js.map +1 -1
- package/dist/sidebar/icons/index.js.map +1 -1
- package/dist/sidebar/index.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.d.ts +2 -2
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.d.ts.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js +34 -36
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.js +3 -3
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.js +3 -5
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.d.ts.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js +2 -4
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/PointerSensorWithInteraction.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.js +4 -4
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeInner.js +3 -6
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeInner.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.js +1 -2
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/keyboardCoordinates.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/types.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.d.ts +1 -2
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.d.ts.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js.map +1 -1
- package/package.json +17 -18
|
@@ -18,9 +18,7 @@ import { nanoid } from 'nanoid';
|
|
|
18
18
|
import AdvancedFilterCreatorFilterItem from "./AdvancedFilterCreatorFilterItem.js";
|
|
19
19
|
import AdvancedFilterCreatorSelectValue from "./AdvancedFilterCreatorSelectValue.js";
|
|
20
20
|
import "./AdvancedFilterCreator.css";
|
|
21
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
22
|
-
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
23
|
-
import { Fragment as _Fragment } from "react/jsx-runtime";
|
|
21
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
24
22
|
var log = Log.module('AdvancedFilterCreator');
|
|
25
23
|
class AdvancedFilterCreator extends PureComponent {
|
|
26
24
|
static makeFilterItem() {
|
|
@@ -148,12 +146,12 @@ class AdvancedFilterCreator extends PureComponent {
|
|
|
148
146
|
});
|
|
149
147
|
}
|
|
150
148
|
handleFocusTrapEnd() {
|
|
151
|
-
var _this$focusTrapContai
|
|
152
|
-
((_this$focusTrapContai = this.focusTrapContainer) === null || _this$focusTrapContai === void 0
|
|
149
|
+
var _this$focusTrapContai;
|
|
150
|
+
((_this$focusTrapContai = this.focusTrapContainer) === null || _this$focusTrapContai === void 0 || (_this$focusTrapContai = _this$focusTrapContai.current) === null || _this$focusTrapContai === void 0 ? void 0 : _this$focusTrapContai.querySelector('button,select,input,textarea')).focus();
|
|
153
151
|
}
|
|
154
152
|
handleFocusTrapStart() {
|
|
155
|
-
var _this$
|
|
156
|
-
var inputs = (_this$
|
|
153
|
+
var _this$focusTrapContai2;
|
|
154
|
+
var inputs = (_this$focusTrapContai2 = this.focusTrapContainer) === null || _this$focusTrapContai2 === void 0 || (_this$focusTrapContai2 = _this$focusTrapContai2.current) === null || _this$focusTrapContai2 === void 0 ? void 0 : _this$focusTrapContai2.querySelectorAll('button,select,input,textarea');
|
|
157
155
|
if (inputs && inputs.length > 0) {
|
|
158
156
|
var element = inputs[inputs.length - 1];
|
|
159
157
|
element.focus();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdvancedFilterCreator.js","names":["React","PureComponent","classNames","FontAwesomeIcon","memoize","Operator","FilterOperator","assertOperatorValue","assertFilterOperatorValue","dhSortAmountDown","dhNewCircleLargeFilled","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","_this$focusTrapContai2","current","querySelector","focus","_this$focusTrapContai3","_this$focusTrapContai4","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","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 { dhSortAmountDown, dhNewCircleLargeFilled } 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}\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 { column, model, sortDirection, formatter, tableUtils } = 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 </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\">\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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"}
|
|
1
|
+
{"version":3,"file":"AdvancedFilterCreator.js","names":["React","PureComponent","classNames","FontAwesomeIcon","memoize","Operator","FilterOperator","assertOperatorValue","assertFilterOperatorValue","dhSortAmountDown","dhNewCircleLargeFilled","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","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 { dhSortAmountDown, dhNewCircleLargeFilled } 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}\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 { column, model, sortDirection, formatter, tableUtils } = 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 </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\">\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":[]}
|
|
@@ -11,8 +11,7 @@ import Log from '@deephaven/log';
|
|
|
11
11
|
import classNames from 'classnames';
|
|
12
12
|
import memoizeOne from 'memoize-one';
|
|
13
13
|
import "./AdvancedFilterCreatorFilterItem.css";
|
|
14
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
15
|
-
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
14
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
16
15
|
var log = Log.module('AdvancedFilterCreatorFilterItem');
|
|
17
16
|
export class AdvancedFilterCreatorFilterItem extends PureComponent {
|
|
18
17
|
static getLabelForFilter(columnType, filterType) {
|
|
@@ -62,7 +61,7 @@ export class AdvancedFilterCreatorFilterItem extends PureComponent {
|
|
|
62
61
|
}
|
|
63
62
|
componentDidMount() {
|
|
64
63
|
var _this$typeDropdown;
|
|
65
|
-
(_this$typeDropdown = this.typeDropdown) === null || _this$typeDropdown === void 0
|
|
64
|
+
(_this$typeDropdown = this.typeDropdown) === null || _this$typeDropdown === void 0 || _this$typeDropdown.focus();
|
|
66
65
|
}
|
|
67
66
|
componentDidUpdate(prevProps) {
|
|
68
67
|
var {
|
|
@@ -138,12 +137,12 @@ export class AdvancedFilterCreatorFilterItem extends PureComponent {
|
|
|
138
137
|
var typeOptionElements = [];
|
|
139
138
|
var isValid = this.getCachedIsValid(column, selectedType, value, formatter.timeZone, tableUtils);
|
|
140
139
|
for (var i = 0; i < filterTypes.length; i += 1) {
|
|
141
|
-
var
|
|
142
|
-
var label = AdvancedFilterCreatorFilterItem.getLabelForFilter(column.type,
|
|
140
|
+
var type = filterTypes[i];
|
|
141
|
+
var label = AdvancedFilterCreatorFilterItem.getLabelForFilter(column.type, type);
|
|
143
142
|
var element = /*#__PURE__*/_jsx("option", {
|
|
144
|
-
value:
|
|
143
|
+
value: type,
|
|
145
144
|
children: label
|
|
146
|
-
},
|
|
145
|
+
}, type);
|
|
147
146
|
typeOptionElements.push(element);
|
|
148
147
|
}
|
|
149
148
|
return /*#__PURE__*/_jsx("div", {
|
|
@@ -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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"}
|
|
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":[]}
|
|
@@ -8,8 +8,7 @@ import { TableUtils } from '@deephaven/jsapi-utils';
|
|
|
8
8
|
import { Button, FadeTransition } from '@deephaven/components';
|
|
9
9
|
import AdvancedFilterCreatorSelectValueList from "./AdvancedFilterCreatorSelectValueList.js";
|
|
10
10
|
import "./AdvancedFilterCreatorSelectValue.css";
|
|
11
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
12
|
-
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
11
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
13
12
|
class AdvancedFilterCreatorSelectValue extends PureComponent {
|
|
14
13
|
constructor(props) {
|
|
15
14
|
super(props);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdvancedFilterCreatorSelectValue.js","names":["React","PureComponent","classNames","TableUtils","Button","FadeTransition","AdvancedFilterCreatorSelectValueList","jsx","_jsx","jsxs","_jsxs","AdvancedFilterCreatorSelectValue","constructor","props","_defineProperty","handleSelectAllClick","bind","handleClearAllClick","handleListChange","handleSearchChange","handleUpdateFilterTimeout","dh","invertSelection","selectedValues","tableUtils","state","filters","searchText","componentDidMount","initSearchTable","componentDidUpdate","prevProps","prevState","table","setState","searchTable","close","startUpdateFilterTimer","componentWillUnmount","searchTablePromise","undefined","stopUpdateFilterTimer","getColumnName","columns","name","getDisplayedValuesCount","totalSize","length","getDisplayedValueText","count","formatter","formattedCount","getFormattedString","formattedTableSize","prefix","concat","copy","then","onChange","event","target","value","resetSelection","updateFilterTimer","updateTableFilter","setTimeout","searchDebounceTime","clearTimeout","timeZone","column","error","filter","isCharType","type","makeQuickFilter","isTextType","push","render","showSearch","columnName","displayedValuesText","placeholderText","className","children","htmlFor","id","placeholder","kind","onClick","in","mountOnEnter","unmountOnExit"],"sources":["../src/AdvancedFilterCreatorSelectValue.tsx"],"sourcesContent":["/* eslint react/no-did-update-set-state: \"off\" */\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport { type Formatter, TableUtils } from '@deephaven/jsapi-utils';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport { Button, FadeTransition } from '@deephaven/components';\nimport AdvancedFilterCreatorSelectValueList from './AdvancedFilterCreatorSelectValueList';\nimport './AdvancedFilterCreatorSelectValue.scss';\nimport { type ColumnName } from './CommonTypes';\n\ninterface AdvancedFilterCreatorSelectValueProps<T> {\n dh: typeof DhType;\n invertSelection: boolean;\n selectedValues: (T | null)[];\n table?: DhType.Table;\n formatter: Formatter;\n onChange: (selectedValues: (T | null)[], invertSelection: boolean) => void;\n showSearch: boolean;\n timeZone: string;\n}\n\ninterface AdvancedFilterCreatorSelectValueState<T> {\n error?: string;\n filters: DhType.FilterCondition[];\n invertSelection: boolean;\n selectedValues: (T | null)[];\n searchText: string;\n table?: DhType.Table;\n}\n\nclass AdvancedFilterCreatorSelectValue<T = unknown> extends PureComponent<\n AdvancedFilterCreatorSelectValueProps<T>,\n AdvancedFilterCreatorSelectValueState<T>\n> {\n static searchDebounceTime = 250;\n\n static defaultProps = {\n invertSelection: true,\n selectedValues: [],\n onChange: (): void => undefined,\n showSearch: true,\n };\n\n constructor(props: AdvancedFilterCreatorSelectValueProps<T>) {\n super(props);\n\n this.handleSelectAllClick = this.handleSelectAllClick.bind(this);\n this.handleClearAllClick = this.handleClearAllClick.bind(this);\n this.handleListChange = this.handleListChange.bind(this);\n this.handleSearchChange = this.handleSearchChange.bind(this);\n this.handleUpdateFilterTimeout = this.handleUpdateFilterTimeout.bind(this);\n\n const { dh, invertSelection, selectedValues } = props;\n\n this.tableUtils = new TableUtils(dh);\n\n this.state = {\n filters: [],\n invertSelection,\n selectedValues,\n searchText: '',\n };\n }\n\n componentDidMount(): void {\n this.initSearchTable();\n }\n\n componentDidUpdate(\n prevProps: AdvancedFilterCreatorSelectValueProps<T>,\n prevState: AdvancedFilterCreatorSelectValueState<T>\n ): void {\n const { invertSelection, selectedValues, table } = this.props;\n if (prevProps.table !== table) {\n this.initSearchTable();\n }\n\n if (prevProps.invertSelection !== invertSelection) {\n this.setState({ invertSelection });\n }\n\n if (prevProps.selectedValues !== selectedValues) {\n this.setState({ selectedValues });\n }\n\n const { table: searchTable, searchText } = this.state;\n\n if (searchTable !== prevState.table) {\n if (prevState.table != null) {\n prevState.table.close();\n }\n if (searchTable != null) {\n this.startUpdateFilterTimer();\n }\n }\n\n if (searchText !== prevState.searchText) {\n this.startUpdateFilterTimer();\n }\n }\n\n componentWillUnmount(): void {\n const { table } = this.state;\n if (table != null) {\n table.close();\n }\n this.searchTablePromise = undefined;\n\n this.stopUpdateFilterTimer();\n }\n\n searchTablePromise?: Promise<DhType.Table>;\n\n tableUtils: TableUtils;\n\n updateFilterTimer?: ReturnType<typeof setTimeout>;\n\n getColumnName(): ColumnName {\n const { table } = this.props;\n if (table != null) {\n return table.columns[0].name;\n }\n return '';\n }\n\n getDisplayedValuesCount(): number | null {\n const { invertSelection, selectedValues, table } = this.state;\n if (table == null) {\n return null;\n }\n\n if (invertSelection) {\n return table.totalSize - selectedValues.length;\n }\n return selectedValues.length;\n }\n\n getDisplayedValueText(): string | null {\n const count = this.getDisplayedValuesCount();\n const { table } = this.state;\n\n const { formatter } = this.props;\n\n if (count != null && table != null) {\n const formattedCount = formatter.getFormattedString(count, 'long');\n const formattedTableSize = formatter.getFormattedString(\n table.totalSize,\n 'long'\n );\n let prefix = '';\n if (count < 1000000) {\n prefix = 'Displaying ';\n }\n return `${prefix}${formattedCount} of ${formattedTableSize}`;\n }\n return null;\n }\n\n initSearchTable(): void {\n const { table } = this.props;\n if (table == null) {\n return;\n }\n\n const searchTablePromise = table.copy();\n this.searchTablePromise = searchTablePromise;\n this.searchTablePromise.then(searchTable => {\n if (this.searchTablePromise === searchTablePromise) {\n this.setState({ table: searchTable });\n this.searchTablePromise = undefined;\n } else {\n searchTable.close();\n }\n });\n }\n\n handleListChange(\n selectedValues: (T | null)[],\n invertSelection: boolean\n ): void {\n this.setState({ selectedValues, invertSelection });\n\n const { onChange } = this.props;\n onChange(selectedValues, invertSelection);\n }\n\n handleSearchChange(event: React.ChangeEvent<HTMLInputElement>): void {\n const searchText = event.target.value;\n this.setState({ searchText });\n }\n\n handleSelectAllClick(): void {\n this.resetSelection(true);\n }\n\n handleClearAllClick(): void {\n this.resetSelection(false);\n }\n\n handleUpdateFilterTimeout(): void {\n this.updateFilterTimer = undefined;\n this.updateTableFilter();\n }\n\n resetSelection(invertSelection: boolean): void {\n const selectedValues: T[] = [];\n\n this.setState({ invertSelection, selectedValues });\n\n const { onChange } = this.props;\n onChange(selectedValues, invertSelection);\n }\n\n startUpdateFilterTimer(): void {\n this.stopUpdateFilterTimer();\n\n this.updateFilterTimer = setTimeout(\n this.handleUpdateFilterTimeout,\n AdvancedFilterCreatorSelectValue.searchDebounceTime\n );\n }\n\n stopUpdateFilterTimer(): void {\n if (this.updateFilterTimer != null) {\n clearTimeout(this.updateFilterTimer);\n this.updateFilterTimer = undefined;\n }\n }\n\n updateTableFilter(): void {\n const { table, searchText } = this.state;\n const { timeZone } = this.props;\n const { tableUtils } = this;\n const column = table?.columns[0];\n const filters = [];\n if (column == null) {\n return;\n }\n let error;\n if (searchText.length > 0) {\n let filter = null;\n if (TableUtils.isCharType(column.type)) {\n // Just exact match for char\n filter = tableUtils.makeQuickFilter(column, searchText);\n } else if (TableUtils.isTextType(column.type)) {\n // case insensitive & contains search text\n filter = tableUtils.makeQuickFilter(column, `~${searchText}`, timeZone);\n } else {\n // greater than or equal search for everything else\n // we may want to be smarter with some other types (like dates)\n filter = tableUtils.makeQuickFilter(\n column,\n `>=${searchText}`,\n timeZone\n );\n }\n\n if (filter != null) {\n filters.push(filter);\n } else {\n error = 'Invalid search text';\n }\n }\n\n this.setState({ filters, error });\n }\n\n render(): React.ReactElement {\n const {\n error,\n filters,\n invertSelection,\n selectedValues,\n searchText,\n table,\n } = this.state;\n const { dh, formatter, showSearch } = this.props;\n const columnName = this.getColumnName();\n const displayedValuesText = this.getDisplayedValueText();\n const placeholderText = columnName ? `Find ${columnName}...` : '';\n\n return (\n <div className=\"advanced-filter-creator-select-value\">\n <div className={showSearch ? 'form-group' : ''}>\n <label htmlFor=\"advanced-filter-creator-select-value-input\">\n Select Values\n </label>\n {showSearch && (\n <input\n type=\"text\"\n className={classNames('form-control', {\n 'is-invalid': error != null,\n })}\n id=\"advanced-filter-creator-select-value-input\"\n placeholder={placeholderText}\n value={searchText}\n onChange={this.handleSearchChange}\n />\n )}\n </div>\n <AdvancedFilterCreatorSelectValueList\n dh={dh}\n table={table}\n filters={filters}\n invertSelection={invertSelection}\n selectedValues={selectedValues}\n formatter={formatter}\n onChange={this.handleListChange}\n />\n <div className=\"advanced-filter-creator-select-meta-row\">\n <div>\n <Button kind=\"ghost\" onClick={this.handleSelectAllClick}>\n Select All\n </Button>\n <Button kind=\"ghost\" onClick={this.handleClearAllClick}>\n Clear\n </Button>\n </div>\n <FadeTransition\n in={displayedValuesText != null}\n mountOnEnter\n unmountOnExit\n >\n <div className=\"row-count-info\">{displayedValuesText}</div>\n </FadeTransition>\n </div>\n </div>\n );\n }\n}\n\nexport default AdvancedFilterCreatorSelectValue;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AdvancedFilterCreatorSelectValue.js","names":["React","PureComponent","classNames","TableUtils","Button","FadeTransition","AdvancedFilterCreatorSelectValueList","jsx","_jsx","jsxs","_jsxs","AdvancedFilterCreatorSelectValue","constructor","props","_defineProperty","handleSelectAllClick","bind","handleClearAllClick","handleListChange","handleSearchChange","handleUpdateFilterTimeout","dh","invertSelection","selectedValues","tableUtils","state","filters","searchText","componentDidMount","initSearchTable","componentDidUpdate","prevProps","prevState","table","setState","searchTable","close","startUpdateFilterTimer","componentWillUnmount","searchTablePromise","undefined","stopUpdateFilterTimer","getColumnName","columns","name","getDisplayedValuesCount","totalSize","length","getDisplayedValueText","count","formatter","formattedCount","getFormattedString","formattedTableSize","prefix","concat","copy","then","onChange","event","target","value","resetSelection","updateFilterTimer","updateTableFilter","setTimeout","searchDebounceTime","clearTimeout","timeZone","column","error","filter","isCharType","type","makeQuickFilter","isTextType","push","render","showSearch","columnName","displayedValuesText","placeholderText","className","children","htmlFor","id","placeholder","kind","onClick","in","mountOnEnter","unmountOnExit"],"sources":["../src/AdvancedFilterCreatorSelectValue.tsx"],"sourcesContent":["/* eslint react/no-did-update-set-state: \"off\" */\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport { type Formatter, TableUtils } from '@deephaven/jsapi-utils';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport { Button, FadeTransition } from '@deephaven/components';\nimport AdvancedFilterCreatorSelectValueList from './AdvancedFilterCreatorSelectValueList';\nimport './AdvancedFilterCreatorSelectValue.scss';\nimport { type ColumnName } from './CommonTypes';\n\ninterface AdvancedFilterCreatorSelectValueProps<T> {\n dh: typeof DhType;\n invertSelection: boolean;\n selectedValues: (T | null)[];\n table?: DhType.Table;\n formatter: Formatter;\n onChange: (selectedValues: (T | null)[], invertSelection: boolean) => void;\n showSearch: boolean;\n timeZone: string;\n}\n\ninterface AdvancedFilterCreatorSelectValueState<T> {\n error?: string;\n filters: DhType.FilterCondition[];\n invertSelection: boolean;\n selectedValues: (T | null)[];\n searchText: string;\n table?: DhType.Table;\n}\n\nclass AdvancedFilterCreatorSelectValue<T = unknown> extends PureComponent<\n AdvancedFilterCreatorSelectValueProps<T>,\n AdvancedFilterCreatorSelectValueState<T>\n> {\n static searchDebounceTime = 250;\n\n static defaultProps = {\n invertSelection: true,\n selectedValues: [],\n onChange: (): void => undefined,\n showSearch: true,\n };\n\n constructor(props: AdvancedFilterCreatorSelectValueProps<T>) {\n super(props);\n\n this.handleSelectAllClick = this.handleSelectAllClick.bind(this);\n this.handleClearAllClick = this.handleClearAllClick.bind(this);\n this.handleListChange = this.handleListChange.bind(this);\n this.handleSearchChange = this.handleSearchChange.bind(this);\n this.handleUpdateFilterTimeout = this.handleUpdateFilterTimeout.bind(this);\n\n const { dh, invertSelection, selectedValues } = props;\n\n this.tableUtils = new TableUtils(dh);\n\n this.state = {\n filters: [],\n invertSelection,\n selectedValues,\n searchText: '',\n };\n }\n\n componentDidMount(): void {\n this.initSearchTable();\n }\n\n componentDidUpdate(\n prevProps: AdvancedFilterCreatorSelectValueProps<T>,\n prevState: AdvancedFilterCreatorSelectValueState<T>\n ): void {\n const { invertSelection, selectedValues, table } = this.props;\n if (prevProps.table !== table) {\n this.initSearchTable();\n }\n\n if (prevProps.invertSelection !== invertSelection) {\n this.setState({ invertSelection });\n }\n\n if (prevProps.selectedValues !== selectedValues) {\n this.setState({ selectedValues });\n }\n\n const { table: searchTable, searchText } = this.state;\n\n if (searchTable !== prevState.table) {\n if (prevState.table != null) {\n prevState.table.close();\n }\n if (searchTable != null) {\n this.startUpdateFilterTimer();\n }\n }\n\n if (searchText !== prevState.searchText) {\n this.startUpdateFilterTimer();\n }\n }\n\n componentWillUnmount(): void {\n const { table } = this.state;\n if (table != null) {\n table.close();\n }\n this.searchTablePromise = undefined;\n\n this.stopUpdateFilterTimer();\n }\n\n searchTablePromise?: Promise<DhType.Table>;\n\n tableUtils: TableUtils;\n\n updateFilterTimer?: ReturnType<typeof setTimeout>;\n\n getColumnName(): ColumnName {\n const { table } = this.props;\n if (table != null) {\n return table.columns[0].name;\n }\n return '';\n }\n\n getDisplayedValuesCount(): number | null {\n const { invertSelection, selectedValues, table } = this.state;\n if (table == null) {\n return null;\n }\n\n if (invertSelection) {\n return table.totalSize - selectedValues.length;\n }\n return selectedValues.length;\n }\n\n getDisplayedValueText(): string | null {\n const count = this.getDisplayedValuesCount();\n const { table } = this.state;\n\n const { formatter } = this.props;\n\n if (count != null && table != null) {\n const formattedCount = formatter.getFormattedString(count, 'long');\n const formattedTableSize = formatter.getFormattedString(\n table.totalSize,\n 'long'\n );\n let prefix = '';\n if (count < 1000000) {\n prefix = 'Displaying ';\n }\n return `${prefix}${formattedCount} of ${formattedTableSize}`;\n }\n return null;\n }\n\n initSearchTable(): void {\n const { table } = this.props;\n if (table == null) {\n return;\n }\n\n const searchTablePromise = table.copy();\n this.searchTablePromise = searchTablePromise;\n this.searchTablePromise.then(searchTable => {\n if (this.searchTablePromise === searchTablePromise) {\n this.setState({ table: searchTable });\n this.searchTablePromise = undefined;\n } else {\n searchTable.close();\n }\n });\n }\n\n handleListChange(\n selectedValues: (T | null)[],\n invertSelection: boolean\n ): void {\n this.setState({ selectedValues, invertSelection });\n\n const { onChange } = this.props;\n onChange(selectedValues, invertSelection);\n }\n\n handleSearchChange(event: React.ChangeEvent<HTMLInputElement>): void {\n const searchText = event.target.value;\n this.setState({ searchText });\n }\n\n handleSelectAllClick(): void {\n this.resetSelection(true);\n }\n\n handleClearAllClick(): void {\n this.resetSelection(false);\n }\n\n handleUpdateFilterTimeout(): void {\n this.updateFilterTimer = undefined;\n this.updateTableFilter();\n }\n\n resetSelection(invertSelection: boolean): void {\n const selectedValues: T[] = [];\n\n this.setState({ invertSelection, selectedValues });\n\n const { onChange } = this.props;\n onChange(selectedValues, invertSelection);\n }\n\n startUpdateFilterTimer(): void {\n this.stopUpdateFilterTimer();\n\n this.updateFilterTimer = setTimeout(\n this.handleUpdateFilterTimeout,\n AdvancedFilterCreatorSelectValue.searchDebounceTime\n );\n }\n\n stopUpdateFilterTimer(): void {\n if (this.updateFilterTimer != null) {\n clearTimeout(this.updateFilterTimer);\n this.updateFilterTimer = undefined;\n }\n }\n\n updateTableFilter(): void {\n const { table, searchText } = this.state;\n const { timeZone } = this.props;\n const { tableUtils } = this;\n const column = table?.columns[0];\n const filters = [];\n if (column == null) {\n return;\n }\n let error;\n if (searchText.length > 0) {\n let filter = null;\n if (TableUtils.isCharType(column.type)) {\n // Just exact match for char\n filter = tableUtils.makeQuickFilter(column, searchText);\n } else if (TableUtils.isTextType(column.type)) {\n // case insensitive & contains search text\n filter = tableUtils.makeQuickFilter(column, `~${searchText}`, timeZone);\n } else {\n // greater than or equal search for everything else\n // we may want to be smarter with some other types (like dates)\n filter = tableUtils.makeQuickFilter(\n column,\n `>=${searchText}`,\n timeZone\n );\n }\n\n if (filter != null) {\n filters.push(filter);\n } else {\n error = 'Invalid search text';\n }\n }\n\n this.setState({ filters, error });\n }\n\n render(): React.ReactElement {\n const {\n error,\n filters,\n invertSelection,\n selectedValues,\n searchText,\n table,\n } = this.state;\n const { dh, formatter, showSearch } = this.props;\n const columnName = this.getColumnName();\n const displayedValuesText = this.getDisplayedValueText();\n const placeholderText = columnName ? `Find ${columnName}...` : '';\n\n return (\n <div className=\"advanced-filter-creator-select-value\">\n <div className={showSearch ? 'form-group' : ''}>\n <label htmlFor=\"advanced-filter-creator-select-value-input\">\n Select Values\n </label>\n {showSearch && (\n <input\n type=\"text\"\n className={classNames('form-control', {\n 'is-invalid': error != null,\n })}\n id=\"advanced-filter-creator-select-value-input\"\n placeholder={placeholderText}\n value={searchText}\n onChange={this.handleSearchChange}\n />\n )}\n </div>\n <AdvancedFilterCreatorSelectValueList\n dh={dh}\n table={table}\n filters={filters}\n invertSelection={invertSelection}\n selectedValues={selectedValues}\n formatter={formatter}\n onChange={this.handleListChange}\n />\n <div className=\"advanced-filter-creator-select-meta-row\">\n <div>\n <Button kind=\"ghost\" onClick={this.handleSelectAllClick}>\n Select All\n </Button>\n <Button kind=\"ghost\" onClick={this.handleClearAllClick}>\n Clear\n </Button>\n </div>\n <FadeTransition\n in={displayedValuesText != null}\n mountOnEnter\n unmountOnExit\n >\n <div className=\"row-count-info\">{displayedValuesText}</div>\n </FadeTransition>\n </div>\n </div>\n );\n }\n}\n\nexport default AdvancedFilterCreatorSelectValue;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -5,8 +5,7 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
|
|
|
5
5
|
import React, { PureComponent } from 'react';
|
|
6
6
|
import { LoadingSpinner, SelectValueList, FadeTransition } from '@deephaven/components';
|
|
7
7
|
import Log from '@deephaven/log';
|
|
8
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
9
|
-
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
8
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
10
9
|
var log = Log.module('AdvancedFilterCreatorSelectValueList');
|
|
11
10
|
/**
|
|
12
11
|
* Select values from a long scrollable list.
|
|
@@ -78,7 +77,7 @@ class AdvancedFilterCreatorSelectValueList extends PureComponent {
|
|
|
78
77
|
}, this.handleSelectionUpdate);
|
|
79
78
|
}
|
|
80
79
|
if (prevProps.filters !== filters) {
|
|
81
|
-
table === null || table === void 0
|
|
80
|
+
table === null || table === void 0 || table.applyFilter(filters);
|
|
82
81
|
this.resetViewport();
|
|
83
82
|
}
|
|
84
83
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdvancedFilterCreatorSelectValueList.js","names":["React","PureComponent","LoadingSpinner","SelectValueList","FadeTransition","Log","jsx","_jsx","jsxs","_jsxs","log","module","AdvancedFilterCreatorSelectValueList","indexOf","value","values","i","length","v","valueOf","constructor","props","_defineProperty","handleSelect","bind","handleViewportChange","handleSelectionUpdate","handleTableUpdate","selectedValues","dh","list","state","itemCount","items","offset","isLoading","componentDidMount","table","startListening","componentDidUpdate","prevProps","filters","invertSelection","stopListening","resetViewport","setState","applyFilter","componentWillUnmount","itemIndex","selectedIndex","splice","push","isSelected","visibleItemIndex","onChange","top","bottom","updateViewport","updateItemSelection","event","formatter","data","detail","column","columns","r","rows","row","get","displayValue","className","children","getFormattedString","type","name","isValueSelected","debug2","size","addEventListener","Table","EVENT_UPDATED","removeEventListener","topRow","bottomRow","item","arguments","undefined","viewportSize","Math","max","setViewport","render","onSelect","onViewportChange","ref","in","mountOnEnter","unmountOnExit"],"sources":["../src/AdvancedFilterCreatorSelectValueList.tsx"],"sourcesContent":["/* eslint react/no-did-update-set-state: \"off\" */\nimport React, { PureComponent, type ReactElement } from 'react';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport { type Formatter } from '@deephaven/jsapi-utils';\nimport {\n LoadingSpinner,\n SelectValueList,\n type SelectItem,\n FadeTransition,\n} from '@deephaven/components';\nimport Log from '@deephaven/log';\n\nconst log = Log.module('AdvancedFilterCreatorSelectValueList');\n\ninterface AdvancedFilterCreatorSelectValueListProps<T> {\n dh: typeof DhType;\n selectedValues: (T | null)[];\n table?: DhType.Table;\n filters: DhType.FilterCondition[];\n invertSelection: boolean;\n onChange: (selectedValues: (T | null)[], invertSelection: boolean) => void;\n formatter: Formatter;\n}\n\ninterface AdvancedFilterCreatorSelectValueListState<T> {\n itemCount: number;\n items: SelectItem<T>[];\n offset: number;\n selectedValues: (T | null)[];\n isLoading: boolean;\n}\n/**\n * Select values from a long scrollable list.\n * Swaps items in and out for infinite scrolling\n */\nclass AdvancedFilterCreatorSelectValueList<T = unknown> extends PureComponent<\n AdvancedFilterCreatorSelectValueListProps<T>,\n AdvancedFilterCreatorSelectValueListState<T>\n> {\n static defaultProps = {\n invertSelection: true,\n selectedValues: [],\n onChange: (): void => undefined,\n };\n\n /**\n * Get the index of a value in an array. Has some special handling for some types, like DateTimes and Longs.\n * @param value The value to search for\n * @param values The array of values to search within\n */\n static indexOf(value: unknown, values: unknown[]): number {\n for (let i = 0; i < values.length; i += 1) {\n const v = values[i];\n if (\n v === value ||\n (v != null &&\n v.valueOf != null &&\n value != null &&\n value.valueOf != null &&\n v.valueOf() === value.valueOf())\n ) {\n return i;\n }\n }\n\n return -1;\n }\n\n constructor(props: AdvancedFilterCreatorSelectValueListProps<T>) {\n super(props);\n\n this.handleSelect = this.handleSelect.bind(this);\n this.handleViewportChange = this.handleViewportChange.bind(this);\n this.handleSelectionUpdate = this.handleSelectionUpdate.bind(this);\n this.handleTableUpdate = this.handleTableUpdate.bind(this);\n\n const { selectedValues, dh } = this.props;\n\n this.dh = dh;\n this.list = null;\n\n this.state = {\n itemCount: 0,\n items: [],\n offset: 0,\n selectedValues,\n isLoading: true,\n };\n }\n\n componentDidMount(): void {\n const { table } = this.props;\n if (table) this.startListening(table);\n }\n\n componentDidUpdate(\n prevProps: AdvancedFilterCreatorSelectValueListProps<T>\n ): void {\n const { filters, invertSelection, selectedValues, table } = this.props;\n if (prevProps.table !== table) {\n if (prevProps.table) this.stopListening(prevProps.table);\n if (table) this.startListening(table);\n this.resetViewport();\n }\n\n if (prevProps.invertSelection !== invertSelection) {\n this.setState({ selectedValues: [] }, this.handleSelectionUpdate);\n }\n\n if (prevProps.selectedValues !== selectedValues) {\n this.setState({ selectedValues }, this.handleSelectionUpdate);\n }\n\n if (prevProps.filters !== filters) {\n table?.applyFilter(filters);\n this.resetViewport();\n }\n }\n\n componentWillUnmount(): void {\n const { table } = this.props;\n if (table) this.stopListening(table);\n }\n\n dh: typeof DhType;\n\n list: SelectValueList<T> | null;\n\n handleSelect(itemIndex: number, value: T | null): void {\n const { invertSelection } = this.props;\n let { selectedValues } = this.state;\n selectedValues = [...selectedValues];\n const selectedIndex = AdvancedFilterCreatorSelectValueList.indexOf(\n value,\n selectedValues\n );\n if (selectedIndex >= 0) {\n selectedValues.splice(selectedIndex, 1);\n } else {\n selectedValues.push(value);\n }\n\n let isSelected = selectedIndex < 0;\n if (invertSelection) {\n isSelected = !isSelected;\n }\n\n const { offset } = this.state;\n let { items } = this.state;\n items = [...items];\n const visibleItemIndex = itemIndex - offset;\n if (visibleItemIndex >= 0 && visibleItemIndex < items.length) {\n items[visibleItemIndex].isSelected = isSelected;\n }\n\n this.setState({ items, selectedValues });\n\n const { onChange } = this.props;\n onChange(selectedValues, invertSelection);\n }\n\n handleViewportChange(top: number, bottom: number): void {\n this.updateViewport(top, bottom);\n }\n\n handleSelectionUpdate(): void {\n this.updateItemSelection();\n }\n\n handleTableUpdate(event: DhType.Event<DhType.ViewportData>): void {\n const { table, formatter } = this.props;\n if (!table) return;\n\n const data = event.detail;\n const { offset } = data;\n const items = [];\n const column = table.columns[0];\n for (let r = 0; r < data.rows.length; r += 1) {\n const row = data.rows[r];\n const value = row.get(column);\n let displayValue: string | JSX.Element;\n if (value == null) {\n displayValue = <i className=\"text-muted\">null</i>;\n } else if (value === '') {\n displayValue = <i className=\"text-muted\">empty</i>;\n } else {\n displayValue = formatter.getFormattedString(\n value,\n column.type,\n column.name\n );\n }\n const isSelected = this.isValueSelected(value);\n items.push({\n displayValue,\n value,\n isSelected,\n });\n }\n\n log.debug2('Received table update:', offset, items.length);\n\n const itemCount = table.size;\n this.setState({ itemCount, items, offset, isLoading: false });\n }\n\n isValueSelected(value: T): boolean {\n const { invertSelection } = this.props;\n const { selectedValues } = this.state;\n\n // Need to check if any of the valueOf matches, timestamp value that is equal\n const selectedIndex = AdvancedFilterCreatorSelectValueList.indexOf(\n value,\n selectedValues\n );\n\n return invertSelection ? selectedIndex < 0 : selectedIndex >= 0;\n }\n\n startListening(table: DhType.Table): void {\n table.addEventListener(this.dh.Table.EVENT_UPDATED, this.handleTableUpdate);\n }\n\n stopListening(table: DhType.Table): void {\n table.removeEventListener(\n this.dh.Table.EVENT_UPDATED,\n this.handleTableUpdate\n );\n }\n\n resetViewport(): void {\n if (this.list && this.list.topRow != null && this.list.bottomRow != null) {\n this.updateViewport(this.list.topRow, this.list.bottomRow, true);\n }\n }\n\n updateItemSelection(): void {\n let { items } = this.state;\n\n items = [...items];\n\n for (let i = 0; i < items.length; i += 1) {\n const item = items[i];\n const { value } = item;\n item.isSelected = this.isValueSelected(value);\n }\n\n this.setState({ items });\n }\n\n updateViewport(top: number, bottom: number, isLoading = false): void {\n const { table } = this.props;\n if (table == null) {\n return;\n }\n\n if (isLoading) {\n this.setState({ isLoading: true });\n }\n\n const viewportSize = bottom - top + 1;\n const topRow = Math.max(0, top - viewportSize * 3);\n const bottomRow = Math.max(topRow, bottom + viewportSize * 3);\n\n log.debug2('Setting viewport', topRow, ',', bottomRow);\n table.setViewport(topRow, bottomRow);\n }\n\n render(): ReactElement {\n const { offset, isLoading, items, itemCount } = this.state;\n\n return (\n <div className=\"select-value-list-wrapper\">\n <SelectValueList\n itemCount={itemCount}\n items={items}\n offset={offset}\n onSelect={this.handleSelect}\n onViewportChange={this.handleViewportChange}\n ref={list => {\n this.list = list;\n }}\n />\n <FadeTransition in={isLoading} mountOnEnter unmountOnExit>\n <div className=\"loading-list\">\n <LoadingSpinner className=\"loading-spinner-large\" />\n </div>\n </FadeTransition>\n </div>\n );\n }\n}\n\nexport default AdvancedFilterCreatorSelectValueList;\n"],"mappings":";;;AAAA;AACA,OAAOA,KAAK,IAAIC,aAAa,QAA2B,OAAO;AAG/D,SACEC,cAAc,EACdC,eAAe,EAEfC,cAAc,QACT,uBAAuB;AAC9B,OAAOC,GAAG,MAAM,gBAAgB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAEjC,IAAMC,GAAG,GAAGL,GAAG,CAACM,MAAM,CAAC,sCAAsC,CAAC;AAmB9D;AACA;AACA;AACA;AACA,MAAMC,oCAAoC,SAAsBX,aAAa,CAG3E;EAOA;AACF;AACA;AACA;AACA;EACE,OAAOY,OAAOA,CAACC,KAAc,EAAEC,MAAiB,EAAU;IACxD,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGD,MAAM,CAACE,MAAM,EAAED,CAAC,IAAI,CAAC,EAAE;MACzC,IAAME,CAAC,GAAGH,MAAM,CAACC,CAAC,CAAC;MACnB,IACEE,CAAC,KAAKJ,KAAK,IACVI,CAAC,IAAI,IAAI,IACRA,CAAC,CAACC,OAAO,IAAI,IAAI,IACjBL,KAAK,IAAI,IAAI,IACbA,KAAK,CAACK,OAAO,IAAI,IAAI,IACrBD,CAAC,CAACC,OAAO,CAAC,CAAC,KAAKL,KAAK,CAACK,OAAO,CAAC,CAAE,EAClC;QACA,OAAOH,CAAC;MACV;IACF;IAEA,OAAO,CAAC,CAAC;EACX;EAEAI,WAAWA,CAACC,KAAmD,EAAE;IAC/D,KAAK,CAACA,KAAK,CAAC;IAACC,eAAA;IAAAA,eAAA;IAEb,IAAI,CAACC,YAAY,GAAG,IAAI,CAACA,YAAY,CAACC,IAAI,CAAC,IAAI,CAAC;IAChD,IAAI,CAACC,oBAAoB,GAAG,IAAI,CAACA,oBAAoB,CAACD,IAAI,CAAC,IAAI,CAAC;IAChE,IAAI,CAACE,qBAAqB,GAAG,IAAI,CAACA,qBAAqB,CAACF,IAAI,CAAC,IAAI,CAAC;IAClE,IAAI,CAACG,iBAAiB,GAAG,IAAI,CAACA,iBAAiB,CAACH,IAAI,CAAC,IAAI,CAAC;IAE1D,IAAM;MAAEI,cAAc;MAAEC;IAAG,CAAC,GAAG,IAAI,CAACR,KAAK;IAEzC,IAAI,CAACQ,EAAE,GAAGA,EAAE;IACZ,IAAI,CAACC,IAAI,GAAG,IAAI;IAEhB,IAAI,CAACC,KAAK,GAAG;MACXC,SAAS,EAAE,CAAC;MACZC,KAAK,EAAE,EAAE;MACTC,MAAM,EAAE,CAAC;MACTN,cAAc;MACdO,SAAS,EAAE;IACb,CAAC;EACH;EAEAC,iBAAiBA,CAAA,EAAS;IACxB,IAAM;MAAEC;IAAM,CAAC,GAAG,IAAI,CAAChB,KAAK;IAC5B,IAAIgB,KAAK,EAAE,IAAI,CAACC,cAAc,CAACD,KAAK,CAAC;EACvC;EAEAE,kBAAkBA,CAChBC,SAAuD,EACjD;IACN,IAAM;MAAEC,OAAO;MAAEC,eAAe;MAAEd,cAAc;MAAES;IAAM,CAAC,GAAG,IAAI,CAAChB,KAAK;IACtE,IAAImB,SAAS,CAACH,KAAK,KAAKA,KAAK,EAAE;MAC7B,IAAIG,SAAS,CAACH,KAAK,EAAE,IAAI,CAACM,aAAa,CAACH,SAAS,CAACH,KAAK,CAAC;MACxD,IAAIA,KAAK,EAAE,IAAI,CAACC,cAAc,CAACD,KAAK,CAAC;MACrC,IAAI,CAACO,aAAa,CAAC,CAAC;IACtB;IAEA,IAAIJ,SAAS,CAACE,eAAe,KAAKA,eAAe,EAAE;MACjD,IAAI,CAACG,QAAQ,CAAC;QAAEjB,cAAc,EAAE;MAAG,CAAC,EAAE,IAAI,CAACF,qBAAqB,CAAC;IACnE;IAEA,IAAIc,SAAS,CAACZ,cAAc,KAAKA,cAAc,EAAE;MAC/C,IAAI,CAACiB,QAAQ,CAAC;QAAEjB;MAAe,CAAC,EAAE,IAAI,CAACF,qBAAqB,CAAC;IAC/D;IAEA,IAAIc,SAAS,CAACC,OAAO,KAAKA,OAAO,EAAE;MACjCJ,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAES,WAAW,CAACL,OAAO,CAAC;MAC3B,IAAI,CAACG,aAAa,CAAC,CAAC;IACtB;EACF;EAEAG,oBAAoBA,CAAA,EAAS;IAC3B,IAAM;MAAEV;IAAM,CAAC,GAAG,IAAI,CAAChB,KAAK;IAC5B,IAAIgB,KAAK,EAAE,IAAI,CAACM,aAAa,CAACN,KAAK,CAAC;EACtC;EAMAd,YAAYA,CAACyB,SAAiB,EAAElC,KAAe,EAAQ;IACrD,IAAM;MAAE4B;IAAgB,CAAC,GAAG,IAAI,CAACrB,KAAK;IACtC,IAAI;MAAEO;IAAe,CAAC,GAAG,IAAI,CAACG,KAAK;IACnCH,cAAc,GAAG,CAAC,GAAGA,cAAc,CAAC;IACpC,IAAMqB,aAAa,GAAGrC,oCAAoC,CAACC,OAAO,CAChEC,KAAK,EACLc,cACF,CAAC;IACD,IAAIqB,aAAa,IAAI,CAAC,EAAE;MACtBrB,cAAc,CAACsB,MAAM,CAACD,aAAa,EAAE,CAAC,CAAC;IACzC,CAAC,MAAM;MACLrB,cAAc,CAACuB,IAAI,CAACrC,KAAK,CAAC;IAC5B;IAEA,IAAIsC,UAAU,GAAGH,aAAa,GAAG,CAAC;IAClC,IAAIP,eAAe,EAAE;MACnBU,UAAU,GAAG,CAACA,UAAU;IAC1B;IAEA,IAAM;MAAElB;IAAO,CAAC,GAAG,IAAI,CAACH,KAAK;IAC7B,IAAI;MAAEE;IAAM,CAAC,GAAG,IAAI,CAACF,KAAK;IAC1BE,KAAK,GAAG,CAAC,GAAGA,KAAK,CAAC;IAClB,IAAMoB,gBAAgB,GAAGL,SAAS,GAAGd,MAAM;IAC3C,IAAImB,gBAAgB,IAAI,CAAC,IAAIA,gBAAgB,GAAGpB,KAAK,CAAChB,MAAM,EAAE;MAC5DgB,KAAK,CAACoB,gBAAgB,CAAC,CAACD,UAAU,GAAGA,UAAU;IACjD;IAEA,IAAI,CAACP,QAAQ,CAAC;MAAEZ,KAAK;MAAEL;IAAe,CAAC,CAAC;IAExC,IAAM;MAAE0B;IAAS,CAAC,GAAG,IAAI,CAACjC,KAAK;IAC/BiC,QAAQ,CAAC1B,cAAc,EAAEc,eAAe,CAAC;EAC3C;EAEAjB,oBAAoBA,CAAC8B,GAAW,EAAEC,MAAc,EAAQ;IACtD,IAAI,CAACC,cAAc,CAACF,GAAG,EAAEC,MAAM,CAAC;EAClC;EAEA9B,qBAAqBA,CAAA,EAAS;IAC5B,IAAI,CAACgC,mBAAmB,CAAC,CAAC;EAC5B;EAEA/B,iBAAiBA,CAACgC,KAAwC,EAAQ;IAChE,IAAM;MAAEtB,KAAK;MAAEuB;IAAU,CAAC,GAAG,IAAI,CAACvC,KAAK;IACvC,IAAI,CAACgB,KAAK,EAAE;IAEZ,IAAMwB,IAAI,GAAGF,KAAK,CAACG,MAAM;IACzB,IAAM;MAAE5B;IAAO,CAAC,GAAG2B,IAAI;IACvB,IAAM5B,KAAK,GAAG,EAAE;IAChB,IAAM8B,MAAM,GAAG1B,KAAK,CAAC2B,OAAO,CAAC,CAAC,CAAC;IAC/B,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGJ,IAAI,CAACK,IAAI,CAACjD,MAAM,EAAEgD,CAAC,IAAI,CAAC,EAAE;MAC5C,IAAME,GAAG,GAAGN,IAAI,CAACK,IAAI,CAACD,CAAC,CAAC;MACxB,IAAMnD,KAAK,GAAGqD,GAAG,CAACC,GAAG,CAACL,MAAM,CAAC;MAC7B,IAAIM,YAAkC;MACtC,IAAIvD,KAAK,IAAI,IAAI,EAAE;QACjBuD,YAAY,gBAAG9D,IAAA;UAAG+D,SAAS,EAAC,YAAY;UAAAC,QAAA,EAAC;QAAI,CAAG,CAAC;MACnD,CAAC,MAAM,IAAIzD,KAAK,KAAK,EAAE,EAAE;QACvBuD,YAAY,gBAAG9D,IAAA;UAAG+D,SAAS,EAAC,YAAY;UAAAC,QAAA,EAAC;QAAK,CAAG,CAAC;MACpD,CAAC,MAAM;QACLF,YAAY,GAAGT,SAAS,CAACY,kBAAkB,CACzC1D,KAAK,EACLiD,MAAM,CAACU,IAAI,EACXV,MAAM,CAACW,IACT,CAAC;MACH;MACA,IAAMtB,UAAU,GAAG,IAAI,CAACuB,eAAe,CAAC7D,KAAK,CAAC;MAC9CmB,KAAK,CAACkB,IAAI,CAAC;QACTkB,YAAY;QACZvD,KAAK;QACLsC;MACF,CAAC,CAAC;IACJ;IAEA1C,GAAG,CAACkE,MAAM,CAAC,wBAAwB,EAAE1C,MAAM,EAAED,KAAK,CAAChB,MAAM,CAAC;IAE1D,IAAMe,SAAS,GAAGK,KAAK,CAACwC,IAAI;IAC5B,IAAI,CAAChC,QAAQ,CAAC;MAAEb,SAAS;MAAEC,KAAK;MAAEC,MAAM;MAAEC,SAAS,EAAE;IAAM,CAAC,CAAC;EAC/D;EAEAwC,eAAeA,CAAC7D,KAAQ,EAAW;IACjC,IAAM;MAAE4B;IAAgB,CAAC,GAAG,IAAI,CAACrB,KAAK;IACtC,IAAM;MAAEO;IAAe,CAAC,GAAG,IAAI,CAACG,KAAK;;IAErC;IACA,IAAMkB,aAAa,GAAGrC,oCAAoC,CAACC,OAAO,CAChEC,KAAK,EACLc,cACF,CAAC;IAED,OAAOc,eAAe,GAAGO,aAAa,GAAG,CAAC,GAAGA,aAAa,IAAI,CAAC;EACjE;EAEAX,cAAcA,CAACD,KAAmB,EAAQ;IACxCA,KAAK,CAACyC,gBAAgB,CAAC,IAAI,CAACjD,EAAE,CAACkD,KAAK,CAACC,aAAa,EAAE,IAAI,CAACrD,iBAAiB,CAAC;EAC7E;EAEAgB,aAAaA,CAACN,KAAmB,EAAQ;IACvCA,KAAK,CAAC4C,mBAAmB,CACvB,IAAI,CAACpD,EAAE,CAACkD,KAAK,CAACC,aAAa,EAC3B,IAAI,CAACrD,iBACP,CAAC;EACH;EAEAiB,aAAaA,CAAA,EAAS;IACpB,IAAI,IAAI,CAACd,IAAI,IAAI,IAAI,CAACA,IAAI,CAACoD,MAAM,IAAI,IAAI,IAAI,IAAI,CAACpD,IAAI,CAACqD,SAAS,IAAI,IAAI,EAAE;MACxE,IAAI,CAAC1B,cAAc,CAAC,IAAI,CAAC3B,IAAI,CAACoD,MAAM,EAAE,IAAI,CAACpD,IAAI,CAACqD,SAAS,EAAE,IAAI,CAAC;IAClE;EACF;EAEAzB,mBAAmBA,CAAA,EAAS;IAC1B,IAAI;MAAEzB;IAAM,CAAC,GAAG,IAAI,CAACF,KAAK;IAE1BE,KAAK,GAAG,CAAC,GAAGA,KAAK,CAAC;IAElB,KAAK,IAAIjB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGiB,KAAK,CAAChB,MAAM,EAAED,CAAC,IAAI,CAAC,EAAE;MACxC,IAAMoE,IAAI,GAAGnD,KAAK,CAACjB,CAAC,CAAC;MACrB,IAAM;QAAEF;MAAM,CAAC,GAAGsE,IAAI;MACtBA,IAAI,CAAChC,UAAU,GAAG,IAAI,CAACuB,eAAe,CAAC7D,KAAK,CAAC;IAC/C;IAEA,IAAI,CAAC+B,QAAQ,CAAC;MAAEZ;IAAM,CAAC,CAAC;EAC1B;EAEAwB,cAAcA,CAACF,GAAW,EAAEC,MAAc,EAA2B;IAAA,IAAzBrB,SAAS,GAAAkD,SAAA,CAAApE,MAAA,QAAAoE,SAAA,QAAAC,SAAA,GAAAD,SAAA,MAAG,KAAK;IAC3D,IAAM;MAAEhD;IAAM,CAAC,GAAG,IAAI,CAAChB,KAAK;IAC5B,IAAIgB,KAAK,IAAI,IAAI,EAAE;MACjB;IACF;IAEA,IAAIF,SAAS,EAAE;MACb,IAAI,CAACU,QAAQ,CAAC;QAAEV,SAAS,EAAE;MAAK,CAAC,CAAC;IACpC;IAEA,IAAMoD,YAAY,GAAG/B,MAAM,GAAGD,GAAG,GAAG,CAAC;IACrC,IAAM2B,MAAM,GAAGM,IAAI,CAACC,GAAG,CAAC,CAAC,EAAElC,GAAG,GAAGgC,YAAY,GAAG,CAAC,CAAC;IAClD,IAAMJ,SAAS,GAAGK,IAAI,CAACC,GAAG,CAACP,MAAM,EAAE1B,MAAM,GAAG+B,YAAY,GAAG,CAAC,CAAC;IAE7D7E,GAAG,CAACkE,MAAM,CAAC,kBAAkB,EAAEM,MAAM,EAAE,GAAG,EAAEC,SAAS,CAAC;IACtD9C,KAAK,CAACqD,WAAW,CAACR,MAAM,EAAEC,SAAS,CAAC;EACtC;EAEAQ,MAAMA,CAAA,EAAiB;IACrB,IAAM;MAAEzD,MAAM;MAAEC,SAAS;MAAEF,KAAK;MAAED;IAAU,CAAC,GAAG,IAAI,CAACD,KAAK;IAE1D,oBACEtB,KAAA;MAAK6D,SAAS,EAAC,2BAA2B;MAAAC,QAAA,gBACxChE,IAAA,CAACJ,eAAe;QACd6B,SAAS,EAAEA,SAAU;QACrBC,KAAK,EAAEA,KAAM;QACbC,MAAM,EAAEA,MAAO;QACf0D,QAAQ,EAAE,IAAI,CAACrE,YAAa;QAC5BsE,gBAAgB,EAAE,IAAI,CAACpE,oBAAqB;QAC5CqE,GAAG,EAAEhE,IAAI,IAAI;UACX,IAAI,CAACA,IAAI,GAAGA,IAAI;QAClB;MAAE,CACH,CAAC,eACFvB,IAAA,CAACH,cAAc;QAAC2F,EAAE,EAAE5D,SAAU;QAAC6D,YAAY;QAACC,aAAa;QAAA1B,QAAA,eACvDhE,IAAA;UAAK+D,SAAS,EAAC,cAAc;UAAAC,QAAA,eAC3BhE,IAAA,CAACL,cAAc;YAACoE,SAAS,EAAC;UAAuB,CAAE;QAAC,CACjD;MAAC,CACQ,CAAC;IAAA,CACd,CAAC;EAEV;AACF;AAAChD,eAAA,CAhQKV,oCAAoC,kBAIlB;EACpB8B,eAAe,EAAE,IAAI;EACrBd,cAAc,EAAE,EAAE;EAClB0B,QAAQ,EAAEA,CAAA,KAAYgC;AACxB,CAAC;AA0PH,eAAe1E,oCAAoC"}
|
|
1
|
+
{"version":3,"file":"AdvancedFilterCreatorSelectValueList.js","names":["React","PureComponent","LoadingSpinner","SelectValueList","FadeTransition","Log","jsx","_jsx","jsxs","_jsxs","log","module","AdvancedFilterCreatorSelectValueList","indexOf","value","values","i","length","v","valueOf","constructor","props","_defineProperty","handleSelect","bind","handleViewportChange","handleSelectionUpdate","handleTableUpdate","selectedValues","dh","list","state","itemCount","items","offset","isLoading","componentDidMount","table","startListening","componentDidUpdate","prevProps","filters","invertSelection","stopListening","resetViewport","setState","applyFilter","componentWillUnmount","itemIndex","selectedIndex","splice","push","isSelected","visibleItemIndex","onChange","top","bottom","updateViewport","updateItemSelection","event","formatter","data","detail","column","columns","r","rows","row","get","displayValue","className","children","getFormattedString","type","name","isValueSelected","debug2","size","addEventListener","Table","EVENT_UPDATED","removeEventListener","topRow","bottomRow","item","arguments","undefined","viewportSize","Math","max","setViewport","render","onSelect","onViewportChange","ref","in","mountOnEnter","unmountOnExit"],"sources":["../src/AdvancedFilterCreatorSelectValueList.tsx"],"sourcesContent":["/* eslint react/no-did-update-set-state: \"off\" */\nimport React, { PureComponent, type ReactElement } from 'react';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport { type Formatter } from '@deephaven/jsapi-utils';\nimport {\n LoadingSpinner,\n SelectValueList,\n type SelectItem,\n FadeTransition,\n} from '@deephaven/components';\nimport Log from '@deephaven/log';\n\nconst log = Log.module('AdvancedFilterCreatorSelectValueList');\n\ninterface AdvancedFilterCreatorSelectValueListProps<T> {\n dh: typeof DhType;\n selectedValues: (T | null)[];\n table?: DhType.Table;\n filters: DhType.FilterCondition[];\n invertSelection: boolean;\n onChange: (selectedValues: (T | null)[], invertSelection: boolean) => void;\n formatter: Formatter;\n}\n\ninterface AdvancedFilterCreatorSelectValueListState<T> {\n itemCount: number;\n items: SelectItem<T>[];\n offset: number;\n selectedValues: (T | null)[];\n isLoading: boolean;\n}\n/**\n * Select values from a long scrollable list.\n * Swaps items in and out for infinite scrolling\n */\nclass AdvancedFilterCreatorSelectValueList<T = unknown> extends PureComponent<\n AdvancedFilterCreatorSelectValueListProps<T>,\n AdvancedFilterCreatorSelectValueListState<T>\n> {\n static defaultProps = {\n invertSelection: true,\n selectedValues: [],\n onChange: (): void => undefined,\n };\n\n /**\n * Get the index of a value in an array. Has some special handling for some types, like DateTimes and Longs.\n * @param value The value to search for\n * @param values The array of values to search within\n */\n static indexOf(value: unknown, values: unknown[]): number {\n for (let i = 0; i < values.length; i += 1) {\n const v = values[i];\n if (\n v === value ||\n (v != null &&\n v.valueOf != null &&\n value != null &&\n value.valueOf != null &&\n v.valueOf() === value.valueOf())\n ) {\n return i;\n }\n }\n\n return -1;\n }\n\n constructor(props: AdvancedFilterCreatorSelectValueListProps<T>) {\n super(props);\n\n this.handleSelect = this.handleSelect.bind(this);\n this.handleViewportChange = this.handleViewportChange.bind(this);\n this.handleSelectionUpdate = this.handleSelectionUpdate.bind(this);\n this.handleTableUpdate = this.handleTableUpdate.bind(this);\n\n const { selectedValues, dh } = this.props;\n\n this.dh = dh;\n this.list = null;\n\n this.state = {\n itemCount: 0,\n items: [],\n offset: 0,\n selectedValues,\n isLoading: true,\n };\n }\n\n componentDidMount(): void {\n const { table } = this.props;\n if (table) this.startListening(table);\n }\n\n componentDidUpdate(\n prevProps: AdvancedFilterCreatorSelectValueListProps<T>\n ): void {\n const { filters, invertSelection, selectedValues, table } = this.props;\n if (prevProps.table !== table) {\n if (prevProps.table) this.stopListening(prevProps.table);\n if (table) this.startListening(table);\n this.resetViewport();\n }\n\n if (prevProps.invertSelection !== invertSelection) {\n this.setState({ selectedValues: [] }, this.handleSelectionUpdate);\n }\n\n if (prevProps.selectedValues !== selectedValues) {\n this.setState({ selectedValues }, this.handleSelectionUpdate);\n }\n\n if (prevProps.filters !== filters) {\n table?.applyFilter(filters);\n this.resetViewport();\n }\n }\n\n componentWillUnmount(): void {\n const { table } = this.props;\n if (table) this.stopListening(table);\n }\n\n dh: typeof DhType;\n\n list: SelectValueList<T> | null;\n\n handleSelect(itemIndex: number, value: T | null): void {\n const { invertSelection } = this.props;\n let { selectedValues } = this.state;\n selectedValues = [...selectedValues];\n const selectedIndex = AdvancedFilterCreatorSelectValueList.indexOf(\n value,\n selectedValues\n );\n if (selectedIndex >= 0) {\n selectedValues.splice(selectedIndex, 1);\n } else {\n selectedValues.push(value);\n }\n\n let isSelected = selectedIndex < 0;\n if (invertSelection) {\n isSelected = !isSelected;\n }\n\n const { offset } = this.state;\n let { items } = this.state;\n items = [...items];\n const visibleItemIndex = itemIndex - offset;\n if (visibleItemIndex >= 0 && visibleItemIndex < items.length) {\n items[visibleItemIndex].isSelected = isSelected;\n }\n\n this.setState({ items, selectedValues });\n\n const { onChange } = this.props;\n onChange(selectedValues, invertSelection);\n }\n\n handleViewportChange(top: number, bottom: number): void {\n this.updateViewport(top, bottom);\n }\n\n handleSelectionUpdate(): void {\n this.updateItemSelection();\n }\n\n handleTableUpdate(event: DhType.Event<DhType.ViewportData>): void {\n const { table, formatter } = this.props;\n if (!table) return;\n\n const data = event.detail;\n const { offset } = data;\n const items = [];\n const column = table.columns[0];\n for (let r = 0; r < data.rows.length; r += 1) {\n const row = data.rows[r];\n const value = row.get(column);\n let displayValue: string | JSX.Element;\n if (value == null) {\n displayValue = <i className=\"text-muted\">null</i>;\n } else if (value === '') {\n displayValue = <i className=\"text-muted\">empty</i>;\n } else {\n displayValue = formatter.getFormattedString(\n value,\n column.type,\n column.name\n );\n }\n const isSelected = this.isValueSelected(value);\n items.push({\n displayValue,\n value,\n isSelected,\n });\n }\n\n log.debug2('Received table update:', offset, items.length);\n\n const itemCount = table.size;\n this.setState({ itemCount, items, offset, isLoading: false });\n }\n\n isValueSelected(value: T): boolean {\n const { invertSelection } = this.props;\n const { selectedValues } = this.state;\n\n // Need to check if any of the valueOf matches, timestamp value that is equal\n const selectedIndex = AdvancedFilterCreatorSelectValueList.indexOf(\n value,\n selectedValues\n );\n\n return invertSelection ? selectedIndex < 0 : selectedIndex >= 0;\n }\n\n startListening(table: DhType.Table): void {\n table.addEventListener(this.dh.Table.EVENT_UPDATED, this.handleTableUpdate);\n }\n\n stopListening(table: DhType.Table): void {\n table.removeEventListener(\n this.dh.Table.EVENT_UPDATED,\n this.handleTableUpdate\n );\n }\n\n resetViewport(): void {\n if (this.list && this.list.topRow != null && this.list.bottomRow != null) {\n this.updateViewport(this.list.topRow, this.list.bottomRow, true);\n }\n }\n\n updateItemSelection(): void {\n let { items } = this.state;\n\n items = [...items];\n\n for (let i = 0; i < items.length; i += 1) {\n const item = items[i];\n const { value } = item;\n item.isSelected = this.isValueSelected(value);\n }\n\n this.setState({ items });\n }\n\n updateViewport(top: number, bottom: number, isLoading = false): void {\n const { table } = this.props;\n if (table == null) {\n return;\n }\n\n if (isLoading) {\n this.setState({ isLoading: true });\n }\n\n const viewportSize = bottom - top + 1;\n const topRow = Math.max(0, top - viewportSize * 3);\n const bottomRow = Math.max(topRow, bottom + viewportSize * 3);\n\n log.debug2('Setting viewport', topRow, ',', bottomRow);\n table.setViewport(topRow, bottomRow);\n }\n\n render(): ReactElement {\n const { offset, isLoading, items, itemCount } = this.state;\n\n return (\n <div className=\"select-value-list-wrapper\">\n <SelectValueList\n itemCount={itemCount}\n items={items}\n offset={offset}\n onSelect={this.handleSelect}\n onViewportChange={this.handleViewportChange}\n ref={list => {\n this.list = list;\n }}\n />\n <FadeTransition in={isLoading} mountOnEnter unmountOnExit>\n <div className=\"loading-list\">\n <LoadingSpinner className=\"loading-spinner-large\" />\n </div>\n </FadeTransition>\n </div>\n );\n }\n}\n\nexport default AdvancedFilterCreatorSelectValueList;\n"],"mappings":";;;AAAA;AACA,OAAOA,KAAK,IAAIC,aAAa,QAA2B,OAAO;AAG/D,SACEC,cAAc,EACdC,eAAe,EAEfC,cAAc,QACT,uBAAuB;AAC9B,OAAOC,GAAG,MAAM,gBAAgB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAEjC,IAAMC,GAAG,GAAGL,GAAG,CAACM,MAAM,CAAC,sCAAsC,CAAC;AAmB9D;AACA;AACA;AACA;AACA,MAAMC,oCAAoC,SAAsBX,aAAa,CAG3E;EAOA;AACF;AACA;AACA;AACA;EACE,OAAOY,OAAOA,CAACC,KAAc,EAAEC,MAAiB,EAAU;IACxD,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGD,MAAM,CAACE,MAAM,EAAED,CAAC,IAAI,CAAC,EAAE;MACzC,IAAME,CAAC,GAAGH,MAAM,CAACC,CAAC,CAAC;MACnB,IACEE,CAAC,KAAKJ,KAAK,IACVI,CAAC,IAAI,IAAI,IACRA,CAAC,CAACC,OAAO,IAAI,IAAI,IACjBL,KAAK,IAAI,IAAI,IACbA,KAAK,CAACK,OAAO,IAAI,IAAI,IACrBD,CAAC,CAACC,OAAO,CAAC,CAAC,KAAKL,KAAK,CAACK,OAAO,CAAC,CAAE,EAClC;QACA,OAAOH,CAAC;MACV;IACF;IAEA,OAAO,CAAC,CAAC;EACX;EAEAI,WAAWA,CAACC,KAAmD,EAAE;IAC/D,KAAK,CAACA,KAAK,CAAC;IAACC,eAAA;IAAAA,eAAA;IAEb,IAAI,CAACC,YAAY,GAAG,IAAI,CAACA,YAAY,CAACC,IAAI,CAAC,IAAI,CAAC;IAChD,IAAI,CAACC,oBAAoB,GAAG,IAAI,CAACA,oBAAoB,CAACD,IAAI,CAAC,IAAI,CAAC;IAChE,IAAI,CAACE,qBAAqB,GAAG,IAAI,CAACA,qBAAqB,CAACF,IAAI,CAAC,IAAI,CAAC;IAClE,IAAI,CAACG,iBAAiB,GAAG,IAAI,CAACA,iBAAiB,CAACH,IAAI,CAAC,IAAI,CAAC;IAE1D,IAAM;MAAEI,cAAc;MAAEC;IAAG,CAAC,GAAG,IAAI,CAACR,KAAK;IAEzC,IAAI,CAACQ,EAAE,GAAGA,EAAE;IACZ,IAAI,CAACC,IAAI,GAAG,IAAI;IAEhB,IAAI,CAACC,KAAK,GAAG;MACXC,SAAS,EAAE,CAAC;MACZC,KAAK,EAAE,EAAE;MACTC,MAAM,EAAE,CAAC;MACTN,cAAc;MACdO,SAAS,EAAE;IACb,CAAC;EACH;EAEAC,iBAAiBA,CAAA,EAAS;IACxB,IAAM;MAAEC;IAAM,CAAC,GAAG,IAAI,CAAChB,KAAK;IAC5B,IAAIgB,KAAK,EAAE,IAAI,CAACC,cAAc,CAACD,KAAK,CAAC;EACvC;EAEAE,kBAAkBA,CAChBC,SAAuD,EACjD;IACN,IAAM;MAAEC,OAAO;MAAEC,eAAe;MAAEd,cAAc;MAAES;IAAM,CAAC,GAAG,IAAI,CAAChB,KAAK;IACtE,IAAImB,SAAS,CAACH,KAAK,KAAKA,KAAK,EAAE;MAC7B,IAAIG,SAAS,CAACH,KAAK,EAAE,IAAI,CAACM,aAAa,CAACH,SAAS,CAACH,KAAK,CAAC;MACxD,IAAIA,KAAK,EAAE,IAAI,CAACC,cAAc,CAACD,KAAK,CAAC;MACrC,IAAI,CAACO,aAAa,CAAC,CAAC;IACtB;IAEA,IAAIJ,SAAS,CAACE,eAAe,KAAKA,eAAe,EAAE;MACjD,IAAI,CAACG,QAAQ,CAAC;QAAEjB,cAAc,EAAE;MAAG,CAAC,EAAE,IAAI,CAACF,qBAAqB,CAAC;IACnE;IAEA,IAAIc,SAAS,CAACZ,cAAc,KAAKA,cAAc,EAAE;MAC/C,IAAI,CAACiB,QAAQ,CAAC;QAAEjB;MAAe,CAAC,EAAE,IAAI,CAACF,qBAAqB,CAAC;IAC/D;IAEA,IAAIc,SAAS,CAACC,OAAO,KAAKA,OAAO,EAAE;MACjCJ,KAAK,aAALA,KAAK,eAALA,KAAK,CAAES,WAAW,CAACL,OAAO,CAAC;MAC3B,IAAI,CAACG,aAAa,CAAC,CAAC;IACtB;EACF;EAEAG,oBAAoBA,CAAA,EAAS;IAC3B,IAAM;MAAEV;IAAM,CAAC,GAAG,IAAI,CAAChB,KAAK;IAC5B,IAAIgB,KAAK,EAAE,IAAI,CAACM,aAAa,CAACN,KAAK,CAAC;EACtC;EAMAd,YAAYA,CAACyB,SAAiB,EAAElC,KAAe,EAAQ;IACrD,IAAM;MAAE4B;IAAgB,CAAC,GAAG,IAAI,CAACrB,KAAK;IACtC,IAAI;MAAEO;IAAe,CAAC,GAAG,IAAI,CAACG,KAAK;IACnCH,cAAc,GAAG,CAAC,GAAGA,cAAc,CAAC;IACpC,IAAMqB,aAAa,GAAGrC,oCAAoC,CAACC,OAAO,CAChEC,KAAK,EACLc,cACF,CAAC;IACD,IAAIqB,aAAa,IAAI,CAAC,EAAE;MACtBrB,cAAc,CAACsB,MAAM,CAACD,aAAa,EAAE,CAAC,CAAC;IACzC,CAAC,MAAM;MACLrB,cAAc,CAACuB,IAAI,CAACrC,KAAK,CAAC;IAC5B;IAEA,IAAIsC,UAAU,GAAGH,aAAa,GAAG,CAAC;IAClC,IAAIP,eAAe,EAAE;MACnBU,UAAU,GAAG,CAACA,UAAU;IAC1B;IAEA,IAAM;MAAElB;IAAO,CAAC,GAAG,IAAI,CAACH,KAAK;IAC7B,IAAI;MAAEE;IAAM,CAAC,GAAG,IAAI,CAACF,KAAK;IAC1BE,KAAK,GAAG,CAAC,GAAGA,KAAK,CAAC;IAClB,IAAMoB,gBAAgB,GAAGL,SAAS,GAAGd,MAAM;IAC3C,IAAImB,gBAAgB,IAAI,CAAC,IAAIA,gBAAgB,GAAGpB,KAAK,CAAChB,MAAM,EAAE;MAC5DgB,KAAK,CAACoB,gBAAgB,CAAC,CAACD,UAAU,GAAGA,UAAU;IACjD;IAEA,IAAI,CAACP,QAAQ,CAAC;MAAEZ,KAAK;MAAEL;IAAe,CAAC,CAAC;IAExC,IAAM;MAAE0B;IAAS,CAAC,GAAG,IAAI,CAACjC,KAAK;IAC/BiC,QAAQ,CAAC1B,cAAc,EAAEc,eAAe,CAAC;EAC3C;EAEAjB,oBAAoBA,CAAC8B,GAAW,EAAEC,MAAc,EAAQ;IACtD,IAAI,CAACC,cAAc,CAACF,GAAG,EAAEC,MAAM,CAAC;EAClC;EAEA9B,qBAAqBA,CAAA,EAAS;IAC5B,IAAI,CAACgC,mBAAmB,CAAC,CAAC;EAC5B;EAEA/B,iBAAiBA,CAACgC,KAAwC,EAAQ;IAChE,IAAM;MAAEtB,KAAK;MAAEuB;IAAU,CAAC,GAAG,IAAI,CAACvC,KAAK;IACvC,IAAI,CAACgB,KAAK,EAAE;IAEZ,IAAMwB,IAAI,GAAGF,KAAK,CAACG,MAAM;IACzB,IAAM;MAAE5B;IAAO,CAAC,GAAG2B,IAAI;IACvB,IAAM5B,KAAK,GAAG,EAAE;IAChB,IAAM8B,MAAM,GAAG1B,KAAK,CAAC2B,OAAO,CAAC,CAAC,CAAC;IAC/B,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGJ,IAAI,CAACK,IAAI,CAACjD,MAAM,EAAEgD,CAAC,IAAI,CAAC,EAAE;MAC5C,IAAME,GAAG,GAAGN,IAAI,CAACK,IAAI,CAACD,CAAC,CAAC;MACxB,IAAMnD,KAAK,GAAGqD,GAAG,CAACC,GAAG,CAACL,MAAM,CAAC;MAC7B,IAAIM,YAAkC;MACtC,IAAIvD,KAAK,IAAI,IAAI,EAAE;QACjBuD,YAAY,gBAAG9D,IAAA;UAAG+D,SAAS,EAAC,YAAY;UAAAC,QAAA,EAAC;QAAI,CAAG,CAAC;MACnD,CAAC,MAAM,IAAIzD,KAAK,KAAK,EAAE,EAAE;QACvBuD,YAAY,gBAAG9D,IAAA;UAAG+D,SAAS,EAAC,YAAY;UAAAC,QAAA,EAAC;QAAK,CAAG,CAAC;MACpD,CAAC,MAAM;QACLF,YAAY,GAAGT,SAAS,CAACY,kBAAkB,CACzC1D,KAAK,EACLiD,MAAM,CAACU,IAAI,EACXV,MAAM,CAACW,IACT,CAAC;MACH;MACA,IAAMtB,UAAU,GAAG,IAAI,CAACuB,eAAe,CAAC7D,KAAK,CAAC;MAC9CmB,KAAK,CAACkB,IAAI,CAAC;QACTkB,YAAY;QACZvD,KAAK;QACLsC;MACF,CAAC,CAAC;IACJ;IAEA1C,GAAG,CAACkE,MAAM,CAAC,wBAAwB,EAAE1C,MAAM,EAAED,KAAK,CAAChB,MAAM,CAAC;IAE1D,IAAMe,SAAS,GAAGK,KAAK,CAACwC,IAAI;IAC5B,IAAI,CAAChC,QAAQ,CAAC;MAAEb,SAAS;MAAEC,KAAK;MAAEC,MAAM;MAAEC,SAAS,EAAE;IAAM,CAAC,CAAC;EAC/D;EAEAwC,eAAeA,CAAC7D,KAAQ,EAAW;IACjC,IAAM;MAAE4B;IAAgB,CAAC,GAAG,IAAI,CAACrB,KAAK;IACtC,IAAM;MAAEO;IAAe,CAAC,GAAG,IAAI,CAACG,KAAK;;IAErC;IACA,IAAMkB,aAAa,GAAGrC,oCAAoC,CAACC,OAAO,CAChEC,KAAK,EACLc,cACF,CAAC;IAED,OAAOc,eAAe,GAAGO,aAAa,GAAG,CAAC,GAAGA,aAAa,IAAI,CAAC;EACjE;EAEAX,cAAcA,CAACD,KAAmB,EAAQ;IACxCA,KAAK,CAACyC,gBAAgB,CAAC,IAAI,CAACjD,EAAE,CAACkD,KAAK,CAACC,aAAa,EAAE,IAAI,CAACrD,iBAAiB,CAAC;EAC7E;EAEAgB,aAAaA,CAACN,KAAmB,EAAQ;IACvCA,KAAK,CAAC4C,mBAAmB,CACvB,IAAI,CAACpD,EAAE,CAACkD,KAAK,CAACC,aAAa,EAC3B,IAAI,CAACrD,iBACP,CAAC;EACH;EAEAiB,aAAaA,CAAA,EAAS;IACpB,IAAI,IAAI,CAACd,IAAI,IAAI,IAAI,CAACA,IAAI,CAACoD,MAAM,IAAI,IAAI,IAAI,IAAI,CAACpD,IAAI,CAACqD,SAAS,IAAI,IAAI,EAAE;MACxE,IAAI,CAAC1B,cAAc,CAAC,IAAI,CAAC3B,IAAI,CAACoD,MAAM,EAAE,IAAI,CAACpD,IAAI,CAACqD,SAAS,EAAE,IAAI,CAAC;IAClE;EACF;EAEAzB,mBAAmBA,CAAA,EAAS;IAC1B,IAAI;MAAEzB;IAAM,CAAC,GAAG,IAAI,CAACF,KAAK;IAE1BE,KAAK,GAAG,CAAC,GAAGA,KAAK,CAAC;IAElB,KAAK,IAAIjB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGiB,KAAK,CAAChB,MAAM,EAAED,CAAC,IAAI,CAAC,EAAE;MACxC,IAAMoE,IAAI,GAAGnD,KAAK,CAACjB,CAAC,CAAC;MACrB,IAAM;QAAEF;MAAM,CAAC,GAAGsE,IAAI;MACtBA,IAAI,CAAChC,UAAU,GAAG,IAAI,CAACuB,eAAe,CAAC7D,KAAK,CAAC;IAC/C;IAEA,IAAI,CAAC+B,QAAQ,CAAC;MAAEZ;IAAM,CAAC,CAAC;EAC1B;EAEAwB,cAAcA,CAACF,GAAW,EAAEC,MAAc,EAA2B;IAAA,IAAzBrB,SAAS,GAAAkD,SAAA,CAAApE,MAAA,QAAAoE,SAAA,QAAAC,SAAA,GAAAD,SAAA,MAAG,KAAK;IAC3D,IAAM;MAAEhD;IAAM,CAAC,GAAG,IAAI,CAAChB,KAAK;IAC5B,IAAIgB,KAAK,IAAI,IAAI,EAAE;MACjB;IACF;IAEA,IAAIF,SAAS,EAAE;MACb,IAAI,CAACU,QAAQ,CAAC;QAAEV,SAAS,EAAE;MAAK,CAAC,CAAC;IACpC;IAEA,IAAMoD,YAAY,GAAG/B,MAAM,GAAGD,GAAG,GAAG,CAAC;IACrC,IAAM2B,MAAM,GAAGM,IAAI,CAACC,GAAG,CAAC,CAAC,EAAElC,GAAG,GAAGgC,YAAY,GAAG,CAAC,CAAC;IAClD,IAAMJ,SAAS,GAAGK,IAAI,CAACC,GAAG,CAACP,MAAM,EAAE1B,MAAM,GAAG+B,YAAY,GAAG,CAAC,CAAC;IAE7D7E,GAAG,CAACkE,MAAM,CAAC,kBAAkB,EAAEM,MAAM,EAAE,GAAG,EAAEC,SAAS,CAAC;IACtD9C,KAAK,CAACqD,WAAW,CAACR,MAAM,EAAEC,SAAS,CAAC;EACtC;EAEAQ,MAAMA,CAAA,EAAiB;IACrB,IAAM;MAAEzD,MAAM;MAAEC,SAAS;MAAEF,KAAK;MAAED;IAAU,CAAC,GAAG,IAAI,CAACD,KAAK;IAE1D,oBACEtB,KAAA;MAAK6D,SAAS,EAAC,2BAA2B;MAAAC,QAAA,gBACxChE,IAAA,CAACJ,eAAe;QACd6B,SAAS,EAAEA,SAAU;QACrBC,KAAK,EAAEA,KAAM;QACbC,MAAM,EAAEA,MAAO;QACf0D,QAAQ,EAAE,IAAI,CAACrE,YAAa;QAC5BsE,gBAAgB,EAAE,IAAI,CAACpE,oBAAqB;QAC5CqE,GAAG,EAAEhE,IAAI,IAAI;UACX,IAAI,CAACA,IAAI,GAAGA,IAAI;QAClB;MAAE,CACH,CAAC,eACFvB,IAAA,CAACH,cAAc;QAAC2F,EAAE,EAAE5D,SAAU;QAAC6D,YAAY;QAACC,aAAa;QAAA1B,QAAA,eACvDhE,IAAA;UAAK+D,SAAS,EAAC,cAAc;UAAAC,QAAA,eAC3BhE,IAAA,CAACL,cAAc;YAACoE,SAAS,EAAC;UAAuB,CAAE;QAAC,CACjD;MAAC,CACQ,CAAC;IAAA,CACd,CAAC;EAEV;AACF;AAAChD,eAAA,CAhQKV,oCAAoC,kBAIlB;EACpB8B,eAAe,EAAE,IAAI;EACrBd,cAAc,EAAE,EAAE;EAClB0B,QAAQ,EAAEA,CAAA,KAAYgC;AACxB,CAAC;AA0PH,eAAe1E,oCAAoC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColumnHeaderGroup.js","names":["GridUtils","memoizeOne","Log","log","module","isColumnHeaderGroup","x","ColumnHeaderGroup","constructor","_ref","name","children","color","depth","childIndexes","parent","_defineProperty","movedItems","flattenedIndexes","flat","visibleIndexes","getVisibleIndexes","start","Math","min","end","max","length","warn","concat","undefined","setParent","addChildren","newChildren","Set","removeChildren","forEach","delete","isNew","startsWith","NEW_GROUP_PREFIX"],"sources":["../src/ColumnHeaderGroup.ts"],"sourcesContent":["import {\n type MoveOperation,\n GridUtils,\n type ModelIndex,\n type BoundedAxisRange,\n type IColumnHeaderGroup,\n} from '@deephaven/grid';\nimport memoizeOne from 'memoize-one';\nimport Log from '@deephaven/log';\n\nconst log = Log.module('ColumnHeaderGroup');\n\nexport function isColumnHeaderGroup(x: unknown): x is ColumnHeaderGroup {\n return x instanceof ColumnHeaderGroup;\n}\n\nexport type ColumnHeaderGroupConfig = {\n name: string;\n children: string[];\n color?: string | null;\n depth: number;\n childIndexes: ModelIndex[];\n parent?: string;\n};\n\nexport default class ColumnHeaderGroup implements IColumnHeaderGroup {\n static NEW_GROUP_PREFIX = ':newGroup';\n\n name: string;\n\n children: string[];\n\n depth: number;\n\n parent?: string;\n\n color?: string;\n\n childIndexes: ModelIndex[];\n\n constructor({\n name,\n children,\n color,\n depth,\n childIndexes,\n parent,\n }: ColumnHeaderGroupConfig) {\n this.name = name;\n this.children = children;\n this.color = color ?? undefined;\n this.depth = depth;\n this.childIndexes = childIndexes;\n this.parent = parent;\n }\n\n getVisibleRange = memoizeOne(\n (movedItems: readonly MoveOperation[]): BoundedAxisRange => {\n const flattenedIndexes = this.childIndexes.flat();\n const visibleIndexes = GridUtils.getVisibleIndexes(\n flattenedIndexes,\n movedItems\n );\n\n const start = Math.min(...visibleIndexes);\n const end = Math.max(...visibleIndexes);\n\n if (end - start !== flattenedIndexes.length - 1) {\n log.warn(`Column header group ${this.name} is not contiguous`);\n }\n\n return [start, end];\n }\n );\n\n setParent(parent: string | undefined): void {\n this.parent = parent;\n }\n\n addChildren(children: string[]): void {\n const newChildren = new Set(this.children.concat(children));\n this.children = [...newChildren];\n }\n\n removeChildren(children: string[]): void {\n const newChildren = new Set(this.children);\n children.forEach(name => newChildren.delete(name));\n this.children = [...newChildren];\n }\n\n get isNew(): boolean {\n return this.name.startsWith(ColumnHeaderGroup.NEW_GROUP_PREFIX);\n }\n}\n"],"mappings":";;;AAAA,SAEEA,SAAS,QAIJ,iBAAiB;AACxB,OAAOC,UAAU,MAAM,aAAa;AACpC,OAAOC,GAAG,MAAM,gBAAgB;AAEhC,IAAMC,GAAG,GAAGD,GAAG,CAACE,MAAM,CAAC,mBAAmB,CAAC;AAE3C,OAAO,SAASC,mBAAmBA,CAACC,CAAU,EAA0B;EACtE,OAAOA,CAAC,YAAYC,iBAAiB;AACvC;AAWA,eAAe,MAAMA,iBAAiB,CAA+B;EAenEC,WAAWA,CAAAC,IAAA,EAOiB;IAAA,IAPhB;MACVC,IAAI;MACJC,QAAQ;MACRC,KAAK;MACLC,KAAK;MACLC,YAAY;MACZC;IACuB,CAAC,GAAAN,IAAA;IAAAO,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA,0BASRf,UAAU,CACzBgB,UAAoC,IAAuB;MAC1D,IAAMC,gBAAgB,GAAG,IAAI,CAACJ,YAAY,CAACK,IAAI,CAAC,CAAC;MACjD,IAAMC,cAAc,GAAGpB,SAAS,CAACqB,iBAAiB,CAChDH,gBAAgB,EAChBD,UACF,CAAC;MAED,IAAMK,KAAK,GAAGC,IAAI,CAACC,GAAG,CAAC,GAAGJ,cAAc,CAAC;MACzC,IAAMK,GAAG,GAAGF,IAAI,CAACG,GAAG,CAAC,GAAGN,cAAc,CAAC;MAEvC,IAAIK,GAAG,GAAGH,KAAK,KAAKJ,gBAAgB,CAACS,MAAM,GAAG,CAAC,EAAE;QAC/CxB,GAAG,CAACyB,IAAI,wBAAAC,MAAA,CAAwB,IAAI,CAACnB,IAAI,uBAAoB,CAAC;MAChE;MAEA,OAAO,CAACY,KAAK,EAAEG,GAAG,CAAC;IACrB,CACF,CAAC;IAzBC,IAAI,CAACf,IAAI,GAAGA,IAAI;IAChB,IAAI,CAACC,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAACC,KAAK,GAAGA,KAAK,aAALA,KAAK,cAALA,KAAK,GAAIkB,SAAS;IAC/B,IAAI,CAACjB,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACC,YAAY,GAAGA,YAAY;IAChC,IAAI,CAACC,MAAM,GAAGA,MAAM;EACtB;EAqBAgB,SAASA,CAAChB,MAA0B,EAAQ;IAC1C,IAAI,CAACA,MAAM,GAAGA,MAAM;EACtB;EAEAiB,WAAWA,CAACrB,QAAkB,EAAQ;IACpC,IAAMsB,WAAW,GAAG,IAAIC,GAAG,CAAC,IAAI,CAACvB,QAAQ,CAACkB,MAAM,CAAClB,QAAQ,CAAC,CAAC;IAC3D,IAAI,CAACA,QAAQ,GAAG,CAAC,GAAGsB,WAAW,CAAC;EAClC;EAEAE,cAAcA,CAACxB,QAAkB,EAAQ;IACvC,IAAMsB,WAAW,GAAG,IAAIC,GAAG,CAAC,IAAI,CAACvB,QAAQ,CAAC;IAC1CA,QAAQ,CAACyB,OAAO,CAAC1B,IAAI,IAAIuB,WAAW,CAACI,MAAM,CAAC3B,IAAI,CAAC,CAAC;IAClD,IAAI,CAACC,QAAQ,GAAG,CAAC,GAAGsB,WAAW,CAAC;EAClC;EAEA,IAAIK,KAAKA,CAAA,EAAY;IACnB,OAAO,IAAI,CAAC5B,IAAI,CAAC6B,UAAU,CAAChC,iBAAiB,CAACiC,gBAAgB,CAAC;EACjE;AACF;AAACxB,eAAA,CApEoBT,iBAAiB,sBACV,WAAW"}
|
|
1
|
+
{"version":3,"file":"ColumnHeaderGroup.js","names":["GridUtils","memoizeOne","Log","log","module","isColumnHeaderGroup","x","ColumnHeaderGroup","constructor","_ref","name","children","color","depth","childIndexes","parent","_defineProperty","movedItems","flattenedIndexes","flat","visibleIndexes","getVisibleIndexes","start","Math","min","end","max","length","warn","concat","undefined","setParent","addChildren","newChildren","Set","removeChildren","forEach","delete","isNew","startsWith","NEW_GROUP_PREFIX"],"sources":["../src/ColumnHeaderGroup.ts"],"sourcesContent":["import {\n type MoveOperation,\n GridUtils,\n type ModelIndex,\n type BoundedAxisRange,\n type IColumnHeaderGroup,\n} from '@deephaven/grid';\nimport memoizeOne from 'memoize-one';\nimport Log from '@deephaven/log';\n\nconst log = Log.module('ColumnHeaderGroup');\n\nexport function isColumnHeaderGroup(x: unknown): x is ColumnHeaderGroup {\n return x instanceof ColumnHeaderGroup;\n}\n\nexport type ColumnHeaderGroupConfig = {\n name: string;\n children: string[];\n color?: string | null;\n depth: number;\n childIndexes: ModelIndex[];\n parent?: string;\n};\n\nexport default class ColumnHeaderGroup implements IColumnHeaderGroup {\n static NEW_GROUP_PREFIX = ':newGroup';\n\n name: string;\n\n children: string[];\n\n depth: number;\n\n parent?: string;\n\n color?: string;\n\n childIndexes: ModelIndex[];\n\n constructor({\n name,\n children,\n color,\n depth,\n childIndexes,\n parent,\n }: ColumnHeaderGroupConfig) {\n this.name = name;\n this.children = children;\n this.color = color ?? undefined;\n this.depth = depth;\n this.childIndexes = childIndexes;\n this.parent = parent;\n }\n\n getVisibleRange = memoizeOne(\n (movedItems: readonly MoveOperation[]): BoundedAxisRange => {\n const flattenedIndexes = this.childIndexes.flat();\n const visibleIndexes = GridUtils.getVisibleIndexes(\n flattenedIndexes,\n movedItems\n );\n\n const start = Math.min(...visibleIndexes);\n const end = Math.max(...visibleIndexes);\n\n if (end - start !== flattenedIndexes.length - 1) {\n log.warn(`Column header group ${this.name} is not contiguous`);\n }\n\n return [start, end];\n }\n );\n\n setParent(parent: string | undefined): void {\n this.parent = parent;\n }\n\n addChildren(children: string[]): void {\n const newChildren = new Set(this.children.concat(children));\n this.children = [...newChildren];\n }\n\n removeChildren(children: string[]): void {\n const newChildren = new Set(this.children);\n children.forEach(name => newChildren.delete(name));\n this.children = [...newChildren];\n }\n\n get isNew(): boolean {\n return this.name.startsWith(ColumnHeaderGroup.NEW_GROUP_PREFIX);\n }\n}\n"],"mappings":";;;AAAA,SAEEA,SAAS,QAIJ,iBAAiB;AACxB,OAAOC,UAAU,MAAM,aAAa;AACpC,OAAOC,GAAG,MAAM,gBAAgB;AAEhC,IAAMC,GAAG,GAAGD,GAAG,CAACE,MAAM,CAAC,mBAAmB,CAAC;AAE3C,OAAO,SAASC,mBAAmBA,CAACC,CAAU,EAA0B;EACtE,OAAOA,CAAC,YAAYC,iBAAiB;AACvC;AAWA,eAAe,MAAMA,iBAAiB,CAA+B;EAenEC,WAAWA,CAAAC,IAAA,EAOiB;IAAA,IAPhB;MACVC,IAAI;MACJC,QAAQ;MACRC,KAAK;MACLC,KAAK;MACLC,YAAY;MACZC;IACuB,CAAC,GAAAN,IAAA;IAAAO,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA,0BASRf,UAAU,CACzBgB,UAAoC,IAAuB;MAC1D,IAAMC,gBAAgB,GAAG,IAAI,CAACJ,YAAY,CAACK,IAAI,CAAC,CAAC;MACjD,IAAMC,cAAc,GAAGpB,SAAS,CAACqB,iBAAiB,CAChDH,gBAAgB,EAChBD,UACF,CAAC;MAED,IAAMK,KAAK,GAAGC,IAAI,CAACC,GAAG,CAAC,GAAGJ,cAAc,CAAC;MACzC,IAAMK,GAAG,GAAGF,IAAI,CAACG,GAAG,CAAC,GAAGN,cAAc,CAAC;MAEvC,IAAIK,GAAG,GAAGH,KAAK,KAAKJ,gBAAgB,CAACS,MAAM,GAAG,CAAC,EAAE;QAC/CxB,GAAG,CAACyB,IAAI,wBAAAC,MAAA,CAAwB,IAAI,CAACnB,IAAI,uBAAoB,CAAC;MAChE;MAEA,OAAO,CAACY,KAAK,EAAEG,GAAG,CAAC;IACrB,CACF,CAAC;IAzBC,IAAI,CAACf,IAAI,GAAGA,IAAI;IAChB,IAAI,CAACC,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAACC,KAAK,GAAGA,KAAK,aAALA,KAAK,cAALA,KAAK,GAAIkB,SAAS;IAC/B,IAAI,CAACjB,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACC,YAAY,GAAGA,YAAY;IAChC,IAAI,CAACC,MAAM,GAAGA,MAAM;EACtB;EAqBAgB,SAASA,CAAChB,MAA0B,EAAQ;IAC1C,IAAI,CAACA,MAAM,GAAGA,MAAM;EACtB;EAEAiB,WAAWA,CAACrB,QAAkB,EAAQ;IACpC,IAAMsB,WAAW,GAAG,IAAIC,GAAG,CAAC,IAAI,CAACvB,QAAQ,CAACkB,MAAM,CAAClB,QAAQ,CAAC,CAAC;IAC3D,IAAI,CAACA,QAAQ,GAAG,CAAC,GAAGsB,WAAW,CAAC;EAClC;EAEAE,cAAcA,CAACxB,QAAkB,EAAQ;IACvC,IAAMsB,WAAW,GAAG,IAAIC,GAAG,CAAC,IAAI,CAACvB,QAAQ,CAAC;IAC1CA,QAAQ,CAACyB,OAAO,CAAC1B,IAAI,IAAIuB,WAAW,CAACI,MAAM,CAAC3B,IAAI,CAAC,CAAC;IAClD,IAAI,CAACC,QAAQ,GAAG,CAAC,GAAGsB,WAAW,CAAC;EAClC;EAEA,IAAIK,KAAKA,CAAA,EAAY;IACnB,OAAO,IAAI,CAAC5B,IAAI,CAAC6B,UAAU,CAAChC,iBAAiB,CAACiC,gBAAgB,CAAC;EACjE;AACF;AAACxB,eAAA,CApEoBT,iBAAiB,sBACV,WAAW","ignoreList":[]}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import React, { Component
|
|
1
|
+
import React, { Component } from 'react';
|
|
2
2
|
import type { dh } from '@deephaven/jsapi-types';
|
|
3
3
|
import { type CancelablePromise } from '@deephaven/utils';
|
|
4
4
|
import './ColumnStatistics.scss';
|
|
5
5
|
import { type DisplayColumn } from './IrisGridModel';
|
|
6
6
|
import type IrisGridModel from './IrisGridModel';
|
|
7
7
|
interface Statistic {
|
|
8
|
-
operation:
|
|
8
|
+
operation: string;
|
|
9
9
|
className?: string;
|
|
10
10
|
value: unknown;
|
|
11
11
|
type: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColumnStatistics.d.ts","sourceRoot":"","sources":["../src/ColumnStatistics.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"ColumnStatistics.d.ts","sourceRoot":"","sources":["../src/ColumnStatistics.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAKzC,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAEjD,OAAO,EAAE,KAAK,iBAAiB,EAAgB,MAAM,kBAAkB,CAAC;AAExE,OAAO,yBAAyB,CAAC;AACjC,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,aAAa,MAAM,iBAAiB,CAAC;AAOjD,UAAU,SAAS;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,qBAAqB;IAC7B,MAAM,EAAE,aAAa,CAAC;IACtB,KAAK,EAAE,aAAa,CAAC;IACrB,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B;AACD,UAAU,qBAAqB;IAC7B,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,SAAS,SAAS,EAAE,GAAG,IAAI,CAAC;IACxC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,cAAM,gBAAiB,SAAQ,SAAS,CACtC,qBAAqB,EACrB,qBAAqB,CACtB;IACC,uFAAuF;IACvF,MAAM,CAAC,mBAAmB,SAAU;IAEpC,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;gBAUnC,KAAK,EAAE,qBAAqB;IAiBxC,iBAAiB,IAAI,IAAI;IAIzB,oBAAoB,IAAI,IAAI;IAM5B,iBAAiB,EAAE,iBAAiB,CAAC,EAAE,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC;IAEjE,uBAAuB,IAAI,IAAI;IAgB/B,wBAAwB,IAAI,IAAI;IAYhC,gBAAgB,CAAC,KAAK,EAAE,EAAE,CAAC,gBAAgB,GAAG,IAAI;IAoClD,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAc/B,MAAM,IAAI,KAAK,CAAC,YAAY;CAwG7B;AAED,eAAe,gBAAgB,CAAC"}
|