@deephaven/embed-grid 0.46.1-beta.0 → 0.46.1-beta.2

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.
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-7d6ca293.js","sources":["../../../log/dist/LogProxy.js","../../../log/dist/LogHistory.js","../../../components/dist/AutoCompleteInput.js","../../../components/dist/AutoResizeTextarea.js","../../../components/dist/ButtonGroup.js","../../../utils/dist/ErrorUtils.js","../../../react-hooks/dist/useFormWithDetachedSubmitButton.js","../../../react-hooks/dist/usePromiseFactory.js","../../../react-hooks/dist/useDebouncedValue.js","../../../components/dist/modal/DebouncedModal.js","../../../components/dist/modal/InfoModal.js","../../../components/dist/modal/ModalFooter.js","../../../components/dist/BasicModal.js","../../../components/dist/ButtonOld.js","../../../components/dist/CardFlip.js","../../../components/dist/Collapse.js","../../../components/dist/TimeInput.js","../../../components/dist/CustomTimeSelect.js","../../../components/dist/DateInput.js","../../../components/dist/DebouncedSearchInput.js","../../../components/dist/EditableItemList.js","../../../components/dist/HierarchicalCheckboxMenu.js","../../../components/dist/RandomAreaPlotAnimation.js","../../../components/dist/SocketedButton.js","../../../components/dist/SpectrumUtils.js","../../../components/dist/TimeSlider.js","../../../components/dist/ToastNotification.js","../../../components/dist/ValidateLabelInput.js","../../../jsapi-components/dist/HookTestUtils.js","../../../jsapi-utils/dist/MessageUtils.js","../../../jsapi-utils/dist/NoConsolesError.js","../../../jsapi-utils/dist/SessionUtils.js","../../../jsapi-utils/dist/ViewportDataUtils.js","../../../jsapi-components/dist/useTableListener.js","../../../jsapi-components/dist/ColumnNameError.js","../../../jsapi-components/dist/TableDisconnectError.js","../../../jsapi-components/dist/useTable.js","../../../jsapi-components/dist/useTableColumn.js","../../../jsapi-components/dist/TableInput.js","../../../jsapi-components/dist/useBroadcastChannel.js","../../../jsapi-components/dist/useBroadcastLoginListener.js","../../../jsapi-components/dist/RefreshTokenUtils.js","../../../jsapi-components/dist/RefreshTokenBootstrap.js","../../../jsapi-components/dist/useDebouncedViewportSearch.js","../../../jsapi-components/dist/useTableSize.js","../../../jsapi-components/dist/useInitializeViewportData.js","../../../jsapi-components/dist/useSelectDistinctTable.js","../../../jsapi-components/dist/useSetPaddedViewportCallback.js","../../../jsapi-components/dist/useTableClose.js","../../../jsapi-components/dist/useTableUtils.js","../../../jsapi-components/dist/useViewportData.js","../../../app-utils/dist/components/FontBootstrap.js","../../../auth-plugins/dist/AuthPlugin.js","../../../auth-plugins/dist/AuthHandlerTypes.js","../../../auth-plugins/dist/AuthenticationError.js","../../../auth-plugins/dist/AuthPluginBase.js","../../../auth-plugins/dist/AuthPluginAnonymous.js","../../../auth-plugins/dist/AuthPluginParent.js","../../../auth-plugins/dist/LoginForm.js","../../../auth-plugins/dist/Login.js","../../../auth-plugins/dist/AuthPluginPsk.js","../../../auth-plugins/dist/UserUtils.js","../../../app-utils/dist/plugins/remote-component.config.js","../../../app-utils/dist/plugins/RemoteComponent.js","../../../app-utils/dist/plugins/loadRemoteModule.js","../../../app-utils/dist/plugins/PluginUtils.js","../../../app-utils/dist/components/PluginsBootstrap.js","../../../app-utils/dist/components/LoginNotifier.js","../../../app-utils/dist/components/AuthBootstrap.js","../../../app-utils/dist/utils/ConnectUtils.js","../../../app-utils/dist/components/FontsLoaded.js","../../../app-utils/dist/components/ServerConfigBootstrap.js","../../../app-utils/dist/components/useServerConfig.js","../../../app-utils/dist/components/UserBootstrap.js","../../../app-utils/dist/components/AppBootstrap.js","../../../app-utils/dist/components/usePlugins.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-disable no-console */\nimport { EventTarget } from 'event-target-shim';\nimport Log from \"./Log.js\";\nexport var LOG_PROXY_TYPE;\n\n// We need to cast our CustomEvent so it's happy with event-target-shim\n(function (LOG_PROXY_TYPE) {\n LOG_PROXY_TYPE[\"DEBUG\"] = \"D\";\n LOG_PROXY_TYPE[\"LOG\"] = \"L\";\n LOG_PROXY_TYPE[\"WARN\"] = \"W\";\n LOG_PROXY_TYPE[\"ERROR\"] = \"E\";\n LOG_PROXY_TYPE[\"UNCAUGHT_ERROR\"] = \"U\";\n})(LOG_PROXY_TYPE || (LOG_PROXY_TYPE = {}));\nfunction makeEvent(type, detail) {\n return new CustomEvent(type, {\n detail\n });\n}\nexport class LogProxy {\n constructor() {\n _defineProperty(this, \"isEnabled\", false);\n _defineProperty(this, \"debug\", void 0);\n _defineProperty(this, \"log\", void 0);\n _defineProperty(this, \"warn\", void 0);\n _defineProperty(this, \"error\", void 0);\n _defineProperty(this, \"eventTarget\", void 0);\n _defineProperty(this, \"handleUncaughtError\", event => {\n var messages = [];\n if (event.error != null) {\n messages.push(event.error);\n }\n if (event.message) {\n messages.push(event.message);\n }\n this.eventTarget.dispatchEvent(makeEvent(LOG_PROXY_TYPE.UNCAUGHT_ERROR, messages));\n });\n _defineProperty(this, \"handleUncaughtRejection\", event => {\n var messages = [];\n if (event.promise != null) {\n messages.push(event.promise.toString());\n }\n if (event.reason) {\n messages.push(event.reason);\n }\n this.eventTarget.dispatchEvent(makeEvent(LOG_PROXY_TYPE.UNCAUGHT_ERROR, messages));\n });\n this.debug = console.debug;\n this.log = console.log;\n this.warn = console.warn;\n this.error = console.error;\n this.eventTarget = new EventTarget();\n }\n enable() {\n var _this = this;\n if (this.isEnabled) {\n return;\n }\n console.debug = function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this.eventTarget.dispatchEvent(makeEvent(LOG_PROXY_TYPE.DEBUG, args));\n _this.debug.apply(console, args);\n };\n console.log = function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n _this.eventTarget.dispatchEvent(makeEvent(LOG_PROXY_TYPE.LOG, args));\n _this.log.apply(console, args);\n };\n console.warn = function () {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n _this.eventTarget.dispatchEvent(makeEvent(LOG_PROXY_TYPE.WARN, args));\n _this.warn.apply(console, args);\n };\n console.error = function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n _this.eventTarget.dispatchEvent(makeEvent(LOG_PROXY_TYPE.ERROR, args));\n _this.error.apply(console, args);\n };\n window.addEventListener('error', this.handleUncaughtError);\n window.addEventListener('unhandledrejection', this.handleUncaughtRejection);\n\n // This forces logger to update its reference to the overriding functions instead of the original\n Log.setLogLevel(Log.level);\n this.isEnabled = true;\n }\n disable() {\n if (!this.isEnabled) {\n return;\n }\n console.debug = this.debug;\n console.log = this.log;\n console.warn = this.warn;\n console.error = this.error;\n window.removeEventListener('error', this.handleUncaughtError);\n window.removeEventListener('unhandledrejection', this.handleUncaughtRejection);\n Log.setLogLevel(Log.level);\n this.isEnabled = false;\n }\n addEventListener(type, listener) {\n // The cast as EventListener is a dumb TypeScript issue\n this.eventTarget.addEventListener(type, listener);\n }\n removeEventListener(type, listener) {\n this.eventTarget.removeEventListener(type, listener);\n }\n}\nexport default LogProxy;\n//# sourceMappingURL=LogProxy.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 { LOG_PROXY_TYPE } from \"./LogProxy.js\";\nclass LogHistory {\n /**\n * Formats log arguments on separate lines\n * Attempts to stringify objects\n * @param messages - The messages/params sent to the log call\n */\n static formatMessages(messages) {\n var formatted = messages.map(m => {\n if (typeof m === 'string') {\n return m;\n }\n\n // Some objects don't stringify nicely, so give some info about the object\n var jsonString = '';\n try {\n jsonString = JSON.stringify(m);\n } catch (e) {\n jsonString = m.toString();\n }\n return jsonString === '{}' ? m.toString() : jsonString;\n });\n return formatted.join('\\t');\n }\n\n /**\n * Formats stack traces to a string with each frame on its own line and indented 1 level\n * @param stack - Stack trace generated in the console\n * @param type - Log type (e.g. log, warn, error)\n */\n static formatStack(stack, type) {\n if (stack === '') {\n return '';\n }\n\n // Some browsers will add a top frame which is just 'Error', some won't\n // We will always add at least 2 frames. 1 creating the error and 1 calling addHistory\n // On error (logger.error) we add a 3rd frame which is overriding console.error\n // For uncaught errors the 3rd frame is not added\n var stringStack = stack.split('\\n').map(line => line.trim());\n switch (type) {\n case LOG_PROXY_TYPE.ERROR:\n stringStack = stringStack.splice(stack[0] === 'Error' ? 4 : 3);\n break;\n case LOG_PROXY_TYPE.UNCAUGHT_ERROR:\n stringStack = stringStack.splice(stack[0] === 'Error' ? 3 : 2);\n break;\n default:\n break;\n }\n return stringStack != null ? \"\\t\".concat(stringStack.join('\\n\\t')) : '';\n }\n constructor(proxy) {\n _defineProperty(this, \"history\", void 0);\n _defineProperty(this, \"offset\", void 0);\n _defineProperty(this, \"limit\", void 0);\n _defineProperty(this, \"isEnabled\", void 0);\n _defineProperty(this, \"proxy\", void 0);\n this.history = [];\n this.offset = 0;\n this.limit = 10000;\n this.isEnabled = false;\n this.proxy = proxy;\n this.addHistory = this.addHistory.bind(this);\n }\n enable() {\n if (this.isEnabled) {\n return;\n }\n this.proxy.addEventListener(LOG_PROXY_TYPE.DEBUG, this.addHistory);\n this.proxy.addEventListener(LOG_PROXY_TYPE.LOG, this.addHistory);\n this.proxy.addEventListener(LOG_PROXY_TYPE.WARN, this.addHistory);\n this.proxy.addEventListener(LOG_PROXY_TYPE.ERROR, this.addHistory);\n this.proxy.addEventListener(LOG_PROXY_TYPE.UNCAUGHT_ERROR, this.addHistory);\n this.isEnabled = true;\n }\n disable() {\n if (!this.isEnabled) {\n return;\n }\n this.proxy.removeEventListener(LOG_PROXY_TYPE.DEBUG, this.addHistory);\n this.proxy.removeEventListener(LOG_PROXY_TYPE.LOG, this.addHistory);\n this.proxy.removeEventListener(LOG_PROXY_TYPE.WARN, this.addHistory);\n this.proxy.removeEventListener(LOG_PROXY_TYPE.ERROR, this.addHistory);\n this.proxy.removeEventListener(LOG_PROXY_TYPE.UNCAUGHT_ERROR, this.addHistory);\n this.isEnabled = false;\n }\n\n /**\n * Adds a call to a console method to the history.\n * @param type - The level of the message to add\n * @param messages - The parameters passed to the console method\n */\n addHistory(_ref) {\n var {\n type,\n detail\n } = _ref;\n var logItem = {\n type: type,\n messages: detail,\n time: new Date()\n };\n switch (type) {\n // Some browsers will add a top frame which is just 'Error', some won't\n // We will always add at least 2 frames. 1 creating the error and 1 calling addHistory\n // On error (logger.error) we add a 3rd frame which is overriding console.error\n // For uncaught errors the 3rd frame is not added\n case LOG_PROXY_TYPE.ERROR:\n case LOG_PROXY_TYPE.UNCAUGHT_ERROR:\n logItem.stack = Error().stack;\n break;\n default:\n break;\n }\n this.history[this.offset % this.limit] = logItem;\n this.offset += 1;\n }\n\n /**\n * Gets LogHistory object\n */\n getHistory() {\n if (this.offset > this.limit) {\n // Wrapped past the limit, get oldest -> end and concat start -> newest\n var startIdx = this.offset % this.limit;\n this.history = this.history.slice(startIdx).concat(this.history.slice(0, startIdx));\n this.offset = this.limit;\n }\n return this.history;\n }\n\n /**\n * Gets the history formatted as a string so it can easily be exported to a txt file\n */\n getFormattedHistory() {\n var historyString = this.getHistory().map(item =>\n // eslint-disable-next-line prefer-template\n \"\".concat(item.time.toISOString(), \" \").concat(item.type, \"\\t\") + \"\".concat(LogHistory.formatMessages(item.messages)) + (item.stack != null ? \"\\n\".concat(LogHistory.formatStack(item.stack, item.type)) : ''));\n return historyString.join('\\n');\n }\n}\nexport default LogHistory;\n//# sourceMappingURL=LogHistory.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); }\n/**\n * An Input component that pops and filters auto complete options as you type.\n *\n * props:\n * @param options :[{\n * title: 'option title for display',\n * value: 'option value' //option value\n * }]\n * @param popperOptions options for the Popper\n * @param onChange called when the value is changed from the pulldown\n * @param inputPlaceholder place holder for the input box\n * @param disabled disable both input & drop down\n * @param className an optional class name applied to the input element\n * @param defaultTitle the default title to display\n * @param spellCheck flag to disable spell checking, defaults to true\n * @param onEnter called when the Enter key is typed in the input element\n *\n */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport memoize from 'memoizee';\nimport classNames from 'classnames';\nimport debounce from 'lodash.debounce';\nimport { Popper } from \"./popper/index.js\";\nimport \"./AutoCompleteInput.css\";\nvar DEBOUNCE_DELAY = 100;\nvar MENU_NAVIGATION_DIRECTION;\n(function (MENU_NAVIGATION_DIRECTION) {\n MENU_NAVIGATION_DIRECTION[\"UP\"] = \"UP\";\n MENU_NAVIGATION_DIRECTION[\"DOWN\"] = \"DOWN\";\n})(MENU_NAVIGATION_DIRECTION || (MENU_NAVIGATION_DIRECTION = {}));\nclass AutoCompleteInput extends Component {\n constructor(props) {\n super(props);\n _defineProperty(this, \"popper\", void 0);\n _defineProperty(this, \"cbContainer\", void 0);\n _defineProperty(this, \"menuContainer\", void 0);\n _defineProperty(this, \"input\", void 0);\n _defineProperty(this, \"getCachedFilteredOptions\", memoize((options, input) => options.filter(\n // supports partial match\n option => option.title.toLowerCase().indexOf(input.toLowerCase()) >= 0)));\n var {\n popperOptions\n } = this.props;\n popperOptions = _objectSpread({\n placement: 'bottom-end',\n modifiers: {\n preventOverflow: {\n enabled: false\n }\n }\n }, popperOptions);\n this.state = {\n title: '',\n filteredOptions: [],\n keyboardOptionIndex: 0,\n menuIsOpen: false,\n inputWidth: 100,\n invalid: false,\n popperOptions\n };\n this.handleMenuKeyDown = this.handleMenuKeyDown.bind(this);\n this.handleMenuBlur = this.handleMenuBlur.bind(this);\n this.handleInputChange = this.handleInputChange.bind(this);\n this.handleInputKeyDown = this.handleInputKeyDown.bind(this);\n this.handleInputBlur = this.handleInputBlur.bind(this);\n this.handelInputFocus = this.handelInputFocus.bind(this);\n this.handleInputClick = this.handleInputClick.bind(this);\n this.updateInputValue = debounce(this.updateInputValue, DEBOUNCE_DELAY);\n this.handleOptionClick = this.handleOptionClick.bind(this);\n this.handleMenuOpened = this.handleMenuOpened.bind(this);\n this.handleMenuExited = this.handleMenuExited.bind(this);\n this.popper = /*#__PURE__*/React.createRef();\n this.cbContainer = /*#__PURE__*/React.createRef();\n this.menuContainer = /*#__PURE__*/React.createRef();\n this.input = /*#__PURE__*/React.createRef();\n }\n setInputWidth() {\n if (this.cbContainer.current) {\n this.setState({\n inputWidth: this.cbContainer.current.getBoundingClientRect().width\n });\n }\n }\n // validation needs to be an exact case-sensitve match on value\n getValueAndValidate(title) {\n if (!title) {\n this.setState({\n invalid: false\n });\n return {\n value: title,\n isValid: false\n };\n }\n\n // validate\n var {\n options\n } = this.props;\n var result = options.filter(option => option.title.toLowerCase() === title.toLowerCase());\n if (result.length < 1) {\n this.setState({\n invalid: true\n });\n return {\n value: title,\n isValid: false\n };\n }\n this.setState({\n invalid: false\n });\n return {\n value: result[0].value,\n isValid: true\n };\n }\n\n // validate typed entries emit change event using value\n updateInputValue(title) {\n var {\n menuIsOpen\n } = this.state;\n var {\n value,\n isValid\n } = this.getValueAndValidate(title);\n if (menuIsOpen) this.processFilterChange(title);\n this.fireOnChange(value, isValid);\n }\n fireOnChange(value) {\n var isValid = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var {\n onChange\n } = this.props;\n onChange(value, isValid);\n }\n processFilterChange(filter) {\n var _this$popper$current;\n var {\n options\n } = this.props;\n var {\n menuIsOpen\n } = this.state;\n var filteredOptions = filter ? this.getCachedFilteredOptions(options, filter) : options;\n var perfectMatch = filteredOptions.length === 1 && filteredOptions[0].title === filter;\n this.setState({\n filteredOptions,\n keyboardOptionIndex: 0\n });\n if (perfectMatch && menuIsOpen) {\n this.closeMenu();\n return;\n }\n (_this$popper$current = this.popper.current) === null || _this$popper$current === void 0 ? void 0 : _this$popper$current.scheduleUpdate(); // filtered options list can change size, may need to be repositioned\n }\n\n resetValue() {\n this.setState({\n title: ''\n });\n this.fireOnChange('');\n }\n handleResize() {\n this.setInputWidth();\n }\n handleMenuKeyDown(event) {\n var _this$input$current;\n var {\n filteredOptions,\n keyboardOptionIndex\n } = this.state;\n var option = filteredOptions[keyboardOptionIndex];\n switch (event.key) {\n case 'Enter':\n case 'ArrowRight':\n event.stopPropagation();\n event.preventDefault();\n if (option != null) {\n this.setState({\n title: option.title,\n invalid: false\n });\n this.fireOnChange(option.value);\n }\n this.closeMenu();\n (_this$input$current = this.input.current) === null || _this$input$current === void 0 ? void 0 : _this$input$current.focus();\n break;\n case 'ArrowUp':\n event.stopPropagation();\n event.preventDefault();\n this.navigateMenu(AutoCompleteInput.MENU_NAVIGATION_DIRECTION.UP);\n break;\n case 'ArrowDown':\n event.stopPropagation();\n event.preventDefault();\n this.navigateMenu(AutoCompleteInput.MENU_NAVIGATION_DIRECTION.DOWN);\n break;\n case 'Tab':\n event.stopPropagation();\n event.preventDefault();\n if (event.shiftKey) {\n this.navigateMenu(AutoCompleteInput.MENU_NAVIGATION_DIRECTION.UP);\n break;\n }\n this.navigateMenu(AutoCompleteInput.MENU_NAVIGATION_DIRECTION.DOWN);\n break;\n case 'Escape':\n event.preventDefault();\n event.stopPropagation();\n this.closeMenu();\n break;\n default:\n break;\n }\n }\n navigateMenu(direction) {\n var {\n filteredOptions,\n keyboardOptionIndex\n } = this.state;\n var newKeyboardOptionIndex = keyboardOptionIndex;\n if (direction === AutoCompleteInput.MENU_NAVIGATION_DIRECTION.UP) {\n if (keyboardOptionIndex > 0) {\n newKeyboardOptionIndex = (newKeyboardOptionIndex - 1) % filteredOptions.length;\n this.setState({\n keyboardOptionIndex: newKeyboardOptionIndex\n });\n } else if (keyboardOptionIndex === 0) {\n newKeyboardOptionIndex = filteredOptions.length - 1;\n this.setState({\n keyboardOptionIndex: newKeyboardOptionIndex\n });\n }\n } else if (direction === AutoCompleteInput.MENU_NAVIGATION_DIRECTION.DOWN) {\n if (keyboardOptionIndex < filteredOptions.length) {\n newKeyboardOptionIndex = (newKeyboardOptionIndex + 1) % filteredOptions.length;\n this.setState({\n keyboardOptionIndex: newKeyboardOptionIndex\n });\n }\n }\n this.scrollOptionIntoView(newKeyboardOptionIndex);\n }\n handleInputKeyDown(event) {\n var {\n onEnter\n } = this.props;\n var {\n menuIsOpen\n } = this.state;\n if (menuIsOpen) {\n this.handleMenuKeyDown(event);\n } else if (event.key === 'Enter') {\n onEnter();\n } else if (event.key === 'Escape') {\n this.resetValue();\n event.preventDefault();\n event.stopPropagation();\n } else if (!(event.key === 'ArrowRight' || event.key === 'ArrowLeft' || event.key === 'Tab' || event.key === 'Shift')) {\n this.openMenu();\n }\n }\n handleInputChange(event) {\n this.setState({\n title: event.target.value\n });\n this.updateInputValue(event.target.value);\n }\n handleOptionClick(option) {\n var _this$input$current2;\n this.setState({\n title: option.title,\n invalid: false\n });\n this.fireOnChange(option.value);\n this.closeMenu();\n (_this$input$current2 = this.input.current) === null || _this$input$current2 === void 0 ? void 0 : _this$input$current2.focus();\n }\n handelInputFocus() {\n var {\n menuIsOpen\n } = this.state;\n if (!menuIsOpen) {\n this.openMenu();\n }\n }\n handleInputClick() {\n var {\n menuIsOpen\n } = this.state;\n if (!menuIsOpen) {\n this.openMenu();\n }\n }\n handleInputBlur(event) {\n var {\n menuIsOpen\n } = this.state;\n if (menuIsOpen && event.relatedTarget instanceof Element && this.popper.current !== null && this.popper.current.element.contains(event.relatedTarget)) {\n return;\n }\n this.closeMenu(false);\n }\n handleMenuBlur(event) {\n // if blur event is caused by focusing on the input or focus on options don't close menu\n if (event.relatedTarget === this.input.current || event.relatedTarget instanceof Element && this.popper.current !== null && this.popper.current.element.contains(event.relatedTarget)) {\n return;\n }\n this.closeMenu(false);\n }\n handleMenuOpened() {\n var _this$input$current3;\n (_this$input$current3 = this.input.current) === null || _this$input$current3 === void 0 ? void 0 : _this$input$current3.focus();\n }\n handleMenuExited() {\n var {\n menuIsOpen\n } = this.state;\n if (menuIsOpen) {\n this.setState({\n menuIsOpen: false,\n keyboardOptionIndex: 0\n });\n }\n }\n openMenu() {\n var {\n title\n } = this.state;\n this.processFilterChange(title);\n this.setInputWidth();\n this.setState({\n menuIsOpen: true\n });\n\n // https://github.com/reactjs/react-transition-group/issues/382\n window.requestAnimationFrame(() => {\n var _this$popper$current2;\n (_this$popper$current2 = this.popper.current) === null || _this$popper$current2 === void 0 ? void 0 : _this$popper$current2.show();\n });\n }\n closeMenu() {\n var _this$popper$current3;\n var focusInput = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n this.setState({\n menuIsOpen: false,\n keyboardOptionIndex: 0\n });\n if (focusInput) {\n var _this$input$current4;\n (_this$input$current4 = this.input.current) === null || _this$input$current4 === void 0 ? void 0 : _this$input$current4.focus();\n }\n (_this$popper$current3 = this.popper.current) === null || _this$popper$current3 === void 0 ? void 0 : _this$popper$current3.hide();\n }\n scrollOptionIntoView(index) {\n if (this.menuContainer.current) {\n var _this$menuContainer$c;\n (_this$menuContainer$c = this.menuContainer.current.children.item(index)) === null || _this$menuContainer$c === void 0 ? void 0 : _this$menuContainer$c.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest'\n });\n }\n }\n renderMenuElement() {\n var {\n inputWidth\n } = this.state;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classNames('aci-options'),\n ref: this.menuContainer,\n role: \"presentation\",\n onKeyDown: this.handleMenuKeyDown,\n style: {\n width: inputWidth\n },\n onBlur: this.handleMenuBlur\n }, this.renderOptions());\n }\n renderOptions() {\n var {\n noMatchText\n } = this.props;\n var {\n title,\n filteredOptions\n } = this.state;\n if (title && filteredOptions.length === 0) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"no-match\"\n }, noMatchText);\n }\n return filteredOptions.map((option, index) => this.renderOption(option, index));\n }\n renderOption(option, index) {\n var {\n keyboardOptionIndex\n } = this.state;\n var key = \"option-\".concat(index, \"-\").concat(option.value);\n return /*#__PURE__*/React.createElement(\"button\", {\n key: key,\n type: \"button\",\n className: classNames('aci-option-btn', {\n 'keyboard-active': keyboardOptionIndex === index\n }),\n onClick: () => this.handleOptionClick(option),\n onFocus: () => this.setState({\n keyboardOptionIndex: index\n })\n }, option.title);\n }\n render() {\n var {\n options,\n inputPlaceholder,\n disabled,\n className,\n defaultTitle,\n spellCheck,\n 'data-testid': dataTestId\n } = this.props;\n var {\n title,\n menuIsOpen,\n popperOptions,\n invalid\n } = this.state;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"aci-container\",\n ref: this.cbContainer\n }, /*#__PURE__*/React.createElement(\"input\", {\n value: title || defaultTitle,\n className: classNames('form-control', className, 'aci-input', {\n 'is-invalid': invalid && !menuIsOpen\n }),\n ref: this.input,\n onChange: this.handleInputChange,\n placeholder: inputPlaceholder || options[0].title,\n disabled: disabled,\n onFocus: this.handelInputFocus,\n onClick: this.handleInputClick,\n onBlur: this.handleInputBlur,\n onKeyDown: this.handleInputKeyDown,\n spellCheck: spellCheck,\n \"data-testid\": dataTestId\n }), /*#__PURE__*/React.createElement(Popper, {\n ref: this.popper,\n options: popperOptions,\n className: classNames('aci-options-popper interactive'),\n onEntered: this.handleMenuOpened,\n onExited: this.handleMenuExited\n }, this.renderMenuElement()));\n }\n}\n_defineProperty(AutoCompleteInput, \"propTypes\", {\n options: PropTypes.arrayOf(PropTypes.shape({\n title: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired\n })).isRequired,\n popperOptions: PropTypes.shape({}),\n onChange: PropTypes.func,\n inputPlaceholder: PropTypes.string,\n disabled: PropTypes.bool,\n className: PropTypes.string,\n defaultTitle: PropTypes.string,\n spellCheck: PropTypes.bool,\n onEnter: PropTypes.func,\n noMatchText: PropTypes.string,\n 'data-testid': PropTypes.string\n});\n_defineProperty(AutoCompleteInput, \"defaultProps\", {\n onChange() {\n // no-op\n },\n inputPlaceholder: '',\n disabled: false,\n className: '',\n defaultTitle: '',\n popperOptions: null,\n spellCheck: true,\n onEnter() {\n // no-op\n },\n noMatchText: 'No matching items found',\n 'data-testid': undefined\n});\n_defineProperty(AutoCompleteInput, \"MENU_NAVIGATION_DIRECTION\", MENU_NAVIGATION_DIRECTION);\nexport default AutoCompleteInput;\n//# sourceMappingURL=AutoCompleteInput.js.map","import React, { useState, useRef, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport \"./AutoResizeTextarea.css\";\n/**\n * Makes a textarea that auto resizes based on contents, its height grows with new lines.\n * If a delimeter is set, such as \" -\" or \" \", as used by jvm args or env vars\n * then the field will also \"explode\" the value by the delimiter over new lines\n * on focus, and implode on blur. By default, it doesn't word wrap.\n */\nfunction AutoResizeTextarea(_ref) {\n var {\n className = '',\n value: propsValue,\n onChange,\n spellCheck = false,\n placeholder = '',\n disabled = false,\n delimiter = '',\n id = '',\n 'data-testid': dataTestId\n } = _ref;\n var [value, setValue] = useState(propsValue);\n var [isPastedChange, setIsPastedChange] = useState(false);\n var element = useRef(null);\n useEffect(function syncStateWithProp() {\n // keep state value in sync with prop changes\n setValue(propsValue);\n }, [propsValue]);\n function explode(input) {\n // split by delimiter, commonly \" \" or \" -\"\n // strip empty strings (if delimiter is space, and there are multiple spaces in a row)\n // and join with new line and a trimmed delimeter (get rid of leading spaces)\n return input.trim().split(delimiter).filter(string => string) // remove empty strings\n .join(\"\\n\".concat(delimiter.trim()));\n }\n function implode(input) {\n return input.split('\\n').map(string => string.trim()).join(' ');\n }\n function reCalculateLayout() {\n if (!element.current) {\n return;\n }\n element.current.style.height = '0'; // shrink component to get scrollHeight\n var resizedHeight = element.current.scrollHeight + (element.current.offsetHeight - element.current.clientHeight);\n // accounts for border, padding is captured by scroll height\n if (resizedHeight > 0) element.current.style.height = \"\".concat(resizedHeight, \"px\");\n }\n function handleChange(event) {\n var newValue = event.target.value;\n if (isPastedChange) {\n if (delimiter) newValue = explode(newValue);\n setIsPastedChange(false);\n }\n setValue(newValue);\n onChange(newValue);\n }\n function handleFocus() {\n if (!element.current) {\n return;\n }\n if (delimiter) {\n setValue(explode(value));\n reCalculateLayout();\n }\n element.current.scrollLeft = 0;\n // scroll left as it can be disorienting if you click on a long line\n }\n\n // make it explode when dragging the resize handle\n // by making it trigger focus (which normally doesn't\n // trigger when just resizing).\n function handleMouseDown() {\n if (!element.current) return;\n if (document.activeElement === element.current) return;\n element.current.focus();\n }\n function handleBlur() {\n if (delimiter) {\n setValue(implode(value));\n onChange(implode(value));\n }\n }\n function handlePaste() {\n setIsPastedChange(true);\n }\n useEffect(function reCalculate() {\n reCalculateLayout();\n }, [value]);\n return /*#__PURE__*/React.createElement(\"textarea\", {\n ref: element,\n id: id,\n className: classNames(className, 'auto-resize-textarea form-control'),\n placeholder: placeholder,\n value: value,\n rows: 1,\n onChange: handleChange,\n onFocus: handleFocus,\n onMouseDown: handleMouseDown,\n onBlur: handleBlur,\n onPaste: handlePaste,\n spellCheck: spellCheck,\n disabled: disabled,\n \"data-testid\": dataTestId\n });\n}\nAutoResizeTextarea.propTypes = {\n value: PropTypes.string.isRequired,\n onChange: PropTypes.func.isRequired,\n className: PropTypes.string,\n placeholder: PropTypes.string,\n spellCheck: PropTypes.bool,\n disabled: PropTypes.bool,\n delimiter: PropTypes.string,\n id: PropTypes.string,\n 'data-testid': PropTypes.string\n};\nAutoResizeTextarea.defaultProps = {\n className: '',\n id: '',\n placeholder: '',\n disabled: false,\n spellCheck: false,\n delimiter: '',\n 'data-testid': undefined\n};\nexport default AutoResizeTextarea;\n//# sourceMappingURL=AutoResizeTextarea.js.map","import React from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nfunction ButtonGroup(props) {\n var {\n children,\n className,\n style,\n 'data-testid': dataTestId\n } = props;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classNames('btn-group', className),\n style: style,\n role: \"group\",\n \"data-testid\": dataTestId\n }, children);\n}\nButtonGroup.displayName = 'ButtonGroup';\nButtonGroup.propTypes = {\n children: PropTypes.node.isRequired,\n className: PropTypes.string,\n style: PropTypes.object,\n 'data-testid': PropTypes.string\n};\nButtonGroup.defaultProps = {\n className: null,\n style: {},\n 'data-testid': undefined\n};\nexport default ButtonGroup;\n//# sourceMappingURL=ButtonGroup.js.map","/**\n * Returns an error message from an object. Guaranteed not to be an empty string.\n * @param error Error object to get the message from.\n * @returns Error message, or undefined if there is no message.\n */\nexport function getErrorMessage(error) {\n var errorObj = error;\n if (error instanceof CustomEvent) {\n errorObj = error.detail;\n }\n var message = '';\n if (errorObj instanceof Error) {\n message = errorObj.message;\n } else if (errorObj != null) {\n message = \"\".concat(errorObj);\n }\n message = message.trim();\n if (message.length > 0) {\n return message;\n }\n return undefined;\n}\nexport default getErrorMessage;\n//# sourceMappingURL=ErrorUtils.js.map","import { useCallback, useMemo } from 'react';\nimport shortid from 'shortid';\nfunction preventDefault(event) {\n event.preventDefault();\n}\n/**\n * Returns props to associate a form with a submit button. It generates a unique\n * id that will be assigned to the form `id` attribute and a button `form`\n * attribute. Useful for cases where a submit button exists outside of the form.\n *\n * e.g.\n *\n * const preventDefaultFormSubmit = true;\n * const { formProps, submitButtonProps } = useFormWithDetachedSubmitButton(preventDefaultFormSubmit);\n *\n * <form {...formProps}></form>\n * <button {...submitButtonProps} type=\"submit\">Submit</button>\n *\n * @param enableDefaultFormSubmitBehavior Optionally enable default form submit behavior.\n * @returns props that can be spread on a form component + a submit button component.\n */\nexport default function useFormWithDetachedSubmitButton() {\n var enableDefaultFormSubmitBehavior = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var formId = useMemo(() => \"useSubmitButtonRef-\".concat(shortid()), []);\n var submitButtonRef = useCallback(buttonEl => {\n buttonEl === null || buttonEl === void 0 ? void 0 : buttonEl.UNSAFE_getDOMNode().setAttribute('form', formId);\n }, [formId]);\n var formProps = useMemo(() => ({\n id: formId,\n onSubmit: enableDefaultFormSubmitBehavior ? undefined : preventDefault\n }), [formId, enableDefaultFormSubmitBehavior]);\n var submitButtonProps = useMemo(() => ({\n form: formId,\n ref: submitButtonRef\n }), [formId, submitButtonRef]);\n return {\n formProps,\n submitButtonProps\n };\n}\n//# sourceMappingURL=useFormWithDetachedSubmitButton.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); }); }; }\n/* eslint-disable import/prefer-default-export */\nimport { useState, useCallback, useEffect } from 'react';\n\n/**\n * Configuration options for `usePromiseFactory` hook.\n */\n\n/**\n * Manages the result of a promise factory function in a synchronous way.\n * @param promiseFactory The factory function which creates the promise to be awaited.\n * @param args arguments to pass to the factory function.\n * @returns object containing resolved data or error information.\n */\nexport default function usePromiseFactory(promiseFactory, args) {\n var {\n autoLoad = true\n } = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var [data, setData] = useState(null);\n var [error, setError] = useState(null);\n var [isLoading, setIsLoading] = useState(false);\n var loadPromise = useCallback( /*#__PURE__*/_asyncToGenerator(function* () {\n setIsLoading(true);\n try {\n var resolved = yield promiseFactory(...args);\n setData(resolved);\n setError(null);\n } catch (err) {\n setData(null);\n setError(err);\n } finally {\n setIsLoading(false);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }), [promiseFactory, ...args]);\n useEffect(() => {\n if (autoLoad) {\n loadPromise();\n }\n }, [autoLoad, loadPromise]);\n return {\n data,\n error,\n isError: error != null,\n isLoading,\n reload: loadPromise\n };\n}\n//# sourceMappingURL=usePromiseFactory.js.map","import { useEffect, useState } from 'react';\n\n/**\n * Debounces a value.\n * Returns the initial value immediately.\n * Returns the latest value after no changes have occurred for the debounce duration.\n * @param value Value to debounce\n * @param debounceMs Amount of time to debounce\n * @returns The debounced value\n */\nexport function useDebouncedValue(value, debounceMs) {\n var [debouncedValue, setDebouncedValue] = useState(value);\n useEffect(() => {\n var timeoutId = setTimeout(() => {\n setDebouncedValue(value);\n }, debounceMs);\n return () => {\n clearTimeout(timeoutId);\n };\n }, [value, debounceMs]);\n return debouncedValue;\n}\nexport default useDebouncedValue;\n//# sourceMappingURL=useDebouncedValue.js.map","import React from 'react';\nimport { useDebouncedValue } from '@deephaven/react-hooks';\n/**\n * Display a modal after a debounce time. Blocks the screen from interaction immediately,\n * but then waits the set debounce time before rendering the modal.\n */\nfunction DebouncedModal(_ref) {\n var {\n blockInteraction = true,\n children,\n debounceMs,\n isOpen = false\n } = _ref;\n var debouncedIsOpen = useDebouncedValue(isOpen, debounceMs);\n return /*#__PURE__*/React.createElement(React.Fragment, null, blockInteraction && isOpen && /*#__PURE__*/React.createElement(\"div\", {\n className: \"modal-backdrop\",\n style: {\n backgroundColor: 'transparent'\n },\n \"data-testid\": \"debounced-modal-backdrop\"\n }), /*#__PURE__*/React.cloneElement(children, {\n isOpen: isOpen && debouncedIsOpen\n }));\n}\nexport default DebouncedModal;\n//# sourceMappingURL=DebouncedModal.js.map","import React from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport Modal from \"./Modal.js\";\nimport ModalBody from \"./ModalBody.js\";\nimport \"./InfoModal.css\";\n/**\n * A modal that displays a message with an icon. Can be used for informational messages, warnings, or errors.\n * Does not have any buttons and cannot be dismissed.\n */\nfunction InfoModal(_ref) {\n var {\n className,\n icon,\n isOpen = false,\n subtitle,\n title\n } = _ref;\n return /*#__PURE__*/React.createElement(Modal, {\n isOpen: isOpen,\n className: className\n }, /*#__PURE__*/React.createElement(ModalBody, null, /*#__PURE__*/React.createElement(\"div\", {\n className: \"info-modal\"\n }, icon != null && /*#__PURE__*/React.createElement(\"div\", {\n className: \"message-icon\"\n }, /*#__PURE__*/React.createElement(FontAwesomeIcon, {\n icon: icon\n })), /*#__PURE__*/React.createElement(\"div\", {\n className: \"message-header\"\n }, title), subtitle != null && /*#__PURE__*/React.createElement(\"div\", {\n className: \"message-content\"\n }, subtitle))));\n}\nexport default InfoModal;\n//# sourceMappingURL=InfoModal.js.map","import React from 'react';\nfunction ModalFooter(_ref) {\n var {\n className = 'modal-footer',\n children,\n 'data-testid': dataTestId\n } = _ref;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: className,\n \"data-testid\": dataTestId\n }, children);\n}\nexport default ModalFooter;\n//# sourceMappingURL=ModalFooter.js.map","import React, { useRef, useCallback } from 'react';\nimport PropTypes from 'prop-types';\nimport ButtonGroup from \"./ButtonGroup.js\";\nimport Button from \"./Button.js\";\nimport { Modal, ModalBody, ModalFooter, ModalHeader } from \"./modal/index.js\";\n/**\n * A basic modal dialog with two buttons: cancel / confirm.\n *\n * @param isOpen indicates if the modal dialog is open\n * @param headerText text displayed in the modal header\n * @param bodyText text displayed in the modal body\n * @param onCancel callback for the cancel button; if not provided, button not shown\n * @param onConfirm callback for the confirm button\n * @param onDiscard callback for the discard button; if not provided, button not shown\n * @param cancelButtonText optional text for the cancel button, defaults to 'Cancel'\n * @param confirmButtonText optional text for the confirm button, defaults to 'Okay'\n * @param discardButtonText optional text for the discard button, defaults to 'Discard'\n */\nfunction BasicModal(props) {\n var {\n isOpen,\n headerText,\n bodyText,\n onCancel,\n onConfirm,\n onDiscard,\n onModalDisable,\n cancelButtonText = 'Cancel',\n confirmButtonText = 'Okay',\n discardButtonText = 'Discard',\n isConfirmDanger = false,\n children,\n 'data-testid': dataTestId\n } = props;\n var confirmButton = useRef(null);\n var disableModalCheckbox = useRef(null);\n var onConfirmClicked = useCallback(() => {\n if (disableModalCheckbox.current !== null && disableModalCheckbox.current.checked && onModalDisable) {\n onModalDisable();\n }\n onConfirm();\n }, [onConfirm, onModalDisable]);\n var onOpened = useCallback(() => {\n var _confirmButton$curren;\n (_confirmButton$curren = confirmButton.current) === null || _confirmButton$curren === void 0 ? void 0 : _confirmButton$curren.focus();\n }, []);\n var modalBody = '';\n if (isOpen) {\n modalBody = typeof bodyText === 'function' ? bodyText() : bodyText;\n }\n return /*#__PURE__*/React.createElement(Modal, {\n isOpen: isOpen,\n className: \"theme-bg-light\",\n onOpened: onOpened\n }, /*#__PURE__*/React.createElement(ModalHeader, {\n closeButton: false\n }, headerText), /*#__PURE__*/React.createElement(ModalBody, null, modalBody), /*#__PURE__*/React.createElement(ModalFooter, null, onModalDisable && /*#__PURE__*/React.createElement(\"div\", {\n className: \"custom-control custom-checkbox form-group mr-auto\"\n }, /*#__PURE__*/React.createElement(\"input\", {\n type: \"checkbox\",\n className: \"custom-control-input\",\n id: \"move-confirmation-checkbox\",\n defaultChecked: false,\n ref: disableModalCheckbox,\n \"data-testid\": dataTestId !== undefined ? \"\".concat(dataTestId, \"-checkbox-confirm\") : undefined\n }), /*#__PURE__*/React.createElement(\"label\", {\n className: \"custom-control-label\",\n htmlFor: \"move-confirmation-checkbox\"\n }, \"Don't ask me again\")), onDiscard && /*#__PURE__*/React.createElement(Button, {\n kind: \"secondary\",\n className: \"mr-auto\",\n \"data-dismiss\": \"modal\",\n onClick: onDiscard,\n \"data-testid\": dataTestId !== undefined ? \"\".concat(dataTestId, \"-btn-discard\") : undefined\n }, discardButtonText), onCancel && /*#__PURE__*/React.createElement(Button, {\n kind: \"secondary\",\n \"data-dismiss\": \"modal\",\n onClick: onCancel,\n \"data-testid\": dataTestId !== undefined ? \"\".concat(dataTestId, \"-btn-cancel\") : undefined\n }, cancelButtonText), /*#__PURE__*/React.createElement(ButtonGroup, null, /*#__PURE__*/React.createElement(Button, {\n kind: isConfirmDanger ? 'danger' : 'primary',\n onClick: onConfirmClicked,\n ref: confirmButton,\n \"data-testid\": dataTestId !== undefined ? \"\".concat(dataTestId, \"-btn-confirm\") : undefined\n }, confirmButtonText), children)));\n}\nBasicModal.propTypes = {\n isOpen: PropTypes.bool.isRequired,\n headerText: PropTypes.string.isRequired,\n bodyText: PropTypes.oneOfType([PropTypes.string, PropTypes.func]).isRequired,\n onCancel: PropTypes.func,\n onConfirm: PropTypes.func.isRequired,\n onDiscard: PropTypes.func,\n onModalDisable: PropTypes.func,\n cancelButtonText: PropTypes.string,\n confirmButtonText: PropTypes.string,\n discardButtonText: PropTypes.string,\n children: PropTypes.node,\n 'data-testid': PropTypes.string\n};\nBasicModal.defaultProps = {\n children: undefined,\n cancelButtonText: 'Cancel',\n confirmButtonText: 'Okay',\n discardButtonText: 'Discard',\n onCancel: undefined,\n onDiscard: undefined,\n onModalDisable: undefined,\n 'data-testid': undefined\n};\nexport default BasicModal;\n//# sourceMappingURL=BasicModal.js.map","import React from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nvar Button = /*#__PURE__*/React.forwardRef((props, ref) => {\n var {\n children,\n className,\n disabled,\n onClick,\n style,\n id\n } = props;\n return /*#__PURE__*/React.createElement(\"button\", {\n ref: ref,\n type: \"button\",\n className: classNames('btn', className),\n onClick: onClick,\n style: style,\n disabled: disabled,\n id: id\n }, children);\n});\nButton.displayName = 'Button';\nButton.propTypes = {\n children: PropTypes.node,\n className: PropTypes.string,\n disabled: PropTypes.bool,\n onClick: PropTypes.func,\n style: PropTypes.shape({}),\n id: PropTypes.string\n};\nButton.defaultProps = {\n children: null,\n className: '',\n disabled: false,\n onClick: () => null,\n style: {},\n id: ''\n};\nexport default Button;\n//# sourceMappingURL=ButtonOld.js.map","import React, { useCallback, useEffect, useRef } from 'react';\nimport classNames from 'classnames';\nimport \"./CardFlip.css\";\n/**\n * Card flip component, switches between a front and back face being visible.\n * Has logic to handle overflow on body, caused by perspective transforms\n * and moves z-index to top during transition.\n * @param isFlipped true shows second child, false shows first child\n * @param children Expects exactly two children\n * @returns\n */\nfunction CardFlip(_ref) {\n var {\n className,\n isFlipped,\n children,\n 'data-testid': dataTestId\n } = _ref;\n var getComponent = key => {\n if (children.length !== 2) {\n throw new Error('CardFlip requires 2 children to function');\n }\n return children[key];\n };\n var front = useRef(null);\n var transitionStart = useCallback(event => {\n if (event.target === event.currentTarget) {\n document.body.classList.add('card-flip--is-flipping');\n }\n }, []);\n var transitionEnd = useCallback(event => {\n if (event.target === event.currentTarget) {\n document.body.classList.remove('card-flip--is-flipping');\n }\n }, []);\n useEffect(function setIsFlippingClassOnTransitionStart() {\n if (!front.current) throw Error('ref undefined');\n front.current.addEventListener('transitionstart', transitionStart);\n var refObj = front.current;\n return function cleanupListener() {\n if (refObj != null) {\n return refObj.removeEventListener('transitionstart', transitionStart);\n }\n };\n }, [transitionStart]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(className, {\n 'card-flip--show-front': isFlipped,\n 'card-flip--show-back': !isFlipped\n }),\n \"data-testid\": dataTestId\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"card-flip--back\"\n }, getComponent(0)), /*#__PURE__*/React.createElement(\"div\", {\n ref: front,\n className: \"card-flip--front\",\n onTransitionEnd: transitionEnd\n }, getComponent(1)));\n}\nexport default CardFlip;\n//# sourceMappingURL=CardFlip.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// Port of https://github.com/react-bootstrap/react-bootstrap/blob/master/src/Collapse.js\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport { CSSTransition } from 'react-transition-group';\nclass Collapse extends Component {\n static handleEnter(elemParam) {\n var elem = elemParam;\n elem.style.height = '0';\n }\n static handleEntering(elemParam) {\n var elem = elemParam;\n elem.style.height = \"\".concat(Collapse.getHeight(elem), \"px\");\n }\n static handleExiting(elemParam) {\n var elem = elemParam;\n elem.style.height = '0';\n }\n static handleExit(elemParam) {\n var elem = elemParam;\n elem.style.height = \"\".concat(Collapse.getHeight(elem), \"px\");\n }\n static getHeight(elem) {\n var scrollBarWidth = elem.scrollWidth - elem.clientWidth;\n return elem.scrollHeight - scrollBarWidth;\n }\n constructor(props) {\n super(props);\n this.handleEntered = this.handleEntered.bind(this);\n }\n handleEntered(elemParam) {\n var elem = elemParam;\n elem.style.height = '';\n var {\n autoFocusOnShow\n } = this.props;\n if (autoFocusOnShow !== undefined && autoFocusOnShow) {\n var input = elem.querySelector('input, select, textarea');\n if (input != null) {\n input.focus();\n }\n }\n }\n render() {\n var {\n children,\n className,\n in: inTransition,\n 'data-testid': dataTestId\n } = this.props;\n return /*#__PURE__*/React.createElement(CSSTransition, {\n in: inTransition,\n classNames: {\n enterActive: 'collapsing',\n enterDone: 'collapse show',\n exitActive: 'collapsing',\n exitDone: 'collapse'\n },\n onEnter: Collapse.handleEnter,\n onEntering: Collapse.handleEntering,\n onEntered: this.handleEntered,\n onExit: Collapse.handleExit,\n onExiting: Collapse.handleExiting,\n timeout: 350\n }, state => /*#__PURE__*/React.createElement(\"div\", {\n className: classNames({\n collapse: state === 'exited'\n }, className),\n \"data-testid\": dataTestId\n }, children));\n }\n}\n_defineProperty(Collapse, \"propTypes\", {\n className: PropTypes.string,\n in: PropTypes.bool.isRequired,\n children: PropTypes.node.isRequired,\n autoFocusOnShow: PropTypes.bool,\n 'data-testid': PropTypes.string\n});\n_defineProperty(Collapse, \"defaultProps\", {\n className: '',\n autoFocusOnShow: false,\n 'data-testid': undefined\n});\nexport default Collapse;\n//# sourceMappingURL=Collapse.js.map","import React, { useCallback, useEffect, useImperativeHandle, useRef, useState } from 'react';\nimport Log from '@deephaven/log';\nimport { TimeUtils } from '@deephaven/utils';\nimport MaskedInput from \"./MaskedInput.js\";\nimport { DEFAULT_GET_PREFERRED_REPLACEMENT_STRING } from \"./MaskedInputUtils.js\";\nvar log = Log.module('TimeInput');\nvar TIME_PATTERN = '([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]';\nvar EXAMPLES = ['00:00:00', '12:34:56', '23:59:59'];\n// Forward ref causes a false positive for display-name in eslint:\n// https://github.com/yannickcr/eslint-plugin-react/issues/2269\n// eslint-disable-next-line react/display-name\nvar TimeInput = /*#__PURE__*/React.forwardRef((props, ref) => {\n var {\n allowValueWrapping = true,\n className = '',\n onChange = () => false,\n value: propsValue = 0,\n onFocus = () => false,\n onBlur = () => false,\n onSelect = () => false,\n 'data-testid': dataTestId\n } = props;\n var [value, setValue] = useState(TimeUtils.formatTime(propsValue));\n var [selection, _setSelection] = useState();\n var inputRef = useRef(null);\n useImperativeHandle(ref, () => ({\n focus: () => {\n var _inputRef$current;\n (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.focus();\n },\n setSelection: newSelection => {\n var _inputRef$current2;\n (_inputRef$current2 = inputRef.current) === null || _inputRef$current2 === void 0 ? void 0 : _inputRef$current2.focus();\n _setSelection(newSelection);\n }\n }), []);\n useEffect(function setFormattedTime() {\n setValue(TimeUtils.formatTime(propsValue));\n }, [propsValue]);\n function getNextSegmentValue(range, delta, segmentValue) {\n // Delta is backward because negative Y is up\n var maxValue = range.selectionStart === 0 ? 24 : 60;\n var newSegmentValue = parseInt(segmentValue, 10) - delta;\n if (Number.isNaN(newSegmentValue)) {\n newSegmentValue = 0;\n } else if (allowValueWrapping) {\n // Add max value and re-mod so we don't get negative values after mod\n newSegmentValue = (newSegmentValue % maxValue + maxValue) % maxValue;\n } else {\n newSegmentValue = Math.min(Math.max(0, newSegmentValue), maxValue - 1);\n }\n return \"\".concat(newSegmentValue).padStart(2, '0');\n }\n function getPreferredReplacementString(replaceValue, replaceIndex, newChar, selectionStart, selectionEnd) {\n if (selectionStart === 0 && selectionEnd === 2 && replaceIndex === 1 && parseInt(newChar, 10) > 1) {\n // DH-10082 Special case for when typing `3` when it's already 12\n return \"0\".concat(newChar).concat(replaceValue.substring(2));\n }\n return DEFAULT_GET_PREFERRED_REPLACEMENT_STRING(replaceValue, replaceIndex, newChar);\n }\n function handleChange(newValue) {\n log.debug('handleChange', newValue);\n setValue(newValue);\n\n // Only send a change if the value is actually valid\n if (TimeUtils.isTimeString(newValue)) {\n onChange(TimeUtils.parseTime(newValue));\n }\n }\n var handleSelect = useCallback(newSelection => {\n _setSelection(newSelection);\n onSelect(newSelection);\n }, [onSelect]);\n return /*#__PURE__*/React.createElement(MaskedInput, {\n ref: inputRef,\n className: className,\n example: EXAMPLES,\n getNextSegmentValue: getNextSegmentValue,\n getPreferredReplacementString: getPreferredReplacementString,\n onChange: handleChange,\n onSelect: handleSelect,\n pattern: TIME_PATTERN,\n selection: selection,\n value: value,\n onFocus: onFocus,\n onBlur: onBlur,\n \"data-testid\": dataTestId\n });\n});\nTimeInput.defaultProps = {\n allowValueWrapping: true,\n className: '',\n onChange: () => false,\n onSelect: () => false,\n value: 0,\n onFocus: () => false,\n onBlur: () => false,\n 'data-testid': undefined\n};\nexport default TimeInput;\n//# sourceMappingURL=TimeInput.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, { Component } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsCheck, dhSort } from '@deephaven/icons';\nimport { TimeUtils } from '@deephaven/utils';\nimport classNames from 'classnames';\nimport TimeInput from \"./TimeInput.js\";\nimport DropdownMenu from \"./menu-actions/DropdownMenu.js\";\nimport \"./CustomTimeSelect.css\";\nvar CUSTOM_OPTION = -1;\nvar MENU_NAVIGATION_DIRECTION;\n(function (MENU_NAVIGATION_DIRECTION) {\n MENU_NAVIGATION_DIRECTION[\"UP\"] = \"UP\";\n MENU_NAVIGATION_DIRECTION[\"DOWN\"] = \"DOWN\";\n})(MENU_NAVIGATION_DIRECTION || (MENU_NAVIGATION_DIRECTION = {}));\nclass CustomTimeSelect extends Component {\n constructor(props) {\n super(props);\n _defineProperty(this, \"csContainer\", void 0);\n _defineProperty(this, \"menuContainer\", void 0);\n _defineProperty(this, \"button\", void 0);\n _defineProperty(this, \"input\", void 0);\n var {\n value,\n valueToTime\n } = props;\n this.toggleMenu = this.toggleMenu.bind(this);\n this.handleMenuKeyDown = this.handleMenuKeyDown.bind(this);\n this.closeMenu = this.closeMenu.bind(this);\n this.handleOptionClick = this.handleOptionClick.bind(this);\n this.handleOptionFocus = this.handleOptionFocus.bind(this);\n this.handleMenuOpened = this.handleMenuOpened.bind(this);\n this.handleMenuExited = this.handleMenuExited.bind(this);\n this.handleCustomInput = this.handleCustomInput.bind(this);\n this.csContainer = /*#__PURE__*/React.createRef();\n this.menuContainer = /*#__PURE__*/React.createRef();\n this.button = /*#__PURE__*/React.createRef();\n this.input = /*#__PURE__*/React.createRef();\n this.state = {\n keyboardOptionIndex: 0,\n menuIsOpen: false,\n inputWidth: 100,\n customTime: valueToTime(value),\n inputFocused: false\n };\n }\n getSelectedText() {\n var {\n options,\n value,\n placeholder\n } = this.props;\n var {\n customTime\n } = this.state;\n if (value === null) {\n return placeholder;\n }\n for (var i = 0; i < options.length; i += 1) {\n var option = options[i];\n if (option.value === value) {\n return option.title;\n }\n }\n return TimeUtils.formatTime(customTime);\n }\n setInputWidth() {\n if (this.csContainer.current) {\n this.setState({\n inputWidth: this.csContainer.current.getBoundingClientRect().width\n });\n }\n }\n focus() {\n var _this$button$current;\n (_this$button$current = this.button.current) === null || _this$button$current === void 0 ? void 0 : _this$button$current.focus();\n }\n updateInputValue(value) {\n var {\n onChange\n } = this.props;\n onChange(value);\n }\n handleResize() {\n this.setInputWidth();\n }\n handleMenuKeyDown(event) {\n var _this$button$current2;\n var {\n keyboardOptionIndex,\n inputFocused\n } = this.state;\n var {\n options\n } = this.props;\n switch (event.key) {\n case 'Enter':\n case ' ':\n // Space Bar\n if (inputFocused) {\n this.updateFromCustom();\n } else {\n this.updateInputValue(options[keyboardOptionIndex].value);\n }\n this.closeMenu();\n (_this$button$current2 = this.button.current) === null || _this$button$current2 === void 0 ? void 0 : _this$button$current2.focus();\n event.stopPropagation();\n event.preventDefault();\n break;\n case 'Tab':\n if (event.shiftKey) {\n this.handleMenuNavigation(CustomTimeSelect.MENU_NAVIGATION_DIRECTION.UP);\n } else {\n this.handleMenuNavigation(CustomTimeSelect.MENU_NAVIGATION_DIRECTION.DOWN);\n }\n event.stopPropagation();\n event.preventDefault();\n break;\n case 'ArrowUp':\n this.handleMenuNavigation(CustomTimeSelect.MENU_NAVIGATION_DIRECTION.UP);\n event.stopPropagation();\n event.preventDefault();\n break;\n case 'ArrowDown':\n this.handleMenuNavigation(CustomTimeSelect.MENU_NAVIGATION_DIRECTION.DOWN);\n event.stopPropagation();\n event.preventDefault();\n break;\n case 'Escape':\n this.closeMenu();\n break;\n default:\n break;\n }\n }\n handleMenuNavigation(direction) {\n var {\n keyboardOptionIndex,\n inputFocused\n } = this.state;\n var {\n options\n } = this.props;\n var menuOptionsLength = options.length;\n var newKeyboardOptionIndex = keyboardOptionIndex;\n switch (direction) {\n case CustomTimeSelect.MENU_NAVIGATION_DIRECTION.UP:\n if (!inputFocused && keyboardOptionIndex === 0) {\n this.focusInput();\n break;\n } else if (inputFocused) {\n this.focusOption(keyboardOptionIndex);\n }\n if (keyboardOptionIndex > 0 && !inputFocused) {\n newKeyboardOptionIndex = (newKeyboardOptionIndex - 1) % menuOptionsLength;\n this.setState({\n keyboardOptionIndex: newKeyboardOptionIndex\n });\n } else if (keyboardOptionIndex === 0) {\n newKeyboardOptionIndex = menuOptionsLength - 1;\n this.setState({\n keyboardOptionIndex: newKeyboardOptionIndex\n });\n }\n this.scrollOptionIntoView(newKeyboardOptionIndex);\n break;\n case CustomTimeSelect.MENU_NAVIGATION_DIRECTION.DOWN:\n if (!inputFocused && keyboardOptionIndex === menuOptionsLength - 1) {\n this.focusInput();\n break;\n } else if (inputFocused) {\n this.focusOption(keyboardOptionIndex);\n }\n if (keyboardOptionIndex < menuOptionsLength && !(inputFocused && keyboardOptionIndex === 0)) {\n newKeyboardOptionIndex = (newKeyboardOptionIndex + 1) % menuOptionsLength;\n this.setState({\n keyboardOptionIndex: newKeyboardOptionIndex\n });\n }\n this.scrollOptionIntoView(newKeyboardOptionIndex);\n break;\n default:\n break;\n }\n }\n handleOptionClick(event) {\n var optionIndex = Number(event.currentTarget.value);\n var {\n options,\n timeToValue\n } = this.props;\n var {\n customTime\n } = this.state;\n if (optionIndex === CUSTOM_OPTION) {\n var update = timeToValue(customTime);\n this.updateAndClose(update);\n } else {\n this.updateAndClose(options[optionIndex].value);\n }\n }\n updateAndClose(update) {\n var _this$button$current3;\n this.updateInputValue(update);\n this.closeMenu();\n (_this$button$current3 = this.button.current) === null || _this$button$current3 === void 0 ? void 0 : _this$button$current3.focus();\n }\n handleOptionFocus(event) {\n this.setState({\n keyboardOptionIndex: Number(event.target.value)\n });\n }\n handleMenuOpened() {\n var _this$menuContainer$c;\n var {\n options,\n value\n } = this.props;\n var {\n keyboardOptionIndex\n } = this.state;\n this.scrollOptionIntoView(keyboardOptionIndex);\n var activeOption = (_this$menuContainer$c = this.menuContainer.current) === null || _this$menuContainer$c === void 0 ? void 0 : _this$menuContainer$c.querySelector('.cs-option-btn.keyboard-active');\n if (activeOption instanceof HTMLElement) {\n activeOption.focus();\n }\n if (value === null) {\n return;\n }\n var valueIndex = options.map(option => option.value).indexOf(value);\n if (valueIndex < 0) {\n // The custom option should be selected\n this.focusInput();\n }\n }\n focusInput() {\n var _this$input$current;\n (_this$input$current = this.input.current) === null || _this$input$current === void 0 ? void 0 : _this$input$current.focus();\n }\n focusOption(index) {\n var _this$menuContainer$c2;\n var options = (_this$menuContainer$c2 = this.menuContainer.current) === null || _this$menuContainer$c2 === void 0 ? void 0 : _this$menuContainer$c2.querySelector('.cs-options');\n if (options && options.children != null) {\n var option = options.children.item(index);\n if (option instanceof HTMLElement) {\n option.focus();\n }\n }\n }\n handleMenuExited() {\n var {\n menuIsOpen\n } = this.state;\n if (menuIsOpen) {\n this.setState({\n menuIsOpen: false,\n keyboardOptionIndex: 0\n });\n }\n }\n handleCustomInput(value) {\n var {\n timeToValue\n } = this.props;\n var update = timeToValue(value);\n this.updateInputValue(update);\n this.setState({\n customTime: value\n });\n }\n updateFromCustom() {\n var {\n timeToValue\n } = this.props;\n var {\n customTime\n } = this.state;\n var update = timeToValue(customTime);\n this.updateInputValue(update);\n }\n toggleMenu(event) {\n var {\n menuIsOpen\n } = this.state;\n if (menuIsOpen) {\n this.closeMenu();\n } else {\n this.openMenu();\n }\n event.stopPropagation();\n }\n openMenu() {\n this.updateKeyboardIndex();\n this.setInputWidth();\n this.setState({\n menuIsOpen: true\n });\n }\n closeMenu() {\n var focusButton = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n this.setState({\n menuIsOpen: false\n });\n if (focusButton) {\n var _this$button$current4;\n (_this$button$current4 = this.button.current) === null || _this$button$current4 === void 0 ? void 0 : _this$button$current4.focus();\n }\n }\n updateKeyboardIndex() {\n var {\n options,\n value\n } = this.props;\n if (value === null) {\n return;\n }\n var valueIndex = options.map(option => option.value).indexOf(value);\n if (valueIndex > 0) {\n this.setState({\n keyboardOptionIndex: valueIndex\n });\n }\n }\n scrollOptionIntoView(index) {\n var _this$menuContainer$c3;\n var options = (_this$menuContainer$c3 = this.menuContainer.current) === null || _this$menuContainer$c3 === void 0 ? void 0 : _this$menuContainer$c3.querySelector('.cs-options');\n if (options && options.children != null) {\n var activeOption = options.children.item(index);\n if (activeOption instanceof HTMLElement && activeOption.offsetTop > CustomTimeSelect.DROP_DOWN_MENU_HEIGHT) {\n options.scrollTop = activeOption.offsetTop - CustomTimeSelect.DROP_DOWN_MENU_HEIGHT;\n } else if (activeOption instanceof HTMLElement && activeOption.offsetTop < 0 || index === 0) {\n options.scrollTop = 0;\n }\n }\n }\n renderMenuElement() {\n var {\n inputWidth\n } = this.state;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"cs-menu-container\",\n ref: this.menuContainer,\n role: \"presentation\",\n onKeyDown: this.handleMenuKeyDown,\n onClick: event => {\n event.stopPropagation();\n },\n style: {\n width: inputWidth\n }\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"cs-options-container\"\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"cs-options\"\n }, this.renderOptions())));\n }\n renderOptions() {\n var {\n options,\n value,\n icon,\n customText\n } = this.props;\n var {\n keyboardOptionIndex,\n customTime,\n inputFocused\n } = this.state;\n var matchFound = false;\n var optionArray = [];\n for (var index = 0; index < options.length; index += 1) {\n var option = options[index];\n var key = \"option-\".concat(index, \"-\").concat(option.value);\n matchFound = matchFound || option.value === value;\n optionArray.push( /*#__PURE__*/React.createElement(\"button\", {\n key: key,\n type: \"button\",\n value: index,\n className: classNames('cs-option-btn', {\n 'keyboard-active': keyboardOptionIndex === index && !inputFocused\n }),\n onClick: this.handleOptionClick,\n onFocus: this.handleOptionFocus\n }, option.value === value && /*#__PURE__*/React.createElement(FontAwesomeIcon, {\n icon: icon,\n className: \"mr-2\"\n }), option.value !== value && /*#__PURE__*/React.createElement(\"span\", {\n className: \"mr-4\"\n }), option.title));\n }\n optionArray.push( /*#__PURE__*/React.createElement(\"hr\", {\n className: \"cs-divider\",\n key: \"option-divider\"\n }));\n optionArray.push( /*#__PURE__*/React.createElement(\"button\", {\n key: \"option-custom-label\",\n type: \"button\",\n value: CUSTOM_OPTION,\n className: classNames('cs-option-btn', {\n 'keyboard-active': inputFocused\n }),\n onClick: this.handleOptionClick,\n onFocus: this.handleOptionFocus\n }, !matchFound && value !== null ? /*#__PURE__*/React.createElement(FontAwesomeIcon, {\n icon: icon,\n className: \"mr-2\"\n }) : /*#__PURE__*/React.createElement(\"span\", {\n className: \"mr-4\"\n }), customText));\n optionArray.push( /*#__PURE__*/React.createElement(\"div\", {\n key: \"cs-custom-container\",\n className: \"cs-custom-container\"\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: \"mr-2\"\n }), /*#__PURE__*/React.createElement(TimeInput, {\n key: \"option-input\",\n ref: this.input,\n onChange: this.handleCustomInput,\n value: customTime,\n onFocus: () => this.setState({\n inputFocused: true\n }),\n onBlur: () => this.setState({\n inputFocused: false\n })\n }), /*#__PURE__*/React.createElement(\"span\", {\n className: \"ml-2\"\n })));\n optionArray.push( /*#__PURE__*/React.createElement(\"hr\", {\n key: \"option-end\",\n className: \"mb-2\"\n }));\n return optionArray;\n }\n render() {\n var {\n disabled,\n invalid,\n value,\n 'data-testid': dataTestId\n } = this.props;\n var {\n menuIsOpen\n } = this.state;\n var {\n popperOptions\n } = this.props;\n popperOptions = _objectSpread({\n placement: 'bottom-end',\n modifiers: {\n preventOverflow: {\n enabled: false\n }\n }\n }, popperOptions);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"input-group cs-container context-menu\",\n ref: this.csContainer,\n \"data-testid\": dataTestId\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: classNames('input-group-append cs-dropdown', {\n 'cs-dropdown-invalid': invalid\n })\n }, /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n className: classNames('btn cs-btn form-control', {\n 'cs-btn-invalid': invalid\n }),\n ref: this.button,\n onClick: this.toggleMenu,\n disabled: disabled\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: classNames({\n 'text-muted': value === null\n })\n }, this.getSelectedText()), /*#__PURE__*/React.createElement(\"span\", null, /*#__PURE__*/React.createElement(FontAwesomeIcon, {\n icon: dhSort,\n className: \"cs-caret\"\n })), /*#__PURE__*/React.createElement(DropdownMenu, {\n isShown: menuIsOpen,\n actions: {\n menuElement: this.renderMenuElement()\n },\n popperOptions: popperOptions,\n popperClassName: \"CustomTimeSelect\",\n onMenuOpened: this.handleMenuOpened,\n onMenuClosed: this.handleMenuExited,\n menuStyle: {\n maxWidth: '100rem'\n }\n }))));\n }\n}\n_defineProperty(CustomTimeSelect, \"MENU_NAVIGATION_DIRECTION\", MENU_NAVIGATION_DIRECTION);\n_defineProperty(CustomTimeSelect, \"DROP_DOWN_MENU_HEIGHT\", 125);\n_defineProperty(CustomTimeSelect, \"defaultProps\", {\n onChange() {\n // no-op\n },\n value: null,\n disabled: false,\n popperOptions: {},\n icon: vsCheck,\n customText: 'Custom',\n placeholder: 'Select a time',\n valueToTime: value => value === null ? 0 : Math.round(value / 1000),\n timeToValue: time => time * 1000,\n invalid: false,\n 'data-testid': undefined\n});\nexport default CustomTimeSelect;\n//# sourceMappingURL=CustomTimeSelect.js.map","import React, { useCallback, useState } from 'react';\nimport classNames from 'classnames';\nimport Log from '@deephaven/log';\nimport MaskedInput from \"./MaskedInput.js\";\nimport { getNextSegmentValue } from \"./DateInputUtils.js\";\nvar log = Log.module('DateInput');\nvar DATE_PATTERN = '[12][0-9]{3}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])';\nvar EXAMPLES = ['2000-01-01', '2022-12-31'];\nvar DATE_FORMAT = 'YYYY-MM-DD';\nvar DateInput = /*#__PURE__*/React.forwardRef((props, ref) => {\n var {\n className = '',\n onChange = () => undefined,\n defaultValue = '',\n onFocus = () => undefined,\n onBlur = () => undefined,\n 'data-testid': dataTestId\n } = props;\n var [value, setValue] = useState(defaultValue);\n var [selection, setSelection] = useState();\n var handleChange = useCallback(newValue => {\n log.debug('handleChange', newValue);\n setValue(newValue);\n onChange(newValue);\n }, [onChange]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"d-flex flex-row align-items-center\"\n }, /*#__PURE__*/React.createElement(MaskedInput, {\n ref: ref,\n className: classNames(className),\n example: EXAMPLES,\n getNextSegmentValue: getNextSegmentValue,\n onChange: handleChange,\n onSelect: setSelection,\n pattern: DATE_PATTERN,\n placeholder: DATE_FORMAT,\n selection: selection,\n value: value,\n onFocus: onFocus,\n onBlur: onBlur,\n \"data-testid\": dataTestId\n }));\n});\nDateInput.displayName = 'DateInput';\nDateInput.defaultProps = {\n className: '',\n onChange: () => false,\n defaultValue: '',\n onFocus: () => false,\n onBlur: () => false,\n 'data-testid': undefined\n};\nexport default DateInput;\n//# sourceMappingURL=DateInput.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 debounce from 'lodash.debounce';\nimport SearchInput from \"./SearchInput.js\";\nclass DebouncedSearchInput extends PureComponent {\n constructor(props) {\n super(props);\n _defineProperty(this, \"searchInput\", void 0);\n this.searchInput = /*#__PURE__*/React.createRef();\n this.handleChange = this.handleChange.bind(this);\n this.sendUpdate = debounce(this.sendUpdate.bind(this), props.debounceMs);\n this.state = {\n value: props.value\n };\n }\n componentDidUpdate(prevProps) {\n var {\n value\n } = this.props;\n if (prevProps.value !== value) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState({\n value\n });\n }\n }\n focus() {\n var _this$searchInput$cur;\n (_this$searchInput$cur = this.searchInput.current) === null || _this$searchInput$cur === void 0 ? void 0 : _this$searchInput$cur.focus();\n }\n handleChange(event) {\n this.setState({\n value: event.target.value\n }, this.sendUpdate);\n }\n sendUpdate() {\n var {\n onChange\n } = this.props;\n var {\n value\n } = this.state;\n onChange(value);\n }\n render() {\n var {\n placeholder,\n className,\n matchCount,\n id,\n 'data-testid': dataTestId\n } = this.props;\n var {\n value\n } = this.state;\n return /*#__PURE__*/React.createElement(SearchInput, {\n value: value,\n placeholder: placeholder,\n onChange: this.handleChange,\n className: className,\n matchCount: matchCount,\n ref: this.searchInput,\n id: id,\n \"data-testid\": dataTestId\n });\n }\n}\n_defineProperty(DebouncedSearchInput, \"defaultProps\", {\n placeholder: 'Search',\n className: '',\n matchCount: null,\n debounceMs: 250,\n id: '',\n 'data-testid': undefined\n});\nexport default DebouncedSearchInput;\n//# sourceMappingURL=DebouncedSearchInput.js.map","import React, { useCallback, useMemo, useState } from 'react';\nimport classNames from 'classnames';\nimport clamp from 'lodash.clamp';\nimport { vsAdd, vsTrash } from '@deephaven/icons';\nimport { RangeUtils } from '@deephaven/utils';\nimport { Button, ItemList } from \"./index.js\";\n// Display a list of items with an input for adding new items, and Add/Delete buttons\nfunction EditableItemList(props) {\n var {\n isInvalid = false,\n items,\n onAdd = () => undefined,\n onDelete = () => undefined,\n validate = () => null\n } = props;\n var [inputError, setInputError] = useState(null);\n var [selectedRanges, setSelectedRanges] = useState([]);\n var [value, setValue] = useState('');\n var handleSelectionChange = useCallback(ranges => {\n setSelectedRanges(ranges);\n }, []);\n var handleDelete = useCallback(() => {\n onDelete(RangeUtils.getItemsInRanges(items, selectedRanges));\n setSelectedRanges([]);\n }, [items, selectedRanges, onDelete]);\n var handleAdd = useCallback(() => {\n if (value === '') {\n return;\n }\n var validationError = validate(value);\n if (validationError == null) {\n onAdd(value);\n setValue('');\n } else {\n setInputError(validationError);\n }\n }, [value, onAdd, validate]);\n var handleInputChange = useCallback(event => {\n var {\n value: inputValue\n } = event.target;\n setValue(inputValue);\n setInputError(inputValue === '' ? null : validate(inputValue));\n }, [validate]);\n var handleInputFocus = useCallback(() => {\n setSelectedRanges([]);\n }, []);\n var handleInputKeyDown = useCallback(event => {\n if (event.key === 'Enter') {\n handleAdd();\n }\n }, [handleAdd]);\n var containerHeight = useMemo(() => 14 + clamp(items.length, 1, 6) * ItemList.DEFAULT_ROW_HEIGHT, [items.length]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classNames('editable-item-list-container', {\n 'is-invalid': isInvalid\n })\n }, /*#__PURE__*/React.createElement(\"div\", {\n style: {\n height: containerHeight\n }\n }, /*#__PURE__*/React.createElement(ItemList, {\n itemCount: items.length,\n items: items.map((item, index) => ({\n value: item,\n isSelected: RangeUtils.isSelected(selectedRanges, index)\n })),\n offset: 0,\n selectedRanges: selectedRanges,\n onSelectionChange: handleSelectionChange,\n isMultiSelect: true\n })), /*#__PURE__*/React.createElement(\"div\", {\n className: \"d-flex flex-row pt-2\"\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"d-flex flex-grow-1\"\n }, /*#__PURE__*/React.createElement(\"input\", {\n className: classNames('form-control', {\n 'is-invalid': inputError != null\n }),\n placeholder: \"Enter value\",\n type: \"text\",\n value: value,\n onChange: handleInputChange,\n onFocus: handleInputFocus,\n onKeyDown: handleInputKeyDown\n })), /*#__PURE__*/React.createElement(\"div\", {\n className: \"d-flex align-items-start mt-1 ml-2\"\n }, /*#__PURE__*/React.createElement(Button, {\n kind: \"ghost\",\n onClick: handleAdd,\n disabled: inputError != null || value === '',\n icon: vsAdd,\n tooltip: \"Add new item\",\n \"data-testid\": \"add-item-button\"\n }), /*#__PURE__*/React.createElement(Button, {\n kind: \"ghost\",\n onClick: handleDelete,\n disabled: selectedRanges.length === 0,\n icon: vsTrash,\n tooltip: \"Delete selected items\",\n \"data-testid\": \"delete-item-button\"\n }))));\n}\nexport default EditableItemList;\n//# sourceMappingURL=EditableItemList.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 { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { dhSort } from '@deephaven/icons';\nimport classNames from 'classnames';\nimport Checkbox from \"./Checkbox.js\";\nimport Popper from \"./popper/Popper.js\";\nimport \"./HierarchicalCheckboxMenu.css\";\nimport Button from \"./Button.js\";\n/**\n * A pull down menu that displays a hierarchy of checkboxes.\n *\n * Currently supports only two levels of check boxes. The input should be a Map\n * where the keys are the parent names. The values can a boolean if the parent\n * has no children or another Map where keys are child names and values are booleans.\n *\n * Here is an example:\n * const INITIAL_TYPE_MAP = new Map([\n * ['Queries', new Map([['Live', true], ['Batch', true]])],\n * [\n * 'DBA Queries',\n * new Map([\n * ['Data Merge', true],\n * ['Data Validation', true],\n * ['Imports', true],\n * ['Data Services', true],\n * ]),\n * ],\n * ['Helper Queries', true],\n * ]);\n *\n * When a checkbox is changed, this component will make a deep copy of the Map\n * with the appropriate booleans changed. It will then call onUpdateValueMap\n * with the new Map.\n */\nclass HierarchicalCheckboxMenu extends Component {\n static isParentSelected(parent, valueMap) {\n var children = valueMap.get(parent);\n if (children === undefined) {\n return false;\n }\n if (typeof children === 'boolean') {\n // This parent has no children\n return children;\n }\n var includesTrue = Array.from(children.values()).includes(true);\n var includesFalse = Array.from(children.values()).includes(false);\n if (includesTrue && includesFalse) {\n // Indeterminate\n return null;\n }\n return includesTrue;\n }\n constructor(props) {\n super(props);\n this.toggleMenu = this.toggleMenu.bind(this);\n this.toggleValueFor = this.toggleValueFor.bind(this);\n this.selectAll = this.selectAll.bind(this);\n this.clear = this.clear.bind(this);\n this.state = {\n menuIsOpen: false\n };\n }\n toggleMenu(event) {\n event.stopPropagation();\n event.preventDefault();\n this.setState(state => {\n var {\n menuIsOpen\n } = state;\n return {\n menuIsOpen: !menuIsOpen\n };\n });\n }\n toggleValueFor(parent, child) {\n var {\n valueMap,\n onUpdateValueMap\n } = this.props;\n\n // Make a deep copy of the Map and toggle the boolean for parent / child\n var map = new Map(valueMap);\n var children = map.get(parent);\n if (children instanceof Map) {\n var newChildren = new Map(children);\n if (child != null) {\n newChildren.set(child, children.get(child) === undefined);\n } else {\n var parentSelected = HierarchicalCheckboxMenu.isParentSelected(parent, map);\n var newChildValue = parentSelected == null || !parentSelected;\n children.forEach((_, key) => newChildren.set(key, newChildValue));\n }\n map.set(parent, newChildren);\n } else {\n map.set(parent, children == null || !children);\n }\n\n // The parent was clicked so all children must be toggled\n var currentChildren = map.get(parent);\n if (child === undefined && currentChildren !== undefined && typeof currentChildren !== 'boolean') {\n var _parentSelected = HierarchicalCheckboxMenu.isParentSelected(parent, valueMap);\n if (_parentSelected != null && _parentSelected) {\n currentChildren.forEach((_, key) => currentChildren.set(key, false));\n } else {\n // for parent selection of false or null (indeterminate), select everything\n currentChildren.forEach((_, key) => currentChildren.set(key, true));\n }\n }\n onUpdateValueMap(map);\n }\n setAllValues(value) {\n var {\n valueMap,\n onUpdateValueMap\n } = this.props;\n\n // Make a deep copy of the Map and set everything\n var copy = new Map();\n valueMap.forEach((child, parent) => {\n if (typeof child === 'boolean') {\n copy.set(parent, value);\n } else {\n var children = new Map();\n child.forEach((_, key) => children.set(key, value));\n copy.set(parent, children);\n }\n });\n onUpdateValueMap(copy);\n }\n selectAll() {\n this.setAllValues(true);\n }\n clear() {\n this.setAllValues(false);\n }\n renderMenuElement() {\n var {\n valueMap,\n 'data-testid': dataTestId\n } = this.props;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"hcm-menu-container\"\n }, Array.from(valueMap.entries()).map(_ref => {\n var [parent, children] = _ref;\n return /*#__PURE__*/React.createElement(\"div\", {\n key: parent\n }, /*#__PURE__*/React.createElement(Checkbox, {\n className: \"hcm-parent\",\n checked: HierarchicalCheckboxMenu.isParentSelected(parent, valueMap),\n onChange: () => this.toggleValueFor(parent)\n }, parent), children !== undefined && typeof children !== 'boolean' && Array.from(children.entries()).map(_ref2 => {\n var [child, value] = _ref2;\n return /*#__PURE__*/React.createElement(Checkbox, {\n className: \"hcm-child\",\n key: child,\n checked: value,\n onChange: () => this.toggleValueFor(parent, child)\n }, child);\n }));\n }), /*#__PURE__*/React.createElement(Button, {\n kind: \"ghost\",\n onClick: this.selectAll,\n \"data-testid\": dataTestId !== undefined ? \"\".concat(dataTestId, \"-btn-select-all\") : undefined\n }, \"Select All\"), /*#__PURE__*/React.createElement(Button, {\n kind: \"ghost\",\n onClick: this.clear,\n \"data-testid\": dataTestId !== undefined ? \"\".concat(dataTestId, \"-btn-clear\") : undefined\n }, \"Clear\"));\n }\n render() {\n var {\n menuText,\n className,\n icon,\n id,\n 'data-testid': dataTestId\n } = this.props;\n var {\n menuIsOpen\n } = this.state;\n return /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n className: classNames('btn hcm-btn', className),\n onClick: this.toggleMenu,\n id: id,\n \"data-testid\": dataTestId\n }, /*#__PURE__*/React.createElement(\"span\", null, icon && /*#__PURE__*/React.createElement(FontAwesomeIcon, {\n icon: icon,\n className: \"hcm-icon mr-1\"\n }), menuText), /*#__PURE__*/React.createElement(FontAwesomeIcon, {\n icon: dhSort,\n className: \"hcm-icon ml-1\"\n }), /*#__PURE__*/React.createElement(Popper, {\n options: {\n placement: 'bottom'\n },\n isShown: menuIsOpen,\n onExited: () => {\n this.setState({\n menuIsOpen: false\n });\n },\n closeOnBlur: true,\n interactive: true\n }, this.renderMenuElement()));\n }\n}\n_defineProperty(HierarchicalCheckboxMenu, \"defaultProps\", {\n className: '',\n icon: null,\n id: '',\n 'data-testid': undefined\n});\nexport default HierarchicalCheckboxMenu;\n//# sourceMappingURL=HierarchicalCheckboxMenu.js.map","/* eslint-disable react-hooks/exhaustive-deps */\n/* eslint-disable react/display-name */\n\nimport React, { useEffect, useState, useRef } from 'react';\nimport debounce from 'lodash.debounce';\nimport { assertNotNull } from '@deephaven/utils';\nimport \"./RandomAreaPlotAnimation.css\";\nimport ThemeExport from \"./ThemeExport.js\";\nvar VOLATILITY = 0.025; // how spikey the data gets\nvar LOW = 0.9;\nvar HIGH = 0.1;\nvar START_Y = 0.618;\nvar FOREGROUND = ThemeExport['primary-dark'];\nvar GRID_SIZE = 80;\nvar GRID_COLOR = ThemeExport['gray-800'];\nvar BACKGROUND = ThemeExport['gray-900'];\nvar PATTERN = {\n SIZE: 8,\n DOT_SIZE: 2,\n FILL_OPACITY: 0.25\n};\nvar PX_PER_SECOND = 18;\nvar RESIZE_DEBOUNCE = 250;\nvar INTERACTION_TIMEOUT = 60 * 1000;\n\n// Draw a background canvas, paint it with a fun chart looking animation\nvar RandomAreaPlotAnimation = /*#__PURE__*/React.memo(() => {\n var canvas = useRef(null);\n var container = useRef(null);\n var [shade, setShade] = useState(false);\n var scale = window.devicePixelRatio;\n var ctx;\n var pattern;\n var width;\n var height;\n var rAF;\n var lastTimestamp = null;\n var data = [];\n function setCanvasSize() {\n var _ctx;\n // Set canvas size to fill screen\n if (container.current != null) {\n width = container.current.offsetWidth;\n height = container.current.offsetHeight;\n }\n if (canvas.current != null) {\n canvas.current.style.width = \"\".concat(width, \"px\");\n canvas.current.style.height = \"\".concat(height, \"px\");\n canvas.current.width = width * scale;\n canvas.current.height = height * scale;\n }\n (_ctx = ctx) === null || _ctx === void 0 ? void 0 : _ctx.scale(scale, scale);\n }\n\n // Returns the background fill create offscreen as pattern\n function createPatternFill() {\n // create the off-screen canvas\n var canvasPattern = document.createElement('canvas');\n canvasPattern.width = PATTERN.SIZE;\n canvasPattern.height = PATTERN.SIZE;\n var contextPattern = canvasPattern.getContext('2d');\n\n // draw pattern to off-screen context\n if (contextPattern != null) {\n contextPattern.fillStyle = FOREGROUND;\n contextPattern.fillRect(0, 0, PATTERN.DOT_SIZE, PATTERN.DOT_SIZE);\n\n // add an overlay fill\n contextPattern.fillStyle = FOREGROUND + Math.round(255 * PATTERN.FILL_OPACITY).toString(16).padStart(2, '0'); // adds opacity in hex to color\n contextPattern.fillRect(0, 0, PATTERN.SIZE, PATTERN.SIZE);\n }\n return contextPattern === null || contextPattern === void 0 ? void 0 : contextPattern.createPattern(canvasPattern, 'repeat');\n }\n\n /**\n * Generates a step in a random walk between LOW - HIGH given a previous value\n * data is always in 0-1 data space so its scaleable\n * data space is converted to screen space inside draw functions\n * @param prev previous random walk step\n * @return new random walk step\n */\n function randomWalk(prev) {\n var rand = Math.random() - 0.5; // give it directionality\n var change = VOLATILITY * rand; // scale by volatity constant\n\n // ensure directional bounce off approaching edges\n if (prev < HIGH) {\n change = Math.abs(change);\n } else if (prev > LOW) {\n change = -Math.abs(change);\n }\n return prev + change;\n }\n function initData() {\n var startingData = [];\n var y = START_Y; // always start towards the bottom of the screen\n for (var x = 0; x < width + PX_PER_SECOND; x += 1) {\n y = randomWalk(y);\n startingData.push(y);\n }\n return startingData;\n }\n function setDataSize() {\n while (data.length >= width + PX_PER_SECOND) {\n data.pop();\n }\n while (data.length < width + PX_PER_SECOND) {\n data.push(randomWalk(data[data.length - 1]));\n }\n }\n function drawAreaLine(path, context) {\n context.beginPath();\n // start offscreen\n context.moveTo(-1, height + 1);\n context.lineTo(-1, height * path[0]);\n\n // draw the line\n for (var i = 0; i < path.length; i += 1) {\n context.lineTo(i, height * path[i]);\n }\n\n // close offscreen\n context.lineTo(width + PX_PER_SECOND, height * path[path.length - 1]);\n context.lineTo(width + PX_PER_SECOND, height + 1);\n context.closePath();\n }\n function drawGridLines(context) {\n context.beginPath();\n // draw verticals\n for (var x = 1; x < width; x += GRID_SIZE) {\n context.moveTo(x, 0);\n context.lineTo(x, height);\n }\n // draw horizontals\n for (var y = 1; y < height; y += GRID_SIZE) {\n context.moveTo(0, y);\n context.lineTo(width, y);\n }\n }\n\n /**\n * Main draw loop for where the animation happens\n * all the styling happens within drawCanvas from paths generated by other functions\n * @param timestamp passed in callback from requestAnimationFrame\n */\n function drawCanvas(timestamp) {\n var _lastTimestamp, _lastTimestamp2, _lastTimestamp3;\n lastTimestamp = (_lastTimestamp = lastTimestamp) !== null && _lastTimestamp !== void 0 ? _lastTimestamp : timestamp;\n assertNotNull(ctx);\n // clear the canvas\n ctx.fillStyle = BACKGROUND;\n ctx.fillRect(0, 0, width, height);\n drawGridLines(ctx);\n ctx.lineWidth = 1;\n ctx.strokeStyle = GRID_COLOR;\n ctx.stroke();\n\n // for speeds less then 60 px per second, subpixel motion is required to look smooth\n var subPixelMotion = (((_lastTimestamp2 = lastTimestamp) !== null && _lastTimestamp2 !== void 0 ? _lastTimestamp2 : 0) - (timestamp !== null && timestamp !== void 0 ? timestamp : 0)) / (1000 / PX_PER_SECOND);\n ctx.translate(subPixelMotion, 0);\n drawAreaLine(data, ctx);\n ctx.lineWidth = 2;\n ctx.strokeStyle = FOREGROUND;\n ctx.stroke();\n ctx.translate(-subPixelMotion, 0); // we don't pattern to shift however\n if (pattern != null) {\n ctx.fillStyle = pattern;\n }\n ctx.fill();\n ctx.setTransform(scale, 0, 0, scale, 0, 0); // reset the translate matrix to normal\n\n // generate new data points\n if ((timestamp !== null && timestamp !== void 0 ? timestamp : 0) - ((_lastTimestamp3 = lastTimestamp) !== null && _lastTimestamp3 !== void 0 ? _lastTimestamp3 : 0) > 1000 / PX_PER_SECOND) {\n var _lastTimestamp4;\n // number of points to add since last update\n var numberOfPoints = Math.floor(((timestamp !== null && timestamp !== void 0 ? timestamp : 0) - ((_lastTimestamp4 = lastTimestamp) !== null && _lastTimestamp4 !== void 0 ? _lastTimestamp4 : 0)) / (1000 / PX_PER_SECOND));\n for (var i = 0; i < numberOfPoints; i += 1) {\n data.shift();\n data.push(randomWalk(data[data.length - 1]));\n }\n lastTimestamp = timestamp;\n }\n if (rAF != null) {\n cancelAnimationFrame(rAF);\n }\n rAF = requestAnimationFrame(drawCanvas);\n }\n\n // debounce the resize so its not overly aggresive\n var debouncedHandleResize = debounce(() => {\n rAF = requestAnimationFrame(timestamp => {\n setCanvasSize(); // setCanvas can cause lag if not debounced\n\n // fill or remove extra data points\n setDataSize();\n\n // opening devtools triggers a blur then resize,\n // need to reset shade as we are restarting animation\n setShade(false);\n drawCanvas(timestamp);\n });\n }, RESIZE_DEBOUNCE, {\n leading: true\n } // resize immediately, once.\n );\n\n function pauseAnimation() {\n // pause animation when browser window is blurred to conserve CPU usage\n setShade(true);\n if (rAF != null) {\n cancelAnimationFrame(rAF);\n }\n rAF = null;\n lastTimestamp = null;\n }\n\n // when timeout expires, pause animation\n var resetIdleTimeout = debounce(() => {\n pauseAnimation();\n }, INTERACTION_TIMEOUT);\n function startAnimation() {\n // can fire multiple times, check if rAF is null first\n // restart animation loop, and fade back in\n if (rAF == null) {\n setShade(false);\n setCanvasSize();\n setDataSize();\n rAF = requestAnimationFrame(drawCanvas);\n }\n resetIdleTimeout();\n }\n function handleActivity() {\n if (document.hasFocus()) {\n // only if document has focus (mousemove can fire on non-focused tabs)\n startAnimation();\n }\n }\n function handleResize() {\n // pause and debounce animation during resize for better resizing performance\n if (rAF != null) {\n cancelAnimationFrame(rAF);\n }\n resetIdleTimeout(); // treat resizing as a form of activity\n debouncedHandleResize();\n }\n\n // react mount/unmount hooks\n useEffect(() => {\n var _canvas$current;\n ctx = (_canvas$current = canvas.current) === null || _canvas$current === void 0 ? void 0 : _canvas$current.getContext('2d', {\n alpha: false\n });\n setCanvasSize();\n data = initData();\n pattern = createPatternFill();\n\n // start draw loop\n drawCanvas();\n resetIdleTimeout();\n window.addEventListener('resize', handleResize);\n window.addEventListener('focus', startAnimation);\n window.addEventListener('blur', pauseAnimation);\n\n // don't burn cpu if the user is \"idle\", start a timer that resets\n // on any user activity, and on timeout expiry pause the animation\n window.addEventListener('mousemove', handleActivity);\n window.addEventListener('keydown', handleActivity);\n return () => {\n if (rAF != null) {\n cancelAnimationFrame(rAF);\n }\n window.removeEventListener('resize', handleResize);\n window.removeEventListener('focus', startAnimation);\n window.removeEventListener('blur', pauseAnimation);\n window.removeEventListener('mousemove', handleActivity);\n window.removeEventListener('keydown', handleActivity);\n resetIdleTimeout.cancel();\n debouncedHandleResize.cancel();\n };\n }, []);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"random-area-plot-animation-container\",\n ref: container\n }, /*#__PURE__*/React.createElement(\"canvas\", {\n ref: canvas,\n className: shade ? 'shade' : ''\n }));\n});\nexport default RandomAreaPlotAnimation;\n//# sourceMappingURL=RandomAreaPlotAnimation.js.map","import React from 'react';\nimport classNames from 'classnames';\nimport { dhExclamation, vsLink } from '@deephaven/icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport \"./SocketedButton.css\";\nvar SocketedButton = /*#__PURE__*/React.forwardRef((props, ref) => {\n var {\n children,\n className,\n disabled,\n id,\n isLinked,\n isLinkedSource,\n isInvalid,\n onClick,\n onMouseEnter,\n onMouseLeave,\n style,\n 'data-testid': dataTestId\n } = props;\n return /*#__PURE__*/React.createElement(\"button\", {\n ref: ref,\n type: \"button\",\n className: classNames('btn-socketed', {\n 'btn-socketed-linked': isLinked !== undefined && isLinked || isLinkedSource\n }, {\n 'btn-socketed-linked-source': isLinkedSource\n }, {\n 'is-invalid': isInvalid\n }, className),\n id: id,\n onClick: onClick,\n onMouseEnter: onMouseEnter,\n onMouseLeave: onMouseLeave,\n style: style,\n disabled: disabled,\n \"data-testid\": dataTestId\n }, children, /*#__PURE__*/React.createElement(FontAwesomeIcon, {\n icon: vsLink,\n className: \"linked btn-socketed-icon\",\n transform: \"down-1\"\n }), /*#__PURE__*/React.createElement(FontAwesomeIcon, {\n icon: dhExclamation,\n className: \"is-invalid btn-socketed-icon\"\n }));\n});\nSocketedButton.displayName = 'SocketedButton';\nSocketedButton.defaultProps = {\n children: undefined,\n className: '',\n disabled: false,\n id: undefined,\n isLinked: false,\n isLinkedSource: false,\n isInvalid: false,\n onClick: undefined,\n onMouseEnter: undefined,\n onMouseLeave: undefined,\n style: undefined,\n 'data-testid': undefined\n};\nexport default SocketedButton;\n//# sourceMappingURL=SocketedButton.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 { theme } from '@react-spectrum/theme-default';\nimport darkDH from \"./SpectrumThemeDark.module.css\";\nimport lightDH from \"./SpectrumThemeLight.module.css\";\nvar {\n global,\n light,\n dark,\n medium,\n large\n} = theme;\n\n/**\n * Extend light + dark theme variables with DH defaults.\n *\n * A theme is just a mapped collection of css class names that are generated\n * from a collection of css modules.\n *\n * e.g.\n * {\n * global: {\n * spectrum: 'spectrum_9e130c',\n * 'spectrum--medium': 'spectrum--medium_9e130c',\n * 'spectrum--large': 'spectrum--large_9e130c',\n * 'spectrum--darkest': 'spectrum--darkest_9e130c',\n * 'spectrum--dark': 'spectrum--dark_9e130c',\n * 'spectrum--light': 'spectrum--light_9e130c',\n * 'spectrum--lightest': 'spectrum--lightest_9e130c',\n * },\n * light: {\n * 'spectrum--light': 'spectrum--light_a40724',\n * 'dh-spectrum-theme--light': '_dh-spectrum-theme--light_1hblg_22',\n * },\n * dark: {\n * 'spectrum--darkest': 'spectrum--darkest_256eeb',\n * 'dh-spectrum-theme--dark': '_dh-spectrum-theme--dark_f7kge_22',\n * },\n * medium: {\n * 'spectrum--medium': 'spectrum--medium_4b172c',\n * },\n * large: {\n * 'spectrum--large': 'spectrum--large_c40598',\n * },\n * }\n */\n/* eslint-disable import/prefer-default-export */\nexport var themeDHDefault = {\n global,\n light: _objectSpread(_objectSpread({}, light), lightDH),\n dark: _objectSpread(_objectSpread({}, dark), darkDH),\n // scales\n medium,\n large\n};\n//# sourceMappingURL=SpectrumUtils.js.map","/* eslint-disable react/no-array-index-key */\n// array maps being used are static, this is fine.\n\nimport React, { useCallback, useMemo, useRef, useState, useEffect } from 'react';\nimport classNames from 'classnames';\nimport TimeInput from \"./TimeInput.js\";\nimport StyleExports from \"./TimeSlider.module.css\";\nimport \"./TimeSlider.css\";\nvar HANDLE_SIZE = parseInt(StyleExports['handle-size'], 10);\nvar POPOVER_WIDTH = parseInt(StyleExports['popover-width'], 10);\nvar SECONDS_IN_DAY = 24 * 60 * 60 - 1; // Max is actually 23:59:59\nvar SNAP_NEAREST_MINUTES = 5 * 60; // rounds in 5 minute intervals\n\n/**\n * Creates a time slider for setting a start and end time, that can also run overnight\n * @param props takes times in seconds 0 - 86399 and a callback\n */\nfunction TimeSlider(_ref) {\n var {\n startTime: propStartTime,\n endTime: propEndTime,\n onChange,\n isStartModified = false,\n isEndModified = false,\n 'data-testid': dataTestId\n } = _ref;\n var [startTime, setStartTime] = useState(propStartTime);\n var [endTime, setEndTime] = useState(propEndTime);\n var track = useRef(null); // we need the track width while calulculating time from handle drag\n\n // updates state if props change\n useEffect(function setTimeOnPropTimeChange() {\n setStartTime(propStartTime);\n setEndTime(propEndTime);\n }, [propStartTime, propEndTime]);\n var updateTime = useCallback((newStartTime, newEndTime) => {\n var start = newStartTime;\n var end = newEndTime;\n if (start === end) {\n if (end < SECONDS_IN_DAY) {\n end += 1;\n } else {\n start -= 1;\n }\n }\n setStartTime(start);\n setEndTime(end);\n onChange({\n startTime: start,\n endTime: end\n });\n }, [setStartTime, setEndTime, onChange]);\n var handleStartTimeChange = useCallback(newStartTime => {\n updateTime(newStartTime, endTime);\n }, [updateTime, endTime]);\n var handleEndTimeChange = useCallback(newEndTime => {\n updateTime(startTime, newEndTime);\n }, [updateTime, startTime]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"time-slider\",\n \"data-testid\": dataTestId\n }, /*#__PURE__*/React.createElement(PopOvers, {\n startTime: startTime,\n endTime: endTime,\n onStartTimeChange: handleStartTimeChange,\n onEndTimeChange: handleEndTimeChange,\n isStartModified: isStartModified,\n isEndModified: isEndModified\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: \"track\",\n ref: track\n }, /*#__PURE__*/React.createElement(TrackFills, {\n startTime: startTime,\n endTime: endTime\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: \"ticks\"\n }, Array(24).fill(null).map((value, index) => /*#__PURE__*/React.createElement(\"div\", {\n className: \"tick\",\n key: index\n }))), /*#__PURE__*/React.createElement(Handle, {\n track: track,\n time: startTime,\n setTime: handleStartTimeChange\n }), /*#__PURE__*/React.createElement(Handle, {\n track: track,\n time: endTime,\n setTime: handleEndTimeChange\n })), /*#__PURE__*/React.createElement(\"div\", {\n className: \"tick-labels\"\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"tick-label\"\n }, \"0:00\"), /*#__PURE__*/React.createElement(\"div\", {\n className: \"tick-label-wrapper\"\n }, Array(24).fill(null).map((value, index) => /*#__PURE__*/React.createElement(\"div\", {\n className: \"tick-label\",\n key: index\n }, \"\".concat(index + 1, \":00\"))))));\n}\nfunction PopOvers(props) {\n var {\n startTime,\n endTime,\n onStartTimeChange,\n onEndTimeChange,\n isStartModified,\n isEndModified,\n 'data-testid': dataTestId\n } = props;\n var swapTimes = startTime > endTime;\n var [firstTime, setFirstTime] = useState(swapTimes ? endTime : startTime);\n var [secondTime, setSecondTime] = useState(swapTimes ? startTime : endTime);\n var firstTimeRef = useRef(null);\n var secondTimeRef = useRef(null);\n // Keep track of selection in both time inputs\n var firstTimeSelectionRef = useRef(null);\n var secondTimeSelectionRef = useRef(null);\n useEffect(function setTimeOnPropTimeChange() {\n setFirstTime(startTime > endTime ? endTime : startTime);\n setSecondTime(startTime > endTime ? startTime : endTime);\n }, [startTime, endTime]);\n useEffect(function setFocusOnSwapTimesChange() {\n if (firstTimeSelectionRef.current !== null) {\n var _secondTimeRef$curren;\n (_secondTimeRef$curren = secondTimeRef.current) === null || _secondTimeRef$curren === void 0 ? void 0 : _secondTimeRef$curren.setSelection(firstTimeSelectionRef.current);\n }\n if (secondTimeSelectionRef.current !== null) {\n var _firstTimeRef$current;\n (_firstTimeRef$current = firstTimeRef.current) === null || _firstTimeRef$current === void 0 ? void 0 : _firstTimeRef$current.setSelection(secondTimeSelectionRef.current);\n }\n }, [swapTimes]);\n function onFirstTimeChange(value) {\n if (startTime <= endTime) {\n onStartTimeChange(value);\n } else {\n onEndTimeChange(value);\n }\n }\n function onSecondTimeChange(value) {\n if (startTime <= endTime) {\n onEndTimeChange(value);\n } else {\n onStartTimeChange(value);\n }\n }\n var onFirstTimeSelect = useCallback(selection => {\n firstTimeSelectionRef.current = selection;\n secondTimeSelectionRef.current = null;\n }, []);\n var onSecondTimeSelect = useCallback(selection => {\n firstTimeSelectionRef.current = null;\n secondTimeSelectionRef.current = selection;\n }, []);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"time-slider-popovers\"\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"flex\",\n style: {\n flexBasis: \"calc(\".concat(firstTime / SECONDS_IN_DAY * 100, \"% - \").concat(POPOVER_WIDTH / 2, \"px)\")\n }\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: \"handle-popper\"\n }, /*#__PURE__*/React.createElement(\"label\", {\n className: classNames({\n modified: swapTimes ? isEndModified : isStartModified\n })\n }, swapTimes ? 'End Time' : 'Start Time'), /*#__PURE__*/React.createElement(TimeInput, {\n ref: firstTimeRef,\n allowValueWrapping: false,\n value: firstTime,\n onChange: onFirstTimeChange,\n onSelect: onFirstTimeSelect,\n \"data-testid\": dataTestId !== undefined ? \"\".concat(dataTestId, \"-input-1\") : undefined\n })), /*#__PURE__*/React.createElement(\"div\", {\n className: \"flex-spacer\"\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: \"handle-popper\"\n }, /*#__PURE__*/React.createElement(\"label\", {\n className: classNames({\n modified: swapTimes ? isStartModified : isEndModified\n })\n }, swapTimes ? 'Start Time' : 'End Time'), /*#__PURE__*/React.createElement(TimeInput, {\n ref: secondTimeRef,\n allowValueWrapping: false,\n value: secondTime,\n onChange: onSecondTimeChange,\n onSelect: onSecondTimeSelect,\n \"data-testid\": dataTestId !== undefined ? \"\".concat(dataTestId, \"-input-2\") : undefined\n })), /*#__PURE__*/React.createElement(\"div\", {\n className: \"flex\",\n style: {\n flexBasis: \"calc(\".concat((SECONDS_IN_DAY - secondTime) / SECONDS_IN_DAY * 100, \"% - \").concat(POPOVER_WIDTH / 2, \"px)\")\n }\n }));\n}\n/**\n * Shades the area between or outside of handles according to if start or endtime is greater.\n */\nfunction TrackFills(props) {\n var {\n startTime,\n endTime,\n 'data-testid': dataTestId\n } = props;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"track-fills\",\n \"data-testid\": dataTestId\n }, startTime > endTime && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n className: \"track-fill track-fill-start\",\n style: {\n transform: \"scaleX(\".concat(endTime / SECONDS_IN_DAY, \")\")\n }\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: \"track-fill track-fill-end\",\n style: {\n transform: \"scaleX(\".concat((SECONDS_IN_DAY - startTime) / SECONDS_IN_DAY, \")\")\n }\n })), startTime < endTime && /*#__PURE__*/React.createElement(\"div\", {\n className: \"track-fill track-fill-middle\",\n style: {\n transform: \"translateX(\".concat(startTime / SECONDS_IN_DAY * 100, \"%) scaleX(\").concat((endTime - startTime) / SECONDS_IN_DAY, \")\")\n }\n }));\n}\n/**\n * Creates a draggable handle the sets the time\n */\nfunction Handle(props) {\n var {\n track,\n time,\n setTime,\n 'data-testid': dataTestId\n } = props;\n\n /**\n * Takes the time and generate our translation string taking into account handle offset.\n * The handle offset changes for the first and last tick range dynmaically. Normally,\n * the center of the handle (size/2) is the selection origin, but at edges, it becomes either\n * end of the handle, requireing a relative offset range of 0 - 0.5, and 0.5 - 1 of handle size.\n * @param t time in seconds\n */\n var transform = useMemo(() => {\n var ONE_HOUR = 60 * 60;\n var handleOffset = HANDLE_SIZE / 2;\n if (time < ONE_HOUR) {\n handleOffset = time / ONE_HOUR * (HANDLE_SIZE / 2); // 0 - 0.5 Handle size\n } else if (time > 23 * ONE_HOUR) {\n handleOffset = HANDLE_SIZE / 2 + 1 / (SECONDS_IN_DAY - 23 * ONE_HOUR) * (time - 23 * ONE_HOUR) * (HANDLE_SIZE / 2); // 0.5 - 1 Handle size\n }\n\n return \"translateX(calc(\".concat(time / SECONDS_IN_DAY * 100, \"% - \").concat(handleOffset, \"px))\");\n }, [time]);\n var calculatePositionAsTime = useCallback(clientX => {\n if (!track.current) {\n return 0;\n }\n var trackRect = track.current.getBoundingClientRect();\n var leftEdge = Math.max(clientX - trackRect.left, 0);\n // get position as 0-1 on slider and mulitply by seconds in a day to convert to time\n var preciseTime = SECONDS_IN_DAY * Math.min(1, leftEdge / trackRect.width);\n // snap to nearest N(5) minute interval\n var roundedTime = SNAP_NEAREST_MINUTES * Math.round(preciseTime / SNAP_NEAREST_MINUTES);\n // prevent over-rounding to 24:00:00\n var limitMax = Math.min(SECONDS_IN_DAY, roundedTime);\n return limitMax;\n }, [track]);\n var handleMouseMove = useCallback(_ref2 => {\n var {\n clientX\n } = _ref2;\n setTime(calculatePositionAsTime(clientX));\n }, [setTime, calculatePositionAsTime]);\n var handleMouseUp = useCallback(_ref3 => {\n var {\n clientX\n } = _ref3;\n setTime(calculatePositionAsTime(clientX));\n window.removeEventListener('mousemove', handleMouseMove);\n window.removeEventListener('mouseup', handleMouseUp);\n document.documentElement.classList.remove('drag-pointer-events-none');\n }, [setTime, calculatePositionAsTime, handleMouseMove]);\n var startDragListening = useCallback(() => {\n window.addEventListener('mousemove', handleMouseMove);\n window.addEventListener('mouseup', handleMouseUp);\n document.documentElement.classList.add('drag-pointer-events-none');\n }, [handleMouseMove, handleMouseUp]);\n var stopDragListening = useCallback(() => {\n window.removeEventListener('mousemove', handleMouseMove);\n window.removeEventListener('mouseup', handleMouseUp);\n document.documentElement.classList.remove('drag-pointer-events-none');\n }, [handleMouseMove, handleMouseUp]);\n var handleMouseDown = useCallback(() => {\n startDragListening();\n }, [startDragListening]);\n useEffect(function removeListenersOnUnmount() {\n return () => {\n stopDragListening();\n };\n }, [stopDragListening]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"handle-track\",\n style: {\n transform\n }\n }, /*#__PURE__*/React.createElement(\"button\", {\n className: \"handle\",\n type: \"button\",\n \"aria-label\": \"Change time\",\n onMouseDown: handleMouseDown,\n \"data-testid\": dataTestId\n }));\n}\nexport default TimeSlider;\n//# sourceMappingURL=TimeSlider.js.map","import React from 'react';\nimport classNames from 'classnames';\nimport { CSSTransition } from 'react-transition-group';\nimport { vsClose } from '@deephaven/icons';\nimport Button from \"./Button.js\";\nimport ThemeExport from \"./ThemeExport.js\";\nimport \"./ToastNotification.css\";\nfunction ToastNotification(_ref) {\n var {\n buttons,\n isShown = false,\n classNames: classNamesProp,\n message,\n type,\n onClick,\n onDismiss,\n 'data-testid': dataTestId\n } = _ref;\n var hasButtons = buttons && buttons.length !== 0;\n return /*#__PURE__*/React.createElement(CSSTransition, {\n in: isShown,\n timeout: ThemeExport.transitionMs,\n classNames: \"toast-notification-slide-up\",\n mountOnEnter: true,\n unmountOnExit: true\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: classNames('toast-notification', classNamesProp, type),\n role: \"presentation\",\n onClick: onClick,\n onKeyPress: onClick,\n \"data-testid\": dataTestId\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"message-container\"\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: \"message\"\n }, message)), /*#__PURE__*/React.createElement(CSSTransition, {\n in: hasButtons,\n timeout: ThemeExport.transitionSlowMs,\n classNames: \"fade\",\n mountOnEnter: true,\n unmountOnExit: true\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"buttons-container\"\n }, buttons)), onDismiss && /*#__PURE__*/React.createElement(Button, {\n kind: \"ghost\",\n icon: vsClose,\n tooltip: \"Close notification\",\n className: \"my-2\",\n onClick: onDismiss\n })));\n}\nToastNotification.TYPE = Object.freeze({\n ERROR: 'error'\n});\nexport default ToastNotification;\n//# sourceMappingURL=ToastNotification.js.map","import React, { useRef } from 'react';\nimport classNames from 'classnames';\nimport shortid from 'shortid';\nimport \"./ValidateLabelInput.css\";\n/**\n * Takes a child and add a label and validaton error\n */\nexport function ValidateLabelInput(props) {\n var {\n children,\n className,\n labelText,\n hintText,\n isModified,\n validationError,\n showValidationError = true,\n 'data-testid': dataTestId,\n id: idProp\n } = props;\n var {\n current: id\n } = useRef(idProp !== null && idProp !== void 0 ? idProp : shortid());\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"label\", {\n className: classNames('validate-label', className, {\n modified: isModified\n }),\n htmlFor: id,\n \"data-testid\": dataTestId\n }, labelText), React.Children.toArray(children).map(child => {\n if (! /*#__PURE__*/React.isValidElement(child)) {\n // eslint-disable-next-line react/jsx-key\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(className)\n }, child);\n }\n\n // toArray strips null children\n return /*#__PURE__*/React.cloneElement(child, {\n className: classNames(child.props.className, {\n 'is-invalid': validationError\n })\n });\n }), hintText !== undefined && /*#__PURE__*/React.createElement(\"small\", {\n className: \"form-text text-muted\"\n }, hintText), validationError !== undefined && showValidationError && /*#__PURE__*/React.createElement(\"p\", {\n className: \"validate-label-error text-danger\"\n }, validationError));\n}\nexport default ValidateLabelInput;\n//# sourceMappingURL=ValidateLabelInput.js.map","import React from 'react';\nimport { ApiContext } from '@deephaven/jsapi-bootstrap';\nexport function makeApiContextWrapper(dh) {\n return function ApiContextWrapper(_ref) {\n var {\n children\n } = _ref;\n return /*#__PURE__*/React.createElement(ApiContext.Provider, {\n value: dh\n }, children);\n };\n}\nexport default {\n makeApiContextWrapper\n};\n//# sourceMappingURL=HookTestUtils.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); }); }; }\nimport shortid from 'shortid';\nimport Log from '@deephaven/log';\nimport { TimeoutError } from '@deephaven/utils';\nvar log = Log.module('MessageUtils');\nexport var LOGIN_OPTIONS_REQUEST = 'io.deephaven.message.LoginOptions.request';\nexport var SESSION_DETAILS_REQUEST = 'io.deephaven.message.SessionDetails.request';\n\n/**\n * Use a BroadcastChannel for sending messages between tabs, such as when the user logs out.\n */\nexport var BROADCAST_CHANNEL_NAME = 'io.deephaven.broadcast';\n\n/**\n * Event emitted when the user has logged in successfully\n */\nexport var BROADCAST_LOGIN_MESSAGE = 'io.deephaven.broadcast.Login';\n\n/**\n * Event emitted when the user has logged out\n */\nexport var BROADCAST_LOGOUT_MESSAGE = 'io.deephaven.broadcast.Logout';\nexport function isMessage(obj) {\n var message = obj;\n return message != null && typeof message.id === 'string' && typeof message.message === 'string';\n}\nexport function isBroadcastLoginMessage(obj) {\n return isMessage(obj) && obj.message === BROADCAST_LOGIN_MESSAGE;\n}\nexport function isBroadcastLogoutMessage(obj) {\n return isMessage(obj) && obj.message === BROADCAST_LOGOUT_MESSAGE;\n}\nexport function isResponse(obj) {\n var response = obj;\n return response != null && typeof response.id === 'string';\n}\n\n/**\n * Make message object with optional payload\n * @param message Message string\n * @param id Unique message id\n * @param payload Payload to send\n * @returns Message\n */\nexport function makeMessage(message) {\n var id = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : shortid();\n var payload = arguments.length > 2 ? arguments[2] : undefined;\n return {\n message,\n id,\n payload\n };\n}\n\n/**\n * Make response object for given message id\n * @param messageId Id of the request message to respond to\n * @param payload Payload to respond with\n * @returns Response\n */\nexport function makeResponse(messageId, payload) {\n return {\n id: messageId,\n payload\n };\n}\nexport function getWindowParent() {\n if (window.opener != null) {\n return window.opener;\n }\n if (window.parent != null && window.parent !== window) {\n return window.parent;\n }\n return null;\n}\n\n/**\n * Request data from the parent window and wait for response\n * @param request Request message to send to the parent window\n * @param timeout Timeout in ms\n * @returns Payload of the given type, or undefined\n */\nexport function requestParentResponse(_x) {\n return _requestParentResponse.apply(this, arguments);\n}\nfunction _requestParentResponse() {\n _requestParentResponse = _asyncToGenerator(function* (request) {\n var timeout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 30000;\n var parent = getWindowParent();\n if (parent == null) {\n throw new Error('window parent is null, unable to send request.');\n }\n return new Promise((resolve, reject) => {\n var timeoutId;\n var id = shortid();\n var listener = event => {\n var {\n data\n } = event;\n if (!isResponse(data)) {\n log.debug('Ignoring non-deephaven response', data);\n return;\n }\n log.debug('Received message', data);\n if ((data === null || data === void 0 ? void 0 : data.id) !== id) {\n log.debug(\"Ignore message, id doesn't match\", data);\n return;\n }\n window.clearTimeout(timeoutId);\n window.removeEventListener('message', listener);\n resolve(data.payload);\n };\n window.addEventListener('message', listener);\n timeoutId = window.setTimeout(() => {\n window.removeEventListener('message', listener);\n reject(new TimeoutError('Request timed out'));\n }, timeout);\n parent.postMessage(makeMessage(request, id), '*');\n });\n });\n return _requestParentResponse.apply(this, arguments);\n}\n//# sourceMappingURL=MessageUtils.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); }\nexport class NoConsolesError extends Error {\n constructor() {\n super(...arguments);\n _defineProperty(this, \"isNoConsolesError\", true);\n }\n}\nexport function isNoConsolesError(error) {\n return error.isNoConsolesError;\n}\nexport default NoConsolesError;\n//# sourceMappingURL=NoConsolesError.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); }); }; }\nimport { requestParentResponse, SESSION_DETAILS_REQUEST } from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport shortid from 'shortid';\nimport NoConsolesError, { isNoConsolesError } from \"./NoConsolesError.js\";\nvar log = Log.module('SessionUtils');\n/**\n * @returns New connection to the server\n */\nexport function createConnection(dh, websocketUrl) {\n log.info(\"Starting connection to '\".concat(websocketUrl, \"'...\"));\n return new dh.IdeConnection(websocketUrl);\n}\n\n/**\n * Create a new session using the default URL\n * @returns A session and config that is ready to use\n */\nexport function createSessionWrapper(_x, _x2, _x3) {\n return _createSessionWrapper.apply(this, arguments);\n}\nfunction _createSessionWrapper() {\n _createSessionWrapper = _asyncToGenerator(function* (dh, connection, details) {\n log.info('Getting console types...');\n var types = yield connection.getConsoleTypes();\n if (types.length === 0) {\n throw new NoConsolesError('No console types available');\n }\n log.info('Available types:', types);\n var type = types[0];\n log.info('Starting session with type', type);\n var session = yield connection.startSession(type);\n var config = {\n type,\n id: shortid.generate()\n };\n log.info('Console session established', config);\n return {\n session,\n config,\n connection,\n details,\n dh\n };\n });\n return _createSessionWrapper.apply(this, arguments);\n}\nexport function createCoreClient(dh, websocketUrl, options) {\n log.info('createCoreClient', websocketUrl);\n return new dh.CoreClient(websocketUrl, options);\n}\nfunction isSessionDetails(obj) {\n return obj != null && typeof obj === 'object';\n}\nfunction requestParentSessionDetails() {\n return _requestParentSessionDetails.apply(this, arguments);\n}\nfunction _requestParentSessionDetails() {\n _requestParentSessionDetails = _asyncToGenerator(function* () {\n var response = yield requestParentResponse(SESSION_DETAILS_REQUEST);\n if (!isSessionDetails(response)) {\n throw new Error(\"Unexpected session details response: \".concat(response));\n }\n return response;\n });\n return _requestParentSessionDetails.apply(this, arguments);\n}\nexport function getSessionDetails() {\n return _getSessionDetails.apply(this, arguments);\n}\nfunction _getSessionDetails() {\n _getSessionDetails = _asyncToGenerator(function* () {\n var searchParams = new URLSearchParams(window.location.search);\n switch (searchParams.get('authProvider')) {\n case 'parent':\n return requestParentSessionDetails();\n }\n return {};\n });\n return _getSessionDetails.apply(this, arguments);\n}\nexport function loadSessionWrapper(_x4, _x5, _x6) {\n return _loadSessionWrapper.apply(this, arguments);\n}\nfunction _loadSessionWrapper() {\n _loadSessionWrapper = _asyncToGenerator(function* (dh, connection, sessionDetails) {\n var sessionWrapper;\n try {\n sessionWrapper = yield createSessionWrapper(dh, connection, sessionDetails);\n } catch (e) {\n // Consoles may be disabled on the server, but we should still be able to start up and open existing objects\n if (!isNoConsolesError(e)) {\n throw e;\n }\n }\n return sessionWrapper;\n });\n return _loadSessionWrapper.apply(this, arguments);\n}\n//# sourceMappingURL=SessionUtils.js.map","import clamp from 'lodash.clamp';\nimport Log from '@deephaven/log';\nvar log = Log.module('ViewportDataUtils');\n\n/**\n * Create a unique string key for a row based on its ordinal position in its\n * source table. This is calculated based on it's offset in the viewport\n * (row.offsetInSnapshot) + the offset of the snapshot.\n * @param row Row from a Table update event.\n * @param offset Offset of the current viewport.\n * @returns Unique string key for the oridinal position of the given row.\n */\nexport function createKeyFromOffsetRow(row, offset) {\n return String(row.offsetInSnapshot + offset);\n}\n\n/**\n * Creates a handler function for a `dh.Table.EVENT_UPDATED` event. Rows that\n * get passed to the handler will be added to or updated in the given\n * `viewportData` object.\n * @param viewportData State object for managing a list of KeyedItem data.\n * @param deserializeRow Converts a DH Row to an item object.\n * @returns Handler function for a `dh.Table.EVENT_UPDATED` event.\n */\nexport function createOnTableUpdatedHandler(viewportData, deserializeRow) {\n /**\n * Handler for a `dh.Table.EVENT_UPDATED` event.\n */\n return function onTableUpdated(event) {\n var {\n columns,\n offset,\n rows\n } = event.detail;\n log.debug('table updated', event.detail);\n rows.forEach(row => {\n var item = deserializeRow(row, columns);\n var keyedItem = {\n key: createKeyFromOffsetRow(row, offset),\n item\n };\n if (viewportData.getItem(keyedItem.key) != null) {\n viewportData.update(keyedItem.key, keyedItem);\n } else {\n viewportData.append(keyedItem);\n }\n });\n };\n}\n\n/**\n * Maps a Row to a key / value object. Keys are mapped ver batim from column\n * names.\n * @param row Row to map to an item.\n * @param columns Columns to map.\n * @returns A key / value object for the row.\n */\nexport function defaultRowDeserializer(row, columns) {\n return columns.reduce((result, col) => {\n // eslint-disable-next-line no-param-reassign\n result[col.name] = row.get(col);\n return result;\n }, {});\n}\n\n/**\n * For windowing to work, the underlying list needs to maintain a KeyedItem for\n * each row in the backing table (even if these rows haven't been loaded yet).\n * This is needed internally by react-spectrum so it can calculate the content\n * area size. This generator can create a range of empty `KeyedItem` objects.\n * @param start The starting index to generate\n * @param end The ending index to generate\n */\nexport function* generateEmptyKeyedItems(start, end) {\n // eslint-disable-next-line no-plusplus\n for (var i = start; i <= end; ++i) {\n yield {\n key: String(i)\n };\n }\n}\n\n/**\n * Get items from a given ListData by a list of keys.\n * @param listData ListData to get items from\n * @param keys Keys to items to be retrieved\n * @returns An array of items matching the given keys\n */\nexport function getItemsFromListData(listData) {\n for (var _len = arguments.length, keys = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n keys[_key - 1] = arguments[_key];\n }\n return keys.map(key => listData.getItem(key));\n}\n\n/**\n * Check a Table to see if it is closed before checking its size property. This\n * is important because calling Table.size on a closed table throws an error. If\n * the table is null or closed, return zero. Otherwise, return the current size.\n * @param table The table to check for its size.\n * @returns The size of the table or zero if the table is null or closed.\n */\nexport function getSize(table) {\n return table == null || isClosed(table) ? 0 : table.size;\n}\n\n/**\n * Check if a given table is closed. Tree tables don't have an `isClosed` prop,\n * so will always return false.\n * @param table The table to check if it is closed.\n */\nexport function isClosed(table) {\n if ('isClosed' in table) {\n return table.isClosed;\n }\n return false;\n}\n\n/**\n * Determine the first and last row index for a viewport + extra leading and\n * trailing padding. Values will be \"clamped\" to stay within the table size.\n * @param firstRow Starting row index for the viewport.\n * @param viewportSize Size of the viewport.\n * @param padding Extra rows to add to the viewport. Will be used for leading\n * and trailing rows.\n * @param tableSize Total table size.\n * @returns Tuple containing indices for the first and last row.\n */\nexport function padFirstAndLastRow(firstRow, viewportSize, padding, tableSize) {\n var lastRow = firstRow + viewportSize - 1;\n var [min, max] = [0, tableSize - 1];\n var first = clamp(firstRow - padding, min, max);\n var last = clamp(lastRow + padding, min, max);\n return [first, last];\n}\n//# sourceMappingURL=ViewportDataUtils.js.map","import { useEffect } from 'react';\nimport Log from '@deephaven/log';\nvar log = Log.module('useTableListener');\nexport var useTableListener = (eventEmitter, eventName, callback) => useEffect(function initEventEmitter() {\n if (eventEmitter == null) {\n log.debug2('Emitter undefined, skipping addEventListener', eventName);\n return;\n }\n log.debug2('Adding listener', eventName);\n return eventEmitter.addEventListener(eventName, callback);\n}, [eventEmitter, eventName, callback]);\nexport default useTableListener;\n//# sourceMappingURL=useTableListener.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); }\nclass ColumnNameError extends Error {\n constructor() {\n super(...arguments);\n _defineProperty(this, \"isColumnNameError\", true);\n }\n}\nexport default ColumnNameError;\n//# sourceMappingURL=ColumnNameError.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); }\nclass TableDisconnectError extends Error {\n constructor() {\n super(...arguments);\n _defineProperty(this, \"isTableDisconnectError\", true);\n }\n}\nexport default TableDisconnectError;\n//# sourceMappingURL=TableDisconnectError.js.map","import { useCallback, useEffect, useState } from 'react';\nimport { useApi } from '@deephaven/jsapi-bootstrap';\nimport Log from '@deephaven/log';\nimport useTableListener from \"./useTableListener.js\";\nimport ColumnNameError from \"./ColumnNameError.js\";\nimport TableDisconnectError from \"./TableDisconnectError.js\";\nvar log = Log.module('useTable');\nvar useTable = (table, firstRow, lastRow, columnNames) => {\n var dh = useApi();\n var [columns, setColumns] = useState(undefined);\n var [data, setData] = useState([]);\n var [columnError, setColumnError] = useState(null);\n var [tableError, setTableError] = useState(null);\n useEffect(() => {\n if (columnNames === undefined) {\n setColumns(table === null || table === void 0 ? void 0 : table.columns);\n setColumnError(null);\n return;\n }\n try {\n setColumns(table === null || table === void 0 ? void 0 : table.findColumns(columnNames));\n setColumnError(null);\n } catch (e) {\n log.error(\"Column not found\", e, columnNames);\n setColumnError(new ColumnNameError('Invalid columnNames argument'));\n }\n }, [table, columnNames]);\n useEffect(() => {\n if (!columns || !table) {\n log.debug2('Table or column not initialized, skip viewport update.');\n return;\n }\n log.debug2('Setting viewport', firstRow, lastRow);\n table.setViewport(firstRow, lastRow, columns);\n }, [columns, table, firstRow, lastRow]);\n var handleUpdate = useCallback(_ref => {\n var {\n detail\n } = _ref;\n if (!columns) {\n log.error('Columns not initialized.');\n return;\n }\n var viewportData = columns.map(column => detail.rows.map(r => r.get(column)));\n setData(viewportData);\n }, [columns]);\n var handleDisconnect = useCallback(() => {\n setTableError(new TableDisconnectError('Table disconnected'));\n }, []);\n var handleReconnect = useCallback(() => {\n setTableError(null);\n }, []);\n useTableListener(table, dh.Table.EVENT_UPDATED, handleUpdate);\n useTableListener(table, dh.Table.EVENT_DISCONNECT, handleDisconnect);\n useTableListener(table, dh.Table.EVENT_RECONNECT, handleReconnect);\n return {\n columns,\n data,\n error: tableError !== null && tableError !== void 0 ? tableError : columnError\n };\n};\nexport default useTable;\n//# sourceMappingURL=useTable.js.map","import { useMemo } from 'react';\nimport useTable from \"./useTable.js\";\n/**\n * Subscribe to viewport updates on a single table column\n * @param table Table to get the data from\n * @param firstRow First viewport row\n * @param lastRow Last viewport row\n * @param columnName Column to get the data from\n * @returns Column object, data array for the column, error, setViewport method\n */\nvar useTableColumn = (table, firstRow, lastRow, columnName) => {\n var columnNames = useMemo(() => [columnName], [columnName]);\n var {\n columns = [],\n data = [],\n error\n } = useTable(table, firstRow, lastRow, columnNames);\n return {\n column: columns[0],\n data: data[0],\n error\n };\n};\nexport default useTableColumn;\n//# sourceMappingURL=useTableColumn.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); }); }; }\nimport React, { useCallback, useState, useRef, useEffect, useMemo } from 'react';\nimport classNames from 'classnames';\nimport { LoadingOverlay, SearchInput, SelectValueList } from '@deephaven/components';\nimport { PromiseUtils } from '@deephaven/utils';\nimport Log from '@deephaven/log';\nimport { Formatter, FormatterUtils } from '@deephaven/jsapi-utils';\nimport { useApi } from '@deephaven/jsapi-bootstrap';\nimport useTableColumn from \"./useTableColumn.js\";\nimport \"./TableInput.css\";\nvar log = Log.module('TableInput');\nvar SIZE_LIMIT = 250;\nfunction TableInput(props) {\n var _table$size, _error$message;\n var {\n className = undefined,\n columnName,\n settings,\n defaultValue = [],\n isInvalid = false,\n onChange = () => false,\n onBlur = () => false,\n table: tablePromise\n } = props;\n var parentRef = useRef(null);\n var dh = useApi();\n var formatter = useMemo(() => {\n var columnFormats = FormatterUtils.getColumnFormats(settings);\n var dateTimeFormatterOptions = FormatterUtils.getDateTimeFormatterOptions(settings);\n var {\n defaultDecimalFormatOptions = {},\n defaultIntegerFormatOptions = {}\n } = settings;\n return new Formatter(dh, columnFormats, dateTimeFormatterOptions, defaultDecimalFormatOptions, defaultIntegerFormatOptions);\n }, [dh, settings]);\n var [searchValue, setSearchValue] = useState('');\n var [selection, setSelection] = useState(new Set(defaultValue));\n var [table, setTable] = useState();\n var listRef = useRef(null);\n var itemCount = Math.min((_table$size = table === null || table === void 0 ? void 0 : table.size) !== null && _table$size !== void 0 ? _table$size : 0, SIZE_LIMIT);\n var {\n column,\n data,\n error\n } = useTableColumn(table, 0, SIZE_LIMIT - 1, columnName);\n var formatValue = useCallback(value => column ? formatter.getFormattedString(value, column.type, column.name) : \"\".concat(value), [column, formatter]);\n var [items, updatedSelection] = useMemo(() => {\n var removedItems = new Set(selection);\n var result = [];\n if (data == null) {\n // Viewport not initialized\n return [result, null];\n }\n data.forEach(v => {\n var value = \"\".concat(v);\n var isSelected = selection.has(value);\n if (isSelected) {\n removedItems.delete(value);\n }\n result.push({\n value,\n displayValue: formatValue(v),\n isSelected\n });\n });\n if (removedItems.size > 0) {\n log.debug2('Selection has items that are missing from the viewport');\n var newSelection = new Set(selection);\n Array.from(removedItems).forEach(value => {\n newSelection.delete(value);\n });\n return [result, newSelection];\n }\n return [result, null];\n }, [data, selection, formatValue]);\n useEffect(() => {\n if (updatedSelection !== null) {\n setSelection(updatedSelection);\n onChange(Array.from(updatedSelection));\n }\n }, [onChange, updatedSelection]);\n var initTable = useCallback( /*#__PURE__*/function () {\n var _ref = _asyncToGenerator(function* (promise) {\n try {\n var resolved = yield promise;\n log.debug('Table resolved', resolved);\n setTable(resolved);\n } catch (e) {\n if (PromiseUtils.isCanceled(e)) {\n return;\n }\n log.error(e);\n }\n });\n return function (_x) {\n return _ref.apply(this, arguments);\n };\n }(), []);\n useEffect(() => {\n var cancelablePromise = PromiseUtils.makeCancelable(tablePromise);\n initTable(cancelablePromise);\n return () => {\n log.debug2('Cancel table promise');\n cancelablePromise.cancel();\n };\n }, [tablePromise, initTable]);\n\n // Scroll the item matching the input into view\n var handleSearchChange = useCallback(e => {\n var {\n value\n } = e.target;\n setSearchValue(value);\n var index = items.findIndex(item => item.displayValue.includes(value));\n if (index > -1) {\n var _listRef$current;\n log.debug2(\"Found \".concat(value, \" at index \").concat(index));\n (_listRef$current = listRef.current) === null || _listRef$current === void 0 ? void 0 : _listRef$current.scrollIntoView(index);\n } else {\n log.debug2(\"\".concat(value, \" not found\"));\n }\n }, [items, listRef]);\n var handleSelect = useCallback(index => {\n log.debug('handleSelect', index);\n if (index >= items.length) {\n log.error('Invalid index', index);\n return;\n }\n var selectedValue = items[index].value;\n var newSelection = new Set(selection);\n if (items[index].isSelected) {\n newSelection.delete(selectedValue);\n } else {\n newSelection.add(selectedValue);\n }\n setSelection(newSelection);\n onChange(Array.from(newSelection));\n }, [onChange, items, selection]);\n var handleSelectAll = useCallback(() => {\n var values = items.map(item => item.value);\n var newSelection = new Set(values);\n setSelection(newSelection);\n onChange(values);\n }, [items, onChange]);\n var handleClearSelection = useCallback(() => {\n setSelection(new Set());\n onChange([]);\n }, [onChange]);\n var handleViewportChange = useCallback(() => {\n // no-op\n }, []);\n var handleChildBlur = useCallback(e => {\n var _parentRef$current;\n var {\n relatedTarget\n } = e;\n log.debug('handleChildBlur', relatedTarget, relatedTarget instanceof HTMLElement, parentRef.current, (_parentRef$current = parentRef.current) === null || _parentRef$current === void 0 ? void 0 : _parentRef$current.contains(relatedTarget));\n if (!relatedTarget || parentRef.current && relatedTarget instanceof HTMLElement && !parentRef.current.contains(relatedTarget)) {\n onBlur();\n }\n }, [onBlur]);\n var isEmpty = items.length === 0;\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: parentRef,\n className: classNames('table-input-container d-flex flex-column position-relative', className)\n }, /*#__PURE__*/React.createElement(SearchInput, {\n disabled: !!error || isEmpty,\n value: searchValue,\n placeholder: \"Search\",\n onChange: handleSearchChange,\n className: \"mb-2 d-flex\",\n onBlur: handleChildBlur\n }), /*#__PURE__*/React.createElement(SelectValueList, {\n className: \"table-input-list\",\n disabled: table === undefined || isEmpty,\n isInvalid: isInvalid,\n items: isEmpty ? [{\n value: 'Empty',\n isSelected: false\n }] : items,\n itemCount: itemCount,\n offset: 0,\n onSelect: handleSelect,\n onViewportChange: handleViewportChange,\n ref: listRef,\n onBlur: handleChildBlur\n }), table && /*#__PURE__*/React.createElement(\"div\", {\n className: \"meta-row\"\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"d-flex align-items-center text-muted small\"\n }, table != null && table.size > itemCount && /*#__PURE__*/React.createElement(React.Fragment, null, \"Table is too large, showing the first \", SIZE_LIMIT, \" items.\")), /*#__PURE__*/React.createElement(\"div\", null, /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n className: \"btn btn-link\",\n onBlur: handleChildBlur,\n onClick: handleSelectAll\n }, \"Select All\"), /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n className: \"btn btn-link mr-a\",\n onBlur: handleChildBlur,\n onClick: handleClearSelection\n }, \"Clear\"))), table == null || error && /*#__PURE__*/React.createElement(\"div\", {\n className: \"h-100 w-100 position-absolute\"\n }, /*#__PURE__*/React.createElement(LoadingOverlay, {\n isLoaded: table != null,\n isLoading: table == null && error == null,\n errorMessage: (_error$message = error === null || error === void 0 ? void 0 : error.message) !== null && _error$message !== void 0 ? _error$message : null\n })));\n}\nTableInput.displayName = 'TableInput';\nTableInput.defaultProps = {\n isInvalid: false,\n className: undefined\n};\nexport default TableInput;\n//# sourceMappingURL=TableInput.js.map","import { BROADCAST_CHANNEL_NAME, isMessage } from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport { EMPTY_FUNCTION } from '@deephaven/utils';\nimport { useEffect, useMemo } from 'react';\nvar log = Log.module('useBroadcastChannel');\nexport function useBroadcastChannel() {\n var onEvent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : EMPTY_FUNCTION;\n var name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : BROADCAST_CHANNEL_NAME;\n var channel = useMemo(() => new BroadcastChannel(name), [name]);\n useEffect(() => () => {\n channel.close();\n }, [channel]);\n useEffect(() => {\n function handleEvent(event) {\n var {\n data\n } = event;\n if (!isMessage(data)) {\n log.debug('Ignoring non-deephaven message', data);\n return;\n }\n log.debug('event received', data);\n onEvent(event);\n }\n channel.addEventListener('message', handleEvent);\n return () => {\n channel.removeEventListener('message', handleEvent);\n };\n }, [channel, onEvent]);\n return channel;\n}\nexport default useBroadcastChannel;\n//# sourceMappingURL=useBroadcastChannel.js.map","import { isBroadcastLoginMessage, isBroadcastLogoutMessage } from '@deephaven/jsapi-utils';\nimport { useCallback } from 'react';\nimport useBroadcastChannel from \"./useBroadcastChannel.js\";\nexport function useBroadcastLoginListener(onLogin, onLogout) {\n var onMessage = useCallback(event => {\n if (isBroadcastLoginMessage(event.data)) {\n onLogin === null || onLogin === void 0 ? void 0 : onLogin(event.data);\n } else if (isBroadcastLogoutMessage(event.data)) {\n onLogout === null || onLogout === void 0 ? void 0 : onLogout(event.data);\n }\n }, [onLogin, onLogout]);\n useBroadcastChannel(onMessage);\n}\nexport default useBroadcastLoginListener;\n//# sourceMappingURL=useBroadcastLoginListener.js.map","import { createContext } from 'react';\nimport Cookies from 'js-cookie';\nimport Log from '@deephaven/log';\nexport var REFRESH_TOKEN_KEY = 'io.deephaven.web.client.auth.refreshToken';\nexport var RefreshTokenContext = /*#__PURE__*/createContext(null);\nvar log = Log.module('RefreshTokenUtils');\n\n/**\n * Read the refresh token from our cookie store\n * @returns RefreshToken if it exists, null otherwise\n */\nexport function readRefreshToken() {\n var cookieToken = Cookies.get(REFRESH_TOKEN_KEY);\n try {\n if (cookieToken != null) {\n return JSON.parse(cookieToken);\n }\n } catch (e) {\n log.error('Error parsing refresh token', cookieToken, e);\n }\n return null;\n}\n\n/**\n * Store the provided refresh token as a cookie\n * @param token The refresh token to store\n */\nexport function storeRefreshToken(token) {\n if (token == null) {\n Cookies.remove(REFRESH_TOKEN_KEY);\n return;\n }\n var cookieToken = JSON.stringify({\n bytes: token.bytes,\n expiry: token.expiry\n });\n var expires = new Date(token.expiry);\n Cookies.set(REFRESH_TOKEN_KEY, cookieToken, {\n secure: true,\n sameSite: 'strict',\n expires\n });\n}\n//# sourceMappingURL=RefreshTokenUtils.js.map","import React, { useCallback, useEffect, useState } from 'react';\nimport { useApi, useClient } from '@deephaven/jsapi-bootstrap';\nimport useBroadcastLoginListener from \"./useBroadcastLoginListener.js\";\nimport { readRefreshToken, RefreshTokenContext, storeRefreshToken } from \"./RefreshTokenUtils.js\";\n/**\n * RefreshTokenBootstrap component. Handles storing and reading the refresh token.\n */\nexport function RefreshTokenBootstrap(_ref) {\n var {\n children\n } = _ref;\n var api = useApi();\n var client = useClient();\n var [token, setToken] = useState(readRefreshToken());\n useEffect(function listenForTokenUpdates() {\n var cleanup = client.addEventListener(api.CoreClient.EVENT_REFRESH_TOKEN_UPDATED, event => {\n var {\n detail: newToken\n } = event;\n storeRefreshToken(newToken);\n setToken(newToken);\n });\n return cleanup;\n }, [api, client, token]);\n var onLogin = useCallback(() => {\n setToken(readRefreshToken());\n }, []);\n var onLogout = useCallback(() => {\n storeRefreshToken(null);\n setToken(null);\n }, []);\n useBroadcastLoginListener(onLogin, onLogout);\n return /*#__PURE__*/React.createElement(RefreshTokenContext.Provider, {\n value: token\n }, children);\n}\nexport default RefreshTokenBootstrap;\n//# sourceMappingURL=RefreshTokenBootstrap.js.map","import debounce from 'lodash.debounce';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport { useApi } from '@deephaven/jsapi-bootstrap';\nimport Log from '@deephaven/log';\nimport { useEffect, useMemo } from 'react';\nvar log = Log.module('useDebouncedViewportSearch');\nexport var DEBOUNCE_VIEWPORT_SEARCH_MS = 200;\n\n/**\n * React hook that returns a debounced search callback for filtering a table\n * viewport.\n * @param viewportData Table viewport to filter\n * @param columnName Column name to filter by\n * @param debounceMs Millisecond value to debounce\n * @returns A debounced search function\n */\nexport default function useDebouncedViewportSearch(viewportData, columnName) {\n var debounceMs = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : DEBOUNCE_VIEWPORT_SEARCH_MS;\n var dh = useApi();\n var tableUtils = useMemo(() => new TableUtils(dh), [dh]);\n var {\n table,\n applyFiltersAndRefresh\n } = viewportData;\n var debouncedSearch = useMemo(() => debounce(searchText => {\n log.debug(\"Applying debounced searchText '\".concat(searchText, \"'\"));\n if (table == null) {\n return;\n }\n var searchTextTrimmed = searchText.trim();\n if (searchTextTrimmed === '') {\n applyFiltersAndRefresh([]);\n return;\n }\n var column = table.findColumn(columnName);\n var value = tableUtils.makeFilterValue(column.type, searchTextTrimmed);\n var filter = [column.filter().contains(value)];\n applyFiltersAndRefresh(filter);\n }, debounceMs), [applyFiltersAndRefresh, columnName, debounceMs, table, tableUtils]);\n useEffect(() => () => {\n log.debug('Cancelling debounced search function');\n debouncedSearch.cancel();\n }, [debouncedSearch]);\n return debouncedSearch;\n}\n//# sourceMappingURL=useDebouncedViewportSearch.js.map","import { useState } from 'react';\nimport { useApi } from '@deephaven/jsapi-bootstrap';\nimport { getSize } from '@deephaven/jsapi-utils';\nimport useTableListener from \"./useTableListener.js\";\n/**\n * React hook that returns the size of a given table or zero if table is null or\n * undefined. The hook subscribes to the dh.Table.EVENT_SIZECHANGED event and\n * triggers a re-render if any events are received to ensure we have the current\n * size.\n * @param table The table to check the size on.\n */\nexport default function useTableSize(table) {\n var [, forceRerender] = useState(0);\n var dh = useApi();\n useTableListener(table, dh.Table.EVENT_SIZECHANGED, () => {\n forceRerender(i => i + 1);\n });\n return getSize(table);\n}\n//# sourceMappingURL=useTableSize.js.map","import { useEffect } from 'react';\nimport { useListData } from '@react-stately/data';\nimport { generateEmptyKeyedItems } from '@deephaven/jsapi-utils';\nimport { usePrevious } from '@deephaven/react-hooks';\nimport useTableSize from \"./useTableSize.js\";\n/**\n * Initializes a ListData instance that can be used for windowed views of a\n * Table. The list must always contain a KeyedItem for every record in the table,\n * so it is pre-populated with empty items that can be updated with real data as\n * the window changes.\n *\n * IMPORTANT: this will create an empty KeyedItem object for every row in the\n * source table. This is intended for \"human\" sized tables such as those used in\n * admin panels. This is not suitable for \"machine\" scale with millions+ rows.\n * @param table The table that will be used to determine the list size.\n * @returns a React Stately ListData object. Note that this object is recreated\n * by React Stately on every render.\n */\nexport default function useInitializeViewportData(table) {\n var viewportData = useListData({});\n var prevTable = usePrevious(table);\n\n // If the table changes size, we need to re-initialize it.\n var size = Math.max(0, useTableSize(table));\n\n // We only want this to fire 1x once the table exists. Note that `useListData`\n // has no way to respond to a reference change of the `table` instance so we\n // have to manually delete any previous keyed items from the list.\n useEffect(() => {\n var currentSize = viewportData.items.length;\n\n // If our table instance has changed, we want to clear all items from state\n if (table !== prevTable && currentSize) {\n viewportData.remove(...viewportData.items.map(_ref => {\n var {\n key\n } = _ref;\n return key;\n }));\n currentSize = 0;\n }\n if (!table) {\n return;\n }\n if (size > currentSize) {\n viewportData.insert(currentSize, ...generateEmptyKeyedItems(currentSize, size - 1));\n } else if (size < currentSize) {\n var keys = viewportData.items.slice(size).map(_ref2 => {\n var {\n key\n } = _ref2;\n return key;\n });\n viewportData.remove(...keys);\n }\n\n // Intentionally excluding viewportData since it changes on every render.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [size, table]);\n return viewportData;\n}\n//# sourceMappingURL=useInitializeViewportData.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); }); }; }\nimport { useCallback, useEffect } from 'react';\nimport { usePromiseFactory } from '@deephaven/react-hooks';\n\n/**\n * Return type of `useSelectDistinctTable` hook.\n */\n\n/**\n * Creates and subscribes to a `selectDistinct` derived table and unsubscribes\n * on unmount.\n * @param table The table to call `selectDistinct` on.\n * @param columnNames The list of column names to pass to `selectDistinct`.\n */\nexport default function useSelectDistinctTable(table) {\n for (var _len = arguments.length, columnNames = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n columnNames[_key - 1] = arguments[_key];\n }\n var selectDistinct = useCallback( /*#__PURE__*/_asyncToGenerator(function* () {\n var _table$selectDistinct;\n return (_table$selectDistinct = table === null || table === void 0 ? void 0 : table.selectDistinct(table.findColumns(columnNames))) !== null && _table$selectDistinct !== void 0 ? _table$selectDistinct : null;\n }),\n // Disabling the exhaustive checks due to the spreading of `columnNames`\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [table, ...columnNames]);\n var {\n data: distinctTable,\n error,\n isError,\n isLoading\n } = usePromiseFactory(selectDistinct, []);\n useEffect(() => () => {\n distinctTable === null || distinctTable === void 0 ? void 0 : distinctTable.close();\n }, [distinctTable]);\n return {\n distinctTable,\n error,\n isError,\n isLoading\n };\n}\n//# sourceMappingURL=useSelectDistinctTable.js.map","import { useCallback } from 'react';\nimport { getSize, padFirstAndLastRow } from '@deephaven/jsapi-utils';\n\n/**\n * Creates a callback function that will set a Table viewport. The callback has\n * a closure over the Table, a desired viewport size, and additional padding.\n * These will be combined with a first row index passed to the callback to\n * calculate the final viewport.\n * @param table Table to call `setViewport` on.\n * @param viewportSize The desired viewport size.\n * @param viewportPadding Padding to add before and after the viewport.\n * @returns A callback function for setting the viewport.\n */\nexport default function useSetPaddedViewportCallback(table, viewportSize, viewportPadding) {\n return useCallback(function setPaddedViewport(firstRow) {\n var [first, last] = padFirstAndLastRow(firstRow, viewportSize, viewportPadding, getSize(table));\n table === null || table === void 0 ? void 0 : table.setViewport(first, last);\n }, [table, viewportPadding, viewportSize]);\n}\n//# sourceMappingURL=useSetPaddedViewportCallback.js.map","import { useEffect } from 'react';\nimport { isClosed } from '@deephaven/jsapi-utils';\n\n/**\n * React hook that closes a given table when the reference changes or when the\n * component unmounts.\n * @param table\n */\nexport default function useTableClose(table) {\n useEffect(() => () => {\n if (table == null) {\n return;\n }\n if (!isClosed(table)) {\n table.close();\n }\n }, [table]);\n}\n//# sourceMappingURL=useTableClose.js.map","import { useMemo } from 'react';\nimport { useApi } from '@deephaven/jsapi-bootstrap';\nimport { TableUtils } from '@deephaven/jsapi-utils';\n\n/**\n * Get a `TableUtils` instance using `dh` api from the current context.\n */\nexport default function useTableUtils() {\n var dh = useApi();\n return useMemo(() => new TableUtils(dh), [dh]);\n}\n//# sourceMappingURL=useTableUtils.js.map","import { useCallback, useEffect } from 'react';\nimport { createOnTableUpdatedHandler, defaultRowDeserializer, isClosed } from '@deephaven/jsapi-utils';\nimport { useApi } from '@deephaven/jsapi-bootstrap';\nimport useInitializeViewportData from \"./useInitializeViewportData.js\";\nimport useSetPaddedViewportCallback from \"./useSetPaddedViewportCallback.js\";\nimport useTableListener from \"./useTableListener.js\";\nimport useTableSize from \"./useTableSize.js\";\n/**\n * Sets up state management for windowed Table viewports. Returns a ListData\n * instance for managing items associated with the Table + a `setViewport`\n * callback for changing the current viewport.\n *\n * IMPORTANT: this will create an empty KeyedItem object for every row in the\n * source table. This is intended for \"human\" sized tables such as those used in\n * admin panels. This is not suitable for \"machine\" scale with millions+ rows.\n * @param table\n * @param viewportSize\n * @param viewportPadding\n * @returns An object for managing Table viewport state. Note that the returned\n * object changes on every render due to the `viewportData` not being memoized.\n * This is due to the underlying React Stately `useListData` implementation that\n * also changes its returned object on every render.\n */\nexport default function useViewportData(_ref) {\n var {\n table,\n viewportSize = 10,\n viewportPadding = 50,\n deserializeRow = defaultRowDeserializer\n } = _ref;\n var viewportData = useInitializeViewportData(table);\n var setViewport = useSetPaddedViewportCallback(table, viewportSize, viewportPadding);\n var applyFiltersAndRefresh = useCallback(filters => {\n table === null || table === void 0 ? void 0 : table.applyFilter(filters);\n setViewport(0);\n }, [setViewport, table]);\n var dh = useApi();\n useTableListener(table, dh.Table.EVENT_UPDATED, createOnTableUpdatedHandler(viewportData, deserializeRow));\n var size = useTableSize(table);\n useEffect(() => {\n if (table && !isClosed(table)) {\n // Hydrate the viewport with real data. This will fetch data from index\n // 0 to the end of the viewport + padding.\n setViewport(0);\n }\n }, [table, setViewport, size]);\n return {\n viewportData,\n size,\n table,\n applyFiltersAndRefresh,\n setViewport\n };\n}\n//# sourceMappingURL=useViewportData.js.map","import React, { createContext, useEffect, useState } from 'react';\nimport 'fira';\nexport var FontsLoadedContext = /*#__PURE__*/createContext(false);\n/**\n * FontBootstrap component. Handles preloading fonts.\n */\nexport function FontBootstrap(_ref) {\n var {\n fontClassNames = ['fira-sans-regular', 'fira-sans-semibold', 'fira-mono'],\n children\n } = _ref;\n var [isLoaded, setIsLoaded] = useState(false);\n useEffect(function initFonts() {\n document.fonts.ready.then(() => {\n setIsLoaded(true);\n });\n }, []);\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FontsLoadedContext.Provider, {\n value: isLoaded\n }, children), /*#__PURE__*/React.createElement(\"div\", {\n id: \"preload-fonts\",\n style: {\n visibility: 'hidden',\n position: 'absolute',\n top: -10000\n }\n }, fontClassNames.map(className => /*#__PURE__*/React.createElement(\"p\", {\n key: className,\n className: className\n }, \"preload\"))));\n}\nexport default FontBootstrap;\n//# sourceMappingURL=FontBootstrap.js.map","/**\n * Map from auth config keys to their values\n * E.g. Map { AuthHandlers → \"io.deephaven.auth.AnonymousAuthenticationHandler\" }\n */\n\n/**\n * Props for the auth plugin component to render\n */\n\n/**\n * Whether the auth plugin is available given the current configuration\n */\n\nexport function isAuthPlugin(plugin) {\n if (plugin == null) return false;\n var authPlugin = plugin;\n return authPlugin.Component !== undefined && typeof authPlugin.isAvailable === 'function';\n}\n//# sourceMappingURL=AuthPlugin.js.map","export var AUTH_HANDLER_TYPE_ANONYMOUS = 'io.deephaven.auth.AnonymousAuthenticationHandler';\nexport var AUTH_HANDLER_TYPE_PSK = 'io.deephaven.authentication.psk.PskAuthenticationHandler';\n//# sourceMappingURL=AuthHandlerTypes.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); }\nexport class AuthenticationError extends Error {\n constructor() {\n super(...arguments);\n _defineProperty(this, \"name\", 'AuthenticationError');\n _defineProperty(this, \"isAuthenticationError\", true);\n }\n}\nexport default AuthenticationError;\n//# sourceMappingURL=AuthenticationError.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); }); }; }\nimport React, { useEffect, useState } from 'react';\nimport { LoadingOverlay } from '@deephaven/components';\nimport { useClient } from '@deephaven/jsapi-bootstrap';\nimport Log from '@deephaven/log';\nimport { CanceledPromiseError, getErrorMessage } from '@deephaven/utils';\nimport AuthenticationError from \"./AuthenticationError.js\";\nvar log = Log.module('AuthPluginBase');\n/**\n * Base AuthPlugin that gets passed a function for retrieving the login options, and then attempting to login with them.\n * @param getLoginOptions Function that returns a promise for the login options\n */\nfunction AuthPluginBase(_ref) {\n var {\n children,\n getLoginOptions\n } = _ref;\n var client = useClient();\n var [error, setError] = useState();\n var [isLoggedIn, setIsLoggedIn] = useState(false);\n useEffect(() => {\n var isCanceled = false;\n function verifyNotCanceled() {\n if (isCanceled) {\n throw new CanceledPromiseError('Login canceled.');\n }\n }\n function login() {\n return _login.apply(this, arguments);\n }\n function _login() {\n _login = _asyncToGenerator(function* () {\n try {\n var loginOptions = yield getLoginOptions();\n verifyNotCanceled();\n log.info('Logging in...');\n yield client.login(loginOptions);\n verifyNotCanceled();\n setIsLoggedIn(true);\n } catch (e) {\n if (!isCanceled) {\n var _getErrorMessage;\n log.error('Unable to login:', e);\n var message = (_getErrorMessage = getErrorMessage(e)) !== null && _getErrorMessage !== void 0 ? _getErrorMessage : 'Unable to login. Verify credentials.';\n setError(new AuthenticationError(message));\n setIsLoggedIn(false);\n }\n }\n });\n return _login.apply(this, arguments);\n }\n login();\n return () => {\n isCanceled = true;\n };\n }, [client, getLoginOptions]);\n if (!isLoggedIn) {\n return /*#__PURE__*/React.createElement(LoadingOverlay, {\n \"data-testid\": \"auth-base-loading\",\n isLoading: error == null,\n isLoaded: false,\n errorMessage: getErrorMessage(error)\n });\n }\n\n // eslint-disable-next-line react/jsx-no-useless-fragment\n return /*#__PURE__*/React.createElement(React.Fragment, null, children);\n}\nexport default AuthPluginBase;\n//# sourceMappingURL=AuthPluginBase.js.map","import React, { useCallback } from 'react';\nimport { useApi } from '@deephaven/jsapi-bootstrap';\nimport { AUTH_HANDLER_TYPE_ANONYMOUS } from \"./AuthHandlerTypes.js\";\nimport AuthPluginBase from \"./AuthPluginBase.js\";\nimport { UserPermissionsOverrideContext } from \"./UserContexts.js\";\nvar permissionsOverrides = {\n canLogout: false\n};\n\n/**\n * AuthPlugin that tries to login anonymously. Fails if anonymous login fails\n */\nfunction Component(_ref) {\n var {\n children\n } = _ref;\n var dh = useApi();\n var getLoginOptions = useCallback(() => ({\n type: dh.CoreClient.LOGIN_TYPE_ANONYMOUS\n }), [dh]);\n return /*#__PURE__*/React.createElement(AuthPluginBase, {\n getLoginOptions: getLoginOptions\n }, /*#__PURE__*/React.createElement(UserPermissionsOverrideContext.Provider, {\n value: permissionsOverrides\n }, children));\n}\nvar AuthPluginAnonymous = {\n Component,\n isAvailable: authHandlers => authHandlers.includes(AUTH_HANDLER_TYPE_ANONYMOUS)\n};\nexport default AuthPluginAnonymous;\n//# sourceMappingURL=AuthPluginAnonymous.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); }); }; }\nimport React from 'react';\nimport { getWindowParent, LOGIN_OPTIONS_REQUEST, requestParentResponse } from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport AuthPluginBase from \"./AuthPluginBase.js\";\nimport { UserPermissionsOverrideContext } from \"./UserContexts.js\";\nvar log = Log.module('AuthPluginParent');\nvar permissionsOverrides = {\n canLogout: false\n};\nfunction isLoginOptions(options) {\n return options != null && typeof options.type === 'string';\n}\nfunction getLoginOptions() {\n return _getLoginOptions.apply(this, arguments);\n}\nfunction _getLoginOptions() {\n _getLoginOptions = _asyncToGenerator(function* () {\n log.info('Logging in by delegating to parent window...');\n var response = yield requestParentResponse(LOGIN_OPTIONS_REQUEST);\n if (!isLoginOptions(response)) {\n throw new Error(\"Unexpected login options response: \".concat(response));\n }\n return response;\n });\n return _getLoginOptions.apply(this, arguments);\n}\nfunction getWindowAuthProvider() {\n var _URLSearchParams$get;\n return (_URLSearchParams$get = new URLSearchParams(window.location.search).get('authProvider')) !== null && _URLSearchParams$get !== void 0 ? _URLSearchParams$get : '';\n}\n\n/**\n * AuthPlugin that tries to delegate to the parent window for authentication. Fails if there is no parent window.\n */\nfunction Component(_ref) {\n var {\n children\n } = _ref;\n return /*#__PURE__*/React.createElement(AuthPluginBase, {\n getLoginOptions: getLoginOptions\n }, /*#__PURE__*/React.createElement(UserPermissionsOverrideContext.Provider, {\n value: permissionsOverrides\n }, children));\n}\nvar AuthPluginParent = {\n Component,\n isAvailable: () => getWindowParent() != null && getWindowAuthProvider() === 'parent'\n};\nexport default AuthPluginParent;\n//# sourceMappingURL=AuthPluginParent.js.map","import { LoadingSpinner } from '@deephaven/components';\nimport classNames from 'classnames';\nimport React from 'react';\nimport \"./LoginForm.css\";\nexport function LoginForm(_ref) {\n var {\n children,\n errorMessage,\n isLoggingIn = false,\n onSubmit: _onSubmit\n } = _ref;\n return /*#__PURE__*/React.createElement(\"form\", {\n className: \"login-form\",\n onSubmit: event => {\n event.preventDefault();\n event.stopPropagation();\n _onSubmit === null || _onSubmit === void 0 ? void 0 : _onSubmit(event);\n }\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"flex-spacer\"\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: \"flex-wrapper\"\n }, /*#__PURE__*/React.createElement(\"fieldset\", {\n disabled: isLoggingIn,\n className: \"container-fluid\"\n }, children), /*#__PURE__*/React.createElement(\"div\", {\n className: \"form-group d-flex justify-content-end align-items-center mb-0\"\n }, /*#__PURE__*/React.createElement(\"button\", {\n type: \"submit\",\n className: classNames('btn btn-primary', {\n 'btn-spinner': isLoggingIn\n }, {\n 'btn-cancelable': isLoggingIn\n }),\n \"data-testid\": \"btn-login\"\n }, isLoggingIn && /*#__PURE__*/React.createElement(\"span\", null, /*#__PURE__*/React.createElement(LoadingSpinner, null), /*#__PURE__*/React.createElement(\"span\", {\n className: \"btn-normal-content\"\n }, \"Logging in\"), /*#__PURE__*/React.createElement(\"span\", {\n className: \"btn-hover-content\"\n }, \"Cancel\")), !isLoggingIn && 'Login'))), /*#__PURE__*/React.createElement(\"div\", {\n className: \"flex-spacer\"\n }, errorMessage != null && /*#__PURE__*/React.createElement(\"p\", {\n className: \"error-message mb-0\",\n role: \"alert\"\n }, \"\".concat(errorMessage))));\n}\nexport default LoginForm;\n//# sourceMappingURL=LoginForm.js.map","import React from 'react';\nimport { RandomAreaPlotAnimation } from '@deephaven/components';\nimport \"./Login.css\";\nexport function Login(_ref) {\n var {\n children,\n logoPath = './logo.png'\n } = _ref;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"login-container\"\n }, /*#__PURE__*/React.createElement(RandomAreaPlotAnimation, null), /*#__PURE__*/React.createElement(\"div\", {\n className: \"login-box\"\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"logo\"\n }, /*#__PURE__*/React.createElement(\"img\", {\n src: logoPath,\n alt: \"Deephaven Data Labs\"\n })), children, /*#__PURE__*/React.createElement(\"p\", {\n className: \"footer\"\n }, \"\\xA9 2016-\", new Date().getFullYear(), \" Deephaven Data Labs LLC. Patent Pending.\")));\n}\nexport default Login;\n//# sourceMappingURL=Login.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); }); }; }\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport { LoadingOverlay, ThemeExport } from '@deephaven/components';\nimport { useClient } from '@deephaven/jsapi-bootstrap';\nimport { useBroadcastLoginListener } from '@deephaven/jsapi-components';\nimport Log from '@deephaven/log';\nimport { getErrorMessage } from '@deephaven/utils';\nimport Cookies from 'js-cookie';\nimport LoginForm from \"./LoginForm.js\";\nimport Login from \"./Login.js\";\nimport AuthenticationError from \"./AuthenticationError.js\";\nvar AUTH_TYPE = 'io.deephaven.authentication.psk.PskAuthenticationHandler';\nvar PSK_QUERY_PARAM_KEY = 'psk';\nvar PSK_TOKEN_KEY = 'io.deephaven.web.client.auth.psk.token';\nvar log = Log.module('AuthPluginPsk');\nfunction getWindowToken() {\n return new URLSearchParams(window.location.search).get(PSK_QUERY_PARAM_KEY);\n}\nfunction clearWindowToken() {\n log.debug2('clearWindowToken');\n var url = new URL(window.location.href);\n url.searchParams.delete(PSK_QUERY_PARAM_KEY);\n window.history.replaceState(null, '', url.href);\n}\nfunction readCookieToken() {\n var _Cookies$get;\n return (_Cookies$get = Cookies.get(PSK_TOKEN_KEY)) !== null && _Cookies$get !== void 0 ? _Cookies$get : null;\n}\nfunction storeCookieToken(token) {\n log.debug2('Storing token in cookie', token);\n if (token != null) {\n Cookies.set(PSK_TOKEN_KEY, token, {\n secure: true,\n sameSite: 'strict'\n });\n } else {\n Cookies.remove(PSK_TOKEN_KEY);\n }\n}\n/**\n * AuthPlugin that tries to login using a pre-shared key.\n * Add the `psk=<token>` parameter to your URL string to set the token.\n */\nfunction Component(_ref) {\n var {\n children,\n logoPath\n } = _ref;\n var client = useClient();\n var inputField = useRef(null);\n var loginPromise = useRef(null);\n var [error, setError] = useState();\n var [isInputRequired, setIsInputRequired] = useState(false);\n var [isLoggedIn, setIsLoggedIn] = useState(false);\n var [isLoggingIn, setIsLoggingIn] = useState(false);\n var [token, setToken] = useState('');\n var login = useCallback(\n /*#__PURE__*/\n // eslint-disable-next-line @typescript-eslint/no-inferrable-types\n function () {\n var _ref2 = _asyncToGenerator(function* (loginToken) {\n var showError = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n log.info('Logging in...');\n setIsLoggingIn(true);\n var newLoginPromise = null;\n try {\n newLoginPromise = client.login({\n type: AUTH_TYPE,\n token: loginToken\n });\n loginPromise.current = newLoginPromise;\n yield newLoginPromise;\n log.info('Logged in successfully');\n if (loginPromise.current !== newLoginPromise) {\n return;\n }\n storeCookieToken(loginToken);\n setIsLoggedIn(true);\n } catch (e) {\n if (loginPromise.current !== newLoginPromise) {\n return;\n }\n setIsInputRequired(true);\n if (showError) {\n var _getErrorMessage;\n log.error('Unable to login', e);\n var message = (_getErrorMessage = getErrorMessage(e)) !== null && _getErrorMessage !== void 0 ? _getErrorMessage : 'Unable to login: Verify credentials.';\n setError(new AuthenticationError(message));\n }\n }\n setIsLoggingIn(false);\n });\n return function (_x) {\n return _ref2.apply(this, arguments);\n };\n }(), [client]);\n var cancelLogin = useCallback(() => {\n loginPromise.current = null;\n setIsLoggingIn(false);\n }, []);\n var onLogin = useCallback( /*#__PURE__*/_asyncToGenerator(function* () {\n log.debug('onLogin');\n\n // User logged in successfully in another tab, we should be able to read the token from the cookie and login\n var newToken = readCookieToken();\n if (isLoggedIn || isLoggingIn || newToken == null) {\n return;\n }\n login(newToken, false);\n }), [isLoggedIn, isLoggingIn, login]);\n var onLogout = useCallback(() => {\n storeCookieToken(null);\n }, []);\n useBroadcastLoginListener(onLogin, onLogout);\n useEffect(() => {\n var isCanceled = false;\n function initialLogin() {\n return _initialLogin.apply(this, arguments);\n }\n function _initialLogin() {\n _initialLogin = _asyncToGenerator(function* () {\n var _getWindowToken;\n var initialToken = (_getWindowToken = getWindowToken()) !== null && _getWindowToken !== void 0 ? _getWindowToken : readCookieToken();\n clearWindowToken();\n if (initialToken == null) {\n setIsInputRequired(true);\n return;\n }\n setIsLoggingIn(true);\n try {\n yield client.login({\n type: AUTH_TYPE,\n token: initialToken\n });\n if (!isCanceled) {\n storeCookieToken(initialToken);\n setIsLoggedIn(true);\n setIsLoggingIn(false);\n }\n } catch (e) {\n if (!isCanceled) {\n setIsInputRequired(true);\n setIsLoggingIn(false);\n }\n }\n });\n return _initialLogin.apply(this, arguments);\n }\n initialLogin();\n return () => {\n isCanceled = true;\n };\n }, [client]);\n var handleSubmit = useCallback(() => {\n if (!isLoggingIn) {\n login(token);\n } else {\n cancelLogin();\n }\n }, [cancelLogin, isLoggingIn, login, token]);\n useEffect(function autoFocusInput() {\n var _inputField$current;\n (_inputField$current = inputField.current) === null || _inputField$current === void 0 ? void 0 : _inputField$current.focus();\n }, [inputField, isInputRequired]);\n return /*#__PURE__*/React.createElement(React.Fragment, null, isLoggedIn && children, isInputRequired && /*#__PURE__*/React.createElement(CSSTransition, {\n in: !isLoggedIn,\n timeout: ThemeExport.transitionMs,\n classNames: \"fade\",\n mountOnEnter: true,\n unmountOnExit: true\n }, /*#__PURE__*/React.createElement(Login, {\n logoPath: logoPath\n }, /*#__PURE__*/React.createElement(LoginForm, {\n errorMessage: getErrorMessage(error),\n isLoggingIn: isLoggingIn,\n onSubmit: handleSubmit\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"form-group\"\n }, /*#__PURE__*/React.createElement(\"label\", {\n htmlFor: \"auth-psk-token-input\"\n }, \"Token\"), /*#__PURE__*/React.createElement(\"input\", {\n id: \"auth-psk-token-input\",\n name: \"token\",\n className: \"input-token form-control\",\n type: \"text\",\n autoComplete: \"username\",\n autoCapitalize: \"none\",\n autoCorrect: \"off\",\n spellCheck: \"false\",\n ref: inputField,\n value: token,\n onChange: event => {\n setError(undefined);\n setToken(event.target.value);\n }\n }))))), /*#__PURE__*/React.createElement(LoadingOverlay, {\n \"data-testid\": \"auth-psk-loading\",\n isLoaded: isLoggedIn || isInputRequired,\n isLoading: !isLoggedIn && !isInputRequired\n }));\n}\nvar AuthPluginPsk = {\n Component,\n isAvailable: authHandlers => authHandlers.includes(AUTH_TYPE)\n};\nexport default AuthPluginPsk;\n//# sourceMappingURL=AuthPluginPsk.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 Log from '@deephaven/log';\nvar log = Log.module('UserUtils');\n\n/**\n * Retrieve a value from the AppInit config\n * @param serverConfig Server config map\n * @param key The AppInit key to retrieve\n * @returns The value for the AppInit key\n */\nexport function getAppInitValue(serverConfig, key) {\n return serverConfig.get(\"internal.webClient.appInit.\".concat(key));\n}\n\n/**\n * Retrieve a user object provided the server config and overrides\n * @param serverConfig Server config map\n * @param overrides Override values for the user\n * @param permissionsOverrides Override specific permissions for the user\n * @returns The user object\n */\nexport function getUserFromConfig(serverConfig) {\n var _getValue, _getValue2, _getValue$split, _getValue3;\n var overrides = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var permissionsOverrides = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n function getValue(key) {\n return getAppInitValue(serverConfig, key);\n }\n function getBooleanValue(key, defaultValue) {\n var value = getValue(key);\n if (value === 'true') {\n return true;\n }\n if (value === 'false') {\n return false;\n }\n if (value !== undefined) {\n log.warn(\"Unexpected value for \".concat(key, \": \").concat(value));\n }\n return defaultValue;\n }\n var name = (_getValue = getValue('name')) !== null && _getValue !== void 0 ? _getValue : '';\n var operateAs = (_getValue2 = getValue('operateAs')) !== null && _getValue2 !== void 0 ? _getValue2 : name;\n var groups = (_getValue$split = (_getValue3 = getValue('groups')) === null || _getValue3 === void 0 ? void 0 : _getValue3.split(',')) !== null && _getValue$split !== void 0 ? _getValue$split : [];\n var canCopy = getBooleanValue('canCopy', true);\n var canDownloadCsv = getBooleanValue('canDownloadCsv', true);\n var canUsePanels = getBooleanValue('canUsePanels', true);\n var canLogout = getBooleanValue('canLogout', true);\n return _objectSpread(_objectSpread({\n name,\n operateAs,\n groups\n }, overrides), {}, {\n permissions: _objectSpread({\n canUsePanels,\n canCopy,\n canDownloadCsv,\n canLogout\n }, permissionsOverrides)\n });\n}\nexport default {\n getAppInitValue,\n getUser: getUserFromConfig\n};\n//# sourceMappingURL=UserUtils.js.map","/* eslint-disable global-require */\n/**\n * remote-component.config.js\n *\n * Dependencies for Remote Components\n */\nimport react from 'react';\nimport * as redux from 'redux';\nimport * as reactRedux from 'react-redux';\nimport ReactDOM from 'react-dom';\nimport * as DeephavenAuthPlugins from '@deephaven/auth-plugins';\nimport * as DeephavenComponents from '@deephaven/components';\nimport * as DeephavenJsapiBootstrap from '@deephaven/jsapi-bootstrap';\nimport * as DeephavenJsapiComponents from '@deephaven/jsapi-components';\nimport * as DeephavenJsapiUtils from '@deephaven/jsapi-utils';\nimport * as DeephavenLog from '@deephaven/log';\nimport * as DeephavenReactHooks from '@deephaven/react-hooks';\n\n// eslint-disable-next-line import/prefer-default-export\nexport var resolve = {\n react,\n 'react-dom': ReactDOM,\n redux,\n 'react-redux': reactRedux,\n '@deephaven/auth-plugins': DeephavenAuthPlugins,\n '@deephaven/components': DeephavenComponents,\n '@deephaven/jsapi-bootstrap': DeephavenJsapiBootstrap,\n '@deephaven/jsapi-components': DeephavenJsapiComponents,\n '@deephaven/jsapi-utils': DeephavenJsapiUtils,\n '@deephaven/log': DeephavenLog,\n '@deephaven/react-hooks': DeephavenReactHooks\n};\n//# sourceMappingURL=remote-component.config.js.map","import { createRemoteComponent, createRequires } from '@paciolan/remote-component';\nimport { resolve } from \"./remote-component.config.js\";\nvar requires = createRequires(() => resolve);\nexport var RemoteComponent = createRemoteComponent({\n requires\n});\nexport default RemoteComponent;\n//# sourceMappingURL=RemoteComponent.js.map","import createLoadRemoteModule, { createRequires } from '@paciolan/remote-module-loader';\nimport { resolve } from \"./remote-component.config.js\";\nvar requires = createRequires(resolve);\nexport var loadRemoteModule = createLoadRemoteModule({\n requires\n});\nexport default loadRemoteModule;\n//# sourceMappingURL=loadRemoteModule.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 _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React from 'react';\nimport { isAuthPlugin } from '@deephaven/auth-plugins';\nimport Log from '@deephaven/log';\nimport RemoteComponent from \"./RemoteComponent.js\";\nimport loadRemoteModule from \"./loadRemoteModule.js\";\nvar log = Log.module('@deephaven/app-utils.PluginUtils');\n\n// A PluginModule. This interface should have new fields added to it from different levels of plugins.\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\n\n/**\n * Load a component plugin from the server.\n * @param baseURL Base URL of the plugin server\n * @param pluginName Name of the component plugin to load\n * @returns A lazily loaded JSX.Element from the plugin\n */\nexport function loadComponentPlugin(baseURL, pluginName) {\n var pluginUrl = new URL(\"\".concat(pluginName, \".js\"), baseURL);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var Plugin = /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/React.createElement(RemoteComponent, {\n url: pluginUrl.href\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ,\n render: _ref => {\n var {\n err,\n Component\n } = _ref;\n if (err != null && err !== '') {\n var errorMessage = \"Error loading plugin \".concat(pluginName, \" from \").concat(pluginUrl, \" due to \").concat(err);\n log.error(errorMessage);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"error-message\"\n }, \"\".concat(errorMessage));\n }\n // eslint-disable-next-line react/jsx-props-no-spreading\n return /*#__PURE__*/React.createElement(Component, _extends({\n ref: ref\n }, props));\n }\n }));\n Plugin.pluginName = pluginName;\n Plugin.displayName = 'Plugin';\n return Plugin;\n}\n\n/**\n * Imports a commonjs plugin module from the provided URL\n * @param pluginUrl The URL of the plugin to load\n * @returns The loaded module\n */\nexport function loadModulePlugin(_x) {\n return _loadModulePlugin.apply(this, arguments);\n}\n\n/**\n * Loads a JSON file and returns the JSON object\n * @param jsonUrl The URL of the JSON file to load\n * @returns The JSON object of the manifest file\n */\nfunction _loadModulePlugin() {\n _loadModulePlugin = _asyncToGenerator(function* (pluginUrl) {\n var myModule = yield loadRemoteModule(pluginUrl);\n return myModule;\n });\n return _loadModulePlugin.apply(this, arguments);\n}\nexport function loadJson(_x2) {\n return _loadJson.apply(this, arguments);\n}\n\n/**\n * Load all plugin modules available.\n * @param modulePluginsUrl The base URL of the module plugins to load\n * @returns A map from the name of the plugin to the plugin module that was loaded\n */\nfunction _loadJson() {\n _loadJson = _asyncToGenerator(function* (jsonUrl) {\n var res = yield fetch(jsonUrl);\n if (!res.ok) {\n throw new Error(res.statusText);\n }\n try {\n return yield res.json();\n } catch (_unused) {\n throw new Error('Could not be parsed as JSON');\n }\n });\n return _loadJson.apply(this, arguments);\n}\nexport function loadModulePlugins(_x3) {\n return _loadModulePlugins.apply(this, arguments);\n}\nfunction _loadModulePlugins() {\n _loadModulePlugins = _asyncToGenerator(function* (modulePluginsUrl) {\n log.debug('Loading plugins...');\n try {\n var manifest = yield loadJson(\"\".concat(modulePluginsUrl, \"/manifest.json\"));\n if (!Array.isArray(manifest.plugins)) {\n throw new Error('Plugin manifest JSON does not contain plugins array');\n }\n log.debug('Plugin manifest loaded:', manifest);\n var pluginPromises = [];\n for (var i = 0; i < manifest.plugins.length; i += 1) {\n var {\n name,\n main\n } = manifest.plugins[i];\n var pluginMainUrl = \"\".concat(modulePluginsUrl, \"/\").concat(name, \"/\").concat(main);\n pluginPromises.push(loadModulePlugin(pluginMainUrl));\n }\n var pluginModules = yield Promise.allSettled(pluginPromises);\n var pluginMap = new Map();\n for (var _i = 0; _i < pluginModules.length; _i += 1) {\n var module = pluginModules[_i];\n var {\n name: _name\n } = manifest.plugins[_i];\n if (module.status === 'fulfilled') {\n pluginMap.set(_name, module.value);\n } else {\n log.error(\"Unable to load plugin \".concat(_name), module.reason);\n }\n }\n log.info('Plugins loaded:', pluginMap);\n return pluginMap;\n } catch (e) {\n log.error('Unable to load plugins:', e);\n return new Map();\n }\n });\n return _loadModulePlugins.apply(this, arguments);\n}\nexport function getAuthHandlers(authConfigValues) {\n var _authConfigValues$get, _authConfigValues$get2;\n return (_authConfigValues$get = (_authConfigValues$get2 = authConfigValues.get('AuthHandlers')) === null || _authConfigValues$get2 === void 0 ? void 0 : _authConfigValues$get2.split(',')) !== null && _authConfigValues$get !== void 0 ? _authConfigValues$get : [];\n}\n\n/**\n * Get the auth plugin component from the plugin map and current configuration\n * Throws if no auth plugin is available\n *\n * @param pluginMap Map of plugins loaded from the server\n * @param authConfigValues Auth config values from the server\n * @param corePlugins Map of core auth plugins to include in the list. They are added after the loaded plugins\n * @returns The auth plugin component to render\n */\nexport function getAuthPluginComponent(pluginMap, authConfigValues, corePlugins) {\n var authHandlers = getAuthHandlers(authConfigValues);\n // Filter out all the plugins that are auth plugins, and then map them to [pluginName, AuthPlugin] pairs\n // Uses some pretty disgusting casting, because TypeScript wants to treat it as an (string | AuthPlugin)[] array instead\n var authPlugins = [...pluginMap.entries()].filter(_ref2 => {\n var [, plugin] = _ref2;\n return isAuthPlugin(plugin.AuthPlugin);\n }).map(_ref3 => {\n var [name, plugin] = _ref3;\n return [name, plugin.AuthPlugin];\n });\n\n // Add all the core plugins in priority\n authPlugins.push(...(corePlugins !== null && corePlugins !== void 0 ? corePlugins : []));\n\n // Filter the available auth plugins\n\n var availableAuthPlugins = authPlugins.filter(_ref4 => {\n var [name, authPlugin] = _ref4;\n return authPlugin.isAvailable(authHandlers, authConfigValues);\n });\n if (availableAuthPlugins.length === 0) {\n throw new Error(\"No login plugins found, please register a login plugin for auth handlers: \".concat(authHandlers));\n } else if (availableAuthPlugins.length > 1) {\n log.warn('More than one login plugin available, will use the first one: ', availableAuthPlugins.map(_ref5 => {\n var [name] = _ref5;\n return name;\n }).join(', '));\n }\n var [loginPluginName, NewLoginPlugin] = availableAuthPlugins[0];\n log.info('Using LoginPlugin', loginPluginName);\n return NewLoginPlugin.Component;\n}\n//# sourceMappingURL=PluginUtils.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); }); }; }\nimport React, { createContext, useEffect, useState } from 'react';\nimport { loadModulePlugins } from \"../plugins/index.js\";\nexport var PluginsContext = /*#__PURE__*/createContext(null);\n/**\n * PluginsBootstrap component. Handles loading the plugins.\n */\nexport function PluginsBootstrap(_ref) {\n var {\n pluginsUrl,\n children\n } = _ref;\n var [plugins, setPlugins] = useState(null);\n useEffect(function initPlugins() {\n var isCanceled = false;\n function loadPlugins() {\n return _loadPlugins.apply(this, arguments);\n }\n function _loadPlugins() {\n _loadPlugins = _asyncToGenerator(function* () {\n var pluginModules = yield loadModulePlugins(pluginsUrl);\n if (!isCanceled) {\n setPlugins(pluginModules);\n }\n });\n return _loadPlugins.apply(this, arguments);\n }\n loadPlugins();\n return () => {\n isCanceled = true;\n };\n }, [pluginsUrl]);\n return /*#__PURE__*/React.createElement(PluginsContext.Provider, {\n value: plugins\n }, children);\n}\nexport default PluginsBootstrap;\n//# sourceMappingURL=PluginsBootstrap.js.map","import { useBroadcastChannel } from '@deephaven/jsapi-components';\nimport { BROADCAST_LOGIN_MESSAGE, makeMessage } from '@deephaven/jsapi-utils';\nimport { useEffect } from 'react';\n\n/**\n * Component that broadcasts a message when mounted. Should be mounted after the user has logged in.\n */\nexport function LoginNotifier() {\n var channel = useBroadcastChannel();\n useEffect(function notifyLogin() {\n channel.postMessage(makeMessage(BROADCAST_LOGIN_MESSAGE));\n }, [channel]);\n return null;\n}\nexport default LoginNotifier;\n//# sourceMappingURL=LoginNotifier.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); }); }; }\nimport React, { useContext, useEffect, useMemo, useState } from 'react';\nimport { AuthPluginAnonymous, AuthPluginParent, AuthPluginPsk } from '@deephaven/auth-plugins';\nimport { LoadingOverlay } from '@deephaven/components';\nimport { useClient } from '@deephaven/jsapi-bootstrap';\nimport { getErrorMessage } from '@deephaven/utils';\nimport { PluginsContext } from \"./PluginsBootstrap.js\";\nimport { getAuthPluginComponent } from \"../plugins/index.js\";\nimport LoginNotifier from \"./LoginNotifier.js\";\n/** Core auth plugins that are always loaded */\nvar CORE_AUTH_PLUGINS = new Map([['@deephaven/auth-plugins.AuthPluginParent', AuthPluginParent], ['@deephaven/auth-plugins.AuthPluginPsk', AuthPluginPsk], ['@deephaven/auth-plugins.AuthPluginAnonymous', AuthPluginAnonymous]]);\n\n/**\n * AuthBootstrap component. Handles displaying the auth plugin and authenticating.\n */\nexport function AuthBootstrap(_ref) {\n var {\n children\n } = _ref;\n var client = useClient();\n // `useContext` instead of `usePlugins` so that we don't have to wait for the plugins to load\n // We want to load the auth config values in parallel with the plugins\n var plugins = useContext(PluginsContext);\n var [authConfig, setAuthConfig] = useState();\n var [error, setError] = useState();\n useEffect(function initAuthConfigValues() {\n var isCanceled = false;\n function loadAuthConfigValues() {\n return _loadAuthConfigValues.apply(this, arguments);\n }\n function _loadAuthConfigValues() {\n _loadAuthConfigValues = _asyncToGenerator(function* () {\n try {\n var newAuthConfigValues = yield client.getAuthConfigValues();\n if (!isCanceled) {\n setAuthConfig(new Map(newAuthConfigValues));\n }\n } catch (e) {\n if (!isCanceled) {\n setError(e);\n }\n }\n });\n return _loadAuthConfigValues.apply(this, arguments);\n }\n loadAuthConfigValues();\n return () => {\n isCanceled = true;\n };\n }, [client]);\n var AuthComponent = useMemo(() => {\n if (plugins == null || authConfig == null) {\n return undefined;\n }\n try {\n return getAuthPluginComponent(plugins, authConfig, CORE_AUTH_PLUGINS);\n } catch (e) {\n setError(e);\n }\n }, [authConfig, plugins]);\n var isLoading = AuthComponent == null || authConfig == null;\n if (isLoading || error != null) {\n return /*#__PURE__*/React.createElement(LoadingOverlay, {\n isLoading: isLoading && error == null,\n errorMessage: getErrorMessage(error)\n });\n }\n return /*#__PURE__*/React.createElement(AuthComponent, {\n authConfigValues: authConfig\n }, /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(LoginNotifier, null), children));\n}\nexport default AuthBootstrap;\n//# sourceMappingURL=AuthBootstrap.js.map","/**\n * Get the base URL of the API\n * @param apiUrl API URL\n * @returns URL for the base of the API\n */\nexport function getBaseUrl(apiUrl) {\n return new URL(apiUrl, \"\".concat(window.location));\n}\n\n/**\n * Get the Envoy prefix header value\n * @returns Envoy prefix header value\n */\nexport function getEnvoyPrefix() {\n var searchParams = new URLSearchParams(window.location.search);\n return searchParams.get('envoyPrefix');\n}\nexport function getConnectOptions() {\n var envoyPrefix = getEnvoyPrefix();\n return envoyPrefix != null ? {\n headers: {\n 'envoy-prefix': envoyPrefix\n }\n } : {\n headers: {}\n };\n}\n//# sourceMappingURL=ConnectUtils.js.map","import React, { useContext } from 'react';\nimport { LoadingOverlay } from '@deephaven/components';\nimport { FontsLoadedContext } from \"./FontBootstrap.js\";\nexport function FontsLoaded(_ref) {\n var {\n children\n } = _ref;\n var isFontsLoaded = useContext(FontsLoadedContext);\n if (!isFontsLoaded) {\n return /*#__PURE__*/React.createElement(LoadingOverlay, {\n \"data-testid\": \"fonts-loaded-loading\"\n });\n }\n\n // eslint-disable-next-line react/jsx-no-useless-fragment\n return /*#__PURE__*/React.createElement(React.Fragment, null, children);\n}\nexport default FontsLoaded;\n//# sourceMappingURL=FontsLoaded.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); }); }; }\nimport React, { createContext, useEffect, useState } from 'react';\nimport { LoadingOverlay } from '@deephaven/components';\nimport { useClient } from '@deephaven/jsapi-bootstrap';\nimport { getErrorMessage } from '@deephaven/utils';\nexport var ServerConfigContext = /*#__PURE__*/createContext(null);\n/**\n * ServerConfigBootstrap component. Handles loading the server config.\n */\nexport function ServerConfigBootstrap(_ref) {\n var {\n children\n } = _ref;\n var client = useClient();\n var [serverConfig, setServerConfig] = useState();\n var [error, setError] = useState();\n useEffect(function initServerConfigValues() {\n var isCanceled = false;\n function loadServerConfigValues() {\n return _loadServerConfigValues.apply(this, arguments);\n }\n function _loadServerConfigValues() {\n _loadServerConfigValues = _asyncToGenerator(function* () {\n try {\n var newServerConfigValues = yield client.getServerConfigValues();\n if (!isCanceled) {\n setServerConfig(new Map(newServerConfigValues));\n }\n } catch (e) {\n if (!isCanceled) {\n setError(e);\n }\n }\n });\n return _loadServerConfigValues.apply(this, arguments);\n }\n loadServerConfigValues();\n return () => {\n isCanceled = true;\n };\n }, [client]);\n var isLoading = serverConfig == null;\n if (isLoading || error != null) {\n return /*#__PURE__*/React.createElement(LoadingOverlay, {\n isLoading: isLoading && error == null,\n errorMessage: getErrorMessage(error)\n });\n }\n return /*#__PURE__*/React.createElement(ServerConfigContext.Provider, {\n value: serverConfig\n }, children);\n}\nexport default ServerConfigBootstrap;\n//# sourceMappingURL=ServerConfigBootstrap.js.map","import { useContextOrThrow } from '@deephaven/react-hooks';\nimport { ServerConfigContext } from \"./ServerConfigBootstrap.js\";\nexport function useServerConfig() {\n return useContextOrThrow(ServerConfigContext, 'No server config available in useServerConfig. Was code wrapped in ServerConfigBootstrap or ServerConfigContext.Provider?');\n}\nexport default useServerConfig;\n//# sourceMappingURL=useServerConfig.js.map","import React, { useContext } from 'react';\nimport { UserContext, UserOverrideContext, UserPermissionsOverrideContext, getUserFromConfig } from '@deephaven/auth-plugins';\nimport useServerConfig from \"./useServerConfig.js\";\n/**\n * UserBootstrap component. Derives the UserContext from the ServerConfigContext, UserOverrideContext, and UserPermissionsOverrideContext.\n */\nexport function UserBootstrap(_ref) {\n var {\n children\n } = _ref;\n var serverConfig = useServerConfig();\n var overrides = useContext(UserOverrideContext);\n var permissionsOverrides = useContext(UserPermissionsOverrideContext);\n var user = getUserFromConfig(serverConfig, overrides, permissionsOverrides);\n return /*#__PURE__*/React.createElement(UserContext.Provider, {\n value: user\n }, children);\n}\nexport default UserBootstrap;\n//# sourceMappingURL=UserBootstrap.js.map","import React, { useCallback, useMemo, useState } from 'react';\nimport '@deephaven/components/scss/BaseStyleSheet.scss';\nimport { ClientBootstrap } from '@deephaven/jsapi-bootstrap';\nimport { RefreshTokenBootstrap, useBroadcastLoginListener } from '@deephaven/jsapi-components';\nimport FontBootstrap from \"./FontBootstrap.js\";\nimport PluginsBootstrap from \"./PluginsBootstrap.js\";\nimport AuthBootstrap from \"./AuthBootstrap.js\";\nimport ConnectionBootstrap from \"./ConnectionBootstrap.js\";\nimport { getConnectOptions } from \"../utils/index.js\";\nimport FontsLoaded from \"./FontsLoaded.js\";\nimport UserBootstrap from \"./UserBootstrap.js\";\nimport ServerConfigBootstrap from \"./ServerConfigBootstrap.js\";\n/**\n * AppBootstrap component. Handles loading the fonts, client, and authentication.\n * Will display the children when everything is loaded and authenticated.\n */\nexport function AppBootstrap(_ref) {\n var {\n fontClassNames,\n pluginsUrl,\n serverUrl,\n children\n } = _ref;\n var clientOptions = useMemo(() => getConnectOptions(), []);\n\n // On logout, we reset the client and have user login again\n var [logoutCount, setLogoutCount] = useState(0);\n var onLogin = useCallback(() => undefined, []);\n var onLogout = useCallback(() => {\n setLogoutCount(value => value + 1);\n }, []);\n useBroadcastLoginListener(onLogin, onLogout);\n return /*#__PURE__*/React.createElement(FontBootstrap, {\n fontClassNames: fontClassNames\n }, /*#__PURE__*/React.createElement(PluginsBootstrap, {\n pluginsUrl: pluginsUrl\n }, /*#__PURE__*/React.createElement(ClientBootstrap, {\n serverUrl: serverUrl,\n options: clientOptions,\n key: logoutCount\n }, /*#__PURE__*/React.createElement(RefreshTokenBootstrap, null, /*#__PURE__*/React.createElement(AuthBootstrap, null, /*#__PURE__*/React.createElement(ServerConfigBootstrap, null, /*#__PURE__*/React.createElement(UserBootstrap, null, /*#__PURE__*/React.createElement(ConnectionBootstrap, null, /*#__PURE__*/React.createElement(FontsLoaded, null, children)))))))));\n}\nexport default AppBootstrap;\n//# sourceMappingURL=AppBootstrap.js.map","import { useContextOrThrow } from '@deephaven/react-hooks';\nimport { PluginsContext } from \"./PluginsBootstrap.js\";\nexport function usePlugins() {\n return useContextOrThrow(PluginsContext, 'No Plugins available in usePlugins. Was code wrapped in PluginsBootstrap or PluginsContext.Provider?');\n}\nexport default usePlugins;\n//# sourceMappingURL=usePlugins.js.map"],"names":["_defineProperty","obj","key","value","_toPropertyKey","arg","_toPrimitive","input","hint","prim","res","LOG_PROXY_TYPE","makeEvent","type","detail","LogProxy","event","messages","EventTarget","_this","_len","args","_key","_len2","_key2","_len3","_key3","_len4","_key4","Log","listener","LogProxy$1","LogHistory","formatted","m","jsonString","stack","stringStack","line","proxy","_ref","logItem","startIdx","historyString","item","LogHistory$1","ownKeys","object","enumerableOnly","keys","symbols","sym","_objectSpread","target","i","source","DEBOUNCE_DELAY","MENU_NAVIGATION_DIRECTION","AutoCompleteInput","Component","props","memoize","options","option","popperOptions","debounce","React","title","result","menuIsOpen","isValid","onChange","filter","_this$popper$current","filteredOptions","perfectMatch","_this$input$current","keyboardOptionIndex","direction","newKeyboardOptionIndex","onEnter","_this$input$current2","_this$input$current3","_this$popper$current2","_this$popper$current3","focusInput","_this$input$current4","index","_this$menuContainer$c","inputWidth","classNames","noMatchText","inputPlaceholder","disabled","className","defaultTitle","spellCheck","dataTestId","invalid","Popper","PropTypes","AutoCompleteInput$1","AutoResizeTextarea","propsValue","placeholder","delimiter","id","setValue","useState","isPastedChange","setIsPastedChange","element","useRef","useEffect","explode","string","implode","reCalculateLayout","resizedHeight","handleChange","newValue","handleFocus","handleMouseDown","handleBlur","handlePaste","ButtonGroup","children","style","getErrorMessage","error","errorObj","message","preventDefault","useFormWithDetachedSubmitButton","enableDefaultFormSubmitBehavior","formId","useMemo","shortid","submitButtonRef","useCallback","buttonEl","formProps","submitButtonProps","asyncGeneratorStep","gen","resolve","reject","_next","_throw","info","_asyncToGenerator","fn","self","err","usePromiseFactory","promiseFactory","autoLoad","data","setData","setError","isLoading","setIsLoading","loadPromise","resolved","useDebouncedValue","debounceMs","debouncedValue","setDebouncedValue","timeoutId","DebouncedModal","blockInteraction","isOpen","debouncedIsOpen","InfoModal","icon","subtitle","Modal","ModalBody","FontAwesomeIcon","ModalFooter","BasicModal","headerText","bodyText","onCancel","onConfirm","onDiscard","onModalDisable","cancelButtonText","confirmButtonText","discardButtonText","isConfirmDanger","confirmButton","disableModalCheckbox","onConfirmClicked","onOpened","_confirmButton$curren","modalBody","ModalHeader","Button","ref","onClick","Button$1","CardFlip","isFlipped","getComponent","front","transitionStart","transitionEnd","refObj","Collapse","elemParam","elem","scrollBarWidth","autoFocusOnShow","inTransition","CSSTransition","state","Collapse$1","log","TIME_PATTERN","EXAMPLES","TimeInput","allowValueWrapping","onFocus","onBlur","onSelect","TimeUtils","selection","_setSelection","inputRef","useImperativeHandle","_inputRef$current","newSelection","_inputRef$current2","getNextSegmentValue","range","delta","segmentValue","maxValue","newSegmentValue","getPreferredReplacementString","replaceValue","replaceIndex","newChar","selectionStart","selectionEnd","DEFAULT_GET_PREFERRED_REPLACEMENT_STRING","handleSelect","MaskedInput","TimeInput$1","CUSTOM_OPTION","CustomTimeSelect","valueToTime","customTime","_this$button$current","_this$button$current2","inputFocused","menuOptionsLength","optionIndex","timeToValue","update","_this$button$current3","activeOption","valueIndex","_this$menuContainer$c2","focusButton","_this$button$current4","_this$menuContainer$c3","customText","matchFound","optionArray","dhSort","DropdownMenu","vsCheck","time","CustomTimeSelect$1","DATE_PATTERN","DATE_FORMAT","DateInput","defaultValue","setSelection","DateInput$1","DebouncedSearchInput","PureComponent","prevProps","_this$searchInput$cur","matchCount","SearchInput","DebouncedSearchInput$1","EditableItemList","isInvalid","items","onAdd","onDelete","validate","inputError","setInputError","selectedRanges","setSelectedRanges","handleSelectionChange","ranges","handleDelete","RangeUtils","handleAdd","validationError","handleInputChange","inputValue","handleInputFocus","handleInputKeyDown","containerHeight","clamp","ItemList","vsAdd","vsTrash","HierarchicalCheckboxMenu","parent","valueMap","includesTrue","includesFalse","child","onUpdateValueMap","map","newChildren","parentSelected","newChildValue","_","currentChildren","_parentSelected","copy","Checkbox","_ref2","menuText","HierarchicalCheckboxMenu$1","VOLATILITY","LOW","HIGH","START_Y","FOREGROUND","ThemeExport","GRID_SIZE","GRID_COLOR","BACKGROUND","PATTERN","PX_PER_SECOND","RESIZE_DEBOUNCE","INTERACTION_TIMEOUT","RandomAreaPlotAnimation","canvas","container","shade","setShade","scale","ctx","pattern","width","height","rAF","lastTimestamp","setCanvasSize","_ctx","createPatternFill","canvasPattern","contextPattern","randomWalk","prev","rand","change","initData","startingData","y","setDataSize","drawAreaLine","path","context","drawGridLines","x","drawCanvas","timestamp","_lastTimestamp","_lastTimestamp2","_lastTimestamp3","assertNotNull","subPixelMotion","_lastTimestamp4","numberOfPoints","debouncedHandleResize","pauseAnimation","resetIdleTimeout","startAnimation","handleActivity","handleResize","_canvas$current","RandomAreaPlotAnimation$1","SocketedButton","isLinked","isLinkedSource","onMouseEnter","onMouseLeave","vsLink","dhExclamation","SocketedButton$1","global","light","dark","medium","large","theme","themeDHDefault","lightDH","darkDH","HANDLE_SIZE","StyleExports","POPOVER_WIDTH","SECONDS_IN_DAY","SNAP_NEAREST_MINUTES","TimeSlider","propStartTime","propEndTime","isStartModified","isEndModified","startTime","setStartTime","endTime","setEndTime","track","updateTime","newStartTime","newEndTime","start","end","handleStartTimeChange","handleEndTimeChange","PopOvers","TrackFills","Handle","onStartTimeChange","onEndTimeChange","swapTimes","firstTime","setFirstTime","secondTime","setSecondTime","firstTimeRef","secondTimeRef","firstTimeSelectionRef","secondTimeSelectionRef","_secondTimeRef$curren","_firstTimeRef$current","onFirstTimeChange","onSecondTimeChange","onFirstTimeSelect","onSecondTimeSelect","setTime","transform","ONE_HOUR","handleOffset","calculatePositionAsTime","clientX","trackRect","leftEdge","preciseTime","roundedTime","limitMax","handleMouseMove","handleMouseUp","_ref3","startDragListening","stopDragListening","ToastNotification","buttons","isShown","classNamesProp","onDismiss","hasButtons","vsClose","ValidateLabelInput","labelText","hintText","isModified","showValidationError","idProp","makeApiContextWrapper","dh","ApiContext","LOGIN_OPTIONS_REQUEST","SESSION_DETAILS_REQUEST","BROADCAST_CHANNEL_NAME","BROADCAST_LOGIN_MESSAGE","BROADCAST_LOGOUT_MESSAGE","isMessage","isBroadcastLoginMessage","isBroadcastLogoutMessage","isResponse","response","makeMessage","payload","makeResponse","messageId","getWindowParent","requestParentResponse","_x","_requestParentResponse","request","timeout","TimeoutError","NoConsolesError","isNoConsolesError","createConnection","websocketUrl","createSessionWrapper","_x2","_x3","_createSessionWrapper","connection","details","types","session","config","createCoreClient","isSessionDetails","requestParentSessionDetails","_requestParentSessionDetails","getSessionDetails","_getSessionDetails","searchParams","loadSessionWrapper","_x4","_x5","_x6","_loadSessionWrapper","sessionDetails","sessionWrapper","e","createKeyFromOffsetRow","row","offset","createOnTableUpdatedHandler","viewportData","deserializeRow","columns","rows","keyedItem","defaultRowDeserializer","col","generateEmptyKeyedItems","getItemsFromListData","listData","getSize","table","isClosed","padFirstAndLastRow","firstRow","viewportSize","padding","tableSize","lastRow","min","max","first","last","useTableListener","eventEmitter","eventName","callback","useTableListener$1","ColumnNameError","ColumnNameError$1","TableDisconnectError","TableDisconnectError$1","useTable","columnNames","useApi","setColumns","columnError","setColumnError","tableError","setTableError","handleUpdate","column","r","handleDisconnect","handleReconnect","useTable$1","useTableColumn","columnName","useTableColumn$1","SIZE_LIMIT","TableInput","_table$size","_error$message","settings","tablePromise","parentRef","formatter","columnFormats","FormatterUtils","dateTimeFormatterOptions","defaultDecimalFormatOptions","defaultIntegerFormatOptions","Formatter","searchValue","setSearchValue","setTable","listRef","itemCount","formatValue","updatedSelection","removedItems","v","isSelected","initTable","promise","PromiseUtils","cancelablePromise","handleSearchChange","_listRef$current","selectedValue","handleSelectAll","values","handleClearSelection","handleViewportChange","handleChildBlur","_parentRef$current","relatedTarget","isEmpty","SelectValueList","LoadingOverlay","useBroadcastChannel","onEvent","EMPTY_FUNCTION","name","channel","handleEvent","useBroadcastLoginListener","onLogin","onLogout","onMessage","REFRESH_TOKEN_KEY","RefreshTokenContext","createContext","readRefreshToken","cookieToken","Cookies","storeRefreshToken","token","expires","RefreshTokenBootstrap","api","client","useClient","setToken","cleanup","newToken","DEBOUNCE_VIEWPORT_SEARCH_MS","useDebouncedViewportSearch","tableUtils","TableUtils","applyFiltersAndRefresh","debouncedSearch","searchText","searchTextTrimmed","useTableSize","forceRerender","useInitializeViewportData","useListData","prevTable","usePrevious","size","currentSize","useSelectDistinctTable","selectDistinct","_table$selectDistinct","distinctTable","isError","useSetPaddedViewportCallback","viewportPadding","useTableClose","useTableUtils","useViewportData","setViewport","filters","FontsLoadedContext","FontBootstrap","fontClassNames","isLoaded","setIsLoaded","isAuthPlugin","plugin","authPlugin","AUTH_HANDLER_TYPE_ANONYMOUS","AUTH_HANDLER_TYPE_PSK","AuthenticationError","AuthenticationError$1","AuthPluginBase","getLoginOptions","isLoggedIn","setIsLoggedIn","isCanceled","verifyNotCanceled","CanceledPromiseError","login","_login","loginOptions","_getErrorMessage","permissionsOverrides","UserPermissionsOverrideContext","AuthPluginAnonymous","authHandlers","AuthPluginAnonymous$1","isLoginOptions","_getLoginOptions","getWindowAuthProvider","_URLSearchParams$get","AuthPluginParent","AuthPluginParent$1","LoginForm","errorMessage","isLoggingIn","_onSubmit","LoadingSpinner","Login","logoPath","AUTH_TYPE","PSK_QUERY_PARAM_KEY","PSK_TOKEN_KEY","getWindowToken","clearWindowToken","url","readCookieToken","_Cookies$get","storeCookieToken","inputField","loginPromise","isInputRequired","setIsInputRequired","setIsLoggingIn","loginToken","showError","newLoginPromise","cancelLogin","initialLogin","_initialLogin","_getWindowToken","initialToken","handleSubmit","_inputField$current","AuthPluginPsk","AuthPluginPsk$1","getAppInitValue","serverConfig","getUserFromConfig","_getValue","_getValue2","_getValue$split","_getValue3","overrides","getValue","getBooleanValue","operateAs","groups","canCopy","canDownloadCsv","canUsePanels","canLogout","react","ReactDOM","redux","reactRedux","DeephavenAuthPlugins","DeephavenComponents","DeephavenJsapiBootstrap","DeephavenJsapiComponents","DeephavenJsapiUtils","DeephavenLog","DeephavenReactHooks","requires","createRequires","RemoteComponent","createRemoteComponent","RemoteComponent$1","loadRemoteModule","createLoadRemoteModule","loadRemoteModule$1","_extends","loadComponentPlugin","baseURL","pluginName","pluginUrl","Plugin","loadModulePlugin","_loadModulePlugin","myModule","loadJson","_loadJson","jsonUrl","loadModulePlugins","_loadModulePlugins","modulePluginsUrl","manifest","pluginPromises","main","pluginMainUrl","pluginModules","pluginMap","_i","module","_name","getAuthHandlers","authConfigValues","_authConfigValues$get","_authConfigValues$get2","getAuthPluginComponent","corePlugins","authPlugins","availableAuthPlugins","_ref4","_ref5","loginPluginName","NewLoginPlugin","PluginsContext","PluginsBootstrap","pluginsUrl","plugins","setPlugins","loadPlugins","_loadPlugins","LoginNotifier","CORE_AUTH_PLUGINS","AuthBootstrap","useContext","authConfig","setAuthConfig","loadAuthConfigValues","_loadAuthConfigValues","newAuthConfigValues","AuthComponent","getBaseUrl","apiUrl","getEnvoyPrefix","getConnectOptions","envoyPrefix","FontsLoaded","isFontsLoaded","ServerConfigContext","ServerConfigBootstrap","setServerConfig","loadServerConfigValues","_loadServerConfigValues","newServerConfigValues","useServerConfig","useContextOrThrow","UserBootstrap","UserOverrideContext","user","UserContext","AppBootstrap","serverUrl","clientOptions","logoutCount","setLogoutCount","ClientBootstrap","ConnectionBootstrap","usePlugins"],"mappings":"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"}