@deephaven/code-studio 1.6.1-beta.1 → 1.7.1-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/assets/{AppRoot-CcjtMEE1.js → AppRoot-BRj2Jfri.js} +6 -6
- package/build/assets/{AppRoot-CcjtMEE1.js.map → AppRoot-BRj2Jfri.js.map} +1 -1
- package/build/assets/{Chart-DxnH8oIL.js → Chart-CaAxCat7.js} +2 -2
- package/build/assets/{Chart-DxnH8oIL.js.map → Chart-CaAxCat7.js.map} +1 -1
- package/build/assets/{ControlType-iWe9OS6A.js → ControlType-OWiMP53g.js} +4 -4
- package/build/assets/{ControlType-iWe9OS6A.js.map → ControlType-OWiMP53g.js.map} +1 -1
- package/build/assets/{FontBootstrap-BZev7e3x.js → FontBootstrap-5e8v0Vrm.js} +2 -2
- package/build/assets/{FontBootstrap-BZev7e3x.js.map → FontBootstrap-5e8v0Vrm.js.map} +1 -1
- package/build/assets/{FormatterUtils-S_nLKvqI.js → FormatterUtils-DvuKtC9i.js} +2 -2
- package/build/assets/{FormatterUtils-S_nLKvqI.js.map → FormatterUtils-DvuKtC9i.js.map} +1 -1
- package/build/assets/{Grid-BIWFIs5I.js → Grid-AotxUMjS.js} +2 -2
- package/build/assets/{Grid-BIWFIs5I.js.map → Grid-AotxUMjS.js.map} +1 -1
- package/build/assets/{GridTokenMouseHandler--Y7s0DfJ.js → GridTokenMouseHandler-DbrZuGdA.js} +2 -2
- package/build/assets/{GridTokenMouseHandler--Y7s0DfJ.js.map → GridTokenMouseHandler-DbrZuGdA.js.map} +1 -1
- package/build/assets/{IrisGrid-DT-oY8-s.js → IrisGrid-DcRnNWMV.js} +2 -2
- package/build/assets/{IrisGrid-DT-oY8-s.js.map → IrisGrid-DcRnNWMV.js.map} +1 -1
- package/build/assets/{IrisGridModel-BwiAcm3I.js → IrisGridModel-CftOQ5pJ.js} +3 -3
- package/build/assets/{IrisGridModel-BwiAcm3I.js.map → IrisGridModel-CftOQ5pJ.js.map} +1 -1
- package/build/assets/{IrisGridShortcuts-DbW62A8s.js → IrisGridShortcuts-ByJ2JxE3.js} +2 -2
- package/build/assets/{IrisGridShortcuts-DbW62A8s.js.map → IrisGridShortcuts-ByJ2JxE3.js.map} +1 -1
- package/build/assets/{IrisGridThemeProvider-CsXiBXAU.js → IrisGridThemeProvider-M47uws5Y.js} +2 -2
- package/build/assets/{IrisGridThemeProvider-CsXiBXAU.js.map → IrisGridThemeProvider-M47uws5Y.js.map} +1 -1
- package/build/assets/{LocalWorkspaceStorage-DZNOREf5.js → LocalWorkspaceStorage-BHhrSdNL.js} +2 -2
- package/build/assets/{LocalWorkspaceStorage-DZNOREf5.js.map → LocalWorkspaceStorage-BHhrSdNL.js.map} +1 -1
- package/build/assets/{MarkdownEditor-DCpjE5QM.js → MarkdownEditor-MTNcCuKh.js} +2 -2
- package/build/assets/{MarkdownEditor-DCpjE5QM.js.map → MarkdownEditor-MTNcCuKh.js.map} +1 -1
- package/build/assets/{MarkdownNotebook-DzTid0ai.js → MarkdownNotebook-DNerf7HR.js} +2 -2
- package/build/assets/{MarkdownNotebook-DzTid0ai.js.map → MarkdownNotebook-DNerf7HR.js.map} +1 -1
- package/build/assets/{MissingPartitionError-NFXEiR-s.js → MissingPartitionError-CckteqdU.js} +2 -2
- package/build/assets/{MissingPartitionError-NFXEiR-s.js.map → MissingPartitionError-CckteqdU.js.map} +1 -1
- package/build/assets/{StyleGuideRoot-Dm6VsgFR.js → StyleGuideRoot-BquWgBOl.js} +2 -2
- package/build/assets/{StyleGuideRoot-Dm6VsgFR.js.map → StyleGuideRoot-BquWgBOl.js.map} +1 -1
- package/build/assets/{index-DmehYPOx.js → index-BVesjB0H.js} +3 -3
- package/build/assets/{index-DmehYPOx.js.map → index-BVesjB0H.js.map} +1 -1
- package/build/assets/{index-pnSqB0vP.js → index-C1bHz3Ns.js} +4 -4
- package/build/assets/{index-pnSqB0vP.js.map → index-C1bHz3Ns.js.map} +1 -1
- package/build/assets/{index-DpuTP8A_.js → index-ec2oUl_1.js} +2 -2
- package/build/assets/{index-DpuTP8A_.js.map → index-ec2oUl_1.js.map} +1 -1
- package/build/index.html +2 -2
- package/package.json +31 -31
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGrid-DT-oY8-s.js","sources":["../../../iris-grid/dist/AdvancedFilterCreatorFilterItem.js","../../../iris-grid/dist/AdvancedFilterCreatorSelectValueList.js","../../../iris-grid/dist/AdvancedFilterCreatorSelectValue.js","../../../iris-grid/dist/AdvancedFilterCreator.js","../../../iris-grid/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js","../../../iris-grid/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js","../../../iris-grid/dist/IrisGridBottomBar.js","../../../iris-grid/dist/PendingDataBottomBar.js","../../../iris-grid/dist/IrisGridCopyHandler.js","../../../iris-grid/dist/FilterInputField.js","../../../iris-grid/dist/key-handlers/CopyCellKeyHandler.js","../../../iris-grid/dist/key-handlers/CopyKeyHandler.js","../../../iris-grid/dist/key-handlers/ReverseKeyHandler.js","../../../iris-grid/dist/key-handlers/ClearFilterKeyHandler.js","../../../iris-grid/dist/ToastBottomBar.js","../../../iris-grid/dist/IrisGridModelUpdater.js","../../../iris-grid/dist/ColumnStatistics.js","../../../iris-grid/dist/CrossColumnSearch.js","../../../iris-grid/dist/IrisGridPartitionSelector.js","../../../iris-grid/dist/sidebar/SelectDistinctBuilder.js","../../../iris-grid/dist/sidebar/AdvancedSettingsMenu.js","../../../iris-grid/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js","../../../iris-grid/dist/sidebar/conditional-formatting/ConditionEditor.js","../../../iris-grid/dist/sidebar/conditional-formatting/StyleEditor.js","../../../iris-grid/dist/sidebar/conditional-formatting/ColumnFormatEditor.js","../../../iris-grid/dist/sidebar/conditional-formatting/RowFormatEditor.js","../../../iris-grid/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js","../../../iris-grid/dist/IrisGridCellOverflowModal.js","../../../iris-grid/dist/GotoRow.js","../../../iris-grid/dist/NoPastePermissionModal.js","../../../iris-grid/dist/IrisGrid.js"],"sourcesContent":["function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/* eslint react/no-did-update-set-state: \"off\" */\nimport React, { PureComponent } from 'react';\nimport { Button, Select } from '@deephaven/components';\nimport { getLabelForBooleanFilter, getLabelForDateFilter, getLabelForNumberFilter, getLabelForTextFilter } from '@deephaven/filters';\nimport { vsTrash } from '@deephaven/icons';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport classNames from 'classnames';\nimport memoizeOne from 'memoize-one';\nimport \"./AdvancedFilterCreatorFilterItem.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('AdvancedFilterCreatorFilterItem');\nexport class AdvancedFilterCreatorFilterItem extends PureComponent {\n static getLabelForFilter(columnType, filterType) {\n try {\n if (TableUtils.isNumberType(columnType) || TableUtils.isCharType(columnType)) {\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: \".concat(columnType));\n } catch (e) {\n log.warn(e);\n return '';\n }\n }\n constructor(props) {\n super(props);\n _defineProperty(this, \"typeDropdown\", void 0);\n _defineProperty(this, \"getCachedIsValid\", memoizeOne((column, operation, value, timeZone, tableUtils) => {\n try {\n // We don't want to show an error for an empty value\n return !value || tableUtils.makeAdvancedValueFilter(column, operation, value, timeZone) != null;\n } catch (e) {\n return false;\n }\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 var {\n value: _value = '',\n filterTypes,\n selectedType = filterTypes[0]\n } = props;\n this.state = {\n selectedType,\n value: _value\n };\n }\n componentDidMount() {\n var _this$typeDropdown;\n (_this$typeDropdown = this.typeDropdown) === null || _this$typeDropdown === void 0 ? void 0 : _this$typeDropdown.focus();\n }\n componentDidUpdate(prevProps) {\n var {\n value,\n selectedType\n } = this.props;\n if (selectedType !== undefined && prevProps.selectedType !== selectedType) {\n this.setState({\n selectedType\n });\n }\n if (value !== undefined && prevProps.value !== value) {\n this.setState({\n value\n });\n }\n }\n handleTypeChange(eventTargetValue) {\n var selectedType = eventTargetValue;\n log.debug2('typeChange', selectedType);\n this.setState({\n selectedType\n });\n var {\n onChange\n } = this.props;\n var {\n value\n } = 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 handleValueChange(event) {\n log.debug2('valueChange');\n var {\n value\n } = event.target;\n this.setState({\n value\n });\n var {\n onChange\n } = this.props;\n var {\n selectedType\n } = 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 handleDelete() {\n log.debug('delete');\n var {\n onDelete\n } = this.props;\n onDelete();\n }\n render() {\n var {\n column,\n filterTypes,\n formatter,\n tableUtils\n } = this.props;\n var {\n selectedType,\n value\n } = this.state;\n var showValueInput = !TableUtils.isBooleanType(column.type);\n var typeOptionElements = [];\n var isValid = this.getCachedIsValid(column, selectedType, value, formatter.timeZone, tableUtils);\n for (var i = 0; i < filterTypes.length; i += 1) {\n var _type = filterTypes[i];\n var label = AdvancedFilterCreatorFilterItem.getLabelForFilter(column.type, _type);\n var element = /*#__PURE__*/_jsx(\"option\", {\n value: _type,\n children: label\n }, _type);\n typeOptionElements.push(element);\n }\n return /*#__PURE__*/_jsx(\"div\", {\n className: \"advanced-filter-creator-filter-item\",\n children: /*#__PURE__*/_jsxs(\"div\", {\n className: \"form-row\",\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"form-group col\",\n children: /*#__PURE__*/_jsx(Select, {\n className: \"form-control\",\n value: selectedType,\n onChange: this.handleTypeChange,\n ref: typeDropdown => {\n this.typeDropdown = typeDropdown;\n },\n children: typeOptionElements\n })\n }), showValueInput && /*#__PURE__*/_jsx(\"div\", {\n className: \"form-group col\",\n children: /*#__PURE__*/_jsx(\"div\", {\n className: \"input-group\",\n children: /*#__PURE__*/_jsx(\"input\", {\n type: \"text\",\n className: classNames('form-control', {\n error: !isValid\n }),\n placeholder: \"Enter value\",\n value: value,\n onChange: this.handleValueChange\n })\n })\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"form-group col-1 px-0\",\n children: /*#__PURE__*/_jsx(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 })]\n })\n });\n }\n}\nexport default AdvancedFilterCreatorFilterItem;\n//# sourceMappingURL=AdvancedFilterCreatorFilterItem.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/* eslint react/no-did-update-set-state: \"off\" */\nimport React, { PureComponent } from 'react';\nimport { LoadingSpinner, SelectValueList, FadeTransition } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('AdvancedFilterCreatorSelectValueList');\n/**\n * Select values from a long scrollable list.\n * Swaps items in and out for infinite scrolling\n */\nclass AdvancedFilterCreatorSelectValueList extends PureComponent {\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, values) {\n for (var i = 0; i < values.length; i += 1) {\n var v = values[i];\n if (v === value || v != null && v.valueOf != null && value != null && value.valueOf != null && v.valueOf() === value.valueOf()) {\n return i;\n }\n }\n return -1;\n }\n constructor(props) {\n super(props);\n _defineProperty(this, \"dh\", void 0);\n _defineProperty(this, \"list\", void 0);\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 var {\n selectedValues,\n dh\n } = this.props;\n this.dh = dh;\n this.list = null;\n this.state = {\n itemCount: 0,\n items: [],\n offset: 0,\n selectedValues,\n isLoading: true\n };\n }\n componentDidMount() {\n var {\n table\n } = this.props;\n if (table) this.startListening(table);\n }\n componentDidUpdate(prevProps) {\n var {\n filters,\n invertSelection,\n selectedValues,\n table\n } = 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 if (prevProps.invertSelection !== invertSelection) {\n this.setState({\n selectedValues: []\n }, this.handleSelectionUpdate);\n }\n if (prevProps.selectedValues !== selectedValues) {\n this.setState({\n selectedValues\n }, this.handleSelectionUpdate);\n }\n if (prevProps.filters !== filters) {\n table === null || table === void 0 ? void 0 : table.applyFilter(filters);\n this.resetViewport();\n }\n }\n componentWillUnmount() {\n var {\n table\n } = this.props;\n if (table) this.stopListening(table);\n }\n handleSelect(itemIndex, value) {\n var {\n invertSelection\n } = this.props;\n var {\n selectedValues\n } = this.state;\n selectedValues = [...selectedValues];\n var selectedIndex = AdvancedFilterCreatorSelectValueList.indexOf(value, selectedValues);\n if (selectedIndex >= 0) {\n selectedValues.splice(selectedIndex, 1);\n } else {\n selectedValues.push(value);\n }\n var isSelected = selectedIndex < 0;\n if (invertSelection) {\n isSelected = !isSelected;\n }\n var {\n offset\n } = this.state;\n var {\n items\n } = this.state;\n items = [...items];\n var visibleItemIndex = itemIndex - offset;\n if (visibleItemIndex >= 0 && visibleItemIndex < items.length) {\n items[visibleItemIndex].isSelected = isSelected;\n }\n this.setState({\n items,\n selectedValues\n });\n var {\n onChange\n } = this.props;\n onChange(selectedValues, invertSelection);\n }\n handleViewportChange(top, bottom) {\n this.updateViewport(top, bottom);\n }\n handleSelectionUpdate() {\n this.updateItemSelection();\n }\n handleTableUpdate(event) {\n var {\n table,\n formatter\n } = this.props;\n if (!table) return;\n var data = event.detail;\n var {\n offset\n } = data;\n var items = [];\n var column = table.columns[0];\n for (var r = 0; r < data.rows.length; r += 1) {\n var row = data.rows[r];\n var value = row.get(column);\n var displayValue = void 0;\n if (value == null) {\n displayValue = /*#__PURE__*/_jsx(\"i\", {\n className: \"text-muted\",\n children: \"null\"\n });\n } else if (value === '') {\n displayValue = /*#__PURE__*/_jsx(\"i\", {\n className: \"text-muted\",\n children: \"empty\"\n });\n } else {\n displayValue = formatter.getFormattedString(value, column.type, column.name);\n }\n var isSelected = this.isValueSelected(value);\n items.push({\n displayValue,\n value,\n isSelected\n });\n }\n log.debug2('Received table update:', offset, items.length);\n var itemCount = table.size;\n this.setState({\n itemCount,\n items,\n offset,\n isLoading: false\n });\n }\n isValueSelected(value) {\n var {\n invertSelection\n } = this.props;\n var {\n selectedValues\n } = this.state;\n\n // Need to check if any of the valueOf matches, timestamp value that is equal\n var selectedIndex = AdvancedFilterCreatorSelectValueList.indexOf(value, selectedValues);\n return invertSelection ? selectedIndex < 0 : selectedIndex >= 0;\n }\n startListening(table) {\n table.addEventListener(this.dh.Table.EVENT_UPDATED, this.handleTableUpdate);\n }\n stopListening(table) {\n table.removeEventListener(this.dh.Table.EVENT_UPDATED, this.handleTableUpdate);\n }\n resetViewport() {\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 updateItemSelection() {\n var {\n items\n } = this.state;\n items = [...items];\n for (var i = 0; i < items.length; i += 1) {\n var item = items[i];\n var {\n value\n } = item;\n item.isSelected = this.isValueSelected(value);\n }\n this.setState({\n items\n });\n }\n updateViewport(top, bottom) {\n var isLoading = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var {\n table\n } = this.props;\n if (table == null) {\n return;\n }\n if (isLoading) {\n this.setState({\n isLoading: true\n });\n }\n var viewportSize = bottom - top + 1;\n var topRow = Math.max(0, top - viewportSize * 3);\n var bottomRow = Math.max(topRow, bottom + viewportSize * 3);\n log.debug2('Setting viewport', topRow, ',', bottomRow);\n table.setViewport(topRow, bottomRow);\n }\n render() {\n var {\n offset,\n isLoading,\n items,\n itemCount\n } = this.state;\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"select-value-list-wrapper\",\n children: [/*#__PURE__*/_jsx(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 }), /*#__PURE__*/_jsx(FadeTransition, {\n in: isLoading,\n mountOnEnter: true,\n unmountOnExit: true,\n children: /*#__PURE__*/_jsx(\"div\", {\n className: \"loading-list\",\n children: /*#__PURE__*/_jsx(LoadingSpinner, {\n className: \"loading-spinner-large\"\n })\n })\n })]\n });\n }\n}\n_defineProperty(AdvancedFilterCreatorSelectValueList, \"defaultProps\", {\n invertSelection: true,\n selectedValues: [],\n onChange: () => undefined\n});\nexport default AdvancedFilterCreatorSelectValueList;\n//# sourceMappingURL=AdvancedFilterCreatorSelectValueList.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/* eslint react/no-did-update-set-state: \"off\" */\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport { Button, FadeTransition } from '@deephaven/components';\nimport AdvancedFilterCreatorSelectValueList from \"./AdvancedFilterCreatorSelectValueList.js\";\nimport \"./AdvancedFilterCreatorSelectValue.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nclass AdvancedFilterCreatorSelectValue extends PureComponent {\n constructor(props) {\n super(props);\n _defineProperty(this, \"searchTablePromise\", void 0);\n _defineProperty(this, \"tableUtils\", void 0);\n _defineProperty(this, \"updateFilterTimer\", void 0);\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 var {\n dh,\n invertSelection,\n selectedValues\n } = props;\n this.tableUtils = new TableUtils(dh);\n this.state = {\n filters: [],\n invertSelection,\n selectedValues,\n searchText: ''\n };\n }\n componentDidMount() {\n this.initSearchTable();\n }\n componentDidUpdate(prevProps, prevState) {\n var {\n invertSelection,\n selectedValues,\n table\n } = this.props;\n if (prevProps.table !== table) {\n this.initSearchTable();\n }\n if (prevProps.invertSelection !== invertSelection) {\n this.setState({\n invertSelection\n });\n }\n if (prevProps.selectedValues !== selectedValues) {\n this.setState({\n selectedValues\n });\n }\n var {\n table: searchTable,\n searchText\n } = this.state;\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 if (searchText !== prevState.searchText) {\n this.startUpdateFilterTimer();\n }\n }\n componentWillUnmount() {\n var {\n table\n } = this.state;\n if (table != null) {\n table.close();\n }\n this.searchTablePromise = undefined;\n this.stopUpdateFilterTimer();\n }\n getColumnName() {\n var {\n table\n } = this.props;\n if (table != null) {\n return table.columns[0].name;\n }\n return '';\n }\n getDisplayedValuesCount() {\n var {\n invertSelection,\n selectedValues,\n table\n } = this.state;\n if (table == null) {\n return null;\n }\n if (invertSelection) {\n return table.totalSize - selectedValues.length;\n }\n return selectedValues.length;\n }\n getDisplayedValueText() {\n var count = this.getDisplayedValuesCount();\n var {\n table\n } = this.state;\n var {\n formatter\n } = this.props;\n if (count != null && table != null) {\n var formattedCount = formatter.getFormattedString(count, 'long');\n var formattedTableSize = formatter.getFormattedString(table.totalSize, 'long');\n var prefix = '';\n if (count < 1000000) {\n prefix = 'Displaying ';\n }\n return \"\".concat(prefix).concat(formattedCount, \" of \").concat(formattedTableSize);\n }\n return null;\n }\n initSearchTable() {\n var {\n table\n } = this.props;\n if (table == null) {\n return;\n }\n var searchTablePromise = table.copy();\n this.searchTablePromise = searchTablePromise;\n this.searchTablePromise.then(searchTable => {\n if (this.searchTablePromise === searchTablePromise) {\n this.setState({\n table: searchTable\n });\n this.searchTablePromise = undefined;\n } else {\n searchTable.close();\n }\n });\n }\n handleListChange(selectedValues, invertSelection) {\n this.setState({\n selectedValues,\n invertSelection\n });\n var {\n onChange\n } = this.props;\n onChange(selectedValues, invertSelection);\n }\n handleSearchChange(event) {\n var searchText = event.target.value;\n this.setState({\n searchText\n });\n }\n handleSelectAllClick() {\n this.resetSelection(true);\n }\n handleClearAllClick() {\n this.resetSelection(false);\n }\n handleUpdateFilterTimeout() {\n this.updateFilterTimer = undefined;\n this.updateTableFilter();\n }\n resetSelection(invertSelection) {\n var selectedValues = [];\n this.setState({\n invertSelection,\n selectedValues\n });\n var {\n onChange\n } = this.props;\n onChange(selectedValues, invertSelection);\n }\n startUpdateFilterTimer() {\n this.stopUpdateFilterTimer();\n this.updateFilterTimer = setTimeout(this.handleUpdateFilterTimeout, AdvancedFilterCreatorSelectValue.searchDebounceTime);\n }\n stopUpdateFilterTimer() {\n if (this.updateFilterTimer != null) {\n clearTimeout(this.updateFilterTimer);\n this.updateFilterTimer = undefined;\n }\n }\n updateTableFilter() {\n var {\n table,\n searchText\n } = this.state;\n var {\n timeZone\n } = this.props;\n var {\n tableUtils\n } = this;\n var column = table === null || table === void 0 ? void 0 : table.columns[0];\n var filters = [];\n if (column == null) {\n return;\n }\n var error;\n if (searchText.length > 0) {\n var 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, \"~\".concat(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(column, \">=\".concat(searchText), timeZone);\n }\n if (filter != null) {\n filters.push(filter);\n } else {\n error = 'Invalid search text';\n }\n }\n this.setState({\n filters,\n error\n });\n }\n render() {\n var {\n error,\n filters,\n invertSelection,\n selectedValues,\n searchText,\n table\n } = this.state;\n var {\n dh,\n formatter,\n showSearch\n } = this.props;\n var columnName = this.getColumnName();\n var displayedValuesText = this.getDisplayedValueText();\n var placeholderText = columnName ? \"Find \".concat(columnName, \"...\") : '';\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"advanced-filter-creator-select-value\",\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: showSearch ? 'form-group' : '',\n children: [/*#__PURE__*/_jsx(\"label\", {\n htmlFor: \"advanced-filter-creator-select-value-input\",\n children: \"Select Values\"\n }), showSearch && /*#__PURE__*/_jsx(\"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 }), /*#__PURE__*/_jsx(AdvancedFilterCreatorSelectValueList, {\n dh: dh,\n table: table,\n filters: filters,\n invertSelection: invertSelection,\n selectedValues: selectedValues,\n formatter: formatter,\n onChange: this.handleListChange\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"advanced-filter-creator-select-meta-row\",\n children: [/*#__PURE__*/_jsxs(\"div\", {\n children: [/*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n onClick: this.handleSelectAllClick,\n children: \"Select All\"\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n onClick: this.handleClearAllClick,\n children: \"Clear\"\n })]\n }), /*#__PURE__*/_jsx(FadeTransition, {\n in: displayedValuesText != null,\n mountOnEnter: true,\n unmountOnExit: true,\n children: /*#__PURE__*/_jsx(\"div\", {\n className: \"row-count-info\",\n children: displayedValuesText\n })\n })]\n })]\n });\n }\n}\n_defineProperty(AdvancedFilterCreatorSelectValue, \"searchDebounceTime\", 250);\n_defineProperty(AdvancedFilterCreatorSelectValue, \"defaultProps\", {\n invertSelection: true,\n selectedValues: [],\n onChange: () => undefined,\n showSearch: true\n});\nexport default AdvancedFilterCreatorSelectValue;\n//# sourceMappingURL=AdvancedFilterCreatorSelectValue.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/* 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 { Operator as FilterOperator, assertOperatorValue as assertFilterOperatorValue } from '@deephaven/filters';\nimport { dhSortAmountDown, dhNewCircleLargeFilled } from '@deephaven/icons';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport { Button, ContextActionUtils } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport { assertNotNull, PromiseUtils } from '@deephaven/utils';\nimport { nanoid } from 'nanoid';\nimport AdvancedFilterCreatorFilterItem from \"./AdvancedFilterCreatorFilterItem.js\";\nimport AdvancedFilterCreatorSelectValue from \"./AdvancedFilterCreatorSelectValue.js\";\nimport \"./AdvancedFilterCreator.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nvar log = Log.module('AdvancedFilterCreator');\nclass AdvancedFilterCreator extends PureComponent {\n static makeFilterItem() {\n return {\n key: nanoid()\n };\n }\n constructor(props) {\n var _options$filterItems$, _options$filterItems;\n super(props);\n _defineProperty(this, \"focusTrapContainer\", void 0);\n _defineProperty(this, \"debounceTimeout\", void 0);\n _defineProperty(this, \"valuesTablePromise\", void 0);\n _defineProperty(this, \"getFilterTypes\", memoize(columnType => TableUtils.getFilterTypes(columnType)));\n this.handleAddAnd = this.handleAddAnd.bind(this);\n this.handleAddOr = this.handleAddOr.bind(this);\n this.handleChangeFilterOperator = 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 this.focusTrapContainer = /*#__PURE__*/React.createRef();\n var {\n model,\n column,\n options\n } = props;\n var {\n filterOperators,\n invertSelection,\n selectedValues\n } = options;\n\n // can be null or an empty array\n var filterItems = (_options$filterItems$ = (_options$filterItems = options.filterItems) === null || _options$filterItems === void 0 ? void 0 : _options$filterItems.map(_ref => {\n var {\n selectedType,\n value\n } = _ref;\n return {\n selectedType,\n value,\n key: nanoid()\n };\n })) !== null && _options$filterItems$ !== void 0 ? _options$filterItems$ : [];\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 var columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n var isSortable = model.isColumnSortable(columnIndex);\n this.state = {\n // Filter items\n filterItems,\n // And/Or between the filter items\n filterOperators,\n invertSelection,\n selectedValues,\n valuesTableError: null,\n valuesTable: undefined,\n isSortable\n };\n }\n componentDidMount() {\n this.initValuesTable();\n }\n componentWillUnmount() {\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 getFilterChangeHandler(index) {\n return this.handleFilterChange.bind(this, index);\n }\n getFilterDeleteHandler(index) {\n return this.handleFilterDelete.bind(this, index);\n }\n initValuesTable() {\n var {\n model,\n column\n } = this.props;\n if (!model.isValuesTableAvailable) {\n log.debug('No values table for this model, just ignore');\n return;\n }\n this.valuesTablePromise = TableUtils.makeCancelableTablePromise(model.valuesTable(column));\n this.valuesTablePromise.then(valuesTable => {\n var _valuesTable$columns$;\n if ((_valuesTable$columns$ = valuesTable.columns[0].isSortable) !== null && _valuesTable$columns$ !== void 0 ? _valuesTable$columns$ : true) {\n var sort = valuesTable.columns[0].sort().asc();\n valuesTable.applySort([sort]);\n }\n this.setState({\n valuesTable\n });\n }).catch(error => {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n log.error('Unable to open values table', error);\n this.setState({\n valuesTableError: error\n });\n });\n }\n handleFocusTrapEnd() {\n var _this$focusTrapContai, _this$focusTrapContai2;\n ((_this$focusTrapContai = this.focusTrapContainer) === null || _this$focusTrapContai === void 0 ? void 0 : (_this$focusTrapContai2 = _this$focusTrapContai.current) === null || _this$focusTrapContai2 === void 0 ? void 0 : _this$focusTrapContai2.querySelector('button,select,input,textarea')).focus();\n }\n handleFocusTrapStart() {\n var _this$focusTrapContai3, _this$focusTrapContai4;\n var inputs = (_this$focusTrapContai3 = this.focusTrapContainer) === null || _this$focusTrapContai3 === void 0 ? void 0 : (_this$focusTrapContai4 = _this$focusTrapContai3.current) === null || _this$focusTrapContai4 === void 0 ? void 0 : _this$focusTrapContai4.querySelectorAll('button,select,input,textarea');\n if (inputs && inputs.length > 0) {\n var element = inputs[inputs.length - 1];\n element.focus();\n }\n }\n handleAddAnd() {\n var {\n filterItems,\n filterOperators\n } = this.state;\n filterItems = filterItems.concat(AdvancedFilterCreator.makeFilterItem());\n filterOperators = filterOperators.concat(FilterOperator.and);\n this.setState({\n filterItems,\n filterOperators\n });\n }\n handleAddOr() {\n var {\n filterItems,\n filterOperators\n } = this.state;\n filterItems = filterItems.concat(AdvancedFilterCreator.makeFilterItem());\n filterOperators = filterOperators.concat(FilterOperator.or);\n this.setState({\n filterItems,\n filterOperators\n });\n }\n handleChangeFilterOperator(index, operator) {\n var {\n filterOperators\n } = this.state;\n filterOperators = [...filterOperators];\n assertFilterOperatorValue(operator);\n filterOperators[index] = operator;\n this.setState({\n filterOperators\n });\n this.startUpdateTimer();\n }\n handleFilterChange(filterIndex, selectedType, value) {\n var {\n filterItems\n } = this.state;\n filterItems = [...filterItems];\n var {\n key\n } = filterItems[filterIndex];\n filterItems[filterIndex] = {\n key,\n selectedType,\n value\n };\n this.setState({\n filterItems\n });\n this.startUpdateTimer();\n }\n handleFilterDelete(filterIndex) {\n var {\n filterItems,\n filterOperators\n } = this.state;\n filterItems = [...filterItems];\n filterOperators = [...filterOperators];\n if (filterIndex < filterItems.length) {\n filterItems.splice(filterIndex, 1);\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 if (filterItems.length === 0) {\n filterItems.push(AdvancedFilterCreator.makeFilterItem());\n }\n this.setState({\n filterItems,\n filterOperators\n });\n this.startUpdateTimer();\n }\n handleSelectValueChange(selectedValues, invertSelection) {\n this.setState({\n selectedValues,\n invertSelection\n });\n this.startUpdateTimer();\n }\n handleReset() {\n log.debug('Resetting Advanced Filter');\n this.setState({\n filterItems: [AdvancedFilterCreator.makeFilterItem()],\n filterOperators: [],\n selectedValues: [],\n invertSelection: true\n });\n this.startUpdateTimer();\n }\n handleSortDown(event) {\n var addToExisting = ContextActionUtils.isModifierKeyDown(event);\n this.sortTable(TableUtils.sortDirection.descending, addToExisting);\n }\n handleSortUp(event) {\n var addToExisting = ContextActionUtils.isModifierKeyDown(event);\n this.sortTable(TableUtils.sortDirection.ascending, addToExisting);\n }\n handleSubmit(event) {\n log.debug('Submitting Advanced Filter');\n this.stopUpdateTimer();\n this.sendUpdate();\n event.preventDefault();\n }\n handleDone(event) {\n log.debug('Submitting and Closing Advanced Filter');\n this.stopUpdateTimer();\n this.sendUpdate();\n var {\n onDone\n } = this.props;\n onDone();\n event.preventDefault();\n }\n handleUpdateTimeout() {\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() {\n var {\n filterItems\n } = this.state;\n if (filterItems.length === 0) {\n return false;\n }\n var filterItem = filterItems[filterItems.length - 1];\n var {\n selectedType,\n value\n } = filterItem;\n return selectedType != null && selectedType.length > 0 && value != null && value.length > 0;\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) {\n var addToExisting = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var {\n column,\n onSortChange\n } = this.props;\n var {\n isSortable\n } = this.state;\n if (isSortable) {\n onSortChange(column, direction, addToExisting);\n }\n }\n startUpdateTimer() {\n this.stopUpdateTimer();\n this.debounceTimeout = setTimeout(this.handleUpdateTimeout, AdvancedFilterCreator.debounceFilterUpdate);\n }\n stopUpdateTimer() {\n if (this.debounceTimeout !== undefined) {\n clearTimeout(this.debounceTimeout);\n this.debounceTimeout = undefined;\n }\n }\n sendUpdate() {\n var {\n filterItems,\n filterOperators,\n invertSelection,\n selectedValues\n } = this.state;\n var {\n column,\n onFilterChange,\n model,\n tableUtils\n } = this.props;\n var {\n formatter\n } = model;\n var items = filterItems.filter(_ref2 => {\n var {\n selectedType,\n value\n } = _ref2;\n return selectedType != null && value != null && value !== '';\n });\n var operators = filterOperators.filter((operator, i) => operator != null && filterItems[i].selectedType != null && filterItems[i].value != null && filterItems[i].value !== '').slice(0, items.length - 1);\n // slice last operator, user may have set an operator but not a value\n\n var options = {\n filterItems: items,\n filterOperators: operators,\n invertSelection,\n selectedValues\n };\n var filter = tableUtils.makeAdvancedFilter(column, options, formatter.timeZone);\n onFilterChange(column, filter, options);\n }\n render() {\n var _this = this;\n var {\n column,\n model,\n sortDirection,\n formatter,\n tableUtils\n } = this.props;\n var {\n filterItems,\n filterOperators,\n invertSelection,\n selectedValues,\n valuesTable,\n valuesTableError,\n isSortable\n } = this.state;\n var {\n dh,\n isValuesTableAvailable\n } = model;\n var isBoolean = TableUtils.isBooleanType(column.type);\n var isDateType = TableUtils.isDateType(column.type);\n var filterTypes = this.getFilterTypes(column.type);\n var columnType = column.type.substring(column.type.lastIndexOf('.') + 1);\n var filterItemElements = [];\n if (!isBoolean && filterTypes.length) {\n var _loop = function _loop(i) {\n var filterItem = filterItems[i];\n var {\n key,\n selectedType,\n value\n } = filterItem;\n var element = /*#__PURE__*/_jsx(AdvancedFilterCreatorFilterItem, {\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 }, key);\n filterItemElements.push(element);\n if (i < filterOperators.length) {\n var filterOperator = filterOperators[i];\n var isAndFilter = filterOperator === FilterOperator.and;\n var operatorElement = /*#__PURE__*/_jsxs(\"div\", {\n className: \"form-row justify-content-end advanced-filter-creator-filter-operator\",\n children: [/*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: classNames('filter-operator', {\n active: isAndFilter\n }),\n onClick: () => _this.handleChangeFilterOperator(i, FilterOperator.and),\n children: \"AND\"\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: classNames('filter-operator', {\n active: !isAndFilter\n }),\n onClick: () => _this.handleChangeFilterOperator(i, FilterOperator.or),\n children: \"OR\"\n })]\n }, \"filterOperator\".concat(key));\n filterItemElements.push(operatorElement);\n }\n };\n for (var i = 0; i < filterItems.length; i += 1) {\n _loop(i);\n }\n }\n var showAddFilterItem = this.shouldShowAddFilter();\n var addFilterItem = /*#__PURE__*/_jsxs(\"div\", {\n className: classNames('form-row justify-content-end add-filter-item', {\n hidden: !showAddFilterItem\n }),\n children: [/*#__PURE__*/_jsx(\"span\", {\n className: \"text-muted\",\n children: /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: dhNewCircleLargeFilled\n })\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: \"btn-filter-item\",\n onClick: this.handleAddAnd,\n disabled: !showAddFilterItem,\n tooltip: \"Add filter with AND\",\n children: \"AND\"\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: \"btn-filter-item\",\n onClick: this.handleAddOr,\n disabled: !showAddFilterItem,\n tooltip: \"Add filter with OR\",\n children: \"OR\"\n })]\n }, \"addFilterItem\");\n filterItemElements.push(addFilterItem);\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"advanced-filter-creator\",\n role: \"presentation\",\n children: [/*#__PURE__*/_jsx(\"div\", {\n tabIndex: 0,\n onFocus: this.handleFocusTrapStart\n }), /*#__PURE__*/_jsxs(\"form\", {\n onSubmit: this.handleSubmit,\n ref: this.focusTrapContainer,\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"title-bar\",\n children: [/*#__PURE__*/_jsx(\"h6\", {\n className: \"advanced-filter-title\",\n children: \"Advanced Filters\"\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"advanced-filter-menu-buttons\",\n children: [/*#__PURE__*/_jsx(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: isSortable ? \"Sort \".concat(column.name, \" Descending\") : 'Not sortable',\n disabled: !isSortable\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: classNames('sort-operator', {\n active: sortDirection === TableUtils.sortDirection.ascending\n }),\n onClick: this.handleSortUp,\n icon: /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: dhSortAmountDown,\n rotation: 180\n }),\n tooltip: isSortable ? \"Sort \".concat(column.name, \" Ascending\") : 'Not sortable',\n disabled: !isSortable\n })]\n })]\n }), /*#__PURE__*/_jsx(\"hr\", {}), /*#__PURE__*/_jsxs(\"div\", {\n className: \"advanced-filter-column-name\",\n children: [column.name, \"\\xA0\", /*#__PURE__*/_jsxs(\"span\", {\n className: \"column-type\",\n children: [\"(\", columnType, \")\"]\n })]\n }), filterItemElements, isValuesTableAvailable && valuesTableError == null && /*#__PURE__*/_jsxs(_Fragment, {\n children: [!isBoolean && /*#__PURE__*/_jsx(\"hr\", {}), /*#__PURE__*/_jsx(\"div\", {\n className: \"form-group\",\n children: /*#__PURE__*/_jsx(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 })]\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"form-row justify-content-end\",\n children: [/*#__PURE__*/_jsx(Button, {\n kind: \"secondary\",\n className: \"mr-2\",\n onClick: this.handleReset,\n children: \"Reset\"\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"primary\",\n onClick: this.handleDone,\n children: \"Done\"\n })]\n })]\n }), /*#__PURE__*/_jsx(\"div\", {\n tabIndex: 0,\n onFocus: this.handleFocusTrapEnd\n })]\n });\n }\n}\n_defineProperty(AdvancedFilterCreator, \"debounceFilterUpdate\", 250);\n_defineProperty(AdvancedFilterCreator, \"defaultProps\", {\n options: {\n filterItems: null,\n filterOperators: null,\n invertSelection: true,\n selectedValues: []\n },\n sortDirection: null\n});\nexport default AdvancedFilterCreator;\n//# sourceMappingURL=AdvancedFilterCreator.js.map","import { getConditionDBString, getStyleDBString } from \"./ConditionalFormattingUtils.js\"; // Conditional formatting API utils in a separate file\n// to make ConditionalFormattingUtils.ts easier to test.\n// https://github.com/facebook/jest/issues/936#issuecomment-545080082\nexport function makeTernaryFormatRule(config, prevRule) {\n var styleDBString = getStyleDBString(config);\n if (styleDBString === undefined) {\n return undefined;\n }\n var conditionDBString = getConditionDBString(config);\n return \"\".concat(conditionDBString, \" ? \").concat(styleDBString, \" : \").concat(prevRule);\n}\nexport function makeRowFormatColumn(dh, rule) {\n return dh.Column.formatRowColor(rule);\n}\nexport function makeColumnFormatColumn(col, rule) {\n return col.formatColor(rule);\n}\n//# sourceMappingURL=ConditionalFormattingAPIUtils.js.map","import Log from '@deephaven/log';\nimport { DateUtils, TableUtils } from '@deephaven/jsapi-utils';\nimport { makeColumnFormatColumn, makeRowFormatColumn, makeTernaryFormatRule } from \"./ConditionalFormattingAPIUtils.js\";\nvar log = Log.module('ConditionalFormattingUtils');\nexport var FormatterType;\n(function (FormatterType) {\n FormatterType[\"CONDITIONAL\"] = \"conditional\";\n FormatterType[\"ROWS\"] = \"rows\";\n})(FormatterType || (FormatterType = {}));\nexport var NumberCondition;\n(function (NumberCondition) {\n NumberCondition[\"IS_EQUAL\"] = \"is-equal\";\n NumberCondition[\"IS_NOT_EQUAL\"] = \"is-not-equal\";\n NumberCondition[\"IS_BETWEEN\"] = \"is-between\";\n NumberCondition[\"GREATER_THAN\"] = \"greater-than\";\n NumberCondition[\"GREATER_THAN_OR_EQUAL\"] = \"greater-than-or-equal\";\n NumberCondition[\"LESS_THAN\"] = \"less-than\";\n NumberCondition[\"LESS_THAN_OR_EQUAL\"] = \"less-than-or-equal\";\n NumberCondition[\"IS_NULL\"] = \"is-null\";\n NumberCondition[\"IS_NOT_NULL\"] = \"is-not-null\";\n})(NumberCondition || (NumberCondition = {}));\nexport var StringCondition;\n(function (StringCondition) {\n StringCondition[\"IS_EXACTLY\"] = \"is-exactly\";\n StringCondition[\"IS_NOT_EXACTLY\"] = \"is-not-exactly\";\n StringCondition[\"CONTAINS\"] = \"contains\";\n StringCondition[\"DOES_NOT_CONTAIN\"] = \"does-not-contain\";\n StringCondition[\"STARTS_WITH\"] = \"starts-with\";\n StringCondition[\"ENDS_WITH\"] = \"ends-with\";\n StringCondition[\"IS_NULL\"] = \"is-null\";\n StringCondition[\"IS_NOT_NULL\"] = \"is-not-null\";\n})(StringCondition || (StringCondition = {}));\nexport var DateCondition;\n(function (DateCondition) {\n DateCondition[\"IS_EXACTLY\"] = \"is-exactly\";\n DateCondition[\"IS_NOT_EXACTLY\"] = \"is-not-exactly\";\n DateCondition[\"IS_BEFORE\"] = \"is-before\";\n DateCondition[\"IS_BEFORE_OR_EQUAL\"] = \"is-before-or-equal\";\n DateCondition[\"IS_AFTER\"] = \"is-after\";\n DateCondition[\"IS_AFTER_OR_EQUAL\"] = \"is-after-or-equal\";\n DateCondition[\"IS_NULL\"] = \"is-null\";\n DateCondition[\"IS_NOT_NULL\"] = \"is-not-null\";\n})(DateCondition || (DateCondition = {}));\nexport var BooleanCondition;\n(function (BooleanCondition) {\n BooleanCondition[\"IS_TRUE\"] = \"is-true\";\n BooleanCondition[\"IS_FALSE\"] = \"is-false\";\n BooleanCondition[\"IS_NULL\"] = \"is-null\";\n BooleanCondition[\"IS_NOT_NULL\"] = \"is-not-null\";\n})(BooleanCondition || (BooleanCondition = {}));\nexport var CharCondition;\n(function (CharCondition) {\n CharCondition[\"IS_EQUAL\"] = \"is-equal\";\n CharCondition[\"IS_NOT_EQUAL\"] = \"is-not-equal\";\n CharCondition[\"IS_NULL\"] = \"is-null\";\n CharCondition[\"IS_NOT_NULL\"] = \"is-not-null\";\n})(CharCondition || (CharCondition = {}));\nexport var FormatStyleType;\n(function (FormatStyleType) {\n FormatStyleType[\"NO_FORMATTING\"] = \"no-formatting\";\n FormatStyleType[\"POSITIVE\"] = \"positive\";\n FormatStyleType[\"NEGATIVE\"] = \"negative\";\n FormatStyleType[\"WARN\"] = \"warn\";\n FormatStyleType[\"NEUTRAL\"] = \"neutral\";\n FormatStyleType[\"ACCENT_1\"] = \"accent-1\";\n FormatStyleType[\"ACCENT_2\"] = \"accent-2\";\n FormatStyleType[\"CUSTOM\"] = \"custom\";\n})(FormatStyleType || (FormatStyleType = {}));\nexport function getLabelForStyleType(option) {\n switch (option) {\n case FormatStyleType.NO_FORMATTING:\n return 'No formatting';\n case FormatStyleType.POSITIVE:\n return 'Positive';\n case FormatStyleType.NEGATIVE:\n return 'Negative';\n case FormatStyleType.WARN:\n return 'Warn';\n case FormatStyleType.NEUTRAL:\n return 'Neutral';\n case FormatStyleType.ACCENT_1:\n return 'Accent 1';\n case FormatStyleType.ACCENT_2:\n return 'Accent 2';\n case FormatStyleType.CUSTOM:\n return 'Custom...';\n }\n}\nexport function getBackgroundForStyleConfig(config) {\n var {\n type,\n customConfig\n } = config;\n switch (type) {\n case FormatStyleType.NO_FORMATTING:\n return undefined;\n case FormatStyleType.POSITIVE:\n return '#9fde6f';\n case FormatStyleType.NEGATIVE:\n return '#ff6087';\n case FormatStyleType.WARN:\n return '#f67f40';\n case FormatStyleType.NEUTRAL:\n return '#ffd95c';\n case FormatStyleType.ACCENT_1:\n return '#78dce8';\n case FormatStyleType.ACCENT_2:\n return '#ab9bf5';\n case FormatStyleType.CUSTOM:\n return customConfig === null || customConfig === void 0 ? void 0 : customConfig.background;\n default:\n return undefined;\n }\n}\nexport function getColorForStyleConfig(config) {\n var {\n type,\n customConfig\n } = config;\n switch (type) {\n case FormatStyleType.NO_FORMATTING:\n return undefined;\n case FormatStyleType.POSITIVE:\n return '#526a3f';\n case FormatStyleType.NEGATIVE:\n return '#802f44';\n case FormatStyleType.WARN:\n return '#663318';\n case FormatStyleType.NEUTRAL:\n return '#63562b';\n case FormatStyleType.ACCENT_1:\n return '#3f6469';\n case FormatStyleType.ACCENT_2:\n return '#554d72';\n case FormatStyleType.CUSTOM:\n return customConfig === null || customConfig === void 0 ? void 0 : customConfig.color;\n default:\n return undefined;\n }\n}\nexport function getStyleDBString(config) {\n var color = getColorForStyleConfig(config.style);\n var bg = getBackgroundForStyleConfig(config.style);\n if (color === undefined || bg === undefined) {\n return undefined;\n }\n return \"bgfg(`\".concat(bg, \"`, `\").concat(color, \"`)\");\n}\nfunction getNumberConditionText(config) {\n var {\n column,\n value,\n start,\n end\n } = config;\n return getTextForNumberCondition(column.name, config.condition, value, start, end);\n}\nfunction getStringConditionText(config) {\n var {\n column,\n value\n } = config;\n return getTextForStringCondition(column.name, config.condition, value);\n}\nfunction getDateConditionText(config) {\n var {\n column,\n value\n } = config;\n return getTextForDateCondition(column.name, config.condition, value);\n}\nfunction getBooleanConditionText(config) {\n var {\n column\n } = config;\n return getTextForBooleanCondition(column.name, config.condition);\n}\nfunction getCharConditionText(config) {\n var {\n column,\n value\n } = config;\n return getTextForCharCondition(column.name, config.condition, value);\n}\nexport function getConditionDBString(config) {\n var {\n column\n } = config;\n if (TableUtils.isNumberType(column.type)) {\n return getNumberConditionText(config);\n }\n if (TableUtils.isCharType(column.type)) {\n return getCharConditionText(config);\n }\n if (TableUtils.isStringType(column.type)) {\n return getStringConditionText(config);\n }\n if (TableUtils.isDateType(column.type)) {\n return getDateConditionText(config);\n }\n if (TableUtils.isBooleanType(column.type)) {\n return getBooleanConditionText(config);\n }\n throw new Error('Invalid column type');\n}\nexport function getLabelForNumberCondition(condition) {\n switch (condition) {\n case NumberCondition.IS_EQUAL:\n return 'is equal to';\n case NumberCondition.IS_NOT_EQUAL:\n return 'is not equal to';\n case NumberCondition.IS_BETWEEN:\n return 'is between';\n case NumberCondition.GREATER_THAN:\n return 'greater than';\n case NumberCondition.GREATER_THAN_OR_EQUAL:\n return 'greater than or equal to';\n case NumberCondition.LESS_THAN:\n return 'less than';\n case NumberCondition.LESS_THAN_OR_EQUAL:\n return 'less than or equal to';\n case NumberCondition.IS_NULL:\n return 'is null';\n case NumberCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\nexport function getLabelForStringCondition(condition) {\n switch (condition) {\n case StringCondition.IS_EXACTLY:\n return 'is exactly';\n case StringCondition.IS_NOT_EXACTLY:\n return 'is not exactly';\n case StringCondition.CONTAINS:\n return 'contains';\n case StringCondition.DOES_NOT_CONTAIN:\n return 'does not contain';\n case StringCondition.STARTS_WITH:\n return 'starts with';\n case StringCondition.ENDS_WITH:\n return 'ends with';\n case StringCondition.IS_NULL:\n return 'is null';\n case StringCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\nexport function getLabelForDateCondition(condition) {\n switch (condition) {\n case DateCondition.IS_EXACTLY:\n return 'is';\n case DateCondition.IS_NOT_EXACTLY:\n return 'is not';\n case DateCondition.IS_BEFORE:\n return 'is before';\n case DateCondition.IS_BEFORE_OR_EQUAL:\n return 'is before or equal';\n case DateCondition.IS_AFTER:\n return 'is after';\n case DateCondition.IS_AFTER_OR_EQUAL:\n return 'is after or equal';\n case DateCondition.IS_NULL:\n return 'is null';\n case DateCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\nexport function getLabelForBooleanCondition(condition) {\n switch (condition) {\n case BooleanCondition.IS_TRUE:\n return 'is true';\n case BooleanCondition.IS_FALSE:\n return 'is false';\n case BooleanCondition.IS_NULL:\n return 'is null';\n case BooleanCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\nexport function getLabelForCharCondition(condition) {\n switch (condition) {\n case CharCondition.IS_EQUAL:\n return 'is';\n case CharCondition.IS_NOT_EQUAL:\n return 'is not';\n case CharCondition.IS_NULL:\n return 'is null';\n case CharCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\nexport function getDefaultConditionForType(columnType) {\n if (TableUtils.isNumberType(columnType)) {\n return NumberCondition.IS_EQUAL;\n }\n if (TableUtils.isCharType(columnType)) {\n return CharCondition.IS_EQUAL;\n }\n if (TableUtils.isStringType(columnType)) {\n return StringCondition.IS_EXACTLY;\n }\n if (TableUtils.isDateType(columnType)) {\n return DateCondition.IS_EXACTLY;\n }\n if (TableUtils.isBooleanType(columnType)) {\n return BooleanCondition.IS_TRUE;\n }\n throw new Error('Invalid column type');\n}\nexport function getDefaultValueForType(columnType) {\n if (TableUtils.isCharType(columnType)) {\n return '';\n }\n if (TableUtils.isStringType(columnType)) {\n return '';\n }\n return undefined;\n}\nexport function getConditionConfig(config) {\n var {\n condition,\n value,\n start,\n end\n } = config;\n return {\n condition,\n value,\n start,\n end\n };\n}\nexport function getDefaultConditionConfigForType(type) {\n return {\n condition: getDefaultConditionForType(type),\n value: getDefaultValueForType(type),\n start: undefined,\n end: undefined\n };\n}\nexport function getDefaultStyleConfig() {\n return {\n type: FormatStyleType.NO_FORMATTING\n };\n}\nfunction getShortLabelForStringCondition(condition) {\n switch (condition) {\n case StringCondition.IS_EXACTLY:\n return '==';\n case StringCondition.IS_NOT_EXACTLY:\n return '!=';\n case StringCondition.CONTAINS:\n return 'contains';\n case StringCondition.DOES_NOT_CONTAIN:\n return 'does not contain';\n case StringCondition.STARTS_WITH:\n return 'starts with';\n case StringCondition.ENDS_WITH:\n return 'ends with';\n case StringCondition.IS_NULL:\n return 'is null';\n case StringCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\nfunction getShortLabelForDateCondition(condition) {\n switch (condition) {\n case DateCondition.IS_EXACTLY:\n return '==';\n case DateCondition.IS_NOT_EXACTLY:\n return '!=';\n case DateCondition.IS_BEFORE:\n return '<';\n case DateCondition.IS_BEFORE_OR_EQUAL:\n return '<=';\n case DateCondition.IS_AFTER:\n return '>';\n case DateCondition.IS_AFTER_OR_EQUAL:\n return '>=';\n case DateCondition.IS_NULL:\n return 'is null';\n case DateCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\nfunction getShortLabelForBooleanCondition(condition) {\n switch (condition) {\n case BooleanCondition.IS_TRUE:\n return 'is true';\n case BooleanCondition.IS_FALSE:\n return 'is false';\n case BooleanCondition.IS_NULL:\n return 'is null';\n case BooleanCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\nfunction getShortLabelForCharCondition(condition) {\n switch (condition) {\n case CharCondition.IS_EQUAL:\n return '==';\n case CharCondition.IS_NOT_EQUAL:\n return '!=';\n case CharCondition.IS_NULL:\n return 'is null';\n case CharCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\nexport function getShortLabelForNumberCondition(condition) {\n switch (condition) {\n case NumberCondition.IS_EQUAL:\n return '==';\n case NumberCondition.IS_NOT_EQUAL:\n return '!=';\n case NumberCondition.IS_BETWEEN:\n return '==';\n case NumberCondition.GREATER_THAN:\n return '>';\n case NumberCondition.GREATER_THAN_OR_EQUAL:\n return '>=';\n case NumberCondition.LESS_THAN:\n return '<';\n case NumberCondition.LESS_THAN_OR_EQUAL:\n return '<=';\n case NumberCondition.IS_NULL:\n return 'is null';\n case NumberCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\nexport function getTextForNumberCondition(columnName, condition, value, start, end) {\n switch (condition) {\n case NumberCondition.IS_EQUAL:\n return \"\".concat(columnName, \" == \").concat(value);\n case NumberCondition.IS_NOT_EQUAL:\n return \"\".concat(columnName, \" != \").concat(value);\n case NumberCondition.IS_BETWEEN:\n return \"\".concat(columnName, \" > \").concat(start, \" && \").concat(columnName, \" < \").concat(end);\n case NumberCondition.GREATER_THAN:\n return \"\".concat(columnName, \" > \").concat(value);\n case NumberCondition.GREATER_THAN_OR_EQUAL:\n return \"\".concat(columnName, \" >= \").concat(value);\n case NumberCondition.LESS_THAN:\n return \"\".concat(columnName, \" < \").concat(value);\n case NumberCondition.LESS_THAN_OR_EQUAL:\n return \"\".concat(columnName, \" <= \").concat(value);\n case NumberCondition.IS_NULL:\n return \"\".concat(columnName, \" == null\");\n case NumberCondition.IS_NOT_NULL:\n return \"\".concat(columnName, \" != null\");\n }\n}\nexport function getTextForStringCondition(columnName, condition, value) {\n switch (condition) {\n case StringCondition.IS_EXACTLY:\n return \"\".concat(columnName, \" == \\\"\").concat(value, \"\\\"\");\n case StringCondition.IS_NOT_EXACTLY:\n return \"\".concat(columnName, \" != \\\"\").concat(value, \"\\\"\");\n case StringCondition.CONTAINS:\n return \"\".concat(columnName, \" != null && \").concat(columnName, \".contains(\\\"\").concat(value, \"\\\")\");\n case StringCondition.DOES_NOT_CONTAIN:\n return \"\".concat(columnName, \" != null && !\").concat(columnName, \".contains(\\\"\").concat(value, \"\\\")\");\n case StringCondition.STARTS_WITH:\n return \"\".concat(columnName, \" != null && \").concat(columnName, \".startsWith(\\\"\").concat(value, \"\\\")\");\n case StringCondition.ENDS_WITH:\n return \"\".concat(columnName, \" != null && \").concat(columnName, \".endsWith(\\\"\").concat(value, \"\\\")\");\n case StringCondition.IS_NULL:\n return \"\".concat(columnName, \" == null\");\n case StringCondition.IS_NOT_NULL:\n return \"\".concat(columnName, \" != null\");\n }\n}\nexport function getTextForDateCondition(columnName, condition, value) {\n switch (condition) {\n case DateCondition.IS_EXACTLY:\n return \"\".concat(columnName, \" == convertDateTime(\\\"\").concat(value, \"\\\")\");\n case DateCondition.IS_NOT_EXACTLY:\n return \"\".concat(columnName, \" != convertDateTime(`\").concat(value, \"`)\");\n case DateCondition.IS_BEFORE:\n return \"\".concat(columnName, \" < convertDateTime(`\").concat(value, \"`)\");\n case DateCondition.IS_BEFORE_OR_EQUAL:\n return \"\".concat(columnName, \" <= convertDateTime(\\\"\").concat(value, \"\\\")\");\n case DateCondition.IS_AFTER:\n return \"\".concat(columnName, \" > convertDateTime(`\").concat(value, \"`)\");\n case DateCondition.IS_AFTER_OR_EQUAL:\n return \"\".concat(columnName, \" >= convertDateTime(`\").concat(value, \"`)\");\n case DateCondition.IS_NULL:\n return \"\".concat(columnName, \" == null\");\n case DateCondition.IS_NOT_NULL:\n return \"\".concat(columnName, \" != null\");\n }\n}\nexport function getTextForBooleanCondition(columnName, condition) {\n switch (condition) {\n case BooleanCondition.IS_TRUE:\n return \"\".concat(columnName, \" == true\");\n case BooleanCondition.IS_FALSE:\n return \"\".concat(columnName, \" == false\");\n case BooleanCondition.IS_NULL:\n return \"\".concat(columnName, \" == null\");\n case BooleanCondition.IS_NOT_NULL:\n return \"\".concat(columnName, \" != null\");\n }\n}\nexport function getTextForCharCondition(columnName, condition, value) {\n switch (condition) {\n case CharCondition.IS_EQUAL:\n return \"\".concat(columnName, \" == '\").concat(value, \"'\");\n case CharCondition.IS_NOT_EQUAL:\n return \"\".concat(columnName, \" != '\").concat(value, \"'\");\n case CharCondition.IS_NULL:\n return \"isNull(\".concat(columnName, \")\");\n case CharCondition.IS_NOT_NULL:\n return \"!isNull(\".concat(columnName, \")\");\n }\n}\nexport function getShortLabelForConditionType(columnType, condition) {\n if (TableUtils.isNumberType(columnType)) {\n return getShortLabelForNumberCondition(condition);\n }\n if (TableUtils.isCharType(columnType)) {\n return getShortLabelForCharCondition(condition);\n }\n if (TableUtils.isStringType(columnType)) {\n return getShortLabelForStringCondition(condition);\n }\n if (TableUtils.isDateType(columnType)) {\n return getShortLabelForDateCondition(condition);\n }\n if (TableUtils.isBooleanType(columnType)) {\n return getShortLabelForBooleanCondition(condition);\n }\n throw new Error('Invalid column type');\n}\n\n/**\n * Get format columns array for the given columns and formatting rules\n * @param columns Available columns\n * @param rules Formatting rules to build the format columns from\n * @returns Array of format columns\n */\nexport function getFormatColumns(dh, columns, rules) {\n if (rules === undefined) {\n log.debug(\"no rules passed.\");\n return [];\n }\n var result = [];\n // There can be only one row format custom column\n // and multiple column format custom columns (one per column)\n var rowFormatConfig;\n var columnFormatConfigMap = new Map();\n rules.forEach(_ref => {\n var _ref3;\n var {\n config,\n type: formatterType\n } = _ref;\n var {\n column\n } = config;\n // Check both name and type because the type can change\n var col = columns.find(_ref2 => {\n var {\n name,\n type\n } = _ref2;\n return name === column.name && type === column.type;\n });\n if (col === undefined) {\n log.debug(\"Column \".concat(column.name, \":\").concat(column.type, \" not found. Ignoring format rule.\"), config);\n return;\n }\n // Stack ternary format conditions by column\n var [prevRule, prevFormatColumn] = (_ref3 = formatterType === FormatterType.CONDITIONAL ? columnFormatConfigMap.get(col.name) : rowFormatConfig) !== null && _ref3 !== void 0 ? _ref3 : ['null', undefined];\n var rule = makeTernaryFormatRule(config, prevRule);\n if (rule === undefined) {\n log.debug(\"Ignoring format rule.\", config);\n return;\n }\n // Replace existing formatColumn with the new stacked format\n var index = prevFormatColumn === undefined ? -1 : result.indexOf(prevFormatColumn);\n if (index > -1) {\n result.splice(index, 1);\n }\n var formatColumn = formatterType === FormatterType.CONDITIONAL ? makeColumnFormatColumn(col, rule) : makeRowFormatColumn(dh, rule);\n result.push(formatColumn);\n if (formatterType === FormatterType.CONDITIONAL) {\n columnFormatConfigMap.set(col.name, [rule, formatColumn]);\n } else {\n rowFormatConfig = [rule, formatColumn];\n }\n });\n return result;\n}\n\n/**\n * Validate that a given date condition + value pair is valid.\n * @param condition\n * @param value\n */\nexport function isDateConditionValid(dh, condition, value) {\n switch (condition) {\n case DateCondition.IS_NULL:\n case DateCondition.IS_NOT_NULL:\n return true;\n default:\n {\n var [dateTimeString, ...rest] = (value !== null && value !== void 0 ? value : '').split(' ');\n // Reconstitute all tokens after the first ' ' in case the user included garbage data at the end\n // e.g. '2020-01-01 NY blah'\n var tzCode = rest.join(' ');\n try {\n DateUtils.parseDateTimeString(dateTimeString);\n } catch (e) {\n log.debug('Invalid datetime string', dateTimeString);\n return false;\n }\n try {\n dh.i18n.TimeZone.getTimeZone(tzCode);\n } catch (e) {\n log.debug('Invalid timezone string', tzCode);\n return false;\n }\n return true;\n }\n }\n}\nexport function isSupportedColumn(_ref4) {\n var {\n type\n } = _ref4;\n return TableUtils.isNumberType(type) || TableUtils.isCharType(type) || TableUtils.isStringType(type) || TableUtils.isDateType(type) || TableUtils.isBooleanType(type);\n}\n//# sourceMappingURL=ConditionalFormattingUtils.js.map","import React from 'react';\nimport classNames from 'classnames';\nimport { CSSTransition } from 'react-transition-group';\nimport { ThemeExport } from '@deephaven/components';\nimport \"./IrisGridBottomBar.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function IrisGridBottomBar(_ref) {\n var {\n animation = 'iris-grid-bottom-bar-slide-up',\n children,\n className,\n isShown,\n onClick,\n onEntering,\n onEntered,\n onExiting,\n onExited\n } = _ref;\n return /*#__PURE__*/_jsx(CSSTransition, {\n in: isShown,\n timeout: ThemeExport.transitionMs,\n classNames: animation,\n onEntering: onEntering,\n onEntered: onEntered,\n onExiting: onExiting,\n onExited: onExited,\n mountOnEnter: true,\n unmountOnExit: true,\n children: /*#__PURE__*/_jsx(\"div\", {\n className: classNames('iris-grid-bottom-bar', className),\n role: \"presentation\",\n onClick: onClick,\n onKeyPress: onClick,\n children: children\n })\n });\n}\nexport default IrisGridBottomBar;\n//# sourceMappingURL=IrisGridBottomBar.js.map","import React, { useEffect, useMemo, useRef, useState } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsPass, vsWarning } from '@deephaven/icons';\nimport { Button, LoadingSpinner } from '@deephaven/components';\nimport { usePrevious } from '@deephaven/react-hooks';\nimport IrisGridBottomBar from \"./IrisGridBottomBar.js\";\nimport \"./PendingDataBottomBar.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar HIDE_TIMEOUT = 3000;\nvar MAX_NUMBER_ROWS_SHOWN = 5;\nexport function PendingDataBottomBar(_ref) {\n var {\n isSaving = false,\n onSave,\n onDiscard,\n discardTooltip,\n saveTooltip,\n error,\n pendingDataErrors,\n pendingDataMap,\n onEntering,\n onEntered,\n onExiting,\n onExited: _onExited\n } = _ref;\n var [isSuccessShown, setIsSuccessShown] = useState(false);\n var [wasSuccessShown, setWasSuccessShown] = useState(false);\n var successTimeout = useRef();\n var prevIsSaving = usePrevious(isSaving);\n var errorMessage = useMemo(() => {\n if (pendingDataErrors.size === 0) {\n return error;\n }\n if (pendingDataErrors.size <= MAX_NUMBER_ROWS_SHOWN) {\n return \"Key can't be empty (on pending row\".concat(pendingDataErrors.size > 1 ? 's' : '', \" \").concat(Array.from(pendingDataErrors.keys()).join(', ').trim(), \")\");\n }\n return \"Key can't be empty (on \".concat(pendingDataErrors.size, \" rows)\");\n }, [error, pendingDataErrors]);\n useEffect(function showSuccessMessage() {\n if (prevIsSaving != null && prevIsSaving && !isSaving && errorMessage == null) {\n setIsSuccessShown(true);\n setWasSuccessShown(true);\n successTimeout.current = setTimeout(() => {\n setIsSuccessShown(false);\n }, HIDE_TIMEOUT);\n }\n }, [errorMessage, isSaving, prevIsSaving]);\n useEffect(function hideSuccessMessage() {\n if (successTimeout.current && pendingDataMap.size > 0) {\n // A change just occurred while the success message was still being shown, just hide the success message\n clearTimeout(successTimeout.current);\n setIsSuccessShown(false);\n setWasSuccessShown(false);\n }\n }, [pendingDataMap]);\n useEffect(function cleanupTimeout() {\n return () => successTimeout.current ? clearTimeout(successTimeout.current) : undefined;\n }, []);\n var pendingRowCount = pendingDataMap.size;\n var commitIcon;\n if (isSaving) {\n commitIcon = /*#__PURE__*/_jsx(LoadingSpinner, {\n className: \"loading-spinner-vertical-align\"\n });\n } else if (wasSuccessShown) {\n commitIcon = vsPass;\n }\n return /*#__PURE__*/_jsxs(IrisGridBottomBar, {\n className: \"pending-data-bottom-bar\",\n isShown: pendingRowCount > 0 || isSuccessShown || errorMessage != null,\n onEntering: onEntering,\n onEntered: onEntered,\n onExiting: onExiting,\n onExited: () => {\n setWasSuccessShown(false);\n if (_onExited) {\n _onExited();\n }\n },\n children: [errorMessage != null && errorMessage !== '' && /*#__PURE__*/_jsxs(\"div\", {\n className: \"error-message\",\n children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsWarning\n }), /*#__PURE__*/_jsx(\"span\", {\n children: \"\".concat(errorMessage)\n })]\n }), (errorMessage == null || errorMessage === '') && /*#__PURE__*/_jsx(\"div\", {\n className: \"status-message\",\n children: pendingRowCount > 0 && /*#__PURE__*/_jsx(\"span\", {\n children: \"\".concat(pendingRowCount, \" row\").concat(pendingRowCount > 1 ? 's' : '', \" pending\")\n })\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"buttons-container\",\n children: [!isSaving && !wasSuccessShown && /*#__PURE__*/_jsx(Button, {\n kind: \"secondary\",\n onClick: onDiscard,\n tooltip: discardTooltip,\n children: \"Discard\"\n }), /*#__PURE__*/_jsxs(Button, {\n kind: wasSuccessShown ? 'success' : 'primary',\n onClick: onSave,\n icon: commitIcon,\n disabled: isSaving || wasSuccessShown || errorMessage != null,\n tooltip: saveTooltip,\n children: [isSaving && \"Committing...\", !isSaving && wasSuccessShown && \"Success\", !isSaving && !wasSuccessShown && \"Commit\"]\n })]\n })]\n });\n}\nexport default PendingDataBottomBar;\n//# sourceMappingURL=PendingDataBottomBar.js.map","function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport { Button, FadeTransition, LoadingSpinner } from '@deephaven/components';\nimport { GridRange, GridUtils } from '@deephaven/grid';\nimport { CanceledPromiseError, copyToClipboard, PromiseUtils } from '@deephaven/utils';\nimport Log from '@deephaven/log';\nimport IrisGridUtils from \"./IrisGridUtils.js\";\nimport IrisGridBottomBar from \"./IrisGridBottomBar.js\";\nimport \"./IrisGridCopyHandler.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('IrisGridCopyHandler');\nfunction isCopyRangesOperation(copyOperation) {\n return copyOperation.ranges != null;\n}\nfunction isCopyHeaderOperation(copyOperation) {\n return copyOperation.columnIndex != null;\n}\n/**\n * Component for handling copying of data from the Iris Grid.\n * - Prompts if necessary (large amount of rows copied)\n * - Tries to async copy, falls back to showing a \"Click to Copy\" button if that fails\n */\nclass IrisGridCopyHandler extends Component {\n /**\n * Different states for the current copy operation\n */\n\n static getStatusMessageText(copyState, rowCount) {\n switch (copyState) {\n case IrisGridCopyHandler.COPY_STATES.CONFIRMATION_REQUIRED:\n return \"Are you sure you want to copy \".concat(rowCount.toLocaleString(), \" rows to your clipboard?\");\n case IrisGridCopyHandler.COPY_STATES.CLICK_REQUIRED:\n return \"Fetched \".concat(rowCount.toLocaleString(), \" rows!\");\n case IrisGridCopyHandler.COPY_STATES.FETCH_ERROR:\n return 'Unable to copy data.';\n case IrisGridCopyHandler.COPY_STATES.FETCH_RANGES_IN_PROGRESS:\n return \"Fetching \".concat(rowCount.toLocaleString(), \" rows for clipboard...\");\n case IrisGridCopyHandler.COPY_STATES.FETCH_HEADER_IN_PROGRESS:\n return 'Fetching header for clipboard...';\n case IrisGridCopyHandler.COPY_STATES.DONE:\n return 'Copied to Clipboard!';\n default:\n return '';\n }\n }\n static getCopyButtonText(buttonState) {\n switch (buttonState) {\n case IrisGridCopyHandler.BUTTON_STATES.FETCH_IN_PROGRESS:\n return 'Fetching';\n case IrisGridCopyHandler.BUTTON_STATES.CLICK_TO_COPY:\n return 'Click to Copy';\n case IrisGridCopyHandler.BUTTON_STATES.RETRY:\n return 'Retry';\n default:\n return 'Copy';\n }\n }\n constructor(props) {\n super(props);\n _defineProperty(this, \"textData\", void 0);\n _defineProperty(this, \"hideTimer\", void 0);\n _defineProperty(this, \"fetchPromise\", void 0);\n this.handleBackgroundClick = this.handleBackgroundClick.bind(this);\n this.handleCancelClick = this.handleCancelClick.bind(this);\n this.handleCopyClick = this.handleCopyClick.bind(this);\n this.handleHideTimeout = this.handleHideTimeout.bind(this);\n this.state = {\n error: undefined,\n copyState: IrisGridCopyHandler.COPY_STATES.IDLE,\n buttonState: IrisGridCopyHandler.BUTTON_STATES.COPY,\n isShown: false,\n rowCount: 0\n };\n }\n componentDidMount() {\n var {\n copyOperation\n } = this.props;\n if (copyOperation != null) {\n this.startCopy();\n }\n }\n componentDidUpdate(prevProps) {\n var {\n copyOperation\n } = this.props;\n if (prevProps.copyOperation !== copyOperation) {\n this.startCopy();\n }\n }\n componentWillUnmount() {\n this.stopCopy();\n }\n startCopy() {\n log.debug2('startCopy');\n this.stopCopy();\n var {\n copyOperation\n } = this.props;\n if (copyOperation == null) {\n log.debug2('No copy operation set, cancelling out');\n this.setState({\n isShown: false\n });\n return;\n }\n var {\n error\n } = copyOperation;\n if (error != null) {\n log.debug('Showing copy error', error);\n this.setState({\n isShown: true,\n copyState: IrisGridCopyHandler.COPY_STATES.DONE,\n error\n });\n this.startHideTimer();\n return;\n }\n this.setState({\n isShown: true,\n error: undefined\n });\n if (isCopyRangesOperation(copyOperation)) {\n var {\n ranges\n } = copyOperation;\n var rowCount = GridRange.rowCount(ranges);\n this.setState({\n rowCount\n });\n if (rowCount > IrisGridCopyHandler.NO_PROMPT_THRESHOLD) {\n this.setState({\n buttonState: IrisGridCopyHandler.BUTTON_STATES.COPY,\n copyState: IrisGridCopyHandler.COPY_STATES.CONFIRMATION_REQUIRED\n });\n return;\n }\n }\n this.startFetch();\n }\n stopCopy() {\n this.textData = undefined;\n this.stopFetch();\n this.stopHideTimer();\n }\n handleBackgroundClick() {\n log.debug2('handleBackgroundClick');\n var {\n copyState\n } = this.state;\n if (copyState === IrisGridCopyHandler.COPY_STATES.DONE) {\n this.setState({\n isShown: false\n });\n }\n }\n handleCancelClick() {\n log.debug2('handleCancelClick');\n this.stopFetch();\n this.setState({\n isShown: false\n });\n }\n handleCopyClick() {\n var _this = this;\n return _asyncToGenerator(function* () {\n log.debug2('handleCopyClick');\n if (_this.textData != null) {\n try {\n yield _this.copyText(_this.textData);\n _this.showCopyDone();\n } catch (e) {\n log.error('Error copying text', e);\n _this.setState({\n error: 'Unable to copy. Verify your browser permissions.'\n });\n }\n } else {\n _this.startFetch();\n }\n })();\n }\n handleHideTimeout() {\n log.debug2('handleHideTimeout');\n this.stopHideTimer();\n this.setState({\n isShown: false\n });\n }\n copyText(text) {\n var _this2 = this;\n return _asyncToGenerator(function* () {\n log.debug2('copyText', text);\n _this2.textData = text;\n yield copyToClipboard(text);\n })();\n }\n showCopyDone() {\n this.setState({\n copyState: IrisGridCopyHandler.COPY_STATES.DONE\n });\n this.startHideTimer();\n }\n startFetch() {\n var _this3 = this;\n return _asyncToGenerator(function* () {\n _this3.stopFetch();\n var {\n model,\n copyOperation\n } = _this3.props;\n if (isCopyHeaderOperation(copyOperation)) {\n var {\n columnIndex,\n columnDepth,\n movedColumns\n } = copyOperation;\n log.debug('startFetch copyHeader', columnIndex, columnDepth);\n _this3.setState({\n buttonState: IrisGridCopyHandler.BUTTON_STATES.FETCH_IN_PROGRESS,\n copyState: IrisGridCopyHandler.COPY_STATES.FETCH_HEADER_IN_PROGRESS\n });\n var modelIndex = GridUtils.getModelIndex(columnIndex, movedColumns);\n var copyText = model.textForColumnHeader(modelIndex, columnDepth);\n if (copyText === undefined) {\n _this3.fetchPromise = undefined;\n _this3.setState({\n error: 'Invalid column header selected.',\n copyState: IrisGridCopyHandler.COPY_STATES.DONE\n });\n return;\n }\n _this3.fetchPromise = PromiseUtils.makeCancelable(copyText);\n } else {\n var {\n ranges,\n includeHeaders,\n userColumnWidths,\n movedColumns: _movedColumns,\n formatValues\n } = copyOperation;\n log.debug('startFetch copyRanges', ranges);\n _this3.setState({\n buttonState: IrisGridCopyHandler.BUTTON_STATES.FETCH_IN_PROGRESS,\n copyState: IrisGridCopyHandler.COPY_STATES.FETCH_RANGES_IN_PROGRESS\n });\n var hiddenColumns = IrisGridUtils.getHiddenColumns(userColumnWidths);\n var modelRanges = GridUtils.getModelRanges(ranges, _movedColumns);\n if (hiddenColumns.length > 0) {\n var subtractRanges = hiddenColumns.map(GridRange.makeColumn);\n modelRanges = GridRange.subtractRangesFromRanges(modelRanges, subtractRanges);\n }\n\n // Remove the hidden columns from the snapshot\n var formatValue = formatValues != null && formatValues ? (value, column) => model.displayString(value, column.type, column.name) : value => \"\".concat(value);\n _this3.fetchPromise = PromiseUtils.makeCancelable(model.textSnapshot(modelRanges, includeHeaders, formatValue));\n }\n try {\n var text = yield _this3.fetchPromise;\n _this3.fetchPromise = undefined;\n try {\n yield _this3.copyText(text);\n _this3.showCopyDone();\n } catch (e) {\n log.error('Error copying text', e);\n _this3.setState({\n buttonState: IrisGridCopyHandler.BUTTON_STATES.CLICK_TO_COPY,\n copyState: IrisGridCopyHandler.COPY_STATES.CLICK_REQUIRED\n });\n }\n } catch (e) {\n if (e instanceof CanceledPromiseError) {\n log.debug('User cancelled copy.');\n } else {\n log.error('Error fetching contents', e);\n _this3.fetchPromise = undefined;\n _this3.setState({\n buttonState: IrisGridCopyHandler.BUTTON_STATES.RETRY,\n copyState: IrisGridCopyHandler.COPY_STATES.FETCH_ERROR\n });\n }\n }\n })();\n }\n stopFetch() {\n if (this.fetchPromise) {\n log.debug2('stopFetch');\n this.fetchPromise.cancel();\n this.fetchPromise = undefined;\n }\n }\n startHideTimer() {\n this.stopHideTimer();\n this.hideTimer = setTimeout(this.handleHideTimeout, IrisGridCopyHandler.HIDE_TIMEOUT);\n }\n stopHideTimer() {\n if (this.hideTimer != null) {\n clearTimeout(this.hideTimer);\n this.hideTimer = undefined;\n }\n }\n render() {\n var {\n onEntering,\n onEntered,\n onExiting,\n onExited\n } = this.props;\n var {\n buttonState,\n copyState,\n isShown,\n rowCount,\n error\n } = this.state;\n var animation = copyState === IrisGridCopyHandler.COPY_STATES.DONE ? 'fade' : 'copy-slide-up';\n var copyButtonText = IrisGridCopyHandler.getCopyButtonText(buttonState);\n var statusMessageText = error !== null && error !== void 0 ? error : IrisGridCopyHandler.getStatusMessageText(copyState, rowCount);\n var isButtonContainerVisible = copyState !== IrisGridCopyHandler.COPY_STATES.DONE;\n var isFetching = buttonState === IrisGridCopyHandler.BUTTON_STATES.FETCH_IN_PROGRESS;\n var isDone = copyState === IrisGridCopyHandler.COPY_STATES.DONE;\n return /*#__PURE__*/_jsxs(IrisGridBottomBar, {\n animation: animation,\n isShown: isShown,\n className: classNames('iris-grid-copy-handler', {\n 'copy-done': isDone\n }),\n onClick: this.handleBackgroundClick,\n onEntering: onEntering,\n onEntered: onEntered,\n onExiting: onExiting,\n onExited: onExited,\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"status-message\",\n children: /*#__PURE__*/_jsx(\"span\", {\n children: statusMessageText\n })\n }), /*#__PURE__*/_jsx(FadeTransition, {\n in: isButtonContainerVisible,\n mountOnEnter: true,\n unmountOnExit: true,\n children: /*#__PURE__*/_jsxs(\"div\", {\n className: \"buttons-container\",\n children: [/*#__PURE__*/_jsx(\"button\", {\n type: \"button\",\n className: \"btn btn-outline-secondary btn-cancel\",\n onClick: this.handleCancelClick,\n children: \"Cancel\"\n }), /*#__PURE__*/_jsxs(Button, {\n kind: isFetching ? 'tertiary' : 'primary',\n className: classNames('btn-copy', {\n 'btn-spinner': isFetching\n }),\n onClick: this.handleCopyClick,\n disabled: isFetching,\n children: [isFetching && /*#__PURE__*/_jsx(LoadingSpinner, {\n className: \"loading-spinner-vertical-align\"\n }), copyButtonText]\n })]\n })\n })]\n });\n }\n}\n_defineProperty(IrisGridCopyHandler, \"NO_PROMPT_THRESHOLD\", 10000);\n_defineProperty(IrisGridCopyHandler, \"HIDE_TIMEOUT\", 3000);\n_defineProperty(IrisGridCopyHandler, \"COPY_STATES\", {\n // No copy operation in progress\n IDLE: 'IDLE',\n // Large copy operation, confirmation required\n CONFIRMATION_REQUIRED: 'CONFIRMATION_REQUIRED',\n // Fetch is currently in progress for copy ranges operation\n FETCH_RANGES_IN_PROGRESS: 'FETCH_RANGES_IN_PROGRESS',\n // Fetch is currently in progress for copy header operation\n FETCH_HEADER_IN_PROGRESS: 'FETCH_HEADER_IN_PROGRESS',\n // There was an error fetching the data\n FETCH_ERROR: 'FETCH_ERROR',\n // Click is required to copy\n CLICK_REQUIRED: 'CLICK_REQUIRED',\n // The copy operation is completed and successfully copied to the clipboard\n DONE: 'DONE'\n});\n_defineProperty(IrisGridCopyHandler, \"BUTTON_STATES\", {\n COPY: 'COPY',\n FETCH_IN_PROGRESS: 'FETCH_IN_PROGRESS',\n CLICK_TO_COPY: 'CLICK_TO_COPY',\n RETRY: 'RETRY'\n});\n_defineProperty(IrisGridCopyHandler, \"defaultProps\", {\n copyOperation: null,\n onEntering: () => undefined,\n onEntered: () => undefined,\n onExiting: () => undefined,\n onExited: () => undefined\n});\nexport default IrisGridCopyHandler;\n//# sourceMappingURL=IrisGridCopyHandler.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport debounce from 'lodash.debounce';\nimport { vsFilter, dhFilterFilled } from '@deephaven/icons';\nimport \"./FilterInputField.css\";\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Button } from '@deephaven/components';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n/**\n * An input field showing a input field and button.\n * Debounces changes.\n */\nclass FilterInputField extends PureComponent {\n constructor(props) {\n super(props);\n _defineProperty(this, \"inputField\", void 0);\n _defineProperty(this, \"initialValue\", void 0);\n _defineProperty(this, \"debouncedSendUpdate\", void 0);\n var {\n debounceMs\n } = props;\n this.debouncedSendUpdate = debounce(this.sendUpdate.bind(this), debounceMs);\n this.handleCancel = this.handleCancel.bind(this);\n this.handleChange = this.handleChange.bind(this);\n this.handleCommit = this.handleCommit.bind(this);\n this.handleFocus = this.handleFocus.bind(this);\n this.handleBlur = this.handleBlur.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.handleContextMenu = this.handleContextMenu.bind(this);\n this.inputField = null;\n var {\n value\n } = props;\n this.initialValue = value;\n this.state = {\n isChanged: false,\n value\n };\n }\n componentDidMount() {\n var _this$inputField;\n (_this$inputField = this.inputField) === null || _this$inputField === void 0 ? void 0 : _this$inputField.focus();\n }\n componentDidUpdate(prevProps) {\n var {\n debounceMs\n } = this.props;\n if (prevProps.debounceMs !== debounceMs) {\n this.debouncedSendUpdate.flush();\n this.debouncedSendUpdate = debounce(this.sendUpdate.bind(this), debounceMs);\n }\n }\n componentWillUnmount() {\n this.debouncedSendUpdate.cancel();\n }\n // clear filters needs to be able to reset the value externally\n // and due to the way this component handles its own debouncing\n // this was easier than moving state up.\n setValue(value) {\n this.initialValue = value;\n this.setState({\n value\n });\n }\n focus() {\n var _this$inputField2;\n (_this$inputField2 = this.inputField) === null || _this$inputField2 === void 0 ? void 0 : _this$inputField2.focus();\n }\n handleChange(event) {\n var {\n value\n } = event.target;\n this.setState({\n value,\n isChanged: true\n });\n this.debouncedSendUpdate(value);\n }\n handleCancel() {\n this.debouncedSendUpdate.cancel();\n var {\n initialValue\n } = this;\n var {\n isChanged\n } = this.state;\n if (isChanged) {\n this.sendUpdate(initialValue);\n }\n var {\n onDone\n } = this.props;\n onDone();\n }\n handleCommit() {\n var setGridFocus = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n var defocusInput = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n this.debouncedSendUpdate.flush();\n var {\n onDone\n } = this.props;\n onDone(setGridFocus, defocusInput);\n }\n handleFocus() {\n var _this$inputField3;\n (_this$inputField3 = this.inputField) === null || _this$inputField3 === void 0 ? void 0 : _this$inputField3.select();\n }\n handleBlur(event) {\n var {\n relatedTarget\n } = event;\n // handleCommit results in a call that steals focus\n if (relatedTarget != null && relatedTarget.classList.contains('context-menu-container')) {\n // input blurred by calling context-menu\n // don't set grid focus, but do null column focus\n this.handleCommit(false, true);\n } else if (relatedTarget != null && relatedTarget.classList.contains('advanced-filter-button')) {\n // blurred by clicking an advanced filter button\n // don't set grid focus, maintain focusedFilterBarColumn state\n this.handleCommit(false, false);\n } else {\n // clear both, blurred elsewhere\n this.handleCommit(true, true);\n }\n }\n handleTab() {\n var backward = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n this.debouncedSendUpdate.flush();\n var {\n onTab\n } = this.props;\n onTab(backward);\n }\n handleKeyDown(event) {\n switch (event.key) {\n case 'Escape':\n event.stopPropagation();\n event.preventDefault();\n this.handleCancel();\n break;\n case 'Enter':\n event.stopPropagation();\n event.preventDefault();\n this.handleCommit();\n break;\n case 'Tab':\n event.stopPropagation();\n event.preventDefault();\n this.handleTab(event.shiftKey);\n break;\n default:\n break;\n }\n }\n handleContextMenu(event) {\n var {\n onContextMenu\n } = this.props;\n onContextMenu(event);\n }\n sendUpdate(value) {\n var {\n onChange\n } = this.props;\n onChange(value);\n }\n render() {\n var {\n className,\n style,\n isAdvancedFilterSet,\n onAdvancedFiltersTriggered\n } = this.props;\n var {\n value\n } = this.state;\n return /*#__PURE__*/_jsxs(\"div\", {\n style: style,\n className: \"iris-grid-input-autosized-wrapper\",\n \"data-value\": value // used by css based autosizer\n ,\n children: [/*#__PURE__*/_jsx(\"input\", {\n ref: inputField => {\n this.inputField = inputField;\n },\n className: classNames('iris-grid-input-field', className),\n type: \"text\",\n value: value,\n onBlur: this.handleBlur,\n onFocus: this.handleFocus,\n onChange: this.handleChange,\n onKeyDown: this.handleKeyDown,\n onContextMenu: this.handleContextMenu,\n autoComplete: \"off\",\n autoCorrect: \"off\",\n autoCapitalize: \"off\",\n spellCheck: \"false\"\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"advanced-filter-button-container\",\n children: /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: classNames('btn-link-icon advanced-filter-button', {\n 'filter-set': isAdvancedFilterSet\n }),\n onClick: onAdvancedFiltersTriggered,\n onContextMenu: this.handleContextMenu,\n children: /*#__PURE__*/_jsxs(\"div\", {\n className: \"fa-layers \",\n children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: dhFilterFilled,\n className: \"filter-solid\"\n }), /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsFilter,\n className: \"filter-light\"\n })]\n })\n })\n })]\n });\n }\n}\n_defineProperty(FilterInputField, \"defaultProps\", {\n style: {},\n className: '',\n value: '',\n isAdvancedFilterSet: false,\n onAdvancedFiltersTriggered: () => undefined,\n onChange: () => undefined,\n onDone: () => undefined,\n onTab: () => undefined,\n onContextMenu: () => undefined,\n debounceMs: 150\n});\nexport default FilterInputField;\n//# sourceMappingURL=FilterInputField.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport { KeyHandler } from '@deephaven/grid';\nimport { ContextActionUtils } from '@deephaven/components';\nclass CopyCellKeyHandler extends KeyHandler {\n constructor(irisGrid) {\n super();\n _defineProperty(this, \"irisGrid\", void 0);\n this.irisGrid = irisGrid;\n this.cursor = null;\n }\n onDown(event, grid) {\n if (event.altKey && !ContextActionUtils.isModifierKeyDown(event) && !event.shiftKey) {\n var {\n mouseX,\n mouseY\n } = grid.state;\n if (mouseX == null || mouseY == null) {\n return false;\n }\n var gridPoint = grid.getGridPointFromXY(mouseX, mouseY);\n if (gridPoint.column != null && gridPoint.row != null) {\n this.cursor = this.irisGrid.props.copyCursor;\n return true;\n }\n }\n return false;\n }\n onUp(event, grid) {\n if (this.cursor === this.irisGrid.props.copyCursor) {\n this.cursor = null;\n return true;\n }\n return false;\n }\n}\nexport default CopyCellKeyHandler;\n//# sourceMappingURL=CopyCellKeyHandler.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/* eslint class-methods-use-this: \"off\" */\n\nimport { ContextActionUtils } from '@deephaven/components';\nimport { KeyHandler } from '@deephaven/grid';\nimport IrisGridUtils from \"../IrisGridUtils.js\";\nclass CopyKeyHandler extends KeyHandler {\n constructor(irisGrid) {\n super();\n _defineProperty(this, \"irisGrid\", void 0);\n this.irisGrid = irisGrid;\n }\n onDown(event) {\n var {\n selectedRanges\n } = this.irisGrid.state;\n if (event.key === 'c' && ContextActionUtils.isModifierKeyDown(event)) {\n if (IrisGridUtils.isValidSnapshotRanges(selectedRanges)) {\n this.irisGrid.copyRanges(selectedRanges);\n } else {\n this.irisGrid.copyRanges(selectedRanges, false, false, 'Invalid copy ranges');\n }\n return true;\n }\n return false;\n }\n}\nexport default CopyKeyHandler;\n//# sourceMappingURL=CopyKeyHandler.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport { KeyHandler } from '@deephaven/grid';\nimport IrisGridShortcuts from \"../IrisGridShortcuts.js\";\nclass ReverseKeyHandler extends KeyHandler {\n constructor(irisGrid) {\n super();\n _defineProperty(this, \"irisGrid\", void 0);\n this.irisGrid = irisGrid;\n }\n onDown(event) {\n if (IrisGridShortcuts.TABLE.REVERSE.matchesEvent(event)) {\n if (!this.irisGrid.isReversible()) {\n return false;\n }\n var {\n reverse\n } = this.irisGrid.state;\n this.irisGrid.reverse(!reverse);\n return true;\n }\n return false;\n }\n}\nexport default ReverseKeyHandler;\n//# sourceMappingURL=ReverseKeyHandler.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport { KeyHandler } from '@deephaven/grid';\nimport IrisGridShortcuts from \"../IrisGridShortcuts.js\";\nclass ClearFilterKeyHandler extends KeyHandler {\n constructor(irisGrid) {\n super();\n _defineProperty(this, \"irisGrid\", void 0);\n this.irisGrid = irisGrid;\n }\n onDown(event) {\n if (IrisGridShortcuts.TABLE.CLEAR_FILTERS.matchesEvent(event)) {\n this.irisGrid.clearAllFilters();\n return true;\n }\n return false;\n }\n}\nexport default ClearFilterKeyHandler;\n//# sourceMappingURL=ClearFilterKeyHandler.js.map","import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { usePrevious } from '@deephaven/react-hooks';\nimport IrisGridBottomBar from \"./IrisGridBottomBar.js\";\nimport \"./PendingDataBottomBar.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nvar HIDE_TIMEOUT = 3000;\nexport function ToastBottomBar(_ref) {\n var {\n children = null,\n onEntering,\n onEntered,\n onExiting,\n onExited\n } = _ref;\n var [isShown, setIsShown] = useState(false);\n var timeout = useRef();\n var prevChildren = usePrevious(children);\n var startTimer = useCallback(() => {\n setIsShown(true);\n if (timeout.current) {\n clearTimeout(timeout.current);\n }\n timeout.current = setTimeout(() => {\n setIsShown(false);\n }, HIDE_TIMEOUT);\n }, [setIsShown, timeout]);\n useEffect(() => {\n if (prevChildren !== children && children != null) {\n startTimer();\n }\n }, [children, prevChildren, setIsShown, startTimer]);\n useEffect(() => () => timeout.current ? clearTimeout(timeout.current) : undefined, []);\n return /*#__PURE__*/_jsx(IrisGridBottomBar, {\n className: \"toast-bottom-bar\",\n isShown: isShown,\n onEntering: onEntering,\n onEntered: onEntered,\n onExiting: onExiting,\n onExited: onExited,\n children: children\n });\n}\nexport default ToastBottomBar;\n//# sourceMappingURL=ToastBottomBar.js.map","/* eslint-disable react/require-default-props */\n/* eslint-disable no-param-reassign */\nimport { useEffect, useMemo } from 'react';\nimport { EMPTY_ARRAY, EMPTY_MAP } from '@deephaven/utils';\nimport { useOnChange } from '@deephaven/react-hooks';\nimport IrisGridUtils from \"./IrisGridUtils.js\";\nimport { isPartitionedGridModel } from \"./PartitionedGridModel.js\";\nimport { isIrisGridTreeTableModel } from \"./IrisGridTreeTableModel.js\";\nvar COLUMN_BUFFER_PAGES = 1;\n/**\n * React component to keep IrisGridModel in sync\n */\nfunction IrisGridModelUpdater(_ref) {\n var {\n model,\n top,\n bottom,\n left,\n right,\n filter,\n formatter,\n columnAlignmentMap,\n reverse = false,\n sorts,\n customColumns,\n movedColumns,\n hiddenColumns,\n alwaysFetchColumns,\n rollupConfig = null,\n totalsConfig = null,\n selectDistinctColumns = EMPTY_ARRAY,\n pendingRowCount = 0,\n pendingDataMap = EMPTY_MAP,\n frozenColumns,\n formatColumns,\n columnHeaderGroups,\n partitionConfig,\n showExtraGroupColumn\n } = _ref;\n var {\n isTotalsAvailable,\n isRollupAvailable\n } = model;\n // Check for showExtraGroupColumn before memoizing columns, since updating it will change the columns\n useOnChange(() => {\n if (isIrisGridTreeTableModel(model) && showExtraGroupColumn != null) {\n model.showExtraGroupColumn = showExtraGroupColumn;\n }\n }, [model, showExtraGroupColumn]);\n var columns = useMemo(() => IrisGridUtils.getModelViewportColumns(model.columns, left, right, movedColumns, hiddenColumns, alwaysFetchColumns, COLUMN_BUFFER_PAGES), [model.columns, left, right, movedColumns, hiddenColumns, alwaysFetchColumns]);\n useOnChange(function updateFilter() {\n model.filter = filter;\n }, [model, filter]);\n useOnChange(function updateSorts() {\n var sortsForModel = [...sorts];\n if (reverse) {\n sortsForModel.push(model.dh.Table.reverse());\n }\n model.sort = sortsForModel;\n }, [model, sorts, reverse]);\n useOnChange(function updateFormatter() {\n model.formatter = formatter;\n }, [model, formatter]);\n useOnChange(function updateColumnAlignmentMap() {\n model.columnAlignmentMap = columnAlignmentMap;\n }, [model, columnAlignmentMap]);\n useOnChange(function updateCustomColumns() {\n if (model.isCustomColumnsAvailable) {\n model.customColumns = customColumns;\n }\n }, [model, customColumns]);\n useOnChange(function updateFormatColumns() {\n if (model.isFormatColumnsAvailable) {\n model.formatColumns = formatColumns;\n }\n }, [model, formatColumns]);\n useOnChange(function updateViewport() {\n model.setViewport(top, bottom, columns);\n }, [model, top, bottom, columns]);\n useOnChange(function updateRollupCOnfig() {\n if (isRollupAvailable) {\n model.rollupConfig = rollupConfig;\n }\n }, [model, isRollupAvailable, rollupConfig]);\n useOnChange(function updateSelectDistinctColumns() {\n if (model.isSelectDistinctAvailable) {\n model.selectDistinctColumns = selectDistinctColumns;\n }\n }, [model, selectDistinctColumns]);\n useOnChange(function updateTotalsConfig() {\n if (isTotalsAvailable) {\n model.totalsConfig = totalsConfig;\n }\n }, [model, isTotalsAvailable, totalsConfig]);\n useOnChange(function updateColumnHeaderGroups() {\n model.columnHeaderGroups = columnHeaderGroups;\n }, [model, columnHeaderGroups]);\n useOnChange(function updatePartitionConfig() {\n if (partitionConfig && isPartitionedGridModel(model)) {\n model.partitionConfig = partitionConfig;\n }\n }, [model, partitionConfig]);\n // These setters are wrapped in useEffect instead of useOnChange because they emit an event\n // that potentially causes side effects, violating the rule that render should be a pure function.\n useEffect(function updateFrozenColumns() {\n if (frozenColumns) {\n model.updateFrozenColumns(frozenColumns);\n }\n }, [model, frozenColumns]);\n useEffect(function updatePendingRowCount() {\n model.pendingRowCount = pendingRowCount;\n }, [model, pendingRowCount]);\n useEffect(function updatePendingDataMap() {\n model.pendingDataMap = pendingDataMap;\n }, [model, pendingDataMap]);\n return null;\n}\nIrisGridModelUpdater.displayName = 'IrisGridModelUpdater';\nexport default IrisGridModelUpdater;\n//# sourceMappingURL=IrisGridModelUpdater.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Button, CopyButton, LoadingSpinner } from '@deephaven/components';\nimport { dhFreeze, dhRefresh, dhSortSlash, vsLock } from '@deephaven/icons';\nimport Log from '@deephaven/log';\nimport { PromiseUtils } from '@deephaven/utils';\nimport { isExpandableGridModel } from '@deephaven/grid';\nimport \"./ColumnStatistics.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nvar log = Log.module('ColumnStatistics');\nvar STATS_LABEL_OVERRIDES = {\n SIZE: 'Number of Rows'\n};\nclass ColumnStatistics extends Component {\n /** Automatically generate the statistics when the row count is below this threshold */\n\n static getStatsLabel(operation) {\n var _STATS_LABEL_OVERRIDE;\n return (_STATS_LABEL_OVERRIDE = STATS_LABEL_OVERRIDES[operation]) !== null && _STATS_LABEL_OVERRIDE !== void 0 ? _STATS_LABEL_OVERRIDE : operation.split(' ').map(w => w[0].toUpperCase() + w.substr(1).toLowerCase()).join(' ');\n }\n constructor(props) {\n super(props);\n _defineProperty(this, \"cancelablePromise\", void 0);\n this.handleError = this.handleError.bind(this);\n this.handleGenerateStatistics = this.handleGenerateStatistics.bind(this);\n this.handleStatistics = this.handleStatistics.bind(this);\n this.cancelablePromise = null;\n this.state = {\n error: null,\n loading: false,\n statistics: null,\n numRows: 0\n };\n }\n componentDidMount() {\n this.maybeGenerateStatistics();\n }\n componentWillUnmount() {\n if (this.cancelablePromise) {\n this.cancelablePromise.cancel();\n }\n }\n maybeGenerateStatistics() {\n var {\n column,\n model\n } = this.props;\n var numRows = model.rowCount - model.pendingRowCount - model.floatingBottomRowCount - model.floatingTopRowCount;\n this.setState({\n numRows\n });\n if (!model.isColumnStatisticsAvailable || column.isProxy === true) {\n this.setState({\n loading: false\n });\n } else if (numRows < ColumnStatistics.AUTO_GENERATE_LIMIT) {\n this.handleGenerateStatistics();\n }\n }\n handleGenerateStatistics() {\n this.setState({\n loading: true\n });\n var {\n column,\n model\n } = this.props;\n this.cancelablePromise = PromiseUtils.makeCancelable(model.columnStatistics(column));\n this.cancelablePromise.then(this.handleStatistics).catch(this.handleError);\n }\n handleStatistics(stats) {\n log.debug('Received statistics', stats);\n var {\n model,\n onStatistics\n } = this.props;\n var statistics = [];\n stats.statisticsMap.forEach((value, operation) => {\n statistics.push({\n operation: ColumnStatistics.getStatsLabel(operation),\n value,\n type: stats.getType(operation)\n });\n });\n stats.uniqueValues.forEach((value, operation) => {\n statistics.push({\n operation,\n className: 'column-statistics-unique-value',\n value,\n type: 'long'\n });\n });\n this.setState({\n loading: false,\n statistics,\n numRows: model.rowCount - model.pendingRowCount - model.floatingBottomRowCount - model.floatingTopRowCount\n });\n onStatistics();\n }\n handleError(error) {\n if (error != null && PromiseUtils.isCanceled(error)) {\n log.debug('Called handleError on a cancelled promise result');\n return;\n }\n log.error('Error generating statistics', error);\n this.setState({\n error,\n loading: false,\n statistics: null\n });\n }\n render() {\n var _column$displayName;\n var {\n column,\n model\n } = this.props;\n var {\n error,\n loading,\n statistics,\n numRows\n } = this.state;\n var showGenerateStatistics = !loading && error == null && statistics == null && model.isColumnStatisticsAvailable;\n var statisticElements = [];\n var columnType = column.type.substring(column.type.lastIndexOf('.') + 1);\n var description = column.description === null ? null : column.description;\n if (statistics != null) {\n for (var i = 0; i < statistics.length; i += 1) {\n var {\n operation,\n className,\n value,\n type\n } = statistics[i];\n var formattedValue = !type ? model.displayString(value, column.type, column.name) : model.displayString(value, type);\n var statisticElement = /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: classNames('column-statistic-operation', className),\n children: operation\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"column-statistic-value\",\n children: formattedValue\n })]\n }, operation);\n statisticElements.push(statisticElement);\n }\n }\n var rowCountLabel = isExpandableGridModel(model) && model.hasExpandableRows ? 'Expanded Rows' : 'Number of Rows';\n var formattedRowCount = model.displayString(numRows, 'long');\n var columnIndex = model.getColumnIndexByName(column.name);\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"column-statistics\",\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"column-statistics-title\",\n children: [(_column$displayName = column.displayName) !== null && _column$displayName !== void 0 ? _column$displayName : column.name, /*#__PURE__*/_jsxs(\"span\", {\n className: \"column-statistics-type\",\n children: [\"\\xA0(\", columnType, \")\"]\n }), /*#__PURE__*/_jsx(CopyButton, {\n className: \"column-statistics-copy\",\n tooltip: \"Copy column name\",\n copy: column.name\n })]\n }), description != null && /*#__PURE__*/_jsx(\"div\", {\n className: \"column-statistics-description\",\n children: description\n }), columnIndex != null && !model.isColumnSortable(columnIndex) && /*#__PURE__*/_jsxs(\"div\", {\n className: \"column-statistics-status\",\n children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: dhSortSlash,\n className: \"mr-1\"\n }), \"Not sortable\"]\n }), columnIndex != null && !model.isColumnMovable(columnIndex) && /*#__PURE__*/_jsxs(\"div\", {\n className: \"column-statistics-status\",\n children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: model.isColumnFrozen(columnIndex) ? dhFreeze : vsLock,\n className: \"mr-1\"\n }), model.isColumnFrozen(columnIndex) ? 'Frozen' : 'Not movable']\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"column-statistics-grid\",\n children: [statistics == null && /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"column-statistic-operation\",\n children: rowCountLabel\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"column-statistic-value\",\n children: formattedRowCount\n })]\n }), statisticElements]\n }), showGenerateStatistics && /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: \"px-0\",\n onClick: this.handleGenerateStatistics,\n children: \"Generate Stats\"\n }), error != null && /*#__PURE__*/_jsx(\"div\", {\n className: \"error-message\",\n children: \"\".concat(error)\n }), statistics && !loading && /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: \"px-0\",\n onClick: this.handleGenerateStatistics,\n icon: dhRefresh,\n children: \"Refresh\"\n }), loading && /*#__PURE__*/_jsxs(\"div\", {\n className: \"column-statistics-loading\",\n children: [/*#__PURE__*/_jsx(LoadingSpinner, {\n className: \"loading-spinner-vertical-align\"\n }), \"Calculating Stats...\"]\n })]\n });\n }\n}\n_defineProperty(ColumnStatistics, \"AUTO_GENERATE_LIMIT\", 100000);\nexport default ColumnStatistics;\n//# sourceMappingURL=ColumnStatistics.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport React, { PureComponent } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Checkbox, Popper, SearchInput, Tooltip } from '@deephaven/components';\nimport { dhGearFilled, dhCheckSquare, dhSquareFilled, dhRemoveSquareFilled, dhWarningCircleFilled, vsCircleLargeFilled } from '@deephaven/icons';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport \"./CrossColumnSearch.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nclass CrossColumnSearch extends PureComponent {\n static createSearchFilter(dh, searchValue, selectedColumns, columns, invertSelection) {\n var filterColumns = invertSelection ? columns.filter(column => !selectedColumns.includes(column.name)).map(column => column.name) : selectedColumns;\n if (searchValue && filterColumns.length > 0) {\n var filterValue = dh.FilterValue.ofString(searchValue);\n var searchFilter = filterColumns.length === columns.length ? dh.FilterCondition.search(filterValue) : dh.FilterCondition.search(filterValue, columns.filter(column => filterColumns.includes(column.name)).map(column => column.filter()));\n return searchFilter;\n }\n return undefined;\n }\n constructor(props) {\n super(props);\n _defineProperty(this, \"searchField\", void 0);\n this.handleSearchValueChange = this.handleSearchValueChange.bind(this);\n this.toggleColumn = this.toggleColumn.bind(this);\n this.selectAll = this.selectAll.bind(this);\n this.clear = this.clear.bind(this);\n this.selectNumbers = this.selectNumbers.bind(this);\n this.searchField = /*#__PURE__*/React.createRef();\n this.state = {\n isConfigureColumnsShown: false\n };\n }\n focus() {\n var _this$searchField$cur;\n (_this$searchField$cur = this.searchField.current) === null || _this$searchField$cur === void 0 ? void 0 : _this$searchField$cur.focus();\n }\n handleSearchValueChange(event) {\n var {\n onChange,\n selectedColumns,\n invertSelection\n } = this.props;\n onChange(event.target.value, selectedColumns, invertSelection);\n }\n sendColumnChange(selectedColumns, invertSelection) {\n var {\n onChange,\n value\n } = this.props;\n onChange(value, selectedColumns, invertSelection);\n }\n setInvertSelection(invertSelection) {\n var {\n onChange,\n value\n } = this.props;\n onChange(value, [], invertSelection);\n }\n toggleColumn(name) {\n var {\n selectedColumns,\n invertSelection\n } = this.props;\n if (selectedColumns.includes(name)) {\n this.sendColumnChange(selectedColumns.filter(c => c !== name), invertSelection);\n } else {\n var update = selectedColumns.slice();\n update.push(name);\n this.sendColumnChange(update, invertSelection);\n }\n }\n selectAll() {\n this.setInvertSelection(true);\n }\n clear() {\n this.setInvertSelection(false);\n }\n selectNumbers() {\n var {\n columns\n } = this.props;\n this.sendColumnChange(columns.filter(c => TableUtils.isNumberType(c.type)).map(column => column.name), false);\n }\n render() {\n var {\n value,\n selectedColumns,\n invertSelection,\n columns\n } = this.props;\n var {\n isConfigureColumnsShown\n } = this.state;\n var hasAllColumnsSelected = selectedColumns.length === 0 && invertSelection === true || selectedColumns.length === columns.length && invertSelection === false;\n var hasNoColumnsSelected = selectedColumns.length === 0 && invertSelection === false || selectedColumns.length === columns.length && invertSelection === true;\n\n // set icon layers\n var icon;\n if (hasAllColumnsSelected) {\n // icon if all columns selected for search\n icon = /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: dhSquareFilled,\n mask: dhGearFilled,\n transform: \"shrink-2 down-5 right-7\"\n }), /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: dhCheckSquare,\n className: \"text-primary\",\n transform: \"shrink-4 down-5 right-7\"\n })]\n });\n } else if (hasNoColumnsSelected) {\n // icon error, no columns selected for searching\n icon = /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsCircleLargeFilled,\n mask: dhGearFilled,\n transform: \"shrink-1 down-5 right-7\"\n }), /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: dhWarningCircleFilled,\n className: \"text-danger\",\n transform: \"shrink-4 down-5 right-7\"\n })]\n });\n } else {\n // icon if some columns selected, but not all\n icon = /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: dhSquareFilled,\n mask: dhGearFilled,\n transform: \"shrink-2 down-5 right-7\"\n }), /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: dhRemoveSquareFilled,\n className: \"text-primary\",\n transform: \"shrink-4 down-5 right-7\"\n })]\n });\n }\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"cross-column-container\",\n children: [/*#__PURE__*/_jsx(SearchInput, {\n className: \"cross-column-search\",\n placeholder: \"Search Data...\",\n \"data-testid\": \"cross-column-search\",\n value: value,\n onChange: this.handleSearchValueChange,\n ref: this.searchField\n }), /*#__PURE__*/_jsxs(\"button\", {\n type: \"button\",\n className: \"btn btn-link btn-link-icon px-2\",\n onClick: () => {\n if (isConfigureColumnsShown) {\n this.setState({\n isConfigureColumnsShown: false\n });\n } else {\n this.setState({\n isConfigureColumnsShown: true\n });\n }\n },\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"fa-layers\",\n children: icon\n }), /*#__PURE__*/_jsx(Tooltip, {\n children: \"Configure Columns\"\n }), /*#__PURE__*/_jsx(Popper, {\n isShown: isConfigureColumnsShown,\n className: \"cross-column-popper\",\n onExited: () => {\n this.setState({\n isConfigureColumnsShown: false\n });\n },\n closeOnBlur: true,\n interactive: true,\n children: /*#__PURE__*/_jsxs(\"div\", {\n className: \"cross-column-popup\",\n children: [\"Searched Columns\", /*#__PURE__*/_jsx(\"div\", {\n className: \"cross-column-scroll\",\n children: columns.map(column => {\n if (column.isProxy === true) return null;\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(Checkbox, {\n className: \"cross-column-checkbox\",\n checked: invertSelection ? !selectedColumns.includes(column.name) : selectedColumns.includes(column.name),\n onChange: () => this.toggleColumn(column.name),\n children: column.name\n }), column.type.substring(column.type.lastIndexOf('.') + 1)]\n }, column.name);\n })\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"cross-column-button-bar\",\n children: [/*#__PURE__*/_jsx(\"button\", {\n type: \"button\",\n className: \"btn btn-link\",\n onClick: this.selectAll,\n children: \"Select All\"\n }), /*#__PURE__*/_jsx(\"button\", {\n type: \"button\",\n className: \"btn btn-link\",\n onClick: this.clear,\n children: \"Clear\"\n }), /*#__PURE__*/_jsx(\"button\", {\n type: \"button\",\n className: \"btn btn-link\",\n onClick: this.selectNumbers,\n children: \"Numbers Only\"\n })]\n }), hasNoColumnsSelected && /*#__PURE__*/_jsxs(\"p\", {\n className: \"text-danger\",\n children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: dhWarningCircleFilled\n }), \" Select at least one column to search.\"]\n })]\n })\n })]\n })]\n });\n }\n}\nexport default CrossColumnSearch;\n//# sourceMappingURL=CrossColumnSearch.js.map","function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport React, { Component } from 'react';\nimport memoizee from 'memoizee';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Button } from '@deephaven/components';\nimport { vsChevronRight, vsMerge, vsKey } from '@deephaven/icons';\nimport Log from '@deephaven/log';\nimport { Picker } from '@deephaven/jsapi-components';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport { assertNotNull, Pending, PromiseUtils } from '@deephaven/utils';\nimport \"./IrisGridPartitionSelector.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('IrisGridPartitionSelector');\nclass IrisGridPartitionSelector extends Component {\n constructor(props) {\n super(props);\n _defineProperty(this, \"pending\", void 0);\n _defineProperty(this, \"tableUtils\", void 0);\n _defineProperty(this, \"getCachedChangeCallback\", memoizee(index => value => this.handlePartitionSelect(index, value), {\n max: 100\n }));\n _defineProperty(this, \"getCachedFormatValueCallback\", memoizee(index => value => this.getDisplayValue(index, value), {\n max: 100\n }));\n this.handlePartitionTableClick = this.handlePartitionTableClick.bind(this);\n this.handleMergeClick = this.handleMergeClick.bind(this);\n this.handlePartitionSelect = this.handlePartitionSelect.bind(this);\n var {\n model\n } = props;\n this.tableUtils = new TableUtils(model.dh);\n this.pending = new Pending();\n this.state = {\n // We start be loading the partition tables, so we should be in a loading state\n isLoading: true,\n baseTable: null,\n keysTable: null,\n partitionTables: null\n };\n }\n componentDidMount() {\n var _this = this;\n return _asyncToGenerator(function* () {\n var {\n model\n } = _this.props;\n try {\n var keysTable = yield _this.pending.add(model.partitionKeysTable().then(keyTable => keyTable), t => t.close());\n var baseTable = yield _this.pending.add(model.partitionBaseTable(), t => t.close());\n _this.setState({\n keysTable,\n baseTable,\n isLoading: false\n });\n _this.updatePartitionOptions();\n } catch (e) {\n if (!PromiseUtils.isCanceled(e)) {\n // Just re-throw the error if it's not a cancel\n throw e;\n }\n }\n })();\n }\n componentDidUpdate(prevProps) {\n var {\n partitionConfig: prevConfig\n } = prevProps;\n var {\n partitionConfig\n } = this.props;\n if (prevConfig !== partitionConfig) {\n this.updatePartitionOptions();\n }\n }\n componentWillUnmount() {\n this.pending.cancel();\n var {\n keysTable,\n baseTable,\n partitionTables\n } = this.state;\n baseTable === null || baseTable === void 0 ? void 0 : baseTable.close();\n keysTable === null || keysTable === void 0 ? void 0 : keysTable.close();\n partitionTables === null || partitionTables === void 0 ? void 0 : partitionTables.forEach(table => table.close());\n }\n handlePartitionTableClick() {\n log.debug2('handlePartitionTableClick');\n var {\n partitionConfig\n } = this.props;\n assertNotNull(partitionConfig);\n var newPartitionConfig = _objectSpread({}, partitionConfig);\n // Toggle between Keys and Partition mode\n newPartitionConfig.mode = partitionConfig.mode === 'keys' ? 'partition' : 'keys';\n this.sendUpdate(newPartitionConfig);\n }\n handleMergeClick() {\n log.debug2('handleMergeClick');\n var {\n partitionConfig\n } = this.props;\n assertNotNull(partitionConfig);\n var newPartitionConfig = _objectSpread({}, partitionConfig);\n // Toggle between Merged and Partition mode\n newPartitionConfig.mode = partitionConfig.mode === 'merged' ? 'partition' : 'merged';\n this.sendUpdate(newPartitionConfig);\n }\n\n /**\n * Handles when a partition dropdown selection is changed. Will send an update with the new partition config\n * @param index Index of the partition column that was changed\n * @param selectedValue Selected value of the partition column\n */\n handlePartitionSelect(index, selectedValue) {\n var _this2 = this;\n return _asyncToGenerator(function* () {\n var {\n partitionConfig: prevConfig\n } = _this2.props;\n assertNotNull(prevConfig);\n log.debug('handlePartitionSelect', index, selectedValue, prevConfig);\n var newPartitions = [...prevConfig.partitions];\n newPartitions[index] = selectedValue;\n var {\n baseTable\n } = _this2.state;\n var {\n keysTable\n } = _this2.state;\n assertNotNull(baseTable);\n assertNotNull(keysTable);\n try {\n _this2.setState({\n isLoading: true\n });\n var t = yield _this2.pending.add(baseTable.copy(), tCopy => tCopy.close());\n\n // Apply our partition filters, and just get the first value\n var partitionFilters = newPartitions.slice(0, index + 1).map((partition, i) => {\n var partitionColumn = t.columns[i];\n return _this2.tableUtils.makeNullableEqFilter(partitionColumn, partition);\n });\n t.applyFilter(partitionFilters);\n t.setViewport(0, 0, t.columns);\n var data = yield _this2.pending.add(t.getViewportData());\n var newConfig = {\n // Core JSAPI returns undefined for null table values,\n // coalesce with null to differentiate null from no selection in the dropdown\n // https://github.com/deephaven/deephaven-core/issues/5400\n partitions: keysTable.columns.map(column => data.rows[0].get(column)),\n mode: 'partition'\n };\n t.close();\n _this2.sendUpdate(newConfig);\n } catch (e) {\n if (!PromiseUtils.isCanceled(e)) {\n log.error('Unable to get partition tables', e);\n }\n } finally {\n _this2.setState({\n isLoading: false\n });\n }\n })();\n }\n sendUpdate(partitionConfig) {\n log.debug2('sendUpdate', partitionConfig);\n var {\n onChange\n } = this.props;\n onChange(partitionConfig);\n }\n\n /**\n * Calls model.displayString with a special character case\n * @param index The index of the partition column to get the display value for\n * @param value The partition value to get the display value for\n */\n getDisplayValue(index, value) {\n var {\n model\n } = this.props;\n if (value === null) {\n return '(null)';\n }\n if (value === undefined || value === '') {\n return '';\n }\n var column = model.partitionColumns[index];\n if (TableUtils.isCharType(column.type) && value.toString().length > 0) {\n return String.fromCharCode(parseInt(value.toString(), 10));\n }\n return model.displayString(value, column.type, column.name);\n }\n\n /**\n * Update the options on the partition dropdown tables\n */\n updatePartitionOptions() {\n var _this3 = this;\n return _asyncToGenerator(function* () {\n var {\n model\n } = _this3.props;\n var {\n partitionConfig: prevConfig\n } = _this3.props;\n if (prevConfig == null) {\n return;\n }\n var {\n keysTable\n } = _this3.state;\n assertNotNull(keysTable);\n var partitionFilters = [...prevConfig.partitions].map((partition, i) => {\n var partitionColumn = keysTable.columns[i];\n return _this3.tableUtils.makeNullableEqFilter(partitionColumn, partition);\n });\n var partitionTables = yield Promise.all(model.partitionColumns.map( /*#__PURE__*/function () {\n var _ref = _asyncToGenerator(function* (_, i) {\n keysTable.applyFilter(partitionFilters.slice(0, i));\n return keysTable.selectDistinct(model.partitionColumns.slice(0, i + 1));\n });\n return function (_x, _x2) {\n return _ref.apply(this, arguments);\n };\n }()));\n _this3.setState({\n partitionTables\n });\n })();\n }\n getPartitionFilters(partitionTables) {\n var {\n model,\n partitionConfig\n } = this.props;\n assertNotNull(partitionConfig);\n var {\n partitions\n } = partitionConfig;\n log.debug('getPartitionFilters', partitionConfig);\n if (partitions.length !== partitionTables.length) {\n throw new Error(\"Invalid partition config set. Expected \".concat(partitionTables.length, \" partitions, but got \").concat(partitions.length));\n }\n\n // The filters are applied in order, so we need to build up the filters for each partition\n var partitionFilters = [];\n for (var i = 0; i < partitions.length; i += 1) {\n if (i === 0) {\n // There's no reason to ever filter the first table\n partitionFilters.push([]);\n } else {\n var previousFilter = partitionFilters[i - 1];\n var previousPartition = partitions[i - 1];\n var previousColumn = model.partitionColumns[i - 1];\n var partitionFilter = [...previousFilter, this.tableUtils.makeNullableEqFilter(previousColumn, previousPartition)];\n partitionFilters.push(partitionFilter);\n }\n }\n return partitionFilters;\n }\n render() {\n var {\n model,\n partitionConfig\n } = this.props;\n var {\n isLoading,\n partitionTables\n } = this.state;\n var partitionSelectors = model.partitionColumns.map((column, index) => /*#__PURE__*/_jsxs(\"div\", {\n className: \"column-selector\",\n children: [(partitionTables === null || partitionTables === void 0 ? void 0 : partitionTables[index]) && /*#__PURE__*/_jsx(Picker, {\n label: column.name,\n labelPosition: \"side\",\n table: partitionTables[index],\n direction: \"bottom\",\n shouldFlip: false,\n keyColumn: partitionTables[index].columns[index].name,\n selectedKey: (partitionConfig === null || partitionConfig === void 0 ? void 0 : partitionConfig.mode) === 'partition' ? partitionConfig.partitions[index] : null,\n placeholder: \"Select a key\",\n labelColumn: partitionTables[index].columns[index].name,\n onChange: this.getCachedChangeCallback(index),\n isDisabled: isLoading || partitionConfig == null\n }), model.partitionColumns.length - 1 === index || /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsChevronRight\n })]\n }, \"selector-\".concat(column.name)));\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"iris-grid-partition-selector\",\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"partition-button-group\",\n children: [/*#__PURE__*/_jsx(Button, {\n onClick: this.handlePartitionTableClick,\n kind: \"inline\",\n tooltip: model.isPartitionAwareSourceTable ? 'View keys as table' : 'View underlying partition table',\n icon: vsKey,\n active: (partitionConfig === null || partitionConfig === void 0 ? void 0 : partitionConfig.mode) === 'keys',\n disabled: isLoading || partitionConfig == null,\n children: \"Partitions\"\n }), /*#__PURE__*/_jsx(Button, {\n onClick: this.handleMergeClick,\n kind: \"inline\",\n tooltip: \"View all partitions as one merged table\",\n icon: /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsMerge,\n rotation: 90\n }),\n active: (partitionConfig === null || partitionConfig === void 0 ? void 0 : partitionConfig.mode) === 'merged',\n disabled: isLoading || partitionConfig == null,\n children: model.isPartitionAwareSourceTable ? 'Coalesce' : 'Merge'\n })]\n }), partitionSelectors]\n });\n }\n}\nexport default IrisGridPartitionSelector;\n//# sourceMappingURL=IrisGridPartitionSelector.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport React, { Component } from 'react';\nimport deepEqual from 'fast-deep-equal';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { dhNewCircleLargeFilled, vsTrash } from '@deephaven/icons';\nimport { Button, Select } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport \"./SelectDistinctBuilder.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('SelectDistinctBuilder');\nclass SelectDistinctBuilder extends Component {\n constructor(props) {\n super(props);\n this.handleAddColumnClick = this.handleAddColumnClick.bind(this);\n this.handleDeleteColumn = this.handleDeleteColumn.bind(this);\n this.handleDropdownChanged = this.handleDropdownChanged.bind(this);\n var {\n model,\n selectDistinctColumns\n } = this.props;\n this.state = {\n inputs: selectDistinctColumns.length > 0 ? [...selectDistinctColumns] : [''],\n columns: model.originalColumns\n };\n }\n componentDidUpdate(prevProps, prevState) {\n var {\n inputs\n } = this.state;\n var {\n onChange\n } = this.props;\n if (prevState.inputs !== inputs) {\n var filteredInputs = inputs.filter(val => val !== '');\n if (!deepEqual(prevState.inputs.filter(val => val !== ''), filteredInputs)) {\n onChange(filteredInputs);\n }\n }\n }\n handleAddColumnClick() {\n this.setState(_ref => {\n var {\n inputs: prevInputs\n } = _ref;\n return {\n inputs: [...prevInputs, '']\n };\n });\n }\n handleDeleteColumn(index) {\n this.setState(_ref2 => {\n var {\n inputs\n } = _ref2;\n return {\n inputs: inputs.length === 1 && index === 0 ? [''] : inputs.filter((input, inputIndex) => index !== inputIndex)\n };\n });\n }\n handleDropdownChanged(index, value) {\n log.debug('handleDropdownChanged', index, value);\n this.setState(_ref3 => {\n var {\n inputs: prevInputs\n } = _ref3;\n var inputs = [...prevInputs];\n inputs[index] = value;\n return {\n inputs\n };\n });\n }\n renderInputs() {\n var {\n columns,\n inputs\n } = this.state;\n return inputs.map((value, index) => {\n var options = columns.filter(_ref4 => {\n var {\n name\n } = _ref4;\n return name === value || !inputs.includes(name);\n }).map(_ref5 => {\n var {\n name\n } = _ref5;\n return /*#__PURE__*/_jsx(\"option\", {\n value: name,\n children: name\n }, name);\n });\n return (\n /*#__PURE__*/\n // eslint-disable-next-line react/no-array-index-key\n _jsxs(\"div\", {\n className: \"form-inline px-3 pb-3\",\n children: [/*#__PURE__*/_jsxs(Select, {\n className: \"form-control custom-select col\",\n value: value,\n onChange: eventTargetValue => this.handleDropdownChanged(index, eventTargetValue),\n children: [/*#__PURE__*/_jsx(\"option\", {\n value: \"\",\n children: \"Select a column\"\n }), options]\n }), (inputs.length > 1 || value !== '') && /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: \"ml-1 px-2\",\n onClick: () => {\n this.handleDeleteColumn(index);\n },\n icon: /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsTrash,\n transform: \"grow-3\"\n }),\n tooltip: \"Delete column\"\n })]\n }, index)\n );\n });\n }\n render() {\n var {\n columns,\n inputs\n } = this.state;\n var disableAddButton = inputs.length >= columns.length;\n return /*#__PURE__*/_jsxs(\"div\", {\n role: \"presentation\",\n className: \"select-distinct-builder-container h-100\",\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"select-distinct-title\",\n children: \"Display Unique Values From\"\n }), this.renderInputs(), /*#__PURE__*/_jsx(\"hr\", {}), /*#__PURE__*/_jsx(\"div\", {\n className: \"pt-1 px-3\",\n children: /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: \"btn-add-column\",\n onClick: this.handleAddColumnClick,\n disabled: disableAddButton,\n icon: dhNewCircleLargeFilled,\n children: \"Add Additional Column\"\n })\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"select-distinct-builder-footer\",\n children: /*#__PURE__*/_jsx(\"div\", {\n className: \"select-distinct-builder-hint\",\n children: \"Display only unique values from the selected table columns. Note that this will reset any filters and display only the selected columns.\"\n })\n })]\n });\n }\n}\n_defineProperty(SelectDistinctBuilder, \"defaultProps\", {\n selectDistinctColumns: [],\n onChange: () => undefined\n});\nexport default SelectDistinctBuilder;\n//# sourceMappingURL=SelectDistinctBuilder.js.map","import React from 'react';\nimport { Menu } from '@deephaven/components';\nimport AdvancedSettingsType from \"./AdvancedSettingsType.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction AdvancedSettingsMenu(_ref) {\n var {\n items,\n onChange: _onChange = () => undefined\n } = _ref;\n return /*#__PURE__*/_jsx(Menu, {\n items: Array.from(items.entries()).map(_ref2 => {\n var [key, isOn] = _ref2;\n return {\n title: AdvancedSettingsMenu.getAdvancedSettingsTitleForKey(key),\n isOn,\n onChange: value => _onChange(key, value)\n };\n })\n });\n}\nAdvancedSettingsMenu.getAdvancedSettingsTitleForKey = key => {\n switch (key) {\n case AdvancedSettingsType.FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS:\n return 'Clear current table filters before applying new filters from a control';\n case AdvancedSettingsType.LINK_CHANGE_CLEARS_ALL_FILTERS:\n return 'Clear current table filters before applying new filters from an incoming link filter';\n }\n};\nexport default AdvancedSettingsMenu;\n//# sourceMappingURL=AdvancedSettingsMenu.js.map","function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport React, { useCallback } from 'react';\nimport { DragDropContext, Draggable, Droppable } from 'react-beautiful-dnd';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { dhNewCircleLargeFilled, vsGripper, vsTrash } from '@deephaven/icons';\nimport { Button, DragUtils, Tooltip } from '@deephaven/components';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport \"./ConditionalFormattingMenu.css\";\nimport { FormatterType, getBackgroundForStyleConfig, getColorForStyleConfig, getShortLabelForConditionType, NumberCondition, StringCondition, DateCondition } from \"./ConditionalFormattingUtils.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('ConditionalFormattingMenu');\nvar DEFAULT_CALLBACK = () => undefined;\nfunction getRuleValue(config) {\n var {\n column: {\n type\n }\n } = config;\n if (TableUtils.isNumberType(type)) {\n return config.condition === NumberCondition.IS_NULL || config.condition === NumberCondition.IS_NOT_NULL ? '' : \"\".concat(config.value);\n }\n if (TableUtils.isCharType(type)) {\n return config.condition === DateCondition.IS_NULL || config.condition === DateCondition.IS_NOT_NULL ? '' : \"\".concat(config.value);\n }\n if (TableUtils.isStringType(type)) {\n return config.condition === StringCondition.IS_NULL || config.condition === StringCondition.IS_NOT_NULL ? '' : \"\\\"\".concat(config.value, \"\\\"\");\n }\n if (TableUtils.isDateType(type)) {\n return config.condition === DateCondition.IS_NULL || config.condition === DateCondition.IS_NOT_NULL ? '' : \"\".concat(config.value);\n }\n if (TableUtils.isBooleanType(type)) {\n return '';\n }\n throw new Error(\"Invalid column type \".concat(type, \" in getRuleValue\"));\n}\nfunction getRuleTitle(config) {\n if (TableUtils.isNumberType(config.column.type) && config.condition === NumberCondition.IS_BETWEEN) {\n return \"\".concat(config.start, \" < \").concat(config.column.name, \" < \").concat(config.end);\n }\n return \"\".concat(config.column.name, \" \").concat(getShortLabelForConditionType(config.column.type, config.condition), \" \\n \").concat(getRuleValue(config));\n}\nfunction ConditionalFormattingMenu(props) {\n var {\n rules = [],\n onChange = DEFAULT_CALLBACK,\n onCreate = DEFAULT_CALLBACK,\n onSelect = DEFAULT_CALLBACK\n } = props;\n var handleRuleClick = useCallback((e, rule, index) => {\n e.stopPropagation();\n log.debug('Rule clicked', rule, index);\n onSelect(index);\n }, [onSelect]);\n var handleDeleteClick = useCallback((e, rule, index) => {\n e.stopPropagation();\n log.debug('Delete button clicked', rule, index);\n var updatedRules = [...rules];\n updatedRules.splice(index, 1);\n onChange(updatedRules);\n }, [onChange, rules]);\n var handleDragHandlerClick = useCallback(e => {\n e.stopPropagation();\n }, []);\n var handleDragEnd = useCallback(result => {\n DragUtils.stopDragging();\n\n // if dropped outside the list\n if (result.destination == null) {\n return;\n }\n var sourceIndex = result.source.index;\n var destinationIndex = result.destination.index;\n var updatedRules = [...rules];\n var sourceInput = rules[sourceIndex];\n updatedRules.splice(sourceIndex, 1);\n updatedRules.splice(destinationIndex, 0, sourceInput);\n onChange(updatedRules);\n }, [onChange, rules]);\n\n // Display list of rules\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"conditional-formatting-rules\",\n children: [/*#__PURE__*/_jsx(DragDropContext, {\n onDragStart: DragUtils.startDragging,\n onDragEnd: handleDragEnd,\n children: /*#__PURE__*/_jsx(Droppable, {\n droppableId: \"droppable-custom-columns\",\n children: (provided, snapshot) => /*#__PURE__*/_jsxs(\"div\", _objectSpread(_objectSpread({\n ref: provided.innerRef\n // eslint-disable-next-line react/jsx-props-no-spreading\n }, provided.droppableProps), {}, {\n className: classNames('droppable-container', {\n dragging: snapshot.draggingFromThisWith\n }),\n children: [rules.length === 0 && /*#__PURE__*/_jsx(\"div\", {\n className: \"text-muted pl-2\",\n children: \"No formats defined\"\n }), rules.map((rule, index) => /*#__PURE__*/_jsx(Draggable\n // eslint-disable-next-line react/no-array-index-key\n , {\n draggableId: \"\".concat(index, \"-\").concat(rule.type),\n index: index,\n disableInteractiveElementBlocking: true,\n children:\n // eslint-disable-next-line @typescript-eslint/no-shadow\n (provided, snapshot) => /*#__PURE__*/_jsx(\"div\", _objectSpread(_objectSpread({\n role: \"menuitem\",\n tabIndex: 0,\n onClick: e => handleRuleClick(e, rule, index),\n className: classNames('draggable-container', {\n dragging: snapshot.isDragging\n }),\n ref: provided.innerRef\n // eslint-disable-next-line react/jsx-props-no-spreading\n }, provided.draggableProps), {}, {\n children: /*#__PURE__*/_jsx(\"div\", {\n className: \"conditional-formatting-list-item\",\n children: /*#__PURE__*/_jsxs(\"div\", {\n className: \"formatting-item\",\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"rule-icon\",\n children: /*#__PURE__*/_jsx(\"span\", {\n className: \"rule-icon-bg\",\n style: {\n backgroundColor: getBackgroundForStyleConfig(rule.config.style),\n color: getColorForStyleConfig(rule.config.style)\n },\n children: rule.type === FormatterType.ROWS ? 'row' : 'col'\n })\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"rule-title\",\n children: getRuleTitle(rule.config)\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: \"ml-1 px-2\",\n onClick: e => handleDeleteClick(e, rule, index),\n icon: vsTrash,\n tooltip: \"Delete rule\"\n }), /*#__PURE__*/_jsxs(\"button\", _objectSpread(_objectSpread({\n type: \"button\",\n className: \"btn btn-link btn-link-icon px-2 btn-drag-handle\",\n onClick: handleDragHandlerClick\n // eslint-disable-next-line react/jsx-props-no-spreading\n }, provided.dragHandleProps), {}, {\n children: [/*#__PURE__*/_jsx(Tooltip, {\n children: \"Drag to re-order\"\n }), /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsGripper\n })]\n }))]\n })\n })\n }))\n }, \"\".concat(index, \"-\").concat(rule.type))), provided.placeholder]\n }))\n })\n }), /*#__PURE__*/_jsx(\"hr\", {}), /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n onClick: onCreate,\n icon: dhNewCircleLargeFilled,\n children: \"Add New Rule\"\n })]\n });\n}\nexport default ConditionalFormattingMenu;\n//# sourceMappingURL=ConditionalFormattingMenu.js.map","import { useCallback, useEffect, useMemo, useState } from 'react';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport { Select } from '@deephaven/components';\nimport { StringCondition, DateCondition, getLabelForNumberCondition, getLabelForDateCondition, getLabelForStringCondition, NumberCondition, getDefaultConditionForType, getLabelForBooleanCondition, BooleanCondition, CharCondition, getLabelForCharCondition, isDateConditionValid, getDefaultValueForType } from \"./ConditionalFormattingUtils.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('ConditionEditor');\nvar DEFAULT_CALLBACK = () => undefined;\nvar numberConditionOptions = [NumberCondition.IS_EQUAL, NumberCondition.IS_NOT_EQUAL, NumberCondition.IS_BETWEEN, NumberCondition.GREATER_THAN, NumberCondition.GREATER_THAN_OR_EQUAL, NumberCondition.LESS_THAN, NumberCondition.LESS_THAN_OR_EQUAL, NumberCondition.IS_NULL, NumberCondition.IS_NOT_NULL].map(option => /*#__PURE__*/_jsx(\"option\", {\n value: option,\n children: getLabelForNumberCondition(option)\n}, option));\nvar stringConditions = [StringCondition.IS_EXACTLY, StringCondition.IS_NOT_EXACTLY, StringCondition.CONTAINS, StringCondition.DOES_NOT_CONTAIN, StringCondition.STARTS_WITH, StringCondition.ENDS_WITH, StringCondition.IS_NULL, StringCondition.IS_NOT_NULL].map(option => /*#__PURE__*/_jsx(\"option\", {\n value: option,\n children: getLabelForStringCondition(option)\n}, option));\nvar dateConditions = [DateCondition.IS_EXACTLY, DateCondition.IS_NOT_EXACTLY, DateCondition.IS_BEFORE, DateCondition.IS_BEFORE_OR_EQUAL, DateCondition.IS_AFTER, DateCondition.IS_AFTER_OR_EQUAL, DateCondition.IS_NULL, DateCondition.IS_NOT_NULL].map(option => /*#__PURE__*/_jsx(\"option\", {\n value: option,\n children: getLabelForDateCondition(option)\n}, option));\nvar booleanConditions = [BooleanCondition.IS_TRUE, BooleanCondition.IS_FALSE, BooleanCondition.IS_NULL, BooleanCondition.IS_NOT_NULL].map(option => /*#__PURE__*/_jsx(\"option\", {\n value: option,\n children: getLabelForBooleanCondition(option)\n}, option));\nvar charConditions = [CharCondition.IS_EQUAL, CharCondition.IS_NOT_EQUAL, CharCondition.IS_NULL, CharCondition.IS_NOT_NULL].map(option => /*#__PURE__*/_jsx(\"option\", {\n value: option,\n children: getLabelForCharCondition(option)\n}, option));\nfunction isNumberConditionValid(condition, value, startValue, endValue) {\n if (condition === NumberCondition.IS_NULL || condition === NumberCondition.IS_NOT_NULL) {\n return true;\n }\n if (condition === NumberCondition.IS_BETWEEN && startValue != null && startValue !== '' && !Number.isNaN(Number.parseFloat(startValue)) && endValue != null && endValue !== '' && !Number.isNaN(Number.parseFloat(endValue))) {\n return true;\n }\n if (condition !== NumberCondition.IS_BETWEEN && value !== undefined && value !== '' && !Number.isNaN(Number.parseFloat(value))) {\n return true;\n }\n return false;\n}\nfunction getNumberInputs(selectedCondition, handleValueChange, handleStartValueChange, handleEndValueChange, conditionValue, startValue, endValue) {\n switch (selectedCondition) {\n case NumberCondition.IS_EQUAL:\n case NumberCondition.IS_NOT_EQUAL:\n case NumberCondition.GREATER_THAN:\n case NumberCondition.GREATER_THAN_OR_EQUAL:\n case NumberCondition.LESS_THAN:\n case NumberCondition.LESS_THAN_OR_EQUAL:\n return /*#__PURE__*/_jsx(\"input\", {\n type: \"number\",\n className: \"form-control\",\n placeholder: \"Enter value\",\n value: conditionValue !== null && conditionValue !== void 0 ? conditionValue : '',\n onChange: handleValueChange\n });\n case NumberCondition.IS_BETWEEN:\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"d-flex flex-row\",\n children: [/*#__PURE__*/_jsx(\"input\", {\n type: \"number\",\n className: \"form-control d-flex mr-2\",\n placeholder: \"Start value\",\n value: startValue !== null && startValue !== void 0 ? startValue : '',\n onChange: handleStartValueChange\n }), /*#__PURE__*/_jsx(\"input\", {\n type: \"number\",\n className: \"form-control d-flex\",\n placeholder: \"End value\",\n value: endValue !== null && endValue !== void 0 ? endValue : '',\n onChange: handleEndValueChange\n })]\n });\n case NumberCondition.IS_NULL:\n case NumberCondition.IS_NOT_NULL:\n return null;\n }\n}\nfunction getStringInputs(selectedCondition, handleValueChange, conditionValue) {\n switch (selectedCondition) {\n case StringCondition.IS_NULL:\n case StringCondition.IS_NOT_NULL:\n return null;\n default:\n return /*#__PURE__*/_jsx(\"input\", {\n type: \"text\",\n className: \"form-control\",\n placeholder: \"Enter value\",\n value: conditionValue !== null && conditionValue !== void 0 ? conditionValue : '',\n onChange: handleValueChange\n });\n }\n}\nfunction getDateInputs(selectedCondition, handleValueChange, conditionValue) {\n switch (selectedCondition) {\n case DateCondition.IS_NULL:\n case DateCondition.IS_NOT_NULL:\n return null;\n default:\n return /*#__PURE__*/_jsx(\"input\", {\n type: \"text\",\n className: \"form-control\",\n placeholder: \"Enter value\",\n value: conditionValue !== null && conditionValue !== void 0 ? conditionValue : '',\n onChange: handleValueChange\n });\n }\n}\nfunction getBooleanInputs() {\n return null;\n}\nfunction getCharInputs(selectedCondition, handleValueChange, conditionValue) {\n switch (selectedCondition) {\n case CharCondition.IS_NULL:\n case CharCondition.IS_NOT_NULL:\n return null;\n default:\n return /*#__PURE__*/_jsx(\"input\", {\n type: \"text\",\n className: \"form-control\",\n maxLength: 1,\n placeholder: \"Enter value\",\n value: conditionValue !== null && conditionValue !== void 0 ? conditionValue : '',\n onChange: handleValueChange\n });\n }\n}\nfunction ConditionEditor(props) {\n var {\n column,\n config,\n dh,\n onChange = DEFAULT_CALLBACK\n } = props;\n var selectedColumnType = column.type;\n var [prevColumnType, setPrevColumnType] = useState(selectedColumnType);\n var [selectedCondition, setCondition] = useState(config.condition);\n var [conditionValue, setValue] = useState(config.value);\n var [startValue, setStartValue] = useState(config.start);\n var [endValue, setEndValue] = useState(config.end);\n if (selectedColumnType !== prevColumnType) {\n // Column type changed, reset condition and value fields\n setCondition(getDefaultConditionForType(selectedColumnType));\n setValue(getDefaultValueForType(selectedColumnType));\n setStartValue(undefined);\n setEndValue(undefined);\n setPrevColumnType(selectedColumnType);\n }\n var conditions = useMemo(() => {\n if (selectedColumnType === undefined) {\n return [];\n }\n if (TableUtils.isNumberType(selectedColumnType)) {\n return numberConditionOptions;\n }\n if (TableUtils.isCharType(selectedColumnType)) {\n return charConditions;\n }\n if (TableUtils.isStringType(selectedColumnType)) {\n return stringConditions;\n }\n if (TableUtils.isDateType(selectedColumnType)) {\n return dateConditions;\n }\n if (TableUtils.isBooleanType(selectedColumnType)) {\n return booleanConditions;\n }\n }, [selectedColumnType]);\n var handleConditionChange = useCallback(value => {\n log.debug('handleConditionChange', value);\n setCondition(value);\n }, []);\n var handleValueChange = useCallback(e => {\n var {\n value\n } = e.target;\n log.debug('handleValueChange', value);\n setValue(value);\n }, []);\n var handleStartValueChange = useCallback(e => {\n var {\n value\n } = e.target;\n log.debug('handleStartValueChange', value);\n setStartValue(value);\n }, []);\n var handleEndValueChange = useCallback(e => {\n var {\n value\n } = e.target;\n log.debug('handleEndValueChange', value);\n setEndValue(value);\n }, []);\n useEffect(function changeCondition() {\n var isValid = true;\n if (selectedCondition === undefined) {\n log.debug('Unable to create formatting rule. Condition is not selected.');\n isValid = false;\n } else if (TableUtils.isNumberType(column.type) && !isNumberConditionValid(selectedCondition, conditionValue, startValue, endValue)) {\n log.debug('Unable to create formatting rule. Invalid value', conditionValue);\n isValid = false;\n } else if (TableUtils.isDateType(column.type) && !isDateConditionValid(dh, selectedCondition, conditionValue)) {\n log.debug('Unable to create formatting rule. Invalid date condition', conditionValue);\n isValid = false;\n }\n onChange({\n condition: selectedCondition,\n value: conditionValue,\n start: startValue,\n end: endValue\n }, isValid);\n }, [onChange, column.type, dh, selectedCondition, conditionValue, startValue, endValue]);\n var conditionInputs = useMemo(() => {\n if (selectedColumnType === undefined) {\n // Column not selected\n return null;\n }\n if (TableUtils.isNumberType(selectedColumnType)) {\n return getNumberInputs(selectedCondition, handleValueChange, handleStartValueChange, handleEndValueChange, conditionValue, startValue, endValue);\n }\n if (TableUtils.isCharType(selectedColumnType)) {\n return getCharInputs(selectedCondition, handleValueChange, conditionValue);\n }\n if (TableUtils.isStringType(selectedColumnType)) {\n return getStringInputs(selectedCondition, handleValueChange, conditionValue);\n }\n if (TableUtils.isDateType(selectedColumnType)) {\n return getDateInputs(selectedCondition, handleValueChange, conditionValue);\n }\n if (TableUtils.isBooleanType(selectedColumnType)) {\n return getBooleanInputs();\n }\n }, [selectedColumnType, selectedCondition, conditionValue, startValue, endValue, handleValueChange, handleStartValueChange, handleEndValueChange]);\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"condition-editor mb-2\",\n children: [/*#__PURE__*/_jsx(Select, {\n value: selectedCondition,\n \"data-testid\": \"condition-select\",\n className: \"custom-select mb-2\",\n onChange: handleConditionChange,\n children: conditions\n }), conditionInputs]\n });\n}\nexport default ConditionEditor;\n//# sourceMappingURL=ConditionEditor.js.map","import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport Log from '@deephaven/log';\nimport { ColorUtils } from '@deephaven/utils';\nimport { vsCheck } from '@deephaven/icons';\nimport { Button, DropdownMenu } from '@deephaven/components';\nimport { FormatStyleType, getLabelForStyleType, getBackgroundForStyleConfig, getColorForStyleConfig } from \"./ConditionalFormattingUtils.js\";\nimport \"./StyleEditor.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('StyleEditor');\nvar DEFAULT_BACKGROUND = '#fcfcfa';\nvar DEFAULT_COLOR_LIGHT = '#f0f0ee';\nvar DEFAULT_COLOR_DARK = '#1a171a';\nvar DEFAULT_DROPDOWN_WIDTH = 200;\nvar DEFAULT_CALLBACK = () => undefined;\nfunction StyleEditor(props) {\n var _config$customConfig$, _config$customConfig;\n var {\n config,\n onChange = DEFAULT_CALLBACK\n } = props;\n var [styleType, setStyleType] = useState(config.type);\n var [background, setBackground] = useState((_config$customConfig$ = (_config$customConfig = config.customConfig) === null || _config$customConfig === void 0 ? void 0 : _config$customConfig.background) !== null && _config$customConfig$ !== void 0 ? _config$customConfig$ : DEFAULT_BACKGROUND);\n var [isShown, setShown] = useState(false);\n var [dropdownWidth, setDropdownWidth] = useState(DEFAULT_DROPDOWN_WIDTH);\n var csContainer = useRef(null);\n var handleBackgroundChange = useCallback(e => {\n var {\n value\n } = e.target;\n log.debug('handleBackgroundChange', value);\n setBackground(value);\n }, []);\n var handleMenuClosed = useCallback(() => {\n if (isShown) {\n setShown(false);\n }\n }, [isShown]);\n var handleToggleClick = useCallback(() => {\n if (!isShown) {\n updateDropdownWidth();\n }\n setShown(!isShown);\n }, [isShown]);\n var styleOptions = useMemo(() => [FormatStyleType.NO_FORMATTING, FormatStyleType.POSITIVE, FormatStyleType.NEGATIVE, FormatStyleType.WARN, FormatStyleType.NEUTRAL, FormatStyleType.ACCENT_1, FormatStyleType.ACCENT_2, FormatStyleType.CUSTOM], []);\n function updateDropdownWidth() {\n if (csContainer.current) {\n setDropdownWidth(csContainer.current.getBoundingClientRect().width);\n }\n }\n useEffect(function updateTheme() {\n onChange({\n type: styleType,\n customConfig: {\n color: ColorUtils.isDark(background) ? DEFAULT_COLOR_LIGHT : DEFAULT_COLOR_DARK,\n background\n }\n });\n }, [onChange, styleType, background]);\n var renderOptions = useCallback(() => {\n var matchFound = false;\n var optionArray = [];\n var _loop = function _loop() {\n var option = styleOptions[index];\n var key = \"option-\".concat(index, \"-\").concat(option);\n matchFound = matchFound || option === styleType;\n optionArray.push( /*#__PURE__*/_jsxs(Button, {\n kind: \"inline\",\n className: \"style-option-btn\",\n onClick: () => {\n setStyleType(option);\n setShown(false);\n },\n style: {\n color: getColorForStyleConfig({\n type: option\n }),\n background: getBackgroundForStyleConfig({\n type: option\n })\n },\n children: [option === styleType && /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsCheck,\n className: \"mr-2\"\n }), option !== styleType && /*#__PURE__*/_jsx(\"span\", {\n className: \"mr-4\"\n }), getLabelForStyleType(option)]\n }, key));\n };\n for (var index = 0; index < styleOptions.length; index += 1) {\n _loop();\n }\n return optionArray;\n }, [styleOptions, styleType]);\n var renderMenuElement = useCallback(() => /*#__PURE__*/_jsx(\"div\", {\n className: \"style-menu-container\",\n role: \"presentation\",\n style: {\n width: dropdownWidth\n },\n children: /*#__PURE__*/_jsx(\"div\", {\n className: \"style-options\",\n children: renderOptions()\n })\n }), [dropdownWidth, renderOptions]);\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"style-editor\",\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"mb-2\",\n ref: csContainer,\n children: [/*#__PURE__*/_jsx(\"label\", {\n className: \"mb-0\",\n children: \"Style\"\n }), /*#__PURE__*/_jsxs(Button, {\n kind: \"inline\",\n className: \"cs-dropdown custom-select\",\n style: {\n color: getColorForStyleConfig({\n type: styleType\n }),\n background: getBackgroundForStyleConfig({\n type: styleType\n })\n },\n onClick: handleToggleClick,\n children: [getLabelForStyleType(styleType), /*#__PURE__*/_jsx(DropdownMenu, {\n isShown: isShown,\n actions: {\n menuElement: renderMenuElement()\n },\n popperOptions: {\n placement: 'bottom-start'\n },\n popperClassName: \"style-dropdown-menu\",\n onMenuClosed: handleMenuClosed,\n menuStyle: {\n maxWidth: '100rem'\n }\n })]\n })]\n }), styleType === FormatStyleType.CUSTOM && /*#__PURE__*/_jsxs(\"div\", {\n className: \"mb-2\",\n children: [/*#__PURE__*/_jsx(\"label\", {\n className: \"mb-0\",\n children: \"Background\"\n }), /*#__PURE__*/_jsx(\"input\", {\n type: \"color\",\n value: background,\n className: \"custom-select color-select\",\n onChange: handleBackgroundChange\n })]\n })]\n });\n}\nexport default StyleEditor;\n//# sourceMappingURL=StyleEditor.js.map","function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport Log from '@deephaven/log';\nimport { ComboBox } from '@deephaven/components';\nimport { getDefaultConditionConfigForType, getConditionConfig, getDefaultStyleConfig, FormatStyleType } from \"./ConditionalFormattingUtils.js\";\nimport ConditionEditor from \"./ConditionEditor.js\";\nimport StyleEditor from \"./StyleEditor.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nvar log = Log.module('ColumnFormatEditor');\nvar DEFAULT_CALLBACK = () => undefined;\nfunction makeDefaultConfig(columns) {\n var {\n type,\n name\n } = columns[0];\n var column = {\n type,\n name\n };\n var config = _objectSpread({\n column,\n style: getDefaultStyleConfig()\n }, getDefaultConditionConfigForType(type));\n return config;\n}\nfunction ColumnFormatEditor(props) {\n var _columns$find;\n var {\n columns,\n config = makeDefaultConfig(columns),\n dh,\n onChange = DEFAULT_CALLBACK\n } = props;\n var [selectedColumn, setColumn] = useState((_columns$find = columns.find(c => c.name === config.column.name && c.type === config.column.type)) !== null && _columns$find !== void 0 ? _columns$find : columns[0]);\n var [conditionConfig, setConditionConfig] = useState(getConditionConfig(config));\n var [conditionValid, setConditionValid] = useState(false);\n var [selectedStyle, setStyle] = useState(config.style);\n var handleColumnChange = useCallback(value => {\n var newColumn = columns.find(_ref => {\n var {\n name\n } = _ref;\n return name === value;\n });\n if (newColumn !== undefined) {\n setColumn(newColumn);\n if (selectedColumn.type !== newColumn.type) {\n setConditionConfig(getDefaultConditionConfigForType(newColumn.type));\n setConditionValid(false);\n }\n } else {\n log.error(\"Column \".concat(value, \" not found.\"));\n }\n }, [columns, selectedColumn]);\n var handleConditionChange = useCallback((updatedConditionConfig, isValid) => {\n log.debug('handleConditionChange', updatedConditionConfig, isValid);\n setConditionConfig(updatedConditionConfig);\n setConditionValid(isValid);\n }, []);\n var handleStyleChange = useCallback(updatedStyleConfig => {\n log.debug('handleStyleChange', updatedStyleConfig);\n setStyle(updatedStyleConfig);\n }, []);\n useEffect(function updateColumnFormat() {\n var isValid = conditionValid;\n if (selectedColumn === undefined) {\n log.debug('Column is not selected, invalidating update.');\n isValid = false;\n }\n if (selectedStyle === undefined || selectedStyle.type === FormatStyleType.NO_FORMATTING) {\n log.debug('Style is not selected, invalidating update.');\n isValid = false;\n }\n var {\n type,\n name\n } = selectedColumn;\n var column = {\n type,\n name\n };\n onChange(_objectSpread({\n column,\n style: selectedStyle\n }, conditionConfig), isValid);\n }, [onChange, selectedColumn, selectedStyle, conditionConfig, conditionValid]);\n var columnNames = useMemo(() => columns.map(_ref2 => {\n var {\n name\n } = _ref2;\n return name;\n }), [columns]);\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"conditional-rule-editor form\",\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"mb-2\",\n children: [/*#__PURE__*/_jsx(\"label\", {\n className: \"mb-0\",\n children: \"Format Cell If\"\n }), /*#__PURE__*/_jsx(ComboBox, {\n \"aria-label\": \"Select column to format\",\n defaultSelectedKey: selectedColumn === null || selectedColumn === void 0 ? void 0 : selectedColumn.name,\n onChange: handleColumnChange,\n children: columnNames\n })]\n }), selectedColumn !== undefined && /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(ConditionEditor, {\n dh: dh,\n column: selectedColumn,\n config: conditionConfig,\n onChange: handleConditionChange\n }), /*#__PURE__*/_jsx(StyleEditor, {\n config: selectedStyle,\n onChange: handleStyleChange\n })]\n })]\n });\n}\nexport default ColumnFormatEditor;\n//# sourceMappingURL=ColumnFormatEditor.js.map","function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport Log from '@deephaven/log';\nimport { ComboBox } from '@deephaven/components';\nimport { getDefaultConditionConfigForType, getConditionConfig, getDefaultStyleConfig } from \"./ConditionalFormattingUtils.js\";\nimport ConditionEditor from \"./ConditionEditor.js\";\nimport StyleEditor from \"./StyleEditor.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nvar log = Log.module('RowFormatEditor');\nvar DEFAULT_CALLBACK = () => undefined;\nfunction makeDefaultConfig(columns) {\n var {\n type,\n name\n } = columns[0];\n var column = {\n type,\n name\n };\n var config = _objectSpread({\n column,\n style: getDefaultStyleConfig()\n }, getDefaultConditionConfigForType(type));\n return config;\n}\nfunction RowFormatEditor(props) {\n var _columns$find;\n var {\n columns,\n config = makeDefaultConfig(columns),\n dh,\n onChange = DEFAULT_CALLBACK\n } = props;\n var [selectedColumn, setColumn] = useState((_columns$find = columns.find(c => c.name === config.column.name && c.type === config.column.type)) !== null && _columns$find !== void 0 ? _columns$find : columns[0]);\n var [conditionConfig, setConditionConfig] = useState(getConditionConfig(config));\n var [conditionValid, setConditionValid] = useState(false);\n var [selectedStyle, setStyle] = useState(config.style);\n var handleColumnChange = useCallback(value => {\n var newColumn = columns.find(_ref => {\n var {\n name\n } = _ref;\n return name === value;\n });\n if (newColumn !== undefined) {\n setColumn(newColumn);\n if (selectedColumn.type !== newColumn.type) {\n setConditionConfig(getDefaultConditionConfigForType(newColumn.type));\n setConditionValid(false);\n }\n } else {\n log.error(\"Column \".concat(value, \" not found.\"));\n }\n }, [columns, selectedColumn]);\n var handleConditionChange = useCallback((updatedConditionConfig, isValid) => {\n log.debug('handleConditionChange', updatedConditionConfig, isValid);\n setConditionConfig(updatedConditionConfig);\n setConditionValid(isValid);\n }, []);\n var handleStyleChange = useCallback(updatedStyleConfig => {\n log.debug('handleStyleChange', updatedStyleConfig);\n setStyle(updatedStyleConfig);\n }, []);\n useEffect(function updateRowFormat() {\n if (selectedColumn === undefined) {\n log.debug('Column is not selected, skip update.');\n return;\n }\n if (selectedStyle === undefined) {\n log.debug('Style is not selected, skip update.');\n return;\n }\n var {\n type,\n name\n } = selectedColumn;\n var column = {\n type,\n name\n };\n onChange(_objectSpread({\n column,\n style: selectedStyle\n }, conditionConfig), conditionValid);\n }, [onChange, selectedColumn, selectedStyle, conditionConfig, conditionValid]);\n var columnNames = useMemo(() => columns.map(_ref2 => {\n var {\n name\n } = _ref2;\n return name;\n }), [columns]);\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"conditional-rule-editor form\",\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"mb-2\",\n children: [/*#__PURE__*/_jsx(\"label\", {\n className: \"mb-0\",\n children: \"Format Row If\"\n }), /*#__PURE__*/_jsx(ComboBox, {\n \"aria-label\": \"Select column to format row by\",\n defaultSelectedKey: selectedColumn === null || selectedColumn === void 0 ? void 0 : selectedColumn.name,\n onChange: handleColumnChange,\n children: columnNames\n })]\n }), selectedColumn !== undefined && /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(ConditionEditor, {\n column: selectedColumn,\n config: conditionConfig,\n dh: dh,\n onChange: handleConditionChange\n }), /*#__PURE__*/_jsx(StyleEditor, {\n config: selectedStyle,\n onChange: handleStyleChange\n })]\n })]\n });\n}\nexport default RowFormatEditor;\n//# sourceMappingURL=RowFormatEditor.js.map","import React, { useCallback, useState } from 'react';\nimport classNames from 'classnames';\nimport { Button } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport { FormatColumnWhereIcon, FormatRowWhereIcon } from \"../icons/index.js\";\nimport ColumnFormatEditor from \"./ColumnFormatEditor.js\";\nimport RowFormatEditor from \"./RowFormatEditor.js\";\nimport { FormatterType, isSupportedColumn } from \"./ConditionalFormattingUtils.js\";\nimport \"./ConditionalFormatEditor.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('ConditionalFormatEditor');\nvar DEFAULT_CALLBACK = () => undefined;\nfunction getFormatterTypeIcon(option) {\n switch (option) {\n case FormatterType.CONDITIONAL:\n return /*#__PURE__*/_jsx(FormatColumnWhereIcon, {});\n case FormatterType.ROWS:\n return /*#__PURE__*/_jsx(FormatRowWhereIcon, {});\n }\n}\nfunction getFormatterTypeLabel(option) {\n switch (option) {\n case FormatterType.CONDITIONAL:\n return 'Conditional';\n case FormatterType.ROWS:\n return 'Rows';\n }\n}\nvar formatterTypes = [FormatterType.CONDITIONAL, FormatterType.ROWS];\nfunction ConditionalFormatEditor(props) {\n var _defaultRule$type;\n var {\n columns: originalColumns,\n dh,\n onSave = DEFAULT_CALLBACK,\n onUpdate = DEFAULT_CALLBACK,\n onCancel = DEFAULT_CALLBACK,\n rule: defaultRule\n } = props;\n var columns = originalColumns.filter(isSupportedColumn);\n var [selectedFormatter, setFormatter] = useState((_defaultRule$type = defaultRule === null || defaultRule === void 0 ? void 0 : defaultRule.type) !== null && _defaultRule$type !== void 0 ? _defaultRule$type : formatterTypes[0]);\n var [rule, setRule] = useState(defaultRule);\n var [isValid, setIsValid] = useState(false);\n var handleCancel = useCallback(() => {\n onCancel();\n }, [onCancel]);\n var handleSave = useCallback(() => {\n if (rule === undefined) {\n log.error('Rule is not defined.');\n return;\n }\n onSave(rule);\n }, [onSave, rule]);\n var handleFormatterChange = useCallback(value => {\n log.debug('handleFormatterChange', value);\n setFormatter(value);\n }, []);\n var handleRuleChange = useCallback((ruleConfig, isRuleValid) => {\n log.debug('handleRuleChange', ruleConfig, isRuleValid, selectedFormatter);\n var updatedRule = {\n type: selectedFormatter,\n config: ruleConfig\n };\n setRule(updatedRule);\n setIsValid(isRuleValid);\n onUpdate(isRuleValid ? updatedRule : undefined);\n }, [onUpdate, selectedFormatter]);\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"conditional-format-editor form\",\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"mb-2\",\n children: [/*#__PURE__*/_jsx(\"label\", {\n className: \"mb-0\",\n htmlFor: \"formatter-select\",\n children: \"Select Formatter\"\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"formatter-list\",\n children: formatterTypes.map((type, index) => /*#__PURE__*/_jsx(\"div\", {\n className: \"formatter-type\",\n children: /*#__PURE__*/_jsxs(\"button\", {\n type: \"button\",\n className: classNames('btn', 'btn-icon', 'btn-formatter-type', {\n active: type === selectedFormatter\n }),\n \"data-index\": index,\n onClick: () => handleFormatterChange(type),\n children: [getFormatterTypeIcon(type), getFormatterTypeLabel(type)]\n })\n }, type))\n })]\n }), selectedFormatter === FormatterType.CONDITIONAL && /*#__PURE__*/_jsx(ColumnFormatEditor, {\n columns: columns,\n dh: dh,\n config: rule === null || rule === void 0 ? void 0 : rule.config,\n onChange: handleRuleChange\n }), selectedFormatter === FormatterType.ROWS && /*#__PURE__*/_jsx(RowFormatEditor, {\n columns: columns,\n config: rule === null || rule === void 0 ? void 0 : rule.config,\n dh: dh,\n onChange: handleRuleChange\n }), /*#__PURE__*/_jsx(\"hr\", {}), /*#__PURE__*/_jsxs(\"div\", {\n className: \"d-flex justify-content-end my-3\",\n children: [/*#__PURE__*/_jsx(Button, {\n kind: \"secondary\",\n onClick: handleCancel,\n className: \"mr-2\",\n children: \"Cancel\"\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"primary\",\n onClick: handleSave,\n disabled: rule === undefined || !isValid,\n children: \"Done\"\n })]\n })]\n });\n}\nexport default ConditionalFormatEditor;\n//# sourceMappingURL=ConditionalFormatEditor.js.map","import React, { useEffect, useRef, useState } from 'react';\nimport { Editor } from '@deephaven/console';\nimport { Button, CopyButton, Modal, ModalBody, ModalHeader } from '@deephaven/components';\nimport { vsJson, vsListOrdered } from '@deephaven/icons';\nimport \"./IrisGridCellOverflowModal.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nexport default function IrisGridCellOverflowModal(_ref) {\n var _editorRef$current$ge, _editorRef$current2;\n var {\n text,\n isOpen,\n onClose\n } = _ref;\n var [isOpened, setIsOpened] = useState(false);\n var [height, setHeight] = useState(0);\n var [showLineNumbers, setShowLineNumbers] = useState(false);\n var [isFormatted, setIsFormatted] = useState(false);\n var [canFormat, setCanFormat] = useState(false);\n var editorRef = useRef();\n\n // Update format button on open\n useEffect(function enableFormatButtonWhenOpen() {\n if (!isOpen) {\n return;\n }\n try {\n JSON.parse(text);\n setCanFormat(true);\n } catch (_unused) {\n setCanFormat(false);\n }\n setIsFormatted(false);\n }, [isOpen, text]);\n\n // Re-layout editor on height change\n useEffect(function updateLayoutOnHeightChange() {\n if (editorRef.current) {\n editorRef.current.layout();\n }\n }, [height]);\n\n // Update editor options on line number toggle\n useEffect(function toggleShowLineNumber() {\n if (editorRef.current) {\n editorRef.current.updateOptions({\n lineNumbers: showLineNumbers ? 'on' : 'off'\n });\n }\n }, [showLineNumbers]);\n function toggleLineNumbers() {\n setShowLineNumbers(!showLineNumbers);\n }\n function formatAsJSON() {\n var _editorRef$current;\n var model = (_editorRef$current = editorRef.current) === null || _editorRef$current === void 0 ? void 0 : _editorRef$current.getModel();\n if (!canFormat || !model) {\n return;\n }\n if (!isFormatted) {\n model.setValue(JSON.stringify(JSON.parse(text), undefined, 2));\n setIsFormatted(true);\n } else {\n model.setValue(text);\n setIsFormatted(false);\n }\n autoSetLineNumbers();\n }\n function autoSetLineNumbers() {\n var _editor$getModel$getL, _editor$getModel;\n var editor = editorRef.current;\n if (!editor) {\n return;\n }\n setShowLineNumbers(((_editor$getModel$getL = (_editor$getModel = editor.getModel()) === null || _editor$getModel === void 0 ? void 0 : _editor$getModel.getLineCount()) !== null && _editor$getModel$getL !== void 0 ? _editor$getModel$getL : 0) > 1);\n }\n function handleToggle() {\n if (isOpened) {\n editorRef.current = undefined;\n onClose();\n }\n }\n function onEditorInitialized(editor) {\n editorRef.current = editor;\n setHeight(editor.getContentHeight());\n editor.onDidContentSizeChange(_ref2 => {\n var {\n contentHeight\n } = _ref2;\n return setHeight(contentHeight);\n });\n autoSetLineNumbers();\n }\n if (!isOpen && !isOpened) {\n return null;\n }\n return /*#__PURE__*/_jsxs(Modal, {\n isOpen: isOpen,\n centered: true,\n keyboard: true,\n toggle: handleToggle,\n onOpened: () => setIsOpened(true),\n onClosed: () => {\n setIsOpened(false);\n setHeight(0);\n },\n className: \"cell-overflow-modal\",\n size: \"xl\",\n children: [/*#__PURE__*/_jsxs(ModalHeader, {\n toggle: onClose,\n children: [/*#__PURE__*/_jsx(\"h5\", {\n className: \"overflow-modal-title\",\n children: \"Cell Contents\"\n }), /*#__PURE__*/_jsx(CopyButton, {\n kind: \"inline\",\n tooltip: \"Copy cell contents\",\n copy: (_editorRef$current$ge = (_editorRef$current2 = editorRef.current) === null || _editorRef$current2 === void 0 ? void 0 : _editorRef$current2.getValue()) !== null && _editorRef$current$ge !== void 0 ? _editorRef$current$ge : text\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"inline\",\n active: showLineNumbers,\n icon: vsListOrdered,\n tooltip: \"Toggle line numbers\",\n onClick: toggleLineNumbers\n }), canFormat && /*#__PURE__*/_jsx(Button, {\n kind: \"inline\",\n icon: vsJson,\n active: isFormatted,\n tooltip: \"Format as JSON\",\n onClick: formatAsJSON\n })]\n }), /*#__PURE__*/_jsx(ModalBody, {\n style: {\n height\n },\n children: /*#__PURE__*/_jsx(Editor, {\n onEditorInitialized: onEditorInitialized,\n settings: {\n value: text,\n readOnly: true,\n wordWrap: 'on',\n // Loading json language w/o the monaco workers causes UI freezes and monaco errors. TS colorizes the same\n language: canFormat ? 'typescript' : 'plaintext',\n folding: canFormat,\n padding: {\n bottom: 16\n },\n lineNumbers: showLineNumbers ? 'on' : 'off',\n overviewRulerLanes: 0,\n renderLineHighlight: 'none',\n /*\n The entire string may be 1 giant line\n Monaco by default seeds find w/ that line\n On very long strings this hangs the browser, so never seed the search\n */\n find: {\n seedSearchStringFromSelection: 'never'\n }\n }\n })\n })]\n });\n}\n//# sourceMappingURL=IrisGridCellOverflowModal.js.map","import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsClose, vsArrowUp, vsArrowDown } from '@deephaven/icons';\nimport React, { forwardRef, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react';\nimport { Type as FilterType } from '@deephaven/filters';\nimport { Button, DateTimeInput, Select } from '@deephaven/components';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport classNames from 'classnames';\nimport \"./GotoRow.css\";\nimport { nanoid } from 'nanoid';\nimport IrisGridBottomBar from \"./IrisGridBottomBar.js\";\nimport { isIrisGridTableModelTemplate } from \"./IrisGridTableModelTemplate.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nvar DEFAULT_FORMAT_STRING = '###,##0';\nvar GotoRow = /*#__PURE__*/forwardRef((_ref, ref) => {\n var {\n gotoRow,\n gotoRowError,\n gotoValueError,\n onGotoRowSubmit,\n isShown,\n onEntering,\n onEntered: _onEntered,\n onExiting,\n onExited,\n model,\n onGotoRowNumberChanged,\n onClose,\n gotoValueSelectedColumnName,\n gotoValue,\n gotoValueFilter,\n onGotoValueSelectedColumnNameChanged,\n onGotoValueSelectedFilterChanged,\n onGotoValueChanged,\n onGotoValueSubmit\n } = _ref;\n var gotoRowInputRef = useRef(null);\n var gotoValueInputRef = useRef(null);\n var [isGotoRowActive, setIsGotoRowActive] = useState(false);\n var columns = [];\n if (isIrisGridTableModelTemplate(model)) {\n ({\n columns\n } = model.table);\n }\n var {\n dh,\n rowCount\n } = model;\n var gotoRowInputId = useMemo(() => \"goto-row-input-\".concat(nanoid()), []);\n var handleGotoValueNumberKeyDown = e => {\n if (e.key === 'Enter') {\n e.stopPropagation();\n e.preventDefault();\n onGotoValueSubmit();\n } else if ((e.key === 'Backspace' || e.key === 'Delete') && (gotoValue === \"\".concat(Number.POSITIVE_INFINITY) || gotoValue === \"\".concat(Number.NEGATIVE_INFINITY))) {\n onGotoValueInputChanged('');\n }\n };\n var handleGotoValueKeySubmit = e => {\n if (e.key === 'Enter') {\n e.stopPropagation();\n e.preventDefault();\n onGotoValueSubmit(e.shiftKey);\n }\n };\n var index = model.getColumnIndexByName(gotoValueSelectedColumnName);\n var selectedColumn = columns[index !== null && index !== void 0 ? index : 0];\n var columnType = selectedColumn === null || selectedColumn === void 0 ? void 0 : selectedColumn.type;\n var normalizedType = TableUtils.getNormalizedType(columnType);\n var onGotoValueInputChanged = value => {\n onGotoValueChanged(value !== null && value !== void 0 ? value : '');\n };\n useImperativeHandle(ref, () => ({\n focus() {\n var _gotoRowInputRef$curr;\n setIsGotoRowActive(true);\n (_gotoRowInputRef$curr = gotoRowInputRef.current) === null || _gotoRowInputRef$curr === void 0 ? void 0 : _gotoRowInputRef$curr.select();\n }\n }));\n var selectInput = () => {\n // when row changes without focus (i.e. via context menu), re-select input\n if (isGotoRowActive && document.activeElement !== gotoRowInputRef.current) {\n var _gotoRowInputRef$curr2;\n (_gotoRowInputRef$curr2 = gotoRowInputRef.current) === null || _gotoRowInputRef$curr2 === void 0 ? void 0 : _gotoRowInputRef$curr2.select();\n } else if (!isGotoRowActive && document.activeElement !== gotoValueInputRef.current) {\n var _gotoValueInputRef$cu;\n (_gotoValueInputRef$cu = gotoValueInputRef.current) === null || _gotoValueInputRef$cu === void 0 ? void 0 : _gotoValueInputRef$cu.select();\n }\n };\n useEffect(selectInput, [isGotoRowActive]);\n var renderValueInput = () => {\n switch (normalizedType) {\n case TableUtils.dataType.DECIMAL:\n case TableUtils.dataType.INT:\n return /*#__PURE__*/_jsx(\"div\", {\n className: \"goto-row-input\",\n children: /*#__PURE__*/_jsx(\"input\", {\n ref: gotoValueInputRef,\n className: classNames('form-control', {\n 'is-invalid': gotoValueError !== ''\n }),\n onKeyDown: handleGotoValueNumberKeyDown,\n placeholder: \"value\",\n onChange: e => {\n var value = e.target.value.toLowerCase();\n // regex tests for\n if (/^-?[0-9]*\\.?[0-9]*$/.test(e.target.value)) {\n onGotoValueInputChanged(e.target.value);\n } else if (value === '-i' || value === '-infinity') {\n onGotoValueInputChanged(\"\".concat(Number.NEGATIVE_INFINITY));\n } else if (value === 'i' || value === 'infinity') {\n onGotoValueInputChanged(\"\".concat(Number.POSITIVE_INFINITY));\n }\n },\n value: gotoValue,\n \"aria-label\": \"Value Input\"\n })\n });\n case TableUtils.dataType.DATETIME:\n return /*#__PURE__*/_jsx(\"div\", {\n className: \"goto-value-date-time-input\",\n children: /*#__PURE__*/_jsx(DateTimeInput, {\n ref: gotoValueInputRef,\n className: classNames('form-control', 'goto-value-date-time-input', {\n 'is-invalid': gotoValueError !== ''\n }),\n defaultValue: gotoValue,\n onChange: onGotoValueInputChanged,\n onSubmit: handleGotoValueKeySubmit,\n \"aria-label\": \"Value Input\"\n })\n });\n case TableUtils.dataType.STRING:\n return /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"goto-row-input\",\n children: /*#__PURE__*/_jsxs(Select, {\n className: \"custom-select\",\n onChange: eventTargetValue => {\n onGotoValueSelectedFilterChanged(eventTargetValue);\n },\n value: gotoValueFilter,\n \"aria-label\": \"filter-type-select\",\n children: [/*#__PURE__*/_jsx(\"option\", {\n value: FilterType.eqIgnoreCase,\n children: \"Equals (case-insensitive)\"\n }, FilterType.eqIgnoreCase), /*#__PURE__*/_jsx(\"option\", {\n value: FilterType.containsIgnoreCase,\n children: \"Contains (case-insensitive)\"\n }, FilterType.containsIgnoreCase), /*#__PURE__*/_jsx(\"option\", {\n value: FilterType.eq,\n children: \"Equals\"\n }, FilterType.eq), /*#__PURE__*/_jsx(\"option\", {\n value: FilterType.contains,\n children: \"Contains\"\n }, FilterType.contains)]\n })\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"goto-row-input\",\n children: /*#__PURE__*/_jsx(\"input\", {\n ref: gotoValueInputRef,\n className: classNames('form-control', {\n 'is-invalid': gotoValueError !== ''\n }),\n onKeyDown: handleGotoValueKeySubmit,\n placeholder: \"value\",\n onChange: e => onGotoValueInputChanged(e.target.value),\n value: gotoValue,\n \"aria-label\": \"Value Input\"\n })\n })]\n });\n case TableUtils.dataType.BOOLEAN:\n return /*#__PURE__*/_jsx(\"div\", {\n className: \"goto-row-input\",\n children: /*#__PURE__*/_jsxs(Select, {\n className: \"custom-select\",\n onChange: eventTargetValue => {\n onGotoValueInputChanged(eventTargetValue);\n },\n value: gotoValue,\n \"aria-label\": \"Value Input\",\n children: [/*#__PURE__*/_jsx(\"option\", {\n \"aria-label\": \"null value\",\n value: \"\"\n }, \"null\"), /*#__PURE__*/_jsx(\"option\", {\n value: \"true\",\n children: \"true\"\n }, \"true\"), /*#__PURE__*/_jsx(\"option\", {\n value: \"false\",\n children: \"false\"\n }, \"false\")]\n })\n });\n default:\n return /*#__PURE__*/_jsx(\"div\", {\n className: \"goto-row-input\",\n children: /*#__PURE__*/_jsx(\"input\", {\n ref: gotoValueInputRef,\n className: \"form-control\",\n onKeyDown: handleGotoValueKeySubmit,\n placeholder: \"value\",\n onChange: e => onGotoValueInputChanged(e.target.value),\n value: gotoValue,\n \"aria-label\": \"Value Input\"\n })\n });\n }\n };\n return /*#__PURE__*/_jsx(IrisGridBottomBar, {\n isShown: isShown,\n className: classNames('goto-row'),\n onEntering: onEntering,\n onEntered: () => {\n _onEntered();\n selectInput();\n },\n onExiting: onExiting,\n onExited: onExited,\n children: /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"goto-row-row\",\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: classNames('goto-row-wrapper', {\n 'is-inactive': !isGotoRowActive\n }),\n onClick: () => setIsGotoRowActive(true),\n onFocus: () => setIsGotoRowActive(true),\n role: \"group\",\n children: [/*#__PURE__*/_jsx(\"label\", {\n className: \"goto-row-text\",\n htmlFor: gotoRowInputId,\n children: \"Go to row\"\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"goto-row-input\",\n children: /*#__PURE__*/_jsx(\"input\", {\n ref: gotoRowInputRef,\n \"data-testid\": \"goto-row-input\",\n type: \"number\",\n onKeyDown: e => {\n if (e.key === 'Enter') {\n e.stopPropagation();\n e.preventDefault();\n onGotoRowSubmit();\n }\n },\n className: classNames('form-control', {\n 'is-invalid': gotoRowError !== ''\n }),\n placeholder: \"Row number\",\n onChange: event => {\n onGotoRowNumberChanged(event);\n },\n value: gotoRow,\n id: gotoRowInputId\n })\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"goto-row-text\",\n children: [\"of\", ' ', dh.i18n.NumberFormat.format(DEFAULT_FORMAT_STRING, rowCount)]\n }), gotoRowError && /*#__PURE__*/_jsx(\"div\", {\n className: \"text-danger\",\n children: gotoRowError\n })]\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"goto-row-close\",\n children: /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n onClick: onClose,\n children: /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsClose,\n style: {\n marginRight: '0'\n }\n })\n })\n })]\n }), model.isSeekRowAvailable && /*#__PURE__*/_jsx(\"div\", {\n className: \"goto-row-row\",\n children: /*#__PURE__*/_jsxs(\"div\", {\n className: classNames('goto-row-wrapper', {\n 'is-inactive': isGotoRowActive\n }),\n onClick: () => setIsGotoRowActive(false),\n onFocus: () => setIsGotoRowActive(false),\n role: \"group\",\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"goto-row-text\",\n children: \"Go to value\"\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"goto-row-input\",\n children: /*#__PURE__*/_jsx(Select, {\n className: \"custom-select\",\n onChange: eventTargetValue => {\n var columnName = eventTargetValue;\n onGotoValueSelectedColumnNameChanged(columnName);\n },\n value: gotoValueSelectedColumnName,\n \"aria-label\": \"column-name-select\",\n id: \"column-name-select\",\n children: columns.map(column => /*#__PURE__*/_jsx(\"option\", {\n value: column.name,\n children: column.name\n }, column.name))\n })\n }), renderValueInput(), /*#__PURE__*/_jsxs(\"div\", {\n children: [/*#__PURE__*/_jsx(Button, {\n tooltip: \"Previous match\",\n icon: vsArrowUp,\n kind: \"ghost\",\n disabled: gotoValue === '',\n onClick: () => {\n onGotoValueSubmit(true);\n }\n }), /*#__PURE__*/_jsx(Button, {\n tooltip: \"Next match\",\n icon: vsArrowDown,\n kind: \"ghost\",\n disabled: gotoValue === '',\n onClick: () => {\n onGotoValueSubmit(false);\n }\n })]\n }), gotoValueError && /*#__PURE__*/_jsx(\"div\", {\n className: \"text-danger\",\n children: gotoValueError\n })]\n })\n })]\n })\n });\n});\nGotoRow.displayName = 'GotoRow';\nexport default GotoRow;\n//# sourceMappingURL=GotoRow.js.map","import { Button, GLOBAL_SHORTCUTS, Modal, ModalBody, ModalFooter, ModalHeader } from '@deephaven/components';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nexport function NoPastePermissionModal(_ref) {\n var {\n isOpen,\n onClose,\n errorMessage\n } = _ref;\n var pasteShortcutText = GLOBAL_SHORTCUTS.PASTE.getDisplayText();\n return /*#__PURE__*/_jsxs(Modal, {\n isOpen: isOpen,\n toggle: onClose,\n centered: true,\n children: [/*#__PURE__*/_jsx(ModalHeader, {\n closeButton: false,\n children: \"No Paste Permission\"\n }), /*#__PURE__*/_jsxs(ModalBody, {\n children: [/*#__PURE__*/_jsx(\"p\", {\n children: errorMessage\n }), /*#__PURE__*/_jsxs(\"p\", {\n children: [\"You can still use \", pasteShortcutText, \" to paste.\"]\n })]\n }), /*#__PURE__*/_jsx(ModalFooter, {\n children: /*#__PURE__*/_jsx(Button, {\n kind: \"primary\",\n onClick: onClose,\n children: \"Dismiss\"\n })\n })]\n });\n}\n//# sourceMappingURL=NoPastePermissionModal.js.map","function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport React, { Component } from 'react';\nimport memoize from 'memoizee';\nimport classNames from 'classnames';\nimport { CSSTransition } from 'react-transition-group';\nimport PropTypes from 'prop-types';\nimport deepEqual from 'fast-deep-equal';\nimport Log from '@deephaven/log';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { ContextActions, Stack, Menu, Page, Popper, ThemeExport, Tooltip, Button, ContextActionUtils, SlideTransition } from '@deephaven/components';\nimport { Grid, GridRange, GridUtils, isEditableGridModel, isExpandableGridModel, isDeletableGridModel, isExpandableColumnGridModel } from '@deephaven/grid';\nimport { dhEye, dhFilterFilled, dhGraphLineUp, dhTriangleDownSquare, vsClose, vsCloudDownload, vsEdit, vsFilter, vsMenu, vsReply, vsRuby, vsSearch, vsSplitHorizontal, vsSymbolOperator, vsTools } from '@deephaven/icons';\nimport { DateUtils, Formatter, FormatterUtils, TableUtils, isSortDirection } from '@deephaven/jsapi-utils';\nimport { assertNotNull, copyToClipboard, EMPTY_ARRAY, EMPTY_MAP, Pending, PromiseUtils, ValidationError, getOrThrow } from '@deephaven/utils';\nimport { Type as FilterType } from '@deephaven/filters';\nimport throttle from 'lodash.throttle';\nimport debounce from 'lodash.debounce';\nimport clamp from 'lodash.clamp';\nimport { getFormatColumns } from \"./sidebar/conditional-formatting/ConditionalFormattingUtils.js\";\nimport PendingDataBottomBar from \"./PendingDataBottomBar.js\";\nimport IrisGridCopyHandler from \"./IrisGridCopyHandler.js\";\nimport FilterInputField from \"./FilterInputField.js\";\nimport { CopyCellKeyHandler, ClearFilterKeyHandler, CopyKeyHandler, ReverseKeyHandler } from \"./key-handlers/index.js\";\nimport { IrisGridCellOverflowMouseHandler, IrisGridColumnSelectMouseHandler, IrisGridColumnTooltipMouseHandler, IrisGridContextMenuHandler, IrisGridCopyCellMouseHandler, IrisGridDataSelectMouseHandler, IrisGridPartitionedTableMouseHandler, IrisGridFilterMouseHandler, IrisGridRowTreeMouseHandler, IrisGridSortMouseHandler, IrisGridTokenMouseHandler, PendingMouseHandler } from \"./mousehandlers/index.js\";\nimport ToastBottomBar from \"./ToastBottomBar.js\";\nimport IrisGridMetricCalculator from \"./IrisGridMetricCalculator.js\";\nimport IrisGridModelUpdater from \"./IrisGridModelUpdater.js\";\nimport IrisGridRenderer from \"./IrisGridRenderer.js\";\nimport { createDefaultIrisGridTheme } from \"./IrisGridTheme.js\";\nimport ColumnStatistics from \"./ColumnStatistics.js\";\nimport \"./IrisGrid.css\";\nimport AdvancedFilterCreator from \"./AdvancedFilterCreator.js\";\nimport { Aggregations, AggregationEdit, AggregationUtils, ChartBuilder, CustomColumnBuilder, OptionType, RollupRows, TableCsvExporter, TableSaver, VisibilityOrderingBuilder, DownloadServiceWorkerUtils } from \"./sidebar/index.js\";\nimport IrisGridUtils from \"./IrisGridUtils.js\";\nimport CrossColumnSearch from \"./CrossColumnSearch.js\";\nimport IrisGridModel from \"./IrisGridModel.js\";\nimport { isPartitionedGridModel } from \"./PartitionedGridModel.js\";\nimport IrisGridPartitionSelector from \"./IrisGridPartitionSelector.js\";\nimport SelectDistinctBuilder from \"./sidebar/SelectDistinctBuilder.js\";\nimport AdvancedSettingsType from \"./sidebar/AdvancedSettingsType.js\";\nimport AdvancedSettingsMenu from \"./sidebar/AdvancedSettingsMenu.js\";\nimport SHORTCUTS from \"./IrisGridShortcuts.js\";\nimport ConditionalFormattingMenu from \"./sidebar/conditional-formatting/ConditionalFormattingMenu.js\";\nimport ConditionalFormatEditor from \"./sidebar/conditional-formatting/ConditionalFormatEditor.js\";\nimport IrisGridCellOverflowModal from \"./IrisGridCellOverflowModal.js\";\nimport GotoRow from \"./GotoRow.js\";\nimport AggregationOperation from \"./sidebar/aggregations/AggregationOperation.js\";\nimport { IrisGridThemeContext } from \"./IrisGridThemeProvider.js\";\nimport { isMissingPartitionError } from \"./MissingPartitionError.js\";\nimport { NoPastePermissionModal } from \"./NoPastePermissionModal.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('IrisGrid');\nvar VIEWPORT_LOADING_DELAY = 500;\nvar UPDATE_DOWNLOAD_THROTTLE = 500;\nvar SET_FILTER_DEBOUNCE = 250;\nvar SEEK_ROW_DEBOUNCE = 250;\nvar SET_CONDITIONAL_FORMAT_DEBOUNCE = 250;\nvar DEFAULT_AGGREGATION_SETTINGS = Object.freeze({\n aggregations: EMPTY_ARRAY,\n showOnTop: false\n});\nvar UNFORMATTED_DATE_PATTERN = \"yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSS z\";\nfunction isEmptyConfig(_ref) {\n var {\n advancedFilters,\n aggregationSettings,\n customColumns,\n quickFilters,\n reverse,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts\n } = _ref;\n return advancedFilters.size === 0 && aggregationSettings.aggregations.length === 0 && customColumns.length === 0 && quickFilters.size === 0 && !reverse && rollupConfig == null && searchFilter == null && selectDistinctColumns.length === 0 && sorts.length === 0;\n}\nclass IrisGrid extends Component {\n // eslint-disable-next-line react/static-property-placement, react/sort-comp\n\n constructor(props) {\n var _model$layoutHints, _model$layoutHints$hi, _model$columns$0$name, _model$columns$;\n super(props);\n _defineProperty(this, \"grid\", void 0);\n _defineProperty(this, \"lastFocusedFilterBarColumn\", void 0);\n _defineProperty(this, \"lastLoadedConfig\", void 0);\n _defineProperty(this, \"tooltip\", void 0);\n _defineProperty(this, \"pending\", void 0);\n _defineProperty(this, \"globalColumnFormats\", void 0);\n _defineProperty(this, \"dateTimeFormatterOptions\", void 0);\n _defineProperty(this, \"decimalFormatOptions\", void 0);\n _defineProperty(this, \"integerFormatOptions\", void 0);\n _defineProperty(this, \"truncateNumbersWithPound\", void 0);\n _defineProperty(this, \"showEmptyStrings\", void 0);\n _defineProperty(this, \"showNullStrings\", void 0);\n _defineProperty(this, \"showExtraGroupColumn\", void 0);\n _defineProperty(this, \"loadingScrimStartTime\", void 0);\n _defineProperty(this, \"loadingScrimFinishTime\", void 0);\n _defineProperty(this, \"animationFrame\", void 0);\n _defineProperty(this, \"loadingTimer\", void 0);\n _defineProperty(this, \"tableSaver\", void 0);\n _defineProperty(this, \"crossColumnRef\", void 0);\n _defineProperty(this, \"isAnimating\", void 0);\n _defineProperty(this, \"filterInputRef\", void 0);\n _defineProperty(this, \"gotoRowRef\", void 0);\n _defineProperty(this, \"isCopying\", void 0);\n _defineProperty(this, \"toggleFilterBarAction\", void 0);\n _defineProperty(this, \"toggleSearchBarAction\", void 0);\n _defineProperty(this, \"toggleGotoRowAction\", void 0);\n _defineProperty(this, \"discardAction\", void 0);\n _defineProperty(this, \"commitAction\", void 0);\n _defineProperty(this, \"contextActions\", void 0);\n _defineProperty(this, \"tableUtils\", void 0);\n _defineProperty(this, \"keyHandlers\", void 0);\n _defineProperty(this, \"mouseHandlers\", void 0);\n _defineProperty(this, \"getAdvancedMenuOpenedHandler\", memoize(column => this.handleAdvancedMenuOpened.bind(this, column), {\n max: 100\n }));\n _defineProperty(this, \"getCachedAdvancedFilterMenuActions\", memoize((model, column, advancedFilterOptions, sortDirection, formatter) => /*#__PURE__*/_jsx(AdvancedFilterCreator, {\n model: model,\n column: column,\n onFilterChange: this.handleAdvancedFilterChange,\n onSortChange: this.handleAdvancedFilterSortChange,\n onDone: this.handleAdvancedFilterDone,\n options: advancedFilterOptions,\n sortDirection: sortDirection,\n formatter: formatter,\n tableUtils: this.tableUtils\n }), {\n max: 50\n }));\n _defineProperty(this, \"getCachedOptionItems\", memoize((isChartBuilderAvailable, isCustomColumnsAvailable, isFormatColumnsAvailable, isOrganizeColumnsAvailable, isRollupAvailable, isTotalsAvailable, isSelectDistinctAvailable, isExportAvailable, toggleFilterBarAction, toggleSearchBarAction, toggleGotoRowAction, isFilterBarShown, showSearchBar, canDownloadCsv, canToggleSearch, showGotoRow, hasAdvancedSettings) => {\n var optionItems = [];\n if (isChartBuilderAvailable) {\n optionItems.push({\n type: OptionType.CHART_BUILDER,\n title: 'Chart Builder',\n icon: dhGraphLineUp\n });\n }\n if (isOrganizeColumnsAvailable) {\n optionItems.push({\n type: OptionType.VISIBILITY_ORDERING_BUILDER,\n title: 'Organize Columns',\n icon: dhEye\n });\n }\n if (isFormatColumnsAvailable) {\n optionItems.push({\n type: OptionType.CONDITIONAL_FORMATTING,\n title: 'Conditional Formatting',\n icon: vsEdit\n });\n }\n if (isCustomColumnsAvailable) {\n optionItems.push({\n type: OptionType.CUSTOM_COLUMN_BUILDER,\n title: 'Custom Columns',\n icon: vsSplitHorizontal\n });\n }\n if (isRollupAvailable) {\n optionItems.push({\n type: OptionType.ROLLUP_ROWS,\n title: 'Rollup Rows',\n icon: dhTriangleDownSquare\n });\n }\n if (isTotalsAvailable) {\n optionItems.push({\n type: OptionType.AGGREGATIONS,\n title: 'Aggregate Columns',\n icon: vsSymbolOperator\n });\n }\n if (isSelectDistinctAvailable) {\n optionItems.push({\n type: OptionType.SELECT_DISTINCT,\n title: 'Select Distinct Values',\n icon: vsRuby\n });\n }\n if (isExportAvailable && canDownloadCsv) {\n optionItems.push({\n type: OptionType.TABLE_EXPORTER,\n title: 'Download CSV',\n icon: vsCloudDownload\n });\n }\n if (hasAdvancedSettings) {\n optionItems.push({\n type: OptionType.ADVANCED_SETTINGS,\n title: 'Advanced Settings',\n icon: vsTools\n });\n }\n optionItems.push({\n type: OptionType.QUICK_FILTERS,\n title: 'Quick Filters',\n subtitle: toggleFilterBarAction.shortcut.getDisplayText(),\n icon: vsFilter,\n isOn: isFilterBarShown,\n onChange: toggleFilterBarAction.action\n });\n if (canToggleSearch) {\n optionItems.push({\n type: OptionType.SEARCH_BAR,\n title: 'Search Bar',\n subtitle: toggleSearchBarAction.shortcut.getDisplayText(),\n icon: vsSearch,\n isOn: showSearchBar,\n onChange: toggleSearchBarAction.action\n });\n }\n optionItems.push({\n type: OptionType.GOTO,\n title: 'Go to',\n subtitle: toggleGotoRowAction.shortcut.getDisplayText(),\n icon: vsReply,\n isOn: showGotoRow,\n onChange: toggleGotoRowAction.action\n });\n return Object.freeze(optionItems);\n }, {\n max: 1\n }));\n _defineProperty(this, \"getCachedHiddenColumns\", memoize((metricCalculator, userColumnWidths) => IrisGridUtils.getHiddenColumns(new Map([...metricCalculator.initialColumnWidths, ...userColumnWidths])), {\n max: 1\n }));\n _defineProperty(this, \"getAggregationMap\", memoize((columns, aggregations) => {\n var aggregationMap = {};\n aggregations.forEach(_ref2 => {\n var {\n operation,\n selected,\n invert\n } = _ref2;\n aggregationMap[operation] = AggregationUtils.getOperationColumnNames(columns, operation, selected, invert);\n });\n return aggregationMap;\n }, {\n max: 1\n }));\n _defineProperty(this, \"getOperationMap\", memoize((columns, aggregations) => {\n var operationMap = {};\n aggregations.filter(a => !AggregationUtils.isRollupOperation(a.operation)).forEach(_ref3 => {\n var {\n operation,\n selected,\n invert\n } = _ref3;\n AggregationUtils.getOperationColumnNames(columns, operation, selected, invert).forEach(name => {\n var _operationMap$name;\n var newOperations = [...((_operationMap$name = operationMap[name]) !== null && _operationMap$name !== void 0 ? _operationMap$name : []), operation];\n operationMap[name] = Object.freeze(newOperations);\n });\n });\n return operationMap;\n }, {\n max: 1\n }));\n _defineProperty(this, \"getOperationOrder\", memoize(aggregations => aggregations.map(a => a.operation).filter(o => !AggregationUtils.isRollupOperation(o)), {\n max: 1\n }));\n _defineProperty(this, \"getCachedFormatColumns\", memoize((dh, columns, rules) => getFormatColumns(dh, columns, rules), {\n max: 1000\n }));\n _defineProperty(this, \"getCachedPreviewFormatColumns\", memoize((dh, columns, rulesParam, preview, editIndex) => {\n log.debug('getCachedPreviewFormatColumns', rulesParam, preview, editIndex);\n if (preview !== undefined && editIndex !== undefined) {\n var rules = [...rulesParam];\n rules[editIndex] = preview;\n return this.getCachedFormatColumns(dh, columns, rules);\n }\n return this.getCachedFormatColumns(dh, columns, rulesParam);\n }, {\n max: 1\n }));\n _defineProperty(this, \"getModelRollupConfig\", memoize((originalColumns, config, aggregationSettings) => IrisGridUtils.getModelRollupConfig(originalColumns, config, aggregationSettings), {\n max: 1\n }));\n _defineProperty(this, \"getModelTotalsConfig\", memoize((columns, config, aggregationSettings) => {\n var _config$columns$lengt, _config$columns;\n if (((_config$columns$lengt = config === null || config === void 0 ? void 0 : (_config$columns = config.columns) === null || _config$columns === void 0 ? void 0 : _config$columns.length) !== null && _config$columns$lengt !== void 0 ? _config$columns$lengt : 0) > 0) {\n // If we've got rollups, then aggregations are applied as part of that...\n return null;\n }\n\n // Filter out aggregations without any columns actually selected\n var aggregations = aggregationSettings.aggregations.filter(agg => agg.selected.length > 0 || agg.invert);\n if (aggregations.length === 0) {\n // We don't actually have any aggregations set, don't bother\n return null;\n }\n var operationMap = this.getOperationMap(columns, aggregations);\n var operationOrder = this.getOperationOrder(aggregations);\n return {\n operationMap,\n operationOrder,\n showOnTop: aggregationSettings.showOnTop,\n defaultOperation: AggregationOperation.SKIP\n };\n }, {\n max: 1\n }));\n _defineProperty(this, \"getCachedStateOverride\", memoize((model, theme, hoverSelectColumn, isFilterBarShown, isSelectingColumn, loadingScrimProgress, quickFilters, advancedFilters, sorts, reverse, rollupConfig, isMenuShown) => ({\n model,\n theme,\n hoverSelectColumn,\n isFilterBarShown,\n isSelectingColumn,\n loadingScrimProgress,\n quickFilters,\n advancedFilters,\n sorts,\n reverse,\n rollupConfig,\n isMenuShown\n }), {\n max: 1\n }));\n _defineProperty(this, \"getCachedFilter\", memoize((customFilters, quickFilters, advancedFilters, searchFilter) => [...(customFilters !== null && customFilters !== void 0 ? customFilters : []), ...IrisGridUtils.getFiltersFromFilterMap(quickFilters), ...IrisGridUtils.getFiltersFromFilterMap(advancedFilters), ...(searchFilter !== undefined ? [searchFilter] : [])], {\n max: 1\n }));\n _defineProperty(this, \"getCachedTheme\", memoize((contextTheme, theme, isEditable, floatingRowCount, density) => {\n var _theme$rowFooterWidth;\n // If a theme is available via context, use that as the base theme.\n // If iris-grid is standalone without a context, use the default theme.\n var baseTheme = contextTheme !== null && contextTheme !== void 0 ? contextTheme : createDefaultIrisGridTheme();\n\n // We only show the row footers when we have floating rows for aggregations\n var rowFooterWidth = floatingRowCount > 0 ? (_theme$rowFooterWidth = theme === null || theme === void 0 ? void 0 : theme.rowFooterWidth) !== null && _theme$rowFooterWidth !== void 0 ? _theme$rowFooterWidth : baseTheme.rowFooterWidth : 0;\n var {\n metricCalculator\n } = this.state;\n if (metricCalculator != null) {\n metricCalculator.resetCalculatedColumnWidths();\n metricCalculator.resetCalculatedRowHeights();\n }\n var densityTheme = {};\n if (density === 'compact') {\n densityTheme = baseTheme.density.compact;\n } else if (density === 'spacious') {\n densityTheme = baseTheme.density.spacious;\n }\n return _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, baseTheme), densityTheme), theme), {}, {\n autoSelectRow: !isEditable,\n rowFooterWidth\n });\n }, {\n max: 1\n }));\n _defineProperty(this, \"getCachedKeyHandlers\", memoize(keyHandlers => [...keyHandlers, ...this.keyHandlers].sort((a, b) => a.order - b.order), {\n max: 1\n }));\n _defineProperty(this, \"getCachedMouseHandlers\", memoize(mouseHandlers => [...mouseHandlers, ...this.mouseHandlers], {\n max: 1\n }));\n _defineProperty(this, \"getCachedRenderer\", memoize(rendererProp => rendererProp !== null && rendererProp !== void 0 ? rendererProp : new IrisGridRenderer(), {\n max: 1\n }));\n _defineProperty(this, \"getAlwaysFetchColumns\", memoize((alwaysFetchColumns, columns, movedColumns, floatingLeftColumnCount, floatingRightColumnCount, draggingRange) => {\n var floatingColumns = [];\n for (var i = 0; i < floatingLeftColumnCount; i += 1) {\n floatingColumns.push(columns[GridUtils.getModelIndex(i, movedColumns)].name);\n }\n for (var _i = 0; _i < floatingRightColumnCount; _i += 1) {\n floatingColumns.push(columns[GridUtils.getModelIndex(columns.length - 1 - _i, movedColumns)].name);\n }\n if (draggingRange) {\n for (var _i2 = draggingRange[0]; _i2 <= draggingRange[1]; _i2 += 1) {\n floatingColumns.push(columns[GridUtils.getModelIndex(_i2, movedColumns)].name);\n }\n }\n var columnSet = new Set([...alwaysFetchColumns, ...floatingColumns]);\n return Object.freeze([...columnSet]);\n }, {\n max: 1\n }));\n _defineProperty(this, \"updateSearchFilter\", debounce((searchValue, selectedSearchColumns, columns, invertSearchColumns) => {\n var {\n model\n } = this.props;\n var searchFilter = CrossColumnSearch.createSearchFilter(model.dh, searchValue, selectedSearchColumns, columns, invertSearchColumns);\n this.setState({\n searchFilter\n });\n }, SET_FILTER_DEBOUNCE));\n _defineProperty(this, \"showViewportLoading\", throttle(() => {\n var {\n model\n } = this.props;\n var {\n loadingSpinnerShown\n } = this.state;\n if (model.isViewportPending && !loadingSpinnerShown) {\n // We only want to show the viewport loading if the viewport is still loading\n // and we're not already showing a loader for something else\n this.startLoading('Waiting for viewport...', {\n loadingCancelShown: false,\n loadingBlocksGrid: false\n });\n }\n }, VIEWPORT_LOADING_DELAY, {\n leading: false,\n trailing: true\n }));\n _defineProperty(this, \"handleConditionalFormatEditorUpdate\", debounce(conditionalFormatPreview => {\n this.setState({\n conditionalFormatPreview\n });\n }, SET_CONDITIONAL_FORMAT_DEBOUNCE));\n _defineProperty(this, \"handleDownloadProgressUpdate\", throttle((tableDownloadProgress, tableDownloadEstimatedTime) => {\n var {\n tableDownloadStatus\n } = this.state;\n if (tableDownloadStatus === TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING) {\n this.setState({\n tableDownloadProgress,\n tableDownloadEstimatedTime\n });\n }\n }, UPDATE_DOWNLOAD_THROTTLE));\n _defineProperty(this, \"getOverflowButtonTooltip\", memoize(overflowButtonTooltipProps => {\n if (overflowButtonTooltipProps == null) {\n return null;\n }\n var wrapperStyle = _objectSpread(_objectSpread({\n position: 'absolute'\n }, overflowButtonTooltipProps), {}, {\n pointerEvents: 'none'\n });\n var popperOptions = {\n placement: 'left',\n modifiers: {\n flip: {\n behavior: ['left', 'right']\n }\n }\n };\n return /*#__PURE__*/_jsx(\"div\", {\n style: wrapperStyle,\n children: /*#__PURE__*/_jsx(Tooltip, {\n options: popperOptions,\n ref: this.handleTooltipRef,\n children: \"View full contents\"\n }, Date.now())\n });\n }, {\n max: 1\n }));\n _defineProperty(this, \"getExpandCellTooltip\", memoize(expandCellTooltipProps => {\n if (expandCellTooltipProps == null) {\n return null;\n }\n var {\n expandTooltipDisplayValue\n } = this.state;\n var {\n model\n } = this.props;\n var isExpandAllAvailable = isExpandableGridModel(model) && model.isExpandAllAvailable;\n var wrapperStyle = _objectSpread(_objectSpread({\n position: 'absolute'\n }, expandCellTooltipProps), {}, {\n pointerEvents: 'none'\n });\n var popperOptions = {\n placement: 'bottom-start'\n };\n return /*#__PURE__*/_jsx(\"div\", {\n style: wrapperStyle,\n children: /*#__PURE__*/_jsx(Tooltip, {\n options: popperOptions,\n ref: this.handleTooltipRef,\n children: /*#__PURE__*/_jsxs(\"div\", {\n style: {\n textAlign: 'left'\n },\n children: [\"Click to \", expandTooltipDisplayValue, \" row\", isExpandAllAvailable && /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(\"br\", {}), ContextActionUtils.isMacPlatform() ? '⌘' : 'Ctrl+', \"Click to expand row and all children\"]\n })]\n })\n }, Date.now())\n });\n }, {\n max: 1\n }));\n _defineProperty(this, \"getHoverTooltip\", memoize(hoverTooltipProps => {\n if (hoverTooltipProps == null) {\n return null;\n }\n var {\n hoverDisplayValue\n } = this.state;\n var wrapperStyle = _objectSpread(_objectSpread({\n position: 'absolute'\n }, hoverTooltipProps), {}, {\n pointerEvents: 'none'\n });\n var popperOptions = {\n placement: 'bottom'\n };\n return /*#__PURE__*/_jsx(\"div\", {\n style: wrapperStyle,\n children: /*#__PURE__*/_jsx(Tooltip, {\n options: popperOptions,\n ref: this.handleTooltipRef,\n children: /*#__PURE__*/_jsx(\"div\", {\n className: \"link-hover-tooltip\",\n children: hoverDisplayValue\n })\n })\n });\n }, {\n max: 1\n }));\n _defineProperty(this, \"handleGotoValueChanged\", input => {\n this.setState({\n gotoValue: input,\n gotoValueManuallyChanged: true\n });\n this.debouncedSeekRow(input);\n });\n _defineProperty(this, \"debouncedSeekRow\", debounce(input => {\n this.seekRow(input);\n }, SEEK_ROW_DEBOUNCE));\n this.handleAdvancedFilterChange = this.handleAdvancedFilterChange.bind(this);\n this.handleAdvancedFilterSortChange = this.handleAdvancedFilterSortChange.bind(this);\n this.handleAdvancedFilterDone = this.handleAdvancedFilterDone.bind(this);\n this.handleAdvancedMenuOpened = this.handleAdvancedMenuOpened.bind(this);\n this.handleGotoRowOpened = this.handleGotoRowOpened.bind(this);\n this.handleGotoRowClosed = this.handleGotoRowClosed.bind(this);\n this.handleAdvancedMenuClosed = this.handleAdvancedMenuClosed.bind(this);\n this.handleAggregationChange = this.handleAggregationChange.bind(this);\n this.handleAggregationsChange = this.handleAggregationsChange.bind(this);\n this.handleAggregationEdit = this.handleAggregationEdit.bind(this);\n this.handleAnimationLoop = this.handleAnimationLoop.bind(this);\n this.handleAnimationStart = this.handleAnimationStart.bind(this);\n this.handleAnimationEnd = this.handleAnimationEnd.bind(this);\n this.handleChartChange = this.handleChartChange.bind(this);\n this.handleChartCreate = this.handleChartCreate.bind(this);\n this.handleGridError = this.handleGridError.bind(this);\n this.handleFilterBarChange = this.handleFilterBarChange.bind(this);\n this.handleFilterBarDone = this.handleFilterBarDone.bind(this);\n this.handleFilterBarTab = this.handleFilterBarTab.bind(this);\n this.handleCancel = this.handleCancel.bind(this);\n this.handleMenu = this.handleMenu.bind(this);\n this.handleMenuClose = this.handleMenuClose.bind(this);\n this.handleMenuSelect = this.handleMenuSelect.bind(this);\n this.handleMenuBack = this.handleMenuBack.bind(this);\n this.handleRequestFailed = this.handleRequestFailed.bind(this);\n this.handleSelectionChanged = this.handleSelectionChanged.bind(this);\n this.handleMovedColumnsChanged = this.handleMovedColumnsChanged.bind(this);\n this.handleHeaderGroupsChanged = this.handleHeaderGroupsChanged.bind(this);\n this.handleUpdate = this.handleUpdate.bind(this);\n this.handleTableChanged = this.handleTableChanged.bind(this);\n this.handleTooltipRef = this.handleTooltipRef.bind(this);\n this.handleViewChanged = this.handleViewChanged.bind(this);\n this.handleFormatSelection = this.handleFormatSelection.bind(this);\n this.handleColumnAlignmentChange = this.handleColumnAlignmentChange.bind(this);\n this.handleConditionalFormatCreate = this.handleConditionalFormatCreate.bind(this);\n this.handleConditionalFormatEdit = this.handleConditionalFormatEdit.bind(this);\n this.handleConditionalFormatsChange = this.handleConditionalFormatsChange.bind(this);\n this.handleConditionalFormatEditorSave = this.handleConditionalFormatEditorSave.bind(this);\n this.handleConditionalFormatEditorCancel = this.handleConditionalFormatEditorCancel.bind(this);\n this.handleUpdateCustomColumns = this.handleUpdateCustomColumns.bind(this);\n this.handleCustomColumnsChanged = this.handleCustomColumnsChanged.bind(this);\n this.handleSelectDistinctChanged = this.handleSelectDistinctChanged.bind(this);\n this.handlePendingDataUpdated = this.handlePendingDataUpdated.bind(this);\n this.handleViewportUpdated = this.handleViewportUpdated.bind(this);\n this.handlePendingCommitClicked = this.handlePendingCommitClicked.bind(this);\n this.handlePendingDiscardClicked = this.handlePendingDiscardClicked.bind(this);\n this.handleGotoRowSelectedRowNumberSubmit = this.handleGotoRowSelectedRowNumberSubmit.bind(this);\n this.focusRowInGrid = this.focusRowInGrid.bind(this);\n this.handleDownloadTable = this.handleDownloadTable.bind(this);\n this.handleDownloadTableStart = this.handleDownloadTableStart.bind(this);\n this.handleCancelDownloadTable = this.handleCancelDownloadTable.bind(this);\n this.handleDownloadCanceled = this.handleDownloadCanceled.bind(this);\n this.handleDownloadCompleted = this.handleDownloadCompleted.bind(this);\n this.handlePartitionChange = this.handlePartitionChange.bind(this);\n this.handleColumnVisibilityChanged = this.handleColumnVisibilityChanged.bind(this);\n this.handleColumnVisibilityReset = this.handleColumnVisibilityReset.bind(this);\n this.handleCrossColumnSearch = this.handleCrossColumnSearch.bind(this);\n this.handleRollupChange = this.handleRollupChange.bind(this);\n this.handleOverflowClose = this.handleOverflowClose.bind(this);\n this.handleCloseNoPastePermissionModal = this.handleCloseNoPastePermissionModal.bind(this);\n this.getColumnBoundingRect = this.getColumnBoundingRect.bind(this);\n this.handleGotoRowSelectedRowNumberChanged = this.handleGotoRowSelectedRowNumberChanged.bind(this);\n this.handleGotoValueSelectedColumnNameChanged = this.handleGotoValueSelectedColumnNameChanged.bind(this);\n this.handleGotoValueSelectedFilterChanged = this.handleGotoValueSelectedFilterChanged.bind(this);\n this.handleGotoValueChanged = this.handleGotoValueChanged.bind(this);\n this.handleGotoValueSubmitted = this.handleGotoValueSubmitted.bind(this);\n this.handleViewportUpdated = this.handleViewportUpdated.bind(this);\n this.makeQuickFilter = this.makeQuickFilter.bind(this);\n this.setFilterMap = this.setFilterMap.bind(this);\n this.grid = null;\n this.lastLoadedConfig = null;\n this.pending = new Pending();\n this.globalColumnFormats = EMPTY_ARRAY;\n this.decimalFormatOptions = {};\n this.integerFormatOptions = {};\n this.truncateNumbersWithPound = false;\n this.showEmptyStrings = true;\n this.showNullStrings = true;\n this.showExtraGroupColumn = true;\n\n // When the loading scrim started/when it should extend to the end of the screen.\n this.tableSaver = null;\n this.crossColumnRef = /*#__PURE__*/React.createRef();\n this.isAnimating = false;\n this.filterInputRef = /*#__PURE__*/React.createRef();\n this.gotoRowRef = /*#__PURE__*/React.createRef();\n this.isCopying = false;\n this.toggleFilterBarAction = {\n action: () => this.toggleFilterBar(),\n shortcut: SHORTCUTS.TABLE.TOGGLE_QUICK_FILTER\n };\n this.toggleSearchBarAction = {\n action: () => this.toggleSearchBar(),\n shortcut: SHORTCUTS.TABLE.TOGGLE_SEARCH\n };\n this.toggleGotoRowAction = {\n action: () => this.toggleGotoRow(),\n shortcut: SHORTCUTS.TABLE.GOTO_ROW\n };\n this.discardAction = {\n action: () => {\n var {\n model\n } = this.props;\n if (isEditableGridModel(model) && model.isEditable && model.pendingDataMap.size > 0) {\n this.discardPending().catch(log.error);\n }\n },\n shortcut: SHORTCUTS.INPUT_TABLE.DISCARD\n };\n this.commitAction = {\n action: () => {\n var {\n model\n } = this.props;\n if (isEditableGridModel(model) && model.isEditable && model.pendingDataMap.size > 0 && model.pendingDataErrors.size === 0) {\n this.commitPending().catch(log.error);\n }\n },\n shortcut: SHORTCUTS.INPUT_TABLE.COMMIT\n };\n this.contextActions = [this.toggleFilterBarAction, this.toggleSearchBarAction, this.toggleGotoRowAction, this.discardAction, this.commitAction];\n var {\n aggregationSettings: _aggregationSettings,\n conditionalFormats,\n customColumnFormatMap,\n columnAlignmentMap,\n isFilterBarShown: _isFilterBarShown,\n isSelectingPartition,\n partitions,\n partitionConfig,\n model: _model,\n movedColumns: movedColumnsProp,\n movedRows: movedRowsProp,\n rollupConfig: _rollupConfig,\n userColumnWidths: _userColumnWidths,\n userRowHeights,\n showSearchBar: _showSearchBar,\n searchValue: _searchValue,\n selectedSearchColumns: _selectedSearchColumns,\n invertSearchColumns: _invertSearchColumns,\n advancedFilters: _advancedFilters,\n quickFilters: _quickFilters,\n selectDistinctColumns,\n pendingDataMap,\n canCopy,\n frozenColumns,\n columnHeaderGroups\n } = props;\n var {\n dh: _dh\n } = _model;\n var _keyHandlers = [new CopyCellKeyHandler(this), new ReverseKeyHandler(this), new ClearFilterKeyHandler(this)];\n var _mouseHandlers = [new IrisGridCellOverflowMouseHandler(this), new IrisGridRowTreeMouseHandler(this), new IrisGridTokenMouseHandler(this), new IrisGridColumnSelectMouseHandler(this), new IrisGridColumnTooltipMouseHandler(this), new IrisGridSortMouseHandler(this), new IrisGridFilterMouseHandler(this), new IrisGridContextMenuHandler(this, _dh), new IrisGridDataSelectMouseHandler(this), new PendingMouseHandler(this), new IrisGridPartitionedTableMouseHandler(this)];\n if (canCopy) {\n _keyHandlers.push(new CopyKeyHandler(this));\n _mouseHandlers.push(new IrisGridCopyCellMouseHandler(this));\n }\n var _movedColumns = movedColumnsProp.length > 0 ? movedColumnsProp : _model.initialMovedColumns;\n var movedRows = movedRowsProp.length > 0 ? movedRowsProp : _model.initialMovedRows;\n var _metricCalculator = new IrisGridMetricCalculator({\n userColumnWidths: new Map(_userColumnWidths),\n userRowHeights: new Map(userRowHeights),\n movedColumns: _movedColumns,\n initialColumnWidths: new Map(_model === null || _model === void 0 ? void 0 : (_model$layoutHints = _model.layoutHints) === null || _model$layoutHints === void 0 ? void 0 : (_model$layoutHints$hi = _model$layoutHints.hiddenColumns) === null || _model$layoutHints$hi === void 0 ? void 0 : _model$layoutHints$hi.map(name => [_model.getColumnIndexByName(name), 0]))\n });\n var searchColumns = _selectedSearchColumns !== null && _selectedSearchColumns !== void 0 ? _selectedSearchColumns : [];\n var _searchFilter = CrossColumnSearch.createSearchFilter(_dh, _searchValue, searchColumns, _model.columns, _invertSearchColumns);\n this.tableUtils = new TableUtils(_dh);\n this.mouseHandlers = _mouseHandlers;\n this.keyHandlers = _keyHandlers;\n this.state = {\n isFilterBarShown: _isFilterBarShown,\n isSelectingPartition,\n focusedFilterBarColumn: null,\n metricCalculator: _metricCalculator,\n metrics: undefined,\n partitionConfig: partitionConfig !== null && partitionConfig !== void 0 ? partitionConfig : partitions && partitions.length ? {\n partitions,\n mode: 'partition'\n } : undefined,\n // setAdvancedFilter and setQuickFilter mutate the arguments\n // so we want to always use map copies from the state instead of props\n quickFilters: _quickFilters ? new Map(_quickFilters) : new Map(),\n advancedFilters: new Map(_advancedFilters),\n shownAdvancedFilter: null,\n hoverAdvancedFilter: null,\n sorts: [],\n reverse: false,\n customColumns: [],\n selectDistinctColumns,\n // selected range in table\n selectedRanges: [],\n // Current ongoing copy operation\n copyOperation: null,\n // The filter that is currently being applied. Reset after update is received\n loadingText: null,\n loadingScrimProgress: null,\n loadingSpinnerShown: false,\n loadingCancelShown: false,\n loadingBlocksGrid: false,\n movedColumns: _movedColumns,\n movedRows,\n shownColumnTooltip: null,\n formatter: new Formatter(_dh),\n isMenuShown: false,\n customColumnFormatMap: new Map(customColumnFormatMap),\n columnAlignmentMap: new Map(columnAlignmentMap),\n conditionalFormats,\n conditionalFormatEditIndex: null,\n conditionalFormatPreview: undefined,\n // Column user is hovering over for selection\n hoverSelectColumn: null,\n isTableDownloading: false,\n isReady: false,\n tableDownloadStatus: '',\n tableDownloadProgress: 0,\n tableDownloadEstimatedTime: 0,\n showSearchBar: _showSearchBar,\n searchFilter: _searchFilter,\n searchValue: _searchValue,\n selectedSearchColumns: searchColumns,\n invertSearchColumns: _invertSearchColumns,\n rollupConfig: _rollupConfig,\n rollupSelectedColumns: [],\n aggregationSettings:\n // Pin aggregations to the top if the grid is editable, so that the bottom is reserved for pending rows\n isEditableGridModel(_model) && _model.isEditable ? _objectSpread(_objectSpread({}, _aggregationSettings), {}, {\n showOnTop: true\n }) : _aggregationSettings,\n selectedAggregation: null,\n openOptions: [],\n pendingRowCount: 0,\n pendingDataMap: pendingDataMap !== null && pendingDataMap !== void 0 ? pendingDataMap : new Map(),\n pendingDataErrors: new Map(),\n pendingSavePromise: null,\n pendingSaveError: null,\n toastMessage: null,\n frozenColumns,\n showOverflowModal: false,\n showNoPastePermissionModal: false,\n noPastePermissionError: '',\n overflowText: '',\n overflowButtonTooltipProps: null,\n expandCellTooltipProps: null,\n expandTooltipDisplayValue: 'expand',\n hoverTooltipProps: null,\n hoverDisplayValue: '',\n isGotoShown: false,\n gotoRow: '',\n gotoRowError: '',\n gotoValueError: '',\n gotoValueSelectedColumnName: (_model$columns$0$name = (_model$columns$ = _model.columns[0]) === null || _model$columns$ === void 0 ? void 0 : _model$columns$.name) !== null && _model$columns$0$name !== void 0 ? _model$columns$0$name : '',\n gotoValueSelectedFilter: FilterType.eqIgnoreCase,\n gotoValue: '',\n gotoValueManuallyChanged: false,\n columnHeaderGroups: columnHeaderGroups !== null && columnHeaderGroups !== void 0 ? columnHeaderGroups : _model.initialColumnHeaderGroups\n };\n }\n componentDidMount() {\n var {\n model\n } = this.props;\n this.initState();\n this.startListening(model);\n }\n componentDidUpdate(prevProps, prevState) {\n var {\n inputFilters,\n isSelectingColumn,\n settings,\n model,\n customFilters,\n sorts\n } = this.props;\n if (model !== prevProps.model) {\n this.stopListening(prevProps.model);\n this.startListening(model);\n }\n var changedInputFilters = inputFilters !== prevProps.inputFilters ? inputFilters.filter(inputFilter => !prevProps.inputFilters.includes(inputFilter)) : [];\n if (changedInputFilters.length > 0) {\n var _advancedSettings$get;\n var {\n advancedSettings\n } = this.props;\n var replaceExistingFilters = (_advancedSettings$get = advancedSettings.get(AdvancedSettingsType.FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS)) !== null && _advancedSettings$get !== void 0 ? _advancedSettings$get : false;\n if (replaceExistingFilters) {\n this.clearGridInputField();\n this.clearCrossColumSearch();\n }\n this.startLoading('Filtering...', {\n resetRanges: true\n });\n this.applyInputFilters(changedInputFilters, replaceExistingFilters);\n }\n if (isSelectingColumn !== prevProps.isSelectingColumn) {\n this.resetColumnSelection();\n }\n if (settings !== prevProps.settings) {\n this.updateFormatterSettings(settings);\n }\n if (customFilters !== prevProps.customFilters) {\n this.startLoading('Filtering...', {\n resetRanges: true\n });\n }\n if (sorts !== prevProps.sorts) {\n this.updateSorts(sorts);\n }\n var {\n loadingScrimStartTime,\n loadingScrimFinishTime\n } = this;\n if (loadingScrimStartTime != null && loadingScrimFinishTime != null) {\n window.requestAnimationFrame(() => {\n var now = Date.now();\n var currentTime = now - loadingScrimStartTime;\n var totalTime = loadingScrimFinishTime - loadingScrimStartTime;\n var loadingScrimProgress = Math.min(currentTime / totalTime, 1);\n if (loadingScrimFinishTime < now) {\n this.loadingScrimStartTime = undefined;\n this.loadingScrimFinishTime = undefined;\n }\n this.setState(state => {\n if (state.loadingScrimProgress == null) {\n log.debug2('Ignoring scrim update because loading cancelled.');\n return null;\n }\n return {\n loadingScrimProgress\n };\n });\n });\n }\n var {\n openOptions\n } = this.state;\n if (openOptions !== prevState.openOptions) {\n var isAggEditType = option => option.type === OptionType.AGGREGATION_EDIT;\n if (!openOptions.some(isAggEditType) && prevState.openOptions.some(isAggEditType)) {\n this.removeEmptyAggregations();\n }\n }\n this.sendStateChange();\n }\n componentWillUnmount() {\n var {\n model\n } = this.props;\n this.stopListening(model);\n this.pending.cancel();\n this.updateSearchFilter.cancel();\n if (this.loadingTimer) {\n clearTimeout(this.loadingTimer);\n }\n this.handleDownloadProgressUpdate.cancel();\n if (this.animationFrame !== undefined) {\n cancelAnimationFrame(this.animationFrame);\n }\n this.showViewportLoading.cancel();\n }\n\n // When the loading scrim started/when it should extend to the end of the screen.\n\n get gridWrapper() {\n var _this$grid$canvasWrap, _this$grid;\n return (_this$grid$canvasWrap = (_this$grid = this.grid) === null || _this$grid === void 0 ? void 0 : _this$grid.canvasWrapper.current) !== null && _this$grid$canvasWrap !== void 0 ? _this$grid$canvasWrap : null;\n }\n\n /**\n * Builds formatColumns array based on the provided formatting rules with optional preview\n * @param columns Array of columns\n * @param rulesParam Array of formatting rules\n * @param preview Optional temporary formatting rule for previewing live changes\n * @param editIndex Index in the rulesParam array to replace with the preview, null if preview not applicable\n * @returns Format columns array\n */\n\n getKeyHandlers() {\n var {\n keyHandlers\n } = this.props;\n return this.getCachedKeyHandlers(keyHandlers);\n }\n getMetricState() {\n var _this$grid2;\n var gridMetricState = (_this$grid2 = this.grid) === null || _this$grid2 === void 0 ? void 0 : _this$grid2.getMetricState();\n if (gridMetricState == null) {\n return undefined;\n }\n var {\n advancedFilters,\n hoverSelectColumn,\n isFilterBarShown,\n isMenuShown,\n loadingScrimProgress,\n quickFilters,\n sorts,\n reverse,\n rollupConfig\n } = this.state;\n var {\n model,\n isSelectingColumn\n } = this.props;\n return _objectSpread(_objectSpread({}, gridMetricState), this.getCachedStateOverride(model, this.getTheme(), hoverSelectColumn, isFilterBarShown, isSelectingColumn, loadingScrimProgress, quickFilters, advancedFilters, sorts, reverse, rollupConfig, isMenuShown));\n }\n get renderer() {\n var {\n renderer\n } = this.props;\n return this.getCachedRenderer(renderer);\n }\n getMouseHandlers() {\n var {\n mouseHandlers\n } = this.props;\n return this.getCachedMouseHandlers(mouseHandlers);\n }\n getValueForCell(columnIndex, rowIndex) {\n var rawValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var {\n model\n } = this.props;\n var {\n dh\n } = model;\n var modelColumn = this.getModelColumn(columnIndex);\n var modelRow = this.getModelRow(rowIndex);\n if (rawValue && modelColumn != null && modelRow != null) {\n var _value = model.valueForCell(modelColumn, modelRow);\n if (TableUtils.isDateType(model.columns[modelColumn].type)) {\n // The returned value is just a long value, we should return the value formatted as a full date string\n var {\n formatter\n } = model;\n return dh.i18n.DateTimeFormat.format(UNFORMATTED_DATE_PATTERN, _value, dh.i18n.TimeZone.getTimeZone(formatter.timeZone));\n }\n return _value;\n }\n if (rawValue) {\n return null;\n }\n if (modelColumn != null && modelRow != null) {\n return model.textForCell(modelColumn, modelRow);\n }\n return '';\n }\n getModelColumn(columnIndex) {\n var {\n metrics\n } = this.state;\n assertNotNull(metrics);\n var {\n modelColumns\n } = metrics;\n if (modelColumns == null) {\n return null;\n }\n return columnIndex != null ? modelColumns.get(columnIndex) : null;\n }\n getModelRow(rowIndex) {\n var {\n metrics\n } = this.state;\n assertNotNull(metrics);\n var {\n modelRows\n } = metrics;\n if (modelRows == null) {\n return null;\n }\n return rowIndex != null ? modelRows.get(rowIndex) : null;\n }\n getTheme() {\n var _ref4;\n var {\n model,\n theme,\n density\n } = this.props;\n var {\n theme: contextTheme,\n density: contextDensity\n } = this.context;\n return this.getCachedTheme(contextTheme, theme, (_ref4 = isEditableGridModel(model) && model.isEditable) !== null && _ref4 !== void 0 ? _ref4 : false, model.floatingTopRowCount + model.floatingBottomRowCount, density !== null && density !== void 0 ? density : contextDensity);\n }\n getVisibleColumn(modelIndex) {\n var {\n movedColumns\n } = this.state;\n return GridUtils.getVisibleIndex(modelIndex, movedColumns);\n }\n makeQuickFilter(column, text, timeZone) {\n try {\n return this.tableUtils.makeQuickFilter(column, text, timeZone);\n } catch (err) {\n log.error('Error creating quick filter', err);\n }\n return null;\n }\n\n /**\n * Applies the provided input filters as quick filters,\n * and clears any existing quickFilters or advancedFilters on that column\n * @param inputFilters Array of input filters to apply\n * @param replaceExisting If true, new filters will replace the existing ones, instead of merging\n */\n applyInputFilters(inputFilters) {\n var replaceExisting = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var {\n model\n } = this.props;\n var {\n advancedFilters,\n quickFilters\n } = this.state;\n var newAdvancedFilters = replaceExisting ? new Map() : new Map(advancedFilters);\n var newQuickFilters = replaceExisting ? new Map() : new Map(quickFilters);\n var isChanged = replaceExisting && advancedFilters.size > 0;\n inputFilters.forEach(_ref5 => {\n var {\n name,\n type,\n value\n } = _ref5;\n var modelIndex = model.columns.findIndex(_ref6 => {\n var {\n name: columnName,\n type: columnType\n } = _ref6;\n return columnName === name && columnType === type;\n });\n if (modelIndex >= 0) {\n isChanged = newAdvancedFilters.delete(modelIndex) || isChanged;\n isChanged = this.applyQuickFilter(modelIndex, value, newQuickFilters) || isChanged;\n } else {\n log.error('Unable to find column for inputFilter', name, type, value);\n }\n });\n if (isChanged) {\n this.setState({\n quickFilters: newQuickFilters,\n advancedFilters: newAdvancedFilters\n });\n }\n }\n\n /**\n * Applies a quick filter\n * @param modelIndex The index in the model of the column to set\n * @param value The string value to set to the quick filter\n * @param quickFilters The quick filters map\n * @returns True if the filters have changed because this quick filter was applied\n */\n applyQuickFilter(modelIndex, value, quickFilters) {\n var {\n model\n } = this.props;\n var {\n formatter\n } = model;\n var column = model.columns[modelIndex];\n if (value != null && \"\".concat(value).trim().length > 0) {\n var quickFilter = quickFilters.get(modelIndex);\n if (quickFilter != null) {\n var {\n text\n } = quickFilter;\n if (text === value) {\n log.debug2('Ignoring change to existing filter');\n return false;\n }\n }\n quickFilters.set(modelIndex, {\n text: value,\n filter: this.makeQuickFilter(column, value, formatter.timeZone)\n });\n return true;\n }\n return quickFilters.delete(modelIndex);\n }\n setAdvancedFilterMap(advancedFilters) {\n this.setState({\n advancedFilters\n });\n }\n setAdvancedFilter(modelIndex, filter, options) {\n log.debug('Setting advanced filter', modelIndex, filter);\n this.startLoading('Filtering...', {\n resetRanges: true\n });\n this.setState(_ref7 => {\n var {\n advancedFilters\n } = _ref7;\n var newAdvancedFilters = new Map(advancedFilters);\n if (filter == null) {\n newAdvancedFilters.delete(modelIndex);\n } else {\n newAdvancedFilters.set(modelIndex, {\n filter,\n options\n });\n }\n return {\n advancedFilters: newAdvancedFilters\n };\n });\n }\n\n /**\n * Sets a quick filter against the provided column\n * @param modelIndex The index in the model for the column this filter is applied to\n * @param filter A filter to apply to the column, or null if there was an error\n * @param text The original text the filter was created with\n */\n setQuickFilter(modelIndex, filter, text) {\n log.debug('Setting quick filter', modelIndex, filter, text);\n this.startLoading('Filtering...', {\n resetRanges: true\n });\n this.setState(_ref8 => {\n var {\n quickFilters\n } = _ref8;\n var newQuickFilters = new Map(quickFilters);\n newQuickFilters.set(modelIndex, {\n filter,\n text\n });\n return {\n quickFilters: newQuickFilters\n };\n });\n }\n\n /**\n * Set grid filters based on the filter map\n * @param filterMap Filter map\n */\n setFilterMap(filterMap) {\n var _advancedSettings$get2;\n log.debug('setFilterMap', filterMap);\n var {\n advancedSettings\n } = this.props;\n var clearFiltersOnLinkerFilterUpdate = (_advancedSettings$get2 = advancedSettings.get(AdvancedSettingsType.LINK_CHANGE_CLEARS_ALL_FILTERS)) !== null && _advancedSettings$get2 !== void 0 ? _advancedSettings$get2 : false;\n if (clearFiltersOnLinkerFilterUpdate) {\n this.clearAllFilters();\n }\n var {\n model\n } = this.props;\n filterMap.forEach((_ref9, columnName) => {\n var {\n columnType,\n filterList\n } = _ref9;\n var column = model.columns.find(c => c.name === columnName && c.type === columnType);\n if (column == null) {\n return;\n }\n var columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n var combinedText = IrisGridUtils.combineFiltersFromList(columnType, filterList);\n if (combinedText.length === 0) {\n this.removeQuickFilter(columnIndex);\n } else {\n var {\n formatter\n } = model;\n this.setQuickFilter(columnIndex, this.makeQuickFilter(column, combinedText, formatter.timeZone), \"\".concat(combinedText));\n }\n });\n }\n removeColumnFilter(modelRange) {\n this.startLoading('Filtering...', {\n resetRanges: true\n });\n var clearRange = Array.isArray(modelRange) ? modelRange : [modelRange, modelRange];\n this.setState(_ref10 => {\n var {\n advancedFilters,\n quickFilters\n } = _ref10;\n var newAdvancedFilters = advancedFilters ? new Map(advancedFilters) : new Map();\n var newQuickFilters = quickFilters ? new Map(quickFilters) : new Map();\n newAdvancedFilters.forEach((_, column) => {\n if (column >= clearRange[0] && column <= clearRange[1]) {\n newAdvancedFilters.delete(column);\n }\n });\n newQuickFilters.forEach((_, column) => {\n if (column >= clearRange[0] && column <= clearRange[1]) {\n newQuickFilters.delete(column);\n }\n });\n return {\n quickFilters: newQuickFilters,\n advancedFilters: newAdvancedFilters\n };\n });\n }\n removeQuickFilter(modelColumn) {\n this.startLoading('Clearing Filter...', {\n resetRanges: true\n });\n this.setState(_ref11 => {\n var {\n quickFilters\n } = _ref11;\n var newQuickFilters = new Map(quickFilters);\n newQuickFilters.delete(modelColumn);\n return {\n quickFilters: newQuickFilters\n };\n });\n }\n clearAllFilters() {\n log.debug('Clearing all filters');\n var {\n advancedFilters,\n quickFilters,\n searchFilter\n } = this.state;\n if (quickFilters.size === 0 && advancedFilters.size === 0 && searchFilter === null) {\n return;\n }\n\n // if there is an active quick filter input field, reset it as well\n this.clearGridInputField();\n this.startLoading('Clearing Filters...', {\n resetRanges: true\n });\n this.setState({\n quickFilters: new Map(),\n advancedFilters: new Map(),\n searchValue: '',\n searchFilter: undefined\n });\n }\n clearAllAggregations() {\n log.debug('Clearing all aggregations');\n this.setState({\n aggregationSettings: DEFAULT_AGGREGATION_SETTINGS\n });\n }\n clearCrossColumSearch() {\n log.debug('Clearing cross-column search');\n this.setState({\n searchValue: '',\n searchFilter: undefined\n });\n }\n clearGridInputField() {\n if (this.filterInputRef.current != null) {\n this.filterInputRef.current.setValue('');\n }\n }\n\n /**\n * Rebuilds all the current filters. Necessary if something like the time zone has changed.\n */\n rebuildFilters() {\n var {\n model\n } = this.props;\n var {\n advancedFilters,\n quickFilters\n } = this.state;\n if (advancedFilters.size === 0 && quickFilters.size === 0) {\n log.debug('No filters to rebuild');\n return;\n }\n var {\n columns,\n formatter\n } = model;\n log.debug('Rebuilding filters');\n var newAdvancedFilters = new Map();\n var newQuickFilters = new Map();\n advancedFilters.forEach((value, key) => {\n var {\n options\n } = value;\n var column = columns[key];\n var filter = this.tableUtils.makeAdvancedFilter(column, options, formatter.timeZone);\n newAdvancedFilters.set(key, {\n options,\n filter\n });\n });\n quickFilters.forEach((value, key) => {\n var {\n text\n } = value;\n var column = columns[key];\n newQuickFilters.set(key, {\n text,\n filter: this.makeQuickFilter(column, text, formatter.timeZone)\n });\n });\n this.startLoading('Rebuilding filters...', {\n resetRanges: true\n });\n this.setState({\n quickFilters: newQuickFilters,\n advancedFilters: newAdvancedFilters\n });\n }\n setFilters(_ref12) {\n var {\n quickFilters,\n advancedFilters\n } = _ref12;\n this.setState({\n quickFilters,\n advancedFilters\n });\n }\n updateFormatterSettings(settings) {\n var _settings$defaultDeci, _settings$defaultInte, _settings$truncateNum, _settings$showEmptySt, _settings$showNullStr, _settings$showExtraGr;\n var forceUpdate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var globalColumnFormats = FormatterUtils.getColumnFormats(settings);\n var dateTimeFormatterOptions = FormatterUtils.getDateTimeFormatterOptions(settings);\n var defaultDecimalFormatOptions = (_settings$defaultDeci = settings === null || settings === void 0 ? void 0 : settings.defaultDecimalFormatOptions) !== null && _settings$defaultDeci !== void 0 ? _settings$defaultDeci : {};\n var defaultIntegerFormatOptions = (_settings$defaultInte = settings === null || settings === void 0 ? void 0 : settings.defaultIntegerFormatOptions) !== null && _settings$defaultInte !== void 0 ? _settings$defaultInte : {};\n var truncateNumbersWithPound = (_settings$truncateNum = settings === null || settings === void 0 ? void 0 : settings.truncateNumbersWithPound) !== null && _settings$truncateNum !== void 0 ? _settings$truncateNum : false;\n var showEmptyStrings = (_settings$showEmptySt = settings === null || settings === void 0 ? void 0 : settings.showEmptyStrings) !== null && _settings$showEmptySt !== void 0 ? _settings$showEmptySt : true;\n var showNullStrings = (_settings$showNullStr = settings === null || settings === void 0 ? void 0 : settings.showNullStrings) !== null && _settings$showNullStr !== void 0 ? _settings$showNullStr : true;\n var showExtraGroupColumn = (_settings$showExtraGr = settings === null || settings === void 0 ? void 0 : settings.showExtraGroupColumn) !== null && _settings$showExtraGr !== void 0 ? _settings$showExtraGr : true;\n var isColumnFormatChanged = !deepEqual(this.globalColumnFormats, globalColumnFormats);\n var isDateFormattingChanged = !deepEqual(this.dateTimeFormatterOptions, dateTimeFormatterOptions);\n var isDecimalFormattingChanged = !deepEqual(this.decimalFormatOptions, settings === null || settings === void 0 ? void 0 : settings.defaultDecimalFormatOptions);\n var isIntegerFormattingChanged = !deepEqual(this.integerFormatOptions, defaultIntegerFormatOptions);\n var isTruncateNumbersChanged = this.truncateNumbersWithPound !== truncateNumbersWithPound;\n var isShowEmptyStringsChanged = this.showEmptyStrings !== showEmptyStrings;\n var isShowNullStringsChanged = this.showNullStrings !== showNullStrings;\n var isShowExtraGroupColumnChanged = this.showExtraGroupColumn !== showExtraGroupColumn;\n if (isColumnFormatChanged || isDateFormattingChanged || isDecimalFormattingChanged || isIntegerFormattingChanged || isTruncateNumbersChanged || isShowEmptyStringsChanged || isShowNullStringsChanged || isShowExtraGroupColumnChanged) {\n this.globalColumnFormats = globalColumnFormats;\n this.dateTimeFormatterOptions = dateTimeFormatterOptions;\n this.decimalFormatOptions = defaultDecimalFormatOptions;\n this.integerFormatOptions = defaultIntegerFormatOptions;\n this.truncateNumbersWithPound = truncateNumbersWithPound;\n this.showEmptyStrings = showEmptyStrings;\n this.showNullStrings = showNullStrings;\n this.showExtraGroupColumn = showExtraGroupColumn;\n this.updateFormatter({}, forceUpdate);\n if (isDateFormattingChanged && forceUpdate) {\n this.rebuildFilters();\n }\n }\n }\n updateFormatter(updatedFormats) {\n var _this$globalColumnFor;\n var forceUpdate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var {\n customColumnFormatMap\n } = this.state;\n var {\n model\n } = this.props;\n var update = _objectSpread({\n customColumnFormatMap\n }, updatedFormats);\n var mergedColumnFormats = [...((_this$globalColumnFor = this.globalColumnFormats) !== null && _this$globalColumnFor !== void 0 ? _this$globalColumnFor : []), ...update.customColumnFormatMap.values()];\n var formatter = new Formatter(model.dh, mergedColumnFormats, this.dateTimeFormatterOptions, this.decimalFormatOptions, this.integerFormatOptions, this.truncateNumbersWithPound, this.showEmptyStrings, this.showNullStrings);\n log.debug('updateFormatter', this.globalColumnFormats, mergedColumnFormats);\n this.setState(_objectSpread(_objectSpread({}, update), {}, {\n formatter\n }), () => {\n if (forceUpdate && this.grid) {\n this.grid.forceUpdate();\n }\n });\n }\n initFormatter() {\n var {\n settings\n } = this.props;\n this.updateFormatterSettings(settings);\n }\n initState() {\n var {\n model\n } = this.props;\n try {\n if (isPartitionedGridModel(model) && model.isPartitionRequired) {\n this.loadPartitionsTable(model);\n } else {\n this.loadTableState();\n }\n } catch (error) {\n this.handleTableLoadError(error);\n }\n }\n loadTableState() {\n var {\n applyInputFiltersOnInit,\n inputFilters,\n sorts,\n model,\n reverse,\n reverseType,\n customColumns,\n searchValue,\n selectedSearchColumns,\n invertSearchColumns\n } = this.props;\n var searchColumns = selectedSearchColumns !== null && selectedSearchColumns !== void 0 ? selectedSearchColumns : [];\n var searchFilter = CrossColumnSearch.createSearchFilter(model.dh, searchValue, searchColumns, model.columns, invertSearchColumns);\n if (applyInputFiltersOnInit) {\n // There may be more than one input filter on the same column with value === '' applied last\n // We don't want to skip it here, so only excluding the ones that were never applied (null)\n var inputFiltersWithValues = inputFilters.filter(inputFilter => inputFilter.value != null);\n this.applyInputFilters(inputFiltersWithValues);\n }\n this.setState({\n sorts,\n reverse: reverse || reverseType === TableUtils.REVERSE_TYPE.POST_SORT,\n customColumns,\n isReady: true,\n searchFilter\n });\n this.initFormatter();\n }\n loadPartitionsTable(model) {\n var _this = this;\n return _asyncToGenerator(function* () {\n try {\n var {\n partitionConfig\n } = _this.state;\n if (!partitionConfig) {\n _this.startLoading('Loading partitions...', {\n loadingCancelShown: false,\n resetRanges: true\n });\n _this.initializePartitionConfig(model);\n }\n _this.setState({\n isSelectingPartition: true\n }, _this.loadTableState);\n } catch (error) {\n if (!PromiseUtils.isCanceled(error)) {\n _this.handleTableLoadError(error);\n }\n }\n })();\n }\n\n /**\n * Initialize the partition config to the default partition.\n */\n initializePartitionConfig(model) {\n var _this2 = this;\n return _asyncToGenerator(function* () {\n var keyTable = yield _this2.pending.add(model.partitionKeysTable(), resolved => resolved.close());\n var {\n dh\n } = model;\n var sorts = keyTable.columns.map(column => column.sort().desc());\n keyTable.applySort(sorts);\n keyTable.setViewport(0, 0);\n\n // We want to wait for the first UPDATED event instead of just getting viewport data here\n // It's possible that the key table does not have any rows of data yet, so just wait until it does have one\n keyTable.addEventListener(dh.Table.EVENT_UPDATED, event => {\n try {\n var {\n detail: _data\n } = event;\n if (_data.rows.length === 0) {\n // We received an update and the table is still empty. Stop showing the loading spinner so we know\n _this2.stopLoading();\n return;\n }\n var row = _data.rows[0];\n var values = keyTable.columns.map(column => row.get(column));\n var newPartition = {\n partitions: values,\n mode: model.isPartitionAwareSourceTable ? 'partition' : 'keys'\n };\n keyTable.close();\n _this2.setState({\n loadingSpinnerShown: false,\n partitionConfig: newPartition\n });\n } catch (e) {\n keyTable.close();\n log.error('Error getting initial partition config', e);\n }\n });\n })();\n }\n\n /**\n * Selects a partition key from the table based on the provided row index.\n *\n * @param rowIndex The index of the row from which the partition will be selected.\n * @returns A promise that resolves when the partition key has been successfully selected.\n */\n selectPartitionKeyFromTable(rowIndex) {\n var {\n model\n } = this.props;\n assertNotNull(rowIndex);\n if (isPartitionedGridModel(model)) {\n var _data2 = this.getRowDataMap(rowIndex);\n var partitionColumnSet = new Set(model.partitionColumns.map(column => column.name));\n var values = Object.entries(_data2).filter(_ref13 => {\n var [key, _] = _ref13;\n return partitionColumnSet.has(key);\n }).map(_ref14 => {\n var [key, columnData] = _ref14;\n return columnData.value;\n });\n var newPartition = {\n partitions: values,\n mode: 'partition'\n };\n this.setState({\n isSelectingPartition: true,\n partitionConfig: newPartition\n });\n }\n }\n copyCell(columnIndex, rowIndex) {\n var rawValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var {\n canCopy\n } = this.props;\n if (canCopy) {\n var _value2 = String(this.getValueForCell(columnIndex, rowIndex, rawValue));\n copyToClipboard(_value2).catch(e => log.error('Unable to copy cell', e));\n } else {\n log.error('Attempted to copyCell for user without copy permission.');\n }\n }\n copyColumnHeader(columnIndex) {\n var columnDepth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n if (columnIndex === null) {\n return;\n }\n var {\n canCopy\n } = this.props;\n var {\n movedColumns\n } = this.state;\n if (canCopy) {\n var copyOperation = {\n columnIndex,\n columnDepth,\n movedColumns\n };\n this.setState({\n copyOperation\n });\n } else {\n log.error('Attempted copyColumnHeader for user without copy permission.');\n }\n }\n\n /**\n * Copy the provided ranges to the clipboard\n * @paramranges The ranges to copy\n * @param includeHeaders Include the headers or not\n * @param formatValues Whether to format values or not\n * @param error Error message if one occurred\n */\n copyRanges(ranges) {\n var includeHeaders = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var formatValues = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n var error = arguments.length > 3 ? arguments[3] : undefined;\n var {\n model,\n canCopy\n } = this.props;\n var {\n metricCalculator,\n movedColumns\n } = this.state;\n var userColumnWidths = metricCalculator.getUserColumnWidths();\n if (canCopy) {\n var copyOperation = {\n ranges: GridRange.boundedRanges(ranges, model.columnCount, model.rowCount),\n includeHeaders,\n formatValues,\n movedColumns,\n userColumnWidths,\n error\n };\n this.setState({\n copyOperation\n });\n } else {\n log.error('Attempted copyRanges for user without copy permission.');\n }\n }\n startLoading(loadingText) {\n var {\n resetRanges = false,\n loadingCancelShown = true,\n loadingBlocksGrid = true\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.setState({\n loadingText,\n loadingCancelShown,\n loadingBlocksGrid\n });\n var theme = this.getTheme();\n if (resetRanges && this.grid) {\n this.grid.clearSelectedRanges();\n this.grid.setViewState({\n top: 0\n }, true);\n }\n if (this.loadingScrimStartTime == null) {\n var _this$gridWrapper$get, _this$gridWrapper;\n var {\n minScrimTransitionTime,\n maxScrimTransitionTime\n } = theme;\n assertNotNull(minScrimTransitionTime);\n assertNotNull(maxScrimTransitionTime);\n var height = (_this$gridWrapper$get = (_this$gridWrapper = this.gridWrapper) === null || _this$gridWrapper === void 0 ? void 0 : _this$gridWrapper.getBoundingClientRect().height) !== null && _this$gridWrapper$get !== void 0 ? _this$gridWrapper$get : 0;\n var scrimTransitionTime = Math.max(minScrimTransitionTime, Math.min(height / 2, maxScrimTransitionTime));\n this.loadingScrimStartTime = Date.now();\n this.loadingScrimFinishTime = this.loadingScrimStartTime + scrimTransitionTime;\n this.setState({\n loadingScrimProgress: 0\n });\n this.loadingTimer = setTimeout(() => {\n this.setState({\n loadingSpinnerShown: true\n });\n }, IrisGrid.loadingSpinnerDelay);\n }\n }\n stopLoading() {\n this.showViewportLoading.cancel();\n this.loadingScrimStartTime = undefined;\n this.loadingScrimFinishTime = undefined;\n this.setState({\n loadingText: null,\n loadingScrimProgress: null,\n loadingSpinnerShown: false,\n loadingCancelShown: false\n });\n if (this.loadingTimer != null) {\n clearTimeout(this.loadingTimer);\n this.loadingTimer = undefined;\n }\n }\n\n /**\n * Rolls back the table state to the last known safe state, or if that's not available then clears all sorts/filters/custom columns.\n */\n rollback() {\n if (this.lastLoadedConfig) {\n log.debug('loading last loading config', this.lastLoadedConfig);\n var {\n advancedFilters,\n aggregationSettings,\n customColumns,\n quickFilters,\n reverse,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts\n } = this.lastLoadedConfig;\n this.lastLoadedConfig = null;\n this.setState({\n advancedFilters,\n aggregationSettings,\n customColumns,\n quickFilters,\n reverse,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts\n });\n } else {\n log.debug('remove all sorts, filters, and custom columns');\n this.setState({\n advancedFilters: new Map(),\n aggregationSettings: DEFAULT_AGGREGATION_SETTINGS,\n customColumns: [],\n quickFilters: new Map(),\n reverse: false,\n rollupConfig: undefined,\n selectDistinctColumns: [],\n sorts: []\n });\n }\n }\n\n /**\n * Check if we can rollback the current state to a safe state.\n * @returns true if there's a previously known safe state or if some of the current state isn't empty.\n */\n canRollback() {\n return this.lastLoadedConfig != null || !isEmptyConfig(this.state);\n }\n startListening(model) {\n model.addEventListener(IrisGridModel.EVENT.UPDATED, this.handleUpdate);\n model.addEventListener(IrisGridModel.EVENT.REQUEST_FAILED, this.handleRequestFailed);\n model.addEventListener(IrisGridModel.EVENT.COLUMNS_CHANGED, this.handleCustomColumnsChanged);\n model.addEventListener(IrisGridModel.EVENT.PENDING_DATA_UPDATED, this.handlePendingDataUpdated);\n model.addEventListener(IrisGridModel.EVENT.VIEWPORT_UPDATED, this.handleViewportUpdated);\n model.addEventListener(IrisGridModel.EVENT.TABLE_CHANGED, this.handleTableChanged);\n }\n stopListening(model) {\n model.removeEventListener(IrisGridModel.EVENT.UPDATED, this.handleUpdate);\n model.removeEventListener(IrisGridModel.EVENT.REQUEST_FAILED, this.handleRequestFailed);\n model.removeEventListener(IrisGridModel.EVENT.COLUMNS_CHANGED, this.handleCustomColumnsChanged);\n model.removeEventListener(IrisGridModel.EVENT.PENDING_DATA_UPDATED, this.handlePendingDataUpdated);\n model.removeEventListener(IrisGridModel.EVENT.VIEWPORT_UPDATED, this.handleViewportUpdated);\n model.removeEventListener(IrisGridModel.EVENT.TABLE_CHANGED, this.handleTableChanged);\n }\n focus() {\n var _this$grid3;\n (_this$grid3 = this.grid) === null || _this$grid3 === void 0 ? void 0 : _this$grid3.focus();\n }\n focusFilterBar(column) {\n var {\n movedColumns\n } = this.state;\n var {\n model\n } = this.props;\n var {\n columnCount\n } = model;\n var modelColumn = GridUtils.getModelIndex(column, movedColumns);\n if (column == null || column < 0 || columnCount <= column || !model.isFilterable(modelColumn)) {\n this.setState({\n focusedFilterBarColumn: null\n });\n return;\n }\n var {\n metricCalculator,\n metrics\n } = this.state;\n assertNotNull(metrics);\n var {\n left,\n rightVisible,\n lastLeft\n } = metrics;\n if (column < left) {\n var _this$grid4;\n (_this$grid4 = this.grid) === null || _this$grid4 === void 0 ? void 0 : _this$grid4.setViewState({\n left: column\n }, true);\n } else if (rightVisible < column) {\n var _this$grid5;\n var metricState = this.getMetricState();\n assertNotNull(metricState);\n var newLeft = metricCalculator.getLastLeft(metricState, column, metricCalculator.getVisibleWidth(metricState));\n (_this$grid5 = this.grid) === null || _this$grid5 === void 0 ? void 0 : _this$grid5.setViewState({\n left: Math.min(newLeft, lastLeft),\n leftOffset: 0\n }, true);\n }\n this.lastFocusedFilterBarColumn = column;\n this.setState({\n focusedFilterBarColumn: column,\n isFilterBarShown: true\n });\n }\n hideColumnByVisibleIndex(columnVisibleIndex) {\n var _this$grid6;\n var {\n metricCalculator,\n movedColumns\n } = this.state;\n metricCalculator.setColumnWidth(GridUtils.getModelIndex(columnVisibleIndex, movedColumns), 0);\n (_this$grid6 = this.grid) === null || _this$grid6 === void 0 ? void 0 : _this$grid6.forceUpdate();\n }\n freezeColumnByColumnName(columnName) {\n var {\n frozenColumns,\n movedColumns\n } = this.state;\n var {\n model\n } = this.props;\n log.debug2('freezing column', columnName);\n var allFrozenColumns = frozenColumns == null ? new Set(model.frozenColumns) : new Set(frozenColumns);\n allFrozenColumns.add(columnName);\n var modelIndex = model.getColumnIndexByName(columnName);\n assertNotNull(modelIndex);\n var visibleIndex = GridUtils.getVisibleIndex(modelIndex, movedColumns);\n var newMovedColumns = GridUtils.moveItem(visibleIndex, allFrozenColumns.size - 1, movedColumns);\n this.setState({\n frozenColumns: [...allFrozenColumns],\n movedColumns: newMovedColumns\n });\n }\n unFreezeColumnByColumnName(columnName) {\n var {\n frozenColumns,\n movedColumns\n } = this.state;\n var {\n model\n } = this.props;\n log.debug2('unfreezing column', columnName);\n var allFrozenColumns = frozenColumns == null ? new Set(model.frozenColumns) : new Set(frozenColumns);\n allFrozenColumns.delete(columnName);\n var modelIndex = model.getColumnIndexByName(columnName);\n assertNotNull(modelIndex);\n var visibleIndex = GridUtils.getVisibleIndex(modelIndex, movedColumns);\n\n // Move to after remaining frozen columns and front columns\n var newMovedColumns = GridUtils.moveItem(visibleIndex, allFrozenColumns.size + model.frontColumns.length, movedColumns);\n this.setState({\n frozenColumns: [...allFrozenColumns],\n movedColumns: newMovedColumns\n });\n }\n toggleExpandColumn(modelIndex) {\n log.debug2('Toggle expand column', modelIndex);\n var {\n model\n } = this.props;\n if (isExpandableColumnGridModel(model) && model.hasExpandableColumns) {\n model.setColumnExpanded(modelIndex, !model.isColumnExpanded(modelIndex));\n }\n }\n expandAllColumns() {\n log.debug2('Expand all columns');\n var {\n model\n } = this.props;\n if (isExpandableColumnGridModel(model) && model.isExpandAllColumnsAvailable) {\n model.expandAllColumns();\n }\n }\n collapseAllColumns() {\n log.debug2('Collapse all columns');\n var {\n model\n } = this.props;\n if (isExpandableColumnGridModel(model) && model.isExpandAllColumnsAvailable) {\n model.collapseAllColumns();\n }\n }\n handleColumnVisibilityChanged(modelIndexes, isVisible) {\n var _this$grid7;\n var {\n metricCalculator,\n metrics\n } = this.state;\n assertNotNull(metrics);\n if (isVisible) {\n modelIndexes.forEach(modelIndex => {\n var defaultWidth = metricCalculator.initialColumnWidths.get(modelIndex);\n var calculatedWidth = getOrThrow(metrics.calculatedColumnWidths, modelIndex);\n if (defaultWidth !== calculatedWidth) {\n metricCalculator.setColumnWidth(modelIndex, calculatedWidth);\n } else {\n metricCalculator.resetColumnWidth(modelIndex);\n }\n });\n } else {\n modelIndexes.forEach(modelIndex => {\n metricCalculator.setColumnWidth(modelIndex, 0);\n });\n }\n (_this$grid7 = this.grid) === null || _this$grid7 === void 0 ? void 0 : _this$grid7.forceUpdate();\n }\n handleColumnVisibilityReset() {\n var _model$layoutHints$fr, _model$layoutHints2;\n var {\n metricCalculator\n } = this.state;\n var {\n model\n } = this.props;\n metricCalculator.resetAllColumnWidths();\n this.handleMovedColumnsChanged(model.initialMovedColumns);\n this.handleHeaderGroupsChanged(model.initialColumnHeaderGroups);\n this.setState({\n frozenColumns: (_model$layoutHints$fr = (_model$layoutHints2 = model.layoutHints) === null || _model$layoutHints2 === void 0 ? void 0 : _model$layoutHints2.frozenColumns) !== null && _model$layoutHints$fr !== void 0 ? _model$layoutHints$fr : []\n });\n }\n handleCrossColumnSearch(searchValue, selectedSearchColumns, invertSearchColumns) {\n var {\n model\n } = this.props;\n this.startLoading('Searching...');\n this.updateSearchFilter(searchValue, selectedSearchColumns, model.columns, invertSearchColumns);\n this.setState({\n searchValue,\n selectedSearchColumns,\n invertSearchColumns\n });\n }\n handleAnimationLoop() {\n var _this$grid8;\n (_this$grid8 = this.grid) === null || _this$grid8 === void 0 ? void 0 : _this$grid8.updateCanvas();\n if (this.isAnimating) {\n this.animationFrame = requestAnimationFrame(this.handleAnimationLoop);\n }\n }\n handleAnimationStart() {\n log.debug2('handleAnimationStart');\n this.isAnimating = true;\n this.animationFrame = requestAnimationFrame(this.handleAnimationLoop);\n }\n handleAnimationEnd() {\n log.debug2('handleAnimationEnd');\n this.isAnimating = false;\n }\n handlePartitionChange(partitionConfig) {\n this.startLoading('Partitioning...');\n var {\n partitionConfig: prevConfig\n } = this.state;\n if (prevConfig !== partitionConfig) {\n this.setState({\n partitionConfig\n });\n }\n }\n handleTableLoadError(error) {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n log.error(error);\n var {\n onError\n } = this.props;\n onError(error);\n }\n handleViewportUpdated() {\n var {\n model\n } = this.props;\n var {\n loadingText,\n loadingSpinnerShown\n } = this.state;\n var loadingMessage = 'Waiting for viewport...';\n\n // pending and no timer already exists\n if (model.isViewportPending && !loadingSpinnerShown) {\n this.showViewportLoading();\n } else if (loadingText === loadingMessage && !model.isViewportPending) {\n // extra conditions because timeout might get cleared by update\n this.stopLoading();\n }\n }\n showAllColumns() {\n var _this$grid9;\n var {\n metricCalculator\n } = this.state;\n var userColumnWidths = metricCalculator.getUserColumnWidths();\n var entries = [...userColumnWidths.entries()];\n for (var i = 0; i < entries.length; i += 1) {\n var [modelIndex, columnWidth] = entries[i];\n if (columnWidth === 0) {\n metricCalculator.resetColumnWidth(modelIndex);\n }\n }\n (_this$grid9 = this.grid) === null || _this$grid9 === void 0 ? void 0 : _this$grid9.forceUpdate();\n }\n\n /**\n * Updates grid metrics after model columns have changed\n * to keep Grid and IrisGrid metrics in sync since metrics are stored in both places.\n */\n updateMetrics() {\n var _this$grid10;\n this.setState({\n metrics: (_this$grid10 = this.grid) === null || _this$grid10 === void 0 ? void 0 : _this$grid10.updateMetrics()\n });\n }\n toggleSort(columnIndex, addToExisting) {\n log.info('Toggling sort for column', columnIndex);\n var {\n model\n } = this.props;\n var modelColumn = this.getModelColumn(columnIndex);\n assertNotNull(modelColumn);\n if (model.isColumnSortable(columnIndex)) {\n var {\n sorts: currentSorts\n } = this.state;\n var sorts = TableUtils.toggleSortForColumn(currentSorts, model.columns, modelColumn, addToExisting);\n this.updateSorts(sorts);\n } else {\n log.debug('Column type was not sortable', model.columns[columnIndex]);\n }\n }\n updateSorts(sorts) {\n var _this$grid11;\n this.startLoading('Sorting...');\n this.setState({\n sorts\n });\n (_this$grid11 = this.grid) === null || _this$grid11 === void 0 ? void 0 : _this$grid11.forceUpdate();\n }\n sortColumn(modelColumn) {\n var _this$grid12;\n var direction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : TableUtils.sortDirection.none;\n var isAbs = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var addToExisting = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n assertNotNull(modelColumn);\n var {\n model\n } = this.props;\n var sorts = TableUtils.sortColumn(model.sort, model.columns, modelColumn, direction, isAbs, addToExisting);\n this.startLoading('Sorting...');\n this.setState({\n sorts\n });\n (_this$grid12 = this.grid) === null || _this$grid12 === void 0 ? void 0 : _this$grid12.forceUpdate();\n }\n reverse(reverse) {\n var _this$grid13;\n this.startLoading('Reversing...');\n this.setState({\n reverse\n });\n (_this$grid13 = this.grid) === null || _this$grid13 === void 0 ? void 0 : _this$grid13.forceUpdate();\n }\n isReversible() {\n var {\n model\n } = this.props;\n return model.isReversible;\n }\n toggleFilterBar() {\n var focusIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.lastFocusedFilterBarColumn;\n var {\n isFilterBarShown\n } = this.state;\n isFilterBarShown = !isFilterBarShown;\n this.setState({\n isFilterBarShown\n });\n if (isFilterBarShown) {\n if (focusIndex != null) {\n this.focusFilterBar(focusIndex);\n } else {\n var columnIndex = 0;\n var {\n model: _model2\n } = this.props;\n var {\n columnCount\n } = _model2;\n for (var i = 0; i < columnCount; i += 1) {\n var modelColumn = this.getModelColumn(i);\n if (modelColumn != null) {\n var _column = _model2.columns[modelColumn];\n if (_column != null && TableUtils.isTextType(_column.type)) {\n columnIndex = i;\n break;\n }\n }\n }\n this.focusFilterBar(columnIndex);\n }\n } else {\n var _this$grid14;\n (_this$grid14 = this.grid) === null || _this$grid14 === void 0 ? void 0 : _this$grid14.focus();\n }\n }\n isTableSearchAvailable() {\n var _model$layoutHints3, _dh$SearchDisplayMode, _dh$SearchDisplayMode2;\n var {\n model,\n canToggleSearch\n } = this.props;\n var {\n dh\n } = model;\n var searchDisplayMode = model === null || model === void 0 ? void 0 : (_model$layoutHints3 = model.layoutHints) === null || _model$layoutHints3 === void 0 ? void 0 : _model$layoutHints3.searchDisplayMode;\n if (searchDisplayMode === ((_dh$SearchDisplayMode = dh.SearchDisplayMode) === null || _dh$SearchDisplayMode === void 0 ? void 0 : _dh$SearchDisplayMode.SEARCH_DISPLAY_HIDE)) {\n return false;\n }\n if (searchDisplayMode === ((_dh$SearchDisplayMode2 = dh.SearchDisplayMode) === null || _dh$SearchDisplayMode2 === void 0 ? void 0 : _dh$SearchDisplayMode2.SEARCH_DISPLAY_SHOW)) {\n return true;\n }\n return canToggleSearch;\n }\n toggleSearchBar() {\n var {\n showSearchBar\n } = this.state;\n if (!this.isTableSearchAvailable()) {\n return;\n }\n var update = !showSearchBar;\n this.setState({\n showSearchBar: update\n }, () => {\n var _this$crossColumnRef;\n if (update && (_this$crossColumnRef = this.crossColumnRef) !== null && _this$crossColumnRef !== void 0 && _this$crossColumnRef.current) {\n var _this$crossColumnRef2;\n (_this$crossColumnRef2 = this.crossColumnRef) === null || _this$crossColumnRef2 === void 0 ? void 0 : _this$crossColumnRef2.current.focus();\n } else {\n var _this$grid15;\n (_this$grid15 = this.grid) === null || _this$grid15 === void 0 ? void 0 : _this$grid15.focus();\n }\n });\n }\n toggleGotoRow() {\n var _this$grid16, _this$grid17;\n var row = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var value = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var columnName = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n var {\n isGotoShown\n } = this.state;\n if (row || value) {\n var _this$gotoRowRef$curr;\n // if invoked with a row, keep open instead of toggle\n this.setState({\n isGotoShown: true,\n gotoValue: value,\n gotoValueSelectedColumnName: columnName,\n gotoRowError: '',\n gotoValueError: '',\n gotoValueManuallyChanged: false\n });\n this.focusRowInGrid(row);\n (_this$gotoRowRef$curr = this.gotoRowRef.current) === null || _this$gotoRowRef$curr === void 0 ? void 0 : _this$gotoRowRef$curr.focus();\n return;\n }\n var cursorRow = (_this$grid16 = this.grid) === null || _this$grid16 === void 0 ? void 0 : _this$grid16.state.cursorRow;\n var cursorColumn = (_this$grid17 = this.grid) === null || _this$grid17 === void 0 ? void 0 : _this$grid17.state.cursorColumn;\n if (cursorRow == null || cursorColumn == null) {\n // if a cell is not selected / grid is not rendered\n this.setState({\n isGotoShown: !isGotoShown,\n gotoRow: '',\n gotoValue: '',\n gotoRowError: '',\n gotoValueError: '',\n gotoValueManuallyChanged: false\n });\n return;\n }\n // if a row is selected\n var {\n model\n } = this.props;\n var {\n name,\n type\n } = model.columns[cursorColumn];\n var cellValue = model.valueForCell(cursorColumn, cursorRow);\n var text = IrisGridUtils.convertValueToText(cellValue, type);\n this.setState({\n isGotoShown: !isGotoShown,\n gotoRow: \"\".concat(cursorRow + 1),\n gotoValue: text,\n gotoValueSelectedColumnName: name,\n gotoRowError: '',\n gotoValueError: '',\n gotoValueManuallyChanged: false\n });\n }\n commitPending() {\n var _this3 = this;\n return _asyncToGenerator(function* () {\n var _document, _document$activeEleme;\n var {\n model\n } = _this3.props;\n if (!isEditableGridModel(model) || !model.isEditable) {\n throw new Error('Cannot save, table is not editable');\n }\n var {\n pendingSavePromise\n } = _this3.state;\n if (pendingSavePromise != null) {\n throw new Error('Save already in progress');\n }\n var containsGridCellInputField = (_document = document) === null || _document === void 0 ? void 0 : (_document$activeEleme = _document.activeElement) === null || _document$activeEleme === void 0 ? void 0 : _document$activeEleme.classList.contains('grid-cell-input-field');\n if (containsGridCellInputField != null && containsGridCellInputField) {\n var _this3$grid;\n if (document.activeElement != null && document.activeElement.classList.contains('error')) {\n throw new ValidationError('Current input is invalid');\n }\n\n // Focus the grid again to commit any pending input changes\n (_this3$grid = _this3.grid) === null || _this3$grid === void 0 ? void 0 : _this3$grid.focus();\n }\n var newPendingSavePromise = _this3.pending.add(model.commitPending()).then(() => {\n _this3.setState({\n pendingSaveError: null,\n pendingSavePromise: null\n });\n }).catch(err => {\n if (!PromiseUtils.isCanceled(err)) {\n _this3.setState({\n pendingSaveError: err,\n pendingSavePromise: null\n });\n }\n });\n _this3.setState({\n pendingSavePromise: newPendingSavePromise\n });\n return newPendingSavePromise;\n })();\n }\n discardPending() {\n var _this4 = this;\n return _asyncToGenerator(function* () {\n var {\n pendingSavePromise\n } = _this4.state;\n if (pendingSavePromise != null) {\n throw new Error('Cannot cancel a save in progress');\n }\n _this4.setState({\n pendingSavePromise: null,\n pendingSaveError: null,\n pendingDataMap: new Map(),\n pendingDataErrors: new Map()\n });\n })();\n }\n\n /**\n * Select the passed in column and notify listener\n * @param column The column in this table to link\n */\n selectColumn(column) {\n var {\n onColumnSelected\n } = this.props;\n onColumnSelected(column);\n }\n\n /**\n * Get the row data map for a given row and notifies the listener\n */\n selectData(columnIndex, rowIndex) {\n var dataMap = this.getRowDataMap(rowIndex);\n var {\n onDataSelected\n } = this.props;\n onDataSelected(rowIndex, dataMap);\n }\n\n /**\n * Get the data map for the given row\n * @param rowIndex Row to get the data map for\n * @returns Data map for the row\n */\n getRowDataMap(rowIndex) {\n var _this5 = this;\n var {\n model\n } = this.props;\n var {\n columns,\n groupedColumns\n } = model;\n var dataMap = {};\n var _loop = function _loop() {\n var column = columns[i];\n var {\n name,\n type\n } = column;\n var value = model.valueForCell(i, rowIndex);\n var text = model.textForCell(i, rowIndex);\n var visibleIndex = _this5.getVisibleColumn(i);\n var isExpandable = isExpandableGridModel(model) && model.isRowExpandable(rowIndex);\n var isGrouped = groupedColumns.find(c => c.name === name) != null;\n dataMap[name] = {\n value,\n text,\n type,\n isGrouped,\n isExpandable,\n visibleIndex\n };\n };\n for (var i = 0; i < columns.length; i += 1) {\n _loop();\n }\n return dataMap;\n }\n handleAdvancedFilterChange(column, filter, options) {\n var {\n model\n } = this.props;\n var index = model.getColumnIndexByName(column.name);\n assertNotNull(index);\n this.setAdvancedFilter(index, filter, options);\n }\n handleAdvancedFilterSortChange(column, direction) {\n var _this$grid18;\n var addToExisting = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var {\n model\n } = this.props;\n var columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n var columnName = model.columns[columnIndex].name;\n var oldSort = TableUtils.getSortForColumn(model.sort, columnName);\n var newSort = null;\n if (oldSort == null || oldSort.direction !== direction) {\n if (direction === TableUtils.sortDirection.descending) {\n newSort = column.sort().desc();\n } else {\n newSort = column.sort().asc();\n }\n }\n var sorts = TableUtils.setSortForColumn(model.sort, columnName, newSort, addToExisting);\n log.info('Setting table sorts', sorts);\n this.startLoading('Sorting...');\n this.setState({\n sorts\n });\n (_this$grid18 = this.grid) === null || _this$grid18 === void 0 ? void 0 : _this$grid18.forceUpdate();\n }\n handleAdvancedFilterDone() {\n var _this$grid19;\n (_this$grid19 = this.grid) === null || _this$grid19 === void 0 ? void 0 : _this$grid19.focus();\n }\n handleAdvancedMenuOpened(column) {\n this.setState({\n shownAdvancedFilter: column\n });\n }\n handleGotoRowOpened() {\n this.setState({\n isGotoShown: true,\n gotoValueManuallyChanged: false\n });\n }\n handleGotoRowClosed() {\n this.setState({\n isGotoShown: false,\n gotoValueManuallyChanged: false\n });\n }\n handleAdvancedMenuClosed(columnIndex) {\n var _this$filterInputRef;\n var {\n focusedFilterBarColumn,\n isFilterBarShown\n } = this.state;\n if (isFilterBarShown && focusedFilterBarColumn === columnIndex && ((_this$filterInputRef = this.filterInputRef) === null || _this$filterInputRef === void 0 ? void 0 : _this$filterInputRef.current) !== null) {\n var _this$filterInputRef2;\n (_this$filterInputRef2 = this.filterInputRef) === null || _this$filterInputRef2 === void 0 ? void 0 : _this$filterInputRef2.current.focus();\n this.setState({\n shownAdvancedFilter: null\n });\n } else {\n this.setState({\n focusedFilterBarColumn: null,\n shownAdvancedFilter: null\n });\n }\n }\n handleCancel() {\n this.rollback();\n }\n\n // eslint-disable-next-line class-methods-use-this\n handleChartChange() {\n // TODO: IDS-4242 Update Chart Preview\n }\n handleChartCreate(settings) {\n var {\n model,\n onCreateChart\n } = this.props;\n onCreateChart(settings, model);\n }\n handleGridError(error) {\n log.warn('Grid Error', error);\n this.setState({\n toastMessage: /*#__PURE__*/_jsx(\"div\", {\n className: \"error-message\",\n children: \"\".concat(error)\n })\n });\n }\n handleFilterBarChange(value) {\n this.startLoading('Filtering...', {\n resetRanges: true\n });\n this.setState(_ref15 => {\n var {\n focusedFilterBarColumn,\n quickFilters\n } = _ref15;\n var newQuickFilters = new Map(quickFilters);\n if (focusedFilterBarColumn != null) {\n var modelIndex = this.getModelColumn(focusedFilterBarColumn);\n assertNotNull(modelIndex);\n this.applyQuickFilter(modelIndex, value, newQuickFilters);\n }\n return {\n quickFilters: newQuickFilters\n };\n });\n }\n handleFilterBarDone() {\n var setGridFocus = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n var defocusInput = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n if (setGridFocus) {\n var _this$grid20;\n (_this$grid20 = this.grid) === null || _this$grid20 === void 0 ? void 0 : _this$grid20.focus();\n }\n if (defocusInput) {\n this.setState({\n focusedFilterBarColumn: null\n });\n }\n }\n handleFilterBarTab(backward) {\n var {\n focusedFilterBarColumn\n } = this.state;\n assertNotNull(focusedFilterBarColumn);\n if (backward) {\n this.focusFilterBar(focusedFilterBarColumn - 1);\n } else {\n this.focusFilterBar(focusedFilterBarColumn + 1);\n }\n }\n handleFormatSelection(modelIndex, selectedFormat) {\n var {\n model\n } = this.props;\n var column = model.columns[modelIndex];\n var {\n customColumnFormatMap: prevCustomColumnFormatMap\n } = this.state;\n var customColumnFormatMap = new Map(prevCustomColumnFormatMap);\n if (selectedFormat != null) {\n var normalizedType = TableUtils.getNormalizedType(column.type);\n assertNotNull(normalizedType);\n var columnFormattingRule = Formatter.makeColumnFormattingRule(normalizedType, column.name, selectedFormat);\n customColumnFormatMap.set(column.name, columnFormattingRule);\n } else {\n customColumnFormatMap.delete(column.name);\n }\n this.updateFormatter({\n customColumnFormatMap\n });\n }\n handleColumnAlignmentChange(modelIndex, alignment) {\n var {\n model\n } = this.props;\n var column = model.columns[modelIndex];\n this.setState(_ref16 => {\n var {\n columnAlignmentMap = EMPTY_MAP\n } = _ref16;\n var newColumnAlignmentMap = new Map(columnAlignmentMap);\n if (alignment != null) {\n newColumnAlignmentMap.set(column.name, alignment);\n } else {\n newColumnAlignmentMap.delete(column.name);\n }\n return {\n columnAlignmentMap: newColumnAlignmentMap\n };\n });\n }\n handleMenu(e) {\n e.stopPropagation();\n this.setState({\n isMenuShown: true\n });\n }\n handleMenuClose() {\n this.setState({\n isMenuShown: false,\n openOptions: []\n });\n }\n handleMenuBack() {\n this.setState(_ref17 => {\n var {\n openOptions\n } = _ref17;\n var newOptions = [...openOptions];\n newOptions.pop();\n return {\n openOptions: newOptions\n };\n });\n }\n handleMenuSelect(option) {\n this.setState(_ref18 => {\n var {\n openOptions\n } = _ref18;\n return {\n openOptions: [...openOptions, option]\n };\n });\n }\n handleRequestFailed(event) {\n var {\n detail: error\n } = event;\n log.error('request failed:', error);\n this.stopLoading();\n var {\n partitionConfig\n } = this.state;\n if (isMissingPartitionError(error) && partitionConfig != null) {\n // We'll try loading the initial partition again\n this.startLoading('Reloading partition...', {\n resetRanges: true\n });\n this.setState({\n partitionConfig: undefined\n }, () => {\n this.initState();\n });\n } else if (this.canRollback()) {\n this.startLoading('Rolling back changes...', {\n resetRanges: true\n });\n this.rollback();\n } else {\n log.error('Table failed and unable to rollback');\n var {\n onError\n } = this.props;\n onError(new Error(\"Error displaying table: \".concat(error)));\n }\n }\n handleUpdate() {\n var _this$grid21;\n log.debug2('Received model update');\n var {\n advancedFilters,\n aggregationSettings,\n customColumns,\n quickFilters,\n reverse,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts\n } = this.state;\n var config = {\n advancedFilters,\n aggregationSettings,\n customColumns,\n quickFilters,\n reverse,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts\n };\n if (!isEmptyConfig(config)) {\n this.lastLoadedConfig = config;\n } else {\n this.lastLoadedConfig = null;\n }\n (_this$grid21 = this.grid) === null || _this$grid21 === void 0 ? void 0 : _this$grid21.forceUpdate();\n this.stopLoading();\n }\n handleTableChanged() {\n var {\n model\n } = this.props;\n // movedColumns reset triggers metricCalculator update in the Grid component\n this.setState({\n movedColumns: model.initialMovedColumns\n });\n }\n handleViewChanged(metrics) {\n var _this$grid$state, _this$grid22;\n var {\n model\n } = this.props;\n var {\n selectionEndRow = 0\n } = (_this$grid$state = (_this$grid22 = this.grid) === null || _this$grid22 === void 0 ? void 0 : _this$grid22.state) !== null && _this$grid$state !== void 0 ? _this$grid$state : {};\n var pendingRowCount = 0;\n if (isEditableGridModel(model) && model.isEditable) {\n assertNotNull(metrics);\n var {\n bottomViewport\n } = metrics;\n\n // We have an editable table that we can add new rows to\n // Display empty rows beneath the table rows that user can fill in\n var bottomNonFloating = model.rowCount - model.floatingBottomRowCount;\n if (selectionEndRow === bottomNonFloating - 1) {\n // Selection is in the last row, add another blank row\n pendingRowCount = model.pendingRowCount + 1;\n } else if (selectionEndRow === bottomNonFloating - 2) {\n // We may have just added a row based on selection moving, so just leave it as is\n pendingRowCount = model.pendingRowCount;\n } else {\n // Otherwise fill up the viewport with empty cells\n pendingRowCount = Math.max(0, bottomViewport - (model.rowCount - model.pendingRowCount) - model.floatingTopRowCount - model.floatingBottomRowCount - 1);\n }\n }\n this.setState({\n metrics,\n pendingRowCount\n });\n }\n handleSelectionChanged(selectedRanges) {\n var _this$grid23;\n assertNotNull(selectedRanges);\n var {\n onSelectionChanged\n } = this.props;\n var {\n copyOperation\n } = this.state;\n this.setState({\n selectedRanges\n });\n if (copyOperation != null) {\n this.setState({\n copyOperation: null\n });\n }\n if (((_this$grid23 = this.grid) === null || _this$grid23 === void 0 ? void 0 : _this$grid23.state.cursorRow) != null) {\n this.setState({\n gotoRow: \"\".concat(this.grid.state.cursorRow + 1)\n });\n }\n onSelectionChanged(selectedRanges);\n }\n handleMovedColumnsChanged(movedColumns, onChangeApplied) {\n this.setState({\n movedColumns\n }, onChangeApplied);\n }\n handleHeaderGroupsChanged(columnHeaderGroups) {\n var {\n model\n } = this.props;\n this.setState({\n columnHeaderGroups: IrisGridUtils.parseColumnHeaderGroups(model, columnHeaderGroups).groups\n }, () => {\n var _this$grid24;\n return (_this$grid24 = this.grid) === null || _this$grid24 === void 0 ? void 0 : _this$grid24.forceUpdate();\n });\n }\n handleTooltipRef(tooltip) {\n // Need to start the timer right away, since we're creating the tooltip when we want the timer to start\n if (tooltip != null) {\n tooltip.startTimer();\n }\n this.tooltip = tooltip;\n }\n handleConditionalFormatsChange(conditionalFormats) {\n log.debug('Updated conditional formats', conditionalFormats);\n this.setState({\n conditionalFormats\n });\n }\n handleConditionalFormatCreate() {\n log.debug('Create new conditional format');\n var {\n openOptions,\n conditionalFormats\n } = this.state;\n this.setState({\n openOptions: [...openOptions, {\n type: OptionType.CONDITIONAL_FORMATTING_EDIT,\n title: \"Create Formatting Rule\"\n }],\n conditionalFormatEditIndex: conditionalFormats.length,\n // Start with a blank rule\n conditionalFormatPreview: undefined\n });\n }\n handleConditionalFormatEdit(index) {\n log.debug('Edit conditional format', index);\n var {\n openOptions,\n conditionalFormats\n } = this.state;\n this.setState({\n openOptions: [...openOptions, {\n type: OptionType.CONDITIONAL_FORMATTING_EDIT,\n title: \"Edit Formatting Rule\"\n }],\n conditionalFormatEditIndex: index,\n // Clone rule to preview temporary changes\n conditionalFormatPreview: _objectSpread({}, conditionalFormats[index])\n });\n }\n\n // Apply live changes\n\n handleConditionalFormatEditorSave(config) {\n log.debug('Save conditional format changes', config);\n this.setState(state => {\n if (state.conditionalFormatEditIndex === null) {\n log.debug('Invalid format index');\n return null;\n }\n var conditionalFormats = [...state.conditionalFormats];\n conditionalFormats[state.conditionalFormatEditIndex] = config;\n return {\n conditionalFormats\n };\n }, () => {\n this.handleMenuBack();\n });\n }\n handleConditionalFormatEditorCancel() {\n this.handleMenuBack();\n // Not resetting conditionalFormatPreview here\n // to prevent editor fields change during the menu transition\n this.setState({\n conditionalFormatEditIndex: null\n });\n }\n handleUpdateCustomColumns(customColumns) {\n log.info(\"handleUpdateCustomColumns:\", customColumns);\n var {\n model\n } = this.props;\n var {\n movedColumns,\n sorts,\n quickFilters,\n advancedFilters,\n selectDistinctColumns\n } = this.state;\n var {\n columns\n } = model;\n var oldCustomColumns = model.customColumns.map(customColumn => \"\".concat(customColumn));\n var removedColumnNames = IrisGridUtils.getRemovedCustomColumnNames(oldCustomColumns, customColumns);\n if (removedColumnNames.length > 0) {\n var newSorts = IrisGridUtils.removeSortsInColumns(sorts, removedColumnNames);\n var newQuickFilters = IrisGridUtils.removeFiltersInColumns(columns, quickFilters, removedColumnNames);\n var newAdvancedFilters = IrisGridUtils.removeFiltersInColumns(columns, advancedFilters, removedColumnNames);\n var newMovedColumns = IrisGridUtils.removeColumnFromMovedColumns(columns, movedColumns, removedColumnNames);\n var newSelectDistinctColumns = IrisGridUtils.removeColumnsFromSelectDistinctColumns(selectDistinctColumns, removedColumnNames);\n if (newSorts.length !== sorts.length) {\n log.debug('removing sorts from removed custom columns...');\n this.setState({\n sorts: newSorts\n });\n }\n if (newQuickFilters.size !== quickFilters.size || newAdvancedFilters.size !== advancedFilters.size) {\n log.debug(\"removing filters from removed custom columns...\");\n this.setState({\n quickFilters: newQuickFilters,\n advancedFilters: newAdvancedFilters\n });\n }\n if (!deepEqual(movedColumns, newMovedColumns)) {\n log.debug(\"change moved columns for removed custom columns\", newMovedColumns);\n this.setState({\n movedColumns: newMovedColumns\n });\n }\n if (!deepEqual(selectDistinctColumns, newSelectDistinctColumns)) {\n log.debug(\"change selectDistinct columns for removed custom columns\", newMovedColumns);\n this.setState({\n selectDistinctColumns: newSelectDistinctColumns\n });\n }\n }\n this.setState({\n customColumns\n });\n if (customColumns.length > 0) {\n // If there are no custom columns, the change handler never fires\n // This causes the loader to stay until canceled by the user\n this.startLoading('Applying custom columns...');\n }\n }\n handleCustomColumnsChanged() {\n log.debug('Model columns changed');\n var {\n isReady\n } = this.state;\n if (isReady) {\n this.updateMetrics();\n\n // Make sure stopLoading() is called after the updateMetrics call,\n // otherwise IrisGridModelUpdater queues an extra setViewport based on old metrics.\n this.stopLoading();\n } else {\n this.loadTableState();\n }\n }\n handlePendingCommitClicked() {\n return this.commitPending();\n }\n handlePendingDiscardClicked() {\n return this.discardPending();\n }\n handlePendingDataUpdated() {\n var _this$grid25;\n log.debug('pending data updated');\n var {\n model\n } = this.props;\n var {\n pendingDataMap,\n pendingDataErrors\n } = model;\n this.setState({\n pendingDataMap,\n pendingDataErrors,\n pendingSaveError: null\n });\n (_this$grid25 = this.grid) === null || _this$grid25 === void 0 ? void 0 : _this$grid25.forceUpdate();\n }\n handleResizeColumn(modelIndex) {\n var _this$grid26;\n var {\n metrics,\n metricCalculator\n } = this.state;\n if (!metrics) throw new Error('Metrics not set');\n var contentWidth = getOrThrow(metrics.contentColumnWidths, modelIndex);\n var userWidths = metricCalculator.getUserColumnWidths();\n if (userWidths.has(modelIndex)) {\n metricCalculator.resetColumnWidth(modelIndex);\n metricCalculator.setCalculatedColumnWidth(modelIndex, contentWidth);\n } else {\n metricCalculator.setColumnWidth(modelIndex, contentWidth);\n }\n (_this$grid26 = this.grid) === null || _this$grid26 === void 0 ? void 0 : _this$grid26.forceUpdate();\n }\n handleResizeAllColumns() {\n var _this$grid27;\n var {\n metrics,\n metricCalculator\n } = this.state;\n if (!metrics) throw new Error('Metrics not set');\n var allColumns = [...metrics.allColumnWidths.entries()];\n var visibleColumns = allColumns.filter(_ref19 => {\n var [_, width] = _ref19;\n return width !== 0;\n }).map(_ref20 => {\n var [modelIndex] = _ref20;\n return modelIndex;\n });\n var contentWidths = metrics.contentColumnWidths;\n var userWidths = metricCalculator.getUserColumnWidths();\n var manualColumns = visibleColumns.filter(modelIndex => userWidths.has(modelIndex));\n if (visibleColumns.length === manualColumns.length) {\n // All columns are manually sized, flip all to auto resize\n for (var i = 0; i < visibleColumns.length; i += 1) {\n var modelIndex = visibleColumns[i];\n var contentWidth = getOrThrow(contentWidths, modelIndex);\n metricCalculator.resetColumnWidth(modelIndex);\n metricCalculator.setCalculatedColumnWidth(modelIndex, contentWidth);\n }\n } else {\n // Flip all to manual sized\n for (var _i3 = 0; _i3 < visibleColumns.length; _i3 += 1) {\n var _modelIndex = visibleColumns[_i3];\n var _contentWidth = getOrThrow(contentWidths, _modelIndex);\n metricCalculator.setColumnWidth(_modelIndex, _contentWidth);\n }\n }\n (_this$grid27 = this.grid) === null || _this$grid27 === void 0 ? void 0 : _this$grid27.forceUpdate();\n }\n\n /**\n * User added, removed, or changed the order of aggregations, or position\n * @param aggregationSettings The new aggregation settings\n * @param added The aggregations that were added\n * @param removed The aggregations that were removed\n */\n handleAggregationsChange(aggregationSettings) {\n var _rollupConfig$columns, _rollupConfig$columns2;\n var added = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var removed = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n log.debug('handleAggregationsChange', aggregationSettings, added, removed);\n var {\n rollupConfig\n } = this.state;\n var isRollup = ((_rollupConfig$columns = rollupConfig === null || rollupConfig === void 0 ? void 0 : (_rollupConfig$columns2 = rollupConfig.columns) === null || _rollupConfig$columns2 === void 0 ? void 0 : _rollupConfig$columns2.length) !== null && _rollupConfig$columns !== void 0 ? _rollupConfig$columns : 0) > 0;\n // Do not start loading if this is rollup and added / removed aggregations are prohibited for rollups\n var changes = [...added, ...removed];\n var shouldStartLoading = !(isRollup && changes.length > 0 && changes.every(op => AggregationUtils.isRollupProhibited(op)));\n if (shouldStartLoading) {\n this.startLoading(\"Aggregating \".concat(aggregationSettings.aggregations.map(a => a.operation).join(', '), \"...\"));\n }\n this.setState({\n aggregationSettings\n });\n }\n\n /**\n * A specific aggregation has been modified\n * @param aggregation The new aggregation\n */\n handleAggregationChange(aggregation) {\n var _rollupConfig$columns3, _rollupConfig$columns4;\n log.debug('handleAggregationChange', aggregation);\n var {\n rollupConfig\n } = this.state;\n var isRollup = ((_rollupConfig$columns3 = rollupConfig === null || rollupConfig === void 0 ? void 0 : (_rollupConfig$columns4 = rollupConfig.columns) === null || _rollupConfig$columns4 === void 0 ? void 0 : _rollupConfig$columns4.length) !== null && _rollupConfig$columns3 !== void 0 ? _rollupConfig$columns3 : 0) > 0;\n // Do not start loading if this is rollup and the aggregation is prohibited for rollups\n var shouldStartLoading = !(isRollup && AggregationUtils.isRollupProhibited(aggregation.operation));\n if (shouldStartLoading) {\n this.startLoading(\"Aggregating \".concat(aggregation.operation, \"...\"));\n }\n this.setState(_ref21 => {\n var {\n aggregationSettings\n } = _ref21;\n return {\n selectedAggregation: aggregation,\n aggregationSettings: _objectSpread(_objectSpread({}, aggregationSettings), {}, {\n aggregations: aggregationSettings.aggregations.map(a => a.operation === aggregation.operation ? aggregation : a)\n })\n };\n });\n }\n\n /**\n * An aggregations has been selected for editing\n * @param aggregation The aggregation to edit\n */\n handleAggregationEdit(aggregation) {\n log.debug('handleAggregationEdit', aggregation);\n var {\n openOptions\n } = this.state;\n this.setState({\n openOptions: [...openOptions, {\n type: OptionType.AGGREGATION_EDIT,\n title: \"Edit Columns to \".concat(aggregation.operation)\n }],\n selectedAggregation: aggregation\n });\n }\n handleRollupChange(rollupConfig) {\n var _rollupConfig$columns5, _rollupConfig$columns6;\n log.info('Rollup change', rollupConfig);\n this.resetGridViewState();\n this.showAllColumns();\n this.clearAllFilters();\n this.startLoading(\"Grouping by columns \".concat((_rollupConfig$columns5 = rollupConfig === null || rollupConfig === void 0 ? void 0 : (_rollupConfig$columns6 = rollupConfig.columns) === null || _rollupConfig$columns6 === void 0 ? void 0 : _rollupConfig$columns6.join(', ')) !== null && _rollupConfig$columns5 !== void 0 ? _rollupConfig$columns5 : '', \"...\"));\n\n // Have to clear select distinct since rollup uses the original columns, not the current ones.\n // IrisGridProxyModel has a check to prevent model update\n // when selectDistinctModel is cleared and the rollupConfig is set on the model.\n this.setState({\n rollupConfig,\n movedColumns: [],\n frozenColumns: [],\n sorts: [],\n reverse: false,\n selectDistinctColumns: []\n });\n }\n handleSelectDistinctChanged(columnNames) {\n log.debug('SelectDistinct change', columnNames);\n this.resetGridViewState();\n this.showAllColumns();\n this.clearAllFilters();\n this.clearAllAggregations();\n this.startLoading(\"Selecting distinct values in \".concat(columnNames.length > 0 ? columnNames.join(', ') : '', \"...\"));\n this.setState({\n selectDistinctColumns: columnNames,\n movedColumns: [],\n sorts: [],\n reverse: false\n });\n }\n handleDownloadTableStart() {\n var {\n canDownloadCsv\n } = this.props;\n if (canDownloadCsv) {\n this.setState({\n isTableDownloading: true,\n tableDownloadProgress: 0,\n tableDownloadEstimatedTime: null,\n tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.INITIATING\n });\n } else {\n log.error('Attempted to handleDownloadTableStart for user without download CSV permission.');\n }\n }\n handleDownloadTable(fileName, frozenTable, tableSubscription, snapshotRanges, modelRanges, includeColumnHeaders, useUnformattedValues) {\n var {\n canDownloadCsv\n } = this.props;\n if (canDownloadCsv) {\n log.info('start table downloading', fileName, frozenTable, tableSubscription, snapshotRanges, modelRanges, includeColumnHeaders, useUnformattedValues);\n this.setState(() => {\n if (this.tableSaver) {\n this.tableSaver.startDownload(fileName, frozenTable, tableSubscription, snapshotRanges, modelRanges, includeColumnHeaders, useUnformattedValues);\n }\n return {\n tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING\n };\n });\n } else {\n log.error('Attempted to handleDownloadTable for user without download CSV permission.');\n }\n }\n\n /**\n * Aggregation editing has completed. Need to filter out any aggregations that have no columns selected\n */\n removeEmptyAggregations() {\n log.debug('removeEmptyAggregations');\n this.setState(_ref22 => {\n var {\n aggregationSettings\n } = _ref22;\n var {\n aggregations\n } = aggregationSettings;\n var newAggregations = aggregations.filter(a => a.selected.length > 0 || a.invert);\n if (newAggregations.length !== aggregations.length) {\n return {\n selectedAggregation: null,\n aggregationSettings: _objectSpread(_objectSpread({}, aggregationSettings), {}, {\n aggregations: newAggregations\n })\n };\n }\n return {\n selectedAggregation: null,\n aggregationSettings\n };\n });\n }\n seekRow(inputString) {\n var _arguments = arguments,\n _this6 = this;\n return _asyncToGenerator(function* () {\n var _this6$grid;\n var isBackwards = _arguments.length > 1 && _arguments[1] !== undefined ? _arguments[1] : false;\n var {\n gotoValueSelectedColumnName: selectedColumnName,\n gotoValueSelectedFilter\n } = _this6.state;\n var {\n model\n } = _this6.props;\n var {\n dh\n } = model;\n if (!model.isSeekRowAvailable) {\n return;\n }\n if (inputString === '') {\n return;\n }\n var selectedColumn = IrisGridUtils.getColumnByName(model.columns, selectedColumnName);\n if (selectedColumn === undefined) {\n return;\n }\n var searchFromRow = (_this6$grid = _this6.grid) === null || _this6$grid === void 0 ? void 0 : _this6$grid.state.cursorRow;\n if (searchFromRow == null) {\n searchFromRow = 0;\n }\n var isContains = gotoValueSelectedFilter === FilterType.contains || gotoValueSelectedFilter === FilterType.containsIgnoreCase;\n var isIgnoreCase = gotoValueSelectedFilter === FilterType.eqIgnoreCase || gotoValueSelectedFilter === FilterType.containsIgnoreCase;\n try {\n var _this6$grid2;\n var {\n formatter\n } = model;\n var columnDataType = TableUtils.getNormalizedType(selectedColumn.type);\n var rowIndex;\n switch (columnDataType) {\n case TableUtils.dataType.CHAR:\n case TableUtils.dataType.STRING:\n {\n rowIndex = yield model.seekRow(searchFromRow, selectedColumn, dh.ValueType.STRING, inputString, isIgnoreCase, isContains, isBackwards !== null && isBackwards !== void 0 ? isBackwards : false);\n break;\n }\n case TableUtils.dataType.DATETIME:\n {\n var [startDate] = DateUtils.parseDateRange(dh, inputString, formatter.timeZone);\n rowIndex = yield model.seekRow(searchFromRow, selectedColumn, dh.ValueType.DATETIME, startDate, undefined, undefined, isBackwards !== null && isBackwards !== void 0 ? isBackwards : false);\n break;\n }\n case TableUtils.dataType.DECIMAL:\n case TableUtils.dataType.INT:\n {\n if (!TableUtils.isBigDecimalType(selectedColumn.type) && !TableUtils.isBigIntegerType(selectedColumn.type)) {\n var inputValue = parseInt(inputString, 10);\n if (inputString === '-Infinity') {\n inputValue = Number.NEGATIVE_INFINITY;\n } else if (inputString === 'Infinity') {\n inputValue = Number.POSITIVE_INFINITY;\n }\n rowIndex = yield model.seekRow(searchFromRow, selectedColumn, dh.ValueType.NUMBER, inputValue, undefined, undefined, isBackwards !== null && isBackwards !== void 0 ? isBackwards : false);\n } else {\n rowIndex = yield model.seekRow(searchFromRow, selectedColumn, dh.ValueType.STRING, inputString, undefined, undefined, isBackwards !== null && isBackwards !== void 0 ? isBackwards : false);\n }\n break;\n }\n default:\n {\n rowIndex = yield model.seekRow(searchFromRow, selectedColumn, dh.ValueType.STRING, _this6.tableUtils.makeValue(selectedColumn.type, inputString, formatter.timeZone), undefined, undefined, isBackwards !== null && isBackwards !== void 0 ? isBackwards : false);\n }\n }\n (_this6$grid2 = _this6.grid) === null || _this6$grid2 === void 0 ? void 0 : _this6$grid2.setFocusRow(rowIndex);\n _this6.setState({\n gotoValueError: ''\n });\n } catch (e) {\n _this6.setState({\n gotoValueError: 'invalid input'\n });\n }\n })();\n }\n handleCancelDownloadTable() {\n var _this$tableSaver;\n (_this$tableSaver = this.tableSaver) === null || _this$tableSaver === void 0 ? void 0 : _this$tableSaver.cancelDownload();\n this.setState({\n isTableDownloading: false\n });\n }\n handleDownloadCompleted() {\n this.setState({\n isTableDownloading: false,\n tableDownloadProgress: 100,\n tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.FINISHED\n });\n }\n handleDownloadCanceled() {\n this.setState({\n isTableDownloading: false,\n tableDownloadProgress: 0,\n tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.CANCELED\n });\n }\n\n /**\n * Delete the specified ranges from the table.\n * @param ranges The ranges to delete\n */\n deleteRanges(ranges) {\n var {\n model\n } = this.props;\n if (!isDeletableGridModel(model) || !model.isDeletable) {\n throw new Error('Model does not support deleting ranges');\n }\n this.pending.add(model.delete(ranges)).catch(e => {\n if (!PromiseUtils.isCanceled(e)) {\n log.error('Unable to delete ranges', ranges, e);\n }\n });\n }\n resetColumnSelection() {\n if (this.grid == null) {\n return;\n }\n var {\n isSelectingColumn\n } = this.props;\n if (isSelectingColumn) {\n var {\n columnAllowedCursor\n } = this.props;\n this.grid.setState({\n cursor: columnAllowedCursor\n });\n } else {\n this.grid.setState({\n cursor: null\n });\n this.setState({\n hoverSelectColumn: null\n });\n }\n }\n resetGridViewState() {\n var forceUpdate = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n if (!this.grid) {\n return;\n }\n this.grid.clearSelectedRanges();\n this.grid.setViewState({\n left: 0,\n top: 0,\n topOffset: 0,\n leftOffset: 0\n }, forceUpdate);\n }\n sendStateChange() {\n if (!this.grid) {\n return;\n }\n var {\n state: irisGridState\n } = this;\n var {\n state: gridState\n } = this.grid;\n var {\n onStateChange\n } = this.props;\n onStateChange(irisGridState, gridState);\n }\n handleOverflowClose() {\n this.setState({\n showOverflowModal: false\n });\n }\n handleOpenNoPastePermissionModal(errorMessage) {\n this.setState({\n showNoPastePermissionModal: true,\n noPastePermissionError: errorMessage\n });\n }\n handleCloseNoPastePermissionModal() {\n this.setState({\n showNoPastePermissionModal: false\n });\n }\n getColumnBoundingRect() {\n var _this$gridWrapper2;\n var {\n metrics,\n shownColumnTooltip\n } = this.state;\n assertNotNull(metrics);\n assertNotNull(shownColumnTooltip);\n var gridRect = (_this$gridWrapper2 = this.gridWrapper) === null || _this$gridWrapper2 === void 0 ? void 0 : _this$gridWrapper2.getBoundingClientRect();\n var popperMargin = 20;\n assertNotNull(gridRect);\n var {\n columnHeaderHeight,\n allColumnXs,\n allColumnWidths,\n width,\n columnHeaderMaxDepth\n } = metrics;\n var columnX = allColumnXs.get(shownColumnTooltip);\n var columnWidth = allColumnWidths.get(shownColumnTooltip);\n assertNotNull(columnX);\n assertNotNull(columnWidth);\n var left = gridRect.left + clamp(columnX + columnWidth / 2, popperMargin, width - popperMargin);\n return {\n top: gridRect.top + (columnHeaderMaxDepth - 1) * columnHeaderHeight,\n left: gridRect.left + clamp(columnX + columnWidth / 2, popperMargin, width - popperMargin),\n bottom: gridRect.top + columnHeaderMaxDepth * columnHeaderHeight,\n right: gridRect.left + clamp(columnX + columnWidth / 2, popperMargin, width - popperMargin) + 1,\n width: 1,\n height: columnHeaderHeight,\n x: left,\n y: gridRect.top,\n toJSON: () => {\n throw new Error('not implemented');\n }\n };\n }\n handleGotoRowSelectedRowNumberSubmit() {\n var {\n gotoRow: rowNumber\n } = this.state;\n this.focusRowInGrid(rowNumber);\n }\n focusRowInGrid(rowNumber) {\n var {\n model\n } = this.props;\n var {\n rowCount\n } = model;\n this.setState({\n gotoRow: rowNumber\n });\n if (rowNumber === '') {\n this.setState({\n gotoRowError: '',\n gotoValueError: ''\n });\n return;\n }\n var rowInt = parseInt(rowNumber, 10);\n if (rowInt > rowCount || rowInt < -rowCount) {\n this.setState({\n gotoRowError: 'Invalid row index'\n });\n } else if (rowInt === 0) {\n var _this$grid28;\n this.setState({\n gotoRowError: '',\n gotoValueError: ''\n });\n (_this$grid28 = this.grid) === null || _this$grid28 === void 0 ? void 0 : _this$grid28.setFocusRow(0);\n } else if (rowInt < 0) {\n var _this$grid29;\n this.setState({\n gotoRowError: '',\n gotoValueError: ''\n });\n (_this$grid29 = this.grid) === null || _this$grid29 === void 0 ? void 0 : _this$grid29.setFocusRow(rowInt + rowCount);\n } else {\n var _this$grid30;\n (_this$grid30 = this.grid) === null || _this$grid30 === void 0 ? void 0 : _this$grid30.setFocusRow(rowInt - 1);\n this.setState({\n gotoRowError: '',\n gotoValueError: ''\n });\n }\n }\n handleGotoRowSelectedRowNumberChanged(event) {\n var rowNumber = event.target.value;\n this.focusRowInGrid(rowNumber);\n }\n getColumnTooltip(visibleIndex, metrics, model) {\n var {\n columnHeaderHeight,\n columnHeaderMaxDepth,\n allColumnXs,\n allColumnWidths,\n width\n } = metrics;\n var columnX = allColumnXs.get(visibleIndex);\n var columnWidth = allColumnWidths.get(visibleIndex);\n if (columnX == null || columnWidth == null) {\n return null;\n }\n\n /**\n * Create a wrapper dom element, the size of the column header.\n * The wrapper acts as tooltip parent, the tooltip component\n * will trigger hide on mouseleave of wrapper or tooltip.\n * The wrapper should be bound to within the grid dimensions,\n * so popper only remains triggered while mouse is inside the panel.\n */\n var boundedLeft = Math.max(0, columnX);\n var boundedWidth = columnWidth;\n if (columnX + columnWidth > width) {\n // column is extending past right edge\n boundedWidth = width - columnX;\n } else if (columnX < 0) {\n // column is extending past left edge\n boundedWidth = columnWidth - Math.abs(columnX);\n }\n var wrapperStyle = {\n position: 'absolute',\n top: (columnHeaderMaxDepth - 1) * columnHeaderHeight,\n left: boundedLeft,\n width: boundedWidth,\n height: columnHeaderHeight,\n pointerEvents: 'none'\n };\n\n /**\n * Because the popper parent wrapper center is no longer the same as\n * the column label center, we create a popper virtual ref, to handle\n * positioning and keep the popper centered on the label. Creates a\n * 1px x headerHeight virtual object, placed centered on the column\n * label, clamped to 0 + margin to width - margin. We add a margin,\n * otherwise the arrow wants to escape the boundary.\n */\n var virtualReference = {\n clientWidth: 1,\n clientHeight: columnHeaderHeight,\n getBoundingClientRect: this.getColumnBoundingRect\n };\n var popperOptions = {\n placement: 'bottom',\n modifiers: {\n flip: {\n behavior: ['bottom', 'top']\n }\n }\n };\n var modelColumn = this.getModelColumn(visibleIndex);\n if (modelColumn == null) return null;\n var column = model.columns[modelColumn];\n if (column == null) return null;\n return /*#__PURE__*/_jsx(\"div\", {\n style: wrapperStyle,\n children: /*#__PURE__*/_jsx(Tooltip, {\n timeout: 400,\n interactive: true,\n options: popperOptions,\n ref: this.handleTooltipRef,\n referenceObject: virtualReference,\n onExited: () => {\n this.setState({\n shownColumnTooltip: null\n });\n },\n children: /*#__PURE__*/_jsx(ColumnStatistics, {\n model: model,\n column: column,\n onStatistics: () => {\n var _this$tooltip;\n (_this$tooltip = this.tooltip) === null || _this$tooltip === void 0 ? void 0 : _this$tooltip.update();\n }\n })\n }, column.name)\n });\n }\n handleGotoValueSelectedColumnNameChanged(columnName) {\n var _this$grid31;\n var {\n model\n } = this.props;\n var cursorRow = (_this$grid31 = this.grid) === null || _this$grid31 === void 0 ? void 0 : _this$grid31.state.cursorRow;\n var {\n gotoValueSelectedColumnName: prevColumnName,\n gotoValueManuallyChanged\n } = this.state;\n if (cursorRow != null) {\n var _index = model.getColumnIndexByName(columnName);\n var _column2 = IrisGridUtils.getColumnByName(model.columns, columnName);\n var prevColumn = IrisGridUtils.getColumnByName(model.columns, prevColumnName);\n if (_index == null || _column2 == null) {\n return;\n }\n var _value3 = model.valueForCell(_index, cursorRow);\n var text = IrisGridUtils.convertValueToText(_value3, _column2.type);\n\n // do NOT update value if user manually changed value AND column type remains the same\n if (gotoValueManuallyChanged && _column2.type === (prevColumn === null || prevColumn === void 0 ? void 0 : prevColumn.type)) {\n this.setState({\n gotoValueSelectedColumnName: columnName,\n gotoValueError: ''\n });\n } else {\n // do update, and set goToValueManuallyChanged to false because value was automatically changed\n this.setState({\n gotoValueSelectedColumnName: columnName,\n gotoValue: text,\n gotoValueError: '',\n gotoValueManuallyChanged: false\n });\n }\n }\n this.setState({\n gotoValueSelectedColumnName: columnName,\n gotoValueError: ''\n });\n }\n handleGotoValueSelectedFilterChanged(value) {\n this.setState({\n gotoValueSelectedFilter: value,\n gotoValueError: ''\n });\n }\n handleGotoValueSubmitted(isBackwards) {\n var {\n gotoValue\n } = this.state;\n this.seekRow(gotoValue, isBackwards);\n }\n render() {\n var _rollupConfig$columns7,\n _rollupConfig$columns8,\n _this7 = this,\n _this$grid33,\n _this$grid33$state$dr,\n _openOptions;\n var {\n children,\n customFilters,\n getDownloadWorker,\n isSelectingColumn,\n isStuckToBottom,\n isStuckToRight,\n model,\n name,\n onlyFetchVisibleColumns,\n alwaysFetchColumns,\n advancedSettings,\n onAdvancedSettingsChange,\n canDownloadCsv,\n onCreateChart\n } = this.props;\n var {\n metricCalculator,\n metrics,\n isFilterBarShown,\n isSelectingPartition,\n isMenuShown,\n isReady,\n copyOperation,\n focusedFilterBarColumn,\n loadingText,\n loadingScrimProgress,\n loadingSpinnerShown,\n loadingCancelShown,\n loadingBlocksGrid,\n shownColumnTooltip,\n hoverAdvancedFilter,\n shownAdvancedFilter,\n hoverSelectColumn,\n quickFilters,\n advancedFilters,\n searchFilter,\n selectDistinctColumns,\n movedColumns,\n movedRows,\n formatter,\n conditionalFormats,\n conditionalFormatPreview,\n conditionalFormatEditIndex,\n columnAlignmentMap,\n sorts,\n reverse,\n customColumns,\n selectedRanges,\n isTableDownloading,\n tableDownloadStatus,\n tableDownloadProgress,\n tableDownloadEstimatedTime,\n showSearchBar,\n searchValue,\n selectedSearchColumns,\n invertSearchColumns,\n aggregationSettings,\n selectedAggregation,\n rollupConfig,\n openOptions,\n pendingSavePromise,\n pendingSaveError,\n pendingRowCount,\n pendingDataErrors,\n pendingDataMap,\n toastMessage,\n frozenColumns,\n columnHeaderGroups,\n showOverflowModal,\n showNoPastePermissionModal,\n noPastePermissionError,\n overflowText,\n overflowButtonTooltipProps,\n expandCellTooltipProps,\n hoverTooltipProps,\n isGotoShown,\n gotoRow,\n gotoRowError,\n gotoValueError,\n gotoValueSelectedColumnName,\n gotoValue,\n gotoValueSelectedFilter,\n partitionConfig\n } = this.state;\n if (!isReady) {\n return null;\n }\n var theme = this.getTheme();\n var {\n columnHeaderHeight: singleColumnHeaderHeight\n } = theme;\n var filter = this.getCachedFilter(customFilters, quickFilters, advancedFilters, searchFilter);\n var userColumnWidths = metricCalculator.getUserColumnWidths();\n var stateOverride = this.getCachedStateOverride(model, theme, hoverSelectColumn, isFilterBarShown, isSelectingColumn, loadingScrimProgress, quickFilters, advancedFilters, sorts, reverse, rollupConfig, isMenuShown);\n var top = metrics ? metrics.top : 0;\n var bottom = metrics ? metrics.bottomViewport : 0;\n var left = null;\n var right = null;\n if (onlyFetchVisibleColumns) {\n left = metrics ? metrics.left : 0;\n right = metrics ? metrics.right : 0;\n }\n var isVisible = metrics != null && metrics.width > 0 && metrics.height > 0;\n var isRollup = ((_rollupConfig$columns7 = rollupConfig === null || rollupConfig === void 0 ? void 0 : (_rollupConfig$columns8 = rollupConfig.columns) === null || _rollupConfig$columns8 === void 0 ? void 0 : _rollupConfig$columns8.length) !== null && _rollupConfig$columns7 !== void 0 ? _rollupConfig$columns7 : 0) > 0;\n var focusField = null;\n var debounceMs = metrics ? Math.min(Math.max(IrisGrid.minDebounce, Math.round(metrics.rowCount / 200)), IrisGrid.maxDebounce) : IrisGrid.maxDebounce;\n if (isFilterBarShown && focusedFilterBarColumn != null && metrics != null) {\n var {\n gridX,\n gridY,\n allColumnXs,\n allColumnWidths,\n width\n } = metrics;\n var columnX = allColumnXs.get(focusedFilterBarColumn);\n var columnWidth = allColumnWidths.get(focusedFilterBarColumn);\n if (columnX != null && columnWidth != null) {\n var _theme$filterBarHeigh, _theme$filterBarHeigh2, _this$grid32;\n var x = gridX + columnX;\n var y = gridY - ((_theme$filterBarHeigh = theme.filterBarHeight) !== null && _theme$filterBarHeigh !== void 0 ? _theme$filterBarHeigh : 0);\n var fieldWidth = columnWidth + 1; // cover right border\n var fieldHeight = ((_theme$filterBarHeigh2 = theme.filterBarHeight) !== null && _theme$filterBarHeigh2 !== void 0 ? _theme$filterBarHeigh2 : 0) - 1; // remove bottom border\n var style = {\n top: y,\n left: x,\n minWidth: Math.min(fieldWidth, width - x),\n // Don't cause overflow\n height: fieldHeight\n };\n var _value4 = '';\n var isValid = true;\n var modelColumn = this.getModelColumn(focusedFilterBarColumn);\n assertNotNull(modelColumn);\n var quickFilter = quickFilters.get(modelColumn);\n var advancedFilter = advancedFilters.get(modelColumn);\n if (quickFilter != null) {\n _value4 = quickFilter.text;\n isValid = quickFilter.filter != null;\n }\n var isBarFiltered = quickFilters.size !== 0 || advancedFilters.size !== 0;\n focusField = /*#__PURE__*/_jsx(FilterInputField, {\n ref: this.filterInputRef,\n style: style,\n className: classNames({\n error: !isValid,\n active: _value4 !== '' || advancedFilter != null,\n 'iris-grid-has-filter': isBarFiltered\n }),\n isAdvancedFilterSet: advancedFilter != null,\n onAdvancedFiltersTriggered: () => {\n this.setState({\n shownAdvancedFilter: focusedFilterBarColumn\n });\n },\n onChange: this.handleFilterBarChange,\n onDone: this.handleFilterBarDone,\n onTab: this.handleFilterBarTab,\n onContextMenu: (_this$grid32 = this.grid) === null || _this$grid32 === void 0 ? void 0 : _this$grid32.handleContextMenu,\n debounceMs: debounceMs,\n value: _value4\n }, focusedFilterBarColumn);\n }\n }\n var loadingElement = null;\n if (loadingText != null) {\n var loadingStatus = /*#__PURE__*/_jsxs(\"div\", {\n className: \"iris-grid-loading-status\",\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: classNames('iris-grid-loading-status-bar', {\n show: loadingSpinnerShown\n }),\n children: loadingText\n }), /*#__PURE__*/_jsxs(\"button\", {\n type: \"button\",\n onClick: this.handleCancel,\n className: classNames('iris-grid-btn-cancel', {\n show: loadingCancelShown\n }),\n children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsClose,\n transform: \"down-1\"\n }), \"Cancel\"]\n })]\n });\n var _gridY = metrics ? metrics.gridY : 0;\n loadingElement = /*#__PURE__*/_jsx(\"div\", {\n className: \"iris-grid-loading\",\n style: loadingBlocksGrid ? {\n top: _gridY\n } : {},\n children: loadingStatus\n });\n }\n var columnTooltip = null;\n if (shownColumnTooltip != null && metrics) {\n var _this$tooltip2;\n columnTooltip = this.getColumnTooltip(shownColumnTooltip, metrics, model);\n // #510 We may need to update the position of the tooltip if it's already opened and columns are resized\n (_this$tooltip2 = this.tooltip) === null || _this$tooltip2 === void 0 ? void 0 : _this$tooltip2.update();\n }\n var filterBar = [];\n if (metrics && isFilterBarShown) {\n var {\n gridX: _gridX,\n gridY: _gridY2,\n visibleColumns,\n allColumnXs: _allColumnXs,\n allColumnWidths: _allColumnWidths\n } = metrics;\n var {\n filterBarHeight\n } = theme;\n var _loop2 = function _loop2() {\n var columnIndex = visibleColumns[i];\n var columnX = _allColumnXs.get(columnIndex);\n var columnWidth = _allColumnWidths.get(columnIndex);\n var modelColumn = _this7.getModelColumn(columnIndex);\n if (modelColumn != null) {\n var isFilterable = model.isFilterable(modelColumn);\n if (isFilterable && columnX != null && columnWidth != null && columnWidth > 0) {\n var _x = _gridX + columnX + columnWidth - 24;\n var _y = _gridY2 - (filterBarHeight !== null && filterBarHeight !== void 0 ? filterBarHeight : 0) + 2; // 2 acts as top margin for the button\n var _style = {\n position: 'absolute',\n top: _y,\n left: _x\n };\n var _advancedFilter = advancedFilters.get(modelColumn);\n var isFilterSet = _advancedFilter != null;\n var isFilterVisible = columnIndex === hoverAdvancedFilter || columnIndex === focusedFilterBarColumn || isFilterSet;\n var element = /*#__PURE__*/_jsx(\"div\", {\n className: classNames('advanced-filter-button-container', {\n hidden: !isFilterVisible\n }),\n style: _style,\n children: isFilterVisible && /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: classNames('btn-link-icon advanced-filter-button', {\n 'filter-set': isFilterSet\n }),\n onClick: () => {\n _this7.setState({\n shownAdvancedFilter: columnIndex\n });\n },\n onContextMenu: event => {\n var _this7$grid;\n (_this7$grid = _this7.grid) === null || _this7$grid === void 0 ? void 0 : _this7$grid.handleContextMenu(event);\n },\n onMouseEnter: () => {\n _this7.setState({\n hoverAdvancedFilter: columnIndex\n });\n },\n onMouseLeave: () => {\n _this7.setState({\n hoverAdvancedFilter: null\n });\n },\n children: /*#__PURE__*/_jsxs(\"div\", {\n className: \"fa-layers\",\n children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: dhFilterFilled,\n className: \"filter-solid\"\n }), /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsFilter,\n className: \"filter-light\"\n })]\n })\n })\n }, columnIndex);\n filterBar.push(element);\n }\n }\n };\n for (var i = 0; i < visibleColumns.length; i += 1) {\n _loop2();\n }\n }\n var advancedFilterMenus = [];\n if (metrics) {\n var {\n gridX: _gridX2,\n visibleColumns: _visibleColumns,\n allColumnXs: _allColumnXs2,\n allColumnWidths: _allColumnWidths2,\n columnHeaderHeight\n } = metrics;\n var _loop3 = function _loop3() {\n var columnIndex = _visibleColumns[_i4];\n var columnX = _allColumnXs2.get(columnIndex);\n var columnWidth = _allColumnWidths2.get(columnIndex);\n if (columnX != null && columnWidth != null && columnWidth > 0) {\n var xColumnHeader = _gridX2 + columnX;\n var xFilterBar = _gridX2 + columnX + columnWidth - 20;\n var _style2 = isFilterBarShown ? {\n position: 'absolute',\n top: columnHeaderHeight,\n left: xFilterBar,\n width: 20,\n height: theme.filterBarHeight\n } : {\n position: 'absolute',\n top: 0,\n left: xColumnHeader,\n width: columnWidth,\n height: columnHeaderHeight\n };\n var _modelColumn = _this7.getModelColumn(columnIndex);\n if (_modelColumn != null) {\n var _column3 = model.columns[_modelColumn];\n if (_column3 == null) {\n // Grid metrics is likely out of sync with model\n log.warn(\"Column does not exist at index \".concat(_modelColumn, \" for column array of length \").concat(model.columns.length));\n // eslint-disable-next-line no-continue\n return \"continue\";\n }\n var _advancedFilter2 = advancedFilters.get(_modelColumn);\n var {\n options: advancedFilterOptions\n } = _advancedFilter2 || {};\n var sort = TableUtils.getSortForColumn(model.sort, _column3.name);\n var sortDirection = sort ? sort.direction : null;\n if (!isSortDirection(sortDirection)) {\n throw new Error(\"Invalid sort direction: \".concat(sortDirection));\n }\n var element = /*#__PURE__*/_jsx(\"div\", {\n className: \"advanced-filter-menu-container\",\n style: _style2,\n children: /*#__PURE__*/_jsx(Popper, {\n className: \"advanced-filter-menu-popper\",\n onEntered: _this7.getAdvancedMenuOpenedHandler(columnIndex),\n onExited: () => {\n _this7.handleAdvancedMenuClosed(columnIndex);\n },\n isShown: shownAdvancedFilter === columnIndex,\n interactive: true,\n closeOnBlur: true,\n options: {\n positionFixed: true\n },\n children: _this7.getCachedAdvancedFilterMenuActions(model, _column3, advancedFilterOptions, sortDirection, formatter)\n })\n }, columnIndex);\n advancedFilterMenus.push(element);\n }\n }\n };\n for (var _i4 = 0; _i4 < _visibleColumns.length; _i4 += 1) {\n var _ret = _loop3();\n if (_ret === \"continue\") continue;\n }\n }\n var optionItems = this.getCachedOptionItems(onCreateChart !== undefined && model.isChartBuilderAvailable, model.isCustomColumnsAvailable, model.isFormatColumnsAvailable, model.isOrganizeColumnsAvailable, model.isRollupAvailable, model.isTotalsAvailable || isRollup, model.isSelectDistinctAvailable, model.isExportAvailable, this.toggleFilterBarAction, this.toggleSearchBarAction, this.toggleGotoRowAction, isFilterBarShown, showSearchBar, canDownloadCsv, this.isTableSearchAvailable(), isGotoShown, advancedSettings.size > 0);\n var hiddenColumns = this.getCachedHiddenColumns(metricCalculator, userColumnWidths);\n var openOptionsStack = openOptions.map(option => {\n switch (option.type) {\n case OptionType.CHART_BUILDER:\n return /*#__PURE__*/_jsx(ChartBuilder, {\n model: model,\n onChange: this.handleChartChange,\n onSubmit: this.handleChartCreate\n }, OptionType.CHART_BUILDER);\n case OptionType.VISIBILITY_ORDERING_BUILDER:\n return /*#__PURE__*/_jsx(VisibilityOrderingBuilder, {\n model: model,\n movedColumns: movedColumns,\n hiddenColumns: hiddenColumns,\n columnHeaderGroups: columnHeaderGroups,\n onColumnVisibilityChanged: this.handleColumnVisibilityChanged,\n onReset: this.handleColumnVisibilityReset,\n onMovedColumnsChanged: this.handleMovedColumnsChanged,\n onColumnHeaderGroupChanged: this.handleHeaderGroupsChanged\n }, OptionType.VISIBILITY_ORDERING_BUILDER);\n case OptionType.CONDITIONAL_FORMATTING:\n return /*#__PURE__*/_jsx(ConditionalFormattingMenu, {\n rules: conditionalFormats,\n onChange: this.handleConditionalFormatsChange,\n onCreate: this.handleConditionalFormatCreate,\n onSelect: this.handleConditionalFormatEdit\n });\n case OptionType.CONDITIONAL_FORMATTING_EDIT:\n assertNotNull(model.columns);\n assertNotNull(this.handleConditionalFormatEditorUpdate);\n return /*#__PURE__*/_jsx(ConditionalFormatEditor, {\n dh: model.dh,\n columns: model.columns,\n rule: conditionalFormatPreview,\n onUpdate: this.handleConditionalFormatEditorUpdate,\n onSave: this.handleConditionalFormatEditorSave,\n onCancel: this.handleConditionalFormatEditorCancel\n });\n case OptionType.CUSTOM_COLUMN_BUILDER:\n return /*#__PURE__*/_jsx(CustomColumnBuilder, {\n model: model,\n customColumns: customColumns,\n onSave: this.handleUpdateCustomColumns,\n onCancel: this.handleMenuBack\n }, OptionType.CUSTOM_COLUMN_BUILDER);\n case OptionType.ROLLUP_ROWS:\n return /*#__PURE__*/_jsx(RollupRows, {\n model: model,\n onChange: this.handleRollupChange,\n config: rollupConfig\n }, OptionType.ROLLUP_ROWS);\n case OptionType.AGGREGATIONS:\n return /*#__PURE__*/_jsx(Aggregations, {\n settings: aggregationSettings,\n isRollup: isRollup,\n availablePlacements: isEditableGridModel(model) && model.isEditable ? ['top'] : ['top', 'bottom'],\n onChange: this.handleAggregationsChange,\n onEdit: this.handleAggregationEdit,\n dh: model.dh\n });\n case OptionType.AGGREGATION_EDIT:\n return selectedAggregation && /*#__PURE__*/_jsx(AggregationEdit, {\n aggregation: selectedAggregation,\n columns: model.originalColumns,\n onChange: this.handleAggregationChange\n });\n case OptionType.TABLE_EXPORTER:\n return /*#__PURE__*/_jsx(TableCsvExporter, {\n model: model,\n name: name,\n userColumnWidths: userColumnWidths,\n movedColumns: movedColumns,\n isDownloading: isTableDownloading,\n tableDownloadStatus: tableDownloadStatus,\n tableDownloadProgress: tableDownloadProgress,\n tableDownloadEstimatedTime: tableDownloadEstimatedTime !== null && tableDownloadEstimatedTime !== void 0 ? tableDownloadEstimatedTime : undefined,\n onDownload: this.handleDownloadTable,\n onDownloadStart: this.handleDownloadTableStart,\n onCancel: this.handleCancelDownloadTable,\n selectedRanges: selectedRanges\n }, OptionType.TABLE_EXPORTER);\n case OptionType.SELECT_DISTINCT:\n return /*#__PURE__*/_jsx(SelectDistinctBuilder, {\n model: model,\n selectDistinctColumns: selectDistinctColumns,\n onChange: this.handleSelectDistinctChanged\n });\n case OptionType.ADVANCED_SETTINGS:\n return /*#__PURE__*/_jsx(AdvancedSettingsMenu, {\n items: advancedSettings,\n onChange: onAdvancedSettingsChange\n });\n default:\n throw Error(\"Unexpected option type \".concat(option.type));\n }\n });\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"iris-grid\",\n role: \"presentation\",\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"iris-grid-column\",\n children: [children != null && /*#__PURE__*/_jsx(\"div\", {\n className: \"iris-grid-bar\",\n children: children\n }), /*#__PURE__*/_jsx(CSSTransition, {\n in: isSelectingPartition,\n timeout: ThemeExport.transitionSlowMs,\n classNames: \"iris-grid-bar-horizontal\",\n onEnter: this.handleAnimationStart,\n onEntered: this.handleAnimationEnd,\n onExit: this.handleAnimationStart,\n onExited: this.handleAnimationEnd,\n mountOnEnter: true,\n unmountOnExit: true,\n children: /*#__PURE__*/_jsx(\"div\", {\n className: \"iris-grid-partition-selector-wrapper iris-grid-bar iris-grid-bar-primary\",\n children: isPartitionedGridModel(model) && model.isPartitionRequired && /*#__PURE__*/_jsx(IrisGridPartitionSelector, {\n model: model,\n partitionConfig: partitionConfig,\n onChange: this.handlePartitionChange\n })\n })\n }), /*#__PURE__*/_jsx(CSSTransition, {\n in: showSearchBar,\n timeout: ThemeExport.transitionSlowMs,\n classNames: \"iris-grid-bar-horizontal\",\n onEnter: this.handleAnimationStart,\n onEntered: this.handleAnimationEnd,\n onExit: this.handleAnimationStart,\n onExited: this.handleAnimationEnd,\n mountOnEnter: true,\n unmountOnExit: true,\n children: /*#__PURE__*/_jsx(\"div\", {\n className: \"iris-grid-bar\",\n children: /*#__PURE__*/_jsx(CrossColumnSearch, {\n value: searchValue,\n selectedColumns: selectedSearchColumns,\n invertSelection: invertSearchColumns,\n onChange: this.handleCrossColumnSearch,\n columns: model.columns,\n ref: this.crossColumnRef\n })\n })\n }), /*#__PURE__*/_jsxs(Grid, {\n ref: grid => {\n this.grid = grid;\n },\n isStickyBottom: !isEditableGridModel(model) || !model.isEditable,\n isStuckToBottom: isStuckToBottom,\n isStuckToRight: isStuckToRight,\n metricCalculator: metricCalculator,\n model: model,\n keyHandlers: this.getKeyHandlers(),\n mouseHandlers: this.getMouseHandlers(),\n movedColumns: movedColumns,\n movedRows: movedRows,\n onError: this.handleGridError,\n onViewChanged: this.handleViewChanged,\n onSelectionChanged: this.handleSelectionChanged,\n onMovedColumnsChanged: this.handleMovedColumnsChanged,\n renderer: this.renderer,\n stateOverride: stateOverride,\n theme: theme,\n children: [/*#__PURE__*/_jsx(IrisGridCellOverflowModal, {\n isOpen: showOverflowModal,\n text: overflowText,\n onClose: this.handleOverflowClose\n }), isVisible && /*#__PURE__*/_jsx(IrisGridModelUpdater, {\n model: model,\n top: top,\n bottom: bottom,\n left: left,\n right: right,\n filter: filter,\n formatter: formatter,\n columnAlignmentMap: columnAlignmentMap,\n sorts: sorts,\n reverse: reverse,\n movedColumns: movedColumns,\n customColumns: customColumns,\n hiddenColumns: hiddenColumns,\n alwaysFetchColumns: this.getAlwaysFetchColumns(alwaysFetchColumns, model.columns, movedColumns, model.floatingLeftColumnCount, model.floatingRightColumnCount, (_this$grid33 = this.grid) === null || _this$grid33 === void 0 ? void 0 : (_this$grid33$state$dr = _this$grid33.state.draggingColumn) === null || _this$grid33$state$dr === void 0 ? void 0 : _this$grid33$state$dr.range),\n formatColumns: this.getCachedPreviewFormatColumns(model.dh, model.columns, conditionalFormats, conditionalFormatPreview,\n // Disable the preview format when we press Back on the format edit page\n ((_openOptions = openOptions[openOptions.length - 1]) === null || _openOptions === void 0 ? void 0 : _openOptions.type) === OptionType.CONDITIONAL_FORMATTING_EDIT ? conditionalFormatEditIndex !== null && conditionalFormatEditIndex !== void 0 ? conditionalFormatEditIndex : undefined : undefined),\n rollupConfig: this.getModelRollupConfig(model.originalColumns, rollupConfig, aggregationSettings),\n totalsConfig: this.getModelTotalsConfig(model.columns, rollupConfig, aggregationSettings),\n selectDistinctColumns: selectDistinctColumns,\n pendingRowCount: pendingRowCount,\n pendingDataMap: pendingDataMap,\n frozenColumns: frozenColumns,\n columnHeaderGroups: columnHeaderGroups,\n partitionConfig: partitionConfig,\n showExtraGroupColumn: this.showExtraGroupColumn\n }), !isMenuShown && /*#__PURE__*/_jsx(\"div\", {\n className: \"grid-settings-button\",\n style: {\n height: \"\".concat(singleColumnHeaderHeight, \"px\"),\n width: \"\".concat(singleColumnHeaderHeight, \"px\")\n },\n children: /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n \"data-testid\": \"btn-iris-grid-settings-button-\".concat(name),\n onClick: this.handleMenu,\n icon: /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsMenu,\n transform: \"up-1\"\n }),\n tooltip: \"Table Options\"\n })\n }), focusField, loadingElement, filterBar, columnTooltip, advancedFilterMenus, overflowButtonTooltipProps && this.getOverflowButtonTooltip(overflowButtonTooltipProps), expandCellTooltipProps && this.getExpandCellTooltip(expandCellTooltipProps), hoverTooltipProps && this.getHoverTooltip(hoverTooltipProps)]\n }), /*#__PURE__*/_jsx(GotoRow, {\n ref: this.gotoRowRef,\n model: model,\n isShown: isGotoShown,\n gotoRow: gotoRow,\n gotoRowError: gotoRowError,\n gotoValueError: gotoValueError,\n onGotoRowSubmit: this.handleGotoRowSelectedRowNumberSubmit,\n onGotoRowNumberChanged: this.handleGotoRowSelectedRowNumberChanged,\n onClose: this.handleGotoRowClosed,\n onEntering: this.handleAnimationStart,\n onEntered: this.handleAnimationEnd,\n onExiting: () => {\n this.handleAnimationStart();\n this.focus();\n },\n onExited: this.handleAnimationEnd,\n gotoValueSelectedColumnName: gotoValueSelectedColumnName,\n gotoValue: gotoValue,\n gotoValueFilter: gotoValueSelectedFilter,\n onGotoValueSelectedColumnNameChanged: this.handleGotoValueSelectedColumnNameChanged,\n onGotoValueSelectedFilterChanged: this.handleGotoValueSelectedFilterChanged,\n onGotoValueChanged: this.handleGotoValueChanged,\n onGotoValueSubmit: this.handleGotoValueSubmitted\n }), /*#__PURE__*/_jsx(PendingDataBottomBar, {\n error: pendingSaveError,\n isSaving: pendingSavePromise != null,\n saveTooltip: \"Commit (\".concat(this.commitAction.shortcut.getDisplayText(), \")\"),\n discardTooltip: \"Discard (\".concat(this.discardAction.shortcut.getDisplayText(), \")\"),\n pendingDataErrors: pendingDataErrors,\n pendingDataMap: pendingDataMap,\n onEntering: this.handleAnimationStart,\n onEntered: this.handleAnimationEnd,\n onExiting: this.handleAnimationStart,\n onExited: this.handleAnimationEnd,\n onSave: this.handlePendingCommitClicked,\n onDiscard: this.handlePendingDiscardClicked\n }), /*#__PURE__*/_jsx(ToastBottomBar, {\n children: toastMessage\n }), /*#__PURE__*/_jsx(IrisGridCopyHandler, {\n model: model,\n copyOperation: copyOperation !== null && copyOperation !== void 0 ? copyOperation : undefined,\n onEntering: this.handleAnimationStart,\n onEntered: this.handleAnimationEnd,\n onExiting: this.handleAnimationStart,\n onExited: this.handleAnimationEnd\n }), /*#__PURE__*/_jsx(TableSaver, {\n dh: model.dh,\n ref: tableSaver => {\n this.tableSaver = tableSaver;\n },\n getDownloadWorker: getDownloadWorker,\n onDownloadCompleted: this.handleDownloadCompleted,\n onDownloadCanceled: this.handleDownloadCanceled,\n onDownloadProgressUpdate: this.handleDownloadProgressUpdate,\n isDownloading: tableDownloadStatus === TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING,\n formatter: formatter\n })]\n }), /*#__PURE__*/_jsx(SlideTransition, {\n in: isMenuShown,\n onEntering: this.handleAnimationStart,\n onEntered: this.handleAnimationEnd,\n onExiting: this.handleAnimationStart,\n onExited: this.handleAnimationEnd,\n mountOnEnter: true,\n unmountOnExit: true,\n children: /*#__PURE__*/_jsx(\"div\", {\n className: \"table-sidebar\",\n children: /*#__PURE__*/_jsxs(Stack, {\n children: [/*#__PURE__*/_jsx(Page, {\n title: \"Table Options\",\n onClose: this.handleMenuClose,\n children: /*#__PURE__*/_jsx(Menu, {\n onSelect: i => this.handleMenuSelect(optionItems[i]),\n items: optionItems\n })\n }), openOptionsStack.map((option, i) => /*#__PURE__*/_jsx(Page, {\n title: openOptions[i].title,\n onBack: this.handleMenuBack,\n onClose: this.handleMenuClose,\n children: option\n }, openOptions[i].type))]\n })\n })\n }), /*#__PURE__*/_jsx(ContextActions, {\n actions: this.contextActions\n }), /*#__PURE__*/_jsx(NoPastePermissionModal, {\n isOpen: showNoPastePermissionModal,\n onClose: this.handleCloseNoPastePermissionModal,\n errorMessage: noPastePermissionError\n })]\n });\n }\n}\n_defineProperty(IrisGrid, \"contextType\", IrisGridThemeContext);\n_defineProperty(IrisGrid, \"minDebounce\", 150);\n_defineProperty(IrisGrid, \"maxDebounce\", 500);\n_defineProperty(IrisGrid, \"loadingSpinnerDelay\", 800);\n_defineProperty(IrisGrid, \"defaultProps\", {\n children: null,\n advancedFilters: EMPTY_MAP,\n advancedSettings: EMPTY_MAP,\n alwaysFetchColumns: EMPTY_ARRAY,\n conditionalFormats: EMPTY_ARRAY,\n customColumnFormatMap: EMPTY_MAP,\n columnAlignmentMap: EMPTY_MAP,\n isFilterBarShown: false,\n applyInputFiltersOnInit: false,\n movedColumns: EMPTY_ARRAY,\n movedRows: EMPTY_ARRAY,\n inputFilters: EMPTY_ARRAY,\n customFilters: EMPTY_ARRAY,\n onCreateChart: undefined,\n onColumnSelected: () => undefined,\n onDataSelected: () => undefined,\n onError: () => undefined,\n onStateChange: () => undefined,\n onAdvancedSettingsChange: () => undefined,\n partitions: undefined,\n partitionConfig: undefined,\n quickFilters: EMPTY_MAP,\n selectDistinctColumns: EMPTY_ARRAY,\n sorts: EMPTY_ARRAY,\n reverse: false,\n customColumns: EMPTY_ARRAY,\n aggregationSettings: DEFAULT_AGGREGATION_SETTINGS,\n rollupConfig: undefined,\n userColumnWidths: EMPTY_MAP,\n userRowHeights: EMPTY_MAP,\n onSelectionChanged: () => undefined,\n isSelectingColumn: false,\n isSelectingPartition: false,\n isStuckToBottom: false,\n isStuckToRight: false,\n columnSelectionValidator: null,\n columnAllowedCursor: 'linker',\n columnNotAllowedCursor: 'linker-not-allowed',\n copyCursor: 'copy',\n name: 'table',\n onlyFetchVisibleColumns: true,\n showSearchBar: false,\n searchValue: '',\n selectedSearchColumns: null,\n invertSearchColumns: true,\n onContextMenu: () => EMPTY_ARRAY,\n pendingDataMap: EMPTY_MAP,\n getDownloadWorker: DownloadServiceWorkerUtils.getServiceWorker,\n settings: {\n timeZone: 'America/New_York',\n defaultDateTimeFormat: DateUtils.FULL_DATE_FORMAT,\n showTimeZone: false,\n showTSeparator: true,\n truncateNumbersWithPound: false,\n showEmptyStrings: true,\n showNullStrings: true,\n showExtraGroupColumn: true,\n formatter: EMPTY_ARRAY,\n decimalFormatOptions: PropTypes.shape({\n defaultFormatString: PropTypes.string\n }),\n integerFormatOptions: PropTypes.shape({\n defaultFormatString: PropTypes.string\n })\n },\n canCopy: true,\n canDownloadCsv: true,\n frozenColumns: null,\n theme: null,\n // Do not set a default density prop since we need to know if it overrides the global density setting\n density: undefined,\n canToggleSearch: true,\n mouseHandlers: EMPTY_ARRAY,\n keyHandlers: EMPTY_ARRAY\n});\nexport default IrisGrid;\n//# sourceMappingURL=IrisGrid.js.map"],"names":["_defineProperty","e","r","_toPropertyKey","t","i","_toPrimitive","log","Log","AdvancedFilterCreatorFilterItem","PureComponent","columnType","filterType","TableUtils","getLabelForNumberFilter","getLabelForTextFilter","getLabelForDateFilter","getLabelForBooleanFilter","props","memoizeOne","column","operation","value","timeZone","tableUtils","_value","filterTypes","selectedType","_this$typeDropdown","prevProps","eventTargetValue","onChange","event","onDelete","formatter","showValueInput","typeOptionElements","isValid","_type","label","element","_jsx","_jsxs","Select","typeDropdown","classNames","Button","vsTrash","AdvancedFilterCreatorSelectValueList","values","v","selectedValues","dh","table","filters","invertSelection","itemIndex","selectedIndex","isSelected","offset","items","visibleItemIndex","top","bottom","data","row","displayValue","itemCount","item","isLoading","viewportSize","topRow","bottomRow","SelectValueList","list","FadeTransition","LoadingSpinner","AdvancedFilterCreatorSelectValue","prevState","searchTable","searchText","count","formattedCount","formattedTableSize","prefix","searchTablePromise","error","filter","showSearch","columnName","displayedValuesText","placeholderText","AdvancedFilterCreator","nanoid","_options$filterItems$","_options$filterItems","memoize","React","model","options","filterOperators","filterItems","_ref","columnIndex","assertNotNull","isSortable","index","valuesTable","_valuesTable$columns$","sort","PromiseUtils","_this$focusTrapContai","_this$focusTrapContai2","_this$focusTrapContai3","_this$focusTrapContai4","inputs","FilterOperator","operator","assertFilterOperatorValue","filterIndex","key","addToExisting","ContextActionUtils","onDone","filterItem","direction","onSortChange","onFilterChange","_ref2","operators","_this","sortDirection","valuesTableError","isValuesTableAvailable","isBoolean","isDateType","filterItemElements","_loop","filterOperator","isAndFilter","operatorElement","showAddFilterItem","addFilterItem","FontAwesomeIcon","dhNewCircleLargeFilled","dhSortAmountDown","_Fragment","makeTernaryFormatRule","config","prevRule","styleDBString","getStyleDBString","conditionDBString","getConditionDBString","makeRowFormatColumn","rule","makeColumnFormatColumn","col","FormatterType","NumberCondition","StringCondition","DateCondition","BooleanCondition","CharCondition","FormatStyleType","getLabelForStyleType","option","getBackgroundForStyleConfig","type","customConfig","getColorForStyleConfig","color","bg","getNumberConditionText","start","end","getTextForNumberCondition","getStringConditionText","getTextForStringCondition","getDateConditionText","getTextForDateCondition","getBooleanConditionText","getTextForBooleanCondition","getCharConditionText","getTextForCharCondition","getLabelForNumberCondition","condition","getLabelForStringCondition","getLabelForDateCondition","getLabelForBooleanCondition","getLabelForCharCondition","getDefaultConditionForType","getDefaultValueForType","getConditionConfig","getDefaultConditionConfigForType","getDefaultStyleConfig","getShortLabelForStringCondition","getShortLabelForDateCondition","getShortLabelForBooleanCondition","getShortLabelForCharCondition","getShortLabelForNumberCondition","getShortLabelForConditionType","getFormatColumns","columns","rules","result","rowFormatConfig","columnFormatConfigMap","_ref3","formatterType","name","prevFormatColumn","formatColumn","isDateConditionValid","dateTimeString","rest","tzCode","DateUtils","isSupportedColumn","_ref4","IrisGridBottomBar","animation","children","className","isShown","onClick","onEntering","onEntered","onExiting","onExited","CSSTransition","ThemeExport","HIDE_TIMEOUT","MAX_NUMBER_ROWS_SHOWN","PendingDataBottomBar","isSaving","onSave","onDiscard","discardTooltip","saveTooltip","pendingDataErrors","pendingDataMap","_onExited","isSuccessShown","setIsSuccessShown","useState","wasSuccessShown","setWasSuccessShown","successTimeout","useRef","prevIsSaving","usePrevious","errorMessage","useMemo","useEffect","pendingRowCount","commitIcon","vsPass","vsWarning","asyncGeneratorStep","n","o","a","c","u","_asyncToGenerator","_next","_throw","isCopyRangesOperation","copyOperation","isCopyHeaderOperation","IrisGridCopyHandler","Component","copyState","rowCount","buttonState","ranges","GridRange","text","_this2","copyToClipboard","_this3","columnDepth","movedColumns","modelIndex","GridUtils","copyText","includeHeaders","userColumnWidths","_movedColumns","formatValues","hiddenColumns","IrisGridUtils","modelRanges","subtractRanges","formatValue","CanceledPromiseError","copyButtonText","statusMessageText","isButtonContainerVisible","isFetching","isDone","FilterInputField","debounceMs","debounce","_this$inputField","_this$inputField2","initialValue","isChanged","setGridFocus","defocusInput","_this$inputField3","relatedTarget","backward","onTab","onContextMenu","style","isAdvancedFilterSet","onAdvancedFiltersTriggered","inputField","dhFilterFilled","vsFilter","CopyCellKeyHandler","KeyHandler","irisGrid","grid","mouseX","mouseY","gridPoint","CopyKeyHandler","selectedRanges","ReverseKeyHandler","IrisGridShortcuts","reverse","ClearFilterKeyHandler","ToastBottomBar","setIsShown","timeout","prevChildren","startTimer","useCallback","COLUMN_BUFFER_PAGES","IrisGridModelUpdater","left","right","columnAlignmentMap","sorts","customColumns","alwaysFetchColumns","rollupConfig","totalsConfig","selectDistinctColumns","EMPTY_ARRAY","EMPTY_MAP","frozenColumns","formatColumns","columnHeaderGroups","partitionConfig","showExtraGroupColumn","isTotalsAvailable","isRollupAvailable","useOnChange","isIrisGridTreeTableModel","sortsForModel","isPartitionedGridModel","STATS_LABEL_OVERRIDES","ColumnStatistics","_STATS_LABEL_OVERRIDE","w","numRows","stats","onStatistics","statistics","_column$displayName","loading","showGenerateStatistics","statisticElements","description","formattedValue","statisticElement","rowCountLabel","isExpandableGridModel","formattedRowCount","CopyButton","dhSortSlash","dhFreeze","vsLock","dhRefresh","CrossColumnSearch","searchValue","selectedColumns","filterColumns","filterValue","searchFilter","_this$searchField$cur","update","isConfigureColumnsShown","hasAllColumnsSelected","hasNoColumnsSelected","icon","dhSquareFilled","dhGearFilled","dhCheckSquare","vsCircleLargeFilled","dhWarningCircleFilled","dhRemoveSquareFilled","SearchInput","Tooltip","Popper","Checkbox","ownKeys","_objectSpread","IrisGridPartitionSelector","memoizee","Pending","keysTable","keyTable","baseTable","prevConfig","partitionTables","newPartitionConfig","selectedValue","newPartitions","tCopy","partitionFilters","partition","partitionColumn","newConfig","_","_x","_x2","partitions","previousFilter","previousPartition","previousColumn","partitionFilter","partitionSelectors","Picker","vsChevronRight","vsKey","vsMerge","SelectDistinctBuilder","filteredInputs","val","deepEqual","prevInputs","input","inputIndex","_ref5","disableAddButton","AdvancedSettingsMenu","_onChange","Menu","isOn","AdvancedSettingsType","DEFAULT_CALLBACK","getRuleValue","getRuleTitle","ConditionalFormattingMenu","onCreate","onSelect","handleRuleClick","handleDeleteClick","updatedRules","handleDragHandlerClick","handleDragEnd","DragUtils","sourceIndex","destinationIndex","sourceInput","DragDropContext","Droppable","provided","snapshot","Draggable","vsGripper","numberConditionOptions","stringConditions","dateConditions","booleanConditions","charConditions","isNumberConditionValid","startValue","endValue","getNumberInputs","selectedCondition","handleValueChange","handleStartValueChange","handleEndValueChange","conditionValue","getStringInputs","getDateInputs","getBooleanInputs","getCharInputs","ConditionEditor","selectedColumnType","prevColumnType","setPrevColumnType","setCondition","setValue","setStartValue","setEndValue","conditions","handleConditionChange","conditionInputs","DEFAULT_BACKGROUND","DEFAULT_COLOR_LIGHT","DEFAULT_COLOR_DARK","DEFAULT_DROPDOWN_WIDTH","StyleEditor","_config$customConfig$","_config$customConfig","styleType","setStyleType","background","setBackground","setShown","dropdownWidth","setDropdownWidth","csContainer","handleBackgroundChange","handleMenuClosed","handleToggleClick","updateDropdownWidth","styleOptions","ColorUtils","renderOptions","optionArray","vsCheck","renderMenuElement","DropdownMenu","makeDefaultConfig","ColumnFormatEditor","_columns$find","selectedColumn","setColumn","conditionConfig","setConditionConfig","conditionValid","setConditionValid","selectedStyle","setStyle","handleColumnChange","newColumn","updatedConditionConfig","handleStyleChange","updatedStyleConfig","columnNames","ComboBox","RowFormatEditor","getFormatterTypeIcon","FormatColumnWhereIcon","FormatRowWhereIcon","getFormatterTypeLabel","formatterTypes","ConditionalFormatEditor","_defaultRule$type","originalColumns","onUpdate","onCancel","defaultRule","selectedFormatter","setFormatter","setRule","setIsValid","handleCancel","handleSave","handleFormatterChange","handleRuleChange","ruleConfig","isRuleValid","updatedRule","IrisGridCellOverflowModal","_editorRef$current$ge","_editorRef$current2","isOpen","onClose","isOpened","setIsOpened","height","setHeight","showLineNumbers","setShowLineNumbers","isFormatted","setIsFormatted","canFormat","setCanFormat","editorRef","toggleLineNumbers","formatAsJSON","_editorRef$current","autoSetLineNumbers","_editor$getModel$getL","_editor$getModel","editor","handleToggle","onEditorInitialized","contentHeight","Modal","ModalHeader","vsListOrdered","vsJson","ModalBody","Editor","DEFAULT_FORMAT_STRING","GotoRow","forwardRef","ref","gotoRow","gotoRowError","gotoValueError","onGotoRowSubmit","_onEntered","onGotoRowNumberChanged","gotoValueSelectedColumnName","gotoValue","gotoValueFilter","onGotoValueSelectedColumnNameChanged","onGotoValueSelectedFilterChanged","onGotoValueChanged","onGotoValueSubmit","gotoRowInputRef","gotoValueInputRef","isGotoRowActive","setIsGotoRowActive","isIrisGridTableModelTemplate","gotoRowInputId","handleGotoValueNumberKeyDown","onGotoValueInputChanged","handleGotoValueKeySubmit","normalizedType","useImperativeHandle","_gotoRowInputRef$curr","selectInput","_gotoRowInputRef$curr2","_gotoValueInputRef$cu","renderValueInput","DateTimeInput","FilterType","vsClose","vsArrowUp","vsArrowDown","NoPastePermissionModal","pasteShortcutText","GLOBAL_SHORTCUTS","ModalFooter","VIEWPORT_LOADING_DELAY","UPDATE_DOWNLOAD_THROTTLE","SET_FILTER_DEBOUNCE","SEEK_ROW_DEBOUNCE","SET_CONDITIONAL_FORMAT_DEBOUNCE","DEFAULT_AGGREGATION_SETTINGS","UNFORMATTED_DATE_PATTERN","isEmptyConfig","advancedFilters","aggregationSettings","quickFilters","IrisGrid","_model$layoutHints","_model$layoutHints$hi","_model$columns$0$name","_model$columns$","advancedFilterOptions","isChartBuilderAvailable","isCustomColumnsAvailable","isFormatColumnsAvailable","isOrganizeColumnsAvailable","isSelectDistinctAvailable","isExportAvailable","toggleFilterBarAction","toggleSearchBarAction","toggleGotoRowAction","isFilterBarShown","showSearchBar","canDownloadCsv","canToggleSearch","showGotoRow","hasAdvancedSettings","optionItems","OptionType","dhGraphLineUp","dhEye","vsEdit","vsSplitHorizontal","dhTriangleDownSquare","vsSymbolOperator","vsRuby","vsCloudDownload","vsTools","vsSearch","vsReply","metricCalculator","aggregations","aggregationMap","selected","invert","AggregationUtils","operationMap","_operationMap$name","newOperations","rulesParam","preview","editIndex","_config$columns$lengt","_config$columns","agg","operationOrder","AggregationOperation","theme","hoverSelectColumn","isSelectingColumn","loadingScrimProgress","isMenuShown","customFilters","contextTheme","isEditable","floatingRowCount","density","_theme$rowFooterWidth","baseTheme","createDefaultIrisGridTheme","rowFooterWidth","densityTheme","keyHandlers","b","mouseHandlers","rendererProp","IrisGridRenderer","floatingLeftColumnCount","floatingRightColumnCount","draggingRange","floatingColumns","_i","_i2","columnSet","selectedSearchColumns","invertSearchColumns","throttle","loadingSpinnerShown","conditionalFormatPreview","tableDownloadProgress","tableDownloadEstimatedTime","tableDownloadStatus","TableCsvExporter","overflowButtonTooltipProps","wrapperStyle","popperOptions","expandCellTooltipProps","expandTooltipDisplayValue","isExpandAllAvailable","hoverTooltipProps","hoverDisplayValue","SHORTCUTS","isEditableGridModel","_aggregationSettings","conditionalFormats","customColumnFormatMap","_isFilterBarShown","isSelectingPartition","_model","movedColumnsProp","movedRowsProp","_rollupConfig","_userColumnWidths","userRowHeights","_showSearchBar","_searchValue","_selectedSearchColumns","_invertSearchColumns","_advancedFilters","_quickFilters","canCopy","_dh","_keyHandlers","_mouseHandlers","IrisGridCellOverflowMouseHandler","IrisGridRowTreeMouseHandler","IrisGridTokenMouseHandler","IrisGridColumnSelectMouseHandler","IrisGridColumnTooltipMouseHandler","IrisGridSortMouseHandler","IrisGridFilterMouseHandler","IrisGridContextMenuHandler","IrisGridDataSelectMouseHandler","PendingMouseHandler","IrisGridPartitionedTableMouseHandler","IrisGridCopyCellMouseHandler","movedRows","_metricCalculator","IrisGridMetricCalculator","searchColumns","_searchFilter","Formatter","inputFilters","settings","changedInputFilters","inputFilter","_advancedSettings$get","advancedSettings","replaceExistingFilters","loadingScrimStartTime","loadingScrimFinishTime","now","currentTime","totalTime","state","openOptions","isAggEditType","_this$grid$canvasWrap","_this$grid","_this$grid2","gridMetricState","renderer","rowIndex","rawValue","modelColumn","modelRow","metrics","modelColumns","modelRows","contextDensity","err","replaceExisting","newAdvancedFilters","newQuickFilters","_ref6","quickFilter","_ref7","_ref8","filterMap","_advancedSettings$get2","clearFiltersOnLinkerFilterUpdate","_ref9","filterList","combinedText","modelRange","clearRange","_ref10","_ref11","_ref12","_settings$defaultDeci","_settings$defaultInte","_settings$truncateNum","_settings$showEmptySt","_settings$showNullStr","_settings$showExtraGr","forceUpdate","globalColumnFormats","FormatterUtils","dateTimeFormatterOptions","defaultDecimalFormatOptions","defaultIntegerFormatOptions","truncateNumbersWithPound","showEmptyStrings","showNullStrings","isColumnFormatChanged","isDateFormattingChanged","isDecimalFormattingChanged","isIntegerFormattingChanged","isTruncateNumbersChanged","isShowEmptyStringsChanged","isShowNullStringsChanged","isShowExtraGroupColumnChanged","updatedFormats","_this$globalColumnFor","mergedColumnFormats","applyInputFiltersOnInit","reverseType","inputFiltersWithValues","resolved","_data","newPartition","_data2","partitionColumnSet","_ref13","_ref14","columnData","_value2","loadingText","resetRanges","loadingCancelShown","loadingBlocksGrid","_this$gridWrapper$get","_this$gridWrapper","minScrimTransitionTime","maxScrimTransitionTime","scrimTransitionTime","IrisGridModel","_this$grid3","columnCount","rightVisible","lastLeft","_this$grid4","_this$grid5","metricState","newLeft","columnVisibleIndex","_this$grid6","allFrozenColumns","visibleIndex","newMovedColumns","isExpandableColumnGridModel","modelIndexes","isVisible","_this$grid7","defaultWidth","calculatedWidth","getOrThrow","_model$layoutHints$fr","_model$layoutHints2","_this$grid8","onError","loadingMessage","_this$grid9","entries","columnWidth","_this$grid10","currentSorts","_this$grid11","_this$grid12","isAbs","_this$grid13","focusIndex","_model2","_column","_this$grid14","_model$layoutHints3","_dh$SearchDisplayMode","_dh$SearchDisplayMode2","searchDisplayMode","_this$crossColumnRef","_this$crossColumnRef2","_this$grid15","_this$grid16","_this$grid17","isGotoShown","_this$gotoRowRef$curr","cursorRow","cursorColumn","cellValue","_document","_document$activeEleme","pendingSavePromise","containsGridCellInputField","_this3$grid","ValidationError","newPendingSavePromise","_this4","onColumnSelected","dataMap","onDataSelected","_this5","groupedColumns","isExpandable","isGrouped","_this$grid18","oldSort","newSort","_this$grid19","_this$filterInputRef","focusedFilterBarColumn","_this$filterInputRef2","onCreateChart","_ref15","_this$grid20","selectedFormat","prevCustomColumnFormatMap","columnFormattingRule","alignment","_ref16","newColumnAlignmentMap","_ref17","newOptions","_ref18","isMissingPartitionError","_this$grid21","_this$grid$state","_this$grid22","selectionEndRow","bottomViewport","bottomNonFloating","_this$grid23","onSelectionChanged","onChangeApplied","_this$grid24","tooltip","oldCustomColumns","customColumn","removedColumnNames","newSorts","newSelectDistinctColumns","isReady","_this$grid25","_this$grid26","contentWidth","userWidths","_this$grid27","allColumns","visibleColumns","_ref19","width","_ref20","contentWidths","manualColumns","_i3","_modelIndex","_contentWidth","_rollupConfig$columns","_rollupConfig$columns2","added","removed","isRollup","changes","shouldStartLoading","op","aggregation","_rollupConfig$columns3","_rollupConfig$columns4","_ref21","_rollupConfig$columns5","_rollupConfig$columns6","fileName","frozenTable","tableSubscription","snapshotRanges","includeColumnHeaders","useUnformattedValues","_ref22","newAggregations","inputString","_arguments","_this6","_this6$grid","isBackwards","selectedColumnName","gotoValueSelectedFilter","searchFromRow","isContains","isIgnoreCase","_this6$grid2","columnDataType","startDate","inputValue","_this$tableSaver","isDeletableGridModel","columnAllowedCursor","irisGridState","gridState","onStateChange","_this$gridWrapper2","shownColumnTooltip","gridRect","popperMargin","columnHeaderHeight","allColumnXs","allColumnWidths","columnHeaderMaxDepth","columnX","clamp","rowNumber","rowInt","_this$grid28","_this$grid29","_this$grid30","boundedLeft","boundedWidth","virtualReference","_this$tooltip","_this$grid31","prevColumnName","gotoValueManuallyChanged","_index","_column2","prevColumn","_value3","_rollupConfig$columns7","_rollupConfig$columns8","_this7","_this$grid33","_this$grid33$state$dr","_openOptions","getDownloadWorker","isStuckToBottom","isStuckToRight","onlyFetchVisibleColumns","onAdvancedSettingsChange","hoverAdvancedFilter","shownAdvancedFilter","conditionalFormatEditIndex","isTableDownloading","selectedAggregation","pendingSaveError","toastMessage","showOverflowModal","showNoPastePermissionModal","noPastePermissionError","overflowText","singleColumnHeaderHeight","stateOverride","focusField","gridX","gridY","_theme$filterBarHeigh","_theme$filterBarHeigh2","_this$grid32","x","y","fieldWidth","fieldHeight","_value4","advancedFilter","isBarFiltered","loadingElement","loadingStatus","_gridY","columnTooltip","_this$tooltip2","filterBar","_gridX","_gridY2","_allColumnXs","_allColumnWidths","filterBarHeight","_loop2","isFilterable","_y","_style","_advancedFilter","isFilterSet","isFilterVisible","_this7$grid","advancedFilterMenus","_gridX2","_visibleColumns","_allColumnXs2","_allColumnWidths2","_loop3","_i4","xColumnHeader","xFilterBar","_style2","_modelColumn","_column3","_advancedFilter2","isSortDirection","_ret","openOptionsStack","ChartBuilder","VisibilityOrderingBuilder","CustomColumnBuilder","RollupRows","Aggregations","AggregationEdit","Grid","vsMenu","TableSaver","tableSaver","SlideTransition","Stack","Page","ContextActions","IrisGridThemeContext","DownloadServiceWorkerUtils","PropTypes"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"IrisGrid-DcRnNWMV.js","sources":["../../../iris-grid/dist/AdvancedFilterCreatorFilterItem.js","../../../iris-grid/dist/AdvancedFilterCreatorSelectValueList.js","../../../iris-grid/dist/AdvancedFilterCreatorSelectValue.js","../../../iris-grid/dist/AdvancedFilterCreator.js","../../../iris-grid/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js","../../../iris-grid/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js","../../../iris-grid/dist/IrisGridBottomBar.js","../../../iris-grid/dist/PendingDataBottomBar.js","../../../iris-grid/dist/IrisGridCopyHandler.js","../../../iris-grid/dist/FilterInputField.js","../../../iris-grid/dist/key-handlers/CopyCellKeyHandler.js","../../../iris-grid/dist/key-handlers/CopyKeyHandler.js","../../../iris-grid/dist/key-handlers/ReverseKeyHandler.js","../../../iris-grid/dist/key-handlers/ClearFilterKeyHandler.js","../../../iris-grid/dist/ToastBottomBar.js","../../../iris-grid/dist/IrisGridModelUpdater.js","../../../iris-grid/dist/ColumnStatistics.js","../../../iris-grid/dist/CrossColumnSearch.js","../../../iris-grid/dist/IrisGridPartitionSelector.js","../../../iris-grid/dist/sidebar/SelectDistinctBuilder.js","../../../iris-grid/dist/sidebar/AdvancedSettingsMenu.js","../../../iris-grid/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js","../../../iris-grid/dist/sidebar/conditional-formatting/ConditionEditor.js","../../../iris-grid/dist/sidebar/conditional-formatting/StyleEditor.js","../../../iris-grid/dist/sidebar/conditional-formatting/ColumnFormatEditor.js","../../../iris-grid/dist/sidebar/conditional-formatting/RowFormatEditor.js","../../../iris-grid/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js","../../../iris-grid/dist/IrisGridCellOverflowModal.js","../../../iris-grid/dist/GotoRow.js","../../../iris-grid/dist/NoPastePermissionModal.js","../../../iris-grid/dist/IrisGrid.js"],"sourcesContent":["function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/* eslint react/no-did-update-set-state: \"off\" */\nimport React, { PureComponent } from 'react';\nimport { Button, Select } from '@deephaven/components';\nimport { getLabelForBooleanFilter, getLabelForDateFilter, getLabelForNumberFilter, getLabelForTextFilter } from '@deephaven/filters';\nimport { vsTrash } from '@deephaven/icons';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport classNames from 'classnames';\nimport memoizeOne from 'memoize-one';\nimport \"./AdvancedFilterCreatorFilterItem.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('AdvancedFilterCreatorFilterItem');\nexport class AdvancedFilterCreatorFilterItem extends PureComponent {\n static getLabelForFilter(columnType, filterType) {\n try {\n if (TableUtils.isNumberType(columnType) || TableUtils.isCharType(columnType)) {\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: \".concat(columnType));\n } catch (e) {\n log.warn(e);\n return '';\n }\n }\n constructor(props) {\n super(props);\n _defineProperty(this, \"typeDropdown\", void 0);\n _defineProperty(this, \"getCachedIsValid\", memoizeOne((column, operation, value, timeZone, tableUtils) => {\n try {\n // We don't want to show an error for an empty value\n return !value || tableUtils.makeAdvancedValueFilter(column, operation, value, timeZone) != null;\n } catch (e) {\n return false;\n }\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 var {\n value: _value = '',\n filterTypes,\n selectedType = filterTypes[0]\n } = props;\n this.state = {\n selectedType,\n value: _value\n };\n }\n componentDidMount() {\n var _this$typeDropdown;\n (_this$typeDropdown = this.typeDropdown) === null || _this$typeDropdown === void 0 ? void 0 : _this$typeDropdown.focus();\n }\n componentDidUpdate(prevProps) {\n var {\n value,\n selectedType\n } = this.props;\n if (selectedType !== undefined && prevProps.selectedType !== selectedType) {\n this.setState({\n selectedType\n });\n }\n if (value !== undefined && prevProps.value !== value) {\n this.setState({\n value\n });\n }\n }\n handleTypeChange(eventTargetValue) {\n var selectedType = eventTargetValue;\n log.debug2('typeChange', selectedType);\n this.setState({\n selectedType\n });\n var {\n onChange\n } = this.props;\n var {\n value\n } = 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 handleValueChange(event) {\n log.debug2('valueChange');\n var {\n value\n } = event.target;\n this.setState({\n value\n });\n var {\n onChange\n } = this.props;\n var {\n selectedType\n } = 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 handleDelete() {\n log.debug('delete');\n var {\n onDelete\n } = this.props;\n onDelete();\n }\n render() {\n var {\n column,\n filterTypes,\n formatter,\n tableUtils\n } = this.props;\n var {\n selectedType,\n value\n } = this.state;\n var showValueInput = !TableUtils.isBooleanType(column.type);\n var typeOptionElements = [];\n var isValid = this.getCachedIsValid(column, selectedType, value, formatter.timeZone, tableUtils);\n for (var i = 0; i < filterTypes.length; i += 1) {\n var _type = filterTypes[i];\n var label = AdvancedFilterCreatorFilterItem.getLabelForFilter(column.type, _type);\n var element = /*#__PURE__*/_jsx(\"option\", {\n value: _type,\n children: label\n }, _type);\n typeOptionElements.push(element);\n }\n return /*#__PURE__*/_jsx(\"div\", {\n className: \"advanced-filter-creator-filter-item\",\n children: /*#__PURE__*/_jsxs(\"div\", {\n className: \"form-row\",\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"form-group col\",\n children: /*#__PURE__*/_jsx(Select, {\n className: \"form-control\",\n value: selectedType,\n onChange: this.handleTypeChange,\n ref: typeDropdown => {\n this.typeDropdown = typeDropdown;\n },\n children: typeOptionElements\n })\n }), showValueInput && /*#__PURE__*/_jsx(\"div\", {\n className: \"form-group col\",\n children: /*#__PURE__*/_jsx(\"div\", {\n className: \"input-group\",\n children: /*#__PURE__*/_jsx(\"input\", {\n type: \"text\",\n className: classNames('form-control', {\n error: !isValid\n }),\n placeholder: \"Enter value\",\n value: value,\n onChange: this.handleValueChange\n })\n })\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"form-group col-1 px-0\",\n children: /*#__PURE__*/_jsx(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 })]\n })\n });\n }\n}\nexport default AdvancedFilterCreatorFilterItem;\n//# sourceMappingURL=AdvancedFilterCreatorFilterItem.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/* eslint react/no-did-update-set-state: \"off\" */\nimport React, { PureComponent } from 'react';\nimport { LoadingSpinner, SelectValueList, FadeTransition } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('AdvancedFilterCreatorSelectValueList');\n/**\n * Select values from a long scrollable list.\n * Swaps items in and out for infinite scrolling\n */\nclass AdvancedFilterCreatorSelectValueList extends PureComponent {\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, values) {\n for (var i = 0; i < values.length; i += 1) {\n var v = values[i];\n if (v === value || v != null && v.valueOf != null && value != null && value.valueOf != null && v.valueOf() === value.valueOf()) {\n return i;\n }\n }\n return -1;\n }\n constructor(props) {\n super(props);\n _defineProperty(this, \"dh\", void 0);\n _defineProperty(this, \"list\", void 0);\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 var {\n selectedValues,\n dh\n } = this.props;\n this.dh = dh;\n this.list = null;\n this.state = {\n itemCount: 0,\n items: [],\n offset: 0,\n selectedValues,\n isLoading: true\n };\n }\n componentDidMount() {\n var {\n table\n } = this.props;\n if (table) this.startListening(table);\n }\n componentDidUpdate(prevProps) {\n var {\n filters,\n invertSelection,\n selectedValues,\n table\n } = 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 if (prevProps.invertSelection !== invertSelection) {\n this.setState({\n selectedValues: []\n }, this.handleSelectionUpdate);\n }\n if (prevProps.selectedValues !== selectedValues) {\n this.setState({\n selectedValues\n }, this.handleSelectionUpdate);\n }\n if (prevProps.filters !== filters) {\n table === null || table === void 0 ? void 0 : table.applyFilter(filters);\n this.resetViewport();\n }\n }\n componentWillUnmount() {\n var {\n table\n } = this.props;\n if (table) this.stopListening(table);\n }\n handleSelect(itemIndex, value) {\n var {\n invertSelection\n } = this.props;\n var {\n selectedValues\n } = this.state;\n selectedValues = [...selectedValues];\n var selectedIndex = AdvancedFilterCreatorSelectValueList.indexOf(value, selectedValues);\n if (selectedIndex >= 0) {\n selectedValues.splice(selectedIndex, 1);\n } else {\n selectedValues.push(value);\n }\n var isSelected = selectedIndex < 0;\n if (invertSelection) {\n isSelected = !isSelected;\n }\n var {\n offset\n } = this.state;\n var {\n items\n } = this.state;\n items = [...items];\n var visibleItemIndex = itemIndex - offset;\n if (visibleItemIndex >= 0 && visibleItemIndex < items.length) {\n items[visibleItemIndex].isSelected = isSelected;\n }\n this.setState({\n items,\n selectedValues\n });\n var {\n onChange\n } = this.props;\n onChange(selectedValues, invertSelection);\n }\n handleViewportChange(top, bottom) {\n this.updateViewport(top, bottom);\n }\n handleSelectionUpdate() {\n this.updateItemSelection();\n }\n handleTableUpdate(event) {\n var {\n table,\n formatter\n } = this.props;\n if (!table) return;\n var data = event.detail;\n var {\n offset\n } = data;\n var items = [];\n var column = table.columns[0];\n for (var r = 0; r < data.rows.length; r += 1) {\n var row = data.rows[r];\n var value = row.get(column);\n var displayValue = void 0;\n if (value == null) {\n displayValue = /*#__PURE__*/_jsx(\"i\", {\n className: \"text-muted\",\n children: \"null\"\n });\n } else if (value === '') {\n displayValue = /*#__PURE__*/_jsx(\"i\", {\n className: \"text-muted\",\n children: \"empty\"\n });\n } else {\n displayValue = formatter.getFormattedString(value, column.type, column.name);\n }\n var isSelected = this.isValueSelected(value);\n items.push({\n displayValue,\n value,\n isSelected\n });\n }\n log.debug2('Received table update:', offset, items.length);\n var itemCount = table.size;\n this.setState({\n itemCount,\n items,\n offset,\n isLoading: false\n });\n }\n isValueSelected(value) {\n var {\n invertSelection\n } = this.props;\n var {\n selectedValues\n } = this.state;\n\n // Need to check if any of the valueOf matches, timestamp value that is equal\n var selectedIndex = AdvancedFilterCreatorSelectValueList.indexOf(value, selectedValues);\n return invertSelection ? selectedIndex < 0 : selectedIndex >= 0;\n }\n startListening(table) {\n table.addEventListener(this.dh.Table.EVENT_UPDATED, this.handleTableUpdate);\n }\n stopListening(table) {\n table.removeEventListener(this.dh.Table.EVENT_UPDATED, this.handleTableUpdate);\n }\n resetViewport() {\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 updateItemSelection() {\n var {\n items\n } = this.state;\n items = [...items];\n for (var i = 0; i < items.length; i += 1) {\n var item = items[i];\n var {\n value\n } = item;\n item.isSelected = this.isValueSelected(value);\n }\n this.setState({\n items\n });\n }\n updateViewport(top, bottom) {\n var isLoading = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var {\n table\n } = this.props;\n if (table == null) {\n return;\n }\n if (isLoading) {\n this.setState({\n isLoading: true\n });\n }\n var viewportSize = bottom - top + 1;\n var topRow = Math.max(0, top - viewportSize * 3);\n var bottomRow = Math.max(topRow, bottom + viewportSize * 3);\n log.debug2('Setting viewport', topRow, ',', bottomRow);\n table.setViewport(topRow, bottomRow);\n }\n render() {\n var {\n offset,\n isLoading,\n items,\n itemCount\n } = this.state;\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"select-value-list-wrapper\",\n children: [/*#__PURE__*/_jsx(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 }), /*#__PURE__*/_jsx(FadeTransition, {\n in: isLoading,\n mountOnEnter: true,\n unmountOnExit: true,\n children: /*#__PURE__*/_jsx(\"div\", {\n className: \"loading-list\",\n children: /*#__PURE__*/_jsx(LoadingSpinner, {\n className: \"loading-spinner-large\"\n })\n })\n })]\n });\n }\n}\n_defineProperty(AdvancedFilterCreatorSelectValueList, \"defaultProps\", {\n invertSelection: true,\n selectedValues: [],\n onChange: () => undefined\n});\nexport default AdvancedFilterCreatorSelectValueList;\n//# sourceMappingURL=AdvancedFilterCreatorSelectValueList.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/* eslint react/no-did-update-set-state: \"off\" */\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport { Button, FadeTransition } from '@deephaven/components';\nimport AdvancedFilterCreatorSelectValueList from \"./AdvancedFilterCreatorSelectValueList.js\";\nimport \"./AdvancedFilterCreatorSelectValue.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nclass AdvancedFilterCreatorSelectValue extends PureComponent {\n constructor(props) {\n super(props);\n _defineProperty(this, \"searchTablePromise\", void 0);\n _defineProperty(this, \"tableUtils\", void 0);\n _defineProperty(this, \"updateFilterTimer\", void 0);\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 var {\n dh,\n invertSelection,\n selectedValues\n } = props;\n this.tableUtils = new TableUtils(dh);\n this.state = {\n filters: [],\n invertSelection,\n selectedValues,\n searchText: ''\n };\n }\n componentDidMount() {\n this.initSearchTable();\n }\n componentDidUpdate(prevProps, prevState) {\n var {\n invertSelection,\n selectedValues,\n table\n } = this.props;\n if (prevProps.table !== table) {\n this.initSearchTable();\n }\n if (prevProps.invertSelection !== invertSelection) {\n this.setState({\n invertSelection\n });\n }\n if (prevProps.selectedValues !== selectedValues) {\n this.setState({\n selectedValues\n });\n }\n var {\n table: searchTable,\n searchText\n } = this.state;\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 if (searchText !== prevState.searchText) {\n this.startUpdateFilterTimer();\n }\n }\n componentWillUnmount() {\n var {\n table\n } = this.state;\n if (table != null) {\n table.close();\n }\n this.searchTablePromise = undefined;\n this.stopUpdateFilterTimer();\n }\n getColumnName() {\n var {\n table\n } = this.props;\n if (table != null) {\n return table.columns[0].name;\n }\n return '';\n }\n getDisplayedValuesCount() {\n var {\n invertSelection,\n selectedValues,\n table\n } = this.state;\n if (table == null) {\n return null;\n }\n if (invertSelection) {\n return table.totalSize - selectedValues.length;\n }\n return selectedValues.length;\n }\n getDisplayedValueText() {\n var count = this.getDisplayedValuesCount();\n var {\n table\n } = this.state;\n var {\n formatter\n } = this.props;\n if (count != null && table != null) {\n var formattedCount = formatter.getFormattedString(count, 'long');\n var formattedTableSize = formatter.getFormattedString(table.totalSize, 'long');\n var prefix = '';\n if (count < 1000000) {\n prefix = 'Displaying ';\n }\n return \"\".concat(prefix).concat(formattedCount, \" of \").concat(formattedTableSize);\n }\n return null;\n }\n initSearchTable() {\n var {\n table\n } = this.props;\n if (table == null) {\n return;\n }\n var searchTablePromise = table.copy();\n this.searchTablePromise = searchTablePromise;\n this.searchTablePromise.then(searchTable => {\n if (this.searchTablePromise === searchTablePromise) {\n this.setState({\n table: searchTable\n });\n this.searchTablePromise = undefined;\n } else {\n searchTable.close();\n }\n });\n }\n handleListChange(selectedValues, invertSelection) {\n this.setState({\n selectedValues,\n invertSelection\n });\n var {\n onChange\n } = this.props;\n onChange(selectedValues, invertSelection);\n }\n handleSearchChange(event) {\n var searchText = event.target.value;\n this.setState({\n searchText\n });\n }\n handleSelectAllClick() {\n this.resetSelection(true);\n }\n handleClearAllClick() {\n this.resetSelection(false);\n }\n handleUpdateFilterTimeout() {\n this.updateFilterTimer = undefined;\n this.updateTableFilter();\n }\n resetSelection(invertSelection) {\n var selectedValues = [];\n this.setState({\n invertSelection,\n selectedValues\n });\n var {\n onChange\n } = this.props;\n onChange(selectedValues, invertSelection);\n }\n startUpdateFilterTimer() {\n this.stopUpdateFilterTimer();\n this.updateFilterTimer = setTimeout(this.handleUpdateFilterTimeout, AdvancedFilterCreatorSelectValue.searchDebounceTime);\n }\n stopUpdateFilterTimer() {\n if (this.updateFilterTimer != null) {\n clearTimeout(this.updateFilterTimer);\n this.updateFilterTimer = undefined;\n }\n }\n updateTableFilter() {\n var {\n table,\n searchText\n } = this.state;\n var {\n timeZone\n } = this.props;\n var {\n tableUtils\n } = this;\n var column = table === null || table === void 0 ? void 0 : table.columns[0];\n var filters = [];\n if (column == null) {\n return;\n }\n var error;\n if (searchText.length > 0) {\n var 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, \"~\".concat(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(column, \">=\".concat(searchText), timeZone);\n }\n if (filter != null) {\n filters.push(filter);\n } else {\n error = 'Invalid search text';\n }\n }\n this.setState({\n filters,\n error\n });\n }\n render() {\n var {\n error,\n filters,\n invertSelection,\n selectedValues,\n searchText,\n table\n } = this.state;\n var {\n dh,\n formatter,\n showSearch\n } = this.props;\n var columnName = this.getColumnName();\n var displayedValuesText = this.getDisplayedValueText();\n var placeholderText = columnName ? \"Find \".concat(columnName, \"...\") : '';\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"advanced-filter-creator-select-value\",\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: showSearch ? 'form-group' : '',\n children: [/*#__PURE__*/_jsx(\"label\", {\n htmlFor: \"advanced-filter-creator-select-value-input\",\n children: \"Select Values\"\n }), showSearch && /*#__PURE__*/_jsx(\"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 }), /*#__PURE__*/_jsx(AdvancedFilterCreatorSelectValueList, {\n dh: dh,\n table: table,\n filters: filters,\n invertSelection: invertSelection,\n selectedValues: selectedValues,\n formatter: formatter,\n onChange: this.handleListChange\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"advanced-filter-creator-select-meta-row\",\n children: [/*#__PURE__*/_jsxs(\"div\", {\n children: [/*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n onClick: this.handleSelectAllClick,\n children: \"Select All\"\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n onClick: this.handleClearAllClick,\n children: \"Clear\"\n })]\n }), /*#__PURE__*/_jsx(FadeTransition, {\n in: displayedValuesText != null,\n mountOnEnter: true,\n unmountOnExit: true,\n children: /*#__PURE__*/_jsx(\"div\", {\n className: \"row-count-info\",\n children: displayedValuesText\n })\n })]\n })]\n });\n }\n}\n_defineProperty(AdvancedFilterCreatorSelectValue, \"searchDebounceTime\", 250);\n_defineProperty(AdvancedFilterCreatorSelectValue, \"defaultProps\", {\n invertSelection: true,\n selectedValues: [],\n onChange: () => undefined,\n showSearch: true\n});\nexport default AdvancedFilterCreatorSelectValue;\n//# sourceMappingURL=AdvancedFilterCreatorSelectValue.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/* 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 { Operator as FilterOperator, assertOperatorValue as assertFilterOperatorValue } from '@deephaven/filters';\nimport { dhSortAmountDown, dhNewCircleLargeFilled } from '@deephaven/icons';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport { Button, ContextActionUtils } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport { assertNotNull, PromiseUtils } from '@deephaven/utils';\nimport { nanoid } from 'nanoid';\nimport AdvancedFilterCreatorFilterItem from \"./AdvancedFilterCreatorFilterItem.js\";\nimport AdvancedFilterCreatorSelectValue from \"./AdvancedFilterCreatorSelectValue.js\";\nimport \"./AdvancedFilterCreator.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nvar log = Log.module('AdvancedFilterCreator');\nclass AdvancedFilterCreator extends PureComponent {\n static makeFilterItem() {\n return {\n key: nanoid()\n };\n }\n constructor(props) {\n var _options$filterItems$, _options$filterItems;\n super(props);\n _defineProperty(this, \"focusTrapContainer\", void 0);\n _defineProperty(this, \"debounceTimeout\", void 0);\n _defineProperty(this, \"valuesTablePromise\", void 0);\n _defineProperty(this, \"getFilterTypes\", memoize(columnType => TableUtils.getFilterTypes(columnType)));\n this.handleAddAnd = this.handleAddAnd.bind(this);\n this.handleAddOr = this.handleAddOr.bind(this);\n this.handleChangeFilterOperator = 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 this.focusTrapContainer = /*#__PURE__*/React.createRef();\n var {\n model,\n column,\n options\n } = props;\n var {\n filterOperators,\n invertSelection,\n selectedValues\n } = options;\n\n // can be null or an empty array\n var filterItems = (_options$filterItems$ = (_options$filterItems = options.filterItems) === null || _options$filterItems === void 0 ? void 0 : _options$filterItems.map(_ref => {\n var {\n selectedType,\n value\n } = _ref;\n return {\n selectedType,\n value,\n key: nanoid()\n };\n })) !== null && _options$filterItems$ !== void 0 ? _options$filterItems$ : [];\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 var columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n var isSortable = model.isColumnSortable(columnIndex);\n this.state = {\n // Filter items\n filterItems,\n // And/Or between the filter items\n filterOperators,\n invertSelection,\n selectedValues,\n valuesTableError: null,\n valuesTable: undefined,\n isSortable\n };\n }\n componentDidMount() {\n this.initValuesTable();\n }\n componentWillUnmount() {\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 getFilterChangeHandler(index) {\n return this.handleFilterChange.bind(this, index);\n }\n getFilterDeleteHandler(index) {\n return this.handleFilterDelete.bind(this, index);\n }\n initValuesTable() {\n var {\n model,\n column\n } = this.props;\n if (!model.isValuesTableAvailable) {\n log.debug('No values table for this model, just ignore');\n return;\n }\n this.valuesTablePromise = TableUtils.makeCancelableTablePromise(model.valuesTable(column));\n this.valuesTablePromise.then(valuesTable => {\n var _valuesTable$columns$;\n if ((_valuesTable$columns$ = valuesTable.columns[0].isSortable) !== null && _valuesTable$columns$ !== void 0 ? _valuesTable$columns$ : true) {\n var sort = valuesTable.columns[0].sort().asc();\n valuesTable.applySort([sort]);\n }\n this.setState({\n valuesTable\n });\n }).catch(error => {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n log.error('Unable to open values table', error);\n this.setState({\n valuesTableError: error\n });\n });\n }\n handleFocusTrapEnd() {\n var _this$focusTrapContai, _this$focusTrapContai2;\n ((_this$focusTrapContai = this.focusTrapContainer) === null || _this$focusTrapContai === void 0 ? void 0 : (_this$focusTrapContai2 = _this$focusTrapContai.current) === null || _this$focusTrapContai2 === void 0 ? void 0 : _this$focusTrapContai2.querySelector('button,select,input,textarea')).focus();\n }\n handleFocusTrapStart() {\n var _this$focusTrapContai3, _this$focusTrapContai4;\n var inputs = (_this$focusTrapContai3 = this.focusTrapContainer) === null || _this$focusTrapContai3 === void 0 ? void 0 : (_this$focusTrapContai4 = _this$focusTrapContai3.current) === null || _this$focusTrapContai4 === void 0 ? void 0 : _this$focusTrapContai4.querySelectorAll('button,select,input,textarea');\n if (inputs && inputs.length > 0) {\n var element = inputs[inputs.length - 1];\n element.focus();\n }\n }\n handleAddAnd() {\n var {\n filterItems,\n filterOperators\n } = this.state;\n filterItems = filterItems.concat(AdvancedFilterCreator.makeFilterItem());\n filterOperators = filterOperators.concat(FilterOperator.and);\n this.setState({\n filterItems,\n filterOperators\n });\n }\n handleAddOr() {\n var {\n filterItems,\n filterOperators\n } = this.state;\n filterItems = filterItems.concat(AdvancedFilterCreator.makeFilterItem());\n filterOperators = filterOperators.concat(FilterOperator.or);\n this.setState({\n filterItems,\n filterOperators\n });\n }\n handleChangeFilterOperator(index, operator) {\n var {\n filterOperators\n } = this.state;\n filterOperators = [...filterOperators];\n assertFilterOperatorValue(operator);\n filterOperators[index] = operator;\n this.setState({\n filterOperators\n });\n this.startUpdateTimer();\n }\n handleFilterChange(filterIndex, selectedType, value) {\n var {\n filterItems\n } = this.state;\n filterItems = [...filterItems];\n var {\n key\n } = filterItems[filterIndex];\n filterItems[filterIndex] = {\n key,\n selectedType,\n value\n };\n this.setState({\n filterItems\n });\n this.startUpdateTimer();\n }\n handleFilterDelete(filterIndex) {\n var {\n filterItems,\n filterOperators\n } = this.state;\n filterItems = [...filterItems];\n filterOperators = [...filterOperators];\n if (filterIndex < filterItems.length) {\n filterItems.splice(filterIndex, 1);\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 if (filterItems.length === 0) {\n filterItems.push(AdvancedFilterCreator.makeFilterItem());\n }\n this.setState({\n filterItems,\n filterOperators\n });\n this.startUpdateTimer();\n }\n handleSelectValueChange(selectedValues, invertSelection) {\n this.setState({\n selectedValues,\n invertSelection\n });\n this.startUpdateTimer();\n }\n handleReset() {\n log.debug('Resetting Advanced Filter');\n this.setState({\n filterItems: [AdvancedFilterCreator.makeFilterItem()],\n filterOperators: [],\n selectedValues: [],\n invertSelection: true\n });\n this.startUpdateTimer();\n }\n handleSortDown(event) {\n var addToExisting = ContextActionUtils.isModifierKeyDown(event);\n this.sortTable(TableUtils.sortDirection.descending, addToExisting);\n }\n handleSortUp(event) {\n var addToExisting = ContextActionUtils.isModifierKeyDown(event);\n this.sortTable(TableUtils.sortDirection.ascending, addToExisting);\n }\n handleSubmit(event) {\n log.debug('Submitting Advanced Filter');\n this.stopUpdateTimer();\n this.sendUpdate();\n event.preventDefault();\n }\n handleDone(event) {\n log.debug('Submitting and Closing Advanced Filter');\n this.stopUpdateTimer();\n this.sendUpdate();\n var {\n onDone\n } = this.props;\n onDone();\n event.preventDefault();\n }\n handleUpdateTimeout() {\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() {\n var {\n filterItems\n } = this.state;\n if (filterItems.length === 0) {\n return false;\n }\n var filterItem = filterItems[filterItems.length - 1];\n var {\n selectedType,\n value\n } = filterItem;\n return selectedType != null && selectedType.length > 0 && value != null && value.length > 0;\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) {\n var addToExisting = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var {\n column,\n onSortChange\n } = this.props;\n var {\n isSortable\n } = this.state;\n if (isSortable) {\n onSortChange(column, direction, addToExisting);\n }\n }\n startUpdateTimer() {\n this.stopUpdateTimer();\n this.debounceTimeout = setTimeout(this.handleUpdateTimeout, AdvancedFilterCreator.debounceFilterUpdate);\n }\n stopUpdateTimer() {\n if (this.debounceTimeout !== undefined) {\n clearTimeout(this.debounceTimeout);\n this.debounceTimeout = undefined;\n }\n }\n sendUpdate() {\n var {\n filterItems,\n filterOperators,\n invertSelection,\n selectedValues\n } = this.state;\n var {\n column,\n onFilterChange,\n model,\n tableUtils\n } = this.props;\n var {\n formatter\n } = model;\n var items = filterItems.filter(_ref2 => {\n var {\n selectedType,\n value\n } = _ref2;\n return selectedType != null && value != null && value !== '';\n });\n var operators = filterOperators.filter((operator, i) => operator != null && filterItems[i].selectedType != null && filterItems[i].value != null && filterItems[i].value !== '').slice(0, items.length - 1);\n // slice last operator, user may have set an operator but not a value\n\n var options = {\n filterItems: items,\n filterOperators: operators,\n invertSelection,\n selectedValues\n };\n var filter = tableUtils.makeAdvancedFilter(column, options, formatter.timeZone);\n onFilterChange(column, filter, options);\n }\n render() {\n var _this = this;\n var {\n column,\n model,\n sortDirection,\n formatter,\n tableUtils\n } = this.props;\n var {\n filterItems,\n filterOperators,\n invertSelection,\n selectedValues,\n valuesTable,\n valuesTableError,\n isSortable\n } = this.state;\n var {\n dh,\n isValuesTableAvailable\n } = model;\n var isBoolean = TableUtils.isBooleanType(column.type);\n var isDateType = TableUtils.isDateType(column.type);\n var filterTypes = this.getFilterTypes(column.type);\n var columnType = column.type.substring(column.type.lastIndexOf('.') + 1);\n var filterItemElements = [];\n if (!isBoolean && filterTypes.length) {\n var _loop = function _loop(i) {\n var filterItem = filterItems[i];\n var {\n key,\n selectedType,\n value\n } = filterItem;\n var element = /*#__PURE__*/_jsx(AdvancedFilterCreatorFilterItem, {\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 }, key);\n filterItemElements.push(element);\n if (i < filterOperators.length) {\n var filterOperator = filterOperators[i];\n var isAndFilter = filterOperator === FilterOperator.and;\n var operatorElement = /*#__PURE__*/_jsxs(\"div\", {\n className: \"form-row justify-content-end advanced-filter-creator-filter-operator\",\n children: [/*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: classNames('filter-operator', {\n active: isAndFilter\n }),\n onClick: () => _this.handleChangeFilterOperator(i, FilterOperator.and),\n children: \"AND\"\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: classNames('filter-operator', {\n active: !isAndFilter\n }),\n onClick: () => _this.handleChangeFilterOperator(i, FilterOperator.or),\n children: \"OR\"\n })]\n }, \"filterOperator\".concat(key));\n filterItemElements.push(operatorElement);\n }\n };\n for (var i = 0; i < filterItems.length; i += 1) {\n _loop(i);\n }\n }\n var showAddFilterItem = this.shouldShowAddFilter();\n var addFilterItem = /*#__PURE__*/_jsxs(\"div\", {\n className: classNames('form-row justify-content-end add-filter-item', {\n hidden: !showAddFilterItem\n }),\n children: [/*#__PURE__*/_jsx(\"span\", {\n className: \"text-muted\",\n children: /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: dhNewCircleLargeFilled\n })\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: \"btn-filter-item\",\n onClick: this.handleAddAnd,\n disabled: !showAddFilterItem,\n tooltip: \"Add filter with AND\",\n children: \"AND\"\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: \"btn-filter-item\",\n onClick: this.handleAddOr,\n disabled: !showAddFilterItem,\n tooltip: \"Add filter with OR\",\n children: \"OR\"\n })]\n }, \"addFilterItem\");\n filterItemElements.push(addFilterItem);\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"advanced-filter-creator\",\n role: \"presentation\",\n children: [/*#__PURE__*/_jsx(\"div\", {\n tabIndex: 0,\n onFocus: this.handleFocusTrapStart\n }), /*#__PURE__*/_jsxs(\"form\", {\n onSubmit: this.handleSubmit,\n ref: this.focusTrapContainer,\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"title-bar\",\n children: [/*#__PURE__*/_jsx(\"h6\", {\n className: \"advanced-filter-title\",\n children: \"Advanced Filters\"\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"advanced-filter-menu-buttons\",\n children: [/*#__PURE__*/_jsx(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: isSortable ? \"Sort \".concat(column.name, \" Descending\") : 'Not sortable',\n disabled: !isSortable\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: classNames('sort-operator', {\n active: sortDirection === TableUtils.sortDirection.ascending\n }),\n onClick: this.handleSortUp,\n icon: /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: dhSortAmountDown,\n rotation: 180\n }),\n tooltip: isSortable ? \"Sort \".concat(column.name, \" Ascending\") : 'Not sortable',\n disabled: !isSortable\n })]\n })]\n }), /*#__PURE__*/_jsx(\"hr\", {}), /*#__PURE__*/_jsxs(\"div\", {\n className: \"advanced-filter-column-name\",\n children: [column.name, \"\\xA0\", /*#__PURE__*/_jsxs(\"span\", {\n className: \"column-type\",\n children: [\"(\", columnType, \")\"]\n })]\n }), filterItemElements, isValuesTableAvailable && valuesTableError == null && /*#__PURE__*/_jsxs(_Fragment, {\n children: [!isBoolean && /*#__PURE__*/_jsx(\"hr\", {}), /*#__PURE__*/_jsx(\"div\", {\n className: \"form-group\",\n children: /*#__PURE__*/_jsx(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 })]\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"form-row justify-content-end\",\n children: [/*#__PURE__*/_jsx(Button, {\n kind: \"secondary\",\n className: \"mr-2\",\n onClick: this.handleReset,\n children: \"Reset\"\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"primary\",\n onClick: this.handleDone,\n children: \"Done\"\n })]\n })]\n }), /*#__PURE__*/_jsx(\"div\", {\n tabIndex: 0,\n onFocus: this.handleFocusTrapEnd\n })]\n });\n }\n}\n_defineProperty(AdvancedFilterCreator, \"debounceFilterUpdate\", 250);\n_defineProperty(AdvancedFilterCreator, \"defaultProps\", {\n options: {\n filterItems: null,\n filterOperators: null,\n invertSelection: true,\n selectedValues: []\n },\n sortDirection: null\n});\nexport default AdvancedFilterCreator;\n//# sourceMappingURL=AdvancedFilterCreator.js.map","import { getConditionDBString, getStyleDBString } from \"./ConditionalFormattingUtils.js\"; // Conditional formatting API utils in a separate file\n// to make ConditionalFormattingUtils.ts easier to test.\n// https://github.com/facebook/jest/issues/936#issuecomment-545080082\nexport function makeTernaryFormatRule(config, prevRule) {\n var styleDBString = getStyleDBString(config);\n if (styleDBString === undefined) {\n return undefined;\n }\n var conditionDBString = getConditionDBString(config);\n return \"\".concat(conditionDBString, \" ? \").concat(styleDBString, \" : \").concat(prevRule);\n}\nexport function makeRowFormatColumn(dh, rule) {\n return dh.Column.formatRowColor(rule);\n}\nexport function makeColumnFormatColumn(col, rule) {\n return col.formatColor(rule);\n}\n//# sourceMappingURL=ConditionalFormattingAPIUtils.js.map","import Log from '@deephaven/log';\nimport { DateUtils, TableUtils } from '@deephaven/jsapi-utils';\nimport { makeColumnFormatColumn, makeRowFormatColumn, makeTernaryFormatRule } from \"./ConditionalFormattingAPIUtils.js\";\nvar log = Log.module('ConditionalFormattingUtils');\nexport var FormatterType;\n(function (FormatterType) {\n FormatterType[\"CONDITIONAL\"] = \"conditional\";\n FormatterType[\"ROWS\"] = \"rows\";\n})(FormatterType || (FormatterType = {}));\nexport var NumberCondition;\n(function (NumberCondition) {\n NumberCondition[\"IS_EQUAL\"] = \"is-equal\";\n NumberCondition[\"IS_NOT_EQUAL\"] = \"is-not-equal\";\n NumberCondition[\"IS_BETWEEN\"] = \"is-between\";\n NumberCondition[\"GREATER_THAN\"] = \"greater-than\";\n NumberCondition[\"GREATER_THAN_OR_EQUAL\"] = \"greater-than-or-equal\";\n NumberCondition[\"LESS_THAN\"] = \"less-than\";\n NumberCondition[\"LESS_THAN_OR_EQUAL\"] = \"less-than-or-equal\";\n NumberCondition[\"IS_NULL\"] = \"is-null\";\n NumberCondition[\"IS_NOT_NULL\"] = \"is-not-null\";\n})(NumberCondition || (NumberCondition = {}));\nexport var StringCondition;\n(function (StringCondition) {\n StringCondition[\"IS_EXACTLY\"] = \"is-exactly\";\n StringCondition[\"IS_NOT_EXACTLY\"] = \"is-not-exactly\";\n StringCondition[\"CONTAINS\"] = \"contains\";\n StringCondition[\"DOES_NOT_CONTAIN\"] = \"does-not-contain\";\n StringCondition[\"STARTS_WITH\"] = \"starts-with\";\n StringCondition[\"ENDS_WITH\"] = \"ends-with\";\n StringCondition[\"IS_NULL\"] = \"is-null\";\n StringCondition[\"IS_NOT_NULL\"] = \"is-not-null\";\n})(StringCondition || (StringCondition = {}));\nexport var DateCondition;\n(function (DateCondition) {\n DateCondition[\"IS_EXACTLY\"] = \"is-exactly\";\n DateCondition[\"IS_NOT_EXACTLY\"] = \"is-not-exactly\";\n DateCondition[\"IS_BEFORE\"] = \"is-before\";\n DateCondition[\"IS_BEFORE_OR_EQUAL\"] = \"is-before-or-equal\";\n DateCondition[\"IS_AFTER\"] = \"is-after\";\n DateCondition[\"IS_AFTER_OR_EQUAL\"] = \"is-after-or-equal\";\n DateCondition[\"IS_NULL\"] = \"is-null\";\n DateCondition[\"IS_NOT_NULL\"] = \"is-not-null\";\n})(DateCondition || (DateCondition = {}));\nexport var BooleanCondition;\n(function (BooleanCondition) {\n BooleanCondition[\"IS_TRUE\"] = \"is-true\";\n BooleanCondition[\"IS_FALSE\"] = \"is-false\";\n BooleanCondition[\"IS_NULL\"] = \"is-null\";\n BooleanCondition[\"IS_NOT_NULL\"] = \"is-not-null\";\n})(BooleanCondition || (BooleanCondition = {}));\nexport var CharCondition;\n(function (CharCondition) {\n CharCondition[\"IS_EQUAL\"] = \"is-equal\";\n CharCondition[\"IS_NOT_EQUAL\"] = \"is-not-equal\";\n CharCondition[\"IS_NULL\"] = \"is-null\";\n CharCondition[\"IS_NOT_NULL\"] = \"is-not-null\";\n})(CharCondition || (CharCondition = {}));\nexport var FormatStyleType;\n(function (FormatStyleType) {\n FormatStyleType[\"NO_FORMATTING\"] = \"no-formatting\";\n FormatStyleType[\"POSITIVE\"] = \"positive\";\n FormatStyleType[\"NEGATIVE\"] = \"negative\";\n FormatStyleType[\"WARN\"] = \"warn\";\n FormatStyleType[\"NEUTRAL\"] = \"neutral\";\n FormatStyleType[\"ACCENT_1\"] = \"accent-1\";\n FormatStyleType[\"ACCENT_2\"] = \"accent-2\";\n FormatStyleType[\"CUSTOM\"] = \"custom\";\n})(FormatStyleType || (FormatStyleType = {}));\nexport function getLabelForStyleType(option) {\n switch (option) {\n case FormatStyleType.NO_FORMATTING:\n return 'No formatting';\n case FormatStyleType.POSITIVE:\n return 'Positive';\n case FormatStyleType.NEGATIVE:\n return 'Negative';\n case FormatStyleType.WARN:\n return 'Warn';\n case FormatStyleType.NEUTRAL:\n return 'Neutral';\n case FormatStyleType.ACCENT_1:\n return 'Accent 1';\n case FormatStyleType.ACCENT_2:\n return 'Accent 2';\n case FormatStyleType.CUSTOM:\n return 'Custom...';\n }\n}\nexport function getBackgroundForStyleConfig(config) {\n var {\n type,\n customConfig\n } = config;\n switch (type) {\n case FormatStyleType.NO_FORMATTING:\n return undefined;\n case FormatStyleType.POSITIVE:\n return '#9fde6f';\n case FormatStyleType.NEGATIVE:\n return '#ff6087';\n case FormatStyleType.WARN:\n return '#f67f40';\n case FormatStyleType.NEUTRAL:\n return '#ffd95c';\n case FormatStyleType.ACCENT_1:\n return '#78dce8';\n case FormatStyleType.ACCENT_2:\n return '#ab9bf5';\n case FormatStyleType.CUSTOM:\n return customConfig === null || customConfig === void 0 ? void 0 : customConfig.background;\n default:\n return undefined;\n }\n}\nexport function getColorForStyleConfig(config) {\n var {\n type,\n customConfig\n } = config;\n switch (type) {\n case FormatStyleType.NO_FORMATTING:\n return undefined;\n case FormatStyleType.POSITIVE:\n return '#526a3f';\n case FormatStyleType.NEGATIVE:\n return '#802f44';\n case FormatStyleType.WARN:\n return '#663318';\n case FormatStyleType.NEUTRAL:\n return '#63562b';\n case FormatStyleType.ACCENT_1:\n return '#3f6469';\n case FormatStyleType.ACCENT_2:\n return '#554d72';\n case FormatStyleType.CUSTOM:\n return customConfig === null || customConfig === void 0 ? void 0 : customConfig.color;\n default:\n return undefined;\n }\n}\nexport function getStyleDBString(config) {\n var color = getColorForStyleConfig(config.style);\n var bg = getBackgroundForStyleConfig(config.style);\n if (color === undefined || bg === undefined) {\n return undefined;\n }\n return \"bgfg(`\".concat(bg, \"`, `\").concat(color, \"`)\");\n}\nfunction getNumberConditionText(config) {\n var {\n column,\n value,\n start,\n end\n } = config;\n return getTextForNumberCondition(column.name, config.condition, value, start, end);\n}\nfunction getStringConditionText(config) {\n var {\n column,\n value\n } = config;\n return getTextForStringCondition(column.name, config.condition, value);\n}\nfunction getDateConditionText(config) {\n var {\n column,\n value\n } = config;\n return getTextForDateCondition(column.name, config.condition, value);\n}\nfunction getBooleanConditionText(config) {\n var {\n column\n } = config;\n return getTextForBooleanCondition(column.name, config.condition);\n}\nfunction getCharConditionText(config) {\n var {\n column,\n value\n } = config;\n return getTextForCharCondition(column.name, config.condition, value);\n}\nexport function getConditionDBString(config) {\n var {\n column\n } = config;\n if (TableUtils.isNumberType(column.type)) {\n return getNumberConditionText(config);\n }\n if (TableUtils.isCharType(column.type)) {\n return getCharConditionText(config);\n }\n if (TableUtils.isStringType(column.type)) {\n return getStringConditionText(config);\n }\n if (TableUtils.isDateType(column.type)) {\n return getDateConditionText(config);\n }\n if (TableUtils.isBooleanType(column.type)) {\n return getBooleanConditionText(config);\n }\n throw new Error('Invalid column type');\n}\nexport function getLabelForNumberCondition(condition) {\n switch (condition) {\n case NumberCondition.IS_EQUAL:\n return 'is equal to';\n case NumberCondition.IS_NOT_EQUAL:\n return 'is not equal to';\n case NumberCondition.IS_BETWEEN:\n return 'is between';\n case NumberCondition.GREATER_THAN:\n return 'greater than';\n case NumberCondition.GREATER_THAN_OR_EQUAL:\n return 'greater than or equal to';\n case NumberCondition.LESS_THAN:\n return 'less than';\n case NumberCondition.LESS_THAN_OR_EQUAL:\n return 'less than or equal to';\n case NumberCondition.IS_NULL:\n return 'is null';\n case NumberCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\nexport function getLabelForStringCondition(condition) {\n switch (condition) {\n case StringCondition.IS_EXACTLY:\n return 'is exactly';\n case StringCondition.IS_NOT_EXACTLY:\n return 'is not exactly';\n case StringCondition.CONTAINS:\n return 'contains';\n case StringCondition.DOES_NOT_CONTAIN:\n return 'does not contain';\n case StringCondition.STARTS_WITH:\n return 'starts with';\n case StringCondition.ENDS_WITH:\n return 'ends with';\n case StringCondition.IS_NULL:\n return 'is null';\n case StringCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\nexport function getLabelForDateCondition(condition) {\n switch (condition) {\n case DateCondition.IS_EXACTLY:\n return 'is';\n case DateCondition.IS_NOT_EXACTLY:\n return 'is not';\n case DateCondition.IS_BEFORE:\n return 'is before';\n case DateCondition.IS_BEFORE_OR_EQUAL:\n return 'is before or equal';\n case DateCondition.IS_AFTER:\n return 'is after';\n case DateCondition.IS_AFTER_OR_EQUAL:\n return 'is after or equal';\n case DateCondition.IS_NULL:\n return 'is null';\n case DateCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\nexport function getLabelForBooleanCondition(condition) {\n switch (condition) {\n case BooleanCondition.IS_TRUE:\n return 'is true';\n case BooleanCondition.IS_FALSE:\n return 'is false';\n case BooleanCondition.IS_NULL:\n return 'is null';\n case BooleanCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\nexport function getLabelForCharCondition(condition) {\n switch (condition) {\n case CharCondition.IS_EQUAL:\n return 'is';\n case CharCondition.IS_NOT_EQUAL:\n return 'is not';\n case CharCondition.IS_NULL:\n return 'is null';\n case CharCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\nexport function getDefaultConditionForType(columnType) {\n if (TableUtils.isNumberType(columnType)) {\n return NumberCondition.IS_EQUAL;\n }\n if (TableUtils.isCharType(columnType)) {\n return CharCondition.IS_EQUAL;\n }\n if (TableUtils.isStringType(columnType)) {\n return StringCondition.IS_EXACTLY;\n }\n if (TableUtils.isDateType(columnType)) {\n return DateCondition.IS_EXACTLY;\n }\n if (TableUtils.isBooleanType(columnType)) {\n return BooleanCondition.IS_TRUE;\n }\n throw new Error('Invalid column type');\n}\nexport function getDefaultValueForType(columnType) {\n if (TableUtils.isCharType(columnType)) {\n return '';\n }\n if (TableUtils.isStringType(columnType)) {\n return '';\n }\n return undefined;\n}\nexport function getConditionConfig(config) {\n var {\n condition,\n value,\n start,\n end\n } = config;\n return {\n condition,\n value,\n start,\n end\n };\n}\nexport function getDefaultConditionConfigForType(type) {\n return {\n condition: getDefaultConditionForType(type),\n value: getDefaultValueForType(type),\n start: undefined,\n end: undefined\n };\n}\nexport function getDefaultStyleConfig() {\n return {\n type: FormatStyleType.NO_FORMATTING\n };\n}\nfunction getShortLabelForStringCondition(condition) {\n switch (condition) {\n case StringCondition.IS_EXACTLY:\n return '==';\n case StringCondition.IS_NOT_EXACTLY:\n return '!=';\n case StringCondition.CONTAINS:\n return 'contains';\n case StringCondition.DOES_NOT_CONTAIN:\n return 'does not contain';\n case StringCondition.STARTS_WITH:\n return 'starts with';\n case StringCondition.ENDS_WITH:\n return 'ends with';\n case StringCondition.IS_NULL:\n return 'is null';\n case StringCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\nfunction getShortLabelForDateCondition(condition) {\n switch (condition) {\n case DateCondition.IS_EXACTLY:\n return '==';\n case DateCondition.IS_NOT_EXACTLY:\n return '!=';\n case DateCondition.IS_BEFORE:\n return '<';\n case DateCondition.IS_BEFORE_OR_EQUAL:\n return '<=';\n case DateCondition.IS_AFTER:\n return '>';\n case DateCondition.IS_AFTER_OR_EQUAL:\n return '>=';\n case DateCondition.IS_NULL:\n return 'is null';\n case DateCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\nfunction getShortLabelForBooleanCondition(condition) {\n switch (condition) {\n case BooleanCondition.IS_TRUE:\n return 'is true';\n case BooleanCondition.IS_FALSE:\n return 'is false';\n case BooleanCondition.IS_NULL:\n return 'is null';\n case BooleanCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\nfunction getShortLabelForCharCondition(condition) {\n switch (condition) {\n case CharCondition.IS_EQUAL:\n return '==';\n case CharCondition.IS_NOT_EQUAL:\n return '!=';\n case CharCondition.IS_NULL:\n return 'is null';\n case CharCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\nexport function getShortLabelForNumberCondition(condition) {\n switch (condition) {\n case NumberCondition.IS_EQUAL:\n return '==';\n case NumberCondition.IS_NOT_EQUAL:\n return '!=';\n case NumberCondition.IS_BETWEEN:\n return '==';\n case NumberCondition.GREATER_THAN:\n return '>';\n case NumberCondition.GREATER_THAN_OR_EQUAL:\n return '>=';\n case NumberCondition.LESS_THAN:\n return '<';\n case NumberCondition.LESS_THAN_OR_EQUAL:\n return '<=';\n case NumberCondition.IS_NULL:\n return 'is null';\n case NumberCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\nexport function getTextForNumberCondition(columnName, condition, value, start, end) {\n switch (condition) {\n case NumberCondition.IS_EQUAL:\n return \"\".concat(columnName, \" == \").concat(value);\n case NumberCondition.IS_NOT_EQUAL:\n return \"\".concat(columnName, \" != \").concat(value);\n case NumberCondition.IS_BETWEEN:\n return \"\".concat(columnName, \" > \").concat(start, \" && \").concat(columnName, \" < \").concat(end);\n case NumberCondition.GREATER_THAN:\n return \"\".concat(columnName, \" > \").concat(value);\n case NumberCondition.GREATER_THAN_OR_EQUAL:\n return \"\".concat(columnName, \" >= \").concat(value);\n case NumberCondition.LESS_THAN:\n return \"\".concat(columnName, \" < \").concat(value);\n case NumberCondition.LESS_THAN_OR_EQUAL:\n return \"\".concat(columnName, \" <= \").concat(value);\n case NumberCondition.IS_NULL:\n return \"\".concat(columnName, \" == null\");\n case NumberCondition.IS_NOT_NULL:\n return \"\".concat(columnName, \" != null\");\n }\n}\nexport function getTextForStringCondition(columnName, condition, value) {\n switch (condition) {\n case StringCondition.IS_EXACTLY:\n return \"\".concat(columnName, \" == \\\"\").concat(value, \"\\\"\");\n case StringCondition.IS_NOT_EXACTLY:\n return \"\".concat(columnName, \" != \\\"\").concat(value, \"\\\"\");\n case StringCondition.CONTAINS:\n return \"\".concat(columnName, \" != null && \").concat(columnName, \".contains(\\\"\").concat(value, \"\\\")\");\n case StringCondition.DOES_NOT_CONTAIN:\n return \"\".concat(columnName, \" != null && !\").concat(columnName, \".contains(\\\"\").concat(value, \"\\\")\");\n case StringCondition.STARTS_WITH:\n return \"\".concat(columnName, \" != null && \").concat(columnName, \".startsWith(\\\"\").concat(value, \"\\\")\");\n case StringCondition.ENDS_WITH:\n return \"\".concat(columnName, \" != null && \").concat(columnName, \".endsWith(\\\"\").concat(value, \"\\\")\");\n case StringCondition.IS_NULL:\n return \"\".concat(columnName, \" == null\");\n case StringCondition.IS_NOT_NULL:\n return \"\".concat(columnName, \" != null\");\n }\n}\nexport function getTextForDateCondition(columnName, condition, value) {\n switch (condition) {\n case DateCondition.IS_EXACTLY:\n return \"\".concat(columnName, \" == convertDateTime(\\\"\").concat(value, \"\\\")\");\n case DateCondition.IS_NOT_EXACTLY:\n return \"\".concat(columnName, \" != convertDateTime(`\").concat(value, \"`)\");\n case DateCondition.IS_BEFORE:\n return \"\".concat(columnName, \" < convertDateTime(`\").concat(value, \"`)\");\n case DateCondition.IS_BEFORE_OR_EQUAL:\n return \"\".concat(columnName, \" <= convertDateTime(\\\"\").concat(value, \"\\\")\");\n case DateCondition.IS_AFTER:\n return \"\".concat(columnName, \" > convertDateTime(`\").concat(value, \"`)\");\n case DateCondition.IS_AFTER_OR_EQUAL:\n return \"\".concat(columnName, \" >= convertDateTime(`\").concat(value, \"`)\");\n case DateCondition.IS_NULL:\n return \"\".concat(columnName, \" == null\");\n case DateCondition.IS_NOT_NULL:\n return \"\".concat(columnName, \" != null\");\n }\n}\nexport function getTextForBooleanCondition(columnName, condition) {\n switch (condition) {\n case BooleanCondition.IS_TRUE:\n return \"\".concat(columnName, \" == true\");\n case BooleanCondition.IS_FALSE:\n return \"\".concat(columnName, \" == false\");\n case BooleanCondition.IS_NULL:\n return \"\".concat(columnName, \" == null\");\n case BooleanCondition.IS_NOT_NULL:\n return \"\".concat(columnName, \" != null\");\n }\n}\nexport function getTextForCharCondition(columnName, condition, value) {\n switch (condition) {\n case CharCondition.IS_EQUAL:\n return \"\".concat(columnName, \" == '\").concat(value, \"'\");\n case CharCondition.IS_NOT_EQUAL:\n return \"\".concat(columnName, \" != '\").concat(value, \"'\");\n case CharCondition.IS_NULL:\n return \"isNull(\".concat(columnName, \")\");\n case CharCondition.IS_NOT_NULL:\n return \"!isNull(\".concat(columnName, \")\");\n }\n}\nexport function getShortLabelForConditionType(columnType, condition) {\n if (TableUtils.isNumberType(columnType)) {\n return getShortLabelForNumberCondition(condition);\n }\n if (TableUtils.isCharType(columnType)) {\n return getShortLabelForCharCondition(condition);\n }\n if (TableUtils.isStringType(columnType)) {\n return getShortLabelForStringCondition(condition);\n }\n if (TableUtils.isDateType(columnType)) {\n return getShortLabelForDateCondition(condition);\n }\n if (TableUtils.isBooleanType(columnType)) {\n return getShortLabelForBooleanCondition(condition);\n }\n throw new Error('Invalid column type');\n}\n\n/**\n * Get format columns array for the given columns and formatting rules\n * @param columns Available columns\n * @param rules Formatting rules to build the format columns from\n * @returns Array of format columns\n */\nexport function getFormatColumns(dh, columns, rules) {\n if (rules === undefined) {\n log.debug(\"no rules passed.\");\n return [];\n }\n var result = [];\n // There can be only one row format custom column\n // and multiple column format custom columns (one per column)\n var rowFormatConfig;\n var columnFormatConfigMap = new Map();\n rules.forEach(_ref => {\n var _ref3;\n var {\n config,\n type: formatterType\n } = _ref;\n var {\n column\n } = config;\n // Check both name and type because the type can change\n var col = columns.find(_ref2 => {\n var {\n name,\n type\n } = _ref2;\n return name === column.name && type === column.type;\n });\n if (col === undefined) {\n log.debug(\"Column \".concat(column.name, \":\").concat(column.type, \" not found. Ignoring format rule.\"), config);\n return;\n }\n // Stack ternary format conditions by column\n var [prevRule, prevFormatColumn] = (_ref3 = formatterType === FormatterType.CONDITIONAL ? columnFormatConfigMap.get(col.name) : rowFormatConfig) !== null && _ref3 !== void 0 ? _ref3 : ['null', undefined];\n var rule = makeTernaryFormatRule(config, prevRule);\n if (rule === undefined) {\n log.debug(\"Ignoring format rule.\", config);\n return;\n }\n // Replace existing formatColumn with the new stacked format\n var index = prevFormatColumn === undefined ? -1 : result.indexOf(prevFormatColumn);\n if (index > -1) {\n result.splice(index, 1);\n }\n var formatColumn = formatterType === FormatterType.CONDITIONAL ? makeColumnFormatColumn(col, rule) : makeRowFormatColumn(dh, rule);\n result.push(formatColumn);\n if (formatterType === FormatterType.CONDITIONAL) {\n columnFormatConfigMap.set(col.name, [rule, formatColumn]);\n } else {\n rowFormatConfig = [rule, formatColumn];\n }\n });\n return result;\n}\n\n/**\n * Validate that a given date condition + value pair is valid.\n * @param condition\n * @param value\n */\nexport function isDateConditionValid(dh, condition, value) {\n switch (condition) {\n case DateCondition.IS_NULL:\n case DateCondition.IS_NOT_NULL:\n return true;\n default:\n {\n var [dateTimeString, ...rest] = (value !== null && value !== void 0 ? value : '').split(' ');\n // Reconstitute all tokens after the first ' ' in case the user included garbage data at the end\n // e.g. '2020-01-01 NY blah'\n var tzCode = rest.join(' ');\n try {\n DateUtils.parseDateTimeString(dateTimeString);\n } catch (e) {\n log.debug('Invalid datetime string', dateTimeString);\n return false;\n }\n try {\n dh.i18n.TimeZone.getTimeZone(tzCode);\n } catch (e) {\n log.debug('Invalid timezone string', tzCode);\n return false;\n }\n return true;\n }\n }\n}\nexport function isSupportedColumn(_ref4) {\n var {\n type\n } = _ref4;\n return TableUtils.isNumberType(type) || TableUtils.isCharType(type) || TableUtils.isStringType(type) || TableUtils.isDateType(type) || TableUtils.isBooleanType(type);\n}\n//# sourceMappingURL=ConditionalFormattingUtils.js.map","import React from 'react';\nimport classNames from 'classnames';\nimport { CSSTransition } from 'react-transition-group';\nimport { ThemeExport } from '@deephaven/components';\nimport \"./IrisGridBottomBar.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function IrisGridBottomBar(_ref) {\n var {\n animation = 'iris-grid-bottom-bar-slide-up',\n children,\n className,\n isShown,\n onClick,\n onEntering,\n onEntered,\n onExiting,\n onExited\n } = _ref;\n return /*#__PURE__*/_jsx(CSSTransition, {\n in: isShown,\n timeout: ThemeExport.transitionMs,\n classNames: animation,\n onEntering: onEntering,\n onEntered: onEntered,\n onExiting: onExiting,\n onExited: onExited,\n mountOnEnter: true,\n unmountOnExit: true,\n children: /*#__PURE__*/_jsx(\"div\", {\n className: classNames('iris-grid-bottom-bar', className),\n role: \"presentation\",\n onClick: onClick,\n onKeyPress: onClick,\n children: children\n })\n });\n}\nexport default IrisGridBottomBar;\n//# sourceMappingURL=IrisGridBottomBar.js.map","import React, { useEffect, useMemo, useRef, useState } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsPass, vsWarning } from '@deephaven/icons';\nimport { Button, LoadingSpinner } from '@deephaven/components';\nimport { usePrevious } from '@deephaven/react-hooks';\nimport IrisGridBottomBar from \"./IrisGridBottomBar.js\";\nimport \"./PendingDataBottomBar.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar HIDE_TIMEOUT = 3000;\nvar MAX_NUMBER_ROWS_SHOWN = 5;\nexport function PendingDataBottomBar(_ref) {\n var {\n isSaving = false,\n onSave,\n onDiscard,\n discardTooltip,\n saveTooltip,\n error,\n pendingDataErrors,\n pendingDataMap,\n onEntering,\n onEntered,\n onExiting,\n onExited: _onExited\n } = _ref;\n var [isSuccessShown, setIsSuccessShown] = useState(false);\n var [wasSuccessShown, setWasSuccessShown] = useState(false);\n var successTimeout = useRef();\n var prevIsSaving = usePrevious(isSaving);\n var errorMessage = useMemo(() => {\n if (pendingDataErrors.size === 0) {\n return error;\n }\n if (pendingDataErrors.size <= MAX_NUMBER_ROWS_SHOWN) {\n return \"Key can't be empty (on pending row\".concat(pendingDataErrors.size > 1 ? 's' : '', \" \").concat(Array.from(pendingDataErrors.keys()).join(', ').trim(), \")\");\n }\n return \"Key can't be empty (on \".concat(pendingDataErrors.size, \" rows)\");\n }, [error, pendingDataErrors]);\n useEffect(function showSuccessMessage() {\n if (prevIsSaving != null && prevIsSaving && !isSaving && errorMessage == null) {\n setIsSuccessShown(true);\n setWasSuccessShown(true);\n successTimeout.current = setTimeout(() => {\n setIsSuccessShown(false);\n }, HIDE_TIMEOUT);\n }\n }, [errorMessage, isSaving, prevIsSaving]);\n useEffect(function hideSuccessMessage() {\n if (successTimeout.current && pendingDataMap.size > 0) {\n // A change just occurred while the success message was still being shown, just hide the success message\n clearTimeout(successTimeout.current);\n setIsSuccessShown(false);\n setWasSuccessShown(false);\n }\n }, [pendingDataMap]);\n useEffect(function cleanupTimeout() {\n return () => successTimeout.current ? clearTimeout(successTimeout.current) : undefined;\n }, []);\n var pendingRowCount = pendingDataMap.size;\n var commitIcon;\n if (isSaving) {\n commitIcon = /*#__PURE__*/_jsx(LoadingSpinner, {\n className: \"loading-spinner-vertical-align\"\n });\n } else if (wasSuccessShown) {\n commitIcon = vsPass;\n }\n return /*#__PURE__*/_jsxs(IrisGridBottomBar, {\n className: \"pending-data-bottom-bar\",\n isShown: pendingRowCount > 0 || isSuccessShown || errorMessage != null,\n onEntering: onEntering,\n onEntered: onEntered,\n onExiting: onExiting,\n onExited: () => {\n setWasSuccessShown(false);\n if (_onExited) {\n _onExited();\n }\n },\n children: [errorMessage != null && errorMessage !== '' && /*#__PURE__*/_jsxs(\"div\", {\n className: \"error-message\",\n children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsWarning\n }), /*#__PURE__*/_jsx(\"span\", {\n children: \"\".concat(errorMessage)\n })]\n }), (errorMessage == null || errorMessage === '') && /*#__PURE__*/_jsx(\"div\", {\n className: \"status-message\",\n children: pendingRowCount > 0 && /*#__PURE__*/_jsx(\"span\", {\n children: \"\".concat(pendingRowCount, \" row\").concat(pendingRowCount > 1 ? 's' : '', \" pending\")\n })\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"buttons-container\",\n children: [!isSaving && !wasSuccessShown && /*#__PURE__*/_jsx(Button, {\n kind: \"secondary\",\n onClick: onDiscard,\n tooltip: discardTooltip,\n children: \"Discard\"\n }), /*#__PURE__*/_jsxs(Button, {\n kind: wasSuccessShown ? 'success' : 'primary',\n onClick: onSave,\n icon: commitIcon,\n disabled: isSaving || wasSuccessShown || errorMessage != null,\n tooltip: saveTooltip,\n children: [isSaving && \"Committing...\", !isSaving && wasSuccessShown && \"Success\", !isSaving && !wasSuccessShown && \"Commit\"]\n })]\n })]\n });\n}\nexport default PendingDataBottomBar;\n//# sourceMappingURL=PendingDataBottomBar.js.map","function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport { Button, FadeTransition, LoadingSpinner } from '@deephaven/components';\nimport { GridRange, GridUtils } from '@deephaven/grid';\nimport { CanceledPromiseError, copyToClipboard, PromiseUtils } from '@deephaven/utils';\nimport Log from '@deephaven/log';\nimport IrisGridUtils from \"./IrisGridUtils.js\";\nimport IrisGridBottomBar from \"./IrisGridBottomBar.js\";\nimport \"./IrisGridCopyHandler.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('IrisGridCopyHandler');\nfunction isCopyRangesOperation(copyOperation) {\n return copyOperation.ranges != null;\n}\nfunction isCopyHeaderOperation(copyOperation) {\n return copyOperation.columnIndex != null;\n}\n/**\n * Component for handling copying of data from the Iris Grid.\n * - Prompts if necessary (large amount of rows copied)\n * - Tries to async copy, falls back to showing a \"Click to Copy\" button if that fails\n */\nclass IrisGridCopyHandler extends Component {\n /**\n * Different states for the current copy operation\n */\n\n static getStatusMessageText(copyState, rowCount) {\n switch (copyState) {\n case IrisGridCopyHandler.COPY_STATES.CONFIRMATION_REQUIRED:\n return \"Are you sure you want to copy \".concat(rowCount.toLocaleString(), \" rows to your clipboard?\");\n case IrisGridCopyHandler.COPY_STATES.CLICK_REQUIRED:\n return \"Fetched \".concat(rowCount.toLocaleString(), \" rows!\");\n case IrisGridCopyHandler.COPY_STATES.FETCH_ERROR:\n return 'Unable to copy data.';\n case IrisGridCopyHandler.COPY_STATES.FETCH_RANGES_IN_PROGRESS:\n return \"Fetching \".concat(rowCount.toLocaleString(), \" rows for clipboard...\");\n case IrisGridCopyHandler.COPY_STATES.FETCH_HEADER_IN_PROGRESS:\n return 'Fetching header for clipboard...';\n case IrisGridCopyHandler.COPY_STATES.DONE:\n return 'Copied to Clipboard!';\n default:\n return '';\n }\n }\n static getCopyButtonText(buttonState) {\n switch (buttonState) {\n case IrisGridCopyHandler.BUTTON_STATES.FETCH_IN_PROGRESS:\n return 'Fetching';\n case IrisGridCopyHandler.BUTTON_STATES.CLICK_TO_COPY:\n return 'Click to Copy';\n case IrisGridCopyHandler.BUTTON_STATES.RETRY:\n return 'Retry';\n default:\n return 'Copy';\n }\n }\n constructor(props) {\n super(props);\n _defineProperty(this, \"textData\", void 0);\n _defineProperty(this, \"hideTimer\", void 0);\n _defineProperty(this, \"fetchPromise\", void 0);\n this.handleBackgroundClick = this.handleBackgroundClick.bind(this);\n this.handleCancelClick = this.handleCancelClick.bind(this);\n this.handleCopyClick = this.handleCopyClick.bind(this);\n this.handleHideTimeout = this.handleHideTimeout.bind(this);\n this.state = {\n error: undefined,\n copyState: IrisGridCopyHandler.COPY_STATES.IDLE,\n buttonState: IrisGridCopyHandler.BUTTON_STATES.COPY,\n isShown: false,\n rowCount: 0\n };\n }\n componentDidMount() {\n var {\n copyOperation\n } = this.props;\n if (copyOperation != null) {\n this.startCopy();\n }\n }\n componentDidUpdate(prevProps) {\n var {\n copyOperation\n } = this.props;\n if (prevProps.copyOperation !== copyOperation) {\n this.startCopy();\n }\n }\n componentWillUnmount() {\n this.stopCopy();\n }\n startCopy() {\n log.debug2('startCopy');\n this.stopCopy();\n var {\n copyOperation\n } = this.props;\n if (copyOperation == null) {\n log.debug2('No copy operation set, cancelling out');\n this.setState({\n isShown: false\n });\n return;\n }\n var {\n error\n } = copyOperation;\n if (error != null) {\n log.debug('Showing copy error', error);\n this.setState({\n isShown: true,\n copyState: IrisGridCopyHandler.COPY_STATES.DONE,\n error\n });\n this.startHideTimer();\n return;\n }\n this.setState({\n isShown: true,\n error: undefined\n });\n if (isCopyRangesOperation(copyOperation)) {\n var {\n ranges\n } = copyOperation;\n var rowCount = GridRange.rowCount(ranges);\n this.setState({\n rowCount\n });\n if (rowCount > IrisGridCopyHandler.NO_PROMPT_THRESHOLD) {\n this.setState({\n buttonState: IrisGridCopyHandler.BUTTON_STATES.COPY,\n copyState: IrisGridCopyHandler.COPY_STATES.CONFIRMATION_REQUIRED\n });\n return;\n }\n }\n this.startFetch();\n }\n stopCopy() {\n this.textData = undefined;\n this.stopFetch();\n this.stopHideTimer();\n }\n handleBackgroundClick() {\n log.debug2('handleBackgroundClick');\n var {\n copyState\n } = this.state;\n if (copyState === IrisGridCopyHandler.COPY_STATES.DONE) {\n this.setState({\n isShown: false\n });\n }\n }\n handleCancelClick() {\n log.debug2('handleCancelClick');\n this.stopFetch();\n this.setState({\n isShown: false\n });\n }\n handleCopyClick() {\n var _this = this;\n return _asyncToGenerator(function* () {\n log.debug2('handleCopyClick');\n if (_this.textData != null) {\n try {\n yield _this.copyText(_this.textData);\n _this.showCopyDone();\n } catch (e) {\n log.error('Error copying text', e);\n _this.setState({\n error: 'Unable to copy. Verify your browser permissions.'\n });\n }\n } else {\n _this.startFetch();\n }\n })();\n }\n handleHideTimeout() {\n log.debug2('handleHideTimeout');\n this.stopHideTimer();\n this.setState({\n isShown: false\n });\n }\n copyText(text) {\n var _this2 = this;\n return _asyncToGenerator(function* () {\n log.debug2('copyText', text);\n _this2.textData = text;\n yield copyToClipboard(text);\n })();\n }\n showCopyDone() {\n this.setState({\n copyState: IrisGridCopyHandler.COPY_STATES.DONE\n });\n this.startHideTimer();\n }\n startFetch() {\n var _this3 = this;\n return _asyncToGenerator(function* () {\n _this3.stopFetch();\n var {\n model,\n copyOperation\n } = _this3.props;\n if (isCopyHeaderOperation(copyOperation)) {\n var {\n columnIndex,\n columnDepth,\n movedColumns\n } = copyOperation;\n log.debug('startFetch copyHeader', columnIndex, columnDepth);\n _this3.setState({\n buttonState: IrisGridCopyHandler.BUTTON_STATES.FETCH_IN_PROGRESS,\n copyState: IrisGridCopyHandler.COPY_STATES.FETCH_HEADER_IN_PROGRESS\n });\n var modelIndex = GridUtils.getModelIndex(columnIndex, movedColumns);\n var copyText = model.textForColumnHeader(modelIndex, columnDepth);\n if (copyText === undefined) {\n _this3.fetchPromise = undefined;\n _this3.setState({\n error: 'Invalid column header selected.',\n copyState: IrisGridCopyHandler.COPY_STATES.DONE\n });\n return;\n }\n _this3.fetchPromise = PromiseUtils.makeCancelable(copyText);\n } else {\n var {\n ranges,\n includeHeaders,\n userColumnWidths,\n movedColumns: _movedColumns,\n formatValues\n } = copyOperation;\n log.debug('startFetch copyRanges', ranges);\n _this3.setState({\n buttonState: IrisGridCopyHandler.BUTTON_STATES.FETCH_IN_PROGRESS,\n copyState: IrisGridCopyHandler.COPY_STATES.FETCH_RANGES_IN_PROGRESS\n });\n var hiddenColumns = IrisGridUtils.getHiddenColumns(userColumnWidths);\n var modelRanges = GridUtils.getModelRanges(ranges, _movedColumns);\n if (hiddenColumns.length > 0) {\n var subtractRanges = hiddenColumns.map(GridRange.makeColumn);\n modelRanges = GridRange.subtractRangesFromRanges(modelRanges, subtractRanges);\n }\n\n // Remove the hidden columns from the snapshot\n var formatValue = formatValues != null && formatValues ? (value, column) => model.displayString(value, column.type, column.name) : value => \"\".concat(value);\n _this3.fetchPromise = PromiseUtils.makeCancelable(model.textSnapshot(modelRanges, includeHeaders, formatValue));\n }\n try {\n var text = yield _this3.fetchPromise;\n _this3.fetchPromise = undefined;\n try {\n yield _this3.copyText(text);\n _this3.showCopyDone();\n } catch (e) {\n log.error('Error copying text', e);\n _this3.setState({\n buttonState: IrisGridCopyHandler.BUTTON_STATES.CLICK_TO_COPY,\n copyState: IrisGridCopyHandler.COPY_STATES.CLICK_REQUIRED\n });\n }\n } catch (e) {\n if (e instanceof CanceledPromiseError) {\n log.debug('User cancelled copy.');\n } else {\n log.error('Error fetching contents', e);\n _this3.fetchPromise = undefined;\n _this3.setState({\n buttonState: IrisGridCopyHandler.BUTTON_STATES.RETRY,\n copyState: IrisGridCopyHandler.COPY_STATES.FETCH_ERROR\n });\n }\n }\n })();\n }\n stopFetch() {\n if (this.fetchPromise) {\n log.debug2('stopFetch');\n this.fetchPromise.cancel();\n this.fetchPromise = undefined;\n }\n }\n startHideTimer() {\n this.stopHideTimer();\n this.hideTimer = setTimeout(this.handleHideTimeout, IrisGridCopyHandler.HIDE_TIMEOUT);\n }\n stopHideTimer() {\n if (this.hideTimer != null) {\n clearTimeout(this.hideTimer);\n this.hideTimer = undefined;\n }\n }\n render() {\n var {\n onEntering,\n onEntered,\n onExiting,\n onExited\n } = this.props;\n var {\n buttonState,\n copyState,\n isShown,\n rowCount,\n error\n } = this.state;\n var animation = copyState === IrisGridCopyHandler.COPY_STATES.DONE ? 'fade' : 'copy-slide-up';\n var copyButtonText = IrisGridCopyHandler.getCopyButtonText(buttonState);\n var statusMessageText = error !== null && error !== void 0 ? error : IrisGridCopyHandler.getStatusMessageText(copyState, rowCount);\n var isButtonContainerVisible = copyState !== IrisGridCopyHandler.COPY_STATES.DONE;\n var isFetching = buttonState === IrisGridCopyHandler.BUTTON_STATES.FETCH_IN_PROGRESS;\n var isDone = copyState === IrisGridCopyHandler.COPY_STATES.DONE;\n return /*#__PURE__*/_jsxs(IrisGridBottomBar, {\n animation: animation,\n isShown: isShown,\n className: classNames('iris-grid-copy-handler', {\n 'copy-done': isDone\n }),\n onClick: this.handleBackgroundClick,\n onEntering: onEntering,\n onEntered: onEntered,\n onExiting: onExiting,\n onExited: onExited,\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"status-message\",\n children: /*#__PURE__*/_jsx(\"span\", {\n children: statusMessageText\n })\n }), /*#__PURE__*/_jsx(FadeTransition, {\n in: isButtonContainerVisible,\n mountOnEnter: true,\n unmountOnExit: true,\n children: /*#__PURE__*/_jsxs(\"div\", {\n className: \"buttons-container\",\n children: [/*#__PURE__*/_jsx(\"button\", {\n type: \"button\",\n className: \"btn btn-outline-secondary btn-cancel\",\n onClick: this.handleCancelClick,\n children: \"Cancel\"\n }), /*#__PURE__*/_jsxs(Button, {\n kind: isFetching ? 'tertiary' : 'primary',\n className: classNames('btn-copy', {\n 'btn-spinner': isFetching\n }),\n onClick: this.handleCopyClick,\n disabled: isFetching,\n children: [isFetching && /*#__PURE__*/_jsx(LoadingSpinner, {\n className: \"loading-spinner-vertical-align\"\n }), copyButtonText]\n })]\n })\n })]\n });\n }\n}\n_defineProperty(IrisGridCopyHandler, \"NO_PROMPT_THRESHOLD\", 10000);\n_defineProperty(IrisGridCopyHandler, \"HIDE_TIMEOUT\", 3000);\n_defineProperty(IrisGridCopyHandler, \"COPY_STATES\", {\n // No copy operation in progress\n IDLE: 'IDLE',\n // Large copy operation, confirmation required\n CONFIRMATION_REQUIRED: 'CONFIRMATION_REQUIRED',\n // Fetch is currently in progress for copy ranges operation\n FETCH_RANGES_IN_PROGRESS: 'FETCH_RANGES_IN_PROGRESS',\n // Fetch is currently in progress for copy header operation\n FETCH_HEADER_IN_PROGRESS: 'FETCH_HEADER_IN_PROGRESS',\n // There was an error fetching the data\n FETCH_ERROR: 'FETCH_ERROR',\n // Click is required to copy\n CLICK_REQUIRED: 'CLICK_REQUIRED',\n // The copy operation is completed and successfully copied to the clipboard\n DONE: 'DONE'\n});\n_defineProperty(IrisGridCopyHandler, \"BUTTON_STATES\", {\n COPY: 'COPY',\n FETCH_IN_PROGRESS: 'FETCH_IN_PROGRESS',\n CLICK_TO_COPY: 'CLICK_TO_COPY',\n RETRY: 'RETRY'\n});\n_defineProperty(IrisGridCopyHandler, \"defaultProps\", {\n copyOperation: null,\n onEntering: () => undefined,\n onEntered: () => undefined,\n onExiting: () => undefined,\n onExited: () => undefined\n});\nexport default IrisGridCopyHandler;\n//# sourceMappingURL=IrisGridCopyHandler.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport debounce from 'lodash.debounce';\nimport { vsFilter, dhFilterFilled } from '@deephaven/icons';\nimport \"./FilterInputField.css\";\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Button } from '@deephaven/components';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n/**\n * An input field showing a input field and button.\n * Debounces changes.\n */\nclass FilterInputField extends PureComponent {\n constructor(props) {\n super(props);\n _defineProperty(this, \"inputField\", void 0);\n _defineProperty(this, \"initialValue\", void 0);\n _defineProperty(this, \"debouncedSendUpdate\", void 0);\n var {\n debounceMs\n } = props;\n this.debouncedSendUpdate = debounce(this.sendUpdate.bind(this), debounceMs);\n this.handleCancel = this.handleCancel.bind(this);\n this.handleChange = this.handleChange.bind(this);\n this.handleCommit = this.handleCommit.bind(this);\n this.handleFocus = this.handleFocus.bind(this);\n this.handleBlur = this.handleBlur.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.handleContextMenu = this.handleContextMenu.bind(this);\n this.inputField = null;\n var {\n value\n } = props;\n this.initialValue = value;\n this.state = {\n isChanged: false,\n value\n };\n }\n componentDidMount() {\n var _this$inputField;\n (_this$inputField = this.inputField) === null || _this$inputField === void 0 ? void 0 : _this$inputField.focus();\n }\n componentDidUpdate(prevProps) {\n var {\n debounceMs\n } = this.props;\n if (prevProps.debounceMs !== debounceMs) {\n this.debouncedSendUpdate.flush();\n this.debouncedSendUpdate = debounce(this.sendUpdate.bind(this), debounceMs);\n }\n }\n componentWillUnmount() {\n this.debouncedSendUpdate.cancel();\n }\n // clear filters needs to be able to reset the value externally\n // and due to the way this component handles its own debouncing\n // this was easier than moving state up.\n setValue(value) {\n this.initialValue = value;\n this.setState({\n value\n });\n }\n focus() {\n var _this$inputField2;\n (_this$inputField2 = this.inputField) === null || _this$inputField2 === void 0 ? void 0 : _this$inputField2.focus();\n }\n handleChange(event) {\n var {\n value\n } = event.target;\n this.setState({\n value,\n isChanged: true\n });\n this.debouncedSendUpdate(value);\n }\n handleCancel() {\n this.debouncedSendUpdate.cancel();\n var {\n initialValue\n } = this;\n var {\n isChanged\n } = this.state;\n if (isChanged) {\n this.sendUpdate(initialValue);\n }\n var {\n onDone\n } = this.props;\n onDone();\n }\n handleCommit() {\n var setGridFocus = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n var defocusInput = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n this.debouncedSendUpdate.flush();\n var {\n onDone\n } = this.props;\n onDone(setGridFocus, defocusInput);\n }\n handleFocus() {\n var _this$inputField3;\n (_this$inputField3 = this.inputField) === null || _this$inputField3 === void 0 ? void 0 : _this$inputField3.select();\n }\n handleBlur(event) {\n var {\n relatedTarget\n } = event;\n // handleCommit results in a call that steals focus\n if (relatedTarget != null && relatedTarget.classList.contains('context-menu-container')) {\n // input blurred by calling context-menu\n // don't set grid focus, but do null column focus\n this.handleCommit(false, true);\n } else if (relatedTarget != null && relatedTarget.classList.contains('advanced-filter-button')) {\n // blurred by clicking an advanced filter button\n // don't set grid focus, maintain focusedFilterBarColumn state\n this.handleCommit(false, false);\n } else {\n // clear both, blurred elsewhere\n this.handleCommit(true, true);\n }\n }\n handleTab() {\n var backward = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n this.debouncedSendUpdate.flush();\n var {\n onTab\n } = this.props;\n onTab(backward);\n }\n handleKeyDown(event) {\n switch (event.key) {\n case 'Escape':\n event.stopPropagation();\n event.preventDefault();\n this.handleCancel();\n break;\n case 'Enter':\n event.stopPropagation();\n event.preventDefault();\n this.handleCommit();\n break;\n case 'Tab':\n event.stopPropagation();\n event.preventDefault();\n this.handleTab(event.shiftKey);\n break;\n default:\n break;\n }\n }\n handleContextMenu(event) {\n var {\n onContextMenu\n } = this.props;\n onContextMenu(event);\n }\n sendUpdate(value) {\n var {\n onChange\n } = this.props;\n onChange(value);\n }\n render() {\n var {\n className,\n style,\n isAdvancedFilterSet,\n onAdvancedFiltersTriggered\n } = this.props;\n var {\n value\n } = this.state;\n return /*#__PURE__*/_jsxs(\"div\", {\n style: style,\n className: \"iris-grid-input-autosized-wrapper\",\n \"data-value\": value // used by css based autosizer\n ,\n children: [/*#__PURE__*/_jsx(\"input\", {\n ref: inputField => {\n this.inputField = inputField;\n },\n className: classNames('iris-grid-input-field', className),\n type: \"text\",\n value: value,\n onBlur: this.handleBlur,\n onFocus: this.handleFocus,\n onChange: this.handleChange,\n onKeyDown: this.handleKeyDown,\n onContextMenu: this.handleContextMenu,\n autoComplete: \"off\",\n autoCorrect: \"off\",\n autoCapitalize: \"off\",\n spellCheck: \"false\"\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"advanced-filter-button-container\",\n children: /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: classNames('btn-link-icon advanced-filter-button', {\n 'filter-set': isAdvancedFilterSet\n }),\n onClick: onAdvancedFiltersTriggered,\n onContextMenu: this.handleContextMenu,\n children: /*#__PURE__*/_jsxs(\"div\", {\n className: \"fa-layers \",\n children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: dhFilterFilled,\n className: \"filter-solid\"\n }), /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsFilter,\n className: \"filter-light\"\n })]\n })\n })\n })]\n });\n }\n}\n_defineProperty(FilterInputField, \"defaultProps\", {\n style: {},\n className: '',\n value: '',\n isAdvancedFilterSet: false,\n onAdvancedFiltersTriggered: () => undefined,\n onChange: () => undefined,\n onDone: () => undefined,\n onTab: () => undefined,\n onContextMenu: () => undefined,\n debounceMs: 150\n});\nexport default FilterInputField;\n//# sourceMappingURL=FilterInputField.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport { KeyHandler } from '@deephaven/grid';\nimport { ContextActionUtils } from '@deephaven/components';\nclass CopyCellKeyHandler extends KeyHandler {\n constructor(irisGrid) {\n super();\n _defineProperty(this, \"irisGrid\", void 0);\n this.irisGrid = irisGrid;\n this.cursor = null;\n }\n onDown(event, grid) {\n if (event.altKey && !ContextActionUtils.isModifierKeyDown(event) && !event.shiftKey) {\n var {\n mouseX,\n mouseY\n } = grid.state;\n if (mouseX == null || mouseY == null) {\n return false;\n }\n var gridPoint = grid.getGridPointFromXY(mouseX, mouseY);\n if (gridPoint.column != null && gridPoint.row != null) {\n this.cursor = this.irisGrid.props.copyCursor;\n return true;\n }\n }\n return false;\n }\n onUp(event, grid) {\n if (this.cursor === this.irisGrid.props.copyCursor) {\n this.cursor = null;\n return true;\n }\n return false;\n }\n}\nexport default CopyCellKeyHandler;\n//# sourceMappingURL=CopyCellKeyHandler.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/* eslint class-methods-use-this: \"off\" */\n\nimport { ContextActionUtils } from '@deephaven/components';\nimport { KeyHandler } from '@deephaven/grid';\nimport IrisGridUtils from \"../IrisGridUtils.js\";\nclass CopyKeyHandler extends KeyHandler {\n constructor(irisGrid) {\n super();\n _defineProperty(this, \"irisGrid\", void 0);\n this.irisGrid = irisGrid;\n }\n onDown(event) {\n var {\n selectedRanges\n } = this.irisGrid.state;\n if (event.key === 'c' && ContextActionUtils.isModifierKeyDown(event)) {\n if (IrisGridUtils.isValidSnapshotRanges(selectedRanges)) {\n this.irisGrid.copyRanges(selectedRanges);\n } else {\n this.irisGrid.copyRanges(selectedRanges, false, false, 'Invalid copy ranges');\n }\n return true;\n }\n return false;\n }\n}\nexport default CopyKeyHandler;\n//# sourceMappingURL=CopyKeyHandler.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport { KeyHandler } from '@deephaven/grid';\nimport IrisGridShortcuts from \"../IrisGridShortcuts.js\";\nclass ReverseKeyHandler extends KeyHandler {\n constructor(irisGrid) {\n super();\n _defineProperty(this, \"irisGrid\", void 0);\n this.irisGrid = irisGrid;\n }\n onDown(event) {\n if (IrisGridShortcuts.TABLE.REVERSE.matchesEvent(event)) {\n if (!this.irisGrid.isReversible()) {\n return false;\n }\n var {\n reverse\n } = this.irisGrid.state;\n this.irisGrid.reverse(!reverse);\n return true;\n }\n return false;\n }\n}\nexport default ReverseKeyHandler;\n//# sourceMappingURL=ReverseKeyHandler.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport { KeyHandler } from '@deephaven/grid';\nimport IrisGridShortcuts from \"../IrisGridShortcuts.js\";\nclass ClearFilterKeyHandler extends KeyHandler {\n constructor(irisGrid) {\n super();\n _defineProperty(this, \"irisGrid\", void 0);\n this.irisGrid = irisGrid;\n }\n onDown(event) {\n if (IrisGridShortcuts.TABLE.CLEAR_FILTERS.matchesEvent(event)) {\n this.irisGrid.clearAllFilters();\n return true;\n }\n return false;\n }\n}\nexport default ClearFilterKeyHandler;\n//# sourceMappingURL=ClearFilterKeyHandler.js.map","import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { usePrevious } from '@deephaven/react-hooks';\nimport IrisGridBottomBar from \"./IrisGridBottomBar.js\";\nimport \"./PendingDataBottomBar.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nvar HIDE_TIMEOUT = 3000;\nexport function ToastBottomBar(_ref) {\n var {\n children = null,\n onEntering,\n onEntered,\n onExiting,\n onExited\n } = _ref;\n var [isShown, setIsShown] = useState(false);\n var timeout = useRef();\n var prevChildren = usePrevious(children);\n var startTimer = useCallback(() => {\n setIsShown(true);\n if (timeout.current) {\n clearTimeout(timeout.current);\n }\n timeout.current = setTimeout(() => {\n setIsShown(false);\n }, HIDE_TIMEOUT);\n }, [setIsShown, timeout]);\n useEffect(() => {\n if (prevChildren !== children && children != null) {\n startTimer();\n }\n }, [children, prevChildren, setIsShown, startTimer]);\n useEffect(() => () => timeout.current ? clearTimeout(timeout.current) : undefined, []);\n return /*#__PURE__*/_jsx(IrisGridBottomBar, {\n className: \"toast-bottom-bar\",\n isShown: isShown,\n onEntering: onEntering,\n onEntered: onEntered,\n onExiting: onExiting,\n onExited: onExited,\n children: children\n });\n}\nexport default ToastBottomBar;\n//# sourceMappingURL=ToastBottomBar.js.map","/* eslint-disable react/require-default-props */\n/* eslint-disable no-param-reassign */\nimport { useEffect, useMemo } from 'react';\nimport { EMPTY_ARRAY, EMPTY_MAP } from '@deephaven/utils';\nimport { useOnChange } from '@deephaven/react-hooks';\nimport IrisGridUtils from \"./IrisGridUtils.js\";\nimport { isPartitionedGridModel } from \"./PartitionedGridModel.js\";\nimport { isIrisGridTreeTableModel } from \"./IrisGridTreeTableModel.js\";\nvar COLUMN_BUFFER_PAGES = 1;\n/**\n * React component to keep IrisGridModel in sync\n */\nfunction IrisGridModelUpdater(_ref) {\n var {\n model,\n top,\n bottom,\n left,\n right,\n filter,\n formatter,\n columnAlignmentMap,\n reverse = false,\n sorts,\n customColumns,\n movedColumns,\n hiddenColumns,\n alwaysFetchColumns,\n rollupConfig = null,\n totalsConfig = null,\n selectDistinctColumns = EMPTY_ARRAY,\n pendingRowCount = 0,\n pendingDataMap = EMPTY_MAP,\n frozenColumns,\n formatColumns,\n columnHeaderGroups,\n partitionConfig,\n showExtraGroupColumn\n } = _ref;\n var {\n isTotalsAvailable,\n isRollupAvailable\n } = model;\n // Check for showExtraGroupColumn before memoizing columns, since updating it will change the columns\n useOnChange(() => {\n if (isIrisGridTreeTableModel(model) && showExtraGroupColumn != null) {\n model.showExtraGroupColumn = showExtraGroupColumn;\n }\n }, [model, showExtraGroupColumn]);\n var columns = useMemo(() => IrisGridUtils.getModelViewportColumns(model.columns, left, right, movedColumns, hiddenColumns, alwaysFetchColumns, COLUMN_BUFFER_PAGES), [model.columns, left, right, movedColumns, hiddenColumns, alwaysFetchColumns]);\n useOnChange(function updateFilter() {\n model.filter = filter;\n }, [model, filter]);\n useOnChange(function updateSorts() {\n var sortsForModel = [...sorts];\n if (reverse) {\n sortsForModel.push(model.dh.Table.reverse());\n }\n model.sort = sortsForModel;\n }, [model, sorts, reverse]);\n useOnChange(function updateFormatter() {\n model.formatter = formatter;\n }, [model, formatter]);\n useOnChange(function updateColumnAlignmentMap() {\n model.columnAlignmentMap = columnAlignmentMap;\n }, [model, columnAlignmentMap]);\n useOnChange(function updateCustomColumns() {\n if (model.isCustomColumnsAvailable) {\n model.customColumns = customColumns;\n }\n }, [model, customColumns]);\n useOnChange(function updateFormatColumns() {\n if (model.isFormatColumnsAvailable) {\n model.formatColumns = formatColumns;\n }\n }, [model, formatColumns]);\n useOnChange(function updateViewport() {\n model.setViewport(top, bottom, columns);\n }, [model, top, bottom, columns]);\n useOnChange(function updateRollupCOnfig() {\n if (isRollupAvailable) {\n model.rollupConfig = rollupConfig;\n }\n }, [model, isRollupAvailable, rollupConfig]);\n useOnChange(function updateSelectDistinctColumns() {\n if (model.isSelectDistinctAvailable) {\n model.selectDistinctColumns = selectDistinctColumns;\n }\n }, [model, selectDistinctColumns]);\n useOnChange(function updateTotalsConfig() {\n if (isTotalsAvailable) {\n model.totalsConfig = totalsConfig;\n }\n }, [model, isTotalsAvailable, totalsConfig]);\n useOnChange(function updateColumnHeaderGroups() {\n model.columnHeaderGroups = columnHeaderGroups;\n }, [model, columnHeaderGroups]);\n useOnChange(function updatePartitionConfig() {\n if (partitionConfig && isPartitionedGridModel(model)) {\n model.partitionConfig = partitionConfig;\n }\n }, [model, partitionConfig]);\n // These setters are wrapped in useEffect instead of useOnChange because they emit an event\n // that potentially causes side effects, violating the rule that render should be a pure function.\n useEffect(function updateFrozenColumns() {\n if (frozenColumns) {\n model.updateFrozenColumns(frozenColumns);\n }\n }, [model, frozenColumns]);\n useEffect(function updatePendingRowCount() {\n model.pendingRowCount = pendingRowCount;\n }, [model, pendingRowCount]);\n useEffect(function updatePendingDataMap() {\n model.pendingDataMap = pendingDataMap;\n }, [model, pendingDataMap]);\n return null;\n}\nIrisGridModelUpdater.displayName = 'IrisGridModelUpdater';\nexport default IrisGridModelUpdater;\n//# sourceMappingURL=IrisGridModelUpdater.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Button, CopyButton, LoadingSpinner } from '@deephaven/components';\nimport { dhFreeze, dhRefresh, dhSortSlash, vsLock } from '@deephaven/icons';\nimport Log from '@deephaven/log';\nimport { PromiseUtils } from '@deephaven/utils';\nimport { isExpandableGridModel } from '@deephaven/grid';\nimport \"./ColumnStatistics.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nvar log = Log.module('ColumnStatistics');\nvar STATS_LABEL_OVERRIDES = {\n SIZE: 'Number of Rows'\n};\nclass ColumnStatistics extends Component {\n /** Automatically generate the statistics when the row count is below this threshold */\n\n static getStatsLabel(operation) {\n var _STATS_LABEL_OVERRIDE;\n return (_STATS_LABEL_OVERRIDE = STATS_LABEL_OVERRIDES[operation]) !== null && _STATS_LABEL_OVERRIDE !== void 0 ? _STATS_LABEL_OVERRIDE : operation.split(' ').map(w => w[0].toUpperCase() + w.substr(1).toLowerCase()).join(' ');\n }\n constructor(props) {\n super(props);\n _defineProperty(this, \"cancelablePromise\", void 0);\n this.handleError = this.handleError.bind(this);\n this.handleGenerateStatistics = this.handleGenerateStatistics.bind(this);\n this.handleStatistics = this.handleStatistics.bind(this);\n this.cancelablePromise = null;\n this.state = {\n error: null,\n loading: false,\n statistics: null,\n numRows: 0\n };\n }\n componentDidMount() {\n this.maybeGenerateStatistics();\n }\n componentWillUnmount() {\n if (this.cancelablePromise) {\n this.cancelablePromise.cancel();\n }\n }\n maybeGenerateStatistics() {\n var {\n column,\n model\n } = this.props;\n var numRows = model.rowCount - model.pendingRowCount - model.floatingBottomRowCount - model.floatingTopRowCount;\n this.setState({\n numRows\n });\n if (!model.isColumnStatisticsAvailable || column.isProxy === true) {\n this.setState({\n loading: false\n });\n } else if (numRows < ColumnStatistics.AUTO_GENERATE_LIMIT) {\n this.handleGenerateStatistics();\n }\n }\n handleGenerateStatistics() {\n this.setState({\n loading: true\n });\n var {\n column,\n model\n } = this.props;\n this.cancelablePromise = PromiseUtils.makeCancelable(model.columnStatistics(column));\n this.cancelablePromise.then(this.handleStatistics).catch(this.handleError);\n }\n handleStatistics(stats) {\n log.debug('Received statistics', stats);\n var {\n model,\n onStatistics\n } = this.props;\n var statistics = [];\n stats.statisticsMap.forEach((value, operation) => {\n statistics.push({\n operation: ColumnStatistics.getStatsLabel(operation),\n value,\n type: stats.getType(operation)\n });\n });\n stats.uniqueValues.forEach((value, operation) => {\n statistics.push({\n operation,\n className: 'column-statistics-unique-value',\n value,\n type: 'long'\n });\n });\n this.setState({\n loading: false,\n statistics,\n numRows: model.rowCount - model.pendingRowCount - model.floatingBottomRowCount - model.floatingTopRowCount\n });\n onStatistics();\n }\n handleError(error) {\n if (error != null && PromiseUtils.isCanceled(error)) {\n log.debug('Called handleError on a cancelled promise result');\n return;\n }\n log.error('Error generating statistics', error);\n this.setState({\n error,\n loading: false,\n statistics: null\n });\n }\n render() {\n var _column$displayName;\n var {\n column,\n model\n } = this.props;\n var {\n error,\n loading,\n statistics,\n numRows\n } = this.state;\n var showGenerateStatistics = !loading && error == null && statistics == null && model.isColumnStatisticsAvailable;\n var statisticElements = [];\n var columnType = column.type.substring(column.type.lastIndexOf('.') + 1);\n var description = column.description === null ? null : column.description;\n if (statistics != null) {\n for (var i = 0; i < statistics.length; i += 1) {\n var {\n operation,\n className,\n value,\n type\n } = statistics[i];\n var formattedValue = !type ? model.displayString(value, column.type, column.name) : model.displayString(value, type);\n var statisticElement = /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: classNames('column-statistic-operation', className),\n children: operation\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"column-statistic-value\",\n children: formattedValue\n })]\n }, operation);\n statisticElements.push(statisticElement);\n }\n }\n var rowCountLabel = isExpandableGridModel(model) && model.hasExpandableRows ? 'Expanded Rows' : 'Number of Rows';\n var formattedRowCount = model.displayString(numRows, 'long');\n var columnIndex = model.getColumnIndexByName(column.name);\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"column-statistics\",\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"column-statistics-title\",\n children: [(_column$displayName = column.displayName) !== null && _column$displayName !== void 0 ? _column$displayName : column.name, /*#__PURE__*/_jsxs(\"span\", {\n className: \"column-statistics-type\",\n children: [\"\\xA0(\", columnType, \")\"]\n }), /*#__PURE__*/_jsx(CopyButton, {\n className: \"column-statistics-copy\",\n tooltip: \"Copy column name\",\n copy: column.name\n })]\n }), description != null && /*#__PURE__*/_jsx(\"div\", {\n className: \"column-statistics-description\",\n children: description\n }), columnIndex != null && !model.isColumnSortable(columnIndex) && /*#__PURE__*/_jsxs(\"div\", {\n className: \"column-statistics-status\",\n children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: dhSortSlash,\n className: \"mr-1\"\n }), \"Not sortable\"]\n }), columnIndex != null && !model.isColumnMovable(columnIndex) && /*#__PURE__*/_jsxs(\"div\", {\n className: \"column-statistics-status\",\n children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: model.isColumnFrozen(columnIndex) ? dhFreeze : vsLock,\n className: \"mr-1\"\n }), model.isColumnFrozen(columnIndex) ? 'Frozen' : 'Not movable']\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"column-statistics-grid\",\n children: [statistics == null && /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"column-statistic-operation\",\n children: rowCountLabel\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"column-statistic-value\",\n children: formattedRowCount\n })]\n }), statisticElements]\n }), showGenerateStatistics && /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: \"px-0\",\n onClick: this.handleGenerateStatistics,\n children: \"Generate Stats\"\n }), error != null && /*#__PURE__*/_jsx(\"div\", {\n className: \"error-message\",\n children: \"\".concat(error)\n }), statistics && !loading && /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: \"px-0\",\n onClick: this.handleGenerateStatistics,\n icon: dhRefresh,\n children: \"Refresh\"\n }), loading && /*#__PURE__*/_jsxs(\"div\", {\n className: \"column-statistics-loading\",\n children: [/*#__PURE__*/_jsx(LoadingSpinner, {\n className: \"loading-spinner-vertical-align\"\n }), \"Calculating Stats...\"]\n })]\n });\n }\n}\n_defineProperty(ColumnStatistics, \"AUTO_GENERATE_LIMIT\", 100000);\nexport default ColumnStatistics;\n//# sourceMappingURL=ColumnStatistics.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport React, { PureComponent } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Checkbox, Popper, SearchInput, Tooltip } from '@deephaven/components';\nimport { dhGearFilled, dhCheckSquare, dhSquareFilled, dhRemoveSquareFilled, dhWarningCircleFilled, vsCircleLargeFilled } from '@deephaven/icons';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport \"./CrossColumnSearch.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nclass CrossColumnSearch extends PureComponent {\n static createSearchFilter(dh, searchValue, selectedColumns, columns, invertSelection) {\n var filterColumns = invertSelection ? columns.filter(column => !selectedColumns.includes(column.name)).map(column => column.name) : selectedColumns;\n if (searchValue && filterColumns.length > 0) {\n var filterValue = dh.FilterValue.ofString(searchValue);\n var searchFilter = filterColumns.length === columns.length ? dh.FilterCondition.search(filterValue) : dh.FilterCondition.search(filterValue, columns.filter(column => filterColumns.includes(column.name)).map(column => column.filter()));\n return searchFilter;\n }\n return undefined;\n }\n constructor(props) {\n super(props);\n _defineProperty(this, \"searchField\", void 0);\n this.handleSearchValueChange = this.handleSearchValueChange.bind(this);\n this.toggleColumn = this.toggleColumn.bind(this);\n this.selectAll = this.selectAll.bind(this);\n this.clear = this.clear.bind(this);\n this.selectNumbers = this.selectNumbers.bind(this);\n this.searchField = /*#__PURE__*/React.createRef();\n this.state = {\n isConfigureColumnsShown: false\n };\n }\n focus() {\n var _this$searchField$cur;\n (_this$searchField$cur = this.searchField.current) === null || _this$searchField$cur === void 0 ? void 0 : _this$searchField$cur.focus();\n }\n handleSearchValueChange(event) {\n var {\n onChange,\n selectedColumns,\n invertSelection\n } = this.props;\n onChange(event.target.value, selectedColumns, invertSelection);\n }\n sendColumnChange(selectedColumns, invertSelection) {\n var {\n onChange,\n value\n } = this.props;\n onChange(value, selectedColumns, invertSelection);\n }\n setInvertSelection(invertSelection) {\n var {\n onChange,\n value\n } = this.props;\n onChange(value, [], invertSelection);\n }\n toggleColumn(name) {\n var {\n selectedColumns,\n invertSelection\n } = this.props;\n if (selectedColumns.includes(name)) {\n this.sendColumnChange(selectedColumns.filter(c => c !== name), invertSelection);\n } else {\n var update = selectedColumns.slice();\n update.push(name);\n this.sendColumnChange(update, invertSelection);\n }\n }\n selectAll() {\n this.setInvertSelection(true);\n }\n clear() {\n this.setInvertSelection(false);\n }\n selectNumbers() {\n var {\n columns\n } = this.props;\n this.sendColumnChange(columns.filter(c => TableUtils.isNumberType(c.type)).map(column => column.name), false);\n }\n render() {\n var {\n value,\n selectedColumns,\n invertSelection,\n columns\n } = this.props;\n var {\n isConfigureColumnsShown\n } = this.state;\n var hasAllColumnsSelected = selectedColumns.length === 0 && invertSelection === true || selectedColumns.length === columns.length && invertSelection === false;\n var hasNoColumnsSelected = selectedColumns.length === 0 && invertSelection === false || selectedColumns.length === columns.length && invertSelection === true;\n\n // set icon layers\n var icon;\n if (hasAllColumnsSelected) {\n // icon if all columns selected for search\n icon = /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: dhSquareFilled,\n mask: dhGearFilled,\n transform: \"shrink-2 down-5 right-7\"\n }), /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: dhCheckSquare,\n className: \"text-primary\",\n transform: \"shrink-4 down-5 right-7\"\n })]\n });\n } else if (hasNoColumnsSelected) {\n // icon error, no columns selected for searching\n icon = /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsCircleLargeFilled,\n mask: dhGearFilled,\n transform: \"shrink-1 down-5 right-7\"\n }), /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: dhWarningCircleFilled,\n className: \"text-danger\",\n transform: \"shrink-4 down-5 right-7\"\n })]\n });\n } else {\n // icon if some columns selected, but not all\n icon = /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: dhSquareFilled,\n mask: dhGearFilled,\n transform: \"shrink-2 down-5 right-7\"\n }), /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: dhRemoveSquareFilled,\n className: \"text-primary\",\n transform: \"shrink-4 down-5 right-7\"\n })]\n });\n }\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"cross-column-container\",\n children: [/*#__PURE__*/_jsx(SearchInput, {\n className: \"cross-column-search\",\n placeholder: \"Search Data...\",\n \"data-testid\": \"cross-column-search\",\n value: value,\n onChange: this.handleSearchValueChange,\n ref: this.searchField\n }), /*#__PURE__*/_jsxs(\"button\", {\n type: \"button\",\n className: \"btn btn-link btn-link-icon px-2\",\n onClick: () => {\n if (isConfigureColumnsShown) {\n this.setState({\n isConfigureColumnsShown: false\n });\n } else {\n this.setState({\n isConfigureColumnsShown: true\n });\n }\n },\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"fa-layers\",\n children: icon\n }), /*#__PURE__*/_jsx(Tooltip, {\n children: \"Configure Columns\"\n }), /*#__PURE__*/_jsx(Popper, {\n isShown: isConfigureColumnsShown,\n className: \"cross-column-popper\",\n onExited: () => {\n this.setState({\n isConfigureColumnsShown: false\n });\n },\n closeOnBlur: true,\n interactive: true,\n children: /*#__PURE__*/_jsxs(\"div\", {\n className: \"cross-column-popup\",\n children: [\"Searched Columns\", /*#__PURE__*/_jsx(\"div\", {\n className: \"cross-column-scroll\",\n children: columns.map(column => {\n if (column.isProxy === true) return null;\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(Checkbox, {\n className: \"cross-column-checkbox\",\n checked: invertSelection ? !selectedColumns.includes(column.name) : selectedColumns.includes(column.name),\n onChange: () => this.toggleColumn(column.name),\n children: column.name\n }), column.type.substring(column.type.lastIndexOf('.') + 1)]\n }, column.name);\n })\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"cross-column-button-bar\",\n children: [/*#__PURE__*/_jsx(\"button\", {\n type: \"button\",\n className: \"btn btn-link\",\n onClick: this.selectAll,\n children: \"Select All\"\n }), /*#__PURE__*/_jsx(\"button\", {\n type: \"button\",\n className: \"btn btn-link\",\n onClick: this.clear,\n children: \"Clear\"\n }), /*#__PURE__*/_jsx(\"button\", {\n type: \"button\",\n className: \"btn btn-link\",\n onClick: this.selectNumbers,\n children: \"Numbers Only\"\n })]\n }), hasNoColumnsSelected && /*#__PURE__*/_jsxs(\"p\", {\n className: \"text-danger\",\n children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: dhWarningCircleFilled\n }), \" Select at least one column to search.\"]\n })]\n })\n })]\n })]\n });\n }\n}\nexport default CrossColumnSearch;\n//# sourceMappingURL=CrossColumnSearch.js.map","function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport React, { Component } from 'react';\nimport memoizee from 'memoizee';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Button } from '@deephaven/components';\nimport { vsChevronRight, vsMerge, vsKey } from '@deephaven/icons';\nimport Log from '@deephaven/log';\nimport { Picker } from '@deephaven/jsapi-components';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport { assertNotNull, Pending, PromiseUtils } from '@deephaven/utils';\nimport \"./IrisGridPartitionSelector.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('IrisGridPartitionSelector');\nclass IrisGridPartitionSelector extends Component {\n constructor(props) {\n super(props);\n _defineProperty(this, \"pending\", void 0);\n _defineProperty(this, \"tableUtils\", void 0);\n _defineProperty(this, \"getCachedChangeCallback\", memoizee(index => value => this.handlePartitionSelect(index, value), {\n max: 100\n }));\n _defineProperty(this, \"getCachedFormatValueCallback\", memoizee(index => value => this.getDisplayValue(index, value), {\n max: 100\n }));\n this.handlePartitionTableClick = this.handlePartitionTableClick.bind(this);\n this.handleMergeClick = this.handleMergeClick.bind(this);\n this.handlePartitionSelect = this.handlePartitionSelect.bind(this);\n var {\n model\n } = props;\n this.tableUtils = new TableUtils(model.dh);\n this.pending = new Pending();\n this.state = {\n // We start be loading the partition tables, so we should be in a loading state\n isLoading: true,\n baseTable: null,\n keysTable: null,\n partitionTables: null\n };\n }\n componentDidMount() {\n var _this = this;\n return _asyncToGenerator(function* () {\n var {\n model\n } = _this.props;\n try {\n var keysTable = yield _this.pending.add(model.partitionKeysTable().then(keyTable => keyTable), t => t.close());\n var baseTable = yield _this.pending.add(model.partitionBaseTable(), t => t.close());\n _this.setState({\n keysTable,\n baseTable,\n isLoading: false\n });\n _this.updatePartitionOptions();\n } catch (e) {\n if (!PromiseUtils.isCanceled(e)) {\n // Just re-throw the error if it's not a cancel\n throw e;\n }\n }\n })();\n }\n componentDidUpdate(prevProps) {\n var {\n partitionConfig: prevConfig\n } = prevProps;\n var {\n partitionConfig\n } = this.props;\n if (prevConfig !== partitionConfig) {\n this.updatePartitionOptions();\n }\n }\n componentWillUnmount() {\n this.pending.cancel();\n var {\n keysTable,\n baseTable,\n partitionTables\n } = this.state;\n baseTable === null || baseTable === void 0 ? void 0 : baseTable.close();\n keysTable === null || keysTable === void 0 ? void 0 : keysTable.close();\n partitionTables === null || partitionTables === void 0 ? void 0 : partitionTables.forEach(table => table.close());\n }\n handlePartitionTableClick() {\n log.debug2('handlePartitionTableClick');\n var {\n partitionConfig\n } = this.props;\n assertNotNull(partitionConfig);\n var newPartitionConfig = _objectSpread({}, partitionConfig);\n // Toggle between Keys and Partition mode\n newPartitionConfig.mode = partitionConfig.mode === 'keys' ? 'partition' : 'keys';\n this.sendUpdate(newPartitionConfig);\n }\n handleMergeClick() {\n log.debug2('handleMergeClick');\n var {\n partitionConfig\n } = this.props;\n assertNotNull(partitionConfig);\n var newPartitionConfig = _objectSpread({}, partitionConfig);\n // Toggle between Merged and Partition mode\n newPartitionConfig.mode = partitionConfig.mode === 'merged' ? 'partition' : 'merged';\n this.sendUpdate(newPartitionConfig);\n }\n\n /**\n * Handles when a partition dropdown selection is changed. Will send an update with the new partition config\n * @param index Index of the partition column that was changed\n * @param selectedValue Selected value of the partition column\n */\n handlePartitionSelect(index, selectedValue) {\n var _this2 = this;\n return _asyncToGenerator(function* () {\n var {\n partitionConfig: prevConfig\n } = _this2.props;\n assertNotNull(prevConfig);\n log.debug('handlePartitionSelect', index, selectedValue, prevConfig);\n var newPartitions = [...prevConfig.partitions];\n newPartitions[index] = selectedValue;\n var {\n baseTable\n } = _this2.state;\n var {\n keysTable\n } = _this2.state;\n assertNotNull(baseTable);\n assertNotNull(keysTable);\n try {\n _this2.setState({\n isLoading: true\n });\n var t = yield _this2.pending.add(baseTable.copy(), tCopy => tCopy.close());\n\n // Apply our partition filters, and just get the first value\n var partitionFilters = newPartitions.slice(0, index + 1).map((partition, i) => {\n var partitionColumn = t.columns[i];\n return _this2.tableUtils.makeNullableEqFilter(partitionColumn, partition);\n });\n t.applyFilter(partitionFilters);\n t.setViewport(0, 0, t.columns);\n var data = yield _this2.pending.add(t.getViewportData());\n var newConfig = {\n // Core JSAPI returns undefined for null table values,\n // coalesce with null to differentiate null from no selection in the dropdown\n // https://github.com/deephaven/deephaven-core/issues/5400\n partitions: keysTable.columns.map(column => data.rows[0].get(column)),\n mode: 'partition'\n };\n t.close();\n _this2.sendUpdate(newConfig);\n } catch (e) {\n if (!PromiseUtils.isCanceled(e)) {\n log.error('Unable to get partition tables', e);\n }\n } finally {\n _this2.setState({\n isLoading: false\n });\n }\n })();\n }\n sendUpdate(partitionConfig) {\n log.debug2('sendUpdate', partitionConfig);\n var {\n onChange\n } = this.props;\n onChange(partitionConfig);\n }\n\n /**\n * Calls model.displayString with a special character case\n * @param index The index of the partition column to get the display value for\n * @param value The partition value to get the display value for\n */\n getDisplayValue(index, value) {\n var {\n model\n } = this.props;\n if (value === null) {\n return '(null)';\n }\n if (value === undefined || value === '') {\n return '';\n }\n var column = model.partitionColumns[index];\n if (TableUtils.isCharType(column.type) && value.toString().length > 0) {\n return String.fromCharCode(parseInt(value.toString(), 10));\n }\n return model.displayString(value, column.type, column.name);\n }\n\n /**\n * Update the options on the partition dropdown tables\n */\n updatePartitionOptions() {\n var _this3 = this;\n return _asyncToGenerator(function* () {\n var {\n model\n } = _this3.props;\n var {\n partitionConfig: prevConfig\n } = _this3.props;\n if (prevConfig == null) {\n return;\n }\n var {\n keysTable\n } = _this3.state;\n assertNotNull(keysTable);\n var partitionFilters = [...prevConfig.partitions].map((partition, i) => {\n var partitionColumn = keysTable.columns[i];\n return _this3.tableUtils.makeNullableEqFilter(partitionColumn, partition);\n });\n var partitionTables = yield Promise.all(model.partitionColumns.map( /*#__PURE__*/function () {\n var _ref = _asyncToGenerator(function* (_, i) {\n keysTable.applyFilter(partitionFilters.slice(0, i));\n return keysTable.selectDistinct(model.partitionColumns.slice(0, i + 1));\n });\n return function (_x, _x2) {\n return _ref.apply(this, arguments);\n };\n }()));\n _this3.setState({\n partitionTables\n });\n })();\n }\n getPartitionFilters(partitionTables) {\n var {\n model,\n partitionConfig\n } = this.props;\n assertNotNull(partitionConfig);\n var {\n partitions\n } = partitionConfig;\n log.debug('getPartitionFilters', partitionConfig);\n if (partitions.length !== partitionTables.length) {\n throw new Error(\"Invalid partition config set. Expected \".concat(partitionTables.length, \" partitions, but got \").concat(partitions.length));\n }\n\n // The filters are applied in order, so we need to build up the filters for each partition\n var partitionFilters = [];\n for (var i = 0; i < partitions.length; i += 1) {\n if (i === 0) {\n // There's no reason to ever filter the first table\n partitionFilters.push([]);\n } else {\n var previousFilter = partitionFilters[i - 1];\n var previousPartition = partitions[i - 1];\n var previousColumn = model.partitionColumns[i - 1];\n var partitionFilter = [...previousFilter, this.tableUtils.makeNullableEqFilter(previousColumn, previousPartition)];\n partitionFilters.push(partitionFilter);\n }\n }\n return partitionFilters;\n }\n render() {\n var {\n model,\n partitionConfig\n } = this.props;\n var {\n isLoading,\n partitionTables\n } = this.state;\n var partitionSelectors = model.partitionColumns.map((column, index) => /*#__PURE__*/_jsxs(\"div\", {\n className: \"column-selector\",\n children: [(partitionTables === null || partitionTables === void 0 ? void 0 : partitionTables[index]) && /*#__PURE__*/_jsx(Picker, {\n label: column.name,\n labelPosition: \"side\",\n table: partitionTables[index],\n direction: \"bottom\",\n shouldFlip: false,\n keyColumn: partitionTables[index].columns[index].name,\n selectedKey: (partitionConfig === null || partitionConfig === void 0 ? void 0 : partitionConfig.mode) === 'partition' ? partitionConfig.partitions[index] : null,\n placeholder: \"Select a key\",\n labelColumn: partitionTables[index].columns[index].name,\n onChange: this.getCachedChangeCallback(index),\n isDisabled: isLoading || partitionConfig == null\n }), model.partitionColumns.length - 1 === index || /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsChevronRight\n })]\n }, \"selector-\".concat(column.name)));\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"iris-grid-partition-selector\",\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"partition-button-group\",\n children: [/*#__PURE__*/_jsx(Button, {\n onClick: this.handlePartitionTableClick,\n kind: \"inline\",\n tooltip: model.isPartitionAwareSourceTable ? 'View keys as table' : 'View underlying partition table',\n icon: vsKey,\n active: (partitionConfig === null || partitionConfig === void 0 ? void 0 : partitionConfig.mode) === 'keys',\n disabled: isLoading || partitionConfig == null,\n children: \"Partitions\"\n }), /*#__PURE__*/_jsx(Button, {\n onClick: this.handleMergeClick,\n kind: \"inline\",\n tooltip: \"View all partitions as one merged table\",\n icon: /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsMerge,\n rotation: 90\n }),\n active: (partitionConfig === null || partitionConfig === void 0 ? void 0 : partitionConfig.mode) === 'merged',\n disabled: isLoading || partitionConfig == null,\n children: model.isPartitionAwareSourceTable ? 'Coalesce' : 'Merge'\n })]\n }), partitionSelectors]\n });\n }\n}\nexport default IrisGridPartitionSelector;\n//# sourceMappingURL=IrisGridPartitionSelector.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport React, { Component } from 'react';\nimport deepEqual from 'fast-deep-equal';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { dhNewCircleLargeFilled, vsTrash } from '@deephaven/icons';\nimport { Button, Select } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport \"./SelectDistinctBuilder.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('SelectDistinctBuilder');\nclass SelectDistinctBuilder extends Component {\n constructor(props) {\n super(props);\n this.handleAddColumnClick = this.handleAddColumnClick.bind(this);\n this.handleDeleteColumn = this.handleDeleteColumn.bind(this);\n this.handleDropdownChanged = this.handleDropdownChanged.bind(this);\n var {\n model,\n selectDistinctColumns\n } = this.props;\n this.state = {\n inputs: selectDistinctColumns.length > 0 ? [...selectDistinctColumns] : [''],\n columns: model.originalColumns\n };\n }\n componentDidUpdate(prevProps, prevState) {\n var {\n inputs\n } = this.state;\n var {\n onChange\n } = this.props;\n if (prevState.inputs !== inputs) {\n var filteredInputs = inputs.filter(val => val !== '');\n if (!deepEqual(prevState.inputs.filter(val => val !== ''), filteredInputs)) {\n onChange(filteredInputs);\n }\n }\n }\n handleAddColumnClick() {\n this.setState(_ref => {\n var {\n inputs: prevInputs\n } = _ref;\n return {\n inputs: [...prevInputs, '']\n };\n });\n }\n handleDeleteColumn(index) {\n this.setState(_ref2 => {\n var {\n inputs\n } = _ref2;\n return {\n inputs: inputs.length === 1 && index === 0 ? [''] : inputs.filter((input, inputIndex) => index !== inputIndex)\n };\n });\n }\n handleDropdownChanged(index, value) {\n log.debug('handleDropdownChanged', index, value);\n this.setState(_ref3 => {\n var {\n inputs: prevInputs\n } = _ref3;\n var inputs = [...prevInputs];\n inputs[index] = value;\n return {\n inputs\n };\n });\n }\n renderInputs() {\n var {\n columns,\n inputs\n } = this.state;\n return inputs.map((value, index) => {\n var options = columns.filter(_ref4 => {\n var {\n name\n } = _ref4;\n return name === value || !inputs.includes(name);\n }).map(_ref5 => {\n var {\n name\n } = _ref5;\n return /*#__PURE__*/_jsx(\"option\", {\n value: name,\n children: name\n }, name);\n });\n return (\n /*#__PURE__*/\n // eslint-disable-next-line react/no-array-index-key\n _jsxs(\"div\", {\n className: \"form-inline px-3 pb-3\",\n children: [/*#__PURE__*/_jsxs(Select, {\n className: \"form-control custom-select col\",\n value: value,\n onChange: eventTargetValue => this.handleDropdownChanged(index, eventTargetValue),\n children: [/*#__PURE__*/_jsx(\"option\", {\n value: \"\",\n children: \"Select a column\"\n }), options]\n }), (inputs.length > 1 || value !== '') && /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: \"ml-1 px-2\",\n onClick: () => {\n this.handleDeleteColumn(index);\n },\n icon: /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsTrash,\n transform: \"grow-3\"\n }),\n tooltip: \"Delete column\"\n })]\n }, index)\n );\n });\n }\n render() {\n var {\n columns,\n inputs\n } = this.state;\n var disableAddButton = inputs.length >= columns.length;\n return /*#__PURE__*/_jsxs(\"div\", {\n role: \"presentation\",\n className: \"select-distinct-builder-container h-100\",\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"select-distinct-title\",\n children: \"Display Unique Values From\"\n }), this.renderInputs(), /*#__PURE__*/_jsx(\"hr\", {}), /*#__PURE__*/_jsx(\"div\", {\n className: \"pt-1 px-3\",\n children: /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: \"btn-add-column\",\n onClick: this.handleAddColumnClick,\n disabled: disableAddButton,\n icon: dhNewCircleLargeFilled,\n children: \"Add Additional Column\"\n })\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"select-distinct-builder-footer\",\n children: /*#__PURE__*/_jsx(\"div\", {\n className: \"select-distinct-builder-hint\",\n children: \"Display only unique values from the selected table columns. Note that this will reset any filters and display only the selected columns.\"\n })\n })]\n });\n }\n}\n_defineProperty(SelectDistinctBuilder, \"defaultProps\", {\n selectDistinctColumns: [],\n onChange: () => undefined\n});\nexport default SelectDistinctBuilder;\n//# sourceMappingURL=SelectDistinctBuilder.js.map","import React from 'react';\nimport { Menu } from '@deephaven/components';\nimport AdvancedSettingsType from \"./AdvancedSettingsType.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction AdvancedSettingsMenu(_ref) {\n var {\n items,\n onChange: _onChange = () => undefined\n } = _ref;\n return /*#__PURE__*/_jsx(Menu, {\n items: Array.from(items.entries()).map(_ref2 => {\n var [key, isOn] = _ref2;\n return {\n title: AdvancedSettingsMenu.getAdvancedSettingsTitleForKey(key),\n isOn,\n onChange: value => _onChange(key, value)\n };\n })\n });\n}\nAdvancedSettingsMenu.getAdvancedSettingsTitleForKey = key => {\n switch (key) {\n case AdvancedSettingsType.FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS:\n return 'Clear current table filters before applying new filters from a control';\n case AdvancedSettingsType.LINK_CHANGE_CLEARS_ALL_FILTERS:\n return 'Clear current table filters before applying new filters from an incoming link filter';\n }\n};\nexport default AdvancedSettingsMenu;\n//# sourceMappingURL=AdvancedSettingsMenu.js.map","function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport React, { useCallback } from 'react';\nimport { DragDropContext, Draggable, Droppable } from 'react-beautiful-dnd';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { dhNewCircleLargeFilled, vsGripper, vsTrash } from '@deephaven/icons';\nimport { Button, DragUtils, Tooltip } from '@deephaven/components';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport \"./ConditionalFormattingMenu.css\";\nimport { FormatterType, getBackgroundForStyleConfig, getColorForStyleConfig, getShortLabelForConditionType, NumberCondition, StringCondition, DateCondition } from \"./ConditionalFormattingUtils.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('ConditionalFormattingMenu');\nvar DEFAULT_CALLBACK = () => undefined;\nfunction getRuleValue(config) {\n var {\n column: {\n type\n }\n } = config;\n if (TableUtils.isNumberType(type)) {\n return config.condition === NumberCondition.IS_NULL || config.condition === NumberCondition.IS_NOT_NULL ? '' : \"\".concat(config.value);\n }\n if (TableUtils.isCharType(type)) {\n return config.condition === DateCondition.IS_NULL || config.condition === DateCondition.IS_NOT_NULL ? '' : \"\".concat(config.value);\n }\n if (TableUtils.isStringType(type)) {\n return config.condition === StringCondition.IS_NULL || config.condition === StringCondition.IS_NOT_NULL ? '' : \"\\\"\".concat(config.value, \"\\\"\");\n }\n if (TableUtils.isDateType(type)) {\n return config.condition === DateCondition.IS_NULL || config.condition === DateCondition.IS_NOT_NULL ? '' : \"\".concat(config.value);\n }\n if (TableUtils.isBooleanType(type)) {\n return '';\n }\n throw new Error(\"Invalid column type \".concat(type, \" in getRuleValue\"));\n}\nfunction getRuleTitle(config) {\n if (TableUtils.isNumberType(config.column.type) && config.condition === NumberCondition.IS_BETWEEN) {\n return \"\".concat(config.start, \" < \").concat(config.column.name, \" < \").concat(config.end);\n }\n return \"\".concat(config.column.name, \" \").concat(getShortLabelForConditionType(config.column.type, config.condition), \" \\n \").concat(getRuleValue(config));\n}\nfunction ConditionalFormattingMenu(props) {\n var {\n rules = [],\n onChange = DEFAULT_CALLBACK,\n onCreate = DEFAULT_CALLBACK,\n onSelect = DEFAULT_CALLBACK\n } = props;\n var handleRuleClick = useCallback((e, rule, index) => {\n e.stopPropagation();\n log.debug('Rule clicked', rule, index);\n onSelect(index);\n }, [onSelect]);\n var handleDeleteClick = useCallback((e, rule, index) => {\n e.stopPropagation();\n log.debug('Delete button clicked', rule, index);\n var updatedRules = [...rules];\n updatedRules.splice(index, 1);\n onChange(updatedRules);\n }, [onChange, rules]);\n var handleDragHandlerClick = useCallback(e => {\n e.stopPropagation();\n }, []);\n var handleDragEnd = useCallback(result => {\n DragUtils.stopDragging();\n\n // if dropped outside the list\n if (result.destination == null) {\n return;\n }\n var sourceIndex = result.source.index;\n var destinationIndex = result.destination.index;\n var updatedRules = [...rules];\n var sourceInput = rules[sourceIndex];\n updatedRules.splice(sourceIndex, 1);\n updatedRules.splice(destinationIndex, 0, sourceInput);\n onChange(updatedRules);\n }, [onChange, rules]);\n\n // Display list of rules\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"conditional-formatting-rules\",\n children: [/*#__PURE__*/_jsx(DragDropContext, {\n onDragStart: DragUtils.startDragging,\n onDragEnd: handleDragEnd,\n children: /*#__PURE__*/_jsx(Droppable, {\n droppableId: \"droppable-custom-columns\",\n children: (provided, snapshot) => /*#__PURE__*/_jsxs(\"div\", _objectSpread(_objectSpread({\n ref: provided.innerRef\n // eslint-disable-next-line react/jsx-props-no-spreading\n }, provided.droppableProps), {}, {\n className: classNames('droppable-container', {\n dragging: snapshot.draggingFromThisWith\n }),\n children: [rules.length === 0 && /*#__PURE__*/_jsx(\"div\", {\n className: \"text-muted pl-2\",\n children: \"No formats defined\"\n }), rules.map((rule, index) => /*#__PURE__*/_jsx(Draggable\n // eslint-disable-next-line react/no-array-index-key\n , {\n draggableId: \"\".concat(index, \"-\").concat(rule.type),\n index: index,\n disableInteractiveElementBlocking: true,\n children:\n // eslint-disable-next-line @typescript-eslint/no-shadow\n (provided, snapshot) => /*#__PURE__*/_jsx(\"div\", _objectSpread(_objectSpread({\n role: \"menuitem\",\n tabIndex: 0,\n onClick: e => handleRuleClick(e, rule, index),\n className: classNames('draggable-container', {\n dragging: snapshot.isDragging\n }),\n ref: provided.innerRef\n // eslint-disable-next-line react/jsx-props-no-spreading\n }, provided.draggableProps), {}, {\n children: /*#__PURE__*/_jsx(\"div\", {\n className: \"conditional-formatting-list-item\",\n children: /*#__PURE__*/_jsxs(\"div\", {\n className: \"formatting-item\",\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"rule-icon\",\n children: /*#__PURE__*/_jsx(\"span\", {\n className: \"rule-icon-bg\",\n style: {\n backgroundColor: getBackgroundForStyleConfig(rule.config.style),\n color: getColorForStyleConfig(rule.config.style)\n },\n children: rule.type === FormatterType.ROWS ? 'row' : 'col'\n })\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"rule-title\",\n children: getRuleTitle(rule.config)\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: \"ml-1 px-2\",\n onClick: e => handleDeleteClick(e, rule, index),\n icon: vsTrash,\n tooltip: \"Delete rule\"\n }), /*#__PURE__*/_jsxs(\"button\", _objectSpread(_objectSpread({\n type: \"button\",\n className: \"btn btn-link btn-link-icon px-2 btn-drag-handle\",\n onClick: handleDragHandlerClick\n // eslint-disable-next-line react/jsx-props-no-spreading\n }, provided.dragHandleProps), {}, {\n children: [/*#__PURE__*/_jsx(Tooltip, {\n children: \"Drag to re-order\"\n }), /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsGripper\n })]\n }))]\n })\n })\n }))\n }, \"\".concat(index, \"-\").concat(rule.type))), provided.placeholder]\n }))\n })\n }), /*#__PURE__*/_jsx(\"hr\", {}), /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n onClick: onCreate,\n icon: dhNewCircleLargeFilled,\n children: \"Add New Rule\"\n })]\n });\n}\nexport default ConditionalFormattingMenu;\n//# sourceMappingURL=ConditionalFormattingMenu.js.map","import { useCallback, useEffect, useMemo, useState } from 'react';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport { Select } from '@deephaven/components';\nimport { StringCondition, DateCondition, getLabelForNumberCondition, getLabelForDateCondition, getLabelForStringCondition, NumberCondition, getDefaultConditionForType, getLabelForBooleanCondition, BooleanCondition, CharCondition, getLabelForCharCondition, isDateConditionValid, getDefaultValueForType } from \"./ConditionalFormattingUtils.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('ConditionEditor');\nvar DEFAULT_CALLBACK = () => undefined;\nvar numberConditionOptions = [NumberCondition.IS_EQUAL, NumberCondition.IS_NOT_EQUAL, NumberCondition.IS_BETWEEN, NumberCondition.GREATER_THAN, NumberCondition.GREATER_THAN_OR_EQUAL, NumberCondition.LESS_THAN, NumberCondition.LESS_THAN_OR_EQUAL, NumberCondition.IS_NULL, NumberCondition.IS_NOT_NULL].map(option => /*#__PURE__*/_jsx(\"option\", {\n value: option,\n children: getLabelForNumberCondition(option)\n}, option));\nvar stringConditions = [StringCondition.IS_EXACTLY, StringCondition.IS_NOT_EXACTLY, StringCondition.CONTAINS, StringCondition.DOES_NOT_CONTAIN, StringCondition.STARTS_WITH, StringCondition.ENDS_WITH, StringCondition.IS_NULL, StringCondition.IS_NOT_NULL].map(option => /*#__PURE__*/_jsx(\"option\", {\n value: option,\n children: getLabelForStringCondition(option)\n}, option));\nvar dateConditions = [DateCondition.IS_EXACTLY, DateCondition.IS_NOT_EXACTLY, DateCondition.IS_BEFORE, DateCondition.IS_BEFORE_OR_EQUAL, DateCondition.IS_AFTER, DateCondition.IS_AFTER_OR_EQUAL, DateCondition.IS_NULL, DateCondition.IS_NOT_NULL].map(option => /*#__PURE__*/_jsx(\"option\", {\n value: option,\n children: getLabelForDateCondition(option)\n}, option));\nvar booleanConditions = [BooleanCondition.IS_TRUE, BooleanCondition.IS_FALSE, BooleanCondition.IS_NULL, BooleanCondition.IS_NOT_NULL].map(option => /*#__PURE__*/_jsx(\"option\", {\n value: option,\n children: getLabelForBooleanCondition(option)\n}, option));\nvar charConditions = [CharCondition.IS_EQUAL, CharCondition.IS_NOT_EQUAL, CharCondition.IS_NULL, CharCondition.IS_NOT_NULL].map(option => /*#__PURE__*/_jsx(\"option\", {\n value: option,\n children: getLabelForCharCondition(option)\n}, option));\nfunction isNumberConditionValid(condition, value, startValue, endValue) {\n if (condition === NumberCondition.IS_NULL || condition === NumberCondition.IS_NOT_NULL) {\n return true;\n }\n if (condition === NumberCondition.IS_BETWEEN && startValue != null && startValue !== '' && !Number.isNaN(Number.parseFloat(startValue)) && endValue != null && endValue !== '' && !Number.isNaN(Number.parseFloat(endValue))) {\n return true;\n }\n if (condition !== NumberCondition.IS_BETWEEN && value !== undefined && value !== '' && !Number.isNaN(Number.parseFloat(value))) {\n return true;\n }\n return false;\n}\nfunction getNumberInputs(selectedCondition, handleValueChange, handleStartValueChange, handleEndValueChange, conditionValue, startValue, endValue) {\n switch (selectedCondition) {\n case NumberCondition.IS_EQUAL:\n case NumberCondition.IS_NOT_EQUAL:\n case NumberCondition.GREATER_THAN:\n case NumberCondition.GREATER_THAN_OR_EQUAL:\n case NumberCondition.LESS_THAN:\n case NumberCondition.LESS_THAN_OR_EQUAL:\n return /*#__PURE__*/_jsx(\"input\", {\n type: \"number\",\n className: \"form-control\",\n placeholder: \"Enter value\",\n value: conditionValue !== null && conditionValue !== void 0 ? conditionValue : '',\n onChange: handleValueChange\n });\n case NumberCondition.IS_BETWEEN:\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"d-flex flex-row\",\n children: [/*#__PURE__*/_jsx(\"input\", {\n type: \"number\",\n className: \"form-control d-flex mr-2\",\n placeholder: \"Start value\",\n value: startValue !== null && startValue !== void 0 ? startValue : '',\n onChange: handleStartValueChange\n }), /*#__PURE__*/_jsx(\"input\", {\n type: \"number\",\n className: \"form-control d-flex\",\n placeholder: \"End value\",\n value: endValue !== null && endValue !== void 0 ? endValue : '',\n onChange: handleEndValueChange\n })]\n });\n case NumberCondition.IS_NULL:\n case NumberCondition.IS_NOT_NULL:\n return null;\n }\n}\nfunction getStringInputs(selectedCondition, handleValueChange, conditionValue) {\n switch (selectedCondition) {\n case StringCondition.IS_NULL:\n case StringCondition.IS_NOT_NULL:\n return null;\n default:\n return /*#__PURE__*/_jsx(\"input\", {\n type: \"text\",\n className: \"form-control\",\n placeholder: \"Enter value\",\n value: conditionValue !== null && conditionValue !== void 0 ? conditionValue : '',\n onChange: handleValueChange\n });\n }\n}\nfunction getDateInputs(selectedCondition, handleValueChange, conditionValue) {\n switch (selectedCondition) {\n case DateCondition.IS_NULL:\n case DateCondition.IS_NOT_NULL:\n return null;\n default:\n return /*#__PURE__*/_jsx(\"input\", {\n type: \"text\",\n className: \"form-control\",\n placeholder: \"Enter value\",\n value: conditionValue !== null && conditionValue !== void 0 ? conditionValue : '',\n onChange: handleValueChange\n });\n }\n}\nfunction getBooleanInputs() {\n return null;\n}\nfunction getCharInputs(selectedCondition, handleValueChange, conditionValue) {\n switch (selectedCondition) {\n case CharCondition.IS_NULL:\n case CharCondition.IS_NOT_NULL:\n return null;\n default:\n return /*#__PURE__*/_jsx(\"input\", {\n type: \"text\",\n className: \"form-control\",\n maxLength: 1,\n placeholder: \"Enter value\",\n value: conditionValue !== null && conditionValue !== void 0 ? conditionValue : '',\n onChange: handleValueChange\n });\n }\n}\nfunction ConditionEditor(props) {\n var {\n column,\n config,\n dh,\n onChange = DEFAULT_CALLBACK\n } = props;\n var selectedColumnType = column.type;\n var [prevColumnType, setPrevColumnType] = useState(selectedColumnType);\n var [selectedCondition, setCondition] = useState(config.condition);\n var [conditionValue, setValue] = useState(config.value);\n var [startValue, setStartValue] = useState(config.start);\n var [endValue, setEndValue] = useState(config.end);\n if (selectedColumnType !== prevColumnType) {\n // Column type changed, reset condition and value fields\n setCondition(getDefaultConditionForType(selectedColumnType));\n setValue(getDefaultValueForType(selectedColumnType));\n setStartValue(undefined);\n setEndValue(undefined);\n setPrevColumnType(selectedColumnType);\n }\n var conditions = useMemo(() => {\n if (selectedColumnType === undefined) {\n return [];\n }\n if (TableUtils.isNumberType(selectedColumnType)) {\n return numberConditionOptions;\n }\n if (TableUtils.isCharType(selectedColumnType)) {\n return charConditions;\n }\n if (TableUtils.isStringType(selectedColumnType)) {\n return stringConditions;\n }\n if (TableUtils.isDateType(selectedColumnType)) {\n return dateConditions;\n }\n if (TableUtils.isBooleanType(selectedColumnType)) {\n return booleanConditions;\n }\n }, [selectedColumnType]);\n var handleConditionChange = useCallback(value => {\n log.debug('handleConditionChange', value);\n setCondition(value);\n }, []);\n var handleValueChange = useCallback(e => {\n var {\n value\n } = e.target;\n log.debug('handleValueChange', value);\n setValue(value);\n }, []);\n var handleStartValueChange = useCallback(e => {\n var {\n value\n } = e.target;\n log.debug('handleStartValueChange', value);\n setStartValue(value);\n }, []);\n var handleEndValueChange = useCallback(e => {\n var {\n value\n } = e.target;\n log.debug('handleEndValueChange', value);\n setEndValue(value);\n }, []);\n useEffect(function changeCondition() {\n var isValid = true;\n if (selectedCondition === undefined) {\n log.debug('Unable to create formatting rule. Condition is not selected.');\n isValid = false;\n } else if (TableUtils.isNumberType(column.type) && !isNumberConditionValid(selectedCondition, conditionValue, startValue, endValue)) {\n log.debug('Unable to create formatting rule. Invalid value', conditionValue);\n isValid = false;\n } else if (TableUtils.isDateType(column.type) && !isDateConditionValid(dh, selectedCondition, conditionValue)) {\n log.debug('Unable to create formatting rule. Invalid date condition', conditionValue);\n isValid = false;\n }\n onChange({\n condition: selectedCondition,\n value: conditionValue,\n start: startValue,\n end: endValue\n }, isValid);\n }, [onChange, column.type, dh, selectedCondition, conditionValue, startValue, endValue]);\n var conditionInputs = useMemo(() => {\n if (selectedColumnType === undefined) {\n // Column not selected\n return null;\n }\n if (TableUtils.isNumberType(selectedColumnType)) {\n return getNumberInputs(selectedCondition, handleValueChange, handleStartValueChange, handleEndValueChange, conditionValue, startValue, endValue);\n }\n if (TableUtils.isCharType(selectedColumnType)) {\n return getCharInputs(selectedCondition, handleValueChange, conditionValue);\n }\n if (TableUtils.isStringType(selectedColumnType)) {\n return getStringInputs(selectedCondition, handleValueChange, conditionValue);\n }\n if (TableUtils.isDateType(selectedColumnType)) {\n return getDateInputs(selectedCondition, handleValueChange, conditionValue);\n }\n if (TableUtils.isBooleanType(selectedColumnType)) {\n return getBooleanInputs();\n }\n }, [selectedColumnType, selectedCondition, conditionValue, startValue, endValue, handleValueChange, handleStartValueChange, handleEndValueChange]);\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"condition-editor mb-2\",\n children: [/*#__PURE__*/_jsx(Select, {\n value: selectedCondition,\n \"data-testid\": \"condition-select\",\n className: \"custom-select mb-2\",\n onChange: handleConditionChange,\n children: conditions\n }), conditionInputs]\n });\n}\nexport default ConditionEditor;\n//# sourceMappingURL=ConditionEditor.js.map","import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport Log from '@deephaven/log';\nimport { ColorUtils } from '@deephaven/utils';\nimport { vsCheck } from '@deephaven/icons';\nimport { Button, DropdownMenu } from '@deephaven/components';\nimport { FormatStyleType, getLabelForStyleType, getBackgroundForStyleConfig, getColorForStyleConfig } from \"./ConditionalFormattingUtils.js\";\nimport \"./StyleEditor.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('StyleEditor');\nvar DEFAULT_BACKGROUND = '#fcfcfa';\nvar DEFAULT_COLOR_LIGHT = '#f0f0ee';\nvar DEFAULT_COLOR_DARK = '#1a171a';\nvar DEFAULT_DROPDOWN_WIDTH = 200;\nvar DEFAULT_CALLBACK = () => undefined;\nfunction StyleEditor(props) {\n var _config$customConfig$, _config$customConfig;\n var {\n config,\n onChange = DEFAULT_CALLBACK\n } = props;\n var [styleType, setStyleType] = useState(config.type);\n var [background, setBackground] = useState((_config$customConfig$ = (_config$customConfig = config.customConfig) === null || _config$customConfig === void 0 ? void 0 : _config$customConfig.background) !== null && _config$customConfig$ !== void 0 ? _config$customConfig$ : DEFAULT_BACKGROUND);\n var [isShown, setShown] = useState(false);\n var [dropdownWidth, setDropdownWidth] = useState(DEFAULT_DROPDOWN_WIDTH);\n var csContainer = useRef(null);\n var handleBackgroundChange = useCallback(e => {\n var {\n value\n } = e.target;\n log.debug('handleBackgroundChange', value);\n setBackground(value);\n }, []);\n var handleMenuClosed = useCallback(() => {\n if (isShown) {\n setShown(false);\n }\n }, [isShown]);\n var handleToggleClick = useCallback(() => {\n if (!isShown) {\n updateDropdownWidth();\n }\n setShown(!isShown);\n }, [isShown]);\n var styleOptions = useMemo(() => [FormatStyleType.NO_FORMATTING, FormatStyleType.POSITIVE, FormatStyleType.NEGATIVE, FormatStyleType.WARN, FormatStyleType.NEUTRAL, FormatStyleType.ACCENT_1, FormatStyleType.ACCENT_2, FormatStyleType.CUSTOM], []);\n function updateDropdownWidth() {\n if (csContainer.current) {\n setDropdownWidth(csContainer.current.getBoundingClientRect().width);\n }\n }\n useEffect(function updateTheme() {\n onChange({\n type: styleType,\n customConfig: {\n color: ColorUtils.isDark(background) ? DEFAULT_COLOR_LIGHT : DEFAULT_COLOR_DARK,\n background\n }\n });\n }, [onChange, styleType, background]);\n var renderOptions = useCallback(() => {\n var matchFound = false;\n var optionArray = [];\n var _loop = function _loop() {\n var option = styleOptions[index];\n var key = \"option-\".concat(index, \"-\").concat(option);\n matchFound = matchFound || option === styleType;\n optionArray.push( /*#__PURE__*/_jsxs(Button, {\n kind: \"inline\",\n className: \"style-option-btn\",\n onClick: () => {\n setStyleType(option);\n setShown(false);\n },\n style: {\n color: getColorForStyleConfig({\n type: option\n }),\n background: getBackgroundForStyleConfig({\n type: option\n })\n },\n children: [option === styleType && /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsCheck,\n className: \"mr-2\"\n }), option !== styleType && /*#__PURE__*/_jsx(\"span\", {\n className: \"mr-4\"\n }), getLabelForStyleType(option)]\n }, key));\n };\n for (var index = 0; index < styleOptions.length; index += 1) {\n _loop();\n }\n return optionArray;\n }, [styleOptions, styleType]);\n var renderMenuElement = useCallback(() => /*#__PURE__*/_jsx(\"div\", {\n className: \"style-menu-container\",\n role: \"presentation\",\n style: {\n width: dropdownWidth\n },\n children: /*#__PURE__*/_jsx(\"div\", {\n className: \"style-options\",\n children: renderOptions()\n })\n }), [dropdownWidth, renderOptions]);\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"style-editor\",\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"mb-2\",\n ref: csContainer,\n children: [/*#__PURE__*/_jsx(\"label\", {\n className: \"mb-0\",\n children: \"Style\"\n }), /*#__PURE__*/_jsxs(Button, {\n kind: \"inline\",\n className: \"cs-dropdown custom-select\",\n style: {\n color: getColorForStyleConfig({\n type: styleType\n }),\n background: getBackgroundForStyleConfig({\n type: styleType\n })\n },\n onClick: handleToggleClick,\n children: [getLabelForStyleType(styleType), /*#__PURE__*/_jsx(DropdownMenu, {\n isShown: isShown,\n actions: {\n menuElement: renderMenuElement()\n },\n popperOptions: {\n placement: 'bottom-start'\n },\n popperClassName: \"style-dropdown-menu\",\n onMenuClosed: handleMenuClosed,\n menuStyle: {\n maxWidth: '100rem'\n }\n })]\n })]\n }), styleType === FormatStyleType.CUSTOM && /*#__PURE__*/_jsxs(\"div\", {\n className: \"mb-2\",\n children: [/*#__PURE__*/_jsx(\"label\", {\n className: \"mb-0\",\n children: \"Background\"\n }), /*#__PURE__*/_jsx(\"input\", {\n type: \"color\",\n value: background,\n className: \"custom-select color-select\",\n onChange: handleBackgroundChange\n })]\n })]\n });\n}\nexport default StyleEditor;\n//# sourceMappingURL=StyleEditor.js.map","function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport Log from '@deephaven/log';\nimport { ComboBox } from '@deephaven/components';\nimport { getDefaultConditionConfigForType, getConditionConfig, getDefaultStyleConfig, FormatStyleType } from \"./ConditionalFormattingUtils.js\";\nimport ConditionEditor from \"./ConditionEditor.js\";\nimport StyleEditor from \"./StyleEditor.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nvar log = Log.module('ColumnFormatEditor');\nvar DEFAULT_CALLBACK = () => undefined;\nfunction makeDefaultConfig(columns) {\n var {\n type,\n name\n } = columns[0];\n var column = {\n type,\n name\n };\n var config = _objectSpread({\n column,\n style: getDefaultStyleConfig()\n }, getDefaultConditionConfigForType(type));\n return config;\n}\nfunction ColumnFormatEditor(props) {\n var _columns$find;\n var {\n columns,\n config = makeDefaultConfig(columns),\n dh,\n onChange = DEFAULT_CALLBACK\n } = props;\n var [selectedColumn, setColumn] = useState((_columns$find = columns.find(c => c.name === config.column.name && c.type === config.column.type)) !== null && _columns$find !== void 0 ? _columns$find : columns[0]);\n var [conditionConfig, setConditionConfig] = useState(getConditionConfig(config));\n var [conditionValid, setConditionValid] = useState(false);\n var [selectedStyle, setStyle] = useState(config.style);\n var handleColumnChange = useCallback(value => {\n var newColumn = columns.find(_ref => {\n var {\n name\n } = _ref;\n return name === value;\n });\n if (newColumn !== undefined) {\n setColumn(newColumn);\n if (selectedColumn.type !== newColumn.type) {\n setConditionConfig(getDefaultConditionConfigForType(newColumn.type));\n setConditionValid(false);\n }\n } else {\n log.error(\"Column \".concat(value, \" not found.\"));\n }\n }, [columns, selectedColumn]);\n var handleConditionChange = useCallback((updatedConditionConfig, isValid) => {\n log.debug('handleConditionChange', updatedConditionConfig, isValid);\n setConditionConfig(updatedConditionConfig);\n setConditionValid(isValid);\n }, []);\n var handleStyleChange = useCallback(updatedStyleConfig => {\n log.debug('handleStyleChange', updatedStyleConfig);\n setStyle(updatedStyleConfig);\n }, []);\n useEffect(function updateColumnFormat() {\n var isValid = conditionValid;\n if (selectedColumn === undefined) {\n log.debug('Column is not selected, invalidating update.');\n isValid = false;\n }\n if (selectedStyle === undefined || selectedStyle.type === FormatStyleType.NO_FORMATTING) {\n log.debug('Style is not selected, invalidating update.');\n isValid = false;\n }\n var {\n type,\n name\n } = selectedColumn;\n var column = {\n type,\n name\n };\n onChange(_objectSpread({\n column,\n style: selectedStyle\n }, conditionConfig), isValid);\n }, [onChange, selectedColumn, selectedStyle, conditionConfig, conditionValid]);\n var columnNames = useMemo(() => columns.map(_ref2 => {\n var {\n name\n } = _ref2;\n return name;\n }), [columns]);\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"conditional-rule-editor form\",\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"mb-2\",\n children: [/*#__PURE__*/_jsx(\"label\", {\n className: \"mb-0\",\n children: \"Format Cell If\"\n }), /*#__PURE__*/_jsx(ComboBox, {\n \"aria-label\": \"Select column to format\",\n defaultSelectedKey: selectedColumn === null || selectedColumn === void 0 ? void 0 : selectedColumn.name,\n onChange: handleColumnChange,\n children: columnNames\n })]\n }), selectedColumn !== undefined && /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(ConditionEditor, {\n dh: dh,\n column: selectedColumn,\n config: conditionConfig,\n onChange: handleConditionChange\n }), /*#__PURE__*/_jsx(StyleEditor, {\n config: selectedStyle,\n onChange: handleStyleChange\n })]\n })]\n });\n}\nexport default ColumnFormatEditor;\n//# sourceMappingURL=ColumnFormatEditor.js.map","function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport Log from '@deephaven/log';\nimport { ComboBox } from '@deephaven/components';\nimport { getDefaultConditionConfigForType, getConditionConfig, getDefaultStyleConfig } from \"./ConditionalFormattingUtils.js\";\nimport ConditionEditor from \"./ConditionEditor.js\";\nimport StyleEditor from \"./StyleEditor.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nvar log = Log.module('RowFormatEditor');\nvar DEFAULT_CALLBACK = () => undefined;\nfunction makeDefaultConfig(columns) {\n var {\n type,\n name\n } = columns[0];\n var column = {\n type,\n name\n };\n var config = _objectSpread({\n column,\n style: getDefaultStyleConfig()\n }, getDefaultConditionConfigForType(type));\n return config;\n}\nfunction RowFormatEditor(props) {\n var _columns$find;\n var {\n columns,\n config = makeDefaultConfig(columns),\n dh,\n onChange = DEFAULT_CALLBACK\n } = props;\n var [selectedColumn, setColumn] = useState((_columns$find = columns.find(c => c.name === config.column.name && c.type === config.column.type)) !== null && _columns$find !== void 0 ? _columns$find : columns[0]);\n var [conditionConfig, setConditionConfig] = useState(getConditionConfig(config));\n var [conditionValid, setConditionValid] = useState(false);\n var [selectedStyle, setStyle] = useState(config.style);\n var handleColumnChange = useCallback(value => {\n var newColumn = columns.find(_ref => {\n var {\n name\n } = _ref;\n return name === value;\n });\n if (newColumn !== undefined) {\n setColumn(newColumn);\n if (selectedColumn.type !== newColumn.type) {\n setConditionConfig(getDefaultConditionConfigForType(newColumn.type));\n setConditionValid(false);\n }\n } else {\n log.error(\"Column \".concat(value, \" not found.\"));\n }\n }, [columns, selectedColumn]);\n var handleConditionChange = useCallback((updatedConditionConfig, isValid) => {\n log.debug('handleConditionChange', updatedConditionConfig, isValid);\n setConditionConfig(updatedConditionConfig);\n setConditionValid(isValid);\n }, []);\n var handleStyleChange = useCallback(updatedStyleConfig => {\n log.debug('handleStyleChange', updatedStyleConfig);\n setStyle(updatedStyleConfig);\n }, []);\n useEffect(function updateRowFormat() {\n if (selectedColumn === undefined) {\n log.debug('Column is not selected, skip update.');\n return;\n }\n if (selectedStyle === undefined) {\n log.debug('Style is not selected, skip update.');\n return;\n }\n var {\n type,\n name\n } = selectedColumn;\n var column = {\n type,\n name\n };\n onChange(_objectSpread({\n column,\n style: selectedStyle\n }, conditionConfig), conditionValid);\n }, [onChange, selectedColumn, selectedStyle, conditionConfig, conditionValid]);\n var columnNames = useMemo(() => columns.map(_ref2 => {\n var {\n name\n } = _ref2;\n return name;\n }), [columns]);\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"conditional-rule-editor form\",\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"mb-2\",\n children: [/*#__PURE__*/_jsx(\"label\", {\n className: \"mb-0\",\n children: \"Format Row If\"\n }), /*#__PURE__*/_jsx(ComboBox, {\n \"aria-label\": \"Select column to format row by\",\n defaultSelectedKey: selectedColumn === null || selectedColumn === void 0 ? void 0 : selectedColumn.name,\n onChange: handleColumnChange,\n children: columnNames\n })]\n }), selectedColumn !== undefined && /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(ConditionEditor, {\n column: selectedColumn,\n config: conditionConfig,\n dh: dh,\n onChange: handleConditionChange\n }), /*#__PURE__*/_jsx(StyleEditor, {\n config: selectedStyle,\n onChange: handleStyleChange\n })]\n })]\n });\n}\nexport default RowFormatEditor;\n//# sourceMappingURL=RowFormatEditor.js.map","import React, { useCallback, useState } from 'react';\nimport classNames from 'classnames';\nimport { Button } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport { FormatColumnWhereIcon, FormatRowWhereIcon } from \"../icons/index.js\";\nimport ColumnFormatEditor from \"./ColumnFormatEditor.js\";\nimport RowFormatEditor from \"./RowFormatEditor.js\";\nimport { FormatterType, isSupportedColumn } from \"./ConditionalFormattingUtils.js\";\nimport \"./ConditionalFormatEditor.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('ConditionalFormatEditor');\nvar DEFAULT_CALLBACK = () => undefined;\nfunction getFormatterTypeIcon(option) {\n switch (option) {\n case FormatterType.CONDITIONAL:\n return /*#__PURE__*/_jsx(FormatColumnWhereIcon, {});\n case FormatterType.ROWS:\n return /*#__PURE__*/_jsx(FormatRowWhereIcon, {});\n }\n}\nfunction getFormatterTypeLabel(option) {\n switch (option) {\n case FormatterType.CONDITIONAL:\n return 'Conditional';\n case FormatterType.ROWS:\n return 'Rows';\n }\n}\nvar formatterTypes = [FormatterType.CONDITIONAL, FormatterType.ROWS];\nfunction ConditionalFormatEditor(props) {\n var _defaultRule$type;\n var {\n columns: originalColumns,\n dh,\n onSave = DEFAULT_CALLBACK,\n onUpdate = DEFAULT_CALLBACK,\n onCancel = DEFAULT_CALLBACK,\n rule: defaultRule\n } = props;\n var columns = originalColumns.filter(isSupportedColumn);\n var [selectedFormatter, setFormatter] = useState((_defaultRule$type = defaultRule === null || defaultRule === void 0 ? void 0 : defaultRule.type) !== null && _defaultRule$type !== void 0 ? _defaultRule$type : formatterTypes[0]);\n var [rule, setRule] = useState(defaultRule);\n var [isValid, setIsValid] = useState(false);\n var handleCancel = useCallback(() => {\n onCancel();\n }, [onCancel]);\n var handleSave = useCallback(() => {\n if (rule === undefined) {\n log.error('Rule is not defined.');\n return;\n }\n onSave(rule);\n }, [onSave, rule]);\n var handleFormatterChange = useCallback(value => {\n log.debug('handleFormatterChange', value);\n setFormatter(value);\n }, []);\n var handleRuleChange = useCallback((ruleConfig, isRuleValid) => {\n log.debug('handleRuleChange', ruleConfig, isRuleValid, selectedFormatter);\n var updatedRule = {\n type: selectedFormatter,\n config: ruleConfig\n };\n setRule(updatedRule);\n setIsValid(isRuleValid);\n onUpdate(isRuleValid ? updatedRule : undefined);\n }, [onUpdate, selectedFormatter]);\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"conditional-format-editor form\",\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"mb-2\",\n children: [/*#__PURE__*/_jsx(\"label\", {\n className: \"mb-0\",\n htmlFor: \"formatter-select\",\n children: \"Select Formatter\"\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"formatter-list\",\n children: formatterTypes.map((type, index) => /*#__PURE__*/_jsx(\"div\", {\n className: \"formatter-type\",\n children: /*#__PURE__*/_jsxs(\"button\", {\n type: \"button\",\n className: classNames('btn', 'btn-icon', 'btn-formatter-type', {\n active: type === selectedFormatter\n }),\n \"data-index\": index,\n onClick: () => handleFormatterChange(type),\n children: [getFormatterTypeIcon(type), getFormatterTypeLabel(type)]\n })\n }, type))\n })]\n }), selectedFormatter === FormatterType.CONDITIONAL && /*#__PURE__*/_jsx(ColumnFormatEditor, {\n columns: columns,\n dh: dh,\n config: rule === null || rule === void 0 ? void 0 : rule.config,\n onChange: handleRuleChange\n }), selectedFormatter === FormatterType.ROWS && /*#__PURE__*/_jsx(RowFormatEditor, {\n columns: columns,\n config: rule === null || rule === void 0 ? void 0 : rule.config,\n dh: dh,\n onChange: handleRuleChange\n }), /*#__PURE__*/_jsx(\"hr\", {}), /*#__PURE__*/_jsxs(\"div\", {\n className: \"d-flex justify-content-end my-3\",\n children: [/*#__PURE__*/_jsx(Button, {\n kind: \"secondary\",\n onClick: handleCancel,\n className: \"mr-2\",\n children: \"Cancel\"\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"primary\",\n onClick: handleSave,\n disabled: rule === undefined || !isValid,\n children: \"Done\"\n })]\n })]\n });\n}\nexport default ConditionalFormatEditor;\n//# sourceMappingURL=ConditionalFormatEditor.js.map","import React, { useEffect, useRef, useState } from 'react';\nimport { Editor } from '@deephaven/console';\nimport { Button, CopyButton, Modal, ModalBody, ModalHeader } from '@deephaven/components';\nimport { vsJson, vsListOrdered } from '@deephaven/icons';\nimport \"./IrisGridCellOverflowModal.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nexport default function IrisGridCellOverflowModal(_ref) {\n var _editorRef$current$ge, _editorRef$current2;\n var {\n text,\n isOpen,\n onClose\n } = _ref;\n var [isOpened, setIsOpened] = useState(false);\n var [height, setHeight] = useState(0);\n var [showLineNumbers, setShowLineNumbers] = useState(false);\n var [isFormatted, setIsFormatted] = useState(false);\n var [canFormat, setCanFormat] = useState(false);\n var editorRef = useRef();\n\n // Update format button on open\n useEffect(function enableFormatButtonWhenOpen() {\n if (!isOpen) {\n return;\n }\n try {\n JSON.parse(text);\n setCanFormat(true);\n } catch (_unused) {\n setCanFormat(false);\n }\n setIsFormatted(false);\n }, [isOpen, text]);\n\n // Re-layout editor on height change\n useEffect(function updateLayoutOnHeightChange() {\n if (editorRef.current) {\n editorRef.current.layout();\n }\n }, [height]);\n\n // Update editor options on line number toggle\n useEffect(function toggleShowLineNumber() {\n if (editorRef.current) {\n editorRef.current.updateOptions({\n lineNumbers: showLineNumbers ? 'on' : 'off'\n });\n }\n }, [showLineNumbers]);\n function toggleLineNumbers() {\n setShowLineNumbers(!showLineNumbers);\n }\n function formatAsJSON() {\n var _editorRef$current;\n var model = (_editorRef$current = editorRef.current) === null || _editorRef$current === void 0 ? void 0 : _editorRef$current.getModel();\n if (!canFormat || !model) {\n return;\n }\n if (!isFormatted) {\n model.setValue(JSON.stringify(JSON.parse(text), undefined, 2));\n setIsFormatted(true);\n } else {\n model.setValue(text);\n setIsFormatted(false);\n }\n autoSetLineNumbers();\n }\n function autoSetLineNumbers() {\n var _editor$getModel$getL, _editor$getModel;\n var editor = editorRef.current;\n if (!editor) {\n return;\n }\n setShowLineNumbers(((_editor$getModel$getL = (_editor$getModel = editor.getModel()) === null || _editor$getModel === void 0 ? void 0 : _editor$getModel.getLineCount()) !== null && _editor$getModel$getL !== void 0 ? _editor$getModel$getL : 0) > 1);\n }\n function handleToggle() {\n if (isOpened) {\n editorRef.current = undefined;\n onClose();\n }\n }\n function onEditorInitialized(editor) {\n editorRef.current = editor;\n setHeight(editor.getContentHeight());\n editor.onDidContentSizeChange(_ref2 => {\n var {\n contentHeight\n } = _ref2;\n return setHeight(contentHeight);\n });\n autoSetLineNumbers();\n }\n if (!isOpen && !isOpened) {\n return null;\n }\n return /*#__PURE__*/_jsxs(Modal, {\n isOpen: isOpen,\n centered: true,\n keyboard: true,\n toggle: handleToggle,\n onOpened: () => setIsOpened(true),\n onClosed: () => {\n setIsOpened(false);\n setHeight(0);\n },\n className: \"cell-overflow-modal\",\n size: \"xl\",\n children: [/*#__PURE__*/_jsxs(ModalHeader, {\n toggle: onClose,\n children: [/*#__PURE__*/_jsx(\"h5\", {\n className: \"overflow-modal-title\",\n children: \"Cell Contents\"\n }), /*#__PURE__*/_jsx(CopyButton, {\n kind: \"inline\",\n tooltip: \"Copy cell contents\",\n copy: (_editorRef$current$ge = (_editorRef$current2 = editorRef.current) === null || _editorRef$current2 === void 0 ? void 0 : _editorRef$current2.getValue()) !== null && _editorRef$current$ge !== void 0 ? _editorRef$current$ge : text\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"inline\",\n active: showLineNumbers,\n icon: vsListOrdered,\n tooltip: \"Toggle line numbers\",\n onClick: toggleLineNumbers\n }), canFormat && /*#__PURE__*/_jsx(Button, {\n kind: \"inline\",\n icon: vsJson,\n active: isFormatted,\n tooltip: \"Format as JSON\",\n onClick: formatAsJSON\n })]\n }), /*#__PURE__*/_jsx(ModalBody, {\n style: {\n height\n },\n children: /*#__PURE__*/_jsx(Editor, {\n onEditorInitialized: onEditorInitialized,\n settings: {\n value: text,\n readOnly: true,\n wordWrap: 'on',\n // Loading json language w/o the monaco workers causes UI freezes and monaco errors. TS colorizes the same\n language: canFormat ? 'typescript' : 'plaintext',\n folding: canFormat,\n padding: {\n bottom: 16\n },\n lineNumbers: showLineNumbers ? 'on' : 'off',\n overviewRulerLanes: 0,\n renderLineHighlight: 'none',\n /*\n The entire string may be 1 giant line\n Monaco by default seeds find w/ that line\n On very long strings this hangs the browser, so never seed the search\n */\n find: {\n seedSearchStringFromSelection: 'never'\n }\n }\n })\n })]\n });\n}\n//# sourceMappingURL=IrisGridCellOverflowModal.js.map","import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsClose, vsArrowUp, vsArrowDown } from '@deephaven/icons';\nimport React, { forwardRef, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react';\nimport { Type as FilterType } from '@deephaven/filters';\nimport { Button, DateTimeInput, Select } from '@deephaven/components';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport classNames from 'classnames';\nimport \"./GotoRow.css\";\nimport { nanoid } from 'nanoid';\nimport IrisGridBottomBar from \"./IrisGridBottomBar.js\";\nimport { isIrisGridTableModelTemplate } from \"./IrisGridTableModelTemplate.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nvar DEFAULT_FORMAT_STRING = '###,##0';\nvar GotoRow = /*#__PURE__*/forwardRef((_ref, ref) => {\n var {\n gotoRow,\n gotoRowError,\n gotoValueError,\n onGotoRowSubmit,\n isShown,\n onEntering,\n onEntered: _onEntered,\n onExiting,\n onExited,\n model,\n onGotoRowNumberChanged,\n onClose,\n gotoValueSelectedColumnName,\n gotoValue,\n gotoValueFilter,\n onGotoValueSelectedColumnNameChanged,\n onGotoValueSelectedFilterChanged,\n onGotoValueChanged,\n onGotoValueSubmit\n } = _ref;\n var gotoRowInputRef = useRef(null);\n var gotoValueInputRef = useRef(null);\n var [isGotoRowActive, setIsGotoRowActive] = useState(false);\n var columns = [];\n if (isIrisGridTableModelTemplate(model)) {\n ({\n columns\n } = model.table);\n }\n var {\n dh,\n rowCount\n } = model;\n var gotoRowInputId = useMemo(() => \"goto-row-input-\".concat(nanoid()), []);\n var handleGotoValueNumberKeyDown = e => {\n if (e.key === 'Enter') {\n e.stopPropagation();\n e.preventDefault();\n onGotoValueSubmit();\n } else if ((e.key === 'Backspace' || e.key === 'Delete') && (gotoValue === \"\".concat(Number.POSITIVE_INFINITY) || gotoValue === \"\".concat(Number.NEGATIVE_INFINITY))) {\n onGotoValueInputChanged('');\n }\n };\n var handleGotoValueKeySubmit = e => {\n if (e.key === 'Enter') {\n e.stopPropagation();\n e.preventDefault();\n onGotoValueSubmit(e.shiftKey);\n }\n };\n var index = model.getColumnIndexByName(gotoValueSelectedColumnName);\n var selectedColumn = columns[index !== null && index !== void 0 ? index : 0];\n var columnType = selectedColumn === null || selectedColumn === void 0 ? void 0 : selectedColumn.type;\n var normalizedType = TableUtils.getNormalizedType(columnType);\n var onGotoValueInputChanged = value => {\n onGotoValueChanged(value !== null && value !== void 0 ? value : '');\n };\n useImperativeHandle(ref, () => ({\n focus() {\n var _gotoRowInputRef$curr;\n setIsGotoRowActive(true);\n (_gotoRowInputRef$curr = gotoRowInputRef.current) === null || _gotoRowInputRef$curr === void 0 ? void 0 : _gotoRowInputRef$curr.select();\n }\n }));\n var selectInput = () => {\n // when row changes without focus (i.e. via context menu), re-select input\n if (isGotoRowActive && document.activeElement !== gotoRowInputRef.current) {\n var _gotoRowInputRef$curr2;\n (_gotoRowInputRef$curr2 = gotoRowInputRef.current) === null || _gotoRowInputRef$curr2 === void 0 ? void 0 : _gotoRowInputRef$curr2.select();\n } else if (!isGotoRowActive && document.activeElement !== gotoValueInputRef.current) {\n var _gotoValueInputRef$cu;\n (_gotoValueInputRef$cu = gotoValueInputRef.current) === null || _gotoValueInputRef$cu === void 0 ? void 0 : _gotoValueInputRef$cu.select();\n }\n };\n useEffect(selectInput, [isGotoRowActive]);\n var renderValueInput = () => {\n switch (normalizedType) {\n case TableUtils.dataType.DECIMAL:\n case TableUtils.dataType.INT:\n return /*#__PURE__*/_jsx(\"div\", {\n className: \"goto-row-input\",\n children: /*#__PURE__*/_jsx(\"input\", {\n ref: gotoValueInputRef,\n className: classNames('form-control', {\n 'is-invalid': gotoValueError !== ''\n }),\n onKeyDown: handleGotoValueNumberKeyDown,\n placeholder: \"value\",\n onChange: e => {\n var value = e.target.value.toLowerCase();\n // regex tests for\n if (/^-?[0-9]*\\.?[0-9]*$/.test(e.target.value)) {\n onGotoValueInputChanged(e.target.value);\n } else if (value === '-i' || value === '-infinity') {\n onGotoValueInputChanged(\"\".concat(Number.NEGATIVE_INFINITY));\n } else if (value === 'i' || value === 'infinity') {\n onGotoValueInputChanged(\"\".concat(Number.POSITIVE_INFINITY));\n }\n },\n value: gotoValue,\n \"aria-label\": \"Value Input\"\n })\n });\n case TableUtils.dataType.DATETIME:\n return /*#__PURE__*/_jsx(\"div\", {\n className: \"goto-value-date-time-input\",\n children: /*#__PURE__*/_jsx(DateTimeInput, {\n ref: gotoValueInputRef,\n className: classNames('form-control', 'goto-value-date-time-input', {\n 'is-invalid': gotoValueError !== ''\n }),\n defaultValue: gotoValue,\n onChange: onGotoValueInputChanged,\n onSubmit: handleGotoValueKeySubmit,\n \"aria-label\": \"Value Input\"\n })\n });\n case TableUtils.dataType.STRING:\n return /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"goto-row-input\",\n children: /*#__PURE__*/_jsxs(Select, {\n className: \"custom-select\",\n onChange: eventTargetValue => {\n onGotoValueSelectedFilterChanged(eventTargetValue);\n },\n value: gotoValueFilter,\n \"aria-label\": \"filter-type-select\",\n children: [/*#__PURE__*/_jsx(\"option\", {\n value: FilterType.eqIgnoreCase,\n children: \"Equals (case-insensitive)\"\n }, FilterType.eqIgnoreCase), /*#__PURE__*/_jsx(\"option\", {\n value: FilterType.containsIgnoreCase,\n children: \"Contains (case-insensitive)\"\n }, FilterType.containsIgnoreCase), /*#__PURE__*/_jsx(\"option\", {\n value: FilterType.eq,\n children: \"Equals\"\n }, FilterType.eq), /*#__PURE__*/_jsx(\"option\", {\n value: FilterType.contains,\n children: \"Contains\"\n }, FilterType.contains)]\n })\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"goto-row-input\",\n children: /*#__PURE__*/_jsx(\"input\", {\n ref: gotoValueInputRef,\n className: classNames('form-control', {\n 'is-invalid': gotoValueError !== ''\n }),\n onKeyDown: handleGotoValueKeySubmit,\n placeholder: \"value\",\n onChange: e => onGotoValueInputChanged(e.target.value),\n value: gotoValue,\n \"aria-label\": \"Value Input\"\n })\n })]\n });\n case TableUtils.dataType.BOOLEAN:\n return /*#__PURE__*/_jsx(\"div\", {\n className: \"goto-row-input\",\n children: /*#__PURE__*/_jsxs(Select, {\n className: \"custom-select\",\n onChange: eventTargetValue => {\n onGotoValueInputChanged(eventTargetValue);\n },\n value: gotoValue,\n \"aria-label\": \"Value Input\",\n children: [/*#__PURE__*/_jsx(\"option\", {\n \"aria-label\": \"null value\",\n value: \"\"\n }, \"null\"), /*#__PURE__*/_jsx(\"option\", {\n value: \"true\",\n children: \"true\"\n }, \"true\"), /*#__PURE__*/_jsx(\"option\", {\n value: \"false\",\n children: \"false\"\n }, \"false\")]\n })\n });\n default:\n return /*#__PURE__*/_jsx(\"div\", {\n className: \"goto-row-input\",\n children: /*#__PURE__*/_jsx(\"input\", {\n ref: gotoValueInputRef,\n className: \"form-control\",\n onKeyDown: handleGotoValueKeySubmit,\n placeholder: \"value\",\n onChange: e => onGotoValueInputChanged(e.target.value),\n value: gotoValue,\n \"aria-label\": \"Value Input\"\n })\n });\n }\n };\n return /*#__PURE__*/_jsx(IrisGridBottomBar, {\n isShown: isShown,\n className: classNames('goto-row'),\n onEntering: onEntering,\n onEntered: () => {\n _onEntered();\n selectInput();\n },\n onExiting: onExiting,\n onExited: onExited,\n children: /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"goto-row-row\",\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: classNames('goto-row-wrapper', {\n 'is-inactive': !isGotoRowActive\n }),\n onClick: () => setIsGotoRowActive(true),\n onFocus: () => setIsGotoRowActive(true),\n role: \"group\",\n children: [/*#__PURE__*/_jsx(\"label\", {\n className: \"goto-row-text\",\n htmlFor: gotoRowInputId,\n children: \"Go to row\"\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"goto-row-input\",\n children: /*#__PURE__*/_jsx(\"input\", {\n ref: gotoRowInputRef,\n \"data-testid\": \"goto-row-input\",\n type: \"number\",\n onKeyDown: e => {\n if (e.key === 'Enter') {\n e.stopPropagation();\n e.preventDefault();\n onGotoRowSubmit();\n }\n },\n className: classNames('form-control', {\n 'is-invalid': gotoRowError !== ''\n }),\n placeholder: \"Row number\",\n onChange: event => {\n onGotoRowNumberChanged(event);\n },\n value: gotoRow,\n id: gotoRowInputId\n })\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"goto-row-text\",\n children: [\"of\", ' ', dh.i18n.NumberFormat.format(DEFAULT_FORMAT_STRING, rowCount)]\n }), gotoRowError && /*#__PURE__*/_jsx(\"div\", {\n className: \"text-danger\",\n children: gotoRowError\n })]\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"goto-row-close\",\n children: /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n onClick: onClose,\n children: /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsClose,\n style: {\n marginRight: '0'\n }\n })\n })\n })]\n }), model.isSeekRowAvailable && /*#__PURE__*/_jsx(\"div\", {\n className: \"goto-row-row\",\n children: /*#__PURE__*/_jsxs(\"div\", {\n className: classNames('goto-row-wrapper', {\n 'is-inactive': isGotoRowActive\n }),\n onClick: () => setIsGotoRowActive(false),\n onFocus: () => setIsGotoRowActive(false),\n role: \"group\",\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"goto-row-text\",\n children: \"Go to value\"\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"goto-row-input\",\n children: /*#__PURE__*/_jsx(Select, {\n className: \"custom-select\",\n onChange: eventTargetValue => {\n var columnName = eventTargetValue;\n onGotoValueSelectedColumnNameChanged(columnName);\n },\n value: gotoValueSelectedColumnName,\n \"aria-label\": \"column-name-select\",\n id: \"column-name-select\",\n children: columns.map(column => /*#__PURE__*/_jsx(\"option\", {\n value: column.name,\n children: column.name\n }, column.name))\n })\n }), renderValueInput(), /*#__PURE__*/_jsxs(\"div\", {\n children: [/*#__PURE__*/_jsx(Button, {\n tooltip: \"Previous match\",\n icon: vsArrowUp,\n kind: \"ghost\",\n disabled: gotoValue === '',\n onClick: () => {\n onGotoValueSubmit(true);\n }\n }), /*#__PURE__*/_jsx(Button, {\n tooltip: \"Next match\",\n icon: vsArrowDown,\n kind: \"ghost\",\n disabled: gotoValue === '',\n onClick: () => {\n onGotoValueSubmit(false);\n }\n })]\n }), gotoValueError && /*#__PURE__*/_jsx(\"div\", {\n className: \"text-danger\",\n children: gotoValueError\n })]\n })\n })]\n })\n });\n});\nGotoRow.displayName = 'GotoRow';\nexport default GotoRow;\n//# sourceMappingURL=GotoRow.js.map","import { Button, GLOBAL_SHORTCUTS, Modal, ModalBody, ModalFooter, ModalHeader } from '@deephaven/components';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nexport function NoPastePermissionModal(_ref) {\n var {\n isOpen,\n onClose,\n errorMessage\n } = _ref;\n var pasteShortcutText = GLOBAL_SHORTCUTS.PASTE.getDisplayText();\n return /*#__PURE__*/_jsxs(Modal, {\n isOpen: isOpen,\n toggle: onClose,\n centered: true,\n children: [/*#__PURE__*/_jsx(ModalHeader, {\n closeButton: false,\n children: \"No Paste Permission\"\n }), /*#__PURE__*/_jsxs(ModalBody, {\n children: [/*#__PURE__*/_jsx(\"p\", {\n children: errorMessage\n }), /*#__PURE__*/_jsxs(\"p\", {\n children: [\"You can still use \", pasteShortcutText, \" to paste.\"]\n })]\n }), /*#__PURE__*/_jsx(ModalFooter, {\n children: /*#__PURE__*/_jsx(Button, {\n kind: \"primary\",\n onClick: onClose,\n children: \"Dismiss\"\n })\n })]\n });\n}\n//# sourceMappingURL=NoPastePermissionModal.js.map","function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport React, { Component } from 'react';\nimport memoize from 'memoizee';\nimport classNames from 'classnames';\nimport { CSSTransition } from 'react-transition-group';\nimport PropTypes from 'prop-types';\nimport deepEqual from 'fast-deep-equal';\nimport Log from '@deephaven/log';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { ContextActions, Stack, Menu, Page, Popper, ThemeExport, Tooltip, Button, ContextActionUtils, SlideTransition } from '@deephaven/components';\nimport { Grid, GridRange, GridUtils, isEditableGridModel, isExpandableGridModel, isDeletableGridModel, isExpandableColumnGridModel } from '@deephaven/grid';\nimport { dhEye, dhFilterFilled, dhGraphLineUp, dhTriangleDownSquare, vsClose, vsCloudDownload, vsEdit, vsFilter, vsMenu, vsReply, vsRuby, vsSearch, vsSplitHorizontal, vsSymbolOperator, vsTools } from '@deephaven/icons';\nimport { DateUtils, Formatter, FormatterUtils, TableUtils, isSortDirection } from '@deephaven/jsapi-utils';\nimport { assertNotNull, copyToClipboard, EMPTY_ARRAY, EMPTY_MAP, Pending, PromiseUtils, ValidationError, getOrThrow } from '@deephaven/utils';\nimport { Type as FilterType } from '@deephaven/filters';\nimport throttle from 'lodash.throttle';\nimport debounce from 'lodash.debounce';\nimport clamp from 'lodash.clamp';\nimport { getFormatColumns } from \"./sidebar/conditional-formatting/ConditionalFormattingUtils.js\";\nimport PendingDataBottomBar from \"./PendingDataBottomBar.js\";\nimport IrisGridCopyHandler from \"./IrisGridCopyHandler.js\";\nimport FilterInputField from \"./FilterInputField.js\";\nimport { CopyCellKeyHandler, ClearFilterKeyHandler, CopyKeyHandler, ReverseKeyHandler } from \"./key-handlers/index.js\";\nimport { IrisGridCellOverflowMouseHandler, IrisGridColumnSelectMouseHandler, IrisGridColumnTooltipMouseHandler, IrisGridContextMenuHandler, IrisGridCopyCellMouseHandler, IrisGridDataSelectMouseHandler, IrisGridPartitionedTableMouseHandler, IrisGridFilterMouseHandler, IrisGridRowTreeMouseHandler, IrisGridSortMouseHandler, IrisGridTokenMouseHandler, PendingMouseHandler } from \"./mousehandlers/index.js\";\nimport ToastBottomBar from \"./ToastBottomBar.js\";\nimport IrisGridMetricCalculator from \"./IrisGridMetricCalculator.js\";\nimport IrisGridModelUpdater from \"./IrisGridModelUpdater.js\";\nimport IrisGridRenderer from \"./IrisGridRenderer.js\";\nimport { createDefaultIrisGridTheme } from \"./IrisGridTheme.js\";\nimport ColumnStatistics from \"./ColumnStatistics.js\";\nimport \"./IrisGrid.css\";\nimport AdvancedFilterCreator from \"./AdvancedFilterCreator.js\";\nimport { Aggregations, AggregationEdit, AggregationUtils, ChartBuilder, CustomColumnBuilder, OptionType, RollupRows, TableCsvExporter, TableSaver, VisibilityOrderingBuilder, DownloadServiceWorkerUtils } from \"./sidebar/index.js\";\nimport IrisGridUtils from \"./IrisGridUtils.js\";\nimport CrossColumnSearch from \"./CrossColumnSearch.js\";\nimport IrisGridModel from \"./IrisGridModel.js\";\nimport { isPartitionedGridModel } from \"./PartitionedGridModel.js\";\nimport IrisGridPartitionSelector from \"./IrisGridPartitionSelector.js\";\nimport SelectDistinctBuilder from \"./sidebar/SelectDistinctBuilder.js\";\nimport AdvancedSettingsType from \"./sidebar/AdvancedSettingsType.js\";\nimport AdvancedSettingsMenu from \"./sidebar/AdvancedSettingsMenu.js\";\nimport SHORTCUTS from \"./IrisGridShortcuts.js\";\nimport ConditionalFormattingMenu from \"./sidebar/conditional-formatting/ConditionalFormattingMenu.js\";\nimport ConditionalFormatEditor from \"./sidebar/conditional-formatting/ConditionalFormatEditor.js\";\nimport IrisGridCellOverflowModal from \"./IrisGridCellOverflowModal.js\";\nimport GotoRow from \"./GotoRow.js\";\nimport AggregationOperation from \"./sidebar/aggregations/AggregationOperation.js\";\nimport { IrisGridThemeContext } from \"./IrisGridThemeProvider.js\";\nimport { isMissingPartitionError } from \"./MissingPartitionError.js\";\nimport { NoPastePermissionModal } from \"./NoPastePermissionModal.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('IrisGrid');\nvar VIEWPORT_LOADING_DELAY = 500;\nvar UPDATE_DOWNLOAD_THROTTLE = 500;\nvar SET_FILTER_DEBOUNCE = 250;\nvar SEEK_ROW_DEBOUNCE = 250;\nvar SET_CONDITIONAL_FORMAT_DEBOUNCE = 250;\nvar DEFAULT_AGGREGATION_SETTINGS = Object.freeze({\n aggregations: EMPTY_ARRAY,\n showOnTop: false\n});\nvar UNFORMATTED_DATE_PATTERN = \"yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSS z\";\nfunction isEmptyConfig(_ref) {\n var {\n advancedFilters,\n aggregationSettings,\n customColumns,\n quickFilters,\n reverse,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts\n } = _ref;\n return advancedFilters.size === 0 && aggregationSettings.aggregations.length === 0 && customColumns.length === 0 && quickFilters.size === 0 && !reverse && rollupConfig == null && searchFilter == null && selectDistinctColumns.length === 0 && sorts.length === 0;\n}\nclass IrisGrid extends Component {\n // eslint-disable-next-line react/static-property-placement, react/sort-comp\n\n constructor(props) {\n var _model$layoutHints, _model$layoutHints$hi, _model$columns$0$name, _model$columns$;\n super(props);\n _defineProperty(this, \"grid\", void 0);\n _defineProperty(this, \"lastFocusedFilterBarColumn\", void 0);\n _defineProperty(this, \"lastLoadedConfig\", void 0);\n _defineProperty(this, \"tooltip\", void 0);\n _defineProperty(this, \"pending\", void 0);\n _defineProperty(this, \"globalColumnFormats\", void 0);\n _defineProperty(this, \"dateTimeFormatterOptions\", void 0);\n _defineProperty(this, \"decimalFormatOptions\", void 0);\n _defineProperty(this, \"integerFormatOptions\", void 0);\n _defineProperty(this, \"truncateNumbersWithPound\", void 0);\n _defineProperty(this, \"showEmptyStrings\", void 0);\n _defineProperty(this, \"showNullStrings\", void 0);\n _defineProperty(this, \"showExtraGroupColumn\", void 0);\n _defineProperty(this, \"loadingScrimStartTime\", void 0);\n _defineProperty(this, \"loadingScrimFinishTime\", void 0);\n _defineProperty(this, \"animationFrame\", void 0);\n _defineProperty(this, \"loadingTimer\", void 0);\n _defineProperty(this, \"tableSaver\", void 0);\n _defineProperty(this, \"crossColumnRef\", void 0);\n _defineProperty(this, \"isAnimating\", void 0);\n _defineProperty(this, \"filterInputRef\", void 0);\n _defineProperty(this, \"gotoRowRef\", void 0);\n _defineProperty(this, \"isCopying\", void 0);\n _defineProperty(this, \"toggleFilterBarAction\", void 0);\n _defineProperty(this, \"toggleSearchBarAction\", void 0);\n _defineProperty(this, \"toggleGotoRowAction\", void 0);\n _defineProperty(this, \"discardAction\", void 0);\n _defineProperty(this, \"commitAction\", void 0);\n _defineProperty(this, \"contextActions\", void 0);\n _defineProperty(this, \"tableUtils\", void 0);\n _defineProperty(this, \"keyHandlers\", void 0);\n _defineProperty(this, \"mouseHandlers\", void 0);\n _defineProperty(this, \"getAdvancedMenuOpenedHandler\", memoize(column => this.handleAdvancedMenuOpened.bind(this, column), {\n max: 100\n }));\n _defineProperty(this, \"getCachedAdvancedFilterMenuActions\", memoize((model, column, advancedFilterOptions, sortDirection, formatter) => /*#__PURE__*/_jsx(AdvancedFilterCreator, {\n model: model,\n column: column,\n onFilterChange: this.handleAdvancedFilterChange,\n onSortChange: this.handleAdvancedFilterSortChange,\n onDone: this.handleAdvancedFilterDone,\n options: advancedFilterOptions,\n sortDirection: sortDirection,\n formatter: formatter,\n tableUtils: this.tableUtils\n }), {\n max: 50\n }));\n _defineProperty(this, \"getCachedOptionItems\", memoize((isChartBuilderAvailable, isCustomColumnsAvailable, isFormatColumnsAvailable, isOrganizeColumnsAvailable, isRollupAvailable, isTotalsAvailable, isSelectDistinctAvailable, isExportAvailable, toggleFilterBarAction, toggleSearchBarAction, toggleGotoRowAction, isFilterBarShown, showSearchBar, canDownloadCsv, canToggleSearch, showGotoRow, hasAdvancedSettings) => {\n var optionItems = [];\n if (isChartBuilderAvailable) {\n optionItems.push({\n type: OptionType.CHART_BUILDER,\n title: 'Chart Builder',\n icon: dhGraphLineUp\n });\n }\n if (isOrganizeColumnsAvailable) {\n optionItems.push({\n type: OptionType.VISIBILITY_ORDERING_BUILDER,\n title: 'Organize Columns',\n icon: dhEye\n });\n }\n if (isFormatColumnsAvailable) {\n optionItems.push({\n type: OptionType.CONDITIONAL_FORMATTING,\n title: 'Conditional Formatting',\n icon: vsEdit\n });\n }\n if (isCustomColumnsAvailable) {\n optionItems.push({\n type: OptionType.CUSTOM_COLUMN_BUILDER,\n title: 'Custom Columns',\n icon: vsSplitHorizontal\n });\n }\n if (isRollupAvailable) {\n optionItems.push({\n type: OptionType.ROLLUP_ROWS,\n title: 'Rollup Rows',\n icon: dhTriangleDownSquare\n });\n }\n if (isTotalsAvailable) {\n optionItems.push({\n type: OptionType.AGGREGATIONS,\n title: 'Aggregate Columns',\n icon: vsSymbolOperator\n });\n }\n if (isSelectDistinctAvailable) {\n optionItems.push({\n type: OptionType.SELECT_DISTINCT,\n title: 'Select Distinct Values',\n icon: vsRuby\n });\n }\n if (isExportAvailable && canDownloadCsv) {\n optionItems.push({\n type: OptionType.TABLE_EXPORTER,\n title: 'Download CSV',\n icon: vsCloudDownload\n });\n }\n if (hasAdvancedSettings) {\n optionItems.push({\n type: OptionType.ADVANCED_SETTINGS,\n title: 'Advanced Settings',\n icon: vsTools\n });\n }\n optionItems.push({\n type: OptionType.QUICK_FILTERS,\n title: 'Quick Filters',\n subtitle: toggleFilterBarAction.shortcut.getDisplayText(),\n icon: vsFilter,\n isOn: isFilterBarShown,\n onChange: toggleFilterBarAction.action\n });\n if (canToggleSearch) {\n optionItems.push({\n type: OptionType.SEARCH_BAR,\n title: 'Search Bar',\n subtitle: toggleSearchBarAction.shortcut.getDisplayText(),\n icon: vsSearch,\n isOn: showSearchBar,\n onChange: toggleSearchBarAction.action\n });\n }\n optionItems.push({\n type: OptionType.GOTO,\n title: 'Go to',\n subtitle: toggleGotoRowAction.shortcut.getDisplayText(),\n icon: vsReply,\n isOn: showGotoRow,\n onChange: toggleGotoRowAction.action\n });\n return Object.freeze(optionItems);\n }, {\n max: 1\n }));\n _defineProperty(this, \"getCachedHiddenColumns\", memoize((metricCalculator, userColumnWidths) => IrisGridUtils.getHiddenColumns(new Map([...metricCalculator.initialColumnWidths, ...userColumnWidths])), {\n max: 1\n }));\n _defineProperty(this, \"getAggregationMap\", memoize((columns, aggregations) => {\n var aggregationMap = {};\n aggregations.forEach(_ref2 => {\n var {\n operation,\n selected,\n invert\n } = _ref2;\n aggregationMap[operation] = AggregationUtils.getOperationColumnNames(columns, operation, selected, invert);\n });\n return aggregationMap;\n }, {\n max: 1\n }));\n _defineProperty(this, \"getOperationMap\", memoize((columns, aggregations) => {\n var operationMap = {};\n aggregations.filter(a => !AggregationUtils.isRollupOperation(a.operation)).forEach(_ref3 => {\n var {\n operation,\n selected,\n invert\n } = _ref3;\n AggregationUtils.getOperationColumnNames(columns, operation, selected, invert).forEach(name => {\n var _operationMap$name;\n var newOperations = [...((_operationMap$name = operationMap[name]) !== null && _operationMap$name !== void 0 ? _operationMap$name : []), operation];\n operationMap[name] = Object.freeze(newOperations);\n });\n });\n return operationMap;\n }, {\n max: 1\n }));\n _defineProperty(this, \"getOperationOrder\", memoize(aggregations => aggregations.map(a => a.operation).filter(o => !AggregationUtils.isRollupOperation(o)), {\n max: 1\n }));\n _defineProperty(this, \"getCachedFormatColumns\", memoize((dh, columns, rules) => getFormatColumns(dh, columns, rules), {\n max: 1000\n }));\n _defineProperty(this, \"getCachedPreviewFormatColumns\", memoize((dh, columns, rulesParam, preview, editIndex) => {\n log.debug('getCachedPreviewFormatColumns', rulesParam, preview, editIndex);\n if (preview !== undefined && editIndex !== undefined) {\n var rules = [...rulesParam];\n rules[editIndex] = preview;\n return this.getCachedFormatColumns(dh, columns, rules);\n }\n return this.getCachedFormatColumns(dh, columns, rulesParam);\n }, {\n max: 1\n }));\n _defineProperty(this, \"getModelRollupConfig\", memoize((originalColumns, config, aggregationSettings) => IrisGridUtils.getModelRollupConfig(originalColumns, config, aggregationSettings), {\n max: 1\n }));\n _defineProperty(this, \"getModelTotalsConfig\", memoize((columns, config, aggregationSettings) => {\n var _config$columns$lengt, _config$columns;\n if (((_config$columns$lengt = config === null || config === void 0 ? void 0 : (_config$columns = config.columns) === null || _config$columns === void 0 ? void 0 : _config$columns.length) !== null && _config$columns$lengt !== void 0 ? _config$columns$lengt : 0) > 0) {\n // If we've got rollups, then aggregations are applied as part of that...\n return null;\n }\n\n // Filter out aggregations without any columns actually selected\n var aggregations = aggregationSettings.aggregations.filter(agg => agg.selected.length > 0 || agg.invert);\n if (aggregations.length === 0) {\n // We don't actually have any aggregations set, don't bother\n return null;\n }\n var operationMap = this.getOperationMap(columns, aggregations);\n var operationOrder = this.getOperationOrder(aggregations);\n return {\n operationMap,\n operationOrder,\n showOnTop: aggregationSettings.showOnTop,\n defaultOperation: AggregationOperation.SKIP\n };\n }, {\n max: 1\n }));\n _defineProperty(this, \"getCachedStateOverride\", memoize((model, theme, hoverSelectColumn, isFilterBarShown, isSelectingColumn, loadingScrimProgress, quickFilters, advancedFilters, sorts, reverse, rollupConfig, isMenuShown) => ({\n model,\n theme,\n hoverSelectColumn,\n isFilterBarShown,\n isSelectingColumn,\n loadingScrimProgress,\n quickFilters,\n advancedFilters,\n sorts,\n reverse,\n rollupConfig,\n isMenuShown\n }), {\n max: 1\n }));\n _defineProperty(this, \"getCachedFilter\", memoize((customFilters, quickFilters, advancedFilters, searchFilter) => [...(customFilters !== null && customFilters !== void 0 ? customFilters : []), ...IrisGridUtils.getFiltersFromFilterMap(quickFilters), ...IrisGridUtils.getFiltersFromFilterMap(advancedFilters), ...(searchFilter !== undefined ? [searchFilter] : [])], {\n max: 1\n }));\n _defineProperty(this, \"getCachedTheme\", memoize((contextTheme, theme, isEditable, floatingRowCount, density) => {\n var _theme$rowFooterWidth;\n // If a theme is available via context, use that as the base theme.\n // If iris-grid is standalone without a context, use the default theme.\n var baseTheme = contextTheme !== null && contextTheme !== void 0 ? contextTheme : createDefaultIrisGridTheme();\n\n // We only show the row footers when we have floating rows for aggregations\n var rowFooterWidth = floatingRowCount > 0 ? (_theme$rowFooterWidth = theme === null || theme === void 0 ? void 0 : theme.rowFooterWidth) !== null && _theme$rowFooterWidth !== void 0 ? _theme$rowFooterWidth : baseTheme.rowFooterWidth : 0;\n var {\n metricCalculator\n } = this.state;\n if (metricCalculator != null) {\n metricCalculator.resetCalculatedColumnWidths();\n metricCalculator.resetCalculatedRowHeights();\n }\n var densityTheme = {};\n if (density === 'compact') {\n densityTheme = baseTheme.density.compact;\n } else if (density === 'spacious') {\n densityTheme = baseTheme.density.spacious;\n }\n return _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, baseTheme), densityTheme), theme), {}, {\n autoSelectRow: !isEditable,\n rowFooterWidth\n });\n }, {\n max: 1\n }));\n _defineProperty(this, \"getCachedKeyHandlers\", memoize(keyHandlers => [...keyHandlers, ...this.keyHandlers].sort((a, b) => a.order - b.order), {\n max: 1\n }));\n _defineProperty(this, \"getCachedMouseHandlers\", memoize(mouseHandlers => [...mouseHandlers, ...this.mouseHandlers], {\n max: 1\n }));\n _defineProperty(this, \"getCachedRenderer\", memoize(rendererProp => rendererProp !== null && rendererProp !== void 0 ? rendererProp : new IrisGridRenderer(), {\n max: 1\n }));\n _defineProperty(this, \"getAlwaysFetchColumns\", memoize((alwaysFetchColumns, columns, movedColumns, floatingLeftColumnCount, floatingRightColumnCount, draggingRange) => {\n var floatingColumns = [];\n for (var i = 0; i < floatingLeftColumnCount; i += 1) {\n floatingColumns.push(columns[GridUtils.getModelIndex(i, movedColumns)].name);\n }\n for (var _i = 0; _i < floatingRightColumnCount; _i += 1) {\n floatingColumns.push(columns[GridUtils.getModelIndex(columns.length - 1 - _i, movedColumns)].name);\n }\n if (draggingRange) {\n for (var _i2 = draggingRange[0]; _i2 <= draggingRange[1]; _i2 += 1) {\n floatingColumns.push(columns[GridUtils.getModelIndex(_i2, movedColumns)].name);\n }\n }\n var columnSet = new Set([...alwaysFetchColumns, ...floatingColumns]);\n return Object.freeze([...columnSet]);\n }, {\n max: 1\n }));\n _defineProperty(this, \"updateSearchFilter\", debounce((searchValue, selectedSearchColumns, columns, invertSearchColumns) => {\n var {\n model\n } = this.props;\n var searchFilter = CrossColumnSearch.createSearchFilter(model.dh, searchValue, selectedSearchColumns, columns, invertSearchColumns);\n this.setState({\n searchFilter\n });\n }, SET_FILTER_DEBOUNCE));\n _defineProperty(this, \"showViewportLoading\", throttle(() => {\n var {\n model\n } = this.props;\n var {\n loadingSpinnerShown\n } = this.state;\n if (model.isViewportPending && !loadingSpinnerShown) {\n // We only want to show the viewport loading if the viewport is still loading\n // and we're not already showing a loader for something else\n this.startLoading('Waiting for viewport...', {\n loadingCancelShown: false,\n loadingBlocksGrid: false\n });\n }\n }, VIEWPORT_LOADING_DELAY, {\n leading: false,\n trailing: true\n }));\n _defineProperty(this, \"handleConditionalFormatEditorUpdate\", debounce(conditionalFormatPreview => {\n this.setState({\n conditionalFormatPreview\n });\n }, SET_CONDITIONAL_FORMAT_DEBOUNCE));\n _defineProperty(this, \"handleDownloadProgressUpdate\", throttle((tableDownloadProgress, tableDownloadEstimatedTime) => {\n var {\n tableDownloadStatus\n } = this.state;\n if (tableDownloadStatus === TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING) {\n this.setState({\n tableDownloadProgress,\n tableDownloadEstimatedTime\n });\n }\n }, UPDATE_DOWNLOAD_THROTTLE));\n _defineProperty(this, \"getOverflowButtonTooltip\", memoize(overflowButtonTooltipProps => {\n if (overflowButtonTooltipProps == null) {\n return null;\n }\n var wrapperStyle = _objectSpread(_objectSpread({\n position: 'absolute'\n }, overflowButtonTooltipProps), {}, {\n pointerEvents: 'none'\n });\n var popperOptions = {\n placement: 'left',\n modifiers: {\n flip: {\n behavior: ['left', 'right']\n }\n }\n };\n return /*#__PURE__*/_jsx(\"div\", {\n style: wrapperStyle,\n children: /*#__PURE__*/_jsx(Tooltip, {\n options: popperOptions,\n ref: this.handleTooltipRef,\n children: \"View full contents\"\n }, Date.now())\n });\n }, {\n max: 1\n }));\n _defineProperty(this, \"getExpandCellTooltip\", memoize(expandCellTooltipProps => {\n if (expandCellTooltipProps == null) {\n return null;\n }\n var {\n expandTooltipDisplayValue\n } = this.state;\n var {\n model\n } = this.props;\n var isExpandAllAvailable = isExpandableGridModel(model) && model.isExpandAllAvailable;\n var wrapperStyle = _objectSpread(_objectSpread({\n position: 'absolute'\n }, expandCellTooltipProps), {}, {\n pointerEvents: 'none'\n });\n var popperOptions = {\n placement: 'bottom-start'\n };\n return /*#__PURE__*/_jsx(\"div\", {\n style: wrapperStyle,\n children: /*#__PURE__*/_jsx(Tooltip, {\n options: popperOptions,\n ref: this.handleTooltipRef,\n children: /*#__PURE__*/_jsxs(\"div\", {\n style: {\n textAlign: 'left'\n },\n children: [\"Click to \", expandTooltipDisplayValue, \" row\", isExpandAllAvailable && /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(\"br\", {}), ContextActionUtils.isMacPlatform() ? '⌘' : 'Ctrl+', \"Click to expand row and all children\"]\n })]\n })\n }, Date.now())\n });\n }, {\n max: 1\n }));\n _defineProperty(this, \"getHoverTooltip\", memoize(hoverTooltipProps => {\n if (hoverTooltipProps == null) {\n return null;\n }\n var {\n hoverDisplayValue\n } = this.state;\n var wrapperStyle = _objectSpread(_objectSpread({\n position: 'absolute'\n }, hoverTooltipProps), {}, {\n pointerEvents: 'none'\n });\n var popperOptions = {\n placement: 'bottom'\n };\n return /*#__PURE__*/_jsx(\"div\", {\n style: wrapperStyle,\n children: /*#__PURE__*/_jsx(Tooltip, {\n options: popperOptions,\n ref: this.handleTooltipRef,\n children: /*#__PURE__*/_jsx(\"div\", {\n className: \"link-hover-tooltip\",\n children: hoverDisplayValue\n })\n })\n });\n }, {\n max: 1\n }));\n _defineProperty(this, \"handleGotoValueChanged\", input => {\n this.setState({\n gotoValue: input,\n gotoValueManuallyChanged: true\n });\n this.debouncedSeekRow(input);\n });\n _defineProperty(this, \"debouncedSeekRow\", debounce(input => {\n this.seekRow(input);\n }, SEEK_ROW_DEBOUNCE));\n this.handleAdvancedFilterChange = this.handleAdvancedFilterChange.bind(this);\n this.handleAdvancedFilterSortChange = this.handleAdvancedFilterSortChange.bind(this);\n this.handleAdvancedFilterDone = this.handleAdvancedFilterDone.bind(this);\n this.handleAdvancedMenuOpened = this.handleAdvancedMenuOpened.bind(this);\n this.handleGotoRowOpened = this.handleGotoRowOpened.bind(this);\n this.handleGotoRowClosed = this.handleGotoRowClosed.bind(this);\n this.handleAdvancedMenuClosed = this.handleAdvancedMenuClosed.bind(this);\n this.handleAggregationChange = this.handleAggregationChange.bind(this);\n this.handleAggregationsChange = this.handleAggregationsChange.bind(this);\n this.handleAggregationEdit = this.handleAggregationEdit.bind(this);\n this.handleAnimationLoop = this.handleAnimationLoop.bind(this);\n this.handleAnimationStart = this.handleAnimationStart.bind(this);\n this.handleAnimationEnd = this.handleAnimationEnd.bind(this);\n this.handleChartChange = this.handleChartChange.bind(this);\n this.handleChartCreate = this.handleChartCreate.bind(this);\n this.handleGridError = this.handleGridError.bind(this);\n this.handleFilterBarChange = this.handleFilterBarChange.bind(this);\n this.handleFilterBarDone = this.handleFilterBarDone.bind(this);\n this.handleFilterBarTab = this.handleFilterBarTab.bind(this);\n this.handleCancel = this.handleCancel.bind(this);\n this.handleMenu = this.handleMenu.bind(this);\n this.handleMenuClose = this.handleMenuClose.bind(this);\n this.handleMenuSelect = this.handleMenuSelect.bind(this);\n this.handleMenuBack = this.handleMenuBack.bind(this);\n this.handleRequestFailed = this.handleRequestFailed.bind(this);\n this.handleSelectionChanged = this.handleSelectionChanged.bind(this);\n this.handleMovedColumnsChanged = this.handleMovedColumnsChanged.bind(this);\n this.handleHeaderGroupsChanged = this.handleHeaderGroupsChanged.bind(this);\n this.handleUpdate = this.handleUpdate.bind(this);\n this.handleTableChanged = this.handleTableChanged.bind(this);\n this.handleTooltipRef = this.handleTooltipRef.bind(this);\n this.handleViewChanged = this.handleViewChanged.bind(this);\n this.handleFormatSelection = this.handleFormatSelection.bind(this);\n this.handleColumnAlignmentChange = this.handleColumnAlignmentChange.bind(this);\n this.handleConditionalFormatCreate = this.handleConditionalFormatCreate.bind(this);\n this.handleConditionalFormatEdit = this.handleConditionalFormatEdit.bind(this);\n this.handleConditionalFormatsChange = this.handleConditionalFormatsChange.bind(this);\n this.handleConditionalFormatEditorSave = this.handleConditionalFormatEditorSave.bind(this);\n this.handleConditionalFormatEditorCancel = this.handleConditionalFormatEditorCancel.bind(this);\n this.handleUpdateCustomColumns = this.handleUpdateCustomColumns.bind(this);\n this.handleCustomColumnsChanged = this.handleCustomColumnsChanged.bind(this);\n this.handleSelectDistinctChanged = this.handleSelectDistinctChanged.bind(this);\n this.handlePendingDataUpdated = this.handlePendingDataUpdated.bind(this);\n this.handleViewportUpdated = this.handleViewportUpdated.bind(this);\n this.handlePendingCommitClicked = this.handlePendingCommitClicked.bind(this);\n this.handlePendingDiscardClicked = this.handlePendingDiscardClicked.bind(this);\n this.handleGotoRowSelectedRowNumberSubmit = this.handleGotoRowSelectedRowNumberSubmit.bind(this);\n this.focusRowInGrid = this.focusRowInGrid.bind(this);\n this.handleDownloadTable = this.handleDownloadTable.bind(this);\n this.handleDownloadTableStart = this.handleDownloadTableStart.bind(this);\n this.handleCancelDownloadTable = this.handleCancelDownloadTable.bind(this);\n this.handleDownloadCanceled = this.handleDownloadCanceled.bind(this);\n this.handleDownloadCompleted = this.handleDownloadCompleted.bind(this);\n this.handlePartitionChange = this.handlePartitionChange.bind(this);\n this.handleColumnVisibilityChanged = this.handleColumnVisibilityChanged.bind(this);\n this.handleColumnVisibilityReset = this.handleColumnVisibilityReset.bind(this);\n this.handleCrossColumnSearch = this.handleCrossColumnSearch.bind(this);\n this.handleRollupChange = this.handleRollupChange.bind(this);\n this.handleOverflowClose = this.handleOverflowClose.bind(this);\n this.handleCloseNoPastePermissionModal = this.handleCloseNoPastePermissionModal.bind(this);\n this.getColumnBoundingRect = this.getColumnBoundingRect.bind(this);\n this.handleGotoRowSelectedRowNumberChanged = this.handleGotoRowSelectedRowNumberChanged.bind(this);\n this.handleGotoValueSelectedColumnNameChanged = this.handleGotoValueSelectedColumnNameChanged.bind(this);\n this.handleGotoValueSelectedFilterChanged = this.handleGotoValueSelectedFilterChanged.bind(this);\n this.handleGotoValueChanged = this.handleGotoValueChanged.bind(this);\n this.handleGotoValueSubmitted = this.handleGotoValueSubmitted.bind(this);\n this.handleViewportUpdated = this.handleViewportUpdated.bind(this);\n this.makeQuickFilter = this.makeQuickFilter.bind(this);\n this.setFilterMap = this.setFilterMap.bind(this);\n this.grid = null;\n this.lastLoadedConfig = null;\n this.pending = new Pending();\n this.globalColumnFormats = EMPTY_ARRAY;\n this.decimalFormatOptions = {};\n this.integerFormatOptions = {};\n this.truncateNumbersWithPound = false;\n this.showEmptyStrings = true;\n this.showNullStrings = true;\n this.showExtraGroupColumn = true;\n\n // When the loading scrim started/when it should extend to the end of the screen.\n this.tableSaver = null;\n this.crossColumnRef = /*#__PURE__*/React.createRef();\n this.isAnimating = false;\n this.filterInputRef = /*#__PURE__*/React.createRef();\n this.gotoRowRef = /*#__PURE__*/React.createRef();\n this.isCopying = false;\n this.toggleFilterBarAction = {\n action: () => this.toggleFilterBar(),\n shortcut: SHORTCUTS.TABLE.TOGGLE_QUICK_FILTER\n };\n this.toggleSearchBarAction = {\n action: () => this.toggleSearchBar(),\n shortcut: SHORTCUTS.TABLE.TOGGLE_SEARCH\n };\n this.toggleGotoRowAction = {\n action: () => this.toggleGotoRow(),\n shortcut: SHORTCUTS.TABLE.GOTO_ROW\n };\n this.discardAction = {\n action: () => {\n var {\n model\n } = this.props;\n if (isEditableGridModel(model) && model.isEditable && model.pendingDataMap.size > 0) {\n this.discardPending().catch(log.error);\n }\n },\n shortcut: SHORTCUTS.INPUT_TABLE.DISCARD\n };\n this.commitAction = {\n action: () => {\n var {\n model\n } = this.props;\n if (isEditableGridModel(model) && model.isEditable && model.pendingDataMap.size > 0 && model.pendingDataErrors.size === 0) {\n this.commitPending().catch(log.error);\n }\n },\n shortcut: SHORTCUTS.INPUT_TABLE.COMMIT\n };\n this.contextActions = [this.toggleFilterBarAction, this.toggleSearchBarAction, this.toggleGotoRowAction, this.discardAction, this.commitAction];\n var {\n aggregationSettings: _aggregationSettings,\n conditionalFormats,\n customColumnFormatMap,\n columnAlignmentMap,\n isFilterBarShown: _isFilterBarShown,\n isSelectingPartition,\n partitions,\n partitionConfig,\n model: _model,\n movedColumns: movedColumnsProp,\n movedRows: movedRowsProp,\n rollupConfig: _rollupConfig,\n userColumnWidths: _userColumnWidths,\n userRowHeights,\n showSearchBar: _showSearchBar,\n searchValue: _searchValue,\n selectedSearchColumns: _selectedSearchColumns,\n invertSearchColumns: _invertSearchColumns,\n advancedFilters: _advancedFilters,\n quickFilters: _quickFilters,\n selectDistinctColumns,\n pendingDataMap,\n canCopy,\n frozenColumns,\n columnHeaderGroups\n } = props;\n var {\n dh: _dh\n } = _model;\n var _keyHandlers = [new CopyCellKeyHandler(this), new ReverseKeyHandler(this), new ClearFilterKeyHandler(this)];\n var _mouseHandlers = [new IrisGridCellOverflowMouseHandler(this), new IrisGridRowTreeMouseHandler(this), new IrisGridTokenMouseHandler(this), new IrisGridColumnSelectMouseHandler(this), new IrisGridColumnTooltipMouseHandler(this), new IrisGridSortMouseHandler(this), new IrisGridFilterMouseHandler(this), new IrisGridContextMenuHandler(this, _dh), new IrisGridDataSelectMouseHandler(this), new PendingMouseHandler(this), new IrisGridPartitionedTableMouseHandler(this)];\n if (canCopy) {\n _keyHandlers.push(new CopyKeyHandler(this));\n _mouseHandlers.push(new IrisGridCopyCellMouseHandler(this));\n }\n var _movedColumns = movedColumnsProp.length > 0 ? movedColumnsProp : _model.initialMovedColumns;\n var movedRows = movedRowsProp.length > 0 ? movedRowsProp : _model.initialMovedRows;\n var _metricCalculator = new IrisGridMetricCalculator({\n userColumnWidths: new Map(_userColumnWidths),\n userRowHeights: new Map(userRowHeights),\n movedColumns: _movedColumns,\n initialColumnWidths: new Map(_model === null || _model === void 0 ? void 0 : (_model$layoutHints = _model.layoutHints) === null || _model$layoutHints === void 0 ? void 0 : (_model$layoutHints$hi = _model$layoutHints.hiddenColumns) === null || _model$layoutHints$hi === void 0 ? void 0 : _model$layoutHints$hi.map(name => [_model.getColumnIndexByName(name), 0]))\n });\n var searchColumns = _selectedSearchColumns !== null && _selectedSearchColumns !== void 0 ? _selectedSearchColumns : [];\n var _searchFilter = CrossColumnSearch.createSearchFilter(_dh, _searchValue, searchColumns, _model.columns, _invertSearchColumns);\n this.tableUtils = new TableUtils(_dh);\n this.mouseHandlers = _mouseHandlers;\n this.keyHandlers = _keyHandlers;\n this.state = {\n isFilterBarShown: _isFilterBarShown,\n isSelectingPartition,\n focusedFilterBarColumn: null,\n metricCalculator: _metricCalculator,\n metrics: undefined,\n partitionConfig: partitionConfig !== null && partitionConfig !== void 0 ? partitionConfig : partitions && partitions.length ? {\n partitions,\n mode: 'partition'\n } : undefined,\n // setAdvancedFilter and setQuickFilter mutate the arguments\n // so we want to always use map copies from the state instead of props\n quickFilters: _quickFilters ? new Map(_quickFilters) : new Map(),\n advancedFilters: new Map(_advancedFilters),\n shownAdvancedFilter: null,\n hoverAdvancedFilter: null,\n sorts: [],\n reverse: false,\n customColumns: [],\n selectDistinctColumns,\n // selected range in table\n selectedRanges: [],\n // Current ongoing copy operation\n copyOperation: null,\n // The filter that is currently being applied. Reset after update is received\n loadingText: null,\n loadingScrimProgress: null,\n loadingSpinnerShown: false,\n loadingCancelShown: false,\n loadingBlocksGrid: false,\n movedColumns: _movedColumns,\n movedRows,\n shownColumnTooltip: null,\n formatter: new Formatter(_dh),\n isMenuShown: false,\n customColumnFormatMap: new Map(customColumnFormatMap),\n columnAlignmentMap: new Map(columnAlignmentMap),\n conditionalFormats,\n conditionalFormatEditIndex: null,\n conditionalFormatPreview: undefined,\n // Column user is hovering over for selection\n hoverSelectColumn: null,\n isTableDownloading: false,\n isReady: false,\n tableDownloadStatus: '',\n tableDownloadProgress: 0,\n tableDownloadEstimatedTime: 0,\n showSearchBar: _showSearchBar,\n searchFilter: _searchFilter,\n searchValue: _searchValue,\n selectedSearchColumns: searchColumns,\n invertSearchColumns: _invertSearchColumns,\n rollupConfig: _rollupConfig,\n rollupSelectedColumns: [],\n aggregationSettings:\n // Pin aggregations to the top if the grid is editable, so that the bottom is reserved for pending rows\n isEditableGridModel(_model) && _model.isEditable ? _objectSpread(_objectSpread({}, _aggregationSettings), {}, {\n showOnTop: true\n }) : _aggregationSettings,\n selectedAggregation: null,\n openOptions: [],\n pendingRowCount: 0,\n pendingDataMap: pendingDataMap !== null && pendingDataMap !== void 0 ? pendingDataMap : new Map(),\n pendingDataErrors: new Map(),\n pendingSavePromise: null,\n pendingSaveError: null,\n toastMessage: null,\n frozenColumns,\n showOverflowModal: false,\n showNoPastePermissionModal: false,\n noPastePermissionError: '',\n overflowText: '',\n overflowButtonTooltipProps: null,\n expandCellTooltipProps: null,\n expandTooltipDisplayValue: 'expand',\n hoverTooltipProps: null,\n hoverDisplayValue: '',\n isGotoShown: false,\n gotoRow: '',\n gotoRowError: '',\n gotoValueError: '',\n gotoValueSelectedColumnName: (_model$columns$0$name = (_model$columns$ = _model.columns[0]) === null || _model$columns$ === void 0 ? void 0 : _model$columns$.name) !== null && _model$columns$0$name !== void 0 ? _model$columns$0$name : '',\n gotoValueSelectedFilter: FilterType.eqIgnoreCase,\n gotoValue: '',\n gotoValueManuallyChanged: false,\n columnHeaderGroups: columnHeaderGroups !== null && columnHeaderGroups !== void 0 ? columnHeaderGroups : _model.initialColumnHeaderGroups\n };\n }\n componentDidMount() {\n var {\n model\n } = this.props;\n this.initState();\n this.startListening(model);\n }\n componentDidUpdate(prevProps, prevState) {\n var {\n inputFilters,\n isSelectingColumn,\n settings,\n model,\n customFilters,\n sorts\n } = this.props;\n if (model !== prevProps.model) {\n this.stopListening(prevProps.model);\n this.startListening(model);\n }\n var changedInputFilters = inputFilters !== prevProps.inputFilters ? inputFilters.filter(inputFilter => !prevProps.inputFilters.includes(inputFilter)) : [];\n if (changedInputFilters.length > 0) {\n var _advancedSettings$get;\n var {\n advancedSettings\n } = this.props;\n var replaceExistingFilters = (_advancedSettings$get = advancedSettings.get(AdvancedSettingsType.FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS)) !== null && _advancedSettings$get !== void 0 ? _advancedSettings$get : false;\n if (replaceExistingFilters) {\n this.clearGridInputField();\n this.clearCrossColumSearch();\n }\n this.startLoading('Filtering...', {\n resetRanges: true\n });\n this.applyInputFilters(changedInputFilters, replaceExistingFilters);\n }\n if (isSelectingColumn !== prevProps.isSelectingColumn) {\n this.resetColumnSelection();\n }\n if (settings !== prevProps.settings) {\n this.updateFormatterSettings(settings);\n }\n if (customFilters !== prevProps.customFilters) {\n this.startLoading('Filtering...', {\n resetRanges: true\n });\n }\n if (sorts !== prevProps.sorts) {\n this.updateSorts(sorts);\n }\n var {\n loadingScrimStartTime,\n loadingScrimFinishTime\n } = this;\n if (loadingScrimStartTime != null && loadingScrimFinishTime != null) {\n window.requestAnimationFrame(() => {\n var now = Date.now();\n var currentTime = now - loadingScrimStartTime;\n var totalTime = loadingScrimFinishTime - loadingScrimStartTime;\n var loadingScrimProgress = Math.min(currentTime / totalTime, 1);\n if (loadingScrimFinishTime < now) {\n this.loadingScrimStartTime = undefined;\n this.loadingScrimFinishTime = undefined;\n }\n this.setState(state => {\n if (state.loadingScrimProgress == null) {\n log.debug2('Ignoring scrim update because loading cancelled.');\n return null;\n }\n return {\n loadingScrimProgress\n };\n });\n });\n }\n var {\n openOptions\n } = this.state;\n if (openOptions !== prevState.openOptions) {\n var isAggEditType = option => option.type === OptionType.AGGREGATION_EDIT;\n if (!openOptions.some(isAggEditType) && prevState.openOptions.some(isAggEditType)) {\n this.removeEmptyAggregations();\n }\n }\n this.sendStateChange();\n }\n componentWillUnmount() {\n var {\n model\n } = this.props;\n this.stopListening(model);\n this.pending.cancel();\n this.updateSearchFilter.cancel();\n if (this.loadingTimer) {\n clearTimeout(this.loadingTimer);\n }\n this.handleDownloadProgressUpdate.cancel();\n if (this.animationFrame !== undefined) {\n cancelAnimationFrame(this.animationFrame);\n }\n this.showViewportLoading.cancel();\n }\n\n // When the loading scrim started/when it should extend to the end of the screen.\n\n get gridWrapper() {\n var _this$grid$canvasWrap, _this$grid;\n return (_this$grid$canvasWrap = (_this$grid = this.grid) === null || _this$grid === void 0 ? void 0 : _this$grid.canvasWrapper.current) !== null && _this$grid$canvasWrap !== void 0 ? _this$grid$canvasWrap : null;\n }\n\n /**\n * Builds formatColumns array based on the provided formatting rules with optional preview\n * @param columns Array of columns\n * @param rulesParam Array of formatting rules\n * @param preview Optional temporary formatting rule for previewing live changes\n * @param editIndex Index in the rulesParam array to replace with the preview, null if preview not applicable\n * @returns Format columns array\n */\n\n getKeyHandlers() {\n var {\n keyHandlers\n } = this.props;\n return this.getCachedKeyHandlers(keyHandlers);\n }\n getMetricState() {\n var _this$grid2;\n var gridMetricState = (_this$grid2 = this.grid) === null || _this$grid2 === void 0 ? void 0 : _this$grid2.getMetricState();\n if (gridMetricState == null) {\n return undefined;\n }\n var {\n advancedFilters,\n hoverSelectColumn,\n isFilterBarShown,\n isMenuShown,\n loadingScrimProgress,\n quickFilters,\n sorts,\n reverse,\n rollupConfig\n } = this.state;\n var {\n model,\n isSelectingColumn\n } = this.props;\n return _objectSpread(_objectSpread({}, gridMetricState), this.getCachedStateOverride(model, this.getTheme(), hoverSelectColumn, isFilterBarShown, isSelectingColumn, loadingScrimProgress, quickFilters, advancedFilters, sorts, reverse, rollupConfig, isMenuShown));\n }\n get renderer() {\n var {\n renderer\n } = this.props;\n return this.getCachedRenderer(renderer);\n }\n getMouseHandlers() {\n var {\n mouseHandlers\n } = this.props;\n return this.getCachedMouseHandlers(mouseHandlers);\n }\n getValueForCell(columnIndex, rowIndex) {\n var rawValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var {\n model\n } = this.props;\n var {\n dh\n } = model;\n var modelColumn = this.getModelColumn(columnIndex);\n var modelRow = this.getModelRow(rowIndex);\n if (rawValue && modelColumn != null && modelRow != null) {\n var _value = model.valueForCell(modelColumn, modelRow);\n if (TableUtils.isDateType(model.columns[modelColumn].type)) {\n // The returned value is just a long value, we should return the value formatted as a full date string\n var {\n formatter\n } = model;\n return dh.i18n.DateTimeFormat.format(UNFORMATTED_DATE_PATTERN, _value, dh.i18n.TimeZone.getTimeZone(formatter.timeZone));\n }\n return _value;\n }\n if (rawValue) {\n return null;\n }\n if (modelColumn != null && modelRow != null) {\n return model.textForCell(modelColumn, modelRow);\n }\n return '';\n }\n getModelColumn(columnIndex) {\n var {\n metrics\n } = this.state;\n assertNotNull(metrics);\n var {\n modelColumns\n } = metrics;\n if (modelColumns == null) {\n return null;\n }\n return columnIndex != null ? modelColumns.get(columnIndex) : null;\n }\n getModelRow(rowIndex) {\n var {\n metrics\n } = this.state;\n assertNotNull(metrics);\n var {\n modelRows\n } = metrics;\n if (modelRows == null) {\n return null;\n }\n return rowIndex != null ? modelRows.get(rowIndex) : null;\n }\n getTheme() {\n var _ref4;\n var {\n model,\n theme,\n density\n } = this.props;\n var {\n theme: contextTheme,\n density: contextDensity\n } = this.context;\n return this.getCachedTheme(contextTheme, theme, (_ref4 = isEditableGridModel(model) && model.isEditable) !== null && _ref4 !== void 0 ? _ref4 : false, model.floatingTopRowCount + model.floatingBottomRowCount, density !== null && density !== void 0 ? density : contextDensity);\n }\n getVisibleColumn(modelIndex) {\n var {\n movedColumns\n } = this.state;\n return GridUtils.getVisibleIndex(modelIndex, movedColumns);\n }\n makeQuickFilter(column, text, timeZone) {\n try {\n return this.tableUtils.makeQuickFilter(column, text, timeZone);\n } catch (err) {\n log.error('Error creating quick filter', err);\n }\n return null;\n }\n\n /**\n * Applies the provided input filters as quick filters,\n * and clears any existing quickFilters or advancedFilters on that column\n * @param inputFilters Array of input filters to apply\n * @param replaceExisting If true, new filters will replace the existing ones, instead of merging\n */\n applyInputFilters(inputFilters) {\n var replaceExisting = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var {\n model\n } = this.props;\n var {\n advancedFilters,\n quickFilters\n } = this.state;\n var newAdvancedFilters = replaceExisting ? new Map() : new Map(advancedFilters);\n var newQuickFilters = replaceExisting ? new Map() : new Map(quickFilters);\n var isChanged = replaceExisting && advancedFilters.size > 0;\n inputFilters.forEach(_ref5 => {\n var {\n name,\n type,\n value\n } = _ref5;\n var modelIndex = model.columns.findIndex(_ref6 => {\n var {\n name: columnName,\n type: columnType\n } = _ref6;\n return columnName === name && columnType === type;\n });\n if (modelIndex >= 0) {\n isChanged = newAdvancedFilters.delete(modelIndex) || isChanged;\n isChanged = this.applyQuickFilter(modelIndex, value, newQuickFilters) || isChanged;\n } else {\n log.error('Unable to find column for inputFilter', name, type, value);\n }\n });\n if (isChanged) {\n this.setState({\n quickFilters: newQuickFilters,\n advancedFilters: newAdvancedFilters\n });\n }\n }\n\n /**\n * Applies a quick filter\n * @param modelIndex The index in the model of the column to set\n * @param value The string value to set to the quick filter\n * @param quickFilters The quick filters map\n * @returns True if the filters have changed because this quick filter was applied\n */\n applyQuickFilter(modelIndex, value, quickFilters) {\n var {\n model\n } = this.props;\n var {\n formatter\n } = model;\n var column = model.columns[modelIndex];\n if (value != null && \"\".concat(value).trim().length > 0) {\n var quickFilter = quickFilters.get(modelIndex);\n if (quickFilter != null) {\n var {\n text\n } = quickFilter;\n if (text === value) {\n log.debug2('Ignoring change to existing filter');\n return false;\n }\n }\n quickFilters.set(modelIndex, {\n text: value,\n filter: this.makeQuickFilter(column, value, formatter.timeZone)\n });\n return true;\n }\n return quickFilters.delete(modelIndex);\n }\n setAdvancedFilterMap(advancedFilters) {\n this.setState({\n advancedFilters\n });\n }\n setAdvancedFilter(modelIndex, filter, options) {\n log.debug('Setting advanced filter', modelIndex, filter);\n this.startLoading('Filtering...', {\n resetRanges: true\n });\n this.setState(_ref7 => {\n var {\n advancedFilters\n } = _ref7;\n var newAdvancedFilters = new Map(advancedFilters);\n if (filter == null) {\n newAdvancedFilters.delete(modelIndex);\n } else {\n newAdvancedFilters.set(modelIndex, {\n filter,\n options\n });\n }\n return {\n advancedFilters: newAdvancedFilters\n };\n });\n }\n\n /**\n * Sets a quick filter against the provided column\n * @param modelIndex The index in the model for the column this filter is applied to\n * @param filter A filter to apply to the column, or null if there was an error\n * @param text The original text the filter was created with\n */\n setQuickFilter(modelIndex, filter, text) {\n log.debug('Setting quick filter', modelIndex, filter, text);\n this.startLoading('Filtering...', {\n resetRanges: true\n });\n this.setState(_ref8 => {\n var {\n quickFilters\n } = _ref8;\n var newQuickFilters = new Map(quickFilters);\n newQuickFilters.set(modelIndex, {\n filter,\n text\n });\n return {\n quickFilters: newQuickFilters\n };\n });\n }\n\n /**\n * Set grid filters based on the filter map\n * @param filterMap Filter map\n */\n setFilterMap(filterMap) {\n var _advancedSettings$get2;\n log.debug('setFilterMap', filterMap);\n var {\n advancedSettings\n } = this.props;\n var clearFiltersOnLinkerFilterUpdate = (_advancedSettings$get2 = advancedSettings.get(AdvancedSettingsType.LINK_CHANGE_CLEARS_ALL_FILTERS)) !== null && _advancedSettings$get2 !== void 0 ? _advancedSettings$get2 : false;\n if (clearFiltersOnLinkerFilterUpdate) {\n this.clearAllFilters();\n }\n var {\n model\n } = this.props;\n filterMap.forEach((_ref9, columnName) => {\n var {\n columnType,\n filterList\n } = _ref9;\n var column = model.columns.find(c => c.name === columnName && c.type === columnType);\n if (column == null) {\n return;\n }\n var columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n var combinedText = IrisGridUtils.combineFiltersFromList(columnType, filterList);\n if (combinedText.length === 0) {\n this.removeQuickFilter(columnIndex);\n } else {\n var {\n formatter\n } = model;\n this.setQuickFilter(columnIndex, this.makeQuickFilter(column, combinedText, formatter.timeZone), \"\".concat(combinedText));\n }\n });\n }\n removeColumnFilter(modelRange) {\n this.startLoading('Filtering...', {\n resetRanges: true\n });\n var clearRange = Array.isArray(modelRange) ? modelRange : [modelRange, modelRange];\n this.setState(_ref10 => {\n var {\n advancedFilters,\n quickFilters\n } = _ref10;\n var newAdvancedFilters = advancedFilters ? new Map(advancedFilters) : new Map();\n var newQuickFilters = quickFilters ? new Map(quickFilters) : new Map();\n newAdvancedFilters.forEach((_, column) => {\n if (column >= clearRange[0] && column <= clearRange[1]) {\n newAdvancedFilters.delete(column);\n }\n });\n newQuickFilters.forEach((_, column) => {\n if (column >= clearRange[0] && column <= clearRange[1]) {\n newQuickFilters.delete(column);\n }\n });\n return {\n quickFilters: newQuickFilters,\n advancedFilters: newAdvancedFilters\n };\n });\n }\n removeQuickFilter(modelColumn) {\n this.startLoading('Clearing Filter...', {\n resetRanges: true\n });\n this.setState(_ref11 => {\n var {\n quickFilters\n } = _ref11;\n var newQuickFilters = new Map(quickFilters);\n newQuickFilters.delete(modelColumn);\n return {\n quickFilters: newQuickFilters\n };\n });\n }\n clearAllFilters() {\n log.debug('Clearing all filters');\n var {\n advancedFilters,\n quickFilters,\n searchFilter\n } = this.state;\n if (quickFilters.size === 0 && advancedFilters.size === 0 && searchFilter === null) {\n return;\n }\n\n // if there is an active quick filter input field, reset it as well\n this.clearGridInputField();\n this.startLoading('Clearing Filters...', {\n resetRanges: true\n });\n this.setState({\n quickFilters: new Map(),\n advancedFilters: new Map(),\n searchValue: '',\n searchFilter: undefined\n });\n }\n clearAllAggregations() {\n log.debug('Clearing all aggregations');\n this.setState({\n aggregationSettings: DEFAULT_AGGREGATION_SETTINGS\n });\n }\n clearCrossColumSearch() {\n log.debug('Clearing cross-column search');\n this.setState({\n searchValue: '',\n searchFilter: undefined\n });\n }\n clearGridInputField() {\n if (this.filterInputRef.current != null) {\n this.filterInputRef.current.setValue('');\n }\n }\n\n /**\n * Rebuilds all the current filters. Necessary if something like the time zone has changed.\n */\n rebuildFilters() {\n var {\n model\n } = this.props;\n var {\n advancedFilters,\n quickFilters\n } = this.state;\n if (advancedFilters.size === 0 && quickFilters.size === 0) {\n log.debug('No filters to rebuild');\n return;\n }\n var {\n columns,\n formatter\n } = model;\n log.debug('Rebuilding filters');\n var newAdvancedFilters = new Map();\n var newQuickFilters = new Map();\n advancedFilters.forEach((value, key) => {\n var {\n options\n } = value;\n var column = columns[key];\n var filter = this.tableUtils.makeAdvancedFilter(column, options, formatter.timeZone);\n newAdvancedFilters.set(key, {\n options,\n filter\n });\n });\n quickFilters.forEach((value, key) => {\n var {\n text\n } = value;\n var column = columns[key];\n newQuickFilters.set(key, {\n text,\n filter: this.makeQuickFilter(column, text, formatter.timeZone)\n });\n });\n this.startLoading('Rebuilding filters...', {\n resetRanges: true\n });\n this.setState({\n quickFilters: newQuickFilters,\n advancedFilters: newAdvancedFilters\n });\n }\n setFilters(_ref12) {\n var {\n quickFilters,\n advancedFilters\n } = _ref12;\n this.setState({\n quickFilters,\n advancedFilters\n });\n }\n updateFormatterSettings(settings) {\n var _settings$defaultDeci, _settings$defaultInte, _settings$truncateNum, _settings$showEmptySt, _settings$showNullStr, _settings$showExtraGr;\n var forceUpdate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var globalColumnFormats = FormatterUtils.getColumnFormats(settings);\n var dateTimeFormatterOptions = FormatterUtils.getDateTimeFormatterOptions(settings);\n var defaultDecimalFormatOptions = (_settings$defaultDeci = settings === null || settings === void 0 ? void 0 : settings.defaultDecimalFormatOptions) !== null && _settings$defaultDeci !== void 0 ? _settings$defaultDeci : {};\n var defaultIntegerFormatOptions = (_settings$defaultInte = settings === null || settings === void 0 ? void 0 : settings.defaultIntegerFormatOptions) !== null && _settings$defaultInte !== void 0 ? _settings$defaultInte : {};\n var truncateNumbersWithPound = (_settings$truncateNum = settings === null || settings === void 0 ? void 0 : settings.truncateNumbersWithPound) !== null && _settings$truncateNum !== void 0 ? _settings$truncateNum : false;\n var showEmptyStrings = (_settings$showEmptySt = settings === null || settings === void 0 ? void 0 : settings.showEmptyStrings) !== null && _settings$showEmptySt !== void 0 ? _settings$showEmptySt : true;\n var showNullStrings = (_settings$showNullStr = settings === null || settings === void 0 ? void 0 : settings.showNullStrings) !== null && _settings$showNullStr !== void 0 ? _settings$showNullStr : true;\n var showExtraGroupColumn = (_settings$showExtraGr = settings === null || settings === void 0 ? void 0 : settings.showExtraGroupColumn) !== null && _settings$showExtraGr !== void 0 ? _settings$showExtraGr : true;\n var isColumnFormatChanged = !deepEqual(this.globalColumnFormats, globalColumnFormats);\n var isDateFormattingChanged = !deepEqual(this.dateTimeFormatterOptions, dateTimeFormatterOptions);\n var isDecimalFormattingChanged = !deepEqual(this.decimalFormatOptions, settings === null || settings === void 0 ? void 0 : settings.defaultDecimalFormatOptions);\n var isIntegerFormattingChanged = !deepEqual(this.integerFormatOptions, defaultIntegerFormatOptions);\n var isTruncateNumbersChanged = this.truncateNumbersWithPound !== truncateNumbersWithPound;\n var isShowEmptyStringsChanged = this.showEmptyStrings !== showEmptyStrings;\n var isShowNullStringsChanged = this.showNullStrings !== showNullStrings;\n var isShowExtraGroupColumnChanged = this.showExtraGroupColumn !== showExtraGroupColumn;\n if (isColumnFormatChanged || isDateFormattingChanged || isDecimalFormattingChanged || isIntegerFormattingChanged || isTruncateNumbersChanged || isShowEmptyStringsChanged || isShowNullStringsChanged || isShowExtraGroupColumnChanged) {\n this.globalColumnFormats = globalColumnFormats;\n this.dateTimeFormatterOptions = dateTimeFormatterOptions;\n this.decimalFormatOptions = defaultDecimalFormatOptions;\n this.integerFormatOptions = defaultIntegerFormatOptions;\n this.truncateNumbersWithPound = truncateNumbersWithPound;\n this.showEmptyStrings = showEmptyStrings;\n this.showNullStrings = showNullStrings;\n this.showExtraGroupColumn = showExtraGroupColumn;\n this.updateFormatter({}, forceUpdate);\n if (isDateFormattingChanged && forceUpdate) {\n this.rebuildFilters();\n }\n }\n }\n updateFormatter(updatedFormats) {\n var _this$globalColumnFor;\n var forceUpdate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var {\n customColumnFormatMap\n } = this.state;\n var {\n model\n } = this.props;\n var update = _objectSpread({\n customColumnFormatMap\n }, updatedFormats);\n var mergedColumnFormats = [...((_this$globalColumnFor = this.globalColumnFormats) !== null && _this$globalColumnFor !== void 0 ? _this$globalColumnFor : []), ...update.customColumnFormatMap.values()];\n var formatter = new Formatter(model.dh, mergedColumnFormats, this.dateTimeFormatterOptions, this.decimalFormatOptions, this.integerFormatOptions, this.truncateNumbersWithPound, this.showEmptyStrings, this.showNullStrings);\n log.debug('updateFormatter', this.globalColumnFormats, mergedColumnFormats);\n this.setState(_objectSpread(_objectSpread({}, update), {}, {\n formatter\n }), () => {\n if (forceUpdate && this.grid) {\n this.grid.forceUpdate();\n }\n });\n }\n initFormatter() {\n var {\n settings\n } = this.props;\n this.updateFormatterSettings(settings);\n }\n initState() {\n var {\n model\n } = this.props;\n try {\n if (isPartitionedGridModel(model) && model.isPartitionRequired) {\n this.loadPartitionsTable(model);\n } else {\n this.loadTableState();\n }\n } catch (error) {\n this.handleTableLoadError(error);\n }\n }\n loadTableState() {\n var {\n applyInputFiltersOnInit,\n inputFilters,\n sorts,\n model,\n reverse,\n reverseType,\n customColumns,\n searchValue,\n selectedSearchColumns,\n invertSearchColumns\n } = this.props;\n var searchColumns = selectedSearchColumns !== null && selectedSearchColumns !== void 0 ? selectedSearchColumns : [];\n var searchFilter = CrossColumnSearch.createSearchFilter(model.dh, searchValue, searchColumns, model.columns, invertSearchColumns);\n if (applyInputFiltersOnInit) {\n // There may be more than one input filter on the same column with value === '' applied last\n // We don't want to skip it here, so only excluding the ones that were never applied (null)\n var inputFiltersWithValues = inputFilters.filter(inputFilter => inputFilter.value != null);\n this.applyInputFilters(inputFiltersWithValues);\n }\n this.setState({\n sorts,\n reverse: reverse || reverseType === TableUtils.REVERSE_TYPE.POST_SORT,\n customColumns,\n isReady: true,\n searchFilter\n });\n this.initFormatter();\n }\n loadPartitionsTable(model) {\n var _this = this;\n return _asyncToGenerator(function* () {\n try {\n var {\n partitionConfig\n } = _this.state;\n if (!partitionConfig) {\n _this.startLoading('Loading partitions...', {\n loadingCancelShown: false,\n resetRanges: true\n });\n _this.initializePartitionConfig(model);\n }\n _this.setState({\n isSelectingPartition: true\n }, _this.loadTableState);\n } catch (error) {\n if (!PromiseUtils.isCanceled(error)) {\n _this.handleTableLoadError(error);\n }\n }\n })();\n }\n\n /**\n * Initialize the partition config to the default partition.\n */\n initializePartitionConfig(model) {\n var _this2 = this;\n return _asyncToGenerator(function* () {\n var keyTable = yield _this2.pending.add(model.partitionKeysTable(), resolved => resolved.close());\n var {\n dh\n } = model;\n var sorts = keyTable.columns.map(column => column.sort().desc());\n keyTable.applySort(sorts);\n keyTable.setViewport(0, 0);\n\n // We want to wait for the first UPDATED event instead of just getting viewport data here\n // It's possible that the key table does not have any rows of data yet, so just wait until it does have one\n keyTable.addEventListener(dh.Table.EVENT_UPDATED, event => {\n try {\n var {\n detail: _data\n } = event;\n if (_data.rows.length === 0) {\n // We received an update and the table is still empty. Stop showing the loading spinner so we know\n _this2.stopLoading();\n return;\n }\n var row = _data.rows[0];\n var values = keyTable.columns.map(column => row.get(column));\n var newPartition = {\n partitions: values,\n mode: model.isPartitionAwareSourceTable ? 'partition' : 'keys'\n };\n keyTable.close();\n _this2.setState({\n loadingSpinnerShown: false,\n partitionConfig: newPartition\n });\n } catch (e) {\n keyTable.close();\n log.error('Error getting initial partition config', e);\n }\n });\n })();\n }\n\n /**\n * Selects a partition key from the table based on the provided row index.\n *\n * @param rowIndex The index of the row from which the partition will be selected.\n * @returns A promise that resolves when the partition key has been successfully selected.\n */\n selectPartitionKeyFromTable(rowIndex) {\n var {\n model\n } = this.props;\n assertNotNull(rowIndex);\n if (isPartitionedGridModel(model)) {\n var _data2 = this.getRowDataMap(rowIndex);\n var partitionColumnSet = new Set(model.partitionColumns.map(column => column.name));\n var values = Object.entries(_data2).filter(_ref13 => {\n var [key, _] = _ref13;\n return partitionColumnSet.has(key);\n }).map(_ref14 => {\n var [key, columnData] = _ref14;\n return columnData.value;\n });\n var newPartition = {\n partitions: values,\n mode: 'partition'\n };\n this.setState({\n isSelectingPartition: true,\n partitionConfig: newPartition\n });\n }\n }\n copyCell(columnIndex, rowIndex) {\n var rawValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var {\n canCopy\n } = this.props;\n if (canCopy) {\n var _value2 = String(this.getValueForCell(columnIndex, rowIndex, rawValue));\n copyToClipboard(_value2).catch(e => log.error('Unable to copy cell', e));\n } else {\n log.error('Attempted to copyCell for user without copy permission.');\n }\n }\n copyColumnHeader(columnIndex) {\n var columnDepth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n if (columnIndex === null) {\n return;\n }\n var {\n canCopy\n } = this.props;\n var {\n movedColumns\n } = this.state;\n if (canCopy) {\n var copyOperation = {\n columnIndex,\n columnDepth,\n movedColumns\n };\n this.setState({\n copyOperation\n });\n } else {\n log.error('Attempted copyColumnHeader for user without copy permission.');\n }\n }\n\n /**\n * Copy the provided ranges to the clipboard\n * @paramranges The ranges to copy\n * @param includeHeaders Include the headers or not\n * @param formatValues Whether to format values or not\n * @param error Error message if one occurred\n */\n copyRanges(ranges) {\n var includeHeaders = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var formatValues = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n var error = arguments.length > 3 ? arguments[3] : undefined;\n var {\n model,\n canCopy\n } = this.props;\n var {\n metricCalculator,\n movedColumns\n } = this.state;\n var userColumnWidths = metricCalculator.getUserColumnWidths();\n if (canCopy) {\n var copyOperation = {\n ranges: GridRange.boundedRanges(ranges, model.columnCount, model.rowCount),\n includeHeaders,\n formatValues,\n movedColumns,\n userColumnWidths,\n error\n };\n this.setState({\n copyOperation\n });\n } else {\n log.error('Attempted copyRanges for user without copy permission.');\n }\n }\n startLoading(loadingText) {\n var {\n resetRanges = false,\n loadingCancelShown = true,\n loadingBlocksGrid = true\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.setState({\n loadingText,\n loadingCancelShown,\n loadingBlocksGrid\n });\n var theme = this.getTheme();\n if (resetRanges && this.grid) {\n this.grid.clearSelectedRanges();\n this.grid.setViewState({\n top: 0\n }, true);\n }\n if (this.loadingScrimStartTime == null) {\n var _this$gridWrapper$get, _this$gridWrapper;\n var {\n minScrimTransitionTime,\n maxScrimTransitionTime\n } = theme;\n assertNotNull(minScrimTransitionTime);\n assertNotNull(maxScrimTransitionTime);\n var height = (_this$gridWrapper$get = (_this$gridWrapper = this.gridWrapper) === null || _this$gridWrapper === void 0 ? void 0 : _this$gridWrapper.getBoundingClientRect().height) !== null && _this$gridWrapper$get !== void 0 ? _this$gridWrapper$get : 0;\n var scrimTransitionTime = Math.max(minScrimTransitionTime, Math.min(height / 2, maxScrimTransitionTime));\n this.loadingScrimStartTime = Date.now();\n this.loadingScrimFinishTime = this.loadingScrimStartTime + scrimTransitionTime;\n this.setState({\n loadingScrimProgress: 0\n });\n this.loadingTimer = setTimeout(() => {\n this.setState({\n loadingSpinnerShown: true\n });\n }, IrisGrid.loadingSpinnerDelay);\n }\n }\n stopLoading() {\n this.showViewportLoading.cancel();\n this.loadingScrimStartTime = undefined;\n this.loadingScrimFinishTime = undefined;\n this.setState({\n loadingText: null,\n loadingScrimProgress: null,\n loadingSpinnerShown: false,\n loadingCancelShown: false\n });\n if (this.loadingTimer != null) {\n clearTimeout(this.loadingTimer);\n this.loadingTimer = undefined;\n }\n }\n\n /**\n * Rolls back the table state to the last known safe state, or if that's not available then clears all sorts/filters/custom columns.\n */\n rollback() {\n if (this.lastLoadedConfig) {\n log.debug('loading last loading config', this.lastLoadedConfig);\n var {\n advancedFilters,\n aggregationSettings,\n customColumns,\n quickFilters,\n reverse,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts\n } = this.lastLoadedConfig;\n this.lastLoadedConfig = null;\n this.setState({\n advancedFilters,\n aggregationSettings,\n customColumns,\n quickFilters,\n reverse,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts\n });\n } else {\n log.debug('remove all sorts, filters, and custom columns');\n this.setState({\n advancedFilters: new Map(),\n aggregationSettings: DEFAULT_AGGREGATION_SETTINGS,\n customColumns: [],\n quickFilters: new Map(),\n reverse: false,\n rollupConfig: undefined,\n selectDistinctColumns: [],\n sorts: []\n });\n }\n }\n\n /**\n * Check if we can rollback the current state to a safe state.\n * @returns true if there's a previously known safe state or if some of the current state isn't empty.\n */\n canRollback() {\n return this.lastLoadedConfig != null || !isEmptyConfig(this.state);\n }\n startListening(model) {\n model.addEventListener(IrisGridModel.EVENT.UPDATED, this.handleUpdate);\n model.addEventListener(IrisGridModel.EVENT.REQUEST_FAILED, this.handleRequestFailed);\n model.addEventListener(IrisGridModel.EVENT.COLUMNS_CHANGED, this.handleCustomColumnsChanged);\n model.addEventListener(IrisGridModel.EVENT.PENDING_DATA_UPDATED, this.handlePendingDataUpdated);\n model.addEventListener(IrisGridModel.EVENT.VIEWPORT_UPDATED, this.handleViewportUpdated);\n model.addEventListener(IrisGridModel.EVENT.TABLE_CHANGED, this.handleTableChanged);\n }\n stopListening(model) {\n model.removeEventListener(IrisGridModel.EVENT.UPDATED, this.handleUpdate);\n model.removeEventListener(IrisGridModel.EVENT.REQUEST_FAILED, this.handleRequestFailed);\n model.removeEventListener(IrisGridModel.EVENT.COLUMNS_CHANGED, this.handleCustomColumnsChanged);\n model.removeEventListener(IrisGridModel.EVENT.PENDING_DATA_UPDATED, this.handlePendingDataUpdated);\n model.removeEventListener(IrisGridModel.EVENT.VIEWPORT_UPDATED, this.handleViewportUpdated);\n model.removeEventListener(IrisGridModel.EVENT.TABLE_CHANGED, this.handleTableChanged);\n }\n focus() {\n var _this$grid3;\n (_this$grid3 = this.grid) === null || _this$grid3 === void 0 ? void 0 : _this$grid3.focus();\n }\n focusFilterBar(column) {\n var {\n movedColumns\n } = this.state;\n var {\n model\n } = this.props;\n var {\n columnCount\n } = model;\n var modelColumn = GridUtils.getModelIndex(column, movedColumns);\n if (column == null || column < 0 || columnCount <= column || !model.isFilterable(modelColumn)) {\n this.setState({\n focusedFilterBarColumn: null\n });\n return;\n }\n var {\n metricCalculator,\n metrics\n } = this.state;\n assertNotNull(metrics);\n var {\n left,\n rightVisible,\n lastLeft\n } = metrics;\n if (column < left) {\n var _this$grid4;\n (_this$grid4 = this.grid) === null || _this$grid4 === void 0 ? void 0 : _this$grid4.setViewState({\n left: column\n }, true);\n } else if (rightVisible < column) {\n var _this$grid5;\n var metricState = this.getMetricState();\n assertNotNull(metricState);\n var newLeft = metricCalculator.getLastLeft(metricState, column, metricCalculator.getVisibleWidth(metricState));\n (_this$grid5 = this.grid) === null || _this$grid5 === void 0 ? void 0 : _this$grid5.setViewState({\n left: Math.min(newLeft, lastLeft),\n leftOffset: 0\n }, true);\n }\n this.lastFocusedFilterBarColumn = column;\n this.setState({\n focusedFilterBarColumn: column,\n isFilterBarShown: true\n });\n }\n hideColumnByVisibleIndex(columnVisibleIndex) {\n var _this$grid6;\n var {\n metricCalculator,\n movedColumns\n } = this.state;\n metricCalculator.setColumnWidth(GridUtils.getModelIndex(columnVisibleIndex, movedColumns), 0);\n (_this$grid6 = this.grid) === null || _this$grid6 === void 0 ? void 0 : _this$grid6.forceUpdate();\n }\n freezeColumnByColumnName(columnName) {\n var {\n frozenColumns,\n movedColumns\n } = this.state;\n var {\n model\n } = this.props;\n log.debug2('freezing column', columnName);\n var allFrozenColumns = frozenColumns == null ? new Set(model.frozenColumns) : new Set(frozenColumns);\n allFrozenColumns.add(columnName);\n var modelIndex = model.getColumnIndexByName(columnName);\n assertNotNull(modelIndex);\n var visibleIndex = GridUtils.getVisibleIndex(modelIndex, movedColumns);\n var newMovedColumns = GridUtils.moveItem(visibleIndex, allFrozenColumns.size - 1, movedColumns);\n this.setState({\n frozenColumns: [...allFrozenColumns],\n movedColumns: newMovedColumns\n });\n }\n unFreezeColumnByColumnName(columnName) {\n var {\n frozenColumns,\n movedColumns\n } = this.state;\n var {\n model\n } = this.props;\n log.debug2('unfreezing column', columnName);\n var allFrozenColumns = frozenColumns == null ? new Set(model.frozenColumns) : new Set(frozenColumns);\n allFrozenColumns.delete(columnName);\n var modelIndex = model.getColumnIndexByName(columnName);\n assertNotNull(modelIndex);\n var visibleIndex = GridUtils.getVisibleIndex(modelIndex, movedColumns);\n\n // Move to after remaining frozen columns and front columns\n var newMovedColumns = GridUtils.moveItem(visibleIndex, allFrozenColumns.size + model.frontColumns.length, movedColumns);\n this.setState({\n frozenColumns: [...allFrozenColumns],\n movedColumns: newMovedColumns\n });\n }\n toggleExpandColumn(modelIndex) {\n log.debug2('Toggle expand column', modelIndex);\n var {\n model\n } = this.props;\n if (isExpandableColumnGridModel(model) && model.hasExpandableColumns) {\n model.setColumnExpanded(modelIndex, !model.isColumnExpanded(modelIndex));\n }\n }\n expandAllColumns() {\n log.debug2('Expand all columns');\n var {\n model\n } = this.props;\n if (isExpandableColumnGridModel(model) && model.isExpandAllColumnsAvailable) {\n model.expandAllColumns();\n }\n }\n collapseAllColumns() {\n log.debug2('Collapse all columns');\n var {\n model\n } = this.props;\n if (isExpandableColumnGridModel(model) && model.isExpandAllColumnsAvailable) {\n model.collapseAllColumns();\n }\n }\n handleColumnVisibilityChanged(modelIndexes, isVisible) {\n var _this$grid7;\n var {\n metricCalculator,\n metrics\n } = this.state;\n assertNotNull(metrics);\n if (isVisible) {\n modelIndexes.forEach(modelIndex => {\n var defaultWidth = metricCalculator.initialColumnWidths.get(modelIndex);\n var calculatedWidth = getOrThrow(metrics.calculatedColumnWidths, modelIndex);\n if (defaultWidth !== calculatedWidth) {\n metricCalculator.setColumnWidth(modelIndex, calculatedWidth);\n } else {\n metricCalculator.resetColumnWidth(modelIndex);\n }\n });\n } else {\n modelIndexes.forEach(modelIndex => {\n metricCalculator.setColumnWidth(modelIndex, 0);\n });\n }\n (_this$grid7 = this.grid) === null || _this$grid7 === void 0 ? void 0 : _this$grid7.forceUpdate();\n }\n handleColumnVisibilityReset() {\n var _model$layoutHints$fr, _model$layoutHints2;\n var {\n metricCalculator\n } = this.state;\n var {\n model\n } = this.props;\n metricCalculator.resetAllColumnWidths();\n this.handleMovedColumnsChanged(model.initialMovedColumns);\n this.handleHeaderGroupsChanged(model.initialColumnHeaderGroups);\n this.setState({\n frozenColumns: (_model$layoutHints$fr = (_model$layoutHints2 = model.layoutHints) === null || _model$layoutHints2 === void 0 ? void 0 : _model$layoutHints2.frozenColumns) !== null && _model$layoutHints$fr !== void 0 ? _model$layoutHints$fr : []\n });\n }\n handleCrossColumnSearch(searchValue, selectedSearchColumns, invertSearchColumns) {\n var {\n model\n } = this.props;\n this.startLoading('Searching...');\n this.updateSearchFilter(searchValue, selectedSearchColumns, model.columns, invertSearchColumns);\n this.setState({\n searchValue,\n selectedSearchColumns,\n invertSearchColumns\n });\n }\n handleAnimationLoop() {\n var _this$grid8;\n (_this$grid8 = this.grid) === null || _this$grid8 === void 0 ? void 0 : _this$grid8.updateCanvas();\n if (this.isAnimating) {\n this.animationFrame = requestAnimationFrame(this.handleAnimationLoop);\n }\n }\n handleAnimationStart() {\n log.debug2('handleAnimationStart');\n this.isAnimating = true;\n this.animationFrame = requestAnimationFrame(this.handleAnimationLoop);\n }\n handleAnimationEnd() {\n log.debug2('handleAnimationEnd');\n this.isAnimating = false;\n }\n handlePartitionChange(partitionConfig) {\n this.startLoading('Partitioning...');\n var {\n partitionConfig: prevConfig\n } = this.state;\n if (prevConfig !== partitionConfig) {\n this.setState({\n partitionConfig\n });\n }\n }\n handleTableLoadError(error) {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n log.error(error);\n var {\n onError\n } = this.props;\n onError(error);\n }\n handleViewportUpdated() {\n var {\n model\n } = this.props;\n var {\n loadingText,\n loadingSpinnerShown\n } = this.state;\n var loadingMessage = 'Waiting for viewport...';\n\n // pending and no timer already exists\n if (model.isViewportPending && !loadingSpinnerShown) {\n this.showViewportLoading();\n } else if (loadingText === loadingMessage && !model.isViewportPending) {\n // extra conditions because timeout might get cleared by update\n this.stopLoading();\n }\n }\n showAllColumns() {\n var _this$grid9;\n var {\n metricCalculator\n } = this.state;\n var userColumnWidths = metricCalculator.getUserColumnWidths();\n var entries = [...userColumnWidths.entries()];\n for (var i = 0; i < entries.length; i += 1) {\n var [modelIndex, columnWidth] = entries[i];\n if (columnWidth === 0) {\n metricCalculator.resetColumnWidth(modelIndex);\n }\n }\n (_this$grid9 = this.grid) === null || _this$grid9 === void 0 ? void 0 : _this$grid9.forceUpdate();\n }\n\n /**\n * Updates grid metrics after model columns have changed\n * to keep Grid and IrisGrid metrics in sync since metrics are stored in both places.\n */\n updateMetrics() {\n var _this$grid10;\n this.setState({\n metrics: (_this$grid10 = this.grid) === null || _this$grid10 === void 0 ? void 0 : _this$grid10.updateMetrics()\n });\n }\n toggleSort(columnIndex, addToExisting) {\n log.info('Toggling sort for column', columnIndex);\n var {\n model\n } = this.props;\n var modelColumn = this.getModelColumn(columnIndex);\n assertNotNull(modelColumn);\n if (model.isColumnSortable(columnIndex)) {\n var {\n sorts: currentSorts\n } = this.state;\n var sorts = TableUtils.toggleSortForColumn(currentSorts, model.columns, modelColumn, addToExisting);\n this.updateSorts(sorts);\n } else {\n log.debug('Column type was not sortable', model.columns[columnIndex]);\n }\n }\n updateSorts(sorts) {\n var _this$grid11;\n this.startLoading('Sorting...');\n this.setState({\n sorts\n });\n (_this$grid11 = this.grid) === null || _this$grid11 === void 0 ? void 0 : _this$grid11.forceUpdate();\n }\n sortColumn(modelColumn) {\n var _this$grid12;\n var direction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : TableUtils.sortDirection.none;\n var isAbs = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var addToExisting = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n assertNotNull(modelColumn);\n var {\n model\n } = this.props;\n var sorts = TableUtils.sortColumn(model.sort, model.columns, modelColumn, direction, isAbs, addToExisting);\n this.startLoading('Sorting...');\n this.setState({\n sorts\n });\n (_this$grid12 = this.grid) === null || _this$grid12 === void 0 ? void 0 : _this$grid12.forceUpdate();\n }\n reverse(reverse) {\n var _this$grid13;\n this.startLoading('Reversing...');\n this.setState({\n reverse\n });\n (_this$grid13 = this.grid) === null || _this$grid13 === void 0 ? void 0 : _this$grid13.forceUpdate();\n }\n isReversible() {\n var {\n model\n } = this.props;\n return model.isReversible;\n }\n toggleFilterBar() {\n var focusIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.lastFocusedFilterBarColumn;\n var {\n isFilterBarShown\n } = this.state;\n isFilterBarShown = !isFilterBarShown;\n this.setState({\n isFilterBarShown\n });\n if (isFilterBarShown) {\n if (focusIndex != null) {\n this.focusFilterBar(focusIndex);\n } else {\n var columnIndex = 0;\n var {\n model: _model2\n } = this.props;\n var {\n columnCount\n } = _model2;\n for (var i = 0; i < columnCount; i += 1) {\n var modelColumn = this.getModelColumn(i);\n if (modelColumn != null) {\n var _column = _model2.columns[modelColumn];\n if (_column != null && TableUtils.isTextType(_column.type)) {\n columnIndex = i;\n break;\n }\n }\n }\n this.focusFilterBar(columnIndex);\n }\n } else {\n var _this$grid14;\n (_this$grid14 = this.grid) === null || _this$grid14 === void 0 ? void 0 : _this$grid14.focus();\n }\n }\n isTableSearchAvailable() {\n var _model$layoutHints3, _dh$SearchDisplayMode, _dh$SearchDisplayMode2;\n var {\n model,\n canToggleSearch\n } = this.props;\n var {\n dh\n } = model;\n var searchDisplayMode = model === null || model === void 0 ? void 0 : (_model$layoutHints3 = model.layoutHints) === null || _model$layoutHints3 === void 0 ? void 0 : _model$layoutHints3.searchDisplayMode;\n if (searchDisplayMode === ((_dh$SearchDisplayMode = dh.SearchDisplayMode) === null || _dh$SearchDisplayMode === void 0 ? void 0 : _dh$SearchDisplayMode.SEARCH_DISPLAY_HIDE)) {\n return false;\n }\n if (searchDisplayMode === ((_dh$SearchDisplayMode2 = dh.SearchDisplayMode) === null || _dh$SearchDisplayMode2 === void 0 ? void 0 : _dh$SearchDisplayMode2.SEARCH_DISPLAY_SHOW)) {\n return true;\n }\n return canToggleSearch;\n }\n toggleSearchBar() {\n var {\n showSearchBar\n } = this.state;\n if (!this.isTableSearchAvailable()) {\n return;\n }\n var update = !showSearchBar;\n this.setState({\n showSearchBar: update\n }, () => {\n var _this$crossColumnRef;\n if (update && (_this$crossColumnRef = this.crossColumnRef) !== null && _this$crossColumnRef !== void 0 && _this$crossColumnRef.current) {\n var _this$crossColumnRef2;\n (_this$crossColumnRef2 = this.crossColumnRef) === null || _this$crossColumnRef2 === void 0 ? void 0 : _this$crossColumnRef2.current.focus();\n } else {\n var _this$grid15;\n (_this$grid15 = this.grid) === null || _this$grid15 === void 0 ? void 0 : _this$grid15.focus();\n }\n });\n }\n toggleGotoRow() {\n var _this$grid16, _this$grid17;\n var row = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var value = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var columnName = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n var {\n isGotoShown\n } = this.state;\n if (row || value) {\n var _this$gotoRowRef$curr;\n // if invoked with a row, keep open instead of toggle\n this.setState({\n isGotoShown: true,\n gotoValue: value,\n gotoValueSelectedColumnName: columnName,\n gotoRowError: '',\n gotoValueError: '',\n gotoValueManuallyChanged: false\n });\n this.focusRowInGrid(row);\n (_this$gotoRowRef$curr = this.gotoRowRef.current) === null || _this$gotoRowRef$curr === void 0 ? void 0 : _this$gotoRowRef$curr.focus();\n return;\n }\n var cursorRow = (_this$grid16 = this.grid) === null || _this$grid16 === void 0 ? void 0 : _this$grid16.state.cursorRow;\n var cursorColumn = (_this$grid17 = this.grid) === null || _this$grid17 === void 0 ? void 0 : _this$grid17.state.cursorColumn;\n if (cursorRow == null || cursorColumn == null) {\n // if a cell is not selected / grid is not rendered\n this.setState({\n isGotoShown: !isGotoShown,\n gotoRow: '',\n gotoValue: '',\n gotoRowError: '',\n gotoValueError: '',\n gotoValueManuallyChanged: false\n });\n return;\n }\n // if a row is selected\n var {\n model\n } = this.props;\n var {\n name,\n type\n } = model.columns[cursorColumn];\n var cellValue = model.valueForCell(cursorColumn, cursorRow);\n var text = IrisGridUtils.convertValueToText(cellValue, type);\n this.setState({\n isGotoShown: !isGotoShown,\n gotoRow: \"\".concat(cursorRow + 1),\n gotoValue: text,\n gotoValueSelectedColumnName: name,\n gotoRowError: '',\n gotoValueError: '',\n gotoValueManuallyChanged: false\n });\n }\n commitPending() {\n var _this3 = this;\n return _asyncToGenerator(function* () {\n var _document, _document$activeEleme;\n var {\n model\n } = _this3.props;\n if (!isEditableGridModel(model) || !model.isEditable) {\n throw new Error('Cannot save, table is not editable');\n }\n var {\n pendingSavePromise\n } = _this3.state;\n if (pendingSavePromise != null) {\n throw new Error('Save already in progress');\n }\n var containsGridCellInputField = (_document = document) === null || _document === void 0 ? void 0 : (_document$activeEleme = _document.activeElement) === null || _document$activeEleme === void 0 ? void 0 : _document$activeEleme.classList.contains('grid-cell-input-field');\n if (containsGridCellInputField != null && containsGridCellInputField) {\n var _this3$grid;\n if (document.activeElement != null && document.activeElement.classList.contains('error')) {\n throw new ValidationError('Current input is invalid');\n }\n\n // Focus the grid again to commit any pending input changes\n (_this3$grid = _this3.grid) === null || _this3$grid === void 0 ? void 0 : _this3$grid.focus();\n }\n var newPendingSavePromise = _this3.pending.add(model.commitPending()).then(() => {\n _this3.setState({\n pendingSaveError: null,\n pendingSavePromise: null\n });\n }).catch(err => {\n if (!PromiseUtils.isCanceled(err)) {\n _this3.setState({\n pendingSaveError: err,\n pendingSavePromise: null\n });\n }\n });\n _this3.setState({\n pendingSavePromise: newPendingSavePromise\n });\n return newPendingSavePromise;\n })();\n }\n discardPending() {\n var _this4 = this;\n return _asyncToGenerator(function* () {\n var {\n pendingSavePromise\n } = _this4.state;\n if (pendingSavePromise != null) {\n throw new Error('Cannot cancel a save in progress');\n }\n _this4.setState({\n pendingSavePromise: null,\n pendingSaveError: null,\n pendingDataMap: new Map(),\n pendingDataErrors: new Map()\n });\n })();\n }\n\n /**\n * Select the passed in column and notify listener\n * @param column The column in this table to link\n */\n selectColumn(column) {\n var {\n onColumnSelected\n } = this.props;\n onColumnSelected(column);\n }\n\n /**\n * Get the row data map for a given row and notifies the listener\n */\n selectData(columnIndex, rowIndex) {\n var dataMap = this.getRowDataMap(rowIndex);\n var {\n onDataSelected\n } = this.props;\n onDataSelected(rowIndex, dataMap);\n }\n\n /**\n * Get the data map for the given row\n * @param rowIndex Row to get the data map for\n * @returns Data map for the row\n */\n getRowDataMap(rowIndex) {\n var _this5 = this;\n var {\n model\n } = this.props;\n var {\n columns,\n groupedColumns\n } = model;\n var dataMap = {};\n var _loop = function _loop() {\n var column = columns[i];\n var {\n name,\n type\n } = column;\n var value = model.valueForCell(i, rowIndex);\n var text = model.textForCell(i, rowIndex);\n var visibleIndex = _this5.getVisibleColumn(i);\n var isExpandable = isExpandableGridModel(model) && model.isRowExpandable(rowIndex);\n var isGrouped = groupedColumns.find(c => c.name === name) != null;\n dataMap[name] = {\n value,\n text,\n type,\n isGrouped,\n isExpandable,\n visibleIndex\n };\n };\n for (var i = 0; i < columns.length; i += 1) {\n _loop();\n }\n return dataMap;\n }\n handleAdvancedFilterChange(column, filter, options) {\n var {\n model\n } = this.props;\n var index = model.getColumnIndexByName(column.name);\n assertNotNull(index);\n this.setAdvancedFilter(index, filter, options);\n }\n handleAdvancedFilterSortChange(column, direction) {\n var _this$grid18;\n var addToExisting = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var {\n model\n } = this.props;\n var columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n var columnName = model.columns[columnIndex].name;\n var oldSort = TableUtils.getSortForColumn(model.sort, columnName);\n var newSort = null;\n if (oldSort == null || oldSort.direction !== direction) {\n if (direction === TableUtils.sortDirection.descending) {\n newSort = column.sort().desc();\n } else {\n newSort = column.sort().asc();\n }\n }\n var sorts = TableUtils.setSortForColumn(model.sort, columnName, newSort, addToExisting);\n log.info('Setting table sorts', sorts);\n this.startLoading('Sorting...');\n this.setState({\n sorts\n });\n (_this$grid18 = this.grid) === null || _this$grid18 === void 0 ? void 0 : _this$grid18.forceUpdate();\n }\n handleAdvancedFilterDone() {\n var _this$grid19;\n (_this$grid19 = this.grid) === null || _this$grid19 === void 0 ? void 0 : _this$grid19.focus();\n }\n handleAdvancedMenuOpened(column) {\n this.setState({\n shownAdvancedFilter: column\n });\n }\n handleGotoRowOpened() {\n this.setState({\n isGotoShown: true,\n gotoValueManuallyChanged: false\n });\n }\n handleGotoRowClosed() {\n this.setState({\n isGotoShown: false,\n gotoValueManuallyChanged: false\n });\n }\n handleAdvancedMenuClosed(columnIndex) {\n var _this$filterInputRef;\n var {\n focusedFilterBarColumn,\n isFilterBarShown\n } = this.state;\n if (isFilterBarShown && focusedFilterBarColumn === columnIndex && ((_this$filterInputRef = this.filterInputRef) === null || _this$filterInputRef === void 0 ? void 0 : _this$filterInputRef.current) !== null) {\n var _this$filterInputRef2;\n (_this$filterInputRef2 = this.filterInputRef) === null || _this$filterInputRef2 === void 0 ? void 0 : _this$filterInputRef2.current.focus();\n this.setState({\n shownAdvancedFilter: null\n });\n } else {\n this.setState({\n focusedFilterBarColumn: null,\n shownAdvancedFilter: null\n });\n }\n }\n handleCancel() {\n this.rollback();\n }\n\n // eslint-disable-next-line class-methods-use-this\n handleChartChange() {\n // TODO: IDS-4242 Update Chart Preview\n }\n handleChartCreate(settings) {\n var {\n model,\n onCreateChart\n } = this.props;\n onCreateChart(settings, model);\n }\n handleGridError(error) {\n log.warn('Grid Error', error);\n this.setState({\n toastMessage: /*#__PURE__*/_jsx(\"div\", {\n className: \"error-message\",\n children: \"\".concat(error)\n })\n });\n }\n handleFilterBarChange(value) {\n this.startLoading('Filtering...', {\n resetRanges: true\n });\n this.setState(_ref15 => {\n var {\n focusedFilterBarColumn,\n quickFilters\n } = _ref15;\n var newQuickFilters = new Map(quickFilters);\n if (focusedFilterBarColumn != null) {\n var modelIndex = this.getModelColumn(focusedFilterBarColumn);\n assertNotNull(modelIndex);\n this.applyQuickFilter(modelIndex, value, newQuickFilters);\n }\n return {\n quickFilters: newQuickFilters\n };\n });\n }\n handleFilterBarDone() {\n var setGridFocus = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n var defocusInput = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n if (setGridFocus) {\n var _this$grid20;\n (_this$grid20 = this.grid) === null || _this$grid20 === void 0 ? void 0 : _this$grid20.focus();\n }\n if (defocusInput) {\n this.setState({\n focusedFilterBarColumn: null\n });\n }\n }\n handleFilterBarTab(backward) {\n var {\n focusedFilterBarColumn\n } = this.state;\n assertNotNull(focusedFilterBarColumn);\n if (backward) {\n this.focusFilterBar(focusedFilterBarColumn - 1);\n } else {\n this.focusFilterBar(focusedFilterBarColumn + 1);\n }\n }\n handleFormatSelection(modelIndex, selectedFormat) {\n var {\n model\n } = this.props;\n var column = model.columns[modelIndex];\n var {\n customColumnFormatMap: prevCustomColumnFormatMap\n } = this.state;\n var customColumnFormatMap = new Map(prevCustomColumnFormatMap);\n if (selectedFormat != null) {\n var normalizedType = TableUtils.getNormalizedType(column.type);\n assertNotNull(normalizedType);\n var columnFormattingRule = Formatter.makeColumnFormattingRule(normalizedType, column.name, selectedFormat);\n customColumnFormatMap.set(column.name, columnFormattingRule);\n } else {\n customColumnFormatMap.delete(column.name);\n }\n this.updateFormatter({\n customColumnFormatMap\n });\n }\n handleColumnAlignmentChange(modelIndex, alignment) {\n var {\n model\n } = this.props;\n var column = model.columns[modelIndex];\n this.setState(_ref16 => {\n var {\n columnAlignmentMap = EMPTY_MAP\n } = _ref16;\n var newColumnAlignmentMap = new Map(columnAlignmentMap);\n if (alignment != null) {\n newColumnAlignmentMap.set(column.name, alignment);\n } else {\n newColumnAlignmentMap.delete(column.name);\n }\n return {\n columnAlignmentMap: newColumnAlignmentMap\n };\n });\n }\n handleMenu(e) {\n e.stopPropagation();\n this.setState({\n isMenuShown: true\n });\n }\n handleMenuClose() {\n this.setState({\n isMenuShown: false,\n openOptions: []\n });\n }\n handleMenuBack() {\n this.setState(_ref17 => {\n var {\n openOptions\n } = _ref17;\n var newOptions = [...openOptions];\n newOptions.pop();\n return {\n openOptions: newOptions\n };\n });\n }\n handleMenuSelect(option) {\n this.setState(_ref18 => {\n var {\n openOptions\n } = _ref18;\n return {\n openOptions: [...openOptions, option]\n };\n });\n }\n handleRequestFailed(event) {\n var {\n detail: error\n } = event;\n log.error('request failed:', error);\n this.stopLoading();\n var {\n partitionConfig\n } = this.state;\n if (isMissingPartitionError(error) && partitionConfig != null) {\n // We'll try loading the initial partition again\n this.startLoading('Reloading partition...', {\n resetRanges: true\n });\n this.setState({\n partitionConfig: undefined\n }, () => {\n this.initState();\n });\n } else if (this.canRollback()) {\n this.startLoading('Rolling back changes...', {\n resetRanges: true\n });\n this.rollback();\n } else {\n log.error('Table failed and unable to rollback');\n var {\n onError\n } = this.props;\n onError(new Error(\"Error displaying table: \".concat(error)));\n }\n }\n handleUpdate() {\n var _this$grid21;\n log.debug2('Received model update');\n var {\n advancedFilters,\n aggregationSettings,\n customColumns,\n quickFilters,\n reverse,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts\n } = this.state;\n var config = {\n advancedFilters,\n aggregationSettings,\n customColumns,\n quickFilters,\n reverse,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts\n };\n if (!isEmptyConfig(config)) {\n this.lastLoadedConfig = config;\n } else {\n this.lastLoadedConfig = null;\n }\n (_this$grid21 = this.grid) === null || _this$grid21 === void 0 ? void 0 : _this$grid21.forceUpdate();\n this.stopLoading();\n }\n handleTableChanged() {\n var {\n model\n } = this.props;\n // movedColumns reset triggers metricCalculator update in the Grid component\n this.setState({\n movedColumns: model.initialMovedColumns\n });\n }\n handleViewChanged(metrics) {\n var _this$grid$state, _this$grid22;\n var {\n model\n } = this.props;\n var {\n selectionEndRow = 0\n } = (_this$grid$state = (_this$grid22 = this.grid) === null || _this$grid22 === void 0 ? void 0 : _this$grid22.state) !== null && _this$grid$state !== void 0 ? _this$grid$state : {};\n var pendingRowCount = 0;\n if (isEditableGridModel(model) && model.isEditable) {\n assertNotNull(metrics);\n var {\n bottomViewport\n } = metrics;\n\n // We have an editable table that we can add new rows to\n // Display empty rows beneath the table rows that user can fill in\n var bottomNonFloating = model.rowCount - model.floatingBottomRowCount;\n if (selectionEndRow === bottomNonFloating - 1) {\n // Selection is in the last row, add another blank row\n pendingRowCount = model.pendingRowCount + 1;\n } else if (selectionEndRow === bottomNonFloating - 2) {\n // We may have just added a row based on selection moving, so just leave it as is\n pendingRowCount = model.pendingRowCount;\n } else {\n // Otherwise fill up the viewport with empty cells\n pendingRowCount = Math.max(0, bottomViewport - (model.rowCount - model.pendingRowCount) - model.floatingTopRowCount - model.floatingBottomRowCount - 1);\n }\n }\n this.setState({\n metrics,\n pendingRowCount\n });\n }\n handleSelectionChanged(selectedRanges) {\n var _this$grid23;\n assertNotNull(selectedRanges);\n var {\n onSelectionChanged\n } = this.props;\n var {\n copyOperation\n } = this.state;\n this.setState({\n selectedRanges\n });\n if (copyOperation != null) {\n this.setState({\n copyOperation: null\n });\n }\n if (((_this$grid23 = this.grid) === null || _this$grid23 === void 0 ? void 0 : _this$grid23.state.cursorRow) != null) {\n this.setState({\n gotoRow: \"\".concat(this.grid.state.cursorRow + 1)\n });\n }\n onSelectionChanged(selectedRanges);\n }\n handleMovedColumnsChanged(movedColumns, onChangeApplied) {\n this.setState({\n movedColumns\n }, onChangeApplied);\n }\n handleHeaderGroupsChanged(columnHeaderGroups) {\n var {\n model\n } = this.props;\n this.setState({\n columnHeaderGroups: IrisGridUtils.parseColumnHeaderGroups(model, columnHeaderGroups).groups\n }, () => {\n var _this$grid24;\n return (_this$grid24 = this.grid) === null || _this$grid24 === void 0 ? void 0 : _this$grid24.forceUpdate();\n });\n }\n handleTooltipRef(tooltip) {\n // Need to start the timer right away, since we're creating the tooltip when we want the timer to start\n if (tooltip != null) {\n tooltip.startTimer();\n }\n this.tooltip = tooltip;\n }\n handleConditionalFormatsChange(conditionalFormats) {\n log.debug('Updated conditional formats', conditionalFormats);\n this.setState({\n conditionalFormats\n });\n }\n handleConditionalFormatCreate() {\n log.debug('Create new conditional format');\n var {\n openOptions,\n conditionalFormats\n } = this.state;\n this.setState({\n openOptions: [...openOptions, {\n type: OptionType.CONDITIONAL_FORMATTING_EDIT,\n title: \"Create Formatting Rule\"\n }],\n conditionalFormatEditIndex: conditionalFormats.length,\n // Start with a blank rule\n conditionalFormatPreview: undefined\n });\n }\n handleConditionalFormatEdit(index) {\n log.debug('Edit conditional format', index);\n var {\n openOptions,\n conditionalFormats\n } = this.state;\n this.setState({\n openOptions: [...openOptions, {\n type: OptionType.CONDITIONAL_FORMATTING_EDIT,\n title: \"Edit Formatting Rule\"\n }],\n conditionalFormatEditIndex: index,\n // Clone rule to preview temporary changes\n conditionalFormatPreview: _objectSpread({}, conditionalFormats[index])\n });\n }\n\n // Apply live changes\n\n handleConditionalFormatEditorSave(config) {\n log.debug('Save conditional format changes', config);\n this.setState(state => {\n if (state.conditionalFormatEditIndex === null) {\n log.debug('Invalid format index');\n return null;\n }\n var conditionalFormats = [...state.conditionalFormats];\n conditionalFormats[state.conditionalFormatEditIndex] = config;\n return {\n conditionalFormats\n };\n }, () => {\n this.handleMenuBack();\n });\n }\n handleConditionalFormatEditorCancel() {\n this.handleMenuBack();\n // Not resetting conditionalFormatPreview here\n // to prevent editor fields change during the menu transition\n this.setState({\n conditionalFormatEditIndex: null\n });\n }\n handleUpdateCustomColumns(customColumns) {\n log.info(\"handleUpdateCustomColumns:\", customColumns);\n var {\n model\n } = this.props;\n var {\n movedColumns,\n sorts,\n quickFilters,\n advancedFilters,\n selectDistinctColumns\n } = this.state;\n var {\n columns\n } = model;\n var oldCustomColumns = model.customColumns.map(customColumn => \"\".concat(customColumn));\n var removedColumnNames = IrisGridUtils.getRemovedCustomColumnNames(oldCustomColumns, customColumns);\n if (removedColumnNames.length > 0) {\n var newSorts = IrisGridUtils.removeSortsInColumns(sorts, removedColumnNames);\n var newQuickFilters = IrisGridUtils.removeFiltersInColumns(columns, quickFilters, removedColumnNames);\n var newAdvancedFilters = IrisGridUtils.removeFiltersInColumns(columns, advancedFilters, removedColumnNames);\n var newMovedColumns = IrisGridUtils.removeColumnFromMovedColumns(columns, movedColumns, removedColumnNames);\n var newSelectDistinctColumns = IrisGridUtils.removeColumnsFromSelectDistinctColumns(selectDistinctColumns, removedColumnNames);\n if (newSorts.length !== sorts.length) {\n log.debug('removing sorts from removed custom columns...');\n this.setState({\n sorts: newSorts\n });\n }\n if (newQuickFilters.size !== quickFilters.size || newAdvancedFilters.size !== advancedFilters.size) {\n log.debug(\"removing filters from removed custom columns...\");\n this.setState({\n quickFilters: newQuickFilters,\n advancedFilters: newAdvancedFilters\n });\n }\n if (!deepEqual(movedColumns, newMovedColumns)) {\n log.debug(\"change moved columns for removed custom columns\", newMovedColumns);\n this.setState({\n movedColumns: newMovedColumns\n });\n }\n if (!deepEqual(selectDistinctColumns, newSelectDistinctColumns)) {\n log.debug(\"change selectDistinct columns for removed custom columns\", newMovedColumns);\n this.setState({\n selectDistinctColumns: newSelectDistinctColumns\n });\n }\n }\n this.setState({\n customColumns\n });\n if (customColumns.length > 0) {\n // If there are no custom columns, the change handler never fires\n // This causes the loader to stay until canceled by the user\n this.startLoading('Applying custom columns...');\n }\n }\n handleCustomColumnsChanged() {\n log.debug('Model columns changed');\n var {\n isReady\n } = this.state;\n if (isReady) {\n this.updateMetrics();\n\n // Make sure stopLoading() is called after the updateMetrics call,\n // otherwise IrisGridModelUpdater queues an extra setViewport based on old metrics.\n this.stopLoading();\n } else {\n this.loadTableState();\n }\n }\n handlePendingCommitClicked() {\n return this.commitPending();\n }\n handlePendingDiscardClicked() {\n return this.discardPending();\n }\n handlePendingDataUpdated() {\n var _this$grid25;\n log.debug('pending data updated');\n var {\n model\n } = this.props;\n var {\n pendingDataMap,\n pendingDataErrors\n } = model;\n this.setState({\n pendingDataMap,\n pendingDataErrors,\n pendingSaveError: null\n });\n (_this$grid25 = this.grid) === null || _this$grid25 === void 0 ? void 0 : _this$grid25.forceUpdate();\n }\n handleResizeColumn(modelIndex) {\n var _this$grid26;\n var {\n metrics,\n metricCalculator\n } = this.state;\n if (!metrics) throw new Error('Metrics not set');\n var contentWidth = getOrThrow(metrics.contentColumnWidths, modelIndex);\n var userWidths = metricCalculator.getUserColumnWidths();\n if (userWidths.has(modelIndex)) {\n metricCalculator.resetColumnWidth(modelIndex);\n metricCalculator.setCalculatedColumnWidth(modelIndex, contentWidth);\n } else {\n metricCalculator.setColumnWidth(modelIndex, contentWidth);\n }\n (_this$grid26 = this.grid) === null || _this$grid26 === void 0 ? void 0 : _this$grid26.forceUpdate();\n }\n handleResizeAllColumns() {\n var _this$grid27;\n var {\n metrics,\n metricCalculator\n } = this.state;\n if (!metrics) throw new Error('Metrics not set');\n var allColumns = [...metrics.allColumnWidths.entries()];\n var visibleColumns = allColumns.filter(_ref19 => {\n var [_, width] = _ref19;\n return width !== 0;\n }).map(_ref20 => {\n var [modelIndex] = _ref20;\n return modelIndex;\n });\n var contentWidths = metrics.contentColumnWidths;\n var userWidths = metricCalculator.getUserColumnWidths();\n var manualColumns = visibleColumns.filter(modelIndex => userWidths.has(modelIndex));\n if (visibleColumns.length === manualColumns.length) {\n // All columns are manually sized, flip all to auto resize\n for (var i = 0; i < visibleColumns.length; i += 1) {\n var modelIndex = visibleColumns[i];\n var contentWidth = getOrThrow(contentWidths, modelIndex);\n metricCalculator.resetColumnWidth(modelIndex);\n metricCalculator.setCalculatedColumnWidth(modelIndex, contentWidth);\n }\n } else {\n // Flip all to manual sized\n for (var _i3 = 0; _i3 < visibleColumns.length; _i3 += 1) {\n var _modelIndex = visibleColumns[_i3];\n var _contentWidth = getOrThrow(contentWidths, _modelIndex);\n metricCalculator.setColumnWidth(_modelIndex, _contentWidth);\n }\n }\n (_this$grid27 = this.grid) === null || _this$grid27 === void 0 ? void 0 : _this$grid27.forceUpdate();\n }\n\n /**\n * User added, removed, or changed the order of aggregations, or position\n * @param aggregationSettings The new aggregation settings\n * @param added The aggregations that were added\n * @param removed The aggregations that were removed\n */\n handleAggregationsChange(aggregationSettings) {\n var _rollupConfig$columns, _rollupConfig$columns2;\n var added = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var removed = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n log.debug('handleAggregationsChange', aggregationSettings, added, removed);\n var {\n rollupConfig\n } = this.state;\n var isRollup = ((_rollupConfig$columns = rollupConfig === null || rollupConfig === void 0 ? void 0 : (_rollupConfig$columns2 = rollupConfig.columns) === null || _rollupConfig$columns2 === void 0 ? void 0 : _rollupConfig$columns2.length) !== null && _rollupConfig$columns !== void 0 ? _rollupConfig$columns : 0) > 0;\n // Do not start loading if this is rollup and added / removed aggregations are prohibited for rollups\n var changes = [...added, ...removed];\n var shouldStartLoading = !(isRollup && changes.length > 0 && changes.every(op => AggregationUtils.isRollupProhibited(op)));\n if (shouldStartLoading) {\n this.startLoading(\"Aggregating \".concat(aggregationSettings.aggregations.map(a => a.operation).join(', '), \"...\"));\n }\n this.setState({\n aggregationSettings\n });\n }\n\n /**\n * A specific aggregation has been modified\n * @param aggregation The new aggregation\n */\n handleAggregationChange(aggregation) {\n var _rollupConfig$columns3, _rollupConfig$columns4;\n log.debug('handleAggregationChange', aggregation);\n var {\n rollupConfig\n } = this.state;\n var isRollup = ((_rollupConfig$columns3 = rollupConfig === null || rollupConfig === void 0 ? void 0 : (_rollupConfig$columns4 = rollupConfig.columns) === null || _rollupConfig$columns4 === void 0 ? void 0 : _rollupConfig$columns4.length) !== null && _rollupConfig$columns3 !== void 0 ? _rollupConfig$columns3 : 0) > 0;\n // Do not start loading if this is rollup and the aggregation is prohibited for rollups\n var shouldStartLoading = !(isRollup && AggregationUtils.isRollupProhibited(aggregation.operation));\n if (shouldStartLoading) {\n this.startLoading(\"Aggregating \".concat(aggregation.operation, \"...\"));\n }\n this.setState(_ref21 => {\n var {\n aggregationSettings\n } = _ref21;\n return {\n selectedAggregation: aggregation,\n aggregationSettings: _objectSpread(_objectSpread({}, aggregationSettings), {}, {\n aggregations: aggregationSettings.aggregations.map(a => a.operation === aggregation.operation ? aggregation : a)\n })\n };\n });\n }\n\n /**\n * An aggregations has been selected for editing\n * @param aggregation The aggregation to edit\n */\n handleAggregationEdit(aggregation) {\n log.debug('handleAggregationEdit', aggregation);\n var {\n openOptions\n } = this.state;\n this.setState({\n openOptions: [...openOptions, {\n type: OptionType.AGGREGATION_EDIT,\n title: \"Edit Columns to \".concat(aggregation.operation)\n }],\n selectedAggregation: aggregation\n });\n }\n handleRollupChange(rollupConfig) {\n var _rollupConfig$columns5, _rollupConfig$columns6;\n log.info('Rollup change', rollupConfig);\n this.resetGridViewState();\n this.showAllColumns();\n this.clearAllFilters();\n this.startLoading(\"Grouping by columns \".concat((_rollupConfig$columns5 = rollupConfig === null || rollupConfig === void 0 ? void 0 : (_rollupConfig$columns6 = rollupConfig.columns) === null || _rollupConfig$columns6 === void 0 ? void 0 : _rollupConfig$columns6.join(', ')) !== null && _rollupConfig$columns5 !== void 0 ? _rollupConfig$columns5 : '', \"...\"));\n\n // Have to clear select distinct since rollup uses the original columns, not the current ones.\n // IrisGridProxyModel has a check to prevent model update\n // when selectDistinctModel is cleared and the rollupConfig is set on the model.\n this.setState({\n rollupConfig,\n movedColumns: [],\n frozenColumns: [],\n sorts: [],\n reverse: false,\n selectDistinctColumns: []\n });\n }\n handleSelectDistinctChanged(columnNames) {\n log.debug('SelectDistinct change', columnNames);\n this.resetGridViewState();\n this.showAllColumns();\n this.clearAllFilters();\n this.clearAllAggregations();\n this.startLoading(\"Selecting distinct values in \".concat(columnNames.length > 0 ? columnNames.join(', ') : '', \"...\"));\n this.setState({\n selectDistinctColumns: columnNames,\n movedColumns: [],\n sorts: [],\n reverse: false\n });\n }\n handleDownloadTableStart() {\n var {\n canDownloadCsv\n } = this.props;\n if (canDownloadCsv) {\n this.setState({\n isTableDownloading: true,\n tableDownloadProgress: 0,\n tableDownloadEstimatedTime: null,\n tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.INITIATING\n });\n } else {\n log.error('Attempted to handleDownloadTableStart for user without download CSV permission.');\n }\n }\n handleDownloadTable(fileName, frozenTable, tableSubscription, snapshotRanges, modelRanges, includeColumnHeaders, useUnformattedValues) {\n var {\n canDownloadCsv\n } = this.props;\n if (canDownloadCsv) {\n log.info('start table downloading', fileName, frozenTable, tableSubscription, snapshotRanges, modelRanges, includeColumnHeaders, useUnformattedValues);\n this.setState(() => {\n if (this.tableSaver) {\n this.tableSaver.startDownload(fileName, frozenTable, tableSubscription, snapshotRanges, modelRanges, includeColumnHeaders, useUnformattedValues);\n }\n return {\n tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING\n };\n });\n } else {\n log.error('Attempted to handleDownloadTable for user without download CSV permission.');\n }\n }\n\n /**\n * Aggregation editing has completed. Need to filter out any aggregations that have no columns selected\n */\n removeEmptyAggregations() {\n log.debug('removeEmptyAggregations');\n this.setState(_ref22 => {\n var {\n aggregationSettings\n } = _ref22;\n var {\n aggregations\n } = aggregationSettings;\n var newAggregations = aggregations.filter(a => a.selected.length > 0 || a.invert);\n if (newAggregations.length !== aggregations.length) {\n return {\n selectedAggregation: null,\n aggregationSettings: _objectSpread(_objectSpread({}, aggregationSettings), {}, {\n aggregations: newAggregations\n })\n };\n }\n return {\n selectedAggregation: null,\n aggregationSettings\n };\n });\n }\n seekRow(inputString) {\n var _arguments = arguments,\n _this6 = this;\n return _asyncToGenerator(function* () {\n var _this6$grid;\n var isBackwards = _arguments.length > 1 && _arguments[1] !== undefined ? _arguments[1] : false;\n var {\n gotoValueSelectedColumnName: selectedColumnName,\n gotoValueSelectedFilter\n } = _this6.state;\n var {\n model\n } = _this6.props;\n var {\n dh\n } = model;\n if (!model.isSeekRowAvailable) {\n return;\n }\n if (inputString === '') {\n return;\n }\n var selectedColumn = IrisGridUtils.getColumnByName(model.columns, selectedColumnName);\n if (selectedColumn === undefined) {\n return;\n }\n var searchFromRow = (_this6$grid = _this6.grid) === null || _this6$grid === void 0 ? void 0 : _this6$grid.state.cursorRow;\n if (searchFromRow == null) {\n searchFromRow = 0;\n }\n var isContains = gotoValueSelectedFilter === FilterType.contains || gotoValueSelectedFilter === FilterType.containsIgnoreCase;\n var isIgnoreCase = gotoValueSelectedFilter === FilterType.eqIgnoreCase || gotoValueSelectedFilter === FilterType.containsIgnoreCase;\n try {\n var _this6$grid2;\n var {\n formatter\n } = model;\n var columnDataType = TableUtils.getNormalizedType(selectedColumn.type);\n var rowIndex;\n switch (columnDataType) {\n case TableUtils.dataType.CHAR:\n case TableUtils.dataType.STRING:\n {\n rowIndex = yield model.seekRow(searchFromRow, selectedColumn, dh.ValueType.STRING, inputString, isIgnoreCase, isContains, isBackwards !== null && isBackwards !== void 0 ? isBackwards : false);\n break;\n }\n case TableUtils.dataType.DATETIME:\n {\n var [startDate] = DateUtils.parseDateRange(dh, inputString, formatter.timeZone);\n rowIndex = yield model.seekRow(searchFromRow, selectedColumn, dh.ValueType.DATETIME, startDate, undefined, undefined, isBackwards !== null && isBackwards !== void 0 ? isBackwards : false);\n break;\n }\n case TableUtils.dataType.DECIMAL:\n case TableUtils.dataType.INT:\n {\n if (!TableUtils.isBigDecimalType(selectedColumn.type) && !TableUtils.isBigIntegerType(selectedColumn.type)) {\n var inputValue = parseInt(inputString, 10);\n if (inputString === '-Infinity') {\n inputValue = Number.NEGATIVE_INFINITY;\n } else if (inputString === 'Infinity') {\n inputValue = Number.POSITIVE_INFINITY;\n }\n rowIndex = yield model.seekRow(searchFromRow, selectedColumn, dh.ValueType.NUMBER, inputValue, undefined, undefined, isBackwards !== null && isBackwards !== void 0 ? isBackwards : false);\n } else {\n rowIndex = yield model.seekRow(searchFromRow, selectedColumn, dh.ValueType.STRING, inputString, undefined, undefined, isBackwards !== null && isBackwards !== void 0 ? isBackwards : false);\n }\n break;\n }\n default:\n {\n rowIndex = yield model.seekRow(searchFromRow, selectedColumn, dh.ValueType.STRING, _this6.tableUtils.makeValue(selectedColumn.type, inputString, formatter.timeZone), undefined, undefined, isBackwards !== null && isBackwards !== void 0 ? isBackwards : false);\n }\n }\n (_this6$grid2 = _this6.grid) === null || _this6$grid2 === void 0 ? void 0 : _this6$grid2.setFocusRow(rowIndex);\n _this6.setState({\n gotoValueError: ''\n });\n } catch (e) {\n _this6.setState({\n gotoValueError: 'invalid input'\n });\n }\n })();\n }\n handleCancelDownloadTable() {\n var _this$tableSaver;\n (_this$tableSaver = this.tableSaver) === null || _this$tableSaver === void 0 ? void 0 : _this$tableSaver.cancelDownload();\n this.setState({\n isTableDownloading: false\n });\n }\n handleDownloadCompleted() {\n this.setState({\n isTableDownloading: false,\n tableDownloadProgress: 100,\n tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.FINISHED\n });\n }\n handleDownloadCanceled() {\n this.setState({\n isTableDownloading: false,\n tableDownloadProgress: 0,\n tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.CANCELED\n });\n }\n\n /**\n * Delete the specified ranges from the table.\n * @param ranges The ranges to delete\n */\n deleteRanges(ranges) {\n var {\n model\n } = this.props;\n if (!isDeletableGridModel(model) || !model.isDeletable) {\n throw new Error('Model does not support deleting ranges');\n }\n this.pending.add(model.delete(ranges)).catch(e => {\n if (!PromiseUtils.isCanceled(e)) {\n log.error('Unable to delete ranges', ranges, e);\n }\n });\n }\n resetColumnSelection() {\n if (this.grid == null) {\n return;\n }\n var {\n isSelectingColumn\n } = this.props;\n if (isSelectingColumn) {\n var {\n columnAllowedCursor\n } = this.props;\n this.grid.setState({\n cursor: columnAllowedCursor\n });\n } else {\n this.grid.setState({\n cursor: null\n });\n this.setState({\n hoverSelectColumn: null\n });\n }\n }\n resetGridViewState() {\n var forceUpdate = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n if (!this.grid) {\n return;\n }\n this.grid.clearSelectedRanges();\n this.grid.setViewState({\n left: 0,\n top: 0,\n topOffset: 0,\n leftOffset: 0\n }, forceUpdate);\n }\n sendStateChange() {\n if (!this.grid) {\n return;\n }\n var {\n state: irisGridState\n } = this;\n var {\n state: gridState\n } = this.grid;\n var {\n onStateChange\n } = this.props;\n onStateChange(irisGridState, gridState);\n }\n handleOverflowClose() {\n this.setState({\n showOverflowModal: false\n });\n }\n handleOpenNoPastePermissionModal(errorMessage) {\n this.setState({\n showNoPastePermissionModal: true,\n noPastePermissionError: errorMessage\n });\n }\n handleCloseNoPastePermissionModal() {\n this.setState({\n showNoPastePermissionModal: false\n });\n }\n getColumnBoundingRect() {\n var _this$gridWrapper2;\n var {\n metrics,\n shownColumnTooltip\n } = this.state;\n assertNotNull(metrics);\n assertNotNull(shownColumnTooltip);\n var gridRect = (_this$gridWrapper2 = this.gridWrapper) === null || _this$gridWrapper2 === void 0 ? void 0 : _this$gridWrapper2.getBoundingClientRect();\n var popperMargin = 20;\n assertNotNull(gridRect);\n var {\n columnHeaderHeight,\n allColumnXs,\n allColumnWidths,\n width,\n columnHeaderMaxDepth\n } = metrics;\n var columnX = allColumnXs.get(shownColumnTooltip);\n var columnWidth = allColumnWidths.get(shownColumnTooltip);\n assertNotNull(columnX);\n assertNotNull(columnWidth);\n var left = gridRect.left + clamp(columnX + columnWidth / 2, popperMargin, width - popperMargin);\n return {\n top: gridRect.top + (columnHeaderMaxDepth - 1) * columnHeaderHeight,\n left: gridRect.left + clamp(columnX + columnWidth / 2, popperMargin, width - popperMargin),\n bottom: gridRect.top + columnHeaderMaxDepth * columnHeaderHeight,\n right: gridRect.left + clamp(columnX + columnWidth / 2, popperMargin, width - popperMargin) + 1,\n width: 1,\n height: columnHeaderHeight,\n x: left,\n y: gridRect.top,\n toJSON: () => {\n throw new Error('not implemented');\n }\n };\n }\n handleGotoRowSelectedRowNumberSubmit() {\n var {\n gotoRow: rowNumber\n } = this.state;\n this.focusRowInGrid(rowNumber);\n }\n focusRowInGrid(rowNumber) {\n var {\n model\n } = this.props;\n var {\n rowCount\n } = model;\n this.setState({\n gotoRow: rowNumber\n });\n if (rowNumber === '') {\n this.setState({\n gotoRowError: '',\n gotoValueError: ''\n });\n return;\n }\n var rowInt = parseInt(rowNumber, 10);\n if (rowInt > rowCount || rowInt < -rowCount) {\n this.setState({\n gotoRowError: 'Invalid row index'\n });\n } else if (rowInt === 0) {\n var _this$grid28;\n this.setState({\n gotoRowError: '',\n gotoValueError: ''\n });\n (_this$grid28 = this.grid) === null || _this$grid28 === void 0 ? void 0 : _this$grid28.setFocusRow(0);\n } else if (rowInt < 0) {\n var _this$grid29;\n this.setState({\n gotoRowError: '',\n gotoValueError: ''\n });\n (_this$grid29 = this.grid) === null || _this$grid29 === void 0 ? void 0 : _this$grid29.setFocusRow(rowInt + rowCount);\n } else {\n var _this$grid30;\n (_this$grid30 = this.grid) === null || _this$grid30 === void 0 ? void 0 : _this$grid30.setFocusRow(rowInt - 1);\n this.setState({\n gotoRowError: '',\n gotoValueError: ''\n });\n }\n }\n handleGotoRowSelectedRowNumberChanged(event) {\n var rowNumber = event.target.value;\n this.focusRowInGrid(rowNumber);\n }\n getColumnTooltip(visibleIndex, metrics, model) {\n var {\n columnHeaderHeight,\n columnHeaderMaxDepth,\n allColumnXs,\n allColumnWidths,\n width\n } = metrics;\n var columnX = allColumnXs.get(visibleIndex);\n var columnWidth = allColumnWidths.get(visibleIndex);\n if (columnX == null || columnWidth == null) {\n return null;\n }\n\n /**\n * Create a wrapper dom element, the size of the column header.\n * The wrapper acts as tooltip parent, the tooltip component\n * will trigger hide on mouseleave of wrapper or tooltip.\n * The wrapper should be bound to within the grid dimensions,\n * so popper only remains triggered while mouse is inside the panel.\n */\n var boundedLeft = Math.max(0, columnX);\n var boundedWidth = columnWidth;\n if (columnX + columnWidth > width) {\n // column is extending past right edge\n boundedWidth = width - columnX;\n } else if (columnX < 0) {\n // column is extending past left edge\n boundedWidth = columnWidth - Math.abs(columnX);\n }\n var wrapperStyle = {\n position: 'absolute',\n top: (columnHeaderMaxDepth - 1) * columnHeaderHeight,\n left: boundedLeft,\n width: boundedWidth,\n height: columnHeaderHeight,\n pointerEvents: 'none'\n };\n\n /**\n * Because the popper parent wrapper center is no longer the same as\n * the column label center, we create a popper virtual ref, to handle\n * positioning and keep the popper centered on the label. Creates a\n * 1px x headerHeight virtual object, placed centered on the column\n * label, clamped to 0 + margin to width - margin. We add a margin,\n * otherwise the arrow wants to escape the boundary.\n */\n var virtualReference = {\n clientWidth: 1,\n clientHeight: columnHeaderHeight,\n getBoundingClientRect: this.getColumnBoundingRect\n };\n var popperOptions = {\n placement: 'bottom',\n modifiers: {\n flip: {\n behavior: ['bottom', 'top']\n }\n }\n };\n var modelColumn = this.getModelColumn(visibleIndex);\n if (modelColumn == null) return null;\n var column = model.columns[modelColumn];\n if (column == null) return null;\n return /*#__PURE__*/_jsx(\"div\", {\n style: wrapperStyle,\n children: /*#__PURE__*/_jsx(Tooltip, {\n timeout: 400,\n interactive: true,\n options: popperOptions,\n ref: this.handleTooltipRef,\n referenceObject: virtualReference,\n onExited: () => {\n this.setState({\n shownColumnTooltip: null\n });\n },\n children: /*#__PURE__*/_jsx(ColumnStatistics, {\n model: model,\n column: column,\n onStatistics: () => {\n var _this$tooltip;\n (_this$tooltip = this.tooltip) === null || _this$tooltip === void 0 ? void 0 : _this$tooltip.update();\n }\n })\n }, column.name)\n });\n }\n handleGotoValueSelectedColumnNameChanged(columnName) {\n var _this$grid31;\n var {\n model\n } = this.props;\n var cursorRow = (_this$grid31 = this.grid) === null || _this$grid31 === void 0 ? void 0 : _this$grid31.state.cursorRow;\n var {\n gotoValueSelectedColumnName: prevColumnName,\n gotoValueManuallyChanged\n } = this.state;\n if (cursorRow != null) {\n var _index = model.getColumnIndexByName(columnName);\n var _column2 = IrisGridUtils.getColumnByName(model.columns, columnName);\n var prevColumn = IrisGridUtils.getColumnByName(model.columns, prevColumnName);\n if (_index == null || _column2 == null) {\n return;\n }\n var _value3 = model.valueForCell(_index, cursorRow);\n var text = IrisGridUtils.convertValueToText(_value3, _column2.type);\n\n // do NOT update value if user manually changed value AND column type remains the same\n if (gotoValueManuallyChanged && _column2.type === (prevColumn === null || prevColumn === void 0 ? void 0 : prevColumn.type)) {\n this.setState({\n gotoValueSelectedColumnName: columnName,\n gotoValueError: ''\n });\n } else {\n // do update, and set goToValueManuallyChanged to false because value was automatically changed\n this.setState({\n gotoValueSelectedColumnName: columnName,\n gotoValue: text,\n gotoValueError: '',\n gotoValueManuallyChanged: false\n });\n }\n }\n this.setState({\n gotoValueSelectedColumnName: columnName,\n gotoValueError: ''\n });\n }\n handleGotoValueSelectedFilterChanged(value) {\n this.setState({\n gotoValueSelectedFilter: value,\n gotoValueError: ''\n });\n }\n handleGotoValueSubmitted(isBackwards) {\n var {\n gotoValue\n } = this.state;\n this.seekRow(gotoValue, isBackwards);\n }\n render() {\n var _rollupConfig$columns7,\n _rollupConfig$columns8,\n _this7 = this,\n _this$grid33,\n _this$grid33$state$dr,\n _openOptions;\n var {\n children,\n customFilters,\n getDownloadWorker,\n isSelectingColumn,\n isStuckToBottom,\n isStuckToRight,\n model,\n name,\n onlyFetchVisibleColumns,\n alwaysFetchColumns,\n advancedSettings,\n onAdvancedSettingsChange,\n canDownloadCsv,\n onCreateChart\n } = this.props;\n var {\n metricCalculator,\n metrics,\n isFilterBarShown,\n isSelectingPartition,\n isMenuShown,\n isReady,\n copyOperation,\n focusedFilterBarColumn,\n loadingText,\n loadingScrimProgress,\n loadingSpinnerShown,\n loadingCancelShown,\n loadingBlocksGrid,\n shownColumnTooltip,\n hoverAdvancedFilter,\n shownAdvancedFilter,\n hoverSelectColumn,\n quickFilters,\n advancedFilters,\n searchFilter,\n selectDistinctColumns,\n movedColumns,\n movedRows,\n formatter,\n conditionalFormats,\n conditionalFormatPreview,\n conditionalFormatEditIndex,\n columnAlignmentMap,\n sorts,\n reverse,\n customColumns,\n selectedRanges,\n isTableDownloading,\n tableDownloadStatus,\n tableDownloadProgress,\n tableDownloadEstimatedTime,\n showSearchBar,\n searchValue,\n selectedSearchColumns,\n invertSearchColumns,\n aggregationSettings,\n selectedAggregation,\n rollupConfig,\n openOptions,\n pendingSavePromise,\n pendingSaveError,\n pendingRowCount,\n pendingDataErrors,\n pendingDataMap,\n toastMessage,\n frozenColumns,\n columnHeaderGroups,\n showOverflowModal,\n showNoPastePermissionModal,\n noPastePermissionError,\n overflowText,\n overflowButtonTooltipProps,\n expandCellTooltipProps,\n hoverTooltipProps,\n isGotoShown,\n gotoRow,\n gotoRowError,\n gotoValueError,\n gotoValueSelectedColumnName,\n gotoValue,\n gotoValueSelectedFilter,\n partitionConfig\n } = this.state;\n if (!isReady) {\n return null;\n }\n var theme = this.getTheme();\n var {\n columnHeaderHeight: singleColumnHeaderHeight\n } = theme;\n var filter = this.getCachedFilter(customFilters, quickFilters, advancedFilters, searchFilter);\n var userColumnWidths = metricCalculator.getUserColumnWidths();\n var stateOverride = this.getCachedStateOverride(model, theme, hoverSelectColumn, isFilterBarShown, isSelectingColumn, loadingScrimProgress, quickFilters, advancedFilters, sorts, reverse, rollupConfig, isMenuShown);\n var top = metrics ? metrics.top : 0;\n var bottom = metrics ? metrics.bottomViewport : 0;\n var left = null;\n var right = null;\n if (onlyFetchVisibleColumns) {\n left = metrics ? metrics.left : 0;\n right = metrics ? metrics.right : 0;\n }\n var isVisible = metrics != null && metrics.width > 0 && metrics.height > 0;\n var isRollup = ((_rollupConfig$columns7 = rollupConfig === null || rollupConfig === void 0 ? void 0 : (_rollupConfig$columns8 = rollupConfig.columns) === null || _rollupConfig$columns8 === void 0 ? void 0 : _rollupConfig$columns8.length) !== null && _rollupConfig$columns7 !== void 0 ? _rollupConfig$columns7 : 0) > 0;\n var focusField = null;\n var debounceMs = metrics ? Math.min(Math.max(IrisGrid.minDebounce, Math.round(metrics.rowCount / 200)), IrisGrid.maxDebounce) : IrisGrid.maxDebounce;\n if (isFilterBarShown && focusedFilterBarColumn != null && metrics != null) {\n var {\n gridX,\n gridY,\n allColumnXs,\n allColumnWidths,\n width\n } = metrics;\n var columnX = allColumnXs.get(focusedFilterBarColumn);\n var columnWidth = allColumnWidths.get(focusedFilterBarColumn);\n if (columnX != null && columnWidth != null) {\n var _theme$filterBarHeigh, _theme$filterBarHeigh2, _this$grid32;\n var x = gridX + columnX;\n var y = gridY - ((_theme$filterBarHeigh = theme.filterBarHeight) !== null && _theme$filterBarHeigh !== void 0 ? _theme$filterBarHeigh : 0);\n var fieldWidth = columnWidth + 1; // cover right border\n var fieldHeight = ((_theme$filterBarHeigh2 = theme.filterBarHeight) !== null && _theme$filterBarHeigh2 !== void 0 ? _theme$filterBarHeigh2 : 0) - 1; // remove bottom border\n var style = {\n top: y,\n left: x,\n minWidth: Math.min(fieldWidth, width - x),\n // Don't cause overflow\n height: fieldHeight\n };\n var _value4 = '';\n var isValid = true;\n var modelColumn = this.getModelColumn(focusedFilterBarColumn);\n assertNotNull(modelColumn);\n var quickFilter = quickFilters.get(modelColumn);\n var advancedFilter = advancedFilters.get(modelColumn);\n if (quickFilter != null) {\n _value4 = quickFilter.text;\n isValid = quickFilter.filter != null;\n }\n var isBarFiltered = quickFilters.size !== 0 || advancedFilters.size !== 0;\n focusField = /*#__PURE__*/_jsx(FilterInputField, {\n ref: this.filterInputRef,\n style: style,\n className: classNames({\n error: !isValid,\n active: _value4 !== '' || advancedFilter != null,\n 'iris-grid-has-filter': isBarFiltered\n }),\n isAdvancedFilterSet: advancedFilter != null,\n onAdvancedFiltersTriggered: () => {\n this.setState({\n shownAdvancedFilter: focusedFilterBarColumn\n });\n },\n onChange: this.handleFilterBarChange,\n onDone: this.handleFilterBarDone,\n onTab: this.handleFilterBarTab,\n onContextMenu: (_this$grid32 = this.grid) === null || _this$grid32 === void 0 ? void 0 : _this$grid32.handleContextMenu,\n debounceMs: debounceMs,\n value: _value4\n }, focusedFilterBarColumn);\n }\n }\n var loadingElement = null;\n if (loadingText != null) {\n var loadingStatus = /*#__PURE__*/_jsxs(\"div\", {\n className: \"iris-grid-loading-status\",\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: classNames('iris-grid-loading-status-bar', {\n show: loadingSpinnerShown\n }),\n children: loadingText\n }), /*#__PURE__*/_jsxs(\"button\", {\n type: \"button\",\n onClick: this.handleCancel,\n className: classNames('iris-grid-btn-cancel', {\n show: loadingCancelShown\n }),\n children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsClose,\n transform: \"down-1\"\n }), \"Cancel\"]\n })]\n });\n var _gridY = metrics ? metrics.gridY : 0;\n loadingElement = /*#__PURE__*/_jsx(\"div\", {\n className: \"iris-grid-loading\",\n style: loadingBlocksGrid ? {\n top: _gridY\n } : {},\n children: loadingStatus\n });\n }\n var columnTooltip = null;\n if (shownColumnTooltip != null && metrics) {\n var _this$tooltip2;\n columnTooltip = this.getColumnTooltip(shownColumnTooltip, metrics, model);\n // #510 We may need to update the position of the tooltip if it's already opened and columns are resized\n (_this$tooltip2 = this.tooltip) === null || _this$tooltip2 === void 0 ? void 0 : _this$tooltip2.update();\n }\n var filterBar = [];\n if (metrics && isFilterBarShown) {\n var {\n gridX: _gridX,\n gridY: _gridY2,\n visibleColumns,\n allColumnXs: _allColumnXs,\n allColumnWidths: _allColumnWidths\n } = metrics;\n var {\n filterBarHeight\n } = theme;\n var _loop2 = function _loop2() {\n var columnIndex = visibleColumns[i];\n var columnX = _allColumnXs.get(columnIndex);\n var columnWidth = _allColumnWidths.get(columnIndex);\n var modelColumn = _this7.getModelColumn(columnIndex);\n if (modelColumn != null) {\n var isFilterable = model.isFilterable(modelColumn);\n if (isFilterable && columnX != null && columnWidth != null && columnWidth > 0) {\n var _x = _gridX + columnX + columnWidth - 24;\n var _y = _gridY2 - (filterBarHeight !== null && filterBarHeight !== void 0 ? filterBarHeight : 0) + 2; // 2 acts as top margin for the button\n var _style = {\n position: 'absolute',\n top: _y,\n left: _x\n };\n var _advancedFilter = advancedFilters.get(modelColumn);\n var isFilterSet = _advancedFilter != null;\n var isFilterVisible = columnIndex === hoverAdvancedFilter || columnIndex === focusedFilterBarColumn || isFilterSet;\n var element = /*#__PURE__*/_jsx(\"div\", {\n className: classNames('advanced-filter-button-container', {\n hidden: !isFilterVisible\n }),\n style: _style,\n children: isFilterVisible && /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: classNames('btn-link-icon advanced-filter-button', {\n 'filter-set': isFilterSet\n }),\n onClick: () => {\n _this7.setState({\n shownAdvancedFilter: columnIndex\n });\n },\n onContextMenu: event => {\n var _this7$grid;\n (_this7$grid = _this7.grid) === null || _this7$grid === void 0 ? void 0 : _this7$grid.handleContextMenu(event);\n },\n onMouseEnter: () => {\n _this7.setState({\n hoverAdvancedFilter: columnIndex\n });\n },\n onMouseLeave: () => {\n _this7.setState({\n hoverAdvancedFilter: null\n });\n },\n children: /*#__PURE__*/_jsxs(\"div\", {\n className: \"fa-layers\",\n children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: dhFilterFilled,\n className: \"filter-solid\"\n }), /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsFilter,\n className: \"filter-light\"\n })]\n })\n })\n }, columnIndex);\n filterBar.push(element);\n }\n }\n };\n for (var i = 0; i < visibleColumns.length; i += 1) {\n _loop2();\n }\n }\n var advancedFilterMenus = [];\n if (metrics) {\n var {\n gridX: _gridX2,\n visibleColumns: _visibleColumns,\n allColumnXs: _allColumnXs2,\n allColumnWidths: _allColumnWidths2,\n columnHeaderHeight\n } = metrics;\n var _loop3 = function _loop3() {\n var columnIndex = _visibleColumns[_i4];\n var columnX = _allColumnXs2.get(columnIndex);\n var columnWidth = _allColumnWidths2.get(columnIndex);\n if (columnX != null && columnWidth != null && columnWidth > 0) {\n var xColumnHeader = _gridX2 + columnX;\n var xFilterBar = _gridX2 + columnX + columnWidth - 20;\n var _style2 = isFilterBarShown ? {\n position: 'absolute',\n top: columnHeaderHeight,\n left: xFilterBar,\n width: 20,\n height: theme.filterBarHeight\n } : {\n position: 'absolute',\n top: 0,\n left: xColumnHeader,\n width: columnWidth,\n height: columnHeaderHeight\n };\n var _modelColumn = _this7.getModelColumn(columnIndex);\n if (_modelColumn != null) {\n var _column3 = model.columns[_modelColumn];\n if (_column3 == null) {\n // Grid metrics is likely out of sync with model\n log.warn(\"Column does not exist at index \".concat(_modelColumn, \" for column array of length \").concat(model.columns.length));\n // eslint-disable-next-line no-continue\n return \"continue\";\n }\n var _advancedFilter2 = advancedFilters.get(_modelColumn);\n var {\n options: advancedFilterOptions\n } = _advancedFilter2 || {};\n var sort = TableUtils.getSortForColumn(model.sort, _column3.name);\n var sortDirection = sort ? sort.direction : null;\n if (!isSortDirection(sortDirection)) {\n throw new Error(\"Invalid sort direction: \".concat(sortDirection));\n }\n var element = /*#__PURE__*/_jsx(\"div\", {\n className: \"advanced-filter-menu-container\",\n style: _style2,\n children: /*#__PURE__*/_jsx(Popper, {\n className: \"advanced-filter-menu-popper\",\n onEntered: _this7.getAdvancedMenuOpenedHandler(columnIndex),\n onExited: () => {\n _this7.handleAdvancedMenuClosed(columnIndex);\n },\n isShown: shownAdvancedFilter === columnIndex,\n interactive: true,\n closeOnBlur: true,\n options: {\n positionFixed: true\n },\n children: _this7.getCachedAdvancedFilterMenuActions(model, _column3, advancedFilterOptions, sortDirection, formatter)\n })\n }, columnIndex);\n advancedFilterMenus.push(element);\n }\n }\n };\n for (var _i4 = 0; _i4 < _visibleColumns.length; _i4 += 1) {\n var _ret = _loop3();\n if (_ret === \"continue\") continue;\n }\n }\n var optionItems = this.getCachedOptionItems(onCreateChart !== undefined && model.isChartBuilderAvailable, model.isCustomColumnsAvailable, model.isFormatColumnsAvailable, model.isOrganizeColumnsAvailable, model.isRollupAvailable, model.isTotalsAvailable || isRollup, model.isSelectDistinctAvailable, model.isExportAvailable, this.toggleFilterBarAction, this.toggleSearchBarAction, this.toggleGotoRowAction, isFilterBarShown, showSearchBar, canDownloadCsv, this.isTableSearchAvailable(), isGotoShown, advancedSettings.size > 0);\n var hiddenColumns = this.getCachedHiddenColumns(metricCalculator, userColumnWidths);\n var openOptionsStack = openOptions.map(option => {\n switch (option.type) {\n case OptionType.CHART_BUILDER:\n return /*#__PURE__*/_jsx(ChartBuilder, {\n model: model,\n onChange: this.handleChartChange,\n onSubmit: this.handleChartCreate\n }, OptionType.CHART_BUILDER);\n case OptionType.VISIBILITY_ORDERING_BUILDER:\n return /*#__PURE__*/_jsx(VisibilityOrderingBuilder, {\n model: model,\n movedColumns: movedColumns,\n hiddenColumns: hiddenColumns,\n columnHeaderGroups: columnHeaderGroups,\n onColumnVisibilityChanged: this.handleColumnVisibilityChanged,\n onReset: this.handleColumnVisibilityReset,\n onMovedColumnsChanged: this.handleMovedColumnsChanged,\n onColumnHeaderGroupChanged: this.handleHeaderGroupsChanged\n }, OptionType.VISIBILITY_ORDERING_BUILDER);\n case OptionType.CONDITIONAL_FORMATTING:\n return /*#__PURE__*/_jsx(ConditionalFormattingMenu, {\n rules: conditionalFormats,\n onChange: this.handleConditionalFormatsChange,\n onCreate: this.handleConditionalFormatCreate,\n onSelect: this.handleConditionalFormatEdit\n });\n case OptionType.CONDITIONAL_FORMATTING_EDIT:\n assertNotNull(model.columns);\n assertNotNull(this.handleConditionalFormatEditorUpdate);\n return /*#__PURE__*/_jsx(ConditionalFormatEditor, {\n dh: model.dh,\n columns: model.columns,\n rule: conditionalFormatPreview,\n onUpdate: this.handleConditionalFormatEditorUpdate,\n onSave: this.handleConditionalFormatEditorSave,\n onCancel: this.handleConditionalFormatEditorCancel\n });\n case OptionType.CUSTOM_COLUMN_BUILDER:\n return /*#__PURE__*/_jsx(CustomColumnBuilder, {\n model: model,\n customColumns: customColumns,\n onSave: this.handleUpdateCustomColumns,\n onCancel: this.handleMenuBack\n }, OptionType.CUSTOM_COLUMN_BUILDER);\n case OptionType.ROLLUP_ROWS:\n return /*#__PURE__*/_jsx(RollupRows, {\n model: model,\n onChange: this.handleRollupChange,\n config: rollupConfig\n }, OptionType.ROLLUP_ROWS);\n case OptionType.AGGREGATIONS:\n return /*#__PURE__*/_jsx(Aggregations, {\n settings: aggregationSettings,\n isRollup: isRollup,\n availablePlacements: isEditableGridModel(model) && model.isEditable ? ['top'] : ['top', 'bottom'],\n onChange: this.handleAggregationsChange,\n onEdit: this.handleAggregationEdit,\n dh: model.dh\n });\n case OptionType.AGGREGATION_EDIT:\n return selectedAggregation && /*#__PURE__*/_jsx(AggregationEdit, {\n aggregation: selectedAggregation,\n columns: model.originalColumns,\n onChange: this.handleAggregationChange\n });\n case OptionType.TABLE_EXPORTER:\n return /*#__PURE__*/_jsx(TableCsvExporter, {\n model: model,\n name: name,\n userColumnWidths: userColumnWidths,\n movedColumns: movedColumns,\n isDownloading: isTableDownloading,\n tableDownloadStatus: tableDownloadStatus,\n tableDownloadProgress: tableDownloadProgress,\n tableDownloadEstimatedTime: tableDownloadEstimatedTime !== null && tableDownloadEstimatedTime !== void 0 ? tableDownloadEstimatedTime : undefined,\n onDownload: this.handleDownloadTable,\n onDownloadStart: this.handleDownloadTableStart,\n onCancel: this.handleCancelDownloadTable,\n selectedRanges: selectedRanges\n }, OptionType.TABLE_EXPORTER);\n case OptionType.SELECT_DISTINCT:\n return /*#__PURE__*/_jsx(SelectDistinctBuilder, {\n model: model,\n selectDistinctColumns: selectDistinctColumns,\n onChange: this.handleSelectDistinctChanged\n });\n case OptionType.ADVANCED_SETTINGS:\n return /*#__PURE__*/_jsx(AdvancedSettingsMenu, {\n items: advancedSettings,\n onChange: onAdvancedSettingsChange\n });\n default:\n throw Error(\"Unexpected option type \".concat(option.type));\n }\n });\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"iris-grid\",\n role: \"presentation\",\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"iris-grid-column\",\n children: [children != null && /*#__PURE__*/_jsx(\"div\", {\n className: \"iris-grid-bar\",\n children: children\n }), /*#__PURE__*/_jsx(CSSTransition, {\n in: isSelectingPartition,\n timeout: ThemeExport.transitionSlowMs,\n classNames: \"iris-grid-bar-horizontal\",\n onEnter: this.handleAnimationStart,\n onEntered: this.handleAnimationEnd,\n onExit: this.handleAnimationStart,\n onExited: this.handleAnimationEnd,\n mountOnEnter: true,\n unmountOnExit: true,\n children: /*#__PURE__*/_jsx(\"div\", {\n className: \"iris-grid-partition-selector-wrapper iris-grid-bar iris-grid-bar-primary\",\n children: isPartitionedGridModel(model) && model.isPartitionRequired && /*#__PURE__*/_jsx(IrisGridPartitionSelector, {\n model: model,\n partitionConfig: partitionConfig,\n onChange: this.handlePartitionChange\n })\n })\n }), /*#__PURE__*/_jsx(CSSTransition, {\n in: showSearchBar,\n timeout: ThemeExport.transitionSlowMs,\n classNames: \"iris-grid-bar-horizontal\",\n onEnter: this.handleAnimationStart,\n onEntered: this.handleAnimationEnd,\n onExit: this.handleAnimationStart,\n onExited: this.handleAnimationEnd,\n mountOnEnter: true,\n unmountOnExit: true,\n children: /*#__PURE__*/_jsx(\"div\", {\n className: \"iris-grid-bar\",\n children: /*#__PURE__*/_jsx(CrossColumnSearch, {\n value: searchValue,\n selectedColumns: selectedSearchColumns,\n invertSelection: invertSearchColumns,\n onChange: this.handleCrossColumnSearch,\n columns: model.columns,\n ref: this.crossColumnRef\n })\n })\n }), /*#__PURE__*/_jsxs(Grid, {\n ref: grid => {\n this.grid = grid;\n },\n isStickyBottom: !isEditableGridModel(model) || !model.isEditable,\n isStuckToBottom: isStuckToBottom,\n isStuckToRight: isStuckToRight,\n metricCalculator: metricCalculator,\n model: model,\n keyHandlers: this.getKeyHandlers(),\n mouseHandlers: this.getMouseHandlers(),\n movedColumns: movedColumns,\n movedRows: movedRows,\n onError: this.handleGridError,\n onViewChanged: this.handleViewChanged,\n onSelectionChanged: this.handleSelectionChanged,\n onMovedColumnsChanged: this.handleMovedColumnsChanged,\n renderer: this.renderer,\n stateOverride: stateOverride,\n theme: theme,\n children: [/*#__PURE__*/_jsx(IrisGridCellOverflowModal, {\n isOpen: showOverflowModal,\n text: overflowText,\n onClose: this.handleOverflowClose\n }), isVisible && /*#__PURE__*/_jsx(IrisGridModelUpdater, {\n model: model,\n top: top,\n bottom: bottom,\n left: left,\n right: right,\n filter: filter,\n formatter: formatter,\n columnAlignmentMap: columnAlignmentMap,\n sorts: sorts,\n reverse: reverse,\n movedColumns: movedColumns,\n customColumns: customColumns,\n hiddenColumns: hiddenColumns,\n alwaysFetchColumns: this.getAlwaysFetchColumns(alwaysFetchColumns, model.columns, movedColumns, model.floatingLeftColumnCount, model.floatingRightColumnCount, (_this$grid33 = this.grid) === null || _this$grid33 === void 0 ? void 0 : (_this$grid33$state$dr = _this$grid33.state.draggingColumn) === null || _this$grid33$state$dr === void 0 ? void 0 : _this$grid33$state$dr.range),\n formatColumns: this.getCachedPreviewFormatColumns(model.dh, model.columns, conditionalFormats, conditionalFormatPreview,\n // Disable the preview format when we press Back on the format edit page\n ((_openOptions = openOptions[openOptions.length - 1]) === null || _openOptions === void 0 ? void 0 : _openOptions.type) === OptionType.CONDITIONAL_FORMATTING_EDIT ? conditionalFormatEditIndex !== null && conditionalFormatEditIndex !== void 0 ? conditionalFormatEditIndex : undefined : undefined),\n rollupConfig: this.getModelRollupConfig(model.originalColumns, rollupConfig, aggregationSettings),\n totalsConfig: this.getModelTotalsConfig(model.columns, rollupConfig, aggregationSettings),\n selectDistinctColumns: selectDistinctColumns,\n pendingRowCount: pendingRowCount,\n pendingDataMap: pendingDataMap,\n frozenColumns: frozenColumns,\n columnHeaderGroups: columnHeaderGroups,\n partitionConfig: partitionConfig,\n showExtraGroupColumn: this.showExtraGroupColumn\n }), !isMenuShown && /*#__PURE__*/_jsx(\"div\", {\n className: \"grid-settings-button\",\n style: {\n height: \"\".concat(singleColumnHeaderHeight, \"px\"),\n width: \"\".concat(singleColumnHeaderHeight, \"px\")\n },\n children: /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n \"data-testid\": \"btn-iris-grid-settings-button-\".concat(name),\n onClick: this.handleMenu,\n icon: /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsMenu,\n transform: \"up-1\"\n }),\n tooltip: \"Table Options\"\n })\n }), focusField, loadingElement, filterBar, columnTooltip, advancedFilterMenus, overflowButtonTooltipProps && this.getOverflowButtonTooltip(overflowButtonTooltipProps), expandCellTooltipProps && this.getExpandCellTooltip(expandCellTooltipProps), hoverTooltipProps && this.getHoverTooltip(hoverTooltipProps)]\n }), /*#__PURE__*/_jsx(GotoRow, {\n ref: this.gotoRowRef,\n model: model,\n isShown: isGotoShown,\n gotoRow: gotoRow,\n gotoRowError: gotoRowError,\n gotoValueError: gotoValueError,\n onGotoRowSubmit: this.handleGotoRowSelectedRowNumberSubmit,\n onGotoRowNumberChanged: this.handleGotoRowSelectedRowNumberChanged,\n onClose: this.handleGotoRowClosed,\n onEntering: this.handleAnimationStart,\n onEntered: this.handleAnimationEnd,\n onExiting: () => {\n this.handleAnimationStart();\n this.focus();\n },\n onExited: this.handleAnimationEnd,\n gotoValueSelectedColumnName: gotoValueSelectedColumnName,\n gotoValue: gotoValue,\n gotoValueFilter: gotoValueSelectedFilter,\n onGotoValueSelectedColumnNameChanged: this.handleGotoValueSelectedColumnNameChanged,\n onGotoValueSelectedFilterChanged: this.handleGotoValueSelectedFilterChanged,\n onGotoValueChanged: this.handleGotoValueChanged,\n onGotoValueSubmit: this.handleGotoValueSubmitted\n }), /*#__PURE__*/_jsx(PendingDataBottomBar, {\n error: pendingSaveError,\n isSaving: pendingSavePromise != null,\n saveTooltip: \"Commit (\".concat(this.commitAction.shortcut.getDisplayText(), \")\"),\n discardTooltip: \"Discard (\".concat(this.discardAction.shortcut.getDisplayText(), \")\"),\n pendingDataErrors: pendingDataErrors,\n pendingDataMap: pendingDataMap,\n onEntering: this.handleAnimationStart,\n onEntered: this.handleAnimationEnd,\n onExiting: this.handleAnimationStart,\n onExited: this.handleAnimationEnd,\n onSave: this.handlePendingCommitClicked,\n onDiscard: this.handlePendingDiscardClicked\n }), /*#__PURE__*/_jsx(ToastBottomBar, {\n children: toastMessage\n }), /*#__PURE__*/_jsx(IrisGridCopyHandler, {\n model: model,\n copyOperation: copyOperation !== null && copyOperation !== void 0 ? copyOperation : undefined,\n onEntering: this.handleAnimationStart,\n onEntered: this.handleAnimationEnd,\n onExiting: this.handleAnimationStart,\n onExited: this.handleAnimationEnd\n }), /*#__PURE__*/_jsx(TableSaver, {\n dh: model.dh,\n ref: tableSaver => {\n this.tableSaver = tableSaver;\n },\n getDownloadWorker: getDownloadWorker,\n onDownloadCompleted: this.handleDownloadCompleted,\n onDownloadCanceled: this.handleDownloadCanceled,\n onDownloadProgressUpdate: this.handleDownloadProgressUpdate,\n isDownloading: tableDownloadStatus === TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING,\n formatter: formatter\n })]\n }), /*#__PURE__*/_jsx(SlideTransition, {\n in: isMenuShown,\n onEntering: this.handleAnimationStart,\n onEntered: this.handleAnimationEnd,\n onExiting: this.handleAnimationStart,\n onExited: this.handleAnimationEnd,\n mountOnEnter: true,\n unmountOnExit: true,\n children: /*#__PURE__*/_jsx(\"div\", {\n className: \"table-sidebar\",\n children: /*#__PURE__*/_jsxs(Stack, {\n children: [/*#__PURE__*/_jsx(Page, {\n title: \"Table Options\",\n onClose: this.handleMenuClose,\n children: /*#__PURE__*/_jsx(Menu, {\n onSelect: i => this.handleMenuSelect(optionItems[i]),\n items: optionItems\n })\n }), openOptionsStack.map((option, i) => /*#__PURE__*/_jsx(Page, {\n title: openOptions[i].title,\n onBack: this.handleMenuBack,\n onClose: this.handleMenuClose,\n children: option\n }, openOptions[i].type))]\n })\n })\n }), /*#__PURE__*/_jsx(ContextActions, {\n actions: this.contextActions\n }), /*#__PURE__*/_jsx(NoPastePermissionModal, {\n isOpen: showNoPastePermissionModal,\n onClose: this.handleCloseNoPastePermissionModal,\n errorMessage: noPastePermissionError\n })]\n });\n }\n}\n_defineProperty(IrisGrid, \"contextType\", IrisGridThemeContext);\n_defineProperty(IrisGrid, \"minDebounce\", 150);\n_defineProperty(IrisGrid, \"maxDebounce\", 500);\n_defineProperty(IrisGrid, \"loadingSpinnerDelay\", 800);\n_defineProperty(IrisGrid, \"defaultProps\", {\n children: null,\n advancedFilters: EMPTY_MAP,\n advancedSettings: EMPTY_MAP,\n alwaysFetchColumns: EMPTY_ARRAY,\n conditionalFormats: EMPTY_ARRAY,\n customColumnFormatMap: EMPTY_MAP,\n columnAlignmentMap: EMPTY_MAP,\n isFilterBarShown: false,\n applyInputFiltersOnInit: false,\n movedColumns: EMPTY_ARRAY,\n movedRows: EMPTY_ARRAY,\n inputFilters: EMPTY_ARRAY,\n customFilters: EMPTY_ARRAY,\n onCreateChart: undefined,\n onColumnSelected: () => undefined,\n onDataSelected: () => undefined,\n onError: () => undefined,\n onStateChange: () => undefined,\n onAdvancedSettingsChange: () => undefined,\n partitions: undefined,\n partitionConfig: undefined,\n quickFilters: EMPTY_MAP,\n selectDistinctColumns: EMPTY_ARRAY,\n sorts: EMPTY_ARRAY,\n reverse: false,\n customColumns: EMPTY_ARRAY,\n aggregationSettings: DEFAULT_AGGREGATION_SETTINGS,\n rollupConfig: undefined,\n userColumnWidths: EMPTY_MAP,\n userRowHeights: EMPTY_MAP,\n onSelectionChanged: () => undefined,\n isSelectingColumn: false,\n isSelectingPartition: false,\n isStuckToBottom: false,\n isStuckToRight: false,\n columnSelectionValidator: null,\n columnAllowedCursor: 'linker',\n columnNotAllowedCursor: 'linker-not-allowed',\n copyCursor: 'copy',\n name: 'table',\n onlyFetchVisibleColumns: true,\n showSearchBar: false,\n searchValue: '',\n selectedSearchColumns: null,\n invertSearchColumns: true,\n onContextMenu: () => EMPTY_ARRAY,\n pendingDataMap: EMPTY_MAP,\n getDownloadWorker: DownloadServiceWorkerUtils.getServiceWorker,\n settings: {\n timeZone: 'America/New_York',\n defaultDateTimeFormat: DateUtils.FULL_DATE_FORMAT,\n showTimeZone: false,\n showTSeparator: true,\n truncateNumbersWithPound: false,\n showEmptyStrings: true,\n showNullStrings: true,\n showExtraGroupColumn: true,\n formatter: EMPTY_ARRAY,\n decimalFormatOptions: PropTypes.shape({\n defaultFormatString: PropTypes.string\n }),\n integerFormatOptions: PropTypes.shape({\n defaultFormatString: PropTypes.string\n })\n },\n canCopy: true,\n canDownloadCsv: true,\n frozenColumns: null,\n theme: null,\n // Do not set a default density prop since we need to know if it overrides the global density setting\n density: undefined,\n canToggleSearch: true,\n mouseHandlers: EMPTY_ARRAY,\n keyHandlers: EMPTY_ARRAY\n});\nexport default IrisGrid;\n//# sourceMappingURL=IrisGrid.js.map"],"names":["_defineProperty","e","r","_toPropertyKey","t","i","_toPrimitive","log","Log","AdvancedFilterCreatorFilterItem","PureComponent","columnType","filterType","TableUtils","getLabelForNumberFilter","getLabelForTextFilter","getLabelForDateFilter","getLabelForBooleanFilter","props","memoizeOne","column","operation","value","timeZone","tableUtils","_value","filterTypes","selectedType","_this$typeDropdown","prevProps","eventTargetValue","onChange","event","onDelete","formatter","showValueInput","typeOptionElements","isValid","_type","label","element","_jsx","_jsxs","Select","typeDropdown","classNames","Button","vsTrash","AdvancedFilterCreatorSelectValueList","values","v","selectedValues","dh","table","filters","invertSelection","itemIndex","selectedIndex","isSelected","offset","items","visibleItemIndex","top","bottom","data","row","displayValue","itemCount","item","isLoading","viewportSize","topRow","bottomRow","SelectValueList","list","FadeTransition","LoadingSpinner","AdvancedFilterCreatorSelectValue","prevState","searchTable","searchText","count","formattedCount","formattedTableSize","prefix","searchTablePromise","error","filter","showSearch","columnName","displayedValuesText","placeholderText","AdvancedFilterCreator","nanoid","_options$filterItems$","_options$filterItems","memoize","React","model","options","filterOperators","filterItems","_ref","columnIndex","assertNotNull","isSortable","index","valuesTable","_valuesTable$columns$","sort","PromiseUtils","_this$focusTrapContai","_this$focusTrapContai2","_this$focusTrapContai3","_this$focusTrapContai4","inputs","FilterOperator","operator","assertFilterOperatorValue","filterIndex","key","addToExisting","ContextActionUtils","onDone","filterItem","direction","onSortChange","onFilterChange","_ref2","operators","_this","sortDirection","valuesTableError","isValuesTableAvailable","isBoolean","isDateType","filterItemElements","_loop","filterOperator","isAndFilter","operatorElement","showAddFilterItem","addFilterItem","FontAwesomeIcon","dhNewCircleLargeFilled","dhSortAmountDown","_Fragment","makeTernaryFormatRule","config","prevRule","styleDBString","getStyleDBString","conditionDBString","getConditionDBString","makeRowFormatColumn","rule","makeColumnFormatColumn","col","FormatterType","NumberCondition","StringCondition","DateCondition","BooleanCondition","CharCondition","FormatStyleType","getLabelForStyleType","option","getBackgroundForStyleConfig","type","customConfig","getColorForStyleConfig","color","bg","getNumberConditionText","start","end","getTextForNumberCondition","getStringConditionText","getTextForStringCondition","getDateConditionText","getTextForDateCondition","getBooleanConditionText","getTextForBooleanCondition","getCharConditionText","getTextForCharCondition","getLabelForNumberCondition","condition","getLabelForStringCondition","getLabelForDateCondition","getLabelForBooleanCondition","getLabelForCharCondition","getDefaultConditionForType","getDefaultValueForType","getConditionConfig","getDefaultConditionConfigForType","getDefaultStyleConfig","getShortLabelForStringCondition","getShortLabelForDateCondition","getShortLabelForBooleanCondition","getShortLabelForCharCondition","getShortLabelForNumberCondition","getShortLabelForConditionType","getFormatColumns","columns","rules","result","rowFormatConfig","columnFormatConfigMap","_ref3","formatterType","name","prevFormatColumn","formatColumn","isDateConditionValid","dateTimeString","rest","tzCode","DateUtils","isSupportedColumn","_ref4","IrisGridBottomBar","animation","children","className","isShown","onClick","onEntering","onEntered","onExiting","onExited","CSSTransition","ThemeExport","HIDE_TIMEOUT","MAX_NUMBER_ROWS_SHOWN","PendingDataBottomBar","isSaving","onSave","onDiscard","discardTooltip","saveTooltip","pendingDataErrors","pendingDataMap","_onExited","isSuccessShown","setIsSuccessShown","useState","wasSuccessShown","setWasSuccessShown","successTimeout","useRef","prevIsSaving","usePrevious","errorMessage","useMemo","useEffect","pendingRowCount","commitIcon","vsPass","vsWarning","asyncGeneratorStep","n","o","a","c","u","_asyncToGenerator","_next","_throw","isCopyRangesOperation","copyOperation","isCopyHeaderOperation","IrisGridCopyHandler","Component","copyState","rowCount","buttonState","ranges","GridRange","text","_this2","copyToClipboard","_this3","columnDepth","movedColumns","modelIndex","GridUtils","copyText","includeHeaders","userColumnWidths","_movedColumns","formatValues","hiddenColumns","IrisGridUtils","modelRanges","subtractRanges","formatValue","CanceledPromiseError","copyButtonText","statusMessageText","isButtonContainerVisible","isFetching","isDone","FilterInputField","debounceMs","debounce","_this$inputField","_this$inputField2","initialValue","isChanged","setGridFocus","defocusInput","_this$inputField3","relatedTarget","backward","onTab","onContextMenu","style","isAdvancedFilterSet","onAdvancedFiltersTriggered","inputField","dhFilterFilled","vsFilter","CopyCellKeyHandler","KeyHandler","irisGrid","grid","mouseX","mouseY","gridPoint","CopyKeyHandler","selectedRanges","ReverseKeyHandler","IrisGridShortcuts","reverse","ClearFilterKeyHandler","ToastBottomBar","setIsShown","timeout","prevChildren","startTimer","useCallback","COLUMN_BUFFER_PAGES","IrisGridModelUpdater","left","right","columnAlignmentMap","sorts","customColumns","alwaysFetchColumns","rollupConfig","totalsConfig","selectDistinctColumns","EMPTY_ARRAY","EMPTY_MAP","frozenColumns","formatColumns","columnHeaderGroups","partitionConfig","showExtraGroupColumn","isTotalsAvailable","isRollupAvailable","useOnChange","isIrisGridTreeTableModel","sortsForModel","isPartitionedGridModel","STATS_LABEL_OVERRIDES","ColumnStatistics","_STATS_LABEL_OVERRIDE","w","numRows","stats","onStatistics","statistics","_column$displayName","loading","showGenerateStatistics","statisticElements","description","formattedValue","statisticElement","rowCountLabel","isExpandableGridModel","formattedRowCount","CopyButton","dhSortSlash","dhFreeze","vsLock","dhRefresh","CrossColumnSearch","searchValue","selectedColumns","filterColumns","filterValue","searchFilter","_this$searchField$cur","update","isConfigureColumnsShown","hasAllColumnsSelected","hasNoColumnsSelected","icon","dhSquareFilled","dhGearFilled","dhCheckSquare","vsCircleLargeFilled","dhWarningCircleFilled","dhRemoveSquareFilled","SearchInput","Tooltip","Popper","Checkbox","ownKeys","_objectSpread","IrisGridPartitionSelector","memoizee","Pending","keysTable","keyTable","baseTable","prevConfig","partitionTables","newPartitionConfig","selectedValue","newPartitions","tCopy","partitionFilters","partition","partitionColumn","newConfig","_","_x","_x2","partitions","previousFilter","previousPartition","previousColumn","partitionFilter","partitionSelectors","Picker","vsChevronRight","vsKey","vsMerge","SelectDistinctBuilder","filteredInputs","val","deepEqual","prevInputs","input","inputIndex","_ref5","disableAddButton","AdvancedSettingsMenu","_onChange","Menu","isOn","AdvancedSettingsType","DEFAULT_CALLBACK","getRuleValue","getRuleTitle","ConditionalFormattingMenu","onCreate","onSelect","handleRuleClick","handleDeleteClick","updatedRules","handleDragHandlerClick","handleDragEnd","DragUtils","sourceIndex","destinationIndex","sourceInput","DragDropContext","Droppable","provided","snapshot","Draggable","vsGripper","numberConditionOptions","stringConditions","dateConditions","booleanConditions","charConditions","isNumberConditionValid","startValue","endValue","getNumberInputs","selectedCondition","handleValueChange","handleStartValueChange","handleEndValueChange","conditionValue","getStringInputs","getDateInputs","getBooleanInputs","getCharInputs","ConditionEditor","selectedColumnType","prevColumnType","setPrevColumnType","setCondition","setValue","setStartValue","setEndValue","conditions","handleConditionChange","conditionInputs","DEFAULT_BACKGROUND","DEFAULT_COLOR_LIGHT","DEFAULT_COLOR_DARK","DEFAULT_DROPDOWN_WIDTH","StyleEditor","_config$customConfig$","_config$customConfig","styleType","setStyleType","background","setBackground","setShown","dropdownWidth","setDropdownWidth","csContainer","handleBackgroundChange","handleMenuClosed","handleToggleClick","updateDropdownWidth","styleOptions","ColorUtils","renderOptions","optionArray","vsCheck","renderMenuElement","DropdownMenu","makeDefaultConfig","ColumnFormatEditor","_columns$find","selectedColumn","setColumn","conditionConfig","setConditionConfig","conditionValid","setConditionValid","selectedStyle","setStyle","handleColumnChange","newColumn","updatedConditionConfig","handleStyleChange","updatedStyleConfig","columnNames","ComboBox","RowFormatEditor","getFormatterTypeIcon","FormatColumnWhereIcon","FormatRowWhereIcon","getFormatterTypeLabel","formatterTypes","ConditionalFormatEditor","_defaultRule$type","originalColumns","onUpdate","onCancel","defaultRule","selectedFormatter","setFormatter","setRule","setIsValid","handleCancel","handleSave","handleFormatterChange","handleRuleChange","ruleConfig","isRuleValid","updatedRule","IrisGridCellOverflowModal","_editorRef$current$ge","_editorRef$current2","isOpen","onClose","isOpened","setIsOpened","height","setHeight","showLineNumbers","setShowLineNumbers","isFormatted","setIsFormatted","canFormat","setCanFormat","editorRef","toggleLineNumbers","formatAsJSON","_editorRef$current","autoSetLineNumbers","_editor$getModel$getL","_editor$getModel","editor","handleToggle","onEditorInitialized","contentHeight","Modal","ModalHeader","vsListOrdered","vsJson","ModalBody","Editor","DEFAULT_FORMAT_STRING","GotoRow","forwardRef","ref","gotoRow","gotoRowError","gotoValueError","onGotoRowSubmit","_onEntered","onGotoRowNumberChanged","gotoValueSelectedColumnName","gotoValue","gotoValueFilter","onGotoValueSelectedColumnNameChanged","onGotoValueSelectedFilterChanged","onGotoValueChanged","onGotoValueSubmit","gotoRowInputRef","gotoValueInputRef","isGotoRowActive","setIsGotoRowActive","isIrisGridTableModelTemplate","gotoRowInputId","handleGotoValueNumberKeyDown","onGotoValueInputChanged","handleGotoValueKeySubmit","normalizedType","useImperativeHandle","_gotoRowInputRef$curr","selectInput","_gotoRowInputRef$curr2","_gotoValueInputRef$cu","renderValueInput","DateTimeInput","FilterType","vsClose","vsArrowUp","vsArrowDown","NoPastePermissionModal","pasteShortcutText","GLOBAL_SHORTCUTS","ModalFooter","VIEWPORT_LOADING_DELAY","UPDATE_DOWNLOAD_THROTTLE","SET_FILTER_DEBOUNCE","SEEK_ROW_DEBOUNCE","SET_CONDITIONAL_FORMAT_DEBOUNCE","DEFAULT_AGGREGATION_SETTINGS","UNFORMATTED_DATE_PATTERN","isEmptyConfig","advancedFilters","aggregationSettings","quickFilters","IrisGrid","_model$layoutHints","_model$layoutHints$hi","_model$columns$0$name","_model$columns$","advancedFilterOptions","isChartBuilderAvailable","isCustomColumnsAvailable","isFormatColumnsAvailable","isOrganizeColumnsAvailable","isSelectDistinctAvailable","isExportAvailable","toggleFilterBarAction","toggleSearchBarAction","toggleGotoRowAction","isFilterBarShown","showSearchBar","canDownloadCsv","canToggleSearch","showGotoRow","hasAdvancedSettings","optionItems","OptionType","dhGraphLineUp","dhEye","vsEdit","vsSplitHorizontal","dhTriangleDownSquare","vsSymbolOperator","vsRuby","vsCloudDownload","vsTools","vsSearch","vsReply","metricCalculator","aggregations","aggregationMap","selected","invert","AggregationUtils","operationMap","_operationMap$name","newOperations","rulesParam","preview","editIndex","_config$columns$lengt","_config$columns","agg","operationOrder","AggregationOperation","theme","hoverSelectColumn","isSelectingColumn","loadingScrimProgress","isMenuShown","customFilters","contextTheme","isEditable","floatingRowCount","density","_theme$rowFooterWidth","baseTheme","createDefaultIrisGridTheme","rowFooterWidth","densityTheme","keyHandlers","b","mouseHandlers","rendererProp","IrisGridRenderer","floatingLeftColumnCount","floatingRightColumnCount","draggingRange","floatingColumns","_i","_i2","columnSet","selectedSearchColumns","invertSearchColumns","throttle","loadingSpinnerShown","conditionalFormatPreview","tableDownloadProgress","tableDownloadEstimatedTime","tableDownloadStatus","TableCsvExporter","overflowButtonTooltipProps","wrapperStyle","popperOptions","expandCellTooltipProps","expandTooltipDisplayValue","isExpandAllAvailable","hoverTooltipProps","hoverDisplayValue","SHORTCUTS","isEditableGridModel","_aggregationSettings","conditionalFormats","customColumnFormatMap","_isFilterBarShown","isSelectingPartition","_model","movedColumnsProp","movedRowsProp","_rollupConfig","_userColumnWidths","userRowHeights","_showSearchBar","_searchValue","_selectedSearchColumns","_invertSearchColumns","_advancedFilters","_quickFilters","canCopy","_dh","_keyHandlers","_mouseHandlers","IrisGridCellOverflowMouseHandler","IrisGridRowTreeMouseHandler","IrisGridTokenMouseHandler","IrisGridColumnSelectMouseHandler","IrisGridColumnTooltipMouseHandler","IrisGridSortMouseHandler","IrisGridFilterMouseHandler","IrisGridContextMenuHandler","IrisGridDataSelectMouseHandler","PendingMouseHandler","IrisGridPartitionedTableMouseHandler","IrisGridCopyCellMouseHandler","movedRows","_metricCalculator","IrisGridMetricCalculator","searchColumns","_searchFilter","Formatter","inputFilters","settings","changedInputFilters","inputFilter","_advancedSettings$get","advancedSettings","replaceExistingFilters","loadingScrimStartTime","loadingScrimFinishTime","now","currentTime","totalTime","state","openOptions","isAggEditType","_this$grid$canvasWrap","_this$grid","_this$grid2","gridMetricState","renderer","rowIndex","rawValue","modelColumn","modelRow","metrics","modelColumns","modelRows","contextDensity","err","replaceExisting","newAdvancedFilters","newQuickFilters","_ref6","quickFilter","_ref7","_ref8","filterMap","_advancedSettings$get2","clearFiltersOnLinkerFilterUpdate","_ref9","filterList","combinedText","modelRange","clearRange","_ref10","_ref11","_ref12","_settings$defaultDeci","_settings$defaultInte","_settings$truncateNum","_settings$showEmptySt","_settings$showNullStr","_settings$showExtraGr","forceUpdate","globalColumnFormats","FormatterUtils","dateTimeFormatterOptions","defaultDecimalFormatOptions","defaultIntegerFormatOptions","truncateNumbersWithPound","showEmptyStrings","showNullStrings","isColumnFormatChanged","isDateFormattingChanged","isDecimalFormattingChanged","isIntegerFormattingChanged","isTruncateNumbersChanged","isShowEmptyStringsChanged","isShowNullStringsChanged","isShowExtraGroupColumnChanged","updatedFormats","_this$globalColumnFor","mergedColumnFormats","applyInputFiltersOnInit","reverseType","inputFiltersWithValues","resolved","_data","newPartition","_data2","partitionColumnSet","_ref13","_ref14","columnData","_value2","loadingText","resetRanges","loadingCancelShown","loadingBlocksGrid","_this$gridWrapper$get","_this$gridWrapper","minScrimTransitionTime","maxScrimTransitionTime","scrimTransitionTime","IrisGridModel","_this$grid3","columnCount","rightVisible","lastLeft","_this$grid4","_this$grid5","metricState","newLeft","columnVisibleIndex","_this$grid6","allFrozenColumns","visibleIndex","newMovedColumns","isExpandableColumnGridModel","modelIndexes","isVisible","_this$grid7","defaultWidth","calculatedWidth","getOrThrow","_model$layoutHints$fr","_model$layoutHints2","_this$grid8","onError","loadingMessage","_this$grid9","entries","columnWidth","_this$grid10","currentSorts","_this$grid11","_this$grid12","isAbs","_this$grid13","focusIndex","_model2","_column","_this$grid14","_model$layoutHints3","_dh$SearchDisplayMode","_dh$SearchDisplayMode2","searchDisplayMode","_this$crossColumnRef","_this$crossColumnRef2","_this$grid15","_this$grid16","_this$grid17","isGotoShown","_this$gotoRowRef$curr","cursorRow","cursorColumn","cellValue","_document","_document$activeEleme","pendingSavePromise","containsGridCellInputField","_this3$grid","ValidationError","newPendingSavePromise","_this4","onColumnSelected","dataMap","onDataSelected","_this5","groupedColumns","isExpandable","isGrouped","_this$grid18","oldSort","newSort","_this$grid19","_this$filterInputRef","focusedFilterBarColumn","_this$filterInputRef2","onCreateChart","_ref15","_this$grid20","selectedFormat","prevCustomColumnFormatMap","columnFormattingRule","alignment","_ref16","newColumnAlignmentMap","_ref17","newOptions","_ref18","isMissingPartitionError","_this$grid21","_this$grid$state","_this$grid22","selectionEndRow","bottomViewport","bottomNonFloating","_this$grid23","onSelectionChanged","onChangeApplied","_this$grid24","tooltip","oldCustomColumns","customColumn","removedColumnNames","newSorts","newSelectDistinctColumns","isReady","_this$grid25","_this$grid26","contentWidth","userWidths","_this$grid27","allColumns","visibleColumns","_ref19","width","_ref20","contentWidths","manualColumns","_i3","_modelIndex","_contentWidth","_rollupConfig$columns","_rollupConfig$columns2","added","removed","isRollup","changes","shouldStartLoading","op","aggregation","_rollupConfig$columns3","_rollupConfig$columns4","_ref21","_rollupConfig$columns5","_rollupConfig$columns6","fileName","frozenTable","tableSubscription","snapshotRanges","includeColumnHeaders","useUnformattedValues","_ref22","newAggregations","inputString","_arguments","_this6","_this6$grid","isBackwards","selectedColumnName","gotoValueSelectedFilter","searchFromRow","isContains","isIgnoreCase","_this6$grid2","columnDataType","startDate","inputValue","_this$tableSaver","isDeletableGridModel","columnAllowedCursor","irisGridState","gridState","onStateChange","_this$gridWrapper2","shownColumnTooltip","gridRect","popperMargin","columnHeaderHeight","allColumnXs","allColumnWidths","columnHeaderMaxDepth","columnX","clamp","rowNumber","rowInt","_this$grid28","_this$grid29","_this$grid30","boundedLeft","boundedWidth","virtualReference","_this$tooltip","_this$grid31","prevColumnName","gotoValueManuallyChanged","_index","_column2","prevColumn","_value3","_rollupConfig$columns7","_rollupConfig$columns8","_this7","_this$grid33","_this$grid33$state$dr","_openOptions","getDownloadWorker","isStuckToBottom","isStuckToRight","onlyFetchVisibleColumns","onAdvancedSettingsChange","hoverAdvancedFilter","shownAdvancedFilter","conditionalFormatEditIndex","isTableDownloading","selectedAggregation","pendingSaveError","toastMessage","showOverflowModal","showNoPastePermissionModal","noPastePermissionError","overflowText","singleColumnHeaderHeight","stateOverride","focusField","gridX","gridY","_theme$filterBarHeigh","_theme$filterBarHeigh2","_this$grid32","x","y","fieldWidth","fieldHeight","_value4","advancedFilter","isBarFiltered","loadingElement","loadingStatus","_gridY","columnTooltip","_this$tooltip2","filterBar","_gridX","_gridY2","_allColumnXs","_allColumnWidths","filterBarHeight","_loop2","isFilterable","_y","_style","_advancedFilter","isFilterSet","isFilterVisible","_this7$grid","advancedFilterMenus","_gridX2","_visibleColumns","_allColumnXs2","_allColumnWidths2","_loop3","_i4","xColumnHeader","xFilterBar","_style2","_modelColumn","_column3","_advancedFilter2","isSortDirection","_ret","openOptionsStack","ChartBuilder","VisibilityOrderingBuilder","CustomColumnBuilder","RollupRows","Aggregations","AggregationEdit","Grid","vsMenu","TableSaver","tableSaver","SlideTransition","Stack","Page","ContextActions","IrisGridThemeContext","DownloadServiceWorkerUtils","PropTypes"],"mappings":"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"}
|