@deephaven/code-studio 0.105.1-beta.0 → 0.106.1-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/build/assets/{AppRoot-C58PTD0S.js → AppRoot-DjflP9Wb.js} +6 -6
  2. package/build/assets/{AppRoot-C58PTD0S.js.map → AppRoot-DjflP9Wb.js.map} +1 -1
  3. package/build/assets/{Chart-cFZ65cSx.js → Chart-CoaZEdxJ.js} +2 -2
  4. package/build/assets/{Chart-cFZ65cSx.js.map → Chart-CoaZEdxJ.js.map} +1 -1
  5. package/build/assets/{ControlType-CLpm_fEy.js → ControlType-23P-xqd3.js} +4 -4
  6. package/build/assets/{ControlType-CLpm_fEy.js.map → ControlType-23P-xqd3.js.map} +1 -1
  7. package/build/assets/{FontBootstrap-BHbc9CGx.js → FontBootstrap-Bt4cMEtL.js} +2 -2
  8. package/build/assets/{FontBootstrap-BHbc9CGx.js.map → FontBootstrap-Bt4cMEtL.js.map} +1 -1
  9. package/build/assets/{FormatterUtils-lodFg7yl.js → FormatterUtils-Db8pvpac.js} +2 -2
  10. package/build/assets/{FormatterUtils-lodFg7yl.js.map → FormatterUtils-Db8pvpac.js.map} +1 -1
  11. package/build/assets/{Grid-PdpHrSxq.js → Grid-8IehpDL0.js} +2 -2
  12. package/build/assets/{Grid-PdpHrSxq.js.map → Grid-8IehpDL0.js.map} +1 -1
  13. package/build/assets/GridTokenMouseHandler-DOs4hpf1.js +2 -0
  14. package/build/assets/GridTokenMouseHandler-DOs4hpf1.js.map +1 -0
  15. package/build/assets/IrisGrid-DDWhMqak.js +3 -0
  16. package/build/assets/{IrisGrid-CXw0WCHl.js.map → IrisGrid-DDWhMqak.js.map} +1 -1
  17. package/build/assets/{IrisGridModel-DNFsoc4p.js → IrisGridModel-DdKvBFOi.js} +3 -3
  18. package/build/assets/{IrisGridModel-DNFsoc4p.js.map → IrisGridModel-DdKvBFOi.js.map} +1 -1
  19. package/build/assets/{IrisGridShortcuts-DxeUqxN5.js → IrisGridShortcuts-DGTSEw50.js} +2 -2
  20. package/build/assets/{IrisGridShortcuts-DxeUqxN5.js.map → IrisGridShortcuts-DGTSEw50.js.map} +1 -1
  21. package/build/assets/{IrisGridThemeProvider-pvbwROZr.js → IrisGridThemeProvider-CHUJrSCh.js} +4 -4
  22. package/build/assets/IrisGridThemeProvider-CHUJrSCh.js.map +1 -0
  23. package/build/assets/{LocalWorkspaceStorage-BxI2iZyh.js → LocalWorkspaceStorage-CsjYAJhL.js} +2 -2
  24. package/build/assets/{LocalWorkspaceStorage-BxI2iZyh.js.map → LocalWorkspaceStorage-CsjYAJhL.js.map} +1 -1
  25. package/build/assets/{MarkdownEditor-DJ61SFMV.js → MarkdownEditor-BHn0gDyD.js} +2 -2
  26. package/build/assets/{MarkdownEditor-DJ61SFMV.js.map → MarkdownEditor-BHn0gDyD.js.map} +1 -1
  27. package/build/assets/{MarkdownNotebook-BZsdtbad.js → MarkdownNotebook-DhBXLCCX.js} +2 -2
  28. package/build/assets/{MarkdownNotebook-BZsdtbad.js.map → MarkdownNotebook-DhBXLCCX.js.map} +1 -1
  29. package/build/assets/{MissingPartitionError-zaQDnq6H.js → MissingPartitionError-BIpJeSGU.js} +2 -2
  30. package/build/assets/{MissingPartitionError-zaQDnq6H.js.map → MissingPartitionError-BIpJeSGU.js.map} +1 -1
  31. package/build/assets/Plot-D28rcRis.js +2 -0
  32. package/build/assets/{Plot-oIaJ79E2.js.map → Plot-D28rcRis.js.map} +1 -1
  33. package/build/assets/{Plotly-3t8lcnok.js → Plotly-DDo40oZw.js} +2 -2
  34. package/build/assets/{Plotly-3t8lcnok.js.map → Plotly-DDo40oZw.js.map} +1 -1
  35. package/build/assets/{StyleGuideRoot-C4TQ90Ic.js → StyleGuideRoot-Dc78PD6M.js} +2 -2
  36. package/build/assets/{StyleGuideRoot-C4TQ90Ic.js.map → StyleGuideRoot-Dc78PD6M.js.map} +1 -1
  37. package/build/assets/{index-fKhs-v56.js → index-BP2rLRuD.js} +2 -2
  38. package/build/assets/{index-fKhs-v56.js.map → index-BP2rLRuD.js.map} +1 -1
  39. package/build/assets/{index-IR5QXHRr.js → index-CFW6GYyn.js} +3 -3
  40. package/build/assets/{index-IR5QXHRr.js.map → index-CFW6GYyn.js.map} +1 -1
  41. package/build/assets/{index-8Uo9eZWC.js → index-DyzFobOS.js} +6 -6
  42. package/build/assets/index-DyzFobOS.js.map +1 -0
  43. package/build/assets/plotly-Db6qOOB9.js +7 -0
  44. package/build/assets/{plotly-CTEE557E.js.map → plotly-Db6qOOB9.js.map} +1 -1
  45. package/build/index.html +2 -2
  46. package/package.json +31 -31
  47. package/build/assets/GridTokenMouseHandler-Cmrbf27Y.js +0 -2
  48. package/build/assets/GridTokenMouseHandler-Cmrbf27Y.js.map +0 -1
  49. package/build/assets/IrisGrid-CXw0WCHl.js +0 -3
  50. package/build/assets/IrisGridThemeProvider-pvbwROZr.js.map +0 -1
  51. package/build/assets/Plot-oIaJ79E2.js +0 -2
  52. package/build/assets/index-8Uo9eZWC.js.map +0 -1
  53. package/build/assets/plotly-CTEE557E.js +0 -7
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGrid-CXw0WCHl.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(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n/* eslint react/no-did-update-set-state: \"off\" */\nimport React, { PureComponent } from 'react';\nimport { Button, Select } from '@deephaven/components';\nimport { getLabelForBooleanFilter, getLabelForDateFilter, getLabelForNumberFilter, getLabelForTextFilter } from '@deephaven/filters';\nimport { vsTrash } from '@deephaven/icons';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport classNames from 'classnames';\nimport memoizeOne from 'memoize-one';\nimport \"./AdvancedFilterCreatorFilterItem.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('AdvancedFilterCreatorFilterItem');\nexport class AdvancedFilterCreatorFilterItem extends PureComponent {\n static getLabelForFilter(columnType, filterType) {\n try {\n if (TableUtils.isNumberType(columnType) || TableUtils.isCharType(columnType)) {\n return getLabelForNumberFilter(filterType);\n }\n if (TableUtils.isTextType(columnType)) {\n return getLabelForTextFilter(filterType);\n }\n if (TableUtils.isDateType(columnType)) {\n return getLabelForDateFilter(filterType);\n }\n if (TableUtils.isBooleanType(columnType)) {\n return getLabelForBooleanFilter(filterType);\n }\n throw new Error(\"Unrecognized column type: \".concat(columnType));\n } catch (e) {\n log.warn(e);\n return '';\n }\n }\n constructor(props) {\n super(props);\n _defineProperty(this, \"typeDropdown\", void 0);\n _defineProperty(this, \"getCachedIsValid\", memoizeOne((column, operation, value, timeZone, tableUtils) => {\n try {\n // We don't want to show an error for an empty value\n return !value || tableUtils.makeAdvancedValueFilter(column, operation, value, timeZone) != null;\n } catch (e) {\n return false;\n }\n }));\n this.handleDelete = this.handleDelete.bind(this);\n this.handleTypeChange = this.handleTypeChange.bind(this);\n this.handleValueChange = this.handleValueChange.bind(this);\n this.typeDropdown = null;\n var {\n value: _value = '',\n filterTypes,\n selectedType = filterTypes[0]\n } = props;\n this.state = {\n selectedType,\n value: _value\n };\n }\n componentDidMount() {\n var _this$typeDropdown;\n (_this$typeDropdown = this.typeDropdown) === null || _this$typeDropdown === void 0 ? void 0 : _this$typeDropdown.focus();\n }\n componentDidUpdate(prevProps) {\n var {\n value,\n selectedType\n } = this.props;\n if (selectedType !== undefined && prevProps.selectedType !== selectedType) {\n this.setState({\n selectedType\n });\n }\n if (value !== undefined && prevProps.value !== value) {\n this.setState({\n value\n });\n }\n }\n handleTypeChange(eventTargetValue) {\n var selectedType = eventTargetValue;\n log.debug2('typeChange', selectedType);\n this.setState({\n selectedType\n });\n var {\n onChange\n } = this.props;\n var {\n value\n } = this.state;\n if (value != null && value.length > 0) {\n // Don't send an update unless there's already a value entered\n onChange(selectedType, value);\n }\n }\n handleValueChange(event) {\n log.debug2('valueChange');\n var {\n value\n } = event.target;\n this.setState({\n value\n });\n var {\n onChange\n } = this.props;\n var {\n selectedType\n } = this.state;\n if (selectedType != null) {\n // Don't send an update unless they've already selected a type\n onChange(selectedType, value);\n }\n }\n handleDelete() {\n log.debug('delete');\n var {\n onDelete\n } = this.props;\n onDelete();\n }\n render() {\n var {\n column,\n filterTypes,\n formatter,\n tableUtils\n } = this.props;\n var {\n selectedType,\n value\n } = this.state;\n var showValueInput = !TableUtils.isBooleanType(column.type);\n var typeOptionElements = [];\n var isValid = this.getCachedIsValid(column, selectedType, value, formatter.timeZone, tableUtils);\n for (var i = 0; i < filterTypes.length; i += 1) {\n var _type = filterTypes[i];\n var label = AdvancedFilterCreatorFilterItem.getLabelForFilter(column.type, _type);\n var element = /*#__PURE__*/_jsx(\"option\", {\n value: _type,\n children: label\n }, _type);\n typeOptionElements.push(element);\n }\n return /*#__PURE__*/_jsx(\"div\", {\n className: \"advanced-filter-creator-filter-item\",\n children: /*#__PURE__*/_jsxs(\"div\", {\n className: \"form-row\",\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"form-group col\",\n children: /*#__PURE__*/_jsx(Select, {\n className: \"form-control\",\n value: selectedType,\n onChange: this.handleTypeChange,\n ref: typeDropdown => {\n this.typeDropdown = typeDropdown;\n },\n children: typeOptionElements\n })\n }), showValueInput && /*#__PURE__*/_jsx(\"div\", {\n className: \"form-group col\",\n children: /*#__PURE__*/_jsx(\"div\", {\n className: \"input-group\",\n children: /*#__PURE__*/_jsx(\"input\", {\n type: \"text\",\n className: classNames('form-control', {\n error: !isValid\n }),\n placeholder: \"Enter value\",\n value: value,\n onChange: this.handleValueChange\n })\n })\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"form-group col-1 px-0\",\n children: /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: \"w-100 h-100 p-0 m-0\",\n onClick: this.handleDelete,\n icon: vsTrash,\n tooltip: \"Remove Filter\"\n })\n })]\n })\n });\n }\n}\nexport default AdvancedFilterCreatorFilterItem;\n//# sourceMappingURL=AdvancedFilterCreatorFilterItem.js.map","function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n/* eslint react/no-did-update-set-state: \"off\" */\nimport React, { PureComponent } from 'react';\nimport { LoadingSpinner, SelectValueList, FadeTransition } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('AdvancedFilterCreatorSelectValueList');\n/**\n * Select values from a long scrollable list.\n * Swaps items in and out for infinite scrolling\n */\nclass AdvancedFilterCreatorSelectValueList extends PureComponent {\n /**\n * Get the index of a value in an array. Has some special handling for some types, like DateTimes and Longs.\n * @param value The value to search for\n * @param values The array of values to search within\n */\n static indexOf(value, values) {\n for (var i = 0; i < values.length; i += 1) {\n var v = values[i];\n if (v === value || v != null && v.valueOf != null && value != null && value.valueOf != null && v.valueOf() === value.valueOf()) {\n return i;\n }\n }\n return -1;\n }\n constructor(props) {\n super(props);\n _defineProperty(this, \"dh\", void 0);\n _defineProperty(this, \"list\", void 0);\n this.handleSelect = this.handleSelect.bind(this);\n this.handleViewportChange = this.handleViewportChange.bind(this);\n this.handleSelectionUpdate = this.handleSelectionUpdate.bind(this);\n this.handleTableUpdate = this.handleTableUpdate.bind(this);\n var {\n selectedValues,\n dh\n } = this.props;\n this.dh = dh;\n this.list = null;\n this.state = {\n itemCount: 0,\n items: [],\n offset: 0,\n selectedValues,\n isLoading: true\n };\n }\n componentDidMount() {\n var {\n table\n } = this.props;\n if (table) this.startListening(table);\n }\n componentDidUpdate(prevProps) {\n var {\n filters,\n invertSelection,\n selectedValues,\n table\n } = this.props;\n if (prevProps.table !== table) {\n if (prevProps.table) this.stopListening(prevProps.table);\n if (table) this.startListening(table);\n this.resetViewport();\n }\n if (prevProps.invertSelection !== invertSelection) {\n this.setState({\n selectedValues: []\n }, this.handleSelectionUpdate);\n }\n if (prevProps.selectedValues !== selectedValues) {\n this.setState({\n selectedValues\n }, this.handleSelectionUpdate);\n }\n if (prevProps.filters !== filters) {\n table === null || table === void 0 ? void 0 : table.applyFilter(filters);\n this.resetViewport();\n }\n }\n componentWillUnmount() {\n var {\n table\n } = this.props;\n if (table) this.stopListening(table);\n }\n handleSelect(itemIndex, value) {\n var {\n invertSelection\n } = this.props;\n var {\n selectedValues\n } = this.state;\n selectedValues = [...selectedValues];\n var selectedIndex = AdvancedFilterCreatorSelectValueList.indexOf(value, selectedValues);\n if (selectedIndex >= 0) {\n selectedValues.splice(selectedIndex, 1);\n } else {\n selectedValues.push(value);\n }\n var isSelected = selectedIndex < 0;\n if (invertSelection) {\n isSelected = !isSelected;\n }\n var {\n offset\n } = this.state;\n var {\n items\n } = this.state;\n items = [...items];\n var visibleItemIndex = itemIndex - offset;\n if (visibleItemIndex >= 0 && visibleItemIndex < items.length) {\n items[visibleItemIndex].isSelected = isSelected;\n }\n this.setState({\n items,\n selectedValues\n });\n var {\n onChange\n } = this.props;\n onChange(selectedValues, invertSelection);\n }\n handleViewportChange(top, bottom) {\n this.updateViewport(top, bottom);\n }\n handleSelectionUpdate() {\n this.updateItemSelection();\n }\n handleTableUpdate(event) {\n var {\n table,\n formatter\n } = this.props;\n if (!table) return;\n var data = event.detail;\n var {\n offset\n } = data;\n var items = [];\n var column = table.columns[0];\n for (var r = 0; r < data.rows.length; r += 1) {\n var row = data.rows[r];\n var value = row.get(column);\n var displayValue = void 0;\n if (value == null) {\n displayValue = /*#__PURE__*/_jsx(\"i\", {\n className: \"text-muted\",\n children: \"null\"\n });\n } else if (value === '') {\n displayValue = /*#__PURE__*/_jsx(\"i\", {\n className: \"text-muted\",\n children: \"empty\"\n });\n } else {\n displayValue = formatter.getFormattedString(value, column.type, column.name);\n }\n var isSelected = this.isValueSelected(value);\n items.push({\n displayValue,\n value,\n isSelected\n });\n }\n log.debug2('Received table update:', offset, items.length);\n var itemCount = table.size;\n this.setState({\n itemCount,\n items,\n offset,\n isLoading: false\n });\n }\n isValueSelected(value) {\n var {\n invertSelection\n } = this.props;\n var {\n selectedValues\n } = this.state;\n\n // Need to check if any of the valueOf matches, timestamp value that is equal\n var selectedIndex = AdvancedFilterCreatorSelectValueList.indexOf(value, selectedValues);\n return invertSelection ? selectedIndex < 0 : selectedIndex >= 0;\n }\n startListening(table) {\n table.addEventListener(this.dh.Table.EVENT_UPDATED, this.handleTableUpdate);\n }\n stopListening(table) {\n table.removeEventListener(this.dh.Table.EVENT_UPDATED, this.handleTableUpdate);\n }\n resetViewport() {\n if (this.list && this.list.topRow != null && this.list.bottomRow != null) {\n this.updateViewport(this.list.topRow, this.list.bottomRow, true);\n }\n }\n updateItemSelection() {\n var {\n items\n } = this.state;\n items = [...items];\n for (var i = 0; i < items.length; i += 1) {\n var item = items[i];\n var {\n value\n } = item;\n item.isSelected = this.isValueSelected(value);\n }\n this.setState({\n items\n });\n }\n updateViewport(top, bottom) {\n var isLoading = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var {\n table\n } = this.props;\n if (table == null) {\n return;\n }\n if (isLoading) {\n this.setState({\n isLoading: true\n });\n }\n var viewportSize = bottom - top + 1;\n var topRow = Math.max(0, top - viewportSize * 3);\n var bottomRow = Math.max(topRow, bottom + viewportSize * 3);\n log.debug2('Setting viewport', topRow, ',', bottomRow);\n table.setViewport(topRow, bottomRow);\n }\n render() {\n var {\n offset,\n isLoading,\n items,\n itemCount\n } = this.state;\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"select-value-list-wrapper\",\n children: [/*#__PURE__*/_jsx(SelectValueList, {\n itemCount: itemCount,\n items: items,\n offset: offset,\n onSelect: this.handleSelect,\n onViewportChange: this.handleViewportChange,\n ref: list => {\n this.list = list;\n }\n }), /*#__PURE__*/_jsx(FadeTransition, {\n in: isLoading,\n mountOnEnter: true,\n unmountOnExit: true,\n children: /*#__PURE__*/_jsx(\"div\", {\n className: \"loading-list\",\n children: /*#__PURE__*/_jsx(LoadingSpinner, {\n className: \"loading-spinner-large\"\n })\n })\n })]\n });\n }\n}\n_defineProperty(AdvancedFilterCreatorSelectValueList, \"defaultProps\", {\n invertSelection: true,\n selectedValues: [],\n onChange: () => undefined\n});\nexport default AdvancedFilterCreatorSelectValueList;\n//# sourceMappingURL=AdvancedFilterCreatorSelectValueList.js.map","function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n/* eslint react/no-did-update-set-state: \"off\" */\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport { Button, FadeTransition } from '@deephaven/components';\nimport AdvancedFilterCreatorSelectValueList from \"./AdvancedFilterCreatorSelectValueList.js\";\nimport \"./AdvancedFilterCreatorSelectValue.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nclass AdvancedFilterCreatorSelectValue extends PureComponent {\n constructor(props) {\n super(props);\n _defineProperty(this, \"searchTablePromise\", void 0);\n _defineProperty(this, \"tableUtils\", void 0);\n _defineProperty(this, \"updateFilterTimer\", void 0);\n this.handleSelectAllClick = this.handleSelectAllClick.bind(this);\n this.handleClearAllClick = this.handleClearAllClick.bind(this);\n this.handleListChange = this.handleListChange.bind(this);\n this.handleSearchChange = this.handleSearchChange.bind(this);\n this.handleUpdateFilterTimeout = this.handleUpdateFilterTimeout.bind(this);\n var {\n dh,\n invertSelection,\n selectedValues\n } = props;\n this.tableUtils = new TableUtils(dh);\n this.state = {\n filters: [],\n invertSelection,\n selectedValues,\n searchText: ''\n };\n }\n componentDidMount() {\n this.initSearchTable();\n }\n componentDidUpdate(prevProps, prevState) {\n var {\n invertSelection,\n selectedValues,\n table\n } = this.props;\n if (prevProps.table !== table) {\n this.initSearchTable();\n }\n if (prevProps.invertSelection !== invertSelection) {\n this.setState({\n invertSelection\n });\n }\n if (prevProps.selectedValues !== selectedValues) {\n this.setState({\n selectedValues\n });\n }\n var {\n table: searchTable,\n searchText\n } = this.state;\n if (searchTable !== prevState.table) {\n if (prevState.table != null) {\n prevState.table.close();\n }\n if (searchTable != null) {\n this.startUpdateFilterTimer();\n }\n }\n if (searchText !== prevState.searchText) {\n this.startUpdateFilterTimer();\n }\n }\n componentWillUnmount() {\n var {\n table\n } = this.state;\n if (table != null) {\n table.close();\n }\n this.searchTablePromise = undefined;\n this.stopUpdateFilterTimer();\n }\n getColumnName() {\n var {\n table\n } = this.props;\n if (table != null) {\n return table.columns[0].name;\n }\n return '';\n }\n getDisplayedValuesCount() {\n var {\n invertSelection,\n selectedValues,\n table\n } = this.state;\n if (table == null) {\n return null;\n }\n if (invertSelection) {\n return table.totalSize - selectedValues.length;\n }\n return selectedValues.length;\n }\n getDisplayedValueText() {\n var count = this.getDisplayedValuesCount();\n var {\n table\n } = this.state;\n var {\n formatter\n } = this.props;\n if (count != null && table != null) {\n var formattedCount = formatter.getFormattedString(count, 'long');\n var formattedTableSize = formatter.getFormattedString(table.totalSize, 'long');\n var prefix = '';\n if (count < 1000000) {\n prefix = 'Displaying ';\n }\n return \"\".concat(prefix).concat(formattedCount, \" of \").concat(formattedTableSize);\n }\n return null;\n }\n initSearchTable() {\n var {\n table\n } = this.props;\n if (table == null) {\n return;\n }\n var searchTablePromise = table.copy();\n this.searchTablePromise = searchTablePromise;\n this.searchTablePromise.then(searchTable => {\n if (this.searchTablePromise === searchTablePromise) {\n this.setState({\n table: searchTable\n });\n this.searchTablePromise = undefined;\n } else {\n searchTable.close();\n }\n });\n }\n handleListChange(selectedValues, invertSelection) {\n this.setState({\n selectedValues,\n invertSelection\n });\n var {\n onChange\n } = this.props;\n onChange(selectedValues, invertSelection);\n }\n handleSearchChange(event) {\n var searchText = event.target.value;\n this.setState({\n searchText\n });\n }\n handleSelectAllClick() {\n this.resetSelection(true);\n }\n handleClearAllClick() {\n this.resetSelection(false);\n }\n handleUpdateFilterTimeout() {\n this.updateFilterTimer = undefined;\n this.updateTableFilter();\n }\n resetSelection(invertSelection) {\n var selectedValues = [];\n this.setState({\n invertSelection,\n selectedValues\n });\n var {\n onChange\n } = this.props;\n onChange(selectedValues, invertSelection);\n }\n startUpdateFilterTimer() {\n this.stopUpdateFilterTimer();\n this.updateFilterTimer = setTimeout(this.handleUpdateFilterTimeout, AdvancedFilterCreatorSelectValue.searchDebounceTime);\n }\n stopUpdateFilterTimer() {\n if (this.updateFilterTimer != null) {\n clearTimeout(this.updateFilterTimer);\n this.updateFilterTimer = undefined;\n }\n }\n updateTableFilter() {\n var {\n table,\n searchText\n } = this.state;\n var {\n timeZone\n } = this.props;\n var {\n tableUtils\n } = this;\n var column = table === null || table === void 0 ? void 0 : table.columns[0];\n var filters = [];\n if (column == null) {\n return;\n }\n var error;\n if (searchText.length > 0) {\n var filter = null;\n if (TableUtils.isCharType(column.type)) {\n // Just exact match for char\n filter = tableUtils.makeQuickFilter(column, searchText);\n } else if (TableUtils.isTextType(column.type)) {\n // case insensitive & contains search text\n filter = tableUtils.makeQuickFilter(column, \"~\".concat(searchText), timeZone);\n } else {\n // greater than or equal search for everything else\n // we may want to be smarter with some other types (like dates)\n filter = tableUtils.makeQuickFilter(column, \">=\".concat(searchText), timeZone);\n }\n if (filter != null) {\n filters.push(filter);\n } else {\n error = 'Invalid search text';\n }\n }\n this.setState({\n filters,\n error\n });\n }\n render() {\n var {\n error,\n filters,\n invertSelection,\n selectedValues,\n searchText,\n table\n } = this.state;\n var {\n dh,\n formatter,\n showSearch\n } = this.props;\n var columnName = this.getColumnName();\n var displayedValuesText = this.getDisplayedValueText();\n var placeholderText = columnName ? \"Find \".concat(columnName, \"...\") : '';\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"advanced-filter-creator-select-value\",\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: showSearch ? 'form-group' : '',\n children: [/*#__PURE__*/_jsx(\"label\", {\n htmlFor: \"advanced-filter-creator-select-value-input\",\n children: \"Select Values\"\n }), showSearch && /*#__PURE__*/_jsx(\"input\", {\n type: \"text\",\n className: classNames('form-control', {\n 'is-invalid': error != null\n }),\n id: \"advanced-filter-creator-select-value-input\",\n placeholder: placeholderText,\n value: searchText,\n onChange: this.handleSearchChange\n })]\n }), /*#__PURE__*/_jsx(AdvancedFilterCreatorSelectValueList, {\n dh: dh,\n table: table,\n filters: filters,\n invertSelection: invertSelection,\n selectedValues: selectedValues,\n formatter: formatter,\n onChange: this.handleListChange\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"advanced-filter-creator-select-meta-row\",\n children: [/*#__PURE__*/_jsxs(\"div\", {\n children: [/*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n onClick: this.handleSelectAllClick,\n children: \"Select All\"\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n onClick: this.handleClearAllClick,\n children: \"Clear\"\n })]\n }), /*#__PURE__*/_jsx(FadeTransition, {\n in: displayedValuesText != null,\n mountOnEnter: true,\n unmountOnExit: true,\n children: /*#__PURE__*/_jsx(\"div\", {\n className: \"row-count-info\",\n children: displayedValuesText\n })\n })]\n })]\n });\n }\n}\n_defineProperty(AdvancedFilterCreatorSelectValue, \"searchDebounceTime\", 250);\n_defineProperty(AdvancedFilterCreatorSelectValue, \"defaultProps\", {\n invertSelection: true,\n selectedValues: [],\n onChange: () => undefined,\n showSearch: true\n});\nexport default AdvancedFilterCreatorSelectValue;\n//# sourceMappingURL=AdvancedFilterCreatorSelectValue.js.map","function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n/* eslint-disable jsx-a11y/no-noninteractive-tabindex */\n// disabled for tab-index on focus traps, which are intentionally non-interactive\n\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport memoize from 'memoize-one';\nimport { Operator as FilterOperator, assertOperatorValue as assertFilterOperatorValue } from '@deephaven/filters';\nimport { dhSortAmountDown, dhNewCircleLargeFilled } from '@deephaven/icons';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport { Button, ContextActionUtils } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport { assertNotNull, PromiseUtils } from '@deephaven/utils';\nimport { nanoid } from 'nanoid';\nimport AdvancedFilterCreatorFilterItem from \"./AdvancedFilterCreatorFilterItem.js\";\nimport AdvancedFilterCreatorSelectValue from \"./AdvancedFilterCreatorSelectValue.js\";\nimport \"./AdvancedFilterCreator.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nvar log = Log.module('AdvancedFilterCreator');\nclass AdvancedFilterCreator extends PureComponent {\n static makeFilterItem() {\n return {\n key: nanoid()\n };\n }\n constructor(props) {\n var _options$filterItems$, _options$filterItems;\n super(props);\n _defineProperty(this, \"focusTrapContainer\", void 0);\n _defineProperty(this, \"debounceTimeout\", void 0);\n _defineProperty(this, \"valuesTablePromise\", void 0);\n _defineProperty(this, \"getFilterTypes\", memoize(columnType => TableUtils.getFilterTypes(columnType)));\n this.handleAddAnd = this.handleAddAnd.bind(this);\n this.handleAddOr = this.handleAddOr.bind(this);\n this.handleChangeFilterOperator = this.handleChangeFilterOperator.bind(this);\n this.handleDone = this.handleDone.bind(this);\n this.handleFilterChange = this.handleFilterChange.bind(this);\n this.handleFilterDelete = this.handleFilterDelete.bind(this);\n this.handleSelectValueChange = this.handleSelectValueChange.bind(this);\n this.handleReset = this.handleReset.bind(this);\n this.handleSortDown = this.handleSortDown.bind(this);\n this.handleSortUp = this.handleSortUp.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n this.handleFocusTrapStart = this.handleFocusTrapStart.bind(this);\n this.handleFocusTrapEnd = this.handleFocusTrapEnd.bind(this);\n this.handleUpdateTimeout = this.handleUpdateTimeout.bind(this);\n this.focusTrapContainer = /*#__PURE__*/React.createRef();\n var {\n model,\n column,\n options\n } = props;\n var {\n filterOperators,\n invertSelection,\n selectedValues\n } = options;\n\n // can be null or an empty array\n var filterItems = (_options$filterItems$ = (_options$filterItems = options.filterItems) === null || _options$filterItems === void 0 ? void 0 : _options$filterItems.map(_ref => {\n var {\n selectedType,\n value\n } = _ref;\n return {\n selectedType,\n value,\n key: nanoid()\n };\n })) !== null && _options$filterItems$ !== void 0 ? _options$filterItems$ : [];\n if (filterItems.length === 0) {\n filterItems.push(AdvancedFilterCreator.makeFilterItem());\n }\n if (filterOperators == null) {\n filterOperators = [];\n }\n if (invertSelection == null) {\n invertSelection = true;\n }\n if (selectedValues == null) {\n selectedValues = [];\n }\n var columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n var isSortable = model.isColumnSortable(columnIndex);\n this.state = {\n // Filter items\n filterItems,\n // And/Or between the filter items\n filterOperators,\n invertSelection,\n selectedValues,\n valuesTableError: null,\n valuesTable: undefined,\n isSortable\n };\n }\n componentDidMount() {\n this.initValuesTable();\n }\n componentWillUnmount() {\n if (this.debounceTimeout != null) {\n clearTimeout(this.debounceTimeout);\n this.sendUpdate();\n }\n if (this.valuesTablePromise != null) {\n this.valuesTablePromise.cancel();\n }\n }\n getFilterChangeHandler(index) {\n return this.handleFilterChange.bind(this, index);\n }\n getFilterDeleteHandler(index) {\n return this.handleFilterDelete.bind(this, index);\n }\n initValuesTable() {\n var {\n model,\n column\n } = this.props;\n if (!model.isValuesTableAvailable) {\n log.debug('No values table for this model, just ignore');\n return;\n }\n this.valuesTablePromise = TableUtils.makeCancelableTablePromise(model.valuesTable(column));\n this.valuesTablePromise.then(valuesTable => {\n var _valuesTable$columns$;\n if ((_valuesTable$columns$ = valuesTable.columns[0].isSortable) !== null && _valuesTable$columns$ !== void 0 ? _valuesTable$columns$ : true) {\n var sort = valuesTable.columns[0].sort().asc();\n valuesTable.applySort([sort]);\n }\n this.setState({\n valuesTable\n });\n }).catch(error => {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n log.error('Unable to open values table', error);\n this.setState({\n valuesTableError: error\n });\n });\n }\n handleFocusTrapEnd() {\n var _this$focusTrapContai, _this$focusTrapContai2;\n ((_this$focusTrapContai = this.focusTrapContainer) === null || _this$focusTrapContai === void 0 ? void 0 : (_this$focusTrapContai2 = _this$focusTrapContai.current) === null || _this$focusTrapContai2 === void 0 ? void 0 : _this$focusTrapContai2.querySelector('button,select,input,textarea')).focus();\n }\n handleFocusTrapStart() {\n var _this$focusTrapContai3, _this$focusTrapContai4;\n var inputs = (_this$focusTrapContai3 = this.focusTrapContainer) === null || _this$focusTrapContai3 === void 0 ? void 0 : (_this$focusTrapContai4 = _this$focusTrapContai3.current) === null || _this$focusTrapContai4 === void 0 ? void 0 : _this$focusTrapContai4.querySelectorAll('button,select,input,textarea');\n if (inputs && inputs.length > 0) {\n var element = inputs[inputs.length - 1];\n element.focus();\n }\n }\n handleAddAnd() {\n var {\n filterItems,\n filterOperators\n } = this.state;\n filterItems = filterItems.concat(AdvancedFilterCreator.makeFilterItem());\n filterOperators = filterOperators.concat(FilterOperator.and);\n this.setState({\n filterItems,\n filterOperators\n });\n }\n handleAddOr() {\n var {\n filterItems,\n filterOperators\n } = this.state;\n filterItems = filterItems.concat(AdvancedFilterCreator.makeFilterItem());\n filterOperators = filterOperators.concat(FilterOperator.or);\n this.setState({\n filterItems,\n filterOperators\n });\n }\n handleChangeFilterOperator(index, operator) {\n var {\n filterOperators\n } = this.state;\n filterOperators = [...filterOperators];\n assertFilterOperatorValue(operator);\n filterOperators[index] = operator;\n this.setState({\n filterOperators\n });\n this.startUpdateTimer();\n }\n handleFilterChange(filterIndex, selectedType, value) {\n var {\n filterItems\n } = this.state;\n filterItems = [...filterItems];\n var {\n key\n } = filterItems[filterIndex];\n filterItems[filterIndex] = {\n key,\n selectedType,\n value\n };\n this.setState({\n filterItems\n });\n this.startUpdateTimer();\n }\n handleFilterDelete(filterIndex) {\n var {\n filterItems,\n filterOperators\n } = this.state;\n filterItems = [...filterItems];\n filterOperators = [...filterOperators];\n if (filterIndex < filterItems.length) {\n filterItems.splice(filterIndex, 1);\n }\n if (filterIndex < filterOperators.length) {\n filterOperators.splice(filterIndex, 1);\n } else if (filterIndex === filterOperators.length) {\n // When deleting the last filter item, we also need to remove the last filter operator\n filterOperators.splice(filterOperators.length - 1, 1);\n }\n if (filterItems.length === 0) {\n filterItems.push(AdvancedFilterCreator.makeFilterItem());\n }\n this.setState({\n filterItems,\n filterOperators\n });\n this.startUpdateTimer();\n }\n handleSelectValueChange(selectedValues, invertSelection) {\n this.setState({\n selectedValues,\n invertSelection\n });\n this.startUpdateTimer();\n }\n handleReset() {\n log.debug('Resetting Advanced Filter');\n this.setState({\n filterItems: [AdvancedFilterCreator.makeFilterItem()],\n filterOperators: [],\n selectedValues: [],\n invertSelection: true\n });\n this.startUpdateTimer();\n }\n handleSortDown(event) {\n var addToExisting = ContextActionUtils.isModifierKeyDown(event);\n this.sortTable(TableUtils.sortDirection.descending, addToExisting);\n }\n handleSortUp(event) {\n var addToExisting = ContextActionUtils.isModifierKeyDown(event);\n this.sortTable(TableUtils.sortDirection.ascending, addToExisting);\n }\n handleSubmit(event) {\n log.debug('Submitting Advanced Filter');\n this.stopUpdateTimer();\n this.sendUpdate();\n event.preventDefault();\n }\n handleDone(event) {\n log.debug('Submitting and Closing Advanced Filter');\n this.stopUpdateTimer();\n this.sendUpdate();\n var {\n onDone\n } = this.props;\n onDone();\n event.preventDefault();\n }\n handleUpdateTimeout() {\n this.debounceTimeout = undefined;\n this.sendUpdate();\n }\n\n /**\n * Convenience function to check if the previous filter has been inputted, and\n * we should show the add filter buttons (+ AND OR)\n * @returns true If the add filter buttons should be shown, false otherwise\n */\n shouldShowAddFilter() {\n var {\n filterItems\n } = this.state;\n if (filterItems.length === 0) {\n return false;\n }\n var filterItem = filterItems[filterItems.length - 1];\n var {\n selectedType,\n value\n } = filterItem;\n return selectedType != null && selectedType.length > 0 && value != null && value.length > 0;\n }\n\n /**\n * Sorts the table in the specified direction. If already sorted in that direction, remove it.\n * @param direction The sort direction, ASC or DESC\n * @param addToExisting Add to the existing sort, or replace the existing table sort\n */\n sortTable(direction) {\n var addToExisting = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var {\n column,\n onSortChange\n } = this.props;\n var {\n isSortable\n } = this.state;\n if (isSortable) {\n onSortChange(column, direction, addToExisting);\n }\n }\n startUpdateTimer() {\n this.stopUpdateTimer();\n this.debounceTimeout = setTimeout(this.handleUpdateTimeout, AdvancedFilterCreator.debounceFilterUpdate);\n }\n stopUpdateTimer() {\n if (this.debounceTimeout !== undefined) {\n clearTimeout(this.debounceTimeout);\n this.debounceTimeout = undefined;\n }\n }\n sendUpdate() {\n var {\n filterItems,\n filterOperators,\n invertSelection,\n selectedValues\n } = this.state;\n var {\n column,\n onFilterChange,\n model,\n tableUtils\n } = this.props;\n var {\n formatter\n } = model;\n var items = filterItems.filter(_ref2 => {\n var {\n selectedType,\n value\n } = _ref2;\n return selectedType != null && value != null && value !== '';\n });\n var operators = filterOperators.filter((operator, i) => operator != null && filterItems[i].selectedType != null && filterItems[i].value != null && filterItems[i].value !== '').slice(0, items.length - 1);\n // slice last operator, user may have set an operator but not a value\n\n var options = {\n filterItems: items,\n filterOperators: operators,\n invertSelection,\n selectedValues\n };\n var filter = tableUtils.makeAdvancedFilter(column, options, formatter.timeZone);\n onFilterChange(column, filter, options);\n }\n render() {\n var _this = this;\n var {\n column,\n model,\n sortDirection,\n formatter,\n tableUtils\n } = this.props;\n var {\n filterItems,\n filterOperators,\n invertSelection,\n selectedValues,\n valuesTable,\n valuesTableError,\n isSortable\n } = this.state;\n var {\n dh,\n isValuesTableAvailable\n } = model;\n var isBoolean = TableUtils.isBooleanType(column.type);\n var isDateType = TableUtils.isDateType(column.type);\n var filterTypes = this.getFilterTypes(column.type);\n var columnType = column.type.substring(column.type.lastIndexOf('.') + 1);\n var filterItemElements = [];\n if (!isBoolean && filterTypes.length) {\n var _loop = function _loop(i) {\n var filterItem = filterItems[i];\n var {\n key,\n selectedType,\n value\n } = filterItem;\n var element = /*#__PURE__*/_jsx(AdvancedFilterCreatorFilterItem, {\n column: column,\n filterTypes: filterTypes,\n onChange: _this.getFilterChangeHandler(i),\n onDelete: _this.getFilterDeleteHandler(i),\n selectedType: selectedType,\n value: value,\n formatter: formatter,\n tableUtils: tableUtils\n }, key);\n filterItemElements.push(element);\n if (i < filterOperators.length) {\n var filterOperator = filterOperators[i];\n var isAndFilter = filterOperator === FilterOperator.and;\n var operatorElement = /*#__PURE__*/_jsxs(\"div\", {\n className: \"form-row justify-content-end advanced-filter-creator-filter-operator\",\n children: [/*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: classNames('filter-operator', {\n active: isAndFilter\n }),\n onClick: () => _this.handleChangeFilterOperator(i, FilterOperator.and),\n children: \"AND\"\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: classNames('filter-operator', {\n active: !isAndFilter\n }),\n onClick: () => _this.handleChangeFilterOperator(i, FilterOperator.or),\n children: \"OR\"\n })]\n }, \"filterOperator\".concat(key));\n filterItemElements.push(operatorElement);\n }\n };\n for (var i = 0; i < filterItems.length; i += 1) {\n _loop(i);\n }\n }\n var showAddFilterItem = this.shouldShowAddFilter();\n var addFilterItem = /*#__PURE__*/_jsxs(\"div\", {\n className: classNames('form-row justify-content-end add-filter-item', {\n hidden: !showAddFilterItem\n }),\n children: [/*#__PURE__*/_jsx(\"span\", {\n className: \"text-muted\",\n children: /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: dhNewCircleLargeFilled\n })\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: \"btn-filter-item\",\n onClick: this.handleAddAnd,\n disabled: !showAddFilterItem,\n tooltip: \"Add filter with AND\",\n children: \"AND\"\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: \"btn-filter-item\",\n onClick: this.handleAddOr,\n disabled: !showAddFilterItem,\n tooltip: \"Add filter with OR\",\n children: \"OR\"\n })]\n }, \"addFilterItem\");\n filterItemElements.push(addFilterItem);\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"advanced-filter-creator\",\n role: \"presentation\",\n children: [/*#__PURE__*/_jsx(\"div\", {\n tabIndex: 0,\n onFocus: this.handleFocusTrapStart\n }), /*#__PURE__*/_jsxs(\"form\", {\n onSubmit: this.handleSubmit,\n ref: this.focusTrapContainer,\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"title-bar\",\n children: [/*#__PURE__*/_jsx(\"h6\", {\n className: \"advanced-filter-title\",\n children: \"Advanced Filters\"\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"advanced-filter-menu-buttons\",\n children: [/*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: classNames('sort-operator', {\n active: sortDirection === TableUtils.sortDirection.descending\n }),\n onClick: this.handleSortDown,\n icon: dhSortAmountDown,\n tooltip: isSortable ? \"Sort \".concat(column.name, \" Descending\") : 'Not sortable',\n disabled: !isSortable\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: classNames('sort-operator', {\n active: sortDirection === TableUtils.sortDirection.ascending\n }),\n onClick: this.handleSortUp,\n icon: /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: dhSortAmountDown,\n rotation: 180\n }),\n tooltip: isSortable ? \"Sort \".concat(column.name, \" Ascending\") : 'Not sortable',\n disabled: !isSortable\n })]\n })]\n }), /*#__PURE__*/_jsx(\"hr\", {}), /*#__PURE__*/_jsxs(\"div\", {\n className: \"advanced-filter-column-name\",\n children: [column.name, \"\\xA0\", /*#__PURE__*/_jsxs(\"span\", {\n className: \"column-type\",\n children: [\"(\", columnType, \")\"]\n })]\n }), filterItemElements, isValuesTableAvailable && valuesTableError == null && /*#__PURE__*/_jsxs(_Fragment, {\n children: [!isBoolean && /*#__PURE__*/_jsx(\"hr\", {}), /*#__PURE__*/_jsx(\"div\", {\n className: \"form-group\",\n children: /*#__PURE__*/_jsx(AdvancedFilterCreatorSelectValue, {\n dh: dh,\n table: valuesTable,\n onChange: this.handleSelectValueChange,\n invertSelection: invertSelection,\n selectedValues: selectedValues,\n formatter: formatter,\n showSearch: !isDateType,\n timeZone: formatter.timeZone\n })\n })]\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"form-row justify-content-end\",\n children: [/*#__PURE__*/_jsx(Button, {\n kind: \"secondary\",\n className: \"mr-2\",\n onClick: this.handleReset,\n children: \"Reset\"\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"primary\",\n onClick: this.handleDone,\n children: \"Done\"\n })]\n })]\n }), /*#__PURE__*/_jsx(\"div\", {\n tabIndex: 0,\n onFocus: this.handleFocusTrapEnd\n })]\n });\n }\n}\n_defineProperty(AdvancedFilterCreator, \"debounceFilterUpdate\", 250);\n_defineProperty(AdvancedFilterCreator, \"defaultProps\", {\n options: {\n filterItems: null,\n filterOperators: null,\n invertSelection: true,\n selectedValues: []\n },\n sortDirection: null\n});\nexport default AdvancedFilterCreator;\n//# sourceMappingURL=AdvancedFilterCreator.js.map","import { getConditionDBString, getStyleDBString } from \"./ConditionalFormattingUtils.js\"; // Conditional formatting API utils in a separate file\n// to make ConditionalFormattingUtils.ts easier to test.\n// https://github.com/facebook/jest/issues/936#issuecomment-545080082\nexport function makeTernaryFormatRule(config, prevRule) {\n var styleDBString = getStyleDBString(config);\n if (styleDBString === undefined) {\n return undefined;\n }\n var conditionDBString = getConditionDBString(config);\n return \"\".concat(conditionDBString, \" ? \").concat(styleDBString, \" : \").concat(prevRule);\n}\nexport function makeRowFormatColumn(dh, rule) {\n return dh.Column.formatRowColor(rule);\n}\nexport function makeColumnFormatColumn(col, rule) {\n return col.formatColor(rule);\n}\n//# sourceMappingURL=ConditionalFormattingAPIUtils.js.map","import Log from '@deephaven/log';\nimport { DateUtils, TableUtils } from '@deephaven/jsapi-utils';\nimport { makeColumnFormatColumn, makeRowFormatColumn, makeTernaryFormatRule } from \"./ConditionalFormattingAPIUtils.js\";\nvar log = Log.module('ConditionalFormattingUtils');\nexport var FormatterType;\n(function (FormatterType) {\n FormatterType[\"CONDITIONAL\"] = \"conditional\";\n FormatterType[\"ROWS\"] = \"rows\";\n})(FormatterType || (FormatterType = {}));\nexport var NumberCondition;\n(function (NumberCondition) {\n NumberCondition[\"IS_EQUAL\"] = \"is-equal\";\n NumberCondition[\"IS_NOT_EQUAL\"] = \"is-not-equal\";\n NumberCondition[\"IS_BETWEEN\"] = \"is-between\";\n NumberCondition[\"GREATER_THAN\"] = \"greater-than\";\n NumberCondition[\"GREATER_THAN_OR_EQUAL\"] = \"greater-than-or-equal\";\n NumberCondition[\"LESS_THAN\"] = \"less-than\";\n NumberCondition[\"LESS_THAN_OR_EQUAL\"] = \"less-than-or-equal\";\n NumberCondition[\"IS_NULL\"] = \"is-null\";\n NumberCondition[\"IS_NOT_NULL\"] = \"is-not-null\";\n})(NumberCondition || (NumberCondition = {}));\nexport var StringCondition;\n(function (StringCondition) {\n StringCondition[\"IS_EXACTLY\"] = \"is-exactly\";\n StringCondition[\"IS_NOT_EXACTLY\"] = \"is-not-exactly\";\n StringCondition[\"CONTAINS\"] = \"contains\";\n StringCondition[\"DOES_NOT_CONTAIN\"] = \"does-not-contain\";\n StringCondition[\"STARTS_WITH\"] = \"starts-with\";\n StringCondition[\"ENDS_WITH\"] = \"ends-with\";\n StringCondition[\"IS_NULL\"] = \"is-null\";\n StringCondition[\"IS_NOT_NULL\"] = \"is-not-null\";\n})(StringCondition || (StringCondition = {}));\nexport var DateCondition;\n(function (DateCondition) {\n DateCondition[\"IS_EXACTLY\"] = \"is-exactly\";\n DateCondition[\"IS_NOT_EXACTLY\"] = \"is-not-exactly\";\n DateCondition[\"IS_BEFORE\"] = \"is-before\";\n DateCondition[\"IS_BEFORE_OR_EQUAL\"] = \"is-before-or-equal\";\n DateCondition[\"IS_AFTER\"] = \"is-after\";\n DateCondition[\"IS_AFTER_OR_EQUAL\"] = \"is-after-or-equal\";\n DateCondition[\"IS_NULL\"] = \"is-null\";\n DateCondition[\"IS_NOT_NULL\"] = \"is-not-null\";\n})(DateCondition || (DateCondition = {}));\nexport var BooleanCondition;\n(function (BooleanCondition) {\n BooleanCondition[\"IS_TRUE\"] = \"is-true\";\n BooleanCondition[\"IS_FALSE\"] = \"is-false\";\n BooleanCondition[\"IS_NULL\"] = \"is-null\";\n BooleanCondition[\"IS_NOT_NULL\"] = \"is-not-null\";\n})(BooleanCondition || (BooleanCondition = {}));\nexport var CharCondition;\n(function (CharCondition) {\n CharCondition[\"IS_EQUAL\"] = \"is-equal\";\n CharCondition[\"IS_NOT_EQUAL\"] = \"is-not-equal\";\n CharCondition[\"IS_NULL\"] = \"is-null\";\n CharCondition[\"IS_NOT_NULL\"] = \"is-not-null\";\n})(CharCondition || (CharCondition = {}));\nexport var FormatStyleType;\n(function (FormatStyleType) {\n FormatStyleType[\"NO_FORMATTING\"] = \"no-formatting\";\n FormatStyleType[\"POSITIVE\"] = \"positive\";\n FormatStyleType[\"NEGATIVE\"] = \"negative\";\n FormatStyleType[\"WARN\"] = \"warn\";\n FormatStyleType[\"NEUTRAL\"] = \"neutral\";\n FormatStyleType[\"ACCENT_1\"] = \"accent-1\";\n FormatStyleType[\"ACCENT_2\"] = \"accent-2\";\n FormatStyleType[\"CUSTOM\"] = \"custom\";\n})(FormatStyleType || (FormatStyleType = {}));\nexport function getLabelForStyleType(option) {\n switch (option) {\n case FormatStyleType.NO_FORMATTING:\n return 'No formatting';\n case FormatStyleType.POSITIVE:\n return 'Positive';\n case FormatStyleType.NEGATIVE:\n return 'Negative';\n case FormatStyleType.WARN:\n return 'Warn';\n case FormatStyleType.NEUTRAL:\n return 'Neutral';\n case FormatStyleType.ACCENT_1:\n return 'Accent 1';\n case FormatStyleType.ACCENT_2:\n return 'Accent 2';\n case FormatStyleType.CUSTOM:\n return 'Custom...';\n }\n}\nexport function getBackgroundForStyleConfig(config) {\n var {\n type,\n customConfig\n } = config;\n switch (type) {\n case FormatStyleType.NO_FORMATTING:\n return undefined;\n case FormatStyleType.POSITIVE:\n return '#9fde6f';\n case FormatStyleType.NEGATIVE:\n return '#ff6087';\n case FormatStyleType.WARN:\n return '#f67f40';\n case FormatStyleType.NEUTRAL:\n return '#ffd95c';\n case FormatStyleType.ACCENT_1:\n return '#78dce8';\n case FormatStyleType.ACCENT_2:\n return '#ab9bf5';\n case FormatStyleType.CUSTOM:\n return customConfig === null || customConfig === void 0 ? void 0 : customConfig.background;\n default:\n return undefined;\n }\n}\nexport function getColorForStyleConfig(config) {\n var {\n type,\n customConfig\n } = config;\n switch (type) {\n case FormatStyleType.NO_FORMATTING:\n return undefined;\n case FormatStyleType.POSITIVE:\n return '#526a3f';\n case FormatStyleType.NEGATIVE:\n return '#802f44';\n case FormatStyleType.WARN:\n return '#663318';\n case FormatStyleType.NEUTRAL:\n return '#63562b';\n case FormatStyleType.ACCENT_1:\n return '#3f6469';\n case FormatStyleType.ACCENT_2:\n return '#554d72';\n case FormatStyleType.CUSTOM:\n return customConfig === null || customConfig === void 0 ? void 0 : customConfig.color;\n default:\n return undefined;\n }\n}\nexport function getStyleDBString(config) {\n var color = getColorForStyleConfig(config.style);\n var bg = getBackgroundForStyleConfig(config.style);\n if (color === undefined || bg === undefined) {\n return undefined;\n }\n return \"bgfg(`\".concat(bg, \"`, `\").concat(color, \"`)\");\n}\nfunction getNumberConditionText(config) {\n var {\n column,\n value,\n start,\n end\n } = config;\n return getTextForNumberCondition(column.name, config.condition, value, start, end);\n}\nfunction getStringConditionText(config) {\n var {\n column,\n value\n } = config;\n return getTextForStringCondition(column.name, config.condition, value);\n}\nfunction getDateConditionText(config) {\n var {\n column,\n value\n } = config;\n return getTextForDateCondition(column.name, config.condition, value);\n}\nfunction getBooleanConditionText(config) {\n var {\n column\n } = config;\n return getTextForBooleanCondition(column.name, config.condition);\n}\nfunction getCharConditionText(config) {\n var {\n column,\n value\n } = config;\n return getTextForCharCondition(column.name, config.condition, value);\n}\nexport function getConditionDBString(config) {\n var {\n column\n } = config;\n if (TableUtils.isNumberType(column.type)) {\n return getNumberConditionText(config);\n }\n if (TableUtils.isCharType(column.type)) {\n return getCharConditionText(config);\n }\n if (TableUtils.isStringType(column.type)) {\n return getStringConditionText(config);\n }\n if (TableUtils.isDateType(column.type)) {\n return getDateConditionText(config);\n }\n if (TableUtils.isBooleanType(column.type)) {\n return getBooleanConditionText(config);\n }\n throw new Error('Invalid column type');\n}\nexport function getLabelForNumberCondition(condition) {\n switch (condition) {\n case NumberCondition.IS_EQUAL:\n return 'is equal to';\n case NumberCondition.IS_NOT_EQUAL:\n return 'is not equal to';\n case NumberCondition.IS_BETWEEN:\n return 'is between';\n case NumberCondition.GREATER_THAN:\n return 'greater than';\n case NumberCondition.GREATER_THAN_OR_EQUAL:\n return 'greater than or equal to';\n case NumberCondition.LESS_THAN:\n return 'less than';\n case NumberCondition.LESS_THAN_OR_EQUAL:\n return 'less than or equal to';\n case NumberCondition.IS_NULL:\n return 'is null';\n case NumberCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\nexport function getLabelForStringCondition(condition) {\n switch (condition) {\n case StringCondition.IS_EXACTLY:\n return 'is exactly';\n case StringCondition.IS_NOT_EXACTLY:\n return 'is not exactly';\n case StringCondition.CONTAINS:\n return 'contains';\n case StringCondition.DOES_NOT_CONTAIN:\n return 'does not contain';\n case StringCondition.STARTS_WITH:\n return 'starts with';\n case StringCondition.ENDS_WITH:\n return 'ends with';\n case StringCondition.IS_NULL:\n return 'is null';\n case StringCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\nexport function getLabelForDateCondition(condition) {\n switch (condition) {\n case DateCondition.IS_EXACTLY:\n return 'is';\n case DateCondition.IS_NOT_EXACTLY:\n return 'is not';\n case DateCondition.IS_BEFORE:\n return 'is before';\n case DateCondition.IS_BEFORE_OR_EQUAL:\n return 'is before or equal';\n case DateCondition.IS_AFTER:\n return 'is after';\n case DateCondition.IS_AFTER_OR_EQUAL:\n return 'is after or equal';\n case DateCondition.IS_NULL:\n return 'is null';\n case DateCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\nexport function getLabelForBooleanCondition(condition) {\n switch (condition) {\n case BooleanCondition.IS_TRUE:\n return 'is true';\n case BooleanCondition.IS_FALSE:\n return 'is false';\n case BooleanCondition.IS_NULL:\n return 'is null';\n case BooleanCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\nexport function getLabelForCharCondition(condition) {\n switch (condition) {\n case CharCondition.IS_EQUAL:\n return 'is';\n case CharCondition.IS_NOT_EQUAL:\n return 'is not';\n case CharCondition.IS_NULL:\n return 'is null';\n case CharCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\nexport function getDefaultConditionForType(columnType) {\n if (TableUtils.isNumberType(columnType)) {\n return NumberCondition.IS_EQUAL;\n }\n if (TableUtils.isCharType(columnType)) {\n return CharCondition.IS_EQUAL;\n }\n if (TableUtils.isStringType(columnType)) {\n return StringCondition.IS_EXACTLY;\n }\n if (TableUtils.isDateType(columnType)) {\n return DateCondition.IS_EXACTLY;\n }\n if (TableUtils.isBooleanType(columnType)) {\n return BooleanCondition.IS_TRUE;\n }\n throw new Error('Invalid column type');\n}\nexport function getDefaultValueForType(columnType) {\n if (TableUtils.isCharType(columnType)) {\n return '';\n }\n if (TableUtils.isStringType(columnType)) {\n return '';\n }\n return undefined;\n}\nexport function getConditionConfig(config) {\n var {\n condition,\n value,\n start,\n end\n } = config;\n return {\n condition,\n value,\n start,\n end\n };\n}\nexport function getDefaultConditionConfigForType(type) {\n return {\n condition: getDefaultConditionForType(type),\n value: getDefaultValueForType(type),\n start: undefined,\n end: undefined\n };\n}\nexport function getDefaultStyleConfig() {\n return {\n type: FormatStyleType.NO_FORMATTING\n };\n}\nfunction getShortLabelForStringCondition(condition) {\n switch (condition) {\n case StringCondition.IS_EXACTLY:\n return '==';\n case StringCondition.IS_NOT_EXACTLY:\n return '!=';\n case StringCondition.CONTAINS:\n return 'contains';\n case StringCondition.DOES_NOT_CONTAIN:\n return 'does not contain';\n case StringCondition.STARTS_WITH:\n return 'starts with';\n case StringCondition.ENDS_WITH:\n return 'ends with';\n case StringCondition.IS_NULL:\n return 'is null';\n case StringCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\nfunction getShortLabelForDateCondition(condition) {\n switch (condition) {\n case DateCondition.IS_EXACTLY:\n return '==';\n case DateCondition.IS_NOT_EXACTLY:\n return '!=';\n case DateCondition.IS_BEFORE:\n return '<';\n case DateCondition.IS_BEFORE_OR_EQUAL:\n return '<=';\n case DateCondition.IS_AFTER:\n return '>';\n case DateCondition.IS_AFTER_OR_EQUAL:\n return '>=';\n case DateCondition.IS_NULL:\n return 'is null';\n case DateCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\nfunction getShortLabelForBooleanCondition(condition) {\n switch (condition) {\n case BooleanCondition.IS_TRUE:\n return 'is true';\n case BooleanCondition.IS_FALSE:\n return 'is false';\n case BooleanCondition.IS_NULL:\n return 'is null';\n case BooleanCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\nfunction getShortLabelForCharCondition(condition) {\n switch (condition) {\n case CharCondition.IS_EQUAL:\n return '==';\n case CharCondition.IS_NOT_EQUAL:\n return '!=';\n case CharCondition.IS_NULL:\n return 'is null';\n case CharCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\nexport function getShortLabelForNumberCondition(condition) {\n switch (condition) {\n case NumberCondition.IS_EQUAL:\n return '==';\n case NumberCondition.IS_NOT_EQUAL:\n return '!=';\n case NumberCondition.IS_BETWEEN:\n return '==';\n case NumberCondition.GREATER_THAN:\n return '>';\n case NumberCondition.GREATER_THAN_OR_EQUAL:\n return '>=';\n case NumberCondition.LESS_THAN:\n return '<';\n case NumberCondition.LESS_THAN_OR_EQUAL:\n return '<=';\n case NumberCondition.IS_NULL:\n return 'is null';\n case NumberCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\nexport function getTextForNumberCondition(columnName, condition, value, start, end) {\n switch (condition) {\n case NumberCondition.IS_EQUAL:\n return \"\".concat(columnName, \" == \").concat(value);\n case NumberCondition.IS_NOT_EQUAL:\n return \"\".concat(columnName, \" != \").concat(value);\n case NumberCondition.IS_BETWEEN:\n return \"\".concat(columnName, \" > \").concat(start, \" && \").concat(columnName, \" < \").concat(end);\n case NumberCondition.GREATER_THAN:\n return \"\".concat(columnName, \" > \").concat(value);\n case NumberCondition.GREATER_THAN_OR_EQUAL:\n return \"\".concat(columnName, \" >= \").concat(value);\n case NumberCondition.LESS_THAN:\n return \"\".concat(columnName, \" < \").concat(value);\n case NumberCondition.LESS_THAN_OR_EQUAL:\n return \"\".concat(columnName, \" <= \").concat(value);\n case NumberCondition.IS_NULL:\n return \"\".concat(columnName, \" == null\");\n case NumberCondition.IS_NOT_NULL:\n return \"\".concat(columnName, \" != null\");\n }\n}\nexport function getTextForStringCondition(columnName, condition, value) {\n switch (condition) {\n case StringCondition.IS_EXACTLY:\n return \"\".concat(columnName, \" == \\\"\").concat(value, \"\\\"\");\n case StringCondition.IS_NOT_EXACTLY:\n return \"\".concat(columnName, \" != \\\"\").concat(value, \"\\\"\");\n case StringCondition.CONTAINS:\n return \"\".concat(columnName, \" != null && \").concat(columnName, \".contains(\\\"\").concat(value, \"\\\")\");\n case StringCondition.DOES_NOT_CONTAIN:\n return \"\".concat(columnName, \" != null && !\").concat(columnName, \".contains(\\\"\").concat(value, \"\\\")\");\n case StringCondition.STARTS_WITH:\n return \"\".concat(columnName, \" != null && \").concat(columnName, \".startsWith(\\\"\").concat(value, \"\\\")\");\n case StringCondition.ENDS_WITH:\n return \"\".concat(columnName, \" != null && \").concat(columnName, \".endsWith(\\\"\").concat(value, \"\\\")\");\n case StringCondition.IS_NULL:\n return \"\".concat(columnName, \" == null\");\n case StringCondition.IS_NOT_NULL:\n return \"\".concat(columnName, \" != null\");\n }\n}\nexport function getTextForDateCondition(columnName, condition, value) {\n switch (condition) {\n case DateCondition.IS_EXACTLY:\n return \"\".concat(columnName, \" == convertDateTime(\\\"\").concat(value, \"\\\")\");\n case DateCondition.IS_NOT_EXACTLY:\n return \"\".concat(columnName, \" != convertDateTime(`\").concat(value, \"`)\");\n case DateCondition.IS_BEFORE:\n return \"\".concat(columnName, \" < convertDateTime(`\").concat(value, \"`)\");\n case DateCondition.IS_BEFORE_OR_EQUAL:\n return \"\".concat(columnName, \" <= convertDateTime(\\\"\").concat(value, \"\\\")\");\n case DateCondition.IS_AFTER:\n return \"\".concat(columnName, \" > convertDateTime(`\").concat(value, \"`)\");\n case DateCondition.IS_AFTER_OR_EQUAL:\n return \"\".concat(columnName, \" >= convertDateTime(`\").concat(value, \"`)\");\n case DateCondition.IS_NULL:\n return \"\".concat(columnName, \" == null\");\n case DateCondition.IS_NOT_NULL:\n return \"\".concat(columnName, \" != null\");\n }\n}\nexport function getTextForBooleanCondition(columnName, condition) {\n switch (condition) {\n case BooleanCondition.IS_TRUE:\n return \"\".concat(columnName, \" == true\");\n case BooleanCondition.IS_FALSE:\n return \"\".concat(columnName, \" == false\");\n case BooleanCondition.IS_NULL:\n return \"\".concat(columnName, \" == null\");\n case BooleanCondition.IS_NOT_NULL:\n return \"\".concat(columnName, \" != null\");\n }\n}\nexport function getTextForCharCondition(columnName, condition, value) {\n switch (condition) {\n case CharCondition.IS_EQUAL:\n return \"\".concat(columnName, \" == '\").concat(value, \"'\");\n case CharCondition.IS_NOT_EQUAL:\n return \"\".concat(columnName, \" != '\").concat(value, \"'\");\n case CharCondition.IS_NULL:\n return \"isNull(\".concat(columnName, \")\");\n case CharCondition.IS_NOT_NULL:\n return \"!isNull(\".concat(columnName, \")\");\n }\n}\nexport function getShortLabelForConditionType(columnType, condition) {\n if (TableUtils.isNumberType(columnType)) {\n return getShortLabelForNumberCondition(condition);\n }\n if (TableUtils.isCharType(columnType)) {\n return getShortLabelForCharCondition(condition);\n }\n if (TableUtils.isStringType(columnType)) {\n return getShortLabelForStringCondition(condition);\n }\n if (TableUtils.isDateType(columnType)) {\n return getShortLabelForDateCondition(condition);\n }\n if (TableUtils.isBooleanType(columnType)) {\n return getShortLabelForBooleanCondition(condition);\n }\n throw new Error('Invalid column type');\n}\n\n/**\n * Get format columns array for the given columns and formatting rules\n * @param columns Available columns\n * @param rules Formatting rules to build the format columns from\n * @returns Array of format columns\n */\nexport function getFormatColumns(dh, columns, rules) {\n if (rules === undefined) {\n log.debug(\"no rules passed.\");\n return [];\n }\n var result = [];\n // There can be only one row format custom column\n // and multiple column format custom columns (one per column)\n var rowFormatConfig;\n var columnFormatConfigMap = new Map();\n rules.forEach(_ref => {\n var _ref3;\n var {\n config,\n type: formatterType\n } = _ref;\n var {\n column\n } = config;\n // Check both name and type because the type can change\n var col = columns.find(_ref2 => {\n var {\n name,\n type\n } = _ref2;\n return name === column.name && type === column.type;\n });\n if (col === undefined) {\n log.debug(\"Column \".concat(column.name, \":\").concat(column.type, \" not found. Ignoring format rule.\"), config);\n return;\n }\n // Stack ternary format conditions by column\n var [prevRule, prevFormatColumn] = (_ref3 = formatterType === FormatterType.CONDITIONAL ? columnFormatConfigMap.get(col.name) : rowFormatConfig) !== null && _ref3 !== void 0 ? _ref3 : ['null', undefined];\n var rule = makeTernaryFormatRule(config, prevRule);\n if (rule === undefined) {\n log.debug(\"Ignoring format rule.\", config);\n return;\n }\n // Replace existing formatColumn with the new stacked format\n var index = prevFormatColumn === undefined ? -1 : result.indexOf(prevFormatColumn);\n if (index > -1) {\n result.splice(index, 1);\n }\n var formatColumn = formatterType === FormatterType.CONDITIONAL ? makeColumnFormatColumn(col, rule) : makeRowFormatColumn(dh, rule);\n result.push(formatColumn);\n if (formatterType === FormatterType.CONDITIONAL) {\n columnFormatConfigMap.set(col.name, [rule, formatColumn]);\n } else {\n rowFormatConfig = [rule, formatColumn];\n }\n });\n return result;\n}\n\n/**\n * Validate that a given date condition + value pair is valid.\n * @param condition\n * @param value\n */\nexport function isDateConditionValid(dh, condition, value) {\n switch (condition) {\n case DateCondition.IS_NULL:\n case DateCondition.IS_NOT_NULL:\n return true;\n default:\n {\n var [dateTimeString, ...rest] = (value !== null && value !== void 0 ? value : '').split(' ');\n // Reconstitute all tokens after the first ' ' in case the user included garbage data at the end\n // e.g. '2020-01-01 NY blah'\n var tzCode = rest.join(' ');\n try {\n DateUtils.parseDateTimeString(dateTimeString);\n } catch (e) {\n log.debug('Invalid datetime string', dateTimeString);\n return false;\n }\n try {\n dh.i18n.TimeZone.getTimeZone(tzCode);\n } catch (e) {\n log.debug('Invalid timezone string', tzCode);\n return false;\n }\n return true;\n }\n }\n}\nexport function isSupportedColumn(_ref4) {\n var {\n type\n } = _ref4;\n return TableUtils.isNumberType(type) || TableUtils.isCharType(type) || TableUtils.isStringType(type) || TableUtils.isDateType(type) || TableUtils.isBooleanType(type);\n}\n//# sourceMappingURL=ConditionalFormattingUtils.js.map","import React from 'react';\nimport classNames from 'classnames';\nimport { CSSTransition } from 'react-transition-group';\nimport { ThemeExport } from '@deephaven/components';\nimport \"./IrisGridBottomBar.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function IrisGridBottomBar(_ref) {\n var {\n animation = 'iris-grid-bottom-bar-slide-up',\n children,\n className,\n isShown,\n onClick,\n onEntering,\n onEntered,\n onExiting,\n onExited\n } = _ref;\n return /*#__PURE__*/_jsx(CSSTransition, {\n in: isShown,\n timeout: ThemeExport.transitionMs,\n classNames: animation,\n onEntering: onEntering,\n onEntered: onEntered,\n onExiting: onExiting,\n onExited: onExited,\n mountOnEnter: true,\n unmountOnExit: true,\n children: /*#__PURE__*/_jsx(\"div\", {\n className: classNames('iris-grid-bottom-bar', className),\n role: \"presentation\",\n onClick: onClick,\n onKeyPress: onClick,\n children: children\n })\n });\n}\nexport default IrisGridBottomBar;\n//# sourceMappingURL=IrisGridBottomBar.js.map","import React, { useEffect, useMemo, useRef, useState } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsPass, vsWarning } from '@deephaven/icons';\nimport { Button, LoadingSpinner } from '@deephaven/components';\nimport { usePrevious } from '@deephaven/react-hooks';\nimport IrisGridBottomBar from \"./IrisGridBottomBar.js\";\nimport \"./PendingDataBottomBar.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar HIDE_TIMEOUT = 3000;\nvar MAX_NUMBER_ROWS_SHOWN = 5;\nexport function PendingDataBottomBar(_ref) {\n var {\n isSaving = false,\n onSave,\n onDiscard,\n discardTooltip,\n saveTooltip,\n error,\n pendingDataErrors,\n pendingDataMap,\n onEntering,\n onEntered,\n onExiting,\n onExited: _onExited\n } = _ref;\n var [isSuccessShown, setIsSuccessShown] = useState(false);\n var [wasSuccessShown, setWasSuccessShown] = useState(false);\n var successTimeout = useRef();\n var prevIsSaving = usePrevious(isSaving);\n var errorMessage = useMemo(() => {\n if (pendingDataErrors.size === 0) {\n return error;\n }\n if (pendingDataErrors.size <= MAX_NUMBER_ROWS_SHOWN) {\n return \"Key can't be empty (on pending row\".concat(pendingDataErrors.size > 1 ? 's' : '', \" \").concat(Array.from(pendingDataErrors.keys()).join(', ').trim(), \")\");\n }\n return \"Key can't be empty (on \".concat(pendingDataErrors.size, \" rows)\");\n }, [error, pendingDataErrors]);\n useEffect(function showSuccessMessage() {\n if (prevIsSaving != null && prevIsSaving && !isSaving && errorMessage == null) {\n setIsSuccessShown(true);\n setWasSuccessShown(true);\n successTimeout.current = setTimeout(() => {\n setIsSuccessShown(false);\n }, HIDE_TIMEOUT);\n }\n }, [errorMessage, isSaving, prevIsSaving]);\n useEffect(function hideSuccessMessage() {\n if (successTimeout.current && pendingDataMap.size > 0) {\n // A change just occurred while the success message was still being shown, just hide the success message\n clearTimeout(successTimeout.current);\n setIsSuccessShown(false);\n setWasSuccessShown(false);\n }\n }, [pendingDataMap]);\n useEffect(function cleanupTimeout() {\n return () => successTimeout.current ? clearTimeout(successTimeout.current) : undefined;\n }, []);\n var pendingRowCount = pendingDataMap.size;\n var commitIcon;\n if (isSaving) {\n commitIcon = /*#__PURE__*/_jsx(LoadingSpinner, {\n className: \"loading-spinner-vertical-align\"\n });\n } else if (wasSuccessShown) {\n commitIcon = vsPass;\n }\n return /*#__PURE__*/_jsxs(IrisGridBottomBar, {\n className: \"pending-data-bottom-bar\",\n isShown: pendingRowCount > 0 || isSuccessShown || errorMessage != null,\n onEntering: onEntering,\n onEntered: onEntered,\n onExiting: onExiting,\n onExited: () => {\n setWasSuccessShown(false);\n if (_onExited) {\n _onExited();\n }\n },\n children: [errorMessage != null && errorMessage !== '' && /*#__PURE__*/_jsxs(\"div\", {\n className: \"error-message\",\n children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsWarning\n }), /*#__PURE__*/_jsx(\"span\", {\n children: \"\".concat(errorMessage)\n })]\n }), (errorMessage == null || errorMessage === '') && /*#__PURE__*/_jsx(\"div\", {\n className: \"status-message\",\n children: pendingRowCount > 0 && /*#__PURE__*/_jsx(\"span\", {\n children: \"\".concat(pendingRowCount, \" row\").concat(pendingRowCount > 1 ? 's' : '', \" pending\")\n })\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"buttons-container\",\n children: [!isSaving && !wasSuccessShown && /*#__PURE__*/_jsx(Button, {\n kind: \"secondary\",\n onClick: onDiscard,\n tooltip: discardTooltip,\n children: \"Discard\"\n }), /*#__PURE__*/_jsxs(Button, {\n kind: wasSuccessShown ? 'success' : 'primary',\n onClick: onSave,\n icon: commitIcon,\n disabled: isSaving || wasSuccessShown || errorMessage != null,\n tooltip: saveTooltip,\n children: [isSaving && \"Committing...\", !isSaving && wasSuccessShown && \"Success\", !isSaving && !wasSuccessShown && \"Commit\"]\n })]\n })]\n });\n}\nexport default PendingDataBottomBar;\n//# sourceMappingURL=PendingDataBottomBar.js.map","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport { Button, FadeTransition, LoadingSpinner } from '@deephaven/components';\nimport { GridRange, GridUtils } from '@deephaven/grid';\nimport { CanceledPromiseError, copyToClipboard, PromiseUtils } from '@deephaven/utils';\nimport Log from '@deephaven/log';\nimport IrisGridUtils from \"./IrisGridUtils.js\";\nimport IrisGridBottomBar from \"./IrisGridBottomBar.js\";\nimport \"./IrisGridCopyHandler.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('IrisGridCopyHandler');\nfunction isCopyRangesOperation(copyOperation) {\n return copyOperation.ranges != null;\n}\nfunction isCopyHeaderOperation(copyOperation) {\n return copyOperation.columnIndex != null;\n}\n/**\n * Component for handling copying of data from the Iris Grid.\n * - Prompts if necessary (large amount of rows copied)\n * - Tries to async copy, falls back to showing a \"Click to Copy\" button if that fails\n */\nclass IrisGridCopyHandler extends Component {\n /**\n * Different states for the current copy operation\n */\n\n static getStatusMessageText(copyState, rowCount) {\n switch (copyState) {\n case IrisGridCopyHandler.COPY_STATES.CONFIRMATION_REQUIRED:\n return \"Are you sure you want to copy \".concat(rowCount.toLocaleString(), \" rows to your clipboard?\");\n case IrisGridCopyHandler.COPY_STATES.CLICK_REQUIRED:\n return \"Fetched \".concat(rowCount.toLocaleString(), \" rows!\");\n case IrisGridCopyHandler.COPY_STATES.FETCH_ERROR:\n return 'Unable to copy data.';\n case IrisGridCopyHandler.COPY_STATES.FETCH_RANGES_IN_PROGRESS:\n return \"Fetching \".concat(rowCount.toLocaleString(), \" rows for clipboard...\");\n case IrisGridCopyHandler.COPY_STATES.FETCH_HEADER_IN_PROGRESS:\n return 'Fetching header for clipboard...';\n case IrisGridCopyHandler.COPY_STATES.DONE:\n return 'Copied to Clipboard!';\n default:\n return '';\n }\n }\n static getCopyButtonText(buttonState) {\n switch (buttonState) {\n case IrisGridCopyHandler.BUTTON_STATES.FETCH_IN_PROGRESS:\n return 'Fetching';\n case IrisGridCopyHandler.BUTTON_STATES.CLICK_TO_COPY:\n return 'Click to Copy';\n case IrisGridCopyHandler.BUTTON_STATES.RETRY:\n return 'Retry';\n default:\n return 'Copy';\n }\n }\n constructor(props) {\n super(props);\n _defineProperty(this, \"textData\", void 0);\n _defineProperty(this, \"hideTimer\", void 0);\n _defineProperty(this, \"fetchPromise\", void 0);\n this.handleBackgroundClick = this.handleBackgroundClick.bind(this);\n this.handleCancelClick = this.handleCancelClick.bind(this);\n this.handleCopyClick = this.handleCopyClick.bind(this);\n this.handleHideTimeout = this.handleHideTimeout.bind(this);\n this.state = {\n error: undefined,\n copyState: IrisGridCopyHandler.COPY_STATES.IDLE,\n buttonState: IrisGridCopyHandler.BUTTON_STATES.COPY,\n isShown: false,\n rowCount: 0\n };\n }\n componentDidMount() {\n var {\n copyOperation\n } = this.props;\n if (copyOperation != null) {\n this.startCopy();\n }\n }\n componentDidUpdate(prevProps) {\n var {\n copyOperation\n } = this.props;\n if (prevProps.copyOperation !== copyOperation) {\n this.startCopy();\n }\n }\n componentWillUnmount() {\n this.stopCopy();\n }\n startCopy() {\n log.debug2('startCopy');\n this.stopCopy();\n var {\n copyOperation\n } = this.props;\n if (copyOperation == null) {\n log.debug2('No copy operation set, cancelling out');\n this.setState({\n isShown: false\n });\n return;\n }\n var {\n error\n } = copyOperation;\n if (error != null) {\n log.debug('Showing copy error', error);\n this.setState({\n isShown: true,\n copyState: IrisGridCopyHandler.COPY_STATES.DONE,\n error\n });\n this.startHideTimer();\n return;\n }\n this.setState({\n isShown: true,\n error: undefined\n });\n if (isCopyRangesOperation(copyOperation)) {\n var {\n ranges\n } = copyOperation;\n var rowCount = GridRange.rowCount(ranges);\n this.setState({\n rowCount\n });\n if (rowCount > IrisGridCopyHandler.NO_PROMPT_THRESHOLD) {\n this.setState({\n buttonState: IrisGridCopyHandler.BUTTON_STATES.COPY,\n copyState: IrisGridCopyHandler.COPY_STATES.CONFIRMATION_REQUIRED\n });\n return;\n }\n }\n this.startFetch();\n }\n stopCopy() {\n this.textData = undefined;\n this.stopFetch();\n this.stopHideTimer();\n }\n handleBackgroundClick() {\n log.debug2('handleBackgroundClick');\n var {\n copyState\n } = this.state;\n if (copyState === IrisGridCopyHandler.COPY_STATES.DONE) {\n this.setState({\n isShown: false\n });\n }\n }\n handleCancelClick() {\n log.debug2('handleCancelClick');\n this.stopFetch();\n this.setState({\n isShown: false\n });\n }\n handleCopyClick() {\n var _this = this;\n return _asyncToGenerator(function* () {\n log.debug2('handleCopyClick');\n if (_this.textData != null) {\n try {\n yield _this.copyText(_this.textData);\n _this.showCopyDone();\n } catch (e) {\n log.error('Error copying text', e);\n _this.setState({\n error: 'Unable to copy. Verify your browser permissions.'\n });\n }\n } else {\n _this.startFetch();\n }\n })();\n }\n handleHideTimeout() {\n log.debug2('handleHideTimeout');\n this.stopHideTimer();\n this.setState({\n isShown: false\n });\n }\n copyText(text) {\n var _this2 = this;\n return _asyncToGenerator(function* () {\n log.debug2('copyText', text);\n _this2.textData = text;\n yield copyToClipboard(text);\n })();\n }\n showCopyDone() {\n this.setState({\n copyState: IrisGridCopyHandler.COPY_STATES.DONE\n });\n this.startHideTimer();\n }\n startFetch() {\n var _this3 = this;\n return _asyncToGenerator(function* () {\n _this3.stopFetch();\n var {\n model,\n copyOperation\n } = _this3.props;\n if (isCopyHeaderOperation(copyOperation)) {\n var {\n columnIndex,\n columnDepth,\n movedColumns\n } = copyOperation;\n log.debug('startFetch copyHeader', columnIndex, columnDepth);\n _this3.setState({\n buttonState: IrisGridCopyHandler.BUTTON_STATES.FETCH_IN_PROGRESS,\n copyState: IrisGridCopyHandler.COPY_STATES.FETCH_HEADER_IN_PROGRESS\n });\n var modelIndex = GridUtils.getModelIndex(columnIndex, movedColumns);\n var copyText = model.textForColumnHeader(modelIndex, columnDepth);\n if (copyText === undefined) {\n _this3.fetchPromise = undefined;\n _this3.setState({\n error: 'Invalid column header selected.',\n copyState: IrisGridCopyHandler.COPY_STATES.DONE\n });\n return;\n }\n _this3.fetchPromise = PromiseUtils.makeCancelable(copyText);\n } else {\n var {\n ranges,\n includeHeaders,\n userColumnWidths,\n movedColumns: _movedColumns,\n formatValues\n } = copyOperation;\n log.debug('startFetch copyRanges', ranges);\n _this3.setState({\n buttonState: IrisGridCopyHandler.BUTTON_STATES.FETCH_IN_PROGRESS,\n copyState: IrisGridCopyHandler.COPY_STATES.FETCH_RANGES_IN_PROGRESS\n });\n var hiddenColumns = IrisGridUtils.getHiddenColumns(userColumnWidths);\n var modelRanges = GridUtils.getModelRanges(ranges, _movedColumns);\n if (hiddenColumns.length > 0) {\n var subtractRanges = hiddenColumns.map(GridRange.makeColumn);\n modelRanges = GridRange.subtractRangesFromRanges(modelRanges, subtractRanges);\n }\n\n // Remove the hidden columns from the snapshot\n var formatValue = formatValues != null && formatValues ? (value, column) => model.displayString(value, column.type, column.name) : value => \"\".concat(value);\n _this3.fetchPromise = PromiseUtils.makeCancelable(model.textSnapshot(modelRanges, includeHeaders, formatValue));\n }\n try {\n var text = yield _this3.fetchPromise;\n _this3.fetchPromise = undefined;\n try {\n yield _this3.copyText(text);\n _this3.showCopyDone();\n } catch (e) {\n log.error('Error copying text', e);\n _this3.setState({\n buttonState: IrisGridCopyHandler.BUTTON_STATES.CLICK_TO_COPY,\n copyState: IrisGridCopyHandler.COPY_STATES.CLICK_REQUIRED\n });\n }\n } catch (e) {\n if (e instanceof CanceledPromiseError) {\n log.debug('User cancelled copy.');\n } else {\n log.error('Error fetching contents', e);\n _this3.fetchPromise = undefined;\n _this3.setState({\n buttonState: IrisGridCopyHandler.BUTTON_STATES.RETRY,\n copyState: IrisGridCopyHandler.COPY_STATES.FETCH_ERROR\n });\n }\n }\n })();\n }\n stopFetch() {\n if (this.fetchPromise) {\n log.debug2('stopFetch');\n this.fetchPromise.cancel();\n this.fetchPromise = undefined;\n }\n }\n startHideTimer() {\n this.stopHideTimer();\n this.hideTimer = setTimeout(this.handleHideTimeout, IrisGridCopyHandler.HIDE_TIMEOUT);\n }\n stopHideTimer() {\n if (this.hideTimer != null) {\n clearTimeout(this.hideTimer);\n this.hideTimer = undefined;\n }\n }\n render() {\n var {\n onEntering,\n onEntered,\n onExiting,\n onExited\n } = this.props;\n var {\n buttonState,\n copyState,\n isShown,\n rowCount,\n error\n } = this.state;\n var animation = copyState === IrisGridCopyHandler.COPY_STATES.DONE ? 'fade' : 'copy-slide-up';\n var copyButtonText = IrisGridCopyHandler.getCopyButtonText(buttonState);\n var statusMessageText = error !== null && error !== void 0 ? error : IrisGridCopyHandler.getStatusMessageText(copyState, rowCount);\n var isButtonContainerVisible = copyState !== IrisGridCopyHandler.COPY_STATES.DONE;\n var isFetching = buttonState === IrisGridCopyHandler.BUTTON_STATES.FETCH_IN_PROGRESS;\n var isDone = copyState === IrisGridCopyHandler.COPY_STATES.DONE;\n return /*#__PURE__*/_jsxs(IrisGridBottomBar, {\n animation: animation,\n isShown: isShown,\n className: classNames('iris-grid-copy-handler', {\n 'copy-done': isDone\n }),\n onClick: this.handleBackgroundClick,\n onEntering: onEntering,\n onEntered: onEntered,\n onExiting: onExiting,\n onExited: onExited,\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"status-message\",\n children: /*#__PURE__*/_jsx(\"span\", {\n children: statusMessageText\n })\n }), /*#__PURE__*/_jsx(FadeTransition, {\n in: isButtonContainerVisible,\n mountOnEnter: true,\n unmountOnExit: true,\n children: /*#__PURE__*/_jsxs(\"div\", {\n className: \"buttons-container\",\n children: [/*#__PURE__*/_jsx(\"button\", {\n type: \"button\",\n className: \"btn btn-outline-secondary btn-cancel\",\n onClick: this.handleCancelClick,\n children: \"Cancel\"\n }), /*#__PURE__*/_jsxs(Button, {\n kind: isFetching ? 'tertiary' : 'primary',\n className: classNames('btn-copy', {\n 'btn-spinner': isFetching\n }),\n onClick: this.handleCopyClick,\n disabled: isFetching,\n children: [isFetching && /*#__PURE__*/_jsx(LoadingSpinner, {\n className: \"loading-spinner-vertical-align\"\n }), copyButtonText]\n })]\n })\n })]\n });\n }\n}\n_defineProperty(IrisGridCopyHandler, \"NO_PROMPT_THRESHOLD\", 10000);\n_defineProperty(IrisGridCopyHandler, \"HIDE_TIMEOUT\", 3000);\n_defineProperty(IrisGridCopyHandler, \"COPY_STATES\", {\n // No copy operation in progress\n IDLE: 'IDLE',\n // Large copy operation, confirmation required\n CONFIRMATION_REQUIRED: 'CONFIRMATION_REQUIRED',\n // Fetch is currently in progress for copy ranges operation\n FETCH_RANGES_IN_PROGRESS: 'FETCH_RANGES_IN_PROGRESS',\n // Fetch is currently in progress for copy header operation\n FETCH_HEADER_IN_PROGRESS: 'FETCH_HEADER_IN_PROGRESS',\n // There was an error fetching the data\n FETCH_ERROR: 'FETCH_ERROR',\n // Click is required to copy\n CLICK_REQUIRED: 'CLICK_REQUIRED',\n // The copy operation is completed and successfully copied to the clipboard\n DONE: 'DONE'\n});\n_defineProperty(IrisGridCopyHandler, \"BUTTON_STATES\", {\n COPY: 'COPY',\n FETCH_IN_PROGRESS: 'FETCH_IN_PROGRESS',\n CLICK_TO_COPY: 'CLICK_TO_COPY',\n RETRY: 'RETRY'\n});\n_defineProperty(IrisGridCopyHandler, \"defaultProps\", {\n copyOperation: null,\n onEntering: () => undefined,\n onEntered: () => undefined,\n onExiting: () => undefined,\n onExited: () => undefined\n});\nexport default IrisGridCopyHandler;\n//# sourceMappingURL=IrisGridCopyHandler.js.map","function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport debounce from 'lodash.debounce';\nimport { vsFilter, dhFilterFilled } from '@deephaven/icons';\nimport \"./FilterInputField.css\";\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Button } from '@deephaven/components';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n/**\n * An input field showing a input field and button.\n * Debounces changes.\n */\nclass FilterInputField extends PureComponent {\n constructor(props) {\n super(props);\n _defineProperty(this, \"inputField\", void 0);\n _defineProperty(this, \"initialValue\", void 0);\n _defineProperty(this, \"debouncedSendUpdate\", void 0);\n var {\n debounceMs\n } = props;\n this.debouncedSendUpdate = debounce(this.sendUpdate.bind(this), debounceMs);\n this.handleCancel = this.handleCancel.bind(this);\n this.handleChange = this.handleChange.bind(this);\n this.handleCommit = this.handleCommit.bind(this);\n this.handleFocus = this.handleFocus.bind(this);\n this.handleBlur = this.handleBlur.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.handleContextMenu = this.handleContextMenu.bind(this);\n this.inputField = null;\n var {\n value\n } = props;\n this.initialValue = value;\n this.state = {\n isChanged: false,\n value\n };\n }\n componentDidMount() {\n var _this$inputField;\n (_this$inputField = this.inputField) === null || _this$inputField === void 0 ? void 0 : _this$inputField.focus();\n }\n componentDidUpdate(prevProps) {\n var {\n debounceMs\n } = this.props;\n if (prevProps.debounceMs !== debounceMs) {\n this.debouncedSendUpdate.flush();\n this.debouncedSendUpdate = debounce(this.sendUpdate.bind(this), debounceMs);\n }\n }\n componentWillUnmount() {\n this.debouncedSendUpdate.cancel();\n }\n // clear filters needs to be able to reset the value externally\n // and due to the way this component handles its own debouncing\n // this was easier than moving state up.\n setValue(value) {\n this.initialValue = value;\n this.setState({\n value\n });\n }\n focus() {\n var _this$inputField2;\n (_this$inputField2 = this.inputField) === null || _this$inputField2 === void 0 ? void 0 : _this$inputField2.focus();\n }\n handleChange(event) {\n var {\n value\n } = event.target;\n this.setState({\n value,\n isChanged: true\n });\n this.debouncedSendUpdate(value);\n }\n handleCancel() {\n this.debouncedSendUpdate.cancel();\n var {\n initialValue\n } = this;\n var {\n isChanged\n } = this.state;\n if (isChanged) {\n this.sendUpdate(initialValue);\n }\n var {\n onDone\n } = this.props;\n onDone();\n }\n handleCommit() {\n var setGridFocus = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n var defocusInput = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n this.debouncedSendUpdate.flush();\n var {\n onDone\n } = this.props;\n onDone(setGridFocus, defocusInput);\n }\n handleFocus() {\n var _this$inputField3;\n (_this$inputField3 = this.inputField) === null || _this$inputField3 === void 0 ? void 0 : _this$inputField3.select();\n }\n handleBlur(event) {\n var {\n relatedTarget\n } = event;\n // handleCommit results in a call that steals focus\n if (relatedTarget != null && relatedTarget.classList.contains('context-menu-container')) {\n // input blurred by calling context-menu\n // don't set grid focus, but do null column focus\n this.handleCommit(false, true);\n } else if (relatedTarget != null && relatedTarget.classList.contains('advanced-filter-button')) {\n // blurred by clicking an advanced filter button\n // don't set grid focus, maintain focusedFilterBarColumn state\n this.handleCommit(false, false);\n } else {\n // clear both, blurred elsewhere\n this.handleCommit(true, true);\n }\n }\n handleTab() {\n var backward = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n this.debouncedSendUpdate.flush();\n var {\n onTab\n } = this.props;\n onTab(backward);\n }\n handleKeyDown(event) {\n switch (event.key) {\n case 'Escape':\n event.stopPropagation();\n event.preventDefault();\n this.handleCancel();\n break;\n case 'Enter':\n event.stopPropagation();\n event.preventDefault();\n this.handleCommit();\n break;\n case 'Tab':\n event.stopPropagation();\n event.preventDefault();\n this.handleTab(event.shiftKey);\n break;\n default:\n break;\n }\n }\n handleContextMenu(event) {\n var {\n onContextMenu\n } = this.props;\n onContextMenu(event);\n }\n sendUpdate(value) {\n var {\n onChange\n } = this.props;\n onChange(value);\n }\n render() {\n var {\n className,\n style,\n isAdvancedFilterSet,\n onAdvancedFiltersTriggered\n } = this.props;\n var {\n value\n } = this.state;\n return /*#__PURE__*/_jsxs(\"div\", {\n style: style,\n className: \"iris-grid-input-autosized-wrapper\",\n \"data-value\": value // used by css based autosizer\n ,\n children: [/*#__PURE__*/_jsx(\"input\", {\n ref: inputField => {\n this.inputField = inputField;\n },\n className: classNames('iris-grid-input-field', className),\n type: \"text\",\n value: value,\n onBlur: this.handleBlur,\n onFocus: this.handleFocus,\n onChange: this.handleChange,\n onKeyDown: this.handleKeyDown,\n onContextMenu: this.handleContextMenu,\n autoComplete: \"off\",\n autoCorrect: \"off\",\n autoCapitalize: \"off\",\n spellCheck: \"false\"\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"advanced-filter-button-container\",\n children: /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: classNames('btn-link-icon advanced-filter-button', {\n 'filter-set': isAdvancedFilterSet\n }),\n onClick: onAdvancedFiltersTriggered,\n onContextMenu: this.handleContextMenu,\n children: /*#__PURE__*/_jsxs(\"div\", {\n className: \"fa-layers \",\n children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: dhFilterFilled,\n className: \"filter-solid\"\n }), /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsFilter,\n className: \"filter-light\"\n })]\n })\n })\n })]\n });\n }\n}\n_defineProperty(FilterInputField, \"defaultProps\", {\n style: {},\n className: '',\n value: '',\n isAdvancedFilterSet: false,\n onAdvancedFiltersTriggered: () => undefined,\n onChange: () => undefined,\n onDone: () => undefined,\n onTab: () => undefined,\n onContextMenu: () => undefined,\n debounceMs: 150\n});\nexport default FilterInputField;\n//# sourceMappingURL=FilterInputField.js.map","function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\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(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\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(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\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(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\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 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 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 updateFrozenColumns() {\n if (frozenColumns) {\n model.updateFrozenColumns(frozenColumns);\n }\n }, [model, frozenColumns]);\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 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(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Button, CopyButton, LoadingSpinner } from '@deephaven/components';\nimport { dhFreeze, dhRefresh, dhSortSlash, vsLock } from '@deephaven/icons';\nimport Log from '@deephaven/log';\nimport { PromiseUtils } from '@deephaven/utils';\nimport { isExpandableGridModel } from '@deephaven/grid';\nimport \"./ColumnStatistics.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nvar log = Log.module('ColumnStatistics');\nvar STATS_LABEL_OVERRIDES = {\n SIZE: 'Number of Rows'\n};\nclass ColumnStatistics extends Component {\n /** Automatically generate the statistics when the row count is below this threshold */\n\n static getStatsLabel(operation) {\n var _STATS_LABEL_OVERRIDE;\n return (_STATS_LABEL_OVERRIDE = STATS_LABEL_OVERRIDES[operation]) !== null && _STATS_LABEL_OVERRIDE !== void 0 ? _STATS_LABEL_OVERRIDE : operation.split(' ').map(w => w[0].toUpperCase() + w.substr(1).toLowerCase()).join(' ');\n }\n constructor(props) {\n super(props);\n _defineProperty(this, \"cancelablePromise\", void 0);\n this.handleError = this.handleError.bind(this);\n this.handleGenerateStatistics = this.handleGenerateStatistics.bind(this);\n this.handleStatistics = this.handleStatistics.bind(this);\n this.cancelablePromise = null;\n this.state = {\n error: null,\n loading: false,\n statistics: null,\n numRows: 0\n };\n }\n componentDidMount() {\n this.maybeGenerateStatistics();\n }\n componentWillUnmount() {\n if (this.cancelablePromise) {\n this.cancelablePromise.cancel();\n }\n }\n maybeGenerateStatistics() {\n var {\n column,\n model\n } = this.props;\n var numRows = model.rowCount - model.pendingRowCount - model.floatingBottomRowCount - model.floatingTopRowCount;\n this.setState({\n numRows\n });\n if (!model.isColumnStatisticsAvailable || column.isProxy === true) {\n this.setState({\n loading: false\n });\n } else if (numRows < ColumnStatistics.AUTO_GENERATE_LIMIT) {\n this.handleGenerateStatistics();\n }\n }\n handleGenerateStatistics() {\n this.setState({\n loading: true\n });\n var {\n column,\n model\n } = this.props;\n this.cancelablePromise = PromiseUtils.makeCancelable(model.columnStatistics(column));\n this.cancelablePromise.then(this.handleStatistics).catch(this.handleError);\n }\n handleStatistics(stats) {\n log.debug('Received statistics', stats);\n var {\n model,\n onStatistics\n } = this.props;\n var statistics = [];\n stats.statisticsMap.forEach((value, operation) => {\n statistics.push({\n operation: ColumnStatistics.getStatsLabel(operation),\n value,\n type: stats.getType(operation)\n });\n });\n stats.uniqueValues.forEach((value, operation) => {\n statistics.push({\n operation,\n className: 'column-statistics-unique-value',\n value,\n type: 'long'\n });\n });\n this.setState({\n loading: false,\n statistics,\n numRows: model.rowCount - model.pendingRowCount - model.floatingBottomRowCount - model.floatingTopRowCount\n });\n onStatistics();\n }\n handleError(error) {\n if (error != null && PromiseUtils.isCanceled(error)) {\n log.debug('Called handleError on a cancelled promise result');\n return;\n }\n log.error('Error generating statistics', error);\n this.setState({\n error,\n loading: false,\n statistics: null\n });\n }\n render() {\n var _column$displayName;\n var {\n column,\n model\n } = this.props;\n var {\n error,\n loading,\n statistics,\n numRows\n } = this.state;\n var showGenerateStatistics = !loading && error == null && statistics == null && model.isColumnStatisticsAvailable;\n var statisticElements = [];\n var columnType = column.type.substring(column.type.lastIndexOf('.') + 1);\n var description = column.description === null ? null : column.description;\n if (statistics != null) {\n for (var i = 0; i < statistics.length; i += 1) {\n var {\n operation,\n className,\n value,\n type\n } = statistics[i];\n var formattedValue = !type ? model.displayString(value, column.type, column.name) : model.displayString(value, type);\n var statisticElement = /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: classNames('column-statistic-operation', className),\n children: operation\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"column-statistic-value\",\n children: formattedValue\n })]\n }, operation);\n statisticElements.push(statisticElement);\n }\n }\n var rowCountLabel = isExpandableGridModel(model) && model.hasExpandableRows ? 'Expanded Rows' : 'Number of Rows';\n var formattedRowCount = model.displayString(numRows, 'long');\n var columnIndex = model.getColumnIndexByName(column.name);\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"column-statistics\",\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"column-statistics-title\",\n children: [(_column$displayName = column.displayName) !== null && _column$displayName !== void 0 ? _column$displayName : column.name, /*#__PURE__*/_jsxs(\"span\", {\n className: \"column-statistics-type\",\n children: [\"\\xA0(\", columnType, \")\"]\n }), /*#__PURE__*/_jsx(CopyButton, {\n className: \"column-statistics-copy\",\n tooltip: \"Copy column name\",\n copy: column.name\n })]\n }), description != null && /*#__PURE__*/_jsx(\"div\", {\n className: \"column-statistics-description\",\n children: description\n }), columnIndex != null && !model.isColumnSortable(columnIndex) && /*#__PURE__*/_jsxs(\"div\", {\n className: \"column-statistics-status\",\n children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: dhSortSlash,\n className: \"mr-1\"\n }), \"Not sortable\"]\n }), columnIndex != null && !model.isColumnMovable(columnIndex) && /*#__PURE__*/_jsxs(\"div\", {\n className: \"column-statistics-status\",\n children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: model.isColumnFrozen(columnIndex) ? dhFreeze : vsLock,\n className: \"mr-1\"\n }), model.isColumnFrozen(columnIndex) ? 'Frozen' : 'Not movable']\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"column-statistics-grid\",\n children: [statistics == null && /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"column-statistic-operation\",\n children: rowCountLabel\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"column-statistic-value\",\n children: formattedRowCount\n })]\n }), statisticElements]\n }), showGenerateStatistics && /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: \"px-0\",\n onClick: this.handleGenerateStatistics,\n children: \"Generate Stats\"\n }), error != null && /*#__PURE__*/_jsx(\"div\", {\n className: \"error-message\",\n children: \"\".concat(error)\n }), statistics && !loading && /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: \"px-0\",\n onClick: this.handleGenerateStatistics,\n icon: dhRefresh,\n children: \"Refresh\"\n }), loading && /*#__PURE__*/_jsxs(\"div\", {\n className: \"column-statistics-loading\",\n children: [/*#__PURE__*/_jsx(LoadingSpinner, {\n className: \"loading-spinner-vertical-align\"\n }), \"Calculating Stats...\"]\n })]\n });\n }\n}\n_defineProperty(ColumnStatistics, \"AUTO_GENERATE_LIMIT\", 100000);\nexport default ColumnStatistics;\n//# sourceMappingURL=ColumnStatistics.js.map","function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport React, { PureComponent } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Checkbox, Popper, SearchInput, Tooltip } from '@deephaven/components';\nimport { dhGearFilled, dhCheckSquare, dhSquareFilled, dhRemoveSquareFilled, dhWarningCircleFilled, vsCircleLargeFilled } from '@deephaven/icons';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport \"./CrossColumnSearch.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nclass CrossColumnSearch extends PureComponent {\n static createSearchFilter(dh, searchValue, selectedColumns, columns, invertSelection) {\n var filterColumns = invertSelection ? columns.filter(column => !selectedColumns.includes(column.name)).map(column => column.name) : selectedColumns;\n if (searchValue && filterColumns.length > 0) {\n var filterValue = dh.FilterValue.ofString(searchValue);\n var searchFilter = filterColumns.length === columns.length ? dh.FilterCondition.search(filterValue) : dh.FilterCondition.search(filterValue, columns.filter(column => filterColumns.includes(column.name)).map(column => column.filter()));\n return searchFilter;\n }\n return undefined;\n }\n constructor(props) {\n super(props);\n _defineProperty(this, \"searchField\", void 0);\n this.handleSearchValueChange = this.handleSearchValueChange.bind(this);\n this.toggleColumn = this.toggleColumn.bind(this);\n this.selectAll = this.selectAll.bind(this);\n this.clear = this.clear.bind(this);\n this.selectNumbers = this.selectNumbers.bind(this);\n this.searchField = /*#__PURE__*/React.createRef();\n this.state = {\n isConfigureColumnsShown: false\n };\n }\n focus() {\n var _this$searchField$cur;\n (_this$searchField$cur = this.searchField.current) === null || _this$searchField$cur === void 0 ? void 0 : _this$searchField$cur.focus();\n }\n handleSearchValueChange(event) {\n var {\n onChange,\n selectedColumns,\n invertSelection\n } = this.props;\n onChange(event.target.value, selectedColumns, invertSelection);\n }\n sendColumnChange(selectedColumns, invertSelection) {\n var {\n onChange,\n value\n } = this.props;\n onChange(value, selectedColumns, invertSelection);\n }\n setInvertSelection(invertSelection) {\n var {\n onChange,\n value\n } = this.props;\n onChange(value, [], invertSelection);\n }\n toggleColumn(name) {\n var {\n selectedColumns,\n invertSelection\n } = this.props;\n if (selectedColumns.includes(name)) {\n this.sendColumnChange(selectedColumns.filter(c => c !== name), invertSelection);\n } else {\n var update = selectedColumns.slice();\n update.push(name);\n this.sendColumnChange(update, invertSelection);\n }\n }\n selectAll() {\n this.setInvertSelection(true);\n }\n clear() {\n this.setInvertSelection(false);\n }\n selectNumbers() {\n var {\n columns\n } = this.props;\n this.sendColumnChange(columns.filter(c => TableUtils.isNumberType(c.type)).map(column => column.name), false);\n }\n render() {\n var {\n value,\n selectedColumns,\n invertSelection,\n columns\n } = this.props;\n var {\n isConfigureColumnsShown\n } = this.state;\n var hasAllColumnsSelected = selectedColumns.length === 0 && invertSelection === true || selectedColumns.length === columns.length && invertSelection === false;\n var hasNoColumnsSelected = selectedColumns.length === 0 && invertSelection === false || selectedColumns.length === columns.length && invertSelection === true;\n\n // set icon layers\n var icon;\n if (hasAllColumnsSelected) {\n // icon if all columns selected for search\n icon = /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: dhSquareFilled,\n mask: dhGearFilled,\n transform: \"shrink-2 down-5 right-7\"\n }), /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: dhCheckSquare,\n className: \"text-primary\",\n transform: \"shrink-4 down-5 right-7\"\n })]\n });\n } else if (hasNoColumnsSelected) {\n // icon error, no columns selected for searching\n icon = /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsCircleLargeFilled,\n mask: dhGearFilled,\n transform: \"shrink-1 down-5 right-7\"\n }), /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: dhWarningCircleFilled,\n className: \"text-danger\",\n transform: \"shrink-4 down-5 right-7\"\n })]\n });\n } else {\n // icon if some columns selected, but not all\n icon = /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: dhSquareFilled,\n mask: dhGearFilled,\n transform: \"shrink-2 down-5 right-7\"\n }), /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: dhRemoveSquareFilled,\n className: \"text-primary\",\n transform: \"shrink-4 down-5 right-7\"\n })]\n });\n }\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"cross-column-container\",\n children: [/*#__PURE__*/_jsx(SearchInput, {\n className: \"cross-column-search\",\n placeholder: \"Search Data...\",\n \"data-testid\": \"cross-column-search\",\n value: value,\n onChange: this.handleSearchValueChange,\n ref: this.searchField\n }), /*#__PURE__*/_jsxs(\"button\", {\n type: \"button\",\n className: \"btn btn-link btn-link-icon px-2\",\n onClick: () => {\n if (isConfigureColumnsShown) {\n this.setState({\n isConfigureColumnsShown: false\n });\n } else {\n this.setState({\n isConfigureColumnsShown: true\n });\n }\n },\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"fa-layers\",\n children: icon\n }), /*#__PURE__*/_jsx(Tooltip, {\n children: \"Configure Columns\"\n }), /*#__PURE__*/_jsx(Popper, {\n isShown: isConfigureColumnsShown,\n className: \"cross-column-popper\",\n onExited: () => {\n this.setState({\n isConfigureColumnsShown: false\n });\n },\n closeOnBlur: true,\n interactive: true,\n children: /*#__PURE__*/_jsxs(\"div\", {\n className: \"cross-column-popup\",\n children: [\"Searched Columns\", /*#__PURE__*/_jsx(\"div\", {\n className: \"cross-column-scroll\",\n children: columns.map(column => {\n if (column.isProxy === true) return null;\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(Checkbox, {\n className: \"cross-column-checkbox\",\n checked: invertSelection ? !selectedColumns.includes(column.name) : selectedColumns.includes(column.name),\n onChange: () => this.toggleColumn(column.name),\n children: column.name\n }), column.type.substring(column.type.lastIndexOf('.') + 1)]\n }, column.name);\n })\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"cross-column-button-bar\",\n children: [/*#__PURE__*/_jsx(\"button\", {\n type: \"button\",\n className: \"btn btn-link\",\n onClick: this.selectAll,\n children: \"Select All\"\n }), /*#__PURE__*/_jsx(\"button\", {\n type: \"button\",\n className: \"btn btn-link\",\n onClick: this.clear,\n children: \"Clear\"\n }), /*#__PURE__*/_jsx(\"button\", {\n type: \"button\",\n className: \"btn btn-link\",\n onClick: this.selectNumbers,\n children: \"Numbers Only\"\n })]\n }), hasNoColumnsSelected && /*#__PURE__*/_jsxs(\"p\", {\n className: \"text-danger\",\n children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: dhWarningCircleFilled\n }), \" Select at least one column to search.\"]\n })]\n })\n })]\n })]\n });\n }\n}\nexport default CrossColumnSearch;\n//# sourceMappingURL=CrossColumnSearch.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport React, { Component } from 'react';\nimport memoizee from 'memoizee';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Button } from '@deephaven/components';\nimport { vsChevronRight, vsMerge, vsKey } from '@deephaven/icons';\nimport Log from '@deephaven/log';\nimport { Picker } from '@deephaven/jsapi-components';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport { assertNotNull, Pending, PromiseUtils } from '@deephaven/utils';\nimport \"./IrisGridPartitionSelector.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('IrisGridPartitionSelector');\nclass IrisGridPartitionSelector extends Component {\n constructor(props) {\n super(props);\n _defineProperty(this, \"pending\", void 0);\n _defineProperty(this, \"tableUtils\", void 0);\n _defineProperty(this, \"getCachedChangeCallback\", memoizee(index => value => this.handlePartitionSelect(index, value)));\n _defineProperty(this, \"getCachedFormatValueCallback\", memoizee(index => value => this.getDisplayValue(index, value)));\n this.handlePartitionTableClick = this.handlePartitionTableClick.bind(this);\n this.handleMergeClick = this.handleMergeClick.bind(this);\n this.handlePartitionSelect = this.handlePartitionSelect.bind(this);\n var {\n model\n } = props;\n this.tableUtils = new TableUtils(model.dh);\n this.pending = new Pending();\n this.state = {\n // We start be loading the partition tables, so we should be in a loading state\n isLoading: true,\n baseTable: null,\n keysTable: null,\n partitionTables: null\n };\n }\n componentDidMount() {\n var _this = this;\n return _asyncToGenerator(function* () {\n var {\n model\n } = _this.props;\n try {\n var keysTable = yield _this.pending.add(model.partitionKeysTable().then(keyTable => keyTable), t => t.close());\n var baseTable = yield _this.pending.add(model.partitionBaseTable(), t => t.close());\n _this.setState({\n keysTable,\n baseTable,\n isLoading: false\n });\n _this.updatePartitionOptions();\n } catch (e) {\n if (!PromiseUtils.isCanceled(e)) {\n // Just re-throw the error if it's not a cancel\n throw e;\n }\n }\n })();\n }\n componentDidUpdate(prevProps) {\n var {\n partitionConfig: prevConfig\n } = prevProps;\n var {\n partitionConfig\n } = this.props;\n if (prevConfig !== partitionConfig) {\n this.updatePartitionOptions();\n }\n }\n componentWillUnmount() {\n this.pending.cancel();\n var {\n keysTable,\n baseTable,\n partitionTables\n } = this.state;\n baseTable === null || baseTable === void 0 ? void 0 : baseTable.close();\n keysTable === null || keysTable === void 0 ? void 0 : keysTable.close();\n partitionTables === null || partitionTables === void 0 ? void 0 : partitionTables.forEach(table => table.close());\n }\n handlePartitionTableClick() {\n log.debug2('handlePartitionTableClick');\n var {\n partitionConfig\n } = this.props;\n assertNotNull(partitionConfig);\n var newPartitionConfig = _objectSpread({}, partitionConfig);\n // Toggle between Keys and Partition mode\n newPartitionConfig.mode = partitionConfig.mode === 'keys' ? 'partition' : 'keys';\n this.sendUpdate(newPartitionConfig);\n }\n handleMergeClick() {\n log.debug2('handleMergeClick');\n var {\n partitionConfig\n } = this.props;\n assertNotNull(partitionConfig);\n var newPartitionConfig = _objectSpread({}, partitionConfig);\n // Toggle between Merged and Partition mode\n newPartitionConfig.mode = partitionConfig.mode === 'merged' ? 'partition' : 'merged';\n this.sendUpdate(newPartitionConfig);\n }\n\n /**\n * Handles when a partition dropdown selection is changed. Will send an update with the new partition config\n * @param index Index of the partition column that was changed\n * @param selectedValue Selected value of the partition column\n */\n handlePartitionSelect(index, selectedValue) {\n var _this2 = this;\n return _asyncToGenerator(function* () {\n var {\n partitionConfig: prevConfig\n } = _this2.props;\n assertNotNull(prevConfig);\n log.debug('handlePartitionSelect', index, selectedValue, prevConfig);\n var newPartitions = [...prevConfig.partitions];\n newPartitions[index] = selectedValue;\n var {\n baseTable\n } = _this2.state;\n var {\n keysTable\n } = _this2.state;\n assertNotNull(baseTable);\n assertNotNull(keysTable);\n try {\n _this2.setState({\n isLoading: true\n });\n var t = yield _this2.pending.add(baseTable.copy(), tCopy => tCopy.close());\n\n // Apply our partition filters, and just get the first value\n var partitionFilters = newPartitions.slice(0, index + 1).map((partition, i) => {\n var partitionColumn = t.columns[i];\n return _this2.tableUtils.makeNullableEqFilter(partitionColumn, partition);\n });\n t.applyFilter(partitionFilters);\n t.setViewport(0, 0, t.columns);\n var data = yield _this2.pending.add(t.getViewportData());\n var newConfig = {\n // Core JSAPI returns undefined for null table values,\n // coalesce with null to differentiate null from no selection in the dropdown\n // https://github.com/deephaven/deephaven-core/issues/5400\n partitions: keysTable.columns.map(column => data.rows[0].get(column)),\n mode: 'partition'\n };\n t.close();\n _this2.sendUpdate(newConfig);\n } catch (e) {\n if (!PromiseUtils.isCanceled(e)) {\n log.error('Unable to get partition tables', e);\n }\n } finally {\n _this2.setState({\n isLoading: false\n });\n }\n })();\n }\n sendUpdate(partitionConfig) {\n log.debug2('sendUpdate', partitionConfig);\n var {\n onChange\n } = this.props;\n onChange(partitionConfig);\n }\n\n /**\n * Calls model.displayString with a special character case\n * @param index The index of the partition column to get the display value for\n * @param value The partition value to get the display value for\n */\n getDisplayValue(index, value) {\n var {\n model\n } = this.props;\n if (value === null) {\n return '(null)';\n }\n if (value === undefined || value === '') {\n return '';\n }\n var column = model.partitionColumns[index];\n if (TableUtils.isCharType(column.type) && value.toString().length > 0) {\n return String.fromCharCode(parseInt(value.toString(), 10));\n }\n return model.displayString(value, column.type, column.name);\n }\n\n /**\n * Update the options on the partition dropdown tables\n */\n updatePartitionOptions() {\n var _this3 = this;\n return _asyncToGenerator(function* () {\n var {\n model\n } = _this3.props;\n var {\n partitionConfig: prevConfig\n } = _this3.props;\n if (prevConfig == null) {\n return;\n }\n var {\n keysTable\n } = _this3.state;\n assertNotNull(keysTable);\n var partitionFilters = [...prevConfig.partitions].map((partition, i) => {\n var partitionColumn = keysTable.columns[i];\n return _this3.tableUtils.makeNullableEqFilter(partitionColumn, partition);\n });\n var partitionTables = yield Promise.all(model.partitionColumns.map( /*#__PURE__*/function () {\n var _ref = _asyncToGenerator(function* (_, i) {\n keysTable.applyFilter(partitionFilters.slice(0, i));\n return keysTable.selectDistinct(model.partitionColumns.slice(0, i + 1));\n });\n return function (_x, _x2) {\n return _ref.apply(this, arguments);\n };\n }()));\n _this3.setState({\n partitionTables\n });\n })();\n }\n getPartitionFilters(partitionTables) {\n var {\n model,\n partitionConfig\n } = this.props;\n assertNotNull(partitionConfig);\n var {\n partitions\n } = partitionConfig;\n log.debug('getPartitionFilters', partitionConfig);\n if (partitions.length !== partitionTables.length) {\n throw new Error(\"Invalid partition config set. Expected \".concat(partitionTables.length, \" partitions, but got \").concat(partitions.length));\n }\n\n // The filters are applied in order, so we need to build up the filters for each partition\n var partitionFilters = [];\n for (var i = 0; i < partitions.length; i += 1) {\n if (i === 0) {\n // There's no reason to ever filter the first table\n partitionFilters.push([]);\n } else {\n var previousFilter = partitionFilters[i - 1];\n var previousPartition = partitions[i - 1];\n var previousColumn = model.partitionColumns[i - 1];\n var partitionFilter = [...previousFilter, this.tableUtils.makeNullableEqFilter(previousColumn, previousPartition)];\n partitionFilters.push(partitionFilter);\n }\n }\n return partitionFilters;\n }\n render() {\n var {\n model,\n partitionConfig\n } = this.props;\n var {\n isLoading,\n partitionTables\n } = this.state;\n var partitionSelectors = model.partitionColumns.map((column, index) => /*#__PURE__*/_jsxs(\"div\", {\n className: \"column-selector\",\n children: [(partitionTables === null || partitionTables === void 0 ? void 0 : partitionTables[index]) && /*#__PURE__*/_jsx(Picker, {\n label: column.name,\n labelPosition: \"side\",\n table: partitionTables[index],\n direction: \"bottom\",\n shouldFlip: false,\n keyColumn: partitionTables[index].columns[index].name,\n selectedKey: (partitionConfig === null || partitionConfig === void 0 ? void 0 : partitionConfig.mode) === 'partition' ? partitionConfig.partitions[index] : null,\n placeholder: \"Select a key\",\n labelColumn: partitionTables[index].columns[index].name,\n onChange: this.getCachedChangeCallback(index),\n isDisabled: isLoading || partitionConfig == null\n }), model.partitionColumns.length - 1 === index || /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsChevronRight\n })]\n }, \"selector-\".concat(column.name)));\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"iris-grid-partition-selector\",\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"partition-button-group\",\n children: [/*#__PURE__*/_jsx(Button, {\n onClick: this.handlePartitionTableClick,\n kind: \"inline\",\n tooltip: model.isPartitionAwareSourceTable ? 'View keys as table' : 'View underlying partition table',\n icon: vsKey,\n active: (partitionConfig === null || partitionConfig === void 0 ? void 0 : partitionConfig.mode) === 'keys',\n disabled: isLoading || partitionConfig == null,\n children: \"Partitions\"\n }), /*#__PURE__*/_jsx(Button, {\n onClick: this.handleMergeClick,\n kind: \"inline\",\n tooltip: \"View all partitions as one merged table\",\n icon: /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsMerge,\n rotation: 90\n }),\n active: (partitionConfig === null || partitionConfig === void 0 ? void 0 : partitionConfig.mode) === 'merged',\n disabled: isLoading || partitionConfig == null,\n children: model.isPartitionAwareSourceTable ? 'Coalesce' : 'Merge'\n })]\n }), partitionSelectors]\n });\n }\n}\nexport default IrisGridPartitionSelector;\n//# sourceMappingURL=IrisGridPartitionSelector.js.map","function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport React, { Component } from 'react';\nimport deepEqual from 'fast-deep-equal';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { dhNewCircleLargeFilled, vsTrash } from '@deephaven/icons';\nimport { Button, Select } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport \"./SelectDistinctBuilder.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('SelectDistinctBuilder');\nclass SelectDistinctBuilder extends Component {\n constructor(props) {\n super(props);\n this.handleAddColumnClick = this.handleAddColumnClick.bind(this);\n this.handleDeleteColumn = this.handleDeleteColumn.bind(this);\n this.handleDropdownChanged = this.handleDropdownChanged.bind(this);\n var {\n model,\n selectDistinctColumns\n } = this.props;\n this.state = {\n inputs: selectDistinctColumns.length > 0 ? [...selectDistinctColumns] : [''],\n columns: model.originalColumns\n };\n }\n componentDidUpdate(prevProps, prevState) {\n var {\n inputs\n } = this.state;\n var {\n onChange\n } = this.props;\n if (prevState.inputs !== inputs) {\n var filteredInputs = inputs.filter(val => val !== '');\n if (!deepEqual(prevState.inputs.filter(val => val !== ''), filteredInputs)) {\n onChange(filteredInputs);\n }\n }\n }\n handleAddColumnClick() {\n this.setState(_ref => {\n var {\n inputs: prevInputs\n } = _ref;\n return {\n inputs: [...prevInputs, '']\n };\n });\n }\n handleDeleteColumn(index) {\n this.setState(_ref2 => {\n var {\n inputs\n } = _ref2;\n return {\n inputs: inputs.length === 1 && index === 0 ? [''] : inputs.filter((input, inputIndex) => index !== inputIndex)\n };\n });\n }\n handleDropdownChanged(index, value) {\n log.debug('handleDropdownChanged', index, value);\n this.setState(_ref3 => {\n var {\n inputs: prevInputs\n } = _ref3;\n var inputs = [...prevInputs];\n inputs[index] = value;\n return {\n inputs\n };\n });\n }\n renderInputs() {\n var {\n columns,\n inputs\n } = this.state;\n return inputs.map((value, index) => {\n var options = columns.filter(_ref4 => {\n var {\n name\n } = _ref4;\n return name === value || !inputs.includes(name);\n }).map(_ref5 => {\n var {\n name\n } = _ref5;\n return /*#__PURE__*/_jsx(\"option\", {\n value: name,\n children: name\n }, name);\n });\n return (\n /*#__PURE__*/\n // eslint-disable-next-line react/no-array-index-key\n _jsxs(\"div\", {\n className: \"form-inline px-3 pb-3\",\n children: [/*#__PURE__*/_jsxs(Select, {\n className: \"form-control custom-select col\",\n value: value,\n onChange: eventTargetValue => this.handleDropdownChanged(index, eventTargetValue),\n children: [/*#__PURE__*/_jsx(\"option\", {\n value: \"\",\n children: \"Select a column\"\n }), options]\n }), (inputs.length > 1 || value !== '') && /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: \"ml-1 px-2\",\n onClick: () => {\n this.handleDeleteColumn(index);\n },\n icon: /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsTrash,\n transform: \"grow-3\"\n }),\n tooltip: \"Delete column\"\n })]\n }, index)\n );\n });\n }\n render() {\n var {\n columns,\n inputs\n } = this.state;\n var disableAddButton = inputs.length >= columns.length;\n return /*#__PURE__*/_jsxs(\"div\", {\n role: \"presentation\",\n className: \"select-distinct-builder-container h-100\",\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"select-distinct-title\",\n children: \"Display Unique Values From\"\n }), this.renderInputs(), /*#__PURE__*/_jsx(\"hr\", {}), /*#__PURE__*/_jsx(\"div\", {\n className: \"pt-1 px-3\",\n children: /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: \"btn-add-column\",\n onClick: this.handleAddColumnClick,\n disabled: disableAddButton,\n icon: dhNewCircleLargeFilled,\n children: \"Add Additional Column\"\n })\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"select-distinct-builder-footer\",\n children: /*#__PURE__*/_jsx(\"div\", {\n className: \"select-distinct-builder-hint\",\n children: \"Display only unique values from the selected table columns. Note that this will reset any filters and display only the selected columns.\"\n })\n })]\n });\n }\n}\n_defineProperty(SelectDistinctBuilder, \"defaultProps\", {\n selectDistinctColumns: [],\n onChange: () => undefined\n});\nexport default SelectDistinctBuilder;\n//# sourceMappingURL=SelectDistinctBuilder.js.map","import React from 'react';\nimport { Menu } from '@deephaven/components';\nimport AdvancedSettingsType from \"./AdvancedSettingsType.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction AdvancedSettingsMenu(_ref) {\n var {\n items,\n onChange: _onChange = () => undefined\n } = _ref;\n return /*#__PURE__*/_jsx(Menu, {\n items: Array.from(items.entries()).map(_ref2 => {\n var [key, isOn] = _ref2;\n return {\n title: AdvancedSettingsMenu.getAdvancedSettingsTitleForKey(key),\n isOn,\n onChange: value => _onChange(key, value)\n };\n })\n });\n}\nAdvancedSettingsMenu.getAdvancedSettingsTitleForKey = key => {\n switch (key) {\n case AdvancedSettingsType.FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS:\n return 'Clear current table filters before applying new filters from a control';\n case AdvancedSettingsType.LINK_CHANGE_CLEARS_ALL_FILTERS:\n return 'Clear current table filters before applying new filters from an incoming link filter';\n }\n};\nexport default AdvancedSettingsMenu;\n//# sourceMappingURL=AdvancedSettingsMenu.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport React, { useCallback } from 'react';\nimport { DragDropContext, Draggable, Droppable } from 'react-beautiful-dnd';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { dhNewCircleLargeFilled, vsGripper, vsTrash } from '@deephaven/icons';\nimport { Button, DragUtils, Tooltip } from '@deephaven/components';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport \"./ConditionalFormattingMenu.css\";\nimport { FormatterType, getBackgroundForStyleConfig, getColorForStyleConfig, getShortLabelForConditionType, NumberCondition, StringCondition, DateCondition } from \"./ConditionalFormattingUtils.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('ConditionalFormattingMenu');\nvar DEFAULT_CALLBACK = () => undefined;\nfunction getRuleValue(config) {\n var {\n column: {\n type\n }\n } = config;\n if (TableUtils.isNumberType(type)) {\n return config.condition === NumberCondition.IS_NULL || config.condition === NumberCondition.IS_NOT_NULL ? '' : \"\".concat(config.value);\n }\n if (TableUtils.isCharType(type)) {\n return config.condition === DateCondition.IS_NULL || config.condition === DateCondition.IS_NOT_NULL ? '' : \"\".concat(config.value);\n }\n if (TableUtils.isStringType(type)) {\n return config.condition === StringCondition.IS_NULL || config.condition === StringCondition.IS_NOT_NULL ? '' : \"\\\"\".concat(config.value, \"\\\"\");\n }\n if (TableUtils.isDateType(type)) {\n return config.condition === DateCondition.IS_NULL || config.condition === DateCondition.IS_NOT_NULL ? '' : \"\".concat(config.value);\n }\n if (TableUtils.isBooleanType(type)) {\n return '';\n }\n throw new Error(\"Invalid column type \".concat(type, \" in getRuleValue\"));\n}\nfunction getRuleTitle(config) {\n if (TableUtils.isNumberType(config.column.type) && config.condition === NumberCondition.IS_BETWEEN) {\n return \"\".concat(config.start, \" < \").concat(config.column.name, \" < \").concat(config.end);\n }\n return \"\".concat(config.column.name, \" \").concat(getShortLabelForConditionType(config.column.type, config.condition), \" \\n \").concat(getRuleValue(config));\n}\nfunction ConditionalFormattingMenu(props) {\n var {\n rules = [],\n onChange = DEFAULT_CALLBACK,\n onCreate = DEFAULT_CALLBACK,\n onSelect = DEFAULT_CALLBACK\n } = props;\n var handleRuleClick = useCallback((e, rule, index) => {\n e.stopPropagation();\n log.debug('Rule clicked', rule, index);\n onSelect(index);\n }, [onSelect]);\n var handleDeleteClick = useCallback((e, rule, index) => {\n e.stopPropagation();\n log.debug('Delete button clicked', rule, index);\n var updatedRules = [...rules];\n updatedRules.splice(index, 1);\n onChange(updatedRules);\n }, [onChange, rules]);\n var handleDragHandlerClick = useCallback(e => {\n e.stopPropagation();\n }, []);\n var handleDragEnd = useCallback(result => {\n DragUtils.stopDragging();\n\n // if dropped outside the list\n if (result.destination == null) {\n return;\n }\n var sourceIndex = result.source.index;\n var destinationIndex = result.destination.index;\n var updatedRules = [...rules];\n var sourceInput = rules[sourceIndex];\n updatedRules.splice(sourceIndex, 1);\n updatedRules.splice(destinationIndex, 0, sourceInput);\n onChange(updatedRules);\n }, [onChange, rules]);\n\n // Display list of rules\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"conditional-formatting-rules\",\n children: [/*#__PURE__*/_jsx(DragDropContext, {\n onDragStart: DragUtils.startDragging,\n onDragEnd: handleDragEnd,\n children: /*#__PURE__*/_jsx(Droppable, {\n droppableId: \"droppable-custom-columns\",\n children: (provided, snapshot) => /*#__PURE__*/_jsxs(\"div\", _objectSpread(_objectSpread({\n ref: provided.innerRef\n // eslint-disable-next-line react/jsx-props-no-spreading\n }, provided.droppableProps), {}, {\n className: classNames('droppable-container', {\n dragging: snapshot.draggingFromThisWith\n }),\n children: [rules.length === 0 && /*#__PURE__*/_jsx(\"div\", {\n className: \"text-muted pl-2\",\n children: \"No formats defined\"\n }), rules.map((rule, index) => /*#__PURE__*/_jsx(Draggable\n // eslint-disable-next-line react/no-array-index-key\n , {\n draggableId: \"\".concat(index, \"-\").concat(rule.type),\n index: index,\n disableInteractiveElementBlocking: true,\n children:\n // eslint-disable-next-line @typescript-eslint/no-shadow\n (provided, snapshot) => /*#__PURE__*/_jsx(\"div\", _objectSpread(_objectSpread({\n role: \"menuitem\",\n tabIndex: 0,\n onClick: e => handleRuleClick(e, rule, index),\n className: classNames('draggable-container', {\n dragging: snapshot.isDragging\n }),\n ref: provided.innerRef\n // eslint-disable-next-line react/jsx-props-no-spreading\n }, provided.draggableProps), {}, {\n children: /*#__PURE__*/_jsx(\"div\", {\n className: \"conditional-formatting-list-item\",\n children: /*#__PURE__*/_jsxs(\"div\", {\n className: \"formatting-item\",\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"rule-icon\",\n children: /*#__PURE__*/_jsx(\"span\", {\n className: \"rule-icon-bg\",\n style: {\n backgroundColor: getBackgroundForStyleConfig(rule.config.style),\n color: getColorForStyleConfig(rule.config.style)\n },\n children: rule.type === FormatterType.ROWS ? 'row' : 'col'\n })\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"rule-title\",\n children: getRuleTitle(rule.config)\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: \"ml-1 px-2\",\n onClick: e => handleDeleteClick(e, rule, index),\n icon: vsTrash,\n tooltip: \"Delete rule\"\n }), /*#__PURE__*/_jsxs(\"button\", _objectSpread(_objectSpread({\n type: \"button\",\n className: \"btn btn-link btn-link-icon px-2 btn-drag-handle\",\n onClick: handleDragHandlerClick\n // eslint-disable-next-line react/jsx-props-no-spreading\n }, provided.dragHandleProps), {}, {\n children: [/*#__PURE__*/_jsx(Tooltip, {\n children: \"Drag to re-order\"\n }), /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsGripper\n })]\n }))]\n })\n })\n }))\n }, \"\".concat(index, \"-\").concat(rule.type))), provided.placeholder]\n }))\n })\n }), /*#__PURE__*/_jsx(\"hr\", {}), /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n onClick: onCreate,\n icon: dhNewCircleLargeFilled,\n children: \"Add New Rule\"\n })]\n });\n}\nexport default ConditionalFormattingMenu;\n//# sourceMappingURL=ConditionalFormattingMenu.js.map","import { useCallback, useEffect, useMemo, useState } from 'react';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport { Select } from '@deephaven/components';\nimport { StringCondition, DateCondition, getLabelForNumberCondition, getLabelForDateCondition, getLabelForStringCondition, NumberCondition, getDefaultConditionForType, getLabelForBooleanCondition, BooleanCondition, CharCondition, getLabelForCharCondition, isDateConditionValid, getDefaultValueForType } from \"./ConditionalFormattingUtils.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('ConditionEditor');\nvar DEFAULT_CALLBACK = () => undefined;\nvar numberConditionOptions = [NumberCondition.IS_EQUAL, NumberCondition.IS_NOT_EQUAL, NumberCondition.IS_BETWEEN, NumberCondition.GREATER_THAN, NumberCondition.GREATER_THAN_OR_EQUAL, NumberCondition.LESS_THAN, NumberCondition.LESS_THAN_OR_EQUAL, NumberCondition.IS_NULL, NumberCondition.IS_NOT_NULL].map(option => /*#__PURE__*/_jsx(\"option\", {\n value: option,\n children: getLabelForNumberCondition(option)\n}, option));\nvar stringConditions = [StringCondition.IS_EXACTLY, StringCondition.IS_NOT_EXACTLY, StringCondition.CONTAINS, StringCondition.DOES_NOT_CONTAIN, StringCondition.STARTS_WITH, StringCondition.ENDS_WITH, StringCondition.IS_NULL, StringCondition.IS_NOT_NULL].map(option => /*#__PURE__*/_jsx(\"option\", {\n value: option,\n children: getLabelForStringCondition(option)\n}, option));\nvar dateConditions = [DateCondition.IS_EXACTLY, DateCondition.IS_NOT_EXACTLY, DateCondition.IS_BEFORE, DateCondition.IS_BEFORE_OR_EQUAL, DateCondition.IS_AFTER, DateCondition.IS_AFTER_OR_EQUAL, DateCondition.IS_NULL, DateCondition.IS_NOT_NULL].map(option => /*#__PURE__*/_jsx(\"option\", {\n value: option,\n children: getLabelForDateCondition(option)\n}, option));\nvar booleanConditions = [BooleanCondition.IS_TRUE, BooleanCondition.IS_FALSE, BooleanCondition.IS_NULL, BooleanCondition.IS_NOT_NULL].map(option => /*#__PURE__*/_jsx(\"option\", {\n value: option,\n children: getLabelForBooleanCondition(option)\n}, option));\nvar charConditions = [CharCondition.IS_EQUAL, CharCondition.IS_NOT_EQUAL, CharCondition.IS_NULL, CharCondition.IS_NOT_NULL].map(option => /*#__PURE__*/_jsx(\"option\", {\n value: option,\n children: getLabelForCharCondition(option)\n}, option));\nfunction isNumberConditionValid(condition, value, startValue, endValue) {\n if (condition === NumberCondition.IS_NULL || condition === NumberCondition.IS_NOT_NULL) {\n return true;\n }\n if (condition === NumberCondition.IS_BETWEEN && startValue != null && startValue !== '' && !Number.isNaN(Number.parseFloat(startValue)) && endValue != null && endValue !== '' && !Number.isNaN(Number.parseFloat(endValue))) {\n return true;\n }\n if (condition !== NumberCondition.IS_BETWEEN && value !== undefined && value !== '' && !Number.isNaN(Number.parseFloat(value))) {\n return true;\n }\n return false;\n}\nfunction getNumberInputs(selectedCondition, handleValueChange, handleStartValueChange, handleEndValueChange, conditionValue, startValue, endValue) {\n switch (selectedCondition) {\n case NumberCondition.IS_EQUAL:\n case NumberCondition.IS_NOT_EQUAL:\n case NumberCondition.GREATER_THAN:\n case NumberCondition.GREATER_THAN_OR_EQUAL:\n case NumberCondition.LESS_THAN:\n case NumberCondition.LESS_THAN_OR_EQUAL:\n return /*#__PURE__*/_jsx(\"input\", {\n type: \"number\",\n className: \"form-control\",\n placeholder: \"Enter value\",\n value: conditionValue !== null && conditionValue !== void 0 ? conditionValue : '',\n onChange: handleValueChange\n });\n case NumberCondition.IS_BETWEEN:\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"d-flex flex-row\",\n children: [/*#__PURE__*/_jsx(\"input\", {\n type: \"number\",\n className: \"form-control d-flex mr-2\",\n placeholder: \"Start value\",\n value: startValue !== null && startValue !== void 0 ? startValue : '',\n onChange: handleStartValueChange\n }), /*#__PURE__*/_jsx(\"input\", {\n type: \"number\",\n className: \"form-control d-flex\",\n placeholder: \"End value\",\n value: endValue !== null && endValue !== void 0 ? endValue : '',\n onChange: handleEndValueChange\n })]\n });\n case NumberCondition.IS_NULL:\n case NumberCondition.IS_NOT_NULL:\n return null;\n }\n}\nfunction getStringInputs(selectedCondition, handleValueChange, conditionValue) {\n switch (selectedCondition) {\n case StringCondition.IS_NULL:\n case StringCondition.IS_NOT_NULL:\n return null;\n default:\n return /*#__PURE__*/_jsx(\"input\", {\n type: \"text\",\n className: \"form-control\",\n placeholder: \"Enter value\",\n value: conditionValue !== null && conditionValue !== void 0 ? conditionValue : '',\n onChange: handleValueChange\n });\n }\n}\nfunction getDateInputs(selectedCondition, handleValueChange, conditionValue) {\n switch (selectedCondition) {\n case DateCondition.IS_NULL:\n case DateCondition.IS_NOT_NULL:\n return null;\n default:\n return /*#__PURE__*/_jsx(\"input\", {\n type: \"text\",\n className: \"form-control\",\n placeholder: \"Enter value\",\n value: conditionValue !== null && conditionValue !== void 0 ? conditionValue : '',\n onChange: handleValueChange\n });\n }\n}\nfunction getBooleanInputs() {\n return null;\n}\nfunction getCharInputs(selectedCondition, handleValueChange, conditionValue) {\n switch (selectedCondition) {\n case CharCondition.IS_NULL:\n case CharCondition.IS_NOT_NULL:\n return null;\n default:\n return /*#__PURE__*/_jsx(\"input\", {\n type: \"text\",\n className: \"form-control\",\n maxLength: 1,\n placeholder: \"Enter value\",\n value: conditionValue !== null && conditionValue !== void 0 ? conditionValue : '',\n onChange: handleValueChange\n });\n }\n}\nfunction ConditionEditor(props) {\n var {\n column,\n config,\n dh,\n onChange = DEFAULT_CALLBACK\n } = props;\n var selectedColumnType = column.type;\n var [prevColumnType, setPrevColumnType] = useState(selectedColumnType);\n var [selectedCondition, setCondition] = useState(config.condition);\n var [conditionValue, setValue] = useState(config.value);\n var [startValue, setStartValue] = useState(config.start);\n var [endValue, setEndValue] = useState(config.end);\n if (selectedColumnType !== prevColumnType) {\n // Column type changed, reset condition and value fields\n setCondition(getDefaultConditionForType(selectedColumnType));\n setValue(getDefaultValueForType(selectedColumnType));\n setStartValue(undefined);\n setEndValue(undefined);\n setPrevColumnType(selectedColumnType);\n }\n var conditions = useMemo(() => {\n if (selectedColumnType === undefined) {\n return [];\n }\n if (TableUtils.isNumberType(selectedColumnType)) {\n return numberConditionOptions;\n }\n if (TableUtils.isCharType(selectedColumnType)) {\n return charConditions;\n }\n if (TableUtils.isStringType(selectedColumnType)) {\n return stringConditions;\n }\n if (TableUtils.isDateType(selectedColumnType)) {\n return dateConditions;\n }\n if (TableUtils.isBooleanType(selectedColumnType)) {\n return booleanConditions;\n }\n }, [selectedColumnType]);\n var handleConditionChange = useCallback(value => {\n log.debug('handleConditionChange', value);\n setCondition(value);\n }, []);\n var handleValueChange = useCallback(e => {\n var {\n value\n } = e.target;\n log.debug('handleValueChange', value);\n setValue(value);\n }, []);\n var handleStartValueChange = useCallback(e => {\n var {\n value\n } = e.target;\n log.debug('handleStartValueChange', value);\n setStartValue(value);\n }, []);\n var handleEndValueChange = useCallback(e => {\n var {\n value\n } = e.target;\n log.debug('handleEndValueChange', value);\n setEndValue(value);\n }, []);\n useEffect(function changeCondition() {\n var isValid = true;\n if (selectedCondition === undefined) {\n log.debug('Unable to create formatting rule. Condition is not selected.');\n isValid = false;\n } else if (TableUtils.isNumberType(column.type) && !isNumberConditionValid(selectedCondition, conditionValue, startValue, endValue)) {\n log.debug('Unable to create formatting rule. Invalid value', conditionValue);\n isValid = false;\n } else if (TableUtils.isDateType(column.type) && !isDateConditionValid(dh, selectedCondition, conditionValue)) {\n log.debug('Unable to create formatting rule. Invalid date condition', conditionValue);\n isValid = false;\n }\n onChange({\n condition: selectedCondition,\n value: conditionValue,\n start: startValue,\n end: endValue\n }, isValid);\n }, [onChange, column.type, dh, selectedCondition, conditionValue, startValue, endValue]);\n var conditionInputs = useMemo(() => {\n if (selectedColumnType === undefined) {\n // Column not selected\n return null;\n }\n if (TableUtils.isNumberType(selectedColumnType)) {\n return getNumberInputs(selectedCondition, handleValueChange, handleStartValueChange, handleEndValueChange, conditionValue, startValue, endValue);\n }\n if (TableUtils.isCharType(selectedColumnType)) {\n return getCharInputs(selectedCondition, handleValueChange, conditionValue);\n }\n if (TableUtils.isStringType(selectedColumnType)) {\n return getStringInputs(selectedCondition, handleValueChange, conditionValue);\n }\n if (TableUtils.isDateType(selectedColumnType)) {\n return getDateInputs(selectedCondition, handleValueChange, conditionValue);\n }\n if (TableUtils.isBooleanType(selectedColumnType)) {\n return getBooleanInputs();\n }\n }, [selectedColumnType, selectedCondition, conditionValue, startValue, endValue, handleValueChange, handleStartValueChange, handleEndValueChange]);\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"condition-editor mb-2\",\n children: [/*#__PURE__*/_jsx(Select, {\n value: selectedCondition,\n \"data-testid\": \"condition-select\",\n className: \"custom-select mb-2\",\n onChange: handleConditionChange,\n children: conditions\n }), conditionInputs]\n });\n}\nexport default ConditionEditor;\n//# sourceMappingURL=ConditionEditor.js.map","import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport Log from '@deephaven/log';\nimport { ColorUtils } from '@deephaven/utils';\nimport { vsCheck } from '@deephaven/icons';\nimport { Button, DropdownMenu } from '@deephaven/components';\nimport { FormatStyleType, getLabelForStyleType, getBackgroundForStyleConfig, getColorForStyleConfig } from \"./ConditionalFormattingUtils.js\";\nimport \"./StyleEditor.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('StyleEditor');\nvar DEFAULT_BACKGROUND = '#fcfcfa';\nvar DEFAULT_COLOR_LIGHT = '#f0f0ee';\nvar DEFAULT_COLOR_DARK = '#1a171a';\nvar DEFAULT_DROPDOWN_WIDTH = 200;\nvar DEFAULT_CALLBACK = () => undefined;\nfunction StyleEditor(props) {\n var _config$customConfig$, _config$customConfig;\n var {\n config,\n onChange = DEFAULT_CALLBACK\n } = props;\n var [styleType, setStyleType] = useState(config.type);\n var [background, setBackground] = useState((_config$customConfig$ = (_config$customConfig = config.customConfig) === null || _config$customConfig === void 0 ? void 0 : _config$customConfig.background) !== null && _config$customConfig$ !== void 0 ? _config$customConfig$ : DEFAULT_BACKGROUND);\n var [isShown, setShown] = useState(false);\n var [dropdownWidth, setDropdownWidth] = useState(DEFAULT_DROPDOWN_WIDTH);\n var csContainer = useRef(null);\n var handleBackgroundChange = useCallback(e => {\n var {\n value\n } = e.target;\n log.debug('handleBackgroundChange', value);\n setBackground(value);\n }, []);\n var handleMenuClosed = useCallback(() => {\n if (isShown) {\n setShown(false);\n }\n }, [isShown]);\n var handleToggleClick = useCallback(() => {\n if (!isShown) {\n updateDropdownWidth();\n }\n setShown(!isShown);\n }, [isShown]);\n var styleOptions = useMemo(() => [FormatStyleType.NO_FORMATTING, FormatStyleType.POSITIVE, FormatStyleType.NEGATIVE, FormatStyleType.WARN, FormatStyleType.NEUTRAL, FormatStyleType.ACCENT_1, FormatStyleType.ACCENT_2, FormatStyleType.CUSTOM], []);\n function updateDropdownWidth() {\n if (csContainer.current) {\n setDropdownWidth(csContainer.current.getBoundingClientRect().width);\n }\n }\n useEffect(function updateTheme() {\n onChange({\n type: styleType,\n customConfig: {\n color: ColorUtils.isDark(background) ? DEFAULT_COLOR_LIGHT : DEFAULT_COLOR_DARK,\n background\n }\n });\n }, [onChange, styleType, background]);\n var renderOptions = useCallback(() => {\n var matchFound = false;\n var optionArray = [];\n var _loop = function _loop() {\n var option = styleOptions[index];\n var key = \"option-\".concat(index, \"-\").concat(option);\n matchFound = matchFound || option === styleType;\n optionArray.push( /*#__PURE__*/_jsxs(Button, {\n kind: \"inline\",\n className: \"style-option-btn\",\n onClick: () => {\n setStyleType(option);\n setShown(false);\n },\n style: {\n color: getColorForStyleConfig({\n type: option\n }),\n background: getBackgroundForStyleConfig({\n type: option\n })\n },\n children: [option === styleType && /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsCheck,\n className: \"mr-2\"\n }), option !== styleType && /*#__PURE__*/_jsx(\"span\", {\n className: \"mr-4\"\n }), getLabelForStyleType(option)]\n }, key));\n };\n for (var index = 0; index < styleOptions.length; index += 1) {\n _loop();\n }\n return optionArray;\n }, [styleOptions, styleType]);\n var renderMenuElement = useCallback(() => /*#__PURE__*/_jsx(\"div\", {\n className: \"style-menu-container\",\n role: \"presentation\",\n style: {\n width: dropdownWidth\n },\n children: /*#__PURE__*/_jsx(\"div\", {\n className: \"style-options\",\n children: renderOptions()\n })\n }), [dropdownWidth, renderOptions]);\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"style-editor\",\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"mb-2\",\n ref: csContainer,\n children: [/*#__PURE__*/_jsx(\"label\", {\n className: \"mb-0\",\n children: \"Style\"\n }), /*#__PURE__*/_jsxs(Button, {\n kind: \"inline\",\n className: \"cs-dropdown custom-select\",\n style: {\n color: getColorForStyleConfig({\n type: styleType\n }),\n background: getBackgroundForStyleConfig({\n type: styleType\n })\n },\n onClick: handleToggleClick,\n children: [getLabelForStyleType(styleType), /*#__PURE__*/_jsx(DropdownMenu, {\n isShown: isShown,\n actions: {\n menuElement: renderMenuElement()\n },\n popperOptions: {\n placement: 'bottom-start'\n },\n popperClassName: \"style-dropdown-menu\",\n onMenuClosed: handleMenuClosed,\n menuStyle: {\n maxWidth: '100rem'\n }\n })]\n })]\n }), styleType === FormatStyleType.CUSTOM && /*#__PURE__*/_jsxs(\"div\", {\n className: \"mb-2\",\n children: [/*#__PURE__*/_jsx(\"label\", {\n className: \"mb-0\",\n children: \"Background\"\n }), /*#__PURE__*/_jsx(\"input\", {\n type: \"color\",\n value: background,\n className: \"custom-select color-select\",\n onChange: handleBackgroundChange\n })]\n })]\n });\n}\nexport default StyleEditor;\n//# sourceMappingURL=StyleEditor.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport Log from '@deephaven/log';\nimport { ComboBox } from '@deephaven/components';\nimport { getDefaultConditionConfigForType, getConditionConfig, getDefaultStyleConfig, FormatStyleType } from \"./ConditionalFormattingUtils.js\";\nimport ConditionEditor from \"./ConditionEditor.js\";\nimport StyleEditor from \"./StyleEditor.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nvar log = Log.module('ColumnFormatEditor');\nvar DEFAULT_CALLBACK = () => undefined;\nfunction makeDefaultConfig(columns) {\n var {\n type,\n name\n } = columns[0];\n var column = {\n type,\n name\n };\n var config = _objectSpread({\n column,\n style: getDefaultStyleConfig()\n }, getDefaultConditionConfigForType(type));\n return config;\n}\nfunction ColumnFormatEditor(props) {\n var _columns$find;\n var {\n columns,\n config = makeDefaultConfig(columns),\n dh,\n onChange = DEFAULT_CALLBACK\n } = props;\n var [selectedColumn, setColumn] = useState((_columns$find = columns.find(c => c.name === config.column.name && c.type === config.column.type)) !== null && _columns$find !== void 0 ? _columns$find : columns[0]);\n var [conditionConfig, setConditionConfig] = useState(getConditionConfig(config));\n var [conditionValid, setConditionValid] = useState(false);\n var [selectedStyle, setStyle] = useState(config.style);\n var handleColumnChange = useCallback(value => {\n var newColumn = columns.find(_ref => {\n var {\n name\n } = _ref;\n return name === value;\n });\n if (newColumn !== undefined) {\n setColumn(newColumn);\n if (selectedColumn.type !== newColumn.type) {\n setConditionConfig(getDefaultConditionConfigForType(newColumn.type));\n setConditionValid(false);\n }\n } else {\n log.error(\"Column \".concat(value, \" not found.\"));\n }\n }, [columns, selectedColumn]);\n var handleConditionChange = useCallback((updatedConditionConfig, isValid) => {\n log.debug('handleConditionChange', updatedConditionConfig, isValid);\n setConditionConfig(updatedConditionConfig);\n setConditionValid(isValid);\n }, []);\n var handleStyleChange = useCallback(updatedStyleConfig => {\n log.debug('handleStyleChange', updatedStyleConfig);\n setStyle(updatedStyleConfig);\n }, []);\n useEffect(function updateColumnFormat() {\n var isValid = conditionValid;\n if (selectedColumn === undefined) {\n log.debug('Column is not selected, invalidating update.');\n isValid = false;\n }\n if (selectedStyle === undefined || selectedStyle.type === FormatStyleType.NO_FORMATTING) {\n log.debug('Style is not selected, invalidating update.');\n isValid = false;\n }\n var {\n type,\n name\n } = selectedColumn;\n var column = {\n type,\n name\n };\n onChange(_objectSpread({\n column,\n style: selectedStyle\n }, conditionConfig), isValid);\n }, [onChange, selectedColumn, selectedStyle, conditionConfig, conditionValid]);\n var columnNames = useMemo(() => columns.map(_ref2 => {\n var {\n name\n } = _ref2;\n return name;\n }), [columns]);\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"conditional-rule-editor form\",\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"mb-2\",\n children: [/*#__PURE__*/_jsx(\"label\", {\n className: \"mb-0\",\n children: \"Format Cell If\"\n }), /*#__PURE__*/_jsx(ComboBox, {\n \"aria-label\": \"Select column to format\",\n defaultSelectedKey: selectedColumn === null || selectedColumn === void 0 ? void 0 : selectedColumn.name,\n onChange: handleColumnChange,\n children: columnNames\n })]\n }), selectedColumn !== undefined && /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(ConditionEditor, {\n dh: dh,\n column: selectedColumn,\n config: conditionConfig,\n onChange: handleConditionChange\n }), /*#__PURE__*/_jsx(StyleEditor, {\n config: selectedStyle,\n onChange: handleStyleChange\n })]\n })]\n });\n}\nexport default ColumnFormatEditor;\n//# sourceMappingURL=ColumnFormatEditor.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport Log from '@deephaven/log';\nimport { ComboBox } from '@deephaven/components';\nimport { getDefaultConditionConfigForType, getConditionConfig, getDefaultStyleConfig } from \"./ConditionalFormattingUtils.js\";\nimport ConditionEditor from \"./ConditionEditor.js\";\nimport StyleEditor from \"./StyleEditor.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nvar log = Log.module('RowFormatEditor');\nvar DEFAULT_CALLBACK = () => undefined;\nfunction makeDefaultConfig(columns) {\n var {\n type,\n name\n } = columns[0];\n var column = {\n type,\n name\n };\n var config = _objectSpread({\n column,\n style: getDefaultStyleConfig()\n }, getDefaultConditionConfigForType(type));\n return config;\n}\nfunction RowFormatEditor(props) {\n var _columns$find;\n var {\n columns,\n config = makeDefaultConfig(columns),\n dh,\n onChange = DEFAULT_CALLBACK\n } = props;\n var [selectedColumn, setColumn] = useState((_columns$find = columns.find(c => c.name === config.column.name && c.type === config.column.type)) !== null && _columns$find !== void 0 ? _columns$find : columns[0]);\n var [conditionConfig, setConditionConfig] = useState(getConditionConfig(config));\n var [conditionValid, setConditionValid] = useState(false);\n var [selectedStyle, setStyle] = useState(config.style);\n var handleColumnChange = useCallback(value => {\n var newColumn = columns.find(_ref => {\n var {\n name\n } = _ref;\n return name === value;\n });\n if (newColumn !== undefined) {\n setColumn(newColumn);\n if (selectedColumn.type !== newColumn.type) {\n setConditionConfig(getDefaultConditionConfigForType(newColumn.type));\n setConditionValid(false);\n }\n } else {\n log.error(\"Column \".concat(value, \" not found.\"));\n }\n }, [columns, selectedColumn]);\n var handleConditionChange = useCallback((updatedConditionConfig, isValid) => {\n log.debug('handleConditionChange', updatedConditionConfig, isValid);\n setConditionConfig(updatedConditionConfig);\n setConditionValid(isValid);\n }, []);\n var handleStyleChange = useCallback(updatedStyleConfig => {\n log.debug('handleStyleChange', updatedStyleConfig);\n setStyle(updatedStyleConfig);\n }, []);\n useEffect(function updateRowFormat() {\n if (selectedColumn === undefined) {\n log.debug('Column is not selected, skip update.');\n return;\n }\n if (selectedStyle === undefined) {\n log.debug('Style is not selected, skip update.');\n return;\n }\n var {\n type,\n name\n } = selectedColumn;\n var column = {\n type,\n name\n };\n onChange(_objectSpread({\n column,\n style: selectedStyle\n }, conditionConfig), conditionValid);\n }, [onChange, selectedColumn, selectedStyle, conditionConfig, conditionValid]);\n var columnNames = useMemo(() => columns.map(_ref2 => {\n var {\n name\n } = _ref2;\n return name;\n }), [columns]);\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"conditional-rule-editor form\",\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"mb-2\",\n children: [/*#__PURE__*/_jsx(\"label\", {\n className: \"mb-0\",\n children: \"Format Row If\"\n }), /*#__PURE__*/_jsx(ComboBox, {\n \"aria-label\": \"Select column to format row by\",\n defaultSelectedKey: selectedColumn === null || selectedColumn === void 0 ? void 0 : selectedColumn.name,\n onChange: handleColumnChange,\n children: columnNames\n })]\n }), selectedColumn !== undefined && /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(ConditionEditor, {\n column: selectedColumn,\n config: conditionConfig,\n dh: dh,\n onChange: handleConditionChange\n }), /*#__PURE__*/_jsx(StyleEditor, {\n config: selectedStyle,\n onChange: handleStyleChange\n })]\n })]\n });\n}\nexport default RowFormatEditor;\n//# sourceMappingURL=RowFormatEditor.js.map","import React, { useCallback, useState } from 'react';\nimport classNames from 'classnames';\nimport { Button } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport { FormatColumnWhereIcon, FormatRowWhereIcon } from \"../icons/index.js\";\nimport ColumnFormatEditor from \"./ColumnFormatEditor.js\";\nimport RowFormatEditor from \"./RowFormatEditor.js\";\nimport { FormatterType, isSupportedColumn } from \"./ConditionalFormattingUtils.js\";\nimport \"./ConditionalFormatEditor.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('ConditionalFormatEditor');\nvar DEFAULT_CALLBACK = () => undefined;\nfunction getFormatterTypeIcon(option) {\n switch (option) {\n case FormatterType.CONDITIONAL:\n return /*#__PURE__*/_jsx(FormatColumnWhereIcon, {});\n case FormatterType.ROWS:\n return /*#__PURE__*/_jsx(FormatRowWhereIcon, {});\n }\n}\nfunction getFormatterTypeLabel(option) {\n switch (option) {\n case FormatterType.CONDITIONAL:\n return 'Conditional';\n case FormatterType.ROWS:\n return 'Rows';\n }\n}\nvar formatterTypes = [FormatterType.CONDITIONAL, FormatterType.ROWS];\nfunction ConditionalFormatEditor(props) {\n var _defaultRule$type;\n var {\n columns: originalColumns,\n dh,\n onSave = DEFAULT_CALLBACK,\n onUpdate = DEFAULT_CALLBACK,\n onCancel = DEFAULT_CALLBACK,\n rule: defaultRule\n } = props;\n var columns = originalColumns.filter(isSupportedColumn);\n var [selectedFormatter, setFormatter] = useState((_defaultRule$type = defaultRule === null || defaultRule === void 0 ? void 0 : defaultRule.type) !== null && _defaultRule$type !== void 0 ? _defaultRule$type : formatterTypes[0]);\n var [rule, setRule] = useState(defaultRule);\n var [isValid, setIsValid] = useState(false);\n var handleCancel = useCallback(() => {\n onCancel();\n }, [onCancel]);\n var handleSave = useCallback(() => {\n if (rule === undefined) {\n log.error('Rule is not defined.');\n return;\n }\n onSave(rule);\n }, [onSave, rule]);\n var handleFormatterChange = useCallback(value => {\n log.debug('handleFormatterChange', value);\n setFormatter(value);\n }, []);\n var handleRuleChange = useCallback((ruleConfig, isRuleValid) => {\n log.debug('handleRuleChange', ruleConfig, isRuleValid, selectedFormatter);\n var updatedRule = {\n type: selectedFormatter,\n config: ruleConfig\n };\n setRule(updatedRule);\n setIsValid(isRuleValid);\n onUpdate(isRuleValid ? updatedRule : undefined);\n }, [onUpdate, selectedFormatter]);\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"conditional-format-editor form\",\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"mb-2\",\n children: [/*#__PURE__*/_jsx(\"label\", {\n className: \"mb-0\",\n htmlFor: \"formatter-select\",\n children: \"Select Formatter\"\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"formatter-list\",\n children: formatterTypes.map((type, index) => /*#__PURE__*/_jsx(\"div\", {\n className: \"formatter-type\",\n children: /*#__PURE__*/_jsxs(\"button\", {\n type: \"button\",\n className: classNames('btn', 'btn-icon', 'btn-formatter-type', {\n active: type === selectedFormatter\n }),\n \"data-index\": index,\n onClick: () => handleFormatterChange(type),\n children: [getFormatterTypeIcon(type), getFormatterTypeLabel(type)]\n })\n }, type))\n })]\n }), selectedFormatter === FormatterType.CONDITIONAL && /*#__PURE__*/_jsx(ColumnFormatEditor, {\n columns: columns,\n dh: dh,\n config: rule === null || rule === void 0 ? void 0 : rule.config,\n onChange: handleRuleChange\n }), selectedFormatter === FormatterType.ROWS && /*#__PURE__*/_jsx(RowFormatEditor, {\n columns: columns,\n config: rule === null || rule === void 0 ? void 0 : rule.config,\n dh: dh,\n onChange: handleRuleChange\n }), /*#__PURE__*/_jsx(\"hr\", {}), /*#__PURE__*/_jsxs(\"div\", {\n className: \"d-flex justify-content-end my-3\",\n children: [/*#__PURE__*/_jsx(Button, {\n kind: \"secondary\",\n onClick: handleCancel,\n className: \"mr-2\",\n children: \"Cancel\"\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"primary\",\n onClick: handleSave,\n disabled: rule === undefined || !isValid,\n children: \"Done\"\n })]\n })]\n });\n}\nexport default ConditionalFormatEditor;\n//# sourceMappingURL=ConditionalFormatEditor.js.map","import React, { useEffect, useRef, useState } from 'react';\nimport { Editor } from '@deephaven/console';\nimport { Button, CopyButton, Modal, ModalBody, ModalHeader } from '@deephaven/components';\nimport { vsJson, vsListOrdered } from '@deephaven/icons';\nimport \"./IrisGridCellOverflowModal.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nexport default function IrisGridCellOverflowModal(_ref) {\n var _editorRef$current$ge, _editorRef$current2;\n var {\n text,\n isOpen,\n onClose\n } = _ref;\n var [isOpened, setIsOpened] = useState(false);\n var [height, setHeight] = useState(0);\n var [showLineNumbers, setShowLineNumbers] = useState(false);\n var [isFormatted, setIsFormatted] = useState(false);\n var [canFormat, setCanFormat] = useState(false);\n var editorRef = useRef();\n\n // Update format button on open\n useEffect(function enableFormatButtonWhenOpen() {\n if (!isOpen) {\n return;\n }\n try {\n JSON.parse(text);\n setCanFormat(true);\n } catch (_unused) {\n setCanFormat(false);\n }\n setIsFormatted(false);\n }, [isOpen, text]);\n\n // Re-layout editor on height change\n useEffect(function updateLayoutOnHeightChange() {\n if (editorRef.current) {\n editorRef.current.layout();\n }\n }, [height]);\n\n // Update editor options on line number toggle\n useEffect(function toggleShowLineNumber() {\n if (editorRef.current) {\n editorRef.current.updateOptions({\n lineNumbers: showLineNumbers ? 'on' : 'off'\n });\n }\n }, [showLineNumbers]);\n function toggleLineNumbers() {\n setShowLineNumbers(!showLineNumbers);\n }\n function formatAsJSON() {\n var _editorRef$current;\n var model = (_editorRef$current = editorRef.current) === null || _editorRef$current === void 0 ? void 0 : _editorRef$current.getModel();\n if (!canFormat || !model) {\n return;\n }\n if (!isFormatted) {\n model.setValue(JSON.stringify(JSON.parse(text), undefined, 2));\n setIsFormatted(true);\n } else {\n model.setValue(text);\n setIsFormatted(false);\n }\n autoSetLineNumbers();\n }\n function autoSetLineNumbers() {\n var _editor$getModel$getL, _editor$getModel;\n var editor = editorRef.current;\n if (!editor) {\n return;\n }\n setShowLineNumbers(((_editor$getModel$getL = (_editor$getModel = editor.getModel()) === null || _editor$getModel === void 0 ? void 0 : _editor$getModel.getLineCount()) !== null && _editor$getModel$getL !== void 0 ? _editor$getModel$getL : 0) > 1);\n }\n function handleToggle() {\n if (isOpened) {\n editorRef.current = undefined;\n onClose();\n }\n }\n function onEditorInitialized(editor) {\n editorRef.current = editor;\n setHeight(editor.getContentHeight());\n editor.onDidContentSizeChange(_ref2 => {\n var {\n contentHeight\n } = _ref2;\n return setHeight(contentHeight);\n });\n autoSetLineNumbers();\n }\n if (!isOpen && !isOpened) {\n return null;\n }\n return /*#__PURE__*/_jsxs(Modal, {\n isOpen: isOpen,\n centered: true,\n keyboard: true,\n toggle: handleToggle,\n onOpened: () => setIsOpened(true),\n onClosed: () => {\n setIsOpened(false);\n setHeight(0);\n },\n className: \"cell-overflow-modal\",\n size: \"xl\",\n children: [/*#__PURE__*/_jsxs(ModalHeader, {\n toggle: onClose,\n children: [/*#__PURE__*/_jsx(\"h5\", {\n className: \"overflow-modal-title\",\n children: \"Cell Contents\"\n }), /*#__PURE__*/_jsx(CopyButton, {\n kind: \"inline\",\n tooltip: \"Copy cell contents\",\n copy: (_editorRef$current$ge = (_editorRef$current2 = editorRef.current) === null || _editorRef$current2 === void 0 ? void 0 : _editorRef$current2.getValue()) !== null && _editorRef$current$ge !== void 0 ? _editorRef$current$ge : text\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"inline\",\n active: showLineNumbers,\n icon: vsListOrdered,\n tooltip: \"Toggle line numbers\",\n onClick: toggleLineNumbers\n }), canFormat && /*#__PURE__*/_jsx(Button, {\n kind: \"inline\",\n icon: vsJson,\n active: isFormatted,\n tooltip: \"Format as JSON\",\n onClick: formatAsJSON\n })]\n }), /*#__PURE__*/_jsx(ModalBody, {\n style: {\n height\n },\n children: /*#__PURE__*/_jsx(Editor, {\n onEditorInitialized: onEditorInitialized,\n settings: {\n value: text,\n readOnly: true,\n wordWrap: 'on',\n // Loading json language w/o the monaco workers causes UI freezes and monaco errors. TS colorizes the same\n language: canFormat ? 'typescript' : 'plaintext',\n folding: canFormat,\n padding: {\n bottom: 16\n },\n lineNumbers: showLineNumbers ? 'on' : 'off',\n overviewRulerLanes: 0,\n renderLineHighlight: 'none',\n /*\n The entire string may be 1 giant line\n Monaco by default seeds find w/ that line\n On very long strings this hangs the browser, so never seed the search\n */\n find: {\n seedSearchStringFromSelection: 'never'\n }\n }\n })\n })]\n });\n}\n//# sourceMappingURL=IrisGridCellOverflowModal.js.map","import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsClose, vsArrowUp, vsArrowDown } from '@deephaven/icons';\nimport React, { forwardRef, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react';\nimport { Type as FilterType } from '@deephaven/filters';\nimport { Button, DateTimeInput, Select } from '@deephaven/components';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport classNames from 'classnames';\nimport \"./GotoRow.css\";\nimport { nanoid } from 'nanoid';\nimport IrisGridBottomBar from \"./IrisGridBottomBar.js\";\nimport { isIrisGridTableModelTemplate } from \"./IrisGridTableModelTemplate.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nvar DEFAULT_FORMAT_STRING = '###,##0';\nvar GotoRow = /*#__PURE__*/forwardRef((_ref, ref) => {\n var {\n gotoRow,\n gotoRowError,\n gotoValueError,\n onGotoRowSubmit,\n isShown,\n onEntering,\n onEntered: _onEntered,\n onExiting,\n onExited,\n model,\n onGotoRowNumberChanged,\n onClose,\n gotoValueSelectedColumnName,\n gotoValue,\n gotoValueFilter,\n onGotoValueSelectedColumnNameChanged,\n onGotoValueSelectedFilterChanged,\n onGotoValueChanged,\n onGotoValueSubmit\n } = _ref;\n var gotoRowInputRef = useRef(null);\n var gotoValueInputRef = useRef(null);\n var [isGotoRowActive, setIsGotoRowActive] = useState(false);\n var columns = [];\n if (isIrisGridTableModelTemplate(model)) {\n ({\n columns\n } = model.table);\n }\n var {\n dh,\n rowCount\n } = model;\n var gotoRowInputId = useMemo(() => \"goto-row-input-\".concat(nanoid()), []);\n var handleGotoValueNumberKeyDown = e => {\n if (e.key === 'Enter') {\n e.stopPropagation();\n e.preventDefault();\n onGotoValueSubmit();\n } else if ((e.key === 'Backspace' || e.key === 'Delete') && (gotoValue === \"\".concat(Number.POSITIVE_INFINITY) || gotoValue === \"\".concat(Number.NEGATIVE_INFINITY))) {\n onGotoValueInputChanged('');\n }\n };\n var handleGotoValueKeySubmit = e => {\n if (e.key === 'Enter') {\n e.stopPropagation();\n e.preventDefault();\n onGotoValueSubmit(e.shiftKey);\n }\n };\n var index = model.getColumnIndexByName(gotoValueSelectedColumnName);\n var selectedColumn = columns[index !== null && index !== void 0 ? index : 0];\n var columnType = selectedColumn === null || selectedColumn === void 0 ? void 0 : selectedColumn.type;\n var normalizedType = TableUtils.getNormalizedType(columnType);\n var onGotoValueInputChanged = value => {\n onGotoValueChanged(value !== null && value !== void 0 ? value : '');\n };\n useImperativeHandle(ref, () => ({\n focus() {\n var _gotoRowInputRef$curr;\n setIsGotoRowActive(true);\n (_gotoRowInputRef$curr = gotoRowInputRef.current) === null || _gotoRowInputRef$curr === void 0 ? void 0 : _gotoRowInputRef$curr.select();\n }\n }));\n var selectInput = () => {\n // when row changes without focus (i.e. via context menu), re-select input\n if (isGotoRowActive && document.activeElement !== gotoRowInputRef.current) {\n var _gotoRowInputRef$curr2;\n (_gotoRowInputRef$curr2 = gotoRowInputRef.current) === null || _gotoRowInputRef$curr2 === void 0 ? void 0 : _gotoRowInputRef$curr2.select();\n } else if (!isGotoRowActive && document.activeElement !== gotoValueInputRef.current) {\n var _gotoValueInputRef$cu;\n (_gotoValueInputRef$cu = gotoValueInputRef.current) === null || _gotoValueInputRef$cu === void 0 ? void 0 : _gotoValueInputRef$cu.select();\n }\n };\n useEffect(selectInput, [isGotoRowActive]);\n var renderValueInput = () => {\n switch (normalizedType) {\n case TableUtils.dataType.DECIMAL:\n case TableUtils.dataType.INT:\n return /*#__PURE__*/_jsx(\"div\", {\n className: \"goto-row-input\",\n children: /*#__PURE__*/_jsx(\"input\", {\n ref: gotoValueInputRef,\n className: classNames('form-control', {\n 'is-invalid': gotoValueError !== ''\n }),\n onKeyDown: handleGotoValueNumberKeyDown,\n placeholder: \"value\",\n onChange: e => {\n var value = e.target.value.toLowerCase();\n // regex tests for\n if (/^-?[0-9]*\\.?[0-9]*$/.test(e.target.value)) {\n onGotoValueInputChanged(e.target.value);\n } else if (value === '-i' || value === '-infinity') {\n onGotoValueInputChanged(\"\".concat(Number.NEGATIVE_INFINITY));\n } else if (value === 'i' || value === 'infinity') {\n onGotoValueInputChanged(\"\".concat(Number.POSITIVE_INFINITY));\n }\n },\n value: gotoValue,\n \"aria-label\": \"Value Input\"\n })\n });\n case TableUtils.dataType.DATETIME:\n return /*#__PURE__*/_jsx(\"div\", {\n className: \"goto-value-date-time-input\",\n children: /*#__PURE__*/_jsx(DateTimeInput, {\n ref: gotoValueInputRef,\n className: classNames('form-control', 'goto-value-date-time-input', {\n 'is-invalid': gotoValueError !== ''\n }),\n defaultValue: gotoValue,\n onChange: onGotoValueInputChanged,\n onSubmit: handleGotoValueKeySubmit,\n \"aria-label\": \"Value Input\"\n })\n });\n case TableUtils.dataType.STRING:\n return /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"goto-row-input\",\n children: /*#__PURE__*/_jsxs(Select, {\n className: \"custom-select\",\n onChange: eventTargetValue => {\n onGotoValueSelectedFilterChanged(eventTargetValue);\n },\n value: gotoValueFilter,\n \"aria-label\": \"filter-type-select\",\n children: [/*#__PURE__*/_jsx(\"option\", {\n value: FilterType.eqIgnoreCase,\n children: \"Equals (case-insensitive)\"\n }, FilterType.eqIgnoreCase), /*#__PURE__*/_jsx(\"option\", {\n value: FilterType.containsIgnoreCase,\n children: \"Contains (case-insensitive)\"\n }, FilterType.containsIgnoreCase), /*#__PURE__*/_jsx(\"option\", {\n value: FilterType.eq,\n children: \"Equals\"\n }, FilterType.eq), /*#__PURE__*/_jsx(\"option\", {\n value: FilterType.contains,\n children: \"Contains\"\n }, FilterType.contains)]\n })\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"goto-row-input\",\n children: /*#__PURE__*/_jsx(\"input\", {\n ref: gotoValueInputRef,\n className: classNames('form-control', {\n 'is-invalid': gotoValueError !== ''\n }),\n onKeyDown: handleGotoValueKeySubmit,\n placeholder: \"value\",\n onChange: e => onGotoValueInputChanged(e.target.value),\n value: gotoValue,\n \"aria-label\": \"Value Input\"\n })\n })]\n });\n case TableUtils.dataType.BOOLEAN:\n return /*#__PURE__*/_jsx(\"div\", {\n className: \"goto-row-input\",\n children: /*#__PURE__*/_jsxs(Select, {\n className: \"custom-select\",\n onChange: eventTargetValue => {\n onGotoValueInputChanged(eventTargetValue);\n },\n value: gotoValue,\n \"aria-label\": \"Value Input\",\n children: [/*#__PURE__*/_jsx(\"option\", {\n \"aria-label\": \"null value\",\n value: \"\"\n }, \"null\"), /*#__PURE__*/_jsx(\"option\", {\n value: \"true\",\n children: \"true\"\n }, \"true\"), /*#__PURE__*/_jsx(\"option\", {\n value: \"false\",\n children: \"false\"\n }, \"false\")]\n })\n });\n default:\n return /*#__PURE__*/_jsx(\"div\", {\n className: \"goto-row-input\",\n children: /*#__PURE__*/_jsx(\"input\", {\n ref: gotoValueInputRef,\n className: \"form-control\",\n onKeyDown: handleGotoValueKeySubmit,\n placeholder: \"value\",\n onChange: e => onGotoValueInputChanged(e.target.value),\n value: gotoValue,\n \"aria-label\": \"Value Input\"\n })\n });\n }\n };\n return /*#__PURE__*/_jsx(IrisGridBottomBar, {\n isShown: isShown,\n className: classNames('goto-row'),\n onEntering: onEntering,\n onEntered: () => {\n _onEntered();\n selectInput();\n },\n onExiting: onExiting,\n onExited: onExited,\n children: /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"goto-row-row\",\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: classNames('goto-row-wrapper', {\n 'is-inactive': !isGotoRowActive\n }),\n onClick: () => setIsGotoRowActive(true),\n onFocus: () => setIsGotoRowActive(true),\n role: \"group\",\n children: [/*#__PURE__*/_jsx(\"label\", {\n className: \"goto-row-text\",\n htmlFor: gotoRowInputId,\n children: \"Go to row\"\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"goto-row-input\",\n children: /*#__PURE__*/_jsx(\"input\", {\n ref: gotoRowInputRef,\n \"data-testid\": \"goto-row-input\",\n type: \"number\",\n onKeyDown: e => {\n if (e.key === 'Enter') {\n e.stopPropagation();\n e.preventDefault();\n onGotoRowSubmit();\n }\n },\n className: classNames('form-control', {\n 'is-invalid': gotoRowError !== ''\n }),\n placeholder: \"Row number\",\n onChange: event => {\n onGotoRowNumberChanged(event);\n },\n value: gotoRow,\n id: gotoRowInputId\n })\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"goto-row-text\",\n children: [\"of\", ' ', dh.i18n.NumberFormat.format(DEFAULT_FORMAT_STRING, rowCount)]\n }), gotoRowError && /*#__PURE__*/_jsx(\"div\", {\n className: \"text-danger\",\n children: gotoRowError\n })]\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"goto-row-close\",\n children: /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n onClick: onClose,\n children: /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsClose,\n style: {\n marginRight: '0'\n }\n })\n })\n })]\n }), model.isSeekRowAvailable && /*#__PURE__*/_jsx(\"div\", {\n className: \"goto-row-row\",\n children: /*#__PURE__*/_jsxs(\"div\", {\n className: classNames('goto-row-wrapper', {\n 'is-inactive': isGotoRowActive\n }),\n onClick: () => setIsGotoRowActive(false),\n onFocus: () => setIsGotoRowActive(false),\n role: \"group\",\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"goto-row-text\",\n children: \"Go to value\"\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"goto-row-input\",\n children: /*#__PURE__*/_jsx(Select, {\n className: \"custom-select\",\n onChange: eventTargetValue => {\n var columnName = eventTargetValue;\n onGotoValueSelectedColumnNameChanged(columnName);\n },\n value: gotoValueSelectedColumnName,\n \"aria-label\": \"column-name-select\",\n id: \"column-name-select\",\n children: columns.map(column => /*#__PURE__*/_jsx(\"option\", {\n value: column.name,\n children: column.name\n }, column.name))\n })\n }), renderValueInput(), /*#__PURE__*/_jsxs(\"div\", {\n children: [/*#__PURE__*/_jsx(Button, {\n tooltip: \"Previous match\",\n icon: vsArrowUp,\n kind: \"ghost\",\n disabled: gotoValue === '',\n onClick: () => {\n onGotoValueSubmit(true);\n }\n }), /*#__PURE__*/_jsx(Button, {\n tooltip: \"Next match\",\n icon: vsArrowDown,\n kind: \"ghost\",\n disabled: gotoValue === '',\n onClick: () => {\n onGotoValueSubmit(false);\n }\n })]\n }), gotoValueError && /*#__PURE__*/_jsx(\"div\", {\n className: \"text-danger\",\n children: gotoValueError\n })]\n })\n })]\n })\n });\n});\nGotoRow.displayName = 'GotoRow';\nexport default GotoRow;\n//# sourceMappingURL=GotoRow.js.map","import { Button, GLOBAL_SHORTCUTS, Modal, ModalBody, ModalFooter, ModalHeader } from '@deephaven/components';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nexport function NoPastePermissionModal(_ref) {\n var {\n isOpen,\n onClose,\n errorMessage\n } = _ref;\n var pasteShortcutText = GLOBAL_SHORTCUTS.PASTE.getDisplayText();\n return /*#__PURE__*/_jsxs(Modal, {\n isOpen: isOpen,\n toggle: onClose,\n centered: true,\n children: [/*#__PURE__*/_jsx(ModalHeader, {\n closeButton: false,\n children: \"No Paste Permission\"\n }), /*#__PURE__*/_jsxs(ModalBody, {\n children: [/*#__PURE__*/_jsx(\"p\", {\n children: errorMessage\n }), /*#__PURE__*/_jsxs(\"p\", {\n children: [\"You can still use \", pasteShortcutText, \" to paste.\"]\n })]\n }), /*#__PURE__*/_jsx(ModalFooter, {\n children: /*#__PURE__*/_jsx(Button, {\n kind: \"primary\",\n onClick: onClose,\n children: \"Dismiss\"\n })\n })]\n });\n}\n//# sourceMappingURL=NoPastePermissionModal.js.map","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport React, { Component } from 'react';\nimport memoize from 'memoizee';\nimport classNames from 'classnames';\nimport { CSSTransition } from 'react-transition-group';\nimport PropTypes from 'prop-types';\nimport deepEqual from 'fast-deep-equal';\nimport Log from '@deephaven/log';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { ContextActions, Stack, Menu, Page, Popper, ThemeExport, Tooltip, Button, ContextActionUtils, SlideTransition } from '@deephaven/components';\nimport { Grid, GridRange, GridUtils, isEditableGridModel, isExpandableGridModel, isDeletableGridModel } from '@deephaven/grid';\nimport { dhEye, dhFilterFilled, dhGraphLineUp, dhTriangleDownSquare, vsClose, vsCloudDownload, vsEdit, vsFilter, vsMenu, vsReply, vsRuby, vsSearch, vsSplitHorizontal, vsSymbolOperator, vsTools } from '@deephaven/icons';\nimport { DateUtils, Formatter, FormatterUtils, TableUtils, isSortDirection } from '@deephaven/jsapi-utils';\nimport { assertNotNull, copyToClipboard, EMPTY_ARRAY, EMPTY_MAP, Pending, PromiseUtils, ValidationError, getOrThrow } from '@deephaven/utils';\nimport { Type as FilterType } from '@deephaven/filters';\nimport throttle from 'lodash.throttle';\nimport debounce from 'lodash.debounce';\nimport clamp from 'lodash.clamp';\nimport { getFormatColumns } from \"./sidebar/conditional-formatting/ConditionalFormattingUtils.js\";\nimport PendingDataBottomBar from \"./PendingDataBottomBar.js\";\nimport IrisGridCopyHandler from \"./IrisGridCopyHandler.js\";\nimport FilterInputField from \"./FilterInputField.js\";\nimport { CopyCellKeyHandler, ClearFilterKeyHandler, CopyKeyHandler, ReverseKeyHandler } from \"./key-handlers/index.js\";\nimport { IrisGridCellOverflowMouseHandler, IrisGridColumnSelectMouseHandler, IrisGridColumnTooltipMouseHandler, IrisGridContextMenuHandler, IrisGridCopyCellMouseHandler, IrisGridDataSelectMouseHandler, IrisGridPartitionedTableMouseHandler, IrisGridFilterMouseHandler, IrisGridRowTreeMouseHandler, IrisGridSortMouseHandler, IrisGridTokenMouseHandler, PendingMouseHandler } from \"./mousehandlers/index.js\";\nimport ToastBottomBar from \"./ToastBottomBar.js\";\nimport IrisGridMetricCalculator from \"./IrisGridMetricCalculator.js\";\nimport IrisGridModelUpdater from \"./IrisGridModelUpdater.js\";\nimport IrisGridRenderer from \"./IrisGridRenderer.js\";\nimport { createDefaultIrisGridTheme } from \"./IrisGridTheme.js\";\nimport ColumnStatistics from \"./ColumnStatistics.js\";\nimport \"./IrisGrid.css\";\nimport AdvancedFilterCreator from \"./AdvancedFilterCreator.js\";\nimport { Aggregations, AggregationEdit, AggregationUtils, ChartBuilder, CustomColumnBuilder, OptionType, RollupRows, TableCsvExporter, TableSaver, VisibilityOrderingBuilder, DownloadServiceWorkerUtils } from \"./sidebar/index.js\";\nimport IrisGridUtils from \"./IrisGridUtils.js\";\nimport CrossColumnSearch from \"./CrossColumnSearch.js\";\nimport IrisGridModel from \"./IrisGridModel.js\";\nimport { isPartitionedGridModel } from \"./PartitionedGridModel.js\";\nimport IrisGridPartitionSelector from \"./IrisGridPartitionSelector.js\";\nimport SelectDistinctBuilder from \"./sidebar/SelectDistinctBuilder.js\";\nimport AdvancedSettingsType from \"./sidebar/AdvancedSettingsType.js\";\nimport AdvancedSettingsMenu from \"./sidebar/AdvancedSettingsMenu.js\";\nimport SHORTCUTS from \"./IrisGridShortcuts.js\";\nimport ConditionalFormattingMenu from \"./sidebar/conditional-formatting/ConditionalFormattingMenu.js\";\nimport ConditionalFormatEditor from \"./sidebar/conditional-formatting/ConditionalFormatEditor.js\";\nimport IrisGridCellOverflowModal from \"./IrisGridCellOverflowModal.js\";\nimport GotoRow from \"./GotoRow.js\";\nimport AggregationOperation from \"./sidebar/aggregations/AggregationOperation.js\";\nimport { IrisGridThemeContext } from \"./IrisGridThemeProvider.js\";\nimport { isMissingPartitionError } from \"./MissingPartitionError.js\";\nimport { NoPastePermissionModal } from \"./NoPastePermissionModal.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('IrisGrid');\nvar VIEWPORT_LOADING_DELAY = 500;\nvar UPDATE_DOWNLOAD_THROTTLE = 500;\nvar SET_FILTER_DEBOUNCE = 250;\nvar SEEK_ROW_DEBOUNCE = 250;\nvar SET_CONDITIONAL_FORMAT_DEBOUNCE = 250;\nvar DEFAULT_AGGREGATION_SETTINGS = Object.freeze({\n aggregations: EMPTY_ARRAY,\n showOnTop: false\n});\nvar UNFORMATTED_DATE_PATTERN = \"yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSS z\";\nfunction isEmptyConfig(_ref) {\n var {\n advancedFilters,\n aggregationSettings,\n customColumns,\n quickFilters,\n reverse,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts\n } = _ref;\n return advancedFilters.size === 0 && aggregationSettings.aggregations.length === 0 && customColumns.length === 0 && quickFilters.size === 0 && !reverse && rollupConfig == null && searchFilter == null && selectDistinctColumns.length === 0 && sorts.length === 0;\n}\nclass IrisGrid extends Component {\n // eslint-disable-next-line react/static-property-placement, react/sort-comp\n\n constructor(props) {\n var _model$layoutHints, _model$layoutHints$hi, _model$columns$0$name, _model$columns$;\n super(props);\n _defineProperty(this, \"grid\", void 0);\n _defineProperty(this, \"lastFocusedFilterBarColumn\", void 0);\n _defineProperty(this, \"lastLoadedConfig\", void 0);\n _defineProperty(this, \"tooltip\", void 0);\n _defineProperty(this, \"pending\", void 0);\n _defineProperty(this, \"globalColumnFormats\", void 0);\n _defineProperty(this, \"dateTimeFormatterOptions\", void 0);\n _defineProperty(this, \"decimalFormatOptions\", void 0);\n _defineProperty(this, \"integerFormatOptions\", void 0);\n _defineProperty(this, \"truncateNumbersWithPound\", void 0);\n _defineProperty(this, \"showEmptyStrings\", void 0);\n _defineProperty(this, \"showNullStrings\", void 0);\n _defineProperty(this, \"showExtraGroupColumn\", void 0);\n _defineProperty(this, \"loadingScrimStartTime\", void 0);\n _defineProperty(this, \"loadingScrimFinishTime\", void 0);\n _defineProperty(this, \"animationFrame\", void 0);\n _defineProperty(this, \"loadingTimer\", void 0);\n _defineProperty(this, \"tableSaver\", void 0);\n _defineProperty(this, \"crossColumnRef\", void 0);\n _defineProperty(this, \"isAnimating\", void 0);\n _defineProperty(this, \"filterInputRef\", void 0);\n _defineProperty(this, \"gotoRowRef\", void 0);\n _defineProperty(this, \"isCopying\", void 0);\n _defineProperty(this, \"toggleFilterBarAction\", void 0);\n _defineProperty(this, \"toggleSearchBarAction\", void 0);\n _defineProperty(this, \"toggleGotoRowAction\", void 0);\n _defineProperty(this, \"discardAction\", void 0);\n _defineProperty(this, \"commitAction\", void 0);\n _defineProperty(this, \"contextActions\", void 0);\n _defineProperty(this, \"tableUtils\", void 0);\n _defineProperty(this, \"keyHandlers\", void 0);\n _defineProperty(this, \"mouseHandlers\", void 0);\n _defineProperty(this, \"getAdvancedMenuOpenedHandler\", memoize(column => this.handleAdvancedMenuOpened.bind(this, column), {\n max: 100\n }));\n _defineProperty(this, \"getCachedAdvancedFilterMenuActions\", memoize((model, column, advancedFilterOptions, sortDirection, formatter) => /*#__PURE__*/_jsx(AdvancedFilterCreator, {\n model: model,\n column: column,\n onFilterChange: this.handleAdvancedFilterChange,\n onSortChange: this.handleAdvancedFilterSortChange,\n onDone: this.handleAdvancedFilterDone,\n options: advancedFilterOptions,\n sortDirection: sortDirection,\n formatter: formatter,\n tableUtils: this.tableUtils\n }), {\n max: 50\n }));\n _defineProperty(this, \"getCachedOptionItems\", memoize((isChartBuilderAvailable, isCustomColumnsAvailable, isFormatColumnsAvailable, 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 optionItems.push({\n type: OptionType.VISIBILITY_ORDERING_BUILDER,\n title: 'Organize Columns',\n icon: dhEye\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 _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 _defineProperty(this, \"getOperationOrder\", memoize(aggregations => aggregations.map(a => a.operation).filter(o => !AggregationUtils.isRollupOperation(o))));\n _defineProperty(this, \"getCachedFormatColumns\", memoize((dh, columns, rules) => getFormatColumns(dh, columns, rules)));\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 _defineProperty(this, \"getModelRollupConfig\", memoize((originalColumns, config, aggregationSettings) => IrisGridUtils.getModelRollupConfig(originalColumns, config, aggregationSettings)));\n _defineProperty(this, \"getModelTotalsConfig\", memoize((columns, config, aggregationSettings) => {\n var _config$columns$lengt, _config$columns;\n if (((_config$columns$lengt = config === null || config === void 0 ? void 0 : (_config$columns = config.columns) === null || _config$columns === void 0 ? void 0 : _config$columns.length) !== null && _config$columns$lengt !== void 0 ? _config$columns$lengt : 0) > 0) {\n // If we've got rollups, then aggregations are applied as part of that...\n return null;\n }\n\n // Filter out aggregations without any columns actually selected\n var aggregations = aggregationSettings.aggregations.filter(agg => agg.selected.length > 0 || agg.invert);\n if (aggregations.length === 0) {\n // We don't actually have any aggregations set, don't bother\n return null;\n }\n var operationMap = this.getOperationMap(columns, aggregations);\n var operationOrder = this.getOperationOrder(aggregations);\n return {\n operationMap,\n operationOrder,\n showOnTop: aggregationSettings.showOnTop,\n defaultOperation: AggregationOperation.SKIP\n };\n }));\n _defineProperty(this, \"getCachedStateOverride\", memoize((hoverSelectColumn, isFilterBarShown, isSelectingColumn, loadingScrimProgress, quickFilters, advancedFilters, sorts, reverse, rollupConfig, isMenuShown) => ({\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 _defineProperty(this, \"getCachedMouseHandlers\", memoize(mouseHandlers => [...mouseHandlers, ...this.mouseHandlers]));\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 _defineProperty(this, \"updateSearchFilter\", debounce((searchValue, selectedSearchColumns, columns, invertSearchColumns) => {\n var {\n model\n } = this.props;\n var searchFilter = CrossColumnSearch.createSearchFilter(model.dh, searchValue, selectedSearchColumns, columns, invertSearchColumns);\n this.setState({\n searchFilter\n });\n }, SET_FILTER_DEBOUNCE));\n _defineProperty(this, \"showViewportLoading\", throttle(() => {\n var {\n model\n } = this.props;\n var {\n loadingSpinnerShown\n } = this.state;\n if (model.isViewportPending && !loadingSpinnerShown) {\n // We only want to show the viewport loading if the viewport is still loading\n // and we're not already showing a loader for something else\n this.startLoading('Waiting for viewport...', {\n loadingCancelShown: false,\n loadingBlocksGrid: false\n });\n }\n }, VIEWPORT_LOADING_DELAY, {\n leading: false,\n trailing: true\n }));\n _defineProperty(this, \"handleConditionalFormatEditorUpdate\", debounce(conditionalFormatPreview => {\n this.setState({\n conditionalFormatPreview\n });\n }, SET_CONDITIONAL_FORMAT_DEBOUNCE));\n _defineProperty(this, \"handleDownloadProgressUpdate\", throttle((tableDownloadProgress, tableDownloadEstimatedTime) => {\n var {\n tableDownloadStatus\n } = this.state;\n if (tableDownloadStatus === TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING) {\n this.setState({\n tableDownloadProgress,\n tableDownloadEstimatedTime\n });\n }\n }, UPDATE_DOWNLOAD_THROTTLE));\n _defineProperty(this, \"getOverflowButtonTooltip\", memoize(overflowButtonTooltipProps => {\n if (overflowButtonTooltipProps == null) {\n return null;\n }\n var wrapperStyle = _objectSpread(_objectSpread({\n position: 'absolute'\n }, overflowButtonTooltipProps), {}, {\n pointerEvents: 'none'\n });\n var popperOptions = {\n placement: 'left',\n modifiers: {\n flip: {\n behavior: ['left', 'right']\n }\n }\n };\n return /*#__PURE__*/_jsx(\"div\", {\n style: wrapperStyle,\n children: /*#__PURE__*/_jsx(Tooltip, {\n options: popperOptions,\n ref: this.handleTooltipRef,\n children: \"View full contents\"\n }, Date.now())\n });\n }));\n _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 _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 _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.handleTooltipRef = this.handleTooltipRef.bind(this);\n this.handleViewChanged = this.handleViewChanged.bind(this);\n this.handleFormatSelection = this.handleFormatSelection.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.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 isFilterBarShown: _isFilterBarShown,\n isSelectingPartition,\n partitions,\n partitionConfig,\n model: _model,\n movedColumns: movedColumnsProp,\n movedRows: movedRowsProp,\n rollupConfig: _rollupConfig,\n userColumnWidths: _userColumnWidths,\n userRowHeights,\n showSearchBar: _showSearchBar,\n searchValue: _searchValue,\n selectedSearchColumns: _selectedSearchColumns,\n invertSearchColumns: _invertSearchColumns,\n advancedFilters: _advancedFilters,\n quickFilters: _quickFilters,\n selectDistinctColumns,\n pendingDataMap,\n canCopy,\n frozenColumns,\n columnHeaderGroups\n } = props;\n var {\n dh: _dh\n } = _model;\n var _keyHandlers = [new CopyCellKeyHandler(this), new ReverseKeyHandler(this), new ClearFilterKeyHandler(this)];\n var _mouseHandlers = [new IrisGridCellOverflowMouseHandler(this), new IrisGridRowTreeMouseHandler(this), new IrisGridTokenMouseHandler(this), new IrisGridColumnSelectMouseHandler(this), new IrisGridColumnTooltipMouseHandler(this), new IrisGridSortMouseHandler(this), new IrisGridFilterMouseHandler(this), new IrisGridContextMenuHandler(this, _dh), new IrisGridDataSelectMouseHandler(this), new PendingMouseHandler(this), new IrisGridPartitionedTableMouseHandler(this)];\n if (canCopy) {\n _keyHandlers.push(new CopyKeyHandler(this));\n _mouseHandlers.push(new IrisGridCopyCellMouseHandler(this));\n }\n var _movedColumns = movedColumnsProp.length > 0 ? movedColumnsProp : _model.initialMovedColumns;\n var movedRows = movedRowsProp.length > 0 ? movedRowsProp : _model.initialMovedRows;\n var _metricCalculator = new IrisGridMetricCalculator({\n userColumnWidths: new Map(_userColumnWidths),\n userRowHeights: new Map(userRowHeights),\n movedColumns: _movedColumns,\n initialColumnWidths: new Map(_model === null || _model === void 0 ? void 0 : (_model$layoutHints = _model.layoutHints) === null || _model$layoutHints === void 0 ? void 0 : (_model$layoutHints$hi = _model$layoutHints.hiddenColumns) === null || _model$layoutHints$hi === void 0 ? void 0 : _model$layoutHints$hi.map(name => [_model.getColumnIndexByName(name), 0]))\n });\n var searchColumns = _selectedSearchColumns !== null && _selectedSearchColumns !== void 0 ? _selectedSearchColumns : [];\n var _searchFilter = CrossColumnSearch.createSearchFilter(_dh, _searchValue, searchColumns, _model.columns, _invertSearchColumns);\n this.tableUtils = new TableUtils(_dh);\n this.mouseHandlers = _mouseHandlers;\n this.keyHandlers = _keyHandlers;\n this.state = {\n isFilterBarShown: _isFilterBarShown,\n isSelectingPartition,\n focusedFilterBarColumn: null,\n metricCalculator: _metricCalculator,\n metrics: undefined,\n partitionConfig: partitionConfig !== null && partitionConfig !== void 0 ? partitionConfig : partitions && partitions.length ? {\n partitions,\n mode: 'partition'\n } : undefined,\n // setAdvancedFilter and setQuickFilter mutate the arguments\n // so we want to always use map copies from the state instead of props\n quickFilters: _quickFilters ? new Map(_quickFilters) : new Map(),\n advancedFilters: new Map(_advancedFilters),\n shownAdvancedFilter: null,\n hoverAdvancedFilter: null,\n sorts: [],\n reverse: false,\n customColumns: [],\n selectDistinctColumns,\n // selected range in table\n selectedRanges: [],\n // Current ongoing copy operation\n copyOperation: null,\n // The filter that is currently being applied. Reset after update is received\n loadingText: null,\n loadingScrimProgress: null,\n loadingSpinnerShown: false,\n loadingCancelShown: false,\n loadingBlocksGrid: false,\n movedColumns: _movedColumns,\n movedRows,\n shownColumnTooltip: null,\n formatter: new Formatter(_dh),\n isMenuShown: false,\n customColumnFormatMap: new Map(customColumnFormatMap),\n 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: _aggregationSettings,\n selectedAggregation: null,\n openOptions: [],\n pendingRowCount: 0,\n pendingDataMap: pendingDataMap !== null && pendingDataMap !== void 0 ? pendingDataMap : new Map(),\n pendingDataErrors: new Map(),\n pendingSavePromise: null,\n pendingSaveError: null,\n toastMessage: null,\n frozenColumns,\n showOverflowModal: false,\n showNoPastePermissionModal: false,\n noPastePermissionError: '',\n overflowText: '',\n overflowButtonTooltipProps: null,\n expandCellTooltipProps: null,\n expandTooltipDisplayValue: 'expand',\n hoverTooltipProps: null,\n hoverDisplayValue: '',\n isGotoShown: false,\n gotoRow: '',\n gotoRowError: '',\n gotoValueError: '',\n gotoValueSelectedColumnName: (_model$columns$0$name = (_model$columns$ = _model.columns[0]) === null || _model$columns$ === void 0 ? void 0 : _model$columns$.name) !== null && _model$columns$0$name !== void 0 ? _model$columns$0$name : '',\n gotoValueSelectedFilter: FilterType.eqIgnoreCase,\n gotoValue: '',\n gotoValueManuallyChanged: false,\n columnHeaderGroups: columnHeaderGroups !== null && columnHeaderGroups !== void 0 ? columnHeaderGroups : _model.initialColumnHeaderGroups\n };\n }\n componentDidMount() {\n var {\n model\n } = this.props;\n this.initState();\n this.startListening(model);\n }\n componentDidUpdate(prevProps, prevState) {\n var {\n inputFilters,\n isSelectingColumn,\n settings,\n model,\n customFilters,\n sorts\n } = this.props;\n if (model !== prevProps.model) {\n this.stopListening(prevProps.model);\n this.startListening(model);\n }\n var changedInputFilters = inputFilters !== prevProps.inputFilters ? inputFilters.filter(inputFilter => !prevProps.inputFilters.includes(inputFilter)) : [];\n if (changedInputFilters.length > 0) {\n var _advancedSettings$get;\n var {\n advancedSettings\n } = this.props;\n var replaceExistingFilters = (_advancedSettings$get = advancedSettings.get(AdvancedSettingsType.FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS)) !== null && _advancedSettings$get !== void 0 ? _advancedSettings$get : false;\n if (replaceExistingFilters) {\n this.clearGridInputField();\n this.clearCrossColumSearch();\n }\n this.startLoading('Filtering...', {\n resetRanges: true\n });\n this.applyInputFilters(changedInputFilters, replaceExistingFilters);\n }\n if (isSelectingColumn !== prevProps.isSelectingColumn) {\n this.resetColumnSelection();\n }\n if (settings !== prevProps.settings) {\n this.updateFormatterSettings(settings);\n }\n if (customFilters !== prevProps.customFilters) {\n this.startLoading('Filtering...', {\n resetRanges: true\n });\n }\n if (sorts !== prevProps.sorts) {\n this.updateSorts(sorts);\n }\n var {\n loadingScrimStartTime,\n loadingScrimFinishTime\n } = this;\n if (loadingScrimStartTime != null && loadingScrimFinishTime != null) {\n window.requestAnimationFrame(() => {\n var now = Date.now();\n var currentTime = now - loadingScrimStartTime;\n var totalTime = loadingScrimFinishTime - loadingScrimStartTime;\n var loadingScrimProgress = Math.min(currentTime / totalTime, 1);\n if (loadingScrimFinishTime < now) {\n this.loadingScrimStartTime = undefined;\n this.loadingScrimFinishTime = undefined;\n }\n this.setState(state => {\n if (state.loadingScrimProgress == null) {\n log.debug2('Ignoring scrim update because loading cancelled.');\n return null;\n }\n return {\n loadingScrimProgress\n };\n });\n });\n }\n var {\n openOptions\n } = this.state;\n if (openOptions !== prevState.openOptions) {\n var isAggEditType = option => option.type === OptionType.AGGREGATION_EDIT;\n if (!openOptions.some(isAggEditType) && prevState.openOptions.some(isAggEditType)) {\n this.removeEmptyAggregations();\n }\n }\n this.sendStateChange();\n }\n componentWillUnmount() {\n var {\n model\n } = this.props;\n this.stopListening(model);\n this.pending.cancel();\n this.updateSearchFilter.cancel();\n if (this.loadingTimer) {\n clearTimeout(this.loadingTimer);\n }\n this.handleDownloadProgressUpdate.cancel();\n if (this.animationFrame !== undefined) {\n cancelAnimationFrame(this.animationFrame);\n }\n this.showViewportLoading.cancel();\n }\n\n // When the loading scrim started/when it should extend to the end of the screen.\n\n get gridWrapper() {\n var _this$grid$canvasWrap, _this$grid;\n return (_this$grid$canvasWrap = (_this$grid = this.grid) === null || _this$grid === void 0 ? void 0 : _this$grid.canvasWrapper.current) !== null && _this$grid$canvasWrap !== void 0 ? _this$grid$canvasWrap : null;\n }\n\n /**\n * Builds formatColumns array based on the provided formatting rules with optional preview\n * @param columns Array of columns\n * @param rulesParam Array of formatting rules\n * @param preview Optional temporary formatting rule for previewing live changes\n * @param editIndex Index in the rulesParam array to replace with the preview, null if preview not applicable\n * @returns Format columns array\n */\n\n getKeyHandlers() {\n var {\n keyHandlers\n } = this.props;\n return this.getCachedKeyHandlers(keyHandlers);\n }\n get renderer() {\n var {\n renderer\n } = this.props;\n return this.getCachedRenderer(renderer);\n }\n getMouseHandlers() {\n var {\n mouseHandlers\n } = this.props;\n return this.getCachedMouseHandlers(mouseHandlers);\n }\n getValueForCell(columnIndex, rowIndex) {\n var rawValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var {\n model\n } = this.props;\n var {\n dh\n } = model;\n var modelColumn = this.getModelColumn(columnIndex);\n var modelRow = this.getModelRow(rowIndex);\n if (rawValue && modelColumn != null && modelRow != null) {\n var _value = model.valueForCell(modelColumn, modelRow);\n if (TableUtils.isDateType(model.columns[modelColumn].type)) {\n // The returned value is just a long value, we should return the value formatted as a full date string\n var {\n formatter\n } = model;\n return dh.i18n.DateTimeFormat.format(UNFORMATTED_DATE_PATTERN, _value, dh.i18n.TimeZone.getTimeZone(formatter.timeZone));\n }\n return _value;\n }\n if (rawValue) {\n return null;\n }\n if (modelColumn != null && modelRow != null) {\n return model.textForCell(modelColumn, modelRow);\n }\n return '';\n }\n getModelColumn(columnIndex) {\n var {\n metrics\n } = this.state;\n assertNotNull(metrics);\n var {\n modelColumns\n } = metrics;\n if (modelColumns == null) {\n return null;\n }\n return columnIndex != null ? modelColumns.get(columnIndex) : null;\n }\n getModelRow(rowIndex) {\n var {\n metrics\n } = this.state;\n assertNotNull(metrics);\n var {\n modelRows\n } = metrics;\n if (modelRows == null) {\n return null;\n }\n return rowIndex != null ? modelRows.get(rowIndex) : null;\n }\n getTheme() {\n var _ref4;\n var {\n model,\n theme,\n density\n } = this.props;\n var {\n theme: contextTheme,\n density: contextDensity\n } = this.context;\n return this.getCachedTheme(contextTheme, theme, (_ref4 = isEditableGridModel(model) && model.isEditable) !== null && _ref4 !== void 0 ? _ref4 : false, model.floatingTopRowCount + model.floatingBottomRowCount, density !== null && density !== void 0 ? density : contextDensity);\n }\n getVisibleColumn(modelIndex) {\n var {\n movedColumns\n } = this.state;\n return GridUtils.getVisibleIndex(modelIndex, movedColumns);\n }\n makeQuickFilter(column, text, timeZone) {\n try {\n return this.tableUtils.makeQuickFilter(column, text, timeZone);\n } catch (err) {\n log.error('Error creating quick filter', err);\n }\n return null;\n }\n\n /**\n * Applies the provided input filters as quick filters,\n * and clears any existing quickFilters or advancedFilters on that column\n * @param inputFilters Array of input filters to apply\n * @param replaceExisting If true, new filters will replace the existing ones, instead of merging\n */\n applyInputFilters(inputFilters) {\n var replaceExisting = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var {\n model\n } = this.props;\n var {\n advancedFilters,\n quickFilters\n } = this.state;\n var newAdvancedFilters = replaceExisting ? new Map() : new Map(advancedFilters);\n var newQuickFilters = replaceExisting ? new Map() : new Map(quickFilters);\n var isChanged = replaceExisting && advancedFilters.size > 0;\n inputFilters.forEach(_ref5 => {\n var {\n name,\n type,\n value\n } = _ref5;\n var modelIndex = model.columns.findIndex(_ref6 => {\n var {\n name: columnName,\n type: columnType\n } = _ref6;\n return columnName === name && columnType === type;\n });\n if (modelIndex >= 0) {\n isChanged = newAdvancedFilters.delete(modelIndex) || isChanged;\n isChanged = this.applyQuickFilter(modelIndex, value, newQuickFilters) || isChanged;\n } else {\n log.error('Unable to find column for inputFilter', name, type, value);\n }\n });\n if (isChanged) {\n this.setState({\n quickFilters: newQuickFilters,\n advancedFilters: newAdvancedFilters\n });\n }\n }\n\n /**\n * Applies a quick filter\n * @param modelIndex The index in the model of the column to set\n * @param value The string value to set to the quick filter\n * @param quickFilters The quick filters map\n * @returns True if the filters have changed because this quick filter was applied\n */\n applyQuickFilter(modelIndex, value, quickFilters) {\n var {\n model\n } = this.props;\n var {\n formatter\n } = model;\n var column = model.columns[modelIndex];\n if (value != null && \"\".concat(value).trim().length > 0) {\n var quickFilter = quickFilters.get(modelIndex);\n if (quickFilter != null) {\n var {\n text\n } = quickFilter;\n if (text === value) {\n log.debug2('Ignoring change to existing filter');\n return false;\n }\n }\n quickFilters.set(modelIndex, {\n text: value,\n filter: this.makeQuickFilter(column, value, formatter.timeZone)\n });\n return true;\n }\n return quickFilters.delete(modelIndex);\n }\n setAdvancedFilterMap(advancedFilters) {\n this.setState({\n advancedFilters\n });\n }\n setAdvancedFilter(modelIndex, filter, options) {\n log.debug('Setting advanced filter', modelIndex, filter);\n this.startLoading('Filtering...', {\n resetRanges: true\n });\n this.setState(_ref7 => {\n var {\n advancedFilters\n } = _ref7;\n var newAdvancedFilters = new Map(advancedFilters);\n if (filter == null) {\n newAdvancedFilters.delete(modelIndex);\n } else {\n newAdvancedFilters.set(modelIndex, {\n filter,\n options\n });\n }\n return {\n advancedFilters: newAdvancedFilters\n };\n });\n }\n\n /**\n * Sets a quick filter against the provided column\n * @param modelIndex The index in the model for the column this filter is applied to\n * @param filter A filter to apply to the column, or null if there was an error\n * @param text The original text the filter was created with\n */\n setQuickFilter(modelIndex, filter, text) {\n log.debug('Setting quick filter', modelIndex, filter, text);\n this.startLoading('Filtering...', {\n resetRanges: true\n });\n this.setState(_ref8 => {\n var {\n quickFilters\n } = _ref8;\n var newQuickFilters = new Map(quickFilters);\n newQuickFilters.set(modelIndex, {\n filter,\n text\n });\n return {\n quickFilters: newQuickFilters\n };\n });\n }\n\n /**\n * Set grid filters based on the filter map\n * @param filterMap Filter map\n */\n setFilterMap(filterMap) {\n var _advancedSettings$get2;\n log.debug('setFilterMap', filterMap);\n var {\n advancedSettings\n } = this.props;\n var clearFiltersOnLinkerFilterUpdate = (_advancedSettings$get2 = advancedSettings.get(AdvancedSettingsType.LINK_CHANGE_CLEARS_ALL_FILTERS)) !== null && _advancedSettings$get2 !== void 0 ? _advancedSettings$get2 : false;\n if (clearFiltersOnLinkerFilterUpdate) {\n this.clearAllFilters();\n }\n var {\n model\n } = this.props;\n filterMap.forEach((_ref9, columnName) => {\n var {\n columnType,\n filterList\n } = _ref9;\n var column = model.columns.find(c => c.name === columnName && c.type === columnType);\n if (column == null) {\n return;\n }\n var columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n var combinedText = IrisGridUtils.combineFiltersFromList(columnType, filterList);\n if (combinedText.length === 0) {\n this.removeQuickFilter(columnIndex);\n } else {\n var {\n formatter\n } = model;\n this.setQuickFilter(columnIndex, this.makeQuickFilter(column, combinedText, formatter.timeZone), \"\".concat(combinedText));\n }\n });\n }\n removeColumnFilter(modelRange) {\n this.startLoading('Filtering...', {\n resetRanges: true\n });\n var clearRange = Array.isArray(modelRange) ? modelRange : [modelRange, modelRange];\n this.setState(_ref10 => {\n var {\n advancedFilters,\n quickFilters\n } = _ref10;\n var newAdvancedFilters = advancedFilters ? new Map(advancedFilters) : new Map();\n var newQuickFilters = quickFilters ? new Map(quickFilters) : new Map();\n newAdvancedFilters.forEach((_, column) => {\n if (column >= clearRange[0] && column <= clearRange[1]) {\n newAdvancedFilters.delete(column);\n }\n });\n newQuickFilters.forEach((_, column) => {\n if (column >= clearRange[0] && column <= clearRange[1]) {\n newQuickFilters.delete(column);\n }\n });\n return {\n quickFilters: newQuickFilters,\n advancedFilters: newAdvancedFilters\n };\n });\n }\n removeQuickFilter(modelColumn) {\n this.startLoading('Clearing Filter...', {\n resetRanges: true\n });\n this.setState(_ref11 => {\n var {\n quickFilters\n } = _ref11;\n var newQuickFilters = new Map(quickFilters);\n newQuickFilters.delete(modelColumn);\n return {\n quickFilters: newQuickFilters\n };\n });\n }\n clearAllFilters() {\n log.debug('Clearing all filters');\n var {\n advancedFilters,\n quickFilters,\n searchFilter\n } = this.state;\n if (quickFilters.size === 0 && advancedFilters.size === 0 && searchFilter === null) {\n return;\n }\n\n // if there is an active quick filter input field, reset it as well\n this.clearGridInputField();\n this.startLoading('Clearing Filters...', {\n resetRanges: true\n });\n this.setState({\n quickFilters: new Map(),\n advancedFilters: new Map(),\n searchValue: '',\n searchFilter: undefined\n });\n }\n 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 var {\n columns,\n formatter\n } = model;\n log.debug('Rebuilding filters');\n var newAdvancedFilters = new Map();\n var newQuickFilters = new Map();\n advancedFilters.forEach((value, key) => {\n var {\n options\n } = value;\n var column = columns[key];\n var filter = this.tableUtils.makeAdvancedFilter(column, options, formatter.timeZone);\n newAdvancedFilters.set(key, {\n options,\n filter\n });\n });\n quickFilters.forEach((value, key) => {\n var {\n text\n } = value;\n var column = columns[key];\n newQuickFilters.set(key, {\n text,\n filter: this.makeQuickFilter(column, text, formatter.timeZone)\n });\n });\n this.startLoading('Rebuilding filters...', {\n resetRanges: true\n });\n this.setState({\n quickFilters: newQuickFilters,\n advancedFilters: newAdvancedFilters\n });\n }\n setFilters(_ref12) {\n var {\n quickFilters,\n advancedFilters\n } = _ref12;\n this.setState({\n quickFilters,\n advancedFilters\n });\n }\n updateFormatterSettings(settings) {\n var _settings$defaultDeci, _settings$defaultInte, _settings$truncateNum, _settings$showEmptySt, _settings$showNullStr, _settings$showExtraGr;\n var forceUpdate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var globalColumnFormats = FormatterUtils.getColumnFormats(settings);\n var dateTimeFormatterOptions = FormatterUtils.getDateTimeFormatterOptions(settings);\n var defaultDecimalFormatOptions = (_settings$defaultDeci = settings === null || settings === void 0 ? void 0 : settings.defaultDecimalFormatOptions) !== null && _settings$defaultDeci !== void 0 ? _settings$defaultDeci : {};\n var defaultIntegerFormatOptions = (_settings$defaultInte = settings === null || settings === void 0 ? void 0 : settings.defaultIntegerFormatOptions) !== null && _settings$defaultInte !== void 0 ? _settings$defaultInte : {};\n var truncateNumbersWithPound = (_settings$truncateNum = settings === null || settings === void 0 ? void 0 : settings.truncateNumbersWithPound) !== null && _settings$truncateNum !== void 0 ? _settings$truncateNum : false;\n var showEmptyStrings = (_settings$showEmptySt = settings === null || settings === void 0 ? void 0 : settings.showEmptyStrings) !== null && _settings$showEmptySt !== void 0 ? _settings$showEmptySt : true;\n var showNullStrings = (_settings$showNullStr = settings === null || settings === void 0 ? void 0 : settings.showNullStrings) !== null && _settings$showNullStr !== void 0 ? _settings$showNullStr : true;\n var showExtraGroupColumn = (_settings$showExtraGr = settings === null || settings === void 0 ? void 0 : settings.showExtraGroupColumn) !== null && _settings$showExtraGr !== void 0 ? _settings$showExtraGr : true;\n var isColumnFormatChanged = !deepEqual(this.globalColumnFormats, globalColumnFormats);\n var isDateFormattingChanged = !deepEqual(this.dateTimeFormatterOptions, dateTimeFormatterOptions);\n var isDecimalFormattingChanged = !deepEqual(this.decimalFormatOptions, settings === null || settings === void 0 ? void 0 : settings.defaultDecimalFormatOptions);\n var isIntegerFormattingChanged = !deepEqual(this.integerFormatOptions, defaultIntegerFormatOptions);\n var isTruncateNumbersChanged = this.truncateNumbersWithPound !== truncateNumbersWithPound;\n var isShowEmptyStringsChanged = this.showEmptyStrings !== showEmptyStrings;\n var isShowNullStringsChanged = this.showNullStrings !== showNullStrings;\n var isShowExtraGroupColumnChanged = this.showExtraGroupColumn !== showExtraGroupColumn;\n if (isColumnFormatChanged || isDateFormattingChanged || isDecimalFormattingChanged || isIntegerFormattingChanged || isTruncateNumbersChanged || isShowEmptyStringsChanged || isShowNullStringsChanged || isShowExtraGroupColumnChanged) {\n this.globalColumnFormats = globalColumnFormats;\n this.dateTimeFormatterOptions = dateTimeFormatterOptions;\n this.decimalFormatOptions = defaultDecimalFormatOptions;\n this.integerFormatOptions = defaultIntegerFormatOptions;\n this.truncateNumbersWithPound = truncateNumbersWithPound;\n this.showEmptyStrings = showEmptyStrings;\n this.showNullStrings = showNullStrings;\n this.showExtraGroupColumn = showExtraGroupColumn;\n this.updateFormatter({}, forceUpdate);\n if (isDateFormattingChanged && forceUpdate) {\n this.rebuildFilters();\n }\n }\n }\n updateFormatter(updatedFormats) {\n var _this$globalColumnFor;\n var forceUpdate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var {\n customColumnFormatMap\n } = this.state;\n var {\n model\n } = this.props;\n var update = _objectSpread({\n customColumnFormatMap\n }, updatedFormats);\n var mergedColumnFormats = [...((_this$globalColumnFor = this.globalColumnFormats) !== null && _this$globalColumnFor !== void 0 ? _this$globalColumnFor : []), ...update.customColumnFormatMap.values()];\n var formatter = new Formatter(model.dh, mergedColumnFormats, this.dateTimeFormatterOptions, this.decimalFormatOptions, this.integerFormatOptions, this.truncateNumbersWithPound, this.showEmptyStrings, this.showNullStrings);\n log.debug('updateFormatter', this.globalColumnFormats, mergedColumnFormats);\n this.setState(_objectSpread(_objectSpread({}, update), {}, {\n formatter\n }), () => {\n if (forceUpdate && this.grid) {\n this.grid.forceUpdate();\n }\n });\n }\n initFormatter() {\n var {\n settings\n } = this.props;\n this.updateFormatterSettings(settings);\n }\n initState() {\n var {\n model\n } = this.props;\n try {\n if (isPartitionedGridModel(model) && model.isPartitionRequired) {\n this.loadPartitionsTable(model);\n } else {\n this.loadTableState();\n }\n } catch (error) {\n this.handleTableLoadError(error);\n }\n }\n loadTableState() {\n var {\n applyInputFiltersOnInit,\n inputFilters,\n sorts,\n model,\n reverse,\n reverseType,\n customColumns,\n searchValue,\n selectedSearchColumns,\n invertSearchColumns\n } = this.props;\n var searchColumns = selectedSearchColumns !== null && selectedSearchColumns !== void 0 ? selectedSearchColumns : [];\n var searchFilter = CrossColumnSearch.createSearchFilter(model.dh, searchValue, searchColumns, model.columns, invertSearchColumns);\n if (applyInputFiltersOnInit) {\n // There may be more than one input filter on the same column with value === '' applied last\n // We don't want to skip it here, so only excluding the ones that were never applied (null)\n var inputFiltersWithValues = inputFilters.filter(inputFilter => inputFilter.value != null);\n this.applyInputFilters(inputFiltersWithValues);\n }\n this.setState({\n sorts,\n reverse: reverse || reverseType === TableUtils.REVERSE_TYPE.POST_SORT,\n customColumns,\n isReady: true,\n searchFilter\n });\n this.initFormatter();\n }\n loadPartitionsTable(model) {\n var _this = this;\n return _asyncToGenerator(function* () {\n try {\n var {\n partitionConfig\n } = _this.state;\n if (!partitionConfig) {\n _this.startLoading('Loading partitions...', {\n loadingCancelShown: false,\n resetRanges: true\n });\n _this.initializePartitionConfig(model);\n }\n _this.setState({\n isSelectingPartition: true\n }, _this.loadTableState);\n } catch (error) {\n if (!PromiseUtils.isCanceled(error)) {\n _this.handleTableLoadError(error);\n }\n }\n })();\n }\n\n /**\n * Initialize the partition config to the default partition.\n */\n initializePartitionConfig(model) {\n var _this2 = this;\n return _asyncToGenerator(function* () {\n var keyTable = yield _this2.pending.add(model.partitionKeysTable(), resolved => resolved.close());\n var {\n dh\n } = model;\n var sorts = keyTable.columns.map(column => column.sort().desc());\n keyTable.applySort(sorts);\n keyTable.setViewport(0, 0);\n\n // We want to wait for the first UPDATED event instead of just getting viewport data here\n // It's possible that the key table does not have any rows of data yet, so just wait until it does have one\n keyTable.addEventListener(dh.Table.EVENT_UPDATED, event => {\n try {\n var {\n detail: _data\n } = event;\n if (_data.rows.length === 0) {\n // We received an update and the table is still empty. Stop showing the loading spinner so we know\n _this2.stopLoading();\n return;\n }\n var row = _data.rows[0];\n var values = keyTable.columns.map(column => row.get(column));\n var newPartition = {\n partitions: values,\n mode: model.isPartitionAwareSourceTable ? 'partition' : 'keys'\n };\n keyTable.close();\n _this2.setState({\n loadingSpinnerShown: false,\n partitionConfig: newPartition\n });\n } catch (e) {\n keyTable.close();\n log.error('Error getting initial partition config', e);\n }\n });\n })();\n }\n\n /**\n * Selects a partition key from the table based on the provided row index.\n *\n * @param rowIndex The index of the row from which the partition will be selected.\n * @returns A promise that resolves when the partition key has been successfully selected.\n */\n selectPartitionKeyFromTable(rowIndex) {\n var {\n model\n } = this.props;\n assertNotNull(rowIndex);\n if (isPartitionedGridModel(model)) {\n var _data2 = this.getRowDataMap(rowIndex);\n var partitionColumnSet = new Set(model.partitionColumns.map(column => column.name));\n var values = Object.entries(_data2).filter(_ref13 => {\n var [key, _] = _ref13;\n return partitionColumnSet.has(key);\n }).map(_ref14 => {\n var [key, columnData] = _ref14;\n return columnData.value;\n });\n var newPartition = {\n partitions: values,\n mode: 'partition'\n };\n this.setState({\n isSelectingPartition: true,\n partitionConfig: newPartition\n });\n }\n }\n copyCell(columnIndex, rowIndex) {\n var rawValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var {\n canCopy\n } = this.props;\n if (canCopy) {\n var _value2 = String(this.getValueForCell(columnIndex, rowIndex, rawValue));\n copyToClipboard(_value2).catch(e => log.error('Unable to copy cell', e));\n } else {\n log.error('Attempted to copyCell for user without copy permission.');\n }\n }\n copyColumnHeader(columnIndex) {\n var columnDepth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n if (columnIndex === null) {\n return;\n }\n var {\n canCopy\n } = this.props;\n var {\n movedColumns\n } = this.state;\n if (canCopy) {\n var copyOperation = {\n columnIndex,\n columnDepth,\n movedColumns\n };\n this.setState({\n copyOperation\n });\n } else {\n log.error('Attempted copyColumnHeader for user without copy permission.');\n }\n }\n\n /**\n * Copy the provided ranges to the clipboard\n * @paramranges The ranges to copy\n * @param includeHeaders Include the headers or not\n * @param formatValues Whether to format values or not\n * @param error Error message if one occurred\n */\n copyRanges(ranges) {\n var includeHeaders = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var formatValues = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n var error = arguments.length > 3 ? arguments[3] : undefined;\n var {\n model,\n canCopy\n } = this.props;\n var {\n metricCalculator,\n movedColumns\n } = this.state;\n var userColumnWidths = metricCalculator.getUserColumnWidths();\n if (canCopy) {\n var copyOperation = {\n ranges: GridRange.boundedRanges(ranges, model.columnCount, model.rowCount),\n includeHeaders,\n formatValues,\n movedColumns,\n userColumnWidths,\n error\n };\n this.setState({\n copyOperation\n });\n } else {\n log.error('Attempted copyRanges for user without copy permission.');\n }\n }\n startLoading(loadingText) {\n var {\n resetRanges = false,\n loadingCancelShown = true,\n loadingBlocksGrid = true\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.setState({\n loadingText,\n loadingCancelShown,\n loadingBlocksGrid\n });\n var theme = this.getTheme();\n if (resetRanges && this.grid) {\n this.grid.clearSelectedRanges();\n this.grid.setViewState({\n top: 0\n }, true);\n }\n if (this.loadingScrimStartTime == null) {\n var _this$gridWrapper$get, _this$gridWrapper;\n var {\n minScrimTransitionTime,\n maxScrimTransitionTime\n } = theme;\n assertNotNull(minScrimTransitionTime);\n assertNotNull(maxScrimTransitionTime);\n var height = (_this$gridWrapper$get = (_this$gridWrapper = this.gridWrapper) === null || _this$gridWrapper === void 0 ? void 0 : _this$gridWrapper.getBoundingClientRect().height) !== null && _this$gridWrapper$get !== void 0 ? _this$gridWrapper$get : 0;\n var scrimTransitionTime = Math.max(minScrimTransitionTime, Math.min(height / 2, maxScrimTransitionTime));\n this.loadingScrimStartTime = Date.now();\n this.loadingScrimFinishTime = this.loadingScrimStartTime + scrimTransitionTime;\n this.setState({\n loadingScrimProgress: 0\n });\n this.loadingTimer = setTimeout(() => {\n this.setState({\n loadingSpinnerShown: true\n });\n }, IrisGrid.loadingSpinnerDelay);\n }\n }\n stopLoading() {\n this.showViewportLoading.cancel();\n this.loadingScrimStartTime = undefined;\n this.loadingScrimFinishTime = undefined;\n this.setState({\n loadingText: null,\n loadingScrimProgress: null,\n loadingSpinnerShown: false,\n loadingCancelShown: false\n });\n if (this.loadingTimer != null) {\n clearTimeout(this.loadingTimer);\n this.loadingTimer = undefined;\n }\n }\n\n /**\n * Rolls back the table state to the last known safe state, or if that's not available then clears all sorts/filters/custom columns.\n */\n rollback() {\n if (this.lastLoadedConfig) {\n log.debug('loading last loading config', this.lastLoadedConfig);\n var {\n advancedFilters,\n aggregationSettings,\n customColumns,\n quickFilters,\n reverse,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts\n } = this.lastLoadedConfig;\n this.lastLoadedConfig = null;\n this.setState({\n advancedFilters,\n aggregationSettings,\n customColumns,\n quickFilters,\n reverse,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts\n });\n } else {\n log.debug('remove all sorts, filters, and custom columns');\n this.setState({\n advancedFilters: new Map(),\n aggregationSettings: DEFAULT_AGGREGATION_SETTINGS,\n customColumns: [],\n quickFilters: new Map(),\n reverse: false,\n rollupConfig: undefined,\n selectDistinctColumns: [],\n sorts: []\n });\n }\n }\n\n /**\n * Check if we can rollback the current state to a safe state.\n * @returns true if there's a previously known safe state or if some of the current state isn't empty.\n */\n canRollback() {\n return this.lastLoadedConfig != null || !isEmptyConfig(this.state);\n }\n startListening(model) {\n model.addEventListener(IrisGridModel.EVENT.UPDATED, this.handleUpdate);\n model.addEventListener(IrisGridModel.EVENT.REQUEST_FAILED, this.handleRequestFailed);\n model.addEventListener(IrisGridModel.EVENT.COLUMNS_CHANGED, this.handleCustomColumnsChanged);\n model.addEventListener(IrisGridModel.EVENT.PENDING_DATA_UPDATED, this.handlePendingDataUpdated);\n model.addEventListener(IrisGridModel.EVENT.VIEWPORT_UPDATED, this.handleViewportUpdated);\n }\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 }\n focus() {\n var _this$grid2;\n (_this$grid2 = this.grid) === null || _this$grid2 === void 0 ? void 0 : _this$grid2.focus();\n }\n focusFilterBar(column) {\n var {\n movedColumns\n } = this.state;\n var {\n model\n } = this.props;\n var {\n columnCount\n } = model;\n var modelColumn = GridUtils.getModelIndex(column, movedColumns);\n if (column == null || column < 0 || columnCount <= column || !model.isFilterable(modelColumn)) {\n this.setState({\n focusedFilterBarColumn: null\n });\n return;\n }\n var {\n metricCalculator,\n metrics\n } = this.state;\n assertNotNull(metrics);\n var {\n left,\n rightVisible,\n lastLeft\n } = metrics;\n if (column < left) {\n var _this$grid3;\n (_this$grid3 = this.grid) === null || _this$grid3 === void 0 ? void 0 : _this$grid3.setViewState({\n left: column\n }, true);\n } else if (rightVisible < column) {\n var _this$grid4, _this$grid5;\n var metricState = (_this$grid4 = this.grid) === null || _this$grid4 === void 0 ? void 0 : _this$grid4.getMetricState();\n assertNotNull(metricState);\n var newLeft = metricCalculator.getLastLeft(metricState, column, metricCalculator.getVisibleWidth(metricState));\n (_this$grid5 = this.grid) === null || _this$grid5 === void 0 ? void 0 : _this$grid5.setViewState({\n left: Math.min(newLeft, lastLeft),\n leftOffset: 0\n }, true);\n }\n this.lastFocusedFilterBarColumn = column;\n this.setState({\n focusedFilterBarColumn: column,\n isFilterBarShown: true\n });\n }\n hideColumnByVisibleIndex(columnVisibleIndex) {\n var _this$grid6;\n var {\n metricCalculator,\n movedColumns\n } = this.state;\n metricCalculator.setColumnWidth(GridUtils.getModelIndex(columnVisibleIndex, movedColumns), 0);\n (_this$grid6 = this.grid) === null || _this$grid6 === void 0 ? void 0 : _this$grid6.forceUpdate();\n }\n freezeColumnByColumnName(columnName) {\n var {\n frozenColumns,\n movedColumns\n } = this.state;\n var {\n model\n } = this.props;\n log.debug2('freezing column', columnName);\n var allFrozenColumns = frozenColumns == null ? new Set(model.frozenColumns) : new Set(frozenColumns);\n allFrozenColumns.add(columnName);\n var modelIndex = model.getColumnIndexByName(columnName);\n assertNotNull(modelIndex);\n var visibleIndex = GridUtils.getVisibleIndex(modelIndex, movedColumns);\n var newMovedColumns = GridUtils.moveItem(visibleIndex, allFrozenColumns.size - 1, movedColumns);\n this.setState({\n frozenColumns: [...allFrozenColumns],\n movedColumns: newMovedColumns\n });\n }\n unFreezeColumnByColumnName(columnName) {\n var {\n frozenColumns,\n movedColumns\n } = this.state;\n var {\n model\n } = this.props;\n log.debug2('unfreezing column', columnName);\n var allFrozenColumns = frozenColumns == null ? new Set(model.frozenColumns) : new Set(frozenColumns);\n allFrozenColumns.delete(columnName);\n var modelIndex = model.getColumnIndexByName(columnName);\n assertNotNull(modelIndex);\n var visibleIndex = GridUtils.getVisibleIndex(modelIndex, movedColumns);\n\n // Move to after remaining frozen columns and front columns\n var newMovedColumns = GridUtils.moveItem(visibleIndex, allFrozenColumns.size + model.frontColumns.length, movedColumns);\n this.setState({\n frozenColumns: [...allFrozenColumns],\n movedColumns: newMovedColumns\n });\n }\n handleColumnVisibilityChanged(modelIndexes, isVisible) {\n var _this$grid7;\n var {\n metricCalculator,\n metrics\n } = this.state;\n assertNotNull(metrics);\n if (isVisible) {\n modelIndexes.forEach(modelIndex => {\n var defaultWidth = metricCalculator.initialColumnWidths.get(modelIndex);\n var calculatedWidth = getOrThrow(metrics.calculatedColumnWidths, modelIndex);\n if (defaultWidth !== calculatedWidth) {\n metricCalculator.setColumnWidth(modelIndex, calculatedWidth);\n } else {\n metricCalculator.resetColumnWidth(modelIndex);\n }\n });\n } else {\n modelIndexes.forEach(modelIndex => {\n metricCalculator.setColumnWidth(modelIndex, 0);\n });\n }\n (_this$grid7 = this.grid) === null || _this$grid7 === void 0 ? void 0 : _this$grid7.forceUpdate();\n }\n handleColumnVisibilityReset() {\n var _model$layoutHints$fr, _model$layoutHints2;\n var {\n metricCalculator,\n metrics\n } = this.state;\n var {\n model\n } = this.props;\n assertNotNull(metrics);\n for (var i = 0; i < metrics.columnCount; i += 1) {\n metricCalculator.resetColumnWidth(i);\n }\n this.handleMovedColumnsChanged(model.initialMovedColumns);\n this.handleHeaderGroupsChanged(model.initialColumnHeaderGroups);\n this.setState({\n frozenColumns: (_model$layoutHints$fr = (_model$layoutHints2 = model.layoutHints) === null || _model$layoutHints2 === void 0 ? void 0 : _model$layoutHints2.frozenColumns) !== null && _model$layoutHints$fr !== void 0 ? _model$layoutHints$fr : []\n });\n }\n handleCrossColumnSearch(searchValue, selectedSearchColumns, invertSearchColumns) {\n var {\n model\n } = this.props;\n this.startLoading('Searching...');\n this.updateSearchFilter(searchValue, selectedSearchColumns, model.columns, invertSearchColumns);\n this.setState({\n searchValue,\n selectedSearchColumns,\n invertSearchColumns\n });\n }\n handleAnimationLoop() {\n var _this$grid8;\n (_this$grid8 = this.grid) === null || _this$grid8 === void 0 ? void 0 : _this$grid8.updateCanvas();\n if (this.isAnimating) {\n this.animationFrame = requestAnimationFrame(this.handleAnimationLoop);\n }\n }\n handleAnimationStart() {\n log.debug2('handleAnimationStart');\n this.isAnimating = true;\n this.animationFrame = requestAnimationFrame(this.handleAnimationLoop);\n }\n handleAnimationEnd() {\n log.debug2('handleAnimationEnd');\n this.isAnimating = false;\n }\n handlePartitionChange(partitionConfig) {\n this.startLoading('Partitioning...');\n var {\n partitionConfig: prevConfig\n } = this.state;\n if (prevConfig !== partitionConfig) {\n this.setState({\n partitionConfig\n });\n }\n }\n handleTableLoadError(error) {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n log.error(error);\n var {\n onError\n } = this.props;\n onError(error);\n }\n handleViewportUpdated() {\n var {\n model\n } = this.props;\n var {\n loadingText,\n loadingSpinnerShown\n } = this.state;\n var loadingMessage = 'Waiting for viewport...';\n\n // pending and no timer already exists\n if (model.isViewportPending && !loadingSpinnerShown) {\n this.showViewportLoading();\n } else if (loadingText === loadingMessage && !model.isViewportPending) {\n // extra conditions because timeout might get cleared by update\n this.stopLoading();\n }\n }\n showAllColumns() {\n var _this$grid9;\n var {\n metricCalculator\n } = this.state;\n var userColumnWidths = metricCalculator.getUserColumnWidths();\n var entries = [...userColumnWidths.entries()];\n for (var i = 0; i < entries.length; i += 1) {\n var [modelIndex, columnWidth] = entries[i];\n if (columnWidth === 0) {\n metricCalculator.resetColumnWidth(modelIndex);\n }\n }\n (_this$grid9 = this.grid) === null || _this$grid9 === void 0 ? void 0 : _this$grid9.forceUpdate();\n }\n 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$grid10;\n this.startLoading('Sorting...');\n this.setState({\n sorts\n });\n (_this$grid10 = this.grid) === null || _this$grid10 === void 0 ? void 0 : _this$grid10.forceUpdate();\n }\n sortColumn(modelColumn) {\n var _this$grid11;\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$grid11 = this.grid) === null || _this$grid11 === void 0 ? void 0 : _this$grid11.forceUpdate();\n }\n reverse(reverse) {\n var _this$grid12;\n this.startLoading('Reversing...');\n this.setState({\n reverse\n });\n (_this$grid12 = this.grid) === null || _this$grid12 === void 0 ? void 0 : _this$grid12.forceUpdate();\n }\n isReversible() {\n var {\n model\n } = this.props;\n return model.isReversible;\n }\n toggleFilterBar() {\n var focusIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.lastFocusedFilterBarColumn;\n var {\n isFilterBarShown\n } = this.state;\n isFilterBarShown = !isFilterBarShown;\n this.setState({\n isFilterBarShown\n });\n if (isFilterBarShown) {\n if (focusIndex != null) {\n this.focusFilterBar(focusIndex);\n } else {\n var columnIndex = 0;\n var {\n model: _model2\n } = this.props;\n var {\n columnCount\n } = _model2;\n for (var i = 0; i < columnCount; i += 1) {\n var modelColumn = this.getModelColumn(i);\n if (modelColumn != null) {\n var _column = _model2.columns[modelColumn];\n if (_column != null && TableUtils.isTextType(_column.type)) {\n columnIndex = i;\n break;\n }\n }\n }\n this.focusFilterBar(columnIndex);\n }\n } else {\n var _this$grid13;\n (_this$grid13 = this.grid) === null || _this$grid13 === void 0 ? void 0 : _this$grid13.focus();\n }\n }\n isTableSearchAvailable() {\n var _model$layoutHints3, _dh$SearchDisplayMode, _dh$SearchDisplayMode2;\n var {\n model,\n canToggleSearch\n } = this.props;\n var {\n dh\n } = model;\n var searchDisplayMode = model === null || model === void 0 ? void 0 : (_model$layoutHints3 = model.layoutHints) === null || _model$layoutHints3 === void 0 ? void 0 : _model$layoutHints3.searchDisplayMode;\n if (searchDisplayMode === ((_dh$SearchDisplayMode = dh.SearchDisplayMode) === null || _dh$SearchDisplayMode === void 0 ? void 0 : _dh$SearchDisplayMode.SEARCH_DISPLAY_HIDE)) {\n return false;\n }\n if (searchDisplayMode === ((_dh$SearchDisplayMode2 = dh.SearchDisplayMode) === null || _dh$SearchDisplayMode2 === void 0 ? void 0 : _dh$SearchDisplayMode2.SEARCH_DISPLAY_SHOW)) {\n return true;\n }\n return canToggleSearch;\n }\n toggleSearchBar() {\n var {\n showSearchBar\n } = this.state;\n if (!this.isTableSearchAvailable()) {\n return;\n }\n var update = !showSearchBar;\n this.setState({\n showSearchBar: update\n }, () => {\n var _this$crossColumnRef;\n if (update && (_this$crossColumnRef = this.crossColumnRef) !== null && _this$crossColumnRef !== void 0 && _this$crossColumnRef.current) {\n var _this$crossColumnRef2;\n (_this$crossColumnRef2 = this.crossColumnRef) === null || _this$crossColumnRef2 === void 0 ? void 0 : _this$crossColumnRef2.current.focus();\n } else {\n var _this$grid14;\n (_this$grid14 = this.grid) === null || _this$grid14 === void 0 ? void 0 : _this$grid14.focus();\n }\n });\n }\n toggleGotoRow() {\n var _this$grid15, _this$grid16;\n var row = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var value = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var columnName = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n var {\n isGotoShown\n } = this.state;\n if (row || value) {\n var _this$gotoRowRef$curr;\n // if invoked with a row, keep open instead of toggle\n this.setState({\n isGotoShown: true,\n gotoValue: value,\n gotoValueSelectedColumnName: columnName,\n gotoRowError: '',\n gotoValueError: '',\n gotoValueManuallyChanged: false\n });\n this.focusRowInGrid(row);\n (_this$gotoRowRef$curr = this.gotoRowRef.current) === null || _this$gotoRowRef$curr === void 0 ? void 0 : _this$gotoRowRef$curr.focus();\n return;\n }\n var cursorRow = (_this$grid15 = this.grid) === null || _this$grid15 === void 0 ? void 0 : _this$grid15.state.cursorRow;\n var cursorColumn = (_this$grid16 = this.grid) === null || _this$grid16 === void 0 ? void 0 : _this$grid16.state.cursorColumn;\n if (cursorRow == null || cursorColumn == null) {\n // if a cell is not selected / grid is not rendered\n this.setState({\n isGotoShown: !isGotoShown,\n gotoRow: '',\n gotoValue: '',\n gotoRowError: '',\n gotoValueError: '',\n gotoValueManuallyChanged: false\n });\n return;\n }\n // if a row is selected\n var {\n model\n } = this.props;\n var {\n name,\n type\n } = model.columns[cursorColumn];\n var cellValue = model.valueForCell(cursorColumn, cursorRow);\n var text = IrisGridUtils.convertValueToText(cellValue, type);\n this.setState({\n isGotoShown: !isGotoShown,\n gotoRow: \"\".concat(cursorRow + 1),\n gotoValue: text,\n gotoValueSelectedColumnName: name,\n gotoRowError: '',\n gotoValueError: '',\n gotoValueManuallyChanged: false\n });\n }\n commitPending() {\n var _this3 = this;\n return _asyncToGenerator(function* () {\n var _document, _document$activeEleme;\n var {\n model\n } = _this3.props;\n if (!isEditableGridModel(model) || !model.isEditable) {\n throw new Error('Cannot save, table is not editable');\n }\n var {\n pendingSavePromise\n } = _this3.state;\n if (pendingSavePromise != null) {\n throw new Error('Save already in progress');\n }\n var containsGridCellInputField = (_document = document) === null || _document === void 0 ? void 0 : (_document$activeEleme = _document.activeElement) === null || _document$activeEleme === void 0 ? void 0 : _document$activeEleme.classList.contains('grid-cell-input-field');\n if (containsGridCellInputField != null && containsGridCellInputField) {\n var _this3$grid;\n if (document.activeElement != null && document.activeElement.classList.contains('error')) {\n throw new ValidationError('Current input is invalid');\n }\n\n // Focus the grid again to commit any pending input changes\n (_this3$grid = _this3.grid) === null || _this3$grid === void 0 ? void 0 : _this3$grid.focus();\n }\n var newPendingSavePromise = _this3.pending.add(model.commitPending()).then(() => {\n _this3.setState({\n pendingSaveError: null,\n pendingSavePromise: null\n });\n }).catch(err => {\n if (!PromiseUtils.isCanceled(err)) {\n _this3.setState({\n pendingSaveError: err,\n pendingSavePromise: null\n });\n }\n });\n _this3.setState({\n pendingSavePromise: newPendingSavePromise\n });\n return newPendingSavePromise;\n })();\n }\n discardPending() {\n var _this4 = this;\n return _asyncToGenerator(function* () {\n var {\n pendingSavePromise\n } = _this4.state;\n if (pendingSavePromise != null) {\n throw new Error('Cannot cancel a save in progress');\n }\n _this4.setState({\n pendingSavePromise: null,\n pendingSaveError: null,\n pendingDataMap: new Map(),\n pendingDataErrors: new Map()\n });\n })();\n }\n\n /**\n * Select the passed in column and notify listener\n * @param column The column in this table to link\n */\n selectColumn(column) {\n var {\n onColumnSelected\n } = this.props;\n onColumnSelected(column);\n }\n\n /**\n * Get the row data map for a given row and notifies the listener\n */\n selectData(columnIndex, rowIndex) {\n var dataMap = this.getRowDataMap(rowIndex);\n var {\n onDataSelected\n } = this.props;\n onDataSelected(rowIndex, dataMap);\n }\n\n /**\n * Get the data map for the given row\n * @param rowIndex Row to get the data map for\n * @returns Data map for the row\n */\n getRowDataMap(rowIndex) {\n var _this5 = this;\n var {\n model\n } = this.props;\n var {\n columns,\n groupedColumns\n } = model;\n var dataMap = {};\n var _loop = function _loop() {\n var column = columns[i];\n var {\n name,\n type\n } = column;\n var value = model.valueForCell(i, rowIndex);\n var text = model.textForCell(i, rowIndex);\n var visibleIndex = _this5.getVisibleColumn(i);\n var isExpandable = isExpandableGridModel(model) && model.isRowExpandable(rowIndex);\n var isGrouped = groupedColumns.find(c => c.name === name) != null;\n dataMap[name] = {\n value,\n text,\n type,\n isGrouped,\n isExpandable,\n visibleIndex\n };\n };\n for (var i = 0; i < columns.length; i += 1) {\n _loop();\n }\n return dataMap;\n }\n handleAdvancedFilterChange(column, filter, options) {\n var {\n model\n } = this.props;\n var index = model.getColumnIndexByName(column.name);\n assertNotNull(index);\n this.setAdvancedFilter(index, filter, options);\n }\n handleAdvancedFilterSortChange(column, direction) {\n var _this$grid17;\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$grid17 = this.grid) === null || _this$grid17 === void 0 ? void 0 : _this$grid17.forceUpdate();\n }\n handleAdvancedFilterDone() {\n var _this$grid18;\n (_this$grid18 = this.grid) === null || _this$grid18 === void 0 ? void 0 : _this$grid18.focus();\n }\n handleAdvancedMenuOpened(column) {\n this.setState({\n shownAdvancedFilter: column\n });\n }\n handleGotoRowOpened() {\n this.setState({\n isGotoShown: true,\n gotoValueManuallyChanged: false\n });\n }\n handleGotoRowClosed() {\n this.setState({\n isGotoShown: false,\n gotoValueManuallyChanged: false\n });\n }\n handleAdvancedMenuClosed(columnIndex) {\n var _this$filterInputRef;\n var {\n focusedFilterBarColumn,\n isFilterBarShown\n } = this.state;\n if (isFilterBarShown && focusedFilterBarColumn === columnIndex && ((_this$filterInputRef = this.filterInputRef) === null || _this$filterInputRef === void 0 ? void 0 : _this$filterInputRef.current) !== null) {\n var _this$filterInputRef2;\n (_this$filterInputRef2 = this.filterInputRef) === null || _this$filterInputRef2 === void 0 ? void 0 : _this$filterInputRef2.current.focus();\n this.setState({\n shownAdvancedFilter: null\n });\n } else {\n this.setState({\n focusedFilterBarColumn: null,\n shownAdvancedFilter: null\n });\n }\n }\n handleCancel() {\n this.rollback();\n }\n\n // eslint-disable-next-line class-methods-use-this\n handleChartChange() {\n // TODO: IDS-4242 Update Chart Preview\n }\n handleChartCreate(settings) {\n var {\n model,\n onCreateChart\n } = this.props;\n onCreateChart(settings, model);\n }\n handleGridError(error) {\n log.warn('Grid Error', error);\n this.setState({\n toastMessage: /*#__PURE__*/_jsx(\"div\", {\n className: \"error-message\",\n children: \"\".concat(error)\n })\n });\n }\n handleFilterBarChange(value) {\n this.startLoading('Filtering...', {\n resetRanges: true\n });\n this.setState(_ref15 => {\n var {\n focusedFilterBarColumn,\n quickFilters\n } = _ref15;\n var newQuickFilters = new Map(quickFilters);\n if (focusedFilterBarColumn != null) {\n var modelIndex = this.getModelColumn(focusedFilterBarColumn);\n assertNotNull(modelIndex);\n this.applyQuickFilter(modelIndex, value, newQuickFilters);\n }\n return {\n quickFilters: newQuickFilters\n };\n });\n }\n handleFilterBarDone() {\n var setGridFocus = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n var defocusInput = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n if (setGridFocus) {\n var _this$grid19;\n (_this$grid19 = this.grid) === null || _this$grid19 === void 0 ? void 0 : _this$grid19.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 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(_ref16 => {\n var {\n openOptions\n } = _ref16;\n var newOptions = [...openOptions];\n newOptions.pop();\n return {\n openOptions: newOptions\n };\n });\n }\n handleMenuSelect(option) {\n this.setState(_ref17 => {\n var {\n openOptions\n } = _ref17;\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$grid20;\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$grid20 = this.grid) === null || _this$grid20 === void 0 ? void 0 : _this$grid20.forceUpdate();\n this.stopLoading();\n }\n handleViewChanged(metrics) {\n var _this$grid$state, _this$grid21;\n var {\n model\n } = this.props;\n var {\n selectionEndRow = 0\n } = (_this$grid$state = (_this$grid21 = this.grid) === null || _this$grid21 === void 0 ? void 0 : _this$grid21.state) !== null && _this$grid$state !== void 0 ? _this$grid$state : {};\n var pendingRowCount = 0;\n if (isEditableGridModel(model) && model.isEditable) {\n assertNotNull(metrics);\n var {\n bottomViewport\n } = metrics;\n\n // We have an editable table that we can add new rows to\n // Display empty rows beneath the table rows that user can fill in\n var bottomNonFloating = model.rowCount - model.floatingBottomRowCount;\n if (selectionEndRow === bottomNonFloating - 1) {\n // Selection is in the last row, add another blank row\n pendingRowCount = model.pendingRowCount + 1;\n } else if (selectionEndRow === bottomNonFloating - 2) {\n // We may have just added a row based on selection moving, so just leave it as is\n pendingRowCount = model.pendingRowCount;\n } else {\n // Otherwise fill up the viewport with empty cells\n pendingRowCount = Math.max(0, bottomViewport - (model.rowCount - model.pendingRowCount) - model.floatingTopRowCount - model.floatingBottomRowCount - 1);\n }\n }\n this.setState({\n metrics,\n pendingRowCount\n });\n }\n handleSelectionChanged(selectedRanges) {\n var _this$grid22;\n assertNotNull(selectedRanges);\n var {\n onSelectionChanged\n } = this.props;\n var {\n copyOperation\n } = this.state;\n this.setState({\n selectedRanges\n });\n if (copyOperation != null) {\n this.setState({\n copyOperation: null\n });\n }\n if (((_this$grid22 = this.grid) === null || _this$grid22 === void 0 ? void 0 : _this$grid22.state.cursorRow) != null) {\n this.setState({\n gotoRow: \"\".concat(this.grid.state.cursorRow + 1)\n });\n }\n onSelectionChanged(selectedRanges);\n }\n handleMovedColumnsChanged(movedColumns, onChangeApplied) {\n this.setState({\n movedColumns\n }, onChangeApplied);\n }\n handleHeaderGroupsChanged(columnHeaderGroups) {\n var {\n model\n } = this.props;\n this.setState({\n columnHeaderGroups: IrisGridUtils.parseColumnHeaderGroups(model, columnHeaderGroups).groups\n }, () => {\n var _this$grid23;\n return (_this$grid23 = this.grid) === null || _this$grid23 === void 0 ? void 0 : _this$grid23.forceUpdate();\n });\n }\n handleTooltipRef(tooltip) {\n // Need to start the timer right away, since we're creating the tooltip when we want the timer to start\n if (tooltip != null) {\n tooltip.startTimer();\n }\n this.tooltip = tooltip;\n }\n handleConditionalFormatsChange(conditionalFormats) {\n log.debug('Updated conditional formats', conditionalFormats);\n this.setState({\n conditionalFormats\n });\n }\n handleConditionalFormatCreate() {\n log.debug('Create new conditional format');\n var {\n openOptions,\n conditionalFormats\n } = this.state;\n this.setState({\n openOptions: [...openOptions, {\n type: OptionType.CONDITIONAL_FORMATTING_EDIT,\n title: \"Create Formatting Rule\"\n }],\n conditionalFormatEditIndex: conditionalFormats.length,\n // Start with a blank rule\n conditionalFormatPreview: undefined\n });\n }\n handleConditionalFormatEdit(index) {\n log.debug('Edit conditional format', index);\n var {\n openOptions,\n conditionalFormats\n } = this.state;\n this.setState({\n openOptions: [...openOptions, {\n type: OptionType.CONDITIONAL_FORMATTING_EDIT,\n title: \"Edit Formatting Rule\"\n }],\n conditionalFormatEditIndex: index,\n // Clone rule to preview temporary changes\n conditionalFormatPreview: _objectSpread({}, conditionalFormats[index])\n });\n }\n\n // Apply live changes\n\n handleConditionalFormatEditorSave(config) {\n log.debug('Save conditional format changes', config);\n this.setState(state => {\n if (state.conditionalFormatEditIndex === null) {\n log.debug('Invalid format index');\n return null;\n }\n var conditionalFormats = [...state.conditionalFormats];\n conditionalFormats[state.conditionalFormatEditIndex] = config;\n return {\n conditionalFormats\n };\n }, () => {\n this.handleMenuBack();\n });\n }\n handleConditionalFormatEditorCancel() {\n this.handleMenuBack();\n // Not resetting conditionalFormatPreview here\n // to prevent editor fields change during the menu transition\n this.setState({\n conditionalFormatEditIndex: null\n });\n }\n handleUpdateCustomColumns(customColumns) {\n log.info(\"handleUpdateCustomColumns:\", customColumns);\n var {\n model\n } = this.props;\n var {\n movedColumns,\n sorts,\n quickFilters,\n advancedFilters,\n selectDistinctColumns\n } = this.state;\n var {\n columns\n } = model;\n var oldCustomColumns = model.customColumns.map(customColumn => \"\".concat(customColumn));\n var removedColumnNames = IrisGridUtils.getRemovedCustomColumnNames(oldCustomColumns, customColumns);\n if (removedColumnNames.length > 0) {\n var newSorts = IrisGridUtils.removeSortsInColumns(sorts, removedColumnNames);\n var newQuickFilters = IrisGridUtils.removeFiltersInColumns(columns, quickFilters, removedColumnNames);\n var newAdvancedFilters = IrisGridUtils.removeFiltersInColumns(columns, advancedFilters, removedColumnNames);\n var newMovedColumns = IrisGridUtils.removeColumnFromMovedColumns(columns, movedColumns, removedColumnNames);\n var newSelectDistinctColumns = IrisGridUtils.removeColumnsFromSelectDistinctColumns(selectDistinctColumns, removedColumnNames);\n if (newSorts.length !== sorts.length) {\n log.debug('removing sorts from removed custom columns...');\n this.setState({\n sorts: newSorts\n });\n }\n if (newQuickFilters.size !== quickFilters.size || newAdvancedFilters.size !== advancedFilters.size) {\n log.debug(\"removing filters from removed custom columns...\");\n this.setState({\n quickFilters: newQuickFilters,\n advancedFilters: newAdvancedFilters\n });\n }\n if (!deepEqual(movedColumns, newMovedColumns)) {\n log.debug(\"change moved columns for removed custom columns\", newMovedColumns);\n this.setState({\n movedColumns: newMovedColumns\n });\n }\n if (!deepEqual(selectDistinctColumns, newSelectDistinctColumns)) {\n log.debug(\"change selectDistinct columns for removed custom columns\", newMovedColumns);\n this.setState({\n selectDistinctColumns: newSelectDistinctColumns\n });\n }\n }\n this.setState({\n customColumns\n });\n if (customColumns.length > 0) {\n // If there are no custom columns, the change handler never fires\n // This causes the loader to stay until canceled by the user\n this.startLoading('Applying custom columns...');\n }\n }\n handleCustomColumnsChanged() {\n log.debug('custom columns changed');\n var {\n isReady\n } = this.state;\n if (isReady) {\n var _this$grid24;\n this.stopLoading();\n (_this$grid24 = this.grid) === null || _this$grid24 === void 0 ? void 0 : _this$grid24.forceUpdate();\n } else {\n this.loadTableState();\n }\n }\n handlePendingCommitClicked() {\n return this.commitPending();\n }\n handlePendingDiscardClicked() {\n return this.discardPending();\n }\n handlePendingDataUpdated() {\n var _this$grid25;\n log.debug('pending data updated');\n var {\n model\n } = this.props;\n var {\n pendingDataMap,\n pendingDataErrors\n } = model;\n this.setState({\n pendingDataMap,\n pendingDataErrors,\n pendingSaveError: null\n });\n (_this$grid25 = this.grid) === null || _this$grid25 === void 0 ? void 0 : _this$grid25.forceUpdate();\n }\n\n /**\n * User added, removed, or changed the order of aggregations, or position\n * @param aggregationSettings The new aggregation settings\n */\n handleAggregationsChange(aggregationSettings) {\n log.debug('handleAggregationsChange', aggregationSettings);\n this.startLoading(\"Aggregating \".concat(aggregationSettings.aggregations.map(a => a.operation).join(', '), \"...\"));\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 log.debug('handleAggregationChange', aggregation);\n this.startLoading(\"Aggregating \".concat(aggregation.operation, \"...\"));\n this.setState(_ref18 => {\n var {\n aggregationSettings\n } = _ref18;\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$columns, _rollupConfig$columns2;\n log.info('Rollup change', rollupConfig);\n this.resetGridViewState();\n this.showAllColumns();\n this.clearAllFilters();\n this.startLoading(\"Grouping by columns \".concat((_rollupConfig$columns = rollupConfig === null || rollupConfig === void 0 ? void 0 : (_rollupConfig$columns2 = rollupConfig.columns) === null || _rollupConfig$columns2 === void 0 ? void 0 : _rollupConfig$columns2.join(', ')) !== null && _rollupConfig$columns !== void 0 ? _rollupConfig$columns : '', \"...\"));\n\n // Have to clear select distinct since rollup uses the original columns, not the current ones.\n // IrisGridProxyModel has a check to prevent model update\n // when selectDistinctModel is cleared and the rollupConfig is set on the model.\n this.setState({\n rollupConfig,\n movedColumns: [],\n frozenColumns: [],\n sorts: [],\n reverse: false,\n selectDistinctColumns: []\n });\n }\n handleSelectDistinctChanged(columnNames) {\n log.debug('SelectDistinct change', columnNames);\n this.resetGridViewState();\n this.showAllColumns();\n this.clearAllFilters();\n this.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(_ref19 => {\n var {\n aggregationSettings\n } = _ref19;\n var {\n aggregations\n } = aggregationSettings;\n var newAggregations = aggregations.filter(a => a.selected.length > 0 || a.invert);\n if (newAggregations.length !== aggregations.length) {\n return {\n selectedAggregation: null,\n aggregationSettings: _objectSpread(_objectSpread({}, aggregationSettings), {}, {\n aggregations: newAggregations\n })\n };\n }\n return {\n selectedAggregation: null,\n aggregationSettings\n };\n });\n }\n seekRow(inputString) {\n var _arguments = arguments,\n _this6 = this;\n return _asyncToGenerator(function* () {\n var _this6$grid;\n var isBackwards = _arguments.length > 1 && _arguments[1] !== undefined ? _arguments[1] : false;\n var {\n gotoValueSelectedColumnName: selectedColumnName,\n gotoValueSelectedFilter\n } = _this6.state;\n var {\n model\n } = _this6.props;\n var {\n dh\n } = model;\n if (!model.isSeekRowAvailable) {\n return;\n }\n if (inputString === '') {\n return;\n }\n var selectedColumn = IrisGridUtils.getColumnByName(model.columns, selectedColumnName);\n if (selectedColumn === undefined) {\n return;\n }\n var searchFromRow = (_this6$grid = _this6.grid) === null || _this6$grid === void 0 ? void 0 : _this6$grid.state.cursorRow;\n if (searchFromRow == null) {\n searchFromRow = 0;\n }\n var isContains = gotoValueSelectedFilter === FilterType.contains || gotoValueSelectedFilter === FilterType.containsIgnoreCase;\n var isIgnoreCase = gotoValueSelectedFilter === FilterType.eqIgnoreCase || gotoValueSelectedFilter === FilterType.containsIgnoreCase;\n try {\n var _this6$grid2;\n var {\n formatter\n } = model;\n var columnDataType = TableUtils.getNormalizedType(selectedColumn.type);\n var rowIndex;\n switch (columnDataType) {\n case TableUtils.dataType.CHAR:\n case TableUtils.dataType.STRING:\n {\n rowIndex = yield model.seekRow(searchFromRow, selectedColumn, dh.ValueType.STRING, inputString, isIgnoreCase, isContains, isBackwards !== null && isBackwards !== void 0 ? isBackwards : false);\n break;\n }\n case TableUtils.dataType.DATETIME:\n {\n var [startDate] = DateUtils.parseDateRange(dh, inputString, formatter.timeZone);\n rowIndex = yield model.seekRow(searchFromRow, selectedColumn, dh.ValueType.DATETIME, startDate, undefined, undefined, isBackwards !== null && isBackwards !== void 0 ? isBackwards : false);\n break;\n }\n case TableUtils.dataType.DECIMAL:\n case TableUtils.dataType.INT:\n {\n if (!TableUtils.isBigDecimalType(selectedColumn.type) && !TableUtils.isBigIntegerType(selectedColumn.type)) {\n var inputValue = parseInt(inputString, 10);\n if (inputString === '-Infinity') {\n inputValue = Number.NEGATIVE_INFINITY;\n } else if (inputString === 'Infinity') {\n inputValue = Number.POSITIVE_INFINITY;\n }\n rowIndex = yield model.seekRow(searchFromRow, selectedColumn, dh.ValueType.NUMBER, inputValue, undefined, undefined, isBackwards !== null && isBackwards !== void 0 ? isBackwards : false);\n } else {\n rowIndex = yield model.seekRow(searchFromRow, selectedColumn, dh.ValueType.STRING, inputString, undefined, undefined, isBackwards !== null && isBackwards !== void 0 ? isBackwards : false);\n }\n break;\n }\n default:\n {\n rowIndex = yield model.seekRow(searchFromRow, selectedColumn, dh.ValueType.STRING, _this6.tableUtils.makeValue(selectedColumn.type, inputString, formatter.timeZone), undefined, undefined, isBackwards !== null && isBackwards !== void 0 ? isBackwards : false);\n }\n }\n (_this6$grid2 = _this6.grid) === null || _this6$grid2 === void 0 ? void 0 : _this6$grid2.setFocusRow(rowIndex);\n _this6.setState({\n gotoValueError: ''\n });\n } catch (e) {\n _this6.setState({\n gotoValueError: 'invalid input'\n });\n }\n })();\n }\n handleCancelDownloadTable() {\n var _this$tableSaver;\n (_this$tableSaver = this.tableSaver) === null || _this$tableSaver === void 0 ? void 0 : _this$tableSaver.cancelDownload();\n this.setState({\n isTableDownloading: false\n });\n }\n handleDownloadCompleted() {\n this.setState({\n isTableDownloading: false,\n tableDownloadProgress: 100,\n tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.FINISHED\n });\n }\n handleDownloadCanceled() {\n this.setState({\n isTableDownloading: false,\n tableDownloadProgress: 0,\n tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.CANCELED\n });\n }\n\n /**\n * Delete the specified ranges from the table.\n * @param ranges The ranges to delete\n */\n deleteRanges(ranges) {\n var {\n model\n } = this.props;\n if (!isDeletableGridModel(model) || !model.isDeletable) {\n throw new Error('Model does not support deleting ranges');\n }\n this.pending.add(model.delete(ranges)).catch(e => {\n if (!PromiseUtils.isCanceled(e)) {\n log.error('Unable to delete ranges', ranges, e);\n }\n });\n }\n resetColumnSelection() {\n if (this.grid == null) {\n return;\n }\n var {\n isSelectingColumn\n } = this.props;\n if (isSelectingColumn) {\n var {\n columnAllowedCursor\n } = this.props;\n this.grid.setState({\n cursor: columnAllowedCursor\n });\n } else {\n this.grid.setState({\n cursor: null\n });\n this.setState({\n hoverSelectColumn: null\n });\n }\n }\n resetGridViewState() {\n var forceUpdate = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n if (!this.grid) {\n return;\n }\n this.grid.clearSelectedRanges();\n this.grid.setViewState({\n left: 0,\n top: 0,\n topOffset: 0,\n leftOffset: 0\n }, forceUpdate);\n }\n sendStateChange() {\n if (!this.grid) {\n return;\n }\n var {\n state: irisGridState\n } = this;\n var {\n state: gridState\n } = this.grid;\n var {\n onStateChange\n } = this.props;\n onStateChange(irisGridState, gridState);\n }\n handleOverflowClose() {\n this.setState({\n showOverflowModal: false\n });\n }\n handleOpenNoPastePermissionModal(errorMessage) {\n this.setState({\n showNoPastePermissionModal: true,\n noPastePermissionError: errorMessage\n });\n }\n handleCloseNoPastePermissionModal() {\n this.setState({\n showNoPastePermissionModal: false\n });\n }\n getColumnBoundingRect() {\n var _this$gridWrapper2;\n var {\n metrics,\n shownColumnTooltip\n } = this.state;\n assertNotNull(metrics);\n assertNotNull(shownColumnTooltip);\n var gridRect = (_this$gridWrapper2 = this.gridWrapper) === null || _this$gridWrapper2 === void 0 ? void 0 : _this$gridWrapper2.getBoundingClientRect();\n var popperMargin = 20;\n assertNotNull(gridRect);\n var {\n columnHeaderHeight,\n allColumnXs,\n allColumnWidths,\n width,\n columnHeaderMaxDepth\n } = metrics;\n var columnX = allColumnXs.get(shownColumnTooltip);\n var columnWidth = allColumnWidths.get(shownColumnTooltip);\n assertNotNull(columnX);\n assertNotNull(columnWidth);\n var left = gridRect.left + clamp(columnX + columnWidth / 2, popperMargin, width - popperMargin);\n return {\n top: gridRect.top + (columnHeaderMaxDepth - 1) * columnHeaderHeight,\n left: gridRect.left + clamp(columnX + columnWidth / 2, popperMargin, width - popperMargin),\n bottom: gridRect.top + columnHeaderMaxDepth * columnHeaderHeight,\n right: gridRect.left + clamp(columnX + columnWidth / 2, popperMargin, width - popperMargin) + 1,\n width: 1,\n height: columnHeaderHeight,\n x: left,\n y: gridRect.top,\n toJSON: () => {\n throw new Error('not implemented');\n }\n };\n }\n handleGotoRowSelectedRowNumberSubmit() {\n var {\n gotoRow: rowNumber\n } = this.state;\n this.focusRowInGrid(rowNumber);\n }\n focusRowInGrid(rowNumber) {\n var {\n model\n } = this.props;\n var {\n rowCount\n } = model;\n this.setState({\n gotoRow: rowNumber\n });\n if (rowNumber === '') {\n this.setState({\n gotoRowError: '',\n gotoValueError: ''\n });\n return;\n }\n var rowInt = parseInt(rowNumber, 10);\n if (rowInt > rowCount || rowInt < -rowCount) {\n this.setState({\n gotoRowError: 'Invalid row index'\n });\n } else if (rowInt === 0) {\n var _this$grid26;\n this.setState({\n gotoRowError: '',\n gotoValueError: ''\n });\n (_this$grid26 = this.grid) === null || _this$grid26 === void 0 ? void 0 : _this$grid26.setFocusRow(0);\n } else if (rowInt < 0) {\n var _this$grid27;\n this.setState({\n gotoRowError: '',\n gotoValueError: ''\n });\n (_this$grid27 = this.grid) === null || _this$grid27 === void 0 ? void 0 : _this$grid27.setFocusRow(rowInt + rowCount);\n } else {\n var _this$grid28;\n (_this$grid28 = this.grid) === null || _this$grid28 === void 0 ? void 0 : _this$grid28.setFocusRow(rowInt - 1);\n this.setState({\n gotoRowError: '',\n gotoValueError: ''\n });\n }\n }\n handleGotoRowSelectedRowNumberChanged(event) {\n var rowNumber = event.target.value;\n this.focusRowInGrid(rowNumber);\n }\n getColumnTooltip(visibleIndex, metrics, model) {\n var {\n columnHeaderHeight,\n columnHeaderMaxDepth,\n allColumnXs,\n allColumnWidths,\n width\n } = metrics;\n var columnX = allColumnXs.get(visibleIndex);\n var columnWidth = allColumnWidths.get(visibleIndex);\n if (columnX == null || columnWidth == null) {\n return null;\n }\n\n /**\n * Create a wrapper dom element, the size of the column header.\n * The wrapper acts as tooltip parent, the tooltip component\n * will trigger hide on mouseleave of wrapper or tooltip.\n * The wrapper should be bound to within the grid dimensions,\n * so popper only remains triggered while mouse is inside the panel.\n */\n var boundedLeft = Math.max(0, columnX);\n var boundedWidth = columnWidth;\n if (columnX + columnWidth > width) {\n // column is extending past right edge\n boundedWidth = width - columnX;\n } else if (columnX < 0) {\n // column is extending past left edge\n boundedWidth = columnWidth - Math.abs(columnX);\n }\n var wrapperStyle = {\n position: 'absolute',\n top: (columnHeaderMaxDepth - 1) * columnHeaderHeight,\n left: boundedLeft,\n width: boundedWidth,\n height: columnHeaderHeight,\n pointerEvents: 'none'\n };\n\n /**\n * Because the popper parent wrapper center is no longer the same as\n * the column label center, we create a popper virtual ref, to handle\n * positioning and keep the popper centered on the label. Creates a\n * 1px x headerHeight virtual object, placed centered on the column\n * label, clamped to 0 + margin to width - margin. We add a margin,\n * otherwise the arrow wants to escape the boundary.\n */\n var virtualReference = {\n clientWidth: 1,\n clientHeight: columnHeaderHeight,\n getBoundingClientRect: this.getColumnBoundingRect\n };\n var popperOptions = {\n placement: 'bottom',\n modifiers: {\n flip: {\n behavior: ['bottom', 'top']\n }\n }\n };\n var modelColumn = this.getModelColumn(visibleIndex);\n if (modelColumn == null) return null;\n var column = model.columns[modelColumn];\n if (column == null) return null;\n return /*#__PURE__*/_jsx(\"div\", {\n style: wrapperStyle,\n children: /*#__PURE__*/_jsx(Tooltip, {\n timeout: 400,\n interactive: true,\n options: popperOptions,\n ref: this.handleTooltipRef,\n referenceObject: virtualReference,\n onExited: () => {\n this.setState({\n shownColumnTooltip: null\n });\n },\n children: /*#__PURE__*/_jsx(ColumnStatistics, {\n model: model,\n column: column,\n onStatistics: () => {\n var _this$tooltip;\n (_this$tooltip = this.tooltip) === null || _this$tooltip === void 0 ? void 0 : _this$tooltip.update();\n }\n })\n }, column.name)\n });\n }\n handleGotoValueSelectedColumnNameChanged(columnName) {\n var _this$grid29;\n var {\n model\n } = this.props;\n var cursorRow = (_this$grid29 = this.grid) === null || _this$grid29 === void 0 ? void 0 : _this$grid29.state.cursorRow;\n var {\n gotoValueSelectedColumnName: prevColumnName,\n gotoValueManuallyChanged\n } = this.state;\n if (cursorRow != null) {\n var _index = model.getColumnIndexByName(columnName);\n var _column2 = IrisGridUtils.getColumnByName(model.columns, columnName);\n var prevColumn = IrisGridUtils.getColumnByName(model.columns, prevColumnName);\n if (_index == null || _column2 == null) {\n return;\n }\n var _value3 = model.valueForCell(_index, cursorRow);\n var text = IrisGridUtils.convertValueToText(_value3, _column2.type);\n\n // do NOT update value if user manually changed value AND column type remains the same\n if (gotoValueManuallyChanged && _column2.type === (prevColumn === null || prevColumn === void 0 ? void 0 : prevColumn.type)) {\n this.setState({\n gotoValueSelectedColumnName: columnName,\n gotoValueError: ''\n });\n } else {\n // do update, and set goToValueManuallyChanged to false because value was automatically changed\n this.setState({\n gotoValueSelectedColumnName: columnName,\n gotoValue: text,\n gotoValueError: '',\n gotoValueManuallyChanged: false\n });\n }\n }\n this.setState({\n gotoValueSelectedColumnName: columnName,\n gotoValueError: ''\n });\n }\n handleGotoValueSelectedFilterChanged(value) {\n this.setState({\n gotoValueSelectedFilter: value,\n gotoValueError: ''\n });\n }\n handleGotoValueSubmitted(isBackwards) {\n var {\n gotoValue\n } = this.state;\n this.seekRow(gotoValue, isBackwards);\n }\n render() {\n var _rollupConfig$columns3,\n _rollupConfig$columns4,\n _this7 = this,\n _this$grid31,\n _this$grid31$state$dr,\n _openOptions;\n var {\n children,\n customFilters,\n getDownloadWorker,\n isSelectingColumn,\n isStuckToBottom,\n isStuckToRight,\n model,\n name,\n onlyFetchVisibleColumns,\n alwaysFetchColumns,\n advancedSettings,\n onAdvancedSettingsChange,\n canDownloadCsv,\n onCreateChart\n } = this.props;\n var {\n metricCalculator,\n metrics,\n isFilterBarShown,\n isSelectingPartition,\n isMenuShown,\n isReady,\n copyOperation,\n focusedFilterBarColumn,\n loadingText,\n loadingScrimProgress,\n loadingSpinnerShown,\n loadingCancelShown,\n loadingBlocksGrid,\n shownColumnTooltip,\n hoverAdvancedFilter,\n shownAdvancedFilter,\n hoverSelectColumn,\n quickFilters,\n advancedFilters,\n searchFilter,\n selectDistinctColumns,\n movedColumns,\n movedRows,\n formatter,\n conditionalFormats,\n conditionalFormatPreview,\n conditionalFormatEditIndex,\n 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(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$columns3 = rollupConfig === null || rollupConfig === void 0 ? void 0 : (_rollupConfig$columns4 = rollupConfig.columns) === null || _rollupConfig$columns4 === void 0 ? void 0 : _rollupConfig$columns4.length) !== null && _rollupConfig$columns3 !== void 0 ? _rollupConfig$columns3 : 0) > 0;\n var focusField = null;\n var debounceMs = metrics ? Math.min(Math.max(IrisGrid.minDebounce, Math.round(metrics.rowCount / 200)), IrisGrid.maxDebounce) : IrisGrid.maxDebounce;\n if (isFilterBarShown && focusedFilterBarColumn != null && metrics != null) {\n var {\n gridX,\n gridY,\n allColumnXs,\n allColumnWidths,\n width\n } = metrics;\n var columnX = allColumnXs.get(focusedFilterBarColumn);\n var columnWidth = allColumnWidths.get(focusedFilterBarColumn);\n if (columnX != null && columnWidth != null) {\n var _theme$filterBarHeigh, _theme$filterBarHeigh2, _this$grid30;\n var x = gridX + columnX;\n var y = gridY - ((_theme$filterBarHeigh = theme.filterBarHeight) !== null && _theme$filterBarHeigh !== void 0 ? _theme$filterBarHeigh : 0);\n var fieldWidth = columnWidth + 1; // cover right border\n var fieldHeight = ((_theme$filterBarHeigh2 = theme.filterBarHeight) !== null && _theme$filterBarHeigh2 !== void 0 ? _theme$filterBarHeigh2 : 0) - 1; // remove bottom border\n var style = {\n top: y,\n left: x,\n minWidth: Math.min(fieldWidth, width - x),\n // Don't cause overflow\n height: fieldHeight\n };\n var _value4 = '';\n var isValid = true;\n var modelColumn = this.getModelColumn(focusedFilterBarColumn);\n assertNotNull(modelColumn);\n var quickFilter = quickFilters.get(modelColumn);\n var advancedFilter = advancedFilters.get(modelColumn);\n if (quickFilter != null) {\n _value4 = quickFilter.text;\n isValid = quickFilter.filter != null;\n }\n var isBarFiltered = quickFilters.size !== 0 || advancedFilters.size !== 0;\n focusField = /*#__PURE__*/_jsx(FilterInputField, {\n ref: this.filterInputRef,\n style: style,\n className: classNames({\n error: !isValid,\n active: _value4 !== '' || advancedFilter != null,\n 'iris-grid-has-filter': isBarFiltered\n }),\n isAdvancedFilterSet: advancedFilter != null,\n onAdvancedFiltersTriggered: () => {\n this.setState({\n shownAdvancedFilter: focusedFilterBarColumn\n });\n },\n onChange: this.handleFilterBarChange,\n onDone: this.handleFilterBarDone,\n onTab: this.handleFilterBarTab,\n onContextMenu: (_this$grid30 = this.grid) === null || _this$grid30 === void 0 ? void 0 : _this$grid30.handleContextMenu,\n debounceMs: debounceMs,\n value: _value4\n }, focusedFilterBarColumn);\n }\n }\n var loadingElement = null;\n if (loadingText != null) {\n var loadingStatus = /*#__PURE__*/_jsxs(\"div\", {\n className: \"iris-grid-loading-status\",\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: classNames('iris-grid-loading-status-bar', {\n show: loadingSpinnerShown\n }),\n children: loadingText\n }), /*#__PURE__*/_jsxs(\"button\", {\n type: \"button\",\n onClick: this.handleCancel,\n className: classNames('iris-grid-btn-cancel', {\n show: loadingCancelShown\n }),\n children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsClose,\n transform: \"down-1\"\n }), \"Cancel\"]\n })]\n });\n var _gridY = metrics ? metrics.gridY : 0;\n loadingElement = /*#__PURE__*/_jsx(\"div\", {\n className: \"iris-grid-loading\",\n style: loadingBlocksGrid ? {\n top: _gridY\n } : {},\n children: loadingStatus\n });\n }\n var columnTooltip = null;\n if (shownColumnTooltip != null && metrics) {\n var _this$tooltip2;\n columnTooltip = this.getColumnTooltip(shownColumnTooltip, metrics, model);\n // #510 We may need to update the position of the tooltip if it's already opened and columns are resized\n (_this$tooltip2 = this.tooltip) === null || _this$tooltip2 === void 0 ? void 0 : _this$tooltip2.update();\n }\n var filterBar = [];\n if (metrics && isFilterBarShown) {\n var {\n gridX: _gridX,\n gridY: _gridY2,\n visibleColumns,\n allColumnXs: _allColumnXs,\n allColumnWidths: _allColumnWidths\n } = metrics;\n var {\n filterBarHeight\n } = theme;\n var _loop2 = function _loop2() {\n var columnIndex = visibleColumns[i];\n var columnX = _allColumnXs.get(columnIndex);\n var columnWidth = _allColumnWidths.get(columnIndex);\n var modelColumn = _this7.getModelColumn(columnIndex);\n if (modelColumn != null) {\n var isFilterable = model.isFilterable(modelColumn);\n if (isFilterable && columnX != null && columnWidth != null && columnWidth > 0) {\n var _x = _gridX + columnX + columnWidth - 24;\n var _y = _gridY2 - (filterBarHeight !== null && filterBarHeight !== void 0 ? filterBarHeight : 0) + 2; // 2 acts as top margin for the button\n var _style = {\n position: 'absolute',\n top: _y,\n left: _x\n };\n var _advancedFilter = advancedFilters.get(modelColumn);\n var isFilterSet = _advancedFilter != null;\n var isFilterVisible = columnIndex === hoverAdvancedFilter || columnIndex === focusedFilterBarColumn || isFilterSet;\n var element = /*#__PURE__*/_jsx(\"div\", {\n className: classNames('advanced-filter-button-container', {\n hidden: !isFilterVisible\n }),\n style: _style,\n children: isFilterVisible && /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: classNames('btn-link-icon advanced-filter-button', {\n 'filter-set': isFilterSet\n }),\n onClick: () => {\n _this7.setState({\n shownAdvancedFilter: columnIndex\n });\n },\n onContextMenu: event => {\n var _this7$grid;\n (_this7$grid = _this7.grid) === null || _this7$grid === void 0 ? void 0 : _this7$grid.handleContextMenu(event);\n },\n onMouseEnter: () => {\n _this7.setState({\n hoverAdvancedFilter: columnIndex\n });\n },\n onMouseLeave: () => {\n _this7.setState({\n hoverAdvancedFilter: null\n });\n },\n children: /*#__PURE__*/_jsxs(\"div\", {\n className: \"fa-layers\",\n children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: dhFilterFilled,\n className: \"filter-solid\"\n }), /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsFilter,\n className: \"filter-light\"\n })]\n })\n })\n }, columnIndex);\n filterBar.push(element);\n }\n }\n };\n for (var i = 0; i < visibleColumns.length; i += 1) {\n _loop2();\n }\n }\n var advancedFilterMenus = [];\n if (metrics) {\n var {\n gridX: _gridX2,\n visibleColumns: _visibleColumns,\n allColumnXs: _allColumnXs2,\n allColumnWidths: _allColumnWidths2,\n columnHeaderHeight\n } = metrics;\n var _loop3 = function _loop3() {\n var columnIndex = _visibleColumns[_i3];\n var columnX = _allColumnXs2.get(columnIndex);\n var columnWidth = _allColumnWidths2.get(columnIndex);\n if (columnX != null && columnWidth != null && columnWidth > 0) {\n var xColumnHeader = _gridX2 + columnX;\n var xFilterBar = _gridX2 + columnX + columnWidth - 20;\n var _style2 = isFilterBarShown ? {\n position: 'absolute',\n top: columnHeaderHeight,\n left: xFilterBar,\n width: 20,\n height: theme.filterBarHeight\n } : {\n position: 'absolute',\n top: 0,\n left: xColumnHeader,\n width: columnWidth,\n height: columnHeaderHeight\n };\n var _modelColumn = _this7.getModelColumn(columnIndex);\n if (_modelColumn != null) {\n var _column3 = model.columns[_modelColumn];\n if (_column3 == null) {\n // Grid metrics is likely out of sync with model\n log.warn(\"Column does not exist at index \".concat(_modelColumn, \" for column array of length \").concat(model.columns.length));\n // eslint-disable-next-line no-continue\n return \"continue\";\n }\n var _advancedFilter2 = advancedFilters.get(_modelColumn);\n var {\n options: advancedFilterOptions\n } = _advancedFilter2 || {};\n var sort = TableUtils.getSortForColumn(model.sort, _column3.name);\n var sortDirection = sort ? sort.direction : null;\n if (!isSortDirection(sortDirection)) {\n throw new Error(\"Invalid sort direction: \".concat(sortDirection));\n }\n var element = /*#__PURE__*/_jsx(\"div\", {\n className: \"advanced-filter-menu-container\",\n style: _style2,\n children: /*#__PURE__*/_jsx(Popper, {\n className: \"advanced-filter-menu-popper\",\n onEntered: _this7.getAdvancedMenuOpenedHandler(columnIndex),\n onExited: () => {\n _this7.handleAdvancedMenuClosed(columnIndex);\n },\n isShown: shownAdvancedFilter === columnIndex,\n interactive: true,\n closeOnBlur: true,\n options: {\n positionFixed: true\n },\n children: _this7.getCachedAdvancedFilterMenuActions(model, _column3, advancedFilterOptions, sortDirection, formatter)\n })\n }, columnIndex);\n advancedFilterMenus.push(element);\n }\n }\n };\n for (var _i3 = 0; _i3 < _visibleColumns.length; _i3 += 1) {\n var _ret = _loop3();\n if (_ret === \"continue\") continue;\n }\n }\n var optionItems = this.getCachedOptionItems(onCreateChart !== undefined && model.isChartBuilderAvailable, model.isCustomColumnsAvailable, model.isFormatColumnsAvailable, model.isRollupAvailable, model.isTotalsAvailable || isRollup, model.isSelectDistinctAvailable, model.isExportAvailable, this.toggleFilterBarAction, this.toggleSearchBarAction, this.toggleGotoRowAction, isFilterBarShown, showSearchBar, canDownloadCsv, this.isTableSearchAvailable(), isGotoShown, advancedSettings.size > 0);\n var hiddenColumns = this.getCachedHiddenColumns(metricCalculator, userColumnWidths);\n var openOptionsStack = openOptions.map(option => {\n switch (option.type) {\n case OptionType.CHART_BUILDER:\n return /*#__PURE__*/_jsx(ChartBuilder, {\n model: model,\n onChange: this.handleChartChange,\n onSubmit: this.handleChartCreate\n }, OptionType.CHART_BUILDER);\n case OptionType.VISIBILITY_ORDERING_BUILDER:\n return /*#__PURE__*/_jsx(VisibilityOrderingBuilder, {\n model: model,\n movedColumns: movedColumns,\n hiddenColumns: hiddenColumns,\n columnHeaderGroups: columnHeaderGroups,\n onColumnVisibilityChanged: this.handleColumnVisibilityChanged,\n onReset: this.handleColumnVisibilityReset,\n onMovedColumnsChanged: this.handleMovedColumnsChanged,\n onColumnHeaderGroupChanged: this.handleHeaderGroupsChanged\n }, OptionType.VISIBILITY_ORDERING_BUILDER);\n case OptionType.CONDITIONAL_FORMATTING:\n return /*#__PURE__*/_jsx(ConditionalFormattingMenu, {\n rules: conditionalFormats,\n onChange: this.handleConditionalFormatsChange,\n onCreate: this.handleConditionalFormatCreate,\n onSelect: this.handleConditionalFormatEdit\n });\n case OptionType.CONDITIONAL_FORMATTING_EDIT:\n assertNotNull(model.columns);\n assertNotNull(this.handleConditionalFormatEditorUpdate);\n return /*#__PURE__*/_jsx(ConditionalFormatEditor, {\n dh: model.dh,\n columns: model.columns,\n rule: conditionalFormatPreview,\n onUpdate: this.handleConditionalFormatEditorUpdate,\n onSave: this.handleConditionalFormatEditorSave,\n onCancel: this.handleConditionalFormatEditorCancel\n });\n case OptionType.CUSTOM_COLUMN_BUILDER:\n return /*#__PURE__*/_jsx(CustomColumnBuilder, {\n model: model,\n customColumns: customColumns,\n onSave: this.handleUpdateCustomColumns,\n onCancel: this.handleMenuBack\n }, OptionType.CUSTOM_COLUMN_BUILDER);\n case OptionType.ROLLUP_ROWS:\n return /*#__PURE__*/_jsx(RollupRows, {\n model: model,\n onChange: this.handleRollupChange,\n config: rollupConfig\n }, OptionType.ROLLUP_ROWS);\n case OptionType.AGGREGATIONS:\n return /*#__PURE__*/_jsx(Aggregations, {\n settings: aggregationSettings,\n isRollup: isRollup,\n onChange: this.handleAggregationsChange,\n onEdit: this.handleAggregationEdit\n });\n case OptionType.AGGREGATION_EDIT:\n return selectedAggregation && /*#__PURE__*/_jsx(AggregationEdit, {\n aggregation: selectedAggregation,\n columns: model.originalColumns,\n onChange: this.handleAggregationChange\n });\n case OptionType.TABLE_EXPORTER:\n return /*#__PURE__*/_jsx(TableCsvExporter, {\n model: model,\n name: name,\n userColumnWidths: userColumnWidths,\n movedColumns: movedColumns,\n isDownloading: isTableDownloading,\n tableDownloadStatus: tableDownloadStatus,\n tableDownloadProgress: tableDownloadProgress,\n tableDownloadEstimatedTime: tableDownloadEstimatedTime !== null && tableDownloadEstimatedTime !== void 0 ? tableDownloadEstimatedTime : undefined,\n onDownload: this.handleDownloadTable,\n onDownloadStart: this.handleDownloadTableStart,\n onCancel: this.handleCancelDownloadTable,\n selectedRanges: selectedRanges\n }, OptionType.TABLE_EXPORTER);\n case OptionType.SELECT_DISTINCT:\n return /*#__PURE__*/_jsx(SelectDistinctBuilder, {\n model: model,\n selectDistinctColumns: selectDistinctColumns,\n onChange: this.handleSelectDistinctChanged\n });\n case OptionType.ADVANCED_SETTINGS:\n return /*#__PURE__*/_jsx(AdvancedSettingsMenu, {\n items: advancedSettings,\n onChange: onAdvancedSettingsChange\n });\n default:\n throw Error(\"Unexpected option type \".concat(option.type));\n }\n });\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"iris-grid\",\n role: \"presentation\",\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"iris-grid-column\",\n children: [children != null && /*#__PURE__*/_jsx(\"div\", {\n className: \"iris-grid-bar\",\n children: children\n }), /*#__PURE__*/_jsx(CSSTransition, {\n in: isSelectingPartition,\n timeout: ThemeExport.transitionSlowMs,\n classNames: \"iris-grid-bar-horizontal\",\n onEnter: this.handleAnimationStart,\n onEntered: this.handleAnimationEnd,\n onExit: this.handleAnimationStart,\n onExited: this.handleAnimationEnd,\n mountOnEnter: true,\n unmountOnExit: true,\n children: /*#__PURE__*/_jsx(\"div\", {\n className: \"iris-grid-partition-selector-wrapper iris-grid-bar iris-grid-bar-primary\",\n children: isPartitionedGridModel(model) && model.isPartitionRequired && /*#__PURE__*/_jsx(IrisGridPartitionSelector, {\n model: model,\n partitionConfig: partitionConfig,\n onChange: this.handlePartitionChange\n })\n })\n }), /*#__PURE__*/_jsx(CSSTransition, {\n in: showSearchBar,\n timeout: ThemeExport.transitionSlowMs,\n classNames: \"iris-grid-bar-horizontal\",\n onEnter: this.handleAnimationStart,\n onEntered: this.handleAnimationEnd,\n onExit: this.handleAnimationStart,\n onExited: this.handleAnimationEnd,\n mountOnEnter: true,\n unmountOnExit: true,\n children: /*#__PURE__*/_jsx(\"div\", {\n className: \"iris-grid-bar\",\n children: /*#__PURE__*/_jsx(CrossColumnSearch, {\n value: searchValue,\n selectedColumns: selectedSearchColumns,\n invertSelection: invertSearchColumns,\n onChange: this.handleCrossColumnSearch,\n columns: model.columns,\n ref: this.crossColumnRef\n })\n })\n }), /*#__PURE__*/_jsxs(Grid, {\n ref: grid => {\n this.grid = grid;\n },\n isStickyBottom: !isEditableGridModel(model) || !model.isEditable,\n isStuckToBottom: isStuckToBottom,\n isStuckToRight: isStuckToRight,\n metricCalculator: metricCalculator,\n model: model,\n keyHandlers: this.getKeyHandlers(),\n mouseHandlers: this.getMouseHandlers(),\n movedColumns: movedColumns,\n movedRows: movedRows,\n onError: this.handleGridError,\n onViewChanged: this.handleViewChanged,\n onSelectionChanged: this.handleSelectionChanged,\n onMovedColumnsChanged: this.handleMovedColumnsChanged,\n renderer: this.renderer,\n stateOverride: stateOverride,\n theme: theme,\n children: [/*#__PURE__*/_jsx(IrisGridCellOverflowModal, {\n isOpen: showOverflowModal,\n text: overflowText,\n onClose: this.handleOverflowClose\n }), isVisible && /*#__PURE__*/_jsx(IrisGridModelUpdater, {\n model: model,\n top: top,\n bottom: bottom,\n left: left,\n right: right,\n filter: filter,\n formatter: formatter,\n 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$grid31 = this.grid) === null || _this$grid31 === void 0 ? void 0 : (_this$grid31$state$dr = _this$grid31.state.draggingColumn) === null || _this$grid31$state$dr === void 0 ? void 0 : _this$grid31$state$dr.range),\n formatColumns: this.getCachedPreviewFormatColumns(model.dh, model.columns, conditionalFormats, conditionalFormatPreview,\n // Disable the preview format when we press Back on the format edit page\n ((_openOptions = openOptions[openOptions.length - 1]) === null || _openOptions === void 0 ? void 0 : _openOptions.type) === OptionType.CONDITIONAL_FORMATTING_EDIT ? conditionalFormatEditIndex !== null && conditionalFormatEditIndex !== void 0 ? conditionalFormatEditIndex : undefined : undefined),\n rollupConfig: this.getModelRollupConfig(model.originalColumns, rollupConfig, aggregationSettings),\n totalsConfig: this.getModelTotalsConfig(model.columns, rollupConfig, aggregationSettings),\n selectDistinctColumns: selectDistinctColumns,\n pendingRowCount: pendingRowCount,\n pendingDataMap: pendingDataMap,\n frozenColumns: frozenColumns,\n columnHeaderGroups: columnHeaderGroups,\n partitionConfig: partitionConfig,\n showExtraGroupColumn: this.showExtraGroupColumn\n }), !isMenuShown && /*#__PURE__*/_jsx(\"div\", {\n className: \"grid-settings-button\",\n style: {\n height: \"\".concat(singleColumnHeaderHeight, \"px\"),\n width: \"\".concat(singleColumnHeaderHeight, \"px\")\n },\n children: /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n \"data-testid\": \"btn-iris-grid-settings-button-\".concat(name),\n onClick: this.handleMenu,\n icon: /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsMenu,\n transform: \"up-1\"\n }),\n tooltip: \"Table Options\"\n })\n }), focusField, loadingElement, filterBar, columnTooltip, advancedFilterMenus, overflowButtonTooltipProps && this.getOverflowButtonTooltip(overflowButtonTooltipProps), expandCellTooltipProps && this.getExpandCellTooltip(expandCellTooltipProps), hoverTooltipProps && this.getHoverTooltip(hoverTooltipProps)]\n }), /*#__PURE__*/_jsx(GotoRow, {\n ref: this.gotoRowRef,\n model: model,\n isShown: isGotoShown,\n gotoRow: gotoRow,\n gotoRowError: gotoRowError,\n gotoValueError: gotoValueError,\n onGotoRowSubmit: this.handleGotoRowSelectedRowNumberSubmit,\n onGotoRowNumberChanged: this.handleGotoRowSelectedRowNumberChanged,\n onClose: this.handleGotoRowClosed,\n onEntering: this.handleAnimationStart,\n onEntered: this.handleAnimationEnd,\n onExiting: () => {\n this.handleAnimationStart();\n this.focus();\n },\n onExited: this.handleAnimationEnd,\n gotoValueSelectedColumnName: gotoValueSelectedColumnName,\n gotoValue: gotoValue,\n gotoValueFilter: gotoValueSelectedFilter,\n onGotoValueSelectedColumnNameChanged: this.handleGotoValueSelectedColumnNameChanged,\n onGotoValueSelectedFilterChanged: this.handleGotoValueSelectedFilterChanged,\n onGotoValueChanged: this.handleGotoValueChanged,\n onGotoValueSubmit: this.handleGotoValueSubmitted\n }), /*#__PURE__*/_jsx(PendingDataBottomBar, {\n error: pendingSaveError,\n isSaving: pendingSavePromise != null,\n saveTooltip: \"Commit (\".concat(this.commitAction.shortcut.getDisplayText(), \")\"),\n discardTooltip: \"Discard (\".concat(this.discardAction.shortcut.getDisplayText(), \")\"),\n pendingDataErrors: pendingDataErrors,\n pendingDataMap: pendingDataMap,\n onEntering: this.handleAnimationStart,\n onEntered: this.handleAnimationEnd,\n onExiting: this.handleAnimationStart,\n onExited: this.handleAnimationEnd,\n onSave: this.handlePendingCommitClicked,\n onDiscard: this.handlePendingDiscardClicked\n }), /*#__PURE__*/_jsx(ToastBottomBar, {\n children: toastMessage\n }), /*#__PURE__*/_jsx(IrisGridCopyHandler, {\n model: model,\n copyOperation: copyOperation !== null && copyOperation !== void 0 ? copyOperation : undefined,\n onEntering: this.handleAnimationStart,\n onEntered: this.handleAnimationEnd,\n onExiting: this.handleAnimationStart,\n onExited: this.handleAnimationEnd\n }), /*#__PURE__*/_jsx(TableSaver, {\n dh: model.dh,\n ref: tableSaver => {\n this.tableSaver = tableSaver;\n },\n getDownloadWorker: getDownloadWorker,\n onDownloadCompleted: this.handleDownloadCompleted,\n onDownloadCanceled: this.handleDownloadCanceled,\n onDownloadProgressUpdate: this.handleDownloadProgressUpdate,\n isDownloading: tableDownloadStatus === TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING,\n formatter: formatter\n })]\n }), /*#__PURE__*/_jsx(SlideTransition, {\n in: isMenuShown,\n onEntering: this.handleAnimationStart,\n onEntered: this.handleAnimationEnd,\n onExiting: this.handleAnimationStart,\n onExited: this.handleAnimationEnd,\n mountOnEnter: true,\n unmountOnExit: true,\n children: /*#__PURE__*/_jsx(\"div\", {\n className: \"table-sidebar\",\n children: /*#__PURE__*/_jsxs(Stack, {\n children: [/*#__PURE__*/_jsx(Page, {\n title: \"Table Options\",\n onClose: this.handleMenuClose,\n children: /*#__PURE__*/_jsx(Menu, {\n onSelect: i => this.handleMenuSelect(optionItems[i]),\n items: optionItems\n })\n }), openOptionsStack.map((option, i) => /*#__PURE__*/_jsx(Page, {\n title: openOptions[i].title,\n onBack: this.handleMenuBack,\n onClose: this.handleMenuClose,\n children: option\n }, openOptions[i].type))]\n })\n })\n }), /*#__PURE__*/_jsx(ContextActions, {\n actions: this.contextActions\n }), /*#__PURE__*/_jsx(NoPastePermissionModal, {\n isOpen: showNoPastePermissionModal,\n onClose: this.handleCloseNoPastePermissionModal,\n errorMessage: noPastePermissionError\n })]\n });\n }\n}\n_defineProperty(IrisGrid, \"contextType\", IrisGridThemeContext);\n_defineProperty(IrisGrid, \"minDebounce\", 150);\n_defineProperty(IrisGrid, \"maxDebounce\", 500);\n_defineProperty(IrisGrid, \"loadingSpinnerDelay\", 800);\n_defineProperty(IrisGrid, \"defaultProps\", {\n children: null,\n advancedFilters: EMPTY_MAP,\n advancedSettings: EMPTY_MAP,\n alwaysFetchColumns: EMPTY_ARRAY,\n conditionalFormats: EMPTY_ARRAY,\n customColumnFormatMap: EMPTY_MAP,\n isFilterBarShown: false,\n applyInputFiltersOnInit: false,\n movedColumns: EMPTY_ARRAY,\n movedRows: EMPTY_ARRAY,\n inputFilters: EMPTY_ARRAY,\n customFilters: EMPTY_ARRAY,\n onCreateChart: undefined,\n onColumnSelected: () => undefined,\n onDataSelected: () => undefined,\n onError: () => undefined,\n onStateChange: () => undefined,\n onAdvancedSettingsChange: () => undefined,\n partitions: undefined,\n partitionConfig: undefined,\n quickFilters: EMPTY_MAP,\n selectDistinctColumns: EMPTY_ARRAY,\n sorts: EMPTY_ARRAY,\n reverse: false,\n customColumns: EMPTY_ARRAY,\n aggregationSettings: DEFAULT_AGGREGATION_SETTINGS,\n rollupConfig: undefined,\n userColumnWidths: EMPTY_MAP,\n userRowHeights: EMPTY_MAP,\n onSelectionChanged: () => undefined,\n isSelectingColumn: false,\n isSelectingPartition: false,\n isStuckToBottom: false,\n isStuckToRight: false,\n columnSelectionValidator: null,\n columnAllowedCursor: null,\n columnNotAllowedCursor: null,\n copyCursor: 'copy',\n name: 'table',\n onlyFetchVisibleColumns: true,\n showSearchBar: false,\n searchValue: '',\n selectedSearchColumns: null,\n invertSearchColumns: true,\n onContextMenu: () => EMPTY_ARRAY,\n pendingDataMap: EMPTY_MAP,\n getDownloadWorker: DownloadServiceWorkerUtils.getServiceWorker,\n settings: {\n timeZone: 'America/New_York',\n defaultDateTimeFormat: DateUtils.FULL_DATE_FORMAT,\n showTimeZone: false,\n showTSeparator: true,\n truncateNumbersWithPound: false,\n showEmptyStrings: true,\n showNullStrings: true,\n showExtraGroupColumn: true,\n formatter: EMPTY_ARRAY,\n decimalFormatOptions: PropTypes.shape({\n defaultFormatString: PropTypes.string\n }),\n integerFormatOptions: PropTypes.shape({\n defaultFormatString: PropTypes.string\n })\n },\n canCopy: true,\n canDownloadCsv: true,\n frozenColumns: null,\n theme: null,\n // Do not set a default density prop since we need to know if it overrides the global density setting\n density: undefined,\n canToggleSearch: true,\n mouseHandlers: EMPTY_ARRAY,\n keyHandlers: EMPTY_ARRAY\n});\nexport default IrisGrid;\n//# sourceMappingURL=IrisGrid.js.map"],"names":["_defineProperty","obj","key","value","_toPropertyKey","arg","_toPrimitive","input","hint","prim","res","log","Log","AdvancedFilterCreatorFilterItem","PureComponent","columnType","filterType","TableUtils","getLabelForNumberFilter","getLabelForTextFilter","getLabelForDateFilter","getLabelForBooleanFilter","e","props","memoizeOne","column","operation","timeZone","tableUtils","_value","filterTypes","selectedType","_this$typeDropdown","prevProps","eventTargetValue","onChange","event","onDelete","formatter","showValueInput","typeOptionElements","isValid","i","_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","r","row","displayValue","itemCount","item","isLoading","viewportSize","topRow","bottomRow","SelectValueList","list","FadeTransition","LoadingSpinner","AdvancedFilterCreatorSelectValue","prevState","searchTable","searchText","count","formattedCount","formattedTableSize","prefix","searchTablePromise","error","filter","showSearch","columnName","displayedValuesText","placeholderText","AdvancedFilterCreator","nanoid","_options$filterItems$","_options$filterItems","memoize","React","model","options","filterOperators","filterItems","_ref","columnIndex","assertNotNull","isSortable","index","valuesTable","_valuesTable$columns$","sort","PromiseUtils","_this$focusTrapContai","_this$focusTrapContai2","_this$focusTrapContai3","_this$focusTrapContai4","inputs","FilterOperator","operator","assertFilterOperatorValue","filterIndex","addToExisting","ContextActionUtils","onDone","filterItem","direction","onSortChange","onFilterChange","_ref2","operators","_this","sortDirection","valuesTableError","isValuesTableAvailable","isBoolean","isDateType","filterItemElements","_loop","filterOperator","isAndFilter","operatorElement","showAddFilterItem","addFilterItem","FontAwesomeIcon","dhNewCircleLargeFilled","dhSortAmountDown","_Fragment","makeTernaryFormatRule","config","prevRule","styleDBString","getStyleDBString","conditionDBString","getConditionDBString","makeRowFormatColumn","rule","makeColumnFormatColumn","col","FormatterType","NumberCondition","StringCondition","DateCondition","BooleanCondition","CharCondition","FormatStyleType","getLabelForStyleType","option","getBackgroundForStyleConfig","type","customConfig","getColorForStyleConfig","color","bg","getNumberConditionText","start","end","getTextForNumberCondition","getStringConditionText","getTextForStringCondition","getDateConditionText","getTextForDateCondition","getBooleanConditionText","getTextForBooleanCondition","getCharConditionText","getTextForCharCondition","getLabelForNumberCondition","condition","getLabelForStringCondition","getLabelForDateCondition","getLabelForBooleanCondition","getLabelForCharCondition","getDefaultConditionForType","getDefaultValueForType","getConditionConfig","getDefaultConditionConfigForType","getDefaultStyleConfig","getShortLabelForStringCondition","getShortLabelForDateCondition","getShortLabelForBooleanCondition","getShortLabelForCharCondition","getShortLabelForNumberCondition","getShortLabelForConditionType","getFormatColumns","columns","rules","result","rowFormatConfig","columnFormatConfigMap","_ref3","formatterType","name","prevFormatColumn","formatColumn","isDateConditionValid","dateTimeString","rest","tzCode","DateUtils","isSupportedColumn","_ref4","IrisGridBottomBar","animation","children","className","isShown","onClick","onEntering","onEntered","onExiting","onExited","CSSTransition","ThemeExport","HIDE_TIMEOUT","MAX_NUMBER_ROWS_SHOWN","PendingDataBottomBar","isSaving","onSave","onDiscard","discardTooltip","saveTooltip","pendingDataErrors","pendingDataMap","_onExited","isSuccessShown","setIsSuccessShown","useState","wasSuccessShown","setWasSuccessShown","successTimeout","useRef","prevIsSaving","usePrevious","errorMessage","useMemo","useEffect","pendingRowCount","commitIcon","vsPass","vsWarning","asyncGeneratorStep","gen","resolve","reject","_next","_throw","info","_asyncToGenerator","fn","self","args","err","isCopyRangesOperation","copyOperation","isCopyHeaderOperation","IrisGridCopyHandler","Component","copyState","rowCount","buttonState","ranges","GridRange","text","_this2","copyToClipboard","_this3","columnDepth","movedColumns","modelIndex","GridUtils","copyText","includeHeaders","userColumnWidths","_movedColumns","formatValues","hiddenColumns","IrisGridUtils","modelRanges","subtractRanges","formatValue","CanceledPromiseError","copyButtonText","statusMessageText","isButtonContainerVisible","isFetching","isDone","FilterInputField","debounceMs","debounce","_this$inputField","_this$inputField2","initialValue","isChanged","setGridFocus","defocusInput","_this$inputField3","relatedTarget","backward","onTab","onContextMenu","style","isAdvancedFilterSet","onAdvancedFiltersTriggered","inputField","dhFilterFilled","vsFilter","CopyCellKeyHandler","KeyHandler","irisGrid","grid","mouseX","mouseY","gridPoint","CopyKeyHandler","selectedRanges","ReverseKeyHandler","IrisGridShortcuts","reverse","ClearFilterKeyHandler","ToastBottomBar","setIsShown","timeout","prevChildren","startTimer","useCallback","COLUMN_BUFFER_PAGES","IrisGridModelUpdater","left","right","sorts","customColumns","alwaysFetchColumns","rollupConfig","totalsConfig","selectDistinctColumns","EMPTY_ARRAY","EMPTY_MAP","frozenColumns","formatColumns","columnHeaderGroups","partitionConfig","showExtraGroupColumn","isTotalsAvailable","isRollupAvailable","useOnChange","isIrisGridTreeTableModel","sortsForModel","isPartitionedGridModel","STATS_LABEL_OVERRIDES","ColumnStatistics","_STATS_LABEL_OVERRIDE","w","numRows","stats","onStatistics","statistics","_column$displayName","loading","showGenerateStatistics","statisticElements","description","formattedValue","statisticElement","rowCountLabel","isExpandableGridModel","formattedRowCount","CopyButton","dhSortSlash","dhFreeze","vsLock","dhRefresh","CrossColumnSearch","searchValue","selectedColumns","filterColumns","filterValue","searchFilter","_this$searchField$cur","c","update","isConfigureColumnsShown","hasAllColumnsSelected","hasNoColumnsSelected","icon","dhSquareFilled","dhGearFilled","dhCheckSquare","vsCircleLargeFilled","dhWarningCircleFilled","dhRemoveSquareFilled","SearchInput","Tooltip","Popper","Checkbox","ownKeys","object","enumerableOnly","keys","symbols","sym","_objectSpread","target","source","IrisGridPartitionSelector","memoizee","Pending","keysTable","keyTable","t","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","inputIndex","_ref5","disableAddButton","AdvancedSettingsMenu","_onChange","Menu","isOn","AdvancedSettingsType","DEFAULT_CALLBACK","getRuleValue","getRuleTitle","ConditionalFormattingMenu","onCreate","onSelect","handleRuleClick","handleDeleteClick","updatedRules","handleDragHandlerClick","handleDragEnd","DragUtils","sourceIndex","destinationIndex","sourceInput","DragDropContext","Droppable","provided","snapshot","Draggable","vsGripper","numberConditionOptions","stringConditions","dateConditions","booleanConditions","charConditions","isNumberConditionValid","startValue","endValue","getNumberInputs","selectedCondition","handleValueChange","handleStartValueChange","handleEndValueChange","conditionValue","getStringInputs","getDateInputs","getBooleanInputs","getCharInputs","ConditionEditor","selectedColumnType","prevColumnType","setPrevColumnType","setCondition","setValue","setStartValue","setEndValue","conditions","handleConditionChange","conditionInputs","DEFAULT_BACKGROUND","DEFAULT_COLOR_LIGHT","DEFAULT_COLOR_DARK","DEFAULT_DROPDOWN_WIDTH","StyleEditor","_config$customConfig$","_config$customConfig","styleType","setStyleType","background","setBackground","setShown","dropdownWidth","setDropdownWidth","csContainer","handleBackgroundChange","handleMenuClosed","handleToggleClick","updateDropdownWidth","styleOptions","ColorUtils","renderOptions","optionArray","vsCheck","renderMenuElement","DropdownMenu","makeDefaultConfig","ColumnFormatEditor","_columns$find","selectedColumn","setColumn","conditionConfig","setConditionConfig","conditionValid","setConditionValid","selectedStyle","setStyle","handleColumnChange","newColumn","updatedConditionConfig","handleStyleChange","updatedStyleConfig","columnNames","ComboBox","RowFormatEditor","getFormatterTypeIcon","FormatColumnWhereIcon","FormatRowWhereIcon","getFormatterTypeLabel","formatterTypes","ConditionalFormatEditor","_defaultRule$type","originalColumns","onUpdate","onCancel","defaultRule","selectedFormatter","setFormatter","setRule","setIsValid","handleCancel","handleSave","handleFormatterChange","handleRuleChange","ruleConfig","isRuleValid","updatedRule","IrisGridCellOverflowModal","_editorRef$current$ge","_editorRef$current2","isOpen","onClose","isOpened","setIsOpened","height","setHeight","showLineNumbers","setShowLineNumbers","isFormatted","setIsFormatted","canFormat","setCanFormat","editorRef","toggleLineNumbers","formatAsJSON","_editorRef$current","autoSetLineNumbers","_editor$getModel$getL","_editor$getModel","editor","handleToggle","onEditorInitialized","contentHeight","Modal","ModalHeader","vsListOrdered","vsJson","ModalBody","Editor","DEFAULT_FORMAT_STRING","GotoRow","forwardRef","ref","gotoRow","gotoRowError","gotoValueError","onGotoRowSubmit","_onEntered","onGotoRowNumberChanged","gotoValueSelectedColumnName","gotoValue","gotoValueFilter","onGotoValueSelectedColumnNameChanged","onGotoValueSelectedFilterChanged","onGotoValueChanged","onGotoValueSubmit","gotoRowInputRef","gotoValueInputRef","isGotoRowActive","setIsGotoRowActive","isIrisGridTableModelTemplate","gotoRowInputId","handleGotoValueNumberKeyDown","onGotoValueInputChanged","handleGotoValueKeySubmit","normalizedType","useImperativeHandle","_gotoRowInputRef$curr","selectInput","_gotoRowInputRef$curr2","_gotoValueInputRef$cu","renderValueInput","DateTimeInput","FilterType","vsClose","vsArrowUp","vsArrowDown","NoPastePermissionModal","pasteShortcutText","GLOBAL_SHORTCUTS","ModalFooter","VIEWPORT_LOADING_DELAY","UPDATE_DOWNLOAD_THROTTLE","SET_FILTER_DEBOUNCE","SEEK_ROW_DEBOUNCE","SET_CONDITIONAL_FORMAT_DEBOUNCE","DEFAULT_AGGREGATION_SETTINGS","UNFORMATTED_DATE_PATTERN","isEmptyConfig","advancedFilters","aggregationSettings","quickFilters","IrisGrid","_model$layoutHints","_model$layoutHints$hi","_model$columns$0$name","_model$columns$","advancedFilterOptions","isChartBuilderAvailable","isCustomColumnsAvailable","isFormatColumnsAvailable","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","a","_operationMap$name","newOperations","o","rulesParam","preview","editIndex","_config$columns$lengt","_config$columns","agg","operationOrder","AggregationOperation","hoverSelectColumn","isSelectingColumn","loadingScrimProgress","isMenuShown","customFilters","contextTheme","theme","isEditable","floatingRowCount","density","_theme$rowFooterWidth","baseTheme","createDefaultIrisGridTheme","rowFooterWidth","densityTheme","keyHandlers","b","mouseHandlers","rendererProp","IrisGridRenderer","floatingLeftColumnCount","floatingRightColumnCount","draggingRange","floatingColumns","_i","_i2","columnSet","selectedSearchColumns","invertSearchColumns","throttle","loadingSpinnerShown","conditionalFormatPreview","tableDownloadProgress","tableDownloadEstimatedTime","tableDownloadStatus","TableCsvExporter","overflowButtonTooltipProps","wrapperStyle","popperOptions","expandCellTooltipProps","expandTooltipDisplayValue","isExpandAllAvailable","hoverTooltipProps","hoverDisplayValue","SHORTCUTS","isEditableGridModel","_aggregationSettings","conditionalFormats","customColumnFormatMap","_isFilterBarShown","isSelectingPartition","_model","movedColumnsProp","movedRowsProp","_rollupConfig","_userColumnWidths","userRowHeights","_showSearchBar","_searchValue","_selectedSearchColumns","_invertSearchColumns","_advancedFilters","_quickFilters","canCopy","_dh","_keyHandlers","_mouseHandlers","IrisGridCellOverflowMouseHandler","IrisGridRowTreeMouseHandler","IrisGridTokenMouseHandler","IrisGridColumnSelectMouseHandler","IrisGridColumnTooltipMouseHandler","IrisGridSortMouseHandler","IrisGridFilterMouseHandler","IrisGridContextMenuHandler","IrisGridDataSelectMouseHandler","PendingMouseHandler","IrisGridPartitionedTableMouseHandler","IrisGridCopyCellMouseHandler","movedRows","_metricCalculator","IrisGridMetricCalculator","searchColumns","_searchFilter","Formatter","inputFilters","settings","changedInputFilters","inputFilter","_advancedSettings$get","advancedSettings","replaceExistingFilters","loadingScrimStartTime","loadingScrimFinishTime","now","currentTime","totalTime","state","openOptions","isAggEditType","_this$grid$canvasWrap","_this$grid","renderer","rowIndex","rawValue","modelColumn","modelRow","metrics","modelColumns","modelRows","contextDensity","replaceExisting","newAdvancedFilters","newQuickFilters","_ref6","quickFilter","_ref7","_ref8","filterMap","_advancedSettings$get2","clearFiltersOnLinkerFilterUpdate","_ref9","filterList","combinedText","modelRange","clearRange","_ref10","_ref11","_ref12","_settings$defaultDeci","_settings$defaultInte","_settings$truncateNum","_settings$showEmptySt","_settings$showNullStr","_settings$showExtraGr","forceUpdate","globalColumnFormats","FormatterUtils","dateTimeFormatterOptions","defaultDecimalFormatOptions","defaultIntegerFormatOptions","truncateNumbersWithPound","showEmptyStrings","showNullStrings","isColumnFormatChanged","isDateFormattingChanged","isDecimalFormattingChanged","isIntegerFormattingChanged","isTruncateNumbersChanged","isShowEmptyStringsChanged","isShowNullStringsChanged","isShowExtraGroupColumnChanged","updatedFormats","_this$globalColumnFor","mergedColumnFormats","applyInputFiltersOnInit","reverseType","inputFiltersWithValues","resolved","_data","newPartition","_data2","partitionColumnSet","_ref13","_ref14","columnData","_value2","loadingText","resetRanges","loadingCancelShown","loadingBlocksGrid","_this$gridWrapper$get","_this$gridWrapper","minScrimTransitionTime","maxScrimTransitionTime","scrimTransitionTime","IrisGridModel","_this$grid2","columnCount","rightVisible","lastLeft","_this$grid3","_this$grid4","_this$grid5","metricState","newLeft","columnVisibleIndex","_this$grid6","allFrozenColumns","visibleIndex","newMovedColumns","modelIndexes","isVisible","_this$grid7","defaultWidth","calculatedWidth","getOrThrow","_model$layoutHints$fr","_model$layoutHints2","_this$grid8","onError","loadingMessage","_this$grid9","entries","columnWidth","currentSorts","_this$grid10","_this$grid11","isAbs","_this$grid12","focusIndex","_model2","_column","_this$grid13","_model$layoutHints3","_dh$SearchDisplayMode","_dh$SearchDisplayMode2","searchDisplayMode","_this$crossColumnRef","_this$crossColumnRef2","_this$grid14","_this$grid15","_this$grid16","isGotoShown","_this$gotoRowRef$curr","cursorRow","cursorColumn","cellValue","_document","_document$activeEleme","pendingSavePromise","containsGridCellInputField","_this3$grid","ValidationError","newPendingSavePromise","_this4","onColumnSelected","dataMap","onDataSelected","_this5","groupedColumns","isExpandable","isGrouped","_this$grid17","oldSort","newSort","_this$grid18","_this$filterInputRef","focusedFilterBarColumn","_this$filterInputRef2","onCreateChart","_ref15","_this$grid19","selectedFormat","prevCustomColumnFormatMap","columnFormattingRule","_ref16","newOptions","_ref17","isMissingPartitionError","_this$grid20","_this$grid$state","_this$grid21","selectionEndRow","bottomViewport","bottomNonFloating","_this$grid22","onSelectionChanged","onChangeApplied","_this$grid23","tooltip","oldCustomColumns","customColumn","removedColumnNames","newSorts","newSelectDistinctColumns","isReady","_this$grid24","_this$grid25","aggregation","_ref18","_rollupConfig$columns","_rollupConfig$columns2","fileName","frozenTable","tableSubscription","snapshotRanges","includeColumnHeaders","useUnformattedValues","_ref19","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","width","columnHeaderMaxDepth","columnX","clamp","rowNumber","rowInt","_this$grid26","_this$grid27","_this$grid28","boundedLeft","boundedWidth","virtualReference","_this$tooltip","_this$grid29","prevColumnName","gotoValueManuallyChanged","_index","_column2","prevColumn","_value3","_rollupConfig$columns3","_rollupConfig$columns4","_this7","_this$grid31","_this$grid31$state$dr","_openOptions","getDownloadWorker","isStuckToBottom","isStuckToRight","onlyFetchVisibleColumns","onAdvancedSettingsChange","hoverAdvancedFilter","shownAdvancedFilter","conditionalFormatEditIndex","isTableDownloading","selectedAggregation","pendingSaveError","toastMessage","showOverflowModal","showNoPastePermissionModal","noPastePermissionError","overflowText","singleColumnHeaderHeight","stateOverride","isRollup","focusField","gridX","gridY","_theme$filterBarHeigh","_theme$filterBarHeigh2","_this$grid30","x","y","fieldWidth","fieldHeight","_value4","advancedFilter","isBarFiltered","loadingElement","loadingStatus","_gridY","columnTooltip","_this$tooltip2","filterBar","_gridX","_gridY2","visibleColumns","_allColumnXs","_allColumnWidths","filterBarHeight","_loop2","isFilterable","_y","_style","_advancedFilter","isFilterSet","isFilterVisible","_this7$grid","advancedFilterMenus","_gridX2","_visibleColumns","_allColumnXs2","_allColumnWidths2","_loop3","_i3","xColumnHeader","xFilterBar","_style2","_modelColumn","_column3","_advancedFilter2","isSortDirection","_ret","openOptionsStack","ChartBuilder","VisibilityOrderingBuilder","CustomColumnBuilder","RollupRows","Aggregations","AggregationEdit","Grid","vsMenu","TableSaver","tableSaver","SlideTransition","Stack","Page","ContextActions","IrisGridThemeContext","DownloadServiceWorkerUtils","PropTypes"],"mappings":"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"}
1
+ {"version":3,"file":"IrisGrid-DDWhMqak.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(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n/* eslint react/no-did-update-set-state: \"off\" */\nimport React, { PureComponent } from 'react';\nimport { Button, Select } from '@deephaven/components';\nimport { getLabelForBooleanFilter, getLabelForDateFilter, getLabelForNumberFilter, getLabelForTextFilter } from '@deephaven/filters';\nimport { vsTrash } from '@deephaven/icons';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport classNames from 'classnames';\nimport memoizeOne from 'memoize-one';\nimport \"./AdvancedFilterCreatorFilterItem.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('AdvancedFilterCreatorFilterItem');\nexport class AdvancedFilterCreatorFilterItem extends PureComponent {\n static getLabelForFilter(columnType, filterType) {\n try {\n if (TableUtils.isNumberType(columnType) || TableUtils.isCharType(columnType)) {\n return getLabelForNumberFilter(filterType);\n }\n if (TableUtils.isTextType(columnType)) {\n return getLabelForTextFilter(filterType);\n }\n if (TableUtils.isDateType(columnType)) {\n return getLabelForDateFilter(filterType);\n }\n if (TableUtils.isBooleanType(columnType)) {\n return getLabelForBooleanFilter(filterType);\n }\n throw new Error(\"Unrecognized column type: \".concat(columnType));\n } catch (e) {\n log.warn(e);\n return '';\n }\n }\n constructor(props) {\n super(props);\n _defineProperty(this, \"typeDropdown\", void 0);\n _defineProperty(this, \"getCachedIsValid\", memoizeOne((column, operation, value, timeZone, tableUtils) => {\n try {\n // We don't want to show an error for an empty value\n return !value || tableUtils.makeAdvancedValueFilter(column, operation, value, timeZone) != null;\n } catch (e) {\n return false;\n }\n }));\n this.handleDelete = this.handleDelete.bind(this);\n this.handleTypeChange = this.handleTypeChange.bind(this);\n this.handleValueChange = this.handleValueChange.bind(this);\n this.typeDropdown = null;\n var {\n value: _value = '',\n filterTypes,\n selectedType = filterTypes[0]\n } = props;\n this.state = {\n selectedType,\n value: _value\n };\n }\n componentDidMount() {\n var _this$typeDropdown;\n (_this$typeDropdown = this.typeDropdown) === null || _this$typeDropdown === void 0 ? void 0 : _this$typeDropdown.focus();\n }\n componentDidUpdate(prevProps) {\n var {\n value,\n selectedType\n } = this.props;\n if (selectedType !== undefined && prevProps.selectedType !== selectedType) {\n this.setState({\n selectedType\n });\n }\n if (value !== undefined && prevProps.value !== value) {\n this.setState({\n value\n });\n }\n }\n handleTypeChange(eventTargetValue) {\n var selectedType = eventTargetValue;\n log.debug2('typeChange', selectedType);\n this.setState({\n selectedType\n });\n var {\n onChange\n } = this.props;\n var {\n value\n } = this.state;\n if (value != null && value.length > 0) {\n // Don't send an update unless there's already a value entered\n onChange(selectedType, value);\n }\n }\n handleValueChange(event) {\n log.debug2('valueChange');\n var {\n value\n } = event.target;\n this.setState({\n value\n });\n var {\n onChange\n } = this.props;\n var {\n selectedType\n } = this.state;\n if (selectedType != null) {\n // Don't send an update unless they've already selected a type\n onChange(selectedType, value);\n }\n }\n handleDelete() {\n log.debug('delete');\n var {\n onDelete\n } = this.props;\n onDelete();\n }\n render() {\n var {\n column,\n filterTypes,\n formatter,\n tableUtils\n } = this.props;\n var {\n selectedType,\n value\n } = this.state;\n var showValueInput = !TableUtils.isBooleanType(column.type);\n var typeOptionElements = [];\n var isValid = this.getCachedIsValid(column, selectedType, value, formatter.timeZone, tableUtils);\n for (var i = 0; i < filterTypes.length; i += 1) {\n var _type = filterTypes[i];\n var label = AdvancedFilterCreatorFilterItem.getLabelForFilter(column.type, _type);\n var element = /*#__PURE__*/_jsx(\"option\", {\n value: _type,\n children: label\n }, _type);\n typeOptionElements.push(element);\n }\n return /*#__PURE__*/_jsx(\"div\", {\n className: \"advanced-filter-creator-filter-item\",\n children: /*#__PURE__*/_jsxs(\"div\", {\n className: \"form-row\",\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"form-group col\",\n children: /*#__PURE__*/_jsx(Select, {\n className: \"form-control\",\n value: selectedType,\n onChange: this.handleTypeChange,\n ref: typeDropdown => {\n this.typeDropdown = typeDropdown;\n },\n children: typeOptionElements\n })\n }), showValueInput && /*#__PURE__*/_jsx(\"div\", {\n className: \"form-group col\",\n children: /*#__PURE__*/_jsx(\"div\", {\n className: \"input-group\",\n children: /*#__PURE__*/_jsx(\"input\", {\n type: \"text\",\n className: classNames('form-control', {\n error: !isValid\n }),\n placeholder: \"Enter value\",\n value: value,\n onChange: this.handleValueChange\n })\n })\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"form-group col-1 px-0\",\n children: /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: \"w-100 h-100 p-0 m-0\",\n onClick: this.handleDelete,\n icon: vsTrash,\n tooltip: \"Remove Filter\"\n })\n })]\n })\n });\n }\n}\nexport default AdvancedFilterCreatorFilterItem;\n//# sourceMappingURL=AdvancedFilterCreatorFilterItem.js.map","function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n/* eslint react/no-did-update-set-state: \"off\" */\nimport React, { PureComponent } from 'react';\nimport { LoadingSpinner, SelectValueList, FadeTransition } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('AdvancedFilterCreatorSelectValueList');\n/**\n * Select values from a long scrollable list.\n * Swaps items in and out for infinite scrolling\n */\nclass AdvancedFilterCreatorSelectValueList extends PureComponent {\n /**\n * Get the index of a value in an array. Has some special handling for some types, like DateTimes and Longs.\n * @param value The value to search for\n * @param values The array of values to search within\n */\n static indexOf(value, values) {\n for (var i = 0; i < values.length; i += 1) {\n var v = values[i];\n if (v === value || v != null && v.valueOf != null && value != null && value.valueOf != null && v.valueOf() === value.valueOf()) {\n return i;\n }\n }\n return -1;\n }\n constructor(props) {\n super(props);\n _defineProperty(this, \"dh\", void 0);\n _defineProperty(this, \"list\", void 0);\n this.handleSelect = this.handleSelect.bind(this);\n this.handleViewportChange = this.handleViewportChange.bind(this);\n this.handleSelectionUpdate = this.handleSelectionUpdate.bind(this);\n this.handleTableUpdate = this.handleTableUpdate.bind(this);\n var {\n selectedValues,\n dh\n } = this.props;\n this.dh = dh;\n this.list = null;\n this.state = {\n itemCount: 0,\n items: [],\n offset: 0,\n selectedValues,\n isLoading: true\n };\n }\n componentDidMount() {\n var {\n table\n } = this.props;\n if (table) this.startListening(table);\n }\n componentDidUpdate(prevProps) {\n var {\n filters,\n invertSelection,\n selectedValues,\n table\n } = this.props;\n if (prevProps.table !== table) {\n if (prevProps.table) this.stopListening(prevProps.table);\n if (table) this.startListening(table);\n this.resetViewport();\n }\n if (prevProps.invertSelection !== invertSelection) {\n this.setState({\n selectedValues: []\n }, this.handleSelectionUpdate);\n }\n if (prevProps.selectedValues !== selectedValues) {\n this.setState({\n selectedValues\n }, this.handleSelectionUpdate);\n }\n if (prevProps.filters !== filters) {\n table === null || table === void 0 ? void 0 : table.applyFilter(filters);\n this.resetViewport();\n }\n }\n componentWillUnmount() {\n var {\n table\n } = this.props;\n if (table) this.stopListening(table);\n }\n handleSelect(itemIndex, value) {\n var {\n invertSelection\n } = this.props;\n var {\n selectedValues\n } = this.state;\n selectedValues = [...selectedValues];\n var selectedIndex = AdvancedFilterCreatorSelectValueList.indexOf(value, selectedValues);\n if (selectedIndex >= 0) {\n selectedValues.splice(selectedIndex, 1);\n } else {\n selectedValues.push(value);\n }\n var isSelected = selectedIndex < 0;\n if (invertSelection) {\n isSelected = !isSelected;\n }\n var {\n offset\n } = this.state;\n var {\n items\n } = this.state;\n items = [...items];\n var visibleItemIndex = itemIndex - offset;\n if (visibleItemIndex >= 0 && visibleItemIndex < items.length) {\n items[visibleItemIndex].isSelected = isSelected;\n }\n this.setState({\n items,\n selectedValues\n });\n var {\n onChange\n } = this.props;\n onChange(selectedValues, invertSelection);\n }\n handleViewportChange(top, bottom) {\n this.updateViewport(top, bottom);\n }\n handleSelectionUpdate() {\n this.updateItemSelection();\n }\n handleTableUpdate(event) {\n var {\n table,\n formatter\n } = this.props;\n if (!table) return;\n var data = event.detail;\n var {\n offset\n } = data;\n var items = [];\n var column = table.columns[0];\n for (var r = 0; r < data.rows.length; r += 1) {\n var row = data.rows[r];\n var value = row.get(column);\n var displayValue = void 0;\n if (value == null) {\n displayValue = /*#__PURE__*/_jsx(\"i\", {\n className: \"text-muted\",\n children: \"null\"\n });\n } else if (value === '') {\n displayValue = /*#__PURE__*/_jsx(\"i\", {\n className: \"text-muted\",\n children: \"empty\"\n });\n } else {\n displayValue = formatter.getFormattedString(value, column.type, column.name);\n }\n var isSelected = this.isValueSelected(value);\n items.push({\n displayValue,\n value,\n isSelected\n });\n }\n log.debug2('Received table update:', offset, items.length);\n var itemCount = table.size;\n this.setState({\n itemCount,\n items,\n offset,\n isLoading: false\n });\n }\n isValueSelected(value) {\n var {\n invertSelection\n } = this.props;\n var {\n selectedValues\n } = this.state;\n\n // Need to check if any of the valueOf matches, timestamp value that is equal\n var selectedIndex = AdvancedFilterCreatorSelectValueList.indexOf(value, selectedValues);\n return invertSelection ? selectedIndex < 0 : selectedIndex >= 0;\n }\n startListening(table) {\n table.addEventListener(this.dh.Table.EVENT_UPDATED, this.handleTableUpdate);\n }\n stopListening(table) {\n table.removeEventListener(this.dh.Table.EVENT_UPDATED, this.handleTableUpdate);\n }\n resetViewport() {\n if (this.list && this.list.topRow != null && this.list.bottomRow != null) {\n this.updateViewport(this.list.topRow, this.list.bottomRow, true);\n }\n }\n updateItemSelection() {\n var {\n items\n } = this.state;\n items = [...items];\n for (var i = 0; i < items.length; i += 1) {\n var item = items[i];\n var {\n value\n } = item;\n item.isSelected = this.isValueSelected(value);\n }\n this.setState({\n items\n });\n }\n updateViewport(top, bottom) {\n var isLoading = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var {\n table\n } = this.props;\n if (table == null) {\n return;\n }\n if (isLoading) {\n this.setState({\n isLoading: true\n });\n }\n var viewportSize = bottom - top + 1;\n var topRow = Math.max(0, top - viewportSize * 3);\n var bottomRow = Math.max(topRow, bottom + viewportSize * 3);\n log.debug2('Setting viewport', topRow, ',', bottomRow);\n table.setViewport(topRow, bottomRow);\n }\n render() {\n var {\n offset,\n isLoading,\n items,\n itemCount\n } = this.state;\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"select-value-list-wrapper\",\n children: [/*#__PURE__*/_jsx(SelectValueList, {\n itemCount: itemCount,\n items: items,\n offset: offset,\n onSelect: this.handleSelect,\n onViewportChange: this.handleViewportChange,\n ref: list => {\n this.list = list;\n }\n }), /*#__PURE__*/_jsx(FadeTransition, {\n in: isLoading,\n mountOnEnter: true,\n unmountOnExit: true,\n children: /*#__PURE__*/_jsx(\"div\", {\n className: \"loading-list\",\n children: /*#__PURE__*/_jsx(LoadingSpinner, {\n className: \"loading-spinner-large\"\n })\n })\n })]\n });\n }\n}\n_defineProperty(AdvancedFilterCreatorSelectValueList, \"defaultProps\", {\n invertSelection: true,\n selectedValues: [],\n onChange: () => undefined\n});\nexport default AdvancedFilterCreatorSelectValueList;\n//# sourceMappingURL=AdvancedFilterCreatorSelectValueList.js.map","function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n/* eslint react/no-did-update-set-state: \"off\" */\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport { Button, FadeTransition } from '@deephaven/components';\nimport AdvancedFilterCreatorSelectValueList from \"./AdvancedFilterCreatorSelectValueList.js\";\nimport \"./AdvancedFilterCreatorSelectValue.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nclass AdvancedFilterCreatorSelectValue extends PureComponent {\n constructor(props) {\n super(props);\n _defineProperty(this, \"searchTablePromise\", void 0);\n _defineProperty(this, \"tableUtils\", void 0);\n _defineProperty(this, \"updateFilterTimer\", void 0);\n this.handleSelectAllClick = this.handleSelectAllClick.bind(this);\n this.handleClearAllClick = this.handleClearAllClick.bind(this);\n this.handleListChange = this.handleListChange.bind(this);\n this.handleSearchChange = this.handleSearchChange.bind(this);\n this.handleUpdateFilterTimeout = this.handleUpdateFilterTimeout.bind(this);\n var {\n dh,\n invertSelection,\n selectedValues\n } = props;\n this.tableUtils = new TableUtils(dh);\n this.state = {\n filters: [],\n invertSelection,\n selectedValues,\n searchText: ''\n };\n }\n componentDidMount() {\n this.initSearchTable();\n }\n componentDidUpdate(prevProps, prevState) {\n var {\n invertSelection,\n selectedValues,\n table\n } = this.props;\n if (prevProps.table !== table) {\n this.initSearchTable();\n }\n if (prevProps.invertSelection !== invertSelection) {\n this.setState({\n invertSelection\n });\n }\n if (prevProps.selectedValues !== selectedValues) {\n this.setState({\n selectedValues\n });\n }\n var {\n table: searchTable,\n searchText\n } = this.state;\n if (searchTable !== prevState.table) {\n if (prevState.table != null) {\n prevState.table.close();\n }\n if (searchTable != null) {\n this.startUpdateFilterTimer();\n }\n }\n if (searchText !== prevState.searchText) {\n this.startUpdateFilterTimer();\n }\n }\n componentWillUnmount() {\n var {\n table\n } = this.state;\n if (table != null) {\n table.close();\n }\n this.searchTablePromise = undefined;\n this.stopUpdateFilterTimer();\n }\n getColumnName() {\n var {\n table\n } = this.props;\n if (table != null) {\n return table.columns[0].name;\n }\n return '';\n }\n getDisplayedValuesCount() {\n var {\n invertSelection,\n selectedValues,\n table\n } = this.state;\n if (table == null) {\n return null;\n }\n if (invertSelection) {\n return table.totalSize - selectedValues.length;\n }\n return selectedValues.length;\n }\n getDisplayedValueText() {\n var count = this.getDisplayedValuesCount();\n var {\n table\n } = this.state;\n var {\n formatter\n } = this.props;\n if (count != null && table != null) {\n var formattedCount = formatter.getFormattedString(count, 'long');\n var formattedTableSize = formatter.getFormattedString(table.totalSize, 'long');\n var prefix = '';\n if (count < 1000000) {\n prefix = 'Displaying ';\n }\n return \"\".concat(prefix).concat(formattedCount, \" of \").concat(formattedTableSize);\n }\n return null;\n }\n initSearchTable() {\n var {\n table\n } = this.props;\n if (table == null) {\n return;\n }\n var searchTablePromise = table.copy();\n this.searchTablePromise = searchTablePromise;\n this.searchTablePromise.then(searchTable => {\n if (this.searchTablePromise === searchTablePromise) {\n this.setState({\n table: searchTable\n });\n this.searchTablePromise = undefined;\n } else {\n searchTable.close();\n }\n });\n }\n handleListChange(selectedValues, invertSelection) {\n this.setState({\n selectedValues,\n invertSelection\n });\n var {\n onChange\n } = this.props;\n onChange(selectedValues, invertSelection);\n }\n handleSearchChange(event) {\n var searchText = event.target.value;\n this.setState({\n searchText\n });\n }\n handleSelectAllClick() {\n this.resetSelection(true);\n }\n handleClearAllClick() {\n this.resetSelection(false);\n }\n handleUpdateFilterTimeout() {\n this.updateFilterTimer = undefined;\n this.updateTableFilter();\n }\n resetSelection(invertSelection) {\n var selectedValues = [];\n this.setState({\n invertSelection,\n selectedValues\n });\n var {\n onChange\n } = this.props;\n onChange(selectedValues, invertSelection);\n }\n startUpdateFilterTimer() {\n this.stopUpdateFilterTimer();\n this.updateFilterTimer = setTimeout(this.handleUpdateFilterTimeout, AdvancedFilterCreatorSelectValue.searchDebounceTime);\n }\n stopUpdateFilterTimer() {\n if (this.updateFilterTimer != null) {\n clearTimeout(this.updateFilterTimer);\n this.updateFilterTimer = undefined;\n }\n }\n updateTableFilter() {\n var {\n table,\n searchText\n } = this.state;\n var {\n timeZone\n } = this.props;\n var {\n tableUtils\n } = this;\n var column = table === null || table === void 0 ? void 0 : table.columns[0];\n var filters = [];\n if (column == null) {\n return;\n }\n var error;\n if (searchText.length > 0) {\n var filter = null;\n if (TableUtils.isCharType(column.type)) {\n // Just exact match for char\n filter = tableUtils.makeQuickFilter(column, searchText);\n } else if (TableUtils.isTextType(column.type)) {\n // case insensitive & contains search text\n filter = tableUtils.makeQuickFilter(column, \"~\".concat(searchText), timeZone);\n } else {\n // greater than or equal search for everything else\n // we may want to be smarter with some other types (like dates)\n filter = tableUtils.makeQuickFilter(column, \">=\".concat(searchText), timeZone);\n }\n if (filter != null) {\n filters.push(filter);\n } else {\n error = 'Invalid search text';\n }\n }\n this.setState({\n filters,\n error\n });\n }\n render() {\n var {\n error,\n filters,\n invertSelection,\n selectedValues,\n searchText,\n table\n } = this.state;\n var {\n dh,\n formatter,\n showSearch\n } = this.props;\n var columnName = this.getColumnName();\n var displayedValuesText = this.getDisplayedValueText();\n var placeholderText = columnName ? \"Find \".concat(columnName, \"...\") : '';\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"advanced-filter-creator-select-value\",\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: showSearch ? 'form-group' : '',\n children: [/*#__PURE__*/_jsx(\"label\", {\n htmlFor: \"advanced-filter-creator-select-value-input\",\n children: \"Select Values\"\n }), showSearch && /*#__PURE__*/_jsx(\"input\", {\n type: \"text\",\n className: classNames('form-control', {\n 'is-invalid': error != null\n }),\n id: \"advanced-filter-creator-select-value-input\",\n placeholder: placeholderText,\n value: searchText,\n onChange: this.handleSearchChange\n })]\n }), /*#__PURE__*/_jsx(AdvancedFilterCreatorSelectValueList, {\n dh: dh,\n table: table,\n filters: filters,\n invertSelection: invertSelection,\n selectedValues: selectedValues,\n formatter: formatter,\n onChange: this.handleListChange\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"advanced-filter-creator-select-meta-row\",\n children: [/*#__PURE__*/_jsxs(\"div\", {\n children: [/*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n onClick: this.handleSelectAllClick,\n children: \"Select All\"\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n onClick: this.handleClearAllClick,\n children: \"Clear\"\n })]\n }), /*#__PURE__*/_jsx(FadeTransition, {\n in: displayedValuesText != null,\n mountOnEnter: true,\n unmountOnExit: true,\n children: /*#__PURE__*/_jsx(\"div\", {\n className: \"row-count-info\",\n children: displayedValuesText\n })\n })]\n })]\n });\n }\n}\n_defineProperty(AdvancedFilterCreatorSelectValue, \"searchDebounceTime\", 250);\n_defineProperty(AdvancedFilterCreatorSelectValue, \"defaultProps\", {\n invertSelection: true,\n selectedValues: [],\n onChange: () => undefined,\n showSearch: true\n});\nexport default AdvancedFilterCreatorSelectValue;\n//# sourceMappingURL=AdvancedFilterCreatorSelectValue.js.map","function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n/* eslint-disable jsx-a11y/no-noninteractive-tabindex */\n// disabled for tab-index on focus traps, which are intentionally non-interactive\n\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport memoize from 'memoize-one';\nimport { Operator as FilterOperator, assertOperatorValue as assertFilterOperatorValue } from '@deephaven/filters';\nimport { dhSortAmountDown, dhNewCircleLargeFilled } from '@deephaven/icons';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport { Button, ContextActionUtils } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport { assertNotNull, PromiseUtils } from '@deephaven/utils';\nimport { nanoid } from 'nanoid';\nimport AdvancedFilterCreatorFilterItem from \"./AdvancedFilterCreatorFilterItem.js\";\nimport AdvancedFilterCreatorSelectValue from \"./AdvancedFilterCreatorSelectValue.js\";\nimport \"./AdvancedFilterCreator.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nvar log = Log.module('AdvancedFilterCreator');\nclass AdvancedFilterCreator extends PureComponent {\n static makeFilterItem() {\n return {\n key: nanoid()\n };\n }\n constructor(props) {\n var _options$filterItems$, _options$filterItems;\n super(props);\n _defineProperty(this, \"focusTrapContainer\", void 0);\n _defineProperty(this, \"debounceTimeout\", void 0);\n _defineProperty(this, \"valuesTablePromise\", void 0);\n _defineProperty(this, \"getFilterTypes\", memoize(columnType => TableUtils.getFilterTypes(columnType)));\n this.handleAddAnd = this.handleAddAnd.bind(this);\n this.handleAddOr = this.handleAddOr.bind(this);\n this.handleChangeFilterOperator = this.handleChangeFilterOperator.bind(this);\n this.handleDone = this.handleDone.bind(this);\n this.handleFilterChange = this.handleFilterChange.bind(this);\n this.handleFilterDelete = this.handleFilterDelete.bind(this);\n this.handleSelectValueChange = this.handleSelectValueChange.bind(this);\n this.handleReset = this.handleReset.bind(this);\n this.handleSortDown = this.handleSortDown.bind(this);\n this.handleSortUp = this.handleSortUp.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n this.handleFocusTrapStart = this.handleFocusTrapStart.bind(this);\n this.handleFocusTrapEnd = this.handleFocusTrapEnd.bind(this);\n this.handleUpdateTimeout = this.handleUpdateTimeout.bind(this);\n this.focusTrapContainer = /*#__PURE__*/React.createRef();\n var {\n model,\n column,\n options\n } = props;\n var {\n filterOperators,\n invertSelection,\n selectedValues\n } = options;\n\n // can be null or an empty array\n var filterItems = (_options$filterItems$ = (_options$filterItems = options.filterItems) === null || _options$filterItems === void 0 ? void 0 : _options$filterItems.map(_ref => {\n var {\n selectedType,\n value\n } = _ref;\n return {\n selectedType,\n value,\n key: nanoid()\n };\n })) !== null && _options$filterItems$ !== void 0 ? _options$filterItems$ : [];\n if (filterItems.length === 0) {\n filterItems.push(AdvancedFilterCreator.makeFilterItem());\n }\n if (filterOperators == null) {\n filterOperators = [];\n }\n if (invertSelection == null) {\n invertSelection = true;\n }\n if (selectedValues == null) {\n selectedValues = [];\n }\n var columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n var isSortable = model.isColumnSortable(columnIndex);\n this.state = {\n // Filter items\n filterItems,\n // And/Or between the filter items\n filterOperators,\n invertSelection,\n selectedValues,\n valuesTableError: null,\n valuesTable: undefined,\n isSortable\n };\n }\n componentDidMount() {\n this.initValuesTable();\n }\n componentWillUnmount() {\n if (this.debounceTimeout != null) {\n clearTimeout(this.debounceTimeout);\n this.sendUpdate();\n }\n if (this.valuesTablePromise != null) {\n this.valuesTablePromise.cancel();\n }\n }\n getFilterChangeHandler(index) {\n return this.handleFilterChange.bind(this, index);\n }\n getFilterDeleteHandler(index) {\n return this.handleFilterDelete.bind(this, index);\n }\n initValuesTable() {\n var {\n model,\n column\n } = this.props;\n if (!model.isValuesTableAvailable) {\n log.debug('No values table for this model, just ignore');\n return;\n }\n this.valuesTablePromise = TableUtils.makeCancelableTablePromise(model.valuesTable(column));\n this.valuesTablePromise.then(valuesTable => {\n var _valuesTable$columns$;\n if ((_valuesTable$columns$ = valuesTable.columns[0].isSortable) !== null && _valuesTable$columns$ !== void 0 ? _valuesTable$columns$ : true) {\n var sort = valuesTable.columns[0].sort().asc();\n valuesTable.applySort([sort]);\n }\n this.setState({\n valuesTable\n });\n }).catch(error => {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n log.error('Unable to open values table', error);\n this.setState({\n valuesTableError: error\n });\n });\n }\n handleFocusTrapEnd() {\n var _this$focusTrapContai, _this$focusTrapContai2;\n ((_this$focusTrapContai = this.focusTrapContainer) === null || _this$focusTrapContai === void 0 ? void 0 : (_this$focusTrapContai2 = _this$focusTrapContai.current) === null || _this$focusTrapContai2 === void 0 ? void 0 : _this$focusTrapContai2.querySelector('button,select,input,textarea')).focus();\n }\n handleFocusTrapStart() {\n var _this$focusTrapContai3, _this$focusTrapContai4;\n var inputs = (_this$focusTrapContai3 = this.focusTrapContainer) === null || _this$focusTrapContai3 === void 0 ? void 0 : (_this$focusTrapContai4 = _this$focusTrapContai3.current) === null || _this$focusTrapContai4 === void 0 ? void 0 : _this$focusTrapContai4.querySelectorAll('button,select,input,textarea');\n if (inputs && inputs.length > 0) {\n var element = inputs[inputs.length - 1];\n element.focus();\n }\n }\n handleAddAnd() {\n var {\n filterItems,\n filterOperators\n } = this.state;\n filterItems = filterItems.concat(AdvancedFilterCreator.makeFilterItem());\n filterOperators = filterOperators.concat(FilterOperator.and);\n this.setState({\n filterItems,\n filterOperators\n });\n }\n handleAddOr() {\n var {\n filterItems,\n filterOperators\n } = this.state;\n filterItems = filterItems.concat(AdvancedFilterCreator.makeFilterItem());\n filterOperators = filterOperators.concat(FilterOperator.or);\n this.setState({\n filterItems,\n filterOperators\n });\n }\n handleChangeFilterOperator(index, operator) {\n var {\n filterOperators\n } = this.state;\n filterOperators = [...filterOperators];\n assertFilterOperatorValue(operator);\n filterOperators[index] = operator;\n this.setState({\n filterOperators\n });\n this.startUpdateTimer();\n }\n handleFilterChange(filterIndex, selectedType, value) {\n var {\n filterItems\n } = this.state;\n filterItems = [...filterItems];\n var {\n key\n } = filterItems[filterIndex];\n filterItems[filterIndex] = {\n key,\n selectedType,\n value\n };\n this.setState({\n filterItems\n });\n this.startUpdateTimer();\n }\n handleFilterDelete(filterIndex) {\n var {\n filterItems,\n filterOperators\n } = this.state;\n filterItems = [...filterItems];\n filterOperators = [...filterOperators];\n if (filterIndex < filterItems.length) {\n filterItems.splice(filterIndex, 1);\n }\n if (filterIndex < filterOperators.length) {\n filterOperators.splice(filterIndex, 1);\n } else if (filterIndex === filterOperators.length) {\n // When deleting the last filter item, we also need to remove the last filter operator\n filterOperators.splice(filterOperators.length - 1, 1);\n }\n if (filterItems.length === 0) {\n filterItems.push(AdvancedFilterCreator.makeFilterItem());\n }\n this.setState({\n filterItems,\n filterOperators\n });\n this.startUpdateTimer();\n }\n handleSelectValueChange(selectedValues, invertSelection) {\n this.setState({\n selectedValues,\n invertSelection\n });\n this.startUpdateTimer();\n }\n handleReset() {\n log.debug('Resetting Advanced Filter');\n this.setState({\n filterItems: [AdvancedFilterCreator.makeFilterItem()],\n filterOperators: [],\n selectedValues: [],\n invertSelection: true\n });\n this.startUpdateTimer();\n }\n handleSortDown(event) {\n var addToExisting = ContextActionUtils.isModifierKeyDown(event);\n this.sortTable(TableUtils.sortDirection.descending, addToExisting);\n }\n handleSortUp(event) {\n var addToExisting = ContextActionUtils.isModifierKeyDown(event);\n this.sortTable(TableUtils.sortDirection.ascending, addToExisting);\n }\n handleSubmit(event) {\n log.debug('Submitting Advanced Filter');\n this.stopUpdateTimer();\n this.sendUpdate();\n event.preventDefault();\n }\n handleDone(event) {\n log.debug('Submitting and Closing Advanced Filter');\n this.stopUpdateTimer();\n this.sendUpdate();\n var {\n onDone\n } = this.props;\n onDone();\n event.preventDefault();\n }\n handleUpdateTimeout() {\n this.debounceTimeout = undefined;\n this.sendUpdate();\n }\n\n /**\n * Convenience function to check if the previous filter has been inputted, and\n * we should show the add filter buttons (+ AND OR)\n * @returns true If the add filter buttons should be shown, false otherwise\n */\n shouldShowAddFilter() {\n var {\n filterItems\n } = this.state;\n if (filterItems.length === 0) {\n return false;\n }\n var filterItem = filterItems[filterItems.length - 1];\n var {\n selectedType,\n value\n } = filterItem;\n return selectedType != null && selectedType.length > 0 && value != null && value.length > 0;\n }\n\n /**\n * Sorts the table in the specified direction. If already sorted in that direction, remove it.\n * @param direction The sort direction, ASC or DESC\n * @param addToExisting Add to the existing sort, or replace the existing table sort\n */\n sortTable(direction) {\n var addToExisting = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var {\n column,\n onSortChange\n } = this.props;\n var {\n isSortable\n } = this.state;\n if (isSortable) {\n onSortChange(column, direction, addToExisting);\n }\n }\n startUpdateTimer() {\n this.stopUpdateTimer();\n this.debounceTimeout = setTimeout(this.handleUpdateTimeout, AdvancedFilterCreator.debounceFilterUpdate);\n }\n stopUpdateTimer() {\n if (this.debounceTimeout !== undefined) {\n clearTimeout(this.debounceTimeout);\n this.debounceTimeout = undefined;\n }\n }\n sendUpdate() {\n var {\n filterItems,\n filterOperators,\n invertSelection,\n selectedValues\n } = this.state;\n var {\n column,\n onFilterChange,\n model,\n tableUtils\n } = this.props;\n var {\n formatter\n } = model;\n var items = filterItems.filter(_ref2 => {\n var {\n selectedType,\n value\n } = _ref2;\n return selectedType != null && value != null && value !== '';\n });\n var operators = filterOperators.filter((operator, i) => operator != null && filterItems[i].selectedType != null && filterItems[i].value != null && filterItems[i].value !== '').slice(0, items.length - 1);\n // slice last operator, user may have set an operator but not a value\n\n var options = {\n filterItems: items,\n filterOperators: operators,\n invertSelection,\n selectedValues\n };\n var filter = tableUtils.makeAdvancedFilter(column, options, formatter.timeZone);\n onFilterChange(column, filter, options);\n }\n render() {\n var _this = this;\n var {\n column,\n model,\n sortDirection,\n formatter,\n tableUtils\n } = this.props;\n var {\n filterItems,\n filterOperators,\n invertSelection,\n selectedValues,\n valuesTable,\n valuesTableError,\n isSortable\n } = this.state;\n var {\n dh,\n isValuesTableAvailable\n } = model;\n var isBoolean = TableUtils.isBooleanType(column.type);\n var isDateType = TableUtils.isDateType(column.type);\n var filterTypes = this.getFilterTypes(column.type);\n var columnType = column.type.substring(column.type.lastIndexOf('.') + 1);\n var filterItemElements = [];\n if (!isBoolean && filterTypes.length) {\n var _loop = function _loop(i) {\n var filterItem = filterItems[i];\n var {\n key,\n selectedType,\n value\n } = filterItem;\n var element = /*#__PURE__*/_jsx(AdvancedFilterCreatorFilterItem, {\n column: column,\n filterTypes: filterTypes,\n onChange: _this.getFilterChangeHandler(i),\n onDelete: _this.getFilterDeleteHandler(i),\n selectedType: selectedType,\n value: value,\n formatter: formatter,\n tableUtils: tableUtils\n }, key);\n filterItemElements.push(element);\n if (i < filterOperators.length) {\n var filterOperator = filterOperators[i];\n var isAndFilter = filterOperator === FilterOperator.and;\n var operatorElement = /*#__PURE__*/_jsxs(\"div\", {\n className: \"form-row justify-content-end advanced-filter-creator-filter-operator\",\n children: [/*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: classNames('filter-operator', {\n active: isAndFilter\n }),\n onClick: () => _this.handleChangeFilterOperator(i, FilterOperator.and),\n children: \"AND\"\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: classNames('filter-operator', {\n active: !isAndFilter\n }),\n onClick: () => _this.handleChangeFilterOperator(i, FilterOperator.or),\n children: \"OR\"\n })]\n }, \"filterOperator\".concat(key));\n filterItemElements.push(operatorElement);\n }\n };\n for (var i = 0; i < filterItems.length; i += 1) {\n _loop(i);\n }\n }\n var showAddFilterItem = this.shouldShowAddFilter();\n var addFilterItem = /*#__PURE__*/_jsxs(\"div\", {\n className: classNames('form-row justify-content-end add-filter-item', {\n hidden: !showAddFilterItem\n }),\n children: [/*#__PURE__*/_jsx(\"span\", {\n className: \"text-muted\",\n children: /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: dhNewCircleLargeFilled\n })\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: \"btn-filter-item\",\n onClick: this.handleAddAnd,\n disabled: !showAddFilterItem,\n tooltip: \"Add filter with AND\",\n children: \"AND\"\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: \"btn-filter-item\",\n onClick: this.handleAddOr,\n disabled: !showAddFilterItem,\n tooltip: \"Add filter with OR\",\n children: \"OR\"\n })]\n }, \"addFilterItem\");\n filterItemElements.push(addFilterItem);\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"advanced-filter-creator\",\n role: \"presentation\",\n children: [/*#__PURE__*/_jsx(\"div\", {\n tabIndex: 0,\n onFocus: this.handleFocusTrapStart\n }), /*#__PURE__*/_jsxs(\"form\", {\n onSubmit: this.handleSubmit,\n ref: this.focusTrapContainer,\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"title-bar\",\n children: [/*#__PURE__*/_jsx(\"h6\", {\n className: \"advanced-filter-title\",\n children: \"Advanced Filters\"\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"advanced-filter-menu-buttons\",\n children: [/*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: classNames('sort-operator', {\n active: sortDirection === TableUtils.sortDirection.descending\n }),\n onClick: this.handleSortDown,\n icon: dhSortAmountDown,\n tooltip: isSortable ? \"Sort \".concat(column.name, \" Descending\") : 'Not sortable',\n disabled: !isSortable\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: classNames('sort-operator', {\n active: sortDirection === TableUtils.sortDirection.ascending\n }),\n onClick: this.handleSortUp,\n icon: /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: dhSortAmountDown,\n rotation: 180\n }),\n tooltip: isSortable ? \"Sort \".concat(column.name, \" Ascending\") : 'Not sortable',\n disabled: !isSortable\n })]\n })]\n }), /*#__PURE__*/_jsx(\"hr\", {}), /*#__PURE__*/_jsxs(\"div\", {\n className: \"advanced-filter-column-name\",\n children: [column.name, \"\\xA0\", /*#__PURE__*/_jsxs(\"span\", {\n className: \"column-type\",\n children: [\"(\", columnType, \")\"]\n })]\n }), filterItemElements, isValuesTableAvailable && valuesTableError == null && /*#__PURE__*/_jsxs(_Fragment, {\n children: [!isBoolean && /*#__PURE__*/_jsx(\"hr\", {}), /*#__PURE__*/_jsx(\"div\", {\n className: \"form-group\",\n children: /*#__PURE__*/_jsx(AdvancedFilterCreatorSelectValue, {\n dh: dh,\n table: valuesTable,\n onChange: this.handleSelectValueChange,\n invertSelection: invertSelection,\n selectedValues: selectedValues,\n formatter: formatter,\n showSearch: !isDateType,\n timeZone: formatter.timeZone\n })\n })]\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"form-row justify-content-end\",\n children: [/*#__PURE__*/_jsx(Button, {\n kind: \"secondary\",\n className: \"mr-2\",\n onClick: this.handleReset,\n children: \"Reset\"\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"primary\",\n onClick: this.handleDone,\n children: \"Done\"\n })]\n })]\n }), /*#__PURE__*/_jsx(\"div\", {\n tabIndex: 0,\n onFocus: this.handleFocusTrapEnd\n })]\n });\n }\n}\n_defineProperty(AdvancedFilterCreator, \"debounceFilterUpdate\", 250);\n_defineProperty(AdvancedFilterCreator, \"defaultProps\", {\n options: {\n filterItems: null,\n filterOperators: null,\n invertSelection: true,\n selectedValues: []\n },\n sortDirection: null\n});\nexport default AdvancedFilterCreator;\n//# sourceMappingURL=AdvancedFilterCreator.js.map","import { getConditionDBString, getStyleDBString } from \"./ConditionalFormattingUtils.js\"; // Conditional formatting API utils in a separate file\n// to make ConditionalFormattingUtils.ts easier to test.\n// https://github.com/facebook/jest/issues/936#issuecomment-545080082\nexport function makeTernaryFormatRule(config, prevRule) {\n var styleDBString = getStyleDBString(config);\n if (styleDBString === undefined) {\n return undefined;\n }\n var conditionDBString = getConditionDBString(config);\n return \"\".concat(conditionDBString, \" ? \").concat(styleDBString, \" : \").concat(prevRule);\n}\nexport function makeRowFormatColumn(dh, rule) {\n return dh.Column.formatRowColor(rule);\n}\nexport function makeColumnFormatColumn(col, rule) {\n return col.formatColor(rule);\n}\n//# sourceMappingURL=ConditionalFormattingAPIUtils.js.map","import Log from '@deephaven/log';\nimport { DateUtils, TableUtils } from '@deephaven/jsapi-utils';\nimport { makeColumnFormatColumn, makeRowFormatColumn, makeTernaryFormatRule } from \"./ConditionalFormattingAPIUtils.js\";\nvar log = Log.module('ConditionalFormattingUtils');\nexport var FormatterType;\n(function (FormatterType) {\n FormatterType[\"CONDITIONAL\"] = \"conditional\";\n FormatterType[\"ROWS\"] = \"rows\";\n})(FormatterType || (FormatterType = {}));\nexport var NumberCondition;\n(function (NumberCondition) {\n NumberCondition[\"IS_EQUAL\"] = \"is-equal\";\n NumberCondition[\"IS_NOT_EQUAL\"] = \"is-not-equal\";\n NumberCondition[\"IS_BETWEEN\"] = \"is-between\";\n NumberCondition[\"GREATER_THAN\"] = \"greater-than\";\n NumberCondition[\"GREATER_THAN_OR_EQUAL\"] = \"greater-than-or-equal\";\n NumberCondition[\"LESS_THAN\"] = \"less-than\";\n NumberCondition[\"LESS_THAN_OR_EQUAL\"] = \"less-than-or-equal\";\n NumberCondition[\"IS_NULL\"] = \"is-null\";\n NumberCondition[\"IS_NOT_NULL\"] = \"is-not-null\";\n})(NumberCondition || (NumberCondition = {}));\nexport var StringCondition;\n(function (StringCondition) {\n StringCondition[\"IS_EXACTLY\"] = \"is-exactly\";\n StringCondition[\"IS_NOT_EXACTLY\"] = \"is-not-exactly\";\n StringCondition[\"CONTAINS\"] = \"contains\";\n StringCondition[\"DOES_NOT_CONTAIN\"] = \"does-not-contain\";\n StringCondition[\"STARTS_WITH\"] = \"starts-with\";\n StringCondition[\"ENDS_WITH\"] = \"ends-with\";\n StringCondition[\"IS_NULL\"] = \"is-null\";\n StringCondition[\"IS_NOT_NULL\"] = \"is-not-null\";\n})(StringCondition || (StringCondition = {}));\nexport var DateCondition;\n(function (DateCondition) {\n DateCondition[\"IS_EXACTLY\"] = \"is-exactly\";\n DateCondition[\"IS_NOT_EXACTLY\"] = \"is-not-exactly\";\n DateCondition[\"IS_BEFORE\"] = \"is-before\";\n DateCondition[\"IS_BEFORE_OR_EQUAL\"] = \"is-before-or-equal\";\n DateCondition[\"IS_AFTER\"] = \"is-after\";\n DateCondition[\"IS_AFTER_OR_EQUAL\"] = \"is-after-or-equal\";\n DateCondition[\"IS_NULL\"] = \"is-null\";\n DateCondition[\"IS_NOT_NULL\"] = \"is-not-null\";\n})(DateCondition || (DateCondition = {}));\nexport var BooleanCondition;\n(function (BooleanCondition) {\n BooleanCondition[\"IS_TRUE\"] = \"is-true\";\n BooleanCondition[\"IS_FALSE\"] = \"is-false\";\n BooleanCondition[\"IS_NULL\"] = \"is-null\";\n BooleanCondition[\"IS_NOT_NULL\"] = \"is-not-null\";\n})(BooleanCondition || (BooleanCondition = {}));\nexport var CharCondition;\n(function (CharCondition) {\n CharCondition[\"IS_EQUAL\"] = \"is-equal\";\n CharCondition[\"IS_NOT_EQUAL\"] = \"is-not-equal\";\n CharCondition[\"IS_NULL\"] = \"is-null\";\n CharCondition[\"IS_NOT_NULL\"] = \"is-not-null\";\n})(CharCondition || (CharCondition = {}));\nexport var FormatStyleType;\n(function (FormatStyleType) {\n FormatStyleType[\"NO_FORMATTING\"] = \"no-formatting\";\n FormatStyleType[\"POSITIVE\"] = \"positive\";\n FormatStyleType[\"NEGATIVE\"] = \"negative\";\n FormatStyleType[\"WARN\"] = \"warn\";\n FormatStyleType[\"NEUTRAL\"] = \"neutral\";\n FormatStyleType[\"ACCENT_1\"] = \"accent-1\";\n FormatStyleType[\"ACCENT_2\"] = \"accent-2\";\n FormatStyleType[\"CUSTOM\"] = \"custom\";\n})(FormatStyleType || (FormatStyleType = {}));\nexport function getLabelForStyleType(option) {\n switch (option) {\n case FormatStyleType.NO_FORMATTING:\n return 'No formatting';\n case FormatStyleType.POSITIVE:\n return 'Positive';\n case FormatStyleType.NEGATIVE:\n return 'Negative';\n case FormatStyleType.WARN:\n return 'Warn';\n case FormatStyleType.NEUTRAL:\n return 'Neutral';\n case FormatStyleType.ACCENT_1:\n return 'Accent 1';\n case FormatStyleType.ACCENT_2:\n return 'Accent 2';\n case FormatStyleType.CUSTOM:\n return 'Custom...';\n }\n}\nexport function getBackgroundForStyleConfig(config) {\n var {\n type,\n customConfig\n } = config;\n switch (type) {\n case FormatStyleType.NO_FORMATTING:\n return undefined;\n case FormatStyleType.POSITIVE:\n return '#9fde6f';\n case FormatStyleType.NEGATIVE:\n return '#ff6087';\n case FormatStyleType.WARN:\n return '#f67f40';\n case FormatStyleType.NEUTRAL:\n return '#ffd95c';\n case FormatStyleType.ACCENT_1:\n return '#78dce8';\n case FormatStyleType.ACCENT_2:\n return '#ab9bf5';\n case FormatStyleType.CUSTOM:\n return customConfig === null || customConfig === void 0 ? void 0 : customConfig.background;\n default:\n return undefined;\n }\n}\nexport function getColorForStyleConfig(config) {\n var {\n type,\n customConfig\n } = config;\n switch (type) {\n case FormatStyleType.NO_FORMATTING:\n return undefined;\n case FormatStyleType.POSITIVE:\n return '#526a3f';\n case FormatStyleType.NEGATIVE:\n return '#802f44';\n case FormatStyleType.WARN:\n return '#663318';\n case FormatStyleType.NEUTRAL:\n return '#63562b';\n case FormatStyleType.ACCENT_1:\n return '#3f6469';\n case FormatStyleType.ACCENT_2:\n return '#554d72';\n case FormatStyleType.CUSTOM:\n return customConfig === null || customConfig === void 0 ? void 0 : customConfig.color;\n default:\n return undefined;\n }\n}\nexport function getStyleDBString(config) {\n var color = getColorForStyleConfig(config.style);\n var bg = getBackgroundForStyleConfig(config.style);\n if (color === undefined || bg === undefined) {\n return undefined;\n }\n return \"bgfg(`\".concat(bg, \"`, `\").concat(color, \"`)\");\n}\nfunction getNumberConditionText(config) {\n var {\n column,\n value,\n start,\n end\n } = config;\n return getTextForNumberCondition(column.name, config.condition, value, start, end);\n}\nfunction getStringConditionText(config) {\n var {\n column,\n value\n } = config;\n return getTextForStringCondition(column.name, config.condition, value);\n}\nfunction getDateConditionText(config) {\n var {\n column,\n value\n } = config;\n return getTextForDateCondition(column.name, config.condition, value);\n}\nfunction getBooleanConditionText(config) {\n var {\n column\n } = config;\n return getTextForBooleanCondition(column.name, config.condition);\n}\nfunction getCharConditionText(config) {\n var {\n column,\n value\n } = config;\n return getTextForCharCondition(column.name, config.condition, value);\n}\nexport function getConditionDBString(config) {\n var {\n column\n } = config;\n if (TableUtils.isNumberType(column.type)) {\n return getNumberConditionText(config);\n }\n if (TableUtils.isCharType(column.type)) {\n return getCharConditionText(config);\n }\n if (TableUtils.isStringType(column.type)) {\n return getStringConditionText(config);\n }\n if (TableUtils.isDateType(column.type)) {\n return getDateConditionText(config);\n }\n if (TableUtils.isBooleanType(column.type)) {\n return getBooleanConditionText(config);\n }\n throw new Error('Invalid column type');\n}\nexport function getLabelForNumberCondition(condition) {\n switch (condition) {\n case NumberCondition.IS_EQUAL:\n return 'is equal to';\n case NumberCondition.IS_NOT_EQUAL:\n return 'is not equal to';\n case NumberCondition.IS_BETWEEN:\n return 'is between';\n case NumberCondition.GREATER_THAN:\n return 'greater than';\n case NumberCondition.GREATER_THAN_OR_EQUAL:\n return 'greater than or equal to';\n case NumberCondition.LESS_THAN:\n return 'less than';\n case NumberCondition.LESS_THAN_OR_EQUAL:\n return 'less than or equal to';\n case NumberCondition.IS_NULL:\n return 'is null';\n case NumberCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\nexport function getLabelForStringCondition(condition) {\n switch (condition) {\n case StringCondition.IS_EXACTLY:\n return 'is exactly';\n case StringCondition.IS_NOT_EXACTLY:\n return 'is not exactly';\n case StringCondition.CONTAINS:\n return 'contains';\n case StringCondition.DOES_NOT_CONTAIN:\n return 'does not contain';\n case StringCondition.STARTS_WITH:\n return 'starts with';\n case StringCondition.ENDS_WITH:\n return 'ends with';\n case StringCondition.IS_NULL:\n return 'is null';\n case StringCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\nexport function getLabelForDateCondition(condition) {\n switch (condition) {\n case DateCondition.IS_EXACTLY:\n return 'is';\n case DateCondition.IS_NOT_EXACTLY:\n return 'is not';\n case DateCondition.IS_BEFORE:\n return 'is before';\n case DateCondition.IS_BEFORE_OR_EQUAL:\n return 'is before or equal';\n case DateCondition.IS_AFTER:\n return 'is after';\n case DateCondition.IS_AFTER_OR_EQUAL:\n return 'is after or equal';\n case DateCondition.IS_NULL:\n return 'is null';\n case DateCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\nexport function getLabelForBooleanCondition(condition) {\n switch (condition) {\n case BooleanCondition.IS_TRUE:\n return 'is true';\n case BooleanCondition.IS_FALSE:\n return 'is false';\n case BooleanCondition.IS_NULL:\n return 'is null';\n case BooleanCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\nexport function getLabelForCharCondition(condition) {\n switch (condition) {\n case CharCondition.IS_EQUAL:\n return 'is';\n case CharCondition.IS_NOT_EQUAL:\n return 'is not';\n case CharCondition.IS_NULL:\n return 'is null';\n case CharCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\nexport function getDefaultConditionForType(columnType) {\n if (TableUtils.isNumberType(columnType)) {\n return NumberCondition.IS_EQUAL;\n }\n if (TableUtils.isCharType(columnType)) {\n return CharCondition.IS_EQUAL;\n }\n if (TableUtils.isStringType(columnType)) {\n return StringCondition.IS_EXACTLY;\n }\n if (TableUtils.isDateType(columnType)) {\n return DateCondition.IS_EXACTLY;\n }\n if (TableUtils.isBooleanType(columnType)) {\n return BooleanCondition.IS_TRUE;\n }\n throw new Error('Invalid column type');\n}\nexport function getDefaultValueForType(columnType) {\n if (TableUtils.isCharType(columnType)) {\n return '';\n }\n if (TableUtils.isStringType(columnType)) {\n return '';\n }\n return undefined;\n}\nexport function getConditionConfig(config) {\n var {\n condition,\n value,\n start,\n end\n } = config;\n return {\n condition,\n value,\n start,\n end\n };\n}\nexport function getDefaultConditionConfigForType(type) {\n return {\n condition: getDefaultConditionForType(type),\n value: getDefaultValueForType(type),\n start: undefined,\n end: undefined\n };\n}\nexport function getDefaultStyleConfig() {\n return {\n type: FormatStyleType.NO_FORMATTING\n };\n}\nfunction getShortLabelForStringCondition(condition) {\n switch (condition) {\n case StringCondition.IS_EXACTLY:\n return '==';\n case StringCondition.IS_NOT_EXACTLY:\n return '!=';\n case StringCondition.CONTAINS:\n return 'contains';\n case StringCondition.DOES_NOT_CONTAIN:\n return 'does not contain';\n case StringCondition.STARTS_WITH:\n return 'starts with';\n case StringCondition.ENDS_WITH:\n return 'ends with';\n case StringCondition.IS_NULL:\n return 'is null';\n case StringCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\nfunction getShortLabelForDateCondition(condition) {\n switch (condition) {\n case DateCondition.IS_EXACTLY:\n return '==';\n case DateCondition.IS_NOT_EXACTLY:\n return '!=';\n case DateCondition.IS_BEFORE:\n return '<';\n case DateCondition.IS_BEFORE_OR_EQUAL:\n return '<=';\n case DateCondition.IS_AFTER:\n return '>';\n case DateCondition.IS_AFTER_OR_EQUAL:\n return '>=';\n case DateCondition.IS_NULL:\n return 'is null';\n case DateCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\nfunction getShortLabelForBooleanCondition(condition) {\n switch (condition) {\n case BooleanCondition.IS_TRUE:\n return 'is true';\n case BooleanCondition.IS_FALSE:\n return 'is false';\n case BooleanCondition.IS_NULL:\n return 'is null';\n case BooleanCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\nfunction getShortLabelForCharCondition(condition) {\n switch (condition) {\n case CharCondition.IS_EQUAL:\n return '==';\n case CharCondition.IS_NOT_EQUAL:\n return '!=';\n case CharCondition.IS_NULL:\n return 'is null';\n case CharCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\nexport function getShortLabelForNumberCondition(condition) {\n switch (condition) {\n case NumberCondition.IS_EQUAL:\n return '==';\n case NumberCondition.IS_NOT_EQUAL:\n return '!=';\n case NumberCondition.IS_BETWEEN:\n return '==';\n case NumberCondition.GREATER_THAN:\n return '>';\n case NumberCondition.GREATER_THAN_OR_EQUAL:\n return '>=';\n case NumberCondition.LESS_THAN:\n return '<';\n case NumberCondition.LESS_THAN_OR_EQUAL:\n return '<=';\n case NumberCondition.IS_NULL:\n return 'is null';\n case NumberCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\nexport function getTextForNumberCondition(columnName, condition, value, start, end) {\n switch (condition) {\n case NumberCondition.IS_EQUAL:\n return \"\".concat(columnName, \" == \").concat(value);\n case NumberCondition.IS_NOT_EQUAL:\n return \"\".concat(columnName, \" != \").concat(value);\n case NumberCondition.IS_BETWEEN:\n return \"\".concat(columnName, \" > \").concat(start, \" && \").concat(columnName, \" < \").concat(end);\n case NumberCondition.GREATER_THAN:\n return \"\".concat(columnName, \" > \").concat(value);\n case NumberCondition.GREATER_THAN_OR_EQUAL:\n return \"\".concat(columnName, \" >= \").concat(value);\n case NumberCondition.LESS_THAN:\n return \"\".concat(columnName, \" < \").concat(value);\n case NumberCondition.LESS_THAN_OR_EQUAL:\n return \"\".concat(columnName, \" <= \").concat(value);\n case NumberCondition.IS_NULL:\n return \"\".concat(columnName, \" == null\");\n case NumberCondition.IS_NOT_NULL:\n return \"\".concat(columnName, \" != null\");\n }\n}\nexport function getTextForStringCondition(columnName, condition, value) {\n switch (condition) {\n case StringCondition.IS_EXACTLY:\n return \"\".concat(columnName, \" == \\\"\").concat(value, \"\\\"\");\n case StringCondition.IS_NOT_EXACTLY:\n return \"\".concat(columnName, \" != \\\"\").concat(value, \"\\\"\");\n case StringCondition.CONTAINS:\n return \"\".concat(columnName, \" != null && \").concat(columnName, \".contains(\\\"\").concat(value, \"\\\")\");\n case StringCondition.DOES_NOT_CONTAIN:\n return \"\".concat(columnName, \" != null && !\").concat(columnName, \".contains(\\\"\").concat(value, \"\\\")\");\n case StringCondition.STARTS_WITH:\n return \"\".concat(columnName, \" != null && \").concat(columnName, \".startsWith(\\\"\").concat(value, \"\\\")\");\n case StringCondition.ENDS_WITH:\n return \"\".concat(columnName, \" != null && \").concat(columnName, \".endsWith(\\\"\").concat(value, \"\\\")\");\n case StringCondition.IS_NULL:\n return \"\".concat(columnName, \" == null\");\n case StringCondition.IS_NOT_NULL:\n return \"\".concat(columnName, \" != null\");\n }\n}\nexport function getTextForDateCondition(columnName, condition, value) {\n switch (condition) {\n case DateCondition.IS_EXACTLY:\n return \"\".concat(columnName, \" == convertDateTime(\\\"\").concat(value, \"\\\")\");\n case DateCondition.IS_NOT_EXACTLY:\n return \"\".concat(columnName, \" != convertDateTime(`\").concat(value, \"`)\");\n case DateCondition.IS_BEFORE:\n return \"\".concat(columnName, \" < convertDateTime(`\").concat(value, \"`)\");\n case DateCondition.IS_BEFORE_OR_EQUAL:\n return \"\".concat(columnName, \" <= convertDateTime(\\\"\").concat(value, \"\\\")\");\n case DateCondition.IS_AFTER:\n return \"\".concat(columnName, \" > convertDateTime(`\").concat(value, \"`)\");\n case DateCondition.IS_AFTER_OR_EQUAL:\n return \"\".concat(columnName, \" >= convertDateTime(`\").concat(value, \"`)\");\n case DateCondition.IS_NULL:\n return \"\".concat(columnName, \" == null\");\n case DateCondition.IS_NOT_NULL:\n return \"\".concat(columnName, \" != null\");\n }\n}\nexport function getTextForBooleanCondition(columnName, condition) {\n switch (condition) {\n case BooleanCondition.IS_TRUE:\n return \"\".concat(columnName, \" == true\");\n case BooleanCondition.IS_FALSE:\n return \"\".concat(columnName, \" == false\");\n case BooleanCondition.IS_NULL:\n return \"\".concat(columnName, \" == null\");\n case BooleanCondition.IS_NOT_NULL:\n return \"\".concat(columnName, \" != null\");\n }\n}\nexport function getTextForCharCondition(columnName, condition, value) {\n switch (condition) {\n case CharCondition.IS_EQUAL:\n return \"\".concat(columnName, \" == '\").concat(value, \"'\");\n case CharCondition.IS_NOT_EQUAL:\n return \"\".concat(columnName, \" != '\").concat(value, \"'\");\n case CharCondition.IS_NULL:\n return \"isNull(\".concat(columnName, \")\");\n case CharCondition.IS_NOT_NULL:\n return \"!isNull(\".concat(columnName, \")\");\n }\n}\nexport function getShortLabelForConditionType(columnType, condition) {\n if (TableUtils.isNumberType(columnType)) {\n return getShortLabelForNumberCondition(condition);\n }\n if (TableUtils.isCharType(columnType)) {\n return getShortLabelForCharCondition(condition);\n }\n if (TableUtils.isStringType(columnType)) {\n return getShortLabelForStringCondition(condition);\n }\n if (TableUtils.isDateType(columnType)) {\n return getShortLabelForDateCondition(condition);\n }\n if (TableUtils.isBooleanType(columnType)) {\n return getShortLabelForBooleanCondition(condition);\n }\n throw new Error('Invalid column type');\n}\n\n/**\n * Get format columns array for the given columns and formatting rules\n * @param columns Available columns\n * @param rules Formatting rules to build the format columns from\n * @returns Array of format columns\n */\nexport function getFormatColumns(dh, columns, rules) {\n if (rules === undefined) {\n log.debug(\"no rules passed.\");\n return [];\n }\n var result = [];\n // There can be only one row format custom column\n // and multiple column format custom columns (one per column)\n var rowFormatConfig;\n var columnFormatConfigMap = new Map();\n rules.forEach(_ref => {\n var _ref3;\n var {\n config,\n type: formatterType\n } = _ref;\n var {\n column\n } = config;\n // Check both name and type because the type can change\n var col = columns.find(_ref2 => {\n var {\n name,\n type\n } = _ref2;\n return name === column.name && type === column.type;\n });\n if (col === undefined) {\n log.debug(\"Column \".concat(column.name, \":\").concat(column.type, \" not found. Ignoring format rule.\"), config);\n return;\n }\n // Stack ternary format conditions by column\n var [prevRule, prevFormatColumn] = (_ref3 = formatterType === FormatterType.CONDITIONAL ? columnFormatConfigMap.get(col.name) : rowFormatConfig) !== null && _ref3 !== void 0 ? _ref3 : ['null', undefined];\n var rule = makeTernaryFormatRule(config, prevRule);\n if (rule === undefined) {\n log.debug(\"Ignoring format rule.\", config);\n return;\n }\n // Replace existing formatColumn with the new stacked format\n var index = prevFormatColumn === undefined ? -1 : result.indexOf(prevFormatColumn);\n if (index > -1) {\n result.splice(index, 1);\n }\n var formatColumn = formatterType === FormatterType.CONDITIONAL ? makeColumnFormatColumn(col, rule) : makeRowFormatColumn(dh, rule);\n result.push(formatColumn);\n if (formatterType === FormatterType.CONDITIONAL) {\n columnFormatConfigMap.set(col.name, [rule, formatColumn]);\n } else {\n rowFormatConfig = [rule, formatColumn];\n }\n });\n return result;\n}\n\n/**\n * Validate that a given date condition + value pair is valid.\n * @param condition\n * @param value\n */\nexport function isDateConditionValid(dh, condition, value) {\n switch (condition) {\n case DateCondition.IS_NULL:\n case DateCondition.IS_NOT_NULL:\n return true;\n default:\n {\n var [dateTimeString, ...rest] = (value !== null && value !== void 0 ? value : '').split(' ');\n // Reconstitute all tokens after the first ' ' in case the user included garbage data at the end\n // e.g. '2020-01-01 NY blah'\n var tzCode = rest.join(' ');\n try {\n DateUtils.parseDateTimeString(dateTimeString);\n } catch (e) {\n log.debug('Invalid datetime string', dateTimeString);\n return false;\n }\n try {\n dh.i18n.TimeZone.getTimeZone(tzCode);\n } catch (e) {\n log.debug('Invalid timezone string', tzCode);\n return false;\n }\n return true;\n }\n }\n}\nexport function isSupportedColumn(_ref4) {\n var {\n type\n } = _ref4;\n return TableUtils.isNumberType(type) || TableUtils.isCharType(type) || TableUtils.isStringType(type) || TableUtils.isDateType(type) || TableUtils.isBooleanType(type);\n}\n//# sourceMappingURL=ConditionalFormattingUtils.js.map","import React from 'react';\nimport classNames from 'classnames';\nimport { CSSTransition } from 'react-transition-group';\nimport { ThemeExport } from '@deephaven/components';\nimport \"./IrisGridBottomBar.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function IrisGridBottomBar(_ref) {\n var {\n animation = 'iris-grid-bottom-bar-slide-up',\n children,\n className,\n isShown,\n onClick,\n onEntering,\n onEntered,\n onExiting,\n onExited\n } = _ref;\n return /*#__PURE__*/_jsx(CSSTransition, {\n in: isShown,\n timeout: ThemeExport.transitionMs,\n classNames: animation,\n onEntering: onEntering,\n onEntered: onEntered,\n onExiting: onExiting,\n onExited: onExited,\n mountOnEnter: true,\n unmountOnExit: true,\n children: /*#__PURE__*/_jsx(\"div\", {\n className: classNames('iris-grid-bottom-bar', className),\n role: \"presentation\",\n onClick: onClick,\n onKeyPress: onClick,\n children: children\n })\n });\n}\nexport default IrisGridBottomBar;\n//# sourceMappingURL=IrisGridBottomBar.js.map","import React, { useEffect, useMemo, useRef, useState } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsPass, vsWarning } from '@deephaven/icons';\nimport { Button, LoadingSpinner } from '@deephaven/components';\nimport { usePrevious } from '@deephaven/react-hooks';\nimport IrisGridBottomBar from \"./IrisGridBottomBar.js\";\nimport \"./PendingDataBottomBar.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar HIDE_TIMEOUT = 3000;\nvar MAX_NUMBER_ROWS_SHOWN = 5;\nexport function PendingDataBottomBar(_ref) {\n var {\n isSaving = false,\n onSave,\n onDiscard,\n discardTooltip,\n saveTooltip,\n error,\n pendingDataErrors,\n pendingDataMap,\n onEntering,\n onEntered,\n onExiting,\n onExited: _onExited\n } = _ref;\n var [isSuccessShown, setIsSuccessShown] = useState(false);\n var [wasSuccessShown, setWasSuccessShown] = useState(false);\n var successTimeout = useRef();\n var prevIsSaving = usePrevious(isSaving);\n var errorMessage = useMemo(() => {\n if (pendingDataErrors.size === 0) {\n return error;\n }\n if (pendingDataErrors.size <= MAX_NUMBER_ROWS_SHOWN) {\n return \"Key can't be empty (on pending row\".concat(pendingDataErrors.size > 1 ? 's' : '', \" \").concat(Array.from(pendingDataErrors.keys()).join(', ').trim(), \")\");\n }\n return \"Key can't be empty (on \".concat(pendingDataErrors.size, \" rows)\");\n }, [error, pendingDataErrors]);\n useEffect(function showSuccessMessage() {\n if (prevIsSaving != null && prevIsSaving && !isSaving && errorMessage == null) {\n setIsSuccessShown(true);\n setWasSuccessShown(true);\n successTimeout.current = setTimeout(() => {\n setIsSuccessShown(false);\n }, HIDE_TIMEOUT);\n }\n }, [errorMessage, isSaving, prevIsSaving]);\n useEffect(function hideSuccessMessage() {\n if (successTimeout.current && pendingDataMap.size > 0) {\n // A change just occurred while the success message was still being shown, just hide the success message\n clearTimeout(successTimeout.current);\n setIsSuccessShown(false);\n setWasSuccessShown(false);\n }\n }, [pendingDataMap]);\n useEffect(function cleanupTimeout() {\n return () => successTimeout.current ? clearTimeout(successTimeout.current) : undefined;\n }, []);\n var pendingRowCount = pendingDataMap.size;\n var commitIcon;\n if (isSaving) {\n commitIcon = /*#__PURE__*/_jsx(LoadingSpinner, {\n className: \"loading-spinner-vertical-align\"\n });\n } else if (wasSuccessShown) {\n commitIcon = vsPass;\n }\n return /*#__PURE__*/_jsxs(IrisGridBottomBar, {\n className: \"pending-data-bottom-bar\",\n isShown: pendingRowCount > 0 || isSuccessShown || errorMessage != null,\n onEntering: onEntering,\n onEntered: onEntered,\n onExiting: onExiting,\n onExited: () => {\n setWasSuccessShown(false);\n if (_onExited) {\n _onExited();\n }\n },\n children: [errorMessage != null && errorMessage !== '' && /*#__PURE__*/_jsxs(\"div\", {\n className: \"error-message\",\n children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsWarning\n }), /*#__PURE__*/_jsx(\"span\", {\n children: \"\".concat(errorMessage)\n })]\n }), (errorMessage == null || errorMessage === '') && /*#__PURE__*/_jsx(\"div\", {\n className: \"status-message\",\n children: pendingRowCount > 0 && /*#__PURE__*/_jsx(\"span\", {\n children: \"\".concat(pendingRowCount, \" row\").concat(pendingRowCount > 1 ? 's' : '', \" pending\")\n })\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"buttons-container\",\n children: [!isSaving && !wasSuccessShown && /*#__PURE__*/_jsx(Button, {\n kind: \"secondary\",\n onClick: onDiscard,\n tooltip: discardTooltip,\n children: \"Discard\"\n }), /*#__PURE__*/_jsxs(Button, {\n kind: wasSuccessShown ? 'success' : 'primary',\n onClick: onSave,\n icon: commitIcon,\n disabled: isSaving || wasSuccessShown || errorMessage != null,\n tooltip: saveTooltip,\n children: [isSaving && \"Committing...\", !isSaving && wasSuccessShown && \"Success\", !isSaving && !wasSuccessShown && \"Commit\"]\n })]\n })]\n });\n}\nexport default PendingDataBottomBar;\n//# sourceMappingURL=PendingDataBottomBar.js.map","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport { Button, FadeTransition, LoadingSpinner } from '@deephaven/components';\nimport { GridRange, GridUtils } from '@deephaven/grid';\nimport { CanceledPromiseError, copyToClipboard, PromiseUtils } from '@deephaven/utils';\nimport Log from '@deephaven/log';\nimport IrisGridUtils from \"./IrisGridUtils.js\";\nimport IrisGridBottomBar from \"./IrisGridBottomBar.js\";\nimport \"./IrisGridCopyHandler.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('IrisGridCopyHandler');\nfunction isCopyRangesOperation(copyOperation) {\n return copyOperation.ranges != null;\n}\nfunction isCopyHeaderOperation(copyOperation) {\n return copyOperation.columnIndex != null;\n}\n/**\n * Component for handling copying of data from the Iris Grid.\n * - Prompts if necessary (large amount of rows copied)\n * - Tries to async copy, falls back to showing a \"Click to Copy\" button if that fails\n */\nclass IrisGridCopyHandler extends Component {\n /**\n * Different states for the current copy operation\n */\n\n static getStatusMessageText(copyState, rowCount) {\n switch (copyState) {\n case IrisGridCopyHandler.COPY_STATES.CONFIRMATION_REQUIRED:\n return \"Are you sure you want to copy \".concat(rowCount.toLocaleString(), \" rows to your clipboard?\");\n case IrisGridCopyHandler.COPY_STATES.CLICK_REQUIRED:\n return \"Fetched \".concat(rowCount.toLocaleString(), \" rows!\");\n case IrisGridCopyHandler.COPY_STATES.FETCH_ERROR:\n return 'Unable to copy data.';\n case IrisGridCopyHandler.COPY_STATES.FETCH_RANGES_IN_PROGRESS:\n return \"Fetching \".concat(rowCount.toLocaleString(), \" rows for clipboard...\");\n case IrisGridCopyHandler.COPY_STATES.FETCH_HEADER_IN_PROGRESS:\n return 'Fetching header for clipboard...';\n case IrisGridCopyHandler.COPY_STATES.DONE:\n return 'Copied to Clipboard!';\n default:\n return '';\n }\n }\n static getCopyButtonText(buttonState) {\n switch (buttonState) {\n case IrisGridCopyHandler.BUTTON_STATES.FETCH_IN_PROGRESS:\n return 'Fetching';\n case IrisGridCopyHandler.BUTTON_STATES.CLICK_TO_COPY:\n return 'Click to Copy';\n case IrisGridCopyHandler.BUTTON_STATES.RETRY:\n return 'Retry';\n default:\n return 'Copy';\n }\n }\n constructor(props) {\n super(props);\n _defineProperty(this, \"textData\", void 0);\n _defineProperty(this, \"hideTimer\", void 0);\n _defineProperty(this, \"fetchPromise\", void 0);\n this.handleBackgroundClick = this.handleBackgroundClick.bind(this);\n this.handleCancelClick = this.handleCancelClick.bind(this);\n this.handleCopyClick = this.handleCopyClick.bind(this);\n this.handleHideTimeout = this.handleHideTimeout.bind(this);\n this.state = {\n error: undefined,\n copyState: IrisGridCopyHandler.COPY_STATES.IDLE,\n buttonState: IrisGridCopyHandler.BUTTON_STATES.COPY,\n isShown: false,\n rowCount: 0\n };\n }\n componentDidMount() {\n var {\n copyOperation\n } = this.props;\n if (copyOperation != null) {\n this.startCopy();\n }\n }\n componentDidUpdate(prevProps) {\n var {\n copyOperation\n } = this.props;\n if (prevProps.copyOperation !== copyOperation) {\n this.startCopy();\n }\n }\n componentWillUnmount() {\n this.stopCopy();\n }\n startCopy() {\n log.debug2('startCopy');\n this.stopCopy();\n var {\n copyOperation\n } = this.props;\n if (copyOperation == null) {\n log.debug2('No copy operation set, cancelling out');\n this.setState({\n isShown: false\n });\n return;\n }\n var {\n error\n } = copyOperation;\n if (error != null) {\n log.debug('Showing copy error', error);\n this.setState({\n isShown: true,\n copyState: IrisGridCopyHandler.COPY_STATES.DONE,\n error\n });\n this.startHideTimer();\n return;\n }\n this.setState({\n isShown: true,\n error: undefined\n });\n if (isCopyRangesOperation(copyOperation)) {\n var {\n ranges\n } = copyOperation;\n var rowCount = GridRange.rowCount(ranges);\n this.setState({\n rowCount\n });\n if (rowCount > IrisGridCopyHandler.NO_PROMPT_THRESHOLD) {\n this.setState({\n buttonState: IrisGridCopyHandler.BUTTON_STATES.COPY,\n copyState: IrisGridCopyHandler.COPY_STATES.CONFIRMATION_REQUIRED\n });\n return;\n }\n }\n this.startFetch();\n }\n stopCopy() {\n this.textData = undefined;\n this.stopFetch();\n this.stopHideTimer();\n }\n handleBackgroundClick() {\n log.debug2('handleBackgroundClick');\n var {\n copyState\n } = this.state;\n if (copyState === IrisGridCopyHandler.COPY_STATES.DONE) {\n this.setState({\n isShown: false\n });\n }\n }\n handleCancelClick() {\n log.debug2('handleCancelClick');\n this.stopFetch();\n this.setState({\n isShown: false\n });\n }\n handleCopyClick() {\n var _this = this;\n return _asyncToGenerator(function* () {\n log.debug2('handleCopyClick');\n if (_this.textData != null) {\n try {\n yield _this.copyText(_this.textData);\n _this.showCopyDone();\n } catch (e) {\n log.error('Error copying text', e);\n _this.setState({\n error: 'Unable to copy. Verify your browser permissions.'\n });\n }\n } else {\n _this.startFetch();\n }\n })();\n }\n handleHideTimeout() {\n log.debug2('handleHideTimeout');\n this.stopHideTimer();\n this.setState({\n isShown: false\n });\n }\n copyText(text) {\n var _this2 = this;\n return _asyncToGenerator(function* () {\n log.debug2('copyText', text);\n _this2.textData = text;\n yield copyToClipboard(text);\n })();\n }\n showCopyDone() {\n this.setState({\n copyState: IrisGridCopyHandler.COPY_STATES.DONE\n });\n this.startHideTimer();\n }\n startFetch() {\n var _this3 = this;\n return _asyncToGenerator(function* () {\n _this3.stopFetch();\n var {\n model,\n copyOperation\n } = _this3.props;\n if (isCopyHeaderOperation(copyOperation)) {\n var {\n columnIndex,\n columnDepth,\n movedColumns\n } = copyOperation;\n log.debug('startFetch copyHeader', columnIndex, columnDepth);\n _this3.setState({\n buttonState: IrisGridCopyHandler.BUTTON_STATES.FETCH_IN_PROGRESS,\n copyState: IrisGridCopyHandler.COPY_STATES.FETCH_HEADER_IN_PROGRESS\n });\n var modelIndex = GridUtils.getModelIndex(columnIndex, movedColumns);\n var copyText = model.textForColumnHeader(modelIndex, columnDepth);\n if (copyText === undefined) {\n _this3.fetchPromise = undefined;\n _this3.setState({\n error: 'Invalid column header selected.',\n copyState: IrisGridCopyHandler.COPY_STATES.DONE\n });\n return;\n }\n _this3.fetchPromise = PromiseUtils.makeCancelable(copyText);\n } else {\n var {\n ranges,\n includeHeaders,\n userColumnWidths,\n movedColumns: _movedColumns,\n formatValues\n } = copyOperation;\n log.debug('startFetch copyRanges', ranges);\n _this3.setState({\n buttonState: IrisGridCopyHandler.BUTTON_STATES.FETCH_IN_PROGRESS,\n copyState: IrisGridCopyHandler.COPY_STATES.FETCH_RANGES_IN_PROGRESS\n });\n var hiddenColumns = IrisGridUtils.getHiddenColumns(userColumnWidths);\n var modelRanges = GridUtils.getModelRanges(ranges, _movedColumns);\n if (hiddenColumns.length > 0) {\n var subtractRanges = hiddenColumns.map(GridRange.makeColumn);\n modelRanges = GridRange.subtractRangesFromRanges(modelRanges, subtractRanges);\n }\n\n // Remove the hidden columns from the snapshot\n var formatValue = formatValues != null && formatValues ? (value, column) => model.displayString(value, column.type, column.name) : value => \"\".concat(value);\n _this3.fetchPromise = PromiseUtils.makeCancelable(model.textSnapshot(modelRanges, includeHeaders, formatValue));\n }\n try {\n var text = yield _this3.fetchPromise;\n _this3.fetchPromise = undefined;\n try {\n yield _this3.copyText(text);\n _this3.showCopyDone();\n } catch (e) {\n log.error('Error copying text', e);\n _this3.setState({\n buttonState: IrisGridCopyHandler.BUTTON_STATES.CLICK_TO_COPY,\n copyState: IrisGridCopyHandler.COPY_STATES.CLICK_REQUIRED\n });\n }\n } catch (e) {\n if (e instanceof CanceledPromiseError) {\n log.debug('User cancelled copy.');\n } else {\n log.error('Error fetching contents', e);\n _this3.fetchPromise = undefined;\n _this3.setState({\n buttonState: IrisGridCopyHandler.BUTTON_STATES.RETRY,\n copyState: IrisGridCopyHandler.COPY_STATES.FETCH_ERROR\n });\n }\n }\n })();\n }\n stopFetch() {\n if (this.fetchPromise) {\n log.debug2('stopFetch');\n this.fetchPromise.cancel();\n this.fetchPromise = undefined;\n }\n }\n startHideTimer() {\n this.stopHideTimer();\n this.hideTimer = setTimeout(this.handleHideTimeout, IrisGridCopyHandler.HIDE_TIMEOUT);\n }\n stopHideTimer() {\n if (this.hideTimer != null) {\n clearTimeout(this.hideTimer);\n this.hideTimer = undefined;\n }\n }\n render() {\n var {\n onEntering,\n onEntered,\n onExiting,\n onExited\n } = this.props;\n var {\n buttonState,\n copyState,\n isShown,\n rowCount,\n error\n } = this.state;\n var animation = copyState === IrisGridCopyHandler.COPY_STATES.DONE ? 'fade' : 'copy-slide-up';\n var copyButtonText = IrisGridCopyHandler.getCopyButtonText(buttonState);\n var statusMessageText = error !== null && error !== void 0 ? error : IrisGridCopyHandler.getStatusMessageText(copyState, rowCount);\n var isButtonContainerVisible = copyState !== IrisGridCopyHandler.COPY_STATES.DONE;\n var isFetching = buttonState === IrisGridCopyHandler.BUTTON_STATES.FETCH_IN_PROGRESS;\n var isDone = copyState === IrisGridCopyHandler.COPY_STATES.DONE;\n return /*#__PURE__*/_jsxs(IrisGridBottomBar, {\n animation: animation,\n isShown: isShown,\n className: classNames('iris-grid-copy-handler', {\n 'copy-done': isDone\n }),\n onClick: this.handleBackgroundClick,\n onEntering: onEntering,\n onEntered: onEntered,\n onExiting: onExiting,\n onExited: onExited,\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"status-message\",\n children: /*#__PURE__*/_jsx(\"span\", {\n children: statusMessageText\n })\n }), /*#__PURE__*/_jsx(FadeTransition, {\n in: isButtonContainerVisible,\n mountOnEnter: true,\n unmountOnExit: true,\n children: /*#__PURE__*/_jsxs(\"div\", {\n className: \"buttons-container\",\n children: [/*#__PURE__*/_jsx(\"button\", {\n type: \"button\",\n className: \"btn btn-outline-secondary btn-cancel\",\n onClick: this.handleCancelClick,\n children: \"Cancel\"\n }), /*#__PURE__*/_jsxs(Button, {\n kind: isFetching ? 'tertiary' : 'primary',\n className: classNames('btn-copy', {\n 'btn-spinner': isFetching\n }),\n onClick: this.handleCopyClick,\n disabled: isFetching,\n children: [isFetching && /*#__PURE__*/_jsx(LoadingSpinner, {\n className: \"loading-spinner-vertical-align\"\n }), copyButtonText]\n })]\n })\n })]\n });\n }\n}\n_defineProperty(IrisGridCopyHandler, \"NO_PROMPT_THRESHOLD\", 10000);\n_defineProperty(IrisGridCopyHandler, \"HIDE_TIMEOUT\", 3000);\n_defineProperty(IrisGridCopyHandler, \"COPY_STATES\", {\n // No copy operation in progress\n IDLE: 'IDLE',\n // Large copy operation, confirmation required\n CONFIRMATION_REQUIRED: 'CONFIRMATION_REQUIRED',\n // Fetch is currently in progress for copy ranges operation\n FETCH_RANGES_IN_PROGRESS: 'FETCH_RANGES_IN_PROGRESS',\n // Fetch is currently in progress for copy header operation\n FETCH_HEADER_IN_PROGRESS: 'FETCH_HEADER_IN_PROGRESS',\n // There was an error fetching the data\n FETCH_ERROR: 'FETCH_ERROR',\n // Click is required to copy\n CLICK_REQUIRED: 'CLICK_REQUIRED',\n // The copy operation is completed and successfully copied to the clipboard\n DONE: 'DONE'\n});\n_defineProperty(IrisGridCopyHandler, \"BUTTON_STATES\", {\n COPY: 'COPY',\n FETCH_IN_PROGRESS: 'FETCH_IN_PROGRESS',\n CLICK_TO_COPY: 'CLICK_TO_COPY',\n RETRY: 'RETRY'\n});\n_defineProperty(IrisGridCopyHandler, \"defaultProps\", {\n copyOperation: null,\n onEntering: () => undefined,\n onEntered: () => undefined,\n onExiting: () => undefined,\n onExited: () => undefined\n});\nexport default IrisGridCopyHandler;\n//# sourceMappingURL=IrisGridCopyHandler.js.map","function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport debounce from 'lodash.debounce';\nimport { vsFilter, dhFilterFilled } from '@deephaven/icons';\nimport \"./FilterInputField.css\";\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Button } from '@deephaven/components';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n/**\n * An input field showing a input field and button.\n * Debounces changes.\n */\nclass FilterInputField extends PureComponent {\n constructor(props) {\n super(props);\n _defineProperty(this, \"inputField\", void 0);\n _defineProperty(this, \"initialValue\", void 0);\n _defineProperty(this, \"debouncedSendUpdate\", void 0);\n var {\n debounceMs\n } = props;\n this.debouncedSendUpdate = debounce(this.sendUpdate.bind(this), debounceMs);\n this.handleCancel = this.handleCancel.bind(this);\n this.handleChange = this.handleChange.bind(this);\n this.handleCommit = this.handleCommit.bind(this);\n this.handleFocus = this.handleFocus.bind(this);\n this.handleBlur = this.handleBlur.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.handleContextMenu = this.handleContextMenu.bind(this);\n this.inputField = null;\n var {\n value\n } = props;\n this.initialValue = value;\n this.state = {\n isChanged: false,\n value\n };\n }\n componentDidMount() {\n var _this$inputField;\n (_this$inputField = this.inputField) === null || _this$inputField === void 0 ? void 0 : _this$inputField.focus();\n }\n componentDidUpdate(prevProps) {\n var {\n debounceMs\n } = this.props;\n if (prevProps.debounceMs !== debounceMs) {\n this.debouncedSendUpdate.flush();\n this.debouncedSendUpdate = debounce(this.sendUpdate.bind(this), debounceMs);\n }\n }\n componentWillUnmount() {\n this.debouncedSendUpdate.cancel();\n }\n // clear filters needs to be able to reset the value externally\n // and due to the way this component handles its own debouncing\n // this was easier than moving state up.\n setValue(value) {\n this.initialValue = value;\n this.setState({\n value\n });\n }\n focus() {\n var _this$inputField2;\n (_this$inputField2 = this.inputField) === null || _this$inputField2 === void 0 ? void 0 : _this$inputField2.focus();\n }\n handleChange(event) {\n var {\n value\n } = event.target;\n this.setState({\n value,\n isChanged: true\n });\n this.debouncedSendUpdate(value);\n }\n handleCancel() {\n this.debouncedSendUpdate.cancel();\n var {\n initialValue\n } = this;\n var {\n isChanged\n } = this.state;\n if (isChanged) {\n this.sendUpdate(initialValue);\n }\n var {\n onDone\n } = this.props;\n onDone();\n }\n handleCommit() {\n var setGridFocus = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n var defocusInput = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n this.debouncedSendUpdate.flush();\n var {\n onDone\n } = this.props;\n onDone(setGridFocus, defocusInput);\n }\n handleFocus() {\n var _this$inputField3;\n (_this$inputField3 = this.inputField) === null || _this$inputField3 === void 0 ? void 0 : _this$inputField3.select();\n }\n handleBlur(event) {\n var {\n relatedTarget\n } = event;\n // handleCommit results in a call that steals focus\n if (relatedTarget != null && relatedTarget.classList.contains('context-menu-container')) {\n // input blurred by calling context-menu\n // don't set grid focus, but do null column focus\n this.handleCommit(false, true);\n } else if (relatedTarget != null && relatedTarget.classList.contains('advanced-filter-button')) {\n // blurred by clicking an advanced filter button\n // don't set grid focus, maintain focusedFilterBarColumn state\n this.handleCommit(false, false);\n } else {\n // clear both, blurred elsewhere\n this.handleCommit(true, true);\n }\n }\n handleTab() {\n var backward = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n this.debouncedSendUpdate.flush();\n var {\n onTab\n } = this.props;\n onTab(backward);\n }\n handleKeyDown(event) {\n switch (event.key) {\n case 'Escape':\n event.stopPropagation();\n event.preventDefault();\n this.handleCancel();\n break;\n case 'Enter':\n event.stopPropagation();\n event.preventDefault();\n this.handleCommit();\n break;\n case 'Tab':\n event.stopPropagation();\n event.preventDefault();\n this.handleTab(event.shiftKey);\n break;\n default:\n break;\n }\n }\n handleContextMenu(event) {\n var {\n onContextMenu\n } = this.props;\n onContextMenu(event);\n }\n sendUpdate(value) {\n var {\n onChange\n } = this.props;\n onChange(value);\n }\n render() {\n var {\n className,\n style,\n isAdvancedFilterSet,\n onAdvancedFiltersTriggered\n } = this.props;\n var {\n value\n } = this.state;\n return /*#__PURE__*/_jsxs(\"div\", {\n style: style,\n className: \"iris-grid-input-autosized-wrapper\",\n \"data-value\": value // used by css based autosizer\n ,\n children: [/*#__PURE__*/_jsx(\"input\", {\n ref: inputField => {\n this.inputField = inputField;\n },\n className: classNames('iris-grid-input-field', className),\n type: \"text\",\n value: value,\n onBlur: this.handleBlur,\n onFocus: this.handleFocus,\n onChange: this.handleChange,\n onKeyDown: this.handleKeyDown,\n onContextMenu: this.handleContextMenu,\n autoComplete: \"off\",\n autoCorrect: \"off\",\n autoCapitalize: \"off\",\n spellCheck: \"false\"\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"advanced-filter-button-container\",\n children: /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: classNames('btn-link-icon advanced-filter-button', {\n 'filter-set': isAdvancedFilterSet\n }),\n onClick: onAdvancedFiltersTriggered,\n onContextMenu: this.handleContextMenu,\n children: /*#__PURE__*/_jsxs(\"div\", {\n className: \"fa-layers \",\n children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: dhFilterFilled,\n className: \"filter-solid\"\n }), /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsFilter,\n className: \"filter-light\"\n })]\n })\n })\n })]\n });\n }\n}\n_defineProperty(FilterInputField, \"defaultProps\", {\n style: {},\n className: '',\n value: '',\n isAdvancedFilterSet: false,\n onAdvancedFiltersTriggered: () => undefined,\n onChange: () => undefined,\n onDone: () => undefined,\n onTab: () => undefined,\n onContextMenu: () => undefined,\n debounceMs: 150\n});\nexport default FilterInputField;\n//# sourceMappingURL=FilterInputField.js.map","function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\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(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\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(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\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(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\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 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 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 updateFrozenColumns() {\n if (frozenColumns) {\n model.updateFrozenColumns(frozenColumns);\n }\n }, [model, frozenColumns]);\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 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(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Button, CopyButton, LoadingSpinner } from '@deephaven/components';\nimport { dhFreeze, dhRefresh, dhSortSlash, vsLock } from '@deephaven/icons';\nimport Log from '@deephaven/log';\nimport { PromiseUtils } from '@deephaven/utils';\nimport { isExpandableGridModel } from '@deephaven/grid';\nimport \"./ColumnStatistics.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nvar log = Log.module('ColumnStatistics');\nvar STATS_LABEL_OVERRIDES = {\n SIZE: 'Number of Rows'\n};\nclass ColumnStatistics extends Component {\n /** Automatically generate the statistics when the row count is below this threshold */\n\n static getStatsLabel(operation) {\n var _STATS_LABEL_OVERRIDE;\n return (_STATS_LABEL_OVERRIDE = STATS_LABEL_OVERRIDES[operation]) !== null && _STATS_LABEL_OVERRIDE !== void 0 ? _STATS_LABEL_OVERRIDE : operation.split(' ').map(w => w[0].toUpperCase() + w.substr(1).toLowerCase()).join(' ');\n }\n constructor(props) {\n super(props);\n _defineProperty(this, \"cancelablePromise\", void 0);\n this.handleError = this.handleError.bind(this);\n this.handleGenerateStatistics = this.handleGenerateStatistics.bind(this);\n this.handleStatistics = this.handleStatistics.bind(this);\n this.cancelablePromise = null;\n this.state = {\n error: null,\n loading: false,\n statistics: null,\n numRows: 0\n };\n }\n componentDidMount() {\n this.maybeGenerateStatistics();\n }\n componentWillUnmount() {\n if (this.cancelablePromise) {\n this.cancelablePromise.cancel();\n }\n }\n maybeGenerateStatistics() {\n var {\n column,\n model\n } = this.props;\n var numRows = model.rowCount - model.pendingRowCount - model.floatingBottomRowCount - model.floatingTopRowCount;\n this.setState({\n numRows\n });\n if (!model.isColumnStatisticsAvailable || column.isProxy === true) {\n this.setState({\n loading: false\n });\n } else if (numRows < ColumnStatistics.AUTO_GENERATE_LIMIT) {\n this.handleGenerateStatistics();\n }\n }\n handleGenerateStatistics() {\n this.setState({\n loading: true\n });\n var {\n column,\n model\n } = this.props;\n this.cancelablePromise = PromiseUtils.makeCancelable(model.columnStatistics(column));\n this.cancelablePromise.then(this.handleStatistics).catch(this.handleError);\n }\n handleStatistics(stats) {\n log.debug('Received statistics', stats);\n var {\n model,\n onStatistics\n } = this.props;\n var statistics = [];\n stats.statisticsMap.forEach((value, operation) => {\n statistics.push({\n operation: ColumnStatistics.getStatsLabel(operation),\n value,\n type: stats.getType(operation)\n });\n });\n stats.uniqueValues.forEach((value, operation) => {\n statistics.push({\n operation,\n className: 'column-statistics-unique-value',\n value,\n type: 'long'\n });\n });\n this.setState({\n loading: false,\n statistics,\n numRows: model.rowCount - model.pendingRowCount - model.floatingBottomRowCount - model.floatingTopRowCount\n });\n onStatistics();\n }\n handleError(error) {\n if (error != null && PromiseUtils.isCanceled(error)) {\n log.debug('Called handleError on a cancelled promise result');\n return;\n }\n log.error('Error generating statistics', error);\n this.setState({\n error,\n loading: false,\n statistics: null\n });\n }\n render() {\n var _column$displayName;\n var {\n column,\n model\n } = this.props;\n var {\n error,\n loading,\n statistics,\n numRows\n } = this.state;\n var showGenerateStatistics = !loading && error == null && statistics == null && model.isColumnStatisticsAvailable;\n var statisticElements = [];\n var columnType = column.type.substring(column.type.lastIndexOf('.') + 1);\n var description = column.description === null ? null : column.description;\n if (statistics != null) {\n for (var i = 0; i < statistics.length; i += 1) {\n var {\n operation,\n className,\n value,\n type\n } = statistics[i];\n var formattedValue = !type ? model.displayString(value, column.type, column.name) : model.displayString(value, type);\n var statisticElement = /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: classNames('column-statistic-operation', className),\n children: operation\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"column-statistic-value\",\n children: formattedValue\n })]\n }, operation);\n statisticElements.push(statisticElement);\n }\n }\n var rowCountLabel = isExpandableGridModel(model) && model.hasExpandableRows ? 'Expanded Rows' : 'Number of Rows';\n var formattedRowCount = model.displayString(numRows, 'long');\n var columnIndex = model.getColumnIndexByName(column.name);\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"column-statistics\",\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"column-statistics-title\",\n children: [(_column$displayName = column.displayName) !== null && _column$displayName !== void 0 ? _column$displayName : column.name, /*#__PURE__*/_jsxs(\"span\", {\n className: \"column-statistics-type\",\n children: [\"\\xA0(\", columnType, \")\"]\n }), /*#__PURE__*/_jsx(CopyButton, {\n className: \"column-statistics-copy\",\n tooltip: \"Copy column name\",\n copy: column.name\n })]\n }), description != null && /*#__PURE__*/_jsx(\"div\", {\n className: \"column-statistics-description\",\n children: description\n }), columnIndex != null && !model.isColumnSortable(columnIndex) && /*#__PURE__*/_jsxs(\"div\", {\n className: \"column-statistics-status\",\n children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: dhSortSlash,\n className: \"mr-1\"\n }), \"Not sortable\"]\n }), columnIndex != null && !model.isColumnMovable(columnIndex) && /*#__PURE__*/_jsxs(\"div\", {\n className: \"column-statistics-status\",\n children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: model.isColumnFrozen(columnIndex) ? dhFreeze : vsLock,\n className: \"mr-1\"\n }), model.isColumnFrozen(columnIndex) ? 'Frozen' : 'Not movable']\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"column-statistics-grid\",\n children: [statistics == null && /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"column-statistic-operation\",\n children: rowCountLabel\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"column-statistic-value\",\n children: formattedRowCount\n })]\n }), statisticElements]\n }), showGenerateStatistics && /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: \"px-0\",\n onClick: this.handleGenerateStatistics,\n children: \"Generate Stats\"\n }), error != null && /*#__PURE__*/_jsx(\"div\", {\n className: \"error-message\",\n children: \"\".concat(error)\n }), statistics && !loading && /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: \"px-0\",\n onClick: this.handleGenerateStatistics,\n icon: dhRefresh,\n children: \"Refresh\"\n }), loading && /*#__PURE__*/_jsxs(\"div\", {\n className: \"column-statistics-loading\",\n children: [/*#__PURE__*/_jsx(LoadingSpinner, {\n className: \"loading-spinner-vertical-align\"\n }), \"Calculating Stats...\"]\n })]\n });\n }\n}\n_defineProperty(ColumnStatistics, \"AUTO_GENERATE_LIMIT\", 100000);\nexport default ColumnStatistics;\n//# sourceMappingURL=ColumnStatistics.js.map","function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport React, { PureComponent } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Checkbox, Popper, SearchInput, Tooltip } from '@deephaven/components';\nimport { dhGearFilled, dhCheckSquare, dhSquareFilled, dhRemoveSquareFilled, dhWarningCircleFilled, vsCircleLargeFilled } from '@deephaven/icons';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport \"./CrossColumnSearch.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nclass CrossColumnSearch extends PureComponent {\n static createSearchFilter(dh, searchValue, selectedColumns, columns, invertSelection) {\n var filterColumns = invertSelection ? columns.filter(column => !selectedColumns.includes(column.name)).map(column => column.name) : selectedColumns;\n if (searchValue && filterColumns.length > 0) {\n var filterValue = dh.FilterValue.ofString(searchValue);\n var searchFilter = filterColumns.length === columns.length ? dh.FilterCondition.search(filterValue) : dh.FilterCondition.search(filterValue, columns.filter(column => filterColumns.includes(column.name)).map(column => column.filter()));\n return searchFilter;\n }\n return undefined;\n }\n constructor(props) {\n super(props);\n _defineProperty(this, \"searchField\", void 0);\n this.handleSearchValueChange = this.handleSearchValueChange.bind(this);\n this.toggleColumn = this.toggleColumn.bind(this);\n this.selectAll = this.selectAll.bind(this);\n this.clear = this.clear.bind(this);\n this.selectNumbers = this.selectNumbers.bind(this);\n this.searchField = /*#__PURE__*/React.createRef();\n this.state = {\n isConfigureColumnsShown: false\n };\n }\n focus() {\n var _this$searchField$cur;\n (_this$searchField$cur = this.searchField.current) === null || _this$searchField$cur === void 0 ? void 0 : _this$searchField$cur.focus();\n }\n handleSearchValueChange(event) {\n var {\n onChange,\n selectedColumns,\n invertSelection\n } = this.props;\n onChange(event.target.value, selectedColumns, invertSelection);\n }\n sendColumnChange(selectedColumns, invertSelection) {\n var {\n onChange,\n value\n } = this.props;\n onChange(value, selectedColumns, invertSelection);\n }\n setInvertSelection(invertSelection) {\n var {\n onChange,\n value\n } = this.props;\n onChange(value, [], invertSelection);\n }\n toggleColumn(name) {\n var {\n selectedColumns,\n invertSelection\n } = this.props;\n if (selectedColumns.includes(name)) {\n this.sendColumnChange(selectedColumns.filter(c => c !== name), invertSelection);\n } else {\n var update = selectedColumns.slice();\n update.push(name);\n this.sendColumnChange(update, invertSelection);\n }\n }\n selectAll() {\n this.setInvertSelection(true);\n }\n clear() {\n this.setInvertSelection(false);\n }\n selectNumbers() {\n var {\n columns\n } = this.props;\n this.sendColumnChange(columns.filter(c => TableUtils.isNumberType(c.type)).map(column => column.name), false);\n }\n render() {\n var {\n value,\n selectedColumns,\n invertSelection,\n columns\n } = this.props;\n var {\n isConfigureColumnsShown\n } = this.state;\n var hasAllColumnsSelected = selectedColumns.length === 0 && invertSelection === true || selectedColumns.length === columns.length && invertSelection === false;\n var hasNoColumnsSelected = selectedColumns.length === 0 && invertSelection === false || selectedColumns.length === columns.length && invertSelection === true;\n\n // set icon layers\n var icon;\n if (hasAllColumnsSelected) {\n // icon if all columns selected for search\n icon = /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: dhSquareFilled,\n mask: dhGearFilled,\n transform: \"shrink-2 down-5 right-7\"\n }), /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: dhCheckSquare,\n className: \"text-primary\",\n transform: \"shrink-4 down-5 right-7\"\n })]\n });\n } else if (hasNoColumnsSelected) {\n // icon error, no columns selected for searching\n icon = /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsCircleLargeFilled,\n mask: dhGearFilled,\n transform: \"shrink-1 down-5 right-7\"\n }), /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: dhWarningCircleFilled,\n className: \"text-danger\",\n transform: \"shrink-4 down-5 right-7\"\n })]\n });\n } else {\n // icon if some columns selected, but not all\n icon = /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: dhSquareFilled,\n mask: dhGearFilled,\n transform: \"shrink-2 down-5 right-7\"\n }), /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: dhRemoveSquareFilled,\n className: \"text-primary\",\n transform: \"shrink-4 down-5 right-7\"\n })]\n });\n }\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"cross-column-container\",\n children: [/*#__PURE__*/_jsx(SearchInput, {\n className: \"cross-column-search\",\n placeholder: \"Search Data...\",\n \"data-testid\": \"cross-column-search\",\n value: value,\n onChange: this.handleSearchValueChange,\n ref: this.searchField\n }), /*#__PURE__*/_jsxs(\"button\", {\n type: \"button\",\n className: \"btn btn-link btn-link-icon px-2\",\n onClick: () => {\n if (isConfigureColumnsShown) {\n this.setState({\n isConfigureColumnsShown: false\n });\n } else {\n this.setState({\n isConfigureColumnsShown: true\n });\n }\n },\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"fa-layers\",\n children: icon\n }), /*#__PURE__*/_jsx(Tooltip, {\n children: \"Configure Columns\"\n }), /*#__PURE__*/_jsx(Popper, {\n isShown: isConfigureColumnsShown,\n className: \"cross-column-popper\",\n onExited: () => {\n this.setState({\n isConfigureColumnsShown: false\n });\n },\n closeOnBlur: true,\n interactive: true,\n children: /*#__PURE__*/_jsxs(\"div\", {\n className: \"cross-column-popup\",\n children: [\"Searched Columns\", /*#__PURE__*/_jsx(\"div\", {\n className: \"cross-column-scroll\",\n children: columns.map(column => {\n if (column.isProxy === true) return null;\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(Checkbox, {\n className: \"cross-column-checkbox\",\n checked: invertSelection ? !selectedColumns.includes(column.name) : selectedColumns.includes(column.name),\n onChange: () => this.toggleColumn(column.name),\n children: column.name\n }), column.type.substring(column.type.lastIndexOf('.') + 1)]\n }, column.name);\n })\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"cross-column-button-bar\",\n children: [/*#__PURE__*/_jsx(\"button\", {\n type: \"button\",\n className: \"btn btn-link\",\n onClick: this.selectAll,\n children: \"Select All\"\n }), /*#__PURE__*/_jsx(\"button\", {\n type: \"button\",\n className: \"btn btn-link\",\n onClick: this.clear,\n children: \"Clear\"\n }), /*#__PURE__*/_jsx(\"button\", {\n type: \"button\",\n className: \"btn btn-link\",\n onClick: this.selectNumbers,\n children: \"Numbers Only\"\n })]\n }), hasNoColumnsSelected && /*#__PURE__*/_jsxs(\"p\", {\n className: \"text-danger\",\n children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: dhWarningCircleFilled\n }), \" Select at least one column to search.\"]\n })]\n })\n })]\n })]\n });\n }\n}\nexport default CrossColumnSearch;\n//# sourceMappingURL=CrossColumnSearch.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport React, { Component } from 'react';\nimport memoizee from 'memoizee';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Button } from '@deephaven/components';\nimport { vsChevronRight, vsMerge, vsKey } from '@deephaven/icons';\nimport Log from '@deephaven/log';\nimport { Picker } from '@deephaven/jsapi-components';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport { assertNotNull, Pending, PromiseUtils } from '@deephaven/utils';\nimport \"./IrisGridPartitionSelector.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('IrisGridPartitionSelector');\nclass IrisGridPartitionSelector extends Component {\n constructor(props) {\n super(props);\n _defineProperty(this, \"pending\", void 0);\n _defineProperty(this, \"tableUtils\", void 0);\n _defineProperty(this, \"getCachedChangeCallback\", memoizee(index => value => this.handlePartitionSelect(index, value)));\n _defineProperty(this, \"getCachedFormatValueCallback\", memoizee(index => value => this.getDisplayValue(index, value)));\n this.handlePartitionTableClick = this.handlePartitionTableClick.bind(this);\n this.handleMergeClick = this.handleMergeClick.bind(this);\n this.handlePartitionSelect = this.handlePartitionSelect.bind(this);\n var {\n model\n } = props;\n this.tableUtils = new TableUtils(model.dh);\n this.pending = new Pending();\n this.state = {\n // We start be loading the partition tables, so we should be in a loading state\n isLoading: true,\n baseTable: null,\n keysTable: null,\n partitionTables: null\n };\n }\n componentDidMount() {\n var _this = this;\n return _asyncToGenerator(function* () {\n var {\n model\n } = _this.props;\n try {\n var keysTable = yield _this.pending.add(model.partitionKeysTable().then(keyTable => keyTable), t => t.close());\n var baseTable = yield _this.pending.add(model.partitionBaseTable(), t => t.close());\n _this.setState({\n keysTable,\n baseTable,\n isLoading: false\n });\n _this.updatePartitionOptions();\n } catch (e) {\n if (!PromiseUtils.isCanceled(e)) {\n // Just re-throw the error if it's not a cancel\n throw e;\n }\n }\n })();\n }\n componentDidUpdate(prevProps) {\n var {\n partitionConfig: prevConfig\n } = prevProps;\n var {\n partitionConfig\n } = this.props;\n if (prevConfig !== partitionConfig) {\n this.updatePartitionOptions();\n }\n }\n componentWillUnmount() {\n this.pending.cancel();\n var {\n keysTable,\n baseTable,\n partitionTables\n } = this.state;\n baseTable === null || baseTable === void 0 ? void 0 : baseTable.close();\n keysTable === null || keysTable === void 0 ? void 0 : keysTable.close();\n partitionTables === null || partitionTables === void 0 ? void 0 : partitionTables.forEach(table => table.close());\n }\n handlePartitionTableClick() {\n log.debug2('handlePartitionTableClick');\n var {\n partitionConfig\n } = this.props;\n assertNotNull(partitionConfig);\n var newPartitionConfig = _objectSpread({}, partitionConfig);\n // Toggle between Keys and Partition mode\n newPartitionConfig.mode = partitionConfig.mode === 'keys' ? 'partition' : 'keys';\n this.sendUpdate(newPartitionConfig);\n }\n handleMergeClick() {\n log.debug2('handleMergeClick');\n var {\n partitionConfig\n } = this.props;\n assertNotNull(partitionConfig);\n var newPartitionConfig = _objectSpread({}, partitionConfig);\n // Toggle between Merged and Partition mode\n newPartitionConfig.mode = partitionConfig.mode === 'merged' ? 'partition' : 'merged';\n this.sendUpdate(newPartitionConfig);\n }\n\n /**\n * Handles when a partition dropdown selection is changed. Will send an update with the new partition config\n * @param index Index of the partition column that was changed\n * @param selectedValue Selected value of the partition column\n */\n handlePartitionSelect(index, selectedValue) {\n var _this2 = this;\n return _asyncToGenerator(function* () {\n var {\n partitionConfig: prevConfig\n } = _this2.props;\n assertNotNull(prevConfig);\n log.debug('handlePartitionSelect', index, selectedValue, prevConfig);\n var newPartitions = [...prevConfig.partitions];\n newPartitions[index] = selectedValue;\n var {\n baseTable\n } = _this2.state;\n var {\n keysTable\n } = _this2.state;\n assertNotNull(baseTable);\n assertNotNull(keysTable);\n try {\n _this2.setState({\n isLoading: true\n });\n var t = yield _this2.pending.add(baseTable.copy(), tCopy => tCopy.close());\n\n // Apply our partition filters, and just get the first value\n var partitionFilters = newPartitions.slice(0, index + 1).map((partition, i) => {\n var partitionColumn = t.columns[i];\n return _this2.tableUtils.makeNullableEqFilter(partitionColumn, partition);\n });\n t.applyFilter(partitionFilters);\n t.setViewport(0, 0, t.columns);\n var data = yield _this2.pending.add(t.getViewportData());\n var newConfig = {\n // Core JSAPI returns undefined for null table values,\n // coalesce with null to differentiate null from no selection in the dropdown\n // https://github.com/deephaven/deephaven-core/issues/5400\n partitions: keysTable.columns.map(column => data.rows[0].get(column)),\n mode: 'partition'\n };\n t.close();\n _this2.sendUpdate(newConfig);\n } catch (e) {\n if (!PromiseUtils.isCanceled(e)) {\n log.error('Unable to get partition tables', e);\n }\n } finally {\n _this2.setState({\n isLoading: false\n });\n }\n })();\n }\n sendUpdate(partitionConfig) {\n log.debug2('sendUpdate', partitionConfig);\n var {\n onChange\n } = this.props;\n onChange(partitionConfig);\n }\n\n /**\n * Calls model.displayString with a special character case\n * @param index The index of the partition column to get the display value for\n * @param value The partition value to get the display value for\n */\n getDisplayValue(index, value) {\n var {\n model\n } = this.props;\n if (value === null) {\n return '(null)';\n }\n if (value === undefined || value === '') {\n return '';\n }\n var column = model.partitionColumns[index];\n if (TableUtils.isCharType(column.type) && value.toString().length > 0) {\n return String.fromCharCode(parseInt(value.toString(), 10));\n }\n return model.displayString(value, column.type, column.name);\n }\n\n /**\n * Update the options on the partition dropdown tables\n */\n updatePartitionOptions() {\n var _this3 = this;\n return _asyncToGenerator(function* () {\n var {\n model\n } = _this3.props;\n var {\n partitionConfig: prevConfig\n } = _this3.props;\n if (prevConfig == null) {\n return;\n }\n var {\n keysTable\n } = _this3.state;\n assertNotNull(keysTable);\n var partitionFilters = [...prevConfig.partitions].map((partition, i) => {\n var partitionColumn = keysTable.columns[i];\n return _this3.tableUtils.makeNullableEqFilter(partitionColumn, partition);\n });\n var partitionTables = yield Promise.all(model.partitionColumns.map( /*#__PURE__*/function () {\n var _ref = _asyncToGenerator(function* (_, i) {\n keysTable.applyFilter(partitionFilters.slice(0, i));\n return keysTable.selectDistinct(model.partitionColumns.slice(0, i + 1));\n });\n return function (_x, _x2) {\n return _ref.apply(this, arguments);\n };\n }()));\n _this3.setState({\n partitionTables\n });\n })();\n }\n getPartitionFilters(partitionTables) {\n var {\n model,\n partitionConfig\n } = this.props;\n assertNotNull(partitionConfig);\n var {\n partitions\n } = partitionConfig;\n log.debug('getPartitionFilters', partitionConfig);\n if (partitions.length !== partitionTables.length) {\n throw new Error(\"Invalid partition config set. Expected \".concat(partitionTables.length, \" partitions, but got \").concat(partitions.length));\n }\n\n // The filters are applied in order, so we need to build up the filters for each partition\n var partitionFilters = [];\n for (var i = 0; i < partitions.length; i += 1) {\n if (i === 0) {\n // There's no reason to ever filter the first table\n partitionFilters.push([]);\n } else {\n var previousFilter = partitionFilters[i - 1];\n var previousPartition = partitions[i - 1];\n var previousColumn = model.partitionColumns[i - 1];\n var partitionFilter = [...previousFilter, this.tableUtils.makeNullableEqFilter(previousColumn, previousPartition)];\n partitionFilters.push(partitionFilter);\n }\n }\n return partitionFilters;\n }\n render() {\n var {\n model,\n partitionConfig\n } = this.props;\n var {\n isLoading,\n partitionTables\n } = this.state;\n var partitionSelectors = model.partitionColumns.map((column, index) => /*#__PURE__*/_jsxs(\"div\", {\n className: \"column-selector\",\n children: [(partitionTables === null || partitionTables === void 0 ? void 0 : partitionTables[index]) && /*#__PURE__*/_jsx(Picker, {\n label: column.name,\n labelPosition: \"side\",\n table: partitionTables[index],\n direction: \"bottom\",\n shouldFlip: false,\n keyColumn: partitionTables[index].columns[index].name,\n selectedKey: (partitionConfig === null || partitionConfig === void 0 ? void 0 : partitionConfig.mode) === 'partition' ? partitionConfig.partitions[index] : null,\n placeholder: \"Select a key\",\n labelColumn: partitionTables[index].columns[index].name,\n onChange: this.getCachedChangeCallback(index),\n isDisabled: isLoading || partitionConfig == null\n }), model.partitionColumns.length - 1 === index || /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsChevronRight\n })]\n }, \"selector-\".concat(column.name)));\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"iris-grid-partition-selector\",\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"partition-button-group\",\n children: [/*#__PURE__*/_jsx(Button, {\n onClick: this.handlePartitionTableClick,\n kind: \"inline\",\n tooltip: model.isPartitionAwareSourceTable ? 'View keys as table' : 'View underlying partition table',\n icon: vsKey,\n active: (partitionConfig === null || partitionConfig === void 0 ? void 0 : partitionConfig.mode) === 'keys',\n disabled: isLoading || partitionConfig == null,\n children: \"Partitions\"\n }), /*#__PURE__*/_jsx(Button, {\n onClick: this.handleMergeClick,\n kind: \"inline\",\n tooltip: \"View all partitions as one merged table\",\n icon: /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsMerge,\n rotation: 90\n }),\n active: (partitionConfig === null || partitionConfig === void 0 ? void 0 : partitionConfig.mode) === 'merged',\n disabled: isLoading || partitionConfig == null,\n children: model.isPartitionAwareSourceTable ? 'Coalesce' : 'Merge'\n })]\n }), partitionSelectors]\n });\n }\n}\nexport default IrisGridPartitionSelector;\n//# sourceMappingURL=IrisGridPartitionSelector.js.map","function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport React, { Component } from 'react';\nimport deepEqual from 'fast-deep-equal';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { dhNewCircleLargeFilled, vsTrash } from '@deephaven/icons';\nimport { Button, Select } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport \"./SelectDistinctBuilder.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('SelectDistinctBuilder');\nclass SelectDistinctBuilder extends Component {\n constructor(props) {\n super(props);\n this.handleAddColumnClick = this.handleAddColumnClick.bind(this);\n this.handleDeleteColumn = this.handleDeleteColumn.bind(this);\n this.handleDropdownChanged = this.handleDropdownChanged.bind(this);\n var {\n model,\n selectDistinctColumns\n } = this.props;\n this.state = {\n inputs: selectDistinctColumns.length > 0 ? [...selectDistinctColumns] : [''],\n columns: model.originalColumns\n };\n }\n componentDidUpdate(prevProps, prevState) {\n var {\n inputs\n } = this.state;\n var {\n onChange\n } = this.props;\n if (prevState.inputs !== inputs) {\n var filteredInputs = inputs.filter(val => val !== '');\n if (!deepEqual(prevState.inputs.filter(val => val !== ''), filteredInputs)) {\n onChange(filteredInputs);\n }\n }\n }\n handleAddColumnClick() {\n this.setState(_ref => {\n var {\n inputs: prevInputs\n } = _ref;\n return {\n inputs: [...prevInputs, '']\n };\n });\n }\n handleDeleteColumn(index) {\n this.setState(_ref2 => {\n var {\n inputs\n } = _ref2;\n return {\n inputs: inputs.length === 1 && index === 0 ? [''] : inputs.filter((input, inputIndex) => index !== inputIndex)\n };\n });\n }\n handleDropdownChanged(index, value) {\n log.debug('handleDropdownChanged', index, value);\n this.setState(_ref3 => {\n var {\n inputs: prevInputs\n } = _ref3;\n var inputs = [...prevInputs];\n inputs[index] = value;\n return {\n inputs\n };\n });\n }\n renderInputs() {\n var {\n columns,\n inputs\n } = this.state;\n return inputs.map((value, index) => {\n var options = columns.filter(_ref4 => {\n var {\n name\n } = _ref4;\n return name === value || !inputs.includes(name);\n }).map(_ref5 => {\n var {\n name\n } = _ref5;\n return /*#__PURE__*/_jsx(\"option\", {\n value: name,\n children: name\n }, name);\n });\n return (\n /*#__PURE__*/\n // eslint-disable-next-line react/no-array-index-key\n _jsxs(\"div\", {\n className: \"form-inline px-3 pb-3\",\n children: [/*#__PURE__*/_jsxs(Select, {\n className: \"form-control custom-select col\",\n value: value,\n onChange: eventTargetValue => this.handleDropdownChanged(index, eventTargetValue),\n children: [/*#__PURE__*/_jsx(\"option\", {\n value: \"\",\n children: \"Select a column\"\n }), options]\n }), (inputs.length > 1 || value !== '') && /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: \"ml-1 px-2\",\n onClick: () => {\n this.handleDeleteColumn(index);\n },\n icon: /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsTrash,\n transform: \"grow-3\"\n }),\n tooltip: \"Delete column\"\n })]\n }, index)\n );\n });\n }\n render() {\n var {\n columns,\n inputs\n } = this.state;\n var disableAddButton = inputs.length >= columns.length;\n return /*#__PURE__*/_jsxs(\"div\", {\n role: \"presentation\",\n className: \"select-distinct-builder-container h-100\",\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"select-distinct-title\",\n children: \"Display Unique Values From\"\n }), this.renderInputs(), /*#__PURE__*/_jsx(\"hr\", {}), /*#__PURE__*/_jsx(\"div\", {\n className: \"pt-1 px-3\",\n children: /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: \"btn-add-column\",\n onClick: this.handleAddColumnClick,\n disabled: disableAddButton,\n icon: dhNewCircleLargeFilled,\n children: \"Add Additional Column\"\n })\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"select-distinct-builder-footer\",\n children: /*#__PURE__*/_jsx(\"div\", {\n className: \"select-distinct-builder-hint\",\n children: \"Display only unique values from the selected table columns. Note that this will reset any filters and display only the selected columns.\"\n })\n })]\n });\n }\n}\n_defineProperty(SelectDistinctBuilder, \"defaultProps\", {\n selectDistinctColumns: [],\n onChange: () => undefined\n});\nexport default SelectDistinctBuilder;\n//# sourceMappingURL=SelectDistinctBuilder.js.map","import React from 'react';\nimport { Menu } from '@deephaven/components';\nimport AdvancedSettingsType from \"./AdvancedSettingsType.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction AdvancedSettingsMenu(_ref) {\n var {\n items,\n onChange: _onChange = () => undefined\n } = _ref;\n return /*#__PURE__*/_jsx(Menu, {\n items: Array.from(items.entries()).map(_ref2 => {\n var [key, isOn] = _ref2;\n return {\n title: AdvancedSettingsMenu.getAdvancedSettingsTitleForKey(key),\n isOn,\n onChange: value => _onChange(key, value)\n };\n })\n });\n}\nAdvancedSettingsMenu.getAdvancedSettingsTitleForKey = key => {\n switch (key) {\n case AdvancedSettingsType.FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS:\n return 'Clear current table filters before applying new filters from a control';\n case AdvancedSettingsType.LINK_CHANGE_CLEARS_ALL_FILTERS:\n return 'Clear current table filters before applying new filters from an incoming link filter';\n }\n};\nexport default AdvancedSettingsMenu;\n//# sourceMappingURL=AdvancedSettingsMenu.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport React, { useCallback } from 'react';\nimport { DragDropContext, Draggable, Droppable } from 'react-beautiful-dnd';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { dhNewCircleLargeFilled, vsGripper, vsTrash } from '@deephaven/icons';\nimport { Button, DragUtils, Tooltip } from '@deephaven/components';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport \"./ConditionalFormattingMenu.css\";\nimport { FormatterType, getBackgroundForStyleConfig, getColorForStyleConfig, getShortLabelForConditionType, NumberCondition, StringCondition, DateCondition } from \"./ConditionalFormattingUtils.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('ConditionalFormattingMenu');\nvar DEFAULT_CALLBACK = () => undefined;\nfunction getRuleValue(config) {\n var {\n column: {\n type\n }\n } = config;\n if (TableUtils.isNumberType(type)) {\n return config.condition === NumberCondition.IS_NULL || config.condition === NumberCondition.IS_NOT_NULL ? '' : \"\".concat(config.value);\n }\n if (TableUtils.isCharType(type)) {\n return config.condition === DateCondition.IS_NULL || config.condition === DateCondition.IS_NOT_NULL ? '' : \"\".concat(config.value);\n }\n if (TableUtils.isStringType(type)) {\n return config.condition === StringCondition.IS_NULL || config.condition === StringCondition.IS_NOT_NULL ? '' : \"\\\"\".concat(config.value, \"\\\"\");\n }\n if (TableUtils.isDateType(type)) {\n return config.condition === DateCondition.IS_NULL || config.condition === DateCondition.IS_NOT_NULL ? '' : \"\".concat(config.value);\n }\n if (TableUtils.isBooleanType(type)) {\n return '';\n }\n throw new Error(\"Invalid column type \".concat(type, \" in getRuleValue\"));\n}\nfunction getRuleTitle(config) {\n if (TableUtils.isNumberType(config.column.type) && config.condition === NumberCondition.IS_BETWEEN) {\n return \"\".concat(config.start, \" < \").concat(config.column.name, \" < \").concat(config.end);\n }\n return \"\".concat(config.column.name, \" \").concat(getShortLabelForConditionType(config.column.type, config.condition), \" \\n \").concat(getRuleValue(config));\n}\nfunction ConditionalFormattingMenu(props) {\n var {\n rules = [],\n onChange = DEFAULT_CALLBACK,\n onCreate = DEFAULT_CALLBACK,\n onSelect = DEFAULT_CALLBACK\n } = props;\n var handleRuleClick = useCallback((e, rule, index) => {\n e.stopPropagation();\n log.debug('Rule clicked', rule, index);\n onSelect(index);\n }, [onSelect]);\n var handleDeleteClick = useCallback((e, rule, index) => {\n e.stopPropagation();\n log.debug('Delete button clicked', rule, index);\n var updatedRules = [...rules];\n updatedRules.splice(index, 1);\n onChange(updatedRules);\n }, [onChange, rules]);\n var handleDragHandlerClick = useCallback(e => {\n e.stopPropagation();\n }, []);\n var handleDragEnd = useCallback(result => {\n DragUtils.stopDragging();\n\n // if dropped outside the list\n if (result.destination == null) {\n return;\n }\n var sourceIndex = result.source.index;\n var destinationIndex = result.destination.index;\n var updatedRules = [...rules];\n var sourceInput = rules[sourceIndex];\n updatedRules.splice(sourceIndex, 1);\n updatedRules.splice(destinationIndex, 0, sourceInput);\n onChange(updatedRules);\n }, [onChange, rules]);\n\n // Display list of rules\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"conditional-formatting-rules\",\n children: [/*#__PURE__*/_jsx(DragDropContext, {\n onDragStart: DragUtils.startDragging,\n onDragEnd: handleDragEnd,\n children: /*#__PURE__*/_jsx(Droppable, {\n droppableId: \"droppable-custom-columns\",\n children: (provided, snapshot) => /*#__PURE__*/_jsxs(\"div\", _objectSpread(_objectSpread({\n ref: provided.innerRef\n // eslint-disable-next-line react/jsx-props-no-spreading\n }, provided.droppableProps), {}, {\n className: classNames('droppable-container', {\n dragging: snapshot.draggingFromThisWith\n }),\n children: [rules.length === 0 && /*#__PURE__*/_jsx(\"div\", {\n className: \"text-muted pl-2\",\n children: \"No formats defined\"\n }), rules.map((rule, index) => /*#__PURE__*/_jsx(Draggable\n // eslint-disable-next-line react/no-array-index-key\n , {\n draggableId: \"\".concat(index, \"-\").concat(rule.type),\n index: index,\n disableInteractiveElementBlocking: true,\n children:\n // eslint-disable-next-line @typescript-eslint/no-shadow\n (provided, snapshot) => /*#__PURE__*/_jsx(\"div\", _objectSpread(_objectSpread({\n role: \"menuitem\",\n tabIndex: 0,\n onClick: e => handleRuleClick(e, rule, index),\n className: classNames('draggable-container', {\n dragging: snapshot.isDragging\n }),\n ref: provided.innerRef\n // eslint-disable-next-line react/jsx-props-no-spreading\n }, provided.draggableProps), {}, {\n children: /*#__PURE__*/_jsx(\"div\", {\n className: \"conditional-formatting-list-item\",\n children: /*#__PURE__*/_jsxs(\"div\", {\n className: \"formatting-item\",\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"rule-icon\",\n children: /*#__PURE__*/_jsx(\"span\", {\n className: \"rule-icon-bg\",\n style: {\n backgroundColor: getBackgroundForStyleConfig(rule.config.style),\n color: getColorForStyleConfig(rule.config.style)\n },\n children: rule.type === FormatterType.ROWS ? 'row' : 'col'\n })\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"rule-title\",\n children: getRuleTitle(rule.config)\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: \"ml-1 px-2\",\n onClick: e => handleDeleteClick(e, rule, index),\n icon: vsTrash,\n tooltip: \"Delete rule\"\n }), /*#__PURE__*/_jsxs(\"button\", _objectSpread(_objectSpread({\n type: \"button\",\n className: \"btn btn-link btn-link-icon px-2 btn-drag-handle\",\n onClick: handleDragHandlerClick\n // eslint-disable-next-line react/jsx-props-no-spreading\n }, provided.dragHandleProps), {}, {\n children: [/*#__PURE__*/_jsx(Tooltip, {\n children: \"Drag to re-order\"\n }), /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsGripper\n })]\n }))]\n })\n })\n }))\n }, \"\".concat(index, \"-\").concat(rule.type))), provided.placeholder]\n }))\n })\n }), /*#__PURE__*/_jsx(\"hr\", {}), /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n onClick: onCreate,\n icon: dhNewCircleLargeFilled,\n children: \"Add New Rule\"\n })]\n });\n}\nexport default ConditionalFormattingMenu;\n//# sourceMappingURL=ConditionalFormattingMenu.js.map","import { useCallback, useEffect, useMemo, useState } from 'react';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport { Select } from '@deephaven/components';\nimport { StringCondition, DateCondition, getLabelForNumberCondition, getLabelForDateCondition, getLabelForStringCondition, NumberCondition, getDefaultConditionForType, getLabelForBooleanCondition, BooleanCondition, CharCondition, getLabelForCharCondition, isDateConditionValid, getDefaultValueForType } from \"./ConditionalFormattingUtils.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('ConditionEditor');\nvar DEFAULT_CALLBACK = () => undefined;\nvar numberConditionOptions = [NumberCondition.IS_EQUAL, NumberCondition.IS_NOT_EQUAL, NumberCondition.IS_BETWEEN, NumberCondition.GREATER_THAN, NumberCondition.GREATER_THAN_OR_EQUAL, NumberCondition.LESS_THAN, NumberCondition.LESS_THAN_OR_EQUAL, NumberCondition.IS_NULL, NumberCondition.IS_NOT_NULL].map(option => /*#__PURE__*/_jsx(\"option\", {\n value: option,\n children: getLabelForNumberCondition(option)\n}, option));\nvar stringConditions = [StringCondition.IS_EXACTLY, StringCondition.IS_NOT_EXACTLY, StringCondition.CONTAINS, StringCondition.DOES_NOT_CONTAIN, StringCondition.STARTS_WITH, StringCondition.ENDS_WITH, StringCondition.IS_NULL, StringCondition.IS_NOT_NULL].map(option => /*#__PURE__*/_jsx(\"option\", {\n value: option,\n children: getLabelForStringCondition(option)\n}, option));\nvar dateConditions = [DateCondition.IS_EXACTLY, DateCondition.IS_NOT_EXACTLY, DateCondition.IS_BEFORE, DateCondition.IS_BEFORE_OR_EQUAL, DateCondition.IS_AFTER, DateCondition.IS_AFTER_OR_EQUAL, DateCondition.IS_NULL, DateCondition.IS_NOT_NULL].map(option => /*#__PURE__*/_jsx(\"option\", {\n value: option,\n children: getLabelForDateCondition(option)\n}, option));\nvar booleanConditions = [BooleanCondition.IS_TRUE, BooleanCondition.IS_FALSE, BooleanCondition.IS_NULL, BooleanCondition.IS_NOT_NULL].map(option => /*#__PURE__*/_jsx(\"option\", {\n value: option,\n children: getLabelForBooleanCondition(option)\n}, option));\nvar charConditions = [CharCondition.IS_EQUAL, CharCondition.IS_NOT_EQUAL, CharCondition.IS_NULL, CharCondition.IS_NOT_NULL].map(option => /*#__PURE__*/_jsx(\"option\", {\n value: option,\n children: getLabelForCharCondition(option)\n}, option));\nfunction isNumberConditionValid(condition, value, startValue, endValue) {\n if (condition === NumberCondition.IS_NULL || condition === NumberCondition.IS_NOT_NULL) {\n return true;\n }\n if (condition === NumberCondition.IS_BETWEEN && startValue != null && startValue !== '' && !Number.isNaN(Number.parseFloat(startValue)) && endValue != null && endValue !== '' && !Number.isNaN(Number.parseFloat(endValue))) {\n return true;\n }\n if (condition !== NumberCondition.IS_BETWEEN && value !== undefined && value !== '' && !Number.isNaN(Number.parseFloat(value))) {\n return true;\n }\n return false;\n}\nfunction getNumberInputs(selectedCondition, handleValueChange, handleStartValueChange, handleEndValueChange, conditionValue, startValue, endValue) {\n switch (selectedCondition) {\n case NumberCondition.IS_EQUAL:\n case NumberCondition.IS_NOT_EQUAL:\n case NumberCondition.GREATER_THAN:\n case NumberCondition.GREATER_THAN_OR_EQUAL:\n case NumberCondition.LESS_THAN:\n case NumberCondition.LESS_THAN_OR_EQUAL:\n return /*#__PURE__*/_jsx(\"input\", {\n type: \"number\",\n className: \"form-control\",\n placeholder: \"Enter value\",\n value: conditionValue !== null && conditionValue !== void 0 ? conditionValue : '',\n onChange: handleValueChange\n });\n case NumberCondition.IS_BETWEEN:\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"d-flex flex-row\",\n children: [/*#__PURE__*/_jsx(\"input\", {\n type: \"number\",\n className: \"form-control d-flex mr-2\",\n placeholder: \"Start value\",\n value: startValue !== null && startValue !== void 0 ? startValue : '',\n onChange: handleStartValueChange\n }), /*#__PURE__*/_jsx(\"input\", {\n type: \"number\",\n className: \"form-control d-flex\",\n placeholder: \"End value\",\n value: endValue !== null && endValue !== void 0 ? endValue : '',\n onChange: handleEndValueChange\n })]\n });\n case NumberCondition.IS_NULL:\n case NumberCondition.IS_NOT_NULL:\n return null;\n }\n}\nfunction getStringInputs(selectedCondition, handleValueChange, conditionValue) {\n switch (selectedCondition) {\n case StringCondition.IS_NULL:\n case StringCondition.IS_NOT_NULL:\n return null;\n default:\n return /*#__PURE__*/_jsx(\"input\", {\n type: \"text\",\n className: \"form-control\",\n placeholder: \"Enter value\",\n value: conditionValue !== null && conditionValue !== void 0 ? conditionValue : '',\n onChange: handleValueChange\n });\n }\n}\nfunction getDateInputs(selectedCondition, handleValueChange, conditionValue) {\n switch (selectedCondition) {\n case DateCondition.IS_NULL:\n case DateCondition.IS_NOT_NULL:\n return null;\n default:\n return /*#__PURE__*/_jsx(\"input\", {\n type: \"text\",\n className: \"form-control\",\n placeholder: \"Enter value\",\n value: conditionValue !== null && conditionValue !== void 0 ? conditionValue : '',\n onChange: handleValueChange\n });\n }\n}\nfunction getBooleanInputs() {\n return null;\n}\nfunction getCharInputs(selectedCondition, handleValueChange, conditionValue) {\n switch (selectedCondition) {\n case CharCondition.IS_NULL:\n case CharCondition.IS_NOT_NULL:\n return null;\n default:\n return /*#__PURE__*/_jsx(\"input\", {\n type: \"text\",\n className: \"form-control\",\n maxLength: 1,\n placeholder: \"Enter value\",\n value: conditionValue !== null && conditionValue !== void 0 ? conditionValue : '',\n onChange: handleValueChange\n });\n }\n}\nfunction ConditionEditor(props) {\n var {\n column,\n config,\n dh,\n onChange = DEFAULT_CALLBACK\n } = props;\n var selectedColumnType = column.type;\n var [prevColumnType, setPrevColumnType] = useState(selectedColumnType);\n var [selectedCondition, setCondition] = useState(config.condition);\n var [conditionValue, setValue] = useState(config.value);\n var [startValue, setStartValue] = useState(config.start);\n var [endValue, setEndValue] = useState(config.end);\n if (selectedColumnType !== prevColumnType) {\n // Column type changed, reset condition and value fields\n setCondition(getDefaultConditionForType(selectedColumnType));\n setValue(getDefaultValueForType(selectedColumnType));\n setStartValue(undefined);\n setEndValue(undefined);\n setPrevColumnType(selectedColumnType);\n }\n var conditions = useMemo(() => {\n if (selectedColumnType === undefined) {\n return [];\n }\n if (TableUtils.isNumberType(selectedColumnType)) {\n return numberConditionOptions;\n }\n if (TableUtils.isCharType(selectedColumnType)) {\n return charConditions;\n }\n if (TableUtils.isStringType(selectedColumnType)) {\n return stringConditions;\n }\n if (TableUtils.isDateType(selectedColumnType)) {\n return dateConditions;\n }\n if (TableUtils.isBooleanType(selectedColumnType)) {\n return booleanConditions;\n }\n }, [selectedColumnType]);\n var handleConditionChange = useCallback(value => {\n log.debug('handleConditionChange', value);\n setCondition(value);\n }, []);\n var handleValueChange = useCallback(e => {\n var {\n value\n } = e.target;\n log.debug('handleValueChange', value);\n setValue(value);\n }, []);\n var handleStartValueChange = useCallback(e => {\n var {\n value\n } = e.target;\n log.debug('handleStartValueChange', value);\n setStartValue(value);\n }, []);\n var handleEndValueChange = useCallback(e => {\n var {\n value\n } = e.target;\n log.debug('handleEndValueChange', value);\n setEndValue(value);\n }, []);\n useEffect(function changeCondition() {\n var isValid = true;\n if (selectedCondition === undefined) {\n log.debug('Unable to create formatting rule. Condition is not selected.');\n isValid = false;\n } else if (TableUtils.isNumberType(column.type) && !isNumberConditionValid(selectedCondition, conditionValue, startValue, endValue)) {\n log.debug('Unable to create formatting rule. Invalid value', conditionValue);\n isValid = false;\n } else if (TableUtils.isDateType(column.type) && !isDateConditionValid(dh, selectedCondition, conditionValue)) {\n log.debug('Unable to create formatting rule. Invalid date condition', conditionValue);\n isValid = false;\n }\n onChange({\n condition: selectedCondition,\n value: conditionValue,\n start: startValue,\n end: endValue\n }, isValid);\n }, [onChange, column.type, dh, selectedCondition, conditionValue, startValue, endValue]);\n var conditionInputs = useMemo(() => {\n if (selectedColumnType === undefined) {\n // Column not selected\n return null;\n }\n if (TableUtils.isNumberType(selectedColumnType)) {\n return getNumberInputs(selectedCondition, handleValueChange, handleStartValueChange, handleEndValueChange, conditionValue, startValue, endValue);\n }\n if (TableUtils.isCharType(selectedColumnType)) {\n return getCharInputs(selectedCondition, handleValueChange, conditionValue);\n }\n if (TableUtils.isStringType(selectedColumnType)) {\n return getStringInputs(selectedCondition, handleValueChange, conditionValue);\n }\n if (TableUtils.isDateType(selectedColumnType)) {\n return getDateInputs(selectedCondition, handleValueChange, conditionValue);\n }\n if (TableUtils.isBooleanType(selectedColumnType)) {\n return getBooleanInputs();\n }\n }, [selectedColumnType, selectedCondition, conditionValue, startValue, endValue, handleValueChange, handleStartValueChange, handleEndValueChange]);\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"condition-editor mb-2\",\n children: [/*#__PURE__*/_jsx(Select, {\n value: selectedCondition,\n \"data-testid\": \"condition-select\",\n className: \"custom-select mb-2\",\n onChange: handleConditionChange,\n children: conditions\n }), conditionInputs]\n });\n}\nexport default ConditionEditor;\n//# sourceMappingURL=ConditionEditor.js.map","import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport Log from '@deephaven/log';\nimport { ColorUtils } from '@deephaven/utils';\nimport { vsCheck } from '@deephaven/icons';\nimport { Button, DropdownMenu } from '@deephaven/components';\nimport { FormatStyleType, getLabelForStyleType, getBackgroundForStyleConfig, getColorForStyleConfig } from \"./ConditionalFormattingUtils.js\";\nimport \"./StyleEditor.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('StyleEditor');\nvar DEFAULT_BACKGROUND = '#fcfcfa';\nvar DEFAULT_COLOR_LIGHT = '#f0f0ee';\nvar DEFAULT_COLOR_DARK = '#1a171a';\nvar DEFAULT_DROPDOWN_WIDTH = 200;\nvar DEFAULT_CALLBACK = () => undefined;\nfunction StyleEditor(props) {\n var _config$customConfig$, _config$customConfig;\n var {\n config,\n onChange = DEFAULT_CALLBACK\n } = props;\n var [styleType, setStyleType] = useState(config.type);\n var [background, setBackground] = useState((_config$customConfig$ = (_config$customConfig = config.customConfig) === null || _config$customConfig === void 0 ? void 0 : _config$customConfig.background) !== null && _config$customConfig$ !== void 0 ? _config$customConfig$ : DEFAULT_BACKGROUND);\n var [isShown, setShown] = useState(false);\n var [dropdownWidth, setDropdownWidth] = useState(DEFAULT_DROPDOWN_WIDTH);\n var csContainer = useRef(null);\n var handleBackgroundChange = useCallback(e => {\n var {\n value\n } = e.target;\n log.debug('handleBackgroundChange', value);\n setBackground(value);\n }, []);\n var handleMenuClosed = useCallback(() => {\n if (isShown) {\n setShown(false);\n }\n }, [isShown]);\n var handleToggleClick = useCallback(() => {\n if (!isShown) {\n updateDropdownWidth();\n }\n setShown(!isShown);\n }, [isShown]);\n var styleOptions = useMemo(() => [FormatStyleType.NO_FORMATTING, FormatStyleType.POSITIVE, FormatStyleType.NEGATIVE, FormatStyleType.WARN, FormatStyleType.NEUTRAL, FormatStyleType.ACCENT_1, FormatStyleType.ACCENT_2, FormatStyleType.CUSTOM], []);\n function updateDropdownWidth() {\n if (csContainer.current) {\n setDropdownWidth(csContainer.current.getBoundingClientRect().width);\n }\n }\n useEffect(function updateTheme() {\n onChange({\n type: styleType,\n customConfig: {\n color: ColorUtils.isDark(background) ? DEFAULT_COLOR_LIGHT : DEFAULT_COLOR_DARK,\n background\n }\n });\n }, [onChange, styleType, background]);\n var renderOptions = useCallback(() => {\n var matchFound = false;\n var optionArray = [];\n var _loop = function _loop() {\n var option = styleOptions[index];\n var key = \"option-\".concat(index, \"-\").concat(option);\n matchFound = matchFound || option === styleType;\n optionArray.push( /*#__PURE__*/_jsxs(Button, {\n kind: \"inline\",\n className: \"style-option-btn\",\n onClick: () => {\n setStyleType(option);\n setShown(false);\n },\n style: {\n color: getColorForStyleConfig({\n type: option\n }),\n background: getBackgroundForStyleConfig({\n type: option\n })\n },\n children: [option === styleType && /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsCheck,\n className: \"mr-2\"\n }), option !== styleType && /*#__PURE__*/_jsx(\"span\", {\n className: \"mr-4\"\n }), getLabelForStyleType(option)]\n }, key));\n };\n for (var index = 0; index < styleOptions.length; index += 1) {\n _loop();\n }\n return optionArray;\n }, [styleOptions, styleType]);\n var renderMenuElement = useCallback(() => /*#__PURE__*/_jsx(\"div\", {\n className: \"style-menu-container\",\n role: \"presentation\",\n style: {\n width: dropdownWidth\n },\n children: /*#__PURE__*/_jsx(\"div\", {\n className: \"style-options\",\n children: renderOptions()\n })\n }), [dropdownWidth, renderOptions]);\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"style-editor\",\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"mb-2\",\n ref: csContainer,\n children: [/*#__PURE__*/_jsx(\"label\", {\n className: \"mb-0\",\n children: \"Style\"\n }), /*#__PURE__*/_jsxs(Button, {\n kind: \"inline\",\n className: \"cs-dropdown custom-select\",\n style: {\n color: getColorForStyleConfig({\n type: styleType\n }),\n background: getBackgroundForStyleConfig({\n type: styleType\n })\n },\n onClick: handleToggleClick,\n children: [getLabelForStyleType(styleType), /*#__PURE__*/_jsx(DropdownMenu, {\n isShown: isShown,\n actions: {\n menuElement: renderMenuElement()\n },\n popperOptions: {\n placement: 'bottom-start'\n },\n popperClassName: \"style-dropdown-menu\",\n onMenuClosed: handleMenuClosed,\n menuStyle: {\n maxWidth: '100rem'\n }\n })]\n })]\n }), styleType === FormatStyleType.CUSTOM && /*#__PURE__*/_jsxs(\"div\", {\n className: \"mb-2\",\n children: [/*#__PURE__*/_jsx(\"label\", {\n className: \"mb-0\",\n children: \"Background\"\n }), /*#__PURE__*/_jsx(\"input\", {\n type: \"color\",\n value: background,\n className: \"custom-select color-select\",\n onChange: handleBackgroundChange\n })]\n })]\n });\n}\nexport default StyleEditor;\n//# sourceMappingURL=StyleEditor.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport Log from '@deephaven/log';\nimport { ComboBox } from '@deephaven/components';\nimport { getDefaultConditionConfigForType, getConditionConfig, getDefaultStyleConfig, FormatStyleType } from \"./ConditionalFormattingUtils.js\";\nimport ConditionEditor from \"./ConditionEditor.js\";\nimport StyleEditor from \"./StyleEditor.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nvar log = Log.module('ColumnFormatEditor');\nvar DEFAULT_CALLBACK = () => undefined;\nfunction makeDefaultConfig(columns) {\n var {\n type,\n name\n } = columns[0];\n var column = {\n type,\n name\n };\n var config = _objectSpread({\n column,\n style: getDefaultStyleConfig()\n }, getDefaultConditionConfigForType(type));\n return config;\n}\nfunction ColumnFormatEditor(props) {\n var _columns$find;\n var {\n columns,\n config = makeDefaultConfig(columns),\n dh,\n onChange = DEFAULT_CALLBACK\n } = props;\n var [selectedColumn, setColumn] = useState((_columns$find = columns.find(c => c.name === config.column.name && c.type === config.column.type)) !== null && _columns$find !== void 0 ? _columns$find : columns[0]);\n var [conditionConfig, setConditionConfig] = useState(getConditionConfig(config));\n var [conditionValid, setConditionValid] = useState(false);\n var [selectedStyle, setStyle] = useState(config.style);\n var handleColumnChange = useCallback(value => {\n var newColumn = columns.find(_ref => {\n var {\n name\n } = _ref;\n return name === value;\n });\n if (newColumn !== undefined) {\n setColumn(newColumn);\n if (selectedColumn.type !== newColumn.type) {\n setConditionConfig(getDefaultConditionConfigForType(newColumn.type));\n setConditionValid(false);\n }\n } else {\n log.error(\"Column \".concat(value, \" not found.\"));\n }\n }, [columns, selectedColumn]);\n var handleConditionChange = useCallback((updatedConditionConfig, isValid) => {\n log.debug('handleConditionChange', updatedConditionConfig, isValid);\n setConditionConfig(updatedConditionConfig);\n setConditionValid(isValid);\n }, []);\n var handleStyleChange = useCallback(updatedStyleConfig => {\n log.debug('handleStyleChange', updatedStyleConfig);\n setStyle(updatedStyleConfig);\n }, []);\n useEffect(function updateColumnFormat() {\n var isValid = conditionValid;\n if (selectedColumn === undefined) {\n log.debug('Column is not selected, invalidating update.');\n isValid = false;\n }\n if (selectedStyle === undefined || selectedStyle.type === FormatStyleType.NO_FORMATTING) {\n log.debug('Style is not selected, invalidating update.');\n isValid = false;\n }\n var {\n type,\n name\n } = selectedColumn;\n var column = {\n type,\n name\n };\n onChange(_objectSpread({\n column,\n style: selectedStyle\n }, conditionConfig), isValid);\n }, [onChange, selectedColumn, selectedStyle, conditionConfig, conditionValid]);\n var columnNames = useMemo(() => columns.map(_ref2 => {\n var {\n name\n } = _ref2;\n return name;\n }), [columns]);\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"conditional-rule-editor form\",\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"mb-2\",\n children: [/*#__PURE__*/_jsx(\"label\", {\n className: \"mb-0\",\n children: \"Format Cell If\"\n }), /*#__PURE__*/_jsx(ComboBox, {\n \"aria-label\": \"Select column to format\",\n defaultSelectedKey: selectedColumn === null || selectedColumn === void 0 ? void 0 : selectedColumn.name,\n onChange: handleColumnChange,\n children: columnNames\n })]\n }), selectedColumn !== undefined && /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(ConditionEditor, {\n dh: dh,\n column: selectedColumn,\n config: conditionConfig,\n onChange: handleConditionChange\n }), /*#__PURE__*/_jsx(StyleEditor, {\n config: selectedStyle,\n onChange: handleStyleChange\n })]\n })]\n });\n}\nexport default ColumnFormatEditor;\n//# sourceMappingURL=ColumnFormatEditor.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport Log from '@deephaven/log';\nimport { ComboBox } from '@deephaven/components';\nimport { getDefaultConditionConfigForType, getConditionConfig, getDefaultStyleConfig } from \"./ConditionalFormattingUtils.js\";\nimport ConditionEditor from \"./ConditionEditor.js\";\nimport StyleEditor from \"./StyleEditor.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nvar log = Log.module('RowFormatEditor');\nvar DEFAULT_CALLBACK = () => undefined;\nfunction makeDefaultConfig(columns) {\n var {\n type,\n name\n } = columns[0];\n var column = {\n type,\n name\n };\n var config = _objectSpread({\n column,\n style: getDefaultStyleConfig()\n }, getDefaultConditionConfigForType(type));\n return config;\n}\nfunction RowFormatEditor(props) {\n var _columns$find;\n var {\n columns,\n config = makeDefaultConfig(columns),\n dh,\n onChange = DEFAULT_CALLBACK\n } = props;\n var [selectedColumn, setColumn] = useState((_columns$find = columns.find(c => c.name === config.column.name && c.type === config.column.type)) !== null && _columns$find !== void 0 ? _columns$find : columns[0]);\n var [conditionConfig, setConditionConfig] = useState(getConditionConfig(config));\n var [conditionValid, setConditionValid] = useState(false);\n var [selectedStyle, setStyle] = useState(config.style);\n var handleColumnChange = useCallback(value => {\n var newColumn = columns.find(_ref => {\n var {\n name\n } = _ref;\n return name === value;\n });\n if (newColumn !== undefined) {\n setColumn(newColumn);\n if (selectedColumn.type !== newColumn.type) {\n setConditionConfig(getDefaultConditionConfigForType(newColumn.type));\n setConditionValid(false);\n }\n } else {\n log.error(\"Column \".concat(value, \" not found.\"));\n }\n }, [columns, selectedColumn]);\n var handleConditionChange = useCallback((updatedConditionConfig, isValid) => {\n log.debug('handleConditionChange', updatedConditionConfig, isValid);\n setConditionConfig(updatedConditionConfig);\n setConditionValid(isValid);\n }, []);\n var handleStyleChange = useCallback(updatedStyleConfig => {\n log.debug('handleStyleChange', updatedStyleConfig);\n setStyle(updatedStyleConfig);\n }, []);\n useEffect(function updateRowFormat() {\n if (selectedColumn === undefined) {\n log.debug('Column is not selected, skip update.');\n return;\n }\n if (selectedStyle === undefined) {\n log.debug('Style is not selected, skip update.');\n return;\n }\n var {\n type,\n name\n } = selectedColumn;\n var column = {\n type,\n name\n };\n onChange(_objectSpread({\n column,\n style: selectedStyle\n }, conditionConfig), conditionValid);\n }, [onChange, selectedColumn, selectedStyle, conditionConfig, conditionValid]);\n var columnNames = useMemo(() => columns.map(_ref2 => {\n var {\n name\n } = _ref2;\n return name;\n }), [columns]);\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"conditional-rule-editor form\",\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"mb-2\",\n children: [/*#__PURE__*/_jsx(\"label\", {\n className: \"mb-0\",\n children: \"Format Row If\"\n }), /*#__PURE__*/_jsx(ComboBox, {\n \"aria-label\": \"Select column to format row by\",\n defaultSelectedKey: selectedColumn === null || selectedColumn === void 0 ? void 0 : selectedColumn.name,\n onChange: handleColumnChange,\n children: columnNames\n })]\n }), selectedColumn !== undefined && /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(ConditionEditor, {\n column: selectedColumn,\n config: conditionConfig,\n dh: dh,\n onChange: handleConditionChange\n }), /*#__PURE__*/_jsx(StyleEditor, {\n config: selectedStyle,\n onChange: handleStyleChange\n })]\n })]\n });\n}\nexport default RowFormatEditor;\n//# sourceMappingURL=RowFormatEditor.js.map","import React, { useCallback, useState } from 'react';\nimport classNames from 'classnames';\nimport { Button } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport { FormatColumnWhereIcon, FormatRowWhereIcon } from \"../icons/index.js\";\nimport ColumnFormatEditor from \"./ColumnFormatEditor.js\";\nimport RowFormatEditor from \"./RowFormatEditor.js\";\nimport { FormatterType, isSupportedColumn } from \"./ConditionalFormattingUtils.js\";\nimport \"./ConditionalFormatEditor.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('ConditionalFormatEditor');\nvar DEFAULT_CALLBACK = () => undefined;\nfunction getFormatterTypeIcon(option) {\n switch (option) {\n case FormatterType.CONDITIONAL:\n return /*#__PURE__*/_jsx(FormatColumnWhereIcon, {});\n case FormatterType.ROWS:\n return /*#__PURE__*/_jsx(FormatRowWhereIcon, {});\n }\n}\nfunction getFormatterTypeLabel(option) {\n switch (option) {\n case FormatterType.CONDITIONAL:\n return 'Conditional';\n case FormatterType.ROWS:\n return 'Rows';\n }\n}\nvar formatterTypes = [FormatterType.CONDITIONAL, FormatterType.ROWS];\nfunction ConditionalFormatEditor(props) {\n var _defaultRule$type;\n var {\n columns: originalColumns,\n dh,\n onSave = DEFAULT_CALLBACK,\n onUpdate = DEFAULT_CALLBACK,\n onCancel = DEFAULT_CALLBACK,\n rule: defaultRule\n } = props;\n var columns = originalColumns.filter(isSupportedColumn);\n var [selectedFormatter, setFormatter] = useState((_defaultRule$type = defaultRule === null || defaultRule === void 0 ? void 0 : defaultRule.type) !== null && _defaultRule$type !== void 0 ? _defaultRule$type : formatterTypes[0]);\n var [rule, setRule] = useState(defaultRule);\n var [isValid, setIsValid] = useState(false);\n var handleCancel = useCallback(() => {\n onCancel();\n }, [onCancel]);\n var handleSave = useCallback(() => {\n if (rule === undefined) {\n log.error('Rule is not defined.');\n return;\n }\n onSave(rule);\n }, [onSave, rule]);\n var handleFormatterChange = useCallback(value => {\n log.debug('handleFormatterChange', value);\n setFormatter(value);\n }, []);\n var handleRuleChange = useCallback((ruleConfig, isRuleValid) => {\n log.debug('handleRuleChange', ruleConfig, isRuleValid, selectedFormatter);\n var updatedRule = {\n type: selectedFormatter,\n config: ruleConfig\n };\n setRule(updatedRule);\n setIsValid(isRuleValid);\n onUpdate(isRuleValid ? updatedRule : undefined);\n }, [onUpdate, selectedFormatter]);\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"conditional-format-editor form\",\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"mb-2\",\n children: [/*#__PURE__*/_jsx(\"label\", {\n className: \"mb-0\",\n htmlFor: \"formatter-select\",\n children: \"Select Formatter\"\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"formatter-list\",\n children: formatterTypes.map((type, index) => /*#__PURE__*/_jsx(\"div\", {\n className: \"formatter-type\",\n children: /*#__PURE__*/_jsxs(\"button\", {\n type: \"button\",\n className: classNames('btn', 'btn-icon', 'btn-formatter-type', {\n active: type === selectedFormatter\n }),\n \"data-index\": index,\n onClick: () => handleFormatterChange(type),\n children: [getFormatterTypeIcon(type), getFormatterTypeLabel(type)]\n })\n }, type))\n })]\n }), selectedFormatter === FormatterType.CONDITIONAL && /*#__PURE__*/_jsx(ColumnFormatEditor, {\n columns: columns,\n dh: dh,\n config: rule === null || rule === void 0 ? void 0 : rule.config,\n onChange: handleRuleChange\n }), selectedFormatter === FormatterType.ROWS && /*#__PURE__*/_jsx(RowFormatEditor, {\n columns: columns,\n config: rule === null || rule === void 0 ? void 0 : rule.config,\n dh: dh,\n onChange: handleRuleChange\n }), /*#__PURE__*/_jsx(\"hr\", {}), /*#__PURE__*/_jsxs(\"div\", {\n className: \"d-flex justify-content-end my-3\",\n children: [/*#__PURE__*/_jsx(Button, {\n kind: \"secondary\",\n onClick: handleCancel,\n className: \"mr-2\",\n children: \"Cancel\"\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"primary\",\n onClick: handleSave,\n disabled: rule === undefined || !isValid,\n children: \"Done\"\n })]\n })]\n });\n}\nexport default ConditionalFormatEditor;\n//# sourceMappingURL=ConditionalFormatEditor.js.map","import React, { useEffect, useRef, useState } from 'react';\nimport { Editor } from '@deephaven/console';\nimport { Button, CopyButton, Modal, ModalBody, ModalHeader } from '@deephaven/components';\nimport { vsJson, vsListOrdered } from '@deephaven/icons';\nimport \"./IrisGridCellOverflowModal.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nexport default function IrisGridCellOverflowModal(_ref) {\n var _editorRef$current$ge, _editorRef$current2;\n var {\n text,\n isOpen,\n onClose\n } = _ref;\n var [isOpened, setIsOpened] = useState(false);\n var [height, setHeight] = useState(0);\n var [showLineNumbers, setShowLineNumbers] = useState(false);\n var [isFormatted, setIsFormatted] = useState(false);\n var [canFormat, setCanFormat] = useState(false);\n var editorRef = useRef();\n\n // Update format button on open\n useEffect(function enableFormatButtonWhenOpen() {\n if (!isOpen) {\n return;\n }\n try {\n JSON.parse(text);\n setCanFormat(true);\n } catch (_unused) {\n setCanFormat(false);\n }\n setIsFormatted(false);\n }, [isOpen, text]);\n\n // Re-layout editor on height change\n useEffect(function updateLayoutOnHeightChange() {\n if (editorRef.current) {\n editorRef.current.layout();\n }\n }, [height]);\n\n // Update editor options on line number toggle\n useEffect(function toggleShowLineNumber() {\n if (editorRef.current) {\n editorRef.current.updateOptions({\n lineNumbers: showLineNumbers ? 'on' : 'off'\n });\n }\n }, [showLineNumbers]);\n function toggleLineNumbers() {\n setShowLineNumbers(!showLineNumbers);\n }\n function formatAsJSON() {\n var _editorRef$current;\n var model = (_editorRef$current = editorRef.current) === null || _editorRef$current === void 0 ? void 0 : _editorRef$current.getModel();\n if (!canFormat || !model) {\n return;\n }\n if (!isFormatted) {\n model.setValue(JSON.stringify(JSON.parse(text), undefined, 2));\n setIsFormatted(true);\n } else {\n model.setValue(text);\n setIsFormatted(false);\n }\n autoSetLineNumbers();\n }\n function autoSetLineNumbers() {\n var _editor$getModel$getL, _editor$getModel;\n var editor = editorRef.current;\n if (!editor) {\n return;\n }\n setShowLineNumbers(((_editor$getModel$getL = (_editor$getModel = editor.getModel()) === null || _editor$getModel === void 0 ? void 0 : _editor$getModel.getLineCount()) !== null && _editor$getModel$getL !== void 0 ? _editor$getModel$getL : 0) > 1);\n }\n function handleToggle() {\n if (isOpened) {\n editorRef.current = undefined;\n onClose();\n }\n }\n function onEditorInitialized(editor) {\n editorRef.current = editor;\n setHeight(editor.getContentHeight());\n editor.onDidContentSizeChange(_ref2 => {\n var {\n contentHeight\n } = _ref2;\n return setHeight(contentHeight);\n });\n autoSetLineNumbers();\n }\n if (!isOpen && !isOpened) {\n return null;\n }\n return /*#__PURE__*/_jsxs(Modal, {\n isOpen: isOpen,\n centered: true,\n keyboard: true,\n toggle: handleToggle,\n onOpened: () => setIsOpened(true),\n onClosed: () => {\n setIsOpened(false);\n setHeight(0);\n },\n className: \"cell-overflow-modal\",\n size: \"xl\",\n children: [/*#__PURE__*/_jsxs(ModalHeader, {\n toggle: onClose,\n children: [/*#__PURE__*/_jsx(\"h5\", {\n className: \"overflow-modal-title\",\n children: \"Cell Contents\"\n }), /*#__PURE__*/_jsx(CopyButton, {\n kind: \"inline\",\n tooltip: \"Copy cell contents\",\n copy: (_editorRef$current$ge = (_editorRef$current2 = editorRef.current) === null || _editorRef$current2 === void 0 ? void 0 : _editorRef$current2.getValue()) !== null && _editorRef$current$ge !== void 0 ? _editorRef$current$ge : text\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"inline\",\n active: showLineNumbers,\n icon: vsListOrdered,\n tooltip: \"Toggle line numbers\",\n onClick: toggleLineNumbers\n }), canFormat && /*#__PURE__*/_jsx(Button, {\n kind: \"inline\",\n icon: vsJson,\n active: isFormatted,\n tooltip: \"Format as JSON\",\n onClick: formatAsJSON\n })]\n }), /*#__PURE__*/_jsx(ModalBody, {\n style: {\n height\n },\n children: /*#__PURE__*/_jsx(Editor, {\n onEditorInitialized: onEditorInitialized,\n settings: {\n value: text,\n readOnly: true,\n wordWrap: 'on',\n // Loading json language w/o the monaco workers causes UI freezes and monaco errors. TS colorizes the same\n language: canFormat ? 'typescript' : 'plaintext',\n folding: canFormat,\n padding: {\n bottom: 16\n },\n lineNumbers: showLineNumbers ? 'on' : 'off',\n overviewRulerLanes: 0,\n renderLineHighlight: 'none',\n /*\n The entire string may be 1 giant line\n Monaco by default seeds find w/ that line\n On very long strings this hangs the browser, so never seed the search\n */\n find: {\n seedSearchStringFromSelection: 'never'\n }\n }\n })\n })]\n });\n}\n//# sourceMappingURL=IrisGridCellOverflowModal.js.map","import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsClose, vsArrowUp, vsArrowDown } from '@deephaven/icons';\nimport React, { forwardRef, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react';\nimport { Type as FilterType } from '@deephaven/filters';\nimport { Button, DateTimeInput, Select } from '@deephaven/components';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport classNames from 'classnames';\nimport \"./GotoRow.css\";\nimport { nanoid } from 'nanoid';\nimport IrisGridBottomBar from \"./IrisGridBottomBar.js\";\nimport { isIrisGridTableModelTemplate } from \"./IrisGridTableModelTemplate.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nvar DEFAULT_FORMAT_STRING = '###,##0';\nvar GotoRow = /*#__PURE__*/forwardRef((_ref, ref) => {\n var {\n gotoRow,\n gotoRowError,\n gotoValueError,\n onGotoRowSubmit,\n isShown,\n onEntering,\n onEntered: _onEntered,\n onExiting,\n onExited,\n model,\n onGotoRowNumberChanged,\n onClose,\n gotoValueSelectedColumnName,\n gotoValue,\n gotoValueFilter,\n onGotoValueSelectedColumnNameChanged,\n onGotoValueSelectedFilterChanged,\n onGotoValueChanged,\n onGotoValueSubmit\n } = _ref;\n var gotoRowInputRef = useRef(null);\n var gotoValueInputRef = useRef(null);\n var [isGotoRowActive, setIsGotoRowActive] = useState(false);\n var columns = [];\n if (isIrisGridTableModelTemplate(model)) {\n ({\n columns\n } = model.table);\n }\n var {\n dh,\n rowCount\n } = model;\n var gotoRowInputId = useMemo(() => \"goto-row-input-\".concat(nanoid()), []);\n var handleGotoValueNumberKeyDown = e => {\n if (e.key === 'Enter') {\n e.stopPropagation();\n e.preventDefault();\n onGotoValueSubmit();\n } else if ((e.key === 'Backspace' || e.key === 'Delete') && (gotoValue === \"\".concat(Number.POSITIVE_INFINITY) || gotoValue === \"\".concat(Number.NEGATIVE_INFINITY))) {\n onGotoValueInputChanged('');\n }\n };\n var handleGotoValueKeySubmit = e => {\n if (e.key === 'Enter') {\n e.stopPropagation();\n e.preventDefault();\n onGotoValueSubmit(e.shiftKey);\n }\n };\n var index = model.getColumnIndexByName(gotoValueSelectedColumnName);\n var selectedColumn = columns[index !== null && index !== void 0 ? index : 0];\n var columnType = selectedColumn === null || selectedColumn === void 0 ? void 0 : selectedColumn.type;\n var normalizedType = TableUtils.getNormalizedType(columnType);\n var onGotoValueInputChanged = value => {\n onGotoValueChanged(value !== null && value !== void 0 ? value : '');\n };\n useImperativeHandle(ref, () => ({\n focus() {\n var _gotoRowInputRef$curr;\n setIsGotoRowActive(true);\n (_gotoRowInputRef$curr = gotoRowInputRef.current) === null || _gotoRowInputRef$curr === void 0 ? void 0 : _gotoRowInputRef$curr.select();\n }\n }));\n var selectInput = () => {\n // when row changes without focus (i.e. via context menu), re-select input\n if (isGotoRowActive && document.activeElement !== gotoRowInputRef.current) {\n var _gotoRowInputRef$curr2;\n (_gotoRowInputRef$curr2 = gotoRowInputRef.current) === null || _gotoRowInputRef$curr2 === void 0 ? void 0 : _gotoRowInputRef$curr2.select();\n } else if (!isGotoRowActive && document.activeElement !== gotoValueInputRef.current) {\n var _gotoValueInputRef$cu;\n (_gotoValueInputRef$cu = gotoValueInputRef.current) === null || _gotoValueInputRef$cu === void 0 ? void 0 : _gotoValueInputRef$cu.select();\n }\n };\n useEffect(selectInput, [isGotoRowActive]);\n var renderValueInput = () => {\n switch (normalizedType) {\n case TableUtils.dataType.DECIMAL:\n case TableUtils.dataType.INT:\n return /*#__PURE__*/_jsx(\"div\", {\n className: \"goto-row-input\",\n children: /*#__PURE__*/_jsx(\"input\", {\n ref: gotoValueInputRef,\n className: classNames('form-control', {\n 'is-invalid': gotoValueError !== ''\n }),\n onKeyDown: handleGotoValueNumberKeyDown,\n placeholder: \"value\",\n onChange: e => {\n var value = e.target.value.toLowerCase();\n // regex tests for\n if (/^-?[0-9]*\\.?[0-9]*$/.test(e.target.value)) {\n onGotoValueInputChanged(e.target.value);\n } else if (value === '-i' || value === '-infinity') {\n onGotoValueInputChanged(\"\".concat(Number.NEGATIVE_INFINITY));\n } else if (value === 'i' || value === 'infinity') {\n onGotoValueInputChanged(\"\".concat(Number.POSITIVE_INFINITY));\n }\n },\n value: gotoValue,\n \"aria-label\": \"Value Input\"\n })\n });\n case TableUtils.dataType.DATETIME:\n return /*#__PURE__*/_jsx(\"div\", {\n className: \"goto-value-date-time-input\",\n children: /*#__PURE__*/_jsx(DateTimeInput, {\n ref: gotoValueInputRef,\n className: classNames('form-control', 'goto-value-date-time-input', {\n 'is-invalid': gotoValueError !== ''\n }),\n defaultValue: gotoValue,\n onChange: onGotoValueInputChanged,\n onSubmit: handleGotoValueKeySubmit,\n \"aria-label\": \"Value Input\"\n })\n });\n case TableUtils.dataType.STRING:\n return /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"goto-row-input\",\n children: /*#__PURE__*/_jsxs(Select, {\n className: \"custom-select\",\n onChange: eventTargetValue => {\n onGotoValueSelectedFilterChanged(eventTargetValue);\n },\n value: gotoValueFilter,\n \"aria-label\": \"filter-type-select\",\n children: [/*#__PURE__*/_jsx(\"option\", {\n value: FilterType.eqIgnoreCase,\n children: \"Equals (case-insensitive)\"\n }, FilterType.eqIgnoreCase), /*#__PURE__*/_jsx(\"option\", {\n value: FilterType.containsIgnoreCase,\n children: \"Contains (case-insensitive)\"\n }, FilterType.containsIgnoreCase), /*#__PURE__*/_jsx(\"option\", {\n value: FilterType.eq,\n children: \"Equals\"\n }, FilterType.eq), /*#__PURE__*/_jsx(\"option\", {\n value: FilterType.contains,\n children: \"Contains\"\n }, FilterType.contains)]\n })\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"goto-row-input\",\n children: /*#__PURE__*/_jsx(\"input\", {\n ref: gotoValueInputRef,\n className: classNames('form-control', {\n 'is-invalid': gotoValueError !== ''\n }),\n onKeyDown: handleGotoValueKeySubmit,\n placeholder: \"value\",\n onChange: e => onGotoValueInputChanged(e.target.value),\n value: gotoValue,\n \"aria-label\": \"Value Input\"\n })\n })]\n });\n case TableUtils.dataType.BOOLEAN:\n return /*#__PURE__*/_jsx(\"div\", {\n className: \"goto-row-input\",\n children: /*#__PURE__*/_jsxs(Select, {\n className: \"custom-select\",\n onChange: eventTargetValue => {\n onGotoValueInputChanged(eventTargetValue);\n },\n value: gotoValue,\n \"aria-label\": \"Value Input\",\n children: [/*#__PURE__*/_jsx(\"option\", {\n \"aria-label\": \"null value\",\n value: \"\"\n }, \"null\"), /*#__PURE__*/_jsx(\"option\", {\n value: \"true\",\n children: \"true\"\n }, \"true\"), /*#__PURE__*/_jsx(\"option\", {\n value: \"false\",\n children: \"false\"\n }, \"false\")]\n })\n });\n default:\n return /*#__PURE__*/_jsx(\"div\", {\n className: \"goto-row-input\",\n children: /*#__PURE__*/_jsx(\"input\", {\n ref: gotoValueInputRef,\n className: \"form-control\",\n onKeyDown: handleGotoValueKeySubmit,\n placeholder: \"value\",\n onChange: e => onGotoValueInputChanged(e.target.value),\n value: gotoValue,\n \"aria-label\": \"Value Input\"\n })\n });\n }\n };\n return /*#__PURE__*/_jsx(IrisGridBottomBar, {\n isShown: isShown,\n className: classNames('goto-row'),\n onEntering: onEntering,\n onEntered: () => {\n _onEntered();\n selectInput();\n },\n onExiting: onExiting,\n onExited: onExited,\n children: /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"goto-row-row\",\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: classNames('goto-row-wrapper', {\n 'is-inactive': !isGotoRowActive\n }),\n onClick: () => setIsGotoRowActive(true),\n onFocus: () => setIsGotoRowActive(true),\n role: \"group\",\n children: [/*#__PURE__*/_jsx(\"label\", {\n className: \"goto-row-text\",\n htmlFor: gotoRowInputId,\n children: \"Go to row\"\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"goto-row-input\",\n children: /*#__PURE__*/_jsx(\"input\", {\n ref: gotoRowInputRef,\n \"data-testid\": \"goto-row-input\",\n type: \"number\",\n onKeyDown: e => {\n if (e.key === 'Enter') {\n e.stopPropagation();\n e.preventDefault();\n onGotoRowSubmit();\n }\n },\n className: classNames('form-control', {\n 'is-invalid': gotoRowError !== ''\n }),\n placeholder: \"Row number\",\n onChange: event => {\n onGotoRowNumberChanged(event);\n },\n value: gotoRow,\n id: gotoRowInputId\n })\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"goto-row-text\",\n children: [\"of\", ' ', dh.i18n.NumberFormat.format(DEFAULT_FORMAT_STRING, rowCount)]\n }), gotoRowError && /*#__PURE__*/_jsx(\"div\", {\n className: \"text-danger\",\n children: gotoRowError\n })]\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"goto-row-close\",\n children: /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n onClick: onClose,\n children: /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsClose,\n style: {\n marginRight: '0'\n }\n })\n })\n })]\n }), model.isSeekRowAvailable && /*#__PURE__*/_jsx(\"div\", {\n className: \"goto-row-row\",\n children: /*#__PURE__*/_jsxs(\"div\", {\n className: classNames('goto-row-wrapper', {\n 'is-inactive': isGotoRowActive\n }),\n onClick: () => setIsGotoRowActive(false),\n onFocus: () => setIsGotoRowActive(false),\n role: \"group\",\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"goto-row-text\",\n children: \"Go to value\"\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"goto-row-input\",\n children: /*#__PURE__*/_jsx(Select, {\n className: \"custom-select\",\n onChange: eventTargetValue => {\n var columnName = eventTargetValue;\n onGotoValueSelectedColumnNameChanged(columnName);\n },\n value: gotoValueSelectedColumnName,\n \"aria-label\": \"column-name-select\",\n id: \"column-name-select\",\n children: columns.map(column => /*#__PURE__*/_jsx(\"option\", {\n value: column.name,\n children: column.name\n }, column.name))\n })\n }), renderValueInput(), /*#__PURE__*/_jsxs(\"div\", {\n children: [/*#__PURE__*/_jsx(Button, {\n tooltip: \"Previous match\",\n icon: vsArrowUp,\n kind: \"ghost\",\n disabled: gotoValue === '',\n onClick: () => {\n onGotoValueSubmit(true);\n }\n }), /*#__PURE__*/_jsx(Button, {\n tooltip: \"Next match\",\n icon: vsArrowDown,\n kind: \"ghost\",\n disabled: gotoValue === '',\n onClick: () => {\n onGotoValueSubmit(false);\n }\n })]\n }), gotoValueError && /*#__PURE__*/_jsx(\"div\", {\n className: \"text-danger\",\n children: gotoValueError\n })]\n })\n })]\n })\n });\n});\nGotoRow.displayName = 'GotoRow';\nexport default GotoRow;\n//# sourceMappingURL=GotoRow.js.map","import { Button, GLOBAL_SHORTCUTS, Modal, ModalBody, ModalFooter, ModalHeader } from '@deephaven/components';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nexport function NoPastePermissionModal(_ref) {\n var {\n isOpen,\n onClose,\n errorMessage\n } = _ref;\n var pasteShortcutText = GLOBAL_SHORTCUTS.PASTE.getDisplayText();\n return /*#__PURE__*/_jsxs(Modal, {\n isOpen: isOpen,\n toggle: onClose,\n centered: true,\n children: [/*#__PURE__*/_jsx(ModalHeader, {\n closeButton: false,\n children: \"No Paste Permission\"\n }), /*#__PURE__*/_jsxs(ModalBody, {\n children: [/*#__PURE__*/_jsx(\"p\", {\n children: errorMessage\n }), /*#__PURE__*/_jsxs(\"p\", {\n children: [\"You can still use \", pasteShortcutText, \" to paste.\"]\n })]\n }), /*#__PURE__*/_jsx(ModalFooter, {\n children: /*#__PURE__*/_jsx(Button, {\n kind: \"primary\",\n onClick: onClose,\n children: \"Dismiss\"\n })\n })]\n });\n}\n//# sourceMappingURL=NoPastePermissionModal.js.map","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport React, { Component } from 'react';\nimport memoize from 'memoizee';\nimport classNames from 'classnames';\nimport { CSSTransition } from 'react-transition-group';\nimport PropTypes from 'prop-types';\nimport deepEqual from 'fast-deep-equal';\nimport Log from '@deephaven/log';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { ContextActions, Stack, Menu, Page, Popper, ThemeExport, Tooltip, Button, ContextActionUtils, SlideTransition } from '@deephaven/components';\nimport { Grid, GridRange, GridUtils, isEditableGridModel, isExpandableGridModel, isDeletableGridModel } from '@deephaven/grid';\nimport { dhEye, dhFilterFilled, dhGraphLineUp, dhTriangleDownSquare, vsClose, vsCloudDownload, vsEdit, vsFilter, vsMenu, vsReply, vsRuby, vsSearch, vsSplitHorizontal, vsSymbolOperator, vsTools } from '@deephaven/icons';\nimport { DateUtils, Formatter, FormatterUtils, TableUtils, isSortDirection } from '@deephaven/jsapi-utils';\nimport { assertNotNull, copyToClipboard, EMPTY_ARRAY, EMPTY_MAP, Pending, PromiseUtils, ValidationError, getOrThrow } from '@deephaven/utils';\nimport { Type as FilterType } from '@deephaven/filters';\nimport throttle from 'lodash.throttle';\nimport debounce from 'lodash.debounce';\nimport clamp from 'lodash.clamp';\nimport { getFormatColumns } from \"./sidebar/conditional-formatting/ConditionalFormattingUtils.js\";\nimport PendingDataBottomBar from \"./PendingDataBottomBar.js\";\nimport IrisGridCopyHandler from \"./IrisGridCopyHandler.js\";\nimport FilterInputField from \"./FilterInputField.js\";\nimport { CopyCellKeyHandler, ClearFilterKeyHandler, CopyKeyHandler, ReverseKeyHandler } from \"./key-handlers/index.js\";\nimport { IrisGridCellOverflowMouseHandler, IrisGridColumnSelectMouseHandler, IrisGridColumnTooltipMouseHandler, IrisGridContextMenuHandler, IrisGridCopyCellMouseHandler, IrisGridDataSelectMouseHandler, IrisGridPartitionedTableMouseHandler, IrisGridFilterMouseHandler, IrisGridRowTreeMouseHandler, IrisGridSortMouseHandler, IrisGridTokenMouseHandler, PendingMouseHandler } from \"./mousehandlers/index.js\";\nimport ToastBottomBar from \"./ToastBottomBar.js\";\nimport IrisGridMetricCalculator from \"./IrisGridMetricCalculator.js\";\nimport IrisGridModelUpdater from \"./IrisGridModelUpdater.js\";\nimport IrisGridRenderer from \"./IrisGridRenderer.js\";\nimport { createDefaultIrisGridTheme } from \"./IrisGridTheme.js\";\nimport ColumnStatistics from \"./ColumnStatistics.js\";\nimport \"./IrisGrid.css\";\nimport AdvancedFilterCreator from \"./AdvancedFilterCreator.js\";\nimport { Aggregations, AggregationEdit, AggregationUtils, ChartBuilder, CustomColumnBuilder, OptionType, RollupRows, TableCsvExporter, TableSaver, VisibilityOrderingBuilder, DownloadServiceWorkerUtils } from \"./sidebar/index.js\";\nimport IrisGridUtils from \"./IrisGridUtils.js\";\nimport CrossColumnSearch from \"./CrossColumnSearch.js\";\nimport IrisGridModel from \"./IrisGridModel.js\";\nimport { isPartitionedGridModel } from \"./PartitionedGridModel.js\";\nimport IrisGridPartitionSelector from \"./IrisGridPartitionSelector.js\";\nimport SelectDistinctBuilder from \"./sidebar/SelectDistinctBuilder.js\";\nimport AdvancedSettingsType from \"./sidebar/AdvancedSettingsType.js\";\nimport AdvancedSettingsMenu from \"./sidebar/AdvancedSettingsMenu.js\";\nimport SHORTCUTS from \"./IrisGridShortcuts.js\";\nimport ConditionalFormattingMenu from \"./sidebar/conditional-formatting/ConditionalFormattingMenu.js\";\nimport ConditionalFormatEditor from \"./sidebar/conditional-formatting/ConditionalFormatEditor.js\";\nimport IrisGridCellOverflowModal from \"./IrisGridCellOverflowModal.js\";\nimport GotoRow from \"./GotoRow.js\";\nimport AggregationOperation from \"./sidebar/aggregations/AggregationOperation.js\";\nimport { IrisGridThemeContext } from \"./IrisGridThemeProvider.js\";\nimport { isMissingPartitionError } from \"./MissingPartitionError.js\";\nimport { NoPastePermissionModal } from \"./NoPastePermissionModal.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('IrisGrid');\nvar VIEWPORT_LOADING_DELAY = 500;\nvar UPDATE_DOWNLOAD_THROTTLE = 500;\nvar SET_FILTER_DEBOUNCE = 250;\nvar SEEK_ROW_DEBOUNCE = 250;\nvar SET_CONDITIONAL_FORMAT_DEBOUNCE = 250;\nvar DEFAULT_AGGREGATION_SETTINGS = Object.freeze({\n aggregations: EMPTY_ARRAY,\n showOnTop: false\n});\nvar UNFORMATTED_DATE_PATTERN = \"yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSS z\";\nfunction isEmptyConfig(_ref) {\n var {\n advancedFilters,\n aggregationSettings,\n customColumns,\n quickFilters,\n reverse,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts\n } = _ref;\n return advancedFilters.size === 0 && aggregationSettings.aggregations.length === 0 && customColumns.length === 0 && quickFilters.size === 0 && !reverse && rollupConfig == null && searchFilter == null && selectDistinctColumns.length === 0 && sorts.length === 0;\n}\nclass IrisGrid extends Component {\n // eslint-disable-next-line react/static-property-placement, react/sort-comp\n\n constructor(props) {\n var _model$layoutHints, _model$layoutHints$hi, _model$columns$0$name, _model$columns$;\n super(props);\n _defineProperty(this, \"grid\", void 0);\n _defineProperty(this, \"lastFocusedFilterBarColumn\", void 0);\n _defineProperty(this, \"lastLoadedConfig\", void 0);\n _defineProperty(this, \"tooltip\", void 0);\n _defineProperty(this, \"pending\", void 0);\n _defineProperty(this, \"globalColumnFormats\", void 0);\n _defineProperty(this, \"dateTimeFormatterOptions\", void 0);\n _defineProperty(this, \"decimalFormatOptions\", void 0);\n _defineProperty(this, \"integerFormatOptions\", void 0);\n _defineProperty(this, \"truncateNumbersWithPound\", void 0);\n _defineProperty(this, \"showEmptyStrings\", void 0);\n _defineProperty(this, \"showNullStrings\", void 0);\n _defineProperty(this, \"showExtraGroupColumn\", void 0);\n _defineProperty(this, \"loadingScrimStartTime\", void 0);\n _defineProperty(this, \"loadingScrimFinishTime\", void 0);\n _defineProperty(this, \"animationFrame\", void 0);\n _defineProperty(this, \"loadingTimer\", void 0);\n _defineProperty(this, \"tableSaver\", void 0);\n _defineProperty(this, \"crossColumnRef\", void 0);\n _defineProperty(this, \"isAnimating\", void 0);\n _defineProperty(this, \"filterInputRef\", void 0);\n _defineProperty(this, \"gotoRowRef\", void 0);\n _defineProperty(this, \"isCopying\", void 0);\n _defineProperty(this, \"toggleFilterBarAction\", void 0);\n _defineProperty(this, \"toggleSearchBarAction\", void 0);\n _defineProperty(this, \"toggleGotoRowAction\", void 0);\n _defineProperty(this, \"discardAction\", void 0);\n _defineProperty(this, \"commitAction\", void 0);\n _defineProperty(this, \"contextActions\", void 0);\n _defineProperty(this, \"tableUtils\", void 0);\n _defineProperty(this, \"keyHandlers\", void 0);\n _defineProperty(this, \"mouseHandlers\", void 0);\n _defineProperty(this, \"getAdvancedMenuOpenedHandler\", memoize(column => this.handleAdvancedMenuOpened.bind(this, column), {\n max: 100\n }));\n _defineProperty(this, \"getCachedAdvancedFilterMenuActions\", memoize((model, column, advancedFilterOptions, sortDirection, formatter) => /*#__PURE__*/_jsx(AdvancedFilterCreator, {\n model: model,\n column: column,\n onFilterChange: this.handleAdvancedFilterChange,\n onSortChange: this.handleAdvancedFilterSortChange,\n onDone: this.handleAdvancedFilterDone,\n options: advancedFilterOptions,\n sortDirection: sortDirection,\n formatter: formatter,\n tableUtils: this.tableUtils\n }), {\n max: 50\n }));\n _defineProperty(this, \"getCachedOptionItems\", memoize((isChartBuilderAvailable, isCustomColumnsAvailable, isFormatColumnsAvailable, 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 optionItems.push({\n type: OptionType.VISIBILITY_ORDERING_BUILDER,\n title: 'Organize Columns',\n icon: dhEye\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 _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 _defineProperty(this, \"getOperationOrder\", memoize(aggregations => aggregations.map(a => a.operation).filter(o => !AggregationUtils.isRollupOperation(o))));\n _defineProperty(this, \"getCachedFormatColumns\", memoize((dh, columns, rules) => getFormatColumns(dh, columns, rules)));\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 _defineProperty(this, \"getModelRollupConfig\", memoize((originalColumns, config, aggregationSettings) => IrisGridUtils.getModelRollupConfig(originalColumns, config, aggregationSettings)));\n _defineProperty(this, \"getModelTotalsConfig\", memoize((columns, config, aggregationSettings) => {\n var _config$columns$lengt, _config$columns;\n if (((_config$columns$lengt = config === null || config === void 0 ? void 0 : (_config$columns = config.columns) === null || _config$columns === void 0 ? void 0 : _config$columns.length) !== null && _config$columns$lengt !== void 0 ? _config$columns$lengt : 0) > 0) {\n // If we've got rollups, then aggregations are applied as part of that...\n return null;\n }\n\n // Filter out aggregations without any columns actually selected\n var aggregations = aggregationSettings.aggregations.filter(agg => agg.selected.length > 0 || agg.invert);\n if (aggregations.length === 0) {\n // We don't actually have any aggregations set, don't bother\n return null;\n }\n var operationMap = this.getOperationMap(columns, aggregations);\n var operationOrder = this.getOperationOrder(aggregations);\n return {\n operationMap,\n operationOrder,\n showOnTop: aggregationSettings.showOnTop,\n defaultOperation: AggregationOperation.SKIP\n };\n }));\n _defineProperty(this, \"getCachedStateOverride\", memoize((hoverSelectColumn, isFilterBarShown, isSelectingColumn, loadingScrimProgress, quickFilters, advancedFilters, sorts, reverse, rollupConfig, isMenuShown) => ({\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 _defineProperty(this, \"getCachedMouseHandlers\", memoize(mouseHandlers => [...mouseHandlers, ...this.mouseHandlers]));\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 _defineProperty(this, \"updateSearchFilter\", debounce((searchValue, selectedSearchColumns, columns, invertSearchColumns) => {\n var {\n model\n } = this.props;\n var searchFilter = CrossColumnSearch.createSearchFilter(model.dh, searchValue, selectedSearchColumns, columns, invertSearchColumns);\n this.setState({\n searchFilter\n });\n }, SET_FILTER_DEBOUNCE));\n _defineProperty(this, \"showViewportLoading\", throttle(() => {\n var {\n model\n } = this.props;\n var {\n loadingSpinnerShown\n } = this.state;\n if (model.isViewportPending && !loadingSpinnerShown) {\n // We only want to show the viewport loading if the viewport is still loading\n // and we're not already showing a loader for something else\n this.startLoading('Waiting for viewport...', {\n loadingCancelShown: false,\n loadingBlocksGrid: false\n });\n }\n }, VIEWPORT_LOADING_DELAY, {\n leading: false,\n trailing: true\n }));\n _defineProperty(this, \"handleConditionalFormatEditorUpdate\", debounce(conditionalFormatPreview => {\n this.setState({\n conditionalFormatPreview\n });\n }, SET_CONDITIONAL_FORMAT_DEBOUNCE));\n _defineProperty(this, \"handleDownloadProgressUpdate\", throttle((tableDownloadProgress, tableDownloadEstimatedTime) => {\n var {\n tableDownloadStatus\n } = this.state;\n if (tableDownloadStatus === TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING) {\n this.setState({\n tableDownloadProgress,\n tableDownloadEstimatedTime\n });\n }\n }, UPDATE_DOWNLOAD_THROTTLE));\n _defineProperty(this, \"getOverflowButtonTooltip\", memoize(overflowButtonTooltipProps => {\n if (overflowButtonTooltipProps == null) {\n return null;\n }\n var wrapperStyle = _objectSpread(_objectSpread({\n position: 'absolute'\n }, overflowButtonTooltipProps), {}, {\n pointerEvents: 'none'\n });\n var popperOptions = {\n placement: 'left',\n modifiers: {\n flip: {\n behavior: ['left', 'right']\n }\n }\n };\n return /*#__PURE__*/_jsx(\"div\", {\n style: wrapperStyle,\n children: /*#__PURE__*/_jsx(Tooltip, {\n options: popperOptions,\n ref: this.handleTooltipRef,\n children: \"View full contents\"\n }, Date.now())\n });\n }));\n _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 _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 _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.handleTooltipRef = this.handleTooltipRef.bind(this);\n this.handleViewChanged = this.handleViewChanged.bind(this);\n this.handleFormatSelection = this.handleFormatSelection.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.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 isFilterBarShown: _isFilterBarShown,\n isSelectingPartition,\n partitions,\n partitionConfig,\n model: _model,\n movedColumns: movedColumnsProp,\n movedRows: movedRowsProp,\n rollupConfig: _rollupConfig,\n userColumnWidths: _userColumnWidths,\n userRowHeights,\n showSearchBar: _showSearchBar,\n searchValue: _searchValue,\n selectedSearchColumns: _selectedSearchColumns,\n invertSearchColumns: _invertSearchColumns,\n advancedFilters: _advancedFilters,\n quickFilters: _quickFilters,\n selectDistinctColumns,\n pendingDataMap,\n canCopy,\n frozenColumns,\n columnHeaderGroups\n } = props;\n var {\n dh: _dh\n } = _model;\n var _keyHandlers = [new CopyCellKeyHandler(this), new ReverseKeyHandler(this), new ClearFilterKeyHandler(this)];\n var _mouseHandlers = [new IrisGridCellOverflowMouseHandler(this), new IrisGridRowTreeMouseHandler(this), new IrisGridTokenMouseHandler(this), new IrisGridColumnSelectMouseHandler(this), new IrisGridColumnTooltipMouseHandler(this), new IrisGridSortMouseHandler(this), new IrisGridFilterMouseHandler(this), new IrisGridContextMenuHandler(this, _dh), new IrisGridDataSelectMouseHandler(this), new PendingMouseHandler(this), new IrisGridPartitionedTableMouseHandler(this)];\n if (canCopy) {\n _keyHandlers.push(new CopyKeyHandler(this));\n _mouseHandlers.push(new IrisGridCopyCellMouseHandler(this));\n }\n var _movedColumns = movedColumnsProp.length > 0 ? movedColumnsProp : _model.initialMovedColumns;\n var movedRows = movedRowsProp.length > 0 ? movedRowsProp : _model.initialMovedRows;\n var _metricCalculator = new IrisGridMetricCalculator({\n userColumnWidths: new Map(_userColumnWidths),\n userRowHeights: new Map(userRowHeights),\n movedColumns: _movedColumns,\n initialColumnWidths: new Map(_model === null || _model === void 0 ? void 0 : (_model$layoutHints = _model.layoutHints) === null || _model$layoutHints === void 0 ? void 0 : (_model$layoutHints$hi = _model$layoutHints.hiddenColumns) === null || _model$layoutHints$hi === void 0 ? void 0 : _model$layoutHints$hi.map(name => [_model.getColumnIndexByName(name), 0]))\n });\n var searchColumns = _selectedSearchColumns !== null && _selectedSearchColumns !== void 0 ? _selectedSearchColumns : [];\n var _searchFilter = CrossColumnSearch.createSearchFilter(_dh, _searchValue, searchColumns, _model.columns, _invertSearchColumns);\n this.tableUtils = new TableUtils(_dh);\n this.mouseHandlers = _mouseHandlers;\n this.keyHandlers = _keyHandlers;\n this.state = {\n isFilterBarShown: _isFilterBarShown,\n isSelectingPartition,\n focusedFilterBarColumn: null,\n metricCalculator: _metricCalculator,\n metrics: undefined,\n partitionConfig: partitionConfig !== null && partitionConfig !== void 0 ? partitionConfig : partitions && partitions.length ? {\n partitions,\n mode: 'partition'\n } : undefined,\n // setAdvancedFilter and setQuickFilter mutate the arguments\n // so we want to always use map copies from the state instead of props\n quickFilters: _quickFilters ? new Map(_quickFilters) : new Map(),\n advancedFilters: new Map(_advancedFilters),\n shownAdvancedFilter: null,\n hoverAdvancedFilter: null,\n sorts: [],\n reverse: false,\n customColumns: [],\n selectDistinctColumns,\n // selected range in table\n selectedRanges: [],\n // Current ongoing copy operation\n copyOperation: null,\n // The filter that is currently being applied. Reset after update is received\n loadingText: null,\n loadingScrimProgress: null,\n loadingSpinnerShown: false,\n loadingCancelShown: false,\n loadingBlocksGrid: false,\n movedColumns: _movedColumns,\n movedRows,\n shownColumnTooltip: null,\n formatter: new Formatter(_dh),\n isMenuShown: false,\n customColumnFormatMap: new Map(customColumnFormatMap),\n 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: _aggregationSettings,\n selectedAggregation: null,\n openOptions: [],\n pendingRowCount: 0,\n pendingDataMap: pendingDataMap !== null && pendingDataMap !== void 0 ? pendingDataMap : new Map(),\n pendingDataErrors: new Map(),\n pendingSavePromise: null,\n pendingSaveError: null,\n toastMessage: null,\n frozenColumns,\n showOverflowModal: false,\n showNoPastePermissionModal: false,\n noPastePermissionError: '',\n overflowText: '',\n overflowButtonTooltipProps: null,\n expandCellTooltipProps: null,\n expandTooltipDisplayValue: 'expand',\n hoverTooltipProps: null,\n hoverDisplayValue: '',\n isGotoShown: false,\n gotoRow: '',\n gotoRowError: '',\n gotoValueError: '',\n gotoValueSelectedColumnName: (_model$columns$0$name = (_model$columns$ = _model.columns[0]) === null || _model$columns$ === void 0 ? void 0 : _model$columns$.name) !== null && _model$columns$0$name !== void 0 ? _model$columns$0$name : '',\n gotoValueSelectedFilter: FilterType.eqIgnoreCase,\n gotoValue: '',\n gotoValueManuallyChanged: false,\n columnHeaderGroups: columnHeaderGroups !== null && columnHeaderGroups !== void 0 ? columnHeaderGroups : _model.initialColumnHeaderGroups\n };\n }\n componentDidMount() {\n var {\n model\n } = this.props;\n this.initState();\n this.startListening(model);\n }\n componentDidUpdate(prevProps, prevState) {\n var {\n inputFilters,\n isSelectingColumn,\n settings,\n model,\n customFilters,\n sorts\n } = this.props;\n if (model !== prevProps.model) {\n this.stopListening(prevProps.model);\n this.startListening(model);\n }\n var changedInputFilters = inputFilters !== prevProps.inputFilters ? inputFilters.filter(inputFilter => !prevProps.inputFilters.includes(inputFilter)) : [];\n if (changedInputFilters.length > 0) {\n var _advancedSettings$get;\n var {\n advancedSettings\n } = this.props;\n var replaceExistingFilters = (_advancedSettings$get = advancedSettings.get(AdvancedSettingsType.FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS)) !== null && _advancedSettings$get !== void 0 ? _advancedSettings$get : false;\n if (replaceExistingFilters) {\n this.clearGridInputField();\n this.clearCrossColumSearch();\n }\n this.startLoading('Filtering...', {\n resetRanges: true\n });\n this.applyInputFilters(changedInputFilters, replaceExistingFilters);\n }\n if (isSelectingColumn !== prevProps.isSelectingColumn) {\n this.resetColumnSelection();\n }\n if (settings !== prevProps.settings) {\n this.updateFormatterSettings(settings);\n }\n if (customFilters !== prevProps.customFilters) {\n this.startLoading('Filtering...', {\n resetRanges: true\n });\n }\n if (sorts !== prevProps.sorts) {\n this.updateSorts(sorts);\n }\n var {\n loadingScrimStartTime,\n loadingScrimFinishTime\n } = this;\n if (loadingScrimStartTime != null && loadingScrimFinishTime != null) {\n window.requestAnimationFrame(() => {\n var now = Date.now();\n var currentTime = now - loadingScrimStartTime;\n var totalTime = loadingScrimFinishTime - loadingScrimStartTime;\n var loadingScrimProgress = Math.min(currentTime / totalTime, 1);\n if (loadingScrimFinishTime < now) {\n this.loadingScrimStartTime = undefined;\n this.loadingScrimFinishTime = undefined;\n }\n this.setState(state => {\n if (state.loadingScrimProgress == null) {\n log.debug2('Ignoring scrim update because loading cancelled.');\n return null;\n }\n return {\n loadingScrimProgress\n };\n });\n });\n }\n var {\n openOptions\n } = this.state;\n if (openOptions !== prevState.openOptions) {\n var isAggEditType = option => option.type === OptionType.AGGREGATION_EDIT;\n if (!openOptions.some(isAggEditType) && prevState.openOptions.some(isAggEditType)) {\n this.removeEmptyAggregations();\n }\n }\n this.sendStateChange();\n }\n componentWillUnmount() {\n var {\n model\n } = this.props;\n this.stopListening(model);\n this.pending.cancel();\n this.updateSearchFilter.cancel();\n if (this.loadingTimer) {\n clearTimeout(this.loadingTimer);\n }\n this.handleDownloadProgressUpdate.cancel();\n if (this.animationFrame !== undefined) {\n cancelAnimationFrame(this.animationFrame);\n }\n this.showViewportLoading.cancel();\n }\n\n // When the loading scrim started/when it should extend to the end of the screen.\n\n get gridWrapper() {\n var _this$grid$canvasWrap, _this$grid;\n return (_this$grid$canvasWrap = (_this$grid = this.grid) === null || _this$grid === void 0 ? void 0 : _this$grid.canvasWrapper.current) !== null && _this$grid$canvasWrap !== void 0 ? _this$grid$canvasWrap : null;\n }\n\n /**\n * Builds formatColumns array based on the provided formatting rules with optional preview\n * @param columns Array of columns\n * @param rulesParam Array of formatting rules\n * @param preview Optional temporary formatting rule for previewing live changes\n * @param editIndex Index in the rulesParam array to replace with the preview, null if preview not applicable\n * @returns Format columns array\n */\n\n getKeyHandlers() {\n var {\n keyHandlers\n } = this.props;\n return this.getCachedKeyHandlers(keyHandlers);\n }\n get renderer() {\n var {\n renderer\n } = this.props;\n return this.getCachedRenderer(renderer);\n }\n getMouseHandlers() {\n var {\n mouseHandlers\n } = this.props;\n return this.getCachedMouseHandlers(mouseHandlers);\n }\n getValueForCell(columnIndex, rowIndex) {\n var rawValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var {\n model\n } = this.props;\n var {\n dh\n } = model;\n var modelColumn = this.getModelColumn(columnIndex);\n var modelRow = this.getModelRow(rowIndex);\n if (rawValue && modelColumn != null && modelRow != null) {\n var _value = model.valueForCell(modelColumn, modelRow);\n if (TableUtils.isDateType(model.columns[modelColumn].type)) {\n // The returned value is just a long value, we should return the value formatted as a full date string\n var {\n formatter\n } = model;\n return dh.i18n.DateTimeFormat.format(UNFORMATTED_DATE_PATTERN, _value, dh.i18n.TimeZone.getTimeZone(formatter.timeZone));\n }\n return _value;\n }\n if (rawValue) {\n return null;\n }\n if (modelColumn != null && modelRow != null) {\n return model.textForCell(modelColumn, modelRow);\n }\n return '';\n }\n getModelColumn(columnIndex) {\n var {\n metrics\n } = this.state;\n assertNotNull(metrics);\n var {\n modelColumns\n } = metrics;\n if (modelColumns == null) {\n return null;\n }\n return columnIndex != null ? modelColumns.get(columnIndex) : null;\n }\n getModelRow(rowIndex) {\n var {\n metrics\n } = this.state;\n assertNotNull(metrics);\n var {\n modelRows\n } = metrics;\n if (modelRows == null) {\n return null;\n }\n return rowIndex != null ? modelRows.get(rowIndex) : null;\n }\n getTheme() {\n var _ref4;\n var {\n model,\n theme,\n density\n } = this.props;\n var {\n theme: contextTheme,\n density: contextDensity\n } = this.context;\n return this.getCachedTheme(contextTheme, theme, (_ref4 = isEditableGridModel(model) && model.isEditable) !== null && _ref4 !== void 0 ? _ref4 : false, model.floatingTopRowCount + model.floatingBottomRowCount, density !== null && density !== void 0 ? density : contextDensity);\n }\n getVisibleColumn(modelIndex) {\n var {\n movedColumns\n } = this.state;\n return GridUtils.getVisibleIndex(modelIndex, movedColumns);\n }\n makeQuickFilter(column, text, timeZone) {\n try {\n return this.tableUtils.makeQuickFilter(column, text, timeZone);\n } catch (err) {\n log.error('Error creating quick filter', err);\n }\n return null;\n }\n\n /**\n * Applies the provided input filters as quick filters,\n * and clears any existing quickFilters or advancedFilters on that column\n * @param inputFilters Array of input filters to apply\n * @param replaceExisting If true, new filters will replace the existing ones, instead of merging\n */\n applyInputFilters(inputFilters) {\n var replaceExisting = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var {\n model\n } = this.props;\n var {\n advancedFilters,\n quickFilters\n } = this.state;\n var newAdvancedFilters = replaceExisting ? new Map() : new Map(advancedFilters);\n var newQuickFilters = replaceExisting ? new Map() : new Map(quickFilters);\n var isChanged = replaceExisting && advancedFilters.size > 0;\n inputFilters.forEach(_ref5 => {\n var {\n name,\n type,\n value\n } = _ref5;\n var modelIndex = model.columns.findIndex(_ref6 => {\n var {\n name: columnName,\n type: columnType\n } = _ref6;\n return columnName === name && columnType === type;\n });\n if (modelIndex >= 0) {\n isChanged = newAdvancedFilters.delete(modelIndex) || isChanged;\n isChanged = this.applyQuickFilter(modelIndex, value, newQuickFilters) || isChanged;\n } else {\n log.error('Unable to find column for inputFilter', name, type, value);\n }\n });\n if (isChanged) {\n this.setState({\n quickFilters: newQuickFilters,\n advancedFilters: newAdvancedFilters\n });\n }\n }\n\n /**\n * Applies a quick filter\n * @param modelIndex The index in the model of the column to set\n * @param value The string value to set to the quick filter\n * @param quickFilters The quick filters map\n * @returns True if the filters have changed because this quick filter was applied\n */\n applyQuickFilter(modelIndex, value, quickFilters) {\n var {\n model\n } = this.props;\n var {\n formatter\n } = model;\n var column = model.columns[modelIndex];\n if (value != null && \"\".concat(value).trim().length > 0) {\n var quickFilter = quickFilters.get(modelIndex);\n if (quickFilter != null) {\n var {\n text\n } = quickFilter;\n if (text === value) {\n log.debug2('Ignoring change to existing filter');\n return false;\n }\n }\n quickFilters.set(modelIndex, {\n text: value,\n filter: this.makeQuickFilter(column, value, formatter.timeZone)\n });\n return true;\n }\n return quickFilters.delete(modelIndex);\n }\n setAdvancedFilterMap(advancedFilters) {\n this.setState({\n advancedFilters\n });\n }\n setAdvancedFilter(modelIndex, filter, options) {\n log.debug('Setting advanced filter', modelIndex, filter);\n this.startLoading('Filtering...', {\n resetRanges: true\n });\n this.setState(_ref7 => {\n var {\n advancedFilters\n } = _ref7;\n var newAdvancedFilters = new Map(advancedFilters);\n if (filter == null) {\n newAdvancedFilters.delete(modelIndex);\n } else {\n newAdvancedFilters.set(modelIndex, {\n filter,\n options\n });\n }\n return {\n advancedFilters: newAdvancedFilters\n };\n });\n }\n\n /**\n * Sets a quick filter against the provided column\n * @param modelIndex The index in the model for the column this filter is applied to\n * @param filter A filter to apply to the column, or null if there was an error\n * @param text The original text the filter was created with\n */\n setQuickFilter(modelIndex, filter, text) {\n log.debug('Setting quick filter', modelIndex, filter, text);\n this.startLoading('Filtering...', {\n resetRanges: true\n });\n this.setState(_ref8 => {\n var {\n quickFilters\n } = _ref8;\n var newQuickFilters = new Map(quickFilters);\n newQuickFilters.set(modelIndex, {\n filter,\n text\n });\n return {\n quickFilters: newQuickFilters\n };\n });\n }\n\n /**\n * Set grid filters based on the filter map\n * @param filterMap Filter map\n */\n setFilterMap(filterMap) {\n var _advancedSettings$get2;\n log.debug('setFilterMap', filterMap);\n var {\n advancedSettings\n } = this.props;\n var clearFiltersOnLinkerFilterUpdate = (_advancedSettings$get2 = advancedSettings.get(AdvancedSettingsType.LINK_CHANGE_CLEARS_ALL_FILTERS)) !== null && _advancedSettings$get2 !== void 0 ? _advancedSettings$get2 : false;\n if (clearFiltersOnLinkerFilterUpdate) {\n this.clearAllFilters();\n }\n var {\n model\n } = this.props;\n filterMap.forEach((_ref9, columnName) => {\n var {\n columnType,\n filterList\n } = _ref9;\n var column = model.columns.find(c => c.name === columnName && c.type === columnType);\n if (column == null) {\n return;\n }\n var columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n var combinedText = IrisGridUtils.combineFiltersFromList(columnType, filterList);\n if (combinedText.length === 0) {\n this.removeQuickFilter(columnIndex);\n } else {\n var {\n formatter\n } = model;\n this.setQuickFilter(columnIndex, this.makeQuickFilter(column, combinedText, formatter.timeZone), \"\".concat(combinedText));\n }\n });\n }\n removeColumnFilter(modelRange) {\n this.startLoading('Filtering...', {\n resetRanges: true\n });\n var clearRange = Array.isArray(modelRange) ? modelRange : [modelRange, modelRange];\n this.setState(_ref10 => {\n var {\n advancedFilters,\n quickFilters\n } = _ref10;\n var newAdvancedFilters = advancedFilters ? new Map(advancedFilters) : new Map();\n var newQuickFilters = quickFilters ? new Map(quickFilters) : new Map();\n newAdvancedFilters.forEach((_, column) => {\n if (column >= clearRange[0] && column <= clearRange[1]) {\n newAdvancedFilters.delete(column);\n }\n });\n newQuickFilters.forEach((_, column) => {\n if (column >= clearRange[0] && column <= clearRange[1]) {\n newQuickFilters.delete(column);\n }\n });\n return {\n quickFilters: newQuickFilters,\n advancedFilters: newAdvancedFilters\n };\n });\n }\n removeQuickFilter(modelColumn) {\n this.startLoading('Clearing Filter...', {\n resetRanges: true\n });\n this.setState(_ref11 => {\n var {\n quickFilters\n } = _ref11;\n var newQuickFilters = new Map(quickFilters);\n newQuickFilters.delete(modelColumn);\n return {\n quickFilters: newQuickFilters\n };\n });\n }\n clearAllFilters() {\n log.debug('Clearing all filters');\n var {\n advancedFilters,\n quickFilters,\n searchFilter\n } = this.state;\n if (quickFilters.size === 0 && advancedFilters.size === 0 && searchFilter === null) {\n return;\n }\n\n // if there is an active quick filter input field, reset it as well\n this.clearGridInputField();\n this.startLoading('Clearing Filters...', {\n resetRanges: true\n });\n this.setState({\n quickFilters: new Map(),\n advancedFilters: new Map(),\n searchValue: '',\n searchFilter: undefined\n });\n }\n 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 var {\n columns,\n formatter\n } = model;\n log.debug('Rebuilding filters');\n var newAdvancedFilters = new Map();\n var newQuickFilters = new Map();\n advancedFilters.forEach((value, key) => {\n var {\n options\n } = value;\n var column = columns[key];\n var filter = this.tableUtils.makeAdvancedFilter(column, options, formatter.timeZone);\n newAdvancedFilters.set(key, {\n options,\n filter\n });\n });\n quickFilters.forEach((value, key) => {\n var {\n text\n } = value;\n var column = columns[key];\n newQuickFilters.set(key, {\n text,\n filter: this.makeQuickFilter(column, text, formatter.timeZone)\n });\n });\n this.startLoading('Rebuilding filters...', {\n resetRanges: true\n });\n this.setState({\n quickFilters: newQuickFilters,\n advancedFilters: newAdvancedFilters\n });\n }\n setFilters(_ref12) {\n var {\n quickFilters,\n advancedFilters\n } = _ref12;\n this.setState({\n quickFilters,\n advancedFilters\n });\n }\n updateFormatterSettings(settings) {\n var _settings$defaultDeci, _settings$defaultInte, _settings$truncateNum, _settings$showEmptySt, _settings$showNullStr, _settings$showExtraGr;\n var forceUpdate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var globalColumnFormats = FormatterUtils.getColumnFormats(settings);\n var dateTimeFormatterOptions = FormatterUtils.getDateTimeFormatterOptions(settings);\n var defaultDecimalFormatOptions = (_settings$defaultDeci = settings === null || settings === void 0 ? void 0 : settings.defaultDecimalFormatOptions) !== null && _settings$defaultDeci !== void 0 ? _settings$defaultDeci : {};\n var defaultIntegerFormatOptions = (_settings$defaultInte = settings === null || settings === void 0 ? void 0 : settings.defaultIntegerFormatOptions) !== null && _settings$defaultInte !== void 0 ? _settings$defaultInte : {};\n var truncateNumbersWithPound = (_settings$truncateNum = settings === null || settings === void 0 ? void 0 : settings.truncateNumbersWithPound) !== null && _settings$truncateNum !== void 0 ? _settings$truncateNum : false;\n var showEmptyStrings = (_settings$showEmptySt = settings === null || settings === void 0 ? void 0 : settings.showEmptyStrings) !== null && _settings$showEmptySt !== void 0 ? _settings$showEmptySt : true;\n var showNullStrings = (_settings$showNullStr = settings === null || settings === void 0 ? void 0 : settings.showNullStrings) !== null && _settings$showNullStr !== void 0 ? _settings$showNullStr : true;\n var showExtraGroupColumn = (_settings$showExtraGr = settings === null || settings === void 0 ? void 0 : settings.showExtraGroupColumn) !== null && _settings$showExtraGr !== void 0 ? _settings$showExtraGr : true;\n var isColumnFormatChanged = !deepEqual(this.globalColumnFormats, globalColumnFormats);\n var isDateFormattingChanged = !deepEqual(this.dateTimeFormatterOptions, dateTimeFormatterOptions);\n var isDecimalFormattingChanged = !deepEqual(this.decimalFormatOptions, settings === null || settings === void 0 ? void 0 : settings.defaultDecimalFormatOptions);\n var isIntegerFormattingChanged = !deepEqual(this.integerFormatOptions, defaultIntegerFormatOptions);\n var isTruncateNumbersChanged = this.truncateNumbersWithPound !== truncateNumbersWithPound;\n var isShowEmptyStringsChanged = this.showEmptyStrings !== showEmptyStrings;\n var isShowNullStringsChanged = this.showNullStrings !== showNullStrings;\n var isShowExtraGroupColumnChanged = this.showExtraGroupColumn !== showExtraGroupColumn;\n if (isColumnFormatChanged || isDateFormattingChanged || isDecimalFormattingChanged || isIntegerFormattingChanged || isTruncateNumbersChanged || isShowEmptyStringsChanged || isShowNullStringsChanged || isShowExtraGroupColumnChanged) {\n this.globalColumnFormats = globalColumnFormats;\n this.dateTimeFormatterOptions = dateTimeFormatterOptions;\n this.decimalFormatOptions = defaultDecimalFormatOptions;\n this.integerFormatOptions = defaultIntegerFormatOptions;\n this.truncateNumbersWithPound = truncateNumbersWithPound;\n this.showEmptyStrings = showEmptyStrings;\n this.showNullStrings = showNullStrings;\n this.showExtraGroupColumn = showExtraGroupColumn;\n this.updateFormatter({}, forceUpdate);\n if (isDateFormattingChanged && forceUpdate) {\n this.rebuildFilters();\n }\n }\n }\n updateFormatter(updatedFormats) {\n var _this$globalColumnFor;\n var forceUpdate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var {\n customColumnFormatMap\n } = this.state;\n var {\n model\n } = this.props;\n var update = _objectSpread({\n customColumnFormatMap\n }, updatedFormats);\n var mergedColumnFormats = [...((_this$globalColumnFor = this.globalColumnFormats) !== null && _this$globalColumnFor !== void 0 ? _this$globalColumnFor : []), ...update.customColumnFormatMap.values()];\n var formatter = new Formatter(model.dh, mergedColumnFormats, this.dateTimeFormatterOptions, this.decimalFormatOptions, this.integerFormatOptions, this.truncateNumbersWithPound, this.showEmptyStrings, this.showNullStrings);\n log.debug('updateFormatter', this.globalColumnFormats, mergedColumnFormats);\n this.setState(_objectSpread(_objectSpread({}, update), {}, {\n formatter\n }), () => {\n if (forceUpdate && this.grid) {\n this.grid.forceUpdate();\n }\n });\n }\n initFormatter() {\n var {\n settings\n } = this.props;\n this.updateFormatterSettings(settings);\n }\n initState() {\n var {\n model\n } = this.props;\n try {\n if (isPartitionedGridModel(model) && model.isPartitionRequired) {\n this.loadPartitionsTable(model);\n } else {\n this.loadTableState();\n }\n } catch (error) {\n this.handleTableLoadError(error);\n }\n }\n loadTableState() {\n var {\n applyInputFiltersOnInit,\n inputFilters,\n sorts,\n model,\n reverse,\n reverseType,\n customColumns,\n searchValue,\n selectedSearchColumns,\n invertSearchColumns\n } = this.props;\n var searchColumns = selectedSearchColumns !== null && selectedSearchColumns !== void 0 ? selectedSearchColumns : [];\n var searchFilter = CrossColumnSearch.createSearchFilter(model.dh, searchValue, searchColumns, model.columns, invertSearchColumns);\n if (applyInputFiltersOnInit) {\n // There may be more than one input filter on the same column with value === '' applied last\n // We don't want to skip it here, so only excluding the ones that were never applied (null)\n var inputFiltersWithValues = inputFilters.filter(inputFilter => inputFilter.value != null);\n this.applyInputFilters(inputFiltersWithValues);\n }\n this.setState({\n sorts,\n reverse: reverse || reverseType === TableUtils.REVERSE_TYPE.POST_SORT,\n customColumns,\n isReady: true,\n searchFilter\n });\n this.initFormatter();\n }\n loadPartitionsTable(model) {\n var _this = this;\n return _asyncToGenerator(function* () {\n try {\n var {\n partitionConfig\n } = _this.state;\n if (!partitionConfig) {\n _this.startLoading('Loading partitions...', {\n loadingCancelShown: false,\n resetRanges: true\n });\n _this.initializePartitionConfig(model);\n }\n _this.setState({\n isSelectingPartition: true\n }, _this.loadTableState);\n } catch (error) {\n if (!PromiseUtils.isCanceled(error)) {\n _this.handleTableLoadError(error);\n }\n }\n })();\n }\n\n /**\n * Initialize the partition config to the default partition.\n */\n initializePartitionConfig(model) {\n var _this2 = this;\n return _asyncToGenerator(function* () {\n var keyTable = yield _this2.pending.add(model.partitionKeysTable(), resolved => resolved.close());\n var {\n dh\n } = model;\n var sorts = keyTable.columns.map(column => column.sort().desc());\n keyTable.applySort(sorts);\n keyTable.setViewport(0, 0);\n\n // We want to wait for the first UPDATED event instead of just getting viewport data here\n // It's possible that the key table does not have any rows of data yet, so just wait until it does have one\n keyTable.addEventListener(dh.Table.EVENT_UPDATED, event => {\n try {\n var {\n detail: _data\n } = event;\n if (_data.rows.length === 0) {\n // We received an update and the table is still empty. Stop showing the loading spinner so we know\n _this2.stopLoading();\n return;\n }\n var row = _data.rows[0];\n var values = keyTable.columns.map(column => row.get(column));\n var newPartition = {\n partitions: values,\n mode: model.isPartitionAwareSourceTable ? 'partition' : 'keys'\n };\n keyTable.close();\n _this2.setState({\n loadingSpinnerShown: false,\n partitionConfig: newPartition\n });\n } catch (e) {\n keyTable.close();\n log.error('Error getting initial partition config', e);\n }\n });\n })();\n }\n\n /**\n * Selects a partition key from the table based on the provided row index.\n *\n * @param rowIndex The index of the row from which the partition will be selected.\n * @returns A promise that resolves when the partition key has been successfully selected.\n */\n selectPartitionKeyFromTable(rowIndex) {\n var {\n model\n } = this.props;\n assertNotNull(rowIndex);\n if (isPartitionedGridModel(model)) {\n var _data2 = this.getRowDataMap(rowIndex);\n var partitionColumnSet = new Set(model.partitionColumns.map(column => column.name));\n var values = Object.entries(_data2).filter(_ref13 => {\n var [key, _] = _ref13;\n return partitionColumnSet.has(key);\n }).map(_ref14 => {\n var [key, columnData] = _ref14;\n return columnData.value;\n });\n var newPartition = {\n partitions: values,\n mode: 'partition'\n };\n this.setState({\n isSelectingPartition: true,\n partitionConfig: newPartition\n });\n }\n }\n copyCell(columnIndex, rowIndex) {\n var rawValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var {\n canCopy\n } = this.props;\n if (canCopy) {\n var _value2 = String(this.getValueForCell(columnIndex, rowIndex, rawValue));\n copyToClipboard(_value2).catch(e => log.error('Unable to copy cell', e));\n } else {\n log.error('Attempted to copyCell for user without copy permission.');\n }\n }\n copyColumnHeader(columnIndex) {\n var columnDepth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n if (columnIndex === null) {\n return;\n }\n var {\n canCopy\n } = this.props;\n var {\n movedColumns\n } = this.state;\n if (canCopy) {\n var copyOperation = {\n columnIndex,\n columnDepth,\n movedColumns\n };\n this.setState({\n copyOperation\n });\n } else {\n log.error('Attempted copyColumnHeader for user without copy permission.');\n }\n }\n\n /**\n * Copy the provided ranges to the clipboard\n * @paramranges The ranges to copy\n * @param includeHeaders Include the headers or not\n * @param formatValues Whether to format values or not\n * @param error Error message if one occurred\n */\n copyRanges(ranges) {\n var includeHeaders = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var formatValues = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n var error = arguments.length > 3 ? arguments[3] : undefined;\n var {\n model,\n canCopy\n } = this.props;\n var {\n metricCalculator,\n movedColumns\n } = this.state;\n var userColumnWidths = metricCalculator.getUserColumnWidths();\n if (canCopy) {\n var copyOperation = {\n ranges: GridRange.boundedRanges(ranges, model.columnCount, model.rowCount),\n includeHeaders,\n formatValues,\n movedColumns,\n userColumnWidths,\n error\n };\n this.setState({\n copyOperation\n });\n } else {\n log.error('Attempted copyRanges for user without copy permission.');\n }\n }\n startLoading(loadingText) {\n var {\n resetRanges = false,\n loadingCancelShown = true,\n loadingBlocksGrid = true\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.setState({\n loadingText,\n loadingCancelShown,\n loadingBlocksGrid\n });\n var theme = this.getTheme();\n if (resetRanges && this.grid) {\n this.grid.clearSelectedRanges();\n this.grid.setViewState({\n top: 0\n }, true);\n }\n if (this.loadingScrimStartTime == null) {\n var _this$gridWrapper$get, _this$gridWrapper;\n var {\n minScrimTransitionTime,\n maxScrimTransitionTime\n } = theme;\n assertNotNull(minScrimTransitionTime);\n assertNotNull(maxScrimTransitionTime);\n var height = (_this$gridWrapper$get = (_this$gridWrapper = this.gridWrapper) === null || _this$gridWrapper === void 0 ? void 0 : _this$gridWrapper.getBoundingClientRect().height) !== null && _this$gridWrapper$get !== void 0 ? _this$gridWrapper$get : 0;\n var scrimTransitionTime = Math.max(minScrimTransitionTime, Math.min(height / 2, maxScrimTransitionTime));\n this.loadingScrimStartTime = Date.now();\n this.loadingScrimFinishTime = this.loadingScrimStartTime + scrimTransitionTime;\n this.setState({\n loadingScrimProgress: 0\n });\n this.loadingTimer = setTimeout(() => {\n this.setState({\n loadingSpinnerShown: true\n });\n }, IrisGrid.loadingSpinnerDelay);\n }\n }\n stopLoading() {\n this.showViewportLoading.cancel();\n this.loadingScrimStartTime = undefined;\n this.loadingScrimFinishTime = undefined;\n this.setState({\n loadingText: null,\n loadingScrimProgress: null,\n loadingSpinnerShown: false,\n loadingCancelShown: false\n });\n if (this.loadingTimer != null) {\n clearTimeout(this.loadingTimer);\n this.loadingTimer = undefined;\n }\n }\n\n /**\n * Rolls back the table state to the last known safe state, or if that's not available then clears all sorts/filters/custom columns.\n */\n rollback() {\n if (this.lastLoadedConfig) {\n log.debug('loading last loading config', this.lastLoadedConfig);\n var {\n advancedFilters,\n aggregationSettings,\n customColumns,\n quickFilters,\n reverse,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts\n } = this.lastLoadedConfig;\n this.lastLoadedConfig = null;\n this.setState({\n advancedFilters,\n aggregationSettings,\n customColumns,\n quickFilters,\n reverse,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts\n });\n } else {\n log.debug('remove all sorts, filters, and custom columns');\n this.setState({\n advancedFilters: new Map(),\n aggregationSettings: DEFAULT_AGGREGATION_SETTINGS,\n customColumns: [],\n quickFilters: new Map(),\n reverse: false,\n rollupConfig: undefined,\n selectDistinctColumns: [],\n sorts: []\n });\n }\n }\n\n /**\n * Check if we can rollback the current state to a safe state.\n * @returns true if there's a previously known safe state or if some of the current state isn't empty.\n */\n canRollback() {\n return this.lastLoadedConfig != null || !isEmptyConfig(this.state);\n }\n startListening(model) {\n model.addEventListener(IrisGridModel.EVENT.UPDATED, this.handleUpdate);\n model.addEventListener(IrisGridModel.EVENT.REQUEST_FAILED, this.handleRequestFailed);\n model.addEventListener(IrisGridModel.EVENT.COLUMNS_CHANGED, this.handleCustomColumnsChanged);\n model.addEventListener(IrisGridModel.EVENT.PENDING_DATA_UPDATED, this.handlePendingDataUpdated);\n model.addEventListener(IrisGridModel.EVENT.VIEWPORT_UPDATED, this.handleViewportUpdated);\n }\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 }\n focus() {\n var _this$grid2;\n (_this$grid2 = this.grid) === null || _this$grid2 === void 0 ? void 0 : _this$grid2.focus();\n }\n focusFilterBar(column) {\n var {\n movedColumns\n } = this.state;\n var {\n model\n } = this.props;\n var {\n columnCount\n } = model;\n var modelColumn = GridUtils.getModelIndex(column, movedColumns);\n if (column == null || column < 0 || columnCount <= column || !model.isFilterable(modelColumn)) {\n this.setState({\n focusedFilterBarColumn: null\n });\n return;\n }\n var {\n metricCalculator,\n metrics\n } = this.state;\n assertNotNull(metrics);\n var {\n left,\n rightVisible,\n lastLeft\n } = metrics;\n if (column < left) {\n var _this$grid3;\n (_this$grid3 = this.grid) === null || _this$grid3 === void 0 ? void 0 : _this$grid3.setViewState({\n left: column\n }, true);\n } else if (rightVisible < column) {\n var _this$grid4, _this$grid5;\n var metricState = (_this$grid4 = this.grid) === null || _this$grid4 === void 0 ? void 0 : _this$grid4.getMetricState();\n assertNotNull(metricState);\n var newLeft = metricCalculator.getLastLeft(metricState, column, metricCalculator.getVisibleWidth(metricState));\n (_this$grid5 = this.grid) === null || _this$grid5 === void 0 ? void 0 : _this$grid5.setViewState({\n left: Math.min(newLeft, lastLeft),\n leftOffset: 0\n }, true);\n }\n this.lastFocusedFilterBarColumn = column;\n this.setState({\n focusedFilterBarColumn: column,\n isFilterBarShown: true\n });\n }\n hideColumnByVisibleIndex(columnVisibleIndex) {\n var _this$grid6;\n var {\n metricCalculator,\n movedColumns\n } = this.state;\n metricCalculator.setColumnWidth(GridUtils.getModelIndex(columnVisibleIndex, movedColumns), 0);\n (_this$grid6 = this.grid) === null || _this$grid6 === void 0 ? void 0 : _this$grid6.forceUpdate();\n }\n freezeColumnByColumnName(columnName) {\n var {\n frozenColumns,\n movedColumns\n } = this.state;\n var {\n model\n } = this.props;\n log.debug2('freezing column', columnName);\n var allFrozenColumns = frozenColumns == null ? new Set(model.frozenColumns) : new Set(frozenColumns);\n allFrozenColumns.add(columnName);\n var modelIndex = model.getColumnIndexByName(columnName);\n assertNotNull(modelIndex);\n var visibleIndex = GridUtils.getVisibleIndex(modelIndex, movedColumns);\n var newMovedColumns = GridUtils.moveItem(visibleIndex, allFrozenColumns.size - 1, movedColumns);\n this.setState({\n frozenColumns: [...allFrozenColumns],\n movedColumns: newMovedColumns\n });\n }\n unFreezeColumnByColumnName(columnName) {\n var {\n frozenColumns,\n movedColumns\n } = this.state;\n var {\n model\n } = this.props;\n log.debug2('unfreezing column', columnName);\n var allFrozenColumns = frozenColumns == null ? new Set(model.frozenColumns) : new Set(frozenColumns);\n allFrozenColumns.delete(columnName);\n var modelIndex = model.getColumnIndexByName(columnName);\n assertNotNull(modelIndex);\n var visibleIndex = GridUtils.getVisibleIndex(modelIndex, movedColumns);\n\n // Move to after remaining frozen columns and front columns\n var newMovedColumns = GridUtils.moveItem(visibleIndex, allFrozenColumns.size + model.frontColumns.length, movedColumns);\n this.setState({\n frozenColumns: [...allFrozenColumns],\n movedColumns: newMovedColumns\n });\n }\n handleColumnVisibilityChanged(modelIndexes, isVisible) {\n var _this$grid7;\n var {\n metricCalculator,\n metrics\n } = this.state;\n assertNotNull(metrics);\n if (isVisible) {\n modelIndexes.forEach(modelIndex => {\n var defaultWidth = metricCalculator.initialColumnWidths.get(modelIndex);\n var calculatedWidth = getOrThrow(metrics.calculatedColumnWidths, modelIndex);\n if (defaultWidth !== calculatedWidth) {\n metricCalculator.setColumnWidth(modelIndex, calculatedWidth);\n } else {\n metricCalculator.resetColumnWidth(modelIndex);\n }\n });\n } else {\n modelIndexes.forEach(modelIndex => {\n metricCalculator.setColumnWidth(modelIndex, 0);\n });\n }\n (_this$grid7 = this.grid) === null || _this$grid7 === void 0 ? void 0 : _this$grid7.forceUpdate();\n }\n handleColumnVisibilityReset() {\n var _model$layoutHints$fr, _model$layoutHints2;\n var {\n metricCalculator,\n metrics\n } = this.state;\n var {\n model\n } = this.props;\n assertNotNull(metrics);\n for (var i = 0; i < metrics.columnCount; i += 1) {\n metricCalculator.resetColumnWidth(i);\n }\n this.handleMovedColumnsChanged(model.initialMovedColumns);\n this.handleHeaderGroupsChanged(model.initialColumnHeaderGroups);\n this.setState({\n frozenColumns: (_model$layoutHints$fr = (_model$layoutHints2 = model.layoutHints) === null || _model$layoutHints2 === void 0 ? void 0 : _model$layoutHints2.frozenColumns) !== null && _model$layoutHints$fr !== void 0 ? _model$layoutHints$fr : []\n });\n }\n handleCrossColumnSearch(searchValue, selectedSearchColumns, invertSearchColumns) {\n var {\n model\n } = this.props;\n this.startLoading('Searching...');\n this.updateSearchFilter(searchValue, selectedSearchColumns, model.columns, invertSearchColumns);\n this.setState({\n searchValue,\n selectedSearchColumns,\n invertSearchColumns\n });\n }\n handleAnimationLoop() {\n var _this$grid8;\n (_this$grid8 = this.grid) === null || _this$grid8 === void 0 ? void 0 : _this$grid8.updateCanvas();\n if (this.isAnimating) {\n this.animationFrame = requestAnimationFrame(this.handleAnimationLoop);\n }\n }\n handleAnimationStart() {\n log.debug2('handleAnimationStart');\n this.isAnimating = true;\n this.animationFrame = requestAnimationFrame(this.handleAnimationLoop);\n }\n handleAnimationEnd() {\n log.debug2('handleAnimationEnd');\n this.isAnimating = false;\n }\n handlePartitionChange(partitionConfig) {\n this.startLoading('Partitioning...');\n var {\n partitionConfig: prevConfig\n } = this.state;\n if (prevConfig !== partitionConfig) {\n this.setState({\n partitionConfig\n });\n }\n }\n handleTableLoadError(error) {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n log.error(error);\n var {\n onError\n } = this.props;\n onError(error);\n }\n handleViewportUpdated() {\n var {\n model\n } = this.props;\n var {\n loadingText,\n loadingSpinnerShown\n } = this.state;\n var loadingMessage = 'Waiting for viewport...';\n\n // pending and no timer already exists\n if (model.isViewportPending && !loadingSpinnerShown) {\n this.showViewportLoading();\n } else if (loadingText === loadingMessage && !model.isViewportPending) {\n // extra conditions because timeout might get cleared by update\n this.stopLoading();\n }\n }\n showAllColumns() {\n var _this$grid9;\n var {\n metricCalculator\n } = this.state;\n var userColumnWidths = metricCalculator.getUserColumnWidths();\n var entries = [...userColumnWidths.entries()];\n for (var i = 0; i < entries.length; i += 1) {\n var [modelIndex, columnWidth] = entries[i];\n if (columnWidth === 0) {\n metricCalculator.resetColumnWidth(modelIndex);\n }\n }\n (_this$grid9 = this.grid) === null || _this$grid9 === void 0 ? void 0 : _this$grid9.forceUpdate();\n }\n 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$grid10;\n this.startLoading('Sorting...');\n this.setState({\n sorts\n });\n (_this$grid10 = this.grid) === null || _this$grid10 === void 0 ? void 0 : _this$grid10.forceUpdate();\n }\n sortColumn(modelColumn) {\n var _this$grid11;\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$grid11 = this.grid) === null || _this$grid11 === void 0 ? void 0 : _this$grid11.forceUpdate();\n }\n reverse(reverse) {\n var _this$grid12;\n this.startLoading('Reversing...');\n this.setState({\n reverse\n });\n (_this$grid12 = this.grid) === null || _this$grid12 === void 0 ? void 0 : _this$grid12.forceUpdate();\n }\n isReversible() {\n var {\n model\n } = this.props;\n return model.isReversible;\n }\n toggleFilterBar() {\n var focusIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.lastFocusedFilterBarColumn;\n var {\n isFilterBarShown\n } = this.state;\n isFilterBarShown = !isFilterBarShown;\n this.setState({\n isFilterBarShown\n });\n if (isFilterBarShown) {\n if (focusIndex != null) {\n this.focusFilterBar(focusIndex);\n } else {\n var columnIndex = 0;\n var {\n model: _model2\n } = this.props;\n var {\n columnCount\n } = _model2;\n for (var i = 0; i < columnCount; i += 1) {\n var modelColumn = this.getModelColumn(i);\n if (modelColumn != null) {\n var _column = _model2.columns[modelColumn];\n if (_column != null && TableUtils.isTextType(_column.type)) {\n columnIndex = i;\n break;\n }\n }\n }\n this.focusFilterBar(columnIndex);\n }\n } else {\n var _this$grid13;\n (_this$grid13 = this.grid) === null || _this$grid13 === void 0 ? void 0 : _this$grid13.focus();\n }\n }\n isTableSearchAvailable() {\n var _model$layoutHints3, _dh$SearchDisplayMode, _dh$SearchDisplayMode2;\n var {\n model,\n canToggleSearch\n } = this.props;\n var {\n dh\n } = model;\n var searchDisplayMode = model === null || model === void 0 ? void 0 : (_model$layoutHints3 = model.layoutHints) === null || _model$layoutHints3 === void 0 ? void 0 : _model$layoutHints3.searchDisplayMode;\n if (searchDisplayMode === ((_dh$SearchDisplayMode = dh.SearchDisplayMode) === null || _dh$SearchDisplayMode === void 0 ? void 0 : _dh$SearchDisplayMode.SEARCH_DISPLAY_HIDE)) {\n return false;\n }\n if (searchDisplayMode === ((_dh$SearchDisplayMode2 = dh.SearchDisplayMode) === null || _dh$SearchDisplayMode2 === void 0 ? void 0 : _dh$SearchDisplayMode2.SEARCH_DISPLAY_SHOW)) {\n return true;\n }\n return canToggleSearch;\n }\n toggleSearchBar() {\n var {\n showSearchBar\n } = this.state;\n if (!this.isTableSearchAvailable()) {\n return;\n }\n var update = !showSearchBar;\n this.setState({\n showSearchBar: update\n }, () => {\n var _this$crossColumnRef;\n if (update && (_this$crossColumnRef = this.crossColumnRef) !== null && _this$crossColumnRef !== void 0 && _this$crossColumnRef.current) {\n var _this$crossColumnRef2;\n (_this$crossColumnRef2 = this.crossColumnRef) === null || _this$crossColumnRef2 === void 0 ? void 0 : _this$crossColumnRef2.current.focus();\n } else {\n var _this$grid14;\n (_this$grid14 = this.grid) === null || _this$grid14 === void 0 ? void 0 : _this$grid14.focus();\n }\n });\n }\n toggleGotoRow() {\n var _this$grid15, _this$grid16;\n var row = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var value = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var columnName = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n var {\n isGotoShown\n } = this.state;\n if (row || value) {\n var _this$gotoRowRef$curr;\n // if invoked with a row, keep open instead of toggle\n this.setState({\n isGotoShown: true,\n gotoValue: value,\n gotoValueSelectedColumnName: columnName,\n gotoRowError: '',\n gotoValueError: '',\n gotoValueManuallyChanged: false\n });\n this.focusRowInGrid(row);\n (_this$gotoRowRef$curr = this.gotoRowRef.current) === null || _this$gotoRowRef$curr === void 0 ? void 0 : _this$gotoRowRef$curr.focus();\n return;\n }\n var cursorRow = (_this$grid15 = this.grid) === null || _this$grid15 === void 0 ? void 0 : _this$grid15.state.cursorRow;\n var cursorColumn = (_this$grid16 = this.grid) === null || _this$grid16 === void 0 ? void 0 : _this$grid16.state.cursorColumn;\n if (cursorRow == null || cursorColumn == null) {\n // if a cell is not selected / grid is not rendered\n this.setState({\n isGotoShown: !isGotoShown,\n gotoRow: '',\n gotoValue: '',\n gotoRowError: '',\n gotoValueError: '',\n gotoValueManuallyChanged: false\n });\n return;\n }\n // if a row is selected\n var {\n model\n } = this.props;\n var {\n name,\n type\n } = model.columns[cursorColumn];\n var cellValue = model.valueForCell(cursorColumn, cursorRow);\n var text = IrisGridUtils.convertValueToText(cellValue, type);\n this.setState({\n isGotoShown: !isGotoShown,\n gotoRow: \"\".concat(cursorRow + 1),\n gotoValue: text,\n gotoValueSelectedColumnName: name,\n gotoRowError: '',\n gotoValueError: '',\n gotoValueManuallyChanged: false\n });\n }\n commitPending() {\n var _this3 = this;\n return _asyncToGenerator(function* () {\n var _document, _document$activeEleme;\n var {\n model\n } = _this3.props;\n if (!isEditableGridModel(model) || !model.isEditable) {\n throw new Error('Cannot save, table is not editable');\n }\n var {\n pendingSavePromise\n } = _this3.state;\n if (pendingSavePromise != null) {\n throw new Error('Save already in progress');\n }\n var containsGridCellInputField = (_document = document) === null || _document === void 0 ? void 0 : (_document$activeEleme = _document.activeElement) === null || _document$activeEleme === void 0 ? void 0 : _document$activeEleme.classList.contains('grid-cell-input-field');\n if (containsGridCellInputField != null && containsGridCellInputField) {\n var _this3$grid;\n if (document.activeElement != null && document.activeElement.classList.contains('error')) {\n throw new ValidationError('Current input is invalid');\n }\n\n // Focus the grid again to commit any pending input changes\n (_this3$grid = _this3.grid) === null || _this3$grid === void 0 ? void 0 : _this3$grid.focus();\n }\n var newPendingSavePromise = _this3.pending.add(model.commitPending()).then(() => {\n _this3.setState({\n pendingSaveError: null,\n pendingSavePromise: null\n });\n }).catch(err => {\n if (!PromiseUtils.isCanceled(err)) {\n _this3.setState({\n pendingSaveError: err,\n pendingSavePromise: null\n });\n }\n });\n _this3.setState({\n pendingSavePromise: newPendingSavePromise\n });\n return newPendingSavePromise;\n })();\n }\n discardPending() {\n var _this4 = this;\n return _asyncToGenerator(function* () {\n var {\n pendingSavePromise\n } = _this4.state;\n if (pendingSavePromise != null) {\n throw new Error('Cannot cancel a save in progress');\n }\n _this4.setState({\n pendingSavePromise: null,\n pendingSaveError: null,\n pendingDataMap: new Map(),\n pendingDataErrors: new Map()\n });\n })();\n }\n\n /**\n * Select the passed in column and notify listener\n * @param column The column in this table to link\n */\n selectColumn(column) {\n var {\n onColumnSelected\n } = this.props;\n onColumnSelected(column);\n }\n\n /**\n * Get the row data map for a given row and notifies the listener\n */\n selectData(columnIndex, rowIndex) {\n var dataMap = this.getRowDataMap(rowIndex);\n var {\n onDataSelected\n } = this.props;\n onDataSelected(rowIndex, dataMap);\n }\n\n /**\n * Get the data map for the given row\n * @param rowIndex Row to get the data map for\n * @returns Data map for the row\n */\n getRowDataMap(rowIndex) {\n var _this5 = this;\n var {\n model\n } = this.props;\n var {\n columns,\n groupedColumns\n } = model;\n var dataMap = {};\n var _loop = function _loop() {\n var column = columns[i];\n var {\n name,\n type\n } = column;\n var value = model.valueForCell(i, rowIndex);\n var text = model.textForCell(i, rowIndex);\n var visibleIndex = _this5.getVisibleColumn(i);\n var isExpandable = isExpandableGridModel(model) && model.isRowExpandable(rowIndex);\n var isGrouped = groupedColumns.find(c => c.name === name) != null;\n dataMap[name] = {\n value,\n text,\n type,\n isGrouped,\n isExpandable,\n visibleIndex\n };\n };\n for (var i = 0; i < columns.length; i += 1) {\n _loop();\n }\n return dataMap;\n }\n handleAdvancedFilterChange(column, filter, options) {\n var {\n model\n } = this.props;\n var index = model.getColumnIndexByName(column.name);\n assertNotNull(index);\n this.setAdvancedFilter(index, filter, options);\n }\n handleAdvancedFilterSortChange(column, direction) {\n var _this$grid17;\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$grid17 = this.grid) === null || _this$grid17 === void 0 ? void 0 : _this$grid17.forceUpdate();\n }\n handleAdvancedFilterDone() {\n var _this$grid18;\n (_this$grid18 = this.grid) === null || _this$grid18 === void 0 ? void 0 : _this$grid18.focus();\n }\n handleAdvancedMenuOpened(column) {\n this.setState({\n shownAdvancedFilter: column\n });\n }\n handleGotoRowOpened() {\n this.setState({\n isGotoShown: true,\n gotoValueManuallyChanged: false\n });\n }\n handleGotoRowClosed() {\n this.setState({\n isGotoShown: false,\n gotoValueManuallyChanged: false\n });\n }\n handleAdvancedMenuClosed(columnIndex) {\n var _this$filterInputRef;\n var {\n focusedFilterBarColumn,\n isFilterBarShown\n } = this.state;\n if (isFilterBarShown && focusedFilterBarColumn === columnIndex && ((_this$filterInputRef = this.filterInputRef) === null || _this$filterInputRef === void 0 ? void 0 : _this$filterInputRef.current) !== null) {\n var _this$filterInputRef2;\n (_this$filterInputRef2 = this.filterInputRef) === null || _this$filterInputRef2 === void 0 ? void 0 : _this$filterInputRef2.current.focus();\n this.setState({\n shownAdvancedFilter: null\n });\n } else {\n this.setState({\n focusedFilterBarColumn: null,\n shownAdvancedFilter: null\n });\n }\n }\n handleCancel() {\n this.rollback();\n }\n\n // eslint-disable-next-line class-methods-use-this\n handleChartChange() {\n // TODO: IDS-4242 Update Chart Preview\n }\n handleChartCreate(settings) {\n var {\n model,\n onCreateChart\n } = this.props;\n onCreateChart(settings, model);\n }\n handleGridError(error) {\n log.warn('Grid Error', error);\n this.setState({\n toastMessage: /*#__PURE__*/_jsx(\"div\", {\n className: \"error-message\",\n children: \"\".concat(error)\n })\n });\n }\n handleFilterBarChange(value) {\n this.startLoading('Filtering...', {\n resetRanges: true\n });\n this.setState(_ref15 => {\n var {\n focusedFilterBarColumn,\n quickFilters\n } = _ref15;\n var newQuickFilters = new Map(quickFilters);\n if (focusedFilterBarColumn != null) {\n var modelIndex = this.getModelColumn(focusedFilterBarColumn);\n assertNotNull(modelIndex);\n this.applyQuickFilter(modelIndex, value, newQuickFilters);\n }\n return {\n quickFilters: newQuickFilters\n };\n });\n }\n handleFilterBarDone() {\n var setGridFocus = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n var defocusInput = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n if (setGridFocus) {\n var _this$grid19;\n (_this$grid19 = this.grid) === null || _this$grid19 === void 0 ? void 0 : _this$grid19.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 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(_ref16 => {\n var {\n openOptions\n } = _ref16;\n var newOptions = [...openOptions];\n newOptions.pop();\n return {\n openOptions: newOptions\n };\n });\n }\n handleMenuSelect(option) {\n this.setState(_ref17 => {\n var {\n openOptions\n } = _ref17;\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$grid20;\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$grid20 = this.grid) === null || _this$grid20 === void 0 ? void 0 : _this$grid20.forceUpdate();\n this.stopLoading();\n }\n handleViewChanged(metrics) {\n var _this$grid$state, _this$grid21;\n var {\n model\n } = this.props;\n var {\n selectionEndRow = 0\n } = (_this$grid$state = (_this$grid21 = this.grid) === null || _this$grid21 === void 0 ? void 0 : _this$grid21.state) !== null && _this$grid$state !== void 0 ? _this$grid$state : {};\n var pendingRowCount = 0;\n if (isEditableGridModel(model) && model.isEditable) {\n assertNotNull(metrics);\n var {\n bottomViewport\n } = metrics;\n\n // We have an editable table that we can add new rows to\n // Display empty rows beneath the table rows that user can fill in\n var bottomNonFloating = model.rowCount - model.floatingBottomRowCount;\n if (selectionEndRow === bottomNonFloating - 1) {\n // Selection is in the last row, add another blank row\n pendingRowCount = model.pendingRowCount + 1;\n } else if (selectionEndRow === bottomNonFloating - 2) {\n // We may have just added a row based on selection moving, so just leave it as is\n pendingRowCount = model.pendingRowCount;\n } else {\n // Otherwise fill up the viewport with empty cells\n pendingRowCount = Math.max(0, bottomViewport - (model.rowCount - model.pendingRowCount) - model.floatingTopRowCount - model.floatingBottomRowCount - 1);\n }\n }\n this.setState({\n metrics,\n pendingRowCount\n });\n }\n handleSelectionChanged(selectedRanges) {\n var _this$grid22;\n assertNotNull(selectedRanges);\n var {\n onSelectionChanged\n } = this.props;\n var {\n copyOperation\n } = this.state;\n this.setState({\n selectedRanges\n });\n if (copyOperation != null) {\n this.setState({\n copyOperation: null\n });\n }\n if (((_this$grid22 = this.grid) === null || _this$grid22 === void 0 ? void 0 : _this$grid22.state.cursorRow) != null) {\n this.setState({\n gotoRow: \"\".concat(this.grid.state.cursorRow + 1)\n });\n }\n onSelectionChanged(selectedRanges);\n }\n handleMovedColumnsChanged(movedColumns, onChangeApplied) {\n this.setState({\n movedColumns\n }, onChangeApplied);\n }\n handleHeaderGroupsChanged(columnHeaderGroups) {\n var {\n model\n } = this.props;\n this.setState({\n columnHeaderGroups: IrisGridUtils.parseColumnHeaderGroups(model, columnHeaderGroups).groups\n }, () => {\n var _this$grid23;\n return (_this$grid23 = this.grid) === null || _this$grid23 === void 0 ? void 0 : _this$grid23.forceUpdate();\n });\n }\n handleTooltipRef(tooltip) {\n // Need to start the timer right away, since we're creating the tooltip when we want the timer to start\n if (tooltip != null) {\n tooltip.startTimer();\n }\n this.tooltip = tooltip;\n }\n handleConditionalFormatsChange(conditionalFormats) {\n log.debug('Updated conditional formats', conditionalFormats);\n this.setState({\n conditionalFormats\n });\n }\n handleConditionalFormatCreate() {\n log.debug('Create new conditional format');\n var {\n openOptions,\n conditionalFormats\n } = this.state;\n this.setState({\n openOptions: [...openOptions, {\n type: OptionType.CONDITIONAL_FORMATTING_EDIT,\n title: \"Create Formatting Rule\"\n }],\n conditionalFormatEditIndex: conditionalFormats.length,\n // Start with a blank rule\n conditionalFormatPreview: undefined\n });\n }\n handleConditionalFormatEdit(index) {\n log.debug('Edit conditional format', index);\n var {\n openOptions,\n conditionalFormats\n } = this.state;\n this.setState({\n openOptions: [...openOptions, {\n type: OptionType.CONDITIONAL_FORMATTING_EDIT,\n title: \"Edit Formatting Rule\"\n }],\n conditionalFormatEditIndex: index,\n // Clone rule to preview temporary changes\n conditionalFormatPreview: _objectSpread({}, conditionalFormats[index])\n });\n }\n\n // Apply live changes\n\n handleConditionalFormatEditorSave(config) {\n log.debug('Save conditional format changes', config);\n this.setState(state => {\n if (state.conditionalFormatEditIndex === null) {\n log.debug('Invalid format index');\n return null;\n }\n var conditionalFormats = [...state.conditionalFormats];\n conditionalFormats[state.conditionalFormatEditIndex] = config;\n return {\n conditionalFormats\n };\n }, () => {\n this.handleMenuBack();\n });\n }\n handleConditionalFormatEditorCancel() {\n this.handleMenuBack();\n // Not resetting conditionalFormatPreview here\n // to prevent editor fields change during the menu transition\n this.setState({\n conditionalFormatEditIndex: null\n });\n }\n handleUpdateCustomColumns(customColumns) {\n log.info(\"handleUpdateCustomColumns:\", customColumns);\n var {\n model\n } = this.props;\n var {\n movedColumns,\n sorts,\n quickFilters,\n advancedFilters,\n selectDistinctColumns\n } = this.state;\n var {\n columns\n } = model;\n var oldCustomColumns = model.customColumns.map(customColumn => \"\".concat(customColumn));\n var removedColumnNames = IrisGridUtils.getRemovedCustomColumnNames(oldCustomColumns, customColumns);\n if (removedColumnNames.length > 0) {\n var newSorts = IrisGridUtils.removeSortsInColumns(sorts, removedColumnNames);\n var newQuickFilters = IrisGridUtils.removeFiltersInColumns(columns, quickFilters, removedColumnNames);\n var newAdvancedFilters = IrisGridUtils.removeFiltersInColumns(columns, advancedFilters, removedColumnNames);\n var newMovedColumns = IrisGridUtils.removeColumnFromMovedColumns(columns, movedColumns, removedColumnNames);\n var newSelectDistinctColumns = IrisGridUtils.removeColumnsFromSelectDistinctColumns(selectDistinctColumns, removedColumnNames);\n if (newSorts.length !== sorts.length) {\n log.debug('removing sorts from removed custom columns...');\n this.setState({\n sorts: newSorts\n });\n }\n if (newQuickFilters.size !== quickFilters.size || newAdvancedFilters.size !== advancedFilters.size) {\n log.debug(\"removing filters from removed custom columns...\");\n this.setState({\n quickFilters: newQuickFilters,\n advancedFilters: newAdvancedFilters\n });\n }\n if (!deepEqual(movedColumns, newMovedColumns)) {\n log.debug(\"change moved columns for removed custom columns\", newMovedColumns);\n this.setState({\n movedColumns: newMovedColumns\n });\n }\n if (!deepEqual(selectDistinctColumns, newSelectDistinctColumns)) {\n log.debug(\"change selectDistinct columns for removed custom columns\", newMovedColumns);\n this.setState({\n selectDistinctColumns: newSelectDistinctColumns\n });\n }\n }\n this.setState({\n customColumns\n });\n if (customColumns.length > 0) {\n // If there are no custom columns, the change handler never fires\n // This causes the loader to stay until canceled by the user\n this.startLoading('Applying custom columns...');\n }\n }\n handleCustomColumnsChanged() {\n log.debug('custom columns changed');\n var {\n isReady\n } = this.state;\n if (isReady) {\n var _this$grid24;\n this.stopLoading();\n (_this$grid24 = this.grid) === null || _this$grid24 === void 0 ? void 0 : _this$grid24.forceUpdate();\n } else {\n this.loadTableState();\n }\n }\n handlePendingCommitClicked() {\n return this.commitPending();\n }\n handlePendingDiscardClicked() {\n return this.discardPending();\n }\n handlePendingDataUpdated() {\n var _this$grid25;\n log.debug('pending data updated');\n var {\n model\n } = this.props;\n var {\n pendingDataMap,\n pendingDataErrors\n } = model;\n this.setState({\n pendingDataMap,\n pendingDataErrors,\n pendingSaveError: null\n });\n (_this$grid25 = this.grid) === null || _this$grid25 === void 0 ? void 0 : _this$grid25.forceUpdate();\n }\n handleResizeColumn(modelIndex) {\n var _this$grid26;\n var {\n metrics,\n metricCalculator\n } = this.state;\n if (!metrics) throw new Error('Metrics not set');\n var contentWidth = getOrThrow(metrics.contentColumnWidths, modelIndex);\n var userWidths = metricCalculator.getUserColumnWidths();\n if (userWidths.has(modelIndex)) {\n metricCalculator.resetColumnWidth(modelIndex);\n metricCalculator.setCalculatedColumnWidth(modelIndex, contentWidth);\n } else {\n metricCalculator.setColumnWidth(modelIndex, contentWidth);\n }\n (_this$grid26 = this.grid) === null || _this$grid26 === void 0 ? void 0 : _this$grid26.forceUpdate();\n }\n handleResizeAllColumns() {\n var _this$grid27;\n var {\n metrics,\n metricCalculator\n } = this.state;\n if (!metrics) throw new Error('Metrics not set');\n var allColumns = [...metrics.allColumnWidths.entries()];\n var visibleColumns = allColumns.filter(_ref18 => {\n var [_, width] = _ref18;\n return width !== 0;\n }).map(_ref19 => {\n var [modelIndex] = _ref19;\n return modelIndex;\n });\n var contentWidths = metrics.contentColumnWidths;\n var userWidths = metricCalculator.getUserColumnWidths();\n var manualColumns = visibleColumns.filter(modelIndex => userWidths.has(modelIndex));\n if (visibleColumns.length === manualColumns.length) {\n // All columns are manually sized, flip all to auto resize\n for (var i = 0; i < visibleColumns.length; i += 1) {\n var modelIndex = visibleColumns[i];\n var contentWidth = getOrThrow(contentWidths, modelIndex);\n metricCalculator.resetColumnWidth(modelIndex);\n metricCalculator.setCalculatedColumnWidth(modelIndex, contentWidth);\n }\n } else {\n // Flip all to manual sized\n for (var _i3 = 0; _i3 < visibleColumns.length; _i3 += 1) {\n var _modelIndex = visibleColumns[_i3];\n var _contentWidth = getOrThrow(contentWidths, _modelIndex);\n metricCalculator.setColumnWidth(_modelIndex, _contentWidth);\n }\n }\n (_this$grid27 = this.grid) === null || _this$grid27 === void 0 ? void 0 : _this$grid27.forceUpdate();\n }\n\n /**\n * User added, removed, or changed the order of aggregations, or position\n * @param aggregationSettings The new aggregation settings\n */\n handleAggregationsChange(aggregationSettings) {\n log.debug('handleAggregationsChange', aggregationSettings);\n this.startLoading(\"Aggregating \".concat(aggregationSettings.aggregations.map(a => a.operation).join(', '), \"...\"));\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 log.debug('handleAggregationChange', aggregation);\n this.startLoading(\"Aggregating \".concat(aggregation.operation, \"...\"));\n this.setState(_ref20 => {\n var {\n aggregationSettings\n } = _ref20;\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$columns, _rollupConfig$columns2;\n log.info('Rollup change', rollupConfig);\n this.resetGridViewState();\n this.showAllColumns();\n this.clearAllFilters();\n this.startLoading(\"Grouping by columns \".concat((_rollupConfig$columns = rollupConfig === null || rollupConfig === void 0 ? void 0 : (_rollupConfig$columns2 = rollupConfig.columns) === null || _rollupConfig$columns2 === void 0 ? void 0 : _rollupConfig$columns2.join(', ')) !== null && _rollupConfig$columns !== void 0 ? _rollupConfig$columns : '', \"...\"));\n\n // Have to clear select distinct since rollup uses the original columns, not the current ones.\n // IrisGridProxyModel has a check to prevent model update\n // when selectDistinctModel is cleared and the rollupConfig is set on the model.\n this.setState({\n rollupConfig,\n movedColumns: [],\n frozenColumns: [],\n sorts: [],\n reverse: false,\n selectDistinctColumns: []\n });\n }\n handleSelectDistinctChanged(columnNames) {\n log.debug('SelectDistinct change', columnNames);\n this.resetGridViewState();\n this.showAllColumns();\n this.clearAllFilters();\n this.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(_ref21 => {\n var {\n aggregationSettings\n } = _ref21;\n var {\n aggregations\n } = aggregationSettings;\n var newAggregations = aggregations.filter(a => a.selected.length > 0 || a.invert);\n if (newAggregations.length !== aggregations.length) {\n return {\n selectedAggregation: null,\n aggregationSettings: _objectSpread(_objectSpread({}, aggregationSettings), {}, {\n aggregations: newAggregations\n })\n };\n }\n return {\n selectedAggregation: null,\n aggregationSettings\n };\n });\n }\n seekRow(inputString) {\n var _arguments = arguments,\n _this6 = this;\n return _asyncToGenerator(function* () {\n var _this6$grid;\n var isBackwards = _arguments.length > 1 && _arguments[1] !== undefined ? _arguments[1] : false;\n var {\n gotoValueSelectedColumnName: selectedColumnName,\n gotoValueSelectedFilter\n } = _this6.state;\n var {\n model\n } = _this6.props;\n var {\n dh\n } = model;\n if (!model.isSeekRowAvailable) {\n return;\n }\n if (inputString === '') {\n return;\n }\n var selectedColumn = IrisGridUtils.getColumnByName(model.columns, selectedColumnName);\n if (selectedColumn === undefined) {\n return;\n }\n var searchFromRow = (_this6$grid = _this6.grid) === null || _this6$grid === void 0 ? void 0 : _this6$grid.state.cursorRow;\n if (searchFromRow == null) {\n searchFromRow = 0;\n }\n var isContains = gotoValueSelectedFilter === FilterType.contains || gotoValueSelectedFilter === FilterType.containsIgnoreCase;\n var isIgnoreCase = gotoValueSelectedFilter === FilterType.eqIgnoreCase || gotoValueSelectedFilter === FilterType.containsIgnoreCase;\n try {\n var _this6$grid2;\n var {\n formatter\n } = model;\n var columnDataType = TableUtils.getNormalizedType(selectedColumn.type);\n var rowIndex;\n switch (columnDataType) {\n case TableUtils.dataType.CHAR:\n case TableUtils.dataType.STRING:\n {\n rowIndex = yield model.seekRow(searchFromRow, selectedColumn, dh.ValueType.STRING, inputString, isIgnoreCase, isContains, isBackwards !== null && isBackwards !== void 0 ? isBackwards : false);\n break;\n }\n case TableUtils.dataType.DATETIME:\n {\n var [startDate] = DateUtils.parseDateRange(dh, inputString, formatter.timeZone);\n rowIndex = yield model.seekRow(searchFromRow, selectedColumn, dh.ValueType.DATETIME, startDate, undefined, undefined, isBackwards !== null && isBackwards !== void 0 ? isBackwards : false);\n break;\n }\n case TableUtils.dataType.DECIMAL:\n case TableUtils.dataType.INT:\n {\n if (!TableUtils.isBigDecimalType(selectedColumn.type) && !TableUtils.isBigIntegerType(selectedColumn.type)) {\n var inputValue = parseInt(inputString, 10);\n if (inputString === '-Infinity') {\n inputValue = Number.NEGATIVE_INFINITY;\n } else if (inputString === 'Infinity') {\n inputValue = Number.POSITIVE_INFINITY;\n }\n rowIndex = yield model.seekRow(searchFromRow, selectedColumn, dh.ValueType.NUMBER, inputValue, undefined, undefined, isBackwards !== null && isBackwards !== void 0 ? isBackwards : false);\n } else {\n rowIndex = yield model.seekRow(searchFromRow, selectedColumn, dh.ValueType.STRING, inputString, undefined, undefined, isBackwards !== null && isBackwards !== void 0 ? isBackwards : false);\n }\n break;\n }\n default:\n {\n rowIndex = yield model.seekRow(searchFromRow, selectedColumn, dh.ValueType.STRING, _this6.tableUtils.makeValue(selectedColumn.type, inputString, formatter.timeZone), undefined, undefined, isBackwards !== null && isBackwards !== void 0 ? isBackwards : false);\n }\n }\n (_this6$grid2 = _this6.grid) === null || _this6$grid2 === void 0 ? void 0 : _this6$grid2.setFocusRow(rowIndex);\n _this6.setState({\n gotoValueError: ''\n });\n } catch (e) {\n _this6.setState({\n gotoValueError: 'invalid input'\n });\n }\n })();\n }\n handleCancelDownloadTable() {\n var _this$tableSaver;\n (_this$tableSaver = this.tableSaver) === null || _this$tableSaver === void 0 ? void 0 : _this$tableSaver.cancelDownload();\n this.setState({\n isTableDownloading: false\n });\n }\n handleDownloadCompleted() {\n this.setState({\n isTableDownloading: false,\n tableDownloadProgress: 100,\n tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.FINISHED\n });\n }\n handleDownloadCanceled() {\n this.setState({\n isTableDownloading: false,\n tableDownloadProgress: 0,\n tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.CANCELED\n });\n }\n\n /**\n * Delete the specified ranges from the table.\n * @param ranges The ranges to delete\n */\n deleteRanges(ranges) {\n var {\n model\n } = this.props;\n if (!isDeletableGridModel(model) || !model.isDeletable) {\n throw new Error('Model does not support deleting ranges');\n }\n this.pending.add(model.delete(ranges)).catch(e => {\n if (!PromiseUtils.isCanceled(e)) {\n log.error('Unable to delete ranges', ranges, e);\n }\n });\n }\n resetColumnSelection() {\n if (this.grid == null) {\n return;\n }\n var {\n isSelectingColumn\n } = this.props;\n if (isSelectingColumn) {\n var {\n columnAllowedCursor\n } = this.props;\n this.grid.setState({\n cursor: columnAllowedCursor\n });\n } else {\n this.grid.setState({\n cursor: null\n });\n this.setState({\n hoverSelectColumn: null\n });\n }\n }\n resetGridViewState() {\n var forceUpdate = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n if (!this.grid) {\n return;\n }\n this.grid.clearSelectedRanges();\n this.grid.setViewState({\n left: 0,\n top: 0,\n topOffset: 0,\n leftOffset: 0\n }, forceUpdate);\n }\n sendStateChange() {\n if (!this.grid) {\n return;\n }\n var {\n state: irisGridState\n } = this;\n var {\n state: gridState\n } = this.grid;\n var {\n onStateChange\n } = this.props;\n onStateChange(irisGridState, gridState);\n }\n handleOverflowClose() {\n this.setState({\n showOverflowModal: false\n });\n }\n handleOpenNoPastePermissionModal(errorMessage) {\n this.setState({\n showNoPastePermissionModal: true,\n noPastePermissionError: errorMessage\n });\n }\n handleCloseNoPastePermissionModal() {\n this.setState({\n showNoPastePermissionModal: false\n });\n }\n getColumnBoundingRect() {\n var _this$gridWrapper2;\n var {\n metrics,\n shownColumnTooltip\n } = this.state;\n assertNotNull(metrics);\n assertNotNull(shownColumnTooltip);\n var gridRect = (_this$gridWrapper2 = this.gridWrapper) === null || _this$gridWrapper2 === void 0 ? void 0 : _this$gridWrapper2.getBoundingClientRect();\n var popperMargin = 20;\n assertNotNull(gridRect);\n var {\n columnHeaderHeight,\n allColumnXs,\n allColumnWidths,\n width,\n columnHeaderMaxDepth\n } = metrics;\n var columnX = allColumnXs.get(shownColumnTooltip);\n var columnWidth = allColumnWidths.get(shownColumnTooltip);\n assertNotNull(columnX);\n assertNotNull(columnWidth);\n var left = gridRect.left + clamp(columnX + columnWidth / 2, popperMargin, width - popperMargin);\n return {\n top: gridRect.top + (columnHeaderMaxDepth - 1) * columnHeaderHeight,\n left: gridRect.left + clamp(columnX + columnWidth / 2, popperMargin, width - popperMargin),\n bottom: gridRect.top + columnHeaderMaxDepth * columnHeaderHeight,\n right: gridRect.left + clamp(columnX + columnWidth / 2, popperMargin, width - popperMargin) + 1,\n width: 1,\n height: columnHeaderHeight,\n x: left,\n y: gridRect.top,\n toJSON: () => {\n throw new Error('not implemented');\n }\n };\n }\n handleGotoRowSelectedRowNumberSubmit() {\n var {\n gotoRow: rowNumber\n } = this.state;\n this.focusRowInGrid(rowNumber);\n }\n focusRowInGrid(rowNumber) {\n var {\n model\n } = this.props;\n var {\n rowCount\n } = model;\n this.setState({\n gotoRow: rowNumber\n });\n if (rowNumber === '') {\n this.setState({\n gotoRowError: '',\n gotoValueError: ''\n });\n return;\n }\n var rowInt = parseInt(rowNumber, 10);\n if (rowInt > rowCount || rowInt < -rowCount) {\n this.setState({\n gotoRowError: 'Invalid row index'\n });\n } else if (rowInt === 0) {\n var _this$grid28;\n this.setState({\n gotoRowError: '',\n gotoValueError: ''\n });\n (_this$grid28 = this.grid) === null || _this$grid28 === void 0 ? void 0 : _this$grid28.setFocusRow(0);\n } else if (rowInt < 0) {\n var _this$grid29;\n this.setState({\n gotoRowError: '',\n gotoValueError: ''\n });\n (_this$grid29 = this.grid) === null || _this$grid29 === void 0 ? void 0 : _this$grid29.setFocusRow(rowInt + rowCount);\n } else {\n var _this$grid30;\n (_this$grid30 = this.grid) === null || _this$grid30 === void 0 ? void 0 : _this$grid30.setFocusRow(rowInt - 1);\n this.setState({\n gotoRowError: '',\n gotoValueError: ''\n });\n }\n }\n handleGotoRowSelectedRowNumberChanged(event) {\n var rowNumber = event.target.value;\n this.focusRowInGrid(rowNumber);\n }\n getColumnTooltip(visibleIndex, metrics, model) {\n var {\n columnHeaderHeight,\n columnHeaderMaxDepth,\n allColumnXs,\n allColumnWidths,\n width\n } = metrics;\n var columnX = allColumnXs.get(visibleIndex);\n var columnWidth = allColumnWidths.get(visibleIndex);\n if (columnX == null || columnWidth == null) {\n return null;\n }\n\n /**\n * Create a wrapper dom element, the size of the column header.\n * The wrapper acts as tooltip parent, the tooltip component\n * will trigger hide on mouseleave of wrapper or tooltip.\n * The wrapper should be bound to within the grid dimensions,\n * so popper only remains triggered while mouse is inside the panel.\n */\n var boundedLeft = Math.max(0, columnX);\n var boundedWidth = columnWidth;\n if (columnX + columnWidth > width) {\n // column is extending past right edge\n boundedWidth = width - columnX;\n } else if (columnX < 0) {\n // column is extending past left edge\n boundedWidth = columnWidth - Math.abs(columnX);\n }\n var wrapperStyle = {\n position: 'absolute',\n top: (columnHeaderMaxDepth - 1) * columnHeaderHeight,\n left: boundedLeft,\n width: boundedWidth,\n height: columnHeaderHeight,\n pointerEvents: 'none'\n };\n\n /**\n * Because the popper parent wrapper center is no longer the same as\n * the column label center, we create a popper virtual ref, to handle\n * positioning and keep the popper centered on the label. Creates a\n * 1px x headerHeight virtual object, placed centered on the column\n * label, clamped to 0 + margin to width - margin. We add a margin,\n * otherwise the arrow wants to escape the boundary.\n */\n var virtualReference = {\n clientWidth: 1,\n clientHeight: columnHeaderHeight,\n getBoundingClientRect: this.getColumnBoundingRect\n };\n var popperOptions = {\n placement: 'bottom',\n modifiers: {\n flip: {\n behavior: ['bottom', 'top']\n }\n }\n };\n var modelColumn = this.getModelColumn(visibleIndex);\n if (modelColumn == null) return null;\n var column = model.columns[modelColumn];\n if (column == null) return null;\n return /*#__PURE__*/_jsx(\"div\", {\n style: wrapperStyle,\n children: /*#__PURE__*/_jsx(Tooltip, {\n timeout: 400,\n interactive: true,\n options: popperOptions,\n ref: this.handleTooltipRef,\n referenceObject: virtualReference,\n onExited: () => {\n this.setState({\n shownColumnTooltip: null\n });\n },\n children: /*#__PURE__*/_jsx(ColumnStatistics, {\n model: model,\n column: column,\n onStatistics: () => {\n var _this$tooltip;\n (_this$tooltip = this.tooltip) === null || _this$tooltip === void 0 ? void 0 : _this$tooltip.update();\n }\n })\n }, column.name)\n });\n }\n handleGotoValueSelectedColumnNameChanged(columnName) {\n var _this$grid31;\n var {\n model\n } = this.props;\n var cursorRow = (_this$grid31 = this.grid) === null || _this$grid31 === void 0 ? void 0 : _this$grid31.state.cursorRow;\n var {\n gotoValueSelectedColumnName: prevColumnName,\n gotoValueManuallyChanged\n } = this.state;\n if (cursorRow != null) {\n var _index = model.getColumnIndexByName(columnName);\n var _column2 = IrisGridUtils.getColumnByName(model.columns, columnName);\n var prevColumn = IrisGridUtils.getColumnByName(model.columns, prevColumnName);\n if (_index == null || _column2 == null) {\n return;\n }\n var _value3 = model.valueForCell(_index, cursorRow);\n var text = IrisGridUtils.convertValueToText(_value3, _column2.type);\n\n // do NOT update value if user manually changed value AND column type remains the same\n if (gotoValueManuallyChanged && _column2.type === (prevColumn === null || prevColumn === void 0 ? void 0 : prevColumn.type)) {\n this.setState({\n gotoValueSelectedColumnName: columnName,\n gotoValueError: ''\n });\n } else {\n // do update, and set goToValueManuallyChanged to false because value was automatically changed\n this.setState({\n gotoValueSelectedColumnName: columnName,\n gotoValue: text,\n gotoValueError: '',\n gotoValueManuallyChanged: false\n });\n }\n }\n this.setState({\n gotoValueSelectedColumnName: columnName,\n gotoValueError: ''\n });\n }\n handleGotoValueSelectedFilterChanged(value) {\n this.setState({\n gotoValueSelectedFilter: value,\n gotoValueError: ''\n });\n }\n handleGotoValueSubmitted(isBackwards) {\n var {\n gotoValue\n } = this.state;\n this.seekRow(gotoValue, isBackwards);\n }\n render() {\n var _rollupConfig$columns3,\n _rollupConfig$columns4,\n _this7 = this,\n _this$grid33,\n _this$grid33$state$dr,\n _openOptions;\n var {\n children,\n customFilters,\n getDownloadWorker,\n isSelectingColumn,\n isStuckToBottom,\n isStuckToRight,\n model,\n name,\n onlyFetchVisibleColumns,\n alwaysFetchColumns,\n advancedSettings,\n onAdvancedSettingsChange,\n canDownloadCsv,\n onCreateChart\n } = this.props;\n var {\n metricCalculator,\n metrics,\n isFilterBarShown,\n isSelectingPartition,\n isMenuShown,\n isReady,\n copyOperation,\n focusedFilterBarColumn,\n loadingText,\n loadingScrimProgress,\n loadingSpinnerShown,\n loadingCancelShown,\n loadingBlocksGrid,\n shownColumnTooltip,\n hoverAdvancedFilter,\n shownAdvancedFilter,\n hoverSelectColumn,\n quickFilters,\n advancedFilters,\n searchFilter,\n selectDistinctColumns,\n movedColumns,\n movedRows,\n formatter,\n conditionalFormats,\n conditionalFormatPreview,\n conditionalFormatEditIndex,\n 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(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$columns3 = rollupConfig === null || rollupConfig === void 0 ? void 0 : (_rollupConfig$columns4 = rollupConfig.columns) === null || _rollupConfig$columns4 === void 0 ? void 0 : _rollupConfig$columns4.length) !== null && _rollupConfig$columns3 !== void 0 ? _rollupConfig$columns3 : 0) > 0;\n var focusField = null;\n var debounceMs = metrics ? Math.min(Math.max(IrisGrid.minDebounce, Math.round(metrics.rowCount / 200)), IrisGrid.maxDebounce) : IrisGrid.maxDebounce;\n if (isFilterBarShown && focusedFilterBarColumn != null && metrics != null) {\n var {\n gridX,\n gridY,\n allColumnXs,\n allColumnWidths,\n width\n } = metrics;\n var columnX = allColumnXs.get(focusedFilterBarColumn);\n var columnWidth = allColumnWidths.get(focusedFilterBarColumn);\n if (columnX != null && columnWidth != null) {\n var _theme$filterBarHeigh, _theme$filterBarHeigh2, _this$grid32;\n var x = gridX + columnX;\n var y = gridY - ((_theme$filterBarHeigh = theme.filterBarHeight) !== null && _theme$filterBarHeigh !== void 0 ? _theme$filterBarHeigh : 0);\n var fieldWidth = columnWidth + 1; // cover right border\n var fieldHeight = ((_theme$filterBarHeigh2 = theme.filterBarHeight) !== null && _theme$filterBarHeigh2 !== void 0 ? _theme$filterBarHeigh2 : 0) - 1; // remove bottom border\n var style = {\n top: y,\n left: x,\n minWidth: Math.min(fieldWidth, width - x),\n // Don't cause overflow\n height: fieldHeight\n };\n var _value4 = '';\n var isValid = true;\n var modelColumn = this.getModelColumn(focusedFilterBarColumn);\n assertNotNull(modelColumn);\n var quickFilter = quickFilters.get(modelColumn);\n var advancedFilter = advancedFilters.get(modelColumn);\n if (quickFilter != null) {\n _value4 = quickFilter.text;\n isValid = quickFilter.filter != null;\n }\n var isBarFiltered = quickFilters.size !== 0 || advancedFilters.size !== 0;\n focusField = /*#__PURE__*/_jsx(FilterInputField, {\n ref: this.filterInputRef,\n style: style,\n className: classNames({\n error: !isValid,\n active: _value4 !== '' || advancedFilter != null,\n 'iris-grid-has-filter': isBarFiltered\n }),\n isAdvancedFilterSet: advancedFilter != null,\n onAdvancedFiltersTriggered: () => {\n this.setState({\n shownAdvancedFilter: focusedFilterBarColumn\n });\n },\n onChange: this.handleFilterBarChange,\n onDone: this.handleFilterBarDone,\n onTab: this.handleFilterBarTab,\n onContextMenu: (_this$grid32 = this.grid) === null || _this$grid32 === void 0 ? void 0 : _this$grid32.handleContextMenu,\n debounceMs: debounceMs,\n value: _value4\n }, focusedFilterBarColumn);\n }\n }\n var loadingElement = null;\n if (loadingText != null) {\n var loadingStatus = /*#__PURE__*/_jsxs(\"div\", {\n className: \"iris-grid-loading-status\",\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: classNames('iris-grid-loading-status-bar', {\n show: loadingSpinnerShown\n }),\n children: loadingText\n }), /*#__PURE__*/_jsxs(\"button\", {\n type: \"button\",\n onClick: this.handleCancel,\n className: classNames('iris-grid-btn-cancel', {\n show: loadingCancelShown\n }),\n children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsClose,\n transform: \"down-1\"\n }), \"Cancel\"]\n })]\n });\n var _gridY = metrics ? metrics.gridY : 0;\n loadingElement = /*#__PURE__*/_jsx(\"div\", {\n className: \"iris-grid-loading\",\n style: loadingBlocksGrid ? {\n top: _gridY\n } : {},\n children: loadingStatus\n });\n }\n var columnTooltip = null;\n if (shownColumnTooltip != null && metrics) {\n var _this$tooltip2;\n columnTooltip = this.getColumnTooltip(shownColumnTooltip, metrics, model);\n // #510 We may need to update the position of the tooltip if it's already opened and columns are resized\n (_this$tooltip2 = this.tooltip) === null || _this$tooltip2 === void 0 ? void 0 : _this$tooltip2.update();\n }\n var filterBar = [];\n if (metrics && isFilterBarShown) {\n var {\n gridX: _gridX,\n gridY: _gridY2,\n visibleColumns,\n allColumnXs: _allColumnXs,\n allColumnWidths: _allColumnWidths\n } = metrics;\n var {\n filterBarHeight\n } = theme;\n var _loop2 = function _loop2() {\n var columnIndex = visibleColumns[i];\n var columnX = _allColumnXs.get(columnIndex);\n var columnWidth = _allColumnWidths.get(columnIndex);\n var modelColumn = _this7.getModelColumn(columnIndex);\n if (modelColumn != null) {\n var isFilterable = model.isFilterable(modelColumn);\n if (isFilterable && columnX != null && columnWidth != null && columnWidth > 0) {\n var _x = _gridX + columnX + columnWidth - 24;\n var _y = _gridY2 - (filterBarHeight !== null && filterBarHeight !== void 0 ? filterBarHeight : 0) + 2; // 2 acts as top margin for the button\n var _style = {\n position: 'absolute',\n top: _y,\n left: _x\n };\n var _advancedFilter = advancedFilters.get(modelColumn);\n var isFilterSet = _advancedFilter != null;\n var isFilterVisible = columnIndex === hoverAdvancedFilter || columnIndex === focusedFilterBarColumn || isFilterSet;\n var element = /*#__PURE__*/_jsx(\"div\", {\n className: classNames('advanced-filter-button-container', {\n hidden: !isFilterVisible\n }),\n style: _style,\n children: isFilterVisible && /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: classNames('btn-link-icon advanced-filter-button', {\n 'filter-set': isFilterSet\n }),\n onClick: () => {\n _this7.setState({\n shownAdvancedFilter: columnIndex\n });\n },\n onContextMenu: event => {\n var _this7$grid;\n (_this7$grid = _this7.grid) === null || _this7$grid === void 0 ? void 0 : _this7$grid.handleContextMenu(event);\n },\n onMouseEnter: () => {\n _this7.setState({\n hoverAdvancedFilter: columnIndex\n });\n },\n onMouseLeave: () => {\n _this7.setState({\n hoverAdvancedFilter: null\n });\n },\n children: /*#__PURE__*/_jsxs(\"div\", {\n className: \"fa-layers\",\n children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: dhFilterFilled,\n className: \"filter-solid\"\n }), /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsFilter,\n className: \"filter-light\"\n })]\n })\n })\n }, columnIndex);\n filterBar.push(element);\n }\n }\n };\n for (var i = 0; i < visibleColumns.length; i += 1) {\n _loop2();\n }\n }\n var advancedFilterMenus = [];\n if (metrics) {\n var {\n gridX: _gridX2,\n visibleColumns: _visibleColumns,\n allColumnXs: _allColumnXs2,\n allColumnWidths: _allColumnWidths2,\n columnHeaderHeight\n } = metrics;\n var _loop3 = function _loop3() {\n var columnIndex = _visibleColumns[_i4];\n var columnX = _allColumnXs2.get(columnIndex);\n var columnWidth = _allColumnWidths2.get(columnIndex);\n if (columnX != null && columnWidth != null && columnWidth > 0) {\n var xColumnHeader = _gridX2 + columnX;\n var xFilterBar = _gridX2 + columnX + columnWidth - 20;\n var _style2 = isFilterBarShown ? {\n position: 'absolute',\n top: columnHeaderHeight,\n left: xFilterBar,\n width: 20,\n height: theme.filterBarHeight\n } : {\n position: 'absolute',\n top: 0,\n left: xColumnHeader,\n width: columnWidth,\n height: columnHeaderHeight\n };\n var _modelColumn = _this7.getModelColumn(columnIndex);\n if (_modelColumn != null) {\n var _column3 = model.columns[_modelColumn];\n if (_column3 == null) {\n // Grid metrics is likely out of sync with model\n log.warn(\"Column does not exist at index \".concat(_modelColumn, \" for column array of length \").concat(model.columns.length));\n // eslint-disable-next-line no-continue\n return \"continue\";\n }\n var _advancedFilter2 = advancedFilters.get(_modelColumn);\n var {\n options: advancedFilterOptions\n } = _advancedFilter2 || {};\n var sort = TableUtils.getSortForColumn(model.sort, _column3.name);\n var sortDirection = sort ? sort.direction : null;\n if (!isSortDirection(sortDirection)) {\n throw new Error(\"Invalid sort direction: \".concat(sortDirection));\n }\n var element = /*#__PURE__*/_jsx(\"div\", {\n className: \"advanced-filter-menu-container\",\n style: _style2,\n children: /*#__PURE__*/_jsx(Popper, {\n className: \"advanced-filter-menu-popper\",\n onEntered: _this7.getAdvancedMenuOpenedHandler(columnIndex),\n onExited: () => {\n _this7.handleAdvancedMenuClosed(columnIndex);\n },\n isShown: shownAdvancedFilter === columnIndex,\n interactive: true,\n closeOnBlur: true,\n options: {\n positionFixed: true\n },\n children: _this7.getCachedAdvancedFilterMenuActions(model, _column3, advancedFilterOptions, sortDirection, formatter)\n })\n }, columnIndex);\n advancedFilterMenus.push(element);\n }\n }\n };\n for (var _i4 = 0; _i4 < _visibleColumns.length; _i4 += 1) {\n var _ret = _loop3();\n if (_ret === \"continue\") continue;\n }\n }\n var optionItems = this.getCachedOptionItems(onCreateChart !== undefined && model.isChartBuilderAvailable, model.isCustomColumnsAvailable, model.isFormatColumnsAvailable, model.isRollupAvailable, model.isTotalsAvailable || isRollup, model.isSelectDistinctAvailable, model.isExportAvailable, this.toggleFilterBarAction, this.toggleSearchBarAction, this.toggleGotoRowAction, isFilterBarShown, showSearchBar, canDownloadCsv, this.isTableSearchAvailable(), isGotoShown, advancedSettings.size > 0);\n var hiddenColumns = this.getCachedHiddenColumns(metricCalculator, userColumnWidths);\n var openOptionsStack = openOptions.map(option => {\n switch (option.type) {\n case OptionType.CHART_BUILDER:\n return /*#__PURE__*/_jsx(ChartBuilder, {\n model: model,\n onChange: this.handleChartChange,\n onSubmit: this.handleChartCreate\n }, OptionType.CHART_BUILDER);\n case OptionType.VISIBILITY_ORDERING_BUILDER:\n return /*#__PURE__*/_jsx(VisibilityOrderingBuilder, {\n model: model,\n movedColumns: movedColumns,\n hiddenColumns: hiddenColumns,\n columnHeaderGroups: columnHeaderGroups,\n onColumnVisibilityChanged: this.handleColumnVisibilityChanged,\n onReset: this.handleColumnVisibilityReset,\n onMovedColumnsChanged: this.handleMovedColumnsChanged,\n onColumnHeaderGroupChanged: this.handleHeaderGroupsChanged\n }, OptionType.VISIBILITY_ORDERING_BUILDER);\n case OptionType.CONDITIONAL_FORMATTING:\n return /*#__PURE__*/_jsx(ConditionalFormattingMenu, {\n rules: conditionalFormats,\n onChange: this.handleConditionalFormatsChange,\n onCreate: this.handleConditionalFormatCreate,\n onSelect: this.handleConditionalFormatEdit\n });\n case OptionType.CONDITIONAL_FORMATTING_EDIT:\n assertNotNull(model.columns);\n assertNotNull(this.handleConditionalFormatEditorUpdate);\n return /*#__PURE__*/_jsx(ConditionalFormatEditor, {\n dh: model.dh,\n columns: model.columns,\n rule: conditionalFormatPreview,\n onUpdate: this.handleConditionalFormatEditorUpdate,\n onSave: this.handleConditionalFormatEditorSave,\n onCancel: this.handleConditionalFormatEditorCancel\n });\n case OptionType.CUSTOM_COLUMN_BUILDER:\n return /*#__PURE__*/_jsx(CustomColumnBuilder, {\n model: model,\n customColumns: customColumns,\n onSave: this.handleUpdateCustomColumns,\n onCancel: this.handleMenuBack\n }, OptionType.CUSTOM_COLUMN_BUILDER);\n case OptionType.ROLLUP_ROWS:\n return /*#__PURE__*/_jsx(RollupRows, {\n model: model,\n onChange: this.handleRollupChange,\n config: rollupConfig\n }, OptionType.ROLLUP_ROWS);\n case OptionType.AGGREGATIONS:\n return /*#__PURE__*/_jsx(Aggregations, {\n settings: aggregationSettings,\n isRollup: isRollup,\n onChange: this.handleAggregationsChange,\n onEdit: this.handleAggregationEdit\n });\n case OptionType.AGGREGATION_EDIT:\n return selectedAggregation && /*#__PURE__*/_jsx(AggregationEdit, {\n aggregation: selectedAggregation,\n columns: model.originalColumns,\n onChange: this.handleAggregationChange\n });\n case OptionType.TABLE_EXPORTER:\n return /*#__PURE__*/_jsx(TableCsvExporter, {\n model: model,\n name: name,\n userColumnWidths: userColumnWidths,\n movedColumns: movedColumns,\n isDownloading: isTableDownloading,\n tableDownloadStatus: tableDownloadStatus,\n tableDownloadProgress: tableDownloadProgress,\n tableDownloadEstimatedTime: tableDownloadEstimatedTime !== null && tableDownloadEstimatedTime !== void 0 ? tableDownloadEstimatedTime : undefined,\n onDownload: this.handleDownloadTable,\n onDownloadStart: this.handleDownloadTableStart,\n onCancel: this.handleCancelDownloadTable,\n selectedRanges: selectedRanges\n }, OptionType.TABLE_EXPORTER);\n case OptionType.SELECT_DISTINCT:\n return /*#__PURE__*/_jsx(SelectDistinctBuilder, {\n model: model,\n selectDistinctColumns: selectDistinctColumns,\n onChange: this.handleSelectDistinctChanged\n });\n case OptionType.ADVANCED_SETTINGS:\n return /*#__PURE__*/_jsx(AdvancedSettingsMenu, {\n items: advancedSettings,\n onChange: onAdvancedSettingsChange\n });\n default:\n throw Error(\"Unexpected option type \".concat(option.type));\n }\n });\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"iris-grid\",\n role: \"presentation\",\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"iris-grid-column\",\n children: [children != null && /*#__PURE__*/_jsx(\"div\", {\n className: \"iris-grid-bar\",\n children: children\n }), /*#__PURE__*/_jsx(CSSTransition, {\n in: isSelectingPartition,\n timeout: ThemeExport.transitionSlowMs,\n classNames: \"iris-grid-bar-horizontal\",\n onEnter: this.handleAnimationStart,\n onEntered: this.handleAnimationEnd,\n onExit: this.handleAnimationStart,\n onExited: this.handleAnimationEnd,\n mountOnEnter: true,\n unmountOnExit: true,\n children: /*#__PURE__*/_jsx(\"div\", {\n className: \"iris-grid-partition-selector-wrapper iris-grid-bar iris-grid-bar-primary\",\n children: isPartitionedGridModel(model) && model.isPartitionRequired && /*#__PURE__*/_jsx(IrisGridPartitionSelector, {\n model: model,\n partitionConfig: partitionConfig,\n onChange: this.handlePartitionChange\n })\n })\n }), /*#__PURE__*/_jsx(CSSTransition, {\n in: showSearchBar,\n timeout: ThemeExport.transitionSlowMs,\n classNames: \"iris-grid-bar-horizontal\",\n onEnter: this.handleAnimationStart,\n onEntered: this.handleAnimationEnd,\n onExit: this.handleAnimationStart,\n onExited: this.handleAnimationEnd,\n mountOnEnter: true,\n unmountOnExit: true,\n children: /*#__PURE__*/_jsx(\"div\", {\n className: \"iris-grid-bar\",\n children: /*#__PURE__*/_jsx(CrossColumnSearch, {\n value: searchValue,\n selectedColumns: selectedSearchColumns,\n invertSelection: invertSearchColumns,\n onChange: this.handleCrossColumnSearch,\n columns: model.columns,\n ref: this.crossColumnRef\n })\n })\n }), /*#__PURE__*/_jsxs(Grid, {\n ref: grid => {\n this.grid = grid;\n },\n isStickyBottom: !isEditableGridModel(model) || !model.isEditable,\n isStuckToBottom: isStuckToBottom,\n isStuckToRight: isStuckToRight,\n metricCalculator: metricCalculator,\n model: model,\n keyHandlers: this.getKeyHandlers(),\n mouseHandlers: this.getMouseHandlers(),\n movedColumns: movedColumns,\n movedRows: movedRows,\n onError: this.handleGridError,\n onViewChanged: this.handleViewChanged,\n onSelectionChanged: this.handleSelectionChanged,\n onMovedColumnsChanged: this.handleMovedColumnsChanged,\n renderer: this.renderer,\n stateOverride: stateOverride,\n theme: theme,\n children: [/*#__PURE__*/_jsx(IrisGridCellOverflowModal, {\n isOpen: showOverflowModal,\n text: overflowText,\n onClose: this.handleOverflowClose\n }), isVisible && /*#__PURE__*/_jsx(IrisGridModelUpdater, {\n model: model,\n top: top,\n bottom: bottom,\n left: left,\n right: right,\n filter: filter,\n formatter: formatter,\n sorts: sorts,\n reverse: reverse,\n movedColumns: movedColumns,\n customColumns: customColumns,\n hiddenColumns: hiddenColumns,\n alwaysFetchColumns: this.getAlwaysFetchColumns(alwaysFetchColumns, model.columns, movedColumns, model.floatingLeftColumnCount, model.floatingRightColumnCount, (_this$grid33 = this.grid) === null || _this$grid33 === void 0 ? void 0 : (_this$grid33$state$dr = _this$grid33.state.draggingColumn) === null || _this$grid33$state$dr === void 0 ? void 0 : _this$grid33$state$dr.range),\n formatColumns: this.getCachedPreviewFormatColumns(model.dh, model.columns, conditionalFormats, conditionalFormatPreview,\n // Disable the preview format when we press Back on the format edit page\n ((_openOptions = openOptions[openOptions.length - 1]) === null || _openOptions === void 0 ? void 0 : _openOptions.type) === OptionType.CONDITIONAL_FORMATTING_EDIT ? conditionalFormatEditIndex !== null && conditionalFormatEditIndex !== void 0 ? conditionalFormatEditIndex : undefined : undefined),\n rollupConfig: this.getModelRollupConfig(model.originalColumns, rollupConfig, aggregationSettings),\n totalsConfig: this.getModelTotalsConfig(model.columns, rollupConfig, aggregationSettings),\n selectDistinctColumns: selectDistinctColumns,\n pendingRowCount: pendingRowCount,\n pendingDataMap: pendingDataMap,\n frozenColumns: frozenColumns,\n columnHeaderGroups: columnHeaderGroups,\n partitionConfig: partitionConfig,\n showExtraGroupColumn: this.showExtraGroupColumn\n }), !isMenuShown && /*#__PURE__*/_jsx(\"div\", {\n className: \"grid-settings-button\",\n style: {\n height: \"\".concat(singleColumnHeaderHeight, \"px\"),\n width: \"\".concat(singleColumnHeaderHeight, \"px\")\n },\n children: /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n \"data-testid\": \"btn-iris-grid-settings-button-\".concat(name),\n onClick: this.handleMenu,\n icon: /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsMenu,\n transform: \"up-1\"\n }),\n tooltip: \"Table Options\"\n })\n }), focusField, loadingElement, filterBar, columnTooltip, advancedFilterMenus, overflowButtonTooltipProps && this.getOverflowButtonTooltip(overflowButtonTooltipProps), expandCellTooltipProps && this.getExpandCellTooltip(expandCellTooltipProps), hoverTooltipProps && this.getHoverTooltip(hoverTooltipProps)]\n }), /*#__PURE__*/_jsx(GotoRow, {\n ref: this.gotoRowRef,\n model: model,\n isShown: isGotoShown,\n gotoRow: gotoRow,\n gotoRowError: gotoRowError,\n gotoValueError: gotoValueError,\n onGotoRowSubmit: this.handleGotoRowSelectedRowNumberSubmit,\n onGotoRowNumberChanged: this.handleGotoRowSelectedRowNumberChanged,\n onClose: this.handleGotoRowClosed,\n onEntering: this.handleAnimationStart,\n onEntered: this.handleAnimationEnd,\n onExiting: () => {\n this.handleAnimationStart();\n this.focus();\n },\n onExited: this.handleAnimationEnd,\n gotoValueSelectedColumnName: gotoValueSelectedColumnName,\n gotoValue: gotoValue,\n gotoValueFilter: gotoValueSelectedFilter,\n onGotoValueSelectedColumnNameChanged: this.handleGotoValueSelectedColumnNameChanged,\n onGotoValueSelectedFilterChanged: this.handleGotoValueSelectedFilterChanged,\n onGotoValueChanged: this.handleGotoValueChanged,\n onGotoValueSubmit: this.handleGotoValueSubmitted\n }), /*#__PURE__*/_jsx(PendingDataBottomBar, {\n error: pendingSaveError,\n isSaving: pendingSavePromise != null,\n saveTooltip: \"Commit (\".concat(this.commitAction.shortcut.getDisplayText(), \")\"),\n discardTooltip: \"Discard (\".concat(this.discardAction.shortcut.getDisplayText(), \")\"),\n pendingDataErrors: pendingDataErrors,\n pendingDataMap: pendingDataMap,\n onEntering: this.handleAnimationStart,\n onEntered: this.handleAnimationEnd,\n onExiting: this.handleAnimationStart,\n onExited: this.handleAnimationEnd,\n onSave: this.handlePendingCommitClicked,\n onDiscard: this.handlePendingDiscardClicked\n }), /*#__PURE__*/_jsx(ToastBottomBar, {\n children: toastMessage\n }), /*#__PURE__*/_jsx(IrisGridCopyHandler, {\n model: model,\n copyOperation: copyOperation !== null && copyOperation !== void 0 ? copyOperation : undefined,\n onEntering: this.handleAnimationStart,\n onEntered: this.handleAnimationEnd,\n onExiting: this.handleAnimationStart,\n onExited: this.handleAnimationEnd\n }), /*#__PURE__*/_jsx(TableSaver, {\n dh: model.dh,\n ref: tableSaver => {\n this.tableSaver = tableSaver;\n },\n getDownloadWorker: getDownloadWorker,\n onDownloadCompleted: this.handleDownloadCompleted,\n onDownloadCanceled: this.handleDownloadCanceled,\n onDownloadProgressUpdate: this.handleDownloadProgressUpdate,\n isDownloading: tableDownloadStatus === TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING,\n formatter: formatter\n })]\n }), /*#__PURE__*/_jsx(SlideTransition, {\n in: isMenuShown,\n onEntering: this.handleAnimationStart,\n onEntered: this.handleAnimationEnd,\n onExiting: this.handleAnimationStart,\n onExited: this.handleAnimationEnd,\n mountOnEnter: true,\n unmountOnExit: true,\n children: /*#__PURE__*/_jsx(\"div\", {\n className: \"table-sidebar\",\n children: /*#__PURE__*/_jsxs(Stack, {\n children: [/*#__PURE__*/_jsx(Page, {\n title: \"Table Options\",\n onClose: this.handleMenuClose,\n children: /*#__PURE__*/_jsx(Menu, {\n onSelect: i => this.handleMenuSelect(optionItems[i]),\n items: optionItems\n })\n }), openOptionsStack.map((option, i) => /*#__PURE__*/_jsx(Page, {\n title: openOptions[i].title,\n onBack: this.handleMenuBack,\n onClose: this.handleMenuClose,\n children: option\n }, openOptions[i].type))]\n })\n })\n }), /*#__PURE__*/_jsx(ContextActions, {\n actions: this.contextActions\n }), /*#__PURE__*/_jsx(NoPastePermissionModal, {\n isOpen: showNoPastePermissionModal,\n onClose: this.handleCloseNoPastePermissionModal,\n errorMessage: noPastePermissionError\n })]\n });\n }\n}\n_defineProperty(IrisGrid, \"contextType\", IrisGridThemeContext);\n_defineProperty(IrisGrid, \"minDebounce\", 150);\n_defineProperty(IrisGrid, \"maxDebounce\", 500);\n_defineProperty(IrisGrid, \"loadingSpinnerDelay\", 800);\n_defineProperty(IrisGrid, \"defaultProps\", {\n children: null,\n advancedFilters: EMPTY_MAP,\n advancedSettings: EMPTY_MAP,\n alwaysFetchColumns: EMPTY_ARRAY,\n conditionalFormats: EMPTY_ARRAY,\n customColumnFormatMap: EMPTY_MAP,\n isFilterBarShown: false,\n applyInputFiltersOnInit: false,\n movedColumns: EMPTY_ARRAY,\n movedRows: EMPTY_ARRAY,\n inputFilters: EMPTY_ARRAY,\n customFilters: EMPTY_ARRAY,\n onCreateChart: undefined,\n onColumnSelected: () => undefined,\n onDataSelected: () => undefined,\n onError: () => undefined,\n onStateChange: () => undefined,\n onAdvancedSettingsChange: () => undefined,\n partitions: undefined,\n partitionConfig: undefined,\n quickFilters: EMPTY_MAP,\n selectDistinctColumns: EMPTY_ARRAY,\n sorts: EMPTY_ARRAY,\n reverse: false,\n customColumns: EMPTY_ARRAY,\n aggregationSettings: DEFAULT_AGGREGATION_SETTINGS,\n rollupConfig: undefined,\n userColumnWidths: EMPTY_MAP,\n userRowHeights: EMPTY_MAP,\n onSelectionChanged: () => undefined,\n isSelectingColumn: false,\n isSelectingPartition: false,\n isStuckToBottom: false,\n isStuckToRight: false,\n columnSelectionValidator: null,\n columnAllowedCursor: null,\n columnNotAllowedCursor: null,\n copyCursor: 'copy',\n name: 'table',\n onlyFetchVisibleColumns: true,\n showSearchBar: false,\n searchValue: '',\n selectedSearchColumns: null,\n invertSearchColumns: true,\n onContextMenu: () => EMPTY_ARRAY,\n pendingDataMap: EMPTY_MAP,\n getDownloadWorker: DownloadServiceWorkerUtils.getServiceWorker,\n settings: {\n timeZone: 'America/New_York',\n defaultDateTimeFormat: DateUtils.FULL_DATE_FORMAT,\n showTimeZone: false,\n showTSeparator: true,\n truncateNumbersWithPound: false,\n showEmptyStrings: true,\n showNullStrings: true,\n showExtraGroupColumn: true,\n formatter: EMPTY_ARRAY,\n decimalFormatOptions: PropTypes.shape({\n defaultFormatString: PropTypes.string\n }),\n integerFormatOptions: PropTypes.shape({\n defaultFormatString: PropTypes.string\n })\n },\n canCopy: true,\n canDownloadCsv: true,\n frozenColumns: null,\n theme: null,\n // Do not set a default density prop since we need to know if it overrides the global density setting\n density: undefined,\n canToggleSearch: true,\n mouseHandlers: EMPTY_ARRAY,\n keyHandlers: EMPTY_ARRAY\n});\nexport default IrisGrid;\n//# sourceMappingURL=IrisGrid.js.map"],"names":["_defineProperty","obj","key","value","_toPropertyKey","arg","_toPrimitive","input","hint","prim","res","log","Log","AdvancedFilterCreatorFilterItem","PureComponent","columnType","filterType","TableUtils","getLabelForNumberFilter","getLabelForTextFilter","getLabelForDateFilter","getLabelForBooleanFilter","e","props","memoizeOne","column","operation","timeZone","tableUtils","_value","filterTypes","selectedType","_this$typeDropdown","prevProps","eventTargetValue","onChange","event","onDelete","formatter","showValueInput","typeOptionElements","isValid","i","_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","r","row","displayValue","itemCount","item","isLoading","viewportSize","topRow","bottomRow","SelectValueList","list","FadeTransition","LoadingSpinner","AdvancedFilterCreatorSelectValue","prevState","searchTable","searchText","count","formattedCount","formattedTableSize","prefix","searchTablePromise","error","filter","showSearch","columnName","displayedValuesText","placeholderText","AdvancedFilterCreator","nanoid","_options$filterItems$","_options$filterItems","memoize","React","model","options","filterOperators","filterItems","_ref","columnIndex","assertNotNull","isSortable","index","valuesTable","_valuesTable$columns$","sort","PromiseUtils","_this$focusTrapContai","_this$focusTrapContai2","_this$focusTrapContai3","_this$focusTrapContai4","inputs","FilterOperator","operator","assertFilterOperatorValue","filterIndex","addToExisting","ContextActionUtils","onDone","filterItem","direction","onSortChange","onFilterChange","_ref2","operators","_this","sortDirection","valuesTableError","isValuesTableAvailable","isBoolean","isDateType","filterItemElements","_loop","filterOperator","isAndFilter","operatorElement","showAddFilterItem","addFilterItem","FontAwesomeIcon","dhNewCircleLargeFilled","dhSortAmountDown","_Fragment","makeTernaryFormatRule","config","prevRule","styleDBString","getStyleDBString","conditionDBString","getConditionDBString","makeRowFormatColumn","rule","makeColumnFormatColumn","col","FormatterType","NumberCondition","StringCondition","DateCondition","BooleanCondition","CharCondition","FormatStyleType","getLabelForStyleType","option","getBackgroundForStyleConfig","type","customConfig","getColorForStyleConfig","color","bg","getNumberConditionText","start","end","getTextForNumberCondition","getStringConditionText","getTextForStringCondition","getDateConditionText","getTextForDateCondition","getBooleanConditionText","getTextForBooleanCondition","getCharConditionText","getTextForCharCondition","getLabelForNumberCondition","condition","getLabelForStringCondition","getLabelForDateCondition","getLabelForBooleanCondition","getLabelForCharCondition","getDefaultConditionForType","getDefaultValueForType","getConditionConfig","getDefaultConditionConfigForType","getDefaultStyleConfig","getShortLabelForStringCondition","getShortLabelForDateCondition","getShortLabelForBooleanCondition","getShortLabelForCharCondition","getShortLabelForNumberCondition","getShortLabelForConditionType","getFormatColumns","columns","rules","result","rowFormatConfig","columnFormatConfigMap","_ref3","formatterType","name","prevFormatColumn","formatColumn","isDateConditionValid","dateTimeString","rest","tzCode","DateUtils","isSupportedColumn","_ref4","IrisGridBottomBar","animation","children","className","isShown","onClick","onEntering","onEntered","onExiting","onExited","CSSTransition","ThemeExport","HIDE_TIMEOUT","MAX_NUMBER_ROWS_SHOWN","PendingDataBottomBar","isSaving","onSave","onDiscard","discardTooltip","saveTooltip","pendingDataErrors","pendingDataMap","_onExited","isSuccessShown","setIsSuccessShown","useState","wasSuccessShown","setWasSuccessShown","successTimeout","useRef","prevIsSaving","usePrevious","errorMessage","useMemo","useEffect","pendingRowCount","commitIcon","vsPass","vsWarning","asyncGeneratorStep","gen","resolve","reject","_next","_throw","info","_asyncToGenerator","fn","self","args","err","isCopyRangesOperation","copyOperation","isCopyHeaderOperation","IrisGridCopyHandler","Component","copyState","rowCount","buttonState","ranges","GridRange","text","_this2","copyToClipboard","_this3","columnDepth","movedColumns","modelIndex","GridUtils","copyText","includeHeaders","userColumnWidths","_movedColumns","formatValues","hiddenColumns","IrisGridUtils","modelRanges","subtractRanges","formatValue","CanceledPromiseError","copyButtonText","statusMessageText","isButtonContainerVisible","isFetching","isDone","FilterInputField","debounceMs","debounce","_this$inputField","_this$inputField2","initialValue","isChanged","setGridFocus","defocusInput","_this$inputField3","relatedTarget","backward","onTab","onContextMenu","style","isAdvancedFilterSet","onAdvancedFiltersTriggered","inputField","dhFilterFilled","vsFilter","CopyCellKeyHandler","KeyHandler","irisGrid","grid","mouseX","mouseY","gridPoint","CopyKeyHandler","selectedRanges","ReverseKeyHandler","IrisGridShortcuts","reverse","ClearFilterKeyHandler","ToastBottomBar","setIsShown","timeout","prevChildren","startTimer","useCallback","COLUMN_BUFFER_PAGES","IrisGridModelUpdater","left","right","sorts","customColumns","alwaysFetchColumns","rollupConfig","totalsConfig","selectDistinctColumns","EMPTY_ARRAY","EMPTY_MAP","frozenColumns","formatColumns","columnHeaderGroups","partitionConfig","showExtraGroupColumn","isTotalsAvailable","isRollupAvailable","useOnChange","isIrisGridTreeTableModel","sortsForModel","isPartitionedGridModel","STATS_LABEL_OVERRIDES","ColumnStatistics","_STATS_LABEL_OVERRIDE","w","numRows","stats","onStatistics","statistics","_column$displayName","loading","showGenerateStatistics","statisticElements","description","formattedValue","statisticElement","rowCountLabel","isExpandableGridModel","formattedRowCount","CopyButton","dhSortSlash","dhFreeze","vsLock","dhRefresh","CrossColumnSearch","searchValue","selectedColumns","filterColumns","filterValue","searchFilter","_this$searchField$cur","c","update","isConfigureColumnsShown","hasAllColumnsSelected","hasNoColumnsSelected","icon","dhSquareFilled","dhGearFilled","dhCheckSquare","vsCircleLargeFilled","dhWarningCircleFilled","dhRemoveSquareFilled","SearchInput","Tooltip","Popper","Checkbox","ownKeys","object","enumerableOnly","keys","symbols","sym","_objectSpread","target","source","IrisGridPartitionSelector","memoizee","Pending","keysTable","keyTable","t","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","inputIndex","_ref5","disableAddButton","AdvancedSettingsMenu","_onChange","Menu","isOn","AdvancedSettingsType","DEFAULT_CALLBACK","getRuleValue","getRuleTitle","ConditionalFormattingMenu","onCreate","onSelect","handleRuleClick","handleDeleteClick","updatedRules","handleDragHandlerClick","handleDragEnd","DragUtils","sourceIndex","destinationIndex","sourceInput","DragDropContext","Droppable","provided","snapshot","Draggable","vsGripper","numberConditionOptions","stringConditions","dateConditions","booleanConditions","charConditions","isNumberConditionValid","startValue","endValue","getNumberInputs","selectedCondition","handleValueChange","handleStartValueChange","handleEndValueChange","conditionValue","getStringInputs","getDateInputs","getBooleanInputs","getCharInputs","ConditionEditor","selectedColumnType","prevColumnType","setPrevColumnType","setCondition","setValue","setStartValue","setEndValue","conditions","handleConditionChange","conditionInputs","DEFAULT_BACKGROUND","DEFAULT_COLOR_LIGHT","DEFAULT_COLOR_DARK","DEFAULT_DROPDOWN_WIDTH","StyleEditor","_config$customConfig$","_config$customConfig","styleType","setStyleType","background","setBackground","setShown","dropdownWidth","setDropdownWidth","csContainer","handleBackgroundChange","handleMenuClosed","handleToggleClick","updateDropdownWidth","styleOptions","ColorUtils","renderOptions","optionArray","vsCheck","renderMenuElement","DropdownMenu","makeDefaultConfig","ColumnFormatEditor","_columns$find","selectedColumn","setColumn","conditionConfig","setConditionConfig","conditionValid","setConditionValid","selectedStyle","setStyle","handleColumnChange","newColumn","updatedConditionConfig","handleStyleChange","updatedStyleConfig","columnNames","ComboBox","RowFormatEditor","getFormatterTypeIcon","FormatColumnWhereIcon","FormatRowWhereIcon","getFormatterTypeLabel","formatterTypes","ConditionalFormatEditor","_defaultRule$type","originalColumns","onUpdate","onCancel","defaultRule","selectedFormatter","setFormatter","setRule","setIsValid","handleCancel","handleSave","handleFormatterChange","handleRuleChange","ruleConfig","isRuleValid","updatedRule","IrisGridCellOverflowModal","_editorRef$current$ge","_editorRef$current2","isOpen","onClose","isOpened","setIsOpened","height","setHeight","showLineNumbers","setShowLineNumbers","isFormatted","setIsFormatted","canFormat","setCanFormat","editorRef","toggleLineNumbers","formatAsJSON","_editorRef$current","autoSetLineNumbers","_editor$getModel$getL","_editor$getModel","editor","handleToggle","onEditorInitialized","contentHeight","Modal","ModalHeader","vsListOrdered","vsJson","ModalBody","Editor","DEFAULT_FORMAT_STRING","GotoRow","forwardRef","ref","gotoRow","gotoRowError","gotoValueError","onGotoRowSubmit","_onEntered","onGotoRowNumberChanged","gotoValueSelectedColumnName","gotoValue","gotoValueFilter","onGotoValueSelectedColumnNameChanged","onGotoValueSelectedFilterChanged","onGotoValueChanged","onGotoValueSubmit","gotoRowInputRef","gotoValueInputRef","isGotoRowActive","setIsGotoRowActive","isIrisGridTableModelTemplate","gotoRowInputId","handleGotoValueNumberKeyDown","onGotoValueInputChanged","handleGotoValueKeySubmit","normalizedType","useImperativeHandle","_gotoRowInputRef$curr","selectInput","_gotoRowInputRef$curr2","_gotoValueInputRef$cu","renderValueInput","DateTimeInput","FilterType","vsClose","vsArrowUp","vsArrowDown","NoPastePermissionModal","pasteShortcutText","GLOBAL_SHORTCUTS","ModalFooter","VIEWPORT_LOADING_DELAY","UPDATE_DOWNLOAD_THROTTLE","SET_FILTER_DEBOUNCE","SEEK_ROW_DEBOUNCE","SET_CONDITIONAL_FORMAT_DEBOUNCE","DEFAULT_AGGREGATION_SETTINGS","UNFORMATTED_DATE_PATTERN","isEmptyConfig","advancedFilters","aggregationSettings","quickFilters","IrisGrid","_model$layoutHints","_model$layoutHints$hi","_model$columns$0$name","_model$columns$","advancedFilterOptions","isChartBuilderAvailable","isCustomColumnsAvailable","isFormatColumnsAvailable","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","a","_operationMap$name","newOperations","o","rulesParam","preview","editIndex","_config$columns$lengt","_config$columns","agg","operationOrder","AggregationOperation","hoverSelectColumn","isSelectingColumn","loadingScrimProgress","isMenuShown","customFilters","contextTheme","theme","isEditable","floatingRowCount","density","_theme$rowFooterWidth","baseTheme","createDefaultIrisGridTheme","rowFooterWidth","densityTheme","keyHandlers","b","mouseHandlers","rendererProp","IrisGridRenderer","floatingLeftColumnCount","floatingRightColumnCount","draggingRange","floatingColumns","_i","_i2","columnSet","selectedSearchColumns","invertSearchColumns","throttle","loadingSpinnerShown","conditionalFormatPreview","tableDownloadProgress","tableDownloadEstimatedTime","tableDownloadStatus","TableCsvExporter","overflowButtonTooltipProps","wrapperStyle","popperOptions","expandCellTooltipProps","expandTooltipDisplayValue","isExpandAllAvailable","hoverTooltipProps","hoverDisplayValue","SHORTCUTS","isEditableGridModel","_aggregationSettings","conditionalFormats","customColumnFormatMap","_isFilterBarShown","isSelectingPartition","_model","movedColumnsProp","movedRowsProp","_rollupConfig","_userColumnWidths","userRowHeights","_showSearchBar","_searchValue","_selectedSearchColumns","_invertSearchColumns","_advancedFilters","_quickFilters","canCopy","_dh","_keyHandlers","_mouseHandlers","IrisGridCellOverflowMouseHandler","IrisGridRowTreeMouseHandler","IrisGridTokenMouseHandler","IrisGridColumnSelectMouseHandler","IrisGridColumnTooltipMouseHandler","IrisGridSortMouseHandler","IrisGridFilterMouseHandler","IrisGridContextMenuHandler","IrisGridDataSelectMouseHandler","PendingMouseHandler","IrisGridPartitionedTableMouseHandler","IrisGridCopyCellMouseHandler","movedRows","_metricCalculator","IrisGridMetricCalculator","searchColumns","_searchFilter","Formatter","inputFilters","settings","changedInputFilters","inputFilter","_advancedSettings$get","advancedSettings","replaceExistingFilters","loadingScrimStartTime","loadingScrimFinishTime","now","currentTime","totalTime","state","openOptions","isAggEditType","_this$grid$canvasWrap","_this$grid","renderer","rowIndex","rawValue","modelColumn","modelRow","metrics","modelColumns","modelRows","contextDensity","replaceExisting","newAdvancedFilters","newQuickFilters","_ref6","quickFilter","_ref7","_ref8","filterMap","_advancedSettings$get2","clearFiltersOnLinkerFilterUpdate","_ref9","filterList","combinedText","modelRange","clearRange","_ref10","_ref11","_ref12","_settings$defaultDeci","_settings$defaultInte","_settings$truncateNum","_settings$showEmptySt","_settings$showNullStr","_settings$showExtraGr","forceUpdate","globalColumnFormats","FormatterUtils","dateTimeFormatterOptions","defaultDecimalFormatOptions","defaultIntegerFormatOptions","truncateNumbersWithPound","showEmptyStrings","showNullStrings","isColumnFormatChanged","isDateFormattingChanged","isDecimalFormattingChanged","isIntegerFormattingChanged","isTruncateNumbersChanged","isShowEmptyStringsChanged","isShowNullStringsChanged","isShowExtraGroupColumnChanged","updatedFormats","_this$globalColumnFor","mergedColumnFormats","applyInputFiltersOnInit","reverseType","inputFiltersWithValues","resolved","_data","newPartition","_data2","partitionColumnSet","_ref13","_ref14","columnData","_value2","loadingText","resetRanges","loadingCancelShown","loadingBlocksGrid","_this$gridWrapper$get","_this$gridWrapper","minScrimTransitionTime","maxScrimTransitionTime","scrimTransitionTime","IrisGridModel","_this$grid2","columnCount","rightVisible","lastLeft","_this$grid3","_this$grid4","_this$grid5","metricState","newLeft","columnVisibleIndex","_this$grid6","allFrozenColumns","visibleIndex","newMovedColumns","modelIndexes","isVisible","_this$grid7","defaultWidth","calculatedWidth","getOrThrow","_model$layoutHints$fr","_model$layoutHints2","_this$grid8","onError","loadingMessage","_this$grid9","entries","columnWidth","currentSorts","_this$grid10","_this$grid11","isAbs","_this$grid12","focusIndex","_model2","_column","_this$grid13","_model$layoutHints3","_dh$SearchDisplayMode","_dh$SearchDisplayMode2","searchDisplayMode","_this$crossColumnRef","_this$crossColumnRef2","_this$grid14","_this$grid15","_this$grid16","isGotoShown","_this$gotoRowRef$curr","cursorRow","cursorColumn","cellValue","_document","_document$activeEleme","pendingSavePromise","containsGridCellInputField","_this3$grid","ValidationError","newPendingSavePromise","_this4","onColumnSelected","dataMap","onDataSelected","_this5","groupedColumns","isExpandable","isGrouped","_this$grid17","oldSort","newSort","_this$grid18","_this$filterInputRef","focusedFilterBarColumn","_this$filterInputRef2","onCreateChart","_ref15","_this$grid19","selectedFormat","prevCustomColumnFormatMap","columnFormattingRule","_ref16","newOptions","_ref17","isMissingPartitionError","_this$grid20","_this$grid$state","_this$grid21","selectionEndRow","bottomViewport","bottomNonFloating","_this$grid22","onSelectionChanged","onChangeApplied","_this$grid23","tooltip","oldCustomColumns","customColumn","removedColumnNames","newSorts","newSelectDistinctColumns","isReady","_this$grid24","_this$grid25","_this$grid26","contentWidth","userWidths","_this$grid27","allColumns","visibleColumns","_ref18","width","_ref19","contentWidths","manualColumns","_i3","_modelIndex","_contentWidth","aggregation","_ref20","_rollupConfig$columns","_rollupConfig$columns2","fileName","frozenTable","tableSubscription","snapshotRanges","includeColumnHeaders","useUnformattedValues","_ref21","newAggregations","inputString","_arguments","_this6","_this6$grid","isBackwards","selectedColumnName","gotoValueSelectedFilter","searchFromRow","isContains","isIgnoreCase","_this6$grid2","columnDataType","startDate","inputValue","_this$tableSaver","isDeletableGridModel","columnAllowedCursor","irisGridState","gridState","onStateChange","_this$gridWrapper2","shownColumnTooltip","gridRect","popperMargin","columnHeaderHeight","allColumnXs","allColumnWidths","columnHeaderMaxDepth","columnX","clamp","rowNumber","rowInt","_this$grid28","_this$grid29","_this$grid30","boundedLeft","boundedWidth","virtualReference","_this$tooltip","_this$grid31","prevColumnName","gotoValueManuallyChanged","_index","_column2","prevColumn","_value3","_rollupConfig$columns3","_rollupConfig$columns4","_this7","_this$grid33","_this$grid33$state$dr","_openOptions","getDownloadWorker","isStuckToBottom","isStuckToRight","onlyFetchVisibleColumns","onAdvancedSettingsChange","hoverAdvancedFilter","shownAdvancedFilter","conditionalFormatEditIndex","isTableDownloading","selectedAggregation","pendingSaveError","toastMessage","showOverflowModal","showNoPastePermissionModal","noPastePermissionError","overflowText","singleColumnHeaderHeight","stateOverride","isRollup","focusField","gridX","gridY","_theme$filterBarHeigh","_theme$filterBarHeigh2","_this$grid32","x","y","fieldWidth","fieldHeight","_value4","advancedFilter","isBarFiltered","loadingElement","loadingStatus","_gridY","columnTooltip","_this$tooltip2","filterBar","_gridX","_gridY2","_allColumnXs","_allColumnWidths","filterBarHeight","_loop2","isFilterable","_y","_style","_advancedFilter","isFilterSet","isFilterVisible","_this7$grid","advancedFilterMenus","_gridX2","_visibleColumns","_allColumnXs2","_allColumnWidths2","_loop3","_i4","xColumnHeader","xFilterBar","_style2","_modelColumn","_column3","_advancedFilter2","isSortDirection","_ret","openOptionsStack","ChartBuilder","VisibilityOrderingBuilder","CustomColumnBuilder","RollupRows","Aggregations","AggregationEdit","Grid","vsMenu","TableSaver","tableSaver","SlideTransition","Stack","Page","ContextActions","IrisGridThemeContext","DownloadServiceWorkerUtils","PropTypes"],"mappings":"6vDAAA,SAASA,GAAgBC,EAAKC,EAAKC,EAAO,CAAE,OAAAD,EAAME,GAAeF,CAAG,EAAOA,KAAOD,EAAO,OAAO,eAAeA,EAAKC,EAAK,CAAE,MAAOC,EAAO,WAAY,GAAM,aAAc,GAAM,SAAU,EAAM,CAAA,EAAYF,EAAIC,CAAG,EAAIC,EAAgBF,CAAM,CAC5O,SAASG,GAAeC,EAAK,CAAE,IAAIH,EAAMI,GAAaD,EAAK,QAAQ,EAAG,OAAO,OAAOH,GAAQ,SAAWA,EAAM,OAAOA,CAAG,CAAI,CAC3H,SAASI,GAAaC,EAAOC,EAAM,CAAE,GAAI,OAAOD,GAAU,UAAYA,IAAU,KAAM,OAAOA,EAAO,IAAIE,EAAOF,EAAM,OAAO,WAAW,EAAG,GAAIE,IAAS,OAAW,CAAE,IAAIC,EAAMD,EAAK,KAAKF,EAAOC,GAAQ,SAAS,EAAG,GAAI,OAAOE,GAAQ,SAAU,OAAOA,EAAK,MAAM,IAAI,UAAU,8CAA8C,CAAI,CAAC,OAAQF,IAAS,SAAW,OAAS,QAAQD,CAAK,CAAI,CAazX,IAAII,GAAMC,GAAI,OAAO,iCAAiC,EAC/C,MAAMC,WAAwCC,EAAAA,aAAc,CACjE,OAAO,kBAAkBC,EAAYC,EAAY,CAC/C,GAAI,CACF,GAAIC,EAAW,aAAaF,CAAU,GAAKE,EAAW,WAAWF,CAAU,EACzE,OAAOG,GAAwBF,CAAU,EAE3C,GAAIC,EAAW,WAAWF,CAAU,EAClC,OAAOI,GAAsBH,CAAU,EAEzC,GAAIC,EAAW,WAAWF,CAAU,EAClC,OAAOK,GAAsBJ,CAAU,EAEzC,GAAIC,EAAW,cAAcF,CAAU,EACrC,OAAOM,GAAyBL,CAAU,EAE5C,MAAM,IAAI,MAAM,6BAA6B,OAAOD,CAAU,CAAC,CAChE,OAAQO,EAAG,CACVX,OAAAA,GAAI,KAAKW,CAAC,EACH,EACR,CACF,CACD,YAAYC,EAAO,CACjB,MAAMA,CAAK,EACXvB,GAAgB,KAAM,eAAgB,MAAM,EAC5CA,GAAgB,KAAM,mBAAoBwB,GAAW,CAACC,EAAQC,EAAWvB,EAAOwB,EAAUC,IAAe,CACvG,GAAI,CAEF,MAAO,CAACzB,GAASyB,EAAW,wBAAwBH,EAAQC,EAAWvB,EAAOwB,CAAQ,GAAK,IAC5F,MAAW,CACV,MAAO,EACR,CACF,CAAA,CAAC,EACF,KAAK,aAAe,KAAK,aAAa,KAAK,IAAI,EAC/C,KAAK,iBAAmB,KAAK,iBAAiB,KAAK,IAAI,EACvD,KAAK,kBAAoB,KAAK,kBAAkB,KAAK,IAAI,EACzD,KAAK,aAAe,KACpB,GAAI,CACF,MAAOE,EAAS,GAChB,YAAAC,EACA,aAAAC,EAAeD,EAAY,CAAC,CAC7B,EAAGP,EACJ,KAAK,MAAQ,CACX,aAAAQ,EACA,MAAOF,CACb,CACG,CACD,mBAAoB,CAClB,IAAIG,GACHA,EAAqB,KAAK,gBAAkB,MAAQA,IAAuB,QAAkBA,EAAmB,MAAK,CACvH,CACD,mBAAmBC,EAAW,CAC5B,GAAI,CACF,MAAA9B,EACA,aAAA4B,CACN,EAAQ,KAAK,MACLA,IAAiB,QAAaE,EAAU,eAAiBF,GAC3D,KAAK,SAAS,CACZ,aAAAA,CACR,CAAO,EAEC5B,IAAU,QAAa8B,EAAU,QAAU9B,GAC7C,KAAK,SAAS,CACZ,MAAAA,CACR,CAAO,CAEJ,CACD,iBAAiB+B,EAAkB,CACjC,IAAIH,EAAeG,EACnBvB,GAAI,OAAO,aAAcoB,CAAY,EACrC,KAAK,SAAS,CACZ,aAAAA,CACN,CAAK,EACD,GAAI,CACF,SAAAI,CACN,EAAQ,KAAK,MACL,CACF,MAAAhC,CACN,EAAQ,KAAK,MACLA,GAAS,MAAQA,EAAM,OAAS,GAElCgC,EAASJ,EAAc5B,CAAK,CAE/B,CACD,kBAAkBiC,EAAO,CACvBzB,GAAI,OAAO,aAAa,EACxB,GAAI,CACF,MAAAR,CACN,EAAQiC,EAAM,OACV,KAAK,SAAS,CACZ,MAAAjC,CACN,CAAK,EACD,GAAI,CACF,SAAAgC,CACN,EAAQ,KAAK,MACL,CACF,aAAAJ,CACN,EAAQ,KAAK,MACLA,GAAgB,MAElBI,EAASJ,EAAc5B,CAAK,CAE/B,CACD,cAAe,CACbQ,GAAI,MAAM,QAAQ,EAClB,GAAI,CACF,SAAA0B,CACN,EAAQ,KAAK,MACTA,GACD,CACD,QAAS,CAcP,OAbI,CACF,OAAAZ,EACA,YAAAK,EACA,UAAAQ,EACA,WAAAV,CACN,EAAQ,KAAK,MACL,CACF,aAAAG,EACA,MAAA5B,CACN,EAAQ,KAAK,MACLoC,EAAiB,CAACtB,EAAW,cAAcQ,EAAO,IAAI,EACtDe,EAAqB,CAAA,EACrBC,EAAU,KAAK,iBAAiBhB,EAAQM,EAAc5B,EAAOmC,EAAU,SAAUV,CAAU,EACtFc,EAAI,EAAGA,EAAIZ,EAAY,OAAQY,GAAK,EAAG,CAC9C,IAAIC,EAAQb,EAAYY,CAAC,EACrBE,EAAQ/B,GAAgC,kBAAkBY,EAAO,KAAMkB,CAAK,EAC5EE,EAAuBC,EAAI,IAAC,SAAU,CACxC,MAAOH,EACP,SAAUC,CACX,EAAED,CAAK,EACRH,EAAmB,KAAKK,CAAO,CAChC,CACD,OAAoBC,EAAAA,IAAK,MAAO,CAC9B,UAAW,sCACX,SAAuBC,EAAK,KAAC,MAAO,CAClC,UAAW,WACX,SAAU,CAAcD,EAAI,IAAC,MAAO,CAClC,UAAW,iBACX,SAAuBA,EAAI,IAACE,GAAQ,CAClC,UAAW,eACX,MAAOjB,EACP,SAAU,KAAK,iBACf,IAAKkB,GAAgB,CACnB,KAAK,aAAeA,CACrB,EACD,SAAUT,CACtB,CAAW,CACX,CAAS,EAAGD,GAA+BO,EAAI,IAAC,MAAO,CAC7C,UAAW,iBACX,SAAuBA,EAAI,IAAC,MAAO,CACjC,UAAW,cACX,SAAuBA,EAAI,IAAC,QAAS,CACnC,KAAM,OACN,UAAWI,EAAW,eAAgB,CACpC,MAAO,CAACT,CACxB,CAAe,EACD,YAAa,cACb,MAAOtC,EACP,SAAU,KAAK,iBAC7B,CAAa,CACb,CAAW,CACX,CAAS,EAAgB2C,EAAI,IAAC,MAAO,CAC3B,UAAW,wBACX,SAAuBA,EAAI,IAACK,EAAQ,CAClC,KAAM,QACN,UAAW,sBACX,QAAS,KAAK,aACd,KAAMC,GACN,QAAS,eACrB,CAAW,CACX,CAAS,CAAC,CACV,CAAO,CACP,CAAK,CACF,CACH,CC9LA,SAASpD,GAAgBC,EAAKC,EAAKC,EAAO,CAAE,OAAAD,EAAME,GAAeF,CAAG,EAAOA,KAAOD,EAAO,OAAO,eAAeA,EAAKC,EAAK,CAAE,MAAOC,EAAO,WAAY,GAAM,aAAc,GAAM,SAAU,EAAM,CAAA,EAAYF,EAAIC,CAAG,EAAIC,EAAgBF,CAAM,CAC5O,SAASG,GAAeC,EAAK,CAAE,IAAIH,EAAMI,GAAaD,EAAK,QAAQ,EAAG,OAAO,OAAOH,GAAQ,SAAWA,EAAM,OAAOA,CAAG,CAAI,CAC3H,SAASI,GAAaC,EAAOC,EAAM,CAAE,GAAI,OAAOD,GAAU,UAAYA,IAAU,KAAM,OAAOA,EAAO,IAAIE,EAAOF,EAAM,OAAO,WAAW,EAAG,GAAIE,IAAS,OAAW,CAAE,IAAIC,EAAMD,EAAK,KAAKF,EAAOC,GAAQ,SAAS,EAAG,GAAI,OAAOE,GAAQ,SAAU,OAAOA,EAAK,MAAM,IAAI,UAAU,8CAA8C,CAAI,CAAC,OAAQF,IAAS,SAAW,OAAS,QAAQD,CAAK,CAAI,CAOzX,IAAII,GAAMC,GAAI,OAAO,sCAAsC,EAK3D,MAAMyC,WAA6CvC,EAAAA,aAAc,CAM/D,OAAO,QAAQX,EAAOmD,EAAQ,CAC5B,QAASZ,EAAI,EAAGA,EAAIY,EAAO,OAAQZ,GAAK,EAAG,CACzC,IAAIa,EAAID,EAAOZ,CAAC,EAChB,GAAIa,IAAMpD,GAASoD,GAAK,MAAQA,EAAE,SAAW,MAAQpD,GAAS,MAAQA,EAAM,SAAW,MAAQoD,EAAE,YAAcpD,EAAM,UACnH,OAAOuC,CAEV,CACD,MAAO,EACR,CACD,YAAYnB,EAAO,CACjB,MAAMA,CAAK,EACXvB,GAAgB,KAAM,KAAM,MAAM,EAClCA,GAAgB,KAAM,OAAQ,MAAM,EACpC,KAAK,aAAe,KAAK,aAAa,KAAK,IAAI,EAC/C,KAAK,qBAAuB,KAAK,qBAAqB,KAAK,IAAI,EAC/D,KAAK,sBAAwB,KAAK,sBAAsB,KAAK,IAAI,EACjE,KAAK,kBAAoB,KAAK,kBAAkB,KAAK,IAAI,EACzD,GAAI,CACF,eAAAwD,EACA,GAAAC,CACN,EAAQ,KAAK,MACT,KAAK,GAAKA,EACV,KAAK,KAAO,KACZ,KAAK,MAAQ,CACX,UAAW,EACX,MAAO,CAAE,EACT,OAAQ,EACR,eAAAD,EACA,UAAW,EACjB,CACG,CACD,mBAAoB,CAClB,GAAI,CACF,MAAAE,CACN,EAAQ,KAAK,MACLA,GAAO,KAAK,eAAeA,CAAK,CACrC,CACD,mBAAmBzB,EAAW,CAC5B,GAAI,CACF,QAAA0B,EACA,gBAAAC,EACA,eAAAJ,EACA,MAAAE,CACN,EAAQ,KAAK,MACLzB,EAAU,QAAUyB,IAClBzB,EAAU,OAAO,KAAK,cAAcA,EAAU,KAAK,EACnDyB,GAAO,KAAK,eAAeA,CAAK,EACpC,KAAK,cAAa,GAEhBzB,EAAU,kBAAoB2B,GAChC,KAAK,SAAS,CACZ,eAAgB,CAAE,CAC1B,EAAS,KAAK,qBAAqB,EAE3B3B,EAAU,iBAAmBuB,GAC/B,KAAK,SAAS,CACZ,eAAAA,CACR,EAAS,KAAK,qBAAqB,EAE3BvB,EAAU,UAAY0B,IACxBD,GAAU,MAAoCA,EAAM,YAAYC,CAAO,EACvE,KAAK,cAAa,EAErB,CACD,sBAAuB,CACrB,GAAI,CACF,MAAAD,CACN,EAAQ,KAAK,MACLA,GAAO,KAAK,cAAcA,CAAK,CACpC,CACD,aAAaG,EAAW1D,EAAO,CAC7B,GAAI,CACF,gBAAAyD,CACN,EAAQ,KAAK,MACL,CACF,eAAAJ,CACN,EAAQ,KAAK,MACTA,EAAiB,CAAC,GAAGA,CAAc,EACnC,IAAIM,EAAgBT,GAAqC,QAAQlD,EAAOqD,CAAc,EAClFM,GAAiB,EACnBN,EAAe,OAAOM,EAAe,CAAC,EAEtCN,EAAe,KAAKrD,CAAK,EAE3B,IAAI4D,EAAaD,EAAgB,EAC7BF,IACFG,EAAa,CAACA,GAEhB,GAAI,CACF,OAAAC,CACN,EAAQ,KAAK,MACL,CACF,MAAAC,CACN,EAAQ,KAAK,MACTA,EAAQ,CAAC,GAAGA,CAAK,EACjB,IAAIC,EAAmBL,EAAYG,EAC/BE,GAAoB,GAAKA,EAAmBD,EAAM,SACpDA,EAAMC,CAAgB,EAAE,WAAaH,GAEvC,KAAK,SAAS,CACZ,MAAAE,EACA,eAAAT,CACN,CAAK,EACD,GAAI,CACF,SAAArB,CACN,EAAQ,KAAK,MACTA,EAASqB,EAAgBI,CAAe,CACzC,CACD,qBAAqBO,EAAKC,EAAQ,CAChC,KAAK,eAAeD,EAAKC,CAAM,CAChC,CACD,uBAAwB,CACtB,KAAK,oBAAmB,CACzB,CACD,kBAAkBhC,EAAO,CACvB,GAAI,CACF,MAAAsB,EACA,UAAApB,CACN,EAAQ,KAAK,MACT,GAAKoB,EAOL,SANIW,EAAOjC,EAAM,OACb,CACF,OAAA4B,CACD,EAAGK,EACAJ,EAAQ,CAAA,EACRxC,EAASiC,EAAM,QAAQ,CAAC,EACnBY,EAAI,EAAGA,EAAID,EAAK,KAAK,OAAQC,GAAK,EAAG,CAC5C,IAAIC,EAAMF,EAAK,KAAKC,CAAC,EACjBnE,EAAQoE,EAAI,IAAI9C,CAAM,EACtB+C,EAAe,OACfrE,GAAS,KACXqE,EAA4B1B,EAAI,IAAC,IAAK,CACpC,UAAW,aACX,SAAU,MACpB,CAAS,EACQ3C,IAAU,GACnBqE,EAA4B1B,EAAI,IAAC,IAAK,CACpC,UAAW,aACX,SAAU,OACpB,CAAS,EAED0B,EAAelC,EAAU,mBAAmBnC,EAAOsB,EAAO,KAAMA,EAAO,IAAI,EAE7E,IAAIsC,EAAa,KAAK,gBAAgB5D,CAAK,EAC3C8D,EAAM,KAAK,CACT,aAAAO,EACA,MAAArE,EACA,WAAA4D,CACR,CAAO,CACF,CACDpD,GAAI,OAAO,yBAA0BqD,EAAQC,EAAM,MAAM,EACzD,IAAIQ,EAAYf,EAAM,KACtB,KAAK,SAAS,CACZ,UAAAe,EACA,MAAAR,EACA,OAAAD,EACA,UAAW,EACjB,CAAK,EACF,CACD,gBAAgB7D,EAAO,CACrB,GAAI,CACF,gBAAAyD,CACN,EAAQ,KAAK,MACL,CACF,eAAAJ,CACN,EAAQ,KAAK,MAGLM,EAAgBT,GAAqC,QAAQlD,EAAOqD,CAAc,EACtF,OAAOI,EAAkBE,EAAgB,EAAIA,GAAiB,CAC/D,CACD,eAAeJ,EAAO,CACpBA,EAAM,iBAAiB,KAAK,GAAG,MAAM,cAAe,KAAK,iBAAiB,CAC3E,CACD,cAAcA,EAAO,CACnBA,EAAM,oBAAoB,KAAK,GAAG,MAAM,cAAe,KAAK,iBAAiB,CAC9E,CACD,eAAgB,CACV,KAAK,MAAQ,KAAK,KAAK,QAAU,MAAQ,KAAK,KAAK,WAAa,MAClE,KAAK,eAAe,KAAK,KAAK,OAAQ,KAAK,KAAK,UAAW,EAAI,CAElE,CACD,qBAAsB,CACpB,GAAI,CACF,MAAAO,CACN,EAAQ,KAAK,MACTA,EAAQ,CAAC,GAAGA,CAAK,EACjB,QAASvB,EAAI,EAAGA,EAAIuB,EAAM,OAAQvB,GAAK,EAAG,CACxC,IAAIgC,EAAOT,EAAMvB,CAAC,EACd,CACF,MAAAvC,CACD,EAAGuE,EACJA,EAAK,WAAa,KAAK,gBAAgBvE,CAAK,CAC7C,CACD,KAAK,SAAS,CACZ,MAAA8D,CACN,CAAK,CACF,CACD,eAAeE,EAAKC,EAAQ,CAC1B,IAAIO,EAAY,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAChF,CACF,MAAAjB,CACN,EAAQ,KAAK,MACT,GAAIA,GAAS,KAGb,CAAIiB,GACF,KAAK,SAAS,CACZ,UAAW,EACnB,CAAO,EAEH,IAAIC,EAAeR,EAASD,EAAM,EAC9BU,EAAS,KAAK,IAAI,EAAGV,EAAMS,EAAe,CAAC,EAC3CE,EAAY,KAAK,IAAID,EAAQT,EAASQ,EAAe,CAAC,EAC1DjE,GAAI,OAAO,mBAAoBkE,EAAQ,IAAKC,CAAS,EACrDpB,EAAM,YAAYmB,EAAQC,CAAS,EACpC,CACD,QAAS,CACP,GAAI,CACF,OAAAd,EACA,UAAAW,EACA,MAAAV,EACA,UAAAQ,CACN,EAAQ,KAAK,MACT,OAAoB1B,EAAAA,KAAM,MAAO,CAC/B,UAAW,4BACX,SAAU,CAAcD,EAAI,IAACiC,GAAiB,CAC5C,UAAWN,EACX,MAAOR,EACP,OAAQD,EACR,SAAU,KAAK,aACf,iBAAkB,KAAK,qBACvB,IAAKgB,GAAQ,CACX,KAAK,KAAOA,CACb,CACT,CAAO,EAAgBlC,EAAI,IAACmC,GAAgB,CACpC,GAAIN,EACJ,aAAc,GACd,cAAe,GACf,SAAuB7B,EAAI,IAAC,MAAO,CACjC,UAAW,eACX,SAAuBA,EAAI,IAACoC,GAAgB,CAC1C,UAAW,uBACvB,CAAW,CACX,CAAS,CACT,CAAO,CAAC,CACR,CAAK,CACF,CACH,CACAlF,GAAgBqD,GAAsC,eAAgB,CACpE,gBAAiB,GACjB,eAAgB,CAAE,EAClB,SAAU,IAAA,EACZ,CAAC,ECjRD,SAASrD,GAAgBC,EAAKC,EAAKC,EAAO,CAAE,OAAAD,EAAME,GAAeF,CAAG,EAAOA,KAAOD,EAAO,OAAO,eAAeA,EAAKC,EAAK,CAAE,MAAOC,EAAO,WAAY,GAAM,aAAc,GAAM,SAAU,EAAM,CAAA,EAAYF,EAAIC,CAAG,EAAIC,EAAgBF,CAAM,CAC5O,SAASG,GAAeC,EAAK,CAAE,IAAIH,EAAMI,GAAaD,EAAK,QAAQ,EAAG,OAAO,OAAOH,GAAQ,SAAWA,EAAM,OAAOA,CAAG,CAAI,CAC3H,SAASI,GAAaC,EAAOC,EAAM,CAAE,GAAI,OAAOD,GAAU,UAAYA,IAAU,KAAM,OAAOA,EAAO,IAAIE,EAAOF,EAAM,OAAO,WAAW,EAAG,GAAIE,IAAS,OAAW,CAAE,IAAIC,EAAMD,EAAK,KAAKF,EAAOC,GAAQ,SAAS,EAAG,GAAI,OAAOE,GAAQ,SAAU,OAAOA,EAAK,MAAM,IAAI,UAAU,8CAA8C,CAAI,CAAC,OAAQF,IAAS,SAAW,OAAS,QAAQD,CAAK,CAAI,CAUzX,MAAM4E,WAAyCrE,EAAAA,aAAc,CAC3D,YAAYS,EAAO,CACjB,MAAMA,CAAK,EACXvB,GAAgB,KAAM,qBAAsB,MAAM,EAClDA,GAAgB,KAAM,aAAc,MAAM,EAC1CA,GAAgB,KAAM,oBAAqB,MAAM,EACjD,KAAK,qBAAuB,KAAK,qBAAqB,KAAK,IAAI,EAC/D,KAAK,oBAAsB,KAAK,oBAAoB,KAAK,IAAI,EAC7D,KAAK,iBAAmB,KAAK,iBAAiB,KAAK,IAAI,EACvD,KAAK,mBAAqB,KAAK,mBAAmB,KAAK,IAAI,EAC3D,KAAK,0BAA4B,KAAK,0BAA0B,KAAK,IAAI,EACzE,GAAI,CACF,GAAAyD,EACA,gBAAAG,EACA,eAAAJ,CACD,EAAGjC,EACJ,KAAK,WAAa,IAAIN,EAAWwC,CAAE,EACnC,KAAK,MAAQ,CACX,QAAS,CAAE,EACX,gBAAAG,EACA,eAAAJ,EACA,WAAY,EAClB,CACG,CACD,mBAAoB,CAClB,KAAK,gBAAe,CACrB,CACD,mBAAmBvB,EAAWmD,EAAW,CACvC,GAAI,CACF,gBAAAxB,EACA,eAAAJ,EACA,MAAAE,CACN,EAAQ,KAAK,MACLzB,EAAU,QAAUyB,GACtB,KAAK,gBAAe,EAElBzB,EAAU,kBAAoB2B,GAChC,KAAK,SAAS,CACZ,gBAAAA,CACR,CAAO,EAEC3B,EAAU,iBAAmBuB,GAC/B,KAAK,SAAS,CACZ,eAAAA,CACR,CAAO,EAEH,GAAI,CACF,MAAO6B,EACP,WAAAC,CACN,EAAQ,KAAK,MACLD,IAAgBD,EAAU,QACxBA,EAAU,OAAS,MACrBA,EAAU,MAAM,QAEdC,GAAe,MACjB,KAAK,uBAAsB,GAG3BC,IAAeF,EAAU,YAC3B,KAAK,uBAAsB,CAE9B,CACD,sBAAuB,CACrB,GAAI,CACF,MAAA1B,CACN,EAAQ,KAAK,MACLA,GAAS,MACXA,EAAM,MAAK,EAEb,KAAK,mBAAqB,OAC1B,KAAK,sBAAqB,CAC3B,CACD,eAAgB,CACd,GAAI,CACF,MAAAA,CACN,EAAQ,KAAK,MACT,OAAIA,GAAS,KACJA,EAAM,QAAQ,CAAC,EAAE,KAEnB,EACR,CACD,yBAA0B,CACxB,GAAI,CACF,gBAAAE,EACA,eAAAJ,EACA,MAAAE,CACN,EAAQ,KAAK,MACT,OAAIA,GAAS,KACJ,KAELE,EACKF,EAAM,UAAYF,EAAe,OAEnCA,EAAe,MACvB,CACD,uBAAwB,CACtB,IAAI+B,EAAQ,KAAK,0BACb,CACF,MAAA7B,CACN,EAAQ,KAAK,MACL,CACF,UAAApB,CACN,EAAQ,KAAK,MACT,GAAIiD,GAAS,MAAQ7B,GAAS,KAAM,CAClC,IAAI8B,EAAiBlD,EAAU,mBAAmBiD,EAAO,MAAM,EAC3DE,EAAqBnD,EAAU,mBAAmBoB,EAAM,UAAW,MAAM,EACzEgC,EAAS,GACb,OAAIH,EAAQ,MACVG,EAAS,eAEJ,GAAG,OAAOA,CAAM,EAAE,OAAOF,EAAgB,MAAM,EAAE,OAAOC,CAAkB,CAClF,CACD,OAAO,IACR,CACD,iBAAkB,CAChB,GAAI,CACF,MAAA/B,CACN,EAAQ,KAAK,MACT,GAAIA,GAAS,KAGb,KAAIiC,EAAqBjC,EAAM,OAC/B,KAAK,mBAAqBiC,EAC1B,KAAK,mBAAmB,KAAKN,GAAe,CACtC,KAAK,qBAAuBM,GAC9B,KAAK,SAAS,CACZ,MAAON,CACjB,CAAS,EACD,KAAK,mBAAqB,QAE1BA,EAAY,MAAK,CAEzB,CAAK,EACF,CACD,iBAAiB7B,EAAgBI,EAAiB,CAChD,KAAK,SAAS,CACZ,eAAAJ,EACA,gBAAAI,CACN,CAAK,EACD,GAAI,CACF,SAAAzB,CACN,EAAQ,KAAK,MACTA,EAASqB,EAAgBI,CAAe,CACzC,CACD,mBAAmBxB,EAAO,CACxB,IAAIkD,EAAalD,EAAM,OAAO,MAC9B,KAAK,SAAS,CACZ,WAAAkD,CACN,CAAK,CACF,CACD,sBAAuB,CACrB,KAAK,eAAe,EAAI,CACzB,CACD,qBAAsB,CACpB,KAAK,eAAe,EAAK,CAC1B,CACD,2BAA4B,CAC1B,KAAK,kBAAoB,OACzB,KAAK,kBAAiB,CACvB,CACD,eAAe1B,EAAiB,CAC9B,IAAIJ,EAAiB,CAAA,EACrB,KAAK,SAAS,CACZ,gBAAAI,EACA,eAAAJ,CACN,CAAK,EACD,GAAI,CACF,SAAArB,CACN,EAAQ,KAAK,MACTA,EAASqB,EAAgBI,CAAe,CACzC,CACD,wBAAyB,CACvB,KAAK,sBAAqB,EAC1B,KAAK,kBAAoB,WAAW,KAAK,0BAA2BuB,GAAiC,kBAAkB,CACxH,CACD,uBAAwB,CAClB,KAAK,mBAAqB,OAC5B,aAAa,KAAK,iBAAiB,EACnC,KAAK,kBAAoB,OAE5B,CACD,mBAAoB,CAClB,GAAI,CACF,MAAAzB,EACA,WAAA4B,CACN,EAAQ,KAAK,MACL,CACF,SAAA3D,CACN,EAAQ,KAAK,MACL,CACF,WAAAC,CACD,EAAG,KACAH,EAASiC,GAAU,KAA2B,OAASA,EAAM,QAAQ,CAAC,EACtEC,EAAU,CAAA,EACd,GAAIlC,GAAU,KAGd,KAAImE,EACJ,GAAIN,EAAW,OAAS,EAAG,CACzB,IAAIO,EAAS,KACT5E,EAAW,WAAWQ,EAAO,IAAI,EAEnCoE,EAASjE,EAAW,gBAAgBH,EAAQ6D,CAAU,EAC7CrE,EAAW,WAAWQ,EAAO,IAAI,EAE1CoE,EAASjE,EAAW,gBAAgBH,EAAQ,IAAI,OAAO6D,CAAU,EAAG3D,CAAQ,EAI5EkE,EAASjE,EAAW,gBAAgBH,EAAQ,KAAK,OAAO6D,CAAU,EAAG3D,CAAQ,EAE3EkE,GAAU,KACZlC,EAAQ,KAAKkC,CAAM,EAEnBD,EAAQ,qBAEX,CACD,KAAK,SAAS,CACZ,QAAAjC,EACA,MAAAiC,CACN,CAAK,EACF,CACD,QAAS,CACP,GAAI,CACF,MAAAA,EACA,QAAAjC,EACA,gBAAAC,EACA,eAAAJ,EACA,WAAA8B,EACA,MAAA5B,CACN,EAAQ,KAAK,MACL,CACF,GAAAD,EACA,UAAAnB,EACA,WAAAwD,CACN,EAAQ,KAAK,MACLC,EAAa,KAAK,gBAClBC,EAAsB,KAAK,wBAC3BC,EAAkBF,EAAa,QAAQ,OAAOA,EAAY,KAAK,EAAI,GACvE,OAAoBhD,EAAAA,KAAM,MAAO,CAC/B,UAAW,uCACX,SAAU,CAAcA,EAAK,KAAC,MAAO,CACnC,UAAW+C,EAAa,aAAe,GACvC,SAAU,CAAchD,EAAI,IAAC,QAAS,CACpC,QAAS,6CACT,SAAU,eACpB,CAAS,EAAGgD,GAA2BhD,EAAI,IAAC,QAAS,CAC3C,KAAM,OACN,UAAWI,EAAW,eAAgB,CACpC,aAAc0C,GAAS,IACnC,CAAW,EACD,GAAI,6CACJ,YAAaK,EACb,MAAOX,EACP,SAAU,KAAK,kBACzB,CAAS,CAAC,CACV,CAAO,EAAgBxC,EAAI,IAACO,GAAsC,CAC1D,GAAII,EACJ,MAAOC,EACP,QAASC,EACT,gBAAiBC,EACjB,eAAgBJ,EAChB,UAAWlB,EACX,SAAU,KAAK,gBACvB,CAAO,EAAgBS,EAAK,KAAC,MAAO,CAC5B,UAAW,0CACX,SAAU,CAAcA,EAAK,KAAC,MAAO,CACnC,SAAU,CAAcD,EAAI,IAACK,EAAQ,CACnC,KAAM,QACN,QAAS,KAAK,qBACd,SAAU,YACtB,CAAW,EAAgBL,EAAI,IAACK,EAAQ,CAC5B,KAAM,QACN,QAAS,KAAK,oBACd,SAAU,OACtB,CAAW,CAAC,CACZ,CAAS,EAAgBL,EAAI,IAACmC,GAAgB,CACpC,GAAIe,GAAuB,KAC3B,aAAc,GACd,cAAe,GACf,SAAuBlD,EAAI,IAAC,MAAO,CACjC,UAAW,iBACX,SAAUkD,CACtB,CAAW,CACX,CAAS,CAAC,CACV,CAAO,CAAC,CACR,CAAK,CACF,CACH,CACAhG,GAAgBmF,GAAkC,qBAAsB,GAAG,EAC3EnF,GAAgBmF,GAAkC,eAAgB,CAChE,gBAAiB,GACjB,eAAgB,CAAE,EAClB,SAAU,IAAA,GACV,WAAY,EACd,CAAC,ECnTD,SAASnF,GAAgBC,EAAKC,EAAKC,EAAO,CAAE,OAAAD,EAAME,GAAeF,CAAG,EAAOA,KAAOD,EAAO,OAAO,eAAeA,EAAKC,EAAK,CAAE,MAAOC,EAAO,WAAY,GAAM,aAAc,GAAM,SAAU,EAAM,CAAA,EAAYF,EAAIC,CAAG,EAAIC,EAAgBF,CAAM,CAC5O,SAASG,GAAeC,EAAK,CAAE,IAAIH,EAAMI,GAAaD,EAAK,QAAQ,EAAG,OAAO,OAAOH,GAAQ,SAAWA,EAAM,OAAOA,CAAG,CAAI,CAC3H,SAASI,GAAaC,EAAOC,EAAM,CAAE,GAAI,OAAOD,GAAU,UAAYA,IAAU,KAAM,OAAOA,EAAO,IAAIE,EAAOF,EAAM,OAAO,WAAW,EAAG,GAAIE,IAAS,OAAW,CAAE,IAAIC,EAAMD,EAAK,KAAKF,EAAOC,GAAQ,SAAS,EAAG,GAAI,OAAOE,GAAQ,SAAU,OAAOA,EAAK,MAAM,IAAI,UAAU,8CAA8C,CAAI,CAAC,OAAQF,IAAS,SAAW,OAAS,QAAQD,CAAK,CAAI,CAqBzX,IAAII,GAAMC,GAAI,OAAO,uBAAuB,EAC5C,MAAMsF,WAA8BpF,EAAAA,aAAc,CAChD,OAAO,gBAAiB,CACtB,MAAO,CACL,IAAKqF,GAAQ,CACnB,CACG,CACD,YAAY5E,EAAO,CACjB,IAAI6E,EAAuBC,EAC3B,MAAM9E,CAAK,EACXvB,GAAgB,KAAM,qBAAsB,MAAM,EAClDA,GAAgB,KAAM,kBAAmB,MAAM,EAC/CA,GAAgB,KAAM,qBAAsB,MAAM,EAClDA,GAAgB,KAAM,iBAAkBsG,GAAQvF,GAAcE,EAAW,eAAeF,CAAU,CAAC,CAAC,EACpG,KAAK,aAAe,KAAK,aAAa,KAAK,IAAI,EAC/C,KAAK,YAAc,KAAK,YAAY,KAAK,IAAI,EAC7C,KAAK,2BAA6B,KAAK,2BAA2B,KAAK,IAAI,EAC3E,KAAK,WAAa,KAAK,WAAW,KAAK,IAAI,EAC3C,KAAK,mBAAqB,KAAK,mBAAmB,KAAK,IAAI,EAC3D,KAAK,mBAAqB,KAAK,mBAAmB,KAAK,IAAI,EAC3D,KAAK,wBAA0B,KAAK,wBAAwB,KAAK,IAAI,EACrE,KAAK,YAAc,KAAK,YAAY,KAAK,IAAI,EAC7C,KAAK,eAAiB,KAAK,eAAe,KAAK,IAAI,EACnD,KAAK,aAAe,KAAK,aAAa,KAAK,IAAI,EAC/C,KAAK,aAAe,KAAK,aAAa,KAAK,IAAI,EAC/C,KAAK,qBAAuB,KAAK,qBAAqB,KAAK,IAAI,EAC/D,KAAK,mBAAqB,KAAK,mBAAmB,KAAK,IAAI,EAC3D,KAAK,oBAAsB,KAAK,oBAAoB,KAAK,IAAI,EAC7D,KAAK,mBAAkCwF,GAAM,YAC7C,GAAI,CACF,MAAAC,EACA,OAAA/E,EACA,QAAAgF,CACD,EAAGlF,EACA,CACF,gBAAAmF,EACA,gBAAA9C,EACA,eAAAJ,CACD,EAAGiD,EAGAE,GAAeP,GAAyBC,EAAuBI,EAAQ,eAAiB,MAAQJ,IAAyB,OAAS,OAASA,EAAqB,IAAIO,GAAQ,CAC9K,GAAI,CACF,aAAA7E,EACA,MAAA5B,CACD,EAAGyG,EACJ,MAAO,CACL,aAAA7E,EACA,MAAA5B,EACA,IAAKgG,GAAQ,CACrB,CACA,CAAK,KAAO,MAAQC,IAA0B,OAASA,EAAwB,CAAA,EACvEO,EAAY,SAAW,GACzBA,EAAY,KAAKT,GAAsB,eAAgB,CAAA,EAErDQ,GAAmB,OACrBA,EAAkB,CAAA,GAEhB9C,GAAmB,OACrBA,EAAkB,IAEhBJ,GAAkB,OACpBA,EAAiB,CAAA,GAEnB,IAAIqD,EAAcL,EAAM,qBAAqB/E,EAAO,IAAI,EACxDqF,EAAcD,CAAW,EACzB,IAAIE,EAAaP,EAAM,iBAAiBK,CAAW,EACnD,KAAK,MAAQ,CAEX,YAAAF,EAEA,gBAAAD,EACA,gBAAA9C,EACA,eAAAJ,EACA,iBAAkB,KAClB,YAAa,OACb,WAAAuD,CACN,CACG,CACD,mBAAoB,CAClB,KAAK,gBAAe,CACrB,CACD,sBAAuB,CACjB,KAAK,iBAAmB,OAC1B,aAAa,KAAK,eAAe,EACjC,KAAK,WAAU,GAEb,KAAK,oBAAsB,MAC7B,KAAK,mBAAmB,QAE3B,CACD,uBAAuBC,EAAO,CAC5B,OAAO,KAAK,mBAAmB,KAAK,KAAMA,CAAK,CAChD,CACD,uBAAuBA,EAAO,CAC5B,OAAO,KAAK,mBAAmB,KAAK,KAAMA,CAAK,CAChD,CACD,iBAAkB,CAChB,GAAI,CACF,MAAAR,EACA,OAAA/E,CACN,EAAQ,KAAK,MACT,GAAI,CAAC+E,EAAM,uBAAwB,CACjC7F,GAAI,MAAM,6CAA6C,EACvD,MACD,CACD,KAAK,mBAAqBM,EAAW,2BAA2BuF,EAAM,YAAY/E,CAAM,CAAC,EACzF,KAAK,mBAAmB,KAAKwF,GAAe,CAC1C,IAAIC,EACJ,GAAK,GAAAA,EAAwBD,EAAY,QAAQ,CAAC,EAAE,cAAgB,MAAQC,IAA0B,SAASA,EAA8B,CAC3I,IAAIC,EAAOF,EAAY,QAAQ,CAAC,EAAE,KAAI,EAAG,MACzCA,EAAY,UAAU,CAACE,CAAI,CAAC,CAC7B,CACD,KAAK,SAAS,CACZ,YAAAF,CACR,CAAO,CACP,CAAK,EAAE,MAAMrB,GAAS,CACZwB,GAAa,WAAWxB,CAAK,IAGjCjF,GAAI,MAAM,8BAA+BiF,CAAK,EAC9C,KAAK,SAAS,CACZ,iBAAkBA,CAC1B,CAAO,EACP,CAAK,CACF,CACD,oBAAqB,CACnB,IAAIyB,EAAuBC,IACzBD,EAAwB,KAAK,sBAAwB,MAAQA,IAA0B,SAAmBC,EAAyBD,EAAsB,WAAa,MAAQC,IAA2B,OAAzG,OAA2HA,EAAuB,cAAc,8BAA8B,GAAG,OACpS,CACD,sBAAuB,CACrB,IAAIC,EAAwBC,EACxBC,GAAUF,EAAyB,KAAK,sBAAwB,MAAQA,IAA2B,SAAmBC,EAAyBD,EAAuB,WAAa,MAAQC,IAA2B,OAA1G,OAA4HA,EAAuB,iBAAiB,8BAA8B,EAClT,GAAIC,GAAUA,EAAO,OAAS,EAAG,CAC/B,IAAI5E,EAAU4E,EAAOA,EAAO,OAAS,CAAC,EACtC5E,EAAQ,MAAK,CACd,CACF,CACD,cAAe,CACb,GAAI,CACF,YAAA8D,EACA,gBAAAD,CACN,EAAQ,KAAK,MACTC,EAAcA,EAAY,OAAOT,GAAsB,eAAgB,CAAA,EACvEQ,EAAkBA,EAAgB,OAAOgB,GAAe,GAAG,EAC3D,KAAK,SAAS,CACZ,YAAAf,EACA,gBAAAD,CACN,CAAK,CACF,CACD,aAAc,CACZ,GAAI,CACF,YAAAC,EACA,gBAAAD,CACN,EAAQ,KAAK,MACTC,EAAcA,EAAY,OAAOT,GAAsB,eAAgB,CAAA,EACvEQ,EAAkBA,EAAgB,OAAOgB,GAAe,EAAE,EAC1D,KAAK,SAAS,CACZ,YAAAf,EACA,gBAAAD,CACN,CAAK,CACF,CACD,2BAA2BM,EAAOW,EAAU,CAC1C,GAAI,CACF,gBAAAjB,CACN,EAAQ,KAAK,MACTA,EAAkB,CAAC,GAAGA,CAAe,EACrCkB,GAA0BD,CAAQ,EAClCjB,EAAgBM,CAAK,EAAIW,EACzB,KAAK,SAAS,CACZ,gBAAAjB,CACN,CAAK,EACD,KAAK,iBAAgB,CACtB,CACD,mBAAmBmB,EAAa9F,EAAc5B,EAAO,CACnD,GAAI,CACF,YAAAwG,CACN,EAAQ,KAAK,MACTA,EAAc,CAAC,GAAGA,CAAW,EAC7B,GAAI,CACF,IAAAzG,CACN,EAAQyG,EAAYkB,CAAW,EAC3BlB,EAAYkB,CAAW,EAAI,CACzB,IAAA3H,EACA,aAAA6B,EACA,MAAA5B,CACN,EACI,KAAK,SAAS,CACZ,YAAAwG,CACN,CAAK,EACD,KAAK,iBAAgB,CACtB,CACD,mBAAmBkB,EAAa,CAC9B,GAAI,CACF,YAAAlB,EACA,gBAAAD,CACN,EAAQ,KAAK,MACTC,EAAc,CAAC,GAAGA,CAAW,EAC7BD,EAAkB,CAAC,GAAGA,CAAe,EACjCmB,EAAclB,EAAY,QAC5BA,EAAY,OAAOkB,EAAa,CAAC,EAE/BA,EAAcnB,EAAgB,OAChCA,EAAgB,OAAOmB,EAAa,CAAC,EAC5BA,IAAgBnB,EAAgB,QAEzCA,EAAgB,OAAOA,EAAgB,OAAS,EAAG,CAAC,EAElDC,EAAY,SAAW,GACzBA,EAAY,KAAKT,GAAsB,eAAgB,CAAA,EAEzD,KAAK,SAAS,CACZ,YAAAS,EACA,gBAAAD,CACN,CAAK,EACD,KAAK,iBAAgB,CACtB,CACD,wBAAwBlD,EAAgBI,EAAiB,CACvD,KAAK,SAAS,CACZ,eAAAJ,EACA,gBAAAI,CACN,CAAK,EACD,KAAK,iBAAgB,CACtB,CACD,aAAc,CACZjD,GAAI,MAAM,2BAA2B,EACrC,KAAK,SAAS,CACZ,YAAa,CAACuF,GAAsB,gBAAgB,EACpD,gBAAiB,CAAE,EACnB,eAAgB,CAAE,EAClB,gBAAiB,EACvB,CAAK,EACD,KAAK,iBAAgB,CACtB,CACD,eAAe9D,EAAO,CACpB,IAAI0F,EAAgBC,GAAmB,kBAAkB3F,CAAK,EAC9D,KAAK,UAAUnB,EAAW,cAAc,WAAY6G,CAAa,CAClE,CACD,aAAa1F,EAAO,CAClB,IAAI0F,EAAgBC,GAAmB,kBAAkB3F,CAAK,EAC9D,KAAK,UAAUnB,EAAW,cAAc,UAAW6G,CAAa,CACjE,CACD,aAAa1F,EAAO,CAClBzB,GAAI,MAAM,4BAA4B,EACtC,KAAK,gBAAe,EACpB,KAAK,WAAU,EACfyB,EAAM,eAAc,CACrB,CACD,WAAWA,EAAO,CAChBzB,GAAI,MAAM,wCAAwC,EAClD,KAAK,gBAAe,EACpB,KAAK,WAAU,EACf,GAAI,CACF,OAAAqH,CACN,EAAQ,KAAK,MACTA,IACA5F,EAAM,eAAc,CACrB,CACD,qBAAsB,CACpB,KAAK,gBAAkB,OACvB,KAAK,WAAU,CAChB,CAOD,qBAAsB,CACpB,GAAI,CACF,YAAAuE,CACN,EAAQ,KAAK,MACT,GAAIA,EAAY,SAAW,EACzB,MAAO,GAET,IAAIsB,EAAatB,EAAYA,EAAY,OAAS,CAAC,EAC/C,CACF,aAAA5E,EACA,MAAA5B,CACD,EAAG8H,EACJ,OAAOlG,GAAgB,MAAQA,EAAa,OAAS,GAAK5B,GAAS,MAAQA,EAAM,OAAS,CAC3F,CAOD,UAAU+H,EAAW,CACnB,IAAIJ,EAAgB,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GACpF,CACF,OAAArG,EACA,aAAA0G,CACN,EAAQ,KAAK,MACL,CACF,WAAApB,CACN,EAAQ,KAAK,MACLA,GACFoB,EAAa1G,EAAQyG,EAAWJ,CAAa,CAEhD,CACD,kBAAmB,CACjB,KAAK,gBAAe,EACpB,KAAK,gBAAkB,WAAW,KAAK,oBAAqB5B,GAAsB,oBAAoB,CACvG,CACD,iBAAkB,CACZ,KAAK,kBAAoB,SAC3B,aAAa,KAAK,eAAe,EACjC,KAAK,gBAAkB,OAE1B,CACD,YAAa,CACX,GAAI,CACF,YAAAS,EACA,gBAAAD,EACA,gBAAA9C,EACA,eAAAJ,CACN,EAAQ,KAAK,MACL,CACF,OAAA/B,EACA,eAAA2G,EACA,MAAA5B,EACA,WAAA5E,CACN,EAAQ,KAAK,MACL,CACF,UAAAU,CACD,EAAGkE,EACAvC,EAAQ0C,EAAY,OAAO0B,GAAS,CACtC,GAAI,CACF,aAAAtG,EACA,MAAA5B,CACD,EAAGkI,EACJ,OAAOtG,GAAgB,MAAQ5B,GAAS,MAAQA,IAAU,EAChE,CAAK,EACGmI,EAAY5B,EAAgB,OAAO,CAACiB,EAAUjF,IAAMiF,GAAY,MAAQhB,EAAYjE,CAAC,EAAE,cAAgB,MAAQiE,EAAYjE,CAAC,EAAE,OAAS,MAAQiE,EAAYjE,CAAC,EAAE,QAAU,EAAE,EAAE,MAAM,EAAGuB,EAAM,OAAS,CAAC,EAGrMwC,EAAU,CACZ,YAAaxC,EACb,gBAAiBqE,EACjB,gBAAA1E,EACA,eAAAJ,CACN,EACQqC,EAASjE,EAAW,mBAAmBH,EAAQgF,EAASnE,EAAU,QAAQ,EAC9E8F,EAAe3G,EAAQoE,EAAQY,CAAO,CACvC,CACD,QAAS,CACP,IAAI8B,EAAQ,KACR,CACF,OAAA9G,EACA,MAAA+E,EACA,cAAAgC,EACA,UAAAlG,EACA,WAAAV,CACN,EAAQ,KAAK,MACL,CACF,YAAA+E,EACA,gBAAAD,EACA,gBAAA9C,EACA,eAAAJ,EACA,YAAAyD,EACA,iBAAAwB,EACA,WAAA1B,CACN,EAAQ,KAAK,MACL,CACF,GAAAtD,EACA,uBAAAiF,CACD,EAAGlC,EACAmC,EAAY1H,EAAW,cAAcQ,EAAO,IAAI,EAChDmH,EAAa3H,EAAW,WAAWQ,EAAO,IAAI,EAC9CK,EAAc,KAAK,eAAeL,EAAO,IAAI,EAC7CV,EAAaU,EAAO,KAAK,UAAUA,EAAO,KAAK,YAAY,GAAG,EAAI,CAAC,EACnEoH,EAAqB,CAAA,EACzB,GAAI,CAACF,GAAa7G,EAAY,OA2C5B,QA1CIgH,EAAQ,SAAepG,EAAG,CAC5B,IAAIuF,EAAatB,EAAYjE,CAAC,EAC1B,CACF,IAAAxC,GACA,aAAA6B,GACA,MAAA5B,EACD,EAAG8H,EACApF,GAAuBC,EAAI,IAACjC,GAAiC,CAC/D,OAAQY,EACR,YAAaK,EACb,SAAUyG,EAAM,uBAAuB7F,CAAC,EACxC,SAAU6F,EAAM,uBAAuB7F,CAAC,EACxC,aAAcX,GACd,MAAO5B,GACP,UAAWmC,EACX,WAAYV,CACb,EAAE1B,EAAG,EAEN,GADA2I,EAAmB,KAAKhG,EAAO,EAC3BH,EAAIgE,EAAgB,OAAQ,CAC9B,IAAIqC,GAAiBrC,EAAgBhE,CAAC,EAClCsG,GAAcD,KAAmBrB,GAAe,IAChDuB,GAA+BlG,EAAK,KAAC,MAAO,CAC9C,UAAW,uEACX,SAAU,CAAcD,EAAI,IAACK,EAAQ,CACnC,KAAM,QACN,UAAWD,EAAW,kBAAmB,CACvC,OAAQ8F,EACxB,CAAe,EACD,QAAS,IAAMT,EAAM,2BAA2B7F,EAAGgF,GAAe,GAAG,EACrE,SAAU,KACxB,CAAa,EAAgB5E,EAAI,IAACK,EAAQ,CAC5B,KAAM,QACN,UAAWD,EAAW,kBAAmB,CACvC,OAAQ,CAAC8F,EACzB,CAAe,EACD,QAAS,IAAMT,EAAM,2BAA2B7F,EAAGgF,GAAe,EAAE,EACpE,SAAU,IACxB,CAAa,CAAC,CACH,EAAE,iBAAiB,OAAOxH,EAAG,CAAC,EAC/B2I,EAAmB,KAAKI,EAAe,CACxC,CACT,EACevG,EAAI,EAAGA,EAAIiE,EAAY,OAAQjE,GAAK,EAC3CoG,EAAMpG,CAAC,EAGX,IAAIwG,EAAoB,KAAK,sBACzBC,EAA6BpG,EAAK,KAAC,MAAO,CAC5C,UAAWG,EAAW,+CAAgD,CACpE,OAAQ,CAACgG,CACjB,CAAO,EACD,SAAU,CAAcpG,EAAI,IAAC,OAAQ,CACnC,UAAW,aACX,SAAuBA,EAAI,IAACsG,EAAiB,CAC3C,KAAMC,EAChB,CAAS,CACT,CAAO,EAAgBvG,EAAI,IAACK,EAAQ,CAC5B,KAAM,QACN,UAAW,kBACX,QAAS,KAAK,aACd,SAAU,CAAC+F,EACX,QAAS,sBACT,SAAU,KAClB,CAAO,EAAgBpG,EAAI,IAACK,EAAQ,CAC5B,KAAM,QACN,UAAW,kBACX,QAAS,KAAK,YACd,SAAU,CAAC+F,EACX,QAAS,qBACT,SAAU,IAClB,CAAO,CAAC,CACH,EAAE,eAAe,EAClB,OAAAL,EAAmB,KAAKM,CAAa,EACjBpG,EAAAA,KAAM,MAAO,CAC/B,UAAW,0BACX,KAAM,eACN,SAAU,CAAcD,EAAI,IAAC,MAAO,CAClC,SAAU,EACV,QAAS,KAAK,oBACtB,CAAO,EAAgBC,EAAK,KAAC,OAAQ,CAC7B,SAAU,KAAK,aACf,IAAK,KAAK,mBACV,SAAU,CAAcA,EAAK,KAAC,MAAO,CACnC,UAAW,YACX,SAAU,CAAcD,EAAI,IAAC,KAAM,CACjC,UAAW,wBACX,SAAU,kBACtB,CAAW,EAAgBC,EAAK,KAAC,MAAO,CAC5B,UAAW,+BACX,SAAU,CAAcD,EAAI,IAACK,EAAQ,CACnC,KAAM,QACN,UAAWD,EAAW,gBAAiB,CACrC,OAAQsF,IAAkBvH,EAAW,cAAc,UACnE,CAAe,EACD,QAAS,KAAK,eACd,KAAMqI,GACN,QAASvC,EAAa,QAAQ,OAAOtF,EAAO,KAAM,aAAa,EAAI,eACnE,SAAU,CAACsF,CACzB,CAAa,EAAgBjE,EAAI,IAACK,EAAQ,CAC5B,KAAM,QACN,UAAWD,EAAW,gBAAiB,CACrC,OAAQsF,IAAkBvH,EAAW,cAAc,SACnE,CAAe,EACD,QAAS,KAAK,aACd,KAAmB6B,EAAI,IAACsG,EAAiB,CACvC,KAAME,GACN,SAAU,GAC1B,CAAe,EACD,QAASvC,EAAa,QAAQ,OAAOtF,EAAO,KAAM,YAAY,EAAI,eAClE,SAAU,CAACsF,CACzB,CAAa,CAAC,CACd,CAAW,CAAC,CACZ,CAAS,EAAgBjE,EAAI,IAAC,KAAM,CAAE,CAAA,EAAgBC,EAAAA,KAAM,MAAO,CACzD,UAAW,8BACX,SAAU,CAACtB,EAAO,KAAM,IAAqBsB,EAAAA,KAAM,OAAQ,CACzD,UAAW,cACX,SAAU,CAAC,IAAKhC,EAAY,GAAG,CAC3C,CAAW,CAAC,CACZ,CAAS,EAAG8H,EAAoBH,GAA0BD,GAAoB,MAAqB1F,EAAK,KAACwG,WAAW,CAC1G,SAAU,CAAC,CAACZ,GAA0B7F,EAAI,IAAC,KAAM,EAAE,EAAgBA,EAAI,IAAC,MAAO,CAC7E,UAAW,aACX,SAAuBA,EAAI,IAACqC,GAAkC,CAC5D,GAAI1B,EACJ,MAAOwD,EACP,SAAU,KAAK,wBACf,gBAAiBrD,EACjB,eAAgBJ,EAChB,UAAWlB,EACX,WAAY,CAACsG,EACb,SAAUtG,EAAU,QAClC,CAAa,CACb,CAAW,CAAC,CACZ,CAAS,EAAgBS,EAAK,KAAC,MAAO,CAC5B,UAAW,+BACX,SAAU,CAAcD,EAAI,IAACK,EAAQ,CACnC,KAAM,YACN,UAAW,OACX,QAAS,KAAK,YACd,SAAU,OACtB,CAAW,EAAgBL,EAAI,IAACK,EAAQ,CAC5B,KAAM,UACN,QAAS,KAAK,WACd,SAAU,MACtB,CAAW,CAAC,CACZ,CAAS,CAAC,CACV,CAAO,EAAgBL,EAAI,IAAC,MAAO,CAC3B,SAAU,EACV,QAAS,KAAK,kBACtB,CAAO,CAAC,CACR,CAAK,CACF,CACH,CACA9C,GAAgBkG,GAAuB,uBAAwB,GAAG,EAClElG,GAAgBkG,GAAuB,eAAgB,CACrD,QAAS,CACP,YAAa,KACb,gBAAiB,KACjB,gBAAiB,GACjB,eAAgB,CAAE,CACnB,EACD,cAAe,IACjB,CAAC,EC3iBM,SAASsD,GAAsBC,EAAQC,EAAU,CACtD,IAAIC,EAAgBC,GAAiBH,CAAM,EAC3C,GAAIE,IAAkB,OAGtB,KAAIE,EAAoBC,GAAqBL,CAAM,EACnD,MAAO,GAAG,OAAOI,EAAmB,KAAK,EAAE,OAAOF,EAAe,KAAK,EAAE,OAAOD,CAAQ,EACzF,CACO,SAASK,GAAoBtG,EAAIuG,EAAM,CAC5C,OAAOvG,EAAG,OAAO,eAAeuG,CAAI,CACtC,CACO,SAASC,GAAuBC,EAAKF,EAAM,CAChD,OAAOE,EAAI,YAAYF,CAAI,CAC7B,CCbA,IAAIrJ,GAAMC,GAAI,OAAO,4BAA4B,EACtCuJ,IACV,SAAUA,EAAe,CACxBA,EAAc,YAAiB,cAC/BA,EAAc,KAAU,MAC1B,GAAGA,KAAkBA,GAAgB,CAAE,EAAC,EACjC,IAAIC,GACV,SAAUA,EAAiB,CAC1BA,EAAgB,SAAc,WAC9BA,EAAgB,aAAkB,eAClCA,EAAgB,WAAgB,aAChCA,EAAgB,aAAkB,eAClCA,EAAgB,sBAA2B,wBAC3CA,EAAgB,UAAe,YAC/BA,EAAgB,mBAAwB,qBACxCA,EAAgB,QAAa,UAC7BA,EAAgB,YAAiB,aACnC,GAAGA,IAAoBA,EAAkB,CAAE,EAAC,EACrC,IAAIC,GACV,SAAUA,EAAiB,CAC1BA,EAAgB,WAAgB,aAChCA,EAAgB,eAAoB,iBACpCA,EAAgB,SAAc,WAC9BA,EAAgB,iBAAsB,mBACtCA,EAAgB,YAAiB,cACjCA,EAAgB,UAAe,YAC/BA,EAAgB,QAAa,UAC7BA,EAAgB,YAAiB,aACnC,GAAGA,IAAoBA,EAAkB,CAAE,EAAC,EACrC,IAAIC,GACV,SAAUA,EAAe,CACxBA,EAAc,WAAgB,aAC9BA,EAAc,eAAoB,iBAClCA,EAAc,UAAe,YAC7BA,EAAc,mBAAwB,qBACtCA,EAAc,SAAc,WAC5BA,EAAc,kBAAuB,oBACrCA,EAAc,QAAa,UAC3BA,EAAc,YAAiB,aACjC,GAAGA,IAAkBA,EAAgB,CAAE,EAAC,EACjC,IAAIC,IACV,SAAUA,EAAkB,CAC3BA,EAAiB,QAAa,UAC9BA,EAAiB,SAAc,WAC/BA,EAAiB,QAAa,UAC9BA,EAAiB,YAAiB,aACpC,GAAGA,KAAqBA,GAAmB,CAAE,EAAC,EACvC,IAAIC,GACV,SAAUA,EAAe,CACxBA,EAAc,SAAc,WAC5BA,EAAc,aAAkB,eAChCA,EAAc,QAAa,UAC3BA,EAAc,YAAiB,aACjC,GAAGA,IAAkBA,EAAgB,CAAE,EAAC,EACjC,IAAIC,GACV,SAAUA,EAAiB,CAC1BA,EAAgB,cAAmB,gBACnCA,EAAgB,SAAc,WAC9BA,EAAgB,SAAc,WAC9BA,EAAgB,KAAU,OAC1BA,EAAgB,QAAa,UAC7BA,EAAgB,SAAc,WAC9BA,EAAgB,SAAc,WAC9BA,EAAgB,OAAY,QAC9B,GAAGA,IAAoBA,EAAkB,CAAE,EAAC,EACrC,SAASC,GAAqBC,EAAQ,CAC3C,OAAQA,EAAM,CACZ,KAAKF,EAAgB,cACnB,MAAO,gBACT,KAAKA,EAAgB,SACnB,MAAO,WACT,KAAKA,EAAgB,SACnB,MAAO,WACT,KAAKA,EAAgB,KACnB,MAAO,OACT,KAAKA,EAAgB,QACnB,MAAO,UACT,KAAKA,EAAgB,SACnB,MAAO,WACT,KAAKA,EAAgB,SACnB,MAAO,WACT,KAAKA,EAAgB,OACnB,MAAO,WACV,CACH,CACO,SAASG,GAA4BnB,EAAQ,CAClD,GAAI,CACF,KAAAoB,EACA,aAAAC,CACD,EAAGrB,EACJ,OAAQoB,EAAI,CACV,KAAKJ,EAAgB,cACnB,OACF,KAAKA,EAAgB,SACnB,MAAO,UACT,KAAKA,EAAgB,SACnB,MAAO,UACT,KAAKA,EAAgB,KACnB,MAAO,UACT,KAAKA,EAAgB,QACnB,MAAO,UACT,KAAKA,EAAgB,SACnB,MAAO,UACT,KAAKA,EAAgB,SACnB,MAAO,UACT,KAAKA,EAAgB,OACnB,OAAOK,GAAiB,KAAkC,OAASA,EAAa,WAClF,QACE,MACH,CACH,CACO,SAASC,GAAuBtB,EAAQ,CAC7C,GAAI,CACF,KAAAoB,EACA,aAAAC,CACD,EAAGrB,EACJ,OAAQoB,EAAI,CACV,KAAKJ,EAAgB,cACnB,OACF,KAAKA,EAAgB,SACnB,MAAO,UACT,KAAKA,EAAgB,SACnB,MAAO,UACT,KAAKA,EAAgB,KACnB,MAAO,UACT,KAAKA,EAAgB,QACnB,MAAO,UACT,KAAKA,EAAgB,SACnB,MAAO,UACT,KAAKA,EAAgB,SACnB,MAAO,UACT,KAAKA,EAAgB,OACnB,OAAOK,GAAiB,KAAkC,OAASA,EAAa,MAClF,QACE,MACH,CACH,CACO,SAASlB,GAAiBH,EAAQ,CACvC,IAAIuB,EAAQD,GAAuBtB,EAAO,KAAK,EAC3CwB,EAAKL,GAA4BnB,EAAO,KAAK,EACjD,GAAI,EAAAuB,IAAU,QAAaC,IAAO,QAGlC,MAAO,SAAS,OAAOA,EAAI,MAAM,EAAE,OAAOD,EAAO,IAAI,CACvD,CACA,SAASE,GAAuBzB,EAAQ,CACtC,GAAI,CACF,OAAAhI,EACA,MAAAtB,EACA,MAAAgL,EACA,IAAAC,CACD,EAAG3B,EACJ,OAAO4B,GAA0B5J,EAAO,KAAMgI,EAAO,UAAWtJ,EAAOgL,EAAOC,CAAG,CACnF,CACA,SAASE,GAAuB7B,EAAQ,CACtC,GAAI,CACF,OAAAhI,EACA,MAAAtB,CACD,EAAGsJ,EACJ,OAAO8B,GAA0B9J,EAAO,KAAMgI,EAAO,UAAWtJ,CAAK,CACvE,CACA,SAASqL,GAAqB/B,EAAQ,CACpC,GAAI,CACF,OAAAhI,EACA,MAAAtB,CACD,EAAGsJ,EACJ,OAAOgC,GAAwBhK,EAAO,KAAMgI,EAAO,UAAWtJ,CAAK,CACrE,CACA,SAASuL,GAAwBjC,EAAQ,CACvC,GAAI,CACF,OAAAhI,CACD,EAAGgI,EACJ,OAAOkC,GAA2BlK,EAAO,KAAMgI,EAAO,SAAS,CACjE,CACA,SAASmC,GAAqBnC,EAAQ,CACpC,GAAI,CACF,OAAAhI,EACA,MAAAtB,CACD,EAAGsJ,EACJ,OAAOoC,GAAwBpK,EAAO,KAAMgI,EAAO,UAAWtJ,CAAK,CACrE,CACO,SAAS2J,GAAqBL,EAAQ,CAC3C,GAAI,CACF,OAAAhI,CACD,EAAGgI,EACJ,GAAIxI,EAAW,aAAaQ,EAAO,IAAI,EACrC,OAAOyJ,GAAuBzB,CAAM,EAEtC,GAAIxI,EAAW,WAAWQ,EAAO,IAAI,EACnC,OAAOmK,GAAqBnC,CAAM,EAEpC,GAAIxI,EAAW,aAAaQ,EAAO,IAAI,EACrC,OAAO6J,GAAuB7B,CAAM,EAEtC,GAAIxI,EAAW,WAAWQ,EAAO,IAAI,EACnC,OAAO+J,GAAqB/B,CAAM,EAEpC,GAAIxI,EAAW,cAAcQ,EAAO,IAAI,EACtC,OAAOiK,GAAwBjC,CAAM,EAEvC,MAAM,IAAI,MAAM,qBAAqB,CACvC,CACO,SAASqC,GAA2BC,EAAW,CACpD,OAAQA,EAAS,CACf,KAAK3B,EAAgB,SACnB,MAAO,cACT,KAAKA,EAAgB,aACnB,MAAO,kBACT,KAAKA,EAAgB,WACnB,MAAO,aACT,KAAKA,EAAgB,aACnB,MAAO,eACT,KAAKA,EAAgB,sBACnB,MAAO,2BACT,KAAKA,EAAgB,UACnB,MAAO,YACT,KAAKA,EAAgB,mBACnB,MAAO,wBACT,KAAKA,EAAgB,QACnB,MAAO,UACT,KAAKA,EAAgB,YACnB,MAAO,aACV,CACH,CACO,SAAS4B,GAA2BD,EAAW,CACpD,OAAQA,EAAS,CACf,KAAK1B,EAAgB,WACnB,MAAO,aACT,KAAKA,EAAgB,eACnB,MAAO,iBACT,KAAKA,EAAgB,SACnB,MAAO,WACT,KAAKA,EAAgB,iBACnB,MAAO,mBACT,KAAKA,EAAgB,YACnB,MAAO,cACT,KAAKA,EAAgB,UACnB,MAAO,YACT,KAAKA,EAAgB,QACnB,MAAO,UACT,KAAKA,EAAgB,YACnB,MAAO,aACV,CACH,CACO,SAAS4B,GAAyBF,EAAW,CAClD,OAAQA,EAAS,CACf,KAAKzB,EAAc,WACjB,MAAO,KACT,KAAKA,EAAc,eACjB,MAAO,SACT,KAAKA,EAAc,UACjB,MAAO,YACT,KAAKA,EAAc,mBACjB,MAAO,qBACT,KAAKA,EAAc,SACjB,MAAO,WACT,KAAKA,EAAc,kBACjB,MAAO,oBACT,KAAKA,EAAc,QACjB,MAAO,UACT,KAAKA,EAAc,YACjB,MAAO,aACV,CACH,CACO,SAAS4B,GAA4BH,EAAW,CACrD,OAAQA,EAAS,CACf,KAAKxB,GAAiB,QACpB,MAAO,UACT,KAAKA,GAAiB,SACpB,MAAO,WACT,KAAKA,GAAiB,QACpB,MAAO,UACT,KAAKA,GAAiB,YACpB,MAAO,aACV,CACH,CACO,SAAS4B,GAAyBJ,EAAW,CAClD,OAAQA,EAAS,CACf,KAAKvB,EAAc,SACjB,MAAO,KACT,KAAKA,EAAc,aACjB,MAAO,SACT,KAAKA,EAAc,QACjB,MAAO,UACT,KAAKA,EAAc,YACjB,MAAO,aACV,CACH,CACO,SAAS4B,GAA2BrL,EAAY,CACrD,GAAIE,EAAW,aAAaF,CAAU,EACpC,OAAOqJ,EAAgB,SAEzB,GAAInJ,EAAW,WAAWF,CAAU,EAClC,OAAOyJ,EAAc,SAEvB,GAAIvJ,EAAW,aAAaF,CAAU,EACpC,OAAOsJ,EAAgB,WAEzB,GAAIpJ,EAAW,WAAWF,CAAU,EAClC,OAAOuJ,EAAc,WAEvB,GAAIrJ,EAAW,cAAcF,CAAU,EACrC,OAAOwJ,GAAiB,QAE1B,MAAM,IAAI,MAAM,qBAAqB,CACvC,CACO,SAAS8B,GAAuBtL,EAAY,CAIjD,GAHIE,EAAW,WAAWF,CAAU,GAGhCE,EAAW,aAAaF,CAAU,EACpC,MAAO,EAGX,CACO,SAASuL,GAAmB7C,EAAQ,CACzC,GAAI,CACF,UAAAsC,EACA,MAAA5L,EACA,MAAAgL,EACA,IAAAC,CACD,EAAG3B,EACJ,MAAO,CACL,UAAAsC,EACA,MAAA5L,EACA,MAAAgL,EACA,IAAAC,CACJ,CACA,CACO,SAASmB,GAAiC1B,EAAM,CACrD,MAAO,CACL,UAAWuB,GAA2BvB,CAAI,EAC1C,MAAOwB,GAAuBxB,CAAI,EAClC,MAAO,OACP,IAAK,MACT,CACA,CACO,SAAS2B,IAAwB,CACtC,MAAO,CACL,KAAM/B,EAAgB,aAC1B,CACA,CACA,SAASgC,GAAgCV,EAAW,CAClD,OAAQA,EAAS,CACf,KAAK1B,EAAgB,WACnB,MAAO,KACT,KAAKA,EAAgB,eACnB,MAAO,KACT,KAAKA,EAAgB,SACnB,MAAO,WACT,KAAKA,EAAgB,iBACnB,MAAO,mBACT,KAAKA,EAAgB,YACnB,MAAO,cACT,KAAKA,EAAgB,UACnB,MAAO,YACT,KAAKA,EAAgB,QACnB,MAAO,UACT,KAAKA,EAAgB,YACnB,MAAO,aACV,CACH,CACA,SAASqC,GAA8BX,EAAW,CAChD,OAAQA,EAAS,CACf,KAAKzB,EAAc,WACjB,MAAO,KACT,KAAKA,EAAc,eACjB,MAAO,KACT,KAAKA,EAAc,UACjB,MAAO,IACT,KAAKA,EAAc,mBACjB,MAAO,KACT,KAAKA,EAAc,SACjB,MAAO,IACT,KAAKA,EAAc,kBACjB,MAAO,KACT,KAAKA,EAAc,QACjB,MAAO,UACT,KAAKA,EAAc,YACjB,MAAO,aACV,CACH,CACA,SAASqC,GAAiCZ,EAAW,CACnD,OAAQA,EAAS,CACf,KAAKxB,GAAiB,QACpB,MAAO,UACT,KAAKA,GAAiB,SACpB,MAAO,WACT,KAAKA,GAAiB,QACpB,MAAO,UACT,KAAKA,GAAiB,YACpB,MAAO,aACV,CACH,CACA,SAASqC,GAA8Bb,EAAW,CAChD,OAAQA,EAAS,CACf,KAAKvB,EAAc,SACjB,MAAO,KACT,KAAKA,EAAc,aACjB,MAAO,KACT,KAAKA,EAAc,QACjB,MAAO,UACT,KAAKA,EAAc,YACjB,MAAO,aACV,CACH,CACO,SAASqC,GAAgCd,EAAW,CACzD,OAAQA,EAAS,CACf,KAAK3B,EAAgB,SACnB,MAAO,KACT,KAAKA,EAAgB,aACnB,MAAO,KACT,KAAKA,EAAgB,WACnB,MAAO,KACT,KAAKA,EAAgB,aACnB,MAAO,IACT,KAAKA,EAAgB,sBACnB,MAAO,KACT,KAAKA,EAAgB,UACnB,MAAO,IACT,KAAKA,EAAgB,mBACnB,MAAO,KACT,KAAKA,EAAgB,QACnB,MAAO,UACT,KAAKA,EAAgB,YACnB,MAAO,aACV,CACH,CACO,SAASiB,GAA0BtF,EAAYgG,EAAW5L,EAAOgL,EAAOC,EAAK,CAClF,OAAQW,EAAS,CACf,KAAK3B,EAAgB,SACnB,MAAO,GAAG,OAAOrE,EAAY,MAAM,EAAE,OAAO5F,CAAK,EACnD,KAAKiK,EAAgB,aACnB,MAAO,GAAG,OAAOrE,EAAY,MAAM,EAAE,OAAO5F,CAAK,EACnD,KAAKiK,EAAgB,WACnB,MAAO,GAAG,OAAOrE,EAAY,KAAK,EAAE,OAAOoF,EAAO,MAAM,EAAE,OAAOpF,EAAY,KAAK,EAAE,OAAOqF,CAAG,EAChG,KAAKhB,EAAgB,aACnB,MAAO,GAAG,OAAOrE,EAAY,KAAK,EAAE,OAAO5F,CAAK,EAClD,KAAKiK,EAAgB,sBACnB,MAAO,GAAG,OAAOrE,EAAY,MAAM,EAAE,OAAO5F,CAAK,EACnD,KAAKiK,EAAgB,UACnB,MAAO,GAAG,OAAOrE,EAAY,KAAK,EAAE,OAAO5F,CAAK,EAClD,KAAKiK,EAAgB,mBACnB,MAAO,GAAG,OAAOrE,EAAY,MAAM,EAAE,OAAO5F,CAAK,EACnD,KAAKiK,EAAgB,QACnB,MAAO,GAAG,OAAOrE,EAAY,UAAU,EACzC,KAAKqE,EAAgB,YACnB,MAAO,GAAG,OAAOrE,EAAY,UAAU,CAC1C,CACH,CACO,SAASwF,GAA0BxF,EAAYgG,EAAW5L,EAAO,CACtE,OAAQ4L,EAAS,CACf,KAAK1B,EAAgB,WACnB,MAAO,GAAG,OAAOtE,EAAY,OAAQ,EAAE,OAAO5F,EAAO,GAAI,EAC3D,KAAKkK,EAAgB,eACnB,MAAO,GAAG,OAAOtE,EAAY,OAAQ,EAAE,OAAO5F,EAAO,GAAI,EAC3D,KAAKkK,EAAgB,SACnB,MAAO,GAAG,OAAOtE,EAAY,cAAc,EAAE,OAAOA,EAAY,aAAc,EAAE,OAAO5F,EAAO,IAAK,EACrG,KAAKkK,EAAgB,iBACnB,MAAO,GAAG,OAAOtE,EAAY,eAAe,EAAE,OAAOA,EAAY,aAAc,EAAE,OAAO5F,EAAO,IAAK,EACtG,KAAKkK,EAAgB,YACnB,MAAO,GAAG,OAAOtE,EAAY,cAAc,EAAE,OAAOA,EAAY,eAAgB,EAAE,OAAO5F,EAAO,IAAK,EACvG,KAAKkK,EAAgB,UACnB,MAAO,GAAG,OAAOtE,EAAY,cAAc,EAAE,OAAOA,EAAY,aAAc,EAAE,OAAO5F,EAAO,IAAK,EACrG,KAAKkK,EAAgB,QACnB,MAAO,GAAG,OAAOtE,EAAY,UAAU,EACzC,KAAKsE,EAAgB,YACnB,MAAO,GAAG,OAAOtE,EAAY,UAAU,CAC1C,CACH,CACO,SAAS0F,GAAwB1F,EAAYgG,EAAW5L,EAAO,CACpE,OAAQ4L,EAAS,CACf,KAAKzB,EAAc,WACjB,MAAO,GAAG,OAAOvE,EAAY,uBAAwB,EAAE,OAAO5F,EAAO,IAAK,EAC5E,KAAKmK,EAAc,eACjB,MAAO,GAAG,OAAOvE,EAAY,uBAAuB,EAAE,OAAO5F,EAAO,IAAI,EAC1E,KAAKmK,EAAc,UACjB,MAAO,GAAG,OAAOvE,EAAY,sBAAsB,EAAE,OAAO5F,EAAO,IAAI,EACzE,KAAKmK,EAAc,mBACjB,MAAO,GAAG,OAAOvE,EAAY,wBAAyB,EAAE,OAAO5F,EAAO,IAAK,EAC7E,KAAKmK,EAAc,SACjB,MAAO,GAAG,OAAOvE,EAAY,sBAAsB,EAAE,OAAO5F,EAAO,IAAI,EACzE,KAAKmK,EAAc,kBACjB,MAAO,GAAG,OAAOvE,EAAY,wBAAwB,EAAE,OAAO5F,EAAO,IAAI,EAC3E,KAAKmK,EAAc,QACjB,MAAO,GAAG,OAAOvE,EAAY,UAAU,EACzC,KAAKuE,EAAc,YACjB,MAAO,GAAG,OAAOvE,EAAY,UAAU,CAC1C,CACH,CACO,SAAS4F,GAA2B5F,EAAYgG,EAAW,CAChE,OAAQA,EAAS,CACf,KAAKxB,GAAiB,QACpB,MAAO,GAAG,OAAOxE,EAAY,UAAU,EACzC,KAAKwE,GAAiB,SACpB,MAAO,GAAG,OAAOxE,EAAY,WAAW,EAC1C,KAAKwE,GAAiB,QACpB,MAAO,GAAG,OAAOxE,EAAY,UAAU,EACzC,KAAKwE,GAAiB,YACpB,MAAO,GAAG,OAAOxE,EAAY,UAAU,CAC1C,CACH,CACO,SAAS8F,GAAwB9F,EAAYgG,EAAW5L,EAAO,CACpE,OAAQ4L,EAAS,CACf,KAAKvB,EAAc,SACjB,MAAO,GAAG,OAAOzE,EAAY,OAAO,EAAE,OAAO5F,EAAO,GAAG,EACzD,KAAKqK,EAAc,aACjB,MAAO,GAAG,OAAOzE,EAAY,OAAO,EAAE,OAAO5F,EAAO,GAAG,EACzD,KAAKqK,EAAc,QACjB,MAAO,UAAU,OAAOzE,EAAY,GAAG,EACzC,KAAKyE,EAAc,YACjB,MAAO,WAAW,OAAOzE,EAAY,GAAG,CAC3C,CACH,CACO,SAAS+G,GAA8B/L,EAAYgL,EAAW,CACnE,GAAI9K,EAAW,aAAaF,CAAU,EACpC,OAAO8L,GAAgCd,CAAS,EAElD,GAAI9K,EAAW,WAAWF,CAAU,EAClC,OAAO6L,GAA8Bb,CAAS,EAEhD,GAAI9K,EAAW,aAAaF,CAAU,EACpC,OAAO0L,GAAgCV,CAAS,EAElD,GAAI9K,EAAW,WAAWF,CAAU,EAClC,OAAO2L,GAA8BX,CAAS,EAEhD,GAAI9K,EAAW,cAAcF,CAAU,EACrC,OAAO4L,GAAiCZ,CAAS,EAEnD,MAAM,IAAI,MAAM,qBAAqB,CACvC,CAQO,SAASgB,GAAiBtJ,EAAIuJ,EAASC,EAAO,CACnD,GAAIA,IAAU,OACZtM,OAAAA,GAAI,MAAM,kBAAkB,EACrB,GAET,IAAIuM,EAAS,CAAA,EAGTC,EACAC,EAAwB,IAAI,IAChC,OAAAH,EAAM,QAAQrG,GAAQ,CACpB,IAAIyG,EACA,CACF,OAAA5D,EACA,KAAM6D,CACP,EAAG1G,EACA,CACF,OAAAnF,CACD,EAAGgI,EAEAS,EAAM8C,EAAQ,KAAK3E,GAAS,CAC9B,GAAI,CACF,KAAAkF,EACA,KAAA1C,CACD,EAAGxC,EACJ,OAAOkF,IAAS9L,EAAO,MAAQoJ,IAASpJ,EAAO,IACrD,CAAK,EACD,GAAIyI,IAAQ,OAAW,CACrBvJ,GAAI,MAAM,UAAU,OAAOc,EAAO,KAAM,GAAG,EAAE,OAAOA,EAAO,KAAM,mCAAmC,EAAGgI,CAAM,EAC7G,MACD,CAED,GAAI,CAACC,EAAU8D,CAAgB,GAAKH,EAAQC,IAAkBnD,GAAc,YAAciD,EAAsB,IAAIlD,EAAI,IAAI,EAAIiD,KAAqB,MAAQE,IAAU,OAASA,EAAQ,CAAC,OAAQ,MAAS,EACtMrD,EAAOR,GAAsBC,EAAQC,CAAQ,EACjD,GAAIM,IAAS,OAAW,CACtBrJ,GAAI,MAAM,wBAAyB8I,CAAM,EACzC,MACD,CAED,IAAIzC,EAAQwG,IAAqB,OAAY,GAAKN,EAAO,QAAQM,CAAgB,EAC7ExG,EAAQ,IACVkG,EAAO,OAAOlG,EAAO,CAAC,EAExB,IAAIyG,EAAeH,IAAkBnD,GAAc,YAAcF,GAAuBC,EAAKF,CAAI,EAAID,GAAoBtG,EAAIuG,CAAI,EACjIkD,EAAO,KAAKO,CAAY,EACpBH,IAAkBnD,GAAc,YAClCiD,EAAsB,IAAIlD,EAAI,KAAM,CAACF,EAAMyD,CAAY,CAAC,EAExDN,EAAkB,CAACnD,EAAMyD,CAAY,CAE3C,CAAG,EACMP,CACT,CAOO,SAASQ,GAAqBjK,EAAIsI,EAAW5L,EAAO,CACzD,OAAQ4L,EAAS,CACf,KAAKzB,EAAc,QACnB,KAAKA,EAAc,YACjB,MAAO,GACT,QACE,CACE,GAAI,CAACqD,EAAgB,GAAGC,CAAI,GAAKzN,GAA6C,IAAI,MAAM,GAAG,EAGvF0N,EAASD,EAAK,KAAK,GAAG,EAC1B,GAAI,CACFE,GAAU,oBAAoBH,CAAc,CAC7C,MAAW,CACVhN,OAAAA,GAAI,MAAM,0BAA2BgN,CAAc,EAC5C,EACR,CACD,GAAI,CACFlK,EAAG,KAAK,SAAS,YAAYoK,CAAM,CACpC,MAAW,CACVlN,OAAAA,GAAI,MAAM,0BAA2BkN,CAAM,EACpC,EACR,CACD,MAAO,EACR,CACJ,CACH,CACO,SAASE,GAAkBC,EAAO,CACvC,GAAI,CACF,KAAAnD,CACD,EAAGmD,EACJ,OAAO/M,EAAW,aAAa4J,CAAI,GAAK5J,EAAW,WAAW4J,CAAI,GAAK5J,EAAW,aAAa4J,CAAI,GAAK5J,EAAW,WAAW4J,CAAI,GAAK5J,EAAW,cAAc4J,CAAI,CACtK,CCnnBO,SAASoD,GAAkBrH,EAAM,CACtC,GAAI,CACF,UAAAsH,EAAY,gCACZ,SAAAC,EACA,UAAAC,EACA,QAAAC,EACA,QAAAC,EACA,WAAAC,EACA,UAAAC,EACA,UAAAC,EACA,SAAAC,CACD,EAAG9H,EACJ,OAAoB9D,EAAAA,IAAK6L,GAAe,CACtC,GAAIN,EACJ,QAASO,GAAY,aACrB,WAAYV,EACZ,WAAYK,EACZ,UAAWC,EACX,UAAWC,EACX,SAAUC,EACV,aAAc,GACd,cAAe,GACf,SAAuB5L,EAAI,IAAC,MAAO,CACjC,UAAWI,EAAW,uBAAwBkL,CAAS,EACvD,KAAM,eACN,QAASE,EACT,WAAYA,EACZ,SAAUH,CAChB,CAAK,CACL,CAAG,CACH,CC3BA,IAAIU,GAAe,IACfC,GAAwB,EACrB,SAASC,GAAqBnI,EAAM,CACzC,GAAI,CACF,SAAAoI,EAAW,GACX,OAAAC,EACA,UAAAC,EACA,eAAAC,EACA,YAAAC,EACA,MAAAxJ,EACA,kBAAAyJ,EACA,eAAAC,EACA,WAAAf,EACA,UAAAC,EACA,UAAAC,EACA,SAAUc,CACX,EAAG3I,EACA,CAAC4I,EAAgBC,CAAiB,EAAIC,EAAQ,SAAC,EAAK,EACpD,CAACC,EAAiBC,CAAkB,EAAIF,EAAQ,SAAC,EAAK,EACtDG,EAAiBC,EAAAA,SACjBC,EAAeC,GAAYhB,CAAQ,EACnCiB,EAAeC,EAAAA,QAAQ,IACrBb,EAAkB,OAAS,EACtBzJ,EAELyJ,EAAkB,MAAQP,GACrB,qCAAqC,OAAOO,EAAkB,KAAO,EAAI,IAAM,GAAI,GAAG,EAAE,OAAO,MAAM,KAAKA,EAAkB,KAAI,CAAE,EAAE,KAAK,IAAI,EAAE,OAAQ,GAAG,EAE5J,0BAA0B,OAAOA,EAAkB,KAAM,QAAQ,EACvE,CAACzJ,EAAOyJ,CAAiB,CAAC,EAC7Bc,EAAS,UAAC,UAA8B,CAClCJ,GAAgB,MAAQA,GAAgB,CAACf,GAAYiB,GAAgB,OACvER,EAAkB,EAAI,EACtBG,EAAmB,EAAI,EACvBC,EAAe,QAAU,WAAW,IAAM,CACxCJ,EAAkB,EAAK,CACxB,EAAEZ,EAAY,EAElB,EAAE,CAACoB,EAAcjB,EAAUe,CAAY,CAAC,EACzCI,EAAS,UAAC,UAA8B,CAClCN,EAAe,SAAWP,EAAe,KAAO,IAElD,aAAaO,EAAe,OAAO,EACnCJ,EAAkB,EAAK,EACvBG,EAAmB,EAAK,EAE9B,EAAK,CAACN,CAAc,CAAC,EACnBa,EAAS,UAAC,UAA0B,CAClC,MAAO,IAAMN,EAAe,QAAU,aAAaA,EAAe,OAAO,EAAI,MAC9E,EAAE,CAAE,CAAA,EACL,IAAIO,EAAkBd,EAAe,KACjCe,EACJ,OAAIrB,EACFqB,EAA0BvN,EAAI,IAACoC,GAAgB,CAC7C,UAAW,gCACjB,CAAK,EACQyK,IACTU,EAAaC,IAEKvN,EAAAA,KAAMkL,GAAmB,CAC3C,UAAW,0BACX,QAASmC,EAAkB,GAAKZ,GAAkBS,GAAgB,KAClE,WAAY1B,EACZ,UAAWC,EACX,UAAWC,EACX,SAAU,IAAM,CACdmB,EAAmB,EAAK,EACpBL,GACFA,GAEH,EACD,SAAU,CAACU,GAAgB,MAAQA,IAAiB,IAAmBlN,EAAK,KAAC,MAAO,CAClF,UAAW,gBACX,SAAU,CAAcD,EAAI,IAACsG,EAAiB,CAC5C,KAAMmH,EACd,CAAO,EAAgBzN,EAAI,IAAC,OAAQ,CAC5B,SAAU,GAAG,OAAOmN,CAAY,CACxC,CAAO,CAAC,CACR,CAAK,GAAIA,GAAgB,MAAQA,IAAiB,KAAoBnN,EAAI,IAAC,MAAO,CAC5E,UAAW,iBACX,SAAUsN,EAAkB,GAAkBtN,EAAAA,IAAK,OAAQ,CACzD,SAAU,GAAG,OAAOsN,EAAiB,MAAM,EAAE,OAAOA,EAAkB,EAAI,IAAM,GAAI,UAAU,CACtG,CAAO,CACP,CAAK,EAAgBrN,EAAK,KAAC,MAAO,CAC5B,UAAW,oBACX,SAAU,CAAC,CAACiM,GAAY,CAACW,GAAgC7M,EAAAA,IAAKK,EAAQ,CACpE,KAAM,YACN,QAAS+L,EACT,QAASC,EACT,SAAU,SAClB,CAAO,EAAgBpM,EAAK,KAACI,EAAQ,CAC7B,KAAMwM,EAAkB,UAAY,UACpC,QAASV,EACT,KAAMoB,EACN,SAAUrB,GAAYW,GAAmBM,GAAgB,KACzD,QAASb,EACT,SAAU,CAACJ,GAAY,gBAAiB,CAACA,GAAYW,GAAmB,UAAW,CAACX,GAAY,CAACW,GAAmB,QAAQ,CACpI,CAAO,CAAC,CACR,CAAK,CAAC,CACN,CAAG,CACH,CC7GA,SAASa,GAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQ3Q,EAAKG,EAAK,CAAE,GAAI,CAAE,IAAIyQ,EAAOL,EAAIvQ,CAAG,EAAEG,CAAG,EAAOF,EAAQ2Q,EAAK,YAAgBlL,EAAO,CAAE+K,EAAO/K,CAAK,EAAG,MAAS,CAAKkL,EAAK,KAAQJ,EAAQvQ,CAAK,EAAY,QAAQ,QAAQA,CAAK,EAAE,KAAKyQ,EAAOC,CAAM,CAAM,CACzQ,SAASE,GAAkBC,EAAI,CAAE,OAAO,UAAY,CAAE,IAAIC,EAAO,KAAMC,EAAO,UAAW,OAAO,IAAI,QAAQ,SAAUR,EAASC,EAAQ,CAAE,IAAIF,EAAMO,EAAG,MAAMC,EAAMC,CAAI,EAAG,SAASN,EAAMzQ,EAAO,CAAEqQ,GAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQ,OAAQ1Q,CAAK,CAAI,CAAC,SAAS0Q,EAAOM,EAAK,CAAEX,GAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQ,QAASM,CAAG,EAAKP,EAAM,MAAS,EAAI,CAAI,CAAG,CACrY,SAAS5Q,GAAgBC,EAAKC,EAAKC,EAAO,CAAE,OAAAD,EAAME,GAAeF,CAAG,EAAOA,KAAOD,EAAO,OAAO,eAAeA,EAAKC,EAAK,CAAE,MAAOC,EAAO,WAAY,GAAM,aAAc,GAAM,SAAU,EAAM,CAAA,EAAYF,EAAIC,CAAG,EAAIC,EAAgBF,CAAM,CAC5O,SAASG,GAAeC,EAAK,CAAE,IAAIH,EAAMI,GAAaD,EAAK,QAAQ,EAAG,OAAO,OAAOH,GAAQ,SAAWA,EAAM,OAAOA,CAAG,CAAI,CAC3H,SAASI,GAAaC,EAAOC,EAAM,CAAE,GAAI,OAAOD,GAAU,UAAYA,IAAU,KAAM,OAAOA,EAAO,IAAIE,EAAOF,EAAM,OAAO,WAAW,EAAG,GAAIE,IAAS,OAAW,CAAE,IAAIC,EAAMD,EAAK,KAAKF,EAAOC,GAAQ,SAAS,EAAG,GAAI,OAAOE,GAAQ,SAAU,OAAOA,EAAK,MAAM,IAAI,UAAU,8CAA8C,CAAI,CAAC,OAAQF,IAAS,SAAW,OAAS,QAAQD,CAAK,CAAI,CAYzX,IAAII,GAAMC,GAAI,OAAO,qBAAqB,EAC1C,SAASwQ,GAAsBC,EAAe,CAC5C,OAAOA,EAAc,QAAU,IACjC,CACA,SAASC,GAAsBD,EAAe,CAC5C,OAAOA,EAAc,aAAe,IACtC,CAMA,MAAME,UAA4BC,EAAAA,SAAU,CAK1C,OAAO,qBAAqBC,EAAWC,EAAU,CAC/C,OAAQD,EAAS,CACf,KAAKF,EAAoB,YAAY,sBACnC,MAAO,iCAAiC,OAAOG,EAAS,eAAgB,EAAE,0BAA0B,EACtG,KAAKH,EAAoB,YAAY,eACnC,MAAO,WAAW,OAAOG,EAAS,eAAgB,EAAE,QAAQ,EAC9D,KAAKH,EAAoB,YAAY,YACnC,MAAO,uBACT,KAAKA,EAAoB,YAAY,yBACnC,MAAO,YAAY,OAAOG,EAAS,eAAgB,EAAE,wBAAwB,EAC/E,KAAKH,EAAoB,YAAY,yBACnC,MAAO,mCACT,KAAKA,EAAoB,YAAY,KACnC,MAAO,uBACT,QACE,MAAO,EACV,CACF,CACD,OAAO,kBAAkBI,EAAa,CACpC,OAAQA,EAAW,CACjB,KAAKJ,EAAoB,cAAc,kBACrC,MAAO,WACT,KAAKA,EAAoB,cAAc,cACrC,MAAO,gBACT,KAAKA,EAAoB,cAAc,MACrC,MAAO,QACT,QACE,MAAO,MACV,CACF,CACD,YAAYhQ,EAAO,CACjB,MAAMA,CAAK,EACXvB,GAAgB,KAAM,WAAY,MAAM,EACxCA,GAAgB,KAAM,YAAa,MAAM,EACzCA,GAAgB,KAAM,eAAgB,MAAM,EAC5C,KAAK,sBAAwB,KAAK,sBAAsB,KAAK,IAAI,EACjE,KAAK,kBAAoB,KAAK,kBAAkB,KAAK,IAAI,EACzD,KAAK,gBAAkB,KAAK,gBAAgB,KAAK,IAAI,EACrD,KAAK,kBAAoB,KAAK,kBAAkB,KAAK,IAAI,EACzD,KAAK,MAAQ,CACX,MAAO,OACP,UAAWuR,EAAoB,YAAY,KAC3C,YAAaA,EAAoB,cAAc,KAC/C,QAAS,GACT,SAAU,CAChB,CACG,CACD,mBAAoB,CAClB,GAAI,CACF,cAAAF,CACN,EAAQ,KAAK,MACLA,GAAiB,MACnB,KAAK,UAAS,CAEjB,CACD,mBAAmBpP,EAAW,CAC5B,GAAI,CACF,cAAAoP,CACN,EAAQ,KAAK,MACLpP,EAAU,gBAAkBoP,GAC9B,KAAK,UAAS,CAEjB,CACD,sBAAuB,CACrB,KAAK,SAAQ,CACd,CACD,WAAY,CACV1Q,GAAI,OAAO,WAAW,EACtB,KAAK,SAAQ,EACb,GAAI,CACF,cAAA0Q,CACN,EAAQ,KAAK,MACT,GAAIA,GAAiB,KAAM,CACzB1Q,GAAI,OAAO,uCAAuC,EAClD,KAAK,SAAS,CACZ,QAAS,EACjB,CAAO,EACD,MACD,CACD,GAAI,CACF,MAAAiF,CACD,EAAGyL,EACJ,GAAIzL,GAAS,KAAM,CACjBjF,GAAI,MAAM,qBAAsBiF,CAAK,EACrC,KAAK,SAAS,CACZ,QAAS,GACT,UAAW2L,EAAoB,YAAY,KAC3C,MAAA3L,CACR,CAAO,EACD,KAAK,eAAc,EACnB,MACD,CAKD,GAJA,KAAK,SAAS,CACZ,QAAS,GACT,MAAO,MACb,CAAK,EACGwL,GAAsBC,CAAa,EAAG,CACxC,GAAI,CACF,OAAAO,CACD,EAAGP,EACAK,EAAWG,GAAU,SAASD,CAAM,EAIxC,GAHA,KAAK,SAAS,CACZ,SAAAF,CACR,CAAO,EACGA,EAAWH,EAAoB,oBAAqB,CACtD,KAAK,SAAS,CACZ,YAAaA,EAAoB,cAAc,KAC/C,UAAWA,EAAoB,YAAY,qBACrD,CAAS,EACD,MACD,CACF,CACD,KAAK,WAAU,CAChB,CACD,UAAW,CACT,KAAK,SAAW,OAChB,KAAK,UAAS,EACd,KAAK,cAAa,CACnB,CACD,uBAAwB,CACtB5Q,GAAI,OAAO,uBAAuB,EAClC,GAAI,CACF,UAAA8Q,CACN,EAAQ,KAAK,MACLA,IAAcF,EAAoB,YAAY,MAChD,KAAK,SAAS,CACZ,QAAS,EACjB,CAAO,CAEJ,CACD,mBAAoB,CAClB5Q,GAAI,OAAO,mBAAmB,EAC9B,KAAK,UAAS,EACd,KAAK,SAAS,CACZ,QAAS,EACf,CAAK,CACF,CACD,iBAAkB,CAChB,IAAI4H,EAAQ,KACZ,OAAOwI,GAAkB,WAAa,CAEpC,GADApQ,GAAI,OAAO,iBAAiB,EACxB4H,EAAM,UAAY,KACpB,GAAI,CACF,MAAMA,EAAM,SAASA,EAAM,QAAQ,EACnCA,EAAM,aAAY,CACnB,OAAQjH,EAAG,CACVX,GAAI,MAAM,qBAAsBW,CAAC,EACjCiH,EAAM,SAAS,CACb,MAAO,kDACnB,CAAW,CACF,MAEDA,EAAM,WAAU,CAEnB,CAAA,GACF,CACD,mBAAoB,CAClB5H,GAAI,OAAO,mBAAmB,EAC9B,KAAK,cAAa,EAClB,KAAK,SAAS,CACZ,QAAS,EACf,CAAK,CACF,CACD,SAASmR,EAAM,CACb,IAAIC,EAAS,KACb,OAAOhB,GAAkB,WAAa,CACpCpQ,GAAI,OAAO,WAAYmR,CAAI,EAC3BC,EAAO,SAAWD,EAClB,MAAME,GAAgBF,CAAI,CAC3B,CAAA,GACF,CACD,cAAe,CACb,KAAK,SAAS,CACZ,UAAWP,EAAoB,YAAY,IACjD,CAAK,EACD,KAAK,eAAc,CACpB,CACD,YAAa,CACX,IAAIU,EAAS,KACb,OAAOlB,GAAkB,WAAa,CACpCkB,EAAO,UAAS,EAChB,GAAI,CACF,MAAAzL,EACA,cAAA6K,CACR,EAAUY,EAAO,MACX,GAAIX,GAAsBD,CAAa,EAAG,CACxC,GAAI,CACF,YAAAxK,EACA,YAAAqL,EACA,aAAAC,CACD,EAAGd,EACJ1Q,GAAI,MAAM,wBAAyBkG,EAAaqL,CAAW,EAC3DD,EAAO,SAAS,CACd,YAAaV,EAAoB,cAAc,kBAC/C,UAAWA,EAAoB,YAAY,wBACrD,CAAS,EACD,IAAIa,EAAaC,GAAU,cAAcxL,EAAasL,CAAY,EAC9DG,EAAW9L,EAAM,oBAAoB4L,EAAYF,CAAW,EAChE,GAAII,IAAa,OAAW,CAC1BL,EAAO,aAAe,OACtBA,EAAO,SAAS,CACd,MAAO,kCACP,UAAWV,EAAoB,YAAY,IACvD,CAAW,EACD,MACD,CACDU,EAAO,aAAe7K,GAAa,eAAekL,CAAQ,CAClE,KAAa,CACL,GAAI,CACF,OAAAV,EACA,eAAAW,EACA,iBAAAC,EACA,aAAcC,EACd,aAAAC,CACD,EAAGrB,EACJ1Q,GAAI,MAAM,wBAAyBiR,CAAM,EACzCK,EAAO,SAAS,CACd,YAAaV,EAAoB,cAAc,kBAC/C,UAAWA,EAAoB,YAAY,wBACrD,CAAS,EACD,IAAIoB,EAAgBC,EAAc,iBAAiBJ,CAAgB,EAC/DK,EAAcR,GAAU,eAAeT,EAAQa,CAAa,EAChE,GAAIE,EAAc,OAAS,EAAG,CAC5B,IAAIG,EAAiBH,EAAc,IAAId,GAAU,UAAU,EAC3DgB,EAAchB,GAAU,yBAAyBgB,EAAaC,CAAc,CAC7E,CAGD,IAAIC,EAAcL,GAAgB,MAAQA,EAAe,CAACvS,EAAOsB,IAAW+E,EAAM,cAAcrG,EAAOsB,EAAO,KAAMA,EAAO,IAAI,EAAItB,GAAS,GAAG,OAAOA,CAAK,EAC3J8R,EAAO,aAAe7K,GAAa,eAAeZ,EAAM,aAAaqM,EAAaN,EAAgBQ,CAAW,CAAC,CAC/G,CACD,GAAI,CACF,IAAIjB,EAAO,MAAMG,EAAO,aACxBA,EAAO,aAAe,OACtB,GAAI,CACF,MAAMA,EAAO,SAASH,CAAI,EAC1BG,EAAO,aAAY,CACpB,OAAQ3Q,EAAG,CACVX,GAAI,MAAM,qBAAsBW,CAAC,EACjC2Q,EAAO,SAAS,CACd,YAAaV,EAAoB,cAAc,cAC/C,UAAWA,EAAoB,YAAY,cACvD,CAAW,CACF,CACF,OAAQjQ,EAAG,CACNA,aAAa0R,GACfrS,GAAI,MAAM,sBAAsB,GAEhCA,GAAI,MAAM,0BAA2BW,CAAC,EACtC2Q,EAAO,aAAe,OACtBA,EAAO,SAAS,CACd,YAAaV,EAAoB,cAAc,MAC/C,UAAWA,EAAoB,YAAY,WACvD,CAAW,EAEJ,CACF,CAAA,GACF,CACD,WAAY,CACN,KAAK,eACP5Q,GAAI,OAAO,WAAW,EACtB,KAAK,aAAa,SAClB,KAAK,aAAe,OAEvB,CACD,gBAAiB,CACf,KAAK,cAAa,EAClB,KAAK,UAAY,WAAW,KAAK,kBAAmB4Q,EAAoB,YAAY,CACrF,CACD,eAAgB,CACV,KAAK,WAAa,OACpB,aAAa,KAAK,SAAS,EAC3B,KAAK,UAAY,OAEpB,CACD,QAAS,CACP,GAAI,CACF,WAAAhD,EACA,UAAAC,EACA,UAAAC,EACA,SAAAC,CACN,EAAQ,KAAK,MACL,CACF,YAAAiD,EACA,UAAAF,EACA,QAAApD,EACA,SAAAqD,EACA,MAAA9L,CACN,EAAQ,KAAK,MACLsI,EAAYuD,IAAcF,EAAoB,YAAY,KAAO,OAAS,gBAC1E0B,EAAiB1B,EAAoB,kBAAkBI,CAAW,EAClEuB,EAAoBtN,GAA6C2L,EAAoB,qBAAqBE,EAAWC,CAAQ,EAC7HyB,EAA2B1B,IAAcF,EAAoB,YAAY,KACzE6B,EAAazB,IAAgBJ,EAAoB,cAAc,kBAC/D8B,EAAS5B,IAAcF,EAAoB,YAAY,KAC3D,OAAoBxO,EAAAA,KAAMkL,GAAmB,CAC3C,UAAWC,EACX,QAASG,EACT,UAAWnL,EAAW,yBAA0B,CAC9C,YAAamQ,CACrB,CAAO,EACD,QAAS,KAAK,sBACd,WAAY9E,EACZ,UAAWC,EACX,UAAWC,EACX,SAAUC,EACV,SAAU,CAAc5L,EAAI,IAAC,MAAO,CAClC,UAAW,iBACX,SAAuBA,EAAI,IAAC,OAAQ,CAClC,SAAUoQ,CACpB,CAAS,CACT,CAAO,EAAgBpQ,EAAI,IAACmC,GAAgB,CACpC,GAAIkO,EACJ,aAAc,GACd,cAAe,GACf,SAAuBpQ,EAAK,KAAC,MAAO,CAClC,UAAW,oBACX,SAAU,CAAcD,EAAI,IAAC,SAAU,CACrC,KAAM,SACN,UAAW,uCACX,QAAS,KAAK,kBACd,SAAU,QACtB,CAAW,EAAgBC,EAAK,KAACI,EAAQ,CAC7B,KAAMiQ,EAAa,WAAa,UAChC,UAAWlQ,EAAW,WAAY,CAChC,cAAekQ,CAC7B,CAAa,EACD,QAAS,KAAK,gBACd,SAAUA,EACV,SAAU,CAACA,GAA2BtQ,EAAI,IAACoC,GAAgB,CACzD,UAAW,gCACZ,CAAA,EAAG+N,CAAc,CAC9B,CAAW,CAAC,CACZ,CAAS,CACT,CAAO,CAAC,CACR,CAAK,CACF,CACH,CACAjT,GAAgBuR,EAAqB,sBAAuB,GAAK,EACjEvR,GAAgBuR,EAAqB,eAAgB,GAAI,EACzDvR,GAAgBuR,EAAqB,cAAe,CAElD,KAAM,OAEN,sBAAuB,wBAEvB,yBAA0B,2BAE1B,yBAA0B,2BAE1B,YAAa,cAEb,eAAgB,iBAEhB,KAAM,MACR,CAAC,EACDvR,GAAgBuR,EAAqB,gBAAiB,CACpD,KAAM,OACN,kBAAmB,oBACnB,cAAe,gBACf,MAAO,OACT,CAAC,EACDvR,GAAgBuR,EAAqB,eAAgB,CACnD,cAAe,KACf,WAAY,IAAA,GACZ,UAAW,IAAA,GACX,UAAW,IAAA,GACX,SAAU,IAAA,EACZ,CAAC,ECjZD,SAASvR,GAAgBC,EAAKC,EAAKC,EAAO,CAAE,OAAAD,EAAME,GAAeF,CAAG,EAAOA,KAAOD,EAAO,OAAO,eAAeA,EAAKC,EAAK,CAAE,MAAOC,EAAO,WAAY,GAAM,aAAc,GAAM,SAAU,EAAM,CAAA,EAAYF,EAAIC,CAAG,EAAIC,EAAgBF,CAAM,CAC5O,SAASG,GAAeC,EAAK,CAAE,IAAIH,EAAMI,GAAaD,EAAK,QAAQ,EAAG,OAAO,OAAOH,GAAQ,SAAWA,EAAM,OAAOA,CAAG,CAAI,CAC3H,SAASI,GAAaC,EAAOC,EAAM,CAAE,GAAI,OAAOD,GAAU,UAAYA,IAAU,KAAM,OAAOA,EAAO,IAAIE,EAAOF,EAAM,OAAO,WAAW,EAAG,GAAIE,IAAS,OAAW,CAAE,IAAIC,EAAMD,EAAK,KAAKF,EAAOC,GAAQ,SAAS,EAAG,GAAI,OAAOE,GAAQ,SAAU,OAAOA,EAAK,MAAM,IAAI,UAAU,8CAA8C,CAAI,CAAC,OAAQF,IAAS,SAAW,OAAS,QAAQD,CAAK,CAAI,CAczX,MAAM+S,WAAyBxS,EAAAA,aAAc,CAC3C,YAAYS,EAAO,CACjB,MAAMA,CAAK,EACXvB,GAAgB,KAAM,aAAc,MAAM,EAC1CA,GAAgB,KAAM,eAAgB,MAAM,EAC5CA,GAAgB,KAAM,sBAAuB,MAAM,EACnD,GAAI,CACF,WAAAuT,CACD,EAAGhS,EACJ,KAAK,oBAAsBiS,GAAS,KAAK,WAAW,KAAK,IAAI,EAAGD,CAAU,EAC1E,KAAK,aAAe,KAAK,aAAa,KAAK,IAAI,EAC/C,KAAK,aAAe,KAAK,aAAa,KAAK,IAAI,EAC/C,KAAK,aAAe,KAAK,aAAa,KAAK,IAAI,EAC/C,KAAK,YAAc,KAAK,YAAY,KAAK,IAAI,EAC7C,KAAK,WAAa,KAAK,WAAW,KAAK,IAAI,EAC3C,KAAK,cAAgB,KAAK,cAAc,KAAK,IAAI,EACjD,KAAK,kBAAoB,KAAK,kBAAkB,KAAK,IAAI,EACzD,KAAK,WAAa,KAClB,GAAI,CACF,MAAApT,CACD,EAAGoB,EACJ,KAAK,aAAepB,EACpB,KAAK,MAAQ,CACX,UAAW,GACX,MAAAA,CACN,CACG,CACD,mBAAoB,CAClB,IAAIsT,GACHA,EAAmB,KAAK,cAAgB,MAAQA,IAAqB,QAAkBA,EAAiB,MAAK,CAC/G,CACD,mBAAmBxR,EAAW,CAC5B,GAAI,CACF,WAAAsR,CACN,EAAQ,KAAK,MACLtR,EAAU,aAAesR,IAC3B,KAAK,oBAAoB,QACzB,KAAK,oBAAsBC,GAAS,KAAK,WAAW,KAAK,IAAI,EAAGD,CAAU,EAE7E,CACD,sBAAuB,CACrB,KAAK,oBAAoB,QAC1B,CAID,SAASpT,EAAO,CACd,KAAK,aAAeA,EACpB,KAAK,SAAS,CACZ,MAAAA,CACN,CAAK,CACF,CACD,OAAQ,CACN,IAAIuT,GACHA,EAAoB,KAAK,cAAgB,MAAQA,IAAsB,QAAkBA,EAAkB,MAAK,CAClH,CACD,aAAatR,EAAO,CAClB,GAAI,CACF,MAAAjC,CACN,EAAQiC,EAAM,OACV,KAAK,SAAS,CACZ,MAAAjC,EACA,UAAW,EACjB,CAAK,EACD,KAAK,oBAAoBA,CAAK,CAC/B,CACD,cAAe,CACb,KAAK,oBAAoB,SACzB,GAAI,CACF,aAAAwT,CACD,EAAG,KACA,CACF,UAAAC,CACN,EAAQ,KAAK,MACLA,GACF,KAAK,WAAWD,CAAY,EAE9B,GAAI,CACF,OAAA3L,CACN,EAAQ,KAAK,MACTA,GACD,CACD,cAAe,CACb,IAAI6L,EAAe,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GACnFC,EAAe,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GACvF,KAAK,oBAAoB,QACzB,GAAI,CACF,OAAA9L,CACN,EAAQ,KAAK,MACTA,EAAO6L,EAAcC,CAAY,CAClC,CACD,aAAc,CACZ,IAAIC,GACHA,EAAoB,KAAK,cAAgB,MAAQA,IAAsB,QAAkBA,EAAkB,OAAM,CACnH,CACD,WAAW3R,EAAO,CAChB,GAAI,CACF,cAAA4R,CACD,EAAG5R,EAEA4R,GAAiB,MAAQA,EAAc,UAAU,SAAS,wBAAwB,EAGpF,KAAK,aAAa,GAAO,EAAI,EACpBA,GAAiB,MAAQA,EAAc,UAAU,SAAS,wBAAwB,EAG3F,KAAK,aAAa,GAAO,EAAK,EAG9B,KAAK,aAAa,GAAM,EAAI,CAE/B,CACD,WAAY,CACV,IAAIC,EAAW,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GACnF,KAAK,oBAAoB,QACzB,GAAI,CACF,MAAAC,CACN,EAAQ,KAAK,MACTA,EAAMD,CAAQ,CACf,CACD,cAAc7R,EAAO,CACnB,OAAQA,EAAM,IAAG,CACf,IAAK,SACHA,EAAM,gBAAe,EACrBA,EAAM,eAAc,EACpB,KAAK,aAAY,EACjB,MACF,IAAK,QACHA,EAAM,gBAAe,EACrBA,EAAM,eAAc,EACpB,KAAK,aAAY,EACjB,MACF,IAAK,MACHA,EAAM,gBAAe,EACrBA,EAAM,eAAc,EACpB,KAAK,UAAUA,EAAM,QAAQ,EAC7B,KAGH,CACF,CACD,kBAAkBA,EAAO,CACvB,GAAI,CACF,cAAA+R,CACN,EAAQ,KAAK,MACTA,EAAc/R,CAAK,CACpB,CACD,WAAWjC,EAAO,CAChB,GAAI,CACF,SAAAgC,CACN,EAAQ,KAAK,MACTA,EAAShC,CAAK,CACf,CACD,QAAS,CACP,GAAI,CACF,UAAAiO,EACA,MAAAgG,EACA,oBAAAC,EACA,2BAAAC,CACN,EAAQ,KAAK,MACL,CACF,MAAAnU,CACN,EAAQ,KAAK,MACT,OAAoB4C,EAAAA,KAAM,MAAO,CAC/B,MAAOqR,EACP,UAAW,oCACX,aAAcjU,EAEd,SAAU,CAAc2C,EAAI,IAAC,QAAS,CACpC,IAAKyR,GAAc,CACjB,KAAK,WAAaA,CACnB,EACD,UAAWrR,EAAW,wBAAyBkL,CAAS,EACxD,KAAM,OACN,MAAOjO,EACP,OAAQ,KAAK,WACb,QAAS,KAAK,YACd,SAAU,KAAK,aACf,UAAW,KAAK,cAChB,cAAe,KAAK,kBACpB,aAAc,MACd,YAAa,MACb,eAAgB,MAChB,WAAY,OACpB,CAAO,EAAgB2C,EAAI,IAAC,MAAO,CAC3B,UAAW,mCACX,SAAuBA,EAAI,IAACK,EAAQ,CAClC,KAAM,QACN,UAAWD,EAAW,uCAAwC,CAC5D,aAAcmR,CAC1B,CAAW,EACD,QAASC,EACT,cAAe,KAAK,kBACpB,SAAuBvR,EAAK,KAAC,MAAO,CAClC,UAAW,aACX,SAAU,CAAcD,EAAI,IAACsG,EAAiB,CAC5C,KAAMoL,GACN,UAAW,cACzB,CAAa,EAAgB1R,EAAI,IAACsG,EAAiB,CACrC,KAAMqL,GACN,UAAW,cACzB,CAAa,CAAC,CACd,CAAW,CACX,CAAS,CACT,CAAO,CAAC,CACR,CAAK,CACF,CACH,CACAzU,GAAgBsT,GAAkB,eAAgB,CAChD,MAAO,CAAE,EACT,UAAW,GACX,MAAO,GACP,oBAAqB,GACrB,2BAA4B,IAAA,GAC5B,SAAU,IAAA,GACV,OAAQ,IAAA,GACR,MAAO,IAAA,GACP,cAAe,IAAA,GACf,WAAY,GACd,CAAC,EC5OD,SAAStT,GAAgBC,EAAKC,EAAKC,EAAO,CAAE,OAAAD,EAAME,GAAeF,CAAG,EAAOA,KAAOD,EAAO,OAAO,eAAeA,EAAKC,EAAK,CAAE,MAAOC,EAAO,WAAY,GAAM,aAAc,GAAM,SAAU,EAAM,CAAA,EAAYF,EAAIC,CAAG,EAAIC,EAAgBF,CAAM,CAC5O,SAASG,GAAeC,EAAK,CAAE,IAAIH,EAAMI,GAAaD,EAAK,QAAQ,EAAG,OAAO,OAAOH,GAAQ,SAAWA,EAAM,OAAOA,CAAG,CAAI,CAC3H,SAASI,GAAaC,EAAOC,EAAM,CAAE,GAAI,OAAOD,GAAU,UAAYA,IAAU,KAAM,OAAOA,EAAO,IAAIE,EAAOF,EAAM,OAAO,WAAW,EAAG,GAAIE,IAAS,OAAW,CAAE,IAAIC,EAAMD,EAAK,KAAKF,EAAOC,GAAQ,SAAS,EAAG,GAAI,OAAOE,GAAQ,SAAU,OAAOA,EAAK,MAAM,IAAI,UAAU,8CAA8C,CAAI,CAAC,OAAQF,IAAS,SAAW,OAAS,QAAQD,CAAK,CAAI,CAGzX,MAAMmU,WAA2BC,EAAW,CAC1C,YAAYC,EAAU,CACpB,QACA5U,GAAgB,KAAM,WAAY,MAAM,EACxC,KAAK,SAAW4U,EAChB,KAAK,OAAS,IACf,CACD,OAAOxS,EAAOyS,EAAM,CAClB,GAAIzS,EAAM,QAAU,CAAC2F,GAAmB,kBAAkB3F,CAAK,GAAK,CAACA,EAAM,SAAU,CACnF,GAAI,CACF,OAAA0S,EACA,OAAAC,CACR,EAAUF,EAAK,MACT,GAAIC,GAAU,MAAQC,GAAU,KAC9B,MAAO,GAET,IAAIC,EAAYH,EAAK,mBAAmBC,EAAQC,CAAM,EACtD,GAAIC,EAAU,QAAU,MAAQA,EAAU,KAAO,KAC/C,YAAK,OAAS,KAAK,SAAS,MAAM,WAC3B,EAEV,CACD,MAAO,EACR,CACD,KAAK5S,EAAOyS,EAAM,CAChB,OAAI,KAAK,SAAW,KAAK,SAAS,MAAM,YACtC,KAAK,OAAS,KACP,IAEF,EACR,CACH,CCpCA,SAAS7U,GAAgBC,EAAKC,EAAKC,EAAO,CAAE,OAAAD,EAAME,GAAeF,CAAG,EAAOA,KAAOD,EAAO,OAAO,eAAeA,EAAKC,EAAK,CAAE,MAAOC,EAAO,WAAY,GAAM,aAAc,GAAM,SAAU,EAAM,CAAA,EAAYF,EAAIC,CAAG,EAAIC,EAAgBF,CAAM,CAC5O,SAASG,GAAeC,EAAK,CAAE,IAAIH,EAAMI,GAAaD,EAAK,QAAQ,EAAG,OAAO,OAAOH,GAAQ,SAAWA,EAAM,OAAOA,CAAG,CAAI,CAC3H,SAASI,GAAaC,EAAOC,EAAM,CAAE,GAAI,OAAOD,GAAU,UAAYA,IAAU,KAAM,OAAOA,EAAO,IAAIE,EAAOF,EAAM,OAAO,WAAW,EAAG,GAAIE,IAAS,OAAW,CAAE,IAAIC,EAAMD,EAAK,KAAKF,EAAOC,GAAQ,SAAS,EAAG,GAAI,OAAOE,GAAQ,SAAU,OAAOA,EAAK,MAAM,IAAI,UAAU,8CAA8C,CAAI,CAAC,OAAQF,IAAS,SAAW,OAAS,QAAQD,CAAK,CAAI,CAMzX,MAAM0U,WAAuBN,EAAW,CACtC,YAAYC,EAAU,CACpB,QACA5U,GAAgB,KAAM,WAAY,MAAM,EACxC,KAAK,SAAW4U,CACjB,CACD,OAAOxS,EAAO,CACZ,GAAI,CACF,eAAA8S,CACN,EAAQ,KAAK,SAAS,MAClB,OAAI9S,EAAM,MAAQ,KAAO2F,GAAmB,kBAAkB3F,CAAK,GAC7DwQ,EAAc,sBAAsBsC,CAAc,EACpD,KAAK,SAAS,WAAWA,CAAc,EAEvC,KAAK,SAAS,WAAWA,EAAgB,GAAO,GAAO,qBAAqB,EAEvE,IAEF,EACR,CACH,CC5BA,SAASlV,GAAgBC,EAAKC,EAAKC,EAAO,CAAE,OAAAD,EAAME,GAAeF,CAAG,EAAOA,KAAOD,EAAO,OAAO,eAAeA,EAAKC,EAAK,CAAE,MAAOC,EAAO,WAAY,GAAM,aAAc,GAAM,SAAU,EAAM,CAAA,EAAYF,EAAIC,CAAG,EAAIC,EAAgBF,CAAM,CAC5O,SAASG,GAAeC,EAAK,CAAE,IAAIH,EAAMI,GAAaD,EAAK,QAAQ,EAAG,OAAO,OAAOH,GAAQ,SAAWA,EAAM,OAAOA,CAAG,CAAI,CAC3H,SAASI,GAAaC,EAAOC,EAAM,CAAE,GAAI,OAAOD,GAAU,UAAYA,IAAU,KAAM,OAAOA,EAAO,IAAIE,EAAOF,EAAM,OAAO,WAAW,EAAG,GAAIE,IAAS,OAAW,CAAE,IAAIC,EAAMD,EAAK,KAAKF,EAAOC,GAAQ,SAAS,EAAG,GAAI,OAAOE,GAAQ,SAAU,OAAOA,EAAK,MAAM,IAAI,UAAU,8CAA8C,CAAI,CAAC,OAAQF,IAAS,SAAW,OAAS,QAAQD,CAAK,CAAI,CAGzX,MAAM4U,WAA0BR,EAAW,CACzC,YAAYC,EAAU,CACpB,QACA5U,GAAgB,KAAM,WAAY,MAAM,EACxC,KAAK,SAAW4U,CACjB,CACD,OAAOxS,EAAO,CACZ,GAAIgT,GAAkB,MAAM,QAAQ,aAAahT,CAAK,EAAG,CACvD,GAAI,CAAC,KAAK,SAAS,eACjB,MAAO,GAET,GAAI,CACF,QAAAiT,CACR,EAAU,KAAK,SAAS,MAClB,YAAK,SAAS,QAAQ,CAACA,CAAO,EACvB,EACR,CACD,MAAO,EACR,CACH,CCxBA,SAASrV,GAAgBC,EAAKC,EAAKC,EAAO,CAAE,OAAAD,EAAME,GAAeF,CAAG,EAAOA,KAAOD,EAAO,OAAO,eAAeA,EAAKC,EAAK,CAAE,MAAOC,EAAO,WAAY,GAAM,aAAc,GAAM,SAAU,EAAM,CAAA,EAAYF,EAAIC,CAAG,EAAIC,EAAgBF,CAAM,CAC5O,SAASG,GAAeC,EAAK,CAAE,IAAIH,EAAMI,GAAaD,EAAK,QAAQ,EAAG,OAAO,OAAOH,GAAQ,SAAWA,EAAM,OAAOA,CAAG,CAAI,CAC3H,SAASI,GAAaC,EAAOC,EAAM,CAAE,GAAI,OAAOD,GAAU,UAAYA,IAAU,KAAM,OAAOA,EAAO,IAAIE,EAAOF,EAAM,OAAO,WAAW,EAAG,GAAIE,IAAS,OAAW,CAAE,IAAIC,EAAMD,EAAK,KAAKF,EAAOC,GAAQ,SAAS,EAAG,GAAI,OAAOE,GAAQ,SAAU,OAAOA,EAAK,MAAM,IAAI,UAAU,8CAA8C,CAAI,CAAC,OAAQF,IAAS,SAAW,OAAS,QAAQD,CAAK,CAAI,CAGzX,MAAM+U,WAA8BX,EAAW,CAC7C,YAAYC,EAAU,CACpB,QACA5U,GAAgB,KAAM,WAAY,MAAM,EACxC,KAAK,SAAW4U,CACjB,CACD,OAAOxS,EAAO,CACZ,OAAIgT,GAAkB,MAAM,cAAc,aAAahT,CAAK,GAC1D,KAAK,SAAS,kBACP,IAEF,EACR,CACH,CCbA,IAAIyM,GAAe,IACZ,SAAS0G,GAAe3O,EAAM,CACnC,GAAI,CACF,SAAAuH,EAAW,KACX,WAAAI,EACA,UAAAC,EACA,UAAAC,EACA,SAAAC,CACD,EAAG9H,EACA,CAACyH,EAASmH,CAAU,EAAI9F,EAAQ,SAAC,EAAK,EACtC+F,EAAU3F,EAAAA,SACV4F,EAAe1F,GAAY7B,CAAQ,EACnCwH,EAAaC,EAAAA,YAAY,IAAM,CACjCJ,EAAW,EAAI,EACXC,EAAQ,SACV,aAAaA,EAAQ,OAAO,EAE9BA,EAAQ,QAAU,WAAW,IAAM,CACjCD,EAAW,EAAK,CACjB,EAAE3G,EAAY,CACnB,EAAK,CAAC2G,EAAYC,CAAO,CAAC,EACxBtF,OAAAA,EAAAA,UAAU,IAAM,CACVuF,IAAiBvH,GAAYA,GAAY,MAC3CwH,GAEH,EAAE,CAACxH,EAAUuH,EAAcF,EAAYG,CAAU,CAAC,EACnDxF,YAAU,IAAM,IAAMsF,EAAQ,QAAU,aAAaA,EAAQ,OAAO,EAAI,OAAW,CAAA,CAAE,EACjE3S,EAAAA,IAAKmL,GAAmB,CAC1C,UAAW,mBACX,QAASI,EACT,WAAYE,EACZ,UAAWC,EACX,UAAWC,EACX,SAAUC,EACV,SAAUP,CACd,CAAG,CACH,CCjCA,IAAI0H,GAAsB,EAI1B,SAASC,GAAqBlP,EAAM,CAClC,GAAI,CACF,MAAAJ,EACA,IAAArC,EACA,OAAAC,EACA,KAAA2R,EACA,MAAAC,EACA,OAAAnQ,EACA,UAAAvD,EACA,QAAA+S,EAAU,GACV,MAAAY,EACA,cAAAC,EACA,aAAA/D,EACA,cAAAQ,EACA,mBAAAwD,EACA,aAAAC,EAAe,KACf,aAAAC,EAAe,KACf,sBAAAC,EAAwBC,GACxB,gBAAAnG,EAAkB,EAClB,eAAAd,EAAiBkH,GACjB,cAAAC,EACA,cAAAC,EACA,mBAAAC,EACA,gBAAAC,EACA,qBAAAC,CACD,EAAGjQ,EACA,CACF,kBAAAkQ,EACA,kBAAAC,CACD,EAAGvQ,EAEJwQ,GAAY,IAAM,CACZC,GAAyBzQ,CAAK,GAAKqQ,GAAwB,OAC7DrQ,EAAM,qBAAuBqQ,EAEnC,EAAK,CAACrQ,EAAOqQ,CAAoB,CAAC,EAChC,IAAI7J,EAAUkD,UAAQ,IAAM0C,EAAc,wBAAwBpM,EAAM,QAASuP,EAAMC,EAAO7D,EAAcQ,EAAewD,EAAoBN,EAAmB,EAAG,CAACrP,EAAM,QAASuP,EAAMC,EAAO7D,EAAcQ,EAAewD,CAAkB,CAAC,EAClP,OAAAa,GAAY,UAAwB,CAClCxQ,EAAM,OAASX,CACnB,EAAK,CAACW,EAAOX,CAAM,CAAC,EAClBmR,GAAY,UAAuB,CACjC,IAAIE,GAAgB,CAAC,GAAGjB,CAAK,EACzBZ,GACF6B,GAAc,KAAK1Q,EAAM,GAAG,MAAM,QAAO,CAAE,EAE7CA,EAAM,KAAO0Q,EACd,EAAE,CAAC1Q,EAAOyP,EAAOZ,CAAO,CAAC,EAC1B2B,GAAY,UAA2B,CACrCxQ,EAAM,UAAYlE,CACtB,EAAK,CAACkE,EAAOlE,CAAS,CAAC,EACrB0U,GAAY,UAA+B,CACrCxQ,EAAM,2BACRA,EAAM,cAAgB0P,EAE5B,EAAK,CAAC1P,EAAO0P,CAAa,CAAC,EACzBc,GAAY,UAA+B,CACrCxQ,EAAM,2BACRA,EAAM,cAAgBkQ,EAE5B,EAAK,CAAClQ,EAAOkQ,CAAa,CAAC,EACzBM,GAAY,UAA0B,CACpCxQ,EAAM,YAAYrC,EAAKC,EAAQ4I,CAAO,CACvC,EAAE,CAACxG,EAAOrC,EAAKC,EAAQ4I,CAAO,CAAC,EAChCgK,GAAY,UAA8B,CACpCD,IACFvQ,EAAM,aAAe4P,EAExB,EAAE,CAAC5P,EAAOuQ,EAAmBX,CAAY,CAAC,EAC3CY,GAAY,UAAuC,CAC7CxQ,EAAM,4BACRA,EAAM,sBAAwB8P,EAEpC,EAAK,CAAC9P,EAAO8P,CAAqB,CAAC,EACjCU,GAAY,UAA8B,CACpCF,IACFtQ,EAAM,aAAe6P,EAExB,EAAE,CAAC7P,EAAOsQ,EAAmBT,CAAY,CAAC,EAC3CW,GAAY,UAA+B,CACrCP,GACFjQ,EAAM,oBAAoBiQ,CAAa,CAE7C,EAAK,CAACjQ,EAAOiQ,CAAa,CAAC,EACzBO,GAAY,UAAoC,CAC9CxQ,EAAM,mBAAqBmQ,CAC/B,EAAK,CAACnQ,EAAOmQ,CAAkB,CAAC,EAC9BK,GAAY,UAAiC,CACvCJ,GAAmBO,GAAuB3Q,CAAK,IACjDA,EAAM,gBAAkBoQ,EAE9B,EAAK,CAACpQ,EAAOoQ,CAAe,CAAC,EAG3BzG,EAAS,UAAC,UAAiC,CACzC3J,EAAM,gBAAkB4J,CAC5B,EAAK,CAAC5J,EAAO4J,CAAe,CAAC,EAC3BD,EAAS,UAAC,UAAgC,CACxC3J,EAAM,eAAiB8I,CAC3B,EAAK,CAAC9I,EAAO8I,CAAc,CAAC,EACnB,IACT,CACAwG,GAAqB,YAAc,uBCjHnC,SAAS9V,GAAgBC,EAAKC,EAAKC,EAAO,CAAE,OAAAD,EAAME,GAAeF,CAAG,EAAOA,KAAOD,EAAO,OAAO,eAAeA,EAAKC,EAAK,CAAE,MAAOC,EAAO,WAAY,GAAM,aAAc,GAAM,SAAU,EAAM,CAAA,EAAYF,EAAIC,CAAG,EAAIC,EAAgBF,CAAM,CAC5O,SAASG,GAAeC,EAAK,CAAE,IAAIH,EAAMI,GAAaD,EAAK,QAAQ,EAAG,OAAO,OAAOH,GAAQ,SAAWA,EAAM,OAAOA,CAAG,CAAI,CAC3H,SAASI,GAAaC,EAAOC,EAAM,CAAE,GAAI,OAAOD,GAAU,UAAYA,IAAU,KAAM,OAAOA,EAAO,IAAIE,EAAOF,EAAM,OAAO,WAAW,EAAG,GAAIE,IAAS,OAAW,CAAE,IAAIC,EAAMD,EAAK,KAAKF,EAAOC,GAAQ,SAAS,EAAG,GAAI,OAAOE,GAAQ,SAAU,OAAOA,EAAK,MAAM,IAAI,UAAU,8CAA8C,CAAI,CAAC,OAAQF,IAAS,SAAW,OAAS,QAAQD,CAAK,CAAI,CAazX,IAAII,GAAMC,GAAI,OAAO,kBAAkB,EACnCwW,GAAwB,CAC1B,KAAM,gBACR,EACA,MAAMC,WAAyB7F,EAAAA,SAAU,CAGvC,OAAO,cAAc9P,EAAW,CAC9B,IAAI4V,EACJ,OAAQA,EAAwBF,GAAsB1V,CAAS,KAAO,MAAQ4V,IAA0B,OAASA,EAAwB5V,EAAU,MAAM,GAAG,EAAE,IAAI6V,GAAKA,EAAE,CAAC,EAAE,YAAW,EAAKA,EAAE,OAAO,CAAC,EAAE,YAAa,CAAA,EAAE,KAAK,GAAG,CAChO,CACD,YAAYhW,EAAO,CACjB,MAAMA,CAAK,EACXvB,GAAgB,KAAM,oBAAqB,MAAM,EACjD,KAAK,YAAc,KAAK,YAAY,KAAK,IAAI,EAC7C,KAAK,yBAA2B,KAAK,yBAAyB,KAAK,IAAI,EACvE,KAAK,iBAAmB,KAAK,iBAAiB,KAAK,IAAI,EACvD,KAAK,kBAAoB,KACzB,KAAK,MAAQ,CACX,MAAO,KACP,QAAS,GACT,WAAY,KACZ,QAAS,CACf,CACG,CACD,mBAAoB,CAClB,KAAK,wBAAuB,CAC7B,CACD,sBAAuB,CACjB,KAAK,mBACP,KAAK,kBAAkB,QAE1B,CACD,yBAA0B,CACxB,GAAI,CACF,OAAAyB,EACA,MAAA+E,CACN,EAAQ,KAAK,MACLgR,EAAUhR,EAAM,SAAWA,EAAM,gBAAkBA,EAAM,uBAAyBA,EAAM,oBAC5F,KAAK,SAAS,CACZ,QAAAgR,CACN,CAAK,EACG,CAAChR,EAAM,6BAA+B/E,EAAO,UAAY,GAC3D,KAAK,SAAS,CACZ,QAAS,EACjB,CAAO,EACQ+V,EAAUH,GAAiB,qBACpC,KAAK,yBAAwB,CAEhC,CACD,0BAA2B,CACzB,KAAK,SAAS,CACZ,QAAS,EACf,CAAK,EACD,GAAI,CACF,OAAA5V,EACA,MAAA+E,CACN,EAAQ,KAAK,MACT,KAAK,kBAAoBY,GAAa,eAAeZ,EAAM,iBAAiB/E,CAAM,CAAC,EACnF,KAAK,kBAAkB,KAAK,KAAK,gBAAgB,EAAE,MAAM,KAAK,WAAW,CAC1E,CACD,iBAAiBgW,EAAO,CACtB9W,GAAI,MAAM,sBAAuB8W,CAAK,EACtC,GAAI,CACF,MAAAjR,EACA,aAAAkR,CACN,EAAQ,KAAK,MACLC,EAAa,CAAA,EACjBF,EAAM,cAAc,QAAQ,CAACtX,EAAOuB,IAAc,CAChDiW,EAAW,KAAK,CACd,UAAWN,GAAiB,cAAc3V,CAAS,EACnD,MAAAvB,EACA,KAAMsX,EAAM,QAAQ/V,CAAS,CACrC,CAAO,CACP,CAAK,EACD+V,EAAM,aAAa,QAAQ,CAACtX,EAAOuB,IAAc,CAC/CiW,EAAW,KAAK,CACd,UAAAjW,EACA,UAAW,iCACX,MAAAvB,EACA,KAAM,MACd,CAAO,CACP,CAAK,EACD,KAAK,SAAS,CACZ,QAAS,GACT,WAAAwX,EACA,QAASnR,EAAM,SAAWA,EAAM,gBAAkBA,EAAM,uBAAyBA,EAAM,mBAC7F,CAAK,EACDkR,GACD,CACD,YAAY9R,EAAO,CACjB,GAAIA,GAAS,MAAQwB,GAAa,WAAWxB,CAAK,EAAG,CACnDjF,GAAI,MAAM,kDAAkD,EAC5D,MACD,CACDA,GAAI,MAAM,8BAA+BiF,CAAK,EAC9C,KAAK,SAAS,CACZ,MAAAA,EACA,QAAS,GACT,WAAY,IAClB,CAAK,CACF,CACD,QAAS,CACP,IAAIgS,EACA,CACF,OAAAnW,EACA,MAAA+E,CACN,EAAQ,KAAK,MACL,CACF,MAAAZ,EACA,QAAAiS,EACA,WAAAF,EACA,QAAAH,CACN,EAAQ,KAAK,MACLM,EAAyB,CAACD,GAAWjS,GAAS,MAAQ+R,GAAc,MAAQnR,EAAM,4BAClFuR,EAAoB,CAAA,EACpBhX,EAAaU,EAAO,KAAK,UAAUA,EAAO,KAAK,YAAY,GAAG,EAAI,CAAC,EACnEuW,EAAcvW,EAAO,cAAgB,KAAO,KAAOA,EAAO,YAC9D,GAAIkW,GAAc,KAChB,QAASjV,EAAI,EAAGA,EAAIiV,EAAW,OAAQjV,GAAK,EAAG,CAC7C,GAAI,CACF,UAAAhB,EACA,UAAA0M,EACA,MAAAjO,EACA,KAAA0K,CACV,EAAY8M,EAAWjV,CAAC,EACZuV,EAAkBpN,EAA8DrE,EAAM,cAAcrG,EAAO0K,CAAI,EAAtFrE,EAAM,cAAcrG,EAAOsB,EAAO,KAAMA,EAAO,IAAI,EAC5EyW,EAAgCnV,EAAAA,KAAMwD,GAAM,SAAU,CACxD,SAAU,CAAczD,EAAI,IAAC,MAAO,CAClC,UAAWI,EAAW,6BAA8BkL,CAAS,EAC7D,SAAU1M,CACtB,CAAW,EAAgBoB,EAAI,IAAC,MAAO,CAC3B,UAAW,yBACX,SAAUmV,CACtB,CAAW,CAAC,CACH,EAAEvW,CAAS,EACZqW,EAAkB,KAAKG,CAAgB,CACxC,CAEH,IAAIC,EAAgBC,GAAsB5R,CAAK,GAAKA,EAAM,kBAAoB,gBAAkB,iBAC5F6R,EAAoB7R,EAAM,cAAcgR,EAAS,MAAM,EACvD3Q,EAAcL,EAAM,qBAAqB/E,EAAO,IAAI,EACxD,OAAoBsB,EAAAA,KAAM,MAAO,CAC/B,UAAW,oBACX,SAAU,CAAcA,EAAK,KAAC,MAAO,CACnC,UAAW,0BACX,SAAU,EAAE6U,EAAsBnW,EAAO,eAAiB,MAAQmW,IAAwB,OAASA,EAAsBnW,EAAO,KAAmBsB,EAAAA,KAAM,OAAQ,CAC/J,UAAW,yBACX,SAAU,CAAC,KAAShC,EAAY,GAAG,CAC7C,CAAS,EAAgB+B,EAAI,IAACwV,GAAY,CAChC,UAAW,yBACX,QAAS,mBACT,KAAM7W,EAAO,IACvB,CAAS,CAAC,CACH,CAAA,EAAGuW,GAAe,MAAqBlV,EAAAA,IAAK,MAAO,CAClD,UAAW,gCACX,SAAUkV,CAClB,CAAO,EAAGnR,GAAe,MAAQ,CAACL,EAAM,iBAAiBK,CAAW,GAAkB9D,EAAK,KAAC,MAAO,CAC3F,UAAW,2BACX,SAAU,CAAcD,EAAI,IAACsG,EAAiB,CAC5C,KAAMmP,GACN,UAAW,MACZ,CAAA,EAAG,cAAc,CAC1B,CAAO,EAAG1R,GAAe,MAAQ,CAACL,EAAM,gBAAgBK,CAAW,GAAkB9D,EAAK,KAAC,MAAO,CAC1F,UAAW,2BACX,SAAU,CAAcD,EAAI,IAACsG,EAAiB,CAC5C,KAAM5C,EAAM,eAAeK,CAAW,EAAI2R,GAAWC,GACrD,UAAW,MACrB,CAAS,EAAGjS,EAAM,eAAeK,CAAW,EAAI,SAAW,aAAa,CACxE,CAAO,EAAgB9D,EAAK,KAAC,MAAO,CAC5B,UAAW,yBACX,SAAU,CAAC4U,GAAc,MAAqB5U,EAAAA,KAAMwG,EAAAA,SAAW,CAC7D,SAAU,CAAczG,EAAI,IAAC,MAAO,CAClC,UAAW,6BACX,SAAUqV,CACtB,CAAW,EAAgBrV,EAAI,IAAC,MAAO,CAC3B,UAAW,yBACX,SAAUuV,CACtB,CAAW,CAAC,CACH,CAAA,EAAGN,CAAiB,CAC7B,CAAO,EAAGD,GAAuChV,EAAI,IAACK,EAAQ,CACtD,KAAM,QACN,UAAW,OACX,QAAS,KAAK,yBACd,SAAU,gBACX,CAAA,EAAGyC,GAAS,MAAqB9C,EAAAA,IAAK,MAAO,CAC5C,UAAW,gBACX,SAAU,GAAG,OAAO8C,CAAK,CAC1B,CAAA,EAAG+R,GAAc,CAACE,GAAwB/U,EAAAA,IAAKK,EAAQ,CACtD,KAAM,QACN,UAAW,OACX,QAAS,KAAK,yBACd,KAAMuV,GACN,SAAU,SAClB,CAAO,EAAGb,GAAwB9U,EAAK,KAAC,MAAO,CACvC,UAAW,4BACX,SAAU,CAAcD,EAAI,IAACoC,GAAgB,CAC3C,UAAW,gCACZ,CAAA,EAAG,sBAAsB,CAClC,CAAO,CAAC,CACR,CAAK,CACF,CACH,CACAlF,GAAgBqX,GAAkB,sBAAuB,GAAM,EC1N/D,SAASrX,GAAgBC,EAAKC,EAAKC,EAAO,CAAE,OAAAD,EAAME,GAAeF,CAAG,EAAOA,KAAOD,EAAO,OAAO,eAAeA,EAAKC,EAAK,CAAE,MAAOC,EAAO,WAAY,GAAM,aAAc,GAAM,SAAU,EAAM,CAAA,EAAYF,EAAIC,CAAG,EAAIC,EAAgBF,CAAM,CAC5O,SAASG,GAAeC,EAAK,CAAE,IAAIH,EAAMI,GAAaD,EAAK,QAAQ,EAAG,OAAO,OAAOH,GAAQ,SAAWA,EAAM,OAAOA,CAAG,CAAI,CAC3H,SAASI,GAAaC,EAAOC,EAAM,CAAE,GAAI,OAAOD,GAAU,UAAYA,IAAU,KAAM,OAAOA,EAAO,IAAIE,EAAOF,EAAM,OAAO,WAAW,EAAG,GAAIE,IAAS,OAAW,CAAE,IAAIC,EAAMD,EAAK,KAAKF,EAAOC,GAAQ,SAAS,EAAG,GAAI,OAAOE,GAAQ,SAAU,OAAOA,EAAK,MAAM,IAAI,UAAU,8CAA8C,CAAI,CAAC,OAAQF,IAAS,SAAW,OAAS,QAAQD,CAAK,CAAI,CAUzX,MAAMoY,WAA0B7X,EAAAA,aAAc,CAC5C,OAAO,mBAAmB2C,EAAImV,EAAaC,EAAiB7L,EAASpJ,EAAiB,CACpF,IAAIkV,EAAgBlV,EAAkBoJ,EAAQ,OAAOvL,GAAU,CAACoX,EAAgB,SAASpX,EAAO,IAAI,CAAC,EAAE,IAAIA,GAAUA,EAAO,IAAI,EAAIoX,EACpI,GAAID,GAAeE,EAAc,OAAS,EAAG,CAC3C,IAAIC,EAActV,EAAG,YAAY,SAASmV,CAAW,EACjDI,EAAeF,EAAc,SAAW9L,EAAQ,OAASvJ,EAAG,gBAAgB,OAAOsV,CAAW,EAAItV,EAAG,gBAAgB,OAAOsV,EAAa/L,EAAQ,OAAOvL,GAAUqX,EAAc,SAASrX,EAAO,IAAI,CAAC,EAAE,IAAIA,GAAUA,EAAO,OAAM,CAAE,CAAC,EACzO,OAAOuX,CACR,CAEF,CACD,YAAYzX,EAAO,CACjB,MAAMA,CAAK,EACXvB,GAAgB,KAAM,cAAe,MAAM,EAC3C,KAAK,wBAA0B,KAAK,wBAAwB,KAAK,IAAI,EACrE,KAAK,aAAe,KAAK,aAAa,KAAK,IAAI,EAC/C,KAAK,UAAY,KAAK,UAAU,KAAK,IAAI,EACzC,KAAK,MAAQ,KAAK,MAAM,KAAK,IAAI,EACjC,KAAK,cAAgB,KAAK,cAAc,KAAK,IAAI,EACjD,KAAK,YAA2BuG,GAAM,YACtC,KAAK,MAAQ,CACX,wBAAyB,EAC/B,CACG,CACD,OAAQ,CACN,IAAI0S,GACHA,EAAwB,KAAK,YAAY,WAAa,MAAQA,IAA0B,QAAkBA,EAAsB,MAAK,CACvI,CACD,wBAAwB7W,EAAO,CAC7B,GAAI,CACF,SAAAD,EACA,gBAAA0W,EACA,gBAAAjV,CACN,EAAQ,KAAK,MACTzB,EAASC,EAAM,OAAO,MAAOyW,EAAiBjV,CAAe,CAC9D,CACD,iBAAiBiV,EAAiBjV,EAAiB,CACjD,GAAI,CACF,SAAAzB,EACA,MAAAhC,CACN,EAAQ,KAAK,MACTgC,EAAShC,EAAO0Y,EAAiBjV,CAAe,CACjD,CACD,mBAAmBA,EAAiB,CAClC,GAAI,CACF,SAAAzB,EACA,MAAAhC,CACN,EAAQ,KAAK,MACTgC,EAAShC,EAAO,GAAIyD,CAAe,CACpC,CACD,aAAa2J,EAAM,CACjB,GAAI,CACF,gBAAAsL,EACA,gBAAAjV,CACN,EAAQ,KAAK,MACT,GAAIiV,EAAgB,SAAStL,CAAI,EAC/B,KAAK,iBAAiBsL,EAAgB,OAAOK,GAAKA,IAAM3L,CAAI,EAAG3J,CAAe,MACzE,CACL,IAAIuV,EAASN,EAAgB,QAC7BM,EAAO,KAAK5L,CAAI,EAChB,KAAK,iBAAiB4L,EAAQvV,CAAe,CAC9C,CACF,CACD,WAAY,CACV,KAAK,mBAAmB,EAAI,CAC7B,CACD,OAAQ,CACN,KAAK,mBAAmB,EAAK,CAC9B,CACD,eAAgB,CACd,GAAI,CACF,QAAAoJ,CACN,EAAQ,KAAK,MACT,KAAK,iBAAiBA,EAAQ,OAAOkM,GAAKjY,EAAW,aAAaiY,EAAE,IAAI,CAAC,EAAE,IAAIzX,GAAUA,EAAO,IAAI,EAAG,EAAK,CAC7G,CACD,QAAS,CACP,GAAI,CACF,MAAAtB,EACA,gBAAA0Y,EACA,gBAAAjV,EACA,QAAAoJ,CACN,EAAQ,KAAK,MACL,CACF,wBAAAoM,CACN,EAAQ,KAAK,MACLC,EAAwBR,EAAgB,SAAW,GAAKjV,IAAoB,IAAQiV,EAAgB,SAAW7L,EAAQ,QAAUpJ,IAAoB,GACrJ0V,EAAuBT,EAAgB,SAAW,GAAKjV,IAAoB,IAASiV,EAAgB,SAAW7L,EAAQ,QAAUpJ,IAAoB,GAGrJ2V,EACJ,OAAIF,EAEFE,EAAoBxW,EAAK,KAACwG,WAAW,CACnC,SAAU,CAAczG,EAAI,IAACsG,EAAiB,CAC5C,KAAMoQ,GACN,KAAMC,GACN,UAAW,yBACrB,CAAS,EAAgB3W,EAAI,IAACsG,EAAiB,CACrC,KAAMsQ,GACN,UAAW,eACX,UAAW,yBACrB,CAAS,CAAC,CACV,CAAO,EACQJ,EAETC,EAAoBxW,EAAK,KAACwG,WAAW,CACnC,SAAU,CAAczG,EAAI,IAACsG,EAAiB,CAC5C,KAAMuQ,GACN,KAAMF,GACN,UAAW,yBACrB,CAAS,EAAgB3W,EAAI,IAACsG,EAAiB,CACrC,KAAMwQ,GACN,UAAW,cACX,UAAW,yBACrB,CAAS,CAAC,CACV,CAAO,EAGDL,EAAoBxW,EAAK,KAACwG,WAAW,CACnC,SAAU,CAAczG,EAAI,IAACsG,EAAiB,CAC5C,KAAMoQ,GACN,KAAMC,GACN,UAAW,yBACrB,CAAS,EAAgB3W,EAAI,IAACsG,EAAiB,CACrC,KAAMyQ,GACN,UAAW,eACX,UAAW,yBACrB,CAAS,CAAC,CACV,CAAO,EAEiB9W,EAAAA,KAAM,MAAO,CAC/B,UAAW,yBACX,SAAU,CAAcD,EAAI,IAACgX,GAAa,CACxC,UAAW,sBACX,YAAa,iBACb,cAAe,sBACf,MAAO3Z,EACP,SAAU,KAAK,wBACf,IAAK,KAAK,WAClB,CAAO,EAAgB4C,EAAK,KAAC,SAAU,CAC/B,KAAM,SACN,UAAW,kCACX,QAAS,IAAM,CACTqW,EACF,KAAK,SAAS,CACZ,wBAAyB,EACvC,CAAa,EAED,KAAK,SAAS,CACZ,wBAAyB,EACvC,CAAa,CAEJ,EACD,SAAU,CAActW,EAAI,IAAC,MAAO,CAClC,UAAW,YACX,SAAUyW,CACpB,CAAS,EAAgBzW,EAAI,IAACiX,GAAS,CAC7B,SAAU,mBACpB,CAAS,EAAgBjX,EAAI,IAACkX,GAAQ,CAC5B,QAASZ,EACT,UAAW,sBACX,SAAU,IAAM,CACd,KAAK,SAAS,CACZ,wBAAyB,EACvC,CAAa,CACF,EACD,YAAa,GACb,YAAa,GACb,SAAuBrW,EAAK,KAAC,MAAO,CAClC,UAAW,qBACX,SAAU,CAAC,mBAAiCD,EAAI,IAAC,MAAO,CACtD,UAAW,sBACX,SAAUkK,EAAQ,IAAIvL,GAChBA,EAAO,UAAY,GAAa,KAChBsB,EAAK,KAACwD,GAAM,SAAU,CACxC,SAAU,CAAczD,EAAI,IAACmX,GAAU,CACrC,UAAW,wBACX,QAASrW,EAAkB,CAACiV,EAAgB,SAASpX,EAAO,IAAI,EAAIoX,EAAgB,SAASpX,EAAO,IAAI,EACxG,SAAU,IAAM,KAAK,aAAaA,EAAO,IAAI,EAC7C,SAAUA,EAAO,IACrC,CAAmB,EAAGA,EAAO,KAAK,UAAUA,EAAO,KAAK,YAAY,GAAG,EAAI,CAAC,CAAC,CAC7E,EAAmBA,EAAO,IAAI,CACf,CACf,CAAa,EAAgBsB,EAAK,KAAC,MAAO,CAC5B,UAAW,0BACX,SAAU,CAAcD,EAAI,IAAC,SAAU,CACrC,KAAM,SACN,UAAW,eACX,QAAS,KAAK,UACd,SAAU,YAC1B,CAAe,EAAgBA,EAAI,IAAC,SAAU,CAC9B,KAAM,SACN,UAAW,eACX,QAAS,KAAK,MACd,SAAU,OAC1B,CAAe,EAAgBA,EAAI,IAAC,SAAU,CAC9B,KAAM,SACN,UAAW,eACX,QAAS,KAAK,cACd,SAAU,cAC1B,CAAe,CAAC,CAChB,CAAa,EAAGwW,GAAqCvW,EAAK,KAAC,IAAK,CAClD,UAAW,cACX,SAAU,CAAcD,EAAI,IAACsG,EAAiB,CAC5C,KAAMwQ,EACP,CAAA,EAAG,wCAAwC,CAC1D,CAAa,CAAC,CACd,CAAW,CACX,CAAS,CAAC,CACV,CAAO,CAAC,CACR,CAAK,CACF,CACH,CC/NA,SAASM,GAAQC,EAAQC,EAAgB,CAAE,IAAIC,EAAO,OAAO,KAAKF,CAAM,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAIG,EAAU,OAAO,sBAAsBH,CAAM,EAAGC,IAAmBE,EAAUA,EAAQ,OAAO,SAAUC,EAAK,CAAE,OAAO,OAAO,yBAAyBJ,EAAQI,CAAG,EAAE,UAAW,CAAE,GAAIF,EAAK,KAAK,MAAMA,EAAMC,CAAO,CAAE,CAAG,OAAOD,CAAO,CACrV,SAASG,GAAcC,EAAQ,CAAE,QAAS/X,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAAE,IAAIgY,EAAiB,UAAUhY,CAAC,GAAnB,KAAuB,UAAUA,CAAC,EAAI,CAAE,EAAEA,EAAI,EAAIwX,GAAQ,OAAOQ,CAAM,EAAG,EAAE,EAAE,QAAQ,SAAUxa,EAAK,CAAEF,GAAgBya,EAAQva,EAAKwa,EAAOxa,CAAG,CAAC,CAAI,CAAA,EAAI,OAAO,0BAA4B,OAAO,iBAAiBua,EAAQ,OAAO,0BAA0BC,CAAM,CAAC,EAAIR,GAAQ,OAAOQ,CAAM,CAAC,EAAE,QAAQ,SAAUxa,EAAK,CAAE,OAAO,eAAeua,EAAQva,EAAK,OAAO,yBAAyBwa,EAAQxa,CAAG,CAAC,CAAE,CAAE,CAAI,CAAC,OAAOua,CAAS,CAC1f,SAASjK,GAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQ3Q,EAAKG,EAAK,CAAE,GAAI,CAAE,IAAIyQ,EAAOL,EAAIvQ,CAAG,EAAEG,CAAG,EAAOF,EAAQ2Q,EAAK,YAAgBlL,EAAO,CAAE+K,EAAO/K,CAAK,EAAG,MAAS,CAAKkL,EAAK,KAAQJ,EAAQvQ,CAAK,EAAY,QAAQ,QAAQA,CAAK,EAAE,KAAKyQ,EAAOC,CAAM,CAAM,CACzQ,SAASE,GAAkBC,EAAI,CAAE,OAAO,UAAY,CAAE,IAAIC,EAAO,KAAMC,EAAO,UAAW,OAAO,IAAI,QAAQ,SAAUR,EAASC,EAAQ,CAAE,IAAIF,EAAMO,EAAG,MAAMC,EAAMC,CAAI,EAAG,SAASN,EAAMzQ,EAAO,CAAEqQ,GAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQ,OAAQ1Q,CAAK,CAAI,CAAC,SAAS0Q,EAAOM,EAAK,CAAEX,GAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQ,QAASM,CAAG,EAAKP,EAAM,MAAS,EAAI,CAAI,CAAG,CACrY,SAAS5Q,GAAgBC,EAAKC,EAAKC,EAAO,CAAE,OAAAD,EAAME,GAAeF,CAAG,EAAOA,KAAOD,EAAO,OAAO,eAAeA,EAAKC,EAAK,CAAE,MAAOC,EAAO,WAAY,GAAM,aAAc,GAAM,SAAU,EAAM,CAAA,EAAYF,EAAIC,CAAG,EAAIC,EAAgBF,CAAM,CAC5O,SAASG,GAAeC,EAAK,CAAE,IAAIH,EAAMI,GAAaD,EAAK,QAAQ,EAAG,OAAO,OAAOH,GAAQ,SAAWA,EAAM,OAAOA,CAAG,CAAI,CAC3H,SAASI,GAAaC,EAAOC,EAAM,CAAE,GAAI,OAAOD,GAAU,UAAYA,IAAU,KAAM,OAAOA,EAAO,IAAIE,EAAOF,EAAM,OAAO,WAAW,EAAG,GAAIE,IAAS,OAAW,CAAE,IAAIC,EAAMD,EAAK,KAAKF,EAAOC,GAAQ,SAAS,EAAG,GAAI,OAAOE,GAAQ,SAAU,OAAOA,EAAK,MAAM,IAAI,UAAU,8CAA8C,CAAI,CAAC,OAAQF,IAAS,SAAW,OAAS,QAAQD,CAAK,CAAI,CAazX,IAAII,GAAMC,GAAI,OAAO,2BAA2B,EAChD,MAAM+Z,WAAkCnJ,EAAAA,SAAU,CAChD,YAAYjQ,EAAO,CACjB,MAAMA,CAAK,EACXvB,GAAgB,KAAM,UAAW,MAAM,EACvCA,GAAgB,KAAM,aAAc,MAAM,EAC1CA,GAAgB,KAAM,0BAA2B4a,EAAS5T,GAAS7G,GAAS,KAAK,sBAAsB6G,EAAO7G,CAAK,CAAC,CAAC,EACrHH,GAAgB,KAAM,+BAAgC4a,EAAS5T,GAAS7G,GAAS,KAAK,gBAAgB6G,EAAO7G,CAAK,CAAC,CAAC,EACpH,KAAK,0BAA4B,KAAK,0BAA0B,KAAK,IAAI,EACzE,KAAK,iBAAmB,KAAK,iBAAiB,KAAK,IAAI,EACvD,KAAK,sBAAwB,KAAK,sBAAsB,KAAK,IAAI,EACjE,GAAI,CACF,MAAAqG,CACD,EAAGjF,EACJ,KAAK,WAAa,IAAIN,EAAWuF,EAAM,EAAE,EACzC,KAAK,QAAU,IAAIqU,GACnB,KAAK,MAAQ,CAEX,UAAW,GACX,UAAW,KACX,UAAW,KACX,gBAAiB,IACvB,CACG,CACD,mBAAoB,CAClB,IAAItS,EAAQ,KACZ,OAAOwI,GAAkB,WAAa,CACpC,GAAI,CACF,MAAAvK,CACR,EAAU+B,EAAM,MACV,GAAI,CACF,IAAIuS,EAAY,MAAMvS,EAAM,QAAQ,IAAI/B,EAAM,mBAAkB,EAAG,KAAKuU,GAAYA,CAAQ,EAAGC,GAAKA,EAAE,MAAK,CAAE,EACzGC,EAAY,MAAM1S,EAAM,QAAQ,IAAI/B,EAAM,mBAAkB,EAAIwU,GAAKA,EAAE,MAAO,CAAA,EAClFzS,EAAM,SAAS,CACb,UAAAuS,EACA,UAAAG,EACA,UAAW,EACrB,CAAS,EACD1S,EAAM,uBAAsB,CAC7B,OAAQjH,EAAG,CACV,GAAI,CAAC8F,GAAa,WAAW9F,CAAC,EAE5B,MAAMA,CAET,CACF,CAAA,GACF,CACD,mBAAmBW,EAAW,CAC5B,GAAI,CACF,gBAAiBiZ,CAClB,EAAGjZ,EACA,CACF,gBAAA2U,CACN,EAAQ,KAAK,MACLsE,IAAetE,GACjB,KAAK,uBAAsB,CAE9B,CACD,sBAAuB,CACrB,KAAK,QAAQ,SACb,GAAI,CACF,UAAAkE,EACA,UAAAG,EACA,gBAAAE,CACN,EAAQ,KAAK,MACTF,GAAc,MAAwCA,EAAU,QAChEH,GAAc,MAAwCA,EAAU,QAChEK,GAAoB,MAA8CA,EAAgB,QAAQzX,GAASA,EAAM,MAAO,CAAA,CACjH,CACD,2BAA4B,CAC1B/C,GAAI,OAAO,2BAA2B,EACtC,GAAI,CACF,gBAAAiW,CACN,EAAQ,KAAK,MACT9P,EAAc8P,CAAe,EAC7B,IAAIwE,EAAqBZ,GAAc,CAAE,EAAE5D,CAAe,EAE1DwE,EAAmB,KAAOxE,EAAgB,OAAS,OAAS,YAAc,OAC1E,KAAK,WAAWwE,CAAkB,CACnC,CACD,kBAAmB,CACjBza,GAAI,OAAO,kBAAkB,EAC7B,GAAI,CACF,gBAAAiW,CACN,EAAQ,KAAK,MACT9P,EAAc8P,CAAe,EAC7B,IAAIwE,EAAqBZ,GAAc,CAAE,EAAE5D,CAAe,EAE1DwE,EAAmB,KAAOxE,EAAgB,OAAS,SAAW,YAAc,SAC5E,KAAK,WAAWwE,CAAkB,CACnC,CAOD,sBAAsBpU,EAAOqU,EAAe,CAC1C,IAAItJ,EAAS,KACb,OAAOhB,GAAkB,WAAa,CACpC,GAAI,CACF,gBAAiBmK,CACzB,EAAUnJ,EAAO,MACXjL,EAAcoU,CAAU,EACxBva,GAAI,MAAM,wBAAyBqG,EAAOqU,EAAeH,CAAU,EACnE,IAAII,EAAgB,CAAC,GAAGJ,EAAW,UAAU,EAC7CI,EAActU,CAAK,EAAIqU,EACvB,GAAI,CACF,UAAAJ,CACR,EAAUlJ,EAAO,MACP,CACF,UAAA+I,CACR,EAAU/I,EAAO,MACXjL,EAAcmU,CAAS,EACvBnU,EAAcgU,CAAS,EACvB,GAAI,CACF/I,EAAO,SAAS,CACd,UAAW,EACrB,CAAS,EACD,IAAIiJ,EAAI,MAAMjJ,EAAO,QAAQ,IAAIkJ,EAAU,KAAI,EAAIM,GAASA,EAAM,MAAO,CAAA,EAGrEC,EAAmBF,EAAc,MAAM,EAAGtU,EAAQ,CAAC,EAAE,IAAI,CAACyU,EAAW/Y,IAAM,CAC7E,IAAIgZ,EAAkBV,EAAE,QAAQtY,CAAC,EACjC,OAAOqP,EAAO,WAAW,qBAAqB2J,EAAiBD,CAAS,CAClF,CAAS,EACDT,EAAE,YAAYQ,CAAgB,EAC9BR,EAAE,YAAY,EAAG,EAAGA,EAAE,OAAO,EAC7B,IAAI3W,EAAO,MAAM0N,EAAO,QAAQ,IAAIiJ,EAAE,gBAAe,CAAE,EACnDW,EAAY,CAId,WAAYb,EAAU,QAAQ,IAAIrZ,GAAU4C,EAAK,KAAK,CAAC,EAAE,IAAI5C,CAAM,CAAC,EACpE,KAAM,WAChB,EACQuZ,EAAE,MAAK,EACPjJ,EAAO,WAAW4J,CAAS,CAC5B,OAAQra,EAAG,CACL8F,GAAa,WAAW9F,CAAC,GAC5BX,GAAI,MAAM,iCAAkCW,CAAC,CAEvD,QAAgB,CACRyQ,EAAO,SAAS,CACd,UAAW,EACrB,CAAS,CACF,CACF,CAAA,GACF,CACD,WAAW6E,EAAiB,CAC1BjW,GAAI,OAAO,aAAciW,CAAe,EACxC,GAAI,CACF,SAAAzU,CACN,EAAQ,KAAK,MACTA,EAASyU,CAAe,CACzB,CAOD,gBAAgB5P,EAAO7G,EAAO,CAC5B,GAAI,CACF,MAAAqG,CACN,EAAQ,KAAK,MACT,GAAIrG,IAAU,KACZ,MAAO,SAET,GAAIA,IAAU,QAAaA,IAAU,GACnC,MAAO,GAET,IAAIsB,EAAS+E,EAAM,iBAAiBQ,CAAK,EACzC,OAAI/F,EAAW,WAAWQ,EAAO,IAAI,GAAKtB,EAAM,SAAQ,EAAG,OAAS,EAC3D,OAAO,aAAa,SAASA,EAAM,SAAU,EAAE,EAAE,CAAC,EAEpDqG,EAAM,cAAcrG,EAAOsB,EAAO,KAAMA,EAAO,IAAI,CAC3D,CAKD,wBAAyB,CACvB,IAAIwQ,EAAS,KACb,OAAOlB,GAAkB,WAAa,CACpC,GAAI,CACF,MAAAvK,CACR,EAAUyL,EAAO,MACP,CACF,gBAAiBiJ,CACzB,EAAUjJ,EAAO,MACX,GAAIiJ,GAAc,KAGlB,IAAI,CACF,UAAAJ,CACR,EAAU7I,EAAO,MACXnL,EAAcgU,CAAS,EACvB,IAAIU,EAAmB,CAAC,GAAGN,EAAW,UAAU,EAAE,IAAI,CAACO,EAAW/Y,IAAM,CACtE,IAAIgZ,EAAkBZ,EAAU,QAAQpY,CAAC,EACzC,OAAOuP,EAAO,WAAW,qBAAqByJ,EAAiBD,CAAS,CAChF,CAAO,EACGN,EAAkB,MAAM,QAAQ,IAAI3U,EAAM,iBAAiB,IAAkB,UAAY,CAC3F,IAAII,EAAOmK,GAAkB,UAAW6K,EAAGlZ,EAAG,CAC5C,OAAAoY,EAAU,YAAYU,EAAiB,MAAM,EAAG9Y,CAAC,CAAC,EAC3CoY,EAAU,eAAetU,EAAM,iBAAiB,MAAM,EAAG9D,EAAI,CAAC,CAAC,CAChF,CAAS,EACD,OAAO,SAAUmZ,EAAIC,EAAK,CACxB,OAAOlV,EAAK,MAAM,KAAM,SAAS,CAC3C,CACO,EAAA,CAAE,CAAC,EACJqL,EAAO,SAAS,CACd,gBAAAkJ,CACR,CAAO,EACF,CAAA,GACF,CACD,oBAAoBA,EAAiB,CACnC,GAAI,CACF,MAAA3U,EACA,gBAAAoQ,CACN,EAAQ,KAAK,MACT9P,EAAc8P,CAAe,EAC7B,GAAI,CACF,WAAAmF,CACD,EAAGnF,EAEJ,GADAjW,GAAI,MAAM,sBAAuBiW,CAAe,EAC5CmF,EAAW,SAAWZ,EAAgB,OACxC,MAAM,IAAI,MAAM,0CAA0C,OAAOA,EAAgB,OAAQ,uBAAuB,EAAE,OAAOY,EAAW,MAAM,CAAC,EAK7I,QADIP,EAAmB,CAAA,EACd9Y,EAAI,EAAGA,EAAIqZ,EAAW,OAAQrZ,GAAK,EAC1C,GAAIA,IAAM,EAER8Y,EAAiB,KAAK,CAAA,CAAE,MACnB,CACL,IAAIQ,EAAiBR,EAAiB9Y,EAAI,CAAC,EACvCuZ,EAAoBF,EAAWrZ,EAAI,CAAC,EACpCwZ,EAAiB1V,EAAM,iBAAiB9D,EAAI,CAAC,EAC7CyZ,EAAkB,CAAC,GAAGH,EAAgB,KAAK,WAAW,qBAAqBE,EAAgBD,CAAiB,CAAC,EACjHT,EAAiB,KAAKW,CAAe,CACtC,CAEH,OAAOX,CACR,CACD,QAAS,CACP,GAAI,CACF,MAAAhV,EACA,gBAAAoQ,CACN,EAAQ,KAAK,MACL,CACF,UAAAjS,EACA,gBAAAwW,CACN,EAAQ,KAAK,MACLiB,EAAqB5V,EAAM,iBAAiB,IAAI,CAAC/E,EAAQuF,IAAuBjE,EAAK,KAAC,MAAO,CAC/F,UAAW,kBACX,SAAU,EAAEoY,GAAoB,KAAqC,OAASA,EAAgBnU,CAAK,IAAmBlE,EAAAA,IAAKuZ,GAAQ,CACjI,MAAO5a,EAAO,KACd,cAAe,OACf,MAAO0Z,EAAgBnU,CAAK,EAC5B,UAAW,SACX,WAAY,GACZ,UAAWmU,EAAgBnU,CAAK,EAAE,QAAQA,CAAK,EAAE,KACjD,aAAc4P,GAAoB,KAAqC,OAASA,EAAgB,QAAU,YAAcA,EAAgB,WAAW5P,CAAK,EAAI,KAC5J,YAAa,eACb,YAAamU,EAAgBnU,CAAK,EAAE,QAAQA,CAAK,EAAE,KACnD,SAAU,KAAK,wBAAwBA,CAAK,EAC5C,WAAYrC,GAAaiS,GAAmB,IACpD,CAAO,EAAGpQ,EAAM,iBAAiB,OAAS,IAAMQ,GAAsBlE,EAAI,IAACsG,EAAiB,CACpF,KAAMkT,EACd,CAAO,CAAC,CACH,EAAE,YAAY,OAAO7a,EAAO,IAAI,CAAC,CAAC,EACnC,OAAoBsB,EAAAA,KAAM,MAAO,CAC/B,UAAW,+BACX,SAAU,CAAcA,EAAK,KAAC,MAAO,CACnC,UAAW,yBACX,SAAU,CAAcD,EAAI,IAACK,EAAQ,CACnC,QAAS,KAAK,0BACd,KAAM,SACN,QAASqD,EAAM,4BAA8B,qBAAuB,kCACpE,KAAM+V,GACN,QAAS3F,GAAoB,KAAqC,OAASA,EAAgB,QAAU,OACrG,SAAUjS,GAAaiS,GAAmB,KAC1C,SAAU,YACpB,CAAS,EAAgB9T,EAAI,IAACK,EAAQ,CAC5B,QAAS,KAAK,iBACd,KAAM,SACN,QAAS,0CACT,KAAmBL,EAAI,IAACsG,EAAiB,CACvC,KAAMoT,GACN,SAAU,EACtB,CAAW,EACD,QAAS5F,GAAoB,KAAqC,OAASA,EAAgB,QAAU,SACrG,SAAUjS,GAAaiS,GAAmB,KAC1C,SAAUpQ,EAAM,4BAA8B,WAAa,OACrE,CAAS,CAAC,CACH,CAAA,EAAG4V,CAAkB,CAC5B,CAAK,CACF,CACH,CC/TA,SAASpc,GAAgBC,EAAKC,EAAKC,EAAO,CAAE,OAAAD,EAAME,GAAeF,CAAG,EAAOA,KAAOD,EAAO,OAAO,eAAeA,EAAKC,EAAK,CAAE,MAAOC,EAAO,WAAY,GAAM,aAAc,GAAM,SAAU,EAAM,CAAA,EAAYF,EAAIC,CAAG,EAAIC,EAAgBF,CAAM,CAC5O,SAASG,GAAeC,EAAK,CAAE,IAAIH,EAAMI,GAAaD,EAAK,QAAQ,EAAG,OAAO,OAAOH,GAAQ,SAAWA,EAAM,OAAOA,CAAG,CAAI,CAC3H,SAASI,GAAaC,EAAOC,EAAM,CAAE,GAAI,OAAOD,GAAU,UAAYA,IAAU,KAAM,OAAOA,EAAO,IAAIE,EAAOF,EAAM,OAAO,WAAW,EAAG,GAAIE,IAAS,OAAW,CAAE,IAAIC,EAAMD,EAAK,KAAKF,EAAOC,GAAQ,SAAS,EAAG,GAAI,OAAOE,GAAQ,SAAU,OAAOA,EAAK,MAAM,IAAI,UAAU,8CAA8C,CAAI,CAAC,OAAQF,IAAS,SAAW,OAAS,QAAQD,CAAK,CAAI,CAUzX,IAAII,GAAMC,GAAI,OAAO,uBAAuB,EAC5C,MAAM6b,WAA8BjL,EAAAA,SAAU,CAC5C,YAAYjQ,EAAO,CACjB,MAAMA,CAAK,EACX,KAAK,qBAAuB,KAAK,qBAAqB,KAAK,IAAI,EAC/D,KAAK,mBAAqB,KAAK,mBAAmB,KAAK,IAAI,EAC3D,KAAK,sBAAwB,KAAK,sBAAsB,KAAK,IAAI,EACjE,GAAI,CACF,MAAAiF,EACA,sBAAA8P,CACN,EAAQ,KAAK,MACT,KAAK,MAAQ,CACX,OAAQA,EAAsB,OAAS,EAAI,CAAC,GAAGA,CAAqB,EAAI,CAAC,EAAE,EAC3E,QAAS9P,EAAM,eACrB,CACG,CACD,mBAAmBvE,EAAWmD,EAAW,CACvC,GAAI,CACF,OAAAqC,CACN,EAAQ,KAAK,MACL,CACF,SAAAtF,CACN,EAAQ,KAAK,MACT,GAAIiD,EAAU,SAAWqC,EAAQ,CAC/B,IAAIiV,EAAiBjV,EAAO,OAAOkV,GAAOA,IAAQ,EAAE,EAC/CC,GAAUxX,EAAU,OAAO,OAAOuX,GAAOA,IAAQ,EAAE,EAAGD,CAAc,GACvEva,EAASua,CAAc,CAE1B,CACF,CACD,sBAAuB,CACrB,KAAK,SAAS9V,GAAQ,CACpB,GAAI,CACF,OAAQiW,CACT,EAAGjW,EACJ,MAAO,CACL,OAAQ,CAAC,GAAGiW,EAAY,EAAE,CAClC,CACA,CAAK,CACF,CACD,mBAAmB7V,EAAO,CACxB,KAAK,SAASqB,GAAS,CACrB,GAAI,CACF,OAAAZ,CACD,EAAGY,EACJ,MAAO,CACL,OAAQZ,EAAO,SAAW,GAAKT,IAAU,EAAI,CAAC,EAAE,EAAIS,EAAO,OAAO,CAAClH,EAAOuc,IAAe9V,IAAU8V,CAAU,CACrH,CACA,CAAK,CACF,CACD,sBAAsB9V,EAAO7G,EAAO,CAClCQ,GAAI,MAAM,wBAAyBqG,EAAO7G,CAAK,EAC/C,KAAK,SAASkN,GAAS,CACrB,GAAI,CACF,OAAQwP,CACT,EAAGxP,EACA5F,EAAS,CAAC,GAAGoV,CAAU,EAC3B,OAAApV,EAAOT,CAAK,EAAI7G,EACT,CACL,OAAAsH,CACR,CACA,CAAK,CACF,CACD,cAAe,CACb,GAAI,CACF,QAAAuF,EACA,OAAAvF,CACN,EAAQ,KAAK,MACT,OAAOA,EAAO,IAAI,CAACtH,EAAO6G,IAAU,CAClC,IAAIP,EAAUuG,EAAQ,OAAOgB,GAAS,CACpC,GAAI,CACF,KAAAT,CACD,EAAGS,EACJ,OAAOT,IAASpN,GAAS,CAACsH,EAAO,SAAS8F,CAAI,CACtD,CAAO,EAAE,IAAIwP,GAAS,CACd,GAAI,CACF,KAAAxP,CACD,EAAGwP,EACJ,OAAoBja,EAAAA,IAAK,SAAU,CACjC,MAAOyK,EACP,SAAUA,CACX,EAAEA,CAAI,CACf,CAAO,EACD,OAGExK,EAAAA,KAAM,MAAO,CACX,UAAW,wBACX,SAAU,CAAcA,EAAK,KAACC,GAAQ,CACpC,UAAW,iCACX,MAAO7C,EACP,SAAU+B,GAAoB,KAAK,sBAAsB8E,EAAO9E,CAAgB,EAChF,SAAU,CAAcY,EAAI,IAAC,SAAU,CACrC,MAAO,GACP,SAAU,iBACX,CAAA,EAAG2D,CAAO,CACvB,CAAW,GAAIgB,EAAO,OAAS,GAAKtH,IAAU,KAAoB2C,EAAI,IAACK,EAAQ,CACnE,KAAM,QACN,UAAW,YACX,QAAS,IAAM,CACb,KAAK,mBAAmB6D,CAAK,CAC9B,EACD,KAAmBlE,EAAI,IAACsG,EAAiB,CACvC,KAAMhG,GACN,UAAW,QACzB,CAAa,EACD,QAAS,eACrB,CAAW,CAAC,CACH,EAAE4D,CAAK,CAEhB,CAAK,CACF,CACD,QAAS,CACP,GAAI,CACF,QAAAgG,EACA,OAAAvF,CACN,EAAQ,KAAK,MACLuV,EAAmBvV,EAAO,QAAUuF,EAAQ,OAChD,OAAoBjK,EAAAA,KAAM,MAAO,CAC/B,KAAM,eACN,UAAW,0CACX,SAAU,CAAcD,EAAI,IAAC,MAAO,CAClC,UAAW,wBACX,SAAU,4BAClB,CAAO,EAAG,KAAK,eAA6BA,EAAAA,IAAK,KAAM,CAAE,CAAA,EAAgBA,EAAI,IAAC,MAAO,CAC7E,UAAW,YACX,SAAuBA,EAAI,IAACK,EAAQ,CAClC,KAAM,QACN,UAAW,iBACX,QAAS,KAAK,qBACd,SAAU6Z,EACV,KAAM3T,GACN,SAAU,uBACpB,CAAS,CACT,CAAO,EAAgBvG,EAAI,IAAC,MAAO,CAC3B,UAAW,iCACX,SAAuBA,EAAI,IAAC,MAAO,CACjC,UAAW,+BACX,SAAU,0IACpB,CAAS,CACT,CAAO,CAAC,CACR,CAAK,CACF,CACH,CACA9C,GAAgByc,GAAuB,eAAgB,CACrD,sBAAuB,CAAE,EACzB,SAAU,IAAA,EACZ,CAAC,EC3JD,SAASQ,GAAqBrW,EAAM,CAClC,GAAI,CACF,MAAA3C,EACA,SAAUiZ,EAAY,MACvB,EAAGtW,EACJ,OAAoB9D,EAAAA,IAAKqa,GAAM,CAC7B,MAAO,MAAM,KAAKlZ,EAAM,SAAS,EAAE,IAAIoE,GAAS,CAC9C,GAAI,CAACnI,EAAKkd,CAAI,EAAI/U,EAClB,MAAO,CACL,MAAO4U,GAAqB,+BAA+B/c,CAAG,EAC9D,KAAAkd,EACA,SAAUjd,GAAS+c,EAAUhd,EAAKC,CAAK,CAC/C,CACA,CAAK,CACL,CAAG,CACH,CACA8c,GAAqB,+BAAiC/c,GAAO,CAC3D,OAAQA,EAAG,CACT,KAAKmd,GAAqB,yCACxB,MAAO,yEACT,KAAKA,GAAqB,+BACxB,MAAO,sFACV,CACH,EC3BA,SAASnD,GAAQC,EAAQC,EAAgB,CAAE,IAAIC,EAAO,OAAO,KAAKF,CAAM,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAIG,EAAU,OAAO,sBAAsBH,CAAM,EAAGC,IAAmBE,EAAUA,EAAQ,OAAO,SAAUC,EAAK,CAAE,OAAO,OAAO,yBAAyBJ,EAAQI,CAAG,EAAE,UAAW,CAAE,GAAIF,EAAK,KAAK,MAAMA,EAAMC,CAAO,CAAE,CAAG,OAAOD,CAAO,CACrV,SAASG,GAAcC,EAAQ,CAAE,QAAS/X,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAAE,IAAIgY,EAAiB,UAAUhY,CAAC,GAAnB,KAAuB,UAAUA,CAAC,EAAI,CAAE,EAAEA,EAAI,EAAIwX,GAAQ,OAAOQ,CAAM,EAAG,EAAE,EAAE,QAAQ,SAAUxa,EAAK,CAAEF,GAAgBya,EAAQva,EAAKwa,EAAOxa,CAAG,CAAC,CAAI,CAAA,EAAI,OAAO,0BAA4B,OAAO,iBAAiBua,EAAQ,OAAO,0BAA0BC,CAAM,CAAC,EAAIR,GAAQ,OAAOQ,CAAM,CAAC,EAAE,QAAQ,SAAUxa,EAAK,CAAE,OAAO,eAAeua,EAAQva,EAAK,OAAO,yBAAyBwa,EAAQxa,CAAG,CAAC,CAAE,CAAE,CAAI,CAAC,OAAOua,CAAS,CAC1f,SAASza,GAAgBC,EAAKC,EAAKC,EAAO,CAAE,OAAAD,EAAME,GAAeF,CAAG,EAAOA,KAAOD,EAAO,OAAO,eAAeA,EAAKC,EAAK,CAAE,MAAOC,EAAO,WAAY,GAAM,aAAc,GAAM,SAAU,EAAM,CAAA,EAAYF,EAAIC,CAAG,EAAIC,EAAgBF,CAAM,CAC5O,SAASG,GAAeC,EAAK,CAAE,IAAIH,EAAMI,GAAaD,EAAK,QAAQ,EAAG,OAAO,OAAOH,GAAQ,SAAWA,EAAM,OAAOA,CAAG,CAAI,CAC3H,SAASI,GAAaC,EAAOC,EAAM,CAAE,GAAI,OAAOD,GAAU,UAAYA,IAAU,KAAM,OAAOA,EAAO,IAAIE,EAAOF,EAAM,OAAO,WAAW,EAAG,GAAIE,IAAS,OAAW,CAAE,IAAIC,EAAMD,EAAK,KAAKF,EAAOC,GAAQ,SAAS,EAAG,GAAI,OAAOE,GAAQ,SAAU,OAAOA,EAAK,MAAM,IAAI,UAAU,8CAA8C,CAAI,CAAC,OAAQF,IAAS,SAAW,OAAS,QAAQD,CAAK,CAAI,CAazX,IAAII,GAAMC,GAAI,OAAO,2BAA2B,EAC5C0c,GAAmB,IAAM,GAC7B,SAASC,GAAa9T,EAAQ,CAC5B,GAAI,CACF,OAAQ,CACN,KAAAoB,CACD,CACF,EAAGpB,EACJ,GAAIxI,EAAW,aAAa4J,CAAI,EAC9B,OAAOpB,EAAO,YAAcW,EAAgB,SAAWX,EAAO,YAAcW,EAAgB,YAAc,GAAK,GAAG,OAAOX,EAAO,KAAK,EAEvI,GAAIxI,EAAW,WAAW4J,CAAI,EAC5B,OAAOpB,EAAO,YAAca,EAAc,SAAWb,EAAO,YAAca,EAAc,YAAc,GAAK,GAAG,OAAOb,EAAO,KAAK,EAEnI,GAAIxI,EAAW,aAAa4J,CAAI,EAC9B,OAAOpB,EAAO,YAAcY,EAAgB,SAAWZ,EAAO,YAAcY,EAAgB,YAAc,GAAK,IAAK,OAAOZ,EAAO,MAAO,GAAI,EAE/I,GAAIxI,EAAW,WAAW4J,CAAI,EAC5B,OAAOpB,EAAO,YAAca,EAAc,SAAWb,EAAO,YAAca,EAAc,YAAc,GAAK,GAAG,OAAOb,EAAO,KAAK,EAEnI,GAAIxI,EAAW,cAAc4J,CAAI,EAC/B,MAAO,GAET,MAAM,IAAI,MAAM,uBAAuB,OAAOA,EAAM,kBAAkB,CAAC,CACzE,CACA,SAAS2S,GAAa/T,EAAQ,CAC5B,OAAIxI,EAAW,aAAawI,EAAO,OAAO,IAAI,GAAKA,EAAO,YAAcW,EAAgB,WAC/E,GAAG,OAAOX,EAAO,MAAO,KAAK,EAAE,OAAOA,EAAO,OAAO,KAAM,KAAK,EAAE,OAAOA,EAAO,GAAG,EAEpF,GAAG,OAAOA,EAAO,OAAO,KAAM,GAAG,EAAE,OAAOqD,GAA8BrD,EAAO,OAAO,KAAMA,EAAO,SAAS,EAAG;AAAA,KAAS,EAAE,OAAO8T,GAAa9T,CAAM,CAAC,CAC9J,CACA,SAASgU,GAA0Blc,EAAO,CACxC,GAAI,CACF,MAAA0L,EAAQ,CAAE,EACV,SAAA9K,EAAWmb,GACX,SAAAI,EAAWJ,GACX,SAAAK,EAAWL,EACZ,EAAG/b,EACAqc,EAAkBhI,EAAW,YAAC,CAACtU,EAAG0I,EAAMhD,IAAU,CACpD1F,EAAE,gBAAe,EACjBX,GAAI,MAAM,eAAgBqJ,EAAMhD,CAAK,EACrC2W,EAAS3W,CAAK,CAClB,EAAK,CAAC2W,CAAQ,CAAC,EACTE,EAAoBjI,EAAW,YAAC,CAACtU,EAAG0I,EAAMhD,IAAU,CACtD1F,EAAE,gBAAe,EACjBX,GAAI,MAAM,wBAAyBqJ,EAAMhD,CAAK,EAC9C,IAAI8W,EAAe,CAAC,GAAG7Q,CAAK,EAC5B6Q,EAAa,OAAO9W,EAAO,CAAC,EAC5B7E,EAAS2b,CAAY,CACzB,EAAK,CAAC3b,EAAU8K,CAAK,CAAC,EAChB8Q,EAAyBnI,EAAW,YAACtU,GAAK,CAC5CA,EAAE,gBAAe,CAClB,EAAE,CAAE,CAAA,EACD0c,EAAgBpI,EAAW,YAAC1I,GAAU,CAIxC,GAHA+Q,GAAU,aAAY,EAGlB/Q,EAAO,aAAe,KAG1B,KAAIgR,EAAchR,EAAO,OAAO,MAC5BiR,EAAmBjR,EAAO,YAAY,MACtC4Q,EAAe,CAAC,GAAG7Q,CAAK,EACxBmR,EAAcnR,EAAMiR,CAAW,EACnCJ,EAAa,OAAOI,EAAa,CAAC,EAClCJ,EAAa,OAAOK,EAAkB,EAAGC,CAAW,EACpDjc,EAAS2b,CAAY,EACzB,EAAK,CAAC3b,EAAU8K,CAAK,CAAC,EAGpB,OAAoBlK,EAAAA,KAAM,MAAO,CAC/B,UAAW,+BACX,SAAU,CAAcD,EAAI,IAACub,GAAiB,CAC5C,YAAaJ,GAAU,cACvB,UAAWD,EACX,SAAuBlb,EAAI,IAACwb,GAAW,CACrC,YAAa,2BACb,SAAU,CAACC,EAAUC,IAA0Bzb,EAAK,KAAC,MAAOyX,GAAcA,GAAc,CACtF,IAAK+D,EAAS,QAExB,EAAWA,EAAS,cAAc,EAAG,GAAI,CAC/B,UAAWrb,EAAW,sBAAuB,CAC3C,SAAUsb,EAAS,oBAC/B,CAAW,EACD,SAAU,CAACvR,EAAM,SAAW,GAAkBnK,EAAAA,IAAK,MAAO,CACxD,UAAW,kBACX,SAAU,oBACtB,CAAW,EAAGmK,EAAM,IAAI,CAACjD,EAAMhD,IAAuBlE,EAAAA,IAAK2b,GAE/C,CACA,YAAa,GAAG,OAAOzX,EAAO,GAAG,EAAE,OAAOgD,EAAK,IAAI,EACnD,MAAOhD,EACP,kCAAmC,GACnC,SAEA,CAACuX,EAAUC,IAA0B1b,EAAAA,IAAK,MAAO0X,GAAcA,GAAc,CAC3E,KAAM,WACN,SAAU,EACV,QAASlZ,GAAKsc,EAAgBtc,EAAG0I,EAAMhD,CAAK,EAC5C,UAAW9D,EAAW,sBAAuB,CAC3C,SAAUsb,EAAS,UACnC,CAAe,EACD,IAAKD,EAAS,QAE5B,EAAeA,EAAS,cAAc,EAAG,GAAI,CAC/B,SAAuBzb,EAAI,IAAC,MAAO,CACjC,UAAW,mCACX,SAAuBC,EAAK,KAAC,MAAO,CAClC,UAAW,kBACX,SAAU,CAAcD,EAAI,IAAC,MAAO,CAClC,UAAW,YACX,SAAuBA,EAAI,IAAC,OAAQ,CAClC,UAAW,eACX,MAAO,CACL,gBAAiB8H,GAA4BZ,EAAK,OAAO,KAAK,EAC9D,MAAOe,GAAuBf,EAAK,OAAO,KAAK,CAChD,EACD,SAAUA,EAAK,OAASG,GAAc,KAAO,MAAQ,KAC3E,CAAqB,CACrB,CAAmB,EAAgBrH,EAAI,IAAC,MAAO,CAC3B,UAAW,aACX,SAAU0a,GAAaxT,EAAK,MAAM,CACtD,CAAmB,EAAgBlH,EAAI,IAACK,EAAQ,CAC5B,KAAM,QACN,UAAW,YACX,QAAS7B,GAAKuc,EAAkBvc,EAAG0I,EAAMhD,CAAK,EAC9C,KAAM5D,GACN,QAAS,aACV,CAAA,EAAgBL,EAAK,KAAC,SAAUyX,GAAcA,GAAc,CAC3D,KAAM,SACN,UAAW,kDACX,QAASuD,CAE7B,EAAqBQ,EAAS,eAAe,EAAG,GAAI,CAChC,SAAU,CAAczb,EAAI,IAACiX,GAAS,CACpC,SAAU,kBAChC,CAAqB,EAAgBjX,EAAI,IAACsG,EAAiB,CACrC,KAAMsV,EAC5B,CAAqB,CAAC,CACH,CAAA,CAAC,CAAC,CACrB,CAAiB,CACjB,CAAe,CACf,CAAa,CAAC,CACH,EAAE,GAAG,OAAO1X,EAAO,GAAG,EAAE,OAAOgD,EAAK,IAAI,CAAC,CAAC,EAAGuU,EAAS,WAAW,CAC5E,CAAS,CAAC,CACV,CAAO,CACP,CAAK,EAAgBzb,EAAI,IAAC,KAAM,CAAE,CAAA,EAAgBA,EAAAA,IAAKK,EAAQ,CACzD,KAAM,QACN,QAASua,EACT,KAAMrU,GACN,SAAU,cAChB,CAAK,CAAC,CACN,CAAG,CACH,CCnKA,IAAI1I,GAAMC,GAAI,OAAO,iBAAiB,EAClC0c,GAAmB,IAAM,GACzBqB,GAAyB,CAACvU,EAAgB,SAAUA,EAAgB,aAAcA,EAAgB,WAAYA,EAAgB,aAAcA,EAAgB,sBAAuBA,EAAgB,UAAWA,EAAgB,mBAAoBA,EAAgB,QAASA,EAAgB,WAAW,EAAE,IAAIO,GAAuB7H,EAAAA,IAAK,SAAU,CACpV,MAAO6H,EACP,SAAUmB,GAA2BnB,CAAM,CAC7C,EAAGA,CAAM,CAAC,EACNiU,GAAmB,CAACvU,EAAgB,WAAYA,EAAgB,eAAgBA,EAAgB,SAAUA,EAAgB,iBAAkBA,EAAgB,YAAaA,EAAgB,UAAWA,EAAgB,QAASA,EAAgB,WAAW,EAAE,IAAIM,GAAuB7H,EAAI,IAAC,SAAU,CACtS,MAAO6H,EACP,SAAUqB,GAA2BrB,CAAM,CAC7C,EAAGA,CAAM,CAAC,EACNkU,GAAiB,CAACvU,EAAc,WAAYA,EAAc,eAAgBA,EAAc,UAAWA,EAAc,mBAAoBA,EAAc,SAAUA,EAAc,kBAAmBA,EAAc,QAASA,EAAc,WAAW,EAAE,IAAIK,GAAuB7H,EAAI,IAAC,SAAU,CAC5R,MAAO6H,EACP,SAAUsB,GAAyBtB,CAAM,CAC3C,EAAGA,CAAM,CAAC,EACNmU,GAAoB,CAACvU,GAAiB,QAASA,GAAiB,SAAUA,GAAiB,QAASA,GAAiB,WAAW,EAAE,IAAII,GAAuB7H,EAAAA,IAAK,SAAU,CAC9K,MAAO6H,EACP,SAAUuB,GAA4BvB,CAAM,CAC9C,EAAGA,CAAM,CAAC,EACNoU,GAAiB,CAACvU,EAAc,SAAUA,EAAc,aAAcA,EAAc,QAASA,EAAc,WAAW,EAAE,IAAIG,GAAuB7H,EAAAA,IAAK,SAAU,CACpK,MAAO6H,EACP,SAAUwB,GAAyBxB,CAAM,CAC3C,EAAGA,CAAM,CAAC,EACV,SAASqU,GAAuBjT,EAAW5L,EAAO8e,EAAYC,EAAU,CAOtE,OANInT,IAAc3B,EAAgB,SAAW2B,IAAc3B,EAAgB,aAGvE2B,IAAc3B,EAAgB,YAAc6U,GAAc,MAAQA,IAAe,IAAM,CAAC,OAAO,MAAM,OAAO,WAAWA,CAAU,CAAC,GAAKC,GAAY,MAAQA,IAAa,IAAM,CAAC,OAAO,MAAM,OAAO,WAAWA,CAAQ,CAAC,GAGvNnT,IAAc3B,EAAgB,YAAcjK,IAAU,QAAaA,IAAU,IAAM,CAAC,OAAO,MAAM,OAAO,WAAWA,CAAK,CAAC,CAI/H,CACA,SAASgf,GAAgBC,EAAmBC,EAAmBC,EAAwBC,EAAsBC,EAAgBP,EAAYC,EAAU,CACjJ,OAAQE,EAAiB,CACvB,KAAKhV,EAAgB,SACrB,KAAKA,EAAgB,aACrB,KAAKA,EAAgB,aACrB,KAAKA,EAAgB,sBACrB,KAAKA,EAAgB,UACrB,KAAKA,EAAgB,mBACnB,OAAoBtH,EAAAA,IAAK,QAAS,CAChC,KAAM,SACN,UAAW,eACX,YAAa,cACb,MAAO0c,GAAwE,GAC/E,SAAUH,CAClB,CAAO,EACH,KAAKjV,EAAgB,WACnB,OAAoBrH,EAAAA,KAAM,MAAO,CAC/B,UAAW,kBACX,SAAU,CAAcD,EAAI,IAAC,QAAS,CACpC,KAAM,SACN,UAAW,2BACX,YAAa,cACb,MAAOmc,GAA4D,GACnE,SAAUK,CACpB,CAAS,EAAgBxc,EAAI,IAAC,QAAS,CAC7B,KAAM,SACN,UAAW,sBACX,YAAa,YACb,MAAOoc,GAAsD,GAC7D,SAAUK,CACpB,CAAS,CAAC,CACV,CAAO,EACH,KAAKnV,EAAgB,QACrB,KAAKA,EAAgB,YACnB,OAAO,IACV,CACH,CACA,SAASqV,GAAgBL,EAAmBC,EAAmBG,EAAgB,CAC7E,OAAQJ,EAAiB,CACvB,KAAK/U,EAAgB,QACrB,KAAKA,EAAgB,YACnB,OAAO,KACT,QACE,OAAoBvH,EAAAA,IAAK,QAAS,CAChC,KAAM,OACN,UAAW,eACX,YAAa,cACb,MAAO0c,GAAwE,GAC/E,SAAUH,CAClB,CAAO,CACJ,CACH,CACA,SAASK,GAAcN,EAAmBC,EAAmBG,EAAgB,CAC3E,OAAQJ,EAAiB,CACvB,KAAK9U,EAAc,QACnB,KAAKA,EAAc,YACjB,OAAO,KACT,QACE,OAAoBxH,EAAAA,IAAK,QAAS,CAChC,KAAM,OACN,UAAW,eACX,YAAa,cACb,MAAO0c,GAAwE,GAC/E,SAAUH,CAClB,CAAO,CACJ,CACH,CACA,SAASM,IAAmB,CAC1B,OAAO,IACT,CACA,SAASC,GAAcR,EAAmBC,EAAmBG,EAAgB,CAC3E,OAAQJ,EAAiB,CACvB,KAAK5U,EAAc,QACnB,KAAKA,EAAc,YACjB,OAAO,KACT,QACE,OAAoB1H,EAAAA,IAAK,QAAS,CAChC,KAAM,OACN,UAAW,eACX,UAAW,EACX,YAAa,cACb,MAAO0c,GAAwE,GAC/E,SAAUH,CAClB,CAAO,CACJ,CACH,CACA,SAASQ,GAAgBte,EAAO,CAC9B,GAAI,CACF,OAAAE,EACA,OAAAgI,EACA,GAAAhG,EACA,SAAAtB,EAAWmb,EACZ,EAAG/b,EACAue,EAAqBre,EAAO,KAC5B,CAACse,EAAgBC,CAAiB,EAAItQ,EAAQ,SAACoQ,CAAkB,EACjE,CAACV,EAAmBa,CAAY,EAAIvQ,EAAAA,SAASjG,EAAO,SAAS,EAC7D,CAAC+V,EAAgBU,CAAQ,EAAIxQ,EAAAA,SAASjG,EAAO,KAAK,EAClD,CAACwV,EAAYkB,CAAa,EAAIzQ,EAAAA,SAASjG,EAAO,KAAK,EACnD,CAACyV,EAAUkB,CAAW,EAAI1Q,EAAAA,SAASjG,EAAO,GAAG,EAC7CqW,IAAuBC,IAEzBE,EAAa7T,GAA2B0T,CAAkB,CAAC,EAC3DI,EAAS7T,GAAuByT,CAAkB,CAAC,EACnDK,EAAc,MAAS,EACvBC,EAAY,MAAS,EACrBJ,EAAkBF,CAAkB,GAEtC,IAAIO,EAAanQ,EAAAA,QAAQ,IAAM,CAC7B,GAAI4P,IAAuB,OACzB,MAAO,GAET,GAAI7e,EAAW,aAAa6e,CAAkB,EAC5C,OAAOnB,GAET,GAAI1d,EAAW,WAAW6e,CAAkB,EAC1C,OAAOf,GAET,GAAI9d,EAAW,aAAa6e,CAAkB,EAC5C,OAAOlB,GAET,GAAI3d,EAAW,WAAW6e,CAAkB,EAC1C,OAAOjB,GAET,GAAI5d,EAAW,cAAc6e,CAAkB,EAC7C,OAAOhB,EAEb,EAAK,CAACgB,CAAkB,CAAC,EACnBQ,EAAwB1K,EAAW,YAACzV,GAAS,CAC/CQ,GAAI,MAAM,wBAAyBR,CAAK,EACxC8f,EAAa9f,CAAK,CACnB,EAAE,CAAE,CAAA,EACDkf,EAAoBzJ,EAAW,YAACtU,GAAK,CACvC,GAAI,CACF,MAAAnB,CACN,EAAQmB,EAAE,OACNX,GAAI,MAAM,oBAAqBR,CAAK,EACpC+f,EAAS/f,CAAK,CACf,EAAE,CAAE,CAAA,EACDmf,EAAyB1J,EAAW,YAACtU,GAAK,CAC5C,GAAI,CACF,MAAAnB,CACN,EAAQmB,EAAE,OACNX,GAAI,MAAM,yBAA0BR,CAAK,EACzCggB,EAAchgB,CAAK,CACpB,EAAE,CAAE,CAAA,EACDof,EAAuB3J,EAAW,YAACtU,GAAK,CAC1C,GAAI,CACF,MAAAnB,CACN,EAAQmB,EAAE,OACNX,GAAI,MAAM,uBAAwBR,CAAK,EACvCigB,EAAYjgB,CAAK,CAClB,EAAE,CAAE,CAAA,EACLgQ,EAAS,UAAC,UAA2B,CACnC,IAAI1N,EAAU,GACV2c,IAAsB,QACxBze,GAAI,MAAM,8DAA8D,EACxE8B,EAAU,IACDxB,EAAW,aAAaQ,EAAO,IAAI,GAAK,CAACud,GAAuBI,EAAmBI,EAAgBP,EAAYC,CAAQ,GAChIve,GAAI,MAAM,kDAAmD6e,CAAc,EAC3E/c,EAAU,IACDxB,EAAW,WAAWQ,EAAO,IAAI,GAAK,CAACiM,GAAqBjK,EAAI2b,EAAmBI,CAAc,IAC1G7e,GAAI,MAAM,2DAA4D6e,CAAc,EACpF/c,EAAU,IAEZN,EAAS,CACP,UAAWid,EACX,MAAOI,EACP,MAAOP,EACP,IAAKC,CACN,EAAEzc,CAAO,CACd,EAAK,CAACN,EAAUV,EAAO,KAAMgC,EAAI2b,EAAmBI,EAAgBP,EAAYC,CAAQ,CAAC,EACvF,IAAIqB,EAAkBrQ,EAAAA,QAAQ,IAAM,CAClC,GAAI4P,IAAuB,OAEzB,OAAO,KAET,GAAI7e,EAAW,aAAa6e,CAAkB,EAC5C,OAAOX,GAAgBC,EAAmBC,EAAmBC,EAAwBC,EAAsBC,EAAgBP,EAAYC,CAAQ,EAEjJ,GAAIje,EAAW,WAAW6e,CAAkB,EAC1C,OAAOF,GAAcR,EAAmBC,EAAmBG,CAAc,EAE3E,GAAIve,EAAW,aAAa6e,CAAkB,EAC5C,OAAOL,GAAgBL,EAAmBC,EAAmBG,CAAc,EAE7E,GAAIve,EAAW,WAAW6e,CAAkB,EAC1C,OAAOJ,GAAcN,EAAmBC,EAAmBG,CAAc,EAE3E,GAAIve,EAAW,cAAc6e,CAAkB,EAC7C,OAAOH,GAAgB,CAE7B,EAAK,CAACG,EAAoBV,EAAmBI,EAAgBP,EAAYC,EAAUG,EAAmBC,EAAwBC,CAAoB,CAAC,EACjJ,OAAoBxc,EAAAA,KAAM,MAAO,CAC/B,UAAW,wBACX,SAAU,CAAcD,EAAI,IAACE,GAAQ,CACnC,MAAOoc,EACP,cAAe,mBACf,UAAW,qBACX,SAAUkB,EACV,SAAUD,CACX,CAAA,EAAGE,CAAe,CACvB,CAAG,CACH,CCzOA,IAAI5f,GAAMC,GAAI,OAAO,aAAa,EAC9B4f,GAAqB,UACrBC,GAAsB,UACtBC,GAAqB,UACrBC,GAAyB,IACzBrD,GAAmB,IAAM,GAC7B,SAASsD,GAAYrf,EAAO,CAC1B,IAAIsf,EAAuBC,EACvB,CACF,OAAArX,EACA,SAAAtH,EAAWmb,EACZ,EAAG/b,EACA,CAACwf,EAAWC,CAAY,EAAItR,EAAAA,SAASjG,EAAO,IAAI,EAChD,CAACwX,EAAYC,CAAa,EAAIxR,YAAUmR,GAAyBC,EAAuBrX,EAAO,gBAAkB,MAAQqX,IAAyB,OAAS,OAASA,EAAqB,cAAgB,MAAQD,IAA0B,OAASA,EAAwBL,EAAkB,EAC9R,CAACnS,EAAS8S,CAAQ,EAAIzR,EAAQ,SAAC,EAAK,EACpC,CAAC0R,EAAeC,CAAgB,EAAI3R,EAAQ,SAACiR,EAAsB,EACnEW,EAAcxR,SAAO,IAAI,EACzByR,EAAyB3L,EAAW,YAACtU,GAAK,CAC5C,GAAI,CACF,MAAAnB,CACN,EAAQmB,EAAE,OACNX,GAAI,MAAM,yBAA0BR,CAAK,EACzC+gB,EAAc/gB,CAAK,CACpB,EAAE,CAAE,CAAA,EACDqhB,EAAmB5L,EAAAA,YAAY,IAAM,CACnCvH,GACF8S,EAAS,EAAK,CAEpB,EAAK,CAAC9S,CAAO,CAAC,EACRoT,EAAoB7L,EAAAA,YAAY,IAAM,CACnCvH,GACHqT,IAEFP,EAAS,CAAC9S,CAAO,CACrB,EAAK,CAACA,CAAO,CAAC,EACRsT,EAAezR,UAAQ,IAAM,CAACzF,EAAgB,cAAeA,EAAgB,SAAUA,EAAgB,SAAUA,EAAgB,KAAMA,EAAgB,QAASA,EAAgB,SAAUA,EAAgB,SAAUA,EAAgB,MAAM,EAAG,CAAA,CAAE,EACnP,SAASiX,GAAsB,CACzBJ,EAAY,SACdD,EAAiBC,EAAY,QAAQ,sBAAuB,EAAC,KAAK,CAErE,CACDnR,EAAS,UAAC,UAAuB,CAC/BhO,EAAS,CACP,KAAM4e,EACN,aAAc,CACZ,MAAOa,GAAW,OAAOX,CAAU,EAAIR,GAAsBC,GAC7D,WAAAO,CACD,CACP,CAAK,CACF,EAAE,CAAC9e,EAAU4e,EAAWE,CAAU,CAAC,EACpC,IAAIY,EAAgBjM,EAAAA,YAAY,IAAM,CA8BpC,QA5BIkM,EAAc,CAAA,EACdhZ,EAAQ,UAAiB,CAC3B,IAAI6B,EAASgX,EAAa3a,CAAK,EAC3B9G,EAAM,UAAU,OAAO8G,EAAO,GAAG,EAAE,OAAO2D,CAAM,EAEpDmX,EAAY,KAAmB/e,EAAK,KAACI,EAAQ,CAC3C,KAAM,SACN,UAAW,mBACX,QAAS,IAAM,CACb6d,EAAarW,CAAM,EACnBwW,EAAS,EAAK,CACf,EACD,MAAO,CACL,MAAOpW,GAAuB,CAC5B,KAAMJ,CAClB,CAAW,EACD,WAAYC,GAA4B,CACtC,KAAMD,CAClB,CAAW,CACF,EACD,SAAU,CAACA,IAAWoW,GAA0Bje,EAAAA,IAAKsG,EAAiB,CACpE,KAAM2Y,GACN,UAAW,MACZ,CAAA,EAAGpX,IAAWoW,GAA0Bje,EAAAA,IAAK,OAAQ,CACpD,UAAW,MACrB,CAAS,EAAG4H,GAAqBC,CAAM,CAAC,CACxC,EAASzK,CAAG,CAAC,CACb,EACa8G,EAAQ,EAAGA,EAAQ2a,EAAa,OAAQ3a,GAAS,EACxD8B,IAEF,OAAOgZ,CACX,EAAK,CAACH,EAAcZ,CAAS,CAAC,EACxBiB,EAAoBpM,EAAAA,YAAY,IAAmB9S,EAAAA,IAAK,MAAO,CACjE,UAAW,uBACX,KAAM,eACN,MAAO,CACL,MAAOse,CACR,EACD,SAAuBte,EAAI,IAAC,MAAO,CACjC,UAAW,gBACX,SAAU+e,EAAe,CAC/B,CAAK,CACF,CAAA,EAAG,CAACT,EAAeS,CAAa,CAAC,EAClC,OAAoB9e,EAAAA,KAAM,MAAO,CAC/B,UAAW,eACX,SAAU,CAAcA,EAAK,KAAC,MAAO,CACnC,UAAW,OACX,IAAKue,EACL,SAAU,CAAcxe,EAAI,IAAC,QAAS,CACpC,UAAW,OACX,SAAU,OAClB,CAAO,EAAgBC,EAAK,KAACI,EAAQ,CAC7B,KAAM,SACN,UAAW,4BACX,MAAO,CACL,MAAO4H,GAAuB,CAC5B,KAAMgW,CAClB,CAAW,EACD,WAAYnW,GAA4B,CACtC,KAAMmW,CAClB,CAAW,CACF,EACD,QAASU,EACT,SAAU,CAAC/W,GAAqBqW,CAAS,EAAgBje,EAAAA,IAAKmf,GAAc,CAC1E,QAAS5T,EACT,QAAS,CACP,YAAa2T,EAAmB,CACjC,EACD,cAAe,CACb,UAAW,cACZ,EACD,gBAAiB,sBACjB,aAAcR,EACd,UAAW,CACT,SAAU,QACX,CACX,CAAS,CAAC,CACV,CAAO,CAAC,CACH,CAAA,EAAGT,IAActW,EAAgB,QAAuB1H,EAAAA,KAAM,MAAO,CACpE,UAAW,OACX,SAAU,CAAcD,EAAI,IAAC,QAAS,CACpC,UAAW,OACX,SAAU,YAClB,CAAO,EAAgBA,EAAI,IAAC,QAAS,CAC7B,KAAM,QACN,MAAOme,EACP,UAAW,6BACX,SAAUM,CAClB,CAAO,CAAC,CACR,CAAK,CAAC,CACN,CAAG,CACH,CC1JA,SAASrH,GAAQC,EAAQC,EAAgB,CAAE,IAAIC,EAAO,OAAO,KAAKF,CAAM,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAIG,EAAU,OAAO,sBAAsBH,CAAM,EAAGC,IAAmBE,EAAUA,EAAQ,OAAO,SAAUC,EAAK,CAAE,OAAO,OAAO,yBAAyBJ,EAAQI,CAAG,EAAE,UAAW,CAAE,GAAIF,EAAK,KAAK,MAAMA,EAAMC,CAAO,CAAE,CAAG,OAAOD,CAAO,CACrV,SAASG,GAAcC,EAAQ,CAAE,QAAS/X,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAAE,IAAIgY,EAAiB,UAAUhY,CAAC,GAAnB,KAAuB,UAAUA,CAAC,EAAI,CAAE,EAAEA,EAAI,EAAIwX,GAAQ,OAAOQ,CAAM,EAAG,EAAE,EAAE,QAAQ,SAAUxa,EAAK,CAAEF,GAAgBya,EAAQva,EAAKwa,EAAOxa,CAAG,CAAC,CAAI,CAAA,EAAI,OAAO,0BAA4B,OAAO,iBAAiBua,EAAQ,OAAO,0BAA0BC,CAAM,CAAC,EAAIR,GAAQ,OAAOQ,CAAM,CAAC,EAAE,QAAQ,SAAUxa,EAAK,CAAE,OAAO,eAAeua,EAAQva,EAAK,OAAO,yBAAyBwa,EAAQxa,CAAG,CAAC,CAAE,CAAE,CAAI,CAAC,OAAOua,CAAS,CAC1f,SAASza,GAAgBC,EAAKC,EAAKC,EAAO,CAAE,OAAAD,EAAME,GAAeF,CAAG,EAAOA,KAAOD,EAAO,OAAO,eAAeA,EAAKC,EAAK,CAAE,MAAOC,EAAO,WAAY,GAAM,aAAc,GAAM,SAAU,EAAM,CAAA,EAAYF,EAAIC,CAAG,EAAIC,EAAgBF,CAAM,CAC5O,SAASG,GAAeC,EAAK,CAAE,IAAIH,EAAMI,GAAaD,EAAK,QAAQ,EAAG,OAAO,OAAOH,GAAQ,SAAWA,EAAM,OAAOA,CAAG,CAAI,CAC3H,SAASI,GAAaC,EAAOC,EAAM,CAAE,GAAI,OAAOD,GAAU,UAAYA,IAAU,KAAM,OAAOA,EAAO,IAAIE,EAAOF,EAAM,OAAO,WAAW,EAAG,GAAIE,IAAS,OAAW,CAAE,IAAIC,EAAMD,EAAK,KAAKF,EAAOC,GAAQ,SAAS,EAAG,GAAI,OAAOE,GAAQ,SAAU,OAAOA,EAAK,MAAM,IAAI,UAAU,8CAA8C,CAAI,CAAC,OAAQF,IAAS,SAAW,OAAS,QAAQD,CAAK,CAAI,CAUzX,IAAII,GAAMC,GAAI,OAAO,oBAAoB,EACrC0c,GAAmB,IAAM,GAC7B,SAAS4E,GAAkBlV,EAAS,CAClC,GAAI,CACF,KAAAnC,EACA,KAAA0C,CACJ,EAAMP,EAAQ,CAAC,EACTvL,EAAS,CACX,KAAAoJ,EACA,KAAA0C,CACJ,EACM9D,EAAS+Q,GAAc,CACzB,OAAA/Y,EACA,MAAO+K,GAAuB,CAClC,EAAKD,GAAiC1B,CAAI,CAAC,EACzC,OAAOpB,CACT,CACA,SAAS0Y,GAAmB5gB,EAAO,CACjC,IAAI6gB,EACA,CACF,QAAApV,EACA,OAAAvD,EAASyY,GAAkBlV,CAAO,EAClC,GAAAvJ,EACA,SAAAtB,EAAWmb,EACZ,EAAG/b,EACA,CAAC8gB,EAAgBC,CAAS,EAAI5S,EAAAA,UAAU0S,EAAgBpV,EAAQ,KAAKkM,GAAKA,EAAE,OAASzP,EAAO,OAAO,MAAQyP,EAAE,OAASzP,EAAO,OAAO,IAAI,KAAO,MAAQ2Y,IAAkB,OAASA,EAAgBpV,EAAQ,CAAC,CAAC,EAC5M,CAACuV,EAAiBC,CAAkB,EAAI9S,EAAQ,SAACpD,GAAmB7C,CAAM,CAAC,EAC3E,CAACgZ,EAAgBC,CAAiB,EAAIhT,EAAQ,SAAC,EAAK,EACpD,CAACiT,EAAeC,CAAQ,EAAIlT,EAAAA,SAASjG,EAAO,KAAK,EACjDoZ,EAAqBjN,EAAW,YAACzV,GAAS,CAC5C,IAAI2iB,EAAY9V,EAAQ,KAAKpG,GAAQ,CACnC,GAAI,CACF,KAAA2G,CACD,EAAG3G,EACJ,OAAO2G,IAASpN,CACtB,CAAK,EACG2iB,IAAc,QAChBR,EAAUQ,CAAS,EACfT,EAAe,OAASS,EAAU,OACpCN,EAAmBjW,GAAiCuW,EAAU,IAAI,CAAC,EACnEJ,EAAkB,EAAK,IAGzB/hB,GAAI,MAAM,UAAU,OAAOR,EAAO,aAAa,CAAC,CAEtD,EAAK,CAAC6M,EAASqV,CAAc,CAAC,EACxB/B,EAAwB1K,EAAAA,YAAY,CAACmN,EAAwBtgB,IAAY,CAC3E9B,GAAI,MAAM,wBAAyBoiB,EAAwBtgB,CAAO,EAClE+f,EAAmBO,CAAsB,EACzCL,EAAkBjgB,CAAO,CAC1B,EAAE,CAAE,CAAA,EACDugB,EAAoBpN,EAAW,YAACqN,GAAsB,CACxDtiB,GAAI,MAAM,oBAAqBsiB,CAAkB,EACjDL,EAASK,CAAkB,CAC5B,EAAE,CAAE,CAAA,EACL9S,EAAS,UAAC,UAA8B,CACtC,IAAI1N,EAAUggB,EACVJ,IAAmB,SACrB1hB,GAAI,MAAM,8CAA8C,EACxD8B,EAAU,KAERkgB,IAAkB,QAAaA,EAAc,OAASlY,EAAgB,iBACxE9J,GAAI,MAAM,6CAA6C,EACvD8B,EAAU,IAEZ,GAAI,CACF,KAAAoI,EACA,KAAA0C,CACD,EAAG8U,EACA5gB,EAAS,CACX,KAAAoJ,EACA,KAAA0C,CACN,EACIpL,EAASqY,GAAc,CACrB,OAAA/Y,EACA,MAAOkhB,CACb,EAAOJ,CAAe,EAAG9f,CAAO,CAChC,EAAK,CAACN,EAAUkgB,EAAgBM,EAAeJ,EAAiBE,CAAc,CAAC,EAC7E,IAAIS,EAAchT,EAAO,QAAC,IAAMlD,EAAQ,IAAI3E,GAAS,CACnD,GAAI,CACF,KAAAkF,CACD,EAAGlF,EACJ,OAAOkF,CACX,CAAG,EAAG,CAACP,CAAO,CAAC,EACb,OAAoBjK,EAAAA,KAAM,MAAO,CAC/B,UAAW,+BACX,SAAU,CAAcA,EAAK,KAAC,MAAO,CACnC,UAAW,OACX,SAAU,CAAcD,EAAI,IAAC,QAAS,CACpC,UAAW,OACX,SAAU,gBAClB,CAAO,EAAgBA,EAAI,IAACqgB,GAAU,CAC9B,aAAc,0BACd,mBAAoBd,GAAmB,KAAoC,OAASA,EAAe,KACnG,SAAUQ,EACV,SAAUK,CAClB,CAAO,CAAC,CACH,CAAA,EAAGb,IAAmB,QAA0Btf,EAAAA,KAAMwG,EAAAA,SAAW,CAChE,SAAU,CAAczG,EAAI,IAAC+c,GAAiB,CAC5C,GAAIpc,EACJ,OAAQ4e,EACR,OAAQE,EACR,SAAUjC,CAClB,CAAO,EAAgBxd,EAAI,IAAC8d,GAAa,CACjC,OAAQ+B,EACR,SAAUK,CAClB,CAAO,CAAC,CACR,CAAK,CAAC,CACN,CAAG,CACH,CC3HA,SAAS9I,GAAQC,EAAQC,EAAgB,CAAE,IAAIC,EAAO,OAAO,KAAKF,CAAM,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAIG,EAAU,OAAO,sBAAsBH,CAAM,EAAGC,IAAmBE,EAAUA,EAAQ,OAAO,SAAUC,EAAK,CAAE,OAAO,OAAO,yBAAyBJ,EAAQI,CAAG,EAAE,UAAW,CAAE,GAAIF,EAAK,KAAK,MAAMA,EAAMC,CAAO,CAAE,CAAG,OAAOD,CAAO,CACrV,SAASG,GAAcC,EAAQ,CAAE,QAAS/X,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAAE,IAAIgY,EAAiB,UAAUhY,CAAC,GAAnB,KAAuB,UAAUA,CAAC,EAAI,CAAE,EAAEA,EAAI,EAAIwX,GAAQ,OAAOQ,CAAM,EAAG,EAAE,EAAE,QAAQ,SAAUxa,EAAK,CAAEF,GAAgBya,EAAQva,EAAKwa,EAAOxa,CAAG,CAAC,CAAI,CAAA,EAAI,OAAO,0BAA4B,OAAO,iBAAiBua,EAAQ,OAAO,0BAA0BC,CAAM,CAAC,EAAIR,GAAQ,OAAOQ,CAAM,CAAC,EAAE,QAAQ,SAAUxa,EAAK,CAAE,OAAO,eAAeua,EAAQva,EAAK,OAAO,yBAAyBwa,EAAQxa,CAAG,CAAC,CAAE,CAAE,CAAI,CAAC,OAAOua,CAAS,CAC1f,SAASza,GAAgBC,EAAKC,EAAKC,EAAO,CAAE,OAAAD,EAAME,GAAeF,CAAG,EAAOA,KAAOD,EAAO,OAAO,eAAeA,EAAKC,EAAK,CAAE,MAAOC,EAAO,WAAY,GAAM,aAAc,GAAM,SAAU,EAAM,CAAA,EAAYF,EAAIC,CAAG,EAAIC,EAAgBF,CAAM,CAC5O,SAASG,GAAeC,EAAK,CAAE,IAAIH,EAAMI,GAAaD,EAAK,QAAQ,EAAG,OAAO,OAAOH,GAAQ,SAAWA,EAAM,OAAOA,CAAG,CAAI,CAC3H,SAASI,GAAaC,EAAOC,EAAM,CAAE,GAAI,OAAOD,GAAU,UAAYA,IAAU,KAAM,OAAOA,EAAO,IAAIE,EAAOF,EAAM,OAAO,WAAW,EAAG,GAAIE,IAAS,OAAW,CAAE,IAAIC,EAAMD,EAAK,KAAKF,EAAOC,GAAQ,SAAS,EAAG,GAAI,OAAOE,GAAQ,SAAU,OAAOA,EAAK,MAAM,IAAI,UAAU,8CAA8C,CAAI,CAAC,OAAQF,IAAS,SAAW,OAAS,QAAQD,CAAK,CAAI,CAUzX,IAAII,GAAMC,GAAI,OAAO,iBAAiB,EAClC0c,GAAmB,IAAM,GAC7B,SAAS4E,GAAkBlV,EAAS,CAClC,GAAI,CACF,KAAAnC,EACA,KAAA0C,CACJ,EAAMP,EAAQ,CAAC,EACTvL,EAAS,CACX,KAAAoJ,EACA,KAAA0C,CACJ,EACM9D,EAAS+Q,GAAc,CACzB,OAAA/Y,EACA,MAAO+K,GAAuB,CAClC,EAAKD,GAAiC1B,CAAI,CAAC,EACzC,OAAOpB,CACT,CACA,SAAS2Z,GAAgB7hB,EAAO,CAC9B,IAAI6gB,EACA,CACF,QAAApV,EACA,OAAAvD,EAASyY,GAAkBlV,CAAO,EAClC,GAAAvJ,EACA,SAAAtB,EAAWmb,EACZ,EAAG/b,EACA,CAAC8gB,EAAgBC,CAAS,EAAI5S,EAAAA,UAAU0S,EAAgBpV,EAAQ,KAAKkM,GAAKA,EAAE,OAASzP,EAAO,OAAO,MAAQyP,EAAE,OAASzP,EAAO,OAAO,IAAI,KAAO,MAAQ2Y,IAAkB,OAASA,EAAgBpV,EAAQ,CAAC,CAAC,EAC5M,CAACuV,EAAiBC,CAAkB,EAAI9S,EAAQ,SAACpD,GAAmB7C,CAAM,CAAC,EAC3E,CAACgZ,EAAgBC,CAAiB,EAAIhT,EAAQ,SAAC,EAAK,EACpD,CAACiT,EAAeC,CAAQ,EAAIlT,EAAAA,SAASjG,EAAO,KAAK,EACjDoZ,EAAqBjN,EAAW,YAACzV,GAAS,CAC5C,IAAI2iB,EAAY9V,EAAQ,KAAKpG,GAAQ,CACnC,GAAI,CACF,KAAA2G,CACD,EAAG3G,EACJ,OAAO2G,IAASpN,CACtB,CAAK,EACG2iB,IAAc,QAChBR,EAAUQ,CAAS,EACfT,EAAe,OAASS,EAAU,OACpCN,EAAmBjW,GAAiCuW,EAAU,IAAI,CAAC,EACnEJ,EAAkB,EAAK,IAGzB/hB,GAAI,MAAM,UAAU,OAAOR,EAAO,aAAa,CAAC,CAEtD,EAAK,CAAC6M,EAASqV,CAAc,CAAC,EACxB/B,EAAwB1K,EAAAA,YAAY,CAACmN,EAAwBtgB,IAAY,CAC3E9B,GAAI,MAAM,wBAAyBoiB,EAAwBtgB,CAAO,EAClE+f,EAAmBO,CAAsB,EACzCL,EAAkBjgB,CAAO,CAC1B,EAAE,CAAE,CAAA,EACDugB,EAAoBpN,EAAW,YAACqN,GAAsB,CACxDtiB,GAAI,MAAM,oBAAqBsiB,CAAkB,EACjDL,EAASK,CAAkB,CAC5B,EAAE,CAAE,CAAA,EACL9S,EAAS,UAAC,UAA2B,CACnC,GAAIkS,IAAmB,OAAW,CAChC1hB,GAAI,MAAM,sCAAsC,EAChD,MACD,CACD,GAAIgiB,IAAkB,OAAW,CAC/BhiB,GAAI,MAAM,qCAAqC,EAC/C,MACD,CACD,GAAI,CACF,KAAAkK,EACA,KAAA0C,CACD,EAAG8U,EACA5gB,EAAS,CACX,KAAAoJ,EACA,KAAA0C,CACN,EACIpL,EAASqY,GAAc,CACrB,OAAA/Y,EACA,MAAOkhB,CACb,EAAOJ,CAAe,EAAGE,CAAc,CACvC,EAAK,CAACtgB,EAAUkgB,EAAgBM,EAAeJ,EAAiBE,CAAc,CAAC,EAC7E,IAAIS,EAAchT,EAAO,QAAC,IAAMlD,EAAQ,IAAI3E,GAAS,CACnD,GAAI,CACF,KAAAkF,CACD,EAAGlF,EACJ,OAAOkF,CACX,CAAG,EAAG,CAACP,CAAO,CAAC,EACb,OAAoBjK,EAAAA,KAAM,MAAO,CAC/B,UAAW,+BACX,SAAU,CAAcA,EAAK,KAAC,MAAO,CACnC,UAAW,OACX,SAAU,CAAcD,EAAI,IAAC,QAAS,CACpC,UAAW,OACX,SAAU,eAClB,CAAO,EAAgBA,EAAI,IAACqgB,GAAU,CAC9B,aAAc,iCACd,mBAAoBd,GAAmB,KAAoC,OAASA,EAAe,KACnG,SAAUQ,EACV,SAAUK,CAClB,CAAO,CAAC,CACH,CAAA,EAAGb,IAAmB,QAA0Btf,EAAAA,KAAMwG,EAAAA,SAAW,CAChE,SAAU,CAAczG,EAAI,IAAC+c,GAAiB,CAC5C,OAAQwC,EACR,OAAQE,EACR,GAAI9e,EACJ,SAAU6c,CAClB,CAAO,EAAgBxd,EAAI,IAAC8d,GAAa,CACjC,OAAQ+B,EACR,SAAUK,CAClB,CAAO,CAAC,CACR,CAAK,CAAC,CACN,CAAG,CACH,CC/GA,IAAIriB,GAAMC,GAAI,OAAO,yBAAyB,EAC1C0c,GAAmB,IAAM,GAC7B,SAAS+F,GAAqB1Y,EAAQ,CACpC,OAAQA,EAAM,CACZ,KAAKR,GAAc,YACjB,OAAoBrH,EAAI,IAACwgB,GAAuB,CAAA,CAAE,EACpD,KAAKnZ,GAAc,KACjB,OAAoBrH,EAAI,IAACygB,GAAoB,CAAA,CAAE,CAClD,CACH,CACA,SAASC,GAAsB7Y,EAAQ,CACrC,OAAQA,EAAM,CACZ,KAAKR,GAAc,YACjB,MAAO,cACT,KAAKA,GAAc,KACjB,MAAO,MACV,CACH,CACA,IAAIsZ,GAAiB,CAACtZ,GAAc,YAAaA,GAAc,IAAI,EACnE,SAASuZ,GAAwBniB,EAAO,CACtC,IAAIoiB,EACA,CACF,QAASC,EACT,GAAAngB,EACA,OAAAwL,EAASqO,GACT,SAAAuG,EAAWvG,GACX,SAAAwG,EAAWxG,GACX,KAAMyG,CACP,EAAGxiB,EACAyL,EAAU4W,EAAgB,OAAO7V,EAAiB,EAClD,CAACiW,EAAmBC,CAAY,EAAIvU,EAAQ,UAAEiU,EAAoBI,GAAgB,KAAiC,OAASA,EAAY,QAAU,MAAQJ,IAAsB,OAASA,EAAoBF,GAAe,CAAC,CAAC,EAC9N,CAACzZ,EAAMka,CAAO,EAAIxU,EAAQ,SAACqU,CAAW,EACtC,CAACthB,EAAS0hB,CAAU,EAAIzU,EAAQ,SAAC,EAAK,EACtC0U,EAAexO,EAAAA,YAAY,IAAM,CACnCkO,GACJ,EAAK,CAACA,CAAQ,CAAC,EACTO,EAAazO,EAAAA,YAAY,IAAM,CACjC,GAAI5L,IAAS,OAAW,CACtBrJ,GAAI,MAAM,sBAAsB,EAChC,MACD,CACDsO,EAAOjF,CAAI,CACf,EAAK,CAACiF,EAAQjF,CAAI,CAAC,EACbsa,EAAwB1O,EAAW,YAACzV,GAAS,CAC/CQ,GAAI,MAAM,wBAAyBR,CAAK,EACxC8jB,EAAa9jB,CAAK,CACnB,EAAE,CAAE,CAAA,EACDokB,EAAmB3O,EAAAA,YAAY,CAAC4O,EAAYC,IAAgB,CAC9D9jB,GAAI,MAAM,mBAAoB6jB,EAAYC,EAAaT,CAAiB,EACxE,IAAIU,EAAc,CAChB,KAAMV,EACN,OAAQQ,CACd,EACIN,EAAQQ,CAAW,EACnBP,EAAWM,CAAW,EACtBZ,EAASY,EAAcC,EAAc,MAAS,CAClD,EAAK,CAACb,EAAUG,CAAiB,CAAC,EAChC,OAAoBjhB,EAAAA,KAAM,MAAO,CAC/B,UAAW,iCACX,SAAU,CAAcA,EAAK,KAAC,MAAO,CACnC,UAAW,OACX,SAAU,CAAcD,EAAI,IAAC,QAAS,CACpC,UAAW,OACX,QAAS,mBACT,SAAU,kBAClB,CAAO,EAAgBA,EAAI,IAAC,MAAO,CAC3B,UAAW,iBACX,SAAU2gB,GAAe,IAAI,CAAC5Y,EAAM7D,IAAuBlE,EAAI,IAAC,MAAO,CACrE,UAAW,iBACX,SAAuBC,EAAK,KAAC,SAAU,CACrC,KAAM,SACN,UAAWG,EAAW,MAAO,WAAY,qBAAsB,CAC7D,OAAQ2H,IAASmZ,CAC/B,CAAa,EACD,aAAchd,EACd,QAAS,IAAMsd,EAAsBzZ,CAAI,EACzC,SAAU,CAACwY,GAAqBxY,CAAI,EAAG2Y,GAAsB3Y,CAAI,CAAC,CAC9E,CAAW,CACF,EAAEA,CAAI,CAAC,CAChB,CAAO,CAAC,CACH,CAAA,EAAGmZ,IAAsB7Z,GAAc,aAA4BrH,EAAAA,IAAKqf,GAAoB,CAC3F,QAASnV,EACT,GAAIvJ,EACJ,OAAQuG,GAAS,KAA0B,OAASA,EAAK,OACzD,SAAUua,CACX,CAAA,EAAGP,IAAsB7Z,GAAc,MAAqBrH,EAAAA,IAAKsgB,GAAiB,CACjF,QAASpW,EACT,OAAQhD,GAAS,KAA0B,OAASA,EAAK,OACzD,GAAIvG,EACJ,SAAU8gB,CAChB,CAAK,EAAgBzhB,EAAI,IAAC,KAAM,CAAE,CAAA,EAAgBC,EAAAA,KAAM,MAAO,CACzD,UAAW,kCACX,SAAU,CAAcD,EAAI,IAACK,EAAQ,CACnC,KAAM,YACN,QAASihB,EACT,UAAW,OACX,SAAU,QAClB,CAAO,EAAgBthB,EAAI,IAACK,EAAQ,CAC5B,KAAM,UACN,QAASkhB,EACT,SAAUra,IAAS,QAAa,CAACvH,EACjC,SAAU,MAClB,CAAO,CAAC,CACR,CAAK,CAAC,CACN,CAAG,CACH,CC7Ge,SAASkiB,GAA0B/d,EAAM,CACtD,IAAIge,EAAuBC,EACvB,CACF,KAAA/S,EACA,OAAAgT,EACA,QAAAC,CACD,EAAGne,EACA,CAACoe,EAAUC,CAAW,EAAIvV,EAAQ,SAAC,EAAK,EACxC,CAACwV,EAAQC,CAAS,EAAIzV,EAAQ,SAAC,CAAC,EAChC,CAAC0V,EAAiBC,CAAkB,EAAI3V,EAAQ,SAAC,EAAK,EACtD,CAAC4V,EAAaC,CAAc,EAAI7V,EAAQ,SAAC,EAAK,EAC9C,CAAC8V,EAAWC,CAAY,EAAI/V,EAAQ,SAAC,EAAK,EAC1CgW,EAAY5V,EAAAA,SAGhBK,EAAS,UAAC,UAAsC,CAC9C,GAAK2U,EAGL,IAAI,CACF,KAAK,MAAMhT,CAAI,EACf2T,EAAa,EAAI,CAClB,MAAiB,CAChBA,EAAa,EAAK,CACnB,CACDF,EAAe,EAAK,EACxB,EAAK,CAACT,EAAQhT,CAAI,CAAC,EAGjB3B,EAAS,UAAC,UAAsC,CAC1CuV,EAAU,SACZA,EAAU,QAAQ,QAExB,EAAK,CAACR,CAAM,CAAC,EAGX/U,EAAS,UAAC,UAAgC,CACpCuV,EAAU,SACZA,EAAU,QAAQ,cAAc,CAC9B,YAAaN,EAAkB,KAAO,KAC9C,CAAO,CAEP,EAAK,CAACA,CAAe,CAAC,EACpB,SAASO,GAAoB,CAC3BN,EAAmB,CAACD,CAAe,CACpC,CACD,SAASQ,GAAe,CACtB,IAAIC,EACArf,GAASqf,EAAqBH,EAAU,WAAa,MAAQG,IAAuB,OAAS,OAASA,EAAmB,SAAQ,EACjI,CAACL,GAAa,CAAChf,IAGd8e,GAIH9e,EAAM,SAASsL,CAAI,EACnByT,EAAe,EAAK,IAJpB/e,EAAM,SAAS,KAAK,UAAU,KAAK,MAAMsL,CAAI,EAAG,OAAW,CAAC,CAAC,EAC7DyT,EAAe,EAAI,GAKrBO,IACD,CACD,SAASA,GAAqB,CAC5B,IAAIC,EAAuBC,EACvBC,EAASP,EAAU,QAClBO,GAGLZ,IAAqBU,GAAyBC,EAAmBC,EAAO,cAAgB,MAAQD,IAAqB,OAAS,OAASA,EAAiB,aAAc,KAAM,MAAQD,IAA0B,OAASA,EAAwB,GAAK,CAAC,CACtP,CACD,SAASG,GAAe,CAClBlB,IACFU,EAAU,QAAU,OACpBX,IAEH,CACD,SAASoB,EAAoBF,EAAQ,CACnCP,EAAU,QAAUO,EACpBd,EAAUc,EAAO,iBAAgB,CAAE,EACnCA,EAAO,uBAAuB5d,GAAS,CACrC,GAAI,CACF,cAAA+d,CACD,EAAG/d,EACJ,OAAO8c,EAAUiB,CAAa,CACpC,CAAK,EACDN,GACD,CACD,MAAI,CAAChB,GAAU,CAACE,EACP,KAEWjiB,EAAAA,KAAMsjB,GAAO,CAC/B,OAAQvB,EACR,SAAU,GACV,SAAU,GACV,OAAQoB,EACR,SAAU,IAAMjB,EAAY,EAAI,EAChC,SAAU,IAAM,CACdA,EAAY,EAAK,EACjBE,EAAU,CAAC,CACZ,EACD,UAAW,sBACX,KAAM,KACN,SAAU,CAAcpiB,EAAK,KAACujB,GAAa,CACzC,OAAQvB,EACR,SAAU,CAAcjiB,EAAI,IAAC,KAAM,CACjC,UAAW,uBACX,SAAU,eAClB,CAAO,EAAgBA,EAAI,IAACwV,GAAY,CAChC,KAAM,SACN,QAAS,qBACT,MAAOsM,GAAyBC,EAAsBa,EAAU,WAAa,MAAQb,IAAwB,OAAS,OAASA,EAAoB,cAAgB,MAAQD,IAA0B,OAASA,EAAwB9S,CAC9O,CAAO,EAAgBhP,EAAI,IAACK,EAAQ,CAC5B,KAAM,SACN,OAAQiiB,EACR,KAAMmB,GACN,QAAS,sBACT,QAASZ,CACjB,CAAO,EAAGH,GAA0B1iB,EAAI,IAACK,EAAQ,CACzC,KAAM,SACN,KAAMqjB,GACN,OAAQlB,EACR,QAAS,iBACT,QAASM,CACjB,CAAO,CAAC,CACR,CAAK,EAAgB9iB,EAAI,IAAC2jB,GAAW,CAC/B,MAAO,CACL,OAAAvB,CACD,EACD,SAAuBpiB,EAAI,IAAC4jB,GAAQ,CAClC,oBAAqBP,EACrB,SAAU,CACR,MAAOrU,EACP,SAAU,GACV,SAAU,KAEV,SAAU0T,EAAY,aAAe,YACrC,QAASA,EACT,QAAS,CACP,OAAQ,EACT,EACD,YAAaJ,EAAkB,KAAO,MACtC,mBAAoB,EACpB,oBAAqB,OAMrB,KAAM,CACJ,8BAA+B,OAChC,CACF,CACT,CAAO,CACP,CAAK,CAAC,CACN,CAAG,CACH,CCnJA,IAAIuB,GAAwB,UACxBC,GAAuBC,EAAU,WAAC,CAACjgB,EAAMkgB,IAAQ,CACnD,GAAI,CACF,QAAAC,EACA,aAAAC,EACA,eAAAC,EACA,gBAAAC,EACA,QAAA7Y,EACA,WAAAE,EACA,UAAW4Y,EACX,UAAA1Y,EACA,SAAAC,EACA,MAAAlI,EACA,uBAAA4gB,EACA,QAAArC,EACA,4BAAAsC,EACA,UAAAC,EACA,gBAAAC,EACA,qCAAAC,EACA,iCAAAC,EACA,mBAAAC,EACA,kBAAAC,CACD,EAAG/gB,EACAghB,EAAkB9X,SAAO,IAAI,EAC7B+X,EAAoB/X,SAAO,IAAI,EAC/B,CAACgY,EAAiBC,CAAkB,EAAIrY,EAAQ,SAAC,EAAK,EACtD1C,EAAU,CAAA,EACVgb,GAA6BxhB,CAAK,IACnC,CACC,QAAAwG,CACN,EAAQxG,EAAM,OAEZ,GAAI,CACF,GAAA/C,EACA,SAAAiO,CACD,EAAGlL,EACAyhB,GAAiB/X,EAAO,QAAC,IAAM,kBAAkB,OAAO/J,GAAQ,CAAA,EAAG,CAAA,CAAE,EACrE+hB,GAA+B5mB,GAAK,CAClCA,EAAE,MAAQ,SACZA,EAAE,gBAAe,EACjBA,EAAE,eAAc,EAChBqmB,MACUrmB,EAAE,MAAQ,aAAeA,EAAE,MAAQ,YAAcgmB,IAAc,GAAG,OAAO,OAAO,iBAAiB,GAAKA,IAAc,GAAG,OAAO,OAAO,iBAAiB,IAChKa,GAAwB,EAAE,CAEhC,EACMC,GAA2B9mB,GAAK,CAC9BA,EAAE,MAAQ,UACZA,EAAE,gBAAe,EACjBA,EAAE,eAAc,EAChBqmB,EAAkBrmB,EAAE,QAAQ,EAElC,EACM0F,GAAQR,EAAM,qBAAqB6gB,CAA2B,EAC9DhF,GAAiBrV,EAAQhG,IAA6C,CAAC,EACvEjG,GAAashB,IAAmB,KAAoC,OAASA,GAAe,KAC5FgG,GAAiBpnB,EAAW,kBAAkBF,EAAU,EACxDonB,GAA0BhoB,GAAS,CACrCunB,EAAmBvnB,GAA6C,EAAE,CACtE,EACEmoB,EAAmB,oBAACxB,EAAK,KAAO,CAC9B,OAAQ,CACN,IAAIyB,EACJR,EAAmB,EAAI,GACtBQ,EAAwBX,EAAgB,WAAa,MAAQW,IAA0B,QAAkBA,EAAsB,OAAM,CACvI,CACF,EAAC,EACF,IAAIC,GAAc,IAAM,CAEtB,GAAIV,GAAmB,SAAS,gBAAkBF,EAAgB,QAAS,CACzE,IAAIa,GACHA,EAAyBb,EAAgB,WAAa,MAAQa,IAA2B,QAAkBA,EAAuB,OAAM,CAC/I,SAAe,CAACX,GAAmB,SAAS,gBAAkBD,EAAkB,QAAS,CACnF,IAAIa,GACHA,EAAwBb,EAAkB,WAAa,MAAQa,IAA0B,QAAkBA,EAAsB,OAAM,CACzI,CACL,EACEvY,EAAAA,UAAUqY,GAAa,CAACV,CAAe,CAAC,EACxC,IAAIa,GAAmB,IAAM,CAC3B,OAAQN,GAAc,CACpB,KAAKpnB,EAAW,SAAS,QACzB,KAAKA,EAAW,SAAS,IACvB,OAAoB6B,EAAAA,IAAK,MAAO,CAC9B,UAAW,iBACX,SAAuBA,EAAI,IAAC,QAAS,CACnC,IAAK+kB,EACL,UAAW3kB,EAAW,eAAgB,CACpC,aAAc+jB,IAAmB,EAC/C,CAAa,EACD,UAAWiB,GACX,YAAa,QACb,SAAU5mB,GAAK,CACb,IAAInB,EAAQmB,EAAE,OAAO,MAAM,YAAW,EAElC,sBAAsB,KAAKA,EAAE,OAAO,KAAK,EAC3C6mB,GAAwB7mB,EAAE,OAAO,KAAK,EAC7BnB,IAAU,MAAQA,IAAU,YACrCgoB,GAAwB,GAAG,OAAO,OAAO,iBAAiB,CAAC,GAClDhoB,IAAU,KAAOA,IAAU,aACpCgoB,GAAwB,GAAG,OAAO,OAAO,iBAAiB,CAAC,CAE9D,EACD,MAAOb,EACP,aAAc,aAC1B,CAAW,CACX,CAAS,EACH,KAAKrmB,EAAW,SAAS,SACvB,OAAoB6B,EAAAA,IAAK,MAAO,CAC9B,UAAW,6BACX,SAAuBA,EAAI,IAAC8lB,GAAe,CACzC,IAAKf,EACL,UAAW3kB,EAAW,eAAgB,6BAA8B,CAClE,aAAc+jB,IAAmB,EAC/C,CAAa,EACD,aAAcK,EACd,SAAUa,GACV,SAAUC,GACV,aAAc,aAC1B,CAAW,CACX,CAAS,EACH,KAAKnnB,EAAW,SAAS,OACvB,OAAoB8B,EAAAA,KAAMwG,EAAAA,SAAW,CACnC,SAAU,CAAczG,EAAI,IAAC,MAAO,CAClC,UAAW,iBACX,SAAuBC,EAAK,KAACC,GAAQ,CACnC,UAAW,gBACX,SAAUd,GAAoB,CAC5BulB,EAAiCvlB,CAAgB,CAClD,EACD,MAAOqlB,EACP,aAAc,qBACd,SAAU,CAAczkB,EAAI,IAAC,SAAU,CACrC,MAAO+lB,GAAW,aAClB,SAAU,2BACX,EAAEA,GAAW,YAAY,EAAgB/lB,EAAAA,IAAK,SAAU,CACvD,MAAO+lB,GAAW,mBAClB,SAAU,6BACX,EAAEA,GAAW,kBAAkB,EAAgB/lB,EAAAA,IAAK,SAAU,CAC7D,MAAO+lB,GAAW,GAClB,SAAU,QACX,EAAEA,GAAW,EAAE,EAAgB/lB,EAAAA,IAAK,SAAU,CAC7C,MAAO+lB,GAAW,SAClB,SAAU,UAC1B,EAAiBA,GAAW,QAAQ,CAAC,CACrC,CAAa,CACb,CAAW,EAAgB/lB,EAAI,IAAC,MAAO,CAC3B,UAAW,iBACX,SAAuBA,EAAI,IAAC,QAAS,CACnC,IAAK+kB,EACL,UAAW3kB,EAAW,eAAgB,CACpC,aAAc+jB,IAAmB,EACjD,CAAe,EACD,UAAWmB,GACX,YAAa,QACb,SAAU9mB,GAAK6mB,GAAwB7mB,EAAE,OAAO,KAAK,EACrD,MAAOgmB,EACP,aAAc,aAC5B,CAAa,CACb,CAAW,CAAC,CACZ,CAAS,EACH,KAAKrmB,EAAW,SAAS,QACvB,OAAoB6B,EAAAA,IAAK,MAAO,CAC9B,UAAW,iBACX,SAAuBC,EAAK,KAACC,GAAQ,CACnC,UAAW,gBACX,SAAUd,GAAoB,CAC5BimB,GAAwBjmB,CAAgB,CACzC,EACD,MAAOolB,EACP,aAAc,cACd,SAAU,CAAcxkB,EAAI,IAAC,SAAU,CACrC,aAAc,aACd,MAAO,EACrB,EAAe,MAAM,EAAgBA,EAAI,IAAC,SAAU,CACtC,MAAO,OACP,SAAU,MACxB,EAAe,MAAM,EAAgBA,EAAI,IAAC,SAAU,CACtC,MAAO,QACP,SAAU,OACX,EAAE,OAAO,CAAC,CACvB,CAAW,CACX,CAAS,EACH,QACE,OAAoBA,EAAAA,IAAK,MAAO,CAC9B,UAAW,iBACX,SAAuBA,EAAI,IAAC,QAAS,CACnC,IAAK+kB,EACL,UAAW,eACX,UAAWO,GACX,YAAa,QACb,SAAU9mB,GAAK6mB,GAAwB7mB,EAAE,OAAO,KAAK,EACrD,MAAOgmB,EACP,aAAc,aAC1B,CAAW,CACX,CAAS,CACJ,CACL,EACE,OAAoBxkB,EAAAA,IAAKmL,GAAmB,CAC1C,QAASI,EACT,UAAWnL,EAAW,UAAU,EAChC,WAAYqL,EACZ,UAAW,IAAM,CACf4Y,IACAqB,IACD,EACD,UAAW/Z,EACX,SAAUC,EACV,SAAuB3L,EAAK,KAACwG,WAAW,CACtC,SAAU,CAAcxG,EAAK,KAAC,MAAO,CACnC,UAAW,eACX,SAAU,CAAcA,EAAK,KAAC,MAAO,CACnC,UAAWG,EAAW,mBAAoB,CACxC,cAAe,CAAC4kB,CAC5B,CAAW,EACD,QAAS,IAAMC,EAAmB,EAAI,EACtC,QAAS,IAAMA,EAAmB,EAAI,EACtC,KAAM,QACN,SAAU,CAAcjlB,EAAI,IAAC,QAAS,CACpC,UAAW,gBACX,QAASmlB,GACT,SAAU,WACtB,CAAW,EAAgBnlB,EAAI,IAAC,MAAO,CAC3B,UAAW,iBACX,SAAuBA,EAAI,IAAC,QAAS,CACnC,IAAK8kB,EACL,cAAe,iBACf,KAAM,SACN,UAAWtmB,GAAK,CACVA,EAAE,MAAQ,UACZA,EAAE,gBAAe,EACjBA,EAAE,eAAc,EAChB4lB,IAEH,EACD,UAAWhkB,EAAW,eAAgB,CACpC,aAAc8jB,IAAiB,EAC/C,CAAe,EACD,YAAa,aACb,SAAU5kB,GAAS,CACjBglB,EAAuBhlB,CAAK,CAC7B,EACD,MAAO2kB,EACP,GAAIkB,EAClB,CAAa,CACb,CAAW,EAAgBllB,EAAK,KAAC,MAAO,CAC5B,UAAW,gBACX,SAAU,CAAC,KAAM,IAAKU,EAAG,KAAK,aAAa,OAAOkjB,GAAuBjV,CAAQ,CAAC,CAC9F,CAAW,EAAGsV,GAA6BlkB,EAAI,IAAC,MAAO,CAC3C,UAAW,cACX,SAAUkkB,CACtB,CAAW,CAAC,CACZ,CAAS,EAAgBlkB,EAAI,IAAC,MAAO,CAC3B,UAAW,iBACX,SAAuBA,EAAI,IAACK,EAAQ,CAClC,KAAM,QACN,QAAS4hB,EACT,SAAuBjiB,EAAI,IAACsG,EAAiB,CAC3C,KAAM0f,GACN,MAAO,CACL,YAAa,GACd,CACf,CAAa,CACb,CAAW,CACX,CAAS,CAAC,CACH,CAAA,EAAGtiB,EAAM,oBAAmC1D,EAAAA,IAAK,MAAO,CACvD,UAAW,eACX,SAAuBC,EAAK,KAAC,MAAO,CAClC,UAAWG,EAAW,mBAAoB,CACxC,cAAe4kB,CAC3B,CAAW,EACD,QAAS,IAAMC,EAAmB,EAAK,EACvC,QAAS,IAAMA,EAAmB,EAAK,EACvC,KAAM,QACN,SAAU,CAAcjlB,EAAI,IAAC,MAAO,CAClC,UAAW,gBACX,SAAU,aACtB,CAAW,EAAgBA,EAAI,IAAC,MAAO,CAC3B,UAAW,iBACX,SAAuBA,EAAI,IAACE,GAAQ,CAClC,UAAW,gBACX,SAAUd,GAAoB,CAC5B,IAAI6D,EAAa7D,EACjBslB,EAAqCzhB,CAAU,CAChD,EACD,MAAOshB,EACP,aAAc,qBACd,GAAI,qBACJ,SAAUra,EAAQ,IAAIvL,GAAuBqB,EAAAA,IAAK,SAAU,CAC1D,MAAOrB,EAAO,KACd,SAAUA,EAAO,IACjC,EAAiBA,EAAO,IAAI,CAAC,CAC7B,CAAa,CACF,CAAA,EAAGknB,GAAgB,EAAiB5lB,EAAK,KAAC,MAAO,CAChD,SAAU,CAAcD,EAAI,IAACK,EAAQ,CACnC,QAAS,iBACT,KAAM4lB,GACN,KAAM,QACN,SAAUzB,IAAc,GACxB,QAAS,IAAM,CACbK,EAAkB,EAAI,CACvB,CACf,CAAa,EAAgB7kB,EAAI,IAACK,EAAQ,CAC5B,QAAS,aACT,KAAM6lB,GACN,KAAM,QACN,SAAU1B,IAAc,GACxB,QAAS,IAAM,CACbK,EAAkB,EAAK,CACxB,CACf,CAAa,CAAC,CACd,CAAW,EAAGV,GAA+BnkB,EAAI,IAAC,MAAO,CAC7C,UAAW,cACX,SAAUmkB,CACtB,CAAW,CAAC,CACZ,CAAS,CACT,CAAO,CAAC,CACR,CAAK,CACL,CAAG,CACH,CAAC,EACDL,GAAQ,YAAc,UC1Uf,SAASqC,GAAuBriB,EAAM,CAC3C,GAAI,CACF,OAAAke,EACA,QAAAC,EACA,aAAA9U,CACD,EAAGrJ,EACAsiB,EAAoBC,GAAiB,MAAM,eAAc,EAC7D,OAAoBpmB,EAAAA,KAAMsjB,GAAO,CAC/B,OAAQvB,EACR,OAAQC,EACR,SAAU,GACV,SAAU,CAAcjiB,EAAI,IAACwjB,GAAa,CACxC,YAAa,GACb,SAAU,qBAChB,CAAK,EAAgBvjB,EAAK,KAAC0jB,GAAW,CAChC,SAAU,CAAc3jB,EAAI,IAAC,IAAK,CAChC,SAAUmN,CAClB,CAAO,EAAgBlN,EAAK,KAAC,IAAK,CAC1B,SAAU,CAAC,qBAAsBmmB,EAAmB,YAAY,CACxE,CAAO,CAAC,CACR,CAAK,EAAgBpmB,EAAI,IAACsmB,GAAa,CACjC,SAAuBtmB,EAAI,IAACK,EAAQ,CAClC,KAAM,UACN,QAAS4hB,EACT,SAAU,SAClB,CAAO,CACP,CAAK,CAAC,CACN,CAAG,CACH,CC/BA,SAASvU,GAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQ3Q,EAAKG,EAAK,CAAE,GAAI,CAAE,IAAIyQ,EAAOL,EAAIvQ,CAAG,EAAEG,CAAG,EAAOF,EAAQ2Q,EAAK,YAAgBlL,EAAO,CAAE+K,EAAO/K,CAAK,EAAG,MAAS,CAAKkL,EAAK,KAAQJ,EAAQvQ,CAAK,EAAY,QAAQ,QAAQA,CAAK,EAAE,KAAKyQ,EAAOC,CAAM,CAAM,CACzQ,SAASE,GAAkBC,EAAI,CAAE,OAAO,UAAY,CAAE,IAAIC,EAAO,KAAMC,EAAO,UAAW,OAAO,IAAI,QAAQ,SAAUR,EAASC,EAAQ,CAAE,IAAIF,EAAMO,EAAG,MAAMC,EAAMC,CAAI,EAAG,SAASN,EAAMzQ,EAAO,CAAEqQ,GAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQ,OAAQ1Q,CAAK,CAAI,CAAC,SAAS0Q,EAAOM,EAAK,CAAEX,GAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQ,QAASM,CAAG,EAAKP,EAAM,MAAS,EAAI,CAAI,CAAG,CACrY,SAASsJ,GAAQC,EAAQC,EAAgB,CAAE,IAAIC,EAAO,OAAO,KAAKF,CAAM,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAIG,EAAU,OAAO,sBAAsBH,CAAM,EAAGC,IAAmBE,EAAUA,EAAQ,OAAO,SAAUC,EAAK,CAAE,OAAO,OAAO,yBAAyBJ,EAAQI,CAAG,EAAE,UAAW,CAAE,GAAIF,EAAK,KAAK,MAAMA,EAAMC,CAAO,CAAE,CAAG,OAAOD,CAAO,CACrV,SAASG,GAAcC,EAAQ,CAAE,QAAS/X,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAAE,IAAIgY,EAAiB,UAAUhY,CAAC,GAAnB,KAAuB,UAAUA,CAAC,EAAI,CAAE,EAAEA,EAAI,EAAIwX,GAAQ,OAAOQ,CAAM,EAAG,EAAE,EAAE,QAAQ,SAAUxa,EAAK,CAAEF,EAAgBya,EAAQva,EAAKwa,EAAOxa,CAAG,CAAC,CAAI,CAAA,EAAI,OAAO,0BAA4B,OAAO,iBAAiBua,EAAQ,OAAO,0BAA0BC,CAAM,CAAC,EAAIR,GAAQ,OAAOQ,CAAM,CAAC,EAAE,QAAQ,SAAUxa,EAAK,CAAE,OAAO,eAAeua,EAAQva,EAAK,OAAO,yBAAyBwa,EAAQxa,CAAG,CAAC,CAAE,CAAE,CAAI,CAAC,OAAOua,CAAS,CAC1f,SAASza,EAAgBC,EAAKC,EAAKC,EAAO,CAAE,OAAAD,EAAME,GAAeF,CAAG,EAAOA,KAAOD,EAAO,OAAO,eAAeA,EAAKC,EAAK,CAAE,MAAOC,EAAO,WAAY,GAAM,aAAc,GAAM,SAAU,EAAM,CAAA,EAAYF,EAAIC,CAAG,EAAIC,EAAgBF,CAAM,CAC5O,SAASG,GAAeC,EAAK,CAAE,IAAIH,EAAMI,GAAaD,EAAK,QAAQ,EAAG,OAAO,OAAOH,GAAQ,SAAWA,EAAM,OAAOA,CAAG,CAAI,CAC3H,SAASI,GAAaC,EAAOC,EAAM,CAAE,GAAI,OAAOD,GAAU,UAAYA,IAAU,KAAM,OAAOA,EAAO,IAAIE,EAAOF,EAAM,OAAO,WAAW,EAAG,GAAIE,IAAS,OAAW,CAAE,IAAIC,EAAMD,EAAK,KAAKF,EAAOC,GAAQ,SAAS,EAAG,GAAI,OAAOE,GAAQ,SAAU,OAAOA,EAAK,MAAM,IAAI,UAAU,8CAA8C,CAAI,CAAC,OAAQF,IAAS,SAAW,OAAS,QAAQD,CAAK,CAAI,CAqDzX,IAAII,EAAMC,GAAI,OAAO,UAAU,EAC3ByoB,GAAyB,IACzBC,GAA2B,IAC3BC,GAAsB,IACtBC,GAAoB,IACpBC,GAAkC,IAClCC,GAA+B,OAAO,OAAO,CAC/C,aAAcnT,GACd,UAAW,EACb,CAAC,EACGoT,GAA2B,oCAC/B,SAASC,GAAchjB,EAAM,CAC3B,GAAI,CACF,gBAAAijB,EACA,oBAAAC,EACA,cAAA5T,EACA,aAAA6T,EACA,QAAA1U,EACA,aAAAe,EACA,aAAA4C,EACA,sBAAA1C,EACA,MAAAL,CACD,EAAGrP,EACJ,OAAOijB,EAAgB,OAAS,GAAKC,EAAoB,aAAa,SAAW,GAAK5T,EAAc,SAAW,GAAK6T,EAAa,OAAS,GAAK,CAAC1U,GAAWe,GAAgB,MAAQ4C,GAAgB,MAAQ1C,EAAsB,SAAW,GAAKL,EAAM,SAAW,CACpQ,CACA,MAAM+T,WAAiBxY,EAAAA,SAAU,CAG/B,YAAYjQ,EAAO,CACjB,IAAI0oB,EAAoBC,EAAuBC,EAAuBC,EACtE,MAAM7oB,CAAK,EACXvB,EAAgB,KAAM,OAAQ,MAAM,EACpCA,EAAgB,KAAM,6BAA8B,MAAM,EAC1DA,EAAgB,KAAM,mBAAoB,MAAM,EAChDA,EAAgB,KAAM,UAAW,MAAM,EACvCA,EAAgB,KAAM,UAAW,MAAM,EACvCA,EAAgB,KAAM,sBAAuB,MAAM,EACnDA,EAAgB,KAAM,2BAA4B,MAAM,EACxDA,EAAgB,KAAM,uBAAwB,MAAM,EACpDA,EAAgB,KAAM,uBAAwB,MAAM,EACpDA,EAAgB,KAAM,2BAA4B,MAAM,EACxDA,EAAgB,KAAM,mBAAoB,MAAM,EAChDA,EAAgB,KAAM,kBAAmB,MAAM,EAC/CA,EAAgB,KAAM,uBAAwB,MAAM,EACpDA,EAAgB,KAAM,wBAAyB,MAAM,EACrDA,EAAgB,KAAM,yBAA0B,MAAM,EACtDA,EAAgB,KAAM,iBAAkB,MAAM,EAC9CA,EAAgB,KAAM,eAAgB,MAAM,EAC5CA,EAAgB,KAAM,aAAc,MAAM,EAC1CA,EAAgB,KAAM,iBAAkB,MAAM,EAC9CA,EAAgB,KAAM,cAAe,MAAM,EAC3CA,EAAgB,KAAM,iBAAkB,MAAM,EAC9CA,EAAgB,KAAM,aAAc,MAAM,EAC1CA,EAAgB,KAAM,YAAa,MAAM,EACzCA,EAAgB,KAAM,wBAAyB,MAAM,EACrDA,EAAgB,KAAM,wBAAyB,MAAM,EACrDA,EAAgB,KAAM,sBAAuB,MAAM,EACnDA,EAAgB,KAAM,gBAAiB,MAAM,EAC7CA,EAAgB,KAAM,eAAgB,MAAM,EAC5CA,EAAgB,KAAM,iBAAkB,MAAM,EAC9CA,EAAgB,KAAM,aAAc,MAAM,EAC1CA,EAAgB,KAAM,cAAe,MAAM,EAC3CA,EAAgB,KAAM,gBAAiB,MAAM,EAC7CA,EAAgB,KAAM,+BAAgCsG,EAAQ7E,GAAU,KAAK,yBAAyB,KAAK,KAAMA,CAAM,EAAG,CACxH,IAAK,GACN,CAAA,CAAC,EACFzB,EAAgB,KAAM,qCAAsCsG,EAAQ,CAACE,EAAO/E,EAAQ4oB,EAAuB7hB,EAAelG,IAA2BQ,EAAAA,IAAKoD,GAAuB,CAC/K,MAAOM,EACP,OAAQ/E,EACR,eAAgB,KAAK,2BACrB,aAAc,KAAK,+BACnB,OAAQ,KAAK,yBACb,QAAS4oB,EACT,cAAe7hB,EACf,UAAWlG,EACX,WAAY,KAAK,UACvB,CAAK,EAAG,CACF,IAAK,EACN,CAAA,CAAC,EACFtC,EAAgB,KAAM,uBAAwBsG,EAAQ,CAACgkB,EAAyBC,EAA0BC,EAA0BzT,EAAmBD,EAAmB2T,EAA2BC,EAAmBC,GAAuBC,EAAuBC,GAAqBC,GAAkBC,GAAeC,GAAgBC,GAAiBC,GAAaC,KAAwB,CAChY,IAAIC,GAAc,CAAA,EAClB,OAAId,GACFc,GAAY,KAAK,CACf,KAAMC,EAAW,cACjB,MAAO,gBACP,KAAMC,EAChB,CAAS,EAEHF,GAAY,KAAK,CACf,KAAMC,EAAW,4BACjB,MAAO,mBACP,KAAME,EACd,CAAO,EACGf,GACFY,GAAY,KAAK,CACf,KAAMC,EAAW,uBACjB,MAAO,yBACP,KAAMG,EAChB,CAAS,EAECjB,GACFa,GAAY,KAAK,CACf,KAAMC,EAAW,sBACjB,MAAO,iBACP,KAAMI,EAChB,CAAS,EAEC1U,GACFqU,GAAY,KAAK,CACf,KAAMC,EAAW,YACjB,MAAO,cACP,KAAMK,EAChB,CAAS,EAEC5U,GACFsU,GAAY,KAAK,CACf,KAAMC,EAAW,aACjB,MAAO,oBACP,KAAMM,EAChB,CAAS,EAEClB,GACFW,GAAY,KAAK,CACf,KAAMC,EAAW,gBACjB,MAAO,yBACP,KAAMO,EAChB,CAAS,EAEClB,GAAqBM,IACvBI,GAAY,KAAK,CACf,KAAMC,EAAW,eACjB,MAAO,eACP,KAAMQ,EAChB,CAAS,EAECV,IACFC,GAAY,KAAK,CACf,KAAMC,EAAW,kBACjB,MAAO,oBACP,KAAMS,EAChB,CAAS,EAEHV,GAAY,KAAK,CACf,KAAMC,EAAW,cACjB,MAAO,gBACP,SAAUV,GAAsB,SAAS,eAAgB,EACzD,KAAMlW,GACN,KAAMqW,GACN,SAAUH,GAAsB,MACxC,CAAO,EACGM,IACFG,GAAY,KAAK,CACf,KAAMC,EAAW,WACjB,MAAO,aACP,SAAUT,EAAsB,SAAS,eAAgB,EACzD,KAAMmB,GACN,KAAMhB,GACN,SAAUH,EAAsB,MAC1C,CAAS,EAEHQ,GAAY,KAAK,CACf,KAAMC,EAAW,KACjB,MAAO,QACP,SAAUR,GAAoB,SAAS,eAAgB,EACvD,KAAMmB,GACN,KAAMd,GACN,SAAUL,GAAoB,MACtC,CAAO,EACM,OAAO,OAAOO,EAAW,CACtC,EAAO,CACD,IAAK,CACN,CAAA,CAAC,EACFprB,EAAgB,KAAM,yBAA0BsG,EAAQ,CAAC2lB,EAAkBzZ,IAAqBI,EAAc,iBAAiB,IAAI,IAAI,CAAC,GAAGqZ,EAAiB,oBAAqB,GAAGzZ,CAAgB,CAAC,CAAC,EAAG,CACvM,IAAK,CACN,CAAA,CAAC,EACFxS,EAAgB,KAAM,oBAAqBsG,EAAQ,CAAC0G,EAASkf,IAAiB,CAC5E,IAAIC,EAAiB,CAAA,EACrB,OAAAD,EAAa,QAAQ7jB,GAAS,CAC5B,GAAI,CACF,UAAA3G,EACA,SAAA0qB,EACA,OAAAC,CACD,EAAGhkB,EACJ8jB,EAAezqB,CAAS,EAAI4qB,GAAiB,wBAAwBtf,EAAStL,EAAW0qB,EAAUC,CAAM,CACjH,CAAO,EACMF,CACR,CAAA,CAAC,EACFnsB,EAAgB,KAAM,kBAAmBsG,EAAQ,CAAC0G,EAASkf,IAAiB,CAC1E,IAAIK,EAAe,CAAA,EACnB,OAAAL,EAAa,OAAOM,GAAK,CAACF,GAAiB,kBAAkBE,EAAE,SAAS,CAAC,EAAE,QAAQnf,GAAS,CAC1F,GAAI,CACF,UAAA3L,EACA,SAAA0qB,EACA,OAAAC,CACD,EAAGhf,EACJif,GAAiB,wBAAwBtf,EAAStL,EAAW0qB,EAAUC,CAAM,EAAE,QAAQ9e,IAAQ,CAC7F,IAAIkf,EACAC,GAAgB,CAAC,IAAKD,EAAqBF,EAAahf,EAAI,KAAO,MAAQkf,IAAuB,OAASA,EAAqB,CAAA,EAAK/qB,CAAS,EAClJ6qB,EAAahf,EAAI,EAAI,OAAO,OAAOmf,EAAa,CAC1D,CAAS,CACT,CAAO,EACMH,CACR,CAAA,CAAC,EACFvsB,EAAgB,KAAM,oBAAqBsG,EAAQ4lB,GAAgBA,EAAa,IAAIM,GAAKA,EAAE,SAAS,EAAE,OAAOG,GAAK,CAACL,GAAiB,kBAAkBK,CAAC,CAAC,CAAC,CAAC,EAC1J3sB,EAAgB,KAAM,yBAA0BsG,EAAQ,CAAC7C,EAAIuJ,EAASC,IAAUF,GAAiBtJ,EAAIuJ,EAASC,CAAK,CAAC,CAAC,EACrHjN,EAAgB,KAAM,gCAAiCsG,EAAQ,CAAC7C,EAAIuJ,EAAS4f,EAAYC,EAASC,IAAc,CAE9G,GADAnsB,EAAI,MAAM,gCAAiCisB,EAAYC,EAASC,CAAS,EACrED,IAAY,QAAaC,IAAc,OAAW,CACpD,IAAI7f,EAAQ,CAAC,GAAG2f,CAAU,EAC1B,OAAA3f,EAAM6f,CAAS,EAAID,EACZ,KAAK,uBAAuBppB,EAAIuJ,EAASC,CAAK,CACtD,CACD,OAAO,KAAK,uBAAuBxJ,EAAIuJ,EAAS4f,CAAU,CAC3D,CAAA,CAAC,EACF5sB,EAAgB,KAAM,uBAAwBsG,EAAQ,CAACsd,EAAiBna,EAAQqgB,IAAwBlX,EAAc,qBAAqBgR,EAAiBna,EAAQqgB,CAAmB,CAAC,CAAC,EACzL9pB,EAAgB,KAAM,uBAAwBsG,EAAQ,CAAC0G,EAASvD,EAAQqgB,IAAwB,CAC9F,IAAIiD,EAAuBC,EAC3B,KAAMD,EAAwBtjB,GAAW,OAAsCujB,EAAkBvjB,EAAO,WAAa,MAAQujB,IAAoB,OAA5E,OAA8FA,EAAgB,UAAY,MAAQD,IAA0B,OAASA,EAAwB,GAAK,EAErQ,OAAO,KAIT,IAAIb,EAAepC,EAAoB,aAAa,OAAOmD,GAAOA,EAAI,SAAS,OAAS,GAAKA,EAAI,MAAM,EACvG,GAAIf,EAAa,SAAW,EAE1B,OAAO,KAET,IAAIK,EAAe,KAAK,gBAAgBvf,EAASkf,CAAY,EACzDgB,GAAiB,KAAK,kBAAkBhB,CAAY,EACxD,MAAO,CACL,aAAAK,EACA,eAAAW,GACA,UAAWpD,EAAoB,UAC/B,iBAAkBqD,GAAqB,IAC/C,CACK,CAAA,CAAC,EACFntB,EAAgB,KAAM,yBAA0BsG,EAAQ,CAAC8mB,EAAmBtC,EAAkBuC,EAAmBC,EAAsBvD,EAAcF,EAAiB5T,EAAOZ,GAASe,EAAcmX,MAAiB,CACnN,kBAAAH,EACA,iBAAAtC,EACA,kBAAAuC,EACA,qBAAAC,EACA,aAAAvD,EACA,gBAAAF,EACA,MAAA5T,EACA,QAAAZ,GACA,aAAAe,EACA,YAAAmX,EACN,GAAQ,CACF,IAAK,CACN,CAAA,CAAC,EACFvtB,EAAgB,KAAM,kBAAmBsG,EAAQ,CAACknB,EAAezD,EAAcF,EAAiB7Q,IAAiB,CAAC,GAAIwU,GAAqE,CAAE,EAAG,GAAG5a,EAAc,wBAAwBmX,CAAY,EAAG,GAAGnX,EAAc,wBAAwBiX,CAAe,EAAG,GAAI7Q,IAAiB,OAAY,CAACA,CAAY,EAAI,CAAE,CAAC,EAAG,CACzW,IAAK,CACN,CAAA,CAAC,EACFhZ,EAAgB,KAAM,iBAAkBsG,EAAQ,CAACmnB,EAAcC,EAAOC,EAAYC,EAAkBC,IAAY,CAC9G,IAAIC,EAGAC,EAAYN,GAAkEO,KAG9EC,GAAiBL,EAAmB,GAAKE,EAAwBJ,GAAU,KAA2B,OAASA,EAAM,kBAAoB,MAAQI,IAA0B,OAASA,EAAwBC,EAAU,eAAiB,EACvO,CACF,iBAAA9B,CACR,EAAU,KAAK,MACLA,GAAoB,OACtBA,EAAiB,4BAA2B,EAC5CA,EAAiB,0BAAyB,GAE5C,IAAIiC,GAAe,CAAA,EACnB,OAAIL,IAAY,UACdK,GAAeH,EAAU,QAAQ,QACxBF,IAAY,aACrBK,GAAeH,EAAU,QAAQ,UAE5BvT,GAAcA,GAAcA,GAAcA,GAAc,CAAA,EAAIuT,CAAS,EAAGG,EAAY,EAAGR,CAAK,EAAG,CAAA,EAAI,CACxG,cAAe,CAACC,EAChB,eAAAM,EACR,CAAO,CACP,EAAO,CACD,IAAK,CACN,CAAA,CAAC,EACFjuB,EAAgB,KAAM,uBAAwBsG,EAAQ6nB,GAAe,CAAC,GAAGA,EAAa,GAAG,KAAK,WAAW,EAAE,KAAK,CAAC3B,EAAG4B,IAAM5B,EAAE,MAAQ4B,EAAE,KAAK,CAAC,CAAC,EAC7IpuB,EAAgB,KAAM,yBAA0BsG,EAAQ+nB,GAAiB,CAAC,GAAGA,EAAe,GAAG,KAAK,aAAa,CAAC,CAAC,EACnHruB,EAAgB,KAAM,oBAAqBsG,EAAQgoB,GAAgBA,GAAkE,IAAIC,GAAoB,CAC3J,IAAK,CACN,CAAA,CAAC,EACFvuB,EAAgB,KAAM,wBAAyBsG,EAAQ,CAAC6P,EAAoBnJ,EAASmF,EAAcqc,EAAyBC,EAA0BC,IAAkB,CAEtK,QADIC,EAAkB,CAAA,EACbjsB,GAAI,EAAGA,GAAI8rB,EAAyB9rB,IAAK,EAChDisB,EAAgB,KAAK3hB,EAAQqF,GAAU,cAAc3P,GAAGyP,CAAY,CAAC,EAAE,IAAI,EAE7E,QAASyc,EAAK,EAAGA,EAAKH,EAA0BG,GAAM,EACpDD,EAAgB,KAAK3hB,EAAQqF,GAAU,cAAcrF,EAAQ,OAAS,EAAI4hB,EAAIzc,CAAY,CAAC,EAAE,IAAI,EAEnG,GAAIuc,EACF,QAASG,GAAMH,EAAc,CAAC,EAAGG,IAAOH,EAAc,CAAC,EAAGG,IAAO,EAC/DF,EAAgB,KAAK3hB,EAAQqF,GAAU,cAAcwc,GAAK1c,CAAY,CAAC,EAAE,IAAI,EAGjF,IAAI2c,GAAY,IAAI,IAAI,CAAC,GAAG3Y,EAAoB,GAAGwY,CAAe,CAAC,EACnE,OAAO,OAAO,OAAO,CAAC,GAAGG,EAAS,CAAC,CACpC,CAAA,CAAC,EACF9uB,EAAgB,KAAM,qBAAsBwT,GAAS,CAACoF,EAAamW,EAAuB/hB,EAASgiB,IAAwB,CACzH,GAAI,CACF,MAAAxoB,CACR,EAAU,KAAK,MACLwS,EAAeL,GAAkB,mBAAmBnS,EAAM,GAAIoS,EAAamW,EAAuB/hB,EAASgiB,CAAmB,EAClI,KAAK,SAAS,CACZ,aAAAhW,CACR,CAAO,CACP,EAAOuQ,EAAmB,CAAC,EACvBvpB,EAAgB,KAAM,sBAAuBivB,GAAS,IAAM,CAC1D,GAAI,CACF,MAAAzoB,CACR,EAAU,KAAK,MACL,CACF,oBAAA0oB,CACR,EAAU,KAAK,MACL1oB,EAAM,mBAAqB,CAAC0oB,GAG9B,KAAK,aAAa,0BAA2B,CAC3C,mBAAoB,GACpB,kBAAmB,EAC7B,CAAS,CAEJ,EAAE7F,GAAwB,CACzB,QAAS,GACT,SAAU,EACX,CAAA,CAAC,EACFrpB,EAAgB,KAAM,sCAAuCwT,GAAS2b,GAA4B,CAChG,KAAK,SAAS,CACZ,yBAAAA,CACR,CAAO,CACP,EAAO1F,EAA+B,CAAC,EACnCzpB,EAAgB,KAAM,+BAAgCivB,GAAS,CAACG,EAAuBC,IAA+B,CACpH,GAAI,CACF,oBAAAC,CACR,EAAU,KAAK,MACLA,IAAwBC,GAAiB,gBAAgB,aAC3D,KAAK,SAAS,CACZ,sBAAAH,EACA,2BAAAC,CACV,CAAS,CAET,EAAO/F,EAAwB,CAAC,EAC5BtpB,EAAgB,KAAM,2BAA4BsG,EAAQkpB,GAA8B,CACtF,GAAIA,GAA8B,KAChC,OAAO,KAET,IAAIC,EAAejV,GAAcA,GAAc,CAC7C,SAAU,UAClB,EAASgV,CAA0B,EAAG,GAAI,CAClC,cAAe,MACvB,CAAO,EACGE,EAAgB,CAClB,UAAW,OACX,UAAW,CACT,KAAM,CACJ,SAAU,CAAC,OAAQ,OAAO,CAC3B,CACF,CACT,EACM,OAAoB5sB,EAAAA,IAAK,MAAO,CAC9B,MAAO2sB,EACP,SAAuB3sB,EAAI,IAACiX,GAAS,CACnC,QAAS2V,EACT,IAAK,KAAK,iBACV,SAAU,oBACpB,EAAW,KAAK,KAAK,CACrB,CAAO,CACF,CAAA,CAAC,EACF1vB,EAAgB,KAAM,uBAAwBsG,EAAQqpB,GAA0B,CAC9E,GAAIA,GAA0B,KAC5B,OAAO,KAET,GAAI,CACF,0BAAAC,CACR,EAAU,KAAK,MACL,CACF,MAAAppB,CACR,EAAU,KAAK,MACLqpB,EAAuBzX,GAAsB5R,CAAK,GAAKA,EAAM,qBAC7DipB,EAAejV,GAAcA,GAAc,CAC7C,SAAU,UAClB,EAASmV,CAAsB,EAAG,GAAI,CAC9B,cAAe,MACvB,CAAO,EACGD,EAAgB,CAClB,UAAW,cACnB,EACM,OAAoB5sB,EAAAA,IAAK,MAAO,CAC9B,MAAO2sB,EACP,SAAuB3sB,EAAI,IAACiX,GAAS,CACnC,QAAS2V,EACT,IAAK,KAAK,iBACV,SAAuB3sB,EAAK,KAAC,MAAO,CAClC,MAAO,CACL,UAAW,MACZ,EACD,SAAU,CAAC,YAAa6sB,EAA2B,OAAQC,GAAqC9sB,EAAK,KAACwG,WAAW,CAC/G,SAAU,CAAczG,EAAAA,IAAK,KAAM,EAAE,EAAGiF,GAAmB,gBAAkB,IAAM,QAAS,sCAAsC,CAChJ,CAAa,CAAC,CACd,CAAW,CACX,EAAW,KAAK,KAAK,CACrB,CAAO,CACF,CAAA,CAAC,EACF/H,EAAgB,KAAM,kBAAmBsG,EAAQwpB,GAAqB,CACpE,GAAIA,GAAqB,KACvB,OAAO,KAET,GAAI,CACF,kBAAAC,CACR,EAAU,KAAK,MACLN,EAAejV,GAAcA,GAAc,CAC7C,SAAU,UAClB,EAASsV,CAAiB,EAAG,GAAI,CACzB,cAAe,MACvB,CAAO,EACGJ,EAAgB,CAClB,UAAW,QACnB,EACM,OAAoB5sB,EAAAA,IAAK,MAAO,CAC9B,MAAO2sB,EACP,SAAuB3sB,EAAI,IAACiX,GAAS,CACnC,QAAS2V,EACT,IAAK,KAAK,iBACV,SAAuB5sB,EAAI,IAAC,MAAO,CACjC,UAAW,qBACX,SAAUitB,CACtB,CAAW,CACX,CAAS,CACT,CAAO,CACF,CAAA,CAAC,EACF/vB,EAAgB,KAAM,yBAA0BO,GAAS,CACvD,KAAK,SAAS,CACZ,UAAWA,EACX,yBAA0B,EAClC,CAAO,EACD,KAAK,iBAAiBA,CAAK,CACjC,CAAK,EACDP,EAAgB,KAAM,mBAAoBwT,GAASjT,GAAS,CAC1D,KAAK,QAAQA,CAAK,CACxB,EAAOipB,EAAiB,CAAC,EACrB,KAAK,2BAA6B,KAAK,2BAA2B,KAAK,IAAI,EAC3E,KAAK,+BAAiC,KAAK,+BAA+B,KAAK,IAAI,EACnF,KAAK,yBAA2B,KAAK,yBAAyB,KAAK,IAAI,EACvE,KAAK,yBAA2B,KAAK,yBAAyB,KAAK,IAAI,EACvE,KAAK,oBAAsB,KAAK,oBAAoB,KAAK,IAAI,EAC7D,KAAK,oBAAsB,KAAK,oBAAoB,KAAK,IAAI,EAC7D,KAAK,yBAA2B,KAAK,yBAAyB,KAAK,IAAI,EACvE,KAAK,wBAA0B,KAAK,wBAAwB,KAAK,IAAI,EACrE,KAAK,yBAA2B,KAAK,yBAAyB,KAAK,IAAI,EACvE,KAAK,sBAAwB,KAAK,sBAAsB,KAAK,IAAI,EACjE,KAAK,oBAAsB,KAAK,oBAAoB,KAAK,IAAI,EAC7D,KAAK,qBAAuB,KAAK,qBAAqB,KAAK,IAAI,EAC/D,KAAK,mBAAqB,KAAK,mBAAmB,KAAK,IAAI,EAC3D,KAAK,kBAAoB,KAAK,kBAAkB,KAAK,IAAI,EACzD,KAAK,kBAAoB,KAAK,kBAAkB,KAAK,IAAI,EACzD,KAAK,gBAAkB,KAAK,gBAAgB,KAAK,IAAI,EACrD,KAAK,sBAAwB,KAAK,sBAAsB,KAAK,IAAI,EACjE,KAAK,oBAAsB,KAAK,oBAAoB,KAAK,IAAI,EAC7D,KAAK,mBAAqB,KAAK,mBAAmB,KAAK,IAAI,EAC3D,KAAK,aAAe,KAAK,aAAa,KAAK,IAAI,EAC/C,KAAK,WAAa,KAAK,WAAW,KAAK,IAAI,EAC3C,KAAK,gBAAkB,KAAK,gBAAgB,KAAK,IAAI,EACrD,KAAK,iBAAmB,KAAK,iBAAiB,KAAK,IAAI,EACvD,KAAK,eAAiB,KAAK,eAAe,KAAK,IAAI,EACnD,KAAK,oBAAsB,KAAK,oBAAoB,KAAK,IAAI,EAC7D,KAAK,uBAAyB,KAAK,uBAAuB,KAAK,IAAI,EACnE,KAAK,0BAA4B,KAAK,0BAA0B,KAAK,IAAI,EACzE,KAAK,0BAA4B,KAAK,0BAA0B,KAAK,IAAI,EACzE,KAAK,aAAe,KAAK,aAAa,KAAK,IAAI,EAC/C,KAAK,iBAAmB,KAAK,iBAAiB,KAAK,IAAI,EACvD,KAAK,kBAAoB,KAAK,kBAAkB,KAAK,IAAI,EACzD,KAAK,sBAAwB,KAAK,sBAAsB,KAAK,IAAI,EACjE,KAAK,8BAAgC,KAAK,8BAA8B,KAAK,IAAI,EACjF,KAAK,4BAA8B,KAAK,4BAA4B,KAAK,IAAI,EAC7E,KAAK,+BAAiC,KAAK,+BAA+B,KAAK,IAAI,EACnF,KAAK,kCAAoC,KAAK,kCAAkC,KAAK,IAAI,EACzF,KAAK,oCAAsC,KAAK,oCAAoC,KAAK,IAAI,EAC7F,KAAK,0BAA4B,KAAK,0BAA0B,KAAK,IAAI,EACzE,KAAK,2BAA6B,KAAK,2BAA2B,KAAK,IAAI,EAC3E,KAAK,4BAA8B,KAAK,4BAA4B,KAAK,IAAI,EAC7E,KAAK,yBAA2B,KAAK,yBAAyB,KAAK,IAAI,EACvE,KAAK,sBAAwB,KAAK,sBAAsB,KAAK,IAAI,EACjE,KAAK,2BAA6B,KAAK,2BAA2B,KAAK,IAAI,EAC3E,KAAK,4BAA8B,KAAK,4BAA4B,KAAK,IAAI,EAC7E,KAAK,qCAAuC,KAAK,qCAAqC,KAAK,IAAI,EAC/F,KAAK,eAAiB,KAAK,eAAe,KAAK,IAAI,EACnD,KAAK,oBAAsB,KAAK,oBAAoB,KAAK,IAAI,EAC7D,KAAK,yBAA2B,KAAK,yBAAyB,KAAK,IAAI,EACvE,KAAK,0BAA4B,KAAK,0BAA0B,KAAK,IAAI,EACzE,KAAK,uBAAyB,KAAK,uBAAuB,KAAK,IAAI,EACnE,KAAK,wBAA0B,KAAK,wBAAwB,KAAK,IAAI,EACrE,KAAK,sBAAwB,KAAK,sBAAsB,KAAK,IAAI,EACjE,KAAK,8BAAgC,KAAK,8BAA8B,KAAK,IAAI,EACjF,KAAK,4BAA8B,KAAK,4BAA4B,KAAK,IAAI,EAC7E,KAAK,wBAA0B,KAAK,wBAAwB,KAAK,IAAI,EACrE,KAAK,mBAAqB,KAAK,mBAAmB,KAAK,IAAI,EAC3D,KAAK,oBAAsB,KAAK,oBAAoB,KAAK,IAAI,EAC7D,KAAK,kCAAoC,KAAK,kCAAkC,KAAK,IAAI,EACzF,KAAK,sBAAwB,KAAK,sBAAsB,KAAK,IAAI,EACjE,KAAK,sCAAwC,KAAK,sCAAsC,KAAK,IAAI,EACjG,KAAK,yCAA2C,KAAK,yCAAyC,KAAK,IAAI,EACvG,KAAK,qCAAuC,KAAK,qCAAqC,KAAK,IAAI,EAC/F,KAAK,uBAAyB,KAAK,uBAAuB,KAAK,IAAI,EACnE,KAAK,yBAA2B,KAAK,yBAAyB,KAAK,IAAI,EACvE,KAAK,sBAAwB,KAAK,sBAAsB,KAAK,IAAI,EACjE,KAAK,gBAAkB,KAAK,gBAAgB,KAAK,IAAI,EACrD,KAAK,KAAO,KACZ,KAAK,iBAAmB,KACxB,KAAK,QAAU,IAAI3O,GACnB,KAAK,oBAAsBtE,GAC3B,KAAK,qBAAuB,GAC5B,KAAK,qBAAuB,GAC5B,KAAK,yBAA2B,GAChC,KAAK,iBAAmB,GACxB,KAAK,gBAAkB,GACvB,KAAK,qBAAuB,GAG5B,KAAK,WAAa,KAClB,KAAK,eAA8BhQ,GAAM,YACzC,KAAK,YAAc,GACnB,KAAK,eAA8BA,GAAM,YACzC,KAAK,WAA0BA,GAAM,YACrC,KAAK,UAAY,GACjB,KAAK,sBAAwB,CAC3B,OAAQ,IAAM,KAAK,gBAAiB,EACpC,SAAUypB,GAAU,MAAM,mBAChC,EACI,KAAK,sBAAwB,CAC3B,OAAQ,IAAM,KAAK,gBAAiB,EACpC,SAAUA,GAAU,MAAM,aAChC,EACI,KAAK,oBAAsB,CACzB,OAAQ,IAAM,KAAK,cAAe,EAClC,SAAUA,GAAU,MAAM,QAChC,EACI,KAAK,cAAgB,CACnB,OAAQ,IAAM,CACZ,GAAI,CACF,MAAAxpB,CACV,EAAY,KAAK,MACLypB,GAAoBzpB,CAAK,GAAKA,EAAM,YAAcA,EAAM,eAAe,KAAO,GAChF,KAAK,eAAgB,EAAC,MAAM7F,EAAI,KAAK,CAExC,EACD,SAAUqvB,GAAU,YAAY,OACtC,EACI,KAAK,aAAe,CAClB,OAAQ,IAAM,CACZ,GAAI,CACF,MAAAxpB,CACV,EAAY,KAAK,MACLypB,GAAoBzpB,CAAK,GAAKA,EAAM,YAAcA,EAAM,eAAe,KAAO,GAAKA,EAAM,kBAAkB,OAAS,GACtH,KAAK,cAAe,EAAC,MAAM7F,EAAI,KAAK,CAEvC,EACD,SAAUqvB,GAAU,YAAY,MACtC,EACI,KAAK,eAAiB,CAAC,KAAK,sBAAuB,KAAK,sBAAuB,KAAK,oBAAqB,KAAK,cAAe,KAAK,YAAY,EAC9I,GAAI,CACF,oBAAqBE,EACrB,mBAAAC,EACA,sBAAAC,EACA,iBAAkBC,EAClB,qBAAAC,EACA,WAAAvU,EACA,gBAAAnF,EACA,MAAO2Z,EACP,aAAcC,EACd,UAAWC,EACX,aAAcC,EACd,iBAAkBC,EAClB,eAAAC,EACA,cAAeC,EACf,YAAaC,EACb,sBAAuBC,EACvB,oBAAqBC,EACrB,gBAAiBC,EACjB,aAAcC,EACd,sBAAA5a,EACA,eAAAhH,EACA,QAAA6hB,EACA,cAAA1a,GACA,mBAAAE,EACD,EAAGpV,EACA,CACF,GAAI6vB,EACL,EAAGb,EACAc,GAAe,CAAC,IAAI3c,GAAmB,IAAI,EAAG,IAAIS,GAAkB,IAAI,EAAG,IAAIG,GAAsB,IAAI,CAAC,EAC1Ggc,GAAiB,CAAC,IAAIC,GAAiC,IAAI,EAAG,IAAIC,GAA4B,IAAI,EAAG,IAAIC,GAA0B,IAAI,EAAG,IAAIC,GAAiC,IAAI,EAAG,IAAIC,GAAkC,IAAI,EAAG,IAAIC,GAAyB,IAAI,EAAG,IAAIC,GAA2B,IAAI,EAAG,IAAIC,GAA2B,KAAMV,EAAG,EAAG,IAAIW,GAA+B,IAAI,EAAG,IAAIC,GAAoB,IAAI,EAAG,IAAIC,GAAqC,IAAI,CAAC,EAC/cd,IACFE,GAAa,KAAK,IAAIpc,GAAe,IAAI,CAAC,EAC1Cqc,GAAe,KAAK,IAAIY,GAA6B,IAAI,CAAC,GAE5D,IAAIzf,GAAgB+d,EAAiB,OAAS,EAAIA,EAAmBD,EAAO,oBACxE4B,GAAY1B,EAAc,OAAS,EAAIA,EAAgBF,EAAO,iBAC9D6B,GAAoB,IAAIC,GAAyB,CACnD,iBAAkB,IAAI,IAAI1B,CAAiB,EAC3C,eAAgB,IAAI,IAAIC,CAAc,EACtC,aAAcne,GACd,oBAAqB,IAAI,IAAI8d,GAAW,OAAsCtG,EAAqBsG,EAAO,eAAiB,MAAQtG,IAAuB,SAAmBC,EAAwBD,EAAmB,iBAAmB,MAAQC,IAA0B,OAAzM,OAA2NA,EAAsB,IAAI3c,GAAQ,CAACgjB,EAAO,qBAAqBhjB,CAAI,EAAG,CAAC,CAAC,CAAC,CAC9W,CAAK,EACG+kB,GAAgBvB,GAAgG,GAChHwB,GAAgB5Z,GAAkB,mBAAmByY,GAAKN,EAAcwB,GAAe/B,EAAO,QAASS,CAAoB,EAC/H,KAAK,WAAa,IAAI/vB,EAAWmwB,EAAG,EACpC,KAAK,cAAgBE,GACrB,KAAK,YAAcD,GACnB,KAAK,MAAQ,CACX,iBAAkBhB,EAClB,qBAAAC,EACA,uBAAwB,KACxB,iBAAkB8B,GAClB,QAAS,OACT,gBAAiBxb,IAA2EmF,GAAcA,EAAW,OAAS,CAC5H,WAAAA,EACA,KAAM,WACd,EAAU,QAGJ,aAAcmV,EAAgB,IAAI,IAAIA,CAAa,EAAI,IAAI,IAC3D,gBAAiB,IAAI,IAAID,CAAgB,EACzC,oBAAqB,KACrB,oBAAqB,KACrB,MAAO,CAAE,EACT,QAAS,GACT,cAAe,CAAE,EACjB,sBAAA3a,EAEA,eAAgB,CAAE,EAElB,cAAe,KAEf,YAAa,KACb,qBAAsB,KACtB,oBAAqB,GACrB,mBAAoB,GACpB,kBAAmB,GACnB,aAAc7D,GACd,UAAA0f,GACA,mBAAoB,KACpB,UAAW,IAAIK,GAAUpB,EAAG,EAC5B,YAAa,GACb,sBAAuB,IAAI,IAAIhB,CAAqB,EACpD,mBAAAD,EACA,2BAA4B,KAC5B,yBAA0B,OAE1B,kBAAmB,KACnB,mBAAoB,GACpB,QAAS,GACT,oBAAqB,GACrB,sBAAuB,EACvB,2BAA4B,EAC5B,cAAeU,EACf,aAAc0B,GACd,YAAazB,EACb,sBAAuBwB,GACvB,oBAAqBtB,EACrB,aAAcN,EACd,sBAAuB,CAAE,EACzB,oBAAqBR,EACrB,oBAAqB,KACrB,YAAa,CAAE,EACf,gBAAiB,EACjB,eAAgB5gB,GAAwE,IAAI,IAC5F,kBAAmB,IAAI,IACvB,mBAAoB,KACpB,iBAAkB,KAClB,aAAc,KACd,cAAAmH,GACA,kBAAmB,GACnB,2BAA4B,GAC5B,uBAAwB,GACxB,aAAc,GACd,2BAA4B,KAC5B,uBAAwB,KACxB,0BAA2B,SAC3B,kBAAmB,KACnB,kBAAmB,GACnB,YAAa,GACb,QAAS,GACT,aAAc,GACd,eAAgB,GAChB,6BAA8B0T,GAAyBC,EAAkBmG,EAAO,QAAQ,CAAC,KAAO,MAAQnG,IAAoB,OAAS,OAASA,EAAgB,QAAU,MAAQD,IAA0B,OAASA,EAAwB,GAC3O,wBAAyBtB,GAAW,aACpC,UAAW,GACX,yBAA0B,GAC1B,mBAAoBlS,IAAoF4Z,EAAO,yBACrH,CACG,CACD,mBAAoB,CAClB,GAAI,CACF,MAAA/pB,CACN,EAAQ,KAAK,MACT,KAAK,UAAS,EACd,KAAK,eAAeA,CAAK,CAC1B,CACD,mBAAmBvE,EAAWmD,EAAW,CACvC,GAAI,CACF,aAAAqtB,EACA,kBAAApF,EACA,SAAAqF,EACA,MAAAlsB,EACA,cAAAgnB,EACA,MAAAvX,CACN,EAAQ,KAAK,MACLzP,IAAUvE,EAAU,QACtB,KAAK,cAAcA,EAAU,KAAK,EAClC,KAAK,eAAeuE,CAAK,GAE3B,IAAImsB,EAAsBF,IAAiBxwB,EAAU,aAAewwB,EAAa,OAAOG,GAAe,CAAC3wB,EAAU,aAAa,SAAS2wB,CAAW,CAAC,EAAI,CAAA,EACxJ,GAAID,EAAoB,OAAS,EAAG,CAClC,IAAIE,EACA,CACF,iBAAAC,CACR,EAAU,KAAK,MACLC,GAA0BF,EAAwBC,EAAiB,IAAIzV,GAAqB,wCAAwC,KAAO,MAAQwV,IAA0B,OAASA,EAAwB,GAC9ME,IACF,KAAK,oBAAmB,EACxB,KAAK,sBAAqB,GAE5B,KAAK,aAAa,eAAgB,CAChC,YAAa,EACrB,CAAO,EACD,KAAK,kBAAkBJ,EAAqBI,CAAsB,CACnE,CACG1F,IAAsBprB,EAAU,mBAClC,KAAK,qBAAoB,EAEvBywB,IAAazwB,EAAU,UACzB,KAAK,wBAAwBywB,CAAQ,EAEnClF,IAAkBvrB,EAAU,eAC9B,KAAK,aAAa,eAAgB,CAChC,YAAa,EACrB,CAAO,EAECgU,IAAUhU,EAAU,OACtB,KAAK,YAAYgU,CAAK,EAExB,GAAI,CACF,sBAAA+c,EACA,uBAAAC,CACD,EAAG,KACAD,GAAyB,MAAQC,GAA0B,MAC7D,OAAO,sBAAsB,IAAM,CACjC,IAAIC,EAAM,KAAK,MACXC,EAAcD,EAAMF,EACpBI,EAAYH,EAAyBD,EACrC1F,EAAuB,KAAK,IAAI6F,EAAcC,EAAW,CAAC,EAC1DH,EAAyBC,IAC3B,KAAK,sBAAwB,OAC7B,KAAK,uBAAyB,QAEhC,KAAK,SAASG,GACRA,EAAM,sBAAwB,MAChC1yB,EAAI,OAAO,kDAAkD,EACtD,MAEF,CACL,qBAAA2sB,CACZ,CACS,CACT,CAAO,EAEH,GAAI,CACF,YAAAgG,CACN,EAAQ,KAAK,MACT,GAAIA,IAAgBluB,EAAU,YAAa,CACzC,IAAImuB,EAAgB5oB,GAAUA,EAAO,OAAS0gB,EAAW,iBACrD,CAACiI,EAAY,KAAKC,CAAa,GAAKnuB,EAAU,YAAY,KAAKmuB,CAAa,GAC9E,KAAK,wBAAuB,CAE/B,CACD,KAAK,gBAAe,CACrB,CACD,sBAAuB,CACrB,GAAI,CACF,MAAA/sB,CACN,EAAQ,KAAK,MACT,KAAK,cAAcA,CAAK,EACxB,KAAK,QAAQ,SACb,KAAK,mBAAmB,SACpB,KAAK,cACP,aAAa,KAAK,YAAY,EAEhC,KAAK,6BAA6B,SAC9B,KAAK,iBAAmB,QAC1B,qBAAqB,KAAK,cAAc,EAE1C,KAAK,oBAAoB,QAC1B,CAID,IAAI,aAAc,CAChB,IAAIgtB,EAAuBC,EAC3B,OAAQD,GAAyBC,EAAa,KAAK,QAAU,MAAQA,IAAe,OAAS,OAASA,EAAW,cAAc,WAAa,MAAQD,IAA0B,OAASA,EAAwB,IAChN,CAWD,gBAAiB,CACf,GAAI,CACF,YAAArF,CACN,EAAQ,KAAK,MACT,OAAO,KAAK,qBAAqBA,CAAW,CAC7C,CACD,IAAI,UAAW,CACb,GAAI,CACF,SAAAuF,CACN,EAAQ,KAAK,MACT,OAAO,KAAK,kBAAkBA,CAAQ,CACvC,CACD,kBAAmB,CACjB,GAAI,CACF,cAAArF,CACN,EAAQ,KAAK,MACT,OAAO,KAAK,uBAAuBA,CAAa,CACjD,CACD,gBAAgBxnB,EAAa8sB,EAAU,CACrC,IAAIC,EAAW,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAC/E,CACF,MAAAptB,CACN,EAAQ,KAAK,MACL,CACF,GAAA/C,CACD,EAAG+C,EACAqtB,EAAc,KAAK,eAAehtB,CAAW,EAC7CitB,EAAW,KAAK,YAAYH,CAAQ,EACxC,GAAIC,GAAYC,GAAe,MAAQC,GAAY,KAAM,CACvD,IAAIjyB,EAAS2E,EAAM,aAAaqtB,EAAaC,CAAQ,EACrD,GAAI7yB,EAAW,WAAWuF,EAAM,QAAQqtB,CAAW,EAAE,IAAI,EAAG,CAE1D,GAAI,CACF,UAAAvxB,CACD,EAAGkE,EACJ,OAAO/C,EAAG,KAAK,eAAe,OAAOkmB,GAA0B9nB,EAAQ4B,EAAG,KAAK,SAAS,YAAYnB,EAAU,QAAQ,CAAC,CACxH,CACD,OAAOT,CACR,CACD,OAAI+xB,EACK,KAELC,GAAe,MAAQC,GAAY,KAC9BttB,EAAM,YAAYqtB,EAAaC,CAAQ,EAEzC,EACR,CACD,eAAejtB,EAAa,CAC1B,GAAI,CACF,QAAAktB,CACN,EAAQ,KAAK,MACTjtB,EAAcitB,CAAO,EACrB,GAAI,CACF,aAAAC,CACD,EAAGD,EACJ,OAAIC,GAAgB,KACX,KAEFntB,GAAe,KAAOmtB,EAAa,IAAIntB,CAAW,EAAI,IAC9D,CACD,YAAY8sB,EAAU,CACpB,GAAI,CACF,QAAAI,CACN,EAAQ,KAAK,MACTjtB,EAAcitB,CAAO,EACrB,GAAI,CACF,UAAAE,CACD,EAAGF,EACJ,OAAIE,GAAa,KACR,KAEFN,GAAY,KAAOM,EAAU,IAAIN,CAAQ,EAAI,IACrD,CACD,UAAW,CACT,IAAI3lB,EACA,CACF,MAAAxH,EACA,MAAAknB,EACA,QAAAG,CACN,EAAQ,KAAK,MACL,CACF,MAAOJ,EACP,QAASyG,CACf,EAAQ,KAAK,QACT,OAAO,KAAK,eAAezG,EAAcC,GAAQ1f,EAAQiiB,GAAoBzpB,CAAK,GAAKA,EAAM,cAAgB,MAAQwH,IAAU,OAASA,EAAQ,GAAOxH,EAAM,oBAAsBA,EAAM,uBAAwBqnB,GAAmDqG,CAAc,CACnR,CACD,iBAAiB9hB,EAAY,CAC3B,GAAI,CACF,aAAAD,CACN,EAAQ,KAAK,MACT,OAAOE,GAAU,gBAAgBD,EAAYD,CAAY,CAC1D,CACD,gBAAgB1Q,EAAQqQ,EAAMnQ,EAAU,CACtC,GAAI,CACF,OAAO,KAAK,WAAW,gBAAgBF,EAAQqQ,EAAMnQ,CAAQ,CAC9D,OAAQwP,EAAK,CACZxQ,EAAI,MAAM,8BAA+BwQ,CAAG,CAC7C,CACD,OAAO,IACR,CAQD,kBAAkBshB,EAAc,CAC9B,IAAI0B,EAAkB,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GACtF,CACF,MAAA3tB,CACN,EAAQ,KAAK,MACL,CACF,gBAAAqjB,EACA,aAAAE,CACN,EAAQ,KAAK,MACLqK,EAAqBD,EAAkB,IAAI,IAAQ,IAAI,IAAItK,CAAe,EAC1EwK,EAAkBF,EAAkB,IAAI,IAAQ,IAAI,IAAIpK,CAAY,EACpEnW,EAAYugB,GAAmBtK,EAAgB,KAAO,EAC1D4I,EAAa,QAAQ1V,GAAS,CAC5B,GAAI,CACF,KAAAxP,EACA,KAAA1C,EACA,MAAA1K,CACD,EAAG4c,EACA3K,EAAa5L,EAAM,QAAQ,UAAU8tB,GAAS,CAChD,GAAI,CACF,KAAMvuB,EACN,KAAMhF,CACP,EAAGuzB,EACJ,OAAOvuB,IAAewH,GAAQxM,IAAe8J,CACrD,CAAO,EACGuH,GAAc,GAChBwB,EAAYwgB,EAAmB,OAAOhiB,CAAU,GAAKwB,EACrDA,EAAY,KAAK,iBAAiBxB,EAAYjS,EAAOk0B,CAAe,GAAKzgB,GAEzEjT,EAAI,MAAM,wCAAyC4M,EAAM1C,EAAM1K,CAAK,CAE5E,CAAK,EACGyT,GACF,KAAK,SAAS,CACZ,aAAcygB,EACd,gBAAiBD,CACzB,CAAO,CAEJ,CASD,iBAAiBhiB,EAAYjS,EAAO4pB,EAAc,CAChD,GAAI,CACF,MAAAvjB,CACN,EAAQ,KAAK,MACL,CACF,UAAAlE,CACD,EAAGkE,EACA/E,EAAS+E,EAAM,QAAQ4L,CAAU,EACrC,GAAIjS,GAAS,MAAQ,GAAG,OAAOA,CAAK,EAAE,KAAI,EAAG,OAAS,EAAG,CACvD,IAAIo0B,EAAcxK,EAAa,IAAI3X,CAAU,EAC7C,GAAImiB,GAAe,KAAM,CACvB,GAAI,CACF,KAAAziB,CACD,EAAGyiB,EACJ,GAAIziB,IAAS3R,EACX,OAAAQ,EAAI,OAAO,oCAAoC,EACxC,EAEV,CACD,OAAAopB,EAAa,IAAI3X,EAAY,CAC3B,KAAMjS,EACN,OAAQ,KAAK,gBAAgBsB,EAAQtB,EAAOmC,EAAU,QAAQ,CACtE,CAAO,EACM,EACR,CACD,OAAOynB,EAAa,OAAO3X,CAAU,CACtC,CACD,qBAAqByX,EAAiB,CACpC,KAAK,SAAS,CACZ,gBAAAA,CACN,CAAK,CACF,CACD,kBAAkBzX,EAAYvM,EAAQY,EAAS,CAC7C9F,EAAI,MAAM,0BAA2ByR,EAAYvM,CAAM,EACvD,KAAK,aAAa,eAAgB,CAChC,YAAa,EACnB,CAAK,EACD,KAAK,SAAS2uB,GAAS,CACrB,GAAI,CACF,gBAAA3K,CACD,EAAG2K,EACAJ,EAAqB,IAAI,IAAIvK,CAAe,EAChD,OAAIhkB,GAAU,KACZuuB,EAAmB,OAAOhiB,CAAU,EAEpCgiB,EAAmB,IAAIhiB,EAAY,CACjC,OAAAvM,EACA,QAAAY,CACV,CAAS,EAEI,CACL,gBAAiB2tB,CACzB,CACA,CAAK,CACF,CAQD,eAAehiB,EAAYvM,EAAQiM,EAAM,CACvCnR,EAAI,MAAM,uBAAwByR,EAAYvM,EAAQiM,CAAI,EAC1D,KAAK,aAAa,eAAgB,CAChC,YAAa,EACnB,CAAK,EACD,KAAK,SAAS2iB,GAAS,CACrB,GAAI,CACF,aAAA1K,CACD,EAAG0K,EACAJ,EAAkB,IAAI,IAAItK,CAAY,EAC1C,OAAAsK,EAAgB,IAAIjiB,EAAY,CAC9B,OAAAvM,EACA,KAAAiM,CACR,CAAO,EACM,CACL,aAAcuiB,CACtB,CACA,CAAK,CACF,CAMD,aAAaK,EAAW,CACtB,IAAIC,EACJh0B,EAAI,MAAM,eAAgB+zB,CAAS,EACnC,GAAI,CACF,iBAAA5B,CACN,EAAQ,KAAK,MACL8B,GAAoCD,EAAyB7B,EAAiB,IAAIzV,GAAqB,8BAA8B,KAAO,MAAQsX,IAA2B,OAASA,EAAyB,GACjNC,GACF,KAAK,gBAAe,EAEtB,GAAI,CACF,MAAApuB,CACN,EAAQ,KAAK,MACTkuB,EAAU,QAAQ,CAACG,EAAO9uB,IAAe,CACvC,GAAI,CACF,WAAAhF,EACA,WAAA+zB,CACD,EAAGD,EACApzB,EAAS+E,EAAM,QAAQ,KAAK0S,GAAKA,EAAE,OAASnT,GAAcmT,EAAE,OAASnY,CAAU,EACnF,GAAIU,GAAU,KAGd,KAAIoF,EAAcL,EAAM,qBAAqB/E,EAAO,IAAI,EACxDqF,EAAcD,CAAW,EACzB,IAAIkuB,EAAeniB,EAAc,uBAAuB7R,EAAY+zB,CAAU,EAC9E,GAAIC,EAAa,SAAW,EAC1B,KAAK,kBAAkBluB,CAAW,MAC7B,CACL,GAAI,CACF,UAAAvE,CACD,EAAGkE,EACJ,KAAK,eAAeK,EAAa,KAAK,gBAAgBpF,EAAQszB,EAAczyB,EAAU,QAAQ,EAAG,GAAG,OAAOyyB,CAAY,CAAC,CACzH,EACP,CAAK,CACF,CACD,mBAAmBC,EAAY,CAC7B,KAAK,aAAa,eAAgB,CAChC,YAAa,EACnB,CAAK,EACD,IAAIC,EAAa,MAAM,QAAQD,CAAU,EAAIA,EAAa,CAACA,EAAYA,CAAU,EACjF,KAAK,SAASE,GAAU,CACtB,GAAI,CACF,gBAAArL,EACA,aAAAE,CACD,EAAGmL,EACAd,EAAqBvK,EAAkB,IAAI,IAAIA,CAAe,EAAI,IAAI,IACtEwK,EAAkBtK,EAAe,IAAI,IAAIA,CAAY,EAAI,IAAI,IACjE,OAAAqK,EAAmB,QAAQ,CAACxY,EAAGna,IAAW,CACpCA,GAAUwzB,EAAW,CAAC,GAAKxzB,GAAUwzB,EAAW,CAAC,GACnDb,EAAmB,OAAO3yB,CAAM,CAE1C,CAAO,EACD4yB,EAAgB,QAAQ,CAACzY,EAAGna,IAAW,CACjCA,GAAUwzB,EAAW,CAAC,GAAKxzB,GAAUwzB,EAAW,CAAC,GACnDZ,EAAgB,OAAO5yB,CAAM,CAEvC,CAAO,EACM,CACL,aAAc4yB,EACd,gBAAiBD,CACzB,CACA,CAAK,CACF,CACD,kBAAkBP,EAAa,CAC7B,KAAK,aAAa,qBAAsB,CACtC,YAAa,EACnB,CAAK,EACD,KAAK,SAASsB,GAAU,CACtB,GAAI,CACF,aAAApL,CACD,EAAGoL,EACAd,EAAkB,IAAI,IAAItK,CAAY,EAC1C,OAAAsK,EAAgB,OAAOR,CAAW,EAC3B,CACL,aAAcQ,CACtB,CACA,CAAK,CACF,CACD,iBAAkB,CAChB1zB,EAAI,MAAM,sBAAsB,EAChC,GAAI,CACF,gBAAAkpB,EACA,aAAAE,EACA,aAAA/Q,CACN,EAAQ,KAAK,MACL+Q,EAAa,OAAS,GAAKF,EAAgB,OAAS,GAAK7Q,IAAiB,OAK9E,KAAK,oBAAmB,EACxB,KAAK,aAAa,sBAAuB,CACvC,YAAa,EACnB,CAAK,EACD,KAAK,SAAS,CACZ,aAAc,IAAI,IAClB,gBAAiB,IAAI,IACrB,YAAa,GACb,aAAc,MACpB,CAAK,EACF,CACD,uBAAwB,CACtBrY,EAAI,MAAM,8BAA8B,EACxC,KAAK,SAAS,CACZ,YAAa,GACb,aAAc,MACpB,CAAK,CACF,CACD,qBAAsB,CAChB,KAAK,eAAe,SAAW,MACjC,KAAK,eAAe,QAAQ,SAAS,EAAE,CAE1C,CAKD,gBAAiB,CACf,GAAI,CACF,MAAA6F,CACN,EAAQ,KAAK,MACL,CACF,gBAAAqjB,EACA,aAAAE,CACN,EAAQ,KAAK,MACL,CACF,QAAA/c,EACA,UAAA1K,CACD,EAAGkE,EACJ7F,EAAI,MAAM,oBAAoB,EAC9B,IAAIyzB,EAAqB,IAAI,IACzBC,EAAkB,IAAI,IAC1BxK,EAAgB,QAAQ,CAAC1pB,EAAOD,IAAQ,CACtC,GAAI,CACF,QAAAuG,CACD,EAAGtG,EACAsB,EAASuL,EAAQ9M,CAAG,EACpB2F,EAAS,KAAK,WAAW,mBAAmBpE,EAAQgF,EAASnE,EAAU,QAAQ,EACnF8xB,EAAmB,IAAIl0B,EAAK,CAC1B,QAAAuG,EACA,OAAAZ,CACR,CAAO,CACP,CAAK,EACDkkB,EAAa,QAAQ,CAAC5pB,EAAOD,IAAQ,CACnC,GAAI,CACF,KAAA4R,CACD,EAAG3R,EACAsB,EAASuL,EAAQ9M,CAAG,EACxBm0B,EAAgB,IAAIn0B,EAAK,CACvB,KAAA4R,EACA,OAAQ,KAAK,gBAAgBrQ,EAAQqQ,EAAMxP,EAAU,QAAQ,CACrE,CAAO,CACP,CAAK,EACD,KAAK,aAAa,wBAAyB,CACzC,YAAa,EACnB,CAAK,EACD,KAAK,SAAS,CACZ,aAAc+xB,EACd,gBAAiBD,CACvB,CAAK,CACF,CACD,WAAWgB,EAAQ,CACjB,GAAI,CACF,aAAArL,EACA,gBAAAF,CACD,EAAGuL,EACJ,KAAK,SAAS,CACZ,aAAArL,EACA,gBAAAF,CACN,CAAK,CACF,CACD,wBAAwB6I,EAAU,CAChC,IAAI2C,EAAuBC,EAAuBC,EAAuBC,EAAuBC,EAAuBC,EACnHC,EAAc,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAClFC,EAAsBC,GAAe,iBAAiBnD,CAAQ,EAC9DoD,EAA2BD,GAAe,4BAA4BnD,CAAQ,EAC9EqD,GAA+BV,EAAwB3C,GAAa,KAA8B,OAASA,EAAS,+BAAiC,MAAQ2C,IAA0B,OAASA,EAAwB,GACxNW,GAA+BV,EAAwB5C,GAAa,KAA8B,OAASA,EAAS,+BAAiC,MAAQ4C,IAA0B,OAASA,EAAwB,GACxNW,GAA4BV,EAAwB7C,GAAa,KAA8B,OAASA,EAAS,4BAA8B,MAAQ6C,IAA0B,OAASA,EAAwB,GAClNW,GAAoBV,EAAwB9C,GAAa,KAA8B,OAASA,EAAS,oBAAsB,MAAQ8C,IAA0B,OAASA,EAAwB,GAClMW,GAAmBV,EAAwB/C,GAAa,KAA8B,OAASA,EAAS,mBAAqB,MAAQ+C,IAA0B,OAASA,EAAwB,GAChM5e,GAAwB6e,EAAwBhD,GAAa,KAA8B,OAASA,EAAS,wBAA0B,MAAQgD,IAA0B,OAASA,EAAwB,GAC1MU,EAAwB,CAACxZ,GAAU,KAAK,oBAAqBgZ,CAAmB,EAChFS,EAA0B,CAACzZ,GAAU,KAAK,yBAA0BkZ,CAAwB,EAC5FQ,EAA6B,CAAC1Z,GAAU,KAAK,qBAAsB8V,GAAa,KAA8B,OAASA,EAAS,2BAA2B,EAC3J6D,EAA6B,CAAC3Z,GAAU,KAAK,qBAAsBoZ,CAA2B,EAC9FQ,EAA2B,KAAK,2BAA6BP,EAC7DQ,EAA4B,KAAK,mBAAqBP,EACtDQ,EAA2B,KAAK,kBAAoBP,EACpDQ,EAAgC,KAAK,uBAAyB9f,GAC9Duf,GAAyBC,GAA2BC,GAA8BC,GAA8BC,GAA4BC,GAA6BC,GAA4BC,KACvM,KAAK,oBAAsBf,EAC3B,KAAK,yBAA2BE,EAChC,KAAK,qBAAuBC,EAC5B,KAAK,qBAAuBC,EAC5B,KAAK,yBAA2BC,EAChC,KAAK,iBAAmBC,EACxB,KAAK,gBAAkBC,EACvB,KAAK,qBAAuBtf,EAC5B,KAAK,gBAAgB,GAAI8e,CAAW,EAChCU,GAA2BV,GAC7B,KAAK,eAAc,EAGxB,CACD,gBAAgBiB,EAAgB,CAC9B,IAAIC,EACAlB,EAAc,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAClF,CACF,sBAAAvF,CACN,EAAQ,KAAK,MACL,CACF,MAAA5pB,CACN,EAAQ,KAAK,MACL2S,EAASqB,GAAc,CACzB,sBAAA4V,CACD,EAAEwG,CAAc,EACbE,EAAsB,CAAC,IAAKD,EAAwB,KAAK,uBAAyB,MAAQA,IAA0B,OAASA,EAAwB,CAAA,EAAK,GAAG1d,EAAO,sBAAsB,OAAM,CAAE,EAClM7W,EAAY,IAAIkwB,GAAUhsB,EAAM,GAAIswB,EAAqB,KAAK,yBAA0B,KAAK,qBAAsB,KAAK,qBAAsB,KAAK,yBAA0B,KAAK,iBAAkB,KAAK,eAAe,EAC5Nn2B,EAAI,MAAM,kBAAmB,KAAK,oBAAqBm2B,CAAmB,EAC1E,KAAK,SAAStc,GAAcA,GAAc,CAAA,EAAIrB,CAAM,EAAG,GAAI,CACzD,UAAA7W,CACD,CAAA,EAAG,IAAM,CACJqzB,GAAe,KAAK,MACtB,KAAK,KAAK,aAElB,CAAK,CACF,CACD,eAAgB,CACd,GAAI,CACF,SAAAjD,CACN,EAAQ,KAAK,MACT,KAAK,wBAAwBA,CAAQ,CACtC,CACD,WAAY,CACV,GAAI,CACF,MAAAlsB,CACN,EAAQ,KAAK,MACT,GAAI,CACE2Q,GAAuB3Q,CAAK,GAAKA,EAAM,oBACzC,KAAK,oBAAoBA,CAAK,EAE9B,KAAK,eAAc,CAEtB,OAAQZ,EAAO,CACd,KAAK,qBAAqBA,CAAK,CAChC,CACF,CACD,gBAAiB,CACf,GAAI,CACF,wBAAAmxB,EACA,aAAAtE,EACA,MAAAxc,EACA,MAAAzP,EACA,QAAA6O,EACA,YAAA2hB,EACA,cAAA9gB,EACA,YAAA0C,EACA,sBAAAmW,EACA,oBAAAC,CACN,EAAQ,KAAK,MACLsD,EAAgBvD,GAA6F,GAC7G/V,EAAeL,GAAkB,mBAAmBnS,EAAM,GAAIoS,EAAa0Z,EAAe9rB,EAAM,QAASwoB,CAAmB,EAChI,GAAI+H,EAAyB,CAG3B,IAAIE,EAAyBxE,EAAa,OAAOG,GAAeA,EAAY,OAAS,IAAI,EACzF,KAAK,kBAAkBqE,CAAsB,CAC9C,CACD,KAAK,SAAS,CACZ,MAAAhhB,EACA,QAASZ,GAAW2hB,IAAgB/1B,EAAW,aAAa,UAC5D,cAAAiV,EACA,QAAS,GACT,aAAA8C,CACN,CAAK,EACD,KAAK,cAAa,CACnB,CACD,oBAAoBxS,EAAO,CACzB,IAAI+B,EAAQ,KACZ,OAAOwI,GAAkB,WAAa,CACpC,GAAI,CACF,GAAI,CACF,gBAAA6F,CACV,EAAYrO,EAAM,MACLqO,IACHrO,EAAM,aAAa,wBAAyB,CAC1C,mBAAoB,GACpB,YAAa,EACzB,CAAW,EACDA,EAAM,0BAA0B/B,CAAK,GAEvC+B,EAAM,SAAS,CACb,qBAAsB,EAChC,EAAWA,EAAM,cAAc,CACxB,OAAQ3C,EAAO,CACTwB,GAAa,WAAWxB,CAAK,GAChC2C,EAAM,qBAAqB3C,CAAK,CAEnC,CACF,CAAA,GACF,CAKD,0BAA0BY,EAAO,CAC/B,IAAIuL,EAAS,KACb,OAAOhB,GAAkB,WAAa,CACpC,IAAIgK,EAAW,MAAMhJ,EAAO,QAAQ,IAAIvL,EAAM,mBAAkB,EAAI0wB,GAAYA,EAAS,MAAO,CAAA,EAC5F,CACF,GAAAzzB,CACD,EAAG+C,EACAyP,EAAQ8E,EAAS,QAAQ,IAAItZ,GAAUA,EAAO,KAAI,EAAG,KAAI,CAAE,EAC/DsZ,EAAS,UAAU9E,CAAK,EACxB8E,EAAS,YAAY,EAAG,CAAC,EAIzBA,EAAS,iBAAiBtX,EAAG,MAAM,cAAerB,GAAS,CACzD,GAAI,CACF,GAAI,CACF,OAAQ+0B,CACT,EAAG/0B,EACJ,GAAI+0B,EAAM,KAAK,SAAW,EAAG,CAE3BplB,EAAO,YAAW,EAClB,MACD,CACD,IAAIxN,EAAM4yB,EAAM,KAAK,CAAC,EAClB7zB,EAASyX,EAAS,QAAQ,IAAItZ,GAAU8C,EAAI,IAAI9C,CAAM,CAAC,EACvD21B,EAAe,CACjB,WAAY9zB,EACZ,KAAMkD,EAAM,4BAA8B,YAAc,MACpE,EACUuU,EAAS,MAAK,EACdhJ,EAAO,SAAS,CACd,oBAAqB,GACrB,gBAAiBqlB,CAC7B,CAAW,CACF,OAAQ91B,EAAG,CACVyZ,EAAS,MAAK,EACdpa,EAAI,MAAM,yCAA0CW,CAAC,CACtD,CACT,CAAO,CACF,CAAA,GACF,CAQD,4BAA4BqyB,EAAU,CACpC,GAAI,CACF,MAAAntB,CACN,EAAQ,KAAK,MAET,GADAM,EAAc6sB,CAAQ,EAClBxc,GAAuB3Q,CAAK,EAAG,CACjC,IAAI6wB,EAAS,KAAK,cAAc1D,CAAQ,EACpC2D,EAAqB,IAAI,IAAI9wB,EAAM,iBAAiB,IAAI/E,GAAUA,EAAO,IAAI,CAAC,EAC9E6B,EAAS,OAAO,QAAQ+zB,CAAM,EAAE,OAAOE,GAAU,CACnD,GAAI,CAACr3B,EAAK0b,CAAC,EAAI2b,EACf,OAAOD,EAAmB,IAAIp3B,CAAG,CACzC,CAAO,EAAE,IAAIs3B,GAAU,CACf,GAAI,CAACt3B,EAAKu3B,CAAU,EAAID,EACxB,OAAOC,EAAW,KAC1B,CAAO,EACGL,EAAe,CACjB,WAAY9zB,EACZ,KAAM,WACd,EACM,KAAK,SAAS,CACZ,qBAAsB,GACtB,gBAAiB8zB,CACzB,CAAO,CACF,CACF,CACD,SAASvwB,EAAa8sB,EAAU,CAC9B,IAAIC,EAAW,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAC/E,CACF,QAAAzC,CACN,EAAQ,KAAK,MACT,GAAIA,EAAS,CACX,IAAIuG,EAAU,OAAO,KAAK,gBAAgB7wB,EAAa8sB,EAAUC,CAAQ,CAAC,EAC1E5hB,GAAgB0lB,CAAO,EAAE,MAAMp2B,GAAKX,EAAI,MAAM,sBAAuBW,CAAC,CAAC,CAC7E,MACMX,EAAI,MAAM,yDAAyD,CAEtE,CACD,iBAAiBkG,EAAa,CAC5B,IAAIqL,EAAc,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,EACtF,GAAIrL,IAAgB,KAGpB,IAAI,CACF,QAAAsqB,CACN,EAAQ,KAAK,MACL,CACF,aAAAhf,CACN,EAAQ,KAAK,MACT,GAAIgf,EAAS,CACX,IAAI9f,EAAgB,CAClB,YAAAxK,EACA,YAAAqL,EACA,aAAAC,CACR,EACM,KAAK,SAAS,CACZ,cAAAd,CACR,CAAO,CACP,MACM1Q,EAAI,MAAM,8DAA8D,EAE3E,CASD,WAAWiR,EAAQ,CACjB,IAAIW,EAAiB,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GACrFG,EAAe,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GACnF9M,EAAQ,UAAU,OAAS,EAAI,UAAU,CAAC,EAAI,OAC9C,CACF,MAAAY,EACA,QAAA2qB,CACN,EAAQ,KAAK,MACL,CACF,iBAAAlF,EACA,aAAA9Z,CACN,EAAQ,KAAK,MACLK,EAAmByZ,EAAiB,sBACxC,GAAIkF,EAAS,CACX,IAAI9f,EAAgB,CAClB,OAAQQ,GAAU,cAAcD,EAAQpL,EAAM,YAAaA,EAAM,QAAQ,EACzE,eAAA+L,EACA,aAAAG,EACA,aAAAP,EACA,iBAAAK,EACA,MAAA5M,CACR,EACM,KAAK,SAAS,CACZ,cAAAyL,CACR,CAAO,CACP,MACM1Q,EAAI,MAAM,wDAAwD,CAErE,CACD,aAAag3B,EAAa,CACxB,GAAI,CACF,YAAAC,EAAc,GACd,mBAAAC,EAAqB,GACrB,kBAAAC,EAAoB,EACrB,EAAG,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GACxE,KAAK,SAAS,CACZ,YAAAH,EACA,mBAAAE,EACA,kBAAAC,CACN,CAAK,EACD,IAAIpK,EAAQ,KAAK,WAOjB,GANIkK,GAAe,KAAK,OACtB,KAAK,KAAK,sBACV,KAAK,KAAK,aAAa,CACrB,IAAK,CACN,EAAE,EAAI,GAEL,KAAK,uBAAyB,KAAM,CACtC,IAAIG,EAAuBC,EACvB,CACF,uBAAAC,EACA,uBAAAC,CACD,EAAGxK,EACJ5mB,EAAcmxB,CAAsB,EACpCnxB,EAAcoxB,CAAsB,EACpC,IAAIhT,GAAU6S,GAAyBC,EAAoB,KAAK,eAAiB,MAAQA,IAAsB,OAAS,OAASA,EAAkB,sBAAuB,EAAC,UAAY,MAAQD,IAA0B,OAASA,EAAwB,EACtPI,EAAsB,KAAK,IAAIF,EAAwB,KAAK,IAAI/S,EAAS,EAAGgT,CAAsB,CAAC,EACvG,KAAK,sBAAwB,KAAK,MAClC,KAAK,uBAAyB,KAAK,sBAAwBC,EAC3D,KAAK,SAAS,CACZ,qBAAsB,CAC9B,CAAO,EACD,KAAK,aAAe,WAAW,IAAM,CACnC,KAAK,SAAS,CACZ,oBAAqB,EAC/B,CAAS,CACT,EAASnO,GAAS,mBAAmB,CAChC,CACF,CACD,aAAc,CACZ,KAAK,oBAAoB,SACzB,KAAK,sBAAwB,OAC7B,KAAK,uBAAyB,OAC9B,KAAK,SAAS,CACZ,YAAa,KACb,qBAAsB,KACtB,oBAAqB,GACrB,mBAAoB,EAC1B,CAAK,EACG,KAAK,cAAgB,OACvB,aAAa,KAAK,YAAY,EAC9B,KAAK,aAAe,OAEvB,CAKD,UAAW,CACT,GAAI,KAAK,iBAAkB,CACzBrpB,EAAI,MAAM,8BAA+B,KAAK,gBAAgB,EAC9D,GAAI,CACF,gBAAAkpB,EACA,oBAAAC,EACA,cAAA5T,EACA,aAAA6T,EACA,QAAA1U,EACA,aAAAe,EACA,aAAA4C,EACA,sBAAA1C,EACA,MAAAL,CACR,EAAU,KAAK,iBACT,KAAK,iBAAmB,KACxB,KAAK,SAAS,CACZ,gBAAA4T,EACA,oBAAAC,EACA,cAAA5T,EACA,aAAA6T,EACA,QAAA1U,EACA,aAAAe,EACA,aAAA4C,EACA,sBAAA1C,EACA,MAAAL,CACR,CAAO,CACP,MACMtV,EAAI,MAAM,+CAA+C,EACzD,KAAK,SAAS,CACZ,gBAAiB,IAAI,IACrB,oBAAqB+oB,GACrB,cAAe,CAAE,EACjB,aAAc,IAAI,IAClB,QAAS,GACT,aAAc,OACd,sBAAuB,CAAE,EACzB,MAAO,CAAE,CACjB,CAAO,CAEJ,CAMD,aAAc,CACZ,OAAO,KAAK,kBAAoB,MAAQ,CAACE,GAAc,KAAK,KAAK,CAClE,CACD,eAAepjB,EAAO,CACpBA,EAAM,iBAAiB4xB,GAAc,MAAM,QAAS,KAAK,YAAY,EACrE5xB,EAAM,iBAAiB4xB,GAAc,MAAM,eAAgB,KAAK,mBAAmB,EACnF5xB,EAAM,iBAAiB4xB,GAAc,MAAM,gBAAiB,KAAK,0BAA0B,EAC3F5xB,EAAM,iBAAiB4xB,GAAc,MAAM,qBAAsB,KAAK,wBAAwB,EAC9F5xB,EAAM,iBAAiB4xB,GAAc,MAAM,iBAAkB,KAAK,qBAAqB,CACxF,CACD,cAAc5xB,EAAO,CACnBA,EAAM,oBAAoB4xB,GAAc,MAAM,QAAS,KAAK,YAAY,EACxE5xB,EAAM,oBAAoB4xB,GAAc,MAAM,eAAgB,KAAK,mBAAmB,EACtF5xB,EAAM,oBAAoB4xB,GAAc,MAAM,gBAAiB,KAAK,0BAA0B,EAC9F5xB,EAAM,oBAAoB4xB,GAAc,MAAM,qBAAsB,KAAK,wBAAwB,EACjG5xB,EAAM,oBAAoB4xB,GAAc,MAAM,iBAAkB,KAAK,qBAAqB,CAC3F,CACD,OAAQ,CACN,IAAIC,GACHA,EAAc,KAAK,QAAU,MAAQA,IAAgB,QAAkBA,EAAY,MAAK,CAC1F,CACD,eAAe52B,EAAQ,CACrB,GAAI,CACF,aAAA0Q,CACN,EAAQ,KAAK,MACL,CACF,MAAA3L,CACN,EAAQ,KAAK,MACL,CACF,YAAA8xB,CACD,EAAG9xB,EACAqtB,EAAcxhB,GAAU,cAAc5Q,EAAQ0Q,CAAY,EAC9D,GAAI1Q,GAAU,MAAQA,EAAS,GAAK62B,GAAe72B,GAAU,CAAC+E,EAAM,aAAaqtB,CAAW,EAAG,CAC7F,KAAK,SAAS,CACZ,uBAAwB,IAChC,CAAO,EACD,MACD,CACD,GAAI,CACF,iBAAA5H,EACA,QAAA8H,CACN,EAAQ,KAAK,MACTjtB,EAAcitB,CAAO,EACrB,GAAI,CACF,KAAAhe,EACA,aAAAwiB,EACA,SAAAC,CACD,EAAGzE,EACJ,GAAItyB,EAASsU,EAAM,CACjB,IAAI0iB,GACHA,EAAc,KAAK,QAAU,MAAQA,IAAgB,QAAkBA,EAAY,aAAa,CAC/F,KAAMh3B,CACP,EAAE,EAAI,CACb,SAAe82B,EAAe92B,EAAQ,CAChC,IAAIi3B,EAAaC,EACbC,GAAeF,EAAc,KAAK,QAAU,MAAQA,IAAgB,OAAS,OAASA,EAAY,eAAc,EACpH5xB,EAAc8xB,CAAW,EACzB,IAAIC,EAAU5M,EAAiB,YAAY2M,EAAan3B,EAAQwqB,EAAiB,gBAAgB2M,CAAW,CAAC,GAC5GD,EAAc,KAAK,QAAU,MAAQA,IAAgB,QAAkBA,EAAY,aAAa,CAC/F,KAAM,KAAK,IAAIE,EAASL,CAAQ,EAChC,WAAY,CACb,EAAE,EAAI,CACR,CACD,KAAK,2BAA6B/2B,EAClC,KAAK,SAAS,CACZ,uBAAwBA,EACxB,iBAAkB,EACxB,CAAK,CACF,CACD,yBAAyBq3B,EAAoB,CAC3C,IAAIC,EACA,CACF,iBAAA9M,EACA,aAAA9Z,CACN,EAAQ,KAAK,MACT8Z,EAAiB,eAAe5Z,GAAU,cAAcymB,EAAoB3mB,CAAY,EAAG,CAAC,GAC3F4mB,EAAc,KAAK,QAAU,MAAQA,IAAgB,QAAkBA,EAAY,YAAW,CAChG,CACD,yBAAyBhzB,EAAY,CACnC,GAAI,CACF,cAAA0Q,EACA,aAAAtE,CACN,EAAQ,KAAK,MACL,CACF,MAAA3L,CACN,EAAQ,KAAK,MACT7F,EAAI,OAAO,kBAAmBoF,CAAU,EACxC,IAAIizB,EAAmBviB,GAAiB,KAAO,IAAI,IAAIjQ,EAAM,aAAa,EAAI,IAAI,IAAIiQ,CAAa,EACnGuiB,EAAiB,IAAIjzB,CAAU,EAC/B,IAAIqM,EAAa5L,EAAM,qBAAqBT,CAAU,EACtDe,EAAcsL,CAAU,EACxB,IAAI6mB,EAAe5mB,GAAU,gBAAgBD,EAAYD,CAAY,EACjE+mB,EAAkB7mB,GAAU,SAAS4mB,EAAcD,EAAiB,KAAO,EAAG7mB,CAAY,EAC9F,KAAK,SAAS,CACZ,cAAe,CAAC,GAAG6mB,CAAgB,EACnC,aAAcE,CACpB,CAAK,CACF,CACD,2BAA2BnzB,EAAY,CACrC,GAAI,CACF,cAAA0Q,EACA,aAAAtE,CACN,EAAQ,KAAK,MACL,CACF,MAAA3L,CACN,EAAQ,KAAK,MACT7F,EAAI,OAAO,oBAAqBoF,CAAU,EAC1C,IAAIizB,EAAmBviB,GAAiB,KAAO,IAAI,IAAIjQ,EAAM,aAAa,EAAI,IAAI,IAAIiQ,CAAa,EACnGuiB,EAAiB,OAAOjzB,CAAU,EAClC,IAAIqM,EAAa5L,EAAM,qBAAqBT,CAAU,EACtDe,EAAcsL,CAAU,EACxB,IAAI6mB,EAAe5mB,GAAU,gBAAgBD,EAAYD,CAAY,EAGjE+mB,EAAkB7mB,GAAU,SAAS4mB,EAAcD,EAAiB,KAAOxyB,EAAM,aAAa,OAAQ2L,CAAY,EACtH,KAAK,SAAS,CACZ,cAAe,CAAC,GAAG6mB,CAAgB,EACnC,aAAcE,CACpB,CAAK,CACF,CACD,8BAA8BC,EAAcC,EAAW,CACrD,IAAIC,EACA,CACF,iBAAApN,EACA,QAAA8H,CACN,EAAQ,KAAK,MACTjtB,EAAcitB,CAAO,EACjBqF,EACFD,EAAa,QAAQ/mB,GAAc,CACjC,IAAIknB,EAAerN,EAAiB,oBAAoB,IAAI7Z,CAAU,EAClEmnB,EAAkBC,GAAWzF,EAAQ,uBAAwB3hB,CAAU,EACvEknB,IAAiBC,EACnBtN,EAAiB,eAAe7Z,EAAYmnB,CAAe,EAE3DtN,EAAiB,iBAAiB7Z,CAAU,CAEtD,CAAO,EAED+mB,EAAa,QAAQ/mB,GAAc,CACjC6Z,EAAiB,eAAe7Z,EAAY,CAAC,CACrD,CAAO,GAEFinB,EAAc,KAAK,QAAU,MAAQA,IAAgB,QAAkBA,EAAY,YAAW,CAChG,CACD,6BAA8B,CAC5B,IAAII,EAAuBC,EACvB,CACF,iBAAAzN,EACA,QAAA8H,CACN,EAAQ,KAAK,MACL,CACF,MAAAvtB,CACN,EAAQ,KAAK,MACTM,EAAcitB,CAAO,EACrB,QAASrxB,EAAI,EAAGA,EAAIqxB,EAAQ,YAAarxB,GAAK,EAC5CupB,EAAiB,iBAAiBvpB,CAAC,EAErC,KAAK,0BAA0B8D,EAAM,mBAAmB,EACxD,KAAK,0BAA0BA,EAAM,yBAAyB,EAC9D,KAAK,SAAS,CACZ,eAAgBizB,GAAyBC,EAAsBlzB,EAAM,eAAiB,MAAQkzB,IAAwB,OAAS,OAASA,EAAoB,iBAAmB,MAAQD,IAA0B,OAASA,EAAwB,CAAE,CAC1P,CAAK,CACF,CACD,wBAAwB7gB,EAAamW,EAAuBC,EAAqB,CAC/E,GAAI,CACF,MAAAxoB,CACN,EAAQ,KAAK,MACT,KAAK,aAAa,cAAc,EAChC,KAAK,mBAAmBoS,EAAamW,EAAuBvoB,EAAM,QAASwoB,CAAmB,EAC9F,KAAK,SAAS,CACZ,YAAApW,EACA,sBAAAmW,EACA,oBAAAC,CACN,CAAK,CACF,CACD,qBAAsB,CACpB,IAAI2K,GACHA,EAAc,KAAK,QAAU,MAAQA,IAAgB,QAAkBA,EAAY,aAAY,EAC5F,KAAK,cACP,KAAK,eAAiB,sBAAsB,KAAK,mBAAmB,EAEvE,CACD,sBAAuB,CACrBh5B,EAAI,OAAO,sBAAsB,EACjC,KAAK,YAAc,GACnB,KAAK,eAAiB,sBAAsB,KAAK,mBAAmB,CACrE,CACD,oBAAqB,CACnBA,EAAI,OAAO,oBAAoB,EAC/B,KAAK,YAAc,EACpB,CACD,sBAAsBiW,EAAiB,CACrC,KAAK,aAAa,iBAAiB,EACnC,GAAI,CACF,gBAAiBsE,CACvB,EAAQ,KAAK,MACLA,IAAetE,GACjB,KAAK,SAAS,CACZ,gBAAAA,CACR,CAAO,CAEJ,CACD,qBAAqBhR,EAAO,CAC1B,GAAI,CAAAwB,GAAa,WAAWxB,CAAK,EAGjC,CAAAjF,EAAI,MAAMiF,CAAK,EACf,GAAI,CACF,QAAAg0B,CACN,EAAQ,KAAK,MACTA,EAAQh0B,CAAK,EACd,CACD,uBAAwB,CACtB,GAAI,CACF,MAAAY,CACN,EAAQ,KAAK,MACL,CACF,YAAAmxB,EACA,oBAAAzI,CACN,EAAQ,KAAK,MACL2K,EAAiB,0BAGjBrzB,EAAM,mBAAqB,CAAC0oB,EAC9B,KAAK,oBAAmB,EACfyI,IAAgBkC,GAAkB,CAACrzB,EAAM,mBAElD,KAAK,YAAW,CAEnB,CACD,gBAAiB,CAOf,QANIszB,EACA,CACF,iBAAA7N,CACN,EAAQ,KAAK,MACLzZ,EAAmByZ,EAAiB,sBACpC8N,EAAU,CAAC,GAAGvnB,EAAiB,QAAS,CAAA,EACnC9P,EAAI,EAAGA,EAAIq3B,EAAQ,OAAQr3B,GAAK,EAAG,CAC1C,GAAI,CAAC0P,EAAY4nB,CAAW,EAAID,EAAQr3B,CAAC,EACrCs3B,IAAgB,GAClB/N,EAAiB,iBAAiB7Z,CAAU,CAE/C,EACA0nB,EAAc,KAAK,QAAU,MAAQA,IAAgB,QAAkBA,EAAY,YAAW,CAChG,CACD,WAAWjzB,EAAaiB,EAAe,CACrCnH,EAAI,KAAK,2BAA4BkG,CAAW,EAChD,GAAI,CACF,MAAAL,CACN,EAAQ,KAAK,MACLqtB,EAAc,KAAK,eAAehtB,CAAW,EAEjD,GADAC,EAAc+sB,CAAW,EACrBrtB,EAAM,iBAAiBK,CAAW,EAAG,CACvC,GAAI,CACF,MAAOozB,CACf,EAAU,KAAK,MACLhkB,EAAQhV,EAAW,oBAAoBg5B,EAAczzB,EAAM,QAASqtB,EAAa/rB,CAAa,EAClG,KAAK,YAAYmO,CAAK,CAC5B,MACMtV,EAAI,MAAM,+BAAgC6F,EAAM,QAAQK,CAAW,CAAC,CAEvE,CACD,YAAYoP,EAAO,CACjB,IAAIikB,EACJ,KAAK,aAAa,YAAY,EAC9B,KAAK,SAAS,CACZ,MAAAjkB,CACN,CAAK,GACAikB,EAAe,KAAK,QAAU,MAAQA,IAAiB,QAAkBA,EAAa,YAAW,CACnG,CACD,WAAWrG,EAAa,CACtB,IAAIsG,EACAjyB,EAAY,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAIjH,EAAW,cAAc,KACzGm5B,EAAQ,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAC5EtyB,EAAgB,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GACxFhB,EAAc+sB,CAAW,EACzB,GAAI,CACF,MAAArtB,CACN,EAAQ,KAAK,MACLyP,EAAQhV,EAAW,WAAWuF,EAAM,KAAMA,EAAM,QAASqtB,EAAa3rB,EAAWkyB,EAAOtyB,CAAa,EACzG,KAAK,aAAa,YAAY,EAC9B,KAAK,SAAS,CACZ,MAAAmO,CACN,CAAK,GACAkkB,EAAe,KAAK,QAAU,MAAQA,IAAiB,QAAkBA,EAAa,YAAW,CACnG,CACD,QAAQ9kB,EAAS,CACf,IAAIglB,EACJ,KAAK,aAAa,cAAc,EAChC,KAAK,SAAS,CACZ,QAAAhlB,CACN,CAAK,GACAglB,EAAe,KAAK,QAAU,MAAQA,IAAiB,QAAkBA,EAAa,YAAW,CACnG,CACD,cAAe,CACb,GAAI,CACF,MAAA7zB,CACN,EAAQ,KAAK,MACT,OAAOA,EAAM,YACd,CACD,iBAAkB,CAChB,IAAI8zB,EAAa,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,KAAK,2BACtF,CACF,iBAAAxP,CACN,EAAQ,KAAK,MAKT,GAJAA,EAAmB,CAACA,EACpB,KAAK,SAAS,CACZ,iBAAAA,CACN,CAAK,EACGA,EACF,GAAIwP,GAAc,KAChB,KAAK,eAAeA,CAAU,MACzB,CAQL,QAPIzzB,EAAc,EACd,CACF,MAAO0zB,CACjB,EAAY,KAAK,MACL,CACF,YAAAjC,CACD,EAAGiC,EACK73B,EAAI,EAAGA,EAAI41B,EAAa51B,GAAK,EAAG,CACvC,IAAImxB,EAAc,KAAK,eAAenxB,CAAC,EACvC,GAAImxB,GAAe,KAAM,CACvB,IAAI2G,EAAUD,EAAQ,QAAQ1G,CAAW,EACzC,GAAI2G,GAAW,MAAQv5B,EAAW,WAAWu5B,EAAQ,IAAI,EAAG,CAC1D3zB,EAAcnE,EACd,KACD,CACF,CACF,CACD,KAAK,eAAemE,CAAW,CAChC,KACI,CACL,IAAI4zB,GACHA,EAAe,KAAK,QAAU,MAAQA,IAAiB,QAAkBA,EAAa,MAAK,CAC7F,CACF,CACD,wBAAyB,CACvB,IAAIC,EAAqBC,EAAuBC,EAC5C,CACF,MAAAp0B,EACA,gBAAAykB,CACN,EAAQ,KAAK,MACL,CACF,GAAAxnB,CACD,EAAG+C,EACAq0B,EAAoBr0B,GAAU,OAAqCk0B,EAAsBl0B,EAAM,eAAiB,MAAQk0B,IAAwB,OAAvF,OAAyGA,EAAoB,kBAC1L,OAAIG,MAAwBF,EAAwBl3B,EAAG,qBAAuB,MAAQk3B,IAA0B,OAAS,OAASA,EAAsB,qBAC/I,GAELE,MAAwBD,EAAyBn3B,EAAG,qBAAuB,MAAQm3B,IAA2B,OAAS,OAASA,EAAuB,qBAClJ,GAEF3P,CACR,CACD,iBAAkB,CAChB,GAAI,CACF,cAAAF,CACN,EAAQ,KAAK,MACT,GAAK,KAAK,yBAGV,KAAI5R,EAAS,CAAC4R,EACd,KAAK,SAAS,CACZ,cAAe5R,CACrB,EAAO,IAAM,CACP,IAAI2hB,EACJ,GAAI3hB,IAAW2hB,EAAuB,KAAK,kBAAoB,MAAQA,IAAyB,QAAUA,EAAqB,QAAS,CACtI,IAAIC,GACHA,EAAwB,KAAK,kBAAoB,MAAQA,IAA0B,QAAkBA,EAAsB,QAAQ,MAAK,CACjJ,KAAa,CACL,IAAIC,GACHA,EAAe,KAAK,QAAU,MAAQA,IAAiB,QAAkBA,EAAa,MAAK,CAC7F,CACP,CAAK,EACF,CACD,eAAgB,CACd,IAAIC,EAAcC,EACd32B,EAAM,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAC1EpE,EAAQ,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAC5E4F,EAAa,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GACjF,CACF,YAAAo1B,CACN,EAAQ,KAAK,MACT,GAAI52B,GAAOpE,EAAO,CAChB,IAAIi7B,EAEJ,KAAK,SAAS,CACZ,YAAa,GACb,UAAWj7B,EACX,4BAA6B4F,EAC7B,aAAc,GACd,eAAgB,GAChB,yBAA0B,EAClC,CAAO,EACD,KAAK,eAAexB,CAAG,GACtB62B,EAAwB,KAAK,WAAW,WAAa,MAAQA,IAA0B,QAAkBA,EAAsB,MAAK,EACrI,MACD,CACD,IAAIC,GAAaJ,EAAe,KAAK,QAAU,MAAQA,IAAiB,OAAS,OAASA,EAAa,MAAM,UACzGK,GAAgBJ,EAAe,KAAK,QAAU,MAAQA,IAAiB,OAAS,OAASA,EAAa,MAAM,aAChH,GAAIG,GAAa,MAAQC,GAAgB,KAAM,CAE7C,KAAK,SAAS,CACZ,YAAa,CAACH,EACd,QAAS,GACT,UAAW,GACX,aAAc,GACd,eAAgB,GAChB,yBAA0B,EAClC,CAAO,EACD,MACD,CAED,GAAI,CACF,MAAA30B,CACN,EAAQ,KAAK,MACL,CACF,KAAA+G,EACA,KAAA1C,CACN,EAAQrE,EAAM,QAAQ80B,CAAY,EAC1BC,EAAY/0B,EAAM,aAAa80B,EAAcD,CAAS,EACtDvpB,EAAOc,EAAc,mBAAmB2oB,EAAW1wB,CAAI,EAC3D,KAAK,SAAS,CACZ,YAAa,CAACswB,EACd,QAAS,GAAG,OAAOE,EAAY,CAAC,EAChC,UAAWvpB,EACX,4BAA6BvE,EAC7B,aAAc,GACd,eAAgB,GAChB,yBAA0B,EAChC,CAAK,CACF,CACD,eAAgB,CACd,IAAI0E,EAAS,KACb,OAAOlB,GAAkB,WAAa,CACpC,IAAIyqB,EAAWC,EACX,CACF,MAAAj1B,CACR,EAAUyL,EAAO,MACX,GAAI,CAACge,GAAoBzpB,CAAK,GAAK,CAACA,EAAM,WACxC,MAAM,IAAI,MAAM,oCAAoC,EAEtD,GAAI,CACF,mBAAAk1B,CACR,EAAUzpB,EAAO,MACX,GAAIypB,GAAsB,KACxB,MAAM,IAAI,MAAM,0BAA0B,EAE5C,IAAIC,GAA8BH,EAAY,YAAc,MAAQA,IAAc,SAAmBC,EAAwBD,EAAU,iBAAmB,MAAQC,IAA0B,OAAjG,OAAmHA,EAAsB,UAAU,SAAS,uBAAuB,EAC9Q,GAAIE,GAA8B,MAAQA,EAA4B,CACpE,IAAIC,EACJ,GAAI,SAAS,eAAiB,MAAQ,SAAS,cAAc,UAAU,SAAS,OAAO,EACrF,MAAM,IAAIC,GAAgB,0BAA0B,GAIrDD,EAAc3pB,EAAO,QAAU,MAAQ2pB,IAAgB,QAAkBA,EAAY,MAAK,CAC5F,CACD,IAAIE,EAAwB7pB,EAAO,QAAQ,IAAIzL,EAAM,cAAa,CAAE,EAAE,KAAK,IAAM,CAC/EyL,EAAO,SAAS,CACd,iBAAkB,KAClB,mBAAoB,IAC9B,CAAS,CACT,CAAO,EAAE,MAAMd,GAAO,CACT/J,GAAa,WAAW+J,CAAG,GAC9Bc,EAAO,SAAS,CACd,iBAAkBd,EAClB,mBAAoB,IAChC,CAAW,CAEX,CAAO,EACD,OAAAc,EAAO,SAAS,CACd,mBAAoB6pB,CAC5B,CAAO,EACMA,CACR,CAAA,GACF,CACD,gBAAiB,CACf,IAAIC,EAAS,KACb,OAAOhrB,GAAkB,WAAa,CACpC,GAAI,CACF,mBAAA2qB,CACR,EAAUK,EAAO,MACX,GAAIL,GAAsB,KACxB,MAAM,IAAI,MAAM,kCAAkC,EAEpDK,EAAO,SAAS,CACd,mBAAoB,KACpB,iBAAkB,KAClB,eAAgB,IAAI,IACpB,kBAAmB,IAAI,GAC/B,CAAO,CACF,CAAA,GACF,CAMD,aAAat6B,EAAQ,CACnB,GAAI,CACF,iBAAAu6B,CACN,EAAQ,KAAK,MACTA,EAAiBv6B,CAAM,CACxB,CAKD,WAAWoF,EAAa8sB,EAAU,CAChC,IAAIsI,EAAU,KAAK,cAActI,CAAQ,EACrC,CACF,eAAAuI,CACN,EAAQ,KAAK,MACTA,EAAevI,EAAUsI,CAAO,CACjC,CAOD,cAActI,EAAU,CA8BtB,QA7BIwI,EAAS,KACT,CACF,MAAA31B,CACN,EAAQ,KAAK,MACL,CACF,QAAAwG,EACA,eAAAovB,CACD,EAAG51B,EACAy1B,EAAU,CAAA,EACVnzB,EAAQ,UAAiB,CAC3B,IAAIrH,EAASuL,EAAQtK,CAAC,EAClB,CACF,KAAA6K,EACA,KAAA1C,CACD,EAAGpJ,EACAtB,EAAQqG,EAAM,aAAa9D,EAAGixB,CAAQ,EACtC7hB,EAAOtL,EAAM,YAAY9D,EAAGixB,CAAQ,EACpCsF,EAAekD,EAAO,iBAAiBz5B,CAAC,EACxC25B,EAAejkB,GAAsB5R,CAAK,GAAKA,EAAM,gBAAgBmtB,CAAQ,EAC7E2I,EAAYF,EAAe,KAAKljB,GAAKA,EAAE,OAAS3L,CAAI,GAAK,KAC7D0uB,EAAQ1uB,CAAI,EAAI,CACd,MAAApN,EACA,KAAA2R,EACA,KAAAjH,EACA,UAAAyxB,EACA,aAAAD,EACA,aAAApD,CACR,CACA,EACav2B,EAAI,EAAGA,EAAIsK,EAAQ,OAAQtK,GAAK,EACvCoG,IAEF,OAAOmzB,CACR,CACD,2BAA2Bx6B,EAAQoE,EAAQY,EAAS,CAClD,GAAI,CACF,MAAAD,CACN,EAAQ,KAAK,MACLQ,EAAQR,EAAM,qBAAqB/E,EAAO,IAAI,EAClDqF,EAAcE,CAAK,EACnB,KAAK,kBAAkBA,EAAOnB,EAAQY,CAAO,CAC9C,CACD,+BAA+BhF,EAAQyG,EAAW,CAChD,IAAIq0B,EACAz0B,EAAgB,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GACpF,CACF,MAAAtB,CACN,EAAQ,KAAK,MACLK,EAAcL,EAAM,qBAAqB/E,EAAO,IAAI,EACxDqF,EAAcD,CAAW,EACzB,IAAId,EAAaS,EAAM,QAAQK,CAAW,EAAE,KACxC21B,EAAUv7B,EAAW,iBAAiBuF,EAAM,KAAMT,CAAU,EAC5D02B,EAAU,MACVD,GAAW,MAAQA,EAAQ,YAAct0B,KACvCA,IAAcjH,EAAW,cAAc,WACzCw7B,EAAUh7B,EAAO,KAAM,EAAC,KAAI,EAE5Bg7B,EAAUh7B,EAAO,KAAM,EAAC,IAAG,GAG/B,IAAIwU,EAAQhV,EAAW,iBAAiBuF,EAAM,KAAMT,EAAY02B,EAAS30B,CAAa,EACtFnH,EAAI,KAAK,sBAAuBsV,CAAK,EACrC,KAAK,aAAa,YAAY,EAC9B,KAAK,SAAS,CACZ,MAAAA,CACN,CAAK,GACAsmB,EAAe,KAAK,QAAU,MAAQA,IAAiB,QAAkBA,EAAa,YAAW,CACnG,CACD,0BAA2B,CACzB,IAAIG,GACHA,EAAe,KAAK,QAAU,MAAQA,IAAiB,QAAkBA,EAAa,MAAK,CAC7F,CACD,yBAAyBj7B,EAAQ,CAC/B,KAAK,SAAS,CACZ,oBAAqBA,CAC3B,CAAK,CACF,CACD,qBAAsB,CACpB,KAAK,SAAS,CACZ,YAAa,GACb,yBAA0B,EAChC,CAAK,CACF,CACD,qBAAsB,CACpB,KAAK,SAAS,CACZ,YAAa,GACb,yBAA0B,EAChC,CAAK,CACF,CACD,yBAAyBoF,EAAa,CACpC,IAAI81B,EACA,CACF,uBAAAC,EACA,iBAAA9R,CACN,EAAQ,KAAK,MACT,GAAIA,GAAoB8R,IAA2B/1B,KAAiB81B,EAAuB,KAAK,kBAAoB,MAAQA,IAAyB,OAAS,OAASA,EAAqB,WAAa,KAAM,CAC7M,IAAIE,GACHA,EAAwB,KAAK,kBAAoB,MAAQA,IAA0B,QAAkBA,EAAsB,QAAQ,MAAK,EACzI,KAAK,SAAS,CACZ,oBAAqB,IAC7B,CAAO,CACP,MACM,KAAK,SAAS,CACZ,uBAAwB,KACxB,oBAAqB,IAC7B,CAAO,CAEJ,CACD,cAAe,CACb,KAAK,SAAQ,CACd,CAGD,mBAAoB,CAEnB,CACD,kBAAkBnK,EAAU,CAC1B,GAAI,CACF,MAAAlsB,EACA,cAAAs2B,CACN,EAAQ,KAAK,MACTA,EAAcpK,EAAUlsB,CAAK,CAC9B,CACD,gBAAgBZ,EAAO,CACrBjF,EAAI,KAAK,aAAciF,CAAK,EAC5B,KAAK,SAAS,CACZ,aAA2B9C,EAAI,IAAC,MAAO,CACrC,UAAW,gBACX,SAAU,GAAG,OAAO8C,CAAK,CACjC,CAAO,CACP,CAAK,CACF,CACD,sBAAsBzF,EAAO,CAC3B,KAAK,aAAa,eAAgB,CAChC,YAAa,EACnB,CAAK,EACD,KAAK,SAAS48B,GAAU,CACtB,GAAI,CACF,uBAAAH,EACA,aAAA7S,CACD,EAAGgT,EACA1I,EAAkB,IAAI,IAAItK,CAAY,EAC1C,GAAI6S,GAA0B,KAAM,CAClC,IAAIxqB,EAAa,KAAK,eAAewqB,CAAsB,EAC3D91B,EAAcsL,CAAU,EACxB,KAAK,iBAAiBA,EAAYjS,EAAOk0B,CAAe,CACzD,CACD,MAAO,CACL,aAAcA,CACtB,CACA,CAAK,CACF,CACD,qBAAsB,CACpB,IAAIxgB,EAAe,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GACnFC,EAAe,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GACvF,GAAID,EAAc,CAChB,IAAImpB,GACHA,EAAe,KAAK,QAAU,MAAQA,IAAiB,QAAkBA,EAAa,MAAK,CAC7F,CACGlpB,GACF,KAAK,SAAS,CACZ,uBAAwB,IAChC,CAAO,CAEJ,CACD,mBAAmBG,EAAU,CAC3B,GAAI,CACF,uBAAA2oB,CACN,EAAQ,KAAK,MACT91B,EAAc81B,CAAsB,EAChC3oB,EACF,KAAK,eAAe2oB,EAAyB,CAAC,EAE9C,KAAK,eAAeA,EAAyB,CAAC,CAEjD,CACD,sBAAsBxqB,EAAY6qB,EAAgB,CAChD,GAAI,CACF,MAAAz2B,CACN,EAAQ,KAAK,MACL/E,EAAS+E,EAAM,QAAQ4L,CAAU,EACjC,CACF,sBAAuB8qB,CAC7B,EAAQ,KAAK,MACL9M,EAAwB,IAAI,IAAI8M,CAAyB,EAC7D,GAAID,GAAkB,KAAM,CAC1B,IAAI5U,EAAiBpnB,EAAW,kBAAkBQ,EAAO,IAAI,EAC7DqF,EAAcuhB,CAAc,EAC5B,IAAI8U,EAAuB3K,GAAU,yBAAyBnK,EAAgB5mB,EAAO,KAAMw7B,CAAc,EACzG7M,EAAsB,IAAI3uB,EAAO,KAAM07B,CAAoB,CACjE,MACM/M,EAAsB,OAAO3uB,EAAO,IAAI,EAE1C,KAAK,gBAAgB,CACnB,sBAAA2uB,CACN,CAAK,CACF,CACD,WAAW,EAAG,CACZ,EAAE,gBAAe,EACjB,KAAK,SAAS,CACZ,YAAa,EACnB,CAAK,CACF,CACD,iBAAkB,CAChB,KAAK,SAAS,CACZ,YAAa,GACb,YAAa,CAAE,CACrB,CAAK,CACF,CACD,gBAAiB,CACf,KAAK,SAASgN,GAAU,CACtB,GAAI,CACF,YAAA9J,CACD,EAAG8J,EACAC,EAAa,CAAC,GAAG/J,CAAW,EAChC,OAAA+J,EAAW,IAAG,EACP,CACL,YAAaA,CACrB,CACA,CAAK,CACF,CACD,iBAAiB1yB,EAAQ,CACvB,KAAK,SAAS2yB,GAAU,CACtB,GAAI,CACF,YAAAhK,CACD,EAAGgK,EACJ,MAAO,CACL,YAAa,CAAC,GAAGhK,EAAa3oB,CAAM,CAC5C,CACA,CAAK,CACF,CACD,oBAAoBvI,EAAO,CACzB,GAAI,CACF,OAAQwD,CACT,EAAGxD,EACJzB,EAAI,MAAM,kBAAmBiF,CAAK,EAClC,KAAK,YAAW,EAChB,GAAI,CACF,gBAAAgR,CACN,EAAQ,KAAK,MACT,GAAI2mB,GAAwB33B,CAAK,GAAKgR,GAAmB,KAEvD,KAAK,aAAa,yBAA0B,CAC1C,YAAa,EACrB,CAAO,EACD,KAAK,SAAS,CACZ,gBAAiB,MACzB,EAAS,IAAM,CACP,KAAK,UAAS,CACtB,CAAO,UACQ,KAAK,cACd,KAAK,aAAa,0BAA2B,CAC3C,YAAa,EACrB,CAAO,EACD,KAAK,SAAQ,MACR,CACLjW,EAAI,MAAM,qCAAqC,EAC/C,GAAI,CACF,QAAAi5B,CACR,EAAU,KAAK,MACTA,EAAQ,IAAI,MAAM,2BAA2B,OAAOh0B,CAAK,CAAC,CAAC,CAC5D,CACF,CACD,cAAe,CACb,IAAI43B,EACJ78B,EAAI,OAAO,uBAAuB,EAClC,GAAI,CACF,gBAAAkpB,EACA,oBAAAC,EACA,cAAA5T,EACA,aAAA6T,EACA,QAAA1U,EACA,aAAAe,EACA,aAAA4C,EACA,sBAAA1C,EACA,MAAAL,CACN,EAAQ,KAAK,MACLxM,EAAS,CACX,gBAAAogB,EACA,oBAAAC,EACA,cAAA5T,EACA,aAAA6T,EACA,QAAA1U,EACA,aAAAe,EACA,aAAA4C,EACA,sBAAA1C,EACA,MAAAL,CACN,EACS2T,GAAcngB,CAAM,EAGvB,KAAK,iBAAmB,KAFxB,KAAK,iBAAmBA,GAIzB+zB,EAAe,KAAK,QAAU,MAAQA,IAAiB,QAAkBA,EAAa,YAAW,EAClG,KAAK,YAAW,CACjB,CACD,kBAAkBzJ,EAAS,CACzB,IAAI0J,EAAkBC,EAClB,CACF,MAAAl3B,CACN,EAAQ,KAAK,MACL,CACF,gBAAAm3B,EAAkB,CACxB,GAASF,GAAoBC,EAAe,KAAK,QAAU,MAAQA,IAAiB,OAAS,OAASA,EAAa,SAAW,MAAQD,IAAqB,OAASA,EAAmB,GAC/KrtB,EAAkB,EACtB,GAAI6f,GAAoBzpB,CAAK,GAAKA,EAAM,WAAY,CAClDM,EAAcitB,CAAO,EACrB,GAAI,CACF,eAAA6J,CACD,EAAG7J,EAIA8J,EAAoBr3B,EAAM,SAAWA,EAAM,uBAC3Cm3B,IAAoBE,EAAoB,EAE1CztB,EAAkB5J,EAAM,gBAAkB,EACjCm3B,IAAoBE,EAAoB,EAEjDztB,EAAkB5J,EAAM,gBAGxB4J,EAAkB,KAAK,IAAI,EAAGwtB,GAAkBp3B,EAAM,SAAWA,EAAM,iBAAmBA,EAAM,oBAAsBA,EAAM,uBAAyB,CAAC,CAEzJ,CACD,KAAK,SAAS,CACZ,QAAAutB,EACA,gBAAA3jB,CACN,CAAK,CACF,CACD,uBAAuB8E,EAAgB,CACrC,IAAI4oB,EACJh3B,EAAcoO,CAAc,EAC5B,GAAI,CACF,mBAAA6oB,CACN,EAAQ,KAAK,MACL,CACF,cAAA1sB,CACN,EAAQ,KAAK,MACT,KAAK,SAAS,CACZ,eAAA6D,CACN,CAAK,EACG7D,GAAiB,MACnB,KAAK,SAAS,CACZ,cAAe,IACvB,CAAO,IAEGysB,EAAe,KAAK,QAAU,MAAQA,IAAiB,OAAS,OAASA,EAAa,MAAM,YAAc,MAC9G,KAAK,SAAS,CACZ,QAAS,GAAG,OAAO,KAAK,KAAK,MAAM,UAAY,CAAC,CACxD,CAAO,EAEHC,EAAmB7oB,CAAc,CAClC,CACD,0BAA0B/C,EAAc6rB,EAAiB,CACvD,KAAK,SAAS,CACZ,aAAA7rB,CACD,EAAE6rB,CAAe,CACnB,CACD,0BAA0BrnB,EAAoB,CAC5C,GAAI,CACF,MAAAnQ,CACN,EAAQ,KAAK,MACT,KAAK,SAAS,CACZ,mBAAoBoM,EAAc,wBAAwBpM,EAAOmQ,CAAkB,EAAE,MAC3F,EAAO,IAAM,CACP,IAAIsnB,EACJ,OAAQA,EAAe,KAAK,QAAU,MAAQA,IAAiB,OAAS,OAASA,EAAa,YAAW,CAC/G,CAAK,CACF,CACD,iBAAiBC,EAAS,CAEpBA,GAAW,MACbA,EAAQ,WAAU,EAEpB,KAAK,QAAUA,CAChB,CACD,+BAA+B/N,EAAoB,CACjDxvB,EAAI,MAAM,8BAA+BwvB,CAAkB,EAC3D,KAAK,SAAS,CACZ,mBAAAA,CACN,CAAK,CACF,CACD,+BAAgC,CAC9BxvB,EAAI,MAAM,+BAA+B,EACzC,GAAI,CACF,YAAA2yB,EACA,mBAAAnD,CACN,EAAQ,KAAK,MACT,KAAK,SAAS,CACZ,YAAa,CAAC,GAAGmD,EAAa,CAC5B,KAAMjI,EAAW,4BACjB,MAAO,wBACf,CAAO,EACD,2BAA4B8E,EAAmB,OAE/C,yBAA0B,MAChC,CAAK,CACF,CACD,4BAA4BnpB,EAAO,CACjCrG,EAAI,MAAM,0BAA2BqG,CAAK,EAC1C,GAAI,CACF,YAAAssB,EACA,mBAAAnD,CACN,EAAQ,KAAK,MACT,KAAK,SAAS,CACZ,YAAa,CAAC,GAAGmD,EAAa,CAC5B,KAAMjI,EAAW,4BACjB,MAAO,sBACf,CAAO,EACD,2BAA4BrkB,EAE5B,yBAA0BwT,GAAc,CAAA,EAAI2V,EAAmBnpB,CAAK,CAAC,CAC3E,CAAK,CACF,CAID,kCAAkCyC,EAAQ,CACxC9I,EAAI,MAAM,kCAAmC8I,CAAM,EACnD,KAAK,SAAS4pB,GAAS,CACrB,GAAIA,EAAM,6BAA+B,KACvC,OAAA1yB,EAAI,MAAM,sBAAsB,EACzB,KAET,IAAIwvB,EAAqB,CAAC,GAAGkD,EAAM,kBAAkB,EACrD,OAAAlD,EAAmBkD,EAAM,0BAA0B,EAAI5pB,EAChD,CACL,mBAAA0mB,CACR,CACA,EAAO,IAAM,CACP,KAAK,eAAc,CACzB,CAAK,CACF,CACD,qCAAsC,CACpC,KAAK,eAAc,EAGnB,KAAK,SAAS,CACZ,2BAA4B,IAClC,CAAK,CACF,CACD,0BAA0Bja,EAAe,CACvCvV,EAAI,KAAK,6BAA8BuV,CAAa,EACpD,GAAI,CACF,MAAA1P,CACN,EAAQ,KAAK,MACL,CACF,aAAA2L,EACA,MAAA8D,EACA,aAAA8T,EACA,gBAAAF,EACA,sBAAAvT,CACN,EAAQ,KAAK,MACL,CACF,QAAAtJ,CACD,EAAGxG,EACA23B,EAAmB33B,EAAM,cAAc,IAAI43B,GAAgB,GAAG,OAAOA,CAAY,CAAC,EAClFC,EAAqBzrB,EAAc,4BAA4BurB,EAAkBjoB,CAAa,EAClG,GAAImoB,EAAmB,OAAS,EAAG,CACjC,IAAIC,EAAW1rB,EAAc,qBAAqBqD,EAAOooB,CAAkB,EACvEhK,EAAkBzhB,EAAc,uBAAuB5F,EAAS+c,EAAcsU,CAAkB,EAChGjK,EAAqBxhB,EAAc,uBAAuB5F,EAAS6c,EAAiBwU,CAAkB,EACtGnF,EAAkBtmB,EAAc,6BAA6B5F,EAASmF,EAAcksB,CAAkB,EACtGE,EAA2B3rB,EAAc,uCAAuC0D,EAAuB+nB,CAAkB,EACzHC,EAAS,SAAWroB,EAAM,SAC5BtV,EAAI,MAAM,+CAA+C,EACzD,KAAK,SAAS,CACZ,MAAO29B,CACjB,CAAS,IAECjK,EAAgB,OAAStK,EAAa,MAAQqK,EAAmB,OAASvK,EAAgB,QAC5FlpB,EAAI,MAAM,iDAAiD,EAC3D,KAAK,SAAS,CACZ,aAAc0zB,EACd,gBAAiBD,CAC3B,CAAS,GAEExX,GAAUzK,EAAc+mB,CAAe,IAC1Cv4B,EAAI,MAAM,kDAAmDu4B,CAAe,EAC5E,KAAK,SAAS,CACZ,aAAcA,CACxB,CAAS,GAEEtc,GAAUtG,EAAuBioB,CAAwB,IAC5D59B,EAAI,MAAM,2DAA4Du4B,CAAe,EACrF,KAAK,SAAS,CACZ,sBAAuBqF,CACjC,CAAS,EAEJ,CACD,KAAK,SAAS,CACZ,cAAAroB,CACN,CAAK,EACGA,EAAc,OAAS,GAGzB,KAAK,aAAa,4BAA4B,CAEjD,CACD,4BAA6B,CAC3BvV,EAAI,MAAM,wBAAwB,EAClC,GAAI,CACF,QAAA69B,CACN,EAAQ,KAAK,MACT,GAAIA,EAAS,CACX,IAAIC,EACJ,KAAK,YAAW,GACfA,EAAe,KAAK,QAAU,MAAQA,IAAiB,QAAkBA,EAAa,YAAW,CACxG,MACM,KAAK,eAAc,CAEtB,CACD,4BAA6B,CAC3B,OAAO,KAAK,eACb,CACD,6BAA8B,CAC5B,OAAO,KAAK,gBACb,CACD,0BAA2B,CACzB,IAAIC,EACJ/9B,EAAI,MAAM,sBAAsB,EAChC,GAAI,CACF,MAAA6F,CACN,EAAQ,KAAK,MACL,CACF,eAAA8I,EACA,kBAAAD,CACD,EAAG7I,EACJ,KAAK,SAAS,CACZ,eAAA8I,EACA,kBAAAD,EACA,iBAAkB,IACxB,CAAK,GACAqvB,EAAe,KAAK,QAAU,MAAQA,IAAiB,QAAkBA,EAAa,YAAW,CACnG,CACD,mBAAmBtsB,EAAY,CAC7B,IAAIusB,EACA,CACF,QAAA5K,EACA,iBAAA9H,CACN,EAAQ,KAAK,MACT,GAAI,CAAC8H,EAAS,MAAM,IAAI,MAAM,iBAAiB,EAC/C,IAAI6K,EAAepF,GAAWzF,EAAQ,oBAAqB3hB,CAAU,EACjEysB,EAAa5S,EAAiB,sBAC9B4S,EAAW,IAAIzsB,CAAU,GAC3B6Z,EAAiB,iBAAiB7Z,CAAU,EAC5C6Z,EAAiB,yBAAyB7Z,EAAYwsB,CAAY,GAElE3S,EAAiB,eAAe7Z,EAAYwsB,CAAY,GAEzDD,EAAe,KAAK,QAAU,MAAQA,IAAiB,QAAkBA,EAAa,YAAW,CACnG,CACD,wBAAyB,CACvB,IAAIG,EACA,CACF,QAAA/K,EACA,iBAAA9H,CACN,EAAQ,KAAK,MACT,GAAI,CAAC8H,EAAS,MAAM,IAAI,MAAM,iBAAiB,EAC/C,IAAIgL,EAAa,CAAC,GAAGhL,EAAQ,gBAAgB,QAAS,CAAA,EAClDiL,EAAiBD,EAAW,OAAOE,GAAU,CAC/C,GAAI,CAACrjB,EAAGsjB,CAAK,EAAID,EACjB,OAAOC,IAAU,CACvB,CAAK,EAAE,IAAIC,GAAU,CACf,GAAI,CAAC/sB,CAAU,EAAI+sB,EACnB,OAAO/sB,CACb,CAAK,EACGgtB,EAAgBrL,EAAQ,oBACxB8K,EAAa5S,EAAiB,sBAC9BoT,EAAgBL,EAAe,OAAO5sB,GAAcysB,EAAW,IAAIzsB,CAAU,CAAC,EAClF,GAAI4sB,EAAe,SAAWK,EAAc,OAE1C,QAAS38B,EAAI,EAAGA,EAAIs8B,EAAe,OAAQt8B,GAAK,EAAG,CACjD,IAAI0P,EAAa4sB,EAAet8B,CAAC,EAC7Bk8B,EAAepF,GAAW4F,EAAehtB,CAAU,EACvD6Z,EAAiB,iBAAiB7Z,CAAU,EAC5C6Z,EAAiB,yBAAyB7Z,EAAYwsB,CAAY,CACnE,KAGD,SAASU,EAAM,EAAGA,EAAMN,EAAe,OAAQM,GAAO,EAAG,CACvD,IAAIC,EAAcP,EAAeM,CAAG,EAChCE,EAAgBhG,GAAW4F,EAAeG,CAAW,EACzDtT,EAAiB,eAAesT,EAAaC,CAAa,CAC3D,EAEFV,EAAe,KAAK,QAAU,MAAQA,IAAiB,QAAkBA,EAAa,YAAW,CACnG,CAMD,yBAAyBhV,EAAqB,CAC5CnpB,EAAI,MAAM,2BAA4BmpB,CAAmB,EACzD,KAAK,aAAa,eAAe,OAAOA,EAAoB,aAAa,IAAI0C,GAAKA,EAAE,SAAS,EAAE,KAAK,IAAI,EAAG,KAAK,CAAC,EACjH,KAAK,SAAS,CACZ,oBAAA1C,CACN,CAAK,CACF,CAMD,wBAAwB2V,EAAa,CACnC9+B,EAAI,MAAM,0BAA2B8+B,CAAW,EAChD,KAAK,aAAa,eAAe,OAAOA,EAAY,UAAW,KAAK,CAAC,EACrE,KAAK,SAASC,GAAU,CACtB,GAAI,CACF,oBAAA5V,CACD,EAAG4V,EACJ,MAAO,CACL,oBAAqBD,EACrB,oBAAqBjlB,GAAcA,GAAc,CAAE,EAAEsP,CAAmB,EAAG,CAAA,EAAI,CAC7E,aAAcA,EAAoB,aAAa,IAAI,GAAK,EAAE,YAAc2V,EAAY,UAAYA,EAAc,CAAC,CACzH,CAAS,CACT,CACA,CAAK,CACF,CAMD,sBAAsBA,EAAa,CACjC9+B,EAAI,MAAM,wBAAyB8+B,CAAW,EAC9C,GAAI,CACF,YAAAnM,CACN,EAAQ,KAAK,MACT,KAAK,SAAS,CACZ,YAAa,CAAC,GAAGA,EAAa,CAC5B,KAAMjI,EAAW,iBACjB,MAAO,mBAAmB,OAAOoU,EAAY,SAAS,CAC9D,CAAO,EACD,oBAAqBA,CAC3B,CAAK,CACF,CACD,mBAAmBrpB,EAAc,CAC/B,IAAIupB,EAAuBC,EAC3Bj/B,EAAI,KAAK,gBAAiByV,CAAY,EACtC,KAAK,mBAAkB,EACvB,KAAK,eAAc,EACnB,KAAK,gBAAe,EACpB,KAAK,aAAa,uBAAuB,QAAQupB,EAAwBvpB,GAAiB,OAA4CwpB,EAAyBxpB,EAAa,WAAa,MAAQwpB,IAA2B,OAAhG,OAAkHA,EAAuB,KAAK,IAAI,KAAO,MAAQD,IAA0B,OAASA,EAAwB,GAAI,KAAK,CAAC,EAKlW,KAAK,SAAS,CACZ,aAAAvpB,EACA,aAAc,CAAE,EAChB,cAAe,CAAE,EACjB,MAAO,CAAE,EACT,QAAS,GACT,sBAAuB,CAAE,CAC/B,CAAK,CACF,CACD,4BAA4B8M,EAAa,CACvCviB,EAAI,MAAM,wBAAyBuiB,CAAW,EAC9C,KAAK,mBAAkB,EACvB,KAAK,eAAc,EACnB,KAAK,gBAAe,EACpB,KAAK,aAAa,gCAAgC,OAAOA,EAAY,OAAS,EAAIA,EAAY,KAAK,IAAI,EAAI,GAAI,KAAK,CAAC,EACrH,KAAK,SAAS,CACZ,sBAAuBA,EACvB,aAAc,CAAE,EAChB,MAAO,CAAE,EACT,QAAS,EACf,CAAK,CACF,CACD,0BAA2B,CACzB,GAAI,CACF,eAAA8H,CACN,EAAQ,KAAK,MACLA,EACF,KAAK,SAAS,CACZ,mBAAoB,GACpB,sBAAuB,EACvB,2BAA4B,KAC5B,oBAAqBuE,GAAiB,gBAAgB,UAC9D,CAAO,EAED5uB,EAAI,MAAM,iFAAiF,CAE9F,CACD,oBAAoBk/B,EAAUC,EAAaC,EAAmBC,EAAgBntB,EAAaotB,EAAsBC,EAAsB,CACrI,GAAI,CACF,eAAAlV,CACN,EAAQ,KAAK,MACLA,GACFrqB,EAAI,KAAK,0BAA2Bk/B,EAAUC,EAAaC,EAAmBC,EAAgBntB,EAAaotB,EAAsBC,CAAoB,EACrJ,KAAK,SAAS,KACR,KAAK,YACP,KAAK,WAAW,cAAcL,EAAUC,EAAaC,EAAmBC,EAAgBntB,EAAaotB,EAAsBC,CAAoB,EAE1I,CACL,oBAAqB3Q,GAAiB,gBAAgB,WAChE,EACO,GAED5uB,EAAI,MAAM,4EAA4E,CAEzF,CAKD,yBAA0B,CACxBA,EAAI,MAAM,yBAAyB,EACnC,KAAK,SAASw/B,GAAU,CACtB,GAAI,CACF,oBAAArW,CACD,EAAGqW,EACA,CACF,aAAAjU,CACD,EAAGpC,EACAsW,EAAkBlU,EAAa,OAAOM,GAAKA,EAAE,SAAS,OAAS,GAAKA,EAAE,MAAM,EAChF,OAAI4T,EAAgB,SAAWlU,EAAa,OACnC,CACL,oBAAqB,KACrB,oBAAqB1R,GAAcA,GAAc,CAAE,EAAEsP,CAAmB,EAAG,CAAA,EAAI,CAC7E,aAAcsW,CAC1B,CAAW,CACX,EAEa,CACL,oBAAqB,KACrB,oBAAAtW,CACR,CACA,CAAK,CACF,CACD,QAAQuW,EAAa,CACnB,IAAIC,EAAa,UACfC,EAAS,KACX,OAAOxvB,GAAkB,WAAa,CACpC,IAAIyvB,EACAC,EAAcH,EAAW,OAAS,GAAKA,EAAW,CAAC,IAAM,OAAYA,EAAW,CAAC,EAAI,GACrF,CACF,4BAA6BI,EAC7B,wBAAAC,CACR,EAAUJ,EAAO,MACP,CACF,MAAA/5B,CACR,EAAU+5B,EAAO,MACP,CACF,GAAA98B,CACD,EAAG+C,EACJ,GAAKA,EAAM,oBAGP65B,IAAgB,GAGpB,KAAIhe,EAAiBzP,EAAc,gBAAgBpM,EAAM,QAASk6B,CAAkB,EACpF,GAAIre,IAAmB,OAGvB,KAAIue,GAAiBJ,EAAcD,EAAO,QAAU,MAAQC,IAAgB,OAAS,OAASA,EAAY,MAAM,UAC5GI,GAAiB,OACnBA,EAAgB,GAElB,IAAIC,EAAaF,IAA4B9X,GAAW,UAAY8X,IAA4B9X,GAAW,mBACvGiY,EAAeH,IAA4B9X,GAAW,cAAgB8X,IAA4B9X,GAAW,mBACjH,GAAI,CACF,IAAIkY,EACA,CACF,UAAAz+B,CACD,EAAGkE,EACAw6B,EAAiB//B,EAAW,kBAAkBohB,EAAe,IAAI,EACjEsR,EACJ,OAAQqN,EAAc,CACpB,KAAK//B,EAAW,SAAS,KACzB,KAAKA,EAAW,SAAS,OACvB,CACE0yB,EAAW,MAAMntB,EAAM,QAAQo6B,EAAeve,EAAgB5e,EAAG,UAAU,OAAQ48B,EAAaS,EAAcD,EAAYJ,GAA+D,EAAK,EAC9L,KACD,CACH,KAAKx/B,EAAW,SAAS,SACvB,CACE,GAAI,CAACggC,CAAS,EAAInzB,GAAU,eAAerK,EAAI48B,EAAa/9B,EAAU,QAAQ,EAC9EqxB,EAAW,MAAMntB,EAAM,QAAQo6B,EAAeve,EAAgB5e,EAAG,UAAU,SAAUw9B,EAAW,OAAW,OAAWR,GAA+D,EAAK,EAC1L,KACD,CACH,KAAKx/B,EAAW,SAAS,QACzB,KAAKA,EAAW,SAAS,IACvB,CACE,GAAI,CAACA,EAAW,iBAAiBohB,EAAe,IAAI,GAAK,CAACphB,EAAW,iBAAiBohB,EAAe,IAAI,EAAG,CAC1G,IAAI6e,EAAa,SAASb,EAAa,EAAE,EACrCA,IAAgB,YAClBa,EAAa,OAAO,kBACXb,IAAgB,aACzBa,EAAa,OAAO,mBAEtBvN,EAAW,MAAMntB,EAAM,QAAQo6B,EAAeve,EAAgB5e,EAAG,UAAU,OAAQy9B,EAAY,OAAW,OAAWT,GAA+D,EAAK,CACzM,MACgB9M,EAAW,MAAMntB,EAAM,QAAQo6B,EAAeve,EAAgB5e,EAAG,UAAU,OAAQ48B,EAAa,OAAW,OAAWI,GAA+D,EAAK,EAE5L,KACD,CACH,QAEI9M,EAAW,MAAMntB,EAAM,QAAQo6B,EAAeve,EAAgB5e,EAAG,UAAU,OAAQ88B,EAAO,WAAW,UAAUle,EAAe,KAAMge,EAAa/9B,EAAU,QAAQ,EAAG,OAAW,OAAWm+B,GAA+D,EAAK,CAErQ,EACAM,EAAeR,EAAO,QAAU,MAAQQ,IAAiB,QAAkBA,EAAa,YAAYpN,CAAQ,EAC7G4M,EAAO,SAAS,CACd,eAAgB,EAC1B,CAAS,CACF,MAAW,CACVA,EAAO,SAAS,CACd,eAAgB,eAC1B,CAAS,CACF,GACF,CAAA,GACF,CACD,2BAA4B,CAC1B,IAAIY,GACHA,EAAmB,KAAK,cAAgB,MAAQA,IAAqB,QAAkBA,EAAiB,eAAc,EACvH,KAAK,SAAS,CACZ,mBAAoB,EAC1B,CAAK,CACF,CACD,yBAA0B,CACxB,KAAK,SAAS,CACZ,mBAAoB,GACpB,sBAAuB,IACvB,oBAAqB5R,GAAiB,gBAAgB,QAC5D,CAAK,CACF,CACD,wBAAyB,CACvB,KAAK,SAAS,CACZ,mBAAoB,GACpB,sBAAuB,EACvB,oBAAqBA,GAAiB,gBAAgB,QAC5D,CAAK,CACF,CAMD,aAAa3d,EAAQ,CACnB,GAAI,CACF,MAAApL,CACN,EAAQ,KAAK,MACT,GAAI,CAAC46B,GAAqB56B,CAAK,GAAK,CAACA,EAAM,YACzC,MAAM,IAAI,MAAM,wCAAwC,EAE1D,KAAK,QAAQ,IAAIA,EAAM,OAAOoL,CAAM,CAAC,EAAE,MAAMtQ,GAAK,CAC3C8F,GAAa,WAAW9F,CAAC,GAC5BX,EAAI,MAAM,0BAA2BiR,EAAQtQ,CAAC,CAEtD,CAAK,CACF,CACD,sBAAuB,CACrB,GAAI,KAAK,MAAQ,KAGjB,IAAI,CACF,kBAAA+rB,CACN,EAAQ,KAAK,MACT,GAAIA,EAAmB,CACrB,GAAI,CACF,oBAAAgU,CACR,EAAU,KAAK,MACT,KAAK,KAAK,SAAS,CACjB,OAAQA,CAChB,CAAO,CACP,MACM,KAAK,KAAK,SAAS,CACjB,OAAQ,IAChB,CAAO,EACD,KAAK,SAAS,CACZ,kBAAmB,IAC3B,CAAO,EAEJ,CACD,oBAAqB,CACnB,IAAI1L,EAAc,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GACjF,KAAK,OAGV,KAAK,KAAK,sBACV,KAAK,KAAK,aAAa,CACrB,KAAM,EACN,IAAK,EACL,UAAW,EACX,WAAY,CACb,EAAEA,CAAW,EACf,CACD,iBAAkB,CAChB,GAAK,KAAK,KAGV,IAAI,CACF,MAAO2L,CACR,EAAG,KACA,CACF,MAAOC,CACb,EAAQ,KAAK,KACL,CACF,cAAAC,CACN,EAAQ,KAAK,MACTA,EAAcF,EAAeC,CAAS,EACvC,CACD,qBAAsB,CACpB,KAAK,SAAS,CACZ,kBAAmB,EACzB,CAAK,CACF,CACD,iCAAiCtxB,EAAc,CAC7C,KAAK,SAAS,CACZ,2BAA4B,GAC5B,uBAAwBA,CAC9B,CAAK,CACF,CACD,mCAAoC,CAClC,KAAK,SAAS,CACZ,2BAA4B,EAClC,CAAK,CACF,CACD,uBAAwB,CACtB,IAAIwxB,EACA,CACF,QAAA1N,EACA,mBAAA2N,CACN,EAAQ,KAAK,MACT56B,EAAcitB,CAAO,EACrBjtB,EAAc46B,CAAkB,EAChC,IAAIC,GAAYF,EAAqB,KAAK,eAAiB,MAAQA,IAAuB,OAAS,OAASA,EAAmB,sBAAqB,EAChJG,EAAe,GACnB96B,EAAc66B,CAAQ,EACtB,GAAI,CACF,mBAAAE,EACA,YAAAC,EACA,gBAAAC,EACA,MAAA7C,EACA,qBAAA8C,CACD,EAAGjO,EACAkO,EAAUH,EAAY,IAAIJ,CAAkB,EAC5C1H,EAAc+H,EAAgB,IAAIL,CAAkB,EACxD56B,EAAcm7B,CAAO,EACrBn7B,EAAckzB,CAAW,EACzB,IAAIjkB,EAAO4rB,EAAS,KAAOO,GAAMD,EAAUjI,EAAc,EAAG4H,EAAc1C,EAAQ0C,CAAY,EAC9F,MAAO,CACL,IAAKD,EAAS,KAAOK,EAAuB,GAAKH,EACjD,KAAMF,EAAS,KAAOO,GAAMD,EAAUjI,EAAc,EAAG4H,EAAc1C,EAAQ0C,CAAY,EACzF,OAAQD,EAAS,IAAMK,EAAuBH,EAC9C,MAAOF,EAAS,KAAOO,GAAMD,EAAUjI,EAAc,EAAG4H,EAAc1C,EAAQ0C,CAAY,EAAI,EAC9F,MAAO,EACP,OAAQC,EACR,EAAG9rB,EACH,EAAG4rB,EAAS,IACZ,OAAQ,IAAM,CACZ,MAAM,IAAI,MAAM,iBAAiB,CAClC,CACP,CACG,CACD,sCAAuC,CACrC,GAAI,CACF,QAASQ,CACf,EAAQ,KAAK,MACT,KAAK,eAAeA,CAAS,CAC9B,CACD,eAAeA,EAAW,CACxB,GAAI,CACF,MAAA37B,CACN,EAAQ,KAAK,MACL,CACF,SAAAkL,CACD,EAAGlL,EAIJ,GAHA,KAAK,SAAS,CACZ,QAAS27B,CACf,CAAK,EACGA,IAAc,GAAI,CACpB,KAAK,SAAS,CACZ,aAAc,GACd,eAAgB,EACxB,CAAO,EACD,MACD,CACD,IAAIC,EAAS,SAASD,EAAW,EAAE,EACnC,GAAIC,EAAS1wB,GAAY0wB,EAAS,CAAC1wB,EACjC,KAAK,SAAS,CACZ,aAAc,mBACtB,CAAO,UACQ0wB,IAAW,EAAG,CACvB,IAAIC,EACJ,KAAK,SAAS,CACZ,aAAc,GACd,eAAgB,EACxB,CAAO,GACAA,EAAe,KAAK,QAAU,MAAQA,IAAiB,QAAkBA,EAAa,YAAY,CAAC,CAC1G,SAAeD,EAAS,EAAG,CACrB,IAAIE,EACJ,KAAK,SAAS,CACZ,aAAc,GACd,eAAgB,EACxB,CAAO,GACAA,EAAe,KAAK,QAAU,MAAQA,IAAiB,QAAkBA,EAAa,YAAYF,EAAS1wB,CAAQ,CAC1H,KAAW,CACL,IAAI6wB,GACHA,EAAe,KAAK,QAAU,MAAQA,IAAiB,QAAkBA,EAAa,YAAYH,EAAS,CAAC,EAC7G,KAAK,SAAS,CACZ,aAAc,GACd,eAAgB,EACxB,CAAO,CACF,CACF,CACD,sCAAsChgC,EAAO,CAC3C,IAAI+/B,EAAY//B,EAAM,OAAO,MAC7B,KAAK,eAAe+/B,CAAS,CAC9B,CACD,iBAAiBlJ,EAAclF,EAASvtB,EAAO,CAC7C,GAAI,CACF,mBAAAq7B,EACA,qBAAAG,EACA,YAAAF,EACA,gBAAAC,EACA,MAAA7C,CACD,EAAGnL,EACAkO,EAAUH,EAAY,IAAI7I,CAAY,EACtCe,EAAc+H,EAAgB,IAAI9I,CAAY,EAClD,GAAIgJ,GAAW,MAAQjI,GAAe,KACpC,OAAO,KAUT,IAAIwI,EAAc,KAAK,IAAI,EAAGP,CAAO,EACjCQ,EAAezI,EACfiI,EAAUjI,EAAckF,EAE1BuD,EAAevD,EAAQ+C,EACdA,EAAU,IAEnBQ,EAAezI,EAAc,KAAK,IAAIiI,CAAO,GAE/C,IAAIxS,EAAe,CACjB,SAAU,WACV,KAAMuS,EAAuB,GAAKH,EAClC,KAAMW,EACN,MAAOC,EACP,OAAQZ,EACR,cAAe,MACrB,EAUQa,EAAmB,CACrB,YAAa,EACb,aAAcb,EACd,sBAAuB,KAAK,qBAClC,EACQnS,EAAgB,CAClB,UAAW,SACX,UAAW,CACT,KAAM,CACJ,SAAU,CAAC,SAAU,KAAK,CAC3B,CACF,CACP,EACQmE,EAAc,KAAK,eAAeoF,CAAY,EAClD,GAAIpF,GAAe,KAAM,OAAO,KAChC,IAAIpyB,EAAS+E,EAAM,QAAQqtB,CAAW,EACtC,OAAIpyB,GAAU,KAAa,KACPqB,EAAAA,IAAK,MAAO,CAC9B,MAAO2sB,EACP,SAAuB3sB,EAAI,IAACiX,GAAS,CACnC,QAAS,IACT,YAAa,GACb,QAAS2V,EACT,IAAK,KAAK,iBACV,gBAAiBgT,EACjB,SAAU,IAAM,CACd,KAAK,SAAS,CACZ,mBAAoB,IAChC,CAAW,CACF,EACD,SAAuB5/B,EAAI,IAACuU,GAAkB,CAC5C,MAAO7Q,EACP,OAAQ/E,EACR,aAAc,IAAM,CAClB,IAAIkhC,GACHA,EAAgB,KAAK,WAAa,MAAQA,IAAkB,QAAkBA,EAAc,OAAM,CACpG,CACX,CAAS,CACT,EAASlhC,EAAO,IAAI,CACpB,CAAK,CACF,CACD,yCAAyCsE,EAAY,CACnD,IAAI68B,EACA,CACF,MAAAp8B,CACN,EAAQ,KAAK,MACL60B,GAAauH,EAAe,KAAK,QAAU,MAAQA,IAAiB,OAAS,OAASA,EAAa,MAAM,UACzG,CACF,4BAA6BC,EAC7B,yBAAAC,CACN,EAAQ,KAAK,MACT,GAAIzH,GAAa,KAAM,CACrB,IAAI0H,EAASv8B,EAAM,qBAAqBT,CAAU,EAC9Ci9B,EAAWpwB,EAAc,gBAAgBpM,EAAM,QAAST,CAAU,EAClEk9B,EAAarwB,EAAc,gBAAgBpM,EAAM,QAASq8B,CAAc,EAC5E,GAAIE,GAAU,MAAQC,GAAY,KAChC,OAEF,IAAIE,EAAU18B,EAAM,aAAau8B,EAAQ1H,CAAS,EAC9CvpB,EAAOc,EAAc,mBAAmBswB,EAASF,EAAS,IAAI,EAG9DF,GAA4BE,EAAS,QAAUC,GAAe,KAAgC,OAASA,EAAW,MACpH,KAAK,SAAS,CACZ,4BAA6Bl9B,EAC7B,eAAgB,EAC1B,CAAS,EAGD,KAAK,SAAS,CACZ,4BAA6BA,EAC7B,UAAW+L,EACX,eAAgB,GAChB,yBAA0B,EACpC,CAAS,CAEJ,CACD,KAAK,SAAS,CACZ,4BAA6B/L,EAC7B,eAAgB,EACtB,CAAK,CACF,CACD,qCAAqC5F,EAAO,CAC1C,KAAK,SAAS,CACZ,wBAAyBA,EACzB,eAAgB,EACtB,CAAK,CACF,CACD,yBAAyBsgC,EAAa,CACpC,GAAI,CACF,UAAAnZ,CACN,EAAQ,KAAK,MACT,KAAK,QAAQA,EAAWmZ,CAAW,CACpC,CACD,QAAS,CACP,IAAI0C,EACFC,EACAC,EAAS,KACTC,EACAC,EACAC,EACE,CACF,SAAAr1B,EACA,cAAAqf,EACA,kBAAAiW,EACA,kBAAApW,EACA,gBAAAqW,EACA,eAAAC,EACA,MAAAn9B,EACA,KAAA+G,EACA,wBAAAq2B,EACA,mBAAAztB,EACA,iBAAA2c,EACA,yBAAA+Q,EACA,eAAA7Y,EACA,cAAA8R,CACN,EAAQ,KAAK,MACL,CACF,iBAAA7Q,EACA,QAAA8H,EACA,iBAAAjJ,EACA,qBAAAwF,EACA,YAAA/C,EACA,QAAAiR,EACA,cAAAntB,EACA,uBAAAurB,GACA,YAAAjF,GACA,qBAAArK,GACA,oBAAA4B,GACA,mBAAA2I,GACA,kBAAAC,GACA,mBAAA4J,GACA,oBAAAoC,GACA,oBAAAC,GACA,kBAAA3W,GACA,aAAArD,EACA,gBAAAF,EACA,aAAA7Q,EACA,sBAAA1C,EACA,aAAAnE,EACA,UAAAggB,EACA,UAAA7vB,EACA,mBAAA6tB,GACA,yBAAAhB,EACA,2BAAA6U,GACA,MAAA/tB,GACA,QAAAZ,GACA,cAAAa,GACA,eAAAhB,GACA,mBAAA+uB,GACA,oBAAA3U,GACA,sBAAAF,GACA,2BAAAC,GACA,cAAAtE,GACA,YAAAnS,GACA,sBAAAmW,GACA,oBAAAC,GACA,oBAAAlF,GACA,oBAAAoa,GACA,aAAA9tB,GACA,YAAAkd,GACA,mBAAAoI,GACA,iBAAAyI,GACA,gBAAA/zB,GACA,kBAAAf,GACA,eAAAC,GACA,aAAA80B,GACA,cAAA3tB,GACA,mBAAAE,GACA,kBAAA0tB,GACA,2BAAAC,GACA,uBAAAC,GACA,aAAAC,GACA,2BAAAhV,GACA,uBAAAG,GACA,kBAAAG,GACA,YAAAqL,GACA,QAAApU,GACA,aAAAC,GACA,eAAAC,GACA,4BAAAI,GACA,UAAAC,GACA,wBAAAqZ,GACA,gBAAA/pB,EACN,EAAQ,KAAK,MACT,GAAI,CAAC4nB,EACH,OAAO,KAET,IAAI9Q,GAAQ,KAAK,WACb,CACF,mBAAoB+W,EACrB,EAAG/W,GACA7nB,GAAS,KAAK,gBAAgB2nB,EAAezD,EAAcF,EAAiB7Q,CAAY,EACxFxG,GAAmByZ,EAAiB,sBACpCyY,GAAgB,KAAK,uBAAuBtX,GAAmBtC,EAAkBuC,EAAmBC,GAAsBvD,EAAcF,EAAiB5T,GAAOZ,GAASe,GAAcmX,CAAW,EAClMppB,GAAM4vB,EAAUA,EAAQ,IAAM,EAC9B3vB,GAAS2vB,EAAUA,EAAQ,eAAiB,EAC5Che,GAAO,KACPC,GAAQ,KACR4tB,IACF7tB,GAAOge,EAAUA,EAAQ,KAAO,EAChC/d,GAAQ+d,EAAUA,EAAQ,MAAQ,GAEpC,IAAIqF,GAAYrF,GAAW,MAAQA,EAAQ,MAAQ,GAAKA,EAAQ,OAAS,EACrE4Q,KAAaxB,EAAyB/sB,IAAiB,OAA4CgtB,EAAyBhtB,GAAa,WAAa,MAAQgtB,IAA2B,OAAhG,OAAkHA,EAAuB,UAAY,MAAQD,IAA2B,OAASA,EAAyB,GAAK,EACxTyB,GAAa,KACbrxB,GAAawgB,EAAU,KAAK,IAAI,KAAK,IAAI/J,GAAS,YAAa,KAAK,MAAM+J,EAAQ,SAAW,GAAG,CAAC,EAAG/J,GAAS,WAAW,EAAIA,GAAS,YACzI,GAAIc,GAAoB8R,IAA0B,MAAQ7I,GAAW,KAAM,CACzE,GAAI,CACF,MAAA8Q,GACA,MAAAC,GACA,YAAAhD,GACA,gBAAAC,GACA,MAAA7C,EACD,EAAGnL,EACAkO,GAAUH,GAAY,IAAIlF,EAAsB,EAChD5C,GAAc+H,GAAgB,IAAInF,EAAsB,EAC5D,GAAIqF,IAAW,MAAQjI,IAAe,KAAM,CAC1C,IAAI+K,GAAuBC,GAAwBC,GAC/CC,GAAIL,GAAQ5C,GACZkD,GAAIL,KAAUC,GAAwBrX,GAAM,mBAAqB,MAAQqX,KAA0B,OAASA,GAAwB,GACpIK,GAAapL,GAAc,EAC3BqL,KAAgBL,GAAyBtX,GAAM,mBAAqB,MAAQsX,KAA2B,OAASA,GAAyB,GAAK,EAC9I5wB,GAAQ,CACV,IAAK+wB,GACL,KAAMD,GACN,SAAU,KAAK,IAAIE,GAAYlG,GAAQgG,EAAC,EAExC,OAAQG,EAClB,EACYC,GAAU,GACV7iC,GAAU,GACVoxB,GAAc,KAAK,eAAe+I,EAAsB,EAC5D91B,EAAc+sB,EAAW,EACzB,IAAIU,GAAcxK,EAAa,IAAI8J,EAAW,EAC1C0R,GAAiB1b,EAAgB,IAAIgK,EAAW,EAChDU,IAAe,OACjB+Q,GAAU/Q,GAAY,KACtB9xB,GAAU8xB,GAAY,QAAU,MAElC,IAAIiR,GAAgBzb,EAAa,OAAS,GAAKF,EAAgB,OAAS,EACxE+a,GAA0B9hC,EAAI,IAACwQ,GAAkB,CAC/C,IAAK,KAAK,eACV,MAAOc,GACP,UAAWlR,EAAW,CACpB,MAAO,CAACT,GACR,OAAQ6iC,KAAY,IAAMC,IAAkB,KAC5C,uBAAwBC,EACpC,CAAW,EACD,oBAAqBD,IAAkB,KACvC,2BAA4B,IAAM,CAChC,KAAK,SAAS,CACZ,oBAAqB3I,EACnC,CAAa,CACF,EACD,SAAU,KAAK,sBACf,OAAQ,KAAK,oBACb,MAAO,KAAK,mBACZ,eAAgBqI,GAAe,KAAK,QAAU,MAAQA,KAAiB,OAAS,OAASA,GAAa,kBACtG,WAAY1xB,GACZ,MAAO+xB,EACR,EAAE1I,EAAsB,CAC1B,CACF,CACD,IAAI6I,GAAiB,KACrB,GAAI9N,IAAe,KAAM,CACvB,IAAI+N,GAA6B3iC,EAAK,KAAC,MAAO,CAC5C,UAAW,2BACX,SAAU,CAAcD,EAAI,IAAC,MAAO,CAClC,UAAWI,EAAW,+BAAgC,CACpD,KAAMgsB,EAClB,CAAW,EACD,SAAUyI,EACpB,CAAS,EAAgB50B,EAAK,KAAC,SAAU,CAC/B,KAAM,SACN,QAAS,KAAK,aACd,UAAWG,EAAW,uBAAwB,CAC5C,KAAM20B,EAClB,CAAW,EACD,SAAU,CAAc/0B,EAAI,IAACsG,EAAiB,CAC5C,KAAM0f,GACN,UAAW,QACZ,CAAA,EAAG,QAAQ,CACtB,CAAS,CAAC,CACV,CAAO,EACG6c,GAAS5R,EAAUA,EAAQ,MAAQ,EACvC0R,GAA8B3iC,EAAI,IAAC,MAAO,CACxC,UAAW,oBACX,MAAOg1B,GAAoB,CACzB,IAAK6N,EACf,EAAY,CAAE,EACN,SAAUD,EAClB,CAAO,CACF,CACD,IAAIE,GAAgB,KACpB,GAAIlE,IAAsB,MAAQ3N,EAAS,CACzC,IAAI8R,GACJD,GAAgB,KAAK,iBAAiBlE,GAAoB3N,EAASvtB,CAAK,GAEvEq/B,GAAiB,KAAK,WAAa,MAAQA,KAAmB,QAAkBA,GAAe,OAAM,CACvG,CACD,IAAIC,GAAY,CAAA,EAChB,GAAI/R,GAAWjJ,EA0Eb,OAzEI,CACF,MAAOib,GACP,MAAOC,GACP,eAAAhH,GACA,YAAaiH,GACb,gBAAiBC,EAClB,EAAGnS,EACA,CACF,gBAAAoS,EACD,EAAGzY,GACA0Y,GAAS,UAAkB,CAC7B,IAAIv/B,GAAcm4B,GAAet8B,EAAC,EAC9Bu/B,GAAUgE,GAAa,IAAIp/B,EAAW,EACtCmzB,GAAckM,GAAiB,IAAIr/B,EAAW,EAC9CgtB,GAAcwP,EAAO,eAAex8B,EAAW,EACnD,GAAIgtB,IAAe,KAAM,CACvB,IAAIwS,GAAe7/B,EAAM,aAAaqtB,EAAW,EACjD,GAAIwS,IAAgBpE,IAAW,MAAQjI,IAAe,MAAQA,GAAc,EAAG,CAC7E,IAAIne,GAAKkqB,GAAS9D,GAAUjI,GAAc,GACtCsM,GAAKN,IAAWG,IAA2E,GAAK,EAChGI,GAAS,CACX,SAAU,WACV,IAAKD,GACL,KAAMzqB,EACpB,EACgB2qB,GAAkB3c,EAAgB,IAAIgK,EAAW,EACjD4S,GAAcD,IAAmB,KACjCE,GAAkB7/B,KAAgBi9B,IAAuBj9B,KAAgB+1B,IAA0B6J,GACnG5jC,GAAuBC,EAAI,IAAC,MAAO,CACrC,UAAWI,EAAW,mCAAoC,CACxD,OAAQ,CAACwjC,EACzB,CAAe,EACD,MAAOH,GACP,SAAUG,IAAgC5jC,EAAI,IAACK,EAAQ,CACrD,KAAM,QACN,UAAWD,EAAW,uCAAwC,CAC5D,aAAcujC,EAChC,CAAiB,EACD,QAAS,IAAM,CACbpD,EAAO,SAAS,CACd,oBAAqBx8B,EACzC,CAAmB,CACF,EACD,cAAezE,IAAS,CACtB,IAAIukC,IACHA,GAActD,EAAO,QAAU,MAAQsD,KAAgB,QAAkBA,GAAY,kBAAkBvkC,EAAK,CAC9G,EACD,aAAc,IAAM,CAClBihC,EAAO,SAAS,CACd,oBAAqBx8B,EACzC,CAAmB,CACF,EACD,aAAc,IAAM,CAClBw8B,EAAO,SAAS,CACd,oBAAqB,IACzC,CAAmB,CACF,EACD,SAAuBtgC,EAAK,KAAC,MAAO,CAClC,UAAW,YACX,SAAU,CAAcD,EAAI,IAACsG,EAAiB,CAC5C,KAAMoL,GACN,UAAW,cAC/B,CAAmB,EAAgB1R,EAAI,IAACsG,EAAiB,CACrC,KAAMqL,GACN,UAAW,cAC/B,CAAmB,CAAC,CACpB,CAAiB,CACjB,CAAe,CACF,EAAE5N,EAAW,EACdi/B,GAAU,KAAKjjC,EAAO,CACvB,CACF,CACT,EACeH,GAAI,EAAGA,GAAIs8B,GAAe,OAAQt8B,IAAK,EAC9C0jC,KAGJ,IAAIQ,GAAsB,CAAA,EAC1B,GAAI7S,EAoEF,OAnEI,CACF,MAAO8S,GACP,eAAgBC,GAChB,YAAaC,GACb,gBAAiBC,GACjB,mBAAAnF,EACD,EAAG9N,EACAkT,GAAS,UAAkB,CAC7B,IAAIpgC,GAAcigC,GAAgBI,EAAG,EACjCjF,GAAU8E,GAAc,IAAIlgC,EAAW,EACvCmzB,GAAcgN,GAAkB,IAAIngC,EAAW,EACnD,GAAIo7B,IAAW,MAAQjI,IAAe,MAAQA,GAAc,EAAG,CAC7D,IAAImN,GAAgBN,GAAU5E,GAC1BmF,GAAaP,GAAU5E,GAAUjI,GAAc,GAC/CqN,GAAUvc,EAAmB,CAC/B,SAAU,WACV,IAAK+W,GACL,KAAMuF,GACN,MAAO,GACP,OAAQ1Z,GAAM,eAC1B,EAAc,CACF,SAAU,WACV,IAAK,EACL,KAAMyZ,GACN,MAAOnN,GACP,OAAQ6H,EACpB,EACcyF,GAAejE,EAAO,eAAex8B,EAAW,EACpD,GAAIygC,IAAgB,KAAM,CACxB,IAAIC,GAAW/gC,EAAM,QAAQ8gC,EAAY,EACzC,GAAIC,IAAY,KAEd,OAAA5mC,EAAI,KAAK,kCAAkC,OAAO2mC,GAAc,8BAA8B,EAAE,OAAO9gC,EAAM,QAAQ,MAAM,CAAC,EAErH,WAET,IAAIghC,GAAmB3d,EAAgB,IAAIyd,EAAY,EACnD,CACF,QAASjd,EACvB,EAAgBmd,IAAoB,CAAA,EACpBrgC,GAAOlG,EAAW,iBAAiBuF,EAAM,KAAM+gC,GAAS,IAAI,EAC5D/+B,GAAgBrB,GAAOA,GAAK,UAAY,KAC5C,GAAI,CAACsgC,GAAgBj/B,EAAa,EAChC,MAAM,IAAI,MAAM,2BAA2B,OAAOA,EAAa,CAAC,EAElE,IAAI3F,GAAuBC,EAAI,IAAC,MAAO,CACrC,UAAW,iCACX,MAAOukC,GACP,SAAuBvkC,EAAI,IAACkX,GAAQ,CAClC,UAAW,8BACX,UAAWqpB,EAAO,6BAA6Bx8B,EAAW,EAC1D,SAAU,IAAM,CACdw8B,EAAO,yBAAyBx8B,EAAW,CAC5C,EACD,QAASk9B,KAAwBl9B,GACjC,YAAa,GACb,YAAa,GACb,QAAS,CACP,cAAe,EAChB,EACD,SAAUw8B,EAAO,mCAAmC78B,EAAO+gC,GAAUld,GAAuB7hB,GAAelG,CAAS,CACpI,CAAe,CACF,EAAEuE,EAAW,EACd+/B,GAAoB,KAAK/jC,EAAO,CACjC,CACF,CACT,EACeqkC,GAAM,EAAGA,GAAMJ,GAAgB,OAAQI,IAAO,EACrD,IAAIQ,GAAOT,KAIf,IAAI7b,GAAc,KAAK,qBAAqB0R,IAAkB,QAAat2B,EAAM,wBAAyBA,EAAM,yBAA0BA,EAAM,yBAA0BA,EAAM,kBAAmBA,EAAM,mBAAqBm+B,GAAUn+B,EAAM,0BAA2BA,EAAM,kBAAmB,KAAK,sBAAuB,KAAK,sBAAuB,KAAK,oBAAqBskB,EAAkBC,GAAeC,EAAgB,KAAK,uBAAwB,EAAEmQ,GAAarI,EAAiB,KAAO,CAAC,EACtengB,GAAgB,KAAK,uBAAuBsZ,EAAkBzZ,EAAgB,EAC9Em1B,GAAmBrU,GAAY,IAAI3oB,IAAU,CAC/C,OAAQA,GAAO,KAAI,CACjB,KAAK0gB,EAAW,cACd,OAAoBvoB,EAAAA,IAAK8kC,GAAc,CACrC,MAAOphC,EACP,SAAU,KAAK,kBACf,SAAU,KAAK,iBAC3B,EAAa6kB,EAAW,aAAa,EAC7B,KAAKA,EAAW,4BACd,OAAoBvoB,EAAAA,IAAK+kC,GAA2B,CAClD,MAAOrhC,EACP,aAAc2L,EACd,cAAeQ,GACf,mBAAoBgE,GACpB,0BAA2B,KAAK,8BAChC,QAAS,KAAK,4BACd,sBAAuB,KAAK,0BAC5B,2BAA4B,KAAK,yBAC7C,EAAa0U,EAAW,2BAA2B,EAC3C,KAAKA,EAAW,uBACd,OAAoBvoB,EAAAA,IAAK2a,GAA2B,CAClD,MAAO0S,GACP,SAAU,KAAK,+BACf,SAAU,KAAK,8BACf,SAAU,KAAK,2BAC3B,CAAW,EACH,KAAK9E,EAAW,4BACd,OAAAvkB,EAAcN,EAAM,OAAO,EAC3BM,EAAc,KAAK,mCAAmC,EAClChE,EAAAA,IAAK4gB,GAAyB,CAChD,GAAIld,EAAM,GACV,QAASA,EAAM,QACf,KAAM2oB,EACN,SAAU,KAAK,oCACf,OAAQ,KAAK,kCACb,SAAU,KAAK,mCAC3B,CAAW,EACH,KAAK9D,EAAW,sBACd,OAAoBvoB,EAAAA,IAAKglC,GAAqB,CAC5C,MAAOthC,EACP,cAAe0P,GACf,OAAQ,KAAK,0BACb,SAAU,KAAK,cAC3B,EAAamV,EAAW,qBAAqB,EACrC,KAAKA,EAAW,YACd,OAAoBvoB,EAAAA,IAAKilC,GAAY,CACnC,MAAOvhC,EACP,SAAU,KAAK,mBACf,OAAQ4P,EACpB,EAAaiV,EAAW,WAAW,EAC3B,KAAKA,EAAW,aACd,OAAoBvoB,EAAAA,IAAKklC,GAAc,CACrC,SAAUle,GACV,SAAU6a,GACV,SAAU,KAAK,yBACf,OAAQ,KAAK,qBACzB,CAAW,EACH,KAAKtZ,EAAW,iBACd,OAAO6Y,IAAoCphC,EAAI,IAACmlC,GAAiB,CAC/D,YAAa/D,GACb,QAAS19B,EAAM,gBACf,SAAU,KAAK,uBAC3B,CAAW,EACH,KAAK6kB,EAAW,eACd,OAAoBvoB,EAAAA,IAAKysB,GAAkB,CACzC,MAAO/oB,EACP,KAAM+G,EACN,iBAAkBiF,GAClB,aAAcL,EACd,cAAe8xB,GACf,oBAAqB3U,GACrB,sBAAuBF,GACvB,2BAA4BC,IAA4G,OACxI,WAAY,KAAK,oBACjB,gBAAiB,KAAK,yBACtB,SAAU,KAAK,0BACf,eAAgBna,EAC5B,EAAamW,EAAW,cAAc,EAC9B,KAAKA,EAAW,gBACd,OAAoBvoB,EAAAA,IAAK2Z,GAAuB,CAC9C,MAAOjW,EACP,sBAAuB8P,EACvB,SAAU,KAAK,2BAC3B,CAAW,EACH,KAAK+U,EAAW,kBACd,OAAoBvoB,EAAAA,IAAKma,GAAsB,CAC7C,MAAO6V,EACP,SAAU+Q,CACtB,CAAW,EACH,QACE,MAAM,MAAM,0BAA0B,OAAOl5B,GAAO,IAAI,CAAC,CAC5D,CACP,CAAK,EACD,OAAoB5H,EAAAA,KAAM,MAAO,CAC/B,UAAW,YACX,KAAM,eACN,SAAU,CAAcA,EAAK,KAAC,MAAO,CACnC,UAAW,mBACX,SAAU,CAACoL,GAAY,MAAqBrL,EAAAA,IAAK,MAAO,CACtD,UAAW,gBACX,SAAUqL,CACpB,CAAS,EAAgBrL,EAAI,IAAC6L,GAAe,CACnC,GAAI2hB,EACJ,QAAS1hB,GAAY,iBACrB,WAAY,2BACZ,QAAS,KAAK,qBACd,UAAW,KAAK,mBAChB,OAAQ,KAAK,qBACb,SAAU,KAAK,mBACf,aAAc,GACd,cAAe,GACf,SAAuB9L,EAAI,IAAC,MAAO,CACjC,UAAW,2EACX,SAAUqU,GAAuB3Q,CAAK,GAAKA,EAAM,qBAAoC1D,EAAI,IAAC6X,GAA2B,CACnH,MAAOnU,EACP,gBAAiBoQ,GACjB,SAAU,KAAK,qBAC7B,CAAa,CACb,CAAW,CACX,CAAS,EAAgB9T,EAAI,IAAC6L,GAAe,CACnC,GAAIoc,GACJ,QAASnc,GAAY,iBACrB,WAAY,2BACZ,QAAS,KAAK,qBACd,UAAW,KAAK,mBAChB,OAAQ,KAAK,qBACb,SAAU,KAAK,mBACf,aAAc,GACd,cAAe,GACf,SAAuB9L,EAAI,IAAC,MAAO,CACjC,UAAW,gBACX,SAAuBA,EAAI,IAAC6V,GAAmB,CAC7C,MAAOC,GACP,gBAAiBmW,GACjB,gBAAiBC,GACjB,SAAU,KAAK,wBACf,QAASxoB,EAAM,QACf,IAAK,KAAK,cACxB,CAAa,CACb,CAAW,CACX,CAAS,EAAgBzD,EAAK,KAACmlC,GAAM,CAC3B,IAAKrzB,IAAQ,CACX,KAAK,KAAOA,EACb,EACD,eAAgB,CAACob,GAAoBzpB,CAAK,GAAK,CAACA,EAAM,WACtD,gBAAiBk9B,EACjB,eAAgBC,EAChB,iBAAkB1X,EAClB,MAAOzlB,EACP,YAAa,KAAK,eAAgB,EAClC,cAAe,KAAK,iBAAkB,EACtC,aAAc2L,EACd,UAAWggB,EACX,QAAS,KAAK,gBACd,cAAe,KAAK,kBACpB,mBAAoB,KAAK,uBACzB,sBAAuB,KAAK,0BAC5B,SAAU,KAAK,SACf,cAAeuS,GACf,MAAOhX,GACP,SAAU,CAAc5qB,EAAI,IAAC6hB,GAA2B,CACtD,OAAQ0f,GACR,KAAMG,GACN,QAAS,KAAK,mBAC1B,CAAW,EAAGpL,IAA0Bt2B,EAAI,IAACgT,GAAsB,CACvD,MAAOtP,EACP,IAAKrC,GACL,OAAQC,GACR,KAAM2R,GACN,MAAOC,GACP,OAAQnQ,GACR,UAAWvD,EACX,MAAO2T,GACP,QAASZ,GACT,aAAclD,EACd,cAAe+D,GACf,cAAevD,GACf,mBAAoB,KAAK,sBAAsBwD,EAAoB3P,EAAM,QAAS2L,EAAc3L,EAAM,wBAAyBA,EAAM,0BAA2B88B,EAAe,KAAK,QAAU,MAAQA,IAAiB,SAAmBC,EAAwBD,EAAa,MAAM,kBAAoB,MAAQC,IAA0B,OAA3G,OAA6HA,EAAsB,KAAK,EACxX,cAAe,KAAK,8BAA8B/8B,EAAM,GAAIA,EAAM,QAAS2pB,GAAoBhB,IAE7FqU,EAAelQ,GAAYA,GAAY,OAAS,CAAC,KAAO,MAAQkQ,IAAiB,OAAS,OAASA,EAAa,QAAUnY,EAAW,4BAA8B2Y,IAA4G,OAAY,MAAS,EACtS,aAAc,KAAK,qBAAqBx9B,EAAM,gBAAiB4P,GAAc0T,EAAmB,EAChG,aAAc,KAAK,qBAAqBtjB,EAAM,QAAS4P,GAAc0T,EAAmB,EACxF,sBAAuBxT,EACvB,gBAAiBlG,GACjB,eAAgBd,GAChB,cAAemH,GACf,mBAAoBE,GACpB,gBAAiBC,GACjB,qBAAsB,KAAK,oBAC5B,CAAA,EAAG,CAAC2W,GAA4BzqB,EAAI,IAAC,MAAO,CAC3C,UAAW,uBACX,MAAO,CACL,OAAQ,GAAG,OAAO2hC,GAA0B,IAAI,EAChD,MAAO,GAAG,OAAOA,GAA0B,IAAI,CAChD,EACD,SAAuB3hC,EAAI,IAACK,EAAQ,CAClC,KAAM,QACN,cAAe,iCAAiC,OAAOoK,CAAI,EAC3D,QAAS,KAAK,WACd,KAAmBzK,EAAI,IAACsG,EAAiB,CACvC,KAAM++B,GACN,UAAW,MAC3B,CAAe,EACD,QAAS,eACvB,CAAa,CACb,CAAW,EAAGvD,GAAYa,GAAgBK,GAAWF,GAAegB,GAAqBpX,IAA8B,KAAK,yBAAyBA,EAA0B,EAAGG,IAA0B,KAAK,qBAAqBA,EAAsB,EAAGG,IAAqB,KAAK,gBAAgBA,EAAiB,CAAC,CAC3T,CAAS,EAAgBhtB,EAAI,IAAC8jB,GAAS,CAC7B,IAAK,KAAK,WACV,MAAOpgB,EACP,QAAS20B,GACT,QAASpU,GACT,aAAcC,GACd,eAAgBC,GAChB,gBAAiB,KAAK,qCACtB,uBAAwB,KAAK,sCAC7B,QAAS,KAAK,oBACd,WAAY,KAAK,qBACjB,UAAW,KAAK,mBAChB,UAAW,IAAM,CACf,KAAK,qBAAoB,EACzB,KAAK,MAAK,CACX,EACD,SAAU,KAAK,mBACf,4BAA6BI,GAC7B,UAAWC,GACX,gBAAiBqZ,GACjB,qCAAsC,KAAK,yCAC3C,iCAAkC,KAAK,qCACvC,mBAAoB,KAAK,uBACzB,kBAAmB,KAAK,wBAClC,CAAS,EAAgB79B,EAAI,IAACiM,GAAsB,CAC1C,MAAOo1B,GACP,SAAUzI,IAAsB,KAChC,YAAa,WAAW,OAAO,KAAK,aAAa,SAAS,eAAgB,EAAE,GAAG,EAC/E,eAAgB,YAAY,OAAO,KAAK,cAAc,SAAS,eAAgB,EAAE,GAAG,EACpF,kBAAmBrsB,GACnB,eAAgBC,GAChB,WAAY,KAAK,qBACjB,UAAW,KAAK,mBAChB,UAAW,KAAK,qBAChB,SAAU,KAAK,mBACf,OAAQ,KAAK,2BACb,UAAW,KAAK,2BAC1B,CAAS,EAAgBxM,EAAI,IAACyS,GAAgB,CACpC,SAAU6uB,EACpB,CAAS,EAAgBthC,EAAI,IAACyO,EAAqB,CACzC,MAAO/K,EACP,cAAe6K,GAAqE,OACpF,WAAY,KAAK,qBACjB,UAAW,KAAK,mBAChB,UAAW,KAAK,qBAChB,SAAU,KAAK,kBACzB,CAAS,EAAgBvO,EAAI,IAACslC,GAAY,CAChC,GAAI5hC,EAAM,GACV,IAAK6hC,IAAc,CACjB,KAAK,WAAaA,EACnB,EACD,kBAAmB5E,EACnB,oBAAqB,KAAK,wBAC1B,mBAAoB,KAAK,uBACzB,yBAA0B,KAAK,6BAC/B,cAAenU,KAAwBC,GAAiB,gBAAgB,YACxE,UAAWjtB,CACrB,CAAS,CAAC,CACV,CAAO,EAAgBQ,EAAI,IAACwlC,GAAiB,CACrC,GAAI/a,EACJ,WAAY,KAAK,qBACjB,UAAW,KAAK,mBAChB,UAAW,KAAK,qBAChB,SAAU,KAAK,mBACf,aAAc,GACd,cAAe,GACf,SAAuBzqB,EAAI,IAAC,MAAO,CACjC,UAAW,gBACX,SAAuBC,EAAK,KAACwlC,GAAO,CAClC,SAAU,CAAczlC,EAAI,IAAC0lC,GAAM,CACjC,MAAO,gBACP,QAAS,KAAK,gBACd,SAAuB1lC,EAAI,IAACqa,GAAM,CAChC,SAAUza,IAAK,KAAK,iBAAiB0oB,GAAY1oB,EAAC,CAAC,EACnD,MAAO0oB,EACvB,CAAe,CACf,CAAa,EAAGuc,GAAiB,IAAI,CAACh9B,GAAQjI,KAAmBI,EAAI,IAAC0lC,GAAM,CAC9D,MAAOlV,GAAY5wB,EAAC,EAAE,MACtB,OAAQ,KAAK,eACb,QAAS,KAAK,gBACd,SAAUiI,EACX,EAAE2oB,GAAY5wB,EAAC,EAAE,IAAI,CAAC,CAAC,CACpC,CAAW,CACX,CAAS,CACT,CAAO,EAAgBI,EAAI,IAAC2lC,GAAgB,CACpC,QAAS,KAAK,cACtB,CAAO,EAAgB3lC,EAAI,IAACmmB,GAAwB,CAC5C,OAAQqb,GACR,QAAS,KAAK,kCACd,aAAcC,EACtB,CAAO,CAAC,CACR,CAAK,CACF,CACH,CACAvkC,EAAgBgqB,GAAU,cAAe0e,EAAoB,EAC7D1oC,EAAgBgqB,GAAU,cAAe,GAAG,EAC5ChqB,EAAgBgqB,GAAU,cAAe,GAAG,EAC5ChqB,EAAgBgqB,GAAU,sBAAuB,GAAG,EACpDhqB,EAAgBgqB,GAAU,eAAgB,CACxC,SAAU,KACV,gBAAiBxT,GACjB,iBAAkBA,GAClB,mBAAoBD,GACpB,mBAAoBA,GACpB,sBAAuBC,GACvB,iBAAkB,GAClB,wBAAyB,GACzB,aAAcD,GACd,UAAWA,GACX,aAAcA,GACd,cAAeA,GACf,cAAe,OACf,iBAAkB,IAAA,GAClB,eAAgB,IAAA,GAChB,QAAS,IAAA,GACT,cAAe,IAAA,GACf,yBAA0B,IAAA,GAC1B,WAAY,OACZ,gBAAiB,OACjB,aAAcC,GACd,sBAAuBD,GACvB,MAAOA,GACP,QAAS,GACT,cAAeA,GACf,oBAAqBmT,GACrB,aAAc,OACd,iBAAkBlT,GAClB,eAAgBA,GAChB,mBAAoB,IAAA,GACpB,kBAAmB,GACnB,qBAAsB,GACtB,gBAAiB,GACjB,eAAgB,GAChB,yBAA0B,KAC1B,oBAAqB,KACrB,uBAAwB,KACxB,WAAY,OACZ,KAAM,QACN,wBAAyB,GACzB,cAAe,GACf,YAAa,GACb,sBAAuB,KACvB,oBAAqB,GACrB,cAAe,IAAMD,GACrB,eAAgBC,GAChB,kBAAmBmyB,GAA2B,iBAC9C,SAAU,CACR,SAAU,mBACV,sBAAuB76B,GAAU,iBACjC,aAAc,GACd,eAAgB,GAChB,yBAA0B,GAC1B,iBAAkB,GAClB,gBAAiB,GACjB,qBAAsB,GACtB,UAAWyI,GACX,qBAAsBqyB,GAAU,MAAM,CACpC,oBAAqBA,GAAU,MACrC,CAAK,EACD,qBAAsBA,GAAU,MAAM,CACpC,oBAAqBA,GAAU,MACrC,CAAK,CACF,EACD,QAAS,GACT,eAAgB,GAChB,cAAe,KACf,MAAO,KAEP,QAAS,OACT,gBAAiB,GACjB,cAAeryB,GACf,YAAaA,EACf,CAAC"}