@deephaven/code-studio 1.14.0 → 1.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/build/assets/{AppRoot-BBYNazf8.js → AppRoot-DE9mL1iQ.js} +6 -6
  2. package/build/assets/{AppRoot-BBYNazf8.js.map → AppRoot-DE9mL1iQ.js.map} +1 -1
  3. package/build/assets/{Chart-BkHpd-bt.js → Chart-Zx7VXoQ6.js} +2 -2
  4. package/build/assets/{Chart-BkHpd-bt.js.map → Chart-Zx7VXoQ6.js.map} +1 -1
  5. package/build/assets/{ControlType-gEY746PA.js → ControlType-ER5vRkTe.js} +4 -4
  6. package/build/assets/{ControlType-gEY746PA.js.map → ControlType-ER5vRkTe.js.map} +1 -1
  7. package/build/assets/{FormatterUtils-CcoN6XuX.js → FormatterUtils-xdeHWykf.js} +2 -2
  8. package/build/assets/{FormatterUtils-CcoN6XuX.js.map → FormatterUtils-xdeHWykf.js.map} +1 -1
  9. package/build/assets/{Grid-c_h7cge1.js → Grid-DVWKN6X6.js} +2 -2
  10. package/build/assets/{Grid-c_h7cge1.js.map → Grid-DVWKN6X6.js.map} +1 -1
  11. package/build/assets/{GridTokenMouseHandler-Bn-YbzXR.js → GridTokenMouseHandler-Bm8zeGiS.js} +2 -2
  12. package/build/assets/{GridTokenMouseHandler-Bn-YbzXR.js.map → GridTokenMouseHandler-Bm8zeGiS.js.map} +1 -1
  13. package/build/assets/{IrisGrid-BnpNxCJL.js → IrisGrid-GUewkavR.js} +2 -2
  14. package/build/assets/{IrisGrid-BnpNxCJL.js.map → IrisGrid-GUewkavR.js.map} +1 -1
  15. package/build/assets/{IrisGridModel-rXy2uf5L.js → IrisGridModel-CkvJzGrf.js} +3 -3
  16. package/build/assets/{IrisGridModel-rXy2uf5L.js.map → IrisGridModel-CkvJzGrf.js.map} +1 -1
  17. package/build/assets/{IrisGridShortcuts-1LuTuXgm.js → IrisGridShortcuts-1GBHnhRv.js} +2 -2
  18. package/build/assets/{IrisGridShortcuts-1LuTuXgm.js.map → IrisGridShortcuts-1GBHnhRv.js.map} +1 -1
  19. package/build/assets/{IrisGridThemeProvider-MK3ns1sp.js → IrisGridThemeProvider-B6qtZfTs.js} +5 -5
  20. package/build/assets/{IrisGridThemeProvider-MK3ns1sp.js.map → IrisGridThemeProvider-B6qtZfTs.js.map} +1 -1
  21. package/build/assets/{LocalWorkspaceStorage-DV42Rl3p.js → LocalWorkspaceStorage-cqkOt1tP.js} +2 -2
  22. package/build/assets/{LocalWorkspaceStorage-DV42Rl3p.js.map → LocalWorkspaceStorage-cqkOt1tP.js.map} +1 -1
  23. package/build/assets/{MarkdownEditor-sWfe2-zt.js → MarkdownEditor-Cxqkba2w.js} +2 -2
  24. package/build/assets/{MarkdownEditor-sWfe2-zt.js.map → MarkdownEditor-Cxqkba2w.js.map} +1 -1
  25. package/build/assets/{MarkdownNotebook-DknNKzBQ.js → MarkdownNotebook-BqGtaNap.js} +2 -2
  26. package/build/assets/{MarkdownNotebook-DknNKzBQ.js.map → MarkdownNotebook-BqGtaNap.js.map} +1 -1
  27. package/build/assets/{MissingPartitionError-CDmleHqN.js → MissingPartitionError-BXSpqiMY.js} +2 -2
  28. package/build/assets/{MissingPartitionError-CDmleHqN.js.map → MissingPartitionError-BXSpqiMY.js.map} +1 -1
  29. package/build/assets/{MockChartModel-BJSRU1UT.js → MockChartModel-CEf8IaJN.js} +2 -2
  30. package/build/assets/{MockChartModel-BJSRU1UT.js.map → MockChartModel-CEf8IaJN.js.map} +1 -1
  31. package/build/assets/{StyleGuideRoot-DC2Vl5OL.js → StyleGuideRoot-DwIVk99V.js} +2 -2
  32. package/build/assets/{StyleGuideRoot-DC2Vl5OL.js.map → StyleGuideRoot-DwIVk99V.js.map} +1 -1
  33. package/build/assets/{index-CBd9EV56.js → index-CLQFKcTg.js} +2 -2
  34. package/build/assets/{index-CBd9EV56.js.map → index-CLQFKcTg.js.map} +1 -1
  35. package/build/assets/{index-D41BRrfd.js → index-D3Hxj4WA.js} +3 -3
  36. package/build/assets/{index-D41BRrfd.js.map → index-D3Hxj4WA.js.map} +1 -1
  37. package/build/assets/{index-Cp-Uv4by.js → index-DkYb-V39.js} +4 -4
  38. package/build/assets/{index-Cp-Uv4by.js.map → index-DkYb-V39.js.map} +1 -1
  39. package/build/index.html +2 -2
  40. package/package.json +8 -8
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGrid-BnpNxCJL.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, 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 || _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, 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 || 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, 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, jsxs as _jsxs, 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;\n ((_this$focusTrapContai = this.focusTrapContainer) === null || _this$focusTrapContai === void 0 || (_this$focusTrapContai = _this$focusTrapContai.current) === null || _this$focusTrapContai === void 0 ? void 0 : _this$focusTrapContai.querySelector('button,select,input,textarea')).focus();\n }\n handleFocusTrapStart() {\n var _this$focusTrapContai2;\n var inputs = (_this$focusTrapContai2 = this.focusTrapContainer) === null || _this$focusTrapContai2 === void 0 || (_this$focusTrapContai2 = _this$focusTrapContai2.current) === null || _this$focusTrapContai2 === void 0 ? void 0 : _this$focusTrapContai2.querySelectorAll('button,select,input,textarea');\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 = /*#__PURE__*/function (FormatterType) {\n FormatterType[\"CONDITIONAL\"] = \"conditional\";\n FormatterType[\"ROWS\"] = \"rows\";\n return FormatterType;\n}({});\nexport var NumberCondition = /*#__PURE__*/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 return NumberCondition;\n}({});\nexport var StringCondition = /*#__PURE__*/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 return StringCondition;\n}({});\nexport var DateCondition = /*#__PURE__*/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 return DateCondition;\n}({});\nexport var BooleanCondition = /*#__PURE__*/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 return BooleanCondition;\n}({});\nexport var CharCondition = /*#__PURE__*/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 return CharCondition;\n}({});\nexport var FormatStyleType = /*#__PURE__*/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 return FormatStyleType;\n}({});\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, { useRef } 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 var nodeRef = useRef(null);\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 nodeRef: nodeRef,\n children: /*#__PURE__*/_jsx(\"div\", {\n ref: nodeRef,\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, 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, 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 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/**\n * Different states for the current copy operation\n */\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, 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 || _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 || _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 || _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 showAdvancedFilterButton,\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 }), showAdvancedFilterButton && /*#__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 showAdvancedFilterButton: false,\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 { isEditableGridModel, isExpandableGridModel } from '@deephaven/grid';\nimport \"./ColumnStatistics.css\";\nimport { jsx as _jsx, jsxs as _jsxs, 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 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 tooltip: \"Copy column name\",\n copy: column.name,\n isQuiet: true\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 }), columnIndex != null && isEditableGridModel(model) && model.isEditable && !model.keyColumnSet.has(column.name) && !model.valueColumnSet.has(column.name) && /*#__PURE__*/_jsxs(\"div\", {\n className: \"column-statistics-status\",\n children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsLock,\n className: \"mr-1\"\n }), \"Not editable\"]\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/** Automatically generate the statistics when the row count is below this threshold */\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, Fragment as _Fragment, 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 || _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, 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 }, _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 || baseTable.close();\n keysTable === null || keysTable === void 0 || keysTable.close();\n partitionTables === null || partitionTables === 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, 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 '@hello-pangea/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, 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 React, { 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, 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, 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, jsxs as _jsxs, 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, jsxs as _jsxs, 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, 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 { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Editor } from '@deephaven/console';\nimport { CopyButton, Icon, Modal, ModalBody, ModalHeader, ToggleButton, Tooltip } from '@deephaven/components';\nimport { vsJson, vsListOrdered } from '@deephaven/icons';\nimport \"./IrisGridCellOverflowModal.css\";\nimport { jsx as _jsx, 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 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__*/_jsxs(ToggleButton, {\n isSelected: showLineNumbers,\n \"aria-label\": \"Toggle line numbers\",\n onChange: toggleLineNumbers,\n children: [/*#__PURE__*/_jsx(Icon, {\n UNSAFE_className: \"action-button-icon-with-tooltip\",\n children: /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsListOrdered\n })\n }), /*#__PURE__*/_jsx(Tooltip, {\n children: \"Toggle line numbers\"\n })]\n }), canFormat && /*#__PURE__*/_jsxs(ToggleButton, {\n isSelected: isFormatted,\n \"aria-label\": \"Format as JSON\",\n onChange: formatAsJSON,\n children: [/*#__PURE__*/_jsx(Icon, {\n UNSAFE_className: \"action-button-icon-with-tooltip\",\n children: /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsJson\n })\n }), /*#__PURE__*/_jsx(Tooltip, {\n children: \"Format as JSON\"\n })]\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, jsxs as _jsxs, 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 || _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 || _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 || _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, 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 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 { isColumnHeaderGroup } from \"./ColumnHeaderGroup.js\";\nimport { jsx as _jsx, Fragment as _Fragment, 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 constructor(props) {\n var _model$layoutHints, _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 // When the loading scrim started/when it should extend to the end of the screen.\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, \"slideTransitionRef\", /*#__PURE__*/React.createRef());\n _defineProperty(this, \"bottomTransitionRef\", /*#__PURE__*/React.createRef());\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 /**\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 _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 || (_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].map(handler => typeof handler === 'function' ? handler(this) : handler), {\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 // Apply live changes\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.handleFrozenColumnsChanged = this.handleFrozenColumnsChanged.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 getMetricCalculator\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), ...(canCopy ? [new IrisGridCopyCellMouseHandler(this)] : [])];\n if (canCopy) {\n _keyHandlers.push(new CopyKeyHandler(this));\n }\n var _movedColumns = movedColumnsProp.length > 0 ? movedColumnsProp : _model.initialMovedColumns;\n var movedRows = movedRowsProp.length > 0 ? movedRowsProp : _model.initialMovedRows;\n var _metricCalculator = getMetricCalculator({\n userColumnWidths: new Map(_userColumnWidths),\n userRowHeights: new Map(userRowHeights),\n movedColumns: _movedColumns,\n initialColumnWidths: new Map(_model === null || _model === void 0 || (_model$layoutHints = _model.layoutHints) === null || _model$layoutHints === void 0 || (_model$layoutHints = _model$layoutHints.hiddenColumns) === null || _model$layoutHints === void 0 ? void 0 : _model$layoutHints.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 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 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\n /**\n * Get the model column index for the provided visible index\n * @param columnIndex Visible column index\n * @returns Model column index, or null if not found\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 if (columnIndex != null && columnIndex < 0) {\n // ColumnBy sources aren't movable, so just return the index directly\n return columnIndex;\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(_ref0 => {\n var {\n advancedFilters,\n quickFilters\n } = _ref0;\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(_ref1 => {\n var {\n quickFilters\n } = _ref1;\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(_ref10) {\n var {\n quickFilters,\n advancedFilters\n } = _ref10;\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 data = this.getRowDataMap(rowIndex);\n var partitionColumnSet = new Set(model.partitionColumns.map(column => column.name));\n var values = Object.entries(data).filter(_ref11 => {\n var [key, _] = _ref11;\n return partitionColumnSet.has(key);\n }).map(_ref12 => {\n var [key, columnData] = _ref12;\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 value = String(this.getValueForCell(columnIndex, rowIndex, rawValue));\n copyToClipboard(value).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 || _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 || 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 metricState = this.getMetricState();\n assertNotNull(metricState);\n var scrollColumn = metricCalculator.getScrollLeftForColumn(column, metricState, metrics);\n if (scrollColumn != null) {\n var _this$grid4;\n (_this$grid4 = this.grid) === null || _this$grid4 === void 0 || _this$grid4.setViewState({\n left: scrollColumn,\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$grid5;\n var {\n metricCalculator,\n movedColumns\n } = this.state;\n metricCalculator.setColumnWidth(GridUtils.getModelIndex(columnVisibleIndex, movedColumns), 0);\n (_this$grid5 = this.grid) === null || _this$grid5 === void 0 || _this$grid5.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\n /**\n * Updates the entire list of frozen columns.\n * Used by VisibilityOrderingBuilder.\n * @param frozenColumns The new list of frozen columns\n */\n handleFrozenColumnsChanged(frozenColumns) {\n this.setState({\n frozenColumns\n });\n }\n toggleExpandColumn(modelIndex, expandDescendants) {\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), expandDescendants);\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$grid6;\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 = metrics.calculatedColumnWidths.get(modelIndex);\n\n // If we haven't scrolled to the column, the calculated width will be undefined.\n // This means the function was triggered by the visibility ordering menu,\n // so just reset the column width to default.\n if (defaultWidth !== calculatedWidth && calculatedWidth != null) {\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$grid6 = this.grid) === null || _this$grid6 === void 0 || _this$grid6.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 : EMPTY_ARRAY\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$grid7;\n (_this$grid7 = this.grid) === null || _this$grid7 === void 0 || _this$grid7.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$grid8;\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$grid8 = this.grid) === null || _this$grid8 === void 0 || _this$grid8.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$grid9;\n this.setState({\n metrics: (_this$grid9 = this.grid) === null || _this$grid9 === void 0 ? void 0 : _this$grid9.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$grid0;\n this.startLoading('Sorting...');\n this.setState({\n sorts\n });\n (_this$grid0 = this.grid) === null || _this$grid0 === void 0 || _this$grid0.forceUpdate();\n }\n sortColumn(modelColumn) {\n var _this$grid1;\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$grid1 = this.grid) === null || _this$grid1 === void 0 || _this$grid1.forceUpdate();\n }\n reverse(reverse) {\n var _this$grid10;\n this.startLoading('Reversing...');\n this.setState({\n reverse\n });\n (_this$grid10 = this.grid) === null || _this$grid10 === void 0 || _this$grid10.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\n } = this.props;\n var {\n columnCount\n } = model;\n for (var i = 0; i < columnCount; i += 1) {\n var modelColumn = this.getModelColumn(i);\n if (modelColumn != null) {\n var column = model.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$grid11;\n (_this$grid11 = this.grid) === null || _this$grid11 === void 0 || _this$grid11.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 || (_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 || _this$crossColumnRef2.current.focus();\n } else {\n var _this$grid12;\n (_this$grid12 = this.grid) === null || _this$grid12 === void 0 || _this$grid12.focus();\n }\n });\n }\n toggleGotoRow() {\n var _this$grid13, _this$grid14;\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 || _this$gotoRowRef$curr.focus();\n return;\n }\n var cursorRow = (_this$grid13 = this.grid) === null || _this$grid13 === void 0 ? void 0 : _this$grid13.state.cursorRow;\n var cursorColumn = (_this$grid14 = this.grid) === null || _this$grid14 === void 0 ? void 0 : _this$grid14.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;\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 || (_document = _document.activeElement) === null || _document === void 0 ? void 0 : _document.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 || _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$grid15;\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$grid15 = this.grid) === null || _this$grid15 === void 0 || _this$grid15.forceUpdate();\n }\n handleAdvancedFilterDone() {\n var _this$grid16;\n (_this$grid16 = this.grid) === null || _this$grid16 === void 0 || _this$grid16.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 || _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(_ref13 => {\n var {\n focusedFilterBarColumn,\n quickFilters\n } = _ref13;\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$grid17;\n (_this$grid17 = this.grid) === null || _this$grid17 === void 0 || _this$grid17.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(_ref14 => {\n var {\n columnAlignmentMap = EMPTY_MAP\n } = _ref14;\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(_ref15 => {\n var {\n openOptions\n } = _ref15;\n var newOptions = [...openOptions];\n newOptions.pop();\n return {\n openOptions: newOptions\n };\n });\n }\n handleMenuSelect(option) {\n this.setState(_ref16 => {\n var {\n openOptions\n } = _ref16;\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$grid18;\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$grid18 = this.grid) === null || _this$grid18 === void 0 || _this$grid18.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$grid19;\n var {\n model\n } = this.props;\n var {\n selectionEndRow = 0\n } = (_this$grid$state = (_this$grid19 = this.grid) === null || _this$grid19 === void 0 ? void 0 : _this$grid19.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 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\n // We get 2 identical ranges here,\n // but consolidating in `Grid#moveSelection` causes\n // deselection to break, so just consolidate here.\n // This will only update the goto row input for row index\n if (GridRange.rowCount(GridRange.consolidate(selectedRanges)) === 1 && selectedRanges[0].startRow != null) {\n this.setState({\n gotoRow: \"\".concat(selectedRanges[0].startRow + 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 var {\n columnHeaderGroups: prevColumnHeaderGroups\n } = this.state;\n if (prevColumnHeaderGroups === columnHeaderGroups) {\n return;\n }\n this.setState({\n // undo/redo will pass already parsed groups\n // Parsing them again causes a loop with undo/redo that makes it unusable\n columnHeaderGroups: columnHeaderGroups.every(group => isColumnHeaderGroup(group) && group.isValid()) ? columnHeaderGroups : IrisGridUtils.parseColumnHeaderGroups(model, columnHeaderGroups).groups\n }, () => {\n var _this$grid20;\n return (_this$grid20 = this.grid) === null || _this$grid20 === void 0 ? void 0 : _this$grid20.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 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$grid21;\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$grid21 = this.grid) === null || _this$grid21 === void 0 || _this$grid21.forceUpdate();\n }\n handleResizeColumn(modelIndex) {\n var _this$grid22;\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$grid22 = this.grid) === null || _this$grid22 === void 0 || _this$grid22.forceUpdate();\n }\n handleResizeAllColumns() {\n var _this$grid23;\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(_ref17 => {\n var [_, width] = _ref17;\n return width !== 0;\n }).map(_ref18 => {\n var [modelIndex] = _ref18;\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$grid23 = this.grid) === null || _this$grid23 === void 0 || _this$grid23.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 || (_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 || (_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(_ref19 => {\n var {\n aggregationSettings\n } = _ref19;\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 || (_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: EMPTY_ARRAY,\n frozenColumns: EMPTY_ARRAY,\n sorts: EMPTY_ARRAY,\n reverse: false,\n selectDistinctColumns: EMPTY_ARRAY\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(_ref20 => {\n var {\n aggregationSettings\n } = _ref20;\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 || _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 || _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$grid24;\n this.setState({\n gotoRowError: '',\n gotoValueError: ''\n });\n (_this$grid24 = this.grid) === null || _this$grid24 === void 0 || _this$grid24.setFocusRow(0);\n } else if (rowInt < 0) {\n var _this$grid25;\n this.setState({\n gotoRowError: '',\n gotoValueError: ''\n });\n (_this$grid25 = this.grid) === null || _this$grid25 === void 0 || _this$grid25.setFocusRow(rowInt + rowCount);\n } else {\n var _this$grid26;\n (_this$grid26 = this.grid) === null || _this$grid26 === void 0 || _this$grid26.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 || _this$tooltip.update();\n }\n })\n }, column.name)\n });\n }\n handleGotoValueSelectedColumnNameChanged(columnName) {\n var _this$grid27;\n var {\n model\n } = this.props;\n var cursorRow = (_this$grid27 = this.grid) === null || _this$grid27 === void 0 ? void 0 : _this$grid27.state.cursorRow;\n var {\n gotoValueSelectedColumnName: prevColumnName,\n gotoValueManuallyChanged\n } = this.state;\n if (cursorRow != null) {\n var index = model.getColumnIndexByName(columnName);\n var column = IrisGridUtils.getColumnByName(model.columns, columnName);\n var prevColumn = IrisGridUtils.getColumnByName(model.columns, prevColumnName);\n if (index == null || column == null) {\n return;\n }\n var value = model.valueForCell(index, cursorRow);\n var text = IrisGridUtils.convertValueToText(value, column.type);\n\n // do NOT update value if user manually changed value AND column type remains the same\n if (gotoValueManuallyChanged && column.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\n /**\n * Render the input field for the focused filter\n * @param metrics Grid metrics\n * @param metricCalculator Metric calculator\n * @param focusedFilterBarColumn Column index for the focused filter\n * @param quickFilters Quick filters map\n * @param advancedFilters Advanced filters map\n * @returns The filter input field element or null if not applicable\n */\n getFilterBarInput(metrics, metricCalculator, focusedFilterBarColumn, quickFilters, advancedFilters) {\n var _this$grid28;\n if (metrics == null || focusedFilterBarColumn == null) {\n return null;\n }\n var metricState = this.getMetricState();\n if (metricState == null) {\n return null;\n }\n var filterBoxCoordinates = metricCalculator.getFilterInputCoordinates(focusedFilterBarColumn, metricState, metrics);\n if (filterBoxCoordinates == null) {\n return null;\n }\n var debounceMs = Math.min(Math.max(IrisGrid.minDebounce, Math.round(metrics.rowCount / 200)), IrisGrid.maxDebounce);\n var {\n x,\n y,\n width: fieldWidth,\n height: fieldHeight\n } = filterBoxCoordinates;\n var {\n width\n } = metrics;\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 value = '';\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 value = quickFilter.text;\n isValid = quickFilter.filter != null;\n }\n var isBarFiltered = quickFilters.size !== 0 || advancedFilters.size !== 0;\n var showAdvancedFilterButton = metricCalculator.getAdvancedFilterButtonCoordinates(focusedFilterBarColumn, metricState, metrics) != null;\n return /*#__PURE__*/_jsx(FilterInputField, {\n ref: this.filterInputRef,\n style: style,\n className: classNames({\n error: !isValid,\n active: value !== '' || advancedFilter != null,\n 'iris-grid-has-filter': isBarFiltered\n }),\n showAdvancedFilterButton: showAdvancedFilterButton,\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$grid28 = this.grid) === null || _this$grid28 === void 0 ? void 0 : _this$grid28.handleContextMenu,\n debounceMs: debounceMs,\n value: value\n }, focusedFilterBarColumn);\n }\n render() {\n var _rollupConfig$columns7,\n _rollupConfig$columns8,\n _this7 = this,\n _this$grid29,\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 || (_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 = isFilterBarShown ? this.getFilterBarInput(metrics, metricCalculator, focusedFilterBarColumn, quickFilters, advancedFilters) : null;\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 || _this$tooltip2.update();\n }\n var filterBar = [];\n if (metrics && isFilterBarShown) {\n var metricState = this.getMetricState();\n\n // Advanced Filter buttons\n var {\n visibleColumns\n } = metrics;\n var _loop2 = function _loop2() {\n var columnIndex = visibleColumns[i];\n var modelColumn = _this7.getModelColumn(columnIndex);\n if (modelColumn != null) {\n var isFilterable = model.isFilterable(modelColumn);\n var buttonCoordinates = isFilterable && metricState ? metricCalculator.getAdvancedFilterButtonCoordinates(columnIndex, metricState, metrics) : null;\n if (buttonCoordinates != null) {\n var {\n x,\n y\n } = buttonCoordinates;\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 || _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,\n visibleColumns: _visibleColumns,\n allColumnXs,\n allColumnWidths,\n columnHeaderHeight\n } = metrics;\n var _loop3 = function _loop3() {\n var columnIndex = _visibleColumns[_i4];\n var columnX = allColumnXs.get(columnIndex);\n var columnWidth = allColumnWidths.get(columnIndex);\n if (columnX != null && columnWidth != null && columnWidth > 0) {\n var xColumnHeader = gridX + columnX;\n var xFilterBar = gridX + columnX + columnWidth - 20;\n var style = 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 column = model.columns[modelColumn];\n if (column == 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 1; // continue\n }\n var advancedFilter = advancedFilters.get(modelColumn);\n var {\n options: advancedFilterOptions\n } = advancedFilter || {};\n var sort = TableUtils.getSortForColumn(model.sort, column.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: style,\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, column, advancedFilterOptions, sortDirection, formatter)\n })\n }, columnIndex);\n advancedFilterMenus.push(element);\n }\n }\n };\n for (var _i4 = 0; _i4 < _visibleColumns.length; _i4 += 1) {\n if (_loop3()) 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 onFrozenColumnsChanged: this.handleFrozenColumnsChanged\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 nodeRef: this.slideTransitionRef,\n children: /*#__PURE__*/_jsx(\"div\", {\n ref: this.slideTransitionRef,\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 nodeRef: this.bottomTransitionRef,\n children: /*#__PURE__*/_jsx(\"div\", {\n ref: this.bottomTransitionRef,\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$grid29 = this.grid) === null || _this$grid29 === void 0 || (_this$grid29 = _this$grid29.state.draggingColumn) === null || _this$grid29 === void 0 ? void 0 : _this$grid29.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 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 columnAllowedCursor: 'linker',\n columnNotAllowedCursor: 'linker-not-allowed',\n copyCursor: 'copy',\n name: 'table',\n onlyFetchVisibleColumns: true,\n showSearchBar: false,\n searchValue: '',\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 },\n canCopy: true,\n canDownloadCsv: true,\n frozenColumns: EMPTY_ARRAY,\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 getMetricCalculator: function getMetricCalculator() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return new IrisGridMetricCalculator(...args);\n }\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","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","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","nodeRef","useRef","CSSTransition","ThemeExport","HIDE_TIMEOUT","MAX_NUMBER_ROWS_SHOWN","PendingDataBottomBar","isSaving","onSave","onDiscard","discardTooltip","saveTooltip","pendingDataErrors","pendingDataMap","_onExited","isSuccessShown","setIsSuccessShown","useState","wasSuccessShown","setWasSuccessShown","successTimeout","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","showAdvancedFilterButton","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","isEditableGridModel","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","ToggleButton","Icon","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$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","handler","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","_aggregationSettings","conditionalFormats","customColumnFormatMap","_isFilterBarShown","isSelectingPartition","_model","movedColumnsProp","movedRowsProp","_rollupConfig","_userColumnWidths","userRowHeights","_showSearchBar","_searchValue","_selectedSearchColumns","_invertSearchColumns","_advancedFilters","_quickFilters","canCopy","getMetricCalculator","_dh","_keyHandlers","_mouseHandlers","IrisGridCellOverflowMouseHandler","IrisGridRowTreeMouseHandler","IrisGridTokenMouseHandler","IrisGridColumnSelectMouseHandler","IrisGridColumnTooltipMouseHandler","IrisGridSortMouseHandler","IrisGridFilterMouseHandler","IrisGridContextMenuHandler","IrisGridDataSelectMouseHandler","PendingMouseHandler","IrisGridPartitionedTableMouseHandler","IrisGridCopyCellMouseHandler","movedRows","_metricCalculator","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","_ref0","_ref1","_ref10","_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","newPartition","partitionColumnSet","_ref11","_ref12","columnData","loadingText","resetRanges","loadingCancelShown","loadingBlocksGrid","_this$gridWrapper$get","_this$gridWrapper","minScrimTransitionTime","maxScrimTransitionTime","scrimTransitionTime","IrisGridModel","_this$grid3","columnCount","metricState","scrollColumn","_this$grid4","columnVisibleIndex","_this$grid5","allFrozenColumns","visibleIndex","newMovedColumns","expandDescendants","isExpandableColumnGridModel","modelIndexes","isVisible","_this$grid6","defaultWidth","calculatedWidth","_model$layoutHints$fr","_model$layoutHints2","_this$grid7","onError","loadingMessage","_this$grid8","entries","columnWidth","_this$grid9","currentSorts","_this$grid0","_this$grid1","isAbs","_this$grid10","focusIndex","_this$grid11","_model$layoutHints3","_dh$SearchDisplayMode","_dh$SearchDisplayMode2","searchDisplayMode","_this$crossColumnRef","_this$crossColumnRef2","_this$grid12","_this$grid13","_this$grid14","isGotoShown","_this$gotoRowRef$curr","cursorRow","cursorColumn","cellValue","_document","pendingSavePromise","containsGridCellInputField","_this3$grid","ValidationError","newPendingSavePromise","_this4","onColumnSelected","dataMap","onDataSelected","_this5","groupedColumns","isExpandable","isGrouped","_this$grid15","oldSort","newSort","_this$grid16","_this$filterInputRef","focusedFilterBarColumn","_this$filterInputRef2","onCreateChart","_ref13","_this$grid17","selectedFormat","prevCustomColumnFormatMap","columnFormattingRule","alignment","_ref14","newColumnAlignmentMap","_ref15","newOptions","_ref16","isMissingPartitionError","_this$grid18","_this$grid$state","_this$grid19","selectionEndRow","bottomViewport","bottomNonFloating","onSelectionChanged","onChangeApplied","prevColumnHeaderGroups","group","isColumnHeaderGroup","_this$grid20","tooltip","oldCustomColumns","customColumn","removedColumnNames","newSorts","newSelectDistinctColumns","isReady","_this$grid21","_this$grid22","contentWidth","getOrThrow","userWidths","_this$grid23","allColumns","visibleColumns","_ref17","width","_ref18","contentWidths","manualColumns","_i3","_modelIndex","_contentWidth","_rollupConfig$columns","_rollupConfig$columns2","added","removed","isRollup","changes","shouldStartLoading","op","aggregation","_rollupConfig$columns3","_rollupConfig$columns4","_ref19","_rollupConfig$columns5","_rollupConfig$columns6","fileName","frozenTable","tableSubscription","snapshotRanges","includeColumnHeaders","useUnformattedValues","_ref20","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$grid24","_this$grid25","_this$grid26","boundedLeft","boundedWidth","virtualReference","_this$tooltip","_this$grid27","prevColumnName","gotoValueManuallyChanged","prevColumn","_this$grid28","filterBoxCoordinates","x","y","fieldWidth","fieldHeight","advancedFilter","isBarFiltered","_rollupConfig$columns7","_rollupConfig$columns8","_this7","_this$grid29","_openOptions","getDownloadWorker","isStuckToBottom","isStuckToRight","onlyFetchVisibleColumns","onAdvancedSettingsChange","hoverAdvancedFilter","shownAdvancedFilter","conditionalFormatEditIndex","isTableDownloading","selectedAggregation","pendingSaveError","toastMessage","showOverflowModal","showNoPastePermissionModal","noPastePermissionError","overflowText","singleColumnHeaderHeight","stateOverride","focusField","loadingElement","loadingStatus","gridY","columnTooltip","_this$tooltip2","filterBar","_loop2","isFilterable","buttonCoordinates","isFilterSet","isFilterVisible","_this7$grid","advancedFilterMenus","gridX","_visibleColumns","_loop3","_i4","xColumnHeader","xFilterBar","isSortDirection","openOptionsStack","ChartBuilder","VisibilityOrderingBuilder","CustomColumnBuilder","RollupRows","Aggregations","AggregationEdit","Grid","vsMenu","TableSaver","tableSaver","SlideTransition","Stack","Page","ContextActions","IrisGridThemeContext","DownloadServiceWorkerUtils","_len","args","_key","IrisGridMetricCalculator"],"mappings":"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"}
1
+ {"version":3,"file":"IrisGrid-GUewkavR.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, 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 || _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, 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 || 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, 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, jsxs as _jsxs, 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;\n ((_this$focusTrapContai = this.focusTrapContainer) === null || _this$focusTrapContai === void 0 || (_this$focusTrapContai = _this$focusTrapContai.current) === null || _this$focusTrapContai === void 0 ? void 0 : _this$focusTrapContai.querySelector('button,select,input,textarea')).focus();\n }\n handleFocusTrapStart() {\n var _this$focusTrapContai2;\n var inputs = (_this$focusTrapContai2 = this.focusTrapContainer) === null || _this$focusTrapContai2 === void 0 || (_this$focusTrapContai2 = _this$focusTrapContai2.current) === null || _this$focusTrapContai2 === void 0 ? void 0 : _this$focusTrapContai2.querySelectorAll('button,select,input,textarea');\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 = /*#__PURE__*/function (FormatterType) {\n FormatterType[\"CONDITIONAL\"] = \"conditional\";\n FormatterType[\"ROWS\"] = \"rows\";\n return FormatterType;\n}({});\nexport var NumberCondition = /*#__PURE__*/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 return NumberCondition;\n}({});\nexport var StringCondition = /*#__PURE__*/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 return StringCondition;\n}({});\nexport var DateCondition = /*#__PURE__*/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 return DateCondition;\n}({});\nexport var BooleanCondition = /*#__PURE__*/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 return BooleanCondition;\n}({});\nexport var CharCondition = /*#__PURE__*/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 return CharCondition;\n}({});\nexport var FormatStyleType = /*#__PURE__*/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 return FormatStyleType;\n}({});\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, { useRef } 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 var nodeRef = useRef(null);\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 nodeRef: nodeRef,\n children: /*#__PURE__*/_jsx(\"div\", {\n ref: nodeRef,\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, 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, 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 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/**\n * Different states for the current copy operation\n */\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, 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 || _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 || _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 || _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 showAdvancedFilterButton,\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 }), showAdvancedFilterButton && /*#__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 showAdvancedFilterButton: false,\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 { isEditableGridModel, isExpandableGridModel } from '@deephaven/grid';\nimport \"./ColumnStatistics.css\";\nimport { jsx as _jsx, jsxs as _jsxs, 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 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 tooltip: \"Copy column name\",\n copy: column.name,\n isQuiet: true\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 }), columnIndex != null && isEditableGridModel(model) && model.isEditable && !model.keyColumnSet.has(column.name) && !model.valueColumnSet.has(column.name) && /*#__PURE__*/_jsxs(\"div\", {\n className: \"column-statistics-status\",\n children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsLock,\n className: \"mr-1\"\n }), \"Not editable\"]\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/** Automatically generate the statistics when the row count is below this threshold */\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, Fragment as _Fragment, 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 || _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, 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 }, _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 || baseTable.close();\n keysTable === null || keysTable === void 0 || keysTable.close();\n partitionTables === null || partitionTables === 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, 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 '@hello-pangea/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, 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 React, { 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, 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, 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, jsxs as _jsxs, 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, jsxs as _jsxs, 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, 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 { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Editor } from '@deephaven/console';\nimport { CopyButton, Icon, Modal, ModalBody, ModalHeader, ToggleButton, Tooltip } from '@deephaven/components';\nimport { vsJson, vsListOrdered } from '@deephaven/icons';\nimport \"./IrisGridCellOverflowModal.css\";\nimport { jsx as _jsx, 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 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__*/_jsxs(ToggleButton, {\n isSelected: showLineNumbers,\n \"aria-label\": \"Toggle line numbers\",\n onChange: toggleLineNumbers,\n children: [/*#__PURE__*/_jsx(Icon, {\n UNSAFE_className: \"action-button-icon-with-tooltip\",\n children: /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsListOrdered\n })\n }), /*#__PURE__*/_jsx(Tooltip, {\n children: \"Toggle line numbers\"\n })]\n }), canFormat && /*#__PURE__*/_jsxs(ToggleButton, {\n isSelected: isFormatted,\n \"aria-label\": \"Format as JSON\",\n onChange: formatAsJSON,\n children: [/*#__PURE__*/_jsx(Icon, {\n UNSAFE_className: \"action-button-icon-with-tooltip\",\n children: /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsJson\n })\n }), /*#__PURE__*/_jsx(Tooltip, {\n children: \"Format as JSON\"\n })]\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, jsxs as _jsxs, 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 || _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 || _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 || _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, 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 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 { isColumnHeaderGroup } from \"./ColumnHeaderGroup.js\";\nimport { jsx as _jsx, Fragment as _Fragment, 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 constructor(props) {\n var _model$layoutHints, _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 // When the loading scrim started/when it should extend to the end of the screen.\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, \"slideTransitionRef\", /*#__PURE__*/React.createRef());\n _defineProperty(this, \"bottomTransitionRef\", /*#__PURE__*/React.createRef());\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 /**\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 _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 || (_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].map(handler => typeof handler === 'function' ? handler(this) : handler), {\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 // Apply live changes\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.handleFrozenColumnsChanged = this.handleFrozenColumnsChanged.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 getMetricCalculator\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), ...(canCopy ? [new IrisGridCopyCellMouseHandler(this)] : [])];\n if (canCopy) {\n _keyHandlers.push(new CopyKeyHandler(this));\n }\n var _movedColumns = movedColumnsProp.length > 0 ? movedColumnsProp : _model.initialMovedColumns;\n var movedRows = movedRowsProp.length > 0 ? movedRowsProp : _model.initialMovedRows;\n var _metricCalculator = getMetricCalculator({\n userColumnWidths: new Map(_userColumnWidths),\n userRowHeights: new Map(userRowHeights),\n movedColumns: _movedColumns,\n initialColumnWidths: new Map(_model === null || _model === void 0 || (_model$layoutHints = _model.layoutHints) === null || _model$layoutHints === void 0 || (_model$layoutHints = _model$layoutHints.hiddenColumns) === null || _model$layoutHints === void 0 ? void 0 : _model$layoutHints.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 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 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\n /**\n * Get the model column index for the provided visible index\n * @param columnIndex Visible column index\n * @returns Model column index, or null if not found\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 if (columnIndex != null && columnIndex < 0) {\n // ColumnBy sources aren't movable, so just return the index directly\n return columnIndex;\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(_ref0 => {\n var {\n advancedFilters,\n quickFilters\n } = _ref0;\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(_ref1 => {\n var {\n quickFilters\n } = _ref1;\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(_ref10) {\n var {\n quickFilters,\n advancedFilters\n } = _ref10;\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 data = this.getRowDataMap(rowIndex);\n var partitionColumnSet = new Set(model.partitionColumns.map(column => column.name));\n var values = Object.entries(data).filter(_ref11 => {\n var [key, _] = _ref11;\n return partitionColumnSet.has(key);\n }).map(_ref12 => {\n var [key, columnData] = _ref12;\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 value = String(this.getValueForCell(columnIndex, rowIndex, rawValue));\n copyToClipboard(value).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 || _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 || 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 metricState = this.getMetricState();\n assertNotNull(metricState);\n var scrollColumn = metricCalculator.getScrollLeftForColumn(column, metricState, metrics);\n if (scrollColumn != null) {\n var _this$grid4;\n (_this$grid4 = this.grid) === null || _this$grid4 === void 0 || _this$grid4.setViewState({\n left: scrollColumn,\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$grid5;\n var {\n metricCalculator,\n movedColumns\n } = this.state;\n metricCalculator.setColumnWidth(GridUtils.getModelIndex(columnVisibleIndex, movedColumns), 0);\n (_this$grid5 = this.grid) === null || _this$grid5 === void 0 || _this$grid5.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\n /**\n * Updates the entire list of frozen columns.\n * Used by VisibilityOrderingBuilder.\n * @param frozenColumns The new list of frozen columns\n */\n handleFrozenColumnsChanged(frozenColumns) {\n this.setState({\n frozenColumns\n });\n }\n toggleExpandColumn(modelIndex, expandDescendants) {\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), expandDescendants);\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$grid6;\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 = metrics.calculatedColumnWidths.get(modelIndex);\n\n // If we haven't scrolled to the column, the calculated width will be undefined.\n // This means the function was triggered by the visibility ordering menu,\n // so just reset the column width to default.\n if (defaultWidth !== calculatedWidth && calculatedWidth != null) {\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$grid6 = this.grid) === null || _this$grid6 === void 0 || _this$grid6.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 : EMPTY_ARRAY\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$grid7;\n (_this$grid7 = this.grid) === null || _this$grid7 === void 0 || _this$grid7.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$grid8;\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$grid8 = this.grid) === null || _this$grid8 === void 0 || _this$grid8.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$grid9;\n this.setState({\n metrics: (_this$grid9 = this.grid) === null || _this$grid9 === void 0 ? void 0 : _this$grid9.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$grid0;\n this.startLoading('Sorting...');\n this.setState({\n sorts\n });\n (_this$grid0 = this.grid) === null || _this$grid0 === void 0 || _this$grid0.forceUpdate();\n }\n sortColumn(modelColumn) {\n var _this$grid1;\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$grid1 = this.grid) === null || _this$grid1 === void 0 || _this$grid1.forceUpdate();\n }\n reverse(reverse) {\n var _this$grid10;\n this.startLoading('Reversing...');\n this.setState({\n reverse\n });\n (_this$grid10 = this.grid) === null || _this$grid10 === void 0 || _this$grid10.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\n } = this.props;\n var {\n columnCount\n } = model;\n for (var i = 0; i < columnCount; i += 1) {\n var modelColumn = this.getModelColumn(i);\n if (modelColumn != null) {\n var column = model.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$grid11;\n (_this$grid11 = this.grid) === null || _this$grid11 === void 0 || _this$grid11.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 || (_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 || _this$crossColumnRef2.current.focus();\n } else {\n var _this$grid12;\n (_this$grid12 = this.grid) === null || _this$grid12 === void 0 || _this$grid12.focus();\n }\n });\n }\n toggleGotoRow() {\n var _this$grid13, _this$grid14;\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 || _this$gotoRowRef$curr.focus();\n return;\n }\n var cursorRow = (_this$grid13 = this.grid) === null || _this$grid13 === void 0 ? void 0 : _this$grid13.state.cursorRow;\n var cursorColumn = (_this$grid14 = this.grid) === null || _this$grid14 === void 0 ? void 0 : _this$grid14.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;\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 || (_document = _document.activeElement) === null || _document === void 0 ? void 0 : _document.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 || _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$grid15;\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$grid15 = this.grid) === null || _this$grid15 === void 0 || _this$grid15.forceUpdate();\n }\n handleAdvancedFilterDone() {\n var _this$grid16;\n (_this$grid16 = this.grid) === null || _this$grid16 === void 0 || _this$grid16.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 || _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(_ref13 => {\n var {\n focusedFilterBarColumn,\n quickFilters\n } = _ref13;\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$grid17;\n (_this$grid17 = this.grid) === null || _this$grid17 === void 0 || _this$grid17.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(_ref14 => {\n var {\n columnAlignmentMap = EMPTY_MAP\n } = _ref14;\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(_ref15 => {\n var {\n openOptions\n } = _ref15;\n var newOptions = [...openOptions];\n newOptions.pop();\n return {\n openOptions: newOptions\n };\n });\n }\n handleMenuSelect(option) {\n this.setState(_ref16 => {\n var {\n openOptions\n } = _ref16;\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$grid18;\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$grid18 = this.grid) === null || _this$grid18 === void 0 || _this$grid18.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$grid19;\n var {\n model\n } = this.props;\n var {\n selectionEndRow = 0\n } = (_this$grid$state = (_this$grid19 = this.grid) === null || _this$grid19 === void 0 ? void 0 : _this$grid19.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 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\n // We get 2 identical ranges here,\n // but consolidating in `Grid#moveSelection` causes\n // deselection to break, so just consolidate here.\n // This will only update the goto row input for row index\n if (GridRange.rowCount(GridRange.consolidate(selectedRanges)) === 1 && selectedRanges[0].startRow != null) {\n this.setState({\n gotoRow: \"\".concat(selectedRanges[0].startRow + 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 var {\n columnHeaderGroups: prevColumnHeaderGroups\n } = this.state;\n if (prevColumnHeaderGroups === columnHeaderGroups) {\n return;\n }\n this.setState({\n // undo/redo will pass already parsed groups\n // Parsing them again causes a loop with undo/redo that makes it unusable\n columnHeaderGroups: columnHeaderGroups.every(group => isColumnHeaderGroup(group) && group.isValid()) ? columnHeaderGroups : IrisGridUtils.parseColumnHeaderGroups(model, columnHeaderGroups).groups\n }, () => {\n var _this$grid20;\n return (_this$grid20 = this.grid) === null || _this$grid20 === void 0 ? void 0 : _this$grid20.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 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$grid21;\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$grid21 = this.grid) === null || _this$grid21 === void 0 || _this$grid21.forceUpdate();\n }\n handleResizeColumn(modelIndex) {\n var _this$grid22;\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$grid22 = this.grid) === null || _this$grid22 === void 0 || _this$grid22.forceUpdate();\n }\n handleResizeAllColumns() {\n var _this$grid23;\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(_ref17 => {\n var [_, width] = _ref17;\n return width !== 0;\n }).map(_ref18 => {\n var [modelIndex] = _ref18;\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$grid23 = this.grid) === null || _this$grid23 === void 0 || _this$grid23.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 || (_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 || (_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(_ref19 => {\n var {\n aggregationSettings\n } = _ref19;\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 || (_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: EMPTY_ARRAY,\n frozenColumns: EMPTY_ARRAY,\n sorts: EMPTY_ARRAY,\n reverse: false,\n selectDistinctColumns: EMPTY_ARRAY\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(_ref20 => {\n var {\n aggregationSettings\n } = _ref20;\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 || _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 || _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$grid24;\n this.setState({\n gotoRowError: '',\n gotoValueError: ''\n });\n (_this$grid24 = this.grid) === null || _this$grid24 === void 0 || _this$grid24.setFocusRow(0);\n } else if (rowInt < 0) {\n var _this$grid25;\n this.setState({\n gotoRowError: '',\n gotoValueError: ''\n });\n (_this$grid25 = this.grid) === null || _this$grid25 === void 0 || _this$grid25.setFocusRow(rowInt + rowCount);\n } else {\n var _this$grid26;\n (_this$grid26 = this.grid) === null || _this$grid26 === void 0 || _this$grid26.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 || _this$tooltip.update();\n }\n })\n }, column.name)\n });\n }\n handleGotoValueSelectedColumnNameChanged(columnName) {\n var _this$grid27;\n var {\n model\n } = this.props;\n var cursorRow = (_this$grid27 = this.grid) === null || _this$grid27 === void 0 ? void 0 : _this$grid27.state.cursorRow;\n var {\n gotoValueSelectedColumnName: prevColumnName,\n gotoValueManuallyChanged\n } = this.state;\n if (cursorRow != null) {\n var index = model.getColumnIndexByName(columnName);\n var column = IrisGridUtils.getColumnByName(model.columns, columnName);\n var prevColumn = IrisGridUtils.getColumnByName(model.columns, prevColumnName);\n if (index == null || column == null) {\n return;\n }\n var value = model.valueForCell(index, cursorRow);\n var text = IrisGridUtils.convertValueToText(value, column.type);\n\n // do NOT update value if user manually changed value AND column type remains the same\n if (gotoValueManuallyChanged && column.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\n /**\n * Render the input field for the focused filter\n * @param metrics Grid metrics\n * @param metricCalculator Metric calculator\n * @param focusedFilterBarColumn Column index for the focused filter\n * @param quickFilters Quick filters map\n * @param advancedFilters Advanced filters map\n * @returns The filter input field element or null if not applicable\n */\n getFilterBarInput(metrics, metricCalculator, focusedFilterBarColumn, quickFilters, advancedFilters) {\n var _this$grid28;\n if (metrics == null || focusedFilterBarColumn == null) {\n return null;\n }\n var metricState = this.getMetricState();\n if (metricState == null) {\n return null;\n }\n var filterBoxCoordinates = metricCalculator.getFilterInputCoordinates(focusedFilterBarColumn, metricState, metrics);\n if (filterBoxCoordinates == null) {\n return null;\n }\n var debounceMs = Math.min(Math.max(IrisGrid.minDebounce, Math.round(metrics.rowCount / 200)), IrisGrid.maxDebounce);\n var {\n x,\n y,\n width: fieldWidth,\n height: fieldHeight\n } = filterBoxCoordinates;\n var {\n width\n } = metrics;\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 value = '';\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 value = quickFilter.text;\n isValid = quickFilter.filter != null;\n }\n var isBarFiltered = quickFilters.size !== 0 || advancedFilters.size !== 0;\n var showAdvancedFilterButton = metricCalculator.getAdvancedFilterButtonCoordinates(focusedFilterBarColumn, metricState, metrics) != null;\n return /*#__PURE__*/_jsx(FilterInputField, {\n ref: this.filterInputRef,\n style: style,\n className: classNames({\n error: !isValid,\n active: value !== '' || advancedFilter != null,\n 'iris-grid-has-filter': isBarFiltered\n }),\n showAdvancedFilterButton: showAdvancedFilterButton,\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$grid28 = this.grid) === null || _this$grid28 === void 0 ? void 0 : _this$grid28.handleContextMenu,\n debounceMs: debounceMs,\n value: value\n }, focusedFilterBarColumn);\n }\n render() {\n var _rollupConfig$columns7,\n _rollupConfig$columns8,\n _this7 = this,\n _this$grid29,\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 || (_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 = isFilterBarShown ? this.getFilterBarInput(metrics, metricCalculator, focusedFilterBarColumn, quickFilters, advancedFilters) : null;\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 || _this$tooltip2.update();\n }\n var filterBar = [];\n if (metrics && isFilterBarShown) {\n var metricState = this.getMetricState();\n\n // Advanced Filter buttons\n var {\n visibleColumns\n } = metrics;\n var _loop2 = function _loop2() {\n var columnIndex = visibleColumns[i];\n var modelColumn = _this7.getModelColumn(columnIndex);\n if (modelColumn != null) {\n var isFilterable = model.isFilterable(modelColumn);\n var buttonCoordinates = isFilterable && metricState ? metricCalculator.getAdvancedFilterButtonCoordinates(columnIndex, metricState, metrics) : null;\n if (buttonCoordinates != null) {\n var {\n x,\n y\n } = buttonCoordinates;\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 || _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,\n visibleColumns: _visibleColumns,\n allColumnXs,\n allColumnWidths,\n columnHeaderHeight\n } = metrics;\n var _loop3 = function _loop3() {\n var columnIndex = _visibleColumns[_i4];\n var columnX = allColumnXs.get(columnIndex);\n var columnWidth = allColumnWidths.get(columnIndex);\n if (columnX != null && columnWidth != null && columnWidth > 0) {\n var xColumnHeader = gridX + columnX;\n var xFilterBar = gridX + columnX + columnWidth - 20;\n var style = 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 column = model.columns[modelColumn];\n if (column == 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 1; // continue\n }\n var advancedFilter = advancedFilters.get(modelColumn);\n var {\n options: advancedFilterOptions\n } = advancedFilter || {};\n var sort = TableUtils.getSortForColumn(model.sort, column.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: style,\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, column, advancedFilterOptions, sortDirection, formatter)\n })\n }, columnIndex);\n advancedFilterMenus.push(element);\n }\n }\n };\n for (var _i4 = 0; _i4 < _visibleColumns.length; _i4 += 1) {\n if (_loop3()) 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 onFrozenColumnsChanged: this.handleFrozenColumnsChanged\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 nodeRef: this.slideTransitionRef,\n children: /*#__PURE__*/_jsx(\"div\", {\n ref: this.slideTransitionRef,\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 nodeRef: this.bottomTransitionRef,\n children: /*#__PURE__*/_jsx(\"div\", {\n ref: this.bottomTransitionRef,\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$grid29 = this.grid) === null || _this$grid29 === void 0 || (_this$grid29 = _this$grid29.state.draggingColumn) === null || _this$grid29 === void 0 ? void 0 : _this$grid29.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 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 columnAllowedCursor: 'linker',\n columnNotAllowedCursor: 'linker-not-allowed',\n copyCursor: 'copy',\n name: 'table',\n onlyFetchVisibleColumns: true,\n showSearchBar: false,\n searchValue: '',\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 },\n canCopy: true,\n canDownloadCsv: true,\n frozenColumns: EMPTY_ARRAY,\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 getMetricCalculator: function getMetricCalculator() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return new IrisGridMetricCalculator(...args);\n }\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","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","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","nodeRef","useRef","CSSTransition","ThemeExport","HIDE_TIMEOUT","MAX_NUMBER_ROWS_SHOWN","PendingDataBottomBar","isSaving","onSave","onDiscard","discardTooltip","saveTooltip","pendingDataErrors","pendingDataMap","_onExited","isSuccessShown","setIsSuccessShown","useState","wasSuccessShown","setWasSuccessShown","successTimeout","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","showAdvancedFilterButton","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","isEditableGridModel","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","ToggleButton","Icon","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$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","handler","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","_aggregationSettings","conditionalFormats","customColumnFormatMap","_isFilterBarShown","isSelectingPartition","_model","movedColumnsProp","movedRowsProp","_rollupConfig","_userColumnWidths","userRowHeights","_showSearchBar","_searchValue","_selectedSearchColumns","_invertSearchColumns","_advancedFilters","_quickFilters","canCopy","getMetricCalculator","_dh","_keyHandlers","_mouseHandlers","IrisGridCellOverflowMouseHandler","IrisGridRowTreeMouseHandler","IrisGridTokenMouseHandler","IrisGridColumnSelectMouseHandler","IrisGridColumnTooltipMouseHandler","IrisGridSortMouseHandler","IrisGridFilterMouseHandler","IrisGridContextMenuHandler","IrisGridDataSelectMouseHandler","PendingMouseHandler","IrisGridPartitionedTableMouseHandler","IrisGridCopyCellMouseHandler","movedRows","_metricCalculator","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","_ref0","_ref1","_ref10","_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","newPartition","partitionColumnSet","_ref11","_ref12","columnData","loadingText","resetRanges","loadingCancelShown","loadingBlocksGrid","_this$gridWrapper$get","_this$gridWrapper","minScrimTransitionTime","maxScrimTransitionTime","scrimTransitionTime","IrisGridModel","_this$grid3","columnCount","metricState","scrollColumn","_this$grid4","columnVisibleIndex","_this$grid5","allFrozenColumns","visibleIndex","newMovedColumns","expandDescendants","isExpandableColumnGridModel","modelIndexes","isVisible","_this$grid6","defaultWidth","calculatedWidth","_model$layoutHints$fr","_model$layoutHints2","_this$grid7","onError","loadingMessage","_this$grid8","entries","columnWidth","_this$grid9","currentSorts","_this$grid0","_this$grid1","isAbs","_this$grid10","focusIndex","_this$grid11","_model$layoutHints3","_dh$SearchDisplayMode","_dh$SearchDisplayMode2","searchDisplayMode","_this$crossColumnRef","_this$crossColumnRef2","_this$grid12","_this$grid13","_this$grid14","isGotoShown","_this$gotoRowRef$curr","cursorRow","cursorColumn","cellValue","_document","pendingSavePromise","containsGridCellInputField","_this3$grid","ValidationError","newPendingSavePromise","_this4","onColumnSelected","dataMap","onDataSelected","_this5","groupedColumns","isExpandable","isGrouped","_this$grid15","oldSort","newSort","_this$grid16","_this$filterInputRef","focusedFilterBarColumn","_this$filterInputRef2","onCreateChart","_ref13","_this$grid17","selectedFormat","prevCustomColumnFormatMap","columnFormattingRule","alignment","_ref14","newColumnAlignmentMap","_ref15","newOptions","_ref16","isMissingPartitionError","_this$grid18","_this$grid$state","_this$grid19","selectionEndRow","bottomViewport","bottomNonFloating","onSelectionChanged","onChangeApplied","prevColumnHeaderGroups","group","isColumnHeaderGroup","_this$grid20","tooltip","oldCustomColumns","customColumn","removedColumnNames","newSorts","newSelectDistinctColumns","isReady","_this$grid21","_this$grid22","contentWidth","getOrThrow","userWidths","_this$grid23","allColumns","visibleColumns","_ref17","width","_ref18","contentWidths","manualColumns","_i3","_modelIndex","_contentWidth","_rollupConfig$columns","_rollupConfig$columns2","added","removed","isRollup","changes","shouldStartLoading","op","aggregation","_rollupConfig$columns3","_rollupConfig$columns4","_ref19","_rollupConfig$columns5","_rollupConfig$columns6","fileName","frozenTable","tableSubscription","snapshotRanges","includeColumnHeaders","useUnformattedValues","_ref20","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$grid24","_this$grid25","_this$grid26","boundedLeft","boundedWidth","virtualReference","_this$tooltip","_this$grid27","prevColumnName","gotoValueManuallyChanged","prevColumn","_this$grid28","filterBoxCoordinates","x","y","fieldWidth","fieldHeight","advancedFilter","isBarFiltered","_rollupConfig$columns7","_rollupConfig$columns8","_this7","_this$grid29","_openOptions","getDownloadWorker","isStuckToBottom","isStuckToRight","onlyFetchVisibleColumns","onAdvancedSettingsChange","hoverAdvancedFilter","shownAdvancedFilter","conditionalFormatEditIndex","isTableDownloading","selectedAggregation","pendingSaveError","toastMessage","showOverflowModal","showNoPastePermissionModal","noPastePermissionError","overflowText","singleColumnHeaderHeight","stateOverride","focusField","loadingElement","loadingStatus","gridY","columnTooltip","_this$tooltip2","filterBar","_loop2","isFilterable","buttonCoordinates","isFilterSet","isFilterVisible","_this7$grid","advancedFilterMenus","gridX","_visibleColumns","_loop3","_i4","xColumnHeader","xFilterBar","isSortDirection","openOptionsStack","ChartBuilder","VisibilityOrderingBuilder","CustomColumnBuilder","RollupRows","Aggregations","AggregationEdit","Grid","vsMenu","TableSaver","tableSaver","SlideTransition","Stack","Page","ContextActions","IrisGridThemeContext","DownloadServiceWorkerUtils","_len","args","_key","IrisGridMetricCalculator"],"mappings":"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"}